[nco] 01/07: Imported Upstream version 4.3.9

Francesco Lovergine frankie at moszumanska.debian.org
Wed Mar 26 16:31:20 UTC 2014


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

frankie pushed a commit to branch master
in repository nco.

commit ebc0d12597c3a9d3882c6bd1c7ebde794bf003c9
Author: Francesco Paolo Lovergine <frankie at debian.org>
Date:   Mon Dec 16 14:13:21 2013 +0100

    Imported Upstream version 4.3.9
---
 INSTALL                            |     9 +-
 Makefile.am                        |    11 +-
 Makefile.in                        |   413 +-
 aclocal.m4                         |  9106 +-----------
 autobld/config.guess               |   207 +-
 autobld/config.sub                 |   161 +-
 autobld/depcomp                    |    74 +-
 autobld/install-sh                 |    29 +-
 autobld/ltmain.sh                  |    95 +-
 autobld/missing                    |   461 +-
 autobld/test-driver                |   127 +
 autobld/texinfo.tex                |  2457 ++--
 autobld/ylwrap                     |    34 +-
 bld/Makefile                       |   174 +-
 bld/nco.spec                       |    66 +-
 bld/nco_dst.pl                     |    32 +-
 bld/pvmgetarch                     |     6 +-
 bm/NCO_benchmarks.pm               |    14 +-
 bm/NCO_bm.pm                       |    30 +-
 bm/NCO_rgr.pm                      |  3640 ++++-
 bm/nco_bm.pl                       |    25 +-
 config.h.in                        |    39 +-
 configure                          |  1478 +-
 configure.in => configure.ac       |   246 +-
 configure.eg                       |    19 +-
 data/Makefile.am                   |    42 +-
 data/Makefile.in                   |   164 +-
 data/big.cdl                       |    16 +-
 data/buggy.cdl                     |   218 +
 data/cmip5.cdl                     |    38 +
 data/hdr_pad.sh                    |    78 +
 data/in.cdl                        |   308 +-
 data/in_1.cdl                      |    14 +
 data/in_2.cdl                      |    15 +
 data/in_4.cdl                      |   469 +-
 data/in_grp.cdl                    |   437 +-
 data/in_grp_1.cdl                  |    23 +
 data/in_grp_2.cdl                  |    31 +
 data/in_grp_3.cdl                  |   561 +
 data/mdl.cdl                       |    87 +
 data/mdl2.cdl                      |    70 +
 data/ncap2.in                      |     8 +-
 data/ncap2_tst.nco                 |     6 +-
 data/nco_gsl.cdl                   |    28 +
 data/nco_gsl.nco                   |    32 +
 data/netcdf4.nco                   |     5 +-
 data/obs.cdl                       |    12 +
 data/snc.cdl                       |   133 +
 data/snc_grp.cdl                   |   714 +
 data/snc_ncwa.cdl                  |  2062 +++
 data/snd.cdl                       |   137 +
 data/snd_grp.cdl                   |   722 +
 data/snd_ncwa.cdl                  |  2086 +++
 doc/ANNOUNCE                       |   296 +-
 doc/AUTHORS                        |     7 +
 doc/ChangeLog                      |  2995 +++-
 doc/MANIFEST                       |    38 +-
 doc/Makefile.in                    |   230 +-
 doc/README                         |     4 +-
 doc/TAG                            |     2 +-
 doc/TODO                           |   437 +-
 doc/VERSION                        |     2 +-
 doc/beta.txt                       |    14 +-
 doc/debian.txt                     |   185 +-
 doc/i18n.txt                       |     9 +-
 doc/index.shtml                    |   966 +-
 doc/logo_nco_stk.png               |   Bin 0 -> 133416 bytes
 doc/logo_qt.png                    |   Bin 0 -> 3654 bytes
 doc/logo_srl.svg                   |   371 +
 doc/logo_srl.xcf                   |   Bin 0 -> 1033586 bytes
 doc/logo_vs2010.png                |   Bin 0 -> 4046 bytes
 doc/man_end.txt                    |    10 +-
 doc/nco.dvi                        |   Bin 956980 -> 1248760 bytes
 doc/nco.html                       | 15813 --------------------
 doc/nco.info                       | 11448 ---------------
 doc/nco.pdf                        |   Bin 1293915 -> 0 bytes
 doc/nco.ps                         | 27449 -----------------------------------
 doc/nco.texi                       |  5498 +++++--
 doc/nco.txt                        | 10076 -------------
 doc/nco.xml                        |  7547 ----------
 doc/nco_news.shtml                 |     4 +-
 doc/nco_qt_msvc.shtml              |   129 +
 doc/nco_src_frg.txt                |     4 +-
 doc/opendap.sh                     |     8 +-
 doc/surfit_2013.txt                |    88 +
 doc/xmp/add_crd.sh                 |    36 +
 doc/xmp/ann_avg.sh                 |   154 +
 doc/xmp/ann_avg_grp.sh             |    68 +
 doc/xmp/bi_interp.nco              |    83 +
 doc/xmp/cmb_fl.sh                  |    88 +
 doc/xmp/cmb_fl_grp.sh              |   121 +
 doc/xmp/crd.nco                    |     6 +
 doc/xmp/fgr1.eps                   | 21700 +++++++++++++++++++++++++++
 doc/xmp/fgr1.png                   |   Bin 0 -> 24016 bytes
 doc/xmp/fgr1.txt                   |     1 +
 doc/xmp/fgr2.eps                   |  4568 ++++++
 doc/xmp/fgr2.png                   |   Bin 0 -> 25561 bytes
 doc/xmp/fgr2.txt                   |     1 +
 doc/xmp/fgr3.eps                   |  1461 ++
 doc/xmp/fgr3.png                   |   Bin 0 -> 10945 bytes
 doc/xmp/fgr3.txt                   |     1 +
 doc/xmp/glb_avg.sh                 |    64 +
 doc/xmp/grp.sh                     |   112 +
 doc/xmp/gsl_rgr.nco                |    41 +
 doc/xmp/mcc.sh                     |   106 +
 doc/xmp/mcc_grp.sh                 |    56 +
 doc/xmp/pmt_crd.sh                 |    38 +
 doc/xmp/rgr.sh                     |    41 +
 doc/xmp_cesm.html                  |   782 +
 m4/libtool.m4                      |   264 +-
 m4/ltoptions.m4                    |    19 +-
 m4/ltversion.m4                    |    10 +-
 man/Makefile.in                    |   167 +-
 man/ncap.1                         |    22 +-
 man/ncap2.1                        |    25 +-
 man/ncatted.1                      |    36 +-
 man/ncbo.1                         |    32 +-
 man/ncdiff.1                       |    31 +-
 man/ncea.1                         |    32 +-
 man/ncecat.1                       |    51 +-
 man/{ncea.1 => nces.1}             |    56 +-
 man/ncflint.1                      |    28 +-
 man/ncks.1                         |    76 +-
 man/nco.1                          |    10 +-
 man/ncpdq.1                        |    33 +-
 man/ncra.1                         |    53 +-
 man/ncrcat.1                       |    35 +-
 man/ncrename.1                     |    45 +-
 man/ncwa.1                         |    48 +-
 qt/libnco/libnco.pro               |   123 +
 qt/libnco/libnco.vcxproj           |   213 +
 qt/libnco_c++/libnco_c++.pro       |    60 +
 qt/libnco_c++/libnco_c++.vcxproj   |   147 +
 qt/ncap2/ncap2.pro                 |    90 +
 qt/ncap2/ncap2.vcxproj             |   186 +
 qt/ncatted/ncatted.pro             |    27 +
 qt/ncatted/ncatted.vcxproj         |   151 +
 qt/ncbo/ncbo.pro                   |    27 +
 qt/ncbo/ncbo.vcxproj               |   151 +
 qt/ncea/ncea.pro                   |    26 +
 qt/ncea/ncea.vcxproj               |   151 +
 qt/ncecat/ncecat.pro               |    28 +
 qt/ncecat/ncecat.vcxproj           |   151 +
 qt/ncflint/ncflint.pro             |    27 +
 qt/ncflint/ncflint.vcxproj         |   151 +
 qt/ncks/ncks.pro                   |    26 +
 qt/ncks/ncks.vcxproj               |   151 +
 qt/nco.pri                         |    62 +
 qt/nco.pro                         |    17 +
 qt/nco.sln                         |   150 +
 qt/ncpdq/ncpdq.pro                 |    27 +
 qt/ncpdq/ncpdq.vcxproj             |   151 +
 qt/ncra/ncra.pro                   |    27 +
 qt/ncra/ncra.vcxproj               |   151 +
 qt/ncrcat/ncrcat.pro               |    26 +
 qt/ncrcat/ncrcat.vcxproj           |   151 +
 qt/ncrename/ncrename.pro           |    26 +
 qt/ncrename/ncrename.vcxproj       |   151 +
 qt/ncwa/ncwa.pro                   |    67 +
 qt/ncwa/ncwa.vcxproj               |   151 +
 qt/tst_nco_c++/tst_nco_c++.pro     |    55 +
 qt/tst_nco_c++/tst_nco_c++.vcxproj |   151 +
 src/Makefile.in                    |   299 +-
 src/cuda/simpleTemplates.cu        |    80 +
 src/cuda/simpleTemplates_kernel.cu |    32 +
 src/nco++/Invoke.cc                |    89 +-
 src/nco++/Makefile.am              |    22 +-
 src/nco++/Makefile.in              |   361 +-
 src/nco++/Makefile.old             |    26 +-
 src/nco++/NcapVarVector.cc         |    20 +-
 src/nco++/NcapVector.hh            |   114 +-
 src/nco++/VarOp.hh                 |     5 +
 src/nco++/fmc_all_cls.cc           |  1236 +-
 src/nco++/fmc_all_cls.hh           |    65 +-
 src/nco++/fmc_cls.hh               |     2 +-
 src/nco++/fmc_gsl_cls.cc           |   328 +-
 src/nco++/fmc_gsl_cls.hh           |    25 +-
 src/nco++/libnco++.hh              |     7 +-
 src/nco++/map_srt_tmp.hh           |    27 +-
 src/nco++/ncap2.cc                 |   499 +-
 src/nco++/ncap2_utl.cc             |   193 +-
 src/nco++/ncap2_utl.hh             |    24 +-
 src/nco++/ncoEnumTokenTypes.hpp    |   179 +-
 src/nco++/ncoGrammer.g             |   472 +-
 src/nco++/ncoLexer.cpp             |   168 +-
 src/nco++/ncoLexer.hpp             |    14 +-
 src/nco++/ncoParser.cpp            |    39 +-
 src/nco++/ncoParser.hpp            |    13 +-
 src/nco++/ncoParserTokenTypes.hpp  |   179 +-
 src/nco++/ncoTree.cpp              |   662 +-
 src/nco++/ncoTree.hpp              |   119 +-
 src/nco++/nco_gsl.c                |   301 +
 src/nco++/nco_gsl.h                |    77 +
 src/nco++/prs_cls.cc               |    83 +-
 src/nco++/prs_cls.hh               |     2 +-
 src/nco++/sdo_utl.cc               |    26 +-
 src/nco++/sdo_utl.hh               |    18 +-
 src/nco/Makefile.am                |    15 +-
 src/nco/Makefile.in                |   881 +-
 src/nco/libnco.h                   |    14 +-
 src/nco/mpncbo.c                   |   217 +-
 src/nco/mpncecat.c                 |   162 +-
 src/nco/mpncflint.c                |   168 +-
 src/nco/mpncpdq.c                  |   239 +-
 src/nco/mpncra.c                   |   377 +-
 src/nco/mpncwa.c                   |   187 +-
 src/nco/ncap.c                     |   180 +-
 src/nco/ncap.h                     |    10 +-
 src/nco/ncap_lex.l                 |    89 +-
 src/nco/ncap_utl.c                 |    72 +-
 src/nco/ncap_yacc.y                |    38 +-
 src/nco/ncatted.c                  |   295 +-
 src/nco/ncbo.c                     |   670 +-
 src/nco/ncecat.c                   |   921 +-
 src/nco/ncflint.c                  |   656 +-
 src/nco/ncks.c                     |   686 +-
 src/nco/nco.h                      |   560 +-
 src/nco/nco_att_utl.c              |   907 +-
 src/nco/nco_att_utl.h              |    37 +-
 src/nco/nco_aux.c                  |   227 +-
 src/nco/nco_aux.h                  |     6 +-
 src/nco/nco_bnr.c                  |    22 +-
 src/nco/nco_bnr.h                  |     4 +-
 src/nco/nco_cln_utl.c              |   296 +-
 src/nco/nco_cln_utl.h              |    34 +-
 src/nco/nco_cnf_dmn.c              |   562 +-
 src/nco/nco_cnf_dmn.h              |     6 +-
 src/nco/nco_cnf_typ.c              |   512 +-
 src/nco/nco_cnf_typ.h              |    15 +-
 src/nco/nco_cnk.c                  |   822 +-
 src/nco/nco_cnk.h                  |    19 +-
 src/nco/nco_cnv_arm.c              |    14 +-
 src/nco/nco_cnv_arm.h              |     6 +-
 src/nco/nco_cnv_csm.c              |    49 +-
 src/nco/nco_cnv_csm.h              |    11 +-
 src/nco/nco_ctl.c                  |   318 +-
 src/nco/nco_ctl.h                  |    22 +-
 src/nco/nco_dbg.c                  |     6 +-
 src/nco/nco_dbg.h                  |     4 +-
 src/nco/nco_dmn_utl.c              |   312 +-
 src/nco/nco_dmn_utl.h              |    52 +-
 src/nco/nco_fl_utl.c               |  1326 +-
 src/nco/nco_fl_utl.h               |    58 +-
 src/nco/nco_grp_trv.c              |   857 ++
 src/nco/nco_grp_trv.h              |   171 +
 src/nco/nco_grp_utl.c              |  8349 ++++++++++-
 src/nco/nco_grp_utl.h              |   742 +-
 src/nco/nco_lmt.c                  |  2322 ++-
 src/nco/nco_lmt.h                  |    59 +-
 src/nco/nco_lst_utl.c              |   203 +-
 src/nco/nco_lst_utl.h              |    21 +-
 src/nco/nco_md5.c                  |   554 +
 src/nco/nco_md5.h                  |   164 +
 src/nco/nco_mmr.c                  |   334 +-
 src/nco/nco_mmr.h                  |    86 +-
 src/nco/nco_mpi.h                  |     4 +-
 src/nco/nco_msa.c                  |  2017 +--
 src/nco/nco_msa.h                  |   115 +-
 src/nco/nco_mss_val.c              |    23 +-
 src/nco/nco_mss_val.h              |    11 +-
 src/nco/nco_netcdf.c               |   414 +-
 src/nco/nco_netcdf.h               |   125 +-
 src/nco/nco_omp.c                  |    57 +-
 src/nco/nco_omp.h                  |    12 +-
 src/nco/nco_pck.c                  |   197 +-
 src/nco/nco_pck.h                  |     6 +-
 src/nco/nco_prn.c                  |  1804 ++-
 src/nco/nco_prn.h                  |    72 +-
 src/nco/nco_rec_var.c              |    37 +-
 src/nco/nco_rec_var.h              |     4 +-
 src/nco/nco_rth_flt.c              |   122 +-
 src/nco/nco_rth_flt.h              |   106 +-
 src/nco/nco_rth_utl.c              |   202 +-
 src/nco/nco_rth_utl.h              |    30 +-
 src/nco/nco_scl_utl.c              |     8 +-
 src/nco/nco_scl_utl.h              |     6 +-
 src/nco/nco_scm.c                  |    26 +-
 src/nco/nco_scm.h                  |     6 +-
 src/nco/nco_sng_utl.c              |   333 +-
 src/nco/nco_sng_utl.h              |    67 +-
 src/nco/nco_srm.c                  |    49 +
 src/nco/nco_srm.h                  |    52 +
 src/nco/nco_typ.h                  |    23 +-
 src/nco/nco_uthash.h               |   946 ++
 src/nco/nco_var_avg.c              |  1804 ++-
 src/nco/nco_var_avg.h              |     7 +-
 src/nco/nco_var_lst.c              |  1285 +-
 src/nco/nco_var_lst.h              |    59 +-
 src/nco/nco_var_rth.c              |   494 +-
 src/nco/nco_var_rth.h              |     8 +-
 src/nco/nco_var_scv.c              |   186 +-
 src/nco/nco_var_scv.h              |     6 +-
 src/nco/nco_var_utl.c              |  1701 ++-
 src/nco/nco_var_utl.h              |   192 +-
 src/nco/ncpdq.c                    |  1049 +-
 src/nco/ncra.c                     |  1371 +-
 src/nco/ncrename.c                 |   770 +-
 src/nco/ncwa.c                     |  1188 +-
 src/nco_c++/Makefile.in            |   772 +-
 src/nco_c++/Makefile.old           |    16 +-
 src/nco_c++/README                 |     8 +-
 src/nco_c++/libnco_c++.hh          |     6 +-
 src/nco_c++/nco_att.cc             |     4 +-
 src/nco_c++/nco_att.hh             |     4 +-
 src/nco_c++/nco_dmn.cc             |     4 +-
 src/nco_c++/nco_dmn.hh             |     4 +-
 src/nco_c++/nco_fl.cc              |     4 +-
 src/nco_c++/nco_fl.hh              |     4 +-
 src/nco_c++/nco_hgh.cc             |    14 +-
 src/nco_c++/nco_hgh.hh             |     4 +-
 src/nco_c++/nco_utl.cc             |     4 +-
 src/nco_c++/nco_utl.hh             |     4 +-
 src/nco_c++/nco_var.cc             |     4 +-
 src/nco_c++/nco_var.hh             |     4 +-
 src/nco_c++/tst.cc                 |    24 +-
 315 files changed, 94590 insertions(+), 99989 deletions(-)

diff --git a/INSTALL b/INSTALL
index 7d1c323..a1e89e1 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,8 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
 
    Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -226,6 +226,11 @@ order to use an ANSI C compiler:
 
 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
    On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
 parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
 a workaround.  If GNU CC is not installed, it is therefore recommended
diff --git a/Makefile.am b/Makefile.am
index 5eaa0cb..d7311f6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,7 @@
-# $Header: /cvsroot/nco/nco/Makefile.am,v 1.15 2009/04/21 22:17:37 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/Makefile.am,v 1.17 2012/07/05 23:18:50 pvicente Exp $ -*-makefile-*-
 
-SUBDIRS = data src man doc
+#SUBDIRS = data src man doc
+SUBDIRS = data src man @DOC_FOLDER@
 
 # Separately add desired files from nco/bld/ to distribution
 # Autoconf does not know about the bld directory 
@@ -12,12 +13,12 @@ ACLOCAL_AMFLAGS = -I m4
 test:	tst
 tst:
 	$(MAKE) check
-	cd bm && env MY_BIN_DIR=../src/nco DATA=/tmp ./nco_bm.pl --regress
+	cd bm && ./nco_bm.pl --regress
 
 regress:	rgr
 rgr:
-	cd bm && env MY_BIN_DIR=../src/nco DATA=/tmp ./nco_bm.pl --regress
+	cd bm && ./nco_bm.pl --regress
 
 regress-mpi:	rgr_mpi
 rgr_mpi:
-	cd bm && env MY_BIN_DIR=../src/nco DATA=/tmp ./nco_bm.pl --regress --mpi_prc=2
+	cd bm && ./nco_bm.pl --regress --mpi_prc=2
diff --git a/Makefile.in b/Makefile.in
index d9e5b57..810e7cd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,8 +14,53 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/Makefile.in,v 1.106 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/Makefile.in,v 1.140 2013/11/06 18:12:22 zender Exp $ -*-makefile-*-
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,15 +81,22 @@ build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
 subdir = .
-DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure COPYING INSTALL autobld/config.guess \
-	autobld/config.sub autobld/depcomp autobld/install-sh \
-	autobld/ltmain.sh autobld/missing autobld/mkinstalldirs \
-	autobld/texinfo.tex autobld/ylwrap
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/configure $(am__configure_deps) \
+	$(srcdir)/config.h.in $(top_srcdir)/autobld/mkinstalldirs \
+	AUTHORS COPYING ChangeLog INSTALL NEWS README \
+	autobld/config.guess autobld/config.sub autobld/depcomp \
+	autobld/install-sh autobld/missing autobld/mkinstalldirs \
+	autobld/texinfo.tex autobld/ylwrap autobld/ltmain.sh \
+	$(top_srcdir)/autobld/config.guess \
+	$(top_srcdir)/autobld/config.sub \
+	$(top_srcdir)/autobld/install-sh \
+	$(top_srcdir)/autobld/ltmain.sh $(top_srcdir)/autobld/missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -54,30 +105,73 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
-	distdir dist dist-all distcheck
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+	$(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -105,10 +199,14 @@ am__relativize = \
   reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -128,6 +226,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -169,6 +268,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -215,6 +315,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -247,7 +348,9 @@ target_vendor = @target_vendor@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-SUBDIRS = data src man doc
+
+#SUBDIRS = data src man doc
+SUBDIRS = data src man @DOC_FOLDER@
 
 # Separately add desired files from nco/bld/ to distribution
 # Autoconf does not know about the bld directory 
@@ -259,7 +362,7 @@ all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
@@ -295,10 +398,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
+	@if test ! -f $@; then rm -f stamp-h1; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -321,22 +422,25 @@ distclean-libtool:
 	-rm -f libtool config.lt
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -351,57 +455,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -417,12 +476,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -434,15 +488,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -451,9 +501,31 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+	-rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
@@ -489,13 +561,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -524,36 +593,36 @@ distdir: $(DISTFILES)
 	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
 
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
 
 dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-shar: distdir
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-zip: distdir
 	-rm -f $(distdir).zip
 	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -564,8 +633,8 @@ distcheck: dist
 	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
 	*.tar.xz*) \
 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
@@ -575,9 +644,9 @@ distcheck: dist
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
+	chmod -R a-w $(distdir)
+	chmod u+w $(distdir)
+	mkdir $(distdir)/_build $(distdir)/_inst
 	chmod a-w $(distdir)
 	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -585,6 +654,7 @@ distcheck: dist
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -608,13 +678,21 @@ distcheck: dist
 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
 	  && cd "$$am__cwd" \
 	  || exit 1
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -645,10 +723,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -730,38 +813,38 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
-	ctags-recursive install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am am--refresh check check-am clean clean-generic \
-	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
-	distcheck distclean distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags tags-recursive uninstall uninstall-am
+.MAKE: $(am__recursive_targets) all install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+	am--refresh check check-am clean clean-cscope clean-generic \
+	clean-libtool cscope cscopelist-am ctags ctags-am dist \
+	dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
+	dist-xz dist-zip distcheck distclean distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags distcleancheck \
+	distdir distuninstallcheck dvi dvi-am html html-am info \
+	info-am install install-am install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am
 
 
 test:	tst
 tst:
 	$(MAKE) check
-	cd bm && env MY_BIN_DIR=../src/nco DATA=/tmp ./nco_bm.pl --regress
+	cd bm && ./nco_bm.pl --regress
 
 regress:	rgr
 rgr:
-	cd bm && env MY_BIN_DIR=../src/nco DATA=/tmp ./nco_bm.pl --regress
+	cd bm && ./nco_bm.pl --regress
 
 regress-mpi:	rgr_mpi
 rgr_mpi:
-	cd bm && env MY_BIN_DIR=../src/nco DATA=/tmp ./nco_bm.pl --regress --mpi_prc=2
+	cd bm && ./nco_bm.pl --regress --mpi_prc=2
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/aclocal.m4 b/aclocal.m4
index f3eda21..5b1f4bf 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,8472 +1,26 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-m4_ifndef([AC_AUTOCONF_VERSION],
-  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
-[m4_warning([this file was generated for autoconf 2.68.
-You have another version of autoconf.  It may work, but is not guaranteed to.
-If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
-
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-#
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-])
-
-# serial 57 LT_INIT
-
-
-# LT_PREREQ(VERSION)
-# ------------------
-# Complain and exit if this libtool version is less that VERSION.
-m4_defun([LT_PREREQ],
-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
-       [m4_default([$3],
-		   [m4_fatal([Libtool version $1 or higher is required],
-		             63)])],
-       [$2])])
-
-
-# _LT_CHECK_BUILDDIR
-# ------------------
-# Complain if the absolute build directory name contains unusual characters
-m4_defun([_LT_CHECK_BUILDDIR],
-[case `pwd` in
-  *\ * | *\	*)
-    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
-esac
-])
-
-
-# LT_INIT([OPTIONS])
-# ------------------
-AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
-AC_BEFORE([$0], [LT_LANG])dnl
-AC_BEFORE([$0], [LT_OUTPUT])dnl
-AC_BEFORE([$0], [LTDL_INIT])dnl
-m4_require([_LT_CHECK_BUILDDIR])dnl
-
-dnl Autoconf doesn't catch unexpanded LT_ macros by default:
-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
-dnl unless we require an AC_DEFUNed macro:
-AC_REQUIRE([LTOPTIONS_VERSION])dnl
-AC_REQUIRE([LTSUGAR_VERSION])dnl
-AC_REQUIRE([LTVERSION_VERSION])dnl
-AC_REQUIRE([LTOBSOLETE_VERSION])dnl
-m4_require([_LT_PROG_LTMAIN])dnl
-
-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
-
-dnl Parse OPTIONS
-_LT_SET_OPTIONS([$0], [$1])
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-_LT_SETUP
-
-# Only expand once:
-m4_define([LT_INIT])
-])# LT_INIT
-
-# Old names:
-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
-dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
-])
-
-
-# _LT_FILEUTILS_DEFAULTS
-# ----------------------
-# It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
-m4_defun([_LT_FILEUTILS_DEFAULTS],
-[: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-])# _LT_FILEUTILS_DEFAULTS
-
-
-# _LT_SETUP
-# ---------
-m4_defun([_LT_SETUP],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
-
-_LT_DECL([], [host_alias], [0], [The host system])dnl
-_LT_DECL([], [host], [0])dnl
-_LT_DECL([], [host_os], [0])dnl
-dnl
-_LT_DECL([], [build_alias], [0], [The build system])dnl
-_LT_DECL([], [build], [0])dnl
-_LT_DECL([], [build_os], [0])dnl
-dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-test -z "$LN_S" && LN_S="ln -s"
-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
-dnl
-AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
-dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
-m4_require([_LT_CMD_RELOAD])dnl
-m4_require([_LT_CHECK_MAGIC_METHOD])dnl
-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
-m4_require([_LT_CMD_OLD_ARCHIVE])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_WITH_SYSROOT])dnl
-
-_LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-])
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
-fi
-
-_LT_CHECK_OBJDIR
-
-m4_require([_LT_TAG_COMPILER])dnl
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Global variables:
-ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    _LT_PATH_MAGIC
-  fi
-  ;;
-esac
-
-# Use C for the default configuration in the libtool script
-LT_SUPPORTED_TAG([CC])
-_LT_LANG_C_CONFIG
-_LT_LANG_DEFAULT_CONFIG
-_LT_CONFIG_COMMANDS
-])# _LT_SETUP
-
-
-# _LT_PREPARE_SED_QUOTE_VARS
-# --------------------------
-# Define a few sed substitution that help us do robust quoting.
-m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
-[# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-])
-
-# _LT_PROG_LTMAIN
-# ---------------
-# Note that this code is called both from `configure', and `config.status'
-# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
-# so we pass a copy along to make sure it has a sensible value anyway.
-m4_defun([_LT_PROG_LTMAIN],
-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
-])# _LT_PROG_LTMAIN
-
-
-
-# So that we can recreate a full libtool script including additional
-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
-# label.
-
-
-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
-# ----------------------------------------
-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL_INIT],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_INIT])
-
-
-# _LT_CONFIG_LIBTOOL([COMMANDS])
-# ------------------------------
-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
-m4_define([_LT_CONFIG_LIBTOOL],
-[m4_ifval([$1],
-          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
-                     [$1
-])])])
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
-
-
-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
-# -----------------------------------------------------
-m4_defun([_LT_CONFIG_SAVE_COMMANDS],
-[_LT_CONFIG_LIBTOOL([$1])
-_LT_CONFIG_LIBTOOL_INIT([$2])
-])
-
-
-# _LT_FORMAT_COMMENT([COMMENT])
-# -----------------------------
-# Add leading comment marks to the start of each line, and a trailing
-# full-stop to the whole comment if one is not present already.
-m4_define([_LT_FORMAT_COMMENT],
-[m4_ifval([$1], [
-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
-              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
-)])
-
-
-
-
-
-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
-# -------------------------------------------------------------------
-# CONFIGNAME is the name given to the value in the libtool script.
-# VARNAME is the (base) name used in the configure script.
-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
-# VARNAME.  Any other value will be used directly.
-m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
-    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
-	[m4_ifval([$1], [$1], [$2])])
-    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
-    m4_ifval([$4],
-	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
-    lt_dict_add_subkey([lt_decl_dict], [$2],
-	[tagged?], [m4_ifval([$5], [yes], [no])])])
-])
-
-
-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
-# --------------------------------------------------------
-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
-
-
-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_tag_varnames],
-[_lt_decl_filter([tagged?], [yes], $@)])
-
-
-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
-# ---------------------------------------------------------
-m4_define([_lt_decl_filter],
-[m4_case([$#],
-  [0], [m4_fatal([$0: too few arguments: $#])],
-  [1], [m4_fatal([$0: too few arguments: $#: $1])],
-  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
-  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
-  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
-])
-
-
-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
-# --------------------------------------------------
-m4_define([lt_decl_quote_varnames],
-[_lt_decl_filter([value], [1], $@)])
-
-
-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_dquote_varnames],
-[_lt_decl_filter([value], [2], $@)])
-
-
-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
-# ---------------------------------------------------
-m4_define([lt_decl_varnames_tagged],
-[m4_assert([$# <= 2])dnl
-_$0(m4_quote(m4_default([$1], [[, ]])),
-    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
-    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
-m4_define([_lt_decl_varnames_tagged],
-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
-
-
-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
-# ------------------------------------------------
-m4_define([lt_decl_all_varnames],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_if([$2], [],
-	   m4_quote(lt_decl_varnames),
-	m4_quote(m4_shift($@))))[]dnl
-])
-m4_define([_lt_decl_all_varnames],
-[lt_join($@, lt_decl_varnames_tagged([$1],
-			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
-])
-
-
-# _LT_CONFIG_STATUS_DECLARE([VARNAME])
-# ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
-# must have a single quote delimited value for this to work.
-m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
-
-
-# _LT_CONFIG_STATUS_DECLARATIONS
-# ------------------------------
-# We delimit libtool config variables with single quotes, so when
-# we write them to config.status, we have to be sure to quote all
-# embedded single quotes properly.  In configure, this macro expands
-# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
-#
-#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
-    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAGS
-# ----------------
-# Output comment and list of tags supported by the script
-m4_defun([_LT_LIBTOOL_TAGS],
-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
-])
-
-
-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
-# -----------------------------------
-# Extract the dictionary values for VARNAME (optionally with TAG) and
-# expand to a commented shell variable setting:
-#
-#    # Some comment about what VAR is for.
-#    visible_name=$lt_internal_name
-m4_define([_LT_LIBTOOL_DECLARE],
-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
-					   [description])))[]dnl
-m4_pushdef([_libtool_name],
-    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
-    [0], [_libtool_name=[$]$1],
-    [1], [_libtool_name=$lt_[]$1],
-    [2], [_libtool_name=$lt_[]$1],
-    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
-])
-
-
-# _LT_LIBTOOL_CONFIG_VARS
-# -----------------------
-# Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
-# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
-# section) are produced by _LT_LIBTOOL_TAG_VARS.
-m4_defun([_LT_LIBTOOL_CONFIG_VARS],
-[m4_foreach([_lt_var],
-    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
-
-
-# _LT_LIBTOOL_TAG_VARS(TAG)
-# -------------------------
-m4_define([_LT_LIBTOOL_TAG_VARS],
-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
-    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
-
-
-# _LT_TAGVAR(VARNAME, [TAGNAME])
-# ------------------------------
-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
-
-
-# _LT_CONFIG_COMMANDS
-# -------------------
-# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
-# variables for single and double quote escaping we saved from calls
-# to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
-m4_defun([_LT_CONFIG_COMMANDS],
-[AC_PROVIDE_IFELSE([LT_OUTPUT],
-	dnl If the libtool generation code has been placed in $CONFIG_LT,
-	dnl instead of duplicating it all over again into config.status,
-	dnl then we will have config.status run $CONFIG_LT later, so it
-	dnl needs to know what name is stored there:
-        [AC_CONFIG_COMMANDS([libtool],
-            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
-    dnl If the libtool generation code is destined for config.status,
-    dnl expand the accumulated commands and init code now:
-    [AC_CONFIG_COMMANDS([libtool],
-        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
-])#_LT_CONFIG_COMMANDS
-
-
-# Initialize.
-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
-[
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-_LT_CONFIG_STATUS_DECLARATIONS
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$[]1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-# Double-quote double-evaled strings.
-for var in lt_decl_all_varnames([[ \
-]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
-
-_LT_OUTPUT_LIBTOOL_INIT
-])
-
-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
-# ------------------------------------
-# Generate a child script FILE with all initialization necessary to
-# reuse the environment learned by the parent script, and make the
-# file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
-# macro, additional text can be appended to FILE to form the body of
-# the child script.  The macro ends with non-zero status if the
-# file could not be fully written (such as if the disk is full).
-m4_ifdef([AS_INIT_GENERATED],
-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
-[m4_defun([_LT_GENERATED_FILE_INIT],
-[m4_require([AS_PREPARE])]dnl
-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
-[lt_write_fail=0
-cat >$1 <<_ASEOF || lt_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-$2
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$1 <<\_ASEOF || lt_write_fail=1
-AS_SHELL_SANITIZE
-_AS_PREPARE
-exec AS_MESSAGE_FD>&1
-_ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
-
-# LT_OUTPUT
-# ---------
-# This macro allows early generation of the libtool script (before
-# AC_OUTPUT is called), incase it is used in configure for compilation
-# tests.
-AC_DEFUN([LT_OUTPUT],
-[: ${CONFIG_LT=./config.lt}
-AC_MSG_NOTICE([creating $CONFIG_LT])
-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
-[# Run this file to recreate a libtool stub with the current configuration.])
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec AS_MESSAGE_LOG_FD>>config.log
-{
-  echo
-  AS_BOX([Running $as_me.])
-} >&AS_MESSAGE_LOG_FD
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $[0] [[OPTIONS]]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool at gnu.org>."
-
-lt_cl_version="\
-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
-configured by $[0], generated by m4_PACKAGE_STRING.
-
-Copyright (C) 2010 Free Software Foundation, Inc.
-This config.lt script is free software; the Free Software Foundation
-gives unlimited permision to copy, distribute and modify it."
-
-while test $[#] != 0
-do
-  case $[1] in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
-
-    *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec AS_MESSAGE_FD>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
-_LTEOF
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-AC_MSG_NOTICE([creating $ofile])
-_LT_OUTPUT_LIBTOOL_COMMANDS
-AS_EXIT(0)
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec AS_MESSAGE_LOG_FD>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec AS_MESSAGE_LOG_FD>>config.log
-$lt_cl_success || AS_EXIT(1)
-])# LT_OUTPUT
-
-
-# _LT_CONFIG(TAG)
-# ---------------
-# If TAG is the built-in tag, create an initial libtool script with a
-# default configuration from the untagged config vars.  Otherwise add code
-# to config.status for appending the configuration named by TAG from the
-# matching tagged config vars.
-m4_defun([_LT_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_CONFIG_SAVE_COMMANDS([
-  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
-  m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
-
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
-
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-_LT_COPYING
-_LT_LIBTOOL_TAGS
-
-# ### BEGIN LIBTOOL CONFIG
-_LT_LIBTOOL_CONFIG_VARS
-_LT_LIBTOOL_TAG_VARS
-# ### END LIBTOOL CONFIG
-
-_LT_EOF
-
-  case $host_os in
-  aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
-    ;;
-  esac
-
-  _LT_PROG_LTMAIN
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_REPLACE_SHELLFNS
-
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-],
-[cat <<_LT_EOF >> "$ofile"
-
-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
-dnl in a comment (ie after a #).
-# ### BEGIN LIBTOOL TAG CONFIG: $1
-_LT_LIBTOOL_TAG_VARS(_LT_TAG)
-# ### END LIBTOOL TAG CONFIG: $1
-_LT_EOF
-])dnl /m4_if
-],
-[m4_if([$1], [], [
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'], [])
-])dnl /_LT_CONFIG_SAVE_COMMANDS
-])# _LT_CONFIG
-
-
-# LT_SUPPORTED_TAG(TAG)
-# ---------------------
-# Trace this macro to discover what tags are supported by the libtool
-# --tag option, using:
-#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
-AC_DEFUN([LT_SUPPORTED_TAG], [])
-
-
-# C support is built-in for now
-m4_define([_LT_LANG_C_enabled], [])
-m4_define([_LT_TAGS], [])
-
-
-# LT_LANG(LANG)
-# -------------
-# Enable libtool support for the given language if not already enabled.
-AC_DEFUN([LT_LANG],
-[AC_BEFORE([$0], [LT_OUTPUT])dnl
-m4_case([$1],
-  [C],			[_LT_LANG(C)],
-  [C++],		[_LT_LANG(CXX)],
-  [Java],		[_LT_LANG(GCJ)],
-  [Fortran 77],		[_LT_LANG(F77)],
-  [Fortran],		[_LT_LANG(FC)],
-  [Windows Resource],	[_LT_LANG(RC)],
-  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
-    [_LT_LANG($1)],
-    [m4_fatal([$0: unsupported language: "$1"])])])dnl
-])# LT_LANG
-
-
-# _LT_LANG(LANGNAME)
-# ------------------
-m4_defun([_LT_LANG],
-[m4_ifdef([_LT_LANG_]$1[_enabled], [],
-  [LT_SUPPORTED_TAG([$1])dnl
-  m4_append([_LT_TAGS], [$1 ])dnl
-  m4_define([_LT_LANG_]$1[_enabled], [])dnl
-  _LT_LANG_$1_CONFIG($1)])dnl
-])# _LT_LANG
-
-
-# _LT_LANG_DEFAULT_CONFIG
-# -----------------------
-m4_defun([_LT_LANG_DEFAULT_CONFIG],
-[AC_PROVIDE_IFELSE([AC_PROG_CXX],
-  [LT_LANG(CXX)],
-  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_F77],
-  [LT_LANG(F77)],
-  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
-
-AC_PROVIDE_IFELSE([AC_PROG_FC],
-  [LT_LANG(FC)],
-  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
-
-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
-dnl pulling things in needlessly.
-AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-  [LT_LANG(GCJ)],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-    [LT_LANG(GCJ)],
-    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
-      [LT_LANG(GCJ)],
-      [m4_ifdef([AC_PROG_GCJ],
-	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([A][M_PROG_GCJ],
-	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
-       m4_ifdef([LT_PROG_GCJ],
-	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
-
-AC_PROVIDE_IFELSE([LT_PROG_RC],
-  [LT_LANG(RC)],
-  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
-])# _LT_LANG_DEFAULT_CONFIG
-
-# Obsolete macros:
-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
-dnl AC_DEFUN([AC_LIBTOOL_F77], [])
-dnl AC_DEFUN([AC_LIBTOOL_FC], [])
-dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
-dnl AC_DEFUN([AC_LIBTOOL_RC], [])
-
-
-# _LT_TAG_COMPILER
-# ----------------
-m4_defun([_LT_TAG_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_TAG_COMPILER
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-m4_defun([_LT_COMPILER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-m4_defun([_LT_LINKER_BOILERPLATE],
-[m4_require([_LT_DECL_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# -------------------------
-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-    AC_CHECK_TOOL([LIPO], [lipo], [:])
-    AC_CHECK_TOOL([OTOOL], [otool], [:])
-    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
-    _LT_DECL([], [DSYMUTIL], [1],
-      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
-    _LT_DECL([], [NMEDIT], [1],
-      [Tool to change global to local symbols on Mac OS X])
-    _LT_DECL([], [LIPO], [1],
-      [Tool to manipulate fat objects and archives on Mac OS X])
-    _LT_DECL([], [OTOOL], [1],
-      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
-    _LT_DECL([], [OTOOL64], [1],
-      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-	# By default we will add the -single_module flag. You can override
-	# by either setting the environment variable LT_MULTI_MODULE
-	# non-empty at configure time, or by adding -multi_module to the
-	# link flags.
-	rm -rf libconftest.dylib*
-	echo "int foo(void){return 1;}" > conftest.c
-	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
-	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
-        _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
-	  lt_cv_apple_cc_single_mod=yes
-	else
-	  cat conftest.err >&AS_MESSAGE_LOG_FD
-	fi
-	rm -rf libconftest.dylib*
-	rm -f conftest.*
-      fi])
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-	[lt_cv_ld_exported_symbols_list=yes],
-	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
-    ])
-    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
-      [lt_cv_ld_force_load=no
-      cat > conftest.c << _LT_EOF
-int forced_loaded() { return 2;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
-      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
-      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
-      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
-      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
-      cat > conftest.c << _LT_EOF
-int main() { return 0;}
-_LT_EOF
-      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
-      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
-      _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
-	lt_cv_ld_force_load=yes
-      else
-	cat conftest.err >&AS_MESSAGE_LOG_FD
-      fi
-        rm -f conftest.err libconftest.a conftest conftest.c
-        rm -rf conftest.dSYM
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
-      _lt_dsymutil='~$DSYMUTIL $lib || :'
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
-# Checks for linker and compiler features on darwin
-m4_defun([_LT_DARWIN_LINKER_FEATURES],
-[
-  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_automatic, $1)=yes
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
-  else
-    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-  fi
-  _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-  case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
-     *) _lt_dar_can_shared=$GCC ;;
-  esac
-  if test "$_lt_dar_can_shared" = "yes"; then
-    output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-    fi
-],[])
-  else
-  _LT_TAGVAR(ld_shlibs, $1)=no
-  fi
-])
-
-# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
-# ----------------------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-# Store the results from the different compilers for each TAGNAME.
-# Allow to override them for all tags through lt_cv_aix_libpath.
-m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
-  aix_libpath=$lt_cv_aix_libpath
-else
-  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
-  lt_aix_libpath_sed='[
-      /Import File Strings/,/^$/ {
-	  /^0/ {
-	      s/^0  *\([^ ]*\) *$/\1/
-	      p
-	  }
-      }]'
-  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  # Check for a 64-bit object if we didn't find anything.
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-  fi],[])
-  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
-  fi
-  ])
-  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
-fi
-])# _LT_SYS_MODULE_PATH_AIX
-
-
-# _LT_SHELL_INIT(ARG)
-# -------------------
-m4_define([_LT_SHELL_INIT],
-[m4_divert_text([M4SH-INIT], [$1
-])])# _LT_SHELL_INIT
-
-
-
-# _LT_PROG_ECHO_BACKSLASH
-# -----------------------
-# Find how we can fake an echo command that does not interpret backslash.
-# In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
-m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-
-AC_MSG_CHECKING([how to print strings])
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
-else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$[]1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
-fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*" 
-}
-
-case "$ECHO" in
-  printf*) AC_MSG_RESULT([printf]) ;;
-  print*) AC_MSG_RESULT([print -r]) ;;
-  *) AC_MSG_RESULT([cat]) ;;
-esac
-
-m4_ifdef([_AS_DETECT_SUGGESTED],
-[_AS_DETECT_SUGGESTED([
-  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
-    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-    PATH=/empty FPATH=/empty; export PATH FPATH
-    test "X`printf %s $ECHO`" = "X$ECHO" \
-      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
-
-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
-])# _LT_PROG_ECHO_BACKSLASH
-
-
-# _LT_WITH_SYSROOT
-# ----------------
-AC_DEFUN([_LT_WITH_SYSROOT],
-[AC_MSG_CHECKING([for sysroot])
-AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
-[], [with_sysroot=no])
-
-dnl lt_sysroot will always be passed unquoted.  We quote it here
-dnl in case the user passed a directory name.
-lt_sysroot=
-case ${with_sysroot} in #(
- yes)
-   if test "$GCC" = yes; then
-     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
-   fi
-   ;; #(
- /*)
-   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
-   ;; #(
- no|'')
-   ;; #(
- *)
-   AC_MSG_RESULT([${with_sysroot}])
-   AC_MSG_ERROR([The sysroot must be an absolute path.])
-   ;;
-esac
-
- AC_MSG_RESULT([${lt_sysroot:-no}])
-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
-
-# _LT_ENABLE_LOCK
-# ---------------
-m4_defun([_LT_ENABLE_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-  [AS_HELP_STRING([--disable-libtool-lock],
-    [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-      *ELF-32*)
-	HPUX_IA64_MODE="32"
-	;;
-      *ELF-64*)
-	HPUX_IA64_MODE="64"
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -melf32bsmip"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -melf32bmipn32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -melf64bmip"
-	;;
-      esac
-    else
-      case `/usr/bin/file conftest.$ac_objext` in
-	*32-bit*)
-	  LD="${LD-ld} -32"
-	  ;;
-	*N32*)
-	  LD="${LD-ld} -n32"
-	  ;;
-	*64-bit*)
-	  LD="${LD-ld} -64"
-	  ;;
-      esac
-    fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-      *32-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_i386_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_i386"
-	    ;;
-	  ppc64-*linux*|powerpc64-*linux*)
-	    LD="${LD-ld} -m elf32ppclinux"
-	    ;;
-	  s390x-*linux*)
-	    LD="${LD-ld} -m elf_s390"
-	    ;;
-	  sparc64-*linux*)
-	    LD="${LD-ld} -m elf32_sparc"
-	    ;;
-	esac
-	;;
-      *64-bit*)
-	case $host in
-	  x86_64-*kfreebsd*-gnu)
-	    LD="${LD-ld} -m elf_x86_64_fbsd"
-	    ;;
-	  x86_64-*linux*)
-	    LD="${LD-ld} -m elf_x86_64"
-	    ;;
-	  ppc*-*linux*|powerpc*-*linux*)
-	    LD="${LD-ld} -m elf64ppc"
-	    ;;
-	  s390*-*linux*|s390*-*tpf*)
-	    LD="${LD-ld} -m elf64_s390"
-	    ;;
-	  sparc*-*linux*)
-	    LD="${LD-ld} -m elf64_sparc"
-	    ;;
-	esac
-	;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-esac
-
-need_locks="$enable_libtool_lock"
-])# _LT_ENABLE_LOCK
-
-
-# _LT_PROG_AR
-# -----------
-m4_defun([_LT_PROG_AR],
-[AC_CHECK_TOOLS(AR, [ar], false)
-: ${AR=ar}
-: ${AR_FLAGS=cru}
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
-
-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
-  [lt_cv_ar_at_file=no
-   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
-     [echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
-      AC_TRY_EVAL([lt_ar_try])
-      if test "$ac_status" -eq 0; then
-	# Ensure the archiver fails upon bogus file names.
-	rm -f conftest.$ac_objext libconftest.a
-	AC_TRY_EVAL([lt_ar_try])
-	if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-     ])
-  ])
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-_LT_DECL([], [archiver_list_spec], [1],
-  [How to feed a file listing to the archiver])
-])# _LT_PROG_AR
-
-
-# _LT_CMD_OLD_ARCHIVE
-# -------------------
-m4_defun([_LT_CMD_OLD_ARCHIVE],
-[_LT_PROG_AR
-
-AC_CHECK_TOOL(STRIP, strip, :)
-test -z "$STRIP" && STRIP=:
-_LT_DECL([], [STRIP], [1], [A symbol stripping program])
-
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-test -z "$RANLIB" && RANLIB=:
-_LT_DECL([], [RANLIB], [1],
-    [Commands used to install an old-style archive])
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
-_LT_DECL([], [old_postinstall_cmds], [2])
-_LT_DECL([], [old_postuninstall_cmds], [2])
-_LT_TAGDECL([], [old_archive_cmds], [2],
-    [Commands used to build an old-style archive])
-_LT_DECL([], [lock_old_archive_extraction], [0],
-    [Whether to use a lock for old archive extraction])
-])# _LT_CMD_OLD_ARCHIVE
-
-
-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([_LT_COMPILER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $RM conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$5], , :, [$5])
-else
-    m4_if([$6], , :, [$6])
-fi
-])# _LT_COMPILER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
-
-
-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                  [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------
-# Check whether the given linker option works
-AC_DEFUN([_LT_LINKER_OPTION],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    m4_if([$4], , :, [$4])
-else
-    m4_if([$5], , :, [$5])
-fi
-])# _LT_LINKER_OPTION
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
-
-
-# LT_CMD_MAX_LEN
-#---------------
-AC_DEFUN([LT_CMD_MAX_LEN],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # If test is not a shell built-in, we'll probably end up computing a
-      # maximum length that is only half of the actual maximum length, but
-      # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
-	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-_LT_DECL([], [max_cmd_len], [0],
-    [What is the maximum length of a command?])
-])# LT_CMD_MAX_LEN
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
-
-
-# _LT_HEADER_DLFCN
-# ----------------
-m4_defun([_LT_HEADER_DLFCN],
-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
-])# _LT_HEADER_DLFCN
-
-
-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ----------------------------------------------------------------
-m4_defun([_LT_TRY_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-[#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-	}
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}]
-_LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_TRY_DLOPEN_SELF
-
-
-# LT_SYS_DLOPEN_SELF
-# ------------------
-AC_DEFUN([LT_SYS_DLOPEN_SELF],
-[m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-    ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-	  lt_cv_dlopen_self_static, [dnl
-	  _LT_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-_LT_DECL([dlopen_support], [enable_dlopen], [0],
-	 [Whether dlopen is supported])
-_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
-	 [Whether dlopen of programs is supported])
-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
-	 [Whether dlopen of statically linked programs is supported])
-])# LT_SYS_DLOPEN_SELF
-
-# Old name:
-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
-
-
-# _LT_COMPILER_C_O([TAGNAME])
-# ---------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler.
-# This macro does not hard code the compiler like AC_PROG_CC_C_O.
-m4_defun([_LT_COMPILER_C_O],
-[m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
-])
-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
-	[Does compiler simultaneously support -c and -o options?])
-])# _LT_COMPILER_C_O
-
-
-# _LT_COMPILER_FILE_LOCKS([TAGNAME])
-# ----------------------------------
-# Check to see if we can do hard links to lock some files if needed
-m4_defun([_LT_COMPILER_FILE_LOCKS],
-[m4_require([_LT_ENABLE_LOCK])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-_LT_COMPILER_C_O([$1])
-
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
-])# _LT_COMPILER_FILE_LOCKS
-
-
-# _LT_CHECK_OBJDIR
-# ----------------
-m4_defun([_LT_CHECK_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-_LT_DECL([], [objdir], [0],
-         [The name of the directory that contains temporary libtool files])dnl
-m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
-])# _LT_CHECK_OBJDIR
-
-
-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
-# --------------------------------------
-# Check hardcoding attributes.
-m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
-   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-_LT_TAGDECL([], [hardcode_action], [0],
-    [How to hardcode a shared library path into an executable])
-])# _LT_LINKER_HARDCODE_LIBPATH
-
-
-# _LT_CMD_STRIPLIB
-# ----------------
-m4_defun([_LT_CMD_STRIPLIB],
-[m4_require([_LT_DECL_EGREP])
-striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      AC_MSG_RESULT([yes])
-    else
-      AC_MSG_RESULT([no])
-    fi
-    ;;
-  *)
-    AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
-_LT_DECL([], [striplib], [1])
-])# _LT_CMD_STRIPLIB
-
-
-# _LT_SYS_DYNAMIC_LINKER([TAG])
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-m4_defun([_LT_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_OBJDUMP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CHECK_SHELL_FEATURES])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-m4_if([$1],
-	[], [
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
-  case $lt_search_path_spec in
-  *\;*)
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
-    ;;
-  *)
-    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
-    ;;
-  esac
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  # AWK program above erroneously prepends '/' to C:/dos/paths
-  # for these hosts.
-  case $host_os in
-    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
-  esac
-  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  case $host_cpu in
-  powerpc)
-    # Since July 2007 AmigaOS4 officially supports .so libraries.
-    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    ;;
-  m68k)
-    library_names_spec='$libname.ixlibrary $libname.a'
-    # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-    ;;
-  esac
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32* | cegcc*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$cc_basename in
-  yes,*)
-    # gcc
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-m4_if([$1], [],[
-      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
-      ;;
-    mingw* | cegcc*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    dynamic_linker='Win32 ld.exe'
-    ;;
-
-  *,cl*)
-    # Native MSVC
-    libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
-
-    case $build_os in
-    mingw*)
-      sys_lib_search_path_spec=
-      lt_save_ifs=$IFS
-      IFS=';'
-      for lt_path in $LIB
-      do
-        IFS=$lt_save_ifs
-        # Let DOS variable expansion print the short 8.3 style file name.
-        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
-        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
-      done
-      IFS=$lt_save_ifs
-      # Convert to MSYS style.
-      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
-      ;;
-    cygwin*)
-      # Convert to unix form, then to dos form, then back to unix form
-      # but this time dos style (no spaces!) so that the unix form looks
-      # like /cygdrive/c/PROGRA~1:/cygdr...
-      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
-      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
-      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      ;;
-    *)
-      sys_lib_search_path_spec="$LIB"
-      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH.
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      # FIXME: find the short name or the path components, as spaces are
-      # common. (e.g. "Program Files" -> "PROGRA~1")
-      ;;
-    esac
-
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
-    dynamic_linker='Win32 link.exe'
-    ;;
-
-  *)
-    # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    dynamic_linker='Win32 ld.exe'
-    ;;
-  esac
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-haiku*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
-  postinstall_cmds='chmod 555 $lib'
-  # or fails outright, so override atomically:
-  install_override_mode=555
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-
-  # Some binutils ld are patched to set DT_RUNPATH
-  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
-    [lt_cv_shlibpath_overrides_runpath=no
-    save_LDFLAGS=$LDFLAGS
-    save_libdir=$libdir
-    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
-	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
-	 [lt_cv_shlibpath_overrides_runpath=yes])])
-    LDFLAGS=$save_LDFLAGS
-    libdir=$save_libdir
-    ])
-  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
-
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-_LT_DECL([], [variables_saved_for_relink], [1],
-    [Variables whose values should be saved in libtool wrapper scripts and
-    restored at link time])
-_LT_DECL([], [need_lib_prefix], [0],
-    [Do we need the "lib" prefix for modules?])
-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
-_LT_DECL([], [version_type], [0], [Library versioning type])
-_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
-_LT_DECL([], [shlibpath_overrides_runpath], [0],
-    [Is shlibpath searched before the hard-coded library search path?])
-_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
-_LT_DECL([], [library_names_spec], [1],
-    [[List of archive names.  First name is the real one, the rest are links.
-    The last name is the one that the linker finds with -lNAME]])
-_LT_DECL([], [soname_spec], [1],
-    [[The coded name of the library, if different from the real name]])
-_LT_DECL([], [install_override_mode], [1],
-    [Permission mode override for installation of shared libraries])
-_LT_DECL([], [postinstall_cmds], [2],
-    [Command to use after installation of a shared archive])
-_LT_DECL([], [postuninstall_cmds], [2],
-    [Command to use after uninstallation of a shared archive])
-_LT_DECL([], [finish_cmds], [2],
-    [Commands used to finish a libtool library installation in a directory])
-_LT_DECL([], [finish_eval], [1],
-    [[As "finish_cmds", except a single script fragment to be evaled but
-    not shown]])
-_LT_DECL([], [hardcode_into_libs], [0],
-    [Whether we should hardcode library paths into libraries])
-_LT_DECL([], [sys_lib_search_path_spec], [2],
-    [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
-])# _LT_SYS_DYNAMIC_LINKER
-
-
-# _LT_PATH_TOOL_PREFIX(TOOL)
-# --------------------------
-# find a file program which can recognize shared library
-AC_DEFUN([_LT_PATH_TOOL_PREFIX],
-[m4_require([_LT_DECL_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="m4_if([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool at gnu.org
-
-_LT_EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-_LT_DECL([], [MAGIC_CMD], [0],
-	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
-])# _LT_PATH_TOOL_PREFIX
-
-# Old name:
-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
-
-
-# _LT_PATH_MAGIC
-# --------------
-# find a file program which can recognize a shared library
-m4_defun([_LT_PATH_MAGIC],
-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# _LT_PATH_MAGIC
-
-
-# LT_PATH_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([LT_PATH_LD],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
-
-AC_ARG_WITH([gnu-ld],
-    [AS_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])dnl
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-_LT_PATH_LD_GNU
-AC_SUBST([LD])
-
-_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
-])# LT_PATH_LD
-
-# Old names:
-AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
-AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_LD], [])
-dnl AC_DEFUN([AC_PROG_LD], [])
-
-
-# _LT_PATH_LD_GNU
-#- --------------
-m4_defun([_LT_PATH_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# _LT_PATH_LD_GNU
-
-
-# _LT_CMD_RELOAD
-# --------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-m4_defun([_LT_CMD_RELOAD],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
-    ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_TAGDECL([], [reload_cmds], [2])dnl
-])# _LT_CMD_RELOAD
-
-
-# _LT_CHECK_MAGIC_METHOD
-# ----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_MAGIC_METHOD],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
-    fi
-    ;;
-  esac
-fi
-
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-_LT_DECL([], [deplibs_check_method], [1],
-    [Method to check whether dependent libraries are shared objects])
-_LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method = "file_magic"])
-_LT_DECL([], [file_magic_glob], [1],
-    [How to find potential files when deplibs_check_method = "file_magic"])
-_LT_DECL([], [want_nocaseglob], [1],
-    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
-])# _LT_CHECK_MAGIC_METHOD
-
-
-# LT_PATH_NM
-# ----------
-# find the pathname to a BSD- or MS-compatible name lister
-AC_DEFUN([LT_PATH_NM],
-[AC_REQUIRE([AC_PROG_CC])dnl
-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-  AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
-AC_SUBST([NM])
-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
-
-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
-  [lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
-  cat conftest.out >&AS_MESSAGE_LOG_FD
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*])
-])# LT_PATH_NM
-
-# Old names:
-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_PROG_NM], [])
-dnl AC_DEFUN([AC_PROG_NM], [])
-
-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-# --------------------------------
-# how to determine the name of the shared library
-# associated with a specific link library.
-#  -- PORTME fill in with the dynamic library characteristics
-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
-[m4_require([_LT_DECL_EGREP])
-m4_require([_LT_DECL_OBJDUMP])
-m4_require([_LT_DECL_DLLTOOL])
-AC_CACHE_CHECK([how to associate runtime and link libraries],
-lt_cv_sharedlib_from_linklib_cmd,
-[lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-])
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
-    [Command to associate shared and link libraries])
-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
-
-
-# _LT_PATH_MANIFEST_TOOL
-# ----------------------
-# locate the manifest tool
-m4_defun([_LT_PATH_MANIFEST_TOOL],
-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
-  [lt_cv_path_mainfest_tool=no
-  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
-  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
-  cat conftest.err >&AS_MESSAGE_LOG_FD
-  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
-    lt_cv_path_mainfest_tool=yes
-  fi
-  rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
-  MANIFEST_TOOL=:
-fi
-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
-])# _LT_PATH_MANIFEST_TOOL
-
-
-# LT_LIB_M
-# --------
-# check for math library
-AC_DEFUN([LT_LIB_M],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-AC_SUBST([LIBM])
-])# LT_LIB_M
-
-# Old name:
-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_CHECK_LIBM], [])
-
-
-# _LT_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------
-m4_defun([_LT_COMPILER_NO_RTTI],
-[m4_require([_LT_TAG_COMPILER])dnl
-
-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  case $cc_basename in
-  nvcc*)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
-  esac
-
-  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
-	[Compiler flag to turn off builtin functions])
-])# _LT_COMPILER_NO_RTTI
-
-
-# _LT_CMD_GLOBAL_SYMBOLS
-# ----------------------
-m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-AC_REQUIRE([LT_PATH_LD])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32* | cegcc*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Transform an extracted symbol line into a proper C declaration.
-# Some systems (esp. on ia64) link data and code symbols differently,
-# so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# Try without a prefix underscore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
-    # Also find C++ and __fastcall symbols from MSVC++,
-    # which start with @ or ?.
-    lt_cv_sys_global_symbol_pipe="$AWK ['"\
-"     {last_section=section; section=\$ 3};"\
-"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
-"     \$ 0!~/External *\|/{next};"\
-"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
-"     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
-"     ' prfx=^$ac_symprfx]"
-  else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-  fi
-  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<_LT_EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(void);
-void nm_test_func(void){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-_LT_EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
-	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<_LT_EOF > conftest.$ac_ext
-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
-   relocations are performed -- see ld's documentation on pseudo-relocs.  */
-# define LT@&t at _DLSYM_CONST
-#elif defined(__osf__)
-/* This system does not cope well with relocations in const data.  */
-# define LT@&t at _DLSYM_CONST
-#else
-# define LT@&t at _DLSYM_CONST const
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-_LT_EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
-
-	  cat <<_LT_EOF >> conftest.$ac_ext
-
-/* The mapping between symbol names and symbols.  */
-LT@&t at _DLSYM_CONST struct {
-  const char *name;
-  void       *address;
-}
-lt__PROGRAM__LTX_preloaded_symbols[[]] =
-{
-  { "@PROGRAM@", (void *) 0 },
-_LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
-	  cat <<\_LT_EOF >> conftest.$ac_ext
-  {0, (void *) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt__PROGRAM__LTX_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-_LT_EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_globsym_save_LIBS=$LIBS
-	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS=$lt_globsym_save_LIBS
-	  CFLAGS=$lt_globsym_save_CFLAGS
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-
-# Response file support.
-if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-  nm_file_list_spec='@'
-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
-  nm_file_list_spec='@'
-fi
-
-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
-    [Take the output of nm and produce a listing of raw symbols and C names])
-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
-    [Transform the output of nm in a proper C declaration])
-_LT_DECL([global_symbol_to_c_name_address],
-    [lt_cv_sys_global_symbol_to_c_name_address], [1],
-    [Transform the output of nm in a C name address pair])
-_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
-    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
-    [Transform the output of nm in a C name address pair when lib prefix is needed])
-_LT_DECL([], [nm_file_list_spec], [1],
-    [Specify filename containing input files for $NM])
-]) # _LT_CMD_GLOBAL_SYMBOLS
-
-
-# _LT_COMPILER_PIC([TAGNAME])
-# ---------------------------
-m4_defun([_LT_COMPILER_PIC],
-[m4_require([_LT_TAG_COMPILER])dnl
-_LT_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_TAGVAR(lt_prog_compiler_static, $1)=
-
-m4_if([$1], [CXX], [
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-      mingw* | cygwin* | os2* | pw32* | cegcc*)
-	# This hack is so that the source file can tell whether it is being
-	# built for inclusion in a dll (and should export symbols for example).
-	m4_if([$1], [GCJ], [],
-	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-	;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  icpc* )
-	    # Intel C++, used to be incompatible with GCC.
-	    # ICC 10 doesn't accept -KPIC any more.
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
-	    # IBM XL 8.0, 9.0 on PPC and BlueGene
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd* | netbsdelf*-gnu)
-	;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-        ;;
-      m68k)
-            # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
-            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-        ;;
-      esac
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    haiku*)
-      # PIC is the default for Haiku.
-      # The "-static" flag exists, but is broken.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)=
-      ;;
-
-    hpux*)
-      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
-      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
-      # sets the default TLS model and affects inlining.
-      case $host_cpu in
-      hppa*64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-
-    case $cc_basename in
-    nvcc*) # Cuda Compiler Driver 2.2
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-
-    mingw* | cygwin* | pw32* | os2* | cegcc*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
-      case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
-      ecc*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # icc used to be incompatible with GCC.
-      # ICC 10 doesn't accept -KPIC any more.
-      icc* | ifort*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      # Lahey Fortran 8.1.
-      lf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
-	;;
-      nagfor*)
-	# NAG Fortran compiler
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	;;
-      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      xl* | bgxl* | bgf* | mpixl*)
-	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-AC_CACHE_CHECK([for $compiler option to produce PIC],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
-  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
-    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t at m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
-	[Additional compiler flags for building library objects])
-
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-	[How to pass a linker flag through the compiler])
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
-	[Compiler flag to prevent dynamic linking])
-])# _LT_COMPILER_PIC
-
-
-# _LT_LINKER_SHLIBS([TAGNAME])
-# ----------------------------
-# See if the linker supports building shared libraries.
-m4_defun([_LT_LINKER_SHLIBS],
-[AC_REQUIRE([LT_PATH_LD])dnl
-AC_REQUIRE([LT_PATH_NM])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_DECL_SED])dnl
-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
-m4_require([_LT_TAG_COMPILER])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-m4_if([$1], [CXX], [
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-    ;;
-  cygwin* | mingw* | cegcc*)
-    case $cc_basename in
-    cl*) ;;
-    *)
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-      ;;
-    esac
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  *)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-    ;;
-  esac
-], [
-  runpath_var=
-  _LT_TAGVAR(allow_undefined_flag, $1)=
-  _LT_TAGVAR(always_export_symbols, $1)=no
-  _LT_TAGVAR(archive_cmds, $1)=
-  _LT_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_TAGVAR(compiler_needs_object, $1)=no
-  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  _LT_TAGVAR(hardcode_automatic, $1)=no
-  _LT_TAGVAR(hardcode_direct, $1)=no
-  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
-  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_TAGVAR(inherit_rpath, $1)=no
-  _LT_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_TAGVAR(module_cmds, $1)=
-  _LT_TAGVAR(module_expsym_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
-  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-
-  case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  linux* | k*bsd*-gnu | gnu*)
-    _LT_TAGVAR(link_all_deplibs, $1)=no
-    ;;
-  esac
-
-  _LT_TAGVAR(ld_shlibs, $1)=yes
-
-  # On some targets, GNU ld is compatible enough with the native linker
-  # that we're better off using the native interface for both.
-  lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
-    case $host_os in
-      aix*)
-	# The AIX port of GNU ld has always aspired to compatibility
-	# with the native linker.  However, as the warning in the GNU ld
-	# block says, versions before 2.19.5* couldn't really create working
-	# shared libraries, regardless of the interface used.
-	case `$LD -v 2>&1` in
-	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
-	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
-	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
-	  *)
-	    lt_use_gnu_ld_interface=yes
-	    ;;
-	esac
-	;;
-      *)
-	lt_use_gnu_ld_interface=yes
-	;;
-    esac
-  fi
-
-  if test "$lt_use_gnu_ld_interface" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *GNU\ gold*) supports_anon_versioning=yes ;;
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.19, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to install binutils
-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
-*** You will then need to restart the configuration process.
-
-_LT_EOF
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=no
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
-      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
-
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    interix[[3-9]]*)
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-	case $cc_basename in
-	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
-	esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
-      then
-	tmp_addflag=' $pic_flag'
-	tmp_sharedflag='-shared'
-	case $cc_basename,$host_cpu in
-        pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95* | pgfortran*)
-					# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	lf95*)				# Lahey Fortran 8.1
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
-	  tmp_sharedflag='--shared' ;;
-	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
-	  tmp_sharedflag='-qmkshrobj'
-	  tmp_addflag= ;;
-	nvcc*)	# Cuda Compiler Driver 2.2
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	  _LT_TAGVAR(compiler_needs_object, $1)=yes
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-        if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-
-	case $cc_basename in
-	xlf* | bgf* | bgxlf* | mpixlf*)
-	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
-	  fi
-	  ;;
-	esac
-      else
-        _LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  # For security reasons, it is highly recommended that you always
-	  # use absolute paths for naming shared libraries, and exclude the
-	  # DT_RUNPATH tag from executables and libraries.  But doing so
-	  # requires that you compile everything twice, which is a pain.
-	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
-	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-	    aix_use_runtimelinking=yes
-	    break
-	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_TAGVAR(archive_cmds, $1)=''
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	  # We have reworked collect2
-	  :
-	  else
-	  # We have old collect2
-	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an
-	 # empty executable.
-	 _LT_SYS_MODULE_PATH_AIX([$1])
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
-	    # We only use this code for GNU lds that support --whole-archive.
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	  else
-	    # Exported symbols can be pulled into shared objects from archives
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  fi
-	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      case $host_cpu in
-      powerpc)
-            # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-            _LT_TAGVAR(archive_expsym_cmds, $1)=''
-        ;;
-      m68k)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes
-        ;;
-      esac
-      ;;
-
-    bsdi[[45]]*)
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32* | cegcc*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      case $cc_basename in
-      cl*)
-	# Native MSVC
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	_LT_TAGVAR(always_export_symbols, $1)=yes
-	_LT_TAGVAR(file_list_spec, $1)='@'
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
-	# The linker will not automatically build a static lib if we build a DLL.
-	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-	# Don't use ranlib
-	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
-	;;
-      *)
-	# Assume MSVC wrapper
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Tell ltmain to make .lib files, not .a files.
-	libext=lib
-	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
-	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
-	# The linker will automatically build a .lib file if we build a DLL.
-	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	# FIXME: Should let the user specify the lib program.
-	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	;;
-      esac
-      ;;
-
-    darwin* | rhapsody*)
-      _LT_DARWIN_LINKER_FEATURES($1)
-      ;;
-
-    dgux*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	m4_if($1, [], [
-	  # Older versions of the 11.00 compiler do not understand -b yet
-	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
-	  _LT_LINKER_OPTION([if $CC understands -b],
-	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
-	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	# Try to use the -exported_symbol ld option, if it does not
-	# work, assume that -exports_file does not work either and
-	# implicitly export all symbols.
-	# This should be the same for all languages, so no per-tag cache variable.
-	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
-	  [lt_cv_irix_exported_symbol],
-	  [save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-	   AC_LINK_IFELSE(
-	     [AC_LANG_SOURCE(
-	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
-			      [C++], [[int foo (void) { return 0; }]],
-			      [Fortran 77], [[
-      subroutine foo
-      end]],
-			      [Fortran], [[
-      subroutine foo
-      end]])])],
-	      [lt_cv_irix_exported_symbol=yes],
-	      [lt_cv_irix_exported_symbol=no])
-           LDFLAGS="$save_LDFLAGS"])
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-	fi
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(inherit_rpath, $1)=yes
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *nto* | *qnx*)
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_TAGVAR(hardcode_direct, $1)=yes
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-	fi
-      else
-	_LT_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-	case `$CC -V 2>&1` in
-	*"Compilers 5.0"*)
-	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-	  ;;
-	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-	  ;;
-	esac
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
-	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
-	;;
-      esac
-    fi
-  fi
-])
-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
-
-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
-_LT_DECL([], [extract_expsyms_cmds], [2],
-    [The commands to extract the exported symbol list from a shared archive])
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
-	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
-	[$RM conftest*
-	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-	  soname=conftest
-	  lib=conftest
-	  libobjs=conftest.$ac_objext
-	  deplibs=
-	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
-	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-	  compiler_flags=-v
-	  linker_flags=-v
-	  verstring=
-	  output_objdir=.
-	  libname=conftest
-	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-	  _LT_TAGVAR(allow_undefined_flag, $1)=
-	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-	  then
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	  else
-	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  fi
-	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-	else
-	  cat conftest.err 1>&5
-	fi
-	$RM conftest*
-	])
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
-    [Whether or not to add -lc for building shared libraries])
-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
-    [enable_shared_with_static_runtimes], [0],
-    [Whether or not to disallow shared libs when runtime libs are static])
-_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
-    [Compiler flag to allow reflexive dlopens])
-_LT_TAGDECL([], [whole_archive_flag_spec], [1],
-    [Compiler flag to generate shared objects directly from archives])
-_LT_TAGDECL([], [compiler_needs_object], [1],
-    [Whether the compiler copes with passing no objects directly])
-_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
-    [Create an old-style archive from a shared archive])
-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
-    [Create a temporary old-style archive to link instead of a shared archive])
-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
-_LT_TAGDECL([], [archive_expsym_cmds], [2])
-_LT_TAGDECL([], [module_cmds], [2],
-    [Commands used to build a loadable module if different from building
-    a shared archive.])
-_LT_TAGDECL([], [module_expsym_cmds], [2])
-_LT_TAGDECL([], [with_gnu_ld], [1],
-    [Whether we are building with GNU ld or not])
-_LT_TAGDECL([], [allow_undefined_flag], [1],
-    [Flag that allows shared libraries with undefined symbols to be built])
-_LT_TAGDECL([], [no_undefined_flag], [1],
-    [Flag that enforces no undefined symbols])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
-    [Flag to hardcode $libdir into a binary during linking.
-    This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
-_LT_TAGDECL([], [hardcode_libdir_separator], [1],
-    [Whether we need a single "-rpath" flag with a separated argument])
-_LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary])
-_LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
-    DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
-    library is relocated])
-_LT_TAGDECL([], [hardcode_minus_L], [0],
-    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
-    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-    into the resulting binary])
-_LT_TAGDECL([], [hardcode_automatic], [0],
-    [Set to "yes" if building a shared library automatically hardcodes DIR
-    into the library and all subsequent libraries and executables linked
-    against it])
-_LT_TAGDECL([], [inherit_rpath], [0],
-    [Set to yes if linker adds runtime paths of dependent libraries
-    to runtime path list])
-_LT_TAGDECL([], [link_all_deplibs], [0],
-    [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [always_export_symbols], [0],
-    [Set to "yes" if exported symbols are required])
-_LT_TAGDECL([], [export_symbols_cmds], [2],
-    [The commands to list exported symbols])
-_LT_TAGDECL([], [exclude_expsyms], [1],
-    [Symbols that should not be listed in the preloaded symbols])
-_LT_TAGDECL([], [include_expsyms], [1],
-    [Symbols that must always be exported])
-_LT_TAGDECL([], [prelink_cmds], [2],
-    [Commands necessary for linking programs (against libraries) with templates])
-_LT_TAGDECL([], [postlink_cmds], [2],
-    [Commands necessary for finishing linking programs])
-_LT_TAGDECL([], [file_list_spec], [1],
-    [Specify filename containing input files])
-dnl FIXME: Not yet implemented
-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
-dnl    [Compiler flag to generate thread safe objects])
-])# _LT_LINKER_SHLIBS
-
-
-# _LT_LANG_C_CONFIG([TAG])
-# ------------------------
-# Ensure that the configuration variables for a C compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_C_CONFIG],
-[m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_TAG_COMPILER
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-  LT_SYS_DLOPEN_SELF
-  _LT_CMD_STRIPLIB
-
-  # Report which library types will actually be built
-  AC_MSG_CHECKING([if libtool supports shared libraries])
-  AC_MSG_RESULT([$can_build_shared])
-
-  AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  AC_MSG_RESULT([$enable_shared])
-
-  AC_MSG_CHECKING([whether to build static libraries])
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  AC_MSG_RESULT([$enable_static])
-
-  _LT_CONFIG($1)
-fi
-AC_LANG_POP
-CC="$lt_save_CC"
-])# _LT_LANG_C_CONFIG
-
-
-# _LT_LANG_CXX_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a C++ compiler are suitably
-# defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_CXX_CONFIG],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_DECL_EGREP])dnl
-m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-
-AC_LANG_PUSH(C++)
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(compiler_needs_object, $1)=no
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC=$CC
-  lt_save_CFLAGS=$CFLAGS
-  lt_save_LD=$LD
-  lt_save_GCC=$GCC
-  GCC=$GXX
-  lt_save_with_gnu_ld=$with_gnu_ld
-  lt_save_path_LD=$lt_cv_path_LD
-  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-  else
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  CFLAGS=$CXXFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-    else
-      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-    fi
-
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
-
-      LT_PATH_LD
-
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
-
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          _LT_TAGVAR(whole_archive_flag_spec, $1)=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
-
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
-
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-    _LT_TAGVAR(ld_shlibs, $1)=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-      aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	    for ld_flag in $LDFLAGS; do
-	      case $ld_flag in
-	      *-brtl*)
-	        aix_use_runtimelinking=yes
-	        break
-	        ;;
-	      esac
-	    done
-	    ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        _LT_TAGVAR(archive_cmds, $1)=''
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
-
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[[012]]|aix4.[[012]].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" &&
-	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-	  then
-	    # We have reworked collect2
-	    :
-	  else
-	    # We have old collect2
-	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
-	    # It fails to find uninstalled libraries when the uninstalled
-	    # path is not listed in the libpath.  Setting hardcode_minus_L
-	    # to unsupported forces relinking
-	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-          esac
-          shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
-	  fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	  # chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-          else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
-	    else
-	      shared_flag='${wl}-bM:SRE'
-	    fi
-          fi
-        fi
-
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-	# export.
-        _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-	    # Determine the default libpath from the value encoded in an
-	    # empty executable.
-	    _LT_SYS_MODULE_PATH_AIX([$1])
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	    # Warning - without using the other run time loading flags,
-	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
-	      # We only use this code for GNU lds that support --whole-archive.
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    else
-	      # Exported symbols can be pulled into shared objects from archives
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	    fi
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
-
-      beos*)
-	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
-	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      chorus*)
-        case $cc_basename in
-          *)
-	  # FIXME: insert proper C++ library support
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	  ;;
-        esac
-        ;;
-
-      cygwin* | mingw* | pw32* | cegcc*)
-	case $GXX,$cc_basename in
-	,cl* | no,cl*)
-	  # Native MSVC
-	  # hardcode_libdir_flag_spec is actually meaningless, as there is
-	  # no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=yes
-	  _LT_TAGVAR(file_list_spec, $1)='@'
-	  # Tell ltmain to make .lib files, not .a files.
-	  libext=lib
-	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
-	  # FIXME: Setting linknames here is a bad hack.
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
-	  # The linker will not automatically build a static lib if we build a DLL.
-	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-	  # Don't use ranlib
-	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
-	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
-	  ;;
-	*)
-	  # g++
-	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-	  # as there is no search path for DLLs.
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-	  _LT_TAGVAR(always_export_symbols, $1)=no
-	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	  else
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	  ;;
-	esac
-	;;
-      darwin* | rhapsody*)
-        _LT_DARWIN_LINKER_FEATURES($1)
-	;;
-
-      dgux*)
-        case $cc_basename in
-          ec++*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          ghcx*)
-	    # Green Hills C++ Compiler
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      freebsd[[12]]*)
-        # C++ shared libraries reported to be fairly broken before
-	# switch to ELF
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      freebsd-elf*)
-        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        ;;
-
-      freebsd* | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-        ;;
-
-      gnu*)
-        ;;
-
-      haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(link_all_deplibs, $1)=yes
-        ;;
-
-      hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        _LT_TAGVAR(hardcode_direct, $1)=yes
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				             # but as the default
-				             # location of the library.
-
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            _LT_TAGVAR(ld_shlibs, $1)=no
-            ;;
-          aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              _LT_TAGVAR(ld_shlibs, $1)=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            _LT_TAGVAR(hardcode_direct, $1)=no
-            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-            ;;
-          *)
-            _LT_TAGVAR(hardcode_direct, $1)=yes
-            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					         # but as the default
-					         # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          aCC*)
-	    case $host_cpu in
-	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	        ;;
-	    esac
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
-	        case $host_cpu in
-	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	            ;;
-	        esac
-	      fi
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      interix[[3-9]]*)
-	_LT_TAGVAR(hardcode_direct, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-	# Instead, shared libraries are loaded at an image base (0x10000000 by
-	# default) and relocated if they conflict, which is a slow very memory
-	# consuming and fragmenting process.  To avoid this, we pick a random,
-	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
-	      fi
-	    fi
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-	    ;;
-        esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(inherit_rpath, $1)=yes
-        ;;
-
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	    ;;
-	  icpc* | ecpc* )
-	    # Intel C++
-	    with_gnu_ld=yes
-	    # version 8.0 and above of icpc choke on multiply defined symbols
-	    # if we add $predep_objects and $postdep_objects, however 7.1 and
-	    # earlier do not add the objects themselves.
-	    case `$CC -V 2>&1` in
-	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	      *)  # Version 8.0 or newer
-	        tmp_idyn=
-	        case $host_cpu in
-		  ia64*) tmp_idyn=' -i_dynamic';;
-		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-		;;
-	    esac
-	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	    ;;
-          pgCC* | pgcpp*)
-            # Portland Group C++ compiler
-	    case `$CC -V` in
-	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
-	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
-	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
-	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    *) # Version 6 and above use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-	      ;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-	  cxx*)
-	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	    runpath_var=LD_RUN_PATH
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
-	    ;;
-	  xl* | mpixl* | bgxl*)
-	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	    fi
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
-	      _LT_TAGVAR(compiler_needs_object, $1)=yes
-
-	      # Not sure whether something based on
-	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	      # would be better.
-	      output_verbose_link_cmd='func_echo_all'
-
-	      # Archives containing C++ object files must be created using
-	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	      # necessary to make sure instantiated templates are included
-	      # in the archive.
-	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      m88k*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      mvs*)
-        case $cc_basename in
-          cxx*)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	  *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-	esac
-	;;
-
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-	  wlarc=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	fi
-	# Workaround some broken pre-1.5 toolchains
-	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-	;;
-
-      *nto* | *qnx*)
-        _LT_TAGVAR(ld_shlibs, $1)=yes
-	;;
-
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
-	if test -f /usr/libexec/ld.so; then
-	  _LT_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-	  fi
-	  output_verbose_link_cmd=func_echo_all
-	else
-	  _LT_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-	    # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	    # KCC will only create a shared library if the output file
-	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
-	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Archives containing C++ object files must be created using
-	    # the KAI C++ compiler.
-	    case $host in
-	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
-	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
-	    esac
-	    ;;
-          RCC*)
-	    # Rational C++ 2.4.1
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          cxx*)
-	    case $host in
-	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-		;;
-	      *)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-		;;
-	    esac
-
-	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    #
-	    # There doesn't appear to be a way to prevent this compiler from
-	    # explicitly linking system object files so we need to strip them
-	    # from the output so that they don't get included in the library
-	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
-	    ;;
-	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	      case $host in
-	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-		  ;;
-	      esac
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	      # Commands to make compiler produce verbose output that lists
-	      # what "hidden" libraries, object files and flags are used when
-	      # linking a shared library.
-	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-
-	    else
-	      # FIXME: insert proper C++ library support
-	      _LT_TAGVAR(ld_shlibs, $1)=no
-	    fi
-	    ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-	    # Sun C++ 4.x
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          lcc*)
-	    # Lucid
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC* | sunCC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	    case $host_os in
-	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	      *)
-		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
-	        # Supported since Solaris 2.6 (maybe 2.5.1?)
-		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	        ;;
-	    esac
-	    _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-	    output_verbose_link_cmd='func_echo_all'
-
-	    # Archives containing C++ object files must be created using
-	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	    # necessary to make sure instantiated templates are included
-	    # in the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	    ;;
-          gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	    # The C++ compiler must be used to create the archive.
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	    ;;
-          *)
-	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-	        # Commands to make compiler produce verbose output that lists
-	        # what "hidden" libraries, object files and flags are used when
-	        # linking a shared library.
-	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
-	      fi
-
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	      case $host_os in
-		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-		  ;;
-	      esac
-	    fi
-	    ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
-	# link with -lc, and that would cause any symbols used from libc to
-	# always be unresolved, which means just about no library would
-	# ever link correctly.  If we're not using GNU ld we use -z text
-	# though, which does catch some bad symbols but isn't as heavy-handed
-	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
-	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
-	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-	runpath_var='LD_RUN_PATH'
-
-	case $cc_basename in
-          CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
-	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-	      '"$_LT_TAGVAR(reload_cmds, $1)"
-	    ;;
-	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    ;;
-	esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-	    # NonStop-UX NCC 3.20
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-          *)
-	    # FIXME: insert proper C++ library support
-	    _LT_TAGVAR(ld_shlibs, $1)=no
-	    ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        _LT_TAGVAR(ld_shlibs, $1)=no
-        ;;
-    esac
-
-    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
-
-AC_LANG_POP
-])# _LT_LANG_CXX_CONFIG
-
-
-# _LT_FUNC_STRIPNAME_CNF
-# ----------------------
-# func_stripname_cnf prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-#
-# This function is identical to the (non-XSI) version of func_stripname,
-# except this one can be used by m4 code that may be executed by configure,
-# rather than the libtool script.
-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
-AC_REQUIRE([_LT_DECL_SED])
-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
-func_stripname_cnf ()
-{
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-  esac
-} # func_stripname_cnf
-])# _LT_FUNC_STRIPNAME_CNF
-
-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
-# ---------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
-# Dependencies to place before and after the object being linked:
-_LT_TAGVAR(predep_objects, $1)=
-_LT_TAGVAR(postdep_objects, $1)=
-_LT_TAGVAR(predeps, $1)=
-_LT_TAGVAR(postdeps, $1)=
-_LT_TAGVAR(compiler_lib_search_path, $1)=
-
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
-int a;
-void foo (void) { a = 0; }
-_LT_EOF
-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
-      subroutine foo
-      implicit none
-      integer a
-      a=0
-      return
-      end
-_LT_EOF
-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-_LT_EOF
-])
-
-_lt_libdeps_save_CFLAGS=$CFLAGS
-case "$CC $CFLAGS " in #(
-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
-esac
-
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-	 prev=$p
-	 continue
-       fi
-
-       # Expand the sysroot to ease extracting the directories later.
-       if test -z "$prev"; then
-         case $p in
-         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
-         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
-         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
-         esac
-       fi
-       case $p in
-       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
-       esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
-	 -L | -R)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       prev=
-       ;;
-
-    *.lto.$objext) ;; # Ignore GCC LTO objects
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$RM -f confest.$objext
-CFLAGS=$_lt_libdeps_save_CFLAGS
-
-# PORTME: override above test on systems where it is broken
-m4_if([$1], [CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_TAGVAR(predep_objects,$1)=
-  _LT_TAGVAR(postdep_objects,$1)=
-  _LT_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
-    [The directories searched by this compiler when creating a shared library])
-_LT_TAGDECL([], [predep_objects], [1],
-    [Dependencies to place before and after the objects being linked to
-    create a shared library])
-_LT_TAGDECL([], [postdep_objects], [1])
-_LT_TAGDECL([], [predeps], [1])
-_LT_TAGDECL([], [postdeps], [1])
-_LT_TAGDECL([], [compiler_lib_search_path], [1],
-    [The library search path used internally by the compiler when linking
-    a shared library])
-])# _LT_SYS_HIDDEN_LIBDEPS
-
-
-# _LT_LANG_F77_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for a Fortran 77 compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_F77_CONFIG],
-[AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the F77 compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${F77-"f77"}
-  CFLAGS=$FFLAGS
-  compiler=$CC
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-  GCC=$G77
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
-
-AC_LANG_POP
-])# _LT_LANG_F77_CONFIG
-
-
-# _LT_LANG_FC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for a Fortran compiler are
-# suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_FC_CONFIG],
-[AC_LANG_PUSH(Fortran)
-
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_TAGVAR(allow_undefined_flag, $1)=
-_LT_TAGVAR(always_export_symbols, $1)=no
-_LT_TAGVAR(archive_expsym_cmds, $1)=
-_LT_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_TAGVAR(hardcode_direct, $1)=no
-_LT_TAGVAR(hardcode_direct_absolute, $1)=no
-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_TAGVAR(hardcode_minus_L, $1)=no
-_LT_TAGVAR(hardcode_automatic, $1)=no
-_LT_TAGVAR(inherit_rpath, $1)=no
-_LT_TAGVAR(module_cmds, $1)=
-_LT_TAGVAR(module_expsym_cmds, $1)=
-_LT_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-_LT_TAGVAR(no_undefined_flag, $1)=
-_LT_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for fc test sources.
-ac_ext=${ac_fc_srcext-f}
-
-# Object file extension for compiled fc test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# No sense in running all these tests if we already determined that
-# the FC compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-  # Code to be used in simple link tests
-  lt_simple_link_test_code="\
-      program t
-      end
-"
-
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
-  _LT_TAG_COMPILER
-
-  # save warnings/boilerplate of simple test code
-  _LT_COMPILER_BOILERPLATE
-  _LT_LINKER_BOILERPLATE
-
-  # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
-  lt_save_GCC=$GCC
-  lt_save_CFLAGS=$CFLAGS
-  CC=${FC-"f95"}
-  CFLAGS=$FCFLAGS
-  compiler=$CC
-  GCC=$ac_cv_fc_compiler_gnu
-
-  _LT_TAGVAR(compiler, $1)=$CC
-  _LT_CC_BASENAME([$compiler])
-
-  if test -n "$compiler"; then
-    AC_MSG_CHECKING([if libtool supports shared libraries])
-    AC_MSG_RESULT([$can_build_shared])
-
-    AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
-
-    # On AIX, shared libraries and static libraries use the same namespace, and
-    # are all built from PIC.
-    case $host_os in
-      aix3*)
-        test "$enable_shared" = yes && enable_static=no
-        if test -n "$RANLIB"; then
-          archive_cmds="$archive_cmds~\$RANLIB \$lib"
-          postinstall_cmds='$RANLIB $lib'
-        fi
-        ;;
-      aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
-	fi
-        ;;
-    esac
-    AC_MSG_RESULT([$enable_shared])
-
-    AC_MSG_CHECKING([whether to build static libraries])
-    # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
-    AC_MSG_RESULT([$enable_static])
-
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    _LT_SYS_HIDDEN_LIBDEPS($1)
-    _LT_COMPILER_PIC($1)
-    _LT_COMPILER_C_O($1)
-    _LT_COMPILER_FILE_LOCKS($1)
-    _LT_LINKER_SHLIBS($1)
-    _LT_SYS_DYNAMIC_LINKER($1)
-    _LT_LINKER_HARDCODE_LIBPATH($1)
-
-    _LT_CONFIG($1)
-  fi # test -n "$compiler"
-
-  GCC=$lt_save_GCC
-  CC=$lt_save_CC
-  CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
-
-AC_LANG_POP
-])# _LT_LANG_FC_CONFIG
-
-
-# _LT_LANG_GCJ_CONFIG([TAG])
-# --------------------------
-# Ensure that the configuration variables for the GNU Java Compiler compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_GCJ_CONFIG],
-[AC_REQUIRE([LT_PROG_GCJ])dnl
-AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=yes
-CC=${GCJ-"gcj"}
-CFLAGS=$GCJFLAGS
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_TAGVAR(reload_flag, $1)=$reload_flag
-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
-
-if test -n "$compiler"; then
-  _LT_COMPILER_NO_RTTI($1)
-  _LT_COMPILER_PIC($1)
-  _LT_COMPILER_C_O($1)
-  _LT_COMPILER_FILE_LOCKS($1)
-  _LT_LINKER_SHLIBS($1)
-  _LT_LINKER_HARDCODE_LIBPATH($1)
-
-  _LT_CONFIG($1)
-fi
-
-AC_LANG_RESTORE
-
-GCC=$lt_save_GCC
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_GCJ_CONFIG
-
-
-# _LT_LANG_RC_CONFIG([TAG])
-# -------------------------
-# Ensure that the configuration variables for the Windows resource compiler
-# are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
-m4_defun([_LT_LANG_RC_CONFIG],
-[AC_REQUIRE([LT_PROG_RC])dnl
-AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_TAG_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-lt_save_CFLAGS=$CFLAGS
-lt_save_GCC=$GCC
-GCC=
-CC=${RC-"windres"}
-CFLAGS=
-compiler=$CC
-_LT_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-if test -n "$compiler"; then
-  :
-  _LT_CONFIG($1)
-fi
-
-GCC=$lt_save_GCC
-AC_LANG_RESTORE
-CC=$lt_save_CC
-CFLAGS=$lt_save_CFLAGS
-])# _LT_LANG_RC_CONFIG
-
-
-# LT_PROG_GCJ
-# -----------
-AC_DEFUN([LT_PROG_GCJ],
-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
-  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
-    [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])[]dnl
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
-
-
-# LT_PROG_RC
-# ----------
-AC_DEFUN([LT_PROG_RC],
-[AC_CHECK_TOOL(RC, windres,)
-])
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_RC], [])
-
-
-# _LT_DECL_EGREP
-# --------------
-# If we don't have a new enough Autoconf to choose the best grep
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_EGREP],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_REQUIRE([AC_PROG_FGREP])dnl
-test -z "$GREP" && GREP=grep
-_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
-_LT_DECL([], [EGREP], [1], [An ERE matcher])
-_LT_DECL([], [FGREP], [1], [A literal string matcher])
-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
-AC_SUBST([GREP])
-])
-
-
-# _LT_DECL_OBJDUMP
-# --------------
-# If we don't have a new enough Autoconf to choose the best objdump
-# available, choose the one first in the user's PATH.
-m4_defun([_LT_DECL_OBJDUMP],
-[AC_CHECK_TOOL(OBJDUMP, objdump, false)
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
-AC_SUBST([OBJDUMP])
-])
-
-# _LT_DECL_DLLTOOL
-# ----------------
-# Ensure DLLTOOL variable is set.
-m4_defun([_LT_DECL_DLLTOOL],
-[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
-AC_SUBST([DLLTOOL])
-])
-
-# _LT_DECL_SED
-# ------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-m4_defun([_LT_DECL_SED],
-[AC_PROG_SED
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
-    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
-])# _LT_DECL_SED
-
-m4_ifndef([AC_PROG_SED], [
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-
-m4_defun([AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])#AC_PROG_SED
-])#m4_ifndef
-
-# Old name:
-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([LT_AC_PROG_SED], [])
-
-
-# _LT_CHECK_SHELL_FEATURES
-# ------------------------
-# Find out whether the shell is Bourne or XSI compatible,
-# or has some other useful features.
-m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
-  ;;
-esac
-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
-])# _LT_CHECK_SHELL_FEATURES
-
-
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-
-  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-
-  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-    func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
-# _LT_PATH_CONVERSION_FUNCTIONS
-# -----------------------------
-# Determine which file name conversion functions should be used by
-# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
-# for certain cross-compile configurations and native mingw.
-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_MSG_CHECKING([how to convert $build file names to $host format])
-AC_CACHE_VAL(lt_cv_to_host_file_cmd,
-[case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
-])
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
-         [0], [convert $build file names to $host format])dnl
-
-AC_MSG_CHECKING([how to convert $build file names to toolchain format])
-AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
-[#assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
-])
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
-         [0], [convert $build files to toolchain format])dnl
-])# _LT_PATH_CONVERSION_FUNCTIONS
-
-# Helper functions for option handling.                    -*- Autoconf -*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
-#   Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 7 ltoptions.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
-
-
-# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
-# ------------------------------------------
-m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
-
-
-# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
-# ---------------------------------------
-# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
-# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
-# saved as a flag.
-m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
-        _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
-])
-
-
-# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
-# ------------------------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
-
-
-# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
-# -------------------------------------------------------
-# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
-# are set.
-m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
-		      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
-])[]dnl
-])
-
-
-# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
-# ----------------------------------------
-# OPTION-LIST is a space-separated list of Libtool options associated
-# with MACRO-NAME.  If any OPTION has a matching handler declared with
-# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
-# the unknown option and exit.
-m4_defun([_LT_SET_OPTIONS],
-[# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
-    [_LT_SET_OPTION([$1], _LT_Option)])
-
-m4_if([$1],[LT_INIT],[
-  dnl
-  dnl Simply set some default values (i.e off) if boolean options were not
-  dnl specified:
-  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
-  ])
-  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
-  ])
-  dnl
-  dnl If no reference was made to various pairs of opposing options, then
-  dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
-  dnl archives by default:
-  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
-  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
-  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
-  ])
-])# _LT_SET_OPTIONS
-
-
-
-# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
-# -----------------------------------------
-m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
-
-
-# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
-# -----------------------------------------------
-m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
-])# LT_OPTION_DEFINE
-
-
-# dlopen
-# ------
-LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
-])
-
-AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([LT_INIT], [dlopen])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
-
-
-# win32-dll
-# ---------
-# Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([LT_INIT], [win32-dll],
-[enable_win32_dll=yes
-
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-esac
-
-test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [1], [Assembler program])dnl
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
-
-test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
-])# win32-dll
-
-AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-_LT_SET_OPTION([LT_INIT], [win32-dll])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
-
-
-# _LT_ENABLE_SHARED([DEFAULT])
-# ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_SHARED],
-[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([shared],
-    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
-
-    _LT_DECL([build_libtool_libs], [enable_shared], [0],
-	[Whether or not to build shared libraries])
-])# _LT_ENABLE_SHARED
-
-LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
-])
-
-AC_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([LT_INIT], [disable-shared])
-])
-
-AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
-AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AM_DISABLE_SHARED], [])
-
-
-
-# _LT_ENABLE_STATIC([DEFAULT])
-# ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_STATIC],
-[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([static],
-    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
-
-    _LT_DECL([build_old_libs], [enable_static], [0],
-	[Whether or not to build static libraries])
-])# _LT_ENABLE_STATIC
-
-LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
-
-# Old names:
-AC_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
-])
-
-AC_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([LT_INIT], [disable-static])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
-AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AM_DISABLE_STATIC], [])
-
-
-
-# _LT_ENABLE_FAST_INSTALL([DEFAULT])
-# ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-m4_define([_LT_ENABLE_FAST_INSTALL],
-[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
-AC_ARG_ENABLE([fast-install],
-    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
-
-_LT_DECL([fast_install], [enable_fast_install], [0],
-	 [Whether or not to optimize for fast installation])dnl
-])# _LT_ENABLE_FAST_INSTALL
-
-LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
-
-# Old names:
-AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
-dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
-
-
-# _LT_WITH_PIC([MODE])
-# --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
-# LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-m4_define([_LT_WITH_PIC],
-[AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
-
-_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
-])# _LT_WITH_PIC
-
-LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
-
-# Old name:
-AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([LT_INIT], [pic-only])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
-])
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
-
-
-m4_define([_LTDL_MODE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
-		 [m4_define([_LTDL_MODE], [nonrecursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [recursive],
-		 [m4_define([_LTDL_MODE], [recursive])])
-LT_OPTION_DEFINE([LTDL_INIT], [subproject],
-		 [m4_define([_LTDL_MODE], [subproject])])
-
-m4_define([_LTDL_TYPE], [])
-LT_OPTION_DEFINE([LTDL_INIT], [installable],
-		 [m4_define([_LTDL_TYPE], [installable])])
-LT_OPTION_DEFINE([LTDL_INIT], [convenience],
-		 [m4_define([_LTDL_TYPE], [convenience])])
-
-# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
-#
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 6 ltsugar.m4
-
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
-
-
-# lt_join(SEP, ARG1, [ARG2...])
-# -----------------------------
-# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
-# associated separator.
-# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
-# versions in m4sugar had bugs.
-m4_define([lt_join],
-[m4_if([$#], [1], [],
-       [$#], [2], [[$2]],
-       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
-m4_define([_lt_join],
-[m4_if([$#$2], [2], [],
-       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
-
-
-# lt_car(LIST)
-# lt_cdr(LIST)
-# ------------
-# Manipulate m4 lists.
-# These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
-m4_define([lt_car], [[$1]])
-m4_define([lt_cdr],
-[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
-       [$#], 1, [],
-       [m4_dquote(m4_shift($@))])])
-m4_define([lt_unquote], $1)
-
-
-# lt_append(MACRO-NAME, STRING, [SEPARATOR])
-# ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
-# Note that neither SEPARATOR nor STRING are expanded; they are appended
-# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
-# No SEPARATOR is output if MACRO-NAME was previously undefined (different
-# than defined and empty).
-#
-# This macro is needed until we can rely on Autoconf 2.62, since earlier
-# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
-m4_define([lt_append],
-[m4_define([$1],
-	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
-
-
-
-# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
-# ----------------------------------------------------------
-# Produce a SEP delimited list of all paired combinations of elements of
-# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
-# has the form PREFIXmINFIXSUFFIXn.
-# Needed until we can rely on m4_combine added in Autoconf 2.62.
-m4_define([lt_combine],
-[m4_if(m4_eval([$# > 3]), [1],
-       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
-[[m4_foreach([_Lt_prefix], [$2],
-	     [m4_foreach([_Lt_suffix],
-		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
-	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
 
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
-# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
-# -----------------------------------------------------------------------
-# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
-# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
-m4_define([lt_if_append_uniq],
-[m4_ifdef([$1],
-	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
-		 [lt_append([$1], [$2], [$3])$4],
-		 [$5])],
-	  [lt_append([$1], [$2], [$3])$4])])
-
-
-# lt_dict_add(DICT, KEY, VALUE)
-# -----------------------------
-m4_define([lt_dict_add],
-[m4_define([$1($2)], [$3])])
-
-
-# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
-# --------------------------------------------
-m4_define([lt_dict_add_subkey],
-[m4_define([$1($2:$3)], [$4])])
-
-
-# lt_dict_fetch(DICT, KEY, [SUBKEY])
-# ----------------------------------
-m4_define([lt_dict_fetch],
-[m4_ifval([$3],
-	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
-    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
-
-
-# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
-# -----------------------------------------------------------------
-m4_define([lt_if_dict_fetch],
-[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
-	[$5],
-    [$6])])
-
-
-# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
-# --------------------------------------------------------------
-m4_define([lt_dict_filter],
-[m4_if([$5], [], [],
-  [lt_join(m4_quote(m4_default([$4], [[, ]])),
-           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
-		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
-])
-
-# ltversion.m4 -- version numbers			-*- Autoconf -*-
-#
-#   Copyright (C) 2004 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# @configure_input@
-
-# serial 3293 ltversion.m4
-# This file is part of GNU Libtool
-
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
-
-AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
-_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
-_LT_DECL(, macro_revision, 0)
-])
-
-# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
-#
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-#   Written by Scott James Remnant, 2004.
-#
-# This file is free software; the Free Software Foundation gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-
-# serial 5 lt~obsolete.m4
-
-# These exist entirely to fool aclocal when bootstrapping libtool.
-#
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
-# which have later been changed to m4_define as they aren't part of the
-# exported API, or moved to Autoconf or Automake where they belong.
-#
-# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
-# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
-# using a macro with the same name in our local m4/libtool.m4 it'll
-# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
-# and doesn't know about Autoconf macros at all.)
-#
-# So we provide this file, which has a silly filename so it's always
-# included after everything else.  This provides aclocal with the
-# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
-# because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
-#
-# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
-# Yes, that means every name once taken will need to remain here until
-# we give up compatibility with versions before 1.7, at which point
-# we need to keep only those names which we still refer to.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# This is to help aclocal find these macros, as it can't see m4_define.
-AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
-m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
-m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
-m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
-m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
-m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
-m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
-m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
-m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
-m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
-m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
-m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
-m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
-m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
-m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
-m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
-m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
-m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
-m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
-m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
-m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
-m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
-m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
-m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
-m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
-m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
-m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
-m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
-m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
-m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
-m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
-m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
-m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
-m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
-m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
-m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
-m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
-m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
-m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
-m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
-m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
-m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
-m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
-m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
-m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
-m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
-m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
-m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
-m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
-m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
-m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
-m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
-m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
-m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
-m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
-m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -8478,10 +32,10 @@ m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.13'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.13.4], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -8497,22 +51,22 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.13.4])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -8531,7 +85,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -8557,22 +111,19 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
- ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -8591,16 +142,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 10
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -8610,7 +159,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -8623,12 +172,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -8636,8 +186,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -8676,16 +227,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -8694,16 +245,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -8751,7 +302,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -8761,34 +312,39 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -8801,7 +357,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -8813,21 +369,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -8845,7 +399,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
+# is enabled.  FIXME.  This creates each '.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -8853,29 +407,14 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
      [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
 ])
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 8
-
-# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 16
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
@@ -8891,7 +430,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -8920,31 +459,40 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
@@ -8955,28 +503,32 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
 			     [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-		  [_AM_DEPENDENCIES(CC)],
-		  [define([AC_PROG_CC],
-			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+		  [_AM_DEPENDENCIES([CC])],
+		  [m4_define([AC_PROG_CC],
+			     m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-		  [_AM_DEPENDENCIES(CXX)],
-		  [define([AC_PROG_CXX],
-			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+		  [_AM_DEPENDENCIES([CXX])],
+		  [m4_define([AC_PROG_CXX],
+			     m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-		  [_AM_DEPENDENCIES(OBJC)],
-		  [define([AC_PROG_OBJC],
-			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+		  [_AM_DEPENDENCIES([OBJC])],
+		  [m4_define([AC_PROG_OBJC],
+			     m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+		  [_AM_DEPENDENCIES([OBJCXX])],
+		  [m4_define([AC_PROG_OBJCXX],
+			     m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
@@ -9004,7 +556,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -9023,16 +575,14 @@ if test x"${install_sh}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -9046,21 +596,18 @@ fi
 rmdir .tst 2>/dev/null
 AC_SUBST([am__leading_dot])])
 
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1998-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_PROG_LEX
 # -----------
 # Autoconf leaves LEX=: if lex or flex can't be found.  Change that to a
 # "missing" invocation, for better error output.
 AC_DEFUN([AM_PROG_LEX],
-[AC_PREREQ(2.50)dnl
+[AC_PREREQ([2.50])dnl
 AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
 AC_REQUIRE([AC_PROG_LEX])dnl
 if test "$LEX" = :; then
@@ -9070,20 +617,17 @@ fi])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_MAINTAINER_MODE([DEFAULT-MODE])
 # ----------------------------------
 # Control maintainer-specific portions of Makefiles.
-# Default is to disable them, unless `enable' is passed literally.
-# For symmetry, `disable' may be passed as well.  Anyway, the user
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
 # can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
 [m4_case(m4_default([$1], [disable]),
@@ -9091,13 +635,14 @@ AC_DEFUN([AM_MAINTAINER_MODE],
        [disable], [m4_define([am_maintainer_other], [enable])],
        [m4_define([am_maintainer_other], [enable])
         m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
   AC_ARG_ENABLE([maintainer-mode],
-[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer],
-      [USE_MAINTAINER_MODE=$enableval],
-      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
   AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
@@ -9105,18 +650,14 @@ AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of
 ]
 )
 
-AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
-
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -9134,7 +675,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -9161,15 +702,12 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -9177,11 +715,10 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -9194,63 +731,64 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#  -*- Autoconf -*-
+# Obsolete and "removed" macros, that must however still report explicit
+# error messages when used, to smooth transition.
+#
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
+AC_DEFUN([AM_CONFIG_HEADER],
+[AC_DIAGNOSE([obsolete],
+['$0': this macro is obsolete.
+You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
+AC_CONFIG_HEADERS($@)])
+
+AC_DEFUN([AM_PROG_CC_STDC],
+[AC_PROG_CC
+am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
+AC_DIAGNOSE([obsolete],
+['$0': this macro is obsolete.
+You should simply use the 'AC][_PROG_CC' macro instead.
+Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
+but upon 'ac_cv_prog_cc_stdc'.])])
+
+AC_DEFUN([AM_C_PROTOTYPES],
+         [AC_FATAL([automatic de-ANSI-fication support has been removed])])
+AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
 
 # _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -9263,22 +801,16 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -9289,32 +821,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+	&& test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -9324,9 +864,85 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -9334,34 +950,32 @@ AC_MSG_RESULT(yes)])
 
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -9369,24 +983,22 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
 # AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -9396,77 +1008,121 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
-m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
+
+# We'll loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
+
+  [pax],
+    [],
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
 m4_include([acinclude.m4])
diff --git a/autobld/config.guess b/autobld/config.guess
index 40eaed4..b79252d 100755
--- a/autobld/config.guess
+++ b/autobld/config.guess
@@ -1,14 +1,12 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011 Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2011-05-11'
+timestamp='2013-06-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# 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
@@ -17,26 +15,22 @@ timestamp='2011-05-11'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches at gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 #
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
+# Originally written by Per Bothner.
 #
 # You can get the latest version of this script from:
 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
+
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,9 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -140,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	LIBC=gnu
+
+	eval $set_cc_for_build
+	cat <<-EOF > $dummy.c
+	#include <features.h>
+	#if defined(__UCLIBC__)
+	LIBC=uclibc
+	#elif defined(__dietlibc__)
+	LIBC=dietlibc
+	#else
+	LIBC=gnu
+	#endif
+	EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	;;
+esac
+
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
 	# switched to ELF, *-*-netbsd* would select the old
 	# object file format.  This provides both forward
@@ -202,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
 	exit ;;
+    *:Bitrig:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	exit ;;
     *:OpenBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -304,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
 	exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
 	echo arm-unknown-riscos
 	exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -792,21 +809,26 @@ EOF
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit ;;
     *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
 	    amd64)
 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	esac
 	exit ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
 	exit ;;
+    *:MINGW64*:*)
+	echo ${UNAME_MACHINE}-pc-mingw64
+	exit ;;
     *:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
     i*:windows32*:*)
 	# uname -m includes "-pc" on this system.
 	echo ${UNAME_MACHINE}-mingw32
@@ -852,15 +874,22 @@ EOF
 	exit ;;
     *:GNU:*:*)
 	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
 	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
@@ -872,56 +901,54 @@ EOF
 	  EV68*) UNAME_MACHINE=alphaev68 ;;
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	else
 	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 		| grep -q __ARM_PCS_VFP
 	    then
-		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
 	    else
-		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
 	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     cris:Linux:*:*)
-	echo cris-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
     crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
     frv:Linux:*:*)
-	echo frv-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     i*86:Linux:*:*)
-	LIBC=gnu
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
 	exit ;;
     ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
@@ -940,54 +967,63 @@ EOF
 	#endif
 EOF
 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
 	;;
+    or1k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-gnu
+	echo sparc-unknown-linux-${LIBC}
 	exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+	echo hppa64-unknown-linux-${LIBC}
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
-	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
-	  *)    echo hppa-unknown-linux-gnu ;;
+	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+	  *)    echo hppa-unknown-linux-${LIBC} ;;
 	esac
 	exit ;;
     ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
+	echo powerpc64-unknown-linux-${LIBC}
 	exit ;;
     ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
+	echo powerpc-unknown-linux-${LIBC}
+	exit ;;
+    ppc64le:Linux:*:*)
+	echo powerpc64le-unknown-linux-${LIBC}
+	exit ;;
+    ppcle:Linux:*:*)
+	echo powerpcle-unknown-linux-${LIBC}
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux
+	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
 	exit ;;
     sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-tilera-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-gnu
+	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
 	exit ;;
     x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1191,6 +1227,9 @@ EOF
     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
 	echo i586-pc-haiku
 	exit ;;
+    x86_64:Haiku:*:*)
+	echo x86_64-unknown-haiku
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1217,19 +1256,21 @@ EOF
 	exit ;;
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	case $UNAME_PROCESSOR in
-	    i386)
-		eval $set_cc_for_build
-		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		      grep IS_64BIT_ARCH >/dev/null
-		  then
-		      UNAME_PROCESSOR="x86_64"
-		  fi
-		fi ;;
-	    unknown) UNAME_PROCESSOR=powerpc ;;
-	esac
+	eval $set_cc_for_build
+	if test "$UNAME_PROCESSOR" = unknown ; then
+	    UNAME_PROCESSOR=powerpc
+	fi
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		case $UNAME_PROCESSOR in
+		    i386) UNAME_PROCESSOR=x86_64 ;;
+		    powerpc) UNAME_PROCESSOR=powerpc64 ;;
+		esac
+	    fi
+	fi
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1246,7 +1287,7 @@ EOF
     NEO-?:NONSTOP_KERNEL:*:*)
 	echo neo-tandem-nsk${UNAME_RELEASE}
 	exit ;;
-    NSE-?:NONSTOP_KERNEL:*:*)
+    NSE-*:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
     NSR-?:NONSTOP_KERNEL:*:*)
@@ -1315,11 +1356,11 @@ EOF
     i*86:AROS:*:*)
 	echo ${UNAME_MACHINE}-pc-aros
 	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
 esac
 
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
 eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
diff --git a/autobld/config.sub b/autobld/config.sub
index 30fdca8..61cb4bc 100755
--- a/autobld/config.sub
+++ b/autobld/config.sub
@@ -1,38 +1,31 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011 Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2011-03-23'
+timestamp='2013-10-01'
 
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file 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.
+# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches at gnu.org.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -75,9 +68,7 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -125,13 +116,17 @@ esac
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
   knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
   *)
     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
     if [ $basic_machine != $1 ]
@@ -154,7 +149,7 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze)
+	-apple | -axis | -knuth | -cray | -microblaze*)
 		os=
 		basic_machine=$1
 		;;
@@ -223,6 +218,12 @@ case $os in
 	-isc*)
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
 		;;
+	-lynx*178)
+		os=-lynxos178
+		;;
+	-lynx*5)
+		os=-lynxos5
+		;;
 	-lynx*)
 		os=-lynxos
 		;;
@@ -247,20 +248,28 @@ case $basic_machine in
 	# Some are omitted here because they have special meanings below.
 	1750a | 580 \
 	| a29k \
+	| aarch64 | aarch64_be \
 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
 	| am33_2.0 \
-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| arc | arceb \
+	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+	| avr | avr32 \
+	| be32 | be64 \
 	| bfin \
-	| c4x | clipper \
+	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
 	| fido | fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| k1om \
+	| le32 | le64 \
 	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep | metag \
+	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
@@ -278,20 +287,21 @@ case $basic_machine in
 	| mipsisa64r2 | mipsisa64r2el \
 	| mipsisa64sb1 | mipsisa64sb1el \
 	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipsr5900 | mipsr5900el \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
 	| moxie \
 	| mt \
 	| msp430 \
 	| nds32 | nds32le | nds32be \
-	| nios | nios2 \
+	| nios | nios2 | nios2eb | nios2el \
 	| ns16k | ns32k \
 	| open8 \
-	| or32 \
+	| or1k | or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle \
 	| pyramid \
-	| rx \
+	| rl78 | rx \
 	| score \
 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
@@ -300,7 +310,7 @@ case $basic_machine in
 	| spu \
 	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
 	| ubicom32 \
-	| v850 | v850e \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| we32k \
 	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
@@ -315,8 +325,7 @@ case $basic_machine in
 	c6x)
 		basic_machine=tic6x-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-		# Motorola 68HC11/12.
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
 		;;
@@ -329,7 +338,10 @@ case $basic_machine in
 	strongarm | thumb | xscale)
 		basic_machine=arm-unknown
 		;;
-
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
 	xscaleeb)
 		basic_machine=armeb-unknown
 		;;
@@ -352,25 +364,31 @@ case $basic_machine in
 	# Recognize the basic CPU types with company name.
 	580-* \
 	| a29k-* \
+	| aarch64-* | aarch64_be-* \
 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| clipper-* | craynv-* | cydra-* \
+	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| k1om-* \
+	| le32-* | le64-* \
 	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| microblaze-* | microblazeel-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
@@ -388,19 +406,20 @@ case $basic_machine in
 	| mipsisa64r2-* | mipsisa64r2el-* \
 	| mipsisa64sb1-* | mipsisa64sb1el-* \
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipsr5900-* | mipsr5900el-* \
 	| mipstx39-* | mipstx39el-* \
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
 	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* \
+	| nios-* | nios2-* | nios2eb-* | nios2el-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
 	| open8-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
-	| romp-* | rs6000-* | rx-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
@@ -408,10 +427,11 @@ case $basic_machine in
 	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
 	| tahoe-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile-* | tilegx-* \
+	| tile*-* \
 	| tron-* \
 	| ubicom32-* \
-	| v850-* | v850e-* | vax-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
@@ -711,7 +731,6 @@ case $basic_machine in
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
 		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
 	i*86v32)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv32
@@ -769,11 +788,15 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
-	microblaze)
+	microblaze*)
 		basic_machine=microblaze-xilinx
 		;;
+	mingw64)
+		basic_machine=x86_64-pc
+		os=-mingw64
+		;;
 	mingw32)
-		basic_machine=i386-pc
+		basic_machine=i686-pc
 		os=-mingw32
 		;;
 	mingw32ce)
@@ -808,10 +831,18 @@ case $basic_machine in
 	ms1-*)
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
+	msys)
+		basic_machine=i686-pc
+		os=-msys
+		;;
 	mvs)
 		basic_machine=i370-ibm
 		os=-mvs
 		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
@@ -992,7 +1023,11 @@ case $basic_machine in
 		basic_machine=i586-unknown
 		os=-pw32
 		;;
-	rdos)
+	rdos | rdos64)
+		basic_machine=x86_64-pc
+		os=-rdos
+		;;
+	rdos32)
 		basic_machine=i386-pc
 		os=-rdos
 		;;
@@ -1120,13 +1155,8 @@ case $basic_machine in
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	# This must be matched before tile*.
-	tilegx*)
-		basic_machine=tilegx-unknown
-		os=-linux-gnu
-		;;
 	tile*)
-		basic_machine=tile-unknown
+		basic_machine=$basic_machine-unknown
 		os=-linux-gnu
 		;;
 	tx39)
@@ -1324,21 +1354,21 @@ case $os in
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* \
+	      | -sym* | -kopensolaris* | -plan9* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
 	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -openbsd* | -solidbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* \
 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-uclibc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1470,9 +1500,6 @@ case $os in
 	-aros*)
 		os=-aros
 		;;
-	-kaos*)
-		os=-kaos
-		;;
 	-zvmoe)
 		os=-zvmoe
 		;;
@@ -1521,6 +1548,12 @@ case $basic_machine in
 	c4x-* | tic4x-*)
 		os=-coff
 		;;
+	c8051-*)
+		os=-elf
+		;;
+	hexagon-*)
+		os=-elf
+		;;
 	tic54x-*)
 		os=-coff
 		;;
@@ -1548,9 +1581,6 @@ case $basic_machine in
 		;;
 	m68000-sun)
 		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
 		;;
 	m68*-cisco)
 		os=-aout
@@ -1564,6 +1594,9 @@ case $basic_machine in
 	mips*-*)
 		os=-elf
 		;;
+	or1k-*)
+		os=-elf
+		;;
 	or32-*)
 		os=-coff
 		;;
diff --git a/autobld/depcomp b/autobld/depcomp
index df8eea7..bd0ac08 100755
--- a/autobld/depcomp
+++ b/autobld/depcomp
@@ -1,10 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-12-04.11; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011 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
@@ -44,7 +44,7 @@ Environment variables:
   object      Object file output by `PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake at gnu.org>.
@@ -90,10 +90,18 @@ if test "$depmode" = msvcmsys; then
    # This is just like msvisualcpp but w/o cygpath translation.
    # Just convert the backslash-escaped backslashes to single forward
    # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
+   cygpath_u='sed s,\\\\,/,g'
    depmode=msvisualcpp
 fi
 
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -158,10 +166,12 @@ gcc)
 ' < "$tmpdepfile" |
 ## Some versions of gcc put a space before the `:'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -405,6 +415,52 @@ tru64)
    rm -f "$tmpdepfile"
    ;;
 
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/	\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/	/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
   # dependency tracking mechanisms from slower ones.
@@ -503,7 +559,9 @@ makedepend)
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
   sed '1,2d' "$tmpdepfile" | tr ' ' '
 ' | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
diff --git a/autobld/install-sh b/autobld/install-sh
index 6781b98..a9244eb 100755
--- a/autobld/install-sh
+++ b/autobld/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -156,6 +156,10 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+	# Protect names problematic for `test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
 	shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -200,7 +208,11 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for `test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -385,7 +392,7 @@ do
 
       case $dstdir in
 	/*) prefix='/';;
-	-*) prefix='./';;
+	[-=\(\)!]*) prefix='./';;
 	*)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@ do
 
       for d
       do
-	test -z "$d" && continue
+	test X"$d" = X && continue
 
 	prefix=$prefix$d
 	if test -d "$prefix"; then
diff --git a/autobld/ltmain.sh b/autobld/ltmain.sh
index b4a3231..c2852d8 100644
--- a/autobld/ltmain.sh
+++ b/autobld/ltmain.sh
@@ -1,9 +1,9 @@
 
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -41,6 +41,7 @@
 #       --quiet, --silent    don't print informational messages
 #       --no-quiet, --no-silent
 #                            print informational messages (default)
+#       --no-warn            don't display warning messages
 #       --tag=TAG            use configuration variables from tag TAG
 #   -v, --verbose            print more informational messages than default
 #       --no-verbose         don't print the extra informational messages
@@ -69,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4 Debian-2.4-2ubuntu1
+#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -79,9 +80,9 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4 Debian-2.4-2ubuntu1"
+VERSION="2.4.2 Debian-2.4.2-1ubuntu1"
 TIMESTAMP=""
-package_revision=1.3293
+package_revision=1.3337
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@ progpath="$0"
 
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/bin/sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -387,7 +383,7 @@ case $progpath in
      ;;
   *)
      save_IFS="$IFS"
-     IFS=:
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS="$save_IFS"
        test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@ func_help ()
 	s*\$LTCFLAGS*'"$LTCFLAGS"'*
 	s*\$LD*'"$LD"'*
 	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
 	p
 	d
      }
@@ -1052,6 +1048,7 @@ opt_finish=false
 opt_help=false
 opt_help_all=false
 opt_silent=:
+opt_warning=:
 opt_verbose=:
 opt_silent=false
 opt_verbose=false
@@ -1120,6 +1117,10 @@ esac
 			opt_silent=false
 func_append preserve_args " $opt"
 			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
       --no-verbose)
 			opt_verbose=false
 func_append preserve_args " $opt"
@@ -2059,7 +2060,7 @@ func_mode_compile ()
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -3201,11 +3202,13 @@ func_mode_install ()
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -3470,7 +3473,7 @@ static const void *lt_preloaded_setup() {
 	  # linked before any other PIC object.  But we must not use
 	  # pic_flag when linking with -static.  The problem exists in
 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
@@ -3982,14 +3985,17 @@ func_exec_program_core ()
 # launches target application with the remaining arguments.
 func_exec_program ()
 {
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
   func_exec_program_core \${1+\"\$@\"}
 }
 
@@ -5057,9 +5063,15 @@ void lt_dump_script (FILE* f)
 {
 EOF
 	    func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
             cat <<"EOF"
 }
 EOF
@@ -5643,7 +5655,8 @@ func_mode_link ()
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
@@ -6150,7 +6163,8 @@ func_mode_link ()
 	lib=
 	found=no
 	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	  if test "$linkmode,$pass" = "prog,link"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
@@ -6834,7 +6848,7 @@ func_mode_link ()
 	         test "$hardcode_direct_absolute" = no; then
 		add="$dir/$linklib"
 	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
+		add_dir="-L$absdir"
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -7319,6 +7333,7 @@ func_mode_link ()
 	  # which has an extra 1 added just for fun
 	  #
 	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
 	  darwin|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
@@ -7438,7 +7453,7 @@ func_mode_link ()
 	  versuffix="$major.$revision"
 	  ;;
 
-	linux)
+	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
 	  versuffix="$major.$age.$revision"
@@ -8026,6 +8041,11 @@ EOF
 
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
 	if test "$hardcode_into_libs" = yes; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
@@ -8056,7 +8076,7 @@ EOF
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -8064,11 +8084,7 @@ EOF
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
 	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
 	    # We should set the runpath_var.
@@ -9158,6 +9174,8 @@ EOF
 	    esac
 	  done
 	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
 	eval cmds=\"$old_archive_cmds\"
 
 	func_len " $cmds"
@@ -9267,7 +9285,8 @@ EOF
 	      *.la)
 		func_basename "$deplib"
 		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		func_resolve_sysroot "$deplib"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
diff --git a/autobld/missing b/autobld/missing
index 28055d2..cdea514 100755
--- a/autobld/missing
+++ b/autobld/missing
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-06-26.16; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # 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
@@ -26,69 +25,40 @@ scriptversion=2009-04-28.21; # UTC
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake at gnu.org>."
     exit $?
@@ -100,272 +70,141 @@ Send bug reports to <bug-automake at gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-	   sed 's/\.am$/.in/' |
-	   while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo "#! /bin/sh"
-	echo "# Created by GNU Automake missing as a replacement of"
-	echo "#  $ $@"
-	echo "exit 0"
-	chmod +x $file
-	exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.y)
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.c
-	    fi
-	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" y.tab.h
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f y.tab.h; then
-	echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-	echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG="\${$#}"
-	case $LASTARG in
-	*.l)
-	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-	    if test -f "$SRCFILE"; then
-	         cp "$SRCFILE" lex.yy.c
-	    fi
-	  ;;
-	esac
-    fi
-    if test ! -f lex.yy.c; then
-	echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-	touch $file
-    else
-	test -z "$file" || exec >$file
-	echo ".ab help2man is required to generate this page"
-	exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-	/^@setfilename/{
-	  s/.* \([^ ]*\) *$/\1/
-	  p
-	  q
-	}' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
-
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
-    ;;
-esac
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-exit 0
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'automa4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
+    ;;
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/autobld/test-driver b/autobld/test-driver
new file mode 100755
index 0000000..32bf39e
--- /dev/null
+++ b/autobld/test-driver
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2013 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 2, 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 <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='' # Red.
+  grn='' # Green.
+  lgn='' # Light green.
+  blu='' # Blue.
+  mgn='' # Magenta.
+  std=''     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/autobld/texinfo.tex b/autobld/texinfo.tex
index 9140826..e7c10c2 100644
--- a/autobld/texinfo.tex
+++ b/autobld/texinfo.tex
@@ -3,11 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2009-08-14.15}
+\def\texinfoversion{2013-09-10.16}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software: you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -24,13 +24,14 @@
 %
 % As a special exception, when this file is read by TeX when processing
 % a Texinfo source document, you may use the result without
-% restriction.  (This has been our intent since Texinfo was invented.)
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
 %
 % Please try the latest version of texinfo.tex before submitting bug
 % reports; you can get the latest version from:
-%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-%   ftp://tug.org/tex/texinfo.tex
-%     (and all CTAN mirrors, see http://www.ctan.org).
+%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
 % The texinfo.tex in any given distribution could well be out
 % of date, so if that's what you're using, please check.
 %
@@ -65,7 +66,6 @@
 \everyjob{\message{[Texinfo version \texinfoversion]}%
   \catcode`+=\active \catcode`\_=\active}
 
-
 \chardef\other=12
 
 % We never want plain's \outer definition of \+ in Texinfo.
@@ -93,14 +93,13 @@
 \let\ptexnewwrite\newwrite
 \let\ptexnoindent=\noindent
 \let\ptexplus=+
+\let\ptexraggedright=\raggedright
 \let\ptexrbrace=\}
 \let\ptexslash=\/
 \let\ptexstar=\*
 \let\ptext=\t
 \let\ptextop=\top
-{\catcode`\'=\active
-\global\let\ptexquoteright'}% Math-mode def from plain.tex.
-\let\ptexraggedright=\raggedright
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
 
 % If this character appears in an error message or help string, it
 % starts a new line in the output.
@@ -118,10 +117,11 @@
 % Set up fixed words for English if not already set.
 \ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
 \ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined     \gdef\putworderror{error}\fi
 \ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
 \ifx\putwordin\undefined        \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
 \ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
 \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
 \ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
@@ -160,15 +160,18 @@
 \def\spaceisspace{\catcode`\ =\spacecat}
 
 % sometimes characters are active, so we need control sequences.
+\chardef\ampChar   = `\&
 \chardef\colonChar = `\:
 \chardef\commaChar = `\,
 \chardef\dashChar  = `\-
 \chardef\dotChar   = `\.
 \chardef\exclamChar= `\!
+\chardef\hashChar  = `\#
 \chardef\lquoteChar= `\`
 \chardef\questChar = `\?
 \chardef\rquoteChar= `\'
 \chardef\semiChar  = `\;
+\chardef\slashChar = `\/
 \chardef\underChar = `\_
 
 % Ignore a token.
@@ -199,36 +202,7 @@
 % that mark overfull boxes (in case you have decided
 % that the text looks ok even though it passes the margin).
 %
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line.  It should
-% surround any changed text.  This approach does *not* work if the
-% change spans more than two lines of output.  To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
-  % \vadjust can only be used in horizontal mode.
-  \leavevmode
-  %
-  % Append this vertical mode material after the current line in the output.
-  \vadjust{%
-    % We want to insert a rule with the height and depth of the current
-    % leading; that is exactly what \strutbox is supposed to record.
-    \vskip-\baselineskip
-    %
-    % \vadjust-items are inserted at the left edge of the type.  So
-    % the \llap here moves out into the left-hand margin.
-    \llap{%
-      %
-      % For a thicker or thinner bar, change the `1pt'.
-      \vrule height\baselineskip width1pt
-      %
-      % This is the space between the bar and the text.
-      \hskip 12pt
-    }%
-  }%
-}
+\def\finalout{\overfullrule=0pt }
 
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
@@ -246,7 +220,7 @@
   \tracingmacros2
   \tracingrestores1
   \showboxbreadth\maxdimen \showboxdepth\maxdimen
-  \ifx\eTeXversion\undefined\else % etex gives us more logging
+  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
     \tracingscantokens1
     \tracingifs1
     \tracinggroups1
@@ -257,6 +231,13 @@
   \errorcontextlines16
 }%
 
+% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+% 
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
 % add check for \lastpenalty to plain's definitions.  If the last thing
 % we did was a \nobreak, we don't want to insert more space.
 %
@@ -267,7 +248,6 @@
 \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
   \removelastskip\penalty-200\bigskip\fi\fi}
 
-% For @cropmarks command.
 % Do @cropmarks to get crop marks.
 %
 \newif\ifcropmarks
@@ -301,9 +281,9 @@
   \toks6=\expandafter{\prevsectiondefs}%
   \toks8=\expandafter{\lastcolordefs}%
   \mark{%
-                   \the\toks0 \the\toks2
-      \noexpand\or \the\toks4 \the\toks6
-    \noexpand\else \the\toks8
+                   \the\toks0 \the\toks2  % 0: top marks (\last...)
+      \noexpand\or \the\toks4 \the\toks6  % 1: bottom marks (default, \prev...)
+    \noexpand\else \the\toks8             % 2: color marks
   }%
 }
 % \topmark doesn't work for the very first chapter (after the title
@@ -342,10 +322,13 @@
   %
   % Do this outside of the \shipout so @code etc. will be expanded in
   % the headline as they should be, not taken literally (outputting ''code).
+  \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
+  %
   \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+  %
   \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
-  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
   %
   {%
     % Have to do this stuff outside the \shipout because we want it to
@@ -577,7 +560,7 @@
 }
 \def\inenvironment#1{%
   \ifx#1\empty
-    out of any environment%
+    outside of any environment%
   \else
     in environment \expandafter\string#1%
   \fi
@@ -589,7 +572,7 @@
 \parseargdef\end{%
   \if 1\csname iscond.#1\endcsname
   \else
-    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    % The general wording of \badenverr may not be ideal.
     \expandafter\checkenv\csname#1\endcsname
     \csname E#1\endcsname
     \endgroup
@@ -599,85 +582,6 @@
 \newhelp\EMsimple{Press RETURN to continue.}
 
 
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
-  % Definitions to produce \{ and \} commands for indices,
-  % and @{ and @} for the aux/toc files.
-  \catcode`\{ = \other \catcode`\} = \other
-  \catcode`\[ = 1 \catcode`\] = 2
-  \catcode`\! = 0 \catcode`\\ = \other
-  !gdef!lbracecmd[\{]%
-  !gdef!rbracecmd[\}]%
-  !gdef!lbraceatcmd[@{]%
-  !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
-  \def\temp{#1}%
-  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
-  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
-  \else \errmessage{@dotless can be used only with i or j}%
-  \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence.  (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo.  Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
-  L\kern-.36em
-  {\setbox0=\hbox{T}%
-   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
-  \kern-.15em
-  \TeX
-}
-
 % Be sure we're in horizontal mode when doing a tie, since we make space
 % equivalent to this in @example-like environments. Otherwise, a space
 % at the beginning of a line will start with \penalty -- and
@@ -694,7 +598,7 @@
 \def\:{\spacefactor=1000 }
 
 % @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
 
 % @/ allows a line break.
 \let\/=\allowbreak
@@ -719,7 +623,7 @@
   \else\ifx\temp\offword \plainnonfrenchspacing
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
   \fi\fi
 }
 
@@ -801,15 +705,6 @@ where each line of input produces a line of output.}
 
 \newdimen\mil  \mil=0.001in
 
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
 \parseargdef\need{%
   % Ensure vertical mode, so we don't make a big box in the middle of a
   % paragraph.
@@ -873,7 +768,7 @@ where each line of input produces a line of output.}
 
 % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
 % paragraph.  For more general purposes, use the \margin insertion
-% class.  WHICH is `l' or `r'.
+% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
 %
 \newskip\inmarginspacing \inmarginspacing=1cm
 \def\strutdepth{\dp\strutbox}
@@ -920,6 +815,36 @@ where each line of input produces a line of output.}
   \temp
 }
 
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).  This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
 % @include FILE -- \input text of FILE.
 %
 \def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -930,6 +855,7 @@ where each line of input produces a line of output.}
     \makevalueexpandable  % we want to expand any @value in FILE.
     \turnoffactive        % and allow special characters in the expansion
     \indexnofonts         % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @include of #1^^J}%
     \edef\temp{\noexpand\input #1 }%
     %
     % This trickery is to read FILE outside of a group, in case it makes
@@ -965,7 +891,7 @@ where each line of input produces a line of output.}
 \def\popthisfilestack{\errthisfilestackempty}
 \def\errthisfilestackempty{\errmessage{Internal error:
   the stack of filenames is empty.}}
-
+%
 \def\thisfile{}
 
 % @center line
@@ -973,36 +899,46 @@ where each line of input produces a line of output.}
 %
 \parseargdef\center{%
   \ifhmode
-    \let\next\centerH
+    \let\centersub\centerH
   \else
-    \let\next\centerV
+    \let\centersub\centerV
   \fi
-  \next{\hfil \ignorespaces#1\unskip \hfil}%
+  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+  \let\centersub\relax % don't let the definition persist, just in case
 }
-\def\centerH#1{%
-  {%
-    \hfil\break
-    \advance\hsize by -\leftskip
-    \advance\hsize by -\rightskip
-    \line{#1}%
-    \break
-  }%
+\def\centerH#1{{%
+  \hfil\break
+  \advance\hsize by -\leftskip
+  \advance\hsize by -\rightskip
+  \line{#1}%
+  \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+  % The idea here is the same as in \startdefun, \cartouche, etc.: if
+  % @center is the first thing after a section heading, we need to wipe
+  % out the negative parskip inserted by \sectionheading, but still
+  % prevent a page break here.
+  \centerpenalty = \lastpenalty
+  \ifnum\centerpenalty>10000 \vskip\parskip \fi
+  \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+  \line{\kern\leftskip #1\kern\rightskip}%
 }
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
 
 % @sp n   outputs n lines of vertical space
-
+%
 \parseargdef\sp{\vskip #1\baselineskip}
 
 % @comment ...line which is ignored...
 % @c is the same as @comment
 % @ignore ... @end ignore  is another way to write a comment
-
+%
 \def\comment{\begingroup \catcode`\^^M=\other%
 \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
 \commentxxx}
 {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
+%
 \let\c=\comment
 
 % @paragraphindent NCHARS
@@ -1095,109 +1031,6 @@ where each line of input produces a line of output.}
 }
 
 
-% @asis just yields its argument.  Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
-  \catcode`\_ = \active
-  \gdef\mathunderscore{%
-    \catcode`\_=\active
-    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-  }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care.  Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  % make the texinfo accent commands work in math mode
-  \let\"=\ddot
-  \let\'=\acute
-  \let\==\bar
-  \let\^=\hat
-  \let\`=\grave
-  \let\u=\breve
-  \let\v=\check
-  \let\~=\tilde
-  \let\dotaccent=\dot
-  $\finishmath
-}
-\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
-  \catcode`^ = \active
-  \catcode`< = \active
-  \catcode`> = \active
-  \catcode`+ = \active
-  \catcode`' = \active
-  \gdef\mathactive{%
-    \let^ = \ptexhat
-    \let< = \ptexless
-    \let> = \ptexgtr
-    \let+ = \ptexplus
-    \let' = \ptexquoteright
-  }
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em.  So do
-% whichever is larger.
-%
-\def\dots{%
-  \leavevmode
-  \setbox0=\hbox{...}% get width of three periods
-  \ifdim\wd0 > 1.5em
-    \dimen0 = \wd0
-  \else
-    \dimen0 = 1.5em
-  \fi
-  \hbox to \dimen0{%
-    \hskip 0pt plus.25fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus1fil
-    .\hskip 0pt plus.5fil
-  }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
-  \dots
-  \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
 % @refill is a no-op.
 \let\refill=\relax
 
@@ -1262,9 +1095,8 @@ where each line of input produces a line of output.}
 \newif\ifpdfmakepagedest
 
 % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set).  So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set).  So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
 \else
   \ifx\pdfoutput\relax
   \else
@@ -1279,50 +1111,24 @@ where each line of input produces a line of output.}
 % for display in the outlines, and in other places.  Thus, we have to
 % double any backslashes.  Otherwise, a name like "\node" will be
 % interpreted as a newline (\n), followed by o, d, e.  Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
-
-% double active backslashes.
-%
-{\catcode`\@=0 \catcode`\\=\active
- @gdef at activebackslashdouble{%
-   @catcode`@\=@active
-   @let\=@doublebackslash}
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters.  hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens, with minor
-% changes for Texinfo.  It is included here under the GPL by permission
-% from the author, Heiko Oberdiek.
-%
-% #1 is the tokens to replace.
-% #2 is the replacement.
-% #3 is the control sequence with the string.
-%
-\def\HyPsdSubst#1#2#3{%
-  \def\HyPsdReplace##1#1##2\END{%
-    ##1%
-    \ifx\\##2\\%
-    \else
-      #2%
-      \HyReturnAfterFi{%
-        \HyPsdReplace##2\END
-      }%
-    \fi
-  }%
-  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
-  \xdef#1{#1}% redefine it as its expansion; the definition is simply
-             % \lastnode when called from \setref -> \pdfmkdest.
-  \HyPsdSubst{(}{\realbackslash(}{#1}%
-  \HyPsdSubst{)}{\realbackslash)}{#1}%
+% 
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages.  The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+  \ifx\pdfescapestring\thisisundefined
+    % No primitive available; should we give a warning or log?
+    % Many times it won't matter.
+  \else
+    % The expandable \pdfescapestring primitive escapes parentheses,
+    % backslashes, and other special chars.
+    \xdef#1{\pdfescapestring{#1}}%
+  \fi
 }
 
 \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
@@ -1381,32 +1187,34 @@ output) for that.)}
   %
   % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
   \def\dopdfimage#1#2#3{%
-    \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
-    \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
     %
-    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
-    % others).  Let's try in that order.
+    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+    % others).  Let's try in that order, PDF first since if
+    % someone has a scalable image, presumably better to use that than a
+    % bitmap.
     \let\pdfimgext=\empty
     \begingroup
-      \openin 1 #1.png \ifeof 1
-        \openin 1 #1.jpg \ifeof 1
-          \openin 1 #1.jpeg \ifeof 1
-            \openin 1 #1.JPG \ifeof 1
-              \openin 1 #1.pdf \ifeof 1
-                \openin 1 #1.PDF \ifeof 1
+      \openin 1 #1.pdf \ifeof 1
+        \openin 1 #1.PDF \ifeof 1
+          \openin 1 #1.png \ifeof 1
+            \openin 1 #1.jpg \ifeof 1
+              \openin 1 #1.jpeg \ifeof 1
+                \openin 1 #1.JPG \ifeof 1
                   \errhelp = \nopdfimagehelp
                   \errmessage{Could not find image file #1 for pdf}%
-                \else \gdef\pdfimgext{PDF}%
+                \else \gdef\pdfimgext{JPG}%
                 \fi
-              \else \gdef\pdfimgext{pdf}%
+              \else \gdef\pdfimgext{jpeg}%
               \fi
-            \else \gdef\pdfimgext{JPG}%
+            \else \gdef\pdfimgext{jpg}%
             \fi
-          \else \gdef\pdfimgext{jpeg}%
+          \else \gdef\pdfimgext{png}%
           \fi
-        \else \gdef\pdfimgext{jpg}%
+        \else \gdef\pdfimgext{PDF}%
         \fi
-      \else \gdef\pdfimgext{png}%
+      \else \gdef\pdfimgext{pdf}%
       \fi
       \closein 1
     \endgroup
@@ -1418,8 +1226,8 @@ output) for that.)}
     \else
       \immediate\pdfximage
     \fi
-      \ifdim \wd0 >0pt width \imagewidth \fi
-      \ifdim \wd2 >0pt height \imageheight \fi
+      \ifdim \wd0 >0pt width \pdfimagewidth \fi
+      \ifdim \wd2 >0pt height \pdfimageheight \fi
       \ifnum\pdftexversion<13
          #1.\pdfimgext
        \else
@@ -1434,10 +1242,9 @@ output) for that.)}
     % such as \, aren't expanded when present in a section title.
     \indexnofonts
     \turnoffactive
-    \activebackslashdouble
     \makevalueexpandable
     \def\pdfdestname{#1}%
-    \backslashparens\pdfdestname
+    \txiescapepdf\pdfdestname
     \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
   }}
   %
@@ -1469,29 +1276,24 @@ output) for that.)}
     % page number.  We could generate a destination for the section
     % text in the case where a section has no node, but it doesn't
     % seem worth the trouble, since most documents are normally structured.
-    \def\pdfoutlinedest{#3}%
+    \edef\pdfoutlinedest{#3}%
     \ifx\pdfoutlinedest\empty
       \def\pdfoutlinedest{#4}%
     \else
-      % Doubled backslashes in the name.
-      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
-       \backslashparens\pdfoutlinedest}%
+      \txiescapepdf\pdfoutlinedest
     \fi
     %
-    % Also double the backslashes in the display string.
-    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
-     \backslashparens\pdfoutlinetext}%
+    % Also escape PDF chars in the display string.
+    \edef\pdfoutlinetext{#1}%
+    \txiescapepdf\pdfoutlinetext
     %
     \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
   }
   %
   \def\pdfmakeoutlines{%
     \begingroup
-      % Thanh's hack / proper braces in bookmarks
-      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
-      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
-      %
       % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\partentry##1##2##3##4{}% ignore parts in the outlines
       \def\numchapentry##1##2##3##4{%
 	\def\thischapnum{##2}%
 	\def\thissecnum{0}%
@@ -1545,25 +1347,41 @@ output) for that.)}
       % Latin 2 (0xea) gets translated to a | character.  Info from
       % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
       %
-      % xx to do this right, we have to translate 8-bit characters to
-      % their "best" equivalent, based on the @documentencoding.  Right
-      % now, I guess we'll just let the pdf reader have its way.
+      % TODO this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Too
+      % much work for too little return.  Just use the ASCII equivalents
+      % we use for the index sort strings.
+      % 
       \indexnofonts
       \setupdatafile
+      % We can have normal brace characters in the PDF outlines, unlike
+      % Texinfo index files.  So set that up.
+      \def\{{\lbracecharliteral}%
+      \def\}{\rbracecharliteral}%
       \catcode`\\=\active \otherbackslash
       \input \tocreadfilename
     \endgroup
   }
+  {\catcode`[=1 \catcode`]=2
+   \catcode`{=\other \catcode`}=\other
+   \gdef\lbracecharliteral[{]%
+   \gdef\rbracecharliteral[}]%
+  ]
   %
   \def\skipspaces#1{\def\PP{#1}\def\D{|}%
     \ifx\PP\D\let\nextsp\relax
     \else\let\nextsp\skipspaces
-      \ifx\p\space\else\addtokens{\filename}{\PP}%
-        \advance\filenamelength by 1
-      \fi
+      \addtokens{\filename}{\PP}%
+      \advance\filenamelength by 1
     \fi
     \nextsp}
-  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \def\getfilename#1{%
+    \filenamelength=0
+    % If we don't expand the argument now, \skipspaces will get
+    % snagged on things like "@value{foo}".
+    \edef\temp{#1}%
+    \expandafter\skipspaces\temp|\relax
+  }
   \ifnum\pdftexversion < 14
     \let \startlink \pdfannotlink
   \else
@@ -1660,9 +1478,6 @@ output) for that.)}
 \def\ttsl{\setfontstyle{ttsl}}
 
 
-% Default leading.
-\newdimen\textleading  \textleading = 13.2pt
-
 % Set the baselineskip to #1, and the lineskip and strut size
 % correspondingly.  There is no deep meaning behind these magic numbers
 % used as factors; they just match (closely enough) what Knuth defined.
@@ -1674,6 +1489,7 @@ output) for that.)}
 % can get a sort of poor man's double spacing by redefining this.
 \def\baselinefactor{1}
 %
+\newdimen\textleading
 \def\setleading#1{%
   \dimen0 = #1\relax
   \normalbaselineskip = \baselinefactor\dimen0
@@ -1695,7 +1511,7 @@ output) for that.)}
 % if we are producing pdf, and we have \pdffontattr, then define cmaps.
 % (\pdffontattr was introduced many years ago, but people still run
 % older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
+\ifpdf \ifx\pdffontattr\thisisundefined \else
   \begingroup
     \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
     \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
@@ -1946,28 +1762,34 @@ end
 \fi\fi
 
 
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
+% Set the font macro #1 to the font named \fontprefix#2.
 % #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
-% empty to omit).
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
 \def\setfont#1#2#3#4#5{%
   \font#1=\fontprefix#2#3 scaled #4
   \csname cmap#5\endcsname#1%
 }
 % This is what gets called when #5 of \setfont is empty.
 \let\cmap\gobble
-% emacs-page end of cmaps
+%
+% (end of cmaps)
 
 % Use cm as the default font prefix.
 % To specify the font prefix, you must define \fontprefix
 % before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
 \def\fontprefix{cm}
 \fi
 % Support font families that don't use the same naming scheme as CM.
 \def\rmshape{r}
-\def\rmbshape{bx}               %where the normal face is bold
+\def\rmbshape{bx}               % where the normal face is bold
 \def\bfshape{b}
 \def\bxshape{bx}
 \def\ttshape{tt}
@@ -1982,8 +1804,7 @@ end
 \def\scshape{csc}
 \def\scbshape{csc}
 
-% Definitions for a main text size of 11pt.  This is the default in
-% Texinfo.
+% Definitions for a main text size of 11pt.  (The default in Texinfo.)
 %
 \def\definetextfontsizexi{%
 % Text fonts (11.2pt, magstep1).
@@ -2105,10 +1926,10 @@ end
 \font\reducedsy=cmsy10
 \def\reducedecsize{1000}
 
-% reset the current fonts
-\textfonts
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts            % reset the current fonts
 \rm
-} % end of 11pt text font size definitions
+} % end of 11pt text font size definitions, \definetextfontsizexi
 
 
 % Definitions to make the main text be 10pt Computer Modern, with
@@ -2236,25 +2057,24 @@ end
 \font\reducedsy=cmsy9
 \def\reducedecsize{0900}
 
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
+\divide\parskip by 2  % reduce space between paragraphs
+\textleading = 12pt   % line spacing for 10pt CM
+\textfonts            % reset the current fonts
 \rm
-} % end of 10pt text font size definitions
+} % end of 10pt text font size definitions, \definetextfontsizex
 
 
 % We provide the user-level command
 %   @fonttextsize 10
 % (or 11) to redefine the text font size.  pt is assumed.
 %
-\def\xword{10}
 \def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
 %
 \parseargdef\fonttextsize{%
   \def\textsizearg{#1}%
-  \wlog{doing @fonttextsize \textsizearg}%
+  %\wlog{doing @fonttextsize \textsizearg}%
   %
   % Set \globaldefs so that documents can use this inside @tex, since
   % makeinfo 4.8 does not support it, but we need it nonetheless.
@@ -2308,7 +2128,7 @@ end
   \let\tenttsl=\titlettsl
   \def\curfontsize{title}%
   \def\lsize{chap}\def\lllsize{subsec}%
-  \resetmathfonts \setleading{25pt}}
+  \resetmathfonts \setleading{27pt}}
 \def\titlefont#1{{\titlefonts\rmisbold #1}}
 \def\chapfonts{%
   \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
@@ -2436,12 +2256,14 @@ end
 
 % Markup style setup for left and right quotes.
 \defmarkupstylesetup\markupsetuplq{%
-  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
+  \expandafter\let\expandafter \temp
+    \csname markupsetuplq\currentmarkupstyle\endcsname
   \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
 }
 
 \defmarkupstylesetup\markupsetuprq{%
-  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
+  \expandafter\let\expandafter \temp
+    \csname markupsetuprq\currentmarkupstyle\endcsname
   \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
 }
 
@@ -2454,28 +2276,31 @@ end
 
 \gdef\markupsetcodequoteleft{\let`\codequoteleft}
 \gdef\markupsetcodequoteright{\let'\codequoteright}
-
-\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
 }
 
 \let\markupsetuplqcode \markupsetcodequoteleft
 \let\markupsetuprqcode \markupsetcodequoteright
+%
 \let\markupsetuplqexample \markupsetcodequoteleft
 \let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqkbd     \markupsetcodequoteleft
+\let\markupsetuprqkbd     \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
 \let\markupsetuplqverb \markupsetcodequoteleft
 \let\markupsetuprqverb \markupsetcodequoteright
+%
 \let\markupsetuplqverbatim \markupsetcodequoteleft
 \let\markupsetuprqverbatim \markupsetcodequoteright
 
-\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
-\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
-
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report.  xpdf does work with the
-% regular 0x27.
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report.  xpdf does work with the regular 0x27.
 %
 \def\codequoteright{%
   \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
@@ -2499,33 +2324,85 @@ end
   \else \char'22 \fi
 }
 
+% Commands to set the quote options.
+% 
+\parseargdef\codequoteundirected{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequoteundirected\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+  \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = t%
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxicodequotebacktick\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+  \fi\fi
+}
+
 % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
 \def\noligaturesquoteleft{\relax\lq}
 
 % Count depth in font-changes, for error checks
 \newcount\fontdepth \fontdepth=0
 
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
+% Font commands.
+
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+  \ifusingtt 
+    {{\ttsl #2}\let\next=\relax}%
+    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+  \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
 
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
-                    \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+  \ifx\next,%
+  \else\ifx\next-%
+  \else\ifx\next.%
+  \else\ifx\next\.%
+  \else\ifx\next\comma%
+  \else\ptexslash
+  \fi\fi\fi\fi\fi
+  \aftersmartic
+}
 
-% like \smartslanted except unconditionally uses \ttsl.
-% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
+\def\ttslanted#1{{\ttsl #1}}
 
 % @cite is like \smartslanted except unconditionally use \sl.  We never want
 % ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\def\aftersmartic{}
+\def\var#1{%
+  \let\saveaftersmartic = \aftersmartic
+  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+  \smartslanted{#1}%
+}
 
 \let\i=\smartitalic
 \let\slanted=\smartslanted
-\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
@@ -2575,34 +2452,12 @@ end
 % @samp.
 \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
 
-% definition of @key that produces a lozenge.  Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-%    \vbox{\hrule\kern-0.4pt
-%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-%    \kern-0.4pt\hrule}%
-%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
 
-% definition of @key with no lozenge.  If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle.  But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
-  \nohyphenation
-  \ifmonospace\else\tt\fi
-  #1}\null}
-
-% ctrl is no longer a Texinfo command.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
 \def\tclose#1{%
   {%
     % Change normal interword space to be same as for the current font.
@@ -2621,18 +2476,18 @@ end
     \plainfrenchspacing
     #1%
   }%
-  \null
+  \null % reset spacefactor to 1000
 }
 
 % We *must* turn on hyphenation at `-' and `_' in @code.
+% (But see \codedashfinish below.)
 % Otherwise, it is too hard to avoid overfull hboxes
 % in the Emacs manual, the Library manual, etc.
-
+%
 % Unfortunately, TeX uses one parameter (\hyphenchar) to control
 % both hyphenation at - and hyphenation within words.
 % We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-%  -- rms.
+% and arrange explicitly to hyphenate at a dash. -- rms.
 {
   \catcode`\-=\active \catcode`\_=\active
   \catcode`\'=\active \catcode`\`=\active
@@ -2646,15 +2501,38 @@ end
      \let-\codedash
      \let_\codeunder
     \else
-     \let-\realdash
+     \let-\normaldash
      \let_\realunder
     \fi
+    % Given -foo (with a single dash), we do not want to allow a break
+    % after the hyphen.
+    \global\let\codedashprev=\codedash
+    %
     \codex
   }
+  %
+  \gdef\codedash{\futurelet\next\codedashfinish}
+  \gdef\codedashfinish{%
+    \normaldash % always output the dash character itself.
+    % 
+    % Now, output a discretionary to allow a line break, unless
+    % (a) the next character is a -, or
+    % (b) the preceding character is a -.
+    % E.g., given --posix, we do not want to allow a break after either -.
+    % Given --foo-bar, we do want to allow a break between the - and the b.
+    \ifx\next\codedash \else
+      \ifx\codedashprev\codedash 
+      \else \discretionary{}{}{}\fi
+    \fi
+    % we need the space after the = for the case when \next itself is a
+    % space token; it would get swallowed otherwise.  As in @code{- a}.
+    \global\let\codedashprev= \next
+  }
 }
+\def\normaldash{-}
+%
+\def\codex #1{\tclose{#1}\endgroup}
 
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
 \def\codeunder{%
   % this is all so @math{@code{var_name}+1} can work.  In math mode, _
   % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
@@ -2666,12 +2544,11 @@ end
              \discretionary{}{}{}}%
             {\_}%
 }
-\def\codex #1{\tclose{#1}\endgroup}
 
 % An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__.  This is undesirable in
-% some manuals, especially if they don't have long identifiers in
-% general.  @allowcodebreaks provides a way to control this.
+% each of the four underscores in __typeof__.  This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
 %
 \newif\ifallowcodebreaks  \allowcodebreakstrue
 
@@ -2686,63 +2563,25 @@ end
     \allowcodebreaksfalse
   \else
     \errhelp = \EMsimple
-    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
   \fi\fi
 }
 
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-%   `example' (@kbd uses ttsl only inside of @example and friends),
-%   or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\worddistinct
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
-  \else\ifx\txiarg\wordexample
-    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
-  \else\ifx\txiarg\wordcode
-    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
-  \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
-
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
 \let\command=\code
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow   (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
+\let\env=\code
+\let\file=\code
+\let\option=\code
 
 % @uref (abbreviation for `urlref') takes an optional (comma-separated)
 % second argument specifying the text to display and an optional third
 % arg as text to display instead of (rather than in addition to) the url
-% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself.  First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
   \unsepspaces
   \pdfurl{#1}%
   \setbox0 = \hbox{\ignorespaces #3}%
@@ -2763,6 +2602,103 @@ end
   \endlink
 \endgroup}
 
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \urefcode{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+  \catcode\ampChar=\active   \catcode\dotChar=\active
+  \catcode\hashChar=\active  \catcode\questChar=\active
+  \catcode\slashChar=\active
+}
+{
+  \urefcatcodes
+  %
+  \global\def\urefcode{\begingroup
+    \setupmarkupstyle{code}%
+    \urefcatcodes
+    \let&\urefcodeamp
+    \let.\urefcodedot
+    \let#\urefcodehash
+    \let?\urefcodequest
+    \let/\urefcodeslash
+    \codex
+  }
+  %
+  % By default, they are just regular characters.
+  \global\def&{\normalamp}
+  \global\def.{\normaldot}
+  \global\def#{\normalhash}
+  \global\def?{\normalquest}
+  \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's.  The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+  \catcode`\/=\active
+  \global\def\urefcodeslashfinish{%
+    \urefprestretch \slashChar
+    % Allow line break only after the final / in a sequence of
+    % slashes, to avoid line break between the slashes in http://.
+    \ifx\next/\else \urefpoststretch \fi
+  }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that.  Also allow no breaking at all, for manual control.
+% 
+\parseargdef\urefbreakstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\wordnone
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordbefore
+    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+  \else\ifx\txiarg\wordafter
+    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
 % @url synonym for @uref, since that's how everyone uses it.
 %
 \let\url=\uref
@@ -2784,6 +2720,67 @@ end
   \let\email=\uref
 \fi
 
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+  \def\one{#1}\def\three{#3}\def\threex{??}%
+  \ifx\one\xkey\ifx\threex\three \key{#2}%
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
+
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow   (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
+
 % Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
 % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
 %
@@ -2805,6 +2802,7 @@ end
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
 }
 
 % @abbr for "Comput. J." and the like.
@@ -2817,10 +2815,222 @@ end
   \ifx\temp\empty \else
     \space ({\unsepspaces \ignorespaces \temp \unskip})%
   \fi
+  \null % reset \spacefactor=1000
+}
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode`\_ = \active
+  \gdef\mathunderscore{%
+    \catcode`\_=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  % make the texinfo accent commands work in math mode
+  \let\"=\ddot
+  \let\'=\acute
+  \let\==\bar
+  \let\^=\hat
+  \let\`=\grave
+  \let\u=\breve
+  \let\v=\check
+  \let\~=\tilde
+  \let\dotaccent=\dot
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \catcode`' = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+    \let' = \ptexquoteright
+  }
+}
+
+% ctrl is no longer a Texinfo command, but leave this definition for fun.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+% 
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+  \def\inlinefmtname{#1}%
+  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely.  Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored.  But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too.  We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+% 
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+  \def\inlinerawname{#1}%
+  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+  \endgroup % close group opened by \tex.
 }
 
 
 \message{glyphs,}
+% and logos.
+
+% @@ prints an @, as does @atchar{}.
+\def\@{\char64 }
+\let\atchar=\@
+
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{%
+     \ifx\textnominalsize\xwordpt
+       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+       % Revert to plain's \scriptsize, which is 7pt.
+       \count255=\the\fam $\fam\count255 \scriptstyle A$%
+     \else
+       % For 11pt, we can use our lllsize.
+       \selectfonts\lllsize A%
+     \fi
+     }%
+     \vss
+  }}%
+  \kern-.15em
+  \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em.  So do
+% whichever is larger.
+%
+\def\dots{%
+  \leavevmode
+  \setbox0=\hbox{...}% get width of three periods
+  \ifdim\wd0 > 1.5em
+    \dimen0 = \wd0
+  \else
+    \dimen0 = 1.5em
+  \fi
+  \hbox to \dimen0{%
+    \hskip 0pt plus.25fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus1fil
+    .\hskip 0pt plus.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
 
 % @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 %
@@ -2842,7 +3052,7 @@ end
 {\tentt \global\dimen0 = 3em}% Width of the box.
 \dimen2 = .55pt % Thickness of rules
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
 %
 \setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -2963,12 +3173,17 @@ end
   % hopefully nobody will notice/care.
   \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
   \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifx\curfontstyle\bfstylename
-    % bold:
-    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \ifmonospace
+    % typewriter:
+    \font\thisecfont = ectt\ecsize \space at \nominalsize
   \else
-    % regular:
-    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \ifx\curfontstyle\bfstylename
+      % bold:
+      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+    \else
+      % regular:
+      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \fi
   \fi
   \thisecfont
 }
@@ -2991,7 +3206,7 @@ end
 %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
 % so we'll define it if necessary.
 %
-\ifx\Orb\undefined
+\ifx\Orb\thisisundefined
 \def\Orb{\mathhexbox20D}
 \fi
 
@@ -3019,8 +3234,9 @@ end
 \newif\ifsetshortcontentsaftertitlepage
  \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
 
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
-        \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+  \endgroup\page\hbox{}\page}
 
 \envdef\titlepage{%
   % Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -3080,14 +3296,28 @@ end
   \finishedtitlepagetrue
 }
 
-%%% Macros to be used within @titlepage:
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right.  This should be used
+% inside a \vbox, and fonts need to be set appropriately first.  Because
+% it is always used for titles, nothing else, we call \rmisbold.  \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+% 
+\def\raggedtitlesettings{%
+  \rmisbold
+  \hyphenpenalty=10000
+  \parindent=0pt
+  \tolerance=5000
+  \ptexraggedright
+}
+
+% Macros to be used within @titlepage:
 
 \let\subtitlerm=\tenrm
 \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
 
 \parseargdef\title{%
   \checkenv\titlepage
-  \leftline{\titlefonts\rmisbold #1}
+  \vbox{\titlefonts \raggedtitlesettings #1\par}%
   % print a rule at the page bottom also.
   \finishedtitlepagefalse
   \vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -3113,7 +3343,7 @@ end
 }
 
 
-%%% Set up page headings and footings.
+% Set up page headings and footings.
 
 \let\thispage=\folio
 
@@ -3207,10 +3437,14 @@ end
 
 \def\headings #1 {\csname HEADINGS#1\endcsname}
 
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+  \evenheadline={\hfil}\evenfootline={\hfil}%
+   \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff  % it's the default
+
 % When we turn headings on, set the page number to 1.
 % For double-sided printing, put current file name in lower left corner,
 % chapter name on inside top of right hand pages, document
@@ -3261,7 +3495,7 @@ end
 % This produces Day Month Year style of output.
 % Only define if not already defined, in case a txi-??.tex file has set
 % up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
 \def\today{%
   \number\day\space
   \ifcase\month
@@ -3322,7 +3556,7 @@ end
     \begingroup
       \advance\leftskip by-\tableindent
       \advance\hsize by\tableindent
-      \advance\rightskip by0pt plus1fil
+      \advance\rightskip by0pt plus1fil\relax
       \leavevmode\unhbox0\par
     \endgroup
     %
@@ -3808,18 +4042,18 @@ end
 \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
 \global\advance\multitablelinespace by-\ht0
 \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%%        If so, set to same dimension as multitablelinespace.
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+%        If so, set to same dimension as multitablelinespace.
 \ifdim\multitableparskip>\multitablelinespace
 \global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
-                                      %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
 \fi%
 \ifdim\multitableparskip=0pt
 \global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
-                                      %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+                                      % than skip between lines in the table.
 \fi}
 
 
@@ -3980,7 +4214,7 @@ end
     % ..., but we might end up with active ones in the argument if
     % we're called from @code, as @code{@value{foo-bar_}}, though.
     % So \let them to their normal equivalents.
-    \let-\realdash \let_\normalunderscore
+    \let-\normaldash \let_\normalunderscore
   }
 }
 
@@ -4003,8 +4237,9 @@ end
 
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.
-%
-% To get special treatment of `@end ifset,' call \makeond and the redefine.
+% 
+% To get the special treatment we need for `@end ifset,' we call
+% \makecond and then redefine.
 %
 \makecond{ifset}
 \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
@@ -4020,7 +4255,7 @@ end
 }
 \def\ifsetfail{\doignore{ifset}}
 
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% @ifclear VAR ... @end executes the `...' iff VAR has never been
 % defined with @set, or has been undefined with @clear.
 %
 % The `\else' inside the `\doifset' parameter is a trick to reuse the
@@ -4031,6 +4266,35 @@ end
 \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
 \def\ifclearfail{\doignore{ifclear}}
 
+% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
+% without the @) is in fact defined.  We can only feasibly check at the
+% TeX level, so something like `mathcode' is going to considered
+% defined even though it is not a Texinfo command.
+% 
+\makecond{ifcommanddefined}
+\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
+%
+\def\doifcmddefined#1#2{{%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname #2\endcsname\relax
+      #1% If not defined, \let\next as above.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
+
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
+\makecond{ifcommandnotdefined}
+\def\ifcommandnotdefined{%
+  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
+\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
+
+% Set the `txicommandconditionals' variable, so documents have a way to
+% test if the @ifcommand...defined conditionals are available.
+\set txicommandconditionals
+
 % @dircategory CATEGORY  -- specify a category of the dir file
 % which this file should belong to.  Ignore this in TeX.
 \let\dircategory=\comment
@@ -4134,11 +4398,14 @@ end
   \def\@{@}% change to @@ when we switch to @ as escape char in index files.
   \def\ {\realbackslash\space }%
   %
-  % Need these in case \tex is in effect and \{ is a \delimiter again.
-  % But can't use \lbracecmd and \rbracecmd because texindex assumes
-  % braces and backslashes are used only as delimiters.
-  \let\{ = \mylbrace
-  \let\} = \myrbrace
+  % Need these unexpandable (because we define \tt as a dummy)
+  % definitions when @{ or @} appear in index entry text.  Also, more
+  % complicated, when \tex is in effect and \{ is a \delimiter again.
+  % We can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.  Perhaps we
+  % should define @lbrace and @rbrace commands a la @comma.
+  \def\{{{\tt\char123}}%
+  \def\}{{\tt\char125}}%
   %
   % I don't entirely understand this, but when an index entry is
   % generated from a macro call, the \endinput which \scanmacro inserts
@@ -4191,7 +4458,7 @@ end
 \def\commondummies{%
   %
   % \definedummyword defines \#1 as \string\#1\space, thus effectively
-  % preventing its expansion.  This is used only for control% words,
+  % preventing its expansion.  This is used only for control words,
   % not control letters, because the \space would be incorrect for
   % control characters, but is needed to separate the control word
   % from whatever follows.
@@ -4210,6 +4477,7 @@ end
   \commondummiesnofonts
   %
   \definedummyletter\_%
+  \definedummyletter\-%
   %
   % Non-English letters.
   \definedummyword\AA
@@ -4246,20 +4514,25 @@ end
   \definedummyword\TeX
   %
   % Assorted special characters.
+  \definedummyword\arrow
   \definedummyword\bullet
   \definedummyword\comma
   \definedummyword\copyright
   \definedummyword\registeredsymbol
   \definedummyword\dots
   \definedummyword\enddots
+  \definedummyword\entrybreak
   \definedummyword\equiv
   \definedummyword\error
   \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\geq
   \definedummyword\guillemetleft
   \definedummyword\guillemetright
   \definedummyword\guilsinglleft
   \definedummyword\guilsinglright
-  \definedummyword\expansion
+  \definedummyword\lbracechar
+  \definedummyword\leq
   \definedummyword\minus
   \definedummyword\ogonek
   \definedummyword\pounds
@@ -4271,6 +4544,7 @@ end
   \definedummyword\quoteleft
   \definedummyword\quoteright
   \definedummyword\quotesinglbase
+  \definedummyword\rbracechar
   \definedummyword\result
   \definedummyword\textdegree
   %
@@ -4316,19 +4590,27 @@ end
   \definedummyword\b
   \definedummyword\i
   \definedummyword\r
+  \definedummyword\sansserif
   \definedummyword\sc
+  \definedummyword\slanted
   \definedummyword\t
   %
   % Commands that take arguments.
+  \definedummyword\abbr
   \definedummyword\acronym
+  \definedummyword\anchor
   \definedummyword\cite
   \definedummyword\code
   \definedummyword\command
   \definedummyword\dfn
+  \definedummyword\dmn
   \definedummyword\email
   \definedummyword\emph
   \definedummyword\env
   \definedummyword\file
+  \definedummyword\image
+  \definedummyword\indicateurl
+  \definedummyword\inforef
   \definedummyword\kbd
   \definedummyword\key
   \definedummyword\math
@@ -4356,7 +4638,7 @@ end
   \def\definedummyaccent##1{\let##1\asis}%
   % We can just ignore other control letters.
   \def\definedummyletter##1{\let##1\empty}%
-  % Hopefully, all control words can become @asis.
+  % All control words become @asis by default; overrides below.
   \let\definedummyword\definedummyaccent
   %
   \commondummiesnofonts
@@ -4368,8 +4650,17 @@ end
   %
   \def\ { }%
   \def\@{@}%
-  % how to handle braces?
   \def\_{\normalunderscore}%
+  \def\-{}% @- shouldn't affect sorting
+  %
+  % Unfortunately, texindex is not prepared to handle braces in the
+  % content at all.  So for index sorting, we map @{ and @} to strings
+  % starting with |, since that ASCII character is between ASCII { and }.
+  \def\{{|a}%
+  \def\lbracechar{|a}%
+  %
+  \def\}{|b}%
+  \def\rbracechar{|b}%
   %
   % Non-English letters.
   \def\AA{AA}%
@@ -4397,6 +4688,7 @@ end
   %
   % Assorted special characters.
   % (The following {} will end up in the sort string, but that's ok.)
+  \def\arrow{->}%
   \def\bullet{bullet}%
   \def\comma{,}%
   \def\copyright{copyright}%
@@ -4406,10 +4698,12 @@ end
   \def\error{error}%
   \def\euro{euro}%
   \def\expansion{==>}%
+  \def\geq{>=}%
   \def\guillemetleft{<<}%
   \def\guillemetright{>>}%
   \def\guilsinglleft{<}%
   \def\guilsinglright{>}%
+  \def\leq{<=}%
   \def\minus{-}%
   \def\point{.}%
   \def\pounds{pounds}%
@@ -4424,6 +4718,9 @@ end
   \def\result{=>}%
   \def\textdegree{o}%
   %
+  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+  \else \indexlquoteignore \fi
+  %
   % We need to get rid of all macros, leaving only the arguments (if present).
   % Of course this is not nearly correct, but it is the best we can do for now.
   % makeinfo does not expand macros in the argument to @deffn, which ends up
@@ -4437,6 +4734,11 @@ end
   \macrolist
 }
 
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
 \let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
@@ -4534,10 +4836,9 @@ end
 %
 % ..., ready, GO:
 %
-\def\safewhatsit#1{%
-\ifhmode
+\def\safewhatsit#1{\ifhmode
   #1%
-\else
+ \else
   % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
   \whatsitskip = \lastskip
   \edef\lastskipmacro{\the\lastskip}%
@@ -4561,7 +4862,6 @@ end
     % to re-insert the same penalty (values >10000 are used for various
     % signals); since we just inserted a non-discardable item, any
     % following glue (such as a \parskip) would be a breakpoint.  For example:
-    %
     %   @deffn deffn-whatever
     %   @vindex index-whatever
     %   Description.
@@ -4574,8 +4874,7 @@ end
     % (the whatsit from the \write), so we must insert a \nobreak.
     \nobreak\vskip\whatsitskip
   \fi
-\fi
-}
+\fi}
 
 % The index entry written in the file actually looks like
 %  \entry {sortstring}{page}{topic}
@@ -4694,7 +4993,6 @@ end
 % But this freezes the catcodes in the argument, and can cause problems to
 % @code, which sets - active.  This problem was fixed by a kludge---
 % ``-'' was active throughout whole index, but this isn't really right.
-%
 % The right solution is to prevent \entry from swallowing the whole text.
 %                                 --kasal, 21nov03
 \def\entry{%
@@ -4731,10 +5029,17 @@ end
     % columns.
     \vskip 0pt plus1pt
     %
+    % When reading the text of entry, convert explicit line breaks
+    % from @* into spaces.  The user might give these in long section
+    % titles, for instance.
+    \def\*{\unskip\space\ignorespaces}%
+    \def\entrybreak{\hfil\break}%
+    %
     % Swallow the left brace of the text (first parameter):
     \afterassignment\doentry
     \let\temp =
 }
+\def\entrybreak{\unskip\space\ignorespaces}%
 \def\doentry{%
     \bgroup % Instead of the swallowed brace.
       \noindent
@@ -4967,7 +5272,22 @@ end
 \message{sectioning,}
 % Chapters, sections, etc.
 
-% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+  \chapoddpage
+  \null
+  \vskip.3\vsize  % move it down on the page a bit
+  \begingroup
+    \noindent \titlefonts\rmisbold #1\par % the text
+    \let\lastnode=\empty      % no node to associate with
+    \writetocentry{part}{#1}{}% but put it in the toc
+    \headingsoff              % no headline or footline on the part page
+    \chapoddpage
+  \endgroup
+}
+
+% \unnumberedno is an oxymoron.  But we count the unnumbered
 % sections so that we can refer to them unambiguously in the pdf
 % outlines by their "section number".  We avoid collisions with chapter
 % numbers by starting them at 10000.  (If a document ever has 10000
@@ -5046,8 +5366,8 @@ end
 \chardef\maxseclevel = 3
 %
 % A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
 %
 % Trace whether the current chapter is an appendix or not:
 % \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -5072,8 +5392,8 @@ end
   % The heading type:
   \def\headtype{#1}%
   \if \headtype U%
-    \ifnum \absseclevel < \unmlevel
-      \chardef\unmlevel = \absseclevel
+    \ifnum \absseclevel < \unnlevel
+      \chardef\unnlevel = \absseclevel
     \fi
   \else
     % Check for appendix sections:
@@ -5085,10 +5405,10 @@ end
       \fi\fi
     \fi
     % Check for numbered within unnumbered:
-    \ifnum \absseclevel > \unmlevel
+    \ifnum \absseclevel > \unnlevel
       \def\headtype{U}%
     \else
-      \chardef\unmlevel = 3
+      \chardef\unnlevel = 3
     \fi
   \fi
   % Now print the heading:
@@ -5174,7 +5494,8 @@ end
   \global\let\subsubsection = \appendixsubsubsec
 }
 
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
 \def\unnumberedzzz#1{%
   \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
     \global\advance\unnumberedno by 1
@@ -5218,40 +5539,47 @@ end
 \let\top\unnumbered
 
 % Sections.
+% 
 \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
 \def\seczzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
   \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
 }
 
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
 \def\appendixsectionzzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
   \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
 }
 \let\appendixsec\appendixsection
 
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
 \def\unnumberedseczzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
   \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
 }
 
 % Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+% 
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
 \def\numberedsubseczzz#1{%
   \global\subsubsecno=0  \global\advance\subsecno by 1
   \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
 }
 
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
 \def\appendixsubseczzz#1{%
   \global\subsubsecno=0  \global\advance\subsecno by 1
   \sectionheading{#1}{subsec}{Yappendix}%
                  {\appendixletter.\the\secno.\the\subsecno}%
 }
 
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
 \def\unnumberedsubseczzz#1{%
   \global\subsubsecno=0  \global\advance\subsecno by 1
   \sectionheading{#1}{subsec}{Ynothing}%
@@ -5259,21 +5587,25 @@ end
 }
 
 % Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+% 
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
 \def\numberedsubsubseczzz#1{%
   \global\advance\subsubsecno by 1
   \sectionheading{#1}{subsubsec}{Ynumbered}%
                  {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
 \def\appendixsubsubseczzz#1{%
   \global\advance\subsubsecno by 1
   \sectionheading{#1}{subsubsec}{Yappendix}%
                  {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
 }
 
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
 \def\unnumberedsubsubseczzz#1{%
   \global\advance\subsubsecno by 1
   \sectionheading{#1}{subsubsec}{Ynothing}%
@@ -5289,14 +5621,6 @@ end
 
 % Define @majorheading, @heading and @subheading
 
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-%       1) We use \vbox rather than the earlier \line to permit
-%          overlong headings to fold.
-%       2) \hyphenpenalty is set to 10000 because hyphenation in a
-%          heading is obnoxious; this forbids it.
-%       3) Likewise, headings look best if no \parindent is used, and
-%          if justification is not attempted.  Hence \raggedright.
-
 \def\majorheading{%
   {\advance\chapheadingskip by 10pt \chapbreak }%
   \parsearg\chapheadingzzz
@@ -5304,10 +5628,8 @@ end
 
 \def\chapheading{\chapbreak \parsearg\chapheadingzzz}
 \def\chapheadingzzz#1{%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\ptexraggedright
-                    \rmisbold #1\hfill}}%
-  \bigskip \par\penalty 200\relax
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip \nobreak
   \suppressfirstparagraphindent
 }
 
@@ -5323,14 +5645,13 @@ end
 % (including whitespace, linebreaking, etc. around it),
 % given all the information in convenient, parsed form.
 
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
 \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
 
-%%% Define plain chapter starts, and page on/off switching for it
 % Parameter controlling skip before chapter headings (if needed)
-
 \newskip\chapheadingskip
 
+% Define plain chapter starts, and page on/off switching for it.
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}
 \def\chappager{\par\vfill\supereject}
 % Because \domark is called before \chapoddpage, the filler page will
@@ -5340,9 +5661,8 @@ end
   \chappager
   \ifodd\pageno \else
     \begingroup
-      \evenheadline={\hfil}\evenfootline={\hfil}%
-      \oddheadline={\hfil}\oddfootline={\hfil}%
-      \hbox to 0pt{}%
+      \headingsoff
+      \null
       \chappager
     \endgroup
   \fi
@@ -5468,8 +5788,7 @@ end
     %
     % Typeset the actual heading.
     \nobreak % Avoid page breaks at the interline glue.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0 \centerparametersmaybe
+    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
           \unhbox0 #1\par}%
   }%
   \nobreak\bigskip % no page break after a chapter title
@@ -5491,18 +5810,18 @@ end
 \def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
 %
 \def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\ptexraggedright
-                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip\nobreak
 }
 \def\chfopen #1#2{\chapoddpage {\chapfonts
 \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
 \par\penalty 5000 %
 }
 \def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt
-                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+  \nobreak\bigskip \nobreak
 }
 \def\CHAPFopen{%
   \global\let\chapmacro=\chfopen
@@ -5534,6 +5853,8 @@ end
 %
 \def\sectionheading#1#2#3#4{%
   {%
+    \checkenv{}% should not be in an environment.
+    %
     % Switch to the right set of fonts.
     \csname #2fonts\endcsname \rmisbold
     %
@@ -5591,7 +5912,7 @@ end
     %
     % Now the second mark, after the heading break.  No break points
     % between here and the heading.
-    \let\prevsectiondefs=\lastsectiondefs
+    \global\let\prevsectiondefs=\lastsectiondefs
     \domark
     %
     % Only insert the space after the number if we have a section number.
@@ -5645,15 +5966,15 @@ end
   %
   % We'll almost certainly start a paragraph next, so don't let that
   % glue accumulate.  (Not a breakpoint because it's preceded by a
-  % discardable item.)
+  % discardable item.)  However, when a paragraph is not started next
+  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+  % or the negative glue will cause weirdly wrong output, typically
+  % obscuring the section heading with something else.
   \vskip-\parskip
   %
-  % This is purely so the last item on the list is a known \penalty >
-  % 10000.  This is so \startdefun can avoid allowing breakpoints after
-  % section headings.  Otherwise, it would insert a valid breakpoint between:
-  %
-  %   @section sec-whatever
-  %   @deffn def-whatever
+  % This is so the last item on the main vertical list is a known
+  % \penalty > 10000, so \startdefun, etc., can recognize the situation
+  % and do the needful.
   \penalty 10001
 }
 
@@ -5785,6 +6106,7 @@ end
 \def\summarycontents{%
   \startcontents{\putwordShortTOC}%
     %
+    \let\partentry = \shortpartentry
     \let\numchapentry = \shortchapentry
     \let\appentry = \shortchapentry
     \let\unnchapentry = \shortunnchapentry
@@ -5840,6 +6162,19 @@ end
 % The last argument is the page number.
 % The arguments in between are the chapter number, section number, ...
 
+% Parts, in the main contents.  Replace the part number, which doesn't
+% exist, with an empty box.  Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+  \penalty-300
+  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
 % Chapters, in the main contents.
 \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
 %
@@ -5929,9 +6264,9 @@ end
 \message{environments,}
 % @foo ... @end foo.
 
-% @tex ... @end tex    escapes into raw Tex temporarily.
+% @tex ... @end tex    escapes into raw TeX temporarily.
 % One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
 
 \envdef\tex{%
   \setupmarkupstyle{tex}%
@@ -5944,10 +6279,14 @@ end
   \catcode `\|=\other
   \catcode `\<=\other
   \catcode `\>=\other
-  \catcode`\`=\other
-  \catcode`\'=\other
+  \catcode `\`=\other
+  \catcode `\'=\other
   \escapechar=`\\
   %
+  % ' is active in math mode (mathcode"8000).  So reset it, and all our
+  % other math active characters (just in case), to plain's definitions.
+  \mathactive
+  %
   \let\b=\ptexb
   \let\bullet=\ptexbullet
   \let\c=\ptexc
@@ -5965,7 +6304,7 @@ end
   \let\/=\ptexslash
   \let\*=\ptexstar
   \let\t=\ptext
-  \expandafter \let\csname top\endcsname=\ptextop  % outer
+  \expandafter \let\csname top\endcsname=\ptextop  % we've made it outer
   \let\frenchspacing=\plainfrenchspacing
   %
   \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
@@ -6051,6 +6390,12 @@ end
   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
   % Flag to tell @lisp, etc., not to narrow margin.
   \let\nonarrowing = t%
+  %
+  % If this cartouche directly follows a sectioning command, we need the
+  % \parskip glue (backspaced over by default) or the cartouche can
+  % collide with the section heading.
+  \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+  %
   \vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
       \carttop
@@ -6064,7 +6409,7 @@ end
 	      \lineskip=\normlskip
 	      \parskip=\normpskip
 	      \vskip -\parskip
-	      \comment % For explanation, see the end of \def\group.
+	      \comment % For explanation, see the end of def\group.
 }
 \def\Ecartouche{%
               \ifhmode\par\fi
@@ -6084,7 +6429,7 @@ end
 \newdimen\nonfillparindent
 \def\nonfillstart{%
   \aboveenvbreak
-  \hfuzz = 12pt % Don't be fussy
+  \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy
   \sepspaces % Make spaces be word-separators rather than space tokens.
   \let\par = \lisppar % don't ignore blank lines
   \obeylines % each line of input is a line of output
@@ -6150,41 +6495,42 @@ end
 }
 
 % We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
-  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
-  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command.  #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
   \expandafter\let\csname E#1\endcsname \afterenvbreak
   \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
 }
 
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
-  \makedispenv{#1}{#3}
-  \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+  \makedispenvdef{#1}{#3}%
+  \makedispenvdef{#2}{#3}%
 }
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
 %
 % @smallexample and @smalllisp: use smaller fonts.
 % Originally contributed by Pavel at xerox.
 %
-\maketwodispenvs {lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
   \nonfillstart
   \tt\setupmarkupstyle{example}%
   \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
-  \gobble       % eat return
+  \gobble % eat return
 }
 % @display/@smalldisplay: same as @lisp except keep current font.
 %
-\makedispenv {display}{%
+\makedispenvdef{display}{%
   \nonfillstart
   \gobble
 }
 
 % @format/@smallformat: same as @display except don't narrow margins.
 %
-\makedispenv{format}{%
+\makedispenvdef{format}{%
   \let\nonarrowing = t%
   \nonfillstart
   \gobble
@@ -6203,7 +6549,7 @@ end
 \envdef\flushright{%
   \let\nonarrowing = t%
   \nonfillstart
-  \advance\leftskip by 0pt plus 1fill
+  \advance\leftskip by 0pt plus 1fill\relax
   \gobble
 }
 \let\Eflushright = \afterenvbreak
@@ -6238,43 +6584,28 @@ end
 % we're doing normal filling.  So, when using \aboveenvbreak and
 % \afterenvbreak, temporarily make \parskip 0.
 %
+\makedispenvdef{quotation}{\quotationstart}
+%
 \def\quotationstart{%
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \indentedblockstart % same as \indentedblock, but increase right margin too.
   \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
     \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-  \else
-    \let\nonarrowing = \relax
   \fi
   \parsearg\quotationlabel
 }
 
-\envdef\quotation{%
-  \setnormaldispenv
-  \quotationstart
-}
-
-\envdef\smallquotation{%
-  \setsmalldispenv
-  \quotationstart
-}
-\let\Esmallquotation = \Equotation
-
 % We have retained a nonzero parskip for the environment, since we're
 % doing normal filling.
 %
 \def\Equotation{%
   \par
-  \ifx\quotationauthor\undefined\else
+  \ifx\quotationauthor\thisisundefined\else
     % indent a bit.
     \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
   \fi
   {\parskip=0pt \afterenvbreak}%
 }
+\def\Esmallquotation{\Equotation}
 
 % If we're given an argument, typeset it in bold with a colon after.
 \def\quotationlabel#1{%
@@ -6284,6 +6615,32 @@ end
   \fi
 }
 
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+% 
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+  \par
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
 
 % LaTeX-like @verbatim... at end verbatim and @verb{<char>...<char>}
 % If we want to allow any <char> as delimiter,
@@ -6331,21 +6688,28 @@ end
 
 % Setup for the @verbatim environment
 %
-% Real tab expansion
+% Real tab expansion.
 \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
 %
-\def\starttabbox{\setbox0=\hbox\bgroup}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs.  The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group.  Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset.  Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
 %
 \begingroup
   \catcode`\^^I=\active
   \gdef\tabexpand{%
     \catcode`\^^I=\active
     \def^^I{\leavevmode\egroup
-      \dimen0=\wd0 % the width so far, or since the previous tab
-      \divide\dimen0 by\tabw
-      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
-      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
-      \wd0=\dimen0 \box0 \starttabbox
+      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+      \divide\dimen\verbbox by\tabw
+      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
+      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
     }%
   }
 \endgroup
@@ -6354,15 +6718,16 @@ end
 \def\setupverbatim{%
   \let\nonarrowing = t%
   \nonfillstart
-  % Easiest (and conventionally used) font for verbatim
-  \tt
-  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \tt % easiest (and conventionally used) font for verbatim
+  % The \leavevmode here is for blank lines.  Otherwise, we would
+  % never \starttabox and the \egroup would end verbatim mode.
+  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
   \tabexpand
   \setupmarkupstyle{verbatim}%
   % Respect line breaks,
   % print special symbols as themselves, and
-  % make each space count
-  % must do in this order:
+  % make each space count.
+  % Must do in this order:
   \obeylines \uncatcodespecials \sepspaces
   \everypar{\starttabbox}%
 }
@@ -6419,6 +6784,7 @@ end
     \makevalueexpandable
     \setupverbatim
     \indexnofonts       % Allow `@@' and other weird things in file names.
+    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
     \input #1
     \afterenvbreak
   }%
@@ -6468,7 +6834,7 @@ end
     % commands also insert a nobreak penalty, and we don't want to allow
     % a break between a section heading and a defun.
     %
-    % As a minor refinement, we avoid "club" headers by signalling
+    % As a further refinement, we avoid "club" headers by signalling
     % with penalty of 10003 after the very first @deffn in the
     % sequence (see above), and penalty of 10002 after any following
     % @def command.
@@ -6505,7 +6871,7 @@ end
     #1#2 \endheader
     % common ending:
     \interlinepenalty = 10000
-    \advance\rightskip by 0pt plus 1fil
+    \advance\rightskip by 0pt plus 1fil\relax
     \endgraf
     \nobreak\vskip -\parskip
     \penalty\defunpenalty  % signal to \startdefun and \dodefunx
@@ -6535,13 +6901,36 @@ end
 \def\domakedefun#1#2#3{%
   \envdef#1{%
     \startdefun
+    \doingtypefnfalse    % distinguish typed functions from all else
     \parseargusing\activeparens{\printdefunline#3}%
   }%
   \def#2{\dodefunx#1}%
   \def#3%
 }
 
-%%% Untyped functions:
+\newif\ifdoingtypefn       % doing typed function?
+\newif\ifrettypeownline    % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line.  This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+% 
+\parseargdef\deftypefnnewline{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETtxideftypefnnl\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @txideftypefnnl value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% Untyped functions:
 
 % @deffn category name args
 \makedefun{deffn}{\deffngeneral{}}
@@ -6560,7 +6949,7 @@ end
   \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
 }
 
-%%% Typed functions:
+% Typed functions:
 
 % @deftypefn category type name args
 \makedefun{deftypefn}{\deftypefngeneral{}}
@@ -6575,10 +6964,11 @@ end
 %
 \def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
   \dosubind{fn}{\code{#4}}{#1}%
+  \doingtypefntrue
   \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
-%%% Typed variables:
+% Typed variables:
 
 % @deftypevr category type var args
 \makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -6596,7 +6986,7 @@ end
   \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
-%%% Untyped variables:
+% Untyped variables:
 
 % @defvr category var args
 \makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -6607,7 +6997,8 @@ end
 % \defcvof {category of}class var args
 \def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
 
-%%% Type:
+% Types:
+
 % @deftp category name args
 \makedefun{deftp}#1 #2 #3\endheader{%
   \doind{tp}{\code{#2}}%
@@ -6635,25 +7026,49 @@ end
 % We are followed by (but not passed) the arguments, if any.
 %
 \def\defname#1#2#3{%
+  \par
   % Get the values of \leftskip and \rightskip as they were outside the @def...
   \advance\leftskip by -\defbodyindent
   %
-  % How we'll format the type name.  Putting it in brackets helps
+  % Determine if we are typesetting the return type of a typed function
+  % on a line by itself.
+  \rettypeownlinefalse
+  \ifdoingtypefn  % doing a typed function specifically?
+    % then check user option for putting return type on its own line:
+    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+      \rettypeownlinetrue
+    \fi
+  \fi
+  %
+  % How we'll format the category name.  Putting it in brackets helps
   % distinguish it from the body text that may end up on the next line
   % just below it.
   \def\temp{#1}%
   \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
   %
-  % Figure out line sizes for the paragraph shape.
+  % Figure out line sizes for the paragraph shape.  We'll always have at
+  % least two.
+  \tempnum = 2
+  %
   % The first line needs space for \box0; but if \rightskip is nonzero,
   % we need only space for the part of \box0 which exceeds it:
   \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  %
+  % If doing a return type on its own line, we'll have another line.
+  \ifrettypeownline
+    \advance\tempnum by 1
+    \def\maybeshapeline{0in \hsize}%
+  \else
+    \def\maybeshapeline{}%
+  \fi
+  %
   % The continuations:
   \dimen2=\hsize  \advance\dimen2 by -\defargsindent
-  % (plain.tex says that \dimen1 should be used only as global.)
-  \parshape 2 0in \dimen0 \defargsindent \dimen2
   %
-  % Put the type name to the right margin.
+  % The final paragraph shape:
+  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
+  %
+  % Put the category name at the right margin.
   \noindent
   \hbox to 0pt{%
     \hfil\box0 \kern-\hsize
@@ -6675,8 +7090,16 @@ end
     % . this still does not fix the ?` and !` ligatures, but so far no
     %   one has made identifiers using them :).
     \df \tt
-    \def\temp{#2}% return value type
-    \ifx\temp\empty\else \tclose{\temp} \fi
+    \def\temp{#2}% text of the return type
+    \ifx\temp\empty\else
+      \tclose{\temp}% typeset the return type
+      \ifrettypeownline
+        % put return type on its own line; prohibit line break following:
+        \hfil\vadjust{\nobreak}\break  
+      \else
+        \space  % type on same line, so just followed by a space
+      \fi
+    \fi           % no return type
     #3% output function name
   }%
   {\rm\enskip}% hskip 0.5 em of \tenrm
@@ -6696,7 +7119,10 @@ end
   \df \sl \hyphenchar\font=0
   %
   % On the other hand, if an argument has two dashes (for instance), we
-  % want a way to get ttsl.  Let's try @var for that.
+  % want a way to get ttsl.  We used to recommend @var for that, so
+  % leave the code in, but it's strange for @var to lead to typewriter.
+  % Nowadays we recommend @code, since the difference between a ttsl hyphen
+  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
   \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
   #1%
   \sl\hyphenchar\font=45
@@ -6794,7 +7220,7 @@ end
 
 % To do this right we need a feature of e-TeX, \scantokens,
 % which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
   \newwrite\macscribble
   \def\scantokens#1{%
     \toks0={#1}%
@@ -6805,25 +7231,30 @@ end
   }
 \fi
 
-\def\scanmacro#1{%
-  \begingroup
-    \newlinechar`\^^M
-    \let\xeatspaces\eatspaces
-    % Undo catcode changes of \startcontents and \doprintindex
-    % When called from @insertcopying or (short)caption, we need active
-    % backslash to get it printed correctly.  Previously, we had
-    % \catcode`\\=\other instead.  We'll see whether a problem appears
-    % with macro expansion.				--kasal, 19aug04
-    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
-    % ... and \example
-    \spaceisspace
-    %
-    % Append \endinput to make sure that TeX does not see the ending newline.
-    % I've verified that it is necessary both for e-TeX and for ordinary TeX
-    %							--kasal, 29nov03
-    \scantokens{#1\endinput}%
-  \endgroup
-}
+\def\scanmacro#1{\begingroup
+  \newlinechar`\^^M
+  \let\xeatspaces\eatspaces
+  %
+  % Undo catcode changes of \startcontents and \doprintindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.  Previously, we had
+  % \catcode`\\=\other instead.  We'll see whether a problem appears
+  % with macro expansion.				--kasal, 19aug04
+  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+  %
+  % ... and for \example:
+  \spaceisspace
+  %
+  % The \empty here causes a following catcode 5 newline to be eaten as
+  % part of reading whitespace after a control sequence.  It does not
+  % eat a catcode 13 newline.  There's no good way to handle the two
+  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+  % would then have different behavior).  See the Macro Details node in
+  % the manual for the workaround we recommend for macros and
+  % line-oriented commands.
+  % 
+  \scantokens{#1\empty}%
+\endgroup}
 
 \def\scanexp#1{%
   \edef\temp{\noexpand\scanmacro{#1}}%
@@ -6877,17 +7308,18 @@ end
 
 % Macro bodies are absorbed as an argument in a context where
 % all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
 % Non-ASCII encodings make 8-bit characters active, so un-activate
 % them to avoid their expansion.  Must do this non-globally, to
 % confine the change to the current group.
-
+%
 % It's necessary to have hard CRs when the macro is executed. This is
-% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
 % body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
   \catcode`\"=\other
   \catcode`\+=\other
   \catcode`\<=\other
@@ -6900,13 +7332,13 @@ end
   \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
 }
 
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
   \scanctxt
   \catcode`\\=\other
   \catcode`\^^M=\other
 }
 
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
   \scanctxt
   \catcode`\{=\other
   \catcode`\}=\other
@@ -6914,32 +7346,56 @@ end
   \usembodybackslash
 }
 
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
   \scanctxt
-  \catcode`\\=\other
+  \catcode`\\=0
 }
+% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }.  Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+% 
+% We already have @{ and @}.  For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+% 
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent.  Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
 
 % \mbodybackslash is the definition of \ in @macro bodies.
 % It maps \foo\ => \csname macarg.foo\endcsname => #N
 % where N is the macro parameter number.
 % We define \csname macarg.\endcsname to be \realbackslash, so
 % \\ in macro replacement text gets you a backslash.
-
+%
 {\catcode`@=0 @catcode`@\=@active
  @gdef at usembodybackslash{@let\=@mbodybackslash}
  @gdef at mbodybackslash#1\{@csname macarg.#1 at endcsname}
 }
 \expandafter\def\csname macarg.\endcsname{\realbackslash}
 
+\def\margbackslash#1{\char`\#1 }
+
 \def\macro{\recursivefalse\parsearg\macroxxx}
 \def\rmacro{\recursivetrue\parsearg\macroxxx}
 
 \def\macroxxx#1{%
-  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \getargs{#1}% now \macname is the macname and \argl the arglist
   \ifx\argl\empty       % no arguments
-     \paramno=0%
+     \paramno=0\relax
   \else
      \expandafter\parsemargdef \argl;%
+     \if\paramno>256\relax
+       \ifx\eTeXversion\thisisundefined
+         \errhelp = \EMsimple
+         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+       \fi
+     \fi
   \fi
   \if1\csname ismacro.\the\macname\endcsname
      \message{Warning: redefining \the\macname}%
@@ -6986,46 +7442,269 @@ end
 % an opening brace, and that opening brace is not consumed.
 \def\getargs#1{\getargsxxx#1{}}
 \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
 \def\getmacargs#1{\def\argl{#1}}
 
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
 % Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded.  If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.  
+%
 % That gets used by \mbodybackslash (above).
-
+%
 % We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX:  let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
 % unexpandable, insert that wherever you need a #, and then redefine
 % it to # just before using the token list produced.
 %
 % The same technique is used to protect \eatspaces till just before
 % the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
-        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef  the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
+\def\parsemargdef#1;{%
+  \paramno=0\def\paramlist{}%
+  \let\hash\relax
+  \let\xeatspaces\relax
+  \parsemargdefxxx#1,;,%
+  % In case that there are 10 or more arguments we parse again the arguments
+  % list to set new definitions for the \macarg.BLAH macros corresponding to
+  % each BLAH argument. It was anyhow needed to parse already once this list
+  % in order to count the arguments, and as macros with at most 9 arguments
+  % are by far more frequent than macro with 10 or more arguments, defining
+  % twice the \macarg.BLAH macros does not cost too much processing power.
+  \ifnum\paramno<10\relax\else
+    \paramno0\relax
+    \parsemmanyargdef@@#1,;,% 10 or more arguments
+  \fi
+}
 \def\parsemargdefxxx#1,{%
   \if#1;\let\next=\relax
   \else \let\next=\parsemargdefxxx
-    \advance\paramno by 1%
+    \advance\paramno by 1
     \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
         {\xeatspaces{\hash\the\paramno}}%
     \edef\paramlist{\paramlist\hash\the\paramno,}%
   \fi\next}
 
+\def\parsemmanyargdef@@#1,{%
+  \if#1;\let\next=\relax
+  \else 
+    \let\next=\parsemmanyargdef@@
+    \edef\tempb{\eatspaces{#1}}%
+    \expandafter\def\expandafter\tempa
+       \expandafter{\csname macarg.\tempb\endcsname}%
+    % Note that we need some extra \noexpand\noexpand, this is because we
+    % don't want \the  to be expanded in the \parsermacbody  as it uses an
+    % \xdef .
+    \expandafter\edef\tempa
+      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+    \advance\paramno by 1\relax
+  \fi\next}
+
 % These two commands read recursive and nonrecursive macro bodies.
 % (They're different since rec and nonrec macros end differently.)
+%
 
+\catcode `\@\texiatcatcode
 \long\def\parsemacbody#1 at end macro%
 {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
 \long\def\parsermacbody#1 at end rmacro%
 {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition.  It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+  \def\macargdeflist@{}%
+  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+  \def\paramlist{#2,\nil@}%
+  \def\macroname{#1}%
+  \begingroup
+  \macroargctxt
+  \def\argvaluelist{#3,\nil@}%
+  \def\@tempa{#3}%
+  \ifx\@tempa\empty
+    \setemptyargvalues@
+  \else
+    \getargvals@@
+  \fi
+}
+
+% 
+\def\getargvals@@{%
+  \ifx\paramlist\nilm@
+      % Some sanity check needed here that \argvaluelist is also empty.
+      \ifx\argvaluelist\nillm@
+      \else
+        \errhelp = \EMsimple
+        \errmessage{Too many arguments in macro `\macroname'!}%
+      \fi
+      \let\next\macargexpandinbody@
+  \else
+    \ifx\argvaluelist\nillm@
+       % No more arguments values passed to macro.  Set remaining named-arg
+       % macros to empty.
+       \let\next\setemptyargvalues@
+    \else
+      % pop current arg name into \@tempb
+      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+      \expandafter\@tempa\expandafter{\paramlist}%
+       % pop current argument value into \@tempc
+      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+      \expandafter\@tempa\expandafter{\argvaluelist}%
+       % Here \@tempb is the current arg name and \@tempc is the current arg value.
+       % First place the new argument macro definition into \@tempd
+       \expandafter\macname\expandafter{\@tempc}%
+       \expandafter\let\csname macarg.\@tempb\endcsname\relax
+       \expandafter\def\expandafter\@tempe\expandafter{%
+         \csname macarg.\@tempb\endcsname}%
+       \edef\@tempd{\long\def\@tempe{\the\macname}}%
+       \push@\@tempd\macargdeflist@
+       \let\next\getargvals@@
+    \fi
+  \fi
+  \next
+}
+
+\def\push@#1#2{%
+  \expandafter\expandafter\expandafter\def
+  \expandafter\expandafter\expandafter#2%
+  \expandafter\expandafter\expandafter{%
+  \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+  %  To do this we use the property that token registers that are \the'ed
+  % within an \edef  expand only once. So we are going to place all argument
+  % values into respective token registers.
+  %
+  % First we save the token context, and initialize argument numbering.
+  \begingroup
+    \paramno0\relax
+    % Then, for each argument number #N, we place the corresponding argument
+    % value into a new token list register \toks#N
+    \expandafter\putargsintokens@\saveparamlist@,;,%
+    % Then, we expand the body so that argument are replaced by their
+    % values. The trick for values not to be expanded themselves is that they
+    % are within tokens and that tokens expand only once in an \edef .
+    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+    % Now we restore the token stack pointer to free the token list registers
+    % which we have used, but we make sure that expanded body is saved after
+    % group.
+    \expandafter
+  \endgroup
+  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+  }
+
+\def\macargexpandinbody@{% 
+  %% Define the named-macro outside of this group and then close this group. 
+  \expandafter
+  \endgroup
+  \macargdeflist@
+  % First the replace in body the macro arguments by their values, the result
+  % is in \@tempa .
+  \macvalstoargs@
+  % Then we point at the \norecurse or \gobble (for recursive) macro value
+  % with \@tempb .
+  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+  % Depending on whether it is recursive or not, we need some tailing
+  % \egroup .
+  \ifx\@tempb\gobble
+     \let\@tempc\relax
+  \else
+     \let\@tempc\egroup
+  \fi
+  % And now we do the real job:
+  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+  \@tempd
+}
+
+\def\putargsintokens@#1,{%
+  \if#1;\let\next\relax
+  \else
+    \let\next\putargsintokens@
+    % First we allocate the new token list register, and give it a temporary
+    % alias \@tempb .
+    \toksdef\@tempb\the\paramno
+    % Then we place the argument value into that token list register.
+    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+    \expandafter\@tempb\expandafter{\@tempa}%
+    \advance\paramno by 1\relax
+  \fi
+  \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+  \ifx\paramlist\nilm@
+    \let\next\macargexpandinbody@
+  \else
+    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+    \let\next\setemptyargvalues@
+  \fi
+  \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+  \expandafter\def\expandafter\@tempa\expandafter{%
+    \expandafter\def\csname macarg.#1\endcsname{}}%
+  \push@\@tempa\macargdeflist@
+  \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+   \def#1{#3}%
+   \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+   \long\def#1{#3}%
+   \long\def#2{#4}%
+}
 
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
 % Much magic with \expandafter here.
 % \xdef is used so that macro definitions will survive the file
 % they're defined in; @include reads the file inside a group.
+%
 \def\defmacro{%
   \let\hash=##% convert placeholders to macro parameter chars
   \ifrecursive
@@ -7040,17 +7719,25 @@ end
          \expandafter\noexpand\csname\the\macname xxx\endcsname}%
       \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
          \egroup\noexpand\scanmacro{\temp}}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \else
+      \ifnum\paramno<10\relax % at most 9
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+          \csname\the\macname xxx\endcsname
+            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+      \else % 10 or more
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          \noexpand\getargvals@{\the\macname}{\argl}%
+        }%    
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+      \fi
     \fi
   \else
     \ifcase\paramno
@@ -7067,29 +7754,40 @@ end
         \egroup
         \noexpand\norecurse{\the\macname}%
         \noexpand\scanmacro{\temp}\egroup}%
-    \else % many
-      \expandafter\xdef\csname\the\macname\endcsname{%
-         \bgroup\noexpand\macroargctxt
-         \expandafter\noexpand\csname\the\macname xx\endcsname}%
-      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
-      \expandafter\expandafter
-      \expandafter\xdef
-      \expandafter\expandafter
-      \csname\the\macname xxx\endcsname
-      \paramlist{%
-          \egroup
-          \noexpand\norecurse{\the\macname}%
-          \noexpand\scanmacro{\temp}\egroup}%
+    \else % at most 9
+      \ifnum\paramno<10\relax
+        \expandafter\xdef\csname\the\macname\endcsname{%
+           \bgroup\noexpand\macroargctxt
+           \expandafter\noexpand\csname\the\macname xx\endcsname}%
+        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+        \expandafter\expandafter
+        \expandafter\xdef
+        \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+        \paramlist{%
+            \egroup
+            \noexpand\norecurse{\the\macname}%
+            \noexpand\scanmacro{\temp}\egroup}%
+      \else % 10 or more:
+        \expandafter\xdef\csname\the\macname\endcsname{%
+          \noexpand\getargvals@{\the\macname}{\argl}%
+        }%
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+      \fi
     \fi
   \fi}
 
+\catcode `\@\texiatcatcode\relax
+
 \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
 
 % \braceorline decides whether the next nonwhitespace character is a
 % {.  If so it reads up to the closing }, if not, it reads the whole
 % line.  Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
+% as an argument (by \parsebrace or \parsearg).
+% 
 \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
   \ifx\nchar\bgroup\else
@@ -7099,7 +7797,8 @@ end
 
 % @alias.
 % We need some trickery to remove the optional spaces around the equal
-% sign.  Just make them active and then expand them all to nothing.
+% sign.  Make them active and then expand them all to nothing.
+%
 \def\alias{\parseargusing\obeyspaces\aliasxxx}
 \def\aliasxxx #1{\aliasyyy#1\relax}
 \def\aliasyyy #1=#2\relax{%
@@ -7120,7 +7819,8 @@ end
 
 % @inforef is relatively simple.
 \def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
   node \samp{\ignorespaces#1{}}}
 
 % @node's only job in TeX is to define \lastnode, which is used in
@@ -7181,11 +7881,32 @@ end
       \toks0 = \expandafter{\lastsection}%
       \immediate \writexrdef{title}{\the\toks0 }%
       \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
     }%
   \fi
 }
 
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+% 
+\parseargdef\xrefautomaticsectiontitle{%
+  \def\temp{#1}%
+  \ifx\temp\onword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \empty
+  \else\ifx\temp\offword
+    \expandafter\let\csname SETxref-automatic-section-title\endcsname
+      = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+                must be on|off}%
+  \fi\fi
+}
+
+% 

 % @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
 % the node name, #2 the name of the Info cross-reference, #3 the printed
 % node name, #4 the name of the Info file, #5 the name of the printed
@@ -7194,26 +7915,41 @@ end
 \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
 \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
 \def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
 \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
   \unsepspaces
-  \def\printedmanual{\ignorespaces #5}%
+  %
+  % Get args without leading/trailing spaces.
   \def\printedrefname{\ignorespaces #3}%
-  \setbox1=\hbox{\printedmanual\unskip}%
-  \setbox0=\hbox{\printedrefname\unskip}%
-  \ifdim \wd0 = 0pt
+  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+  %
+  \def\infofilename{\ignorespaces #4}%
+  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+  %
+  \def\printedmanual{\ignorespaces #5}%
+  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
+  %
+  % If the printed reference name (arg #3) was not explicitly given in
+  % the @xref, figure out what we want to use.
+  \ifdim \wd\printedrefnamebox = 0pt
     % No printed node name was explicitly given.
-    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
-      % Use the node name inside the square brackets.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+      % Not auto section-title: use node name inside the square brackets.
       \def\printedrefname{\ignorespaces #1}%
     \else
-      % Use the actual chapter/section title appear inside
-      % the square brackets.  Use the real section title if we have it.
-      \ifdim \wd1 > 0pt
-        % It is in another manual, so we don't have it.
+      % Auto section-title: use chapter/section title inside
+      % the square brackets if we have it.
+      \ifdim \wd\printedmanualbox > 0pt
+        % It is in another manual, so we don't have it; use node name.
         \def\printedrefname{\ignorespaces #1}%
       \else
         \ifhavexrefs
-          % We know the real title if we have the xref values.
+          % We (should) know the real title if we have the xref values.
           \def\printedrefname{\refx{#1-title}{}}%
         \else
           % Otherwise just copy the Info node name.
@@ -7227,13 +7963,20 @@ end
   \ifpdf
     {\indexnofonts
      \turnoffactive
+     \makevalueexpandable
      % This expands tokens, so do it after making catcode changes, so _
-     % etc. don't get their TeX definitions.
+     % etc. don't get their TeX definitions.  This ignores all spaces in
+     % #4, including (wrongly) those in the middle of the filename.
      \getfilename{#4}%
      %
-     % See comments at \activebackslashdouble.
-     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
-      \backslashparens\pdfxrefdest}%
+     % This (wrongly) does not take account of leading or trailing
+     % spaces in #1, which should be ignored.
+     \edef\pdfxrefdest{#1}%
+     \ifx\pdfxrefdest\empty
+       \def\pdfxrefdest{Top}% no empty targets
+     \else
+       \txiescapepdf\pdfxrefdest  % escape PDF special chars
+     \fi
      %
      \leavevmode
      \startlink attr{/Border [0 0 0]}%
@@ -7260,29 +8003,42 @@ end
   \iffloat\Xthisreftitle
     % If the user specified the print name (third arg) to the ref,
     % print it instead of our usual "Figure 1.2".
-    \ifdim\wd0 = 0pt
+    \ifdim\wd\printedrefnamebox = 0pt
       \refx{#1-snt}{}%
     \else
       \printedrefname
     \fi
     %
-    % if the user also gave the printed manual name (fifth arg), append
+    % If the user also gave the printed manual name (fifth arg), append
     % "in MANUALNAME".
-    \ifdim \wd1 > 0pt
+    \ifdim \wd\printedmanualbox > 0pt
       \space \putwordin{} \cite{\printedmanual}%
     \fi
   \else
     % node/anchor (non-float) references.
+    % 
+    % If we use \unhbox to print the node names, TeX does not insert
+    % empty discretionaries after hyphens, which means that it will not
+    % find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens,
+    % this is a loss.  Therefore, we give the text of the node name
+    % again, so it is as if TeX is seeing it for the first time.
+    % 
+    \ifdim \wd\printedmanualbox > 0pt
+      % Cross-manual reference with a printed manual name.
+      % 
+      \crossmanualxref{\cite{\printedmanual\unskip}}%
+    %
+    \else\ifdim \wd\infofilenamebox > 0pt
+      % Cross-manual reference with only an info filename (arg 4), no
+      % printed manual name (arg 5).  This is essentially the same as
+      % the case above; we output the filename, since we have nothing else.
+      % 
+      \crossmanualxref{\code{\infofilename\unskip}}%
     %
-    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
-    % insert empty discretionaries after hyphens, which means that it will
-    % not find a line break at a hyphen in a node names.  Since some manuals
-    % are best written with fairly long node names, containing hyphens, this
-    % is a loss.  Therefore, we give the text of the node name again, so it
-    % is as if TeX is seeing it for the first time.
-    \ifdim \wd1 > 0pt
-      \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
     \else
+      % Reference within this manual.
+      %
       % _ (for example) has to be the character _ for the purposes of the
       % control sequence corresponding to the node, but it has to expand
       % into the usual \leavevmode...\vrule stuff for purposes of
@@ -7294,7 +8050,7 @@ end
        \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
        \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
       }%
-      % output the `[mynode]' via a macro so it can be overridden.
+      % output the `[mynode]' via the macro below so it can be overridden.
       \xrefprintnodename\printedrefname
       %
       % But we always want a comma and a space:
@@ -7302,11 +8058,37 @@ end
       %
       % output the `page 3'.
       \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
-    \fi
+    \fi\fi
   \fi
   \endlink
 \endgroup}
 
+% Output a cross-manual xref to #1.  Used just above (twice).
+% 
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+% 
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input.  By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font).  Hopefully it will never happen in practice.
+% 
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+% 
+\def\crossmanualxref#1{%
+  \setbox\toprefbox = \hbox{Top\kern7sp}%
+  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+  \ifdim \wd2 > 7sp  % nonempty?
+    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
+      \putwordSection{} ``\printedrefname'' \putwordin{}\space
+    \fi
+  \fi
+  #1%
+}
+
 % This macro is called from \xrefX for the `[nodename]' part of xref
 % output.  It's a separate macro only so it can be changed more easily,
 % since square brackets don't work well in some documents.  Particularly
@@ -7357,7 +8139,8 @@ end
     \angleleft un\-de\-fined\angleright
     \iflinks
       \ifhavexrefs
-        \message{\linenumber Undefined cross reference `#1'.}%
+        {\toks0 = {#1}% avoid expansion of possibly-complex value
+         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
       \else
         \ifwarnedxrefs\else
           \global\warnedxrefstrue
@@ -7521,7 +8304,7 @@ end
 % space to prevent strange expansion errors.)
 \def\supereject{\par\penalty -20000\footnoteno =0 }
 
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
 \let\footnotestyle=\comment
 
 {\catcode `\@=11
@@ -7584,6 +8367,8 @@ end
   % expands into a box, it must come within the paragraph, lest it
   % provide a place where TeX can split the footnote.
   \footstrut
+  %
+  % Invoke rest of plain TeX footnote routine.
   \futurelet\next\fo at t
 }
 }%end \catcode `\@=11
@@ -7671,7 +8456,7 @@ end
   it from ftp://tug.org/tex/epsf.tex.}
 %
 \def\image#1{%
-  \ifx\epsfbox\undefined
+  \ifx\epsfbox\thisisundefined
     \ifwarnednoepsf \else
       \errhelp = \noepsfhelp
       \errmessage{epsf.tex not found, images will be ignored}%
@@ -7687,7 +8472,7 @@ end
 % #2 is (optional) width, #3 is (optional) height.
 % #4 is (ignored optional) html alt text.
 % #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
 \newif\ifimagevmode
 \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
   \catcode`\^^M = 5     % in case we're inside an example
@@ -7695,6 +8480,13 @@ end
   % If the image is by itself, center it.
   \ifvmode
     \imagevmodetrue
+  \else \ifx\centersub\centerV
+    % for @center @image, we need a vbox so we can have our vertical space
+    \imagevmodetrue
+    \vbox\bgroup % vbox has better behavior than vtop herev
+  \fi\fi
+  %
+  \ifimagevmode
     \nobreak\medskip
     % Usually we'll have text after the image which will insert
     % \parskip glue, so insert it here too to equalize the space
@@ -7704,9 +8496,13 @@ end
   \fi
   %
   % Leave vertical mode so that indentation from an enclosing
-  % environment such as @quotation is respected.  On the other hand, if
-  % it's at the top level, we don't want the normal paragraph indentation.
-  \noindent
+  %  environment such as @quotation is respected.
+  % However, if we're at the top level, we don't want the
+  %  normal paragraph indentation.
+  % On the other hand, if we are in the case of @center @image, we don't
+  %  want to start a paragraph, which will create a hsize-width box and
+  %  eradicate the centering.
+  \ifx\centersub\centerV\else \noindent \fi
   %
   % Output the image.
   \ifpdf
@@ -7718,7 +8514,10 @@ end
     \epsfbox{#1.eps}%
   \fi
   %
-  \ifimagevmode \medskip \fi  % space after the standalone image
+  \ifimagevmode
+    \medskip  % space after a standalone image
+  \fi  
+  \ifx\centersub\centerV \egroup \fi
 \endgroup}
 
 
@@ -8136,7 +8935,7 @@ directory should work if nowhere else does.}
 %
 % Latin1 (ISO-8859-1) character definitions.
 \def\latonechardefs{%
-  \gdef^^a0{~}
+  \gdef^^a0{\tie}
   \gdef^^a1{\exclamdown}
   \gdef^^a2{\missingcharmsg{CENT SIGN}}
   \gdef^^a3{{\pounds}}
@@ -8166,7 +8965,7 @@ directory should work if nowhere else does.}
   \gdef^^b9{$^1$}
   \gdef^^ba{\ordm}
   %
-  \gdef^^bb{\guilletright}
+  \gdef^^bb{\guillemetright}
   \gdef^^bc{$1\over4$}
   \gdef^^bd{$1\over2$}
   \gdef^^be{$3\over4$}
@@ -8258,7 +9057,7 @@ directory should work if nowhere else does.}
 
 % Latin2 (ISO-8859-2) character definitions.
 \def\lattwochardefs{%
-  \gdef^^a0{~}
+  \gdef^^a0{\tie}
   \gdef^^a1{\ogonek{A}}
   \gdef^^a2{\u{}}
   \gdef^^a3{\L}
@@ -8339,8 +9138,8 @@ directory should work if nowhere else does.}
   \gdef^^ea{\ogonek{e}}
   \gdef^^eb{\"e}
   \gdef^^ec{\v e}
-  \gdef^^ed{\'\i}
-  \gdef^^ee{\^\i}
+  \gdef^^ed{\'{\dotless{i}}}
+  \gdef^^ee{\^{\dotless{i}}}
   \gdef^^ef{\v d}
   %
   \gdef^^f0{\dh}
@@ -8431,7 +9230,7 @@ directory should work if nowhere else does.}
 
   \gdef\DeclareUnicodeCharacter#1#2{%
     \countUTFz = "#1\relax
-    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
     \begingroup
       \parseXMLCharref
       \def\UTFviiiTwoOctets##1##2{%
@@ -8899,8 +9698,8 @@ directory should work if nowhere else does.}
 % Prevent underfull vbox error messages.
 \vbadness = 10000
 
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
 
 % Following George Bush, get rid of widows and orphans.
 \widowpenalty=10000
@@ -9107,28 +9906,21 @@ directory should work if nowhere else does.}
 
 \message{and turning on texinfo input format.}
 
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
 % DEL is a comment character, in case @c does not suffice.
 \catcode`\^^? = 14
 
 % Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
 
 % This macro is used to make a character print one way in \tt
 % (where it can probably be output as-is), and another way in other fonts,
@@ -9155,11 +9947,9 @@ directory should work if nowhere else does.}
 \catcode`\"=\active
 \def\activedoublequote{{\tt\char34}}
 \let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
+\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde
 \chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
+\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat
 
 \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}
@@ -9169,16 +9959,24 @@ directory should work if nowhere else does.}
 
 \catcode`\|=\active
 \def|{{\tt\char124}}
+
 \chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
+\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
 \chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
+\catcode`\+=\active \def+{{\tt \char 43}}
+\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% used for headline/footline in the output routine, in case the page
+% breaks in the middle of an @tex block.
+\def\texinfochars{%
+  \let< = \activeless
+  \let> = \activegtr
+  \let~ = \activetilde 
+  \let^ = \activehat
+  \markupsetuplqdefault \markupsetuprqdefault 
+  % in principle, all other definitions in \tex have to be undone too.
+}
 
 % If a .fmt file is being used, characters that might appear in a file
 % name cannot be active until we have parsed the command line.
@@ -9206,34 +10004,48 @@ directory should work if nowhere else does.}
 
 % In texinfo, backslash is an active character; it prints the backslash
 % in fixed width font.
-\catcode`\\=\active
- at def@normalbackslash{{@tt at backslashcurfont}}
+\catcode`\\=\active  % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C).  We can't use " for the
+% usual hex value because it has already been made active.
+ at def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+ at let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
 % On startup, @fixbackslash assigns:
 %  @let \ = @normalbackslash
-
 % \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
+% catcode other.  We switch back and forth between these.
 @gdef at rawbackslash{@let\=@backslashcurfont}
 @gdef at otherbackslash{@let\=@realbackslash}
 
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-%
- at def@normalturnoffactive{%
-  @let\=@normalbackslash
-  @let"=@normaldoublequote
-  @let~=@normaltilde
-  @let^=@normalcaret
-  @let_=@normalunderscore
-  @let|=@normalverticalbar
-  @let<=@normalless
-  @let>=@normalgreater
-  @let+=@normalplus
-  @let$=@normaldollar %$ font-lock fix
-  @markupsetuplqdefault
-  @markupsetuprqdefault
-  @unsepspaces
+% the literal character `\'.  Also revert - to its normal character, in
+% case the active - from code has slipped in.
+%
+{@catcode`- = @active
+ @gdef at normalturnoffactive{%
+   @let-=@normaldash
+   @let"=@normaldoublequote
+   @let$=@normaldollar %$ font-lock fix
+   @let+=@normalplus
+   @let<=@normalless
+   @let>=@normalgreater
+   @let\=@normalbackslash
+   @let^=@normalcaret
+   @let_=@normalunderscore
+   @let|=@normalverticalbar
+   @let~=@normaltilde
+   @markupsetuplqdefault
+   @markupsetuprqdefault
+   @unsepspaces
+ }
 }
 
 % Make _ and + \other characters, temporarily.
@@ -9262,10 +10074,19 @@ directory should work if nowhere else does.}
 % Say @foo, not \foo, in error messages.
 @escapechar = `@@
 
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+ at def@normaldot{.}
+ at def@normalquest{?}
+ at def@normalslash{/}
+
 % These look ok in all fonts, so just make them not special.
- at catcode`@& = @other
- at catcode`@# = @other
- at catcode`@% = @other
+% @hashchar{} gets its own user-level command, because of #line.
+ at catcode`@& = @other @def at normalamp{&}
+ at catcode`@# = @other @def at normalhash{#}
+ at catcode`@% = @other @def at normalpercent{%}
+
+ at let @hashchar = @normalhash
 
 @c Finally, make ` and ' active, so that txicodequoteundirected and
 @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
diff --git a/autobld/ylwrap b/autobld/ylwrap
index 84d5634..9253635 100755
--- a/autobld/ylwrap
+++ b/autobld/ylwrap
@@ -1,10 +1,10 @@
 #! /bin/sh
 # ylwrap - wrapper for lex/yacc invocations.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-08-25.18; # UTC
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-# 2007, 2009 Free Software Foundation, Inc.
+# 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
 #
 # Written by Tom Tromey <tromey at cygnus.com>.
 #
@@ -99,7 +99,11 @@ esac
 # FIXME: add hostname here for parallel makes that run commands on
 # other machines.  But that might take us over the 14-char limit.
 dirname=ylwrap$$
-trap "cd '`pwd`'; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
+do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret'
+trap "ret=129; $do_exit" 1
+trap "ret=130; $do_exit" 2
+trap "ret=141; $do_exit" 13
+trap "ret=143; $do_exit" 15
 mkdir $dirname || exit 1
 
 cd $dirname
@@ -133,19 +137,19 @@ if test $ret -eq 0; then
     # Handle y_tab.c and y_tab.h output by DOS
     if test $y_tab_nodot = "yes"; then
       if test $from = "y.tab.c"; then
-    	from="y_tab.c"
+        from="y_tab.c"
       else
-    	if test $from = "y.tab.h"; then
-    	  from="y_tab.h"
-    	fi
+        if test $from = "y.tab.h"; then
+          from="y_tab.h"
+        fi
       fi
     fi
     if test -f "$from"; then
       # If $2 is an absolute path name, then just use that,
       # otherwise prepend `../'.
       case "$2" in
-    	[\\/]* | ?:[\\/]*) target="$2";;
-    	*) target="../$2";;
+        [\\/]* | ?:[\\/]*) target="$2";;
+        *) target="../$2";;
       esac
 
       # We do not want to overwrite a header file if it hasn't
@@ -155,8 +159,8 @@ if test $ret -eq 0; then
       # Makefile.  Divert the output of all other files to a temporary
       # file so we can compare them to existing versions.
       if test $first = no; then
-	realtarget="$target"
-	target="tmp-`echo $target | sed s/.*[\\/]//g`"
+        realtarget="$target"
+        target="tmp-`echo $target | sed s/.*[\\/]//g`"
       fi
       # Edit out `#line' or `#' directives.
       #
@@ -180,10 +184,10 @@ if test $ret -eq 0; then
 
       # Check whether header files must be updated.
       if test $first = no; then
-	if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
-	  echo "$2" is unchanged
-	  rm -f "$target"
-	else
+        if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
+          echo "$2" is unchanged
+          rm -f "$target"
+        else
           echo updating "$2"
           mv -f "$target" "$realtarget"
         fi
diff --git a/bld/Makefile b/bld/Makefile
index 47af766..5455ea1 100644
--- a/bld/Makefile
+++ b/bld/Makefile
@@ -1,22 +1,26 @@
-# $Header: /cvsroot/nco/nco/bld/Makefile,v 1.590 2012/02/02 18:13:19 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/bld/Makefile,v 1.673 2013/12/02 20:14:49 zender Exp $ -*-makefile-*-
 
 # Purpose: GNU Makefile for NCO module nco
 # Requires GNU Make---AT&T Make chokes on GNU syntax
 
-# Copyright (C) 1994--2012 Charlie Zender
+# Copyright (C) 1994--2013 Charlie Zender
 # License: GNU General Public License (GPL) Version 3
 # See http://www.gnu.org/copyleft/gpl.html for full license text
 
 # Quickie test copies:
-# scp ~/nco/bld/Makefile bluefire.ucar.edu:nco/bld
+# scp ~/nco/bld/Makefile tephra.ess.uci.edu:nco/bld
 # scp ~/nco/bld/Makefile dust.ess.uci.edu:nco/bld
 # scp ~/nco/bld/Makefile gplogin2.ps.uci.edu:nco/bld
 
-# Development machines default configuration:
-# netCDF4, UDUnits2: ashes, elnino, virga, neige
-# netCDF3: sand
-# netCDF3, OPeNDAP: soot, esmf
-# netCDF3, configure: clay
+# Machine build parameters
+# givre.ess.uci.edu  : Source: NCO + netCDF, Method: Makefile,  Packages: All else
+# roulee.ess.uci.edu : Source: NCO + netCDF, Method: Makefile,  Packages: All else
+# neige.ess.uci.edu  : Source: NCO         , Method: Makefile,  Packages: All else
+# dust.ess.uci.edu   : Source: -           , Method: -       ,  Packages: All
+# glace.ess.uci.edu  : Source: NCO         , Method: Configure, Packages: All else
+# grele.ess.uci.edu  : Source: NCO         , Method: Makefile,  Packages: All else
+# tephra.ess.uci.edu : Source: NCO         , Method: Makefile,  Packages: All else
+# yellowstone.ucar.edu: Source: NCO        , Method: Makefile,  Packages: All else
 
 # Usage (testing):
 # make tst                           # Vanilla regression test
@@ -30,17 +34,22 @@
 # make ZNETCDF=Y                     # znetCDF features
 
 # Usage (Compilation):
+# cd ~/nco/qt;qmake;make;cd -        # Qt
 # cd ~/nco/bld;make;cd -             # Default build
+# cd ~/nco/bld;make USR_TKN='-DNC_HAVE_RENAME_GRP';cd - # New API
+# cd ~/nco/bld;make UDUNITS_INC='/usr/include/udunits2';cd - # Fedora build
 # cd ~/nco/bld;make cln bin_cln;cd - # Clean all dependencies for fresh build
 # cd ~/nco/bld;make dir all; cd -    # Create target directories then build
 # cd ~/nco/bld;make dbg;cd -         # Print make diagnostics
 # cd ~/nco/bld;make DAP_OPENDAP=Y;cd - # DAP support via OPeNDAP
-# cd ~/nco/bld;make GSL=Y;cd -	     #a GSL support
+# cd ~/nco/bld;make DPKG=Y;cd -      # Debian hardening
+# cd ~/nco/bld;make GSL=Y;cd -	     # GSL support
+# cd ~/nco/bld;make I18N=Y;cd -      # Internationalization
 # cd ~/nco/bld;make lib_cln;cd -     # Clean libraries
 # cd ~/nco/bld;make MPI=Y;cd -       # MPI support
 # cd ~/nco/bld;make MPI_FAKE=Y;cd -  # Spoof MPI support
 # cd ~/nco/bld;make OMP=Y;cd -       # OpenMP support
-# cd ~/nco/bld;make OPTS=D;cd -      # "Debugging": Enough symbols for debugging
+# cd ~/nco/bld;make OPTS=D;cd -      # "Debugging": Enough symbols for debugging (default)
 # cd ~/nco/bld;make OPTS=O;cd -      # "Optimize": For production (includes symbols)
 # cd ~/nco/bld;make OPTS=R;cd -      # "Regular": No optimization or debugging
 # cd ~/nco/bld;make OPTS=X;cd -      # "eXtreme": All debugging switches available
@@ -57,6 +66,7 @@
 # mpi-selector --set openmpi_gcc-1.3.3 # Then use /sopt/netcdf/netcdf3-gcc-serial serial libraries
 # mpi-selector --set mpich_pgi_1.2.7p1 # After compiling
 # cd ${HOME}/nco/bld;ANTLR_ROOT=/sopt/gfortran_g++ CNK=N NETCDF_ROOT=/sopt/gfortran_g++ SZ_LIB=/sopt/lib UDUNITS_INC=/sopt/include UDUNITS_LIB=/sopt/lib make OMP=Y DAP_OPENDAP=N OPTS=D NETCDF4=Y SZ=Y UDUNITS2=N allinone;cd - # greenplanet gcc
+# cd ${HOME}/nco/bld;ANTLR=/home/pvicente/install/antlr-2.7.7/bin/antlr ANTLR_ROOT=/home/pvicente/install/antlr-2.7.7 NETCDF_ROOT=/home/pvicente/install/netcdf-4.3.0 UDUNITS_INC=/home/pvicente/install/udunits-2.1.24/include UDUNITS_LIB=/home/pvicente/install/udunits-2.1.24/lib make OPTS=D allinone;cd - # greenplanet gcc pedro
 # cd ${HOME}/nco/bld;ANTLR=/sopt/ifort_icpc/bin/antlr ANTLR_ROOT=/sopt/ifort_icpc CNK=N SZ_LIB=/sopt/lib UDUNITS_INC=/sopt/include UDUNITS_LIB=/sopt/lib make OMP=Y DAP_OPENDAP=N OPTS=D NETCDF4=Y SZ=Y UDUNITS2=N allinone;cd - # greenplanet intel
 # cd ${HOME}/nco/bld;ANTLR=/sopt/pgf90_pgcc/bin/antlr ANTLR_ROOT=/sopt/pgf90_pgcc CNK=N SZ_LIB=/sopt/lib UDUNITS_INC=/sopt/include UDUNITS_LIB=/sopt/lib make OMP=Y DAP_OPENDAP=N OPTS=D NETCDF4=N SZ=Y UDUNITS2=N allinone;cd - # greenplanet pgi
 # cd ${HOME}/nco/bld;make OMP=Y DAP_OPENDAP=N OPTS=D NETCDF4=N UDUNITS2=Y allinone;cd - # pbs
@@ -73,16 +83,22 @@
 # 64-bit ABI netCDF3 on NCAR AIX systems (bluefire):
 # cd ~/nco/bld;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' NETCDF_LIB='/usr/local/lib64/r4i4' UDUNITS_INC='/contrib/udunits-1.12.9/include' UDUNITS_LIB='/contrib/udunits-1.12.9/lib' make --jobs=1 DAP_OPENDAP=N OPTS=D NETCDF4=N UDUNITS2=N allinone ABI=64;cd -
 # 64-bit ABI netCDF4 on NCAR AIX systems (bluefire):
-# cd ~/nco/bld;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' CURL_LIB='/contrib/curl/7.21.2/lib' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' HDF5_ROOT='/contrib/hdf5-1.8.6_seq' LDFLAGS='-lnetcdf -lhdf5_hl -lhdf5 -lz' NETCDF_ROOT='/contrib/netcdf-4.1.2_seq' SZ_LIB='/contrib/szip/lib' UDUNITS_LIB='/contrib/zlib/lib' make --jobs=1 OPTS=D SZ=Y allinone ABI=64;cd -
-# Untested:
 # cd ~/nco/bld;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' CURL_LIB='/contrib/curl/7.21.2/lib' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' HDF5_ROOT='/contrib/hdf5-1.8.7_seq' LDFLAGS='-lnetcdf -lhdf5_hl -lhdf5 -lz' NETCDF_ROOT='/contrib/netcdf/4.1.3_seq' SZ_LIB='/contrib/szip/lib' UDUNITS_LIB='/contrib/zlib/lib' make --jobs=1 OPTS=D SZ=Y allinone ABI=64;cd -
 # 64-bit ABI netCDF4 on NCAR AIX systems (bluefire):
-# cd ~/bin/AIX;/usr/local/bin/tar cvzf ~/nco-4.0.9.aix53.tar.gz nc*;scp ~/nco-4.0.9.aix53.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+# cd ~/bin/AIX;/usr/local/bin/tar cvzf ~/nco-4.3.9.aix53.tar.gz nc*;scp ~/nco-4.3.9.aix53.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 # netCDF4 on NCAR Linux cluster systems (mirage):
 # cd ~/nco/bld;make OPTS=D allinone;cd -
+# netCDF4 on NCAR Linux cluster systems (yellowstone):
+# /ncar/opt/hpss/hsi # Starts HPSS session
+# module swap intel gnu;module add gsl;module add netcdf/4.3.0-rc4;
+# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}\:/glade/apps/opt/udunits/2.1.24/gnu/default/lib
+# export PATH=${PATH}\:/ncar/opt/hpss
+# cd ~/nco/bld;make NETCDF_ROOT='/glade/apps/opt/netcdf/4.3.0-rc4/gnu/default' UDUNITS_INC='/glade/apps/opt/udunits/2.1.24/gnu/default/include' UDUNITS_LIB='/glade/apps/opt/udunits/2.1.24/gnu/default/lib' OPTS=D allinone;cd -
 # Cygwin on Windows Vista systems:
 # cd ~/nco/bld;ANTLR='antlr' make --jobs=1 GSL=Y OPTS=D NETCDF4=Y UDUNITS2=Y allinone;cd -
-# cd ~/bin/WIN32;tar cvzf ~/nco-4.0.9.win32.cygwin.tar.gz nc* ; scp ~/nco-4.0.9.win32.cygwin.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+# cd ~/bin/WIN32;tar cvzf ~/nco-4.3.9.win32.cygwin.tar.gz nc* ; scp ~/nco-4.3.9.win32.cygwin.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+# Data files to dust
+# cd ~/nco/data;scp cmip5.nc obs.nc mdl.nc mdl2.nc in_grp*.nc in.nc dust.ess.uci.edu:/var/www/html/nco
 
 # Top-level tokens defining directory structure
 # These tokens may be over-ridden by environment variables or when invoking make, e.g., make DAP_OPENDAP=Y
@@ -107,6 +123,7 @@ MY_DAT_DIR := ../data
 MY_DBN_DIR := ../debian
 MY_DOC_DIR := ../doc
 MY_DPN_DIR := ${MY_OBJ_DIR}
+MY_QT_DIR := ../qt
 MY_SRC_DIR := ../src/nco
 MY_INC_DIR := ${MY_SRC_DIR}
 NCO_CXX_SRC_DIR := ${MY_SRC_DIR}/../nco_c++
@@ -138,6 +155,10 @@ ifndef ${DBG}
 # Debugging token N=No (default) Y=Yes
  DBG := N
 endif # endif DBG
+ifndef ${DPKG}
+# Debian hardening tokens
+ DPKG := N
+endif # endif DPKG
 ifdef FL_FMT
 # Pass this netCDF4 argument to nco_bm.pl
  FL_FMT_SNG := "--fl_fmt=${FL_FMT}"
@@ -184,16 +205,24 @@ ifndef NETCDF4_ROOT
  NETCDF4_ROOT := ${NETCDF_ROOT}
 endif
 ifndef NETCDF_INC
+ifdef INC_NCAR
+ NETCDF_INC := ${INC_NCAR} # NCAR module path
+else # endelse INC_NCAR
  NETCDF_INC := ${NETCDF_ROOT}/include # Directory containing netcdf.h
-endif
+endif # endif INC_NCAR
+endif # endif NETCDF_INC
 ifndef NETCDF_LIB
+ifdef LIB_NCAR
+ NETCDF_LIB := ${LIB_NCAR} # NCAR module path
+else # endelse LIB_NCAR
  NETCDF_LIB := ${NETCDF_ROOT}/lib # Directory containing libnetcdf.a
+endif # endif LIB_NCAR
 endif
 ifndef ${OMP} # OpenMP
  OMP := Y
 endif # endif OMP
 ifndef OPTS
- OPTS := O
+ OPTS := D
 endif
 ifndef PGI_RCH_ARG
  PGI_RCH_ARG :=
@@ -248,8 +277,12 @@ ifndef YFLAGS # Flags for Bison (Yacc)
 endif
 
 # Default NCO build: DAP_NETCDF, DAP_OPENDAP, NETCDF4, PNETCDF, and ZNETCDF clauses may overwrite this
-NC_LDFLAGS := -L${NETCDF_LIB}
-NC_LIBS := -lnetcdf 
+ifndef LIB_NCAR
+ NC_LDFLAGS := -L${NETCDF_LIB}
+ NC_LIBS := -lnetcdf 
+else
+ NC_LDFLAGS := ${LIB_NCAR}
+endif
 
 ifeq (${DAP_NETCDF},Y)
 # Build NCO as DAP-enabled clients with netCDF-provided DAP
@@ -261,7 +294,7 @@ endif # DAP_NETCDF_ROOT
 # netCDF 4.0.1+:
  NC_LIBS += -lcurl
 endif # end DAP_NETCDF
-               
+
 ifeq (${DAP_OPENDAP},Y)
 # Build NCO as DAP-enabled clients with OPe NDAP
 # fxm: OPeNDAP bloats executables, should automagically enable stripping?
@@ -436,7 +469,7 @@ else
  GSL_LIB := $(shell gsl-config --libs)
 endif # endif GSL_LIB
  NETCDF_INC += ${GSL_INC}
- NC_LDFLAGS += ${GSL_LIB}
+ NC_LDFLAGS += -L${GSL_LIB}
  NC_LIBS += -lgsl
 endif # end if GSL
 
@@ -459,7 +492,17 @@ ifneq (${UDUNITS_LIB},${NETCDF_LIB})
  NC_LDFLAGS += -L${UDUNITS_LIB}
 endif # end if
 ifeq (${UDUNITS2},Y)
+# 20130607: -lexpat needed on .deb systems, not on RPM systems
+UDUNITS_RPM_DRC := /usr/include/udunits2
+UDUNITS_RPM_TST := $(shell ls ${UDUNITS_RPM_DRC}/udunits2.h)
+ifeq (${UDUNITS_RPM_TST},${UDUNITS_RPM_DRC}/udunits2.h)
+ NETCDF_INC += -I${UDUNITS_RPM_DRC}
+endif # end if
+ifneq (${UDUNITS_RPM_TST},${UDUNITS_RPM_DRC}/udunits2.h)
  NC_LIBS += -ludunits2 -lexpat
+else # end if UDUNITS2 Fedora
+ NC_LIBS += -ludunits2
+endif # end if UDUNITS2 Fedora
 else
  NC_LIBS += -ludunits
 endif # end if UDUNITS2
@@ -507,11 +550,11 @@ CPP_PTH := $(foreach dir,${MDL_PTH},-I${dir})
 
 # Variables having to do with binary executables created by module
 MDL_BIN_TRG := ncap ncatted ncbo ncecat ncflint ncks ncpdq ncra ncrename ncwa # NCO binary targets
-MDL_BIN_SYM_LNK := ncdiff ncea ncrcat # Symbolic links
+MDL_BIN_SYM_LNK := ncdiff ncea nces ncrcat # Symbolic links
 ifeq (${MPI},Y)
  MDL_MPI_TRG := mpncbo mpncecat mpncflint mpncpdq mpncra mpncwa # MPI binary targets
  MDL_MPI_TRG_SMP := ncbo ncecat ncflint ncpdq ncra ncwa # MPI binary targets
- MDL_MPI_SYM_LNK := mpncdiff mpncea mpncrcat # MPI Symbolic links
+ MDL_MPI_SYM_LNK := mpncdiff mpncea mpnces mpncrcat # MPI Symbolic links
  MDL_MPI_STB := ${MDL_MPI_TRG} ${MDL_MPI_SYM_LNK} # All MPI files in MY_BIN_DIR
  MDL_MPI_BIN := $(addprefix ${MY_BIN_DIR}/,${MDL_MPI_TRG}) # mpi_cln removes these files
  MDL_MPI_OBJ := $(addsuffix .o,$(addprefix ${MY_OBJ_DIR}/,${MDL_MPI_TRG})) # mpi_cln removes these files
@@ -535,7 +578,7 @@ MDL_DAT_STB := $(addsuffix .nc,${MDL_DAT_STB}) # `make data' creates these files
 MDL_DAT := $(addprefix ${MY_DAT_DIR}/,${MDL_DAT_STB}) # `make distclean' removes these files
 
 # Variables having to do with NCO documentation
-MDL_DOC_SRC := $(addprefix ../,acinclude.m4 configure.in configure.eg Makefile.am) $(addprefix ${MY_DOC_DIR}/,nco.texi ANNOUNCE MANIFEST NEWS README TODO VERSION beta.txt debian.txt dods.sh opendap.sh index.shtml ncap.txt nco.png nco_news.shtml nco_src_frg.txt) $(addprefix ${MY_DBN_DIR}/,changelog compat control convert copyright files info rules doc-base) # `make tags' includes these files
+MDL_DOC_SRC := $(addprefix ../,acinclude.m4 configure.ac configure.eg Makefile.am) $(addprefix ${MY_DOC_DIR}/,nco.texi ANNOUNCE MANIFEST NEWS README TODO VERSION beta.txt debian.txt dods.sh index.shtml xmp_cesm.html man_end.txt man_srt.txt ncap.txt nco_news.shtml nco_src_frg.txt opendap.sh) $(addprefix ${MY_DBN_DIR}/,changelog compat control copyright files info rules doc-base) # `make tags' includes these files
 MDL_DOC_TRG := nco.dvi nco.html nco.info nco.pdf nco.ps nco.txt nco.xml # `make doc' creates these files
 MDL_DOC := $(addprefix ${MY_DOC_DIR}/,${MDL_DOC_TRG}) # `make distclean' removes these files
 
@@ -546,8 +589,13 @@ MDL_MAN := $(addprefix ${MY_MAN_DIR}/,${MDL_MAN}) # distclean removes these file
 # Variables having to do with NCO build
 MDL_BLD_SRC := $(addprefix ${MY_BLD_DIR}/,libnco_tst.c libnco_c++_tst.cc Makefile nco.spec nco_dst.pl) # `make tags' includes these files
 MDL_BLD_SRC += $(addprefix ${MY_BM_DIR}/,NCO_bm.pm NCO_benchmarks.pm NCO_rgr.pm nco_bm.pl nco_bm.sh mk_bm_plots.pl) # `make tags' includes these files
+MDL_BLD_SRC += $(addprefix ${MY_DAT_DIR}/,Makefile.am) $(addprefix ${MY_SRC_DIR}/,Makefile.am) $(addprefix ${MY_DOC_DIR}/,Makefile.am) $(addprefix ${NCO_CXX_SRC_DIR}/,Makefile.am)  $(addprefix ${NCOXX_SRC_DIR}/,Makefile.am) # `make tags' includes these files
 # Files, if any, to exclude from tags
-TAGS_FILTER_FILES := .//libnco_tst.c .//libnco_c++_tst.cc .//lex.${NCO_YY_PFX}.c
+# TAGS_FILTER_FILES := .//libnco_tst.c .//libnco_c++_tst.cc ../src/nco/lex.${NCO_YY_PFX}.c
+TAGS_FILTER_FILES := .//libnco_tst.c .//libnco_c++_tst.cc
+
+# Variables having to do with Qt build system
+MDL_QT_SRC := $(addprefix ${MY_QT_DIR}/,nco.pro libnco/libnco.pro ncatted/ncatted.pro ncbo/ncbo.pro ncecat/ncecat.pro ncflint/ncflint.pro ncks/ncks.pro ncpdq/ncpdq.pro ncra/ncra.pro ncrename/ncrename.pro ncwa/ncwa.pro tst_nco_c++/tst_nco_c++.pro) # `make tags' includes these files
 
 # Variables having to do with ncap
 MDL_NCAP_SRC := $(addprefix ${MY_SRC_DIR}/,ncap_yacc.y ncap_lex.l ncap.h) # `make tags' includes these files
@@ -556,7 +604,7 @@ MDL_NCAP := $(addprefix ${MY_SRC_DIR}/,${MDL_NCAP_TRG}) # `make distclean' remov
 
 # Variables having to do with C++ source and documentation
 # fxm: auto-generate source code components of C++ lists
-MDL_CXX_SRC := $(addprefix ${NCOXX_SRC_DIR}/,libnco++.hh Makefile.am Makefile.old ncap2.cc ncap2.hh ncap2_utl.cc NcapVar.cc NcapVar.hh NcapVarVector.cc NcapVarVector.hh NcapVector.hh ncoGrammer.g nco_antlr_pst_prc.pl fmc_cls.cc fmc_cls.hh fmc_all_cls.cc fmc_all_cls.hh fmc_gsl_cls.cc fmc_gsl_cls.hh Invoke.cc Invoke.hh map_srt_tmp.hh prs_cls.cc prs_cls.hh sdo_utl.cc sdo_utl.hh sym_cls.cc sym_cls.hh VarOp.hh vtl_cls.hh) $(addprefix ${NCO_CXX_SRC_DIR}/,INSTALL libnco_c++.hh Makefile.am Makef [...]
+MDL_CXX_SRC := $(addprefix ${NCOXX_SRC_DIR}/,libnco++.hh Makefile.am Makefile.old ncap2.cc ncap2.hh ncap2_utl.cc NcapVar.cc NcapVar.hh NcapVarVector.cc NcapVarVector.hh NcapVector.hh ncoGrammer.g nco_antlr_pst_prc.pl fmc_cls.cc fmc_cls.hh fmc_all_cls.cc fmc_all_cls.hh fmc_gsl_cls.cc fmc_gsl_cls.hh Invoke.cc Invoke.hh map_srt_tmp.hh nco_gsl.c nco_gsl.h prs_cls.cc prs_cls.hh sdo_utl.cc sdo_utl.hh sym_cls.cc sym_cls.hh VarOp.hh vtl_cls.hh) $(addprefix ${NCO_CXX_SRC_DIR}/,INSTALL libnco_c++. [...]
 
 # Redefine default C and C++ pattern rules
 ${MY_OBJ_DIR}/%.o : %.c
@@ -622,7 +670,9 @@ ${MY_DPN_DIR}/%.d : %.cc
 
 # Manually define autotools tokens normally defined with HAVE_CONFIG_H in config.h 
 # Initialize OS-specific tokens to empty
-CPP_TKN_OS := -DHAVE_REGEX_H -DNCO_HAVE_REGEX_FUNCTIONALITY -DHAVE_GETPAGESIZE -DHAVE_GETRUSAGE
+CPP_TKN_OS := -DHAVE_REGEX_H -DNCO_HAVE_REGEX_FUNCTIONALITY -DHAVE_GETPAGESIZE -DHAVE_GETRUSAGE -DNEED_STRCASESTR
+# gcc 4.7.3 finally includes strcasestr() in string.h iff _GNU_SOURCE token is defined
+# NB: C++ (or at least g++ 4.7.3) always includes strcasestr()---work around this with tokens in nco_sng_utl.[ch]
 ifneq (${PVM_ARCH},CRAY)
  CPP_TKN_OS += -DHAVE_MKSTEMP
 endif # CRAY
@@ -1173,6 +1223,12 @@ ifeq (${OPTS},X)
  FFLAGS := -g -O -fdebug-kludge -fbounds-check
 endif
 endif # endif G77 Fortran compiler
+ifeq (${DPKG},Y)
+ CPPFLAGS+=$(shell dpkg-buildflags --get CPPFLAGS)
+ CFLAGS+=$(shell dpkg-buildflags --get CFLAGS)
+ CXXFLAGS+=$(shell dpkg-buildflags --get CXXFLAGS)
+ LDFLAGS+=$(shell dpkg-buildflags --get LDFLAGS)
+endif # endif OMP
 ifeq (${OMP},Y)
  CFLAGS += ${OMP_FLG_C}
  CXXFLAGS += ${OMP_FLG_C}
@@ -1416,7 +1472,8 @@ ifeq (${PVM_ARCH},WIN32)
 CXX := g++
 CC := gcc -std=c99 -pedantic -D_BSD_SOURCE -D_POSIX_SOURCE
 # NB: nameser.h needs -Di386, but gcc sends -Di586 (on pentiums)
-CPP_TKN_OS += -Di386 -DNEED_STRCASECMP -DNEED_STRDUP -I/usr/include
+#CPP_TKN_OS += -Di386 -DNEED_STRCASECMP -DNEED_STRDUP -I/usr/include
+CPP_TKN_OS += -Di386 -DNEED_STRDUP -I/usr/include
 CPPFLAGS := ${CPP_TKN} ${CPP_TKN_OS} ${CPP_PTH} -I${NETCDF_INC}
 FC := g77
 LD := ld
@@ -1606,6 +1663,7 @@ ${MY_BIN_DIR}/mpncra:	${MY_OBJ_DIR}/mpncra.o lib
 	${MPICC} -o $@${BNR_SFX} $< ${LDFLAGS}
 	chmod 755 $@${BNR_SFX}
 	cd ${MY_BIN_DIR}; rm -f mpncea; ln -s -f mpncra mpncea
+	cd ${MY_BIN_DIR}; rm -f mpnces; ln -s -f mpncra mpnces
 	cd ${MY_BIN_DIR}; rm -f mpncrcat; ln -s -f mpncra mpncrcat
 mpncwa:   ${MY_BIN_DIR}/mpncwa
 ${MY_BIN_DIR}/mpncwa:	${MY_OBJ_DIR}/mpncwa.o ${MY_OBJ_DIR}/ncap_yacc.o ${MY_OBJ_DIR}/ncap_lex.o ${MY_OBJ_DIR}/ncap_utl.o lib
@@ -1643,6 +1701,7 @@ ${MY_BIN_DIR}/ncra:	${MY_OBJ_DIR}/ncra.o lib
 	${CC} -o $@${BNR_SFX} $< ${LDFLAGS}
 	chmod 755 $@${BNR_SFX}
 	cd ${MY_BIN_DIR}; rm -f ncea; ln -s -f ncra ncea
+	cd ${MY_BIN_DIR}; rm -f nces; ln -s -f ncra nces
 	cd ${MY_BIN_DIR}; rm -f ncrcat; ln -s -f ncra ncrcat
 ncrename:   ${MY_BIN_DIR}/ncrename
 ${MY_BIN_DIR}/ncrename:	${MY_OBJ_DIR}/ncrename.o lib
@@ -1650,7 +1709,11 @@ ${MY_BIN_DIR}/ncrename:	${MY_OBJ_DIR}/ncrename.o lib
 	chmod 755 $@${BNR_SFX}
 ncwa:   ${MY_BIN_DIR}/ncwa
 ${MY_BIN_DIR}/ncwa:	${MY_OBJ_DIR}/ncwa.o ${MY_OBJ_DIR}/ncap_yacc.o ${MY_OBJ_DIR}/ncap_lex.o ${MY_OBJ_DIR}/ncap_utl.o lib
+ifeq (${MSVC},TRUE)
+	${CC} -o $@${BNR_SFX} $<  ${LDFLAGS}
+else
 	${CC} -o $@${BNR_SFX} $<  ${MY_OBJ_DIR}/ncap_yacc.o ${MY_OBJ_DIR}/ncap_lex.o ${MY_OBJ_DIR}/ncap_utl.o ${LDFLAGS}
+endif
 	chmod 755 $@${BNR_SFX}
 bin: ${MDL_BIN_TRG}
 binclean: bin_cln
@@ -1679,7 +1742,7 @@ libnco_c++_tst:   ${MY_BLD_DIR}/libnco_c++_tst
 ${MY_BLD_DIR}/libnco_c++_tst:	${MY_BLD_DIR}/libnco_c++_tst.o lib
 	${CXX} -o $@${BNR_SFX} $< ${LDFLAGS}
 	chmod 755 $@${BNR_SFX}
-rpm:	${MY_BLD_DIR}/nco.spec # Building rpm requires root priveleges, e.g., sudo make NCO_VRS=4.0.9 rpm
+rpm:	${MY_BLD_DIR}/nco.spec # Building rpm requires root priveleges, e.g., sudo make NCO_VRS=4.3.9 rpm
 # 	Building NCO RPM requires following packages
 #       rpm -q bison flex netcdf-devel libtool automake autoconf udunits udunits-devel curl-devel libxml2 libxml2-devel librx-devel 
 #       sudo yum install bison flex netcdf-devel libtool automake autoconf udunits udunits-devel curl-devel libxml2 libxml2-devel librx-devel
@@ -1727,15 +1790,53 @@ tst:	dat
 	cd ${MY_BM_DIR}; \
 	env MY_BIN_DIR=${MY_BIN_DIR} ../bm/nco_bm.pl --dbg=0 --regress --udpreport ${FL_FMT_SNG} ${MPI_PRC_SNG} ${THR_NBR_SNG}
 # Targets in dat
+# ncgen rules to build netCDF4 files must be error-tolerant to build on netCDF3-only installations
+bug:	${MY_DAT_DIR}/buggy.nc
+${MY_DAT_DIR}/buggy.nc: ${MY_DAT_DIR}/buggy.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
 dap:	data
-	- cd ~/nco/data; scp in.nc in.cdl dust.ess.uci.edu:/var/www/html/dodsdata; scp in.nc in.cdl esmf.ess.uci.edu:/var/www/html/dodsdata; scp in.nc in.cdl esmf.ess.uci.edu:/data/dodsdata
+	-cd ~/nco/data; scp in.nc in.cdl dust.ess.uci.edu:/var/www/html/dodsdata; scp in.nc in.cdl esmf.ess.uci.edu:/var/www/html/dodsdata; scp in.nc in.cdl esmf.ess.uci.edu:/data/dodsdata
 data:	dat
-dat:	${MY_DAT_DIR}/in.nc ${MY_DAT_DIR}/in_rec_zero.nc
+dat:	${MY_DAT_DIR}/cmip5.nc ${MY_DAT_DIR}/obs.nc ${MY_DAT_DIR}/mdl.nc ${MY_DAT_DIR}/mdl2.nc ${MY_DAT_DIR}/in.nc ${MY_DAT_DIR}/in_grp.nc ${MY_DAT_DIR}/in_4.nc ${MY_DAT_DIR}/in_grp_1.nc ${MY_DAT_DIR}/in_grp_2.nc ${MY_DAT_DIR}/in_grp_3.nc ${MY_DAT_DIR}/in_rec_zero.nc
 	-for fl in ${MDL_DAT_STB}; do cd ${MY_DAT_DIR}; ln -s -f in.nc $$fl; done
 ${MY_DAT_DIR}/in.nc: ${MY_DAT_DIR}/in.cdl
 	ncgen -b -o $@ $<
 ${MY_DAT_DIR}/in_rec_zero.nc: ${MY_DAT_DIR}/in_rec_zero.cdl
 	ncgen -b -o $@ $<
+${MY_DAT_DIR}/in_grp.nc: ${MY_DAT_DIR}/in_grp.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/in_4.nc: ${MY_DAT_DIR}/in_4.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/in_grp_1.nc: ${MY_DAT_DIR}/in_grp_1.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/in_grp_2.nc: ${MY_DAT_DIR}/in_grp_2.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/in_1.nc: ${MY_DAT_DIR}/in_1.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/in_2.nc: ${MY_DAT_DIR}/in_2.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/in_grp_3.nc: ${MY_DAT_DIR}/in_grp_3.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/cmip5.nc: ${MY_DAT_DIR}/cmip5.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/obs.nc: ${MY_DAT_DIR}/obs.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/mdl.nc: ${MY_DAT_DIR}/mdl.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/mdl2.nc: ${MY_DAT_DIR}/mdl2.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/snd_ncwa.nc: ${MY_DAT_DIR}/snd_ncwa.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/snc_ncwa.nc: ${MY_DAT_DIR}/snc_ncwa.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/snd_grp.nc: ${MY_DAT_DIR}/snd_grp.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/snc_grp.nc: ${MY_DAT_DIR}/snc_grp.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/snc.nc: ${MY_DAT_DIR}/snc.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
+${MY_DAT_DIR}/snd.nc: ${MY_DAT_DIR}/snd.cdl
+	-ncgen -k netCDF-4 -b -o $@ $<
 dataclean: dat_cln
 dat_cln:
 	rm -f ${MDL_DAT}
@@ -1806,9 +1907,11 @@ ${libnco}.a: ${libnco}.a(${MY_OBJ_DIR}/nco_att_utl.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_dbg.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_dmn_utl.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_fl_utl.o) \
+	${libnco}.a(${MY_OBJ_DIR}/nco_grp_trv.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_grp_utl.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_lmt.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_lst_utl.o) \
+	${libnco}.a(${MY_OBJ_DIR}/nco_md5.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_mmr.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_msa.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_mss_val.o) \
@@ -1822,6 +1925,7 @@ ${libnco}.a: ${libnco}.a(${MY_OBJ_DIR}/nco_att_utl.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_scl_utl.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_scm.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_sng_utl.o) \
+	${libnco}.a(${MY_OBJ_DIR}/nco_srm.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_var_avg.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_var_lst.o) \
 	${libnco}.a(${MY_OBJ_DIR}/nco_var_rth.o) \
@@ -1846,14 +1950,14 @@ autotools: dst_cln
 	- cd ..; aclocal;autoheader;automake --foreign;autoconf ; ./configure --enable-optimize-custom --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man ; ${MAKE} install
 rootclean: root_cln
 root_cln:
-	- cd ..; rm -f config.h.in config.h config.guess config.log config.status config.sub libtool Makefile stamp-h1; rm -r -f autom4te.cache conftest
+	- cd ..; rm -f config.h config.guess config.log config.status config.sub libtool Makefile stamp-h1; rm -r -f autom4te.cache conftest
 # Targets in src
 src: ${MDL_NCAP}
 src_cln:
 	rm -f ${MDL_NCAP}
 # Targets in /usr/local
 sys: ${MDL_BIN_TRG}
-	- cd ${MY_BIN_DIR};sudo /bin/cp -f ${MDL_BIN_TRG} ncap2 /usr/local/bin; cd /usr/local/bin; sudo rm -f ncdiff ncea ncrcat ncunpack; sudo ln -s -f ncbo ncdiff; sudo ln -s -f ncra ncea; sudo ln -s -f ncra ncrcat; sudo ln -s -f ncpdq ncunpack; sudo ln -s -f ncpdq ncpack; cd ${HOME}/nco/src/nco++; ${MAKE} -f Makefile.old OPTS=${OPTS} $@
+	- cd ${MY_BIN_DIR};sudo /bin/cp -f ${MDL_BIN_TRG} ncap2 /usr/local/bin; cd /usr/local/bin; sudo rm -f ncdiff ncea nces ncrcat ncunpack; sudo ln -s -f ncbo ncdiff; sudo ln -s -f ncra ncea;  sudo ln -s -f ncra nces; sudo ln -s -f ncra ncrcat; sudo ln -s -f ncpdq ncunpack; sudo ln -s -f ncpdq ncpack; cd ${HOME}/nco/src/nco++; ${MAKE} -f Makefile.old OPTS=${OPTS} $@
 sys_cln:
 	- cd /usr/local/bin;rm -f ${MDL_BIN_TRG}
 
@@ -1893,11 +1997,13 @@ dbg:
 	@printf "HOST = ${HOST}\n"
 	@printf "HOSTNAME = ${HOSTNAME}\n"
 	@printf "ICC_RCH_ARG = ${ICC_RCH_ARG}\n"
+	@printf "INC_NCAR = ${INC_NCAR}\n"
 	@printf "LAMMPICC = ${LAMMPICC}\n"
 	@printf "LAMMPICXX = ${LAMMPICXX}\n"
 	@printf "LDFLAGS = ${LDFLAGS}\n"
 	@printf "LEX = ${LEX}\n"
 	@printf "LFLAGS = ${LFLAGS}\n"
+	@printf "LIB_NCAR = ${LIB_NCAR}\n"
 	@printf "LINUX_CC = $(LINUX_CC)\n"
 	@printf "LINUX_CXX = $(LINUX_CXX)\n"
 	@printf "MDL_BIN_TRG = ${MDL_BIN_TRG}\n"
@@ -1960,9 +2066,9 @@ dbg:
 distclean: dst_cln
 dst_cln: cln bin_cln dat_cln doc_cln root_cln
 	cd ${MY_BLD_DIR}; rm -f *~
-	cd ${MY_DAT_DIR}; rm -f in.nc in_rec_zero.nc *~
+	cd ${MY_DAT_DIR}; rm -f buggy.nc cmip5.nc obs.nc mdl.nc mdl2.nc in.nc in_4.nc in_grp.nc in_grp_1.nc in_grp_2.nc in_grp_3.nc in_rec_zero.nc *~
 tags: 
-	etags ${MY_SRC_DIR}/*.h $(filter-out ${TAGS_FILTER_FILES},${SRC_LST}) ${MDL_DOC_SRC} ${MDL_MAN} ${MDL_BLD_SRC} ${MDL_CXX_SRC} ${MDL_NCAP_SRC}
+	etags ${MY_SRC_DIR}/*.h $(filter-out ${TAGS_FILTER_FILES},${SRC_LST}) ${MDL_DOC_SRC} ${MDL_MAN} ${MDL_BLD_SRC} ${MDL_CXX_SRC} ${MDL_NCAP_SRC} ${MDL_QT_SRC}
 
 # Reset internal YACC and LEX patterns
 %.c : %.y
diff --git a/bld/nco.spec b/bld/nco.spec
index e3f360d..047a759 100644
--- a/bld/nco.spec
+++ b/bld/nco.spec
@@ -2,17 +2,17 @@
 # http://cvs.fedoraproject.org/viewvc/devel/nco/nco.spec?view=co
 
 Name:           nco
-Version:        4.0.9
+Version:        4.3.9
 Release:        1%{?dist}
 Summary:        Programs that manipulate netCDF files
 Group:          Applications/Engineering
 License:        GPL3
-URL:            http://nco.sourceforge.net/
+URL:            http://nco.sf.net/
 
-# Obtain NCO version 4.0.9-1 tar.gz from Sourceforge using CVS:
+# Obtain NCO version 4.3.9-1 tar.gz from Sourceforge using CVS:
 # cvs -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco login
-# cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -r nco-4_0_9-1 -d nco-%{version} nco
-# tar czf nco-%{version}.tar.gz --exclude='nco-4.0.9/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude='ncap_yacc.[ch]' ./nco-%{version}
+# cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -r nco-4.3.9-1 -d nco-%{version} nco
+# tar czf nco-%{version}.tar.gz --exclude='nco-4.3.9/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude='ncap_yacc.[ch]' ./nco-%{version}
 Source0:        nco-%{version}.tar.gz
 #Patch0:		nco_install_C_headers.patch
 #Patch1:         nco_find_udunits-dat.patch
@@ -108,6 +108,60 @@ fi
 # %{_libdir}/libnco++.so
 
 %changelog
+* Wed Dec 06 2013 Charlie Zender <zender at uci.edu> - 4.3.9-1
+- new upstream 4.3.9
+
+* Wed Nov 06 2013 Charlie Zender <zender at uci.edu> - 4.3.8-1
+- new upstream 4.3.8
+
+* Thu Oct 17 2013 Charlie Zender <zender at uci.edu> - 4.3.7-1
+- new upstream 4.3.7
+
+* Fri Sep 27 2013 Charlie Zender <zender at uci.edu> - 4.3.6-1
+- new upstream 4.3.6
+
+* Fri Sep 20 2013 Charlie Zender <zender at uci.edu> - 4.3.5-1
+- new upstream 4.3.5
+
+* Thu Aug 01 2013 Charlie Zender <zender at uci.edu> - 4.3.4-1
+- new upstream 4.3.4
+
+* Wed Jul 24 2013 Charlie Zender <zender at uci.edu> - 4.3.3-1
+- new upstream 4.3.3
+
+* Fri Jul 05 2013 Charlie Zender <zender at uci.edu> - 4.3.2-1
+- new upstream 4.3.2
+
+* Wed May 01 2013 Charlie Zender <zender at uci.edu> - 4.3.1-1
+- new upstream 4.3.1
+
+* Thu Mar 28 2013 Charlie Zender <zender at uci.edu> - 4.3.0-1
+- new upstream 4.3.0
+
+* Tue Mar 19 2013 Charlie Zender <zender at uci.edu> - 4.2.6-1
+- new upstream 4.2.6
+
+* Mon Jan 28 2013 Charlie Zender <zender at uci.edu> - 4.2.5-1
+- new upstream 4.2.5
+
+* Mon Jan 21 2013 Charlie Zender <zender at uci.edu> - 4.2.4-1
+- new upstream 4.2.4
+
+* Tue Nov 13 2012 Charlie Zender <zender at uci.edu> - 4.2.3-1
+- new upstream 4.2.3
+
+* Mon Oct 29 2012 Charlie Zender <zender at uci.edu> - 4.2.2-1
+- new upstream 4.2.2
+
+* Thu Aug 02 2012 Charlie Zender <zender at uci.edu> - 4.2.1-1
+- new upstream 4.2.1
+
+* Mon Jun 11 2012 Charlie Zender <zender at uci.edu> - 4.2.0-1
+- new upstream 4.2.0
+
+* Thu Mar 29 2012 Charlie Zender <zender at uci.edu> - 4.1.0-1
+- new upstream 4.1.0
+
 * Mon Feb 13 2012 Charlie Zender <zender at uci.edu> - 4.0.9-1
 - new upstream 4.0.9
 
@@ -240,7 +294,7 @@ fi
 - added "Provides:nco-devel" for the headers and libs
 
 * Mon Oct  4 2004 Ed Hill <eh3 at mit.edu> - 0:2.9.9-0.fdr.2
-- Add some of Michael Schwendt's suggested INC/LIB path fixes and 
+- Add some of Michael Schwendts suggested INC/LIB path fixes and 
   sync with the netcdf-3.5.1-0.fdr.10 dependency.
 
 * Thu Sep 23 2004 Ed Hill <eh3 at mit.edu> - 0:2.9.9-0.fdr.1
diff --git a/bld/nco_dst.pl b/bld/nco_dst.pl
index 7e064bd..7c17f52 100755
--- a/bld/nco_dst.pl
+++ b/bld/nco_dst.pl
@@ -6,17 +6,17 @@
 # Usage:
 # Export tagged, public versions
 
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4_0_9 # Build, do not install
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --nst_all nco-4_0_9 # Install, do not build
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --nst_all nco-4_0_9 # Build and install
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_cnt nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_prs nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cgd_cnt nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cray_prs nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --bbl_cnt nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --blk_cnt nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --dat_cnt nco-4_0_9
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --ute_prs nco-4_0_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4_3_9 # Build, do not install
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --nst_all nco-4_3_9 # Install, do not build
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --nst_all nco-4_3_9 # Build and install
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_cnt nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_prs nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cgd_cnt nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cray_prs nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --bbl_cnt nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --blk_cnt nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --dat_cnt nco-4_3_9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --ute_prs nco-4_3_9
 
 # Export daily snapshot
 # ${HOME}/nco/bld/nco_dst.pl --dbg=2 
@@ -30,7 +30,7 @@ BEGIN{
     unshift @INC,$ENV{'HOME'}.'/perl'; # Location of csz.pl and DBG.pm HaS98 p. 170
 } # end BEGIN
 
-my $CVS_Header='$Header: /cvsroot/nco/nco/bld/nco_dst.pl,v 1.186 2011/05/10 22:03:04 zender Exp $';
+my $CVS_Header='$Header: /cvsroot/nco/nco/bld/nco_dst.pl,v 1.206 2013/11/13 20:57:01 zender Exp $';
 
 # Specify modules
 use strict; # Protect all namespaces
@@ -67,9 +67,9 @@ my ($rsh_cmd,$rcp_cmd,$cp_cmd,$rm_cmd,$mkdir_cmd,$cvs_cmd);
 my $False=0;
 my $True=1;
 
-my $CVS_Date='$Date: 2011/05/10 22:03:04 $';
-my $CVS_Id='$Id: nco_dst.pl,v 1.186 2011/05/10 22:03:04 zender Exp $';
-my $CVS_Revision='$Revision: 1.186 $';
+my $CVS_Date='$Date: 2013/11/13 20:57:01 $';
+my $CVS_Id='$Id: nco_dst.pl,v 1.206 2013/11/13 20:57:01 zender Exp $';
+my $CVS_Revision='$Revision: 1.206 $';
 my $CVSROOT='zender at nco.cvs.sf.net:/cvsroot/nco'; # CVS repository
 my $DATA=$ENV{'DATA'};
 my $HOME=$ENV{'HOME'};
@@ -248,7 +248,7 @@ if($bld){
 
 # Set up FTP server
     chdir $dst_pth_pfx or die "$prg_nm: ERROR unable to chdir to $dst_pth_pfx: $!\n"; # $! is system error string
-    cmd_prc("$tar_cmd cvzf $dst_fl --exclude='nco-4.0.9/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude=ncap_yacc.[ch] ./$dst_vrs"); # Create gzipped tarfile
+    cmd_prc("$tar_cmd cvzf $dst_fl --exclude='nco-4.3.9/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude=ncap_yacc.[ch] ./$dst_vrs"); # Create gzipped tarfile
     cmd_prc("$rsh_cmd $www_mch $rm_cmd $www_drc/src/$dst_fl"); # Remove any distribution with same name
     if($dly_snp){cmd_prc("$rsh_cmd $www_mch $rm_cmd -r $www_drc/src/nco-????????.tar.gz");} # Remove previous daily snapshots from WWW server
     cmd_prc("$rcp_cmd $dst_fl $www_mch:$www_drc/src"); # Copy local tarfile to WWW server
diff --git a/bld/pvmgetarch b/bld/pvmgetarch
index f3c5e3b..84f2b8d 100755
--- a/bld/pvmgetarch
+++ b/bld/pvmgetarch
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# $Id: pvmgetarch,v 1.8 2010/07/05 19:18:26 zender Exp $
+# $Id: pvmgetarch,v 1.9 2013/11/21 00:15:17 pvicente Exp $
 
 # Purpose: Generate PVM architecture string
 
@@ -172,6 +172,10 @@ if [ "$ARCH" = UNKNOWN ]; then
 		fi
 
 		case "$os,$ht" in
+		    CYGWIN*,x86_64) ARCH=WIN32 ;;
+                esac
+
+		case "$os,$ht" in
 		*,i[3456]86 )    case "$rv" in
 				4.*) ARCH=UWARE ;;
 #csz++
diff --git a/bm/NCO_benchmarks.pm b/bm/NCO_benchmarks.pm
index 1b3420c..e766565 100644
--- a/bm/NCO_benchmarks.pm
+++ b/bm/NCO_benchmarks.pm
@@ -1,6 +1,6 @@
 package NCO_benchmarks;
 
-# $Header: /cvsroot/nco/nco/bm/NCO_benchmarks.pm,v 1.19 2011/02/21 05:41:29 zender Exp $
+# $Header: /cvsroot/nco/nco/bm/NCO_benchmarks.pm,v 1.22 2013/12/02 01:05:55 zender Exp $
 
 # Purpose: library module supporting nco_bm.pl benchmark and regression tests
 # File contains BENCHMARK code (as opposed to the REGRESSION tests in "NCO_rgr.pm")
@@ -73,7 +73,7 @@ sub benchmarks{
 	}
 
 # The general format for the benchmarks is the same as for the regressions:
-# 	#################### begin ncea benchmark
+# 	#################### begin nces benchmark
 # 	$opr_nm='nco_name';
 # 	$dsc_sng = 'unique descriptor string for this benchmark';
 # 	####################
@@ -84,7 +84,7 @@ sub benchmarks{
 #	# named uniquely using the ones described in nco_bm.pl: 336-350 (foo...).
 #	# The last nco command is usually an ncks command that examines a single value generated
 #	# from the preceding chain of commands
-# 		$tst_cmd[0] = "ncea -h -O $fl_fmt $nco_D_flg $omp_flg -n $fl_cnt,2,1 $in_pth_arg stl_5km_00.nc $fl_out";
+# 		$tst_cmd[0] = "nces -h -O $fl_fmt $nco_D_flg $omp_flg -n $fl_cnt,2,1 $in_pth_arg stl_5km_00.nc $fl_out";
 # 		if($dbg_lvl > 2){print "entire cmd: $tst_cmd[0]\n";}
 # 		$tst_cmd[1] = "ncwa -h -O $fl_fmt $nco_D_flg $omp_flg -y sqrt -a lat,lon $fl_out $fl_out";
 # 		$tst_cmd[2] = "ncks -C -H -s '%f' -v d2_00 $fl_out";
@@ -153,13 +153,13 @@ if ($dbg_lvl >= 1) {print "paused after ncap2 - hit return to continue"; $wait =
 
 if ($dbg_lvl >= 1) {print "paused - hit return to continue"; $wait = <STDIN>;}
 
-	#################### begin ncea benchmark
-	$opr_nm='ncea';
-	$dsc_sng = 'ncea averaging 2^5 files';
+	#################### begin nces benchmark
+	$opr_nm='nces';
+	$dsc_sng = 'nces averaging 2^5 files';
 	####################
 	if ($mpi_prc == 0 || ($mpi_prc > 0 && $opr_sng_mpi =~ /$opr_nm/)) {
 		if ($dbg_lvl > 0) {print "\nBenchmark: \$fl_fmt = [$fl_fmt], \$nco_D_flg = $nco_D_flg, \$omp_flg = [$omp_flg], \$dsc_sng = $dsc_sng, \$fl_cnt = [$fl_cnt], \n";}
-		$tst_cmd[0] = "ncea -h -O $fl_fmt $nco_D_flg $omp_flg -n $fl_cnt,2,1 $in_pth_arg stl_5km_00.nc %tmp_fl_00%";
+		$tst_cmd[0] = "nces -h -O $fl_fmt $nco_D_flg $omp_flg -n $fl_cnt,2,1 $in_pth_arg stl_5km_00.nc %tmp_fl_00%";
 		if($dbg_lvl > 2){print "entire cmd: $tst_cmd[0]\n";}
 		$tst_cmd[1] = "ncwa -h -O $fl_fmt $nco_D_flg $omp_flg -y sqrt -a lat,lon %tmp_fl_00% %tmp_fl_01%";
 		$tst_cmd[2] = "ncks -C -H -s '%f' -v d2_00 %tmp_fl_01%";
diff --git a/bm/NCO_bm.pm b/bm/NCO_bm.pm
index 48609e3..f1795e1 100644
--- a/bm/NCO_bm.pm
+++ b/bm/NCO_bm.pm
@@ -1,6 +1,6 @@
 package NCO_bm;
 
-# $Header: /cvsroot/nco/nco/bm/NCO_bm.pm,v 1.75 2012/01/01 20:51:53 zender Exp $
+# $Header: /cvsroot/nco/nco/bm/NCO_bm.pm,v 1.86 2013/12/02 01:05:55 zender Exp $
 
 # Purpose: Library for nco_bm.pl benchmark and regression tests
 # Module contains following functions:
@@ -78,7 +78,7 @@ sub bm_usg {
   Usage:
     nco_bm.pl (options) [list of operators to test from the following list]
 	
-ncap2 ncatted ncbo ncflint ncea ncecat
+ncap2 ncatted ncbo ncflint nces ncecat
 ncks ncpdq ncra ncrcat ncrename ncwa net      (default tests all)
 	
 where (options) are:
@@ -134,9 +134,9 @@ Also, unless history is required, use '-h' to inhibit
 appending history to file.
 
 This script is part of the netCDF Operators package:
-http://nco.sourceforge.net
+http://nco.sf.net
 
-Copyright 1995--2012 Charlie Zender
+Copyright 1995--2013 Charlie Zender
 
 USAGE
 exit(0);
@@ -150,10 +150,10 @@ sub bm_ntl($$){
     my $dbg_lvl; # [flg] Debugging level
     ($bch_flg,$dbg_lvl)=@_;
 # Enumerate operators to test
-    @opr_lst_all = qw( ncap2 ncdiff ncatted ncbo ncflint ncea ncecat ncks ncpdq ncra ncrcat ncrename ncwa net );
+    @opr_lst_all = qw( ncap2 ncdiff ncatted ncbo ncflint nces ncecat ncks ncpdq ncra ncrcat ncrename ncwa net);
     @opr_lst_mpi = qw( ncbo ncecat ncflint ncpdq ncra ncwa ncpdq ncra);
-    $opr_sng_mpi = "ncbo ncdiff ncecat ncflint ncea ncpdq ncra ncwa "; # ncpdq ncra MPI, but fail bench
-    $opr_rgr_mpi = "ncbo ncdiff ncecat ncflint ncea ncpdq ncra ncwa ncrcat"; # need all of them for regression
+    $opr_sng_mpi = "ncbo ncdiff ncecat ncflint nces ncpdq ncra ncwa "; # ncpdq ncra MPI, but fail bench
+    $opr_rgr_mpi = "ncbo ncdiff ncecat ncflint nces ncpdq ncra ncwa ncrcat"; # need all of them for regression
     
     if (scalar @ARGV > 0){@opr_lst=@ARGV;}else{@opr_lst=@opr_lst_all;}
     if (defined $ENV{'MY_BIN_DIR'} && $ENV{'MY_BIN_DIR'} ne ""){$MY_BIN_DIR=$ENV{'MY_BIN_DIR'};}
@@ -185,7 +185,7 @@ sub bm_ntl($$){
     my $dotlib = '';
     $dotlib = ".libs/lt-" if `head -1 $MY_BIN_DIR/ncatted` =~ m/sh/;
     $sym_link{ncdiff}=$dotlib . "ncbo";
-    $sym_link{ncea}=$dotlib . "ncra";
+    $sym_link{nces}=$dotlib . "ncra";
     $sym_link{ncrcat}=$dotlib . "ncra";
     foreach(keys %sym_link) {
 	system("cd $MY_BIN_DIR && ln -s -f $sym_link{$_} $_ || (/bin/rm -f $_ && ln -s -f $sym_link{$_} $_)");
@@ -363,7 +363,7 @@ sub drc_dat_set {
     
     if (defined $ENV{'DATA'} && $ENV{'DATA'} ne "") { # then is it readwritable?
 	if (-w $ENV{'DATA'} && -r $ENV{'DATA'}) {
-	    if ($que == 0) {print "INFO: Using your environment variable DATA \n\t   [$ENV{'DATA'}]\n\t as the root DATA directory for this series of tests.\n\n";}
+	    if ($que == 0) {print "INFO: Using your environment variable DATA \n\t   [$ENV{'DATA'}]\n\t as the root DATA directory for this series of tests.\n";}
 	    if ($caseid ne "") {
 		$drc_dat = "$ENV{'DATA'}/nco_bm/$caseid";
 		my $err = `mkdir -p -m0777 $drc_dat`;
@@ -529,7 +529,7 @@ sub tst_run {
     # csz++
     $dot_nbr_min=3; # Minimum number of dots between description and "ok" result
     $dot_sng='.....................................................................';
-    $dsc_lng_max=50; # Maximum length of description printed
+    $dsc_lng_max=80; # Maximum length of description printed
     $opr_lng_max=7; # Maximum length of operator name
     $spc_nbr_min=1; # Minimum number of spaces between test ID and description
     $spc_sng='       ';
@@ -965,7 +965,15 @@ sub rsl_smr_rgr {
     if ($dbg_lvl == 0) {print $reportstr;}
     else { &bm_vrb($dbg_lvl, $wnt_log, $reportstr); }
     
-    if (!$udp_rpt) { # set either explicitly (1st time) or set in ~/.ncorc after user agreed to it
+    my $skp_rpt = $ENV{'NCO_AVOID_BM_REPORT'};
+    #print "skp_rpt=", $skp_rpt;
+    #print "udp_rpt=", $udp_rpt;
+    if ($skp_rpt == 1){
+     $udp_rpt = 0;
+     #print "udp_rpt=", $udp_rpt;
+     }
+
+    if ($udp_rpt == 1 ) { # set either explicitly (1st time) or set in ~/.ncorc after user agreed to it
 	
 	print "\n\nThe log-formatted result from this regression test is:\n$udp_dat\n\n";
 	print << "REQ_REGR_PACKET";
diff --git a/bm/NCO_rgr.pm b/bm/NCO_rgr.pm
index 17cbeeb..31cbfed 100644
--- a/bm/NCO_rgr.pm
+++ b/bm/NCO_rgr.pm
@@ -1,6 +1,6 @@
 package NCO_rgr;
 
-# $Header: /cvsroot/nco/nco/bm/NCO_rgr.pm,v 1.110 2011/11/15 02:16:35 zender Exp $
+# $Header: /cvsroot/nco/nco/bm/NCO_rgr.pm,v 1.378 2013/12/02 01:05:55 zender Exp $
 
 # Purpose: All REGRESSION tests for NCO operators
 # BENCHMARKS are coded in "NCO_benchmarks.pm"
@@ -74,7 +74,7 @@ sub tst_rgr {
 #             $foo1_fl    -> %tmp_fl_01%
 #             $foo2_fl    -> %tmp_fl_02%
     
-    if ($dodap ne "FALSE") {
+    if($dodap ne "FALSE"){
 	print "DEBUG: in tst_rgr(), \$dodap = $dodap \n";
 	if ($dodap ne "" && $fl_pth =~ /http/ ) { $in_pth_arg = "-p $fl_pth"; }
 	if ($dodap eq "") { $in_pth_arg = "-p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata"; }
@@ -82,7 +82,64 @@ sub tst_rgr {
     NCO_bm::dbg_msg(1,"-------------  REGRESSION TESTS STARTED from tst_rgr()  -------------");
     
     if(0){} #################  SKIP THESE #####################
-    
+
+
+# NCO 4.2.4
+# Output for some tests vary when ENABLE_NETCDF4 is not set
+# Add check for ENABLE_NETCDF4 by reading config.h 
+
+# error messages for ENABLE_NETCDF4 not defined
+my $ncks_msg_no_netcdf4 = "ncks: HINT: Obtain or build a netCDF4-enabled version of NCO.  Try, e.g., ./configure --enable-netcdf4 ...;make;make install";
+my $ncecat_msg_no_netcdf4 = "ncecat: HINT: Obtain or build a netCDF4-enabled version of NCO.  Try, e.g., ./configure --enable-netcdf4 ...;make;make install";
+# error messages for HAVE_NETCDF4_H not defined
+my $ncks_msg_no_have_netcdf4 = "nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)";
+# strings to find
+my $find_undef_enable_netcdf4 = "undef ENABLE_NETCDF4";
+my $find_define_enable_netcdf4 = "define ENABLE_NETCDF4";
+my $find_undef_have_netcdf4 = "undef HAVE_NETCDF4_H";
+my $find_define_have_netcdf4 = "define HAVE_NETCDF4_H";
+my $ENABLE_NETCDF4=-1;
+my $HAVE_NETCDF4_H=-1;
+    
+print "\n";
+
+# Read config.h
+my $use_config_h=0;
+if ($use_config_h == 1){
+	open FILE, "../config.h" or die $!;
+	while (my $line = <FILE>) { 
+	if ($line =~ /$find_undef_enable_netcdf4/){
+	  print "INFO: ENABLE_NETCDF4 is disabled in config.h\n";
+	  $ENABLE_NETCDF4=0;
+	 }
+	if ($line =~ /$find_define_enable_netcdf4/){
+	  print "INFO: ENABLE_NETCDF4 is defined in config.h\n";
+	  $ENABLE_NETCDF4=1;
+	 }
+	if ($line =~ /$find_undef_have_netcdf4/){
+	  print "INFO: HAVE_NETCDF4_H is disabled in config.h\n";
+	  $HAVE_NETCDF4_H=0;
+	 }
+	if ($line =~ /$find_define_have_netcdf4/){
+	  print "INFO: HAVE_NETCDF4_H is defined in config.h\n";
+	  $HAVE_NETCDF4_H=1;
+	 } 
+	}
+} #$use_config_h
+
+system("ncks --get_prg_info");
+# system() runs a command and returns exit status information as a 16 bit value: 
+# Low 7 bits are signal process died from, if any, and high 8 bits are actual exit value
+# fxm: 20130125 deprecate this hack in favor of obtaining tokens directly from ncks
+if( $? == -1 ){
+    print "failed to execute: ncks --get_prg_info: $!\n";
+}else{
+  my $exit_value=$? >> 8;
+  if ($exit_value==20) {$HAVE_NETCDF4_H=0;}else{$HAVE_NETCDF4_H=1;}
+  if ($exit_value==30) {$ENABLE_NETCDF4=1;}else{$ENABLE_NETCDF4=0;}
+}
+print "\n";
+
 ####################
 #### ncap2 tests ####
 ####################
@@ -93,13 +150,13 @@ sub tst_rgr {
 # have an ncks which triggers this addition from the sub tst_run() -> gnarly_pything.
 # this stanza also requires a script on the SS.
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S ncap2.in $in_pth_arg in.nc %tmp_fl_00% %stdouterr%";
-    $dsc_sng="running ncap2.in script in nco_bm.pl (failure expected on netcdf4 ncap81)";
-    $tst_cmd[1]="ncks -C -H -v b2 -s '%d' %tmp_fl_00%";
+    $dsc_sng="running ncap2.in script in nco_bm.pl (failure expected on netCDF4 ncap81)";
+    $tst_cmd[1]="ncks -C -H -v b2 --no_blank -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="999";
 #	$tst_cmd[3]="NO_SS";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
 # printf("paused @ [%s:%d]  - hit return to continue\n", __FILE__, __LINE__); my $wait = <STDIN>;
     
@@ -109,7 +166,7 @@ sub tst_rgr {
     $tst_cmd[2]="0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 ";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
 #printf("paused @ [%s:%d]  - hit return to continue\n", __FILE__, __LINE__); my $wait = <STDIN>;
 
@@ -119,7 +176,7 @@ sub tst_rgr {
     $tst_cmd[2]="1.000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 #print "paused - hit return to continue"; my $wait = <STDIN>;
     
 # where did e_dbl tst_run??  it's in in.cdl but gets lost thru the rgrs...?
@@ -129,7 +186,7 @@ sub tst_rgr {
     $tst_cmd[2]="1.000000000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=4*atan(1)' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%.12f\\n' %tmp_fl_00%";
@@ -137,7 +194,7 @@ sub tst_rgr {
     $tst_cmd[2]="3.141592741013";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=erf(1)' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%.12f\\n' %tmp_fl_00%";
@@ -145,7 +202,7 @@ sub tst_rgr {
     $tst_cmd[2]="0.842701";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     #fails - wrong result ???
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=gamma(0.5)' $in_pth_arg in.nc %tmp_fl_00%";
@@ -154,7 +211,7 @@ sub tst_rgr {
     $tst_cmd[2]="1.772453851";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'pi=4*atan(1);foo=sin(pi/2)' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -v foo -s '%.12f\\n' %tmp_fl_00%";
@@ -162,7 +219,7 @@ sub tst_rgr {
     $tst_cmd[2]="1.000000000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'pi=4*atan(1);foo=cos(pi)' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -v foo -s '%.12f\\n' %tmp_fl_00%";
@@ -170,26 +227,26 @@ sub tst_rgr {
     $tst_cmd[2]="-1.000000000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array\
+    $#tst_cmd=0; # Reset array\
     
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'defdim(\"a\",3);defdim(\"b\",4); a[\$a,\$b]=10;c=a(1,1);' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -v c -s '%i' %tmp_fl_00%";
-    $dsc_sng="Casting variable with same name as dimension (failure expected on netcdf4 ncap81)";
+    $dsc_sng="Casting variable with same name as dimension (failure expected on netCDF4 ncap81)";
     ##TODO ncap81
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'defdim(\"a\",1); b[\$a]=10;c=b(0:0);' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncwa -h -O $fl_fmt $nco_D_flg -C  -a a %tmp_fl_00% %tmp_fl_01%";
+    $tst_cmd[1]="ncwa -h -O $fl_fmt $nco_D_flg -C -a a %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[2]="ncks -C -H -v b -s '%i' %tmp_fl_01%";
-    $dsc_sng="Casting variable with a single dim of sz=1 ";
+    $dsc_sng="Casting variable with a single dim of sz=1";
     ##TODO ncap81
     $tst_cmd[3]="10";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 
 # printf("paused @ %s:%d  - hit return to continue", __FILE__ , __LINE__); my $wait=<STDIN>;
     
@@ -199,6 +256,9 @@ sub tst_rgr {
 ####################
 	$opr_nm="ncatted";
 ####################
+
+#ncatted #1
+
 	# FAILS!
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a units,,m,c,'meter second-1' $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncks -C -m -v lev %tmp_fl_00% | grep units | cut -d' ' -f 11-12"; ## daniel:fixme cut/ncks but how to do grep?
@@ -206,9 +266,11 @@ sub tst_rgr {
 	$tst_cmd[2]="meter second-1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
 	
 #printf("paused @ %s:%d  - hit return to continue", __FILE__ , __LINE__); my $wait = <STDIN>;
+
+#ncatted #2
 	
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a _FillValue,val_one_mss,m,f,0.0 $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncks -C -H -s '%g' -d lat,1 -v val_one_mss %tmp_fl_00%";
@@ -217,7 +279,9 @@ sub tst_rgr {
 	$tst_cmd[2]="0";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
+
+#ncatted #3
 
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a _FillValue,wgt_one,c,f,200.0 $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncks -C -H -s '%g' -d lat,1 -v wgt_one %tmp_fl_00%";
@@ -225,10 +289,10 @@ sub tst_rgr {
 	$tst_cmd[2]="1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
 
+#ncatted #4
 
-	
 # Fragile: This test fails when length of command changes
 	$tst_cmd[0]="ncatted -O --hdr_pad=1000 $nco_D_flg -a missing_value,val_one_mss,m,f,0.0 $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncks -M %tmp_fl_00% | grep hdr_pad | wc > %tmp_fl_01%";
@@ -237,16 +301,85 @@ sub tst_rgr {
 	$tst_cmd[3]="27";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
 
-	$tst_cmd[0]="ncatted -O $nco_D_flg -a nw1,'^three*',c,i,999  $in_pth_arg in.nc %tmp_fl_00%";
+#ncatted #5
+
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a nw1,'^three*',c,i,999 $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncap2 -v -C -O -s 'n2=three_dmn_var_int\@nw1;' %tmp_fl_00% %tmp_fl_01%";
 	$tst_cmd[2]="ncks -O -C -H -s '%i'  -v n2 %tmp_fl_01%";
-	$dsc_sng="Check ncatted variable wildcarding -(Failure expected when NOT built with regex)";
+	$dsc_sng="Variable wildcarding (requires regex)";
 	$tst_cmd[3]="999";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
+	
+#4.3.8	
+#ncatted #6
+#ncatted -O -a purpose,rlev,m,c,new_value in_grp_3.nc out.nc
+
+    if($HAVE_NETCDF4_H == 1){
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a purpose,rlev,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g3 -v rlev %tmp_fl_00%";
+	$dsc_sng="(Groups) Modify attribute for variable (input relative name)";
+	$tst_cmd[2]="rlev attribute 0: purpose, size = 9 NC_CHAR, value = new_value";
+	$tst_cmd[3]="SS_OK";
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array	
+	
+#ncatted #7	
+	
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a purpose,/g3/rlev,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g3 -v rlev %tmp_fl_00%";
+	$dsc_sng="(Groups) Modify attribute for variable (input absolute name)";
+	$tst_cmd[2]="rlev attribute 0: purpose, size = 9 NC_CHAR, value = new_value";
+	$tst_cmd[3]="SS_OK";
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array	
+	
+#ncatted #8
+
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a g3_group_attribute,group,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -M %tmp_fl_00% | grep g3_group_attribute";
+	$dsc_sng="(Groups) Modify attribute for group (input relative name)";
+	$tst_cmd[2]="Group attribute 0: g3_group_attribute, size = 9 NC_CHAR, value = new_value";
+	$tst_cmd[3]="SS_OK";
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array	
+
+#ncatted #9
+
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a nw1,'^three*',c,i,999 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -C -g g10 -v three_dmn_rec_var %tmp_fl_00%";
+	$dsc_sng="(Groups) Variable wildcarding (requires regex)";
+	$tst_cmd[2]="three_dmn_rec_var attribute 1: nw1, size = 1 NC_INT, value = 999";
+	$tst_cmd[3]="SS_OK";
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array	
+
+#ncatted #10
+
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a purpose,,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g3 -v rlev %tmp_fl_00%";
+	$dsc_sng="(Groups) Edit all variables";
+	$tst_cmd[2]="rlev attribute 0: purpose, size = 9 NC_CHAR, value = new_value";
+	$tst_cmd[3]="SS_OK";
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array
+
+#ncatted #11
+
+	$tst_cmd[0]="ncatted -O $nco_D_flg -a Conventions,group,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -M %tmp_fl_00% | grep Conventions";
+	$dsc_sng="(Groups) Modify global attribute";
+	$tst_cmd[2]="Group attribute 0: Conventions, size = 9 NC_CHAR, value = new_value";
+	$tst_cmd[3]="SS_OK";
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array		
+
+
+	
+    } # $HAVE_NETCDF4_H	
     }
     
 # printf("paused @ %s:%d  - hit return to continue", __FILE__ , __LINE__); my $wait = <STDIN>;
@@ -256,15 +389,19 @@ sub tst_rgr {
 ####################
     $opr_nm="ncbo";
 ####################
-#if ($mpi_prc == 0 || ($mpi_prc > 0 && $opr_rgr_mpi =~ /$opr_nm/)) {
+
+# ncbo #1
+
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_dbl_mss_val_dbl_pck $in_pth_arg in.nc in.nc %tmp_fl_00%";;
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_03%";;
     $tst_cmd[2]="ncks -C -H -s '%g' -v rec_var_dbl_mss_val_dbl_pck %tmp_fl_03%";
-    $dsc_sng="Difference a packed variable and be sure everything is zero or _FillValue by average whole remainder and comparing to zero.) FAILS with netcdf4";
+    $dsc_sng="Difference a packed variable and be sure everything is zero or _FillValue by average whole remainder and comparing to zero.) FAILS with netCDF4";
     $tst_cmd[3]="0.0";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array - ok
+    $#tst_cmd=0; # Reset array - ok
+
+# ncbo #2
 
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time $in_pth_arg in.nc %tmp_fl_03%";;
     $tst_cmd[1]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth/in.nc %tmp_fl_03% %tmp_fl_00%";;
@@ -273,23 +410,29 @@ sub tst_rgr {
     $tst_cmd[3]="4.5";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array - ok
+    $#tst_cmd=0; # Reset array - ok
 
+# ncbo #3    
+    
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg --op_typ='-' -v mss_val_scl $in_pth_arg in.nc in.nc %tmp_fl_00%";;
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mss_val_scl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val_scl %tmp_fl_00%";
     $dsc_sng="difference scalar missing value";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array - ok
+    $#tst_cmd=0; # Reset array - ok
+    
+# ncbo #4    
     
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg --op_typ='-' -d lon,1 -v mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_00%";
     $dsc_sng="difference with missing value attribute";
     $tst_cmd[2]=1.0e36;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #5  
     
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg --op_typ='-' -d lon,0 -v no_mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v no_mss_val %tmp_fl_00%";
@@ -297,17 +440,21 @@ sub tst_rgr {
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #6    
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v mss_val_fst $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncrename -h -O $nco_D_flg -v mss_val_fst,mss_val %tmp_fl_00%";
-    $tst_cmd[2]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg -y '-' -v mss_val %tmp_fl_00% ../data/in.nc %tmp_fl_01% 2> %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -s '%f,' -v mss_val %tmp_fl_01%";
+    $tst_cmd[2]="ncbo -C $omp_flg -h -O $fl_fmt $nco_D_flg -y '-' -v mss_val %tmp_fl_00% ../data/in.nc %tmp_fl_01% 2> %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --no_blank -s '%f,' -v mss_val %tmp_fl_01%";
     $dsc_sng="_FillValues differ between files";
     $tst_cmd[4]="-999.000000,-999.000000,-999.000000,-999.000000";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #7   
     
     $tst_cmd[0]="ncrename -h $nco_D_flg -O -v no_mss_val,one_dmn_arr_with_and_without_mss_val $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncrename -h $nco_D_flg -O -v mss_val,one_dmn_arr_with_and_without_mss_val $in_pth_arg in.nc %tmp_fl_01%";
@@ -317,23 +464,29 @@ sub tst_rgr {
     $tst_cmd[4]=0.0;
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #8    
     
     $tst_cmd[0]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -d lon,1 -v mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_00%";
     $dsc_sng="ncdiff symbolically linked to ncbo";
     $tst_cmd[2]=1.0e36;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #9    
     
     $tst_cmd[0]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -d lon,1 -v mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_00%";
     $dsc_sng="difference with missing value attribute";
     $tst_cmd[2]=1.0e36;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #10   
     
     $tst_cmd[0]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -d lon,0 -v no_mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v no_mss_val %tmp_fl_00%";
@@ -341,7 +494,9 @@ sub tst_rgr {
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array ok
+    $#tst_cmd=0; # Reset array ok
+    
+# ncbo #11   
     
     $tst_cmd[0]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc %tmp_fl_03%";
     $tst_cmd[1]="ncbo $omp_flg -C -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth/in.nc %tmp_fl_03% %tmp_fl_00%";
@@ -350,117 +505,429 @@ sub tst_rgr {
     $tst_cmd[3]="-1.0";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
-
+    $#tst_cmd=0; # Reset array
+    
+# ncbo #12    
     
     $tst_cmd[0]="ncks -C -O $fl_fmt $nco_D_flg -v three_dmn_var_dbl $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -C -O $fl_fmt $nco_D_flg -v -s 'three_dmn_var_dbl[lon]={0.0,1,2,3};' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncbo $omp_flg -C -h -O $fl_fmt $nco_D_flg  %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -y ttl -v three_dmn_var_dbl %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H  -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
     $dsc_sng="Difference which tests 3D broadcasting";
     $tst_cmd[5]="2697";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
-	
+    $#tst_cmd=0; # Reset array
+    
+# ncbo #13   
 	
     $tst_cmd[0]="ncks -C -O $fl_fmt $nco_D_flg -v three_dmn_var_dbl $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -C -O $fl_fmt $nco_D_flg -v -s 'three_dmn_var_dbl[lon]={0.0,1,2,3};' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncbo $omp_flg -C -h -O $fl_fmt $nco_D_flg -d time,0,4 -d time,9 -d lon,0 -d lon,3 %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -y ttl -v three_dmn_var_dbl %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H  -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
     $dsc_sng="Addition + 3D broadcasting+ MSA";
     $tst_cmd[5]="422";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+
+# ncbo #14
+
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncbo $omp_flg -O $fl_fmt $nco_D_flg -v three_dmn_rec_var %tmp_fl_00% %tmp_fl_00% %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H -v three_dmn_rec_var -d time,9,9,1 -d lat,1,1,1 -d lon,3,3,1 %tmp_fl_01%";
+    $dsc_sng="Copy associated coordinates -v three_dmn_rec_var";
+    $tst_cmd[3]="time[9]=10 lat[1]=90 lon[3]=270 three_dmn_rec_var[79]=0";
+    $tst_cmd[4]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array     
+    
+
+#ncbo #15
+#Operate files containing same variable in different orders
+# ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
+# ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
+# ncbo -O -p ~ foo1.nc foo2.nc ~/foo3.nc
+# ncks -C -H -v one ~/foo3.nc
+
+    $dsc_sng="Concatenate variables with different ID ordering";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
+    $tst_cmd[2]="ncbo -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H -v one %tmp_fl_02%";
+    $tst_cmd[4]="one = 0";
+    $tst_cmd[5]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
 
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){
 
+#    
+# NCO 4.3.0: added support for groups; ncbo -g
+#   
+#ncbo #16
+# ncbo -O -y add -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc out.nc
+# ncks -C -H -s '%d'  -d time,0,0,1 -g g4 -v one_dmn_rec_var out.nc
+# /g4/one_dmn_rec_var
+# time[0]=1 one_dmn_rec_var[0]=2 
+
+    $dsc_sng="(Groups) Addition -y add -g g4 -v one_dmn_rec_var";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -y add -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="2";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+    
+#ncbo #17
+# ncbo -O -y add -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc out.nc
+# ncks -C -H -s '%d'  -d time,0,0,1 -g g4 -v one_dmn_rec_var out.nc
+# /g4/one_dmn_rec_var
+
+    $dsc_sng="(Groups) Addition with limits -d time,1,1,1 -y add -g g4 -v one_dmn_rec_var";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -d time,1,1,1 -y add -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="4";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			    
     
-#} # endif $mpi_prc == 0...
+#ncbo #18
+# ncbo -O -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc out.nc
+# ncks -C -H -s '%d'  -d time,0,0,1 -g g4 -v one_dmn_rec_var out.nc
+# /g4/one_dmn_rec_var
+
+    $dsc_sng="(Groups) Subtraction -v one_dmn_rec_var";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -H -s '%d' -d time,1,1,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="0";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			    
+
+#ncbo #19
+# ncbo -O -y mlt -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc out.nc
+# ncks -C -H -s '%d'  -d time,0,0,1 -g g4 -v one_dmn_rec_var out.nc
+# /g4/one_dmn_rec_var
+
+    $dsc_sng="(Groups) Multiplication with limits -d time,2,2,1 -y add -g g4 -v one_dmn_rec_var";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -d time,2,2,1 -y mlt -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="9";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+
+#ncbo #20
+# ncbo -O -y mlt -g g4 -v one_dmn_rec_var in_grp.nc in_grp.nc out.nc
+# ncks -C -H -s '%d'  -d time,0,0,1 -g g4 -v one_dmn_rec_var out.nc
+# /g4/one_dmn_rec_var
+
+
+    $dsc_sng="(Groups) Division with limits -d time,2,2,1 -y add -g g4 -v one_dmn_rec_var";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -d time,2,2,1 -y dvd -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="1";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+
+# ncbo #21
+
+    $dsc_sng="(Groups) Process different types -g g1 -v var1 in_grp_1.nc  in_grp_2.nc";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg  -g g1 -v var1 $in_pth_arg in_grp_1.nc  in_grp_2.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks %tmp_fl_00% | grep 'var1: type NC_FLOAT, 1 dimension, 0 attributes, chunked? no, compressed? no, packed? no'";
+    $tst_cmd[2]="var1: type NC_FLOAT, 1 dimension, 0 attributes, chunked? no, compressed? no, packed? no";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
     
-#printf("paused @ %s:%d  - hit return to continue", __FILE__ , __LINE__); my $wait=<STDIN>;
+# ncbo #22
+
+    $dsc_sng="(Groups) Process relative match -v var2 in_grp_1.nc in_grp_2.nc";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -v var2 $in_pth_arg in_grp_1.nc  in_grp_2.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -d lon1,2,2,1 %tmp_fl_00%";
+    $tst_cmd[2]="lon1[2] var2[2]=-1";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			      
     
+# ncbo #23
+
+    $dsc_sng="(Groups) Process relative match from model to observations cmip5.nc -> obs.nc";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg cmip5.nc obs.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -H -g giss -v tas -d time,3,3,1 %tmp_fl_00%";
+    $tst_cmd[2]="time[3] tas[3]=1";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			       
+
+# ncbo #24
+
+    $dsc_sng="(Groups) Process relative match from observations to model obs.nc -> cmip5.nc";
+    $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg obs.nc cmip5.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -H -g giss -v tas -d time,3,3,1 %tmp_fl_00%";
+    $tst_cmd[2]="time[3] tas[3]=-1";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+
+   } # end HAVE_NETCDF4_H
+   
+   
 ####################
-#### ncea tests #### - OK !
+#### nces tests #### - OK !
 ####################
-    $opr_nm='ncea';
+    $opr_nm='nces';
 ####################
     
-    $tst_cmd[0]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var -d time,4 $in_pth_arg in.nc in.nc %tmp_fl_00%";
+#nces #01	
+	
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var -d time,4 $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="ensemble mean of int across two files";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #02	
     
-    $tst_cmd[0]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v mss_val_scl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mss_val_scl %tmp_fl_00%";
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v mss_val_scl $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val_scl %tmp_fl_00%";
     $dsc_sng="ensemble sum of missing value across two files";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #03	
     
-    $tst_cmd[0]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_flt -d time,0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v rec_var_flt_mss_val_flt %tmp_fl_00%";
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_flt -d time,0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v rec_var_flt_mss_val_flt %tmp_fl_00%";
     $dsc_sng="ensemble mean with missing values across two files";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #04	
     
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
-    $tst_cmd[1]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl -d time,1 $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl -d time,1 $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[2]="ncks -C -H -s '%e' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $dsc_sng="ensemble min of float across two files";
     $tst_cmd[3]="2";
     $tst_cmd[4]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #05	
     
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
-    $tst_cmd[1]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -C -v pck $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -C -v pck $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[2]="ncks -C -H -s '%e' -v pck %tmp_fl_00%";
     $dsc_sng="scale factor + add_offset packing/unpacking";
     $tst_cmd[3]="3";
     $tst_cmd[4]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #06	
     
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
-    $tst_cmd[1]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -s '%d ' -v rec_var_int_mss_val_int %tmp_fl_00%";
+    $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --no_blank -s '%d ' -v rec_var_int_mss_val_int %tmp_fl_00%";
     $dsc_sng="ensemble mean of integer with integer missing values across two files";
     $tst_cmd[3]="-999 2 3 4 5 6 7 8 -999 -999";
     $tst_cmd[4]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #07	
 	
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
-    $tst_cmd[1]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -C -d time,0,2 -d lon,0 -d lon,3 -v three_dmn_var_dbl  $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -C -d time,0,2 -d lon,0 -d lon,3 -v three_dmn_var_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[2]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -y ttl -v three_dmn_var_dbl %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[3]="ncks -C -H -s '%3.f' -v three_dmn_var_dbl %tmp_fl_01%";
     $dsc_sng="ensemble mean of 3D variable across two files with MSA";
     $tst_cmd[4]="150";
     $tst_cmd[5]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #08	
 	
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
-    $tst_cmd[1]="ncra -Y ncea $omp_flg -h -O $fl_fmt $nco_D_flg -C $in_pth_arg lrg_bm.nc lrg_bm1.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncra -Y ncea -t1 -h -O $fl_fmt $nco_D_flg -C $in_pth_arg lrg_bm.nc lrg_bm1.nc %tmp_fl_01%";
-    $tst_cmd[3]="ncbo -C -h -O   %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[4]="ncwa  -t1 -O -C  %tmp_fl_02% %tmp_fl_03% 2>%tmp_fl_05%";
+    $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -C $in_pth_arg lrg_bm.nc lrg_bm1.nc %tmp_fl_00%";
+    $tst_cmd[2]="ncra -Y ncfe -t1 -h -O $fl_fmt $nco_D_flg -C $in_pth_arg lrg_bm.nc lrg_bm1.nc %tmp_fl_01%";
+    $tst_cmd[3]="ncbo -C -h -O  %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[4]="ncwa  -t1 -O -C %tmp_fl_02% %tmp_fl_03% 2>%tmp_fl_05%";
     $dsc_sng="Check op with OpenMP";
 #    $tst_cmd[5]="ncks -C -H -s '%d' -v R %tmp_fl_03%";
     $tst_cmd[5]="ncap2 -t1 -h -v -O -s 'n2= ( (fabs(R)<0.01) && (fabs(S)<0.01) && (fabs(T)<0.01) && (fabs(U)<0.01) && (fabs(V)<0.01) && (fabs(W)<0.01) && (fabs(X)<0.01) );print(n2)' %tmp_fl_03% %tmp_fl_04%";
     $tst_cmd[6]="n2 = 1";
     $tst_cmd[7]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#nces #09	
+    
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v pck_7 $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $dsc_sng="Ensemble mean of variable packed with netCDF convention across three files";
+    $tst_cmd[2]="7";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#nces #10	
+    
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg --hdf_upk -v pck_7 $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $dsc_sng="Ensemble mean of variable packed with HDF convention across three files";
+    $tst_cmd[2]="-8";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+	
+#### Group File tests	
+	if($HAVE_NETCDF4_H == 1){
+
+	
+#nces #11
+# same as #nces #01 , with group
+	
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var -d time,4 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%d' -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) ensemble mean of int across two files";
+    $tst_cmd[2]="5";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+	
+#nces #12
+# 2 groups, each one with a record (part 1 )
+# ncra -Y nces -h -O -g g25g1,g25g2 -v one_dmn_rec_var -d time,4  in_grp_3.nc in_grp_3.nc out.nc
+	
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2  -v one_dmn_rec_var -d time,4 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%d' -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 groups ensemble mean of int across two files (part 1)";
+    $tst_cmd[2]="5";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+
+#nces #13
+# 2 groups, each one with a record (part 2 )
+# ncra -Y nces -h -O -g g25g1,g25g2 -v one_dmn_rec_var -d time,4  in_grp_3.nc in_grp_3.nc out.nc
+	
+    $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2  -v one_dmn_rec_var -d time,4 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%d' -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 groups ensemble mean of int across two files (part 2)";
+    $tst_cmd[2]="5";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+
+    } # #### Group File tests	
+	
+     #### Group Ensemble tests 
+    if($HAVE_NETCDF4_H == 1){
+	
+#nces #14
+	
+    $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg mdl.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -g cesm -v tas1 %tmp_fl_00%";
+    $dsc_sng="(Groups) 1 file mdl.cdl ensemble";
+    $tst_cmd[2]="time[3] tas1[3]=272.15";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#nces #14
+	
+    $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O --nsm_sfx=_avg $fl_fmt $nco_D_flg $in_pth_arg mdl.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -g cesm_avg -v tas1 %tmp_fl_00%";
+    $dsc_sng="(Groups) 1 file mdl.cdl --nsm_sfx suffix ensemble";
+    $tst_cmd[2]="time[3] tas1[3]=272.15";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+#nces #15
+# ncra -Y ncge -h -O -G /gpe_grp mdl.nc out.nc
+	
+    $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O -G /gpe_grp $fl_fmt $nco_D_flg $in_pth_arg mdl.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -g /gpe_grp/ecmwf -v tas1 %tmp_fl_00%";
+    $dsc_sng="(Groups) GPE 1 file mdl.cdl ensemble";
+    $tst_cmd[2]="time[3] tas1[3]=273.15";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#nces #16
+#ncra -Y ncge -O mdl.nc mdl2.nc out.nc
+    $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg mdl.nc mdl2.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -g ecmwf -v tas1 %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 files ensembles";
+    $tst_cmd[2]="time[3] tas1[3]=273.25";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+     } # #### Group Ensemble tests	
     
 # print "paused - hit return to continue"; my $wait=<STDIN>;
     
@@ -469,6 +936,9 @@ sub tst_rgr {
 ####################
     $opr_nm='ncecat';
 ####################
+
+#ncecat #1
+
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v one $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -v one $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncecat $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
@@ -477,20 +947,174 @@ sub tst_rgr {
     $tst_cmd[4]=" 1.000, "; # is this effectively equal to the previous " 1.000,  1.000, "
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 
+#ncecat #2    
+    
     $tst_cmd[0]="ncks -C -h -O $fl_fmt $nco_D_flg -v three_dmn_var_int $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -C -v -O $fl_fmt $nco_D_flg -s 'three_dmn_var_int+=100;' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncecat -C -h -O $omp_flg $fl_fmt $nco_D_flg -d time,0,3 -d time,8,9 -d lon,0,1 -d lon,3,3 -v three_dmn_var_int %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncwa -C -h -O  $omp_flg $fl_fmt $nco_D_flg -y avg -v three_dmn_var_int %tmp_fl_02% %tmp_fl_03%";
+    $tst_cmd[3]="ncwa -C -h -O $omp_flg $fl_fmt $nco_D_flg -y avg -v three_dmn_var_int %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[4]="ncks -C -O -H -s '%d' -v three_dmn_var_int  %tmp_fl_03%";
     $dsc_sng="concatenate two 3D vars with multihyperslabbing";
     $tst_cmd[5]="84"; 
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+	
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){
+
+#ncecat #3    
+    
+    if ($ENABLE_NETCDF4 == 1) {
+    $tst_cmd[0]="ncks -C -h -O $fl_fmt $nco_D_flg -v area $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncecat -C -h -O $omp_flg $fl_fmt $nco_D_flg -G ensemble -d lat,1,1 -v area %tmp_fl_00% %tmp_fl_00% %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -O -h -m -v area %tmp_fl_01% | grep \"ensemble../area\" | wc | cut -c 7";
+    $dsc_sng="group aggregate var with hyperslabbing (requires netCDF4)";
+    $tst_cmd[3]="2"; 
+    $tst_cmd[4]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+    }elsif ($ENABLE_NETCDF4 == 0) {
+    $tst_cmd[0]="ncks -C -h -O $fl_fmt $nco_D_flg -v area $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncecat -C -h -O $omp_flg $fl_fmt $nco_D_flg -G ensemble -d lat,1,1 -v area %tmp_fl_00% %tmp_fl_00% %tmp_fl_01%";
+    $dsc_sng="group aggregate var with hyperslabbing (requires netCDF4)";
+    $tst_cmd[2]=$ncecat_msg_no_netcdf4; 
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+    } # end $ENABLE_NETCDF4
+    
+#    
+# NCO 4.3.1 - ncecat for groups 
+#
+#ncecat #4 part1
+#ncecat -h -O -g g1g1 -v v1 in_grp.nc in_grp.nc out.nc
+#ncks -d record,1,1,1 out.nc
+
+    $dsc_sng="(Groups) Concatenate variables/groups 1: scalars -g g1g1 -v v1";
+    $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g1g1 -v v1 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -H -d record,1,1,1 %tmp_fl_00%";
+    $tst_cmd[2]="record[1] v1[1]=11";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			     
+
+#ncecat #5 same as #4 but look metadata
+#ncecat -h -O -g g1g1 -v v1 in_grp.nc in_grp.nc out.nc
+#ncks -d record,1,1,1 out.nc    
+    
+    $dsc_sng="(Groups) Concatenate variables/groups 2: scalars -g g1g1 -v v1";
+    $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g1g1 -v v1 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks %tmp_fl_00% | grep 'v1 dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)'";
+    $tst_cmd[2]="v1 dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			    
+    
+
+#ncecat #6 part1
+#ncecat  -h -O -g g6g1 -v area in_grp.nc in_grp.nc out.nc
+#ncks -H -C -d record,1,1,1 -d lat,1,1,1 -g g6g1 -v area  out.nc
+
+    $dsc_sng="(Groups) Concatenate variables/groups 1: 1D -g g6g1 -v area";
+    $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g6g1 -v area $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -H -C -d record,1,1,1 -d lat,1,1,1 -g g6g1 -v area  %tmp_fl_00%";
+    $tst_cmd[2]="record[1] lat[1]=90 area[3]=50";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			     
 
+#ncecat #7 same as #6 but look metadata
+#ncecat  -h -O -g g6g1 -v area in_grp.nc in_grp.nc out.nc
+#ncks -C -g g6g1 -v area  out.nc
+#area dimension 0: record, size = 2 (Record non-coordinate dimension)
+    
+    $dsc_sng="(Groups) Concatenate variables/groups 2: 1D -g g6g1 -v area";
+    $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g6g1 -v area $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -g g6g1 -v area %tmp_fl_00% | grep 'area dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)'";
+    $tst_cmd[2]="area dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			    
     
+#ncecat #8 part1
+#ncecat  -h -O -v two_dmn_rec_var in_grp.nc in_grp.nc out.nc
+#ncks -C -d record,1,1,1 -d time,9,9,1 -d lev,2,2,1  -v two_dmn_rec_var  out.nc
+
+    $dsc_sng="(Groups) Concatenate variables/groups 1: 2D -v two_dmn_rec_var";
+    $tst_cmd[0]="ncecat $nco_D_flg -h -O -v two_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -d record,1,1,1 -d time,9,9,1 -d lev,2,2,1 -v two_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="record[1] time[9]=10 lev[2]=1000 two_dmn_rec_var[59]=3";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+	   
+#ncecat #9 
+#Check that "time" is eliminated as record
+#ncecat -O  in_grp_3.nc in_grp_3.nc out.nc
+#ncks -m -C -g g25g1  -v one_dmn_rec_var out.nc
+
+    $dsc_sng="(Groups) Concatenate variables/groups";
+    $tst_cmd[0]="ncecat $nco_D_flg -h -O $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -m -C -g g25g1  -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="one_dmn_rec_var dimension 1: time, size = 10 NC_DOUBLE, chunksize = 10 (Coordinate is time)";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			       
+
+#ncecat #10 
+#Concatenate files containing same variable in different orders
+# ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
+# ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
+# ncecat -O -p ~ foo1.nc foo2.nc ~/foo3.nc
+# ncks -C -H -v one -d record,1 -s '%g' ~/foo3.nc
+
+    $dsc_sng="Concatenate variables with different ID ordering";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
+    $tst_cmd[2]="ncecat -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H -d record,1 -v one -s '%g' %tmp_fl_02%";
+    $tst_cmd[4]="1";
+    $tst_cmd[5]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+
+    } #### Group tests	
+	
+
 #print "paused - hit return to continue"; my $wait=<STDIN>;
     
 #####################
@@ -498,6 +1122,10 @@ sub tst_rgr {
 #####################
     $opr_nm='ncflint';
 ####################
+
+#ncflint #1
+
+
     $tst_cmd[0]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -w 3,-2 -v one $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v one %tmp_fl_00%";
     $dsc_sng="identity weighting";
@@ -505,7 +1133,9 @@ sub tst_rgr {
     $tst_cmd[3]="NO_SS";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncflint #2    
     
     if ($dodap eq "FALSE"){
 	$tst_cmd[0]="ncrename -h -O $nco_D_flg -v zero,foo $in_pth_arg in.nc %tmp_fl_01%";
@@ -517,27 +1147,115 @@ sub tst_rgr {
 	$tst_cmd[5]="NO_SS";
 	$tst_cmd[5]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
     }
     
+#ncflint #3
+    
+    $dsc_sng="switch order of occurrence to test for commutivity";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d lon,1 -v mss_val $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -d lon,0 -v mss_val $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[2]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -w 0.5,0.5 %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[3]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -w 0.5,0.5  %tmp_fl_02% %tmp_fl_01%  %tmp_fl_04%  $foo_y_fl $foo_x_fl $foo_yx_fl";
     $tst_cmd[4]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_03% %tmp_fl_04% %tmp_fl_05%";
-    $tst_cmd[5]="ncks -C -H -s '%g' -v mss_val %tmp_fl_05% ";
-    $dsc_sng="switch order of occurrence to test for commutivity";
+    $tst_cmd[5]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_05% ";
     $tst_cmd[6]="1e+36";
     $tst_cmd[7]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
+#ncflint #4    
+
+    $dsc_sng="output type float when interpolating between two packed floats";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v pck_3 $in_pth_arg in.nc %tmp_fl_01%";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -v pck_5 $in_pth_arg in.nc %tmp_fl_02%";
+    $tst_cmd[2]="ncrename -h -O $fl_fmt $nco_D_flg -v pck_5,pck_3 %tmp_fl_02%";
+    $tst_cmd[3]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -v pck_3 %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H -s '%g' -v pck_3 %tmp_fl_03% ";
+    $tst_cmd[5]="4";
+    $tst_cmd[6]="NO_SS";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+
+
+#ncflint #5
+#Operate files containing same variable in different orders
+# ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
+# ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
+# ncra -O -p ~ foo1.nc foo2.nc ~/foo3.nc
+# ncks -C -H -v one ~/foo3.nc
+
+    $dsc_sng="Concatenate variables with different ID ordering";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
+    $tst_cmd[2]="ncflint -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H -v one %tmp_fl_02%";
+    $tst_cmd[4]="one = 1";
+    $tst_cmd[5]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+
+	
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){	
+		
+#ncflint #6 
+# ncflint -4 -O -w 0.8,0.0 in.nc in.nc out.nc
+# ncks -H -C -v time  -d time,9,9,1 out.nc
+
+    $dsc_sng="-w 0.8,0.0 in.nc in.nc";
+    $tst_cmd[0]="ncflint $nco_D_flg -4 -O -w 0.8,0.0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks  -H -C -v time  -d time,9,9,1 %tmp_fl_00%";
+    $tst_cmd[2]="time[9]=8";
+    $tst_cmd[3]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+#ncflint #7  
+# ncflint -4 -O -w 0.8,0.0 in.nc in.nc out.nc
+# ncks -H -C -v time  -d time,9,9,1 out.nc
+# --fix_rec_crd prevents ncflint from multiplying or interpolating any coordinate variables, including record coordinate variables
+
+    $dsc_sng="--fix_rec_crd -w 0.8,0.0 in.nc in.nc";
+    $tst_cmd[0]="ncflint $nco_D_flg -4 -O --fix_rec_crd -w 0.8,0.0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks  -H -C -v time  -d time,9,9,1 %tmp_fl_00%";
+    $tst_cmd[2]="time[9]=10";
+    $tst_cmd[3]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+   
+# NCO 4.3.2 ncflint -- groups   
+ 
+#ncflint #8
+# ncflint -h -O -g g4 -v one_dmn_rec_var -w 1,1 in_grp.nc in_grp.nc out.nc
+# ncks  -H -C -O -g g4  -d time,9 -v one_dmn_rec_var  out.nc
+
+    $dsc_sng="(Groups) Weight 1D -g g4 -v one_dmn_rec_var -w 1,1 in_grp.nc in_grp.nc";
+    $tst_cmd[0]="ncflint $nco_D_flg -h -O -v one_dmn_rec_var -w 1,1 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks  -H -C -O -g g4 -d time,9 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="time[9]=20 one_dmn_rec_var[9]=20";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			   
+
+    }  	#### Group tests
+ 
+
     
 ####################
 #### ncks tests #### OK !
 ####################
     $opr_nm='ncks';
 ####################
+
+#ncks #01   
+
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lat_T42,lon_T42,gw_T42 $in_pth_arg in.nc %tmp_fl_03%";
     $tst_cmd[1]="ncrename -h -O $nco_D_flg -d lat_T42,lat -d lon_T42,lon -v lat_T42,lat -v gw_T42,gw -v lon_T42,lon %tmp_fl_03%";
     $tst_cmd[2]="ncap2 -h -O $fl_fmt $nco_D_flg -s 'one[lat,lon]=lat*lon*0.0+1.0' -s 'zero[lat,lon]=lat*lon*0.0' %tmp_fl_03% %tmp_fl_04%";
@@ -546,15 +1264,19 @@ sub tst_rgr {
     $tst_cmd[4]=1;
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
-    
-    #passes, but returned string includes tailing NULLS (<nul> in nedit)
+    $#tst_cmd=0; # Reset array
+
+#ncks #02   
+#passes, but returned string includes tailing NULLS (<nul> in nedit)
+
     $tst_cmd[0]="ncks -C -H -s '%c' -v fl_nm $in_pth_arg in.nc";
     $dsc_sng="extract filename string";
     $tst_cmd[1]="/home/zender/nco/data/in.cdl";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #03
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lev $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f,' -v lev %tmp_fl_00%";
@@ -562,7 +1284,9 @@ sub tst_rgr {
     $tst_cmd[2]="100.000000,500.000000,1000.000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #04
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,3,3 %tmp_fl_00%";
@@ -570,7 +1294,9 @@ sub tst_rgr {
     $tst_cmd[2]="23";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #05
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v int_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v int_var %tmp_fl_00%";
@@ -578,7 +1304,9 @@ sub tst_rgr {
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #06
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,0,0 -d lev,2,2 -d lon,0,,2 -d lon,1,,2 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
@@ -586,7 +1314,9 @@ sub tst_rgr {
     $tst_cmd[2]="12.0,13.0,14.0,15.0,20.0,21.0,22.0,23.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #07
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,0,3 -d lon,1,3 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
@@ -594,7 +1324,9 @@ sub tst_rgr {
     $tst_cmd[2]="20.0,21.0,22.0,23.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #08
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,0.,,2 -d lon,90.,,2 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
@@ -602,7 +1334,8 @@ sub tst_rgr {
     $tst_cmd[2]="20.0,21.0,22.0,23.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
     
     if(0){ # fxm use this test once script allows error exits to be intended result
 	$tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v lat -d lat,20.,20.001 $in_pth_arg in.nc %tmp_fl_00%";
@@ -611,16 +1344,20 @@ sub tst_rgr {
 	$tst_cmd[2]="ncks: ERROR Domain 20 <= lat <= 20.001 brackets no coordinate values.";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
     } # endif 0
     
+#ncks #09
+    
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,800.,200. -d lon,270.,0. $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
     $dsc_sng="Double-wrapped hyperslab";
     $tst_cmd[2]="23.0,20.0,15.0,12.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #10
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time_udunits,'1999-12-08 12:00:0.0','1999-12-09 00:00:0.0' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%6.0f' -d time_udunits,'1999-12-08 18:00:0.0','1999-12-09 12:00:0.0',2 -v time_udunits $in_pth_arg in.nc";
@@ -628,45 +1365,49 @@ sub tst_rgr {
     $tst_cmd[2]="876018";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
-
-    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' $in_pth_arg in.nc %tmp_fl_00%";
-
+#ncks #11
+    
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v lon_cal -d lon_cal,'1964-3-1 00:00:0.0','1964-3-4 00:00:0.0' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -O -v -C -s 'lon_cln_ttl=lon_cal.total();print(lon_cln_ttl)' %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[2]="lon_cln_ttl = 10";
-
     $dsc_sng="dim slice using UDUnits library and cal 365_days (fails without UDUnits library support)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #12
 
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v lat_cal -d lat_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' $in_pth_arg in.nc %tmp_fl_00%";
-
     $tst_cmd[1]="ncap2 -O -v -C -s 'lat_cln_ttl=lat_cal.total();print(lat_cln_ttl)' %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[2]="lat_cln_ttl = 18";
-
     $dsc_sng="dim slice using UDUnits library and cal 360_days (fails without UDUnits library support)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #13
 
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' -s '%3.1e' $in_pth_arg in.nc";
     $dsc_sng="dimension slice using UDUnit conversion (fails without UDUnits library support)";
     $tst_cmd[1]="1.0e-06";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
-    #fails
+#ncks #14
+
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v '^three_*' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -C -v three %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%g' -C -v three %tmp_fl_00%";
     $dsc_sng="variable wildcards A (fails without regex library)";
     $tst_cmd[2]="3";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
-    
+    $#tst_cmd=0; # Reset array
+
+#ncks #15
+
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v '^[a-z]{3}_[a-z]{3}_[a-z]{3,}\$' $in_pth_arg in.nc %tmp_fl_00%";
     # for this test, the regex is mod'ed                       ^
     $tst_cmd[1]="ncks -C -H -s '%d' -C -v val_one_int %tmp_fl_00%";
@@ -674,7 +1415,7 @@ sub tst_rgr {
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     if(0){ # fxm use this test once script allows error exits to be intended result
 	$tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,0,1 -v time $in_pth_arg in.nc %tmp_fl_00%";
@@ -683,227 +1424,1817 @@ sub tst_rgr {
 	$tst_cmd[2]="ncks: ERROR User-specified dimension index range 2 <= time <= 1 does not fall within valid dimension index range 0 <= time <= 1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
     } # endif 0
-    
+
+#ncks #16
+
     $tst_cmd[0]="ncks -C -H -s '%d' -v byte_var $in_pth_arg in.nc";
     $dsc_sng="Print byte value";
     $tst_cmd[1]="122";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 
-    $tst_cmd[0]="ncks -O -v cnv_CF_crd $in_pth_arg in.nc %tmp_fl_00%";
+#ncks #17
+
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v cnv_CF_crd $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%g' -v lon_gds -d gds_crd,2 %tmp_fl_00%";
     $dsc_sng="CF convention coordinates attribute";
     $tst_cmd[2]="180";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncks #18 
 
-    $tst_cmd[0]="ncatted -O -a _FillValue,global,c,l,222 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[0]="ncatted -O $fl_fmt $nco_D_flg -a _FillValue,global,c,l,222 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -O %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[2]="ncap2 -v -O -s 'n2=global\@_FillValue;' %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="ncks -C -H -s '%d' -v n2 %tmp_fl_02%";
-    $dsc_sng="Check creation/copying of global _FillValue";
+    $dsc_sng="Create/copy of global _FillValue";
     $tst_cmd[4]="222";
     $tst_cmd[5]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array  
+	
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){	
+#   
+#NCO 4.2.2   
+# 
 
+#ncks #19 groups: add associated variable "lat" of "area" to extraction list
+
+    $dsc_sng="(Groups) Extract associated coordinate variable";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v area $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 0){    
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1){
+    if($ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -C -H -s '%g' -v lat %tmp_fl_00%";
+    $tst_cmd[2]="-9090";
+    $tst_cmd[3]="SS_OK";
+    }elsif($ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";
+    } # !ENABLE_NETCDF4 
+    } # !HAVE_NETCDF4_H
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array    
+ 
+    
+#ncks #20 groups: Add to extraction list all coordinates associated with CF convention
 
-#####################
-#### ncpdq tests #### -OK !
+    $dsc_sng="(Groups) Add CF convention variables";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -g g7 -v gds_var $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -C -H -s '%g' -v lat_gds %tmp_fl_00%";  
+    $tst_cmd[2]="-90-30-3000303090";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+    
+#ncks #21 groups: Extract variables in groups (test -g with -v )
+
+    $dsc_sng="(Groups) Extract variables in groups";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v scl -g g1g1,g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -C -H -s '%g' %tmp_fl_00%";
+    $tst_cmd[2]="1.11";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+#ncks #22 groups: Create variables in groups (test -G with -v and -g )
+
+    $dsc_sng="(Groups) Create variables in groups";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -G g8 -g g3 -v scl $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -C -H -s '%g' %tmp_fl_00%"; 
+    $tst_cmd[2]="1.3";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+    
+#ncks #23 groups: Hyperslabs (test -d with -v and -g: Extracts the second value (2) from g4/one_dmn_rec_var  )
+
+    $dsc_sng="(Groups) Hyperslabs in groups";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g4 -v one_dmn_rec_var -d time,1,1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -H -s '%d' %tmp_fl_00%"; 
+    $tst_cmd[2]="2";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+#   
+#NCO 4.2.3   
+# 
+
+#ncks #24 groups: Extract group attributes
+
+    $dsc_sng="(Groups) Extract group attributes";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -g g3 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks %tmp_fl_00% | grep g3_group_attribute";
+    $tst_cmd[2]="Group attribute 0: g3_group_attribute, size = 18 NC_CHAR, value = g3_group_attribute";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+    
+#ncks #25 groups: Extract global attributes
+
+    $dsc_sng="Extract global attributes";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks %tmp_fl_00% | grep Conventions";
+    $tst_cmd[2]="Global attribute 0: Conventions, size = 6 NC_CHAR, value = CF-1.0";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+    
+#ncks #26 groups: Extract "bounds" variables (extract /g8/ilev)
+
+    $dsc_sng="(Groups) Extract 'bounds' variables";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v lev $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -a -O -H  -s '%g' %tmp_fl_00% ";    
+    $tst_cmd[2]="1005001000";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+    
+#ncks #27 groups: Extract group attributes with GPE
+
+    $dsc_sng="(Groups) GPE group attribute extraction";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -G g9 -g g3 -v scl $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks %tmp_fl_00% | grep g3_group_attribute";
+    $tst_cmd[2]="Group attribute 0: g3_group_attribute, size = 18 NC_CHAR, value = g3_group_attribute";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#ncks #28 groups: Group dimension hyperslabs
+
+    $dsc_sng="(Groups) Group dimension hyperslabs";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v gds_var -d gds_crd,1,1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -C -H -v lat_gds -s '%g' %tmp_fl_00%";
+    $tst_cmd[2]="-30";
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+#   
+#NCO 4.2.4   
+# 
+    
+#ncks #29 groups: Sort output alphabetically
+
+    $dsc_sng="(Groups) Sort output alphabetically";
+    $tst_cmd[0]="ncks -z $in_pth_arg in_grp.nc | tail -1";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="var: /unique";
+    $tst_cmd[2]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+    
+#ncks #30 2D variable definition (netCDF4 file)
+
+    $dsc_sng="2D variable definition (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v ilev $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks  %tmp_fl_00%";
+    $tst_cmd[2]="lev[2] vrt_nbr[1] ilev[5]=1013.25";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array   
+
+#ncks #31 Variable/Group extraction test 1 (netCDF4 file)
+#extract all variables in g6 = area,area1, refine to area1 only
+
+    $dsc_sng="(Groups) Variable/Group extraction test 1 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g6 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -v area1  %tmp_fl_00%";
+    $tst_cmd[2]="lat[1] area1[1]=31";
+    $tst_cmd[3]="SS_OK";
+	 }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+
+#ncks #32 Variable/Group extraction test 2 (netCDF4 file)
+#extract all variables in g6 = area,area1, refine to area1 only
+#use -d 
+
+    $dsc_sng="(Groups) Variable/Group extraction test 2 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g6 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+    $tst_cmd[1]="ncks -v area1 -d lat,0,0 %tmp_fl_00%";
+    $tst_cmd[2]="lat[0] area1[0]=21";
+    $tst_cmd[3]="SS_OK";
+	 }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+ 
+#ncks #33 Variable/Group extraction test 3 (netCDF4 file)
+#extract all variables in g6g1 (second level group) = area
+
+
+    $dsc_sng="(Groups) Variable/Group extraction test 3 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g6g1 $in_pth_arg in_grp.nc";
+	if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lat[1]=90 area[1]=50";
+    $tst_cmd[2]="SS_OK";  
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+  
+	
+#ncks #34 Variable/Group extraction test 4 (netCDF4 file)
+#extract all variables "area" = /area /g6/area /g6/g6g1/area
+#grep -w = all word
+#NOTE: test repeated for 3 strings, for non-netcDF4 cases, output is empty string, wildcard . used  
+
+    $dsc_sng="(Groups) Variable/Group extraction test 4-1 (netCDF4 file)";
+   $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v are. $in_pth_arg in_grp.nc | grep -w /g6/g6g1/area";
+	if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="/g6/g6g1/area";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+	
+#ncks #35 Variable/Group extraction test 4 (netCDF4 file)
+#extract all variables "area" = /area /g6/area /g6/g6g1/area
+#grep -w = all word
+#NOTE: test repeated for 3 strings, for non-netcDF4 cases, output is empty string, wildcard . used  
+
+    $dsc_sng="(Groups) Variable/Group extraction test 4-2 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v are. $in_pth_arg in_grp.nc | grep -w /g6/area";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="/g6/area";
+    $tst_cmd[2]="SS_OK"; 
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+	
+#ncks #36 Variable/Group extraction test 4 (netCDF4 file)
+#extract all variables "area" = /area /g6/area /g6/g6g1/area
+#grep -w = all word
+#NOTE: test repeated for 3 strings, for non-netcDF4 cases, output is empty string, wildcard . used  
+
+    $dsc_sng="(Groups) Variable/Group extraction test 4-3 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v are. $in_pth_arg in_grp.nc | grep -o -w area";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="area";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+	
+#ncks #37 Variable/Group extraction test 5 (netCDF4 file)
+# Extract all variables "area" in g6g1
+
+    $dsc_sng="(Groups) Variable/Group extraction test 5 (netCDF4 file)";
+    $tst_cmd[0]="ncks -H $fl_fmt $nco_D_flg -C -s '%g' -v area -g g6g1 -d lat,0 $in_pth_arg in_grp.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="40";
+    $tst_cmd[2]="SS_OK";    
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array			
+	
+#ncks #38 Variable/Group extraction test 6 (netCDF4 file)
+#extract all variables "area" in g6g1 = g6/g6g1/area 
+
+
+    $dsc_sng="(Groups) Variable/Group extraction test 6 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area -g g6g1 $in_pth_arg in_grp.nc";
+	if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lat[1]=90 area[1]=50";
+    $tst_cmd[2]="SS_OK";  
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+	
+#ncks #39 Variable/Group extraction test 7 (netCDF4 file)
+#extract all variables "area" in g6 and g6g1 = g6/g6g1/area, g6/area
+#NOTE: test repeated for 2 strings, for non-netcDF4 case, output is empty string 
+
+    $dsc_sng="(Groups) Variable/Group extraction test 7-1 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area -g g6,g6g1 $in_pth_arg in_grp.nc | grep -w /g6/g6g1/area";
+	if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="/g6/g6g1/area";
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 							
+	
+#ncks #40 Variable/Group extraction test 7 (netCDF4 file)
+#extract all variables "area" in g6 and g6g1 = g6/g6g1/area, g6/area
+#NOTE: test repeated for 2 strings, for non-netcDF4 case, output is empty string 
+
+    $dsc_sng="(Groups) Variable/Group extraction test 7-2 (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area -g g6,g6g1 $in_pth_arg in_grp.nc | grep -w /g6/area";
+	if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="/g6/area";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+	
+#ncks #41 Variable/Group extraction test 8 (netCDF3 file)
+#extract all variables "area" = /area 
+
+    $dsc_sng="(Groups) Variable/Group extraction test 8 (netCDF3 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area $in_pth_arg in.nc";
+    $tst_cmd[1]="lat[1]=90 area[1]=10 meter2";
+    $tst_cmd[2]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 							
+	
+#ncks #42 Extract associated coordinates test 1 (netCDF3 file) 
+
+    $dsc_sng="Extract associated coordinates test 1 (netCDF3 file) ";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v rz $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -v rlev %tmp_fl_00% | grep -o -w rlev";
+    $tst_cmd[2]="rlev";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+	
+#ncks #43 Extract associated coordinates test 2 (netCDF3 file) 
+
+    $dsc_sng="Extract associated coordinates test 2 (netCDF3 file) ";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v rz $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -v rlev %tmp_fl_00% | grep -w /rlev";
+    $tst_cmd[2]="";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+	
+#ncks #44 Extract associated coordinates test 3 (netCDF4 file)
+# rlev is dimension of rz 
+# /g3/rz
+# /g3/rlev
+# /g5/g1/rz
+# /g5/rlev
+# output must not contain /g3
+
+    $dsc_sng="(Groups) Extract associated coordinates test 3 (netCDF4 file) ";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -g g5g1 -v rz $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 1){
+	$tst_cmd[1]="ncks -H %tmp_fl_00%";
+	$tst_cmd[2]="rlev[2]=1"; # data for /g3/rlev differs from /g5/rlev
+    $tst_cmd[3]="SS_OK";
+    }elsif($HAVE_NETCDF4_H == 1 && $ENABLE_NETCDF4 == 0){
+    $tst_cmd[1]=$ncks_msg_no_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=$ncks_msg_no_have_netcdf4; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 
+	
+#ncks #45 Extract CF 'coordinates' variables(netCDF4 file)
+#gds_crd:coordinates = "lat_gds lon_gds";
+
+    $dsc_sng="(Groups) Extract CF 'coordinates' variables(netCDF4 file)";
+    $tst_cmd[0]="ncks $nco_D_flg -v gds_crd $in_pth_arg in_grp.nc | grep -w /g7/lat_gds";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="/g7/lat_gds";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+	
+#ncks #46 Extract CF 'coordinates' variables (netCDF3 file)
+#gds_crd:coordinates = "lat_gds lon_gds";
+
+    $dsc_sng="Extract CF 'coordinates' variables (netCDF3 file)";
+    $tst_cmd[0]="ncks $nco_D_flg -v gds_crd $in_pth_arg in.nc | grep -o -w lat_gds";
+    $tst_cmd[1]="lat_gds";
+    $tst_cmd[2]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+	
+#ncks #47 Extract CF 'bounds' variables (netCDF4 file)
+#lev:bounds = "ilev";
+
+    $dsc_sng="(Groups) Extract CF 'bounds' variables (netCDF4 file)";
+    $tst_cmd[0]="ncks $nco_D_flg -g g8 -v lev $in_pth_arg in_grp_3.nc | grep -w /g8/ilev";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="/g8/ilev";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]=""; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+	
+#ncks #48 Extract CF 'bounds' variables (netCDF3 file)
+#lev:bounds = "ilev";
+
+    $dsc_sng="Extract CF 'bounds' variables (netCDF3 file)";
+    $tst_cmd[0]="ncks $nco_D_flg -v lev $in_pth_arg in.nc | grep -o -w ilev";
+    $tst_cmd[1]="ilev";
+    $tst_cmd[2]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+    
+#ncks #49
+
+    $dsc_sng="Check --mk_rec_dmn (netCDF3 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --mk_rec_dmn lat -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -m -v lat %tmp_fl_00% | egrep -o -w 'Record coordinate is lat'";
+    $tst_cmd[2]="Record coordinate is lat";
+    $tst_cmd[3]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+#ncks #50    
+    
+    $dsc_sng="(Groups) Check --mk_rec_dmn (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --mk_rec_dmn lat -v lat_lon $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -m -v lat %tmp_fl_00% | egrep -o -w 'Record coordinate is lat'";
+    $tst_cmd[2]="Record coordinate is lat";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+#ncks #51
+    
+    $dsc_sng="Check --fix_rec_dmn (netCDF3 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --fix_rec_dmn time -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
+    $tst_cmd[2]="Coordinate is time";
+    $tst_cmd[3]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+    
+#ncks #52    
+
+    $dsc_sng="(Groups) Check --fix_rec_dmn (netCDF4 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg  --fix_rec_dmn time -v three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
+    $tst_cmd[2]="Coordinate is time";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+#ncks #53    
+    
+    $dsc_sng="--fix_rec_dmn with MM3 workaround (netCDF3->netCDF3 file)";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --fix_rec_dmn time -v one,two,one_dmn_rec_var,two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
+    $tst_cmd[2]="Coordinate is time";
+    $tst_cmd[3]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+    if(0){
+	# NB: does not actually test3 code for reasons explained in header of nco_use_mm3_workaround()
+	$dsc_sng="(Groups) --fix_rec_dmn with MM3 workaround (netCDF4->netCDF3 file)";
+	$tst_cmd[0]="ncks -O -3 $fl_fmt $nco_D_flg --fix_rec_dmn time -v /g10/two_dmn_rec_var,/g10/three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
+	if($HAVE_NETCDF4_H == 1){
+	    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate dimension'";
+	    $tst_cmd[2]="Record coordinate dimension";
+	    $tst_cmd[3]="SS_OK";   
+	}elsif($HAVE_NETCDF4_H == 0){
+	    $tst_cmd[1]=""; 
+	    $tst_cmd[2]="SS_OK";     
+	}
+	NCO_bm::tst_run(\@tst_cmd);
+	$#tst_cmd=0; # Reset array 			
+    } # endif false
+    
+    
+# NCO 4.2.6 tests
+# This version has a major change in the way dimensions are handled; the global array lmt_all was eliminated and replaced
+# with GTT (Group Traversal Table) structures that contain full dimension paths; it needs extensive testing, in special
+# 1) Limits
+# 2) MSA
+# 3) Chunking
+#
+# ncks eliminate lmt_all array and replace with GTT (Group Traversal Table)
+#structure that stores full path names for dimensions and coordinate variables.
+#	nco_xtr_wrt_trv() writes extracted data to output file
+#nco_xtr_dfn_trv() defines extracted groups, variables, and attributes in output file
+#	nco_prn_xtr_val_trv() prints variable data
+#
+#	* ncks limits are stored in the GTT dimension structure and MSA is applied.
+#	Distribute these to variables when writing with nco_prn_var_val_trv().
+#	nco_bld_lmt_trv() assigns user specified dimension limits to traversal table dimensions.   
+
+# 
+# Chunking tests
+#
+ 
+#ncks #54: This test applies chunking all policy to -v lat_lon(lat,lon); lat(2) and lon(4) are by default chunked with a size == dimension
+# The test greps chunksize = 2 for lat
+# Policy: Chunk All Variables [default]
+# Map:Chunksize Equals Dimension Size [default]
+
+    $dsc_sng="(Groups) Chunking --cnk_plc=all --v lat_lon";
+    $tst_cmd[0]="ncks $nco_D_flg -O -4 -v lat_lon --cnk_plc=all $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -m -v lat_lon %tmp_fl_00% | egrep -o -w 'lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2'";
+    $tst_cmd[2]="lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";      
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+    
+#ncks #55: This test applies: time chunk is explicitely set to 2 instead of the default 1 for record dimension
+# Policy: Chunk Variables with at least Three Dimensions Definition: Chunk all variables possible with at least three dimensions
+# Alternate invocation: none cnk plc key values: ‘g3d’, ‘cnk_g3d’, ‘plc_g3d’
+# Definition: Chunksize defaults to dimension size. Explicitly specify chunksizes for particular dimensions with ‘--cnk_dmn’ option.
+# Map:Chunksize Equals Dimension Size [default] Explicitly specify chunksizes for particular dimensions with ‘--cnk_dmn’ option.
+
+    $dsc_sng="(Groups) Chunking --cnk_plc=cnk_g3d --cnk_dmn time,2";
+    $tst_cmd[0]="ncks $nco_D_flg  -O -4  --cnk_plc=cnk_g3d --cnk_dmn time,2  -v three_dmn_rec_var  $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -C -m -v three_dmn_rec_var %tmp_fl_00% | grep  'three_dmn_rec_var dimension 0: /time, size = 10 NC_DOUBLE, chunksize = 2 (Record coordinate is /time)'";
+    $tst_cmd[2]="three_dmn_rec_var dimension 0: /time, size = 10 NC_DOUBLE, chunksize = 2 (Record coordinate is /time)";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";      
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			 
+ 
+    
+# 
+# Limit/MSA tests
+#
+
+#ncks #56:
+# ncks -H -C --dmn time,1,3,2 --dmn lev,1,1,1  -v two_dmn_rec_var  ~/nco/data/in_grp.nc
+# /g10/two_dmn_rec_var
+# time[1]=2 lev[1]=500 two_dmn_rec_var[4]=2.1 
+# time[3]=4 lev[1]=500 two_dmn_rec_var[10]=2.3 
+#
+    $dsc_sng="(Groups) MSA --dmn time,1,3,2 --dmn lev,1,1,1";
+    $tst_cmd[0]="ncks $nco_D_flg  -H -C --dmn time,1,3,2 --dmn lev,1,1,1  -v two_dmn_rec_var  $in_pth_arg in_grp.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="time[3]=4 lev[1]=500 two_dmn_rec_var[10]=2.3";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			    
+
+#ncks #57:
+#  ncks -H -C --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1 --dmn lev,2,2,1   -v two_dmn_rec_var  ~/nco/data/in_grp.nc
+#/g10/two_dmn_rec_var
+#time[1]=2 lev[0]=100 two_dmn_rec_var[3]=1 
+#time[1]=2 lev[2]=1000 two_dmn_rec_var[5]=3 
+#time[3]=4 lev[0]=100 two_dmn_rec_var[9]=1 
+#time[3]=4 lev[2]=1000 two_dmn_rec_var[11]=3 
+
+    $dsc_sng="(Groups) MSA --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1";
+    $tst_cmd[0]="ncks $nco_D_flg  -H -C --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1 --dmn lev,2,2,1 -v two_dmn_rec_var  $in_pth_arg in_grp.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="time[3]=4 lev[2]=1000 two_dmn_rec_var[11]=3";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+
+#ncks #58 This test uses limits to print a dimension "lon2(4)" that does NOT have a coordinate variable
+#  ncks -H -d lon2,1,3,2  -v lon2_var  in_grp.nc
+#/g16/lon2_var
+#lon2[1] lon2_var[1]=1 
+#lon2[3] lon2_var[3]=3 
+
+    $dsc_sng="(Groups) MSA -d lon2,1,3,2 -v lon2_var";
+    $tst_cmd[0]="ncks $nco_D_flg  -H -d lon2,1,3,2 -v lon2_var  $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon2[3] lon2_var[3]=3";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+    
+#ncks #59 same as #58 but with 2 limits with the same result
+# ncks -H -d lon2,1,1,1 -d lon2,3,3,1  -v lon2_var  in_grp.nc 
+#/g16/lon2_var
+#lon2[1] lon2_var[1]=1 
+#lon2[3] lon2_var[3]=3 
+
+    $dsc_sng="(Groups) MSA -d lon2,1,3,2 -v lon2_var";
+    $tst_cmd[0]="ncks $nco_D_flg  -d lon2,1,1,1 -d lon2,3,3,1  -v lon2_var  $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon2[3] lon2_var[3]=3";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";       
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+    
+
+#ncks #60
+# This test tests both limits and extraction of associated CF variables
+# ncks -H  -v gds_var -d gds_crd,1,1,1  in_grp.nc  
+#/g7/g7g1/gds_var
+#gds_var[1]=273.2 
+#/g7/gds_crd
+#gds_crd[1]=1 
+#/g7/lat_gds
+#gds_crd[1]=1 lat_gds[1]=-30 
+#/g7/lon_gds
+#gds_crd[1]=1 lon_gds[1]=0 
+
+    $dsc_sng="(Groups) CF MSA -v gds_var -d gds_crd,1,1,1";
+    $tst_cmd[0]="ncks $nco_D_flg -H -v gds_var -d gds_crd,1,1,1 $in_pth_arg in_grp.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="gds_crd[1]=1 lon_gds[1]=0";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";       
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+  
+  
+#ncks #61
+# This test tests both limits printing of coordinates that are in ancestor groups
+# ncks -H  -v gds_var -d gds_crd,1,1,1  in_grp.nc   
+# ncks -H -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1 in_grp.nc 
+#/g7/g7g1/gds_var
+# gds_crd[1]=1 gds_var[1]=273.2 
+# gds_crd[3]=3 gds_var[3]=273.4 
+
+    $dsc_sng="(Groups) MSA -H -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1";
+    $tst_cmd[0]="ncks $nco_D_flg -H -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1 $in_pth_arg in_grp.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="gds_crd[3]=3 gds_var[3]=273.4";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";    
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+    
+    
+#ncks #62
+# Test "parallel" scope 
+#ncks: INFO nco_bld_var_dmn() reports variable </g16/g16g1/lon1> with dimension coordinate [0]/g16/g16g1/lon1
+# ncks -H -g g16g1 -v lon1 -d lon1,3,3,1  in_grp.nc
+#/g16/g16g1/lon1
+#lon1[3]=3 
+
+    $dsc_sng="(Groups) Parallel scope MSA -g g16g1 -v lon1 -d lon1,3,3,1";
+    $tst_cmd[0]="ncks $nco_D_flg -H -g g16g1 -v lon1 -d lon1,3,3,1  $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon1[3]=3";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";      
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			 
+
+#ncks #63
+# Test "parallel" scope 
+#ncks: INFO nco_bld_var_dmn() reports variable </g16/g16g1/lon1_var> with dimension coordinate [0]/g16/g16g1/lon1
+
+
+    $dsc_sng="(Groups) Parallel scope MSA -g g16g1 -v lon1_var -d lon1,1,1,1";
+    $tst_cmd[0]="ncks $nco_D_flg -H -g g16g1 -v lon1_var -d lon1,1,1,1 $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon1[1]=1 lon1_var[1]=1";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";    
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+
+    
+#ncks #64
+# Test "parallel" scope 
+#ncks: INFO nco_bld_var_dmn() reports variable </g16/g16g2/lon1_var> with dimension coordinate [0]/g16/g16g2/lon1
+
+
+    $dsc_sng="(Groups) Parallel scope MSA -g g16g2 -v lon1_var -d lon1,1,1,1";
+    $tst_cmd[0]="ncks $nco_D_flg -H -g g16g2 -v lon1_var -d lon1,1,1,1 $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon1[1]=4 lon1_var[1]=1";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";      
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+    
+#ncks #65
+# Test creation of variables with ancestor group dimensions
+#ncks -O -g g6g1 -v area  in_grp.nc out.nc
+#/g6/g6g1/area
+#lat[1]=90 area[1]=50
+
+    $dsc_sng="(Groups) Dimensions in ancestor groups -g g6g1 -v area";
+    $tst_cmd[0]="ncks $nco_D_flg -O -g g6g1 -v area $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -H -C -v area -d lat,1,1 %tmp_fl_00%";
+    $tst_cmd[2]="lat[1]=90 area[1]=50";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+    $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";     
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+#ncks #66
+# Test creation of variables with ancestor group dimensions, with GPE
+#ncks -O -G o1 -g g6g1 -v area  in_grp.nc out.nc
+#/o1/g6/g6g1/area
+#lat[0]=-90 area[0]=40 
+#lat[1]=90 area[1]=50 
+
+    $dsc_sng="(Groups) GPE and Dimensions in ancestor groups -G o1 -g g6g1 -v area";
+    $tst_cmd[0]="ncks $nco_D_flg -O -G o1 -g g6g1 -v area $in_pth_arg in_grp.nc %tmp_fl_00%";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="ncks -H -C -v area -d lat,0,1 %tmp_fl_00%";
+    $tst_cmd[2]="lat[1]=90 area[1]=50";
+    $tst_cmd[3]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";    
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			      
+         
+#ncks #67
+# Test "out of scope " coordinate
+# ncks  -H  -v lon3_var  in_grp.nc
+
+    $dsc_sng="(Groups) Out of scope coordinate -v lon3_var";
+    $tst_cmd[0]="ncks $nco_D_flg -H -v lon3_var $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon3[3] lon3_var[3]=3";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";       
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			  
+    
+#ncks #68
+# Test 2 "intermediate scope " coordinates
+# ncks  -H  -v lon4_var  in_grp.nc
+
+    $dsc_sng="(Groups) Order coordinates by group depth -v lon4_var";
+    $tst_cmd[0]="ncks $nco_D_flg -C -H -v lon4_var $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="lon4[1]=4 lon4_var[1]=1";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			      
+     
+    
+    
+#ncks #69
+# Test -X
+# ncks -O -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar in_grp_3.nc 
+
+    $dsc_sng="(Groups) Auxiliary coordinates -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar in_grp_3.nc ";
+    $tst_cmd[0]="ncks $nco_D_flg -C -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="time[9] gds_crd[1]=1 gds_3dvar[73]=282.2 meter";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 			
+
+
+   
+#ncks #70
+# ncks  -h -O  -C -v three_dmn_var_dbl  -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc
+
+    $dsc_sng="Limits -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc";
+    $tst_cmd[1]="time[2]=3 lat[0]=-90 lon[3]=270 three_dmn_var_dbl[19]=20 watt meter-2";
+    $tst_cmd[2]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 	
+
+#ncks #71
+#same as #70, with group
+# ncks -h -O  -v three_dmn_var_dbl  -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in_grp_3.nc
+
+    $dsc_sng="(Groups) Limits -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C -g g19g3 -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 $in_pth_arg in_grp_3.nc";
+    if($HAVE_NETCDF4_H == 1){
+    $tst_cmd[1]="time[2]=3 lat[0]=-90 lon[3]=270 three_dmn_var_dbl[19]=20 watt meter-2";
+    $tst_cmd[2]="SS_OK";   
+    }elsif($HAVE_NETCDF4_H == 0){
+     $tst_cmd[1]="nco_err_exit(): ERROR NCO will now exit with system call exit(EXIT_FAILURE)"; 
+    $tst_cmd[2]="SS_OK";        
+    }
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+
+
+   } #### Group tests	
+	
+	
+    
+#####################
+#### ncpdq tests #### -OK !
 #####################
     $opr_nm='ncpdq';
 ####################
     
+#####################
+#### ncpdq PERMUTE -a (reverse, re-order) tests 
+#####################    
+    
+#ncpdq #1
+    
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a -lat -v lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%g' -v lat -d lat,0 %tmp_fl_00%";
-    $dsc_sng="reverse coordinate";
+    $dsc_sng="Reverse coordinate -a -lat -v lat";
     $tst_cmd[2]="90";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
+#ncpdq #2
+#three_dmn_var(lat,lev,lon);
+
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a -lat,-lev,-lon -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,0 -d lon,0 %tmp_fl_00%";
-    $dsc_sng="reverse three dimensional variable";
+    $dsc_sng="Reverse 3D variable a -lat,-lev,-lon -v three_dmn_var";
     $tst_cmd[2]=23;
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncpdq #3 NEW NCO 4.3.2
+    
+    $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -C -a lon,lat -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 %tmp_fl_00%";
+    $dsc_sng="Re-order 3D variable (no associated coordinates) -C -a lon,lat -v three_dmn_var ";
+    $tst_cmd[2]="11";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array    
+    
+    
+#ncpdq #4 
     
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a lon,lat -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 %tmp_fl_00%";
-    $dsc_sng="re-order three dimensional variable";
+    $dsc_sng="Re-order 3D variable (associated coordinates) -a lon,lat -v three_dmn_var ";
     $tst_cmd[2]="11";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#ncpdq #5
+#three_dmn_var_dbl(time,lat,lon);
+#ncpdq -h -O -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3
     
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var_dbl -d lat,0 -d lon,1 -d time,2 %tmp_fl_00%";
-    $dsc_sng="re-order 3D variable with multihyperslabbing";
+    $dsc_sng="Re-order 3D variable with MSA -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3";
     $tst_cmd[2]="20";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array  
+ 
+#NEW NCO 4.3.2 
+#ncpdq #6 (same run as #5) 
+#make sure first dimension is record
+    
+    $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -v three_dmn_var_dbl %tmp_fl_00% | grep  'three_dmn_var_dbl dimension 0: lat, size = 2 (Record non-coordinate dimension)'";
+    $dsc_sng="Re-order 3D variable with MSA -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3";
+    $tst_cmd[2]="three_dmn_var_dbl dimension 0: lat, size = 2 (Record non-coordinate dimension)";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array
+    
+#NEW NCO 4.3.2 
+#ncpdq #7 MSA stride
+#ncpdq -h -O -a lat,lon,time  -d time,1,3,2 -d lat,1,1,1 -d lon,1,3,2 -v three_dmn_var_dbl  in.nc out.nc 
+#ncks -C -H -v three_dmn_var_dbl -d lat,0,0 -d lon,1,1 -d time,0  out.nc
+#lat[0]=90 lon[1]=270 time[0]=2 three_dmn_var_dbl[2]=16 
+
+    $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a lat,lon,time -d time,1,3,2 -d lat,1,1,1 -d lon,1,3,2 -v three_dmn_var_dbl  $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v three_dmn_var_dbl -d lat,0,0 -d lon,1,1 -d time,0 %tmp_fl_00%";
+    $dsc_sng="Re-order 3D variable with MSA (stride) -a lat,lon,time -d time,1,3,2 -d lat,1,1,1 -d lon,1,3,2 -v three_dmn_var_dbl";
+    $tst_cmd[2]="lat[0]=90 lon[1]=270 time[0]=2 three_dmn_var_dbl[2]=16";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array
+  
+   
+#ncpdq #8
 
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lat,lon,-time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var_dbl -d lat,1 -d lon,1 -d time,4 %tmp_fl_00%";
-    $dsc_sng="re-order 3D variable with MSA+ reversal of time dim";
+    $dsc_sng="Re-order 3D variable with MSA+ reversal of time dim -C -a lat,lon,-time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3";
     $tst_cmd[2]="8";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 
+#ncpdq #9
+    
      $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lon,lat -v three_dmn_var_dbl -d time,0,2 -d time,4 -d lat,1 -d lat,1 --msa_usr_rdr $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%2.f,' -v three_dmn_var_dbl -d time,1 -d lon,0  %tmp_fl_00%";
-    $dsc_sng="re-order 3D variable with MSA and --msa_usr_rdr flag";
+    $dsc_sng="Re-order 3D variable with MSA and --msa_usr_rdr flag -C -a lon,lat -v three_dmn_var_dbl -d time,0,2 -d time,4 -d lat,1 -d lat,1 --msa_usr_rdr";
     $tst_cmd[2]="13,13";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+    
+#NEW NCO 4.3.2
+#ncpdq #10
+# two_dmn_var (lat,lev) no change
+# ncpdq -O -C -a lat,lev -v two_dmn_var in.nc out.nc
+# ncks  -d lat,1,1 -d lev,1,1 out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O -C $fl_fmt $nco_D_flg -a lat,lev -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable (-C , no MSA, no-reorder) -v two_dmn_var -a lat,lev";
+  $tst_cmd[2]="lat[1] lev[1] two_dmn_var[4]=17.5 fraction";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array
+    
+#NEW NCO 4.3.2
+#ncpdq #11
+# two_dmn_var (lat,lev) -C, no MSA (no associated coordinates)
+# ncpdq -O -C -a lev,lat -v two_dmn_var in.nc out.nc
+# ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -C -a lev,lat -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable (-C , no MSA) -v two_dmn_var -a lev,lat";
+  $tst_cmd[2]="lev[1] lat[1] two_dmn_var[3]=17.5 fraction";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array   
+
+#NEW NCO 4.3.2
+#ncpdq #12
+# two_dmn_var (lat,lev) no MSA (associated coordinates)
+# ncpdq -O -a lev,lat -v two_dmn_var in.nc out.nc
+# ncks  -C -d lat,1,1 -d lev,1,1 out.nc
+#$tst_cmd[2]="lev[1]=500 lat[1]=90 two_dmn_var[3]=17.5 fraction";
+
+  $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,lat -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -C -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable (no -C , no MSA) -v two_dmn_var -a lev,lat";
+  $tst_cmd[2]="lev[1]=500 lat[1]=90 two_dmn_var[3]=17.5 fraction";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array     
+   
+
+#NEW NCO 4.3.2
+#ncpdq #13
+# two_dmn_var (lat,lev) -C, MSA (no associated coordinates)
+# ncpdq -O -C -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var in.nc out.nc
+# ncks out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O -C $fl_fmt $nco_D_flg -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_var %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable (-C , MSA) -v two_dmn_var -a lev,lat -d lat,1,1 -d lev,1,1";
+  $tst_cmd[2]="lev[0] lat[0] two_dmn_var[0]=17.5 fraction";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array   
+  
+#NEW NCO 4.3.2
+#ncpdq #14
+# two_dmn_var (lat,lev) MSA (associated coordinates)
+# ncpdq -O -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var in.nc out.nc
+# ncks out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_var %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable (no -C , MSA) -v two_dmn_var -a lev,lat -d lat,1,1 -d lev,1,1";
+  $tst_cmd[2]="lev[0]=500 lat[0]=90 two_dmn_var[0]=17.5 fraction";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2
+#ncpdq #15
+# two_dmn_rec_var(time,lev) 2D variable with record  (-C , no MSA)
+# ncpdq -O -C -a lev,time -v two_dmn_rec_var in.nc out.nc
+# ncks  -d time,1,1 -d lev,1,1 out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -C -a lev,time -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_rec_var  -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable with record (-C , no MSA) -v two_dmn_rec_var -C -a lev,time";
+  $tst_cmd[2]="lev[1] time[1] two_dmn_rec_var[11]=2.1 watt meter-2";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array  
+
+
+#NEW NCO 4.3.2
+#ncpdq #16
+# two_dmn_rec_var(time,lev) 2D variable with record  (no MSA)
+# ncpdq -O -a lev,time -v two_dmn_rec_var in.nc out.nc
+# ncks  -d time,1,1 -d lev,1,1 out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,time -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable with record (no -C , no MSA) -v two_dmn_rec_var -a lev,time";
+  $tst_cmd[2]="lev[1]=500 time[1]=2 two_dmn_rec_var[11]=2.1 watt meter-2";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2
+#ncpdq #17
+# two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
+# ncpdq -O -C -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var in.nc out.nc
+# ncks  out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -C -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_rec_var %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable with record (-C , MSA) -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var";
+  $tst_cmd[2]="lev[0] time[0] two_dmn_rec_var[0]=2.1 watt meter-2";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array   
+  
+#NEW NCO 4.3.2
+#ncpdq #18
+# two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
+# ncpdq -O -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var in.nc out.nc
+# ncks  out.nc
+
+  $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+  $tst_cmd[1]="ncks -v two_dmn_rec_var %tmp_fl_00%";
+  $dsc_sng="Re-order 2D variable with record (no -C , MSA) -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var";
+  $tst_cmd[2]="lev[0]=500 time[0]=2 two_dmn_rec_var[0]=2.1 watt meter-2";
+  $tst_cmd[3]="SS_OK";
+  if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+  $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2
+#ncpdq #19
+#three_dmn_var_dbl(time,lat,lon);
+#ncpdq -h -O -a lat,time -v three_dmn_var -d time,1,1 -d lat,1,1 -d lon,1,1 in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a -lat,-time -v three_dmn_var_dbl -d time,1,6,2 -d lat,0,1 -d lon,1,1 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks  -H -C -v three_dmn_var_dbl -d lat,1,1 -d time,2,2 %tmp_fl_00%";
+    $dsc_sng="Reverse/Re-order 3D variable -a -lat,-time -v three_dmn_var_dbl -d time,1,1 -d lat,1,1 -d lon,1,1";
+    $tst_cmd[2]="lat[1]=-90 time[2]=2 lon[0]=90 three_dmn_var_dbl[5]=10";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array  
+    
+#NEW NCO 4.3.2
+#ncpdq #20
+#three_dmn_rec_var(time,lat,lon);
+#ty(time,lat);
+#ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v ty -d time,1,1 -d lat,1,1 %tmp_fl_00%";
+    $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (no MSA) Test1";
+    $tst_cmd[2]="lat[1]=90 time[1]=2 ty[11]=4";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array   
+
+#NEW NCO 4.3.2
+#ncpdq #21 (same run as #20)
+#three_dmn_rec_var(time,lat,lon);
+#ty(time,lat);
+#ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v three_dmn_rec_var -d time,1,1 -d lat,1,1 -d lon,1,1 %tmp_fl_00%";
+    $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (no MSA) Test2";
+    $tst_cmd[2]="lat[1]=90 time[1]=2 lon[1]=90 three_dmn_rec_var[45]=14";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array         
+  
+#NEW NCO 4.3.2
+#ncpdq #22
+#three_dmn_rec_var(time,lat,lon); MSA
+#ty(time,lat);
+#ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v ty -d time,2,2 %tmp_fl_00%";
+    $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (MSA) Test1 read ty";
+    $tst_cmd[2]="lat[0]=90 time[2]=6 ty[2]=12";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array 
+
+#NEW NCO 4.3.2
+#ncpdq #23 (same run as #22)
+#three_dmn_rec_var(time,lat,lon); MSA
+#ty(time,lat);
+#ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks  -C -H -v three_dmn_rec_var -d lat,0,0 -d time,1,1 -d lon,1,1  %tmp_fl_00%";
+    $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (MSA) Test2 read three_dmn_rec_var";
+    $tst_cmd[2]="lat[0]=90 time[1]=4 lon[1]=90 three_dmn_rec_var[5]=30";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2
+#ncpdq #24 (same run as #22) check if output is the right record
+#three_dmn_rec_var(time,lat,lon); 
+#ty(time,lat);
+#ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m -C -v three_dmn_rec_var %tmp_fl_00% | grep 'three_dmn_rec_var dimension 0: lat, size = 2 NC_FLOAT (Record coordinate is lat)'";
+    $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var Test3 check record for lat";
+    $tst_cmd[2]="three_dmn_rec_var dimension 0: lat, size = 2 NC_FLOAT (Record coordinate is lat)";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2
+#ncpdq #25 (same run as #22) check if output is the right record
+#three_dmn_rec_var(time,lat,lon); 
+#ty(time,lat);
+#ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var in.nc out.nc
+    
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m -C -v three_dmn_rec_var %tmp_fl_00% | grep 'three_dmn_rec_var dimension 1: time, size = 10 NC_DOUBLE (Coordinate is time)'";
+    $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var Test4 check non record for time";
+    $tst_cmd[2]="three_dmn_rec_var dimension 1: time, size = 10 NC_DOUBLE (Coordinate is time)";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2
+#ncpdq #26
+#four_dmn_rec_var(time,lat,lev,lon); MSA
+#ncpdq -h -O -a lev,time,-lon,-lat -v four_dmn_rec_var -d time,1,6,2 -d lat,1,1 -d lon,1,1 -d lev,1,1 in.nc out.nc
+#ncks  -C -H -v four_dmn_rec_var -d time,2,2 out.nc
+
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lev,time,-lon,-lat -v four_dmn_rec_var -d time,1,6,2 -d lat,1,1 -d lon,1,1 -d lev,1,1 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks  -C -H -v four_dmn_rec_var -d time,2,2 %tmp_fl_00%";
+    $dsc_sng="Reverse/Re-order 4D variable -a lev,time,-lon,-lat -v four_dmn_rec_var (MSA)";
+    $tst_cmd[2]="lev[0]=500 time[2]=6 lon[0]=90 lat[0]=90 four_dmn_rec_var[2]=138";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array  
+    
+#NEW NCO 4.3.2
+#ncpdq #27 : reorder 2 variables with -a lat,time and check a variable that only has 1 (lat)
+#PS(time,lat,lon)
+#three_dmn_var_crd(lev,lat,lon);
+#ncpdq -h -O -a lat,time -v PS,three_dmn_var_crd -d lev,1,1 -d lat,1,1 -d lon,1,1 -d lev,1,1 in.nc out.nc
+#ncks  -C -H -v three_dmn_var_crd out.nc
+
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v PS,three_dmn_var_crd -d lev,1,1 -d lat,1,1 -d lon,1,1 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H -C -v three_dmn_var_crd %tmp_fl_00%";
+    $dsc_sng="Re-order 3D variable (only 1 in -a) -a lat,time -v PS,three_dmn_var_crd (MSA)";
+    $tst_cmd[2]="lat[0]=90 lev[0]=500 lon[0]=90 three_dmn_var_crd[0]=17";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array  
+ 
+#NEW NCO 4.3.2
+#ncpdq #28 
+#ncpdq -h -O -a lat,time -d time,1,6,2 -d lat,1,1 in.nc out.nc
+#ncks  -C -H -v -d time,2,2 four_dmn_rec_var out.nc
 
+    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -d time,1,1 -d lat,1,1 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v four_dmn_rec_var -d lon,2,2 -d lev,2,2 %tmp_fl_00%";
+    $dsc_sng="Re-order all variables -a lat,time (MSA)";
+    $tst_cmd[2]="lat[0]=90 time[0]=2 lev[2]=1000 lon[2]=180 four_dmn_rec_var[10]=47";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array       
+    
+#####################
+#### ncpdq PACK tests 
+#####################       
+    
+#ncpdq #29
+    
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -P all_new -v upk $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -P upk -v upk %tmp_fl_00% %tmp_fl_00%";
     $tst_cmd[2]="ncks -C -H -s '%g' -v upk %tmp_fl_00%";
-    $dsc_sng="Pack and then unpack scalar (uses only add_offset)";
+    $dsc_sng="Pack and then unpack scalar (uses only add_offset) -P all_new -v upk";
     $tst_cmd[3]="3";
     $tst_cmd[4]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 
+#ncpdq #30
+    
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 %tmp_fl_00%";
-    $dsc_sng="unpack 1D variable with MSA (failure expected with netCDF4 TODO nco772)";
+    $dsc_sng="Unpack 1D variable with MSA -C P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6";
     $tst_cmd[2]="7";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncpdq #31
 
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P all_xst -v three_dmn_var_dbl -d time,0,2 -d time,8,9 -d lon,0 -d lon,1 -d lat,1 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%i' -v three_dmn_var_dbl -d time,2 -d lon,1 -d lat,0 %tmp_fl_00%";
-    $dsc_sng="Pack 3D double variable with MSA (failure expected with netCDF4)"; # 20110428: I can't remember why netCDF4 is expected to cause failure....
+    $dsc_sng="Pack 3D variable with MSA -C -P all_xst -v three_dmn_var_dbl -d time,0,2 -d time,8,9 -d lon,0 -d lon,1 -d lat,1"; 
     ##### TODO 880
     $tst_cmd[2]="17505";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+	
+	#### Group tests	
+	if($HAVE_NETCDF4_H == 1){
+
+#####################
+#### ncpdq GROUP tests 
+#####################    
+
+#NEW NCO 4.3.2
+#ncpdq #11
+# two_dmn_var (lat,lev) -C, no MSA (no associated coordinates)
+# ncpdq -O -C -a lev,lat -v two_dmn_var in.nc out.nc
+# ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 out.nc
+
+
+# same as previous but with group
+    
+#NEW NCO 4.3.2
+#ncpdq #32
+# group: g19 { 
+# dimensions:lat=2;lev=3;lon=4;time=unlimited;
+#ncpdq #11
+# two_dmn_var (lat,lev) -C, no MSA (no associated coordinates)
+# ncpdq -O -C -g g19g1 -a lev,lat -v two_dmn_var in_grp_3.nc out.nc
+# ncks -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 out.nc
+
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -C -g g19g1 -a lev,lat -v two_dmn_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable (-C , no MSA) -v two_dmn_var -a lev,lat";
+   $tst_cmd[2]="lev[1] lat[1] two_dmn_var[3]=17.5 fraction";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array    
+ 
+ 
+#NEW NCO 4.3.2
+#ncpdq #12
+# two_dmn_var (lat,lev) no -C, no MSA
+# ncpdq -O -a lev,lat -v two_dmn_var in.nc out.nc
+# ncks  -C -d lat,1,1 -d lev,1,1 out.nc
+
+
+# same as previous but with group
+    
+#NEW NCO 4.3.2
+#ncpdq #33
+# group: g19 { 
+# dimensions:lat=2;lev=3;lon=4;time=unlimited;
+#ncpdq #12
+# two_dmn_var (lat,lev) no -C, no MSA 
+# ncpdq -O -g g19g1 -a lev,lat -v two_dmn_var in_grp_3.nc out.nc
+# ncks -C -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 out.nc
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g1 -a lev,lat -v two_dmn_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable (no -C , no MSA) -v two_dmn_var -a lev,lat";
+   $tst_cmd[2]="lev[1]=500 lat[1]=90 two_dmn_var[3]=17.5 fraction";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array    
+
+#NEW NCO 4.3.2
+#ncpdq #13
+# two_dmn_var (lat,lev) -C, MSA (no associated coordinates)
+# ncpdq -O -C -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var in.nc out.nc
+# ncks out.nc
+
+
+# same as previous but with group
+    
+#NEW NCO 4.3.2
+#ncpdq #34
+# group: g19 { 
+# dimensions:lat=2;lev=3;lon=4;time=unlimited;
+#ncpdq #13
+# two_dmn_var (lat,lev) -C, MSA (no associated coordinates)
+# ncpdq -O -C -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var in_grp_3.nc out.nc
+# ncks out.nc
+
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g1 -C -a lev,lat -v two_dmn_var -d lat,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -g g19g1 -v two_dmn_var %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable (-C , MSA) -v two_dmn_var -a lev,lat";
+   $tst_cmd[2]="lev[0] lat[0] two_dmn_var[0]=17.5 fraction";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array      
+
+#NEW NCO 4.3.2
+#ncpdq #14
+# two_dmn_var (lat,lev) MSA (associated coordinates)
+# ncpdq -O -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var in.nc out.nc
+# ncks out.nc
+#$tst_cmd[2]="lev[0]=500 lat[0]=90 two_dmn_var[0]=17.5 fraction";
+
+# same as previous but with group
+    
+#NEW NCO 4.3.2
+#ncpdq #35
+# group: g19 { 
+# dimensions:lat=2;lev=3;lon=4;time=unlimited;
+# two_dmn_var (lat,lev) MSA (associated coordinates)
+# ncpdq -O -g g19g1 -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var in_grp_3.nc out.nc
+# ncks -C -g g19g1 -v two_dmn_var out.nc
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g1 -a lev,lat -v two_dmn_var -d lat,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C -g g19g1 -v two_dmn_var %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable (no -C , MSA) -v two_dmn_var -a lev,lat";
+   $tst_cmd[2]="lev[0]=500 lat[0]=90 two_dmn_var[0]=17.5 fraction";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array      
+
+#NEW NCO 4.3.2
+#ncpdq #15
+# two_dmn_rec_var(time,lev) 2D variable with record  (-C , no MSA)
+# ncpdq -O -C -a lev,time -v two_dmn_rec_var in.nc out.nc
+# ncks  -d time,1,1 -d lev,1,1 out.nc
+
+# same as previous but with group
+    
+#NEW NCO 4.3.2
+#ncpdq #36
+# group: g19 { 
+# dimensions:lat=2;lev=3;lon=4;time=unlimited;
+# ncpdq -O -g g19g2 -C -a lev,time -v two_dmn_rec_var in_grp_3.nc out.nc
+# ncks  -d time,1,1 -d lev,1,1 out.nc
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g2 -C -a lev,time -v two_dmn_rec_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -g g19g2 -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable with record (-C , no MSA) -v two_dmn_rec_var -C -a lev,time";
+   $tst_cmd[2]="lev[1] time[1] two_dmn_rec_var[11]=2.1 watt meter-2";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array      
+
+#NEW NCO 4.3.2
+#ncpdq #37
+# two_dmn_rec_var(time,lev) 2D variable with record  (no -C, no MSA)
+# ncpdq -O -g g19g2 -a lev,time -v two_dmn_rec_var in_grp_3.nc out.nc
+# ncks -C -g g19g2 -d time,1,1 -d lev,1,1 out.nc
+
+# same #16 as previous but with group
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g2 -a lev,time -v two_dmn_rec_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C -g g19g2 -d time,1,1 -d lev,1,1  %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable with record (no -C , no MSA) -v two_dmn_rec_var -C -a lev,time";
+   $tst_cmd[2]="lev[1]=500 time[1]=2 two_dmn_rec_var[11]=2.1 watt meter-2";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array      
+
+#NEW NCO 4.3.2
+#ncpdq #38
+# two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
+# ncpdq -O -C -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var in_grp_3.nc out.nc
+# ncks -g g19g2 -v two_dmn_rec_var out.nc
+
+# same as #17 but with group
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -C -g g19g2 -a lev,time -v two_dmn_rec_var -d time,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -g g19g2 -v two_dmn_rec_var  %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable with record (-C , MSA) -v two_dmn_rec_var -C -a lev,time";
+   $tst_cmd[2]="lev[0] time[0] two_dmn_rec_var[0]=2.1 watt meter-2";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array      
+
+#NEW NCO 4.3.2
+#ncpdq #39
+# two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
+# ncpdq -O -g g19g2 -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var in_grp_3.nc out.nc
+# ncks  -C -g g19g2 -v two_dmn_rec_var out.nc
+# $tst_cmd[2]="lev[0]=500 time[0]=2 two_dmn_rec_var[0]=2.1 watt meter-2";
+
+# same as #18 but with group
+  
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g2 -a lev,time -v two_dmn_rec_var -d time,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C -g g19g2 -v two_dmn_rec_var  %tmp_fl_00%";
+   $dsc_sng="(Groups) Re-order 2D variable with record (no -C , MSA) -v two_dmn_rec_var";
+   $tst_cmd[2]="lev[0]=500 time[0]=2 two_dmn_rec_var[0]=2.1 watt meter-2";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.5
+#ncpdq -O -a -lat -g g23,g24 ~/nco/data/in_grp_3.nc  out.nc
+  
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a -lat -g g23,g24 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -v lat -g g23 %tmp_fl_00%";
+   $dsc_sng="(Groups) Reverse -a lat -g g23 several groups";
+   $tst_cmd[2]="lat[1]=-60 degrees_north";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.5
+#ncpdq -O -a -lat -g g23,g24 ~/nco/data/in_grp_3.nc  out.nc
+  
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a -lat -g g23,g24 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -v lat -g g24 %tmp_fl_00%";
+   $dsc_sng="(Groups) Reverse -a lat -g g24 several groups";
+   $tst_cmd[2]="lat[1]=-60 degrees_north";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array      
+
+#####################
+#### ncpdq PACK GROUP tests 
+#####################   
+
+#NEW NCO 4.3.2patch
+#ncpdq #40
+#ncpdq -h -O -P all_new -v upk in.nc out.nc
+#ncpdq -h -O -P upk -v upk out.nc out.nc
+#ncks -C -H -s '%g' -v upk out.nc
+
+# same as #29 but with group
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -g g19g4 -P all_new -v upk $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -P upk -v upk %tmp_fl_00% %tmp_fl_00%";
+   $dsc_sng="(Groups) Pack and then unpack scalar (uses only add_offset) -P all_new -v upk";
+   $tst_cmd[2]="ncks -C -H -s '%g' -v upk %tmp_fl_00%";
+   $tst_cmd[3]="3";
+   $tst_cmd[4]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array  
+
+#NEW NCO 4.3.2patch
+#ncpdq #41
+# same as ncpdq #30
+#ncpdq -g g19g4 -h -O -C -P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6 in_grp_3.nc out.nc
+#ncks -g g19g4 -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 out.nc
+#$tst_cmd[2]="7";
+
+# same as #30 but with group
+
+   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -g g19g4 -h -O -C -P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+   $tst_cmd[1]="ncks -g g19g4 -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 %tmp_fl_00%";
+   $dsc_sng="(Groups) Unpack 1D variable with MSA -C P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6";
+   $tst_cmd[2]="7";
+   $tst_cmd[3]="SS_OK";
+   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+   $#tst_cmd=0; # Reset array  
+
+    $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 %tmp_fl_00% %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_01%";
+    $dsc_sng="Unpack 1D variable twice to verify first unpacking does not inadvertently store packing attributes";
+    $tst_cmd[3]="7";
+    $tst_cmd[4]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array
+
+    $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $dsc_sng="Unpack 1D variable with netCDF convention";
+    $tst_cmd[2]="7";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array
+
+    $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk --hdf_upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $dsc_sng="Unpack 1D variable with HDF convention";
+    $tst_cmd[2]="-8";
+    $tst_cmd[3]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array
+
+    $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P xst_new --hdf_upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 %tmp_fl_00% %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_01%";
+    $dsc_sng="Re-pack 1D variable from HDF convention to netCDF convention";
+    $tst_cmd[3]="-8";
+    $tst_cmd[4]="SS_OK";
+    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
+    $#tst_cmd=0; # Reset array
+	
+	} ##### Group tests	
+	
 
-#print "paused - hit return to continue"; my $wait=<STDIN>;
-    
 ####################
 #### ncrcat tests ## OK !
 ####################
     $opr_nm='ncrcat';
 ####################
-#if ($mpi_prc == 0) { # fxm test hangs because of ncrcat TODO 593
+
+#ncrcat #01
+
+#if($mpi_prc == 0){ # fxm test hangs because of ncrcat TODO 593
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -d time,11 -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $dsc_sng="Concatenate float with double missing values across two files";
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #02	
+
+    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc in.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncks -C -H -s '%d ' -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="Concatenate record coordinate-bounded variable across two non-monotonic files";
+    $tst_cmd[2]="2 3 2 3";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #03	
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v three_dmn_var_dbl $in_pth_arg -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max  %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H  -s '%f' -v three_dmn_var_dbl %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H -s '%f' -v three_dmn_var_dbl %tmp_fl_01%";
     $dsc_sng="Concatenate float variable with multislabs across two files";
     $tst_cmd[3]="20";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #04	
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v three_dmn_var_int $in_pth_arg -d time,,6 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H  -s '%li' -v three_dmn_var_int %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H -s '%d' -v three_dmn_var_int %tmp_fl_01%";
     $dsc_sng="Concatenate int variable with multislabs across two files";
-    $tst_cmd[3]="27";
+    $tst_cmd[3]="28";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #05	
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v four_dmn_rec_var $in_pth_arg -d time,0,,4 -d lat,0,0 -d lon,0,1 -d lon,3,3  in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -y max -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H  -s '%f' -v four_dmn_rec_var  %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H -s '%f' -v four_dmn_rec_var  %tmp_fl_01%";
     $dsc_sng="Concatenate float 4D variable with multislabs across two files";
     $tst_cmd[3]="204";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #06	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=10;' $in_pth_arg in.nc %tmp_fl_00%";    
-    $tst_cmd[1]="ncra -Y ncrcat -O $omp_flg $fl_fmt $nco_D_flg -C -v time -d time,0,,4  $in_pth/in.nc %tmp_fl_00%  %tmp_fl_01% 2> %tmp_fl_02%";
-    $tst_cmd[2]="ncks -C -H  -s '%2.f,' -v time  %tmp_fl_01%";
+    $tst_cmd[1]="ncra -Y ncrcat -O $omp_flg $fl_fmt $nco_D_flg -C -v time -d time,0,,4 $in_pth/in.nc %tmp_fl_00%  %tmp_fl_01% 2> %tmp_fl_02%";
+    $tst_cmd[2]="ncks -C -H -s '%2.f,' -v time  %tmp_fl_01%";
     $dsc_sng="Concatenate 1D variable with stride across two files";
     $tst_cmd[3]=" 1, 5, 9,13,17";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #07	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=10;' $in_pth_arg in.nc %tmp_fl_00%"; 
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=20;' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncra -Y ncrcat -O $omp_flg $fl_fmt $nco_D_flg -C -v time -d time,0,,8 $in_pth/in.nc %tmp_fl_00%  %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_03%";
-    $tst_cmd[3]="ncks -C -H  -s '%2.f,' -v time  %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H -s '%2.f,' -v time  %tmp_fl_02%";
     $dsc_sng="Concatenate 1D variable with stride across three files";
     $tst_cmd[4]=" 1, 9,17,25";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #08	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=10;' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks $fl_fmt $nco_D_flg -O -C -v time -d time,0,4 %tmp_fl_00% %tmp_fl_01%";  
     $tst_cmd[2]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=20;' $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[3]="ncks $fl_fmt $nco_D_flg -O -C -v time -d time,5,7 %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[4]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,10,,2 $in_pth/in.nc %tmp_fl_01%  %tmp_fl_03% %tmp_fl_04% 2> %tmp_fl_05%";
-    $tst_cmd[5]="ncks -C -H  -s '%2.f,' -v time  %tmp_fl_04%";
+    $tst_cmd[5]="ncks -C -H -s '%2.f,' -v time  %tmp_fl_04%";
     $dsc_sng="Concatenate 1D variable with stride across files with different record dimensions";
     $tst_cmd[6]="11,13,15,27";
     $tst_cmd[7]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #09	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-03-22 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time  $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% 2> %tmp_fl_05%";
+    $tst_cmd[1]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% 2> %tmp_fl_05%";
     $tst_cmd[2]="ncap2 -O -v -C -s 'time_ttl=time.total();print(time_ttl)' %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="time_ttl = 210";
     $dsc_sng="Concatenate 1D variable across two files no limits. Requires UDUnits.";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #10	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-03-22 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-04-01 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_01%";
-    $tst_cmd[2]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,8.0,9.0  $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_05%";
+    $tst_cmd[2]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,8.0,9.0 $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_05%";
     $tst_cmd[3]="ncap2 -O -v -C -s 'time_ttl=time.total();print(time_ttl)' %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[4]="time_ttl = 17";
     $dsc_sng="Concatenate 1D variable across three files double limits. Requires UDUnits.";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #11	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-03-22 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-04-01 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_01%";
-    $tst_cmd[2]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,11.0,20.0  $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_05%";
+    $tst_cmd[2]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,11.0,20.0 $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_05%";
     $tst_cmd[3]="ncap2 -O -v -C -s 'time_ttl=time.total();print(time_ttl)' %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[4]="time_ttl = 155";
     $dsc_sng="Concatenate 1D variable across three files double limits2. Requires UDUnits.";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #12	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-03-22 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time\@units=\"days since 1964-04-01 12:09:00 -9:00\"' $in_pth_arg in.nc %tmp_fl_01%";
-    $tst_cmd[2]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,'1964-03-22 12:00','1964-03-25 12:00'   $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_05%";
+    $tst_cmd[2]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,'1964-03-22 12:00','1964-03-25 12:00' $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_05%";
     $tst_cmd[3]="ncap2 -O -v -C -s 'time_ttl=time.total();print(time_ttl)' %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[4]="time_ttl = 33";
     $dsc_sng="Concatenate 1D variable across three files time stamp limits2. Requires UDUnits.";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #13	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1 10:0:0\"' $in_pth_arg in.nc %tmp_fl_01%";
@@ -914,7 +3245,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over 3 files with large stride. Requires UDUnits.";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #14	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1 10:0:0\"' $in_pth_arg in.nc %tmp_fl_01%";
@@ -925,7 +3258,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over 3 files coord limits+stride. Requires UDUnits.";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #15	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1 10:0:0\"' $in_pth_arg in.nc %tmp_fl_01%";
@@ -936,7 +3271,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over three files date-stamp limits+stride. Requires UDUnits.";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #16	
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1 10:0:0\"' $in_pth_arg in.nc %tmp_fl_01%";
@@ -947,7 +3284,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over 3 files date-stamp limits+stride. Requires UDUnits.";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #17
 
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1\"' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time=time-1;time\@units=\"hours since 1990-1-1 10:0:0\"' $in_pth_arg in.nc %tmp_fl_01%";
@@ -958,7 +3297,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D variable over 3 files dmn limits+stride. Requires UDUnits.";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #18	
 
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v time -d time,0 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncatted -h -O $nco_D_flg -a units,time,o,c,'days since 1981-2-1' %tmp_fl_00%";   
@@ -974,7 +3315,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over 4 files different record sizes. Requires UDUnits.";
     $tst_cmd[11]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #19	
 
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v time -d time,0 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncatted -h -O $nco_D_flg -a units,time,o,c,'days since 1981-2-1' %tmp_fl_00%";   
@@ -990,7 +3333,9 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over 4 files with srd=4 different rec sizes. Requires UDUnits.";
     $tst_cmd[11]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #20	
 
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v time -d time,0 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncatted -h -O $nco_D_flg -a units,time,o,c,'days since 1981-2-1' %tmp_fl_00%";   
@@ -1006,8 +3351,77 @@ sub tst_rgr {
     $dsc_sng="Cat. 1D var over 4 files with srd=3 str/end timestamps. Requires UDUnits.";
     $tst_cmd[11]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+#ncrcat #21	
+
+    $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncrcat $omp_flg -h --no_tmp_fl --rec_apn $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H -s '%d' -d time,19 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="Append records to existing file without copying original";
+    $tst_cmd[3]="10";
+    $tst_cmd[4]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){
+	
+	
+#ncrcat #22	
+# same as ncrcat #02 with group
+
+    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncks -C -H -s '%d ' -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) Concatenate record coordinate-bounded variable across two non-monotonic files";
+    $tst_cmd[2]="2 3 2 3";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+	
+	
+#ncrcat #23	
+# 2 groups each one with a record (part 1)
+# ncra -Y ncrcat -h -O -g g25g1,g25g2 -v one_dmn_rec_var in_grp_3.nc in_grp_3.nc -d time,2.,3. out.nc
+
+    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 -v one_dmn_rec_var $in_pth_arg in_grp_3.nc in_grp_3.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncks -C -H -s '%d ' -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 groups Concatenate record coordinate-bounded variable across two non-monotonic files";
+    $tst_cmd[2]="2 3 2 3";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
 
+#ncrcat #24
+# 2 groups each one with a record (part 2)
+# ncra -Y ncrcat -h -O -g g25g1,g25g2 -v one_dmn_rec_var in_grp_3.nc in_grp_3.nc -d time,2.,3. out.nc
+
+    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 -v one_dmn_rec_var $in_pth_arg in_grp_3.nc in_grp_3.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncks -C -H -s '%d ' -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 groups Concatenate record coordinate-bounded variable across two non-monotonic files";
+    $tst_cmd[2]="2 3 2 3";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array		
+	
+#ncrcat #25
+#same as #03 
+
+    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v three_dmn_var_dbl $in_pth_arg -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in_grp_3.nc in_grp_3.nc %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max  %tmp_fl_00% %tmp_fl_01%"; 
+    $tst_cmd[2]="ncks -C -H -s '%f' -g g19g3 -v three_dmn_var_dbl %tmp_fl_01%";
+    $dsc_sng="(Groups) Concatenate float variable with multislabs across two files";
+    $tst_cmd[3]="20";
+    $tst_cmd[4]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+	} #### Group tests	
+
+	
+	
+	
 #    } else { print "NB: Current mpncrcat test skipped because it hangs fxm TODO nco593.\n";}
     
 ####################
@@ -1015,28 +3429,33 @@ sub tst_rgr {
 ####################
     $opr_nm='ncra';
 ####################
-    
-#        if ($mpi_prc == 0 || ($mpi_prc > 0 && $localhostname !~ /sand/)) { # test hangs because of ncrcat TODO nco772
-    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_01% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y avg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time %tmp_fl_00% %tmp_fl_00%";
-    $tst_cmd[3]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl %tmp_fl_01% %tmp_fl_00% %tmp_fl_00%";
-    $tst_cmd[4]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -v rec_var_flt_mss_val_dbl %tmp_fl_00% %tmp_fl_00%";
-    $tst_cmd[5]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+
+# ncra #01
+    
+#        if($mpi_prc == 0 || ($mpi_prc > 0 && $localhostname !~ /sand/)){ # test hangs because of ncrcat TODO nco772
+    $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_01% 2> %tmp_fl_00%";
+    $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[2]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
+    $tst_cmd[3]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -v rec_var_flt_mss_val_dbl %tmp_fl_03% %tmp_fl_00%";
+    $tst_cmd[4]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $dsc_sng="record sdn of float with double missing values across two files";
-    $tst_cmd[6]="2";
-    $tst_cmd[7]="SS_OK";
+    $tst_cmd[5]="2";
+    $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
 #    } else { print "NB: Current mpncra test skipped on sand because mpncrcat step hangs fxm TODO nco593\n";}
+
+# ncra #02
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="record mean of int across two files";
-    $tst_cmd[2]="5";
+    $tst_cmd[2]="6";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #03	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1044,7 +3463,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #04	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_int $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_int %tmp_fl_00%";
@@ -1052,7 +3473,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #05	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_int %tmp_fl_00%";
@@ -1060,7 +3483,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #06	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_int %tmp_fl_00%";
@@ -1068,7 +3493,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #07
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_flt $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_flt %tmp_fl_00%";
@@ -1076,7 +3503,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #08	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_flt $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_flt %tmp_fl_00%";
@@ -1084,7 +3513,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #09	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_dbl_mss_val_dbl_pck $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck %tmp_fl_00%";
@@ -1092,7 +3523,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #10	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_dbl_pck $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_dbl_pck %tmp_fl_00%";
@@ -1100,7 +3533,9 @@ sub tst_rgr {
     $tst_cmd[2]="100.55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #11	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_pck $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%3.2f' -v rec_var_flt_pck %tmp_fl_00%";
@@ -1108,7 +3543,9 @@ sub tst_rgr {
     $tst_cmd[2]="100.55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #12	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v pck,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v pck %tmp_fl_00%";
@@ -1116,7 +3553,9 @@ sub tst_rgr {
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #13
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y avg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1124,7 +3563,9 @@ sub tst_rgr {
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #14
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1132,7 +3573,9 @@ sub tst_rgr {
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #15	
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1140,7 +3583,9 @@ sub tst_rgr {
     $tst_cmd[2]="8";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #16
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1148,7 +3593,9 @@ sub tst_rgr {
     $tst_cmd[2]="70";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #17
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%1.5f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1156,7 +3603,9 @@ sub tst_rgr {
     $tst_cmd[2]="5.38516";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #18
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v time,one_dmn_rec_var $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v time %tmp_fl_00%";
@@ -1164,7 +3613,9 @@ sub tst_rgr {
     $tst_cmd[2]="5.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #19
     
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v time,one_dmn_rec_var $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
@@ -1172,7 +3623,9 @@ sub tst_rgr {
     $tst_cmd[2]="110";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #20	
 
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -X 0.,180.,-30.,30. -v gds_3dvar $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%8.1f' -v gds_3dvar %tmp_fl_00%";
@@ -1180,20 +3633,148 @@ sub tst_rgr {
     $tst_cmd[2]="   277.7   277.8   277.9   278.0   278.1   278.2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #21
 	
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
     $tst_cmd[1]="ncra  $omp_flg -h -O $fl_fmt $nco_D_flg -C $in_pth_arg lrg_bm.nc lrg_bm1.nc %tmp_fl_00%";
     $tst_cmd[2]="ncra  -t1 -h -O $fl_fmt $nco_D_flg -C $in_pth_arg lrg_bm.nc lrg_bm1.nc %tmp_fl_01%";
-    $tst_cmd[3]="ncbo -C -h -O   %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[4]="ncwa  -t1 -O -C  %tmp_fl_02% %tmp_fl_03% 2>%tmp_fl_05%";
+    $tst_cmd[3]="ncbo -C -h -O  %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[4]="ncwa  -t1 -O -C %tmp_fl_02% %tmp_fl_03% 2>%tmp_fl_05%";
     $dsc_sng="Check op with OpenMP";
     $tst_cmd[5]="ncap2 -t1 -h -v -O -s 'n2= ( (fabs(R)<0.01) && (fabs(S)<0.01) && (fabs(T)<0.01) && (fabs(U)<0.01) && (fabs(V)<0.01) && (fabs(W)<0.01) && (fabs(X)<0.01) );print(n2)' %tmp_fl_03% %tmp_fl_04%";
     $tst_cmd[6]="n2 = 1";
     $tst_cmd[7]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+# ncra #22
+    
+    $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncra $omp_flg -h --no_tmp_fl --rec_apn $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H -s '%d' -d time,10 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="Append records to existing file without copying original";
+    $tst_cmd[3]="6";
+    $tst_cmd[4]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){	
+	
+# ncra #23
+# same as ncra #02, for groups
+    
+    $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 1 group -g g4 -v one_dmn_rec_var record mean of int across two files";
+    $tst_cmd[2]="time[0]=5.5 one_dmn_rec_var[0]=6 kelvin";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+	
+# ncra #24
+# (Groups) 1 record to process in 1 group
+    
+    $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g23 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H  -g g23 -v time %tmp_fl_00%";
+    $dsc_sng="(Groups) 1 record to process in 1 group -g g23 (do variable and record in group) ";
+    $tst_cmd[2]="time[0]=1.5";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+
+		
+# ncra #25
+# (Groups) 2 records to process in 2 groups (part 1)
+    
+    $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g23,g24 -v time $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H  -g g23 -v time %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 records to process in 2 groups (part 1) (do record in group only)";
+    $tst_cmd[2]="time[0]=1.5";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+
+# ncra #26
+# (Groups) 2 records to process in 2 groups (part 2)
     
+    $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g23,g24 -v time $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H  -g g24 -v time %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 records to process in 2 groups (part 2) (do record in group only)";
+    $tst_cmd[2]="time[0]=4";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+
+
+# ncra #27
+# (Groups) 1D var 2 records to process in 2 groups (part 1)
+#  ncra -h -O  -g g25g1,g25g2 in_grp_3.nc in_grp_3.nc out.nc
+    
+    $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 records to process in 2 groups (part 1) (1D variable and record in group)";
+    $tst_cmd[2]="time[0]=5.5 one_dmn_rec_var[0]=6";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+# ncra #28 same as #27
+# (Groups) 1D var 2 records to process in 2 groups (part 2)
+#  ncra -h -O  -g g25g1,g25g2 in_grp_3.nc in_grp_3.nc out.nc
+    
+    $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) 2 records to process in 2 groups (part 2) (1D variable and record in group)";
+    $tst_cmd[2]="time[0]=5.5 one_dmn_rec_var[0]=6";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array		
+		
+
+# ncra #29 Generate a file with 2 records
+# ncecat -O  -g g25g1 in_grp_3.nc in1.nc -> generate "record"
+# ncpdq -O -a time,record  in1.nc in2.nc -> switch "record" and "time"
+# ncra -O  in2.nc out.nc
+    
+    $tst_cmd[0]="ncecat $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a time,record %tmp_fl_00%  %tmp_fl_01%";
+	$tst_cmd[2]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -g g25g1 -v one_dmn_rec_var %tmp_fl_02%";
+    $dsc_sng="(Groups) 2 records in 1 group ('time' same as record, 1st record)";
+    $tst_cmd[4]="time[0]=5.5 record[0] one_dmn_rec_var[0]=6";
+    $tst_cmd[5]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+
+	   
+
+#ncra #30
+#Operate files containing same variable in different orders
+# ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
+# ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
+# ncra -O -p ~ foo1.nc foo2.nc ~/foo3.nc
+# ncks -C -H -v one ~/foo3.nc
+
+    $dsc_sng="Concatenate variables with different ID ordering";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
+    $tst_cmd[2]="ncra -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H -v one %tmp_fl_02%";
+    $tst_cmd[4]="one = 1";
+    $tst_cmd[5]="SS_OK";   
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array 		
+
+   } #### Group tests	
+	
+
+
+	
+	
 #print "paused - hit return to continue"; my $wait=<STDIN>;
 #print "<<<STOP>>>- hit return to continue"; my $wait=<STDIN>;
     
@@ -1202,30 +3783,36 @@ sub tst_rgr {
 ####################
     $opr_nm='ncwa';
 ####################
+
+#ncwa #1
     
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lat_T42,lon_T42,gw_T42 $in_pth_arg in.nc %tmp_fl_03%";
     $tst_cmd[1]="ncrename -h -O $nco_D_flg -d lat_T42,lat -d lon_T42,lon -v lat_T42,lat -v gw_T42,gw -v lon_T42,lon %tmp_fl_03%";
     $tst_cmd[2]="ncap2 -h -O $fl_fmt $nco_D_flg -s 'one[lat,lon]=lat*lon*0.0+1.0' -s 'zero[lat,lon]=lat*lon*0.0' %tmp_fl_03% %tmp_fl_04%";
     $tst_cmd[3]="ncks -C -H -s '%g' -v one -F -d lon,128 -d lat,64 %tmp_fl_04%";
-    $dsc_sng="Creating %tmp_fl_03% again (FAILURE netcdf4 ncrename nco821) ";
+    $dsc_sng="Creating %tmp_fl_03% again (FAILURE netCDF4 ncrename nco821) ";
     $tst_cmd[4]="1";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     @tst_cmd=(); # really reset array.
 
+#ncwa #2
+
     push(@tst_cmd, "ncks -h -O $fl_fmt $nco_D_flg -v lat_T42,lon_T42,gw_T42 $in_pth_arg in.nc %tmp_fl_03%");
     push(@tst_cmd, "ncrename -h -O $nco_D_flg -d lat_T42,lat -d lon_T42,lon -v lat_T42,lat -v gw_T42,gw -v lon_T42,lon %tmp_fl_03%");
     push(@tst_cmd, "ncap2 -h -O $fl_fmt $nco_D_flg -s 'one[lat,lon]=lat*lon*0.0+1.0' -s 'zero[lat,lon]=lat*lon*0.0' %tmp_fl_03% %tmp_fl_04%");
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lat,lon -w gw -d lat,0.0,90.0 %tmp_fl_04% %tmp_fl_00%");
     push(@tst_cmd, "ncks -C -H -s '%g' -v one %tmp_fl_00%");
-    $dsc_sng="normalize by denominator upper hemisphere (FAILURE netcdf4 ncrename nco821)";
+    $dsc_sng="normalize by denominator upper hemisphere (FAILURE netCDF4 ncrename nco821)";
     $prsrv_fl=1; # save previously generated files.
 #	$nsr_xpc= 1;
 # tst_run();
     push(@tst_cmd, 1);
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #3
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%g' -v lat %tmp_fl_00%";
@@ -1233,7 +3820,9 @@ sub tst_rgr {
     $tst_cmd[2]="-90";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #4
 
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time -v pck,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v pck %tmp_fl_00%";
@@ -1241,15 +3830,19 @@ sub tst_rgr {
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #5
     
     $tst_cmd[0]="ncwa -N $omp_flg -h -O $fl_fmt $nco_D_flg -a lat,lon -w gw $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v mask %tmp_fl_00%";
-    $dsc_sng="do not normalize by denominator (FAILURE netcdf4 nco946)";
+    $dsc_sng="do not normalize by denominator (FAILURE netCDF4 nco946)";
     $tst_cmd[2]="50";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #6
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -v mss_val $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v mss_val %tmp_fl_00%";
@@ -1257,7 +3850,9 @@ sub tst_rgr {
     $tst_cmd[2]="73";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #7
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -v no_mss_val $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%g' -v no_mss_val %tmp_fl_00%";
@@ -1265,7 +3860,9 @@ sub tst_rgr {
     $tst_cmd[2]="5.0e35";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #8
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lat -m lat -M 90.0 -T eq -a lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v lat %tmp_fl_00%";
@@ -1273,7 +3870,9 @@ sub tst_rgr {
     $tst_cmd[2]="90.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #9
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lat_var -m lat -M 90.0 -T eq -a lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v lat_var %tmp_fl_00%";
@@ -1281,7 +3880,9 @@ sub tst_rgr {
     $tst_cmd[2]="2.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #10
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -m lev -M 100.0 -T eq -a lev -w lev_wgt $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v lev %tmp_fl_00%";
@@ -1289,7 +3890,9 @@ sub tst_rgr {
     $tst_cmd[2]="100.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #11
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev_var -m lev -M 100.0 -T gt -a lev -w lev_wgt $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v lev_var %tmp_fl_00%";
@@ -1297,7 +3900,9 @@ sub tst_rgr {
     $tst_cmd[2]="666.6667";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #11
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lat -a lat -w gw -d lat,0 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v lat %tmp_fl_00%";
@@ -1305,15 +3910,19 @@ sub tst_rgr {
     $tst_cmd[2]="-90.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #12
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v mss_val_all -a lon -w lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mss_val_all %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val_all %tmp_fl_00%";
     $dsc_sng="average all missing values with weights";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #13
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v val_one_mss -a lat -w wgt_one $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v val_one_mss %tmp_fl_00%";
@@ -1321,7 +3930,9 @@ sub tst_rgr {
     $tst_cmd[2]="1.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #14
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v msk_prt_mss_prt -m msk_prt_mss_prt -M 1.0 -T lt -a lon $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v msk_prt_mss_prt %tmp_fl_00%";
@@ -1329,7 +3940,9 @@ sub tst_rgr {
     $tst_cmd[2]="0.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #15
 
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w area -v area -a lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v area %tmp_fl_00%";
@@ -1337,7 +3950,9 @@ sub tst_rgr {
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #16
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w area_asm -v area -a lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v area %tmp_fl_00%";
@@ -1345,7 +3960,9 @@ sub tst_rgr {
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #17
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w area_asm -v area2 -a lat $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v area2 %tmp_fl_00%";
@@ -1353,7 +3970,9 @@ sub tst_rgr {
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #18
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -s '%e' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
@@ -1361,18 +3980,22 @@ sub tst_rgr {
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #19
     
 # will fail SS - ncks not the last cmd
     @tst_cmd=(); # really reset array. $#tst_cmd=0; sets last index=0 --> list has one element.
     push(@tst_cmd, "ncwa $omp_flg  -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_dbl -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%f' -v three_dmn_var_dbl -d time,3 -d lat,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%f' -v three_dmn_var_dbl -d time,3 -d lat,0 %tmp_fl_00%");
     # used to cut for field 7. (1 + 3x2 + 0x1=7)
     $dsc_sng="Dimension reduction with min switch and missing values";
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #20
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg  -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_dbl -a lon $in_pth_arg in.nc %tmp_fl_00%");
@@ -1383,17 +4006,21 @@ sub tst_rgr {
     push(@tst_cmd,"77");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #21
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_int -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_int -d time,2 -d lat,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_int -d time,2 -d lat,0 %tmp_fl_00%");
     # used to cut field 5: ( 1 + 2x2 + 0x1 = 5) 
     $dsc_sng="Dimension reduction on type int with min switch and missing values";
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #22
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_int -a lon $in_pth_arg in.nc %tmp_fl_00%");
@@ -1404,17 +4031,21 @@ sub tst_rgr {
     push(@tst_cmd, "25");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #23
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_sht -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_sht -d time,9 -d lat,1 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_sht -d time,9 -d lat,1 %tmp_fl_00%");
     # used to cut field 20: ( 1 + 9x2 + 1x1 = 20) 
     $dsc_sng="Dimension reduction on type short variable with min switch and missing values";
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #24
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_sht -a lon $in_pth_arg in.nc %tmp_fl_00%");
@@ -1425,7 +4056,9 @@ sub tst_rgr {
     push(@tst_cmd, "29");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #25
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_rec_var %tmp_fl_00%";
@@ -1433,7 +4066,9 @@ sub tst_rgr {
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #26
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v four_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v four_dmn_rec_var %tmp_fl_00%";
@@ -1441,17 +4076,21 @@ sub tst_rgr {
     $tst_cmd[2]="240";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #27
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_dbl -a lat,lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%f' -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%f' -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
     # used to cut field 4: ( 1 + 3x1=4) 
     $dsc_sng="Dimension reduction on type double variable with max switch and missing values";
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #28
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_dbl -a lat,lon $in_pth_arg in.nc %tmp_fl_00%");
@@ -1462,17 +4101,21 @@ sub tst_rgr {
     push(@tst_cmd, "40");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #29
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_int -a lat $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_int -d time,2 -d lon,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_int -d time,2 -d lon,0 %tmp_fl_00%");
     # used to cut field 9: ( 1 + 2x4 + 0x1=9) 
     $dsc_sng="Dimension reduction on type int variable with min switch and missing values";
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #30
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_int -a lat $in_pth_arg in.nc %tmp_fl_00%");
@@ -1483,17 +4126,21 @@ sub tst_rgr {
     push(@tst_cmd, "29");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #31
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_sht -a lat $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_sht -d time,9 -d lon,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_sht -d time,9 -d lon,0 %tmp_fl_00%");
     # used to cut field 37 = 1 + 9x4 + 0x1
     $dsc_sng="Dimension reduction on type short variable with max switch and missing values";
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #32
     
 # will fail SS - ncks not the last cmd
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_sht -a lat $in_pth_arg in.nc %tmp_fl_00%");
@@ -1504,7 +4151,9 @@ sub tst_rgr {
     push(@tst_cmd, "69");
     push(@tst_cmd, "SS_OK");
     NCO_bm::tst_run(\@tst_cmd);
-    @tst_cmd=();  # Reset array
+    @tst_cmd=(); # Reset array
+
+#ncwa #33
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -w lat_wgt -v lat_cpy $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v lat_cpy %tmp_fl_00%";;
@@ -1512,15 +4161,19 @@ sub tst_rgr {
     $tst_cmd[2]="90";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #34
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w val_half_half -v val_one_one_int $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%ld' -v val_one_one_int %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H -s '%d' -v val_one_one_int %tmp_fl_00%";;
     $dsc_sng="weights would cause SIGFPE without dbl_prc patch";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #35
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y avg -v val_max_max_sht $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v val_max_max_sht %tmp_fl_00%";;
@@ -1528,20 +4181,24 @@ sub tst_rgr {
     $tst_cmd[2]="17000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #36
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v val_max_max_sht $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v val_max_max_sht %tmp_fl_00%";
     $dsc_sng="test wrapped ttl with dbl_prc patch (harmless failure expected/OK on all chips since wrap behavior is not IEEE-specified)";
-#	$nsr_xpc= -31536 ; # Expected on Pentium IV GCC Debian 3.4.3-13, PowerPC xlc
+#    $nsr_xpc= -31536 ; # Expected on Pentium IV GCC Debian 3.4.3-13, PowerPC xlc
 #    $nsr_xpc= -32768 ; # Expected on Xeon GCC Fedora 3.4.2-6.fc3
 #    $nsr_xpc= -32768 ; # Expected on Opteron
 #    $nsr_xpc= -32768 ; # Expected on PentiumIII (Coppermine) gcc 3.4 MEPIS
 #    $nsr_xpc= -31536 ; # Expected on Power4 xlc AIX
-    $tst_cmd[2]="-32768";
+    $tst_cmd[2]="-31536";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #37
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -a lat -v lat_cpy -w gw $in_pth_arg in.nc %tmp_fl_00%";;
     $tst_cmd[1]="ncks -C -H -s '%g' -v lat_cpy %tmp_fl_00%";;
@@ -1549,7 +4206,9 @@ sub tst_rgr {
     $tst_cmd[2]="-900";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #38
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -a lat -v lat_cpy -w gw $in_pth_arg in.nc %tmp_fl_00%";;
     $tst_cmd[1]="ncks -C -H -s '%g' -v lat_cpy %tmp_fl_00%";;
@@ -1557,7 +4216,9 @@ sub tst_rgr {
     $tst_cmd[2]="900";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #39
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -a time -w one -v time,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%f' -v time %tmp_fl_00%";
@@ -1565,7 +4226,9 @@ sub tst_rgr {
     $tst_cmd[2]="5.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+
+#ncwa #40
     
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -a time -w one -v time,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
@@ -1573,7 +4236,438 @@ sub tst_rgr {
     $tst_cmd[2]="55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
+	
+	
+#ncwa #41
+    
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -b -v lon $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v lon %tmp_fl_00%";
+    $dsc_sng="Retain degenerate dimensions (one variable)";
+    $tst_cmd[2]="lon[0]=135";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+#ncwa #42
+    
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -b  $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -v lon %tmp_fl_00%";
+    $dsc_sng="Retain degenerate dimensions (all variables)";
+    $tst_cmd[2]="lon[0]=135";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array		
+	
+	
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){	
+	
+#ncwa #43
+#NEW NCO 4.3.3
+#same as #ncwa #25
+#ncwa -h -O -y min -g g10 -v three_dmn_rec_var in_grp.nc out.nc
+#ncks -C -H -s '%f' -g g10 -v three_dmn_rec_var out.nc
+#$tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
+#$tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_rec_var %tmp_fl_00%";
+#$dsc_sng="Dimension reduction with min flag on type float variable";
+#$tst_cmd[2]="1";
+     
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -g g10 -v three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -g g10 -v three_dmn_rec_var %tmp_fl_00%";
+    $dsc_sng="(Groups) Dimension reduction with min flag on type float variable";
+    $tst_cmd[2]="1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+
+#ncwa #44
+#NEW NCO 4.3.3
+#same as #ncwa #27
+# ncwa -h -O -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon in_grp_3.nc out.nc
+# ncks -C -H --no_blank -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,3 out.nc
+
+    
+# will fail SS - ncks not the last cmd
+    push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon $in_pth_arg in_grp_3.nc %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --no_blank -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
+    # used to cut field 4: ( 1 + 3x1=4) 
+    $dsc_sng="(Groups) Dimension reduction on type double variable with max switch and missing values";
+    push(@tst_cmd, "-99");
+    push(@tst_cmd, "SS_OK");
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # Reset array
+
+#ncwa #45
+#NEW NCO 4.3.3
+#same as #ncwa #28
+# ncwa -h -O  -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon in_grp_3.nc out.nc
+# ncks -C -H -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,4 out.nc 
+    
+# will fail SS - ncks not the last cmd
+    push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon $in_pth_arg in_grp_3.nc %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,4 %tmp_fl_00%"); 
+    # used to cut field 5: ( 1 + 4x1=5) 
+    $dsc_sng="(Groups) Dimension reduction on type double variable";
+    $prsrv_fl=1;
+    push(@tst_cmd, "40");
+    push(@tst_cmd, "SS_OK");
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # Reset array
+
+#ncwa #47
+#NEW NCO 4.3.3
+#same as #ncwa #33
+# ncwa -h -O -y rms -w lat_wgt -g g20g1 -v lat_cpy  in_grp_3.nc out.nc
+# ncks -C -H -s '%f' -g g20g1  -v lat_cpy out.nc
+
+    
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -w lat_wgt -g g20g1 -v lat_cpy $in_pth_arg in_grp_3.nc %tmp_fl_00% 2> %tmp_fl_02%";
+    $tst_cmd[1]="ncks -C -H -s '%f' -g g20g1  -v lat_cpy %tmp_fl_00%";;
+    $dsc_sng="(Groups) rms with weights";
+    $tst_cmd[2]="90";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+
+#ncwa #48
+#NEW NCO 4.3.6
+#ncwa -O -w gw_lat -d lat,1,2 -d lon,0,1 -a lat,lon -g g26 in_grp_3.nc out.nc
+
+    
+    $tst_cmd[0]="ncwa $omp_flg -O $fl_fmt $nco_D_flg -w gw_lat -d lat,1,2 -d lon,0,1 -a lat,lon -g g26 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -v a %tmp_fl_00%";;
+    $dsc_sng="(Groups) Weights and hyperslabs";
+    $tst_cmd[2]="a = 35.5803";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array
+	
+#ncwa #49
+# ncwa -h -O -v lev -a lev -w lev_wgt in_grp_3.nc out.nc
+# lev = 230.769 lev_wgt=10,2,1; /g19/lev
+# lev = 241.667 lev_wgt=9,2,1;  /g8/lev
+
+    
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a lev -w lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -g g8 -v lev %tmp_fl_00%";
+    $dsc_sng="(Groups) Weights and groups (test 1)";
+    $tst_cmd[2]="lev = 241.667";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+	
+#ncwa #50
+# ncwa -h -O -v lev -a lev -w lev_wgt in_grp_3.nc out.nc
+# lev = 230.769 lev_wgt=10,2,1; /g19/lev
+# lev = 241.667 lev_wgt=9,2,1;  /g8/lev
+
+    
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a lev -w lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H -g g19 -v lev %tmp_fl_00%";
+    $dsc_sng="(Groups) Weights and groups (test 2)";
+    $tst_cmd[2]="lev = 230.769";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array	
+	
+	
+#NEW 4.3.7	
+#ncwa #51
+# ncwa  -h -O -a time -b  -v time  in_grp.nc out.nc
+# ncks out.nc | grep 'time dimension 0'
+
+    
+    $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time -b  -v time $in_pth_arg in_grp.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks %tmp_fl_00% | grep 'time dimension 0:'";
+    $dsc_sng="(Groups) -b degenerate a record dimension";
+    $tst_cmd[2]="time dimension 0: time, size = 1 NC_DOUBLE, chunksize = 1 (Record coordinate is time)";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    $#tst_cmd=0; # Reset array		
+	
+	} #### Group tests	
+	
+	
+    
+####################
+#### ncrename tests #### OK!
+####################
+    $opr_nm='ncrename';
+####################
+
+#### Group tests	
+	if($HAVE_NETCDF4_H == 1){	
+
+#################### Attributes 
+
+#ncrename #1
+#ncrename -O -a .nothing,new_nothing in_grp.nc out.nc 
+#optional relative rename nothing to new_nothing (print warning)
+    
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a .nothing,new_nothing $in_pth_arg in_grp.nc %tmp_fl_00%";
+    $dsc_sng="Attributes: Optional relative rename '.nothing' to 'new_nothing'";
+    $tst_cmd[1]="ncrename: WARNING Attribute 'nothing' not renamed because not found in searched variable(s)";
+    $tst_cmd[2]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+#ncrename #2
+#ncrename -O -a history,new_history in_grp.nc out.nc  
+#relative rename history to new_history
+    
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a history,new_history $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks %tmp_fl_00% | grep 'History global attribute'";
+    $dsc_sng="Attributes: Relative rename 'history' to 'new_history'";
+    $tst_cmd[2]="Global attribute 3: new_history, size = 26 NC_CHAR, value = History global attribute.";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+#ncrename #3
+#ncrename -D 1 -O -a /g1 at history,new_history in_grp.nc out.nc
+#ncks -g g1 out.nc | grep 'History group attribute'  
+# absolute rename /g1/history group/global att to /g1/new_history
+# NB: use escape in '/g1\@history,new_history'
+    
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1\@history,new_history' $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -g g1 %tmp_fl_00% | grep 'History group attribute'";
+    $dsc_sng="Attributes: Absolute rename '/g1\@history' to 'new_history'";
+    $tst_cmd[2]="Group attribute 0: new_history, size = 25 NC_CHAR, value = History group attribute.";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+	
+#ncrename #4	
+#ncrename -O -a global at history,new_history in_grp.nc out.nc 
+# relative rename history group/global att to new_history
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a 'global\@history,new_history' $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks %tmp_fl_00% | grep 'History global attribute'";
+    $dsc_sng="Attributes: Relative rename 'global\@history' to 'new_history'";
+    $tst_cmd[2]="Global attribute 3: new_history, size = 26 NC_CHAR, value = History global attribute.";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.		
+
+#ncrename #5
+#ncrename -O -a /g1/lon at units,new_units in_grp.nc out.nc 
+# absolute rename /g1/lon at units att to /g1/lon at new_units
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1/lon\@units,new_units' $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -g g1  %tmp_fl_00% | grep 'new_units'";
+    $dsc_sng="Attributes: Absolute rename '/g1/lon\@units' to 'new_units'";
+    $tst_cmd[2]="lon attribute 0: new_units, size = 12 NC_CHAR, value = degrees_east";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+#ncrename #6	
+#ncrename -D 1 -O -a /g1/lon at units,/g1/lon at new_units in_grp.nc out.nc 
+#absolute rename /g1/lon at units att to /g1/lon at new_units
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1/lon\@units,/g1/lon\@new_units' $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -g g1  %tmp_fl_00% | grep 'new_units'";
+    $dsc_sng="Attributes: Absolute rename '/g1/lon\@units' to '/g1/lon\@new_units'";
+    $tst_cmd[2]="lon attribute 0: new_units, size = 12 NC_CHAR, value = degrees_east";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.		
+	
+#ncrename #7	
+#ncrename -O -a /g1/lon at .units,new_units in_grp.nc out.nc 
+# optional absolute rename /g1/lon at .units att to new_units
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1/lon\@.units,new_units' $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -g g1  %tmp_fl_00% | grep 'new_units'";
+    $dsc_sng="Attributes: Optional absolute rename '/g1/lon\@.units' to '/g1/lon\@new_units'";
+    $tst_cmd[2]="lon attribute 0: new_units, size = 12 NC_CHAR, value = degrees_east";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+
+	
+#################### Dimensions	
+
+
+#ncrename #8	
+#ncrename -O -d lat,new_lat in_grp.nc out.nc
+# relative rename lat to new_lat
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -v new_lat  %tmp_fl_00% | grep 'new_lat dimension'";
+    $dsc_sng="Dimensions: Relative rename 'lat' to 'new_lat'";
+    $tst_cmd[2]="new_lat dimension 0: new_lat, size = 2 NC_FLOAT (Coordinate is new_lat)";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+#ncrename #9	
+#ncrename -O -d /lat,new_lat in_grp.nc out.nc
+# Absolute rename /lat to new_lat
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d /lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -v new_lat  %tmp_fl_00% | grep 'new_lat dimension'";
+    $dsc_sng="Dimensions: Absolute rename '/lat' to 'new_lat'";
+    $tst_cmd[2]="new_lat dimension 0: new_lat, size = 2 NC_FLOAT (Coordinate is new_lat)";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+#ncrename #10	
+#ncrename -O -d .lat,new_lat in_grp.nc out.nc
+# optional relative rename lat to new_lat
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d .lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -v new_lat  %tmp_fl_00% | grep 'new_lat dimension'";
+    $dsc_sng="Dimensions: Optional existing relative rename '.lat' to 'new_lat'";
+    $tst_cmd[2]="new_lat dimension 0: new_lat, size = 2 NC_FLOAT (Coordinate is new_lat)";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+#ncrename #11	
+#ncrename -O -d /lat,new_lat in_grp.nc out.nc
+# Absolute rename /lat to new_lat
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d ./lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -v new_lat  %tmp_fl_00% | grep 'new_lat dimension'";
+    $dsc_sng="Dimensions: Optional existing absolute rename './lat' to 'new_lat'";
+    $tst_cmd[2]="new_lat dimension 0: new_lat, size = 2 NC_FLOAT (Coordinate is new_lat)";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+#ncrename #12
+#ncrename -O -d ./lat_non_existing,new_lat in_grp.nc out.nc
+# Absolute non existing absolute rename
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d ./lat_non_existing,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
+    $dsc_sng="Dimensions: Optional non existing absolute rename './lat_non_existing,new_lat' to 'new_lat'";
+    $tst_cmd[1]="ncrename: WARNING Dimension '/lat_non_existing' not present in ../data/in_grp.nc, skipping it.";
+    $tst_cmd[2]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.		
+	
+#################### Variables	
+
+#ncrename #13
+#ncrename  -D 1 -O -v /g1/v1,new_v1 in_grp.nc out.nc
+#Absolute rename /g1/v1 to /g1/new_v1 
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v /g1/v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g1 -v new_v1  %tmp_fl_00% | grep /g1/new_v1";
+    $dsc_sng="Variables: Absolute rename '/g1/v1' to '/g1/new_v1'";
+    $tst_cmd[2]="/g1/new_v1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.		
+	
+
+#ncrename #14	
+#ncrename  -D 1 -O -v v1,new_v1 in_grp.nc out.nc
+#Relative rename v1 to new_v1 
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g1 -v new_v1  %tmp_fl_00% | grep /g1/new_v1";
+    $dsc_sng="Variables: Relative rename 'v1' to 'new_v1'";
+    $tst_cmd[2]="/g1/new_v1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+#ncrename #15	
+#ncrename  -D 1 -O -v ./g1/v1,new_v1 in_grp.nc out.nc
+#Absolute rename /g1/v1 to /g1/new_v1 
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v ./g1/v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g1 -v new_v1  %tmp_fl_00% | grep /g1/new_v1";
+    $dsc_sng="Variables: Optional absolute rename '/g1/v1' to '/g1/new_v1'";
+    $tst_cmd[2]="/g1/new_v1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.			
+
+#ncrename #16
+#ncrename  -D 1 -O -v .v1,new_v1 in_grp.nc out.nc
+#Optional Relative rename v1 to new_v1 
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v .v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m -g g1 -v new_v1  %tmp_fl_00% | grep /g1/new_v1";
+    $dsc_sng="Variables: Optional relative rename 'v1' to 'new_v1'";
+    $tst_cmd[2]="/g1/new_v1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+	
+#ncrename #17
+#ncrename  -D 1 -O -v ./g1/v1_not,new_v1 in_grp.nc out.nc
+#Optional non-existing absolute rename '/g1/v1_not'
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v ./g1/v1_not,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncrename: WARNING Variable '/g1/v1_not' not present in ../data/in_grp.nc, skipping it.";
+    $dsc_sng="Variables: Optional non-existing absolute rename './g1/v1_not' to '/g1/new_v1'";
+    $tst_cmd[2]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.		
+
+
+#################### Groups
+
+#ncrename #18
+#ncrename -O -g g1,new_g1 in_grp.nc out.nc 
+# relative rename g1 to new_g1
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g g1,new_g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m  -g new_g1  %tmp_fl_00% | grep new_g1";
+    $dsc_sng="Groups: Relative rename 'g1' to 'new_g1'";
+    $tst_cmd[2]="/new_g1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+#ncrename #19
+#ncrename -O -g g1g1,new_g1g1 in_grp.nc out.nc  
+#relative rename g1g1 to new_g1g1
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g g1g1,new_g1g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m  -g new_g1g1  %tmp_fl_00% | grep new_g1g1";
+    $dsc_sng="Groups: Relative rename 'g1g1' to 'new_g1g1'";
+    $tst_cmd[2]="/g1/new_g1g1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+#ncrename #20
+#ncrename  -D 1 -O -g /g1/g1g1,new_g1g1 in_grp.nc out.nc
+#Absolute rename -g /g1/g1g1,new_g1g1 
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g /g1/g1g1,new_g1g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m  -g /g1/new_g1g1  %tmp_fl_00% | grep /g1/new_g1g1";
+    $dsc_sng="Groups: Absolute rename '/g1/g1g1' to '/g1/new_g1g1'";
+    $tst_cmd[2]="/g1/new_g1g1/v1";
+    $tst_cmd[3]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.	
+
+#ncrename #21	
+#ncrename -O -g .gfoo,new_g1 in_grp.nc out.nc 
+# optional relative rename gfoo to new_g1 (print warning)
+
+    $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g .gfoo,new_g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
+	$tst_cmd[1]="ncrename: WARNING Group 'gfoo' not present in ../data/in_grp.nc, skipping it.";
+    $dsc_sng="Groups: Optional relative rename '.gfoo' to 'new_g1'";
+    $tst_cmd[2]="SS_OK";
+    NCO_bm::tst_run(\@tst_cmd);
+    @tst_cmd=(); # really reset array.		
+
+	
+} #### Group tests	
+	
     
     
 #print "paused - hit return to continue"; my $wait=<STDIN>;
@@ -1583,6 +4677,7 @@ sub tst_rgr {
 ####################
     $opr_nm='net';
 ####################
+if(0){ #################  SKIP THESE #####################
 # test 1
     $tst_cmd[0]="/bin/rm -f /tmp/in.nc";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -s '%e' -v one -p ftp://dust.ess.uci.edu/pub/zender/nco -l /tmp in.nc | tail -1";
@@ -1590,11 +4685,11 @@ sub tst_rgr {
     $tst_cmd[2]="1.000000e+00";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
 # test 2
     my $sftp_url="sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco";
-    if ($dust_usr ne ""){ # if we need to connect as another user (hmangalm at esmf -> hjm at dust))
+    if($dust_usr ne ""){ # if we need to connect as another user (hmangalm at esmf -> hjm at dust))
 	$sftp_url =~ s/dust/$dust_usr\@dust/;
     }
 #sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco
@@ -1605,26 +4700,26 @@ sub tst_rgr {
     $tst_cmd[3]="1.000000e+00";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
 # test 3
-    if ($dust_usr ne ""){ # if we need to connect as another user (hmangalm at esmf -> hjm at dust))
+    if($dust_usr ne ""){ # if we need to connect as another user (hmangalm at esmf -> hjm at dust))
 	$pth_rmt_scp_tst=$dust_usr . '@' . $pth_rmt_scp_tst;
     }
     $tst_cmd[0]="/bin/rm -f /tmp/in.nc";
-    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg  -s '%e' -v one -p $pth_rmt_scp_tst -l /tmp in.nc | tail -1";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -s '%e' -v one -p $pth_rmt_scp_tst -l /tmp in.nc | tail -1";
     $dsc_sng="SSH protocol (requires authorized SSH/scp access to dust.ess.uci.edu)";
     $tst_cmd[2]=1;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     $tst_cmd[0]="ncks -C -O -d lon,0 -s '%e' -v lon -p http://www.cdc.noaa.gov/cgi-bin/nph-nc/Datasets/ncep.reanalysis.dailyavgs/surface air.sig995.1975.nc";
     $dsc_sng="OPeNDAP protocol (requires OPeNDAP/DODS-enabled NCO)";
     $tst_cmd[1]="0";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
-    $#tst_cmd=0;  # Reset array
+    $#tst_cmd=0; # Reset array
     
     if($USER eq 'zender'){
 	$tst_cmd[0]="/bin/rm -f /tmp/etr_A4.SRESA1B_9.CCSM.atmd.2000_cat_2099.nc";
@@ -1633,7 +4728,7 @@ sub tst_rgr {
 	$tst_cmd[2]="182.5";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
 	
 	$tst_cmd[0]="/bin/rm -f /tmp/in.nc";
 	$tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -v one -p mss:/ZENDER/nc -l /tmp in.nc";
@@ -1642,7 +4737,7 @@ sub tst_rgr {
 	$tst_cmd[3]="1";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
 	
     } else { print "WARN: Skipping net tests of mss: and password protected FTP protocol retrieval---user not zender\n";}
     
@@ -1653,8 +4748,9 @@ sub tst_rgr {
  	$tst_cmd[2]="1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
-	$#tst_cmd=0;  # Reset array
+	$#tst_cmd=0; # Reset array
 	
     } else { print "WARN: Skipping net test wget: protocol retrieval---not implemented yet\n";}
+} #################  SKIP THESE #####################
     
 } # end of perform_test()
diff --git a/bm/nco_bm.pl b/bm/nco_bm.pl
index 4015329..c3bf62a 100755
--- a/bm/nco_bm.pl
+++ b/bm/nco_bm.pl
@@ -2,11 +2,12 @@
 # Shebang line above may have to be set explicitly to /usr/local/bin/perl
 # on ESMF when running in queue. Otherwise it may pick up older perl
 
-# $Header: /cvsroot/nco/nco/bm/nco_bm.pl,v 1.149 2010/09/16 00:15:40 zender Exp $
+# $Header: /cvsroot/nco/nco/bm/nco_bm.pl,v 1.154 2013/10/22 03:12:10 zender Exp $
 
 # Usage: bm_usg(), below, has more information
 # ~/nco/bm/nco_bm.pl # Tests all operators
-# ~/nco/bm/nco_bm.pl ncra # Test one operator
+# unset MY_BIN_DIR;cd ~/nco/bm;nco_bm.pl --regress # Test all operators with system executables
+# ~/nco/bm/nco_bm.pl --regress ncra # Test one operator
 # ~/nco/bm/nco_bm.pl --thr_nbr=2 --regress --udpreport # Test OpenMP
 # ~/nco/bm/nco_bm.pl --mpi_prc=2 --regress --udpreport # Test MPI
 # ~/nco/bm/nco_bm.pl --tst_fl=a --udpreport # Create all test files
@@ -182,7 +183,6 @@ $lcl_vars .=    "\t \$srv_sd = [$srv_sd]\n";
 $lcl_vars .=    "\t \$nvr_data = $nvr_data\n";
 $lcl_vars .=    "\t \$nvr_home = $nvr_home\n";
 $lcl_vars .=    "\t \$nvr_my_bin_dir = $nvr_my_bin_dir\n";
-$lcl_vars .=    "\t \$nvr_my_bin_dir = $nvr_my_bin_dir\n";
 $lcl_vars .=    "\t \@ENV = @ENV\n";
 $lcl_vars .=    "\t \@INC:\n";
 foreach my $subpth (@INC) {$lcl_vars .= "\t   $subpth\n"}
@@ -335,11 +335,11 @@ dbg_msg(1,"WARN: Setting --debug to > 0 sets the NCO\n command-line -D flag to t
 if ($xdat_pth eq '') {
     dbg_msg(2, "$prg_nm: Calling drc_dat_set()");
     drc_dat_set($caseid); # Set $drc_dat
-} else { # Validate $xdat_pth
+}else{ # Validate $xdat_pth
     if (-e $xdat_pth && -w $xdat_pth){
 	dbg_msg(1,"User-specified DATA path ($xdat_pth) exists and is writable");
 	$drc_dat = $xdat_pth; # and assign it to previously coded variable
-    } else {
+    }else{
 	die "FATAL(bm): The directory you specified on the commandline ($xdat_pth) does not exist or is not writable by you.\n";
     }
 }
@@ -407,10 +407,10 @@ if ($dodap ne 'FALSE') {
     if ($dodap eq '') {
 	$fl_pth = "http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata";
 	$fl_cnt = 4;
-    } elsif ($dodap =~ /http/) {
+    }elsif ($dodap =~ /http/){
 	$fl_pth = $dodap;
 	$fl_cnt = 4;
-    } else {
+    }else{
 	die "\nThe URL specified with the --dods option:\n $dodap \ndoesn't look like a valid URL.\nTry again\n\n";
     }
 }
@@ -421,21 +421,20 @@ dbg_msg(3, "after dodap assignment, \$fl_pth = $fl_pth, \$dodap = $dodap");
 #bm_ntl($bch_flg,$dbg_lvl);
 
 # Grok /usr/bin/time, as in shell scripts
-if (-e "/usr/bin/time" && -x "/usr/bin/time") {
+if(-e "/usr/bin/time" && -x "/usr/bin/time"){
     $tmr_app = "/usr/bin/time ";
-    if (`uname` =~ "inux"){$tmr_app.="-p ";}
-} else { # just use whatever the shell thinks is the time app
+    if(`uname` =~ "inux"){$tmr_app.="-p ";}
+}else{ # just use whatever the shell thinks is the time app
     $tmr_app = "time "; # bash builtin or other 'time'-like application (AIX)
 } # endif time
 
-if ($dbg_lvl > 1) {
+if($dbg_lvl > 1){
     print "\nAbout to begin requested tests; waiting for keypress to proceed.\n";
     my $tmp = <STDIN>;
 }
 
-
 # Regression tests
-if ($rgr){
+if($rgr){
     use NCO_rgr; # module that contains tst_rgr()
     NCO_rgr::tst_rgr();
     NCO_bm::rsl_smr_rgr();
diff --git a/config.h.in b/config.h.in
index a431b2d..f196657 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,4 +1,4 @@
-/* config.h.in.  Generated from configure.in by autoheader.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
 
 /* Compatibility pvmgetarch token for AIX on IBM RS6000 */
 #undef AIX
@@ -213,6 +213,9 @@
 /* Define to 1 if compiler finds external `nc_inq_format' function */
 #undef HAVE_NC_INQ_FORMAT
 
+/* Define to 1 if compiler finds external `nearbyint' function */
+#undef HAVE_NEARBYINT
+
 /* Define to 1 if compiler finds external `nearbyintf' function */
 #undef HAVE_NEARBYINTF
 
@@ -252,9 +255,15 @@
 /* Define to 1 if 'regfree()' is present */
 #undef HAVE_REGFREE
 
+/* Define to 1 if compiler finds external `rint' function */
+#undef HAVE_RINT
+
 /* Define to 1 if compiler finds external `rintf' function */
 #undef HAVE_RINTF
 
+/* Define to 1 if compiler finds external `round' function */
+#undef HAVE_ROUND
+
 /* Define to 1 if compiler finds external `roundf' function */
 #undef HAVE_ROUNDF
 
@@ -286,6 +295,9 @@
 /* Define to 1 if compiler finds external `strcasecmp' function */
 #undef HAVE_STRCASECMP
 
+/* Define to 1 if compiler finds external `strcasestr' function */
+#undef HAVE_STRCASESTR
+
 /* Define to 1 if you have the `strchr' function. */
 #undef HAVE_STRCHR
 
@@ -325,6 +337,9 @@
 /* Define to 1 if compiler finds external `tanhf' function */
 #undef HAVE_TANHF
 
+/* Define to 1 if compiler finds external `trunc' function */
+#undef HAVE_TRUNC
+
 /* Define to 1 if compiler finds external `truncf' function */
 #undef HAVE_TRUNCF
 
@@ -453,15 +468,24 @@
 /* Define to 1 if compiler needs external `nc_inq_format' function */
 #undef NEED_NC_INQ_FORMAT
 
+/* Define to 1 if compiler needs external `nearbyint' function */
+#undef NEED_NEARBYINT
+
 /* Define to 1 if compiler needs external `nearbyintf' function */
 #undef NEED_NEARBYINTF
 
 /* Define to 1 if compiler needs external `powf' function */
 #undef NEED_POWF
 
+/* Define to 1 if compiler needs external `rint' function */
+#undef NEED_RINT
+
 /* Define to 1 if compiler needs external `rintf' function */
 #undef NEED_RINTF
 
+/* Define to 1 if compiler needs external `round' function */
+#undef NEED_ROUND
+
 /* Define to 1 if compiler needs external `roundf' function */
 #undef NEED_ROUNDF
 
@@ -477,6 +501,9 @@
 /* Define to 1 if compiler needs external `strcasecmp' function */
 #undef NEED_STRCASECMP
 
+/* Define to 1 if compiler needs external `strcasestr' function */
+#undef NEED_STRCASESTR
+
 /* Define to 1 if compiler needs external `strdup' function */
 #undef NEED_STRDUP
 
@@ -486,6 +513,9 @@
 /* Define to 1 if compiler needs external `tanhf' function */
 #undef NEED_TANHF
 
+/* Define to 1 if compiler needs external `trunc' function */
+#undef NEED_TRUNC
+
 /* Define to 1 if compiler needs external `truncf' function */
 #undef NEED_TRUNCF
 
@@ -540,13 +570,18 @@
 /* Version number of package */
 #undef VERSION
 
-/* Compatibility pvmgetarch token for Windows on Intel x86 */
+/* Compatibility pvmgetarch token for Windows on Intel-compatible x86_64 */
 #undef WIN32
 
 /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
    `char[]'. */
 #undef YYTEXT_POINTER
 
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
diff --git a/configure b/configure
index 3eb36c0..cc98b51 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for NCO netCDF Operators 4.0.9.
+# Generated by GNU Autoconf 2.69 for NCO netCDF Operators 4.3.9.
 #
-# Report bugs to <help at nco.sf.net>.
+# Report bugs to <nco-bugs at lists.sourceforge.net>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -138,6 +136,31 @@ export LANGUAGE
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -171,7 +194,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -224,21 +248,25 @@ IFS=$as_save_IFS
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -248,11 +276,11 @@ fi
     $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf at gnu.org and help at nco.sf.net
-$0: about your system, including any error possibly output
-$0: before this message. Then install a modern shell, or
-$0: manually run the script under such a shell if you do
-$0: have one."
+    $as_echo "$0: Please tell bug-autoconf at gnu.org and
+$0: nco-bugs at lists.sourceforge.net about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
   fi
   exit 1
 fi
@@ -341,6 +369,14 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -462,6 +498,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -496,16 +536,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -517,28 +557,8 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -572,9 +592,9 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='NCO netCDF Operators'
 PACKAGE_TARNAME='nco'
-PACKAGE_VERSION='4.0.9'
-PACKAGE_STRING='NCO netCDF Operators 4.0.9'
-PACKAGE_BUGREPORT='help at nco.sf.net'
+PACKAGE_VERSION='4.3.9'
+PACKAGE_STRING='NCO netCDF Operators 4.3.9'
+PACKAGE_BUGREPORT='nco-bugs at lists.sourceforge.net'
 PACKAGE_URL=''
 
 ac_unique_file="src/nco/ncks.c"
@@ -618,8 +638,10 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LFLAGS
+DOC_FOLDER
 NCOXX
 NCO_CXX
+have_makeinfo
 PATH_TO_NCGEN
 UDUNITS2_PATH
 ENABLE_GSL_FALSE
@@ -631,6 +653,7 @@ HAVE_ANTLR
 ANTLR_ROOT
 NCO_NEED_GETOPT_LONG_FALSE
 NCO_NEED_GETOPT_LONG_TRUE
+OPENMP_CFLAGS
 NETCDF4_ROOT
 NETCDF_LIB
 NETCDF_INC
@@ -676,6 +699,7 @@ CXX
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -689,6 +713,10 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 am__untar
 am__tar
 AMTAR
@@ -767,6 +795,7 @@ SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
+enable_silent_rules
 enable_dependency_tracking
 enable_shared
 enable_static
@@ -779,6 +808,7 @@ enable_maintainer_mode
 enable_largefile
 enable_netcdf4
 enable_netcdf_4
+enable_openmp
 enable_dap_netcdf
 enable_ncoxx
 enable_ncap2
@@ -1270,8 +1300,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1357,7 +1385,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures NCO netCDF Operators 4.0.9 to adapt to many kinds of systems.
+\`configure' configures NCO netCDF Operators 4.3.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1428,7 +1456,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of NCO netCDF Operators 4.0.9:";;
+     short | recursive ) echo "Configuration of NCO netCDF Operators 4.3.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1436,20 +1464,27 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
   --disable-largefile     omit support for large files
   --enable-netcdf4        Enable netCDF Version 4 features (same as
                           enable-netcdf-4) [[default=yes]]
   --enable-netcdf-4       Enable netCDF Version 4 features (same as
                           enable-netcdf4) [[default=yes]]
+  --disable-openmp        do not use OpenMP
+  --enable-openmp         Build NCO with OpenMP [[default=yes]]
   --enable-dap-netcdf     Build DAP-enabled NCO with netCDF-provided DAP
                           [[default=yes]]
   --enable-ncoxx          Build libnco++ and ncap2 (same as enable-ncap2)
@@ -1481,7 +1516,7 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
@@ -1519,7 +1554,7 @@ Some influential environment variables:
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
-Report bugs to <help at nco.sf.net>.
+Report bugs to <nco-bugs at lists.sourceforge.net>.
 _ACEOF
 ac_status=$?
 fi
@@ -1582,10 +1617,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-NCO netCDF Operators configure 4.0.9
-generated by GNU Autoconf 2.68
+NCO netCDF Operators configure 4.3.9
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 
@@ -1775,7 +1810,7 @@ $as_echo "$ac_try_echo"; } >&5
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1961,7 +1996,7 @@ $as_echo "$ac_try_echo"; } >&5
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -2050,9 +2085,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------ ##
-## Report this to help at nco.sf.net ##
-## ------------------------------ ##"
+( $as_echo "## --------------------------------------------- ##
+## Report this to nco-bugs at lists.sourceforge.net ##
+## --------------------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
@@ -2141,9 +2176,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------ ##
-## Report this to help at nco.sf.net ##
-## ------------------------------ ##"
+( $as_echo "## --------------------------------------------- ##
+## Report this to nco-bugs at lists.sourceforge.net ##
+## --------------------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
@@ -2233,7 +2268,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2249,7 +2285,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2275,7 +2312,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2291,7 +2329,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2325,7 +2364,8 @@ int
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2443,8 +2483,8 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by NCO netCDF Operators $as_me 4.0.9, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by NCO netCDF Operators $as_me 4.3.9, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2968,7 +3008,7 @@ do
     for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -3034,7 +3074,7 @@ do
     for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -3190,16 +3230,26 @@ $as_echo "#define SUNMP 1" >>confdefs.h
 $as_echo "#define NECSX 1" >>confdefs.h
 
 	;;
+    x86_64-unknown-cygwin* )
+$as_echo "#define WIN32 1" >>confdefs.h
+
+	;;
     x86_64*-linux* )
 $as_echo "#define LINUXAMD64 1" >>confdefs.h
 
 	;;
 esac
+# 20131120: Workaround for Cygwin64
+if test "x${host}" = 'xx86_64-unknown-cygwin'; then
+
+$as_echo "#define NEED_STRDUP 1" >>confdefs.h
+
+fi
+
 # End pvmgetarch Compatibility
 
 # Use automake to create Makefiles
-#AM_INIT_AUTOMAKE
-am__api_version='1.11'
+am__api_version='1.13'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -3238,7 +3288,7 @@ case $as_dir/ in #((
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
 	  if test $ac_prog = install &&
 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
 	    # AIX install.  It has an incompatible calling convention.
@@ -3296,9 +3346,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -3309,32 +3356,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
+
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
@@ -3346,6 +3401,16 @@ Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -3368,12 +3433,12 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
 if test x"${install_sh}" != xset; then
@@ -3385,10 +3450,10 @@ if test x"${install_sh}" != xset; then
   esac
 fi
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
 if test "$cross_compiling" != no; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -3407,7 +3472,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3447,7 +3512,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3498,7 +3563,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
 	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
 	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
 	     'mkdir (GNU coreutils) '* | \
 	     'mkdir (coreutils) '* | \
@@ -3527,12 +3592,6 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3551,7 +3610,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3615,6 +3674,45 @@ else
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
 if test "`cd $srcdir && pwd`" != "`pwd`"; then
   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
   # is not polluted with repeated "-I."
@@ -3636,8 +3734,8 @@ fi
 
 
 # Define the identity of the package.
- PACKAGE=nco
- VERSION="${nco_version}"
+ PACKAGE='nco'
+ VERSION='4.3.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3665,18 +3763,30 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 
 
 
 
 
+#AM_INIT_AUTOMAKE(nco,"${nco_version}")
 
 # Put preprocessor symbols in config.h
 ac_config_headers="$ac_config_headers config.h"
@@ -3711,7 +3821,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3751,7 +3861,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3804,7 +3914,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3845,7 +3955,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -3903,7 +4013,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3947,7 +4057,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4393,8 +4503,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4497,7 +4606,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -4530,6 +4639,7 @@ fi
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -4552,8 +4662,9 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -4587,16 +4698,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -4605,16 +4716,16 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -4696,7 +4807,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4740,7 +4851,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CXX="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4936,8 +5047,9 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -4971,16 +5083,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -4989,16 +5101,16 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -5472,7 +5584,7 @@ main ()
   return 0;
 }
 _ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
 do
   CC="$ac_save_CC $ac_arg"
   if ac_fn_c_try_compile "$LINENO"; then :
@@ -5512,8 +5624,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -5634,7 +5745,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_LEX="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5666,7 +5777,8 @@ a { ECHO; }
 b { REJECT; }
 c { yymore (); }
 d { yyless (1); }
-e { yyless (input () != 0); }
+e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument.  */
+    yyless ((input () != 0)); }
 f { unput (yytext[0]); }
 . { BEGIN INITIAL; }
 %%
@@ -5795,7 +5907,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_YACC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -5840,8 +5952,8 @@ esac
 
 
 
-macro_version='2.4'
-macro_revision='1.3293'
+macro_version='2.4.2'
+macro_revision='1.3337'
 
 
 
@@ -5948,7 +6060,7 @@ do
     for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+      as_fn_executable_p "$ac_path_SED" || continue
 # Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
 case `"$ac_path_SED" --version 2>&1` in
@@ -6027,7 +6139,7 @@ do
     for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+      as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
 case `"$ac_path_FGREP" --version 2>&1` in
@@ -6283,7 +6395,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6327,7 +6439,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6474,6 +6586,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -6513,7 +6630,7 @@ else
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -6735,7 +6852,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6775,7 +6892,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OBJDUMP="objdump"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -6942,7 +7059,7 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -7081,7 +7198,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7121,7 +7238,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DLLTOOL="dlltool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7224,7 +7341,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7268,7 +7385,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_AR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7393,7 +7510,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7433,7 +7550,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7492,7 +7609,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7532,7 +7649,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -7582,13 +7699,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -7735,6 +7852,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -8123,7 +8241,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -8134,7 +8252,20 @@ sparc*-*solaris*)
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -8167,7 +8298,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8207,7 +8338,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8287,7 +8418,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8327,7 +8458,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8379,7 +8510,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8419,7 +8550,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_NMEDIT="nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8471,7 +8602,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8511,7 +8642,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_LIPO="lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8563,7 +8694,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8603,7 +8734,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL="otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8655,7 +8786,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8695,7 +8826,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_OTOOL64="otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -8774,7 +8905,13 @@ else
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&5
@@ -8785,6 +8922,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -8817,6 +8955,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
 $as_echo_n "checking for -force_load linker flag... " >&6; }
 if ${lt_cv_ld_force_load+:} false; then :
@@ -8838,7 +8977,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&5
@@ -9117,7 +9258,22 @@ fi
 
 # Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
   pic_mode=default
 fi
@@ -9195,6 +9351,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+
+
+
+
 test -z "$LN_S" && LN_S="ln -s"
 
 
@@ -9484,6 +9644,10 @@ _lt_linker_boilerplate=`cat conftest.err`
 $RM -r conftest*
 
 
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
 if test -n "$compiler"; then
 
 lt_prog_compiler_no_builtin_flag=
@@ -9650,7 +9814,9 @@ lt_prog_compiler_static=
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl='-Xlinker '
-      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
       ;;
     esac
   else
@@ -9741,18 +9907,33 @@ lt_prog_compiler_static=
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl='-Wl,'
 	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -10114,7 +10295,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct=no
   hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
@@ -10367,8 +10547,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
 	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -10748,6 +10927,7 @@ fi
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
 	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	old_postinstall_cmds='chmod 644 $oldlib'
@@ -10793,6 +10973,7 @@ fi
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec=''
   fi
@@ -10821,10 +11002,6 @@ fi
       hardcode_shlibpath_var=no
       ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -10837,7 +11014,7 @@ fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
       hardcode_minus_L=yes
@@ -10876,7 +11053,6 @@ fi
       fi
       if test "$with_gnu_ld" = no; then
 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
 	hardcode_libdir_separator=:
 	hardcode_direct=yes
 	hardcode_direct_absolute=yes
@@ -11500,11 +11676,6 @@ esac
 
 
 
-
-
-
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -11594,7 +11765,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -11603,7 +11774,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -11668,7 +11839,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -11807,7 +11978,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -11815,10 +11986,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -11826,7 +11993,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -11844,7 +12011,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -11864,7 +12031,7 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
@@ -11875,7 +12042,7 @@ gnu*)
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -11936,7 +12103,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -11952,7 +12119,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -11989,9 +12156,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12085,7 +12252,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -12154,7 +12321,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12179,7 +12346,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -12203,7 +12370,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -12234,7 +12401,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12244,7 +12411,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -13169,7 +13336,6 @@ export_dynamic_flag_spec_CXX=
 hardcode_direct_CXX=no
 hardcode_direct_absolute_CXX=no
 hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
 hardcode_libdir_separator_CXX=
 hardcode_minus_L_CXX=no
 hardcode_shlibpath_var_CXX=unsupported
@@ -13753,6 +13919,7 @@ fi
   hardcode_shlibpath_var_CXX=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec_CXX=''
   fi
@@ -13797,7 +13964,7 @@ fi
         esac
         ;;
 
-      freebsd[12]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         ld_shlibs_CXX=no
@@ -14473,6 +14640,7 @@ _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -15262,7 +15430,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
       exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
@@ -15418,8 +15588,6 @@ esac
 
 
 
-
-
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -15445,7 +15613,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -15454,7 +15622,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -15519,7 +15687,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -15656,7 +15824,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -15664,10 +15832,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -15675,7 +15839,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -15693,7 +15857,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -15713,7 +15877,7 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
@@ -15724,7 +15888,7 @@ gnu*)
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -15785,7 +15949,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -15801,7 +15965,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -15838,9 +16002,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -15934,7 +16098,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -16003,7 +16167,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -16028,7 +16192,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -16052,7 +16216,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -16083,7 +16247,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -16093,7 +16257,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -16232,6 +16396,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+
         ac_config_commands="$ac_config_commands libtool"
 
 
@@ -16692,7 +16858,7 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
-for ac_header in getopt.h libintl.h limits.h locale.h netinet/in.h stdlib.h string.h unistd.h
+for ac_header in getopt.h libintl.h limits.h locale.h netinet/in.h stdlib.h string.h strings.h unistd.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -16744,11 +16910,11 @@ else
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
+
 #ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
+  /* Ultrix mips cc rejects this sort of thing.  */
   typedef int charset[2];
-  const charset cs;
+  const charset cs = { 0, 0 };
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *pcpcc;
   char **ppc;
@@ -16765,8 +16931,9 @@ main ()
   ++pcpcc;
   ppc = (char**) pcpcc;
   pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
@@ -16782,10 +16949,10 @@ main ()
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this saying
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
@@ -17277,6 +17444,96 @@ _ACEOF
 esac
 rm -rf conftest*
   fi
+
+
+fi
+
+
+
+echo "#################################"
+echo "#  Test for netCDF             #"
+echo "################################"
+
+#Mac OSX MacPorts packages
+#sudo port install netcdf
+#installs to /opt/local/include, /opt/local/lib
+#add this path to CPPFLAGS if it exists, otherwise do nothing
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /opt/local/include/netcdf.h" >&5
+$as_echo_n "checking for /opt/local/include/netcdf.h... " >&6; }
+if ${ac_cv_file__opt_local_include_netcdf_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/opt/local/include/netcdf.h"; then
+  ac_cv_file__opt_local_include_netcdf_h=yes
+else
+  ac_cv_file__opt_local_include_netcdf_h=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__opt_local_include_netcdf_h" >&5
+$as_echo "$ac_cv_file__opt_local_include_netcdf_h" >&6; }
+if test "x$ac_cv_file__opt_local_include_netcdf_h" = xyes; then :
+  CPPFLAGS="$CPPFLAGS -I/opt/local/include"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /opt/local/lib/libnetcdf.a" >&5
+$as_echo_n "checking for /opt/local/lib/libnetcdf.a... " >&6; }
+if ${ac_cv_file__opt_local_lib_libnetcdf_a+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/opt/local/lib/libnetcdf.a"; then
+  ac_cv_file__opt_local_lib_libnetcdf_a=yes
+else
+  ac_cv_file__opt_local_lib_libnetcdf_a=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__opt_local_lib_libnetcdf_a" >&5
+$as_echo "$ac_cv_file__opt_local_lib_libnetcdf_a" >&6; }
+if test "x$ac_cv_file__opt_local_lib_libnetcdf_a" = xyes; then :
+  LDFLAGS="$LDFLAGS -L/opt/local/lib -lnetcdf"
+fi
+
+
+# Greenplanet
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /sopt/netcdf/netcdf411-gcc-serial/include/netcdf.h" >&5
+$as_echo_n "checking for /sopt/netcdf/netcdf411-gcc-serial/include/netcdf.h... " >&6; }
+if ${ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_include_netcdf_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/sopt/netcdf/netcdf411-gcc-serial/include/netcdf.h"; then
+  ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_include_netcdf_h=yes
+else
+  ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_include_netcdf_h=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_include_netcdf_h" >&5
+$as_echo "$ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_include_netcdf_h" >&6; }
+if test "x$ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_include_netcdf_h" = xyes; then :
+  CPPFLAGS="$CPPFLAGS -I/sopt/netcdf/netcdf411-gcc-serial/include"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /sopt/netcdf/netcdf411-gcc-serial/lib/libnetcdf.a" >&5
+$as_echo_n "checking for /sopt/netcdf/netcdf411-gcc-serial/lib/libnetcdf.a... " >&6; }
+if ${ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_lib_libnetcdf_a+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/sopt/netcdf/netcdf411-gcc-serial/lib/libnetcdf.a"; then
+  ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_lib_libnetcdf_a=yes
+else
+  ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_lib_libnetcdf_a=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_lib_libnetcdf_a" >&5
+$as_echo "$ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_lib_libnetcdf_a" >&6; }
+if test "x$ac_cv_file__sopt_netcdf_netcdf411_gcc_serial_lib_libnetcdf_a" = xyes; then :
+  LDFLAGS="$LDFLAGS -L/sopt/netcdf/netcdf411-gcc-serial/lib -lnetcdf"
 fi
 
 
@@ -17330,15 +17587,61 @@ done
 
 $as_echo "#define NO_NETCDF_2 1" >>confdefs.h
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nc_open in -lnetcdf" >&5
+$as_echo_n "checking for nc_open in -lnetcdf... " >&6; }
+if ${ac_cv_lib_netcdf_nc_open+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnetcdf  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nc_open ();
+int
+main ()
+{
+return nc_open ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_netcdf_nc_open=yes
+else
+  ac_cv_lib_netcdf_nc_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_netcdf_nc_open" >&5
+$as_echo "$ac_cv_lib_netcdf_nc_open" >&6; }
+if test "x$ac_cv_lib_netcdf_nc_open" = xyes; then :
+  LIBS="-lnetcdf ${LIBS}"
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot find netCDF library
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
 
 echo "#################################"
 echo "#  Test for netCDF4 support     #"
 echo "#################################"
+
 # Check whether --enable-netcdf4 was given.
 if test "${enable_netcdf4+set}" = set; then :
   enableval=$enable_netcdf4; enable_netcdf4=${enableval}
 else
-  enable_netcdf4=no
+  enable_netcdf4=yes
 fi
 
 # 20100105: make --enable-netcdf-4 synonym for --enable-netcdf4
@@ -17347,11 +17650,12 @@ if test "x${enable_netcdf4}" = 'xno' ; then
 if test "${enable_netcdf_4+set}" = set; then :
   enableval=$enable_netcdf_4; enable_netcdf4=${enableval}
 else
-  enable_netcdf4=no
+  enable_netcdf4=yes
 fi
 
 fi # !netCDF4
 
+
 # Test if user set NETCDF4_ROOT and it exists
 if test "x${enable_netcdf4}" = 'xyes'; then
     if test -z "${NETCDF_ROOT}"; then
@@ -17363,7 +17667,7 @@ if test "x${enable_netcdf4}" = 'xyes'; then
     LDFLAGS="`${NETCDF_CONFIG} --libs` ${LDFLAGS}";
     CPPFLAGS="`${NETCDF_CONFIG} --cflags` ${CPPFLAGS}";
 fi
-echo "DEBUG: After netCDF4 section LDFLAGS = ${LDFLAGS}"
+
 
 # ENABLE_NETCDF4 refers to presence of netCDF4-enabled library
 # ENABLE_NETCDF4 implies HAVE_NETCDF4_H
@@ -17384,7 +17688,8 @@ $as_echo "#define HAVE_NETCDF4_H 1" >>confdefs.h
     { $as_echo "$as_me:${as_lineno-$LINENO}: netcdf.h contains netCDF4 definitions" >&5
 $as_echo "$as_me: netcdf.h contains netCDF4 definitions" >&6;}
 fi
-echo "DEBUG: After netCDF4 section header_defines_nc_chunked = ${header_defines_nc_chunked}"
+
+
 if (test "x${enable_netcdf4}" = 'xyes' && test "x${header_defines_nc_chunked}" = 'xyes') ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nc_def_var_chunking in -lnetcdf" >&5
 $as_echo_n "checking for nc_def_var_chunking in -lnetcdf... " >&6; }
@@ -17439,6 +17744,91 @@ fi
 
 fi
 
+
+# OpenMP
+
+  OPENMP_CFLAGS=
+  # Check whether --enable-openmp was given.
+if test "${enable_openmp+set}" = set; then :
+  enableval=$enable_openmp;
+fi
+
+  if test "$enable_openmp" != no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to support OpenMP" >&5
+$as_echo_n "checking for $CC option to support OpenMP... " >&6; }
+if ${ac_cv_prog_c_openmp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifndef _OPENMP
+ choke me
+#endif
+#include <omp.h>
+int main () { return omp_get_num_threads (); }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_prog_c_openmp='none needed'
+else
+  ac_cv_prog_c_openmp='unsupported'
+	  	  	  	  	  	  	                                	  	  	  	  	  	  for ac_option in -fopenmp -xopenmp -openmp -mp -omp -qsmp=omp -homp \
+                           -Popenmp --openmp; do
+	    ac_save_CFLAGS=$CFLAGS
+	    CFLAGS="$CFLAGS $ac_option"
+	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifndef _OPENMP
+ choke me
+#endif
+#include <omp.h>
+int main () { return omp_get_num_threads (); }
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_prog_c_openmp=$ac_option
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	    CFLAGS=$ac_save_CFLAGS
+	    if test "$ac_cv_prog_c_openmp" != unsupported; then
+	      break
+	    fi
+	  done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_c_openmp" >&5
+$as_echo "$ac_cv_prog_c_openmp" >&6; }
+    case $ac_cv_prog_c_openmp in #(
+      "none needed" | unsupported)
+	;; #(
+      *)
+	OPENMP_CFLAGS=$ac_cv_prog_c_openmp ;;
+    esac
+  fi
+
+
+
+# Check whether --enable-openmp was given.
+if test "${enable_openmp+set}" = set; then :
+  enableval=$enable_openmp; enable_openmp=${enableval}
+else
+  enable_openmp=yes
+fi
+
+
+# Enable OpenMP unless told not to
+if ((test "${enable_openmp}" != 'no') && (test "${enable_netcdf4}" = 'xyes')); then
+    CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
+fi
+# End OpenMP
+
+
+
 # Begin DAP support
 echo "Beginning generic tests for DAP support"
 # Store pre-DAP LIBS value to restore from later
@@ -18353,6 +18743,63 @@ _ACEOF
 
 fi
 
+ac_fn_c_check_func "$LINENO" "nearbyint" "ac_cv_func_nearbyint"
+if test "x$ac_cv_func_nearbyint" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_NEARBYINT 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define NEED_NEARBYINT 1
+_ACEOF
+
+fi
+ac_fn_c_check_func "$LINENO" "rint" "ac_cv_func_rint"
+if test "x$ac_cv_func_rint" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_RINT 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define NEED_RINT 1
+_ACEOF
+
+fi
+ac_fn_c_check_func "$LINENO" "round" "ac_cv_func_round"
+if test "x$ac_cv_func_round" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_ROUND 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define NEED_ROUND 1
+_ACEOF
+
+fi
+ac_fn_c_check_func "$LINENO" "trunc" "ac_cv_func_trunc"
+if test "x$ac_cv_func_trunc" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_TRUNC 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define NEED_TRUNC 1
+_ACEOF
+
+fi
+
 ac_fn_c_check_func "$LINENO" "nearbyintf" "ac_cv_func_nearbyintf"
 if test "x$ac_cv_func_nearbyintf" = xyes; then :
 
@@ -18453,17 +18900,31 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 fi
+ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr"
+if test "x$ac_cv_func_strcasestr" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRCASESTR 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define NEED_STRCASESTR 1
+_ACEOF
+
+fi
 
 
 echo "##########################################################"
 echo "#     Sorting out MacOSX build parameters                #"
 echo "##########################################################"
-echo "DEBUG: enable_libnco = ${enable_libnco} and MACOSX = ${MACOSX}"
+#echo "DEBUG: enable_libnco = ${enable_libnco} and MACOSX = ${MACOSX}"
 if ((test "${enable_libnco}" = 'yes') && (test "${MACOSX}" != 1)); then
     echo "Phew, NOT MacOSX, adding -lnco to LIBS"
     LIBS="-lnco ${LIBS}"
 fi
-echo "DEBUG: After library checks LIBS=$LIBS"
+#echo "DEBUG: After library checks LIBS=$LIBS"
 # End Library checks
 
 # Begin ANTLR
@@ -18471,6 +18932,7 @@ echo "#################################"
 echo "#  Testing for ANTLR support    #"
 echo "#################################"
 
+
 # Check whether --enable-ncoxx was given.
 if test "${enable_ncoxx+set}" = set; then :
   enableval=$enable_ncoxx; enable_ncoxx=${enableval}
@@ -18524,8 +18986,13 @@ if test "${enable_ncoxx}" != 'no'; then
 # Add ${ANTLR_LIB}, if present, to library search path
 	LDFLAGS="${LDFLAGS} -L${ANTLR_LIB}"
     fi
+#close {enable_ncoxx}
+fi
+
+# AC_CHECK_PROGS (variable, progs-to-check-for, [value-if-not-found], [path]
 # Check for antlr executable installed as runantlr (runantlr ~= java antlr.Tool)
-    for ac_prog in runantlr antlr
+#AC_CHECK_PROGS(HAVE_ANTLR,[runantlr antlr],[],[],${PATH})
+for ac_prog in runantlr antlr
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -18538,12 +19005,12 @@ else
   ac_cv_prog_HAVE_ANTLR="$HAVE_ANTLR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+for as_dir in ${PATH}
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_HAVE_ANTLR="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -18566,8 +19033,23 @@ fi
 
   test -n "$HAVE_ANTLR" && break
 done
+test -n "$HAVE_ANTLR" || HAVE_ANTLR="no"
 
-    if test "x${HAVE_ANTLR}" = 'xyes'; then
+
+#echo "DEBUG: HAVE_ANTLR  = ${HAVE_ANTLR}"
+
+# issue a message if the antlr library was found or not
+if test "${HAVE_ANTLR}" != 'no' ; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: antlr library was found" >&5
+$as_echo "$as_me: antlr library was found" >&6;}
+else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: antlr library was not found, disabling ncap2 build" >&5
+$as_echo "$as_me: antlr library was not found, disabling ncap2 build" >&6;}
+fi
+
+
+
+if test "x${HAVE_ANTLR}" = 'xyes'; then
 # 20070228: Avoid CHECK_LIB on C++ libraries (requires too-complex link-test scripts)
 # AC_CHECK_LIB([antlr],[ASTFactory],enable_ncoxx=yes,enable_ncoxx=no,[-lstdc++])
 	ac_fn_cxx_check_header_mongrel "$LINENO" "antlr/CommonToken.hpp" "ac_cv_header_antlr_CommonToken_hpp" "$ac_includes_default"
@@ -18581,8 +19063,8 @@ fi
 	if test "${enable_ncoxx}" = 'yes'; then
 	    echo "INFO: ANTLR development support found---will build nco++ directory and ncap2"
 	fi
-    fi
 fi
+
 if test "${enable_ncoxx}" != 'yes'; then
     echo "INFO: ANTLR support not found. To build ncap2, please install ANTLR and its C++ development package, e.g., 'sudo aptitude install antlr libantlr-dev' or 'sudo yum install antlr antlr-c++-devel'"
 fi
@@ -18740,7 +19222,14 @@ else
 fi
 
 if test "${enable_gsl}" = 'yes'; then
-    if which gsl-config > /dev/null; then
+
+    if test "${GSL_ROOT}"; then
+	GSL_CONFIG="${GSL_ROOT}/bin/gsl-config"
+	else
+	GSL_CONFIG='gsl-config'
+	fi
+
+    if which ${GSL_CONFIG} > /dev/null; then
 	enable_gsl='yes'
     else
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Did not find 'gsl-config' command in your default path" >&5
@@ -18891,7 +19380,7 @@ else
   ENABLE_GSL_FALSE=
 fi
 
-echo "DEBUG: After GSL tests LIBS = ${LIBS}"
+#echo "DEBUG: After GSL tests LIBS = ${LIBS}"
 # This would activate conditional GSL tests, if there were any
 # AM_CONDITIONAL(TEST_GSL,[test "${enable_gsl}" = 'yes'])
 # End GSL
@@ -18961,11 +19450,17 @@ $as_echo "#define NCO_HAVE_REGEX_FUNCTIONALITY 1" >>confdefs.h
 fi
 # End rx
 
+# - Variable: CPPFLAGS
+# Header file search directory (`-IDIR') and any other miscellaneous
+# options for the C and C++ preprocessors and compilers.  If it is
+# not set in the environment when `configure' runs, the default
+# value is empty.  `configure' uses this variable when compiling or
+# preprocessing programs to test for C and C++ features.
+
 echo "########################################"
 echo "#     Testing for UDUNITS support      #"
 echo "########################################"
-# Begin UDUnits support
-echo "Beginning generic tests for UDUnits"
+
 # Check whether --enable-udunits was given.
 if test "${enable_udunits+set}" = set; then :
   enableval=$enable_udunits; enable_udunits=${enableval}
@@ -18981,11 +19476,9 @@ else
 fi
 
 # Are both UDUnits and UDUnits2 requested?
-echo "DEBUG: enable_udunits = ${enable_udunits} and enable_udunits2 = ${enable_udunits2}"
 if (test "${enable_udunits}" != 'no' && test "${enable_udunits2}" != 'no'); then
 # Override UDUnits request
     echo "WARNING: Requested both UDUnits and UDUnits2 support---overriding UDUnits"
-
     echo "Will attempt to build NCO with UDUnits support from libudunits2, not from libudunits"
     enable_udunits='no'
 fi # End test for UDUnits duplication
@@ -19039,26 +19532,162 @@ _ACEOF
 fi
 
     if test "${UDUNITS2_PATH}"; then
-# Add ${UDUNITS2_PATH}/lib to search path if present
-	nco_udunits2_xml=${UDUNITS2_PATH}/share/udunits/udunits2.xml
-	LDFLAGS="${LDFLAGS} -L${UDUNITS2_PATH}/lib"
-	CPPFLAGS="${CPPFLAGS} -I${UDUNITS2_PATH}/include"
-#    nco_udunits2_xml=${UDUNITS2_PATH}/src/lib/udunits2.xml
+		# Add ${UDUNITS2_PATH}/lib to search path if present
+		nco_udunits2_xml=${UDUNITS2_PATH}/share/udunits/udunits2.xml
+		LDFLAGS="${LDFLAGS} -L${UDUNITS2_PATH}/lib"
+		CPPFLAGS="${CPPFLAGS} -I${UDUNITS2_PATH}/include"
     elif test "${NETCDF_INC}"; then
-	nco_udunits2_xml="${NETCDF_INC}/../share/udunits/udunits2.xml"
+		nco_udunits2_xml="${NETCDF_INC}/../share/udunits/udunits2.xml"
+
     else
-# 20101011 Debian installs udunits2.xml in /usr/share/xml/udunits/udunits2
-# NB: 20100729 udunits2.xml location seems to have changed from
-# /usr/local/share/udunits2.xml (in Fedora Core 6) to /usr/local/share/udunits/udunits2.xml
-# Not sure of location in more recent Fedora systems...
-# Updating patch from Fedora Core 6 nco.spec:
-	for udunits2_data_file in /usr/share/xml/udunits/udunits2/udunits2.xml /usr/local/share/udunits/udunits2.xml /usr/local/share/udunits2.xml /share/udunits2.xml ; do
+
+		# NO UDUNITS2_PATH section
+
+		#Fedora 1.7 has /usr/include/udunits2/udunits2.h
+		#add this path to CPPFLAGS if it exists, otherwise do nothing
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/include/udunits2/udunits2.h" >&5
+$as_echo_n "checking for /usr/include/udunits2/udunits2.h... " >&6; }
+if ${ac_cv_file__usr_include_udunits2_udunits2_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/usr/include/udunits2/udunits2.h"; then
+  ac_cv_file__usr_include_udunits2_udunits2_h=yes
+else
+  ac_cv_file__usr_include_udunits2_udunits2_h=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_include_udunits2_udunits2_h" >&5
+$as_echo "$ac_cv_file__usr_include_udunits2_udunits2_h" >&6; }
+if test "x$ac_cv_file__usr_include_udunits2_udunits2_h" = xyes; then :
+  CPPFLAGS="$CPPFLAGS -I/usr/include/udunits2"
+fi
+
+		#Ubuntu
+		#/usr/lib/x86_64-linux-gnu/libudunits2.a
+		#/usr/lib/i386-linux-gnu/libudunits2.a
+		#/usr/include/udunits2.h
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/include/udunits2.h" >&5
+$as_echo_n "checking for /usr/include/udunits2.h... " >&6; }
+if ${ac_cv_file__usr_include_udunits2_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/usr/include/udunits2.h"; then
+  ac_cv_file__usr_include_udunits2_h=yes
+else
+  ac_cv_file__usr_include_udunits2_h=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_include_udunits2_h" >&5
+$as_echo "$ac_cv_file__usr_include_udunits2_h" >&6; }
+if test "x$ac_cv_file__usr_include_udunits2_h" = xyes; then :
+  CPPFLAGS="$CPPFLAGS -I/usr/include"
+fi
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/lib/x86_64-linux-gnu/libudunits2.a" >&5
+$as_echo_n "checking for /usr/lib/x86_64-linux-gnu/libudunits2.a... " >&6; }
+if ${ac_cv_file__usr_lib_x86_64_linux_gnu_libudunits2_a+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/usr/lib/x86_64-linux-gnu/libudunits2.a"; then
+  ac_cv_file__usr_lib_x86_64_linux_gnu_libudunits2_a=yes
+else
+  ac_cv_file__usr_lib_x86_64_linux_gnu_libudunits2_a=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_lib_x86_64_linux_gnu_libudunits2_a" >&5
+$as_echo "$ac_cv_file__usr_lib_x86_64_linux_gnu_libudunits2_a" >&6; }
+if test "x$ac_cv_file__usr_lib_x86_64_linux_gnu_libudunits2_a" = xyes; then :
+  LDFLAGS="$LDFLAGS -L/usr/lib/x86_64-linux-gnu"
+fi
+
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/lib/i386-linux-gnu/libudunits2.a" >&5
+$as_echo_n "checking for /usr/lib/i386-linux-gnu/libudunits2.a... " >&6; }
+if ${ac_cv_file__usr_lib_i386_linux_gnu_libudunits2_a+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/usr/lib/i386-linux-gnu/libudunits2.a"; then
+  ac_cv_file__usr_lib_i386_linux_gnu_libudunits2_a=yes
+else
+  ac_cv_file__usr_lib_i386_linux_gnu_libudunits2_a=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_lib_i386_linux_gnu_libudunits2_a" >&5
+$as_echo "$ac_cv_file__usr_lib_i386_linux_gnu_libudunits2_a" >&6; }
+if test "x$ac_cv_file__usr_lib_i386_linux_gnu_libudunits2_a" = xyes; then :
+  LDFLAGS="$LDFLAGS -L/usr/lib/i386-linux-gnu"
+fi
+
+		#Mac OSX MacPorts packages
+		#sudo port install libdap
+		#sudo port install gsl
+		#sudo port install antlr
+		#sudo port install udunits2
+		#sudo port install netcdf
+		#installs to /opt/local/include/udunits2/udunits2.h
+		#/opt/local/share/udunits/udunits2.xml
+		#add this path to CPPFLAGS if it exists, otherwise do nothing
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /opt/local/include/udunits2/udunits2.h" >&5
+$as_echo_n "checking for /opt/local/include/udunits2/udunits2.h... " >&6; }
+if ${ac_cv_file__opt_local_include_udunits2_udunits2_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/opt/local/include/udunits2/udunits2.h"; then
+  ac_cv_file__opt_local_include_udunits2_udunits2_h=yes
+else
+  ac_cv_file__opt_local_include_udunits2_udunits2_h=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__opt_local_include_udunits2_udunits2_h" >&5
+$as_echo "$ac_cv_file__opt_local_include_udunits2_udunits2_h" >&6; }
+if test "x$ac_cv_file__opt_local_include_udunits2_udunits2_h" = xyes; then :
+  CPPFLAGS="$CPPFLAGS -I/opt/local/include/udunits2"
+fi
+
+		#/opt/local/lib/libudunits2.a
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /opt/local/lib/libudunits2.a" >&5
+$as_echo_n "checking for /opt/local/lib/libudunits2.a... " >&6; }
+if ${ac_cv_file__opt_local_lib_libudunits2_a+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  test "$cross_compiling" = yes &&
+  as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r "/opt/local/lib/libudunits2.a"; then
+  ac_cv_file__opt_local_lib_libudunits2_a=yes
+else
+  ac_cv_file__opt_local_lib_libudunits2_a=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__opt_local_lib_libudunits2_a" >&5
+$as_echo "$ac_cv_file__opt_local_lib_libudunits2_a" >&6; }
+if test "x$ac_cv_file__opt_local_lib_libudunits2_a" = xyes; then :
+  LDFLAGS="$LDFLAGS -L/opt/local/lib/"
+fi
+
+
+		# 20101011 Debian installs udunits2.xml in /usr/share/xml/udunits/udunits2
+		# NB: 20100729 udunits2.xml location seems to have changed from
+		# /usr/local/share/udunits2.xml (in Fedora Core 6) to /usr/local/share/udunits/udunits2.xml
+		# Not sure of location in more recent Fedora systems...
+		# Updating patch from Fedora Core 6 nco.spec:
+		for udunits2_data_file in /usr/share/xml/udunits/udunits2/udunits2.xml /usr/local/share/udunits/udunits2.xml /usr/local/share/udunits2.xml /share/udunits2.xml /usr/share/udunits/udunits2.xml; do
 	    if test -e "$udunits2_data_file" ; then
 		nco_udunits2_xml="$udunits2_data_file"
 	    fi
-	done
-    fi
-# Warn if udunits2.xml is not found, but continue anyway since builder may be savvy enough to add it when building packages (e.g., .debs)
+		done
+
+	fi # end NO UDUNITS2_PATH section
+
+	# Warn if udunits2.xml is not found, but continue anyway since builder may be savvy enough to add it when building packages (e.g., .debs)
     as_ac_File=`$as_echo "ac_cv_file_$nco_udunits2_xml" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $nco_udunits2_xml" >&5
 $as_echo_n "checking for $nco_udunits2_xml... " >&6; }
@@ -19083,12 +19712,13 @@ else
 $as_echo "$as_me: WARNING: file $nco_udunits2_xml was not found but will still attempt to build NCO with UDUnits2 support." >&2;}
 fi
 
-# Use DEFINE_UNQUOTED for quoted string so quotes get correctly merged into source file
+	# Use DEFINE_UNQUOTED for quoted string so quotes get correctly merged into source file
 
 cat >>confdefs.h <<_ACEOF
 #define UDUNITS2_PATH "$nco_udunits2_xml"
 _ACEOF
 
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: NB: Following tests of UDUnits2 library and header must succeed for UDUnits2 support:" >&5
 $as_echo "$as_me: NB: Following tests of UDUnits2 library and header must succeed for UDUnits2 support:" >&6;}
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ut_read_xml in -ludunits2" >&5
@@ -19176,6 +19806,7 @@ fi
 
 
     fi
+
     if test "${enable_udunits2}" = 'no'; then
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: UDUnits2 support disabled (missing/unusable library or header file)" >&5
 $as_echo "$as_me: WARNING: UDUnits2 support disabled (missing/unusable library or header file)" >&2;}
@@ -19184,15 +19815,17 @@ $as_echo "$as_me: WARNING: UDUnits2 support disabled (missing/unusable library o
 
 $as_echo "#define ENABLE_UDUNITS 1" >>confdefs.h
 
+    $as_echo "#define HAVE_UDUNITS2_H 1" >>confdefs.h
+
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: UDUnits2 support enabled" >&5
 $as_echo "$as_me: UDUnits2 support enabled" >&6;}
     fi
+
 # When empty, utInit() uses environment variable UDUNITS2_PATH, if any (see nco_lmt.c)
 # Thus UDUNITS2_PATH need not be known at compile time
-#   AC_ARG_VAR([UDUNITS2_PATH],Location of UDUnits2 database 'udunits2.xml' (run-time))
 
 fi
-echo "DEBUG: After UDUnits2 tests LIBS = ${LIBS}"
+
 # This would activate conditional UDUnits2 tests, if there were any
 # AM_CONDITIONAL(TEST_UDUNITS2,[test "${enable_udunits2}" = 'yes'])
 # End UDUnits2
@@ -19250,10 +19883,13 @@ if test "x${GCC_OR_GXX}" = 'xyes' ; then
 # Compilation flags for numerical routines recommended by GSL 1.3 manual, p. 397
 # CFLAGS += -Werror -Wall -W -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common -g -O4
 # 20070310: Change to no-shadow so ncoLexer.cpp compiles
+
     GCC_CMD_ARGS='-std=c99 -pedantic -D_BSD_SOURCE -D_POSIX_SOURCE'
     GCC_BASE_FLAGS='-Wall -Wunused -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common -g -O4'
+    GCC_BASE_FLAGS="${GCC_BASE_FLAGS} ${OPENMP_CFLAGS}"
     GCC_CFLAGS="${GCC_BASE_FLAGS} -Wmissing-prototypes"
     GCC_CXXFLAGS="${GCC_BASE_FLAGS}"
+
 # Compilation flags recommended by GSL that I like and use:
 # -D_BSD_SOURCE: Support 4.3 BSD Unix extensions to ANSI C (prevents nameser.h warnings)
 # -D_POSIX_SOURCE: Support POSIX.1 standard additions to ANSI C (prevents fileno warnings)
@@ -19269,7 +19905,7 @@ if test "x${GCC_OR_GXX}" = 'xyes' ; then
 # -Wwrite-strings: Apply const-qualifier to string constants, die if overwritten
 # -fno-common: Prevent global variables from being simultaneously defined in different files
 # -g: Put debugging symbols in executable
-# -O4: Turn on optimization so unitialized variables are flagged
+# -O4: Turn on optimization so uninitialized variables are flagged
 # Compilation flags recommended by GSL that I do not like and do not use:
 # -ansi: Support only strict ANSI C. Equivalent to -std=c89, conflicts with -std=c99
 # --no-alias? -fstrict-aliasing
@@ -19298,10 +19934,10 @@ $as_echo "#define ENABLE_DEBUG_CUSTOM 1" >>confdefs.h
 
     if (test "x${GCC}" = 'xyes'); then
 	CC="${CC} ${GCC_CMD_ARGS}"
-# fxm: What to do with default -g -O2 flags? Be redundant for now...
-	CFLAGS="${CFLAGS} ${GCC_CFLAGS}"
+        GCC_CUSTOM_FLAGS='-g -Wall -Wunused -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wmissing-prototypes -fno-common'
+	CFLAGS="${GCC_CUSTOM_FLAGS} ${OPENMP_CFLAGS}"
 	if (test "x${CXX}" = 'xg++' && test "x${GXX}" = 'xyes'); then
-	    CXXFLAGS="${GCC_CXXFLAGS}"
+	    CXXFLAGS="${GCC_CUSTOM_FLAGS}"
 	fi
     fi
 # Other switches are compiler-specific
@@ -19488,7 +20124,7 @@ if test "${enable_optimize_custom}" = 'yes'; then
 
 $as_echo "#define ENABLE_OPTIMIZE_CUSTOM 1" >>confdefs.h
 
-    echo "DEBUG: x\$CC=x${CC},  x\$GCC=x${GCC}"
+    #echo "DEBUG: x\$CC=x${CC},  x\$GCC=x${GCC}"
     if (test "x${GCC}" = 'xyes'); then
 # fxm: TODO #303 go through GCC manual and add more speedy flags
 # Until then, GCC has interesting property that --enable-optimize-custom flags equal --enable-optimize-debug flags!
@@ -19604,7 +20240,7 @@ do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_path_PATH_TO_NCGEN="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -19630,6 +20266,16 @@ if test "${PATH_TO_NCGEN}"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: Creating sample netCDF data files for self-tests" >&5
 $as_echo "$as_me: Creating sample netCDF data files for self-tests" >&6;}
     ${PATH_TO_NCGEN} -b -o data/in.nc data/in.cdl
+    if test "x${enable_netcdf4}" = 'xyes'; then
+	${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp.nc data/in_grp.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp_1.nc data/in_grp_1.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp_2.nc data/in_grp_2.cdl
+	    ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp_3.nc data/in_grp_3.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_1.nc data/in_1.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_2.nc data/in_2.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/cmip5.nc data/cmip5.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/obs.nc data/obs.cdl
+    fi
 
     for fl in 85.nc 86.nc 87.nc 88.nc 89.nc h0001.nc h0002.nc h0003.nc; do
 	if test -f data/${fl}; then
@@ -19684,7 +20330,7 @@ echo "###############################"
 echo "#    Require Shared Libs?     #"
 echo "###############################"
 # If --enable-shared define ENABLE_SHARED
-echo "DEBUG: enable_shared: ${enable_shared} "
+#echo "DEBUG: enable_shared: ${enable_shared} "
 if (test "${enable_shared}" = 'yes'); then
 
 $as_echo "#define ENABLE_SHARED 1" >>confdefs.h
@@ -19701,8 +20347,58 @@ $as_echo "#define ENABLE_STATIC 1" >>confdefs.h
 fi
 # End Static
 
+# 07/05/2012 Test for makeinfo; if not present, do not build doc/Makefile
+# Note: debian install with 'sudo apt-get install texinfo'
+# AC_CHECK_PROGS (variable, progs-to-check-for, [value-if-not-found], [path]
+for ac_prog in makeinfo
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_have_makeinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$have_makeinfo"; then
+  ac_cv_prog_have_makeinfo="$have_makeinfo" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${PATH}
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_have_makeinfo="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+have_makeinfo=$ac_cv_prog_have_makeinfo
+if test -n "$have_makeinfo"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_makeinfo" >&5
+$as_echo "$have_makeinfo" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$have_makeinfo" && break
+done
+test -n "$have_makeinfo" || have_makeinfo="no"
+
+
+#echo "DEBUG: have_makeinfo  = ${have_makeinfo}"
+
 # Begin config
-ac_config_files="$ac_config_files Makefile data/Makefile src/Makefile src/nco/Makefile man/Makefile doc/Makefile"
+#AC_CONFIG_FILES([Makefile data/Makefile src/Makefile src/nco/Makefile  man/Makefile doc/Makefile])
+ac_config_files="$ac_config_files Makefile data/Makefile src/Makefile src/nco/Makefile man/Makefile"
 
 if test "${ac_cv_cxx_have_valarray}" = 'yes' \
     && test "${enable_nco_cxx}" = 'yes' ; then
@@ -19714,15 +20410,29 @@ else
 fi
 
 
-#echo "DEBUG: enable_ncoxx: ${enable_ncoxx} "
-if test "${enable_ncoxx}" = 'yes' ; then
+#if the antlr library was not found just don't build ncap2
+if test "${enable_ncoxx}" = 'yes'  \
+    && test "${HAVE_ANTLR}" != 'no' ; then
     ac_config_files="$ac_config_files src/nco++/Makefile"
 
     NCOXX="nco++"
 else
     NCOXX=""
 fi
-echo "DEBUG: enable_ncoxx: ${enable_ncoxx} and NCOXX = ${NCOXX}"
+#echo "DEBUG: enable_ncoxx: ${enable_ncoxx} and NCOXX = ${NCOXX}"
+
+
+
+#Conditional build of doc/Makefile
+if test "${have_makeinfo}" != 'no' ; then
+    ac_config_files="$ac_config_files doc/Makefile"
+
+    DOC_FOLDER="doc"
+else
+    DOC_FOLDER=""
+fi
+
+
 
 # End config
 
@@ -19828,7 +20538,6 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
-U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -19843,6 +20552,14 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -20181,16 +20898,16 @@ if (echo >conf$$.file) 2>/dev/null; then
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -20250,28 +20967,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -20292,8 +20997,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by NCO netCDF Operators $as_me 4.0.9, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by NCO netCDF Operators $as_me 4.3.9, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -20352,17 +21057,17 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <help at nco.sf.net>."
+Report bugs to <nco-bugs at lists.sourceforge.net>."
 
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-NCO netCDF Operators config.status 4.0.9
-configured by $0, generated by GNU Autoconf 2.68,
+NCO netCDF Operators config.status 4.3.9
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -20453,7 +21158,7 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -20495,6 +21200,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -20577,7 +21283,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -20649,7 +21354,6 @@ with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
@@ -20688,6 +21392,7 @@ _LTECHO_EOF'
 # Quote evaled strings.
 for var in SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -20738,7 +21443,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -20772,7 +21476,6 @@ with_gnu_ld_CXX \
 allow_undefined_flag_CXX \
 no_undefined_flag_CXX \
 hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_ld_CXX \
 hardcode_libdir_separator_CXX \
 exclude_expsyms_CXX \
 include_expsyms_CXX \
@@ -20872,9 +21575,9 @@ do
     "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
     "src/nco/Makefile") CONFIG_FILES="$CONFIG_FILES src/nco/Makefile" ;;
     "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
     "src/nco_c++/Makefile") CONFIG_FILES="$CONFIG_FILES src/nco_c++/Makefile" ;;
     "src/nco++/Makefile") CONFIG_FILES="$CONFIG_FILES src/nco++/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
@@ -21471,7 +22174,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -21484,7 +22187,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -21518,21 +22221,19 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
@@ -21586,8 +22287,8 @@ $as_echo X"$file" |
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -21641,6 +22342,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -21942,10 +22646,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -22288,10 +22988,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
@@ -22416,21 +23112,23 @@ echo "CPP.................. ${CPP}"
 echo "CPPFLAGS............. ${CPPFLAGS}"
 echo "CXX.................. ${CXX}"
 echo "CXXFLAGS............. ${CXXFLAGS}"
+echo "OPENMP_CFLAGS.........${OPENMP_CFLAGS}"
 echo "ENABLE_DAP_NETCDF.... ${enable_dap_netcdf}"
 echo "ENABLE_DAP........... ${enable_dap}"
 echo "ENABLE_GSL........... ${enable_gsl}"
+echo "HAVE_NETCDF4_H....... ${header_defines_nc_chunked}"
 echo "ENABLE_NETCDF4....... ${enable_netcdf4}"
+echo "NETCDF4_ROOT......... ${NETCDF4_ROOT}"
 echo "ENABLE_UDUNITS....... ${enable_udunits}"
 echo "ENABLE_UDUNITS2...... ${enable_udunits2}"
 echo "GSL_ROOT............. ${GSL_ROOT}"
-echo "HAVE_NETCDF4_H....... ${header_defines_nc_chunked}"
+echo "HAVE_ANTLR........... ${HAVE_ANTLR}"
 echo "HOST................. ${HOST}"
 echo "host................. ${host}"
 echo "HOSTNAME............. ${HOSTNAME}"
 echo "LDFLAGS.............. ${LDFLAGS}"
 echo "LIBS................. ${LIBS}"
-echo "NETCDF4_ROOT......... ${NETCDF4_ROOT}"
-
+echo "install prefix ...... ${prefix}"
 # Inform users of the very useful configure.eg
 echo "*******************************************************************"
 echo "Configuration complete. You are now ready to run 'make'."
diff --git a/configure.in b/configure.ac
similarity index 83%
rename from configure.in
rename to configure.ac
index 316c7d3..218fb11 100644
--- a/configure.in
+++ b/configure.ac
@@ -1,9 +1,9 @@
-# $Header: /cvsroot/nco/nco/configure.in,v 1.351 2012/02/14 00:38:48 zender Exp $ -*-Shell-script-*-
+# $Header: /cvsroot/nco/nco/configure.ac,v 1.24 2013/12/02 01:12:09 zender Exp $ -*-Shell-script-*-
 
 # Purpose: Template autoconf uses to generate NCO configure script
 # Newer convention names this file configure.ac, rather than configure.in
 
-# Copyright (C) 2003--2012 Charlie Zender
+# Copyright (C) 2003--2013 Charlie Zender
 # License: GNU General Public License (GPL) Version 3
 # See http://www.gnu.org/copyleft/gpl.html for full license text
 
@@ -12,6 +12,7 @@
 # cd ~/nco;aclocal;autoheader;automake --foreign;autoconf
 # cd ~/nco;make distclean;aclocal;autoheader;automake --foreign;autoconf;configure;make install
 # cd ~/nco;autoreconf --force
+# cd ~/nco;for fl in NEWS README AUTHORS ChangeLog ; do ln -s doc/${fl} ${fl};done;autoreconf --force
 
 # Distribution:
 # scp ~/nco/configure givre.ess.uci.edu:nco
@@ -41,6 +42,7 @@
 # AC_CHECK_LIB Find libXXX.a, prepend -lXXX to LIBS, define HAVE_LIBXXX
 # AC_CHECK_PROG Find whether prg_nm is on ${PATH}, define ${flg} accordingly
 # AC_DEFINE Define token TKN to value VAL with comment CMNT in config.h
+# AC_DEFINE_UNQUOTED Define token TKN to value VAL with comment CMNT in config.h. Use then when TKN or VAL are shell variables.
 # AC_EGREP_HEADER Search CPP output of header.h (NB: CPP outputs C-code only), define ${flg} accordingly
 # AC_MSG_NOTICE Print MSG to output
 # AC_MSG_WARN Print MSG to output
@@ -49,7 +51,7 @@
 
 # Process configure input with autoconf to produce configure script
 # (package name,version,bug-report-address,tarball name)
-AC_INIT([NCO netCDF Operators],[4.0.9],[help at nco.sf.net],[nco])
+AC_INIT([NCO netCDF Operators],[4.3.9],[nco-bugs at lists.sourceforge.net],[nco])
 
 # Print GNU copyright in configure script
 AC_COPYRIGHT
@@ -139,14 +141,21 @@ case ${host} in
 	;;
     sx*-nec-superux* ) AC_DEFINE(NECSX,1,Compatibility pvmgetarch token for SuperUX on NEC SX)
 	;;
+    x86_64-unknown-cygwin* ) AC_DEFINE(WIN32,1,Compatibility pvmgetarch token for Windows on Intel-compatible x86_64)
+	;;
     x86_64*-linux* ) AC_DEFINE(LINUXAMD64,1,Compatibility pvmgetarch token for Linux on AMD x86_64)
 	;;
 esac
+# 20131120: Workaround for Cygwin64
+if test "x${host}" = 'xx86_64-unknown-cygwin'; then
+    AC_DEFINE(NEED_STRDUP,1,Use NCO strdup on Cygwin)
+fi
+
 # End pvmgetarch Compatibility
 
 # Use automake to create Makefiles
-#AM_INIT_AUTOMAKE
-AM_INIT_AUTOMAKE(nco,"${nco_version}")
+AM_INIT_AUTOMAKE
+#AM_INIT_AUTOMAKE(nco,"${nco_version}")
 
 # Put preprocessor symbols in config.h
 AM_CONFIG_HEADER(config.h)
@@ -189,7 +198,7 @@ AC_CHECK_FUNCS([canonicalize_file_name floor gethostname getpagesize getrusage m
 
 # Check for header files
 AC_HEADER_STDC
-AC_CHECK_HEADERS([getopt.h libintl.h limits.h locale.h netinet/in.h stdlib.h string.h unistd.h])
+AC_CHECK_HEADERS([getopt.h libintl.h limits.h locale.h netinet/in.h stdlib.h string.h strings.h unistd.h])
 AC_LANG_PUSH([C++])
 AC_CHECK_HEADERS(cstdlib)
 AC_LANG_POP([C++])
@@ -209,6 +218,22 @@ AC_CXX_HAVE_VALARRAY
 # Arrange for large file support (LFS)
 AC_SYS_LARGEFILE
 
+
+echo "#################################"
+echo "#  Test for netCDF             #"
+echo "################################"
+
+#Mac OSX MacPorts packages
+#sudo port install netcdf
+#installs to /opt/local/include, /opt/local/lib
+#add this path to CPPFLAGS if it exists, otherwise do nothing
+AC_CHECK_FILE([/opt/local/include/netcdf.h], [CPPFLAGS="$CPPFLAGS -I/opt/local/include"], [])
+AC_CHECK_FILE([/opt/local/lib/libnetcdf.a], [LDFLAGS="$LDFLAGS -L/opt/local/lib -lnetcdf"], [])
+
+# Greenplanet
+AC_CHECK_FILE([/sopt/netcdf/netcdf411-gcc-serial/include/netcdf.h], [CPPFLAGS="$CPPFLAGS -I/sopt/netcdf/netcdf411-gcc-serial/include"], [])
+AC_CHECK_FILE([/sopt/netcdf/netcdf411-gcc-serial/lib/libnetcdf.a], [LDFLAGS="$LDFLAGS -L/sopt/netcdf/netcdf411-gcc-serial/lib -lnetcdf"], [])
+
 # Begin mandatory link test with libnetcdf.a
 # Make precious variables for ./configure --help
 AC_ARG_VAR(NETCDF_INC,Location of netCDF headers (compile-time))
@@ -241,16 +266,19 @@ fi # !NETCDF_INC
 # NCO no longer supports netCDF2
 AC_CHECK_HEADERS([netcdf.h],[],[AC_MSG_FAILURE([cannot find netCDF header])])
 AC_DEFINE(NO_NETCDF_2,1,No netCDF version 2.x API)
+AC_CHECK_LIB([netcdf],[nc_open],[LIBS="-lnetcdf ${LIBS}"],[AC_MSG_FAILURE([cannot find netCDF library])])
 
 echo "#################################"
 echo "#  Test for netCDF4 support     #"
 echo "#################################"
-AC_ARG_ENABLE(netcdf4,AS_HELP_STRING([--enable-netcdf4],[Enable netCDF Version 4 features (same as enable-netcdf-4) [[default=yes]]]),enable_netcdf4=${enableval},enable_netcdf4=no)
+
+AC_ARG_ENABLE(netcdf4,AS_HELP_STRING([--enable-netcdf4],[Enable netCDF Version 4 features (same as enable-netcdf-4) [[default=yes]]]),enable_netcdf4=${enableval},enable_netcdf4=yes)
 # 20100105: make --enable-netcdf-4 synonym for --enable-netcdf4
 if test "x${enable_netcdf4}" = 'xno' ; then
-    AC_ARG_ENABLE(netcdf-4,AS_HELP_STRING([--enable-netcdf-4],[Enable netCDF Version 4 features (same as enable-netcdf4) [[default=yes]]]),enable_netcdf4=${enableval},enable_netcdf4=no)  
+    AC_ARG_ENABLE(netcdf-4,AS_HELP_STRING([--enable-netcdf-4],[Enable netCDF Version 4 features (same as enable-netcdf4) [[default=yes]]]),enable_netcdf4=${enableval},enable_netcdf4=yes)  
 fi # !netCDF4
 AC_ARG_VAR([NETCDF4_ROOT],[Root of netCDF4 installation] (compile-time))
+
 # Test if user set NETCDF4_ROOT and it exists
 if test "x${enable_netcdf4}" = 'xyes'; then
     if test -z "${NETCDF_ROOT}"; then
@@ -262,7 +290,7 @@ if test "x${enable_netcdf4}" = 'xyes'; then
     LDFLAGS="`${NETCDF_CONFIG} --libs` ${LDFLAGS}";
     CPPFLAGS="`${NETCDF_CONFIG} --cflags` ${CPPFLAGS}";
 fi
-echo "DEBUG: After netCDF4 section LDFLAGS = ${LDFLAGS}"
+
 
 # ENABLE_NETCDF4 refers to presence of netCDF4-enabled library
 # ENABLE_NETCDF4 implies HAVE_NETCDF4_H
@@ -273,7 +301,8 @@ if test "x${header_defines_nc_chunked}" = 'xyes' ; then
     AC_DEFINE([HAVE_NETCDF4_H],[1],[Define to 1 if netcdf.h contains netCDF4 definitions])
     AC_MSG_NOTICE([netcdf.h contains netCDF4 definitions])
 fi
-echo "DEBUG: After netCDF4 section header_defines_nc_chunked = ${header_defines_nc_chunked}"
+
+
 if (test "x${enable_netcdf4}" = 'xyes' && test "x${header_defines_nc_chunked}" = 'xyes') ; then
     AC_CHECK_LIB([netcdf],[nc_def_var_chunking],[LIBS="-lnetcdf ${LIBS}"
 	    AC_DEFINE([ENABLE_NETCDF4],[1],[Define to 1 if libnetcdf.a contains netCDF4 functions])
@@ -283,6 +312,20 @@ if (test "x${enable_netcdf4}" = 'xyes' && test "x${header_defines_nc_chunked}" =
 	    ])
 fi
 
+
+# OpenMP
+AC_OPENMP
+AC_SUBST(OPENMP_CFLAGS)
+AC_ARG_ENABLE(openmp,AS_HELP_STRING([--enable-openmp],[Build NCO with OpenMP [[default=yes]]]),enable_openmp=${enableval},enable_openmp=yes)
+
+# Enable OpenMP unless told not to
+if ((test "${enable_openmp}" != 'no') && (test "${enable_netcdf4}" = 'xyes')); then
+    CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
+fi
+# End OpenMP
+
+
+
 # Begin DAP support
 echo "Beginning generic tests for DAP support"
 # Store pre-DAP LIBS value to restore from later
@@ -347,25 +390,27 @@ NCO_CHECK_FUNCS([acosf asinf atanf atan2f cosf expf fabsf fmodf log10f logf powf
 NCO_CHECK_FUNCS([erff erfcf gammaf])
 NCO_CHECK_FUNCS([acoshf asinhf atanhf coshf sinhf tanhf])
 NCO_CHECK_FUNCS([ceilf floorf])
+NCO_CHECK_FUNCS([nearbyint rint round trunc])
 NCO_CHECK_FUNCS([nearbyintf rintf roundf truncf])
 NCO_CHECK_FUNCS([getopt_long])
-NCO_CHECK_FUNCS([strdup strcasecmp])
+NCO_CHECK_FUNCS([strdup strcasecmp strcasestr])
 
 echo "##########################################################"
 echo "#     Sorting out MacOSX build parameters                #"
 echo "##########################################################"
-echo "DEBUG: enable_libnco = ${enable_libnco} and MACOSX = ${MACOSX}"
+#echo "DEBUG: enable_libnco = ${enable_libnco} and MACOSX = ${MACOSX}"
 if ((test "${enable_libnco}" = 'yes') && (test "${MACOSX}" != 1)); then
     echo "Phew, NOT MacOSX, adding -lnco to LIBS"
     LIBS="-lnco ${LIBS}"
 fi
-echo "DEBUG: After library checks LIBS=$LIBS"
+#echo "DEBUG: After library checks LIBS=$LIBS"
 # End Library checks
 
 # Begin ANTLR
 echo "#################################"
 echo "#  Testing for ANTLR support    #"
 echo "#################################"
+
 AC_ARG_VAR(ANTLR_ROOT,Location of ANTLR version 2.7.x installation (compile-time))
 AC_ARG_ENABLE(ncoxx,AS_HELP_STRING([--enable-ncoxx],[Build libnco++ and ncap2 (same as enable-ncap2) [[default=yes]]]),enable_ncoxx=${enableval},[enable_ncoxx=yes])
 AC_ARG_ENABLE(ncap2,AS_HELP_STRING([--enable-ncap2],[Build ncap2 and libnco++ (same as enable-ncoxx) [[default=yes]]]),enable_ncoxx=${enableval},[enable_ncoxx=yes])
@@ -403,17 +448,34 @@ if test "${enable_ncoxx}" != 'no'; then
 # Add ${ANTLR_LIB}, if present, to library search path
 	LDFLAGS="${LDFLAGS} -L${ANTLR_LIB}"
     fi
+#close {enable_ncoxx}
+fi
+
+# AC_CHECK_PROGS (variable, progs-to-check-for, [value-if-not-found], [path]
 # Check for antlr executable installed as runantlr (runantlr ~= java antlr.Tool)
-    AC_CHECK_PROGS(HAVE_ANTLR,[runantlr antlr],[],[],${PATH})
-    if test "x${HAVE_ANTLR}" = 'xyes'; then
+#AC_CHECK_PROGS(HAVE_ANTLR,[runantlr antlr],[],[],${PATH})
+AC_CHECK_PROGS(HAVE_ANTLR,[runantlr antlr],no,${PATH},[]) 
+
+#echo "DEBUG: HAVE_ANTLR  = ${HAVE_ANTLR}"
+
+# issue a message if the antlr library was found or not
+if test "${HAVE_ANTLR}" != 'no' ; then
+    AC_MSG_NOTICE([antlr library was found])
+else
+    AC_MSG_NOTICE([antlr library was not found, disabling ncap2 build])
+fi
+
+
+
+if test "x${HAVE_ANTLR}" = 'xyes'; then
 # 20070228: Avoid CHECK_LIB on C++ libraries (requires too-complex link-test scripts)
 # AC_CHECK_LIB([antlr],[ASTFactory],enable_ncoxx=yes,enable_ncoxx=no,[-lstdc++])
 	AC_CHECK_HEADER([antlr/CommonToken.hpp],enable_ncoxx=yes,enable_ncoxx=no)
 	if test "${enable_ncoxx}" = 'yes'; then
 	    echo "INFO: ANTLR development support found---will build nco++ directory and ncap2"
 	fi
-    fi
 fi
+
 if test "${enable_ncoxx}" != 'yes'; then
     echo "INFO: ANTLR support not found. To build ncap2, please install ANTLR and its C++ development package, e.g., 'sudo aptitude install antlr libantlr-dev' or 'sudo yum install antlr antlr-c++-devel'"
 fi
@@ -488,7 +550,14 @@ nco_LIBS_no_GSL="${LIBS}"
 nco_CPPFLAGS_no_GSL="${CPPFLAGS}"
 AC_ARG_ENABLE(gsl,AS_HELP_STRING([--enable-gsl],[Build-in GSL support if possible [[default=yes]]]),enable_gsl=${enableval},enable_gsl=yes)
 if test "${enable_gsl}" = 'yes'; then
-    if which gsl-config > /dev/null; then
+
+    if test "${GSL_ROOT}"; then
+	GSL_CONFIG="${GSL_ROOT}/bin/gsl-config"
+	else
+	GSL_CONFIG='gsl-config'
+	fi
+
+    if which ${GSL_CONFIG} > /dev/null; then
 	enable_gsl='yes'
     else
 	AC_MSG_NOTICE([WARNING: Did not find 'gsl-config' command in your default path])
@@ -543,7 +612,7 @@ if test "${enable_gsl}" != 'no'; then
     fi
 fi
 AM_CONDITIONAL(ENABLE_GSL,[test "${enable_gsl}" = 'yes'])
-echo "DEBUG: After GSL tests LIBS = ${LIBS}"
+#echo "DEBUG: After GSL tests LIBS = ${LIBS}"
 # This would activate conditional GSL tests, if there were any
 # AM_CONDITIONAL(TEST_GSL,[test "${enable_gsl}" = 'yes'])
 # End GSL
@@ -563,19 +632,23 @@ if test "x${nco_have_regex}" = 'xyes'; then
 fi
 # End rx
 
+# - Variable: CPPFLAGS
+# Header file search directory (`-IDIR') and any other miscellaneous
+# options for the C and C++ preprocessors and compilers.  If it is
+# not set in the environment when `configure' runs, the default
+# value is empty.  `configure' uses this variable when compiling or
+# preprocessing programs to test for C and C++ features.
+
 echo "########################################"
 echo "#     Testing for UDUNITS support      #"
 echo "########################################"
-# Begin UDUnits support
-echo "Beginning generic tests for UDUnits"
+
 AC_ARG_ENABLE(udunits,AS_HELP_STRING([--enable-udunits],[Build-in UDUnits support if possible [[default=no]]]),enable_udunits=${enableval},enable_udunits=yes)
 AC_ARG_ENABLE(udunits2,AS_HELP_STRING([--enable-udunits2],[Build-in UDUnits2 support if possible [[default=yes]]]),enable_udunits2=${enableval},enable_udunits2=yes)
 # Are both UDUnits and UDUnits2 requested?
-echo "DEBUG: enable_udunits = ${enable_udunits} and enable_udunits2 = ${enable_udunits2}"
 if (test "${enable_udunits}" != 'no' && test "${enable_udunits2}" != 'no'); then
 # Override UDUnits request
     echo "WARNING: Requested both UDUnits and UDUnits2 support---overriding UDUnits"
-
     echo "Will attempt to build NCO with UDUnits support from libudunits2, not from libudunits"
     enable_udunits='no'
 fi # End test for UDUnits duplication
@@ -585,29 +658,58 @@ fi # End test for UDUnits duplication
 if test "${enable_udunits2}" != 'no'; then
     AC_CHECK_LIB([expat],[XML_ParserCreate],,)
     if test "${UDUNITS2_PATH}"; then
-# Add ${UDUNITS2_PATH}/lib to search path if present
-	nco_udunits2_xml=${UDUNITS2_PATH}/share/udunits/udunits2.xml
-	LDFLAGS="${LDFLAGS} -L${UDUNITS2_PATH}/lib"
-	CPPFLAGS="${CPPFLAGS} -I${UDUNITS2_PATH}/include"
-#    nco_udunits2_xml=${UDUNITS2_PATH}/src/lib/udunits2.xml
+		# Add ${UDUNITS2_PATH}/lib to search path if present
+		nco_udunits2_xml=${UDUNITS2_PATH}/share/udunits/udunits2.xml
+		LDFLAGS="${LDFLAGS} -L${UDUNITS2_PATH}/lib"
+		CPPFLAGS="${CPPFLAGS} -I${UDUNITS2_PATH}/include"
     elif test "${NETCDF_INC}"; then
-	nco_udunits2_xml="${NETCDF_INC}/../share/udunits/udunits2.xml"
+		nco_udunits2_xml="${NETCDF_INC}/../share/udunits/udunits2.xml"
+
     else
-# 20101011 Debian installs udunits2.xml in /usr/share/xml/udunits/udunits2
-# NB: 20100729 udunits2.xml location seems to have changed from 
-# /usr/local/share/udunits2.xml (in Fedora Core 6) to /usr/local/share/udunits/udunits2.xml
-# Not sure of location in more recent Fedora systems...
-# Updating patch from Fedora Core 6 nco.spec:
-	for udunits2_data_file in /usr/share/xml/udunits/udunits2/udunits2.xml /usr/local/share/udunits/udunits2.xml /usr/local/share/udunits2.xml /share/udunits2.xml ; do
+
+		# NO UDUNITS2_PATH section
+
+		#Fedora 1.7 has /usr/include/udunits2/udunits2.h
+		#add this path to CPPFLAGS if it exists, otherwise do nothing
+		AC_CHECK_FILE([/usr/include/udunits2/udunits2.h], [CPPFLAGS="$CPPFLAGS -I/usr/include/udunits2"], [])
+		#Ubuntu
+		#/usr/lib/x86_64-linux-gnu/libudunits2.a
+		#/usr/lib/i386-linux-gnu/libudunits2.a
+		#/usr/include/udunits2.h
+		AC_CHECK_FILE([/usr/include/udunits2.h], [CPPFLAGS="$CPPFLAGS -I/usr/include"], [])
+		AC_CHECK_FILE([/usr/lib/x86_64-linux-gnu/libudunits2.a], [LDFLAGS="$LDFLAGS -L/usr/lib/x86_64-linux-gnu"], [])
+		AC_CHECK_FILE([/usr/lib/i386-linux-gnu/libudunits2.a], [LDFLAGS="$LDFLAGS -L/usr/lib/i386-linux-gnu"], [])
+		#Mac OSX MacPorts packages
+		#sudo port install libdap
+		#sudo port install gsl
+		#sudo port install antlr
+		#sudo port install udunits2
+		#sudo port install netcdf
+		#installs to /opt/local/include/udunits2/udunits2.h
+		#/opt/local/share/udunits/udunits2.xml
+		#add this path to CPPFLAGS if it exists, otherwise do nothing
+		AC_CHECK_FILE([/opt/local/include/udunits2/udunits2.h], [CPPFLAGS="$CPPFLAGS -I/opt/local/include/udunits2"], [])
+		#/opt/local/lib/libudunits2.a
+		AC_CHECK_FILE([/opt/local/lib/libudunits2.a], [LDFLAGS="$LDFLAGS -L/opt/local/lib/"], [])
+
+		# 20101011 Debian installs udunits2.xml in /usr/share/xml/udunits/udunits2
+		# NB: 20100729 udunits2.xml location seems to have changed from 
+		# /usr/local/share/udunits2.xml (in Fedora Core 6) to /usr/local/share/udunits/udunits2.xml
+		# Not sure of location in more recent Fedora systems...
+		# Updating patch from Fedora Core 6 nco.spec:
+		for udunits2_data_file in /usr/share/xml/udunits/udunits2/udunits2.xml /usr/local/share/udunits/udunits2.xml /usr/local/share/udunits2.xml /share/udunits2.xml /usr/share/udunits/udunits2.xml; do
 	    if test -e "$udunits2_data_file" ; then
 		nco_udunits2_xml="$udunits2_data_file"
 	    fi
-	done
-    fi
-# Warn if udunits2.xml is not found, but continue anyway since builder may be savvy enough to add it when building packages (e.g., .debs)
+		done
+
+	fi # end NO UDUNITS2_PATH section
+
+	# Warn if udunits2.xml is not found, but continue anyway since builder may be savvy enough to add it when building packages (e.g., .debs)
     AC_CHECK_FILE([$nco_udunits2_xml],,AC_WARN([file $nco_udunits2_xml was not found but will still attempt to build NCO with UDUnits2 support.]))
-# Use DEFINE_UNQUOTED for quoted string so quotes get correctly merged into source file
+	# Use DEFINE_UNQUOTED for quoted string so quotes get correctly merged into source file
     AC_DEFINE_UNQUOTED([UDUNITS2_PATH],["$nco_udunits2_xml"],[Location of UDUnits2 data file])
+
     AC_MSG_NOTICE([NB: Following tests of UDUnits2 library and header must succeed for UDUnits2 support:])
     AC_CHECK_LIB([udunits2],[ut_read_xml],,enable_udunits2=no)
     if test "${UDUNITS2_PATH}"; then
@@ -615,19 +717,21 @@ if test "${enable_udunits2}" != 'no'; then
     else
 	AC_CHECK_HEADER([udunits2.h],AC_DEFINE([HAVE_UDUNITS2_H],1,[Define to 1 if <udunits2.h> is present]),enable_udunits2=no)
     fi
+
     if test "${enable_udunits2}" = 'no'; then
 	AC_MSG_WARN([UDUnits2 support disabled (missing/unusable library or header file)])
     elif test "${enable_udunits2}" = 'yes'; then
 	LIBS="${LIBS} -ludunits2"
 	AC_DEFINE(ENABLE_UDUNITS,1,Compile operators with UDUnits2 support)
+    AC_DEFINE(HAVE_UDUNITS2_H,1,[])
 	AC_MSG_NOTICE([UDUnits2 support enabled])
     fi
+
 # When empty, utInit() uses environment variable UDUNITS2_PATH, if any (see nco_lmt.c)
 # Thus UDUNITS2_PATH need not be known at compile time
-#   AC_ARG_VAR([UDUNITS2_PATH],Location of UDUnits2 database 'udunits2.xml' (run-time))
     AC_ARG_VAR([UDUNITS2_PATH],Root directory of UDUnits2 (normally contains [bin, include, lib, share] subdirectories))
 fi
-echo "DEBUG: After UDUnits2 tests LIBS = ${LIBS}"
+
 # This would activate conditional UDUnits2 tests, if there were any
 # AM_CONDITIONAL(TEST_UDUNITS2,[test "${enable_udunits2}" = 'yes'])
 # End UDUnits2
@@ -685,10 +789,13 @@ if test "x${GCC_OR_GXX}" = 'xyes' ; then
 # Compilation flags for numerical routines recommended by GSL 1.3 manual, p. 397
 # CFLAGS += -Werror -Wall -W -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common -g -O4
 # 20070310: Change to no-shadow so ncoLexer.cpp compiles
+
     GCC_CMD_ARGS='-std=c99 -pedantic -D_BSD_SOURCE -D_POSIX_SOURCE'
     GCC_BASE_FLAGS='-Wall -Wunused -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -fno-common -g -O4'
+    GCC_BASE_FLAGS="${GCC_BASE_FLAGS} ${OPENMP_CFLAGS}"
     GCC_CFLAGS="${GCC_BASE_FLAGS} -Wmissing-prototypes"
     GCC_CXXFLAGS="${GCC_BASE_FLAGS}"
+
 # Compilation flags recommended by GSL that I like and use:
 # -D_BSD_SOURCE: Support 4.3 BSD Unix extensions to ANSI C (prevents nameser.h warnings)
 # -D_POSIX_SOURCE: Support POSIX.1 standard additions to ANSI C (prevents fileno warnings)
@@ -704,7 +811,7 @@ if test "x${GCC_OR_GXX}" = 'xyes' ; then
 # -Wwrite-strings: Apply const-qualifier to string constants, die if overwritten
 # -fno-common: Prevent global variables from being simultaneously defined in different files
 # -g: Put debugging symbols in executable
-# -O4: Turn on optimization so unitialized variables are flagged
+# -O4: Turn on optimization so uninitialized variables are flagged
 # Compilation flags recommended by GSL that I do not like and do not use:
 # -ansi: Support only strict ANSI C. Equivalent to -std=c89, conflicts with -std=c99
 # --no-alias? -fstrict-aliasing
@@ -725,10 +832,10 @@ if test "${enable_debug_custom}" = 'yes'; then
     AC_DEFINE(ENABLE_DEBUG_CUSTOM,1,[Custom debugging: Pedantic, bounds checking (slowest execution)])
     if (test "x${GCC}" = 'xyes'); then
 	CC="${CC} ${GCC_CMD_ARGS}"
-# fxm: What to do with default -g -O2 flags? Be redundant for now...
-	CFLAGS="${CFLAGS} ${GCC_CFLAGS}"
+        GCC_CUSTOM_FLAGS='-g -Wall -Wunused -W -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wmissing-prototypes -fno-common'
+	CFLAGS="${GCC_CUSTOM_FLAGS} ${OPENMP_CFLAGS}"
 	if (test "x${CXX}" = 'xg++' && test "x${GXX}" = 'xyes'); then
-	    CXXFLAGS="${GCC_CXXFLAGS}"
+	    CXXFLAGS="${GCC_CUSTOM_FLAGS}"
 	fi
     fi
 # Other switches are compiler-specific
@@ -817,7 +924,7 @@ fi
 AC_ARG_ENABLE(optimize-custom,AS_HELP_STRING([--enable-optimize-custom],[Activate all known, helpful switches for fastest possible run-time performance (slowest compilation) [[default=no]]]),enable_optimize_custom=${enableval},enable_optimize_custom=no)
 if test "${enable_optimize_custom}" = 'yes'; then
     AC_DEFINE(ENABLE_OPTIMIZE_CUSTOM,1,Fastest possible execution (slowest compilation))
-    echo "DEBUG: x\$CC=x${CC},  x\$GCC=x${GCC}"
+    #echo "DEBUG: x\$CC=x${CC},  x\$GCC=x${GCC}"
     if (test "x${GCC}" = 'xyes'); then
 # fxm: TODO #303 go through GCC manual and add more speedy flags
 # Until then, GCC has interesting property that --enable-optimize-custom flags equal --enable-optimize-debug flags!
@@ -919,6 +1026,16 @@ AC_PATH_PROG(PATH_TO_NCGEN,ncgen,,)
 if test "${PATH_TO_NCGEN}"; then
     AC_MSG_NOTICE(Creating sample netCDF data files for self-tests)
     ${PATH_TO_NCGEN} -b -o data/in.nc data/in.cdl
+    if test "x${enable_netcdf4}" = 'xyes'; then
+	${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp.nc data/in_grp.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp_1.nc data/in_grp_1.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp_2.nc data/in_grp_2.cdl
+	    ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_grp_3.nc data/in_grp_3.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_1.nc data/in_1.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/in_2.nc data/in_2.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/cmip5.nc data/cmip5.cdl
+        ${PATH_TO_NCGEN} -k netCDF-4 -b -o data/obs.nc data/obs.cdl
+    fi
     AC_SUBST(PATH_TO_NCGEN)
     for fl in 85.nc 86.nc 87.nc 88.nc 89.nc h0001.nc h0002.nc h0003.nc; do
 	if test -f data/${fl}; then
@@ -973,7 +1090,7 @@ echo "###############################"
 echo "#    Require Shared Libs?     #"
 echo "###############################"
 # If --enable-shared define ENABLE_SHARED
-echo "DEBUG: enable_shared: ${enable_shared} "
+#echo "DEBUG: enable_shared: ${enable_shared} "
 if (test "${enable_shared}" = 'yes'); then
     AC_DEFINE(ENABLE_SHARED,1,Enable shared libraries)
 fi
@@ -986,8 +1103,16 @@ if test "${enable_static}" = 'yes'; then
 fi
 # End Static
 
+# 07/05/2012 Test for makeinfo; if not present, do not build doc/Makefile
+# Note: debian install with 'sudo apt-get install texinfo'
+# AC_CHECK_PROGS (variable, progs-to-check-for, [value-if-not-found], [path]
+AC_CHECK_PROGS(have_makeinfo,[makeinfo],no,${PATH},[]) 
+
+#echo "DEBUG: have_makeinfo  = ${have_makeinfo}"
+
 # Begin config
-AC_CONFIG_FILES([Makefile data/Makefile src/Makefile src/nco/Makefile  man/Makefile doc/Makefile])
+#AC_CONFIG_FILES([Makefile data/Makefile src/Makefile src/nco/Makefile  man/Makefile doc/Makefile])
+AC_CONFIG_FILES([Makefile data/Makefile src/Makefile src/nco/Makefile  man/Makefile])
 if test "${ac_cv_cxx_have_valarray}" = 'yes' \
     && test "${enable_nco_cxx}" = 'yes' ; then
     AC_CONFIG_FILES(src/nco_c++/Makefile)
@@ -997,15 +1122,28 @@ else
 fi
 AC_SUBST(NCO_CXX)
 
-#echo "DEBUG: enable_ncoxx: ${enable_ncoxx} "
-if test "${enable_ncoxx}" = 'yes' ; then
+#if the antlr library was not found just don't build ncap2
+if test "${enable_ncoxx}" = 'yes'  \
+    && test "${HAVE_ANTLR}" != 'no' ; then
     AC_CONFIG_FILES(src/nco++/Makefile)
     NCOXX="nco++"
 else
     NCOXX=""
 fi
-echo "DEBUG: enable_ncoxx: ${enable_ncoxx} and NCOXX = ${NCOXX}"
+#echo "DEBUG: enable_ncoxx: ${enable_ncoxx} and NCOXX = ${NCOXX}"
+
 AC_SUBST(NCOXX)
+
+#Conditional build of doc/Makefile
+if test "${have_makeinfo}" != 'no' ; then
+    AC_CONFIG_FILES(doc/Makefile)
+    DOC_FOLDER="doc"
+else
+    DOC_FOLDER=""
+fi
+
+AC_SUBST(DOC_FOLDER)
+
 # End config
 
 # Prefix Flex output symbols with NCO string to avoid namespace conflict with flex-generated symbols from other programs/libraries
@@ -1028,21 +1166,23 @@ echo "CPP.................. ${CPP}"
 echo "CPPFLAGS............. ${CPPFLAGS}"
 echo "CXX.................. ${CXX}"
 echo "CXXFLAGS............. ${CXXFLAGS}"
+echo "OPENMP_CFLAGS.........${OPENMP_CFLAGS}"
 echo "ENABLE_DAP_NETCDF.... ${enable_dap_netcdf}"
 echo "ENABLE_DAP........... ${enable_dap}"
 echo "ENABLE_GSL........... ${enable_gsl}"
+echo "HAVE_NETCDF4_H....... ${header_defines_nc_chunked}"
 echo "ENABLE_NETCDF4....... ${enable_netcdf4}"
+echo "NETCDF4_ROOT......... ${NETCDF4_ROOT}"
 echo "ENABLE_UDUNITS....... ${enable_udunits}"
 echo "ENABLE_UDUNITS2...... ${enable_udunits2}"
 echo "GSL_ROOT............. ${GSL_ROOT}"
-echo "HAVE_NETCDF4_H....... ${header_defines_nc_chunked}"
+echo "HAVE_ANTLR........... ${HAVE_ANTLR}"  
 echo "HOST................. ${HOST}"
 echo "host................. ${host}"
 echo "HOSTNAME............. ${HOSTNAME}"
 echo "LDFLAGS.............. ${LDFLAGS}"
 echo "LIBS................. ${LIBS}"
-echo "NETCDF4_ROOT......... ${NETCDF4_ROOT}"
-
+echo "install prefix ...... ${prefix}"
 # Inform users of the very useful configure.eg
 echo "*******************************************************************"
 echo "Configuration complete. You are now ready to run 'make'."
diff --git a/configure.eg b/configure.eg
index ea7fe81..4b2a18d 100644
--- a/configure.eg
+++ b/configure.eg
@@ -1,4 +1,4 @@
-$Header: /cvsroot/nco/nco/configure.eg,v 1.164 2011/04/27 04:51:31 zender Exp $ -*-Fundamental-*-
+$Header: /cvsroot/nco/nco/configure.eg,v 1.167 2013/07/25 04:43:28 zender Exp $ -*-Fundamental-*-
 
 Purpose(s):
 Track status of autobuild features for NCO
@@ -106,6 +106,17 @@ make check >> nco.make.${GNU_TRP}.foo 2>&1
 make install >> nco.make.${GNU_TRP}.foo 2>&1
 scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.make.${GNU_TRP}.foo dust.ess.uci.edu:/var/www/html/nco/rgr
 
+# bluefire 20120718 not tested yet
+export GNU_TRP=`~/nco/autobld/config.guess`
+export OBJECT_MODE='64' # AIX-specific hack
+cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
+ANTLR_INC='/contrib/antlr-2.7.7/include' C_INC='/usr/include' CC='xlc_r' CXX='xlC_r' LDFLAGS='-brtl' GSL_ROOT='/contrib/gsl-1.12' NETCDF_INC='/contrib/netcdf/4.1.3_seq/include' NETCDF_LIB='/contrib/netcdf/4.1.3_seq/include' ./configure --disable-shared --enable-optimize-custom --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
+/bin/cp -f config.log nco.config.log.${GNU_TRP}.foo
+make clean;make > nco.make.${GNU_TRP}.foo 2>&1
+make check >> nco.make.${GNU_TRP}.foo 2>&1
+make install >> nco.make.${GNU_TRP}.foo 2>&1
+scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.make.${GNU_TRP}.foo zender at dust.ess.uci.edu:/var/ftp/pub/zender/nco/rgr
+
 # bluefire
 export GNU_TRP=`~/nco/autobld/config.guess`
 export OBJECT_MODE='64' # AIX-specific hack
@@ -226,7 +237,7 @@ i686-pc-linux-gnu
 # gcc/g++ Zender uses this to install/update NCO in personal directories:
 export GNU_TRP=`~/nco/autobld/config.guess`
 cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
-CC='gcc' CXX='g++' ./configure --disable-shared --enable-netcdf4 --enable-optimize-custom --enable-udunits2 --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
+CC='gcc' CXX='g++' ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
 /bin/cp -f config.log nco.config.log.${GNU_TRP}.foo
 /bin/cp -f libtool nco.libtool.${GNU_TRP}.foo
 make clean;make > nco.make.${GNU_TRP}.foo 2>&1
@@ -295,9 +306,9 @@ gcc/g++ Developers use --enable-maintainer-mode to verify auto-tools work correc
 export GNU_TRP=`~/nco/autobld/config.guess`
 cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
 aclocal # Create aclocal.m4 from acinclude.m4
-autoheader # Create config.h.in from configure.in
+autoheader # Create config.h.in from configure.ac
 automake --foreign # Create Makefile.in from Makefile.am
-autoconf # Create ./configure from ./configure.in
+autoconf # Create ./configure from ./configure.ac
 # Debugging
 ./configure --disable-shared --enable-debug-custom --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
 # Production
diff --git a/data/Makefile.am b/data/Makefile.am
index 5c54393..1e0188c 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -1,14 +1,46 @@
-# $Header: /cvsroot/nco/nco/data/Makefile.am,v 1.9 2007/09/17 14:41:37 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/data/Makefile.am,v 1.27 2013/11/21 04:31:00 pvicente Exp $ -*-makefile-*-
 
 test_data = big.nc in.nc in_rec_zero.nc
 
+test_data_netCDF4 = in_grp.nc in_grp_1.nc in_grp_2.nc in_grp_3.nc cmip5.nc obs.nc mdl.nc mdl2.nc
+
 # netCDF build rules
 %.nc : %.cdl
-	@PATH_TO_NCGEN@ -o $@ $< 
+	- at PATH_TO_NCGEN@ -o $@ $< 
+
+in_grp.nc : in_grp.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_grp_1.nc : in_grp_1.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_grp_2.nc : in_grp_2.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_1.nc : in_1.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_2.nc : in_2.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_grp_3.nc : in_grp_3.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+cmip5.nc : cmip5.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+obs.nc : obs.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+mdl.nc : mdl.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+mdl2.nc : mdl2.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
 
-all: ${test_data}
+all: ${test_data} ${test_data_netCDF4}
 
-EXTRA_DIST = big.cdl in.cdl in_rec_zero.cdl ncap.in ncap.in2 ncap2.in tst.nco
+EXTRA_DIST = big.cdl in.cdl in_grp.cdl in_grp_1.cdl in_grp_2.cdl in_grp_3.cdl in_1.cdl in_2.cdl cmip5.cdl obs.cdl mdl.cdl buggy.cdl in_rec_zero.cdl ncap.in ncap.in2 ncap2.in tst.nco
 
 # Automake manual section 14:
 # If configure built it, 'distclean' should delete it
@@ -16,7 +48,7 @@ EXTRA_DIST = big.cdl in.cdl in_rec_zero.cdl ncap.in ncap.in2 ncap2.in tst.nco
 DISTCLEANFILES = foo*
 
 # Build procedure produces these files:
-CLEANFILES = 85.nc 86.nc 87.nc 88.nc 89.nc big.nc foo.nc h0001.nc h0002.nc h0003.nc in.nc in_rec_zero.nc ../src/nco_c++/in.nc
+CLEANFILES = 85.nc 86.nc 87.nc 88.nc 89.nc big.nc foo.nc h0001.nc h0002.nc h0003.nc in.nc in_grp.nc in_grp_1.nc in_grp_2.nc in_grp_3.nc cmip5.nc obs.nc mdl.nc mdl2.nc buggy.nc in_rec_zero.nc ../src/nco_c++/in.nc
 
 MAINTAINERCLEANFILES = Makefile.in
 
diff --git a/data/Makefile.in b/data/Makefile.in
index b747c91..067c940 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,8 +14,53 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/data/Makefile.in,v 1.60 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/data/Makefile.in,v 1.103 2013/11/24 04:05:40 zender Exp $ -*-makefile-*-
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,21 +81,43 @@ build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
 subdir = data
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -71,6 +137,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -112,6 +179,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -158,6 +226,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -191,7 +260,8 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 test_data = big.nc in.nc in_rec_zero.nc
-EXTRA_DIST = big.cdl in.cdl in_rec_zero.cdl ncap.in ncap.in2 ncap2.in tst.nco
+test_data_netCDF4 = in_grp.nc in_grp_1.nc in_grp_2.nc in_grp_3.nc cmip5.nc obs.nc mdl.nc mdl2.nc
+EXTRA_DIST = big.cdl in.cdl in_grp.cdl in_grp_1.cdl in_grp_2.cdl in_grp_3.cdl in_1.cdl in_2.cdl cmip5.cdl obs.cdl mdl.cdl buggy.cdl in_rec_zero.cdl ncap.in ncap.in2 ncap2.in tst.nco
 
 # Automake manual section 14:
 # If configure built it, 'distclean' should delete it
@@ -199,7 +269,7 @@ EXTRA_DIST = big.cdl in.cdl in_rec_zero.cdl ncap.in ncap.in2 ncap2.in tst.nco
 DISTCLEANFILES = foo*
 
 # Build procedure produces these files:
-CLEANFILES = 85.nc 86.nc 87.nc 88.nc 89.nc big.nc foo.nc h0001.nc h0002.nc h0003.nc in.nc in_rec_zero.nc ../src/nco_c++/in.nc
+CLEANFILES = 85.nc 86.nc 87.nc 88.nc 89.nc big.nc foo.nc h0001.nc h0002.nc h0003.nc in.nc in_grp.nc in_grp_1.nc in_grp_2.nc in_grp_3.nc cmip5.nc obs.nc mdl.nc mdl2.nc buggy.nc in_rec_zero.nc ../src/nco_c++/in.nc
 MAINTAINERCLEANFILES = Makefile.in
 all: all-am
 
@@ -240,11 +310,11 @@ mostlyclean-libtool:
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
 
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
 
 
 distdir: $(DISTFILES)
@@ -291,10 +361,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -378,22 +453,53 @@ uninstall-am:
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+	cscopelist-am ctags-am distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags-am uninstall uninstall-am
 
 
 # netCDF build rules
 %.nc : %.cdl
-	@PATH_TO_NCGEN@ -o $@ $< 
+	- at PATH_TO_NCGEN@ -o $@ $< 
+
+in_grp.nc : in_grp.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_grp_1.nc : in_grp_1.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_grp_2.nc : in_grp_2.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_1.nc : in_1.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_2.nc : in_2.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+in_grp_3.nc : in_grp_3.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+cmip5.nc : cmip5.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+obs.nc : obs.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+mdl.nc : mdl.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
+
+mdl2.nc : mdl2.cdl
+	- at PATH_TO_NCGEN@ -k netCDF-4 -o $@ $< 
 
-all: ${test_data}
+all: ${test_data} ${test_data_netCDF4}
 
 test: check
 
diff --git a/data/big.cdl b/data/big.cdl
index eabafdf..1f31ded 100644
--- a/data/big.cdl
+++ b/data/big.cdl
@@ -16,22 +16,22 @@
 
 // Create 4 GB file with one variable 
 // Expect failure on "small RAM" (< ~4 GB) machines:
-// ncap2 -D 3 -O -s "wvl_1e0[wvl_1e0]=1.0f" -s "wvl_1e1[wvl_1e1]=1.0f" -s "wvl_1e2[wvl_1e2]=1.0f" -s "wvl_1e3[wvl_1e3]=1.0f" -s "wvl_1e4[wvl_1e4]=1.0f" -s "wvl_1e5[wvl_1e5]=1.0f" -s "wvl_1e6[wvl_1e6]=1.0f" -s "wvl_1e7[wvl_1e7]=1.0f" -s "wvl_1e8[wvl_1e8]=1.0f" -s "wvl_1e9[wvl_1e9]=1.0f" ~/nco/data/big.nc ${DATA}/tmp/big.nc
-// ls -l ${DATA}/tmp/big.nc
+// ncap2 --64 -D 3 -O -s "wvl_1e0[wvl_1e0]=1.0f" -s "wvl_1e1[wvl_1e1]=1.0f" -s "wvl_1e2[wvl_1e2]=1.0f" -s "wvl_1e3[wvl_1e3]=1.0f" -s "wvl_1e4[wvl_1e4]=1.0f" -s "wvl_1e5[wvl_1e5]=1.0f" -s "wvl_1e6[wvl_1e6]=1.0f" -s "wvl_1e7[wvl_1e7]=1.0f" -s "wvl_1e8[wvl_1e8]=1.0f" -s "wvl_1e9[wvl_1e9]=1.0f" ~/nco/data/big.nc ${DATA}/nco_bm/big.nc
+// ls -l ${DATA}/nco_bm/big.nc
 
 // On small-RAM machines, create 4 GB file with multiple variables instead
 // This reduces peak memory usage to ~400 MB, and still tests LFS capability
-// ncap -D 3 -O -s "wvl_1e8[wvl_1e8]=1.0f" ~/nco/data/big.nc ${DATA}/tmp/big.nc
-// ncrename -D 3 -d wvl_1e8,wvl big.nc # Rename because ncecat does not do coordinate variables
+// ncap2 --64 -D 3 -O -s "wvl_1e8[wvl_1e8]=1.0f" ~/nco/data/big.nc ${DATA}/nco_bm/big.nc # Data buffer size: 400 MB
+// ncrename -D 3 -d wvl_1e8,wvl ${DATA}/nco_bm/big.nc # Rename because ncecat does not concatenate coordinate variables
 // Aggregate ten files together
-// ncecat -D 3 -O -p ${DATA}/tmp big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc ${DATA}/tmp/big.nc 
-// ls -l ${DATA}/tmp/big.nc
+// ncecat -u time -D 3 -O -p ${DATA}/nco_bm big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc ${DATA}/nco_bm/big.nc 
+// ls -l ${DATA}/nco_bm/big.nc
 
 // Test data access:
 // This is where LFS is useful
 // These commands should work on 32-bit systems with LFS support even though files exceed 2 GB
-// ncks -m -M -H ${DATA}/tmp/big.nc | m
-// ncks -H -d wvl_1e9,999999999 ${DATA}/tmp/big.nc | m
+// ncks -m -M -H ${DATA}/nco_bm/big.nc | m
+// ncks -H -d wvl_1e9,999999999 ${DATA}/nco_bm/big.nc | m
 
 // Valid CDF/netCDF files need not have any defined variable or data
 // Use ncap LHS-casting to define variables with big dimensions
diff --git a/data/buggy.cdl b/data/buggy.cdl
new file mode 100644
index 0000000..d1d3586
--- /dev/null
+++ b/data/buggy.cdl
@@ -0,0 +1,218 @@
+// -*-C++-*-
+// Purpose: CDL file to generate netCDF4 test file for known netCDF problems
+// Isolating non-working and backwards incompatible CDL usage allows in_grp.cdl
+// to parse bug-free with most modern netCDF libraries (i.e., v. 4.1.1+).
+// Examples here break on netCDF versions indicated in comments
+// Contents of this file should be migrated back to in_grp.cdl eventually
+
+// Created: 20130429 based on in_grp.cdl
+
+// Usage:
+// NB: ncgen arguments depend on version:
+// "-k netCDF-4" for netCDF >= 3.6.3, "-k hdf5" for netCDF < 3.6.3
+// "-k netCDF-4 classic model" for netCDF >= 3.6.3, "-k hdf5-nc3" for netCDF < 3.6.3
+// ncgen -k netCDF-4 -b -o ~/nco/data/buggy.nc ~/nco/data/buggy.cdl
+// scp ~/nco/data/buggy.cdl givre.ess.uci.edu:nco/data
+// scp ~/nco/data/buggy.nc dust.ess.uci.edu:/var/www/html/nco
+// scp dust.ess.uci.edu:/var/www/html/nco/buggy.nc ~/nco/data
+
+netcdf buggy {
+
+ dimensions:
+  lat=2;
+  lon=4;
+  tm2=unlimited;
+  tm3=unlimited;
+
+ variables:
+  float att_var;
+ att_var:byte_att = '\000','\001','\002','\177','\200','\201','\376','\377';
+ att_var:char_att = "Sentence one.\nSentence two.\n";
+ att_var:short_att = 37s;
+ att_var:int_att = 73;
+ att_var:float_att = 73.0f,72.0f,71.0f,70.010f,69.0010f,68.010000f,67.01000100f;
+ att_var:double_att = 73.0,72.0,71.0,70.010,69.0010,68.010000,67.01000100;
+ att_var:ubyte_att = 0ub, 1ub, 2ub, 127ub, 128ub, 254ub, 255ub, 0ub; // 20130712: ncgen 4.3.0 translates this to byte
+ att_var:ubyte2_att = '\000','\001','\002','\177','\200','\201','\376','\377'; // 20130712: ncgen 4.3.0 translates this to byte
+ att_var:ushort_att = 37us;
+ att_var:uint_att = 73u;
+ att_var:int64_att = 9223372036854775807l; // 20130712: ncgen 4.3.0 chokes on ll, LL suffix for int64 attributes, and translates -l suffixed numbers to NC_UINT64. Bug reported (netCDF #HEX-795132) and fixed in snapshot 20131117
+ att_var:uint64_att = 18446744073709551615ul; // 20130712: ncgen 4.3.0 chokes on ull, ULL suffix for uint64 attributes, 20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)
+ att_var:string_att1 = "20130723: ncgen -k netCDF-4 version 4.0.x converts quoted string to NC_STRING not NC_CHAR. Incompatible with classic behavior.";
+ att_var:string_att2 = "20130712: ncgen -k netCDF-4 version 4.2.x+ converts quoted string to NC_CHAR not NC_STRING. Backwards compatible with classic behavior.";
+  string att_var:string_att3 = "20130723: Prefixing full attribute name with \"string\" causes CDL to produce NC_STRING.";
+  string att_var:string_att4 = "20130723: Arrays of NC_STRING are simply separated by commas.","If there are commas within a string, well, then, be careful. Did we \"jump the shark\"?","This array comprises three sentences.";
+
+ string string_var2;
+ string_var2:long_name = "string-type variable with default XML separator";
+
+ float nan_arr(lat);
+ nan_arr:long_name = "Intended for array representation of IEEE NaN";
+ nan_arr:note = "20120308 Apparently netCDF ncgen chokes on variable names of nan and NaN";
+ nan_arr:note2 = "20120330 netCDF ncgen on AIX/bluefire chokes on variable/attribute values of nan";
+ nan_arr:note3 = "20120625 netCDF ncgen on netCDF 4.1.1 on apparently chokes on variable/attribute values of nan";
+ nan_arr:note4 = "If your NCO build fails because your version of netCDF does not support nan, then cd to the directory that contains the file nco/data/in.cdl and run the command in note5 first and then try to build again";
+ nan_arr:note5 = "sed -e 's/nan;/1.0f;/' in.cdl > foo.cdl;ncgen -b -o in.nc foo.cdl";
+ nan_arr:note6 = "It is too troublesome to distribute in.cdl with references to NaNs because users always build with old netCDF versions that do not support it. So just comment out nan's for now.";
+ nan_arr:_FillValue = nan;
+
+ float nan_scl;
+ nan_scl:long_name = "Intended for scalar representation of IEEE NaN";
+ nan_scl:note = "20120308 Apparently netCDF ncgen chokes on variable names of nan and NaN";
+ nan_scl:note2 = "20120330 netCDF ncgen on AIX/bluefire chokes on variable/attribute values of nan";
+ nan_scl:note3 = "20120625 netCDF ncgen on netCDF 4.1.1 on apparently chokes on variable/attribute values of nan";
+ nan_scl:note6 = "It is too troublesome to distribute in.cdl with references to NaNs because users always build with old netCDF versions that do not support it. So just comment out nan's for now.";
+ nan_scl:_FillValue = nan;
+
+  float lat_tm2(lat,tm2);
+  float lat_tm3(lat,tm3);
+  float tm2_lat(tm2,lat);
+  float tm3_lat(tm3,lat);
+
+  float tm2_tm3(tm2,tm3);
+  tm2_tm3:purpose = "a variable containing mutiple record dimensions";
+  tm2_tm3:note = "ncdump prior to snapshot 20121116 and/or release netCDF 4.3 fails to print braces required to dis-ambiguate data sizes of mutiple record dimensions";
+  tm2_tm3:note2 = "ncgen from netCDF after ~201207 fails when ambiguous syntax (without braces) is used. Catch 22. Therefore remove tm2_tm3 from test file for now.";
+
+  uint uint_var;
+  uint_var:long_name = "uint-type variable";
+  uint_var:_FillValue = 73u;
+  uint_var:purpose = "_FillValue attribute tests whether NcML parser inadvertently creates two _FillValues for unsigned types";
+    
+  uint64 uint64_var;
+ uint64_var:long_name = "uint64-type variable";
+ uint64_var:purpose="20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)";
+
+ data:
+  att_var=10.0;
+
+  // 20130127: Braces are required to disambiguate correct record dimension sizes, but brace syntax was not supported by ncgen until netCDF snapshots ~201211, i.e., post netCDF 4.2.1.1. Uggh.
+  lat_tm2={1,2},{3,4}; // NB: Unlimited dimensions (other than the first) must be enclosed in braces
+  lat_tm3={1,2,3},{4,5,6}; // NB: Unlimited dimensions (other than the first) must be enclosed in braces
+  tm2_lat=1,2,3,4; // NB: Braces forbidden when unlimited dimension is first. sizeof(tm2)=sizeof(whole)/$lat
+  tm3_lat=1,2,3,4,5,6; // NB: Braces forbidden when unlimited dimension is first. sizeof(tm2)=sizeof(whole)/$lat
+
+  tm2_tm3={1.,2.,3.},{4.,5.,6.};
+
+  string_var2="20131121: This NC_STRING contains NCO's default XML string separator, *. And it contains multiple sequential copies of that separator, ***. Be sure ncks automatically switches to a different separator, aka the backup separator, the string obtained by removing the two spaces from this:\"* | *\". As of 20131121, ncks handles this correctly, yet toolsui breaks when trying to input the ncks-generated NcML. Appears to be a toolsui bug.";
+
+  nan_arr=0,nan;
+  nan_scl=nan;
+
+   // 20130208: netCDF 4.2.1.1- fail as nc_get_var1_uint() returns -60 = NetCDF: Numeric conversion not representable on (valid) input values exceeding INT_MAX=2147483647. This was bug netCDF #PUX-602809 fixed in daily snapshot 20130210.
+   uint_var=4294967295; // UINT_MAX = 4294967295, NC_FILL_UINT is 4294967295U
+
+   uint64_var=18446744073709551615; // 20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)
+
+   // group: \1g { 
+ group: oneg { 
+    // Bug netCDF #TLO-836022 reported 20131118: ncgen fails on group names that begin with numeric characters. Response:
+    // "An identifier with a leading digit is allowed, but the leading digit must be escaped. So in your example change 1g -> \1g"
+ :att=1;
+ } // 1g
+
+ group: g1 {
+  dimensions:
+    lat=2;
+    lon=4;
+  variables:
+    double lat(lat);
+    double lon(lon);
+  data:
+    lat=-45,45;
+    lon=0,90,180,270;
+  } // /g1
+
+ group: g2 {
+  dimensions:
+    lat=3;
+    lon=3;
+  variables:
+    double lat(lat);
+    double lon(lon);
+  data:
+    lat=-60,0,60;
+    lon=0,120,240;
+  } // /g2
+
+ group: g3 {
+    dimensions:
+    lat=1;
+    lon=1;
+  variables:
+    float latlon(lat,lon);
+    // 20131120: Test whether out-of-scope dimensions can be referenced by full paths
+    // Result: They cannot
+    // float lat2lon4(/g1/lat,/g1/lon);
+    //    float lat3lon3(/g2/lat,/g2/lon);
+    //    float lat2lon3(/g1/lat,/g2/lon);
+  data:
+    latlon=1;
+    // lat2lon4=1,2,3,4,5,6,7,8;
+    // lat3lon3=1,2,3,4,5,6,7,8,9;
+    //    lat2lon3=1,2,3,4,5,6;
+  } // /g3
+
+ group: g4 {
+   variables:
+     float one;
+   data:
+     one=1;
+   } // /g4
+
+ group: g12 {
+    // Purpose: Test netCDF4 vlen type
+    // 20130208: ncgen from netCDF 4.2.1- broken for vlen types
+    // Probably broken on all snapshots until ~201211 because brace-handling broken
+  types:
+    int(*) vlen_t;
+  variables:
+    vlen_t vlen_var;
+  data:
+    vlen_var={17,18,19};
+  } // end g12
+
+ group: g13 { // Level 1
+    // Purpose: Test netCDF4 opaque type
+  types:
+    opaque(11) opaque_t;
+  } // end g13
+
+ group: g14 { // Level 1
+    // Purpose: Test netCDF4 enum type
+  types:
+    ubyte enum enum_t {Clear=0,Cumulonimbus=1,Stratus=2};
+  variables:
+    // 20130429: ncgen or ncdump from netCDF 4.1.1- broken for enum types
+    // This causes regression tests to fail with Ubuntu 12.04-
+    // enum_t cloud_flg(lon);
+  data:
+    // cloud_flg=Stratus,Stratus,Cumulonimbus;
+  } // end g14
+
+ group: g15 { // Level 1
+    // Purpose: Test netCDF4 compound type
+  types:
+    compound cmpd_t {vlen_t f1;enum_t f2;};
+  variables:
+    cmpd_t compound_var;
+  data:
+    compound_var={{3,4,5},Stratus};
+  } // end g15
+
+  //
+  //g17 
+  //ncks -O -v ts -d time,0,1 -d Latitude,40.0 -d Longitude,-105.0 http://hydro1.sci.gsfc.nasa.gov/opendap/hyrax/ncml/LPRM_AMSRE_D_SOILM3_timeSeries.ncml ~/amsre.nc
+  //
+  group: g17 { 
+    dimensions:
+    time3 = 2; 
+    maxStrlen64 = 64 ;    
+    variables:
+    char time3(time3, maxStrlen64) ;
+     time3:_CoordinateAxisType = "Time" ;
+    data:   
+    time3 = "2002-06-19T00:00:00Z","2002-06-20T00:00:00Z" ;
+ } // end  g17
+
+} // end root group
diff --git a/data/cmip5.cdl b/data/cmip5.cdl
new file mode 100644
index 0000000..f8bedf3
--- /dev/null
+++ b/data/cmip5.cdl
@@ -0,0 +1,38 @@
+// ncgen -k netCDF-4 -b -o ~/nco/data/cmip5.nc ~/nco/data/cmip5.cdl
+
+netcdf cmip5 {
+  :Conventions = "CF-1.5";
+  :history = "yada yada yada";
+  :Scenario = "RCP 8.5";
+
+  group: cesm { 
+  dimensions:
+  time=unlimited;
+  variables:
+  float tas(time);
+  :Model = "CESM";
+  data:
+  tas=272,272,272,272;
+  } // end cesm
+  
+  group: ecmwf { 
+  dimensions:
+  time=unlimited;
+  variables:
+  float tas(time);
+  :Model = "ECMWF";
+  data:
+  tas=273,273,273,273;
+  } // end ecmwf
+  
+  group: giss { 
+  dimensions:
+  time=unlimited;
+  variables:
+  float tas(time);
+  :Model = "GISS";
+  data:
+  tas=274,274,274,274;
+  } // end gfdl
+
+} // end root group
diff --git a/data/hdr_pad.sh b/data/hdr_pad.sh
new file mode 100755
index 0000000..8174a0e
--- /dev/null
+++ b/data/hdr_pad.sh
@@ -0,0 +1,78 @@
+#!/bin/csh
+
+#-------------------------------------------------------------------------
+#
+# Compute the size of extra padding in Netcdf-3 format files.
+#
+# 2012-jul-11	Original version.  By Dave Allured, NOAA/PSD/CIRES.
+# 2012-jul-12	Use faster nccopy instead of ncdump/ncgen.
+#		Thanks to Russ Rew of Unidata for the suggestion.
+# 20120713 Modified by C. Zender to check performance of NCO --hdr_pad
+
+cat > /dev/null << EOF
+cd ~/nco/data
+./hdr_pad.sh ~/nco/data/in.nc
+ncks -O -h -3 --hdr_pad 100 ~/nco/data/in.nc ~/in_3.nc
+ncks -O -h --64 --hdr_pad 100 ~/nco/data/in.nc ~/in_64.nc
+ncks -O -h -4 --hdr_pad 100 ~/nco/data/in.nc ~/in_4.nc
+./hdr_pad.sh ~/in_3.nc
+./hdr_pad.sh ~/in_64.nc
+./hdr_pad.sh ~/in_4.nc
+EOF
+
+# This method is slow and cumbersome for large files.  Also,
+# it can not separately determine the sizes of the header pad
+# and the data pad.  It should be replaced by direct parsing
+# of the Netcdf-3 data structure, should anyone ever become
+# motivated to write the necessary code.
+#
+# This method uses a temp file in the system /tmp directory.
+# This requires that there is enough free disk space in /tmp
+# for a full copy of the input file.
+#
+#-------------------------------------------------------------------------
+
+if ( $#argv != 1 ) then
+   echo Error, this command requires a single argument.
+   echo Usage: hdr_pad file.nc
+   exit 1
+endif
+
+set infile = "$1"
+set temp1 = /tmp/hdr_pad.temp.$$.nc
+
+# File diagnostics.
+
+set format = `ncdump -k "$infile"`
+set xx = $status
+
+if ( $xx != 0 ) then			# abort on ncdump error
+   exit $xx
+endif
+
+echo "File format = $format"
+
+set size1 = `ls -Ll "$infile" | tr -s ' ' | cut -f5 -d' '`
+echo "File size   = $size1"
+
+if ( "$format" == classic ) then
+   set ktype = 1
+else
+if ( "$format" == "64-bit offset" ) then
+   set ktype = 2
+else
+   echo Nothing to compute. This format does not contain any padding sections.
+   exit
+endif
+endif
+
+# Use nccopy to reconstruct the file without any padding
+
+nccopy -k $ktype "$infile" $temp1
+
+set size2 = `ls -Ll $temp1 | tr -s ' ' | cut -f5 -d' '`
+set dif = `expr $size1 - $size2`
+
+echo "Size of padding (header and data combined) = $dif bytes"
+
+/bin/rm $temp1				# clean up temp file
diff --git a/data/in.cdl b/data/in.cdl
index bafa3d5..beeac58 100644
--- a/data/in.cdl
+++ b/data/in.cdl
@@ -1,4 +1,4 @@
-// -*-c++-mode-*-
+// -*-C++-*-
 
 // Purpose: CDL file to generate netCDF test file for NCO
 
@@ -12,13 +12,15 @@
 // URL: 
 // http://dust.ess.uci.edu/nco/in.nc
 // http://dust.ess.uci.edu/nco/in_4.nc
+// http://thredds-test.ucar.edu/thredds/dodsC/testdods/in.nc
+// http://thredds-test.ucar.edu/thredds/dodsC/testdods/in_4.nc
 
 // netCDF3:
 // ncgen -b -o in.nc in.cdl
 // ncgen -b -o ${HOME}/nco/data/in.nc ${HOME}/nco/data/in.cdl
 // scp ~/nco/data/in.cdl ~/nco/data/in_4.nc dust.ess.uci.edu:nco/data
 // scp ~/nco/data/in.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/var/www/html/nco
-// scp ~/nco/data/in.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/data/home/www/html/dodsdata
+// scp ~/nco/data/in.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/var/www/html/dodsdata
 // mswrite -t 365 ~/nco/data/in.nc /ZENDER/tmp/in.nc
 // mswrite -t 365 ~/nco/data/in.nc /ZENDER/tmp/h0001.nc
 // mswrite -t 365 ~/nco/data/in.nc /ZENDER/tmp/h0002.nc
@@ -36,13 +38,15 @@
 // My (and NCO's) convention is that the _FillValue, if any, of any packed variable should be of the same type as the expanded variable. Hence _FillValue, add_offset, and scale_factor should all be of the same type. Variables that do not adhere to this convention are not supported.
 
 // CDL Data constants:
+// http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/CDL-Syntax.html
 // byte: 'a'
 // char: "a"
 // short: 1s
 // int: 1 (no decimal point)
 // float: 1.f (decimal point is required, f is required to distinguish from double)
 // double: 1.0, 1.d, 1.0e-20 (decimal point is required, d is not required)
-// 
+// CDL complex types:
+// roulee:/data/zender/tmp/netcdf-4.2.1/nc_test/ref_tst_diskless2.cdl
 
 // NCL usage:
 // id_in=addfile("/home/zender/nco/data/in.nc","r")
@@ -51,16 +55,22 @@
 
 netcdf in {
 dimensions:
-	dgn=1,bnd=2,lat=2,lat_grd=3,lev=3,rlev=3,lon=4,lon_grd=5,char_dmn_lng80=80,char_dmn_lng04=4,date_dmn=5,fl_dmn=3,lsmlev=6,wvl=2,time_udunits=3;lon_T42=128,lat_T42=64,lat_times_lon=8,gds_crd=8,vrt_nbr=2,lon_cal=10,lat_cal=10,time=unlimited;
+  dgn=1,bnd=2,lat=2,lat_grd=3,lev=3,rlev=3,lon=4,lon_grd=5,char_dmn_lng80=80,char_dmn_lng26=26,char_dmn_lng04=4,date_dmn=5,fl_dmn=3,lsmlev=6,wvl=2,time_udunits=3;lon_T42=128,lat_T42=64,lat_times_lon=8,gds_crd=8,vrt_nbr=2,lon_cal=10,lat_cal=10,Lon=4,Lat=2,time=unlimited;
 variables:
 	:Conventions = "CF-1.0";
-	:history = "History global attribute.\n";
+	:history = "History global attribute.\nAttributes like this often have embedded newlines to enhance legibility.\nSuch newlines should serve as linebreaks on the screen, hence,\nfriendly CDL converters print a single NC_CHAR attribute as a comma-separated list of strings\nwhere each embedded delimiter marks a linebreak.\nOtherwise it would be harder for humans to read the CDL.";
 	:julian_day = 200000.04;
-	:RCS_Header = "$Header: /cvsroot/nco/nco/data/in.cdl,v 1.132 2011/11/15 02:16:35 zender Exp $";
+	:RCS_Header = "$Header: /cvsroot/nco/nco/data/in.cdl,v 1.180 2013/12/02 21:03:45 zender Exp $";
 
 	int date_int(date_dmn);
 	date_int:long_name = "Date (as array of ints: YYYY,MM,DD,HH,MM)";
 
+	float dgn(dgn);
+	dgn:long_name = "degenerate coordinate (dgn means degenerate, i.e., of size 1)";
+
+	float dgn_var(dgn);
+	dgn_var:long_name = "degenerate variable (dgn means degenerate, i.e., of size 1)";
+
 	float lat(lat);
 	lat:long_name = "Latitude (typically midpoints)";
 	lat:units = "degrees_north";
@@ -138,6 +148,22 @@ variables:
 	lon:long_name = "Longitude (typically midpoints)";
 	lon:units = "degrees_east";
 
+	double Lon(Lon);
+	Lon:long_name = "Longitude";
+	Lon:units = "degrees";
+	Lon:purpose = "Longitude coordinate originally stored as -180 to 180";
+	Lon:notes = "Longitude = [-180.0,180.0) is not CF-compliant, yet is common";
+
+	double LatLon(Lat,Lon);
+	LatLon:long_name = "2D variable originally stored on -180 to 180 longitude grid";
+	LatLon:units = "fraction";
+	LatLon:purpose = "Demonstrate remapping of [-180,180) to [0,360) longitude-grid data";
+
+	double Lat(Lat);
+	Lat:long_name = "Latitude";
+	Lat:units = "degrees_north";
+	Lat:purpose = "Latitude paired with Longitude coordinate originally stored as -180 to 180.";
+
 	double lond(lon);
 	lond:long_name = "Longitude (typically midpoints), double precision";
 	lond:units = "degrees_east";
@@ -151,23 +177,46 @@ variables:
 	lon_grd:units = "degrees_east";
 
 	double time(time);
-	time: long_name = "time";
-	time: units = "days since 1964-03-12 12:09:00 -9:00"; 
-	time: calendar = "gregorian";
-	time: bounds = "time_bnds";
+	time:long_name = "time";
+	time:units = "days since 1964-03-12 12:09:00 -9:00"; 
+	time:calendar = "gregorian";
+	time:bounds = "time_bnds";
 
 	float time_bnds(time,vrt_nbr);
 	time_bnds:purpose = "Cell boundaries for time coordinate";
 
 	double lon_cal(lon_cal);
-	lon_cal: long_name = "lon_cal";
-	lon_cal: units = "days since 1964-2-28"; 
-	lon_cal: calendar = "365_day";
+	lon_cal:long_name = "lon_cal";
+	lon_cal:units = "days since 1964-2-28"; 
+	lon_cal:calendar = "365_day";
 
 	double lat_cal(lat_cal);
-	lat_cal: long_name = "lat_cal";
-	lat_cal: units = "days since 1964-2-28"; 
-	lat_cal: calendar = "360_day";
+	lat_cal:long_name = "lat_cal";
+	lat_cal:units = "days since 1964-2-28"; 
+	lat_cal:calendar = "360_day";
+
+	double tm_std;
+        tm_std:units = "days since 2013-01-01";
+
+	double tm_grg;
+        tm_grg:units = "days since 2013-01-01";
+        tm_grg:calendar = "gregorian"; // Same as "standard"
+
+	double tm_jln;
+        tm_jln:units = "days since 2013-01-01";
+        tm_jln:calendar = "julian";
+
+	double tm_360;
+        tm_360:units = "days since 2013-01-01";
+        tm_360:calendar = "360_day";
+
+	double tm_365;
+        tm_365:units = "days since 2013-01-01";
+        tm_365:calendar = "365_day"; // Same as "noleap"
+
+	double tm_366;
+        tm_366:units = "days since 2013-01-01";
+        tm_366:calendar = "366_day"; // Same as "all_leap"
 
 	float lsmlev(lsmlev);
 	lsmlev:purpose = "Homebrew level coordinate for LSM";
@@ -238,7 +287,6 @@ variables:
 	gds_var:purpose = "Test auxiliary coordinates like those that define geodesic grids";
 	gds_var:coordinates = "lat_gds lon_gds";
 
-
 	float gds_3dvar(time,gds_crd);
 	gds_3dvar:long_name = "Geodesic variable";
 	gds_3dvar:units = "meter";
@@ -254,6 +302,16 @@ variables:
 	lon_wgt:long_name = "Gaussian weights";
 	lon_wgt:purpose = "Gaussian weights which sum to two for n = 4. These weights are all have floor of 0.0 so should cause SIGFPE when applied to integer types in weighted average.";
 
+	char md5_a;
+	md5_a:long_name = "the letter a";
+	md5_a:purpose = "String with known MD5 digest"; 
+	md5_a:MD5_known_checksum = "0cc175b9c0f1b6a831c399e269772661"; 
+
+	char md5_abc(lev);
+	md5_abc:long_name = "the letters abc";
+	md5_abc:purpose = "String with known MD5 digest"; 
+	md5_abc:MD5_known_checksum = "900150983cd24fb0d6963f7d28e17f72";
+
 	float msk_prt_mss_prt(lon);
 	msk_prt_mss_prt:long_name = "partial mask, partial missing value example";
 	msk_prt_mss_prt:_FillValue = 1.0e36f;
@@ -279,6 +337,26 @@ variables:
 	fll_val_mss_val:_FillValue = -999.0f;
 	fll_val_mss_val:missing_value = -999.0f;
 
+	float nan_arr(lat);
+	nan_arr:long_name = "Intended for array representation of IEEE NaN";
+	nan_arr:note = "20120308 Apparently netCDF ncgen chokes on variable names of nan and NaN";
+	nan_arr:note2 = "20120330 netCDF ncgen on AIX/bluefire chokes on variable/attribute values of nan";
+	nan_arr:note3 = "20120625 netCDF ncgen on netCDF 4.1.1 on apparently chokes on variable/attribute values of nan";
+	nan_arr:note4 = "If your NCO build fails because your version of netCDF does not support nan, then cd to the directory that contains the file nco/data/in.cdl and run the command in note5 first and then try to build again";
+	nan_arr:note5 = "sed -e 's/nan;/1.0f;/' in.cdl > foo.cdl;ncgen -b -o in.nc foo.cdl";
+	nan_arr:note6 = "It is too troublesome to distribute in.cdl with references to NaNs because users always build with old netCDF versions that do not support it. So just comment out nan's for now.";
+	//	nan_arr:_FillValue = nan;
+		nan_arr:_FillValue = 1.0f;
+
+	float nan_scl;
+	nan_scl:long_name = "Intended for scalar representation of IEEE NaN";
+	nan_scl:note = "20120308 Apparently netCDF ncgen chokes on variable names of nan and NaN";
+	nan_scl:note2 = "20120330 netCDF ncgen on AIX/bluefire chokes on variable/attribute values of nan";
+	nan_scl:note3 = "20120625 netCDF ncgen on netCDF 4.1.1 on apparently chokes on variable/attribute values of nan";
+	nan_scl:note6 = "It is too troublesome to distribute in.cdl with references to NaNs because users always build with old netCDF versions that do not support it. So just comment out nan's for now.";
+	// nan_scl:_FillValue = nan;
+        nan_scl:_FillValue = 1.0f;
+
 	float nm_spc;
 	nm_spc:long_name = "Variable name with space (invalid)";
 
@@ -299,10 +377,28 @@ variables:
 
 	short pck;
 	pck:long_name = "Scalar variable, double, packed as short";
-	pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d.";
+	pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value (netCDF convention) should be 3.0 = 2.0d*1s + 1.0d. Unpacked value (HDF convention) should be 0.0 = 2.0d*(1s-1.0d). NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d.";
 	pck:scale_factor = 2.0d;
 	pck:add_offset = 1.0d;
 
+	short pck_3;
+	pck_3:long_name = "Scalar variable, double, packed as short";
+	pck_3:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value (netCDF convention) should be 3.0 = 2.0d*1s + 1.0d. Unpacked value (HDF convention) should be 0.0 = 2.0d*(1s-1.0d). NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d.";
+	pck_3:scale_factor = 2.0d;
+	pck_3:add_offset = 1.0d;
+
+	short pck_5;
+	pck_5:long_name = "Scalar variable, double, packed as short";
+	pck_5:note = "Original packed value was 2s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value (netCDF convention) should be 5.0 = 2.0d*2s + 1.0d. Unpacked value (HDF convention) should be 2.0 = 2.0d*(2s-1.0d). NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 5.0d.";
+	pck_5:scale_factor = 2.0d;
+	pck_5:add_offset = 1.0d;
+
+	short pck_7;
+	pck_7:long_name = "Scalar variable, double, packed as short";
+	pck_7:note = "Original packed value was 1s with scale_factor = 4.0d and add_offset = 3.0d. Unpacked value (netCDF convention) should be 7.0 = 4.0d*1s + 3.0d. Unpacked value (HDF convention) should be -8.0 = 4.0d*(1s-3.0d). NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 7.0d.";
+	pck_7:scale_factor = 4.0d;
+	pck_7:add_offset = 3.0d;
+
 	short pck_arr(lon);
 	pck_arr:long_name = "Array variable, double, packed as short";
 	pck_arr:note = "Packed value is -32767s, 0s, 1s, 32767s, unpacked is same in double";
@@ -369,6 +465,10 @@ variables:
 	int int_var;
 	int_var:long_name = "int";
 
+	long long_var;
+	long_var:long_name = "long";
+	long_var:purpose = "Variable of CDL type=long, which is deprecated for int. Included to test back-compatibility";
+
 	short short_var;
 	short_var:long_name = "short";
 
@@ -381,8 +481,9 @@ variables:
 	char char_var_nul;
 	char_var_nul:long_name = "Character variable containing one NUL";
 
-	char char_var_multinul(lev);
-	char_var_multinul:long_name = "Character variable containing multiple NULs";
+	// 20131015: This confuses the XML parser. Omit it for now.
+	// char char_var_multinul(lev);
+	// char_var_multinul:long_name = "Character variable containing multiple NULs";
 
 	char fl_nm(char_dmn_lng80);
 	fl_nm:long_name = "Variable contains a file name";
@@ -391,6 +492,14 @@ variables:
 	fl_nm_arr:long_name = "Variable that contains a short array of file names";
 	fl_nm_arr:units = "[sng]";
 
+	char fl_nm_rec(time,char_dmn_lng80);
+	fl_nm_rec:long_name = "A record variable of file names";
+	fl_nm_rec:units = "[sng]";
+
+	char date_rec(time,char_dmn_lng26);
+	date_rec:long_name = "A record variable of date strings";
+	date_rec:units = "[sng]";
+
 	char non_nul_trm_char_one_dmn(char_dmn_lng04);
 	non_nul_trm_char_one_dmn:long_name = "Variable contains a one-dimensional array of characters that is not NUL-terminated";
 	non_nul_trm_char_one_dmn:units = "[chr]";
@@ -399,6 +508,15 @@ variables:
 	non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated";
 	non_nul_trm_char_two_dmn:units = "[chr]";
 
+	byte byt_arr(lat,lon);
+	byt_arr:long_name = "byte array";
+
+	byte byt_2D(lat,lon);
+
+	byte byt_3D(lat,lev,lon);
+
+	byte byt_3D_rec(time,lat,lon);
+
 	byte byte_var;
 	byte_var:long_name = "byte";
 
@@ -462,19 +580,21 @@ variables:
 	int one_dmn_int_val_one(lat);
 	int one_dmn_int_val_two(lat);
 
-	float att_var;
+	float att_var(time);
 	att_var:byte_att = '\000','\001','\002','\177','\200','\201','\376','\377';
 	att_var:char_att = "Sentence one.\nSentence two.\n";
 	att_var:short_att = 37s;
-	att_var:int_att = 73l;
-	att_var:float_att = 73.0f,72.0f,71.0f;
-	att_var:double_att = 73.0d;
+	att_var:int_att = 73;
+	att_var:long_att = 73l;
+        att_var:float_att = 73.0f,72.0f,71.0f,70.010f,69.0010f,68.010000f,67.01000100f;
+	att_var:double_att = 73.0,72.0,71.0,70.010,69.0010,68.010000,67.01000100;
 
 	int bnd_var(lev,bnd);
 	bnd_var:byte_att = '\0';
 	bnd_var:char_att = "Sentence one.\nSentence two.\n";
 	bnd_var:short_att = 37s;
 	bnd_var:int_att = 73;
+	bnd_var:long_att = 73l;
 	bnd_var:float_att = 73.f;
 	bnd_var:double_att = 73.d;
 
@@ -638,12 +758,26 @@ variables:
 
 	int one_dmn_rec_var(time);
 	one_dmn_rec_var:long_name = "one dimensional record variable";
-	one_dmn_rec_var:units = "second";
+	one_dmn_rec_var:units = "kelvin";
+        
+	int one_dmn_rec_var_mdn(time);
+	one_dmn_rec_var_mdn:long_name = "one dimensional record variable to test median";
+        
+	int one_dmn_rec_var_mdn__FillValue(time);
+	one_dmn_rec_var_mdn__FillValue:long_name = "one dimensional record variable to test median with _FillValue";
+	one_dmn_rec_var_mdn__FillValue:_FillValue = -999;
+        
+	int one_dmn_rec_var_unsorted(time);
+	one_dmn_rec_var_unsorted:long_name = "one dimensional record variable, unsorted";
         
 	float one_dmn_rec_var_flt(time);
-	one_dmn_rec_var_flt:long_name = "one dimensional record variable";
+	one_dmn_rec_var_flt:long_name = "one dimensional record variable, single precision";
 	one_dmn_rec_var_flt:units = "second";
         
+	float one_dmn_rec_var_dbl(time);
+	one_dmn_rec_var_dbl:long_name = "one dimensional record variable, double precision";
+	one_dmn_rec_var_dbl:units = "second";
+        
 	float one_dmn_rec_var_missing_value(time);
 	one_dmn_rec_var_missing_value:long_name = "One dimensional record variable with missing data indicated by missing_value attribute only. No _FillValue attribute exists.";
 	one_dmn_rec_var_missing_value:missing_value = 1.0e36f;
@@ -652,6 +786,15 @@ variables:
 	one_dmn_rec_var__FillValue:long_name = "One dimensional record variable with missing data indicated by _FillValue attribute only. No missing_value attribute exists.";
 	one_dmn_rec_var__FillValue:_FillValue = 1.0e36f;
 
+	float one_dmn_rec_var_unsorted__FillValue(time);
+	one_dmn_rec_var_unsorted__FillValue:long_name = "Unsorted, one dimensional record variable with missing data indicated by _FillValue attribute only. No missing_value attribute exists.";
+	one_dmn_rec_var_unsorted__FillValue:_FillValue = 1.0e36f;
+
+	float one_dmn_rec_var_mss_val_arr(time);
+	one_dmn_rec_var_mss_val_arr:long_name = "One dimensional record variable with missing data indicated by a _FillValue attribute that is an array. This can be tested with ncrcat. 20120905: ncgen chokes on _FillValue arrays and produces this error: _FillValue: must be a single (possibly compound) value. Deprecate the array for normal use since it prevents ncgen from completing. Uncommment following line when testing for compatibility with software changes.";
+//	one_dmn_rec_var_mss_val_arr:_FillValue = 1,2,3;
+	one_dmn_rec_var_mss_val_arr:_FillValue = 1.0f;
+
 	int RDM(time);
         
 	float tpt(time);
@@ -659,6 +802,14 @@ variables:
 	tpt:units = "kelvin";
 	tpt:hieght = "Leave hieght mispelled for NCO User's guide example";
 
+	double tpt_dbl(time);
+	tpt_dbl:long_name = "Temperature stored as double precision floating point";
+	tpt_dbl:units = "kelvin";
+
+	float tpt_flt(time);
+	tpt_flt:long_name = "Temperature stored as single precision floating point";
+	tpt_flt:units = "kelvin";
+
 	double rec_var_dbl_mss_val_dbl_upk(time);
 	rec_var_dbl_mss_val_dbl_upk:long_name = "record variable, double, with double missing values";
 	rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its _FillValue should not be out of range, i.e., it should be representable by a short. However, the _FillValue should itself be the same type as the unpacked variable, NC_DOUBLE in this case.";
@@ -668,13 +819,17 @@ variables:
 	double rec_var_dbl_mss_val_sht_upk(time);
 	rec_var_dbl_mss_val_sht_upk:long_name = "record variable, double, with double missing values";
 	rec_var_dbl_mss_val_sht_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_sht_pck, so its _FillValue should not be out of range, i.e., it should be representable by a short. However, the _FillValue should itself be the same type as the unpacked variable, NC_DOUBLE in this case.";
-	rec_var_dbl_mss_val_sht_upk:_FillValue = -999s;
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_dbl_mss_val_sht_upk:_FillValue = -999s;
+	rec_var_dbl_mss_val_sht_upk:_FillValue = -999.0;
 	rec_var_dbl_mss_val_sht_upk:missing_value = -999s;
 
 	short rec_var_dbl_mss_val_dbl_pck(time);
 	rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, packed as short, with double missing values";
 	rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk";
-	rec_var_dbl_mss_val_dbl_pck:_FillValue = -999.;
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_dbl_mss_val_dbl_pck:_FillValue = -999.;
+	rec_var_dbl_mss_val_dbl_pck:_FillValue = -999s;
 	rec_var_dbl_mss_val_dbl_pck:missing_value = -999.;
         rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05;
         rec_var_dbl_mss_val_dbl_pck:add_offset = 5.;
@@ -731,11 +886,13 @@ variables:
 	rec_var_flt_mss_val_dbl:long_name = "record variable, float, with double missing values";
 	rec_var_flt_mss_val_dbl:_FillValue = 1.0e36f;
 	rec_var_flt_mss_val_dbl:missing_value = 1.0e36f;
-	rec_var_flt_mss_val_dbl:note = "The correct average of this variable is 5.0";
+	rec_var_flt_mss_val_dbl:note = "The correct average of this variable is 5.0. The correct sum of this variable is 35.";
 
 	float rec_var_flt_mss_val_int(time);
 	rec_var_flt_mss_val_int:long_name = "record variable, float, with integer missing values";
-	rec_var_flt_mss_val_int:_FillValue = -999;
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_flt_mss_val_int:_FillValue = -999;
+	rec_var_flt_mss_val_int:_FillValue = -999.0f;
 	rec_var_flt_mss_val_int:missing_value = -999;
 
 	int rec_var_int_mss_val_int(time);
@@ -744,18 +901,24 @@ variables:
 
 	int rec_var_int_mss_val_flt(time);
 	rec_var_int_mss_val_flt:long_name = "record variable, integer, with float missing values";
-	rec_var_int_mss_val_flt:_FillValue = -999.0f;
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_int_mss_val_flt:_FillValue = -999.0f;
+	rec_var_int_mss_val_flt:_FillValue = -999;
 	rec_var_int_mss_val_flt:missing_value = -999.0f;
 
 	int rec_var_int_mss_val_dbl(time);
 	rec_var_int_mss_val_dbl:long_name = "record variable, integer, with double missing values";
-	rec_var_int_mss_val_dbl:_FillValue = -999.0;
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_int_mss_val_dbl:_FillValue = -999.0;
+	rec_var_int_mss_val_dbl:_FillValue = -999;
 	rec_var_int_mss_val_dbl:missing_value = -999.0;
 
 	int rec_var_dbl_mss_val_dbl_pck_lng(time);
 	rec_var_dbl_mss_val_dbl_pck_lng:long_name = "record variable, double packed as long, with double missing values";
 	rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) offers considerable space savings";
-	rec_var_dbl_mss_val_dbl_pck_lng:_FillValue = -999.0;
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_dbl_mss_val_dbl_pck_lng:_FillValue = -999.0;
+	rec_var_dbl_mss_val_dbl_pck_lng:_FillValue = -999;
 	rec_var_dbl_mss_val_dbl_pck_lng:missing_value = -999.0;
         rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05;
         rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5.;
@@ -822,6 +985,7 @@ variables:
 	double time_udunits(time_udunits);
 	time_udunits:units = "hours since 1900-01-01 00:00:0.0";
 	time_udunits:delta_t = "0000-00-00 06:00:0.0";
+	time_udunits:purpose = "The dates specified in this variable are ~1999-12-08";
 
 	float u(time);
 	u:long_name = "Zonal wind speed";
@@ -847,8 +1011,8 @@ variables:
 	var_nm-dash:long_name = "Variable and attribute names include dash characters";
 	var_nm-dash:att_nm-dash = 1.0e36f;
 
-	float var_nm.dot;
-	var_nm.dot:long_name = "Variable and attribute names include dot characters";
+//	float var_nm.dot;
+//	var_nm.dot:long_name = "Variable and attribute names include dot characters";
 //	20070102: Periods in attribute names choke OPeNDAP from FC7 RPM TODO nco911
 //	20091105: Periods in attribute names choke ncgen   from RHEL5   TODO nco911
 //	var_nm.dot:att_nm.dot = 1.0e36f;
@@ -859,19 +1023,39 @@ variables:
 	wnd_spd:_FillValue = -999.0f;
 
 data:
-	att_var=10.;
+//	netCDF4-specific atomic types:
+//	None in this file
+//	netCDF3 atomic types:
+	att_var=10.0,10.1,10.20,10.3000,10.40101,10.500001,10.60000001,10.7000001,10.80,10.9900;
 	area=10.,10.;
 	area2=20.,5.;
 	area_asm=1.,2.;
 	bnd_var=1,2,3,4,5,6;
+	byt_arr=0,1,2,3,4,5,6,7;
+	byt_2D=0,1,2,3,4,5,6,7;
+	byt_3D=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23;
+	byt_3D_rec= 	 1, 2, 3, 4, 5, 6, 7, 8,
+			 9,10,11,12,13,14,15,16,
+			17,18,19,20,21,22,23,24,
+			25,26,27,28,29,30,31,32,
+  			33,34,35,36,37,38,39,40,
+			41,42,43,44,45,46,47,48,
+			49,50,51,52,53,54,55,56,
+			57,58,59,60,61,62,63,64,
+			65,66,67,68,69,70,71,72,
+			73,74,75,76,77,78,79,80;
 	byte_var='z';
 	byte_var_neg=-122;
 	char_var="z";
-	char_var_multinul="\b\n\0";
+	// 20131015: This confuses the XML parser
+	//	char_var_multinul="\b\n\0";
+	// char_var_multinul='0','\n','\0';
 	char_var_nul='\0';
 	char_var_space=" ";
 	cnv_CF_crd=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8;
 	date_int=1964,3,12,12,9;
+	dgn=73;
+	dgn_var=73;
 	double_var=10.;
 	double_var2=10.;
 	dps_dry=73;
@@ -932,24 +1116,33 @@ data:
 	lev_var=100.,500.,1000.;
 	lev_wgt=10,2,1;
 	lon=0,90,180,270;
+	Lon=-180,-90,0,90;
+	Lat=-45,45;
+	LatLon=0,1,2,3,4,5,6,7;
 	lond=0,90,180,270;
 	lonf=0,90,180,270;
 	lon_grd=-45,45,135,225,315;
 	lon_wgt=0.347855,0.652145,0.652145,0.347855;
 //	lon_T42=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127;
 	lon_T42=0.000000,2.812500,5.625000,8.437500,11.250000,14.062500,16.875000,19.687500,22.500000,25.312500,28.125000,30.937500,33.750000,36.562500,39.375000,42.187500,45.000000,47.812500,50.625000,53.437500,56.250000,59.062500,61.875000,64.687500,67.500000,70.312500,73.125000,75.937500,78.750000,81.562500,84.375000,87.187500,90.000000,92.812500,95.625000,98.437500,101.250000,104.062500,106.875000,109.687500,112.500000,115.312500,118.125000,120.937500,123.750000,126.562500,129.375000,132.18 [...]
-	mask=0.,1.,0.,0.,1.,1.,0.,2.;
 	var_msk=0.,1.,0.,0.,1.,1.,0.,2.;
 	ORO=0.,1.,0.,0.,1.,1.,0.,2.;
+	mask=0.,1.,0.,0.,1.,1.,0.,2.;
 //	mask=0.,0.,0.,0.,0.,0.,0.,0.;
 //	mask=1.,1.,1.,1.,1.,1.,1.,1.;
 	fll_val=73,-999,73,-999;
 	fll_val_mss_val=73,-999,73,-999;
+	md5_a="a";
+	md5_abc="abc";
 	msk_prt_mss_prt=0.5,1.0e36,1.5,1.0e36;
 	mss_val=73,1.0e36,73,1.0e36;
 	mss_val_all=1.0e36,1.0e36,1.0e36,1.0e36;
 	mss_val_fst=-999,73,-999,73;
 	mss_val_scl=1.0e36;
+	//	nan_arr=0,nan;
+	nan_arr=0,73;
+//	nan_scl=nan;
+	nan_scl=1;
 	negative_one=-1.;
 	nm_pnd=1;
 	nm_spc=1;
@@ -958,15 +1151,23 @@ data:
 	non_nul_trm_char_two_dmn="abcd","efgh","ijkm";
 	one=1.;
 	one_dmn_rec_var=1,2,3,4,5,6,7,8,9,10;
+	one_dmn_rec_var_unsorted=10,4,6,2,8,1,9,7,3,5;
 	one_dmn_rec_var_flt=1,2,3,4,5,6,7,8,9,10;
+	one_dmn_rec_var_dbl=1,2,3,4,5,6,7,8,9,10;
 	one_dmn_rec_var_missing_value=1,2,3,4,5,6,7,8,9,1.0e36;
 	one_dmn_rec_var__FillValue=1,2,3,4,5,6,7,8,9,1.0e36;
+	one_dmn_rec_var_unsorted__FillValue=1.0e36,4,6,2,8,1,9,7,3,5;
+	one_dmn_rec_var_mdn=1,1,2,2,2,2,10,10,10,10;
+	one_dmn_rec_var_mdn__FillValue=1,-999,2,2,-999,-999,10,10,10,-999;
 	RDM=1,9,36,84,126,126,84,36,9,1;
 	one_dmn_rec_var_sng="Hello Wor";
 	one_dmn_var=1.,10.;
 	one_dmn_int_val_one=1,1;
 	one_dmn_int_val_two=2,2;
 	pck=1;
+	pck_3=1;
+	pck_5=2;
+	pck_7=1;
 	rec_var_pck_scale_factor_only=1,2,3,4,5,6,7,8,9,10;
 	pck_arr=-32767,0,1,32767;
 	pi=3.1415926535897932384626433832795029;
@@ -1112,8 +1313,16 @@ data:
 	three_dmn_var_crd=0.,1.,2.,3.,12.,13.,14.,15.,4.,5.,6.,7.,16.,17.,18.,19.,8.,9.,10.,11.,20.,21.,22.,23.;
 	time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
 	time_bnds=0.5,1.5,1.5,2.5,2.5,3.5,3.5,4.5,4.5,5.5,5.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5;
+	tm_std=59;
+	tm_grg=59;
+	tm_jln=59;
+	tm_360=59;
+	tm_365=59;
+	tm_366=59;
 	od=20,22,24,26,28,30,32,34,36,38;
 	tpt=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8,273.9,274.0;
+	tpt_flt=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8,273.9,274.0;
+	tpt_dbl=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8,273.9,274.0;
 	two=2.;
 	two_dmn_var=1.5,5.5,9.5,13.5,17.5,21.5;
 	u=1.,0.,1.,0.,1.,0.,1.,0.,1.,0.;
@@ -1126,7 +1335,7 @@ data:
 	val_one_mss_int=1,-99;
 	val_one_one_int=1,1;
 	var_nm-dash=1.0;
-	var_nm.dot=1.0;
+//	var_nm.dot=1.0;
 	var_1D_rct=0.,1.,0.,0.,1.,1.,0.,2.;
 	var_1D_rrg=0.,1.,0.,0.,1.,1.,0.,2.;
 	var_2D_rct=0.,1.,0.,0.,1.,1.,0.,2.;
@@ -1139,10 +1348,31 @@ data:
 // 	        date=640312,640313,640314,640315,640316,640317,640318,640319,640320,640321;
 	date=640224,640225,640226,640227,640228,640301,640302,640303,640304,640305;
  	int_var=10;
+ 	long_var=10;
  	nbdate=640224;
 	fl_nm_arr="/data/zender/dstccm04/dstccm04_8589_01.nc",
 		"/data/zender/dstccm04/dstccm04_8589_02.nc",
 		"/data/zender/dstccm04/dstccm04_8589_03.nc";
+	fl_nm_rec="/data/zender/dstccm04/dstccm04_8589_01.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_02.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_03.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_04.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_05.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_06.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_07.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_08.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_09.nc",
+	  "/data/zender/dstccm04/dstccm04_8589_10.nc";
+	date_rec="2010-11-01T00:00:00.000000",
+	  "2010-11-01T01:00:00.000000",
+	  "2010-11-01T02:00:00.000000",
+	  "2010-11-01T03:00:00.000000",
+	  "2010-11-01T04:00:00.000000",
+	  "2010-11-01T05:00:00.000000",
+	  "2010-11-01T06:00:00.000000",
+	  "2010-11-01T07:00:00.000000",
+	  "2010-11-01T08:00:00.000000",
+	  "2010-11-01T09:00:00.000000";
 	time_lon=0.0,90.0,180.0,270.0,
 			0.0,90.0,180.0,270.0,
 			0.0,90.0,180.0,270.0,
diff --git a/data/in_1.cdl b/data/in_1.cdl
new file mode 100644
index 0000000..5bb04b1
--- /dev/null
+++ b/data/in_1.cdl
@@ -0,0 +1,14 @@
+// Purpose: Pair of (different) files for 2 input file operators; pair of files are in_1.cdl and in_2.cdl
+// Generate netCDF files with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_1.nc ~/nco/data/in_1.cdl
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_2.nc ~/nco/data/in_2.cdl
+
+netcdf in_1 {
+  dimensions:
+  lat1=2;
+  lon1=4;
+  variables:
+  float var1(lat1,lon1);
+  data:
+  var1=1,1,1,1,1,1,1,1;
+} // end root group
\ No newline at end of file
diff --git a/data/in_2.cdl b/data/in_2.cdl
new file mode 100644
index 0000000..9f8bcb4
--- /dev/null
+++ b/data/in_2.cdl
@@ -0,0 +1,15 @@
+// Purpose: Generate a group file structure with common and non-common objects; pair of files are in_grp_1.cdl and in_grp_2.cdl
+// Purpose: Pair of (different) files for 2 input file operators; pair of files are in_1.cdl and in_2.cdl
+// Generate netCDF files with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_1.nc ~/nco/data/in_1.cdl
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_2.nc ~/nco/data/in_2.cdl
+
+netcdf in_2 {
+  dimensions:
+  lon1=4;
+  variables:
+  float var1(lon1);
+  data:
+  var1=0,0,0,0;
+} // end root group
+
diff --git a/data/in_4.cdl b/data/in_4.cdl
index acf43c6..9f5daa8 100644
--- a/data/in_4.cdl
+++ b/data/in_4.cdl
@@ -1,16 +1,29 @@
+// -*-c++-mode-*-
+
 // Purpose: CDL file to generate netCDF4 test file
+
 // 20070513: Currently ncgen does not support netCDF4 types
-// Test var int64_var below is commented out until ncgen supports it
+// 20120726: ncgen does support netCDF4 types
 
 // Usage:
-// NB: ncgen arguments depend on version:
+// netCDF4: ncgen arguments depend on version:
 // "-k netCDF-4" for netCDF >= 3.6.3, "-k hdf5" for netCDF < 3.6.3
 // "-k netCDF-4 classic model" for netCDF >= 3.6.3, "-k hdf5-nc3" for netCDF < 3.6.3
 // /usr/local/bin/ncgen -k netCDF-4 -b -o in_4.nc in_4.cdl
 // /usr/local/bin/ncgen -k netCDF-4 -b -o ${HOME}/nco/data/in_4.nc ${HOME}/nco/data/in_4.cdl
-// scp ~/nco/data/in_4.cdl esmf.ess.uci.edu:nco/data
-// scp ~/nco/data/in_4.nc dust.ess.uci.edu:/var/www/html/nco
-// scp dust.ess.uci.edu:/var/www/html/nco/in_4.nc ~/nco/data
+
+// URL: 
+// http://dust.ess.uci.edu/nco/in.nc
+// http://dust.ess.uci.edu/nco/in_4.nc
+// http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc
+// http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in_4.nc
+
+// netCDF3:
+// ncgen -b -o in_4.nc in_4.cdl
+// ncgen -b -o ${HOME}/nco/data/in_4.nc ${HOME}/nco/data/in_4.cdl
+// scp ~/nco/data/in_4.cdl ~/nco/data/in_4.nc dust.ess.uci.edu:nco/data
+// scp ~/nco/data/in_4.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/var/www/html/nco
+// scp ~/nco/data/in_4.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/data/home/www/html/dodsdata
 // mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/in_4.nc
 // mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/h0001.nc
 // mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/h0002.nc
@@ -25,9 +38,9 @@
 // WARNING: Changing values of variables below, especially coordinate variables, affects outcome of nco_tst.pl test script
 // Other programs, e.g., ~/f/fff.F90, ~/c++/ccc.cc, ~/c/c.c may also break
 // In particular, do not change number of elements in record coordinate, time, without simultaneously changing number of data in all record variables
-// My convention is that the _FillValue, if any, of any packed variable should be of the same type as the expanded variable. Hence _FillValue, add_offset, and scale_factor should all be of the same type. Variables that do not adhere to this convention are not supported.
+// My (and NCO's) convention is that the _FillValue, if any, of any packed variable should be of the same type as the expanded variable. Hence _FillValue, add_offset, and scale_factor should all be of the same type. Variables that do not adhere to this convention are not supported.
 
-// Data constants in CDL:
+// CDL Data constants:
 // byte: 'a'
 // char: "a"
 // short: 1s
@@ -42,16 +55,56 @@
 
 netcdf in {
 dimensions:
-	dgn=1,bnd=2,lat=2,lat_grd=3,lev=3,rlev=3,lon=4,lon_grd=5,char_dmn_lng80=80,char_dmn_lng04=4,fl_dmn=3,lsmlev=6,wvl=2,time_udunits=3;lon_T42=128,lat_T42=64,lat_times_lon=8,time=unlimited;
+	dgn=1,bnd=2,lat=2,lat_grd=3,lev=3,rlev=3,lon=4,lon_grd=5,char_dmn_lng80=80,char_dmn_lng04=4,date_dmn=5,fl_dmn=3,lsmlev=6,wvl=2,time_udunits=3;lon_T42=128,lat_T42=64,lat_times_lon=8,gds_crd=8,vrt_nbr=2,lon_cal=10,lat_cal=10,time=unlimited;
 variables:
 	:Conventions = "CF-1.0";
-	:history = "History global attribute.\n";
+	:history = "History global attribute.\nAttributes like this often have embedded newlines to enhance legibility.\nSuch newlines should serve as linebreaks on the screen, hence,\nfriendly CDL converters print a single NC_CHAR attribute as a comma-separated list of strings\nwhere each embedded delimiter marks a linebreak.\nOtherwise it would be harder for humans to read the CDL.";
 	:julian_day = 200000.04;
-	:RCS_Header = "$Header: /cvsroot/nco/nco/data/in_4.cdl,v 1.9 2011/04/20 16:59:08 zender Exp $";
+	:RCS_Header = "$Header: /cvsroot/nco/nco/data/in_4.cdl,v 1.23 2013/11/24 23:05:44 zender Exp $";
+	string :sng_att = "Test global string attribute"; // 20130723 This is how to specify global string attributes
+
+//	netCDF4-only atomic types
+	int64 int64_var;
+	int64_var:long_name = "int64-type variable";
+
+	string string_var;
+	string_var:long_name = "string-type variable";
+
+        string string_var2;
+        string_var2:long_name = "string-type variable with default XML separator";
+
+	string string_arr_var(lon);
+	string_arr_var:long_name = "arrays of string-types";
+
+	ubyte ubyte_var;
+	ubyte_var:long_name = "ubyte-type variable";
+
+	uint uint_var;
+	uint_var:long_name = "uint-type variable";
+
+	uint64 uint64_var;
+	uint64_var:long_name = "uint64-type variable";
+
+	ushort ushort_var;
+	ushort_var:long_name = "ushort-type variable";
+
+//	netCDF3 atomic types:
+	int date_int(date_dmn);
+	date_int:long_name = "Date (as array of ints: YYYY,MM,DD,HH,MM)";
+
+	float dgn(dgn);
+	dgn:long_name = "degenerate coordinate (dgn means degenerate, i.e., of size 1)";
+
+	float dgn_var(dgn);
+	dgn_var:long_name = "degenerate variable (dgn means degenerate, i.e., of size 1)";
 
 	float lat(lat);
 	lat:long_name = "Latitude (typically midpoints)";
 	lat:units = "degrees_north";
+	lat:bounds = "lat_bnd";
+
+	float lat_bnd(lat,vrt_nbr);
+	lat_bnd:purpose = "Cell boundaries for lat coordinate";
 
 	float lat_grd(lat_grd);
 	lat_grd:long_name = "Latitude grid (typically interfaces)";
@@ -112,6 +165,9 @@ variables:
 	lev:PS_var = "PS";
 	lev:bounds = "ilev";
 
+	float ilev(lev,vrt_nbr);
+	ilev:purpose = "Cell boundaries for lev coordinate";
+
 	float rlev(rlev);
 	rlev:purpose = "Monotonically decreasing coordinate pressure";
 
@@ -132,6 +188,24 @@ variables:
 	lon_grd:units = "degrees_east";
 
 	double time(time);
+	time: long_name = "time";
+	time: units = "days since 1964-03-12 12:09:00 -9:00"; 
+	time: calendar = "gregorian";
+	time: bounds = "time_bnds";
+
+	float time_bnds(time,vrt_nbr);
+	time_bnds:purpose = "Cell boundaries for time coordinate";
+
+	double lon_cal(lon_cal);
+	lon_cal: long_name = "lon_cal";
+	lon_cal: units = "days since 1964-2-28"; 
+	lon_cal: calendar = "365_day";
+
+	double lat_cal(lat_cal);
+	lat_cal: long_name = "lat_cal";
+	lat_cal: units = "days since 1964-2-28"; 
+	lat_cal: calendar = "360_day";
+
 	float lsmlev(lsmlev);
 	lsmlev:purpose = "Homebrew level coordinate for LSM";
 	lsmlev:long_name = "Soil depth";
@@ -140,6 +214,20 @@ variables:
 	wvl:long_name = "Wavelength";
 	wvl:units = "meter";
 
+	int od(time);
+
+	float area(lat);
+	area:long_name = "area";
+	area:units = "meter2";
+
+	float area2(lat);
+	area2:long_name = "area version 2";
+	area2:units = "meter2";
+
+	float area_asm(lat);
+	area_asm:long_name = "area asymmetric";
+	area_asm:units = "meter2";
+
 	float hyam(lev);
 	hyam:long_name = "hybrid A coefficient at layer midpoints";
 
@@ -150,9 +238,10 @@ variables:
 	P0:long_name = "reference pressure";
 	P0:units = "pascal";
 
-	float cnv_CF_crd;
-	cnv_CF_crd:long_name = "Variable to test CF coordinates conventions";
-	cnv_CF_crd:coordinates = "lat lon";
+	float cnv_CF_crd(gds_crd);
+	cnv_CF_crd:long_name = "test CF coordinates conventions";
+	cnv_CF_crd:coordinates = "lat_gds lon_gds ";
+	cnv_CF_crd:reason = "Test whether coordinates attribute strings that end with a space break after nco_var_lst_crd_ass_add() call to nco_lst_prs_2d()";
 
 	float PS(time,lat,lon);
 	PS:long_name = "surface pressure";
@@ -162,15 +251,56 @@ variables:
 	fl_dmn:long_name = "Character coordinate";
 	fl_dmn:units = "[chr]";
 
+	double lat_gds(gds_crd);
+	lat_gds:long_name = "Latitude";  
+	lat_gds:standard_name = "latitude";
+	lat_gds:units="degree";
+	lat_gds:purpose = "1-D latitude coordinate referred to by geodesic grid variables";
+
+	double lon_gds(gds_crd);
+	lon_gds:long_name = "Longitude";
+	lon_gds:standard_name = "longitude";
+	lon_gds:units="degree";
+	lon_gds:purpose = "1-D longitude coordinate referred to by geodesic grid variables";
+
+	float gds_crd(gds_crd);
+	gds_crd:long_name = "Geodesic coordinate";
+	gds_crd:units = "degree";
+	gds_crd:purpose = "enumerated coordinate like those that might define points in a geodesic grid";
+	gds_crd:coordinates = "lat_gds lon_gds";
+
+	float gds_var(gds_crd);
+	gds_var:long_name = "Geodesic variable";
+	gds_var:units = "meter";
+	gds_var:purpose = "Test auxiliary coordinates like those that define geodesic grids";
+	gds_var:coordinates = "lat_gds lon_gds";
+
+
+	float gds_3dvar(time,gds_crd);
+	gds_3dvar:long_name = "Geodesic variable";
+	gds_3dvar:units = "meter";
+	gds_3dvar:coordinates = "lat_gds lon_gds";
+	gds_3dvar:purpose = "Test auxiliary coordinates like those that define geodesic grids";
+
 	int nbdate;
-	nbdate:long_name = "base date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)";
+	nbdate:long_name = "base date as 6- or 8-digit integer (YYMMDD or YYYYMMDD)";
 	int date(time);
-	date:long_name = "current date as 6 or 8 digit integer (YYMMDD or YYYYMMDD)";
+	date:long_name = "current date as 6- or 8-digit integer (YYMMDD or YYYYMMDD)";
 
 	float lon_wgt(lon);
 	lon_wgt:long_name = "Gaussian weights";
 	lon_wgt:purpose = "Gaussian weights which sum to two for n = 4. These weights are all have floor of 0.0 so should cause SIGFPE when applied to integer types in weighted average.";
 
+	char md5_a;
+	md5_a:long_name = "the letter a";
+	md5_a:purpose = "String with known MD5 digest"; 
+	md5_a:MD5 = "0cc175b9c0f1b6a831c399e269772661"; 
+
+	char md5_abc(lev);
+	md5_abc:long_name = "the letters abc";
+	md5_abc:purpose = "String with known MD5 digest"; 
+	md5_abc:MD5 = "900150983cd24fb0d6963f7d28e17f72";
+
 	float msk_prt_mss_prt(lon);
 	msk_prt_mss_prt:long_name = "partial mask, partial missing value example";
 	msk_prt_mss_prt:_FillValue = 1.0e36f;
@@ -191,6 +321,31 @@ variables:
 	fll_val:long_name = "_FillValue example";
 	fll_val:_FillValue = -999.0f;
 
+	float fll_val_mss_val(lon);
+	fll_val_mss_val:long_name = "_FillValue example";
+	fll_val_mss_val:_FillValue = -999.0f;
+	fll_val_mss_val:missing_value = -999.0f;
+
+	float nan_arr(lat);
+	nan_arr:long_name = "Intended for array representation of IEEE NaN";
+	nan_arr:note = "20120308 Apparently netCDF ncgen chokes on variable names of nan and NaN";
+	nan_arr:note2 = "20120330 netCDF ncgen on AIX/bluefire chokes on variable/attribute values of nan";
+	nan_arr:note3 = "20120625 netCDF ncgen on netCDF 4.1.1 on apparently chokes on variable/attribute values of nan";
+	nan_arr:note4 = "If your NCO build fails because your version of netCDF does not support nan, then cd to the directory that contains the file nco/data/in.cdl and run the command in note5 first and then try to build again";
+	nan_arr:note5 = "sed -e 's/nan;/1.0f;/' in.cdl > foo.cdl;ncgen -b -o in.nc foo.cdl";
+	nan_arr:note6 = "It's too hard to distribute in.cdl with any reference to NaNs because users always build with old netCDF that does not support it. So just comment out nan's for now.";
+//	nan_arr:_FillValue = nan;
+	nan_arr:_FillValue = 1.0f;
+
+	float nan_scl;
+	nan_scl:long_name = "Intended for scalar representation of IEEE NaN";
+	nan_scl:note = "20120308 Apparently netCDF ncgen chokes on variable names of nan and NaN";
+	nan_scl:note2 = "20120330 netCDF ncgen on AIX/bluefire chokes on variable/attribute values of nan";
+	nan_scl:note3 = "20120625 netCDF ncgen on netCDF 4.1.1 on apparently chokes on variable/attribute values of nan";
+	nan_scl:note6 = "It's too hard to distribute in.cdl with any reference to NaNs because users always build with old netCDF that does not support it. So just comment out nan's for now.";
+//	nan_scl:_FillValue = nan;
+	nan_scl:_FillValue = 1.0f;
+
 	float nm_spc;
 	nm_spc:long_name = "Variable name with space (invalid)";
 
@@ -204,14 +359,19 @@ variables:
 	val_one_mss:long_name = "one regular value, one missing value";
 	val_one_mss:_FillValue = 1.0e36f;
 
+	short rec_var_pck_scale_factor_only(time);
+	rec_var_pck_scale_factor_only:long_name = "Array packed with scale factor only";
+	rec_var_pck_scale_factor_only:note = "Original packed value was 1s..10s with scale_factor = 10.0d no add_offset. Unpacked value should be 10.0 = 10.0d*1s + 0.0d through 100 = 10.0d*1s + 0.0d. Average value should be 55.";
+	rec_var_pck_scale_factor_only:scale_factor = 10.0d;
+
 	short pck;
-	pck:long_name = "Packed scalar variable";
+	pck:long_name = "Scalar variable, double, packed as short";
 	pck:note = "Original packed value was 1s with scale_factor = 2.0d and add_offset = 1.0d. Unpacked value should be 3.0 = 2.0d*1s + 1.0d. NCO algorithms would pack this variable as scale_factor = 0.0d and add_offset = 3.0d.";
 	pck:scale_factor = 2.0d;
 	pck:add_offset = 1.0d;
 
 	short pck_arr(lon);
-	pck_arr:long_name = "Packed array";
+	pck_arr:long_name = "Array variable, double, packed as short";
 	pck_arr:note = "Packed value is -32767s, 0s, 1s, 32767s, unpacked is same in double";
 	pck_arr:scale_factor = 1.0d;
 	pck_arr:add_offset = 0.0d;
@@ -269,12 +429,13 @@ variables:
 	double_var2:long_name = "double";
 	double_var2:_FillValue = 1.0e36;
 
+	double pi;
+	pi:long_name = "Pi";
+	pi:units = "fraction";
+
 	int int_var;
 	int_var:long_name = "int";
 
-	int64 int64_var;
-	int64_var:long_name = "int_64";
-
 	short short_var;
 	short_var:long_name = "short";
 
@@ -287,8 +448,9 @@ variables:
 	char char_var_nul;
 	char_var_nul:long_name = "Character variable containing one NUL";
 
-	char char_var_multinul(lev);
-	char_var_multinul:long_name = "Character variable containing multiple NULs";
+	// 20131015: This confuses the XML parser. Omit it for now.
+	// char char_var_multinul(lev);
+	// char_var_multinul:long_name = "Character variable containing multiple NULs";
 
 	char fl_nm(char_dmn_lng80);
 	fl_nm:long_name = "Variable contains a file name";
@@ -305,9 +467,6 @@ variables:
 	non_nul_trm_char_two_dmn:long_name = "Variable contains a two-dimensional array of characters that are not NUL-terminated";
 	non_nul_trm_char_two_dmn:units = "[chr]";
 
-	ubyte ubyte_var;
-	ubyte_var:long_name = "ubyte";
-
 	byte byte_var;
 	byte_var:long_name = "byte";
 
@@ -347,6 +506,15 @@ variables:
 	float g;
 	g:long_name = "g";
 
+	float dps_dry;
+	dps_dry:long_name = "Dry Deposition";
+
+	float dps_wet;
+	dps_wet:long_name = "Wet Deposition";
+
+	float dps_ttl;
+	dps_ttl:long_name = "Total Deposition";
+
 	float z(lev);
 	z:long_name = "Height";
 	z:units = "meter";
@@ -362,13 +530,26 @@ variables:
 	int one_dmn_int_val_one(lat);
 	int one_dmn_int_val_two(lat);
 
-	float att_var;
+	float att_var(time);
 	att_var:byte_att = '\000','\001','\002','\177','\200','\201','\376','\377';
 	att_var:char_att = "Sentence one.\nSentence two.\n";
+	att_var:char_att2 = "Character string containing default XML separator: *|*\n";
 	att_var:short_att = 37s;
-	att_var:int_att = 73l;
-	att_var:float_att = 73.0f,72.0f,71.0f;
-	att_var:double_att = 73.0d;
+	att_var:int_att = 73;
+        att_var:float_att = 73.0f,72.0f,71.0f,70.010f,69.0010f,68.010000f,67.01000100f;
+	att_var:double_att = 73.0,72.0,71.0,70.010,69.0010,68.010000,67.01000100;
+	att_var:ubyte_att = 0ub, 1ub, 2ub, 127ub, 128ub, 254ub, 255ub, 0ub; // 20130712: ncgen 4.3.0 translates this to byte
+	att_var:ubyte2_att = '\000','\001','\002','\177','\200','\201','\376','\377'; // 20130712: ncgen 4.3.0 translates this to byte
+	att_var:ushort_att = 37us;
+	att_var:uint_att = 73u;
+	att_var:int64_att = 9223372036854775807l; // 20130712: ncgen 4.3.0 chokes on ll, LL suffix for int64 attributes, and translates -l suffixed numbers to NC_UINT64. Bug reported (netCDF #HEX-795132) and fixed in snapshot 20131117
+//	att_var:uint64_att = 18446744073709551615ul; // 20130712: ncgen 4.3.0 chokes on ull, ULL suffix for uint64 attributes. 20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)
+	att_var:uint64_att = 0ul;
+	att_var:string_att1 = "20130723: ncgen -k netCDF-4 version 4.0.x converts quoted string to NC_STRING not NC_CHAR. Incompatible with classic behavior.";
+	att_var:string_att2 = "20130712: ncgen -k netCDF-4 version 4.2.x+ converts quoted string to NC_CHAR not NC_STRING. Backwards compatible with classic behavior.";
+	string att_var:string_att3 = "20130723: Prefixing full attribute name with \"string\" causes CDL to produce NC_STRING.";
+	string att_var:string_att4 = "20130723: Arrays of NC_STRING are simply separated by commas.","If there are commas within a string, well, then, be careful. Did we \"jump the shark\"?","This array comprises three elements. Each is a sentence or three long.";
+	string att_var:string_att5 = "20131121: This NC_STRING contains NCO's default XML string separator, *. And it contains multiple sequential copies of that separator, ***. Be sure ncks automatically switches to a different separator, aka the backup separator, the string obtained by removing the two spaces from this:\"* | *\".";
 
 	int bnd_var(lev,bnd);
 	bnd_var:byte_att = '\0';
@@ -390,6 +571,11 @@ variables:
 	prs_sfc:long_name = "Surface pressure";
 	prs_sfc:units = "pascal";
 
+	float H2O;
+	float H2OH2O;
+	float H2SO4;
+	float H2O_lqd;
+	float H2O_ice;
 	float Q;
 	float Q1;
 	float AQ01;
@@ -534,7 +720,21 @@ variables:
 	int one_dmn_rec_var(time);
 	one_dmn_rec_var:long_name = "one dimensional record variable";
 	one_dmn_rec_var:units = "second";
-
+        
+	float one_dmn_rec_var_flt(time);
+	one_dmn_rec_var_flt:long_name = "one dimensional record variable";
+	one_dmn_rec_var_flt:units = "second";
+        
+	float one_dmn_rec_var_missing_value(time);
+	one_dmn_rec_var_missing_value:long_name = "One dimensional record variable with missing data indicated by missing_value attribute only. No _FillValue attribute exists.";
+	one_dmn_rec_var_missing_value:missing_value = 1.0e36f;
+
+	float one_dmn_rec_var__FillValue(time);
+	one_dmn_rec_var__FillValue:long_name = "One dimensional record variable with missing data indicated by _FillValue attribute only. No missing_value attribute exists.";
+	one_dmn_rec_var__FillValue:_FillValue = 1.0e36f;
+
+	int RDM(time);
+        
 	float tpt(time);
 	tpt:long_name = "Temperature";
 	tpt:units = "kelvin";
@@ -542,16 +742,41 @@ variables:
 
 	double rec_var_dbl_mss_val_dbl_upk(time);
 	rec_var_dbl_mss_val_dbl_upk:long_name = "record variable, double, with double missing values";
-	rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its _FillValue should not be too far out of range, i.e., it should be representable by a short. However, the _FillValue should itself be the same type as the unpacked variable, NC_DOUBLE in this case.";
+	rec_var_dbl_mss_val_dbl_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_dbl_pck, so its _FillValue should not be out of range, i.e., it should be representable by a short. However, the _FillValue should itself be the same type as the unpacked variable, NC_DOUBLE in this case.";
 	rec_var_dbl_mss_val_dbl_upk:_FillValue = -999.;
+	rec_var_dbl_mss_val_dbl_upk:missing_value = -999.;
+
+	double rec_var_dbl_mss_val_sht_upk(time);
+	rec_var_dbl_mss_val_sht_upk:long_name = "record variable, double, with double missing values";
+	rec_var_dbl_mss_val_sht_upk:purpose = "This variable is used to generate the packed variable rec_var_dbl_mss_val_sht_pck, so its _FillValue should not be out of range, i.e., it should be representable by a short. However, the _FillValue should itself be the same type as the unpacked variable, NC_DOUBLE in this case.";
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_dbl_mss_val_sht_upk:_FillValue = -999s;
+	rec_var_dbl_mss_val_sht_upk:_FillValue = -999.0;
+	rec_var_dbl_mss_val_sht_upk:missing_value = -999s;
 
 	short rec_var_dbl_mss_val_dbl_pck(time);
-	rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, with double missing values, packed";
+	rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, packed as short, with double missing values";
 	rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk";
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_dbl_mss_val_dbl_pck:_FillValue = -999.;
 	rec_var_dbl_mss_val_dbl_pck:_FillValue = -999s;
 	rec_var_dbl_mss_val_dbl_pck:missing_value = -999.;
         rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05;
-        rec_var_dbl_mss_val_dbl_pck:add_offset = 5. ;
+        rec_var_dbl_mss_val_dbl_pck:add_offset = 5.;
+
+	short rec_var_dbl_mss_val_sht_pck(time);
+	rec_var_dbl_mss_val_sht_pck:long_name = "record variable, double, packed as short, with short missing values";
+	rec_var_dbl_mss_val_sht_pck:purpose = "Packed version of rec_var_dbl_mss_val_sht_upk";
+	rec_var_dbl_mss_val_sht_pck:_FillValue = -999s;
+	rec_var_dbl_mss_val_sht_pck:missing_value = -999s;
+        rec_var_dbl_mss_val_sht_pck:scale_factor = -9.15541313801785e-05;
+        rec_var_dbl_mss_val_sht_pck:add_offset = 5.;
+
+	short scl_dbl_pck;
+	scl_dbl_pck:long_name = "scalar variable, double, packed";
+	scl_dbl_pck:purpose = "Packed version of number with ncdiff subtraction bug";
+        scl_dbl_pck:scale_factor = -9.15541313801785e-05;
+        scl_dbl_pck:add_offset = 5.;
 
 	float rec_var_flt_mss_val_flt(time);
 	rec_var_flt_mss_val_flt:long_name = "record variable, float, with float missing values";
@@ -570,25 +795,33 @@ variables:
 	rec_var_flt_mss_val_flt_all_but_two:_FillValue = 1.0e36f;
 
 	short rec_var_flt_pck(time);
-	rec_var_flt_pck:long_name = "record variable, float, packed";
+	rec_var_flt_pck:long_name = "record variable, float, packed into short";
         rec_var_flt_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly";
         rec_var_flt_pck:scale_factor = 0.1f;
         rec_var_flt_pck:add_offset = 100.0f;
 
 	short rec_var_dbl_pck(time);
-	rec_var_dbl_pck:long_name = "record variable, double, packed";
+	rec_var_dbl_pck:long_name = "record variable, double, packed into short";
         rec_var_dbl_pck:purpose = "Demonstrate that rounding of means of packed data are handled correctly";
         rec_var_dbl_pck:scale_factor = 0.1;
-        rec_var_dbl_pck:add_offset = 100.0;
+	rec_var_dbl_pck:add_offset = 100.0;
+	
+	short non_rec_var_flt_pck(lon);
+	non_rec_var_flt_pck:long_name = "regular variable, float, packed into short";
+        non_rec_var_flt_pck:purpose = "Demonstrate that non-rec dim packed vars are handled correctly";
+        non_rec_var_flt_pck:scale_factor = 0.1f;
+        non_rec_var_flt_pck:add_offset = 100.0f;
 
 	float rec_var_flt_mss_val_dbl(time);
 	rec_var_flt_mss_val_dbl:long_name = "record variable, float, with double missing values";
 	rec_var_flt_mss_val_dbl:_FillValue = 1.0e36f;
-	rec_var_flt_mss_val_dbl:missing_value = 1.0e36;
-	rec_var_flt_mss_val_dbl:note = "The correct average of this variable is 5.0";
+	rec_var_flt_mss_val_dbl:missing_value = 1.0e36f;
+	rec_var_flt_mss_val_dbl:note = "The correct average of this variable is 5.0. The correct sum of this variable is 35.";
 
 	float rec_var_flt_mss_val_int(time);
 	rec_var_flt_mss_val_int:long_name = "record variable, float, with integer missing values";
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_flt_mss_val_int:_FillValue = -999;
 	rec_var_flt_mss_val_int:_FillValue = -999.0f;
 	rec_var_flt_mss_val_int:missing_value = -999;
 
@@ -598,21 +831,27 @@ variables:
 
 	int rec_var_int_mss_val_flt(time);
 	rec_var_int_mss_val_flt:long_name = "record variable, integer, with float missing values";
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_int_mss_val_flt:_FillValue = -999.0f;
 	rec_var_int_mss_val_flt:_FillValue = -999;
 	rec_var_int_mss_val_flt:missing_value = -999.0f;
 
 	int rec_var_int_mss_val_dbl(time);
 	rec_var_int_mss_val_dbl:long_name = "record variable, integer, with double missing values";
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_int_mss_val_dbl:_FillValue = -999.0;
 	rec_var_int_mss_val_dbl:_FillValue = -999;
 	rec_var_int_mss_val_dbl:missing_value = -999.0;
 
 	int rec_var_dbl_mss_val_dbl_pck_lng(time);
 	rec_var_dbl_mss_val_dbl_pck_lng:long_name = "record variable, double packed as long, with double missing values";
-	rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) is still a considerable cost savings";
+	rec_var_dbl_mss_val_dbl_pck_lng:purpose = "although not usual, packing doubles into longs (rather than shorts) offers considerable space savings";
+//	Using intended _FillValue type breaks ncgen (with "_FillValue type mismatch")in netCDF 4.1.1 so comment-out for simplicity
+//	rec_var_dbl_mss_val_dbl_pck_lng:_FillValue = -999.0;
 	rec_var_dbl_mss_val_dbl_pck_lng:_FillValue = -999;
 	rec_var_dbl_mss_val_dbl_pck_lng:missing_value = -999.0;
-        rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05 ;
-        rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5. ;
+        rec_var_dbl_mss_val_dbl_pck_lng:scale_factor = -9.15541313801785e-05;
+        rec_var_dbl_mss_val_dbl_pck_lng:add_offset = 5.;
 
 	char one_dmn_rec_var_sng(time);
 	one_dmn_rec_var_sng:long_name = "one dimensional record variable of string";
@@ -634,17 +873,22 @@ variables:
 	double three_dmn_var_dbl(time,lat,lon);
 	three_dmn_var_dbl:long_name = "three dimensional record variable of type double";
 	three_dmn_var_dbl:units = "watt meter-2";
-	three_dmn_var_dbl:_FillValue = -99. ;
+	three_dmn_var_dbl:_FillValue = -99.;
 
 	int three_dmn_var_int(time,lat,lon);
 	three_dmn_var_int:long_name = "three dimensional record variable of type int";
 	three_dmn_var_int:units = "watt meter-2";
-	three_dmn_var_int:_FillValue = -99 ;
+	three_dmn_var_int:_FillValue = -99;
 	
 	short three_dmn_var_sht(time,lat,lon);
 	three_dmn_var_sht:long_name = "three dimensional record variable";
 	three_dmn_var_sht:units = "watt meter-2";
-	three_dmn_var_sht:_FillValue = -99s ;
+	three_dmn_var_sht:_FillValue = -99s;
+
+	int th(time,lat,lon);
+	th:long_name = "three dimensional record variable";
+	th:units = "watt meter-2";
+	th:_FillValue = -99;
 
 	float td(time,dgn);
 	td:long_name = "two dimensional record variable stored in td (time,dgn) order (dgn means degenerate, i.e., of size 1)";
@@ -671,6 +915,7 @@ variables:
 	double time_udunits(time_udunits);
 	time_udunits:units = "hours since 1900-01-01 00:00:0.0";
 	time_udunits:delta_t = "0000-00-00 06:00:0.0";
+	time_udunits:purpose = "The dates specified in this variable are ~1999-12-08";
 
 	float u(time);
 	u:long_name = "Zonal wind speed";
@@ -698,37 +943,83 @@ variables:
 
 	float var_nm.dot;
 	var_nm.dot:long_name = "Variable and attribute names include dot characters";
-	var_nm.dot:att_nm.dot = 1.0e36f;
+//	20070102: Periods in attribute names choke OPeNDAP from FC7 RPM TODO nco911
+//	20091105: Periods in attribute names choke ncgen   from RHEL5   TODO nco911
+//	var_nm.dot:att_nm.dot = 1.0e36f;
+
+	float wnd_spd(time,lat,lon);
+	wnd_spd:long_name = "wind speed";
+	wnd_spd:units = "meter second-1";
+	wnd_spd:_FillValue = -999.0f;
 
 data:
-	att_var=10.;
-	bnd_var=1,2,3,4,5,6;
+//	netCDF4-specific atomic types:
+	int64_var=9223372036854775807;
+	string_var="If you prick us, do we not bleed? If you tickle us, do we not laugh? If you poison us, do we not die? And if you wrong us, shall we not revenge?";
+	string_arr_var="20130723: Arrays of NC_STRING are simply separated by commas.","If there are commas within a string, well, then, be careful. Did we \"jump the shark\"?","This array comprises three sentences.","Woops, I mean four.";
+	string_var2="20131121: This NC_STRING contains NCO's default XML string separator, *. And it contains multiple sequential copies of that separator, ***. Be sure ncks automatically switches to a different separator, aka the backup separator, the string obtained by removing the two spaces from this:\"* | *\". As of 20131121, ncks handles this correctly, yet toolsui breaks when trying to input the ncks-generated NcML. Appears to be a toolsui bug.";
+
 	ubyte_var='z';
+	uint_var=4294967295;
+//	uint64_var = 18446744073709551615; // 20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)
+	uint64_var=0;
+	ushort_var=65535;
+
+//	netCDF3 atomic types:
+	att_var=10.0,10.1,10.20,10.3000,10.40101,10.500001,10.60000001,10.7000001,10.80,10.9900;
+	area=10.,10.;
+	area2=20.,5.;
+	area_asm=1.,2.;
+	bnd_var=1,2,3,4,5,6;
 	byte_var='z';
 	byte_var_neg=-122;
 	char_var="z";
-	char_var_multinul="\b\n\0";
+	// 20131015: This confuses the XML parser
+	//	char_var_multinul="\b\n\0";
+	// char_var_multinul='0','\n','\0';
 	char_var_nul='\0';
 	char_var_space=" ";
-	cnv_CF_crd=1.0;
- 	date=640312,640313,640314,640315,640316,640317,640318,640319,640320,640321;
+	cnv_CF_crd=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8;
+	date_int=1964,3,12,12,9;
+	dgn=73;
+	dgn_var=73;
 	double_var=10.;
 	double_var2=10.;
+	dps_dry=73;
+	dps_wet=73;
+	dps_ttl=73;
 	e_dbl=2.71828182846;
 	e_flt=2.71828182846;
-	fl_dmn="a","b","3";
-	fl_nm="/home/zender/nco/data/in_4.cdl";
+// 	20100809: Single quotes around NC_CHAR coordinates required as of 4.1.2-beta1-snapshot2010080820
+// 	20100809: Double quotes cause "String constant too long" error in ncgen
+	fl_dmn='a','b','3';
+	fl_nm="/home/zender/nco/data/in.cdl";
 	float_var=10.;
-	fll_val=73,-999,73,-999;
 	four=4.;
 	g=9.8;
 	gw=10.,10.;
 	gw_T42=-87.863799,-85.096527,-82.312913,-79.525607,-76.736900,-73.947515,-71.157752,-68.367756,-65.577607,-62.787352,-59.997020,-57.206632,-54.416200,-51.625734,-48.835241,-46.044727,-43.254195,-40.463648,-37.673090,-34.882521,-32.091944,-29.301360,-26.510769,-23.720174,-20.929574,-18.138971,-15.348365,-12.557756,-9.767146,-6.976534,-4.185921,-1.395307,1.395307,4.185921,6.976534,9.767146,12.557756,15.348365,18.138971,20.929574,23.720174,26.510769,29.301360,32.091944,34.882521,37.673090, [...]
 	hyam=0.0802583,0.0438226,0.0;
 	hybm=0.0187849,0.457453,0.992528;
- 	int_var=10;
- 	int64_var=10;
+	P0=100000;
+	gds_crd=0,1,2,3,4,5,6,7;
+	gds_var=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8;
+	gds_3dvar=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8,
+	          274.1,274.2,274.3,274.4,274.5,274.6,274.7,274.8,
+	          275.1,275.2,275.3,275.4,275.5,274.5,275.7,275.8,
+	          276.1,276.2,276.3,276.4,276.5,276.5,276.7,276.8,
+	          277.1,277.2,277.3,277.4,277.5,277.5,277.7,277.8,
+	          278.1,278.2,278.3,278.4,278.5,278.6,278.7,278.8,
+	          279.1,279.2,279.3,279.4,279.5,279.9,279.7,279.8,
+	          280.1,280.2,280.3,280.4,280.5,280.9,280.7,280.8,
+	          281.1,281.2,281.3,281.4,281.5,281.9,281.7,281.8,
+	          282.1,282.2,282.3,282.4,282.5,282.9,282.7,282.8;
+	lat_gds=-90, -30,  -30,    0,   0, 30,  30,  90;
+	lon_gds=  0,   0,  180,    0, 180,  0, 180,   0;
 	lat=-90,90;
+	lat_bnd=-90,0,0,90;
+        lat_cal=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+	lon_cal=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
 	lat_times_lon=0,1,2,3,4,5,6,7;
 	lat_times_lon_nbr=8;
 	lat_1D_rct=-90, -90,  -90,  -90,  90, 90,  90,  90;
@@ -747,6 +1038,7 @@ data:
 	lat_T42=-88.240089,-85.092445,-82.311981,-79.525253,-76.736732,-73.947418,-71.157700,-68.367722,-65.577576,-62.787331,-59.997005,-57.206619,-54.416191,-51.625729,-48.835236,-46.044724,-43.254192,-40.463646,-37.673088,-34.882519,-32.091942,-29.301357,-26.510769,-23.720173,-20.929573,-18.138969,-15.348364,-12.557755,-9.767145,-6.976533,-4.185921,-1.395307,1.395307,4.185921,6.976533,9.767145,12.557755,15.348364,18.138969,20.929573,23.720173,26.510769,29.301357,32.091942,34.882519,37.673088 [...]
 	lsmlev=0.05,0.1,0.2,0.5,1.0,3.0;
 	lev=100,500,1000;
+	ilev=0,300,300,750,750,1013.25;
 	lev_cpy=100,500,1000;
 	lev_var=100.,500.,1000.;
 	lev_wgt=10,2,1;
@@ -758,32 +1050,50 @@ data:
 //	lon_T42=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127;
 	lon_T42=0.000000,2.812500,5.625000,8.437500,11.250000,14.062500,16.875000,19.687500,22.500000,25.312500,28.125000,30.937500,33.750000,36.562500,39.375000,42.187500,45.000000,47.812500,50.625000,53.437500,56.250000,59.062500,61.875000,64.687500,67.500000,70.312500,73.125000,75.937500,78.750000,81.562500,84.375000,87.187500,90.000000,92.812500,95.625000,98.437500,101.250000,104.062500,106.875000,109.687500,112.500000,115.312500,118.125000,120.937500,123.750000,126.562500,129.375000,132.18 [...]
 	mask=0.,1.,0.,0.,1.,1.,0.,2.;
+	var_msk=0.,1.,0.,0.,1.,1.,0.,2.;
+	ORO=0.,1.,0.,0.,1.,1.,0.,2.;
 //	mask=0.,0.,0.,0.,0.,0.,0.,0.;
 //	mask=1.,1.,1.,1.,1.,1.,1.,1.;
+	fll_val=73,-999,73,-999;
+	fll_val_mss_val=73,-999,73,-999;
+	md5_a="a";
+	md5_abc="abc";
 	msk_prt_mss_prt=0.5,1.0e36,1.5,1.0e36;
 	mss_val=73,1.0e36,73,1.0e36;
 	mss_val_all=1.0e36,1.0e36,1.0e36,1.0e36;
 	mss_val_fst=-999,73,-999,73;
 	mss_val_scl=1.0e36;
- 	nbdate=640312;
+//	nan_arr=1,nan;
+	nan_arr=1,73;
+//	nan_scl=nan;
+	nan_scl=1;
 	negative_one=-1.;
 	nm_pnd=1;
 	nm_spc=1;
 	no_mss_val=73,1.0e36,73,1.0e36;
 	non_nul_trm_char_one_dmn='a','b';
 	non_nul_trm_char_two_dmn="abcd","efgh","ijkm";
-	ORO=0.,1.,0.,0.,1.,1.,0.,2.;
 	one=1.;
 	one_dmn_rec_var=1,2,3,4,5,6,7,8,9,10;
+	one_dmn_rec_var_flt=1,2,3,4,5,6,7,8,9,10;
+	one_dmn_rec_var_missing_value=1,2,3,4,5,6,7,8,9,1.0e36;
+	one_dmn_rec_var__FillValue=1,2,3,4,5,6,7,8,9,1.0e36;
+	RDM=1,9,36,84,126,126,84,36,9,1;
 	one_dmn_rec_var_sng="Hello Wor";
 	one_dmn_var=1.,10.;
 	one_dmn_int_val_one=1,1;
 	one_dmn_int_val_two=2,2;
-	P0=100000;
 	pck=1;
+	rec_var_pck_scale_factor_only=1,2,3,4,5,6,7,8,9,10;
 	pck_arr=-32767,0,1,32767;
+	pi=3.1415926535897932384626433832795029;
 	upk=3.;
 	upk_arr=-32767.,0.,1.,32767.;
+	H2O=1.0;
+	H2OH2O=1.0;
+	H2SO4=1.0;
+	H2O_lqd=1.0;
+	H2O_ice=1.0;
 	Q=1.0e36;
 	Q1=1.0e36;
 	AQ01=1.0e36;
@@ -890,30 +1200,36 @@ data:
 	Q98=98;
 	Q99=99;
 	Q100=100;
+	non_rec_var_flt_pck=1,2,3,4;
 	rec_var_dbl=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
-	rec_var_flt=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
-	rec_var_flt_pck=1,2,3,4,5,6,7,8,9,10;
-	rec_var_dbl_pck=1,2,3,4,5,6,7,8,9,10;
 	rec_var_dbl_mss_val_dbl_pck=-999,32767,21845,10922,0,-10922,-21845,-32767,-999,-999;
+	rec_var_dbl_mss_val_dbl_pck_lng=-999,32767,21845,10922,0,-10922,-21845,-32767,-999,-999;
 	rec_var_dbl_mss_val_dbl_upk=-999.,2.,3.,4.,5.,6.,7.,8.,-999.,-999.;
+	rec_var_dbl_mss_val_sht_pck=-999,32767,21845,10922,0,-10922,-21845,-32767,-999,-999;
+	rec_var_dbl_mss_val_sht_upk=-999.,2.,3.,4.,5.,6.,7.,8.,-999.,-999.;
+	rec_var_dbl_pck=1,2,3,4,5,6,7,8,9,10;
+	rec_var_flt=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
 	rec_var_flt_mss_val_dbl=1.0e36,2.,3.,4.,5.,6.,7.,8.,1.0e36,1.0e36;
 	rec_var_flt_mss_val_flt=1.0e36,2.,3.,4.,5.,6.,7.,8.,1.0e36,1.0e36;
 	rec_var_flt_mss_val_flt_all=1.0e36,1.0e36,1.0e36,1.0e36,1.0e36,1.0e36,1.0e36,1.0e36,1.0e36,1.0e36;
 	rec_var_flt_mss_val_flt_all_but_one=1.0e36,1.0e36,1.0e36,1.0e36,5.0,1.0e36,1.0e36,1.0e36,1.0e36,1.0e36;
 	rec_var_flt_mss_val_flt_all_but_two=1.0e36,1.0e36,1.0e36,1.0e36,5.0,1.0e36,1.0e36,1.0e36,1.0e36,10.0;
 	rec_var_flt_mss_val_int=-999.,2.,3.,4.,5.,6.,7.,8.,-999.,-999.;
-	rec_var_int_mss_val_int=-999,2,3,4,5,6,7,8,-999,-999;
-	rec_var_int_mss_val_flt=-999,2,3,4,5,6,7,8,-999,-999;
-	rec_var_dbl_mss_val_dbl_pck_lng=-999,32767,21845,10922,0,-10922,-21845,-32767,-999,-999;
+	rec_var_flt_pck=1,2,3,4,5,6,7,8,9,10;
 	rec_var_int_mss_val_dbl=-999,2,3,4,5,6,7,8,-999,-999;
+	rec_var_int_mss_val_flt=-999,2,3,4,5,6,7,8,-999,-999;
+	rec_var_int_mss_val_int=-999,2,3,4,5,6,7,8,-999,-999;
 	rlev=1000,500,100;
 	rz=0,5000,17000;
+	scl_dbl_pck=10922;
 	scalar_var=10.;
 	short_var=10;
 	three=3.;
 	three_dmn_var=0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.,21.,22.,23.;
 	three_dmn_var_crd=0.,1.,2.,3.,12.,13.,14.,15.,4.,5.,6.,7.,16.,17.,18.,19.,8.,9.,10.,11.,20.,21.,22.,23.;
 	time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+	time_bnds=0.5,1.5,1.5,2.5,2.5,3.5,3.5,4.5,4.5,5.5,5.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5,9.5,10.5;
+	od=20,22,24,26,28,30,32,34,36,38;
 	tpt=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8,273.9,274.0;
 	two=2.;
 	two_dmn_var=1.5,5.5,9.5,13.5,17.5,21.5;
@@ -926,7 +1242,6 @@ data:
 	val_one_mss=1.,1.0e36;
 	val_one_mss_int=1,-99;
 	val_one_one_int=1,1;
-	var_msk=0.,1.,0.,0.,1.,1.,0.,2.;
 	var_nm-dash=1.0;
 	var_nm.dot=1.0;
 	var_1D_rct=0.,1.,0.,0.,1.,1.,0.,2.;
@@ -938,6 +1253,10 @@ data:
 	wvl=0.5e-6,1.0e-6;
 	z=17000,5000,0;
 	zero=0.;
+// 	        date=640312,640313,640314,640315,640316,640317,640318,640319,640320,640321;
+	date=640224,640225,640226,640227,640228,640301,640302,640303,640304,640305;
+ 	int_var=10;
+ 	nbdate=640224;
 	fl_nm_arr="/data/zender/dstccm04/dstccm04_8589_01.nc",
 		"/data/zender/dstccm04/dstccm04_8589_02.nc",
 		"/data/zender/dstccm04/dstccm04_8589_03.nc";
@@ -1031,6 +1350,16 @@ data:
 				57,58,59,-99,61,62,63,64,
 				65,66,67,68,69,70,71,72,
 				-99,-99,-99,-99,-99,-99,-99,-99;
+	th=			1, 2, 3, 4, 5, 6, 7, 8,
+				9,10,11,12,13,14,15,16,
+			  	17,18,19,20,21,22,23,24,
+			  	-99,-99,-99,-99,-99,-99,-99,-99,
+			  	33,34,35,36,37,38,39,40,
+			  	41,42,43,44,45,46,47,48,
+			  	49,50,51,52,53,54,55,56,
+			  	-99,58,59,60,61,62,63,64,
+			  	65,66,67,68,69,70,71,72,
+			 	-99,74,75,76,77,78,79,-99;
 	four_dmn_rec_var= 	  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,
 				 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
 				 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
@@ -1104,6 +1433,16 @@ data:
 //				-99.5,74.5,75.5,76.5,77.5,78.5,79.5,-99.5;
 				
 	time_udunits = 876012, 876018, 876024;
+	wnd_spd=		-999,0.5,1.5,0.5,1.5,0.5,1.5,0.5,
+				0.5,-999,0.5,0.5,0.5,0.5,0.5,0.5,
+				0.5,1.5,-999,1.5,0.5,1.5,0.5,1.5,
+				0.5,0.5,0.5,-999,0.5,0.5,0.5,0.5,
+  				1.5,1.5,1.5,1.5,-999,1.5,1.5,1.5,
+				0.5,0.5,0.5,0.5,0.5,-999,0.5,0.5,
+				2.5,2.5,2.5,2.5,2.5,2.5,-999,2.5,
+				0.5,0.5,0.5,0.5,0.5,0.5,0.5,-999,
+				0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,
+				0.5,0.5,2.5,0.5,0.5,2.5,0.5,0.5;
 }
 
 
diff --git a/data/in_grp.cdl b/data/in_grp.cdl
index 309b0e7..9926db2 100644
--- a/data/in_grp.cdl
+++ b/data/in_grp.cdl
@@ -2,111 +2,376 @@
 // Purpose: CDL file to generate netCDF4 test file for groups
 // Created: 20110801 based on in.cdl
 
-// Test var int64_var below is commented out until ncgen supports it
-
 // Usage:
 // NB: ncgen arguments depend on version:
 // "-k netCDF-4" for netCDF >= 3.6.3, "-k hdf5" for netCDF < 3.6.3
 // "-k netCDF-4 classic model" for netCDF >= 3.6.3, "-k hdf5-nc3" for netCDF < 3.6.3
-// /usr/local/bin/ncgen -k netCDF-4 -b -o ~/in_grp.nc ${HOME}/nco/data/in_grp.cdl
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_grp.nc ~/nco/data/in_grp.cdl
 // scp ~/nco/data/in_grp.cdl givre.ess.uci.edu:nco/data
 // scp ~/nco/data/in_grp.nc dust.ess.uci.edu:/var/www/html/nco
 // scp dust.ess.uci.edu:/var/www/html/nco/in_grp.nc ~/nco/data
-// mswrite -t 365 ~/nco/data/in_grp.nc /ZENDER/tmp/in_grp.nc
-// mswrite -t 365 ~/nco/data/in_grp.nc /ZENDER/tmp/h0001.nc
-// mswrite -t 365 ~/nco/data/in_grp.nc /ZENDER/tmp/h0002.nc
-// mswrite -t 365 ~/nco/data/in_grp.nc /ZENDER/tmp/h0003.nc
-// mswrite -t 365 ~/nco/data/in_grp.nc /ZENDER/tmp/h0004.nc
-// msrcp -period 365 ~/nco/data/in_grp.nc mss:/ZENDER/tmp/in_grp.nc
-// msrcp -period 365 ~/nco/data/in_grp.nc mss:/ZENDER/tmp/h0001.nc
-// msrcp -period 365 ~/nco/data/in_grp.nc mss:/ZENDER/tmp/h0002.nc
-// msrcp -period 365 ~/nco/data/in_grp.nc mss:/ZENDER/tmp/h0003.nc
-// msrcp -period 365 ~/nco/data/in_grp.nc mss:/ZENDER/tmp/h0004.nc
-
-// WARNING: Changing values of variables below, especially coordinate variables, affects outcome of nco_tst.pl test script
-// Other programs, e.g., ~/f/fff.F90, ~/c++/ccc.cc, ~/c/c.c may also break
-// In particular, do not change number of elements in record coordinate, time, without simultaneously changing number of data in all record variables
-// My convention is that the _FillValue, if any, of any packed variable should be of the same type as the expanded variable. Hence _FillValue, add_offset, and scale_factor should all be of the same type. Variables that do not adhere to this convention are not supported.
-
-// Data constants in CDL:
+
+// URL: 
+// http://dust.ess.uci.edu/nco/in_grp.nc
+// http://thredds-test.ucar.edu/thredds/dodsC/testdods/in_grp.nc
+
+// CDL Data constants:
 // byte: 'a'
 // char: "a"
 // short: 1s
 // int: 1 (no decimal point)
 // float: 1.f (decimal point is required, f is required to distinguish from double)
 // double: 1.0, 1.d, 1.0e-20 (decimal point is required, d is not required)
+// CDL complex types:
+// man ncgen describes all
+// roulee:/data/zender/tmp/netcdf-4.2.1/nc_test/ref_tst_diskless2.cdl
 
 // NCL usage:
 // id_in=addfile("/home/zender/nco/data/in_grp.nc","r")
 // print(id_in)
 // list_filevars(id_in)
+// ncks --get_file_info  ~/nco/data/in_grp.nc
+
+//NOTE: Must be tested with 
+//ncks --lbr
+//Linked to netCDF library version 4.1.1, compiled Nov  7 2011 11:35:16
 
 netcdf in_grp {
-dimensions:
-	lat=2,lev=3,lon=4,time=unlimited;
-variables:
-	:Conventions = "CF-1.0";
-	:history = "History global attribute.\n";
-	:julian_day = 200000.04;
-	:RCS_Header = "$Header: /cvsroot/nco/nco/data/in_grp.cdl,v 1.6 2011/08/23 19:47:46 zender Exp $";
-
-	float lat(lat);
-	lat:long_name = "Latitude (typically midpoints)";
-	lat:units = "degrees_north";
-
-	float lev(lev);
-	lev:purpose = "Monotonically increasing coordinate pressure";
-	lev:units = "hybrid_sigma_pressure";
-	lev:positive = "down";
-	lev:A_var = "hyam";
-	lev:B_var = "hybm";
-	lev:P0_var = "P0";
-	lev:PS_var = "PS";
-	lev:bounds = "ilev";
-
-	float lon(lon);
-	lon:long_name = "Longitude (typically midpoints)";
-	lon:units = "degrees_east";
-
-	double time(time);
-data:
-	lat=-90,90;
-	lev=100,500,1000;
-	lon=0,90,180,270;
-	time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
-
-group: level_1_group_1 { 
-      variables:
-	double time(time);
-	float lat(lat);
-	float lev(lev);
-	float lon(lon);
-	lon:long_name = "level_1_group_1 Longitude (typically midpoints)";
-	lon:units = "level_1_group_1 degrees_east";
-      data:
-	lat=-90,90;
-	lev=100,500,1000;
-	lon=0,90,180,270;
-	time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
-} // end level_1_group_1
-
-group: level_1_group_2 { 
-      variables:
-	double time(time);
-      data:
-	time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
-} // end level_1_group_2
-
-group: level_1_group_3 {
-	dimensions:
-	  rlev=3,time2=unlimited;
-	variables:
-	  :level_1_group_3_global_attribute = "level_1_group_3_global_attribute";
-	  float rz(rlev);
-	  double time2(time2);
-	data:
-	  time2=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15.,16.,17.,18.,19.,20.;
-	  rz=0,5000,17000;
-} // end level_1_group_3
+
+ dimensions:
+  lat=2;
+  lev=3;
+  lon=4;
+  time=unlimited; 
+  vrt_nbr=2;
+  gds_crd=8;
+  
+ variables:
+  double time(time);
+  
+  float lat(lat);
+  lat:units = "degrees_north";
+  
+  float lon(lon);
+  lon:units = "degrees_east";
+  
+  float lev(lev);
+  lev:units = "hybrid_sigma_pressure";
+  lev:bounds = "ilev";
+   
+  float ilev(lev,vrt_nbr);
+  ilev:purpose = "Cell boundaries for lev coordinate"; 
+  
+  float area(lat);
+  area:units = "meter2";
+
+  float one;
+  
+  float scl;
+  
+  integer unique;
+  unique:purpose = "the only variable of this name in this file, to test smallest possible access requests"; 
+  
+  float lat_lon(lat,lon);
+  
+  //global attributes
+  :Conventions = "CF-1.0";
+  :history = "History global attribute.\n";
+  :julian_day = 200000.04;
+  :RCS_Header = "$Header: /cvsroot/nco/nco/data/in_grp.cdl,v 1.110 2013/11/24 23:05:44 zender Exp $";
+  
+ data:
+  area=10.,10.;
+  lat=-90,90;
+  lat_lon=1.,2.,3.,4.,5.,6.,7.,8;
+  ilev=0,300,300,750,750,1013.25;
+  lev=100,500,1000;
+  lon=0,90,180,270;
+  one=1.;
+  scl=1.0;
+  time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+  unique=73;
+  //
+  //g1
+  //
+ group: g1 { 
+  :history = "History group attribute.\n";
+  variables:
+  
+    //coordinate variable (/lon)
+    float lon(lon);
+    lon:units = "degrees_east";
+    float scl;
+    int g1v1;
+    int v1;
+  data:
+    lon=0,90,180,270;
+    scl=1.1;
+    g1v1=1;
+    v1=1;  
+  group: g1g1 { 
+    variables:
+      float scl;
+      int v1;
+    data:
+      scl=1.11;
+      v1=11;
+    } // end g1g1
+  group: g1\:g2 {
+      :purpose = "group name with semi-special character, a colon (makes CDL-parsing hard)";
+      :csznote = "As of 20131006, ncks skips groups whose names contain special characters. ncdump handles them fine. e.g.,\nncgen -k netCDF-4 -b -o ~/nco/data/in_grp.nc ~/nco/data/in_grp.cdl\nncks --cdl -m -g g1 ~/nco/data/in_grp.nc | m\nncdump -h -g g1 ~/nco/data/in_grp.nc | m\n";
+    } // end g1:g2
+  } // end g1
+  
+  //
+  //g2
+  //
+ group: g2 { 
+  variables:
+    //coordinate variable (dimension at root)
+    double time(time);
+    float scl;
+  data:
+    time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+    scl=1.2;
+  } // end g2
+  
+  //
+  //g4
+  //
+ group: g4 { 
+  variables:
+    int one_dmn_rec_var(time);
+	one_dmn_rec_var:long_name = "one dimensional record variable";
+	one_dmn_rec_var:units = "kelvin";
+  data:
+    one_dmn_rec_var=1,2,3,4,5,6,7,8,9,10;  
+  } // end g4
+  
+  //
+  //g6
+  //
+ group: g6 { // Level 1
+  variables:
+    float area(lat);
+    float area1(lat);
+  data:
+    area=20.,30.;
+    area1=21.,31.;
+  group: g6g1 { // Level 2
+    variables:
+      float area(lat);
+    data:
+      area=40.,50.;
+    } //end g6g1
+  } // end g6
+  
+  //
+  //g7
+  //
+ group: g7 { 
+  variables:
+  
+    //coordinate variable (/g7/gds_crd)
+    float gds_crd(gds_crd);
+    gds_crd:long_name = "Geodesic coordinate";
+    gds_crd:units = "degree";
+    gds_crd:purpose = "enumerated coordinate like those that might define points in a geodesic grid";
+    gds_crd:coordinates = "lat_gds lon_gds";
+  
+    double lat_gds(gds_crd);
+    lat_gds:units="degree";
+    lat_gds:long_name = "Latitude";  
+    lat_gds:standard_name = "latitude";
+    lat_gds:units="degree";
+    lat_gds:purpose = "1-D latitude coordinate referred to by geodesic grid variables";
+    
+    double lon_gds(gds_crd);
+    lon_gds:long_name = "Longitude";
+    lon_gds:standard_name = "longitude";
+    lon_gds:units="degree";
+    lon_gds:purpose = "1-D longitude coordinate referred to by geodesic grid variables";
+    
+  data:
+    gds_crd=0,1,2,3,4,5,6,7;
+    lat_gds=-90, -30,  -30,    0,   0, 30,  30,  90;
+    lon_gds=  0,   0,  180,    0, 180,  0, 180,   0;
+    
+     group: g7g1 { // Level 2  
+     variables:       
+     float gds_var(gds_crd);
+     gds_var:units = "meter";
+     gds_var:coordinates = "lat_gds lon_gds";
+     data:
+     gds_var=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8;  
+      } //g7g1
+  } // end g7
+ 
+  //
+  //g9
+  //
+ group: g9 { // Level 1
+  group: g9g1 { // Level 2
+    variables:
+      int v6;
+    data:
+      v6=63;
+    group: g9g1g1 { // Level 3
+      group: g9g1g1g1 { // Level 4
+	  :mtd_grp = "Group metadata from g9g1g1g1, a group with no variables, to test whether group metadata are copied to ancestor groups of extracted variables";
+	group: g9g1g1g1g1 { // Level 5
+	  group: g9g1g1g1g1g1 { // Level 6
+	    group: g9g1g1g1g1g1g1 { // Level 7
+	      variables:
+		int v7;
+	      data:
+		v7=73;
+	      } // end g9g1g1g1g1g1g1
+	    } // end g9g1g1g1g1g1
+	  } // end g9g1g1g1g1
+	} // end g9g1g1g1
+      } // end g9g1g1
+    } // end g9g1
+  } // end g9
+
+ group: g10 { // Level 1
+  variables:
+    float two_dmn_rec_var(time,lev);
+    float three_dmn_rec_var(time,lat,lon);
+	three_dmn_rec_var:units = "watt meter-2";
+  data:
+    two_dmn_rec_var=1.,2.0,3.,
+      1.,2.1,3.,
+      1.,2.2,3.,
+      1.,2.3,3.,
+      1.,2.4,3.,
+      1.,2.5,3.,
+      1.,2.6,3.,
+      1.,2.7,3.,
+      1.,2.8,3.,
+      1.,2.9,3.;
+    three_dmn_rec_var= 	 1, 2, 3, 4, 5, 6, 7, 8,
+      9,10,11,12,13,14,15,16,
+      17,18,19,20,21,22,23,24,
+      25,26,27,28,29,30,31,32,
+      33,34,35,36,37,38,39,40,
+      41,42,43,44,45,46,47,48,
+      49,50,51,52,53,54,55,56,
+      57,58,59,60,61,62,63,64,
+      65,66,67,68,69,70,71,72,
+      73,74,75,76,77,78,79,80;
+  } // end g10
+
+ group: g11 { // Level 1
+    // Purpose: Test all netCDF3 and netCDF4 atomic types
+  variables:
+    // netCDF3 atomic types
+    byte byte_var;
+  byte_var:long_name = "byte-type variable";
+    
+    char char_var;
+  char_var:long_name = "char-type variable";
+    
+    char char_var_arr(time);
+  char_var_arr:long_name = "char-type variable array";
+    
+    int int_var;
+  int_var:long_name = "int-type variable";
+    
+    short short_var;
+  short_var:long_name = "short-type variable";
+
+    long long_var;
+  long_var:long_name = "long-type variable";
+  long_var:purpose = "Variable of CDL type=long, which is deprecated for int. Included to test back-compatibility";
+
+    double double_var;
+  double_var:long_name = "double-type variable";
+
+    float float_var;
+  float_var:long_name = "float-type variable";
+
+    // netCDF4-only atomic types
+    int64 int64_var;
+  int64_var:long_name = "int64-type variable";
+    
+    string string_var;
+  string_var:long_name = "string-type variable";
+    
+    // string string_var2;
+    // string_var2:long_name = "string-type variable with default XML separator";
+
+    string string_arr(lat);
+  string_arr:long_name = "string-type array variable";
+
+    string string_rec_arr(time);
+  string_rec_arr:long_name = "string-type record array variable";
+
+    ubyte ubyte_var;
+  ubyte_var:long_name = "ubyte-type variable";
+    
+    uint uint_var;
+  uint_var:long_name = "uint-type variable";
+  uint_var:_FillValue = 73u;
+  uint_var:purpose = "_FillValue attribute tests whether NcML parser inadvertently creates two _FillValues for unsigned types";
+    
+    uint uint_arr(lat);
+  uint_arr:long_name = "uint-type array variable";
+    
+    uint64 uint64_var;
+  uint64_var:long_name = "uint64-type variable";
+    
+    ushort ushort_var;
+  ushort_var:long_name = "ushort-type variable";
+  data:
+    // netCDF3 atomic types
+    byte_var='z';
+    char_var="z";
+    char_var_arr="two words";
+    double_var=10.;
+    float_var=10.;
+    short_var=10;
+    int_var=10;
+    long_var=10;
+    // netCDF4-only atomic types
+    int64_var=9223372036854775807; // LLONG_MAX = 9223372036854775807, NC_FILL_INT64 is -9223372036854775806LL
+    string_var="If you prick us, do we not bleed? If you tickle us, do we not laugh? If you poison us, do we not die? And if you wrong us, shall we not revenge?";
+    //  string_var2="20131121: This NC_STRING contains NCO's default XML string separator, *. And it contains multiple sequential copies of that separator, ***. Be sure ncks automatically switches to a different separator, aka the backup separator, the string obtained by removing the two spaces from this:\"* | *\". As of 20131121, ncks handles this correctly, yet toolsui breaks when trying to input the ncks-generated NcML. Appears to be a toolsui bug.";
+    string_arr="Stanza 1","Stanza 2";
+    string_rec_arr="One little ","two little ","three little indians, ","four little ","five little ","six little indians, ","seven little ","eight little ","nine little indians, ","ten little indian boys.";
+    ubyte_var='z'; // UCHAR_MAX = 255, NC_FILL_UBYTE = 255
+    // 20130208: netCDF 4.2.1.1- fail as nc_get_var1_uint() returns -60 = NetCDF: Numeric conversion not representable on (valid) input values exceeding INT_MAX=2147483647. This was bug netCDF #PUX-602809 fixed in daily snapshot 20130210.
+    // uint_var=4294967295; // UINT_MAX = 4294967295, NC_FILL_UINT is 4294967295U
+    uint_var=0; // UINT_MAX = 4294967295, NC_FILL_UINT is 4294967295U
+    uint_arr=4294967295,4294967295; // UINT_MAX = 4294967295, NC_FILL_UINT is 4294967295U
+    //    uint64_var=18446744073709551615; // ULLONG_MAX = 18446744073709551615, NC_FILL_UINT is 18446744073709551614ULL, 20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)
+    uint64_var = 0ul; // 20130712: ncgen 4.3.0 chokes on ull, ULL suffix for uint64 attributes, 
+    ushort_var=65535; // USHRT_MAX = 65535, NC_FILL_USHORT = 65535
+ } // end g11
+   
+ group: g12 { // Level 1
+    // Purpose: Test special characters in names
+    // Most special characters need backslash protection
+  : comma_in_name\, = "foo";
+  : lt_in_name\< = "foo";
+  : gt_in_name\> = "foo";
+  : hash_in_name\# = "foo";
+  : xclaim_in_name\! = "foo";
+  : dollar_in_name\$ = "foo";
+  : ampersand_in_name\& = "foo";
+  : equals_in_name\= = "foo";
+  : semicolon_in_name\; = "foo";
+  : colon_in_name\: = "foo";
+  : lbrace_in_name\{ = "foo";
+  : rbrace_in_name\} = "foo";
+  : lparen_in_name\( = "foo";
+  : rparen_in_name\) = "foo";
+  : lbracket_in_name\[ = "foo";
+  : rbracket_in_name\] = "foo";
+  : plus_in_name+ = "foo";
+    //  : period_in_name. = "foo"; // Likely to cause DAP server error
+  : hyphen_in_name- = "foo";
+  : at_in_name@ = "foo";
+ } // end g12
 
 } // end root group
diff --git a/data/in_grp_1.cdl b/data/in_grp_1.cdl
new file mode 100644
index 0000000..17ae82c
--- /dev/null
+++ b/data/in_grp_1.cdl
@@ -0,0 +1,23 @@
+// Purpose: Generate a group file structure with common and non-common objects; pair of files are in_grp_1.cdl and in_grp_2.cdl
+// Generate netCDF files with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_grp_1.nc ~/nco/data/in_grp_1.cdl
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_grp_2.nc ~/nco/data/in_grp_2.cdl
+
+netcdf in_grp_1 {
+
+  dimensions:
+  lon1=4;
+ 
+  //
+  //g1
+  //
+  group: g1 { 
+  variables:
+    short var1(lon1);
+    float var2(lon1);
+  data:
+    var1=0,0,0,0;
+    var2=0,0,0,0;
+  } // end g1
+
+} // end root group
diff --git a/data/in_grp_2.cdl b/data/in_grp_2.cdl
new file mode 100644
index 0000000..aeebfd6
--- /dev/null
+++ b/data/in_grp_2.cdl
@@ -0,0 +1,31 @@
+// Purpose: Generate a group file structure with common and non-common objects; pair of files are in_grp_1.cdl and in_grp_2.cdl
+// Generate netCDF files with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_grp_1.nc ~/nco/data/in_grp_1.cdl
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_grp_2.nc ~/nco/data/in_grp_2.cdl
+
+netcdf in_grp_2 {
+
+  dimensions:
+  lon1=4;
+  
+  //
+  //g1
+  //
+ group: g1 { 
+  variables:
+    float var1(lon1);
+  data:
+    var1=0,1,1,0;
+  } // end g1
+  
+  //
+  //g2
+  //
+ group: g2 { 
+  variables:
+    float var2(lon1);
+  data:
+    var2=0,1,1,0;
+  } // end g2  
+
+} // end root group
\ No newline at end of file
diff --git a/data/in_grp_3.cdl b/data/in_grp_3.cdl
new file mode 100644
index 0000000..e27d577
--- /dev/null
+++ b/data/in_grp_3.cdl
@@ -0,0 +1,561 @@
+// -*-C++-*-
+// Purpose: CDL file to generate netCDF4 test file for groups
+
+// Usage:
+// NB: ncgen arguments depend on version:
+// "-k netCDF-4" for netCDF >= 3.6.3, "-k hdf5" for netCDF < 3.6.3
+// "-k netCDF-4 classic model" for netCDF >= 3.6.3, "-k hdf5-nc3" for netCDF < 3.6.3
+// ncgen -k netCDF-4 -b -o ~/nco/data/in_grp_3.nc ~/nco/data/in_grp_3.cdl
+
+// CDL Data constants:
+// byte: 'a'
+// char: "a"
+// short: 1s
+// int: 1 (no decimal point)
+// float: 1.f (decimal point is required, f is required to distinguish from double)
+// double: 1.0, 1.d, 1.0e-20 (decimal point is required, d is not required)
+// CDL complex types:
+// man ncgen describes all
+// roulee:/data/zender/tmp/netcdf-4.2.1/nc_test/ref_tst_diskless2.cdl
+
+// NCL usage:
+// id_in=addfile("/home/zender/nco/data/in_grp_3.nc","r")
+// print(id_in)
+// list_filevars(id_in)
+// ncks --get_file_info  ~/nco/data/in_grp_3.nc
+
+//NOTE: Must be tested with 
+//ncks --lbr
+//Linked to netCDF library version 4.1.1, compiled Nov  7 2011 11:35:16
+
+netcdf in_grp_3 {
+
+  :Conventions = "CF-1.0";
+
+  //
+  //g3
+  //
+  // Test case generates duplicated dimension IDs in netCDF file
+  // rlev dimension from g3 must be commented when using netCDF earlier than 4.3.0
+  //
+  //      ncks -O  -v two_dmn_rec_var in_grp.nc out.nc
+  //
+  //      nco_cpy_var_dfn() defines new dimesions for the file, as
+  //
+  //      ncks: INFO nco_cpy_var_dfn() defining dimensions
+  //      ID=0 index [0]:</time> 
+  //      ID=1 index [1]:</lev> 
+  //      ID=2 index [0]:</g8/lev> 
+  //      ID=3 index [1]:</g8/vrt_nbr> 
+  //      ID=4 index [1]:</vrt_nbr> 
+  //
+  //
+ group: g3 {
+  dimensions:
+    rlev=3;
+  variables:
+    :g3_group_attribute = "g3_group_attribute";
+    
+    //coordinate variable (/g3/rlev)
+    float rlev(rlev);
+    rlev:purpose = "Monotonically decreasing coordinate pressure";
+
+    float rz(rlev);  
+    float scl;
+  data:
+    rz=0,5000,17000;
+    scl=1.3;
+    rlev=1000.,500.,100.;
+    
+  group: g3g1 {
+    variables:
+      float prs(rlev);
+      prs:long_name="reverse pressure";
+    data:
+      prs=1.0,10.0,100.0;
+    } // end g3g1
+  } // end g3
+  
+  //
+  //g5
+  //
+ group: g5 { // Level 1
+  dimensions:
+    rlev=3;
+  variables:
+  
+    //coordinate variable (/g5/rlev)
+    float rlev(rlev);
+  data:
+    rlev=10.,5.,1.;
+  group: g5g1 { // Level 2
+    variables:
+      float rz(rlev);
+    data:
+      rz=1,2,3;
+    } //end g5g1 
+  } // end g5  
+  
+  
+  //
+  //g8 test ncwa in groups 
+  //
+ group: g8 { 
+  dimensions:
+    lon=2,lev=3,vrt_nbr=2;
+  variables:
+  
+    //coordinate variable (/g8/lon)
+    float lon(lon);
+    
+    //coordinate variable (/g8/lev)
+    float lev(lev); 
+    lev:bounds = "ilev";
+    
+    //coordinate variable (/g8/vrt_nbr)
+    float vrt_nbr(vrt_nbr);
+    
+    float ilev(lev,vrt_nbr);
+	float lev_wgt(lev);
+  data:
+    lon=-180,0; 
+    lev=100,500,1000;
+    ilev=0,300,300,750,750,1013.25;
+    vrt_nbr=1,2;
+	lev_wgt=9,2,1;
+  } // end g8
+  
+ 
+  //
+  //g16 
+  //
+  // Test variables and dimensions in and out of scope
+  // Use case of variable in scope of dimension:
+  // dimension /lon 
+  // variable /g1/lon(lon)
+  // Use case of variable NOT in scope of dimension:
+  // variable /lon
+  // dimension /g1/lon
+  //
+  // Test dimensions with no associated coordinate variable
+  //
+  group: g16 { 
+    dimensions:
+    lat=2;
+    lon1=4;  //dimension that has a coordinate variable down in scope at /g16/g16g1/lon1(lon1)
+    lon2=4;  //dimension that does NOT have a coordinate variable anywhere 
+    lon3=4;  //dimension that has a coordinate "out of scope" (with group depth greater than the variable that uses the coordinate, g16g3g3)
+    lon4=2;  //dimension that has several intermidiate "in scope" coordinates
+    variables:
+    float lat1(lat);
+    float lon2_var(lon2); //variable with no associated coordinate variable
+    data:
+    lat1=0.,1.;
+    lon2_var=0.,1.,2.,3.; 
+    
+    group: g16g1 { 
+     dimensions:
+     lat1=2; //dimension that has a variable /lat1 down in *illegal* scope 
+     variables:
+     // MSA test -v lon1_var -d lon1,3.0, result is 3.
+     float lon1(lon1);  //coordinate variable /g16/g16g1/lon1 that has dimension (/g16/lon1) in scope
+     float lon1_var(lon1); // variable /g16/g16g1/lon1_var that has dimension (/g16/lon1) in scope *and* coordinate (/g16/g16g1/lon1) in scope
+     data:
+     lon1=0.,1.,2.,3.;
+     lon1_var=0.,1.,2.,3.;  
+      } // end g16g1 
+
+    group: g16g2 { 
+     dimensions:
+     variables:
+     //coordinate variable (/g16/lon1)
+     float lon1(lon1); // MSA test -v lon1_var -d lon1,3.0, result is 0.,1.,2.,3.
+     float lon1_var(lon1); //
+     data:
+     lon1=3.,4.,5.,6.;
+     lon1_var=0.,1.,2.,3.;  
+    } // end g16g2 
+    
+    group: g16g3 { 
+     variables:
+     float lon3_var(lon3); 
+     data:
+     lon3_var=0.,1.,2.,3.;  
+        group: g16g3g1 { 
+           variables:
+            //coordinate "out of scope" (with group depth greater than the variable that uses the coordinate, in g16g3)
+            float lon3(lon3);
+            data:
+            lon3=7.,8.,9.,10.;
+        } // end g16g3g1
+    } // end g16g3
+    
+    group: g16g4 { 
+     variables:
+     //intermediate "in scope " coordinate
+     float lon4(lon4);
+     data:
+     lon4=1.,2.;     
+     
+      group: g16g4g1 { 
+      variables:
+      //intermediate "in scope " coordinate
+      float lon4(lon4);
+      data:
+      lon4=3.,4.; 
+      
+        group: g16g4g1g1 { 
+        variables:
+        //variable that uses one of the intermediate "in scope " coordinate
+        float lon4_var(lon4);
+        data:
+        lon4_var=0.,1.; 
+       } // end g16g4g1g1
+     } // end g16g4g1
+    } // end g16g4
+    
+  } // end g16
+  
+  //
+  //g18
+  //
+  group: g18 { 
+  
+    :Conventions = "CF-1.0";
+  
+    dimensions:
+    time=unlimited; // NB: no coordinate for this dimension  
+    lat=2;
+    lon=4;  
+    gds_crd=8;
+	
+    variables:
+    float lat(lat);
+    float lon(lon); 
+    
+    double lat_gds(gds_crd);
+    lat_gds:long_name = "Latitude";  
+    lat_gds:standard_name = "latitude";
+    lat_gds:units="degree";
+    lat_gds:purpose = "1-D latitude coordinate referred to by geodesic grid variables";
+
+    double lon_gds(gds_crd);
+    lon_gds:long_name = "Longitude";
+    lon_gds:standard_name = "longitude";
+    lon_gds:units="degree";
+    lon_gds:purpose = "1-D longitude coordinate referred to by geodesic grid variables";
+    
+    float gds_crd(gds_crd);
+    gds_crd:long_name = "Geodesic coordinate";
+    gds_crd:units = "degree";
+    gds_crd:purpose = "enumerated coordinate like those that might define points in a geodesic grid";
+    gds_crd:coordinates = "lat_gds lon_gds";
+    
+    float gds_3dvar(time,gds_crd);
+    gds_3dvar:long_name = "Geodesic variable";
+    gds_3dvar:units = "meter";
+    gds_3dvar:coordinates = "lat_gds lon_gds";
+    gds_3dvar:purpose = "Test auxiliary coordinates like those that define geodesic grids";
+    
+    data:
+    gds_crd=0,1,2,3,4,5,6,7;
+	  gds_3dvar=273.1,273.2,273.3,273.4,273.5,273.6,273.7,273.8,
+	          274.1,274.2,274.3,274.4,274.5,274.6,274.7,274.8,
+	          275.1,275.2,275.3,275.4,275.5,274.5,275.7,275.8,
+	          276.1,276.2,276.3,276.4,276.5,276.5,276.7,276.8,
+	          277.1,277.2,277.3,277.4,277.5,277.5,277.7,277.8,
+	          278.1,278.2,278.3,278.4,278.5,278.6,278.7,278.8,
+	          279.1,279.2,279.3,279.4,279.5,279.9,279.7,279.8,
+	          280.1,280.2,280.3,280.4,280.5,280.9,280.7,280.8,
+	          281.1,281.2,281.3,281.4,281.5,281.9,281.7,281.8,
+	          282.1,282.2,282.3,282.4,282.5,282.9,282.7,282.8;
+    lat_gds=-90, -30,  -30,    0,   0, 30,  30,  90;
+    lon_gds=  0,   0,  180,    0, 180,  0, 180,   0;
+    lat=-90,90;
+    lon=0,90,180,270;
+    } // end g18
+    
+    
+  //
+  //g19 test cases for ncpdq; same variables as ncpdq netCDF3 tests
+  //
+  
+  group: g19 { 
+  
+   dimensions:
+   lat=2;
+   lev=3;
+   lon=4;
+   time=unlimited; 
+
+   variables:
+   float lat(lat);
+   float lon(lon); 
+   float lev(lev);
+   float lev_wgt(lev);
+   double time(time);
+
+   data:
+   lat=-90,90;
+   lon=0,90,180,270;
+   lev=100,500,1000;
+   lev_wgt=10,2,1;
+   time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+  
+    group: g19g1 { 
+     variables:
+     float two_dmn_var(lat,lev);
+	   two_dmn_var:long_name = "two dimensional variable";
+	   two_dmn_var:units = "fraction";
+    
+     data:
+     two_dmn_var=1.5,5.5,9.5,13.5,17.5,21.5;
+      
+    } // end g19g1 
+
+    group: g19g2 {
+    variables:
+    float two_dmn_rec_var(time,lev);
+	  two_dmn_rec_var:long_name = "two dimensional record variable";
+	  two_dmn_rec_var:units = "watt meter-2"; 
+    data:
+    two_dmn_rec_var=1.,2.0,3.,
+			1.,2.1,3.,
+			1.,2.2,3.,
+			1.,2.3,3.,
+			1.,2.4,3.,
+			1.,2.5,3.,
+			1.,2.6,3.,
+			1.,2.7,3.,
+			1.,2.8,3.,
+			1.,2.9,3.;
+      
+ 
+      } // end g19g2   
+ 
+ 
+     group: g19g3 { 
+     variables:
+	 double three_dmn_var_dbl(time,lat,lon);
+	 three_dmn_var_dbl:long_name = "three dimensional record variable of type double";
+	 three_dmn_var_dbl:units = "watt meter-2";
+	 three_dmn_var_dbl:_FillValue = -99.;
+
+
+     data:
+     three_dmn_var_dbl= 	 1, 2, 3, 4, 5, 6, 7, 8,
+				 9,10,11,12,13,14,15,16,
+				17,18,19,20,21,22,23,24,
+				-99,-99,-99,-99,-99,-99,-99,-99,
+				33,34,35,36,37,38,39,40,
+				41,42,43,44,45,46,47,48,
+				49,50,51,52,53,54,55,56,
+				-99,58,59,60,61,62,63,64,
+				65,66,67,68,69,70,71,72,
+				-99,74,75,76,77,78,79,-99;
+    
+ 
+      } // end g19g3  
+      
+      
+      group: g19g4 { 
+      variables:
+      short rec_var_dbl_mss_val_dbl_pck(time);
+	    rec_var_dbl_mss_val_dbl_pck:long_name = "record variable, double, packed as short, with double missing values";
+	    rec_var_dbl_mss_val_dbl_pck:purpose = "Packed version of rec_var_dbl_mss_val_dbl_upk";
+	    rec_var_dbl_mss_val_dbl_pck:_FillValue = -999s;
+	    rec_var_dbl_mss_val_dbl_pck:missing_value = -999.;
+        rec_var_dbl_mss_val_dbl_pck:scale_factor = -9.15541313801785e-05;
+        rec_var_dbl_mss_val_dbl_pck:add_offset = 5.;
+      double upk;
+    	upk:long_name = "Unpacked scalar variable";
+	    upk:note = "Unpacked value is 3.0d0, upk=unpack(pck)= 2.0d0*1s + 1.0d0 = 3.0d0. Packing this variable should create an NC_SHORT scalar = 0s with packing attribute add_offset=3.0d and either no scale_factor (ncap) or scale_factor = 0.0d (ncpdq).";
+      data:
+      upk=3.;
+      rec_var_dbl_mss_val_dbl_pck=-999,32767,21845,10922,0,-10922,-21845,-32767,-999,-999;
+      } // end g19g4 
+          
+  } // end g19
+
+
+  //
+  //g20 test cases for ncwa; same variables as ncwa netCDF3 tests
+  //
+  group: g20 {
+  dimensions:
+   lat=2;
+   variables:
+   float lat(lat);
+   data:
+   lat=-90,90;
+   
+    group: g20g1 { 
+     variables:
+     float lat_cpy(lat);
+	 float lat_wgt(lat);
+     data:
+     lat_cpy=-90,90;
+	 lat_wgt=1.,2.;   
+    } // end g20g1 
+
+  } //g20
+  
+  //
+  // prototype problem from ACCESS 
+  //
+  group: g21 { 
+  dimensions:
+    lat=2;
+    lon=4;
+  variables:
+  float lat(lat);
+  lat:units = "degrees_north";
+  float lon(lon);
+  lon:units = "degrees_east";
+  float snc(lat,lon);
+  snc:long_name = "Snow Cover";
+  data:
+  lat=-45,45;
+  lon=0,90,180,270;
+  snc=1,2,3,4,5,6,7,8;
+  } // end g21
+  
+  //
+  // prototype problem from ACCESS 
+  //
+  group: g22 { 
+  dimensions:
+    lat=3;
+    lon=3;
+  variables:
+  float lat(lat);
+  lat:units = "degrees_north";
+  float lon(lon);
+  lon:units = "degrees_east";
+  float snc(lat,lon);
+  snc:long_name = "Snow Cover";
+  data:
+  lat=-60,0,60;
+  lon=0,120,240;
+  snc=1,2,3,4,5,6,7,8,9;
+  } // end g22
+  
+  group: g90 {
+  dimensions:
+  dim90=2;
+  variables:
+  int g9(dim90);
+  data:
+  g9=1,2; 
+  } // end g90
+  
+  //
+  // ncra test case
+  //
+  group: g23 { 
+   dimensions:
+    lat=2;
+    lon=3;
+	time=unlimited;
+    variables:
+    float lat(lat);
+    lat:units = "degrees_north";
+    float lon(lon);
+    lon:units = "degrees_east";
+	double time(time);
+    float snd(time,lat,lon);
+    snd:long_name = "Snow Depth timeseries";
+    data:
+    lat=-60,0;
+    lon=0,120,240;
+	time=1,2;
+    snd=1,2,3,4,5,6,
+	    7,8,9,10,11,12;
+  } // end g23
+  
+  //
+  // ncra test case
+  //
+  group: g24 { 
+   dimensions:
+    lat=2;
+    lon=3;
+	time=unlimited;
+    variables:
+    float lat(lat);
+    lat:units = "degrees_north";
+    float lon(lon);
+    lon:units = "degrees_east";
+	double time(time);
+    float snd(time,lat,lon);
+    snd:long_name = "Snow Depth timeseries";
+    data:
+    lat=-60,0;
+    lon=0,120,240;
+	time=4;
+    snd=1,2,3,4,5,6;
+  } // end g24
+  
+  //
+  // ncra test cases
+  //
+  group: g25 { 
+  
+    //g25g1, g25g2: same data
+  
+    group: g25g1 {
+      dimensions:
+	  time=unlimited;	
+	  variables:
+	  double time(time);
+      int one_dmn_rec_var(time);
+      data:
+	  time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+      one_dmn_rec_var=1,2,3,4,5,6,7,8,9,10;    
+    } // end g25g1 
+	
+	group: g25g2 { 
+      dimensions:
+	  time=unlimited;	
+	  variables:
+	  double time(time);
+      int one_dmn_rec_var(time);
+      data:
+	  time=1.,2.,3.,4.,5.,6.,7.,8.,9.,10.;
+      one_dmn_rec_var=1,2,3,4,5,6,7,8,9,10;     
+    } // end g25g2 
+	
+	//g25g3: record (time) is not coordinate variable
+	
+	group: g25g3 {
+	  dimensions:
+	  time=unlimited;	
+	  variables:
+      int one_dmn_rec_var(time);
+      data:
+      one_dmn_rec_var=1,2,3,4,5,6,7,8,9,10;      
+    } // end g25g3
+	
+  } // end g25
+  
+  //ncwa: test weight and hyperslab
+  
+  group: g26 {
+	dimensions:
+	lat = 3 ;
+	lon = 3 ;
+	variables:
+	float a(lat, lon) ;
+	a:_FillValue = -999.f ;
+	float gw_lat(lat) ;
+	float gw_lon(lon) ;
+	data:
+	 a =
+	  45.123, 2.21029, 67.219,
+	  87.19, 12.8974, 3.98,
+	  20, 22.234, _ ;
+	 gw_lat = 0.1, 0.9, 0.9 ;
+	 gw_lon = 1, 1, 1 ;
+	} // end g26
+
+} // end root group
diff --git a/data/mdl.cdl b/data/mdl.cdl
new file mode 100644
index 0000000..c1e318a
--- /dev/null
+++ b/data/mdl.cdl
@@ -0,0 +1,87 @@
+// -*-C++-*-
+// Generate netCDF file with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/mdl.nc ~/nco/data/mdl.cdl
+
+netcdf mdl {
+
+ group: cesm {
+
+  group: cesm_01 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "CESM";
+      :Realization = "1";
+
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=272.1,272.1,272.1,272.1;
+	  tas2=272.1,272.1,272.1,272.1;
+ 
+    } // cesm_01
+
+  group: cesm_02 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "CESM";
+      :Realization = "2";
+      
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=272.2,272.2,272.2,272.2;
+	  tas2=272.2,272.2,272.2,272.2;
+      
+    } // cesm_02
+    
+  } // cesm
+  
+ group: ecmwf {
+    
+  group: ecmwf_01 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "ECMWF";
+      :Realization = "1";
+      
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=273.1,273.1,273.1,273.1;
+	  tas2=273.1,273.1,273.1,273.1;
+      
+    } // ecmwf_01
+    
+  group: ecmwf_02 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "ECMWF";
+      :Realization = "2";
+      
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=273.2,273.2,273.2,273.2;
+	  tas2=273.2,273.2,273.2,273.2;
+      
+    } // ecmwf_02
+
+  } // ecmwf
+
+} // root group
diff --git a/data/mdl2.cdl b/data/mdl2.cdl
new file mode 100644
index 0000000..af14efe
--- /dev/null
+++ b/data/mdl2.cdl
@@ -0,0 +1,70 @@
+// -*-C++-*-
+// Generate netCDF file with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/mdl.nc ~/nco/data/mdl.cdl
+
+netcdf mdl {
+
+ group: cesm {
+
+  group: cesm_03 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "CESM";
+      :Realization = "1";
+
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=272.3,272.3,272.3,272.3;
+	  tas2=272.3,272.3,272.3,272.3;
+ 
+    } // cesm_03
+
+    
+  } // cesm
+  
+ group: ecmwf {
+    
+  group: ecmwf_03 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "ECMWF";
+      :Realization = "1";
+      
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=273.3,273.3,273.3,273.3;
+	  tas2=273.3,273.3,273.3,273.3;
+      
+    } // ecmwf_03
+    
+  group: ecmwf_04 {
+      :Conventions = "CF-1.5";
+      :history = "yada yada yada";
+      :Scenario = "Historical";
+      :Model = "ECMWF";
+      :Realization = "2";
+      
+    dimensions:
+      time=4;
+    variables:
+      float tas1(time);
+	  float tas2(time);
+    data:
+      tas1=273.4,273.4,273.4,273.4;
+	  tas2=273.4,273.4,273.4,273.4;
+      
+    } // ecmwf_04
+
+  } // ecmwf
+
+} // root group
diff --git a/data/ncap2.in b/data/ncap2.in
index f301dcc..d7328b2 100644
--- a/data/ncap2.in
+++ b/data/ncap2.in
@@ -1,4 +1,4 @@
-// $Header: /cvsroot/nco/nco/data/ncap2.in,v 1.35 2012/02/09 16:03:37 zender Exp $ -*-C++-*-
+// $Header: /cvsroot/nco/nco/data/ncap2.in,v 1.37 2012/11/09 20:15:40 zender Exp $ -*-C++-*-
 
 // Purpose: Sample input script for ncap2
 
@@ -124,9 +124,9 @@ g4(2,0,0)=987654.0;
 // Attribute string handling
 h1=10.0;
 h1 at units="microns";
-h1 at long_name="Teslar\t";
+h1 at long_name="Tesla\t";
 // variable string handling
-//Create a variable string ( currently a painfull process)
+// Create a variable string (currently painful)
 h2[char_dmn_lng04]="a";  // string is now "aaa"
 h2()="hell";            // string is now "hell"
 // hyperslab a variable string;
@@ -181,7 +181,7 @@ j4= (i7<9 ? ++j2 : ++j3);
 // use the defdim function. Dimensions in the input file CANNOT
 // be redefined in the output. Dimensions are imutable and
 // once defined in  cannot be redefined
-// (nb defdim should return a bool value indicating success or failure)
+// (NB: defdim should return a bool value indicating success or failure)
 defdim("x",1);
 defdim("y",4);
 defdim("z",9);
diff --git a/data/ncap2_tst.nco b/data/ncap2_tst.nco
index b19def8..3cf447b 100644
--- a/data/ncap2_tst.nco
+++ b/data/ncap2_tst.nco
@@ -1,4 +1,4 @@
-// $Header: /cvsroot/nco/nco/data/ncap2_tst.nco,v 1.28 2011/07/31 21:49:55 zender Exp $ -*-C++-*-
+// $Header: /cvsroot/nco/nco/data/ncap2_tst.nco,v 1.29 2012/05/17 09:21:22 hmb Exp $ -*-C++-*-
 
 // Purpose: Test script for ncap2
 
@@ -680,10 +680,10 @@ nbr_err_ttl=0;
 
   n2[lat,lon]={-1.0,0.0,2.0,3.0,10.0,20.0,30.0,40.0};
 
-  n2=dsort(n2,n1_map);
+  n2=remap(n2,n1_map);
 
   // Create map larger variable
-  n3=dsort(three_dmn_var_dbl,n1_map);
+  n3=remap(three_dmn_var_dbl,n1_map);
 
   if(n1.min() != n1_st(0,0) || n1.max()!=n1_st(7)){
         print("ERROR: n1: Basic sort test\n");
diff --git a/data/nco_gsl.cdl b/data/nco_gsl.cdl
new file mode 100644
index 0000000..f219937
--- /dev/null
+++ b/data/nco_gsl.cdl
@@ -0,0 +1,28 @@
+// ncgen -b -o ~/nco/data/nco_gsl.nc ~/nco/data/nco_gsl.cdl
+
+netcdf nco_gsl {
+//purpose: test nco_gsl_fit_linear()
+//usage: ncap2 -O -S ~/nco/data/nco_gsl.nco ~/nco/data/nco_gsl.nc out.nc      
+//case 1; vx,vy   double arrays with no fill value and dim=N
+//case 2; fx,fy   double arrays one fill value in fy and dim=N
+//case 3; vxr,vyr double arrays with no fill value and dim=N-1, index a fill value case 2 removed
+//case 2 and case 3 must return the same values for: &c0,&c1,&cov00,&cov01,&cov11,&sumsq
+	dimensions:
+	dim=4;
+	dimr=3;
+	variables:
+	double vx(dim);
+	double vy(dim);
+	double fx(dim);
+	double fy(dim);
+	fy:_FillValue = -99.0;
+	double vxr(dimr);
+	double vyr(dimr);
+	data:
+	vx=2.0,3.0,2.0,3.0;
+	vy=4.0,6.0,6.0,8.0;
+	fx=2.0,3.0,2.0,3.0;
+	fy=4.0,-99.0,6.0,8.0;
+	vxr=2.0,2.0,3.0;
+	vyr=4.0,6.0,8.0;
+}
diff --git a/data/nco_gsl.nco b/data/nco_gsl.nco
new file mode 100644
index 0000000..b8d0d19
--- /dev/null
+++ b/data/nco_gsl.nco
@@ -0,0 +1,32 @@
+//usage: ncap2 -O -S ~/nco/data/nco_gsl.nco ~/nco/data/nco_gsl.nc out.nc 
+//case 1; vx,vy   double arrays with no fill value and dim=N
+//case 2; fx,fy   double arrays one fill value in fy and dim=N
+//case 3; vxr,vyr double arrays with no fill value and dim=N-1, index a fill value case 2 removed
+//case 2 and case 3 must return the same values for: &c0,&c1,&cov00,&cov01,&cov11,&sumsq
+nco_gsl_fit_linear(vx,1,vy,1,$dim.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
+print("Values for vx,vy:\n");
+print(c0);
+print(c1);
+print(cov00);
+print(cov01);
+print(cov11);
+print(sumsq);
+nco_gsl_fit_linear(fx,1,fy,1,$dim.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
+print("Values for fx,fy:\n");
+print(c0);
+print(c1);
+print(cov00);
+print(cov01);
+print(cov11);
+print(sumsq);
+nco_gsl_fit_linear(vxr,1,vyr,1,$dimr.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
+print("Values for vxr,vyr:\n");
+print(c0);
+print(c1);
+print(cov00);
+print(cov01);
+print(cov11);
+print(sumsq);
+
+
+
diff --git a/data/netcdf4.nco b/data/netcdf4.nco
index 4458f6e..6e1fdd0 100644
--- a/data/netcdf4.nco
+++ b/data/netcdf4.nco
@@ -1,4 +1,4 @@
-// $Header: /cvsroot/nco/nco/data/netcdf4.nco,v 1.15 2010/10/11 20:07:36 zender Exp $ -*-C++-*-
+// $Header: /cvsroot/nco/nco/data/netcdf4.nco,v 1.16 2013/02/09 03:43:36 zender Exp $ -*-C++-*-
 
 // Purpose: Sample input script for netCDF4-enabled ncap2
 // Stress-test netCDF4 atomic types and features
@@ -42,6 +42,9 @@ var_short_ttl_max=var_short_max+var_short_max; // 20090504: -2 overflow OK
 var_int64_ttl=var_int64+var_int64;
 var_int64_max=9223372036854775807ll;
 var_int64_ttl_max=var_int64_max+var_int64_max; // 20090504: -2 overflow OK
+var_uint_max=4294967295u;
+var_uint_ttl=var_uint+var_uint;
+var_uint_ttl_max=var_uint_max+var_uint_max;
 var_uint64_max=18446744073709551615ull;
 var_uint64_ttl=0ull+var_int64+var_int64;
 var_uint64_ttl_max=var_uint64_max+var_uint64_max; // 20090504: 18446744073709551614ull overflow OK?
diff --git a/data/obs.cdl b/data/obs.cdl
new file mode 100644
index 0000000..516e1d6
--- /dev/null
+++ b/data/obs.cdl
@@ -0,0 +1,12 @@
+// Generate netCDF file with:
+// ncgen -k netCDF-4 -b -o ~/nco/data/obs.nc ~/nco/data/obs.cdl
+
+netcdf obs {
+  dimensions:
+  time=4;
+  variables:
+  float tas(time);
+  data:
+  tas=273,273,273,273;
+ 
+} // end root group
diff --git a/data/snc.cdl b/data/snc.cdl
new file mode 100644
index 0000000..c1aae3b
--- /dev/null
+++ b/data/snc.cdl
@@ -0,0 +1,133 @@
+netcdf snc {
+dimensions:
+	time = 192 ;
+variables:
+	double lat ;
+		lat:bounds = "lat_bnds" ;
+		lat:units = "degrees_north" ;
+		lat:axis = "Y" ;
+		lat:long_name = "latitude" ;
+		lat:standard_name = "latitude" ;
+	double lon ;
+		lon:bounds = "lon_bnds" ;
+		lon:units = "degrees_east" ;
+		lon:axis = "X" ;
+		lon:long_name = "longitude" ;
+		lon:standard_name = "longitude" ;
+	float snc(time) ;
+		snc:standard_name = "surface_snow_area_fraction" ;
+		snc:long_name = "Snow Area Fraction" ;
+		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+		snc:units = "%" ;
+		snc:original_name = "FSNO" ;
+		snc:cell_methods = "time: mean (interval: 30 days)" ;
+		snc:cell_measures = "area: areacella" ;
+		snc:history = "2012-04-06T21:56:45Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+		snc:missing_value = 1.e+20f ;
+		snc:_FillValue = 1.e+20f ;
+		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CCSM4_historical_r0i0p0.nc areacella: areacella_fx_CCSM4_historical_r0i0p0.nc" ;
+	double time(time) ;
+		time:bounds = "time_bnds" ;
+		time:units = "days since 1850-01-01 00:00:00" ;
+		time:calendar = "noleap" ;
+		time:axis = "T" ;
+		time:long_name = "time" ;
+		time:standard_name = "time" ;
+
+// global attributes:
+		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+		:institute_id = "NCAR" ;
+		:experiment_id = "historical" ;
+		:source = "CCSM4" ;
+		:model_id = "CCSM4" ;
+		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+		:parent_experiment_id = "piControl" ;
+		:parent_experiment_rip = "r1i1p1" ;
+		:branch_time = 937. ;
+		:contact = "cesm_data at ucar.edu" ;
+		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+		:initialization_method = 1 ;
+		:physics_version = 1 ;
+		:tracking_id = "a905e243-27f1-4172-93f0-820be7cbecf0" ;
+		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+		:cesm_casename = "b40.20th.track1.1deg.008" ;
+		:cesm_repotag = "ccsm4_0_beta43" ;
+		:cesm_compset = "B20TRCN" ;
+		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155645.062" ;
+		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+		:product = "output" ;
+		:experiment = "historical" ;
+		:frequency = "mon" ;
+		:creation_date = "2012-04-06T21:56:48Z" ;
+		:history = "Wed Aug 28 15:35:58 2013: ncks -4 -O -v snc snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc snc.nc\nSun Dec 30 18:36:26 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:56:48Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+		:Conventions = "CF-1.4" ;
+		:project_id = "CMIP5" ;
+		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+		:parent_experiment = "pre-industrial control" ;
+		:modeling_realm = "landIce land" ;
+		:realization = 1 ;
+		:cmor_version = "2.8.1" ;
+		:NCO = "20130828" ;
+		:nco_openmp_thread_number = 1 ;
+data:
+
+ lat = 0 ;
+
+ lon = 179.375 ;
+
+ snc = 61.37692, 60.05015, 58.4291, 52.22442, 45.59546, 38.34413, 33.19439, 
+    32.58879, 36.96843, 46.77308, 55.4712, 60.32861, 61.04955, 60.44368, 
+    57.63164, 52.03623, 44.6402, 37.95646, 33.34058, 32.47639, 35.50756, 
+    46.31984, 53.72991, 58.95955, 60.95681, 61.11084, 57.52742, 51.32803, 
+    45.14587, 40.29467, 33.73788, 32.70026, 37.01862, 45.55758, 54.71373, 
+    59.162, 60.49402, 60.44479, 58.98337, 52.96589, 45.39301, 38.34033, 
+    33.43645, 33.21604, 36.51387, 46.52538, 54.32355, 58.58232, 60.87978, 
+    61.41938, 57.53942, 51.85412, 45.21275, 39.17278, 34.27933, 33.29999, 
+    38.14444, 45.14943, 53.41065, 59.09114, 60.27861, 59.60844, 56.82986, 
+    51.97681, 45.15635, 39.0167, 33.56191, 32.95903, 37.38646, 46.47746, 
+    55.41323, 58.8252, 60.78623, 60.38117, 57.39877, 51.70517, 45.06911, 
+    38.33918, 33.48069, 32.87983, 35.75778, 45.74866, 54.30301, 59.07576, 
+    61.49643, 60.46125, 58.06967, 52.55259, 45.21442, 38.55085, 33.19324, 
+    32.48174, 36.98698, 45.74392, 54.11422, 59.98495, 61.07553, 60.54321, 
+    57.67136, 52.29048, 45.42659, 38.75619, 34.01928, 33.5902, 36.57975, 
+    46.28279, 53.94093, 59.1823, 59.90117, 60.60514, 58.14232, 51.95426, 
+    45.31351, 38.22518, 33.69085, 32.81738, 36.91416, 45.93295, 53.72042, 
+    58.92241, 60.5704, 59.9584, 57.54922, 51.54271, 44.41114, 37.51797, 
+    33.28756, 32.99597, 34.97438, 43.05939, 53.61963, 58.91531, 60.3945, 
+    61.40278, 57.09048, 48.77563, 43.52256, 36.93203, 33.11032, 32.41613, 
+    35.42476, 46.7383, 54.30549, 59.32918, 61.34241, 60.01548, 57.78593, 
+    51.88309, 44.22643, 36.99844, 32.54312, 32.08076, 35.33289, 43.7334, 
+    52.8833, 59.13483, 60.68259, 59.88637, 56.71269, 50.60006, 44.79, 
+    38.0248, 32.8781, 32.3756, 36.24483, 44.34415, 54.8398, 59.24604, 
+    60.13624, 60.5146, 57.35886, 51.2986, 44.53012, 38.94698, 32.69814, 
+    32.66948, 36.62969, 45.27304, 53.99754, 57.90419, 61.03916, 59.86766, 
+    55.66969, 51.11906, 44.3401, 38.34132, 33.50579, 32.66288, 36.10672, 
+    46.07471, 53.37682, 59.08301 ;
+
+ time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+    51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 51600.5, 
+    51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 51845.5, 51875, 
+    51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 52088, 52118.5, 52149, 
+    52179.5, 52210.5, 52240, 52269.5, 52300, 52330.5, 52361, 52391.5, 
+    52422.5, 52453, 52483.5, 52514, 52544.5, 52575.5, 52605, 52634.5, 52665, 
+    52695.5, 52726, 52756.5, 52787.5, 52818, 52848.5, 52879, 52909.5, 
+    52940.5, 52970, 52999.5, 53030, 53060.5, 53091, 53121.5, 53152.5, 53183, 
+    53213.5, 53244, 53274.5, 53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 
+    53486.5, 53517.5, 53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 
+    53729.5, 53760, 53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 
+    54004.5, 54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 
+    54247.5, 54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+    54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+    54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 55008, 
+    55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 55250.5, 55281, 
+    55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 55495.5, 55525, 
+    55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 55738, 55768.5, 55799, 
+    55829.5, 55860.5, 55890, 55919.5, 55950, 55980.5, 56011, 56041.5, 
+    56072.5, 56103, 56133.5, 56164, 56194.5, 56225.5, 56255, 56284.5, 56315, 
+    56345.5, 56376, 56406.5, 56437.5, 56468, 56498.5, 56529, 56559.5, 
+    56590.5, 56620, 56649.5, 56680, 56710.5, 56741, 56771.5, 56802.5, 56833, 
+    56863.5, 56894, 56924.5 ;
+}
diff --git a/data/snc_grp.cdl b/data/snc_grp.cdl
new file mode 100644
index 0000000..1582195
--- /dev/null
+++ b/data/snc_grp.cdl
@@ -0,0 +1,714 @@
+netcdf snc_grp {
+
+// global attributes:
+		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+		:institute_id = "NCAR" ;
+		:experiment_id = "historical" ;
+		:source = "CCSM4" ;
+		:model_id = "CCSM4" ;
+		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+		:parent_experiment_id = "piControl" ;
+		:parent_experiment_rip = "r1i1p1" ;
+		:branch_time = 937. ;
+		:contact = "cesm_data at ucar.edu" ;
+		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+		:initialization_method = 1 ;
+		:physics_version = 1 ;
+		:tracking_id = "a905e243-27f1-4172-93f0-820be7cbecf0" ;
+		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+		:cesm_casename = "b40.20th.track1.1deg.008" ;
+		:cesm_repotag = "ccsm4_0_beta43" ;
+		:cesm_compset = "B20TRCN" ;
+		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155645.062" ;
+		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+		:product = "output" ;
+		:experiment = "historical" ;
+		:frequency = "mon" ;
+		:creation_date = "2012-04-06T21:56:48Z" ;
+		:history = "Wed Aug 28 15:34:34 2013: ncecat --gag snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc snc_grp.nc\nSun Dec 30 18:36:26 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:56:48Z CMOR rewrote data to comply with CF standar [...]
+		:Conventions = "CF-1.4" ;
+		:project_id = "CMIP5" ;
+		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+		:parent_experiment = "pre-industrial control" ;
+		:modeling_realm = "landIce land" ;
+		:realization = 1 ;
+		:cmor_version = "2.8.1" ;
+		:NCO = "20121231" ;
+		:nco_openmp_thread_number = 1 ;
+
+group: snc_LImon_CCSM4_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-04-06T21:56:45Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CCSM4_historical_r0i0p0.nc areacella: areacella_fx_CCSM4_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CCSM4" ;
+  		:model_id = "CCSM4" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 937. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "a905e243-27f1-4172-93f0-820be7cbecf0" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.track1.1deg.008" ;
+  		:cesm_repotag = "ccsm4_0_beta43" ;
+  		:cesm_compset = "B20TRCN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155645.062" ;
+  		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-04-06T21:56:48Z" ;
+  		:history = "Sun Dec 30 18:36:26 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:56:48Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 61.37692, 60.05015, 58.4291, 52.22442, 45.59546, 38.34413, 33.19439, 
+      32.58879, 36.96843, 46.77308, 55.4712, 60.32861, 61.04955, 60.44368, 
+      57.63164, 52.03623, 44.6402, 37.95646, 33.34058, 32.47639, 35.50756, 
+      46.31984, 53.72991, 58.95955, 60.95681, 61.11084, 57.52742, 51.32803, 
+      45.14587, 40.29467, 33.73788, 32.70026, 37.01862, 45.55758, 54.71373, 
+      59.162, 60.49402, 60.44479, 58.98337, 52.96589, 45.39301, 38.34033, 
+      33.43645, 33.21604, 36.51387, 46.52538, 54.32355, 58.58232, 60.87978, 
+      61.41938, 57.53942, 51.85412, 45.21275, 39.17278, 34.27933, 33.29999, 
+      38.14444, 45.14943, 53.41065, 59.09114, 60.27861, 59.60844, 56.82986, 
+      51.97681, 45.15635, 39.0167, 33.56191, 32.95903, 37.38646, 46.47746, 
+      55.41323, 58.8252, 60.78623, 60.38117, 57.39877, 51.70517, 45.06911, 
+      38.33918, 33.48069, 32.87983, 35.75778, 45.74866, 54.30301, 59.07576, 
+      61.49643, 60.46125, 58.06967, 52.55259, 45.21442, 38.55085, 33.19324, 
+      32.48174, 36.98698, 45.74392, 54.11422, 59.98495, 61.07553, 60.54321, 
+      57.67136, 52.29048, 45.42659, 38.75619, 34.01928, 33.5902, 36.57975, 
+      46.28279, 53.94093, 59.1823, 59.90117, 60.60514, 58.14232, 51.95426, 
+      45.31351, 38.22518, 33.69085, 32.81738, 36.91416, 45.93295, 53.72042, 
+      58.92241, 60.5704, 59.9584, 57.54922, 51.54271, 44.41114, 37.51797, 
+      33.28756, 32.99597, 34.97438, 43.05939, 53.61963, 58.91531, 60.3945, 
+      61.40278, 57.09048, 48.77563, 43.52256, 36.93203, 33.11032, 32.41613, 
+      35.42476, 46.7383, 54.30549, 59.32918, 61.34241, 60.01548, 57.78593, 
+      51.88309, 44.22643, 36.99844, 32.54312, 32.08076, 35.33289, 43.7334, 
+      52.8833, 59.13483, 60.68259, 59.88637, 56.71269, 50.60006, 44.79, 
+      38.0248, 32.8781, 32.3756, 36.24483, 44.34415, 54.8398, 59.24604, 
+      60.13624, 60.5146, 57.35886, 51.2986, 44.53012, 38.94698, 32.69814, 
+      32.66948, 36.62969, 45.27304, 53.99754, 57.90419, 61.03916, 59.86766, 
+      55.66969, 51.11906, 44.3401, 38.34132, 33.50579, 32.66288, 36.10672, 
+      46.07471, 53.37682, 59.08301 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CCSM4_historical_r1i1p1_199001-200512
+
+group: snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-05-18T15:38:52Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-CAM5_historical_r0i0p0.nc areacella: areacella_fx_CESM1-CAM5_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-CAM5" ;
+  		:model_id = "CESM1-CAM5" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 2. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "Neale, R., et.al. 2012: Coupled simulations from CESM1 using the Community Atmosphere Model version 5: (CAM5). See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "2ee6c8fd-9752-4455-bed3-576a01e9fed6" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. This research used resources of the Oak Ridge Leadership Computing Facility, located in the National Center for Computational Sciences at Oak Ridge National Laboratory, which is supported by the Office of Science (BER) of the Department of Energy under Contract DE-AC05-00OR22725." ;
+  		:cesm_casename = "b40_20th_1d_b08c5cn_138j" ;
+  		:cesm_repotag = "cesm1_0_beta08" ;
+  		:cesm_compset = "B20TRC5CN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120518  -093852.130" ;
+  		:processing_code_information = "Last Changed Rev: 776 Last Changed Date: 2012-05-17 09:36:52 -0600 (Thu, 17 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-18T15:38:54Z" ;
+  		:history = "Sun Dec 30 19:53:35 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CESM1-CAM5_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc\n2012-05-18T15:38:54Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-CAM5 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 62.07145, 60.97509, 57.9104, 53.65452, 46.13708, 39.71951, 34.45684, 
+      33.34816, 36.30897, 45.20145, 54.7042, 60.06191, 61.81068, 61.57235, 
+      58.69954, 53.0875, 44.43778, 38.41296, 33.89512, 33.16334, 35.38866, 
+      44.20527, 55.24973, 60.42582, 61.78408, 60.30222, 57.74767, 51.87217, 
+      45.43856, 39.859, 34.65273, 33.69739, 35.79815, 45.94585, 55.98174, 
+      60.11427, 62.11591, 61.35354, 58.43501, 52.39944, 45.27255, 38.83994, 
+      34.82337, 33.47124, 35.81379, 46.57481, 54.41116, 60.62625, 62.25172, 
+      61.1827, 58.42628, 52.6358, 45.15274, 38.88607, 33.73675, 33.29869, 
+      35.76462, 43.97408, 55.61646, 60.97946, 62.00888, 60.70457, 57.56046, 
+      51.62181, 45.01118, 38.69769, 33.83691, 33.11338, 35.41447, 44.51177, 
+      54.35133, 59.83762, 61.02993, 61.28046, 58.4234, 52.3585, 45.51928, 
+      39.02513, 34.5911, 33.34881, 35.93228, 45.4144, 53.66666, 59.19072, 
+      62.61044, 60.99728, 58.37831, 53.53175, 46.06737, 38.39714, 34.13896, 
+      33.22199, 35.57574, 45.33149, 55.18364, 60.08348, 62.00661, 60.72526, 
+      58.49016, 52.98635, 45.39072, 39.37619, 34.2319, 33.21686, 35.65197, 
+      46.41065, 54.66462, 60.34342, 61.5855, 60.53594, 58.07879, 53.05131, 
+      45.6369, 38.99934, 33.72679, 33.10427, 34.7771, 44.55233, 55.62511, 
+      59.83138, 61.37432, 60.32346, 57.32902, 52.26272, 45.0841, 38.28241, 
+      33.7456, 33.1823, 35.83283, 45.20584, 54.09948, 60.86015, 62.31863, 
+      61.09036, 58.49607, 52.52017, 45.4707, 39.66387, 34.60744, 33.46476, 
+      36.29692, 47.46539, 54.06594, 59.21001, 61.56113, 61.5031, 58.06651, 
+      52.88129, 45.14191, 38.97267, 33.80598, 33.34988, 36.13751, 45.83525, 
+      54.13206, 59.95444, 61.17745, 60.35199, 58.45913, 52.94626, 45.55574, 
+      38.65861, 33.37043, 32.96347, 35.39613, 46.5092, 55.11117, 58.78823, 
+      61.00055, 60.24277, 57.43545, 52.00771, 45.43082, 39.07673, 33.98228, 
+      32.92905, 35.72621, 45.6367, 55.0639, 60.17884, 62.44907, 61.56859, 
+      58.70348, 51.78551, 44.38303, 38.12561, 34.06507, 32.99229, 35.49913, 
+      46.25829, 54.67482, 61.06555 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512
+}
diff --git a/data/snc_ncwa.cdl b/data/snc_ncwa.cdl
new file mode 100644
index 0000000..8438865
--- /dev/null
+++ b/data/snc_ncwa.cdl
@@ -0,0 +1,2062 @@
+netcdf snc_ncwa {
+
+// global attributes:
+		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+		:institute_id = "NCAR" ;
+		:experiment_id = "historical" ;
+		:source = "CCSM4" ;
+		:model_id = "CCSM4" ;
+		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+		:parent_experiment_id = "piControl" ;
+		:parent_experiment_rip = "r1i1p1" ;
+		:branch_time = 937. ;
+		:contact = "cesm_data at ucar.edu" ;
+		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+		:initialization_method = 1 ;
+		:physics_version = 1 ;
+		:tracking_id = "a905e243-27f1-4172-93f0-820be7cbecf0" ;
+		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+		:cesm_casename = "b40.20th.track1.1deg.008" ;
+		:cesm_repotag = "ccsm4_0_beta43" ;
+		:cesm_compset = "B20TRCN" ;
+		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155645.062" ;
+		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+		:product = "output" ;
+		:experiment = "historical" ;
+		:frequency = "mon" ;
+		:creation_date = "2012-04-06T21:56:48Z" ;
+		:history = "Tue Aug 27 14:54:01 2013: ncecat --gag snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc snc_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512.nc snc_LImon_CESM1-BGC_historical_r1i1p1_199001-200512.nc snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc snc_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512.nc snc_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512.nc snc.nc\nSun Dec 30 18:36:26 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/hi [...]
+		:Conventions = "CF-1.4" ;
+		:project_id = "CMIP5" ;
+		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+		:parent_experiment = "pre-industrial control" ;
+		:modeling_realm = "landIce land" ;
+		:realization = 1 ;
+		:cmor_version = "2.8.1" ;
+		:NCO = "20121231" ;
+		:nco_openmp_thread_number = 1 ;
+
+group: snc_LImon_CCSM4_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-04-06T21:56:45Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CCSM4_historical_r0i0p0.nc areacella: areacella_fx_CCSM4_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CCSM4" ;
+  		:model_id = "CCSM4" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 937. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "a905e243-27f1-4172-93f0-820be7cbecf0" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.track1.1deg.008" ;
+  		:cesm_repotag = "ccsm4_0_beta43" ;
+  		:cesm_compset = "B20TRCN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155645.062" ;
+  		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-04-06T21:56:48Z" ;
+  		:history = "Sun Dec 30 18:36:26 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:56:48Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 61.37692, 60.05015, 58.4291, 52.22442, 45.59546, 38.34413, 33.19439, 
+      32.58879, 36.96843, 46.77308, 55.4712, 60.32861, 61.04955, 60.44368, 
+      57.63164, 52.03623, 44.6402, 37.95646, 33.34058, 32.47639, 35.50756, 
+      46.31984, 53.72991, 58.95955, 60.95681, 61.11084, 57.52742, 51.32803, 
+      45.14587, 40.29467, 33.73788, 32.70026, 37.01862, 45.55758, 54.71373, 
+      59.162, 60.49402, 60.44479, 58.98337, 52.96589, 45.39301, 38.34033, 
+      33.43645, 33.21604, 36.51387, 46.52538, 54.32355, 58.58232, 60.87978, 
+      61.41938, 57.53942, 51.85412, 45.21275, 39.17278, 34.27933, 33.29999, 
+      38.14444, 45.14943, 53.41065, 59.09114, 60.27861, 59.60844, 56.82986, 
+      51.97681, 45.15635, 39.0167, 33.56191, 32.95903, 37.38646, 46.47746, 
+      55.41323, 58.8252, 60.78623, 60.38117, 57.39877, 51.70517, 45.06911, 
+      38.33918, 33.48069, 32.87983, 35.75778, 45.74866, 54.30301, 59.07576, 
+      61.49643, 60.46125, 58.06967, 52.55259, 45.21442, 38.55085, 33.19324, 
+      32.48174, 36.98698, 45.74392, 54.11422, 59.98495, 61.07553, 60.54321, 
+      57.67136, 52.29048, 45.42659, 38.75619, 34.01928, 33.5902, 36.57975, 
+      46.28279, 53.94093, 59.1823, 59.90117, 60.60514, 58.14232, 51.95426, 
+      45.31351, 38.22518, 33.69085, 32.81738, 36.91416, 45.93295, 53.72042, 
+      58.92241, 60.5704, 59.9584, 57.54922, 51.54271, 44.41114, 37.51797, 
+      33.28756, 32.99597, 34.97438, 43.05939, 53.61963, 58.91531, 60.3945, 
+      61.40278, 57.09048, 48.77563, 43.52256, 36.93203, 33.11032, 32.41613, 
+      35.42476, 46.7383, 54.30549, 59.32918, 61.34241, 60.01548, 57.78593, 
+      51.88309, 44.22643, 36.99844, 32.54312, 32.08076, 35.33289, 43.7334, 
+      52.8833, 59.13483, 60.68259, 59.88637, 56.71269, 50.60006, 44.79, 
+      38.0248, 32.8781, 32.3756, 36.24483, 44.34415, 54.8398, 59.24604, 
+      60.13624, 60.5146, 57.35886, 51.2986, 44.53012, 38.94698, 32.69814, 
+      32.66948, 36.62969, 45.27304, 53.99754, 57.90419, 61.03916, 59.86766, 
+      55.66969, 51.11906, 44.3401, 38.34132, 33.50579, 32.66288, 36.10672, 
+      46.07471, 53.37682, 59.08301 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CCSM4_historical_r1i1p1_199001-200512
+
+group: snc_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-05-09T19:56:59Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-BGC_esmHistorical_r0i0p0.nc areacella: areacella_fx_CESM1-BGC_esmHistorical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "esmHistorical" ;
+  		:source = "CESM1-BGC" ;
+  		:model_id = "CESM1-BGC" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 1. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "TBD\n See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "c763c1db-4d63-4268-aa34-b1a9ca11cb75" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.1deg.coup.001" ;
+  		:cesm_repotag = "unknown" ;
+  		:cesm_compset = "unknown" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120509  -135659.177" ;
+  		:processing_code_information = "Last Changed Rev: 757 Last Changed Date: 2012-05-09 13:01:12 -0600 (Wed, 09 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "ESM historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-09T19:57:12Z" ;
+  		:history = "Sun Dec 30 18:37:17 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CESM1-BGC_esmHistorical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512.nc\n2012-05-09T19:57:12Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-BGC model output prepared for CMIP5 ESM historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 60.42937, 60.64738, 57.30071, 51.4353, 45.43332, 39.52806, 34.66951, 
+      33.13662, 36.25096, 46.04024, 53.33717, 59.30924, 60.99267, 59.43881, 
+      57.94574, 51.67841, 44.91564, 39.39613, 34.42404, 33.53218, 36.72351, 
+      47.10626, 54.4623, 58.49553, 59.56153, 59.97334, 57.89266, 52.57605, 
+      45.66745, 38.9083, 34.23455, 34.08851, 38.44006, 47.2091, 55.48892, 
+      60.75134, 61.30203, 61.29112, 60.0729, 54.08234, 46.12404, 38.92447, 
+      34.04529, 33.68865, 37.31947, 45.64073, 55.82588, 60.10115, 61.4198, 
+      59.77499, 56.8927, 51.5806, 45.45844, 38.9374, 34.54553, 33.49256, 
+      36.34779, 46.30656, 53.9354, 58.88356, 60.45415, 60.14672, 57.57286, 
+      52.50472, 46.36785, 39.8609, 33.63399, 33.20422, 35.44655, 44.78173, 
+      53.92061, 59.74142, 60.50524, 60.10552, 58.04763, 51.95174, 45.57401, 
+      39.92517, 34.07393, 33.18673, 36.03875, 46.52081, 54.78568, 59.38622, 
+      60.48057, 59.2347, 56.71712, 52.24715, 46.07843, 38.27985, 33.38749, 
+      33.0439, 35.73171, 45.55057, 53.66148, 58.66822, 61.14587, 61.68203, 
+      57.431, 50.35966, 44.36692, 38.19395, 33.53297, 33.26769, 35.39089, 
+      45.34281, 54.08255, 59.35721, 61.94003, 60.47675, 56.81584, 51.78187, 
+      45.66067, 39.36295, 33.72239, 33.26345, 36.18309, 44.39331, 52.50751, 
+      59.50554, 61.95173, 60.64665, 57.34688, 51.2981, 45.21524, 38.18364, 
+      33.42353, 32.79172, 35.11573, 43.63971, 53.21791, 58.21271, 59.6288, 
+      61.27858, 56.47172, 50.35821, 43.80642, 37.97486, 33.80445, 33.41068, 
+      35.89848, 46.58085, 54.50834, 59.01017, 61.5377, 60.76017, 57.91518, 
+      51.82125, 43.89352, 38.06473, 33.38121, 32.91643, 35.2864, 45.38606, 
+      53.46272, 59.2138, 60.37124, 59.06458, 55.75334, 50.40107, 44.48877, 
+      38.5047, 33.78501, 33.20532, 36.02801, 43.41591, 53.39999, 58.97802, 
+      60.57231, 59.36517, 55.10088, 49.68346, 44.11604, 38.80204, 33.5981, 
+      32.79944, 36.32286, 44.73896, 53.55066, 58.98016, 60.80568, 59.11828, 
+      55.20478, 50.08527, 44.43622, 38.27273, 33.41451, 32.98672, 35.45163, 
+      44.04631, 52.83684, 59.77518 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512
+
+group: snc_LImon_CESM1-BGC_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-05-09T19:57:50Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-BGC_historical_r0i0p0.nc areacella: areacella_fx_CESM1-BGC_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-BGC" ;
+  		:model_id = "CESM1-BGC" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 1. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "TBD\n See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "1b9bc30c-5957-4e3f-999f-0a28b5f60139" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.1deg.bdrd.001" ;
+  		:cesm_repotag = "unknown" ;
+  		:cesm_compset = "unknown" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120509  -135750.546" ;
+  		:processing_code_information = "Last Changed Rev: 757 Last Changed Date: 2012-05-09 13:01:12 -0600 (Wed, 09 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-09T19:58:05Z" ;
+  		:history = "Thu Jan 24 16:59:20 2013: ncks -d time,1990-01-01 00:00:0.0, snc_LImon_CESM1-BGC_historical_r1i1p1_185001-200512.nc snc_LImon_CESM1-BGC_historical_r1i1p1_199001-200512.nc\n2012-05-09T19:58:05Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-BGC model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20130125" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 60.81151, 60.83581, 57.40618, 50.77258, 45.05299, 38.55186, 
+      33.70737, 33.04415, 35.72379, 47.15994, 53.97527, 58.59232, 62.0451, 
+      60.02757, 57.57421, 52.67574, 45.38245, 38.96038, 33.7025, 33.30761, 
+      36.09553, 45.33242, 53.43705, 59.69139, 60.2207, 59.44222, 57.08393, 
+      51.60577, 45.91001, 40.35986, 35.51391, 33.55119, 37.95975, 46.05239, 
+      55.25557, 60.17647, 61.67732, 61.58868, 57.89724, 51.44344, 45.45924, 
+      39.27931, 33.92011, 33.49309, 37.62573, 45.77045, 54.64713, 60.00785, 
+      62.98378, 60.98982, 57.44807, 53.21042, 45.43661, 38.67152, 33.94413, 
+      33.15783, 35.94777, 44.61528, 54.27599, 58.80817, 61.2307, 59.79439, 
+      57.08263, 50.52497, 44.07899, 38.27042, 33.51943, 32.94697, 35.40871, 
+      45.28115, 53.79686, 59.03689, 60.84576, 59.65984, 57.90582, 52.30964, 
+      45.07834, 39.25048, 33.8819, 33.14655, 35.57959, 44.89124, 54.50274, 
+      58.59656, 60.65822, 59.59388, 56.29368, 50.73042, 43.93979, 37.35862, 
+      33.44497, 32.98347, 36.43193, 44.7622, 54.04124, 58.71893, 59.85044, 
+      60.0969, 57.5133, 51.66403, 45.28492, 38.6044, 34.07675, 33.54704, 
+      36.35543, 43.59683, 52.81324, 59.19917, 62.49909, 59.65298, 55.79979, 
+      51.49189, 46.20795, 39.5049, 34.17224, 33.11736, 37.46117, 44.75187, 
+      53.72094, 59.15183, 61.0971, 59.81115, 56.52975, 51.89294, 45.86815, 
+      38.33873, 33.06678, 32.81318, 35.49161, 45.98712, 53.63966, 59.74233, 
+      61.00092, 61.10449, 57.47633, 51.74292, 45.13937, 37.65129, 33.35644, 
+      33.50973, 35.10047, 44.06165, 54.06438, 60.30418, 61.70724, 61.21657, 
+      58.94371, 52.51987, 45.48262, 38.52264, 33.92553, 32.91373, 35.71524, 
+      46.23709, 53.22155, 58.81511, 59.43888, 59.1026, 56.43563, 50.23117, 
+      43.67832, 37.89594, 33.47663, 32.65866, 35.80147, 45.50639, 52.66769, 
+      58.6243, 60.40725, 59.98502, 57.12119, 51.65089, 45.57036, 38.15372, 
+      32.98792, 32.49368, 35.69475, 45.33248, 52.4259, 57.92989, 60.0364, 
+      59.07898, 56.09073, 50.74621, 43.55686, 37.64441, 33.23428, 32.99554, 
+      36.66736, 44.9342, 54.54264, 58.61319 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CESM1-BGC_historical_r1i1p1_199001-200512
+
+group: snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-05-18T15:38:52Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-CAM5_historical_r0i0p0.nc areacella: areacella_fx_CESM1-CAM5_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-CAM5" ;
+  		:model_id = "CESM1-CAM5" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 2. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "Neale, R., et.al. 2012: Coupled simulations from CESM1 using the Community Atmosphere Model version 5: (CAM5). See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "2ee6c8fd-9752-4455-bed3-576a01e9fed6" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. This research used resources of the Oak Ridge Leadership Computing Facility, located in the National Center for Computational Sciences at Oak Ridge National Laboratory, which is supported by the Office of Science (BER) of the Department of Energy under Contract DE-AC05-00OR22725." ;
+  		:cesm_casename = "b40_20th_1d_b08c5cn_138j" ;
+  		:cesm_repotag = "cesm1_0_beta08" ;
+  		:cesm_compset = "B20TRC5CN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120518  -093852.130" ;
+  		:processing_code_information = "Last Changed Rev: 776 Last Changed Date: 2012-05-17 09:36:52 -0600 (Thu, 17 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-18T15:38:54Z" ;
+  		:history = "Sun Dec 30 19:53:35 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CESM1-CAM5_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc\n2012-05-18T15:38:54Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-CAM5 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 62.07145, 60.97509, 57.9104, 53.65452, 46.13708, 39.71951, 34.45684, 
+      33.34816, 36.30897, 45.20145, 54.7042, 60.06191, 61.81068, 61.57235, 
+      58.69954, 53.0875, 44.43778, 38.41296, 33.89512, 33.16334, 35.38866, 
+      44.20527, 55.24973, 60.42582, 61.78408, 60.30222, 57.74767, 51.87217, 
+      45.43856, 39.859, 34.65273, 33.69739, 35.79815, 45.94585, 55.98174, 
+      60.11427, 62.11591, 61.35354, 58.43501, 52.39944, 45.27255, 38.83994, 
+      34.82337, 33.47124, 35.81379, 46.57481, 54.41116, 60.62625, 62.25172, 
+      61.1827, 58.42628, 52.6358, 45.15274, 38.88607, 33.73675, 33.29869, 
+      35.76462, 43.97408, 55.61646, 60.97946, 62.00888, 60.70457, 57.56046, 
+      51.62181, 45.01118, 38.69769, 33.83691, 33.11338, 35.41447, 44.51177, 
+      54.35133, 59.83762, 61.02993, 61.28046, 58.4234, 52.3585, 45.51928, 
+      39.02513, 34.5911, 33.34881, 35.93228, 45.4144, 53.66666, 59.19072, 
+      62.61044, 60.99728, 58.37831, 53.53175, 46.06737, 38.39714, 34.13896, 
+      33.22199, 35.57574, 45.33149, 55.18364, 60.08348, 62.00661, 60.72526, 
+      58.49016, 52.98635, 45.39072, 39.37619, 34.2319, 33.21686, 35.65197, 
+      46.41065, 54.66462, 60.34342, 61.5855, 60.53594, 58.07879, 53.05131, 
+      45.6369, 38.99934, 33.72679, 33.10427, 34.7771, 44.55233, 55.62511, 
+      59.83138, 61.37432, 60.32346, 57.32902, 52.26272, 45.0841, 38.28241, 
+      33.7456, 33.1823, 35.83283, 45.20584, 54.09948, 60.86015, 62.31863, 
+      61.09036, 58.49607, 52.52017, 45.4707, 39.66387, 34.60744, 33.46476, 
+      36.29692, 47.46539, 54.06594, 59.21001, 61.56113, 61.5031, 58.06651, 
+      52.88129, 45.14191, 38.97267, 33.80598, 33.34988, 36.13751, 45.83525, 
+      54.13206, 59.95444, 61.17745, 60.35199, 58.45913, 52.94626, 45.55574, 
+      38.65861, 33.37043, 32.96347, 35.39613, 46.5092, 55.11117, 58.78823, 
+      61.00055, 60.24277, 57.43545, 52.00771, 45.43082, 39.07673, 33.98228, 
+      32.92905, 35.72621, 45.6367, 55.0639, 60.17884, 62.44907, 61.56859, 
+      58.70348, 51.78551, 44.38303, 38.12561, 34.06507, 32.99229, 35.49913, 
+      46.25829, 54.67482, 61.06555 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512
+
+group: snc_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-05-17T14:29:14Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-FASTCHEM_historical_r0i0p0.nc areacella: areacella_fx_CESM1-FASTCHEM_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-FASTCHEM" ;
+  		:model_id = "CESM1-FASTCHEM" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 0. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "TBD" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "6b2ee7c3-9fd1-41e8-81d3-363f5f40b846" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.1deg.fschem.002" ;
+  		:cesm_repotag = "ccsm4_0_beta55" ;
+  		:cesm_compset = "B20TRCNCHM" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120517  -082914.590" ;
+  		:processing_code_information = "Last Changed Rev: 774 Last Changed Date: 2012-05-16 16:39:53 -0600 (Wed, 16 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-17T14:29:16Z" ;
+  		:history = "Sun Dec 30 18:44:33 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/atmos-his/snc_LImon_CESM1-FASTCHEM_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/atmos-his/snc_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512.nc\n2012-05-17T14:29:16Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-FASTCHEM model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snc = 61.35922, 60.11757, 56.77606, 51.86809, 44.5789, 38.14515, 33.07576, 
+      33.10382, 36.08701, 44.22195, 53.31831, 58.38189, 61.49045, 61.94424, 
+      57.49084, 51.4422, 45.94965, 39.01295, 33.63499, 32.85659, 37.11253, 
+      44.66447, 53.68621, 59.86607, 60.47795, 60.76228, 56.93726, 51.28774, 
+      44.71006, 38.61081, 33.86168, 33.20221, 36.73127, 47.33617, 56.14992, 
+      59.57047, 61.68317, 60.56863, 57.71325, 52.03714, 45.42717, 37.95629, 
+      34.18681, 33.22436, 37.29691, 46.26162, 54.90151, 60.79268, 61.64498, 
+      61.18701, 58.2198, 51.28855, 44.98966, 38.63614, 33.35585, 32.91083, 
+      36.14466, 44.34061, 55.25936, 59.61454, 60.81066, 59.89703, 56.78886, 
+      51.34318, 44.89197, 37.97543, 33.65519, 32.92331, 34.96158, 46.80618, 
+      54.58622, 60.04884, 62.42439, 61.58648, 58.25958, 52.32566, 44.83265, 
+      37.18033, 33.52879, 33.03136, 36.15388, 46.12405, 53.96253, 59.95536, 
+      60.54895, 58.84748, 56.34169, 50.48568, 43.52483, 38.12297, 33.95269, 
+      33.15511, 35.92193, 43.6329, 54.4885, 58.7534, 59.50955, 59.38222, 
+      56.4384, 50.68229, 44.19793, 37.82106, 33.37074, 33.17641, 36.68989, 
+      44.85901, 53.11116, 57.75417, 60.42802, 59.57334, 56.00442, 50.08305, 
+      43.97726, 38.49365, 33.53299, 32.87168, 35.67901, 45.14764, 53.06521, 
+      58.36853, 60.57628, 59.72157, 56.75367, 50.25916, 43.97816, 38.27824, 
+      33.78714, 33.07768, 35.71507, 43.82384, 53.86621, 59.8281, 62.98288, 
+      60.35318, 56.95187, 50.56234, 44.47134, 37.65242, 33.04737, 32.78938, 
+      35.73754, 45.56456, 53.15977, 58.71597, 59.50213, 59.8814, 57.11369, 
+      51.297, 45.74558, 38.31946, 33.30605, 32.88755, 35.60548, 43.45373, 
+      53.75446, 58.68278, 59.57464, 59.02721, 56.63763, 51.11911, 43.58306, 
+      36.49274, 33.1369, 32.70171, 35.42366, 45.84877, 52.81328, 58.69426, 
+      60.35154, 58.81255, 56.24924, 51.00918, 44.1529, 38.16121, 33.06249, 
+      32.81034, 35.65083, 44.37822, 52.15639, 59.87329, 61.16865, 60.83504, 
+      56.66895, 51.41212, 43.97941, 37.59834, 33.35089, 32.66173, 34.87273, 
+      44.44268, 52.47154, 58.85749 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512
+
+group: snc_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snc(time) ;
+  		snc:standard_name = "surface_snow_area_fraction" ;
+  		snc:long_name = "Snow Area Fraction" ;
+  		snc:comment = "FSNO, CMIP5_table_comment: Fraction of each grid cell that is occupied by snow that rests on land portion of cell." ;
+  		snc:units = "%" ;
+  		snc:original_name = "FSNO" ;
+  		snc:cell_methods = "time: mean (interval: 30 days)" ;
+  		snc:cell_measures = "area: areacella" ;
+  		snc:history = "2012-05-31T13:28:20Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snc:missing_value = 1.e+20f ;
+  		snc:_FillValue = 1.e+20f ;
+  		snc:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-WACCM_historical_r0i0p0.nc areacella: areacella_fx_CESM1-WACCM_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-WACCM" ;
+  		:model_id = "CESM1-WACCM" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 1. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "Marsh, D., et.al. 2012: WACCM4 simulations of atmospheric trends from 1850 to present. See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "ef93cac6-c5d8-4b32-9ff0-9cbd27d8e66a" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.track1.2deg.wcm.007" ;
+  		:cesm_repotag = "ccsm4_0_beta52" ;
+  		:cesm_compset = "BW20TRCN" ;
+  		:resolution = "f19_g16 (1.9x2.5_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on mirage3 at 20120531  -072820.637" ;
+  		:processing_code_information = "Last Changed Rev: 820 Last Changed Date: 2012-05-30 15:07:51 -0600 (Wed, 30 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-31T13:28:21Z" ;
+  		:history = "Sun Dec 30 18:44:48 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/atmos-his/snc_LImon_CESM1-WACCM_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/atmos-his/snc_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512.nc\n2012-05-31T13:28:21Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-WACCM model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.9375, 0.9375 ;
+
+   lon = 178.75 ;
+
+   lon_bnds = 177.508680555556, 180 ;
+
+   snc = 58.30264, 57.57164, 55.40315, 51.30324, 44.92303, 38.5704, 34.73244, 
+      33.40054, 36.39927, 44.70775, 52.15816, 56.68031, 58.03102, 57.54689, 
+      55.26139, 50.4637, 43.77814, 37.38792, 33.62425, 33.55622, 36.64553, 
+      45.27554, 52.15833, 58.00319, 60.39744, 60.92056, 57.63554, 49.88797, 
+      43.92668, 38.43521, 34.53812, 33.3124, 35.9039, 44.06456, 52.36027, 
+      57.0512, 58.79975, 58.51964, 56.20938, 51.16467, 44.37978, 36.94592, 
+      33.22895, 33.14706, 36.17453, 45.27049, 52.18351, 57.12118, 59.51681, 
+      58.67272, 55.35041, 49.88683, 44.25735, 38.44041, 33.5755, 32.74223, 
+      35.94821, 45.38294, 52.94146, 57.9625, 59.15063, 58.10602, 55.73347, 
+      50.96825, 44.56723, 38.10284, 33.3599, 32.98213, 35.90267, 43.69198, 
+      53.58926, 58.14558, 59.82616, 58.78763, 56.74655, 51.95066, 45.35992, 
+      36.72455, 32.72494, 32.69721, 35.77222, 44.46194, 52.06679, 56.87531, 
+      59.6659, 58.29536, 54.9007, 49.42334, 43.95756, 36.97405, 33.28221, 
+      32.84733, 35.55394, 44.29796, 52.48971, 57.30995, 58.13997, 57.98017, 
+      55.87465, 50.05117, 43.26404, 36.44524, 33.10003, 32.76156, 35.33764, 
+      43.94565, 51.96738, 57.09196, 58.89738, 58.25306, 56.59516, 52.6945, 
+      44.78914, 37.78814, 32.69427, 32.55199, 36.63308, 45.10502, 52.95998, 
+      58.76827, 60.31608, 58.63898, 56.55276, 51.78586, 44.54252, 37.68716, 
+      33.18846, 32.67733, 35.96641, 44.42927, 52.38469, 57.34024, 58.62802, 
+      58.19473, 54.8047, 48.94669, 42.90043, 37.16561, 33.53363, 32.7061, 
+      35.18901, 43.03574, 51.86749, 57.74329, 60.09589, 60.36689, 57.27032, 
+      50.42865, 44.00283, 37.74604, 33.42166, 32.72996, 35.66089, 43.93026, 
+      51.86792, 56.20585, 59.0007, 56.74605, 55.26267, 50.96566, 44.89715, 
+      39.17544, 33.97953, 33.06948, 35.02919, 41.76595, 51.58342, 57.55459, 
+      59.76404, 59.17727, 56.35314, 51.4416, 44.05042, 37.53273, 33.42004, 
+      33.01108, 35.84677, 44.90015, 52.5538, 57.30947, 60.00209, 59.43186, 
+      55.75416, 50.16666, 42.99211, 37.32963, 33.30409, 32.98776, 34.92936, 
+      42.45069, 51.19328, 58.13653 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snc_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512
+}
diff --git a/data/snd.cdl b/data/snd.cdl
new file mode 100644
index 0000000..fa3576d
--- /dev/null
+++ b/data/snd.cdl
@@ -0,0 +1,137 @@
+netcdf snd {
+dimensions:
+	time = 192 ;
+variables:
+	double lat ;
+		lat:bounds = "lat_bnds" ;
+		lat:units = "degrees_north" ;
+		lat:axis = "Y" ;
+		lat:long_name = "latitude" ;
+		lat:standard_name = "latitude" ;
+	double lon ;
+		lon:bounds = "lon_bnds" ;
+		lon:units = "degrees_east" ;
+		lon:axis = "X" ;
+		lon:long_name = "longitude" ;
+		lon:standard_name = "longitude" ;
+	float snd(time) ;
+		snd:standard_name = "surface_snow_thickness" ;
+		snd:long_name = "Snow Depth" ;
+		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+		snd:units = "m" ;
+		snd:original_name = "SNOWDP" ;
+		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+		snd:cell_measures = "area: areacella" ;
+		snd:history = "2012-04-06T21:57:06Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+		snd:missing_value = 1.e+20f ;
+		snd:_FillValue = 1.e+20f ;
+		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CCSM4_historical_r0i0p0.nc areacella: areacella_fx_CCSM4_historical_r0i0p0.nc" ;
+	double time(time) ;
+		time:bounds = "time_bnds" ;
+		time:units = "days since 1850-01-01 00:00:00" ;
+		time:calendar = "noleap" ;
+		time:axis = "T" ;
+		time:long_name = "time" ;
+		time:standard_name = "time" ;
+
+// global attributes:
+		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+		:institute_id = "NCAR" ;
+		:experiment_id = "historical" ;
+		:source = "CCSM4" ;
+		:model_id = "CCSM4" ;
+		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+		:parent_experiment_id = "piControl" ;
+		:parent_experiment_rip = "r1i1p1" ;
+		:branch_time = 937. ;
+		:contact = "cesm_data at ucar.edu" ;
+		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+		:initialization_method = 1 ;
+		:physics_version = 1 ;
+		:tracking_id = "2d733abb-3a88-4669-8961-fa994c714e0f" ;
+		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+		:cesm_casename = "b40.20th.track1.1deg.008" ;
+		:cesm_repotag = "ccsm4_0_beta43" ;
+		:cesm_compset = "B20TRCN" ;
+		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155706.724" ;
+		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+		:product = "output" ;
+		:experiment = "historical" ;
+		:frequency = "mon" ;
+		:creation_date = "2012-04-06T21:57:07Z" ;
+		:history = "Wed Aug 28 15:36:35 2013: ncks -4 -O -v snd snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc snd.nc\nSun Dec 30 18:37:33 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:57:07Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+		:Conventions = "CF-1.4" ;
+		:project_id = "CMIP5" ;
+		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+		:parent_experiment = "pre-industrial control" ;
+		:modeling_realm = "landIce land" ;
+		:realization = 1 ;
+		:cmor_version = "2.8.1" ;
+		:NCO = "20130828" ;
+		:nco_openmp_thread_number = 1 ;
+data:
+
+ lat = 0 ;
+
+ lon = 179.375 ;
+
+ snd = 0.2724146, 0.2805385, 0.2834768, 0.2745424, 0.2557565, 0.2344869, 
+    0.2219715, 0.2190395, 0.2220945, 0.2319131, 0.2463375, 0.2607701, 
+    0.2692722, 0.2770566, 0.2791537, 0.270516, 0.2546696, 0.2335674, 
+    0.2220806, 0.2187323, 0.2211094, 0.2305807, 0.245944, 0.2600244, 
+    0.271029, 0.279032, 0.2794289, 0.2702961, 0.2552496, 0.237448, 0.2218089, 
+    0.2197413, 0.2226625, 0.2303976, 0.2442853, 0.2594771, 0.2717321, 
+    0.2789153, 0.2786778, 0.2703565, 0.2531038, 0.2326569, 0.2209008, 
+    0.219136, 0.2223255, 0.2321512, 0.2464486, 0.2593269, 0.2708381, 
+    0.2783013, 0.2802042, 0.2727805, 0.2562031, 0.2376942, 0.2238919, 
+    0.220717, 0.2240804, 0.2324936, 0.2460135, 0.2600223, 0.2709923, 
+    0.2776637, 0.2802023, 0.2731161, 0.257625, 0.2380173, 0.2234037, 
+    0.2204858, 0.2234626, 0.2327554, 0.2484348, 0.2632856, 0.2738608, 
+    0.2827595, 0.2846874, 0.2719233, 0.2554669, 0.2337054, 0.2223311, 
+    0.219457, 0.2217831, 0.2305832, 0.2449607, 0.2592558, 0.2693018, 
+    0.2794678, 0.2849715, 0.2747917, 0.2536268, 0.2352346, 0.2220949, 
+    0.2188839, 0.221791, 0.2320456, 0.2468438, 0.2612689, 0.2724337, 
+    0.2812943, 0.2816801, 0.2718139, 0.2545425, 0.2339947, 0.2233207, 
+    0.220883, 0.2228399, 0.2329358, 0.2485441, 0.262383, 0.2728364, 
+    0.2801743, 0.2834518, 0.2755635, 0.2572154, 0.23524, 0.2241858, 
+    0.2201564, 0.2231563, 0.2329302, 0.2466877, 0.2606887, 0.2712987, 
+    0.2797104, 0.280265, 0.270669, 0.2512513, 0.2314375, 0.2210067, 
+    0.2190172, 0.2205743, 0.2274242, 0.2413106, 0.2553834, 0.2651053, 
+    0.2752735, 0.2759885, 0.2626066, 0.2487948, 0.2309431, 0.2209402, 
+    0.2188502, 0.2205875, 0.2297206, 0.2438147, 0.2585448, 0.2680849, 
+    0.2761216, 0.2784539, 0.2673648, 0.2469543, 0.2282923, 0.2180633, 
+    0.2160996, 0.2179174, 0.2250961, 0.2379094, 0.2522934, 0.264903, 
+    0.272292, 0.2732264, 0.265145, 0.2500148, 0.2297041, 0.2185939, 
+    0.2163664, 0.2192902, 0.2271949, 0.2400659, 0.2554764, 0.266905, 
+    0.2749299, 0.2785495, 0.2679975, 0.2518781, 0.2328067, 0.2180953, 
+    0.2168675, 0.2205294, 0.2292409, 0.2434324, 0.2566255, 0.2681567, 
+    0.2755063, 0.2762004, 0.2689444, 0.2509382, 0.232049, 0.2202254, 
+    0.2178997, 0.2200232, 0.2298912, 0.2441406, 0.2583995 ;
+
+ time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+    51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 51600.5, 
+    51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 51845.5, 51875, 
+    51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 52088, 52118.5, 52149, 
+    52179.5, 52210.5, 52240, 52269.5, 52300, 52330.5, 52361, 52391.5, 
+    52422.5, 52453, 52483.5, 52514, 52544.5, 52575.5, 52605, 52634.5, 52665, 
+    52695.5, 52726, 52756.5, 52787.5, 52818, 52848.5, 52879, 52909.5, 
+    52940.5, 52970, 52999.5, 53030, 53060.5, 53091, 53121.5, 53152.5, 53183, 
+    53213.5, 53244, 53274.5, 53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 
+    53486.5, 53517.5, 53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 
+    53729.5, 53760, 53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 
+    54004.5, 54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 
+    54247.5, 54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+    54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+    54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 55008, 
+    55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 55250.5, 55281, 
+    55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 55495.5, 55525, 
+    55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 55738, 55768.5, 55799, 
+    55829.5, 55860.5, 55890, 55919.5, 55950, 55980.5, 56011, 56041.5, 
+    56072.5, 56103, 56133.5, 56164, 56194.5, 56225.5, 56255, 56284.5, 56315, 
+    56345.5, 56376, 56406.5, 56437.5, 56468, 56498.5, 56529, 56559.5, 
+    56590.5, 56620, 56649.5, 56680, 56710.5, 56741, 56771.5, 56802.5, 56833, 
+    56863.5, 56894, 56924.5 ;
+}
diff --git a/data/snd_grp.cdl b/data/snd_grp.cdl
new file mode 100644
index 0000000..f6746cb
--- /dev/null
+++ b/data/snd_grp.cdl
@@ -0,0 +1,722 @@
+netcdf snd_grp {
+
+// global attributes:
+		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+		:institute_id = "NCAR" ;
+		:experiment_id = "historical" ;
+		:source = "CCSM4" ;
+		:model_id = "CCSM4" ;
+		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+		:parent_experiment_id = "piControl" ;
+		:parent_experiment_rip = "r1i1p1" ;
+		:branch_time = 937. ;
+		:contact = "cesm_data at ucar.edu" ;
+		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+		:initialization_method = 1 ;
+		:physics_version = 1 ;
+		:tracking_id = "2d733abb-3a88-4669-8961-fa994c714e0f" ;
+		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+		:cesm_casename = "b40.20th.track1.1deg.008" ;
+		:cesm_repotag = "ccsm4_0_beta43" ;
+		:cesm_compset = "B20TRCN" ;
+		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155706.724" ;
+		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+		:product = "output" ;
+		:experiment = "historical" ;
+		:frequency = "mon" ;
+		:creation_date = "2012-04-06T21:57:07Z" ;
+		:history = "Wed Aug 28 15:34:50 2013: ncecat --gag snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc snd_grp.nc\nSun Dec 30 18:37:33 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:57:07Z CMOR rewrote data to comply with CF standar [...]
+		:Conventions = "CF-1.4" ;
+		:project_id = "CMIP5" ;
+		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+		:parent_experiment = "pre-industrial control" ;
+		:modeling_realm = "landIce land" ;
+		:realization = 1 ;
+		:cmor_version = "2.8.1" ;
+		:NCO = "20121231" ;
+		:nco_openmp_thread_number = 1 ;
+
+group: snd_LImon_CCSM4_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-04-06T21:57:06Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CCSM4_historical_r0i0p0.nc areacella: areacella_fx_CCSM4_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CCSM4" ;
+  		:model_id = "CCSM4" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 937. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "2d733abb-3a88-4669-8961-fa994c714e0f" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.track1.1deg.008" ;
+  		:cesm_repotag = "ccsm4_0_beta43" ;
+  		:cesm_compset = "B20TRCN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155706.724" ;
+  		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-04-06T21:57:07Z" ;
+  		:history = "Sun Dec 30 18:37:33 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:57:07Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.2724146, 0.2805385, 0.2834768, 0.2745424, 0.2557565, 0.2344869, 
+      0.2219715, 0.2190395, 0.2220945, 0.2319131, 0.2463375, 0.2607701, 
+      0.2692722, 0.2770566, 0.2791537, 0.270516, 0.2546696, 0.2335674, 
+      0.2220806, 0.2187323, 0.2211094, 0.2305807, 0.245944, 0.2600244, 
+      0.271029, 0.279032, 0.2794289, 0.2702961, 0.2552496, 0.237448, 
+      0.2218089, 0.2197413, 0.2226625, 0.2303976, 0.2442853, 0.2594771, 
+      0.2717321, 0.2789153, 0.2786778, 0.2703565, 0.2531038, 0.2326569, 
+      0.2209008, 0.219136, 0.2223255, 0.2321512, 0.2464486, 0.2593269, 
+      0.2708381, 0.2783013, 0.2802042, 0.2727805, 0.2562031, 0.2376942, 
+      0.2238919, 0.220717, 0.2240804, 0.2324936, 0.2460135, 0.2600223, 
+      0.2709923, 0.2776637, 0.2802023, 0.2731161, 0.257625, 0.2380173, 
+      0.2234037, 0.2204858, 0.2234626, 0.2327554, 0.2484348, 0.2632856, 
+      0.2738608, 0.2827595, 0.2846874, 0.2719233, 0.2554669, 0.2337054, 
+      0.2223311, 0.219457, 0.2217831, 0.2305832, 0.2449607, 0.2592558, 
+      0.2693018, 0.2794678, 0.2849715, 0.2747917, 0.2536268, 0.2352346, 
+      0.2220949, 0.2188839, 0.221791, 0.2320456, 0.2468438, 0.2612689, 
+      0.2724337, 0.2812943, 0.2816801, 0.2718139, 0.2545425, 0.2339947, 
+      0.2233207, 0.220883, 0.2228399, 0.2329358, 0.2485441, 0.262383, 
+      0.2728364, 0.2801743, 0.2834518, 0.2755635, 0.2572154, 0.23524, 
+      0.2241858, 0.2201564, 0.2231563, 0.2329302, 0.2466877, 0.2606887, 
+      0.2712987, 0.2797104, 0.280265, 0.270669, 0.2512513, 0.2314375, 
+      0.2210067, 0.2190172, 0.2205743, 0.2274242, 0.2413106, 0.2553834, 
+      0.2651053, 0.2752735, 0.2759885, 0.2626066, 0.2487948, 0.2309431, 
+      0.2209402, 0.2188502, 0.2205875, 0.2297206, 0.2438147, 0.2585448, 
+      0.2680849, 0.2761216, 0.2784539, 0.2673648, 0.2469543, 0.2282923, 
+      0.2180633, 0.2160996, 0.2179174, 0.2250961, 0.2379094, 0.2522934, 
+      0.264903, 0.272292, 0.2732264, 0.265145, 0.2500148, 0.2297041, 
+      0.2185939, 0.2163664, 0.2192902, 0.2271949, 0.2400659, 0.2554764, 
+      0.266905, 0.2749299, 0.2785495, 0.2679975, 0.2518781, 0.2328067, 
+      0.2180953, 0.2168675, 0.2205294, 0.2292409, 0.2434324, 0.2566255, 
+      0.2681567, 0.2755063, 0.2762004, 0.2689444, 0.2509382, 0.232049, 
+      0.2202254, 0.2178997, 0.2200232, 0.2298912, 0.2441406, 0.2583995 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CCSM4_historical_r1i1p1_199001-200512
+
+group: snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-05-18T15:39:16Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-CAM5_historical_r0i0p0.nc areacella: areacella_fx_CESM1-CAM5_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-CAM5" ;
+  		:model_id = "CESM1-CAM5" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 2. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "Neale, R., et.al. 2012: Coupled simulations from CESM1 using the Community Atmosphere Model version 5: (CAM5). See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "76783d9a-c5da-46c0-bc92-51c6cc1be100" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. This research used resources of the Oak Ridge Leadership Computing Facility, located in the National Center for Computational Sciences at Oak Ridge National Laboratory, which is supported by the Office of Science (BER) of the Department of Energy under Contract DE-AC05-00OR22725." ;
+  		:cesm_casename = "b40_20th_1d_b08c5cn_138j" ;
+  		:cesm_repotag = "cesm1_0_beta08" ;
+  		:cesm_compset = "B20TRC5CN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120518  -093916.416" ;
+  		:processing_code_information = "Last Changed Rev: 776 Last Changed Date: 2012-05-17 09:36:52 -0600 (Thu, 17 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-18T15:39:18Z" ;
+  		:history = "Sun Dec 30 19:53:37 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CESM1-CAM5_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc\n2012-05-18T15:39:18Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-CAM5 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.256985, 0.2632169, 0.2638666, 0.2571382, 0.2397551, 0.2226972, 
+      0.2117357, 0.2092562, 0.2110159, 0.2187275, 0.232471, 0.2451041, 
+      0.25559, 0.262308, 0.263666, 0.2530842, 0.2354192, 0.219715, 0.2109925, 
+      0.2091601, 0.2101545, 0.2170589, 0.2314613, 0.2463234, 0.2565176, 
+      0.2618284, 0.2628052, 0.2544692, 0.2387005, 0.2239094, 0.2126885, 
+      0.2100891, 0.2110389, 0.2183972, 0.2327309, 0.2458724, 0.256275, 
+      0.2631488, 0.2623489, 0.2537029, 0.238484, 0.2220767, 0.2126471, 
+      0.2098042, 0.211005, 0.2187067, 0.2322753, 0.2455713, 0.2557092, 
+      0.2640642, 0.2651167, 0.2535568, 0.2382084, 0.2209739, 0.2110021, 
+      0.2091861, 0.2104682, 0.217094, 0.2318764, 0.2454598, 0.2558737, 
+      0.262004, 0.2621183, 0.251463, 0.2369802, 0.2199399, 0.2108326, 
+      0.2090928, 0.2101073, 0.2165558, 0.2288471, 0.2424463, 0.2511085, 
+      0.2579598, 0.259104, 0.2501604, 0.2355066, 0.2208411, 0.212263, 
+      0.2098267, 0.2107716, 0.2182428, 0.2311743, 0.2435891, 0.2561887, 
+      0.2622698, 0.263788, 0.2558271, 0.2375138, 0.219795, 0.2111067, 
+      0.2092032, 0.2103797, 0.2178221, 0.2317605, 0.2452588, 0.2536525, 
+      0.2633139, 0.2622121, 0.2538035, 0.2367099, 0.2219658, 0.2114051, 
+      0.2088391, 0.2098973, 0.2176176, 0.2312553, 0.2448709, 0.2537117, 
+      0.2602636, 0.2637344, 0.255207, 0.2373102, 0.2211185, 0.2105945, 
+      0.2085426, 0.2093321, 0.2157642, 0.230161, 0.2424657, 0.2527601, 
+      0.2596833, 0.2605767, 0.251743, 0.2345774, 0.2186949, 0.2102133, 
+      0.208804, 0.2099326, 0.2175232, 0.2300847, 0.2435895, 0.2554428, 
+      0.2614534, 0.2630322, 0.2531208, 0.2380999, 0.2227041, 0.2116546, 
+      0.2091951, 0.2100595, 0.2192327, 0.2322452, 0.2459539, 0.2574637, 
+      0.2654756, 0.2652414, 0.2546236, 0.2371593, 0.2209351, 0.2105269, 
+      0.2089383, 0.2106287, 0.2186315, 0.2323946, 0.2462126, 0.256966, 
+      0.2630634, 0.2635241, 0.2521529, 0.2369699, 0.2197802, 0.2101604, 
+      0.2086898, 0.2099109, 0.2181743, 0.2330967, 0.245994, 0.2564292, 
+      0.2634324, 0.2634153, 0.2549918, 0.237323, 0.2208854, 0.2105953, 
+      0.2081383, 0.2095932, 0.2168244, 0.2312412, 0.244787, 0.2550615, 
+      0.2624009, 0.2624273, 0.2522097, 0.2344595, 0.2187714, 0.2107309, 
+      0.208405, 0.2093614, 0.2174629, 0.2313699, 0.246277 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512
+}
diff --git a/data/snd_ncwa.cdl b/data/snd_ncwa.cdl
new file mode 100644
index 0000000..1451a11
--- /dev/null
+++ b/data/snd_ncwa.cdl
@@ -0,0 +1,2086 @@
+netcdf snd_ncwa {
+
+// global attributes:
+		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+		:institute_id = "NCAR" ;
+		:experiment_id = "historical" ;
+		:source = "CCSM4" ;
+		:model_id = "CCSM4" ;
+		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+		:parent_experiment_id = "piControl" ;
+		:parent_experiment_rip = "r1i1p1" ;
+		:branch_time = 937. ;
+		:contact = "cesm_data at ucar.edu" ;
+		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+		:initialization_method = 1 ;
+		:physics_version = 1 ;
+		:tracking_id = "2d733abb-3a88-4669-8961-fa994c714e0f" ;
+		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+		:cesm_casename = "b40.20th.track1.1deg.008" ;
+		:cesm_repotag = "ccsm4_0_beta43" ;
+		:cesm_compset = "B20TRCN" ;
+		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155706.724" ;
+		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+		:product = "output" ;
+		:experiment = "historical" ;
+		:frequency = "mon" ;
+		:creation_date = "2012-04-06T21:57:07Z" ;
+		:history = "Tue Aug 27 14:55:01 2013: ncecat --gag snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc snd_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512.nc snd_LImon_CESM1-BGC_historical_r1i1p1_199001-200512.nc snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc snd_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512.nc snd_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512.nc snd.nc\nSun Dec 30 18:37:33 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/hi [...]
+		:Conventions = "CF-1.4" ;
+		:project_id = "CMIP5" ;
+		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+		:parent_experiment = "pre-industrial control" ;
+		:modeling_realm = "landIce land" ;
+		:realization = 1 ;
+		:cmor_version = "2.8.1" ;
+		:NCO = "20121231" ;
+		:nco_openmp_thread_number = 1 ;
+
+group: snd_LImon_CCSM4_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-04-06T21:57:06Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CCSM4_historical_r0i0p0.nc areacella: areacella_fx_CCSM4_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CCSM4" ;
+  		:model_id = "CCSM4" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 937. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:references = "Gent P. R., et.al. 2011: The Community Climate System Model version 4. J. Climate, doi: 10.1175/2011JCLI4083.1" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "2d733abb-3a88-4669-8961-fa994c714e0f" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.track1.1deg.008" ;
+  		:cesm_repotag = "ccsm4_0_beta43" ;
+  		:cesm_compset = "B20TRCN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120406  -155706.724" ;
+  		:processing_code_information = "Last Changed Rev: 677 Last Changed Date: 2012-04-05 11:56:11 -0600 (Thu, 05 Apr 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-04-06T21:57:07Z" ;
+  		:history = "Sun Dec 30 18:37:33 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CCSM4_historical_r1i1p1_199001-200512.nc\n2012-04-06T21:57:07Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CCSM4 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.2724146, 0.2805385, 0.2834768, 0.2745424, 0.2557565, 0.2344869, 
+      0.2219715, 0.2190395, 0.2220945, 0.2319131, 0.2463375, 0.2607701, 
+      0.2692722, 0.2770566, 0.2791537, 0.270516, 0.2546696, 0.2335674, 
+      0.2220806, 0.2187323, 0.2211094, 0.2305807, 0.245944, 0.2600244, 
+      0.271029, 0.279032, 0.2794289, 0.2702961, 0.2552496, 0.237448, 
+      0.2218089, 0.2197413, 0.2226625, 0.2303976, 0.2442853, 0.2594771, 
+      0.2717321, 0.2789153, 0.2786778, 0.2703565, 0.2531038, 0.2326569, 
+      0.2209008, 0.219136, 0.2223255, 0.2321512, 0.2464486, 0.2593269, 
+      0.2708381, 0.2783013, 0.2802042, 0.2727805, 0.2562031, 0.2376942, 
+      0.2238919, 0.220717, 0.2240804, 0.2324936, 0.2460135, 0.2600223, 
+      0.2709923, 0.2776637, 0.2802023, 0.2731161, 0.257625, 0.2380173, 
+      0.2234037, 0.2204858, 0.2234626, 0.2327554, 0.2484348, 0.2632856, 
+      0.2738608, 0.2827595, 0.2846874, 0.2719233, 0.2554669, 0.2337054, 
+      0.2223311, 0.219457, 0.2217831, 0.2305832, 0.2449607, 0.2592558, 
+      0.2693018, 0.2794678, 0.2849715, 0.2747917, 0.2536268, 0.2352346, 
+      0.2220949, 0.2188839, 0.221791, 0.2320456, 0.2468438, 0.2612689, 
+      0.2724337, 0.2812943, 0.2816801, 0.2718139, 0.2545425, 0.2339947, 
+      0.2233207, 0.220883, 0.2228399, 0.2329358, 0.2485441, 0.262383, 
+      0.2728364, 0.2801743, 0.2834518, 0.2755635, 0.2572154, 0.23524, 
+      0.2241858, 0.2201564, 0.2231563, 0.2329302, 0.2466877, 0.2606887, 
+      0.2712987, 0.2797104, 0.280265, 0.270669, 0.2512513, 0.2314375, 
+      0.2210067, 0.2190172, 0.2205743, 0.2274242, 0.2413106, 0.2553834, 
+      0.2651053, 0.2752735, 0.2759885, 0.2626066, 0.2487948, 0.2309431, 
+      0.2209402, 0.2188502, 0.2205875, 0.2297206, 0.2438147, 0.2585448, 
+      0.2680849, 0.2761216, 0.2784539, 0.2673648, 0.2469543, 0.2282923, 
+      0.2180633, 0.2160996, 0.2179174, 0.2250961, 0.2379094, 0.2522934, 
+      0.264903, 0.272292, 0.2732264, 0.265145, 0.2500148, 0.2297041, 
+      0.2185939, 0.2163664, 0.2192902, 0.2271949, 0.2400659, 0.2554764, 
+      0.266905, 0.2749299, 0.2785495, 0.2679975, 0.2518781, 0.2328067, 
+      0.2180953, 0.2168675, 0.2205294, 0.2292409, 0.2434324, 0.2566255, 
+      0.2681567, 0.2755063, 0.2762004, 0.2689444, 0.2509382, 0.232049, 
+      0.2202254, 0.2178997, 0.2200232, 0.2298912, 0.2441406, 0.2583995 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CCSM4_historical_r1i1p1_199001-200512
+
+group: snd_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-05-09T19:57:47Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-BGC_esmHistorical_r0i0p0.nc areacella: areacella_fx_CESM1-BGC_esmHistorical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "esmHistorical" ;
+  		:source = "CESM1-BGC" ;
+  		:model_id = "CESM1-BGC" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 1. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "TBD\n See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "4a0d95f4-418e-4b2f-bd18-25d83dd02599" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.1deg.coup.001" ;
+  		:cesm_repotag = "unknown" ;
+  		:cesm_compset = "unknown" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120509  -135747.834" ;
+  		:processing_code_information = "Last Changed Rev: 757 Last Changed Date: 2012-05-09 13:01:12 -0600 (Wed, 09 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "ESM historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-09T19:57:54Z" ;
+  		:history = "Sun Dec 30 18:38:21 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CESM1-BGC_esmHistorical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512.nc\n2012-05-09T19:57:54Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-BGC model output prepared for CMIP5 ESM historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.2680996, 0.2774232, 0.2773497, 0.2678236, 0.2523736, 0.2353036, 
+      0.2241789, 0.2202552, 0.222204, 0.2306893, 0.2446921, 0.2576785, 
+      0.2682439, 0.2751035, 0.277965, 0.2696223, 0.2531217, 0.2362053, 
+      0.2236448, 0.2213705, 0.223623, 0.2329047, 0.2455211, 0.2591642, 
+      0.2693312, 0.2794877, 0.2825508, 0.2744004, 0.254947, 0.2357145, 
+      0.2242698, 0.2229662, 0.2258033, 0.2355103, 0.2489066, 0.2639475, 
+      0.2739551, 0.282854, 0.285384, 0.2742695, 0.2558796, 0.2363208, 
+      0.2251717, 0.2235664, 0.2253847, 0.2336286, 0.2477256, 0.262718, 
+      0.273165, 0.2797343, 0.280659, 0.2718306, 0.2566107, 0.2371835, 
+      0.2254015, 0.2228705, 0.2243886, 0.2328582, 0.247127, 0.2616663, 
+      0.2728699, 0.2804817, 0.2821359, 0.2728669, 0.2567041, 0.2372598, 
+      0.2235135, 0.2211705, 0.2232186, 0.2304765, 0.2452655, 0.2588243, 
+      0.2686609, 0.2770467, 0.28127, 0.2719267, 0.2565492, 0.2370524, 
+      0.2241652, 0.2221043, 0.2240341, 0.232785, 0.2474582, 0.2619536, 
+      0.271959, 0.2789219, 0.2804725, 0.2712795, 0.2545575, 0.2343643, 
+      0.2228464, 0.2208607, 0.222697, 0.2307697, 0.2453604, 0.2603765, 
+      0.270963, 0.2783473, 0.2791822, 0.2671294, 0.2513891, 0.2327273, 
+      0.2230895, 0.2215021, 0.2227538, 0.2310819, 0.2444584, 0.2590207, 
+      0.269716, 0.2776413, 0.2770783, 0.269074, 0.2532291, 0.2348496, 
+      0.2231196, 0.2215401, 0.2229901, 0.2301446, 0.2427478, 0.2571933, 
+      0.2685693, 0.2760618, 0.2773207, 0.2689409, 0.2521003, 0.2327903, 
+      0.2218084, 0.2191039, 0.2212152, 0.2275012, 0.2422791, 0.2555068, 
+      0.2664767, 0.2757832, 0.2764494, 0.2647938, 0.2490902, 0.2317704, 
+      0.2224389, 0.2204234, 0.2224246, 0.2305548, 0.2446094, 0.2598239, 
+      0.2725414, 0.2792821, 0.2792836, 0.2694865, 0.2504343, 0.2331266, 
+      0.2226404, 0.2204186, 0.2220359, 0.2297373, 0.2448198, 0.2600302, 
+      0.270699, 0.2782437, 0.2768129, 0.2677913, 0.2520528, 0.2336722, 
+      0.2226274, 0.2207537, 0.2224943, 0.2297986, 0.2440405, 0.2572867, 
+      0.2677648, 0.2762023, 0.2748129, 0.2662947, 0.2533411, 0.2347853, 
+      0.2230045, 0.2207553, 0.2227484, 0.230375, 0.2443826, 0.2584139, 
+      0.2697071, 0.2758932, 0.2760971, 0.2664725, 0.2526272, 0.2326955, 
+      0.2209367, 0.2194094, 0.2209915, 0.228255, 0.2412456, 0.2555254 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512
+
+group: snd_LImon_CESM1-BGC_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-05-09T19:58:41Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-BGC_historical_r0i0p0.nc areacella: areacella_fx_CESM1-BGC_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-BGC" ;
+  		:model_id = "CESM1-BGC" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 1. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "TBD\n See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "71321285-8e0d-4615-87db-35dd436c1ca7" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.1deg.bdrd.001" ;
+  		:cesm_repotag = "unknown" ;
+  		:cesm_compset = "unknown" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120509  -135841.391" ;
+  		:processing_code_information = "Last Changed Rev: 757 Last Changed Date: 2012-05-09 13:01:12 -0600 (Wed, 09 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-09T19:59:01Z" ;
+  		:history = "Thu Jan 24 16:59:53 2013: ncks -d time,1990-01-01 00:00:0.0, snd_LImon_CESM1-BGC_historical_r1i1p1_185001-200512.nc snd_LImon_CESM1-BGC_historical_r1i1p1_199001-200512.nc\n2012-05-09T19:59:01Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-BGC model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20130125" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.2679237, 0.2765716, 0.2792061, 0.269538, 0.2549225, 0.2356643, 
+      0.2239816, 0.2214208, 0.2232746, 0.2330443, 0.2482322, 0.2618538, 
+      0.2718751, 0.2784872, 0.2816284, 0.2744199, 0.2547633, 0.2358269, 
+      0.2238155, 0.2212213, 0.2229176, 0.2314795, 0.2445377, 0.2586936, 
+      0.2689886, 0.2767572, 0.2793723, 0.2701983, 0.2571563, 0.2410009, 
+      0.2276393, 0.2232079, 0.2254889, 0.2328709, 0.246804, 0.2621065, 
+      0.2749951, 0.2822544, 0.2840958, 0.2735372, 0.2571335, 0.2369379, 
+      0.2245413, 0.2230619, 0.2254388, 0.2328702, 0.2470193, 0.2612281, 
+      0.273309, 0.2807706, 0.2803822, 0.2722653, 0.2537876, 0.2356591, 
+      0.2237536, 0.221576, 0.2239067, 0.2312796, 0.2460659, 0.2598847, 
+      0.2710848, 0.2802893, 0.2828076, 0.2704725, 0.2541187, 0.2350643, 
+      0.2240993, 0.2223159, 0.2238365, 0.2320055, 0.2454544, 0.2591887, 
+      0.2701084, 0.2796279, 0.2826913, 0.2736143, 0.2549144, 0.2370585, 
+      0.2247572, 0.2223565, 0.2238854, 0.231767, 0.2443522, 0.2578636, 
+      0.2712161, 0.2780971, 0.2755284, 0.2660622, 0.2495453, 0.2318953, 
+      0.2233751, 0.2216059, 0.223766, 0.23187, 0.246279, 0.2603699, 
+      0.2707274, 0.2787572, 0.2818029, 0.2734509, 0.2564729, 0.2358576, 
+      0.2246435, 0.2225418, 0.2250151, 0.231232, 0.2457517, 0.2608106, 
+      0.2720586, 0.2782162, 0.2794435, 0.2731014, 0.2584612, 0.2379365, 
+      0.2251921, 0.2220701, 0.2250715, 0.2343054, 0.2491052, 0.2627716, 
+      0.2734136, 0.279099, 0.2794518, 0.2727314, 0.2575629, 0.2346312, 
+      0.2223997, 0.2212141, 0.2226047, 0.2319023, 0.2452941, 0.258326, 
+      0.2698498, 0.2775199, 0.2788604, 0.2690693, 0.252148, 0.232261, 
+      0.2235355, 0.2229979, 0.2245945, 0.2310091, 0.2443134, 0.2585285, 
+      0.2701935, 0.2781954, 0.2802249, 0.2686754, 0.2521832, 0.2358972, 
+      0.2247827, 0.2217561, 0.2242245, 0.2330889, 0.2470436, 0.2605419, 
+      0.2706355, 0.2782127, 0.2791632, 0.2685546, 0.2515925, 0.2346935, 
+      0.2236731, 0.2211577, 0.2231798, 0.230194, 0.2433317, 0.257083, 
+      0.2682059, 0.2764317, 0.2791491, 0.2723773, 0.255015, 0.2332694, 
+      0.2229499, 0.2207035, 0.2225349, 0.2303905, 0.2440189, 0.2581901, 
+      0.2682388, 0.2741917, 0.2765204, 0.267206, 0.2482102, 0.232184, 
+      0.2224177, 0.2212571, 0.2237087, 0.2322933, 0.2465013, 0.260654 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CESM1-BGC_historical_r1i1p1_199001-200512
+
+group: snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-05-18T15:39:16Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-CAM5_historical_r0i0p0.nc areacella: areacella_fx_CESM1-CAM5_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-CAM5" ;
+  		:model_id = "CESM1-CAM5" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 2. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "Neale, R., et.al. 2012: Coupled simulations from CESM1 using the Community Atmosphere Model version 5: (CAM5). See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "76783d9a-c5da-46c0-bc92-51c6cc1be100" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. This research used resources of the Oak Ridge Leadership Computing Facility, located in the National Center for Computational Sciences at Oak Ridge National Laboratory, which is supported by the Office of Science (BER) of the Department of Energy under Contract DE-AC05-00OR22725." ;
+  		:cesm_casename = "b40_20th_1d_b08c5cn_138j" ;
+  		:cesm_repotag = "cesm1_0_beta08" ;
+  		:cesm_compset = "B20TRC5CN" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120518  -093916.416" ;
+  		:processing_code_information = "Last Changed Rev: 776 Last Changed Date: 2012-05-17 09:36:52 -0600 (Thu, 17 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-18T15:39:18Z" ;
+  		:history = "Sun Dec 30 19:53:37 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CESM1-CAM5_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/historical-exp/snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc\n2012-05-18T15:39:18Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-CAM5 model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.256985, 0.2632169, 0.2638666, 0.2571382, 0.2397551, 0.2226972, 
+      0.2117357, 0.2092562, 0.2110159, 0.2187275, 0.232471, 0.2451041, 
+      0.25559, 0.262308, 0.263666, 0.2530842, 0.2354192, 0.219715, 0.2109925, 
+      0.2091601, 0.2101545, 0.2170589, 0.2314613, 0.2463234, 0.2565176, 
+      0.2618284, 0.2628052, 0.2544692, 0.2387005, 0.2239094, 0.2126885, 
+      0.2100891, 0.2110389, 0.2183972, 0.2327309, 0.2458724, 0.256275, 
+      0.2631488, 0.2623489, 0.2537029, 0.238484, 0.2220767, 0.2126471, 
+      0.2098042, 0.211005, 0.2187067, 0.2322753, 0.2455713, 0.2557092, 
+      0.2640642, 0.2651167, 0.2535568, 0.2382084, 0.2209739, 0.2110021, 
+      0.2091861, 0.2104682, 0.217094, 0.2318764, 0.2454598, 0.2558737, 
+      0.262004, 0.2621183, 0.251463, 0.2369802, 0.2199399, 0.2108326, 
+      0.2090928, 0.2101073, 0.2165558, 0.2288471, 0.2424463, 0.2511085, 
+      0.2579598, 0.259104, 0.2501604, 0.2355066, 0.2208411, 0.212263, 
+      0.2098267, 0.2107716, 0.2182428, 0.2311743, 0.2435891, 0.2561887, 
+      0.2622698, 0.263788, 0.2558271, 0.2375138, 0.219795, 0.2111067, 
+      0.2092032, 0.2103797, 0.2178221, 0.2317605, 0.2452588, 0.2536525, 
+      0.2633139, 0.2622121, 0.2538035, 0.2367099, 0.2219658, 0.2114051, 
+      0.2088391, 0.2098973, 0.2176176, 0.2312553, 0.2448709, 0.2537117, 
+      0.2602636, 0.2637344, 0.255207, 0.2373102, 0.2211185, 0.2105945, 
+      0.2085426, 0.2093321, 0.2157642, 0.230161, 0.2424657, 0.2527601, 
+      0.2596833, 0.2605767, 0.251743, 0.2345774, 0.2186949, 0.2102133, 
+      0.208804, 0.2099326, 0.2175232, 0.2300847, 0.2435895, 0.2554428, 
+      0.2614534, 0.2630322, 0.2531208, 0.2380999, 0.2227041, 0.2116546, 
+      0.2091951, 0.2100595, 0.2192327, 0.2322452, 0.2459539, 0.2574637, 
+      0.2654756, 0.2652414, 0.2546236, 0.2371593, 0.2209351, 0.2105269, 
+      0.2089383, 0.2106287, 0.2186315, 0.2323946, 0.2462126, 0.256966, 
+      0.2630634, 0.2635241, 0.2521529, 0.2369699, 0.2197802, 0.2101604, 
+      0.2086898, 0.2099109, 0.2181743, 0.2330967, 0.245994, 0.2564292, 
+      0.2634324, 0.2634153, 0.2549918, 0.237323, 0.2208854, 0.2105953, 
+      0.2081383, 0.2095932, 0.2168244, 0.2312412, 0.244787, 0.2550615, 
+      0.2624009, 0.2624273, 0.2522097, 0.2344595, 0.2187714, 0.2107309, 
+      0.208405, 0.2093614, 0.2174629, 0.2313699, 0.246277 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512
+
+group: snd_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-05-17T14:29:34Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-FASTCHEM_historical_r0i0p0.nc areacella: areacella_fx_CESM1-FASTCHEM_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-FASTCHEM" ;
+  		:model_id = "CESM1-FASTCHEM" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 0. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "TBD" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "1a30898b-bd4c-455f-998d-eb85be033c6a" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.1deg.fschem.002" ;
+  		:cesm_repotag = "ccsm4_0_beta55" ;
+  		:cesm_compset = "B20TRCNCHM" ;
+  		:resolution = "f09_g16 (0.9x1.25_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on silver.cgd.ucar.edu at 20120517  -082934.541" ;
+  		:processing_code_information = "Last Changed Rev: 774 Last Changed Date: 2012-05-16 16:39:53 -0600 (Wed, 16 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-17T14:29:36Z" ;
+  		:history = "Sun Dec 30 18:45:12 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/atmos-his/snd_LImon_CESM1-FASTCHEM_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/atmos-his/snd_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512.nc\n2012-05-17T14:29:36Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-FASTCHEM model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.46875, 0.46875 ;
+
+   lon = 179.375 ;
+
+   lon_bnds = 178.752170138889, 180 ;
+
+   snd = 0.2750264, 0.2827012, 0.2836201, 0.2763774, 0.2556965, 0.2349145, 
+      0.2234712, 0.2218066, 0.2237734, 0.2314995, 0.2457788, 0.2601142, 
+      0.2716116, 0.2805784, 0.2814254, 0.2727282, 0.2564223, 0.2354449, 
+      0.223776, 0.2213256, 0.2240499, 0.2317501, 0.2467353, 0.2610167, 
+      0.272912, 0.2800703, 0.2806183, 0.2709811, 0.2541679, 0.2351057, 
+      0.2241215, 0.2218101, 0.2238038, 0.2330264, 0.2465664, 0.2609607, 
+      0.2734672, 0.2807797, 0.2816935, 0.2728434, 0.2560812, 0.2344272, 
+      0.2257501, 0.2231447, 0.2256618, 0.2338017, 0.2485296, 0.2631541, 
+      0.2738454, 0.2821576, 0.2848077, 0.2726309, 0.25622, 0.2365833, 
+      0.2243394, 0.2223225, 0.2245991, 0.2321757, 0.247523, 0.261483, 
+      0.270463, 0.2779397, 0.2782156, 0.2700277, 0.2551512, 0.2355088, 
+      0.2250358, 0.2232409, 0.224447, 0.2324292, 0.2463789, 0.260181, 
+      0.2702854, 0.2781136, 0.2786251, 0.2687235, 0.2518046, 0.2330264, 
+      0.2247491, 0.2227924, 0.2249915, 0.232993, 0.2472644, 0.2602928, 
+      0.2687927, 0.2750922, 0.2785683, 0.2708525, 0.2517959, 0.235072, 
+      0.2242447, 0.221228, 0.2225715, 0.2302298, 0.2436894, 0.2583888, 
+      0.2672615, 0.274336, 0.2765679, 0.2675373, 0.252947, 0.2337484, 
+      0.223468, 0.2225862, 0.2247808, 0.2328842, 0.2476225, 0.2629686, 
+      0.2737435, 0.2814075, 0.2808386, 0.2706385, 0.2559216, 0.2358668, 
+      0.2237674, 0.2215497, 0.2237885, 0.2306668, 0.2450456, 0.2596844, 
+      0.2692972, 0.2774424, 0.2796294, 0.2698047, 0.2524751, 0.2342875, 
+      0.2246875, 0.2223008, 0.2244863, 0.231443, 0.246162, 0.2601232, 
+      0.2702578, 0.2776871, 0.2774735, 0.2698084, 0.2528532, 0.2328277, 
+      0.2224298, 0.2205528, 0.2226472, 0.2315841, 0.2467164, 0.2583822, 
+      0.2682005, 0.2759511, 0.278217, 0.2702186, 0.2537842, 0.2342858, 
+      0.2223947, 0.2199988, 0.2225848, 0.229691, 0.2416748, 0.255105, 
+      0.2672125, 0.2748722, 0.2774377, 0.2681693, 0.2483882, 0.2303857, 
+      0.222295, 0.219738, 0.2214673, 0.2295648, 0.242586, 0.2567997, 
+      0.2672747, 0.2748377, 0.2768176, 0.2680204, 0.2507775, 0.2316573, 
+      0.2215038, 0.2195645, 0.2214504, 0.2289246, 0.2421537, 0.2563136, 
+      0.2659799, 0.2741868, 0.2763584, 0.2664885, 0.2485915, 0.2309204, 
+      0.2217642, 0.2195142, 0.2208287, 0.2281606, 0.2420237, 0.2576153 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CESM1-FASTCHEM_historical_r1i1p1_199001-200512
+
+group: snd_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512 {
+  dimensions:
+  	bnds = 2 ;
+  	time = 192 ;
+  variables:
+  	double lat ;
+  		lat:bounds = "lat_bnds" ;
+  		lat:units = "degrees_north" ;
+  		lat:axis = "Y" ;
+  		lat:long_name = "latitude" ;
+  		lat:standard_name = "latitude" ;
+  	double lat_bnds(bnds) ;
+  	double lon ;
+  		lon:bounds = "lon_bnds" ;
+  		lon:units = "degrees_east" ;
+  		lon:axis = "X" ;
+  		lon:long_name = "longitude" ;
+  		lon:standard_name = "longitude" ;
+  	double lon_bnds(bnds) ;
+  	float snd(time) ;
+  		snd:standard_name = "surface_snow_thickness" ;
+  		snd:long_name = "Snow Depth" ;
+  		snd:comment = "SNOWDP unchanged, CMIP5_table_comment: where land over land, this is computed as the mean thickness of snow in the land portion of the grid cell (averaging over the entire land portion, including the snow-free fraction).  Reported as 0.0 where the land fraction is 0." ;
+  		snd:units = "m" ;
+  		snd:original_name = "SNOWDP" ;
+  		snd:cell_methods = "time: mean (interval: 30 days) area: mean where land" ;
+  		snd:cell_measures = "area: areacella" ;
+  		snd:history = "2012-05-31T13:28:31Z altered by CMOR: replaced missing value flag (1e+36) with standard missing value (1e+20)." ;
+  		snd:missing_value = 1.e+20f ;
+  		snd:_FillValue = 1.e+20f ;
+  		snd:associated_files = "baseURL: http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation gridspecFile: gridspec_landIce_fx_CESM1-WACCM_historical_r0i0p0.nc areacella: areacella_fx_CESM1-WACCM_historical_r0i0p0.nc" ;
+  	double time(time) ;
+  		time:bounds = "time_bnds" ;
+  		time:units = "days since 1850-01-01 00:00:00" ;
+  		time:calendar = "noleap" ;
+  		time:axis = "T" ;
+  		time:long_name = "time" ;
+  		time:standard_name = "time" ;
+  	double time_bnds(time, bnds) ;
+
+  // group attributes:
+  		:institution = "NSF/DOE NCAR (National Center for Atmospheric Research) Boulder, CO, USA" ;
+  		:institute_id = "NSF-DOE-NCAR" ;
+  		:experiment_id = "historical" ;
+  		:source = "CESM1-WACCM" ;
+  		:model_id = "CESM1-WACCM" ;
+  		:forcing = "Sl GHG Vl SS Ds SD BC MD OC Oz AA LU" ;
+  		:parent_experiment_id = "piControl" ;
+  		:parent_experiment_rip = "r1i1p1" ;
+  		:branch_time = 1. ;
+  		:contact = "cesm_data at ucar.edu" ;
+  		:comment = "CESM home page: http://www.cesm.ucar.edu" ;
+  		:references = "Marsh, D., et.al. 2012: WACCM4 simulations of atmospheric trends from 1850 to present. See also http://www.cesm.ucar.edu/publications" ;
+  		:initialization_method = 1 ;
+  		:physics_version = 1 ;
+  		:tracking_id = "6e463115-a801-48c5-9545-b48c3a7a180c" ;
+  		:acknowledgements = "The CESM project is supported by the National Science Foundation and the Office of Science (BER) of the U.S. Department of Energy. NCAR is sponsored by the National Science Foundation. Computing resources were provided by the Climate Simulation Laboratory at the NCAR Computational and Information Systems Laboratory (CISL), sponsored by the National Science Foundation and other agencies." ;
+  		:cesm_casename = "b40.20th.track1.2deg.wcm.007" ;
+  		:cesm_repotag = "ccsm4_0_beta52" ;
+  		:cesm_compset = "BW20TRCN" ;
+  		:resolution = "f19_g16 (1.9x2.5_gx1v6)" ;
+  		:forcing_note = "Additional information on the external forcings used in this experiment can be found at http://www.cesm.ucar.edu/CMIP5/forcing_information" ;
+  		:processed_by = "strandwg on mirage3 at 20120531  -072831.809" ;
+  		:processing_code_information = "Last Changed Rev: 820 Last Changed Date: 2012-05-30 15:07:51 -0600 (Wed, 30 May 2012) Repository UUID: d2181dbe-5796-6825-dc7f-cbd98591f93d" ;
+  		:product = "output" ;
+  		:experiment = "historical" ;
+  		:frequency = "mon" ;
+  		:creation_date = "2012-05-31T13:28:32Z" ;
+  		:history = "Sun Dec 30 18:45:22 2012: ncks -d time,1990-01-01 00:00:0.0, /media/grele_data/wenshan/cesm/atmos-his/snd_LImon_CESM1-WACCM_historical_r1i1p1_185001-200512.nc /media/grele_data/wenshan/cesm/atmos-his/snd_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512.nc\n2012-05-31T13:28:32Z CMOR rewrote data to comply with CF standards and CMIP5 requirements." ;
+  		:Conventions = "CF-1.4" ;
+  		:project_id = "CMIP5" ;
+  		:table_id = "Table LImon (12 January 2012) 429410275cb5466e41180ad9466db1bf" ;
+  		:title = "CESM1-WACCM model output prepared for CMIP5 historical" ;
+  		:parent_experiment = "pre-industrial control" ;
+  		:modeling_realm = "landIce land" ;
+  		:realization = 1 ;
+  		:cmor_version = "2.8.1" ;
+  		:NCO = "20121231" ;
+  data:
+
+   lat = 0 ;
+
+   lat_bnds = -0.9375, 0.9375 ;
+
+   lon = 178.75 ;
+
+   lon_bnds = 177.508680555556, 180 ;
+
+   snd = 0.2741823, 0.2824234, 0.2835466, 0.2758278, 0.2592108, 0.2445476, 
+      0.2362207, 0.2327209, 0.2339729, 0.2415667, 0.254081, 0.2668318, 
+      0.2776704, 0.2833323, 0.2829214, 0.2750239, 0.2579146, 0.2433279, 
+      0.2357496, 0.2334602, 0.2348245, 0.2426183, 0.2551862, 0.2685837, 
+      0.2790258, 0.2836361, 0.285545, 0.275064, 0.2617241, 0.2459763, 
+      0.2361272, 0.2328044, 0.2343751, 0.2408614, 0.252481, 0.26551, 
+      0.2758977, 0.2821526, 0.2819755, 0.2731315, 0.258273, 0.2410503, 
+      0.233101, 0.231459, 0.2328015, 0.2411605, 0.2531981, 0.2657311, 
+      0.2766429, 0.2822783, 0.2826326, 0.2742737, 0.2595432, 0.2434109, 
+      0.232832, 0.23026, 0.2317569, 0.2397589, 0.2518112, 0.2638411, 
+      0.2744505, 0.2813324, 0.2845167, 0.2752372, 0.2618941, 0.2432088, 
+      0.2331954, 0.2315808, 0.2335714, 0.2393669, 0.2510756, 0.2645056, 
+      0.2758176, 0.2837704, 0.2843393, 0.2761432, 0.261086, 0.2405482, 
+      0.2322877, 0.2305892, 0.232166, 0.2392834, 0.2511204, 0.2637244, 
+      0.273531, 0.2796766, 0.278335, 0.2708297, 0.2571437, 0.2404203, 
+      0.2339079, 0.2320844, 0.2327563, 0.2394752, 0.25227, 0.263505, 
+      0.2719481, 0.2777592, 0.2775739, 0.2676228, 0.2544996, 0.2402884, 
+      0.233513, 0.2325867, 0.2333694, 0.2403591, 0.2521506, 0.265958, 
+      0.2759033, 0.2837518, 0.2859447, 0.2791762, 0.2582048, 0.2420362, 
+      0.2324883, 0.2315544, 0.2337006, 0.2415399, 0.2543033, 0.2681247, 
+      0.2802576, 0.286882, 0.2876555, 0.2765487, 0.2582408, 0.2420035, 
+      0.2330316, 0.231646, 0.2335648, 0.2413843, 0.2534434, 0.265111, 
+      0.2754072, 0.2803425, 0.2803829, 0.2729563, 0.2566476, 0.2419513, 
+      0.2342586, 0.2317768, 0.2327354, 0.2401332, 0.2524537, 0.2648278, 
+      0.2770981, 0.2830914, 0.2829121, 0.2730316, 0.2579781, 0.2424567, 
+      0.2336262, 0.231944, 0.2337552, 0.2398906, 0.2512689, 0.2645685, 
+      0.2760909, 0.2815068, 0.2858039, 0.2779543, 0.2627673, 0.24641, 
+      0.2342154, 0.2320748, 0.2330589, 0.2381751, 0.2505077, 0.2635954, 
+      0.275107, 0.2803818, 0.2799959, 0.2725537, 0.2562479, 0.2409138, 
+      0.2329532, 0.2315231, 0.2334719, 0.2396966, 0.2507728, 0.2636725, 
+      0.2738827, 0.2803729, 0.2779124, 0.2681367, 0.2545889, 0.2406674, 
+      0.2332186, 0.2320741, 0.233371, 0.2389776, 0.2515268, 0.2643626 ;
+
+   time = 51115.5, 51145, 51174.5, 51205, 51235.5, 51266, 51296.5, 51327.5, 
+      51358, 51388.5, 51419, 51449.5, 51480.5, 51510, 51539.5, 51570, 
+      51600.5, 51631, 51661.5, 51692.5, 51723, 51753.5, 51784, 51814.5, 
+      51845.5, 51875, 51904.5, 51935, 51965.5, 51996, 52026.5, 52057.5, 
+      52088, 52118.5, 52149, 52179.5, 52210.5, 52240, 52269.5, 52300, 
+      52330.5, 52361, 52391.5, 52422.5, 52453, 52483.5, 52514, 52544.5, 
+      52575.5, 52605, 52634.5, 52665, 52695.5, 52726, 52756.5, 52787.5, 
+      52818, 52848.5, 52879, 52909.5, 52940.5, 52970, 52999.5, 53030, 
+      53060.5, 53091, 53121.5, 53152.5, 53183, 53213.5, 53244, 53274.5, 
+      53305.5, 53335, 53364.5, 53395, 53425.5, 53456, 53486.5, 53517.5, 
+      53548, 53578.5, 53609, 53639.5, 53670.5, 53700, 53729.5, 53760, 
+      53790.5, 53821, 53851.5, 53882.5, 53913, 53943.5, 53974, 54004.5, 
+      54035.5, 54065, 54094.5, 54125, 54155.5, 54186, 54216.5, 54247.5, 
+      54278, 54308.5, 54339, 54369.5, 54400.5, 54430, 54459.5, 54490, 
+      54520.5, 54551, 54581.5, 54612.5, 54643, 54673.5, 54704, 54734.5, 
+      54765.5, 54795, 54824.5, 54855, 54885.5, 54916, 54946.5, 54977.5, 
+      55008, 55038.5, 55069, 55099.5, 55130.5, 55160, 55189.5, 55220, 
+      55250.5, 55281, 55311.5, 55342.5, 55373, 55403.5, 55434, 55464.5, 
+      55495.5, 55525, 55554.5, 55585, 55615.5, 55646, 55676.5, 55707.5, 
+      55738, 55768.5, 55799, 55829.5, 55860.5, 55890, 55919.5, 55950, 
+      55980.5, 56011, 56041.5, 56072.5, 56103, 56133.5, 56164, 56194.5, 
+      56225.5, 56255, 56284.5, 56315, 56345.5, 56376, 56406.5, 56437.5, 
+      56468, 56498.5, 56529, 56559.5, 56590.5, 56620, 56649.5, 56680, 
+      56710.5, 56741, 56771.5, 56802.5, 56833, 56863.5, 56894, 56924.5 ;
+
+   time_bnds =
+  51100, 51131,
+  51131, 51159,
+  51159, 51190,
+  51190, 51220,
+  51220, 51251,
+  51251, 51281,
+  51281, 51312,
+  51312, 51343,
+  51343, 51373,
+  51373, 51404,
+  51404, 51434,
+  51434, 51465,
+  51465, 51496,
+  51496, 51524,
+  51524, 51555,
+  51555, 51585,
+  51585, 51616,
+  51616, 51646,
+  51646, 51677,
+  51677, 51708,
+  51708, 51738,
+  51738, 51769,
+  51769, 51799,
+  51799, 51830,
+  51830, 51861,
+  51861, 51889,
+  51889, 51920,
+  51920, 51950,
+  51950, 51981,
+  51981, 52011,
+  52011, 52042,
+  52042, 52073,
+  52073, 52103,
+  52103, 52134,
+  52134, 52164,
+  52164, 52195,
+  52195, 52226,
+  52226, 52254,
+  52254, 52285,
+  52285, 52315,
+  52315, 52346,
+  52346, 52376,
+  52376, 52407,
+  52407, 52438,
+  52438, 52468,
+  52468, 52499,
+  52499, 52529,
+  52529, 52560,
+  52560, 52591,
+  52591, 52619,
+  52619, 52650,
+  52650, 52680,
+  52680, 52711,
+  52711, 52741,
+  52741, 52772,
+  52772, 52803,
+  52803, 52833,
+  52833, 52864,
+  52864, 52894,
+  52894, 52925,
+  52925, 52956,
+  52956, 52984,
+  52984, 53015,
+  53015, 53045,
+  53045, 53076,
+  53076, 53106,
+  53106, 53137,
+  53137, 53168,
+  53168, 53198,
+  53198, 53229,
+  53229, 53259,
+  53259, 53290,
+  53290, 53321,
+  53321, 53349,
+  53349, 53380,
+  53380, 53410,
+  53410, 53441,
+  53441, 53471,
+  53471, 53502,
+  53502, 53533,
+  53533, 53563,
+  53563, 53594,
+  53594, 53624,
+  53624, 53655,
+  53655, 53686,
+  53686, 53714,
+  53714, 53745,
+  53745, 53775,
+  53775, 53806,
+  53806, 53836,
+  53836, 53867,
+  53867, 53898,
+  53898, 53928,
+  53928, 53959,
+  53959, 53989,
+  53989, 54020,
+  54020, 54051,
+  54051, 54079,
+  54079, 54110,
+  54110, 54140,
+  54140, 54171,
+  54171, 54201,
+  54201, 54232,
+  54232, 54263,
+  54263, 54293,
+  54293, 54324,
+  54324, 54354,
+  54354, 54385,
+  54385, 54416,
+  54416, 54444,
+  54444, 54475,
+  54475, 54505,
+  54505, 54536,
+  54536, 54566,
+  54566, 54597,
+  54597, 54628,
+  54628, 54658,
+  54658, 54689,
+  54689, 54719,
+  54719, 54750,
+  54750, 54781,
+  54781, 54809,
+  54809, 54840,
+  54840, 54870,
+  54870, 54901,
+  54901, 54931,
+  54931, 54962,
+  54962, 54993,
+  54993, 55023,
+  55023, 55054,
+  55054, 55084,
+  55084, 55115,
+  55115, 55146,
+  55146, 55174,
+  55174, 55205,
+  55205, 55235,
+  55235, 55266,
+  55266, 55296,
+  55296, 55327,
+  55327, 55358,
+  55358, 55388,
+  55388, 55419,
+  55419, 55449,
+  55449, 55480,
+  55480, 55511,
+  55511, 55539,
+  55539, 55570,
+  55570, 55600,
+  55600, 55631,
+  55631, 55661,
+  55661, 55692,
+  55692, 55723,
+  55723, 55753,
+  55753, 55784,
+  55784, 55814,
+  55814, 55845,
+  55845, 55876,
+  55876, 55904,
+  55904, 55935,
+  55935, 55965,
+  55965, 55996,
+  55996, 56026,
+  56026, 56057,
+  56057, 56088,
+  56088, 56118,
+  56118, 56149,
+  56149, 56179,
+  56179, 56210,
+  56210, 56241,
+  56241, 56269,
+  56269, 56300,
+  56300, 56330,
+  56330, 56361,
+  56361, 56391,
+  56391, 56422,
+  56422, 56453,
+  56453, 56483,
+  56483, 56514,
+  56514, 56544,
+  56544, 56575,
+  56575, 56606,
+  56606, 56634,
+  56634, 56665,
+  56665, 56695,
+  56695, 56726,
+  56726, 56756,
+  56756, 56787,
+  56787, 56818,
+  56818, 56848,
+  56848, 56879,
+  56879, 56909,
+  56909, 56940 ;
+  } // group snd_LImon_CESM1-WACCM_historical_r1i1p1_199001-200512
+}
diff --git a/doc/ANNOUNCE b/doc/ANNOUNCE
index 712684e..32f03f1 100644
--- a/doc/ANNOUNCE
+++ b/doc/ANNOUNCE
@@ -1,147 +1,206 @@
-$Header: /cvsroot/nco/nco/doc/ANNOUNCE,v 1.453 2012/02/14 05:39:03 zender Exp $ -*-text-*-
+$Header: /cvsroot/nco/nco/doc/ANNOUNCE,v 1.648 2013/12/03 00:28:01 zender Exp $ -*-text-*-
 
-The netCDF operators NCO version 4.0.9 are ready. 
+The netCDF Operators NCO version 4.3.9 are ready. 
 
 http://nco.sf.net (Homepage)
 http://dust.ess.uci.edu/nco (Homepage "mirror")
 
-This release contains a number of minor improvements for corner cases 
-encountered with ncea, ncap2, and ncatted. This has been the longest
-release cycle in many years, because no serious bugs were known, few
-new features were added, and because...hey, we're volunteers, no 
-further explanations necessary. Fortunately, NASA has recently given
-us indications (nothing binding yet), that they may fund NCO to
-develop support for netCDF4 groups and to write some NCO wrappers for 
-HDF-EOS files. More on that next time.
-
-4.0.9 also reverts the 4.0.8 workaround for the NOFILL bug recently
-found to be present in all netCDF versions since 1999. NCO 4.0.9 
-assumes that the underlying netCDF library has been patched to fix the
-NOFILL bug, i.e., NCO 4.0.9 requires netCDF version 4.1.3 or later.
-
-http://nco.sf.net#bug_nofill
-
-Work on NCO 4.1.0 is underway, focused on making a more robust 
-build/configuration environment and on simplifying issues described in 
-the KNOWN BUGS NOT YET FIXED section below.
+We are pleased to report the birth of the operator nces.
+nces is for netCDF Ensemble Statistics.
+nces includes the existing functionality of ncea and extends it by
+allowing groups to be treated as an unlimited dimension of datasets.   
+nces is really ncea with a powerful new feature and a new name.
+I will debut nces at AGU (Friday 12/13 11:35 AM Moscone West 2010).  
+See below for more info on the feature. Regarding the name...
+
+We renamed ncea as nces to more accurately describe the operator.
+For historical reasons, NCO is full of misnamed operators:
+NCO itself is misnamed because the operators now work well on HDF (4
+and 5) files, not just netCDF files. We tried to change their name
+to SDO (Scientific Data Operators) but the new name didn't stick.
+And the "averagers" (ncea, ncra, ncwa) are all misnamed because they
+all do many statistics (min/max/ttl/rms...) besides averages. 
+This feature addition is an opportune time to rename ncea as nces.
+ncea is now deprecated, though will remain supported for some time.
+
+We faced the same problem of back-compatibility when we renamed ncdiff
+to ncbo many years ago. We will use the same method. Invoking 'nces'
+produces the same results as the old 'ncea' so scripts do not break. 
+Under the hood, 'ncea' invokes 'nces --nsm_fl', just as 'ncdiff' 
+invokes 'ncbo --op_typ=subtract'. To cause nces to utilize the new
+group ensemble mode, invoke it with 'nces --nsm_grp'. This is similar
+to how ncecat has two modes, record aggregation (the default) and
+group aggregation, invoked with 'ncecat --rag' and 'ncecat --gag', 
+respectively. 
+
+This version also improves ncks support for XML (NcML) output.
+All output now validates without errors with the NcML 2.2 schema.  
+Happy NcML'ing! There is also a bugfix for NaNs in ncatted.
+
+Work on NCO 4.4.0 is underway. It focuses on stability and speed.  
+There will be some netCDF4 mop-up, including netCDF4 support for
+various options (all -X, ncwa -w and -m), and, possibly, improved
+support for HDF4 files. Heads-up: Unless users report unforeseen
+difficulties transitioning from ncea to nces, NCO 4.4.0 will rename
+ncra as ncrs and ncwa as ncws (Record Statistics and Weighted
+Statistics, respectively). 
 
 Enjoy,
 Charlie
 
-Other "New stuff" in 4.0.9 summary (full details always in ChangeLog):
-
-A. Revert netCDF NOFILL bug workaround from NCO 4.0.8. 
-   Assume netCDF 4.1.3+ is installed and use NOFILL mode as before. 
-   http://nco.sf.net#bug_nofill
-
-B. Improve CF convention support for "bounds" attribute.
-   http://nco.sf.net/nco.html#bnd
-
-C. ncap2 array() function now works on multi-dimensional arrays.
-   Pass array() a template the same shape as the desired output:
-   var_out=array(1,2,three_dmn_rec_var); // 1,3,5,...155,157,159
-
-D. Fix ncap2 print() function
-
-E. Warn when number of attributes exceeds NC_MAX_ATTRS
-
-F. Print helpful hint with NC_EVARSIZE errors. Suggest users try more
-   capacious output file types.
+"New stuff" in 4.3.9 summary (full details always in ChangeLog):
+
+NEW FEATURES:
+
+A. ncea is now nces or nces --nsm_fl, meaning ensembles of files.
+   Use nces --nsm_grp, for ensembles of groups, a new feature.
+   The same input is valid in both modes. Members of a group ensemble
+   are groups that share the same structure, parent group, and nesting
+   level. Their contents usually have different values because they
+   are realizations of replicated experiments. 
+   In group-ensemble mode nces computes the statistics across
+   the ensemble of groups, which may span multiple input files. 
+   Files may contain members of multiple ensembles. However, all
+   ensembles must have at least one member in the first input file. 
+   Group ensembles behave as a pseudo-record dimension, in that a
+   group ensemble may comprise an arbitrary and extensible number of
+   realizations in each file, and may be composed of multiple files.
+   Output statistics are stored in the parent group by default.
+   If the ensemble members are /cesm/01 and /cesm/02, then the
+   computed statistic will be in /cesm in the output file.
+   The --nsm_sfx option instructs nces to instead store output in 
+   a new child group of the parent created by attaching the suffix
+   to the parent group's name, i.e., /cesm/cesm_avg:
+   nces          mdl1.nc mdl2.nc mdl3.nc out.nc # Same as ncea
+   nces --nsm_fl mdl1.nc mdl2.nc mdl3.nc out.nc # Same as ncea
+   nces --nsm_grp                  mdl1.nc mdl2.nc mdl3.nc out.nc
+   nces --nsm_grp --nsm_sfx='_avg' mdl1.nc mdl2.nc mdl3.nc out.nc
+   http://nco.sf.net/nco.html#nces
+
+B. Much improved XML/NcML standards compliance and flexibility.
+   Separators for XML now user-configurable with --xml_spr_chr and
+   --xml_spr_nmr for character types (i.e., strings) and numeric
+   types (i.e., numbers), respectively:
+   ncks --xml_spr_chr='***' in.nc # Override default separator '*'
+   ncks --xml_spr_nmr=', '  in.nc # Override default separator ' '
+   ncks dumps all netCDF3/netCDF4 groups and atomic types 
+   (as usual with NCO, netCDF4 non-atomic types are ignored).
+   Output validates without errors against NcML 2.2 schema. 
+   Java/NcML users please test and and give us feedback!
+   http://nco.sf.net/nco.html#xml
+
+BUG FIXES:
+
+A. Fix ncatted so it does not treat zero as NaN when changing a
+   missing value (_FillValue) from NaN to something else. 
+   Problem reported by Jianfu Pan.
+
+B. Correct XML-mode issues, many reported by Aleksandar Jelenak 
+   1. Print </variable> in metadata mode
+   2. Adds type="typ_nm" attribute to non-string attribute elements
+   3. Add separator="foo" element when separator is not whitespace
+   4. Fix int64-type printing
+   5. Use NcML not CDL type names
+   6. Add hidden _Unsigned attribute for unsigned types
+   7. Add hidden _FillValue attribute for unsigned types
+   8. Do not print underscores for missing data in XML mode
+   9. Add shape="" to scalar variables (cough, cough)
+
+KNOWN ISSUES NOT YET FIXED:
+
+   This section of ANNOUNCE reports and reminds users of the
+   existence and severity of known, not yet fixed, problems. 
+   These problems occur with NCO 4.3.7 built/tested with netCDF
+   4.3.1-rc4 snapshot 20131119 on top of HDF5 hdf5-1.8.9 with these methods: 
 
-G. Warn when concatenating files containing packed data.
-   User is now warned to be sure that packing factors in all input files
-   exactly match those in the first file since factors are copied from
-   first file only. Otherwise users should unpack, then concatenate,
-   then pack. 
+   cd ~/nco;./configure --enable-netcdf4  # Configure mechanism -or-
+   cd ~/nco/bld;make dir;make all;make ncap2 # Old Makefile mechanism
 
-H. Warn when appended variable has suspicious record length.
-   NCO forbids appending variables if dimension sizes do not match
-   between input and output files. Except for the record dimension.
-   For various reasons, it should be possible, and so NCO allows,
-   appending variables with differently sized record dimensions.
-   Now instead of doing this silently, NCO issues a warning.
-   Power users can still enjoy this "feature", while novice users 
-   will hopefully take heed of the warning.
+A. NOT YET FIXED
+   netCDF4 library fails when renaming dimension and variable using
+   that dimension, in either order. Works fine with netCDF3.
+   Hence coordinate renaming does not work with netCDF4 files.
+   Problem with netCDF4 library implementation.
 
-I. Fix overly-zealous ncap2 packing propagation:
-   Thanks to Ken5746 for reporting this problem.
-   Previous versions of NCO treated packing attributes like all other 
-   attributes in that the scale_factor and add_offset of the LHS-most
-   variable on the RHS of an expression were propagated to the LHS
-   result. This caused problems when multiple RHS variables had
-   differing packing attributes. Hence scale_factor and add_offset are 
-   no longer propagated to the LHS.
-   Thanks to Henry Butowsky for the fix. 
+   Demonstration:
+   ncks -O -4 -v lat_T42 ~/nco/data/in.nc ~/foo.nc
+   ncrename -O -D 2 -d lat_T42,lat -v lat_T42,lat ~/foo.nc ~/foo2.nc # Breaks with "NetCDF: HDF error"
+   ncks -m ~/foo.nc
 
-J. Fix treatment of _FillValue in ncea:
-   When invoked with the (non-default) summing and integration option 
-   -y ttl = -N, ncea would incorrectly handle the corner case where
-   the value of an array element in the first two input files was
-   _FillValue. In this case, ncea wrote a zero instead of _FillValue,
-   as demonstrated by 
+   20130724: Verified problem still exists
+   Bug report filed: netCDF #YQN-334036: problem renaming dimension and coordinate in netCDF4 file
+   Workaround: Use ncrename twice; first rename the variable, then
+   rename the dimension.
 
-   ncea -O -y ttl -v mss_val_scl -p ~/nco/data in.nc in.nc ~/foo.nc
-   ncks -H ~/foo.nc
+B. NOT YET FIXED (would require DAP protocol change?)
+   Unable to retrieve contents of variables including period '.' in name
+   Periods are legal characters in netCDF variable names.
+   Metadata are returned successfully, data are not.
+   DAP non-transparency: Works locally, fails through DAP server.
 
-   The correct output of this is the _FillValue, i.e., 1.0e36, not 0.
+   Demonstration:
+   ncks -O -C -D 3 -v var_nm.dot -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc # Fails to find variable
 
-KNOWN BUGS NOT YET FIXED:
+   20130724: Verified problem still exists. 
+   Stopped testing because inclusion of var_nm.dot broke all test scripts.
+   NB: Hard to fix since DAP interprets '.' as structure delimiter in HTTP query string.
 
-   This section of the ANNOUNCE file is intended to make clear the
-   existence and severity of known, not yet fixed, problems. 
+   Bug report filed: https://www.unidata.ucar.edu/jira/browse/NCF-47
 
-A. NOT YET FIXED
-   Correctly read netCDF4 input over DAP, write netCDF4 output, then read resulting file.
-   Replacing netCDF4 with netCDF3 in either location of preceding sentence leads to success.
+C. NOT YET FIXED (would require DAP protocol change)
+   Correctly read scalar characters over DAP.
    DAP non-transparency: Works locally, fails through DAP server.
+   Problem, IMHO, is with DAP definition/protocol
 
    Demonstration:
-   ncks -4 -O -v three_dmn_rec_var http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in_4.nc ~/foo.nc
-   ncks ~/foo.nc # breaks with "NetCDF: Invalid dimension ID or name"
+   ncks -O -D 1 -H -C -m --md5_dgs -v md5_a -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
 
-   20120213: Verified problem still exists
-   Bug report filed: netCDF #QUN-641037: dimension ID ordering assumptions
+   20120801: Verified problem still exists
+   Bug report not filed
+   Cause: DAP translates scalar characters into 64-element (this
+   dimension is user-configurable, but still...), NUL-terminated
+   strings so MD5 agreement fails 
 
-B. NOT YET FIXED
-   netCDF4 library fails when renaming dimension and variable using
-   that dimension, in either order. Works fine with netCDF3.
-   Problem with netCDF4 library implementation.
+D. NOT YET FIXED (NCO problem)
+   Correctly read arrays of NC_STRING with embedded delimiters in ncatted arguments
 
    Demonstration:
-   ncks -O -4 -v lat_T42 ~/nco/data/in.nc ~/foo.nc
-   ncrename -O -D 2 -d lat_T42,lat -v lat_T42,lat ~/foo.nc ~/foo2.nc # Breaks with "NetCDF: HDF error"
-   ncks -m ~/foo.nc
+   ncatted -D 5 -O -a new_string_att,att_var,c,sng,"list","of","str,ings" ~/nco/data/in_4.nc ~/foo.nc
+   ncks -m -C -v att_var ~/foo.nc
 
-   20120213: Verified problem still exists
-   Bug report filed: netCDF #YQN-334036: problem renaming dimension and coordinate in netCDF4 file
+   20130724: Verified problem still exists
+   TODO nco1102
+   Cause: NCO parsing of ncatted arguments is not sophisticated
+   enough to handle arrays of NC_STRINGS with embedded delimiters.
 
-C. NOT YET FIXED
-   Unable to retrieve contents of variables with period '.' in name
-   Metadata is returned successfully, data is not.
-   DAP non-transparency: Works locally, fails through DAP server.
+E. NOT YET FIXED
+   Report correct chunking and compression information for HDF4 files
 
    Demonstration:
-   ncks -O -C -D 3 -v var_nm.dot -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc # Breaks with "NetCDF: DAP server error"
+   ncdump -h -s MOP01-20121231-L1V3.34.10.hdf
+   ncks -m MOP01-20121231-L1V3.34.10.hdf
 
-   20110506: Verified problem still exists. Stopped testing because
-   inclusion of var_nm.dot broke all test scripts.
-   Bug report filed: https://www.unidata.ucar.edu/jira/browse/NCF-47
+   20131007: Verified problem still exists
 
-"Sticky" reminders:
+   Cause: some libnetCDF library functions fail on HDF4 file inquiries.
+   Bug report filed: netCDF #HZY-708311 ncdump/netCDF4 segfaults probing HDF4 file
+   Tracking tickets NCF-272, NCF-273
 
-A. All operators support netCDF4 chunking options:
-   These options can improve performance on large datasets.
-   Large file users: Send us suggestions on useful chunking patterns!
-   ncks -O -4 --cnk_plc=all in.nc out.nc
-   http://nco.sf.net/nco.html#chunking
+"Sticky" reminders:
 
-B. Pre-built, up-to-date Debian Sid & Ubuntu Maverick packages:
+A. Pre-built, up-to-date Debian Sid & Ubuntu packages:
    http://nco.sf.net#debian
 
-C. Pre-built Fedora and CentOS RPMs:
+B. Pre-built Fedora and CentOS RPMs:
    http://nco.sf.net#rpm
 
-D. Did you try SWAMP (Script Workflow Analysis for MultiProcessing)?
+C. Pre-built Windows (native) and Cygwin binaries:
+   http://nco.sf.net#windows
+
+D. Pre-built AIX binaries:
+   http://nco.sf.net#aix
+
+E. Did you try SWAMP (Script Workflow Analysis for MultiProcessing)?
    SWAMP efficiently schedules/executes NCO scripts on remote servers:  
 
    http://swamp.googlecode.com
@@ -150,23 +209,16 @@ D. Did you try SWAMP (Script Workflow Analysis for MultiProcessing)?
    If you must transfer lots of data from a server to your client
    before you analyze it, then SWAMP will likely speed things up. 
 
-E. NCO support for netCDF4 features is tracked at
+F. NCO support for netCDF4 features is tracked at
 
    http://nco.sf.net/nco.html#nco4
 
-   NCO supports netCDF4 atomic data types, compression, and chunking.
-   NCO 4.0.9 with was built and tested with HDF5 hdf5-1.8.7 and with
-   4.2-snapshot2012020522.
-   NCO may not build with earlier, and should build with later, netCDF4 releases.
-   This is particularly true since NCO 4.0.9 takes advantage of an
-   internal change to the netCDF nc_def_var_chunking() API in June 2009. 
-
-   export NETCDF4_ROOT=/usr/local/netcdf4 # Set netCDF4 location
-   cd ~/nco;./configure --enable-netcdf4  # Configure mechanism -or-
-   cd ~/nco/bld;make dir;make all;make ncap2 # Old Makefile mechanism
+   NCO supports netCDF4 atomic data types, compression, chunking, and groups.
 
-F. Have you seen the NCO logo candidates by Tony Freeman, Rich
-   Signell, Rob Hetland, and Andrea Cimatoribus? 
-   http://nco.sf.net
-   Tell us what you think...
+G. Reminder that NCO works on most HDF4 and HDF5 datasets, e.g., 
+   NASA AURA HIRDLS HDF-EOS5
+   NASA ICESat GLAS HDF5
+   NASA MERRA HDF4
+   NASA MODIS HDF4
+   NASA SBUV HDF5...
 
diff --git a/doc/AUTHORS b/doc/AUTHORS
new file mode 100644
index 0000000..21122d1
--- /dev/null
+++ b/doc/AUTHORS
@@ -0,0 +1,7 @@
+Charlie Zender <surname at uci dot edu>
+CZ holds all copyright on NCO code.
+All other contributors have assigned their copyright to Zender,
+or did not make contributions that are legally significant for
+copyright purposes. These contributors are all listed under
+"Contributors" in the Users Guide documentation (nco.texi) at
+http://nco.sf.net/nco.html#ppl
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 58987d4..97cbf37 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,2636 @@
+2013-12-02  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.9 release procedure:
+ 	Changes since nco-4_3_8: nces, XML, ncatted NaN
+	cd ~/nco;cvs tag -d nco-4_3_9;cvs tag -d nco-4_3_9-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.9 release"
+	cvs tag -c nco-4_3_9;cvs tag -c nco-4_3_9-1
+
+	* ncatted: Replace isnormal() with isfinite() macro to treat zero "normally"
+
+	* nces: Clean-up nco_grp_utl.c, nco_grp_trv.c, ncra.c
+
+	* Document nces and group mode in nco.texi, man pages, internally
+
+2013-12-01  Charlie Zender  <zender at uci.edu>
+
+	* Rename old ncea program to nces (netCDF ensemble statistics)
+
+	* Rename old ncea-mode to ncfe-mode (netCDF file ensemble)
+
+	* Rename old nces-mode to ncge-mode (netCDF group ensemble)
+
+2013-11-23  Charlie Zender  <zender at uci.edu>
+
+	* Add nco_srm.[ch] for streams
+
+2013-11-22 Pedro Vicente  <pvicente at uci.edu>
+
+	* nces: Regression #4 multi file ensembles
+
+2013-11-22  Charlie Zender  <zender at uci.edu>
+
+	* XML mode add informational comments like CDL with -D 1
+
+	* XML mode isolate toolsui/ncgen/XML bugginess in buggy.cdl so in_grp.cdl "just works"
+
+	* XML mode add precise multi-dimensional NC_CHAR warnings when dbg_lbl > 0
+
+	* XML mode change default and backup string separator to "*" and "*|*" respectively
+	NB: Buggy NcML toolsui breaks on long separators like "foobar"
+
+	* XML mode add ugly shape="" attribute to scalars for fuller NcML compliance
+
+2013-11-21  Charlie Zender  <zender at uci.edu>
+
+	* XML mode ensure string variables and attributes do not contain string separator
+
+2013-11-20  Charlie Zender  <zender at uci.edu>
+
+	* XML mode never print blank (underscore) for missing values
+
+	* Workaround NcML limitations on uint64 types by removing
+	max(uint64) values from input CDL files other than buggy.cdl
+
+2013-11-19  Charlie Zender  <zender at uci.edu>
+
+	* XML mode print non-whitespace separators for 1D character array attributes
+
+	* XML mode print non-whitespace separators for scalar strings for brain-dead programs
+
+2013-11-18  Charlie Zender  <zender at uci.edu>
+
+	* Neaten XML indentation
+
+	* Add more backwards-incompatible members to buggy.cdl
+
+	* XML mode use stub-name not full name in group name element
+
+2013-11-16  Charlie Zender  <zender at uci.edu>
+
+	* Omit XML default _FillValue when variable already has _FillValue
+
+	* Eliminate all quotes from <values> elements
+
+	* XML mode add default _FillValue attribute for unsigned variable types
+
+	* XML mode add _Unsigned attribute for unsigned variable types
+
+	* XML mode use xml_typ_nm() instead of cdl_typ_nm()
+
+2013-11-15 Pedro Vicente  <pvicente at uci.edu>
+
+	* nces: Regression #3 file ensemble with GPE
+
+2013-11-15  Charlie Zender  <zender at uci.edu>
+
+	* Add XML non-whitespace separator to multi-dimensional NC_CHAR variables
+
+2013-11-13  Charlie Zender  <zender at uci.edu>
+
+	* Numerous XML fixes spurred by Aleksandar Jelenak report:
+
+	* Make XML separator configurable via ncks --xml_spr_chr, --xml_spr_nmr
+
+	* Fix printf() format string for NC_INT64 in nco_typ_fmt_sng_att_xml()
+
+	* Close content-less <variable> elements with "/>" not ">" (in contrast to ncdump -x, toolsui)
+
+	* Add separator=", " attribute for non-whitespace separators
+
+	* Add type="cdl_typ_nm" attribute to non-string attribute elements
+
+	* XML print </variable> in metadata mode
+
+2013-11-13 Pedro Vicente  <pvicente at uci.edu>
+
+	* nces: Regression #1, #2. 1 file ensembles, with --nsm_sfx
+
+2013-11-10  Charlie Zender  <zender at uci.edu>
+
+	* nces first stab at --nsm_sfx switch. Must place in nco_xtr_mk() too.
+
+2013-11-06  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.8 release procedure:
+ 	Changes since nco-4_3_7: ncatted groups, -7, namespace safety
+	cd ~/nco;cvs tag -d nco-4_3_8;cvs tag -d nco-4_3_8-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.8 release"
+	cvs tag -c nco-4_3_8;cvs tag -c nco-4_3_8-1
+
+	* Add example of removing "bounds" variable
+
+	* Add -7 synonym switch for fl_fmt=netcdf4_classic
+
+2013-10-31 Pedro Vicente  <pvicente at uci.edu>
+
+	* ncatted: Regressions #6 to 11. Groups, for single variable, all
+	variables, wildcard variables, group attributes, relative and
+	absolute variable names, global attriutes.
+
+2013-10-25  Charlie Zender  <zender at uci.edu>
+
+	* Update config.[guess,sub] to enable builds on ARM64 (AArch64) machines
+
+	* Add missing --op_typ/--operation switches to ncra.c
+
+2013-10-23 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add option to configure --enable-openmp (default yes), disable with --disable-openmp
+
+2013-10-23  Charlie Zender  <zender at uci.edu>
+
+	* Update autobld/missing with missing from automake 1.13
+
+	* Add GNU-required AUTHORS file to quiet autoreconf warnings
+
+2013-10-21  Charlie Zender  <zender at uci.edu>
+
+	* Rename most external symbols to have nco_ prefix
+	This changes prg,prg_nm,dbg_lvl to nco_prg_id,nco_prg_nm,nco_dbg_lvl
+	and prg_get(),prg_nm_get(),dbg_lvl_get() to nco_prg_id_get(),nco_prg_nm_get(),nco_dbg_lvl_get()
+	This should considerably reduce chances of namespace pollution
+	Other changes include prg_prs()->nco_prg_prs()
+	Remaining namespace violators will be changed in the course of time
+	This partially addresses external symbol conflicts with NCO 4.3.7 on yellowstone.ucar.ed
+
+2013-10-20  Charlie Zender  <zender at uci.edu>
+
+	* Add hashing to trv_tbl_mrk_xtr(). More regressions.
+
+	* Document hash table behavior. Play with -Wcast-qual
+
+	* Tidy group routines. Verify no regressions before implementing hashes.
+
+2013-10-18  Charlie Zender  <zender at uci.edu>
+
+	* Supplant strcmp() with hash table in trv_tbl_var_nm_fll()
+	Works on all operators except ncbo
+
+	* #define NCO_HSH_TRV_OBJ token to use hashes instead of strcmp() loops
+
+	* Hash all objects in traversal table and store resultant hash table
+	Use string-keyed hash based on full object name
+
+	* Add uthash hash table functionality stubs and nco_uthash.h
+	BSD-licensed code by Troy D. Hanson http://troydhanson.github.com/uthash
+
+	* Warn about excessive malloc()-size requests.
+	Namespace pollution caused request for 18446744073709551608 B = 16 EB
+
+	* Move ncga enum to nces enum and place at end to workaround namespace pollution
+	Pollution tainted shared libraries on Yellowstone at NWSC. To prevent recurrence
+	must prefix all external symbols with nco_, and remove all global variables.
+
+2013-10-17  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.7 release procedure:
+ 	Changes since nco-4_3_6: --mrd, --hdf4, --xml, ncrename groups
+	cd ~/nco;cvs tag -d nco-4_3_7;cvs tag -d nco-4_3_7-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.7 release"
+	cvs tag -c nco-4_3_7;cvs tag -c nco-4_3_7-1
+
+2013-10-16 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncrename regressions #1 to #21: attributes, dimensions, variables, groups.
+
+2013-10-16  Charlie Zender  <zender at uci.edu>
+
+	* Add --xml_no_location
+
+2013-10-15  Charlie Zender  <zender at uci.edu>
+
+	* Handle control characters slightly better XML mode
+
+	* Add CDL tags <group>, isUnlimited, <values>. XML dumping is mostly complete.
+
+2013-10-10  Charlie Zender  <zender at uci.edu>
+
+	* Document -m -M -H
+
+	* Treat PRN_VAR_DATA as CPY_VAR_DATA in ncks in.nc out.nc
+
+	* Treat PRN_[GLB,VAR]_METADATA as CPY_[GLB,VAR]_METADATA in ncks in.nc out.nc
+
+2013-10-09  Charlie Zender  <zender at uci.edu>
+
+	* Document HDF4, --hdf4 switch
+
+	* Add ncecat regression test of concatenating variables with different IDs
+
+	* Re-add nco_var_mtd_refresh() to ncecat main loop
+
+	* Fix cppcheck error using sng_val_sng as sprintf() parameter and destination
+
+2013-10-08  Charlie Zender  <zender at uci.edu>
+
+	* Clear garbage from stdin with safe method, not fflush(stdin)
+
+	* Close fp_in file resource for MFOs reading fl_in lists from files
+
+	* Received cppcheck static analysis check from dcb314
+	Fixed three fprintf() formatting problems, one resource leak, one
+	undefined behavior, one misuse of C++ vector .empty(), one
+	potential NULL-deference.
+
+2013-10-06  Charlie Zender  <zender at uci.edu>
+
+	* Too many special cases so copy Unidata escaped_name() list
+
+	* Fix ncpdq regression failures caused by --hdf being interpreted
+	as --hdf4 (a new option) not --hdf_upk (the intended option).
+
+	* CDL-mode prints CDL-compatible group/variable/dimension/attribute names
+	Special characters in these names are now backslash-protected
+
+2013-10-05  Charlie Zender  <zender at uci.edu>
+
+	* Wrote nm2sng_cdl() to CDL-ize variable/dimension/attribute names
+
+	* ncrename and ncatted do not work on HDF4 files because they
+	attempt to modify the file on disk. netCDF4 cannot directly modify
+	an HDF4 file. Rather, netCDF4 can read HDF4 files through the API.
+	All other operators work because they construct the output file
+	through the API. They never directly modify the HDF4 file.
+	ncrename and ncatted, on the other hand, always attempt to
+	directly modify the HDF4 file. The solution would be to make the
+	--hdf4 switch trigger an API-based copy in ncrename and ncatted.
+
+	* All operators with --hdf4 (except ncrename and ncatted) appear to work with HDF4 files
+
+	* Add arithmetic functions for NC_BYTE and NC_UBYTE
+
+2013-10-04  Charlie Zender  <zender at uci.edu>
+
+	* Add --hdf4 switch to all operators except ncrename and ncatted
+
+	* ncbo --hdf4 does arithmetic on (some) HDF4 files correctly!
+
+	* ncks --hdf4 prints and writes (some) HDF4 files correctly!
+
+	* Add --hdf4 flag to prevent NCO from interrogating compression/chunking on HDF4 files
+
+	* First builds with --enable-hdf4
+
+	* Skeleton nces loops
+
+	* Support CF versioning in ncdismember
+
+2013-10-03  Charlie Zender  <zender at uci.edu>
+
+	* Add nces stubs to ncra.c
+
+	* Tidy ncra.c
+
+	* Document --mrd
+
+	* Add --mrd = --multiple_record_dimension switch to allow ncecat,
+	ncpdq to increase number of record dimensions in a variable as a
+	natural or incidental consequence of processing netCDF4 files
+
+2013-10-02  Charlie Zender  <zender at uci.edu>
+
+	* cd ~/nco;cvs commit -m "Snapshot after move to Allura"
+	cvs tag -c nco-4_3_7_postallura
+
+	* Move SF NCO repository to Allura
+
+	* cd ~/nco;cvs commit -m "Snapshot before move to Allura"
+	cvs tag -c nco-4_3_7_preallura
+
+2013-09-27  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.6 release procedure:
+ 	Changes since nco-4_3_5: --flt, ncpdq/ncecat 1 rec dmn, ncwa/ncea fixes
+	cd ~/nco;cvs tag -d nco-4_3_6;cvs tag -d nco-4_3_6-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.6 release"
+	cvs tag -c nco-4_3_6;cvs tag -c nco-4_3_6-1
+
+	* Add mdl.cdl
+
+2013-09-26 Pedro Vicente  <pvicente at uci.edu>
+
+	* ncwa: Add support for weights and masks per group. Regressions #49, #50
+
+2013-09-26  Charlie Zender  <zender at uci.edu>
+
+	* Document ncdismember and CF-compliance checker
+
+2013-09-24 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncwa test #29 Weights and hyperslabs
+
+2013-09-24  Charlie Zender  <zender at uci.edu>
+
+	* Add dismember example to manual
+
+	* Add --flt option to ncra.c (had forgotten it before)
+
+2013-09-23 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncra test #29 Group with 2 record dimensions made with ncecat, reverted to 1 record with ncpdq
+
+2013-09-23  Charlie Zender  <zender at uci.edu>
+
+	* Change test DAP server from http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/
+	to http://thredds-test.ucar.edu/thredds/dodsC/testdods/
+
+	* Add reference list of publications acknowledging NCO
+
+2013-09-22  Charlie Zender  <zender at uci.edu>
+
+	* No 4.3.5 Ubuntu packages built because mysterious bug where
+	nc_rename_grp() symbol cannot be found in library. Stumped me.
+
+	* NCO 4.3.5 release procedure:
+ 	Changes since nco-4_3_4: ncea/ncra/ncrcat groups, --dbl, ncwa hyp/avg, ncpdq rvr
+	cd ~/nco;cvs tag -d nco-4_3_5;cvs tag -d nco-4_3_5-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.5 release"
+	cvs tag -c nco-4_3_5;cvs tag -c nco-4_3_5-1
+
+	* This is the second release tagged as 4.3.5 and fixes the ncecat
+	problem and a memory problem with -X.
+
+	* Releasing late on Friday actually worked well because we found
+	and fixed the problem Saturday. Able to re-release on Sunday
+	before people got back to work Monday. 	Sourceforge reported no
+	downloads from Friday-Sunday.
+
+2013-09-20  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.5 release procedure: Followed but WW found ncecat problem next day
+
+	* Move nc_rename_grp() stub prototype
+
+	* Reminder that some time about a week ago Pedro fixed a bug in
+	how ncpdq performs dimension reversal. Apparently dimension
+	reversal was broken in group files since 4.3.2?
+
+	* Write random walk description of precision degradation
+
+2013-09-18 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncra regressions #27,28 2 records to process in 2 groups (do record and variables in group)
+
+2013-09-18  Charlie Zender  <zender at uci.edu>
+
+	* Add --flt and --rth_flt switches for symmetry to --dbl and --rth_dbl
+
+2013-09-17 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncra regressions #25,26 2 records to process in 2 groups (do record in group only)
+
+2013-09-17  Charlie Zender  <zender at uci.edu>
+
+	* GPE operations allow netCDF3 output from netCDF4 input when
+	groups are not required in the output file. This allows GPE
+	flattening to directly create netCDF3 classic files for backward
+	compatibility.
+
+2013-09-12  Charlie Zender  <zender at uci.edu>
+
+	* Finish documentation on type conversion, precision, and --dbl
+
+2013-09-11 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncra regression #24 (records, group case)
+
+2013-09-10  Charlie Zender  <zender at uci.edu>
+
+	* Document groups for ncea, ncra, ncrcat
+
+	* Stop nco.texi from triggering texinfo.tex bug just fixed by Karl Berry
+	Bug not present in texinfo.tex version 2008-04-18.10 (used by Ubuntu 13.04)
+	Bug     present in texinfo.tex version 2013-02-01.11 (used by FC19)
+	Real fix:  install texinfo.tex version 2013-09-11+ (committed by Karl)
+	Workaround is to remove apostrophe from manual title in "User's Guide"
+	Workaround done to preserve build compatibility with broken texinfo.tex
+	nco/autobld/texinfo.tex is now fixed version
+
+2013-09-09  Charlie Zender  <zender at uci.edu>
+
+	* Move table of contents from bottom to top of documentation
+
+2013-09-08  Charlie Zender  <zender at uci.edu>
+
+	* Verify new --dbl switch solves thermonuclear ncwa issue reported
+	by Lori Sentman, Mark Flanner, and Gary Strand.
+	Proof is in ~/netcdf_examples/bugs/ncwa_3528514/tst_gavg_nco.sh
+
+2013-09-07 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncks regression #70, #71 (limits, group case)
+
+2013-09-06  Charlie Zender  <zender at uci.edu>
+
+	* Document Arithmetic Convention
+
+	* Add new global variable nco_rth_cnv for Arithmetic Convention
+
+2013-09-05 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncrcat regression #22 (group case)
+
+	* Add ncea regression #11 (group case)
+
+2013-09-05  Charlie Zender  <zender at uci.edu>
+
+	* Get ncra.c OpenMP to compile. netCDF4 group traversal OpenMP needs testing.
+
+	* ncra.c whitespace changes
+
+2013-09-04 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncra regression #23 (group case)
+
+2013-09-04  Charlie Zender  <zender at uci.edu>
+
+	* Add tpt_flt and tpt_dbl to in.nc to demonstrate precision issues
+
+2013-08-29  Charlie Zender  <zender at uci.edu>
+
+	* nco_xtr_mk() correctly matches variable names that are proper subsets of ancestor group names
+
+2013-08-28 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncra testing
+
+2013-08-27 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncwa test #41 Retain degenerate dimensions (one variable)
+
+	* Add ncwa test #42 Retain degenerate dimensions (all variables)
+
+	* nco_dmn_avg_mk() Build dimensions to average array from input dimension names
+
+	* nco_dmn_out_mk() Build dimensions array to keep on output
+
+	* nco_dmn_id_mk() Mark flag average for all dimensions that have the input ID
+
+2013-08-27  Charlie Zender  <zender at uci.edu>
+
+	* Restore history attribute to ncwa, consolidate global attribute copying
+
+	* Build and successfully test GIT-tree versions of libnetcdf.a and libnetcdff.a
+
+	* Fix memory leak in strcasecmp.c
+
+	* Never build private version of strcasecmp() with g++
+
+2013-08-11  Charlie Zender  <zender at uci.edu>
+
+	* Verify that mysterious ncks whitespace printing bug related to shared libraries
+
+2013-08-08  Charlie Zender  <zender at uci.edu>
+
+	* Cleanup ncflint
+
+	* Ensure all @item's have text on same line for texi2dvi backwards compatibility
+
+2013-08-07  Charlie Zender  <zender at uci.edu>
+
+	* Edit Wenshan's CMIP5 documentation
+
+	* Print file summary in CDL-mode when dbg_lvl >= 1
+
+2013-08-06  Charlie Zender  <zender at uci.edu>
+
+	* Integrate Wenshan's CMIP5 documentation into nco.texi
+
+	* Add missing semi-colon to nco_mmr.c line 520 so Cygwin can build
+
+	* Tweak attribute indentation with -5 printing and prn_flg->trd
+
+2013-08-05  Charlie Zender  <zender at uci.edu>
+
+	* Add g3 and g5 to mimic CMIP5 problems in in_grp.cdl
+
+2013-08-02  Charlie Zender  <zender at uci.edu>
+
+	* Compound dimension functionality
+
+2013-08-01  Charlie Zender  <zender at uci.edu>
+
+	* Add stubs for printing braces for compound variables
+
+	* Document ncrename -g
+
+	* Document ncks -5 option for PRN_NEW_FORMAT
+
+	* FC19 will not build current nco.texi, but Ubuntu will. Not sure why.
+	Until fixing this, all documentation must be built on Ubuntu.
+
+2013-07-31  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.4 release procedure:
+ 	Changes since nco-4_3_3: CDL legibility, ncpdq -U fix, --hdf_upk
+	cd ~/nco;cvs tag -d nco-4_3_4;cvs tag -d nco-4_3_4-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.4 release"
+	cvs tag -c nco-4_3_4;cvs tag -c nco-4_3_4-1
+
+	* Document and test --hdf_upk in all other applicable operators
+
+	* Add ncpdq regression test to re-pack 1D variable from HDF convention to netCDF convention
+
+	* Move header information from nco_netcdf.c to nco_netcdf.h
+
+	* Tidy UDUnits parsing/handling code
+
+	* Standardize UDUnits code on opaque return values, not shell return values
+
+2013-07-29  Charlie Zender  <zender at uci.edu>
+
+	* ncpdq unpacking is broken in 4.3.2-4.3.3 because packing attributes are still written
+
+	* Explode CDL printing of NC_CHAR attributes that contain embedded newlines
+
+	* --hdf_upk flag uses HDF unpack convention: unpacked=scale_factor*(packed-add_offset)
+
+2013-07-26  Charlie Zender  <zender at uci.edu>
+
+	* Document MSA user-ordering --msa_usr_rdr with longitude rotation example
+
+2013-07-25  Charlie Zender  <zender at uci.edu>
+
+	* Update old cruft in index.shtml
+
+	* Fix nco_md5_ini() prototype
+
+	* Fix const'ness of nco_cmp_crd_dpt()
+
+	* Apparently C++ (or at least g++) always provides strcasestr()
+
+	* Restore rnd_nbrf() prototype in nco_rth_flt.h
+
+	* Tighten prototypes in nco_sng_utl.h
+
+2013-07-24  Charlie Zender  <zender at uci.edu>
+
+	* Conceal math float definitions in nco_rth_flt.h from LINUXAMD64 to allow yellowstone g++ to build ncap2
+
+	* NCO 4.3.3 release procedure:
+ 	Changes since nco-4_3_2: CDL, XML, ncrename/ncwa groups
+	cd ~/nco;cvs tag -d nco-4_3_3;cvs tag -d nco-4_3_3-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.3 release"
+	cvs tag -c nco-4_3_3;cvs tag -c nco-4_3_3-1
+
+	* Modernize configure.ac and Makefile.am as per automake/autoconf recommendations
+
+	* Rename configure.in to configure.ac
+
+	* Add autobld/test_driver (created with automake --add-missing)
+
+	* Rewrite MD5 infrastructure the right way, i.e., like GPE: use/pass dynamic structures
+
+2013-07-24 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncwa testing
+
+	* Add ncwa test #41 (Groups) Dimension reduction with min flag on type float variable
+	* Add ncwa test #42 (Groups) Dimension reduction on type double variable with max switch and missing values
+	* Add ncwa test #43 (Groups) Dimension reduction on type double variable
+	* Add ncwa test #44 (Groups) rms with weights
+
+2013-07-24  Charlie Zender  <zender at uci.edu>
+
+	* Adhere to hdr_pad option when using ncpdq for packing
+
+	* Place MD5 flags in md5_flg structure
+
+	* Get ncwa OpenMP to compile. netCDF4 group traversal OpenMP needs testing.
+
+	* Document new ncatted, ncrename, ncks, ncwa features in man pages, nco.texi
+
+2013-07-23  Charlie Zender  <zender at uci.edu>
+
+	* ncrename -g works when linked to new libnetcdf nc_rename_grp() function
+
+	* ncks now writes MD5 attributes with --md5 -D 6+ to netCDF4 files
+
+	* CDL mode prints NC_STRING's and arrays of NC_STRING correctly,
+	in both attributes and data sections. CDL mode appears to be ready.
+
+	* ncatted: Works with single NC_STRING's (previous versions of
+	ncatted completely and utterly fail with all NC_STRINGs).
+	Still fails on NC_STRING arrays because parser is not smart.
+
+	* ncatted: Fix ambigous interpretation of type specifications
+
+	* ncatted: Clarify netCDF4 atomic type specifications
+
+	* CDL mode prefix NC_STRING attributes with "string "
+
+	* CDL mode add double quotes to printing NC_STRING attributes
+
+2013-07-22  Charlie Zender  <zender at uci.edu>
+
+	* Add ncrename stubs and docs for libnetcdf version of nc_rename_grp()
+
+2013-07-22 Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_dmn_trv_msa() Update dimension with hyperslabed size
+
+	* nco_dmn_trv_msa_tbl() Update all GTT dimensions with hyperslabed size
+
+	* nco_dmn_msa_tbl() Update GTT dimension with hyperslabed size
+
+	* nco_prn_var_dfn() Print variable metadata; modified to use hyperslabed sizes
+
+2013-07-19  Charlie Zender  <zender at uci.edu>
+
+	* XML mode (with --xml) prints all test cases at least as well as ncdump -x
+
+	* Fix bad memory dereference in nco_prn_var_val_trv()
+
+2013-07-19  Henry Butowsky  <henryb at hush.com>
+
+        * Added custom masking function for 2D vars:
+	mask_out=imask_make(var_in,lat,lon)
+	mask_out is a 0/1 mask of grid points whose value in var_in is missng_value but
+	have an adjacent neighbour whose value is NOT missing
+        var_out=imask_fill(var_in.mask_out,lat,lon)
+        Points in var_in are filled if they are missing AND are specified in mask_out.
+        Fill value is average of nearest neigbours in input, but if neighbour was
+	just been filled then its value is NOT used in the calculation of the average.
+
+2013-07-18 Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_dmn_avg_tbl() Transfer averaged dimensions information into GTT (-a for ncwa)
+
+2013-07-18  Charlie Zender  <zender at uci.edu>
+
+	* CDL mode prints all test cases at least as well as ncdump
+
+	* Switch attribute NC_CHAR printing to chr2sng_cdl() infrastructure
+
+	* Added chr2sng_cdl() so CDL mode prints control sequences visibly
+
+	* CDL mode works on zero and one-dimension arrays of NC_CHAR strings
+
+	* CDL mode works with GPE transformations with constant group level, e.g.,
+	ncks --cdl -O -G f1:1 -g g1 ~/nco/data/in_grp.nc
+	GPE transformations that alter group level are incorrectly sorted, indented, and braced
+
+	* Create nco_gpe_evl_stb() to easily print GPE-transformed group stubs
+
+	* Move GPE to pre-fl_out code so CDL mode can use it
+
+	* Fix string and string-array printing for NC_STRING
+
+	* Ooops, CDL mode always prints on-disk dimension sizes even when hyperslabbing
+
+2013-07-17  Charlie Zender  <zender at uci.edu>
+
+	* Document ncks --cdl switch. texi2dvi nco.texi works on Ubuntu, fails on Fedora
+
+	* Change DDRA to print to stderr not stdout to simplify CDL mode
+
+	* Fix dimension name printed in compact lists due to mis-nested indices
+
+	* Implement CDL user switch --cdl
+
+	* CDL output is more compact (less unnecessary information) than ncdump
+
+	* Successful CDL output by ncks and conversion by ncgen
+
+	* Tidy ncoGrammer.g
+
+2013-07-16  Charlie Zender  <zender at uci.edu>
+
+	* Mark extracted dimensions with nco_xtr_dmn_mrk()
+
+	* Isolate nco_xtr_grp_mrk() from nco_xtr_dfn()
+
+	* New MSVC macros for isinf(), isfinite(), isnan()"
+
+	* CDL mode prints all floating point values correctly
+
+	* Variable number of trailing zeros implemented with sng_trm_trl_zro()
+
+	* Isolate MSVC definitions and macros in nco_rth_flt.h
+
+2013-07-15  Charlie Zender  <zender at uci.edu>
+
+	* sng_trm_trl_zro() trims trailing zeros
+
+	* CDL mode works for non-char variables for attributes, dies for float attributes
+
+2013-07-15 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncwa testing
+
+	* nco_var_get_trv() Fill-in variable structure for weighting variable "var_nm"
+
+2013-07-12  Charlie Zender  <zender at uci.edu>
+
+	* CDL mode for variable shape and attributes mostly works
+
+	* Implement CDL mode in variable header in nco_prn_var_dfn()
+
+	* Fix printing so only extracted sub-groups show up
+
+	* Remaining issues include self-consistent group flg_xtr, also broken with old method
+
+2013-07-11  Charlie Zender  <zender at uci.edu>
+
+	* Debian Mayhem project reported five bugs due to unsanitized input:
+	716127 (ncflint), 716128 (ncap), 716129 (ncap2), 716506 (ncbo), and 716602 (ncecat)
+	Each bug causes a core dump rather than a clean exit(EXIT_FAILURE)
+	Fixed four of these by checking return values on strchr()
+	ncap2 bug triggered _inside_ strtoul() so hard to fix
+
+	* New indentation works well enough. Begin implementing CDL option.
+
+	* Strip all tabs and extra vertical space, ready to design new indentation
+
+	* New print format almost glitch-free, old format intact, regressions all pass
+
+2013-07-10  Charlie Zender  <zender at uci.edu>
+
+	* nco_grp_prn() prints variables by group, with OK formatting
+
+	* Tidy ncbo.c, nco_grp_utl.c
+
+	* Introduce print flag structure prn_sct prn_flg in ncks
+
+2013-07-09  Charlie Zender  <zender at uci.edu>
+
+	* netCDF3 stubs for nco_inq_grp_parent(), nco_inq_grp_parent_flg()
+	return NC_ENOGRP rather than NC_NOERR or assert(0)
+
+	* Eliminate nc_id argument to nco_prn_att()
+
+	* First version of group-recursive printer nco_grp_prn()
+	Routine is cornerstone of more flexible print output formatting
+
+2013-07-06 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncpdq testing
+
+	* Add ncpdq test #40 (Groups) Pack and then unpack scalar
+	* Add ncpdq test #41 (Groups) Unpack 1D variable with MSA
+
+2013-07-05  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.3.2 release procedure:
+ 	Changes since nco-4_3_1: -X aux, ncflint/ncpdq -g -G --unn
+	cd ~/nco;cvs tag -d nco-4_3_2;cvs tag -d nco-4_3_2-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.2 release"
+	cvs tag -c nco-4_3_2;cvs tag -c nco-4_3_2-1
+
+	* Implement/fix GPE in ncflint, ncpdq, ncecat
+
+	* Implement --union, --intersection, GRP_VAR_UNN in ncflint, ncpdq
+
+2013-07-04 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncpdq testing
+
+	* Add ncpdq test #39 (Groups) Re-order 2D variable with record (no -C, MSA)
+
+2013-07-03 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #38 (Groups) Re-order 2D variable with record (-C, MSA)
+
+2013-07-02 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncpdq testing
+	* Add ncpdq test #36 (Groups) Re-order 2D variable with record (-C, no MSA)
+	* Add ncpdq test #37 (Groups) Re-order 2D variable with record (no -C, no MSA)
+
+2013-07-01 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add in_grp_3.cdl group data for ncpdq testing
+
+	* Add ncpdq test #32 (Groups) Re-order 2D variable (-C, no MSA)
+	* Add ncpdq test #33 (Groups) Re-order 2D variable (no -C, no MSA)
+	* Add ncpdq test #34 (Groups) Re-order 2D variable (no -C, MSA)
+	* Add ncpdq test #35 (Groups) Re-order 2D variable (-C, MSA)
+
+2013-06-29  Charlie Zender  <zender at uci.edu>
+
+	* Add -G, --gpe, --unn to ncpdq documentation
+
+2013-06-28 Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_lst_dmn_mk_trv() Build Name-ID array from input dimension names
+
+	* nco_var_dmn_scp() Variable has dimensions in scope of GTT dimension
+
+2013-06-27 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #24 Re-order several variables
+
+2013-06-27 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add group use case for ncpdq in in_grp_3.cdl.
+
+2013-06-25  Charlie Zender  <zender at uci.edu>
+
+	* Mention implications of type promotion in memory requirements
+
+	* Add Yellowstone default /ncar/opt/hpss/hsi to list of HSI search paths
+
+	* Add NCO_MMR_DBG infrastructure for nco_malloc()
+	Does not (yet) report requests made with nco_malloc_flg() and nco_malloc_dbg()
+	export NCO_MMR_DBG=1;ncea -O -D 3 -d time,0,2 -p ~ big_bug5.nc ~/big_avg.nc
+
+	* Replace many hardcoded dbg_lvl's with symbolic names
+
+2013-06-24  Charlie Zender  <zender at uci.edu>
+
+	* Prevent overwriting global attributes (like history) in ncecat, ncflint, ncpdq
+
+2013-06-23  Charlie Zender  <zender at uci.edu>
+
+	* Add nco_prc_stt_get() and nco_prc_stm_get() to poll /proc/PID/stat and /proc/PID/statm
+
+2013-06-23 Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_var_dmn_rdr_mtd_trv() Determine and set new dimensionality in metadata of each re-ordered variable
+
+	* nco_var_dmn_rdr_val_trv() Change dimension ordering of variable values
+
+2013-06-22 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #24 Reverse/Re-order 4D variable -a lev,time,-lon,-lat -v four_dmn_rec_var (MSA)
+	* Add ncpdq test #25 Re-order all variables -a lat,time (MSA)
+
+2013-06-21 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #19 Reverse/Re-order 3D variable -a -lat,-time -v three_dmn_var_dbl
+	* Add ncpdq test #20 Re-order several variables -a lat,time -v ty,three_dmn_rec_var (no MSA) Test 1
+	* Add ncpdq test #21 Re-order several variables -a lat,time -v ty,three_dmn_rec_var (no MSA) Test 2
+	* Add ncpdq test #22 Re-order several variables -a lat,time -v ty,three_dmn_rec_var (MSA) Test 1
+	* Add ncpdq test #23 Re-order several variables -a lat,time -v ty,three_dmn_rec_var (MSA) Test 2
+
+2013-06-19 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #6 Re-order 3D variable with MSA -C -a lat,lon,time -v three_dmn_var_dbl
+	* Add ncpdq test #7 Re-order 3D variable with MSA (stride) -a lat,lon,time -v three_dmn_var_dbl
+
+2013-06-19  Charlie Zender  <zender at uci.edu>
+
+	* Fix /proc/self/stat read types and add human-readable sizes for failed memory requests
+
+2013-06-18 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #13  Re-order 2D variable with record (-C, no MSA) -v two_dmn_rec_var -C -a lev,time
+	* Add ncpdq test #14  Re-order 2D variable with record (no -C, no MSA) -v two_dmn_rec_var -a lev,time
+	* Add ncpdq test #15  Re-order 2D variable with record (-C, MSA) -v two_dmn_rec_var -a lev,time
+	* Add ncpdq test #16  Re-order 2D variable with record (no -C, MSA) -v two_dmn_rec_var -a lev,time
+
+2013-06-17 Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncpdq test #10  Re-order 2D variable (no -C, no MSA) -v two_dmn_var -a lev,lat
+	* Add ncpdq test #11  Re-order 2D variable (-C, MSA) -v two_dmn_var -a lev,lat -d lat,1,1 -d lev,1,1
+	* Add ncpdq test #12  Re-order 2D variable (no -C, MSA) -v two_dmn_var -a lev,lat -d lat,1,1 -d lev,1
+
+	* nco_var_prc_msa_trv() Transfer MSA sizes from GTT to processed variables
+
+	* nco_dmn_rdr_trv() Transfer dimension structures to be re-ordered (ncpdq) into GTT
+
+	* nco_dmn_rdr_xtr() Form list of re-ordering dimensions from extracted input dimensions (ncpdq)
+
+	* nco_dmn_lst_ass_var_trv() Create list of all dimensions associated with input variable list (ncpdq only)
+
+	* nco_dmn_lst_ass_var_nbr_trv() Find number of dimensions associated with variables to be extracted (ncpdq only)
+
+2013-06-17  Charlie Zender  <zender at uci.edu>
+
+	* Implement robust Linux memory usage by polling /proc/self/stat with ncks --sysconf
+
+	* Include <unistd.h> in nco_mmr.h for accessing sysconf() to get page size
+
+2013-06-07  Charlie Zender  <zender at uci.edu>
+
+	* Changes for Fedora Core 18 RPM compatibility
+
+2013-06-05  Charlie Zender  <zender at uci.edu>
+
+	* Tidy/fix ncflint OpenMP build. Tidy ncpdq.
+
+2013-05-29 Pedro Vicente  <pvicente at uci.edu>
+
+        * Add data/in_1.cdl, data/in_2.cdl CDL files to test 2 input file operators
+
+2013-05-15 Pedro Vicente  <pvicente at uci.edu>
+
+        * nco_cpy_fix_var_trv() Copy fixed variables from input to output file
+
+2013-05-08 Pedro Vicente  <pvicente at uci.edu>
+
+        * nco_var_trv() Fill-in variable structure for a named GTT variable
+
+2013-05-09 Pedro Vicente  <pvicente at uci.edu>
+
+        * ncflint test #6,7 --fix_rec_crd
+
+2013-05-08 Pedro Vicente  <pvicente at uci.edu>
+
+        * trv_tbl_mrk_typ() Mark output netCDF type in GTT
+
+2013-05-07 Pedro Vicente  <pvicente at uci.edu>
+
+        * ncflint test #5 Group weight 1D variable
+
+        * nco_get_typ() Obtain netCDF type to define variable from NCO program ID
+
+2013-05-07  Charlie Zender  <zender at uci.edu>
+
+	* Document new ncflint, ncbo capabilities
+
+2013-05-06 Pedro Vicente  <pvicente at uci.edu>
+
+        * nco_fll_var_trv() Fill-in variable structure list for all extracted variables
+
+2013-05-03 Pedro Vicente  <pvicente at uci.edu>
+
+        * nco_bld_aux_crd() Parse auxiliary coordinates
+
+        * ncks test #69 Parse auxiliary coordinates
+
+2013-05-01  Charlie Zender  <zender at uci.edu>
+
+	* Add byte arrays to in.cdl
+
+	* NCO 4.3.1 release procedure:
+ 	Changes since nco-4_3_0: ncbo -G, --unn, symmetric, grp_brd
+	cd ~/nco;cvs tag -d nco-4_3_1;cvs tag -d nco-4_3_1-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.1 release"
+	cvs tag -c nco-4_3_1;cvs tag -c nco-4_3_1-1
+
+	* Update Makefiles to build without failing new CDL files
+
+2013-04-29  Charlie Zender  <zender at uci.edu>
+
+	* Move buggy CDL code from in_grp.cdl to buggy.cdl
+
+2013-04-28  Charlie Zender  <zender at uci.edu>
+
+	* Use realistic temperatures in obs.cdl, cmip5.cdl
+
+	* GCC 4.7.3 finally includes strcasestr() in string.h, I think
+
+2013-04-26  Charlie Zender  <zender at uci.edu>
+
+	* Document new ncbo, ncecat, group broadcasting features
+
+2013-04-24  Charlie Zender  <zender at uci.edu>
+
+	* ncrcat: Fix false positives on non-monotonicity checks in rec_crd_chk()
+	by only checking monotonicity of first record coordinate encountered.
+
+	* ncecat: Tidy OpenMP
+
+2013-04-24  Pedro Vicente  <pvicente at uci.edu>
+
+        * trv_tbl_mrk_prc_fix() Mark fixed/processed flag in table
+
+        * ncecat test #6,7,8 Concatenate variables/groups: 1D,2D variables
+
+2013-04-23  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncecat test #4,5 Concatenate variables/groups: scalars
+
+2013-04-22  Charlie Zender  <zender at uci.edu>
+
+	* ncecat: Tidy OpenMP
+
+	* Document new ncbo, ncecat features
+
+	* Document group broadcasting
+
+2013-04-19  Charlie Zender  <zender at uci.edu>
+
+	* ncatted: Fix passing NULL to strcmp() in netCDF4 code path.
+	Bug identified and fix provided by Etienne Tourigny.
+
+2013-04-17  Pedro Vicente  <pvicente at uci.edu>
+
+        * nco_prc_cmn_nm() Process common objects
+
+        * nco_cmn_nm_prt() Print list of common objects (same absolute path)
+
+        * trv_tbl_mch() Match 2 tables (find common objects) and export common objects;
+        previously object processing was done in this function, but now the list of common names
+        is exported for use in operators other than ncbo
+
+2013-04-16  Pedro Vicente  <pvicente at uci.edu>
+
+        * nco_get_rec_dmn_nm() Return array of record names
+
+2013-04-11  Pedro Vicente  <pvicente at uci.edu>
+
+	* Add cmip5_1.cdl obs_1.cdl
+
+        * ncbo test #22; Process relative match from model to observations cmip5_1.nc -> obs_1.nc
+
+        * ncbo test #23; Process relative match from observations to model obs_1.nc -> cmip5_1.nc
+
+2013-04-10  Pedro Vicente  <pvicente at uci.edu>
+
+	* trv_tbl_rel_mch()  Relative match of object in table 1 to table 2
+
+	* ncbo test #21; Relative match of object in table 1 to table 2
+
+2013-04-09  Pedro Vicente  <pvicente at uci.edu>
+
+	* gpe_chk() Check valid GPE new name
+
+	* pck_cpy_attr() Inquire about copying attributes "scale_factor", "add_offset"
+
+2013-04-08  Charlie Zender  <zender at uci.edu>
+
+	* Add in_grp_[12].nc
+
+2013-04-06  Pedro Vicente  <pvicente at uci.edu>
+
+	* trv_tbl_prc() Match different types for processed objects
+
+	* ncbo test #20; Match different types for processed objects
+
+2013-04-03  Pedro Vicente  <pvicente at uci.edu>
+
+	* trv_tbl_prc() Process common objects
+
+	* trv_tbl_fix() Copy processing type fixed object
+
+	* Add ncbo test #19; Copy associated coordinates as non processed
+
+2013-03-29  Charlie Zender  <zender at uci.edu>
+
+	* ncbo: now almost commutative w/r/t variable rank fixes TODO nco552
+
+2013-03-28  Charlie Zender  <zender at uci.edu>
+
+	* Clarify DAP server errors
+
+	* ncbo: document GPE and --union
+
+	* ncbo: Implement GPE
+
+	* ncbo: Implement --union/--intersection switch
+
+	* Fix ncbo bug: unswap CNV_CCM_CCSM_CF and FIX_REC_CRD arguments to trv_tbl_mch()
+	http://nco.sf.net#bug_ncbo_ccm_ccsm_cf
+
+	* NCO 4.3.0 release procedure:
+ 	Changes since nco-4_2_6: ncbo -g, ncatted NULs, ncap2 rounding
+	cd ~/nco;cvs tag -d nco-4_3_0;cvs tag -d nco-4_3_0-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.3.0 release"
+	cvs tag -c nco-4_3_0;cvs tag -c nco-4_3_0-1
+
+	* Document one-hundred thousand file ncecat example
+
+2013-03-28  Pedro Vicente  <pvicente at uci.edu>
+
+	* Add ncbo test #15,16,17,18; Group addition, subtraction, multiplication, division, with limits
+
+2013-03-27  Charlie Zender  <zender at uci.edu>
+
+	* nco.texi: clarify why -O --no_tmp_fl in.nc in.nc _does not work_
+
+	* Replace ?lround?() with ?lrint?() in internal NCO rounding
+	Halfway cases that were rounded away from zero will now round to nearest even integer
+
+	* Add lrint(), lrintf(), llrint(), llrintf() definitions
+
+	* Fix/revert ncatted to not NUL-terminate attributes
+
+2013-03-27  Pedro Vicente  <pvicente at uci.edu>
+
+	* Enable nearbyint(), rint(), round(), trunc() for MSVC
+
+	* Add ncbo test #14; Group addition
+
+2013-03-26  Charlie Zender  <zender at uci.edu>
+
+	* ncks: always copy group and variable metadata (fixes bug introduced in 4.2.6)
+
+	* Re-activate ncap/ncap2 rounding functions: nearbyint(), rint(), round(), trunc()
+
+	* Implement source code for nearbyint(), rint(), round(), trunc()
+
+	* Add configure checks for nearbyint(), rint(), round(), trunc()
+
+2013-03-22  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncbo: nco_var_op_typ() Find operation type on variable, fixed or processed
+
+	* ncbo: nco_msa_var_get_trv() Get variable data from disk taking account of multihyperslabs
+
+	* ncbo: trv_tbl_mch() Match 2 tables (find common objects) and process common objects
+
+2013-03-20  Charlie Zender  <zender at uci.edu>
+
+	* ncecat: insert stubs for netCDF4 RECORD_AGGREGATE
+
+2013-03-19  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncbo: nco_dmn_ass_var_trv() creates list of dimensions associated with input
+	variable list by marking flg_ass_var in	unique dimension list
+
+2013-03-19  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.2.6 release procedure:
+ 	Changes since nco-4_2_5: --rec_apn, non-atomics, --fix_rec_crd, scope
+	cd ~/nco;cvs tag -d nco-4_2_6;cvs tag -d nco-4_2_6-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.6 release"
+	cvs tag -c nco-4_2_6;cvs tag -c nco-4_2_6-1
+
+2013-03-16  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks -O -v two_dmn_rec_var ~/nco/data/in_grp.nc ~/foo.nc;ncks ~/foo.nc
+        exposes TODO nco1091, a possible netCDF/HDF bug---duplicate dimension IDs are generated
+        Seems to occur if dimension the same name when defined in a group and its ancestor group
+        C program that reproduces it, using only netCDF API calls, in
+	http://glace.ess.uci.edu/libs/netcdf/257980
+
+2013-03-13  Pedro Vicente  <pvicente at uci.edu>
+
+	* configure: detect Mac OS MacPorts netCDF library
+
+2013-03-11  Charlie Zender  <zender at uci.edu>
+
+	* ncecat remove lmt_all structure code from GAG branch
+
+	* ncecat warn when automatically generated GPE paths conflict during GAG
+
+	* Verify ncks dumps many NASA HDF5 and HDF-EOS5 files, though no HDF4 or HDF-EOS2 files
+
+	* Clarify NC_ENOTNC and NC_ENOTBUILT errors
+
+2013-03-10  Pedro Vicente  <pvicente at uci.edu>
+
+	* Regression tests for order coordinates by group depth and "out of scope" coordinate
+
+	* nco_cmp_crd_dpt() Compare coordinate structures by group depth
+
+2013-03-08  Pedro Vicente  <pvicente at uci.edu>
+
+	* Add regression tests for creation of variables with ancestor group dimensions (GPE, non-GPE)
+
+	* nco_bld_var_dmn() Assign variable's dimensions to either coordinates or dimension structures
+	Handle "out of scope" cases as non-assigned coordinate
+
+	* Regression test for coordinate "out of scope" (group depth greater than variable that uses coordinate)
+
+2013-03-08  Charlie Zender  <zender at uci.edu>
+
+	* Implement and test ncflint --fix_rec_crd
+
+2013-03-07  Charlie Zender  <zender at uci.edu>
+
+	* Add hooks for ncflint --fix_rec_crd
+
+2013-03-06  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_scp_var_crd() Return in scope coordinate for variable
+
+	* nco_bld_var_dmn() Assign variables dimensions to either coordinates or dimension structs
+
+	* nco_get_sls_chr_cnt() Get number of slash characters in a string path
+
+	* nco_get_str_pth_sct() Get full name token structure (path components)
+
+	* Add regression tests for "parallel" scope
+
+2013-03-05  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_dmn_fll_nm_id() Return unique dimension full name from unique ID
+
+	* nco_dmn_trv_sct() Return unique dimension object from unique ID
+
+2013-03-05  Charlie Zender  <zender at uci.edu>
+
+	* Add record character variables to in.cdl
+
+2013-03-04  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_bld_dmn_ids_trv() Build dimension info for all variables using unique dimension IDs
+
+	* nco_has_crd_dmn_scp() Is there a variable with same name in dimension's scope?
+
+2013-03-02  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_xtr_crd_add() Add all coordinates to extraction list
+	re-written for GTT instead of using netCDF API calls
+
+2013-02-27  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_cpy_msa_lmt() Copy MSA structs GTT to local function (print or write)
+
+	* nco_prn_var_dfn() re-written for GTT
+
+	* nco_cnk_sz_set_trv() re-written for GTT
+
+2013-02-26  Charlie Zender  <zender at uci.edu>
+
+	* Add nco_dbg_grp between nco_dbg_scl and nco_dbg_var
+
+	* Improve epitaph from NC_ENOTNC to include diskless/RAM errors
+
+	* ncrename dies more gracefully when required attributes do not exist
+
+2013-02-26  Pedro Vicente  <pvicente at uci.edu>
+
+	* rewrote nco_xtr_cf_prv_add() Add specified CF-compliant coordinates of specified variable to extraction list
+    this fixes nco1086, deprecated functions used nco_aux_grp_id(), trv_tbl_fnd_var_nm()
+    add regression test ncks#60
+
+	* nco_prt_grp_nm_fll() Debug function to print group full name from ID
+
+2013-02-25  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_msa_wrp_splt_cpy() Split wrapped dimensions (make deep copy of new wrapped limits)
+
+	* nco_msa_prn_var_val_trv() Print variable data; use GTT to get coordinates;
+     this fixes nco1088
+
+	* nco_cpy_var_val_mlt_lmt_trv() Copy variable data from input to output file
+
+2013-02-25  Charlie Zender  <zender at uci.edu>
+
+	* #define NCO_USE_FILL_VALUE before not after #ifdef NCO_USE_FILL_VALUE
+
+2013-02-24  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_bld_var_dmn() Build variables dimensions information (coordinate variables)
+
+2013-02-23  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_blb_crd_var_trv() Detect coordinate variables into GTT
+
+	* nco_lmt_evl_dmn_crd() Parse user-specified limits into hyperslab specifications
+	Can be used for dimensions or coordinate variables
+
+	* nco_bld_lmt() Assign user specified dimension limits to GTT (Group Traversal Table)
+
+	* ncks: regression test for limits with dimension/non coordinate case
+
+2013-02-22  Charlie Zender  <zender at uci.edu>
+
+	* Implement new nco_cpy_var_dfn() API which uses GPE and nco_inq_dmn_grp_id()
+	New routines only called when dbg_lvl=5. Still buggy.
+	Old routines, invoked when dbg_lvl != 5, work fine.
+
+2013-02-21  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks, ncbo, ncecat: aggregate building of GTT (Group Traversal Table) into a function
+          nco_bld_trv_tbl(); allocate elements as needed
+
+2013-02-21  Charlie Zender  <zender at uci.edu>
+
+	* Tighten and complete algorithm to identify ancestor groups in nco_xtr_dfn()
+
+2013-02-20  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks eliminate lmt_all array and replace with GTT (Group Traversal Table)
+        nco_cnk_sz_set_trv() set chunksize parameters using object variable
+
+2013-02-20  Charlie Zender  <zender at uci.edu>
+
+	* Die with graceful hint on NC_EFILLVALUE/NC_ELATEFILL errors
+
+2013-02-19  Charlie Zender  <zender at uci.edu>
+
+	* ncrename requires presence of attributes in all variables when attribute is not
+ 	prefixed with dot, unless attribute is a global	or group attribute.
+
+2013-02-16  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks eliminate lmt_all array and replace with GTT (Group Traversal Table)
+	structure that stores full path names for dimensions and coordinate variables.
+	nco_xtr_wrt_trv() writes extracted data to output file
+	nco_xtr_dfn_trv() defines extracted groups, variables, and attributes in output file
+	nco_prn_var_val_trv() prints variable data
+
+	* ncks limits are stored in the GTT dimension structure and MSA is applied.
+	Distribute these to variables when writing with nco_msa_prn_var_val_trv().
+	nco_bld_lmt_trv() assigns user specified dimension limits to traversal table dimensions.
+
+2013-02-14  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks ncks eliminate lmt_all array and replace with GTT (Group Traversal Table)
+	nco_bld_crd_var_trv() builds dimension information for all variables
+	nco_var_dmn_scp() checks if variable is in dimension scope
+
+	* ncks parses limits from dimension object associated functions:
+	nco_bld_lmt_trv() Assign user specified dimension limits to traversal table dimensions
+
+2013-02-13  Charlie Zender  <zender at uci.edu>
+
+	* Copy grp_id_in and grp_id_out elements of traversal table
+	variables into nm_id structure to enable MM3->MM4 and MM4->MM3.
+
+2013-02-10  Charlie Zender  <zender at uci.edu>
+
+	* Improve error message when appending variable with rank mismatch
+
+2013-02-09  Charlie Zender  <zender at uci.edu>
+
+	* Reformat metadata printing, include more max. depth, number variable attributes
+
+2013-02-08  Charlie Zender  <zender at uci.edu>
+
+	* Fix overcount of record dimensions
+
+	* Match rx containing slashes to full path not to stub
+	This allows rx's like /g11/uint_.+ to succeed
+	Previously, rx's only worked on stubs (last components of full names)
+
+	* Re-format global metadata output
+
+	* Add all coordinates necessary to make in_grp.cdl well-defined CF file (i.e., squelch CF warnings)
+
+	* Code to ignore non-atomic types appears to work
+
+	* Add non-atomic types to in_grp.cdl.
+	Initializations break ncgen from netCDF prior to ~201211. What to do?
+
+	* Update to netCDF 20130208 snapshot
+
+	* Add support for ignoring (instead of failing on) non-atomic types
+
+2013-02-04  Charlie Zender  <zender at uci.edu>
+
+	* Split ncks dimension report into unique fixed and record dimensions
+
+2013-02-01  Charlie Zender  <zender at uci.edu>
+
+	* Add --rec_apn documentation to nco.texi
+
+2013-01-31  Charlie Zender  <zender at uci.edu>
+
+	* Add --rec_apn regression tests
+
+	* Add --rec_apn to ncra and ncrcat. Makes possible direct appends.
+
+2013-01-29  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.2.5 release procedure:
+ 	Changes since nco-4_2_4: fix ncks mk/fix_rec_dmn bugs, metadata printing
+	cd ~/nco;cvs tag -d nco-4_2_5;cvs tag -d nco-4_2_5-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.5 release"
+	cvs tag -c nco-4_2_5;cvs tag -c nco-4_2_5-1
+
+2013-01-27  Charlie Zender  <zender at uci.edu>
+
+	* Update documentation to refect new --fix_rec_dmn syntax
+
+	* Fix 4.2.4 bug that broke --fix_rec_dmn
+
+	* Add --fix_rec_dmn regression tests, including netCDF3 test with MM3 workaround
+
+	* Remove tm2_tm3 from in_grp.cdl since ncgen netCDF 4.2.1- chokes on it
+
+	* Allow for --fix_rec_dmn corner case in nco_cpy_rec_var_val(),
+	i.e., when variable is record in input but not in output
+
+	* Parse --fix_rec_dmn by prefixing dimension name with "fix_". Kludgy? Yes.
+
+2013-01-26  Charlie Zender  <zender at uci.edu>
+
+	* Remove all record-dimension handling from, and thus dramatically simplify, nco_xtr_dfn()
+
+	* Test and merge nco_cpy_var_dfn() changes to nco_cpy_var_dfn_lmt()
+
+	* ncks only copies global metadata once
+
+	* ncks prints multiple root record dimensions
+
+	* nco_prn_var_dfn() handles multiple record dimensions
+
+	* Add tm2_tm3 to allow netCDF4 regression tests on variables with multiple record dimensions
+
+	* Fix 4.2.4 bug that broke --mk_rec_dmn
+
+	* Smarten nco_cpy_var_dfn() to allow multiple netCDF4 record dimensions
+
+	* Add --mk_rec_dmn regression tests
+
+	* New API: pass rec_dmn_nm to nco_cpy_var_dfn*() only when user-specified
+
+2013-01-25  Charlie Zender  <zender at uci.edu>
+
+	* Remove ENABLE_NETCDF4 from nco_cpy_var_val_lmt()
+
+2013-01-23  Charlie Zender  <zender at uci.edu>
+
+	* Prepare to implement --mk_rec_dmn functionality in nco_xtr_dfn()
+
+2013-01-21  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.2.4 release procedure:
+ 	Changes since nco-4_2_3: ncks & ncecat new xtr API, ncra bugfix, ncrename
+	cd ~/nco;cvs tag -d nco-4_2_4;cvs tag -d nco-4_2_4-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.4 release"
+	cvs tag -c nco-4_2_4;cvs tag -c nco-4_2_4-1
+
+	* Harmonize printing of netCDF3 and netCDF4 metadata
+
+	* Re-add --mk_rec_dim as synonym for preferred --mk_rec_dmn
+
+2013-01-20  Charlie Zender  <zender at uci.edu>
+
+	* Only print fully-qualified name of variables in non-root groups
+	This preserves traditional printing format for netCDF3 files
+
+2013-01-19  Charlie Zender  <zender at uci.edu>
+
+	* Pass CPY_GRP_METADATA _and_ CPY_VAR_METADATA to nco_xtr_dfn()
+
+	* Systematize extraction list function names
+
+	* Remove cruft from nco_grp_utl.[ch]
+
+	* Implement new extraction list API in ncecat
+
+	* Restructure nco_xtr_dfn() to isolate variable from group definitions
+	Group metadata now handled by separate block executed iff PRN_VAR_METADATA
+	This give user ability to turn-off all metadata copying
+	Group metadata now copied for empty ancestors of all extracted variables
+	Previously group metadata were only written to groups containing variables
+	New algorithm: 1. Ensures group metadata written only once.
+	2. Creates consistent state for group and variable extraction with flg_xtr
+	3. Handles corner cases where groups introduced after nco_mk_xtr()
+	by, e.g., associated coordinates and CF conventions, now have flg_xtr.
+	Overall, groups now more equal in treatment to variables
+	This may be useful in extending future functionality
+
+2013-01-18  Charlie Zender  <zender at uci.edu>
+
+	* Remove cruft from nco_grp_utl.[ch]
+
+	* Rename functions for clarity and to facilitate cruft removal
+
+	* Move MM3 code into nco_xtr_wrt()
+
+	* Split nco_grp_var_mk_trv2() into nco_xtr_dfn() and nco_xtr_wrt()
+
+	* Add (uninitialized) group ID members to trv_obj structure
+
+	* Delete ncks -B switch and require -b fl_bnr instead
+	This simplifies logic---now use fp_bnr instead of NCO_BNR_WRT
+
+2013-01-15  Charlie Zender  <zender at uci.edu>
+
+	* Place explicit netCDF3 path in nco_inq_grp_full_ncid_flg()
+
+	* Safeguard potential illegal memory access in nco_mk_xtr() string manipulation
+
+2013-01-14  Charlie Zender  <zender at uci.edu>
+
+	* Fix bug introduced in 4.2.1 that causes ncea to break when handling
+	files that do not contain a record dimension. Thanks to Martin Otte
+	for reporting the bug and providing a working fix.
+	http://nco.sf.net#bug_ncea_rec_var
+
+	* Memory error in nco_mk_xtr() triggers segfaults in autoconf build
+
+	* Remove new regression tests that are fragile, i.e., whose answers change as in.cdl and in_grp.cdl change
+
+2013-01-13  Charlie Zender  <zender at uci.edu>
+
+	* Document union-mode and intersection-mode in nco.texi, and give
+	examples with simultaneous anchoring and recursion
+
+	* Add --ram_all to remaining usage strings in nco_ctl.c
+
+	* Reorganize nco_grp_var_mk_trv2()
+
+	* Rework details of NCO GSL code: use mss_val as argument name,
+	eliminate C99/C++ "//" comment syntax, and attribute copyrights in original GSL code
+
+2013-01-12  Charlie Zender  <zender at uci.edu>
+
+	* Set is_crd_var to True in nco_var_fll() when variable referenced
+	in either CF "bounds" or "coordinates" attributes. Effectively,
+	the only consequence of this is that the arithmetic operators now
+	treat CF coordinates like basic coordinates in all ways. More
+	consistent to have time_bnds be an average, like time, rather than
+	a total when -y ttl is specified. This simplifies nco_var_lst_dvd()
+	which no longer separately checks for CF coordinates.
+
+	* All regression tests pass on netCDF4-enabled NCO.
+
+	* Enable new extraction maker nco_mk_xtr() version of ncks. This
+	removes most explicit dependencies on netCDF format from main.c.
+	MM3 temporarily disabled.
+
+	* Tweak regression tests to work with intersections, non-recursive requests
+
+2013-01-11  Charlie Zender  <zender at uci.edu>
+
+	* Commit changes to all but source code files
+
+2013-01-10  Charlie Zender  <zender at uci.edu>
+
+	* Finish initializing flags. Implement unions/intersections.
+
+2013-01-08  Pedro Vicente  <pvicente at uci.edu>
+
+        * Add Qt/MSVC GSL 1.8d; to use add environment variables LIB_GSL and HEADER_GSL
+
+2012-12-18  Charlie Zender  <zender at uci.edu>
+
+	* More work on flags
+
+	* Dupe netCDF4 stubs to present a fake library for manipulating netCDF3 files with the netCDF4 API
+
+2012-12-17  Charlie Zender  <zender at uci.edu>
+
+	* Use new extraction list checker nco_mk_xtr()
+
+2012-12-16  Charlie Zender  <zender at uci.edu>
+
+	* Fix bug introduced in 4.2.1 that caused ncra to skip writing
+	results of final normalization if trailing files were superfluous.
+	In the most common case, all zeroes appeared in the output file.
+
+2012-12-14  Charlie Zender  <zender at uci.edu>
+
+	* Document ncrename changes
+
+	* ncrename -a global at old_att,new_att works for global attributes
+
+2012-12-12  Charlie Zender  <zender at uci.edu>
+
+	* ncrename -a @old_att,new_att works for global attributes
+
+	* Start re-vamp of ncrename global attribute handling
+
+	* Add NCO_NOERR and NCO_ERR tokens for generic success/failure return codes
+
+	* Change strcmp("global") to strcasecmp("global") in ncatted
+
+2012-12-07  Charlie Zender  <zender at uci.edu>
+
+	* Change FL_LST_IN_MAX_LNG from 1 MB to 10 MB per user request
+
+2012-12-06  Pedro Vicente  <pvicente at uci.edu>
+
+	* bm: ncks #54 Extract CF 'coordinates' variables (netCDF4 file)
+
+	* bm: ncks #55 Extract CF 'coordinates' variables (netCDF3 file)
+
+	* bm: ncks #56 Extract CF 'bounds' variables (netCDF4 file)
+
+	* bm: ncks #57 Extract CF 'bounds' variables (netCDF3 file)
+
+2012-12-05  Pedro Vicente  <pvicente at uci.edu>
+
+	* bm: ncks #51-53 Extract associated coordinates test 2-4 (netCDF3/4 file)
+
+2012-12-04  Pedro Vicente  <pvicente at uci.edu>
+
+	* bm: ncks #50 Extract associated coordinates test 1 (netCDF3 file)
+
+2012-12-01  Pedro Vicente  <pvicente at uci.edu>
+
+	* deprecate grp_nm member of nm_id_sct; use full group name to get name as needed
+
+2012-11-30  Pedro Vicente  <pvicente at uci.edu>
+
+	* bm: ncks #39 2D variable definition (netCDF4 file)
+
+	* bm: ncks #40-49 Variable/Group extraction test 1-8
+
+	* deprecate grp_id member of nm_id_sct; use full group name to get ID as needed
+
+2012-11-29  Pedro Vicente  <pvicente at uci.edu>
+
+	* bm: ncks #39 exclude variables (netCDF3 file)
+
+	* deprecate nco_var_lst_xcl and use nco_var_lst_xcl_trv for both netCDF3 and netCDF4
+
+	* Qt: allow Win32 build with netCDF3; define environment $(HEADER_NETCDF3) and $(LIB_NETCDF3)
+	and use CONFIG += netcdf3 in /qt/nco.pri
+
+2012-11-28  Pedro Vicente  <pvicente at uci.edu>
+
+	* Add --get_file_info option
+
+	* bm: ncks #33 --get_grp_info option (netCDF3 file)
+
+	* bm: ncks #34 --get_grp_info option (netCDF4 file)
+
+	* bm: ncks #35 --get_file_info option (netCDF3 file)
+
+	* bm: ncks #36 --get_file_info option (netCDF4 file)
+
+	* bm: ncks #37 exclude all variables (netCDF3 file)
+
+	* bm: ncks #38 exclude all variables (netCDF4 file)
+
+2012-11-27  Pedro Vicente  <pvicente at uci.edu>
+
+	* Add --get_grp_info option
+
+2012-11-27  Charlie Zender  <zender at uci.edu>
+
+	* Create nco-bugs at lists.sourceforge.net address for AC_INIT()
+
+2012-11-20  Pedro Vicente  <pvicente at uci.edu>
+
+	* bm: NCO_AVOID_BM_REPORT avoids prompt to send benchmark results
+
+	* bm: Detect ENABLE_NETCDF4 and HAVE_NETCDF4_H in config.h and run tests accordingly
+
+2012-11-20  Charlie Zender  <zender at uci.edu>
+
+	* Document anchoring and recursion at http://nco.sf.net/nco.html#rcr
+
+	* Implement logic for anchoring and recursion in nco_chk_trv()
+
+2012-11-18  Charlie Zender  <zender at uci.edu>
+
+	* rx seems to work for both variables and groups in nco_chk_trv()
+
+	* Move rx #ifdef logic from nco_chk_trv() down into nco_trv_rx_search()
+
+	* Implement additional checks for variables in nco_chk_trv()
+
+	* Implement rx for groups in nco_chk_trv()
+
+	* Re-organize and rename nco_grp_trv structures
+
+	* Functionalize nco_hash2comma()
+
+2012-11-17  Charlie Zender  <zender at uci.edu>
+
+	* Tidy nco_grp_utl.[ch]
+
+	* Add NCO spiral logos in Scalable Vector Graphic and
+	GIMP format, logo_srl.svg and logo_srl.xcf, respectively.
+	Contributed by Andrea Cimatoribus A.Cimatoribus at uu.nl
+
+	* Fix nco_chk_trv() off-by-one error on end boundary
+
+	* Fix nco_chk_trv() for -g '' and -v ''
+
+2012-11-16  Charlie Zender  <zender at uci.edu>
+
+	* nco_chk_trv() allows multi-component user-supplied paths
+
+2012-11-15  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #32: Sort output alphabetically
+
+2012-11-15  Charlie Zender  <zender at uci.edu>
+
+	* Start multi-component path work in nco_chk_trv()
+
+	* Change var and grp to obj where usage is generic
+
+	* Change nc_typ to nco_obj_typ
+
+2012-11-13  Charlie Zender  <zender at uci.edu>
+
+	* ncunits filter
+
+	* NCO 4.2.3 release procedure:
+ 	Changes since nco-4_2_2: GPE, ncecat fix, group atts.
+	cd ~/nco;cvs tag -d nco-4_2_3;cvs tag -d nco-4_2_3-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.3 release"
+	cvs tag -c nco-4_2_3;cvs tag -c nco-4_2_3-1
+
+2012-11-11  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #31: Group dimension hyperslabs
+
+2012-11-09  Charlie Zender  <zender at uci.edu>
+
+ 	* GPE documentation
+
+	* Change most "Global" to "Group" attributes when printing metadata
+
+2012-11-08  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.2.3 release procedure:
+ 	Changes since nco-4_2_2: GPE, ncecat fix, group atts.
+	cd ~/nco;cvs tag -d nco-4_2_3;cvs tag -d nco-4_2_3-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.3 release"
+	cvs tag -c nco-4_2_3;cvs tag -c nco-4_2_3-1
+
+2012-11-08  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks: GPE group attribute extraction
+
+	* ncks regression test #30: GPE group attribute extraction
+
+2012-11-07  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks: nco_att_cpy_trv: Copy group attributes
+
+2012-11-06  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks: Handle GPE redundancy
+
+2012-11-05  Charlie Zender  <zender at uci.edu>
+
+	* ncks/ncecat: Complete and test GPE infrastructure
+
+	* ncecat: Fix 4.2.2 bug that skips first input file in RECORD_AGGREGATE mode with NINTAP
+
+2012-11-05  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #29: Extract a 'bounds' variable
+
+2012-11-02  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #28: Extract coordinate variables
+
+	* ncks: nco_var_lst_crd_add_trv: Add all coordinates to extraction list
+
+2012-11-02  Charlie Zender  <zender at uci.edu>
+
+	* Call nco_prs_gpe_arg() to parse GPE argument into GPE structure
+
+	* Add Group Path Editing (GPE) structures
+
+2012-11-01  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #26: Extract group attributes
+
+	* ncks regression test #27: Extract global attributes
+
+	* ncks: nco_grp_var_mk_trv: Create groups/write variables in output file
+
+2012-10-31  Charlie Zender  <zender at uci.edu>
+
+	* ncflint: verify output type is float when interpolating between two packed floats
+
+2012-10-29  Charlie Zender  <zender at uci.edu>
+
+ 	* NCO 4.2.2 release procedure:
+ 	Changes since nco-4_2_1: ncks groups, hdr_pad, NULs, _'s, ncecat GAG
+	cd ~/nco;cvs tag -d nco-4_2_2;cvs tag -d nco-4_2_2-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.2 release"
+	cvs tag -c nco-4_2_2;cvs tag -c nco-4_2_2-1
+
+2012-10-28  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #24: Hyperslabs (test -d with -v and -g)
+
+	* ncks regression test #25: Dimensions (test -v dimension)
+
+2012-10-27  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks regression test #22: Extract variables in groups (test -g with -v)
+
+	* ncks regression test #23: Create variables in groups (test -G with -v and -g)
+
+2012-10-26  Charlie Zender  <zender at uci.edu>
+
+	* ncecat: Copy global attributes of first file to root of output file
+
+	* Place nco_hst_att_cat() after nco4_grp_lst_mk() so appending history command works
+
+2012-10-25  Pedro Vicente  <pvicente at uci.edu>
+
+	* nco_def_grp_flg() used in nco4_grp_lst_mk_itr() for append mode
+
+2012-10-24  Pedro Vicente  <pvicente at uci.edu>
+
+	* xtr_lst_fnd() finds full variable name in extraction list
+
+	* nco_aux_grp_id() returns group ID given variable full name
+
+	* Add to in_grp.cdl for CF tests: add gds_var, gds_crd, lat_gds, lon_gds
+
+	* nco_fnd_var_trv() finds variable by relative name and exports to "nm_id"
+
+	* nco_var_lst_crd_ass_add_cf() adds to extraction list all
+	coordinates associated with CF convention; regression test ncks #21
+
+2012-10-23  Pedro Vicente  <pvicente at uci.edu>
+
+	* ncks: chunking in nco4_grp_lst_mk() (define output file recursively);
+	regression test ncks #20
+
+	* ncks: nco_dmm_trv() and nco_var_lst_crd_ass_add_trv() implement
+	extraction of associated coordinate variables; regression test ncks #19
+
+	* ncks: nco_prn_att_trv() implements recursive output of global (group) attributes
+
+2012-10-23  Charlie Zender  <zender at uci.edu>
+
+	* Adopt new naming convention in hand-written netCDF4 CDL files:
+	g4g1g1 is the first subgroup of	g4g1 which is the first subgroup
+	of g4 which is the fourth subgroup of /. The level of the group
+	can be determined by counting the g's.
+
+2012-10-22  Charlie Zender  <zender at uci.edu>
+
+	* Built netCDF library patch for real nc_rename_grp() function:
+	  http://dust.ess.uci.edu/tmp/nc_rename_grp.tar.gz
+	  Function currently dies in H5Gmove() for unknown reasons
+	  Details nc_rename_grp() in nco_netcdf.c
+
+	* Wrote nc_rename_grp() stubs for distribution now with NCO
+
+	* Call nco_rename_grp() from ncrename
+
+	* Implement library stubs for nc_rename_grp()/nco_rename_grp()
+
+	* Modify in_grp.cdl to allow for new tests
+
+2012-10-21  Charlie Zender  <zender at uci.edu>
+
+	* Prepare ncrename for -g group renaming arguments
+
+	* ncks/ncecat -G accepts extended (depth > 1, multi-component) group names
+
+2012-10-20  Charlie Zender  <zender at uci.edu>
+
+	* Implement nco_def_grp_full() to define root group for extracted variables
+
+	* Remake ncks -G --gag grp_out as root group for ouput à la ncecat
+
+	* Deprecate ncks -G into ncks --get_grp_info
+
+2012-10-19  Charlie Zender  <zender at uci.edu>
+
+	* Add Debian hardening tokens to bld/Makefile
+
+	* Add ncecat -G regression test
+
+	* ncecat -G appears to work on netCDF3 and netCDF4 files
+
+	* Add in_grp.cdl -> in_grp.nc rules to configure and bld/Makefile
+
+2012-10-18  Charlie Zender  <zender at uci.edu>
+
+	* ncecat -G makes it through first file but nco4_var_lst_mk() needs re-initialization
+
+	* Make nco4_inq_trv() return values only if pointers non-NULL
+
+2012-10-16  Charlie Zender  <zender at uci.edu>
+
+	* Merged ncks group code into ncecat GROUP_AGGREGATE code
+
+2012-10-15  Charlie Zender  <zender at uci.edu>
+
+	* Bifurcate ncecat logic into GROUP_AGGREGATE and RECORD_AGGREGATE
+
+	* Initiate ncecat -G option for group aggregation
+
+	* Stop printing variable and dimension IDs, since these cluttered
+	the printed output and were only used for development purposes
+	long ago.
+
+2012-10-09  Charlie Zender  <zender at uci.edu>
+
+	* Deprecate ncra2.c
+
+	* Fix TODO nco1075 where ncpdq was broken for re-arrangements like
+	ncpdq -O -C -v PS,time_lon -a lat,lon,time ~/nco/data/in.nc ~/foo.nc
+	Eliminate pre-emptive check in nco_var_dmn_rdr_mtd() for condition
+	which was not illegal yet led to exit() anyway.
+	All that was necessary was to eliminate the exit() call.
+	False-postive errors were produced for variables that were record
+	in input, fixed in output, and themselves lacked the record
+	dimension, i.e., they became fixed (were neutered?) because record
+	dimension had to be fixed to satisfy re-ordering of other variables.
+
+2012-10-07  Charlie Zender  <zender at uci.edu>
+
+	* Die when user attempts --mk_rec_dmn with non-existent dimension
+
+	* Fix mistaken handling of return values from nc_inq_unlimdim()
+	which caused ncks --fix_rec_dmn to fail. Bug introduced 20111130
+	but caught only now because fix_rec_dmn was never
+	regression-tested.
+
+2012-10-06  Charlie Zender  <zender at uci.edu>
+
+	* Use nco_fmt_sng_printf_subst() to replace user-specified string
+	when missing values encountered. rx needs work.
+
+	* Add --no_blank switch to fix borken regression tests
+
+	* ncks: print underscore ("_") instead of missing value
+
+2012-09-28  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks: do not create empty groups
+
+2012-09-22  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks: print variable's data for recursively nested netCDF4 files
+
+2012-09-19  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks: -G option prints extra dimension information with -D 4
+
+2012-09-11  Charlie Zender  <zender at uci.edu>
+
+	* Remove unused nbr_dmn_fl from nco_cnk_sz_set()
+
+	* Tweak i18n machinery
+
+2012-09-10  Charlie Zender  <zender at uci.edu>
+
+	* Add median filter ncmdn
+
+	* Refine DRN/MRO documentation
+
+2012-09-09  Charlie Zender  <zender at uci.edu>
+
+	* Improve diagnostics in nco_dfl_case_nc_type_err() error message
+
+2012-09-07  Charlie Zender  <zender at uci.edu>
+
+	* Add filters ncmax, ncavg, ncrng
+
+2012-09-05  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks: implement -c (extract coordinate variables) for group hierarchies
+
+2012-09-04  Charlie Zender  <zender at uci.edu>
+
+	* nco_att_cpy() now attempts to copy array-valued missing values
+	Attempt will likely fail, but some old files have these arrays,
+	and older versions of netCDF allow it to succeed.
+	Since this is a metadata convention, and NCO is
+	convention-agnostic, NCO will attempt it and allow the netCDF
+	layer, not NCO, to cause the failure.
+
+2012-09-03  Charlie Zender  <zender at uci.edu>
+
+	* Restore trailing NUL to append mode, yet overwrite previous trailing NUL
+
+2012-09-02  Charlie Zender  <zender at uci.edu>
+
+	* Add trailing NUL character to ncatted in create/modify/overwrite modes
+
+	* Add --hdr_pad to man pages
+
+2012-09-01  Charlie Zender  <zender at uci.edu>
+
+	* Add --hdr_pad to all remaining operators
+
+2012-08-30  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks: implement -x (convert extraction to exclusion list) for group hierarchies
+
+2012-08-27  Henry Butowsky  <henryb at hush.com>
+
+	* Fix insidious bug with ram_delete() now working!!
+
+2012-08-24  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks stdout handling of full hierarchy netCDF4 traversal; -g and -v control specific groups and variables
+
+2012-08-23  Charlie Zender  <zender at uci.edu>
+
+	* Remove -r option from wget. Behavior of -r may have changed.
+	Thought it meant clobber existing file. It now means recursive.
+
+	* Restrict wget to --tries=1 to fix "recursive" wgetting when DAP fails to NOAA NOMADS
+
+2012-08-21  Henry Butowsky  <henryb at hush.com>
+
+ 	* Add semi-intelligent handling of missing values in bilinear
+	interpolation functions bilinear_interp() bilinear_interp_wrap()
+
+2012-08-20  Charlie Zender  <zender at uci.edu>
+
+	* Windows MSVC builds ncwa without parser/lexer and -B option support
+
+2012-08-17  Charlie Zender  <zender at uci.edu>
+
+	* Distinguish between regular expressions for variable
+	wildcarding, and filename expansion by shell globbing
+
+2012-08-16  Charlie Zender  <zender at uci.edu>
+
+	* Print filenames in errors when open() and create() calls fail
+
+2012-08-15  Henry Butowsky  <henryb at hush.com>
+
+	* Modify ncoGrammer to support negative srt/end index convention
+
+2012-08-12  Charlie Zender  <zender at uci.edu>
+
+	* Replace logo request on homepage with software stack image logo_nco_stk.png
+
+2012-08-10  Charlie Zender  <zender at uci.edu>
+
+	* Prune headers for strings.h and ctype.h
+
+2012-08-07  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncks -G prints number of group's subgroups, dimensions, attributes, variables
+
+2012-08-03  Charlie Zender  <zender at uci.edu>
+
+	* Ensure netCDF3-only versions see prototypes for NCO netCDF4 functions, e.g., nco_inq_grp*
+
+ 	* NCO 4.2.1 release procedure:
+ 	Changes since nco-4_2_0: no_tmp_fl, NC_DISKLESS, -'ve -d, DRN/MRO
+	cd ~/nco;cvs tag -d nco-4_2_1;cvs tag -d nco-4_2_1-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.1 release"
+	cvs tag -c nco-4_2_1;cvs tag -c nco-4_2_1-1
+
+	* Patch 4.2.1 tarball to work with netCDF3-only installs by replacing nc_inq*() with nco_inq*()
+
+2012-08-02  Charlie Zender  <zender at uci.edu>
+
+	* Swap ncra2.c with ncra.c so default ncra/ncrcat now has DRN/MRO
+
+	* Fix ncra2.c bug #11: use flg_ntl_rth to correctly initialize nco_opr_drv
+
+2012-08-01  Pedro Vicente  <pvicente at uci.edu>
+
+        * Add a ncks -z option to iterate input netCDF file tree
+
+2012-07-31  Charlie Zender  <zender at uci.edu>
+
+	* Document DRN/MRO in nco.texi, man pages, and usage
+
+2012-07-31  Pedro Vicente  <pvicente at uci.edu>
+
+        * Re-base record bounds variables (e.g., time_bnds) in ncrcat/ncra
+
+2012-07-31  Charlie Zender  <zender at uci.edu>
+
+	* Warn in ncrcat/ncra when re-basing possibly necessary but UDUnits not installed
+
+2012-07-30  Charlie Zender  <zender at uci.edu>
+
+	* Add level_2_group_1 to in_grp.cdl
+
+2012-07-27  Charlie Zender  <zender at uci.edu>
+
+	* Add --mro option to ncra
+
+	* Set rcd_stt after DAP success to correctly mimic stat() returns
+
+	* Improve DRN/MRO warning/error messages
+
+2012-07-26  Charlie Zender  <zender at uci.edu>
+
+	* ZKB in DRN/MRO of ncra2.c and it is fully tested and passes all tests
+
+	* Fix ncra2.c bug #10: correct idx_end_max_abs by rec_in_cml when lmt_typ_crd
+
+	* Tighten-up DRN/MRO option error/warning/info-handling
+
+	* Die if Fortran (1-based) index equals zero
+
+	* Fix ncra2.c bug #9: end index in last file was corrupted by sloppy user arguments
+
+	* Useful error message when --open_ram attempted on netCDF4 input
+
+	* Add netCDF4 atomic types to in_4.cdl
+
+2012-07-24  Charlie Zender  <zender at uci.edu>
+
+	* Fix ncra2.c bug #8: maintain rec_rmn_prv_drn across files
+
+	* Fix ncra2.c bug #7: pass initialization indicator not rec_usd_cml to nco_opr_drv()
+
+	* Fix ncra2.c bug #6: reset LAST_RECORD_OF_CURRENT_GROUP appropriately
+
+	* Fix ncra2.c bug #5: write MRO to idx_rec_out not always to index 0L
+
+	* Fix ncra2.c bug #4: limit srd increments to when current stride is not last stride
+
+	* Re-write diagnostic rec_nbr_rqs arithmetic to account for DRN groups
+
+2012-07-23  Pedro Vicente  <pvicente at uci.edu>
+
+        * Configure support for UDUnits2 for MacOSX using MacPorts package
+
+2012-07-23  Charlie Zender  <zender at uci.edu>
+
+	* ncra2.c: Do not bother to open trailing superfluous files
+
+	* Implement new master while loop in ncra2.c
+
+	* Add #inline max_int(), min_int() functions
+
+	* Limit parsing, evaluation now rewritten, bug-free, and ready for DRN extensions
+
+	* Correctly account for rec_skp_vld_prv in determining new start index
+
+2012-07-22  Charlie Zender  <zender at uci.edu>
+
+	* Update limit code. Introduce off-by-one error on stride. Will fix tomorrow.
+
+2012-07-21  Charlie Zender  <zender at uci.edu>
+
+	* De-conflate rec_skp_ntl_spf from rec_in_cml
+
+2012-07-20  Charlie Zender  <zender at uci.edu>
+
+	* Add regression test for and fix concatenation of record
+	coordinate-bounded variable across non-monotonic files
+
+	* Fix segfault parsing coordinate value hyperslabs where max
+	specified and min omitted (TODO nco1062)
+
+	* Initialize sng_cnv_rcd with NULL_CEWI instead of CHAR_CEWI
+
+2012-07-19  Charlie Zender  <zender at uci.edu>
+
+	* #include <strings.h> for strcasecmp() prototype
+
+	* Add Multi-record Output (MRO) flag handling
+
+	* Differentiate indices necessary to implement multi-record outputs
+
+	* Rename idx_rec_out as rec_usd_cml, and idx_rec as idx_rec_crr_in,
+	and add new idx_rec_out that means what it says.
+
+	* Remove superfluous OpenMP headers from some library files
+
+	* Functionalize ncea/ncra normalization in nco_opr_nrm()
+
+	* Restructure initialize/compute/normalize/write logic of ncra2
+
+2012-07-19  Pedro Vicente  <pvicente at uci.edu>
+
+        * Configure support for UDUnits2 in recent RPM systems (Fedora 17)
+
+2012-07-18  Charlie Zender  <zender at uci.edu>
+
+	* Legalize drn in nco_lmt_prs(), nco_lmt_evl(), nco_msa_lmt_all_int()
+
+	* Add drn to lmt structures
+
+	* Rework error reporting in nco_aed_prs(), nco_lmt_prs(), nco_lmt_evl()
+
+	* Branch ncra.c into ncra2.c to develop hyperslab duration (drn) option
+
+	* Add filters ncdmnsz and ncrecsz
+
+2012-07-18  Pedro Vicente  <pvicente at uci.edu>
+
+        * Add a new Windows installer; avoids the need for the winzip utility
+
+2012-07-16  Pedro Vicente  <pvicente at uci.edu>
+
+        * Detect presence of netCDF library in configure; exit if not present
+
+2012-07-15  Charlie Zender  <zender at uci.edu>
+
+	* ncks: Print "Coordinate" or "Record Coordinate" instead of "(CRD)(REC)"
+
+	* Add srandom() seed to UNIX to match MSVC implementation of rnd_nbr()
+
+	* Document diskless/RAM and --no_tmp_fl options, and -'ve -d args
+
+2012-07-13  Charlie Zender  <zender at uci.edu>
+
+	* ncks: only add NCO version attribute when HISTORY_ATT_CAT == True
+
+	* Add data/hdr_pad.sh to check metadata header size. Add --hdr_pad to man pages.
+
+2012-07-13  Pedro Vicente  <pvicente at uci.edu>
+
+        * Qt/MSVC add projects for ncrcat and ncea
+
+2012-07-11  Pedro Vicente  <pvicente at uci.edu>
+
+        * ncpdq unpack coordinate variables (nco1030)
+
+2012-07-11  Charlie Zender  <zender at uci.edu>
+
+	* Work on allowing inherited att_typ when aed_mode = modify
+
+	* Add --hdr_pad, --bfr_sz, --no_tmp_fl, --ram_all to man pages
+
+	* Remove 'convert' and nco.png from tags
+
+2012-07-10  Pedro Vicente  <pvicente at uci.edu>
+
+        * Qt/MSVC changes for strcasestr(); enable NEED_STRCASECMP in Qt project
+
+2012-07-09  Charlie Zender  <zender at uci.edu>
+
+	* Negative integer as min or max element of hyperslab specification indicates offset from end
+	Fulfills 2008 feature request of Nick Bower
+
+2012-07-09  Pedro Vicente  <pvicente at uci.edu>
+
+        * Set configure option --enable-netcdf4 to yes by default
+
+2012-07-08  Charlie Zender  <zender at uci.edu>
+
+	* Update man pages with related commands
+
+	* Enable --fl_fmt switch synonym to --file_format on all applicable operators
+
+	* Apply bugfix from Roux so ncra always averages coordinate variables
+
+2012-07-06  Charlie Zender  <zender at uci.edu>
+
+	* Use strcasestr() instead of strstr() for fl_fmt conversions (i.e., netCDF4 = netcdf4)
+
+	* Die when netCDF4 output explicitly requested from netCDF3-only NCO
+
+	* Fix [-? ...] command line option help in nco_ctl.c
+
+2012-07-05  Pedro Vicente  <pvicente at uci.edu>
+
+        * Build doc/Makefile (and thus documentation) if 'makeinfo' program is installed
+
+2012-07-05  Charlie Zender  <zender at uci.edu>
+
+	* Update man pages
+
+2012-07-03  Charlie Zender  <zender at uci.edu>
+
+	* Document --ram and --no_tmp_fl switches
+
+	* Un-break strtoll() compatibility function for AIX xlC
+
+	* Make MSVC file opening Sleep() for same duration as UNIX sleep()
+
+	* Write MSVC lround(),llround(),llround(),llroundf() definitions to obey standard prototypes
+	Move their definitions/declarations to nco_rth_flt.[ch]
+
+2012-07-02  Pedro Vicente  <pvicente at uci.edu>
+
+        * Print $prefix (NCO installation path) in configure output
+
+2012-07-02  Henry Butowsky  <henryb at hush.com>
+
+	* Add exists(var_nm/att_nm) function to return 1 if "var" or "att" exist in Input or Output
+
+2012-07-01  Pedro Vicente  <pvicente at uci.edu>
+
+        * Test for presence of antlr in configure, and if not found, do not build ncap2
+
+2012-06-30  Charlie Zender  <zender at uci.edu>
+
+	* Use nco_fl_open() instead of nco_open() in ncap2
+
+2012-06-28  Charlie Zender  <zender at uci.edu>
+
+	* Harmonize _FillValue with variable type in in.cdl (backwards compatibility with netCDF 4.1.1)
+
+	* Remove NaN values from in.cdl for backwards compatibility (netCDF 4.1.1 does not support)
+
+	* Fix ncks netCDF4 backwards compatibility problem by using #ifdef ENABLE_NETCDF4
+
+	* Tidy Invoke.cc and make ncap2 debug printing systematically quieter
+
+	* --no_tmp_fl appears to work
+
+	* Do not check for existence of temporary file when bypassing temporary file
+
+2012-06-28  Pedro Vicente  <pvicente at uci.edu>
+
+        * Add /qt/ncwa.pro Unix project (uses flex/bison); NCO Unix Qt build now includes all operators
+
+2012-06-27  Charlie Zender  <zender at uci.edu>
+
+	* Tidy nco_fl_utl.c for MSVC compilation
+
+	* Add stubs for netCDF4 group routines. Fixes all known	problems compiling NCO without netCDF4.
+	Realized compilation without netCDF4 may have been broken since	~201108, i.e., NCO 4.0.9!
+
+	* Add is_miss() to return number of missing values in expr/var
+
+2012-06-26  Pedro Vicente  <pvicente at uci.edu>
+
+        * Remove NO_TMP_FL from Qt/MSVC projects, to match WRT_TMP_FL variable (ensure/cancel temporary files)
+
+        * Add /qt/nco.pri file with common compiler and dependency libraries for Qt/MSVC build
+
+        * Use -L -l syntax for library dependencies in Qt Unix projects
+
+2012-06-26  Charlie Zender  <zender at uci.edu>
+
+	* RAM_OPEN and RAM_CREATE now appear to work
+
+	* Add WRT_TMP_FL and wrt_tmp_fl/no_tmp_fl switches to ensure/cancel temporary files
+
+	* Add NC_ECANTREAD, NC_EDAPSVC, and NC_EBADGRPID backward-compatibility error codes to nco.h
+
+2012-06-25  Charlie Zender  <zender at uci.edu>
+
+	* Add Qt directories to 'make tags' sources
+
+	* Handle NaNs better in in.cdl
+
+	* Work on the most- and longest-requested NCO feature: avoiding temporary files.
+	This feature, no_tmp_fl, responds to TODO nco326, nco567, nco781, and nco1014.
+
+	* Do not mv/cp in nco_fl_mv()/nco_fl_cp() when files are identical
+
+	* Change nco_fl_out_open() logic to define bfr_sz_hnt_lcl before use on MSVC
+
+2012-06-24  Charlie Zender  <zender at uci.edu>
+
+	* Propagate RAM_OPEN to nc_open() for all input files
+
+	* Propagate RAM_CREATE to nc_create() for all new output files
+
+2012-06-22  Charlie Zender  <zender at uci.edu>
+
+	* Pass RAM_CREATE, RAM_OPEN flags to all operators via ram_all,
+	create_ram, open_ram and diskless_all switches
+
+	* Implement NC_DISKLESS in nco_open() in ncks.c via --ram_all switch
+
+2012-06-21  Charlie Zender  <zender at uci.edu>
+
+	* Successfully built and tested with netCDF 4.2.1-rc1
+
+2012-06-14  Charlie Zender  <zender at uci.edu>
+
+	* Replace sourceforge.net with sf.net
+
+	* Clean-up contributors on homepage
+
+2012-06-12  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.2.0 release procedure:
+ 	Changes since nco-4_1_0: ncra -y ttl, %i fmt, ncwa NaN, nc__open, MVS
+	cd ~/nco;cvs tag -d nco-4_2_0;cvs tag -d nco-4_2_0-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.2.0 release"
+	cvs tag -c nco-4_2_0;cvs tag -c nco-4_2_0-1
+
+2012-06-11  Charlie Zender  <zender at uci.edu>
+
+	* Within last week Pedro committed Qt/MVS files and changes
+
+	* ncap2: Added RAM variables: double: nan, inf; float: nanf, inff
+	Problem may be with macro call double nan(const char *tagp)
+
+2012-05-22  Charlie Zender  <zender at uci.edu>
+
+	* ncap2 regression tests 10 and 11 fail only on givre, roulee,
+	pass on all other computers, indicating...OpenMP issues?
+
+2012-05-22  Charlie Zender  <zender at uci.edu>
+
+	* All operators except ncap2 now pass all regression tests
+
+	* Systematic overhaul of var list divide logic so that
+	"coordinates" and "bounds" attributes are treated consistently.
+
+	* Fix (do not process) variables listed in "bounds" attributes of
+	size- and rank-preserving operators. Previsouly this exception was
+	made for variables listed in "coordinates" attributes but this was
+	insufficient. Variables like time_bnds were slipping through and
+	causing problems. Now "coordinates" and "bounds" variables are
+	treated equivalently in list-division. This fixes TODO nco1049.
+
+2012-05-21  Charlie Zender  <zender at uci.edu>
+
+	* Invoke nco_var_tll_zro_mss_val() again as post-processing step
+	for ttl functions. Not terribly elegant solution to TODO nco1052.
+
+	* Eliminate two false negative in regression tests cause by,
+	respectively, new rounding behavior and new integer print format.
+
+	* Realized this fix introduced a new regression because now pure
+	missing value variables sum to zero rather than missing value.
+	Need to ensure at end that when tally is zero, value is missing.
+
+	* ncra -y ttl now works when first element is missing value
+	nco_var_copy_tll() now sets accumulator to zero in this case
+	Fixes TODO nco1051 and a regression.
+
+	* ncra does not recognize first value of hyperslab as missing value
+	This is TODO nco1051.
+
+	* Change answer of ncra regression test #02 from 5 to 6 to reflect
+	integer rounding behavior implemented on 20111020 for NCO 4.0.9.
+	Fractions in [0.5) are rounded upward on conversion to integers.
+	Fixes TODO nco1050.
+
+	* Add newer regression test failures to TODO list
+
+2012-05-20  Charlie Zender  <zender at uci.edu>
+
+	* Quiet INFO and side effects from nco__open() and nco__create()
+
+	* Prevent overwriting user-specified bfr_sz_hnt in nco_fl_open() and
+	 nco_fl_out_open(). These include all uses of nco__open() and nco__create().
+
+	* Open and then close TODO nco1047 generated by not re-setting a return code
+
+	* Clean-up TODO lists
+
+	* Annotate Contributors section of manual
+
+	* Place ut_free_system() after all other ut_*() cv_*() calls
+	This fixes double-free() error TODO nco1022 and nco1044 reported
+	independently by Andrew Wittenburg and Peter Campbell.
+
+2012-05-19  Charlie Zender  <zender at uci.edu>
+
+	* Add ncattget example to documentation
+
+2012-05-18  Charlie Zender  <zender at uci.edu>
+
+	* Henry committed ncap2 code that fixes TODO nco7310:
+	ncap2 append mode breaks when dimension already exists
+	ncap2 -O -v -s 'time2=time' ~/nco/data/in.nc ~/foo.nc
+	ncap2 -A -v -s 'foo=time' ~/nco/data/in.nc ~/foo.nc
+
+2012-05-16  Charlie Zender  <zender at uci.edu>
+
+	* ncecat no longer glues a record dimension to any auxiliary
+	coordinate variables (latixy, longxy, ...) or bounds (lat_bnds,
+	lon_bnds, ...). These are variables specified in the "coordinates"
+	or "bounds" attribute, respectively. Note that regular (1D)
+	coordinate variables (lat, lon, time) may also be listed as
+	auxiliary coordinate variables. But ncecat never added a record
+	dimension to "normal" 1D coordinates. Thanks to Patrick Brockmann
+	for this suggestion.
+
+2012-05-14  Charlie Zender  <zender at uci.edu>
+
+	* Add scrutable hint for ncap2 -A append errors, and note in docs
+
+2012-04-15  Charlie Zender  <zender at uci.edu>
+
+	* Pass NC_SIZEHINT_DEFAULT as initialsz to nco__create()
+
+	* Replace all nco_create() calls with nco__create()
+
+2012-04-14  Charlie Zender  <zender at uci.edu>
+
+	* Replace all nco_open() calls with nco_fl_open()
+
+	* Document --bfr_sz_hnt
+
+	* Functionalize nc__open() clause as nco_fl_open()
+
+2012-04-04  Charlie Zender  <zender at uci.edu>
+
+	* Deprecate nco_open() in ncks in favor of nco__open() since
+	latter is equivalent to former with default arguments.
+
+2012-04-03  Charlie Zender  <zender at uci.edu>
+
+	* Add --bfr_sz_hnt option and nco__open() to ncks
+
+2012-03-30  Charlie Zender  <zender at uci.edu>
+
+	* ncks now prints variables of type NC_INT with %i instead of %li
+	formatting. This fixes TODO nco1040.
+
+	* Fix fundamental mistake in use of memset() in	nco_set_long()
+	Buggy method tried to fill tally array with ones quickly
+	Revert to slower but obviously correct array deferencing to fill tally
+	Hard to believe this bug did not cause more errors
+	This fixes TODO nco1039. Thanks to Ken5746 for reporting this.
+
+	* Modify and test NC_FLOAT portion of nco_var_avg() for	NaN-compatibility
+	Verify that ncwa will work with missing value = NaN with this algorithm
+
+	* Clean-up nco_var_avg.c to prepare for NaN-handling
+
+2012-03-29  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.1.0 release procedure:
+ 	Changes since nco-4_0_9: sorts/maps, MD5, chmod, NaNs, MM3
+	cd ~/nco;cvs tag -d nco-4_1_0;cvs tag -d nco-4_1_0-1
+	cd ~/nco;cvs commit -m "Preparing nco-4.1.0 release"
+	cvs tag -c nco-4_1_0;cvs tag -c nco-4_1_0-1
+
+2012-03-23  Charlie Zender  <zender at uci.edu>
+
+	* Add nclist shell alias/function examples to manual
+
+2012-03-21  Charlie Zender  <zender at uci.edu>
+
+	* Clean-up nco_msa.c
+
+	* Place MM3 stubs in ncecat
+
+	* nco_use_mm3_patchset() returns True for MM3->MM4 copies (i.e., case 3)
+
+	* Rename LBF-patchset to MM3-patchset (Multi-record Multi-variable netCDF3 files)
+
+2012-03-13  Charlie Zender  <zender at uci.edu>
+
+	* Verified MM3-workaround appears to work
+	Subsetting is now close	to raw /bin/cp speed on NCAR GLADE filesystem
+	/glade/home/zender/bin/LINUXAMD64/ncks -O -D 3 -x -v TH ~/gary.nc ~/out3_mrg_4.1.0.nc
+	/glade/home/zender/bin/AIX/ncks -O -D 3 -x -v TH ~/gary.nc ~/out3_blf_4.1.0.nc
+
+2012-03-12  Charlie Zender  <zender at uci.edu>
+
+	* Implement nco_cpy_rec_var_val() to finish ncks MM3-workaround
+
+2012-03-11  Charlie Zender  <zender at uci.edu>
+
+	* For unknown reasons, regression tests started passing again (!)
+
+	* Implement nco_var_lst_fix_rec_dvd() as part of MM3 workaround
+
+2012-03-09  Charlie Zender  <zender at uci.edu>
+
+	* Add stubs to ncks for faster copies on Large Blocksize Filesystems (LBFs)
+
+2012-03-08  Charlie Zender  <zender at uci.edu>
+
+	* Allow ncatted to change missing value's that are NaNs
+	Arithmetic operators will still treat NaNs incorrectly, but this
+	allows users to get rid of all NaNs first
+
+	* Add some NaNs to in.nc for testing
+
+2012-03-07  Charlie Zender  <zender at uci.edu>
+
+	* Try hooks to determine filesystem blocksize in prep for Rew workaround
+
+2012-03-06  Charlie Zender  <zender at uci.edu>
+
+	* Merge aux and lmt_all changes from ncpdq.c, ncra.c to mpncpdq.c mpncra.c
+
+2012-03-01  Charlie Zender  <zender at uci.edu>
+
+	* Clean-up ncap2.cc
+
+	* Clean-up CPP token scope
+
+	* Sub-routine-ize nco_fl_overwrite_prm() to cleanup ncatted.c, ncrename.c
+
+	* Port new file copy/chmod code from ncrename to ncatted
+
+	* Replace multiple instances of hard-coded limit with CPP token NCO_MAX_NBR_USR_INPUT_RETRY
+
+	* Allocate tally array for degenerate averages in nco_var_avg()
+	This fixes ncap2 problem. Not sure why ncwa never failed.
+
+	* Add degenerate variables to in.nc for testing nco_var_avg()
+
+	* nco_var_avg() crashes on degenerate arrays sent by ncap2 not ncwa
+	ncap2 -O -v -s 'dgn_max=dgn.max()' ~/nco/data/in.nc ~/foo.nc # Fails
+	ncwa -O -v dgn_var ~/nco/data/in.nc ~/foo.nc # Succeeds
+
+2012-02-29  Charlie Zender  <zender at uci.edu>
+
+	* Use chmod() C-library call instead of chmod shell-command
+
+	* Fix stat() and chmod() logic in ncrename
+
+	* Increase ncrename diagnostics consistency and verbosity
+
+2012-02-28  Charlie Zender  <zender at uci.edu>
+
+	* Implement chmod so ncrename succeeds when output file is specified and input file is read-only
+
+2012-02-23  Charlie Zender  <zender at uci.edu>
+
+	* Update documentation to include/use new sort/map routines
+
+2012-02-21  Henry Butowsky  <henryb at hush.com>
+
+	* Modified/added following sort functions:
+	sort(), asort() -sort ascending with/without map
+	dsort() sort descending with/without map
+	remap() apply sort map to variable
+	unmap() return variable that produced current variable using sort map
+	invert_map() invert the mapping
+
+2012-02-20  Charlie Zender  <zender at uci.edu>
+
+	* Implement MD5_DIGEST in nco_msa_prn_var_val() so MD5 now active
+	in all forms of ncks.
+
+	* Clean-up nco_md5.[ch], mark TODO nco1027 and nco485 as done
+
+	* MD5 optionally enabled (with --md5) for input on ncks, ncrcat, ncecat
+	When so enabled, MD5 comparisons to output are automatic with ncrcat, ncecat
+
+2012-02-19  Charlie Zender  <zender at uci.edu>
+
+	* MD5 is now done for input side. Need to add read loop to check output.
+
+	* Finish implementatation for MSA writes and verify hyperslabs are
+	correctly digested by showing that the digest of the hyperslab
+	from "abc" to "a" yields the same as the digest of "a" directly.
+
+	* Verify NCO MD5 implementation works for LPD's test cases
+
+	* Implement MD5 algorithm on all ncrcat record writes, and on ncks non-hyperslab writes
+
+	* Add MD5 test variables to in.nc
+
+	* Incorporate MD5 digest code by L. Peter Deutsch (LPD)
+	Code is under separate BSD-like license. Compiles though not used yet.
+
+	* Add nco_md5.[ch] for MD5 digests
+
+2012-02-14  Charlie Zender  <zender at uci.edu>
+
+	* Tested 4.0.9 on bluefire to find, of course, massive breakage
+
+	* Update AIX options to netCDF 4.1.3 on bluefire
+
 2012-02-13  Charlie Zender  <zender at uci.edu>
 
 	* NCO 4.0.9 release procedure:
@@ -739,7 +3372,7 @@
 	* Add protective #ifndef clauses to netCDF4 token definitions in nco_utl.hh
 	#ifndef <TOKEN>; #define <TOKEN> in Makefile.old
 
-	* Change conditions on compatibility token definitions from 
+	* Change conditions on compatibility token definitions from
 	#ifdef ENABLE_NETCDF4 to #ifndef <TOKEN>; #define <TOKEN> in Makefile.old
 	since that more precisely determines when token definitions are needed
 
@@ -839,9 +3472,9 @@
 	Formerly, ncap2 wrote these as scalars in certain situations
 	Thanks to Hugo for pointing this out and to Henry Butowsky for fixing it
 
-2010-06-21  Henry Butowsky  <henryb at hush.com> 
+2010-06-21  Henry Butowsky  <henryb at hush.com>
 
-	* Fixed bug with casting  a variable of size one. 
+	* Fixed bug with casting  a variable of size one.
 	This NOW works 'defdim("one",1);irmax[$one]=20L;'
 
 2010-05-24  Charlie Zender  <zender at uci.edu>
@@ -864,7 +3497,7 @@
 	get NCO running on Cygwin 1.7.5-1 under Vista. Everything was supplied by
 	Cygwin:	GSL, or compiled fine from source: netCDF4/HDF5 and Antlr
 	(actually antlr-2.7.7 needs #include <cstring> patch to CharScanner.hpp).
-	So NCO with DAP, UDUnits2, netCDF4, ncap2 built fine! Amazing. 
+	So NCO with DAP, UDUnits2, netCDF4, ncap2 built fine! Amazing.
 	Only problem is executing ncap2, which cannot find java.
 
 2010-05-02  Charlie Zender  <zender at uci.edu>
@@ -879,7 +3512,7 @@
 
 	* Merge Francesco Paolo Lovergine's downstream Debian changes
 
-2010-04-27  Henry Butowsky  <henryb at hush.com> 
+2010-04-27  Henry Butowsky  <henryb at hush.com>
 
 	* Added to manual chapter on GSL Random Number generation
 
@@ -904,7 +3537,7 @@
 	* Apply patches from Denis Nadeau to prevent namespace clashes
 	between NCO symbols generated by Flex/Bison, and those symbols
 	generated by other programs (MPI, netCDF) that also use
-	Flex/Bison. 
+	Flex/Bison.
 
 2010-04-06  Charlie Zender  <zender at uci.edu>
 
@@ -929,9 +3562,9 @@
 
 	* Cleanup and document '--mk_rec_dmn' switch
 
-2010-03-22  Henry Butowsky  <henryb at hush.com> 
+2010-03-22  Henry Butowsky  <henryb at hush.com>
 
-	* Add '--mk_rec_dmn' switch to ncks: 
+	* Add '--mk_rec_dmn' switch to ncks:
 	Allows user to (re-)define the record dimension. If the redefined
 	record dimension is not the first dimension of a given variable,
 	then ncks fails with an error message.
@@ -943,8 +3576,8 @@
 2010-03-13  Charlie Zender  <zender at uci.edu>
 
 	* Comment-out "\input texinfo" from my-bib-macros.texi to prevent
-	that string from appearing in printed output. 
-	
+	that string from appearing in printed output.
+
 2010-03-11  Charlie Zender  <zender at uci.edu>
 
 	* Fix ncrename.c to not die after skipping non-existent targets
@@ -1060,18 +3693,18 @@
 	* Added initialization to NULL of chunk sizes prs_arg.cnk_sz in
 	ncap2.cc. This was causing a bug on CentOS builds.
 
-2009-11-20  Henry Butowsky  <henryb at hush.com> 
+2009-11-20  Henry Butowsky  <henryb at hush.com>
 
 	* Added to manual chapter on bilinear_interp_wrap()
 
-2009-11-16  Henry Butowsky  <henryb at hush.com> 
+2009-11-16  Henry Butowsky  <henryb at hush.com>
 
 	* Tidy ups in main() ncpdq/ncecat/ncflint/ncra/ncbo
 
-2009-11-09  Henry Butowsky  <henryb at hush.com> 
+2009-11-09  Henry Butowsky  <henryb at hush.com>
 
 	* Modify 'dsort(var,&var_mp)'
-	if output file is netcdf4 then the created map is of type NC_UINT64 
+	if output file is netcdf4 then the created map is of type NC_UINT64
 	else it is of type NC_INT
 
 	* Refactor all gsl_stats code -hnd_fnc_stat? So that
@@ -1097,28 +3730,28 @@
 	* #define NCO_INT NCO_TYP_INT instead of NCO_TYP_LONG
 	Longs are 8-bytes on 64-bit systems, and NCO_INTs are always 4 bytes.
 	Stuffing the 4 bytes into 8 bytes of RAM is harmless locally, and
-	ensures the NCO code is robust in other ways. 
+	ensures the NCO code is robust in other ways.
 	However, it also seems to confuse/break DAP-handling of ints.
-	
+
 2009-10-29  Charlie Zender  <zender at uci.edu>
 
 	* Add short option -6, and better document -6, --64, --64bit options
 
-2009-10-21  Henry Butowsky  <henryb at hush.com> 
+2009-10-21  Henry Butowsky  <henryb at hush.com>
 
 	* Ensure ncap2 compiles	with NCO_INT==NCO_TYP_INT. Affects
 	fmc_all_cls.cc msk_cls srt_cls fmc_gsl_cls.cc, map_srt_tmp.hh,
-	ncoGrammar.g   
-	
-2009-10-15  Henry Butowsky  <henryb at hush.com> 
+	ncoGrammar.g
+
+2009-10-15  Henry Butowsky  <henryb at hush.com>
 
 	* Tidy-up sort methods srt_cls
 
-2009-10-13  Henry Butowsky  <henryb at hush.com> 
+2009-10-13  Henry Butowsky  <henryb at hush.com>
 
-	* Add secret flag tst_udunits option to ncks. 
+	* Add secret flag tst_udunits option to ncks.
 	Usage: --tst_udunits,'units_in','units_out','calendar type'
-        
+
 2009-09-30  Charlie Zender  <zender at uci.edu>
 
 	* Remove attempt to set chunking in ncap2 writes
@@ -1126,19 +3759,19 @@
 2009-09-26  Charlie Zender  <zender at uci.edu>
 
 	* Add CNK option to Makefile to set HAVE_NEW_CHUNKING_API to
-	handle netCDF 4.0.x vs. netCDF 4.1+ chunking API differences 
+	handle netCDF 4.0.x vs. netCDF 4.1+ chunking API differences
 
 	* Fix library flags for parallel HDF/netCDF4
 
-2009-09-24  Henry Butowsky  <henryb at hush.com> 
+2009-09-24  Henry Butowsky  <henryb at hush.com>
 
 	* Add manual sub-section on calendar CF support in UDUnits node
-	
+
 2009-09-21  Charlie Zender  <zender at uci.edu>
 
 	* Implement Intel mpicc/mpiCC compilers on greenplanet with lustre
 
-2009-09-11  Henry Butowsky  <henryb at hush.com> 
+2009-09-11  Henry Butowsky  <henryb at hush.com>
 
 	* Committed first cut of nco_cal.{c,h}
 
@@ -1147,13 +3780,13 @@
 	are "360_day","no_leap","365_day". Other values for date
 	evaluation default to "standard", the  	UDUnits1/2 calendar
 	functionality. NB: regardless of the chosen calendar type all date
-	strings are parsed by UDUnits1/2 
-	
+	strings are parsed by UDUnits1/2
+
 2009-08-28  Charlie Zender  <zender at uci.edu>
 
 	* Add spiral logo by Andrea Cimatoribus to bakeoff
 
-2009-08-26  Henry Butowsky  <henryb at hush.com> 
+2009-08-26  Henry Butowsky  <henryb at hush.com>
 
 	* Change nco_lmt_udu_cnv() UDUnits1 code branch
 	Parse bare date with utScan() instead of manually
@@ -1162,23 +3795,23 @@
 
 	* Add numeric cog logo by Rob Hetland to the bakeoff
 
-2009-08-21  Henry Butowsky  <henryb at hush.com> 
+2009-08-21  Henry Butowsky  <henryb at hush.com>
 
 	* Tidy-up of srt_cls---functions for sorting vars
 
-2009-08-21  Henry Butowsky  <henryb at hush.com> 
+2009-08-21  Henry Butowsky  <henryb at hush.com>
 
 	* Fix spline interpolation with	gsl-1.12
 
 	* Tidy-up gsl_spl_cls()
 
-2009-08-19  Henry Butowsky  <henryb at hush.com> 
+2009-08-19  Henry Butowsky  <henryb at hush.com>
 
 	* Add first cut of GSL least squares fitting to fmc_gsl_cls
 
-2009-08-17  Henry Butowsky  <henryb at hush.com> 
+2009-08-17  Henry Butowsky  <henryb at hush.com>
 
-	* Modify nco_lmt_typ() to recognize plain dates of form 
+	* Modify nco_lmt_typ() to recognize plain dates of form
 	"%d-%d-%d" as valid UDUnits strings
 
 2009-08-10  Charlie Zender  <zender at neige>
@@ -1192,8 +3825,8 @@
 	* Chunking passes all regression tests and makes sense at last
 
 	* Ensure that record, compressed, and checksummed variables are
-	chunked, stay chunked, and are not subject to unchunking attempts. 
-	Passes regression tests.  
+	chunked, stay chunked, and are not subject to unchunking attempts.
+	Passes regression tests.
 
 	* Only fill in shuffle, deflate, dfl_lvl when pointers are
 	non-NULL in netCDF3 nco_inq_var_deflate()
@@ -1212,7 +3845,7 @@
 
 	* Remove NULL-dereferencing, segfault-causing problem in nco_netcdf.c
 
-2009-07-21  Henry Butowsky  <henryb at hush.com> 
+2009-07-21  Henry Butowsky  <henryb at hush.com>
 
 	* Add first cut of bil_cls - functions for bilinear interpolation
 	of gridded 2D data
@@ -1252,7 +3885,7 @@
 
 	* Added Benjamin Sittler and John Burkhardt to copyright file
 
-	* Received copyright assignment and removed Henry Butowsky 
+	* Received copyright assignment and removed Henry Butowsky
 	from copyright headers in nco_msa.c, nco_msa.h
 
 	* Received copyright assignment and removed Karen Schuchardt
@@ -1268,7 +3901,7 @@
 
 	* Fix HAVE_NETCDF4_H test when enable_netcdf4=yes
 
-	* Change Debian tgz file suffix from erroneous '-1.tar.gz' to '.orig.tar.gz' 
+	* Change Debian tgz file suffix from erroneous '-1.tar.gz' to '.orig.tar.gz'
 
 	* Upgrade debhelper compatibility by changing debian/compat from 4 to 5
 
@@ -1277,9 +3910,9 @@
 2009-07-12  Charlie Zender  <zender at uci.edu>
 
 	* 20090712: For unknown reason autobuild sees netCDF4 netcdf.h
-	header when it should not. Moreover, autobuild thinks 
-	"const nco_string *sng" conflicts with "const char **sng" 
-	in all nc_put_var?_string() and nc_put_att_string() functions. 
+	header when it should not. Moreover, autobuild thinks
+	"const nco_string *sng" conflicts with "const char **sng"
+	in all nc_put_var?_string() and nc_put_att_string() functions.
 	Even though nco_string = char * = should be synonymous
 	Implement kludge workaround to latter until former is solved
 
@@ -1299,13 +3932,13 @@
 
 	* Add Rich Signell's "cog" logos to homepage and doc directory
 
-2009-06-26  Henry Butowsky  <henryb at hush.com> 
+2009-06-26  Henry Butowsky  <henryb at hush.com>
 
 	* New GSL class gsl_spl_cls provides GSL spline interpolation wrappers
 
 	* LHS hyperslabs of multidimensional variables with a single index
-	three_dmn_var_dbl(1,1,2)=10.0 is equivalent to three_dmn_var_dbl(14)=10.0 
-           
+	three_dmn_var_dbl(1,1,2)=10.0 is equivalent to three_dmn_var_dbl(14)=10.0
+
 2009-06-15  Charlie Zender  <zender at uci.edu>
 
 	* Restrict gsl_stats_correlation() to NCO_GSL_MINOR_VERSION >= 10
@@ -1331,14 +3964,14 @@
 
 	* Restore precedence of explicitly specified chunking for record
 	dimension over that implicitly specified by chunking map rd1
-	
+
 	* Discriminate between BASIC_DMN and non BASIC_DMN
 
 	* Fix chunking to look at dmn_sz_org for record variables
 
-2009-06-05  Henry Butowsky  <henryb at hush.com> 
+2009-06-05  Henry Butowsky  <henryb at hush.com>
 
-	* nco_lmt_udu_cnv() supports UDUnits2 for parsing 
+	* nco_lmt_udu_cnv() supports UDUnits2 for parsing
 	timestamps in user specified co-ordinate limits
 
 	* Added hnd_fnc_stat4() method to gsl_cls to handle
@@ -1359,7 +3992,7 @@
 
 	* Remove old chunksize API from non-ncks operators
 
-2009-05-29  Henry Butowsky  <henryb at hush.com> 
+2009-05-29  Henry Butowsky  <henryb at hush.com>
 
 	* Tidy up nco_lmt_udu_cnv() into three functions
 	1) for no udunits
@@ -1402,7 +4035,7 @@
 
 	* Add nco_cnk.[ch] for chunking functions
 
-2009-05-19  Henry Butowsky  <henryb at hush.com> 
+2009-05-19  Henry Butowsky  <henryb at hush.com>
 
 	* Committed first cut of GSL statistical functions
 
@@ -1428,7 +4061,7 @@
 
 	* Configure allows --enable-shared with netCDF4-enabled NCO
 
-2009-05-05  Henry Butowsky  <henryb at hush.com> 
+2009-05-05  Henry Butowsky  <henryb at hush.com>
 
 	* Tidy up user error messages in fmc_all_cls.cc
 
@@ -1436,7 +4069,7 @@
 
 	* Create/diagnose more complete netcdf4.nc files from netcdf4.nco
 
-	* Verify that netCDF4 problems in netcdf4.nco as of 20080512 have 
+	* Verify that netCDF4 problems in netcdf4.nco as of 20080512 have
 	been fixed (by updating to snapshot netCDF4) as of 20090504.
 	One remaining problem is that NCO silently succeeds on overflows.
 	Should it?
@@ -1454,7 +4087,7 @@
 	* Link to libnsl.a only for Solaris and HPUX
 
 	* Tweak NCO wrappers to isolate all weak prototype compiler
-	warnings (caused by netCDF4 prototypes) in nco_netcdf.[ch] 
+	warnings (caused by netCDF4 prototypes) in nco_netcdf.[ch]
 
 2009-05-02  Charlie Zender  <zender at uci.edu>
 
@@ -1483,11 +4116,11 @@
 	rcd=nco_cnk_sz_set(cnk_sz_lst,cnk_nbr)
 	nco_cnk_sz_get(dmn_lst,chk_sz)
 
-	* Add NCO-wide chunking infrastructure 
+	* Add NCO-wide chunking infrastructure
 
-2009-05-01 Henry Butowsky  <henryb at hush.com> 
+2009-05-01 Henry Butowsky  <henryb at hush.com>
 
-	* Rewrite RHS hyperslabbing routine var_lmt() in grammer file
+	* Rewrite RHS hyperslabbing routine var_lmt() in grammar file
 
 	* More hyperslabbing tests in ncap2_tst.nco
 
@@ -1508,21 +4141,21 @@
 
 	* Change debian files per Barry deFreese's instructions
 
-2009-04-29  Henry Butowsky  <henryb at hush.com> 
+2009-04-29  Henry Butowsky  <henryb at hush.com>
 
 	* Add array function usage: var_out=array(srt,ncr,$dim);
-	
-	* Add more GSL handler functions for _ran and _pdf 
 
-2009-04-23  Henry Butowsky  <henryb at hush.com> 
+	* Add more GSL handler functions for _ran and _pdf
+
+2009-04-23  Henry Butowsky  <henryb at hush.com>
 
 	* Add total() regression test for missing_values to ncap2_tst.nco
 
-2009-04-22  Henry Butowsky  <henryb at hush.com> 
+2009-04-22  Henry Butowsky  <henryb at hush.com>
 
 	* Added unary functions abs(), sqr(), fabs():
 	abs()=absolute value for any type; fabs()=absolute value for
-	float/double types; sqr()=square of number for any data type 
+	float/double types; sqr()=square of number for any data type
 
 2009-04-21  Charlie Zender  <zender at uci.edu>
 
@@ -1533,11 +4166,11 @@
 
 	* ncks --secret lists hidden/unsupported functions
 
-	* UDUnits2 supported by configure --enable_udunits2 
+	* UDUnits2 supported by configure --enable_udunits2
 
 2009-04-18  Charlie Zender  <zender at uci.edu>
 
-	* NCO_GSL_MINOR_VERSION >= 8 for select GSL *_cdf_* and *_ran_* functions 
+	* NCO_GSL_MINOR_VERSION >= 8 for select GSL *_cdf_* and *_ran_* functions
 
 	* Add abs() as synonym for fabs() in ncap2
 
@@ -1559,7 +4192,7 @@
 
 	* Place new NCO logo candidate, logo_pch, by Tony Freeman, on homepage
 
-2009-03-25  Henry Butowsky  <henryb at hush.com> 
+2009-03-25  Henry Butowsky  <henryb at hush.com>
 
 	* Change assign action to redefine non-scalar variable with RHS scalar:
 	  e.g., n1=three_dmn_var_dbl;n1=20;
@@ -1612,7 +4245,7 @@
 
 	* Add srt_cls to fmc_all_cls.cc
 	Only one method at the moment var_expr.sort()
-	
+
 2009-02-26  Charlie Zender  <zender at uci.edu>
 
 	* GSL build tweaks for NCO_GSL_MINOR_VERSION
@@ -1643,7 +4276,7 @@
 
 2009-02-13  Henry Butowsky  <henryb at hush.com>
 
-	* Global ncap_gsl_mode_prec initialized from environment var. GSL_PREC_MODE
+	* Global ncap_gsl_mode_prec initialized from environment $GSL_PREC_MODE
 	This sets the precision of the Airy & elliptical functions:
 	GSL_PREC_DOUBLE=0
 	GSL_PREC_SINGLE=1
@@ -1653,7 +4286,7 @@
 
 	* Made gsl_cls aware of GSL library version
 	Add pre-processor token NCO_GSL_MINOR_VERSION
-	Token is initialized in nco++/Makefile.old 
+	Token is initialized in nco++/Makefile.old
 
 2009-02-09  Charlie Zender  <zender at uci.edu>
 
@@ -1667,11 +4300,11 @@
 
 	* Add variable wildcarding in ncatted example
 
-	* Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 
+	* Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944
 	in nco_var_lst_crd_add(). Fixes crash on 'ncks -c ~/nco/data/in.nc'
-	separately listed as TODO nco963. 
-	
-	* ncks --no_dmn_var_nm implements naked printing requested in TODO nco962 
+	separately listed as TODO nco963.
+
+	* ncks --no_dmn_var_nm implements naked printing requested in TODO nco962
 
 2009-01-28  Charlie Zender  <zender at uci.edu>
 
@@ -1711,8 +4344,8 @@
 
 2009-01-20 Henry Butowsky  <henryb at ntlworld.com>
 
-	* Removed gmm_inc_cls() and associated code from ncap2_utl.cc. 
-	Superseded by GSL library gamma functions.
+	* Removed gmm_inc_cls() and associated code from ncap2_utl.cc.
+	Superceded by GSL library gamma functions.
 
 2009-01-16  Charlie Zender  <zender at uci.edu>
 
@@ -1730,7 +4363,7 @@
 2008-12-10  Charlie Zender  <zender at uci.edu>
 
 	* Check for external (rather than internal) netCDF4 function
-	nc4_enddef_netcdf4_file() in libnetcdf.a 
+	nc4_enddef_netcdf4_file() in libnetcdf.a
 
 2008-12-03  Charlie Zender  <zender at uci.edu>
 
@@ -1738,7 +4371,7 @@
 
 	* Add ENABLE_GSL functionality to configure and to most source code
 	Still needs correct propagation into fmc_cls.cc, maybe ncoGrammar.g
-	
+
 2008-11-04  Charlie Zender  <zender at uci.edu>
 
 	* Document new ncatted rx capabilities for var_nm
@@ -1769,7 +4402,7 @@
 
 2008-10-05  Henry Butowsky  <henryb at ntlworld.com>
 
-	* Added to manual chapter on ID Quoting, include files & general tidy up 
+	* Added to manual chapter on ID Quoting, include files & general tidy up
 
 2008-10-02  Henry Butowsky  <henryb at ntlworld.com>
 
@@ -1785,24 +4418,24 @@
 
 	* Prototype ncap2 supports for incomplete gamma functions:
 	gamma_inc_regular(a,x), gamma_inc_complement(a,x),
-	gamma_inc_upper(a,x), gamma_inc_lower(a,x), 
+	gamma_inc_upper(a,x), gamma_inc_lower(a,x),
 
 2008-09-25  Charlie Zender  <zender at uci.edu>
 
 	* Added nco_gmm.[ch] for incomplete gamma function. Source from
 	http://people.scs.fsu.edu/~burkardt/cpp_src/asa032/asa032.html
-	
+
 2008-09-24  Charlie Zender  <zender at uci.edu>
 
 	* Added Invoke.hh
 
 2008-09-24  Henry Butowsky  <henryb at ntlworld.com>
 
-	* ncap2 supports #include files, syntax is #include "pi.nco" 
+	* ncap2 supports #include files, syntax is #include "pi.nco"
 
 2008-09-22  Henry Butowsky  <henryb at ntlworld.com>
 
-	* Added get_miss() method to utility class returns the missing value 
+	* Added get_miss() method to utility class returns the missing value
 	of a variable in Input/Oytput
 
 2008-09-18  Charlie Zender  <zender at uci.edu>
@@ -1817,18 +4450,18 @@
 
 2008-09-15  Henry Butowsky  <henryb at ntlworld.com>
 
-	* New rules for variable/attribute/dimension quoting 
+	* New rules for variable/attribute/dimension quoting
 
 	* Can now do 'var_nm'@att_nm  or 'var_nm'@'att_nm' or var_nm@'att_nm'
 
         * Dimension quoting now $'dim_nm'
 
 	* Quoting supports the following characters:
-          'a..z'|'A..Z'|0..9|'_'|'-'|'+'|'.'|'('|')'|':'|'@' 
+          'a..z'|'A..Z'|0..9|'_'|'-'|'+'|'.'|'('|')'|':'|'@'
 
 2008-09-12  Henry Butowsky  <henryb at ntlworld.com>
 
-	* Added convert(nctype) method 
+	* Added convert(nctype) method
 
 2008-09-02  Charlie Zender  <zender at uci.edu>
 
@@ -1847,7 +4480,7 @@
 2008-08-14  Henry Butowsky  <henryb at ntlworld.com>
 
 	* Deleted from parser nonsense NCL-style operators "<<=" ">>="
-	
+
 2008-08-05  Charlie Zender  <zender at uci.edu>
 
 	* More nco_aed_prc() cleanup
@@ -1858,15 +4491,15 @@
 
 2008-07-28  Henry Butowsky  <henryb at ntlworld.com>
 
-	* Permanent fix for TODO nco944: 
+	* Permanent fix for TODO nco944:
 	New parsing function nco_lst_prs_sgl_2D()
-        Returns only non-zero length strings unlike nco_lst_prs_2D() 
+        Returns only non-zero length strings unlike nco_lst_prs_2D()
 
 2008-07-25  Charlie Zender  <zender at uci.edu>
 
 	* Applied 20080718 patch to nco_cnv_csm.c and deferred permanent
 	fix to TODO nco944: handle redundant whitespace "coordinates"
-	attributes before calling nco_lst_prs_2D() 
+	attributes before calling nco_lst_prs_2D()
 
 2008-07-23  Charlie Zender  <zender at uci.edu>
 
@@ -1874,7 +4507,7 @@
 
 2008-07-22  Charlie Zender  <zender at uci.edu>
 
-	* "ill-defined" warning in nco_var_lst_dvd() uses correct var_typ_fnk 
+	* "ill-defined" warning in nco_var_lst_dvd() uses correct var_typ_fnk
 
 2008-07-18  Charlie Zender  <zender at uci.edu>
 
@@ -1884,8 +4517,8 @@
 2008-07-07  Charlie Zender  <zender at uci.edu>
 
 	* Verify bug TODO nco941 where ncra tries to average nc_char variables
-	Reported by Alberto Corbi Bello 
-	
+	Reported by Alberto Corbi Bello
+
 2008-06-17  Charlie Zender  <zender at uci.edu>
 
 	* Limit OpenMP thr_nbr_rqs=1 for netCDF4-enabled operators. TODO nco939.
@@ -1916,7 +4549,7 @@
 	  cd ~/nco;cvs commit -m "Preparing nco-3.9.5 release"
 	  cvs tag -c nco-3_9_5;cvs tag -c nco-3_9_5-1
 	  Changes since nco-3_9_4: MSA everywhere
-	
+
 	* Correct -X documentation
 
 	* Clean-up nco_aux.c
@@ -1938,7 +4571,7 @@
 2008-04-23  Charlie Zender  <zender at uci.edu>
 
 	* Replace H5LT_open_id with H5LT_find_attribute in configure.in
-	Fixes cygwin build problem with netCDF4. Thanks to Mark Hadfield. 
+	Fixes cygwin build problem with netCDF4. Thanks to Mark Hadfield.
 
 2008-04-21  Charlie Zender  <zender at uci.edu>
 
@@ -1956,7 +4589,7 @@
 
 2008-04-02  Charlie Zender  <zender at uci.edu>
 
-	* Prevent copying global metadata with ncecat -M 
+	* Prevent copying global metadata with ncecat -M
 
 	* Print netCDF4-dependent switches only if netCDF4 is enabled
 
@@ -2070,7 +4703,7 @@
 
 	* xlC needs to search /usr/vacpp/include to find atan2()
 
-	* Autoconf builds with AIX fail because unable to find atan2() 
+	* Autoconf builds with AIX fail because unable to find atan2()
 
 	* Use nco_inq_attlen() to avoid pointer warning in nco_aux.c
 
@@ -2092,8 +4725,8 @@
 
 2007-12-22  Henry Butowsky  <henryb at ntlworld.com>
 
-	* Work-arounds for NCO_NETCDF4_AND_FILL_VALUE changes to 
-	  ncap_var_write_omp(). Added NCAP4_FILL property to prs_cls. 
+	* Work-arounds for NCO_NETCDF4_AND_FILL_VALUE changes to
+	  ncap_var_write_omp(). Added NCAP4_FILL property to prs_cls.
 
 2007-12-20  Charlie Zender  <zender at uci.edu>
 
@@ -2140,7 +4773,7 @@
 	* ncap2 calls nco_thr_att_cat() to archive nco_openmp_thread_number
 
 2007-12-11  Henry Butowsky  <henryb at ntlworld.com>
-	
+
 	* Added print attributes function e.g., print(global at history)
 
 2007-12-10  Charlie Zender  <zender at uci.edu>
@@ -2162,14 +4795,14 @@
 	  cd ~/nco;cvs commit -m "Preparing nco-3.9.3 release"
 	  cvs tag -c nco-3_9_3;cvs tag -c nco-3_9_3-1
 	  Changes since nco-3_9_2: SWAMP, ncecat -u, wget, ncap2 OpenMP, GCC 4.2
-	
+
 	* Update documentation for SWAMP, AGU, and IJHPCA
 
 2007-11-29  Henry Butowsky  <henryb at ntlworld.com>
 
 	* First cut of OpenMP for ncap2
 
-	* ncap2 processes ncap2.in in parallel on LINUX & AIX platforms 
+	* ncap2 processes ncap2.in in parallel on LINUX & AIX platforms
 
 2007-11-27  Henry Butowsky  <henryb at ntlworld.com>
 
@@ -2264,9 +4897,9 @@
 	* cd ~/nco;cvs tag -d nco-3_9_2;cvs tag -d nco-3_9_2-1
 	  cd ~/nco;cvs commit -m "Preparing nco-3.9.2 release"
 	  cvs tag -c nco-3_9_2;cvs tag -c nco-3_9_2-1
-	  Changes since nco-3_9_1: GPL3, UDUnits2, _FillValue, 
+	  Changes since nco-3_9_1: GPL3, UDUnits2, _FillValue,
 	  ncap2 printing
-	
+
 	* Support nco_put/get_att_string/ubyte() now in netCDF4
 
 	* Update to netCDF4 daily snapshot 20070822
@@ -2274,7 +4907,7 @@
 	* Abandon TKN2SNG(x) method for nco_mss_val_sng
 	  Use direct global variable to get rid of superfluous double quotes
 	  This fixes all regressions with _FillValue<->missing_value switch
-	
+
 2007-08-29  Charlie Zender  <zender at uci.edu>
 
 	* Regressions with _FillValue<->missing_value switch
@@ -2331,7 +4964,7 @@
 2007-07-18  Henry Butowsky  <henryb at ntlworld.com>
 
 	* Turned prs_sct into class. It has four methods:
-	contructor, ncap_var_init(), ncap_var_write(), ncap_def_ntl_scn() 
+	contructor, ncap_var_init(), ncap_var_write(), ncap_def_ntl_scn()
 
 2007-07-14  Charlie Zender  <zender at uci.edu>
 
@@ -2356,15 +4989,15 @@
 2007-06-29  Charlie Zender  <zender at uci.edu>
 
 	* cvs tag -c nco-3_9_1-2
-	
+
 	* Define NC_64BIT_OFFSET no-matter-what so FC6 RPMs build with OPeNDAP
 
 	* cd ~/nco;cvs tag -d nco-3_9_1;cvs tag -d nco-3_9_1-1
-	  cd ~/nco;cvs commit -m "Preparing nco-3.9.1 release"
-	  cvs tag -c nco-3_9_1;cvs tag -c nco-3_9_1-1
+	cd ~/nco;cvs commit -m "Preparing nco-3.9.1 release"
+	cvs tag -c nco-3_9_1;cvs tag -c nco-3_9_1-1
 	Changes since nco-3_9_0: netCDF4 deflation support, ncap2 loops,
 	build improvements on many platforms
-	
+
 	* Finish deflation in ncap and ncap2
 
 2007-06-28  Charlie Zender  <zender at uci.edu>
@@ -2396,18 +5029,18 @@
 
 	* nco.spec patch by Daniel to always put netcdf-3 on path and, for
 	x86_64, add -L/usr/lib64, when present, to correctly resolve
-	32/64-bit libraries  
+	32/64-bit libraries
 
 	* Define some netCDF tokens for really old versions of libnetcdf.a
 	still in use on enterprise distributions like RHEL/CentOS.
-	These tokens need are defined both in nco.h and nco_netcdf.c to 
+	These tokens need are defined both in nco.h and nco_netcdf.c to
 	enforce code firewall to keep netCDF wrappers separate from NCO.
 
 2007-06-18  Charlie Zender  <zender at uci.edu>
 
 	* Remove configure.in rule to add -DNC_64BIT_OFFSET even when DAP version > 3.6.1
 
-	* Add SWAMP test template ~/nco/data/swamp.sh 
+	* Add SWAMP test template ~/nco/data/swamp.sh
 
 	* Place DAP netcdf.h path ahead of system netcdf.h path in configure.in
 
@@ -2421,13 +5054,13 @@
 
 	* Commited the first cut of while loops and for loops
 	Can use "break" & "continue" in both. Can have any level of nesting.
-	These are vanilla unoptimized loops. Optimization to come!!	 
+	These are vanilla unoptimized loops. Optimization to come!!
 
 2007-06-07  Charlie Zender  <zender at uci.edu>
 
 	* Add [put/get]_string functions now in netcdf4 daily snapshots
         In particular, synchronize with snapshot2007060701
-	
+
 2007-06-05  Charlie Zender  <zender at uci.edu>
 
 	* Remove stdint.h from xlC and SGI builds of ncap2
@@ -2444,7 +5077,7 @@
 
 	* Implement --dfl_lvl to set HDF Lempel-Ziv deflation level
 	Always turn shuffle on, since it is inexpensive and improves compression
-	
+
 	* Allow user-specified down-conversion of netCDF4->netCDF3
 
 	* Include stdint.h where "long long" types are used
@@ -2460,11 +5093,11 @@
 
 	* NC_64BIT_OFFSET patch in configure.in causes beaucoups de RPM warnings
 
-	* Fix version in nco.spec 
+	* Fix version in nco.spec
 
 	* cd ~/nco;cvs tag -d nco-3_9_0;cvs tag -d nco-3_9_0-1
-	  cd ~/nco;cvs commit -m "Preparing nco-3.9.0 release"
-	  cvs tag -c nco-3_9_0;cvs tag -c nco-3_9_0-1
+	cd ~/nco;cvs commit -m "Preparing nco-3.9.0 release"
+	cvs tag -c nco-3_9_0;cvs tag -c nco-3_9_0-1
 	Changes since nco-3_2_0: netCDF4 atomic type support, ncks attributes
 
 	* Fix nco_prn_att() to handle netCDF4 atomic types
@@ -2483,7 +5116,7 @@
 
 	* Change put_var(var_prc_out[idx]->type) to var_prc_out[idx]->typ_upk
 	in arithmetic operators to output inflated variables to disk.
-	This should fix TODO nco862, a regression introduced sometime 
+	This should fix TODO nco862, a regression introduced sometime
 	between 2.7.1 and 3.2.0 and noticed by Remik Ziemlinski.
 
 	* Postpone 3.9.0 release until ncdiff/packing bug TODO nco862 is fixed
@@ -2494,7 +5127,7 @@
 
 2007-05-22  Charlie Zender  <zender at uci.edu>
 
-	* Added netCDF4 support section: http://nco.sf.net/nco.html#nco4 
+	* Added netCDF4 support section: http://nco.sf.net/nco.html#nco4
 
 	* Decided to release as 3.9.0 rather than 3.2.1
 
@@ -2503,7 +5136,7 @@
 	NCO builds and tests fine from both netCDF3 and netCDF4!
 	Candidate is releasable. ncap2 NC_UBYTE problem is not solved.
 
-	* Testing with ~/c++/ccc.cc shows that NC_UBYTE support is non-trivial 
+	* Testing with ~/c++/ccc.cc shows that NC_UBYTE support is non-trivial
 	No need to hold up release to finish this
 
 	* antlr 2.7.6 fails on mpc64.nacs.uci.edu with pgCC
@@ -2512,7 +5145,7 @@
 	* NCO builds and tests fine from both netCDF3 and netCDF4!
 
 	* Verified sng2nbr() handles cross-platform strtoll(), strtoull()
-	issues with AIX xlC and PGI pgCC compilers. 
+	issues with AIX xlC and PGI pgCC compilers.
 
 	* Typecast CEWI variables in nco.h for safety
 
@@ -2523,7 +5156,7 @@
 	* AIX xlC has ncap2 build problem: "std::strtoll" is not declared.
 
 	* Cast all naked nc_type tokens being thrown around in ncap2 code
-	In addition to being bad programming style, these naked tokens 
+	In addition to being bad programming style, these naked tokens
 	trigger the netCDF3/netCDF4 nc_type incompatibility bug.
 	The bug is that the nc_type NC_TYPE tokens are enumerated (enums)
 	in netCDF3 and are simple pre-processor tokens in netCDF4.
@@ -2534,7 +5167,7 @@
 	Candidate is releasable except for ncap2 NC_UBYTE problem
 
 	* Add empty netCDF3 forward compatibility stubs for all netCDF4
-	new atomic type I/O functions 
+	new atomic type I/O functions
 
 	* cvs tag -c nco-3_2_1_alpha4
 	Changes since last tag:
@@ -2553,11 +5186,11 @@
 2007-05-19  Charlie Zender  <zender at uci.edu>
 
 	* Verified that ddra.nco works with int64 types so storing large
-	counts as floats no longer necessary! 
+	counts as floats no longer necessary!
 
 	* cvs tag -c nco-3_2_1_alpha3
 	Changes since last tag:
-	After netCDF4'ing most files. 
+	After netCDF4'ing most files.
 	netCDF4 references in ncoGrammer.g break netCDF3 ncap2
 
 	* Success at creating all netCDF4 atomic types with ncap2 except NC_UBYTE
@@ -2633,7 +5266,7 @@
 
 	* Implement NC_STRING support stubs in nco_typ.h
 
-	* Support NC_INT64 in nco_c++ 
+	* Support NC_INT64 in nco_c++
 
 	* Complete netCDF4 type support (except NC_STRING) in nco_prn.c, nco_msa.c
 	ncks now prints netCDF4 atomic types correctly
@@ -2653,7 +5286,7 @@
 	* ncks does not copy scale_factor and add_offset to output files!
 
 	* ncks reports input file type, e.g., NC_FORMAT_CLASSIC,
-	NC_FORMAT_NETCDF4 
+	NC_FORMAT_NETCDF4
 
 2007-05-11  Charlie Zender  <zender at uci.edu>
 
@@ -2667,7 +5300,7 @@
 	be non-trivial to re-introduce. Mark such variables as CEWI
 	RUVICFFU = Retain Unused Variables In Comments For Future Use
 
-	* Re-format error messages to print error code if available, 
+	* Re-format error messages to print error code if available,
 	and to always print msg, if any
 
 	* Changed prototype and disambiguated ncap_sclr_var_mk()
@@ -2730,7 +5363,7 @@
 2007-03-31  Charlie Zender  <zender at uci.edu>
 
 	* Change -s "" to -s '' in most all examples to prevent	unintended
-	ncap2 behavior 
+	ncap2 behavior
 
 2007-03-30  Charlie Zender  <zender at uci.edu>
 
@@ -2746,10 +5379,10 @@
 	* Fix ncap2 comparison between signed/unsigned integer expression warnings
 
 	* Fold in Daniel's nco.spec change required for 64-bit builds on
-	hybrid 32/64-bit systems, e.g., RHEL, CentOS 
+	hybrid 32/64-bit systems, e.g., RHEL, CentOS
 
 2007-03-29  Henry Butowsky  <henryb at hush.com>
-	 
+
 	* first cut of RAM variables new syntax works
 	with assign operators (=,-=,+=,/=, *=) and post increment &
 	post decrement operators
@@ -2887,18 +5520,18 @@
 2006-12-02  Charlie Zender  <zender at uci.edu>
 
 	* Noticed that configure;make;make test breaks because ncap2 is
-	not available in ../src/nco like all other executables	
+	not available in ../src/nco like all other executables
 
 	* Link nco_c++/in.nc to ../../data/in.nc
 
-	* Fix all rule in data so *.nc are always built 
+	* Fix all rule in data so *.nc are always built
 
 2006-11-29  Charlie Zender  <zender at uci.edu>
 
 	* NB: psd.nco uncovered a bizarre scanner error with ncap2 comment fields
 
 	* Add equal-V/S approximation for Tallandier depth hoar to psd.nco
-	
+
 	* Print _FillValue WARNING only when dbg_lvl > 0
 
 2006-11-27  Charlie Zender  <zender at uci.edu>
@@ -2957,20 +5590,20 @@
 
 	* Removed debian/docs, alphabetize control, less precise debhelper
 	version, refine copyright history, remove debian/doc, de-comment
-	debian/rules, 
+	debian/rules
 
 	* Remove debian/[postinst,prerm, postrm]. These only contained
 	instructions for handling *.info files. Rely on dh_installinit to
-	automagically create these instructions.   
+	automagically create these instructions.
 
 2006-11-20  Charlie Zender  <zender at uci.edu>
 
-	* Alter documentation rules to not-split 
+	* Alter documentation rules to not-split
 
 	* Include ncap2 in debian distribution
 
 	* Remove compiler-preference list arguments to AC_PROG_CC and
-	AC_PROG_CXX in configure.in. Presence was breaking builds on 
+	AC_PROG_CXX in configure.in. Presence was breaking builds on
 	virga where broken icpc compiler was automatically selected.
 	Henceforth non-default compilers must be specified as environment
 	variables as in configure.eg
@@ -3010,7 +5643,7 @@
 	* Removed UDUnits support from Debian build
 
 	* Update debian/convert, copyright, prerm, rules, nco.doc-base,
-	postinst, 
+	postinst
 
 	* Added udunits.dat for eventual Debian compatibility (a mistake?)
 
@@ -3037,7 +5670,7 @@
 2006-10-16  Charlie Zender  <zender at uci.edu>
 
 	* Test for find_nc4_file() not nc_check_for_hdf5() in configure.in
-	as per patch from Simon Wood 	
+	as per patch from Simon Wood
 
 2006-09-18  Charlie Zender  <zender at uci.edu>
 
@@ -3164,7 +5797,7 @@
 
 	* New code checked out OK with valgrind
 
-	* Need to add code to check that first operand is valid Lvalue 
+	* Need to add code to check that first operand is valid Lvalue
 	  -also need some new regression tests to fully test this new feature
 
 2006-07-12  Charlie Zender  <zender at uci.edu>
@@ -3868,7 +6501,7 @@
 	* Added cheesy random number generator function rnd_nbr() to ncap
 	ncap -O -v -s 'x=rnd_nbr(lat)' ~/nco/data/in.nc ~/foo.nc;ncks ~/foo.nc
 	for generating fake data. Search source for TODO nco652 and improve!
-	
+
 2005-11-14  Harry Mangalam  <hjm at tacgi.com>
 
 	* retired following TODOs
@@ -3892,7 +6525,7 @@
 
 	* Added UDP reporting query to regression and benchmark runs
 	if users explicitly agree, to capture failures in regressiions
-	automatically for better profiling.  Queries users if they will 
+	automatically for better profiling.  Queries users if they will
 	allow data to be returned UNLESS the --udpreport is already set
 
 	* Changes to Makefile.am in src/nco to enable MPI binaries to
@@ -5094,7 +7727,7 @@
 	Does not help reduce unfree()'d system memory according to
 	valgrind 3.0 development branch. Does not hurt, either.
 	How portable is ctime_r()? SUS, yes, but POSIX?
-	
+
 2005-05-23  Charlie Zender  <zender at uci.edu>
 
 	* Touch parameter rusage_who for CEWI in nco_mmr_rusage_prn()
@@ -5432,7 +8065,7 @@
 	Fixes Mac OS X build for struct rusage
 
 	* Change default printing behavior of ncks again using suggestion
-	of Takeshi Enomoto. 
+	of Takeshi Enomoto.
 	ncks in.nc : Prints all data and metadata
 	ncks -M in.nc : Prints only global metadata
 	ncks -m in.nc : Prints only variable metadata
@@ -5515,7 +8148,7 @@
         sml_stl.cdl       template for a small sat data file
         stl_5km.cdl       template for ~300MB sat data file
         stl_5km.sh        script to generate and ncap the above file
-    
+
 2005-03-24  Charlie Zender  <zender at uci.edu>
 
 	* cvs tag -c nco-3_0_0
@@ -5540,21 +8173,21 @@
 
 	* Set NC_NOFILL in ncap_var_write()
 
-	* The call to nco_aed_prc() (a metadata writing call) was 
+	* The call to nco_aed_prc() (a metadata writing call) was
 	un-necessarily late in ncap.c. I moved it to just after
 	nco_var_dfn(). This takes advantage of the netCDF feature that
 	metadata (not data) can be manipulated before it is flushed to
-	disk (with nc_enddef()). You can learn/use a variable's ID 
-	before populating the variable's data section. 
+	disk (with nc_enddef()). You can learn/use a variable's ID
+	before populating the variable's data section.
 	Now ncap ends after writing in data mode and avoids the heavy disk
 	penalty of moving variables to accomodate  the increased metadata from
-	the nco_aed_prc() call. 
+	the nco_aed_prc() call.
 
-	* Turns out the only NC_NOFILL in ncap.c was done in data mode 
-	after the variables were defined. 
+	* Turns out the only NC_NOFILL in ncap.c was done in data mode
+	after the variables were defined.
 	Not sure why this did not cause an error.
 	ncap was probably doing redundant data filling for the non-processed
-	variables defined. 
+	variables defined.
 	Fixed that.
 
 2005-03-20  Charlie Zender  <zender at uci.edu>
@@ -6130,7 +8763,7 @@
 	* Added nco_fl_lst_att_cat() to add input file list global attribute
 
 	* nco_fl_ls_mk() reads input file list from stdin when appropriate
-	for multi-file operators. 
+	for multi-file operators.
 	For some reason it no longer pauses for manual stdin, however.
 
 2004-06-16  Charlie Zender  <zender at uci.edu>
@@ -6854,7 +9487,7 @@
 
 2003-03-25  Charlie Zender  <zender at uci.edu>
 
-	* Made --op_rlt, --cmp, --op_cmp, --compare synonymous with -o for ncwa 
+	* Made --op_rlt, --cmp, --op_cmp, --compare synonymous with -o for ncwa
 
 	* Re-arrange output from --usage, --help options
 
@@ -6902,7 +9535,7 @@
 	NB: Files in debian/ are for 2.2.0 (i.e., way out of date)
 	We are trying to Debian-ize upstream source for NCO ~2.8.0
 	Expect some hiccups when that finally happens
-	
+
 	* Insert LINUXARM in Linux portion of bld/Makefile
 
 	* Synchronize Debian nco/doc/man with CVS nco/man
@@ -6910,7 +9543,7 @@
 	* Add Debian files by Brian Mays to CVS repository:
  	debian: changelog control convert copyright postinst prerm rules
 	bld: linux1 linux2 (appear obsolete and may soon be removed)
-	
+
 2003-02-25  Charlie Zender  <zender at uci.edu>
 
 	* Builds cleanly on LINUX, IRIX, AIX
@@ -6927,7 +9560,7 @@
 2003-01-29  Charlie Zender  <zender at uci.edu>
 
         * Documented procedure for computing covariance of two variables
-	using http://jisao.washington.edu/data/nco/ as template 
+	using http://jisao.washington.edu/data/nco/ as template
 
 2003-01-20  Charlie Zender  <zender at uci.edu>
 
@@ -7003,7 +9636,7 @@
 
 	 * First version of multi-hyperslabbing along a single dimension
 	 for ncks
-	
+
 2002-12-14  Charlie Zender  <zender at uci.edu>
 
 	* Took advantage of NEED_FNC to remove MACOSX kludge in nco_rth_flt.h
@@ -7050,7 +9683,7 @@
 	2. Makefile fixes for Cray
 	3. nco_tst.sh tweaks
 	Applied the Makefile flags to configure.in as well
-	
+
 2002-09-17  Charlie Zender  <zender at uci.edu>
 
 	* cvs tag -c nco-2_6_4
@@ -7071,7 +9704,7 @@
 	Comeau should now work but have not tested it
 
 	* cvs tag -c nco-2_6_3
-	Changes since nco-2_6_2: 
+	Changes since nco-2_6_2:
 	Numerous build improvments and removal of PVM_ARCH ifdefs
 	MACOSX builds with bld/Makefile, documentation fixes
 
@@ -7234,7 +9867,7 @@
 
 	* cvs tag -c nco-2_5_5
 	Changes since nco-2_5_4: Global "history" attribute fix
-	
+
 	* Fix bug in nco_hst_att_cat() introduced in 2.4.2 which left
 	att_nm undefined when global history attribute did not exist
 
@@ -7242,8 +9875,8 @@
 
 	* cvs tag -c nco-2_5_4
 	Changes since nco-2_5_3: NECSX support
-	
-	* Extensive support for NECSX architecture contributed by 
+
+	* Extensive support for NECSX architecture contributed by
 	Len Makin <len at hpc.csiro.au>
 
 2002-08-10  Charlie Zender  <zender at uci.edu>
@@ -7850,7 +10483,7 @@
 	This requires building NCO > 2.0.1 with netCDF >= 3.5
 	This change also permits successful builds with g++ again, which
 	complained about initializing nc_type with non nc_type enums
-	
+
 	* cvs tag -c nco-2_0_1
 	Changes since nco-2_0_0:
 	Cleaner separation of netCDF wrappers into nco_netcdf.c,.h
@@ -7860,7 +10493,7 @@
 	* ncap uses nco netCDF3 interface
 
         * Structure nco_netcdf.h as standard library header
-        
+
 	* Forbid multiple includes of nco_netcdf.h
 
         * Changed nc.h to nco.h for namespace consistency
@@ -7875,7 +10508,7 @@
 2001-08-10  Charlie Zender  <zender at uci.edu>
 
 	* Changed storage location of remotely accessible in.nc to
-	.../nco/in.nc 
+	.../nco/in.nc
 
 	* Various Makefile changes for exotic NCAR platforms
 
@@ -7908,7 +10541,7 @@
 
 	* cvs tag -c nco-1_3_3
 
-	* nco_tst.sh runs as expected when compiled with OPTS=D and OPTS=O 
+	* nco_tst.sh runs as expected when compiled with OPTS=D and OPTS=O
 	on both Linux 32 bit and Irix 64 bit
 
 	* Removed make options for NETCDF2_ONLY flag which is no longer
@@ -7917,7 +10550,7 @@
 	* Default build now compiles with -DNO_NETCDF_2 flag and tests
 	successfully.
 
-	* Replaced nclong with nco_long = long. 
+	* Replaced nclong with nco_long = long.
 	There's no need to remove nco_long just yet until a long term
 	strategy for dealing with long, size_t, int issues is decided
 	upon. netCDF 3.x deprecates the whole nclong issue, but it might
@@ -7930,7 +10563,7 @@
 	* Added i18n headers to ncra.c and to Makefile with default being
 	no internationalization. Hooks appear to work fine.
 
-	* Changed NC_LONG to NC_INT to adhere closer to standard. 
+	* Changed NC_LONG to NC_INT to adhere closer to standard.
 	Type NC_LONG is currently synonymous with NC_INT and will continue
 	to be represented by native type long.
 
@@ -7941,21 +10574,21 @@
 
 2001-03-06  Henry Butowsky  <thin at thin.screaming.net>
 
-        * fixed ncdiff problem. There was a conversion error in dmn_dfn 
+        * fixed ncdiff problem. There was a conversion error in dmn_dfn
 
 	* fixed ncrename problem. There was a typo error
 	  in nco_rename_var ( it was calling itself) This
-	  is the third such error in nco_netcdf.c. 
-	  
+	  is the third such error in nco_netcdf.c.
+
 2001-03-02  Charlie Zender  <zender at uci.edu>
 
 	* Code fails to compile with -DNO_NETCDF_2
 
 	* Code compiles but is buggy. This command fails:
-	ncdiff -O -C -v three_dmn_rec_var in.nc in.nc foo.nc;ncks -H foo.nc	
-	As does 
+	ncdiff -O -C -v three_dmn_rec_var in.nc in.nc foo.nc;ncks -H foo.nc
+	As does
 	ncdiff -O -C -v PS nco_tst.nc nco_tst.nc foo.nc
-	
+
 	* Removed NETCDF2_ONLY code
 
 2001-02-16  Charlie Zender  <zender at uci.edu>
@@ -7967,7 +10600,7 @@
 	1_3_2
 
 	* Tagged changes until today as nco-1_3_1 and will merge with
-	nco-1_2_2 
+	nco-1_2_2
 
 2001-02-11  Charlie Zender  <zender at uci.edu>
 
@@ -7989,18 +10622,18 @@
 
 	* Added make NETCDF2=Y to compare netCDF2 behavior with/without
 	HDF libraries. HDF libraries cause ncwa to fail certain tests
-	that work fine with Unidata netcdf2 libraries. All other operators 
+	that work fine with Unidata netcdf2 libraries. All other operators
 	appear fine with HDF libraries.
 
 	* Added default statements to switch(type) constructs which
 	emitted warnings when compiled with -DNETCDF2_ONLY since,
 	apparently, there are a whole bunch of things besides numeric
 	types in the old nctype enum and gcc warns about enums that are
-	not exhaustively considered in switch() statements. 
+	not exhaustively considered in switch() statements.
 	All these default statements can be removed with netCDF3 interface
 	so perhaps these should be surrounded with #ifdef NETCDF2_ONLY
 	constructs, but they actually do make sense for netCDF3 as well
-	so I have implemented a uniform error function, dfl_case_nctype_err(), 
+	so I have implemented a uniform error function, dfl_case_nctype_err(),
         to be called by all routines which emit errors only when compiled with
         NETCDF2_ONLY.
         This makes the behavior easy to modify or remove in the future.
diff --git a/doc/MANIFEST b/doc/MANIFEST
index ce5ff11..ed32d8f 100644
--- a/doc/MANIFEST
+++ b/doc/MANIFEST
@@ -1,4 +1,4 @@
-$Header: /cvsroot/nco/nco/doc/MANIFEST,v 1.45 2011/08/01 22:48:50 zender Exp $ -*-text-*-
+$Header: /cvsroot/nco/nco/doc/MANIFEST,v 1.59 2013/12/02 01:05:56 zender Exp $ -*-text-*-
 
 This file enumerates the files in the NCO distribution and, where
 appropriate, describes the purpose of the file.
@@ -12,15 +12,15 @@ INSTALL		Boilerplate instructions for ./configure
 acinclude.m4	NCO M4 macro definitions used by aclocal to generate aclocal.m4
 aclocal.m4	M4 macros generated from acinclude.m4 by aclocal
 autogen.sh	Gather all autotools necessary to run autoconf
-config.h.in(v)	Template header file generated from configure.in by autoheader
-config.h	NCO header file generated from configure.in by autoconf
+config.h.in(v)	Template header file generated from configure.ac by autoheader
+config.h	NCO header file generated from configure.ac by autoconf
 config.guess(v)
 config.log(v)
 config.status(v)
 config.sub(v)
 configure.eg	Example ./configure invocations by architecture and compiler
-configure.in	Template used by autoconf to generate configure script
-configure	NCO configuration script generated by autoconf from configure.in
+configure.ac	Template used by autoconf to generate configure script
+configure	NCO configuration script generated by autoconf from configure.ac
 conftest(v)	Directory used by configure to perform tests
 libtool(v)
 Makefile	Top-level Makefile created by configure from Makefile.in
@@ -29,16 +29,17 @@ Makefile.in	Makefile template created from Makefile.am by automake and used by a
 stamp-h1(v)	Time-stamp
 
 Top-level directories:
-nco/autobld	Files related to autotools: autoconf/automake/autolib
+nco/autobld	Files related to and used by autotools: autoconf/automake/autolib
 nco/bin		Binary directory for NCO binary executable
 nco/bld		Build directory for Makefile and ancillary scripts
 nco/bm		Benchmark directory and related plot scripts
 nco/debian	Scripts for Debian GNU/Linux .deb builds
 nco/data	Sample I/O datasets
-nco/doc		Documentation
+nco/doc		Documentation and logos
 nco/m4		M4 macros for libtool
 nco/man		Man pages
 nco/obj		Object files
+nco/qt		Qt and Visual Studio project files
 nco/src		Source files
 
 Binary directory:
@@ -71,9 +72,16 @@ nco/data/Makefile.in(v)	Autotools-generated Makefile
 nco/data/big.cdl 	CDL file to huge netCDF test files
 nco/data/bin_cnt.nco 	ncap2 sample script that bins wind speeds
 nco/data/ddra.nco	Sample ncap2 script that computes DDRA statistics
+nco/data/hdr_pad.sh	Utility to check size of metadata header
 nco/data/in.cdl 	CDL file to generate netCDF test file in.nc
 nco/data/in_4.cdl 	CDL file to generate netCDF4 test file in_4.nc
 nco/data/in_grp.cdl 	CDL file to test netCDF4 group functionality
+nco/data/in_grp_1.cdl 	CDL file to test ncbo functionality on groups
+nco/data/in_grp_2.cdl 	CDL file to test ncbo functionality on groups
+nco/data/in_1.cdl 	CDL file to test 2 input file operators
+nco/data/in_2.cdl 	CDL file to test 2 input file operators
+nco/data/cmip5.cdl 	CDL file to test ncbo functionality on groups
+nco/data/obs.cdl 	CDL file to test ncbo functionality on groups
 nco/data/in_rec_zero.cdl 	CDL file to test zero-record files
 nco/data/ncap.in	Sample ncap input script
 nco/data/netcdf4.nco	Sample input script for netCDF4-enabled ncap2
@@ -104,6 +112,9 @@ nco/doc/dir		Example Info file to load nco.info
 nco/doc/dods.sh		Install OPeNDAP 3.4.X for NCO DAP-enabled clients
 nco/doc/help.txt	Advertisement for help with NCO (outdated---from 2000)
 nco/doc/index.shtml	NCO website homepage
+nco/doc/logo_srl.png	NCO spiral logo PNG raster format
+nco/doc/logo_srl.svg	NCO spiral logo Scalable Vector Graphic format
+nco/doc/logo_srl.xcf	NCO spiral logo GIMP format
 nco/doc/mpi.txt		MPI Environments for NCO
 nco/doc/my-bib-macros.texi TeXInfo bibliography macros for nco.texi
 nco/doc/ncap.txt	Description of the ncap operator (not yet used)
@@ -129,7 +140,7 @@ nco/man/ncap.1		ncap man page
 nco/man/ncatted.1	ncatted man page
 nco/man/ncbo.1		ncbo man page
 nco/man/ncdiff.1	ncdiff man page
-nco/man/ncea.1		ncea man page
+nco/man/nces.1		nces man page
 nco/man/ncecat.1	ncecat man page
 nco/man/ncflint.1	ncflint man page
 nco/man/ncks.1		ncks man page
@@ -157,7 +168,7 @@ nco/src/nco/mpncbo.c		mpncbo main() MPI-enabled
 nco/src/nco/mpncecat.c		mpncecat main() MPI-enabled
 nco/src/nco/mpncflint.c		mpncflint main() MPI-enabled
 nco/src/nco/mpncpdq.c		mpncpdq main() MPI-enabled
-nco/src/nco/mpncra.c		mpncra/mpncea/mpncrcat main() MPI-enabled
+nco/src/nco/mpncra.c		mpncra/mpnces/mpncrcat main() MPI-enabled
 nco/src/nco/mpncwa.c		mpncwa main() MPI-enabled
 nco/src/nco/ncap.c		ncap main() MPI-enabled
 nco/src/nco/ncap.h
@@ -200,12 +211,16 @@ nco/src/nco/nco_fl_utl.c
 nco/src/nco/nco_fl_utl.h
 nco/src/nco/nco_getopt.c
 nco/src/nco/nco_getopt.h
+nco/src/nco/nco_grp_trv.c
+nco/src/nco/nco_grp_trv.h
 nco/src/nco/nco_grp_utl.c
 nco/src/nco/nco_grp_utl.h
 nco/src/nco/nco_lmt.c
 nco/src/nco/nco_lmt.h
 nco/src/nco/nco_lst_utl.c
 nco/src/nco/nco_lst_utl.h
+nco/src/nco/nco_md5.h
+nco/src/nco/nco_md5.c
 nco/src/nco/nco_mmr.c
 nco/src/nco/nco_mmr.h
 nco/src/nco/nco_mpi.h
@@ -233,7 +248,10 @@ nco/src/nco/nco_scm.c
 nco/src/nco/nco_scm.h
 nco/src/nco/nco_sng_utl.c
 nco/src/nco/nco_sng_utl.h
+nco/src/nco/nco_srm.c
+nco/src/nco/nco_srm.h
 nco/src/nco/nco_typ.h
+nco/src/nco/nco_uthash.h
 nco/src/nco/nco_var_avg.c
 nco/src/nco/nco_var_avg.h
 nco/src/nco/nco_var_lst.c
@@ -244,7 +262,7 @@ nco/src/nco/nco_var_scv.c
 nco/src/nco/nco_var_scv.h
 nco/src/nco/nco_var_utl.c
 nco/src/nco/nco_var_utl.h
-nco/src/nco/ncra.c		ncra/ncea/ncrcat main()
+nco/src/nco/ncra.c		ncra/nces/ncrcat main()
 nco/src/nco/ncrename.c		ncrename main()
 nco/src/nco/ncwa.c		ncwa main()
 
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 9a41955..cd16e4f 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,6 +14,51 @@
 
 @SET_MAKE@
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -35,19 +79,63 @@ build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
 subdir = doc
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	ChangeLog NEWS TODO
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs \
+	$(top_srcdir)/autobld/texinfo.tex AUTHORS ChangeLog NEWS \
+	README TODO
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+AM_V_DVIPS = $(am__v_DVIPS_ at AM_V@)
+am__v_DVIPS_ = $(am__v_DVIPS_ at AM_DEFAULT_V@)
+am__v_DVIPS_0 = @echo "  DVIPS   " $@;
+am__v_DVIPS_1 = 
+AM_V_MAKEINFO = $(am__v_MAKEINFO_ at AM_V@)
+am__v_MAKEINFO_ = $(am__v_MAKEINFO_ at AM_DEFAULT_V@)
+am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
+am__v_MAKEINFO_1 = 
+AM_V_INFOHTML = $(am__v_INFOHTML_ at AM_V@)
+am__v_INFOHTML_ = $(am__v_INFOHTML_ at AM_DEFAULT_V@)
+am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
+am__v_INFOHTML_1 = 
+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_ at AM_V@)
+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_ at AM_DEFAULT_V@)
+am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
+am__v_TEXI2DVI_1 = 
+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_ at AM_V@)
+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_ at AM_DEFAULT_V@)
+am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
+am__v_TEXI2PDF_1 = 
+AM_V_texinfo = $(am__v_texinfo_ at AM_V@)
+am__v_texinfo_ = $(am__v_texinfo_ at AM_DEFAULT_V@)
+am__v_texinfo_0 = -q
+am__v_texinfo_1 = 
+AM_V_texidevnull = $(am__v_texidevnull_ at AM_V@)
+am__v_texidevnull_ = $(am__v_texidevnull_ at AM_DEFAULT_V@)
+am__v_texidevnull_0 = > /dev/null
+am__v_texidevnull_1 = 
 INFO_DEPS = nco.info
 TEXINFO_TEX = $(top_srcdir)/autobld/texinfo.tex
 am__TEXINFO_TEX_DIR = $(top_srcdir)/autobld
@@ -60,6 +148,11 @@ TEXI2DVI = texi2dvi
 TEXI2PDF = $(TEXI2DVI) --pdf --batch
 MAKEINFOHTML = $(MAKEINFO) --html
 DVIPS = dvips
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__installdirs = "$(DESTDIR)$(infodir)"
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
@@ -82,9 +175,17 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -104,6 +205,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -145,6 +247,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -191,6 +294,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -284,7 +388,7 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 nco.info: nco.texi 
-	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
 	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
 	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
@@ -302,18 +406,20 @@ nco.info: nco.texi
 	rm -rf $$backupdir; exit $$rc
 
 nco.dvi: nco.texi  
-	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
-	$(TEXI2DVI) -o $@ `test -f 'nco.texi' || echo '$(srcdir)/'`nco.texi
+	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
+	`test -f 'nco.texi' || echo '$(srcdir)/'`nco.texi
 
 nco.pdf: nco.texi  
-	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
-	$(TEXI2PDF) -o $@ `test -f 'nco.texi' || echo '$(srcdir)/'`nco.texi
+	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
+	`test -f 'nco.texi' || echo '$(srcdir)/'`nco.texi
 
 nco.html: nco.texi  
-	rm -rf $(@:.html=.htp)
-	if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+	$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
 	 -o $(@:.html=.htp) `test -f 'nco.texi' || echo '$(srcdir)/'`nco.texi; \
 	then \
 	  rm -rf $@; \
@@ -325,8 +431,8 @@ nco.html: nco.texi
 	  exit 1; \
 	fi
 .dvi.ps:
-	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-	$(DVIPS) -o $@ $<
+	$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(DVIPS) $(AM_V_texinfo) -o $@ $<
 
 uninstall-dvi-am:
 	@$(NORMAL_UNINSTALL)
@@ -348,9 +454,7 @@ uninstall-html-am:
 
 uninstall-info-am:
 	@$(PRE_UNINSTALL)
-	@if test -d '$(DESTDIR)$(infodir)' && \
-	    (install-info --version && \
-	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
 	  list='$(INFO_DEPS)'; \
 	  for file in $$list; do \
 	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
@@ -407,8 +511,7 @@ dist-info: $(INFO_DEPS)
 	done
 
 mostlyclean-aminfo:
-	-rm -rf nco.aux nco.cp nco.cps nco.fn nco.ky nco.kys nco.log nco.pg nco.pgs \
-	  nco.tmp nco.toc nco.tp nco.tps nco.vr nco.vrs
+	-rm -rf nco.t2d nco.t2p
 
 clean-aminfo:
 	-test -z "nco.dvi nco.pdf nco.ps nco.html" \
@@ -420,11 +523,11 @@ maintainer-clean-aminfo:
 	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
 	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
 	done
-tags: TAGS
-TAGS:
+tags TAGS:
+
+ctags CTAGS:
 
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
 
 
 distdir: $(DISTFILES)
@@ -477,10 +580,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -519,8 +627,11 @@ install-dvi: install-dvi-am
 
 install-dvi-am: $(DVIS)
 	@$(NORMAL_INSTALL)
-	test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
 	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -535,18 +646,22 @@ install-html: install-html-am
 
 install-html-am: $(HTMLS)
 	@$(NORMAL_INSTALL)
-	test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
 	@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  $(am__strip_dir) \
-	  if test -d "$$d$$p"; then \
+	  d2=$$d$$p; \
+	  if test -d "$$d2"; then \
 	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
 	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
-	    echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
-	    $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+	    echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+	    $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
 	  else \
-	    list2="$$list2 $$d$$p"; \
+	    list2="$$list2 $$d2"; \
 	  fi; \
 	done; \
 	test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
@@ -558,9 +673,12 @@ install-info: install-info-am
 
 install-info-am: $(INFO_DEPS)
 	@$(NORMAL_INSTALL)
-	test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+	fi; \
 	for file in $$list; do \
 	  case $$file in \
 	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
@@ -578,8 +696,7 @@ install-info-am: $(INFO_DEPS)
 	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
 	  $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
 	@$(POST_INSTALL)
-	@if (install-info --version && \
-	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	@if $(am__can_run_installinfo); then \
 	  list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
 	  for file in $$list; do \
 	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
@@ -593,8 +710,11 @@ install-pdf: install-pdf-am
 
 install-pdf-am: $(PDFS)
 	@$(NORMAL_INSTALL)
-	test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
 	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -606,8 +726,11 @@ install-ps: install-ps-am
 
 install-ps-am: $(PSS)
 	@$(NORMAL_INSTALL)
-	test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
 	@list='$(PSS)'; test -n "$(psdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -641,18 +764,19 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-aminfo clean-generic \
-	clean-libtool dist-info distclean distclean-generic \
-	distclean-libtool distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-aminfo \
-	maintainer-clean-generic mostlyclean mostlyclean-aminfo \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	uninstall uninstall-am uninstall-dvi-am uninstall-html-am \
-	uninstall-info-am uninstall-pdf-am uninstall-ps-am
+	clean-libtool cscopelist-am ctags-am dist-info distclean \
+	distclean-generic distclean-libtool distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+	mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool pdf \
+	pdf-am ps ps-am tags-am uninstall uninstall-am \
+	uninstall-dvi-am uninstall-html-am uninstall-info-am \
+	uninstall-pdf-am uninstall-ps-am
 
 .texi.html:
 	$(MAKEINFO) --html $<
diff --git a/doc/README b/doc/README
index 2926bb2..80a78ad 100644
--- a/doc/README
+++ b/doc/README
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/nco/nco/doc/README,v 1.17 2011/02/12 03:05:20 zender Exp $ -*-text-*-
+# $Header: /cvsroot/nco/nco/doc/README,v 1.18 2013/07/25 04:43:29 zender Exp $ -*-text-*-
 
 # Purpose: NCO README file
 
@@ -47,7 +47,7 @@ The output of these commands from our test machines is available at
 
 http://dust.ess.uci.edu/nco/rgr
 
-Please send us any modifications to the configure.in script that 
+Please send us any modifications to the configure.ac script that 
 might benefit other NCO users. 
 
 Older Manual Makefile Build Procedure:
diff --git a/doc/TAG b/doc/TAG
index d713706..d1b7b79 100644
--- a/doc/TAG
+++ b/doc/TAG
@@ -1 +1 @@
-$Name: nco-4_0_9 $
+$Name: nco-4_3_9 $
diff --git a/doc/TODO b/doc/TODO
index 07f9f73..926983d 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,7 +1,9 @@
-$Header: /cvsroot/nco/nco/doc/TODO,v 1.1142 2012/02/09 21:02:46 zender Exp $ 
+$Header: /cvsroot/nco/nco/doc/TODO,v 1.1256 2013/12/02 20:48:45 zender Exp $
 
 # Purpose: TODO items for NCO
 
+ftr=do-able feature (low-hanging fruit)
+
 # URL:
 http://nco.sf.net/TODO
 
@@ -21,6 +23,21 @@ Please help out wherever your experience allows.
 ******************************************************************************
 
 ************************************************************************
+Begin precision paper
+************************************************************************
+Precipitated by questions from Lori Sentman, Mark Flanner, Gary Strand
+ncwa and ncra issues only:
+ncks -O -v PS,gw  ${DATA}/dstmch90/dstmch90_clm.nc ~/dstmch90_ps.nc
+ncrename -O -v PS,ps_flt ~/dstmch90_ps.nc
+ncap2 -O -s 'ps_dbl=double(ps_flt)' ~/dstmch90_ps.nc ~/dstmch90_ps.nc
+ncwa -O -w gw ~/dstmch90_ps.nc ~/dstmch90_ps_xyt.nc
+ncks -H -C ~/dstmch90_ps_xyt.nc
+ncks -m -C ~/dstmch90_ps.nc
+************************************************************************
+End precision paper
+************************************************************************
+
+************************************************************************
 Begin ncoXXX TODOs
 ************************************************************************
 Highest priority NCO-wide items that You can help with:
@@ -65,7 +82,7 @@ nco82. Make libnco namespace-safe by prefixing all library subroutines with nco_
 nco86. Extend stride/wraparound capability to all operators possible
 nco92. ncrcat -O -v base_time,time_offset arm.cdf arm.cdf foo.nc;ncks -H -C -h foo.nc | m gives bad time_offset on LINUX not SUNMP (problem with LINUX adding record coordinate to open file?)
 nco99. Allow ncatted to dump file in ncatted format
-nco103. Implement trapezoidal rule option in ncra, ncea
+nco103. Implement trapezoidal rule option in ncra, nces
 nco105. Add easy-to-read tabular display option for file contents for ncks, i.e, allow ncks -s to print multiple variables in column format
 nco106. Add switch to keep degenerate dimensions with ncwa, remove them from ncra
 nco111. Investigate whether using ncwa to average files where variables of type 
@@ -80,7 +97,6 @@ nco114. Fix nco_var_cnf_dmn() so that returned weight always has same size tally
 nco115. SIGFPE when sum of denominator in ncwa (i.e., sum of weight) is zero
         Users should not be doing weighted averages if denominator sums to zero, but...
         Desired fix here is graceful exit instead of core dump
-nco127. Make mss: signal retrieval from NCAR mass store
 nco143. Add -W or -q switch to turn off squelch most warning messages in ncra, ncrcat (especially warnings about non-monotonicity)
 nco144. Add option(s) to select all N-D variables where N=0,1,2...
 nco145. Implement later netCDF and CF conventions, e.g., time_op in ncra
@@ -96,23 +112,14 @@ nco148. Put in more useful error diagnostics for Schweitzer's data holes
         ncrcat -O -C -d lon,10.0,80.0 -v time_lon in.nc foo.nc;ncks -H foo.nc
 nco149. Add ncks hyperslab tests to nco_tst.pl to catch inconsistencies like #148
 nco151. Dynamically modify web pages so files with changing version numbers can be directly linked
-nco154. Add mirror capability to web pages
 nco158. Add policy for hyperslabbing single level values to User's Guide
         Multi-file operators with record coordinate
         treat single point hyperslabs differently than single file operators 
         or than any operators with single point cuts on non-record coordinates.
         See explanatory notes in nco_lmt_evl().
-nco159. Add capability to handle superfluous intermediate files to ncra,
-        ncrcat when lmt_typ = dim_idx.
-        This would allow these multifile operators to handle hyperslabs where,
-        for example, every other file was not needed. This capability is already
-        implemented for lmt_typ = crd_val. 
-        This is an issue only when stride is non-unity.
-        Does MSA multislabbing algorithm fix this?
-nco162. Add GiNaC (Computer Algebra System) support to ncap www.ginac.de (maybe?)
 nco166. Document 'make test' so people know it exists and use it
 nco173. Add switch to ncra which allows user to remove degenerate time dimension from result
-nco174. Setup ncra,ncea,ncwa to do standard deviations sdn with one call
+nco174. Setup ncra,nces,ncwa to do standard deviations sdn with one call
 nco182. Add -L, --license switch to print license terms (as suggested by GNU coding style)
 nco190. Make typ_pck et al. use nc_type enum or something sane for default
 nco192. ncdiff sometimes subtracts files of incommensurate size without complaint
@@ -142,12 +149,10 @@ nco250. ncks -s should refuse to print strings formatted with %s unless they con
         ncks -C -H -s "%s" -v fl_nm ~/nco/data/in.nc
 nco251. Does ncks -B correctly write packed variables in binary format?
 nco255. Desktop icon for NCO gui interface
-nco256. Turn udunits into .deb
 nco258. Develop syntax/procedure for specifying lists of hyperslabs for single pass, low memory consumption MSA jobs like Martin Schultz's in Discussion forum on 20030506
 nco259. Variadic function extension to nco_malloc() to support printing debugging messages?
 nco260. Warn (but work) when coordinate variable has more than two dimensions
 nco261. Switch from toggling defaults to --no-option format for all Booleans. e.g., --abc should ensure alphabetization is True, and --no-abc should ensure it is false, rather than toggling.
-nco265. ncbo: Promote before operations using nco_typ_cnv_rth() in ncbo
 nco266. ncbo: Finish ncbo.1 manpage
 nco270. Automate uploading of tagged .deb builds to ftp://ftp.debian.org
 nco275. Use nco_mss_val_cnf() in ncflint
@@ -156,14 +161,14 @@ nco277. Use nco_mss_val_cnf() in ncwa
 nco287. Develop dianostics for OMP OpenMP implementation in ncra
 nco292. nco_fl_utl.c: Use autoconf HAVE_NETWORK instead of WIN32
 nco293. nco_fl_utl.c: Use autoconf HAVE_MKDIR_M instead of SUN4
-nco294. Globals variable in NCO operators are prg, prg_nm, dbg_lvl 
+nco294. Globals variable in NCO operators are prg, prg_nm, nco_dbg_lvl 
         If possible, modify so that shared-library (rather than main.c) holds
         and returns thread-specific values for each, set with, e.g., prg_set().
-        Make prg, prg_nm, and dbg_lvl local to main(), not global to main.c
+        Make prg, prg_nm, and nco_dbg_lvl local to main(), not global to main.c
 nco295. Understand/maintain re-entrant behavior of shared library.
 nco298. Localize ncap's three globals: ncap_ncl_dpt_crr, ncap_ln_nbr_crr, ncap_fl_spt_glb?
-nco299. Prefix prg,prg_nm,dbg_lvl globals with nco_ for namespace cleanliness
-nco300. Activate ccmalloc libdl into configure.in for enable-debug-custom
+nco299. Prefix prg,nco_prg_nm,nco_dbg_lvl globals with nco_ for namespace cleanliness
+nco300. Activate ccmalloc libdl into configure.ac for enable-debug-custom
 nco301. Unable to use DDD on autotools NCO executable with --enable-debug-custom
 nco302. Add speedy GCC optimization flags to --enable-optimize-custom
 nco303. Make test suite more comprehensive
@@ -175,11 +180,10 @@ nco316. Change offending nco_malloc() to nco_malloc_flg() calls for #315
 nco317. Understand stack memory problem. ulimits? compiler switches?
 nco318. Solve stack memory problem and benchmark vs. ANSI code branch
 nco320. LaTeX-like hyphens in TeXInfo?
-nco321. Do not promote NC_FLOAT to NC_DOUBLE in ncra/ncea(?)
+nco321. Do not promote NC_FLOAT to NC_DOUBLE in ncra/nces(?)
 nco322. Implement integer empowerment in var_scv_pwr() with, e.g., GSL
 nco323. Collect all past ANNOUNCE files and place in reverse chronological order in ANNOUNCE file
 nco324. Add release date to "Version Summary" section on homepage
-nco326. Add manual override of writing *tmp* file for intermediate results?
 nco328. Ability to reverse specified dimensions (use negative stride?)
 nco333. Clean up preprocessor symbols with cd ~/nco/src/nco;ifnames *.c
 nco335. ncflint: implement interpolation/mss_val algorithms two and three as options?
@@ -241,7 +245,6 @@ nco480. Add boxcar averaging option (average in groups of n records) to ncra
 nco482. Remove return's from void functions dated 20050109 once gcc-3.4.2 behavior fixed or gcc upgraded on i386 platforms
 nco483. Compiling with ABORT_ON_ERROR and calling without an option dumps core
         Fix so inputting 0 filenames merely prints usage, does not abort?
-nco485. Add md5sum hash functionality to ncks
 nco487. Add ncks option to suppress over-writing attributes in output file by attributes of source file#1
 nco494. Implement gzip library wrapper library build option for znetCDF?
 nco514. MPI builds call superfluous linker steps:
@@ -255,19 +258,12 @@ nco527. Purify ncatted memory:
 # Commas at end of following aed_sct appear never to be free()'d, are responsible for three unfree'd bytes
         valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncatted -D 5 -O -a float_att,att_var,d,,, -p ${HOME}/nco/data -l /tmp in.nc ~/foo.nc > ~/foo 2>&1
 nco533. Implement C99 mathematical special functions: lgamma_r, j0, j1, jn, y0, y1, yn
-nco540. bm: regression tests report some apparent successes as failures on SUNMP, e.g., 
-	Result: [1e+36] != Expected: [1e+36]
-	always recorded as failure. 
-	Seems like any "Expected's" containing "+" string may fail.
-	Perl problem?
 nco542. Put batch scripts, executables in ${DATA}/nco_bm/CASEID? Where to put created files
 nco546. Use makeatletter command in CCSM example in nco.texi?
-nco547. Format CCSM example in nco.texi
+nco547. doc: Format CCSM example in nco.texi
 nco548. Hyper-link all switches to explanatory sections?
-nco552. ncbo: symmetric w/r/t fl_1 <--> fl_2, Step 1: allow smaller variables to be in file_1 (pre-compute broadcast size and place in var_out before var_def(out_id,var_out))
 nco560. Change FTP access script to facilitate mget *?
-	NCO cannot process files obtained this way unless mget feeds
-	information on files obtained back to main()
+	NCO cannot process files obtained this way unless mget feeds information on files obtained back to main()
 	Script modification would be simple:
 	ftp -i climate.llnl.gov << END
 	bin
@@ -276,77 +272,21 @@ nco560. Change FTP access script to facilitate mget *?
 	mget *
 	quit
 	END
-nco564. Implement --64bit switch in ncatted?
 nco565. bm: Add ncatted bm to quantify nc__enddef() tuning improvements
+nco564. Implement --64bit switch in ncatted?
 nco566. Implement --64bit switch in ncrename?
-nco567. Add option to turn off default-creation of .tmp file?
 nco568. bm: test NC_SHARE in ncatted/ncrename?
-nco569. bm: Add SRB test
-        Sifang Lu <sifang at sdsc.edu>
-        /home/zender.uci-esmf/zender/nco/data/in.nc
-        Sinit -v
-        Scd zender
-        Sls
-        Sput ~/nco/data/in.nc nco/data
-        Sget nco/data/in.nc
-nco570. Merge ncatted/ncrename file opens into nco_fl_out_open()
-nco573. Consolidate -4, --64bit into one option a la ncks --fl_fmt
 nco576. Re-order arguments so var_sbt computes op2:=op1-op2 rather than op2:=op2-op1
 nco577. ncbo: remove dangling pointers in var_1, var_2 after ncap_var_cnf_dmn()
 nco578. ncbo: Use ncbo.c as template for [mp]ncflint re-write
-nco581. ncbo: symmetric w/r/t fl_1 <--> fl_2, Step 2: allow nbr_xtr_out=max(nbr_xtr_1,nbr_xtr_2) when nbr_xtr_2>nbr_xtr_1 if discrepant variables are type fix (e.g., grid properties) not type prc (NB: already works for nbr_xtr_1>nbr_xtr_2)
-nco587. Command line MPI on AIX PPE with poe
-	Promising documentation at:
-        http://publib.boulder.ibm.com/infocenter/clresctr/index.jsp?topic=/com.ibm.cluster.pe.doc/pe_42/am10600203.html
-	echo ${HOST} > ~/nco/bld/host.list
-        cd ~/nco/bld;poe -hostfile=~/nco/bld/host.list -node=1 -tasks_per_node=3 $MY_BIN_DIR/mpncwa -O -D 3 -p ${HOME}/nco/data in.nc ~/foo.nc
-        zender at esmf04m:~/nco/bld$ cd ~/nco/bld;poe -hostfile=~/nco/bld/host.list -node=1 -tasks_per_node=3 $MY_BIN_DIR/mpncwa -O -D 3 -p ${HOME}/nco/data in.nc ~/foo.nc
-        ERROR: 0031-212  pmd: node esmf04m: user zender denied from access from host esmf04m
-        ERROR: 0031-024  esmf04m: no response; rc = -1
-        AIX POE sample hello world at http://publib.boulder.ibm.com/infocenter/clresctr/index.jsp?topic=/com.ibm.cluster.pe.doc/pe_411/am105001/am10500113.html
-        ocd ~/nco/bld;poe -infolevel 6 -node 1 -tasks_per_node 3 -rmpool 1 $MY_BIN_DIR/mpncwa -O -D 3 -p ${HOME}/nco/data in.nc ~/foo.nc
-nco593. mpncrcat "sometimes" hangs while concatenating
-	command line: -np 2 seems to always work on sand, ashes, elnino
-	command line: -np 3 rarely hangs on ashes, usually hangs on sand, never hangs on elnino
-                      When it does hang on ashes, it hangs after this message:
-                      DEBUG: prc_rnk 1 waiting for msg from Mgr for final write
-	command line: -np 4 always hangs on ashes and sand, never hangs on elnino
-        ncrcat -O -D 5 -p ~/nco/data in.nc in.nc ~/foo.nc (works)
-	mpirun -np 2 mpncrcat -O -D 5 -p ~/nco/data in.nc in.nc ~/foo.nc (fails, depending on np and machine)
-        /bin/rm $MY_OBJ_DIR/mpncra.o;make MPI_FAKE=Y mpncra
-	mpncrcat -O -D 5 -p ~/nco/data in.nc in.nc ~/foo.nc (works)
-        valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck mpncrcat -O -D 5 -v one_dmn_rec_var -p ~/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1 (perfect)
-        /bin/rm $MY_OBJ_DIR/mpncra.o;make MPI=Y mpncra
-        Shorten for GDB:
-        ncks -O -C -d time,0,1 -v one_dmn_rec_var ~/nco/data/in.nc ~/in_short.nc
-        mpirun -np 3 $MY_BIN_DIR/mpncrcat -O -C -D 1 -v one_dmn_rec_var ~/in_short.nc ~/foo3.nc (hangs)
-
-        DEBUG: input file opened in prc_rnk 0 inside the loop
-        **** prc 0 hangs somewhere between these lines ***
-        DEBUG: prc_rnk 0 at the end of ncra/rcat
-        DEBUG: prc_rnk 0 is out of file idx loop
-
-        ~/nco/bm/nco_bm.pl --mpi_prc=3 --regress ncrcat
-        mpirun -np 2 /usr/bin/valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck $MY_BIN_DIR/mpncrcat -O -D 5 -v one_dmn_rec_var -p ~/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
-nco597. mpncea hangs on ncea regression test 4 (on sand with LAM)
-	Hangs occur _only_ on sand with LAM in nco_bm.pl, not from command line!
-	valgrind shows no NCO-related memory problems on sand with -np 2 or 3
-        ~/nco/bm/nco_bm.pl --mpi_prc=3 --regress ncea
-        ncea -O -D 5 -C -v one -p ~/nco/data in.nc ~/foo.nc (works)
-        mpirun -np 2 /home/zender/bin/LINUXAMD64/mpncea -O -D 5 -C -v one -p ~/nco/data in.nc ~/foo.nc (leaves processes hanging in nco_free(var_out[0]))
-        mpirun -np 2 /usr/local/bin/valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck $MY_BIN_DIR/mpncea -O -D 5 -v one -p ~/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
-	Daniel finds mpncea tries to free dangling pointer on sand with:
-        mpirun -np 4 valgrind -v /home/zender/bin/LINUXAMD64/mpncra -Y ncea -h -O -D 2 -C -v pck -p ../data in.nc ~/foo.nc > ~/foo 2>&1
-	Charlie cannot reproduce that.
-	Charlie finds that master exits but workers reproducibly hang on sand with:
-        mpirun -np 2 valgrind -v /home/zender/bin/LINUXAMD64/mpncra -Y ncea -h -O -D 2 -C -v pck -p ../data in.nc ~/foo.nc > ~/foo 2>&1
-nco599. Allow targets to determine Makefile variables so, e.g., 'make mpi' automagically defines MPI=Y
-nco607. mpnc*: Define structures (rather than int arrays) for MPI messages
-nco609. Tune (or remove?) sleep interval in MPI operators
+nco581. ncbo: symmetric w/r/t fl_1 <--> fl_2, Step 2: allow xtr_nbr_out=max(xtr_nbr_1,xtr_nbr_2) when xtr_nbr_2>xtr_nbr_1 if discrepant variables are type fix (e.g., grid properties) not type prc (NB: already works for xtr_nbr_1>xtr_nbr_2)
+nco599. mpi: Allow targets to determine Makefile variables so, e.g., 'make mpi' automagically defines MPI=Y
+nco607. mpi: mpnc*: Define structures (rather than int arrays) for MPI messages
+nco609. mpi: Tune (or remove?) sleep interval in MPI operators
 nco612. ncks ncdump-like features for netCDF4 files structures
 nco616: netCDF4 breaks assumption that range/precision increases with nc_type enum
 nco622. NULL'ify opt_crr unless opt_lng detected?
-nco624. Document MPI in users guide/manual
+nco624. mpi: Document MPI in users guide/manual
 nco630. Change if thr_nbr > 0 to if thr_nbr > 1 for nco_thr_att_cat()?
 nco631. Change usleep() to nanosleep()
 nco635. ncwa: MACOSX "regressions" caused by broken FREEBSD/MACOSX 'cut' binary
@@ -355,94 +295,45 @@ nco635. ncwa: MACOSX "regressions" caused by broken FREEBSD/MACOSX 'cut' binary
         ncwa -h -O -D 0 -y min -v three_dmn_var_dbl -a lon -p ~/nco/data in.nc ${DATA}/nco_bm/foo.nc
         ncks -C -H -s '%f,' -v three_dmn_var_dbl ${DATA}/nco_bm/foo.nc > ${DATA}/nco_bm/foo
         cut -d, -f 7 ${DATA}/nco_bm/foo # (breaks on MACOSX,FREEBSD? fine on AIX, LINUX)
-nco636. Try pnetcdf: http://www-unix.mcs.anl.gov/parallel-netcdf/
+nco636. mpi: Try pnetcdf: http://www-unix.mcs.anl.gov/parallel-netcdf/
 nco639. Fix packing code to be parallel over in_id without requiring 
 	extra var->nc_id initialization everywhere
-nco640. Naming: mpnc* (as currently implemented) or ncmpi* (as in pnetcdf)?
-nco641. Use netCDF4 MPI I/O hooks in nco_open/nco_create (mpncecat.c is testbed)
-nco642. Create nco_pnetcdf.h, nco_pnetcdf.c wrapper replacements?
+nco640. mpi: Naming: mpnc* (as currently implemented) or ncmpi* (as in pnetcdf)?
+nco641. mpi: Use netCDF4 MPI I/O hooks in nco_open/nco_create (mpncecat.c is testbed)
+nco642. mpi: Create nco_pnetcdf.h, nco_pnetcdf.c wrapper replacements?
 nco643. bld/Makefile fails with netCDF4 and MPI simultaneously enabled
 	make NETCDF4=Y MPI=Y ends with error in first compile (nco_att_utl.o)
 	/usr/include/mpi.h:95: error: two or more data types in declaration specifiers
 	/usr/include/mpi.h:278: error: two or more data types in declaration specifiers
-nco644. Where is nc_open_par()? not in libnetcdf.a?
-nco645. Does wrapping MPI-IO routines for netCDF4 and pnetCDF require ENABLE_MPI?
+nco645. mpi: Does wrapping MPI-IO routines for netCDF4 and pnetCDF require ENABLE_MPI?
 	Perhaps same MPI must be used to build netCDF4 as is used for NCO?
-nco646. pnetCDF builds on elnino, not ashes. Why?
-        ashes pnetCDF builds fail with both LAM and MPICH2 here in system header:
-	/usr/bin/mpicc -c -O -g -I.   -O -g mpinetcdf.c
-	In file included from nc.h:14,
-                 from mpinetcdf.c:8:
-	/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h:152: error: two or more data types in declaration specifiers
-	/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h:214: error: duplicate unsignednco
-nco648. Does mpncra create dangling pointers when it packs/unpacks variables?
+nco648. mpi: Does mpncra create dangling pointers when it packs/unpacks variables?
 nco649. Add ncks --prn_cln switch to print coords/vars naked (no names, indices)
 nco651. Use hdr_pad standard to add documentation for long switches without short counterparts, e.g., --cmp, --mpi 
-nco652. Polish/finish ncap random number generator
-        ncap -O -v -s 'x=rnd_nbr(one)' ~/nco/data/in.nc ~/foo.nc;ncks ~/foo.nc
-nco653. Segregate MPI from non-MPI builds completely in bld/Makefile on AIX
+nco653. mpi: Segregate MPI from non-MPI builds completely in bld/Makefile on AIX
 nco655. Incorporate BLAS if possible?
 nco658. netCDF4 regression in ncrename test #1: Regression re-verified 20060924, 20070831, 20080220, 20080512 PBN4
         make NETCDF4=Y FL_FMT=netcdf4 tst 
         ncks -O --fl_fmt=netcdf4 -v lat_T42 ~/nco/data/in.nc ~/foo.nc;od -An -c -N4 ~/foo.nc
         ncrename -O -d lat_T42,lat -v lat_T42,lat ~/foo.nc
-nco659. C++: nco_mmr.c: errno presence triggers g++ error: undefined reference to `__errno_location()'
-nco660. C++: NCO does not link to libudunits.a
-nco664. ncatted & ncrename will not work with DAP because there is not any
+nco664. dap: ncatted & ncrename will not work with DAP because there is not any
 	way currently to retrieve the DAP files to local files for them to
-	operate on.  see nco_fl_utl.c:~813 in nco_fl_mk_lcl().  
+	operate on. see nco_fl_utl.c:~813 in nco_fl_mk_lcl().  
 	Currently just fails semi-gracefully.
-nco665  Change _FillValue attribute from 1.0e36 to 0.0 - not working on NETCDF4";
 nco666. Grid regridding/interpolation operator ncrebin?
 nco668. Prefix nco.png fractal icon with text "NC" to look like "NCO"
 nco669. Command-line switch for float->double math-promotion to avoid underflow?
 nco675. ncap2: Makefile generates redundant antlr runs
-nco680. ncap memory double-free:
-	valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncap -O -s 'foo=unpack(pck)' ~/nco/data/in.nc ~/foo.nc > ~/foo 2>&1
-        ncap -O -s 'foo=unpack(pck)' ~/nco/data/in.nc ~/foo.nc
-==15384== Invalid read of size 4
-==15384==    at 0x80772E2: nco_var_free (nco_var_utl.c:692)
-==15384==    by 0x8077429: nco_var_lst_free (nco_var_utl.c:720)
-==15384==    by 0x804BEF1: main (ncap.c:772)
-==15384==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
-nco681. Rename nco++:
-	Invoke.cc		sdo_nvk.cc
-	Makefile		"
-	Makefile.orig		"
-	Ncap2.hh		sdo.hh // [] ncap_type
-	NcapVar.hh		sdo_var.hh // [cls] NcapVar class definition and declaration
-	NcapVarVector.cc	sdo_var_vct.cc // [] NcapVarVector class declaration
-	NcapVarVector.hh	sdo_var_vct.hh // [] NcapVarVector class definition
-	NcapVector.hh		sdo_vct.hh // [] Ncapvector template class
-	VarOp.hh		sdo_var_opr.hh // [] VarOp template class
-	libnco++.hh		"
-	ncap2.cc		"
-	ncap2.hh		"
-	ncap2_utl.cc		"
-	ncoGrammer.g		sdo_grammar.g
-	ncoLexer.cpp		sdo_lexer.cc
-	ncoLexer.hpp		sdo_lexer.hh
-	ncoParser.cpp		sdo_parser.cc
-	ncoParser.hpp		sdo_parser.hh
-	ncoParserTokenTypes.hpp	sdo_tkn_typ.cc
-	ncoParserTokenTypes.txt	sdo_tkn_typ.txt
-	ncoTree.cpp		sdo_tree.cc
-	ncoTree.hpp		sdo_tree.hh
 nco683. Convert to subversion http://sf.net/docs/E09/
 nco685. Run static analysis tool on NCO codebase
-nco689. Multislabs (multiple limits on same dimension) fail in arithmetic operators. Currently, arithmetic operators silently ignore all limit specifications after the first. Solution: Diagnose and fail with informative warning until nco690 implemented.
+nco689. bug: Multislabs (multiple limits on same dimension) fail in arithmetic operators. Currently, arithmetic operators silently ignore all limit specifications after the first. Solution: Diagnose and fail with informative warning until nco690 implemented.
         ncwa -O -a lat,lon -w area -d lat,30.,90. -d lon,345.,360. -d lon,0.,195. isccpd_0112_clm_landmask.nc foo4.nc
-nco690. Implement multislabs in arithmetic operators (no reason not to!)
-nco693. ncks regression for offset past end of file test
-	ncks -h -O -C -d time,0,1 -v time ~/nco/data/in.nc ~/foo.nc
-	ncks -C -H -s '%g' -C -d time,2, ~/foo.nc
-        ncks: ERROR User-specified dimension index range 2 <= time <= 1 does not fall within valid dimension index range 0 <= time <= 1
-        ncks behaves perfectly here. Unfortunately, the perl test script does not recognize the expected answer string as being valid
+nco690. ftr: Implement multislabs in arithmetic operators (no reason not to!)
 nco694. Change nco_bool to C99 standard bool as per Wikipedia?
-nco702. How to mix new ncwa behavior with -I wgt_msk_crd_var?
-nco705. Add lmn_nbr_wgt and DID_BROADCAST outputs to nco_var_cnf_dmn()?
-nco706. Add DID_REDUCE outputs to nco_var_avg_reduce()?
-nco709. Change wgt_brd_flg (may have wrong meaning)
+nco702. ncwa: How to mix new ncwa behavior with -I wgt_msk_crd_var?
+nco705. ncwa: Add lmn_nbr_wgt and DID_BROADCAST outputs to nco_var_cnf_dmn()?
+nco706. ncwa: Add DID_REDUCE outputs to nco_var_avg_reduce()?
+nco709. ncwa: Change wgt_brd_flg (may have wrong meaning)
 nco717. Averaging empty record variable creates an element in output!:
 	ncwa -O ~/nco/data/in_rec_zero.nc ~/foo.nc
 	ncwa -O -a lon ~/nco/data/in_rec_zero.nc ~/foo.nc
@@ -453,18 +344,18 @@ nco717. Averaging empty record variable creates an element in output!:
 	Hence averaging the file increases the data storage.
 	What to do?  Nothing.
 nco722. mpncwa: DDRA diagnostics should work in MPI mode, not just SMP mode
-nco725. Add attribute propagation regression test
-        ncap2 -v -O -s "cnv_CF_crd2=cnv_CF_crd" -s "lon2=lon(0)" -p ~/nco/data in.nc ~/foo.nc
-nco737. Add regression for regex'ing consecutive Q's?
+nco725. rgr: Add attribute propagation regression test
+        ncap2 -v -O -s 'cnv_CF_crd2=cnv_CF_crd' -s 'lon2=lon(0)' -p ~/nco/data in.nc ~/foo.nc
+nco737. rgr: Add regression for regex'ing consecutive Q's?
 	ncks -O -v 'Q[0-1][0-9]|2[0-3]' ~/nco/data/in.nc ~/foo.nc;ncks -H ~/foo.nc
 	ncks -O -v 'Q[0-9][0-9]$' ~/nco/data/in.nc ~/foo.nc;ncks -H ~/foo.nc
 nco738. nco_cnv_cf_cll_mth_add() CF cell methods
-nco744. Add option to eliminate degenerate dimensions in ncra (like ncwa -b)
-nco745. Add regression test for ncwa --rdd
+nco744. ncra: Add option to eliminate degenerate dimensions in ncra (like ncwa -b)
+nco745. rgr: Add regression test for ncwa --rdd
 nco747. Change lat to -45,45 and add lat_grd = -90,0,90 in in.cdl
-nco754. Make sure private/firstprivate aspects of ddra_info are correct
+nco754. thr: Make sure private/firstprivate aspects of ddra_info are correct
 nco755. Test timers on ESMF under openmp
-nco756. Make nco_ddra() thread-safe
+nco756. thr: Make nco_ddra() thread-safe
 nco757. ncbo bug: works with --mmr_drt, fails with --mmr_cln
 	ncwa -O -a time -p ~/nco/data in.nc ~/foo_avg.nc
 	ncbo --mmr_cln -O -D 1 ~/nco/data/in.nc ~/foo_avg.nc ~/foo.nc
@@ -472,7 +363,7 @@ nco757. ncbo bug: works with --mmr_drt, fails with --mmr_cln
 	valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncbo --mmr_cln -O -v one_dmn_rec_var ~/nco/data/in.nc ~/foo_avg.nc ~/foo.nc > ~/foo 2>&1
 nco757. Make sure above ncbo bug is not in ncflint
 nco759. Document --mmr_cln flag
-nco761. Merge timer srt/end calls to MPI codes
+nco761. mpi: Merge timer srt/end calls to MPI codes
 nco763. Access IPCC AR4 database via OPeNDAP: http://www-pcmdi.llnl.gov/software-portal/esg_data_portal/dapserver
 	Sample datasets look like:
         http://climate.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0/pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml.html
@@ -481,46 +372,33 @@ nco763. Access IPCC AR4 database via OPeNDAP: http://www-pcmdi.llnl.gov/software
 nco768. Change some common flags from toggles to hard-coded true/false
         to avoid weird behavior when toggle switches accidentally passed twice,
         e.g., ncks -O -O in.nc foo.nc
-nco772. ncpdq fails MPI regression tests on pbs, possibly others
-nco776. Minor, fixable memory leaks in ncecat, fix with valgrind
-nco777. ncra regression on ipcc/pathscale (only) w/w/o mmr_drt with > 1 thread.
-	May indicate problem with timer behavior in OpenMP code.
-	ncra -O -t 1 --mmr_drt -D 1 -v one_dmn_rec_var -p ~/nco/data in.nc in.nc ~/foo.nc # works fine
-	ncra -O -t 2 --mmr_drt -D 1 -v one_dmn_rec_var -p ~/nco/data in.nc in.nc ~/foo.nc # fails
-	cra: INFO omp_set_num_threads() used to set execution environment to spawn teams of 2 threads
-	ncra: CONVENTION File "Conventions" attribute is "CF-1.0"
-	ncra: TIMER Metadata setup and file layout before main loop took    0.00 s
-	ncra: INFO Input file 0 is /home/zender/nco/data/in.nc
-	ncra: INFO Input file 1 is /home/zender/nco/data/in.nc
-	ncra: INFO Moving /home/zender/foo.nc.pid7069.ncra.tmp to /home/zender/foo.nc...done
-	**** Segmentation fault!  Fault address: 0x20
-	ncra: TIMER Wallclock-elapsed time for command is    0.00 s
-nco778. ncrename should allow renaming dimensions to existing dimensions so long as dimension size does not change. Problem is that netCDF nc_rename_dim() disallows this.
+nco772. ncpdq: fails MPI regression tests on pbs, possibly others
+nco776. ncecat: Minor, fixable memory leaks, fix with valgrind
+nco778. ncrename: allow renaming dimensions to existing dimensions so long as dimension size does not change. Problem is that netCDF nc_rename_dim() disallows this.
 	ncks -O -v lev,lat_grd -p ~/nco/data in.nc ~/foo.nc
 	ncrename -O -d lev,lat_grd ~/foo.nc ~/foo.nc
-nco779. Add non-record stride checks to regression tests e.g.,
+nco779. rgr: Add non-record stride checks to regression tests e.g.,
 	ncks -O -v three_dmn_rec_var -d lon,,,2 -p ~/nco/data in.nc ~/foo.nc
 	ncrcat -O -v three_dmn_rec_var -d lon,,,2 -p ~/nco/data in.nc in.nc ~/foo.nc
 	ncks -C -v three_dmn_rec_var ~/foo.nc
-nco781. Add ncks option to suppress creating temporary output file in -A mode, simply copy input file first? Seems unlikely this will save time.
 nco784. Build NCO on NMI test lab http://nmi.cs.wisc.edu/
-nco789. Add regression test for behavior when _FillValue defined and missing_value not	      
+nco789. rgr: Add regression test for behavior when _FillValue defined and missing_value not	      
 	ncwa -O -a lon -v fll_val,mss_val ~/nco/data/in.nc ~/foo.nc
         ncks -H -C ~/foo.nc
 nco794. Automagically use missing_value when _FillValue not present
 nco796. pgCC does not support exception handling with codes compiled with OpenMP (-mp) switch so ncap2/antlr files must be built serially
 nco799. Extend -n 3,4,1 NINTAP switch to handle regular expressions
 nco800. Extend -n 3,4,1 NINTAP switch to -n 3,4,1,offset to work with CCSM patterns
-nco803. Link to UCSD proposal by Kraig Winters /data/zender/prp/prp_winters.pdf
-nco807. Merge ncra.c v.1.192-1.193 changes (per-file record limit checks) into mpncra.c
-nco808. Dave Allured request on 20070213 for ncea to resolve hyperslab indices for all dimensions on each file so this works:
-        ncea -d time,"2010-1-1 0:0:0","2020-12-31 0:0:0" run*.nc output.nc
-        ncea -O -d time,"2010-1-1 0:0:0","2020-12-31 0:0:0" ~/giss*.nc ~/output.nc
-	ncea -O -D 5 -d time,1.,5. -p ~/nco/data in.nc in.nc ~/foo.nc
+nco803. prp: Link to UCSD proposal by Kraig Winters /data/zender/prp/prp_winters.pdf
+nco807. mpi: Merge ncra.c v.1.192-1.193 changes (per-file record limit checks) into mpncra.c
+nco808. ftr: Dave Allured request on 20070213 for nces to resolve hyperslab indices for all dimensions on each file so this works:
+        nces -d time,"2010-1-1 0:0:0","2020-12-31 0:0:0" run*.nc output.nc
+        nces -O -d time,"2010-1-1 0:0:0","2020-12-31 0:0:0" ~/giss*.nc ~/output.nc
+	nces -O -D 5 -v one_dmn_rec_var -d time,1.,5. -p ~/nco/data in.nc in.nc ~/foo.nc
 nco809. Implement --quiet option to suppress WARNINGs and INFOs
-nco814. Add regression test for forgiving exclusion list handling
+nco814. rgr: Add regression test for forgiving exclusion list handling
         ncks -O -D 2 -x -v not_present ~/nco/data/in.nc ~/foo.nc
-nco816. Add regression tests for rmssdn when N=0, N=1, N=2
+nco816. rgr: Add regression tests for rmssdn when N=0, N=1, N=2
 	ncra -O -y rmssdn -v '^rec_var_flt_mss_val_flt_all.?' ~/nco/data/in.nc ~/foo.nc
 	ncks -H -m ~/foo.nc
 nco817. Document how to work with 1D/2D coordinate grids
@@ -535,18 +413,17 @@ nco822. ncap2 netCDF4 regressions with nco_bm.pl:
 	cd ~/nco/bm;./nco_bm.pl --fl_fmt=netcdf4 --regress --udpreport ncap2
 	ncap2 -O --fl_fmt=netcdf4 -D 5 -v -S ~/nco/data/ncap2.in ~/nco/data/in.nc ~/foo.nc # fails, causes ncap2 regression with nco_bm.pl
 	Script dies with:
-	ncap2: DEBUG ncap_def_ntl_scn(): i3 - defined in output.
-	ERROR: program exiting through nco_err_exit() which will now call abort()
-	nco_err_exit(): ERROR nco_enddef
-	HDF error
-	Aborted (core dumped)
-nco826. ncwa optimization: do not allocate tally when var_sz=var_avg since this this always indicates a no-op, e.g., removing a degenerate dimension.
+	ncap2: ERROR dimension lev is not in list of dimensions available to nco_var_fll()
+	ncap2: HINT This could be a symptom of TODO nco1045. Workaround is avoid use of append mode (i.e., -A switch) in ncap2.
+	ncap2: ERROR exiting through nco_exit() which will now call abort()
+	Abandon (core dumped)
+nco826. ncwa: optimization---do not allocate tally when var_sz=var_avg since this this always indicates a no-op, e.g., removing a degenerate dimension.
 nco828. ncks: returns file ID = 65536 = 2**16 on netCDF4 files: why?
 	ncks -O --fl_fmt=netcdf4 ~/nco/data/in.nc ~/nco/data/in_4.nc
         ncks -m ~/nco/data/in_4.nc
 	od -An -c -N4 ~/nco/data/in_4.nc
 nco834. Add atomic type string NC_STRING to nco_c++ get/put var
-nco835. ncks uint64_var(ULLONG_MAX) = int64_var(LLONG_MAX) (problem with libnetcdf4?) PBN4
+nco835. ncks: uint64_var(ULLONG_MAX) = int64_var(LLONG_MAX) (problem with libnetcdf4?) PBN4
 	ccc
 	ncks -v '.?_var$' ~/c++/foo.nc
 nco839. What, if anything, should NC_FILL_STRING be?
@@ -554,7 +431,7 @@ nco845. Add -Wno-switch to quiet GCC enum warnings on netCDF4 case labels?
 nco846. netCDF4: switch to long long array offsets everywhere? 
         e.g., can long tally hold > 2 GB array?
 nco847. switch sz, tally to type (unsigned long), perhaps size_t, and perhaps (unsigned long long int)
-nco848. Add regression to demonstrate breakage on variables with 2--4 GB elements
+nco848. rgr: Add regression to demonstrate breakage on variables with 2--4 GB elements
 nco853. Enable arithmetic for NC_BYTE and NC_UBYTE everywhere?
 nco854. Use NC_BYTE instead of NC_SHORT for logical in ncap2?
 nco855. nco_netcdf.c netCDF4 forward compatibility stubs generate beaucoups 'unused parameter' warnings (only when compiled with netCDF3)
@@ -564,7 +441,7 @@ nco865. Re-cast output variable to original type in ncbo.c (like in ncflint.c)?
         ncks -O -C -d time,0,3 -v rec_var_dbl_mss_val_dbl_pck -p ~/nco/data in.nc
 	ncks ~/foo.nc
 nco866. Why don't ncra and ncwa make NC_BYTE etc. as fix var in var_lst_dvd()?
-nco871. Add compression regression test
+nco871. rgr: Add compression regression test for compression
 	ncks -O --dfl_lvl=0 ~/nco/data/in.nc ~/foo.nc
 	ls -l ~/foo.nc
 	ncks -O --dfl_lvl=9 ~/nco/data/in.nc ~/foo.nc
@@ -595,32 +472,25 @@ nco885. ncpdq: netCDF4 problem with CAM datasets variable AERASM_v. AERASM_v doe
 	ncpdq -D 6 -4 -v AERASM_v -O sncpd05_ts_ANN.nc -p $DATA/anl_sncpd05 ~/foo_5.nc
 	nco_err_exit(): ERROR Short NCO-generated message (usually name of function that triggered error): nco_copy_att()
 	nco_err_exit(): ERROR Error code is -36. Translation into English with nc_strerror(-36) is "NetCDF: Invalid argument"
-nco886. Decide next project: SWAMP? paper on...ncap2? SWAMP? IPCC benchmarks?
+nco886. ppr: Decide next project: SWAMP? paper on...ncap2? SWAMP? IPCC benchmarks?
 nco891. dbn: fix lintian RPATH messages like
 	Binary /usr/bin/ncwa compiled with an RPATH of /usr/lib/nco
 	libtool error: libtool --finish /usr/lib
-nco895. udunits2 implement new API http://www.unidata.ucar.edu/software/udunits/udunits-2/udunits2lib.html
-	/bin/rm ~/obj/LINUX/nco_lmt.o;cd ~/nco/bld;make OPTS=D UDUNITS2=Y NETCDF4=Y allinone
-	ncks -O -D 0 -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' -s '%3.1e' ~/nco/data/in.nc
-nco900. Get UDUnits2 working with time coordinates:
-        ncks -O -D 0 -C -d time_udunits,'1999-12-08 12:00:0.0','1999-12-09 00:00:0.0' -p ~/nco/data in.nc ~/foo.nc
 nco901. mss_val in code and comments now (usually) refers to _FillValue (except in nco_mss_val.c). Change mss_val to fll_val?
 nco905. TKN2SNG technique for "_FillValue" adds extra quotes in nco.h but not c.c! The work-around is an extra function of global scope (nco_mss_val_sng_get()) that is worth getting rid of.
-nco906. Add regression test for DAP via THREDDS server:
+nco906. rgr: Add regression test for DAP via THREDDS server:
 	ncks -m http://eclipse.ncdc.noaa.gov:8080/thredds/dodsC/isccp-d1/2001/ISCCP.D1.1.GLOBAL.2001.01.01.0000.GPC
-nco907. doc: document new wget capabilities
-nco909. Does autoconf for netCDF4-enabled NCO require additional -lm flag?
 nco911. Periods in attribute names choke OPeNDAP (had to remove att_nm.dot):
 	ncks -O -D 7 -v var_nm.dot -p ~/nco/data dap_dot_bug.nc ~/foo.nc # works fine
 	ncks -O -D 7 -v var_nm.dot -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata dap_dot_bug.nc ~/foo.nc # borken
 	nco_err_exit(): ERROR Short NCO-generated message (usually name of function that triggered error): nco_copy_att()
 	nco_err_exit(): ERROR Error code is -43. Translation into English with nc_strerror(-43) is "Attribute not found"
-nco912. ncks: print '_' or '_FillValue' instead of numeric values a la ncdump?
+nco912. ncks: print '_' or '_FillValue' instead of numeric values à la ncdump?
 nco913. nco_cmp_get() fails on _AIX with different compiler
-nco915. GCC OpenMP support in configure.in
+nco915. GCC OpenMP support in configure.ac
 nco917. GCC OpenMP with autoconf
 nco919. 'make check' (i.e., nco_bm.pl) breaks when ncap2 disabled (i.e., --disable-nco++) reported by Tim Hoar
-nco920. Add ncwa (ncks?) capability to remove all degenerate dimensions --delete-degenerate-dimensions (ncl-talk 12/5/07) (assign to hmb?)
+nco920. Add ncwa (ncks?) capability to remove all degenerate dimensions --delete-degenerate-dimensions (ncl-talk 20071205) (assign to hmb?)
 nco922. ncbo with OpenMP on netCDF4 files fails (not with netCDF3 in.nc):
 	ncbo -O -t 1 -D 4 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc # works
 	ncbo -O -t 2 -D 4 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc # works
@@ -630,13 +500,11 @@ nco922. ncbo with OpenMP on netCDF4 files fails (not with netCDF3 in.nc):
 	ncbo -O -t 2 -D 4 -p ${HOME}/aca swnb.nc swnb.nc ~/foo.nc # fails
 nco923. OPTS=D and OPTS=R should not do -O4 optimization on nco++
 nco924. Document ncks --msa_usr_rdr
-nco929. drop ncap, or, rather, link it to ncap2, next release
-nco930. ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be preloaded: ignored.
+nco929. drop ncap, or, rather, link it to ncap2, next release ? 
 nco931. nco_c++ nc_put_var1_string wrapper currently kludged and untested
 nco932. ncwa and packed data: help forum 20080214: When using ncwa to calculate a weighted average from a packed file (NC_SHORT, scale_factor=0.1, _FillValue=32766), the data in the resulting file is in double precision. However, the _FillValue attribute is not changed to the double precision value (3276.6)....it is left at 32766. Shouldn't ncwa writeout the new _FillValue attribute?
-nco934. Add ncecat -M option to other operators?
-nco935. Make single-file operators (SFOs) default out.nc to in.nc
-nco937. dupload fails with "GPG signature is missing"
+nco934. Add ncecat -M option (CPY_GLB_METADA) to other operators?
+nco935. Make single-file operators (SFOs) default out.nc to in.nc ?
 nco938. ncks -m problem: 
 	cd ~/Desktop;ncks -m NCEP-NAM-CONUS_80km_best.ncd.nc
 	nco_err_exit(): ERROR Short NCO-generated message (usually name of function that triggered error): nco_inq_varid_flg()
@@ -648,26 +516,22 @@ nco941. ncra (now? when was regression?) tries to average NC_CHAR record variabl
   	ncra -O -v two_dmn_rec_var_sng ~/nco/data/in.nc ~/foo.nc;ncks -H ~/foo.nc
 	20080723: HMB kludged ncra to work for NC_CHAR
 	What about NC_STRING? that seems to be "handled" by ignoring it in nco_var_cnf_typ()...
-	What about other operators, e.g., ncea?
+	What about other operators, e.g., nces?
 	Is better fix to never promote/demote to/from NC_CHAR? (like NC_STRING?)
 	That would move fix from ncra.c to nco_var_cnf_typ()
 	Would that break ncpdq packing to NC_CHAR?
-nco943. Add regression test for 
+nco943. rgr: Add regression test for 
 	ncks -m -v cnv_CF_crd ~/nco/data/in.nc
-nco945. ncra problem with netcdf4 record mean of packed double with double missing values
+nco945. ncra problem with netCDF4 record mean of packed double with double missing values
 nco949. Make --no-clobber option for all operators
-nco950. Add --secret option to print secret/unsupported options
 nco953. ncatted: Add -v -C -c infrastructure to allow easy modification of attributes of variable lists, rather than all-or-nothing selections
 nco954. ncinsert functionality request posted to help forum 20081116
-nco960. Warn when attempted hyperslab on 2-D (or more) coordinates, e.g., https://sourceforge.net/forum/message.php?msg_id=6282324
-nco964. nco: fsync()?
-nco966. ncap2 failure on silt (and only silt!:
-        ncap2 -O -v -S /home/scapps/qscat/scripts/wnd_pfl/ncap2_wblpwr_truncated.nco /home/scapps/qscat/scripts/wnd_pfl/test.nc ~/out.nc
+nco960. Warn when attempted hyperslab on 2-D (or more) coordinates, e.g., https://sf.net/forum/message.php?msg_id=6282324
 nco969. nco: do not automatically try wget when DAP access fails ?
 nco970. nco: do not create really long paths with (especially failed) wget attempts
 nco971. wget: both following commands create and write mutilated directory
-	cd ~;ncks -M -R -p http://sand.ess.uci.edu/nco in.nc
-	cd ~;ncks -M -R http://sand.ess.uci.edu/nco/in.nc
+	cd ~;ncks -M -R -p http://dust.ess.uci.edu/nco in.nc
+	cd ~;ncks -M -R http://dust.ess.uci.edu/nco/in.nc
 	ls -lR ~/nco/in.n
 	ncks: INFO Retrieved files will be stored in directory ./nco/in.n
 	stores correctly in local directory but also creates ./nco/in.n
@@ -677,21 +541,14 @@ nco973. ncks: allow for printing "units" attributes stored as NC_STRINGs
 nco975. add NCO global attribute to output files like
        :NCO = "netCDF Operators version 1.1.1 (http://nco.sf.net)" ;
 nco976. clean-up mess caused by eliminating nco_dmn_lmt_mrg in ncra, ncecat, ncpdq, ncflint (but not (why?) ncap,ncbo,ncwa)!
-nco977. fix -d syntax spec or nco_lmt_prs() as per https://sourceforge.net/forum/message.php?msg_id=7486118
+nco977. fix -d syntax spec or nco_lmt_prs() as per https://sf.net/forum/message.php?msg_id=7486118 ?
 nco979. UDUnits1: time zone at end of user-specified limit string is ignored (bad)
         but time zone within units attribute of variable is parsed (good)
 	UDUnits2: handles time zone correctly in both locations (good)
 nco980. UDUnits: offsets/scalefactors in re-basing to handle differences between files like  "hours since 1965-010-01 12:00" and "minutes  since 1968-02-01 12:32"
-nco983. change default to netcdf3 64bit? or compile-time option to do so?
-nco984. remove makeinfo dependency trigger from nco configure build
+nco983. change default to netCDF3 64bit? or compile-time option to do so ?
 nco991. ncap2 functions to return all variable and dimension names
 nco995. chunking in ncap2
-nco996. ncap2 fails netCDF4 test:
-	ncap2 -O -4 -D 4 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc # fails
-	ncap2 -O    -D 4 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc # works
-nco997. Bug triggered by using stride argument when accessing a file through DAP protocol
-	ncks -O -F -D 9 -v weasdsfc -d time,100,110,5 http://nomad3.ncep.noaa.gov:9090/dods/reanalyses/reanalysis-2/6hr/flx/flx ~/foo.nc # Fails as of 20110114, old DAP server?
-	ncks -O -F -D 9 -v three_dmn_rec_var -d time,1,10,5 http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc ~/foo.nc # Works as of 20110114
 nco999. nco: replace a character array without RHS padding?
         ncks -v fl_nm ~/nco/data/in.nc
         ncap2 -O -s 'fl_nm(:)="01234567890123456789012345678901234567890123456789012345678901234567890123456789"' ~/nco/data/in.nc ~/foo.nc
@@ -701,7 +558,7 @@ nco999. nco: replace a character array without RHS padding?
 	ncap2 -O -s 'defdim("string_size",10);fl_nm2[$string_size]="0123456789"' ~/nco/data/in.nc ~/foo.nc
 	ncap2 -O -s 'fl_nm="new string"' ~/nco/data/in.nc ~/foo.nc
 	ncks -v fl_nm ~/foo.nc
-nco1000. build/test mpi executables again
+nco1000. mpi: build/test mpi executables again
 	 cd ~/nco/bld;make MPI=Y
 nco1001. ncpdq packing _FillValue
 	 cat > ~/foo.cdl << EOF
@@ -728,29 +585,78 @@ nco1010. nco: support degenerate auxiliary hyperslabs. Related to nco1007 posted
 	 ncks -H ~/foo.nc
 nco1012. nco: nco_aed_prc() is called (too?) often (by nco_att_cpy()) to copy _FillValue attributes
 	 ncks -O -D 5 ~/nco/data/in.nc ~/foo.nc
-nco1014. nco: option to eliminate ncap2 intermediate tmp file writing
-	 ncap2 -s 'time=time+999999' ~/nco/data/in.nc
-nco1015. nco: eliminate ncap2 -A option from documentation
-nco1016. nco: re-test TODO nco997 with netcdf 4.1.2
 nco1020. nco: re-base record bounds variables (e.g., time_bnds) in ncrcat
 nco1021. nco: use owner axes for printing CF-time in bounds attributes 
-nco1022. nco: ncrcat core-dumps with double-free() error when concatenating record dimensions with non-time units
-	 ncrcat -D 3 -O -h ~/foo_1.nc ~/foo_2.nc ~/foo.nc
 nco1023. nco: ncap2 overwrites arrays with scalars (and changes type!) without asking, e.g.,
 	 ncap2 -O -v -s 'one_dmn_rec_var=0' ~/nco/data/in.nc ~/foo.nc
 	 ncks -v one_dmn_rec_var -C -m -H ~/foo.nc
-nco222.  nco: Warn when ncea/ncra operate on scaled variables ("Results will be meaningless if scale_factor and add_offset are not identical in each file")
+nco222.  nco: Warn when nces/ncra operate on scaled variables ("Results will be meaningless if scale_factor and add_offset are not identical in each file")
 nco1025. nco: ncrcat/ncecat warn/die when concatenating files with different scale factors
-nco1026. ncwa weighted average bug reported by Lori Sentman
+nco1026. ncwa weighted average bug reported by Lori Sentman, then by Mark Flanner
 	 ncwa -O -C -w area -a lat -v area ~/nco/data/in.nc ~/foo.nc # 10
 	 ncwa -O -C -w area_asm -a lat -v area ~/nco/data/in.nc ~/foo.nc # 10
 	 ncwa -O -C -w area_asm -a lat -v area2 ~/nco/data/in.nc ~/foo.nc # 10
 	 ncks -H -C -v area -m ~/foo.nc
-nco1027. ncrcat check md5sum of data before/after concatenation ? would have prevented corruption by NOFILL bug
 nco1028. ncap2: create maintainable list of reserved words and put in manual
-nco1030. nco: ncpdq unpack coordinate variables! (by default don't pack them though)
-nco1031. ncap2: overload array() so it works for multi-dimensional variables?
-nco1032. 
+nco1033. ncrcat: warn when first file has more variables than subsequent files
+nco1035. rewrite nco_var_cnf_typ() to use default rather than truncated missing values
+nco1036. ncks: implement rew's copy workaround in nco_cpy_var_val()
+nco1037. nco: support NaN's in math, comparison, averagers following template in NC_FLOAT in nco_var_avg() using isfinite()
+         ncwa -O -v nan_arr ~/nco/data/in.nc ~/foo.nc;ncks -C -m -H -v nan_arr ~/foo.nc
+         ncatted -O -D 3 -a _FillValue,nan_arr,o,f,1.0e36 ~/nco/data/in.nc ~/foo.nc;ncks -C -m -H -v nan_arr ~/foo.nc
+         ncks -C -H -v nan_arr,nan_scl ~/nco/data/in.nc
+nco1041. nc__open() with NC_SIZEHINT_DEFAULT for MM3 problems or general switch?
+nco1043. Modify nco.spec to build on RHEL and Fedora
+nco1048. ncrcat Generates warnings like "ERROR: Conversion between user specified unit "days" and file units "" is meaningless" test case in crr.txt
+nco1053. nco: ncap2 rgr 10 Casting variable with same name as dimension (failure expected on netcdf4 ncap81) works for Henry not me. OS version related? e.g., app-armor-triggered? 
+	 ncap2 -O -C -v -s 'defdim("a",3);defdim("b",4); a[$a,$b]=10;c=a(1,1);' ~/nco/data/in.nc ~/foo.nc
+nco1054. nco: ncap2 rgr 11 Casting variable with a single dim of sz=1. works for Henry not me. OS version related? e.g., app-armor-triggered? 
+	 ncap2 -O -C -v -s 'defdim("a",1);b[$a]=10;c=b(0:0);' ~/nco/data/in.nc ~/foo.nc
+nco1014. nco: option to eliminate ncap2 intermediate tmp file writing
+	 ncap2 -s 'time=time+999999' ~/nco/data/in.nc
+nco1058. ncap2: allow new variables within where() statement
+	 ncap2 -v -O -s 'valid=0*time;where(time<7) valid=time;' ~/nco/data/in.nc ~/foo.nc # works
+	 ncap2 -v -O -s 'valid=0*time;time2=time;where(time2<7) valid=time;' ~/nco/data/in.nc ~/foo.nc # fails
+nco1059. nco: ncatted keep type same by default when modifying/overwriting attribute
+nco1063. use '--with-nc-config=path' in configure when possible (rich signell idea) 
+nco1065. ncra2.c move input_complete break to precede record loop but remember to close open filehandles
+nco1067. stat() fails on ~30 GB file on windows? fix workaround
+nco1068. nco: optimize so ncra writes straight to output when drn==1, MRO=Yes (i.e., no nrm) maybe not, what about rms? verify
+	 ncra2 -O -C -d time,0,,1,1 --mro -v time -p ~/nco/data in.nc in.nc ~/foo.nc # 
+nco1070. nco: rx add windows equivalent to variable wildcarding regex.h
+nco1071. nco: rx add windows equivalent to filename expansion (globbing) 
+nco1072. nco: clang breaks (gcc is fine) on ncra rgr #20 record average of cell-based geodesic data
+	 Problem also that ddd does not work with clang. Try qt debugger?
+	 ncra -D 5 -O -X 0.,180.,-30.,30. -v gds_3dvar -p ~/nco/data in.nc ~/foo.nc
+	 ncks -C -H -s '%8.1f' -v gds_3dvar ~/foo.nc
+nco1074. nco: wget: add -p option to enable clobber?
+nco1076. ncpdq: change number of dimensions by unrolling 
+	 ncpdq --unroll lat,lon # Unroll lat and lon in all multi-dimensional (R > 1) arrays
+nco1077. wnd: utilize netCDF CMake for linking so DAP/UDUNITS support is automatic
+nco1079. ncap2: add option to return index of max/min/etc. kevin raeder suggestion
+nco1084. ncks feature: allow multiple specifications of mk_rec_dmn and fix_rec_dmn
+nco1093. ncks: print attribute function lynnes (NB: windows does not use filters)
+	 ncks -v var_lst -a att_lst (--abc=abc_md  --alphabetize=abc_md) in.nc
+nco1097. ncatted: rx attributes lynnes and 1 other 20130702
+nco1094. ncks: print statistics function lynnes (NB: windows does not use filters)
+nco1095. ncap2: user-defined functions (UDFs) lynnes
+nco1096. ncecat: --playnice, recognize, e.g., "latitude" variants lynnes
+nco1099. ncflint: make following statement true
+A. ncflint now always works when input files are interchanged, i.e.,
+   (ncflint -w 0.5 fl_1.nc fl_2.nc) = (ncflint -w 0.5 fl_2.nc fl_1.nc).
+   Formerly, ncflint broadcast variables in fl_2 to match the rank of
+   variables in fl_1 when necessary, but would fail rather than 
+   broadcast in the opposite direction. Hence one could interpolate
+   zonal averages, e.g., to full fields but not the reverse. Now
+   ncflint broadcasts variables both ways. If v1 is larger rank in
+   fl_1 than in fl_2 then both these work:
+   ncflint -v v1 -w 0.5 fl_1.nc fl_2.nc out.nc # Now works too!
+   ncflint -v v1 -w 0.5 fl_2.nc fl_1.nc out.nc # Always worked
+nco1102. ncatted handle arrays of NC_STRINGs with embedded delimiters
+	 ncatted -D 5 -O -a new_string_att,att_var,c,sng,"list","of","str,ings" ~/nco/data/in_4.nc ~/foo.nc
+nco1104. ncrename and ncatted copy through API with --hdf4
+nco1106. 
+
 qrk
 ************************************************************************
 End ncoXXX TODOs
@@ -759,6 +665,18 @@ End ncoXXX TODOs
 ************************************************************************
 Begin bug examples
 ************************************************************************
+Sent 20120709:
+What I find is that the first command below succeeds and the second fails:
+
+ncap2 -v -O -s 'valid=0*time;where(time<  7) valid=time;' \
+~/nco/data/in.nc ~/foo.nc # works
+ncap2 -v -O -s 'valid=0*time;time2=time;where(time2<  7) valid=time;' \
+~/nco/data/in.nc ~/foo.nc # fails
+
+Can you please verify this and explain why the second command fails?
+Is it not possible to use "new" variables in the masking condition
+for the where() statement?
+
 Sent 20120209:
 Hi Henry,
 
@@ -814,8 +732,8 @@ vg1. ncap
    valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncap2 -O -D 1 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc > ~/foo 2>&1
 vg2. ncbo
    valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncbo -t 2 -O -C -d lon,1 -p ${HOME}/nco/data -l /tmp in.nc in.nc ~/foo.nc > ~/foo 2>&1
-vg3. ncea
-   valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncea -t 2 -O -C -D 3 -d lon,1 -n 3,4,1 -v one -p ${HOME}/nco/data -l ${HOME}/nco/data h0001.nc ~/foo.nc > ~/foo 2>&1
+vg3. nces
+   valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck nces -t 2 -O -C -D 3 -d lon,1 -n 3,4,1 -v one -p ${HOME}/nco/data -l ${HOME}/nco/data h0001.nc ~/foo.nc > ~/foo 2>&1
 vg4. ncecat
    valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncecat -t 2 -O -C -D 3 -d lon,1 -n 3,4,1 -p ${HOME}/nco/data -l ${HOME}/nco/data h0001.nc ~/foo.nc > ~/foo 2>&1
 vg5. ncflint
@@ -859,8 +777,8 @@ Status 20050920:
    mpirun -np 3 /usr/bin/valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck mpirun -np 3 ${MY_BIN_DIR}/mpncbo -O -D 3 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
 1. mpncbo
    mpirun -np 3 ${MY_BIN_DIR}/mpncbo -O -D 3 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
-2. mpncea
-   mpirun -np 3 ${MY_BIN_DIR}/mpncea -O -D 3 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
+2. mpnces
+   mpirun -np 3 ${MY_BIN_DIR}/mpnces -O -D 3 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
 3. mpncecat
    mpirun -np 3 ${MY_BIN_DIR}/mpncecat -O -D 3 -p ${HOME}/nco/data in.nc in.nc ~/foo.nc > ~/foo 2>&1
 4. mpncpdq
@@ -974,7 +892,7 @@ ncap15. Link to GSL functions, especially gsl_sf_* (special functions)
 ncap16. Get ncap build working with pure_parser turned off so lex/yacc builds work
 ncap17. Start in console mode if no script and no output file specified, e.g., nco> 
 ncap19. Make all binary operators handle ordering of operands consistently, e.g., divide(1,2)=1/2 not 2/1
-ncap20. Print out contents of each non-comment statement when dbg_lvl==1
+ncap20. Print out contents of each non-comment statement when nco_dbg_lvl==1
 ncap21. Add two-argument functions like fmodf to ncap_sym_init() (using va_args?)
 ncap25. Turn arbitrarily fixed size array tokens NCAP_ATT_LST_NBR_MAX, NCAP_SPT_NBR_MAX into dynamically allocatable arrays
 ncap26. Make sym_tbl_nbr dynamic by implementing sym_add(), sym_rm() functions or linked list
@@ -1019,8 +937,9 @@ ncap71. Remove erf and gamma functions from AIX build
 ncap72. Stop linking to -lC on AIX. Get all float math functions by casting double versions
 ncap79. make abs() synonym for fabs() and pow() and ** synonyms for ^
 ncap80. ncap2+openmp+netCDF4 - script only works with threads>1 if there are no atts in input file
-ncap81  the script 'defdim("a",3);defdim("b",4);a[$a,$b]=10;' works on netCDF3 not netCDF4. Known bug with netCDF4. (Why? what causes it?) 
-ncap82. 
+ncap81. script 'defdim("a",3);defdim("b",4);a[$a,$b]=10;' works on netCDF3 not netCDF4. Known bug with netCDF4. (Why? what causes it?) 
+ncap82. Unable to average single/multi dimensional var of total size 1 var in ncap2 
+e.g defdim("X",10);defdim("Y",1); m[X,Y]=10; m.avg();- fails with seg fault  
 ************************************************************************
 End ncapXXX TODOs
 ************************************************************************
@@ -1034,7 +953,7 @@ bld23. Implement ncra i18n support I18N with autotools: Add .po files, update do
 bld30. Search for libstdc++ with AIX/DODS/GCC breaks NCO build
 bld32. Why have --enable-shared and --enable-static both default true? override one?
 bld33. Use PACKAGE_BUGREPORT, PACKAGE_NAME, PACKAGE_STRING, PACKAGE_TARNAME, PACKAGE_VERSION?
-bld35. Add pgcc, pgCC switches to configure.in 
+bld35. Add pgcc, pgCC switches to configure.ac 
 bld36. Improve precision/wording of nco_ctl.c tokens on shared/static libraries
 bld37. Ensure C99 used by compilers with AX_CFLAGS_SUN_OPTION AX_CFLAGS_HPUX_OPTION AX_CFLAGS_AIX_OPTION AX_CFLAGS_IRIX_OPTION
 bld38. Use OPeNDAP opendap-config script to ease build process, e.g., `opendap-config --cxx --cflags --libs` -o sample sample.c
@@ -1046,12 +965,12 @@ bld41. Add configure check for libssl functionality, if not found (Fedora) to ex
 bld42. Adopt orphaned Debian NCO http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=273322
 bld43. Implement Martin Schmidt's suggestion for AIX autoconf builds posted to developer's forum 20050201: {$CC} is not tested for xlc* but for (arbitrary_path/xlc*)
 bld44. Add support for autopackage format? http://www.wildgardenseed.com/apkg/
-bld45. Replace ENABLE_LARGEFILE with test for 64-bit offset support (i.e., netCDF 3.6) in configure.in and nco_ctl.c
+bld45. Replace ENABLE_LARGEFILE with test for 64-bit offset support (i.e., netCDF 3.6) in configure.ac and nco_ctl.c
 bld47. Add regression test for 64bit file format capability
 bld61. Verify netCDF4 benchmarks work for Ed Hartnett
 bld70. hjm nco_c++ on Mac OS X: Get "make check" working (add -lstdc++, remove -lnco)
 bld74. hjm Do not pass -std=c99 unless GCC=gcc rather than g++
-bld76. Add SMP support switches to configure.in for pathcc, pgicc, icc
+bld76. Add SMP support switches to configure.ac for pathcc, pgicc, icc
 bld77. Make sure C99 switches like -std=c99 do not get passed to CXX
 bld78. Fix CXXFLAGS for icc enable-custom-optimize
 bld79. 
diff --git a/doc/VERSION b/doc/VERSION
index 5ceafe7..b7f7949 100644
--- a/doc/VERSION
+++ b/doc/VERSION
@@ -1 +1 @@
-4.0.9
\ No newline at end of file
+4.3.9
\ No newline at end of file
diff --git a/doc/beta.txt b/doc/beta.txt
index c64e862..67532bd 100644
--- a/doc/beta.txt
+++ b/doc/beta.txt
@@ -9,9 +9,9 @@ releases. New features are built into pre-release .deb packages as the
 features are introduced.  Once an (arbritrary) number of new features
 seems stable, we simply announce that the current pre-release code is
 the official (stable) release code. For example, .deb packages with
-the 4.0.9 release name have been at the expected location
+the 4.2.5 release name have been at the expected location
 
-http://nco.sourceforge.net/src/nco_4.0.9-1_amd64.deb
+http://nco.sf.net/src/nco_4.2.5-1_amd64.deb
 
 for many months, but the NCO homepage for binary package download
 only points to this location once the release is official. Until then,
@@ -19,7 +19,7 @@ they are rebuilt and replaced as each new feature is added. When the
 release is official, the package is frozen and a package with the next 
 version number 
 
-http://nco.sourceforge.net/src/nco_4.0.9-1_amd64.deb
+http://nco.sf.net/src/nco_4.2.5-1_amd64.deb
 
 is created. This is announced once it stabilizes a few months later. 
 And so on. With judicious use of dpkg, Debian/Ubuntu users can easily 
@@ -27,14 +27,14 @@ track NCO feature development more closely than official releases.
 Just remove your existing NCO package and replace it with the latest
 (unannounced) package that has the feature you want with, e.g., 
 
-wget http://nco.sourceforge.net/src/nco_4.0.9-1_amd64.deb .
+wget http://nco.sf.net/src/nco_4.2.5-1_amd64.deb .
 sudo dpkg --remove nco
-sudo dpkg --install nco_4.0.9-1_*.deb
+sudo dpkg --install nco_4.2.5-1_*.deb
 
 or, for AIX,
 
-wget http://nco.sourceforge.net/src/nco-4.0.9.aix53.tar.gz .
-tar xvzf nco-4.0.9.aix53.tar.gz .
+wget http://nco.sf.net/src/nco-4.2.5.aix53.tar.gz .
+tar xvzf nco-4.2.5.aix53.tar.gz .
 
 Caveats: 
 1. .debs for amd64 (my development machine) are available early. Savvy
diff --git a/doc/debian.txt b/doc/debian.txt
index 2668981..eb4e7c3 100644
--- a/doc/debian.txt
+++ b/doc/debian.txt
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/nco/nco/doc/debian.txt,v 1.169 2012/02/14 05:39:03 zender Exp $ -*-text-*-
+# $Header: /cvsroot/nco/nco/doc/debian.txt,v 1.197 2013/11/13 20:57:02 zender Exp $ -*-text-*-
 
 # Purpose: Debian information for NCO netCDF Operators project
 # Notes describe procedure to manipulate Debian-specific distribution
@@ -10,8 +10,8 @@ wget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1.orig.tar.gz
 wget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1-0.1.diff.gz
 dpkg-source -x netcdf_3.6.1-0.1.dsc
 
-Debian:	    http://packages.debian.org/unstable/math/nco.html
-Gentoo:	    http://gentoo-stable.iq-computing.de/browse?type=version&category=app-sci&package=nco&version=2.2.0
+Debian: http://packages.debian.org/unstable/math/nco.html
+Gentoo: http://gentoo-stable.iq-computing.de/browse?type=version&category=app-sci&package=nco&version=2.2.0
 
 Debian New Maintainer's Guide (Rod05) is Bible for packaging .deb's: 
 /data/zender/tmp/debian.pdf
@@ -29,19 +29,19 @@ apt-get install dh-make debhelper devscripts fakeroot gnupg debian-policy develo
 
 2. Debian build procedure recommends placing entire package source in
    subdirectory of main package. 
-   For starters, we wish to create .debs of tagged releases, e.g., nco-4.0.9
-   First we create a clean source distribution of nco and place it in nco-4.0.9
-   Once automated, we will use cvs co -rnco-4_0_9 to get source
+   For starters, we wish to create .debs of tagged releases, e.g., nco-4.3.9
+   First we create a clean source distribution of nco and place it in nco-4.3.9
+   Once automated, we will use cvs co -rnco-4_3_9 to get source
    Until we know what is necessary, however, we just copy a snapshot
    
    2.1 Clean all build files from development directory
 
 cd ~/nco;make distclean;cd bld;make clean;cd ~
 tar cvzf ./nco/nco.tar.gz ./nco/*
-cd ~/nco;tar xvzf nco.tar.gz;mv nco nco-4.0.9
-/bin/rm nco.tar.gz;tar cvzf nco-4.0.9.tar.gz ./nco-4.0.9/*
-cd ~/nco/nco-4.0.9
-dh_make -e zender at uci.edu -f ../nco-4.0.9.tar.gz
+cd ~/nco;tar xvzf nco.tar.gz;mv nco nco-4.3.9
+/bin/rm nco.tar.gz;tar cvzf nco-4.3.9.tar.gz ./nco-4.3.9/*
+cd ~/nco/nco-4.3.9
+dh_make -e zender at uci.edu -f ../nco-4.3.9.tar.gz
 
     2.2 The preceding steps created template debian files for a .deb,
     Those files now reside in ~/nco/debian.
@@ -56,7 +56,7 @@ dh_make -e zender at uci.edu -f ../nco-4.0.9.tar.gz
    from previous build
 
    cd ~/nco;/bin/rm *.gz
-   cd ~/nco/nco-4.0.9
+   cd ~/nco/nco-4.3.9
    dpkg-buildpackage -rfakeroot > foo 2>&1
    dpkg-buildpackage -rsudo > foo 2>&1
 
@@ -85,12 +85,12 @@ patch -p0 < nco_X.Y.Z-3.diff   # Patch destination with Debian diff
    make tags
 # Put cute version-specific string in nco_ctl.c:nco_nmn_get()
 # Install correct version numbers before updating Debian
-# tags-query replace 4_0_9 with X_Y_Z+1
-# tags-query replace 4.0.9 with X.Y.Z+1
+# tags-query replace 4_3_9 with X_Y_Z+1
+# tags-query replace 4.3.9 with X.Y.Z+1
 # If tags-query replace does not work, be sure to manually change
-# versions in configure.in, debian/files, doc/ANNOUNCE, doc/debian.txt,
+# versions in configure.ac, debian/files, doc/ANNOUNCE, doc/debian.txt,
 # doc/index.shtml, doc/nco.texi, bld/nco_dst.pl, doc/VERSION 
-   cd ~/nco/debian;dch -b --force-distribution --distribution=unstable -v 4.0.9-1 # Update changelog (-b forces this version number)
+   cd ~/nco/debian;dch -b --force-distribution --distribution=unstable -v 4.3.9-1 # Update changelog (-b forces this version number)
    emacs ~/nco/bld/nco.spec # Update changelog
 # For unknown reason rules file may lose its executable bit
    chmod a+x ~/nco/debian/rules
@@ -98,20 +98,22 @@ patch -p0 < nco_X.Y.Z-3.diff   # Patch destination with Debian diff
    cd ~/nco;aclocal;autoheader;automake --foreign;autoconf
 # Save all files in emacs before tagging
 # Tag CVS code after changing files in ~/nco/debian
-   cd ~/nco;cvs commit -m "Preparing nco-4.0.9 release";cvs tag -c nco-4_0_9
-   ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4_0_9
+   cd ~/nco;cvs commit -m "Preparing nco-4.3.9 release";cvs tag -c nco-4_3_9
+   ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4_3_9
+# Upload tarball to SF https://sourceforge.net/projects/nco/files 
+   cd;scp dust.ess.uci.edu:/var/www/html/nco/src/nco-4.3.9.tar.gz .
 
 7. Ubuntu PPA
 https://help.launchpad.net/Packaging/PPA
-dput NCO nco_4.0.9-2~ppa1_source.changes
+dput NCO nco_4.3.9-2~ppa1_source.changes
 sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com
 
 # Location of build diagnostics for mentors to help 
-http://dust.ess.uci.edu/nco/src/nco_4.0.9-1.dpkg-buildpackage.txt
-http://dust.ess.uci.edu/nco/src/nco_4.0.9-1.dsc
-http://dust.ess.uci.edu/nco/src/nco_4.0.9-1_i386.changes
-http://dust.ess.uci.edu/nco/src/nco_4.0.9-1_i386.deb
-http://dust.ess.uci.edu/nco/src/nco_4.0.9.orig.tar.gz
+http://dust.ess.uci.edu/nco/src/nco_4.3.9-1.dpkg-buildpackage.txt
+http://dust.ess.uci.edu/nco/src/nco_4.3.9-1.dsc
+http://dust.ess.uci.edu/nco/src/nco_4.3.9-1_i386.changes
+http://dust.ess.uci.edu/nco/src/nco_4.3.9-1_i386.deb
+http://dust.ess.uci.edu/nco/src/nco_4.3.9.orig.tar.gz
 
 # Becoming a Debian developer
 http://www.debian.org/devel/join/newmaint
@@ -139,6 +141,8 @@ etch Debian 4.0
 lenny Debian 5.0
 squeeze Debian 6.0
 
+# All NCO bugs
+http://bugs.debian.org/nco
 # NCO orphan/ITA bug
 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=273322
 # netCDF orphan/ITA bug
@@ -159,33 +163,35 @@ Matej Vela <vela at debian.org>, Daniel Baumann <daniel at debian.org>, Warren Turkal
 # New build system #1
 # This builds NCO with debian packages, and includes netCDF4, DAP, and UDUnits2 support (?)
 # Non-native debian builds Rod05 p. 46
-# sudo aptitude install antlr bison flex gsl-bin libgsl0-dev libantlr-dev netcdf-bin libnetcdf6 libnetcdf-dev texinfo libcurl4-gnutls-dev libexpat1-dev libxml2-dev udunits-bin libudunits2-0 libudunits2-dev
+# Set path to avoid shared library conflicts between /usr and /usr/local
+# export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/X11R6/lib
+# sudo aptitude install antlr bison flex gsl-bin libgsl0-dev libantlr-dev netcdf-bin libnetcdfc7 libnetcdf-dev texinfo libcurl4-gnutls-dev libexpat1-dev libxml2-dev udunits-bin libudunits2-0 libudunits2-dev
 cd ~/nco;cvc
-sudo /bin/rm -rf ${DATA}/nco-4.0.9 ${DATA}/nco_4.0.9* ${DATA}/debian # Cleanup last build. sudo necessary for removal because dpkg-buildpackage uses sudo?
-# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4_0_9-1 -d nco-4.0.9 nco # Export based on tag
-cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -d nco-4.0.9 nco # Export most recent
-tar cvzf ./nco_4.0.9.orig.tar.gz --exclude='nco-4.0.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.0.9 
-/bin/rm -rf ${DATA}/nco-4.0.9 # Remove cvs-exported directory
-tar xvzf ./nco_4.0.9.orig.tar.gz # Untar to get directory without excluded files
-mkdir -p ${DATA}/nco-4.0.9/debian/source;cd ~/nco/debian;/bin/cp changelog compat control convert copyright doc-base files info rules ${DATA}/nco-4.0.9/debian;cd ~/nco/debian/source;/bin/cp format ${DATA}/nco-4.0.9/debian/source # Replace debian directory with _CURRENT_ (main trunk) settings
+sudo /bin/rm -rf ${DATA}/nco-4.3.9 ${DATA}/nco_4.3.9* ${DATA}/debian # Cleanup last build. sudo necessary for removal because dpkg-buildpackage uses sudo?
+# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4_3_9-1 -d nco-4.3.9 nco # Export based on tag
+cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -d nco-4.3.9 nco # Export most recent
+tar cvzf ./nco_4.3.9.orig.tar.gz --exclude='nco-4.3.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.3.9 
+/bin/rm -rf ${DATA}/nco-4.3.9 # Remove cvs-exported directory
+tar xvzf ./nco_4.3.9.orig.tar.gz # Untar to get directory without excluded files
+mkdir -p ${DATA}/nco-4.3.9/debian/source;cd ~/nco/debian;/bin/cp changelog compat control convert copyright doc-base files info rules ${DATA}/nco-4.3.9/debian;cd ~/nco/debian/source;/bin/cp format ${DATA}/nco-4.3.9/debian/source # Replace debian directory with _CURRENT_ (main trunk) settings
 #export DEB_BUILD_OPTIONS='disable-dap-netcdf disable-netcdf4 disable-udunits2'; # Disable optional packages based on available Debian support
-#cd ${DATA}/nco-4.0.9;dpkg-buildpackage -rsudo -uc -us > ~/foo.nco 2>&1 # -uc -us: Do not sign changes or source files
-#cd ${DATA}/nco-4.0.9;dpkg-buildpackage -rsudo -sa > ~/foo.nco 2>&1 # -sa: Include _orig.tar.gz in .changes 
-cd ${DATA}/nco-4.0.9;dpkg-buildpackage -rsudo > ~/foo.nco 2>&1
+#cd ${DATA}/nco-4.3.9;dpkg-buildpackage -rsudo -uc -us > ~/foo.nco 2>&1 # -uc -us: Do not sign changes or source files
+#cd ${DATA}/nco-4.3.9;dpkg-buildpackage -rsudo -sa > ~/foo.nco 2>&1 # -sa: Include _orig.tar.gz in .changes 
+cd ${DATA}/nco-4.3.9;dpkg-buildpackage -rsudo > ~/foo.nco 2>&1
 sudo dpkg --remove nco
-sudo dpkg --install ${DATA}/nco_4.0.9-1_*.deb
+sudo dpkg --install ${DATA}/nco_4.3.9-1_*.deb
 cd ~/nco/bld;MY_BIN_DIR=/usr/bin ../bm/nco_bm.pl --regress
 # http://lintian.debian.org/full/zender@uci.edu.html
-lintian ${DATA}/nco_4.0.9-1_*.deb
-ls -l ${DATA}/nco_4.0.9*
+lintian ${DATA}/nco_4.3.9-1_*.deb
+ls -l ${DATA}/nco_4.3.9*
 m ~/foo.nco
 # Upload Ubuntu (rather than Debian) packages to websites
-scp ${DATA}/nco_4.0.9* dust.ess.uci.edu:/var/www/html/nco/src
-scp ${DATA}/nco_4.0.9* zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+scp ${DATA}/nco_4.3.9* dust.ess.uci.edu:/var/www/html/nco/src
+scp ${DATA}/nco_4.3.9* zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 # NB: Make sure RPMs build before uploading to debian, since changing
 # Debian versions is a PITA
 # NB: Only upload pbuilder Debian Sid (not personal Ubuntu) .deb builds to Debian mentors
-# cd ${DATA};dupload -t mentors nco_4.0.9-1_*.changes
+# cd ${DATA};dupload -t mentors nco_4.3.9-1_*.changes
 bsrc # Reset shell environment for regular development
 
 # New build system #2
@@ -193,57 +199,58 @@ bsrc # Reset shell environment for regular development
 # This builds .debs for submission to Debian Sid and ultimately Ubuntu
 # Configuration in ~/.pbuilderrc or /etc/pbuilderrc
 # https://wiki.ubuntu.com/PbuilderHowto
-# DIST=sid sudo pbuilder create
+# sudo aptitude install debian-archive-keyring # Avoid "Release signed by unknown key" error
+# sudo DIST=sid pbuilder create --debootstrapopts --keyring=/usr/share/keyrings/debian-archive-keyring.gpg
 DIST=sid sudo pbuilder update # Update chroot before building package in it
 # dget http://ftp.debian.org/debian/pool/main/n/nco/nco_3.9.0-1.dsc
 # dget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1-1.dsc
 # apt-get source nco # Get package source
-sudo /bin/rm /var/cache/pbuilder/result/nco_4.0.9* # Cleanup prior build
+sudo /bin/rm /var/cache/pbuilder/result/nco_4.3.9* # Cleanup prior build
 # To pass DEB_BUILD_OPTIONS to pbuilder while using sudo, one must first
 # modify sudoers with visudo to prevent sudo from resetting environment
 #export DEB_BUILD_OPTIONS='disable-dap-netcdf disable-netcdf4 disable-udunits2'; # Disable optional packages based on available Debian support
-cd ${DATA};DIST=sid sudo pbuilder build nco_4.0.9-1.dsc > ~/foo.nco.pbuilder 2>&1
-cd /var/cache/pbuilder/result;debsign -k6F635D10 nco_4.0.9-1_*.changes
-lintian /var/cache/pbuilder/result/nco_4.0.9-1_*.deb
+cd ${DATA};DIST=sid sudo pbuilder build nco_4.3.9-1.dsc > ~/foo.nco.pbuilder 2>&1
+cd /var/cache/pbuilder/result;debsign -k6F635D10 nco_4.3.9-1_*.changes
+lintian /var/cache/pbuilder/result/nco_4.3.9-1_*.deb
 sudo dpkg --remove nco
-sudo dpkg --install /var/cache/pbuilder/result/nco_4.0.9-1_*.deb
+sudo dpkg --install /var/cache/pbuilder/result/nco_4.3.9-1_*.deb
 cd ~/nco/bld;MY_BIN_DIR=/usr/bin ../bm/nco_bm.pl --regress
 # NB: Upload pbuilder Debian Sid packages to Debian mentors, but not
 # to personal or NCO websites since most people use Ubuntu not Debian
 # NB: Debian versions are a PITA, ensure RPMs build before uploading to Debian
-cd /var/cache/pbuilder/result;dupload -t mentors nco_4.0.9-1_*.changes
+cd /var/cache/pbuilder/result;dupload -t mentors nco_4.3.9-1_*.changes
 
 # RPM builds as root
 export rpm_root='/usr/src/redhat'
 # export sudo_sng='' # sudo not-necessary when builing in user directories
 export sudo_sng='sudo' # sudo necessary when building in system directories
 cd ~/nco;cvc;cvu
-/bin/rm -rf ${DATA}/nco-4.0.9 ${DATA}/nco-4.0.9* # Cleanup last build
+/bin/rm -rf ${DATA}/nco-4.3.9 ${DATA}/nco-4.3.9* # Cleanup last build
 ${sudo_sng} /bin/rm -r -f \
-${rpm_root}/BUILD/nco-4.0.9 \
-${rpm_root}/RPMS/i386/nco-4.0.9-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-debuginfo-4.0.9-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-devel-4.0.9-?.i386.rpm \
-${rpm_root}/SOURCES/nco-4.0.9.tar.gz \
-${rpm_root}/SPECS/nco-4.0.9.spec \
-${rpm_root}/SRPMS/nco-4.0.9-?.src.rpm
-cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4_0_9-1 -d nco-4.0.9 nco # Export based on tag
-${sudo_sng} ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/SPECS/nco-4.0.9.spec
-tar cvzf ./nco-4.0.9.tar.gz --exclude='nco-4.0.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.0.9 
-${sudo_sng} /bin/cp ${DATA}/nco-4.0.9.tar.gz ${rpm_root}/SOURCES
+${rpm_root}/BUILD/nco-4.3.9 \
+${rpm_root}/RPMS/i386/nco-4.3.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-debuginfo-4.3.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-devel-4.3.9-?.i386.rpm \
+${rpm_root}/SOURCES/nco-4.3.9.tar.gz \
+${rpm_root}/SPECS/nco-4.3.9.spec \
+${rpm_root}/SRPMS/nco-4.3.9-?.src.rpm
+cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4_3_9-1 -d nco-4.3.9 nco # Export based on tag
+${sudo_sng} ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/SPECS/nco-4.3.9.spec
+tar cvzf ./nco-4.3.9.tar.gz --exclude='nco-4.3.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.3.9 
+${sudo_sng} /bin/cp ${DATA}/nco-4.3.9.tar.gz ${rpm_root}/SOURCES
 cd ${rpm_root}/SPECS
-${sudo_sng} rpmbuild -ba --sign nco-4.0.9.spec > ~/foo.nco 2>&1
+${sudo_sng} rpmbuild -ba --sign nco-4.3.9.spec > ~/foo.nco 2>&1
 scp \
-${rpm_root}/RPMS/i386/nco-4.0.9-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-debuginfo-4.0.9-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-devel-4.0.9-?.i386.rpm \
-${rpm_root}/SRPMS/nco-4.0.9-?.src.rpm \
+${rpm_root}/RPMS/i386/nco-4.3.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-debuginfo-4.3.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-devel-4.3.9-?.i386.rpm \
+${rpm_root}/SRPMS/nco-4.3.9-?.src.rpm \
 dust.ess.uci.edu:/var/www/html/nco/src
 scp \
-${rpm_root}/RPMS/i386/nco-4.0.9-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-debuginfo-4.0.9-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-devel-4.0.9-?.i386.rpm \
-${rpm_root}/SRPMS/nco-4.0.9-?.src.rpm \
+${rpm_root}/RPMS/i386/nco-4.3.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-debuginfo-4.3.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-devel-4.3.9-?.i386.rpm \
+${rpm_root}/SRPMS/nco-4.3.9-?.src.rpm \
 zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 
 # RPM builds as user
@@ -252,33 +259,33 @@ zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 export rpm_root="${DATA}/rpm/nco"
 #cd ~/nco;cvc;cvu # This risks committing unwanted *.[ch]pp files
 mkdir -p ${DATA}/rpm/nco/TMP ${DATA}/rpm/nco/BUILD
-/bin/rm -rf ${DATA}/nco-4.0.9 ${DATA}/nco-4.0.9* # Cleanup last build
+/bin/rm -rf ${DATA}/nco-4.3.9 ${DATA}/nco-4.3.9* # Cleanup last build
 /bin/rm -r -f \
-${rpm_root}/nco-4.0.9-?.src.rpm \
-${rpm_root}/nco-4.0.9.spec \
-${rpm_root}/nco-4.0.9.tar.gz \
-${rpm_root}/*/nco-4.0.9-?.*.rpm \
-${rpm_root}/*/nco-debuginfo-4.0.9-?.*.rpm \
-${rpm_root}/*/nco-devel-4.0.9-?.*.rpm
-# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4_0_9-1 -d nco-4.0.9 nco # Export based on tag
-cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -dnco-4.0.9 nco # Export most recent and build as 4.0.9-1
-tar cvzf ./nco-4.0.9.tar.gz --exclude='nco-4.0.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.0.9 
-/bin/cp ${DATA}/nco-4.0.9.tar.gz ${rpm_root}
+${rpm_root}/nco-4.3.9-?.src.rpm \
+${rpm_root}/nco-4.3.9.spec \
+${rpm_root}/nco-4.3.9.tar.gz \
+${rpm_root}/*/nco-4.3.9-?.*.rpm \
+${rpm_root}/*/nco-debuginfo-4.3.9-?.*.rpm \
+${rpm_root}/*/nco-devel-4.3.9-?.*.rpm
+# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4_3_9-1 -d nco-4.3.9 nco # Export based on tag
+cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -dnco-4.3.9 nco # Export most recent and build as 4.3.9-1
+tar cvzf ./nco-4.3.9.tar.gz --exclude='nco-4.3.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.3.9 
+/bin/cp ${DATA}/nco-4.3.9.tar.gz ${rpm_root}
 ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/nco.spec
 cd ${rpm_root}
 rpmbuild -ba --sign nco.spec > ~/foo.nco 2>&1
-rpmlint ${rpm_root}/*/nco-4.0.9-?.*.rpm
+rpmlint ${rpm_root}/*/nco-4.3.9-?.*.rpm
 sudo yum remove nco
-sudo yum install ${rpm_root}/*/nco-4.0.9-?.*.rpm
+sudo yum install ${rpm_root}/*/nco-4.3.9-?.*.rpm
 scp \
-${rpm_root}/*/nco-4.0.9-?.*.rpm \
-${rpm_root}/*/nco-debuginfo-4.0.9-?.*.rpm \
-${rpm_root}/*/nco-devel-4.0.9-?.*.rpm \
-${rpm_root}/nco-4.0.9-?.*.src.rpm \
+${rpm_root}/*/nco-4.3.9-?.*.rpm \
+${rpm_root}/*/nco-debuginfo-4.3.9-?.*.rpm \
+${rpm_root}/*/nco-devel-4.3.9-?.*.rpm \
+${rpm_root}/nco-4.3.9-?.*.src.rpm \
 dust.ess.uci.edu:/var/www/html/nco/src
 scp \
-${rpm_root}/*/nco-4.0.9-?.*.rpm \
-${rpm_root}/*/nco-debuginfo-4.0.9-?.*.rpm \
-${rpm_root}/*/nco-devel-4.0.9-?.*.rpm \
-${rpm_root}/nco-4.0.9-?.*.src.rpm \
+${rpm_root}/*/nco-4.3.9-?.*.rpm \
+${rpm_root}/*/nco-debuginfo-4.3.9-?.*.rpm \
+${rpm_root}/*/nco-devel-4.3.9-?.*.rpm \
+${rpm_root}/nco-4.3.9-?.*.src.rpm \
 zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
diff --git a/doc/i18n.txt b/doc/i18n.txt
index 9054342..4b54478 100644
--- a/doc/i18n.txt
+++ b/doc/i18n.txt
@@ -1,6 +1,11 @@
-# $Header: /cvsroot/nco/nco/doc/i18n.txt,v 1.3 2004/01/01 20:41:43 zender Exp $
+# $Header: /cvsroot/nco/nco/doc/i18n.txt,v 1.4 2012/09/11 22:28:22 zender Exp $
 
-# Purpose: NCO Internationalization (i18n):
+# Purpose: NCO Internationalization (i18n)
+
+# Instructions/examples at
+# Linux Journal 200211 p. 57--59
+# http://www.linuxjournal.com/article/6176
+# http://www.debian.org/doc/manuals/intro-i18n/ch-library.en.html
 
 # Generate *.po file for all NCO operators:
 cd ~/nco/src/nco
diff --git a/doc/index.shtml b/doc/index.shtml
index 86f2e89..1774a7e 100644
--- a/doc/index.shtml
+++ b/doc/index.shtml
@@ -1,14 +1,14 @@
-<!-- $Header: /cvsroot/nco/nco/doc/index.shtml,v 1.672 2012/02/14 05:42:58 zender Exp $
+<!-- $Header: /cvsroot/nco/nco/doc/index.shtml,v 1.843 2013/12/03 00:28:01 zender Exp $
 Purpose: NCO homepage
 
 URL:
-http://nco.sourceforge.net/index.shtml
+http://nco.sf.net/index.shtml
 http://dust.ess.uci.edu/nco/index.shtml
 file:///home/zender/nco/doc/index.shtml
 
 Usage:
-/usr/bin/scp ~/nco/doc/index.shtml ~/nco/doc/nasa.png ~/nco/doc/nco.png ~/nco/doc/nsf.png ~/nco/doc/logo_pch.png ~/nco/doc/logo_cog.png ~/nco/doc/logo_cog_nmr.png ~/nco/doc/logo_srl.png zender,nco at web.sf.net:/home/project-web/nco/htdocs
-scp -p ~/nco/doc/index.shtml ~/nco/doc/nasa.png ~/nco/doc/nco.png ~/nco/doc/nsf.png ~/nco/doc/logo_pch.png ~/nco/doc/logo_cog.png ~/nco/doc/logo_cog_nmr.png ~/nco/doc/logo_srl.png dust.ess.uci.edu:/var/www/html/nco
+/usr/bin/scp ~/nco/doc/index.shtml ~/nco/doc/logo_cog.png ~/nco/doc/logo_cog_nmr.png ~/nco/doc/logo_nco_stk.png ~/nco/doc/logo_pch.png ~/nco/doc/logo_srl.png ~/nco/doc/nasa.png ~/nco/doc/nco.png ~/nco/doc/nsf.png zender,nco at web.sf.net:/home/project-web/nco/htdocs
+scp -p ~/nco/doc/index.shtml ~/nco/doc/logo_cog.png ~/nco/doc/logo_cog_nmr.png ~/nco/doc/logo_nco_stk.png ~/nco/doc/logo_pch.png ~/nco/doc/logo_srl.png ~/nco/doc/nasa.png ~/nco/doc/nco.png ~/nco/doc/nsf.png dust.ess.uci.edu:/var/www/html/nco
 scp -p ~/nco/doc/.htaccess zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 scp -p ~/nco/doc/.htaccess dust.ess.uci.edu:/var/www/html/nco/src
 -->
@@ -44,20 +44,20 @@ Try to disable Spammers' machines:
 
 <table width="100%"><tr><td align="left" valign="top">/
 <a href="http://lists.sf.net/mailman/listinfo/nco-announce">Announce</a> /
-<a href="http://sourceforge.net/projects/nco/forums/forum/9831">Developer</a> /
-<a href="http://sourceforge.net/projects/nco/forums/forum/9829">Discussion</a> /
-<a href="http://sourceforge.net/projects/nco/forums/forum/9830">Help</a> /
+<a href="http://sf.net/projects/nco/forums/forum/9831">Developer</a> /
+<a href="http://sf.net/projects/nco/forums/forum/9829">Discussion</a> /
+<a href="http://sf.net/projects/nco/forums/forum/9830">Help</a> /
 <a href="#RTFM">Manual</a> /
 <a href="http://nco.sf.net">Homepage</a> /
 <a href="http://sf.net/projects/nco">Project</a> /
 <a href="http://nco.cvs.sf.net/nco/nco/src/nco">Source</a> /
-<a href="http://nco.wiki.sourceforge.net">Wiki</a> /
 </td>
 
 <td align="right" valign="top">
 [<a href="http://www.antlr.org">ANTLR</a>] 
 [<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/latest-cf-conventions-document-1">CF</a>] 
-[<a href="http://www.gnu.org/software/gsl">GSL</a>] 
+[<a href="https://wiki.earthdata.nasa.gov/display/ESDSWG/HDF5+Conventions+Working+Group">ESDSWG</a>] 
+[<a href="http://www.gnu.org/software/gsl">GSL</a>]
 [<a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a>] 
 [<a href="http://opendap.org">OPeNDAP</a>] 
 [<a href="http://swamp.googlecode.com">SWAMP</a>] 
@@ -67,7 +67,9 @@ Try to disable Spammers' machines:
 <p><hr width="100%"></p>
 <p><h1 align="center">Welcome to the netCDF Operator (NCO) Homepage</h1>
 
-<p><h2>Current NCO version is 4.0.9 last updated on <!--#flastmod file="VERSION"--> </h2>
+<p><h2>
+Current NCO version is 4.3.9 last updated on <!--#flastmod file="VERSION"-->
+</h2>
 
 <table border=0 width=100%>
 
@@ -94,6 +96,8 @@ Try to disable Spammers' machines:
 </td>
 
 <td>
+<img src="logo_nco_stk.png" height=442 width=722 align=top>
+<!--
 <img src="nco.png" height=180 width=180 align=top>
 <img src="logo_pch.png" height=321 width=195 align=top>
 <img src="logo_cog.png" height=349 width=227 align=top>
@@ -109,8 +113,30 @@ Andrea Cimatoribus (spiral).<br>
 Which do you prefer? The Mandelblob, the patch, a cog, the spiral?<br>
 Can you improve these or create a better one? Send it in!
 Keep the size <250×250 pixels.<br>
+-->
 </td>
 
+NCO manipulates data stored in
+<a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a>-accessible
+formats, including 
+<a href="http://hdfgroup.org/products/hdf4">HDF4</a> and 
+<a href="http://hdfgroup.org/HDF5">HDF5</a>.
+It also exploits the geophysical expressivity of many 
+<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/latest-cf-conventions-document-1">CF</a> 
+(Climate & Forecast) metadata conventions, 
+the flexible description of physical dimensions translated by
+<a href="http://www.unidata.ucar.edu/packages/udunits">UDUnits</a>,
+the network transparency of
+<a href="http://opendap.org">OPeNDAP</a>, 
+the storage features (e.g., compression, chunking, groups) of
+<a href="http://hdfgroup.org">HDF</a> (the Hierarchical Data Format),
+and many powerful mathematical and statistical algorithms of 
+<a href="http://www.gnu.org/software/gsl">GSL</a> (the GNU Scientific Library).
+NCO is 
+<a href="http://dust.ess.uci.edu/ppr/ppr_ZeM07.pdf">fast</a>, 
+<a href="http://dust.ess.uci.edu/ppr/ppr_Zen08.pdf">powerful</a>,
+and 
+<a href="http://www.gnu.org/licenses/gpl-3.0.html">free</a>.
 </table>
 <hr>
 
@@ -120,119 +146,84 @@ Keep the size <250×250 pixels.<br>
 <h2>NCO Milestones</h2>
 
 <ul>
-<li>2012 Apr 01?: Funding for NASA <a href="#prp_access">ACCESS Project</a> begins</li>
-
+<li>2013 Dec ??: NCO 4.3.9 (new operator, <tt>nces</tt>) (<i>In progress</i>)
+<li>2013 Nov 06: NCO 4.3.8 (<tt>ncatted</tt> groups)
+<li>2013 Oct 17: NCO 4.3.7 (HDF4, XML, <tt>ncrename</tt> groups)
+<li>2012 Oct 02: NCO <a href="http://dust.ess.uci.edu/smn/pst_nco_esds_201310.pdf">Poster</a> for NASA ESDSWG, Greenbelt, Maryland</li>
+<li>2013 Sep 27: NCO 4.3.6 (<tt>--dbl</tt> default, <tt>ncdismember</tt>)
+<li>2013 Sep 20: NCO 4.3.5 (<tt>nces</tt>, <tt>ncra</tt>, <tt>ncrcat</tt> groups)
+<li>2013 Aug 01: NCO 4.3.4 (<tt>ncpdq</tt> bugfix, HDF unpacking)
+<li>2013 Jul 24: NCO 4.3.3 (<tt>ncrename</tt>, <tt>ncwa</tt> groups, CDL, XML)
+<li>2013 Jul 05: NCO 4.3.2 (<tt>ncflint</tt>, <tt>ncpdq</tt> groups)</li>
+<li>2013 Jun 03: Submitted NASA ACCESS 2013 <a href="http://dust.ess.uci.edu/prp/prp_axs/prp_axs.pdf">proposal</a></li>
+<li>2013 May 01: NCO 4.3.1 (Group broadcasting)</li>
+<li>2013 Mar 28: NCO 4.3.0 (<tt>ncbo</tt> groups)</li>
+<li>2013 Mar 19: NCO 4.2.6</li>
+<li>2013 Jan 28: NCO 4.2.5</li>
+<li>2013 Jan 21: NCO 4.2.4</li>
+<li>2012 Dec 05: NCO <a href="http://dust.ess.uci.edu/smn/smn_nco_agu_201212.pdf">Talk</a> at Fall AGU, San Francisco, California</li>
+<li>2012 Nov 28: NCO <a href="http://dust.ess.uci.edu/smn/pst_nco_esds_201211.pdf">Poster</a> at NASA ESDSWG, Annapolis, Maryland</li>
+<li>2012 Nov 13: NCO 4.2.3 (GPE)</li>
+<li>2012 Oct 29: NCO 4.2.2 (<tt>ncks, ncecat</tt> Groups)</li>
+<li>2012 Aug 02: NCO 4.2.1 (RAM disks)</li>
+<li>2012 Jun 12: NCO 4.2.0 (Windows support)</li>
+<li>2012 Apr 23: Received funding for NASA ACCESS 2011 <a href="#prp_access">project</a></li>
+<li>2012 Mar 29: NCO 4.1.0 (MD5 support, MM3)</li>
 <li>2012 Feb 13: NCO 4.0.9</li>
-
-<li>2011 Jun 03: Submit NASA ACCESS <a href="http://dust.ess.uci.edu/prp/prp_access/prp_access.pdf">proposal</a></li>
-
+<li>2011 Jun 03: Submitted NASA ACCESS 2011 <a href="http://dust.ess.uci.edu/prp/prp_access/prp_access.pdf">proposal</a></li>
 <li>2011 Apr 28: NCO 4.0.8 (HPSS support, NOFILL workaround, <i>upgrade recommended</i>)</li>
-
 <li>2011 Feb 21: NCO 4.0.7 (<i>upgrade recommended</i>)</li>
-
 <li>2011 Jan 15: NCO 4.0.6</li>
-
 <li>2010 Oct 13: NCO 4.0.5</li>
-
 <li>2010 Sep 24: NCO 4.0.4 (chunking everywhere)</li>
-
 <li>2010 Sep 02: NCO 4.0.3</li>
-
 <li>2010 Jun 27: NCO 4.0.2</li>
-
 <li>2010 Apr 05: NCO 4.0.1</li>
-
 <li>2010 Jan 05: NCO 4.0.0 (bilinear interpolation, calendar attributes)</li>
-
 <li>2009 Jul 15: NCO 3.9.9 (chunking, re-basing, GSL stats/interp)</li>
-
 <li>2009 Apr 29: NCO 3.9.8 (GSL RNG/PDF functions)</li>
-
 <li>2009 Mar 18: NCO 3.9.7</li>
-
 <li>2009 Jan 22: NCO 3.9.6 (GSL special functions) (<i>upgrade highly recommended</i>)</li>
-
 <li>2008 Sep 24: <tt>ncap2</tt> <a href="http://nco.sf.net/nco.html#ncap2">documentation</a></li>
-
 <li>2008 Aug 31: <a href="http://www.nsf.gov">NSF</a> funding ends</a></li>
-
-<li>2008 Aug 08: NCO <a href="http://nco.wiki.sourceforge.net">Wiki</a>!</li>
-
+<li>2008 Aug 08: NCO <a href="http://nco.wiki.sf.net">Wiki</a>!</li>
 <li>2008 May 22: SWAMP <a href="http://dust.ess.uci.edu/ppr/smn_WZJ08_ccgrid_200805.pdf">Talk</a> at CCGRID08 in Lyon, France</li>
-
 <li>2008 May 11: NCO 3.9.5</li>
-
 <li>2008 Apr 28: NCO <a href="http://dust.ess.uci.edu/ppr/ppr_Zen08.pdf">overview</a> paper in EMS</li>
-
 <li>2008 Mar 04: NCO 3.9.4</li>
-
 <li>2007 Dec 10: SWAMP <a href="http://dust.ess.uci.edu/ppr/pst_WZJ074.pdf">Poster</a> at Fall AGU, San Francisco, California</li>
-
 <li>2007 Dec 07: NCO 3.9.3 (SWAMP!)</li>
-
 <li>2007 Dec 04: NCO <a href="http://dust.ess.uci.edu/ppr/ppr_ZeM07.pdf">scaling paper</a> in IJHPCA</li>
-
 <li>2007 Aug 29: NCO 3.9.2 (<tt>_FillValue</tt>s)</li>
-
 <li>2007 Aug 27: <a href="http://swamp.googlecode.com">SWAMP site</a> spins-off from NCO</li>
-
 <li>2007 Jun 29: NCO 3.9.1 (netCDF4 deflation)</li>
-
 <li>2007 May 26: NCO 3.9.0 (netCDF4 atomic types)</li>
-
 <li>2007 May 02: SWAMP <a href="http://dust.ess.uci.edu/smn/smn_WZJ07_gpc_200705.pdf">Talk</a> at GPC, Paris, France</li> 
-
 <li>2007 Apr 20: NCO 3.2.0</li>
-
 <li>2007 Mar 29: NCO 3.1.9 x86_64 RPMs</li>
-
 <li>2007 Mar 10: NCO 3.1.9 (i386/x86_64 debs and i386 RPMs)</li>
-
-<li>2007 Feb 22: SWAMP
-<a href="http://dust.ess.uci.edu/smn/smn_WZJ07_opendap_200702.pdf">Talk</a> at OPeNDAP Developer's Workshop, Boulder, Colorado</li>
-
+<li>2007 Feb 22: SWAMP <a href="http://dust.ess.uci.edu/smn/smn_WZJ07_opendap_200702.pdf">Talk</a> at OPeNDAP Developer's Workshop, Boulder, Colorado</li>
 <li>2007 Jan 15: <a href="http://dust.ess.uci.edu/smn/smn_nco_ams_200701.pdf">Talk</a> and <a href="http://dust.ess.uci.edu/ppr/abs_xtn_ZeW07.pdf">Extended Abstract</a> on NCO Scaling at AMS IIPS, San Antonio, Texas</li>
-
 <li>2007 Jan 09: <a href="http://dust.ess.uci.edu/ppr/pst_ZMW06.pdf">Poster</a> on NCO Scaling at Fall AGU, San Francisco, California</li>
-
 <li>2006 Dec 09: <a href="http://dust.ess.uci.edu/ppr/pst_WZJ06.pdf">Poster</a> on SWAMP at Fall AGU, San Francisco, California</li>
-
 <li>2006 Dec 06: NCO 3.1.8</li>
-
 <li>2006 Nov 11: NCO 3.1.7</li>
-
 <li>2006 Sep 18: NCO 3.1.6</li>
-
 <li>2006 Aug 29: NCO 3.1.5</li>
-
 <li>2006 Jun 07: NCO 3.1.4</li>
-
 <li>2006 May 30: NCO 3.1.3</li>
-
 <li>2006 Apr 21: NCO 3.1.2</li>
-
 <li>2006 Jan 30: NCO 3.1.1</li>
-
 <li>2005 Dec 02: NCO 3.1.0 (MPI!)</li>
-
 <li>2005 Oct 28: NCO 3.0.3</li>
-
 <li>2005 Oct 17: <a href="#BM">NCO parallel benchmarks</a></li>
-
 <li>2005 Aug 22: NCO 3.0.2</li>
-
 <li>2005 Jun 10: NCO 3.0.1</li>
-
 <li>2005 Mar 24: NCO 3.0.0</li>
-
 <li>2004 Sep 07: NCO 2.9.9 (<tt>ncpdq</tt> packs data quietly)</li>
-
 <li>2004 Sep 01: Funding for NSF <a href="#prp_sei">SEI Project</a> begins</li>
-
 <li>2004 Aug 07: NCO 2.9.8 (<a href="./nco.html#ncpdq"><tt>ncpdq</tt></a> re-orders dimensions)</li>
-
 <li>2004 Mar 04: Submit NSF <a href="http://dust.ess.uci.edu/prp/prp_sei/prp_sei.pdf">SEI proposal</a></li>
-
 <li><a href="./nco_news.shtml">Ancient NCO News & Announcements</a></li>
 </ul>
 <hr></p>
@@ -240,15 +231,13 @@ Keep the size <250×250 pixels.<br>
 <!-- http://nco.sf.net#Definition -->
 <dt><a name="Definition"></a><a name="dfn"></a></dt>
 <h2>What is NCO?</h2>
-<p>The <a
-href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a>
-Operators (NCO) comprise a dozen standalone, command-line programs
-that take <a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a> 
+<p>The netCDF Operators (NCO) comprise a dozen standalone,
+command-line programs that take 
+<a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a> or
+<a href="http://hdfgroup.org">HDF</a> 
 files as input, then operate (e.g., derive new data, average, print,
 hyperslab, manipulate metadata) and output the results to screen or 
-files in text, binary, or 
-<a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a> 
-formats.
+files in text, binary, or netCDF formats.
 NCO aids manipulation and analysis of gridded scientific data.  
 The shell-command style of NCO allows users to manipulate and analyze
 files interactively, or with simple scripts that avoid some overhead
@@ -259,7 +248,7 @@ with examples of climate data analysis:
 <li><a href="./nco.html#ncap2"><tt>ncap2</tt></a> netCDF Arithmetic Processor (<a href="./nco.html#xmp_ncap">examples</a>)</li>
 <li><a href="./nco.html#ncatted"><tt>ncatted</tt></a> netCDF ATTribute EDitor (<a href="./nco.html#xmp_ncatted">examples</a>)</li>
 <li><a href="./nco.html#ncbo"><tt>ncbo</tt></a> netCDF Binary Operator (includes <tt>ncadd</tt>, <tt>ncsubtract</tt>, <tt>ncmultiply</tt>, <tt>ncdivide</tt>) (<a href="./nco.html#xmp_ncbo">examples</a>)</li>
-<li><a href="./nco.html#ncea"><tt>ncea</tt></a> netCDF Ensemble Averager (<a href="./nco.html#xmp_ncea">examples</a>)</li>
+<li><a href="./nco.html#nces"><tt>nces</tt></a> netCDF Ensemble Statistics (<a href="./nco.html#xmp_nces">examples</a>)</li>
 <li><a href="./nco.html#ncecat"><tt>ncecat</tt></a> netCDF Ensemble conCATenator (<a href="./nco.html#xmp_ncecat">examples</a>)</li>
 <li><a href="./nco.html#ncflint"><tt>ncflint</tt></a> netCDF FiLe INTerpolator (<a href="./nco.html#xmp_ncflint">examples</a>)</li>
 <li><a href="./nco.html#ncks"><tt>ncks</tt></a> netCDF Kitchen Sink (<a href="./nco.html#xmp_ncks">examples</a>)</li>
@@ -272,15 +261,13 @@ with examples of climate data analysis:
 
 <p>
 Note that the <a href="./nco.html#averagers">“averagers”</a> 
-(<tt>ncea</tt> and <tt>ncra</tt>) are misnamed because they perform
+(<tt>ncra</tt> and <tt>ncwa</tt>) are misnamed because they perform
 many non-linear operations as well, e.g., total, minimum, maximum, RMS.
 Moreover, <tt>ncap2</tt> implements a powerful domain language which
 handles arbitrarily complex operations.
 The operators are as general as 
 <a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a>
-itself: there are no restrictions on the contents of the 
-<a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a>
-file(s) used as input.
+itself: there are no restrictions on the contents of input file(s).
 NCO's internal routines are completely dynamic and impose no limit on
 the number or sizes of dimensions, variables, and files.
 NCO is designed to be used both interactively and with large batch jobs.
@@ -324,7 +311,7 @@ items.
 Inspired by President Obama's plan to bring more transparency to
 government investment, these homepage donation counters track the
 influence of your monetary donations on NCO development: 
-<dt>Donations received between 20030624 and 20120101: US$94.55. Thank you, donors!</dt>
+<dt>Donations received between 20030624 and 20120301: US$144.55. Thank you, donors!</dt>
 <dt>NCO features “incentivized” by these donations: More emoticons in the documentation :)</dt>
 <hr></p>
 
@@ -339,15 +326,15 @@ The National Aeronautics and Space Administration Cooperative Agreement (CA)
 funded our
 <a href="http://dust.ess.uci.edu/prp/prp_access/prp_access.pdf">ACCESS Project</a>,
 “Simplifying and accelerating model evaluation by NASA satellite data”
-from 20120401–20140331 as part of the 
-<a href="http://fxm">Advancing Collaborative Connections for Earth System Science (ACCESS)</a> program.
-We appreciate the proposal reviewers for and staff of the 
-<a href="http://fxm">Earth Science Division (ESD) Research and Analysis (R\&A)</a>
+from 20120208–20140207 as part of the 
+<a href="http://science.nasa.gov/earth-science/earth-science-data/access">Advancing Collaborative Connections for Earth System Science (ACCESS)</a> program.
+We appreciate the proposal reviewers for and the staff of the 
+<a href="http://science.nasa.gov/researchers/sara/division-corner/earth-science-division-corner">Earth Science Division (ESD) Research and Analysis (R\&A)</a>
 in the 
-<a href="http://fxm">Science Mission Directorate (SMD)</a>.
-NCO development has been completely voluntary and without
-institutional support since August, 2008.
-This NASA support dramatically changes the scale and pace of NCO development. 
+<a href="http://science.nasa.gov/about-us/organization-and-leadership">Science Mission Directorate (SMD)</a>.
+NCO development was completely voluntary and without
+institutional support from August, 2008–February, 2012.
+This NASA support dramatically changed the scale and pace of NCO development. 
 This URL,
 <a href="http://nco.sf.net#prp_access"><tt>http://nco.sf.net#prp_access</tt></a>,
 points to the most up-to-date information on the ACCESS proposal.</p> 
@@ -362,25 +349,24 @@ exploit.
 By supporting groups in a generic fashion, NCO hopes to remove one of
 the barriers to more widespread adoption of netCDF4 features.</p>
 
-<p>We plan to recruit two personnel, a programmer (aka software engineer)
-and a graduate student (scientific specialist) each for at least two
-years, to accomplish our ACCESS objectives. 
+<p>We recruited (i.e., these positions have been filled) two
+personnel, a programmer (aka software engineer) 
+and a graduate student (scientific specialist) both based at UCI for
+at least two years, to accomplish our ACCESS objectives. 
 As described in the proposal, the responsibilities of positions are
 roughly segregated as follows: 
 The 
 <a href="http://dust.ess.uci.edu/hire/prg_anl_05_adv.pdf">programmer</a> 
-will re-factor the code-base to support groups (50%),
-improve the NCO build system and user support (25%), 
-and support NASA ESDSWG activities (25%).
+is re-factoring the code-base to support groups, writing wrappers for
+NCO, an improving the build system (e.g., now we have native Windows builds!).
 The 
 <a href="http://dust.ess.uci.edu/hire/sdn_grd_03_adv.pdf">graduate student researcher</a> 
-analyze and intercompare snow cover and snow albedo datasets from
-NASA MODIS and MISR datasets (in HDF-EOS format) and NCAR CESM
-simulations (in netCDF format). 
-The analysis will inform the development of wrappers for NCO
-commands to analyze HDF-EOS datasets.
-Contact us if you are seriously interested in these positions on a
-full-time, part-time, or pay-per-feature basis.</p> 
+is analyzing and intercomparing snow cover and snow albedo datasets
+from NASA MODIS and MISR datasets (in HDF format) and CMIP5
+simulations (in netCDF format).
+Her analysis informs the development of NCO commands and wrappers for
+HDF atasets so that we solve the most important problems real-world
+researchers encounter in evaluating GCMs against NASA data.</p> 
 
 <p>We continue to encourage you to e-mail NCO endorsements to
 <a href="mailto:surname at uci.edu">Charlie “my surname is zender” Zender</a>
@@ -397,6 +383,19 @@ more CF conventions.
 Need I say more? 
 If you send an endorsement, remember to include (at least) your Name, Title, and Institutional affiliation in the body.</p>
 </ul>
+
+<a href="xmp_cesm.html">Pre-ACCESS CMIP5/MODIS analysis scripts</a>
+<!-- Copy files from http://glace.ess.uci.edu
+/usr/bin/scp /home/pvicente/nco/doc/index.shtml pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+/usr/bin/scp /home/pvicente/nco/doc/xmp_cesm.html pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+/usr/bin/scp /home/pvicente/nco/doc/cesm-eg.fig1.png pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+/usr/bin/scp /home/pvicente/nco/doc/cesm-eg.fig2.png pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+/usr/bin/scp /home/pvicente/nco/doc/cesm-eg.fig3.png pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+
+--> 
+ 
+ 
+
 <hr></p>
 
 <a name="nsf"></a> <!-- http://nco.sf.net#nsf -->
@@ -488,6 +487,17 @@ If you send an endorsement, remember to include (at least) your Name, Title, and
 <h2>Publications and Presentations</h2>
 <ul>
 
+<li><!-- ZVW13 --> <a name="ZVW13"></a> <!--http://www.ess.uci.edu/~zender#ZVW13 -->
+Zender, C. S., P. Vicente and W. Wang (2013): <i>The Future of Model Evaluation</i>. Presented to the Chapman University Symposium on Big Data and Analytics: 44th Symposium on the Interface of Computing Science and Statistics, Chapman University, Orange, CA, April 4–6, 2013. <a href="http://dust.ess.uci.edu/smn/smn_nco_chapman_201304.pdf">PDF</a> (© 2013 by me)</a></li>
+
+<li><!-- ZVW12 --> <a name="ZVW12"></a> <!--http://www.ess.uci.edu/~zender#ZVW12 -->
+Zender, C. S., P. Vicente and W. Wang (2012): <i>NCO: Simpler and faster model evaluation by NASA satellite data via unified file-level netCDF and HDF-EOS data post-processing tools.</i>. Presented at the Fall Meeting of the American Geophysical Union, San Francisco, CA, December 3–7, 2012. <i>Eos Trans. AGU</i>, <b>93</b>(53), Fall Meet. Suppl., Abstract IN34A-07.
+<a href="http://dust.ess.uci.edu/smn/smn_nco_agu_201212.pdf">PDF</a> (© 2012 by me)</a></li>
+
+<li><!-- ZVW12 --> <a name="ZVW12"></a> <!--http://www.ess.uci.edu/~zender#ZVW12 -->
+Zender, C. S., P. Vicente and W. Wang (2012): <i>Simplifying and accelerating model evaluation by NASA satellite data.</i>. Presented to the Earth Science Data Systems Working Group (ESDSWG) Meeting, Annapolis MD, November 13–15, 2012.
+<a href="http://dust.ess.uci.edu/smn/pst_nco_esds_201211.pdf">PDF</a> (© 2012 by me)</a></li>
+
 <li><!-- WZJ083 --> <a name="WZJ083"></a> <!--http://www.ess.uci.edu/~zender#WZJ083 -->
 Wang, D. L., C. S. Zender, and S. F. Jenks (2008), Compiling the uncompilable: A case for shell script compilation, <i>Submitted to ACM Trans. Softw. Engin. Method.</i>.
 <a href="http://dust.ess.uci.edu/ppr/ppr_WZJ083.bib">BibTeX</a>
@@ -600,67 +610,155 @@ Releases receive unique CVS tags and their tarballs are stored
 You can also retrieve the source of tagged versions directly
 <a name="#Source">with CVS</a>.
 <ul>
-<li><b>NCO 4.1.1</b>: (<i>Future</i>) 
+<li><b>NCO 4.4.0</b>: (<i>Future</i>) 
 netCDF4 compound types?;
-World peace?
-<li><b>NCO 4.1.0</b>: (<i>In Progress, features already in beta include the following</i>)
-netCDF4 groups;
-Stride works with DAP?;
+Optimize diskless files?;</li>
+<li><b>NCO 4.3.9</b>: (<i>In Progress, features completed or being worked on include</i>)
+New operator <tt>nces</tt>;
+Group support for <tt>-x, ncwa -w -m</tt>;</li>
+<li><b>NCO 4.3.8</b>: (<i>Current Stable Release</i>)
+<tt>ncatted</tt> group features;</li>
+<li><b>NCO 4.3.7</b>: (<i>Current Stable Release</i>)
+HDF4 <a href="http://nco.sf.net/nco.html#hdf4">support</a>;
+XML/NcML data <a href="http://nco.sf.net/nco.html#xml">support</a>;
+Multiple record dimension <a href="http://nco.sf.net/nco.html#mrd">support</a> with <tt>ncpdq, ncecat --mrd</a></tt>;
+<tt>ncrename</tt> group features;
+<tt>ncap2</tt> file bugfix;
+<tt>ncecat</tt> ID bugfix;
+<tt>ncwa -b</tt> bugfix;</li>
+<li><b>NCO 4.3.6</b>:
+<tt>--flt</tt> default;
+<tt>ncpdq/ncecat</tt> leave only one record dimension;
+<tt>ncwa/nces</tt> bugfixes;
+<tt>ncdismember</tt></li>
+<li><b>NCO 4.3.5</b>: 
+<tt>nces/ncra/ncrcat</tt> groups with <tt>-g -G --unn</tt>;</li>
+<tt>nces/ncra/ncwa</tt> float→double coercion with <tt><a href="http://nco.sf.net/nco.html#dbl">--dbl</a></tt>;</li>
+<tt>ncwa -d</tt> <a href="#bug_ncwa_lmt">bugfix</a>
+<li><b>NCO 4.3.4</b>:
+HDF unpacking <tt>--hdf_upk</tt>;
+<tt>ncpdq</tt> unpacking <a href="#bug_ncpdq_upk">bugfix</a>;
+CDL printing legibility;</li>
+<li><b>NCO 4.3.3</b>:
+CDL printing <tt>ncks --cdl</tt>;
+<tt>ncrename -g</tt>;
+<tt>ncwa</tt> groups with <tt>-g -G --unn</tt>;</li>
+<li><b>NCO 4.3.2</b>:
+<tt>ncflint/ncpdq</tt> groups with </tt>-g -G --unn</tt>;
+<tt>ncks -X</tt> <a href="#bug_ncks_aux">bugfix</a>;</li>
+<li><b>NCO 4.3.1</b>:
+<tt>ncbo</tt> symmetry, group broadcasting;
+<tt>ncbo -G --unn</tt>;
+<tt>ncecat</tt> <a href="http://nco.sf.net/nco.html#rag">RAG</a>;
+<tt>ncbo</tt> CF <a href="#bug_ncbo_ccm_ccsm_cf">bugfix</a>;
+<tt>ncatted</tt> <a href="#bug_ncatted_strcmp">bugfix</a>;
+Windows DAP;</li>
+<li><b>NCO 4.3.0</b>: 
+<tt>ncbo -g</tt> groups;
+<tt>ncatted</tt> NULs;
+<tt>ncap2</tt> rounding;
+<tt>ncks</tt> metadata <a href="#bug_ncks_mtd">bugfix</a></li>
+<li><b>NCO 4.2.6</b>: 
+Record appending with <tt>ncra/ncrcat --rec_apn</tt>;
+<tt>ncflint --fix_rec_crd</tt>;
+RX's in full paths;
+Correct dimension/coordinate scopes;
+<tt>ncks</tt> MM3 bugfix;</li>
+<li><b>NCO 4.2.5</b>: 
+<tt>ncks --mk_rec_dmn</tt> <a href="#bug_ncks_mk_rec_dmn">bugfix</a>;
+<tt>ncks</tt> subsetting <a href="#bug_ncks_sbs">bugfix</a></li>
+<li><b>NCO 4.2.4</b>:
+Group <a href="http://nco.sf.net/nco.html#rx">wildcards</a>;
+Group <a href="http://nco.sf.net/nco.html#anchoring">anchoring and recursion</a>;
+Intersection/union <a href="http://nco.sf.net/nco.html#unn">modes</a>;
+<tt>ncrename</tt> global att. handling;
+<tt>nces</tt> <a href="#bug_nces_rec_var">bugfix</a>;
+<tt>ncra</tt> <a href="#bug_ncra_flg_bfr_nrm">bugfix</a></li>
+<li><b>NCO 4.2.3</b>:
+Group Path Editing (GPE);
+<tt>ncecat</tt> <a href="#bug_ncecat_nintap">bugfix</a></li>
+<li><b>NCO 4.2.2</b>: 
+<tt>ncks</tt>, <tt>ncecat</tt> support groups;
+<tt>--hdr_pad</tt> all operators;
+<tt>ncks</tt> prints underscores;
+fixes to <tt>--[mk/fix]_rec_dmn</tt>;
+<tt>ncpdq</tt> fix;
+<tt>ncwa</tt> on Windows;</li>
+<li><b>NCO 4.2.1</b>: 
+<tt>--ram_all</tt> for <a href="http://nco.sf.net/nco.html#diskless">diskless files</a>;
+<tt>--no_tmp_fl</tt> to <a href="http://nco.sf.net/nco.html#no_tmp_fl">bypass</a> temporary files;
+Negative indices for <a href="http://nco.sf.net/nco.html#hyp">hyperslabs</a>;
+<tt>ncpdq</tt> unpacks coordinate variables;
+<tt>ncra/ncrcat</tt> DRN/MRO <a href="http://nco.sf.net/nco.html#drn">options</a>;
+<tt>ncra/ncrcat</tt> rebase <a href="http://nco.sf.net/nco.html#rbs">bounds</a>;</li>
+<li><b>NCO 4.2.0</b>: 
+<tt>ncecat</tt> "fixes" auxiliary coordinates and bounds;
+<tt>ncks</tt> uses <tt>nc__open</tt>, format <tt>NC_INT</tt> with <tt>%i</tt>;
+<tt>ncra -y ttl</tt> fix;
+<tt>ncrcat</tt> UDUnits fix;
+<tt>ncwa</tt> and <tt>ncap2</tt> limited NaN support;
+Microsoft Visual Studio support;</li>
+<li><b>NCO 4.1.0</b>:
+MD5 digests;
+<tt>ncap2</tt> sorts & maps;
+<tt>ncks</tt> MM3 <a href="#bug_mm3">workaround</a>;
+<tt>ncrename/ncatted</tt> chmods;
+<tt>ncatted</tt> NaN support</li>
 <li><b>NCO 4.0.9</b>: 
 Fix over-zealous <tt>ncap2</tt> packing;
-Fix <tt>ncea -y ttl</tt>;
+Fix <tt>nces -y ttl</tt>;
 Fix/improve <tt>ncap2 print, array()</tt>;
 Warn when appending variables of suspicious record length;
-Warn when <tt>NC_MAX_ATTRS</tt> exceeded;
-<li><b>NCO 4.0.8</b>: (<i>Current Stable Release</i>) 
+Warn when <tt>NC_MAX_ATTRS</tt> exceeded</li>
+<li><b>NCO 4.0.8</b>: 
 Support <a href="http://nco.sf.net/nco.html#hpss">HPSS</a>;
 Workaround netCDF <tt>NOFILL</tt> <a href="#bug_nofill">bug</a> (<i>upgrade recommended</i>);
 Support CF <tt>bounds</tt>;
 CF <tt>noleap</tt> not <tt>no_leap</tt>;
 Fix <tt>ncatted</tt> overwrite-mode;
-Fix <tt>NC_BYTE</tt> printing;
+Fix <tt>NC_BYTE</tt> printing</li>
 <li><b>NCO 4.0.7</b>:
-Fix degenerate hyperslab <a href="#bug_hyp_dgn">bug</a> (<i>upgrade recommended</i>);
+Fix degenerate hyperslab <a href="#bug_hyp_dgn">bug</a> (<i>upgrade recommended</i>)</li>
 <li><b>NCO 4.0.6</b>: 
 <tt>clang</tt>-compliance;
 Fix <tt>ncra</tt> YYYYMMDD-<tt>date</tt> <a href="#bug_ncra_cf_YYYYMMDD_date">bug</a>;
 Extract all associated coordinates;
 Tighten <tt>ncbo</tt> warnings;
-<tt>ncpdq</tt> warns when _FillValue outside packing range;
+<tt>ncpdq</tt> warns when _FillValue outside packing range</li>
 <li><b>NCO 4.0.5</b>:
 Fix <tt>ncks</tt> <a href="#bug_ncks_nc4_nc4_hyp_fix">hyperslabbing bug</a>;
-Fix <tt>ncra</tt> <a href="#bug_ncra_cf_crd_rec_crd">CF "coordinate" bug</a>;
+Fix <tt>ncra</tt> <a href="#bug_ncra_cf_crd_rec_crd">CF "coordinate" bug</a></li>
 <li><b>NCO 4.0.4</b>:
 Chunking in all operators; preserve deflation; <tt>ncks</tt> print formatting;
 Fix <tt>ncrename</tt> <a href="#bug_ncrename_dot">bug</a>;
-Do not pack coordinate variables;
+Do not pack coordinate variables</li>
 <li><b>NCO 4.0.3</b>:
 Fix <tt>configure</tt> for ncap2, netCDF4, UDUnits2, netCDF-DAP;
 Fix <tt>ncbo</tt> <a href="#bug_ncbo_rfr">bug</a> under AIX xlC;
-Fix <tt>ncra</tt> <a href="#bug_ncra_date">bug</a> for some CF-compliant dates.
-<li><b>NCO 4.0.2</b>: 
+Fix <tt>ncra</tt> <a href="#bug_ncra_date">bug</a> for some CF-compliant dates.</li>
+<li><b>NCO 4.0.2</b>:
 Consistent deflation, chunking with <tt>netCDF4_classic</tt>;
 Fix <tt>ncap2</tt> RAM vars, 1-D arrays;
-Fix <tt>ncatted</tt> appending <tt>NUL</tt>s.
+Fix <tt>ncatted</tt> appending <tt>NUL</tt>s.</li>
 <li><b>NCO 4.0.1</b>:
-Easily create/remove record dimensions with <tt>ncks --mk_rec_dmn</tt>, <tt>--fix_rec_dmn</tt>;
+Easily create/remove record dimensions with <tt>ncks --mk_rec_dmn</tt>, <tt>--fix_rec_dmn</tt>;</li>
 <li><b>NCO 4.0.0</b>: 
 Bilinear interpolation, GSL fitting; 
 Chunking improvements;
-Better support CF <tt>calendar</tt> and <tt>coordinate</tt> attributes;
-<li><b>NCO 3.9.9</b>: 
+Better support CF <tt>calendar</tt> and <tt>coordinate</tt> attributes</li>
+<li><b>NCO 3.9.9</b>:
 netCDF4 chunking and <tt>NC_STRING</tt> support; 
 GSL statistics, interpolation functions;
 UDUnits2 <tt>time-since</tt> support;
-<tt>ncrcat</tt> re-basing;
+<tt>ncrcat</tt> re-basing</li>
 <li><b>NCO 3.9.8</b>: 
 <tt>ncap2</tt> supports <tt>sort()</tt>, <tt>array()</tt>;
 better DAP/libnetcdf and UDUnits2 builds;
-GSL distribution/RNG functions;
+GSL distribution/RNG functions</li>
 <li><b>NCO 3.9.7</b>:
 Improve GSL-build support;
 <tt>ncap2</tt> threading improvements;
-<tt>ncks --no_dmn_var_nm</tt> printing;
+<tt>ncks --no_dmn_var_nm</tt> printing</li>
 <li><b>NCO 3.9.6</b>: 
 Fix OpenMP MSA <a href="#bug_thr_msa">bug</a> (<i>upgrade highly recommended</i>); 
 Memory management to improve threading;
@@ -670,68 +768,68 @@ no math on type <tt>NC_CHAR</tt>;
 <tt>ncap2</tt> <a href="http://nco.sf.net/nco.html#ncap2">documentation</a>,
 better missing value propagation,
 <tt>#include</tt> files,
-<a href="http://nco.sf.net/nco.html#gsl">GSL</a> math functions;
-<li><b>NCO 3.9.5</b>: 
+<a href="http://nco.sf.net/nco.html#gsl">GSL</a> math functions</li>
+<li><b>NCO 3.9.5</b>:
 Multi-slabbing (MSA) and <tt>-X</tt> everywhere;
 <tt>ncecat -M</tt>;
 netCDF4-enabled builds on Cygwin;
-<tt>ncap2</tt> builds on Solaris;
+<tt>ncap2</tt> builds on Solaris</li>
 <li><b>NCO 3.9.4</b>: 
 File consanguinity;
 <tt>ncks</tt>: CF auxiliary coords, LZ stats;
-<tt>ncap2</tt>: masks, index arrays, print attributes, OpenMP, <tt>atan2()</tt>, <tt>pow()</tt>;
+<tt>ncap2</tt>: masks, index arrays, print attributes, OpenMP, <tt>atan2()</tt>, <tt>pow()</tt></li>
 <li><b>NCO 3.9.3</b>: 
 SWAMP release;
 <tt>ncecat -u</tt>;
 <tt>wget</tt> URLs;
 GCC 4.2;
-<tt>ncap2</tt> OpenMP;
+<tt>ncap2</tt> OpenMP</li>
 <li><b>NCO 3.9.2</b>: 
 <tt>_FillValue</tt> supplants <tt>missing_value</tt>;
 <tt>UDUnits2 support</tt>;
 <tt>ncap2</tt> type-conversion support and printing;
 netCDF4 <tt>configure</tt> fixes;
-Change licenses to GPL3 and FDL1.2;
+Change licenses to GPL3 and FDL1.2</li>
 <li><b>NCO 3.9.1</b>: 
 <a href="http://nco.sf.net/nco.html#deflate">Support</a> lossless netCDF4/HDF deflation;
 Improve Intel compiler support; 
 <tt>ncap2</tt> for/while loops;
-various and sundry build fixes;
+various and sundry build fixes</li>
 <li><b>NCO 3.9.0</b>: 
 <a href="http://nco.sf.net/nco.html#nco4">Support netCDF4</a> types (<tt>ubyte</tt>, <tt>ushort</tt>, <tt>uint</tt>, <tt>int64</tt>, and <tt>uint64</tt>);
 Control <tt>ncks</tt> metadata <a href="http://nco.sf.net/nco.html#prn">copying</a>; 
 Fix <tt>ncbo</tt> packed valued <a href="#bug_ncbo_pck">bug</a> (<i>upgrade recommended</i>); 
-Improve IRIX 6.5 support; 
-<li><b>NCO 3.2.0</b>: More forgiving exclusion list (<tt>-x -v <i>var_nm</i></tt>) <a href="http://nco.sf.net/nco.html#xcl">handling</a>; Fix <tt>rmssdn</tt> normalization; Support Mac OS X on Intel; Documentation bugfixes;
-<li><b>NCO 3.1.9</b>: <tt>ncap2</tt> in RPM packages; Quieter output; AIX <tt>configure</tt> supports <tt>ncap2</tt>; Update to DAP for netCDF 3.6.2; Fix <tt>nc[erw]a</tt> for coordinate min/max/ttl; <tt>ncecat</tt> allows files to differ in record dimension size;
-<li><b>NCO 3.1.8</b>: Support <tt>_FillValue</tt> with compile-time switch; Debian package synchronized, includes <tt>ncap2</tt> 
-<li><b>NCO 3.1.7</b>: <tt>ncap2</tt> “double-parsing”, array initialization, supercedes <tt>ncap</tt>
-<li><b>NCO 3.1.6</b>: Support <a href="http://nco.sf.net/nco.html#srd">stride</a> in all hyperslabbing operators; change more WARNINGs to INFOs
-<li><b>NCO 3.1.5</b>: New <tt>ncap2</tt> array and hyperslab features; change some WARNINGs to INFOs, add Pathscale and update PGI and Intel compiler support
-<li><b>NCO 3.1.4</b>: Fix <tt>ncbo</tt> memory problem; report timer results
-<li><b>NCO 3.1.3</b>: <tt>ncap2</tt> automatically <a href="http://nco.sf.net/nco.html#att_prp">propagates</a> attributes to new/derived variables; NCO handles record variables with zero records; <a href="http://nco.sf.net/nco.html#cnv_CF_crd">support</a> CF <tt>coordinates</tt> convention; <tt>ncwa -b</tt> <a href="http://nco.sf.net/nco.html#ncwa">retains</a> degenerate dimensions; build fixes for Cray T3E, Solaris, Cygwin.
-<li><b>NCO 3.1.2</b>: <tt>ncap2</tt> control structures (conditionals, loops, etc.); keep non-processed data <a href="bug_pack_fix">packed</a> in output file; binary operators <tt>ncbo</tt> and <tt>ncflint</tt> work when only one variable has <tt>missing_value</tt> attribute; change <tt>ncra</tt> and <tt>ncea</tt> to always average coordinate variables
-<li><b>NCO 3.1.1</b>: NCO builds (again) with C++ compilers; ncap2 development code; server-side extensions
-<li><b>NCO 3.1.0</b>: MPI operators are bug-free; fix <t>./configure</t> for MPI and netCDF4; MRV algorithm speeds up <tt>ncwa</tt> 5—10 times; <tt>ncap</tt> random number generator <tt>rnd_nbr()</tt>
-<li><b>NCO 3.0.3</b>: Eliminate all critical read regions (accelerates all SMP operators); builds with netCDF4 alpha; read <t>NETCDF4_CLASSIC</t> (i.e., HDF) files automatically; write <t>NETCDF4</t> files <a href="http://nco.sf.net/nco.html#netcdf4">on request</a>; <a href="http://nco.sf.net#BM">benchmark results</a> quantify parallelism.
-<li><b>NCO 3.0.2</b>: Fewer critical read regions; all known memory leaks plugged; better Intel compiler support; <tt>SFTP</tt> protocol support; FTP protocol supports <tt>.netrc</tt>-based passwords; better model grid-property-awareness (e.g., <tt>lat_bnds</tt>); <tt>ncatted</tt> <tt>ncks</tt>, <tt>ncrename</tt> support metadata header padding with <tt>--hdr</tt>; <tt>ncbo</tt> supports heterogeneous variable ordering; <tt>ncatted</tt> bugfix
-  <li><b>NCO 3.0.1</b>: benchmarks; <tt>ncks</tt> printing tweaks; memory cleanup; <tt>ncap</tt> double-parse speedup and <a href="bug_ncap_cmt">exponentiation bugfix</a>; thread operators by default
-  <li><b>NCO 3.0.0</b>: New <tt>ncks -P</tt> print switch; <tt>ncap</tt> optimizations; <tt>-Z</tt> option supports 64-bit offsets (requires netCDF 3.6); NEC SX build improvements; support GCC 3.4.X; <tt>nco_put_vara()</tt> overloads in <tt>libnco_c++</tt>
-<li><b>NCO 2.9.9</b>: <tt>ncpdq</tt> packs/unpacks entire files; <tt>ncbo</tt> is threaded
-<li><b>NCO 2.9.8</b>: <a href="./nco.html#ncpdq"><tt>ncpdq</tt></a> released; <tt>ncwa --msk_sng</tt> consolidated mask switch; C99 compiler required
-<li><b>NCO 2.9.7</b>: Read input file lists from <tt>stdin</tt>; write <tt>nco_input_file_list</tt> attributes; add <tt>nco_put_att<int,short,long></tt> functions to libnco_c++; large file support (LFS); write <tt>nco_openmp_thread_number</tt> attribute
-<li><b>NCO 2.9.6</b>: Support <tt>-o fl_out</tt> syntax; 64-bit ABI for x86_64; <a href="http://www.debian.org">Debian</a> builds libnco_c++
-<li><b>NCO 2.9.5</b>: <tt>ncflint</tt> handles <tt>missing_value</tt> data better, is commutative when weights are equal
-<li><b>NCO 2.9.4</b>: <tt>ncecat</tt> works on pure scalar files; change to <tt>cvs.sf.net</tt>; AIX GCC builds
-<li><b>NCO 2.9.3</b>: <tt>ncra</tt> and <tt>ncea</tt> now <a name="bug_mss_val_zro_ncra">work correctly</a> when <tt>missing_value</tt> equals zero or any intermediate sums
-<li><b>NCO 2.9.2</b>: <tt>ncap</tt> <tt>S/V</tt>, <tt>S%V</tt>, and <tt>S^V</tt> <a href="#bug_ncap_cmt">operations fixed</a> (<tt>S</tt> = scalar, <tt>V</tt> = variable)
-<li><b>NCO 2.9.1</b>: <tt>ncwa</tt> works again on packed <tt>NC_FLOAT</tt> data (<a href="#bug_pck_ncwa">broke when?</a>)
-<li><b>NCO 2.9.0</b>: Complete <tt>ncap</tt> modulo operator (<tt>V%S</tt>) and generic exponentiation (<tt>V^S</tt>), scalar divided by variable (<tt>S/V</tt>); workaround stack memory problem with GCC extensions; fix <tt>make check</tt>
-<li><b>NCO 2.8.8</b>: <tt>--enable-[optimize/debug]-custom</tt> options for GCC work again (broke in 2.8.6)
-<li><b>NCO 2.8.7</b>: <tt>ncap</tt> packing works again (<a href="#bug_pck">broke in 2.8.4</a>); Cygwin builds work again
-<li><b>NCO 2.8.6</b>: AIX and IRIX builds work again; custom GCC builds with <tt>-Werror</tt>
-<li><b>NCO 2.8.5</b>: Solaris <tt>make install</tt> works; <tt>ncap</tt> changes attribute values correctly; <a href="#bld_DODS">Support DODS 3.4+, deprecate 3.3-</a>; add <tt>--enable-[optimize/debug]-custom</tt> options to <tt>./configure</tt>
-<li><b>NCO 2.8.4</b>: Index-based hyperslabs work again (<a href="#bug_idx_hyp">broke in 2.7.3</a>, <i>upgrade highly recommended</i>); <tt>ncap</tt> peak memory usage reduced still more; support for AMD Opteron x86_64 architecture
+Improve IRIX 6.5 support</li>
+<li><b>NCO 3.2.0</b>: More forgiving exclusion list (<tt>-x -v <i>var_nm</i></tt>) <a href="http://nco.sf.net/nco.html#xcl">handling</a>; Fix <tt>rmssdn</tt> normalization; Support Mac OS X on Intel; Documentation bugfixes</li>
+<li><b>NCO 3.1.9</b>: <tt>ncap2</tt> in RPM packages; Quieter output; AIX <tt>configure</tt> supports <tt>ncap2</tt>; Update to DAP for netCDF 3.6.2; Fix <tt>nc[erw]a</tt> for coordinate min/max/ttl; <tt>ncecat</tt> allows files to differ in record dimension size</li>
+<li><b>NCO 3.1.8</b>: Support <tt>_FillValue</tt> with compile-time switch; Debian package synchronized, includes <tt>ncap2</tt></li>
+<li><b>NCO 3.1.7</b>: <tt>ncap2</tt> “double-parsing”, array initialization, supercedes <tt>ncap</tt></li>
+<li><b>NCO 3.1.6</b>: Support <a href="http://nco.sf.net/nco.html#srd">stride</a> in all hyperslabbing operators; change more WARNINGs to INFOs</li>
+<li><b>NCO 3.1.5</b>: New <tt>ncap2</tt> array and hyperslab features; change some WARNINGs to INFOs, add Pathscale and update PGI and Intel compiler support</li>
+<li><b>NCO 3.1.4</b>: Fix <tt>ncbo</tt> memory problem; report timer results</li>
+<li><b>NCO 3.1.3</b>: <tt>ncap2</tt> automatically <a href="http://nco.sf.net/nco.html#att_prp">propagates</a> attributes to new/derived variables; NCO handles record variables with zero records; <a href="http://nco.sf.net/nco.html#cnv_CF_crd">support</a> CF <tt>coordinates</tt> convention; <tt>ncwa -b</tt> <a href="http://nco.sf.net/nco.html#ncwa">retains</a> degenerate dimensions; build fixes for Cray T3E, Solaris, Cygwin.</li>
+<li><b>NCO 3.1.2</b>: <tt>ncap2</tt> control structures (conditionals, loops, etc.); keep non-processed data <a href="bug_pack_fix">packed</a> in output file; binary operators <tt>ncbo</tt> and <tt>ncflint</tt> work when only one variable has <tt>missing_value</tt> attribute; change <tt>ncra</tt> and <tt>nces</tt> to always average coordinate variables</li>
+<li><b>NCO 3.1.1</b>: NCO builds (again) with C++ compilers; ncap2 development code; server-side extensions</li>
+<li><b>NCO 3.1.0</b>: MPI operators are bug-free; fix <t>./configure</t> for MPI and netCDF4; MRV algorithm speeds up <tt>ncwa</tt> 5—10 times; <tt>ncap</tt> random number generator <tt>rnd_nbr()</tt></li>
+<li><b>NCO 3.0.3</b>: Eliminate all critical read regions (accelerates all SMP operators); builds with netCDF4 alpha; read <t>NETCDF4_CLASSIC</t> (i.e., HDF) files automatically; write <t>NETCDF4</t> files <a href="http://nco.sf.net/nco.html#netcdf4">on request</a>; <a href="http://nco.sf.net#BM">benchmark results</a> quantify parallelism.</li>
+<li><b>NCO 3.0.2</b>: Fewer critical read regions; all known memory leaks plugged; better Intel compiler support; <tt>SFTP</tt> protocol support; FTP protocol supports <tt>.netrc</tt>-based passwords; better model grid-property-awareness (e.g., <tt>lat_bnds</tt>); <tt>ncatted</tt> <tt>ncks</tt>, <tt>ncrename</tt> support metadata header padding with <tt>--hdr</tt>; <tt>ncbo</tt> supports heterogeneous variable ordering; <tt>ncatted</tt> bugfix</li>
+  <li><b>NCO 3.0.1</b>: benchmarks; <tt>ncks</tt> printing tweaks; memory cleanup; <tt>ncap</tt> double-parse speedup and <a href="bug_ncap_cmt">exponentiation bugfix</a>; thread operators by default</li>
+  <li><b>NCO 3.0.0</b>: New <tt>ncks -P</tt> print switch; <tt>ncap</tt> optimizations; <tt>-Z</tt> option supports 64-bit offsets (requires netCDF 3.6); NEC SX build improvements; support GCC 3.4.X; <tt>nco_put_vara()</tt> overloads in <tt>libnco_c++</tt></li>
+<li><b>NCO 2.9.9</b>: <tt>ncpdq</tt> packs/unpacks entire files; <tt>ncbo</tt> is threaded</li>
+<li><b>NCO 2.9.8</b>: <a href="./nco.html#ncpdq"><tt>ncpdq</tt></a> released; <tt>ncwa --msk_sng</tt> consolidated mask switch; C99 compiler required</li>
+<li><b>NCO 2.9.7</b>: Read input file lists from <tt>stdin</tt>; write <tt>nco_input_file_list</tt> attributes; add <tt>nco_put_att<int,short,long></tt> functions to libnco_c++; large file support (LFS); write <tt>nco_openmp_thread_number</tt> attribute</li>
+<li><b>NCO 2.9.6</b>: Support <tt>-o fl_out</tt> syntax; 64-bit ABI for x86_64; <a href="http://www.debian.org">Debian</a> builds libnco_c++</li>
+<li><b>NCO 2.9.5</b>: <tt>ncflint</tt> handles <tt>missing_value</tt> data better, is commutative when weights are equal</li>
+<li><b>NCO 2.9.4</b>: <tt>ncecat</tt> works on pure scalar files; change to <tt>cvs.sf.net</tt>; AIX GCC builds</li>
+<li><b>NCO 2.9.3</b>: <tt>ncra</tt> and <tt>nces</tt> now <a name="bug_mss_val_zro_ncra">work correctly</a> when <tt>missing_value</tt> equals zero or any intermediate sums</li>
+<li><b>NCO 2.9.2</b>: <tt>ncap</tt> <tt>S/V</tt>, <tt>S%V</tt>, and <tt>S^V</tt> <a href="#bug_ncap_cmt">operations fixed</a> (<tt>S</tt> = scalar, <tt>V</tt> = variable)</li>
+<li><b>NCO 2.9.1</b>: <tt>ncwa</tt> works again on packed <tt>NC_FLOAT</tt> data (<a href="#bug_pck_ncwa">broke when?</a>)</li>
+<li><b>NCO 2.9.0</b>: Complete <tt>ncap</tt> modulo operator (<tt>V%S</tt>) and generic exponentiation (<tt>V^S</tt>), scalar divided by variable (<tt>S/V</tt>); workaround stack memory problem with GCC extensions; fix <tt>make check</tt></li>
+<li><b>NCO 2.8.8</b>: <tt>--enable-[optimize/debug]-custom</tt> options for GCC work again (broke in 2.8.6)</li>
+<li><b>NCO 2.8.7</b>: <tt>ncap</tt> packing works again (<a href="#bug_pck">broke in 2.8.4</a>); Cygwin builds work again</li>
+<li><b>NCO 2.8.6</b>: AIX and IRIX builds work again; custom GCC builds with <tt>-Werror</tt></li>
+<li><b>NCO 2.8.5</b>: Solaris <tt>make install</tt> works; <tt>ncap</tt> changes attribute values correctly; <a href="#bld_DODS">Support DODS 3.4+, deprecate 3.3-</a>; add <tt>--enable-[optimize/debug]-custom</tt> options to <tt>./configure</tt></li>
+<li><b>NCO 2.8.4</b>: Index-based hyperslabs work again (<a href="#bug_idx_hyp">broke in 2.7.3</a>, <i>upgrade highly recommended</i>); <tt>ncap</tt> peak memory usage reduced still more; support for AMD Opteron x86_64 architecture</li>
 <li><b>NCO 2.8.3</b>: Fix big <tt>ncap</tt> memory leak; fix regressions; remove scary packing warnings</li>
 <li><b>NCO 2.8.2</b>: <tt>ncbo</tt> handles distinct <tt>missing_value</tt>s correctly; improve error diagnostics</li>
 <li><b>NCO 2.8.1</b>: <a href="./nco.html#rx">“Variable wildcarding”</a>—extended regular expressions in <tt>-v var,...</tt> lists—support in all operators</li>
@@ -747,7 +845,7 @@ Improve IRIX 6.5 support;
 <li><b>NCO 2.6.3</b>: Mac OS X builds work seamlessly; documentation fixed</li>
 <li><b>NCO 2.6.2</b>: Major improvements in autotools support; <tt>ncap</tt> supports user-defined dimensions</li>
 <li><b>NCO 2.6.1</b>: Minor fix to unpacking support</li>
-<li><b>NCO 2.6.0</b>: All arithmetic operators (<tt>ncap</tt>, <tt>ncdiff</tt>, <tt>ncea</tt>, <tt>ncflint</tt>, <tt>ncra</tt>) support unpacking</li>
+<li><b>NCO 2.6.0</b>: All arithmetic operators (<tt>ncap</tt>, <tt>ncdiff</tt>, <tt>nces</tt>, <tt>ncflint</tt>, <tt>ncra</tt>) support unpacking</li>
 <li><b>NCO 2.5.6</b>: Handle <tt>missing_value</tt> correctly for integer variables in <tt>ncra</tt>, merge <tt>autoconf</tt> build</li>
 <li><b>NCO 2.5.5</b>: Handle files without existing global “<tt>History</tt>” attribute correctly</li>
 <li><b>NCO 2.5.4</b>: Add support NEC-SX support; update Cray support; small build changes</li>
@@ -773,14 +871,14 @@ Improve IRIX 6.5 support;
 <li><b>NCO 2.1.0</b>: <tt>ncap</tt> full lexer/parser operational</li>
 <li><b>NCO 2.0.3</b>: small fixes to 2.0.0 (e.g., <tt>ncks</tt> printing)</li>
 <li><b>NCO 2.0.2</b>: Add packing/unpacking capabilities based on <tt>scale_factor</tt> and <tt>add_offset</tt> convention</li>
-<li><b>NCO 2.0.1</b>: Add user-configurable multi-threaded capability to arithmetic-intensive operators <tt>ncwa</tt>, <tt>ncea</tt>, and <tt>ncra</tt></li>
-<li><b>NCO 2.0.0</b>: (RPM available) <a href="./nco_news.shtml#20010507">20010507</a>: Switched all internal calls to netCDF 3.x API</li>
+<li><b>NCO 2.0.1</b>: Add user-configurable multi-threaded capability to arithmetic-intensive operators <tt>ncwa</tt>, <tt>nces</tt>, and <tt>ncra</tt></li>
+<li><b>NCO 2.0.0</b>: (RPM available) <a href="./nco_news.shtml#20010507">20010507</a>: Switched all internal calls to netCDF 3.x API</li>
 <li><b>NCO 1.2.2</b>: <a href="./nco_news.shtml#20010211">20010211</a>: Allow weights with
 <tt>ncwa</tt> in min/max/ttl operations; easier building with HDF4. 
 <tt>ncrename</tt> can now work on specific variables rather than whole file.
 <tt>ncks</tt> has <tt>-q</tt> option for cleaner printing</li>
 <li><b>NCO 1.2.1</b>: <a href="./nco_news.shtml#20000828">20000828</a>: Added type-conversion of integers to floating point before arithmetic; fixed broken <tt>-v</tt> option</li>
-<li><b>NCO 1.2</b>: <a href="./nco_news.shtml#20000730">20000730</a>: Added non-linear operations to <tt>ncra/ncea</tt> and <tt>ncwa</tt>: min,max,total,rms,rmssdn,sqrt. Added <a href="http://opendap.org">DODS</a> compliance.</li>
+<li><b>NCO 1.2</b>: <a href="./nco_news.shtml#20000730">20000730</a>: Added non-linear operations to <tt>ncra/nces</tt> and <tt>ncwa</tt>: min,max,total,rms,rmssdn,sqrt. Added <a href="http://opendap.org">DODS</a> compliance.</li>
 <li><b>NCO 1.1.48</b>: <a href="./nco_news.shtml#20000515">20000515</a>: Potentially serious bugfix to <tt>ncdiff</tt>, recommend upgrade</li>
 <li><b>NCO 1.1.47</b>: <a href="./nco_news.shtml#20000510">20000510</a>: Improved <tt>ncra</tt> and <tt>ncrcat</tt> to allow lazier specifications of input files</li> 
 </ul>
@@ -788,6 +886,7 @@ Improve IRIX 6.5 support;
 <!-- End http://nco.sf.net#vrs -->
 
 <!-- http://nco.sf.net#bnr -->
+<!-- http://nco.sf.net#binaries -->
 <dt><a name="Binaries"></a><a name="bnr"></a></dt>
 <h2>Get NCO Binary Executables</h2>
 
@@ -810,8 +909,8 @@ the directory index <a href="src">here</a>.
 
 <a name="aix"></a><a name="ibm"></a> <!-- http://nco.sf.net#aix -->
 <h3><a href="http://www.ibm.com/servers/aix">AIX</a> on IBM mainframes</h3>
-<ul> <!-- http://nco.sf.net/src/nco-4.0.8.aix53.tar.gz -->
-<li><a href="src/nco-4.0.8.aix53.tar.gz">nco-4.0.8.aix53.tar.gz</a> (<!--#fsize file="src/nco-4.0.8.aix53.tar.gz"-->): Executables AIX 5.3-compatible (last updated <!--#flastmod file="src/nco-4.0.8.aix53.tar.gz"-->)</li>
+<ul> <!-- http://nco.sf.net/src/nco-4.2.5.aix53.tar.gz -->
+<li><a href="src/nco-4.2.5.aix53.tar.gz">nco-4.2.5.aix53.tar.gz</a> (<!--#fsize file="src/nco-4.2.5.aix53.tar.gz"-->): Executables AIX 5.3-compatible (last updated <!--#flastmod file="src/nco-4.2.5.aix53.tar.gz"-->). Maintained by NCO Project.</li>
 Newer (beta- or pre-release) packages are sometimes available for AIX users as described <a href="http://nco.cvs.sf.net/nco/nco/doc/beta.txt">here</a>.
 Thanks to NSF for supporting AIX machines at NCAR over the years. 
 </ul>
@@ -821,20 +920,20 @@ Thanks to NSF for supporting AIX machines at NCAR over the years.
 <h3><a href="http://www.debian.org">Debian</a> and <a href="http://www.ubuntu.com">Ubuntu</a> GNU/Linux</a></h3>
 <ul>
 <!--
-<li><a href="http://www.debian.org">Debian</a> and <a href="http://www.ubuntu.com">Ubuntu</a> GNU/Linux-compatible Intel systems, prebuilt binary executable <a href="http://www.debian.org">deb</a>: <a href="http://packages.debian.org/testing/math/nco.html">nco-4.0.9</a></li>
+<li><a href="http://www.debian.org">Debian</a> and <a href="http://www.ubuntu.com">Ubuntu</a> GNU/Linux-compatible Intel systems, prebuilt binary executable <a href="http://www.debian.org">deb</a>: <a href="http://packages.debian.org/testing/math/nco.html">nco-4.3.9</a></li>
 -->
 <a href="http://packages.debian.org/unstable/science/nco">Debian NCO</a> and 
 <a href="http://packages.ubuntu.com/natty/nco">Ubuntu NCO</a> homepages.
 ‘<tt>aptitude install nco</tt>’ installs the standard NCO for your Debian-compatible OS.
-NCO packages in the Debian/Ubuntu repositories (i.e., Sid and Natty) generally lag the packages distributed here by 6–12 months.
+NCO packages in the Debian/Ubuntu repositories (i.e., Sid and Raring) generally lag the packages distributed here by 6–12 months.
 <a name="beta"></a><a name="prerelease"> <!-- http://nco.sf.net#beta -->
 Newer (beta- or pre-release) packages are often available for intrepid Debian/Ubuntu users as described <a href="http://nco.cvs.sf.net/nco/nco/doc/beta.txt">here</a>.
-<dt>Debian package for most recent NCO release (install with, e.g., ‘<tt>dpkg --install nco_4.0.9-1_i386.deb</tt>’):</dt>
-<li><a href="src/nco_4.0.9-1_amd64.deb">nco_4.0.9-1_amd64.deb</a> (<!--#fsize file="src/nco_4.0.9-1_amd64.deb"-->): Executables AMD64-compatible (last updated <!--#flastmod file="src/nco_4.0.9-1_amd64.deb"-->)</li>
-<li><a href="src/nco_4.0.9-1.dsc">nco_4.0.9-1.dsc</a> (<!--#fsize file="src/nco_4.0.9-1.dsc"-->): Description (last updated <!--#flastmod file="src/nco_4.0.9-1.dsc"-->)</li>
-<li><a href="src/nco_4.0.9-1_amd64.changes">nco_4.0.9-1_amd64.changes</a> (<!--#fsize file="src/nco_4.0.9-1_amd64.changes"-->): Changes since last deb package (last updated <!--#flastmod file="src/nco_4.0.9-1_amd64.changes"-->)</li>
-<li><a href="src/nco_4.0.9.orig.tar.gz">nco_4.0.9.orig.tar.gz</a> (<!--#fsize file="src/nco_4.0.9.orig.tar.gz"-->): Upstream Source (last updated <!--#flastmod file="src/nco_4.0.9.orig.tar.gz"-->)</li>
-<li><a href="src/nco_4.0.9-1.diff.gz">nco_4.0.9-1.diff.gz</a> (<!--#fsize file="src/nco_4.0.9-1_amd64.changes"-->): Debian patch to upstream source (last updated <!--#flastmod file="src/nco_4.0.9-1_amd64.changes"-->)</li>
+<dt>Debian package for most recent NCO release (install with, e.g., ‘<tt>dpkg --install nco_4.3.9-1_i386.deb</tt>’):</dt>
+<li><a href="src/nco_4.3.9-1_amd64.deb">nco_4.3.9-1_amd64.deb</a> (<!--#fsize file="src/nco_4.3.9-1_amd64.deb"-->): Executables AMD64-compatible (last updated <!--#flastmod file="src/nco_4.3.9-1_amd64.deb"-->)</li>
+<li><a href="src/nco_4.3.9-1.dsc">nco_4.3.9-1.dsc</a> (<!--#fsize file="src/nco_4.3.9-1.dsc"-->): Description (last updated <!--#flastmod file="src/nco_4.3.9-1.dsc"-->)</li>
+<li><a href="src/nco_4.3.9-1_amd64.changes">nco_4.3.9-1_amd64.changes</a> (<!--#fsize file="src/nco_4.3.9-1_amd64.changes"-->): Changes since last deb package (last updated <!--#flastmod file="src/nco_4.3.9-1_amd64.changes"-->)</li>
+<li><a href="src/nco_4.3.9.orig.tar.gz">nco_4.3.9.orig.tar.gz</a> (<!--#fsize file="src/nco_4.3.9.orig.tar.gz"-->): Upstream Source (last updated <!--#flastmod file="src/nco_4.3.9.orig.tar.gz"-->)</li>
+<li><a href="src/nco_4.3.9-1.diff.gz">nco_4.3.9-1.diff.gz</a> (<!--#fsize file="src/nco_4.3.9-1_amd64.changes"-->): Debian patch to upstream source (last updated <!--#flastmod file="src/nco_4.3.9-1_amd64.changes"-->)</li>
 Thanks to Daniel Baumann, Barry deFreese, Francesco Lovergine, 
 Brian Mays, Rorik Peterson, and Matej Vela for their help packaging
 NCO for Debian over the years. 
@@ -845,14 +944,13 @@ NCO for Debian over the years.
 <a name="centos"></a><a name="cnt"></a><a name="rhel"></a> <!-- http://nco.sf.net#centos --> <!-- http://nco.sf.net#cnt --> <!-- http://nco.sf.net#rhel -->
 <h3><a href="http://fedora.redhat.com">Fedora</a>, RedHat Enterprise Linux (<a href="http://www.redhat.com/rhel">RHEL</a>), and Community ENTerprise Operating System (<a href="http://www.centos.org">CentOS</a>) GNU/Linux</h3>
 <ul>
-<dt>The <a href="https://admin.fedoraproject.org/pkgdb/packages/name/nco">Fedora NCO</a> RPMs are usually up-to-date so that ‘<tt>yum install nco</tt>’ might install, e.g., 
-<li><a href="http://rpmfind.net/linux/RPM/fedora/devel/x86_64/nco-3.9.8-1.fc11.x86_64.html">nco-3.9.8-1.fc11.x86_64.rpm</a>: Executables for x86_64/Fedora Core 11-compatible environments</li></dt>
-<dt>If not, try our own most recent self-built NCO RPMs (install with, e.g., ‘<tt>yum install nco-3.9.5-1.fc7.i386.rpm</tt>’):
+<dt>The <a href="https://admin.fedoraproject.org/pkgdb/packages/name/nco">Fedora NCO</a> RPMs are usually up-to-date so that ‘<tt>yum install nco</tt>’ will install a recent version. 
+A comprehensive list of pre-built RPMs for many OS's is <a href="http://rpmfind.net/linux/rpm2html/search.php?query=nco">here</a>.
+<li><a href="ftp://rpmfind.net/linux/fedora/linux/development/rawhide/x86_64/os/Packages/n/nco-4.3.2-1.fc20.x86_64.rpm">nco-4.3.2-1.fc20.x86_64.rpm</a>: Executables for x86_64/Fedora Core 20-compatible environments</li></dt>
+<dt>If not, try our own most recent (we stopped building RPMs many years ago and are looking for a volunteer to do this instead) self-built NCO RPMs (install with, e.g., ‘<tt>yum install nco-3.9.5-1.fc7.i386.rpm</tt>’):
 <li><a href="src/nco-3.9.5-1.fc7.i386.rpm">nco-3.9.5-1.fc7.i386.rpm</a> (<!--#fsize file="src/nco-3.9.5-1.fc7.i386.rpm"-->): Executables for i386/Fedora Core 7-compatible environments (last updated <!--#flastmod file="src/nco-3.9.5-1.fc7.i386.rpm"-->)</li>
 <li><a href="src/nco-3.9.5-1.fc7.src.rpm">nco-3.9.5-1.fc7.src.rpm</a> (<!--#fsize file="src/nco-3.9.5-1.fc7.src.rpm"-->): Source (last updated <!--#flastmod file="src/nco-3.9.5-1.fc7.src.rpm"-->)</li>
 <li><a href="src/nco-3.9.5-1.x86_64.rpm">nco-3.9.5-1.x86_64.rpm</a> (<!--#fsize file="src/nco-3.9.5-1.x86_64.rpm"-->): Executables for x86_64/CentOS 5-compatible environments (last updated <!--#flastmod file="src/nco-3.9.5-1.x86_64.rpm"-->)</li>
-<li>Scripts for generating executables for recent (4.0.x, ~2011) versions of NCO for RedHat Enterprise Linux 5 (RHEL5) and CentOS5 platforms are described <a href="http://sourceforge.net/projects/nco/forums/forum/9830/topic/4089501">here</a>.</li>
-<li>Older information on building x86_64 RPMs is available <a href="http://dust.ess.uci.edu/wangd/s9y">here</a>.</li>
 Volunteers have updated and maintained fairly up-to-date NCO packages in Fedora since it was added by Ed Hill in about 2004.
 Thanks to Patrice Dumas, Ed Hill, and Orion Poplawski for packaging NCO RPMs over the years.
 Thanks to Gavin Burris and Kyle Wilcox for documenting build procedures for RHEL and CentOS.
@@ -882,25 +980,47 @@ Thanks to Gavin Burris and Kyle Wilcox for documenting build procedures for RHEL
 wget http://ps.uci.edu/~pscsg/nco/nco-4.0.7_x86_10.6.dmg -O /tmp/nco-4.0.7_x86_10.6.dmg
 /usr/bin/scp /tmp/nco-4.0.7_x86_10.6.dmg zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 scp /tmp/nco-4.0.7_x86_10.6.dmg dust.ess.uci.edu:/var/www/html/nco/src
+/usr/bin/scp /home/pvicente/windows_setup/nco-4.3.8.macosx.10.8.tar.gz pvicente,nco at web.sf.net:/home/project-web/nco/htdocs/src
 -->
-Use the <a href="http://en.wikipedia.org/wiki/Apple_Disk_Image">DMG</a> files if you do not have MacPorts installed. You may need to add <tt>/opt/local/bin</tt> to your executable path to access the operators.
+The most up-to-date binaries are probably those in the tarball below. Those unfamiliar with installing executables from tarballs may try the (older) <a href="http://en.wikipedia.org/wiki/Apple_Disk_Image">DMG</a> files (you may need to add <tt>/opt/local/bin</tt> to your executable path to access those operators).
+<li><a href="src/nco-4.3.8.macosx.10.8.tar.gz">nco-4.3.8.macosx.10.8.tar.gz</a> (<!--#fsize file="src/nco-4.3.8.macosx.10.8.tar.gz"-->): Executables MacOSX 10.6-compatible (last updated <!--#flastmod file="src/nco-4.3.8.macosx.10.8.tar.gz"-->). 
+(NB: These executables require the <a href="http://trac.macosforge.org/projects/macports/wiki">MacPorts</a> dependencies for <a href="http://svn.macports.org/repository/macports/trunk/dports/science/nco">NCO</a>). Maintained by NCO Project.</li>
 <li><a href="src/nco-4.0.3_x86_10.6.dmg">nco-4.0.3_x86_10.6.dmg</a> (<!--#fsize file="src/nco-4.0.3_x86_10.6.dmg"-->): For Mac OS 10.6 (last updated <!--#flastmod file="src/nco-4.0.3_x86_10.6.dmg"-->). Maintained by Chad Cantwell.</li>
 <li><a href="src/nco-4.0.7_x86_10.6.dmg">nco-4.0.7_x86_10.6.dmg</a> (<!--#fsize file="src/nco-4.0.7_x86_10.6.dmg"-->): For Mac OS 10.6 (last updated <!--#flastmod file="src/nco-4.0.7_x86_10.6.dmg"-->). Maintained by Chad Cantwell.</li>
 <li><a href="http://fink.sf.net">Fink</a> packages for <a href="http://fink.sf.net/pdb/package.php/nco">NCO</a>: Currently NCO 3.9.5. Maintained by Alexander Hansen.</li> 
-<li><a href="http://trac.macosforge.org/projects/macports/wiki">MacPorts</a> infrastructure for <a href="http://svn.macports.org/repository/macports/trunk/dports/science/nco">NCO</a>:
- <a href="http://svn.macports.org/repository/macports/trunk/dports/science/nco">Portfile</a>
-  for NCO 3.9.9. Maintained by Takeshi Enomoto.</li>
+<li><a href="http://trac.macosforge.org/projects/macports/wiki">MacPorts</a> infrastructure for <a href="http://svn.macports.org/repository/macports/trunk/dports/science/nco">NCO</a>: <a href="http://svn.macports.org/repository/macports/trunk/dports/science/nco">Portfile</a> for NCO 3.9.9. Maintained by Takeshi Enomoto.</li>
 </ul>
 
-<a name="cygwin"></a><a name="dbn"></a> <!-- http://nco.sf.net#cygwin -->
-<a name="windows"></a><a name="ubn"></a> <!-- http://nco.sf.net#windows -->
-<h3><a href="http://www.microsoft.com">Microsoft</a> Windows</a> running <a href="http://www.cygwin.org">Cygwin</a></h3>
+<a name="visual"></a> <!-- http://nco.sf.net#visual -->
+<a name="mvs"></a> <!-- http://nco.sf.net#mvs -->
+<a name="windows"></a> <!-- http://nco.sf.net#windows -->
+<h3><a href="http://www.microsoft.com">Microsoft</a> Windows</a>
+(native build, compiled with <a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express">Visual Studio 2010</a>, use this if unsure)</h3>
+These native Windows executables should be stand-alone, i.e., not
+require users to have any additional software. 
+This is a new feature as of 20120615, please send us feedback. 
+To build NCO from source yourself using MSVC or Qt, please see the <a href="nco_qt_msvc.shtml">NCO Qt/MSVC build</a> page.
 <ul>
-<li><a href="src/nco-4.0.6.win32.cygwin.tar.gz">nco-4.0.6.win32.cygwin.tar.gz</a> (<!--#fsize file="src/nco-4.0.6.win32.cygwin.tar.gz"-->): Executables Win32-compatible (last updated <!--#flastmod file="src/nco-4.0.6.win32.cygwin.tar.gz"-->).</li>
+<!-- Copy files from http://glace.ess.uci.edu
+wget http://glace.ess.uci.edu/pvicente/windows_setup/nco-4.3.9.windows.mvs.exe -O /tmp/nco-4.3.9.windows.mvs.exe
+/usr/bin/scp /home/pvicente/nco/doc/index.shtml pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+/usr/bin/scp /home/pvicente/windows_setup/nco-4.3.9.windows.mvs.exe pvicente,nco at web.sf.net:/home/project-web/nco/htdocs/src
+/usr/bin/scp /home/pvicente/windows_setup/nco-4.3.9.win32.cygwin.tar.gz pvicente,nco at web.sf.net:/home/project-web/nco/htdocs/src
+/usr/bin/scp /home/pvicente/windows_setup/nco-4.3.9.macosx.10.8.tar.gz pvicente,nco at web.sf.net:/home/project-web/nco/htdocs/src
+scp /tmp/nco-4.3.6.windows.mvs.exe dust.ess.uci.edu:/var/www/html/nco/src
+-->
+<li><a href="src/nco-4.3.8.windows.mvs.exe">nco-4.3.8.windows.mvs.exe</a> (<!--#fsize file="src/nco-4.3.8.windows.mvs.exe"-->) : Windows Self-Extracting Installer (last updated <!--#flastmod file="src/nco-4.3.8.windows.mvs.exe"-->). Maintained by NCO Project.</li>
+</ul>
+
+<a name="cygwin"></a> <!-- http://nco.sf.net#cygwin -->
+<h3><a href="http://www.microsoft.com">Microsoft</a> Windows</a> (running <a href="http://www.cygwin.org">Cygwin</a> environment, compiled with GNU-toolchain)</h3>
+<ul>
+<li><a href="src/nco-4.3.8.win32.cygwin.tar.gz">nco-4.3.8.win32.cygwin.tar.gz</a> (<!--#fsize file="src/nco-4.3.8.win32.cygwin.tar.gz"-->): Executables Cygwin-compatible (last updated <!--#flastmod file="src/nco-4.3.8.win32.cygwin.tar.gz"-->). Maintained by NCO Project.</li>
 First install <tt>curl</tt> (in the "Web" category of Cygwin setup),
 and point the environment variable <tt>UDUNITS2_XML_PATH</tt> to the 
 <tt>udunits2.xml</tt> file, e.g., with
 <tt>export UDUNITS2_XML_PATH='/usr/local/share/udunits/udunits2.xml'</tt>. 
+Thanks to Mark Hadfield for creating Cygwin tarballs.
 Thanks to Cygnus Solutions and RedHat Inc. for developing and supporting Cygwin over the years. 
 </ul>
 
@@ -909,6 +1029,7 @@ Thanks to Cygnus Solutions and RedHat Inc. for developing and supporting Cygwin
 
 <!-- http://nco.sf.net#RTFM -->
 <dt><a name="RTFM"></a></dt>
+<dt><a name="rtfm"></a></dt>
 <h2>Documentation and User's Guide</h2> 
 <p>The NCO User's Guide is available for reading in these formats:
 <ul>
@@ -923,28 +1044,34 @@ Thanks to Cygnus Solutions and RedHat Inc. for developing and supporting Cygwin
 </ul>
 <tt>nco.texi</tt> is the most up-to-date.
 Files <tt>nco.dvi</tt>, <tt>nco.ps</tt>, and <tt>nco.pdf</tt> are
-the most complete and contain all the mathematical formulae (typeset
-with TeX) missing from the screen-oriented formats.
+contain all the mathematical formulae (typeset with TeX) missing from
+the screen-oriented formats. 
 The screen-oriented formats—<tt>nco.html</tt>,
 <tt>nco.info</tt>, <tt>nco.txt</tt>, and <tt>nco.xml</tt>—contain 
 all the documentation except the highly mathematical sections.
 
+<!--
 <h3>Wiki:</h3>
 <ul>
-<li>As of August, 2008, NCO has a <a href="http://nco.wiki.sourceforge.net">Wiki</a>.
-The Wiki contains a <a href="http://nco.wiki.sourceforge.net/Cookbook">Cookbook</a>
-of NCO examples not found in the manual. 
-Volunteers are encourage to add their own “NCO Hacks” to this cookbook!
+<li>NCO had a <a href="http://nco.wiki.sf.net">Wiki</a> for a few
+  years beginning in August, 2008. 
+  The Wiki contained a <a href="http://nco.wiki.sf.net/Cookbook">Cookbook</a> 
+  of NCO examples not found in the manual. 
+  Volunteers are encouraged to add their own “NCO Hacks” to this cookbook!</li>
 </ul>
+-->
 
 <h3>Other documentation:</h3>
 <ul>
 <li>This <a href="http://dust.ess.uci.edu/doc/abb/abb.pdf">abbreviation key</a> unlocks the mysteries of the source code abbreviations and acronyms.</li>
 
+<!-- This documentation went MIA sometime in 2010:
 <li>Unidata netCDF for Developers Workshop <a href="http://www.unidata.ucar.edu/software/netcdf/docs/workshop/utilities/Nco.html">NCO examples</a></li>
+-->
 </ul>
 
 <!-- This documentation went MIA sometime in 2004:
+<a href="http://www.ncl.ucar.edu/Training/Workshops/PPTS/nco.ppt">Slideshow</a> and
 <a href="http://www.cgd.ucar.edu/csm/support/Document/pdf/nco.pdf">pamphlet</a> and
 <a href="http://www.cgd.ucar.edu/csm/support/Document/shows/nco/nco_files/v3_document.htm">slide presentation</a> 
 introduce and summarize the NCO operators.
@@ -969,18 +1096,16 @@ Pre-built executables of some versions of NCO for the operating
 systems <a href="#Download">described above</a> (Debian-compatible
 GNU/Linux, Fedora/RedHat GNU/Linux, Gentoo GNU/Linux, and
 Mac OS X). 
-If you have an account at UCI or SDSC, try the locations in my
-personal home directories listed below (AIX, IRIX).
-At NCAR, first try <tt>/usr/local/bin</tt> (AIX, IRIX).
-Otherwise, you are on your own.</li>
+Otherwise, you may be on your own.</li>
 <a name="NCAR"></a> <!-- http://nco.sf.net#NCAR -->
 <a name="ncar"></a> <!-- http://nco.sf.net#ncar -->
 <li><i>Does NCAR support NCO?</i>
 The NCAR CISL Technical Consulting Group (TCG) supports NCO like other
 community software packages such as <tt>lapack</tt>. 
 No other NCAR division has coordinated NCO support.
-The NCAR CISL-suported executables are in <tt>/usr/local/bin</tt>.
-If you notice problems with the NCO installation on SCD machines,
+The NCAR CISL-suported executables are made available through
+“modules” so try <tt>module add nco</tt>.
+If you notice problems with the NCO installation on CISL machines,
 or if you would benefit from a more recent release or patch, then
 inform the relevant system administrators, e.g.,
 <a href="mailto:consult1 at ncar.ucar.edu">NCAR User Support</a>.
@@ -1017,13 +1142,15 @@ The best way to acquire NCO sources is with <a href="http://www.cvshome.org">CVS
 The second best way is to download the source as a compressed tarfile:
 <ul>
 <li>
-<a href="src/nco-4.0.9.tar.gz">nco-4.0.9.tar.gz</a> 
-(<!--#fsize file="src/nco-4.0.9.tar.gz"--> compressed tar-file)<br>
-<!--#exec cmd="openssl dgst -md5 src/nco-4.0.9.tar.gz"--><br>
-<!--#exec cmd="openssl dgst -sha1 src/nco-4.0.9.tar.gz"--> 
+<a href="src/nco-4.3.9.tar.gz">nco-4.3.9.tar.gz</a> 
+(<!--#fsize file="src/nco-4.3.9.tar.gz"--> compressed tar-file)<br>
+<!--#exec cmd="openssl dgst -md5 src/nco-4.3.9.tar.gz"--><br>
+<!--#exec cmd="openssl dgst -sha1 src/nco-4.3.9.tar.gz"--> 
 </li>
 </ul>
 
+<!-- Equivalent source browsing in Unidata's netCDF SVN repository:
+     http://svn.unidata.ucar.edu/repos/netcdf/trunk/ncdump/nccopy.c -->
 <p>NCO's browsable
 <a href="http://nco.cvs.sf.net/nco/nco">CVS Repository</a> 
 contains up-to-the-minute sources and is the easiest way to stay
@@ -1041,19 +1168,19 @@ Hit <tt>return</tt> when asked for the CVS password.
 This login procedure is only required the first time you access the CVS server.
 Then you may retrieve any NCO distribution you wish.
 Usually you wish to retrieve a recent tagged (i.e., released) version.
-This command retrieves and places NCO version <tt>4.0.9</tt> (which is
-tagged as <tt>nco-4_0_9</tt> due to CVS rules) into local directory
-<tt>nco-4.0.9</tt>:   
-<p><tt>cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -r nco-4_0_9 -d nco-4.0.9 nco</tt></p>
+This command retrieves and places NCO version <tt>4.3.9</tt> (which is
+tagged as <tt>nco-4_3_9</tt> due to CVS rules) into local directory
+<tt>nco-4.3.9</tt>:   
+<p><tt>cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -r nco-4_3_9 -d nco-4.3.9 nco</tt></p>
 This command retrieves the current (“bleeding edge”)
 development version of NCO into a local directory named <tt>nco</tt>:
 <p><tt>cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -kk nco</tt></p>
 Track changes to the development version using
 <p><tt>cd nco;cvs update -kk</tt></p>
 One difference between running a "tagged" release 
-(e.g., <tt>nco-4_0_9</tt>) and the development version is that the
+(e.g., <tt>nco-4_3_9</tt>) and the development version is that the
 tagged release operators will print a valid version number (e.g.,
-<tt>4.0.9</tt>) when asked to do so with the <tt>-r</tt> flag
+<tt>4.3.9</tt>) when asked to do so with the <tt>-r</tt> flag
 (e.g., <tt>ncks -r</tt>).
 The development version simply places today's date in place of the
 version.
@@ -1072,7 +1199,7 @@ Source documentation for NCO and NetCDF4(alpha13)</a></li>
 </ul>
 <p>Please be aware that the documentation may be slightly inaccurate and 
 infrequently updated. Comments and suggestions are certainly welcomed on the 
- <a href="http://sourceforge.net/projects/nco/forums/forum/9829">forums</a>.
+ <a href="http://sf.net/projects/nco/forums/forum/9829">forums</a>.
 </p>
 </ul>
 <hr></p>
@@ -1081,59 +1208,105 @@ infrequently updated. Comments and suggestions are certainly welcomed on the
 <!-- http://nco.sf.net#bld -->
 <dt><a name="Rqr"></a><a name="rqr"></a></dt> <!-- http://nco.sf.net#rqr -->
 <dt><a name="bld"></a></dt> <!-- http://nco.sf.net#bld -->
-<dt><a name="apt"></a></dt> <!-- http://nco.sf.net#apt -->
-<dt><a name="yum"></a></dt> <!-- http://nco.sf.net#yum -->
 <dt><a name="cmp"></a></dt> <!-- http://nco.sf.net#cmp -->
 <h2>Compilation Requirements</h2>
 
 <ul><b>Best Practices:</b>
 
 <a name="bld_rqr"></a> <!-- http://nco.sf.net#bld_rqr -->
-Building NCO yourself can be painful, so we recommend you first try the pre-built binaries for your system, e.g., 
+<li>Although building NCO yourself can be easy, sexy, and lucrative,
+we recommend that you first try the pre-built binaries for your
+system, e.g.,  
 <tt>
-<dt>sudo aptitude install nco # Debian-based systems like Ubuntu</dt>
-<dt>sudo yum-install nco      # RPM-based systems like Fedora</dt>
+<dt>sudo aptitude install nco # Debian-based systems like Debian, Mint, Ubuntu</dt>
+<dt>sudo yum-install nco      # RPM-based systems like CentOS, Fedora, RHEL</dt>
 </tt>
-If the pre-built executables do not satisfy you, then the recommended first steps to build (i.e., compile, for the most part) NCO from source code are to install
-<a href="http://www.antlr.org">ANTLR 2.7.x (not version 3.x!)</a> (required for <tt>ncap2</tt>), 
+If the pre-built executables do not satisfy you, or are out-of-date
+and you want the latest, greatest NCO features, then the recommended
+first steps to build (i.e., compile, for the most part) NCO from
+source code are to install 
+<a href="http://www.antlr.org">ANTLR 2.7.x</a> (not version 3.x or 4.x!) (required for <tt>ncap2</tt>), 
 <a href="http://www.gnu.org/software/gsl">GSL</a> (desirable for <tt>ncap2</tt>), 
 <a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a> (absolutely required), 
 <a href="http://opendap.org">OPeNDAP</a> (enables network transparency), and
 <a href="http://www.unidata.ucar.edu/packages/udunits">UDUnits</a> (allows dimensional unit transformations) 
 before building NCO.
-If possible build these all with the same compiler (and switches).
+If possible, install this software stack from pre-built binaries 
+(commands to do so on Debian and RPM systems are given just below).
+Failing that (e.g., you lack root access or are on a non-package
+system such as AIX), build these all with the same compiler (and switches).
+Recent versions of netCDF automatically build OPeNDAP and UDUnits.
 NCO is mostly written in C99, and although you <i>may</i> mix and
 match compilers, this is often difficult in practice and is not recommended.
 The exception is <tt>ncap2</tt> which is written in C++.
 ANTLR, OPeNDAP, and NCO must be built with the same C++ compiler
 to properly resolve the C++ name-mangling.
 NCO does not yet support newer ANTLR versions because the
-ANTLR 3.x C++ interface is incomplete.
+ANTLR 3.x and 4.x C++ interfaces are incomplete.
 
-It is possible and often preferable to install most of the
-pre-requisite and optional software from pre-compiled packages on
-modern Debian-based systems with
+<dt><a name="apt"></a></dt> <!-- http://nco.sf.net#apt -->
+<dt><a name="aptitude"></a></dt> <!-- http://nco.sf.net#aptitude -->
+For the reasons explained above (compiler compatibility) install as
+much pre-requisite and optional software as possible from pre-compiled
+packages. 
+This is easy on modern package-oriented OSs. 
+For Debian-based systems:
 <tt>
 <dt>sudo aptitude install antlr libantlr-dev # ANTLR</dt>
-<dt>sudo aptitude install libcurl4-gnutls-dev libexpat1-dev libxml2-dev # DAP-prereqs</dt>
+<dt>sudo aptitude install libcurl4-gnutls-dev libexpat1-dev libxml2-dev # DAP-prereqs (curl, expat XML parser) </dt>
 <dt>sudo aptitude install bison flex gcc g++ # GNU toolchain</dt>
 <dt>sudo aptitude install gsl-bin libgsl0-dev # GSL</dt>
 <dt>sudo aptitude install libnetcdf6 libnetcdf-dev netcdf-bin # netCDF and DAP</dt>
+<dt>sudo aptitude install libhdf5-serial-dev # HDF5</dt>
 <dt>sudo aptitude install udunits-bin libudunits2-0 libudunits2-dev # UDUnits</dt>
+</tt>
 
-</tt>or, on RPM-based systems, with
+<dt><a name="yum"></a></dt> <!-- http://nco.sf.net#yum -->
+For RPM-based systems:
 <tt>
-<dt>sudo yum install antlr antlr-c++-devel # ANTLR</dt>
-<dt>sudo yum install curl-devel libxml2-devel # DAP-prereqs</dt>
-<dt>sudo yum install libdap libdap-devel libnc-dap libnc-dap-devel # DAP</dt>
-<dt>sudo yum install bison flex gcc g++ # GNU toolchain</dt>
-<dt>sudo yum install gsl gsl-devel # GSL</dt>
-<dt>sudo yum install netcdf netcdf-devel # netCDF</dt>
-<dt>sudo yum install librx librx-devel # RX</dt>
-<dt>sudo yum install udunits udunits-devel # UDUnits</dt>
+<dt>sudo yum install antlr antlr-C++ -y # ANTLR</dt>
+<dt>sudo yum install curl-devel libxml2-devel -y # DAP-prereqs</dt>
+<dt>sudo yum install expat expat-devel -y # expat XML parser, a UDUnits-prereq (RHEL only?)</dt>
+<dt>sudo yum install libdap libdap-devel -y # DAP</dt>
+<dt>sudo yum install bison flex gcc gcc-c++ -y # GNU toolchain</dt>
+<dt>sudo yum install gsl gsl-devel -y # GSL</dt>
+<dt>sudo yum install netcdf netcdf-devel -y # netCDF</dt>
+<dt>sudo yum install librx librx-devel -y # RX</dt>
+<dt>sudo yum install udunits2 udunits2-devel -y # UDUnits</dt>
 </tt>
-</li>
 
+<dt><a name="yum"></a></dt> <!-- http://nco.sf.net#port -->
+For Mac OS X with MacPorts:
+<tt>
+<dt>sudo port install libdap # DAP</dt>
+<dt>sudo port install gsl # GSL</dt>
+<dt>sudo port install netcdf # netCDF</dt>
+<dt>sudo port install udunits2 # UDUnits</dt>
+</tt>
+</li>
+<li>Once you have installed the pre-requisites as shown above, you may
+  then build the latest stable NCO and install it in,
+  e.g., <tt>/usr/local</tt> with: 
+<tt>
+<dt>wget http://dust.ess.uci.edu/nco/nco.tar.gz</dt>
+<dt>tar xvzf nco.tar.gz</dt>
+<dt>cd nco-4.3.9</dt>
+<dt>./configure --prefix=/usr/local</dt>
+<dt>make</dt>
+<dt>sudo make install</dt>
+<dt>export PATH=/usr/local/bin\:${PATH}</dt>
+<dt>export LD_LIBRARY_PATH=/usr/local/lib\:${LD_LIBRARY_PATH}</dt>
+</tt>
+<dt><a name="bonobo"></a></dt> <!-- http://nco.sf.net#bonobo -->
+<dt><a name="bnb"></a></dt> <!-- http://nco.sf.net#bnb -->
+Please post questions about building or installing NCO to the 
+<a href="http://sf.net/projects/nco/forums/forum/9830">list</a>
+only after reading and attempting to follow these instructions.
+To indicate you have done this, include the word “bonobo”
+in the first sentence of your post. 
+Yes, “bonobo”.
+Otherwise we will likely redirect you here.
+For more sophisticated build/install options, see the next section.
 </ul>
 
 <dt><a name="Makefile"></a></dt> <!-- http://nco.sf.net#Makefile -->
@@ -1177,11 +1350,8 @@ Please contribute patches required to get the <tt>configure</tt>
 mechanism working properly for NCO on your platform.
 The <a href="http://dust.ess.uci.edu/nco/rgr">regressions archive</a>
 contains gory details of successful (and failed) builds for many platforms.  
-
-Scripts for generating executables for recent (4.0.x, ~2011) versions
-of NCO for RedHat Enterprise Linux 5 (RHEL5) and CentOS5
-platforms are described 
-<a href="http://sourceforge.net/projects/nco/forums/forum/9830/topic/4089501">here</a>.
+Plaform-specific build hints (CentOS, Mac OS X, RHEL, Solaris)
+are listed <a href="#bld_plt_spc">below</a>.
 <br>
 
 All platforms continue to work fine with the <tt>nco/bld/Makefile</tt>
@@ -1333,6 +1503,8 @@ This is done by configuring with <tt>--disable-nco_cplusplus</tt>.
 
 </ul>
 
+<!-- http://nco.sf.net#bld_plt_spc -->
+<a name="bld_plt_spc"></a>
 <ul><b>Platform-Specific Build Hints:</b>
 <!-- http://nco.sf.net#bld_aix -->
 <a name="bld_aix"></a>
@@ -1349,7 +1521,7 @@ The workaround is to configure with <tt>--disable-shared</tt>.
 <!-- http://nco.sf.net#bld_irix -->
 <a name="bld_irix"></a>
 <li><i>IRIX build hints:</i>
-The most common problem with building on SGI IRIX is and out-of-date toolchain.
+The most common problem with building on SGI IRIX is an out-of-date toolchain.
 </li>
 
 <!-- http://nco.sf.net#bld_osx -->
@@ -1374,6 +1546,14 @@ The workaround is not to heed the regression tests, or to install a
 working <tt>cut</tt>, e.g., from the GNU <tt>coreutils</tt> package.
 </li>
 
+<!-- http://nco.sf.net#bld_rhel -->
+<a name="bld_rhel"></a>
+<a name="bld_centos"></a> <!-- http://nco.sf.net#bld_centos -->
+<li><i>RHEL build hints:</i>
+Scripts for generating executables for recent (4.0.x, ~2011) versions of NCO for RedHat Enterprise Linux 5 (RHEL5) and CentOS5 platforms are described <a href="http://sf.net/projects/nco/forums/forum/9830/topic/4089501">here</a>.
+Older information on building x86_64 RPMs is available <a href="http://dust.ess.uci.edu/wangd/s9y">here</a>.
+</li>
+
 <!-- http://nco.sf.net#bld_slr -->
 <a name="bld_slr"></a>
 <li><i>Solaris build hints:</i>
@@ -1408,6 +1588,12 @@ but will not have some (most?) of NCO's network functionality
 See the <a href="http://nco.sf.net/nco.html#wnd">User's Guide</a>
 for more details.
 </li>
+
+<!--Qt/MSVC -->
+<li><i>Windows build with Qt/MSVC:</i>
+As of NCO 4.2.0, you may build NCO from source using MSVC and Qt, please see the <a href="nco_qt_msvc.shtml">NCO Qt/MSVC build</a> page.
+</li>
+
 </ul>
 <hr></p>
 <!-- End http://nco.sf.net#bld -->
@@ -1418,18 +1604,16 @@ for more details.
 <h2>Using NCO at UCI, NCAR, and other High Performance Computing Centers (HPCCs)</h2>
 <p>UC Irvine and NCAR users <i>may</i> find pre-built,
 <i>almost</i> up-to-date NCO executables in the following locations.
-These executables are <i>unsupported</i> and are almost
-<i>guaranteed</i> to hail from different NCO versions and thus to
-behave slightly differently.
-(They are built from the main trunk, not a tagged version).
-Users at NCAR should try the <i>supported</i> executables in
-<tt>/usr/local/bin</tt> first. 
+Users at NCAR/NWSC should first try the CISL-<i>supported</i>
+executables with <tt>module load nco</tt>. 
+The unsatisfied or adventurous may try my personal executables which
+are built from the “main trunk” of NCO, not a tagged
+version, and therefore may behave slightly differently.
 <ul>
-<li>CGD network (Solaris 2.x): <tt>/home/zender/bin/SUNMP</tt></li>
-<li>ESS <tt>greenplanet.ps.uci.edu</tt> (Linux 2.6.x): <tt>/home/zender/bin/LINUX</tt></li>
-<li>ESS <tt>dust.ess.uci.edu</tt> (Linux 2.6.x): <tt>/home/zender/bin/LINUXAMD64</tt></li>
-<li>CISL <tt>bluefire.ucar.edu</tt> (AIX 5.3): <tt>~zender/bin/AIX</tt></li>
-<li>CISL <tt>mirage0.ucar.edu</tt> (Linux 2.6.x): <tt>~zender/bin/LINUXAMD64</tt></li>
+<li>UCI ESS <tt>greenplanet.ps.uci.edu</tt> (Linux 2.6.x): <tt>~zender/bin/LINUX</tt></li>
+<li>UCI ESS <tt>dust.ess.uci.edu</tt> (Linux 3.2.x): <tt>~zender/bin/LINUXAMD64</tt></li>
+<li>NCAR CISL <tt>yellowstone.ucar.edu</tt> (Linux 2.6.x): <tt>~zender/bin/LINUXAMD64</tt></li>
+<li>NCAR CISL <tt>mirage0.ucar.edu</tt> (Linux 2.6.x): <tt>~zender/bin/LINUXAMD64</tt></li>
 </ul>
 <hr></p>
 <!-- End http://nco.sf.net#NCAR -->
@@ -1475,6 +1659,29 @@ LAM installs easily with our own testing environment (latest Ubuntu).
 Problems with recent releases:
 
 <ul><b>Recent Generic Run-time Problems:</b>
+<!-- http://nco.sf.net#bug_mm3 -->
+<a name="bug_mm3"></a>
+<li><i><tt>MM3</tt> slowdown:</i>
+A longstanding “feature” of netCDF3 was identified in
+March, 2012, and is now known by the tag MM3.
+The MM3 issue can lead to unusually slow performance. 
+The problem is triggered by an aggregate pattern of file access so the
+workaround must be implemented in the application software (e.g., NCO)
+rather than in the netCDF library itself.   
+The name MM3 fits because the problem is normally encountered on
+Multi-record Multi-variable netCDF3 files.
+And we call our “solution” the MM3-workaround.  
+If you encounter unusually slow NCO performance while using NCO to
+analyze MM3 files on a large blocksize filesystem, 
+chances are you are encountering an MM3-induced slowdown. 
+NCO release 4.1.0 implements the MM3-workaround for <tt>ncks</tt>.  
+It speeds-up common ncks sub-setting on NCAR's GLADE by 10-50x.  
+MM3-induced slowdowns are present in other NCO operators and we are 
+prioritizing our MM3-patches to those encountered most often.  
+Thanks to Gary Strand for reporting this problem, and to Russ Rew for 
+creating the workaround algorithm, which is also now in <tt>nccopy</tt>.
+</li>
+
 <!-- http://nco.sf.net#bug_nofill -->
 <a name="bug_nofill"></a>
 <li><i><tt>NOFILL</tt> bug:</i>
@@ -1504,9 +1711,38 @@ in NCO 4.0.9, which assumes that netCDF 4.1.3 or later is installed.
 </ul>
 
 <ul><b>Recent Operator-specific Run-time Problems:</b>
-No known operator-specific problems with recent releases.
+
+<!-- http://nco.sf.net#bug_ncwa_lmt -->
+<a name="bug_ncwa_lmt"></a>
+<li><i><tt>ncwa</tt> hyperslabbing while averaging bug:</i>
+Versions 4.3.3—4.3.5 of <tt>ncwa</tt> could return incorrect
+answers when user-specified hyperslabs were simultaneously extracted. 
+In such cases, hyperslab limits were not consistently applied.
+This could produce incorrect answers that look correct.
+This bug only affected hyperslabbed statistics (those produced
+by simultaneously invoking <tt>-a</tt> and <tt>-d</tt> switches);
+“global averages” were unaffected.
+We urge all <tt>ncwa</tt> users to upgrade to NCO 4.3.6.
+</li>
 </ul>
 
+<!-- http://nco.sf.net#bug_ncpdq_upk -->
+<a name="bug_ncpdq_upk"></a>
+<li><i><tt>ncpdq</tt> unpacking bug with auxiliary coordinates:</i>
+Versions 4.3.2–4.3.3 of <tt>ncpdq</tt> did not correctly 
+store unpacked variables.
+These versions unpacked (when specified with <tt>-U</tt> or <tt>-P
+upk</tt>) the values, but inadvertently stored their original packing
+attributes with the unpacked values. 
+This would lead further operators to assume that the values were still
+packed. 
+Hence consecutive operations could lead to incorrect values.
+Fixed in version 4.3.4.
+All <tt>ncpdq</tt> users are encouraged to upgrade.
+NB: this bug did not affect the other arithmetic operators which
+unpack data prior to arithmetic.
+</li>
+
 <ul><b>Recent Platform-specific Run-time Problems:</b>
 No known platform-specific problems with recent releases.
 </ul>
@@ -1516,6 +1752,7 @@ No known platform-specific problems with recent releases.
 Problems with older releases:
 
 <ul><b>Older Generic Run-time Problems:</b>
+
 <!-- http://nco.sf.net#bug_hyp_dgn -->
 <a name="bug_hyp_dgn"></a>
 <li><i>Degenerate hyperslabbing bug:</i>
@@ -1536,7 +1773,7 @@ to upgrade to NCO 4.0.7+ just to be safe.
 <a name="bug_thr_msa"></a>
 <li><i>Threading problems with MSA:</i>
 NCO version 3.9.5 has a nasty bug that causes threaded arithmetic
-operators, e.g., <tt>ncea</tt> to produce incorrect results under some
+operators, e.g., <tt>nces</tt> to produce incorrect results under some
 conditions. 
 The problem may occur whenever OpenMP is enabled and the operators 
 run on a multi-core CPU with more than one thread.
@@ -1550,7 +1787,7 @@ file with a non-buggy NCO version.
 <i>Version 3.9.5 is buggy and should be upgraded ASAP</i>.
 Be careful with data processed using this NCO version on multi-core CPUs.
 The (one-line!) patch to fix this bug in 3.9.5 is 
-<a href="http://sourceforge.net/forum/message.php?msg_id=6217274">here</a>.
+<a href="http://sf.net/forum/message.php?msg_id=6217274">here</a>.
 </li>
 
 <!-- http://nco.sf.net#bug_idx_hyp -->
@@ -1572,6 +1809,95 @@ these versions of NCO.
 </ul>
 
 <ul><b>Older Operator-specific Run-time Problems:</b>
+
+<!-- http://nco.sf.net#bug_ncks_aux -->
+<a name="bug_ncks_aux"></a>
+<li><i><tt>ncks</tt> bug with auxiliary coordinates:</i>
+Versions 4.2.x–4.3.1 of <tt>ncks</tt> did not correctly 
+support auxiliary coordinates (specified with <tt>-X</tt>). 
+Auxiliary coordinates continued to work with the other hyperslabbing
+NCO operators. Auxiliary coordinates once again work in all
+hyperslabbing operators, including on netCDF4 group files in operators
+that support them.
+Fixed in version 4.3.2.
+</li>
+
+<!-- http://nco.sf.net#bug_ncatted_strcmp -->
+<a name="bug_ncatted_strcmp"></a>
+<li><i><tt>ncatted</tt> bug on implicit attribute names:</i>
+Versions 4.2.x–4.3.0 of <tt>ncatted</tt> could segfault when
+processing attributes specified implicitly (i.e., by leaving the
+attribute field blank in the <tt>-a</tt> specification.
+Fixed in version 4.3.1.
+</li>
+
+<!-- http://nco.sf.net#bug_ncbo_ccm_ccsm_cf -->
+<a name="bug_ncbo_ccm_ccsm_cf"></a>
+<li><i><tt>ncbo</tt> bug handling certain special variables:</i>
+Version 4.3.0 of <tt>ncbo</tt> inadvertently always turns off
+certain <a href="http://nco.sf.net/nco.html#prc_xcp">exceptions</a>  
+to variable list processing.
+This may cause some grid-related variables (e.g., <tt>ntrm</tt> and <tt>nbdate</tt>)
+and some non-grid variables (e.g., <tt>ORO</tt> and <tt>gw</tt>) to be
+arithmetically processed (e.g., subtracted) even when that makes no
+sense in most climate model datasets. 
+Fixed in version 4.3.1.
+</li>
+
+<!-- http://nco.sf.net#bug_ncks_mtd -->
+<a name="bug_ncks_mtd"></a>
+<li><i><tt>ncks</tt> bug copying metadata:</i>
+Version 4.2.6 of <tt>ncks</tt> does not copy variable metadata by default. 
+Thus output files appear stripped of metadata.
+One can work around this problem in 4.2.6 by specifying the  <tt>-m</tt> option.
+Otherwise an upgrade is recommended.
+Fixed in version 4.3.0.
+</li>
+
+<!-- http://nco.sf.net#bug_ncks_sbs -->
+<a name="bug_ncks_sbs"></a>
+<li><i><tt>ncks</tt> bug subsetting variables:</i>
+Version 4.2.4 of <tt>ncks</tt> sometimes dumps core
+when subsetting variables with <tt>-v var</tt>.
+Fixed in version 4.2.5.
+</li>
+
+<!-- http://nco.sf.net#bug_ncks_mk_rec_dmn -->
+<a name="bug_ncks_mk_rec_dmn"></a>
+<li><i><tt>ncks</tt> bug with altering record dimensions:</i>
+Version 4.2.4 of <tt>ncks</tt> ignored both the 
+<tt>--mk_rec_dmn</tt> and the <tt>--fix_rec_dmn</tt> switches.  
+It exited successfully without altering the record variable.
+Fixed in version 4.2.5.
+</li>
+
+<!-- http://nco.sf.net#bug_nces_rec_var -->
+<a name="bug_nces_rec_var"></a>
+<li><i><tt>nces</tt> bug with non-record files:</i>
+Versions 4.2.1—4.2.3 of <tt>nces</tt> incorrectly referenced
+the record variable on files which do not contain it.
+This caused a segmentation violation and core dump.
+</li>
+
+<!-- http://nco.sf.net#bug_ncra_flg_bfr_nrm -->
+<a name="bug_ncra_flg_bfr_nrm"></a>
+<li><i><tt>ncra</tt> bug when last file(s) is/are superfluous:</i>
+Versions 4.2.1—4.2.3 of <tt>ncra</tt> incorrectly skipped
+writing the results of the final normalization when trailing files
+were superfluous (not used). 
+In the most common case, all values are zeros in the output file.
+Upgrade if you call <tt>ncra</tt> with trailing superfluous files. 
+</li>
+
+<!-- http://nco.sf.net#bug_ncecat_nintap -->
+<a name="bug_ncecat_nintap"></a>
+<li><i><tt>ncecat</tt> bug when files generated with <tt>-n</tt>:</i>
+Version 4.2.2 of <tt>ncecat</tt> could incorrectly skip the first
+input file in the default mode (RECORD_AGGREGATE) when 
+the <tt>-n NINTAP</tt> switch is used to automate filename generation.
+Upgrade if you use <tt>ncecat -n</tt>.
+</li>
+
 <!-- http://nco.sf.net#bug_ncra_cf_crd_rec_crd -->
 <a name="bug_ncra_cf_crd_rec_crd"></a>
 <li><i><tt>ncra</tt> bug handling CF <tt>coordinates</tt> attributes   
@@ -1588,6 +1914,7 @@ One workaround that does not require NCO upgrades is to remove the
 record coordinate name (usually <tt>time</tt>) from
 the <tt>coordinates</tt> attribute of all variables in CF-compliant
 files before processing the file with <tt>ncra</tt>.
+</li>
 
 <!-- http://nco.sf.net#bug_ncra_cf_YYYYMMDD_date -->
 <a name="bug_ncra_cf_YYYYMMDD_date"></a>
@@ -1604,6 +1931,7 @@ NCO attempts this in CCSM/CF-compliant files by using the
 since <tt>nbdate</tt>) variables to find the average date,
 converting that to YYYYMMDD, and writing that as the average value
 of <tt>date</tt>. 
+</li>
 
 <!-- http://nco.sf.net#bug_ncks_nc4_nc4_hyp_fix -->
 <a name="bug_ncks_nc4_nc4_hyp_fix"></a>
@@ -1615,10 +1943,11 @@ file, e.g., <tt>ncks -d 0,1,lat in4.nc out4.nc</tt>.
 Three workarounds that do not require NCO upgrades (or downgrades) are 
 to explicitly specify chunking with, e.g., 
 <tt>ncks --cnk_plc=all -d 0,1,lat in4.nc out4.nc</tt>, or, to use 
-<tt>ncea</tt> instead of <tt>ncks</tt> for hyperslabbing, e.g.,
-<tt>ncea -d 0,1,lat in4.nc out4.nc</tt> (<tt>ncea</tt> does a no-op
+<tt>nces</tt> instead of <tt>ncks</tt> for hyperslabbing, e.g.,
+<tt>nces -d 0,1,lat in4.nc out4.nc</tt> (<tt>nces</tt> does a no-op
 when there is only one input file), or to write to a netCDF3 file,
 <tt>ncks -3 -d 0,1,lat in4.nc out3.nc</tt>.
+</li>
 
 <!-- http://nco.sf.net#bug_ncks_m -->
 <a name="bug_ncks_m"></a>
@@ -1704,15 +2033,15 @@ Possible future implementations are discussed
 
 <!-- http://nco.sf.net#bug_mss_val_zro_ncra -->
 <a name="bug_mss_val_zro_ncra"></a>
-<li><i>Problems with <tt>ncra</tt> and <tt>ncea</tt> when <tt>missing_value</tt> = 0.0:</i>
-The algorithm <tt>ncra</tt> and <tt>ncea</tt> used to perform
+<li><i>Problems with <tt>ncra</tt> and <tt>nces</tt> when <tt>missing_value</tt> = 0.0:</i>
+The algorithm <tt>ncra</tt> and <tt>nces</tt> used to perform
 arithmetic in versions up to 2.9.2 breaks if <tt>missing_value</tt>
 is 0.0. 
 Why, you ask?
 Running average (or total, etc.) algorithms must initialize the answer  
 to 0.0.
 This is done since the sum accumulates in place as <tt>ncra</tt> and
-<tt>ncea</tt> proceeds across records and files.  
+<tt>nces</tt> proceeds across records and files.  
 (Normalizing this accumulation by the total number of records is the
 last step).
 The old algorithm compared both the current running average and the
@@ -1790,16 +2119,16 @@ Bug-fixes:
 <a name="people"></a> <!-- http://nco.sf.net#people -->
 <dt><a name="People"></a></dt> <!-- http://nco.sf.net#People -->
 <h2>People:</h2>
-<p>(Please <a href="#Contact">communicate</a> with us using the project forums rather than contacting us individually)
+<p>Current Developers (please <a href="#Contact">communicate</a> with us using the project forums rather than contacting us individually):
 <ul>
 
 <li>
 <a name="zender"></a><a name="Zender"></a> <!-- http://nco.sf.net#zender -->
 <a href="http://www.ess.uci.edu/~zender">Charlie Zender</a>, 
 Professor of Earth System Science
-(<a href="http://www.ess.uci.edu">ESS</a>) and former
-Director, UCI Earth System Modeling Facility
-(<a href="http://www.ess.uci.edu/esmf">ESMF</a>).
+(<a href="http://www.ess.uci.edu">ESS</a>) and of
+Computer Science
+(<a href="http://www.ics.uci.edu">CS</a>).
 <i>Role</i>: Project PI.
 <i>Contributions</i>: NCO core library, porting, release manager
 <i>Related Research</i>: 
@@ -1811,23 +2140,76 @@ netCDF4/HDF5 parallel filesystem features.
 <i>Other Interests</i>: Atmospheric Physics, Climate Change.
 </li>
 
+<li><dt>
+<a name="butowsky"></a><a name="Butowsky"></a> <!-- http://nco.sf.net#butowsky -->
+<a href="http://dust.ess.uci.edu/hbutowsk">Henry Butowsky</a>, 
+software engineer.
+<i>Roles</i>: Scientific programmer
+<i>Current Research</i>: 
+1. Efficient complex data analysis with storage-layer constraints.
+2. Develop and thread the <tt>ncap2</tt> interpreter.
+<i>Other Interests</i>: Compilers and interpreters.
+</li>
+
+<li><dt>
+<a name="vicente"></a><a name="Vicente"></a> <!-- http://nco.sf.net#vicente -->
+<a href="http://dust.ess.uci.edu/pvicente">Pedro Vicente</a>, 
+software engineer.
+<i>Roles</i>: Scientific programmer
+<i>Current Research</i>: 
+1. Support for hierarchical datasets.
+2. Optimization of hierarchical access.
+<i>Other Interests</i>: HDF and netCDF data visualization.
+</li>
+
+<li><dt>
+<a name="wenshan"></a><a name="Wenshan"></a> <!-- http://nco.sf.net#wenshan -->
+<a href="http://dust.ess.uci.edu/wenshanw">Wenshan Wang</a>, 
+software engineer.
+<i>Roles</i>: Graduate Student
+<i>Current Research</i>: 
+1. Causes and implications of snowpack darkening.
+2. Rapid evaluation and exploitation of multi-model datasets.
+<i>Other Interests</i>: Passing Comps.
+</li>
+
+</ul>
+
+<p>Alumni Developers:
+<ul>
+
 <li>
 <a name="jenks"></a><a name="Jenks"></a> <!-- http://nco.sf.net#jenks -->
 <a href="http://spds.ece.uci.edu/~sjenks">Stephen Jenks</a>,
-Former Assistant Professor of Electrical Engineering and Computer Science
-(<a href="http://www.eecs.uci.edu">EECS</a>) and 
-Director, Scalable Parallel and Distributed Systems 
-(<a href="http://spds.ece.uci.edu">SPDS</a>) lab.
+former Assistant Professor of Electrical Engineering and Computer Science
+(<a href="http://www.eecs.uci.edu">EECS</a>).
+<!--
 <i>Roles</i>: Collaborator. Thesis advisor.
 <i>Related Research</i>: 
 1. Consulting on SWAMP design and implementation.
 <i>Other Interests</i>: Cache memory usage
+-->
+</li>
+
+<li>
+<a name="capps"></a><a name="Capps"></a> <!-- http://nco.sf.net#capps -->
+<a href="http://dust.ess.uci.edu/scapps/web">Dr. Scott Capps</a>, 
+earned Earth System Science Ph.D. (2009) with Zender at UCI, now at UCLA.
+<!--
+<i>Related Research</i>: 
+1. Test NCO on real tera-scale geoscience analysis problems and
+identify necessary improvements in <tt>ncap2</tt> and in SWAMP.
+2. Role of satellite-observed sub-gridscale wind variability 
+on air-surface exchange.
+<i>Other Interests</i>: Weather, climate
+-->
 </li>
 
 <li>
 <a name="wang"></a><a name="Wang"></a> <!-- http://nco.sf.net#wang -->
 <a href="http://dust.ess.uci.edu/~wangd">Dr. Daniel Wang</a>:
-Earned EECS Ph.D. (2008) with Jenks and Zender at UCI, now at SLAC.
+earned EECS Ph.D. (2008) with Jenks and Zender at UCI, now at SLAC.
+<!--
 <i>Role</i>: Architect distributed data reduction and analysis
 solutions for geoscience workflows
 <i>Related Research</i>: 
@@ -1839,29 +2221,7 @@ discover and exploit parallelism in scripted workflows.
 automated server-side data analysis capabilities to the geoscience 
 community. 
 <i>Other Interests</i>: Large data, data management, programming languages and practice.
-</li>
-
-<li><dt>
-<a name="butowsky"></a><a name="Butowsky"></a> <!-- http://nco.sf.net#butowsky -->
-<a href="http://dust.ess.uci.edu/hbutowsk">Henry Butowsky</a>, 
-Henry Butowsky, software engineer.
-<i>Roles</i>: Scientific programmer
-<i>Current Research</i>: 
-1. Efficient complex data analysis with storage-layer constraints.
-2. Develop and thread the <tt>ncap2</tt> interpreter.
-<i>Other Interests</i>: Compilers and interpreters.
-</li>
-
-<li>
-<a name="capps"></a><a name="Capps"></a> <!-- http://nco.sf.net#capps -->
-<a href="http://dust.ess.uci.edu/scapps/web">Dr. Scott Capps</a>, 
-Earned Earth System Science Ph.D. (2009) with Zender at UCI, now at UCLA.
-<i>Related Research</i>: 
-1. Test NCO on real tera-scale geoscience analysis problems and
-identify necessary improvements in <tt>ncap2</tt> and in SWAMP.
-2. Role of satellite-observed sub-gridscale wind variability 
-on air-surface exchange.
-<i>Other Interests</i>: Weather, climate
+-->
 </li>
 
 <p>Thanks also to 
@@ -1888,35 +2248,35 @@ Please read the Guide's suggestions for productive
 <a href="./nco.html#help">Help Requests and Bug Reports</a>.
 <ul>
 <li><i>Where should I ask my questions on how to use NCO?</i>
-On the <a href="http://sourceforge.net/projects/nco/forums/forum/9830">Help</a> site.
+On the <a href="http://sf.net/projects/nco/forums/forum/9830">Help</a> site.
 </li>
 <li><i>Where should I post suggestions/comments on NCO features and usage?</i>
-On the <a href="http://sourceforge.net/projects/nco/forums/forum/9829">Discussion</a> site.
+On the <a href="http://sf.net/projects/nco/forums/forum/9829">Discussion</a> site.
 </li>
 <li><i>Where are NCO development and bug-squashing discussed?</i>
-At the <a href="http://sourceforge.net/projects/nco/forums/forum/9831">Developer</a>
+At the <a href="http://sf.net/projects/nco/forums/forum/9831">Developer</a>
 site.</li>
 </ul>
 <hr></p>
 <!-- End Contacts -->
 
-<a href="http://sourceforge.net/projects/nco"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=3331&type=12" width="120" height="30" alt="Get NCO netCDF Operators at SourceForge.net. Fast, secure and Free Open Source software downloads" /></a>
+<a href="http://sf.net/projects/nco"><img src="http://sflogo.sf.net/sflogo.php?group_id=3331&type=12" width="120" height="30" alt="Get NCO netCDF Operators at SourceForge.net. Fast, secure and Free Open Source software downloads" /></a>
 
 <table width="100%"><tr><td align="left" valign="top">/
 <a href="http://lists.sf.net/mailman/listinfo/nco-announce">Announce</a> /
-<a href="http://sourceforge.net/projects/nco/forums/forum/9831">Developer</a> /
-<a href="http://sourceforge.net/projects/nco/forums/forum/9829">Discussion</a> /
-<a href="http://sourceforge.net/projects/nco/forums/forum/9830">Help</a> /
+<a href="http://sf.net/projects/nco/forums/forum/9831">Developer</a> /
+<a href="http://sf.net/projects/nco/forums/forum/9829">Discussion</a> /
+<a href="http://sf.net/projects/nco/forums/forum/9830">Help</a> /
 <a href="http://nco.sf.net">Homepage</a> /
 <a href="#RTFM">Manual</a> /
 <a href="http://sf.net/projects/nco">Project</a> /
 <a href="http://nco.cvs.sf.net/nco/nco/src/nco/">Source</a> /
-<a href="http://nco.wiki.sourceforge.net">Wiki</a> /
 </td>
 
 <td align="right" valign="top">
 [<a href="http://www.antlr.org">ANTLR</a>] 
 [<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/latest-cf-conventions-document-1">CF</a>] 
+[<a href="https://wiki.earthdata.nasa.gov/display/ESDSWG/HDF5+Conventions+Working+Group">ESDSWG</a>] 
 [<a href="http://www.gnu.org/software/gsl">GSL</a>] 
 [<a href="http://www.unidata.ucar.edu/packages/netcdf">netCDF</a>] 
 [<a href="http://opendap.org">OPeNDAP</a>] 
diff --git a/doc/logo_nco_stk.png b/doc/logo_nco_stk.png
new file mode 100644
index 0000000..9177563
Binary files /dev/null and b/doc/logo_nco_stk.png differ
diff --git a/doc/logo_qt.png b/doc/logo_qt.png
new file mode 100644
index 0000000..3287559
Binary files /dev/null and b/doc/logo_qt.png differ
diff --git a/doc/logo_srl.svg b/doc/logo_srl.svg
new file mode 100644
index 0000000..5017979
--- /dev/null
+++ b/doc/logo_srl.svg
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="NCO_logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/sambarluc/Scrivania/NCO logo.png"
+   inkscape:export-xdpi="600"
+   inkscape:export-ydpi="600"
+   version="1.1">
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective52" />
+    <linearGradient
+       id="linearGradient4294">
+      <stop
+         style="stop-color:#ff0035;stop-opacity:1;"
+         offset="0"
+         id="stop4296" />
+      <stop
+         id="stop4304"
+         offset="0.86000001"
+         style="stop-color:#ff0035;stop-opacity:1;" />
+      <stop
+         style="stop-color:#3e75c4;stop-opacity:0;"
+         offset="1"
+         id="stop4298" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3405">
+      <stop
+         id="stop3407"
+         offset="1"
+         style="stop-color:#87d344;stop-opacity:1;" />
+      <stop
+         style="stop-color:#87d344;stop-opacity:0;"
+         offset="1"
+         id="stop3413" />
+      <stop
+         id="stop3411"
+         offset="1"
+         style="stop-color:#87d344;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2518">
+      <stop
+         style="stop-color:#2b5795;stop-opacity:0;"
+         offset="0"
+         id="stop2520" />
+      <stop
+         id="stop2526"
+         offset="0.86000001"
+         style="stop-color:#2b5795;stop-opacity:0;" />
+      <stop
+         style="stop-color:#ff0035;stop-opacity:1;"
+         offset="1"
+         id="stop2522" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2492">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop2494" />
+      <stop
+         id="stop2500"
+         offset="0.5"
+         style="stop-color:#000000;stop-opacity:0;" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2496" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2410">
+      <stop
+         style="stop-color:#1600d9;stop-opacity:1;"
+         offset="0"
+         id="stop2412" />
+      <stop
+         id="stop2420"
+         offset="0.94999999"
+         style="stop-color:#d4d900;stop-opacity:1;" />
+      <stop
+         id="stop2418"
+         offset="1"
+         style="stop-color:#d4d900;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2289">
+      <stop
+         style="stop-color:#d4d900;stop-opacity:1;"
+         offset="0"
+         id="stop2291" />
+      <stop
+         style="stop-color:#d4d900;stop-opacity:0;"
+         offset="1"
+         id="stop2293" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2261">
+      <stop
+         id="stop2269"
+         offset="0"
+         style="stop-color:#3ca800;stop-opacity:1;" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop2265" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2295"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,78)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2374"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,258)"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2402"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,78)"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2406"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,78)"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2428"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,78)"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2470"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,78)"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient2489"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,78)"
+       x1="194.17774"
+       y1="565.994"
+       x2="373.94009"
+       y2="565.994" />
+    <inkscape:perspective
+       id="perspective2491"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective3311"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2289"
+       id="linearGradient3201"
+       x1="194.17773"
+       y1="643.99402"
+       x2="373.94009"
+       y2="643.99402"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4"
+     inkscape:cx="398.85896"
+     inkscape:cy="400.90318"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:window-width="1366"
+     inkscape:window-height="714"
+     inkscape:window-x="0"
+     inkscape:window-y="28"
+     showgrid="false"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       y="576.11682"
+       x="160.85782"
+       height="125.17582"
+       width="341.90408"
+       id="rect9220"
+       style="fill:#fcff9a;fill-opacity:0.65490198;fill-rule:evenodd;stroke:none;stroke-width:1.98207426000000009;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    <flowRoot
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#898989;fill-opacity:0.69322711;stroke:none;font-family:Sans"
+       id="flowRoot9300"><flowRegion
+         id="flowRegion9302" /><flowPara
+         id="flowPara9306"
+         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#898989;fill-opacity:0.69322711;font-family:Sans;-inkscape-font-specification:Sans">44386894746313127973244284485351434464464686419776561328435954651438885591558148934169651292655514142619988267944993773884476756395776664785485277272531359422859261949576833381887139617577529484296375791957391264363739988129 [...]
+       style="fill:none;stroke:#324ccd;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 166.68238,700.52109 439.4849,699.63721"
+       id="path9312" />
+    <path
+       id="path2422"
+       style="fill:none;stroke:#324ccd;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1"
+       d="m 436.38079,647.47743 c -0.41633,3.17271 4.07134,2.12652 5.27324,0.69198 3.2571,-3.88751 0.0257,-9.40187 -3.88929,-11.23849 -7.0029,-3.28528 -14.81047,1.69598 -17.20371,8.47056 -3.51219,9.94198 3.41636,20.31132 13.05183,23.16895 12.84255,3.80877 25.84741,-5.13309 29.13418,-17.6331 4.13607,-15.72998 -6.84729,-31.40088 -22.21437,-35.09941 -18.6116,-4.47943 -36.96428,8.55991 -41.06464,26.79564 -4.83215,21.49018 10.2715,42.53387 31.37691,47.02987 24.36702,5.19084 48.10759,-11.98243 [...]
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d=""
+       id="path3834"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 212.22881,676.82422 0,-2.61341 5.39169,-3.57067 c 6.90364,-4.57196 12.49708,-7.84266 12.80711,-7.48882 0.28053,0.32016 1.6334,3.1985 1.53647,3.26894 -0.0622,0.0452 -1.38585,0.77009 -2.94148,1.61091 -3.6907,1.99481 -11.7335,7.43456 -16.35185,11.05958 -0.34498,0.27078 -0.44194,-0.22649 -0.44194,-2.26653 z"
+       id="path3836"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 184.82842,694.6538 c 0.19446,-0.18319 1.35937,-1.0056 2.58869,-1.82758 l 2.23513,-1.49451 -0.11381,0.94796 c -0.0908,0.75594 -0.43609,1.07289 -1.7048,1.56469 -2.34959,0.91078 -3.41833,1.19864 -3.00521,0.80944 z"
+       id="path3838"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:138.92576599px;font-style:normal;font-weight:normal;fill:#87d344;fill-opacity:1;stroke:#87d344;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="180.54294"
+       y="694.56488"
+       id="text1368"><tspan
+         sodipodi:role="line"
+         id="tspan1370"
+         x="180.54294"
+         y="694.56488"
+         style="fill:#87d344;fill-opacity:1;stroke:#87d344;stroke-opacity:1">NC</tspan></text>
+    <text
+       id="text2285"
+       y="694.56488"
+       x="180.54294"
+       style="font-size:138.92576599000000215px;font-style:normal;font-weight:normal;fill:none;fill-opacity:1;stroke:#d4d900;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431374;font-family:Bitstream Vera Sans"
+       xml:space="preserve"><tspan
+         style="fill:none;fill-opacity:1;stroke:#d4d900;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.78431374"
+         y="694.56488"
+         x="180.54294"
+         id="tspan2287"
+         sodipodi:role="line">NC</tspan></text>
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 252.24606,658.27515 -0.63788,-1.23609 0.68208,0 0.68207,0 0,1.23744 c 0,0.68059 -0.0199,1.23683 -0.0442,1.23609 -0.0243,-7.4e-4 -0.33124,-0.55759 -0.68207,-1.23744 z"
+       id="path9317"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 291.95159,671.68913 c -0.48614,-0.19617 -2.75705,-1.14302 -5.04647,-2.1041 -3.77727,-1.58568 -8.54521,-3.42844 -10.59827,-4.09612 l -0.79549,-0.25871 -0.0492,-2.41619 c -0.0271,-1.3289 -0.0271,-2.41467 0,-2.41281 0.32155,0.0221 5.42611,1.76674 9.78002,3.34257 l 5.48819,1.98637 0.39781,1.26712 c 0.2188,0.69692 0.74369,2.12228 1.16644,3.16747 0.42274,1.0452 0.71737,1.89601 0.65473,1.89071 -0.0626,-0.005 -0.51164,-0.17014 -0.99777,-0.36631 z"
+       id="path9319"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 213.8548,672.94995 c 0.20096,-0.19062 3.49179,-2.44738 5.21176,-3.57408 3.6286,-2.37699 8.48863,-5.2565 8.63122,-5.11391 0.022,0.022 -0.22099,0.18592 -0.53995,0.36429 -1.92035,1.07392 -5.87548,3.56505 -10.62409,6.69155 -2.44241,1.60808 -3.03277,1.96776 -2.67894,1.63215 z"
+       id="path9321"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 231.93783,666.25434 c -0.0305,-0.1527 -0.23481,-0.6561 -0.45393,-1.11866 -0.21911,-0.46256 -0.38264,-0.85677 -0.36339,-0.87601 0.0192,-0.0193 0.2929,0.45431 0.60812,1.05236 0.38489,0.73022 0.54063,1.10869 0.47417,1.1523 -0.1672,0.10971 -0.2074,0.0779 -0.26497,-0.20999 z"
+       id="path9323"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 212.38817,678.92844 c -0.0375,-0.0851 -0.0857,-1.17129 -0.10724,-2.41382 l -0.0391,-2.25914 3.34606,-2.21355 c 4.67315,-3.09147 6.765,-4.42923 9.62164,-6.15313 2.94489,-1.77716 4.92646,-2.80144 5.14858,-2.66133 0.16388,0.10337 0.93882,1.59922 1.31857,2.54521 0.20896,0.52053 0.22597,0.62221 0.11518,0.6885 -0.0715,0.0428 -0.96525,0.53894 -1.98614,1.10257 -2.43037,1.34182 -3.16047,1.7836 -6.01041,3.63689 -2.98802,1.94308 -6.75224,4.55803 -9.26821,6.43849 -1.06259,0.79419 -1.9632 [...]
+       id="path9325"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 227.72862,664.19681 c 0,-0.0505 2.2963,-1.25367 2.52639,-1.32367 0.14178,-0.0431 0.20859,-0.002 0.29058,0.17764 0.0585,0.12852 0.086,0.25411 0.061,0.27909 -0.025,0.025 -0.0705,-0.0199 -0.10116,-0.0998 -0.0307,-0.0799 -0.12108,-0.1452 -0.20095,-0.14517 -0.0799,4e-5 -0.67625,0.25858 -1.32528,0.57453 -1.18715,0.57792 -1.25062,0.60519 -1.25062,0.53739 z"
+       id="path9327"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 212.04516,676.97151 c 0,-1.73087 0.0325,-2.75943 0.0884,-2.79395 0.058,-0.0358 0.0887,0.68434 0.0894,2.09401 0.001,2.44042 0.0365,2.7984 0.28551,2.89052 0.15609,0.0577 0.14226,0.0869 -0.14538,0.30628 l -0.31788,0.24246 0,-2.73932 z"
+       id="path9329"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 213.37098,678.59698 c 0.0605,-0.0729 0.14981,-0.13258 0.19842,-0.13258 0.0493,0 0.0397,0.0586 -0.0216,0.13258 -0.0605,0.0729 -0.14981,0.13258 -0.19842,0.13258 -0.0493,0 -0.0397,-0.0586 0.0216,-0.13258 z"
+       id="path9331"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 183.27797,695.46967 c 0.20504,-0.18675 1.92392,-1.26373 1.95975,-1.2279 0.0215,0.0215 -0.0824,0.12577 -0.23108,0.23161 -0.14864,0.10584 -0.27026,0.2295 -0.27026,0.27481 0,0.17168 0.47516,0.0673 1.78495,-0.39222 2.18904,-0.76793 2.72298,-1.0744 2.94607,-1.69093 l 0.12793,-0.35355 -0.0209,0.51706 -0.0209,0.51707 -0.97227,0.39404 c -0.94011,0.38102 -4.58669,1.62552 -5.12653,1.74957 -0.16134,0.0371 -0.23056,0.0294 -0.17678,-0.0196 z"
+       id="path9333"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 184.86896,694.68102 c 0.38274,-0.36448 4.63102,-3.24806 4.69338,-3.18569 0.076,0.076 -0.14547,1.23406 -0.26998,1.41183 -0.26465,0.37784 -1.178,0.82745 -2.93892,1.44672 -0.27238,0.0958 -0.41774,0.18795 -0.35632,0.22591 0.0571,0.0353 -0.0342,0.0608 -0.20285,0.0567 -0.16862,-0.004 -0.46569,0.0232 -0.66014,0.0606 -0.22461,0.0432 -0.32132,0.0373 -0.26517,-0.0162 z"
+       id="path9335"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 437.55896,696.43569 c -4.19578,-0.24663 -9.77806,-1.49431 -14.14618,-3.16179 -9.43811,-3.60288 -17.8017,-10.53767 -23.29206,-19.31295 -6.4704,-10.34169 -8.46399,-22.88838 -5.41508,-34.0799 3.79087,-13.915 14.91621,-25.1955 28.40889,-28.80508 6.67011,-1.7844 14.37443,-1.59771 20.63577,0.50003 10.03492,3.36201 18.10013,11.21193 21.60984,21.033 1.06752,2.98719 1.46145,5.12872 1.61525,8.78097 0.1706,4.051 -0.20198,6.96625 -1.33542,10.44899 -0.61837,1.90005 -1.2648,3.25646 -0.9627 [...]
+       id="path9355"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/doc/logo_srl.xcf b/doc/logo_srl.xcf
new file mode 100644
index 0000000..91d4b0f
Binary files /dev/null and b/doc/logo_srl.xcf differ
diff --git a/doc/logo_vs2010.png b/doc/logo_vs2010.png
new file mode 100644
index 0000000..b3ad7fb
Binary files /dev/null and b/doc/logo_vs2010.png differ
diff --git a/doc/man_end.txt b/doc/man_end.txt
index 0f9a0d5..d0b7a25 100644
--- a/doc/man_end.txt
+++ b/doc/man_end.txt
@@ -1,17 +1,17 @@
-.\" $Header: /cvsroot/nco/nco/doc/man_end.txt,v 1.7 2006/11/12 22:40:14 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/doc/man_end.txt,v 1.9 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
 
 .SH COPYRIGHT
-Copyright \(co 1995-2006 Charlie Zender
+Copyright \(co 1995-2012 Charlie Zender
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -46,10 +46,10 @@ should give you access to the complete manual, except for the
 TeX-intensive portions.
 
 .BR ncap (1), 
+.BR ncap2 (1),
 .BR ncatted (1), 
 .BR ncbo (1), 
-.BR ncdiff (1), 
-.BR ncea (1), 
+.BR nces (1), 
 .BR ncecat (1), 
 .BR ncflint (1), 
 .BR ncks (1), 
diff --git a/doc/nco.dvi b/doc/nco.dvi
index f0a8aa9..e09cfd0 100644
Binary files a/doc/nco.dvi and b/doc/nco.dvi differ
diff --git a/doc/nco.html b/doc/nco.html
deleted file mode 100644
index dafa27f..0000000
--- a/doc/nco.html
+++ /dev/null
@@ -1,15813 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
-<html>
-<!-- Created on February 13, 2012 by texi2html 1.82
-texi2html was written by: 
-            Lionel Cons <Lionel.Cons at cern.ch> (original author)
-            Karl Berry  <karl at freefriends.org>
-            Olaf Bachmann <obachman at mathematik.uni-kl.de>
-            and many others.
-Maintained by: Many creative people.
-Send bugs and suggestions to <texi2html-bug at nongnu.org>
--->
-<head>
-<title>NCO 4.0.9 User's Guide</title>
-
-<meta name="description" content="NCO 4.0.9 User's Guide">
-<meta name="keywords" content="NCO 4.0.9 User's Guide">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
-<meta name="Generator" content="texi2html 1.82">
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
-
-</head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
-
-<a name="Top"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h1 class="settitle"><acronym>NCO</acronym> 4.0.9 User’s Guide</h1>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Foreword">Foreword</a></td><td>  </td><td align="left" valign="top">                    
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Summary">Summary</a></td><td>  </td><td align="left" valign="top">                     
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Introduction">1. Introduction</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Strategies">2. Operator Strategies</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Common-features">3. NCO Features</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Operator-Reference-Manual">4. Operator Reference Manual</a></td><td>  </td><td align="left" valign="top">   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Contributing">5. Contributing</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#CCSM-Example">6. CCSM Example</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#mybibnode">7. References</a></td><td>  </td><td align="left" valign="top">                   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#General-Index">General Index</a></td><td>  </td><td align="left" valign="top">               
-</td></tr>
-</table>
-
-<a name="fwd"></a> <!-- http://nco.sf.net/nco.html#fwd --><hr size="1">
-<a name="Foreword"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Top" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Summary" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[ << ]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Summary" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Foreword-1"></a>
-<h1 class="unnumbered">Foreword</h1>
-<a name="index-foreword"></a>
-<a name="index-Charlie-Zender"></a>
-<p><acronym>NCO</acronym> is the result of software needs that arose while I worked
-on projects funded by <acronym>NCAR</acronym>, <acronym>NASA</acronym>, and <acronym>ARM</acronym>.
-Thinking they might prove useful as tools or templates to others,  
-it is my pleasure to provide them freely to the scientific community.  
-Many users (most of whom I have never met) have encouraged the
-development of <acronym>NCO</acronym>.  
-Thanks espcially to Jan Polcher, Keith Lindsay, Arlindo da Silva,
-John Sheldon, and William Weibel for stimulating suggestions and
-correspondence. 
-Your encouragment motivated me to complete the <cite>NCO User’s Guide</cite>.
-So if you like <acronym>NCO</acronym>, send me a note!
-I should mention that <acronym>NCO</acronym> is not connected to or
-officially endorsed by Unidata, <acronym>ACD</acronym>, <acronym>ASP</acronym>,
-<acronym>CGD</acronym>, or Nike.<br> 
-<br>
-Charlie Zender<br>
-May 1997<br>
-Boulder, Colorado<br>
-</p>
-<br>
-<br>
-<p>Major feature improvements entitle me to write another Foreword.
-In the last five years a lot of work has been done to refine
-<acronym>NCO</acronym>. 
-<a name="index-open-source"></a>
-<acronym>NCO</acronym> is now an open source project and appears to be much
-healthier for it. 
-The list of illustrious institutions that do not endorse <acronym>NCO</acronym>     
-continues to grow, and now includes <acronym>UCI</acronym>.<br> 
-<br>
-Charlie Zender<br>
-October 2000<br>
-Irvine, California<br>
-</p>
-<br>
-<br>
-<p>The most remarkable advances in <acronym>NCO</acronym> capabilities in the last  
-few years are due to contributions from the Open Source community.
-Especially noteworthy are the contributions of Henry Butowsky and Rorik 
-Peterson.<br> 
-<br>
-Charlie Zender<br>
-January 2003<br>
-Irvine, California<br>
-</p>
-<br>
-<br>
-<p><acronym>NCO</acronym> was generously supported from 2004–2008 by US 
-National Science Foundation (<acronym>NSF</acronym>) grant 
-<a href="http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0431203">IIS-0431203</a>. 
-This support allowed me to maintain and extend core <acronym>NCO</acronym> code,
-and others to advance <acronym>NCO</acronym> in new directions: 
-Gayathri Venkitachalam helped implement <acronym>MPI</acronym>;
-Harry Mangalam improved regression testing and benchmarking;
-Daniel Wang developed the server-side capability, <acronym>SWAMP</acronym>;
-and Henry Butowsky, a long-time contributor, developed <code>ncap2</code>.
-This support also led <acronym>NCO</acronym> to debut in professional journals
-and meetings.  
-The personal and professional contacts made during this evolution have
-been immensely rewarding.<br>
-<br>
-Charlie Zender<br>
-March 2008<br>
-Grenoble, France<br>
-</p>
-
-<a name="smr"></a> <!-- http://nco.sf.net/nco.html#smr --><hr size="6">
-<a name="Summary"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Foreword" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Foreword" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Summary-1"></a>
-<h1 class="unnumbered">Summary</h1>
-<a name="index-operators"></a>
-<a name="index-summary"></a>
-<p>This manual describes <acronym>NCO</acronym>, which stands for netCDF Operators.
-<acronym>NCO</acronym> is a suite of programs known as <em>operators</em>.
-Each operator is a standalone, command line program executed at the
-shell-level like, e.g., <code>ls</code> or <code>mkdir</code>.  
-The operators take netCDF files (including <acronym>HDF5</acronym> files
-constructed using the netCDF <acronym>API</acronym>) as input, perform an
-operation (e.g., averaging or hyperslabbing), and produce a netCDF file 
-as output.  
-The operators are primarily designed to aid manipulation and analysis of 
-data.
-The examples in this documentation are typical applications of the
-operators for processing climate model output. 
-This stems from their origin, though the operators are as general as
-netCDF itself.
-</p>
-<a name="ntr"></a> <!-- http://nco.sf.net/nco.html#ntr --><hr size="6">
-<a name="Introduction"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Summary" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Availability" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Summary" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Introduction-1"></a>
-<h1 class="chapter">1. Introduction</h1>
-<a name="index-introduction"></a>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Availability">1.1 Availability</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td><td>  </td><td align="left" valign="top">               
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Symbolic-Links">1.3 Symbolic Links</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Libraries">1.4 Libraries</a></td><td>  </td><td align="left" valign="top">                   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-</table>
-
-<hr size="6">
-<a name="Availability"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Introduction" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Compatability" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Availability-1"></a>
-<h2 class="section">1.1 Availability</h2>
-<a name="index-NCO-availability"></a>
-<a name="index-source-code"></a>
-<p>The complete <acronym>NCO</acronym> source distribution is currently distributed
-as a <em>compressed tarfile</em> from
-<a href="http://sf.net/projects/nco">http://sf.net/projects/nco</a>
-and from
-<a href="http://dust.ess.uci.edu/nco/nco.tar.gz">http://dust.ess.uci.edu/nco/nco.tar.gz</a>.
-The compressed tarfile must be uncompressed and untarred before building
-<acronym>NCO</acronym>.
-Uncompress the file with ‘<samp>gunzip nco.tar.gz</samp>’. 
-Extract the source files from the resulting tarfile with ‘<samp>tar -xvf
-nco.tar</samp>’.    
-<acronym>GNU</acronym> <code>tar</code> lets you perform both operations in one step
-with ‘<samp>tar -xvzf nco.tar.gz</samp>’. 
-</p>
-<a name="index-documentation"></a>
-<a name="index-WWW-documentation"></a>
-<a name="index-on_002dline-documentation"></a>
-<a name="index-HTML"></a>
-<a name="index-TeXinfo"></a>
-<a name="index-Info"></a>
-<a name="index-User_0027s-Guide"></a>
-<a name="index-NCO-User_0027s-Guide"></a>
-<p>The documentation for <acronym>NCO</acronym> is called the 
-<cite>NCO User’s Guide</cite>. 
-The <cite>User’s Guide</cite> is available in Postscript, <acronym>HTML</acronym>,
-<acronym>DVI</acronym>, TeXinfo, and Info formats.
-These formats are included in the source distribution in the files
-‘<tt>nco.ps</tt>’, ‘<tt>nco.html</tt>’, ‘<tt>nco.dvi</tt>’, ‘<tt>nco.texi</tt>’, and
-‘<tt>nco.info*</tt>’, respectively.
-All the documentation descends from a single source file,
-‘<tt>nco.texi</tt>’
-<a name="DOCF1" href="#FOOT1">(1)</a>.
-Hence the documentation in every format is very similar.
-However, some of the complex mathematical expressions needed to describe
-<code>ncwa</code> can only be displayed in <acronym>DVI</acronym>, Postscript, and 
-<acronym>PDF</acronym> formats. 
-</p>
-<a name="index-publications"></a>
-<a name="index-presentations"></a>
-<p>A complete list of papers and publications on/about <acronym>NCO</acronym> 
-is available on the <acronym>NCO</acronym> homepage.
-Most of these are freely available. 
-The primary refereed publications are fxm ZeM06 and fxm Zen07. 
-These contain copyright restrictions which limit their redistribution,
-but they are freely available in preprint form from the <acronym>NCO</acronym>.
-</p>
-<a name="index-NCO-homepage"></a>
-<p>If you want to quickly see what the latest improvements in <acronym>NCO</acronym>
-are (without downloading the entire source distribution), visit the
-<acronym>NCO</acronym> homepage at 
-<a href="http://nco.sf.net">http://nco.sf.net</a>.
-The <acronym>HTML</acronym> version of the <cite>User’s Guide</cite> is also available 
-online through the World Wide Web at <acronym>URL</acronym>
-<a href="http://nco.sf.net/nco.html">http://nco.sf.net/nco.html</a>.
-<a name="index-netCDF"></a>
-To build and use <acronym>NCO</acronym>, you must have netCDF installed.
-The netCDF homepage is
-<a href="http://www.unidata.ucar.edu/packages/netcdf">http://www.unidata.ucar.edu/packages/netcdf</a>.
-</p>
-<p>New <acronym>NCO</acronym> releases are announced on the netCDF list 
-and on the <code>nco-announce</code> mailing list 
-<a href="http://lists.sf.net/mailman/listinfo/nco-announce">http://lists.sf.net/mailman/listinfo/nco-announce</a>.
-</p>
-
-<hr size="6">
-<a name="Compatability"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Availability" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Windows-Operating-System" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Operating-systems-compatible-with-NCO"></a>
-<h2 class="section">1.2 Operating systems compatible with <acronym>NCO</acronym></h2>
-<a name="index-OS"></a>
-<a name="index-IBM"></a>
-<a name="index-NEC"></a>
-<a name="index-SGI"></a>
-<a name="index-HP"></a>
-<a name="index-DEC"></a>
-<a name="index-PGI"></a>
-<a name="index-Cray"></a>
-<a name="index-Digital"></a>
-<a name="index-Sun"></a>
-<a name="index-Intel"></a>
-<a name="index-Comeau"></a>
-<a name="index-Compaq"></a>
-<a name="index-Macintosh"></a>
-<a name="index-Microsoft"></a>
-<a name="index-Windows"></a>
-<a name="index-PathScale"></a>
-<a name="index-QLogic"></a>
-<a name="index-compatability"></a>
-<a name="index-portability"></a>
-<a name="index-installation"></a>
-<p><acronym>NCO</acronym> has been successfully ported and tested and is known to
-work on the following 32- and 64-bit platforms:  
-<acronym>IBM AIX</acronym> 4.x, 5.x,
-FreeBSD 4.x, 
-<acronym>GNU</acronym>/Linux 2.x, LinuxPPC, LinuxAlpha, LinuxARM, LinuxSparc64,
-<acronym>SGI IRIX</acronym> 5.x and 6.x,
-MacOS X 10.x, 
-<acronym>NEC</acronym> Super-UX 10.x, 
-<acronym>DEC OSF</acronym>, 
-Sun SunOS 4.1.x, Solaris 2.x, 
-<acronym>Cray UNICOS</acronym> 8.x–10.x,
-and MS Windows95 and all later versions.
-If you port the code to a new operating system, please send me a note 
-and any patches you required.
-</p>
-<a name="index-UNIX"></a>
-<a name="index-Unidata"></a>
-<a name="index-UDUnits"></a>
-<p>The major prerequisite for installing <acronym>NCO</acronym> on a particular
-platform is the successful, prior installation of the netCDF library
-(and, as of 2003, the UDUnits library).
-Unidata has shown a commitment to maintaining netCDF and UDUnits on all
-popular <acronym>UNIX</acronym> platforms, and is moving towards full support for 
-the Microsoft Windows operating system (<acronym>OS</acronym>).
-Given this, the only difficulty in implementing <acronym>NCO</acronym> on a
-particular platform is standardization of various C-language API
-system calls. 
-<acronym>NCO</acronym> code is tested for <acronym>ANSI</acronym> compliance by
-compiling with C compilers including those from 
-<a name="index-CC"></a>
-<a name="index-c_002b_002b"></a>
-<a name="index-cc"></a>
-<a name="index-como"></a>
-<a name="index-cxx"></a>
-<a name="index-gcc"></a>
-<a name="index-icc"></a>
-<a name="index-pgcc"></a>
-<a name="index-pgCC"></a>
-<a name="index-pathcc"></a>
-<a name="index-pathCC"></a>
-<a name="index-xlC"></a>
-<a name="index-xlc"></a>
-<acronym>GNU</acronym> (‘<samp>gcc -std=c99 -pedantic -D_BSD_SOURCE -D_POSIX_SOURCE</samp>’ -Wall)
-<a name="DOCF2" href="#FOOT2">(2)</a>,
-Comeau Computing (‘<samp>como --c99</samp>’),
-Cray (‘<samp>cc</samp>’),
-<acronym>HP</acronym>/Compaq/<acronym>DEC</acronym> (‘<samp>cc</samp>’),
-<acronym>IBM</acronym> (‘<samp>xlc -c -qlanglvl=extc99</samp>’),
-Intel (‘<samp>icc -std=c99</samp>’),
-<acronym>NEC</acronym> (‘<samp>cc</samp>’),
-PathScale (QLogic) (‘<samp>pathcc -std=c99</samp>’),
-<acronym>PGI</acronym> (‘<samp>pgcc -c9x</samp>’),
-<acronym>SGI</acronym> (‘<samp>cc -c99</samp>’),
-and
-Sun (‘<samp>cc</samp>’).
-<a name="index-C_002b_002b"></a>
-<a name="index-ISO"></a>
-<a name="index-libnco"></a>
-<acronym>NCO</acronym> (all commands and the <code>libnco</code> library) and
-the C++ interface to netCDF (called <code>libnco_c++</code>) comply with
-the <acronym>ISO</acronym> C++ standards as implemented by
-Comeau Computing (‘<samp>como</samp>’),
-Cray (‘<samp>CC</samp>’),
-<acronym>GNU</acronym> (‘<samp>g++ -Wall</samp>’),
-<acronym>HP</acronym>/Compaq/<acronym>DEC</acronym> (‘<samp>cxx</samp>’),
-<acronym>IBM</acronym> (‘<samp>xlC</samp>’),
-Intel (‘<samp>icc</samp>’),
-<acronym>NEC</acronym> (‘<samp>c++</samp>’),
-PathScale (Qlogic) (‘<samp>pathCC</samp>’),
-<acronym>PGI</acronym> (‘<samp>pgCC</samp>’),
-<acronym>SGI</acronym> (‘<samp>CC -LANG:std</samp>’),
-and
-Sun (‘<samp>CC -LANG:std</samp>’).
-<a name="index-Makefile"></a>
-See ‘<tt>nco/bld/Makefile</tt>’ and ‘<tt>nco/src/nco_c++/Makefile.old</tt>’ for
-more details and exact settings. 
-</p>
-<a name="index-ANSI"></a>
-<a name="index-C89"></a>
-<a name="index-printf"></a>
-<p>Until recently (and not even yet), <acronym>ANSI</acronym>-compliant has meant
-compliance with the 1989 <acronym>ISO</acronym> C-standard, usually called C89 (with
-minor revisions made in 1994 and 1995).
-C89 lacks variable-size arrays, restricted pointers, some useful
-<code>printf</code> formats, and many mathematical special functions.
-<a name="index-C99"></a>
-These are valuable features of C99, the 1999 <acronym>ISO</acronym> C-standard. 
-<acronym>NCO</acronym> is C99-compliant where possible and C89-compliant where
-necessary. 
-Certain branches in the code are required to satisfy the native
-<acronym>SGI</acronym> and SunOS C compilers, which are strictly <acronym>ANSI</acronym> 
-C89 compliant, and cannot benefit from C99 features.
-However, C99 features are fully supported by modern <acronym>AIX</acronym>,
-<acronym>GNU</acronym>, Intel, <acronym>NEC</acronym>, Solaris, and <acronym>UNICOS</acronym>
-compilers. 
-<acronym>NCO</acronym> requires a C99-compliant compiler as of <acronym>NCO</acronym>
-version 2.9.8, released in August, 2004.
-</p>
-<p>The most time-intensive portion of <acronym>NCO</acronym> execution is spent in
-arithmetic operations, e.g., multiplication, averaging, subtraction.
-These operations were performed in Fortran by default until August,
-1999.  
-This was a design decision based on the relative speed of Fortran-based
-object code vs. C-based object code in late 1994.
-C compiler vectorization capabilities have dramatically improved 
-since 1994.
-We have accordingly replaced all Fortran subroutines with C functions.
-This greatly simplifies the task of building <acronym>NCO</acronym> on nominally
-unsupported platforms.  
-<a name="index-C-language"></a>
-As of August 1999, <acronym>NCO</acronym> built entirely in C by default.
-This allowed <acronym>NCO</acronym> to compile on any machine with an
-<acronym>ANSI</acronym> C compiler. 
-<a name="index-C99-1"></a>
-<a name="index-C89-1"></a>
-<a name="index-restrict"></a>
-In August 2004, the first C99 feature, the <code>restrict</code> type
-qualifier, entered <acronym>NCO</acronym> in version 2.9.8. 
-C compilers can obtain better performance with C99 restricted 
-pointers since they inform the compiler when it may make Fortran-like
-assumptions regarding pointer contents alteration.
-Subsequently, <acronym>NCO</acronym> requires a C99 compiler to build correctly
-<a name="DOCF3" href="#FOOT3">(3)</a>.
-</p>
-<a name="index-GSL"></a>
-<a name="index-ncap2"></a>
-<p>In January 2009, <acronym>NCO</acronym> version 3.9.6 was the first to link
-to the GNU Scientific Library (<acronym>GSL</acronym>).
-<acronym>GSL</acronym> must be version 1.4 or later. 
-<acronym>NCO</acronym>, in particular <code>ncap2</code>, uses the <acronym>GSL</acronym>
-special function library to evaluate geoscience-relevant mathematics
-such as Bessel functions, Legendre polynomials, and incomplete gamma
-functions (see section <a href="#GSL-special-functions">GSL special functions</a>).
-</p> 
-<a name="index-gamma"></a>
-<p>In June 2005, <acronym>NCO</acronym> version 3.0.1 began to take advantage
-of C99 mathematical special functions.
-These include the standarized gamma function (called <code>tgamma()</code> 
-for “true gamma”). 
-<a name="index-automagic"></a>
-<acronym>NCO</acronym> automagically takes advantage of some <acronym>GNU</acronym>
-Compiler Collection (<acronym>GCC</acronym>) extensions to <acronym>ANSI</acronym> C.
-</p>
-<p>As of July 2000 and <acronym>NCO</acronym> version 1.2, <acronym>NCO</acronym> no
-longer performs arithmetic operations in Fortran.
-We decided to sacrifice executable speed for code maintainability.
-Since no objective statistics were ever performed to quantify 
-the difference in speed between the Fortran and C code,
-the performance penalty incurred by this decision is unknown.
-Supporting Fortran involves maintaining two sets of routines for every
-arithmetic operation. 
-The <code>USE_FORTRAN_ARITHMETIC</code> flag is still retained in the
-‘<tt>Makefile</tt>’.
-The file containing the Fortran code, ‘<tt>nco_fortran.F</tt>’, has been
-deprecated but a volunteer (Dr. Frankenstein?) could resurrect it.
-If you would like to volunteer to maintain ‘<tt>nco_fortran.F</tt>’ please 
-contact me. 
-</p>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td><td>  </td><td align="left" valign="top">    
-</td></tr>
-</table>
-
-<a name="wnd"></a> <!-- http://nco.sf.net/nco.html#wnd --><hr size="6">
-<a name="Windows-Operating-System"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Compatability" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Symbolic-Links" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Compatability" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Compiling-NCO-for-Microsoft-Windows-OS"></a>
-<h3 class="subsection">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></h3>
-<a name="index-Windows-1"></a>
-<a name="index-Microsoft-1"></a>
-<a name="index-XP-_0028Microsoft-operating-system_0029"></a>
-<a name="index-NT-_0028Microsoft-operating-system_0029"></a>
-<a name="index-Vista-_0028Microsoft-operating-system_0029"></a>
-
-<p><acronym>NCO</acronym> has been successfully ported and tested on most Microsoft  
-Windows operating systems including: 95/98/NT/2000/XP/Vista.
-The switches necessary to accomplish this are included in the standard
-distribution of <acronym>NCO</acronym>.
-Using the freely available Cygwin (formerly gnu-win32) development
-environment  
-<a name="DOCF4" href="#FOOT4">(4)</a>, the compilation process is very similar to
-installing <acronym>NCO</acronym> on a <acronym>UNIX</acronym> system.  
-<a name="index-preprocessor-tokens"></a>
-<a name="index-Cygwin"></a>
-<a name="index-gnu_002dwin32"></a>
-<a name="index-WIN32"></a>
-<a name="index-GNUmakefile"></a>
-<a name="index-Makefile-1"></a>
-<a name="index-f90"></a>
-Set the <code>PVM_ARCH</code> preprocessor token to <code>WIN32</code>.  
-Note that defining <code>WIN32</code> has the side effect of disabling
-Internet features of <acronym>NCO</acronym> (see below). 
-<acronym>NCO</acronym> should now build like it does on <acronym>UNIX</acronym>.
-</p>
-<a name="index-UNIX-1"></a>
-<a name="index-getuid"></a>
-<a name="index-gethostname"></a>
-<a name="index-_003carpa_002fnameser_002eh_003e"></a>
-<a name="index-_003cresolv_002eh_003e"></a>
-<p>The least portable section of the code is the use of standard
-<acronym>UNIX</acronym> and Internet protocols (e.g., <code>ftp</code>, <code>rcp</code>,
-<code>scp</code>, <code>sftp</code>, <code>getuid</code>, <code>gethostname</code>, and header
-files ‘<tt><arpa/nameser.h></tt>’ and 
-‘<tt><resolv.h></tt>’). 
-<a name="index-ftp"></a>
-<a name="index-sftp"></a>
-<a name="index-rcp"></a>
-<a name="index-scp"></a>
-<a name="index-SSH"></a>
-<a name="index-remote-files"></a>
-Fortunately, these <acronym>UNIX</acronym>-y calls are only invoked by the single  
-<acronym>NCO</acronym> subroutine which is responsible for retrieving files
-stored on remote systems (see section <a href="#Remote-storage">Accessing Remote Files</a>).
-In order to support <acronym>NCO</acronym> on the Microsoft Windows platforms,
-this single feature was disabled (on Windows <acronym>OS</acronym> only).
-This was required by Cygwin 18.x—newer versions of Cygwin may
-support these protocols (let me know if this is the case).
-The <acronym>NCO</acronym> operators should behave identically on Windows and
-<acronym>UNIX</acronym> platforms in all other respects.
-</p>
-<a name="sym"></a> <!-- http://nco.sf.net/nco.html#sym --><hr size="6">
-<a name="Symbolic-Links"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Windows-Operating-System" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Libraries" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Symbolic-Links-1"></a>
-<h2 class="section">1.3 Symbolic Links</h2>
-<a name="index-symbolic-links"></a>
-<p><acronym>NCO</acronym> relies on a common set of underlying algorithms.
-To minimize duplication of source code, multiple operators sometimes
-share the same underlying source.
-This is accomplished by symbolic links from a single underlying
-executable program to one or more invoked executable names.
-For example, <code>ncea</code> and <code>ncrcat</code> are symbolically linked  
-to the <code>ncra</code> executable.
-The <code>ncra</code> executable behaves slightly differently based on its
-invocation name (i.e., ‘<samp>argv[0]</samp>’), which can be 
-<code>ncea</code>, <code>ncra</code>, or <code>ncrcat</code>.
-Logically, these are three different operators that happen to share 
-the same executable.
-</p>
-<a name="index-Cygwin-1"></a>
-<a name="index-synonym"></a>
-<a name="index-pseudonym"></a>
-<a name="index-_002d_002dpseudonym"></a>
-<p>For historical reasons, and to be more user friendly, multiple synonyms 
-(or pseudonyms) may refer to the same operator invoked with different
-switches. 
-For example, <code>ncdiff</code> is the same as <code>ncbo</code> and
-<code>ncpack</code> is the same as <code>ncpdq</code>.
-We implement the symbolic links and synonyms by the executing the
-following <acronym>UNIX</acronym> commands in the directory where the
-<acronym>NCO</acronym> executables are installed.
-</p><table><tr><td> </td><td><pre class="example">ln -s -f ncbo ncdiff    # ncbo --op_typ='+'
-ln -s -f ncra ncecat    # ncra --pseudonym='ncecat'
-ln -s -f ncra ncrcat    # ncra --pseudonym='ncrcat'
-ln -s -f ncbo ncadd     # ncbo --op_typ='+'
-ln -s -f ncbo ncsubtract # ncbo --op_typ='-'
-ln -s -f ncbo ncmultiply # ncbo --op_typ='*'
-ln -s -f ncbo ncdivide   # ncbo --op_typ='/'
-ln -s -f ncpdq ncpack    # ncpdq
-ln -s -f ncpdq ncunpack  # ncpdq --unpack
-# NB: Cygwin executable (and link) names have an '.exe' suffix, e.g.,
-ln -s -f ncbo.exe ncdiff.exe
-...
-</pre></td></tr></table>
-<p>The imputed command called by the link is given after the comment.
-As can be seen, some these links impute the passing of a command line
-argument to further modify the behavior of the underlying executable.
-For example, <code>ncdivide</code> is a pseudonym for
-<code>ncbo --op_typ='/'</code>.
-</p>
-<a name="lbr"></a> <!-- http://nco.sf.net/nco.html#lbr --><hr size="6">
-<a name="Libraries"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Symbolic-Links" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Libraries-1"></a>
-<h2 class="section">1.4 Libraries</h2>
-<a name="index-libraries"></a>
-<a name="index-LD_005fLIBRARY_005fPATH"></a>
-<a name="index-dynamic-linking"></a>
-<a name="index-static-linking"></a>
-<p>Like all executables, the <acronym>NCO</acronym> operators can be built using dynamic
-linking. 
-<a name="index-performance"></a>
-<a name="index-operator-speed"></a>
-<a name="index-speed"></a>
-<a name="index-execution-time"></a>
-This reduces the size of the executable and can result in significant
-performance enhancements on multiuser systems.
-Unfortunately, if your library search path (usually the
-<code>LD_LIBRARY_PATH</code> environment variable) is not set correctly, or if
-the system libraries have been moved, renamed, or deleted since
-<acronym>NCO</acronym> was installed, it is possible <acronym>NCO</acronym> operators
-will fail with a message that they cannot find a dynamically loaded (aka
-<em>shared object</em> or ‘<samp>.so</samp>’) library. 
-This will produce a distinctive error message, such as
-‘<samp>ld.so.1: /usr/local/bin/ncea: fatal: libsunmath.so.1: can't
-open file: errno=2</samp>’.   
-If you received an error message like this, ask your system 
-administrator to diagnose whether the library is truly missing
-<a name="DOCF5" href="#FOOT5">(5)</a>, or whether you
-simply need to alter your library search path.
-As a final remedy, you may re-compile and install <acronym>NCO</acronym> with all
-operators statically linked.  
-</p>
-<hr size="6">
-<a name="netCDF2_002f3_002f4-and-HDF4_002f5-Support"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Libraries" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Help-Requests-and-Bug-Reports" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="netCDF2_002f3_002f4-and-HDF4_002f5-Support-1"></a>
-<h2 class="section">1.5 netCDF2/3/4 and HDF4/5 Support</h2>
-<a name="index-netCDF2"></a>
-<a name="index-netCDF3"></a>
-<p>netCDF version 2 was released in 1993.
-<acronym>NCO</acronym> (specifically <code>ncks</code>) began soon after this in 1994.  
-netCDF 3.0 was released in 1996, and we were eager to reap the
-performance advantages of the newer netCDF implementation.
-One netCDF3 interface call (<code>nc_inq_libvers</code>) was added to 
-<acronym>NCO</acronym> in January, 1998, to aid in maintainance and debugging. 
-In March, 2001, the final conversion of <acronym>NCO</acronym> to netCDF3 
-was completed (coincidentally on the same day netCDF 3.5 was
-released). 
-<acronym>NCO</acronym> versions 2.0 and higher are built with the
-<code>-DNO_NETCDF_2</code> flag to ensure no netCDF2 interface calls   
-are used.
-<a name="index-NO_005fNETCDF_005f2"></a>
-</p>
-<a name="index-HDF"></a>
-<a name="index-Hierarchical-Data-Format"></a>
-<a name="index-Mike-Folk"></a>
-<p>However, the ability to compile <acronym>NCO</acronym> with only netCDF2
-calls is worth maintaining because <acronym>HDF</acronym> version 4
-<a name="DOCF6" href="#FOOT6">(6)</a> 
-(available from <a href="http://hdf.ncsa.uiuc.edu">HDF</a>)
-supports only the netCDF2 library calls
-(see <a href="http://hdf.ncsa.uiuc.edu/UG41r3_html/SDS_SD.fm12.html#47784">http://hdf.ncsa.uiuc.edu/UG41r3_html/SDS_SD.fm12.html#47784</a>).
-Note that there are multiple versions of <acronym>HDF</acronym>.
-Currently <acronym>HDF</acronym> version 4.x supports netCDF2 and thus 
-<acronym>NCO</acronym> version 1.2.x. 
-If <acronym>NCO</acronym> version 1.2.x (or earlier) is built with only
-netCDF2 calls then all <acronym>NCO</acronym> operators should work with 
-<acronym>HDF4</acronym> files as well as netCDF files
-<a name="DOCF7" href="#FOOT7">(7)</a>.
-<a name="index-NETCDF2_005fONLY"></a>
-The preprocessor token <code>NETCDF2_ONLY</code> exists
-in <acronym>NCO</acronym> version 1.2.x to eliminate all netCDF3
-calls.  
-Only versions of <acronym>NCO</acronym> numbered 1.2.x and earlier have this
-capability. 
-The <acronym>NCO</acronym> 1.2.x branch will be maintained with bugfixes only  
-(no new features) until <acronym>HDF</acronym> begins to fully support the
-netCDF3 interface (which is employed by <acronym>NCO</acronym> 2.x).
-If, at compilation time, <code>NETCDF2_ONLY</code> is defined, then
-<acronym>NCO</acronym> version 1.2.x will not use any netCDF3 calls
-and, if linked properly, the resulting <acronym>NCO</acronym> operators will work
-with <acronym>HDF4</acronym> files.  
-<a name="index-Makefile-2"></a>
-The ‘<tt>Makefile</tt>’ supplied with <acronym>NCO</acronym> 1.2.x is written
-to simplify building in this <acronym>HDF</acronym> capability.
-When <acronym>NCO</acronym> is built with <code>make HDF4=Y</code>, the ‘<tt>Makefile</tt>’ 
-sets all required preprocessor flags and library links to build 
-with the <acronym>HDF4</acronym> libraries (which are assumed to reside under  
-<code>/usr/local/hdf4</code>, edit the ‘<tt>Makefile</tt>’ to suit your
-installation).  
-</p>
-<a name="index-Unidata-1"></a>
-<a name="index-NCSA"></a>
-<a name="index-netCDF4"></a>
-<a name="index-HDF5"></a>
-<p><acronym>HDF</acronym> version 5 became available in 1999, but did not
-support netCDF (or, for that matter, Fortran) as of December 1999.
-By early 2001, <acronym>HDF5</acronym> did support Fortran90.
-In 2004, Unidata and <acronym>NCSA</acronym> began a project to implement
-the <acronym>HDF5</acronym> features necessary to support the netCDF API.
-<acronym>NCO</acronym> version 3.0.3 added support for reading/writing
-netCDF4-formatted <acronym>HDF5</acronym> files in October, 2005.
-See <a href="#Selecting-Output-File-Format">Selecting Output File Format</a> for more details.
-</p>
-<p>HDF support for netCDF was completed with HDF5 version 
-version 1.8 in 2007. 
-The netCDF front-end that uses this <acronym>HDF5</acronym> back-end 
-was completed and released soon after as netCDF version 4.
-Download it from the
-<a href="http://my.unidata.ucar.edu/content/software/netcdf/netcdf-4">netCDF4</a>
-website. 
-</p>
-<a name="nco4"></a> <!-- http://nco.sf.net/nco.html#nco4 --><p><acronym>NCO</acronym> version 3.9.0, released in May, 2007, added support for
-all netCDF4 atomic data types except <code>NC_STRING</code>.
-Support for <code>NC_STRING</code>, including ragged arrays of strings,
-was finally added in version 3.9.9, released in June, 2009.
-Support for additional netCDF4 features has been incremental.
-We add one netCDF4 feature at a time.
-You must build <acronym>NCO</acronym> with netCDF4 to obtain this support.
-</p>
-<a name="index-NC_005fUBYTE"></a>
-<a name="index-NC_005fUSHORT"></a>
-<a name="index-NC_005fUINT"></a>
-<a name="index-NC_005fINT64"></a>
-<a name="index-NC_005fUINT64"></a>
-<p>The main netCDF4 features that NCO currently supports are the new 
-atomic data types, Lempel-Ziv compression (deflation), and chunking. 
-The new atomic data types are <code>NC_UBYTE</code>, <code>NC_USHORT</code>, 
-<code>NC_UINT</code>, <code>NC_INT64</code>, and <code>NC_UINT64</code>.
-Eight-byte integer support is an especially useful improvement from
-netCDF3. 
-All <acronym>NCO</acronym> operators support these types, e.g., <code>ncks</code>
-copies and prints them, <code>ncra</code> averages them, and
-<code>ncap2</code> processes algebraic scripts with them.
-<code>ncks</code> prints compression information, if any, to screen.
-</p>
-<a name="index-deflation"></a>
-<p><acronym>NCO</acronym> version 3.9.1 (June, 2007) added support for netCDF4 
-Lempel-Ziv deflation.
-Lempel-Ziv deflation is a lossless compression technique.
-See <a href="#Deflation">Deflation</a> for more details.
-</p>
-<a name="index-chunking"></a>
-<p><acronym>NCO</acronym> version 3.9.9 (June, 2009) added support for netCDF4
-chunking in <code>ncks</code> and <code>ncecat</code>.
-<acronym>NCO</acronym> version 4.0.4 (September, 2010) completed support for
-netCDF4 chunking in the remaining operators.
-See <a href="#Chunking">Chunking</a> for more details.
-</p>
-<a name="index-HDF5-1"></a>
-<a name="index-_002d4"></a>
-<a name="index-_002d3"></a>
-<p>netCDF4-enabled <acronym>NCO</acronym> handles netCDF3 files without change.
-In addition, it automagically handles netCDF4 (<acronym>HDF5</acronym>) files:
-If you feed <acronym>NCO</acronym> netCDF3 files, it produces netCDF3 output.
-If you feed <acronym>NCO</acronym> netCDF4 files, it produces netCDF4 output.
-Use the handy-dandy ‘<samp>-4</samp>’ switch to request netCDF4 output from 
-netCDF3 input, i.e., to convert netCDF3 to netCDF4.
-See <a href="#Selecting-Output-File-Format">Selecting Output File Format</a> for more details.
-</p>
-<a name="index-RPM"></a>
-<a name="index-Debian"></a>
-<p>As of 2010, netCDF4 is still relatively new software.
-Problems with netCDF4 and <acronym>HDF</acronym> libraries are still being fixed.
-Binary <acronym>NCO</acronym> distributions shipped as <acronym>RPM</acronym>s use the
-netCDF4 library, while debs use the netCDF3 library, because of upstream
-requirements. 
-</p>
-<a name="index-NETCDF4_005fROOT"></a>
-<p>One must often build <acronym>NCO</acronym> from source to obtain netCDF4
-support. 
-Typically, one specifies the root of the netCDF4
-installation directory. Do this with the <code>NETCDF4_ROOT</code> variable.
-Then use your preferred <acronym>NCO</acronym> build mechanism, e.g.,
-</p><table><tr><td> </td><td><pre class="example">export NETCDF4_ROOT=/usr/local/netcdf4 # Set netCDF4 location
-cd ~/nco;./configure --enable-netcdf4  # Configure mechanism -or-
-cd ~/nco/bld;./make NETCDF4=Y allinone # Old Makefile mechanism
-</pre></td></tr></table>
-
-<p>We carefully track the netCDF4 releases, and keep the netCDF4 atomic
-type support and other features working.
-Our long term goal is to utilize more of the extensive new netCDF4
-feature set. The next major netCDF4 feature we are likely to utilize
-is parallel I/O. We will enable this in the <acronym>MPI</acronym> netCDF
-operators. 
-</p>
-<a name="help"></a> <!-- http://nco.sf.net/nco.html#help -->
-<a name="hlp"></a> <!-- http://nco.sf.net/nco.html#hlp -->
-<a name="bug"></a> <!-- http://nco.sf.net/nco.html#bug --><hr size="6">
-<a name="Help-Requests-and-Bug-Reports"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Help-Requests-and-Bug-Reports-1"></a>
-<h2 class="section">1.6 Help Requests and Bug Reports</h2>
-<a name="index-reporting-bugs"></a>
-<a name="index-bugs_002c-reporting"></a>
-<a name="index-core-dump"></a>
-<a name="index-help"></a>
-<a name="index-features_002c-requesting"></a>
-<p>We generally receive three categories of mail from users: help requests,
-bug reports, and feature requests.
-Notes saying the equivalent of "Hey, <acronym>NCO</acronym> continues to work
-great and it saves me more time everyday than it took to write this
-note" are a distant fourth.
-</p>
-<p>There is a different protocol for each type of request.
-The preferred etiquette for all communications is via <acronym>NCO</acronym>
-Project Forums. 
-Do not contact project members via personal e-mail unless your request
-comes with money or you have damaging information about our personal
-lives.
-<em>Please use the Forums</em>—they preserve a record of the questions
-and answers so that others can learn from our exchange.
-Also, since <acronym>NCO</acronym> is government-funded, this record helps us
-provide program officers with information they need to evaluate our
-project. 
-</p>
-<p>Before posting to the <acronym>NCO</acronym> forums described below, you might
-first <a href="https://sf.net/account/register.php">register</a>
-your name and email address with SourceForge.net or else all of your
-postings will be attributed to "nobody".
-Once registered you may choose to "monitor" any forum and to receive
-(or not) email when there are any postings including responses to your
-questions.
-We usually reply to the forum message, not to the original poster.
-</p>
-<p>If you want us to include a new feature in <acronym>NCO</acronym>, check first to 
-see if that feature is already on the <a href="file:./TODO">TODO</a> list.
-If it is, why not implement that feature yourself and send us the patch?
-If the feature is not yet on the list, then send a note to the
-<a href="http://sourceforge.net/projects/nco/forums/forum/9829">NCO Discussion forum</a>.
-</p>
-<p>Read the manual before reporting a bug or posting a help request.
-Sending questions whose answers are not in the manual is the best
-way to motivate us to write more documentation.  
-We would also like to accentuate the contrapositive of this statement.  
-If you think you have found a real bug <em>the most helpful thing you 
-can do is simplify the problem to a manageable size and then report it</em>.
-The first thing to do is to make sure you are running the latest
-publicly released version of <acronym>NCO</acronym>.  
-</p>
-<p>Once you have read the manual, if you are still unable to get
-<acronym>NCO</acronym> to perform a documented function, submit a help request.
-Follow the same procedure as described below for reporting bugs
-(after all, it might be a bug).
-<a name="index-debugging"></a>
-<a name="index-_002dr"></a>
-<a name="index-_002dD"></a>
-That is, describe what you are trying to do, and include the complete
-commands (run with ‘<samp>-D 5</samp>’), error messages, and version of
-<acronym>NCO</acronym> (with ‘<samp>-r</samp>’).  
-Post your help request to the 
-<a href="http://sourceforge.net/projects/nco/forums/forum/9830">NCO Help forum</a>.
-</p>
-<p>If you think you used the right command when <acronym>NCO</acronym> misbehaves,
-then you might have found a bug.  
-Incorrect numerical answers are the highest priority.
-We usually fix those within one or two days.
-Core dumps and sementation violations receive lower priority.
-They are always fixed, eventually. 
-</p>
-<p>How do you simplify a problem that reveal a bug?
-Cut out extraneous variables, dimensions, and metadata from the
-offending files and re-run the command until it no longer breaks.  
-Then back up one step and report the problem.
-Usually the file(s) will be very small, i.e., one variable with one or
-two small dimensions ought to suffice.
-<a name="dbg"></a> <!-- http://nco.sf.net/nco.html#dbg -->
-<a name="-D"></a> <!-- http://nco.sf.net/nco.html#-D --><a name="index-_002dr-1"></a>
-<a name="index-_002d_002drevision"></a>
-<a name="index-_002d_002dversion"></a>
-<a name="index-_002d_002dvrs"></a>
-<a name="index-_002dD-debug_002dlevel"></a>
-<a name="index-_002d_002ddebug_002dlevel-debug_002dlevel"></a>
-<a name="index-_002d_002ddbg_005flvl-debug_002dlevel"></a>
-<a name="index-debug_002dlevel"></a>
-<a name="index-dbg_005flvl"></a>
-Run the operator with ‘<samp>-r</samp>’ and then run the command with 
-‘<samp>-D 5</samp>’ to increase the verbosity of the debugging output.
-It is very important that your report contain the exact error messages 
-and compile-time environment.
-Include a copy of your sample input file, or place one on a 
-publically accessible location, of the file(s).
-Post the full bug report to the 
-<a href="http://sf.net/bugs/?group_id=3331">NCO Project buglist</a>.
-</p>
-<a name="index-installation-1"></a>
-<a name="index-autoconf"></a>
-<a name="index-nco_002econfigure_002e_0024_007bGNU_005fTRP_007d_002efoo"></a>
-<a name="index-nco_002econfig_002elog_002e_0024_007bGNU_005fTRP_007d_002efoo"></a>
-<a name="index-nco_002emake_002e_0024_007bGNU_005fTRP_007d_002efoo"></a>
-<a name="index-config_002eguess"></a>
-<a name="index-configure_002eeg"></a>
-<p>Build failures count as bugs.
-Our limited machine access means we cannot fix all build failures.
-The information we need to diagnose, and often fix, build failures
-are the three files output by <acronym>GNU</acronym> build tools,  
-‘<tt>nco.config.log.${GNU_TRP}.foo</tt>’,
-‘<tt>nco.configure.${GNU_TRP}.foo</tt>’, 
-and ‘<tt>nco.make.${GNU_TRP}.foo</tt>’.
-The file ‘<tt>configure.eg</tt>’ shows how to produce these files.
-Here <code>${GNU_TRP}</code> is the "<acronym>GNU</acronym> architecture triplet",
-the <var>chip-vendor-OS</var> string returned by ‘<tt>config.guess</tt>’.
-Please send us your improvements to the examples supplied in
-‘<tt>configure.eg</tt>’.
-<a name="index-regressions-archive"></a>
-The regressions archive at <a href="http://dust.ess.uci.edu/nco/rgr">http://dust.ess.uci.edu/nco/rgr</a>
-contains the build output from our standard test systems.
-You may find you can solve the build problem yourself by examining the
-differences between these files and your own.
-</p>
-<a name="str"></a> <!-- http://nco.sf.net/nco.html#str --><hr size="6">
-<a name="Strategies"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Help-Requests-and-Bug-Reports" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Philosophy" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Introduction" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Operator-Strategies"></a>
-<h1 class="chapter">2. Operator Strategies</h1>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Philosophy">2.1 Philosophy</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Climate-Model-Paradigm">2.2 Climate Model Paradigm</a></td><td>  </td><td align="left" valign="top">      
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td><td>  </td><td align="left" valign="top">      
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td><td>  </td><td align="left" valign="top">         
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Simple-Arithmetic-and-Interpolation">2.5 Simple Arithmetic and Interpolation</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Averaging-vs_002e-Concatenating">2.6 Averagers vs. Concatenators</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td><td>  </td><td align="left" valign="top">      
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td><td>  </td><td align="left" valign="top">         
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Performance">2.10 Performance</a></td><td>  </td><td align="left" valign="top">                 
-</td></tr>
-</table>
-
-<a name="phl"></a> <!-- http://nco.sf.net/nco.html#phl --><hr size="6">
-<a name="Philosophy"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Strategies" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Climate-Model-Paradigm" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Philosophy-1"></a>
-<h2 class="section">2.1 Philosophy</h2>
-<a name="index-philosophy"></a>
-<a name="index-climate-model"></a>
-
-<p>The main design goal is command line operators which perform useful,
-scriptable operations on netCDF files.  
-Many scientists work with models and observations which produce too much
-data to analyze in tabular format.
-Thus, it is often natural to reduce and massage this raw or primary
-level data into summary, or second level data, e.g., temporal or spatial
-averages. 
-These second level data may become the inputs to graphical and
-statistical packages, and are often more suitable for archival and
-dissemination to the scientific community.
-<acronym>NCO</acronym> performs a suite of operations useful in manipulating data
-from the primary to the second level state.
-<a name="index-NCL"></a>
-<a name="index-IDL"></a>
-<a name="index-Perl"></a>
-<a name="index-Yorick"></a>
-Higher level interpretive languages (e.g., <acronym>IDL</acronym>, Yorick,
-Matlab, <acronym>NCL</acronym>, Perl, Python),
-and lower level compiled languages (e.g., C, Fortran) can always perform  
-any task performed by <acronym>NCO</acronym>, but often with more overhead.
-NCO, on the other hand, is limited to a much smaller set of arithmetic
-and metadata operations than these full blown languages.
-</p>
-<a name="index-command-line-switches"></a>
-<p>Another goal has been to implement enough command line switches so that 
-frequently used sequences of these operators can be executed from a
-shell script or batch file.
-Finally, <acronym>NCO</acronym> was written to consume the absolute minimum
-amount of system memory required to perform a given job.
-The arithmetic operators are extremely efficient; their exact memory
-usage is detailed in <a href="#Memory-Requirements">Memory Requirements</a>.
-</p>
-<a name="clm"></a> <!-- http://nco.sf.net/nco.html#clm --><hr size="6">
-<a name="Climate-Model-Paradigm"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Philosophy" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Temporary-Output-Files" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Climate-Model-Paradigm-1"></a>
-<h2 class="section">2.2 Climate Model Paradigm</h2>
-<a name="index-climate-model-1"></a>
-<a name="index-NCAR"></a>
-<a name="index-GCM"></a>
-
-<p><acronym>NCO</acronym> was developed at <acronym>NCAR</acronym> to aid analysis and
-manipulation of datasets produced by General Circulation Models
-(<acronym>GCM</acronym>s).  
-Datasets produced by <acronym>GCM</acronym>s share many features with all gridded
-scientific datasets and so provide a useful paradigm for the explication
-of the <acronym>NCO</acronym> operator set.
-Examples in this manual use a <acronym>GCM</acronym> paradigm because latitude,
-longitude, time, temperature and other fields related to our natural
-environment are as easy to visualize for the layman as the expert.
-</p>
-<a name="out"></a> <!-- http://nco.sf.net/nco.html#out --><hr size="6">
-<a name="Temporary-Output-Files"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Climate-Model-Paradigm" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Appending-Variables" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Temporary-Output-Files-1"></a>
-<h2 class="section">2.3 Temporary Output Files</h2>
-<a name="index-data-safety"></a>
-<a name="index-error-tolerance"></a>
-<a name="index-safeguards"></a>
-<a name="index-temporary-output-files"></a>
-<p><acronym>NCO</acronym> operators are designed to be reasonably fault tolerant, so
-that if there is a system failure or the user aborts the operation (e.g.,
-with <kbd>C-c</kbd>), then no data are lost. 
-The user-specified <var>output-file</var> is only created upon successful
-completion of the operation  
-<a name="DOCF8" href="#FOOT8">(8)</a>.
-This is accomplished by performing all operations in a temporary copy
-of <var>output-file</var>.
-The name of the temporary output file is constructed by appending
-<code>.pid<var><process ID></var>.<var><operator name></var>.tmp</code> to the
-user-specified <var>output-file</var> name.  
-When the operator completes its task with no fatal errors, the temporary
-output file is moved to the user-specified <var>output-file</var>.
-Note the construction of a temporary output file uses more disk space
-than just overwriting existing files “in place” (because there may be
-two copies of the same file on disk until the <acronym>NCO</acronym> operation
-successfully concludes and the temporary output file overwrites the
-existing <var>output-file</var>).  
-<a name="index-performance-1"></a>
-<a name="index-operator-speed-1"></a>
-<a name="index-speed-1"></a>
-<a name="index-execution-time-1"></a>
-Also, note this feature increases the execution time of the operator
-by approximately the time it takes to copy the <var>output-file</var>.
-Finally, note this feature allows the <var>output-file</var> to be the same 
-as the <var>input-file</var> without any danger of “overlap”.
-</p>
-<a name="-A"></a> <!-- http://nco.sf.net/nco.html#-A -->
-<a name="-O"></a> <!-- http://nco.sf.net/nco.html#-O --><a name="index-_002dA"></a>
-<a name="index-_002dO"></a>
-<a name="index-_002d_002dapn"></a>
-<a name="index-_002d_002dappend"></a>
-<a name="index-_002d_002dovr"></a>
-<a name="index-_002d_002doverwrite"></a>
-<a name="index-overwriting-files"></a>
-<a name="index-appending-to-files"></a>
-<p>Other safeguards exist to protect the user from inadvertently
-overwriting data.
-If the <var>output-file</var> specified for a command is a pre-existing file,
-then the operator will prompt the user whether to overwrite (erase) the
-existing <var>output-file</var>, attempt to append to it, or abort the
-operation. 
-However, in processing large amounts of data, too many interactive
-questions slows productivity.
-Therefore <acronym>NCO</acronym> also implements two ways to override its own
-safety features, the ‘<samp>-O</samp>’ and ‘<samp>-A</samp>’ switches.
-Specifying ‘<samp>-O</samp>’ tells the operator to overwrite any existing
-<var>output-file</var> without prompting the user interactively.
-Specifying ‘<samp>-A</samp>’ tells the operator to attempt to append to any
-existing <var>output-file</var> without prompting the user interactively.
-These switches are useful in batch environments because they suppress
-interactive keyboard input.
-</p>
-<a name="apn"></a> <!-- http://nco.sf.net/nco.html#apn --><hr size="6">
-<a name="Appending-Variables"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Temporary-Output-Files" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Simple-Arithmetic-and-Interpolation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Appending-Variables-1"></a>
-<h2 class="section">2.4 Appending Variables</h2>
-<p>Adding variables from one file to another is often desirable.
-<a name="index-concatenation"></a>
-<a name="index-appending-variables"></a>
-<a name="index-merging-files"></a>
-<a name="index-pasting-variables"></a>
-This is referred to as <em>appending</em>, although some prefer the
-terminology <em>merging</em> <a name="DOCF9" href="#FOOT9">(9)</a> or <em>pasting</em>. 
-Appending is often confused with what <acronym>NCO</acronym> calls
-<em>concatenation</em>. 
-<a name="index-record-dimension"></a>
-In <acronym>NCO</acronym>, concatenation refers to splicing a variable
-along the record dimension.  
-The length along the record dimension of the output is the sum of the
-lengths of the input files. 
-Appending, on the other hand, refers to copying a variable from one file
-to another file which may or may not already contain the variable 
-<a name="DOCF10" href="#FOOT10">(10)</a>. 
-<acronym>NCO</acronym> can append or concatenate just one variable, or all the
-variables in a file at the same time.
-</p>
-<p>In this sense, <code>ncks</code> can append variables from one file to
-another file. 
-This capability is invoked by naming two files on the command line,
-<var>input-file</var> and <var>output-file</var>. 
-When <var>output-file</var> already exists, the user is prompted whether to
-<em>overwrite</em>, <em>append/replace</em>, or <em>exit</em> from the command.
-Selecting <em>overwrite</em> tells the operator to erase the existing
-<var>output-file</var> and replace it with the results of the operation.
-Selecting <em>exit</em> causes the operator to exit—the <var>output-file</var>
-will not be touched in this case.
-Selecting <em>append/replace</em> causes the operator to attempt to place
-the results of the operation in the existing <var>output-file</var>, 
-See section <a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a>.
-</p>
-<a name="unn"></a> <!-- http://nco.sf.net/nco.html#unn --><a name="index-union-of-two-files"></a>
-<a name="index-disjoint-files"></a>
-<p>The simplest way to create the union of two files is
-</p><table><tr><td> </td><td><pre class="example">ncks -A fl_1.nc fl_2.nc
-</pre></td></tr></table>
-<p>This puts the contents of ‘<tt>fl_1.nc</tt>’ into ‘<tt>fl_2.nc</tt>’. 
-The ‘<samp>-A</samp>’ is optional. 
-On output, ‘<tt>fl_2.nc</tt>’ is the union of the input files,
-regardless of whether they share dimensions and variables, 
-or are completely disjoint.
-The append fails if the input files have differently named record
-dimensions (since netCDF supports only one), or have dimensions of the
-same name but different sizes.
-</p>
-<a name="bnr"></a> <!-- http://nco.sf.net/nco.html#bnr --><hr size="6">
-<a name="Simple-Arithmetic-and-Interpolation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Appending-Variables" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Averaging-vs_002e-Concatenating" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Simple-Arithmetic-and-Interpolation-1"></a>
-<h2 class="section">2.5 Simple Arithmetic and Interpolation</h2>
-
-<p>Users comfortable with <acronym>NCO</acronym> semantics may find it easier to
-perform some simple mathematical operations in <acronym>NCO</acronym> rather than  
-higher level languages. 
-<code>ncbo</code> (see section <a href="#ncbo-netCDF-Binary-Operator"><code>ncbo</code> netCDF Binary Operator</a>) does file
-addition, subtraction, multiplication, division, and broadcasting. 
-<code>ncflint</code> (see section <a href="#ncflint-netCDF-File-Interpolator"><code>ncflint</code> netCDF File Interpolator</a>) does
-file addition, subtraction, multiplication and interpolation. 
-Sequences of these commands can accomplish simple but powerful
-operations from the command line.
-</p>
-<a name="averagers"></a> <!-- http://nco.sf.net/nco.html#averagers --><hr size="6">
-<a name="Averaging-vs_002e-Concatenating"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Simple-Arithmetic-and-Interpolation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Concatenation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Averagers-vs_002e-Concatenators"></a>
-<h2 class="section">2.6 Averagers vs. Concatenators</h2>
-
-<a name="sym_ncea"></a> <!-- http://nco.sf.net/nco.html#sym_ncea -->
-<a name="sym_ncrcat"></a> <!-- http://nco.sf.net/nco.html#sym_ncrcat --><a name="index-symbolic-links-1"></a>
-<p>The most frequently used operators of <acronym>NCO</acronym> are probably the
-averagers and concatenators.
-Because there are so many permutations of averaging (e.g., across files,
-within a file, over the record dimension, over other dimensions, with or
-without weights and masks) and of concatenating (across files, along the
-record dimension, along other dimensions), there are currently no fewer
-than five operators which tackle these two purposes: <code>ncra</code>,
-<code>ncea</code>, <code>ncwa</code>, <code>ncrcat</code>, and <code>ncecat</code>. 
-These operators do share many capabilities <a name="DOCF11" href="#FOOT11">(11)</a>, but each has its unique specialty.
-Two of these operators, <code>ncrcat</code> and <code>ncecat</code>, are for
-concatenating hyperslabs across files. 
-The other two operators, <code>ncra</code> and <code>ncea</code>, are for
-averaging hyperslabs across files 
-<a name="DOCF12" href="#FOOT12">(12)</a>.  
-First, let’s describe the concatenators, then the averagers. 
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Concatenation">2.6.1 Concatenators <code>ncrcat</code> and <code>ncecat</code></a></td><td>  </td><td align="left" valign="top">               
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Averaging">2.6.2 Averagers <code>ncea</code>, <code>ncra</code>, and <code>ncwa</code></a></td><td>  </td><td align="left" valign="top">                   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Interpolating">2.6.3 Interpolator <code>ncflint</code></a></td><td>  </td><td align="left" valign="top">               
-</td></tr>
-</table>
-
-<a name="cnc"></a> <!-- http://nco.sf.net/nco.html#cnc --><hr size="6">
-<a name="Concatenation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Averaging-vs_002e-Concatenating" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Averaging" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Averaging-vs_002e-Concatenating" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Concatenators-ncrcat-and-ncecat"></a>
-<h3 class="subsection">2.6.1 Concatenators <code>ncrcat</code> and <code>ncecat</code></h3>
-<a name="index-ncecat"></a>
-<a name="index-ncrcat"></a>
-
-<p>Joining independent files together along a record dimension is called
-<em>concatenation</em>.    
-<code>ncrcat</code> is designed for concatenating record variables, while
-<code>ncecat</code> is designed for concatenating fixed length variables.
-Consider five files, ‘<tt>85.nc</tt>’, ‘<tt>86.nc</tt>’, 
-… ‘<tt>89.nc</tt>’ each containing a year’s worth of data.  
-Say you wish to create from them a single file, ‘<tt>8589.nc</tt>’
-containing all the data, i.e., spanning all five years.
-If the annual files make use of the same record variable, then
-<code>ncrcat</code> will do the job nicely with, e.g., 
-<code>ncrcat 8?.nc 8589.nc</code>. 
-The number of records in the input files is arbitrary and can vary from
-file to file. 
-See section <a href="#ncrcat-netCDF-Record-Concatenator"><code>ncrcat</code> netCDF Record Concatenator</a>, for a complete description of
-<code>ncrcat</code>. 
-</p>
-<p>However, suppose the annual files have no record variable, and thus
-their data are all fixed length. 
-<a name="index-ensemble"></a>
-<a name="index-climate-model-2"></a>
-For example, the files may not be conceptually sequential, but rather
-members of the same group, or <em>ensemble</em>. 
-Members of an ensemble may have no reason to contain a record dimension.
-<code>ncecat</code> will create a new record dimension (named <var>record</var>
-by default) with which to glue together the individual files into the
-single ensemble file.
-If <code>ncecat</code> is used on files which contain an existing record
-dimension, that record dimension is converted to a fixed-length
-dimension of the same name and a new record dimension (named
-<code>record</code>) is created.  
-Consider five realizations, ‘<tt>85a.nc</tt>’, ‘<tt>85b.nc</tt>’, 
-… ‘<tt>85e.nc</tt>’ of 1985 predictions from the same climate
-model. 
-Then <code>ncecat 85?.nc 85_ens.nc</code> glues the individual realizations
-together into the single file, ‘<tt>85_ens.nc</tt>’. 
-If an input variable was dimensioned [<code>lat</code>,<code>lon</code>], it will
-have dimensions [<code>record</code>,<code>lat</code>,<code>lon</code>] in the output file.
-A restriction of <code>ncecat</code> is that the hyperslabs of the
-processed variables must be the same from file to file.
-Normally this means all the input files are the same size, and contain 
-data on different realizations of the same variables.
-See section <a href="#ncecat-netCDF-Ensemble-Concatenator"><code>ncecat</code> netCDF Ensemble Concatenator</a>, for a complete description
-of <code>ncecat</code>. 
-</p>
-<a name="index-ncpdq"></a>
-<a name="dmn_cat"></a> <!-- http://nco.sf.net/nco.html#dmn_cat --><p><code>ncpdq</code> makes it possible to concatenate files along any
-dimension, not just the record dimension.
-First, use <code>ncpdq</code> to convert the dimension to be concatenated
-(i.e., extended with data from other files) into the record dimension. 
-Second, use <code>ncrcat</code> to concatenate these files.
-Finally, if desirable, use <code>ncpdq</code> to revert to the original
-dimensionality.
-As a concrete example, say that files ‘<tt>x_01.nc</tt>’, ‘<tt>x_02.nc</tt>’,
-… ‘<tt>x_10.nc</tt>’ contain time-evolving datasets from spatially
-adjacent regions.
-The time and spatial coordinates are <code>time</code> and <code>x</code>, respectively.
-Initially the record dimension is <code>time</code>.
-Our goal is to create a single file that contains joins all the
-spatially adjacent regions into one single time-evolving dataset.
-</p><table><tr><td> </td><td><pre class="example">for idx in 01 02 03 04 05 06 07 08 09 10; do # Bourne Shell
-  ncpdq -a x,time x_${idx}.nc foo_${idx}.nc # Make x record dimension
-done
-ncrcat foo_??.nc out.nc       # Concatenate along x
-ncpdq -a time,x out.nc out.nc # Revert to time as record dimension
-</pre></td></tr></table>
-
-<p>Note that <code>ncrcat</code> will not concatenate fixed-length variables, 
-whereas <code>ncecat</code> concatenates both fixed-length and record
-variables along a new record variable.
-To conserve system memory, use <code>ncrcat</code> where possible.
-</p>
-<a name="avg"></a> <!-- http://nco.sf.net/nco.html#avg --><hr size="6">
-<a name="Averaging"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Concatenation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Interpolating" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Averaging-vs_002e-Concatenating" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Averagers-ncea_002c-ncra_002c-and-ncwa"></a>
-<h3 class="subsection">2.6.2 Averagers <code>ncea</code>, <code>ncra</code>, and <code>ncwa</code></h3>
-<a name="index-ncea"></a>
-<a name="index-ncra"></a>
-<a name="index-ncwa"></a>
-
-<p>The differences between the averagers <code>ncra</code> and <code>ncea</code>
-are analogous to the differences between the concatenators.
-<code>ncra</code> is designed for averaging record variables from at least
-one file, while <code>ncea</code> is designed for averaging fixed length
-variables from multiple files.
-<code>ncra</code> performs a simple arithmetic average over the record
-dimension of all the input files, with each record having an equal
-weight in the average. 
-<code>ncea</code> performs a simple arithmetic average of all the input
-files, with each file having an equal weight in the average. 
-Note that <code>ncra</code> cannot average fixed-length variables,
-but <code>ncea</code> can average both fixed-length and record variables.  
-To conserve system memory, use <code>ncra</code> rather than
-<code>ncea</code> where possible (e.g., if each <var>input-file</var> is one
-record long). 
-The file output from <code>ncea</code> will have the same dimensions
-(meaning dimension names as well as sizes) as the input hyperslabs  
-(see section <a href="#ncea-netCDF-Ensemble-Averager"><code>ncea</code> netCDF Ensemble Averager</a>, for a complete description of 
-<code>ncea</code>).  
-The file output from <code>ncra</code> will have the same dimensions as
-the input hyperslabs except for the record dimension, which will have a   
-size of 1 (see section <a href="#ncra-netCDF-Record-Averager"><code>ncra</code> netCDF Record Averager</a>, for a complete
-description of <code>ncra</code>). 
-</p>
-<a name="ntp"></a> <!-- http://nco.sf.net/nco.html#ntp --><hr size="6">
-<a name="Interpolating"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Averaging" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Large-Numbers-of-Files" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Averaging-vs_002e-Concatenating" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Interpolator-ncflint"></a>
-<h3 class="subsection">2.6.3 Interpolator <code>ncflint</code></h3>
-<a name="index-ncflint"></a>
-
-<p><code>ncflint</code> can interpolate data between or two files.
-Since no other operators have this ability, the description of
-interpolation is given fully on the <code>ncflint</code> reference page
-(see section <a href="#ncflint-netCDF-File-Interpolator"><code>ncflint</code> netCDF File Interpolator</a>). 
-Note that this capability also allows <code>ncflint</code> to linearly
-rescale any data in a netCDF file, e.g., to convert between differing
-units. 
-</p>
-<a name="lrg"></a> <!-- http://nco.sf.net/nco.html#lrg --><hr size="6">
-<a name="Large-Numbers-of-Files"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Interpolating" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Large-Datasets" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Large-Numbers-of-Files-1"></a>
-<h2 class="section">2.7 Large Numbers of Files</h2>
-<a name="index-files_002c-numerous-input"></a>
-<a name="index-_002dn-loop"></a>
-
-<p>Occasionally one desires to digest (i.e., concatenate or average)
-hundreds or thousands of input files.
-<a name="index-automagic-1"></a>
-<a name="index-NASA-EOSDIS"></a>
-Unfortunately, data archives (e.g., <acronym>NASA EOSDIS</acronym>) may not
-name netCDF files in a format understood by the ‘<samp>-n <var>loop</var></samp>’
-switch (see section <a href="#Specifying-Input-Files">Specifying Input Files</a>) that automagically generates
-arbitrary numbers of input filenames. 
-The ‘<samp>-n <var>loop</var></samp>’ switch has the virtue of being concise,
-and of minimizing the command line.
-This helps keeps output file small since the command line is stored
-as metadata in the <code>history</code> attribute 
-(see section <a href="#History-Attribute">History Attribute</a>). 
-However, the ‘<samp>-n <var>loop</var></samp>’ switch is useless when there is no
-simple, arithmetic pattern to the input filenames (e.g.,
-‘<tt>h00001.nc</tt>’, ‘<tt>h00002.nc</tt>’, … ‘<tt>h90210.nc</tt>’).
-Moreover, filename globbing does not work when the input files are too
-numerous or their names are too lengthy (when strung together as a
-single argument) to be passed by the calling shell to the <acronym>NCO</acronym>
-operator
-<a name="DOCF13" href="#FOOT13">(13)</a>.
-When this occurs, the <acronym>ANSI</acronym> C-standard <code>argc</code>-<code>argv</code> 
-method of passing arguments from the calling shell to a C-program (i.e.,
-an <acronym>NCO</acronym> operator) breaks down. 
-There are (at least) three alternative methods of specifying the input 
-filenames to <acronym>NCO</acronym> in environment-limited situations.
-</p>
-<a name="stdin"></a> <!-- http://nco.sf.net/nco.html#stdin --><a name="index-standard-input"></a>
-<a name="index-stdin"></a>
-<p>The recommended method for sending very large numbers (hundreds or
-more, typically) of input filenames to the multi-file operators is
-to pass the filenames with the <acronym>UNIX</acronym> <em>standard input</em>
-feature, aka <code>stdin</code>: 
-</p><table><tr><td> </td><td><pre class="example"># Pipe large numbers of filenames to stdin
-/bin/ls | grep ${CASEID}_'......'.nc | ncecat -o foo.nc
-</pre></td></tr></table>
-<p>This method avoids all constraints on command line size imposed by
-the operating system. 
-A drawback to this method is that the <code>history</code> attribute
-(see section <a href="#History-Attribute">History Attribute</a>) does not record the name of any input 
-files since the names were not passed on the command line.
-This makes determining the data provenance at a later date difficult.
-<a name="index-nco_005finput_005ffile_005fnumber"></a>
-<a name="index-nco_005finput_005ffile_005flist"></a>
-<a name="index-global-attributes"></a>
-<a name="index-attributes_002c-global"></a>
-To remedy this situation, multi-file operators store the number of
-input files in the <code>nco_input_file_number</code> global attribute and the
-input file list itself in the <code>nco_input_file_list</code> global attribute
-(see section <a href="#File-List-Attributes">File List Attributes</a>).
-Although this does not preserve the exact command used to generate the
-file, it does retains all the information required to reconstruct the
-command and determine the data provenance.
-</p>
-<a name="index-globbing"></a>
-<a name="index-shell"></a>
-<a name="index-extended-regular-expressions"></a>
-<a name="index-regular-expressions"></a>
-<a name="index-pattern-matching"></a>
-<a name="index-xargs"></a>
-<a name="index-UNIX-2"></a>
-<p>A second option is to use the <acronym>UNIX</acronym> <code>xargs</code> command.
-This simple example selects as input to <code>xargs</code> all the
-filenames in the current directory that match a given pattern.
-For illustration, consider a user trying to average millions of 
-files which each have a six character filename. 
-If the shell buffer can not hold the results of the corresponding
-globbing operator, ‘<tt>??????.nc</tt>’, then the filename globbing
-technique will fail. 
-Instead we express the filename pattern as an extended regular 
-expression, ‘<tt>......\.nc</tt>’ (see section <a href="#Subsetting-Variables">Subsetting Variables</a>).
-We use <code>grep</code> to filter the directory listing for this pattern
-and to pipe the results to <code>xargs</code> which, in turn, passes the
-matching filenames to an <acronym>NCO</acronym> multi-file operator, e.g.,
-<code>ncecat</code>.
-</p><table><tr><td> </td><td><pre class="example"># Use xargs to transfer filenames on the command line
-/bin/ls | grep ${CASEID}_'......'.nc | xargs -x ncecat -o foo.nc
-</pre></td></tr></table>
-<a name="index-pipes"></a>
-<p>The single quotes protect the only sensitive parts of the extended
-regular expression (the <code>grep</code> argument), and allow shell
-interpolation (the <code>${CASEID}</code> variable substitution) to
-proceed unhindered on the rest of the command.
-<code>xargs</code> uses the <acronym>UNIX</acronym> pipe feature to append the
-suitably filtered input file list to the end of the <code>ncecat</code>
-command options.  
-<a name="index-output-file"></a>
-<a name="index-input-files"></a>
-<a name="index-_002do-fl_005fout"></a>
-The <code>-o foo.nc</code> switch ensures that the input files supplied by
-<code>xargs</code> are not confused with the output file name. 
-<code>xargs</code> does, unfortunately, have its own limit (usually about 
-20,000 characters) on the size of command lines it can pass.
-Give <code>xargs</code> the ‘<samp>-x</samp>’ switch to ensure it dies if it
-reaches this internal limit.
-When this occurs, use either the <code>stdin</code> method above, or the
-symbolic link presented next.
-</p>
-<a name="index-symbolic-links-2"></a>
-<p>Even when its internal limits have not been reached, the
-<code>xargs</code> technique may not be sophisticated enough to handle 
-all situations. 
-A full scripting language like Perl can handle any level of complexity
-of filtering input filenames, and any number of filenames.
-The technique of last resort is to write a script that creates symbolic 
-links between the irregular input filenames and a set of regular,
-arithmetic filenames that the ‘<samp>-n <var>loop</var></samp>’ switch understands. 
-<a name="index-Perl-1"></a>
-For example, the following Perl script a monotonically enumerated
-symbolic link to up to one million ‘<tt>.nc</tt>’ files in a directory.
-If there are 999,999 netCDF files present, the links are named
-‘<tt>000001.nc</tt>’ to ‘<tt>999999.nc</tt>’: 
-<a name="index-_002dn-loop-1"></a>
-</p><table><tr><td> </td><td><pre class="example"># Create enumerated symbolic links
-/bin/ls | grep \.nc | perl -e \
-'$idx=1;while(<STDIN>){chop;symlink $_,sprintf("%06d.nc",$idx++);}'
-ncecat -n 999999,6,1 000001.nc foo.nc
-# Remove symbolic links when finished
-/bin/rm ??????.nc
-</pre></td></tr></table>
-<p>The ‘<samp>-n <var>loop</var></samp>’ option tells the <acronym>NCO</acronym> operator to
-automatically generate the filnames of the symbolic links.
-This circumvents any <acronym>OS</acronym> and shell limits on command line size.
-The symbolic links are easily removed once <acronym>NCO</acronym> is finished.
-<a name="index-history"></a>
-One drawback to this method is that the <code>history</code> attribute
-(see section <a href="#History-Attribute">History Attribute</a>) retains the filename list of the symbolic
-links, rather than the data files themselves. 
-This makes it difficult to determine the data provenance at a later date.
-</p>
-<hr size="6">
-<a name="Large-Datasets"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Large-Numbers-of-Files" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Memory-Requirements" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Large-Datasets-1"></a>
-<h2 class="section">2.8 Large Datasets</h2>
-<a name="index-large-datasets"></a>
-<a name="index-LFS"></a>
-<a name="index-Large-File-Support"></a>
-
-<p><em>Large datasets</em> are those files that are comparable in size to the
-amount of random access memory (<acronym>RAM</acronym>) in your computer.
-Many users of <acronym>NCO</acronym> work with files larger than 100 MB.
-Files this large not only push the current edge of storage technology, 
-they present special problems for programs which attempt to access the  
-entire file at once, such as <code>ncea</code> and <code>ncecat</code>.
-<a name="index-swap-space"></a>
-If you work with a 300 MB files on a machine with only 32 MB of
-memory then you will need large amounts of swap space (virtual memory on
-disk) and <acronym>NCO</acronym> will work slowly, or even fail. 
-There is no easy solution for this.
-The best strategy is to work on a machine with sufficient amounts of
-memory and swap space. 
-Since about 2004, many users have begun to produce or analyze files
-exceeding 2 GB in size. 
-These users should familiarize themselves with <acronym>NCO</acronym>’s Large
-File Support (<acronym>LFS</acronym>) capabilities (see section <a href="#Large-File-Support">Large File Support</a>).
-The next section will increase your familiarity with <acronym>NCO</acronym>’s
-memory requirements.
-With this knowledge you may re-design your data reduction approach to
-divide the problem into pieces solvable in memory-limited situations.   
-</p>
-<a name="index-server"></a>
-<a name="index-UNICOS"></a>
-<a name="index-Cray-1"></a>
-<p>If your local machine has problems working with large files, try running
-<acronym>NCO</acronym> from a more powerful machine, such as a network server.  
-Certain machine architectures, e.g., Cray <acronym>UNICOS</acronym>, have special 
-commands which allow one to increase the amount of interactive memory.
-<a name="index-ilimit"></a>
-On Cray systems, try to increase the available memory with the
-<code>ilimit</code> command.    
-<a name="index-GNU_002fLinux"></a>
-<a name="index-ulimit"></a>
-<a name="index-core-dump-1"></a>
-If you get a memory-related core dump 
-(e.g., ‘<samp>Error exit (core dumped)</samp>’) on a <acronym>GNU</acronym>/Linux system,
-try increasing the process-available memory with <code>ulimit</code>.
-</p>
-<a name="index-speed-2"></a>
-<p>The speed of the <acronym>NCO</acronym> operators also depends on file size.
-When processing large files the operators may appear to hang, or do
-nothing, for large periods of time.
-In order to see what the operator is actually doing, it is useful to
-activate a more verbose output mode.
-This is accomplished by supplying a number greater than 0 to the
-‘<samp>-D <var>debug-level</var></samp>’ (or ‘<samp>--debug-level</samp>’, or
-‘<samp>--dbg_lvl</samp>’) switch.
-<a name="index-_002dD-debug_002dlevel-1"></a>
-<a name="index-_002d_002ddebug_002dlevel-debug_002dlevel-1"></a>
-<a name="index-_002d_002ddbg_005flvl-debug_002dlevel-1"></a>
-<a name="index-debug_002dlevel-1"></a>
-<a name="index-dbg_005flvl-1"></a>
-<a name="index-debugging-1"></a>
-When the <var>debug-level</var> is nonzero, the operators report their
-current status to the terminal through the <var>stderr</var> facility.
-Using ‘<samp>-D</samp>’ does not slow the operators down. 
-Choose a <var>debug-level</var> between 1 and 3 for most situations,
-e.g., <code>ncea -D 2 85.nc 86.nc 8586.nc</code>.
-A full description of how to estimate the actual amount of memory the
-multi-file <acronym>NCO</acronym> operators consume is given in 
-<a href="#Memory-Requirements">Memory Requirements</a>. 
-</p>
-<a name="mmr"></a> <!-- http://nco.sf.net/nco.html#mmr --><hr size="6">
-<a name="Memory-Requirements"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Large-Datasets" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Single-and-Multi_002dfile-Operators" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Memory-Requirements-1"></a>
-<h2 class="section">2.9 Memory Requirements</h2>
-<a name="index-memory-requirements"></a>
-<a name="index-memory-available"></a>
-<a name="index-RAM"></a>
-<a name="index-swap-space-1"></a>
-<a name="index-peak-memory-usage"></a>
-
-<p>Many people use <acronym>NCO</acronym> on gargantuan files which dwarf the
-memory available (free <acronym>RAM</acronym> plus swap space) even on today’s powerful
-machines. 
-These users want <acronym>NCO</acronym> to consume the least memory possible
-so that their scripts do not have to tediously cut files into smaller
-pieces that fit into memory. 
-We commend these greedy users for pushing <acronym>NCO</acronym> to its limits!
-</p>
-<a name="index-threads"></a>
-<a name="index-OpenMP"></a>
-<a name="index-shared-memory-machines"></a>
-<p>This section describes the memory <acronym>NCO</acronym> requires during
-operation.
-The required memory is based on the underlying algorithms.
-The description below is the memory usage per thread.
-Users with shared memory machines may use the threaded <acronym>NCO</acronym>
-operators (see section <a href="#OpenMP-Threading">OpenMP Threading</a>).
-The peak and sustained memory usage will scale accordingly,
-i.e., by the number of threads.
-Memory consumption patterns of all operators are similar, with
-the exception of <code>ncap2</code>.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Single-and-Multi_002dfile-Operators">2.9.1 Single and Multi-file Operators</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></td><td>  </td><td align="left" valign="top">            
-</td></tr>
-</table>
-
-<hr size="6">
-<a name="Single-and-Multi_002dfile-Operators"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Memory-Requirements" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Memory-for-ncap2" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Memory-Requirements" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Single-and-Multi_002dfile-Operators-1"></a>
-<h3 class="subsection">2.9.1 Single and Multi-file Operators</h3>
-
-<a name="index-multi_002dfile-operators"></a>
-<p>The multi-file operators currently comprise the record operators,
-<code>ncra</code> and <code>ncrcat</code>, and the ensemble operators,
-<code>ncea</code> and <code>ncecat</code>. 
-The record operators require <em>much less</em> memory than the ensemble 
-operators. 
-This is because the record operators operate on one single record (i.e.,
-time-slice) at a time, wherease the ensemble operators retrieve the
-entire variable into memory. 
-Let <em>MS</em> be the peak sustained memory demand of an operator,
-<em>FT</em> be the memory required to store the entire contents of all the 
-variables to be processed in an input file,
-<em>FR</em> be the memory required to store the entire contents of a
-single record of each of the variables to be processed in an input file, 
-<em>VR</em> be the memory required to store a single record of the
-largest record variable to be processed in an input file, 
-<em>VT</em> be the memory required to store the largest variable 
-to be processed in an input file,
-<em>VI</em> be the memory required to store the largest variable 
-which is not processed, but is copied from the initial file to the
-output file. 
-All operators require <em>MI = VI</em> during the initial copying of
-variables from the first input file to the output file. 
-This is the <em>initial</em> (and transient) memory demand.
-The <em>sustained</em> memory demand is that memory required by the
-operators during the processing (i.e., averaging, concatenation)
-phase which lasts until all the input files have been processed.
-The operators have the following memory requirements: 
-<code>ncrcat</code> requires <em>MS <= VR</em>. 
-<code>ncecat</code> requires <em>MS <= VT</em>. 
-<code>ncra</code> requires <em>MS = 2FR + VR</em>. 
-<code>ncea</code> requires <em>MS = 2FT + VT</em>. 
-<code>ncbo</code> requires <em>MS <= 3VT</em> 
-(both input variables and the output variable).
-<code>ncflint</code> requires <em>MS <= 3VT</em>
-(both input variables and the output variable).
-<code>ncpdq</code> requires <em>MS <= 2VT</em>
-(one input variable and the output variable).
-<code>ncwa</code> requires <em>MS <= 8VT</em> (see below).
-Note that only variables that are processed, e.g., averaged,
-concatenated, or differenced, contribute to <em>MS</em>. 
-Variables which do not appear in the output file 
-(see section <a href="#Subsetting-Variables">Subsetting Variables</a>) are never read and contribute nothing
-to the memory requirements. 
-</p>
-<a name="mmr_ncwa"></a> <!-- http://nco.sf.net/nco.html#mmr_ncwa --><p><code>ncwa</code> consumes between two and seven times the memory of a
-variable in order to process it. 
-Peak consumption occurs when storing simultaneously in memory 
-one input variable, one tally array,
-one input weight, one conformed/working weight, one weight tally, 
-one input mask, one conformed/working mask, and
-one output variable. 
-When invoked, the weighting and masking features contribute up to
-three-sevenths and two-sevenths of these requirements apiece.
-If weights and masks are <em>not</em> specified 
-(i.e., no ‘<samp>-w</samp>’ or ‘<samp>-a</samp>’ options)
-then <code>ncwa</code> requirements drop to <em>MS <= 3VT</em>
-(one input variable, one tally array, and the output variable). 
-</p>
-<a name="index-OpenMP-1"></a>
-<a name="index-threads-1"></a>
-<p>The above memory requirements must be multiplied by the number of
-threads <var>thr_nbr</var> (see section <a href="#OpenMP-Threading">OpenMP Threading</a>).
-<a name="index-_002dt-thr_005fnbr"></a>
-If this causes problems then reduce (with ‘<samp>-t <var>thr_nbr</var></samp>’) the
-number of threads.
-</p>
-<hr size="6">
-<a name="Memory-for-ncap2"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Single-and-Multi_002dfile-Operators" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Performance" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Memory-Requirements" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Memory-for-ncap2-1"></a>
-<h3 class="subsection">2.9.2 Memory for <code>ncap2</code></h3>
-<a name="index-ncap2-1"></a>
-<a name="index-binary-operations"></a>
-<a name="index-unary-operations"></a>
-<a name="index-memory-leaks"></a>
-<a name="index-left-hand-casting"></a>
-<p><code>ncap2</code> has unique memory requirements due its ability to process
-arbitrarily long scripts of any complexity.
-All scripts acceptable to <code>ncap2</code> are ultimately processed as a
-sequence of binary or unary operations.
-<code>ncap2</code> requires <em>MS <= 2VT</em> under most conditions.
-An exception to this is when left hand casting (see section <a href="#Left-hand-casting">Left hand casting</a>) is used to stretch the size of derived variables beyond the
-size of any input variables.
-Let <em>VC</em> be the memory required to store the largest variable
-defined by left hand casting.
-In this case, <em>MS <= 2VC</em>.
-</p>
-<a name="index-malloc_0028_0029"></a>
-<p><code>ncap2</code> scripts are complete dynamic and may be of arbitrary
-length. 
-A script that contains many thousands of operations, may uncover a
-slow memory leak even though each single operation consumes little
-additional memory. 
-Memory leaks are usually identifiable by their memory usage signature.
-Leaks cause peak memory usage to increase monotonically with time
-regardless of script complexity. 
-Slow leaks are very difficult to find.
-Sometimes a <code>malloc()</code> (or <code>new[]</code>) failure is the
-only noticeable clue to their existance.
-If you have good reasons to believe that a memory allocation failure  
-is ultimately due to an <acronym>NCO</acronym> memory leak (rather than
-inadequate <acronym>RAM</acronym> on your system), then we would be very
-interested in receiving a detailed bug report. 
-</p>
-<hr size="6">
-<a name="Performance"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Memory-for-ncap2" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Performance-1"></a>
-<h2 class="section">2.10 Performance</h2>
-
-<a name="index-papers"></a>
-<a name="index-overview"></a>
-<p>An overview of <acronym>NCO</acronym> capabilities as of about 2006 is in
-Zender, C. S. (2008), 
-“Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO)”,
-Environ. Modell. Softw., doi:10.1016/j.envsoft.2008.03.004.
-This paper is also available at
-<a href="http://dust.ess.uci.edu/ppr/ppr_Zen08_ems.pdf">http://dust.ess.uci.edu/ppr/ppr_Zen08_ems.pdf</a>.
-</p>
-<a name="index-scaling"></a>
-<a name="index-performance-2"></a>
-<p><acronym>NCO</acronym> performance and scaling for arithmetic operations is
-described in 
-Zender, C. S., and H. J. Mangalam (2007), 
-“Scaling Properties of Common Statistical Operators for Gridded Datasets”, 
-Int. J. High Perform. Comput. Appl., 21(4), 485-498,
-doi:10.1177/1094342007083802. 
-This paper is also available at
-<a href="http://dust.ess.uci.edu/ppr/ppr_ZeM07_ijhpca.pdf">http://dust.ess.uci.edu/ppr/ppr_ZeM07_ijhpca.pdf</a>.
-</p>
-<p>It is helpful to be aware of the aspects of <acronym>NCO</acronym> design 
-that can limit its performance:
-</p><ol>
-<li> 
-<a name="index-buffering"></a>
-No data buffering is performed during <code>nc_get_var</code> and
-<code>nc_put_var</code> operations.  
-<a name="index-performance-3"></a>
-<a name="index-operator-speed-2"></a>
-<a name="index-speed-3"></a>
-<a name="index-execution-time-2"></a>
-Hyperslabs too large too hold in core memory will suffer substantial
-performance penalties because of this. 
-
-</li><li> 
-<a name="index-monotonic-coordinates"></a>
-Since coordinate variables are assumed to be monotonic, the search for 
-bracketing the user-specified limits should employ a quicker algorithm,
-like bisection, than the two-sided incremental search currently
-implemented.  
-
-</li><li> 
-<a name="index-C_005fformat"></a>
-<a name="index-FORTRAN_005fformat"></a>
-<a name="index-signedness"></a>
-<a name="index-scale_005fformat"></a>
-<a name="index-add_005foffset"></a>
-<var>C_format</var>, <var>FORTRAN_format</var>, <var>signedness</var>,
-<var>scale_format</var> and <var>add_offset</var> attributes are ignored by
-<code>ncks</code> when printing variables to screen. 
-
-</li><li>
-<a name="index-Yorick-1"></a>
-In the late 1990s it was discovered that some random access operations
-on large files on certain architectures (e.g., <acronym>UNICOS</acronym>) were
-much slower with <acronym>NCO</acronym> than with similar operations performed
-using languages that bypass the netCDF interface (e.g., Yorick).    
-This may have been a penalty of unnecessary byte-swapping in the netCDF 
-interface.  
-It is unclear whether such problems exist in present day (2007)
-netCDF/<acronym>NCO</acronym> environments, where unnecessary byte-swapping has
-been reduced or eliminated.
-</li></ol>
-
-<a name="ftr"></a> <!-- http://nco.sf.net/nco.html#ftr --><hr size="6">
-<a name="Common-features"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Performance" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Internationalization" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Strategies" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="NCO-Features"></a>
-<h1 class="chapter">3. NCO Features</h1>
-
-<p>Many features have been implemented in more than one operator and are
-described here for brevity. 
-The description of each feature is preceded by a box listing the
-operators for which the feature is implemented. 
-<a name="index-command-line-switches-1"></a>
-Command line switches for a given feature are consistent across all
-operators wherever possible. 
-If no “key switches” are listed for a feature, then that particular
-feature is automatic and cannot be controlled by the user. 
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Internationalization">3.1 Internationalization</a></td><td>  </td><td align="left" valign="top">        
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td><td>  </td><td align="left" valign="top">       
-</td></tr>
-<tr><td align="left" valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td><td>  </td><td align="left" valign="top">            
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td><td>  </td><td align="left" valign="top">        
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td><td>  </td><td align="left" valign="top">      
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td><td>  </td><td align="left" valign="top">     
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td><td>  </td><td align="left" valign="top">   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Large-File-Support">3.10 Large File Support</a></td><td>  </td><td align="left" valign="top">          
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td><td>  </td><td align="left" valign="top">        
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Stride">3.15 Stride</a></td><td>  </td><td align="left" valign="top">                      
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Multislabs">3.16 Multislabs</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></td><td>  </td><td align="left" valign="top">         
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td><td>  </td><td align="left" valign="top">       
-</td></tr>
-<tr><td align="left" valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Rebasing-Time-Coordinate">3.20 Rebasing Time Coordinate</a></td><td>  </td><td align="left" valign="top">    
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Missing-Values">3.21 Missing values</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Chunking">3.22 Chunking</a></td><td>  </td><td align="left" valign="top">                    
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Deflation">3.23 Deflation</a></td><td>  </td><td align="left" valign="top">                   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Packed-data">3.24 Packed data</a></td><td>  </td><td align="left" valign="top">                 
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Type-Conversion">3.26 Type Conversion</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td><td>  </td><td align="left" valign="top">           
-</td></tr>
-<tr><td align="left" valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td><td>  </td><td align="left" valign="top">        
-</td></tr>
-<tr><td align="left" valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td><td>  </td><td align="left" valign="top">            
-</td></tr>
-</table>
-
-<a name="i18n"></a> <!-- http://nco.sf.net/nco.html#i18n --><hr size="6">
-<a name="Internationalization"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Common-features" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Metadata-Optimization" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Internationalization-1"></a>
-<h2 class="section">3.1 Internationalization</h2>
-<a name="index-Internationalization"></a>
-<a name="index-I18N"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-</p></td></tr></table>
-<a name="index-L10N"></a>
-<p><acronym>NCO</acronym> support for <em>internationalization</em> of textual input
-and output (e.g., Warning messages) is nascent.
-We hope to produce foreign language string catalogues in 2004.
-</p>
-<a name="hdr"></a> <!-- http://nco.sf.net/nco.html#hdr --><hr size="6">
-<a name="Metadata-Optimization"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Internationalization" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#OpenMP-Threading" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Metadata-Optimization-1"></a>
-<h2 class="section">3.2 Metadata Optimization</h2>
-<a name="index-metadata-optimization"></a>
-<a name="index-performance-4"></a>
-<a name="index-operator-speed-3"></a>
-<a name="index-speed-4"></a>
-<a name="index-execution-time-3"></a>
-<a name="index-nc_005f_005fenddef_0028_0029"></a>
-<a name="index-_002d_002dhdr_005fpad-hdr_005fpad"></a>
-<a name="index-_002d_002dheader_005fpad-hdr_005fpad"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncatted</code>, <code>ncks</code>, <code>ncrename</code><br>
-Short options: None<br>
-Long options: ‘<samp>--hdr_pad</samp>’, ‘<samp>--header_pad</samp>’<br> 
-</p></td></tr></table>
-<p><acronym>NCO</acronym> supports padding headers to improve the speed of future
-metadata operations.
-Use the ‘<samp>--hdr_pad</samp>’ and ‘<samp>--header_pad</samp>’ switches to request
-that <var>hdr_pad</var> bytes be inserted into the metadata section of the
-output file.
-Future metadata expansions will not incur the performance penalty of
-copying the entire output file unless the expansion exceeds the amount 
-of header padding exceeded.
-This can be beneficial when it is known that some metadata will be added
-at a future date.
-</p>
-<p>This optimization exploits the netCDF library <code>nc__enddef()</code>
-function, which behaves differently with different versions of netCDF.
-It will improve speed of future metadata expansion with <code>CLASSIC</code>
-and <code>64bit</code> netCDF files, but not necessarily with <code>NETCDF4</code> 
-files, i.e., those created by the netCDF interface to the <acronym>HDF5</acronym>
-library (see section <a href="#Selecting-Output-File-Format">Selecting Output File Format</a>).
-</p>
-<a name="omp"></a> <!-- http://nco.sf.net/nco.html#omp -->
-<a name="openmp"></a> <!-- http://nco.sf.net/nco.html#openmp --><hr size="6">
-<a name="OpenMP-Threading"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Metadata-Optimization" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Command-Line-Options" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="OpenMP-Threading-1"></a>
-<h2 class="section">3.3 OpenMP Threading</h2>
-<a name="index-OpenMP-2"></a>
-<a name="index-threads-2"></a>
-<a name="index-SMP"></a>
-<a name="index-shared-memory-parallelism"></a>
-<a name="index-parallelism"></a>
-<a name="index-nco_005fopenmp_005fthread_005fnumber"></a>
-<a name="index-_002d_002dthr_005fnbr-thr_005fnbr"></a>
-<a name="index-_002d_002dthreads-thr_005fnbr"></a>
-<a name="index-_002d_002domp_005fnum_005fthreads-thr_005fnbr"></a>
-<a name="index-_002dt-thr_005fnbr-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncpdq</code>, <code>ncra</code>, <code>ncrcat</code>,
-<code>ncwa</code><br>
-Short options: ‘<samp>-t</samp>’<br>
-Long options: ‘<samp>--thr_nbr</samp>’, ‘<samp>--threads</samp>’,
-‘<samp>--omp_num_threads</samp>’<br> 
-</p></td></tr></table>
-<p><acronym>NCO</acronym> supports shared memory parallelism (<acronym>SMP</acronym>) when
-compiled with an OpenMP-enabled compiler.
-Threads requests and allocations occur in two stages.
-First, users may request a specific number of threads <var>thr_nbr</var> with
-the ‘<samp>-t</samp>’ switch (or its long option equivalents, ‘<samp>--thr_nbr</samp>’,
-‘<samp>--threads</samp>’, and ‘<samp>--omp_num_threads</samp>’).
-If not user-specified, OpenMP obtains <var>thr_nbr</var> from the
-<code>OMP_NUM_THREADS</code> environment variable, if present, or from the
-<acronym>OS</acronym>, if not.
-</p>
-<a name="index-thr_005fnbr"></a>
-<a name="index-OMP_005fNUM_005fTHREADS"></a>
-<a name="index-ncrcat-1"></a>
-<a name="index-ncwa-1"></a>
-<a name="index-ncap"></a>
-<a name="index-ncpdq-1"></a>
-<a name="index-large-datasets-1"></a>
-<p><acronym>NCO</acronym> may modify <var>thr_nbr</var> according to its own internal
-settings before it requests any threads from the system.
-Certain operators contain hard-code limits to the number of threads they
-request.
-We base these limits on our experience and common sense, and to reduce
-potentially wasteful system usage by inexperienced users.
-For example, <code>ncrcat</code> is extremely I/O-intensive so we restrict
-<em><var>thr_nbr</var> <= 2</em> for <code>ncrcat</code>.
-This is based on the notion that the best performance that can be
-expected from an operator which does no arithmetic is to have one thread
-reading and one thread writing simultaneously.
-In the future (perhaps with netCDF4), we hope to
-demonstrate significant threading improvements with operators
-like <code>ncrcat</code> by performing multiple simultaneous writes.
-</p>
-<p>Compute-intensive operators (<code>ncap</code>, <code>ncwa</code> and <code>ncpdq</code>) 
-benefit most from threading.
-The greatest increases in throughput due to threading occur on
-large datasets where each thread performs millions, at least,
-of floating point operations.
-Otherwise, the system overhead of setting up threads probably outweighs 
-the speed enhancements due to <acronym>SMP</acronym> parallelism.
-However, we have not yet demonstrated that the <acronym>SMP</acronym> parallelism 
-scales well beyond four threads for these operators.
-Hence we restrict <em><var>thr_nbr</var> <= 4</em> for all operators.
-We encourage users to play with these limits (edit file
-‘<tt>nco_omp.c</tt>’) and send us their feedback.
-</p>
-<a name="index-debugging-2"></a>
-<a name="index-dbg_005flvl-2"></a>
-<p>Once the initial <var>thr_nbr</var> has been modified for any
-operator-specific limits, <acronym>NCO</acronym> requests the system to allocate 
-a team of <var>thr_nbr</var> threads for the body of the code.
-The operating system then decides how many threads to allocate
-based on this request.
-Users may keep track of this information by running the operator with
-<em><var>dbg_lvl</var> > 0</em>.
-</p>
-<p>By default, threaded operators attach one global attribute,
-<code>nco_openmp_thread_number</code>, to any file they create or modify. 
-This attribute contains the number of threads the operator used to
-process the input files. 
-This information helps to verify that the answers with threaded and
-non-threaded operators are equal to within machine precision.
-<a name="index-benchmarks"></a>
-This information is also useful for benchmarking.
-</p>
-<a name="cmd_ln"></a> <!-- http://nco.sf.net/nco.html#cmd_ln --><hr size="6">
-<a name="Command-Line-Options"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#OpenMP-Threading" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Specifying-Input-Files" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Command-Line-Options-1"></a>
-<h2 class="section">3.4 Command Line Options</h2>
-<a name="index-command-line-options"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-</p></td></tr></table>
-<a name="index-POSIX"></a>
-<a name="index-UNIX-3"></a>
-<a name="index-GNU"></a>
-<a name="index-switches"></a>
-<p><acronym>NCO</acronym> achieves flexibility by using <em>command line options</em>.
-These options are implemented in all traditional <acronym>UNIX</acronym> commands 
-as single letter <em>switches</em>, e.g., ‘<samp>ls -l</samp>’.
-For many years <acronym>NCO</acronym> used only single letter option names.
-In late 2002, we implemented <acronym>GNU</acronym>/<acronym>POSIX</acronym> extended
-or long option names for all options.
-This was done in a backward compatible way such that the full
-functionality of <acronym>NCO</acronym> is still available through the familiar 
-single letter options.
-In the future, however, some features of <acronym>NCO</acronym> may require the
-use of long options, simply because we have nearly run out of single
-letter options.
-More importantly, mnemonics for single letter options are often
-non-intuitive so that long options provide a more natural way of
-expressing intent.
-</p>
-<a name="index-long-options"></a>
-<p>Extended options, also called long options, are implemented using the
-system-supplied ‘<tt>getopt.h</tt>’ header file, if possible. 
-<a name="index-BSD"></a>
-<a name="index-getopt"></a>
-<a name="index-getopt_005flong"></a>
-<a name="index-getopt_002eh"></a>
-This provides the <code>getopt_long</code> function to <acronym>NCO</acronym>
-<a name="DOCF14" href="#FOOT14">(14)</a>. 
-</p>
-<a name="index-_002dD-debug_002dlevel-2"></a>
-<a name="index-_002d_002ddbg_005flvl-debug_002dlevel-2"></a>
-<p>The syntax of <em>short options</em> (single letter options) is
-<kbd>-<var>key</var> <var>value</var></kbd> (dash-key-space-value).
-Here, <var>key</var> is the single letter option name, e.g., 
-‘<samp>-D 2</samp>’.
-</p>
-<p>The syntax of <em>long options</em> (multi-letter options) is 
-<kbd>--<var>long_name</var> <var>value</var></kbd>
-(dash-dash-key-space-value), e.g., ‘<samp>--dbg_lvl 2</samp>’ or
-<kbd>--<var>long_name</var>=<var>value</var></kbd>
-(dash-dash-key-equal-value), e.g., ‘<samp>--dbg_lvl=2</samp>’.
-Thus the following are all valid for the ‘<samp>-D</samp>’ (short version)
-or ‘<samp>--dbg_lvl</samp>’ (long version) command line option.
-</p><table><tr><td> </td><td><pre class="example">ncks -D 3 in.nc        # Short option
-ncks --dbg_lvl=3 in.nc # Long option, preferred form
-ncks --dbg_lvl 3 in.nc # Long option, alternate form
-</pre></td></tr></table>
-<p>The last example is preferred for two reasons.
-First, ‘<samp>--dbg_lvl</samp>’ is more specific and less ambiguous than
-‘<samp>-D</samp>’.
-The long option form makes scripts more self documenting and less error
-prone.  
-Often long options are named after the source code variable whose value 
-they carry.
-Second, the equals sign <kbd>=</kbd> joins the key (i.e., <var>long_name</var>) to   
-the value in an uninterruptible text block. 
-Experience shows that users are less likely to mis-parse commands when
-restricted to this form.
-</p>
-<p><acronym>GNU</acronym> implements a superset of the <acronym>POSIX</acronym> standard 
-which allows any unambiguous truncation of a valid option to be used.
-</p><table><tr><td> </td><td><pre class="example">ncks -D 3 in.nc        # Short option
-ncks --dbg_lvl=3 in.nc # Long option, full form
-ncks --dbg=3 in.nc     # Long option, unambiguous truncation
-ncks --db=3 in.nc      # Long option, unambiguous truncation
-ncks --d=3 in.nc       # Long option, ambiguous truncation
-</pre></td></tr></table>
-<p>The first four examples are equivalent and will work as expected.
-The final example will exit with an error since <code>ncks</code> cannot
-disambiguate whether ‘<samp>--d</samp>’ is intended as a truncation of
-‘<samp>--dbg_lvl</samp>’, of ‘<samp>--dimension</samp>’, or of some other long option. 
-</p>
-<p><acronym>NCO</acronym> provides many long options for common switches.
-For example, the debugging level may be set in all operators with any
-of the switches ‘<samp>-D</samp>’, ‘<samp>--debug-level</samp>’, or ‘<samp>--dbg_lvl</samp>’.
-This flexibility allows users to choose their favorite mnemonic.
-For some, it will be ‘<samp>--debug</samp>’ (an unambiguous truncation of
-‘<samp>--debug-level</samp>’, and other will prefer ‘<samp>--dbg</samp>’.
-Interactive users usually prefer the minimal amount of typing, i.e.,
-‘<samp>-D</samp>’.
-We recommend that scripts which are re-usable employ some form of 
-the long options for future maintainability.
-</p>
-<p>This manual generally uses the short option syntax.
-This is for historical reasons and to conserve space.
-The remainder of this manual specifies the full <var>long_name</var> of
-each option.
-Users are expected to pick the unambiguous truncation of each option
-name that most suits their taste.
-</p>
-<a name="fl_in"></a> <!-- http://nco.sf.net/nco.html#fl_in -->
-<a name="in"></a> <!-- http://nco.sf.net/nco.html#in -->
-<a name="input"></a> <!-- http://nco.sf.net/nco.html#input --><hr size="6">
-<a name="Specifying-Input-Files"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Command-Line-Options" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Specifying-Output-Files" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Specifying-Input-Files-1"></a>
-<h2 class="section">3.5 Specifying Input Files</h2>
-<a name="index-input-files-1"></a>
-<a name="index-globbing-1"></a>
-<a name="index-regular-expressions-1"></a>
-<a name="index-wildcards"></a>
-<a name="index-NINTAP"></a>
-<a name="index-Processor_002c-CCM"></a>
-<a name="index-CCM-Processor"></a>
-<a name="index-_002dn-loop-2"></a>
-<a name="index-_002d_002dnintap-loop"></a>
-<a name="index-_002dp-input_002dpath"></a>
-<a name="index-_002d_002dpth-input_002dpath"></a>
-<a name="index-_002d_002dpath-input_002dpath"></a>
-<a name="index-input_002dpath"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability (<code>-n</code>): <code>ncea</code>, <code>ncecat</code>, <code>ncra</code>, <code>ncrcat</code><br>
-Availability (<code>-p</code>): All operators<br>
-Short options: ‘<samp>-n</samp>’, ‘<samp>-p</samp>’<br>
-Long options: ‘<samp>--nintap</samp>’, ‘<samp>--pth</samp>’, ‘<samp>--path</samp>’<br>
-</p></td></tr></table>
-<p>It is important that users be able to specify multiple input files
-without typing every filename in full, often a tedious task even
-by graduate student standards.
-<a name="index-UNIX-4"></a>
-There are four different ways of specifying input files to <acronym>NCO</acronym>:
-explicitly typing each, using <acronym>UNIX</acronym> shell wildcards, and using
-the <acronym>NCO</acronym> ‘<samp>-n</samp>’ and ‘<samp>-p</samp>’ switches (or their long option
-equivalents, ‘<samp>--nintap</samp>’ or ‘<samp>--pth</samp>’ and ‘<samp>--path</samp>’,
-respectively). 
-Techniques to augment these methods to specify arbitrary numbers (e.g.,
-thousands) and patterns of filenames are discussed separately 
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-</p>
-<p>To illustrate these methods, consider the simple problem of using
-<code>ncra</code> to average five input files, ‘<tt>85.nc</tt>’, ‘<tt>86.nc</tt>’,
-… ‘<tt>89.nc</tt>’, and store the results in ‘<tt>8589.nc</tt>’.
-Here are the four methods in order.
-They produce identical answers.
-</p><table><tr><td> </td><td><pre class="example">ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncra 8[56789].nc 8589.nc
-ncra -p <var>input-path</var> 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncra -n 5,2,1 85.nc 8589.nc
-</pre></td></tr></table>
-<p>The first method (explicitly specifying all filenames) works by brute 
-force. 
-The second method relies on the operating system shell to <em>glob</em>
-(expand) the <em>regular expression</em> <code>8[56789].nc</code>.
-The shell passes valid filenames which match the expansion to
-<code>ncra</code>.
-The third method uses the ‘<samp>-p <var>input-path</var></samp>’ argument to specify 
-the directory where all the input files reside.
-<acronym>NCO</acronym> prepends <var>input-path</var> (e.g.,
-‘<tt>/data/usrname/model</tt>’) to all <var>input-files</var> (but not to
-<var>output-file</var>).  
-Thus, using ‘<samp>-p</samp>’, the path to any number of input files need only
-be specified once.
-Note <var>input-path</var> need not end with ‘<samp>/</samp>’; the ‘<samp>/</samp>’ is
-automatically generated if necessary. 
-</p>
-<p>The last method passes (with ‘<samp>-n</samp>’) syntax concisely describing 
-the entire set of filenames
-<a name="DOCF15" href="#FOOT15">(15)</a>. 
-<a name="index-multi_002dfile-operators-1"></a>
-<a name="index-files_002c-multiple"></a>
-This option is only available with the <em>multi-file operators</em>:
-<code>ncra</code>, <code>ncrcat</code>, <code>ncea</code>, and <code>ncecat</code>.
-By definition, multi-file operators are able to process an arbitrary
-number of <var>input-files</var>.
-This option is very useful for abbreviating lists of filenames
-representable as
-<var>alphanumeric_prefix</var>+<var>numeric_suffix</var>+‘<tt>.</tt>’+<var>filetype</var>
-where <var>alphanumeric_prefix</var> is a string of arbitrary length and
-composition, <var>numeric_suffix</var> is a fixed width field of digits, and
-<var>filetype</var> is a standard filetype indicator. 
-For example, in the file ‘<tt>ccm3_h0001.nc</tt>’, we have
-<var>alphanumeric_prefix</var> = ‘<tt>ccm3_h</tt>’, <var>numeric_suffix</var> =
-‘<tt>0001</tt>’, and <var>filetype</var> = ‘<tt>nc</tt>’.
-</p>
-<p><acronym>NCO</acronym> is able to decode lists of such filenames encoded using the
-‘<samp>-n</samp>’ option. 
-The simpler (3-argument) ‘<samp>-n</samp>’ usage takes the form 
-<code>-n <var>file_number</var>,<var>digit_number</var>,<var>numeric_increment</var></code>
-where <var>file_number</var> is the number of files, <var>digit_number</var> is
-the fixed number of numeric digits comprising the <var>numeric_suffix</var>,
-and <var>numeric_increment</var> is the constant, integer-valued difference
-between the <var>numeric_suffix</var> of any two consecutive files.
-The value of <var>alphanumeric_prefix</var> is taken from the input file,
-which serves as a template for decoding the filenames.
-In the example above, the encoding <code>-n 5,2,1</code> along with the input
-file name ‘<tt>85.nc</tt>’ tells <acronym>NCO</acronym> to
-construct five (5) filenames identical to the template ‘<tt>85.nc</tt>’
-except that the final two (2) digits are a numeric suffix to be
-incremented by one (1) for each successive file.
-Currently <var>filetype</var> may be either be empty, ‘<tt>nc</tt>’,
-‘<tt>cdf</tt>’, ‘<tt>hdf</tt>’, or ‘<tt>hd5</tt>’. 
-If present, these <var>filetype</var> suffixes (and the preceding ‘<tt>.</tt>’)
-are ignored by <acronym>NCO</acronym> as it uses the ‘<samp>-n</samp>’ arguments to
-locate, evaluate, and compute the <var>numeric_suffix</var> component of
-filenames. 
-</p>
-<a name="index-wrapped-filenames"></a>
-<a name="index-climate-model-3"></a>
-<p>Recently the ‘<samp>-n</samp>’ option has been extended to allow convenient
-specification of filenames with “circular” characteristics.
-This means it is now possible for <acronym>NCO</acronym> to automatically
-generate filenames which increment regularly until a specified maximum
-value, and then wrap back to begin again at a specified minimum value. 
-The corresponding ‘<samp>-n</samp>’ usage becomes more complex, taking one or
-two additional arguments for a total of four or five, respectively: 
-<code>-n
-<var>file_number</var>,<var>digit_number</var>,<var>numeric_increment</var>[,<var>numeric_max</var>[,<var>numeric_min</var>]]</code>
-where <var>numeric_max</var>, if present, is the maximum integer-value of 
-<var>numeric_suffix</var> and <var>numeric_min</var>, if present, is the minimum
-integer-value of <var>numeric_suffix</var>.
-Consider, for example, the problem of specifying non-consecutive input
-files where the filename suffixes end with the month index.  
-In climate modeling it is common to create summertime and wintertime
-averages which contain the averages of the months June–July–August,
-and December–January–February, respectively:
-</p><table><tr><td> </td><td><pre class="example">ncra -n 3,2,1 85_06.nc 85_0608.nc
-ncra -n 3,2,1,12 85_12.nc 85_1202.nc
-ncra -n 3,2,1,12,1 85_12.nc 85_1202.nc
-</pre></td></tr></table>
-<p>The first example shows that three arguments to the ‘<samp>-n</samp>’ option
-suffice to specify consecutive months (<code>06, 07, 08</code>) which do not
-“wrap” back to a minimum value.
-The second example shows how to use the optional fourth and fifth
-elements of the ‘<samp>-n</samp>’ option to specify a wrap value to <acronym>NCO</acronym>.
-The fourth argument to ‘<samp>-n</samp>’, if present, specifies the maximum
-integer value of <var>numeric_suffix</var>.
-In this case the maximum value is 12, and will be formatted as
-‘<tt>12</tt>’ in the filename string. 
-The fifth argument to ‘<samp>-n</samp>’, if present, specifies the minimum
-integer value of <var>numeric_suffix</var>.
-The default minimum filename suffix is 1, which is formatted as
-‘<tt>01</tt>’ in this case.   
-Thus the second and third examples have the same effect, that is, they
-automatically generate, in order, the filenames ‘<tt>85_12.nc</tt>’,
-‘<tt>85_01.nc</tt>’, and ‘<tt>85_02.nc</tt>’ as input to <acronym>NCO</acronym>.
-</p>
-<a name="fl_out"></a> <!-- http://nco.sf.net/nco.html#fl_out -->
-<a name="out"></a> <!-- http://nco.sf.net/nco.html#out -->
-<a name="output"></a> <!-- http://nco.sf.net/nco.html#output --><hr size="6">
-<a name="Specifying-Output-Files"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Specifying-Input-Files" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Remote-storage" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Specifying-Output-Files-1"></a>
-<h2 class="section">3.6 Specifying Output Files</h2>
-<a name="index-output-file-1"></a>
-<a name="index-input-files-2"></a>
-<a name="index-positional-arguments"></a>
-<a name="index-command-line-switches-2"></a>
-<a name="index-_002do-fl_005fout-1"></a>
-<a name="index-_002d_002doutput-fl_005fout"></a>
-<a name="index-_002d_002dfl_005fout-fl_005fout"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: ‘<samp>-o</samp>’<br>
-Long options: ‘<samp>--fl_out</samp>’, ‘<samp>--output</samp>’<br>
-</p></td></tr></table>
-<p><acronym>NCO</acronym> commands produce no more than one output file, <var>fl_out</var>. 
-Traditionally, users specify <var>fl_out</var> as the final argument to the
-operator, following all input file names. 
-This is the <em>positional argument</em> method of specifying input and
-ouput file names.
-The positional argument method works well in most applications.
-<acronym>NCO</acronym> also supports specifying <var>fl_out</var> using the command
-line switch argument method, ‘<samp>-o <var>fl_out</var></samp>’.
-</p>
-<p>Specifying <var>fl_out</var> with a switch, rather than as a positional
-argument, allows <var>fl_out</var> to precede input files in the argument
-list. 
-<a name="index-multi_002dfile-operators-2"></a>
-This is particularly useful with multi-file operators for three reasons.
-Multi-file operators may be invoked with hundreds (or more) filenames.
-Visual or automatic location of <var>fl_out</var> in such a list is
-difficult when the only syntactic distinction between input and output
-files is their position.
-<a name="index-xargs-1"></a>
-<a name="index-input-files-3"></a>
-Second, specification of a long list of input files may be difficult
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-Making the input file list the final argument to an operator facilitates 
-using <code>xargs</code> for this purpose.
-Some alternatives to <code>xargs</code> are very ugly and undesirable.
-Finally, many users are more comfortable specifying output files 
-with ‘<samp>-o <var>fl_out</var></samp>’ near the beginning of an argument list.
-<a name="index-compilers"></a>
-<a name="index-linkers"></a>
-Compilers and linkers are usually invoked this way.
-</p>
-<p>Users should specify <var>fl_out</var> using either but not both methods.
-If <var>fl_out</var> is specified twice (once with the switch and once as
-the last positional argument), then the positional argument takes
-precedence. 
-</p>
-<a name="rmt"></a> <!-- http://nco.sf.net/nco.html#rmt --><hr size="6">
-<a name="Remote-storage"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Specifying-Output-Files" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#OPeNDAP" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Accessing-Remote-Files"></a>
-<h2 class="section">3.7 Accessing Remote Files</h2>
-<a name="index-rcp-1"></a>
-<a name="index-scp-1"></a>
-<a name="index-_002erhosts"></a>
-<a name="index-NCAR-MSS"></a>
-<a name="index-MSS"></a>
-<a name="index-Mass-Store-System"></a>
-<a name="index-URL"></a>
-<a name="index-ftp-1"></a>
-<a name="index-sftp-1"></a>
-<a name="index-wget"></a>
-<a name="index-remote-files-1"></a>
-<a name="index-synchronous-file-access"></a>
-<a name="index-asynchronous-file-access"></a>
-<a name="index-_002d_002dpth-input_002dpath-1"></a>
-<a name="index-_002d_002dpath-input_002dpath-1"></a>
-<a name="index-_002d_002dlcl-output_002dpath"></a>
-<a name="index-_002d_002dlocal-output_002dpath"></a>
-<a name="index-_002dl-output_002dpath"></a>
-<a name="index-_002enetrc"></a>
-<a name="index-history-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: ‘<samp>-p</samp>’, ‘<samp>-l</samp>’<br>
-Long options: ‘<samp>--pth</samp>’, ‘<samp>--path</samp>’, ‘<samp>--lcl</samp>’, ‘<samp>--local</samp>’<br>
-</p></td></tr></table>
-<p>All <acronym>NCO</acronym> operators can retrieve files from remote sites as well 
-as from the local file system.
-A remote site can be an anonymous <acronym>FTP</acronym> server, a machine on
-which the user has <code>rcp</code>, <code>scp</code>, or <code>sftp</code>
-privileges, or <acronym>NCAR</acronym>’s Mass Storage System (<acronym>MSS</acronym>), or
-an <acronym>OPeNDAP</acronym> server.
-Examples of each are given below, following a brief description of the 
-particular access protocol.
-</p>
-<a name="ftp"></a> <!-- http://nco.sf.net/nco.html#ftp --><p>To access a file via an anonymous <acronym>FTP</acronym> server, supply the
-remote file’s <acronym>URL</acronym>.
-<acronym>FTP</acronym> is an intrinsically insecure protocol because it transfers
-passwords in plain text format. 
-Users should access sites using anonymous <acronym>FTP</acronym> when possible. 
-Some <acronym>FTP</acronym> servers require a login/password combination for a
-valid user account.
-<acronym>NCO</acronym> allows these transactions so long as the required
-information is stored in the ‘<tt>.netrc</tt>’ file. 
-Usually this information is the remote machine name, login, and
-password, in plain text, separated by those very keywords, e.g.,
-</p><table><tr><td> </td><td><pre class="example">machine dust.ess.uci.edu login zender password bushlied
-</pre></td></tr></table>
-<p>Eschew using valuable passwords for <acronym>FTP</acronym> transactions, since
-‘<tt>.netrc</tt>’ passwords are potentially exposed to eavesdropping
-software
-<a name="DOCF16" href="#FOOT16">(16)</a>. 
-</p>
-<a name="sftp"></a> <!-- http://nco.sf.net/nco.html#sftp --><p><acronym>SFTP</acronym>, i.e., secure <acronym>FTP</acronym>, uses <acronym>SSH</acronym>-based 
-security protocols that solve the security issues associated with
-plain <acronym>FTP</acronym>.  
-<acronym>NCO</acronym> supports <acronym>SFTP</acronym> protocol access to files
-specified with a homebrew syntax of the form
-</p><table><tr><td> </td><td><pre class="example">sftp://machine.domain.tld:/path/to/filename
-</pre></td></tr></table>
-<p>Note the second colon following the top-level-domain (tld).
-This syntax is a hybrid between an <acronym>FTP URL</acronym> and a standard
-remote file syntax.
-</p>
-<a name="rcp"></a> <!-- http://nco.sf.net/nco.html#rcp -->
-<a name="scp"></a> <!-- http://nco.sf.net/nco.html#scp --><p>To access a file using <code>rcp</code> or <code>scp</code>, specify the
-Internet address of the remote file.
-Of course in this case you must have <code>rcp</code> or <code>scp</code>
-privileges which allow transparent (no password entry required) access
-to the remote machine. 
-This means that ‘<tt>~/.rhosts</tt>’ or ‘<tt>~/ssh/authorized_keys</tt>’ must
-be set accordingly on both local and remote machines.   
-</p>
-<a name="index-HPSS"></a>
-<a name="index-hsi"></a>
-<a name="index-msrcp"></a>
-<a name="index-msread"></a>
-<a name="index-nrnet"></a>
-<a name="hpss"></a> <!-- http://nco.sf.net/nco.html#hpss -->
-<a name="HPSS"></a> <!-- http://nco.sf.net/nco.html#HPSS -->
-<a name="hsi"></a> <!-- http://nco.sf.net/nco.html#hsi -->
-<a name="HSI"></a> <!-- http://nco.sf.net/nco.html#HSI -->
-<a name="msrcp"></a> <!-- http://nco.sf.net/nco.html#msrcp -->
-<a name="msread"></a> <!-- http://nco.sf.net/nco.html#msread -->
-<a name="nrnet"></a> <!-- http://nco.sf.net/nco.html#nrnet --><p>To access a file on a High Performance Storage System (<acronym>HPSS</acronym>) 
-(such as that at <acronym>NCAR</acronym>, <acronym>ECMWF</acronym>, <acronym>LANL</acronym>,
-<acronym>DKRZ</acronym>, <acronym>LLNL</acronym>) specify the full <acronym>HPSS</acronym> pathname
-of the remote file.  
-<acronym>NCO</acronym> will attempt to detect whether the local machine has direct
-(synchronous) <acronym>HPSS</acronym> access. 
-In this case, <acronym>NCO</acronym> attempts to use the Hierarchical Storage
-Interface (<acronym>HSI</acronym>) command <code>hsi get</code>
-<a name="DOCF17" href="#FOOT17">(17)</a>.
-</p>
-<p>The following examples show how one might analyze files stored on  
-remote systems.
-</p><table><tr><td> </td><td><pre class="example">ncks -l . ftp://dust.ess.uci.edu/pub/zender/nco/in.nc
-ncks -l . sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco/in.nc
-ncks -l . dust.ess.uci.edu:/home/zender/nco/data/in.nc
-ncks -l . /ZENDER/nco/in.nc
-ncks -l . /home/zender/nco/in.nc
-ncks -l . http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc 
-</pre></td></tr></table>
-<p>The first example works verbatim if your system is connected to the
-Internet and is not behind a firewall. 
-The second example works if you have <code>sftp</code> access to the
-machine <code>dust.ess.uci.edu</code>.
-The third example works if you have <code>rcp</code> or <code>scp</code>
-access to the machine <code>dust.ess.uci.edu</code>. 
-The fourth and fifth examples work on <acronym>NCAR</acronym> computers with
-local access to the <acronym>HPSS</acronym> <code>hsi get</code> command
-<a name="DOCF18" href="#FOOT18">(18)</a>.
-The sixth command works if your local version of <acronym>NCO</acronym> is
-<acronym>OPeNDAP</acronym>-enabled (this is fully described in <a href="#OPeNDAP"><acronym>OPeNDAP</acronym></a>),
-or if the remote file is accessible via <code>wget</code>.
-The above commands can be rewritten using the ‘<samp>-p <var>input-path</var></samp>’ 
-option as follows: 
-<a name="index-_002dp-input_002dpath-1"></a>
-<a name="index-input_002dpath-1"></a>
-<a name="index-_002dl-output_002dpath-1"></a>
-<a name="index-output_002dpath"></a>
-</p><table><tr><td> </td><td><pre class="example">ncks -p ftp://dust.ess.uci.edu/pub/zender/nco -l . in.nc
-ncks -p sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco -l . in.nc
-ncks -p dust.ess.uci.edu:/home/zender/nco -l . in.nc
-ncks -p /ZENDER/nco -l . in.nc
-ncks -p /home/zender/nco -l . in.nc # HPSS
-ncks -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \ 
-     -l . in.nc
-</pre></td></tr></table>
-<p>Using ‘<samp>-p</samp>’ is recommended because it clearly separates the
-<var>input-path</var> from the filename itself, sometimes called the
-<em>stub</em>. 
-<a name="index-stub"></a>
-When <var>input-path</var> is not explicitly specified using ‘<samp>-p</samp>’,
-<acronym>NCO</acronym> internally generates an <var>input-path</var> from the first
-input filename.  
-The automatically generated <var>input-path</var> is constructed by stripping 
-the input filename of everything following the final ‘<samp>/</samp>’ character
-(i.e., removing the stub).
-The ‘<samp>-l <var>output-path</var></samp>’ option tells <acronym>NCO</acronym> where to
-store the remotely retrieved file and the output file.
-Often the path to a remotely retrieved file is quite different than the
-path on the local machine where you would like to store the file.
-If ‘<samp>-l</samp>’ is not specified then <acronym>NCO</acronym> internally generates an
-<var>output-path</var> by simply setting <var>output-path</var> equal to
-<var>input-path</var> stripped of any machine names.
-If ‘<samp>-l</samp>’ is not specified and the remote file resides on the
-<acronym>NCAR</acronym> <acronym>HPSS</acronym> system, then the leading character of
-<var>input-path</var>, ‘<samp>/</samp>’, is also stripped from <var>output-path</var>.
-Specifying <var>output-path</var> as ‘<samp>-l ./</samp>’ tells <acronym>NCO</acronym> to
-store the remotely retrieved file and the output file in the current
-directory. 
-Note that ‘<samp>-l .</samp>’ is equivalent to ‘<samp>-l ./</samp>’ though the latter is
-recommended as it is syntactically more clear.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td><td>  </td><td align="left" valign="top">                     
-</td></tr>
-</table>
-
-<a name="dap"></a> <!-- http://nco.sf.net/nco.html#dap -->
-<a name="DAP"></a> <!-- http://nco.sf.net/nco.html#DAP -->
-<a name="DODS"></a> <!-- http://nco.sf.net/nco.html#DODS -->
-<a name="OPeNDAP"></a> <!-- http://nco.sf.net/nco.html#OPeNDAP -->
-<a name="dods"></a> <!-- http://nco.sf.net/nco.html#dods -->
-<a name="opendap"></a> <!-- http://nco.sf.net/nco.html#opendap --><hr size="6">
-<a name="OPeNDAP"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Remote-storage" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Retaining-Retrieved-Files" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Remote-storage" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="OPeNDAP-1"></a>
-<h3 class="subsection">3.7.1 <acronym>OPeNDAP</acronym></h3>
-<a name="index-DAP"></a>
-<a name="index-DODS"></a>
-<a name="index-HTTP-protocol"></a>
-<a name="index-DODS_005fROOT"></a>
-<a name="index-Distributed-Oceanographic-Data-System"></a>
-<a name="index-oceanography"></a>
-<a name="index-data-access-protocol"></a>
-<a name="index-Open_002dsource-Project-for-a-Network-Data-Access-Protocol"></a>
-<a name="index-OPeNDAP_002e"></a>
-<a name="index-server-1"></a>
-<a name="index-client_002dserver"></a>
-<p>The Distributed Oceanographic Data System (<acronym>DODS</acronym>) provides
-useful replacements for common data interface libraries like netCDF.
-The <acronym>DODS</acronym> versions of these libraries implement network
-transparent access to data via a client-server data access protocol
-that uses the <acronym>HTTP</acronym> protocol for communication.
-Although <acronym>DODS</acronym>-technology originated with oceanography data,
-it applyies to virtually all scientific data.
-In recognition of this, the data access protocol underlying
-<acronym>DODS</acronym> (which is what <acronym>NCO</acronym> cares about) has been 
-renamed the Open-source Project for a Network Data Access Protocol, 
-<acronym>OPeNDAP</acronym>.
-We use the terms <acronym>DODS</acronym> and <acronym>OPeNDAP</acronym> interchangeably,
-and often write <acronym>OPeNDAP</acronym>/<acronym>DODS</acronym> for now. 
-In the future we will deprecate <acronym>DODS</acronym> in favor of
-<acronym>DAP</acronym> or <acronym>OPeNDAP</acronym>, as appropriate
-<a name="DOCF19" href="#FOOT19">(19)</a>.
-</p>
-<p><acronym>NCO</acronym> may be <acronym>DAP</acronym>-enabled by linking
-<acronym>NCO</acronym> to the <acronym>OPeNDAP</acronym> libraries. 
-<a name="index-Makefile-3"></a>
-This is described in the <acronym>OPeNDAP</acronym> documentation and
-automagically implemented in <acronym>NCO</acronym> build mechanisms
-<a name="DOCF20" href="#FOOT20">(20)</a>.
-The ‘<tt>./configure</tt>’ mechanism automatically enables <acronym>NCO</acronym> as
-<acronym>OPeNDAP</acronym> clients if it can find the required
-<acronym>OPeNDAP</acronym> libraries
-<a name="DOCF21" href="#FOOT21">(21)</a>.
- in the usual locations.
-The <code>$DODS_ROOT</code> environment variable may be used to override the 
-default <acronym>OPeNDAP</acronym> library location at <acronym>NCO</acronym>
-compile-time.  
-Building <acronym>NCO</acronym> with ‘<tt>bld/Makefile</tt>’ and the command
-<code>make DODS=Y</code> adds the (non-intuitive) commands to link to the
-<acronym>OPeNDAP</acronym> libraries installed in the <code>$DODS_ROOT</code>
-directory.  
-The file ‘<tt>doc/opendap.sh</tt>’ contains a generic script intended to help
-users install <acronym>OPeNDAP</acronym> before building <acronym>NCO</acronym>.
-The documentation at the 
-<a href="http://www.opendap.org">OPeNDAP Homepage</a>
-is voluminous.
-Check there and on the
-<a href="http://www.unidata.ucar.edu/packages/dods/home/mailLists/">DODS mail lists</a>.
-to learn more about the extensive capabilities of <acronym>OPeNDAP</acronym>
-<a name="DOCF22" href="#FOOT22">(22)</a>.
-</p>
-<p>Once <acronym>NCO</acronym> is <acronym>DAP</acronym>-enabled the operators are
-<acronym>OPeNDAP</acronym> clients.  
-All <acronym>OPeNDAP</acronym> clients have network transparent access to
-any files controlled by a <acronym>OPeNDAP</acronym> server. 
-Simply specify the input file path(s) in <acronym>URL</acronym> notation and all 
-<acronym>NCO</acronym> operations may be performed on remote files made
-accessible by a <acronym>OPeNDAP</acronym> server. 
-This command tests the basic functionality of <acronym>OPeNDAP</acronym>-enabled  
-<acronym>NCO</acronym> clients: 
-</p><table><tr><td> </td><td><pre class="example">% ncks -O -o ~/foo.nc -C -H -v one -l /tmp \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-% ncks -H -v one ~/foo.nc
-one = 1
-</pre></td></tr></table>
-<p>The <code>one = 1</code> outputs confirm (first) that <code>ncks</code> correctly
-retrieved data via the  <acronym>OPeNDAP</acronym> protocol and (second) that 
-<code>ncks</code> created a valid local copy of the subsetted remote file.
-With minor changes to the above command, netCDF4 can be used as both the
-input and output file format:
-</p><table><tr><td> </td><td><pre class="example">% ncks -4 -O -o ~/foo.nc -C -H -v one -l /tmp \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-% ncks -H -v one ~/foo.nc
-one = 1
-</pre></td></tr></table>
-<p>And, of course, <acronym>OPeNDAP</acronym>-enabled <acronym>NCO</acronym> clients continue
-to support other, orthogonal features such as UDUnits 
-(see section <a href="#UDUnits-Support">UDUnits Support</a>):
-</p><table><tr><td> </td><td><pre class="example">% ncks -u -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-% wvl[0]=5e-07 meter
-</pre></td></tr></table>
-
-<p>The next command is a more advanced example which demonstrates the real
-power of <acronym>OPeNDAP</acronym>-enabled <acronym>NCO</acronym> clients.
-The <code>ncwa</code> client requests an equatorial hyperslab from remotely
-stored <acronym>NCEP reanalyses data</acronym> of the year 1969.
-The <acronym>NOAA</acronym> <acronym>OPeNDAP</acronym> server (hopefully!) serves these data. 
-The local <code>ncwa</code> client then computes and stores (locally) the
-regional mean surface pressure (in Pa). 
-</p><table><tr><td> </td><td><pre class="example">ncwa -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-  pres.sfc.1969.nc ~/foo.nc
-</pre></td></tr></table>
-<a name="index-packing"></a>
-<a name="index-unpacking"></a>
-<p>All with one command!
-The data in this particular input file also happen to be packed
-(see section <a href="#Methods-and-functions">Methods and functions</a>), although this is completely transparent
-to the user since <acronym>NCO</acronym> automatically unpacks data before
-attempting arithmetic. 
-</p>
-<p><acronym>NCO</acronym> obtains remote files from the <acronym>OPeNDAP</acronym> server
-(e.g., ‘<tt>www.cdc.noaa.gov</tt>’) rather than the local machine. 
-Input files are first copied to the local machine, then processed.
-The <acronym>OPeNDAP</acronym> server performs data access, hyperslabbing,
-and transfer to the local machine.
-<a name="index-I_002fO"></a>
-This allows the I/O to appear to <acronym>NCO</acronym> as if the input files
-were local.  
-The local machine performs all arithmetic operations.
-Only the hyperslabbed output data are transferred over the network (to
-the local machine) for the number-crunching to begin.
-The advantages of this are obvious if you are examining small parts of
-large files stored at remote locations.
-</p>
-<a name="rtn"></a> <!-- http://nco.sf.net/nco.html#rtn --><hr size="6">
-<a name="Retaining-Retrieved-Files"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#OPeNDAP" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Selecting-Output-File-Format" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Retaining-Retrieved-Files-1"></a>
-<h2 class="section">3.8 Retaining Retrieved Files</h2>
-<a name="index-file-deletion"></a>
-<a name="index-file-removal"></a>
-<a name="index-file-retention"></a>
-<a name="index-_002dR"></a>
-<a name="index-_002d_002drtn"></a>
-<a name="index-_002d_002dretain"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: ‘<samp>-R</samp>’<br>
-Long options: ‘<samp>--rtn</samp>’, ‘<samp>--retain</samp>’<br>
-</p></td></tr></table>
-<p>In order to conserve local file system space, files retrieved from
-remote locations are automatically deleted from the local file system 
-once they have been processed.
-Many <acronym>NCO</acronym> operators were constructed to work with numerous
-large (e.g., 200 MB) files. 
-Retrieval of multiple files from remote locations is done serially. 
-Each file is retrieved, processed, then deleted before the cycle
-repeats.  
-In cases where it is useful to keep the remotely-retrieved files on the
-local file system after processing, the automatic removal feature may be 
-disabled by specifying ‘<samp>-R</samp>’ on the command line.
-</p>
-<p>Invoking <code>-R</code> disables the default printing behavior of
-<code>ncks</code>.
-This allows <code>ncks</code> to retrieve remote files without
-automatically trying to print them.
-See <a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a>, for more details.
-</p>
-<a name="index-FTP"></a>
-<a name="index-SSH-1"></a>
-<a name="index-msrcp-1"></a>
-<p>Note that the remote retrieval features of <acronym>NCO</acronym> can always be
-used to retrieve <em>any</em> file, including non-netCDF files, via
-<code>SSH</code>, anonymous <acronym>FTP</acronym>, or <code>msrcp</code>.
-Often this method is quicker than using a browser, or running an
-<acronym>FTP</acronym> session from a shell window yourself.
-<a name="index-server-2"></a>
-For example, say you want to obtain a <acronym>JPEG</acronym> file from a weather
-server. 
-</p><table><tr><td> </td><td><pre class="example">ncks -R -p ftp://weather.edu/pub/pix/jpeg -l . storm.jpg
-</pre></td></tr></table>
-<p>In this example, <code>ncks</code> automatically performs an anonymous
-<acronym>FTP</acronym> login to the remote machine and retrieves the specified
-file. 
-When <code>ncks</code> attempts to read the local copy of ‘<tt>storm.jpg</tt>’
-as a netCDF file, it fails and exits, leaving  ‘<tt>storm.jpg</tt>’ in
-the current directory.
-</p>
-<a name="index-DODS-1"></a>
-<a name="index-server-3"></a>
-<p>If your <acronym>NCO</acronym> is <acronym>DAP</acronym>-enabled (see section <a href="#OPeNDAP"><acronym>OPeNDAP</acronym></a>),
-then you may use <acronym>NCO</acronym> to retrieve any files (including netCDF,
-<acronym>HDF</acronym>, etc.) served by an <acronym>OPeNDAP</acronym> server to your local 
-machine. 
-For example, 
-</p><table><tr><td> </td><td><pre class="example">ncks -R -l . -p \
-http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-  pres.sfc.1969.nc
-</pre></td></tr></table>
-<p>Note that <acronym>NCO</acronym> is never the preffered way to transport files
-from remote machines.
-For large jobs, that is best handled by <acronym>FTP</acronym>, <acronym>SSH</acronym>,
-or <code>wget</code>.
-It may occasionally be useful to use <acronym>NCO</acronym> to transfer files
-when your other preferred methods are not available locally.
-</p>
-<a name="fl_fmt"></a> <!-- http://nco.sf.net/nco.html#fl_fmt -->
-<a name="hdf"></a> <!-- http://nco.sf.net/nco.html#hdf -->
-<a name="64bit"></a> <!-- http://nco.sf.net/nco.html#64bit -->
-<a name="netcdf4"></a> <!-- http://nco.sf.net/nco.html#netcdf4 --><hr size="6">
-<a name="Selecting-Output-File-Format"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Retaining-Retrieved-Files" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Large-File-Support" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Selecting-Output-File-Format-1"></a>
-<h2 class="section">3.9 Selecting Output File Format</h2>
-<a name="index-HDF-1"></a>
-<a name="index-netCDF2-1"></a>
-<a name="index-netCDF3-1"></a>
-<a name="index-netCDF4-1"></a>
-<a name="index-NETCDF4_005fCLASSIC-files"></a>
-<a name="index-NETCDF4-files"></a>
-<a name="index-CLASSIC-files"></a>
-<a name="index-64BIT-files"></a>
-<a name="index-_002d_002d3"></a>
-<a name="index-_002d3-1"></a>
-<a name="index-_002d4-1"></a>
-<a name="index-_002d_002d4"></a>
-<a name="index-_002d_002dnetcdf4"></a>
-<a name="index-_002d_002dfl_005ffmt"></a>
-<a name="index-_002d_002dfile_005fformat"></a>
-<a name="index-_002d_002d64bit"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncecat</code>, <code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>,
-<code>ncra</code>, <code>ncrcat</code>, <code>ncwa</code><br>
-Short options: ‘<samp>-3</samp>’, ‘<samp>-4</samp>’<br>
-Long options: ‘<samp>--3</samp>’, ‘<samp>--4</samp>’, ‘<samp>--64bit</samp>’, ‘<samp>--fl_fmt</samp>’,
-‘<samp>--netcdf4</samp>’<br>  
-</p></td></tr></table>
-<p>All <acronym>NCO</acronym> operators support (read and write) all three (or four, 
-depending on how one counts) file formats supported by netCDF4.
-The default output file format for all operators is the input file
-format. 
-The operators listed under “Availability” above allow the user to
-specify the output file format independent of the input file format. 
-These operators allow the user to convert between the various file
-formats. 
-(The operators <code>ncatted</code> and <code>ncrename</code> do not support
-these switches so they always write the output netCDF file in the same
-format as the input netCDF file.) 
-</p>
-<p>netCDF supports four types of files: <code>CLASSIC</code>, <code>64BIT</code>,
-<code>NETCDF4</code>, and <code>NETCDF4_CLASSIC</code>, 
-The <code>CLASSIC</code> format is the traditional 32-bit offset written by
-netCDF2 and netCDF3.
-As of 2005, most netCDF datasets are in <code>CLASSIC</code> format. 
-The <code>64BIT</code> format was added in Fall, 2004.
-</p>
-<p>The <code>NETCDF4</code> format uses <acronym>HDF5</acronym> as the file storage layer. 
-The files are (usually) created, accessed, and manipulated using the 
-traditional netCDF3 <acronym>API</acronym> (with numerous extensions).
-The <code>NETCDF4_CLASSIC</code> format refers to netCDF4 files created with
-the <code>NC_CLASSIC_MODEL</code> mask.
-Such files use <acronym>HDF5</acronym> as the back-end storage format (unlike
-netCDF3), though they incorporate only netCDF3 features.
-Hence <code>NETCDF4_CLASSIC</code> files are perfectly readable by
-applications which use only the netCDF3 <acronym>API</acronym> and library.
-<acronym>NCO</acronym> must be built with netCDF4 to write files in the new
-<code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> formats, and to read files in
-the new <code>NETCDF4</code> format. 
-Users are advised to use the default <code>CLASSIC</code> format or the
-<code>NETCDF4_CLASSIC</code> format until netCDF4 is more widespread.
-Widespread support for <code>NETCDF4</code> format files is not expected for 
-a few more years, 2013–2014, say.
-If performance or coolness are issues, then use <code>NETCDF4_CLASSIC</code>  
-instead of <code>CLASSIC</code> format files.
-</p>
-<p>As mentioned above, all operators write use the input file format for
-output files unless told otherwise.
-Toggling the long option ‘<samp>--64bit</samp>’ switch (or its
-<var>key</var>-<var>value</var> equivalent ‘<samp>--fl_fmt=64bit</samp>’) produces the
-netCDF3 64-bit offset format named <code>64BIT</code>. 
-<acronym>NCO</acronym> must be built with netCDF 3.6 or higher to produce
-a <code>64BIT</code> file.
-Using the ‘<samp>-4</samp>’ switch (or its long option equivalents
-‘<samp>--4</samp>’ or ‘<samp>--netcdf4</samp>’), or setting its <var>key</var>-<var>value</var>
-equivalent ‘<samp>--fl_fmt=netcdf4</samp>’ produces a <code>NETCDF4</code> file
-(i.e., <acronym>HDF</acronym>).
-Casual users are advised to use the default (netCDF3) <code>CLASSIC</code>
-format until netCDF 3.6 and netCDF 4.0 are more widespread.
-Conversely, operators given the ‘<samp>-3</samp>’ (or ‘<samp>--3</samp>’) switch
-without arguments will (attempt to) produce netCDF3 <code>CLASSIC</code>
-output, even from netCDF4 input files. 
-</p>
-<a name="3to4"></a> <!-- http://nco.sf.net/nco.html#3to4 -->
-<a name="4to3"></a> <!-- http://nco.sf.net/nco.html#4to3 --><p>These examples demonstrate converting a file from any netCDF format
-into any other netCDF format (subject to limits of the format): 
-</p><table><tr><td> </td><td><pre class="example">ncks --fl_fmt=classic in.nc foo_3c.nc # netCDF3 classic
-ncks --fl_fmt=64bit in.nc foo_364.nc # netCDF3 64bit
-ncks --fl_fmt=netcdf4_classic in.nc foo_4c.nc # netCDF4 classic
-ncks --fl_fmt=netcdf4 in.nc foo_4.nc # netCDF4 
-ncks -3 in.nc foo_3c.nc # netCDF3 classic
-ncks --3 in.nc foo_3c.nc # netCDF3 classic
-ncks -4 in.nc foo_4.nc # netCDF4 
-ncks --4 in.nc foo_4.nc # netCDF4 
-ncks --64 in.nc foo364.nc # netCDF3 64bit
-</pre></td></tr></table>
-<p>Of course since most operators support these switches, the
-“conversions” can be done at the output stage of arithmetic
-or metadata processing rather than requiring a separate step.
-Producing (netCDF3) <code>CLASSIC</code> or <code>64BIT</code> files from
-<code>NETCDF4_CLASSIC</code> files will always work. 
-However, producing netCDF3 files from <code>NETCDF4</code> files will only
-work if the output files are not required to contain netCDF4-specific
-features.
-</p>
-<p>Note that <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> are the same
-binary format. 
-The latter simply causes a writing application to fail if it attempts to 
-write a <code>NETCDF4</code> file that cannot be completely read by the
-netCDF3 library. 
-Conversely, <code>NETCDF4_CLASSIC</code> indicates to a reading application
-that all of the file contents are readable with the netCDF3 library. 
-As of October, 2005, <acronym>NCO</acronym> writes no netCDF4-specific data
-structures and so always succeeds at writing <code>NETCDF4_CLASSIC</code>  
-files.
-</p>
-<a name="fmt_inq"></a> <!-- http://nco.sf.net/nco.html#fmt_inq --><p>There are at least three ways to discover the format of a netCDF file,
-i.e., whether it is a classic (32-bit offset) or newer 64-bit offset
-netCDF3 format, or is netCDF4 format. 
-Each method returns the information using slightly different terminology 
-that becomes easier to understand with practice.
-</p>
-<p>First, examine the end of the first line of global metadata output by
-‘<samp>ncks -M</samp>’: 
-<a name="index-netCDF3-classic-file-format"></a>
-<a name="index-netCDF4-classic-file-format"></a>
-<a name="index-netCDF4-file-format"></a>
-<a name="index-32_002dbit-offset-file-format"></a>
-<a name="index-64_002dbit-offset-file-format"></a>
-<a name="index-ncks"></a>
-<a name="index-_002dM"></a>
-</p><table><tr><td> </td><td><pre class="example">% ncks -M foo_3c.nc
-Opened file foo_3c.nc: dimensions = 19, variables = 261, global atts. = 4, 
-  id = 65536, type = NC_FORMAT_CLASSIC 
-% ncks -M foo_364.nc
-Opened file foo_364.nc: dimensions = 19, variables = 261, global atts. = 4, 
-  id = 65536, type = NC_FORMAT_64BIT
-% ncks -M foo_4c.nc
-Opened file foo_4c.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_NETCDF4_CLASSIC
-% ncks -M foo_4.nc
-Opened file foo_4.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_NETCDF4
-</pre></td></tr></table>
-<p>This method requires a netCDF4-enabled <acronym>NCO</acronym> version 3.9.0+
-(i.e., from 2007 or later).
-</p>
-<p>Second, query the file with ‘<samp>ncdump -k</samp>’:
-<a name="index-ncdump"></a>
-</p><table><tr><td> </td><td><pre class="example">% ncdump -k foo_3.nc
-classic
-% ncdump -k foo_364.nc
-64-bit-offset
-% ncdump -k foo_4c.nc
-netCDF-4 classic model
-% ncdump -k foo_4.nc
-netCDF-4
-</pre></td></tr></table>
-<p>This method requires a netCDF4-enabled <acronym>netCDF</acronym> 3.6.2+
-(i.e., from 2007 or later).
-</p>
-<p>The third option uses the POSIX-standard <code>od</code> (octal dump)
-command:   
-<a name="index-od"></a>
-<a name="index-octal-dump"></a>
-</p><table><tr><td> </td><td><pre class="example">% od -An -c -N4 foo_3c.nc
-   C   D   F 001
-% od -An -c -N4 foo_364.nc
-   C   D   F 002
-% od -An -c -N4 foo_4c.nc
- 211   H   D   F
-% od -An -c -N4 foo_4.nc
- 211   H   D   F
-</pre></td></tr></table>
-<p>This option works without <acronym>NCO</acronym> and <code>ncdump</code>.
-Values of ‘<samp>C D F 001</samp>’ and ‘<samp>C D F 002</samp>’ indicate 32-bit
-(classic) and 64-bit netCDF3 formats, respectively, while values of
-‘<samp>211 H D F</samp>’ indicate the newer netCDF4 file format.
-</p>
-<a name="lfs"></a> <!-- http://nco.sf.net/nco.html#lfs --><hr size="6">
-<a name="Large-File-Support"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Selecting-Output-File-Format" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Subsetting-Variables" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Large-File-Support-1"></a>
-<h2 class="section">3.10 Large File Support</h2>
-<a name="index-LFS-1"></a>
-<a name="index-Large-File-Support-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: none<br>
-Long options: none<br>
-</p></td></tr></table>
-<p><acronym>NCO</acronym> has Large File Support (<acronym>LFS</acronym>), meaning that 
-<acronym>NCO</acronym> can write files larger than 2 GB on some 32-bit
-operating systems with netCDF libraries earlier than version 3.6. 
-If desired, LFS support must be configured when both netCDF and
-<acronym>NCO</acronym> are installed.
-netCDF versions 3.6 and higher support 64-bit file addresses as part
-of the netCDF standard.
-We recommend that users ignore LFS support which is difficult to
-configure and is implemented in <acronym>NCO</acronym> only to support netCDF
-versions prior to 3.6.  
-This obviates the need for configuring explicit LFS support in
-applications (such as <acronym>NCO</acronym>) which now support 64-bit files   
-directly through the netCDF interface.
-See <a href="#Selecting-Output-File-Format">Selecting Output File Format</a> for instructions on accessing 
-the different file formats, including 64-bit files, supported by the
-modern netCDF interface. 
-</p>
-<p>If you are still interesting in explicit LFS support for netCDF versions
-prior to 3.6, know that LFS support depends on a complex,
-interlocking set of operating system  
-<a name="DOCF23" href="#FOOT23">(23)</a>
-and netCDF suppport issues.
-The netCDF LFS FAQ at
-<a href="http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html">http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html</a>
-describes the various file size limitations imposed by different
-versions of the netCDF standard.
-<acronym>NCO</acronym> and netCDF automatically attempt to configure LFS at
-build time. 
-</p>
-<a name="var"></a> <!-- http://nco.sf.net/nco.html#var -->
-<a name="xcl"></a> <!-- http://nco.sf.net/nco.html#xcl -->
-<a name="sbs"></a> <!-- http://nco.sf.net/nco.html#sbs --><hr size="6">
-<a name="Subsetting-Variables"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Large-File-Support" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Subsetting-Coordinate-Variables" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Subsetting-Variables-1"></a>
-<h2 class="section">3.11 Subsetting Variables</h2>
-<a name="index-subsetting"></a>
-<a name="index-exclusion"></a>
-<a name="index-extraction"></a>
-<a name="index-_002dv-var"></a>
-<a name="index-_002d_002dvariable-var"></a>
-<a name="index-_002dx"></a>
-<a name="index-_002d_002dexclude"></a>
-<a name="index-_002d_002dxcl"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: (<code>ncap2</code>), <code>ncbo</code>, <code>ncea</code>,
-<code>ncecat</code>, <code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>,
-<code>ncra</code>, <code>ncrcat</code>, <code>ncwa</code><br> 
-Short options: ‘<samp>-v</samp>’, ‘<samp>-x</samp>’<br>
-Long options: ‘<samp>--variable</samp>’, ‘<samp>--exclude</samp>’ or ‘<samp>--xcl</samp>’<br>
-</p></td></tr></table>
-<p>Subsetting variables refers to explicitly specifying variables to be
-included or excluded from operator actions.
-Subsetting is implemented with the ‘<samp>-v <var>var</var>[,…]</samp>’ and
-‘<samp>-x</samp>’ options.  
-A list of variables to extract is specified following the ‘<samp>-v</samp>’ 
-option, e.g., ‘<samp>-v time,lat,lon</samp>’.
-Not using the ‘<samp>-v</samp>’ option is equivalent to specifying all
-variables.  
-The ‘<samp>-x</samp>’ option causes the list of variables specified with
-‘<samp>-v</samp>’ to be <em>excluded</em> rather than <em>extracted</em>.
-Thus ‘<samp>-x</samp>’ saves typing when you only want to extract fewer than
-half of the variables in a file.
-</p>
-<p>Variables explicitly specified for extraction with
-‘<samp>-v <var>var</var>[,…]</samp>’ <em>must</em> be present in the input file 
-or an error will result.
-Variables explicitly specified for <em>exclusion</em> with
-‘<samp>-x -v <var>var</var>[,…]</samp>’ need not be present in the input
-file.
-<a name="index-memory-requirements-1"></a>
-Remember, if averaging or concatenating large files stresses your
-systems memory or disk resources, then the easiest solution is often to
-use the ‘<samp>-v</samp>’ option to retain only the most important variables
-(see section <a href="#Memory-Requirements">Memory Requirements</a>).
-</p>
-<p>Due to its special capabilities, <code>ncap2</code> interprets the
-‘<samp>-v</samp>’ switch differently 
-(see section <a href="#ncap2-netCDF-Arithmetic-Processor"><code>ncap2</code> netCDF Arithmetic Processor</a>). 
-For <code>ncap2</code>, the ‘<samp>-v</samp>’ switch takes no arguments and
-indicates that <em>only</em> user-defined variables should be output. 
-<code>ncap2</code> neither accepts nor understands the <var>-x</var> switch.
-</p>
-<a name="rx"></a> <!-- http://nco.sf.net/nco.html#rx -->
-<a name="wildcarding"></a> <!-- http://nco.sf.net/nco.html#wildcarding --><a name="index-extended-regular-expressions-1"></a>
-<a name="index-regular-expressions-2"></a>
-<a name="index-pattern-matching-1"></a>
-<a name="index-wildcards-1"></a>
-<a name="index-egrep"></a>
-<a name="index-ncatted"></a>
-<a name="index-GNU-1"></a>
-<p>As of <acronym>NCO</acronym> 2.8.1 (August, 2003), variable name arguments
-of the ‘<samp>-v</samp>’ switch may contain <em>extended regular expressions</em>.
-As of <acronym>NCO</acronym> 3.9.6 (January, 2009), variable names arguments 
-to <code>ncatted</code> may contain <em>extended regular expressions</em>. 
-For example, ‘<samp>-v '^DST'</samp>’ selects all variables beginning with the 
-string ‘<samp>DST</samp>’.
-Extended regular expressions are defined by the <acronym>GNU</acronym>
-<code>egrep</code> command.  
-The meta-characters used to express pattern matching operations are
-‘<samp>^$+?.*[]{}|</samp>’. 
-If the regular expression pattern matches <em>any</em> part of a variable 
-name then that variable is selected.
-This capability is called <em>wildcarding</em>, and is very useful for
-sub-setting large data files.
-</p>
-<a name="index-POSIX-1"></a>
-<a name="index-regex"></a>
-<p>Because of its wide availability, <acronym>NCO</acronym> uses the <acronym>POSIX</acronym>  
-regular expression library <code>regex</code>.  
-Regular expressions of arbitary complexity may be used.
-Since netCDF variable names are relatively simple constructs, only a 
-few varieties of variable wildcards are likely to be useful.
-For convenience, we define the most useful pattern matching operators
-here: 
-<a name="index-_002e-_0028wildcard-character_0029"></a>
-<a name="index-_0024-_0028wildcard-character_0029"></a>
-<a name="index-_005e-_0028wildcard-character_0029"></a>
-<a name="index-_003f-_0028filename-expansion_0029"></a>
-<a name="index-_002a-_0028filename-expansion_0029"></a>
-</p><dl compact="compact">
-<dt> ‘<samp>^</samp>’</dt>
-<dd><p>Matches the beginning of a string
-</p></dd>
-<dt> ‘<samp>$</samp>’</dt>
-<dd><p>Matches the end of a string
-</p></dd>
-<dt> ‘<samp>.</samp>’</dt>
-<dd><p>Matches any single character
-</p></dd>
-</dl>
-<p>The most useful repetition and combination operators are
-<a name="index-_003f-_0028wildcard-character_0029"></a>
-<a name="index-_002a-_0028wildcard-character_0029"></a>
-<a name="index-_002b-_0028wildcard-character_0029"></a>
-<a name="index-_007c-_0028wildcard-character_0029"></a>
-</p><dl compact="compact">
-<dt> ‘<samp>?</samp>’</dt>
-<dd><p>The preceding regular expression is optional and matched at most once
-</p></dd>
-<dt> ‘<samp>*</samp>’</dt>
-<dd><p>The preceding regular expression will be matched zero or more times
-</p></dd>
-<dt> ‘<samp>+</samp>’</dt>
-<dd><p>The preceding regular expression will be matched one or more times
-</p></dd>
-<dt> ‘<samp>|</samp>’</dt>
-<dd><p>The preceding regular expression will be joined to the following regular
-expression.
-The resulting regular expression matches any string matching either
-subexpression. 
-</p></dd>
-</dl>
-
-<p>To illustrate the use of these operators in extracting variables,
-consider a file with variables <code>Q</code>, <code>Q01</code>–<code>Q99</code>,
-<code>Q100</code>, <code>QAA</code>–<code>QZZ</code>, <code>Q_H2O</code>, <code>X_H2O</code>,
-<code>Q_CO2</code>, <code>X_CO2</code>.  
-</p><table><tr><td> </td><td><pre class="example">ncks -v 'Q.?' in.nc              # Variables that contain Q
-ncks -v '^Q.?' in.nc             # Variables that start with Q
-ncks -v '^Q+.?.' in.nc           # Q, Q0--Q9, Q01--Q99, QAA--QZZ, etc.
-ncks -v '^Q..' in.nc             # Q01--Q99, QAA--QZZ, etc.
-ncks -v '^Q[0-9][0-9]' in.nc     # Q01--Q99, Q100
-ncks -v '^Q[[:digit:]]{2}' in.nc # Q01--Q99
-ncks -v 'H2O$' in.nc             # Q_H2O, X_H2O 
-ncks -v 'H2O$|CO2$' in.nc        # Q_H2O, X_H2O, Q_CO2, X_CO2 
-ncks -v '^Q[0-9][0-9]$' in.nc    # Q01--Q99
-ncks -v '^Q[0-6][0-9]|7[0-3]' in.nc # Q01--Q73, Q100
-ncks -v '(Q[0-6][0-9]|7[0-3])$' in.nc # Q01--Q73
-ncks -v '^[a-z]_[a-z]{3}$' in.nc # Q_H2O, X_H2O, Q_CO2, X_CO2
-</pre></td></tr></table>
-<p>Beware—two of the most frequently used repetition pattern matching
-operators, ‘<samp>*</samp>’ and ‘<samp>?</samp>’, are also valid pattern matching
-operators for filename expansion (globbing) at the shell-level.
-Confusingly, their meanings in extended regular expressions and in
-shell-level filename expansion are significantly different.
-In an extended regular expression, ‘<samp>*</samp>’ matches zero or more
-occurences of the preceding regular expression. 
-Thus ‘<samp>Q*</samp>’ selects all variables, and ‘<samp>Q+.*</samp>’ selects all
-variables containing ‘<samp>Q</samp>’ (the ‘<samp>+</samp>’ ensures the preceding item 
-matches at least once).
-To match zero or one occurence of the preceding regular expression,   
-use ‘<samp>?</samp>’.
-Documentation for the <acronym>UNIX</acronym> <code>egrep</code> command details the
-extended regular expressions which <acronym>NCO</acronym> supports.
-</p>
-<a name="index-globbing-2"></a>
-<a name="index-shell-1"></a>
-<a name="index-bash"></a>
-<a name="index-csh"></a>
-<a name="index-quotes"></a>
-<p>One must be careful to protect any special characters in the regular
-expression specification from being interpreted (globbed) by the shell.
-This is accomplish by enclosing special characters within single or
-double quotes
-</p><table><tr><td> </td><td><pre class="example">ncra -v Q?? in.nc out.nc   # Error: Shell attempts to glob wildcards
-ncra -v '^Q+..' in.nc out.nc # Correct: NCO interprets wildcards
-ncra -v '^Q+..' in*.nc out.nc # Correct: NCO interprets, Shell globs 
-</pre></td></tr></table>
-<p>The final example shows that commands may use a combination of variable
-wildcarding and shell filename expansion (globbing).
-For globbing, ‘<samp>*</samp>’ and ‘<samp>?</samp>’ <em>have nothing to do</em> with the 
-preceding regular expression!
-In shell-level filename expansion, ‘<samp>*</samp>’ matches any string,
-including the null string and ‘<samp>?</samp>’ matches any single character. 
-Documentation for <code>bash</code> and <code>csh</code> describe the rules of
-filename expansion (globbing).
-</p>
-<a name="crd"></a> <!-- http://nco.sf.net/nco.html#crd -->
-<a name="-C"></a> <!-- http://nco.sf.net/nco.html#-C -->
-<a name="-c"></a> <!-- http://nco.sf.net/nco.html#-c --><hr size="6">
-<a name="Subsetting-Coordinate-Variables"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Subsetting-Variables" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#C-and-Fortran-Index-Conventions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Subsetting-Coordinate-Variables-1"></a>
-<h2 class="section">3.12 Subsetting Coordinate Variables</h2>
-<a name="index-subsetting-1"></a>
-<a name="index-_002dC"></a>
-<a name="index-_002dc"></a>
-<a name="index-_002d_002dno_002dcoords"></a>
-<a name="index-_002d_002dno_002dcrd"></a>
-<a name="index-_002d_002dcoords"></a>
-<a name="index-_002d_002dcrd"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncecat</code>, <code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>,
-<code>ncra</code>, <code>ncrcat</code>, <code>ncwa</code><br> 
-Short options: ‘<samp>-C</samp>’, ‘<samp>-c</samp>’<br>
-Long options: ‘<samp>--no-coords</samp>’, ‘<samp>--no-crd</samp>’, ‘<samp>--crd</samp>’, ‘<samp>--coords</samp>’<br>
-</p></td></tr></table>
-<p>By default, coordinates variables associated with any variable appearing
-in the <var>input-file</var> will be placed in the <var>output-file</var>, even
-if they are not explicitly specified, e.g., with the ‘<samp>-v</samp>’ switch.
-Thus variables with a latitude coordinate <code>lat</code> always carry the
-values of <code>lat</code> with them into the <var>output-file</var>.
-This feature can be disabled with ‘<samp>-C</samp>’, which causes <acronym>NCO</acronym>
-to not automatically add coordinates to the variables appearing in the
-<var>output-file</var>. 
-However, using ‘<samp>-C</samp>’ does not preclude the user from including some
-coordinates in the output files simply by explicitly selecting the
-coordinates with the <var>-v</var> option.
-The ‘<samp>-c</samp>’ option, on the other hand, is a shorthand way of
-automatically specifying that <em>all</em> coordinate variables in the
-<var>input-files</var> should appear in the <var>output-file</var>.
-Thus ‘<samp>-c</samp>’ allows the user to select all the coordinate variables
-without having to know their names.
-<a name="index-CF-conventions"></a>
-As of <acronym>NCO</acronym> version 3.9.6 (January, 2009) 
-both ‘<samp>-c</samp>’ and ‘<samp>-C</samp>’ honor the <acronym>CF</acronym> <code>coordinates</code>
-convention described in <a href="#CF-Conventions"><acronym>CF</acronym> Conventions</a>.
-As of <acronym>NCO</acronym> version 4.0.8 (April, 2011) 
-both ‘<samp>-c</samp>’ and ‘<samp>-C</samp>’ honor the <acronym>CF</acronym> <code>bounds</code>
-convention described in <a href="#CF-Conventions"><acronym>CF</acronym> Conventions</a>. 
-</p>
-<a name="ftn"></a> <!-- http://nco.sf.net/nco.html#ftn -->
-<a name="-F"></a> <!-- http://nco.sf.net/nco.html#-F --><hr size="6">
-<a name="C-and-Fortran-Index-Conventions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Subsetting-Coordinate-Variables" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Hyperslabs" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="C-and-Fortran-Index-conventions"></a>
-<h2 class="section">3.13 C and Fortran Index conventions</h2>
-<a name="index-index-convention"></a>
-<a name="index-Fortran-index-convention"></a>
-<a name="index-C-index-convention"></a>
-<a name="index-_002dF"></a>
-<a name="index-_002d_002dfortran"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>, <code>ncra</code>,
-<code>ncrcat</code>, <code>ncwa</code><br> 
-Short options: ‘<samp>-F</samp>’<br>
-Long options: ‘<samp>--fortran</samp>’<br>
-</p></td></tr></table>
-<a name="index-I_002fO-1"></a>
-<p>The ‘<samp>-F</samp>’ switch changes <acronym>NCO</acronym> to read and write with
-the Fortran index convention. 
-By default, <acronym>NCO</acronym> uses C-style (0-based) indices for all I/O. 
-In C, indices count from 0 (rather than 1), and
-dimensions are ordered from slowest (inner-most) to fastest
-(outer-most) varying.
-In Fortran, indices count from 1 (rather than 0), and
-dimensions are ordered from fastest (inner-most) to slowest 
-(outer-most) varying.  
-<a name="index-transpose"></a>
-Hence C and Fortran data storage conventions represent mathematical
-transposes of eachother.
-<a name="index-record-variable"></a>
-Note that record variables contain the record dimension as the most
-slowly varying dimension.  
-See <a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a> for techniques
-to re-order (including transpose) dimensions and to reverse data
-storage order.
-</p>
-<a name="index-record-dimension-1"></a>
-<p>Consider a file ‘<tt>85.nc</tt>’ containing 12 months of data in the
-record dimension <code>time</code>.
-The following hyperslab operations produce identical results, a
-June-July-August average of the data:
-</p><table><tr><td> </td><td><pre class="example">ncra -d time,5,7 85.nc 85_JJA.nc
-ncra -F -d time,6,8 85.nc 85_JJA.nc
-</pre></td></tr></table>
-
-<p>Printing variable <var>three_dmn_var</var> in file ‘<tt>in.nc</tt>’ first with
-the C indexing convention, then with Fortran indexing convention
-results in the following output formats: 
-</p><table><tr><td> </td><td><pre class="example">% ncks -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=1000 lon[0]=-180 three_dmn_var[0]=0 
-...
-% ncks -F -v three_dmn_var in.nc
-lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0 
-...
-</pre></td></tr></table>
-
-<a name="-d"></a> <!-- http://nco.sf.net/nco.html#-d -->
-<a name="dmn"></a> <!-- http://nco.sf.net/nco.html#dmn -->
-<a name="hyp"></a> <!-- http://nco.sf.net/nco.html#hyp --><hr size="6">
-<a name="Hyperslabs"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#C-and-Fortran-Index-Conventions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Stride" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Hyperslabs-1"></a>
-<h2 class="section">3.14 Hyperslabs</h2>
-<a name="index-hyperslab"></a>
-<a name="index-dimension-limits"></a>
-<a name="index-coordinate-limits"></a>
-<a name="index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d"></a>
-<a name="index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d"></a>
-<a name="index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>, <code>ncra</code>,
-<code>ncrcat</code>, <code>ncwa</code><br> 
-Short options: ‘<samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-Long options: 
-‘<samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’,<br> 
-‘<samp>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-</p></td></tr></table>
-<p>A <em>hyperslab</em> is a subset of a variable’s data.
-The coordinates of a hyperslab are specified with the 
-<code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code> short
-option (or with the same arguments to the ‘<samp>--dimension</samp>’ or
-‘<samp>--dmn</samp>’ long options).   
-At least one hyperslab argument (<var>min</var>, <var>max</var>, or <var>stride</var>)
-must be present. 
-The bounds of the hyperslab to be extracted are specified by the
-associated <var>min</var> and <var>max</var> values. 
-A half-open range is specified by omitting either the <var>min</var> or
-<var>max</var> parameter.
-The separating comma must be present to indicate the omission of one of
-these arguments.
-The unspecified limit is interpreted as the maximum or minimum value in 
-the unspecified direction.  
-A cross-section at a specific coordinate is extracted by specifying only
-the <var>min</var> limit and omitting a trailing comma. 
-Dimensions not mentioned are passed with no reduction in range.
-The dimensionality of variables is not reduced (in the case of a
-cross-section, the size of the constant dimension will be one). 
-If values of a coordinate-variable are used to specify a range or
-cross-section, then the coordinate variable must be monotonic (values
-either increasing or decreasing). 
-In this case, command-line values need not exactly match coordinate
-values for the specified dimension. 
-Ranges are determined by seeking the first coordinate value to occur in
-the closed range [<var>min</var>,<var>max</var>] and including all subsequent
-values until one falls outside the range. 
-The coordinate value for a cross-section is the coordinate-variable
-value closest to the specified value and must lie within the range or
-coordinate-variable values. 
-</p>
-<a name="index-stride"></a>
-<p>Coordinate values should be specified using real notation with a decimal 
-point required in the value, whereas dimension indices are specified
-using integer notation without a decimal point. 
-This convention serves only to differentiate coordinate values from
-dimension indices.
-It is independent of the type of any netCDF coordinate variables.
-For a given dimension, the specified limits must both be coordinate
-values (with decimal points) or dimension indices (no decimal points).
-The <var>stride</var> option, if any, must be a dimension index, not a
-coordinate value.
-See section <a href="#Stride">Stride</a>, for more information on the <var>stride</var> option.
-</p>
-<a name="index-NC_005fBYTE"></a>
-<a name="index-NC_005fCHAR"></a>
-<p>User-specified coordinate limits are promoted to double precision values 
-while searching for the indices which bracket the range. 
-Thus, hyperslabs on coordinates of type <code>NC_BYTE</code> and
-<code>NC_CHAR</code> are computed numerically rather than lexically, so the
-results are unpredictable. 
-</p>
-<a name="index-wrapped-coordinates"></a>
-<p>The relative magnitude of <var>min</var> and <var>max</var> indicate to the
-operator whether to expect a <em>wrapped coordinate</em>
-(see section <a href="#Wrapped-Coordinates">Wrapped Coordinates</a>), such as longitude.
-If <em><var>min</var> > <var>max</var></em>, the <acronym>NCO</acronym> expects the
-coordinate to be wrapped, and a warning message will be printed.
-When this occurs, <acronym>NCO</acronym> selects all values outside the domain
-[<em><var>max</var> < <var>min</var></em>], i.e., all the values exclusive of the
-values which would have been selected if <var>min</var> and <var>max</var> were
-swapped. 
-If this seems confusing, test your command on just the coordinate
-variables with <code>ncks</code>, and then examine the output to ensure
-<acronym>NCO</acronym> selected the hyperslab you expected (coordinate wrapping
-is currently only supported by <code>ncks</code>). 
-</p>
-<p>Because of the way wrapped coordinates are interpreted, it is very
-important to make sure you always specify hyperslabs in the
-monotonically increasing sense, i.e., <em><var>min</var> < <var>max</var></em>
-(even if the underlying coordinate variable is monotonically
-decreasing). 
-The only exception to this is when you are indeed specifying a wrapped
-coordinate.  
-The distinction is crucial to understand because the points selected by, 
-e.g., <code>-d longitude,50.,340.</code>, are exactly the complement of the
-points selected by <code>-d longitude,340.,50.</code>.
-</p>
-<p>Not specifying any hyperslab option is equivalent to specifying full
-ranges of all dimensions. 
-This option may be specified more than once in a single command 
-(each hyperslabbed dimension requires its own <code>-d</code> option).
-</p>
-<a name="srd"></a> <!-- http://nco.sf.net/nco.html#srd -->
-<a name="stride"></a> <!-- http://nco.sf.net/nco.html#stride --><hr size="6">
-<a name="Stride"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Hyperslabs" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Multislabs" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Stride-1"></a>
-<h2 class="section">3.15 Stride</h2>
-<a name="index-stride-1"></a>
-<a name="index-_002dd-dim_002c_005bmin_005d_002c_005bmax_005d_002cstride"></a>
-<a name="index-_002d_002ddimension-dim_002c_005bmin_005d_002c_005bmax_005d_002cstride"></a>
-<a name="index-_002d_002ddmn-dim_002c_005bmin_005d_002c_005bmax_005d_002cstride"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>, <code>ncra</code>,
-<code>ncrcat</code>, <code>ncwa</code><br> 
-Short options: ‘<samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-Long options: 
-‘<samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’,<br> 
-‘<samp>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-</p></td></tr></table>
-<p>All data operators support specifying a <em>stride</em> for any and all
-dimensions at the same time.
-The <var>stride</var> is the spacing between consecutive points in a
-hyperslab. 
-A <var>stride</var> of 1 picks all the elements of the hyperslab, and
-a <var>stride</var> of 2 skips every other element, etc..
-<code>ncks</code> multislabs support strides, and are more powerful than
-the regular hyperslabs supported by the other operators
-(see section <a href="#Multislabs">Multislabs</a>).
-Using the <var>stride</var> option for the record dimension with
-<code>ncra</code> and <code>ncrcat</code> makes it possible, for instance, to
-average or concatenate regular intervals across multi-file input data sets.
-</p>
-<p>The <var>stride</var> is specified as the optional fourth argument to the
-‘<samp>-d</samp>’ hyperslab specification:  
-<code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code>.
-Specify <var>stride</var> as an integer (i.e., no decimal point) following
-the third comma in the ‘<samp>-d</samp>’ argument.  
-There is no default value for <var>stride</var>. 
-Thus using ‘<samp>-d time,,,2</samp>’ is valid but ‘<samp>-d time,,,2.0</samp>’ and
-‘<samp>-d time,,,</samp>’ are not.
-When <var>stride</var> is specified but <var>min</var> is not, there is an
-ambiguity as to whether the extracted hyperslab should begin with (using
-C-style, 0-based indexes) element 0 or element ‘<samp>stride-1</samp>’.
-<acronym>NCO</acronym> must resolve this ambiguity and it chooses element 0
-as the first element of the hyperslab when <var>min</var> is not specified.
-Thus ‘<samp>-d time,,,<var>stride</var></samp>’ is syntactically equivalent to
-‘<samp>-d time,0,,<var>stride</var></samp>’.
-This means, for example, that specifying the operation 
-‘<samp>-d time,,,2</samp>’ on the array ‘<samp>1,2,3,4,5</samp>’ selects the hyperslab
-‘<samp>1,3,5</samp>’. 
-To obtain the hyperslab ‘<samp>2,4</samp>’ instead, simply explicitly specify
-the starting index as 1, i.e., ‘<samp>-d time,1,,2</samp>’. 
-</p>
-<p>For example, consider a file ‘<tt>8501_8912.nc</tt>’ which contains 60
-consecutive months of data. 
-Say you wish to obtain just the March data from this file.
-Using 0-based subscripts (see section <a href="#C-and-Fortran-Index-Conventions">C and Fortran Index conventions</a>) these 
-data are stored in records 2, 14, … 50 so the desired
-<var>stride</var> is 12.
-Without the <var>stride</var> option, the procedure is very awkward.
-One could use <code>ncks</code> five times and then use <code>ncrcat</code> to  
-concatenate the resulting files together:
-<a name="index-Bourne-Shell"></a>
-<a name="index-C-Shell"></a>
-</p><table><tr><td> </td><td><pre class="example">for idx in 02 14 26 38 50; do # Bourne Shell
-  ncks -d time,${idx} 8501_8912.nc foo.${idx}
-done
-foreach idx (02 14 26 38 50) # C Shell
-  ncks -d time,${idx} 8501_8912.nc foo.${idx}
-end
-ncrcat foo.?? 8589_03.nc
-rm foo.??
-</pre></td></tr></table>
-<p>With the <var>stride</var> option, <code>ncks</code> performs this hyperslab
-extraction in one operation:
-</p><table><tr><td> </td><td><pre class="example">ncks -d time,2,,12 8501_8912.nc 8589_03.nc
-</pre></td></tr></table>
-<p>See section <a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a>, for more information on <code>ncks</code>.
-</p>
-<p>Applying the <var>stride</var> option to the record dimension in
-<code>ncra</code> and <code>ncrcat</code> makes it possible, for instance, to
-average or concatenate regular intervals across multi-file input data
-sets. 
-</p><table><tr><td> </td><td><pre class="example">ncra -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8589_03.nc
-ncrcat -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8503_8903.nc
-</pre></td></tr></table>
-
-<a name="msa"></a> <!-- http://nco.sf.net/nco.html#msa -->
-<a name="mlt"></a> <!-- http://nco.sf.net/nco.html#mlt --><hr size="6">
-<a name="Multislabs"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Stride" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Wrapped-Coordinates" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Multislabs-1"></a>
-<h2 class="section">3.16 Multislabs</h2>
-<a name="index-multislab"></a>
-<a name="index-multi_002dhyperslab"></a>
-<a name="index-MSA"></a>
-<a name="index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-1"></a>
-<a name="index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-1"></a>
-<a name="index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>, <code>ncra</code>,
-<code>ncrcat</code><br> 
-Short options: ‘<samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-Long options: 
-‘<samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’,<br> 
-‘<samp>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-</p></td></tr></table>
-<p>A multislab is a union of one or more hyperslabs.
-One defines multislabs by chaining together hyperslab commands, i.e., 
-<kbd>-d</kbd> options (see section <a href="#Hyperslabs">Hyperslabs</a>).
-Support for specifying a <em>multi-hyperslab</em> or <em>multislab</em> for
-any variable was first added to <code>ncks</code> in late 2002.
-The other operators received <acronym>MSA</acronym> capabilities in April 2008.
-Sometimes multi-slabbing is referred to by the acronym <acronym>MSA</acronym>,
-which stands for “Multi-Slabbing Algorithm”.
-</p>
-<p>Multislabs overcome some restraints that limit hyperslabs.
-A single <kbd>-d</kbd> option can only specify a contiguous and/or
-a regularly spaced multi-dimensional data array.
-Multislabs are constructed from multiple <kbd>-d</kbd> options and may
-therefore have non-regularly spaced arrays.
-For example, suppose it is desired to operate on all longitudes
-from 10.0 to 20.0 and from 80.0 to 90.0 degrees.
-The combined range of longitudes is not selectable in a single 
-hyperslab specfication of the form 
-‘<samp>-d <var>dimension</var>,<var>min</var>,<var>max</var></samp>’ or  
-‘<samp>-d <var>dimension</var>,<var>min</var>,<var>max</var>,<var>stride</var></samp>’ because its
-elements are irregularly spaced in coordinate space (and presumably 
-in index space too). 
-The multislab specification for obtaining these values is simply
-the union of the hyperslabs specifications that comprise the multislab,
-i.e., 
-</p><table><tr><td> </td><td><pre class="example">ncks -d lon,10.,20. -d lon,80.,90. in.nc out.nc
-ncks -d lon,10.,15. -d lon,15.,20. -d lon,80.,90. in.nc out.nc
-</pre></td></tr></table>
-<p>Any number of hyperslabs specifications may be chained together
-to specify the multislab.
-</p>
-<a name="index-stride-2"></a>
-<p>Users may specify redundant ranges of indices in a multislab, e.g., 
-</p><table><tr><td> </td><td><pre class="example">ncks -d lon,0,4 -d lon,2,9,2 in.nc out.nc
-</pre></td></tr></table>
-<p>This command retrieves the first five longitudes, and then every other
-longitude value up to the tenth.
-Elements 0, 2, and 4 are specified by both hyperslab arguments (hence
-this is redundant) but will count only once if an arithmetic operation
-is being performed.  
-This example uses index-based (not coordinate-based) multislabs because
-the <var>stride</var> option only supports index-based hyper-slabbing. 
-See section <a href="#Stride">Stride</a>, for more information on the <var>stride</var> option.
-</p>
-<p>Multislabs are more efficient than the alternative of sequentially
-performing hyperslab operations and concatenating the results.
-<a name="index-I_002fO-2"></a>
-This is because <acronym>NCO</acronym> employs a novel multislab algorithm to
-minimize the number of I/O operations when retrieving irregularly spaced
-data from disk.
-The <acronym>NCO</acronym> multislab algorithm retrieves each element from disk
-once and only once.
-Thus users may take some shortcuts in specifying multislabs and the
-algorithm will obtain the intended values.
-Specifying redundant ranges is not encouraged, but may be useful on
-occasion and will not result in unintended consequences.
-</p>
-<p>A final example shows the real power of multislabs.
-Suppose the <var>Q</var> variable contains three dimensional arrays of
-distinct chemical constituents in no particular order.
-We are interested in the NOy species in a certain geographic range. 
-Say that NO, NO2, and N2O5 are elements 0, 1, and 5 of the
-<var>species</var> dimension of <var>Q</var>.
-The multislab specification might look something like
-</p><table><tr><td> </td><td><pre class="example">ncks -d species,0,1 -d species,5 -d lon,0,4 -d lon,2,9,2 in.nc out.nc
-</pre></td></tr></table>
-<p>Multislabs are powerful because they may be specified for every
-dimension at the same time.
-Thus multislabs obsolete the need to execute multiple <code>ncks</code>
-commands to gather the desired range of data.
-</p>
-<a name="wrp"></a> <!-- http://nco.sf.net/nco.html#wrp --><hr size="6">
-<a name="Wrapped-Coordinates"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Multislabs" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Auxiliary-Coordinates" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Wrapped-Coordinates-1"></a>
-<h2 class="section">3.17 Wrapped Coordinates</h2>
-<a name="index-wrapped-coordinates-1"></a>
-<a name="index-longitude"></a>
-<a name="index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-2"></a>
-<a name="index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-2"></a>
-<a name="index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-2"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncks</code><br>
-Short options: ‘<samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-Long options: 
-‘<samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’,<br> 
-‘<samp>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-</p></td></tr></table>
-<p>A <em>wrapped coordinate</em> is a coordinate whose values increase or
-decrease monotonically (nothing unusual so far), but which represents a
-dimension that ends where it begins (i.e., wraps around on itself).
-Longitude (i.e., degrees on a circle) is a familiar example of a wrapped
-coordinate.
-Longitude increases to the East of Greenwich, England, where it is
-defined to be zero.
-Halfway around the globe, the longitude is 180 degrees East (or West). 
-Continuing eastward, longitude increases to 360 degrees East at
-Greenwich. 
-The longitude values of most geophysical data are either in the range
-[0,360), or [-180,180).
-In either case, the Westernmost and Easternmost longitudes are
-numerically separated by 360 degrees, but represent contiguous
-regions on the globe.
-For example, the Saharan desert stretches from roughly 340 to 
-50 degrees East.
-Extracting the hyperslab of data representing the Sahara from a global
-dataset presents special problems when the global dataset is stored
-consecutively in longitude from 0 to 360 degrees.
-This is because the data for the Sahara will not be contiguous in the
-<var>input-file</var> but is expected by the user to be contiguous in the
-<var>output-file</var>. 
-In this case, <code>ncks</code> must invoke special software routines to
-assemble the desired output hyperslab from multiple reads of the
-<var>input-file</var>. 
-</p>
-<p>Assume the domain of the monotonically increasing longitude coordinate
-<code>lon</code> is <em>0 < <var>lon</var> < 360</em>. 
-<code>ncks</code> will extract a hyperslab which crosses the Greenwich
-meridian simply by specifying the westernmost longitude as <var>min</var> and
-the easternmost longitude as <var>max</var>.
-The following commands extract a hyperslab containing the Saharan desert:
-</p><table><tr><td> </td><td><pre class="example">ncks -d lon,340.,50. in.nc out.nc
-ncks -d lon,340.,50. -d lat,10.,35. in.nc out.nc
-</pre></td></tr></table>
-<p>The first example selects data in the same longitude range as the Sahara. 
-The second example further constrains the data to having the same
-latitude as the Sahara.
-The coordinate <code>lon</code> in the <var>output-file</var>, ‘<tt>out.nc</tt>’, will
-no longer be monotonic! 
-The values of <code>lon</code> will be, e.g., ‘<samp>340, 350, 0, 10, 20, 30,
-40, 50</samp>’. 
-This can have serious implications should you run ‘<tt>out.nc</tt>’ through
-another operation which expects the <code>lon</code> coordinate to be
-monotonically increasing.
-Fortunately, the chances of this happening are slim, since <code>lon</code>
-has already been hyperslabbed, there should be no reason to hyperslab
-<code>lon</code> again.
-Should you need to hyperslab <code>lon</code> again, be sure to give
-dimensional indices as the hyperslab arguments, rather than coordinate
-values (see section <a href="#Hyperslabs">Hyperslabs</a>).
-</p>
-<a name="aux"></a> <!-- http://nco.sf.net/nco.html#aux -->
-<a name="auxiliary"></a> <!-- http://nco.sf.net/nco.html#auxiliary -->
-<a name="-X"></a> <!-- http://nco.sf.net/nco.html#-X -->
-<a name="std_nm"></a> <!-- http://nco.sf.net/nco.html#std_nm -->
-<a name="standard_name"></a> <!-- http://nco.sf.net/nco.html#standard_name --><hr size="6">
-<a name="Auxiliary-Coordinates"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Wrapped-Coordinates" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#UDUnits-Support" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Auxiliary-Coordinates-1"></a>
-<h2 class="section">3.18 Auxiliary Coordinates</h2>
-<a name="index-_002dX"></a>
-<a name="index-_002d_002dauxiliary"></a>
-<a name="index-standard_005fname"></a>
-<a name="index-coordinates"></a>
-<a name="index-CF-conventions-1"></a>
-<a name="index-_002dX-lon_005fmin_002clon_005fmax_002clat_005fmin_002clat_005fmax"></a>
-<a name="index-_002d_002dauxiliary-lon_005fmin_002clon_005fmax_002clat_005fmin_002clat_005fmax"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>, <code>ncra</code>,
-<code>ncrcat</code><br> 
-Short options: ‘<samp>-X <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></samp>’<br>
-Long options: 
-‘<samp>--auxiliary <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></samp>’<br>
-</p></td></tr></table>
-<p>Utilize auxiliary coordinates specified in values of the coordinate
-variable’s <code>standard_name</code> attributes, if any, when interpreting 
-hyperslab and multi-slab options. 
-Also ‘<samp>--auxiliary</samp>’.
-This switch supports hyperslabbing cell-based grids over coordinate
-ranges. 
-This works on datasets that associate coordinate variables to
-grid-mappings using the <acronym>CF</acronym>-convention (see section <a href="#CF-Conventions"><acronym>CF</acronym> Conventions</a>)   
-<code>coordinates</code> and <code>standard_name</code> attributes described 
-<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system">here</a>. 
-Currently, <acronym>NCO</acronym> understands auxiliary coordinate variables 
-pointed to by the <code>standard_name</code> attributes for <var>latitude</var> and 
-<var>longitude</var>.   
-Cells that contain a value within the user-specified range 
-[<var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var>] are
-included in the output hyperslab.  
-</p>
-<a name="index-cell_002dbased-grids"></a>
-<p>A cell-based grid collapses the horizontal spatial information 
-(latitude and longitude) and stores it along a one-dimensional
-coordinate that has a one-to-one mapping to both latitude and longitude
-coordinates. 
-Rectangular (in longitude and latitude) horizontal hyperslabs cannot
-be selected using the typical procedure (see section <a href="#Hyperslabs">Hyperslabs</a>) of
-separately specifying ‘<samp>-d</samp>’ arguments for longitude and latitude.
-Instead, when the ‘<samp>-X</samp>’ is used, <acronym>NCO</acronym> learns the names of
-the latitude and longitude coordinates by searching the
-<code>standard_name</code> attribute of all variables until it finds
-the two variables whose <code>standard_name</code>’s are “latitude” and 
-“longitude”, respectively. 
-This <code>standard_name</code> attribute for latitude and longitude
-coordinates follows the <acronym>CF</acronym>-convention  
-(see section <a href="#CF-Conventions"><acronym>CF</acronym> Conventions</a>). 
-</p>
-<p>Putting it all together, consider a variable <var>gds_3dvar</var> output from 
-simulations on a cell-based geodesic grid. 
-Although the variable contains three dimensions of data (time, latitude,
-and longitude), it is stored in the netCDF file with only two dimensions,
-<code>time</code> and <code>gds_crd</code>.  
-</p><table><tr><td> </td><td><pre class="example">% ncks -m -C -v gds_3dvar ~/nco/data/in.nc
-gds_3dvar: type NC_FLOAT, 2 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 41
-gds_3dvar RAM size is 10*8*sizeof(NC_FLOAT) = 80*4 = 320 bytes
-gds_3dvar dimension 0: time, size = 10 NC_DOUBLE, dim. ID = 20 (CRD)(REC)
-gds_3dvar dimension 1: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-gds_3dvar attribute 0: long_name, size = 17 NC_CHAR, value = Geodesic variable
-gds_3dvar attribute 1: units, size = 5 NC_CHAR, value = meter
-gds_3dvar attribute 2: coordinates, size = 15 NC_CHAR, value = lat_gds lon_gds
-gds_3dvar attribute 3: purpose, size = 64 NC_CHAR, value = Test auxiliary coordinates like those that define geodesic grids
-</pre></td></tr></table>
-<p>The <code>coordinates</code> attribute lists the names of the latitude and
-longitude coordinates, <code>lat_gds</code> and <code>lon_gds</code>, respectively. 
-The <code>coordinates</code> attribute is recommended though optional.
-With it, the user can immediately identify which variables contain
-the latitude and longitude coordinates.
-Without a <code>coordinates</code> attribute it would be unclear at first
-glance whether a variable resides on a cell-based grid.
-In this example, <code>time</code> is a normal record dimension and
-<code>gds_crd</code> is the cell-based dimension.
-</p>
-<p>The cell-based grid file must contain two variables whose
-<code>standard_name</code> attributes are “latitude”, and “longitude”:
-</p><table><tr><td> </td><td><pre class="example">% ncks -m -C -v lat_gds,lon_gds ~/nco/data/in.nc
-lat_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 37
-lat_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-lat_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-lat_gds attribute 0: long_name, size = 8 NC_CHAR, value = Latitude
-lat_gds attribute 1: standard_name, size = 8 NC_CHAR, value = latitude
-lat_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-lat_gds attribute 3: purpose, size = 62 NC_CHAR, value = 1-D latitude coordinate referred to by geodesic grid variables
-
-lon_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 38
-lon_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-lon_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-lon_gds attribute 0: long_name, size = 9 NC_CHAR, value = Longitude
-lon_gds attribute 1: standard_name, size = 9 NC_CHAR, value = longitude
-lon_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-lon_gds attribute 3: purpose, size = 63 NC_CHAR, value = 1-D longitude coordinate referred to by geodesic grid variables
-</pre></td></tr></table>
-<p>In this example <code>lat_gds</code> and <code>lon_gds</code> represent the 
-latitude or longitude, respectively, of cell-based variables.
-These coordinates (must) have the same single dimension (<code>gds_crd</code>,
-in this case) as the cell-based variables.
-And the coordinates must be one-dimensional—multidimensional
-coordinates will not work.
-</p>
-<p>This infrastructure allows <acronym>NCO</acronym> to identify, interpret, and
-process (e.g., hyperslab) the variables on cell-based grids as easily
-as it works with regular grids.
-To time-average all the values between zero and 180 degrees
-longitude and between plus and minus 30 degress latitude, we use
-</p><table><tr><td> </td><td><pre class="example">ncra -O -X 0.,180.,-30.,30. -v gds_3dvar in.nc out.nc
-</pre></td></tr></table>
-<p><acronym>NCO</acronym> accepts multiple ‘<samp>-X</samp>’ arguments for cell-based grid
-multi-slabs, just as it accepts multiple ‘<samp>-d</samp>’ arguments for 
-multi-slabs of regular coordinates.
-</p><table><tr><td> </td><td><pre class="example">ncra -O -X 0.,180.,-30.,30. -X 270.,315.,45.,90. in.nc out.nc
-</pre></td></tr></table>
-<p>The arguments to ‘<samp>-X</samp>’ are always interpreted as floating point
-numbers, i.e., as coordinate values rather than dimension indices
-so that these two commands produce identical results
-</p><table><tr><td> </td><td><pre class="example">ncra -X 0.,180.,-30.,30. in.nc out.nc
-ncra -X 0,180,-30,30 in.nc out.nc
-</pre></td></tr></table>
-<p>In contrast, arguments to ‘<samp>-d</samp>’ require decimal places to be
-recognized as coordinates not indices (see section <a href="#Hyperslabs">Hyperslabs</a>).  
-We recommend always using decimal points with ‘<samp>-X</samp>’ arguments
-to avoid confusion.
-</p>
-<a name="UDUnits"></a> <!-- http://nco.sf.net/nco.html#UDUnits -->
-<a name="UDUnits2"></a> <!-- http://nco.sf.net/nco.html#UDUnits2 --><hr size="6">
-<a name="UDUnits-Support"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Auxiliary-Coordinates" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Rebasing-Time-Coordinate" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="UDUnits-Support-1"></a>
-<h2 class="section">3.19 UDUnits Support</h2>
-<a name="index-UDUnits-1"></a>
-<a name="index-Unidata-2"></a>
-<a name="index-units"></a>
-<a name="index-attribute_002c-units"></a>
-<a name="index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-3"></a>
-<a name="index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-3"></a>
-<a name="index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-3"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>, <code>ncra</code>,
-<code>ncrcat</code>, <code>ncwa</code><br> 
-Short options: ‘<samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-Long options: 
-‘<samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’,<br> 
-‘<samp>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’<br>
-</p></td></tr></table>
-<p>There is more than one way to hyperskin a cat.
-The <a href="http://www.unidata.ucar.edu/packages/udunits">UDUnits</a> package 
-provides a library which, if present, <acronym>NCO</acronym> uses to translate
-user-specified physical dimensions into the physical dimensions of data
-stored in netCDF files.
-Unidata provides UDUnits under the same terms as netCDF, so sites should
-install both.
-Compiling <acronym>NCO</acronym> with UDUnits support is currently optional but
-may become required in a future version of <acronym>NCO</acronym>.
-</p>
-<p>Two examples suffice to demonstrate the power and convenience of UDUnits  
-support. 
-<a name="index-MKS-units"></a>
-First, consider extraction of a variable containing non-record
-coordinates with physical dimensions stored in MKS units.
-In the following example, the user extracts all wavelengths
-in the visible portion of the spectrum in terms of the units
-very frequently used in visible spectroscopy, microns:
-</p><table><tr><td> </td><td><pre class="example">% ncks -C -H -v wvl -d wvl,"0.4 micron","0.7 micron" in.nc
-wvl[0]=5e-07 meter
-</pre></td></tr></table>
-<a name="index-units-1"></a>
-<p>The hyperslab returns the correct values because the <var>wvl</var> variable
-is stored on disk with a length dimension that UDUnits recognizes in the 
-<code>units</code> attribute.
-The automagical algorithm that implements this functionality is worth
-describing since understanding it helps one avoid some potential
-pitfalls. 
-First, the user includes the physical units of the hyperslab dimensions 
-she supplies, separated by a simple space from the numerical values of
-the hyperslab limits.
-She encloses each coordinate specifications in quotes so that the shell
-does not break the <em>value-space-unit</em> string into separate
-arguments before passing them to <acronym>NCO</acronym>. 
-Double quotes (<kbd>"foo"</kbd>) or single quotes (<kbd>'foo'</kbd>) are equally
-valid for this purpose. 
-Second, <acronym>NCO</acronym> recognizes that units translation is requested
-because each hyperslab argument contains text characters and non-initial
-spaces.  
-Third, <acronym>NCO</acronym> determines whether the <var>wvl</var> is dimensioned
-with a coordinate variable that has a <code>units</code> attribute. 
-<a name="index-coordinate-variable"></a>
-In this case, <var>wvl</var> itself is a coordinate variable.
-The value of its <code>units</code> attribute is <code>meter</code>. 
-Thus <var>wvl</var> passes this test so UDUnits conversion is attempted. 
-If the coordinate associated with the variable does not contain a 
-<code>units</code> attribute, then <acronym>NCO</acronym> aborts.
-Fourth, <acronym>NCO</acronym> passes the specified and desired dimension strings  
-(microns are specified by the user, meters are required by
-<acronym>NCO</acronym>) to the UDUnits library.
-Fifth, the UDUnits library that these dimension are commensurate
-and it returns the appropriate linear scaling factors to convert from 
-microns to meters to <acronym>NCO</acronym>.
-If the units are incommensurate (i.e., not expressible in the same
-fundamental MKS units), or are not listed in the UDUnits database, then 
-NCO aborts since it cannot determine the user’s intent.
-Finally, <acronym>NCO</acronym> uses the scaling information to convert the
-user-specified hyperslab limits into the same physical dimensions as
-those of the corresponding cooridinate variable on disk.
-At this point, <acronym>NCO</acronym> can perform a coordinate hyperslab using
-the same algorithm as if the user had specified the hyperslab without
-requesting units conversion.
-</p>
-<a name="index-units-2"></a>
-<a name="index-time"></a>
-<p>The translation and dimensional innterpretation of time coordinates
-shows a more powerful, and probably more common, UDUnits application.
-In this example, the user prints all data between 4 PM and 7 PM
-on December 8, 1999, from a variable whose time dimension is hours 
-since the year 1900:
-</p><table><tr><td> </td><td><pre class="example">% ncks -u -H -C -v time_udunits -d time_udunits,"1999-12-08 \
-  16:00:0.0","1999-12-08 19:00:0.0" in.nc
-time_udunits[1]=876018 hours since 1900-01-01 00:00:0.0
-</pre></td></tr></table>
-<a name="index-stride-3"></a>
-<a name="index-whitespace"></a>
-<p>Here, the user invokes the stride (see section <a href="#Stride">Stride</a>) capability to obtain 
-every other timeslice.
-This is possible because the UDUnits feature is additive, not
-exclusive—it works in conjunction with all other hyperslabbing
-(see section <a href="#Hyperslabs">Hyperslabs</a>) options and in all operators which support
-hyperslabbing.
-The following example shows how one might average data in a 
-time period spread across multiple input files
-</p><table><tr><td> </td><td><pre class="example">ncra -d time,"1939-09-09 12:00:0.0","1945-05-08 00:00:0.0" \
-  in1.nc in2.nc in3.nc out.nc
-</pre></td></tr></table>
-<p>Note that there is no excess whitespace before or after the individual
-elements of the ‘<samp>-d</samp>’ argument.
-<a name="index-shell-2"></a>
-This is important since, as far as the shell knows, ‘<samp>-d</samp>’ takes
-only <em>one</em> command-line argument.
-Parsing this argument into its component
-<code><var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code> elements 
-(see section <a href="#Hyperslabs">Hyperslabs</a>) is the job of <acronym>NCO</acronym>.
-When unquoted whitespace is present between these elements, the shell
-passes <acronym>NCO</acronym> arugment fragments which will not parse as
-intended. 
-</p>
-<p><acronym>NCO</acronym> implemented support for the UDUnits2 library with version   
-3.9.2 (August, 2007).
-The
-<a href="http://www.unidata.ucar.edu/software/udunits/udunits-2/udunits2.html">UDUnits2</a> package supports non-ASCII characters and logarithmic units. 
-We are interested in user-feedback on these features.
-</p>
-<p>One aspect that deserves mention is that UDUnits, and thus
-<acronym>NCO</acronym>, supports run-time definition of the location of the
-relevant UDUnits databases. 
-With UDUnits version 1, users may specify the directory which
-contains the UDUnits database, ‘<tt>udunits.dat</tt>’, via the
-<code>UDUNITS_PATH</code> environment variable.
-With UDUnits version 2, users may specify the UDUnits database file 
-itself, ‘<tt>udunits2.xml</tt>’, via the <code>UDUNITS2_XML_PATH</code> 
-environment variable.
-</p><table><tr><td> </td><td><pre class="example">export UDUNITS_PATH='/nonstandard/location/share/udunits' # UDUnits1
-export UDUNITS2_XML_PATH='/nonstandard/location/share/udunits/udunits2.xml' # UDUnits2
-</pre></td></tr></table>
-<p>This run-time flexibility can enable the full functionality of
-pre-built binaries on machines with libraries in different locations.
-</p>
-<a name="index-Climate-and-Forecast-Metadata-Convention"></a>
-<a name="index-CF-conventions-2"></a>
-<p>The <a href="http://www.unidata.ucar.edu/packages/udunits">UDUnits</a>
-package documentation describes the supported formats of time
-dimensions. 
-Among the metadata conventions which adhere to these formats are the  
-<a href="http://cf-pcmdi.llnl.gov">Climate and Forecast (CF) Conventions</a> and the 
-<a href="http://ferret.wrc.noaa.gov/noaa_coop/coop_cdf_profile.html">Cooperative Ocean/Atmosphere Research Data Service (COARDS) Conventions</a>.
-The following ‘<samp>-d arguments</samp>’ extract the same data using 
-commonly encountered time dimension formats: 
-</p><table><tr><td> </td><td><pre class="example">-d time,"1918-11-11 11:00:0.0","1939-09-09 00:00:0.0"
-</pre></td></tr></table>
-<p>All of these formats include at least one dash <kbd>-</kbd> in a
-non-leading character position (a dash in a leading character position
-is a negative sign). 
-<acronym>NCO</acronym> assumes that a non-leading dash in a limit string
-indicates that a UDUnits date conversion is requested.
-</p>
-<p>As of version 4.0.0 (January, 2010), <acronym>NCO</acronym> supports some
-calendar attributes specified by the CF conventions. 
-</p><dl compact="compact">
-<dt> <strong>Supported types:  </strong> </dt>
-<dd><p> "365_day"/"noleap", "360_day", "gregorian", "standard" 
-</p></dd>
-<dt>  <strong>Unsupported types:</strong> </dt>
-<dd><p>"366_day"/"all_leap","proleptic_gregorian","julian","none" 
-</p></dd>
-</dl>
-<p>Unsupported types default to mixed Gregorian/Julian as defined by 
-UDUnits. 
-</p>
-<p>An Example: Consider the following netCDF variable
-</p>
-<table><tr><td> </td><td><pre class="example">variables:
-  double lon_cal(lon_cal) ;
-    lon_cal:long_name = "lon_cal" ;
-    lon_cal:units = "days since 1964-2-28 0:0:0" ;
-    lon_cal:calendar = "365_day" ;
-data:
-  lon_cal = 1,2,3,4,5,6,7,8,9,10;
-
-So the command 
-"ncks -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' in.nc out.nc"
-Results in the hyperslab lon_cal=1,2,3,4   
-</pre></td></tr></table>
-
-
-<a name="index-MKS-units-1"></a>
-<a name="index-God"></a>
-<p>netCDF variables should always be stored with MKS (i.e., God’s) units,
-so that application programs may assume MKS dimensions apply to all
-input variables. 
-The UDUnits feature is intended to alleviate some of the <acronym>NCO</acronym>
-user’s pain when handling MKS units.
-It connects users who think in human-friendly units (e.g.,
-miles, millibars, days) to extract data which are always stored in God’s
-units, MKS (e.g., meters, Pascals, seconds). 
-The feature is not intended to encourage writers to store data in 
-esoteric units (e.g., furlongs, pounds per square inch, fortnights). 
-</p>
-<a name="time_rebase"></a> <!-- http://nco.sf.net/nco.html#time_rebase --><hr size="6">
-<a name="Rebasing-Time-Coordinate"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#UDUnits-Support" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Missing-Values" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Rebasing-Time-Coordinate-1"></a>
-<h2 class="section">3.20 Rebasing Time Coordinate</h2>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: 
-<code>ncra</code>, <code>ncrcat</code> 
-Short options: None<br>
-</p></td></tr></table>
-
-<p>Time re-basing is performed automatically when UDUnits is installed.
-Time rebasing is invoked when numerous files share a common time-based
-record coordinate, and the record coordinate is in the same time units
-in each file, but the date offset differs among files.
-For example suppose the time coordinate is in hours and each day in
-January is stored in its own daily file.
-Each daily file records the temperature variable <code>tpt(time)</code> 
-with an (unadjusted) <code>time</code> coordinate value between 0–23 hours,
-and uses the <code>units</code> attribute to advance the base time:
-</p><table><tr><td> </td><td><pre class="example">file01.nc time:units="hours since 1990-1-1"   
-file02.nc time:units="hours since 1990-1-2"   
-...
-file31.nc time:units="hours since 1990-1-31"   
-</pre></td></tr></table>
-
-<table><tr><td> </td><td><pre class="example">// Find mean noontime temperature in January
-ncra -v tpt -d time,"1990-1-1 12:00:00","1990-1-31 23:59:59",24 \
-      file??.nc noon.nc    
-
-// Concatenate day2 noon through day3 noon records
-ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \ 
-      file01.nc file02.nc file03.nc noon.nc    
-
-// Results: time is "re-based" to the time units in "file01.nc"
-time=36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
-     53, 54, 55, 56, 57, 58, 59 ;
-  
-// If we repeat the above command but with only two input files...
-ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-      file02.nc file03 noon.nc    
-
-// ...then the output time coordinate is based on the time units in "file02.nc"
-time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-    29, 30, 31, 32, 33, 34, 35 ;
-</pre></td></tr></table>
-
-<a name="missing_value"></a> <!-- http://nco.sf.net/nco.html#missing_value -->
-<a name="_FillValue"></a> <!-- http://nco.sf.net/nco.html#_FillValue -->
-<a name="fll_val"></a> <!-- http://nco.sf.net/nco.html#fll_val -->
-<a name="mss_val"></a> <!-- http://nco.sf.net/nco.html#mss_val -->
-<a name="mss"></a> <!-- http://nco.sf.net/nco.html#mss --><hr size="6">
-<a name="Missing-Values"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Rebasing-Time-Coordinate" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Chunking" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Missing-values"></a>
-<h2 class="section">3.21 Missing values</h2>
-<a name="index-missing-values"></a>
-<a name="index-data_002c-missing"></a>
-<a name="index-averaging-data"></a>
-<a name="index-missing_005fvalue"></a>
-<a name="index-_005fFillValue"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncflint</code>, <code>ncpdq</code>, <code>ncra</code>, <code>ncwa</code><br> 
-Short options: None<br>
-</p></td></tr></table>
-
-<p>The phrase <em>missing data</em> refers to data points that are missing,
-invalid, or for any reason not intended to be arithmetically processed
-in the same fashion as valid data.  
-<a name="index-arithmetic-operators"></a>
-The <acronym>NCO</acronym> arithmetic operators attempt to handle missing data in
-an intelligent fashion. 
-There are four steps in the <acronym>NCO</acronym> treatment of missing data:
-</p><ol>
-<li> 
-Identifying variables that may contain missing data. 
-
-<p><acronym>NCO</acronym> follows the convention that missing data should be stored
-with the <var>_FillValue</var> specified in the variable’s <code>_FillValue</code> 
-attributes. 
-The <em>only</em> way <acronym>NCO</acronym> recognizes that a variable <em>may</em>
-contain missing data is if the variable has a <code>_FillValue</code>
-attribute. 
-In this case, any elements of the variable which are numerically equal
-to the <var>_FillValue</var> are treated as missing data.
-</p>
-<p><acronym>NCO</acronym> adopted the behavior that the default attribute name, if 
-any, assumed to specify the value of data to ignore is <code>_FillValue</code> 
-with version 3.9.2 (August, 2007).
-Prior to that, the <code>missing_value</code> attribute, if any, was assumed to  
-specify the value of data to ignore.
-Supporting both of these attributes simultaneously is not practical.
-Hence the behavior <acronym>NCO</acronym> once applied to <var>missing_value</var> it now applies 
-to any <var>_FillValue</var>. 
-<acronym>NCO</acronym> now treats any <var>missing_value</var> as normal data 
-<a name="DOCF24" href="#FOOT24">(24)</a>.
-</p>
-<a name="index-ncrename"></a>
-<a name="index-ncatted-1"></a>
-<p>It has been and remains most advisable to create both <code>_FillValue</code> 
-and <code>missing_value</code> attributes with identical values in datasets.
-Many legacy datasets contain only <code>missing_value</code> attributes.
-<acronym>NCO</acronym> can help migrating datasets between these conventions.
-One may use <code>ncrename</code> (see section <a href="#ncrename-netCDF-Renamer"><code>ncrename</code> netCDF Renamer</a>) to
-rename all <code>missing_value</code> attributes to <code>_FillValue</code>:
-</p><table><tr><td> </td><td><pre class="example">ncrename -a .missing_value,_FillValue inout.nc
-</pre></td></tr></table>
-<p>Alternatively, one may use
-<code>ncatted</code> (see section <a href="#ncatted-netCDF-Attribute-Editor"><code>ncatted</code> netCDF Attribute Editor</a>) to
-add a <code>_FillValue</code> attribute to all variables
-</p><table><tr><td> </td><td><pre class="example">ncatted -O -a _FillValue,,o,f,1.0e36 inout.nc
-</pre></td></tr></table>
-
-</li><li> 
-Converting the <var>_FillValue</var> to the type of the variable, if
-neccessary. 
-
-<p>Consider a variable <var>var</var> of type <var>var_type</var> with a
-<code>_FillValue</code> attribute of type <var>att_type</var> containing the
-value <var>_FillValue</var>.  
-As a guideline, the type of the <code>_FillValue</code> attribute should be
-the same as the type of the variable it is attached to.
-If <var>var_type</var> equals <var>att_type</var> then <acronym>NCO</acronym>
-straightforwardly compares each value of <var>var</var> to
-<var>_FillValue</var> to determine which elements of <var>var</var> are to be
-treated as missing data. 
-<a name="index-C-language-1"></a>
-If not, then <acronym>NCO</acronym> converts <var>_FillValue</var> from
-<var>att_type</var> to <var>var_type</var> by using the implicit conversion rules
-of C, or, if <var>att_type</var> is <code>NC_CHAR</code>
-<a name="DOCF25" href="#FOOT25">(25)</a>, by typecasting the results of the C function
-<code>strtod(<var>_FillValue</var>)</code>. 
-<a name="index-ncatted-2"></a>
-You may use the <acronym>NCO</acronym> operator <code>ncatted</code> to change the
-<code>_FillValue</code> attribute and all data whose data is
-<var>_FillValue</var> to a new value
-(see section <a href="#ncatted-netCDF-Attribute-Editor"><code>ncatted</code> netCDF Attribute Editor</a>).
-</p>
-</li><li> 
-Identifying missing data during arithmetic operations.
-
-<a name="index-performance-5"></a>
-<a name="index-operator-speed-4"></a>
-<a name="index-speed-5"></a>
-<a name="index-execution-time-4"></a>
-<a name="index-arithmetic-operators-1"></a>
-<p>When an <acronym>NCO</acronym> arithmetic operator processes a variable <var>var</var>
-with a <code>_FillValue</code> attribute, it compares each value of
-<var>var</var> to <var>_FillValue</var> before performing an operation.
-Note the <var>_FillValue</var> comparison imposes a performance penalty
-on the operator.
-Arithmetic processing of variables which contain the
-<code>_FillValue</code> attribute always incurs this penalty, even when
-none of the data are missing.
-Conversely, arithmetic processing of variables which do not contain the
-<code>_FillValue</code> attribute never incurs this penalty.
-In other words, do not attach a <code>_FillValue</code> attribute to a
-variable which does not contain missing data.
-This exhortation can usually be obeyed for model generated data, but it
-may be harder to know in advance whether all observational data will be
-valid or not.
-</p>
-</li><li> 
-Treatment of any data identified as missing in arithmetic operators.
-
-<a name="index-ncea-1"></a>
-<a name="index-ncra-1"></a>
-<a name="index-ncwa-2"></a>
-<a name="index-ncbo"></a>
-<a name="index-ncflint-1"></a>
-<p><acronym>NCO</acronym> averagers (<code>ncra</code>, <code>ncea</code>, <code>ncwa</code>)
-do not count any element with the value <var>_FillValue</var> towards the
-average. 
-<code>ncbo</code> and <code>ncflint</code> define a <var>_FillValue</var> result  
-when either of the input values is a <var>_FillValue</var>.
-Sometimes the <var>_FillValue</var> may change from file to file in a
-multi-file operator, e.g., <code>ncra</code>.
-<acronym>NCO</acronym> is written to account for this (it always compares a
-variable to the <var>_FillValue</var> assigned to that variable in the
-current file). 
-Suffice it to say that, in all known cases, <acronym>NCO</acronym> does “the
-right thing”. 
-</p>
-<p>It is impossible to determine and store the correct result of a binary  
-operation in a single variable.
-One such corner case occurs when both operands have differing
-<var>_FillValue</var> attributes, i.e., attributes with different
-numerical values.
-Since the output (result) of the operation can only have one
-<var>_FillValue</var>, some information may be lost.
-In this case, <acronym>NCO</acronym> always defines the output variable to have
-the same <var>_FillValue</var> as the first input variable.
-Prior to performing the arithmetic operation, all values of the second
-operand equal to the second <var>_FillValue</var> are replaced with the
-first <var>_FillValue</var>.
-Then the arithmetic operation proceeds as normal, comparing each element 
-of each operand to a single <var>_FillValue</var>.
-Comparing each element to two distinct <var>_FillValue</var>’s would be
-much slower and would be no likelier to yield a more satisfactory
-answer. 
-In practice, judicious choice of <var>_FillValue</var> values prevents any
-important information from being lost.
-</p></li></ol>
-
-<a name="chunking"></a> <!-- http://nco.sf.net/nco.html#chunking -->
-<a name="cnk"></a> <!-- http://nco.sf.net/nco.html#cnk -->
-<a name="cnk_sz"></a> <!-- http://nco.sf.net/nco.html#cnk_sz -->
-<a name="chunk_size"></a> <!-- http://nco.sf.net/nco.html#chunk_size --><hr size="6">
-<a name="Chunking"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Missing-Values" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Deflation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Chunking-1"></a>
-<h2 class="section">3.22 Chunking</h2>
-<a name="index-_002d_002dcnk_005fdmn"></a>
-<a name="index-_002d_002dcnk_005fmap"></a>
-<a name="index-_002d_002dcnk_005fplc"></a>
-<a name="index-_002d_002dcnk_005fscl"></a>
-<a name="index-_002d_002dchunk_005fdimension"></a>
-<a name="index-_002d_002dchunk_005fmap"></a>
-<a name="index-_002d_002dchunk_005fpolicy"></a>
-<a name="index-_002d_002dchunk_005fscalar"></a>
-<a name="index-chunking-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncecat</code>, <code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>,
-<code>ncra</code>, <code>ncrcat</code>, <code>ncwa</code><br>
-Short options: none<br>
-Long options: ‘<samp>--cnk_dmn <var>dmn_nm</var>,<var>cnk_sz</var></samp>’,
-‘<samp>--chunk_dimension <var>dmn_nm</var>,<var>cnk_sz</var></samp>’<br>,
-‘<samp>--cnk_map <var>cnk_map</var></samp>’, ‘<samp>--chunk_map <var>cnk_map</var></samp>’,<br>
-‘<samp>--cnk_plc <var>cnk_plc</var></samp>’, ‘<samp>--chunk_policy <var>cnk_plc</var></samp>’,<br>
-‘<samp>--cnk_scl <var>cnk_sz</var></samp>’, ‘<samp>--chunk_scalar <var>cnk_sz</var></samp>’<br>
-</p></td></tr></table>
-
-<p>All netCDF4-enabled <acronym>NCO</acronym> operators that define variables 
-support a plethora of chunksize options.
-Chunking can significantly accelerate or degrade read/write access
-to large datasets.
-Dataset chunking issues are described in detail
-<a href="http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html">here</a>.
-</p>
-<a name="index-chunking-policy"></a>
-<a name="index-chunking-map"></a>
-<a name="index-chunksize"></a>
-<p>The <acronym>NCO</acronym> chunking implementation is designed to be flexible. 
-Users control three aspects of the chunking implementation.
-These are known as the <em>chunking policy</em>, <em>chunking map</em>,
-and <em>chunksize</em>.
-The first two are high-level mechanisms that apply to an entire file,
-while the third allows per-dimension specification of parameters.
-<a name="index-hyperslab-1"></a>
-<a name="index-ncpdq-2"></a>
-<a name="index-packing-1"></a>
-The implementation is a hybrid of the <code>ncpdq</code> packing policies  
-(see section <a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a>), and the hyperslab
-specifications (see section <a href="#Hyperslabs">Hyperslabs</a>).
-Each aspect is intended to have a sensible default, so that most users
-will only need to set one switch to obtain sensible chunking.
-Power users can tune the three switches in tandem to obtain optimal
-performance. 
-</p>
-<p>The user specifies the desired chunking policy with the ‘<samp>-P</samp>’ switch 
-(or its long option equivalents, ‘<samp>--cnk_plc</samp>’ and
-‘<samp>--chunk_policy</samp>’) and its <var>cnk_plc</var> argument.
-Five chunking policies are currently implemented:<br>   
-<a name="index-all"></a>
-<a name="index-g2d"></a>
-<a name="index-g3d"></a>
-<a name="index-xpl"></a>
-<a name="index-cnk_005fall"></a>
-<a name="index-cnk_005fg2d"></a>
-<a name="index-cnk_005fg3d"></a>
-<a name="index-cnk_005fxpl"></a>
-<a name="index-plc_005fall"></a>
-<a name="index-plc_005fg2d"></a>
-<a name="index-plc_005fg3d"></a>
-<a name="index-plc_005fxpl"></a>
-</p><dl compact="compact">
-<dt> <em>Chunk All Variables [<em>default</em>]</em></dt>
-<dd><p>Definition: Chunk all variables possible<br>
-Alternate invocation: <code>ncchunk</code><br>
-<var>cnk_plc</var> key values: ‘<samp>all</samp>’, ‘<samp>cnk_all</samp>’, ‘<samp>plc_all</samp>’<br>
-Mnemonic: All<br>
-</p></dd>
-<dt> <em>Chunk Variables with at least Two Dimensions</em></dt>
-<dd><p>Definition: Chunk all variables possible with at least two dimensions<br>
-Alternate invocation: none<br>
-<var>cnk_plc</var> key values: ‘<samp>g2d</samp>’, ‘<samp>cnk_g2d</samp>’, ‘<samp>plc_g2d</samp>’<br>
-Mnemonic: <em>G</em>reater than or equal to <em>2</em> <em>D</em>imensions<br>
-</p></dd>
-<dt> <em>Chunk Variables with at least Three Dimensions</em></dt>
-<dd><p>Definition: Chunk all variables possible with at least three dimensions<br>
-Alternate invocation: none<br>
-<var>cnk_plc</var> key values: ‘<samp>g3d</samp>’, ‘<samp>cnk_g3d</samp>’, ‘<samp>plc_g3d</samp>’<br>
-Mnemonic: <em>G</em>reater than or equal to <em>3</em> <em>D</em>imensions<br>
-</p></dd>
-<dt> <em>Chunk Variables Containing Explicitly Chunked Dimensions</em></dt>
-<dd><p>Definition: Chunk all variables possible that contain at least one
-dimension whose chunksize was explicitly set with the ‘<samp>--cnk_dmn</samp>’ option.
-Alternate invocation: none<br>
-<var>cnk_plc</var> key values: ‘<samp>xpl</samp>’, ‘<samp>cnk_xpl</samp>’, ‘<samp>plc_xpl</samp>’<br>
-Mnemonic: E<em>XPL</em>icitly specified dimensions<br>
-</p></dd>
-<dt> <em>Unchunking</em></dt>
-<dd><p>Definition: Unchunk all variables<br>
-Alternate invocation: <code>ncunchunk</code><br>
-<var>cnk_plc</var> key values: ‘<samp>uck</samp>’, ‘<samp>cnk_uck</samp>’, ‘<samp>plc_uck</samp>’, ‘<samp>unchunk</samp>’<br>
-Mnemonic: <em>U</em>n<em>C</em>hun<em>K</em><br>
-</p></dd>
-</dl>
-<p>Equivalent key values are fully interchangeable.
-Multiple equivalent options are provided to satisfy disparate needs
-and tastes of <acronym>NCO</acronym> users working with scripts and from the
-command line.
-</p>
-<a name="index-chunking-map-1"></a>
-<a name="index-cnk_005fmap"></a>
-<a name="index-_002dM-cnk_005fmap"></a>
-<a name="index-_002d_002dcnk_005fmap-cnk_005fmap"></a>
-<a name="index-_002d_002dmap-cnk_005fmap"></a>
-<p>The chunking algorithms must know the chunksizes of each dimension of
-each variable to be chunked.
-The correspondence between the input variable shape and the chunksizes
-is called the <em>chunking map</em>. 
-The user specifies the desired chunking map with the ‘<samp>-M</samp>’ switch
-(or its long option equivalents, ‘<samp>--cnk_map</samp>’ and
-‘<samp>--chunk_map</samp>’) and its <var>cnk_map</var> argument.
-Four chunking maps are currently implemented:<br>
-<a name="index-dmn"></a>
-<a name="index-scl"></a>
-<a name="index-prd"></a>
-<a name="index-rd1"></a>
-<a name="index-cnk_005fdmn"></a>
-<a name="index-cnk_005fscl"></a>
-<a name="index-cnk_005fprd"></a>
-<a name="index-cnk_005frd1"></a>
-<a name="index-map_005fdmn"></a>
-<a name="index-map_005fscl"></a>
-<a name="index-map_005fprd"></a>
-<a name="index-map_005frd1"></a>
-</p><dl compact="compact">
-<dt> <em>Chunksize Equals Dimension Size [<em>default</em>]</em></dt>
-<dd><p>Definition: Chunksize defaults to dimension size. 
-Explicitly specify chunksizes for particular dimensions with
-‘<samp>--cnk_dmn</samp>’ option.<br>
-<var>cnk_map</var> key values: ‘<samp>dmn</samp>’, ‘<samp>cnk_dmn</samp>’, ‘<samp>map_dmn</samp>’<br>
-Mnemonic: <em>D</em>i<em>M</em>e<em>N</em>sion<br>
-</p></dd>
-<dt> <em>Chunksize Equals Dimension Size except Record Dimension</em></dt>
-<dd><p>Definition: Chunksize equals dimension size except record dimension has size one.
-Explicitly specify chunksizes for particular dimensions with
-‘<samp>--cnk_dmn</samp>’ option.<br>
-<var>cnk_map</var> key values: ‘<samp>rd1</samp>’, ‘<samp>cnk_rd1</samp>’, ‘<samp>map_rd1</samp>’<br>
-Mnemonic: <em>R</em>ecord <em>D</em>imension size <em>1</em><br>
-</p></dd>
-<dt> <em>Chunksize Equals Scalar Size Specified</em></dt>
-<dd><p>Definition: Chunksize for all dimensions is set with the
-‘<samp>--cnk_scl</samp>’ option.<br> 
-<var>cnk_map</var> key values: ‘<samp>xpl</samp>’, ‘<samp>cnk_xpl</samp>’, ‘<samp>map_xpl</samp>’<br>
-Mnemonic: E<em>XPL</em>icitly specified dimensions<br>
-</p></dd>
-<dt> <em>Chunksize Product Equals Scalar Size Specified</em></dt>
-<dd><p>Definition: The product of the chunksizes for each variable
-(approximately) equals the size specified with the ‘<samp>--cnk_scl</samp>’
-option.
-For a variable of rank <var>R</var> (i.e., with <var>R</var> non-degenerate
-dimensions), the chunksize in each non-degenerate dimension is the
-<var>R</var>th root of <var>cnk_scl</var>.<br>
-<var>cnk_map</var> key values: ‘<samp>prd</samp>’, ‘<samp>cnk_prd</samp>’, ‘<samp>map_prd</samp>’<br>
-Mnemonic: <em>PR</em>o<em>D</em>uct<br>
-</p></dd>
-</dl>
-<p>It is possible to combine the above chunking map algorithms with
-user-specified per-dimension (but not per-variable) chunksizes that
-override specific chunksizes determined by the maps above. 
-The user specifies the per-dimension chunksizes with the (equivalent) 
-long options ‘<samp>--cnk_dmn</samp>’ or ‘<samp>--chunk_dimension</samp>’).
-The option takes two comma-separated arguments,
-<var>dmn_nm</var>,<var>cnk_sz</var>, which are the dimension name and its
-chunksize, respectively. 
-The ‘<samp>--cnk_dmn</samp>’ option may be used as many times as necessary.
-</p>
-<a name="xmp_cnk"></a> <!-- http://nco.sf.net/nco.html#xmp_cnk -->
-<a name="xmp_chunk"></a> <!-- http://nco.sf.net/nco.html#xmp_chunk --><table><tr><td> </td><td><pre class="example"># Simple chunking and unchunking
-ncks -O -4 --cnk_plc=all     in.nc out.nc # Chunk in.nc
-ncks -O -4 --cnk_plc=unchunk in.nc out.nc # Unchunk in.nc
-
-# Chunk data then unchunk it, printing informative metadata
-ncks -O -4 -D 4 --cnk_plc=all ~/nco/data/in.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-
-# More complex chunking procedures, with informative metadata
-ncks -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_scl=8 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_dmn lat,64 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc 
-ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-
-# Chunking works with all operators...
-ncap2 -O -4 -D 4 --cnk_scl=8 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc
-ncbo -O -4 -D 4 --cnk_scl=8 -p ~/nco/data in.nc in.nc ~/foo.nc
-ncecat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-ncflint -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-ncpdq -O -4 -D 4 -P all_new --cnk_scl=8 -L 5 ~/nco/data/in.nc ~/foo.nc
-ncrcat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-ncwa -O -4 -D 4 -a time --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-</pre></td></tr></table>
-
-<a name="index-record-dimension-2"></a>
-<p>It is appropriate to conclude by informing users about an aspect of
-chunking that may not be expected: 
-Record dimensions are always chunked with a chunksize of one. 
-Hence all variables that contain the record dimension are also stored 
-as chunked (since data must be stored with chunking either in all
-dimensions, or in no dimensions). 
-Unless otherwise specified by the user, the other (fixed, non-record) 
-dimensions of such variables are assigned default chunk sizes. 
-The <acronym>HDF5</acronym> layer does all this automatically to optimize the
-on-disk variable/file storage geometry of record variables.
-Do not be surprised to learn that files created without any explicit
-instructions to activate chunking nevertheless contain chunked
-variables. 
-</p>
-<a name="dfl_lvl"></a> <!-- http://nco.sf.net/nco.html#dfl_lvl -->
-<a name="dfl"></a> <!-- http://nco.sf.net/nco.html#dfl -->
-<a name="lz"></a> <!-- http://nco.sf.net/nco.html#lz -->
-<a name="lz77"></a> <!-- http://nco.sf.net/nco.html#lz77 -->
-<a name="deflate"></a> <!-- http://nco.sf.net/nco.html#deflate -->
-<a name="deflation"></a> <!-- http://nco.sf.net/nco.html#deflation --><hr size="6">
-<a name="Deflation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Chunking" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Packed-data" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Deflation-1"></a>
-<h2 class="section">3.23 Deflation</h2>
-<a name="index-_002dL"></a>
-<a name="index-_002d_002ddeflate"></a>
-<a name="index-_002d_002ddfl_005flvl"></a>
-<a name="index-Lempel_002dZiv-deflation"></a>
-<a name="index-compression"></a>
-<a name="index-deflation-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncecat</code>, <code>ncflint</code>, <code>ncks</code>, <code>ncpdq</code>,
-<code>ncra</code>, <code>ncrcat</code>, <code>ncwa</code><br>
-Short options: ‘<samp>-L</samp>’<br>
-Long options: ‘<samp>--dfl_lvl</samp>’, ‘<samp>--deflate</samp>’<br>  
-</p></td></tr></table>
-
-<p>All <acronym>NCO</acronym> operators that define variables support 
-the netCDF4 feature of storing variables compressed with Lempel-Ziv
-deflation. 
-The Lempel-Ziv algorithm is a lossless data compression technique.
-Activate this deflation with the <code>-L <var>dfl_lvl</var></code> short option
-(or with the same argument to the ‘<samp>--dfl_lvl</samp>’ or ‘<samp>--deflate</samp>’ 
-long options).
-Specify the deflation level <var>dfl_lvl</var> on a scale from 
-no deflation (<var>dfl_lvl = 0</var>) to maximum deflation 
-(<var>dfl_lvl = 9</var>).
-Minimal deflation (<var>dfl_lvl = 1</var>) achieves considerable storage
-compression with little time penalty.
-Higher deflation levels require more time for compression.
-File sizes resulting from minimal (<var>dfl_lvl = 1</var>) and maximal   
-(<var>dfl_lvl = 9</var>) deflation levels typically differ by a few
-percent in size. 
-</p>
-<p>To compress an entire file using deflation, use
-</p><table><tr><td> </td><td><pre class="example">ncks -4 -L 0 in.nc out.nc # No deflation (fast, no time penalty)
-ncks -4 -L 1 in.nc out.nc # Minimal deflation (little time penalty)
-ncks -4 -L 9 in.nc out.nc # Maximal deflation (much slower)
-</pre></td></tr></table>
-
-<p>Unscientific testing shows that deflation compresses typical climate
-datasets by 30-60%.  
-Packing, a lossy compression technique available for all netCDF files 
-(see <a href="#Packed-data">Packed data</a>), can easily compress files by 50%.
-Packed data may be deflated to squeeze datasets by about 80%:
-</p><table><tr><td> </td><td><pre class="example">ncks  -4 -L 1 in.nc out.nc # Minimal deflation (~30-60% compression)
-ncks  -4 -L 9 in.nc out.nc # Maximal deflation (~31-63% compression)
-ncpdq         in.nc out.nc # Standard packing  (~50% compression)
-ncpdq -4 -L 9 in.nc out.nc # Deflated packing  (~80% compression)
-</pre></td></tr></table>
-<a name="index-ncks-1"></a>
-<p><code>ncks</code> prints deflation parameters, if any, to screen
-(see section <a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a>).
-</p>
-<a name="pck"></a> <!-- http://nco.sf.net/nco.html#pck -->
-<a name="pack"></a> <!-- http://nco.sf.net/nco.html#pack --><hr size="6">
-<a name="Packed-data"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Deflation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Packing-Algorithm" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Packed-data-1"></a>
-<h2 class="section">3.24 Packed data</h2>
-<a name="index-packing-2"></a>
-<a name="index-unpacking-1"></a>
-<a name="index-add_005foffset-1"></a>
-<a name="index-scale_005ffactor"></a>
-<a name="index-missing_005fvalue-1"></a>
-<a name="index-_005fFillValue-1"></a>
-<a name="index-pack_0028x_0029"></a>
-<a name="index-unpack_0028x_0029"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncflint</code>, <code>ncpdq</code>, <code>ncra</code>, <code>ncwa</code><br> 
-Short options: None<br>
-</p></td></tr></table>
-
-<p>The phrase <em>packed data</em> refers to data which are stored in the
-standard netCDF3 packing format which employs a lossy algorithm.
-See <a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a> for a description of deflation, a 
-lossless compression technique available with netCDF4 only.
-Packed data may be deflated to save additional space.
-</p>
-<hr size="6">
-<a name="Packing-Algorithm"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Packed-data" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Unpacking-Algorithm" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Packed-data" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h3 class="unnumberedsubsec">Packing Algorithm</h3>
-<p><em>Packing</em>
-The standard netCDF packing algorithm is lossy, and produces data with
-the same dynamic range as the original but which requires no more than
-half the space to store.
-The packed variable is stored (usually) as type <code>NC_SHORT</code>
-with the two attributes required to unpack the variable,
-<code>scale_factor</code> and <code>add_offset</code>, stored at the original
-(unpacked) precision of the variable
-<a name="DOCF26" href="#FOOT26">(26)</a>.
-Let <var>min</var> and <var>max</var> be the minimum and maximum values 
-of <var>x</var>. 
-<br>
-<var>scale_factor</var> = (<var>max</var>-<var>min</var>)/<var>ndrv</var><br>
-<var>add_offset</var> = 0.5*(<var>min</var>+<var>max</var>)<br>
-<var>pck</var> = (<var>upk</var>-<var>add_offset</var>)/<var>scale_factor</var> = (<var>upk</var>-0.5*(<var>min</var>+<var>max</var>))*<var>ndrv</var>/(<var>max</var>-<var>min</var>)<br> 
-<br>
-where <var>ndrv</var> is the number of discrete representable values for
-given type of packed variable.
-The theoretical maximum value for <var>ndrv</var> is two raised to the
-number of bits used to store the packed variable.
-Thus if the variable is packed into type <code>NC_SHORT</code>, a two-byte
-datatype, then there are at most <em>2^16 = 65536</em> distinct values
-representible.
-In practice, the number of discretely representible values is taken
-to be two less than the theoretical maximum.
-This leaves space for a missing value and solves potential problems with
-rounding that may occur during the unpacking of the variable.
-Thus for <code>NC_SHORT</code>, <em>ndrv = 65536 - 2 = 65534</em>.
-Less often, the variable may be packed into type <code>NC_CHAR</code>, 
-where <em>ndrv = 256 - 2 = 254</em>, or type <code>NC_INT</code> where
-where <em>ndrv = 4294967295 - 2 = 4294967293</em>.
-One useful feature of (lossy) netCDF packing algorithm is that
-additional, loss-less packing algorithms perform well on top of it. 
-</p>
-<hr size="6">
-<a name="Unpacking-Algorithm"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Packing-Algorithm" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Default-Handling-of-Packed-Data" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Packed-data" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h3 class="unnumberedsubsec">Unpacking Algorithm</h3>
-<p><em>Unpacking</em>
-The unpacking algorithm depends on the presence of two attributes,
-<code>scale_factor</code> and <code>add_offset</code>.
-If <code>scale_factor</code> is present for a variable, the data are
-multiplied by the value <var>scale_factor</var> after the data are read.
-If <code>add_offset</code> is present for a variable, then the
-<var>add_offset</var> value is added to the data after the data are read.
-If both <code>scale_factor</code> and <code>add_offset</code> attributes are
-present, the data are first scaled by <var>scale_factor</var> before the
-offset <var>add_offset</var> is added.   
-<br>
-<var>upk</var> = <var>scale_factor</var>*<var>pck</var> + <var>add_offset</var> = (<var>max</var>-<var>min</var>)*<var>pck</var>/<var>ndrv</var> + 0.5*(<var>min</var>+<var>max</var>)<br>
-<br>
-When <code>scale_factor</code> and <code>add_offset</code> are used for packing, the
-associated variable (containing the packed data) is typically of type
-<code>byte</code> or <code>short</code>, whereas the unpacked values are intended to
-be of type <code>int</code>, <code>float</code>, or <code>double</code>. 
-An attribute’s <code>scale_factor</code> and <code>add_offset</code> and
-<code>_FillValue</code>, if any, should all be of the type intended for the
-unpacked data, i.e., <code>int</code>, <code>float</code> or <code>double</code>. 
-</p>
-<hr size="6">
-<a name="Default-Handling-of-Packed-Data"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Unpacking-Algorithm" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Operation-Types" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Packed-data" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h3 class="unnumberedsubsec">Default Handling of Packed Data</h3>
-<p>All <acronym>NCO</acronym> arithmetic operators understand packed data.
-The operators automatically unpack any packed variable in the input 
-file which will be arithmetically processed.
-For example, <code>ncra</code> unpacks all record variables, 
-and <code>ncwa</code> unpacks all variable which contain a dimension to 
-be averaged.
-These variables are stored unpacked in the output file.
-</p>
-<p>On the other hand, arithmetic operators do not unpack non-processed
-variables. 
-For example, <code>ncra</code> leaves all non-record variables packed, 
-and <code>ncwa</code> leaves packed all variables lacking an averaged
-dimension.  
-These variables (called fixed variables) are passed unaltered from the
-input to the output file. 
-Hence fixed variables which are packed in input files remain packed in
-output files.
-Completely packing and unpacking files is easily accomplished with
-<code>ncpdq</code> (see section <a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a>).
-Packing and unpacking individual variables may be done with 
-<code>ncpdq</code> and the <code>ncap2</code> 
-<code>pack()</code> and <code>unpack()</code> functions
-(see section <a href="#Methods-and-functions">Methods and functions</a>).
-</p>
-<a name="op_typ"></a> <!-- http://nco.sf.net/nco.html#op_typ --><hr size="6">
-<a name="Operation-Types"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Default-Handling-of-Packed-Data" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Type-Conversion" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Operation-Types-1"></a>
-<h2 class="section">3.25 Operation Types</h2>
-<a name="index-operation-types"></a>
-<a name="index-avg"></a>
-<a name="index-sqravg"></a>
-<a name="index-avgsqr"></a>
-<a name="index-min"></a>
-<a name="index-max"></a>
-<a name="index-rmssdn"></a>
-<a name="index-rms"></a>
-<a name="index-ttl"></a>
-<a name="index-sqrt"></a>
-<a name="index-average"></a>
-<a name="index-mean"></a>
-<a name="index-total"></a>
-<a name="index-minimum"></a>
-<a name="index-maximum"></a>
-<a name="index-root_002dmean_002dsquare"></a>
-<a name="index-standard-deviation"></a>
-<a name="index-variance"></a>
-<a name="index-_002dy-op_005ftyp"></a>
-<a name="index-_002d_002doperation-op_005ftyp"></a>
-<a name="index-_002d_002dop_005ftyp-op_005ftyp"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncra</code>, <code>ncea</code>, <code>ncwa</code><br>
-Short options: ‘<samp>-y</samp>’<br>
-Long options: ‘<samp>--operation</samp>’, ‘<samp>--op_typ</samp>’<br>
-</p></td></tr></table>
-<p>The ‘<samp>-y <var>op_typ</var></samp>’ switch allows specification of many different
-types of operations 
-Set <var>op_typ</var> to the abbreviated key for the corresponding operation:
-</p><dl compact="compact">
-<dt> <code>avg</code></dt>
-<dd><p>Mean value
-</p></dd>
-<dt> <code>sqravg</code></dt>
-<dd><p>Square of the mean
-</p></dd>
-<dt> <code>avgsqr</code></dt>
-<dd><p>Mean of sum of squares
-</p></dd>
-<dt> <code>max</code></dt>
-<dd><p>Maximium value
-</p></dd>
-<dt> <code>min</code></dt>
-<dd><p>Minimium value
-</p></dd>
-<dt> <code>rms</code></dt>
-<dd><p>Root-mean-square (normalized by <var>N</var>)
-</p></dd>
-<dt> <code>rmssdn</code></dt>
-<dd><p>Root-mean square (normalized by <var>N-1</var>)
-</p></dd>
-<dt> <code>sqrt</code></dt>
-<dd><p>Square root of the mean
-</p></dd>
-<dt> <code>ttl</code></dt>
-<dd><p>Sum of values
-</p></dd>
-</dl>
-<a name="index-coordinate-variable-1"></a>
-<p><acronym>NCO</acronym> assumes coordinate variables represent grid axes, e.g.,
-longitude. 
-The only rank-reduction which makes sense for coordinate variables
-is averaging.
-Hence <acronym>NCO</acronym> implements the operation type requested with
-‘<samp>-y</samp>’ on all non-coordinate variables, but not on coorniate
-variables. 
-When an operation requires a coordinate variable to be reduced in
-rank, i.e., from one dimension to a scalar or from one dimension to
-a degenerate (single value) array, then <acronym>NCO</acronym> 
-<em>always averages</em> the coordinate variable regardless of the
-arithmetic operation type performed on the non-coordinate variables.
-</p>
-<p>The mathematical definition of each arithmetic operation is given below. 
-See section <a href="#ncwa-netCDF-Weighted-Averager"><code>ncwa</code> netCDF Weighted Averager</a>, for additional information on
-masks and normalization.
-If an operation type is not specified with ‘<samp>-y</samp>’ then the operator
-performs an arithmetic average by default.
-Averaging is described first so the terminology for the other operations
-is familiar. 
-</p>
-<table class="cartouche" border="1"><tr><td>
-<p><b>Note for HTML users</b>: 
-<br>The definition of mathematical operations involving rank reduction
-(e.g., averaging) relies heavily on mathematical expressions which
-cannot easily be represented in HTML.  
-<b>See the <a href="./nco.pdf">printed manual</a> for much more detailed
-and complete documentation of this subject.</b></td></tr></table>
-
-<p>The definitions of some of these operations are not universally useful.
-Mostly they were chosen to facilitate standard statistical
-computations within the <acronym>NCO</acronym> framework.
-We are open to redefining and or adding to the above. 
-If you are interested in having other statistical quantities
-defined in <acronym>NCO</acronym> please contact the <acronym>NCO</acronym> project
-(see section <a href="#Help-Requests-and-Bug-Reports">Help Requests and Bug Reports</a>).  
-</p>
-<p>EXAMPLES
-</p>
-<a name="min"></a> <!-- http://nco.sf.net/nco.html#min -->
-<a name="max"></a> <!-- http://nco.sf.net/nco.html#max -->
-<a name="rms"></a> <!-- http://nco.sf.net/nco.html#rms --><p>Suppose you wish to examine the variable <code>prs_sfc(time,lat,lon)</code> 
-which contains a time series of the surface pressure as a function of
-latitude and longitude.
-Find the minimium value of <code>prs_sfc</code> over all dimensions:
-</p><table><tr><td> </td><td><pre class="example">ncwa -y min -v prs_sfc in.nc foo.nc 
-</pre></td></tr></table>
-<p>Find the maximum value of <code>prs_sfc</code> at each time interval for each
-latitude: 
-</p><table><tr><td> </td><td><pre class="example">ncwa -y max -v prs_sfc -a lon in.nc foo.nc
-</pre></td></tr></table>
-<p>Find the root-mean-square value of the time-series of <code>prs_sfc</code> at
-every gridpoint:
-</p><table><tr><td> </td><td><pre class="example">ncra -y rms -v prs_sfc in.nc foo.nc
-ncwa -y rms -v prs_sfc -a time in.nc foo.nc
-</pre></td></tr></table>
-<p>The previous two commands give the same answer but <code>ncra</code> is
-preferred because it has a smaller memory footprint.
-<a name="index-degenerate-dimension"></a>
-Also, by default, <code>ncra</code> leaves the (degenerate) <code>time</code>
-dimension in the output file (which is usually useful) whereas
-<code>ncwa</code> removes the <code>time</code> dimension (unless ‘<samp>-b</samp>’ is
-given).
-</p>
-<p>These operations work as expected in multi-file operators.
-Suppose that <code>prs_sfc</code> is stored in multiple timesteps per file
-across multiple files, say ‘<tt>jan.nc</tt>’, ‘<tt>feb.nc</tt>’,
-‘<tt>march.nc</tt>’.  
-We can now find the three month maximium surface pressure at every point.
-</p><table><tr><td> </td><td><pre class="example">ncea -y max -v prs_sfc jan.nc feb.nc march.nc out.nc
-</pre></td></tr></table>
-
-<a name="stddvn"></a> <!-- http://nco.sf.net/nco.html#stddvn -->
-<a name="sdn"></a> <!-- http://nco.sf.net/nco.html#sdn -->
-<a name="xmp_sdn"></a> <!-- http://nco.sf.net/nco.html#xmp_sdn --><p>It is possible to use a combination of these operations to compute
-the variance and standard deviation of a field stored in a single file
-or across multiple files.
-The procedure to compute the temporal standard deviation of the surface
-pressure at all points in a single file ‘<tt>in.nc</tt>’ involves three
-steps. 
-</p><table><tr><td> </td><td><pre class="example">ncwa -O -v prs_sfc -a time in.nc out.nc
-ncbo -O -v prs_sfc in.nc out.nc out.nc 
-ncra -O -y rmssdn out.nc out.nc
-</pre></td></tr></table>
-<p>First construct the temporal mean of <code>prs_sfc</code> in the file
-‘<tt>out.nc</tt>’.
-Next overwrite ‘<tt>out.nc</tt>’ with the anomaly (deviation from the mean).
-Finally overwrite ‘<tt>out.nc</tt>’ with the root-mean-square of itself. 
-Note the use of ‘<samp>-y rmssdn</samp>’ (rather than ‘<samp>-y rms</samp>’) in the
-final step. 
-This ensures the standard deviation is correctly normalized by one fewer
-than the number of time samples.
-The procedure to compute the variance is identical except for the use of 
-‘<samp>-y var</samp>’ instead of ‘<samp>-y rmssdn</samp>’ in the final step.
-</p>
-<p><code>ncap2</code> can also compute statistics like standard deviations.
-Brute-force implementation of formulae is one option, e.g.,
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'prs_sfc_sdn=sqrt((prs_sfc-prs_sfc.avg($time)^2).total($time))/($time.size-1)'
-      in.nc out.nc
-</pre></td></tr></table>
-<p>The operation may, of course, be broken into multiple steps in order  
-to archive intermediate quantities, such as the time-anomalies
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'prs_sfc_anm=prs_sfc-prs_sfc.avg($time)' \
-      -s 'prs_sfc_sdn=sqrt((prs_sfc_anm^2).total($time))/($time.size-1)' \
-      in.nc out.nc
-</pre></td></tr></table>
-
-<p><code>ncap2</code> supports intrinsic standard deviation functions
-(see section <a href="#Operation-Types">Operation Types</a>) which simplify the above expression to
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'prs_sfc_sdn=(prs_sfc-prs_sfc.avg($time)).rmssdn($time)' in.nc out.nc
-</pre></td></tr></table>
-<p>These instrinsic functions compute the answer quickly and concisely.
-</p>
-<p>The procedure to compute the spatial standard deviation of a field
-in a single file ‘<tt>in.nc</tt>’ involves three steps.
-</p><table><tr><td> </td><td><pre class="example">ncwa -O -v prs_sfc,gw -a lat,lon -w gw in.nc out.nc
-ncbo -O -v prs_sfc,gw in.nc out.nc out.nc
-ncwa -O -y rmssdn -v prs_sfc -a lat,lon -w gw out.nc out.nc
-</pre></td></tr></table>
-<p>First the appropriately weighted (with ‘<samp>-w gw</samp>’) spatial mean values
-are written to the output file.  
-This example includes the use of a weighted variable specified with
-‘<samp>-w gw</samp>’. 
-When using weights to compute standard deviations one must remember to
-include the weights in the initial output files so that they may be used
-again in the final step. 
-The initial output file is then overwritten with the gridpoint
-deviations from the spatial mean.
-Finally the root-mean-square of the appropriately weighted spatial
-deviations is taken.  
-</p>
-<p>The <code>ncap2</code> solution to the spatially-weighted standard
-deviation problem is 
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'prs_sfc_sdn=(prs_sfc*gw-prs_sfc*gw.avg($lat,$lon)).rmssdn($lat,$lon)' \
-      in.nc out.nc
-</pre></td></tr></table>
-<p>Be sure to multiply the variable by the weight prior to computing the
-the anomalies and the standard deviation.
-</p>
-<p>The procedure to compute the standard deviation of a time-series across
-multiple files involves one extra step since all the input must first be
-collected into one file. 
-</p><table><tr><td> </td><td><pre class="example">ncrcat -O -v tpt in.nc in.nc foo1.nc
-ncwa -O -a time foo1.nc foo2.nc
-ncbo -O -v tpt foo1.nc foo2.nc foo3.nc
-ncra -O -y rmssdn foo3.nc out.nc
-</pre></td></tr></table>
-<p>The first step assembles all the data into a single file.
-Though this may consume a lot of temporary disk space, it is more or
-less required by the <code>ncbo</code> operation in the third step.
-</p>
-<a name="typ_cnv"></a> <!-- http://nco.sf.net/nco.html#typ_cnv --><hr size="6">
-<a name="Type-Conversion"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Operation-Types" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Automatic-type-conversion" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Type-Conversion-1"></a>
-<h2 class="section">3.26 Type Conversion</h2>
-<a name="index-type-conversion"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncap2</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncra</code>, <code>ncwa</code><br> 
-Short options: None<br>
-</p></td></tr></table>
-<a name="index-promotion"></a>
-<a name="index-demotion"></a>
-<a name="index-automatic-type-conversion"></a>
-<a name="index-manual-type-conversion"></a>
-<p>Type conversion (often called <em>promotion</em> or <em>demotion</em>) refers
-to the casting of one fundamental data type to another, e.g., converting
-<code>NC_SHORT</code> (two bytes) to <code>NC_DOUBLE</code> (eight bytes). 
-Type conversion is automatic when the language carries out this
-promotion according to an internal set of rules without explicit user
-intervention. 
-In contrast, manual type conversion refers to explicit user commands to
-change the type of a variable or attribute.
-Most type conversion happens automatically, yet there are situations in
-which manual type conversion is advantageous.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Automatic-type-conversion">3.26.1 Automatic type conversion</a></td><td>  </td><td align="left" valign="top">   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Manual-type-conversion">3.26.2 Manual type conversion</a></td><td>  </td><td align="left" valign="top">      
-</td></tr>
-</table>
-
-<hr size="6">
-<a name="Automatic-type-conversion"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Type-Conversion" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Manual-type-conversion" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Type-Conversion" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Automatic-type-conversion-1"></a>
-<h3 class="subsection">3.26.1 Automatic type conversion</h3>
-
-<p>As a general rule, automatic type conversions should be avoided for at
-least two reasons. 
-First, type conversions are expensive since they require creating
-(temporary) buffers and casting each element of a variable from 
-the type it was stored at to some other type.
-Second, the dataset’s creator probably had a good reason
-for storing data as, say, <code>NC_FLOAT</code> rather than <code>NC_DOUBLE</code>. 
-In a scientific framework there is no reason to store data with more
-precision than the observations were made.  
-Thus <acronym>NCO</acronym> tries to avoid performing automatic type conversions
-when performing arithmetic. 
-</p>
-<a name="index-C-language-2"></a>
-<a name="index-Fortran"></a>
-<p>Automatic type conversion during arithmetic in the languages C and
-Fortran is performed only when necessary.
-All operands in an operation are converted to the most precise type
-before the operation takes place.
-However, following this parsimonious conversion rule dogmatically
-results in numerous headaches.
-For example, the average of the two <code>NC_SHORT</code>s <code>17000s</code> and
-<code>17000s</code> results in garbage since the intermediate value which
-holds their sum is also of type <code>NC_SHORT</code> and thus cannot
-represent values greater than 32,767
-<a name="DOCF27" href="#FOOT27">(27)</a>.
-There are valid reasons for expecting this operation to succeed and 
-the <acronym>NCO</acronym> philosophy is to make operators do what you want, not
-what is most pure.
-Thus, unlike C and Fortran, but like many other higher level interpreted
-languages, <acronym>NCO</acronym> arithmetic operators will perform automatic type
-conversion when all the following conditions are met
-<a name="DOCF28" href="#FOOT28">(28)</a>: 
-</p><ol>
-<li> The operator is <code>ncea</code>, <code>ncra</code>, or <code>ncwa</code>. 
-<code>ncbo</code> is not yet included in this list because subtraction did
-not benefit from type conversion.
-This will change in the future
-</li><li> The arithmetic operation could benefit from type conversion.
-Operations that could benefit (e.g., from larger representable sums) 
-include averaging, summation, or any "hard" arithmetic. 
-Type conversion does not benefit searching for minima and maxima
-(‘<samp>-y min</samp>’, or ‘<samp>-y max</samp>’).
-</li><li> The variable on disk is of type <code>NC_BYTE</code>, <code>NC_CHAR</code>,
-<code>NC_SHORT</code>, or <code>NC_INT</code>.
-Type <code>NC_DOUBLE</code> is not type converted because there is no type of
-higher precision to convert to.
-Type <code>NC_FLOAT</code> is not type converted because, in our judgement,
-the performance penalty of always doing so would outweigh the (extremely
-rare) potential benefits.  
-</li></ol>
-
-<p>When these criteria are all met, the operator promotes the variable in
-question to type <code>NC_DOUBLE</code>, performs all the arithmetic
-operations, casts the <code>NC_DOUBLE</code> type back to the original type,
-and finally writes the result to disk. 
-The result written to disk may not be what you expect, because of
-incommensurate ranges represented by different types, and because of
-(lack of) rounding.
-First, continuing the above example, the average (e.g., ‘<samp>-y avg</samp>’)
-of <code>17000s</code> and <code>17000s</code> is written to disk as <code>17000s</code>. 
-The type conversion feature of <acronym>NCO</acronym> makes this possible since
-the arithmetic and intermediate values are stored as <code>NC_DOUBLE</code>s,
-i.e., <code>34000.0d</code> and only the final result must be represented
-as an <code>NC_SHORT</code>.
-Without the type conversion feature of <acronym>NCO</acronym>, the average would
-have been garbage (albeit predictable garbage near <code>-15768s</code>). 
-Similarly, the total (e.g., ‘<samp>-y ttl</samp>’) of <code>17000s</code> and
-<code>17000s</code> written to disk is garbage (actually <code>-31536s</code>) since 
-the final result (the true total) of <em>34000</em> is outside the range
-of type <code>NC_SHORT</code>.  
-</p>
-<a name="index-floor"></a>
-<p>Type conversions use the <code>floor</code> function to convert floating point
-number to integers.
-Type conversions do not attempt to round floating point numbers to the
-nearest integer.
-Thus the average of <code>1s</code> and <code>2s</code> is computed in double
-precisions arithmetic as 
-<em>(<code>1.0d</code> + <code>1.5d</code>)/2) = <code>1.5d</code></em>.
-This result is converted to <code>NC_SHORT</code> and stored on disk as 
-<em><code>floor(1.5d)</code> = <code>1s</code></em>
-<a name="DOCF29" href="#FOOT29">(29)</a>.
-Thus no "rounding up" is performed. 
-The type conversion rules of C can be stated as follows:
-If <var>n</var> is an integer then any floating point value <var>x</var>
-satisfying 
-<var>n</var> <= <var>x</var> < <var>n+1</var>
-will have the value <var>n</var> when converted to an integer.
-</p>
-<hr size="6">
-<a name="Manual-type-conversion"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Automatic-type-conversion" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Batch-Mode" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Type-Conversion" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Manual-type-conversion-1"></a>
-<h3 class="subsection">3.26.2 Manual type conversion</h3>
-<a name="index-ncap2-2"></a>
-<p><code>ncap2</code> provides intrinsic functions for performing manual type
-conversions.
-This, for example, converts variable <code>tpt</code> to external type
-<code>NC_SHORT</code> (a C-type <code>short</code>), and variable <code>prs</code> to
-external type <code>NC_DOUBLE</code> (a C-type <code>double</code>). 
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'tpt=short(tpt);prs=double(prs)' in.nc out.nc
-</pre></td></tr></table>
-<p>See section <a href="#ncap2-netCDF-Arithmetic-Processor"><code>ncap2</code> netCDF Arithmetic Processor</a>, for more details.
-</p>
-<a name="ovr"></a> <!-- http://nco.sf.net/nco.html#ovr -->
-<a name="-O"></a> <!-- http://nco.sf.net/nco.html#-O --><hr size="6">
-<a name="Batch-Mode"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Manual-type-conversion" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#History-Attribute" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Batch-Mode-1"></a>
-<h2 class="section">3.27 Batch Mode</h2>
-<a name="index-batch-mode"></a>
-<a name="index-overwriting-files-1"></a>
-<a name="index-appending-to-files-1"></a>
-<a name="index-force-overwrite"></a>
-<a name="index-force-append"></a>
-<a name="index-_002dO-1"></a>
-<a name="index-_002dA-1"></a>
-<a name="index-_002d_002doverwrite-1"></a>
-<a name="index-_002d_002dovr-1"></a>
-<a name="index-_002d_002dapn-1"></a>
-<a name="index-_002d_002dappend-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: ‘<samp>-O</samp>’, ‘<samp>-A</samp>’<br>
-Long options: ‘<samp>--ovr</samp>’, ‘<samp>--overwrite</samp>’, ‘<samp>--apn</samp>’, ‘<samp>--append</samp>’<br>
-</p></td></tr></table>
-<p>If the <var>output-file</var> specified for a command is a pre-existing file,
-then the operator will prompt the user whether to overwrite (erase) the
-existing <var>output-file</var>, attempt to append to it, or abort the
-operation. 
-However, interactive questions reduce productivity when processing large
-amounts of data.
-Therefore <acronym>NCO</acronym> also implements two ways to override its own safety
-features, the ‘<samp>-O</samp>’ and ‘<samp>-A</samp>’ switches.
-Specifying ‘<samp>-O</samp>’ tells the operator to overwrite any existing
-<var>output-file</var> without prompting the user interactively.
-Specifying ‘<samp>-A</samp>’ tells the operator to attempt to append to any
-existing <var>output-file</var> without prompting the user interactively.
-These switches are useful in batch environments because they suppress
-interactive keyboard input.
-</p>
-<a name="hst"></a> <!-- http://nco.sf.net/nco.html#hst -->
-<a name="history"></a> <!-- http://nco.sf.net/nco.html#history -->
-<a name="-h"></a> <!-- http://nco.sf.net/nco.html#-h --><hr size="6">
-<a name="History-Attribute"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Batch-Mode" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#File-List-Attributes" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="History-Attribute-1"></a>
-<h2 class="section">3.28 History Attribute</h2>
-<a name="index-history-2"></a>
-<a name="index-timestamp"></a>
-<a name="index-global-attributes-1"></a>
-<a name="index-attributes_002c-global-1"></a>
-<a name="index-_002dh"></a>
-<a name="index-_002d_002dhst"></a>
-<a name="index-_002d_002dhistory"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: ‘<samp>-h</samp>’<br>
-Long options: ‘<samp>--hst</samp>’, ‘<samp>--history</samp>’<br>
-</p></td></tr></table>
-<p>All operators automatically append a <code>history</code> global attribute to
-any file they create or modify.
-The <code>history</code> attribute consists of a timestamp and the full string
-of the invocation command to the operator, e.g., ‘<samp>Mon May 26 20:10:24
-1997: ncks in.nc foo.nc</samp>’.
-The full contents of an existing <code>history</code> attribute are copied
-from the first <var>input-file</var> to the <var>output-file</var>.
-The timestamps appear in reverse chronological order, with the most
-recent timestamp appearing first in the <code>history</code> attribute.
-Since <acronym>NCO</acronym> and many other netCDF operators adhere to the
-<code>history</code> convention, the entire data processing path of a given
-netCDF file may often be deduced from examination of its <code>history</code>
-attribute. 
-As of May, 2002, <acronym>NCO</acronym> is case-insensitive to the spelling
-of the <code>history</code> attribute name.
-Thus attributes named <code>History</code> or <code>HISTORY</code> (which are
-non-standard and not recommended) will be treated as valid history
-attributes. 
-When more than one global attribute fits the case-insensitive search
-for "history", the first one found will be used.
-<code>history</code> attribute
-<a name="index-ncatted-3"></a>
-To avoid information overkill, all operators have an optional switch
-(‘<samp>-h</samp>’, ‘<samp>--hst</samp>’, or ‘<samp>--history</samp>’) to override
-automatically appending the <code>history</code> attribute 
-(see section <a href="#ncatted-netCDF-Attribute-Editor"><code>ncatted</code> netCDF Attribute Editor</a>).   
-Note that the ‘<samp>-h</samp>’ switch also turns off writing the
-<code>nco_input_file_list</code> attribute for multi-file operators
-(see section <a href="#File-List-Attributes">File List Attributes</a>).
-</p>
-<a name="fl_lst_in_att"></a> <!-- http://nco.sf.net/nco.html#fl_lst_in_att --><hr size="6">
-<a name="File-List-Attributes"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#History-Attribute" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#CF-Conventions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="File-List-Attributes-1"></a>
-<h2 class="section">3.29 File List Attributes</h2>
-<a name="index-nco_005finput_005ffile_005flist-1"></a>
-<a name="index-nco_005finput_005ffile_005fnumber-1"></a>
-<a name="index-stdin-1"></a>
-<a name="index-global-attributes-2"></a>
-<a name="index-attributes_002c-global-2"></a>
-<a name="index-_002dH"></a>
-<a name="index-_002d_002dfl_005flst_005fin"></a>
-<a name="index-_002d_002dfile_005flist"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncea</code>, <code>ncecat</code>, <code>ncra</code>, <code>ncrcat</code><br>
-Short options: ‘<samp>-H</samp>’<br>
-Long options: ‘<samp>--fl_lst_in</samp>’, ‘<samp>--file_list</samp>’<br>
-</p></td></tr></table>
-<p>Many methods of specifying large numbers of input file names pass
-these names via pipes, encodings, or argument transfer programs
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-When these methods are used, the input file list is not explicitly
-passed on the command line.
-This results in a loss of information since the <code>history</code>
-attribute no longer contains the exact command by which the file
-was created.
-</p>
-<p><acronym>NCO</acronym> solves this dilemma by archiving input file list
-attributes.
-When the input file list to a multi-file operator is specified
-via <code>stdin</code>, the operator, by default, attaches two global
-attributes to any file they create or modify.
-The <code>nco_input_file_number</code> global attribute contains the number of
-input files, and <code>nco_input_file_list</code> contains the file names,
-specified as standard input to the multi-file operator. 
-This information helps to verify that all input files the user thinks
-were piped through <code>stdin</code> actually arrived.
-Without the <code>nco_input_file_list</code> attribute, the information is lost
-forever and the “chain of evidence” would be broken.
-</p>
-<p>The ‘<samp>-H</samp>’ switch overrides (turns off) the default behavior of
-writing the input file list global attributes when input is from
-<code>stdin</code>. 
-The ‘<samp>-h</samp>’ switch does this too, and turns off the <code>history</code>
-attribute as well (see section <a href="#History-Attribute">History Attribute</a>).
-Hence both switches allows space-conscious users to avoid storing what
-may amount to many thousands of filenames in a metadata attribute.
-</p>
-<a name="CF"></a> <!-- http://nco.sf.net/nco.html#CF -->
-<a name="cnv"></a> <!-- http://nco.sf.net/nco.html#cnv -->
-<a name="cnv_CF"></a> <!-- http://nco.sf.net/nco.html#cnv_CF -->
-<a name="cnv_CCSM"></a> <!-- http://nco.sf.net/nco.html#cnv_CCSM --><hr size="6">
-<a name="CF-Conventions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#File-List-Attributes" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ARM-Conventions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="CF-Conventions-1"></a>
-<h2 class="section">3.30 <acronym>CF</acronym> Conventions</h2>
-<a name="index-CF-conventions-3"></a>
-<a name="index-CCSM-conventions"></a>
-<a name="index-UDUnits-2"></a>
-<a name="index-ORO"></a>
-<a name="index-area"></a>
-<a name="index-datesec"></a>
-<a name="index-date"></a>
-<a name="index-gw"></a>
-<a name="index-hyai"></a>
-<a name="index-hyam"></a>
-<a name="index-hybi"></a>
-<a name="index-hybm"></a>
-<a name="index-lat_005fbnds"></a>
-<a name="index-lon_005fbnds"></a>
-<a name="index-msk_005f_002a"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncbo</code>, <code>ncea</code>, <code>ncecat</code>,
-<code>ncflint</code>, <code>ncpdq</code>, <code>ncra</code>, <code>ncwa</code><br>
-Short options: None<br>
-</p></td></tr></table>
-<p><acronym>NCO</acronym> recognizes the Climate and Forecast (<acronym>CF</acronym>)
-metadata conventions, and applies special rules to such data.
-<acronym>NCO</acronym> also handles older <acronym>NCAR</acronym> model datasets, such as 
-<acronym>CCM</acronym> and early <acronym>CCSM</acronym> datasets, with its <acronym>CF</acronym>    
-rules even though the earlier data may not contain an explicit
-<code>Conventions</code> attribute (e.g., ‘<samp>CF-1.0</samp>’).
-We refer to all such data collectively as <acronym>CF</acronym> data.
-Skip this section if you never work with <acronym>CF</acronym> data.
-</p>
-<p>The <acronym>CF</acronym> netCDF conventions are described 
-<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system">here</a>. 
-Most <acronym>CF</acronym> netCDF conventions are transparent to <acronym>NCO</acronym>  
-<a name="DOCF30" href="#FOOT30">(30)</a>.
-There are no known pitfalls associated with using any <acronym>NCO</acronym>
-operator on files adhering to these conventions
-<a name="DOCF31" href="#FOOT31">(31)</a>.
-However, to facilitate maximum user friendliness, <acronym>NCO</acronym> applies 
-special rules to certain variables in <acronym>CF</acronym> files.
-The special functions are not required by the <acronym>CF</acronym> netCDF
-conventions, yet experience shows that they simplify data analysis.
-</p>
-<p>Currently, <acronym>NCO</acronym> determines whether a datafile is a
-<acronym>CF</acronym> output datafile simply by checking (case-insensitively)
-whether the value of the global attribute <code>Conventions</code> (if any)
-equals ‘<samp>CF-1.0</samp>’ or ‘<samp>NCAR-CSM</samp>’ 
-Should <code>Conventions</code> equal either of these in the (first)
-<var>input-file</var>, <acronym>NCO</acronym> will apply special rules to certain
-variables because of their usual meaning in <acronym>CF</acronym> files. 
-<acronym>NCO</acronym> will not average the following variables often found in
-<acronym>CF</acronym> files: 
-<code>ntrm</code>, <code>ntrn</code>, <code>ntrk</code>, <code>ndbase</code>, <code>nsbase</code>,
-<code>nbdate</code>, <code>nbsec</code>, <code>mdt</code>, <code>mhisf</code>.
-These variables contain scalar metadata such as the resolution of the
-host geophysical model and it makes no sense to change their values.
-</p>
-<a name="index-non_002dcoordinate-grid-properties"></a>
-<p>Furthermore, the <em>size and rank-preserving arithmetic operators</em> try
-not to operate on certain grid properties.
-These operators are <code>ncap</code>, <code>ncbo</code>, <code>ncea</code>,
-<code>ncflint</code>, and <code>ncpdq</code> (when used for packing, not for
-permutation).  
-These operators do not operate, by default, on (i.e., add, subtract,
-pack, etc.) the following variables:   
-<code>ORO</code>, 
-<code>area</code>, 
-<code>datesec</code>, 
-<code>date</code>, 
-<code>gw</code>, 
-<code>hyai</code>, 
-<code>hyam</code>,
-<code>hybi</code>. 
-<code>hybm</code>, 
-<code>lat_bnds</code>, 
-<code>lon_bnds</code>,
-<code>msk_*</code>.
-These variables represent the Gaussian weights, the orography field,
-time fields, hybrid pressure coefficients, and latititude/longitude
-boundaries.
-We call these fields non-coordinate <em>grid properties</em>.
-Coordinate grid properties are easy to identify because they are 
-coordinate variables such as <code>latitude</code> and <code>longitude</code>.
-</p>
-<p>Users usually want <em>all</em> grid properties to remain unaltered in the
-output file. 
-To be treated as a grid property, the variable name must <em>exactly</em>
-match a name in the above list, or be a coordinate variable. 
-The handling of <code>msk_*</code> is exceptional in that <em>any</em> variable 
-name beginning with the string <code>msk_</code> is considered to be a
-“mask” and is thus preserved (not operated on arithmetically).
-</p>
-<p>You must spoof <acronym>NCO</acronym> if you would like any grid properties
-or other special <acronym>CF</acronym> fields processed normally.
-For example rename the variables first with <code>ncrename</code>, 
-or alter the <code>Conventions</code> attribute.
-</p>
-<a name="cnv_CF_bnd"></a> <!-- http://nco.sf.net/nco.html#cnv_CF_bnd -->
-<a name="bnd"></a> <!-- http://nco.sf.net/nco.html#bnd --><a name="index-bounds"></a>
-<a name="index-bounds-convention"></a>
-<p>As of <acronym>NCO</acronym> version 4.0.8 (April, 2011), <acronym>NCO</acronym> 
-supports the <acronym>CF</acronym> <code>bounds</code> convention for cell boundaries
-described 
-<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries">here</a>.
-This convention allows coordinate variables
-(including multidimensional coordinates) to describe the boundaries of
-their cells.
-This is done by naming the variable which contains the bounds in
-in the <code>bounds</code> attribute. 
-Note that coordinates of rank <em>N</em> have bounds of rank <em>N+1</em>.
-NCO-generated subsets of <acronym>CF</acronym>-compliant files with <code>bounds</code>
-attributes will include the coordinates specified by the <code>bounds</code>
-attribute, if any.  
-Hence the subsets will themselves be <acronym>CF</acronym>-compliant.
-</p>
-<a name="cnv_CF_crd"></a> <!-- http://nco.sf.net/nco.html#cnv_CF_crd --><a name="index-coordinates-1"></a>
-<a name="index-coordinates-convention"></a>
-<a name="index-coordinate-variable-2"></a>
-<a name="index-auxiliary-coordinates"></a>
-<a name="index-subsetting-2"></a>
-<a name="index-_002dC-1"></a>
-<a name="index-_002dc-1"></a>
-<a name="index-_002d_002dno_002dcoords-1"></a>
-<a name="index-_002d_002dno_002dcrd-1"></a>
-<a name="index-_002d_002dcoords-1"></a>
-<a name="index-_002d_002dcrd-1"></a>
-<p>As of <acronym>NCO</acronym> version 3.9.6 (January, 2009), <acronym>NCO</acronym>
-supports the <acronym>CF</acronym> <code>coordinates</code> convention described 
-<a href="http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system">here</a>. 
-This convention allows variables to specify additional coordinates
-(including multidimensional coordinates) in a space-separated string
-attribute named <code>coordinates</code>. 
-NCO attaches any such coordinates to the extraction list along with
-variable and its usual (one-dimensional) coordinates, if any.
-These auxiliary coordinates are subject to the user-specified overrides
-described in <a href="#Subsetting-Coordinate-Variables">Subsetting Coordinate Variables</a>.
-</p>
-<a name="cnv_ARM"></a> <!-- http://nco.sf.net/nco.html#cnv_ARM --><hr size="6">
-<a name="ARM-Conventions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#CF-Conventions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Version" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ARM-Conventions-1"></a>
-<h2 class="section">3.31 <acronym>ARM</acronym> Conventions</h2>
-<a name="index-ARM-conventions"></a>
-<a name="index-time_005foffset"></a>
-<a name="index-base_005ftime"></a>
-<a name="index-time-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: <code>ncrcat</code><br>
-Short options: None<br>
-</p></td></tr></table>
-<p><code>ncrcat</code> has been programmed to correctly handle data files
-which utilize the Atmospheric Radiation Measurement (<acronym>ARM</acronym>)
-Program <a href="http://www.arm.gov/data/time.stm">convention</a> for
-time and time offsets.
-If you do not work with <acronym>ARM</acronym> data then you may skip this
-section. 
-<acronym>ARM</acronym> data files store time information in two variables, a
-scalar, <code>base_time</code>, and a record variable, <code>time_offset</code>.
-Subtle but serious problems can arise when these type of files are
-just blindly concatenated.
-Therefore <code>ncrcat</code> has been specially programmed to be able to
-chain together consecutive <acronym>ARM</acronym> <var>input-files</var> and produce
-and an <var>output-file</var> which contains the correct time information.
-Currently, <code>ncrcat</code> determines whether a datafile is an
-<acronym>ARM</acronym> datafile simply by testing for the existence of the
-variables <code>base_time</code>, <code>time_offset</code>, and the dimension
-<code>time</code>.  
-If these are found in the <var>input-file</var> then <code>ncrcat</code> will 
-automatically perform two non-standard, but hopefully useful,
-procedures. 
-First, <code>ncrcat</code> will ensure that values of <code>time_offset</code>
-appearing in the <var>output-file</var> are relative to the <code>base_time</code>
-appearing in the first <var>input-file</var> (and presumably, though not
-necessarily, also appearing in the <var>output-file</var>).
-Second, if a coordinate variable named <code>time</code> is not found in the
-<var>input-files</var>, then <code>ncrcat</code> automatically creates the
-<code>time</code> coordinate in the <var>output-file</var>.  
-The values of <code>time</code> are defined by the <acronym>ARM</acronym> conventions 
-<em><var>time</var> = <var>base_time</var> + <var>time_offset</var></em>.
-Thus, if <var>output-file</var> contains the <code>time_offset</code>
-variable, it will also contain the <code>time</code> coordinate.
-<a name="index-history-3"></a>
-<a name="index-global-attributes-3"></a>
-<a name="index-attributes_002c-global-3"></a>
-A short message is added to the <code>history</code> global attribute
-whenever these <acronym>ARM</acronym>-specific procedures are executed.
-</p>
-<a name="vrs"></a> <!-- http://nco.sf.net/nco.html#vrs -->
-<a name="version"></a> <!-- http://nco.sf.net/nco.html#version --><hr size="6">
-<a name="Operator-Version"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ARM-Conventions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Operator-Version-1"></a>
-<h2 class="section">3.32 Operator Version</h2>
-<a name="index-version"></a>
-<a name="index-RCS"></a>
-<a name="index-_002dr-2"></a>
-<a name="index-_002d_002drevision-1"></a>
-<a name="index-_002d_002dversion-1"></a>
-<a name="index-_002d_002dvrs-1"></a>
-<table class="cartouche" border="1"><tr><td>
-<p>Availability: All operators<br>
-Short options: ‘<samp>-r</samp>’<br>
-Long options: ‘<samp>--revision</samp>’, ‘<samp>--version</samp>’, or ‘<samp>--vrs</samp>’<br>
-</p></td></tr></table>
-<p>All operators can be told to print their version information,
-library version, copyright notice, and compile-time configuration 
-with the ‘<samp>-r</samp>’ switch, or its long-option equivalent
-‘<samp>revision</samp>’. 
-The ‘<samp>--version</samp>’ or ‘<samp>--vrs</samp>’ switches print the operator
-version information only.
-The internal version number varies between operators, and indicates the 
-most recent change to a particular operator’s source code.
-This is useful in making sure you are working with the most recent
-operators.
-The version of <acronym>NCO</acronym> you are using might be, e.g., <code>3.9.5</code>.
-Using ‘<samp>-r</samp>’ on, say, <code>ncks</code>, produces something like 
-‘<samp>NCO netCDF Operators version "3.9.5" last modified 2008/05/11 built May 12 2008 on neige by zender 
-Copyright (C) 1995--2008 Charlie Zender
-ncks version 20090918</samp>’.
-This tells you that <code>ncks</code> contains all patches up to version 
-<code>3.9.5</code>, which dates from May 11, 2008.
-<a name="rfr"></a> <!-- http://nco.sf.net/nco.html#rfr --></p><hr size="6">
-<a name="Operator-Reference-Manual"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Operator-Version" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Common-features" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Operator-Reference-Manual-1"></a>
-<h1 class="chapter">4. Operator Reference Manual</h1>
-
-<p>This chapter presents reference pages for each of the operators
-individually. 
-The operators are presented in alphabetical order.
-<a name="index-command-line-switches-3"></a>
-All valid command line switches are included in the syntax statement.
-Recall that descriptions of many of these command line switches are
-provided only in <a href="#Common-features">NCO Features</a>, to avoid redundancy.
-Only options specific to, or most useful with, a particular operator are 
-described in any detail in the sections below.  
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td><td>  </td><td align="left" valign="top">    
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td><td>  </td><td align="left" valign="top">     
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-</table>
-
-
-<a name="ncap"></a> <!-- http://nco.sf.net/nco.html#ncap -->
-<a name="ncap2"></a> <!-- http://nco.sf.net/nco.html#ncap2 --><hr size="6">
-<a name="ncap2-netCDF-Arithmetic-Processor"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Syntax-of-ncap2-statements" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncap2-netCDF-Arithmetic-Processor-1"></a>
-<h2 class="section">4.1 <code>ncap2</code> netCDF Arithmetic Processor</h2>
-<a name="index-parser"></a>
-<a name="index-lexer"></a>
-<a name="index-arithmetic-processor"></a>
-<a name="index-ncap-1"></a>
-<a name="index-ncap2-3"></a>
-
-<table class="cartouche" border="1"><tr><td>
-<p><code>ncap2</code> understands a relatively full-featured 
-language of operations, including loops, conditionals, arrays,
-and math functions.
-<code>ncap2</code> is the most rapidly changing <acronym>NCO</acronym> operator and
-its documentation is incomplete.
-The distribution file ‘<tt>data/ncap2_tst.nco</tt>’ contains an up-to-date
-overview of its syntax and capabilities. 
-The ‘<tt>data/*.nco</tt>’ distribution files (especially
-‘<tt>bin_cnt.nco</tt>’, ‘<tt>psd_wrf.nco</tt>’, and ‘<tt>rgr.nco</tt>’) contain
-in-depth examples of <code>ncap2</code> solutions to complex problems.
-</p></td></tr></table>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncap2 [-3] [-4] [-6] [<a href="http://nco.sf.net/nco.html#-A">-A</a>] [-C] [-c] [-D <var>dbg</var>] [-F] [-f] [-L <var>dfl_lvl</var>] 
-[-l <var>path</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r] 
-[-s <var>algebra</var>] [-S <var>fl.nco</var>] [-t <var>thr_nbr</var>] [-v]
-<var>input-file</var> [<var>output-file</var>]  
-</pre></td></tr></table>
- 
-<p>DESCRIPTION
-</p>
-<p><code>ncap2</code> arithmetically processes netCDF files
-<a name="DOCF32" href="#FOOT32">(32)</a>.
-<a name="index-script-file"></a>
-<a name="index-_002d_002dscript_002dfile"></a>
-<a name="index-_002d_002dfl_005fspt"></a>
-<a name="index-_002d_002dscript"></a>
-<a name="index-_002d_002dspt"></a>
-The processing instructions are contained either in the <acronym>NCO</acronym>
-script file ‘<tt>fl.nco</tt>’ or in a sequence of command line arguments.
-The options ‘<samp>-s</samp>’ (or long options ‘<samp>--spt</samp>’ or ‘<samp>--script</samp>’)
-are used for in-line scripts and ‘<samp>-S</samp>’ (or long options
-‘<samp>--fl_spt</samp>’ or ‘<samp>--script-file</samp>’) are used to provide the
-filename where (usually multiple) scripting commands are pre-stored.   
-<code>ncap2</code> was written to perform arbitrary algebraic
-transformations of data and archive the results as easily as possible.
-<a name="index-derived-fields"></a>
-See section <a href="#Missing-Values">Missing values</a>, for treatment of missing values.
-The results of the algebraic manipulations are called 
-<em>derived fields</em>. 
-</p>
-<p>Unlike the other operators, <code>ncap2</code> does not accept a list of
-variables to be operated on as an argument to ‘<samp>-v</samp>’ 
-(see section <a href="#Subsetting-Variables">Subsetting Variables</a>).
-Rather, the ‘<samp>-v</samp>’ switch takes no arguments and indicates
-that <code>ncap2</code> should output <em>only</em> user-defined variables.
-<code>ncap2</code> neither accepts nor understands the <var>-x</var> switch.
-</p>
-
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Expressions">4.1.2 Expressions</a></td><td>  </td><td align="left" valign="top">                 
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Dimensions">4.1.3 Dimensions</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Left-hand-casting">4.1.4 Left hand casting</a></td><td>  </td><td align="left" valign="top">           
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td><td>  </td><td align="left" valign="top">       
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Attributes">4.1.6 Attributes</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Number-literals">4.1.7 Number literals</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#if-statement">4.1.8 if statement</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#print-statement">4.1.9 print statement</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></td><td>  </td><td align="left" valign="top">        
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td><td>  </td><td align="left" valign="top">       
-</td></tr>
-<tr><td align="left" valign="top"><a href="#RAM-variables">4.1.12 RAM variables</a></td><td>  </td><td align="left" valign="top">               
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Where-statement">4.1.13 Where statement</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Loops">4.1.14 Loops</a></td><td>  </td><td align="left" valign="top">                       
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Include-files">4.1.15 Include files</a></td><td>  </td><td align="left" valign="top">               
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Sort-methods">4.1.16 <code>sort</code> methods</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td><td>  </td><td align="left" valign="top">             
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Bilinear-interpolation">4.1.18 Bilinear interpolation</a></td><td>  </td><td align="left" valign="top">      
-</td></tr>
-<tr><td align="left" valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td><td>  </td><td align="left" valign="top">       
-</td></tr>
-<tr><td align="left" valign="top"><a href="#GSL-interpolation">4.1.20 GSL interpolation</a></td><td>  </td><td align="left" valign="top">           
-</td></tr>
-<tr><td align="left" valign="top"><a href="#GSL-least_002dsquares-fitting">4.1.21 GSL least-squares fitting</a></td><td>  </td><td align="left" valign="top">   
-</td></tr>
-<tr><td align="left" valign="top"><a href="#GSL-statistics">4.1.22 GSL statistics</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#GSL-random-number-generation">4.1.23 GSL random number generation</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Operators-precedence-and-associativity">4.1.26 Operators precedence and associativity</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-<tr><td align="left" valign="top"><a href="#ID-Quoting">4.1.27 ID Quoting</a></td><td>  </td><td align="left" valign="top">                  
-</td></tr>
-</table>
-
-<a name="att_prp"></a> <!-- http://nco.sf.net/nco.html#att_prp --><p>Defining new variables in terms of existing variables is a powerful
-feature of <code>ncap2</code>. 
-<a name="index-derived-fields-1"></a>
-Derived fields inherit the metadata (i.e., attributes) of their
-ancestors, if any, in the script or input file. 
-When the derived field is completely new (no identically-named ancestors
-exist), then it inherits the metadata (if any) of the left-most variable
-on the right hand side of the defining expression.
-This metadata inheritance is called <em>attribute propagation</em>.
-Attribute propagation is intended to facilitate well-documented 
-data analysis, and we welcome suggestions to improve this feature.
-</p>
-<p>The only exception to this rule of attribute propagation is in cases of
-left hand casting (see section <a href="#Left-hand-casting">Left hand casting</a>).
-The user must manually define the proper metadata for variables defined
-using left hand casting. 
-</p>
-<a name="syn"></a> <!-- http://nco.sf.net/nco.html#syn --><hr size="6">
-<a name="Syntax-of-ncap2-statements"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Expressions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Syntax-of-ncap2-statements-1"></a>
-<h3 class="subsection">4.1.1 Syntax of <code>ncap2</code> statements</h3>
-<a name="index-statement"></a>
-<a name="index-syntax"></a>
-<p>Mastering <code>ncap2</code> is relatively simple.
-Each valid statement <var>statement</var> consists of standard forward
-algebraic expression. 
-The ‘<tt>fl.nco</tt>’, if present, is simply a list of such statements,
-whitespace, and comments.
-<a name="index-C-language-4"></a>
-The syntax of statements is most like the computer language C.
-The following characteristics of C are preserved:
-</p><dl compact="compact">
-<dt> Array syntax</dt>
-<dd><a name="index-array-syntax"></a>
-<a name="index-_005b_005d-_0028array-delimiters_0029"></a>
-<p>Arrays elements are placed within <code>[]</code> characters;
-</p></dd>
-<dt> Array indexing</dt>
-<dd><a name="index-array-indexing"></a>
-<p>Arrays are 0-based;
-</p></dd>
-<dt> Array storage</dt>
-<dd><a name="index-array-storage"></a>
-<p>Last dimension is most rapidly varying;
-</p></dd>
-<dt> Assignment statements</dt>
-<dd><a name="index-assignment-statement"></a>
-<a name="index-semi_002dcolon"></a>
-<a name="index-_003b-_0028end-of-statement_0029"></a>
-<p>A semi-colon ‘<samp>;</samp>’ indicates the end of an assignment statement.
-</p></dd>
-<dt> Comments</dt>
-<dd><a name="index-comments"></a>
-<a name="index-_002f_002a_002e_002e_002e_002a_002f-_0028comment_0029"></a>
-<a name="index-_002f_002f-_0028comment_0029"></a>
-<p>Multi-line comments are enclosed within <code>/* */</code> characters.
-Single line comments are preceded by <code>//</code> characters.
-</p></dd>
-<dt> Nesting</dt>
-<dd><a name="index-including-files"></a>
-<a name="index-nesting"></a>
-<a name="index-_0023include"></a>
-<p>Files may be nested in scripts using <code>#include <var>script</var></code>.
-Note that the <code>#include</code> command is not followed by a semi-colon
-because it is a pre-processor directive, not an assignment statement.
-The filename ‘<tt>script</tt>’ is interpreted relative to the run directory.
-</p></dd>
-<dt> Attribute syntax</dt>
-<dd><a name="index-attribute-syntax"></a>
-<a name="index-_0040-_0028attribute_0029"></a>
-<p>The at-sign <code>@</code> is used to delineate an attribute name from a
-variable name.
-</p></dd>
-</dl>
-
-
-<a name="ncap_xpr"></a> <!-- http://nco.sf.net/nco.html#ncap_xpr --><hr size="6">
-<a name="Expressions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Syntax-of-ncap2-statements" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Dimensions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="index-expressions"></a>
-<a name="Expressions-1"></a>
-<h3 class="subsection">4.1.2 Expressions</h3>
-<p>Expressions are the fundamental building block of <code>ncap2</code>. 
-Expressions are composed of variables, numbers, literals, and
-attributes. 
-<a name="index-C-language-5"></a>
-The following C operators are “overloaded” and work with scalars 
-and multi-dimensional arrays:
-</p><table><tr><td> </td><td><pre class="example">Arithmetic Operators: * / % + - ^
-Binary Operators:     > >= < <= == != == || && >> <<
-Unary Operators:      + - ++ -- !
-Conditional Operator: exp1 ? exp2 : exp3
-Assign Operators:     = += -= /= *=
-</pre></td></tr></table>
-
-<p>In the following section a <em>variable</em> also refers to a 
-number literal which is read in as a scalar variable:
-</p>
-<p><strong>Arithmetic and Binary Operators </strong>
-</p>
-<p>Consider <em>var1 ’op’ var2</em>
-</p>
-<p><strong>Precision</strong>
-</p><ul>
-<li> When both operands are variables, the result has the precision of the higher precision operand.
-</li><li> When one operand is a variable and the other an attribute, the result has the precision of the variable. 
-</li><li> When both operands are attributes, the result has the precision of the more precise attribute.
-</li><li> The exponentiation operator “^” is an exception to the above rules. 
-When both operands have type less than <code>NC_FLOAT</code>, the result is <code>NC_FLOAT</code>. 
-When either type is <code>NC_DOUBLE</code>, the result is also <code>NC_DOUBLE</code>. 
-</li></ul>
-
-<p><strong>Rank</strong>
-</p><ul>
-<li> The Rank of the result is generally equal to Rank of the operand
-that has the greatest number of dimensions.  
-</li><li> If the dimensions in var2 are a subset of the dimensions in var1
-then its possible to  make var2 conform to var1 through broadcasting and
-or dimension reordering.  
-</li><li> Broadcasting a variable means creating data in non-existing
-dimensions from the data in existing dimensions. 
-</li><li> More specifically: If the numbers of dimensions in var1 is greater
-than or equal to the number of dimensions in var2 then an attempt is
-made to make var2 conform to var1 ,else var1 is made to conform to
-var2. If conformance  is not possible then an error message will be
-emitted and script execution will cease.<br> 
-</li></ul>
-
-<p>Even though the logical operators return True(1) or False(0)
-they are treated in the same way as the arithmetic operators with regard
-to precision and rank.<br> 
-Examples:
-</p>
-<table><tr><td> </td><td><pre class="example">dimensions: time=10, lat=2, lon=4
-Suppose we have the two variables:
-
-double  P(time,lat,lon);
-float   PZ0(lon,lat);  // PZ0=1,2,3,4,5,6,7,8;
-
-Consider now the expression:
- PZ=P-PZ0
-
-PZ0 is made to conform to P and the result is
-PZ0 =
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-
-Once the expression is evaluated then PZ will be of type double;
-
-Consider now 
- start=four-att_var at double_att;  // start =-69  and is of type intger;
- four_pow=four^3.0f               // four_pow=64 and is of type float  
- three_nw=three_dmn_var_sht*1.0f; // type is now float
- start at n1=att_var at short_att*att_var at int_att; 
-                                  // start at n1=5329 and is type int 
-</pre></td></tr></table>
-
-<p><strong>Binary Operators</strong> <br> 
-<a name="index-binary-Operators"></a>
-Unlike C the binary operators return an array of values. 
-There is no such thing as short circuiting with the AND/OR operators. 
-Missing values are carried into the result in the same way they are with
-the arithmetic operators. 
-When an expression is evaluated in an if() the missing values are
-treated as true.<br>  
-The binary operators are, in order of precedence: 
-</p><table><tr><td> </td><td><pre class="example">	
-!   Logical Not
-----------------------------
-<<  Less Than Selection
->>  Greater Than Selection
-----------------------------
->   Greater than
->=  Greater than or equal to
-<   Less than
-<=  Less than or equal to
-----------------------------
-==  Equal to
-!=  Not equal to
-----------------------------
-&&  Logical AND
-----------------------------
-||  Logical OR
-----------------------------
-</pre></td></tr></table>
-
-<p>To see all operators: see section <a href="#Operators-precedence-and-associativity">Operators precedence and associativity</a> 
-Examples:
-</p><table><tr><td> </td><td><pre class="example">tm1= time>2 && time <7;  // tm1 = 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ; type double;
-tm2= time==3 || time>=6; // tm2 = 0, 0, 1, 0, 0, 1, 1, 1, 1, 1 ; type double
-tm3= int(!tm1);          // tm3=  1, 1, 0, 0, 0, 0, 1, 1, 1, 1 ; type int 
-tm4= tm1 && tm2;         // tm4=  0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ; type double;
-tm5= !tm4;               // tm5=  1, 1, 0, 1, 1, 0, 1, 1, 1, 1 ; type double;
-</pre></td></tr></table>
-	
-<p><strong>Regular Assign Operator</strong> <br>
-<em>var1 ’=’ exp1</em> <br>
-If var1 doesn’t already exist in Output then var1 is written to Output with the values and dimensions from expr1. If var1 already exists in Output, then the only requirement on expr1 is that the number of elements must match the number already on disk. The type of expr1 is converted if necessary to the disk type.
-</p>
-<p><strong> Other Assign Operators +=,-=,*=./= </strong> <br>
-        <em>var1 ’ass_op’ exp1 </em><br>
-if exp1 is a variable and it doesn’t conform to var1 then an attempt is made to make it conform to var1. If exp1 is an attribute it must have unity size or else have the same number of elements as var1. If expr1 has a different type to var1 the it is converted to the var1 type.
-</p>
-<p>example:
-</p>
-<table><tr><td> </td><td><pre class="example">z1=four+=one*=10 // z1=14 four=14 one=10;	
-time-=2          // time= -1,0,1,2,3,4,5,6,7,8
-</pre></td></tr></table>
-
-<p><strong>Increment/ Decrement Operators <br> </strong> 
-These work in a similar fashion to their regular C counterparts. If say the variable "four" is input only then the statement "++four" effectively means -read four from input increment each element by one , then write the new values to Output;
-</p>
-<p>Example:
-</p><table><tr><td> </td><td><pre class="example">n2=++four;   n2=5, four=5 
-n3=one--+20; n3=21  one=0;	 
-n4=--time;   n4=time=0.,1.,2.,3.,4.,5.,6.,7.,8.,9.;
-</pre></td></tr></table>
-
-<p><strong>Conditional Operator ?: </strong> <br>
-<a name="index-conditional-Operator"></a>
-<em>exp1 ? exp2 : exp3 </em> <br>
-The conditional operator (or ternary Operator) is a succinct way
-of writing an if/then/else. If exp1 evaluates to true then exp2 is
-returned else exp3 is returned. 
-</p>
-<p>Example:
-</p><table><tr><td> </td><td><pre class="example">weight_avg= weight.avg();
-weight_avg at units= (weight_avg ==1 ? "kilo" : "kilos");  
-PS_nw= PS - (PS.min() >100000 ? 100000 : 0 );
-</pre></td></tr></table>
-
-<p><strong>Clipping Operators</strong>
-<a name="index-clipping-operators"></a>
-</p><dl compact="compact">
-<dt> << Less-than Clipping<br></dt>
-<dd><p>For arrays, the less-than selection operator selects all values in the
-left operand that are less than the corresponding value in the right
-operand. 
-If the value of the left side is greater than or equal to the
-corresponding value of the right side, then the right side value is 
-placed in the result	 
-</p></dd>
-<dt> >> Greater-than Clipping<br></dt>
-<dd><p>For arrays, the greater-than selection operator selects all values in
-the left operand that are greater than the corresponding value in the
-right operand. 
-If the value of the left side is less than or equal to the corresponding
-value of the right side, then the right side value is placed in the
-result.  
-</p></dd>
-</dl>
-
-<p>Example:
-</p><table><tr><td> </td><td><pre class="example">RDM2= RDM >>100.0; RDM2=100,100,100,100,126,126,100,100,100, 100; // type double
-RDM2= RDM << 90s ; RDM3=  1,  9, 36, 84, 90, 90, 84, 36,  9,   1; // type int
-</pre></td></tr></table>
-
-<a name="ncap_dims"></a> <!-- http://nco.sf.net/nco.html#ncap_dims --><hr size="6">
-<a name="Dimensions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Expressions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Left-hand-casting" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Dimensions-1"></a>
-<h3 class="subsection">4.1.3 Dimensions</h3>
-<a name="index-dimensionsncap"></a>
-<a name="index-defdim_0028_0029"></a>
-<p>Dimensions are defined in Output using the <code>defdim()</code> function.
-</p><table><tr><td> </td><td><pre class="example">defdim("cnt",10);
-</pre></td></tr></table>
-
-<p>This dimension name must then be prefixed with a dollar-sign ‘<samp>$</samp>’
-when referred to in method arguments or left-hand-casting, e.g.,
-</p><table><tr><td> </td><td><pre class="example">new_var[$cnt]=time;
-temperature[$time,$lat,$lon]=35.5;
-temp_avg=temperature.avg($time);
-</pre></td></tr></table>
-
-<p>The <code>size</code> method allows the dimension size to be used in an
-arithmetic expression:
-</p><table><tr><td> </td><td><pre class="example">time_avg=time.total() / $time.size;
-</pre></td></tr></table>
-
-<p>Increase the size of a new variable by one and set new member to zero:
-</p><table><tr><td> </td><td><pre class="example">defdim("cnt_new",$cnt.size+1);
-new_var[$cnt_new]=0.0;
-new_var(0:($cnt_new.size-2))=old_var;
-</pre></td></tr></table>
-
-<p><strong>Dimension Abbreviations <br></strong>
-It is possible to use dimension abbreviations as method arguments:<br>
-<code>$0</code> is the first dimension of a variable<br>
-<code>$1</code> is the second dimension of a variable<br>
-<code>$n</code> is the n+1 dimension of a variable<br>
-</p>
-<table><tr><td> </td><td><pre class="example">float four_dmn_rec_var(time,lat,lev,lon);
-double three_dmn_var_dbl(time,lat,lon);
-
-four_nw=four_dmn_rev_var.reverse($time,$lon)
-four_nw=four_dmn_rec_var.reverse($0,$3);
-
-four_avg=four_dmn_rec_var.avg($lat,$lev);  
-four_avg=four_dmn_rec_var.avg($1,$2);  
-
-three_mw=three_dmn_var_dbl.permute($time,$lon,$lat);
-three_mw=three_dmn_var_dbl.permute($0,$2,$1);
-</pre></td></tr></table>
-
-<p><strong>ID Quoting <br></strong>
-If the dimension name contains non-regular characters use ID quoting. 
-See see section <a href="#ID-Quoting">ID Quoting</a>
-</p><table><tr><td> </td><td><pre class="example">defdim("a--list.A",10);
-A1['$a--list.A']=30.0;
-</pre></td></tr></table>
-
-<p><strong>GOTCHA <br></strong>
-It is not possible to manually define in Output any dimensions that exist in Input. When a variable from Input appears in an expression or statement its  dimensions in Input are  automagically copied to Output (if they are not already present)
-</p>
-<a name="lhc"></a> <!-- http://nco.sf.net/nco.html#lhc -->
-<a name="lhs"></a> <!-- http://nco.sf.net/nco.html#lhs --><hr size="6">
-<a name="Left-hand-casting"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Dimensions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Arrays-and-hyperslabs" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Left-hand-casting-1"></a>
-<h3 class="subsection">4.1.4 Left hand casting</h3>
-<a name="index-hybrid-coordinate-system"></a>
-<a name="index-left-hand-casting-1"></a>
-<a name="index-LHS"></a>
-<p>The following examples demonstrate the utility of the 
-<em>left hand casting</em> ability of <code>ncap2</code>.
-Consider first this simple, artificial, example.
-If <var>lat</var> and <var>lon</var> are one dimensional coordinates of
-dimensions <var>lat</var> and <var>lon</var>, respectively, then addition
-of these two one-dimensional arrays is intrinsically ill-defined because 
-whether <var>lat_lon</var> should be dimensioned <var>lat</var> by <var>lon</var>
-or <var>lon</var> by <var>lat</var> is ambiguous (assuming that addition is to
-remain a <em>commutative</em> procedure, i.e., one that does not depend on 
-the order of its arguments).
-Differing dimensions are said to be <em>orthogonal</em> to one another,
-and sets of dimensions which are mutually exclusive are orthogonal
-as a set and any arithmetic operation between variables in orthogonal
-dimensional spaces is ambiguous without further information.
-</p>
-<p>The ambiguity may be resolved by enumerating the desired dimension 
-ordering of the output expression inside square brackets on the
-left hand side (<acronym>LHS</acronym>) of the equals sign.
-This is called <em>left hand casting</em> because the user resolves the 
-dimensional ordering of the <acronym>RHS</acronym> of the expression by
-specifying the desired ordering on the <acronym>LHS</acronym>.
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'lat_lon[lat,lon]=lat+lon' in.nc out.nc
-ncap2 -s 'lon_lat[lon,lat]=lat+lon' in.nc out.nc
-</pre></td></tr></table>
-<p>The explicit list of dimensions on the <acronym>LHS</acronym>, <code>[lat,lon]</code>
-resolves the otherwise ambiguous ordering of dimensions in
-<var>lat_lon</var>. 
-In effect, the <acronym>LHS</acronym> <em>casts</em> its rank properties onto the 
-<acronym>RHS</acronym>.
-Without <acronym>LHS</acronym> casting, the dimensional ordering of <var>lat_lon</var>
-would be undefined and, hopefully, <code>ncap2</code> would print an error
-message. 
-</p>
-<p>Consider now a slightly more complex example.
-In geophysical models, a coordinate system based on 
-a blend of terrain-following and density-following surfaces is 
-called a <em>hybrid coordinate system</em>.
-In this coordinate system, four variables must be manipulated to
-obtain the pressure of the vertical coordinate:
-<var>PO</var> is the domain-mean surface pressure offset (a scalar),
-<var>PS</var> is the local (time-varying) surface pressure (usually two
-horizontal spatial dimensions, i.e. latitude by longitude), <var>hyam</var>
-is the weight given to surfaces of constant density (one spatial
-dimension, pressure, which is orthogonal to the horizontal
-dimensions), and <var>hybm</var> is the weight given to surfaces of
-constant elevation (also one spatial dimension). 
-This command constructs a four-dimensional pressure <code>prs_mdp</code>
-from the four input variables of mixed rank and orthogonality:
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'prs_mdp[time,lat,lon,lev]=P0*hyam+PS*hybm' in.nc out.nc
-</pre></td></tr></table>
-<p>Manipulating the four fields which define the pressure in a hybrid
-coordinate system is easy with left hand casting.
-</p>
-<a name="ncap_arr"></a> <!-- http://nco.sf.net/nco.html#ncap_arr --><hr size="6">
-<a name="Arrays-and-hyperslabs"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Left-hand-casting" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Attributes" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Arrays-and-hyperslabs-1"></a>
-<h3 class="subsection">4.1.5 Arrays and hyperslabs</h3>
-
-<a name="index-array"></a>
-<a name="index-array-function"></a>
-<a name="index-arrays"></a>
-<a name="index-findgen_002dequivalent"></a>
-<a name="index-indgen_002dequivalent"></a>
-<p>Generating a regularly spaced one-dimensional array with <code>ncap2</code>
-is simple with the <code>array()</code> function. 
-The syntax is 
-</p><table><tr><td> </td><td><pre class="example">output=array(val_srt,val_ncr,$dmn_nm); // One-dimensional output
-output=array(val_srt,val_ncr,var_tpl);  // Multi-dimensional output
-h</pre></td></tr></table>
-<p>where the arguments are the starting value <var>val_srt</var>, 
-incremental value <var>val_ncr</var>, and, for one-dimensional output, the
-single dimension <code>$dmn_nm</code>, or, for multi-dimensional output, a
-template variable <code>var_tpl</code>, i.e., a variable with the same shape
-as the desired output. 
-</p>
-<p>Once the associated dimensions have been defined, the start and
-increment arguments may be supplied as values, mathmatical expressions,
-or variables:
-</p><table><tr><td> </td><td><pre class="example">var_out=array(1,1,$time); // 1,2,3,4,5,6,7,8,9,10
-var_out=array(1+2-2,one,$time); // 1,2,3,4,5,6,7,8,9,10
-var_out=array(1,2,three_dmn_rec_var); // 1,3,5,...155,157,159
-</pre></td></tr></table>
-
-<a name="index-hyperslabs"></a>
-<p>Hyperslabs in <code>ncap2</code> are more limited than hyperslabs with the
-other <acronym>NCO</acronym> operators. 
-<code>ncap2</code> does not understand the shell command-line syntax
-used to specify multi-slabs, wrapped co-ordinates, negative stride or
-coordinate value limits.
-However with a bit of syntactic magic they are all are possible. 
-<code>ncap2</code> accepts (in fact, it requires) <var>N</var>-hyperslab
-arguments for a variable of rank <var>N</var>:
-</p><table><tr><td> </td><td><pre class="example">var1(arg1,arg2 ... argN);
-</pre></td></tr></table>
-<p>where each hyperslab argument is of the form
-</p><table><tr><td> </td><td><pre class="example">start:end:stride 
-</pre></td></tr></table>
-<p>and the arguments for different dimensions are separated by commas.
-If "start" is omitted, it defaults to 0.
-If "end" is omitted, it defaults to dimension size minus one.
-If "stride" is omitted, it defaults to 1.
-<br>
-If a single value is present then it is assumed that that
-dimension collapses to a single value (i.e., a cross-section). 
-The number of hyperslab arguments MUST equal the variable’s rank.
-<br>
-</p>
-<p><strong>Hyperslabs on the Right Hand Side of an assign<br></strong>
-</p>
-<p>A simple 1D example:
-</p><table><tr><td> </td><td><pre class="example">($time.size=10)
-od[$time]={20,22,24,26,28,30,32,34,36,38};
-
-od(7);     // 34
-od(7:);    // 34,36,38
-od(:7);    // 20,22,24,26,28,30,32,34 
-od(::4);   // 20,28,36
-od(1:6:2)  // 22,26,30
-od(:)      // 20,22,24,26,28,30,32,34,36,38 
-</pre></td></tr></table>
-
-<p>A more complex three dimensional example:
-</p><table><tr><td> </td><td><pre class="example">($lat.size=2,$lon.size=4)
-th[$time,$lat,$lon]=      
-                          {1, 2, 3, 4, 5, 6, 7, 8,
-                          9,10,11,12,13,14,15,16,
-                          17,18,19,20,21,22,23,24,
-                          -99,-99,-99,-99,-99,-99,-99,-99,
-                          33,34,35,36,37,38,39,40,
-                          41,42,43,44,45,46,47,48,
-                          49,50,51,52,53,54,55,56,
-                          -99,58,59,60,61,62,63,64,
-                          65,66,67,68,69,70,71,72,
-                          -99,74,75,76,77,78,79,-99 };
-
-th(1,1,3);        // 16
-th(2,0,:);        // 17, 18, 19, 20
-th(:,1,3);        // 8, 16, 24, -99, 40, 48, 56, 64, 72, -99 
-th(::5 ,:,0:3:2); // 1, 3, 5, 7, 41, 43, 45, 47
-</pre></td></tr></table>
-
-<p>If hyperslab arguments collapse to a single value (a cross-section has
-been specified), then that dimension is removed from the returned
-variable. 
-If all the values collapse then a scalar variable is returned.
-So, for example, the following is valid: 
-</p><table><tr><td> </td><td><pre class="example">th_nw=th(0,:,:)+th(9,:,:); 
-// th_nw has dimensions $lon,$lat 
-// NB: the time dimension has become degenerate
-</pre></td></tr></table>
-
-<p>The following is invalid:
-</p><table><tr><td> </td><td><pre class="example">th_nw=th(0,:,0:1)+th(9,:,0:1);
-</pre></td></tr></table>
-<p>because the <code>$lon</code> dimension now only has two elements.
-The above can be calculated by using a LHS cast with 
-<code>$lon_nw</code> as replacement dim for <code>$lon</code>: 
-</p><table><tr><td> </td><td><pre class="example">defdim("lon_nw",2);
-th_nw[$lat,$lon_nw]=th(0,:,0:1) +th(9,:,0:1);
-</pre></td></tr></table>
-
-<p><strong>Hyperslabs on the Left Hand Side of an assign<br></strong>
-When hyperslabing on the LHS, the expression on the RHS must 
-evaluate to a scalar or a variable/attribute with the same number of 
-elements as the LHS hyperslab.
-Set all elements of the last record to zero:
-</p><table><tr><td> </td><td><pre class="example">th(9,:,:)=0.0;
-</pre></td></tr></table>
-<p>Set first element of each lon element to 1.0:
-</p><table><tr><td> </td><td><pre class="example">th(:,:,0)=1.0;
-</pre></td></tr></table>
-<p>One may hyperslab on both sides of an assign.
-For example, this sets the last record to the first record:
-</p><table><tr><td> </td><td><pre class="example">th(9,:,:)=th(0,:,:);
-</pre></td></tr></table>
-<p>Say <var>th0</var> represents pressure at height=0 and 
-<var>th1</var> represents pressure at height=1.
-Then it is possible to insert these hyperslabs into the records
-</p><table><tr><td> </td><td><pre class="example">prs[$time,$height,$lat,$lon]=0.0;
-prs(:,0,:,:)=th0;
-prs(:,1,:,:)=th1
-</pre></td></tr></table>
-
-<p><strong>Reverse method</strong> <br>
-<a name="index-reverse_0028_0029"></a>
-Use the <code>reverse()</code> method to reverse a dimension’s elements in a
-variable with at least one dimension.
-This is equivalent to a negative stride, e.g., 
-</p><table><tr><td> </td><td><pre class="example">th_rv=th(1 ,:,:).reverse($lon); // {12,11,10,9 }, {16,15,14,13}
-od_rv=od.reverse($time);        // {38,36,34,32,30,28,26,24,22,20}
-</pre></td></tr></table>
-
-<p><strong>Permute method</strong> <br>
-<a name="index-permute_0028_0029"></a>
-Use the <code>permute()</code> method to swap the dimensions of a variable.
-The number and names of dimension arguments must match the dimensions in
-the variable. 
-If the first dimension in the variable is of record type then this must
-remain the first dimension. 
-If you want to change the record dimension then consider using
-<code>ncpdq</code>. 
-</p>
-<p>Consider the variable:
-</p><table><tr><td> </td><td><pre class="example">float three_dmn_var(lat,lev,lon);
-three_dmn_var_prm=three_dmn_var.permute($lon,$lat,$lev);
-// The permuted values are
-three_dmn_var_prm= 
-  0,4,8,
-  12,16,20,
-  1,5,9,
-  13,17,21,
-  2,6,10,
-  14,18,22,
-  3,7,11,
-  15,19,23;
-</pre></td></tr></table>
-
-<a name="ncap_att"></a> <!-- http://nco.sf.net/nco.html#ncap_att --><hr size="6">
-<a name="Attributes"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Arrays-and-hyperslabs" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Number-literals" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Attributes-1"></a>
-<h3 class="subsection">4.1.6 Attributes</h3>
-<a name="index-attributesncap"></a>
-<p>Attributes are referred to by <em>var_nm at att_nm</em> <br>
-All the following are valid statements:
-</p><table><tr><td> </td><td><pre class="example">global at text="Test Attributes"; /* Assign a global variable attribute */
-a1[$time]=time*20;
-a1 at long_name="Kelvin";
-a1 at min=a1.min();
-a1 at max=a1.max();
-a1 at min++;
---a1 at max; q
-a1(0)=a1 at min;
-a1($time.size-1)=a1 at max;
-</pre></td></tr></table>
-
-<p>A <em>value list</em> can be used on the RHS of an assign...
-<a name="index-value-list"></a>
-</p><table><tr><td> </td><td><pre class="example">a1 at trip1={1,2,3} ;
-a1 at triplet={a1 at min,(a1 at min+a1@max)/2,a1 at max}; 
-</pre></td></tr></table>
-<p>The netCDF specification allows all attribute types to have a size
-greater than one. 
-The maximum is defined by <code>NC_MAX_ATTRS</code>.
-The following is an <code>ncdump</code> of the metadata for variable <var>a1</var> 
-</p><table><tr><td> </td><td><pre class="example">double a1(time) ;
-  a1:long_name = "Kelvin" ;
-  a1:max = 199. ;
-  a1:min = 21. ;
-  a1:trip1 = 1, 2, 3 ;
-  a1:triplet = 21., 110., 199. ;
-</pre></td></tr></table>
-
-<p>The <code>size()</code> method can be used with attributes.
-For example, to save an attribute text string in a variable,
-</p><table><tr><td> </td><td><pre class="example">defdim("sng_len", a1 at long_name.size());
-sng_arr[$sng_len]=a1 at long_name; // sng_arr now contains "Kelvin" 
-</pre></td></tr></table>
-<p>Attributes defined in a script are stored in memory and are written to Output after script completion.
-To stop the attribute being written use the ram_delete() method or use a bogus variable name.
-</p>
-<p><strong>Attribute Propagation & Inheritance</strong>
-<a name="index-attribute-propagation"></a>
-<a name="index-attribute-inheritance"></a>
-</p><ul>
-<li> Attribute propagation occurs in a regular  assign statement. The variable being defined on the LHS gets copies of the attributes from the leftermost variable on the RHS
-
-  </li><li> Attribute Inheritance: The LHS variable "inherits" attributes from an Input variable with the same name
-
-  </li><li> It is possible to have a regular assign statement for which both propagation and inheritance occur.
-</li></ul>
-
-<table><tr><td> </td><td><pre class="example">prs_mdp[time,lat,lon,lev]=P0*hyam+hybm*PS;   // prs_mdp gets attributes from PO
-th_min=1.0 + 2*three_dmn_var_dbl.min($time); // th_min  gets attributes from three_dmn_var_dbl
-</pre></td></tr></table>
-
-<p>If the attribute name contains non-regular characters use ID quoting. See see section <a href="#ID-Quoting">ID Quoting</a>
-</p><table><tr><td> </td><td><pre class="example">'b..m1 at c--lost'=23;
-</pre></td></tr></table>
-
-<a name="ncap_num"></a> <!-- http://nco.sf.net/nco.html#ncap_num --><hr size="6">
-<a name="Number-literals"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Attributes" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#if-statement" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Number-literals-1"></a>
-<h3 class="subsection">4.1.7 Number literals</h3>
-<a name="index-number-literals-ncap"></a>
-<p>The table below lists the postfix character(s) to add to a number
-literal for type cohesion. 
-To use the new netCDF4 types <acronym>NCO</acronym> must be compiled/linked to
-the netCDF4 library and the output file must be <acronym>HDF5</acronym>.
-</p>
-<table><tr><td> </td><td><pre class="example">n1[$time]=1UL; // n1 will now by type <code>NC_UINT</code>
-n2[$lon]=4b;   // n2 will be of type <code>NC_BYTE</code>
-n3[$lat]=5ull; // n3 will be of type <code>NC_UINT64</code>  
-n3 at a1=6.0d;   // attribute will be type <code>NC_DOUBLE</code>
-n3 at a2=-666L;  // attribute will be type <code>NC_INT</code>
-</pre></td></tr></table>
-
-<p>A floating point number without a postfix will default to
-<code>NC_DOUBLE</code>. 
-An integer without a postfix will default to type <code>NC_INT</code>. 
-There is no postfix for characters, use a quoted string instead.
-</p><table><tr><td> </td><td><pre class="example">n4[$rlev]=0.1      // n4 will be of type <code>NC_DOUBLE</code>
-n5[$lon_grd]=2.0   // n5 will be of type <code>NC_DOUBLE</code>
-n6[$gds_crd]=2e3;  // n6 will be of type <code>NC_DOUBLE</code>
-n7[$gds_crd]=2e3f;  // n7 will be of type <code>NC_FLOAT</code>
-n6 at a1=41;         // attribute will be type <code>NC_INT</code>
-n6 at a2=-21;        // attribute will be type <code>NC_INT</code>  
-n6 at units="kelvin" // attribute will be type <code>NC_CHAR</code>
-</pre></td></tr></table>
-
-
-<dl compact="compact">
-<dt></dt>
-<dd><p><strong>netCDF3/4 Types</strong>
-</p></dd>
-<dt> b|B	 </dt>
-<dd><p>  <code>NC_BYTE</code>, a signed 1-byte integer 
-</p></dd>
-<dt> none	 </dt>
-<dd><p>  <code>NC_CHAR</code>, an ISO/ASCII character 
-</p></dd>
-<dt> s|S	 </dt>
-<dd><p>  <code>NC_SHORT</code>, a signed 2-byte integer 
-</p></dd>
-<dt> l|L	 </dt>
-<dd><p>  <code>NC_INT</code>, a signed 4-byte integer 
-</p></dd>
-<dt> f|F	 </dt>
-<dd><p>  <code>NC_FLOAT</code>, a single-precision (4-byte) floating point number 
-</p></dd>
-<dt> d|D</dt>
-<dd><p>  <code>NC_DOUBLE</code>, a double-precision (8-byte) floating point number 
-</p></dd>
-<dt></dt>
-<dt></dt>
-<dd><p><strong>netCDF4 Types</strong>
-</p></dd>
-<dt> ub|UB	 </dt>
-<dd><p>  <code>NC_UBYTE</code>, an unsigned 1-byte integer 
-</p></dd>
-<dt> us|US </dt>
-<dd><p>  <code>NC_USHORT</code>, an unsigned 2-byte integer 
-</p></dd>
-<dt> u|U|ul|UL	 </dt>
-<dd><p>  <code>NC_UINT</code>, an unsigned 4-byte integer 
-</p></dd>
-<dt> ll|LL	 </dt>
-<dd><p>  <code>NC_INT64</code>, a signed 8-byte integer 
-</p></dd>
-<dt> ull|ULL </dt>
-<dd><p>  <code>NC_UINT64</code>, an unsigned 8-byte integer 
-</p></dd>
-</dl>
-
-<a name="ncap_if"></a> <!-- http://nco.sf.net/nco.html#ncap_if --><hr size="6">
-<a name="if-statement"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Number-literals" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#print-statement" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="if-statement-1"></a>
-<h3 class="subsection">4.1.8 if statement</h3>
-<a name="index-if_0028_0029"></a>
-<p>The syntax of the if statement is similar to its C counterpart. 
-The <em>Conditional Operator (ternary operator)</em> has also been
-implemented. 
-</p><table><tr><td> </td><td><pre class="example">if(exp1)
-   stmt1;
-else if(exp2)     
-   stmt2;
-else
-   stmt3;
-
-# Can use code blocks as well:
-if(exp1){
-   stmt1;
-   stmt1a;
-   stmt1b;
-} else if(exp2)     
-   stmt2; 
-else {
-   stmt3;
-   stmt3a;
-   stmt3b;
-}     
-</pre></td></tr></table>
-
-<p>For a variable or attribute expression to be logically true
-all its non-missing value elements must be logically true, i.e.,
-non-zero. 
-The expression can be of any type. 
-Unlike C there is no short-circuiting of an expression with the OR (||)
-AND (&&) operators. 
-The whole expression is evaluated regardless if one of the AND/OR
-operands are true/false.   
-</p><table><tr><td> </td><td><pre class="example"># Simple example
-if(time>0)
-  print("All values of time are greater than zero\n");
-else if( time<0)
-  print("All values of time are less than zero\n");   
-else {
-  time_max=time.max();
-  time_min=time.min();
-  print("min value of time=");print(time_min,"%f");
-  print("max value of time=");print(time_max,"%f");
-}
-
-# Example from ddra.nco
-if(fl_typ==fl_typ_gcm){
-  var_nbr_apx=32;
-  lmn_nbr=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Variable size */
-  if(nco_op_typ==nco_op_typ_avg){
-    lmn_nbr_avg=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Averaging block size */
-    lmn_nbr_wgt=dmnsz_gcm_lat; /* [nbr] Weight size */
-  } // !nco_op_typ_avg
-}else if(fl_typ==fl_typ_stl){
-  var_nbr_apx=8;
-  lmn_nbr=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Variable size */
-  if(nco_op_typ==nco_op_typ_avg){
-    lmn_nbr_avg=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Averaging block size */
-    lmn_nbr_wgt=dmnsz_stl_lat; /* [nbr] Weight size */
-  } // !nco_op_typ_avg
-} // !fl_typ
-</pre></td></tr></table>
-
-<p><strong>Conditional Operator <br></strong>
-</p><table><tr><td> </td><td><pre class="example">// netCDF4 needed for this example
-th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : three_dmn_var_sht.int() ); 
-</pre></td></tr></table>
-
-<a name="ncap_prn"></a> <!-- http://nco.sf.net/nco.html#ncap_prn --><hr size="6">
-<a name="print-statement"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#if-statement" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Missing-values-ncap2" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="print-statement-1"></a>
-<h3 class="subsection">4.1.9 print statement</h3>
-<a name="index-print_0028_0029ncap"></a>
-<table><tr><td> </td><td><pre class="example">print(variable_name/attribute name/string, format string);
-</pre></td></tr></table>
- 
-
-<p>The print function takes a variable name or attribute name or
-a quoted string and prints the contents in a in a similar fashion to
-<code>ncks -H</code>.
-There is also an optional C style format string argument. 
-Currently the print function cannot print RAM variables or expressions 
-such as <code>'print(var_msk*3+4)'</code>. 
-To print an expression, first evaluate it as a non-RAM variable (so it
-will be saved and can be printed), and then print the variable.
-</p>
-<p>examples
-</p><table><tr><td> </td><td><pre class="example">print(lon);
-lon[0]=0 
-lon[1]=90 
-lon[2]=180 
-lon[3]=270 
-
-print(lon_2D_rrg,"%3.2f,");
-0.00,0.00,180.00,0.00,180.00,0.00,180.00,0.00,
-
-print(mss_val_fst at _FillValue);
-mss_val_fst at _FillValue, size = 1 NC_FLOAT, value = -999
-
-print("This function \t is monotonic\n");
-This function is 	  monotonic
-</pre></td></tr></table>
-
-<a name="ncap_miss"></a> <!-- http://nco.sf.net/nco.html#ncap_miss --><hr size="6">
-<a name="Missing-values-ncap2"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#print-statement" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Methods-and-functions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Missing-values-ncap2-1"></a>
-<h3 class="subsection">4.1.10 Missing values ncap2</h3>
-<a name="index-missing-values-ncap2"></a>
-<p>Missing values operate slightly differently in <code>ncap2</code> 
-Consider the expression where op is any of the following operators (excluding ’=’)
-</p><table><tr><td> </td><td><pre class="example">Arithmetic operators ( * / % + - ^ )
-Binary Operators     ( >, >= <, <= ==, !=,==,||,&&, >>,<< ) 
-Assign Operators     ( +=,-=,/=, *= ) 
-
-var1 'op' var2
-</pre></td></tr></table>
-
-<p>If var1 has a missing value then this is the value used in the 
-operation, otherwise the missing value for var2 is used. 
-If during the element-by-element operation an element from either
-operand is equal to the missing value then the missing value is carried 
-through. 
-In this way missing values ’percolate’ or propagate through an
-expression.<br>  
-Missing values associated with Output variables are stored in memory and
-are written to disk after the script finishes. 
-During script execution its possible (and legal) for the missing value
-of a variable to take on several different values. 
-</p><table><tr><td> </td><td><pre class="example"># Consider the variable:
-int rec_var_int_mss_val_int(time); =-999,2,3,4,5,6,7,8,-999,-999;
-rec_var_int_mss_val_int:_FillValue = -999;
-
-n2=rec_var_int_mss_val_int + rec_var_int_mss_val_int.reverse($time); 
-
-n2=-999,-999,11,11,11,11,11,11,999,-999;
-</pre></td></tr></table>
-
-<p>The following methods are used to edit the missing value associated with
-a variable. 
-They only work on variables in Output. 
-</p><dl compact="compact">
-<dt> <code>set_miss(expr)</code></dt>
-<dd><a name="index-set_005fmiss_0028_0029"></a>
-<p> Takes one argument the missing value. 
- Sets or overwrites the existing missing value. 
- The argument given is converted if necessary to the variable type 
-</p></dd>
-<dt> <code>change_miss(expr)</code></dt>
-<dd><a name="index-change_005fmiss_0028_0029"></a>
-<p> Changes the missing value elements of the variable to the new missing
- value (nb an expensive function). 
-</p></dd>
-<dt> <code>get_miss()</code> </dt>
-<dd><a name="index-get_005fmiss_0028_0029"></a>
-<p> Returns the missing value of a variable. 
- If the variable exists in Input and Output then the missing value of
- the variable in Output is returned. 
- If the variable has no missing value then an error is returned.   
-</p></dd>
-<dt> <code>delete_miss()</code></dt>
-<dd><a name="index-delete_005fmiss_0028_0029"></a>
-<p> Deletes the missing value associated with a variable.
-</p></dd>
-</dl>
-
-<table><tr><td> </td><td><pre class="example">th=three_dmn_var_dbl;
-th.change_miss(-1e10d);
-/* Set values less than 0 or greater than 50 to missing value */
-where(th < 0.0 || th > 50.0) th=th.get_miss();
-
-# Another example:
-new[$time,$lat,$lon]=1.0;
-new.set_miss(-997.0);
-
-// Extract only elements divisible by 3
-where (three_dmn_var_dbl%3 == 0)
-     new=three_dmn_var_dbl; 
-elsewhere
-     new=new.get_miss();   
-</pre></td></tr></table>
-
-<a name="ncap_mtd"></a> <!-- http://nco.sf.net/nco.html#ncap_mtd --><hr size="6">
-<a name="Methods-and-functions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Missing-values-ncap2" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#RAM-variables" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Methods-and-functions-1"></a>
-<h3 class="subsection">4.1.11 Methods and functions</h3>
-
-<p>The convention within this document is that methods can be used as 
-functions. 
-However, functions are not and cannot be used as methods.
-Methods can be daisy changed together and their syntax is cleaner than
-functions. 
-Method names are reserved words and CANNOT be used as variable names.  
-The command <code>ncap2 -f</code> shows the complete list of methods available
-on your build. 
-</p><table><tr><td> </td><td><pre class="example">n2=sin(theta) 
-n2=theta.sin() 
-n2=sin(theta)^2 + cos(theta)^2 
-n2=theta.sin().pow(2) + theta.cos()^2
-</pre></td></tr></table>
-
-<p>This statement chains methods together to convert three_dmn_var_sht to
-type double, average it, then convert this back to type short: 
-</p><table><tr><td> </td><td><pre class="example">three_avg=three_dmn_var_sht.double().avg().short();
-</pre></td></tr></table>
-
-<br>
-<p><strong>Aggregate Methods <br></strong> 
-These methods mirror the averaging types available in <code>ncwa</code>. The arguments to the methods are the dimensions to average over. Specifying no dimensions is equivalent to specifying all dimensions i.e., averaging over all dimensions. A masking variable and a weighting variable can be manually created and applied as needed.
-</p>
-<dl compact="compact">
-<dt> <code>avg()</code></dt>
-<dd><a name="index-avg_0028_0029"></a>
-<p>Mean value 
-</p></dd>
-<dt> <code>sqravg()</code></dt>
-<dd><a name="index-sqravg_0028_0029"></a>
-<p>Square of the mean
-</p></dd>
-<dt> <code>avgsqr()</code></dt>
-<dd><p>Mean of sum of squares
-</p></dd>
-<dt> <code>max()</code></dt>
-<dd><a name="index-max_0028_0029"></a>
-<p>Maximum value
-</p></dd>
-<dt> <code>min()</code></dt>
-<dd><a name="index-min_0028_0029"></a>
-<p>Minimum value
-</p></dd>
-<dt> <code>rms()</code></dt>
-<dd><p>Root-mean-square (normalize by <var>N</var>)
-</p></dd>
-<dt> <code>rmssdn()</code></dt>
-<dd><a name="index-rmssdn_0028_0029"></a>
-<p>Root-mean square (normalize by <var>N-1</var>)
-</p></dd>
-<dt> <code>ttl() or total()</code></dt>
-<dd><a name="index-ttl_0028_0029"></a>
-<p>Sum of values
-</p></dd>
-</dl>
-
-<table><tr><td> </td><td><pre class="example">// Average a variable over time
-four_time_avg=four_dmn_rec_var($time);
-</pre></td></tr></table>
-
-<br>
-<p><strong> Packing Methods <br> </strong> 
-For more information see see section <a href="#Packed-data">Packed data</a> and see section <a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a><br>
-</p><dl compact="compact">
-<dt> <code>pack() & pack_short()</code></dt>
-<dd><a name="index-pack_0028_0029"></a>
-<p>The default packing algorithm is applied and variable is packed to <code>NC_SHORT</code>
-</p></dd>
-<dt> <code>pack_byte()</code></dt>
-<dd><a name="index-pack_005fbyte_0028_0029"></a>
-<p>Variable is packed to <code>NC_BYTE</code>
-</p></dd>
-<dt> <code>pack_short()</code></dt>
-<dd><a name="index-pack_005fshort_0028_0029"></a>
-<p>Variable is packed to <code>NC_SHORT</code>
-</p></dd>
-<dt> <code>pack_int()</code></dt>
-<dd><a name="index-pack_005fint_0028_0029"></a>
-<p>Variable is packed to <code>NC_INT</code>
-</p></dd>
-<dt> <code>unpack()</code></dt>
-<dd><a name="index-unpack_0028_0029"></a>
-<p>The standard unpacking algorithm is applied. 
-</p></dd>
-</dl>
-
-<p><strong>Basic Methods <br></strong>
-These methods work with variables and attributes. They have no arguments
-</p>
-<dl compact="compact">
-<dt> <code>size()</code>	</dt>
-<dd><a name="index-size_0028_0029"></a>
-<p>Total number of elements 
-</p></dd>
-<dt> <code>ndims()</code></dt>
-<dd><a name="index-ndims_0028_0029"></a>
-<p>Number of dimensions in variable
-</p></dd>
-<dt> <code>type()</code> </dt>
-<dd><a name="index-type_0028_0029"></a>
-<p>Returns the netcdf type (see previous section)
-</p></dd>
-</dl>
-
-<br>
-<p><strong>Utility Methods <br></strong>
-These functions are used to manipulate missing values and RAM variables.
-see section <a href="#Missing-values-ncap2">Missing values ncap2</a> 
-</p>
-<dl compact="compact">
-<dt> <code>set_miss(expr)</code></dt>
-<dd><p> Takes one argument the missing value. Sets or overwrites the existing missing value. The argument given is converted if necessary to the variable type
-</p></dd>
-<dt> <code>change_miss(expr)</code></dt>
-<dd><p> Changes the missing value elements of the variable to the new missing value (n.b. an expensive function).
-</p></dd>
-<dt> <code>get_miss()</code> </dt>
-<dd><p> Returns the missing value of a variable in Input or Output  
-</p></dd>
-<dt> <code>delete_miss()</code></dt>
-<dd><p> Deletes the missing value associated with a variable.
-</p></dd>
-<dt> <code>ram_write()</code></dt>
-<dd><p> Writes a RAM variable to disk i.e., converts it to a regular disk type variable
-</p></dd>
-<dt> <code>ram_delete()</code></dt>
-<dd><p> Deletes a RAM variable or an attribute 
-</p></dd>
-</dl>
-
-<br>
-<p><strong>PDQ Methods <br></strong>
-See see section <a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a>
-</p><dl compact="compact">
-<dt> <code>reverse(dim args)</code></dt>
-<dd><p> Reverses the dimension ordering of elements in a variable. 
-</p></dd>
-<dt> <code>permute(dim args)</code></dt>
-<dd><p> Re-shapes variables by re-ordering the dimensions. All the dims of the variable must be specified in the arguments. A limitation of this permute (unlike ncpdq) is that the record dimension cannot be re-assigned. 
-</p></dd>
-</dl>
-
-<p>// Swap dimensions about and reorder along lon
-</p><table><tr><td> </td><td><pre class="example">lat_2D_rrg_new=lat_2D_rrg.permute($lon,$lat).reverse($lon);
-lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0
-</pre></td></tr></table>
-
-<br>
-<p><strong>Type Conversion Methods <br></strong>
-These methods allow <code>ncap2</code> to convert variables and attributes to the different netcdf types. For more details on automatic and manual type conversion see (see section <a href="#Type-Conversion">Type Conversion</a>). You can only use the new netCDF4 types if you have compiled/links <acronym>NCO</acronym> with the netCDF4 library and the Output file is HDF5.
-</p>
-<dl compact="compact">
-<dt><code></code></dt>
-<dd><p><strong>netCDF3/4 Types</strong>
-</p></dd>
-<dt> <code>byte()</code>	 </dt>
-<dd><a name="index-byte_0028_0029"></a>
-<p> convert to <code>NC_BYTE</code>,  a signed 1-byte integer 
-</p></dd>
-<dt> <code>char()</code></dt>
-<dd><a name="index-char_0028_0029"></a>
-<p> convert to <code>NC_CHAR</code>,  an ISO/ASCII character
-</p></dd>
-<dt> <code>short()</code>	</dt>
-<dd><a name="index-sshort_0028_0029"></a>
-<p> convert to <code>NC_SHORT</code>, a signed 2-byte integer 
-</p></dd>
-<dt> <code>int()</code>	 </dt>
-<dd><a name="index-int_0028_0029"></a>
-<p> convert to <code>NC_INT</code>,   a signed 4-byte integer 
-</p></dd>
-<dt> <code>float()</code></dt>
-<dd><a name="index-float_0028_0029"></a>
-<p> convert to <code>NC_FLOAT</code>, a single-precision (4-byte) floating point number 
-</p></dd>
-<dt> <code>double()</code> </dt>
-<dd><a name="index-double_0028_0029"></a>
-<p> convert to <code>NC_DOUBLE</code>, a double-precision (8-byte) floating point number 
-</p></dd>
-<dt><code></code></dt>
-<dt><code></code></dt>
-<dd><p><strong>netCDF4 Types</strong>
-</p></dd>
-<dt> <code>ubyte()</code>	 </dt>
-<dd><a name="index-ubyte_0028_0029"></a>
-<p> convert to <code>NC_UBYTE</code>, an unsigned 1-byte integer 
-</p></dd>
-<dt> <code>ushort()</code> </dt>
-<dd><a name="index-ushort_0028_0029"></a>
-<p> convert to <code>NC_USHORT</code>, an unsigned 2-byte integer 
-</p></dd>
-<dt> <code>uint()</code></dt>
-<dd><a name="index-uint_0028_0029"></a>
-<p> convert to <code>NC_UINT</code>, an unsigned 4-byte integer 
-</p></dd>
-<dt> <code>int64()</code>	</dt>
-<dd><a name="index-int64_0028_0029"></a>
-<p> convert to <code>NC_INT64</code>, a signed 8-byte integer 
-</p></dd>
-<dt> <code>uint64()</code> </dt>
-<dd><a name="index-unit64_0028_0029"></a>
-<p> convert to <code>NC_UINT64</code>, an unsigned 8-byte integer
-</p></dd>
-</dl>
-
-<p><strong>Intrinsic Mathematical Methods <br></strong>
-The list of mathematical methods is system dependant.
-For the full list see section <a href="#Intrinsic-mathematical-methods">Intrinsic mathematical methods</a> 
-</p>
-<p>All the mathematical methods take a single operand ,with the exception of <code>atan2</code> and <code>pow</code> which take two.
-If the operand type is less than <em>float</em> then the result will be of type <em>float</em>. If the operand is type <em>double</em> then the result will be type <em>double</em>. Like the other methods, you are free to use the mathematical methods as functions.
-</p>
-<table><tr><td> </td><td><pre class="example">n1=pow(2,3.0f)    // n1 type float
-n2=atan2(2,3.0)   // n2 type double
-n3=1/(three_dmn_var_dbl.cos().pow(2))-tan(three_dmn_var_dbl)^2; // n3 type double
-</pre></td></tr></table>
-
-<a name="ncap_ram"></a> <!-- http://nco.sf.net/nco.html#ncap_ram --><hr size="6">
-<a name="RAM-variables"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Methods-and-functions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Where-statement" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="RAM-variables-1"></a>
-<h3 class="subsection">4.1.12 RAM variables</h3>
-<p>Unlike regular variables, RAM variables are never written to disk.
-Hence using RAM variables in place of regular variables (especially
-within loops) significantly increases execution speed.
-Variables that are frequently accessed within <code>for</code> or <code>where</code>
-clauses provide the greatest opportunities for optimization. 
-To declare and define a RAM variable simply prefix the variable name
-with an asterisk (<code>*</code>) when the variable is declared/initialized.
-To delete a RAM variables (and recover their memory) use the
-<code>ram_delete()</code> method. 
-To write a RAM variable to disk (like a regular variable) use
-<code>ram_write()</code>. 
-<a name="index-ram_005fwrite_0028_0029"></a>
-<a name="index-ram_005fdelete_0028_0029"></a>
-</p><table><tr><td> </td><td><pre class="example">*temp[$time,$lat,lon]=10.0;     // Cast
-*temp_avg=temp.avg($time);      // Regular assign
-temp.ram_delete();              // Delete RAM variable
-temp_avg.ram_write();           // Write Variable to output
-
-// Create and increment a RAM variable from "one" in Input
-*one++;   
-// Create RAM variables from the variables three and four in Input.
-// Multiply three by 10 and add it to four. 
-*four+=*three*=10; // three=30, four=34 
-</pre></td></tr></table>
-
-<a name="where"></a> <!-- http://nco.sf.net/nco.html#where -->
-<a name="ncap_whr"></a> <!-- http://nco.sf.net/nco.html#ncap_whr -->
-<a name="ncap_where"></a> <!-- http://nco.sf.net/nco.html#ncap_where --><hr size="6">
-<a name="Where-statement"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#RAM-variables" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Loops" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Where-statement-1"></a>
-<h3 class="subsection">4.1.13 Where statement</h3>
-<a name="index-where_0028_0029"></a>
-<p>A <code>where()</code> combines the definition and application of a mask all in one go and can lead to succinct code. 
-The full syntax of a <code>where()</code> statement is as follows:
-</p>
-<table><tr><td> </td><td><pre class="example">// Single assign (the 'elsewhere' block is optional)
-where(mask) 
-   var1=expr1;
-elsewhere
-   var1=expr2;	   	
-
-// Multiple assigns
-where(mask){
-    var1=expr1;
-    var2=expr2;
-    ...
-}elsewhere{
-    var1=expr3
-    var2=expr4
-    var3=expr5;
-    ...
-}
-</pre></td></tr></table>
-
-<ul>
-<li> The only expression allowed in the predicate of a where is assign,
-i.e., ’var=expr’. 
-This assign differs from a regular <code>ncap2</code> assign. 
-The LHS var must already exist in Input or Output. 
-The RHS expression must evaluate to a scalar or a variable/attribute of
-the same size as the LHS variable.
-</li><li> Consider when both the LHS and RHS are variables: 
-For every element where mask condition is True, the corresponding LHS
-variable element is re-assigned to its partner element on the RHS. 
-In the elsewhere part the mask is logically inverted and the assign
-process proceeds as before.
-</li><li> If the mask dimensions are a subset of the LHS variable’s
-dimensions, then it is made to conform; if it cannot be made to conform 
-then script execution halts.   
-</li><li> Missing values in the mask evaluate to False in the where 
-code/block statement and to True in the elsewhere block/statement. 
-LHS variable elements set to missing value are not re-assigned.
-For these reasons, do not explicitly reference missing values in the
-masking condition, e.g., <code>where(foo=foo.get_missing()) foo=1;</code>
-will not work as expected.
-</li></ul>
-
-<p>Example:
-Consider the variables <code>float lon_2D_rct(lat,lon);</code> and
-<code>float var_msk(lat,lon);</code>. 
-Suppose we wish to multiply by two the elements for which <code>var_msk</code> 
-equals 1: 
-</p><table><tr><td> </td><td><pre class="example">where(var_msk==1) lon_2D_rct=2*lon_2D_rct;
-</pre></td></tr></table>
-<p>Suppose that we have the variable <code>int RDM(time)</code> and that we want
-to set its values less than 8 or greater than 80 to 0:
-</p><table><tr><td> </td><td><pre class="example">where(RDM < 8 || RDM > 80) RDM=0;          
-</pre></td></tr></table>
-
-<p>Consider irregularly gridded data, described using rank 2 coordinates: 
-<code>double lat(south_north,east_west)</code>,
-<code>double lon(south_north,east_west)</code>, 
-<code>double temperature(south_north,east_west)</code>.
-To find the average temperature in a region bounded by
-[<var>lat_min</var>,<var>lat_max</var>] and [<var>lon_min</var>,<var>lon_max</var>]:
-</p><table><tr><td> </td><td><pre class="example">temperature_msk[$south_north,$east_west]=0.0;
-where(lat >= lat_min && lat <= lat_max) && (lon >= lon_min && lon <= lon_max)
-  temperature_msk=temperature;	
-elsewhere
-  temperature_msk=temperature at _FillValue;
-
-temp_avg=temperature_msk.avg();
-temp_max=temperature.max();
-</pre></td></tr></table>
-
-<a name="ncap_lop"></a> <!-- http://nco.sf.net/nco.html#ncap_lop --><hr size="6">
-<a name="Loops"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Where-statement" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Include-files" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Loops-1"></a>
-<h3 class="subsection">4.1.14 Loops</h3>
-<a name="index-while_0028_0029"></a>
-<a name="index-for_0028_0029"></a>
-<p><code>ncap</code> supplies <code>for()</code> loops and <code>while()</code> loops. 
-They are completely unoptimized so use them only with RAM 
-variables unless you want thrash your disk to death. 
-To break out of a loop use the <code>break</code> command. 
-To iterate to the next cycle use the <code>continue</code> command. 
-</p>
-<table><tr><td> </td><td><pre class="example">// Follwing sets elements in variable double temp(time,lat) 
-// If element < 0 set to 0, if element > 100 set to 100
-*sz_idx=$time.size;
-*sz_jdx=$lat.size;
-
-for(*idx=0;idx<sz_idx;idx++)
-  for(*jdx=0;jdx<sz_jdx;jdx++)
-    if(temp(idx,jdx) > 100) temp(idx,jdx)=100.0;
-    else if(temp(idx,jdx) < 0) temp(idx,jdx)=0.0;
-
-// Are values of co-ordinate variable double lat(lat) monotonic?
-   *sz=$lat.size;
-
-   for(*idx=1;idx<sz;idx++)
-     if(lat(idx)-lat(idx-1) < 0.0) 
-       break;
-
-   if(idx == sz) 
-     print("lat co-ordinate is monotonic\n");
-   else 
-     print("lat co-ordinate is NOT monotonic\n");
-
-// Sum odd elements	
-*idx=0;
-*sz=$lat_nw.size;
-*sum=0.0;
-  while(idx<sz){
-   if(lat(idx)%2) sum+=lat(idx);
-   idx++;
-  }
-
-ram_write(sum);
-print("Total of odd elements ");print(sum);print("\n"); 
-</pre></td></tr></table>
-
-<a name="ncap_inc"></a> <!-- http://nco.sf.net/nco.html#ncap_inc --><hr size="6">
-<a name="Include-files"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Loops" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Sort-methods" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Include-files-1"></a>
-<h3 class="subsection">4.1.15 Include files</h3>
-<a name="index-include"></a>
-<p>The syntax of an <var>include-file</var> is:
-</p><table><tr><td> </td><td><pre class="example">#include "script.nco"
-</pre></td></tr></table>
-<p>The script filename is searched relative to the run directory. 
-It is possible to nest include files to an arbitrary depth. 
-A handy use of inlcude files is to store often used constants. 
-Use RAM variables if you do not want these constants written to
-<var>output-file</var>.  
-</p><table><tr><td> </td><td><pre class="example">// script.nco
-// Sample file to #include in ncap2 script
-*pi=3.1415926535; // RAM variable, not written to output
-*h=6.62607095e-34; // RAM variable, not written to output
-e=2.71828; // Regular (disk) variable, written to output
-</pre></td></tr></table>
-
-<a name="ncap_srt"></a> <!-- http://nco.sf.net/nco.html#ncap_srt --><hr size="6">
-<a name="Sort-methods"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Include-files" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Irregular-grids" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="sort-methods"></a>
-<h3 class="subsection">4.1.16 <code>sort</code> methods</h3>
-<p>In <acronym>ncap</acronym> there are two ways to sort data. 
-The first is a regular <code>sort</code>. 
-This sorts ALL the elements of a variable or attribute without
-regard to any dimensions. 
-The second method applies a sort map to a variable. 
-To apply this sort map the size of the variable must be exactly
-divisible by the size of the sort map. 
-The method <code>sort(var_in,&var_map)</code> is overloaded. 
-The second optional argument is to supply a call-by-reference variable
-to hold the returned sort map.  
-</p><table><tr><td> </td><td><pre class="example">a1[$time]={10,2,3,4,6,5,7,3,4,1};
-a1_sort=sort(a1);
-print(a1_sort);
-// 1, 2, 3, 3, 4, 4, 5, 6, 7, 10;
-
-a2[$lon]={2,1,4,3};
-a2_sort=sort(a2,&a2_map);
-print(a2);
-// 1, 2, 3, 4
-print(a2_map);
-// 1, 0, 3, 2;
-</pre></td></tr></table>
- 
-
-<p>If the map variable does not exist prior to the <code>sort()</code> call,
-then it will be created with the same shape as the input variable and be
-of type <code>NC_INT</code>. 
-If the map variable already exists, then the only restriction is that it
-be of at least the same size as the input variable. 
-To apply a map use <code>dsort(var_in,var_map)</code>. 
-</p><table><tr><td> </td><td><pre class="example">defdim("nlat",5);
-
-a3[$lon]={2,5,3,7};
-a4[$nlat,$lon]={
- 1, 2, 3, 4, 
- 5, 6, 7, 8,
- 9,10,11,12,
- 13,14,15,16,
- 17,18,19,20};
-
-a3_sort=sort(a3,&a3_map);
-print(a3_map);
-// 0, 2, 1, 3;
-
-a4_sort=dsort(a4,a3_map);
-print(a4_sort);
-// 1, 3, 2, 4,
-// 5, 7, 6, 8,
-// 9,11,10,12,
-// 13,15,14,16,
-// 17,19,18,20;
-
-a3_map2[$nlat]={4,3,0,2,1};
-
-a4_sort2=dsort(a4,a3_map2);
-print(a4_sort2);
-// 3, 5, 4, 2, 1
-// 8, 10, 9,7, 6, 
-// 13,15,14,12,11, 
-// 18,20,19,17,16
-</pre></td></tr></table>
-<p>As in the above example you may create your own sort map.
-To sort in descending order, apply the <code>reverse()</code> method after the
-<code>sort()</code>.    
-</p>
-<a name="srt"></a> <!-- http://nco.sf.net/nco.html#srt -->
-<a name="sort"></a> <!-- http://nco.sf.net/nco.html#sort -->
-<a name="dsort"></a> <!-- http://nco.sf.net/nco.html#dsort --><p>Here is an extended example of how to use <code>ncap2</code> features to
-hyperslab an irregular region based on the values of a variable not a
-coordinate. 
-The distinction is crucial: hyperslabbing based on dimensional indices
-or coordinate values is straightforward.
-Using the values of single or multi-dimensional variable to define a
-hyperslab is quite different.
-</p><table><tr><td> </td><td><pre class="example">cat > ~/ncap2_foo.nco << 'EOF'
-// Purpose: Save irregular 1-D regions based on variable values
-
-// Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-/* NB: Single quotes around EOF above turn off shell parameter 
-    expansion in "here documents". This in turn prevents the
-    need for protecting dollarsign characters in NCO scripts with
-    backslashes when the script is cut-and-pasted (aka "moused") 
-    from an editor or e-mail into a shell console window */
-
-/* Copy coordinates and variable(s) of interest into RAM variable(s)
-   Benefits:
-   1. ncap2 defines writes all variables on LHS of expression to disk
-      Only exception is RAM variables, which are stored in RAM only
-      Repeated operations on regular variables takes more time, 
-      because changes are written to disk copy after every change.
-      RAM variables are only changed in RAM so script works faster
-      RAM variables can be written to disk at end with ram_write()
-   2. Script permutes variables of interest during processing
-      Safer to work with copies that have different names
-      This discourages accidental, mistaken use of permuted versions
-   3. Makes this script a more generic template:
-      var_in instead of specific variable names everywhere */
-*var_in=one_dmn_rec_var;
-*crd_in=time;
-*dmn_in_sz=$time.size; // [nbr] Size of input arrays
-
-/* Create all other "intermediate" variables as RAM variables 
-   to prevent them from cluttering the output file.
-   Mask flag and sort map are same size as variable of interest */
-*msk_flg=var_in;
-*srt_map=var_in;
-
-/* In this example we mask for all values evenly divisible by 3
-   This is the key, problem-specific portion of the template
-   Replace this where() condition by that for your problem
-   Mask variable is Boolean: 1=Meets condition, 0=Fails condition */
-where(var_in % 3 == 0) msk_flg=1; elsewhere msk_flg=0;
-
-// print("msk_flg = ");print(msk_flg); // For debugging...
-
-/* The sort() routine is overloaded, and takes one or two arguments
-   The second argument (optional) is the "sort map" (srt_map below)
-   Pass the sort map by reference, i.e., prefix with an ampersand
-   If the sort map does not yet exist, then it will be created and 
-   returned as an integer type the same shape as the input variable.
-   The output of sort(), on the LHS, is a sorted version of the input
-   msk_flg is not needed in its original order after sort()
-   Hence we use msk_flg as both input to and output from sort()
-   Doing this prevents the need to define a new, unneeded variable */
-msk_flg=sort(msk_flg,&srt_map);
-
-// Count number of valid points in mask by summing the one's
-*msk_nbr=msk_flg.total();
-
-// Define output dimension equal in size to number of valid points
-defdim("crd_out",msk_nbr);
-
-/* Now sort the variable of interest using the sort map and dsort()
-   The output, on the LHS, is the input re-arranged so that all points
-   meeting the mask condition are contiguous at the end of the array
-   Use same srt_map to hyperslab multiple variables of the same shape
-   Remember to apply srt_map to the coordinate variables */
-crd_in=dsort(crd_in,srt_map);
-var_in=dsort(var_in,srt_map);
-
-/* Hyperslab last msk_nbr values of variable(s) of interest */
-crd_out[crd_out]=crd_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-var_out[crd_out]=var_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-
-/* NB: Even though we created all variables possible as RAM variables,
-   the original coordinate of interest, time, is written to the ouput.
-   I'm not exactly sure why. For now, delete it from the output with: 
-   ncks -O -x -v time ~/foo.nc ~/foo.nc
-   */ 
-EOF
-ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-ncks -O -x -v time ~/foo.nc ~/foo.nc
-ncks ~/foo.nc
-</pre></td></tr></table>
-
-<p>Here is an extended example of how to use <code>ncap2</code> features to
-sort multi-dimensional arrays based on the coordinate values along a
-single dimension. 
-</p><table><tr><td> </td><td><pre class="example">cat > ~/ncap2_foo.nco << 'EOF'
-/* Purpose: Sort multi-dimensional array based on coordinate values
-   This example sorts the variable three_dmn_rec_var(time,lat,lon)
-   based on the values of the time coordinate. */
-
-// Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-// Randomize the time coordinate
-time=10.0*gsl_rng_uniform(time);
-//print("original randomized time =\n");print(time);
-
-/* The sort() routine is overloaded, and takes one or two arguments
-   The first argument is a one dimensional array
-   The second argument (optional) is the "sort map" (srt_map below)
-   Pass the sort map by reference, i.e., prefix with an ampersand
-   If the sort map does not yet exist, then it will be created and 
-   returned as an integer type the same shape as the input variable.
-   The output of sort(), on the LHS, is a sorted version of the input */
-
-time=sort(time,&srt_map);
-//print("sorted time (ascending order) and associated sort map =\n");print(time);print(srt_map);
-
-/* sort() always sorts in ascending order
-   The associated sort map therefore re-arranges the original,
-   randomized time array into ascending order.
-   There are two methods to obtain the descending order the user wants
-   1) We could solve the problem in ascending order (the default)
-   and then apply the reverse() method to re-arrange the results.
-   2) We could change the sort map to return things in descending
-   order of time and solve the problem directly in descending order. */
-
-// Following shows how to do method one:
-
-/* Expand the sort map to srt_map_3d, the size of the data array
-   1. Use data array to provide right shape for the expanded sort map
-   2. Coerce data array into an integer so srt_map_3d is an integer
-   3. Multiply data array by zero so 3-d map elements are all zero
-   4. Add the 1-d sort map to the 3-d sort map (NCO automatically resizes)
-   5. Add the spatial (lat,lon) offsets to each time index 
-   6. de-sort using the srt_map_3d
-   7. Use reverse to obtain descending in time order
-   Loops could accomplish the same thing (exercise left for reader)
-   However, loops are slow for large datasets */
-
-/* Following index manipulation requires understanding correspondence
-   between 1-d (unrolled, memory order of storage) and access into that
-   memory as a multidimensional (3-d, in this case) rectangular array.
-   Key idea to understand is how dimensionality affects offsets */ 
-// Copy 1-d sort map into 3-d sort map
-srt_map_3d=(0*int(three_dmn_rec_var))+srt_map;
-// Multiply base offset by factorial of lesser dimensions
-srt_map_3d*=$lat.size*$lon.size;
-lon_idx=array(0,1,$lon);
-lat_idx=array(0,1,$lat)*$lon.size;
-lat_lon_idx[$lat,$lon]=lat_idx+lon_idx;
-srt_map_3d+=lat_lon_idx;
-
-print("sort map 3d =\n");print(srt_map_3d);
-
-// Use dsort() to "de-sort" the data using the sort map
-three_dmn_rec_var=dsort(three_dmn_rec_var,srt_map_3d);
-
-// Finally, reverse data so time coordinate is descending
-time=time.reverse($time);
-//print("sorted time (descending order) =\n");print(time);
-three_dmn_rec_var=three_dmn_rec_var.reverse($time);
-
-// Method two: Key difference is srt_map=$time.size-srt_map-1;
-EOF
-ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-</pre></td></tr></table>
-
-<a name="grd"></a> <!-- http://nco.sf.net/nco.html#grd -->
-<a name="rrg"></a> <!-- http://nco.sf.net/nco.html#rrg -->
-<a name="rct"></a> <!-- http://nco.sf.net/nco.html#rct -->
-<hr size="6">
-<a name="Irregular-grids"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Sort-methods" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Bilinear-interpolation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Irregular-Grids"></a>
-<h3 class="subsection">4.1.17 Irregular Grids</h3>
-<a name="index-irregular-grids"></a>
-<a name="index-rectangular-grids"></a>
-<a name="index-non_002drectangular-grids"></a>
-<a name="index-non_002dstandard-grids"></a>
-<a name="index-mask"></a>
-<p><acronym>NCO</acronym> is capable of analyzing datasets for many different
-underlying coordinate grid types.
-netCDF was developed for and initially used with grids comprised of
-orthogonal dimensions forming a rectangular coordinate system.
-We call such grids <em>standard</em> grids.
-It is increasingly common for datasets to use metadata to describe
-much more complex grids.
-Let us first define three important coordinate grid properties:
-rectangularity, regularity, and fxm.
-</p>
-<p>Grids are <em>regular</em> if the spacing between adjacent is constant. 
-For example, a 4-by-5 degree latitude-longitude grid is regular
-because the spacings between adjacent latitudes (4 degrees) are
-constant as are the (5 degrees) spacings between adjacent
-longitudes. 
-Spacing in <em>irregular</em> grids depends on the location along the
-coordinate. 
-Grids such as Gaussian grids have uneven spacing in latitude (points 
-cluster near the equator) and so are irregular.
-</p>
-<p>Grids are <em>rectangular</em> if the number of elements in any
-dimension is not a function of any other dimension.
-For example, a T42 Gaussian latitude-longitude grid is rectangular
-because there are the same number of longitudes (128) for each of the 
-(64) latitudes.
-Grids are <em>non-rectangular</em> if the elements in any dimension
-depend on another dimension.
-Non-rectangular grids present many special challenges to 
-analysis software like <acronym>NCO</acronym>.
-</p>
-<p>Wrapped coordinates (see section <a href="#Wrapped-Coordinates">Wrapped Coordinates</a>), such as longitude,
-are independent of these grid properties (regularity,
-rectangularity). 
-</p>
-<a name="index-wrapped-coordinates-2"></a>
-<p>The preferred <acronym>NCO</acronym> technique to analyze data on non-standard
-coordinate grids is to create a region mask with <code>ncap2</code>, and
-then to use the mask within <code>ncap2</code> for variable-specific
-processing, and/or with other operators (e.g., <code>ncwa</code>,
-<code>ncdiff</code>) for entire file processing. 
-</p>
-<p>Before describing the construction of masks, let us review how
-irregularly gridded geoscience data are described.
-Say that latitude and longitude are stored as <var>R</var>-dimensional
-arrays and the product of the dimension sizes is the total number of  
-elements N in the other variables.
-Geoscience applications tend to use <em><var>R</var>=1</em>, 
-<em><var>R</var>=2</em>, and <em><var>R</var>=3</em>.
-</p>
-<p>If the grid is has no simple representation (e.g., discontinuous) then
-it makes sense to store all coordinates as 1D arrays with the same
-size as the number of grid points. 
-These gridpoints can be completely independent of all the other (own
-weight, area, etc.).  
-</p>
-<p><var>R</var>=1: lat(number_of_gridpoints) and lon(number_of_gridpoints)
-</p>
-<p>If the horizontal grid is time-invariant then <var>R</var>=2 is common:
-</p>
-<p><var>R</var>=2: lat(south_north,east_west) and lon(south_north,east_west)
-</p>
-<p>The Weather and Research Forecast (<acronym>WRF</acronym>) model uses <var>R</var>=3:
-</p>
-<p><var>R</var>=3: lat(time,south_north,east_west), lon(time,south_north,east_west)
-</p>
-<p>and so supports grids that change with time.
-</p>
-<p>Grids with <var>R</var> > 1 often use missing values to indicated empty points.
-For example, so-called "staggered grids" will use fewer east_west
-points near the poles and more near the equator. netCDF only accepts
-rectangular arrays so space must be allocated for the maximum number
-of east_west points at all latitudes. Then the application writes
-missing values into the unused points near the poles.
-</p>
-<p>We demonstrate the <code>ncap2</code> analysis technique for irregular
-regions by constructing a mask for an <var>R</var>=2 grid.
-We wish to find, say, the mean temperature within 
-[<var>lat_min</var>,<var>lat_max</var>] and [<var>lon_min</var>,<var>lon_max</var>]: 
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'mask_var= (lat >= lat_min && lat <= lat_max) && \
-                    (lon >= lon_min && lon <= lon_max);' in.nc out.nc
-</pre></td></tr></table>
-<p>Arbitrarily shaped regions can be defined by more complex conditional
-statements. 
-Once defined, masks can be applied to specific variables,
-and to entire files:
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'temperature_avg=(temperature*mask_var).avg()' in.nc out.nc
-ncwa -a lat,lon -m mask_var -w area in.nc out.nc
-</pre></td></tr></table>
-<p>Crafting such commands on the command line is possible though unwieldy.
-In such cases, a script is often cleaner and allows you to document the
-procedure:
-</p><table><tr><td> </td><td><pre class="example">cat > ncap2.in << 'EOF'
-mask_var = (lat >= lat_min && lat <= lat_max) && (lon >= lon_min && > lon <= lon_max);
-if(mask_var.total() > 0){ // Check that mask contains some valid values
-  temperature_avg=(temperature*mask_var).avg(); // Average temperature
-  temperature_max=(temperature*mask_var).max(); // Maximum temperature
-}
-EOF
-ncap2 -S ncap2.in in.nc out.nc
-</pre></td></tr></table>
-
-<p>For <acronym>WRF</acronym> files creating regional masks looks like 
-</p><table><tr><td> </td><td><pre class="example">mask_var = (XLAT >= lat_min && XLAT <= lat_max) && (XLONG >= lon_min && > XLONG <= lon_max);
-</pre></td></tr></table>
-<p>In practice with WRF it’s a bit more complicated because you must
-use the global metadata to determine the grid staggering and offsets
-to translate XLAT and XLONG into real latitudes and longitudes and
-missing points. The WRF grid documentation should describe this.
-</p>
-<p>A few notes:
-Irregular regions are the union of arrays lat/lon_min/max’s. 
-The mask procedure is identical for all <var>R</var>.
-</p>
-<a name="bln_ntp"></a> <!-- http://nco.sf.net/nco.html#bln_ntp -->
-<a name="bil_int"></a> <!-- http://nco.sf.net/nco.html#bil_int --><hr size="6">
-<a name="Bilinear-interpolation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Irregular-grids" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#GSL-special-functions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Bilinear-interpolation-1"></a>
-<h3 class="subsection">4.1.18 Bilinear interpolation</h3>
-<p>As of version 4.0.0 <acronym>NCO</acronym> has internal routines to
-perform bilinear interpolation on gridded data sets.
-In mathematics, bilinear interpolation is an extension of linear
-interpolation for interpolating functions of two variables on a regular
-grid. 
-The idea is to perform linear interpolation first in one direction, and
-then again in the other direction.
-</p>
-<p>Suppose we have an irregular grid of data <code>temperature[lat,lon]</code>,
-with co-ordinate vars <code>lat[lat], lon[lon]</code>. 
-We wish to find the temperature at an arbitary point [<var>X</var>,<var>Y</var>]
-within the grid. 
-If we can locate lat_min,lat_max and lon_min,lon_max such that 
-<code>lat_min <= X <= lat_max</code> and <code>lon_min <=Y <=lon_max</code> 
-then we can interpolate in two dimensions to find the temperature at
-[<var>X</var>,<var>Y</var>].
-</p>
-<p>The general form of the <code>ncap2</code> interpolation function is
-</p><table><tr><td> </td><td><pre class="example">var_out=bilinear_interp(grid_in,grid_out,grid_out_x,grid_out_y,grid_in_x,grid_in_y)
-</pre></td></tr></table>
-<p>where
-</p><dl compact="compact">
-<dt> <code>grid_in</code></dt>
-<dd><p>Input function data. 
-Usually a two dimensional variable. 
-It must be of size <code>grid_in_x.size()*grid_in_y.size()</code>        
-</p></dd>
-<dt> <code>grid_out</code></dt>
-<dd><p>This variable is the shape of <code>var_out</code>. 
-Usually a two dimensional variable. 
-It must be of size <code>grid_out_x.size()*grid_out_y.size()</code>
-</p></dd>
-<dt> <code>grid_out_x</code></dt>
-<dd><p><var>X</var> output values 
-</p></dd>
-<dt> <code>grid_out_y</code></dt>
-<dd><p><var>Y</var> output values 
-</p></dd>
-<dt> <code>grid_in_x</code></dt>
-<dd><p><var>X</var> input values values. Must be montonic (increasing or decreasing).
-</p></dd>
-<dt> <code>grid_in_y</code></dt>
-<dd><p><var>Y</var> input values values. Must be montonic (increasing or decreasing).
-</p></dd>
-</dl>
-<p>Prior to calculations all arguments are converted to type
-<code>NC_DOUBLE</code>.
-After calculations <code>var_out</code> is converted to the input type of
-<code>grid_in</code>. 
-</p>
-<p>Suppose the first part of an ncap2 script is
-</p><table><tr><td> </td><td><pre class="example">defdim("X",4);
-defdim("Y",5);
-
-// Temperature
-T_in[$X,$Y]=
- {100, 200, 300, 400, 500,
-  101, 202, 303, 404, 505,
-  102, 204, 306, 408, 510,
-  103, 206, 309, 412, 515.0 };
-
-// Coordinate variables
-x_in[$X]={0.0,1.0,2.0,3.01};
-y_in[$Y]={1.0,2.0,3.0,4.0,5};
-</pre></td></tr></table>
-<p>Now we interpolate with the following variables:
-</p><table><tr><td> </td><td><pre class="example">defdim("Xn",3);
-defdim("Yn",4); 
-T_out[$Xn,$Yn]=0.0;
-x_out[$Xn]={0.0,0.02,3.01};
-y_out[$Yn]={1.1,2.0,3,4};
-
-var_out=bilinear_interp(T_in,T_out,x_out,y_out,x_in,y_in);
-print(var_out);
-// 110, 200, 300, 400,
-// 110.022, 200.04, 300.06, 400.08,
-// 113.3, 206, 309, 412 ;
-</pre></td></tr></table>
-
-
-<p>It is possible to interpolate a single point:
-</p><table><tr><td> </td><td><pre class="example">var_out=bilinear_interp(T_in,0.0,3.0,4.99,x_in,y_in);
-print(var_out);
-// 513.920594059406
-</pre></td></tr></table>
-
-<p><strong>Wrapping and Extrapolation</strong> <br>
-The function <code>bilinear_interp_wrap()</code> takes the same
-arguments as <code>bilinear_interp()</code> but performs wrapping (<var>Y</var>)
-and extrapolation (<var>X</var>) for points off the edge of the grid.
-If the given range of longitude is say (25-335) and we have a point at
-20 degrees, then the endpoints of the range are used for the
-interpolation. 
-This is what wrapping means.   
-For wrapping to occur <var>Y</var> must be longitude and must be in the range
-(0,360) or (-180,180). 
-There are no restrictions on the longitude (<var>X</var>) values, though
-typically these are in the range (-90,90).
-This <code>ncap2</code> script illustrates both wrapping and extrapolation
-of end points:
-</p><table><tr><td> </td><td><pre class="example">defdim("lat_in",6);
-defdim("lon_in",5);
-
-// Coordinate input vars
-lat_in[$lat_in]={-80,-40,0,30,60.0,85.0};
-lon_in[$lon_in]={30, 110, 190, 270, 350.0};
-
-T_in[$lat_in,$lon_in]=
-  {10,40,50,30,15,   
-    12,43,52,31,16,   
-    14,46,54,32,17,   
-    16,49,56,33,18,   
-    18,52,58,34,19,   
-    20,55,60,35,20.0 };
-   
-defdim("lat_out",4);
-defdim("lon_out",3);
-
-// Coordinate variables
-lat_out[$lat_out]={-90,0,70,88.0};   
-lon_out[$lon_out]={0,190,355.0};
-
-T_out[$lat_out,$lon_out]=0.0;
-
-T_out=bilinear_interp_wrap(T_in,T_out,lat_out,lon_out,lat_in,lon_in);
-print(T_out); 
-// 13.4375, 49.5, 14.09375,
-// 16.25, 54, 16.625,
-// 19.25, 58.8, 19.325,
-// 20.15, 60.24, 20.135 ;
-</pre></td></tr></table>
-
-<a name="gsl"></a> <!-- http://nco.sf.net/nco.html#gsl --><hr size="6">
-<a name="GSL-special-functions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Bilinear-interpolation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#GSL-interpolation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="GSL-special-functions-1"></a>
-<h3 class="subsection">4.1.19 GSL special functions</h3>
-<a name="index-GSL-1"></a>
-<p>As of version 3.9.6 (released January, 2009), <acronym>NCO</acronym> 
-can link to the GNU Scientific Library (<acronym>GSL</acronym>). 
-<code>ncap</code> can access most <acronym>GSL</acronym> special functions including
-Airy, Bessel, error, gamma, beta, hypergeometric, and Legendre functions
-and elliptical integrals. 
-<acronym>GSL</acronym> must be version 1.4 or later. 
-To list the <acronym>GSL</acronym> functions available with your <acronym>NCO</acronym> 
-build, use <code>ncap2 -f | grep ^gsl</code>.
-</p>
-<p>The function names used by <acronym>ncap2</acronym> mirror their
-<acronym>GSL</acronym> names.
-The <acronym>NCO</acronym> wrappers for <acronym>GSL</acronym> functions automatically
-call the error-handling version of the <acronym>GSL</acronym> function when
-available  
-<a name="DOCF33" href="#FOOT33">(33)</a>.
-This allows <acronym>NCO</acronym> to return a missing value when the
-<acronym>GSL</acronym> library encounters a domain error or a floating point 
-exception. 
-The slow-down due to calling the error-handling version of the 
-<acronym>GSL</acronym> numerical functions was found to be negligible (please let
-us know if you find otherwise).
-</p>
-<a name="index-gamma-function"></a>
-<a name="index-gsl_005fsf_005fgamma"></a>
-<p>Consider the gamma function.<br>
-The <acronym>GSL</acronym> function prototype is <br>
-<code>int gsl_sf_gamma_e(const double x, gsl_sf_result * result)</code>
-The <code>ncap</code> script would be:
-</p><table><tr><td> </td><td><pre class="example">lon_in[lon]={-1,0.1,0,2,0.3};
-lon_out=gsl_sf_gamma(lon_in);
-lon_out= _, 9.5135, 4.5908, 2.9915 
-</pre></td></tr></table>
-
-<p>The first value is set to <code>_FillValue</code> since the gamma
-function is undefined for negative integers.
-If the input variable has a missing value then this value is used.
-Otherwise, the default double fill value is used
-(defined in the netCDF header ‘<tt>netcdf.h</tt>’ as 
-<code>NC_FILL_DOUBLE = 9.969e+36</code>).
-</p>
-<a name="index-Bessel-function"></a>
-<a name="index-gsl_005fsf_005fbessel_005fJn"></a>
-<p>Consider a call to a Bessel function with <acronym>GSL</acronym>
-prototype<br> 
-<code>int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result)</code> 
-</p>
-<p>An <code>ncap</code> script would be
-</p><table><tr><td> </td><td><pre class="example">lon_out=gsl_sf_bessel_Jn(2,lon_in);  
-lon_out=0.11490, 0.0012, 0.00498, 0.011165
-</pre></td></tr></table>
-<p>This computes the Bessel function of order <var>n=2</var> for every value in
-<code>lon_in</code>.
-The Bessel order argument, an integer, can also be a non-scalar
-variable, i.e., an array.  
-</p><table><tr><td> </td><td><pre class="example">n_in[lon]={0,1,2,3};
-lon_out=gsl_sf_bessel_Jn(n_in,0.5);
-lon_out= 0.93846, 0.24226, 0.03060, 0.00256
-</pre></td></tr></table>
-
-<p>Arguments to <acronym>GSL</acronym> wrapper functions in <code>ncap</code>
-must conform to one another, i.e., they must share the same sub-set of
-dimensions.  
-For example: <code>three_out=gsl_sf_bessel_Jn(n_in,three_dmn_var_dbl)</code>
-is valid because the variable <code>three_dmn_var_dbl</code> has a <var>lon</var> 
-dimension, so <code>n_in</code> in can be broadcast to conform to
-<code>three_dmn_var_dbl</code>.  
-However <code>time_out=gsl_sf_bessel_Jn(n_in,time)</code> is invalid.
-</p>
-<a name="index-Elliptic-integrals"></a>
-<p>Consider the elliptical integral with prototype
-<code>int gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result)</code>
-</p><table><tr><td> </td><td><pre class="example">three_out=gsl_sf_ellint_RD(0.5,time,three_dmn_var_dbl);
-</pre></td></tr></table>
-
-<p>The three arguments are all conformable so the above <code>ncap</code> call is valid. The mode argument in the function prototype controls the convergence of the algorithm. It also appears  in the Airy Function prototypes. It can be set by defining the environment variable <code>GSL_PREC_MODE</code>. If unset it defaults to the value <code>GSL_PREC_DOUBLE</code>. See the <acronym>GSL</acronym> manual for more details. 
-</p><table><tr><td> </td><td><pre class="example">export GSL_PREC_MODE=0 // GSL_PREC_DOUBLE
-export GSL_PREC_MODE=1 // GSL_PREC_SINGLE
-export GSL_PREC_MODE=2 // GSL_PREC_APPROX
-</pre></td></tr></table>
-
-<p>The <code>ncap</code> wrappers to the array functions are
-slightly different. 
-Consider the following <acronym>GSL</acronym> prototype <br> 
-<code>int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double *result_array)</code>
-</p><table><tr><td> </td><td><pre class="example">b1=lon.double();
-x=0.5;
-status=gsl_sf_bessel_Jn_array(1,4,x,&b1);
-print(status);
-b1=0.24226,0.0306,0.00256,0.00016;
-</pre></td></tr></table>
-<p>This calculates the Bessel function of <var>x</var>=0.5 for
-<var>n</var>=1 to 4. 
-The first three arguments are scalar values. 
-If a non-scalar variable is supplied as an argument then only the first
-value is used. 
-The final argument is the variable where the results are stored (NB: the
-<code>&</code> indicates this is a call by reference). 
-This final argument must be of type <code>double</code> and must be of least
-size <var>nmax-nmin+1</var>. 
-If either of these conditions is not met then then the function 
-returns an error message. 
-The function/wrapper returns a status flag. 
-Zero indicates success. 
-</p>
-<p>Consider another array function <br> 
-<code>int gsl_sf_legendre_Pl_array( int lmax, double x, double *result_array);</code>
-<a name="index-Legendre-polynomial"></a>
-<a name="index-gsl_005fsf_005flegendre_005fPl"></a>
-</p><table><tr><td> </td><td><pre class="example">a1=time.double();
-x=0.3;
-status=gsl_sf_legendre_Pl_array(a1.size()-1, x,&a1);  
-print(status);
-</pre></td></tr></table>
-<p>This call calculates <var>P_l</var>(0.3) for <var>l</var>=0..9. 
-Note that <var>|x|<=1</var>, otherwise there will be a domain error. 
-See the <acronym>GSL</acronym> 
-documentation for more details.  
-</p>
-<p>The <acronym>GSL</acronym> functions implemented in <acronym>NCO</acronym> are 
-listed in the table below. 
-This table is correct for <acronym>GSL</acronym> version 1.10. 
-To see what functions are available on your build run the command
-<code>ncap2 -f |grep ^gsl</code> . 
-To see this table along with the <acronym>GSL</acronym> C-function
-prototypes look at the spreadsheet <strong>doc/nco_gsl.ods</strong>. <br> <br> 
-</p>
-<table>
-<tr><td width="35%"><strong>GSL NAME</strong></td><td width="5%"><strong>I</strong></td><td width="60%"><strong>NCAP FUNCTION CALL</strong></td></tr>
-<tr><td width="35%">gsl_sf_airy_Ai_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Ai(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Bi_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Bi(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Ai_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Ai_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Bi_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Bi_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Ai_deriv_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Ai_deriv(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Bi_deriv_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Bi_deriv(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Ai_deriv_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Ai_deriv_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_Bi_deriv_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_Bi_deriv_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_zero_Ai_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_zero_Ai(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_zero_Bi_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_zero_Bi(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_zero_Ai_deriv_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_zero_Ai_deriv(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_airy_zero_Bi_deriv_e</td><td width="5%">Y</td><td width="60%">gsl_sf_airy_zero_Bi_deriv(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_J0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_J0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_J1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_J1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Jn_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Jn(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Jn_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_Jn_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Y0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Y0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Y1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Y1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Yn_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Yn(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Yn_array</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Yn_array</td></tr>
-<tr><td width="35%">gsl_sf_bessel_I0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_I0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_I1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_I1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_In_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_In(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_In_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_In_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_I0_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_I0_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_I1_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_I1_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_In_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_In_scaled(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_In_scaled_array</td><td width="5%">Y</td><td width="60%">staus=gsl_sf_bessel_In_scaled_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_K0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_K0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_K1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_K1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Kn_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Kn(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Kn_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_Kn_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_K0_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_K0_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_K1_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_K1_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Kn_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Kn_scaled(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Kn_scaled_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_Kn_scaled_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_j0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_J0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_j1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_J1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_j2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_j2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_jl_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_jl(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_jl_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_jl_array(int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_jl_steed_array</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_jl_steed_array</td></tr>
-<tr><td width="35%">gsl_sf_bessel_y0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Y0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_y1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Y1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_y2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_y2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_yl_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_yl(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_yl_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_yl_array(int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_i0_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_I0_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_i1_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_I1_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_i2_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_i2_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_il_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_il_scaled(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_il_scaled_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_il_scaled_array(int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_k0_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_K0_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_k1_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_K1_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_k2_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_k2_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_kl_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_kl_scaled(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_kl_scaled_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_bessel_kl_scaled_array(int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Jnu_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Jnu(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Ynu_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Ynu(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_sequence_Jnu_e</td><td width="5%">N</td><td width="60%">gsl_sf_bessel_sequence_Jnu</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Inu_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Inu_scaled(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Inu_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Inu(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Knu_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Knu_scaled(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_Knu_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_Knu(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_lnKnu_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_lnKnu(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_zero_J0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_zero_J0(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_zero_J1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_bessel_zero_J1(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_bessel_zero_Jnu_e</td><td width="5%">N</td><td width="60%">gsl_sf_bessel_zero_Jnu</td></tr>
-<tr><td width="35%">gsl_sf_clausen_e</td><td width="5%">Y</td><td width="60%">gsl_sf_clausen(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hydrogenicR_1_e</td><td width="5%">N</td><td width="60%">gsl_sf_hydrogenicR_1</td></tr>
-<tr><td width="35%">gsl_sf_hydrogenicR_e</td><td width="5%">N</td><td width="60%">gsl_sf_hydrogenicR</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_wave_FG_e</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_wave_FG</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_wave_F_array</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_wave_F_array</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_wave_FG_array</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_wave_FG_array</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_wave_FGp_array</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_wave_FGp_array</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_wave_sphF_array</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_wave_sphF_array</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_CL_e</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_CL</td></tr>
-<tr><td width="35%">gsl_sf_coulomb_CL_array</td><td width="5%">N</td><td width="60%">gsl_sf_coulomb_CL_array</td></tr>
-<tr><td width="35%">gsl_sf_coupling_3j_e</td><td width="5%">N</td><td width="60%">gsl_sf_coupling_3j</td></tr>
-<tr><td width="35%">gsl_sf_coupling_6j_e</td><td width="5%">N</td><td width="60%">gsl_sf_coupling_6j</td></tr>
-<tr><td width="35%">gsl_sf_coupling_RacahW_e</td><td width="5%">N</td><td width="60%">gsl_sf_coupling_RacahW</td></tr>
-<tr><td width="35%">gsl_sf_coupling_9j_e</td><td width="5%">N</td><td width="60%">gsl_sf_coupling_9j</td></tr>
-<tr><td width="35%">gsl_sf_coupling_6j_INCORRECT_e</td><td width="5%">N</td><td width="60%">gsl_sf_coupling_6j_INCORRECT</td></tr>
-<tr><td width="35%">gsl_sf_dawson_e</td><td width="5%">Y</td><td width="60%">gsl_sf_dawson(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_debye_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_debye_1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_debye_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_debye_2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_debye_3_e</td><td width="5%">Y</td><td width="60%">gsl_sf_debye_3(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_debye_4_e</td><td width="5%">Y</td><td width="60%">gsl_sf_debye_4(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_debye_5_e</td><td width="5%">Y</td><td width="60%">gsl_sf_debye_5(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_debye_6_e</td><td width="5%">Y</td><td width="60%">gsl_sf_debye_6(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_dilog_e</td><td width="5%">N</td><td width="60%">gsl_sf_dilog</td></tr>
-<tr><td width="35%">gsl_sf_complex_dilog_xy_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_dilog_xy_e</td></tr>
-<tr><td width="35%">gsl_sf_complex_dilog_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_dilog</td></tr>
-<tr><td width="35%">gsl_sf_complex_spence_xy_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_spence_xy_e</td></tr>
-<tr><td width="35%">gsl_sf_multiply_e</td><td width="5%">N</td><td width="60%">gsl_sf_multiply</td></tr>
-<tr><td width="35%">gsl_sf_multiply_err_e</td><td width="5%">N</td><td width="60%">gsl_sf_multiply_err</td></tr>
-<tr><td width="35%">gsl_sf_ellint_Kcomp_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_Kcomp(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_Ecomp_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_Ecomp(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_Pcomp_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_Pcomp(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_Dcomp_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_Dcomp(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_F_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_F(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_E_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_E(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_P_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_P(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_D_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_D(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_RC_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_RC(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_RD_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_RD(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_RF_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_RF(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_ellint_RJ_e</td><td width="5%">Y</td><td width="60%">gsl_sf_ellint_RJ(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_elljac_e</td><td width="5%">N</td><td width="60%">gsl_sf_elljac</td></tr>
-<tr><td width="35%">gsl_sf_erfc_e</td><td width="5%">Y</td><td width="60%">gsl_sf_erfc(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_log_erfc_e</td><td width="5%">Y</td><td width="60%">gsl_sf_log_erfc(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_erf_e</td><td width="5%">Y</td><td width="60%">gsl_sf_erf(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_erf_Z_e</td><td width="5%">Y</td><td width="60%">gsl_sf_erf_Z(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_erf_Q_e</td><td width="5%">Y</td><td width="60%">gsl_sf_erf_Q(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hazard_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hazard(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exp_e</td><td width="5%">Y</td><td width="60%">gsl_sf_exp(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exp_e10_e</td><td width="5%">N</td><td width="60%">gsl_sf_exp_e10</td></tr>
-<tr><td width="35%">gsl_sf_exp_mult_e</td><td width="5%">Y</td><td width="60%">gsl_sf_exp_mult(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exp_mult_e10_e</td><td width="5%">N</td><td width="60%">gsl_sf_exp_mult_e10</td></tr>
-<tr><td width="35%">gsl_sf_expm1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expm1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exprel_e</td><td width="5%">Y</td><td width="60%">gsl_sf_exprel(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exprel_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_exprel_2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exprel_n_e</td><td width="5%">Y</td><td width="60%">gsl_sf_exprel_n(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exp_err_e</td><td width="5%">Y</td><td width="60%">gsl_sf_exp_err(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_exp_err_e10_e</td><td width="5%">N</td><td width="60%">gsl_sf_exp_err_e10</td></tr>
-<tr><td width="35%">gsl_sf_exp_mult_err_e</td><td width="5%">N</td><td width="60%">gsl_sf_exp_mult_err</td></tr>
-<tr><td width="35%">gsl_sf_exp_mult_err_e10_e</td><td width="5%">N</td><td width="60%">gsl_sf_exp_mult_err_e10</td></tr>
-<tr><td width="35%">gsl_sf_expint_E1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_E1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_E2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_E2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_En_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_En(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_E1_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_E1_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_E2_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_E2_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_En_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_En_scaled(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_Ei_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_Ei(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_Ei_scaled_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_Ei_scaled(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_Shi_e</td><td width="5%">Y</td><td width="60%">gsl_sf_Shi(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_Chi_e</td><td width="5%">Y</td><td width="60%">gsl_sf_Chi(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_expint_3_e</td><td width="5%">Y</td><td width="60%">gsl_sf_expint_3(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_Si_e</td><td width="5%">Y</td><td width="60%">gsl_sf_Si(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_Ci_e</td><td width="5%">Y</td><td width="60%">gsl_sf_Ci(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_atanint_e</td><td width="5%">Y</td><td width="60%">gsl_sf_atanint(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_m1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_m1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_int(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_mhalf_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_mhalf(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_half_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_half(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_3half_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_3half(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fermi_dirac_inc_0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fermi_dirac_inc_0(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lngamma_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lngamma(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lngamma_sgn_e</td><td width="5%">N</td><td width="60%">gsl_sf_lngamma_sgn</td></tr>
-<tr><td width="35%">gsl_sf_gamma_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gamma(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gammastar_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gammastar(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gammainv_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gammainv(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lngamma_complex_e</td><td width="5%">N</td><td width="60%">gsl_sf_lngamma_complex</td></tr>
-<tr><td width="35%">gsl_sf_taylorcoeff_e</td><td width="5%">Y</td><td width="60%">gsl_sf_taylorcoeff(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_fact_e</td><td width="5%">Y</td><td width="60%">gsl_sf_fact(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_doublefact_e</td><td width="5%">Y</td><td width="60%">gsl_sf_doublefact(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lnfact_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lnfact(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lndoublefact_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lndoublefact(uint_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lnchoose_e</td><td width="5%">N</td><td width="60%">gsl_sf_lnchoose</td></tr>
-<tr><td width="35%">gsl_sf_choose_e</td><td width="5%">N</td><td width="60%">gsl_sf_choose</td></tr>
-<tr><td width="35%">gsl_sf_lnpoch_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lnpoch(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lnpoch_sgn_e</td><td width="5%">N</td><td width="60%">gsl_sf_lnpoch_sgn</td></tr>
-<tr><td width="35%">gsl_sf_poch_e</td><td width="5%">Y</td><td width="60%">gsl_sf_poch(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_pochrel_e</td><td width="5%">Y</td><td width="60%">gsl_sf_pochrel(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gamma_inc_Q_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gamma_inc_Q(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gamma_inc_P_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gamma_inc_P(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gamma_inc_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gamma_inc(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lnbeta_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lnbeta(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lnbeta_sgn_e</td><td width="5%">N</td><td width="60%">gsl_sf_lnbeta_sgn</td></tr>
-<tr><td width="35%">gsl_sf_beta_e</td><td width="5%">Y</td><td width="60%">gsl_sf_beta(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_beta_inc_e</td><td width="5%">N</td><td width="60%">gsl_sf_beta_inc</td></tr>
-<tr><td width="35%">gsl_sf_gegenpoly_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gegenpoly_1(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gegenpoly_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gegenpoly_2(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gegenpoly_3_e</td><td width="5%">Y</td><td width="60%">gsl_sf_gegenpoly_3(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_gegenpoly_n_e</td><td width="5%">N</td><td width="60%">gsl_sf_gegenpoly_n</td></tr>
-<tr><td width="35%">gsl_sf_gegenpoly_array</td><td width="5%">Y</td><td width="60%">gsl_sf_gegenpoly_array</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_0F1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_0F1(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_1F1_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_1F1_int(int_expr,int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_1F1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_1F1(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_U_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_U_int(int_expr,int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_U_int_e10_e</td><td width="5%">N</td><td width="60%">gsl_sf_hyperg_U_int_e10</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_U_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_U(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_U_e10_e</td><td width="5%">N</td><td width="60%">gsl_sf_hyperg_U_e10</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_2F1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_2F1(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_2F1_conj_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_2F1_conj(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_2F1_renorm_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_2F1_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_2F1_conj_renorm_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_2F1_conj_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hyperg_2F0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hyperg_2F0(dbl_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_laguerre_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_laguerre_1(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_laguerre_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_laguerre_2(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_laguerre_3_e</td><td width="5%">Y</td><td width="60%">gsl_sf_laguerre_3(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_laguerre_n_e</td><td width="5%">Y</td><td width="60%">gsl_sf_laguerre_n(int_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lambert_W0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lambert_W0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_lambert_Wm1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_lambert_Wm1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Pl_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_Pl(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Pl_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_legendre_Pl_array(int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Pl_deriv_array</td><td width="5%">N</td><td width="60%">gsl_sf_legendre_Pl_deriv_array</td></tr>
-<tr><td width="35%">gsl_sf_legendre_P1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_P1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_P2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_P2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_P3_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_P3(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Q0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_Q0(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Q1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_Q1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Ql_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_Ql(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Plm_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_Plm(int_expr,int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Plm_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_legendre_Plm_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_Plm_deriv_array</td><td width="5%">N</td><td width="60%">gsl_sf_legendre_Plm_deriv_array</td></tr>
-<tr><td width="35%">gsl_sf_legendre_sphPlm_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_sphPlm(int_expr,int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_sphPlm_array</td><td width="5%">Y</td><td width="60%">status=gsl_sf_legendre_sphPlm_array(int,int,double,&var_out)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_sphPlm_deriv_array</td><td width="5%">N</td><td width="60%">gsl_sf_legendre_sphPlm_deriv_array</td></tr>
-<tr><td width="35%">gsl_sf_legendre_array_size</td><td width="5%">N</td><td width="60%">gsl_sf_legendre_array_size</td></tr>
-<tr><td width="35%">gsl_sf_conicalP_half_e</td><td width="5%">Y</td><td width="60%">gsl_sf_conicalP_half(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_conicalP_mhalf_e</td><td width="5%">Y</td><td width="60%">gsl_sf_conicalP_mhalf(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_conicalP_0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_conicalP_0(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_conicalP_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_conicalP_1(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_conicalP_sph_reg_e</td><td width="5%">Y</td><td width="60%">gsl_sf_conicalP_sph_reg(int_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_conicalP_cyl_reg_e</td><td width="5%">Y</td><td width="60%">gsl_sf_conicalP_cyl_reg(int_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_H3d_0_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_H3d_0(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_H3d_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_H3d_1(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_H3d_e</td><td width="5%">Y</td><td width="60%">gsl_sf_legendre_H3d(int_expr,dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_legendre_H3d_array</td><td width="5%">N</td><td width="60%">gsl_sf_legendre_H3d_array</td></tr>
-<tr><td width="35%">gsl_sf_legendre_array_size</td><td width="5%">N</td><td width="60%">gsl_sf_legendre_array_size</td></tr>
-<tr><td width="35%">gsl_sf_log_e</td><td width="5%">Y</td><td width="60%">gsl_sf_log(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_log_abs_e</td><td width="5%">Y</td><td width="60%">gsl_sf_log_abs(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_complex_log_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_log</td></tr>
-<tr><td width="35%">gsl_sf_log_1plusx_e</td><td width="5%">Y</td><td width="60%">gsl_sf_log_1plusx(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_log_1plusx_mx_e</td><td width="5%">Y</td><td width="60%">gsl_sf_log_1plusx_mx(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_a_array</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_a_array</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_b_array</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_b_array</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_a</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_a</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_b</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_b</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_a_coeff</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_a_coeff</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_b_coeff</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_b_coeff</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_ce</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_ce</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_se</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_se</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_ce_array</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_ce_array</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_se_array</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_se_array</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_Mc</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_Mc</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_Ms</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_Ms</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_Mc_array</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_Mc_array</td></tr>
-<tr><td width="35%">gsl_sf_mathieu_Ms_array</td><td width="5%">N</td><td width="60%">gsl_sf_mathieu_Ms_array</td></tr>
-<tr><td width="35%">gsl_sf_pow_int_e</td><td width="5%">N</td><td width="60%">gsl_sf_pow_int</td></tr>
-<tr><td width="35%">gsl_sf_psi_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_psi_int(int_expr)</td></tr>
-<tr><td width="35%">gsl_sf_psi_e</td><td width="5%">Y</td><td width="60%">gsl_sf_psi(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_psi_1piy_e</td><td width="5%">Y</td><td width="60%">gsl_sf_psi_1piy(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_complex_psi_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_psi</td></tr>
-<tr><td width="35%">gsl_sf_psi_1_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_psi_1_int(int_expr)</td></tr>
-<tr><td width="35%">gsl_sf_psi_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_psi_1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_psi_n_e</td><td width="5%">Y</td><td width="60%">gsl_sf_psi_n(int_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_synchrotron_1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_synchrotron_1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_synchrotron_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_synchrotron_2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_transport_2_e</td><td width="5%">Y</td><td width="60%">gsl_sf_transport_2(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_transport_3_e</td><td width="5%">Y</td><td width="60%">gsl_sf_transport_3(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_transport_4_e</td><td width="5%">Y</td><td width="60%">gsl_sf_transport_4(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_transport_5_e</td><td width="5%">Y</td><td width="60%">gsl_sf_transport_5(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_sin_e</td><td width="5%">N</td><td width="60%">gsl_sf_sin</td></tr>
-<tr><td width="35%">gsl_sf_cos_e</td><td width="5%">N</td><td width="60%">gsl_sf_cos</td></tr>
-<tr><td width="35%">gsl_sf_hypot_e</td><td width="5%">N</td><td width="60%">gsl_sf_hypot</td></tr>
-<tr><td width="35%">gsl_sf_complex_sin_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_sin</td></tr>
-<tr><td width="35%">gsl_sf_complex_cos_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_cos</td></tr>
-<tr><td width="35%">gsl_sf_complex_logsin_e</td><td width="5%">N</td><td width="60%">gsl_sf_complex_logsin</td></tr>
-<tr><td width="35%">gsl_sf_sinc_e</td><td width="5%">N</td><td width="60%">gsl_sf_sinc</td></tr>
-<tr><td width="35%">gsl_sf_lnsinh_e</td><td width="5%">N</td><td width="60%">gsl_sf_lnsinh</td></tr>
-<tr><td width="35%">gsl_sf_lncosh_e</td><td width="5%">N</td><td width="60%">gsl_sf_lncosh</td></tr>
-<tr><td width="35%">gsl_sf_polar_to_rect</td><td width="5%">N</td><td width="60%">gsl_sf_polar_to_rect</td></tr>
-<tr><td width="35%">gsl_sf_rect_to_polar</td><td width="5%">N</td><td width="60%">gsl_sf_rect_to_polar</td></tr>
-<tr><td width="35%">gsl_sf_sin_err_e</td><td width="5%">N</td><td width="60%">gsl_sf_sin_err</td></tr>
-<tr><td width="35%">gsl_sf_cos_err_e</td><td width="5%">N</td><td width="60%">gsl_sf_cos_err</td></tr>
-<tr><td width="35%">gsl_sf_angle_restrict_symm_e</td><td width="5%">N</td><td width="60%">gsl_sf_angle_restrict_symm</td></tr>
-<tr><td width="35%">gsl_sf_angle_restrict_pos_e</td><td width="5%">N</td><td width="60%">gsl_sf_angle_restrict_pos</td></tr>
-<tr><td width="35%">gsl_sf_angle_restrict_symm_err_e</td><td width="5%">N</td><td width="60%">gsl_sf_angle_restrict_symm_err</td></tr>
-<tr><td width="35%">gsl_sf_angle_restrict_pos_err_e</td><td width="5%">N</td><td width="60%">gsl_sf_angle_restrict_pos_err</td></tr>
-<tr><td width="35%">gsl_sf_zeta_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_zeta_int(int_expr)</td></tr>
-<tr><td width="35%">gsl_sf_zeta_e</td><td width="5%">Y</td><td width="60%">gsl_sf_zeta(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_zetam1_e</td><td width="5%">Y</td><td width="60%">gsl_sf_zetam1(dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_zetam1_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_zetam1_int(int_expr)</td></tr>
-<tr><td width="35%">gsl_sf_hzeta_e</td><td width="5%">Y</td><td width="60%">gsl_sf_hzeta(dbl_expr,dbl_expr)</td></tr>
-<tr><td width="35%">gsl_sf_eta_int_e</td><td width="5%">Y</td><td width="60%">gsl_sf_eta_int(int_expr)</td></tr>
-<tr><td width="35%">gsl_sf_eta_e</td><td width="5%">Y</td><td width="60%">gsl_sf_eta(dbl_expr)</td></tr>
-</table>
-
-<a name="gsl_int"></a> <!-- http://nco.sf.net/nco.html#gsl_int --><hr size="6">
-<a name="GSL-interpolation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#GSL-special-functions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#GSL-least_002dsquares-fitting" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="GSL-interpolation-1"></a>
-<h3 class="subsection">4.1.20 GSL interpolation</h3>
-<a name="index-GSL-2"></a>
-<p>As of version 3.9.9 (released July, 2009), <acronym>NCO</acronym> has wrappers to the <acronym>GSL</acronym> interpolation functions.
-</p>
-<p>Given a set of data points (x1,y1)...(xn, yn) the <acronym>GSL</acronym> functions computes a continuous interpolating function <acronym>Y(x)</acronym> such that <acronym>Y(xi) = yi</acronym>. The interpolation is piecewise smooth, and its behavior at the end-points is determined by the type of interpolation used. For more information consult the <acronym>GSL</acronym> manual. 
-</p>
-<p>Interpolation with <code>ncap2</code> is a two stage process. In the first stage, a ram variable is created from the chosen interpolating function and the data set. This ram variable holds in memory a <acronym>GSL</acronym> interpolation object. In the second stage, points along the interpolating function are calculated. If you have a very large data set or are interpolating many sets then consider deleting the ram variable when it is redundant. Use the command <code>ram_delete(var_nm [...]
-</p>
-<p>A simple example
-</p>
-<table><tr><td> </td><td><pre class="example">x_in[$lon]={1.0,2.0,3.0,4.0};
-y_in[$lon]={1.1,1.2,1.5,1.8};
-
-// Ram variable is declared and defined here 
-gsl_interp_cspline(&ram_sp,x_in,y_in);
-
-x_out[$lon_grd]={1.1,2.0,3.0,3.1,3.99};
-
-y_out=gsl_spline_eval(ram_sp,x_out);
-y2=gsl_spline_eval(ram_sp,1.3);
-y3=gsl_spline_eval(ram_sp,0.0);
-ram_delete(ram_sp);
-
-print(y_out);   // 1.10472, 1.2, 1.4, 1.42658, 1.69680002 
-print(y2);      // 1.12454 
-print(y3);      // '_' 
-
-</pre></td></tr></table>
-
-<p>Note in the above example y3 is set to ’missing value’ because 0.0 isn’t within the input X range.  
-</p>
-<p><strong> <acronym>GSL</acronym> Interpolation Types </strong> <br>
-All the interpolation functions have been implemented. These are: <br>
-gsl_interp_linear() <br> gsl_interp_polynomial() <br> gsl_interp_cspline()<br>
-gsl_interp_cspline_periodic()<br> gsl_interp_akima() <br> gsl_interp_akima_periodic() <br>
-</p>
-<br> <br>
-<p><strong> Evaluation of Interpolating Types </strong> <br>
-<strong>Implemented</strong> <br>
-gsl_spline_eval() <br>
-<strong>Unimplemented</strong> <br>
-gsl_spline_deriv() <br>
-gsl_spline_deriv2() <br>
-gsl_spline_integ() <br>
-</p>
-<a name="ncap_lsqf"></a> <!-- http://nco.sf.net/nco.html#ncap_lsqf --><hr size="6">
-<a name="GSL-least_002dsquares-fitting"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#GSL-interpolation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#GSL-statistics" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="GSL-least_002dsquares-fitting-1"></a>
-<h3 class="subsection">4.1.21 GSL least-squares fitting</h3>
-<p>Least Squares fitting is a method of calculating a straight line through a set of experimental data points in the XY plane. The data maybe weighted or unweighted. For more information please refer to the <acronym>GSL</acronym> manual.
-</p>
-<p>These <acronym>GSL</acronym> functions fall into three categories:<br>
-<strong>A)</strong> Fitting data to Y=c0+c1*X<br>
-<strong>B)</strong> Fitting data (through the origin) Y=c1*X<br>
-<strong>C)</strong> Multi-parameter fitting (not yet implemented)<br> 
-</p>
-<p><strong>Section A</strong> <br> <br>
-<code>status=<strong>gsl_fit_linear</strong> (data_x,stride_x,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&sumsq) </code>
-</p>
-<p><strong>Input variables</strong>: data_x, stride_x, data_y, stride_y, n <br> 
-From the above variables an X and Y vector both of length ’n’ are derived. 
-If data_x or data_y is less than type double then it is converted to type <code>double</code>. 
-It is up to you to do bounds checking on the input data. 
-For example if stride_x=3 and n=8 then the size of data_x must be at least 24
-</p>
-<p><strong>Output variables</strong>: c0, c1, cov00, cov01, cov11,sumsq <br> 
-The ’&’ prefix indicates that these are call-by-reference variables.
-If any of the output variables don’t exist prior to the call then they are created on the fly as scalar variables of type <code>double</code>. If they already exist then their existing value is overwritten. If the function call is successful then <code>status=0</code>. 
-</p>
-<p><code>status= <strong>gsl_fit_wlinear</strong>(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&chisq) </code>
-</p>
-<p>Similar to the above call except it creates an additional weighting vector from the variables data_w, stride_w, n  
-</p>
-
-<p><code> data_y_out=<strong>gsl_fit_linear_est</strong>(data_x,c0,c1,cov00,cov01,cov11) </code>
-</p>
-<p>This function calculates y values along the line Y=c0+c1*X <br> <br>
-</p>
-
-
-<p><strong>Section B</strong> <br> <br>
-<code>status=<strong>gsl_fit_mul</strong>(data_x,stride_x,data_y,stride_y,n,&c1,&cov11,&sumsq) </code>
-</p>
-<p><strong>Input variables</strong>: data_x, stride_x, data_y, stride_y, n <br> 
-From the above variables an X and Y vector both of length ’n’ are derived. 
-If data_x or data_y is less than type <code>double</code> then it is converted to type <code>double</code>. <br>
-</p>
-<p><strong>Output variables</strong>: c1,cov11,sumsq <br> 
-</p>
-
-<p><code>status= <strong>gsl_fit_wmul</strong>(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&c1,&cov11,&sumsq) </code>
-</p>
-<p>Similar to the above call except it creates an additional weighting vector from the variables data_w, stride_w, n  
-</p>
-
-<p><code> data_y_out=<strong>gsl_fit_mul_est</strong>(data_x,c0,c1,cov11) </code>
-</p>
-<p>This function calculates y values along the line Y=c1*X <br> <br>
-</p>
-<p>The below example shows <strong>gsl_fit_linear()</strong> in action
-</p>
-<table><tr><td> </td><td><pre class="example">defdim("d1",10);
-xin[d1]={1,2,3,4,5,6,7,8,9,10.0};
-yin[d1]={3.1,6.2,9.1,12.2,15.1,18.2,21.3,24.0,27.0,30.0};
-gsl_fit_linear(xin,1,yin,1,$d1.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
-print(c0);  // 0.2
-print(c1);  // 2.98545454545
-
-
-defdim("e1",4);
-xout[e1]={1.0,3.0,4.0,11};
-yout[e1]=0.0;
-
-yout=gsl_fit_linear_est(xout, c0,c1, cov00,cov01, cov11, sumsq);
-
-print(yout);  // 3.18545454545 ,9.15636363636, ,12.1418181818 ,33.04
-</pre></td></tr></table>
-<br> <br>
-
-
-
-<a name="ncap_stat"></a> <!-- http://nco.sf.net/nco.html#ncap_stat -->
-<hr size="6">
-<a name="GSL-statistics"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#GSL-least_002dsquares-fitting" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#GSL-random-number-generation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="GSL-statistics-1"></a>
-<h3 class="subsection">4.1.22 GSL statistics</h3>
-
-<p>Wrappers for most of the <acronym>GSL</acronym> Statistical functions have been implemented. The <acronym>GSL</acronym> function names include a type specifier (except for type double functions). To obtain the equivalent <acronym>NCO</acronym> name simply remove the type specifier; then depending on the data type the appropriate <acronym>GSL</acronym> function  is called. The weighed statistical functions e.g <code> gsl_stats_wvariance()</code> are only defined in <acronym>GSL</acrony [...]
-</p>
-<p><acronym>GSL</acronym> Functions
-</p><table><tr><td> </td><td><pre class="example">short gsl_stats_max (short data[], size_t stride, size_t n);
-double gsl_stats_int_mean (int data[], size_t stride, size_t n);
-double gsl_stats_short_sd_with_fixed_mean (short data[], size_t stride, size_t n, double mean);
-double gsl_stats_wmean (double w[], size_t wstride, double data[], size_t stride, size_t n);
-double gsl_stats_quantile_from_sorted_data (double sorted_data[], size_t stride, size_t n, double f) ;
-</pre></td></tr></table>
-
-
-<p>Equivalent ncap2 wrapper functions
-</p><table><tr><td> </td><td><pre class="example">short gsl_stats_max (var_data, data_stride, n);
-double gsl_stats_mean (var_data, data_stride, n);
-double gsl_stats_sd_with_fixed_mean (var_data, data_stride, n, var_mean);
-double gsl_stats_wmean (var_weight, weight_stride, var_data, data_stride, n, var_mean);
-double gsl_stats_quantile_from_sorted_data (var_sorted_data, data_stride, n, var_f) ;
-</pre></td></tr></table>
-
-<p><acronym>GSL</acronym> has no notion of missing values or dimensionality beyond one. If your data has missing values which you want ignored in the calculations then use the <code>ncap2</code> built in aggregate functions( <a href="#Methods-and-functions">Methods and functions</a> ). The <acronym>GSL</acronym> functions operate on a vector of values created from the var_data/stride/n arguments. The ncap wrappers check that there is no bounding error with regard to the size of the data  [...]
-</p>
-<p>Some examples
-</p>
-<table><tr><td> </td><td><pre class="example">a1[time]={1,2,3,4,5,6,7,8,9,10 };
-
-a1_avg=gsl_stats_mean(a1,1,10);
-print(a1_avg); // 5.5
-
-a1_var=gsl_stats_variance(a1,4,3);
-print(a1_var); // 16.0
-
-// bounding error, vector attempts to access element a1(10)
-a1_sd=gsl_stats_sd(a1,5,3); 
-
-</pre></td></tr></table>
-
-<p>For functions with the signature 
-<strong>func_nm(var_data,data_stride,n)</strong>, 
-one may omit the second or third arguments. 
-The default value for <var>stride</var> is <code>1</code>. 
-The default value for <var>n</var> is <code>1+(data.size()-1)/stride</code>.
-</p>
-<table><tr><td> </td><td><pre class="example">// Following statements are equvalent
-n2=gsl_stats_max(a1,1,10)
-n2=gsl_stats_max(a1,1);
-n2=gsl_stats_max(a1);
-
-// Following statements are equvalent
-n3=gsl_stats_median_from_sorted_data(a1,2,5);
-n3=gsl_stats_median_from_sorted_data(a1,2);
-
-// Following statements are NOT equvalent
-n4=gsl_stats_kurtosis(a1,3,2);
-n4=gsl_stats_kurtosis(a1,3); //default n=4
-</pre></td></tr></table>
-
-
-<p>The following example illustrates some of the weighted functions.
-The data are randomly generated. 
-In this case the value of the weight for each datum is either 0.0 or 1.0   
-</p><table><tr><td> </td><td><pre class="example">defdim("r1",2000);
-data[r1]=1.0;
-
-// Fill with random numbers [0.0,10.0)
-data=10.0*gsl_rng_uniform(data);
-
-// Create a weighting variable
-weight=(data>4.0);
-
-wmean=gsl_stats_wmean(weight,1,data,1,$r1.size);
-print(wmean);
-
-wsd=gsl_stats_wsd(weight,1,data,1,$r1.size);
-print(wsd);
-
-// number of values in data that are greater than 4
-weight_size=weight.total();
-print(weight_size);
-
-// print min/max of data 
-dmin=data.gsl_stats_min();
-dmax=data.gsl_stats_max();
-print(dmin);print(dmax);
-
-</pre></td></tr></table>
-
-
-
-<a name="ncap_rng"></a> <!-- http://nco.sf.net/nco.html#ncap_rng -->
-<hr size="6">
-<a name="GSL-random-number-generation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#GSL-statistics" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Examples-ncap2" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="GSL-random-number-generation-1"></a>
-<h3 class="subsection">4.1.23 GSL random number generation</h3>
-<p>The <acronym>GSL</acronym> library has a large number of random number generators. In addition there are a large set of functions for turning uniform random numbers into discrete or continuous probabilty distributions. The random number generator algorithms vary in terms of quality numbers output, speed of execution and maximium number output. For more information see the <acronym>GSL</acronym> documentation. The algorithm and seed are set via environment variables, these are picked u [...]
-</p>
-<p><strong>Setup</strong> <br>  
-The number algorithm is set by the environment variable <code>GSL_RNG_TYPE</code>. If this variable isn’t set then the default rng algorithm is gsl_rng_19937. The seed is set with the environment variable <code>GSL_RNG_SEED</code>. The following wrapper functions in ncap2 provide information about the chosen algorithm. <br> 
-</p>
-<dl compact="compact">
-<dt> <code>gsl_rng_min()</code> </dt>
-<dd><p>the minimium value returned by the rng algorithm.
-</p></dd>
-<dt> <code>gsl_rng_max()</code></dt>
-<dd><p>the maximium value returned by the rng algorithm. 
-</p></dd>
-</dl>
-
-<p><strong>Uniformly Distributed Random Numbers</strong> 
-</p><dl compact="compact">
-<dt> <code>gsl_rng_get(var_in)</code></dt>
-<dd><p>This function returns var_in with integers from the chosen rng algorithm. The min and max values depend uoon the chosen rng algorthm.
-</p></dd>
-<dt> <code>gsl_rng_uniform_int(var_in)</code></dt>
-<dd><p>This function returns var_in with random integers from 0 to n-1. The value n must be less than or equal to the maximium value of the chosen rng algorithm. 
-</p></dd>
-<dt> <code>gsl_rng_uniform(var_in)</code></dt>
-<dd><p>This function returns var_in with double precision numbers in the range [0.0,1). The range includes 0.0 and excludes 1.0.
-</p></dd>
-<dt> <code>gsl_rng_uniform_pos(var_in)</code></dt>
-<dd><p>This function returns var_in with double precision numbers in the range (0.0,1), excluding both 0.0 and 1.0.
-</p></dd>
-</dl>
-
-<p>Below are examples of <code>gsl_rng_get()</code> and <code>gsl_rng_uniform_int()</code> in action.
-</p>
-<table><tr><td> </td><td><pre class="example">export GSL_RNG_TYPE=ranlux
-export GSL_RNG_SEED=10
-ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc 
-// 10 random numbers from the range 0 - 16777215
-// a2=9056646, 12776696, 1011656, 13354708, 5139066, 1388751, 11163902, 7730127, 15531355, 10387694 ;
-
-ncap2 -v -O -s 'a1[time]=21;a2=gsl_rng_uniform_int(a1).sort();' in.nc foo.nc
-// 10 random numbers from the range 0 - 20
-a2 = 1, 1, 6, 9, 11, 13, 13, 15, 16, 19 ;
-
-</pre></td></tr></table>
-
-<p>The following example produces an <code>ncap2</code> runtime error. This is because the chose rng algorithm has a maximium value greater than <code> NC_MAX_INT=2147483647 </code>; the wrapper functions to <code>gsl_rng_get()</code> and <code>gsl_rng_uniform_int()</code> return variable of type <code>NC_INT</code>. Please be aware of this when using random number distribution functions functions from the <acronym>GSL</acronym> library which return <code>unsigned int</code>. Examples of [...]
-</p>
-<table><tr><td> </td><td><pre class="example">export GSL_RNG_TYPE=mt19937
-ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc 
-</pre></td></tr></table>
-
-<p>To find the maximium value of the chosen rng algorithm use the following code snippet.
-</p><table><tr><td> </td><td><pre class="example">ncap2 -v -O -s 'rng_max=gsl_rng_max();print(rng_max)' in.nc foo.nc
-</pre></td></tr></table>
-
-<p><strong>Random Number Distributions</strong> <br>
-The <acronym>GSL</acronym> library has a rich set of random number disribution functions. The library also provides cumulative distribution functions and inverse cumulative distribution functions sometimes referred to a quantile functions. To see whats available on your build use the shell command <code>ncap2 -f|grep -e _ran -e _cdf</code>.
-</p>
-<p>The following examples all return variables of type <code>NC_INT</code> <br>
-</p><table><tr><td> </td><td><pre class="example">defdim("out",15);
-a1[$out]=0.5;
-a2=gsl_ran_binomial(a1,30).sort();
-//a2 = 10, 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 17, 22 ;
-a3=gsl_ran_geometric(a2).sort();
-//a2 = 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4, 5 ;
-a4=gsl_ran_pascal(a2,50);
-//a5 = 37, 40, 40, 42, 43, 45, 46, 49, 52, 58, 60, 62, 62, 65, 67 ;
-</pre></td></tr></table>
-
-<p>The following all return variables of type <code>NC_DOUBLE</code>;
-</p><table><tr><td> </td><td><pre class="example">defdim("b1",1000);
-b1[$b1]=0.8;
-b2=gsl_ran_exponential(b1);
-b2_avg=b2.avg();
-print(b2_avg);
-// b2_avg = 0.756047976787
-
-b3=gsl_ran_gaussian(b1);
-b3_avg=b3.avg();
-b3_rms=b3.rms();
-print(b3_avg);
-// b3_avg = -0.00903446534258;
-print(b3_rms);
-// b3_rms = 0.81162979889;
-
-b4[$b1]=10.0;
-b5[$b1]=20.0;
-b6=gsl_ran_flat(b4,b5);
-b6_avg=b6.avg();
-print(b6_avg);
-// b6_avg=15.0588129413
-</pre></td></tr></table>
-
-<a name="ncap_emp"></a> <!-- http://nco.sf.net/nco.html#ncap_emp --><hr size="6">
-<a name="Examples-ncap2"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#GSL-random-number-generation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Intrinsic-mathematical-methods" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Examples-ncap2-1"></a>
-<h3 class="subsection">4.1.24 Examples ncap2</h3>
-
-<p>See the ‘<tt>ncap.in</tt>’ and ‘<tt>ncap2.in</tt>’ scripts released with <acronym>NCO</acronym> 
-for more complete demonstrations of <code>ncap2</code> functionality
-(script available on-line at <a href="http://nco.sf.net/ncap2.in">http://nco.sf.net/ncap2.in</a>).
-</p>
-<p>Define new attribute <var>new</var> for existing variable <var>one</var>
-as twice the existing attribute <var>double_att</var> of variable
-<var>att_var</var>: 
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'one at new=2*att_var at double_att' in.nc out.nc
-</pre></td></tr></table>
-
-<p>Average variables of mixed types (result is of type <code>double</code>):
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'average=(var_float+var_double+var_int)/3' in.nc out.nc 
-</pre></td></tr></table>
-
-<p>Multiple commands may be given to <code>ncap2</code> in three ways.
-First, the commands may be placed in a script which is executed, e.g.,
-‘<tt>tst.nco</tt>’. 
-Second, the commands may be individually specified with multiple
-‘<samp>-s</samp>’ arguments to the same <code>ncap2</code> invocation.
-Third, the commands may be chained together into a single ‘<samp>-s</samp>’
-argument to <code>ncap2</code>.
-Assuming the file ‘<tt>tst.nco</tt>’ contains the commands
-<code>a=3;b=4;c=sqrt(a^2+b^2);</code>, then the following <code>ncap2</code>
-invocations produce identical results:
-</p><table><tr><td> </td><td><pre class="example">ncap2 -v -S tst.nco in.nc out.nc
-ncap2 -v -s 'a=3' -s 'b=4' -s 'c=sqrt(a^2+b^2)' in.nc out.nc
-ncap2 -v -s 'a=3;b=4;c=sqrt(a^2+b^2)' in.nc out.nc
-</pre></td></tr></table>
-<p>The second and third examples show that <code>ncap2</code> does not require
-that a trailing semi-colon ‘<samp>;</samp>’ be placed at the end of a ‘<samp>-s</samp>’
-argument, although a trailing semi-colon ‘<samp>;</samp>’ is always allowed.
-However, semi-colons are required to separate individual assignment
-statements chained together as a single ‘<samp>-s</samp>’ argument. 
-</p>
-<a name="xmp_grw"></a> <!-- http://nco.sf.net/nco.html#xmp_grw --><a name="index-growing-dimensions"></a>
-<a name="index-dimensions_002c-growing"></a>
-<p><code>ncap2</code> may be used to “grow” dimensions, i.e., to increase
-dimension sizes without altering existing data.
-Say ‘<tt>in.nc</tt>’ has <code>ORO(lat,lon)</code> and the user wishes a new
-file with <code>new_ORO(new_lat,new_lon)</code> that contains zeros in the
-undefined portions of the new grid.
-</p><table><tr><td> </td><td><pre class="example">defdim("new_lat",$lat.size+1); // Define new dimension sizes
-defdim("new_lon",$lon.size+1);
-new_ORO[$new_lat,$new_lon]=0.0f; // Initialize to zero
-new_ORO(0:$lat.size-1,0:$lon.size-1)=ORO; // Fill valid data
-</pre></td></tr></table>
-<p>The commands to define new coordinate variables <code>new_lat</code>
-and <code>new_lon</code> in the output file follow a similar pattern.
-One would might store these commands in a script ‘<tt>grow.nco</tt>’
-and then execute the script with
-</p><table><tr><td> </td><td><pre class="example">ncap2 -v -S grow.nco in.nc out.nc
-</pre></td></tr></table>
-
-<a name="flg"></a> <!-- http://nco.sf.net/nco.html#flg --><a name="index-flags"></a>
-<p>Imagine you wish to create a binary flag based on the value of 
-an array.
-The flag should have value 1.0 where the array exceeds 1.0,
-and value 0.0 elsewhere.
-This example creates the binary flag <code>ORO_flg</code> in ‘<tt>out.nc</tt>’
-from the continuous array named <code>ORO</code> in ‘<tt>in.nc</tt>’.
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'ORO_flg=(ORO > 1.0)' in.nc out.nc
-</pre></td></tr></table>
-<p>Suppose your task is to change all values of <code>ORO</code> which 
-equal 2.0 to the new value 3.0:
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'ORO_msk=(ORO==2.0);ORO=ORO_msk*3.0+!ORO_msk*ORO' in.nc out.nc
-</pre></td></tr></table>
-<a name="index-mask-1"></a>
-<p>This creates and uses <code>ORO_msk</code> to mask the subsequent arithmetic
-operation.
-Values of <code>ORO</code> are only changed where <code>ORO_msk</code> is true,
-i.e., where <code>ORO</code> equals 2.0 <br>
-Using the <code>where</code> statement the above code simplifies to :
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'where(ORO==2.0) ORO=3.0;' in.nc foo.nc
-</pre></td></tr></table>
-
-<a name="cvr"></a> <!-- http://nco.sf.net/nco.html#cvr --><p>This example uses <code>ncap2</code> to compute the covariance of two
-variables. 
-Let the variables <var>u</var> and <var>v</var> be the horizontal 
-wind components. 
-<a name="index-covariance"></a>
-The <em>covariance</em> of <var>u</var> and <var>v</var> is defined
-as the time mean product of the deviations of <var>u</var> and
-<var>v</var> from their respective time means.
-Symbolically, the covariance 
-[<var>u’v’</var>] =
-[<var>uv</var>]-[<var>u</var>][<var>v</var>] where
-[x] denotes the time-average of <var>x</var> and <var>x’</var>
-denotes the deviation from the time-mean. 
-The covariance tells us how much of the correlation of two signals
-arises from the signal fluctuations versus the mean signals.
-<a name="index-eddy-covariance"></a>
-Sometimes this is called the <em>eddy covariance</em>.
-We will store the covariance in the variable <code>uprmvprm</code>.
-</p><table><tr><td> </td><td><pre class="example">ncwa -O -a time -v u,v in.nc foo.nc # Compute time mean of u,v
-ncrename -O -v u,uavg -v v,vavg foo.nc # Rename to avoid conflict
-ncks -A -v uavg,vavg foo.nc in.nc # Place time means with originals
-ncap2 -O -s 'uprmvprm=u*v-uavg*vavg' in.nc in.nc # Covariance
-ncra -O -v uprmvprm in.nc foo.nc # Time-mean covariance
-</pre></td></tr></table>
-<p>The mathematically inclined will note that the same covariance would be
-obtained by replacing the step involving <code>ncap2</code> with
-</p><table><tr><td> </td><td><pre class="example">ncap2 -O -s 'uprmvprm=(u-uavg)*(v-vavg)' foo.nc foo.nc # Covariance
-</pre></td></tr></table>
-
-<p>As of <acronym>NCO</acronym> version 3.1.8 (December, 2006), <code>ncap2</code>
-can compute averages, and thus covariances, by itself:
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'uavg=u.avg($time);vavg=v.avg($time);uprmvprm=u*v-uavg*vavg' \
-      -s 'uprmvrpmavg=uprmvprm.avg($time)' in.nc foo.nc
-</pre></td></tr></table>
-<p>We have not seen a simpler method to script and execute powerful
-arithmetic than <code>ncap2</code>.
-</p>
-<a name="index-globbing-3"></a>
-<a name="index-shell-3"></a>
-<a name="index-quotes-1"></a>
-<a name="index-extended-regular-expressions-2"></a>
-<a name="index-regular-expressions-3"></a>
-<p><code>ncap2</code> utilizes many meta-characters 
-(e.g., ‘<samp>$</samp>’, ‘<samp>?</samp>’, ‘<samp>;</samp>’, ‘<samp>()</samp>’, ‘<samp>[]</samp>’)
-that can confuse the command-line shell if not quoted properly.
-The issues are the same as those which arise in utilizing extended
-regular expressions to subset variables (see section <a href="#Subsetting-Variables">Subsetting Variables</a>).
-The example above will fail with no quotes and with double quotes.
-This is because shell globbing tries to <em>interpolate</em> the value of
-<code>$time</code> from the shell environment unless it is quoted:
-</p><table><tr><td> </td><td><pre class="example">ncap2 -s 'uavg=u.avg($time)'  in.nc foo.nc # Correct (recommended)
-ncap2 -s  uavg=u.avg('$time') in.nc foo.nc # Correct (and dangerous)
-ncap2 -s  uavg=u.avg($time)   in.nc foo.nc # Fails ($time = '')
-ncap2 -s "uavg=u.avg($time)"  in.nc foo.nc # Fails ($time = '')
-</pre></td></tr></table>
-<p>Without the single quotes, the shell replaces <code>$time</code> with an
-empty string.
-The command <code>ncap2</code> receives from the shell is
-<code>uavg=u.avg()</code>. 
-This causes <code>ncap2</code> to average over all dimensions rather than
-just the <var>time</var> dimension, and unintended consequence.
-</p>
-<p>We recommend using single quotes to protect <code>ncap2</code>
-command-line scripts from the shell, even when such protection is not
-strictly necessary. 
-Expert users may violate this rule to exploit the ability to use shell
-variables in <code>ncap2</code> command-line scripts 
-(see section <a href="#CCSM-Example">CCSM Example</a>). 
-In such cases it may be necessary to use the shell backslash character
-‘<samp>\</samp>’ to protect the <code>ncap2</code> meta-character.
-</p>
-<a name="index-appending-data"></a>
-<a name="index-time_002daveraging"></a>
-<a name="index-ncks-2"></a>
-<a name="index-ncwa-3"></a>
-<a name="index-ncra-2"></a>
-<a name="index-degenerate-dimension-1"></a>
-<a name="index-_002db"></a>
-<p>Whether a degenerate record dimension is desirable or undesirable
-depends on the application.
-Often a degenerate <var>time</var> dimension is useful, e.g., for
-concatentating, but it may cause problems with arithmetic.
-Such is the case in the above example, where the first step employs
-<code>ncwa</code> rather than <code>ncra</code> for the time-averaging.
-Of course the numerical results are the same with both operators.
-The difference is that, unless ‘<samp>-b</samp>’ is specified, <code>ncwa</code>
-writes no <var>time</var> dimension to the output file, while <code>ncra</code>
-defaults to keeping <var>time</var> as a degenerate (size 1) dimension. 
-Appending <code>u</code> and <code>v</code> to the output file would cause
-<code>ncks</code> to try to expand the degenerate time axis of <code>uavg</code>
-and <code>vavg</code> to the size of the non-degenerate <var>time</var> dimension
-in the input file.
-Thus the append (<code>ncks -A</code>) command would be undefined (and
-should fail) in this case. 
-<a name="index-_002dC-2"></a>
-Equally important is the ‘<samp>-C</samp>’ argument 
-(see section <a href="#Subsetting-Coordinate-Variables">Subsetting Coordinate Variables</a>) to <code>ncwa</code> to prevent
-any scalar <var>time</var> variable from being written to the output file.  
-Knowing when to use <code>ncwa -a time</code> rather than the default
-<code>ncra</code> for time-averaging takes, well, time.
-</p>
-<a name="mth"></a> <!-- http://nco.sf.net/nco.html#mth --><hr size="6">
-<a name="Intrinsic-mathematical-methods"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Examples-ncap2" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Operators-precedence-and-associativity" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Intrinsic-mathematical-methods-1"></a>
-<h3 class="subsection">4.1.25 Intrinsic mathematical methods</h3>
-<p><code>ncap2</code> supports the standard mathematical functions supplied with
-most operating systems.
-<a name="index-addition"></a>
-<a name="index-subtraction"></a>
-<a name="index-multiplication"></a>
-<a name="index-division"></a>
-<a name="index-exponentiation"></a>
-<a name="index-power"></a>
-<a name="index-modulus"></a>
-<a name="index-_002b-_0028addition_0029"></a>
-<a name="index-_002d-_0028subtraction_0029"></a>
-<a name="index-_002a-_0028multiplication_0029"></a>
-<a name="index-_002f-_0028division_0029"></a>
-<a name="index-_005e-_0028power_0029"></a>
-<a name="index-_0025-_0028modulus_0029"></a>
-Standard calculator notation is used for addition <kbd>+</kbd>, subtraction
-<kbd>-</kbd>, multiplication <kbd>*</kbd>, division <kbd>/</kbd>, exponentiation
-<kbd>^</kbd>, and modulus <kbd>%</kbd>.
-The available elementary mathematical functions are: 
-<a name="index-abs"></a>
-<a name="index-acosh"></a>
-<a name="index-acos"></a>
-<a name="index-asinh"></a>
-<a name="index-asin"></a>
-<a name="index-atanh"></a>
-<a name="index-atan"></a>
-<a name="index-ceil"></a>
-<a name="index-cosh"></a>
-<a name="index-cos"></a>
-<a name="index-erfc"></a>
-<a name="index-erf"></a>
-<a name="index-exp"></a>
-<a name="index-floor-1"></a>
-<a name="index-gamma-1"></a>
-<a name="index-ln"></a>
-<a name="index-log10"></a>
-<a name="index-log"></a>
-<a name="index-nearbyint"></a>
-<a name="index-pow"></a>
-<a name="index-rint"></a>
-<a name="index-round"></a>
-<a name="index-sinh"></a>
-<a name="index-sin"></a>
-<a name="index-sqrt-1"></a>
-<a name="index-tanh"></a>
-<a name="index-tan"></a>
-<a name="index-trunc"></a>
-<a name="index-mathematical-functions"></a>
-<a name="index-nearest-integer-function-_0028inexact_0029"></a>
-<a name="index-nearest-integer-function-_0028exact_0029"></a>
-<a name="index-rounding-functions"></a>
-<a name="index-truncation-function"></a>
-<a name="index-absolute-value"></a>
-<a name="index-arccosine-function"></a>
-<a name="index-arcsine-function"></a>
-<a name="index-arctangent-function"></a>
-<a name="index-ceiling-function"></a>
-<a name="index-complementary-error-function"></a>
-<a name="index-cosine-function"></a>
-<a name="index-error-function"></a>
-<a name="index-exponentiation-function"></a>
-<a name="index-floor-function"></a>
-<a name="index-gamma-function-1"></a>
-<a name="index-hyperbolic-arccosine-function"></a>
-<a name="index-hyperbolic-arcsine-function"></a>
-<a name="index-hyperbolic-arctangent-function"></a>
-<a name="index-hyperbolic-cosine-function"></a>
-<a name="index-hyperbolic-sine-function"></a>
-<a name="index-hyperbolic-tangent"></a>
-<a name="index-logarithm_002c-base-10"></a>
-<a name="index-logarithm_002c-natural"></a>
-<a name="index-power-function"></a>
-<a name="index-sine-function"></a>
-<a name="index-square-root-function"></a>
-</p><dl compact="compact">
-<dt> <code>abs(x)</code></dt>
-<dd><p><em>Absolute value</em>
-Example: 
-</p></dd>
-<dt> <code>acos(x)</code></dt>
-<dd><p><em>Arc-cosine</em>
-Arc-cosine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>acosh(x)</code></dt>
-<dd><p><em>Hyperbolic arc-cosine</em>
-Hyperbolic arc-cosine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>asin(x)</code></dt>
-<dd><p><em>Arc-sine</em>
-Arc-sine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>asinh(x)</code></dt>
-<dd><p><em>Hyperbolic arc-sine</em>
-Hyperbolic arc-sine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>atan(x)</code></dt>
-<dd><p><em>Arc-tangent</em>
-Arc-tangent of <var>x</var> where <var>x</var> is specified in radians between 
-Example: 
-</p>
-</dd>
-<dt> <code>atan2(y,x)</code></dt>
-<dd><p><em>Arc-tangent2</em>
-Arc-tangent of <var>y/x</var> 
-</p>
-
-</dd>
-<dt> <code>atanh(x)</code></dt>
-<dd><p><em>Hyperbolic arc-tangent</em>
-Hyperbolic arc-tangent of <var>x</var> where <var>x</var> is specified in radians between 
-Example:
-</p></dd>
-<dt> <code>ceil(x)</code></dt>
-<dd><p><em>Ceil</em>
-Ceiling of <var>x</var>. Smallest integral value not less than argument.
-Example: 
-</p></dd>
-<dt> <code>cos(x)</code></dt>
-<dd><p><em>Cosine</em>
-Cosine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>cosh(x)</code></dt>
-<dd><p><em>Hyperbolic cosine</em>
-Hyperbolic cosine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>erf(x)</code></dt>
-<dd><p><em>Error function</em>
-Error function of <var>x</var> where <var>x</var> is specified between
-Example: 
-</p></dd>
-<dt> <code>erfc(x)</code></dt>
-<dd><p><em>Complementary error function</em>
-Complementary error function of <var>x</var> where <var>x</var> is specified between
-Example: 
-</p></dd>
-<dt> <code>exp(x)</code></dt>
-<dd><p><em>Exponential</em>
-Exponential of <var>x</var>,
-Example: 
-</p></dd>
-<dt> <code>floor(x)</code></dt>
-<dd><p><em>Floor</em>
-Floor of <var>x</var>. Largest integral value not greater than argument.
-Example: 
-</p></dd>
-<dt> <code>gamma(x)</code></dt>
-<dd><p><em>Gamma function</em>
-Gamma function of <var>x</var>,
-The well-known and loved continuous factorial function.
-Example: 
-</p></dd>
-<dt> <code>gamma_inc_P(x)</code></dt>
-<dd><p><em>Incomplete Gamma function</em>
-Incomplete Gamma function of parameter <var>a</var> and variable <var>x</var>,
-One of the four incomplete gamma functions.
-Example: 
-</p></dd>
-<dt> <code>ln(x)</code></dt>
-<dd><p><em>Natural Logarithm</em>
-Natural logarithm of <var>x</var>,
-Example: 
-</p></dd>
-<dt> <code>log(x)</code></dt>
-<dd><p><em>Natural Logarithm</em>
-Exact synonym for <code>ln(x)</code>.
-</p></dd>
-<dt> <code>log10(x)</code></dt>
-<dd><p><em>Base 10 Logarithm</em>
-Base 10 logarithm of <var>x</var>, 
-Example: 
-</p></dd>
-<dt> <code>nearbyint(x)</code></dt>
-<dd><p><em>Round inexactly</em>
-Nearest integer to <var>x</var> is returned in floating point format.
-<a name="index-inexact-conversion"></a>
-No exceptions are raised for <em>inexact conversions</em>.
-Example: 
-</p></dd>
-<dt> <code>pow(x,y)</code></dt>
-<dd><p><em>Power</em>
-<a name="index-promotion-1"></a>
-<a name="index-automatic-type-conversion-1"></a>
-Value of <var>x</var> is raised to the power of <var>y</var>.
-Exceptions are raised for <em>domain errors</em>.
-Due to type-limitations in the C language <code>pow</code> function,
-integer arguments are promoted (see section <a href="#Type-Conversion">Type Conversion</a>) to type
-<code>NC_FLOAT</code> before evaluation. 
-Example: 
-</p></dd>
-<dt> <code>rint(x)</code></dt>
-<dd><p><em>Round exactly</em>
-Nearest integer to <var>x</var> is returned in floating point format.
-Exceptions are raised for <em>inexact conversions</em>.
-Example: 
-</p></dd>
-<dt> <code>round(x)</code></dt>
-<dd><p><em>Round</em>
-Nearest integer to <var>x</var> is returned in floating point format.
-Round halfway cases away from zero, regardless of current IEEE rounding direction. 
-Example: 
-</p></dd>
-<dt> <code>sin(x)</code></dt>
-<dd><p><em>Sine</em>
-Sine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>sinh(x)</code></dt>
-<dd><p><em>Hyperbolic sine</em>
-Hyperbolic sine of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>sqrt(x)</code></dt>
-<dd><p><em>Square Root</em>
-Square Root of <var>x</var>,
-Example: 
-</p></dd>
-<dt> <code>tan(x)</code></dt>
-<dd><p><em>Tangent</em>
-Tangent of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>tanh(x)</code></dt>
-<dd><p><em>Hyperbolic tangent</em>
-Hyperbolic tangent of <var>x</var> where <var>x</var> is specified in radians.
-Example: 
-</p></dd>
-<dt> <code>trunc(x)</code></dt>
-<dd><p><em>Truncate</em>
-Nearest integer to <var>x</var> is returned in floating point format.
-Round halfway cases toward zero, regardless of current IEEE rounding direction. 
-Example: 
-</p></dd>
-</dl>
-<p>The complete list of mathematical functions supported is
-platform-specific.  
-Functions mandated by ANSI C are <em>guaranteed</em> to be present
-and are indicated with an asterisk 
-<a name="index-ANSI-C"></a>
-<a name="index-float"></a>
-<a name="index-precision"></a>
-<a name="index-quadruple-precision"></a>
-<a name="index-single-precision"></a>
-<a name="index-double-precision"></a>
-<a name="index-long-double"></a>
-<a name="index-NC_005fDOUBLE"></a>
-<a name="DOCF34" href="#FOOT34">(34)</a>.
-and are indicated with an asterisk. 
-<a name="index-_002df"></a>
-<a name="index-_002d_002dprn_005ffnc_005ftbl"></a>
-<a name="index-_002d_002dfnc_005ftbl"></a>
-Use the ‘<samp>-f</samp>’ (or ‘<samp>fnc_tbl</samp>’ or ‘<samp>prn_fnc_tbl</samp>’) switch
-to print a complete list of functions supported on your platform.
-<a name="index-Linux"></a>
-<a name="DOCF35" href="#FOOT35">(35)</a>
-</p>
-<a name="xmp_ncap"></a> <!-- http://nco.sf.net/nco.html#xmp_ncap -->
-<a name="xmp_ncap2"></a> <!-- http://nco.sf.net/nco.html#xmp_ncap2 -->
-
-<a name="ncap_opts"></a> <!-- http://nco.sf.net/nco.html#ncap_opts --><hr size="6">
-<a name="Operators-precedence-and-associativity"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Intrinsic-mathematical-methods" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ID-Quoting" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Operators-precedence-and-associativity-1"></a>
-<h3 class="subsection">4.1.26 Operators precedence and associativity</h3>
-<p>This page lists the <code>ncap</code> operators in order of precedence (highest to lowest). Their associativity indicates in what order operators of equal precedence in an expression are applied.
-</p>
-<table>
-<thead><tr><th width="18%">Operator</th><th width="62%">Description</th><th width="20%">Associativity</th></tr></thead>
-<tr><td width="18%"><code>++ --</code></td><td width="62%">Postfix Increment/Decrement</td><td width="20%">Right to Left</td></tr>
-<tr><td width="18%"><code>()</code></td><td width="62%">Parentheses (function call)</td></tr>
-<tr><td width="18%"><code>.</code></td><td width="62%">Method call</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>++ --</code></td><td width="62%">Prefix Increment/Decrement</td><td width="20%">Right to Left</td></tr>
-<tr><td width="18%"><code>+ -</code></td><td width="62%">Unary  Plus/Minus</td></tr>
-<tr><td width="18%"><code>!</code></td><td width="62%">Logical Not</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>^</code></td><td width="62%">Power of Operator</td><td width="20%">Right to Left</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>* / %</code></td><td width="62%">Multiply/Divide/Modulus</td><td width="20%">Left To Right</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>+ -</code></td><td width="62%">Addition/Subtraction</td><td width="20%">Left To Right</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>>> <<</code></td><td width="62%">Fortran style array clipping</td><td width="20%">Left to Right</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>< <=</code></td><td width="62%">Less than/Less than or equal to</td><td width="20%">Left to Right</td></tr>
-<tr><td width="18%"><code>> >=</code></td><td width="62%">Greater than/Greater than or equal to</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>== !=</code></td><td width="62%">Equal to/Not equal to</td><td width="20%">Left to Right</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>&&</code></td><td width="62%">Logical AND</td><td width="20%">Left to Right</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>||</code></td><td width="62%">Logical OR</td><td width="20%">Left to Right</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>?:</code></td><td width="62%">Ternary Operator</td><td width="20%">Right to Left</td></tr>
-<tr><td width="18%"></td></tr>
-<tr><td width="18%"><code>=</code></td><td width="62%">Assignment</td><td width="20%">Right to Left</td></tr>
-<tr><td width="18%"><code>+= -=</code></td><td width="62%">Addition/subtraction assignment</td></tr>
-<tr><td width="18%"><code>*= /=</code></td><td width="62%">Multiplication/division assignment</td></tr>
-</table>
-
-
-
-<a name="ncap_nmc"></a> <!-- http://nco.sf.net/nco.html#ncap_nmc --><hr size="6">
-<a name="ID-Quoting"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Operators-precedence-and-associativity" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncatted-netCDF-Attribute-Editor" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncap2-netCDF-Arithmetic-Processor" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ID-Quoting-1"></a>
-<h3 class="subsection">4.1.27 ID Quoting</h3>
-<a name="index-ID-Quoting"></a>
-<p>In this section when I refer to a name I mean a variable name, attribute name or a dimension name
-The allowed characters in a valid netCDF name vary from release to release. (See end section). If you want to use metacharacters in a name or use a method name as a variable name then the name has to be quoted wherever it occurs. 
-</p>
-<p>The default <acronym>NCO</acronym> name is specified by the regular expressions:
-</p>
-<table><tr><td> </td><td><pre class="example">DGT:     ('0'..'9');
-LPH:     ( 'a'..'z' | 'A'..'Z' | '_' );
-name:    (LPH)(LPH|DGT)+
-</pre></td></tr></table>
-
-<p>The first character of a valid name must be alphabetic or the underscore. Any subsequent characters must be alphanumeric or underscore. ( e.g a1,_23, hell_is_666 )
-</p>
-<p>The valid characters in a quoted name are specified by the regular expressions:
-</p><table><tr><td> </td><td><pre class="example">LPHDGT:  ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9');
-name:    (LPHDGT|'-'|'+'|'.'|'('|')'|':' )+  ;      
-</pre></td></tr></table>
-
-<p>Quote a variable: <br>
-’avg’ , ’10_+10’,’set_miss’ ’+-90field’ , ’–test’=10.0d<br> <br> 
-Quote a attribute: <br>
-’three at 10’, ’set_mss at +10’, ’666 at hell’, ’t1 at +units’="kelvin" <br> <br>
-Quote a dimension: <br>
-’$10’, ’$t1–’, ’$–odd’, c1[’$10’,’$t1–’]=23.0d <br> 
-</p>
-<br>
-<p>The following comments are from the netCDF library definitions and
-detail the naming conventions for each release. 
-netcdf-3.5.1 <br>
-netcdf-3.6.0-p1 <br>
-netcdf-3.6.1 <br>
-netcdf-3.6.2 <br>
-</p><table><tr><td> </td><td><pre class="example">/*
- * ( [a-zA-Z]|[0-9]|'_'|'-'|'+'|'.'|'|':'|'@'|'('|')' )+
- * Verify that a name string is valid
- * CDL syntax, eg, all the characters are
- * alphanumeric, '-', '_', '+', or '.'.
- * Also permit ':', '@', '(', or ')' in names for chemists currently making 
- * use of these characters, but don't document until ncgen and ncdump can 
- * also handle these characters in names.
- */
-</pre></td></tr></table>
-
-<p>netcdf-3.6.3 <br>
-netcdf-4.0 Final  2008/08/28 <br>
-</p><table><tr><td> </td><td><pre class="example">/*
- * Verify that a name string is valid syntax.  The allowed name
- * syntax (in RE form) is:
- *
- * ([a-zA-Z_]|{UTF8})([^\x00-\x1F\x7F/]|{UTF8})*
- *
- * where UTF8 represents a multibyte UTF-8 encoding.  Also, no
- * trailing spaces are permitted in names.  This definition
- * must be consistent with the one in ncgen.l.  We do not allow '/'
- * because HDF5 does not permit slashes in names as slash is used as a
- * group separator.  If UTF-8 is supported, then a multi-byte UTF-8
- * character can occur anywhere within an identifier.  We later
- * normalize UTF-8 strings to NFC to facilitate matching and queries.
- */ 
-</pre></td></tr></table>
-
-
-<a name="ncatted"></a> <!-- http://nco.sf.net/nco.html#ncatted --><hr size="6">
-<a name="ncatted-netCDF-Attribute-Editor"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ID-Quoting" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncbo-netCDF-Binary-Operator" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncatted-netCDF-Attribute-Editor-1"></a>
-<h2 class="section">4.2 <code>ncatted</code> netCDF Attribute Editor</h2>
-<a name="index-attributes"></a>
-<a name="index-attribute-names"></a>
-<a name="index-editing-attributes"></a>
-<a name="index-ncatted-4"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncatted [-a <var>att_dsc</var>] [-a …] [-D <var>dbg</var>] [-h] [--hdr_pad <var>nbr</var>]
-[-l <var>path</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-<var>input-file</var> [[<var>output-file</var>]]
-</pre></td></tr></table>
- 
-<p>DESCRIPTION
-</p>
-<p><code>ncatted</code> edits attributes in a netCDF file.  
-If you are editing attributes then you are spending too much time in the
-world of metadata, and <code>ncatted</code> was written to get you back out as
-quickly and painlessly as possible.
-<code>ncatted</code> can <em>append</em>, <em>create</em>, <em>delete</em>,
-<em>modify</em>, and <em>overwrite</em> attributes (all explained below).  
-Furthermore, <code>ncatted</code> allows each editing operation to be applied
-to every variable in a file.
-This saves time when changing attribute conventions throughout a file. 
-Note that <code>ncatted</code> interprets character attributes
-(i.e., attributes of type <code>NC_CHAR</code>) as strings.
-</p>
-<a name="index-history-4"></a>
-<a name="index-_002dh-1"></a>
-<p>Because repeated use of <code>ncatted</code> can considerably increase the size
-of the <code>history</code> global attribute (see section <a href="#History-Attribute">History Attribute</a>), the
-‘<samp>-h</samp>’ switch is provided to override automatically appending the
-command to the <code>history</code> global attribute in the <var>output-file</var>.
-</p>
-<a name="index-missing-values-1"></a>
-<a name="index-data_002c-missing-1"></a>
-<a name="index-_005fFillValue-2"></a>
-<p>When <code>ncatted</code> is used to change the <code>_FillValue</code> attribute,
-it changes the associated missing data self-consistently.
-If the internal floating point representation of a missing value, 
-e.g., 1.0e36, differs between two machines then netCDF files produced 
-on those machines will have incompatible missing values.
-This allows <code>ncatted</code> to change the missing values in files from 
-different machines to a single value so that the files may then be 
-concatenated together, e.g., by <code>ncrcat</code>, without losing any
-information.   
-See section <a href="#Missing-Values">Missing values</a>, for more information.
-</p>
-<p>The key to mastering <code>ncatted</code> is understanding the meaning of
-the structure that describes the attribute modification, <var>att_dsc</var>
-specified by the required option ‘<samp>-a</samp>’ or ‘<samp>--attribute</samp>’. 
-Each <var>att_dsc</var> contains five elements, which makes using
-<code>ncatted</code> somewhat complicated, but powerful.
-The <var>att_dsc</var> argument structure contains five arguments in the
-following order:<br> 
-</p>
-<p><var>att_dsc</var> = <var>att_nm</var>, <var>var_nm</var>, <var>mode</var>, <var>att_type</var>,
-<var>att_val</var><br>
-</p>
-<dl compact="compact">
-<dt> <var>att_nm</var></dt>
-<dd><p>Attribute name. 
-Example: <code>units</code>
-</p></dd>
-<dt> <var>var_nm</var></dt>
-<dd><p>Variable name. 
-<a name="index-extended-regular-expressions-3"></a>
-<a name="index-regular-expressions-4"></a>
-<a name="index-pattern-matching-2"></a>
-<a name="index-wildcards-2"></a>
-Regular expressions (see section <a href="#Subsetting-Variables">Subsetting Variables</a>) are accepted and will 
-select any matching variable names.
-Example: <code>pressure</code>, <code>'^H2O'</code>.
-</p></dd>
-<dt> <var>mode</var></dt>
-<dd><p>Edit mode abbreviation. 
-Example: <code>a</code>. 
-See below for complete listing of valid values of <var>mode</var>.
-</p></dd>
-<dt> <var>att_type</var></dt>
-<dd><p>Attribute type abbreviation. 
-Example: <code>c</code>. 
-See below for complete listing of valid values of <var>att_type</var>.
-</p></dd>
-<dt> <var>att_val</var></dt>
-<dd><p>Attribute value. 
-Example: <code>pascal</code>. 
-</p></dd>
-</dl>
-<p>There should be no empty space between these five consecutive
-arguments. 
-The description of these arguments follows in their order of
-appearance. 
-</p>
-<p>The value of <var>att_nm</var> is the name of the attribute you want to
-edit. 
-This meaning of this should be clear to all users of the
-<code>ncatted</code> operator. 
-If <var>att_nm</var> is omitted (i.e., left blank) and <em>Delete</em> mode is 
-selected, then all attributes associated with the specified variable
-will be deleted. 
-</p>
-<a name="index-global-attributes-4"></a>
-<a name="index-attributes_002c-global-4"></a>
-<p>The value of <var>var_nm</var> is the name of the variable containing the
-attribute (named <var>att_nm</var>) that you want to edit.
-There are three very important and useful exceptions to this rule.
-The value of <var>var_nm</var> can also be used to direct <code>ncatted</code>
-to edit global attributes, or to repeat the editing operation for every 
-variable in a file.
-A value of <var>var_nm</var> of “global” indicates that <var>att_nm</var>
-refers to a global attribute, rather than a particular variable’s
-attribute. 
-This is the method <code>ncatted</code> supports for editing global
-attributes.
-If <var>var_nm</var> is left blank, on the other hand, then <code>ncatted</code> 
-attempts to perform the editing operation on every variable in the file.
-This option may be convenient to use if you decide to change the
-conventions you use for describing the data.
-Finally, as mentioned above, <var>var_nm</var> may be specified as a regular
-expression. 
-</p>
-<a name="mode"></a> <!-- http://nco.sf.net/nco.html#mode -->
-<a name="att_mode"></a> <!-- http://nco.sf.net/nco.html#att_mode --><p>The value of <var>mode</var> is a single character abbreviation (<code>a</code>,
-<code>c</code>, <code>d</code>, <code>m</code>, or <code>o</code>) standing for one of
-five editing modes:<br>
-<a name="index-attributes_002c-appending"></a>
-<a name="index-attributes_002c-creating"></a>
-<a name="index-attributes_002c-deleting"></a>
-<a name="index-attributes_002c-modifying"></a>
-<a name="index-attributes_002c-editing"></a>
-<a name="index-attributes_002c-overwriting"></a>
-</p><dl compact="compact">
-<dt> <code>a</code> </dt>
-<dd><p><em>Append</em>.
-Append value <var>att_val</var> to current <var>var_nm</var> attribute
-<var>att_nm</var> value <var>att_val</var>, if any.  
-If <var>var_nm</var> does not have an attribute <var>att_nm</var>, there is no
-effect.
-</p></dd>
-<dt> <code>c</code></dt>
-<dd><p><em>Create</em>.
-Create variable <var>var_nm</var> attribute <var>att_nm</var> with <var>att_val</var>
-if <var>att_nm</var> does not yet exist.  
-If <var>var_nm</var> already has an attribute <var>att_nm</var>, there is no
-effect. 
-</p></dd>
-<dt> <code>d</code></dt>
-<dd><p><em>Delete</em>.
-Delete current <var>var_nm</var> attribute <var>att_nm</var>.
-If <var>var_nm</var> does not have an attribute <var>att_nm</var>, there is no
-effect. 
-If <var>att_nm</var> is omitted (left blank), then all attributes associated
-with the specified variable are automatically deleted. 
-When <em>Delete</em> mode is selected, the <var>att_type</var> and <var>att_val</var>
-arguments are superfluous and may be left blank.
-</p></dd>
-<dt> <code>m</code></dt>
-<dd><p><em>Modify</em>.
-Change value of current <var>var_nm</var> attribute <var>att_nm</var> to value
-<var>att_val</var>. 
-If <var>var_nm</var> does not have an attribute <var>att_nm</var>, there is no
-effect. 
-</p></dd>
-<dt> <code>o</code></dt>
-<dd><p><em>Overwrite</em>.
-Write attribute <var>att_nm</var> with value <var>att_val</var> to variable
-<var>var_nm</var>, overwriting existing attribute <var>att_nm</var>, if any. 
-This is the default mode.
-</p></dd>
-</dl>
-
-<a name="att_typ"></a> <!-- http://nco.sf.net/nco.html#att_typ --><p>The value of <var>att_type</var> is a single character abbreviation 
-(<code>f</code>, <code>d</code>, <code>l</code>, <code>i</code>, <code>s</code>, <code>c</code>, 
-<code>b</code>, <code>u</code>) or a short string standing for one of the twelve
-primitive netCDF data types:<br>  
-</p><dl compact="compact">
-<dt> <code>f</code></dt>
-<dd><p><em>Float</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_FLOAT</code>. 
-</p></dd>
-<dt> <code>d</code></dt>
-<dd><p><em>Double</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_DOUBLE</code>.
-</p></dd>
-<dt> <code>i, l</code></dt>
-<dd><p><em>Integer</em> or <em>Long</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_INT</code>.
-</p></dd>
-<dt> <code>s</code></dt>
-<dd><p><em>Short</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_SHORT</code>.
-</p></dd>
-<dt> <code>c</code></dt>
-<dd><p><em>Char</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_CHAR</code>.
-</p></dd>
-<dt> <code>b</code></dt>
-<dd><p><em>Byte</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_BYTE</code>.
-</p></dd>
-<dt> <code>ub</code></dt>
-<dd><p><em>Unsigned Byte</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_UBYTE</code>.
-</p></dd>
-<dt> <code>us</code></dt>
-<dd><p><em>Unsigned Short</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_USHORT</code>.
-</p></dd>
-<dt> <code>u, ui, ul</code></dt>
-<dd><p><em>Unsigned Int</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_UINT</code>.
-</p></dd>
-<dt> <code>ll, int64</code></dt>
-<dd><p><em>Int64</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_INT64</code>.
-</p></dd>
-<dt> <code>ull, uint64</code></dt>
-<dd><p><em>Uint64</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_UINT64</code>.
-</p></dd>
-<dt> <code>sng</code></dt>
-<dd><p><em>String</em>.
-Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic
-type <code>NC_STRING</code>.
-</p></dd>
-</dl>
-<p>The specification of <var>att_type</var> is optional (and is ignored) in
-<em>Delete</em> mode. 
-</p>
-<p>The value of <var>att_val</var> is what you want to change attribute
-<var>att_nm</var> to contain.
-The specification of <var>att_val</var> is optional in <em>Delete</em> (and is
-ignored) mode. 
-Attribute values for all types besides <code>NC_CHAR</code> must have an
-attribute length of at least one.
-Thus <var>att_val</var> may be a single value or one-dimensional array of
-elements of type <code>att_type</code>.
-If the <var>att_val</var> is not set or is set to empty space,
-and the <var>att_type</var> is <code>NC_CHAR</code>, e.g., <code>-a units,T,o,c,""</code>
-or <code>-a units,T,o,c,</code>, then the corresponding attribute is set to 
-have zero length.
-When specifying an array of values, it is safest to enclose
-<var>att_val</var> in single or double quotes, e.g., 
-<code>-a levels,T,o,s,"1,2,3,4"</code> or   
-<code>-a levels,T,o,s,'1,2,3,4'</code>.
-The quotes are strictly unnecessary around <var>att_val</var> except 
-when <var>att_val</var> contains characters which would confuse the calling
-shell, such as spaces, commas, and wildcard characters. 
-</p>
-<a name="index-Perl-2"></a>
-<a name="index-ASCII"></a>
-<p><acronym>NCO</acronym> processing of <code>NC_CHAR</code> attributes is a bit like Perl in
-that it attempts to do what you want by default (but this sometimes
-causes unexpected results if you want unusual data storage).
-<a name="index-printf_0028_0029"></a>
-<a name="index-_005cn-_0028ASCII-LF_002c-linefeed_0029"></a>
-<a name="index-characters_002c-special"></a>
-<a name="index-_005ct-_0028ASCII-HT_002c-horizontal-tab_0029"></a>
-If the <var>att_type</var> is <code>NC_CHAR</code> then the argument is interpreted as a
-string and it may contain C-language escape sequences, e.g., <code>\n</code>,
-which <acronym>NCO</acronym> will interpret before writing anything to disk.
-<acronym>NCO</acronym> translates valid escape sequences and stores the
-appropriate <acronym>ASCII</acronym> code instead.
-Since two byte escape sequences, e.g., <code>\n</code>, represent one-byte
-<acronym>ASCII</acronym> codes, e.g., <acronym>ASCII</acronym> 10 (decimal), the stored
-string attribute is one byte shorter than the input string length for
-each embedded escape sequence. 
-The most frequently used C-language escape sequences are <code>\n</code> (for
-linefeed) and <code>\t</code> (for horizontal tab).
-These sequences in particular allow convenient editing of formatted text
-attributes. 
-<a name="index-_005ca-_0028ASCII-BEL_002c-bell_0029"></a>
-<a name="index-_005cb-_0028ASCII-BS_002c-backspace_0029"></a>
-<a name="index-_005cf-_0028ASCII-FF_002c-formfeed_0029"></a>
-<a name="index-_005cr-_0028ASCII-CR_002c-carriage-return_0029"></a>
-<a name="index-_005cv-_0028ASCII-VT_002c-vertical-tab_0029"></a>
-<a name="index-_005c_005c-_0028ASCII-_005c_002c-backslash_0029"></a>
-The other valid <acronym>ASCII</acronym> codes are <code>\a</code>, <code>\b</code>, <code>\f</code>,
-<code>\r</code>, <code>\v</code>, and <code>\\</code>. 
-See section <a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a>, for more examples of string formatting
-(with the <code>ncks</code> ‘<samp>-s</samp>’ option) with special characters. 
-</p>
-<a name="index-_005c_0027-_0028protected-end-quote_0029"></a>
-<a name="index-_005c_0022-_0028protected-double-quote_0029"></a>
-<a name="index-_005c_003f-_0028protected-question-mark_0029"></a>
-<a name="index-_005c_005c-_0028protected-backslash_0029"></a>
-<a name="index-_0027-_0028end-quote_0029"></a>
-<a name="index-_0022-_0028double-quote_0029"></a>
-<a name="index-_003f-_0028question-mark_0029"></a>
-<a name="index-_005c-_0028backslash_0029"></a>
-<a name="index-special-characters"></a>
-<a name="index-ASCII-1"></a>
-<p>Analogous to <code>printf</code>, other special characters are also allowed by 
-<code>ncatted</code> if they are "protected" by a backslash.
-The characters <code>"</code>, <code>'</code>, <code>?</code>, and <code>\</code> may be 
-input to the shell as <code>\"</code>, <code>\'</code>, <code>\?</code>, and <code>\\</code>.
-<acronym>NCO</acronym> simply strips away the leading backslash from these
-characters before editing the attribute.
-No other characters require protection by a backslash.
-Backslashes which precede any other character (e.g., <code>3</code>, <code>m</code>,
-<code>$</code>, <code>|</code>, <code>&</code>, <code>@</code>, <code>%</code>, <code>{</code>, and
-<code>}</code>) will not be filtered and will be included in the attribute.
-</p>
-<a name="index-strings"></a>
-<a name="index-NUL_002dtermination"></a>
-<a name="index-NUL"></a>
-<a name="index-C-language-6"></a>
-<a name="index-0-_0028NUL_0029"></a>
-<p>Note that the NUL character <code>\0</code> which terminates C language
-strings is assumed and need not be explicitly specified.
-If <code>\0</code> is input, it is translated to the NUL character.
-However, this will make the subsequent portion of the string, if any,
-invisible to C standard library string functions. 
-And that may cause unintended consequences.
-Because of these context-sensitive rules, one must use <code>ncatted</code>
-with care in order to store data, rather than text strings, in an 
-attribute of type <code>NC_CHAR</code>.
-</p>
-<a name="xmp_ncatted"></a> <!-- http://nco.sf.net/nco.html#xmp_ncatted --><p>EXAMPLES
-</p>
-<p>Append the string "Data version 2.0.\n" to the global attribute
-<code>history</code>: 
-</p><table><tr><td> </td><td><pre class="example">ncatted -a history,global,a,c,"Data version 2.0\n" in.nc 
-</pre></td></tr></table>
-<p>Note the use of embedded C language <code>printf()</code>-style escape 
-sequences. 
-</p>
-<p>Change the value of the <code>long_name</code> attribute for variable <code>T</code>
-from whatever it currently is to "temperature":
-</p><table><tr><td> </td><td><pre class="example">ncatted -a long_name,T,o,c,temperature in.nc
-</pre></td></tr></table>
-
-<p>Delete all existing <code>units</code> attributes:
-</p><table><tr><td> </td><td><pre class="example">ncatted -a units,,d,, in.nc
-</pre></td></tr></table>
-<p>The value of <var>var_nm</var> was left blank in order to select all
-variables in the file.
-The values of <var>att_type</var> and <var>att_val</var> were left blank because
-they are superfluous in <em>Delete</em> mode. 
-</p>
-<a name="index-global-attributes-5"></a>
-<a name="index-attributes_002c-global-5"></a>
-<p>Delete all attributes associated with the <code>tpt</code> variable, and
-delete all global attributes
-</p><table><tr><td> </td><td><pre class="example">ncatted -a ,tpt,d,, -a ,global,d,, in.nc
-</pre></td></tr></table>
-<p>The value of <var>att_nm</var> was left blank in order to select all
-attributes associated with the variable.
-To delete all global attributes, simply replace <code>tpt</code> with
-<code>global</code> in the above.
-</p>
-<a name="index-units-3"></a>
-<p>Modify all existing <code>units</code> attributes to "meter second-1":
-</p><table><tr><td> </td><td><pre class="example">ncatted -a units,,m,c,"meter second-1" in.nc
-</pre></td></tr></table>
-
-<a name="index-units-4"></a>
-<p>Add a <code>units</code> attribute of "kilogram kilogram-1" to all variables 
-whose first three characters are ‘<samp>H2O</samp>’:
-</p><table><tr><td> </td><td><pre class="example">ncatted -a units,'^H2O',c,c,"kilogram kilogram-1" in.nc
-</pre></td></tr></table>
-
-<p>Overwrite the <code>quanta</code> attribute of variable
-<code>energy</code> to an array of four integers. 
-</p><table><tr><td> </td><td><pre class="example">ncatted -O -a quanta,energy,o,s,"010,101,111,121" in.nc
-</pre></td></tr></table>
-
-<a name="index-extended-regular-expressions-4"></a>
-<a name="index-regular-expressions-5"></a>
-<a name="index-pattern-matching-3"></a>
-<a name="index-wildcards-3"></a>
-<p>As of <acronym>NCO</acronym> 3.9.6 (January, 2009), variable names arguments 
-to <code>ncatted</code> may contain <em>extended regular expressions</em>.
-Create <code>isotope</code> attributes for all variables containing ‘<samp>H2O</samp>’ 
-in their names.
-</p><table><tr><td> </td><td><pre class="example">ncatted -O -a isotope,'^H2O*',c,s,"18" in.nc
-</pre></td></tr></table>
-<p>See <a href="#Subsetting-Variables">Subsetting Variables</a> for more details.
-</p>
-<p>Demonstrate input of C-language escape sequences (e.g., <code>\n</code>) and
-other special characters (e.g., <code>\"</code>) 
-</p><table><tr><td> </td><td><pre class="example">ncatted -h -a special,global,o,c,
-'\nDouble quote: \"\nTwo consecutive double quotes: \"\"\n
-Single quote: Beyond my shell abilities!\nBackslash: \\\n
-Two consecutive backslashes: \\\\\nQuestion mark: \?\n' in.nc
-</pre></td></tr></table>
-<p>Note that the entire attribute is protected from the shell by single
-quotes. 
-These outer single quotes are necessary for interactive use, but may be
-omitted in batch scripts.
-</p>
-
-<a name="ncbo"></a> <!-- http://nco.sf.net/nco.html#ncbo -->
-<a name="ncdiff"></a> <!-- http://nco.sf.net/nco.html#ncdiff -->
-<a name="ncadd"></a> <!-- http://nco.sf.net/nco.html#ncadd -->
-<a name="ncsub"></a> <!-- http://nco.sf.net/nco.html#ncsub -->
-<a name="ncsubtract"></a> <!-- http://nco.sf.net/nco.html#ncsubtract -->
-<a name="ncmult"></a> <!-- http://nco.sf.net/nco.html#ncmult -->
-<a name="ncmultiply"></a> <!-- http://nco.sf.net/nco.html#ncmultiply -->
-<a name="ncdivide"></a> <!-- http://nco.sf.net/nco.html#ncdivide --><hr size="6">
-<a name="ncbo-netCDF-Binary-Operator"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncatted-netCDF-Attribute-Editor" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncea-netCDF-Ensemble-Averager" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncbo-netCDF-Binary-Operator-1"></a>
-<h2 class="section">4.3 <code>ncbo</code> netCDF Binary Operator</h2>
-<a name="index-ncbo-1"></a>
-<a name="index-ncdiff"></a>
-<a name="index-ncadd"></a>
-<a name="index-ncsub"></a>
-<a name="index-ncsubtract"></a>
-<a name="index-ncmult"></a>
-<a name="index-ncmultiply"></a>
-<a name="index-ncdivide"></a>
-<a name="index-binary-operations-1"></a>
-<a name="index-addition-1"></a>
-<a name="index-subtraction-1"></a>
-<a name="index-multiplication-1"></a>
-<a name="index-adding-data"></a>
-<a name="index-subtracting-data"></a>
-<a name="index-multiplying-data"></a>
-<a name="index-dividing-data"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncbo [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h]
-[-L <var>dfl_lvl</var>] [-l <var>path</var>] [-O] [-o <var>file_3</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,…]] [-X ...] [-x] [-y <var>op_typ</var>]
-<var>file_1</var> <var>file_2</var> [<var>file_3</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncbo</code> performs binary operations on variables in <var>file_1</var>
-and the corresponding variables (those with the same name) in
-<var>file_2</var> and stores the results in <var>file_3</var>. 
-The binary operation operates on the entire files (modulo any excluded
-variables). 
-See section <a href="#Missing-Values">Missing values</a>, for treatment of missing values.
-One of the four standard arithmetic binary operations currently
-supported must be selected with the ‘<samp>-y <var>op_typ</var></samp>’ switch (or
-long options ‘<samp>--op_typ</samp>’ or ‘<samp>--operation</samp>’).
-<a name="index-add"></a>
-<a name="index-subtract"></a>
-<a name="index-multiply"></a>
-<a name="index-divide"></a>
-<a name="index-_002b"></a>
-<a name="index-_002d"></a>
-<a name="index-_002a"></a>
-<a name="index-_002f"></a>
-<a name="index-_002dy-op_005ftyp-1"></a>
-<a name="index-_002d_002doperation-op_005ftyp-1"></a>
-<a name="index-_002d_002dop_005ftyp-op_005ftyp-1"></a>
-<a name="index-alternate-invocations"></a>
-The valid binary operations for <code>ncbo</code>, their definitions, 
-corresponding values of the <var>op_typ</var> key, and alternate invocations
-are:  
-</p><dl compact="compact">
-<dt> <em>Addition</em></dt>
-<dd><p>Definition: <var>file_3</var> = <var>file_1</var> + <var>file_2</var><br>
-Alternate invocation: <code>ncadd</code><br>
-<var>op_typ</var> key values: ‘<samp>add</samp>’, ‘<samp>+</samp>’, ‘<samp>addition</samp>’<br>
-Examples: ‘<samp>ncbo --op_typ=add 1.nc 2.nc 3.nc</samp>’, ‘<samp>ncadd 1.nc 2.nc 3.nc</samp>’<br>
-</p></dd>
-<dt> <em>Subtraction</em></dt>
-<dd><p>Definition: <var>file_3</var> = <var>file_1</var> - <var>file_2</var><br>
-Alternate invocations: <code>ncdiff</code>, <code>ncsub</code>, <code>ncsubtract</code><br>
-<var>op_typ</var> key values: ‘<samp>sbt</samp>’, ‘<samp>-</samp>’, ‘<samp>dff</samp>’, ‘<samp>diff</samp>’, ‘<samp>sub</samp>’, ‘<samp>subtract</samp>’, ‘<samp>subtraction</samp>’<br>
-Examples: ‘<samp>ncbo --op_typ=- 1.nc 2.nc 3.nc</samp>’, ‘<samp>ncdiff 1.nc 2.nc 3.nc</samp>’<br>
-</p></dd>
-<dt> <em>Multiplication</em></dt>
-<dd><p>Definition: <var>file_3</var> = <var>file_1</var> * <var>file_2</var><br> 
-Alternate invocations: <code>ncmult</code>, <code>ncmultiply</code><br> 
-<var>op_typ</var> key values: ‘<samp>mlt</samp>’, ‘<samp>*</samp>’, ‘<samp>mult</samp>’, ‘<samp>multiply</samp>’, ‘<samp>multiplication</samp>’<br>
-Examples: ‘<samp>ncbo --op_typ=mlt 1.nc 2.nc 3.nc</samp>’, ‘<samp>ncmult 1.nc 2.nc 3.nc</samp>’<br>
-</p></dd>
-<dt> <em>Division</em></dt>
-<dd><p>Definition: <var>file_3</var> = <var>file_1</var> / <var>file_2</var><br> 
-Alternate invocation: <code>ncdivide</code><br>
-<var>op_typ</var> key values: ‘<samp>dvd</samp>’, ‘<samp>/</samp>’, ‘<samp>divide</samp>’, ‘<samp>division</samp>’<br>
-Examples: ‘<samp>ncbo --op_typ=/ 1.nc 2.nc 3.nc</samp>’, ‘<samp>ncdivide 1.nc 2.nc 3.nc</samp>’<br>
-</p></dd>
-</dl>
-<p>Care should be taken when using the shortest form of key values,
-i.e., ‘<samp>+</samp>’, ‘<samp>-</samp>’, ‘<samp>*</samp>’, and ‘<samp>/</samp>’.
-Some of these single characters may have special meanings to the shell
-<a name="index-naked-characters"></a>
-<a name="DOCF36" href="#FOOT36">(36)</a>.
-<a name="index-Bash-shell"></a>
-Place these characters inside quotes to keep them from being interpreted 
-(globbed) by the shell
-<a name="DOCF37" href="#FOOT37">(37)</a>. 
-<a name="index-globbing-4"></a>
-<a name="index-shell-4"></a>
-<a name="index-quotes-2"></a>
-For example, the following commands are equivalent
-</p><table><tr><td> </td><td><pre class="example">ncbo --op_typ=* 1.nc 2.nc 3.nc # Dangerous (shell may try to glob)
-ncbo --op_typ='*' 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-ncbo --op_typ="*" 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-ncbo --op_typ=mlt 1.nc 2.nc 3.nc
-ncbo --op_typ=mult 1.nc 2.nc 3.nc
-ncbo --op_typ=multiply 1.nc 2.nc 3.nc
-ncbo --op_typ=multiplication 1.nc 2.nc 3.nc
-ncmult 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmult'
-ncmultiply 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmultiply'
-</pre></td></tr></table>
-<p>No particular argument or invocation form is preferred.
-Users are encouraged to use the forms which are most intuitive to them.
-</p>
-<a name="index-alias"></a>
-<a name="index-ln-_002ds"></a>
-<a name="index-symbolic-links-3"></a>
-<p>Normally, <code>ncbo</code> will fail unless an operation type is specified
-with ‘<samp>-y</samp>’ (equivalent to ‘<samp>--op_typ</samp>’).
-You may create exceptions to this rule to suit your particular tastes,
-in conformance with your site’s policy on <em>symbolic links</em> to
-executables (files of a different name point to the actual executable).
-For many years, <code>ncdiff</code> was the main binary file operator.
-As a result, many users prefer to continue invoking <code>ncdiff</code>
-rather than memorizing a new command (‘<samp>ncbo -y <var>sbt</var></samp>’) which
-behaves identically to the original <code>ncdiff</code> command.
-However, from a software maintenance standpoint, maintaining a distinct 
-executable for each binary operation (e.g., <code>ncadd</code>) is untenable,
-and a single executable, <code>ncbo</code>, is desirable.
-To maintain backward compatibility, therefore, <acronym>NCO</acronym>
-automatically creates a symbolic link from <code>ncbo</code> to
-<code>ncdiff</code>.  
-Thus <code>ncdiff</code> is called an <em>alternate invocation</em> of
-<code>ncbo</code>. 
-<code>ncbo</code> supports many additional alternate invocations which must
-be manually activated.
-Should users or system adminitrators decide to activate them, the
-procedure is simple. 
-For example, to use ‘<samp>ncadd</samp>’ instead of ‘<samp>ncbo --op_typ=add</samp>’, 
-simply create a symbolic link from <code>ncbo</code> to <code>ncadd</code>
-<a name="DOCF38" href="#FOOT38">(38)</a>.
-The alternatate invocations supported for each operation type are listed
-above. 
-Alternatively, users may always define ‘<samp>ncadd</samp>’ as an <em>alias</em> to 
-‘<samp>ncbo --op_typ=add</samp>’
-<a name="DOCF39" href="#FOOT39">(39)</a>.
-</p>
-<p>It is important to maintain portability in <acronym>NCO</acronym> scripts.
-Therefore we recommend that site-specfic invocations (e.g.,
-‘<samp>ncadd</samp>’) be used only in interactive sessions from the
-command-line.
-For scripts, we recommend using the full invocation (e.g., 
-‘<samp>ncbo --op_typ=add</samp>’).
-This ensures portability of scripts between users and sites.
-</p>
-<p><code>ncbo</code> operates (e.g., adds) variables in <var>file_2</var> with the
-corresponding variables (those with the same name) in <var>file_1</var> and
-stores the results in <var>file_3</var>. 
-<a name="index-broadcasting-variables"></a>
-Variables in <var>file_2</var> are <em>broadcast</em> to conform to the
-corresponding variable in <var>file_1</var> if necessary, but the reverse is
-not true.
-Broadcasting a variable means creating data in non-existing dimensions
-from the data in existing dimensions.
-For example, a two dimensional variable in <var>file_2</var> can be
-subtracted from a four, three, or two (but not one or zero)
-dimensional variable (of the same name) in <code>file_1</code>. 
-<a name="index-anomalies"></a>
-This functionality allows the user to compute anomalies from the mean.
-Note that variables in <var>file_1</var> are <em>not</em> broadcast to conform
-to the dimensions in <var>file_2</var>. 
-In the future, we will broadcast variables in <var>file_1</var>, if necessary
-to conform to their counterparts in <var>file_2</var>.
-<a name="index-rank"></a>
-Thus, presently, the number of dimensions, or <em>rank</em>, of any
-processed variable in <var>file_1</var> must be greater than or equal to the
-rank of the same variable in <var>file_2</var>. 
-Furthermore, the size of all dimensions common to both <var>file_1</var> and
-<var>file_2</var> must be equal. 
-</p>
-<p>When computing anomalies from the mean it is often the case that
-<var>file_2</var> was created by applying an averaging operator to a file
-with initially the same dimensions as <var>file_1</var> (often <var>file_1</var>
-itself).  
-In these cases, creating <var>file_2</var> with <code>ncra</code> rather than
-<code>ncwa</code> will cause the <code>ncbo</code> operation to fail.
-For concreteness say the record dimension in <code>file_1</code> is
-<code>time</code>.  
-If <var>file_2</var> were created by averaging <var>file_1</var> over the
-<code>time</code> dimension with the <code>ncra</code> operator rather than with
-the <code>ncwa</code> operator, then <var>file_2</var> will have a <code>time</code>
-dimension of size 1 rather than having no <code>time</code> dimension at
-all 
-<a name="index-degenerate-dimension-2"></a>
-<a name="index-_002db-1"></a>
-<a name="DOCF40" href="#FOOT40">(40)</a>.   
-In this case the input files to <code>ncbo</code>, <var>file_1</var> and
-<var>file_2</var>, will have unequally sized <code>time</code> dimensions which
-causes <code>ncbo</code> to fail.
-To prevent this from occuring, use <code>ncwa</code> to remove the
-<code>time</code> dimension from <var>file_2</var>.
-See the example below.
-</p>
-<a name="index-coordinate-variable-3"></a>
-<a name="index-NC_005fBYTE-1"></a>
-<a name="index-NC_005fCHAR-1"></a>
-<p><code>ncbo</code> never operates on coordinate variables or variables
-of type <code>NC_CHAR</code> or <code>NC_BYTE</code>. 
-This ensures that coordinates like (e.g., latitude and longitude) are 
-physically meaningful in the output file, <var>file_3</var>. 
-This behavior is hardcoded.
-<a name="index-CF-conventions-4"></a>
-<code>ncbo</code> applies special rules to some 
-<acronym>CF</acronym>-defined (and/or <acronym>NCAR CCSM</acronym> or <acronym>NCAR CCM</acronym> 
-fields) such as <code>ORO</code>.
-See <a href="#CF-Conventions"><acronym>CF</acronym> Conventions</a> for a complete description.
-Finally, we note that <code>ncflint</code> (see section <a href="#ncflint-netCDF-File-Interpolator"><code>ncflint</code> netCDF File Interpolator</a>) is designed for file interpolation.
-As such, it also performs file subtraction, addition, multiplication,
-albeit in a more convoluted way than <code>ncbo</code>.
-</p>
-<a name="xmp_ncbo"></a> <!-- http://nco.sf.net/nco.html#xmp_ncbo -->
-<a name="xmp_ncdiff"></a> <!-- http://nco.sf.net/nco.html#xmp_ncdiff --><p>EXAMPLES
-</p>
-<p>Say files ‘<tt>85_0112.nc</tt>’ and ‘<tt>86_0112.nc</tt>’ each contain 12 months
-of data.
-Compute the change in the monthly averages from 1985 to 1986:
-</p><table><tr><td> </td><td><pre class="example">ncbo -op_typ=sub 86_0112.nc 85_0112.nc 86m85_0112.nc
-ncdiff 86_0112.nc 85_0112.nc 86m85_0112.nc
-</pre></td></tr></table>
-
-<p>The following examples demonstrate the broadcasting feature of
-<code>ncbo</code>.  
-Say we wish to compute the monthly anomalies of <code>T</code> from the yearly
-average of <code>T</code> for the year 1985.
-First we create the 1985 average from the monthly data, which is stored
-with the record dimension <code>time</code>.
-</p><table><tr><td> </td><td><pre class="example">ncra 85_0112.nc 85.nc
-ncwa -O -a time 85.nc 85.nc
-</pre></td></tr></table>
-<p>The second command, <code>ncwa</code>, gets rid of the <code>time</code> dimension
-of size 1 that <code>ncra</code> left in ‘<tt>85.nc</tt>’. 
-Now none of the variables in ‘<tt>85.nc</tt>’ has a <code>time</code> dimension.
-A quicker way to accomplish this is to use <code>ncwa</code> from the
-beginning:  
-</p><table><tr><td> </td><td><pre class="example">ncwa -a time 85_0112.nc 85.nc
-</pre></td></tr></table>
-<p>We are now ready to use <code>ncbo</code> to compute the anomalies for 1985:
-</p><table><tr><td> </td><td><pre class="example">ncdiff -v T 85_0112.nc 85.nc t_anm_85_0112.nc
-</pre></td></tr></table>
-<p>Each of the 12 records in ‘<tt>t_anm_85_0112.nc</tt>’ now contains the
-monthly deviation of <code>T</code> from the annual mean of <code>T</code> for each 
-gridpoint. 
-</p>
-<p>Say we wish to compute the monthly gridpoint anomalies from the zonal
-annual mean. 
-A <em>zonal mean</em> is a quantity that has been averaged over the
-longitudinal (or <var>x</var>) direction.
-First we use <code>ncwa</code> to average over longitudinal direction
-<code>lon</code>, creating ‘<tt>85_x.nc</tt>’, the zonal mean of ‘<tt>85.nc</tt>’. 
-Then we use <code>ncbo</code> to subtract the zonal annual means from the
-monthly gridpoint data:
-</p><table><tr><td> </td><td><pre class="example">ncwa -a lon 85.nc 85_x.nc
-ncdiff 85_0112.nc 85_x.nc tx_anm_85_0112.nc
-</pre></td></tr></table>
-<p>This examples works assuming ‘<tt>85_0112.nc</tt>’ has dimensions
-<code>time</code> and <code>lon</code>, and that ‘<tt>85_x.nc</tt>’ has no <code>time</code>
-or <code>lon</code> dimension.
-</p>
-<a name="csn_anm"></a> <!-- http://nco.sf.net/nco.html#csn_anm --><p>As a final example, say we have five years of monthly data (i.e., 
-60 months) stored in ‘<tt>8501_8912.nc</tt>’ and we wish to create a
-file which contains the twelve month seasonal cycle of the average
-monthly anomaly from the five-year mean of this data. 
-The following method is just one permutation of many which will
-accomplish the same result.
-First use <code>ncwa</code> to create the five-year mean: 
-</p><table><tr><td> </td><td><pre class="example">ncwa -a time 8501_8912.nc 8589.nc
-</pre></td></tr></table>
-<p>Next use <code>ncbo</code> to create a file containing the difference of
-each month’s data from the five-year mean:
-</p><table><tr><td> </td><td><pre class="example">ncbo 8501_8912.nc 8589.nc t_anm_8501_8912.nc
-</pre></td></tr></table>
-<p>Now use <code>ncks</code> to group the five January anomalies together in
-one file, and use <code>ncra</code> to create the average anomaly for all
-five Januarys. 
-These commands are embedded in a shell loop so they are repeated for all
-twelve months:
-<a name="index-Bash-Shell"></a>
-<a name="index-Bourne-Shell-1"></a>
-<a name="index-C-Shell-1"></a>
-</p><table><tr><td> </td><td><pre class="example">for idx in {1..12}; do # Bash Shell (version 3.0+) 
-  idx=`printf "%02d" ${idx}` # Zero-pad to preserve order
-  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-  ncra foo.${idx} t_anm_8589_${idx}.nc
-done
-for idx in 01 02 03 04 05 06 07 08 09 10 11 12; do # Bourne Shell
-  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-  ncra foo.${idx} t_anm_8589_${idx}.nc
-done
-foreach idx (01 02 03 04 05 06 07 08 09 10 11 12) # C Shell
-  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-  ncra foo.${idx} t_anm_8589_${idx}.nc
-end
-</pre></td></tr></table>
-<p>Note that <code>ncra</code> understands the <code>stride</code> argument so the
-two commands inside the loop may be combined into the single command 
-</p><table><tr><td> </td><td><pre class="example">ncra -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-</pre></td></tr></table>
-<p>Finally, use <code>ncrcat</code> to concatenate the 12 average monthly  
-anomaly files into one twelve-record file which contains the entire
-seasonal cycle of the monthly anomalies:
-</p><table><tr><td> </td><td><pre class="example">ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc
-</pre></td></tr></table>
-
-
-<a name="ncea"></a> <!-- http://nco.sf.net/nco.html#ncea --><hr size="6">
-<a name="ncea-netCDF-Ensemble-Averager"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncbo-netCDF-Binary-Operator" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncecat-netCDF-Ensemble-Concatenator" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncea-netCDF-Ensemble-Averager-1"></a>
-<h2 class="section">4.4 <code>ncea</code> netCDF Ensemble Averager</h2>
-<a name="index-averaging-data-1"></a>
-<a name="index-ensemble-average"></a>
-<a name="index-ncea-2"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncea [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>] 
-[-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r] 
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,…]] [-X ...] [-x] [-y <var>op_typ</var>]
-[<var>input-files</var>] [<var>output-file</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncea</code> performs gridpoint averages of variables across an
-arbitrary number (an <em>ensemble</em>) of <var>input-files</var>, with each
-file receiving an equal weight in the average.
-<a name="index-ensemble-1"></a>
-<code>ncea</code> averages entire files, and weights each file evenly.
-This is distinct from <code>ncra</code>, which only averages over the
-record dimension (e.g., <var>time</var>), and weights each record in the
-record dimension evenly,  
-</p>
-<p>Variables in the <var>output-file</var> are the same size as the variable
-in each of the <var>input-files</var>, and all <var>input-files</var> must be
-the same size.
-<a name="index-record-dimension-3"></a>
-<a name="index-hyperslab-2"></a>
-The only exception is that <code>ncea</code> allows files to differ in
-the record dimension size if the requested record hyperslab
-(see section <a href="#Hyperslabs">Hyperslabs</a>) resolves to the same size for all files. 
-<code>ncea</code> recomputes the record dimension hyperslab limits for
-each input file so that coordinate limits may be used to select equal
-length timeseries from unequal length files.
-<a name="index-IPCC"></a>
-<a name="index-AR4"></a>
-<a name="index-CMIP"></a>
-This simplifies analysis of unequal length timeseries from simulation
-ensembles (e.g., the CMIP IPCC AR4 archive).  
-</p>
-<a name="index-operation-types-1"></a>
-<p><code>ncea</code> <em>always averages</em> coordinate variables regardless of 
-the arithmetic operation type performed on the non-coordinate variables. 
-(see section <a href="#Operation-Types">Operation Types</a>). 
-<a name="index-record-dimension-4"></a>
-All dimensions, including the record dimension, are treated identically
-and preserved in the <var>output-file</var>.
-</p>
-<p>See section <a href="#Averaging-vs_002e-Concatenating">Averagers vs. Concatenators</a>, for a description of the
-distinctions between the various averagers and concatenators. 
-<a name="index-multi_002dfile-operators-3"></a>
-<a name="index-standard-input-1"></a>
-<a name="index-stdin-2"></a>
-As a multi-file operator, <code>ncea</code> will read the list of
-<var>input-files</var> from <code>stdin</code> if they are not specified 
-as positional arguments on the command line 
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-</p>
-<p>The file is the logical unit of organization for the results of many
-scientific studies.
-Often one wishes to generate a file which is the gridpoint average of
-many separate files. 
-This may be to reduce statistical noise by combining the results of a
-large number of experiments, or it may simply be a step in a procedure 
-whose goal is to compute anomalies from a mean state. 
-In any case, when one desires to generate a file whose properties are
-the mean of all the input files, then <code>ncea</code> is the operator to 
-use. 
-</p>
-<p><code>ncea</code> only allows coordinate variables to be processed by
-the linear average, minimum, and maximum operations.
-<code>ncea</code> will return the linear average of coordinates unless
-extrema are explicitly requested.
-Other requested operations (e.g., square-root, RMS) are applied only
-to non-coordinate variables.
-In these cases the linear average of the coordinate variable will be
-returned.
-</p>
-<a name="xmp_ncea"></a> <!-- http://nco.sf.net/nco.html#xmp_ncea --><p>EXAMPLES
-</p>
-<p>Consider a model experiment which generated five realizations of one
-year of data, say 1985.
-You can imagine that the experimenter slightly perturbs the
-initial conditions of the problem before generating each new solution.  
-Assume each file contains all twelve months (a seasonal cycle) of data
-and we want to produce a single file containing the ensemble average
-(mean) seasonal cycle.  
-Here the numeric filename suffix denotes the experiment number
-(<em>not</em> the month):
-</p><table><tr><td> </td><td><pre class="example">ncea 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-ncea 85_0[1-5].nc 85.nc
-ncea -n 5,2,1 85_01.nc 85.nc
-</pre></td></tr></table>
-<p>These three commands produce identical answers.
-See section <a href="#Specifying-Input-Files">Specifying Input Files</a>, for an explanation of the distinctions
-between these methods.
-The output file, ‘<tt>85.nc</tt>’, is the same size as the inputs files.
-It contains 12 months of data (which might or might not be stored in the 
-record dimension, depending on the input files), but each value in the
-output file is the average of the five values in the input files.
-</p>
-<p>In the previous example, the user could have obtained the ensemble
-average values in a particular spatio-temporal region by adding a 
-hyperslab argument to the command, e.g.,
-</p><table><tr><td> </td><td><pre class="example">ncea -d time,0,2 -d lat,-23.5,23.5 85_??.nc 85.nc
-</pre></td></tr></table>
-<p>In this case the output file would contain only three slices of data in
-the <var>time</var> dimension. 
-These three slices are the average of the first three slices from the
-input files.
-Additionally, only data inside the tropics is included.
-</p>
-
-<a name="ncecat"></a> <!-- http://nco.sf.net/nco.html#ncecat --><hr size="6">
-<a name="ncecat-netCDF-Ensemble-Concatenator"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncea-netCDF-Ensemble-Averager" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncflint-netCDF-File-Interpolator" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncecat-netCDF-Ensemble-Concatenator-1"></a>
-<h2 class="section">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</h2>
-<a name="index-concatenation-1"></a>
-<a name="index-ensemble-concatenation"></a>
-<a name="index-ncecat-1"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncecat [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>] 
-[-M] [-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r] 
-[-t <var>thr_nbr</var>] [-u <var>ulm_nm</var>] [-v <var>var</var>[,…]] [-X ...] [-x] 
-[<var>input-files</var>] [<var>output-file</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncecat</code> concatenates an arbitrary number of input files into a 
-single output file.
-The <var>input-files</var> are stored consecutively as records in 
-<var>output-file</var>.
-Each variable (except coordinate variables) in each input file becomes
-one record in the same variable in the output file. 
-Coordinate variables are not concatenated, they are instead simply
-copied from the first input file to the <var>output-file</var>.
-All <var>input-files</var> must contain all extracted variables (or else
-there would be "gaps" in the output file).
-</p>
-<p>A new record dimension is the glue which binds the input file data
-together. 
-The new record dimension name is, by default, “record”.
-<a name="index-unlimited-dimension"></a>
-<a name="index-record-dimension-5"></a>
-<a name="index-_002du-ulm_005fnm"></a>
-<a name="index-_002d_002dulm_005fnm-ulm_005fnm"></a>
-<a name="index-_002d_002drcd_005fnm-ulm_005fnm"></a>
-Its name can be specified with the ‘<samp>-u <var>ulm_nm</var></samp>’ short
-option (or the ‘<samp>--ulm_nm</samp>’ or ‘<samp>rcd_nm</samp>’ long options).
-</p>
-<p>Each extracted variable must be constant in size and rank across all
-<var>input-files</var>. 
-<a name="index-record-dimension-6"></a>
-<a name="index-hyperslab-3"></a>
-The only exception is that <code>ncecat</code> allows files to differ in
-the record dimension size if the requested record hyperslab
-(see section <a href="#Hyperslabs">Hyperslabs</a>) resolves to the same size for all files. 
-<a name="index-IPCC-1"></a>
-This allows easier gluing/averaging of unequal length timeseries from 
-simulation ensembles (e.g., the IPCC AR4 archive). 
-</p>
-<p>Thus, the <var>output-file</var> size is the sum of the sizes of the
-extracted variables in the input files. 
-See section <a href="#Averaging-vs_002e-Concatenating">Averagers vs. Concatenators</a>, for a description of the
-distinctions between the various averagers and concatenators. 
-<a name="index-multi_002dfile-operators-4"></a>
-<a name="index-standard-input-2"></a>
-<a name="index-stdin-3"></a>
-As a multi-file operator, <code>ncecat</code> will read the list of
-<var>input-files</var> from <code>stdin</code> if they are not specified 
-as positional arguments on the command line 
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-</p>
-<a name="index-_002dM-1"></a>
-<a name="index-_002d_002dglb_005fmtd_005fspr"></a>
-<a name="index-metadata_002c-global"></a>
-<p>Turn off global metadata copying.
-By default all <acronym>NCO</acronym> operators copy the global metadata of the 
-first input file into <var>output-file</var>.  
-This helps preserve the provenance of the output data.
-However, the use of metadata is burgeoning and is not uncommon to
-encounter files with excessive amounts of extraneous metadata.
-Extracting small bits of data from such files leads to output files
-which are much larger than necessary due to the automatically copied
-metadata.
-<code>ncecat</code> supports turning off the default copying of global
-metadata via the ‘<samp>-M</samp>’ switch (or its long option equivalents,
-‘<samp>--glb_mtd_spr</samp>’ and ‘<samp>--global_metadata_suppress</samp>’). 
-</p>
-<a name="index-climate-model-4"></a>
-<p>Consider five realizations, ‘<tt>85a.nc</tt>’, ‘<tt>85b.nc</tt>’, 
-… ‘<tt>85e.nc</tt>’ of 1985 predictions from the same climate
-model. 
-Then <code>ncecat 85?.nc 85_ens.nc</code> glues the individual realizations 
-together into the single file, ‘<tt>85_ens.nc</tt>’. 
-If an input variable was dimensioned [<code>lat</code>,<code>lon</code>], it will
-by default have dimensions [<code>record</code>,<code>lat</code>,<code>lon</code>] in
-the output file. 
-A restriction of <code>ncecat</code> is that the hyperslabs of the
-processed variables must be the same from file to file.
-Normally this means all the input files are the same size, and contain 
-data on different realizations of the same variables.
-</p>
-<a name="index-ncpdq-3"></a>
-<a name="index-packing-3"></a>
-<a name="index-unpacking-2"></a>
-<a name="index-add_005foffset-2"></a>
-<a name="index-scale_005ffactor-1"></a>
-<p>Concatenating a variable packed with different scales across multiple
-datasets is beyond the capabilities of <code>ncecat</code> (and
-<code>ncrcat</code>, the other concatenator (<a href="#Concatenation">Concatenators <code>ncrcat</code> and <code>ncecat</code></a>).
-<code>ncecat</code> does not unpack data, it simply <em>copies</em> the data
-from the <var>input-files</var>, and the metadata from the <em>first</em>
-<var>input-file</var>, to the <var>output-file</var>. 
-This means that data compressed with a packing convention must use
-the identical packing parameters (e.g., <code>scale_factor</code> and
-<code>add_offset</code>) for a given variable across <em>all</em> input files.
-Otherwise the concatenated dataset will not unpack correctly.
-The workaround for cases where the packing parameters differ across
-<var>input-files</var> requires three steps:
-First, unpack the data using <code>ncpdq</code>.
-Second, concatenate the unpacked data using <code>ncecat</code>, 
-Third, re-pack the result with <code>ncpdq</code>.
-</p>
-<a name="xmp_ncecat"></a> <!-- http://nco.sf.net/nco.html#xmp_ncecat --><p>EXAMPLES
-</p>
-<p>Consider a model experiment which generated five realizations of one
-year of data, say 1985.
-You can imagine that the experimenter slightly perturbs the
-initial conditions of the problem before generating each new solution.  
-Assume each file contains all twelve months (a seasonal cycle) of data
-and we want to produce a single file containing all the seasonal
-cycles. 
-Here the numeric filename suffix denotes the experiment number
-(<em>not</em> the month):
-</p><table><tr><td> </td><td><pre class="example">ncecat 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-ncecat 85_0[1-5].nc 85.nc
-ncecat -n 5,2,1 85_01.nc 85.nc
-</pre></td></tr></table>
-<p>These three commands produce identical answers.
-See section <a href="#Specifying-Input-Files">Specifying Input Files</a>, for an explanation of the distinctions
-between these methods.
-The output file, ‘<tt>85.nc</tt>’, is five times the size as a single
-<var>input-file</var>. 
-It contains 60 months of data.
-</p>
-<a name="ncecat_rnm"></a> <!-- http://nco.sf.net/nco.html#ncecat_rnm --><p>One often prefers that the (new) record dimension have a more
-descriptive, context-based name than simply “record”. 
-This is easily accomplished with the ‘<samp>-u <var>ulm_nm</var></samp>’ switch:
-</p><table><tr><td> </td><td><pre class="example">ncecat -u realization 85_0[1-5].nc 85.nc
-</pre></td></tr></table>
-<p>Users are more likely to understand the data processing history when
-such descriptive coordinates are used. 
-</p>
-<a name="dmn_rcd_rm"></a> <!-- http://nco.sf.net/nco.html#dmn_rcd_rm --><a name="index-record-dimension-7"></a>
-<p>Consider a file with an existing record dimension named <code>time</code>. 
-and suppose the user wishes to convert <code>time</code> from a record
-dimension to a non-record dimension.
-This may be useful, for example, when the user has another use for the
-record variable.
-The procedure is to use <code>ncecat</code> followed by <code>ncwa</code>:
-<a name="index-degenerate-dimension-3"></a>
-</p><table><tr><td> </td><td><pre class="example">ncecat in.nc out.nc # Convert time to non-record dimension
-ncwa -a record in.nc out.nc # Remove new degenerate record dimension
-</pre></td></tr></table>
-<p>The second step removes the degenerate record dimension.
-See <a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a> and
-<a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a> for other methods of
-of changing variable dimensionality, including the record dimension.
-</p>
-
-<a name="ncflint"></a> <!-- http://nco.sf.net/nco.html#ncflint --><hr size="6">
-<a name="ncflint-netCDF-File-Interpolator"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncecat-netCDF-Ensemble-Concatenator" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncks-netCDF-Kitchen-Sink" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncflint-netCDF-File-Interpolator-1"></a>
-<h2 class="section">4.6 <code>ncflint</code> netCDF File Interpolator</h2>
-<a name="index-interpolation"></a>
-<a name="index-adding-data-1"></a>
-<a name="index-multiplying-data-1"></a>
-<a name="index-addition-2"></a>
-<a name="index-ncflint-2"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncflint [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-i <var>var</var>,<var>val3</var>]
-[-L <var>dfl_lvl</var>] [-l <var>path</var>] [-O] [-o <var>file_3</var>] [-p <var>path</var>] [-R] [-r] 
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,…]] [-w <var>wgt1</var>[,<var>wgt2</var>]] [-X ...] [-x]
-<var>file_1</var> <var>file_2</var> [<var>file_3</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncflint</code> creates an output file that is a linear combination of 
-the input files.
-This linear combination is a weighted average, a normalized weighted
-average, or an interpolation of the input files.
-Coordinate variables are not acted upon in any case, they are simply
-copied from <var>file_1</var>.
-</p>
-<p>There are two conceptually distinct methods of using <code>ncflint</code>.
-The first method is to specify the weight each input file contributes to 
-the output file.
-In this method, the value <var>val3</var> of a variable in the output file
-<var>file_3</var> is determined from its values <var>val1</var> and <var>val2</var> in
-the two input files according to 
-<var>val3</var> = <var>wgt1</var>*<var>val1</var> + <var>wgt2</var>*<var>val2</var> 
-.
-Here at least <var>wgt1</var>, and, optionally, <var>wgt2</var>, are specified on 
-the command line with the ‘<samp>-w</samp>’ (or ‘<samp>--weight</samp>’ or
-‘<samp>--wgt_var</samp>’) switch.
-<a name="index-_002dw-wgt1_005b_002cwgt2_005d"></a>
-<a name="index-_002d_002dweight-wgt1_005b_002cwgt2_005d"></a>
-<a name="index-_002d_002dwgt_005fvar-wgt1_005b_002cwgt2_005d"></a>
-If only <var>wgt1</var> is specified then <var>wgt2</var> is automatically
-computed as <em><var>wgt2</var> = 1 - <var>wgt1</var></em>.
-Note that weights larger than 1 are allowed. 
-Thus it is possible to specify <em><var>wgt1</var> = 2</em> and
-<em><var>wgt2</var> = -3</em>.
-One can use this functionality to multiply all the values in a given
-file by a constant.
-</p>
-<p>The second method of using <code>ncflint</code> is to specify the
-interpolation option with ‘<samp>-i</samp>’ (or with the ‘<samp>--ntp</samp>’ or 
-‘<samp>--interpolate</samp>’ long options). 
-This is really the inverse of the first method in the following sense. 
-When the user specifies the weights directly, <code>ncflint</code> has no
-work to do besides multiplying the input values by their respective
-weights and adding the results together to produce the output values.  
-It makes sense to use this when the weights are known 
-<em>a priori</em>.
-</p>
-<a name="index-arrival-value"></a>
-<p>Another class of problems has the <em>arrival value</em> (i.e., <var>val3</var>)
-of a particular variable <var>var</var> known <em>a priori</em>. 
-In this case, the implied weights can always be inferred by examining
-the values of <var>var</var> in the input files. 
-This results in one equation in two unknowns, <var>wgt1</var> and <var>wgt2</var>:  
-<var>val3</var> = <var>wgt1</var>*<var>val1</var> + <var>wgt2</var>*<var>val2</var> 
-.
-Unique determination of the weights requires imposing the additional
-constraint of normalization on the weights:
-<em><var>wgt1</var> + <var>wgt2</var> = 1</em>.
-Thus, to use the interpolation option, the user specifies <var>var</var>
-and <var>val3</var> with the ‘<samp>-i</samp>’ option.
-<code>ncflint</code> then computes <var>wgt1</var> and <var>wgt2</var>, and uses these
-weights on all variables to generate the output file.
-Although <var>var</var> may have any number of dimensions in the input
-files, it must represent a single, scalar value.  
-<a name="index-degenerate-dimension-4"></a>
-Thus any dimensions associated with <var>var</var> must be <em>degenerate</em>,
-i.e., of size one.
-</p>
-<p>If neither ‘<samp>-i</samp>’ nor ‘<samp>-w</samp>’ is specified on the command line,
-<code>ncflint</code> defaults to weighting each input file equally in the
-output file.
-This is equivalent to specifying ‘<samp>-w 0.5</samp>’ or ‘<samp>-w 0.5,0.5</samp>’.
-Attempting to specify both ‘<samp>-i</samp>’ and ‘<samp>-w</samp>’ methods in the same
-command is an error. 
-</p>
-<p><code>ncflint</code> does not interpolate variables of type <code>NC_CHAR</code>
-and <code>NC_BYTE</code>. 
-This behavior is hardcoded.
-</p>
-<a name="index-missing-values-2"></a>
-<a name="index-_005fFillValue-3"></a>
-<p>Depending on your intuition, <code>ncflint</code> may treat missing values
-unexpectedly.
-Consider a point where the value in one input file, say <var>val1</var>,
-equals the missing value <var>mss_val_1</var> and, at the same point,
-the corresponding value in the other input file <var>val2</var> is not
-misssing (i.e., does not equal <var>mss_val_2</var>).
-There are three plausible answers, and this creates ambiguity.
-</p>
-<p>Option one is to set <em><var>val3</var> = <var>mss_val_1</var></em>.
-The rationale is that <code>ncflint</code> is, at heart, an interpolator
-and interpolation involving a missing value is intrinsically undefined.
-<code>ncflint</code> currently implements this behavior since it is the
-most conservative and least likely to lead to misinterpretation.
-</p>
-<p>Option two is to output the weighted valid data point, i.e.,
-<var>val3</var> = <var>wgt2</var>*<var>val2</var> 
-.
-The rationale for this behavior is that interpolation is really a
-weighted average of known points, so <code>ncflint</code> should weight the
-valid point. 
-</p>
-<p>Option three is to return the <em>unweighted</em> valid point, i.e.,
-<em><var>val3</var> = <var>val2</var></em>.
-This behavior would appeal to those who use <code>ncflint</code> to
-estimate data using the closest available data. 
-When a point is not bracketed by valid data on both sides, it is better
-to return the known datum than no datum at all.
-</p>
-<p>The current implementation uses the first approach, Option one.
-If you have strong opinions on this matter, let us know, since we are
-willing to implement the other approaches as options if there is enough
-interest. 
-</p>
-<a name="xmp_ncflint"></a> <!-- http://nco.sf.net/nco.html#xmp_ncflint --><p>EXAMPLES
-</p>
-<p>Although it has other uses, the interpolation feature was designed 
-to interpolate <var>file_3</var> to a time between existing files.
-Consider input files ‘<tt>85.nc</tt>’ and ‘<tt>87.nc</tt>’ containing variables 
-describing the state of a physical system at times <em><code>time</code> =
-85</em> and <em><code>time</code> = 87</em>.
-Assume each file contains its timestamp in the scalar variable
-<code>time</code>.  
-Then, to linearly interpolate to a file ‘<tt>86.nc</tt>’ which describes
-the state of the system at time at <code>time</code> = 86, we would use
-</p><table><tr><td> </td><td><pre class="example">ncflint -i time,86 85.nc 87.nc 86.nc
-</pre></td></tr></table>
-
-<p>Say you have observational data covering January and April 1985 in two
-files named ‘<tt>85_01.nc</tt>’ and ‘<tt>85_04.nc</tt>’, respectively.
-Then you can estimate the values for February and March by interpolating
-the existing data as follows.
-Combine ‘<tt>85_01.nc</tt>’ and ‘<tt>85_04.nc</tt>’ in a 2:1 ratio to make
-‘<tt>85_02.nc</tt>’:  
-</p><table><tr><td> </td><td><pre class="example">ncflint -w 0.667 85_01.nc 85_04.nc 85_02.nc
-ncflint -w 0.667,0.333 85_01.nc 85_04.nc 85_02.nc
-</pre></td></tr></table>
-
-<p>Multiply ‘<tt>85.nc</tt>’ by 3 and by -2 and add them
-together to make ‘<tt>tst.nc</tt>’: 
-</p><table><tr><td> </td><td><pre class="example">ncflint -w 3,-2 85.nc 85.nc tst.nc
-</pre></td></tr></table>
-<a name="index-null-operation"></a>
-<p>This is an example of a null operation, so ‘<tt>tst.nc</tt>’ should be
-identical (within machine precision) to ‘<tt>85.nc</tt>’.
-</p>
-<p>Add ‘<tt>85.nc</tt>’ to ‘<tt>86.nc</tt>’ to obtain ‘<tt>85p86.nc</tt>’,
-then subtract ‘<tt>86.nc</tt>’ from ‘<tt>85.nc</tt>’ to obtain ‘<tt>85m86.nc</tt>’ 
-</p><table><tr><td> </td><td><pre class="example">ncflint -w 1,1 85.nc 86.nc 85p86.nc
-ncflint -w 1,-1 85.nc 86.nc 85m86.nc
-ncdiff 85.nc 86.nc 85m86.nc
-</pre></td></tr></table>
-<p>Thus <code>ncflint</code> can be used to mimic some <code>ncbo</code>
-operations. 
-<a name="index-broadcasting-variables-1"></a>
-However this is not a good idea in practice because <code>ncflint</code>
-does not broadcast (see section <a href="#ncbo-netCDF-Binary-Operator"><code>ncbo</code> netCDF Binary Operator</a>) conforming
-variables during arithmetic. 
-Thus the final two commands would produce identical results except that    
-<code>ncflint</code> would fail if any variables needed to be broadcast.
-</p>
-<a name="index-units-5"></a>
-<p>Rescale the dimensional units of the surface pressure <code>prs_sfc</code>
-from Pascals to hectopascals (millibars)
-</p><table><tr><td> </td><td><pre class="example">ncflint -C -v prs_sfc -w 0.01,0.0 in.nc in.nc out.nc
-ncatted -a units,prs_sfc,o,c,millibar out.nc
-</pre></td></tr></table>
-
-
-<a name="ncks"></a> <!-- http://nco.sf.net/nco.html#ncks --><hr size="6">
-<a name="ncks-netCDF-Kitchen-Sink"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncflint-netCDF-File-Interpolator" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Options-specific-to-ncks" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncks-netCDF-Kitchen-Sink-1"></a>
-<h2 class="section">4.7 <code>ncks</code> netCDF Kitchen Sink</h2>
-<a name="index-kitchen-sink"></a>
-<a name="index-printing-files-contents"></a>
-<a name="index-printing-variables"></a>
-<a name="index-ncks-3"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncks [-3] [-4] [-6] [-A] [-a] [-B] [-b <var>binary-file</var>] [-C] [-c] 
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [--fix_rec_dmn]
-[-F] [-H] [-h] [--hdr_pad <var>nbr</var>] [-L <var>dfl_lvl</var>] [-l <var>path</var>] [-M] [-m] [--mk_rec_dmn <var>dim</var>]
-[-O] [-o <var>output-file</var>] [-P] [-p <var>path</var>] [-Q] [-q] [-R] [-r] 
-[-s <var>format</var>] [-u] [-v <var>var</var>[,…]] [-X ...] [-x] 
-<var>input-file</var> [[<var>output-file</var>]]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<a name="index-ncextr"></a>
-<p><code>ncks</code> combines selected features of <code>ncdump</code>,
-<code>ncextr</code>, and the nccut and ncpaste specifications into one
-versatile utility. 
-<code>ncks</code> extracts a subset of the data from <var>input-file</var> and
-prints it as <acronym>ASCII</acronym> text to ‘<tt>stdout</tt>’, writes it in
-flat binary format to ‘<tt>binary-file</tt>’, and writes (or pastes) it in
-netCDF format to <var>output-file</var>.
-</p>
-<p><code>ncks</code> will print netCDF data in <acronym>ASCII</acronym> format to
-<code>stdout</code>, like <code>ncdump</code>, but with these differences: 
-<code>ncks</code> prints data in a tabular format intended to be easy to
-search for the data you want, one datum per screen line, with all
-dimension subscripts and coordinate values (if any) preceding the datum.
-Option ‘<samp>-s</samp>’ (or long options ‘<samp>--sng_fmt</samp>’ and ‘<samp>--string</samp>’)
-lets the user format the data using C-style format strings. 
-</p>
-<p>Options ‘<samp>-a</samp>’, ‘<samp>-F</samp>’ , ‘<samp>-H</samp>’, ‘<samp>-M</samp>’, ‘<samp>-m</samp>’,
-‘<samp>-P</samp>’, ‘<samp>-Q</samp>’, ‘<samp>-q</samp>’, ‘<samp>-s</samp>’, and ‘<samp>-u</samp>’ (and their
-long option counterparts) control the formatted appearance of the data.
-</p>
-<a name="index-global-attributes-6"></a>
-<a name="index-attributes_002c-global-6"></a>
-<p><code>ncks</code> extracts (and optionally creates a new netCDF file
-comprised of) only selected variables from the input file
-(similar to the old <code>ncextr</code> specification).
-Only variables and coordinates may be specifically included or
-excluded—all global attributes and any attribute associated with an
-extracted variable are copied to the screen and/or output netCDF file. 
-Options ‘<samp>-c</samp>’, ‘<samp>-C</samp>’, ‘<samp>-v</samp>’, and ‘<samp>-x</samp>’ (and their long 
-option synonyms) control which variables are extracted.
-</p>
-<p><code>ncks</code> extracts hyperslabs from the specified variables
-(<code>ncks</code> implements the original <code>nccut</code> specification). 
-Option ‘<samp>-d</samp>’ controls the hyperslab specification.
-Input dimensions that are not associated with any output variable do
-not appear in the output netCDF.
-This feature removes superfluous dimensions from netCDF files. 
-</p>
-<a name="index-appending-data-1"></a>
-<a name="index-merging-files-1"></a>
-<p><code>ncks</code> will append variables and attributes from the
-<var>input-file</var> to <var>output-file</var> if <var>output-file</var> is a
-pre-existing netCDF file whose relevant dimensions conform to dimension
-sizes of <var>input-file</var>. 
-The append features of <code>ncks</code> are intended to provide a
-rudimentary means of adding data from one netCDF file to another,
-conforming, netCDF file. 
-If naming conflicts exist between the two files, data in
-<var>output-file</var> is usually overwritten by the corresponding data from 
-<var>input-file</var>.  
-Thus, when appending, the user should backup <var>output-file</var> in case 
-valuable data are inadvertantly overwritten.
-</p>
-<p>If <var>output-file</var> exists, the user will be queried whether to
-<em>overwrite</em>, <em>append</em>, or <em>exit</em> the <code>ncks</code> call
-completely.  
-Choosing <em>overwrite</em> destroys the existing <var>output-file</var> and
-create an entirely new one from the output of the <code>ncks</code> call.  
-Append has differing effects depending on the uniqueness of the
-variables and attributes output by <code>ncks</code>: If a variable or
-attribute extracted from <var>input-file</var> does not have a name conflict
-with the members of <var>output-file</var> then it will be added to
-<var>output-file</var> without overwriting any of the existing contents of
-<var>output-file</var>.  
-In this case the relevant dimensions must agree (conform) between the
-two files; new dimensions are created in <var>output-file</var> as required. 
-<a name="index-global-attributes-7"></a>
-<a name="index-attributes_002c-global-7"></a>
-When a name conflict occurs, a global attribute from <var>input-file</var>
-will overwrite the corresponding global attribute from
-<var>output-file</var>.  
-If the name conflict occurs for a non-record variable, then the
-dimensions and type of the variable (and of its coordinate dimensions,
-if any) must agree (conform) in both files. 
-Then the variable values (and any coordinate dimension values)
-from <var>input-file</var> will overwrite the corresponding variable values
-(and coordinate dimension values, if any) in <var>output-file</var> 
-<a name="DOCF41" href="#FOOT41">(41)</a>.
-</p>
-<p>Since there can only be one record dimension in a file, the record
-dimension must have the same name (but not necessarily the same size) in 
-both files if a record dimension variable is to be appended. 
-If the record dimensions are of differing sizes, the record dimension of
-<var>output-file</var> will become the greater of the two record dimension
-sizes, the record variable from <var>input-file</var> will overwrite any
-counterpart in <var>output-file</var> and fill values will be written to any
-gaps left in the rest of the record variables (I think). 
-In all cases variable attributes in <var>output-file</var> are superseded by
-attributes of the same name from <var>input-file</var>, and left alone if
-there is no name conflict. 
-</p>
-<p>Some users may wish to avoid interactive <code>ncks</code> queries about
-whether to overwrite existing data.
-For example, batch scripts will fail if <code>ncks</code> does not receive 
-responses to its queries. 
-Options ‘<samp>-O</samp>’ and ‘<samp>-A</samp>’ are available to force overwriting
-existing files and variables, respectively. 
-</p>
-<hr size="6">
-<a name="Options-specific-to-ncks"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncks-netCDF-Kitchen-Sink" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncpdq-netCDF-Permute-Dimensions-Quickly" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncks-netCDF-Kitchen-Sink" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h3 class="unnumberedsubsec">Options specific to <code>ncks</code></h3>
-
-<p>The following list provides a short summary of the features unique to
-<code>ncks</code>.  
-Features common to many operators are described in 
-<a href="#Common-features">NCO Features</a>. 
-</p>
-<dl compact="compact">
-<dd>
-<a name="index-alphabetization"></a>
-<a name="index-sort-alphabetically"></a>
-<a name="index-_002da"></a>
-<a name="index-_002d_002dabc"></a>
-<a name="index-_002d_002dalphabetize"></a>
-</dd>
-<dt> ‘<samp>-a</samp>’</dt>
-<dd><p>Do not alphabetize extracted fields. 
-By default, the specified output variables are extracted, printed, and
-written to disk in alphabetical order.
-This tends to make long output lists easier to search for particular
-variables. 
-Specifying <code>-a</code> results in the variables being extracted, printed,
-and written to disk in the order in which they were saved in the input
-file.
-Thus <code>-a</code> retains the original ordering of the variables.
-Also ‘<samp>--abc</samp>’ and ‘<samp>--alphabetize</samp>’.
-</p>
-<a name="index-binary-format"></a>
-<a name="index-_002dB"></a>
-<a name="index-_002d_002dbnr"></a>
-<a name="index-_002d_002dbinary"></a>
-</dd>
-<dt> ‘<samp>-B ‘<tt>file</tt>’</samp>’</dt>
-<dd><p>Activate native machine binary output writing to the default binary
-file, ‘<tt>ncks.bnr</tt>’. 
-The <code>-B</code> switch is redundant when the <code>-b</code> ‘<tt>file</tt>’
-option is specified, and native binary output will be directed to the
-binary file ‘<tt>file</tt>’.
-Also ‘<samp>--bnr</samp>’ and ‘<samp>--binary</samp>’.
-Writing packed variables in binary format is not supported.
-</p>
-<a name="index-_002db-2"></a>
-<a name="index-_002d_002dfl_005fbnr"></a>
-</dd>
-<dt> ‘<samp>-b ‘<tt>file</tt>’</samp>’</dt>
-<dd><p>Activate native machine binary output writing to binary file
-‘<tt>file</tt>’.
-Also ‘<samp>--fl_bnr</samp>’ and ‘<samp>--binary-file</samp>’.
-Writing packed variables in binary format is not supported.
-</p>
-<a name="index-stride-4"></a>
-</dd>
-<dt> ‘<samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>’</dt>
-<dd><p>Add <em>stride</em> argument to hyperslabber. 
-For a complete description of the <var>stride</var> argument, See section <a href="#Stride">Stride</a>.
-</p>
-<a name="dmn_fix_mk"></a> <!-- http://nco.sf.net/nco.html#dmn_fix_mk -->
-<a name="fix_rec_dmn"></a> <!-- http://nco.sf.net/nco.html#fix_rec_dmn --><a name="index-record-dimension-8"></a>
-<a name="index-fixed-dimension"></a>
-<a name="index-_002d_002dfix_005frec_005fdmn"></a>
-<a name="index-_002d_002dno_005frec_005fdmn"></a>
-</dd>
-<dt> ‘<samp>--fix_rec_dmn</samp>’</dt>
-<dd><p>Change all record dimensions in the input file into fixed dimensions
-in the output file. 
-Also ‘<samp>--no_rec_dmn</samp>’.
-</p>
-<a name="dmn_rec_mk"></a> <!-- http://nco.sf.net/nco.html#dmn_rec_mk -->
-<a name="mk_rec_dmn"></a> <!-- http://nco.sf.net/nco.html#mk_rec_dmn --><a name="index-record-dimension-9"></a>
-<a name="index-fixed-dimension-1"></a>
-<a name="index-_002d_002dmk_005frec_005fdmn-dim"></a>
-</dd>
-<dt> ‘<samp>--mk_rec_dmn <var>dim</var></samp>’</dt>
-<dd><p>Change existing dimension <var>dim</var> to a record dimension in the output file.
-See <a href="#ncecat-netCDF-Ensemble-Concatenator"><code>ncecat</code> netCDF Ensemble Concatenator</a> and 
-<a href="#ncpdq-netCDF-Permute-Dimensions-Quickly"><code>ncpdq</code> netCDF Permute Dimensions Quickly</a> for other methods of
-changing variable dimensionality, including the record dimension. 
-</p>
-<a name="prn"></a> <!-- http://nco.sf.net/nco.html#prn --><a name="index-_002dH-1"></a>
-<a name="index-_002d_002ddata"></a>
-<a name="index-_002d_002dhieronymus"></a>
-</dd>
-<dt> ‘<samp>-H</samp>’ </dt>
-<dd><p>Print data to screen.
-Also activated using ‘<samp>--print</samp>’ or ‘<samp>--prn</samp>’.
-By default <code>ncks</code> prints all metadata and data to screen if
-no netCDF output file is specified.
-Use ‘<samp>-H</samp>’ to print data to screen if a netCDF output is specified,
-or to restrict printing to data (no metadata) when no netCDF output is 
-specified.
-Unless otherwise specified (with <code>-s</code>), each element of the data
-hyperslab prints on a separate line containing the names, indices,
-and, values, if any, of all of the variables dimensions.
-The dimension and variable indices refer to the location of the
-corresponding data element with respect to the variable as stored on
-disk (i.e., not the hyperslab).
-</p><table><tr><td> </td><td><pre class="example">% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0 
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1 
-lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2 
-...
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21 
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22 
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23 
-</pre></td></tr></table>
-<p>Printing the same variable with the ‘<samp>-F</samp>’ option shows the same
-variable indexed with Fortran conventions
-</p><table><tr><td> </td><td><pre class="example">% ncks -F -C -v three_dmn_var in.nc
-lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0 
-lon(2)=90 lev(1)=100 lat(1)=-90 three_dmn_var(2)=1 
-lon(3)=180 lev(1)=100 lat(1)=-90 three_dmn_var(3)=2 
-...
-</pre></td></tr></table>
-<p>Printing a hyperslab does not affect the variable or dimension indices
-since these indices are relative to the full variable (as stored in the
-input file), and the input file has not changed.
-However, if the hyperslab is saved to an output file and those values
-are printed, the indices will change:
-</p><table><tr><td> </td><td><pre class="example">% ncks -H -d lat,90.0 -d lev,1000.0 -v three_dmn_var in.nc out.nc
-...
-lat[1]=90 lev[2]=1000 lon[0]=0 three_dmn_var[20]=20 
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21 
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22 
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23 
-% ncks -C -v three_dmn_var out.nc
-lat[0]=90 lev[0]=1000 lon[0]=0 three_dmn_var[0]=20 
-lat[0]=90 lev[0]=1000 lon[1]=90 three_dmn_var[1]=21 
-lat[0]=90 lev[0]=1000 lon[2]=180 three_dmn_var[2]=22 
-lat[0]=90 lev[0]=1000 lon[3]=270 three_dmn_var[3]=23 
-</pre></td></tr></table>
-
-<a name="index-_002dM-2"></a>
-<a name="index-_002d_002dMtd"></a>
-<a name="index-_002d_002dMetadata"></a>
-<a name="index-metadata_002c-global-1"></a>
-</dd>
-<dt> ‘<samp>-M</samp>’</dt>
-<dd><p>Print to screen the global metadata describing the file.
-This includes file summary information and global attributes.
-Also ‘<samp>--Mtd</samp>’ and ‘<samp>--Metadata</samp>’.
-By default <code>ncks</code> prints global metadata to screen if no netCDF
-output file and no variable extraction list is specified (with ‘<samp>-v</samp>’).  
-Use ‘<samp>-M</samp>’ to print global metadata to screen if a netCDF output is 
-specified, or if a variable extraction list is specified (with ‘<samp>-v</samp>’). 
-</p>
-<p>The various combinations of printing switches can be confusing.
-In an attempt to anticipate what most users want to do, <code>ncks</code>
-uses context-sensitive defaults for printing.
-Our goal is to minimize the use of switches required to accomplish the
-common operations.
-We assume that users creating a new file or overwriting (e.g., with
-‘<samp>-O</samp>’) an existing file usually wish to copy all global and
-variable-specific attributes to the new file.
-In contrast, we assume that users appending (e.g., with ‘<samp>-A</samp>’ an
-explicit variable list from one file to another usually wish to copy
-only the variable-specific attributes to the output file.
-The switches ‘<samp>-H</samp>’, ‘<samp>-M</samp>’, and ‘<samp>-m</samp>’ switches are
-implemented as toggles which reverse the default behavior.
-The most confusing aspect of this is that ‘<samp>-M</samp>’ inhibits copying
-global metadata in overwrite mode and causes copying of global
-metadata in append mode.
-</p><table><tr><td> </td><td><pre class="example">ncks -O              in.nc out.nc # Copy   VAs and GAs
-ncks -O       -v one in.nc out.nc # Copy   VAs and GAs
-ncks -O -M    -v one in.nc out.nc # Copy   VAs not GAs
-ncks -O    -m -v one in.nc out.nc # Copy   GAs not VAs
-ncks -O -M -m -v one in.nc out.nc # Copy   only data (no atts)
-ncks -A              in.nc out.nc # Append VAs and GAs
-ncks -A       -v one in.nc out.nc # Append VAs not GAs
-ncks -A -M    -v one in.nc out.nc # Append VAs and GAs
-ncks -A    -m -v one in.nc out.nc # Append only data (no atts)
-ncks -A -M -m -v one in.nc out.nc # Append GAs not VAs
-</pre></td></tr></table>
-<p>where <code>VAs</code> and <code>GAs</code> denote variable and global attributes,
-respectively. 
-</p>
-<a name="index-ncdump-1"></a>
-<a name="index-_002dm"></a>
-<a name="index-_002d_002dmtd"></a>
-<a name="index-_002d_002dmetadata"></a>
-<a name="index-metadata"></a>
-</dd>
-<dt> ‘<samp>-m</samp>’</dt>
-<dd><p>Print variable metadata to screen (similar to <kbd>ncdump -h</kbd>). 
-This displays all metadata pertaining to each variable, one variable
-at a time.
-<a name="index-chunking-2"></a>
-<a name="index-compression-1"></a>
-<a name="index-deflation-2"></a>
-This includes information on the storage properties of the variable,
-such as whether it employs chunking, compression, or packing.
-Also activated using ‘<samp>--mtd</samp>’ and ‘<samp>--metadata</samp>’.
-The <code>ncks</code> default behavior is to print variable metadata to
-screen if no netCDF output file is specified.
-Use ‘<samp>-m</samp>’ to print variable metadata to screen if a netCDF output is 
-specified. 
-</p>
-<a name="index-_002dP"></a>
-<a name="index-_002d_002dprint"></a>
-<a name="index-_002d_002dprn"></a>
-</dd>
-<dt> ‘<samp>-P</samp>’ </dt>
-<dd><p>Print data, metadata, and units to screen.
-The ‘<samp>-P</samp>’ switch is a convenience abbreviation for 
-‘<samp>-C -H -M -m -u</samp>’.
-Also activated using ‘<samp>--print</samp>’ or ‘<samp>--prn</samp>’.
-This set of switches is useful for exploring file contents.
-</p>
-<a name="index-_002dQ"></a>
-</dd>
-<dt> ‘<samp>-Q</samp>’ </dt>
-<dd><p>Toggle printing of dimension indices and coordinate values when printing
-arrays. 
-Each variable’s name appears flush left in the output.
-This helps locate specific variables in lists with many variables and 
-different dimensions. 
-</p>
-<a name="index-_002dq"></a>
-<a name="index-_002d_002dquiet"></a>
-<a name="index-quiet"></a>
-</dd>
-<dt> ‘<samp>-q</samp>’ </dt>
-<dd><p>Turn off all printing to screen.
-This overrides the setting of all print-related switches, equivalent to
-<kbd>-H -M -m</kbd> when in single-file printing mode. 
-When invoked with <code>-R</code> (see section <a href="#Retaining-Retrieved-Files">Retaining Retrieved Files</a>), <code>ncks</code>
-automatically sets <code>-q</code>. 
-This allows <code>ncks</code> to retrieve remote files without
-automatically trying to print them.
-Also ‘<samp>--quiet</samp>’.
-</p>
-<a name="index-_002ds"></a>
-<a name="index-_002d_002dstring"></a>
-<a name="index-_002d_002dsng_005ffmt"></a>
-<a name="index-printf_0028_0029-1"></a>
-<a name="index-C-language-7"></a>
-</dd>
-<dt> ‘<samp>-s <var>format</var></samp>’</dt>
-<dd><p>String format for text output. 
-Accepts C language escape sequences and <code>printf()</code> formats. 
-Also ‘<samp>--string</samp>’  and ‘<samp>--sng_fmt</samp>’. 
-</p>
-<a name="index-_002du"></a>
-<a name="index-_002d_002dunits"></a>
-</dd>
-<dt> ‘<samp>-u</samp>’ </dt>
-<dd><p>Toggle the printing of a variable’s <code>units</code> attribute, if any, 
-with its values.
-Also ‘<samp>--units</samp>’.
-</p></dd>
-</dl>
-
-<a name="xmp_ncks"></a> <!-- http://nco.sf.net/nco.html#xmp_ncks --><p>EXAMPLES
-</p>
-<p>View all data in netCDF ‘<tt>in.nc</tt>’, printed with Fortran indexing
-conventions: 
-</p><table><tr><td> </td><td><pre class="example">ncks -F in.nc
-</pre></td></tr></table>
-
-<p>Copy the netCDF file ‘<tt>in.nc</tt>’ to file ‘<tt>out.nc</tt>’.
-</p><table><tr><td> </td><td><pre class="example">ncks in.nc out.nc
-</pre></td></tr></table>
-<p>Now the file ‘<tt>out.nc</tt>’ contains all the data from ‘<tt>in.nc</tt>’.
-There are, however, two differences between ‘<tt>in.nc</tt>’ and
-‘<tt>out.nc</tt>’.
-<a name="index-history-5"></a>
-First, the <code>history</code> global attribute (see section <a href="#History-Attribute">History Attribute</a>)
-will contain the command used to create ‘<tt>out.nc</tt>’.
-<a name="index-alphabetize-output"></a>
-<a name="index-sort-alphabetically-1"></a>
-<a name="index-_002da-1"></a>
-Second, the variables in ‘<tt>out.nc</tt>’ will be defined in alphabetical
-order.
-Of course the internal storage of variable in a netCDF file should be
-transparent to the user, but there are cases when alphabetizing a file 
-is useful (see description of <code>-a</code> switch).
-</p>
-<a name="xmp_att_glb_cpy"></a> <!-- http://nco.sf.net/nco.html#xmp_att_glb_cpy --><a name="index-global-attributes-8"></a>
-<a name="index-attributes_002c-global-8"></a>
-<a name="index-subsetting-3"></a>
-<a name="index-exclusion-1"></a>
-<a name="index-extraction-1"></a>
-<a name="index-_002dv-var-1"></a>
-<a name="index-_002d_002dvariable-var-1"></a>
-<a name="index-_002dx-1"></a>
-<a name="index-_002d_002dexclude-1"></a>
-<a name="index-_002d_002dxcl-1"></a>
-<p>Copy all global attributes (and no variables) from ‘<tt>in.nc</tt>’ to
-‘<tt>out.nc</tt>’: 
-</p><table><tr><td> </td><td><pre class="example">ncks -A -x ~/nco/data/in.nc ~/out.nc
-</pre></td></tr></table>
-<p>The ‘<samp>-x</samp>’ switch tells <acronym>NCO</acronym> to use the complement of the extraction
-list (see section <a href="#Subsetting-Variables">Subsetting Variables</a>). 
-Since no extraction list is explicitly specified (with ‘<samp>-v</samp>’),
-the default is to extract all variables.
-The complement of all variables is no variables.
-<a name="index-_002dA-2"></a>
-<a name="index-_002d_002dapn-2"></a>
-<a name="index-_002d_002dappend-2"></a>
-<a name="index-appending-to-files-2"></a>
-Without any variables to extract, the append (‘<samp>-A</samp>’) command
-(see section <a href="#Appending-Variables">Appending Variables</a>) has only to extract and copy
-(i.e., append) global attributes to the output file.
-</p>
-<a name="index-printf_0028_0029-2"></a>
-<a name="index-_005cn-_0028linefeed_0029"></a>
-<a name="index-_005ct-_0028horizontal-tab_0029"></a>
-<p>Print variable <code>three_dmn_var</code> from file ‘<tt>in.nc</tt>’ with
-default notations. 
-Next print <code>three_dmn_var</code> as an un-annotated text column.
-Then print <code>three_dmn_var</code> signed with very high precision.
-Finally, print <code>three_dmn_var</code> as a comma-separated list.
-</p><table><tr><td> </td><td><pre class="example">% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0 
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1 
-...
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23 
-% ncks -s '%f\n' -C -v three_dmn_var in.nc
-0.000000
-1.000000
-...
-23.000000
-% ncks -s '%+16.10f\n' -C -v three_dmn_var in.nc
-   +0.0000000000
-   +1.0000000000
-...
-  +23.0000000000
-% ncks -s '%f, ' -C -v three_dmn_var in.nc
-0.000000, 1.000000, ..., 23.000000,
-</pre></td></tr></table>
-<p>The second and third options are useful when pasting data into text
-files like reports or papers.  
-See section <a href="#ncatted-netCDF-Attribute-Editor"><code>ncatted</code> netCDF Attribute Editor</a>, for more details on string
-formatting and special characters. 
-</p>
-<p>One dimensional arrays of characters stored as netCDF variables are 
-automatically printed as strings, whether or not they are
-NUL-terminated, e.g.,
-</p><table><tr><td> </td><td><pre class="example">ncks -v fl_nm in.nc
-</pre></td></tr></table>
-<p>The <code>%c</code> formatting code is useful for printing 
-multidimensional arrays of characters representing fixed length strings
-</p><table><tr><td> </td><td><pre class="example">ncks -s '%c' -v fl_nm_arr in.nc
-</pre></td></tr></table>
-<a name="index-core-dump-2"></a>
-<p>Using the <code>%s</code> format code on strings which are not NUL-terminated 
-(and thus not technically strings) is likely to result in a core dump.
-</p>
-<a name="index-subsetting-4"></a>
-<a name="index-exclusion-2"></a>
-<a name="index-extraction-2"></a>
-<p>Create netCDF ‘<tt>out.nc</tt>’ containing all variables, and any associated 
-coordinates, except variable <code>time</code>, from netCDF ‘<tt>in.nc</tt>’:
-</p><table><tr><td> </td><td><pre class="example">ncks -x -v time in.nc out.nc
-</pre></td></tr></table>
-
-<p>Extract variables <code>time</code> and <code>pressure</code> from netCDF
-‘<tt>in.nc</tt>’.  
-If ‘<tt>out.nc</tt>’ does not exist it will be created.
-Otherwise the you will be prompted whether to append to or to
-overwrite ‘<tt>out.nc</tt>’: 
-</p><table><tr><td> </td><td><pre class="example">ncks -v time,pressure in.nc out.nc
-ncks -C -v time,pressure in.nc out.nc
-</pre></td></tr></table>
-<p>The first version of the command creates an ‘<tt>out.nc</tt>’ which contains
-<code>time</code>, <code>pressure</code>, and any coordinate variables associated
-with <var>pressure</var>. 
-The ‘<tt>out.nc</tt>’ from the second version is guaranteed to contain only 
-two variables <code>time</code> and <code>pressure</code>.  
-</p>
-<p>Create netCDF ‘<tt>out.nc</tt>’ containing all variables from file
-‘<tt>in.nc</tt>’.  
-Restrict the dimensions of these variables to a hyperslab. 
-Print (with <code>-H</code>) the hyperslabs to the screen for good measure.  
-The specified hyperslab is: the fifth value in dimension <code>time</code>;
-the 
-half-open range <em><var>lat</var> > 0.</em> in coordinate <code>lat</code>; the
-half-open range <em><var>lon</var> < 330.</em> in coordinate <code>lon</code>; the
-closed interval <em>0.3 < <var>band</var> < 0.5</em> in coordinate <code>band</code>;
-and cross-section closest to 1000. in coordinate <code>lev</code>.  
-Note that limits applied to coordinate values are specified with a
-decimal point, and limits applied to dimension indices do not have a 
-decimal point See section <a href="#Hyperslabs">Hyperslabs</a>.
-</p><table><tr><td> </td><td><pre class="example">ncks -H -d time,5 -d lat,,0.0 -d lon,330.0, -d band,0.3,0.5 
--d lev,1000.0 in.nc out.nc 
-</pre></td></tr></table>
-
-<a name="index-wrapped-coordinates-3"></a>
-<p>Assume the domain of the monotonically increasing longitude coordinate
-<code>lon</code> is <em>0 < <var>lon</var> < 360</em>. 
-Here, <code>lon</code> is an example of a wrapped coordinate.
-<code>ncks</code> will extract a hyperslab which crosses the Greenwich
-meridian simply by specifying the westernmost longitude as <var>min</var> and 
-the easternmost longitude as <var>max</var>, as follows:
-</p><table><tr><td> </td><td><pre class="example">ncks -d lon,260.0,45.0 in.nc out.nc
-</pre></td></tr></table>
-<p>For more details See section <a href="#Wrapped-Coordinates">Wrapped Coordinates</a>.
-</p>
-
-<a name="ncpdq"></a> <!-- http://nco.sf.net/nco.html#ncpdq -->
-<a name="ncpack"></a> <!-- http://nco.sf.net/nco.html#ncpack -->
-<a name="ncunpack"></a> <!-- http://nco.sf.net/nco.html#ncunpack --><hr size="6">
-<a name="ncpdq-netCDF-Permute-Dimensions-Quickly"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Options-specific-to-ncks" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Packing-and-Unpacking-Functions" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncpdq-netCDF-Permute-Dimensions-Quickly-1"></a>
-<h2 class="section">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</h2>
-<a name="index-ncpdq-4"></a>
-<a name="index-ncpack"></a>
-<a name="index-ncunpack"></a>
-<a name="index-reshape-variables"></a>
-<a name="index-permute-dimensions"></a>
-<a name="index-reverse-dimensions"></a>
-<a name="index-re_002dorder-dimensions"></a>
-<a name="index-re_002ddimension"></a>
-<a name="index-packing-4"></a>
-<a name="index-unpacking-3"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncpdq [-3] [-4] [-6] [-A] [-a [-]<var>dim</var>[,…]] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>] 
-[-M <var>pck_map</var>] [-O] [-o <var>output-file</var>] [-P <var>pck_plc</var>] [-p <var>path</var>] 
-[-R] [-r] [-t <var>thr_nbr</var>] [-U] [-v <var>var</var>[,…]] [-X ...] [-x]
-<var>input-file</var> [<var>output-file</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncpdq</code> performs one of two distinct functions, packing or
-dimension permutation, but not both, when invoked.
-<code>ncpdq</code> is optimized to perform these actions in a parallel
-fashion with a minimum of time and memory.
-The <em>pdq</em> may stand for “Permute Dimensions Quickly”, 
-“Pack Data Quietly”, “Pillory Dan Quayle”, or other silly uses.
-</p>
-<a name="index-add_005foffset-3"></a>
-<a name="index-scale_005ffactor-2"></a>
-<a name="index-ncap2-4"></a>
-<a name="index-packing-policy"></a>
-<hr size="6">
-<a name="Packing-and-Unpacking-Functions"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncpdq-netCDF-Permute-Dimensions-Quickly" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Dimension-Permutation" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncpdq-netCDF-Permute-Dimensions-Quickly" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h3 class="unnumberedsubsec">Packing and Unpacking Functions</h3>
-<p>The <code>ncpdq</code> packing (and unpacking) algorithms are described 
-in <a href="#Methods-and-functions">Methods and functions</a>, and are also implemented in
-<code>ncap2</code>. 
-<code>ncpdq</code> extends the functionality of these algorithms by 
-providing high level control of the <em>packing policy</em> so that
-users can consistently pack (and unpack) entire files with one command. 
-<a name="index-pck_005fplc"></a>
-<a name="index-_002dP-pck_005fplc"></a>
-<a name="index-_002d_002dpck_005fplc-pck_005fplc"></a>
-<a name="index-_002d_002dpack_005fpolicy-pck_005fplc"></a>
-The user specifies the desired packing policy with the ‘<samp>-P</samp>’ switch
-(or its long option equivalents, ‘<samp>--pck_plc</samp>’ and
-‘<samp>--pack_policy</samp>’) and its <var>pck_plc</var> argument.
-Four packing policies are currently implemented:<br>   
-</p><dl compact="compact">
-<dt> <em>Packing (and Re-Packing) Variables [<em>default</em>]</em></dt>
-<dd><p>Definition: Pack unpacked variables, re-pack packed variables<br>
-Alternate invocation: <code>ncpack</code><br>
-<var>pck_plc</var> key values: ‘<samp>all_new</samp>’, ‘<samp>pck_all_new_att</samp>’<br>
-</p></dd>
-<dt> <em>Packing (and not Re-Packing) Variables</em></dt>
-<dd><p>Definition: Pack unpacked variables, copy packed variables<br>
-Alternate invocation: none<br>
-<var>pck_plc</var> key values: ‘<samp>all_xst</samp>’, ‘<samp>pck_all_xst_att</samp>’<br>
-</p></dd>
-<dt> <em>Re-Packing Variables</em></dt>
-<dd><p>Definition: Re-pack packed variables, copy unpacked variables<br>
-Alternate invocation: none<br>
-<var>pck_plc</var> key values: ‘<samp>xst_new</samp>’, ‘<samp>pck_xst_new_att</samp>’<br>
-</p></dd>
-<dt> <em>Unpacking</em></dt>
-<dd><p>Definition: Unpack packed variables, copy unpacked variables<br>
-Alternate invocation: <code>ncunpack</code><br>
-<var>pck_plc</var> key values: ‘<samp>upk</samp>’, ‘<samp>unpack</samp>’, ‘<samp>pck_upk</samp>’<br>
-</p></dd>
-</dl>
-<p>Equivalent key values are fully interchangeable.
-Multiple equivalent options are provided to satisfy disparate needs
-and tastes of <acronym>NCO</acronym> users working with scripts and from the
-command line.
-</p>
-<p>Regardless of the packing policy selected, <code>ncpdq</code> 
-no longer (as of <acronym>NCO</acronym> version 4.0.4 in October, 2010)
-packs coordinate variables, or the special variables, weights, 
-and other grid properties described in <a href="#CF-Conventions"><acronym>CF</acronym> Conventions</a>.
-Prior <code>ncpdq</code> versions treated coordinate variables and
-grid properties no differently from other variables.
-However, coordinate variables are one-dimensional, so packing saves
-little space on large files, and the resulting files are difficult for
-humans to read. 
-Concurrently, Gaussian and area weights and other grid properties are
-often used to derive fields in re-inflated (unpacked) files, so packing
-such grid properties causes a considerable loss of precision in 
-downstream data processing.
-If users express strong wishes to pack grid properties, we will
-implement new packing policies.
-An immediate workaround for those needing to pack grid properties
-now, is to use the <code>ncap2</code> packing functions or to rename the
-grid properties prior to calling <code>ncpdq</code>. 
-We welcome your feedback. 
-</p>
-<p>To reduce required memorization of these complex policy switches, 
-<code>ncpdq</code> may also be invoked via a synonym or with switches
-that imply a particular policy.
-<code>ncpack</code> is a synonym for <code>ncpdq</code> and behaves the same 
-in all respects.
-Both <code>ncpdq</code> and <code>ncpack</code> assume a default packing
-policy request of ‘<samp>all_new</samp>’.
-Hence <code>ncpack</code> may be invoked without any ‘<samp>-P</samp>’ switch,
-unlike <code>ncpdq</code>.
-Similarly, <code>ncunpack</code> is a synonym for <code>ncpdq</code> 
-except that <code>ncpack</code> implicitly assumes a request to unpack, 
-i.e., ‘<samp>-P pck_upk</samp>’.
-<a name="index-_002dU"></a>
-<a name="index-_002d_002dupk"></a>
-<a name="index-_002d_002dunpack"></a>
-Finally, the <code>ncpdq</code> ‘<samp>-U</samp>’ switch (or its long option
-equivalents, ‘<samp>--upk</samp>’ and ‘<samp>--unpack</samp>’) requires no argument.
-It simply requests unpacking.
-</p>
-<p>Given the menagerie of synonyms, equivalent options, and implied
-options, a short list of some equivalent commands is appropriate.
-The following commands are equivalent for packing:
-<code>ncpdq -P all_new</code>, <code>ncpdq --pck_plc=all_new</code>, and
-<code>ncpack</code>.
-The following commands are equivalent for unpacking:
-<code>ncpdq -P upk</code>, <code>ncpdq -U</code>, <code>ncpdq --pck_plc=unpack</code>, 
-and <code>ncunpack</code>.
-Equivalent commands for other packing policies, e.g., ‘<samp>all_xst</samp>’, 
-follow by analogy. 
-<a name="index-alias-1"></a>
-<a name="index-ln-_002ds-1"></a>
-<a name="index-symbolic-links-4"></a>
-Note that <code>ncpdq</code> synonyms are subject to the same constraints 
-and recommendations discussed in the secion on <code>ncbo</code> synonyms
-(see section <a href="#ncbo-netCDF-Binary-Operator"><code>ncbo</code> netCDF Binary Operator</a>).
-That is, symbolic links must exist from the synonym to <code>ncpdq</code>,
-or else the user must define an <code>alias</code>.
-</p>
-<a name="index-packing-map"></a>
-<a name="index-pck_005fmap"></a>
-<a name="index-_002dM-pck_005fmap"></a>
-<a name="index-_002d_002dpck_005fmap-pck_005fmap"></a>
-<a name="index-_002d_002dmap-pck_005fmap"></a>
-<p>The <code>ncpdq</code> packing algorithms must know to which type
-particular types of input variables are to be packed.
-The correspondence between the input variable type and the output,
-packed type, is called the <em>packing map</em>.
-The user specifies the desired packing map with the ‘<samp>-M</samp>’ switch
-(or its long option equivalents, ‘<samp>--pck_map</samp>’ and
-‘<samp>--map</samp>’) and its <var>pck_map</var> argument.
-Five packing maps are currently implemented:<br>
-<a name="index-hgh_005fsht"></a>
-<a name="index-hgh_005fbyt"></a>
-<a name="index-flt_005fsht"></a>
-<a name="index-flt_005fbyt"></a>
-<a name="index-nxt_005flsr"></a>
-<a name="index-NC_005fDOUBLE-1"></a>
-<a name="index-NC_005fFLOAT"></a>
-<a name="index-NC_005fINT"></a>
-<a name="index-NC_005fSHORT"></a>
-<a name="index-NC_005fCHAR-2"></a>
-<a name="index-NC_005fBYTE-2"></a>
-</p><dl compact="compact">
-<dt> <em>Pack Floating Precisions to <code>NC_SHORT</code> [<em>default</em>]</em></dt>
-<dd><p>Definition: Pack floating precision types to <code>NC_SHORT</code><br>
-Map: Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>] to <code>NC_SHORT</code><br>
-Types copied instead of packed: [<code>NC_INT</code>,<code>NC_SHORT</code>,<code>NC_CHAR</code>,<code>NC_BYTE</code>]<br>
-<var>pck_map</var> key values: ‘<samp>flt_sht</samp>’, ‘<samp>pck_map_flt_sht</samp>’<br>
-</p></dd>
-<dt> <em>Pack Floating Precisions to <code>NC_BYTE</code></em></dt>
-<dd><p>Definition: Pack floating precision types to <code>NC_BYTE</code><br>
-Map: Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>] to <code>NC_BYTE</code><br> 
-Types copied instead of packed: [<code>NC_INT</code>,<code>NC_SHORT</code>,<code>NC_CHAR</code>,<code>NC_BYTE</code>]<br>
-<var>pck_map</var> key values: ‘<samp>flt_byt</samp>’, ‘<samp>pck_map_flt_byt</samp>’<br>
-</p></dd>
-<dt> <em>Pack Higher Precisions to <code>NC_SHORT</code></em></dt>
-<dd><p>Definition: Pack higher precision types to <code>NC_SHORT</code><br>
-Map: 
-Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>,<code>NC_INT</code>] to <code>NC_SHORT</code><br>
-Types copied instead of packed: [<code>NC_SHORT</code>,<code>NC_CHAR</code>,<code>NC_BYTE</code>]<br>
-<var>pck_map</var> key values: ‘<samp>hgh_sht</samp>’, ‘<samp>pck_map_hgh_sht</samp>’<br>
-</p></dd>
-<dt> <em>Pack Higher Precisions to <code>NC_BYTE</code></em></dt>
-<dd><p>Definition: Pack higher precision types to <code>NC_BYTE</code><br>
-Map: 
-Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>,<code>NC_INT</code>,<code>NC_SHORT</code>] to <code>NC_BYTE</code><br>
-Types copied instead of packed: [<code>NC_CHAR</code>,<code>NC_BYTE</code>]<br>
-<var>pck_map</var> key values: ‘<samp>hgh_byt</samp>’, ‘<samp>pck_map_hgh_byt</samp>’<br>
-</p></dd>
-<dt> <em>Pack to Next Lesser Precision</em></dt>
-<dd><p>Definition: Pack each type to type of next lesser size<br>
-Map: Pack <code>NC_DOUBLE</code> to <code>NC_INT</code>. 
-Pack [<code>NC_FLOAT</code>,<code>NC_INT</code>] to <code>NC_SHORT</code>.
-Pack <code>NC_SHORT</code> to <code>NC_BYTE</code>.<br>
-Types copied instead of packed: [<code>NC_CHAR</code>,<code>NC_BYTE</code>]<br>
-<var>pck_map</var> key values: ‘<samp>nxt_lsr</samp>’, ‘<samp>pck_map_nxt_lsr</samp>’<br>
-</p></dd>
-</dl>
-<p>The default ‘<samp>all_new</samp>’ packing policy with the default
-‘<samp>flt_sht</samp>’ packing map reduces the typical <code>NC_FLOAT</code>-dominated
-file size by about 50%.
-‘<samp>flt_byt</samp>’ packing reduces an <code>NC_DOUBLE</code>-dominated file by
-about 87%. 
-</p>
-<a name="index-_005fFillValue-4"></a>
-<a name="index-_005fFillValue-5"></a>
-<a name="index-NUL-1"></a>
-<p>The netCDF packing algorithm (see section <a href="#Methods-and-functions">Methods and functions</a>) is
-lossy—once packed, the exact original data cannot be recovered without
-a full backup. 
-Hence users should be aware of some packing caveats:
-First, the interaction of packing and data equal to the
-<var>_FillValue</var> is complex.
-Test the <code>_FillValue</code> behavior by performing a pack/unpack cycle 
-to ensure data that are missing <em>stay</em> missing and data that are
-not misssing do not join the Air National Guard and go missing.
-This may lead you to elect a new <var>_FillValue</var>.
-Second, <code>ncpdq</code> actually allows packing into <code>NC_CHAR</code> (with,
-e.g., ‘<samp>flt_chr</samp>’).
-However, the intrinsic conversion of <code>signed char</code> to higher
-precision types is tricky for values equal to zero, i.e., for
-<code>NUL</code>.  
-Hence packing to <code>NC_CHAR</code> is not documented or advertised.  
-Pack into <code>NC_BYTE</code> (with, e.g., ‘<samp>flt_byt</samp>’) instead.
-</p>
-<a name="rvr"></a> <!-- http://nco.sf.net/nco.html#rvr --><hr size="6">
-<a name="Dimension-Permutation"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Packing-and-Unpacking-Functions" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncra-netCDF-Record-Averager" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncpdq-netCDF-Permute-Dimensions-Quickly" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h3 class="unnumberedsubsec">Dimension Permutation</h3>
-<p><code>ncpdq</code> re-shapes variables in <var>input-file</var> by re-ordering
-and/or reversing dimensions specified in the dimension list.
-The dimension list is a whitespace-free, comma separated list of
-dimension names, optionally prefixed by negative signs, that follows the 
-‘<samp>-a</samp>’ (or long options ‘<samp>--arrange</samp>’, ‘<samp>--permute</samp>’,
-‘<samp>--re-order</samp>’, or ‘<samp>--rdr</samp>’) switch.  
-To re-order variables by a subset of their dimensions, specify
-these dimensions in a comma-separated list following ‘<samp>-a</samp>’, e.g., 
-‘<samp>-a lon,lat</samp>’. 
-To reverse a dimension, prefix its name with a negative sign in the
-dimension list, e.g., ‘<samp>-a -lat</samp>’. 
-Re-ordering and reversal may be performed simultaneously, e.g.,
-‘<samp>-a lon,-lat,time,-lev</samp>’. 
-</p>
-<a name="index-record-dimension-10"></a>
-<p>Users may specify any permutation of dimensions, including
-permutations which change the record dimension identity.
-The record dimension is re-ordered like any other dimension.
-<a name="index-concatenation-2"></a>
-<a name="index-record-dimension-11"></a>
-This unique <code>ncpdq</code> capability makes it possible to concatenate
-files along any dimension.
-See <a href="#Concatenation">Concatenators <code>ncrcat</code> and <code>ncecat</code></a> for a detailed example.
-<a name="index-record-variable-1"></a>
-The record dimension is always the most slowly varying dimension in a
-record variable (see section <a href="#C-and-Fortran-Index-Conventions">C and Fortran Index conventions</a>).
-The specified re-ordering fails if it requires creating more than
-one record dimension amongst all the output variables
-<a name="DOCF42" href="#FOOT42">(42)</a>.
-</p>
-<p>Two special cases of dimension re-ordering and reversal deserve special
-mention. 
-First, it may be desirable to completely reverse the storage order of a
-variable. 
-To do this, include all the variable’s dimensions in the dimension
-re-order list in their original order, and prefix each dimension name
-with the negative sign.  
-<a name="index-transpose-1"></a>
-Second, it may useful to transpose a variable’s storage order, e.g.,
-from C to Fortran data storage order 
-(see section <a href="#C-and-Fortran-Index-Conventions">C and Fortran Index conventions</a>).
-To do this, include all the variable’s dimensions in the dimension
-re-order list in reversed order.
-Explicit examples of these two techniques appear below.
-</p>
-
-
-<a name="xmp_ncpdq"></a> <!-- http://nco.sf.net/nco.html#xmp_ncpdq --><p>EXAMPLES
-</p>
-<p>Pack and unpack all variables in file ‘<tt>in.nc</tt>’ and store the results
-in ‘<tt>out.nc</tt>’:  
-</p><table><tr><td> </td><td><pre class="example">ncpdq in.nc out.nc # Same as ncpack in.nc out.nc
-ncpdq -P all_new -M flt_sht in.nc out.nc # Defaults
-ncpdq -P all_xst in.nc out.nc
-ncpdq -P upk in.nc out.nc # Same as ncunpack in.nc out.nc
-ncpdq -U in.nc out.nc # Same as ncunpack in.nc out.nc
-</pre></td></tr></table>
-<p>The first two commands pack any unpacked variable in the input file.
-They also unpack and then re-pack every packed variable.
-The third command only packs unpacked variables in the input file.
-If a variable is already packed, the third command copies it unchanged
-to the output file. 
-The fourth and fifth commands unpack any packed variables.
-If a variable is not packed, the third command copies it unchanged.
-</p>
-<p>The previous examples all utilized the default packing map.
-Suppose you wish to archive all data that are currently unpacked 
-into a form which only preserves 256 distinct values.
-Then you could specify the packing map <var>pck_map</var> as ‘<samp>hgh_byt</samp>’
-and the packing policy <var>pck_plc</var> as ‘<samp>all_xst</samp>’:
-</p><table><tr><td> </td><td><pre class="example">ncpdq -P all_xst -M hgh_byt in.nc out.nc
-</pre></td></tr></table>
-<a name="index-appending-variables-1"></a>
-<a name="index-_002dA-3"></a>
-<a name="index-_002dv"></a>
-<p>Many different packing maps may be used to construct a given file 
-by performing the packing on subsets of variables (e.g., with ‘<samp>-v</samp>’) 
-and using the append feature with ‘<samp>-A</samp>’ (see section <a href="#Appending-Variables">Appending Variables</a>).
-</p>
-<p>Re-order file ‘<tt>in.nc</tt>’ so that the dimension <code>lon</code> always
-precedes the dimension <code>lat</code> and store the results in
-‘<tt>out.nc</tt>’:  
-</p><table><tr><td> </td><td><pre class="example">ncpdq -a lon,lat in.nc out.nc
-ncpdq -v three_dmn_var -a lon,lat in.nc out.nc
-</pre></td></tr></table>
-<p>The first command re-orders every variable in the input file.
-The second command extracts and re-orders only the variable
-<code>three_dmn_var</code>. 
-</p>
-<a name="index-reverse-dimensions-1"></a>
-<p>Suppose the dimension <code>lat</code> represents latitude and monotonically 
-increases increases from south to north. 
-Reversing the <code>lat</code> dimension means re-ordering the data so that
-latitude values decrease monotonically from north to south.
-Accomplish this with
-</p><table><tr><td> </td><td><pre class="example">% ncpdq -a -lat in.nc out.nc
-% ncks -C -v lat in.nc
-lat[0]=-90
-lat[1]=90
-% ncks -C -v lat out.nc
-lat[0]=90
-lat[1]=-90
-</pre></td></tr></table>
-<p>This operation reversed the latitude dimension of all variables.
-Whitespace immediately preceding the negative sign that specifies
-dimension reversal may be dangerous.
-<a name="index-long-options-1"></a>
-<a name="index-quotes-3"></a>
-Quotes and long options can help protect negative signs that should
-indicate dimension reversal from being interpreted by the shell as
-dashes that indicate new command line switches.
-</p><table><tr><td> </td><td><pre class="example">ncpdq -a -lat in.nc out.nc # Dangerous? Whitespace before "-lat"
-ncpdq -a '-lat' in.nc out.nc # OK. Quotes protect "-" in "-lat"
-ncpdq -a lon,-lat in.nc out.nc # OK. No whitespace before "-"
-ncpdq --rdr=-lat in.nc out.nc # Preferred. Uses "=" not whitespace
-</pre></td></tr></table>
-
-<a name="index-reverse-dimensions-2"></a>
-<p>To create the mathematical transpose of a variable, place all its
-dimensions in the dimension re-order list in reversed order.
-This example creates the transpose of <code>three_dmn_var</code>: 
-</p><table><tr><td> </td><td><pre class="example">% ncpdq -a lon,lev,lat -v three_dmn_var in.nc out.nc
-% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0 
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1 
-lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2 
-...
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21 
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22 
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23 
-% ncks -C -v three_dmn_var out.nc
-lon[0]=0 lev[0]=100 lat[0]=-90 three_dmn_var[0]=0
-lon[0]=0 lev[0]=100 lat[1]=90 three_dmn_var[1]=12
-lon[0]=0 lev[1]=500 lat[0]=-90 three_dmn_var[2]=4
-...
-lon[3]=270 lev[1]=500 lat[1]=90 three_dmn_var[21]=19
-lon[3]=270 lev[2]=1000 lat[0]=-90 three_dmn_var[22]=11
-lon[3]=270 lev[2]=1000 lat[1]=90 three_dmn_var[23]=23
-</pre></td></tr></table>
-
-<a name="index-reverse-data"></a>
-<p>To completely reverse the storage order of a variable, include
-all its dimensions in the re-order list, each prefixed by a negative
-sign. 
-This example reverses the storage order of <code>three_dmn_var</code>: 
-</p><table><tr><td> </td><td><pre class="example">% ncpdq -a -lat,-lev,-lon -v three_dmn_var in.nc out.nc
-% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0 
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1 
-lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2 
-...
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21 
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22 
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23 
-% ncks -C -v three_dmn_var out.nc
-lat[0]=90 lev[0]=1000 lon[0]=270 three_dmn_var[0]=23
-lat[0]=90 lev[0]=1000 lon[1]=180 three_dmn_var[1]=22
-lat[0]=90 lev[0]=1000 lon[2]=90 three_dmn_var[2]=21
-...
-lat[1]=-90 lev[2]=100 lon[1]=180 three_dmn_var[21]=2
-lat[1]=-90 lev[2]=100 lon[2]=90 three_dmn_var[22]=1
-lat[1]=-90 lev[2]=100 lon[3]=0 three_dmn_var[23]=0
-</pre></td></tr></table>
-
-<a name="dmn_rcd_mk"></a> <!-- http://nco.sf.net/nco.html#dmn_rcd_mk --><p>Creating a record dimension named, e.g., <code>time</code>, in a file which
-has no existing record dimension is simple with <code>ncecat</code>:
-</p><table><tr><td> </td><td><pre class="example">ncecat -O -u time in.nc out.nc # Create degenerate record dimension named "time"
-</pre></td></tr></table>
-
-<a name="index-record-dimension-12"></a>
-<p>Now consider a file with all dimensions, including <code>time</code>, fixed
-(non-record).
-Suppose the user wishes to convert <code>time</code> from a fixed dimension to  
-a record dimension. 
-This may be useful, for example, when the user wishes to append
-additional time slices to the data.
-As of <acronym>NCO</acronym> version 4.0.1 (April, 2010) the preferred method for
-doing this is with <code>ncks</code>:
-</p><table><tr><td> </td><td><pre class="example">ncks -O --mk_rec_dmn time in.nc out.nc # Change "time" to record dimension
-</pre></td></tr></table>
-
-<p>Prior to 4.0.1, the procedure to change an existing fixed dimension into
-a record dimension required three separate commands,
-<code>ncecat</code> followed by <code>ncpdq</code>, and then <code>ncwa</code>.
-It is still instructive to present the original procedure, as it shows
-how multiple operators can achieve the same ends by different means:
-<a name="index-degenerate-dimension-5"></a>
-</p><table><tr><td> </td><td><pre class="example">ncecat -O in.nc out.nc # Add degenerate record dimension named "record"
-ncpdq -O -a time,record out.nc out.nc # Switch "record" and "time"
-ncwa -O -a record out.nc out.nc # Remove (degenerate) "record"
-</pre></td></tr></table>
-<p>The first step creates a degenerate (size equals one) record dimension
-named (by default) <code>record</code>. 
-The second step swaps the ordering of the dimensions named <code>time</code>
-and <code>record</code>.
-Since <code>time</code> now occupies the position of the first (least rapidly
-varying) dimension, it becomes the record dimension.
-The dimension named <code>record</code> is no longer a record dimension.
-The third step averages over this degenerate <code>record</code> dimension.
-Averaging over a degenerate dimension does not alter the data.
-The ordering of other dimensions in the file (<code>lat</code>, <code>lon</code>,
-etc.) is immaterial to this procedure. 
-See <a href="#ncecat-netCDF-Ensemble-Concatenator"><code>ncecat</code> netCDF Ensemble Concatenator</a> and 
-<a href="#ncks-netCDF-Kitchen-Sink"><code>ncks</code> netCDF Kitchen Sink</a> for other methods of
-changing variable dimensionality, including the record dimension. 
-</p>
-
-<a name="ncra"></a> <!-- http://nco.sf.net/nco.html#ncra --><hr size="6">
-<a name="ncra-netCDF-Record-Averager"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Dimension-Permutation" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncrcat-netCDF-Record-Concatenator" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncra-netCDF-Record-Averager-1"></a>
-<h2 class="section">4.9 <code>ncra</code> netCDF Record Averager</h2>
-<a name="index-averaging-data-2"></a>
-<a name="index-record-average"></a>
-<a name="index-record-dimension-13"></a>
-<a name="index-running-average"></a>
-<a name="index-ncra-3"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncra [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>] 
-[-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,…]] [-X ...] [-x] [-y <var>op_typ</var>]
-[<var>input-files</var>] [<var>output-file</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncra</code> averages record variables across an arbitrary number of 
-<var>input-files</var>.
-<a name="index-degenerate-dimension-6"></a>
-<a name="index-record-dimension-14"></a>
-The record dimension is, by default, retained as a degenerate 
-(size 1) dimension in the output variables.
-See section <a href="#Averaging-vs_002e-Concatenating">Averagers vs. Concatenators</a>, for a description of the
-distinctions between the various averagers and concatenators. 
-<a name="index-multi_002dfile-operators-5"></a>
-<a name="index-standard-input-3"></a>
-<a name="index-stdin-4"></a>
-As a multi-file operator, <code>ncra</code> will read the list of
-<var>input-files</var> from <code>stdin</code> if they are not specified 
-as positional arguments on the command line 
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-</p>
-<p>Input files may vary in size, but each must have a record dimension.
-The record coordinate, if any, should be monotonic (or else non-fatal
-warnings may be generated). 
-<a name="index-hyperslab-4"></a>
-Hyperslabs of the record dimension which include more than one file 
-work correctly.
-<a name="index-stride-5"></a>
-<code>ncra</code> supports the <var>stride</var> argument to the ‘<samp>-d</samp>’
-hyperslab option (see section <a href="#Hyperslabs">Hyperslabs</a>) for the record dimension only,
-<var>stride</var> is not supported for non-record dimensions.
-</p>
-<p><code>ncra</code> weights each record (e.g., time slice) in the
-<var>input-files</var> equally.
-<code>ncra</code> does not attempt to see if, say, the <code>time</code>
-coordinate is irregularly spaced and thus would require a weighted
-average in order to be a true time average.
-<a name="index-operation-types-2"></a>
-<code>ncra</code> <em>always averages</em> coordinate variables regardless of 
-the arithmetic operation type performed on the non-coordinate variables. 
-(see section <a href="#Operation-Types">Operation Types</a>). 
-</p>
-<a name="xmp_ncra"></a> <!-- http://nco.sf.net/nco.html#xmp_ncra --><p>EXAMPLES
-</p>
-<p>Average files ‘<tt>85.nc</tt>’, ‘<tt>86.nc</tt>’, … ‘<tt>89.nc</tt>’
-along the record dimension, and store the results in ‘<tt>8589.nc</tt>’: 
-<a name="index-globbing-5"></a>
-<a name="index-NINTAP-1"></a>
-<a name="index-Processor"></a>
-<a name="index-CCM-Processor-1"></a>
-</p><table><tr><td> </td><td><pre class="example">ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncra 8[56789].nc 8589.nc
-ncra -n 5,2,1 85.nc 8589.nc
-</pre></td></tr></table>
-<p>These three methods produce identical answers.
-See section <a href="#Specifying-Input-Files">Specifying Input Files</a>, for an explanation of the distinctions
-between these methods.
-</p>
-<a name="index-Fortran-1"></a>
-<p>Assume the files ‘<tt>85.nc</tt>’, ‘<tt>86.nc</tt>’, … ‘<tt>89.nc</tt>’
-each contain a record coordinate <var>time</var> of length 12 defined such
-that the third record in ‘<tt>86.nc</tt>’ contains data from March 1986,
-etc. 
-<acronym>NCO</acronym> knows how to hyperslab the record dimension across files.
-Thus, to average data from December, 1985 through February, 1986:
-</p><table><tr><td> </td><td><pre class="example">ncra -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-ncra -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc
-</pre></td></tr></table>
-<p>The file ‘<tt>87.nc</tt>’ is superfluous, but does not cause an error.
-The ‘<samp>-F</samp>’ turns on the Fortran (1-based) indexing convention.
-<a name="index-stride-6"></a>
-The following uses the <var>stride</var> option to average all the March
-temperature data from multiple input files into a single output file
-</p><table><tr><td> </td><td><pre class="example">ncra -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc
-</pre></td></tr></table>
-<p>See section <a href="#Stride">Stride</a>, for a description of the <var>stride</var> argument.
-</p>
-<p>Assume the <var>time</var> coordinate is incrementally numbered such that
-January, <em>1985 = 1</em> and December, <em>1989 = 60</em>.
-Assuming ‘<samp>??</samp>’ only expands to the five desired files, the following 
-averages June, 1985–June, 1989: 
-</p><table><tr><td> </td><td><pre class="example">ncra -d time,6.,54. ??.nc 8506_8906.nc
-</pre></td></tr></table>
-
-
-<a name="ncrcat"></a> <!-- http://nco.sf.net/nco.html#ncrcat --><hr size="6">
-<a name="ncrcat-netCDF-Record-Concatenator"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncra-netCDF-Record-Averager" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncrename-netCDF-Renamer" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncrcat-netCDF-Record-Concatenator-1"></a>
-<h2 class="section">4.10 <code>ncrcat</code> netCDF Record Concatenator</h2>
-<a name="index-concatenation-3"></a>
-<a name="index-record-concatenation"></a>
-<a name="index-ncrcat-2"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncrcat [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>] 
-[-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,…]] [-X ...] [-x] 
-[<var>input-files</var>] [<var>output-file</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncrcat</code> concatenates record variables across an arbitrary
-number of <var>input-files</var>.
-<a name="index-record-dimension-15"></a>
-The final record dimension is by default the sum of the lengths of the 
-record dimensions in the input files.
-See section <a href="#Averaging-vs_002e-Concatenating">Averagers vs. Concatenators</a>, for a description of the
-distinctions between the various averagers and concatenators. 
-<a name="index-multi_002dfile-operators-6"></a>
-<a name="index-standard-input-4"></a>
-<a name="index-stdin-5"></a>
-As a multi-file operator, <code>ncrcat</code> will read the list of
-<var>input-files</var> from <code>stdin</code> if they are not specified 
-as positional arguments on the command line 
-(see section <a href="#Large-Numbers-of-Files">Large Numbers of Files</a>).
-</p>
-<p>Input files may vary in size, but each must have a record dimension.
-The record coordinate, if any, should be monotonic (or else non-fatal
-warnings may be generated).
-<a name="index-hyperslab-5"></a>
-Hyperslabs along the record dimension that span more than one file are  
-handled correctly.
-<a name="index-stride-7"></a>
-<code>ncra</code> supports the <var>stride</var> argument to the ‘<samp>-d</samp>’
-hyperslab option for the record dimension only, <var>stride</var> is not
-supported for non-record dimensions.
-</p>
-<a name="index-ncpdq-5"></a>
-<a name="index-packing-5"></a>
-<a name="index-unpacking-4"></a>
-<a name="index-add_005foffset-4"></a>
-<a name="index-scale_005ffactor-3"></a>
-<p>Concatenating a variable packed with different scales multiple datasets  
-is beyond the capabilities of <code>ncrcat</code> (and <code>ncecat</code>,
-the other concatenator (<a href="#Concatenation">Concatenators <code>ncrcat</code> and <code>ncecat</code></a>).
-<code>ncrcat</code> does not unpack data, it simply <em>copies</em> the data
-from the <var>input-files</var>, and the metadata from the <em>first</em>
-<var>input-file</var>, to the <var>output-file</var>. 
-This means that data compressed with a packing convention must use
-the identical packing parameters (e.g., <code>scale_factor</code> and
-<code>add_offset</code>) for a given variable across <em>all</em> input files.
-Otherwise the concatenated dataset will not unpack correctly.
-The workaround for cases where the packing parameters differ across
-<var>input-files</var> requires three steps:
-First, unpack the data using <code>ncpdq</code>.
-Second, concatenate the unpacked data using <code>ncrcat</code>, 
-Third, re-pack the result with <code>ncpdq</code>.
-</p>
-<a name="index-ARM-conventions-1"></a>
-<p><code>ncrcat</code> applies special rules to <acronym>ARM</acronym> convention time
-fields (e.g., <code>time_offset</code>).
-See <a href="#ARM-Conventions"><acronym>ARM</acronym> Conventions</a> for a complete description.
-</p>
-<a name="xmp_ncrcat"></a> <!-- http://nco.sf.net/nco.html#xmp_ncrcat --><p>EXAMPLES
-</p>
-<p>Concatenate files ‘<tt>85.nc</tt>’, ‘<tt>86.nc</tt>’, … ‘<tt>89.nc</tt>’
-along the record dimension, and store the results in ‘<tt>8589.nc</tt>’: 
-<a name="index-globbing-6"></a>
-<a name="index-NINTAP-2"></a>
-<a name="index-Processor-1"></a>
-<a name="index-CCM-Processor-2"></a>
-</p><table><tr><td> </td><td><pre class="example">ncrcat 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncrcat 8[56789].nc 8589.nc
-ncrcat -n 5,2,1 85.nc 8589.nc
-</pre></td></tr></table>
-<p>These three methods produce identical answers.
-See section <a href="#Specifying-Input-Files">Specifying Input Files</a>, for an explanation of the distinctions
-between these methods.
-</p>
-<a name="index-Fortran-2"></a>
-<p>Assume the files ‘<tt>85.nc</tt>’, ‘<tt>86.nc</tt>’, … ‘<tt>89.nc</tt>’
-each contain a record coordinate <var>time</var> of length 12 defined
-such that the third record in ‘<tt>86.nc</tt>’ contains data from March
-1986, etc. 
-<acronym>NCO</acronym> knows how to hyperslab the record dimension across files. 
-Thus, to concatenate data from December, 1985–February, 1986:
-</p><table><tr><td> </td><td><pre class="example">ncrcat -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-ncrcat -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc
-</pre></td></tr></table>
-<p>The file ‘<tt>87.nc</tt>’ is superfluous, but does not cause an error.
-When <code>ncra</code> and <code>ncrcat</code> encounter a file which does 
-contain any records that meet the specified hyperslab criteria, they
-disregard the file and proceed to the next file without failing.
-The ‘<samp>-F</samp>’ turns on the Fortran (1-based) indexing convention.
-<a name="index-stride-8"></a>
-</p>
-<p>The following uses the <var>stride</var> option to concatenate all the March 
-temperature data from multiple input files into a single output file
-</p><table><tr><td> </td><td><pre class="example">ncrcat -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc
-</pre></td></tr></table>
-<p>See section <a href="#Stride">Stride</a>, for a description of the <var>stride</var> argument.
-</p>
-<p>Assume the <var>time</var> coordinate is incrementally numbered such that
-January, 1985 = 1 and December, 1989 = 60.
-Assuming <code>??</code> only expands to the five desired files, the following 
-concatenates June, 1985–June, 1989: 
-</p><table><tr><td> </td><td><pre class="example">ncrcat -d time,6.,54. ??.nc 8506_8906.nc
-</pre></td></tr></table>
-
-
-<a name="ncrename"></a> <!-- http://nco.sf.net/nco.html#ncrename --><hr size="6">
-<a name="ncrename-netCDF-Renamer"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncrcat-netCDF-Record-Concatenator" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#ncwa-netCDF-Weighted-Averager" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncrename-netCDF-Renamer-1"></a>
-<h2 class="section">4.11 <code>ncrename</code> netCDF Renamer</h2>
-<a name="index-renaming-variables"></a>
-<a name="index-renaming-dimensions"></a>
-<a name="index-renaming-attributes"></a>
-<a name="index-variable-names"></a>
-<a name="index-dimension-names"></a>
-<a name="index-attribute-names-1"></a>
-<a name="index-ncrename-1"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncrename [-a <var>old_name</var>,<var>new_name</var>] [-a …] [-D <var>dbg</var>] 
-[-d <var>old_name</var>,<var>new_name</var>] [-d …] [-h] [--hdr_pad <var>nbr</var>] [-l <var>path</var>]
-[-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r] 
-[-v <var>old_name</var>,<var>new_name</var>] [-v …]
-<var>input-file</var> [[<var>output-file</var>]]
-</pre></td></tr></table>
- 
-<p>DESCRIPTION
-</p>
-<a name="index-_002e"></a>
-<p><code>ncrename</code> renames dimensions, variables, and attributes in a
-netCDF file.  
-Each object that has a name in the list of old names is renamed using
-the corresponding name in the list of new names. 
-All the new names must be unique. 
-Every old name must exist in the input file, unless the old name is
-preceded by the period (or “dot”) character ‘<samp>.</samp>’. 
-The validity of <var>old_name</var> is not checked prior to the renaming. 
-Thus, if <var>old_name</var> is specified without the the ‘<samp>.</samp>’ prefix and
-is not present in <var>input-file</var>, <code>ncrename</code> will abort. 
-The <var>new_name</var> should never be prefixed by a ‘<samp>.</samp>’ (or else the
-period will be included as part of the new name).
-The OPTIONS and EXAMPLES show how to select specific variables
-whose attributes are to be renamed.
-</p>
-<a name="index-data-safety-1"></a>
-<a name="index-safeguards-1"></a>
-<a name="index-temporary-output-files-1"></a>
-<p><code>ncrename</code> is the exception to the normal rules that the user will
-be interactively prompted before an existing file is changed, and that a
-temporary copy of an output file is constructed during the operation.
-If only <var>input-file</var> is specified, then <code>ncrename</code> will change
-the names of the <var>input-file</var> in place without prompting and without
-creating a temporary copy of <code>input-file</code>.
-This is because the renaming operation is considered reversible if the
-user makes a mistake.
-The <var>new_name</var> can easily be changed back to <var>old_name</var> by using 
-<code>ncrename</code> one more time.
-</p>
-<p>Note that renaming a dimension to the name of a dependent variable can
-be used to invert the relationship between an independent coordinate
-variable and a dependent variable. 
-In this case, the named dependent variable must be one-dimensional and
-should have no missing values. 
-Such a variable will become a coordinate variable.
-</p>
-<a name="index-performance-6"></a>
-<a name="index-operator-speed-5"></a>
-<a name="index-speed-6"></a>
-<a name="index-execution-time-5"></a>
-<p>According to the <cite>netCDF User’s Guide</cite>, renaming properties in
-netCDF files does not incur the penalty of recopying the entire file
-when the <var>new_name</var> is shorter than the <var>old_name</var>.
-</p>
-<p>OPTIONS
-</p>
-<dl compact="compact">
-<dt> ‘<samp>-a <var>old_name</var>,<var>new_name</var></samp>’</dt>
-<dd><p>Attribute renaming. 
-The old and new names of the attribute are specified with ‘<samp>-a</samp>’
-(or ‘<samp>--attribute</samp>’) by the associated <var>old_name</var> and
-<var>new_name</var> values.  
-<a name="index-global-attributes-9"></a>
-<a name="index-attributes_002c-global-9"></a>
-Global attributes are treated no differently than variable attributes.
-This option may be specified more than once.
-As mentioned above, all occurrences of the attribute of a given name
-will be renamed unless the ‘<samp>.</samp>’ form is used, with one exception.
-To change the attribute name for a particular variable, specify 
-the <var>old_name</var> in the format <var>old_var_name at old_att_name</var>.
-The ‘<samp>@</samp>’ symbol delimits the variable and attribute names.
-If the attribute is uniquely named (no other variables contain the
-attribute) then the <var>old_var_name at old_att_name</var> syntax is
-redundant. 
-The <var>var_name at att_name</var> syntax is accepted, but not required,
-for the <var>new_name</var>.
-</p>
-</dd>
-<dt> ‘<samp>-d <var>old_name</var>,<var>new_name</var></samp>’</dt>
-<dd><p>Dimension renaming. 
-The old and new names of the dimension are specified with ‘<samp>-d</samp>’
-(or ‘<samp>--dmn</samp>’, ‘<samp>--dimension</samp>’) by the associated <var>old_name</var>
-and <var>new_name</var> values.  
-This option may be specified more than once.
-</p> 
-</dd>
-<dt> ‘<samp>-v <var>old_name</var>,<var>new_name</var></samp>’</dt>
-<dd><p>Variable renaming. 
-The old and new names of the variable are specified with ‘<samp>-v</samp>’
-(or ‘<samp>--variable</samp>’) by the associated <var>old_name</var> and
-<var>new_name</var> values.  
-This option may be specified more than once.
-</p></dd>
-</dl>
-
-<a name="xmp_ncrename"></a> <!-- http://nco.sf.net/nco.html#xmp_ncrename --><p>EXAMPLES
-</p>
-<p>Rename the variable <code>p</code> to <code>pressure</code> and <code>t</code> to
-<code>temperature</code> in netCDF ‘<tt>in.nc</tt>’. 
-In this case <code>p</code> must exist in the input file (or
-<code>ncrename</code> will abort), but the presence of <code>t</code> is optional:
-</p><table><tr><td> </td><td><pre class="example">ncrename -v p,pressure -v .t,temperature in.nc
-</pre></td></tr></table>
-
-<p>Rename the attribute <code>long_name</code> to <code>largo_nombre</code> in the
-variable <code>u</code>, and no other variables in netCDF ‘<tt>in.nc</tt>’. 
-</p><table><tr><td> </td><td><pre class="example">ncrename -a u:long_name,largo_nombre in.nc
-</pre></td></tr></table>
- 
-<a name="index-coordinate-variables"></a>
-<p><code>ncrename</code> does not automatically attach dimensions to variables of
-the same name.
-If you want to rename a coordinate variable so that it remains a
-coordinate variable, you must separately rename both the dimension and
-the variable: 
-</p><table><tr><td> </td><td><pre class="example">ncrename -d lon,longitude -v lon,longitude in.nc
-</pre></td></tr></table>
-
-<a name="index-global-attributes-10"></a>
-<a name="index-attributes_002c-global-10"></a>
-<a name="index-_005fFillValue-6"></a>
-<a name="index-missing_005fvalue-2"></a>
-<p>Create netCDF ‘<tt>out.nc</tt>’ identical to ‘<tt>in.nc</tt>’ except the
-attribute <code>_FillValue</code> is changed to <code>missing_value</code>, 
-the attribute <code>units</code> is changed to <code>CGS_units</code> (but only in
-those variables which possess it), the attribute <code>hieght</code> is
-changed to <code>height</code> in the variable <code>tpt</code>, and in the
-variable <code>prs_sfc</code>, if it exists.
-</p><table><tr><td> </td><td><pre class="example">ncrename -a _FillValue,missing_value -a .units,CGS_units \
-  -a tpt at hieght,height -a prs_sfc at .hieght,height in.nc out.nc 
-</pre></td></tr></table>
-<p>The presence and absence of the ‘<samp>.</samp>’ and ‘<samp>@</samp>’ features
-cause this command to execute successfully only if a number of 
-conditions are met. 
-All variables <em>must</em> have a <code>_FillValue</code> attribute <em>and</em> 
-<code>_FillValue</code> must also be a global attribute.
-The <code>units</code> attribute, on the other hand, will be renamed to
-<code>CGS_units</code> wherever it is found but need not be present in
-the file at all (either as a global or a variable attribute).
-The variable <code>tpt</code> must contain the <code>hieght</code> attribute.
-The variable <code>prs_sfc</code> need not exist, and need not contain the
-<code>hieght</code> attribute.
-</p>
-
-<a name="ncwa"></a> <!-- http://nco.sf.net/nco.html#ncwa --><hr size="6">
-<a name="ncwa-netCDF-Weighted-Averager"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncrename-netCDF-Renamer" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Mask-condition" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="ncwa-netCDF-Weighted-Averager-1"></a>
-<h2 class="section">4.12 <code>ncwa</code> netCDF Weighted Averager</h2>
-<a name="index-averaging-data-3"></a>
-<a name="index-weighted-average"></a>
-<a name="index-masked-average"></a>
-<a name="index-broadcasting-variables-2"></a>
-<a name="index-ncwa-4"></a>
-
-<p>SYNTAX
-</p><table><tr><td> </td><td><pre class="example">ncwa [-3] [-4] [-6] [-A] [-a <var>dim</var>[,…]] [-B <var>mask_cond</var>] [-b] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-I] [-L <var>dfl_lvl</var>] [-l <var>path</var>] 
-[-M <var>mask_val</var>] [-m <var>mask_var</var>] [-N] [-O] 
-[-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r] [-T <var>mask_comp</var>]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,…]] [-w <var>weight</var>] [-X ...] [-x] [-y <var>op_typ</var>]
-<var>input-file</var> [<var>output-file</var>]
-</pre></td></tr></table>
-
-<p>DESCRIPTION
-</p>
-<p><code>ncwa</code> averages variables in a single file over arbitrary
-dimensions, with options to specify weights, masks, and normalization.   
-See section <a href="#Averaging-vs_002e-Concatenating">Averagers vs. Concatenators</a>, for a description of the
-distinctions between the various averagers and concatenators. 
-The default behavior of <code>ncwa</code> is to arithmetically average
-every numerical variable over all dimensions and to produce a scalar 
-result for each. 
-</p>
-<a name="index-degenerate-dimension-7"></a>
-<p>Averaged dimensions are, by default, eliminated as dimensions.
-Their corresponding coordinates, if any, are output as scalars.
-The ‘<samp>-b</samp>’ switch 
-(and its long option equivalents ‘<samp>--rdd</samp>’ and
-‘<samp>--retain-degenerate-dimensions</samp>’) causes <code>ncwa</code> to retain
-averaged dimensions as degenerate (size 1) dimensions.
-This maintains the association between a dimension (or coordinate) and
-variables after averaging and simplifies, for instance, later
-concatenation along the degenerate dimension. 
-</p>
-<p>To average variables over only a subset of their dimensions, specify
-these dimensions in a comma-separated list following ‘<samp>-a</samp>’, e.g.,
-‘<samp>-a time,lat,lon</samp>’. 
-<a name="index-arithmetic-operators-2"></a>
-<a name="index-hyperslab-6"></a>
-<a name="index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005d"></a>
-As with all arithmetic operators, the operation may be restricted to
-an arbitrary hypserslab by employing the ‘<samp>-d</samp>’ option
-(see section <a href="#Hyperslabs">Hyperslabs</a>). 
-<code>ncwa</code> also handles values matching the variable’s
-<code>_FillValue</code> attribute correctly. 
-Moreover, <code>ncwa</code> understands how to manipulate user-specified
-weights, masks, and normalization options.
-With these options, <code>ncwa</code> can compute sophisticated averages
-(and integrals) from the command line. 
-</p>
-<a name="-w"></a> <!-- http://nco.sf.net/nco.html#-w -->
-<a name="wgt"></a> <!-- http://nco.sf.net/nco.html#wgt --><a name="index-_002dw-weight"></a>
-<a name="index-_002d_002dweight-weight"></a>
-<a name="index-_002d_002dwgt_005fvar-weight"></a>
-<a name="index-_002dm-mask_005fvar"></a>
-<a name="index-_002d_002dmask_002dvariable-mask_005fvar"></a>
-<a name="index-_002d_002dmask_005fvariable-mask_005fvar"></a>
-<a name="index-_002d_002dmsk_005fnm-mask_005fvar"></a>
-<a name="index-_002d_002dmsk_005fvar-mask_005fvar"></a>
-<a name="index-_002dB-mask_005fcond"></a>
-<a name="index-_002d_002dmsk_005fcnd-mask_005fcond"></a>
-<a name="index-_002d_002dmask_005fcondition-mask_005fcond"></a>
-<p><var>mask_var</var> and <var>weight</var>, if specified, are broadcast to conform
-to the variables being averaged. 
-<a name="index-rank-1"></a>
-The rank of variables is reduced by the number of dimensions which they
-are averaged over.  
-Thus arrays which are one dimensional in the <var>input-file</var> and are
-averaged by <code>ncwa</code> appear in the <var>output-file</var> as scalars.
-This allows the user to infer which dimensions may have been averaged.
-Note that that it is impossible for <code>ncwa</code> to make make a
-<var>weight</var> or <var>mask_var</var> of rank <var>W</var> conform to a <var>var</var> of
-rank <var>V</var> if <var>W > V</var>.
-This situation often arises when coordinate variables (which, by
-definition, are one dimensional) are weighted and averaged.
-<code>ncwa</code> assumes you know this is impossible and so <code>ncwa</code>
-does not attempt to broadcast <var>weight</var> or <var>mask_var</var> to conform
-to <var>var</var> in this case, nor does <code>ncwa</code> print a warning
-message telling you this, because it is so common.  
-Specifying <var>dbg > 2</var> does cause <code>ncwa</code> to emit warnings in
-these situations, however.
-</p>
-<p>Non-coordinate variables are always masked and weighted if specified.
-Coordinate variables, however, may be treated specially.
-By default, an averaged coordinate variable, e.g., <code>latitude</code>,
-appears in <var>output-file</var> averaged the same way as any other variable 
-containing an averaged dimension.
-In other words, by default <code>ncwa</code> weights and masks
-coordinate variables like all other variables.  
-This design decision was intended to be helpful but for some
-applications it may be preferable not to weight or mask coordinate
-variables just like all other variables.   
-Consider the following arguments to <code>ncwa</code>: 
-<code>-a latitude -w lat_wgt -d latitude,0.,90.</code> where <code>lat_wgt</code> is
-a weight in the <code>latitude</code> dimension.
-Since, by default <code>ncwa</code> weights coordinate variables, the
-value of <code>latitude</code> in the <var>output-file</var> depends on the weights 
-in <var>lat_wgt</var> and is not likely to be 45.0, the midpoint latitude
-of the hyperslab.
-<a name="index-coordinate-variable-4"></a>
-<a name="index-_002dI"></a>
-Option ‘<samp>-I</samp>’ overrides this default behavior and causes
-<code>ncwa</code> not to weight or mask coordinate variables
-<a name="DOCF43" href="#FOOT43">(43)</a>.
-In the above case, this causes the value of <code>latitude</code> in the
-<var>output-file</var> to be 45.0, an appealing result.
-Thus, ‘<samp>-I</samp>’ specifies simple arithmetic averages for the coordinate
-variables. 
-In the case of latitude, ‘<samp>-I</samp>’ specifies that you prefer to archive
-the arithmetic mean latitude of the averaged hyperslabs rather than the 
-area-weighted mean latitude.
-<a name="DOCF44" href="#FOOT44">(44)</a>.  
-</p>
-<a name="index-average-1"></a>
-<a name="index-operation-types-3"></a>
-<p>As explained in See section <a href="#Operation-Types">Operation Types</a>, <code>ncwa</code> 
-<em>always averages</em> coordinate variables regardless of the arithmetic
-operation type performed on the non-coordinate variables. 
-This is independent of the setting of the ‘<samp>-I</samp>’ option.
-The mathematical definition of operations involving rank reduction 
-is given above (see section <a href="#Operation-Types">Operation Types</a>).
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td><td>  </td><td align="left" valign="top">              
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-</table>
-
-<a name="mask"></a> <!-- http://nco.sf.net/nco.html#mask -->
-<a name="msk"></a> <!-- http://nco.sf.net/nco.html#msk -->
-<a name="-m"></a> <!-- http://nco.sf.net/nco.html#-m --><hr size="6">
-<a name="Mask-condition"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#ncwa-netCDF-Weighted-Averager" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Normalization-and-Integration" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncwa-netCDF-Weighted-Averager" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Mask-condition-1"></a>
-<h3 class="subsection">4.12.1 Mask condition</h3>
-<a name="index-mask-condition"></a>
-<a name="index-truth-condition"></a>
-
-<a name="index-_002d_002dop_005frlt-mask_005fcomp"></a>
-<a name="index-_002d_002dmask_005fcomparator-mask_005fcomp"></a>
-<a name="index-_002d_002dmsk_005fcmp_005ftyp-mask_005fcomp"></a>
-<a name="index-_002d_002dmsk_005fcnd_005fsng-mask_005fcond"></a>
-<a name="index-_002d_002dmask_005fcondition-mask_005fcond-1"></a>
-<a name="index-_002dB-mask_005fcond-1"></a>
-<p>The mask condition has the syntax <em><var>mask_var</var></em>
-<em><var>mask_comp</var></em> <em><var>mask_val</var></em>. 
-The preferred method to specify the mask condition is in one string with  
-the ‘<samp>-B</samp>’ or ‘<samp>--mask_condition</samp>’ switches.
-The older method is to use the three switches ‘<samp>-m</samp>’, ‘<samp>-T</samp>’, and
-‘<samp>-M</samp>’ to specify the <var>mask_var</var>, <var>mask_comp</var>, and 
-<var>mask_val</var>, respectively.  
-<a name="DOCF45" href="#FOOT45">(45)</a>.
-The <var>mask_condition</var> string is automatically parsed into its three
-constituents <var>mask_var</var>, <var>mask_comp</var>, and <var>mask_val</var>.
-</p>
-<a name="index-comparator"></a>
-<p>Here <var>mask_var</var> is the name of the masking variable (specified with 
-‘<samp>-m</samp>’, ‘<samp>--mask-variable</samp>’, ‘<samp>--mask_variable</samp>’,
-‘<samp>--msk_nm</samp>’, or ‘<samp>--msk_var</samp>’).  
-The truth <var>mask_comp</var> argument (specified with ‘<samp>-T</samp>’,
-‘<samp>--mask_comparator</samp>’, ‘<samp>--msk_cmp_typ</samp>’, or ‘<samp>--op_rlt</samp>’ may 
-be any one of the six arithmetic comparators: <kbd>eq</kbd>, <kbd>ne</kbd>,
-<kbd>gt</kbd>, <kbd>lt</kbd>, <kbd>ge</kbd>, <kbd>le</kbd>. 
-These are the Fortran-style character abbreviations for the logical 
-comparisons <kbd>==</kbd>, <kbd>!=</kbd>, <kbd>></kbd>, <kbd><</kbd>, <kbd>>=</kbd>,
-The mask comparator defaults to <kbd>eq</kbd> (equality).
-<a name="index-_002d_002dmask_002dvalue-mask_005fval"></a>
-<a name="index-_002d_002dmask_005fvalue-mask_005fval"></a>
-<a name="index-_002d_002dmsk_005fval-mask_005fval"></a>
-The <var>mask_val</var> argument to ‘<samp>-M</samp>’ (or ‘<samp>--mask-value</samp>’, or
-‘<samp>--msk_val</samp>’) is the right hand side of the
-<em>mask condition</em>.
-Thus for the <var>i</var>’th element of the hyperslab to be averaged,
-the mask condition is 
-<var>mask</var>(<var>i</var>) <var>mask_comp</var> <var>mask_val</var>.
-</p>
-
-<a name="nrm"></a> <!-- http://nco.sf.net/nco.html#nrm -->
-<a name="ntg"></a> <!-- http://nco.sf.net/nco.html#ntg --><hr size="6">
-<a name="Normalization-and-Integration"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Mask-condition" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#ncwa-netCDF-Weighted-Averager" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Normalization-and-Integration-1"></a>
-<h3 class="subsection">4.12.2 Normalization and Integration</h3>
-<a name="index-normalization"></a>
-<a name="index-_002dN"></a>
-<a name="index-numerator"></a>
-<a name="index-integration"></a>
-<a name="index-dot-product"></a>
-<p><code>ncwa</code> has one switch which controls the normalization of the
-averages appearing in the <var>output-file</var>.
-Short option ‘<samp>-N</samp>’ (or long options ‘<samp>--nmr</samp>’ or
-‘<samp>--numerator</samp>’) prevents <code>ncwa</code> from dividing the weighted
-sum of the variable (the numerator in the averaging expression) by the
-weighted sum of the weights (the denominator in the averaging
-expression).   
-Thus ‘<samp>-N</samp>’ tells <code>ncwa</code> to return just the numerator of the
-arithmetic expression defining the operation (see section <a href="#Operation-Types">Operation Types</a>). 
-</p>
-<p>With this normalization option, <code>ncwa</code> can integrate variables.
-Averages are first computed as sums, and then normalized to obtain the
-average. 
-The original sum (i.e., the numerator of the expression in
-<a href="#Operation-Types">Operation Types</a>) is output if default normalization is turned off
-(with ‘<samp>-N</samp>’). 
-This sum is the integral (not the average) over the specified 
-(with ‘<samp>-a</samp>’, or all, if none are specified) dimensions.
-The weighting variable, if specified (with ‘<samp>-w</samp>’), plays the
-role of the differential increment and thus permits more sophisticated 
-integrals (i.e., weighted sums) to be output.
-For example, consider the variable 
-<code>lev</code> where <em><var>lev</var> = [100,500,1000]</em> weighted by
-the weight <code>lev_wgt</code> where <em><var>lev_wgt</var> = [10,2,1]</em>.
-<a name="index-dot-product-1"></a>
-The vertical integral of <code>lev</code>, weighted by <code>lev_wgt</code>, 
-is the dot product of <var>lev</var> and <var>lev_wgt</var>. 
-That this is is 3000.0 can be seen by inspection and verified with 
-the integration command
-</p><table><tr><td> </td><td><pre class="example">ncwa -N -a lev -v lev -w lev_wgt in.nc foo.nc;ncks foo.nc
-</pre></td></tr></table>
-
-
-
-<a name="xmp_ncwa"></a> <!-- http://nco.sf.net/nco.html#xmp_ncwa --><p>EXAMPLES
-</p>
-<p>Given file ‘<tt>85_0112.nc</tt>’:
-</p><table><tr><td> </td><td><pre class="example">netcdf 85_0112 {
-dimensions:
-        lat = 64 ;
-        lev = 18 ;
-        lon = 128 ;
-        time = UNLIMITED ; // (12 currently)
-variables:
-        float lat(lat) ;
-        float lev(lev) ;
-        float lon(lon) ;
-        float time(time) ;
-        float scalar_var ;
-        float three_dmn_var(lat, lev, lon) ;
-        float two_dmn_var(lat, lev) ;
-        float mask(lat, lon) ;
-        float gw(lat) ;
-} 
-</pre></td></tr></table>
-
-<p>Average all variables in ‘<tt>in.nc</tt>’ over all dimensions and store
-results in ‘<tt>out.nc</tt>’:
-</p><table><tr><td> </td><td><pre class="example">ncwa in.nc out.nc
-</pre></td></tr></table>
-<p>All variables in ‘<tt>in.nc</tt>’ are reduced to scalars in ‘<tt>out.nc</tt>’ 
-since <code>ncwa</code> averages over all dimensions unless otherwise
-specified (with ‘<samp>-a</samp>’).
-</p>
-<p>Store the zonal (longitudinal) mean of ‘<tt>in.nc</tt>’ in ‘<tt>out.nc</tt>’:
-</p><table><tr><td> </td><td><pre class="example">ncwa -a lon in.nc out1.nc
-ncwa -a lon -b in.nc out2.nc
-</pre></td></tr></table>
-<a name="index-degenerate-dimension-8"></a>
-<p>The first command turns <code>lon</code> into a scalar and the second retains 
-<code>lon</code> as a degenerate dimension in all variables.
-</p><table><tr><td> </td><td><pre class="example">% ncks -C -H -v lon out1.nc
-lon = 135
-% ncks -C -H -v lon out2.nc
-lon[0] = 135
-</pre></td></tr></table>
-<p>In either case the tally is simply the size of <code>lon</code>, i.e., 180
-for the ‘<tt>85_0112.nc</tt>’ file described by the sample header above.
-</p>
-<a name="index-gw-1"></a>
-<a name="index-Gaussian-weights"></a>
-<a name="index-climate-model-5"></a>
-<p>Compute the meridional (latitudinal) mean, with values weighted by
-the corresponding element of <var>gw</var>
-<a name="DOCF46" href="#FOOT46">(46)</a>: 
-</p><table><tr><td> </td><td><pre class="example">ncwa -w gw -a lat in.nc out.nc
-</pre></td></tr></table>
-<p>Here the tally is simply the size of <code>lat</code>, or 64.
-The sum of the Gaussian weights is 2.0.
-</p>
-<p>Compute the area mean over the tropical Pacific:
-</p><table><tr><td> </td><td><pre class="example">ncwa -w gw -a lat,lon -d lat,-20.,20. -d lon,120.,270. in.nc out.nc
-</pre></td></tr></table>
-<p>Here the tally is 
-64 times 128 = 8192.
-</p>
-<a name="index-ORO-1"></a>
-<a name="index-climate-model-6"></a>
-<p>Compute the area-mean over the globe using only points for which 
-<var>ORO</var> < 0.5
-<a name="DOCF47" href="#FOOT47">(47)</a>: 
-</p><table><tr><td> </td><td><pre class="example">ncwa -B 'ORO < 0.5'      -w gw -a lat,lon in.nc out.nc
-ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon in.nc out.nc
-</pre></td></tr></table>
-<p>It is considerably simpler to specify the complete <var>mask_cond</var> with
-the single string argument to ‘<samp>-B</samp>’ than with the three separate
-switches ‘<samp>-m</samp>’, ‘<samp>-T</samp>’, and ‘<samp>-M</samp>’.
-If in doubt, enclose the <var>mask_cond</var> within quotes since some
-of the comparators have special meanings to the shell.
-</p>
-<p>Assuming 70% of the gridpoints are maritime, then here the tally is
-0.70 times 8192 = 5734.
-</p>
-<p>Compute the global annual mean over the maritime tropical Pacific:
-</p><table><tr><td> </td><td><pre class="example">ncwa -B 'ORO < 0.5'      -w gw -a lat,lon,time \
-  -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon,time \
-  -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-</pre></td></tr></table>
-<p>Further examples will use the one-switch specification of
-<var>mask_cond</var>.  
-</p>
-<p>Determine the total area of the maritime tropical Pacific, assuming
-the variable <var>area</var> contains the area of each gridcell
-</p><table><tr><td> </td><td><pre class="example">ncwa -N -v area -B 'ORO < 0.5' -a lat,lon \
-  -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-</pre></td></tr></table>
-<p>Weighting <var>area</var> (e.g., by <var>gw</var>) is not appropriate because
-<var>area</var> is <em>already</em> area-weighted by definition.
-Thus the ‘<samp>-N</samp>’ switch, or, equivalently, the ‘<samp>-y ttl</samp>’ switch, 
-correctly integrate the cell areas into a total regional area.
-</p>
-<a name="index-mask-condition-1"></a>
-<a name="index-truth-condition-1"></a>
-<p>Mask a file to contain <var>_FillValue</var> everywhere except where
-<em><var>thr_min</var> <= <var>msk_var</var> <= <var>thr_max</var></em>:
-</p><table><tr><td> </td><td><pre class="example"># Set masking variable and its scalar thresholds
-export msk_var='three_dmn_var_dbl' # Masking variable
-export thr_max='20' # Maximum allowed value
-export thr_min='10' # Minimum allowed value
-ncecat -O in.nc out.nc # Wrap out.nc in degenerate "record" dimension
-ncwa -O -a record -B "${msk_var} <= ${thr_max}" out.nc out.nc
-ncecat -O out.nc out.nc # Wrap out.nc in degenerate "record" dimension
-ncwa -O -a record -B "${msk_var} >= ${thr_min}" out.nc out.nc
-</pre></td></tr></table>
-<p>After the first use of <code>ncwa</code>, ‘<tt>out.nc</tt>’ contains
-<var>_FillValue</var> where <code>${msk_var} >= ${thr_max}</code>.
-The process is then repeated on the remaining data to filter out 
-points where <code>${msk_var} <= ${thr_min}</code>.
-The resulting ‘<tt>out.nc</tt>’ contains valid data only
-where <em><var>thr_min</var> <= <var>msk_var</var> <= <var>thr_max</var></em>.
-</p>
-<a name="ctr"></a> <!-- http://nco.sf.net/nco.html#ctr --><hr size="6">
-<a name="Contributing"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Normalization-and-Integration" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributors" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Operator-Reference-Manual" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#CCSM-Example" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Contributing-1"></a>
-<h1 class="chapter">5. Contributing</h1>
-<a name="index-contributing"></a>
-<p>We welcome contributions from anyone.
-The project homepage at <a href="https://sf.net/projects/nco">https://sf.net/projects/nco</a>
-contains more information on how to contribute. 
-</p>
-<a name="index-PayPal"></a>
-<p>Financial contributions to <acronym>NCO</acronym> development may be made through  
-<a href="https://www.paypal.com/xclick/business=zender%40uci.edu&item_name=NCO+development&item_number=nco_dnt_dvl&no_note=1&tax=0&currency_code=USD">PayPal</a>.
-<acronym>NCO</acronym> has been shared for over 10 years yet only two 
-users have contributed any money to the developers
-<a name="DOCF48" href="#FOOT48">(48)</a>. 
-So you could be the third!
-</p>
-<a name="dvl"></a> <!-- http://nco.sf.net/nco.html#dvl -->
-<a name="cnt"></a> <!-- http://nco.sf.net/nco.html#cnt -->
-<a name="ppl"></a> <!-- http://nco.sf.net/nco.html#ppl --><table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Contributors">5.1 Contributors</a></td><td>  </td><td align="left" valign="top">                
-</td></tr>
-<tr><td align="left" valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-</table>
-
-<hr size="6">
-<a name="Contributors"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Contributing" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#Proposals-for-Institutional-Funding" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#CCSM-Example" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Contributors-1"></a>
-<h2 class="section">5.1 Contributors</h2>
-<a name="index-contributors"></a>
-<p>The primary contributors to <acronym>NCO</acronym> development have been:
-</p><dl compact="compact">
-<dd><a name="index-Charlie-Zender-1"></a>
-</dd>
-<dt> Charlie Zender</dt>
-<dd><p>Concept, design and implementation of operators from 1995-2000.
-Since then autotools, bug-squashing, chunking, documentation, packing,
-<acronym>NCO</acronym> library redesign, <code>ncap2</code> features, <code>ncbo</code>, 
-<code>ncpdq</code>, SMP threading and MPI parallelization, 
-netCDF4 integration, external funding, project management, science
-research, releases.
-<a name="index-Henry-Butowsky"></a>
-</p></dd>
-<dt> Henry Butowsky</dt>
-<dd><p>Non-linear operations and <code>min()</code>, <code>max()</code>, <code>total()</code>
-support in <code>ncra</code> and <code>ncwa</code>. 
-Type conversion for arithmetic.
-Migration to netCDF3 API.
-<code>ncap</code> parser, lexer, and I/O.
-Multislabbing algorithm.
-Variable wildcarding.
-Various hacks.
-<code>ncap2</code> language.
-<a name="index-Rorik-Peterson"></a>
-</p></dd>
-<dt> Rorik Peterson</dt>
-<dd><p>Original autotool build support. 
-Long command-line options.
-Original UDUnits support.
-Debianization.
-Numerous bug-fixes.
-<a name="index-Daniel-Wang"></a>
-</p></dd>
-<dt> Daniel Wang</dt>
-<dd><p>Script Workflow Analysis for MultiProcessing (SWAMP).
-RPM support.
-<a name="index-Harry-Mangalam"></a>
-</p></dd>
-<dt> Harry Mangalam</dt>
-<dd><p>Benchmarking.
-OPeNDAP configuration.
-<a name="index-Brian-Mays"></a>
-</p></dd>
-<dt> Brian Mays</dt>
-<dd><p>Original packaging for Debian GNU/Linux, <code>nroff</code> man pages.
-<a name="index-George-Shapovalov"></a>
-</p></dd>
-<dt> George Shapovalov</dt>
-<dd><p>Packaging for Gentoo GNU/Linux.
-<a name="index-Bill-Kocik"></a>
-</p></dd>
-<dt> Bill Kocik</dt>
-<dd><p>Memory management.
-<a name="index-Len-Makin"></a>
-</p></dd>
-<dt> Len Makin</dt>
-<dd><p>NEC SX architecture support.
-<a name="index-Jim-Edwards"></a>
-</p></dd>
-<dt> Jim Edwards</dt>
-<dd><p>AIX architecture support.
-<a name="index-Juliana-Rew"></a>
-</p></dd>
-<dt> Juliana Rew</dt>
-<dd><p>Compatibility with large PIDs.
-<a name="index-Karen-Schuchardt"></a>
-</p></dd>
-<dt> Karen Schuchardt</dt>
-<dd><p>Auxiliary coordinate support.
-<a name="index-Gayathri-Venkitachalam"></a>
-</p></dd>
-<dt> Gayathri Venkitachalam</dt>
-<dd><p><acronym>MPI</acronym> implementation.
-<a name="index-Scott-Capps"></a>
-</p></dd>
-<dt> Scott Capps</dt>
-<dd><p>Large work-load testing
-<a name="index-Mark-Flanner"></a>
-<a name="index-Keith-Lindsay"></a>
-<a name="index-Martin-Dix"></a>
-<a name="index-Mike-Page"></a>
-<a name="index-Martin-Schmidt"></a>
-<a name="index-Michael-Schulz"></a>
-<a name="index-Remik-Ziemlinski"></a>
-</p></dd>
-<dt> Martin Dix, Mark Flanner, Keith Lindsay, Mike Page, Martin Schmidt, Michael Schulz, Remik Ziemlinski</dt>
-<dd><p>Excellent bug reports and feature requests.
-<a name="index-Markus-Liebig"></a>
-</p></dd>
-<dt> Markus Liebig</dt>
-<dd><p>Proof-read the ncap documentation
-<a name="index-Daniel-Baumann"></a>
-<a name="index-Barry-deFreese"></a>
-<a name="index-Francesco-Lovergine"></a>
-<a name="index-Matej-Vela"></a>
-<a name="index-Luk-Claes"></a>
-</p></dd>
-<dt> Daniel Baumann, Barry deFreese, Francesco Lovergine, Matej Vela, Luk Claes</dt>
-<dd><p>Debian packaging
-<a name="index-Patrice-Dumas"></a>
-<a name="index-Ed-Hill"></a>
-<a name="index-Orion-Powlawski"></a>
-</p></dd>
-<dt> Patrice Dumas, Ed Hill, Orion Poplawski</dt>
-<dd><p>RedHat packaging
-<a name="index-George-Shapavalov"></a>
-<a name="index-Patrick-Kursawe"></a>
-</p></dd>
-<dt> George Shapavalov, Patrick Kursawe</dt>
-<dd><p>Gentoo packaging
-<a name="index-Filipe-Fernandes"></a>
-</p></dd>
-<dt> Filipe Fernandes</dt>
-<dd><p>OpenSuse packaging
-<a name="index-Alexander-Hansen"></a>
-<a name="index-Takeshi-Enomoto"></a>
-</p></dd>
-<dt> Takeshi Enomoto, Alexander Hansen</dt>
-<dd><p>Mac OS packaging
-<a name="index-Eric-Blake"></a>
-</p></dd>
-<dt> Eric Blake</dt>
-<dd><p>Autoconf/M4 help
-<a name="index-Gavin-Burris"></a>
-<a name="index-Kyle-Wilcox"></a>
-</p></dd>
-<dt> Gavin Burris, Kyle Wilcox</dt>
-<dd><p>RHEL and CentOS build scripts and bug reports.
-</p></dd>
-</dl>
-<p>Please let me know if your name was omitted!
-</p>
-<a name="prp"></a> <!-- http://nco.sf.net/nco.html#prp -->
-<a name="prp_sei"></a> <!-- http://nco.sf.net/nco.html#prp_sei -->
-<a name="fnd"></a> <!-- http://nco.sf.net/nco.html#fnd --><table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td><td>  </td><td align="left" valign="top">  
-</td></tr>
-</table>
-
-<hr size="6">
-<a name="Proposals-for-Institutional-Funding"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Contributors" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#CCSM-Example" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#CCSM-Example" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="Proposals-for-Institutional-Funding-1"></a>
-<h2 class="section">5.2 Proposals for Institutional Funding</h2>
-<a name="index-funding"></a>
-<a name="index-proposals"></a>
-<a name="index-NSF"></a>
-<a name="index-server_002dside-processing-1"></a>
-<a name="index-Distributed-Data-Reduction-_0026-Analysis"></a>
-<a name="index-Scientific-Data-Operators"></a>
-<a name="index-DDRA"></a>
-<a name="index-Server_002dSide-Distributed-Data-Reduction-_0026-Analysis"></a>
-<a name="index-SSDDRA"></a>
-<a name="index-CCSM"></a>
-<a name="index-IPCC-2"></a>
-<a name="index-NSF-1"></a>
-<a name="index-SDO"></a>
-<a name="index-SEIII"></a>
-<a name="index-OptIPuter"></a>
-<p><acronym>NSF</acronym> has funded a
-<a href="http://nco.sf.net#prp_sei">project</a>
-to improve Distributed Data Reduction & Analysis (<acronym>DDRA</acronym>) by
-evolving <acronym>NCO</acronym> into a suite of Scientific Data Operators called 
-<acronym>SDO</acronym>.
-<a name="index-parallelism-1"></a>
-The two main components of this project are <acronym>NCO</acronym> parallelism
-(OpenMP, <acronym>MPI</acronym>) and Server-Side <acronym>DDRA</acronym>
-(<acronym>SSDDRA</acronym>) implemented through extensions to <acronym>OPeNDAP</acronym> 
-and netCDF4. 
-This project will dramatically reduce bandwidth usage for <acronym>NCO</acronym>
-<acronym>DDRA</acronym>. 
-</p>
-<a name="index-NASA"></a>
-<a name="index-NRA"></a>
-<a name="index-HDF-2"></a>
-<p>With this first <acronym>NCO</acronym> proposal funded, the content of the
-next <acronym>NCO</acronym> proposal is clear.
-We are interested in obtaining <acronym>NASA</acronym> support for
-<acronym>HDF</acronym>-specific enhancements to <acronym>NCO</acronym>. 
-We plan to submit a proposal to the next suitable <acronym>NASA</acronym>
-<acronym>NRA</acronym> or <acronym>NSF</acronym> opportunity. 
-</p>
-<p>We are considering a lot of interesting ideas for still more proposals.
-Please contact us if you wish to be involved with any future
-<acronym>NCO</acronym>-related proposals.  
-Comments on the proposals and letters of support are also very welcome.
-</p>
-<a name="ccsm"></a> <!-- http://nco.sf.net/nco.html#ccsm --><hr size="6">
-<a name="CCSM-Example"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Proposals-for-Institutional-Funding" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#mybibnode" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Contributing" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#mybibnode" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="CCSM-Example-1"></a>
-<h1 class="chapter">6. CCSM Example</h1>
-<a name="index-CCSM-1"></a>
-
-<p>This chapter illustrates how to use <acronym>NCO</acronym> to
-process and analyze the results of a <acronym>CCSM</acronym> climate simulation.
-</p><table><tr><td> </td><td><pre class="example">************************************************************************
-Task 0: Finding input files
-************************************************************************
-The CCSM model outputs files to a local directory like:
-
-/ptmp/zender/archive/T42x1_40
-
-Each component model has its own subdirectory, e.g., 
-
-/ptmp/zender/archive/T42x1_40/atm
-/ptmp/zender/archive/T42x1_40/cpl
-/ptmp/zender/archive/T42x1_40/ice
-/ptmp/zender/archive/T42x1_40/lnd
-/ptmp/zender/archive/T42x1_40/ocn
-
-within which model output is tagged with the particular model name
-
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-01.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-02.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-03.nc
-...
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-12.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-01.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-02.nc
-...
-
-or 
-
-/ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-01.nc
-/ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-02.nc
-/ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-03.nc
-...
-
-************************************************************************
-Task 1: Regional processing
-************************************************************************
-The first task in data processing is often creating seasonal cycles.
-Imagine a 100-year simulation with its 1200 monthly mean files.
-Our goal is to create a single file containing 12 months of data.
-Each month in the output file is the mean of 100 input files.
-
-Normally, we store the "reduced" data in a smaller, local directory.
-
-caseid='T42x1_40'
-#drc_in="${DATA}/archive/${caseid}/atm"
-drc_in="${DATA}/${caseid}"
-drc_out="${DATA}/${caseid}"
-mkdir -p ${drc_out}
-cd ${drc_out}
-
-Method 1: Assume all data in directory applies
-for mth in {1..12}; do
-  mm=`printf "%02d" $mth`
-  ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-    ${drc_in}/${caseid}.cam2.h0.*-${mm}.nc 
-done # end loop over mth
-
-Method 2: Use shell 'globbing' to construct input filenames
-for mth in {1..12}; do
-  mm=`printf "%02d" $mth`
-  ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-    ${drc_in}/${caseid}.cam2.h0.00??-${mm}.nc \
-    ${drc_in}/${caseid}.cam2.h0.0100-${mm}.nc
-done # end loop over mth
-
-Method 3: Construct input filename list explicitly
-for mth in {1..12}; do
-  mm=`printf "%02d" $mth`
-  fl_lst_in=''
-  for yr in {1..100}; do
-    yyyy=`printf "%04d" $yr`
-    fl_in=${caseid}.cam2.h0.${yyyy}-${mm}.nc
-    fl_lst_in="${fl_lst_in} ${caseid}.cam2.h0.${yyyy}-${mm}.nc"
-  done # end loop over yr
-  ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc -p ${drc_in} \
-    ${fl_lst_in}
-done # end loop over mth
-
-Make sure the output file averages correct input files!
-ncks -M prints global metadata: 
-
-  ncks -M ${drc_out}/${caseid}_clm01.nc
-
-The input files ncra used to create the climatological monthly mean
-will appear in the global attribute named 'history'.
-
-Use ncrcat to aggregate the climatological monthly means
-
-  ncrcat -O -D 1 \
-    ${drc_out}/${caseid}_clm??.nc ${drc_out}/${caseid}_clm_0112.nc
-
-Finally, create climatological means for reference.
-The climatological time-mean:
-
-  ncra -O -D 1 \
-    ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm.nc
-
-The climatological zonal-mean:
-
-  ncwa -O -D 1 -a lon \
-    ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_x.nc
-
-The climatological time- and spatial-mean:
-
-  ncwa -O -D 1 -a lon,lat,time -w gw \
-    ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-This file contains only scalars, e.g., "global mean temperature",
-used for summarizing global results of a climate experiment.
-
-Climatological monthly anomalies = Annual Cycle: 
-Subtract climatological mean from climatological monthly means. 
-Result is annual cycle, i.e., climate-mean has been removed.
-
-  ncbo -O -D 1 -o ${drc_out}/${caseid}_clm_0112_anm.nc \
-    ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-************************************************************************
-Task 2: Correcting monthly averages
-************************************************************************
-The previous step appoximates all months as being equal, so, e.g.,
-February weighs slightly too much in the climatological mean.
-This approximation can be removed by weighting months appropriately.
-We must add the number of days per month to the monthly mean files.
-First, create a shell variable dpm:
-
-unset dpm # Days per month
-declare -a dpm
-dpm=(0 31 28.25 31 30 31 30 31 31 30 31 30 31) # Allows 1-based indexing
-
-Method 1: Create dpm directly in climatological monthly means
-for mth in {1..12}; do
-  mm=`printf "%02d" ${mth}`
-  ncap2 -O -s "dpm=0.0*date+${dpm[${mth}]}" \
-    ${drc_out}/${caseid}_clm${mm}.nc ${drc_out}/${caseid}_clm${mm}.nc
-done # end loop over mth
-
-Method 2: Create dpm by aggregating small files
-for mth in {1..12}; do
-  mm=`printf "%02d" ${mth}`
-  ncap2 -O -v -s "dpm=${dpm[${mth}]}" ~/nco/data/in.nc \
-    ${drc_out}/foo_${mm}.nc
-done # end loop over mth
-ncecat -O -D 1 -p ${drc_out} -n 12,2,2 foo_${mm}.nc foo.nc
-ncrename -O -D 1 -d record,time ${drc_out}/foo.nc
-ncatted -O -h \
-  -a long_name,dpm,o,c,"Days per month" \
-  -a units,dpm,o,c,"days" \
-  ${drc_out}/${caseid}_clm_0112.nc
-ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-Method 3: Create small netCDF file using ncgen
-cat > foo.cdl << 'EOF'
-netcdf foo { 
-dimensions:
-	time=unlimited;
-variables:
-	float dpm(time);
-	dpm:long_name="Days per month";
-	dpm:units="days";
-data:
-	dpm=31,28.25,31,30,31,30,31,31,30,31,30,31;
-}
-EOF
-ncgen -b -o foo.nc foo.cdl
-ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-Another way to get correct monthly weighting is to average daily
-output files, if available.  
-
-************************************************************************
-Task 3: Regional processing
-************************************************************************
-Let's say you are interested in examining the California region.
-Hyperslab your dataset to isolate the appropriate latitude/longitudes.
-
-  ncks -O -D 1 -d lat,30.0,37.0 -d lon,240.0,270.0 \ 
-    ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_0112_Cal.nc
-
-The dataset is now much smaller!
-To examine particular metrics.
-
-************************************************************************
-Task 4: Accessing data stored remotely
-************************************************************************
-OPeNDAP server examples:
-
-UCI DAP servers:
-ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
-ncrcat -O -C -D 3 -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
-  -l /tmp in.nc in.nc ~/foo.nc
-
-Unidata DAP servers:
-ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-ncrcat -O -C -D 3 -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-  -l /tmp in.nc in.nc ~/foo.nc
-
-NOAA DAP servers:
-ncwa -O -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-pres.sfc.1969.nc ~/foo.nc
-
-LLNL PCMDI IPCC OPeNDAP Data Portal: 
-ncks -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
-
-Earth System Grid (ESG): http://www.earthsystemgrid.org
-
-caseid='b30.025.ES01' 
-CCSM3.0 1% increasing CO2 run, T42_gx1v3, 200 years starting in year 400
-Atmospheric post-processed data, monthly averages, e.g.,
-/data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0449-12.nc
-/data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0599-12.nc
-
-ESG supports password-protected FTP access by registered users
-NCO uses the .netrc file, if present, for password-protected FTP access 
-Syntax for accessing single file is, e.g.,
-ncks -O -D 3 \
-  -p ftp://climate.llnl.gov/sresa1b/atm/mo/tas/ncar_ccsm3_0/run1 \
-  -l /tmp tas_A1.SRESA1B_1.CCSM.atmm.2000-01_cat_2099-12.nc ~/foo.nc 
-
-# Average surface air temperature tas for SRESA1B scenario
-# This loop is illustrative and will not work until NCO correctly
-# translates '*' to FTP 'mget' all remote files
-for var in 'tas'; do
-for scn in 'sresa1b'; do
-for mdl in 'cccma_cgcm3_1 cccma_cgcm3_1_t63 cnrm_cm3 csiro_mk3_0 \
-gfdl_cm2_0 gfdl_cm2_1 giss_aom giss_model_e_h giss_model_e_r \
-iap_fgoals1_0_g inmcm3_0 ipsl_cm4 miroc3_2_hires miroc3_2_medres \
-miub_echo_g mpi_echam5 mri_cgcm2_3_2a ncar_ccsm3_0 ncar_pcm1 \
-ukmo_hadcm3 ukmo_hadgem1'; do
-for run in '1'; do
-        ncks -R -O -D 3 -p ftp://climate.llnl.gov/${scn}/atm/mo/${var}/${mdl}/run${run} -l ${DATA}/${scn}/atm/mo/${var}/${mdl}/run${run} '*' ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-done # end loop over run
-done # end loop over mdl
-done # end loop over scn
-done # end loop over var
-
-cd sresa1b/atm/mo/tas/ukmo_hadcm3/run1/
-ncks -H -m -v lat,lon,lat_bnds,lon_bnds -M tas_A1.nc | m
-bds -x 096 -y 073 -m 33 -o ${DATA}/data/dst_3.75x2.5.nc # ukmo_hadcm3
-ncview ${DATA}/data/dst_3.75x2.5.nc
-
-# msk_rgn is California mask on ukmo_hadcm3 grid
-# area is correct area weight on ukmo_hadcm3 grid
-ncks -A -v area,msk_rgn ${DATA}/data/dst_3.75x2.5.nc \
-${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/area_msk_ukmo_hadcm3.nc 
-
-Template for standardized data:
-${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-e.g., raw data
-${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/tas_A1.nc
-becomes standardized data
-
-Level 0: raw from IPCC site--no changes except for name 
-         Make symbolic link name match raw data
-Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-ln -s -f tas_A1.nc sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc
-area_msk_ukmo_hadcm3.nc
-
-Level I: Add all variables (but not standardized in time)
-         to file containing msk_rgn and area
-Template: ${scn}_${mdl}_${run}_${yyyymm}_${yyyymm}.nc
-
-/bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-ncks -A -v tas sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc \
-               sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-ncks -A -v pr  sresa1b_ukmo_hadcm3_run1_pr_200101_209911.nc \
-               sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-If already have file then:
-mv sresa1b_ukmo_hadcm3_run1_200101_209911.nc foo.nc
-/bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-ncks -A -v tas,pr foo.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-Level II: Correct # years, months
-Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-ncks -d time,....... file1.nc file2.nc 
-ncrcat file2.nc file3.nc sresa1b_ukmo_hadcm3_run1_200001_209912.nc
-
-Level III: Many derived products from level II, e.g., 
-
-      A. Global mean timeseries
-      ncwa -w area -a lat,lon \
-           sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy.nc
-
-      B. Califoria average timeseries
-      ncwa -m msk_rgn -w area -a lat,lon \
-           sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy_Cal.nc
-</pre></td></tr></table>
-
-<a name="bibliography"></a> <!-- http://nco.sf.net/nco.html#bibliography -->
-<a name="bib"></a> <!-- http://nco.sf.net/nco.html#bib --><hr size="6">
-<a name="mybibnode"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#CCSM-Example" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Next section in reading order"> > </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#CCSM-Example" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Next chapter"> >> </a>]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="References"></a>
-<h1 class="chapter">7. References</h1>
-<ul class="toc">
-<li>
-<a name="ZeM07"></a>[ZeM07]
- Zender, C. S., and H. J. Mangalam (2007), Scaling Properties of Common Statistical Operators for Gridded Datasets, Int. J. High Perform. Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.
-</li><li>
-<a name="Zen08"></a>[Zen08]
- Zender, C. S. (2008), Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO), Environ. Modell. Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
-</li><li>
-<a name="WZJ07"></a>[WZJ07]
- Wang, D. L., C. S. Zender, and S. F. Jenks (2007), DAP-enabled Server-side Data Reduction and Analysis, Proceedings of the 23rd AMS Conference on Interactive Information and Processing Systems (IIPS) for Meteorology, Oceanography, and Hydrology, Paper 3B.2, January 14-18, San Antonio, TX. American Meteorological Society, AMS Press, Boston, MA.
-</li><li>
-<a name="ZMW06"></a>[ZMW06]
- Zender, C. S., H. Mangalam, and D. L. Wang (2006), Improving Scaling Properties of Common Statistical Operators for Gridded Geoscience Datasets, Eos Trans. AGU, 87(52), Fall Meet. Suppl., Abstract IN53B-0827.
-</li><li>
-<a name="ZeW07"></a>[ZeW07]
- Zender, C. S., and D. L. Wang (2007), High performance distributed data reduction and analysis with the netCDF Operators (NCO), Proceedings of the 23rd AMS Conference on Interactive Information and Processing Systems (IIPS) for Meteorology, Oceanography, and Hydrology, Paper 3B.4, January 14-18, San Antonio, TX. American Meteorological Society, AMS Press, Boston, MA.
-</li><li>
-<a name="WZJ06"></a>[WZJ06]
- Wang, D. L., C. S. Zender, and S. F. Jenks (2006), Server-side netCDF Data Reduction and Analysis, Eos Trans. AGU, 87(52), Fall Meet. Suppl., Abstract IN53B-0826.
-</li><li>
-<a name="WZJ073"></a>[WZJ073]
- Wang, D. L., C. S. Zender, and S. F. Jenks (2007), Server-side parallel data reduction and analysis, in Advances in Grid and Pervasive Computing, Second International Conference, GPC 2007, Paris, France, May 2-4, 2007, Proceedings. IEEE Lecture Notes in Computer Science, vol. 4459, edited by C. Cerin and K.-C. Li, pp. 744-750, Springer-Verlag, Berlin/Heidelberg, doi:10.1007/978-3-540-72360-8_67.
-</li><li>
-<a name="WZJ074"></a>[WZJ074]
- Wang, D. L., C. S. Zender and S. F. Jenks (2007), A System for Scripted Data Analysis at Remote Data Centers, Eos Trans. AGU, 88(52), Fall Meet. Suppl., Abstract IN11B-0469.
-</li><li>
-<a name="WZJ081"></a>[WZJ081]
- Wang, D. L., C. S. Zender and S. F. Jenks (2008), Cluster Workflow Execution of Retargeted Data Analysis Scripts, Proceedings of the 8th IEEE Int’l Symposium on Cluster Computing and the Grid (IEEE CCGRID ’08), pp. 449-458, Lyon, France, May 2008.
-</li><li>
-<a name="WZJ091"></a>[WZJ091]
- Wang, D. L., C. S. Zender, and S. F. Jenks (2009), Efficient Clustered Server-side Data Analysis Workflows using SWAMP, Earth Sci. Inform., 2(3), 141-155, doi:10.1007/s12145-009-0021-z.
-</li></ul>
-
-
-
-<a name="index"></a> <!-- http://nco.sf.net/nco.html#index -->
-<a name="idx"></a> <!-- http://nco.sf.net/nco.html#idx --><hr size="6">
-<a name="General-Index"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#mybibnode" title="Previous section in reading order"> < </a>]</td>
-<td valign="middle" align="left">[ > ]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#mybibnode" title="Beginning of this chapter or previous chapter"> << </a>]</td>
-<td valign="middle" align="left">[<a href="#Top" title="Up section"> Up </a>]</td>
-<td valign="middle" align="left">[ >> ]</td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">   </td>
-<td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<a name="General-Index-1"></a>
-<h1 class="unnumbered">General Index</h1>
-
-
-<table><tr><th valign="top">Jump to:   </th><td><a href="#General-Index-1_cp_symbol-1" class="summary-letter"><b>"</b></a>
-   
-<a href="#General-Index-1_cp_symbol-2" class="summary-letter"><b>#</b></a>
-   
-<a href="#General-Index-1_cp_symbol-3" class="summary-letter"><b>$</b></a>
-   
-<a href="#General-Index-1_cp_symbol-4" class="summary-letter"><b>%</b></a>
-   
-<a href="#General-Index-1_cp_symbol-5" class="summary-letter"><b>'</b></a>
-   
-<a href="#General-Index-1_cp_symbol-6" class="summary-letter"><b>*</b></a>
-   
-<a href="#General-Index-1_cp_symbol-7" class="summary-letter"><b>+</b></a>
-   
-<a href="#General-Index-1_cp_symbol-8" class="summary-letter"><b>-</b></a>
-   
-<a href="#General-Index-1_cp_symbol-9" class="summary-letter"><b>.</b></a>
-   
-<a href="#General-Index-1_cp_symbol-10" class="summary-letter"><b>/</b></a>
-   
-<a href="#General-Index-1_cp_symbol-11" class="summary-letter"><b>0</b></a>
-   
-<a href="#General-Index-1_cp_symbol-12" class="summary-letter"><b>3</b></a>
-   
-<a href="#General-Index-1_cp_symbol-13" class="summary-letter"><b>6</b></a>
-   
-<a href="#General-Index-1_cp_symbol-14" class="summary-letter"><b>;</b></a>
-   
-<a href="#General-Index-1_cp_symbol-15" class="summary-letter"><b><</b></a>
-   
-<a href="#General-Index-1_cp_symbol-16" class="summary-letter"><b>?</b></a>
-   
-<a href="#General-Index-1_cp_symbol-17" class="summary-letter"><b>@</b></a>
-   
-<a href="#General-Index-1_cp_symbol-18" class="summary-letter"><b>[</b></a>
-   
-<a href="#General-Index-1_cp_symbol-19" class="summary-letter"><b>\</b></a>
-   
-<a href="#General-Index-1_cp_symbol-20" class="summary-letter"><b>^</b></a>
-   
-<a href="#General-Index-1_cp_symbol-21" class="summary-letter"><b>_</b></a>
-   
-<a href="#General-Index-1_cp_symbol-22" class="summary-letter"><b>|</b></a>
-   
-<br>
-<a href="#General-Index-1_cp_letter-A" class="summary-letter"><b>A</b></a>
-   
-<a href="#General-Index-1_cp_letter-B" class="summary-letter"><b>B</b></a>
-   
-<a href="#General-Index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
-   
-<a href="#General-Index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
-   
-<a href="#General-Index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
-   
-<a href="#General-Index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
-   
-<a href="#General-Index-1_cp_letter-G" class="summary-letter"><b>G</b></a>
-   
-<a href="#General-Index-1_cp_letter-H" class="summary-letter"><b>H</b></a>
-   
-<a href="#General-Index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
-   
-<a href="#General-Index-1_cp_letter-J" class="summary-letter"><b>J</b></a>
-   
-<a href="#General-Index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
-   
-<a href="#General-Index-1_cp_letter-L" class="summary-letter"><b>L</b></a>
-   
-<a href="#General-Index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
-   
-<a href="#General-Index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
-   
-<a href="#General-Index-1_cp_letter-O" class="summary-letter"><b>O</b></a>
-   
-<a href="#General-Index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
-   
-<a href="#General-Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
-   
-<a href="#General-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
-   
-<a href="#General-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
-   
-<a href="#General-Index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
-   
-<a href="#General-Index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
-   
-<a href="#General-Index-1_cp_letter-V" class="summary-letter"><b>V</b></a>
-   
-<a href="#General-Index-1_cp_letter-W" class="summary-letter"><b>W</b></a>
-   
-<a href="#General-Index-1_cp_letter-X" class="summary-letter"><b>X</b></a>
-   
-<a href="#General-Index-1_cp_letter-Y" class="summary-letter"><b>Y</b></a>
-   
-</td></tr></table>
-<table border="0" class="index-cp">
-<tr><td></td><th align="left">Index Entry</th><th align="left"> Section</th></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-1">"</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0022-_0028double-quote_0029"><code>"</code> (double quote)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-2">#</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0023include"><code>#include</code></a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-3">$</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0024-_0028wildcard-character_0029"><code>$</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-4">%</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0025-_0028modulus_0029"><code>%</code> (modulus)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-5">'</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0027-_0028end-quote_0029"><code>'</code> (end quote)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-6">*</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002a"><code>*</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002a-_0028filename-expansion_0029"><code>*</code> (filename expansion)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002a-_0028multiplication_0029"><code>*</code> (multiplication)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002a-_0028wildcard-character_0029"><code>*</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-7">+</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002b"><code>+</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002b-_0028addition_0029"><code>+</code> (addition)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002b-_0028wildcard-character_0029"><code>+</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-8">-</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d"><code>-</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d-_0028subtraction_0029"><code>-</code> (subtraction)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002d3"><code>--3</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002d4"><code>--4</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002d64bit"><code>--64bit</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dabc"><code>--abc</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dalphabetize"><code>--alphabetize</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dapn"><code>--apn</code></a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dapn-1"><code>--apn</code></a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dapn-2"><code>--apn</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dappend"><code>--append</code></a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dappend-1"><code>--append</code></a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dappend-2"><code>--append</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dauxiliary"><code>--auxiliary</code></a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dauxiliary-lon_005fmin_002clon_005fmax_002clat_005fmin_002clat_005fmax"><code>--auxiliary <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></code></a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dbinary"><code>--binary</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dbnr"><code>--bnr</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dchunk_005fdimension"><code>--chunk_dimension</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dchunk_005fmap"><code>--chunk_map</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dchunk_005fpolicy"><code>--chunk_policy</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dchunk_005fscalar"><code>--chunk_scalar</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcnk_005fdmn"><code>--cnk_dmn</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcnk_005fmap"><code>--cnk_map</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcnk_005fmap-cnk_005fmap"><code>--cnk_map <var>cnk_map</var></code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcnk_005fplc"><code>--cnk_plc</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcnk_005fscl"><code>--cnk_scl</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcoords"><code>--coords</code></a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcoords-1"><code>--coords</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcrd"><code>--crd</code></a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dcrd-1"><code>--crd</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddata"><code>--data</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddbg_005flvl-debug_002dlevel"><code>--dbg_lvl <var>debug-level</var></code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddbg_005flvl-debug_002dlevel-1"><code>--dbg_lvl <var>debug-level</var></code></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddbg_005flvl-debug_002dlevel-2"><code>--dbg_lvl <var>debug-level</var></code></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddebug_002dlevel-debug_002dlevel"><code>--debug-level <var>debug-level</var></code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddebug_002dlevel-debug_002dlevel-1"><code>--debug-level <var>debug-level</var></code></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddeflate"><code>--deflate</code></a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddfl_005flvl"><code>--dfl_lvl</code></a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddimension-dim_002c_005bmin_005d_002c_005bmax_005d_002cstride"><code>--dimension <var>dim</var>,[<var>min</var>],[<var>max</var>],<var>stride</var></code></a></td><td valign="top"><a href="#Stride">3.15 Stride</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-1"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-2"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddimension-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-3"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddmn-dim_002c_005bmin_005d_002c_005bmax_005d_002cstride"><code>--dmn <var>dim</var>,[<var>min</var>],[<var>max</var>],<var>stride</var></code></a></td><td valign="top"><a href="#Stride">3.15 Stride</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d"><code>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-1"><code>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-2"><code>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002ddmn-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-3"><code>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dexclude"><code>--exclude</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dexclude-1"><code>--exclude</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfile_005fformat"><code>--file_format</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfile_005flist"><code>--file_list</code></a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfix_005frec_005fdmn"><code>--fix_rec_dmn</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfl_005fbnr"><code>--fl_bnr</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfl_005ffmt"><code>--fl_fmt</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfl_005flst_005fin"><code>--fl_lst_in</code></a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfl_005fout-fl_005fout"><code>--fl_out <var>fl_out</var></code></a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfl_005fspt"><code>--fl_spt</code></a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfnc_005ftbl"><code>--fnc_tbl</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dfortran"><code>--fortran</code></a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dglb_005fmtd_005fspr"><code>--glb_mtd_spr</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dhdr_005fpad-hdr_005fpad"><code>--hdr_pad <var>hdr_pad</var></code></a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dheader_005fpad-hdr_005fpad"><code>--header_pad <var>hdr_pad</var></code></a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dhieronymus"><code>--hieronymus</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dhistory"><code>--history</code></a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dhst"><code>--hst</code></a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dlcl-output_002dpath"><code>--lcl <var>output-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dlocal-output_002dpath"><code>--local <var>output-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmap-cnk_005fmap"><code>--map <var>cnk_map</var></code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmap-pck_005fmap"><code>--map <var>pck_map</var></code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_002dvalue-mask_005fval"><code>--mask-value <var>mask_val</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_002dvariable-mask_005fvar"><code>--mask-variable <var>mask_var</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_005fcomparator-mask_005fcomp"><code>--mask_comparator <var>mask_comp</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_005fcondition-mask_005fcond"><code>--mask_condition <var>mask_cond</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_005fcondition-mask_005fcond-1"><code>--mask_condition <var>mask_cond</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_005fvalue-mask_005fval"><code>--mask_value <var>mask_val</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmask_005fvariable-mask_005fvar"><code>--mask_variable <var>mask_var</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dMetadata"><code>--Metadata</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmetadata"><code>--metadata</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmk_005frec_005fdmn-dim"><code>--mk_rec_dmn <var>dim</var></code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmsk_005fcmp_005ftyp-mask_005fcomp"><code>--msk_cmp_typ <var>mask_comp</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmsk_005fcnd-mask_005fcond"><code>--msk_cnd <var>mask_cond</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmsk_005fcnd_005fsng-mask_005fcond"><code>--msk_cnd_sng <var>mask_cond</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmsk_005fnm-mask_005fvar"><code>--msk_nm <var>mask_var</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmsk_005fval-mask_005fval"><code>--msk_val <var>mask_val</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmsk_005fvar-mask_005fvar"><code>--msk_var <var>mask_var</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dmtd"><code>--mtd</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dMtd"><code>--Mtd</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dnetcdf4"><code>--netcdf4</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dnintap-loop"><code>--nintap <var>loop</var></code></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dcoords"><code>--no-coords</code></a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dcoords-1"><code>--no-coords</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dcrd"><code>--no-crd</code></a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dno_002dcrd-1"><code>--no-crd</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dno_005frec_005fdmn"><code>--no_rec_dmn</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002domp_005fnum_005fthreads-thr_005fnbr"><code>--omp_num_threads <var>thr_nbr</var></code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002doperation-op_005ftyp"><code>--operation <var>op_typ</var></code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002doperation-op_005ftyp-1"><code>--operation <var>op_typ</var></code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dop_005frlt-mask_005fcomp"><code>--op_rlt <var>mask_comp</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dop_005ftyp-op_005ftyp"><code>--op_typ <var>op_typ</var></code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dop_005ftyp-op_005ftyp-1"><code>--op_typ <var>op_typ</var></code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002doutput-fl_005fout"><code>--output <var>fl_out</var></code></a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002doverwrite"><code>--overwrite</code></a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002doverwrite-1"><code>--overwrite</code></a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dovr"><code>--ovr</code></a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dovr-1"><code>--ovr</code></a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpack_005fpolicy-pck_005fplc"><code>--pack_policy <var>pck_plc</var></code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpath-input_002dpath"><code>--path <var>input-path</var></code></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpath-input_002dpath-1"><code>--path <var>input-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpck_005fmap-pck_005fmap"><code>--pck_map <var>pck_map</var></code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpck_005fplc-pck_005fplc"><code>--pck_plc <var>pck_plc</var></code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dprint"><code>--print</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dprn"><code>--prn</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dprn_005ffnc_005ftbl"><code>--prn_fnc_tbl</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpseudonym"><code>--pseudonym</code></a></td><td valign="top"><a href="#Symbolic-Links">1.3 Symbolic Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpth-input_002dpath"><code>--pth <var>input-path</var></code></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dpth-input_002dpath-1"><code>--pth <var>input-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dquiet"><code>--quiet</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002drcd_005fnm-ulm_005fnm">‘<samp>--rcd_nm <var>ulm_nm</var></samp>’</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dretain"><code>--retain</code></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002drevision"><code>--revision</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002drevision-1"><code>--revision</code></a></td><td valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002drtn"><code>--rtn</code></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dscript"><code>--script</code></a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dscript_002dfile"><code>--script-file</code></a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dsng_005ffmt"><code>--sng_fmt</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dspt"><code>--spt</code></a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dstring"><code>--string</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dthreads-thr_005fnbr"><code>--threads <var>thr_nbr</var></code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dthr_005fnbr-thr_005fnbr"><code>--thr_nbr <var>thr_nbr</var></code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dulm_005fnm-ulm_005fnm">‘<samp>--ulm_nm <var>ulm_nm</var></samp>’</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dunits"><code>--units</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dunpack"><code>--unpack</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dupk"><code>--upk</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dvariable-var"><code>--variable <var>var</var></code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dvariable-var-1"><code>--variable <var>var</var></code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dversion"><code>--version</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dversion-1"><code>--version</code></a></td><td valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dvrs"><code>--vrs</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dvrs-1"><code>--vrs</code></a></td><td valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dweight-weight"><code>--weight <var>weight</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dweight-wgt1_005b_002cwgt2_005d"><code>--weight <var>wgt1</var>[,<var>wgt2</var>]</code></a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dwgt_005fvar-weight"><code>--wgt_var <var>weight</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dwgt_005fvar-wgt1_005b_002cwgt2_005d"><code>--wgt_var <var>wgt1</var>[,<var>wgt2</var>]</code></a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dxcl"><code>--xcl</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d_002dxcl-1"><code>--xcl</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d3"><code>-3</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d3-1"><code>-3</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d4"><code>-4</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002d4-1"><code>-4</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dA"><code>-A</code></a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002da"><code>-a</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dA-1"><code>-A</code></a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002da-1"><code>-a</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dA-2"><code>-A</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dA-3">‘<samp>-A</samp>’</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dB"><code>-B</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002db">‘<samp>-b</samp>’</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002db-1">‘<samp>-b</samp>’</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002db-2"><code>-b</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dB-mask_005fcond"><code>-B <var>mask_cond</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dB-mask_005fcond-1"><code>-B <var>mask_cond</var></code></a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dC"><code>-C</code></a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dc"><code>-c</code></a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dc-1"><code>-c</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dC-1"><code>-C</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dC-2"><code>-C</code></a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dD"><code>-D</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dD-debug_002dlevel"><code>-D <var>debug-level</var></code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dD-debug_002dlevel-1"><code>-D <var>debug-level</var></code></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dD-debug_002dlevel-2"><code>-D <var>debug-level</var></code></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dd-dim_002c_005bmin_005d_002c_005bmax_005d_002cstride"><code>-d <var>dim</var>,[<var>min</var>],[<var>max</var>],<var>stride</var></code></a></td><td valign="top"><a href="#Stride">3.15 Stride</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-1"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-2"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005b_002c_005bstride_005d_005d_005d-3"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dd-dim_002c_005bmin_005d_005b_002c_005bmax_005d_005d"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>]]</code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dF"><code>-F</code></a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002df"><code>-f</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dH"><code>-H</code></a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dh"><code>-h</code></a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dH-1"><code>-H</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dh-1"><code>-h</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dI"><code>-I</code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dL"><code>-L</code></a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dl-output_002dpath"><code>-l <var>output-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dl-output_002dpath-1"><code>-l <var>output-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dm"><code>-m</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dM"><code>-M</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dM-1"><code>-M</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dM-2"><code>-M</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dM-cnk_005fmap"><code>-M <var>cnk_map</var></code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dm-mask_005fvar"><code>-m <var>mask_var</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dM-pck_005fmap"><code>-M <var>pck_map</var></code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dN"><code>-N</code></a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dn-loop"><code>-n <var>loop</var></code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dn-loop-1"><code>-n <var>loop</var></code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dn-loop-2"><code>-n <var>loop</var></code></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dO"><code>-O</code></a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dO-1"><code>-O</code></a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002do-fl_005fout"><code>-o <var>fl_out</var></code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002do-fl_005fout-1"><code>-o <var>fl_out</var></code></a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dP"><code>-P</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dp-input_002dpath"><code>-p <var>input-path</var></code></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dp-input_002dpath-1"><code>-p <var>input-path</var></code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dP-pck_005fplc"><code>-P <var>pck_plc</var></code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dq"><code>-q</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dQ"><code>-Q</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dr"><code>-r</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dR"><code>-R</code></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dr-1"><code>-r</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dr-2"><code>-r</code></a></td><td valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002ds"><code>-s</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dt-thr_005fnbr"><code>-t <var>thr_nbr</var></code></a></td><td valign="top"><a href="#Single-and-Multi_002dfile-Operators">2.9.1 Single and Multi-file Operators</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dt-thr_005fnbr-1"><code>-t <var>thr_nbr</var></code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dU"><code>-U</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002du"><code>-u</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002du-ulm_005fnm">‘<samp>-u <var>ulm_nm</var></samp>’</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dv">‘<samp>-v</samp>’</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dv-var"><code>-v <var>var</var></code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dv-var-1"><code>-v <var>var</var></code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dw-weight"><code>-w <var>weight</var></code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dw-wgt1_005b_002cwgt2_005d"><code>-w <var>wgt1</var>[,<var>wgt2</var>]</code></a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dX"><code>-X</code></a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dx"><code>-x</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dx-1"><code>-x</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dX-lon_005fmin_002clon_005fmax_002clat_005fmin_002clat_005fmax"><code>-X <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></code></a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dy-op_005ftyp"><code>-y <var>op_typ</var></code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002dy-op_005ftyp-1"><code>-y <var>op_typ</var></code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-9">.</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002e"><kbd>.</kbd></a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002e-_0028wildcard-character_0029"><code>.</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002enetrc">‘<tt>.netrc</tt>’</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002erhosts">‘<tt>.rhosts</tt>’</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-10">/</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002f"><code>/</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002f-_0028division_0029"><code>/</code> (division)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002f_002a_002e_002e_002e_002a_002f-_0028comment_0029"><code>/*...*/</code> (comment)</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_002f_002f-_0028comment_0029"><code>//</code> (comment)</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-11">0</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-0-_0028NUL_0029"><code>0</code> (NUL)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-12">3</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-32_002dbit-offset-file-format">32-bit offset file format</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-13">6</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-64_002dbit-offset-file-format">64-bit offset file format</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-64BIT-files"><code>64BIT</code> files</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-14">;</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003b-_0028end-of-statement_0029"><code>;</code> (end of statement)</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-15"><</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003carpa_002fnameser_002eh_003e"><code>‘<tt><arpa/nameser.h></tt>’</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003cresolv_002eh_003e"><code>‘<tt><resolv.h></tt>’</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-16">?</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003f-_0028filename-expansion_0029"><code>?</code> (filename expansion)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003f-_0028question-mark_0029"><code>?</code> (question mark)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_003f-_0028wildcard-character_0029"><code>?</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-17">@</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0040-_0028attribute_0029"><code>@</code> (attribute)</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-18">[</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005b_005d-_0028array-delimiters_0029"><code>[]</code> (array delimiters)</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-19">\</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005c-_0028backslash_0029"><code>\</code> (backslash)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005c_0022-_0028protected-double-quote_0029"><code>\"</code> (protected double quote)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005c_0027-_0028protected-end-quote_0029"><code>\'</code> (protected end quote)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005c_003f-_0028protected-question-mark_0029"><code>\?</code> (protected question mark)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005ca-_0028ASCII-BEL_002c-bell_0029"><code>\a</code> (<acronym>ASCII</acronym> BEL, bell)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005cb-_0028ASCII-BS_002c-backspace_0029"><code>\b</code> (<acronym>ASCII</acronym> BS, backspace)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005cf-_0028ASCII-FF_002c-formfeed_0029"><code>\f</code> (<acronym>ASCII</acronym> FF, formfeed)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005cn-_0028ASCII-LF_002c-linefeed_0029"><code>\n</code> (<acronym>ASCII</acronym> LF, linefeed)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005cn-_0028linefeed_0029"><code>\n</code> (linefeed)</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005cr-_0028ASCII-CR_002c-carriage-return_0029"><code>\r</code> (<acronym>ASCII</acronym> CR, carriage return)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005ct-_0028ASCII-HT_002c-horizontal-tab_0029"><code>\t</code> (<acronym>ASCII</acronym> HT, horizontal tab)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005ct-_0028horizontal-tab_0029"><code>\t</code> (horizontal tab)</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005cv-_0028ASCII-VT_002c-vertical-tab_0029"><code>\v</code> (<acronym>ASCII</acronym> VT, vertical tab)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005c_005c-_0028ASCII-_005c_002c-backslash_0029"><code>\\</code> (<acronym>ASCII</acronym> \, backslash)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005c_005c-_0028protected-backslash_0029"><code>\\</code> (protected backslash)</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-20">^</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005e-_0028power_0029"><code>^</code> (power)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005e-_0028wildcard-character_0029"><code>^</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-21">_</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue"><code>_FillValue</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue-1"><code>_FillValue</code></a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue-2"><code>_FillValue</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue-3"><code>_FillValue</code></a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue-4"><var>_FillValue</var></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue-5"><code>_FillValue</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005fFillValue-6"><code>_FillValue</code></a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_symbol-22">|</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_007c-_0028wildcard-character_0029"><code>|</code> (wildcard character)</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-A">A</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-abs"><var>abs</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-absolute-value">absolute value</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-acos"><var>acos</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-acosh"><var>acosh</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add"><code>add</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-adding-data">adding data</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-adding-data-1">adding data</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-addition">addition</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-addition-1">addition</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-addition-2">addition</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005foffset"><var>add_offset</var></a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005foffset-1"><code>add_offset</code></a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005foffset-2"><code>add_offset</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005foffset-3"><code>add_offset</code></a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005foffset-4"><code>add_offset</code></a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Alexander-Hansen">Alexander Hansen</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-alias"><code>alias</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-alias-1"><code>alias</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-all">‘<samp>all</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-alphabetization">alphabetization</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-alphabetize-output">alphabetize output</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-alternate-invocations">alternate invocations</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-anomalies">anomalies</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ANSI"><acronym>ANSI</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ANSI-C"><code>ANSI C</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-data">appending data</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-data-1">appending data</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-to-files">appending to files</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-to-files-1">appending to files</a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-to-files-2">appending to files</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-variables">appending variables</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-appending-variables-1">appending variables</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-AR4">AR4</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arccosine-function">arccosine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arcsine-function">arcsine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arctangent-function">arctangent function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-area"><code>area</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arithmetic-operators">arithmetic operators</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arithmetic-operators-1">arithmetic operators</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arithmetic-operators-2">arithmetic operators</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arithmetic-processor">arithmetic processor</a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ARM-conventions"><acronym>ARM</acronym> conventions</a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ARM-conventions-1">ARM conventions</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-array"><code>array</code></a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-array-function"><code>array</code> function</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-array-indexing">array indexing</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-array-storage">array storage</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-array-syntax">array syntax</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arrays">arrays</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-arrival-value">arrival value</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ASCII"><acronym>ASCII</acronym></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ASCII-1"><acronym>ASCII</acronym></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-asin"><var>asin</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-asinh"><var>asinh</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-assignment-statement">assignment statement</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-asynchronous-file-access">asynchronous file access</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-atan"><var>atan</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-atanh"><var>atanh</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attribute-inheritance">attribute inheritance</a></td><td valign="top"><a href="#Attributes">4.1.6 Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attribute-names">attribute names</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attribute-names-1">attribute names</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attribute-propagation">attribute propagation</a></td><td valign="top"><a href="#Attributes">4.1.6 Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attribute-syntax">attribute syntax</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attribute_002c-units">attribute, <code>units</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes">attributes</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-appending">attributes, appending</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-creating">attributes, creating</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-deleting">attributes, deleting</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-editing">attributes, editing</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global">attributes, global</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-1">attributes, global</a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-2">attributes, global</a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-3">attributes, global</a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-4">attributes, global</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-5">attributes, global</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-6">attributes, global</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-7">attributes, global</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-8">attributes, global</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-9">attributes, global</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-global-10">attributes, global</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-modifying">attributes, modifying</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributes_002c-overwriting">attributes, overwriting</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-attributesncap">attributes<code>ncap</code></a></td><td valign="top"><a href="#Attributes">4.1.6 Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-autoconf"><code>autoconf</code></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-automagic">automagic</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-automagic-1">automagic</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-automatic-type-conversion">automatic type conversion</a></td><td valign="top"><a href="#Type-Conversion">3.26 Type Conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-automatic-type-conversion-1">automatic type conversion</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-auxiliary-coordinates">auxiliary coordinates</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-average">average</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-average-1">average</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-averaging-data">averaging data</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-averaging-data-1">averaging data</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-averaging-data-2">averaging data</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-averaging-data-3">averaging data</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-avg"><code>avg</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-avg_0028_0029">avg()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-avgsqr"><code>avgsqr</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-B">B</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Barry-deFreese">Barry deFreese</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-base_005ftime"><code>base_time</code></a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bash"><code>bash</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Bash-shell">Bash shell</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Bash-Shell">Bash Shell</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-batch-mode">batch mode</a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-benchmarks">benchmarks</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Bessel-function">Bessel function</a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Bill-Kocik">Bill Kocik</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-binary-format">binary format</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-binary-operations">binary operations</a></td><td valign="top"><a href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-binary-operations-1">binary operations</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-binary-Operators">binary Operators</a></td><td valign="top"><a href="#Expressions">4.1.2 Expressions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bounds"><code>bounds</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bounds-convention">bounds convention</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Bourne-Shell">Bourne Shell</a></td><td valign="top"><a href="#Stride">3.15 Stride</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Bourne-Shell-1">Bourne Shell</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Brian-Mays">Brian Mays</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-broadcasting-variables">broadcasting variables</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-broadcasting-variables-1">broadcasting variables</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-broadcasting-variables-2">broadcasting variables</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-BSD"><code>BSD</code></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-buffering">buffering</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bugs_002c-reporting">bugs, reporting</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-byte_0028_0029">byte()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-C">C</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-index-convention">C index convention</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language">C language</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-1">C language</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-2">C language</a></td><td valign="top"><a href="#Automatic-type-conversion">3.26.1 Automatic type conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-3">C language</a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-4">C language</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-5">C language</a></td><td valign="top"><a href="#Expressions">4.1.2 Expressions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-6">C language</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-language-7">C language</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-Shell">C Shell</a></td><td valign="top"><a href="#Stride">3.15 Stride</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C-Shell-1">C Shell</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-c_002b_002b"><code>c++</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_002b_002b">C++</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C89">C89</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C89-1">C89</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C99">C99</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C99-1">C99</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CC"><code>CC</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cc"><code>cc</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CCM-Processor"><acronym>CCM</acronym> Processor</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CCM-Processor-1"><acronym>CCM</acronym> Processor</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CCM-Processor-2"><acronym>CCM</acronym> Processor</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CCSM"><acronym>CCSM</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CCSM-1">CCSM</a></td><td valign="top"><a href="#CCSM-Example">6. CCSM Example</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CCSM-conventions"><acronym>CCSM</acronym> conventions</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ceil"><var>ceil</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ceiling-function">ceiling function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cell_002dbased-grids">cell-based grids</a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CF-conventions"><acronym>CF</acronym> conventions</a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CF-conventions-1"><acronym>CF</acronym> conventions</a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CF-conventions-2">CF conventions</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CF-conventions-3"><acronym>CF</acronym> conventions</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CF-conventions-4"><acronym>CF</acronym> conventions</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-change_005fmiss_0028_0029">change_miss()</a></td><td valign="top"><a href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-char_0028_0029">char()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-characters_002c-special">characters, special</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Charlie-Zender">Charlie Zender</a></td><td valign="top"><a href="#Foreword">Foreword</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Charlie-Zender-1">Charlie Zender</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chocolate">chocolate</a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunking">chunking</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunking-1">chunking</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunking-2">chunking</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunking-map">chunking map</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunking-map-1">chunking map</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunking-policy">chunking policy</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-chunksize">chunksize</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CLASSIC-files"><code>CLASSIC</code> files</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-client_002dserver">client-server</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Climate-and-Forecast-Metadata-Convention">Climate and Forecast Metadata Convention</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model">climate model</a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model-1">climate model</a></td><td valign="top"><a href="#Climate-Model-Paradigm">2.2 Climate Model Paradigm</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model-2">climate model</a></td><td valign="top"><a href="#Concatenation">2.6.1 Concatenators <code>ncrcat</code> and <code>ncecat</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model-3">climate model</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model-4">climate model</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model-5">climate model</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-climate-model-6">climate model</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-clipping-operators">clipping operators</a></td><td valign="top"><a href="#Expressions">4.1.2 Expressions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-CMIP">CMIP</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fall">‘<samp>cnk_all</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fdmn">‘<samp>cnk_dmn</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fg2d">‘<samp>cnk_g2d</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fg3d">‘<samp>cnk_g3d</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fmap"><var>cnk_map</var></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fprd">‘<samp>cnk_prd</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005frd1">‘<samp>cnk_rd1</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fscl">‘<samp>cnk_scl</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cnk_005fxpl">‘<samp>cnk_xpl</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Comeau">Comeau</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-command-line-options">command line options</a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-command-line-switches">command line switches</a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-command-line-switches-1">command line switches</a></td><td valign="top"><a href="#Common-features">3. NCO Features</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-command-line-switches-2">command line switches</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-command-line-switches-3">command line switches</a></td><td valign="top"><a href="#Operator-Reference-Manual">4. Operator Reference Manual</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-comments">comments</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-como"><code>como</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Compaq">Compaq</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-comparator">comparator</a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-compatability">compatability</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-compilers">compilers</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-complementary-error-function">complementary error function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-compression">compression</a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-compression-1">compression</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-concatenation">concatenation</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-concatenation-1">concatenation</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-concatenation-2">concatenation</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-concatenation-3">concatenation</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-conditional-Operator">conditional Operator</a></td><td valign="top"><a href="#Expressions">4.1.2 Expressions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-config_002eguess">‘<tt>config.guess</tt>’</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-configure_002eeg">‘<tt>configure.eg</tt>’</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-constraint-expressions">constraint expressions</a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-contributing">contributing</a></td><td valign="top"><a href="#Contributing">5. Contributing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-contributors">contributors</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-limits">coordinate limits</a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-variable">coordinate variable</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-variable-1">coordinate variable</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-variable-2">coordinate variable</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-variable-3">coordinate variable</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-variable-4">coordinate variable</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinate-variables">coordinate variables</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinates"><code>coordinates</code></a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinates-1"><code>coordinates</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-coordinates-convention">coordinates convention</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-core-dump">core dump</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-core-dump-1"><code>core dump</code></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-core-dump-2"><code>core dump</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cos"><var>cos</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cosh"><var>cosh</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cosine-function">cosine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-covariance">covariance</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Cray">Cray</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Cray-1">Cray</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-csh"><code>csh</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-cxx"><code>cxx</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Cygwin">Cygwin</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Cygwin-1">Cygwin</a></td><td valign="top"><a href="#Symbolic-Links">1.3 Symbolic Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-C_005fformat"><var>C_format</var></a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-D">D</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Daniel-Baumann">Daniel Baumann</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Daniel-Wang">Daniel Wang</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DAP"><acronym>DAP</acronym></a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-data-access-protocol">data access protocol</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-data-safety">data safety</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-data-safety-1">data safety</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-data_002c-missing">data, missing</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-data_002c-missing-1">data, missing</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-date"><code>date</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-datesec"><code>datesec</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dbg_005flvl"><var>dbg_lvl</var></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dbg_005flvl-1"><var>dbg_lvl</var></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dbg_005flvl-2"><var>dbg_lvl</var></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DDRA"><acronym>DDRA</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Debian">Debian</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-debug_002dlevel"><var>debug-level</var></a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-debug_002dlevel-1"><var>debug-level</var></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-debugging">debugging</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-debugging-1">debugging</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-debugging-2">debugging</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DEC"><acronym>DEC</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-defdim_0028_0029">defdim()</a></td><td valign="top"><a href="#Dimensions">4.1.3 Dimensions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-deflation">deflation</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-deflation-1">deflation</a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-deflation-2">deflation</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension">degenerate dimension</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-1">degenerate dimension</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-2">degenerate dimension</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-3">degenerate dimension</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-4">degenerate dimension</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-5">degenerate dimension</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-6">degenerate dimension</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-7">degenerate dimension</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-degenerate-dimension-8">degenerate dimension</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-delete_005fmiss_0028_0029">delete_miss()</a></td><td valign="top"><a href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-demotion">demotion</a></td><td valign="top"><a href="#Type-Conversion">3.26 Type Conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-derived-fields">derived fields</a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-derived-fields-1">derived fields</a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Digital">Digital</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dimension-limits">dimension limits</a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dimension-names">dimension names</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dimensions_002c-growing">dimensions, growing</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dimensionsncap">dimensions<code>ncap</code></a></td><td valign="top"><a href="#Dimensions">4.1.3 Dimensions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-disjoint-files">disjoint files</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Distributed-Data-Reduction-_0026-Analysis">Distributed Data Reduction & Analysis</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Distributed-Oceanographic-Data-System">Distributed Oceanographic Data System</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-divide"><code>divide</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dividing-data">dividing data</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-division">division</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dmn">‘<samp>dmn</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-documentation">documentation</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DODS"><acronym>DODS</acronym></a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DODS-1"><acronym>DODS</acronym></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-DODS_005fROOT"><code>DODS_ROOT</code></a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dot-product">dot product</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dot-product-1">dot product</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-double-precision">double precision</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-double_0028_0029">double()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dynamic-linking">dynamic linking</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-E">E</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Ed-Hill">Ed Hill</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-eddy-covariance">eddy covariance</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-editing-attributes">editing attributes</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-egrep"><code>egrep</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Elliptic-integrals">Elliptic integrals</a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ensemble">ensemble</a></td><td valign="top"><a href="#Concatenation">2.6.1 Concatenators <code>ncrcat</code> and <code>ncecat</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ensemble-1">ensemble</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ensemble-average">ensemble average</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ensemble-concatenation">ensemble concatenation</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-erf"><var>erf</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-erfc"><var>erfc</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Eric-Blake">Eric Blake</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-error-function">error function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-error-tolerance">error tolerance</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exclusion">exclusion</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exclusion-1">exclusion</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exclusion-2">exclusion</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-execution-time">execution time</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-execution-time-1">execution time</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-execution-time-2">execution time</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-execution-time-3">execution time</a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-execution-time-4">execution time</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-execution-time-5">execution time</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exp"><var>exp</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exponentiation">exponentiation</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exponentiation-function">exponentiation function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-expressions">expressions</a></td><td valign="top"><a href="#Expressions">4.1.2 Expressions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extended-regular-expressions">extended regular expressions</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extended-regular-expressions-1">extended regular expressions</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extended-regular-expressions-2">extended regular expressions</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extended-regular-expressions-3">extended regular expressions</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extended-regular-expressions-4">extended regular expressions</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extraction">extraction</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extraction-1">extraction</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-extraction-2">extraction</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-F">F</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-f90"><code>f90</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-features_002c-requesting">features, requesting</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file-deletion">file deletion</a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file-removal">file removal</a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-file-retention">file retention</a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-files_002c-multiple">files, multiple</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-files_002c-numerous-input">files, numerous input</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Filipe-Fernandes">Filipe Fernandes</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-findgen_002dequivalent">findgen-equivalent</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-fixed-dimension">fixed dimension</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-fixed-dimension-1">fixed dimension</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-flags">flags</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-float"><code>float</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-float_0028_0029">float()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-floor"><code>floor</code></a></td><td valign="top"><a href="#Automatic-type-conversion">3.26.1 Automatic type conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-floor-1"><var>floor</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-floor-function">floor function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-flt_005fbyt">‘<samp>flt_byt</samp>’</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-flt_005fsht">‘<samp>flt_sht</samp>’</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-for_0028_0029">for()</a></td><td valign="top"><a href="#Loops">4.1.14 Loops</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-force-append">force append</a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-force-overwrite">force overwrite</a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-foreword">foreword</a></td><td valign="top"><a href="#Foreword">Foreword</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Fortran">Fortran</a></td><td valign="top"><a href="#Automatic-type-conversion">3.26.1 Automatic type conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Fortran-1">Fortran</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Fortran-2">Fortran</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Fortran-index-convention">Fortran index convention</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-FORTRAN_005fformat"><var>FORTRAN_format</var></a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Francesco-Lovergine">Francesco Lovergine</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-FTP"><acronym>FTP</acronym></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ftp"><code>ftp</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ftp-1"><code>ftp</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-funding">funding</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-G">G</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-g_002b_002b"><code>g++</code></a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-g2d">‘<samp>g2d</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-g3d">‘<samp>g3d</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gamma"><var>gamma</var></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gamma-1"><var>gamma</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gamma-function">gamma function</a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gamma-function-1">gamma function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Gaussian-weights">Gaussian weights</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Gavin-Burris">Gavin Burris</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Gayathri-Venkitachalam">Gayathri Venkitachalam</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gcc"><code>gcc</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gcc-1"><code>gcc</code></a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GCM"><acronym>GCM</acronym></a></td><td valign="top"><a href="#Climate-Model-Paradigm">2.2 Climate Model Paradigm</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-George-Shapavalov">George Shapavalov</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-George-Shapovalov">George Shapovalov</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gethostname"><code>gethostname</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-getopt"><code>getopt</code></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-getopt_002eh">‘<tt>getopt.h</tt>’</a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-getopt_005flong"><code>getopt_long</code></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-getuid"><code>getuid</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-get_005fmiss_0028_0029">get_miss()</a></td><td valign="top"><a href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes">global attributes</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-1">global attributes</a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-2">global attributes</a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-3">global attributes</a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-4">global attributes</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-5">global attributes</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-6">global attributes</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-7">global attributes</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-8">global attributes</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-9">global attributes</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-global-attributes-10">global attributes</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing">globbing</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing-1">globbing</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing-2">globbing</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing-3">globbing</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing-4">globbing</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing-5">globbing</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-globbing-6">globbing</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GNU"><acronym>GNU</acronym></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GNU-1"><acronym>GNU</acronym></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gnu_002dwin32"><code>gnu-win32</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GNU_002fLinux"><acronym>GNU</acronym>/Linux</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GNUmakefile">‘<tt>GNUmakefile</tt>’</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-God">God</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-growing-dimensions">growing dimensions</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GSL"><acronym>GSL</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GSL-1"><acronym>GSL</acronym></a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-GSL-2"><acronym>GSL</acronym></a></td><td valign="top"><a href="#GSL-interpolation">4.1.20 GSL interpolation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gsl_005fsf_005fbessel_005fJn"><var>gsl_sf_bessel_Jn</var></a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gsl_005fsf_005fgamma"><var>gsl_sf_gamma</var></a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gsl_005fsf_005flegendre_005fPl"><code>gsl_sf_legendre_Pl</code></a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gw"><code>gw</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-gw-1"><code>gw</code></a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-H">H</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Harry-Mangalam">Harry Mangalam</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HDF"><acronym>HDF</acronym></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HDF-1"><acronym>HDF</acronym></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HDF-2"><acronym>HDF</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HDF5"><acronym>HDF5</acronym></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HDF5-1"><acronym>HDF5</acronym></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-help">help</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Henry-Butowsky">Henry Butowsky</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hgh_005fbyt">‘<samp>hgh_byt</samp>’</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hgh_005fsht">‘<samp>hgh_sht</samp>’</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Hierarchical-Data-Format">Hierarchical Data Format</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history"><code>history</code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-1"><code>history</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-2"><code>history</code></a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-3"><code>history</code></a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-4"><code>history</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-5"><code>history</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HP"><acronym>HP</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HPSS"><acronym>HPSS</acronym></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hsi"><code>hsi</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HTML"><acronym>HTML</acronym></a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-HTTP-protocol"><acronym>HTTP</acronym> protocol</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyai"><code>hyai</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyam"><code>hyam</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hybi"><code>hybi</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hybm"><code>hybm</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hybrid-coordinate-system">hybrid coordinate system</a></td><td valign="top"><a href="#Left-hand-casting">4.1.4 Left hand casting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperbolic-arccosine-function">hyperbolic arccosine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperbolic-arcsine-function">hyperbolic arcsine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperbolic-arctangent-function">hyperbolic arctangent function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperbolic-cosine-function">hyperbolic cosine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperbolic-sine-function">hyperbolic sine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperbolic-tangent">hyperbolic tangent</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab">hyperslab</a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab-1">hyperslab</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab-2">hyperslab</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab-3">hyperslab</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab-4">hyperslab</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab-5">hyperslab</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslab-6">hyperslab</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-hyperslabs">hyperslabs</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-I">I</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-I_002fO">I/O</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-I_002fO-1">I/O</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-I_002fO-2">I/O</a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-I18N">I18N</a></td><td valign="top"><a href="#Internationalization">3.1 Internationalization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-IBM"><acronym>IBM</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-icc"><code>icc</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ID-Quoting">ID Quoting</a></td><td valign="top"><a href="#ID-Quoting">4.1.27 ID Quoting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-IDL"><acronym>IDL</acronym></a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-if_0028_0029">if()</a></td><td valign="top"><a href="#if-statement">4.1.8 if statement</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ilimit"><code>ilimit</code></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-include"><code>include</code></a></td><td valign="top"><a href="#Include-files">4.1.15 Include files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-including-files">including files</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-index-convention">index convention</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-indgen_002dequivalent">indgen-equivalent</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-inexact-conversion">inexact conversion</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Info">Info</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input-files">input files</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input-files-1">input files</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input-files-2">input files</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input-files-3">input files</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input_002dpath"><var>input-path</var></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input_002dpath-1"><var>input-path</var></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-installation">installation</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-installation-1">installation</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-int_0028_0029">int()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-int64_0028_0029">int64()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-integration">integration</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Intel">Intel</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Internationalization">Internationalization</a></td><td valign="top"><a href="#Internationalization">3.1 Internationalization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-interpolation">interpolation</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-introduction">introduction</a></td><td valign="top"><a href="#Introduction">1. Introduction</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-IPCC">IPCC</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-IPCC-1">IPCC</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-IPCC-2"><acronym>IPCC</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-irregular-grids">irregular grids</a></td><td valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ISO"><acronym>ISO</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-J">J</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Jim-Edwards">Jim Edwards</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Juliana-Rew">Juliana Rew</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-K">K</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Karen-Schuchardt">Karen Schuchardt</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Keith-Lindsay">Keith Lindsay</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kitchen-sink">kitchen sink</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Kyle-Wilcox">Kyle Wilcox</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-L">L</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-L10N">L10N</a></td><td valign="top"><a href="#Internationalization">3.1 Internationalization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-large-datasets">large datasets</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-large-datasets-1">large datasets</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Large-File-Support">Large File Support</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Large-File-Support-1">Large File Support</a></td><td valign="top"><a href="#Large-File-Support">3.10 Large File Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-lat_005fbnds"><code>lat_bnds</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-LD_005fLIBRARY_005fPATH"><code>LD_LIBRARY_PATH</code></a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-left-hand-casting">left hand casting</a></td><td valign="top"><a href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-left-hand-casting-1">left hand casting</a></td><td valign="top"><a href="#Left-hand-casting">4.1.4 Left hand casting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Legendre-polynomial">Legendre polynomial</a></td><td valign="top"><a href="#GSL-special-functions">4.1.19 GSL special functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Lempel_002dZiv-deflation">Lempel-Ziv deflation</a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Len-Makin">Len Makin</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-lexer">lexer</a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-LFS">LFS</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-LFS-1">LFS</a></td><td valign="top"><a href="#Large-File-Support">3.10 Large File Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-LHS"><acronym>LHS</acronym></a></td><td valign="top"><a href="#Left-hand-casting">4.1.4 Left hand casting</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-libnco"><code>libnco</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-libraries">libraries</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-linkers">linkers</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Linux">Linux</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ln"><var>ln</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ln-_002ds"><code>ln -s</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ln-_002ds-1"><code>ln -s</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-log"><var>log</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-log10"><var>log10</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-logarithm_002c-base-10">logarithm, base 10</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-logarithm_002c-natural">logarithm, natural</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-long-double"><code>long double</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-long-options">long options</a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-long-options-1">long options</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-longitude">longitude</a></td><td valign="top"><a href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-lon_005fbnds"><code>lon_bnds</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Luk-Claes">Luk Claes</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-M">M</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Macintosh">Macintosh</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Makefile">‘<tt>Makefile</tt>’</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Makefile-1">‘<tt>Makefile</tt>’</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Makefile-2">‘<tt>Makefile</tt>’</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Makefile-3">‘<tt>Makefile</tt>’</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-malloc_0028_0029"><code>malloc()</code></a></td><td valign="top"><a href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-manual-type-conversion">manual type conversion</a></td><td valign="top"><a href="#Type-Conversion">3.26 Type Conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-map_005fdmn">‘<samp>map_dmn</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-map_005fprd">‘<samp>map_prd</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-map_005frd1">‘<samp>map_rd1</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-map_005fscl">‘<samp>map_scl</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Mark-Flanner">Mark Flanner</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Markus-Liebig">Markus Liebig</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Martin-Dix">Martin Dix</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Martin-Schmidt">Martin Schmidt</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mask">mask</a></td><td valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mask-1">mask</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mask-condition">mask condition</a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mask-condition-1">mask condition</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-masked-average">masked average</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Mass-Store-System">Mass Store System</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Matej-Vela">Matej Vela</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mathematical-functions">mathematical functions</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-max"><code>max</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-max_0028_0029">max()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-maximum">maximum</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mean">mean</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-memory-available">memory available</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-memory-leaks">memory leaks</a></td><td valign="top"><a href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-memory-requirements">memory requirements</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-memory-requirements-1">memory requirements</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-merging-files">merging files</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-merging-files-1">merging files</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-metadata">metadata</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-metadata-optimization">metadata optimization</a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-metadata_002c-global">metadata, global</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-metadata_002c-global-1">metadata, global</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Michael-Schulz">Michael Schulz</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Microsoft">Microsoft</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Microsoft-1">Microsoft</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Mike-Folk">Mike Folk</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Mike-Page">Mike Page</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-min"><code>min</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-min_0028_0029">min()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-minimum">minimum</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing-values">missing values</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing-values-1">missing values</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing-values-2">missing values</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing-values-ncap2">missing values ncap2</a></td><td valign="top"><a href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing_005fvalue"><code>missing_value</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing_005fvalue-1"><code>missing_value</code></a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-missing_005fvalue-2"><code>missing_value</code></a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-MKS-units">MKS units</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-MKS-units-1">MKS units</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-modulus">modulus</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-monotonic-coordinates">monotonic coordinates</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-MSA"><acronym>MSA</acronym></a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-msk_005f_002a"><code>msk_*</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-msrcp"><code>msrcp</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-msrcp-1"><acronym>msrcp</acronym></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-msread"><code>msread</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-MSS"><acronym>MSS</acronym></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators">multi-file operators</a></td><td valign="top"><a href="#Single-and-Multi_002dfile-Operators">2.9.1 Single and Multi-file Operators</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators-1">multi-file operators</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators-2">multi-file operators</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators-3">multi-file operators</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators-4">multi-file operators</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators-5">multi-file operators</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dfile-operators-6">multi-file operators</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multi_002dhyperslab">multi-hyperslab</a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multiplication">multiplication</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multiplication-1">multiplication</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multiply"><code>multiply</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multiplying-data">multiplying data</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multiplying-data-1">multiplying data</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-multislab">multislab</a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-N">N</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-naked-characters">naked characters</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NASA"><acronym>NASA</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NASA-EOSDIS"><acronym>NASA EOSDIS</acronym></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-National-Virtual-Ocean-Data-System">National Virtual Ocean Data System</a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncadd"><code>ncadd</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncap-1"><code>ncap</code></a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncap2"><code>ncap2</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncap2-3"><code>ncap2</code></a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncap2-4"><code>ncap2</code></a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCAR"><acronym>NCAR</acronym></a></td><td valign="top"><a href="#Climate-Model-Paradigm">2.2 Climate Model Paradigm</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCAR-MSS"><acronym>NCAR MSS</acronym></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncatted-1"><code>ncatted</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncatted-4"><code>ncatted</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncatted-3"><code>ncatted</code></a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncbo-1"><code>ncbo</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncdiff"><code>ncdiff</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncdivide"><code>ncdivide</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncdump"><code>ncdump</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncdump-1"><code>ncdump</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncea-2"><code>ncea</code></a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncea-1"><code>ncea</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncecat-1"><code>ncecat</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncextr"><code>ncextr</code></a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncflint-2"><code>ncflint</code></a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncflint-1"><code>ncflint</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncks-1"><code>ncks</code></a></td><td valign="top"><a href="#Deflation">3.23 Deflation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncks-2"><code>ncks</code></a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncks-3"><code>ncks</code></a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCL"><acronym>NCL</acronym></a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncmult"><code>ncmult</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncmultiply"><code>ncmultiply</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCO-availability"><acronym>NCO</acronym> availability</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCO-homepage"><acronym>NCO</acronym> homepage</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCO-User_0027s-Guide"><cite>NCO User’s Guide</cite></a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_002econfig_002elog_002e_0024_007bGNU_005fTRP_007d_002efoo">‘<tt>nco.config.log.${GNU_TRP}.foo</tt>’</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_002econfigure_002e_0024_007bGNU_005fTRP_007d_002efoo">‘<tt>nco.configure.${GNU_TRP}.foo</tt>’</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_002emake_002e_0024_007bGNU_005fTRP_007d_002efoo">‘<tt>nco.make.${GNU_TRP}.foo</tt>’</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_005finput_005ffile_005flist"><code>nco_input_file_list</code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_005finput_005ffile_005flist-1"><code>nco_input_file_list</code></a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_005finput_005ffile_005fnumber"><code>nco_input_file_number</code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_005finput_005ffile_005fnumber-1"><code>nco_input_file_number</code></a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nco_005fopenmp_005fthread_005fnumber"><code>nco_openmp_thread_number</code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncpack"><code>ncpack</code></a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncpdq-2"><code>ncpdq</code></a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncpdq-3"><code>ncpdq</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncpdq-4"><code>ncpdq</code></a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncpdq-5"><code>ncpdq</code></a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncra-2"><code>ncra</code></a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncra-3"><code>ncra</code></a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncrcat-2"><code>ncrcat</code></a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncrcat-1"><code>ncrcat</code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncrename"><code>ncrename</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncrename-1"><code>ncrename</code></a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NCSA"><acronym>NCSA</acronym></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncsub"><code>ncsub</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncsubtract"><code>ncsubtract</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncunpack"><code>ncunpack</code></a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncwa-3"><code>ncwa</code></a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncwa-4"><code>ncwa</code></a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ncwa-2"><code>ncwa</code></a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fBYTE"><code>NC_BYTE</code></a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fBYTE-1"><code>NC_BYTE</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fBYTE-2"><code>NC_BYTE</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fCHAR"><code>NC_CHAR</code></a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fCHAR-1"><code>NC_CHAR</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fCHAR-2"><code>NC_CHAR</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fDOUBLE"><code>NC_DOUBLE</code></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fDOUBLE-1"><code>NC_DOUBLE</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fFLOAT"><code>NC_FLOAT</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fINT"><code>NC_INT</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fINT64"><code>NC_INT64</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fSHORT"><code>NC_SHORT</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fUBYTE"><code>NC_UBYTE</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fUINT"><code>NC_UINT</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fUINT64"><code>NC_UINT64</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NC_005fUSHORT"><code>NC_USHORT</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nc_005f_005fenddef_0028_0029"><code>nc__enddef()</code></a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ndims_0028_0029">ndims()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nearbyint"><var>nearbyint</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nearest-integer-function-_0028exact_0029">nearest integer function (exact)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nearest-integer-function-_0028inexact_0029">nearest integer function (inexact)</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NEC"><acronym>NEC</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nesting">nesting</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF">netCDF</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF2">netCDF2</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF2-1">netCDF2</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NETCDF2_005fONLY"><code>NETCDF2_ONLY</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF3">netCDF3</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF3-1">netCDF3</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF3-classic-file-format">netCDF3 classic file format</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF4">netCDF4</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF4-1">netCDF4</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF4-classic-file-format">netCDF4 classic file format</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-netCDF4-file-format">netCDF4 file format</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NETCDF4-files"><code>NETCDF4</code> files</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NETCDF4_005fCLASSIC-files"><code>NETCDF4_CLASSIC</code> files</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NETCDF4_005fROOT"><code>NETCDF4_ROOT</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NINTAP"><code>NINTAP</code></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NINTAP-1"><code>NINTAP</code></a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NINTAP-2"><code>NINTAP</code></a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-non_002dcoordinate-grid-properties">non-coordinate grid properties</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-non_002drectangular-grids">non-rectangular grids</a></td><td valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-non_002dstandard-grids">non-standard grids</a></td><td valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-normalization">normalization</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NO_005fNETCDF_005f2"><code>NO_NETCDF_2</code></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NRA"><acronym>NRA</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nrnet"><code>nrnet</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NSF"><acronym>NSF</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NSF-1"><acronym>NSF</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NT-_0028Microsoft-operating-system_0029">NT (Microsoft operating system)</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NUL">NUL</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NUL-1"><code>NUL</code></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NUL_002dtermination">NUL-termination</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-null-operation">null operation</a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-number-literals-ncap">number literals <code>ncap</code></a></td><td valign="top"><a href="#Number-literals">4.1.7 Number literals</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-numerator"><code>numerator</code></a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-NVODS"><acronym>NVODS</acronym></a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-nxt_005flsr">‘<samp>nxt_lsr</samp>’</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-O">O</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-oceanography">oceanography</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-octal-dump">octal dump</a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-od"><code>od</code></a></td><td valign="top"><a href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OMP_005fNUM_005fTHREADS"><code>OMP_NUM_THREADS</code></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-on_002dline-documentation">on-line documentation</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-open-source">open source</a></td><td valign="top"><a href="#Foreword">Foreword</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-open-source-1">open source</a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Open_002dsource-Project-for-a-Network-Data-Access-Protocol">Open-source Project for a Network Data Access Protocol</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OPeNDAP_002e"><acronym>OPeNDAP</acronym>.</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OpenMP">OpenMP</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OpenMP-1">OpenMP</a></td><td valign="top"><a href="#Single-and-Multi_002dfile-Operators">2.9.1 Single and Multi-file Operators</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OpenMP-2">OpenMP</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operation-types">operation types</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operation-types-1">operation types</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operation-types-2">operation types</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operation-types-3">operation types</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operator-speed">operator speed</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operator-speed-1">operator speed</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operator-speed-2">operator speed</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operator-speed-3">operator speed</a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operator-speed-4">operator speed</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operator-speed-5">operator speed</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operators">operators</a></td><td valign="top"><a href="#Summary">Summary</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OptIPuter">OptIPuter</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Orion-Powlawski">Orion Powlawski</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ORO"><code>ORO</code></a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ORO-1"><code>ORO</code></a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-OS"><acronym>OS</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-output-file">output file</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-output-file-1">output file</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-output_002dpath"><var>output-path</var></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-overview">overview</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-overwriting-files">overwriting files</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-overwriting-files-1">overwriting files</a></td><td valign="top"><a href="#Batch-Mode">3.27 Batch Mode</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-P">P</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pack_0028_0029">pack()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pack_0028x_0029"><code>pack(x)</code></a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing">packing</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-1">packing</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-2">packing</a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-3">packing</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-4">packing</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-5">packing</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-map">packing map</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-packing-policy">packing policy</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pack_005fbyte_0028_0029">pack_byte()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pack_005fint_0028_0029">pack_int()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pack_005fshort_0028_0029">pack_short()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-papers">papers</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-parallelism">parallelism</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-parallelism-1">parallelism</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-parser">parser</a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pasting-variables">pasting variables</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pathCC"><code>pathCC</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pathcc"><code>pathcc</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-PathScale">PathScale</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Patrice-Dumas">Patrice Dumas</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Patrick-Kursawe">Patrick Kursawe</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pattern-matching">pattern matching</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pattern-matching-1">pattern matching</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pattern-matching-2">pattern matching</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pattern-matching-3">pattern matching</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-PayPal">PayPal</a></td><td valign="top"><a href="#Contributing">5. Contributing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pck_005fmap"><var>pck_map</var></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pck_005fplc"><var>pck_plc</var></a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-peak-memory-usage">peak memory usage</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance">performance</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance-1">performance</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance-2">performance</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance-3">performance</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance-4">performance</a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance-5">performance</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-performance-6">performance</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Perl">Perl</a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Perl-1">Perl</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Perl-2">Perl</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-permute-dimensions">permute dimensions</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-permute_0028_0029">permute()</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pgCC"><code>pgCC</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pgcc"><code>pgcc</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-PGI"><acronym>PGI</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-philosophy">philosophy</a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pipes">pipes</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-plc_005fall">‘<samp>plc_all</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-plc_005fg2d">‘<samp>plc_g2d</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-plc_005fg3d">‘<samp>plc_g3d</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-plc_005fxpl">‘<samp>plc_xpl</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-portability">portability</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-positional-arguments">positional arguments</a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-POSIX"><acronym>POSIX</acronym></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-POSIX-1"><acronym>POSIX</acronym></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pow"><var>pow</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-power">power</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-power-function">power function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-prd">‘<samp>prd</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-precision">precision</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-preprocessor-tokens">preprocessor tokens</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-presentations">presentations</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-print_0028_0029ncap">print()<code>ncap</code></a></td><td valign="top"><a href="#print-statement">4.1.9 print statement</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-printf"><code>printf</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-printf_0028_0029"><code>printf()</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-printf_0028_0029-1"><code>printf()</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-printf_0028_0029-2"><code>printf()</code></a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-printing-files-contents">printing files contents</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-printing-variables">printing variables</a></td><td valign="top"><a href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Processor">Processor</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Processor-1">Processor</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Processor_002c-CCM">Processor, <acronym>CCM</acronym></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-promotion">promotion</a></td><td valign="top"><a href="#Type-Conversion">3.26 Type Conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-promotion-1">promotion</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-proposals">proposals</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-pseudonym">pseudonym</a></td><td valign="top"><a href="#Symbolic-Links">1.3 Symbolic Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-publications">publications</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-Q">Q</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-QLogic">QLogic</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quadruple-precision">quadruple precision</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quiet">quiet</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quotes">quotes</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quotes-1">quotes</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quotes-2">quotes</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quotes-3">quotes</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-R">R</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-RAM">RAM</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ram_005fdelete_0028_0029">ram_delete()</a></td><td valign="top"><a href="#RAM-variables">4.1.12 RAM variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ram_005fwrite_0028_0029">ram_write()</a></td><td valign="top"><a href="#RAM-variables">4.1.12 RAM variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rank">rank</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rank-1">rank</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rcp"><code>rcp</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rcp-1"><code>rcp</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-RCS"><acronym>RCS</acronym></a></td><td valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rd1">‘<samp>rd1</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-re_002ddimension">re-dimension</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-re_002dorder-dimensions">re-order dimensions</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-average">record average</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-concatenation">record concatenation</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension">record dimension</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-1">record dimension</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-2">record dimension</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-3">record dimension</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-4">record dimension</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-5">record dimension</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-6">record dimension</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-7">record dimension</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-8">record dimension</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-9">record dimension</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-10">record dimension</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-11">record dimension</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-12">record dimension</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-13">record dimension</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-14">record dimension</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-dimension-15">record dimension</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-variable">record variable</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-record-variable-1">record variable</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rectangular-grids">rectangular grids</a></td><td valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regex"><code>regex</code></a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regressions-archive">regressions archive</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regular-expressions">regular expressions</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regular-expressions-1">regular expressions</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regular-expressions-2">regular expressions</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regular-expressions-3">regular expressions</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regular-expressions-4">regular expressions</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-regular-expressions-5">regular expressions</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Remik-Ziemlinski">Remik Ziemlinski</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-remote-files">remote files</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-remote-files-1">remote files</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-renaming-attributes">renaming attributes</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-renaming-dimensions">renaming dimensions</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-renaming-variables">renaming variables</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reporting-bugs">reporting bugs</a></td><td valign="top"><a href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reshape-variables">reshape variables</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-restrict"><code>restrict</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reverse-data">reverse data</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reverse-dimensions">reverse dimensions</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reverse-dimensions-1">reverse dimensions</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reverse-dimensions-2">reverse dimensions</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reverse_0028_0029">reverse()</a></td><td valign="top"><a href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rint"><var>rint</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rms"><code>rms</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rmssdn"><code>rmssdn</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rmssdn_0028_0029">rmssdn()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-root_002dmean_002dsquare">root-mean-square</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Rorik-Peterson">Rorik Peterson</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-round"><var>round</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rounding-functions">rounding functions</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-RPM"><acronym>RPM</acronym></a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-running-average">running average</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-S">S</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-safeguards">safeguards</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-safeguards-1">safeguards</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scale_005ffactor"><code>scale_factor</code></a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scale_005ffactor-1"><code>scale_factor</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scale_005ffactor-2"><code>scale_factor</code></a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scale_005ffactor-3"><code>scale_factor</code></a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scale_005fformat"><var>scale_format</var></a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scaling">scaling</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Scientific-Data-Operators">Scientific Data Operators</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scl">‘<samp>scl</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Scott-Capps">Scott Capps</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scp"><code>scp</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-scp-1"><code>scp</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-script-file">script file</a></td><td valign="top"><a href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SDO"><acronym>SDO</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SEIII"><acronym>SEIII</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-semi_002dcolon">semi-colon</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-server">server</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-server-1">server</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-server-2">server</a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-server-3">server</a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Server_002dSide-Distributed-Data-Reduction-_0026-Analysis">Server-Side Distributed Data Reduction & Analysis</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-server_002dside-processing">server-side processing</a></td><td valign="top"><a href="#SEC_Foot"></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-server_002dside-processing-1">server-side processing</a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-set_005fmiss_0028_0029">set_miss()</a></td><td valign="top"><a href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sftp"><code>sftp</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sftp-1"><code>sftp</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SGI"><acronym>SGI</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shared-memory-machines">shared memory machines</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shared-memory-parallelism">shared memory parallelism</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell">shell</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell-1">shell</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell-2">shell</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell-3">shell</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell-4">shell</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-signedness"><var>signedness</var></a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sin"><var>sin</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sine-function">sine function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-single-precision">single precision</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sinh"><var>sinh</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-size_0028_0029">size()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SMP"><acronym>SMP</acronym></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sort-alphabetically">sort alphabetically</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sort-alphabetically-1">sort alphabetically</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-source-code">source code</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-special-characters">special characters</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed">speed</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed-1">speed</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed-2">speed</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed-3">speed</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed-4">speed</a></td><td valign="top"><a href="#Metadata-Optimization">3.2 Metadata Optimization</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed-5">speed</a></td><td valign="top"><a href="#Missing-Values">3.21 Missing values</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-speed-6">speed</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sqravg"><code>sqravg</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sqravg_0028_0029">sqravg()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sqrt"><code>sqrt</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sqrt-1"><var>sqrt</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-square-root-function">square root function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SSDDRA"><acronym>SSDDRA</acronym></a></td><td valign="top"><a href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SSH"><acronym>SSH</acronym></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-SSH-1"><acronym>SSH</acronym></a></td><td valign="top"><a href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-sshort_0028_0029">sshort()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard-deviation">standard deviation</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard-input">standard input</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard-input-1">standard input</a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard-input-2">standard input</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard-input-3">standard input</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard-input-4">standard input</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-standard_005fname"><code>standard_name</code></a></td><td valign="top"><a href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-statement">statement</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-static-linking">static linking</a></td><td valign="top"><a href="#Libraries">1.4 Libraries</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stdin"><code>stdin</code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stdin-1"><code>stdin</code></a></td><td valign="top"><a href="#File-List-Attributes">3.29 File List Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stdin-2"><code>stdin</code></a></td><td valign="top"><a href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stdin-3"><code>stdin</code></a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stdin-4"><code>stdin</code></a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stdin-5"><code>stdin</code></a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride">stride</a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-1">stride</a></td><td valign="top"><a href="#Stride">3.15 Stride</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-2">stride</a></td><td valign="top"><a href="#Multislabs">3.16 Multislabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-3">stride</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-4">stride</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-5">stride</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-6">stride</a></td><td valign="top"><a href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-7">stride</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stride-8">stride</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-strings">strings</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stub">stub</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subsetting">subsetting</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subsetting-1">subsetting</a></td><td valign="top"><a href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subsetting-2">subsetting</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subsetting-3">subsetting</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subsetting-4">subsetting</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subtract"><code>subtract</code></a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subtracting-data">subtracting data</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subtraction">subtraction</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-subtraction-1">subtraction</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-summary">summary</a></td><td valign="top"><a href="#Summary">Summary</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Sun">Sun</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-swap-space">swap space</a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-swap-space-1">swap space</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-switches">switches</a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-symbolic-links">symbolic links</a></td><td valign="top"><a href="#Symbolic-Links">1.3 Symbolic Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-symbolic-links-1">symbolic links</a></td><td valign="top"><a href="#Averaging-vs_002e-Concatenating">2.6 Averagers vs. Concatenators</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-symbolic-links-2">symbolic links</a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-symbolic-links-3">symbolic links</a></td><td valign="top"><a href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-symbolic-links-4">symbolic links</a></td><td valign="top"><a href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-synchronous-file-access">synchronous file access</a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-synonym">synonym</a></td><td valign="top"><a href="#Symbolic-Links">1.3 Symbolic Links</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-syntax">syntax</a></td><td valign="top"><a href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-T">T</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Takeshi-Enomoto">Takeshi Enomoto</a></td><td valign="top"><a href="#Contributors">5.1 Contributors</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-tan"><var>tan</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-tanh"><var>tanh</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-temporary-output-files">temporary output files</a></td><td valign="top"><a href="#Temporary-Output-Files">2.3 Temporary Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-temporary-output-files-1">temporary output files</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-TeXinfo">TeXinfo</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-threads">threads</a></td><td valign="top"><a href="#Memory-Requirements">2.9 Memory Requirements</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-threads-1">threads</a></td><td valign="top"><a href="#Single-and-Multi_002dfile-Operators">2.9.1 Single and Multi-file Operators</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-threads-2">threads</a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-thr_005fnbr"><var>thr_nbr</var></a></td><td valign="top"><a href="#OpenMP-Threading">3.3 OpenMP Threading</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-time"><code>time</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-time-1"><code>time</code></a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-time_002daveraging">time-averaging</a></td><td valign="top"><a href="#Examples-ncap2">4.1.24 Examples ncap2</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-timestamp">timestamp</a></td><td valign="top"><a href="#History-Attribute">3.28 History Attribute</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-time_005foffset"><code>time_offset</code></a></td><td valign="top"><a href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-total">total</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-transpose">transpose</a></td><td valign="top"><a href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-transpose-1">transpose</a></td><td valign="top"><a href="#Dimension-Permutation">Dimension Permutation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-trunc"><var>trunc</var></a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-truncation-function">truncation function</a></td><td valign="top"><a href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-truth-condition">truth condition</a></td><td valign="top"><a href="#Mask-condition">4.12.1 Mask condition</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-truth-condition-1">truth condition</a></td><td valign="top"><a href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ttl"><code>ttl</code></a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ttl_0028_0029">ttl()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-type-conversion">type conversion</a></td><td valign="top"><a href="#Type-Conversion">3.26 Type Conversion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-type_0028_0029">type()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-U">U</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ubyte_0028_0029">ubyte()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UDUnits">UDUnits</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UDUnits-1">UDUnits</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UDUnits-2">UDUnits</a></td><td valign="top"><a href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-uint_0028_0029">uint()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ulimit"><code>ulimit</code></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unary-operations">unary operations</a></td><td valign="top"><a href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UNICOS"><acronym>UNICOS</acronym></a></td><td valign="top"><a href="#Large-Datasets">2.8 Large Datasets</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Unidata">Unidata</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Unidata-1">Unidata</a></td><td valign="top"><a href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Unidata-2">Unidata</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-union-of-two-files">union of two files</a></td><td valign="top"><a href="#Appending-Variables">2.4 Appending Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unit64_0028_0029">unit64()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-units"><code>units</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-units-1"><code>units</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-units-2"><code>units</code></a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-units-3"><code>units</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-units-4"><code>units</code></a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-units-5"><code>units</code></a></td><td valign="top"><a href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UNIX"><acronym>UNIX</acronym></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UNIX-1"><acronym>UNIX</acronym></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UNIX-2"><acronym>UNIX</acronym></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UNIX-3"><acronym>UNIX</acronym></a></td><td valign="top"><a href="#Command-Line-Options">3.4 Command Line Options</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-UNIX-4"><acronym>UNIX</acronym></a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unlimited-dimension">unlimited dimension</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpack_0028_0029">unpack()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpack_0028x_0029"><code>unpack(x)</code></a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpacking">unpacking</a></td><td valign="top"><a href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpacking-1">unpacking</a></td><td valign="top"><a href="#Packed-data">3.24 Packed data</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpacking-2">unpacking</a></td><td valign="top"><a href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpacking-3">unpacking</a></td><td valign="top"><a href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unpacking-4">unpacking</a></td><td valign="top"><a href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-URL"><acronym>URL</acronym></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-User_0027s-Guide"><cite>User’s Guide</cite></a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-ushort_0028_0029">ushort()</a></td><td valign="top"><a href="#Methods-and-functions">4.1.11 Methods and functions</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-V">V</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-value-list">value list</a></td><td valign="top"><a href="#Attributes">4.1.6 Attributes</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-variable-names">variable names</a></td><td valign="top"><a href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-variance">variance</a></td><td valign="top"><a href="#Operation-Types">3.25 Operation Types</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-version">version</a></td><td valign="top"><a href="#Operator-Version">3.32 Operator Version</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Vista-_0028Microsoft-operating-system_0029">Vista (Microsoft operating system)</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-W">W</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-weighted-average">weighted average</a></td><td valign="top"><a href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wget"><code>wget</code></a></td><td valign="top"><a href="#Remote-storage">3.7 Accessing Remote Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-where_0028_0029">where()</a></td><td valign="top"><a href="#Where-statement">4.1.13 Where statement</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-while_0028_0029">while()</a></td><td valign="top"><a href="#Loops">4.1.14 Loops</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-whitespace">whitespace</a></td><td valign="top"><a href="#UDUnits-Support">3.19 UDUnits Support</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wildcards">wildcards</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wildcards-1">wildcards</a></td><td valign="top"><a href="#Subsetting-Variables">3.11 Subsetting Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wildcards-2">wildcards</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wildcards-3">wildcards</a></td><td valign="top"><a href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-WIN32"><code>WIN32</code></a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Windows">Windows</a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Windows-1">Windows</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wrapped-coordinates">wrapped coordinates</a></td><td valign="top"><a href="#Hyperslabs">3.14 Hyperslabs</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wrapped-coordinates-1">wrapped coordinates</a></td><td valign="top"><a href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wrapped-coordinates-2">wrapped coordinates</a></td><td valign="top"><a href="#Irregular-grids">4.1.17 Irregular Grids</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wrapped-coordinates-3">wrapped coordinates</a></td><td valign="top"><a href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-wrapped-filenames">wrapped filenames</a></td><td valign="top"><a href="#Specifying-Input-Files">3.5 Specifying Input Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-WWW-documentation">WWW documentation</a></td><td valign="top"><a href="#Availability">1.1 Availability</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-X">X</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-xargs"><code>xargs</code></a></td><td valign="top"><a href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-xargs-1"><code>xargs</code></a></td><td valign="top"><a href="#Specifying-Output-Files">3.6 Specifying Output Files</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-xlC"><code>xlC</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-xlc"><code>xlc</code></a></td><td valign="top"><a href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-XP-_0028Microsoft-operating-system_0029">XP (Microsoft operating system)</a></td><td valign="top"><a href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-xpl">‘<samp>xpl</samp>’</a></td><td valign="top"><a href="#Chunking">3.22 Chunking</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-<tr><th><a name="General-Index-1_cp_letter-Y">Y</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Yorick">Yorick</a></td><td valign="top"><a href="#Philosophy">2.1 Philosophy</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-Yorick-1">Yorick</a></td><td valign="top"><a href="#Performance">2.10 Performance</a></td></tr>
-<tr><td colspan="3"> <hr></td></tr>
-</table>
-<table><tr><th valign="top">Jump to:   </th><td><a href="#General-Index-1_cp_symbol-1" class="summary-letter"><b>"</b></a>
-   
-<a href="#General-Index-1_cp_symbol-2" class="summary-letter"><b>#</b></a>
-   
-<a href="#General-Index-1_cp_symbol-3" class="summary-letter"><b>$</b></a>
-   
-<a href="#General-Index-1_cp_symbol-4" class="summary-letter"><b>%</b></a>
-   
-<a href="#General-Index-1_cp_symbol-5" class="summary-letter"><b>'</b></a>
-   
-<a href="#General-Index-1_cp_symbol-6" class="summary-letter"><b>*</b></a>
-   
-<a href="#General-Index-1_cp_symbol-7" class="summary-letter"><b>+</b></a>
-   
-<a href="#General-Index-1_cp_symbol-8" class="summary-letter"><b>-</b></a>
-   
-<a href="#General-Index-1_cp_symbol-9" class="summary-letter"><b>.</b></a>
-   
-<a href="#General-Index-1_cp_symbol-10" class="summary-letter"><b>/</b></a>
-   
-<a href="#General-Index-1_cp_symbol-11" class="summary-letter"><b>0</b></a>
-   
-<a href="#General-Index-1_cp_symbol-12" class="summary-letter"><b>3</b></a>
-   
-<a href="#General-Index-1_cp_symbol-13" class="summary-letter"><b>6</b></a>
-   
-<a href="#General-Index-1_cp_symbol-14" class="summary-letter"><b>;</b></a>
-   
-<a href="#General-Index-1_cp_symbol-15" class="summary-letter"><b><</b></a>
-   
-<a href="#General-Index-1_cp_symbol-16" class="summary-letter"><b>?</b></a>
-   
-<a href="#General-Index-1_cp_symbol-17" class="summary-letter"><b>@</b></a>
-   
-<a href="#General-Index-1_cp_symbol-18" class="summary-letter"><b>[</b></a>
-   
-<a href="#General-Index-1_cp_symbol-19" class="summary-letter"><b>\</b></a>
-   
-<a href="#General-Index-1_cp_symbol-20" class="summary-letter"><b>^</b></a>
-   
-<a href="#General-Index-1_cp_symbol-21" class="summary-letter"><b>_</b></a>
-   
-<a href="#General-Index-1_cp_symbol-22" class="summary-letter"><b>|</b></a>
-   
-<br>
-<a href="#General-Index-1_cp_letter-A" class="summary-letter"><b>A</b></a>
-   
-<a href="#General-Index-1_cp_letter-B" class="summary-letter"><b>B</b></a>
-   
-<a href="#General-Index-1_cp_letter-C" class="summary-letter"><b>C</b></a>
-   
-<a href="#General-Index-1_cp_letter-D" class="summary-letter"><b>D</b></a>
-   
-<a href="#General-Index-1_cp_letter-E" class="summary-letter"><b>E</b></a>
-   
-<a href="#General-Index-1_cp_letter-F" class="summary-letter"><b>F</b></a>
-   
-<a href="#General-Index-1_cp_letter-G" class="summary-letter"><b>G</b></a>
-   
-<a href="#General-Index-1_cp_letter-H" class="summary-letter"><b>H</b></a>
-   
-<a href="#General-Index-1_cp_letter-I" class="summary-letter"><b>I</b></a>
-   
-<a href="#General-Index-1_cp_letter-J" class="summary-letter"><b>J</b></a>
-   
-<a href="#General-Index-1_cp_letter-K" class="summary-letter"><b>K</b></a>
-   
-<a href="#General-Index-1_cp_letter-L" class="summary-letter"><b>L</b></a>
-   
-<a href="#General-Index-1_cp_letter-M" class="summary-letter"><b>M</b></a>
-   
-<a href="#General-Index-1_cp_letter-N" class="summary-letter"><b>N</b></a>
-   
-<a href="#General-Index-1_cp_letter-O" class="summary-letter"><b>O</b></a>
-   
-<a href="#General-Index-1_cp_letter-P" class="summary-letter"><b>P</b></a>
-   
-<a href="#General-Index-1_cp_letter-Q" class="summary-letter"><b>Q</b></a>
-   
-<a href="#General-Index-1_cp_letter-R" class="summary-letter"><b>R</b></a>
-   
-<a href="#General-Index-1_cp_letter-S" class="summary-letter"><b>S</b></a>
-   
-<a href="#General-Index-1_cp_letter-T" class="summary-letter"><b>T</b></a>
-   
-<a href="#General-Index-1_cp_letter-U" class="summary-letter"><b>U</b></a>
-   
-<a href="#General-Index-1_cp_letter-V" class="summary-letter"><b>V</b></a>
-   
-<a href="#General-Index-1_cp_letter-W" class="summary-letter"><b>W</b></a>
-   
-<a href="#General-Index-1_cp_letter-X" class="summary-letter"><b>X</b></a>
-   
-<a href="#General-Index-1_cp_letter-Y" class="summary-letter"><b>Y</b></a>
-   
-</td></tr></table>
-
-
-<hr size="6">
-<a name="SEC_Foot"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h1>Footnotes</h1>
-<h3><a name="FOOT1" href="#DOCF1">(1)</a></h3>
-   
-<p>To produce these formats, ‘<tt>nco.texi</tt>’ was simply run through the
-freely available programs <code>texi2dvi</code>, <code>dvips</code>,
-<code>texi2html</code>, and <code>makeinfo</code>.    
-Due to a bug in TeX, the resulting Postscript file, ‘<tt>nco.ps</tt>’,
-contains the Table of Contents as the final pages. 
-Thus if you print ‘<tt>nco.ps</tt>’, remember to insert the Table of
-Contents after the cover sheet before you staple the manual.
-</p><h3><a name="FOOT2" href="#DOCF2">(2)</a></h3>
-
-<p>The ‘<samp>_BSD_SOURCE</samp>’ token is required on some Linux platforms where 
-<code>gcc</code> dislikes the network header files like
-‘<tt>netinet/in.h</tt>’).
-</p><h3><a name="FOOT3" href="#DOCF3">(3)</a></h3>
-<p><acronym>NCO</acronym> may still build with an 
-<acronym>ANSI</acronym> or <acronym>ISO</acronym> C89 or C94/95-compliant compiler if the
-C pre-processor undefines the <code>restrict</code> type qualifier, e.g.,
-by invoking the compiler with ‘<samp>-Drestrict=''</samp>’.
-</p><h3><a name="FOOT4" href="#DOCF4">(4)</a></h3>
-<p>The Cygwin package is available from<br>
-<code>http://sourceware.redhat.com/cygwin</code><br>
-<a name="index-gcc-1"></a>
-<a name="index-g_002b_002b"></a>
-Currently, Cygwin 20.x comes with the <acronym>GNU</acronym> C/C++
-compilers (<code>gcc</code>, <code>g++</code>.
-These <acronym>GNU</acronym> compilers may be used to build the netCDF
-distribution itself.
-</p><h3><a name="FOOT5" href="#DOCF5">(5)</a></h3>
-<p>The <code>ldd</code> command, if it is available on your system,
-will tell you where the executable is looking for each dynamically
-loaded library. Use, e.g., <code>ldd `which ncea`</code>.
-</p><h3><a name="FOOT6" href="#DOCF6">(6)</a></h3>
-<p>The Hierarchical Data Format, or <acronym>HDF</acronym>, is another
-self-describing data format similar to, but more elaborate than,
-netCDF.
-</p><h3><a name="FOOT7" href="#DOCF7">(7)</a></h3>
-<p>One must link the <acronym>NCO</acronym> code to the <acronym>HDF4</acronym>
-<acronym>MFHDF</acronym> library instead of the usual netCDF library. 
-Does ‘<samp>MF</samp>’ stands for Mike Folk?
-Perhaps. 
-In any case, the <acronym>MFHDF</acronym> library only supports netCDF2
-calls. 
-Thus I will try to keep this capability in <acronym>NCO</acronym> as long as it
-is not too much trouble.
-</p><h3><a name="FOOT8" href="#DOCF8">(8)</a></h3>
-<p>The <code>ncrename</code> operator is an exception to this rule.
-See section <a href="#ncrename-netCDF-Renamer"><code>ncrename</code> netCDF Renamer</a>.
-</p><h3><a name="FOOT9" href="#DOCF9">(9)</a></h3>
-<p>The terminology <em>merging</em> is
-reserved for an (unwritten) operator which replaces hyperslabs of a
-variable in one file with hyperslabs of the same variable from another 
-file
-</p><h3><a name="FOOT10" href="#DOCF10">(10)</a></h3>
-<p>Yes, the terminology is confusing. 
-By all means mail me if you think of a better nomenclature.
-Should <acronym>NCO</acronym> use <em>paste</em> instead of <em>append</em>?
-</p><h3><a name="FOOT11" href="#DOCF11">(11)</a></h3>
-<p>Currently
-<code>ncea</code> and <code>ncrcat</code> are symbolically linked to the
-<code>ncra</code> executable, which behaves slightly differently based on
-its invocation name (i.e., ‘<samp>argv[0]</samp>’). 
-These three operators share the same source code, but merely have
-different inner loops.
-</p><h3><a name="FOOT12" href="#DOCF12">(12)</a></h3>
-<p>The third averaging operator, <code>ncwa</code>, is the most
-sophisticated averager in <acronym>NCO</acronym>. 
-However, <code>ncwa</code> is in a different class than <code>ncra</code> and
-<code>ncea</code> because it can only operate on a single file per
-invocation (as opposed to multiple files).   
-On that single file, however, <code>ncwa</code> provides a richer set of 
-averaging options—including weighting, masking, and broadcasting.
-</p><h3><a name="FOOT13" href="#DOCF13">(13)</a></h3>
-<p>The exact length which exceeds the operating system internal
-limit for command line lengths varies from <acronym>OS</acronym> to <acronym>OS</acronym>
-and from shell to shell.  
-<acronym>GNU</acronym> <code>bash</code> may not have any arbitrary fixed limits to the
-size of command line arguments. 
-Many <acronym>OS</acronym>s cannot handle command line arguments (including
-results of file globbing) exceeding 4096 characters.
-</p><h3><a name="FOOT14" href="#DOCF14">(14)</a></h3>
-
-<p>If a <code>getopt_long</code> function cannot be found on the system, 
-<acronym>NCO</acronym> will use the <code>getopt_long</code> from the
-<code>my_getopt</code> package by Benjamin Sittler
-<a href="mailto:bsittler at iname.com">bsittler at iname.com</a>.
-This is <acronym>BSD</acronym>-licensed software available from  
-<a href="http://www.geocities.com/ResearchTriangle/Node/9405/#my_getopt">http://www.geocities.com/ResearchTriangle/Node/9405/#my_getopt</a>.
-</p><h3><a name="FOOT15" href="#DOCF15">(15)</a></h3>
-<p>The ‘<samp>-n</samp>’ option is a backward compatible superset of the
-<code>NINTAP</code> option from the <acronym>NCAR</acronym> <acronym>CCM</acronym> Processor.
-</p><h3><a name="FOOT16" href="#DOCF16">(16)</a></h3>
-<p><acronym>NCO</acronym> does not implement command line options to
-specify <acronym>FTP</acronym> logins and passwords because copying those data
-into the <code>history</code> global attribute in the output file (done by
-default) poses an unacceptable security risk. 
-</p><h3><a name="FOOT17" href="#DOCF17">(17)</a></h3>
-<p>The <code>hsi</code> command must be in the user’s path in one of
-the following directories: <code>/usr/local/bin</code> or
-<code>/opt/hpss/bin</code>. 
-Tell us if the <acronym>HPSS</acronym> installation at your site places the
-<code>hsi</code> command in a different location, and we will add that
-location to the list of acceptable paths to search for <code>hsi</code>.
-</p><h3><a name="FOOT18" href="#DOCF18">(18)</a></h3>
-<p><acronym>NCO</acronym> supported the old <acronym>NCAR</acronym> Mass Storage
-System (<acronym>MSS</acronym>) until version 4.0.7 in April, 2011.
-<acronym>NCO</acronym> supported <acronym>MSS</acronym>-retrievals via a variety of
-mechanisms including the <code>msread</code>, <code>msrcp</code>, and
-<code>nrnet</code> commands invoked either automatically or with sentinels
-like <code>ncks -p mss:/ZENDER/nco -l . in.nc</code>.
-Once the <acronym>MSS</acronym> was decommissioned in March, 2011, support for
-these retrieval mechanisms was removed from <acronym>NCO</acronym>.
-</p><h3><a name="FOOT19" href="#DOCF19">(19)</a></h3>
-
-<a name="index-NVODS"></a>
-<a name="index-National-Virtual-Ocean-Data-System"></a>
-<a name="index-open-source-1"></a>
-<p><acronym>DODS</acronym> is being deprecated because it is ambiguous, referring
-both to a protocol and to a collection of (oceanography) data.
-It is superceded by two terms.
-<acronym>DAP</acronym> is the discipline-neutral Data Access Protocol at the
-heart of <acronym>DODS</acronym>.
-The National Virtual Ocean Data System (<acronym>NVODS</acronym>) refers to the
-collection of oceanography data and oceanographic extensions to
-<acronym>DAP</acronym>. 
-In other words, <acronym>NVODS</acronym> is implemented with <acronym>OPeNDAP</acronym>.
-<acronym>OPeNDAP</acronym> is <em>also</em> the open source project which
-maintains, develops, and promulgates the <acronym>DAP</acronym> standard. 
-<acronym>OPeNDAP</acronym> and <acronym>DAP</acronym> really are interchangeable.
-Got it yet?
-</p><h3><a name="FOOT20" href="#DOCF20">(20)</a></h3>
-
-<p>Automagic support for <acronym>DODS</acronym> version 3.2.x was deprecated in 
-December, 2003 after <acronym>NCO</acronym> version 2.8.4.
-<acronym>NCO</acronym> support for <acronym>OPeNDAP</acronym> versions 3.4.x commenced in
-December, 2003, with <acronym>NCO</acronym> version 2.8.5.
-<acronym>NCO</acronym> support for <acronym>OPeNDAP</acronym> versions 3.5.x commenced in
-June, 2005, with <acronym>NCO</acronym> version 3.0.1.
-<acronym>NCO</acronym> support for <acronym>OPeNDAP</acronym> versions 3.6.x commenced in
-June, 2006, with <acronym>NCO</acronym> version 3.1.3.
-<acronym>NCO</acronym> support for <acronym>OPeNDAP</acronym> versions 3.7.x commenced in
-January, 2007, with <acronym>NCO</acronym> version 3.1.9.
-</p><h3><a name="FOOT21" href="#DOCF21">(21)</a></h3>
-
-<p>The minimal set of libraries required to build <acronym>NCO</acronym> as
-<acronym>OPeNDAP</acronym> clients are, in link order,
-‘<tt>libnc-dap.a</tt>’, ‘<tt>libdap.a</tt>’, and 
-‘<tt>libxml2</tt>’ and ‘<tt>libcurl.a</tt>’.
-</p><h3><a name="FOOT22" href="#DOCF22">(22)</a></h3>
-
-<p>We are most familiar with the <acronym>OPeNDAP</acronym> ability to enable 
-network-transparent data access.
-<a name="index-constraint-expressions"></a>
-<a name="index-server_002dside-processing"></a>
-<acronym>OPeNDAP</acronym> has many other features, including sophisticated
-hyperslabbing and server-side processing via <em>constraint expressions</em>.
-If you know more about this, please consider writing a section
-on "<acronym>OPeNDAP</acronym> Capabilities of Interest to <acronym>NCO</acronym> Users"
-for incorporation in the <cite>NCO User’s Guide</cite>.
-</p><h3><a name="FOOT23" href="#DOCF23">(23)</a></h3>
-
-<p>Linux and <acronym>AIX</acronym> are known to support <acronym>LFS</acronym>.
-</p><h3><a name="FOOT24" href="#DOCF24">(24)</a></h3>
-
-<p>The old functionality, i.e., where the ignored values are indicated by
-<code>missing_value</code> not <code>_FillValue</code>, may still be selected 
-<em>at <acronym>NCO</acronym> build time</em> by compiling <acronym>NCO</acronym> 
-with the token definition 
-<kbd>CPPFLAGS='-DNCO_MSS_VAL_SNG=missing_value'</kbd>.
-</p><h3><a name="FOOT25" href="#DOCF25">(25)</a></h3>
-<p>For example, the <acronym>DOE</acronym> <acronym>ARM</acronym> program often
-uses <var>att_type</var> = <code>NC_CHAR</code> and <var>_FillValue</var> =
-‘<samp>-99999.</samp>’. 
-</p><h3><a name="FOOT26" href="#DOCF26">(26)</a></h3>
-<p>Although not a part of the standard, <acronym>NCO</acronym> enforces
-the policy that the <code>_FillValue</code> attribute, if any, of a packed
-variable is also stored at the original precision.
-</p><h3><a name="FOOT27" href="#DOCF27">(27)</a></h3>
-
-<p>32767 = 2^15-1
-</p><h3><a name="FOOT28" href="#DOCF28">(28)</a></h3>
-<p>Operators began performing type conversions before arithmetic
-in <acronym>NCO</acronym> version 1.2, August, 2000. 
-Previous versions never performed unnecessary type conversion for
-arithmetic.
-</p><h3><a name="FOOT29" href="#DOCF29">(29)</a></h3>
-
-<a name="index-C-language-3"></a>
-<p>The actual type conversions are handled by intrinsic C-language type
-conversion, so the <code>floor()</code> function is not explicitly called, 
-though the results would be the same if it were.
-</p><h3><a name="FOOT30" href="#DOCF30">(30)</a></h3>
-
-<p>The exception is appending/altering the attributes <code>x_op</code>,
-<code>y_op</code>, <code>z_op</code>, and <code>t_op</code> for variables which have been
-averaged across space and time dimensions.
-This feature is scheduled for future inclusion in <acronym>NCO</acronym>.
-</p><h3><a name="FOOT31" href="#DOCF31">(31)</a></h3>
-
-<p>The <acronym>CF</acronym> conventions recommend <code>time</code> be stored in the
-format <var>time</var> since <var>base_time</var>, e.g., the <code>units</code>
-attribute of <code>time</code> might be 
-‘<samp>days since 1992-10-8 15:15:42.5 -6:00</samp>’. 
-A problem with this format occurs when using <code>ncrcat</code> to
-concatenate multiple files together, each with a different
-<var>base_time</var>. 
-That is, any <code>time</code> values from files following the first file to
-be concatenated should be corrected to the <var>base_time</var> offset
-specified in the <code>units</code> attribute of <code>time</code> from the first
-file. 
-The analogous problem has been fixed in <acronym>ARM</acronym> files 
-(see section <a href="#ARM-Conventions"><acronym>ARM</acronym> Conventions</a>) and could be fixed for <acronym>CF</acronym> files if
-there is sufficient lobbying.
-</p><h3><a name="FOOT32" href="#DOCF32">(32)</a></h3>
-<p><code>ncap2</code> is the successor to <code>ncap</code> which was
-put into maintenance mode in November, 2006. 
-This documentation refers to <code>ncap2</code>, which has a superset of
-the <code>ncap</code> functionality. 
-Eventually <code>ncap</code> will be deprecated in favor <code>ncap2</code>.
-<code>ncap2</code> may be renamed <code>ncap</code> in 2011.
-</p><h3><a name="FOOT33" href="#DOCF33">(33)</a></h3>
-   
-<p>These are the <acronym>GSL</acronym> standard function names postfixed with
-<code>_e</code>.  
-<acronym>NCO</acronym> calls these functions automatically, without the 
-<acronym>NCO</acronym> command having to specifically indicate the <code>_e</code>
-function suffix.
-</p><h3><a name="FOOT34" href="#DOCF34">(34)</a></h3>
-
-<p>ANSI C compilers are guaranteed to support double precision versions
-of these functions.
-These functions normally operate on netCDF variables of type <code>NC_DOUBLE</code>
-without having to perform intrinsic conversions.
-For example, <acronym>ANSI</acronym> compilers provide <code>sin</code> for the sine of C-type
-<code>double</code> variables. 
-The <acronym>ANSI</acronym> standard does not require, but many compilers provide,
-an extended set of mathematical functions that apply to single
-(<code>float</code>) and quadruple (<code>long double</code>) precision variables. 
-Using these functions (e.g., <code>sinf</code> for <code>float</code>, 
-<code>sinl</code> for <code>long double</code>), when available, is (presumably)
-more efficient than casting variables to type <code>double</code>,
-performing the operation, and then re-casting.
-<acronym>NCO</acronym> uses the faster intrinsic functions when they are
-available, and uses the casting method when they are not.
-</p><h3><a name="FOOT35" href="#DOCF35">(35)</a></h3>
-<p>Linux supports more of these intrinsic functions than
-other OSs.
-</p><h3><a name="FOOT36" href="#DOCF36">(36)</a></h3>
-<p>A naked (i.e., unprotected or unquoted) ‘<samp>*</samp>’ is a
-wildcard character.  
-A naked ‘<samp>-</samp>’ may confuse the command line parser.
-A naked ‘<samp>+</samp>’ and ‘<samp>/</samp>’ are relatively harmless.
-</p><h3><a name="FOOT37" href="#DOCF37">(37)</a></h3>
-<p>The widely used shell Bash correctly interprets all these
-special characters even when they are not quoted. 
-That is, Bash does not prevent <acronym>NCO</acronym> from correctly interpreting 
-the intended arithmetic operation when the following arguments are given
-(without quotes) to <code>ncbo</code>:
-‘<samp>--op_typ=+</samp>’, ‘<samp>--op_typ=-</samp>’, ‘<samp>--op_typ=*</samp>’,
-and ‘<samp>--op_typ=/</samp>’
-</p><h3><a name="FOOT38" href="#DOCF38">(38)</a></h3>
-<p>The command to do this is ‘<samp>ln -s -f ncbo ncadd</samp>’
-</p><h3><a name="FOOT39" href="#DOCF39">(39)</a></h3>
-<p>The command to do this is ‘<samp>alias ncadd='ncbo --op_typ=add'</samp>’
-</p><h3><a name="FOOT40" href="#DOCF40">(40)</a></h3>
-<p>This is because <code>ncra</code> collapses the record dimension
-to a size of 1 (making it a <em>degenerate</em> dimension), but does
-not remove it, while, unless ‘<samp>-b</samp>’ is given, <code>ncwa</code> removes
-all averaged dimensions.
-In other words, by default <code>ncra</code> changes variable size but not 
-rank, while, <code>ncwa</code> changes both variable size and rank.
-</p><h3><a name="FOOT41" href="#DOCF41">(41)</a></h3>
-
-<p>Those familiar with netCDF mechanics might wish to know what is
-happening here: <code>ncks</code> does not attempt to redefine the variable
-in <var>output-file</var> to match its definition in <var>input-file</var>,
-<code>ncks</code> merely copies the values of the variable and its
-coordinate dimensions, if any, from <var>input-file</var> to
-<var>output-file</var>. 
-</p><h3><a name="FOOT42" href="#DOCF42">(42)</a></h3>
-<p>This limitation, imposed by the netCDF storage layer,
-may be relaxed in the future with netCDF4.
-</p><h3><a name="FOOT43" href="#DOCF43">(43)</a></h3>
-<p>The default behavior of (‘<samp>-I</samp>’) changed on
-1998/12/01—before this date the default was not to weight or mask
-coordinate variables.
-</p><h3><a name="FOOT44" href="#DOCF44">(44)</a></h3>
-<p>If <code>lat_wgt</code> contains Gaussian weights then the value of 
-<code>latitude</code> in the <var>output-file</var> will be the area-weighted
-centroid of the hyperslab. 
-For the example given, this is about 30 degrees.
-</p><h3><a name="FOOT45" href="#DOCF45">(45)</a></h3>
-<p>The three switches ‘<samp>-m</samp>’, ‘<samp>-T</samp>’, and ‘<samp>-M</samp>’ are
-maintained for backward compatibility and may be deprecated in the
-future.
-It is safest to write scripts using ‘<samp>--mask_condition</samp>’.
-</p><h3><a name="FOOT46" href="#DOCF46">(46)</a></h3>
-<p><code>gw</code> stands for <em>Gaussian weight</em> in many
-climate models.
-</p><h3><a name="FOOT47" href="#DOCF47">(47)</a></h3>
-<p><code>ORO</code> stands for <em>Orography</em> in some climate models
-and in those models <em><var>ORO</var> < 0.5</em> selects ocean gridpoints.
-</p><h3><a name="FOOT48" href="#DOCF48">(48)</a></h3>
-
-<a name="index-chocolate"></a>
-<p>Happy users have sent me a few gifts, though.
-This includes a box of imported chocolate.
-Mmm.
-Appreciation and gifts are definitely better than money.
-Naturally, I’m too lazy to split and send gifts to the other developers.
-However, unlike some <acronym>NCO</acronym> developers, I have a steady "real job".
-My intent is to split monetary donations among the active developers
-and to send them their shares via PayPal.
-</p><hr size="1">
-<a name="SEC_Contents"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h1>Table of Contents</h1>
-<div class="contents">
-
-<ul class="toc">
-  <li><a name="toc-Foreword-1" href="#Foreword">Foreword</a></li>
-  <li><a name="toc-Summary-1" href="#Summary">Summary</a></li>
-  <li><a name="toc-Introduction-1" href="#Introduction">1. Introduction</a>
-  <ul class="toc">
-    <li><a name="toc-Availability-1" href="#Availability">1.1 Availability</a></li>
-    <li><a name="toc-Operating-systems-compatible-with-NCO" href="#Compatability">1.2 Operating systems compatible with <acronym>NCO</acronym></a>
-    <ul class="toc">
-      <li><a name="toc-Compiling-NCO-for-Microsoft-Windows-OS" href="#Windows-Operating-System">1.2.1 Compiling <acronym>NCO</acronym> for Microsoft Windows <acronym>OS</acronym></a></li>
-    </ul></li>
-    <li><a name="toc-Symbolic-Links-1" href="#Symbolic-Links">1.3 Symbolic Links</a></li>
-    <li><a name="toc-Libraries-1" href="#Libraries">1.4 Libraries</a></li>
-    <li><a name="toc-netCDF2_002f3_002f4-and-HDF4_002f5-Support-1" href="#netCDF2_002f3_002f4-and-HDF4_002f5-Support">1.5 netCDF2/3/4 and HDF4/5 Support</a></li>
-    <li><a name="toc-Help-Requests-and-Bug-Reports-1" href="#Help-Requests-and-Bug-Reports">1.6 Help Requests and Bug Reports</a></li>
-  </ul></li>
-  <li><a name="toc-Operator-Strategies" href="#Strategies">2. Operator Strategies</a>
-  <ul class="toc">
-    <li><a name="toc-Philosophy-1" href="#Philosophy">2.1 Philosophy</a></li>
-    <li><a name="toc-Climate-Model-Paradigm-1" href="#Climate-Model-Paradigm">2.2 Climate Model Paradigm</a></li>
-    <li><a name="toc-Temporary-Output-Files-1" href="#Temporary-Output-Files">2.3 Temporary Output Files</a></li>
-    <li><a name="toc-Appending-Variables-1" href="#Appending-Variables">2.4 Appending Variables</a></li>
-    <li><a name="toc-Simple-Arithmetic-and-Interpolation-1" href="#Simple-Arithmetic-and-Interpolation">2.5 Simple Arithmetic and Interpolation</a></li>
-    <li><a name="toc-Averagers-vs_002e-Concatenators" href="#Averaging-vs_002e-Concatenating">2.6 Averagers vs. Concatenators</a>
-    <ul class="toc">
-      <li><a name="toc-Concatenators-ncrcat-and-ncecat" href="#Concatenation">2.6.1 Concatenators <code>ncrcat</code> and <code>ncecat</code></a></li>
-      <li><a name="toc-Averagers-ncea_002c-ncra_002c-and-ncwa" href="#Averaging">2.6.2 Averagers <code>ncea</code>, <code>ncra</code>, and <code>ncwa</code></a></li>
-      <li><a name="toc-Interpolator-ncflint" href="#Interpolating">2.6.3 Interpolator <code>ncflint</code></a></li>
-    </ul></li>
-    <li><a name="toc-Large-Numbers-of-Files-1" href="#Large-Numbers-of-Files">2.7 Large Numbers of Files</a></li>
-    <li><a name="toc-Large-Datasets-1" href="#Large-Datasets">2.8 Large Datasets</a></li>
-    <li><a name="toc-Memory-Requirements-1" href="#Memory-Requirements">2.9 Memory Requirements</a>
-    <ul class="toc">
-      <li><a name="toc-Single-and-Multi_002dfile-Operators-1" href="#Single-and-Multi_002dfile-Operators">2.9.1 Single and Multi-file Operators</a></li>
-      <li><a name="toc-Memory-for-ncap2-1" href="#Memory-for-ncap2">2.9.2 Memory for <code>ncap2</code></a></li>
-    </ul></li>
-    <li><a name="toc-Performance-1" href="#Performance">2.10 Performance</a></li>
-  </ul></li>
-  <li><a name="toc-NCO-Features" href="#Common-features">3. NCO Features</a>
-  <ul class="toc">
-    <li><a name="toc-Internationalization-1" href="#Internationalization">3.1 Internationalization</a></li>
-    <li><a name="toc-Metadata-Optimization-1" href="#Metadata-Optimization">3.2 Metadata Optimization</a></li>
-    <li><a name="toc-OpenMP-Threading-1" href="#OpenMP-Threading">3.3 OpenMP Threading</a></li>
-    <li><a name="toc-Command-Line-Options-1" href="#Command-Line-Options">3.4 Command Line Options</a></li>
-    <li><a name="toc-Specifying-Input-Files-1" href="#Specifying-Input-Files">3.5 Specifying Input Files</a></li>
-    <li><a name="toc-Specifying-Output-Files-1" href="#Specifying-Output-Files">3.6 Specifying Output Files</a></li>
-    <li><a name="toc-Accessing-Remote-Files" href="#Remote-storage">3.7 Accessing Remote Files</a>
-    <ul class="toc">
-      <li><a name="toc-OPeNDAP-1" href="#OPeNDAP">3.7.1 <acronym>OPeNDAP</acronym></a></li>
-    </ul></li>
-    <li><a name="toc-Retaining-Retrieved-Files-1" href="#Retaining-Retrieved-Files">3.8 Retaining Retrieved Files</a></li>
-    <li><a name="toc-Selecting-Output-File-Format-1" href="#Selecting-Output-File-Format">3.9 Selecting Output File Format</a></li>
-    <li><a name="toc-Large-File-Support-1" href="#Large-File-Support">3.10 Large File Support</a></li>
-    <li><a name="toc-Subsetting-Variables-1" href="#Subsetting-Variables">3.11 Subsetting Variables</a></li>
-    <li><a name="toc-Subsetting-Coordinate-Variables-1" href="#Subsetting-Coordinate-Variables">3.12 Subsetting Coordinate Variables</a></li>
-    <li><a name="toc-C-and-Fortran-Index-conventions" href="#C-and-Fortran-Index-Conventions">3.13 C and Fortran Index conventions</a></li>
-    <li><a name="toc-Hyperslabs-1" href="#Hyperslabs">3.14 Hyperslabs</a></li>
-    <li><a name="toc-Stride-1" href="#Stride">3.15 Stride</a></li>
-    <li><a name="toc-Multislabs-1" href="#Multislabs">3.16 Multislabs</a></li>
-    <li><a name="toc-Wrapped-Coordinates-1" href="#Wrapped-Coordinates">3.17 Wrapped Coordinates</a></li>
-    <li><a name="toc-Auxiliary-Coordinates-1" href="#Auxiliary-Coordinates">3.18 Auxiliary Coordinates</a></li>
-    <li><a name="toc-UDUnits-Support-1" href="#UDUnits-Support">3.19 UDUnits Support</a></li>
-    <li><a name="toc-Rebasing-Time-Coordinate-1" href="#Rebasing-Time-Coordinate">3.20 Rebasing Time Coordinate</a></li>
-    <li><a name="toc-Missing-values" href="#Missing-Values">3.21 Missing values</a></li>
-    <li><a name="toc-Chunking-1" href="#Chunking">3.22 Chunking</a></li>
-    <li><a name="toc-Deflation-1" href="#Deflation">3.23 Deflation</a></li>
-    <li><a name="toc-Packed-data-1" href="#Packed-data">3.24 Packed data</a>
-    <ul class="toc">
-      <li><a name="toc-Packing-Algorithm" href="#Packing-Algorithm">Packing Algorithm</a></li>
-      <li><a name="toc-Unpacking-Algorithm" href="#Unpacking-Algorithm">Unpacking Algorithm</a></li>
-      <li><a name="toc-Default-Handling-of-Packed-Data" href="#Default-Handling-of-Packed-Data">Default Handling of Packed Data</a></li>
-    </ul></li>
-    <li><a name="toc-Operation-Types-1" href="#Operation-Types">3.25 Operation Types</a></li>
-    <li><a name="toc-Type-Conversion-1" href="#Type-Conversion">3.26 Type Conversion</a>
-    <ul class="toc">
-      <li><a name="toc-Automatic-type-conversion-1" href="#Automatic-type-conversion">3.26.1 Automatic type conversion</a></li>
-      <li><a name="toc-Manual-type-conversion-1" href="#Manual-type-conversion">3.26.2 Manual type conversion</a></li>
-    </ul></li>
-    <li><a name="toc-Batch-Mode-1" href="#Batch-Mode">3.27 Batch Mode</a></li>
-    <li><a name="toc-History-Attribute-1" href="#History-Attribute">3.28 History Attribute</a></li>
-    <li><a name="toc-File-List-Attributes-1" href="#File-List-Attributes">3.29 File List Attributes</a></li>
-    <li><a name="toc-CF-Conventions-1" href="#CF-Conventions">3.30 <acronym>CF</acronym> Conventions</a></li>
-    <li><a name="toc-ARM-Conventions-1" href="#ARM-Conventions">3.31 <acronym>ARM</acronym> Conventions</a></li>
-    <li><a name="toc-Operator-Version-1" href="#Operator-Version">3.32 Operator Version</a></li>
-  </ul></li>
-  <li><a name="toc-Operator-Reference-Manual-1" href="#Operator-Reference-Manual">4. Operator Reference Manual</a>
-  <ul class="toc">
-    <li><a name="toc-ncap2-netCDF-Arithmetic-Processor-1" href="#ncap2-netCDF-Arithmetic-Processor">4.1 <code>ncap2</code> netCDF Arithmetic Processor</a>
-    <ul class="toc">
-      <li><a name="toc-Syntax-of-ncap2-statements-1" href="#Syntax-of-ncap2-statements">4.1.1 Syntax of <code>ncap2</code> statements</a></li>
-      <li><a name="toc-Expressions-1" href="#Expressions">4.1.2 Expressions</a></li>
-      <li><a name="toc-Dimensions-1" href="#Dimensions">4.1.3 Dimensions</a></li>
-      <li><a name="toc-Left-hand-casting-1" href="#Left-hand-casting">4.1.4 Left hand casting</a></li>
-      <li><a name="toc-Arrays-and-hyperslabs-1" href="#Arrays-and-hyperslabs">4.1.5 Arrays and hyperslabs</a></li>
-      <li><a name="toc-Attributes-1" href="#Attributes">4.1.6 Attributes</a></li>
-      <li><a name="toc-Number-literals-1" href="#Number-literals">4.1.7 Number literals</a></li>
-      <li><a name="toc-if-statement-1" href="#if-statement">4.1.8 if statement</a></li>
-      <li><a name="toc-print-statement-1" href="#print-statement">4.1.9 print statement</a></li>
-      <li><a name="toc-Missing-values-ncap2-1" href="#Missing-values-ncap2">4.1.10 Missing values ncap2</a></li>
-      <li><a name="toc-Methods-and-functions-1" href="#Methods-and-functions">4.1.11 Methods and functions</a></li>
-      <li><a name="toc-RAM-variables-1" href="#RAM-variables">4.1.12 RAM variables</a></li>
-      <li><a name="toc-Where-statement-1" href="#Where-statement">4.1.13 Where statement</a></li>
-      <li><a name="toc-Loops-1" href="#Loops">4.1.14 Loops</a></li>
-      <li><a name="toc-Include-files-1" href="#Include-files">4.1.15 Include files</a></li>
-      <li><a name="toc-sort-methods" href="#Sort-methods">4.1.16 <code>sort</code> methods</a></li>
-      <li><a name="toc-Irregular-Grids" href="#Irregular-grids">4.1.17 Irregular Grids</a></li>
-      <li><a name="toc-Bilinear-interpolation-1" href="#Bilinear-interpolation">4.1.18 Bilinear interpolation</a></li>
-      <li><a name="toc-GSL-special-functions-1" href="#GSL-special-functions">4.1.19 GSL special functions</a></li>
-      <li><a name="toc-GSL-interpolation-1" href="#GSL-interpolation">4.1.20 GSL interpolation</a></li>
-      <li><a name="toc-GSL-least_002dsquares-fitting-1" href="#GSL-least_002dsquares-fitting">4.1.21 GSL least-squares fitting</a></li>
-      <li><a name="toc-GSL-statistics-1" href="#GSL-statistics">4.1.22 GSL statistics</a></li>
-      <li><a name="toc-GSL-random-number-generation-1" href="#GSL-random-number-generation">4.1.23 GSL random number generation</a></li>
-      <li><a name="toc-Examples-ncap2-1" href="#Examples-ncap2">4.1.24 Examples ncap2</a></li>
-      <li><a name="toc-Intrinsic-mathematical-methods-1" href="#Intrinsic-mathematical-methods">4.1.25 Intrinsic mathematical methods</a></li>
-      <li><a name="toc-Operators-precedence-and-associativity-1" href="#Operators-precedence-and-associativity">4.1.26 Operators precedence and associativity</a></li>
-      <li><a name="toc-ID-Quoting-1" href="#ID-Quoting">4.1.27 ID Quoting</a></li>
-    </ul></li>
-    <li><a name="toc-ncatted-netCDF-Attribute-Editor-1" href="#ncatted-netCDF-Attribute-Editor">4.2 <code>ncatted</code> netCDF Attribute Editor</a></li>
-    <li><a name="toc-ncbo-netCDF-Binary-Operator-1" href="#ncbo-netCDF-Binary-Operator">4.3 <code>ncbo</code> netCDF Binary Operator</a></li>
-    <li><a name="toc-ncea-netCDF-Ensemble-Averager-1" href="#ncea-netCDF-Ensemble-Averager">4.4 <code>ncea</code> netCDF Ensemble Averager</a></li>
-    <li><a name="toc-ncecat-netCDF-Ensemble-Concatenator-1" href="#ncecat-netCDF-Ensemble-Concatenator">4.5 <code>ncecat</code> netCDF Ensemble Concatenator</a></li>
-    <li><a name="toc-ncflint-netCDF-File-Interpolator-1" href="#ncflint-netCDF-File-Interpolator">4.6 <code>ncflint</code> netCDF File Interpolator</a></li>
-    <li><a name="toc-ncks-netCDF-Kitchen-Sink-1" href="#ncks-netCDF-Kitchen-Sink">4.7 <code>ncks</code> netCDF Kitchen Sink</a>
-    <ul class="toc">
-      <li><a name="toc-Options-specific-to-ncks" href="#Options-specific-to-ncks">Options specific to <code>ncks</code></a></li>
-    </ul></li>
-    <li><a name="toc-ncpdq-netCDF-Permute-Dimensions-Quickly-1" href="#ncpdq-netCDF-Permute-Dimensions-Quickly">4.8 <code>ncpdq</code> netCDF Permute Dimensions Quickly</a>
-    <ul class="toc">
-      <li><a name="toc-Packing-and-Unpacking-Functions" href="#Packing-and-Unpacking-Functions">Packing and Unpacking Functions</a></li>
-      <li><a name="toc-Dimension-Permutation" href="#Dimension-Permutation">Dimension Permutation</a></li>
-    </ul></li>
-    <li><a name="toc-ncra-netCDF-Record-Averager-1" href="#ncra-netCDF-Record-Averager">4.9 <code>ncra</code> netCDF Record Averager</a></li>
-    <li><a name="toc-ncrcat-netCDF-Record-Concatenator-1" href="#ncrcat-netCDF-Record-Concatenator">4.10 <code>ncrcat</code> netCDF Record Concatenator</a></li>
-    <li><a name="toc-ncrename-netCDF-Renamer-1" href="#ncrename-netCDF-Renamer">4.11 <code>ncrename</code> netCDF Renamer</a></li>
-    <li><a name="toc-ncwa-netCDF-Weighted-Averager-1" href="#ncwa-netCDF-Weighted-Averager">4.12 <code>ncwa</code> netCDF Weighted Averager</a>
-    <ul class="toc">
-      <li><a name="toc-Mask-condition-1" href="#Mask-condition">4.12.1 Mask condition</a></li>
-      <li><a name="toc-Normalization-and-Integration-1" href="#Normalization-and-Integration">4.12.2 Normalization and Integration</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Contributing-1" href="#Contributing">5. Contributing</a>
-  <ul class="toc">
-    <li><a name="toc-Contributors-1" href="#Contributors">5.1 Contributors</a></li>
-    <li><a name="toc-Proposals-for-Institutional-Funding-1" href="#Proposals-for-Institutional-Funding">5.2 Proposals for Institutional Funding</a></li>
-  </ul></li>
-  <li><a name="toc-CCSM-Example-1" href="#CCSM-Example">6. CCSM Example</a></li>
-  <li><a name="toc-References" href="#mybibnode">7. References</a></li>
-  <li><a name="toc-General-Index-1" href="#General-Index">General Index</a></li>
-</ul>
-</div>
-<hr size="1">
-<a name="SEC_About"></a>
-<table cellpadding="1" cellspacing="1" border="0">
-<tr><td valign="middle" align="left">[<a href="#Top" title="Cover (top) of document">Top</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_Contents" title="Table of contents">Contents</a>]</td>
-<td valign="middle" align="left">[<a href="#General-Index" title="Index">Index</a>]</td>
-<td valign="middle" align="left">[<a href="#SEC_About" title="About (help)"> ? </a>]</td>
-</tr></table>
-<h1>About This Document</h1>
-<p>
-  This document was generated by <em>Charlie Zender</em> on <em>February 13, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
-</p>
-<p>
-  The buttons in the navigation panels have the following meaning:
-</p>
-<table border="1">
-  <tr>
-    <th> Button </th>
-    <th> Name </th>
-    <th> Go to </th>
-    <th> From 1.2.3 go to</th>
-  </tr>
-  <tr>
-    <td align="center"> [ < ] </td>
-    <td align="center">Back</td>
-    <td>Previous section in reading order</td>
-    <td>1.2.2</td>
-  </tr>
-  <tr>
-    <td align="center"> [ > ] </td>
-    <td align="center">Forward</td>
-    <td>Next section in reading order</td>
-    <td>1.2.4</td>
-  </tr>
-  <tr>
-    <td align="center"> [ << ] </td>
-    <td align="center">FastBack</td>
-    <td>Beginning of this chapter or previous chapter</td>
-    <td>1</td>
-  </tr>
-  <tr>
-    <td align="center"> [ Up ] </td>
-    <td align="center">Up</td>
-    <td>Up section</td>
-    <td>1.2</td>
-  </tr>
-  <tr>
-    <td align="center"> [ >> ] </td>
-    <td align="center">FastForward</td>
-    <td>Next chapter</td>
-    <td>2</td>
-  </tr>
-  <tr>
-    <td align="center"> [Top] </td>
-    <td align="center">Top</td>
-    <td>Cover (top) of document</td>
-    <td>   </td>
-  </tr>
-  <tr>
-    <td align="center"> [Contents] </td>
-    <td align="center">Contents</td>
-    <td>Table of contents</td>
-    <td>   </td>
-  </tr>
-  <tr>
-    <td align="center"> [Index] </td>
-    <td align="center">Index</td>
-    <td>Index</td>
-    <td>   </td>
-  </tr>
-  <tr>
-    <td align="center"> [ ? ] </td>
-    <td align="center">About</td>
-    <td>About (help)</td>
-    <td>   </td>
-  </tr>
-</table>
-
-<p>
-  where the <strong> Example </strong> assumes that the current position is at <strong> Subsubsection One-Two-Three </strong> of a document of the following structure:
-</p>
-
-<ul>
-  <li> 1. Section One
-    <ul>
-      <li>1.1 Subsection One-One
-        <ul>
-          <li>...</li>
-        </ul>
-      </li>
-      <li>1.2 Subsection One-Two
-        <ul>
-          <li>1.2.1 Subsubsection One-Two-One</li>
-          <li>1.2.2 Subsubsection One-Two-Two</li>
-          <li>1.2.3 Subsubsection One-Two-Three    
-            <strong><== Current Position </strong></li>
-          <li>1.2.4 Subsubsection One-Two-Four</li>
-        </ul>
-      </li>
-      <li>1.3 Subsection One-Three
-        <ul>
-          <li>...</li>
-        </ul>
-      </li>
-      <li>1.4 Subsection One-Four</li>
-    </ul>
-  </li>
-</ul>
-
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Charlie Zender</em> on <em>February 13, 2012</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
-
-</p>
-</body>
-</html>
diff --git a/doc/nco.info b/doc/nco.info
deleted file mode 100644
index b292141..0000000
--- a/doc/nco.info
+++ /dev/null
@@ -1,11448 +0,0 @@
-This is ../doc/nco.info, produced by makeinfo version 4.13 from
-../doc/nco.texi.
-
-INFO-DIR-SECTION netCDF
-START-INFO-DIR-ENTRY
-* NCO::        User's Guide for the netCDF Operator suite
-END-INFO-DIR-ENTRY
-
-   This file documents NCO, a collection of utilities to manipulate and
-analyze netCDF files.
-
-   Copyright (C) 1995-2012 Charlie Zender
-
-   This is the first edition of the `NCO User's Guide',
-and is consistent with version 2 of `texinfo.tex'.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. The
-license is available online at `http://www.gnu.org/copyleft/fdl.html'
-
-   The original author of this software, Charlie Zender, wants to
-improve it with the help of your suggestions, improvements,
-bug-reports, and patches.
-Charlie Zender <surname at uci dot edu> (yes, my surname is zender)
-3200 Croul Hall
-Department of Earth System Science
-University of California, Irvine
-Irvine, CA 92697-3100
-
-File: nco.info,  Node: Top,  Next: Foreword,  Prev: (dir),  Up: (dir)
-
-NCO User's Guide
-****************
-
-_Note to readers of the NCO User's Guide in Info format_: _The NCO
-User's Guide in PDF format (./nco.pdf) (also on SourceForge
-(http://nco.sf.net/nco.pdf)) contains the complete NCO documentation._
-This Info documentation is equivalent except it refers you to the
-printed (i.e., DVI, PostScript, and PDF) documentation for description
-of complex mathematical expressions.
-
-The netCDF Operators, or NCO, are a suite of programs known as
-operators.  The operators facilitate manipulation and analysis of data
-stored in the self-describing netCDF format, available from
-(`http://www.unidata.ucar.edu/packages/netcdf').  Each NCO operator
-(e.g., ncks) takes netCDF input file(s), performs an operation (e.g.,
-averaging, hyperslabbing, or renaming), and outputs a processed netCDF
-file.  Although most users of netCDF data are involved in scientific
-research, these data formats, and thus NCO, are generic and are equally
-useful in fields from agriculture to zoology.  The NCO User's Guide
-illustrates NCO use with examples from the field of climate modeling
-and analysis.  The NCO homepage is `http://nco.sf.net', and there is a
-mirror at `http://dust.ess.uci.edu/nco'.
-
-   This documentation is for NCO version 4.0.9.  It was last updated
-13 February 2012.  Corrections, additions, and rewrites of this
-documentation are very welcome.
-
-   Enjoy,
-Charlie Zender
-
-* Menu:
-
-* Foreword::
-* Summary::
-* Introduction::
-* Strategies::
-* Common features::
-* Operator Reference Manual::
-* Contributing::
-* CCSM Example::
-* mybibnode::
-* General Index::
-
-
-File: nco.info,  Node: Foreword,  Next: Summary,  Prev: Top,  Up: Top
-
-Foreword
-********
-
-NCO is the result of software needs that arose while I worked on
-projects funded by NCAR, NASA, and ARM.  Thinking they might prove
-useful as tools or templates to others, it is my pleasure to provide
-them freely to the scientific community.  Many users (most of whom I
-have never met) have encouraged the development of NCO.  Thanks
-espcially to Jan Polcher, Keith Lindsay, Arlindo da Silva, John
-Sheldon, and William Weibel for stimulating suggestions and
-correspondence.  Your encouragment motivated me to complete the `NCO
-User's Guide'.  So if you like NCO, send me a note!  I should mention
-that NCO is not connected to or officially endorsed by Unidata, ACD,
-ASP, CGD, or Nike.
-
-Charlie Zender
-May 1997
-Boulder, Colorado
-
-
-Major feature improvements entitle me to write another Foreword.  In
-the last five years a lot of work has been done to refine NCO.  NCO is
-now an open source project and appears to be much healthier for it.
-The list of illustrious institutions that do not endorse NCO continues
-to grow, and now includes UCI.
-
-Charlie Zender
-October 2000
-Irvine, California
-
-
-The most remarkable advances in NCO capabilities in the last few years
-are due to contributions from the Open Source community.  Especially
-noteworthy are the contributions of Henry Butowsky and Rorik Peterson.
-
-Charlie Zender
-January 2003
-Irvine, California
-
-
-NCO was generously supported from 2004-2008 by US National Science
-Foundation (NSF) grant IIS-0431203
-(http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0431203).
-This support allowed me to maintain and extend core NCO code, and
-others to advance NCO in new directions: Gayathri Venkitachalam helped
-implement MPI; Harry Mangalam improved regression testing and
-benchmarking; Daniel Wang developed the server-side capability, SWAMP;
-and Henry Butowsky, a long-time contributor, developed `ncap2'.  This
-support also led NCO to debut in professional journals and meetings.
-The personal and professional contacts made during this evolution have
-been immensely rewarding.
-
-Charlie Zender
-March 2008
-Grenoble, France
-
-File: nco.info,  Node: Summary,  Next: Introduction,  Prev: Foreword,  Up: Top
-
-Summary
-*******
-
-This manual describes NCO, which stands for netCDF Operators.  NCO is a
-suite of programs known as "operators".  Each operator is a standalone,
-command line program executed at the shell-level like, e.g., `ls' or
-`mkdir'.  The operators take netCDF files (including HDF5 files
-constructed using the netCDF API) as input, perform an operation (e.g.,
-averaging or hyperslabbing), and produce a netCDF file as output.  The
-operators are primarily designed to aid manipulation and analysis of
-data.  The examples in this documentation are typical applications of
-the operators for processing climate model output.  This stems from
-their origin, though the operators are as general as netCDF itself.
-
-
-File: nco.info,  Node: Introduction,  Next: Strategies,  Prev: Summary,  Up: Top
-
-1 Introduction
-**************
-
-* Menu:
-
-* Availability::
-* Compatability::
-* Symbolic Links::
-* Libraries::
-* netCDF2/3/4 and HDF4/5 Support::
-* Help Requests and Bug Reports::
-
-
-File: nco.info,  Node: Availability,  Next: Compatability,  Prev: Introduction,  Up: Introduction
-
-1.1 Availability
-================
-
-The complete NCO source distribution is currently distributed as a
-"compressed tarfile" from `http://sf.net/projects/nco' and from
-`http://dust.ess.uci.edu/nco/nco.tar.gz'.  The compressed tarfile must
-be uncompressed and untarred before building NCO.  Uncompress the file
-with `gunzip nco.tar.gz'.  Extract the source files from the resulting
-tarfile with `tar -xvf nco.tar'.  GNU `tar' lets you perform both
-operations in one step with `tar -xvzf nco.tar.gz'.
-
-   The documentation for NCO is called the `NCO User's Guide'.  The
-`User's Guide' is available in Postscript, HTML, DVI, TeXinfo, and Info
-formats.  These formats are included in the source distribution in the
-files `nco.ps', `nco.html', `nco.dvi', `nco.texi', and `nco.info*',
-respectively.  All the documentation descends from a single source file,
-`nco.texi' (1).  Hence the documentation in every format is very
-similar.  However, some of the complex mathematical expressions needed
-to describe `ncwa' can only be displayed in DVI, Postscript, and PDF
-formats.
-
-   A complete list of papers and publications on/about NCO is available
-on the NCO homepage.  Most of these are freely available.  The primary
-refereed publications are fxm ZeM06 and fxm Zen07.  These contain
-copyright restrictions which limit their redistribution, but they are
-freely available in preprint form from the NCO.
-
-   If you want to quickly see what the latest improvements in NCO are
-(without downloading the entire source distribution), visit the NCO
-homepage at `http://nco.sf.net'.  The HTML version of the `User's
-Guide' is also available online through the World Wide Web at URL
-`http://nco.sf.net/nco.html'.  To build and use NCO, you must have
-netCDF installed.  The netCDF homepage is
-`http://www.unidata.ucar.edu/packages/netcdf'.
-
-   New NCO releases are announced on the netCDF list and on the
-`nco-announce' mailing list
-`http://lists.sf.net/mailman/listinfo/nco-announce'.
-
-   ---------- Footnotes ----------
-
-   (1) To produce these formats, `nco.texi' was simply run through the
-freely available programs `texi2dvi', `dvips', `texi2html', and
-`makeinfo'.  Due to a bug in TeX, the resulting Postscript file,
-`nco.ps', contains the Table of Contents as the final pages.  Thus if
-you print `nco.ps', remember to insert the Table of Contents after the
-cover sheet before you staple the manual.
-
-
-File: nco.info,  Node: Compatability,  Next: Symbolic Links,  Prev: Availability,  Up: Introduction
-
-1.2 Operating systems compatible with NCO
-=========================================
-
-NCO has been successfully ported and tested and is known to work on the
-following 32- and 64-bit platforms: IBM AIX 4.x, 5.x, FreeBSD 4.x,
-GNU/Linux 2.x, LinuxPPC, LinuxAlpha, LinuxARM, LinuxSparc64, SGI IRIX
-5.x and 6.x, MacOS X 10.x, NEC Super-UX 10.x, DEC OSF, Sun SunOS 4.1.x,
-Solaris 2.x, Cray UNICOS 8.x-10.x, and MS Windows95 and all later
-versions.  If you port the code to a new operating system, please send
-me a note and any patches you required.
-
-   The major prerequisite for installing NCO on a particular platform
-is the successful, prior installation of the netCDF library (and, as of
-2003, the UDUnits library).  Unidata has shown a commitment to
-maintaining netCDF and UDUnits on all popular UNIX platforms, and is
-moving towards full support for the Microsoft Windows operating system
-(OS).  Given this, the only difficulty in implementing NCO on a
-particular platform is standardization of various C-language API system
-calls.  NCO code is tested for ANSI compliance by compiling with
-C compilers including those from GNU (`gcc -std=c99 -pedantic
--D_BSD_SOURCE -D_POSIX_SOURCE' -Wall) (1), Comeau Computing (`como
---c99'), Cray (`cc'), HP/Compaq/DEC (`cc'), IBM (`xlc -c
--qlanglvl=extc99'), Intel (`icc -std=c99'), NEC (`cc'), PathScale
-(QLogic) (`pathcc -std=c99'), PGI (`pgcc -c9x'), SGI (`cc -c99'), and
-Sun (`cc').  NCO (all commands and the `libnco' library) and the C++
-interface to netCDF (called `libnco_c++') comply with the ISO C++
-standards as implemented by Comeau Computing (`como'), Cray (`CC'), GNU
-(`g++ -Wall'), HP/Compaq/DEC (`cxx'), IBM (`xlC'), Intel (`icc'), NEC
-(`c++'), PathScale (Qlogic) (`pathCC'), PGI (`pgCC'), SGI (`CC
--LANG:std'), and Sun (`CC -LANG:std').  See `nco/bld/Makefile' and
-`nco/src/nco_c++/Makefile.old' for more details and exact settings.
-
-   Until recently (and not even yet), ANSI-compliant has meant
-compliance with the 1989 ISO C-standard, usually called C89 (with minor
-revisions made in 1994 and 1995).  C89 lacks variable-size arrays,
-restricted pointers, some useful `printf' formats, and many
-mathematical special functions.  These are valuable features of C99,
-the 1999 ISO C-standard.  NCO is C99-compliant where possible and
-C89-compliant where necessary.  Certain branches in the code are
-required to satisfy the native SGI and SunOS C compilers, which are
-strictly ANSI C89 compliant, and cannot benefit from C99 features.
-However, C99 features are fully supported by modern AIX, GNU, Intel,
-NEC, Solaris, and UNICOS compilers.  NCO requires a C99-compliant
-compiler as of NCO version 2.9.8, released in August, 2004.
-
-   The most time-intensive portion of NCO execution is spent in
-arithmetic operations, e.g., multiplication, averaging, subtraction.
-These operations were performed in Fortran by default until August,
-1999.  This was a design decision based on the relative speed of
-Fortran-based object code vs. C-based object code in late 1994.
-C compiler vectorization capabilities have dramatically improved since
-1994.  We have accordingly replaced all Fortran subroutines with
-C functions.  This greatly simplifies the task of building NCO on
-nominally unsupported platforms.  As of August 1999, NCO built entirely
-in C by default.  This allowed NCO to compile on any machine with an
-ANSI C compiler.  In August 2004, the first C99 feature, the `restrict'
-type qualifier, entered NCO in version 2.9.8.  C compilers can obtain
-better performance with C99 restricted pointers since they inform the
-compiler when it may make Fortran-like assumptions regarding pointer
-contents alteration.  Subsequently, NCO requires a C99 compiler to
-build correctly (2).
-
-   In January 2009, NCO version 3.9.6 was the first to link to the GNU
-Scientific Library (GSL).  GSL must be version 1.4 or later.  NCO, in
-particular `ncap2', uses the GSL special function library to evaluate
-geoscience-relevant mathematics such as Bessel functions, Legendre
-polynomials, and incomplete gamma functions (*note GSL special
-functions::).
-
-   In June 2005, NCO version 3.0.1 began to take advantage of C99
-mathematical special functions.  These include the standarized gamma
-function (called `tgamma()' for "true gamma").  NCO automagically takes
-advantage of some GNU Compiler Collection (GCC) extensions to ANSI C.
-
-   As of July 2000 and NCO version 1.2, NCO no longer performs
-arithmetic operations in Fortran.  We decided to sacrifice executable
-speed for code maintainability.  Since no objective statistics were
-ever performed to quantify the difference in speed between the Fortran
-and C code, the performance penalty incurred by this decision is
-unknown.  Supporting Fortran involves maintaining two sets of routines
-for every arithmetic operation.  The `USE_FORTRAN_ARITHMETIC' flag is
-still retained in the `Makefile'.  The file containing the Fortran
-code, `nco_fortran.F', has been deprecated but a volunteer
-(Dr. Frankenstein?) could resurrect it.  If you would like to volunteer
-to maintain `nco_fortran.F' please contact me.
-
-* Menu:
-
-* Windows Operating System::
-
-   ---------- Footnotes ----------
-
-   (1) The `_BSD_SOURCE' token is required on some Linux platforms where
-`gcc' dislikes the network header files like `netinet/in.h').
-
-   (2) NCO may still build with an ANSI or ISO C89 or C94/95-compliant
-compiler if the C pre-processor undefines the `restrict' type
-qualifier, e.g., by invoking the compiler with `-Drestrict='''.
-
-
-File: nco.info,  Node: Windows Operating System,  Prev: Compatability,  Up: Compatability
-
-1.2.1 Compiling NCO for Microsoft Windows OS
---------------------------------------------
-
-NCO has been successfully ported and tested on most Microsoft Windows
-operating systems including: 95/98/NT/2000/XP/Vista.  The switches
-necessary to accomplish this are included in the standard distribution
-of NCO.  Using the freely available Cygwin (formerly gnu-win32)
-development environment (1), the compilation process is very similar to
-installing NCO on a UNIX system.  Set the `PVM_ARCH' preprocessor token
-to `WIN32'.  Note that defining `WIN32' has the side effect of disabling
-Internet features of NCO (see below).  NCO should now build like it
-does on UNIX.
-
-   The least portable section of the code is the use of standard UNIX
-and Internet protocols (e.g., `ftp', `rcp', `scp', `sftp', `getuid',
-`gethostname', and header files `<arpa/nameser.h>' and `<resolv.h>').  Fortunately,
-these UNIX-y calls are only invoked by the single NCO subroutine which
-is responsible for retrieving files stored on remote systems (*note
-Remote storage::).  In order to support NCO on the Microsoft Windows
-platforms, this single feature was disabled (on Windows OS only).  This
-was required by Cygwin 18.x--newer versions of Cygwin may support these
-protocols (let me know if this is the case).  The NCO operators should
-behave identically on Windows and UNIX platforms in all other respects.
-
-   ---------- Footnotes ----------
-
-   (1) The Cygwin package is available from
-`http://sourceware.redhat.com/cygwin'
-Currently, Cygwin 20.x comes with the GNU C/C++ compilers (`gcc', `g++'.
-These GNU compilers may be used to build the netCDF distribution itself.
-
-
-File: nco.info,  Node: Symbolic Links,  Next: Libraries,  Prev: Compatability,  Up: Introduction
-
-1.3 Symbolic Links
-==================
-
-NCO relies on a common set of underlying algorithms.  To minimize
-duplication of source code, multiple operators sometimes share the same
-underlying source.  This is accomplished by symbolic links from a
-single underlying executable program to one or more invoked executable
-names.  For example, `ncea' and `ncrcat' are symbolically linked to the
-`ncra' executable.  The `ncra' executable behaves slightly differently
-based on its invocation name (i.e., `argv[0]'), which can be `ncea',
-`ncra', or `ncrcat'.  Logically, these are three different operators
-that happen to share the same executable.
-
-   For historical reasons, and to be more user friendly, multiple
-synonyms (or pseudonyms) may refer to the same operator invoked with
-different switches.  For example, `ncdiff' is the same as `ncbo' and
-`ncpack' is the same as `ncpdq'.  We implement the symbolic links and
-synonyms by the executing the following UNIX commands in the directory
-where the NCO executables are installed.
-     ln -s -f ncbo ncdiff    # ncbo --op_typ='+'
-     ln -s -f ncra ncecat    # ncra --pseudonym='ncecat'
-     ln -s -f ncra ncrcat    # ncra --pseudonym='ncrcat'
-     ln -s -f ncbo ncadd     # ncbo --op_typ='+'
-     ln -s -f ncbo ncsubtract # ncbo --op_typ='-'
-     ln -s -f ncbo ncmultiply # ncbo --op_typ='*'
-     ln -s -f ncbo ncdivide   # ncbo --op_typ='/'
-     ln -s -f ncpdq ncpack    # ncpdq
-     ln -s -f ncpdq ncunpack  # ncpdq --unpack
-     # NB: Cygwin executable (and link) names have an '.exe' suffix, e.g.,
-     ln -s -f ncbo.exe ncdiff.exe
-     ...
-   The imputed command called by the link is given after the comment.
-As can be seen, some these links impute the passing of a command line
-argument to further modify the behavior of the underlying executable.
-For example, `ncdivide' is a pseudonym for `ncbo --op_typ='/''.
-
-
-File: nco.info,  Node: Libraries,  Next: netCDF2/3/4 and HDF4/5 Support,  Prev: Symbolic Links,  Up: Introduction
-
-1.4 Libraries
-=============
-
-Like all executables, the NCO operators can be built using dynamic
-linking.  This reduces the size of the executable and can result in
-significant performance enhancements on multiuser systems.
-Unfortunately, if your library search path (usually the
-`LD_LIBRARY_PATH' environment variable) is not set correctly, or if the
-system libraries have been moved, renamed, or deleted since NCO was
-installed, it is possible NCO operators will fail with a message that
-they cannot find a dynamically loaded (aka "shared object" or `.so')
-library.  This will produce a distinctive error message, such as
-`ld.so.1: /usr/local/bin/ncea: fatal: libsunmath.so.1: can't open file:
-errno=2'.  If you received an error message like this, ask your system
-administrator to diagnose whether the library is truly missing (1), or
-whether you simply need to alter your library search path.  As a final
-remedy, you may re-compile and install NCO with all operators
-statically linked.
-
-   ---------- Footnotes ----------
-
-   (1) The `ldd' command, if it is available on your system, will tell
-you where the executable is looking for each dynamically loaded
-library. Use, e.g., `ldd `which ncea`'.
-
-
-File: nco.info,  Node: netCDF2/3/4 and HDF4/5 Support,  Next: Help Requests and Bug Reports,  Prev: Libraries,  Up: Introduction
-
-1.5 netCDF2/3/4 and HDF4/5 Support
-==================================
-
-netCDF version 2 was released in 1993.  NCO (specifically `ncks') began
-soon after this in 1994.  netCDF 3.0 was released in 1996, and we were
-eager to reap the performance advantages of the newer netCDF
-implementation.  One netCDF3 interface call (`nc_inq_libvers') was
-added to NCO in January, 1998, to aid in maintainance and debugging.
-In March, 2001, the final conversion of NCO to netCDF3 was completed
-(coincidentally on the same day netCDF 3.5 was released).  NCO
-versions 2.0 and higher are built with the `-DNO_NETCDF_2' flag to
-ensure no netCDF2 interface calls are used.  
-
-   However, the ability to compile NCO with only netCDF2 calls is worth
-maintaining because HDF version 4 (1) (available from HDF
-(http://hdf.ncsa.uiuc.edu)) supports only the netCDF2 library calls
-(see `http://hdf.ncsa.uiuc.edu/UG41r3_html/SDS_SD.fm12.html#47784').
-Note that there are multiple versions of HDF.  Currently HDF
-version 4.x supports netCDF2 and thus NCO version 1.2.x.  If NCO
-version 1.2.x (or earlier) is built with only netCDF2 calls then all
-NCO operators should work with HDF4 files as well as netCDF files (2).  The
-preprocessor token `NETCDF2_ONLY' exists in NCO version 1.2.x to
-eliminate all netCDF3 calls.  Only versions of NCO numbered 1.2.x and
-earlier have this capability.  The NCO 1.2.x branch will be maintained
-with bugfixes only (no new features) until HDF begins to fully support
-the netCDF3 interface (which is employed by NCO 2.x).  If, at
-compilation time, `NETCDF2_ONLY' is defined, then NCO version 1.2.x
-will not use any netCDF3 calls and, if linked properly, the resulting
-NCO operators will work with HDF4 files.  The `Makefile' supplied with
-NCO 1.2.x is written to simplify building in this HDF capability.  When
-NCO is built with `make HDF4=Y', the `Makefile' sets all required
-preprocessor flags and library links to build with the HDF4 libraries
-(which are assumed to reside under `/usr/local/hdf4', edit the
-`Makefile' to suit your installation).
-
-   HDF version 5 became available in 1999, but did not support netCDF
-(or, for that matter, Fortran) as of December 1999.  By early 2001,
-HDF5 did support Fortran90.  In 2004, Unidata and NCSA began a project
-to implement the HDF5 features necessary to support the netCDF API.
-NCO version 3.0.3 added support for reading/writing netCDF4-formatted
-HDF5 files in October, 2005.  See *note Selecting Output File Format::
-for more details.
-
-   HDF support for netCDF was completed with HDF5 version version 1.8
-in 2007.  The netCDF front-end that uses this HDF5 back-end was
-completed and released soon after as netCDF version 4.  Download it
-from the netCDF4
-(http://my.unidata.ucar.edu/content/software/netcdf/netcdf-4) website.
-
-   NCO version 3.9.0, released in May, 2007, added support for all
-netCDF4 atomic data types except `NC_STRING'.  Support for `NC_STRING',
-including ragged arrays of strings, was finally added in version 3.9.9,
-released in June, 2009.  Support for additional netCDF4 features has
-been incremental.  We add one netCDF4 feature at a time.  You must
-build NCO with netCDF4 to obtain this support.
-
-   The main netCDF4 features that NCO currently supports are the new
-atomic data types, Lempel-Ziv compression (deflation), and chunking.
-The new atomic data types are `NC_UBYTE', `NC_USHORT', `NC_UINT',
-`NC_INT64', and `NC_UINT64'.  Eight-byte integer support is an
-especially useful improvement from netCDF3.  All NCO operators support
-these types, e.g., `ncks' copies and prints them, `ncra' averages them,
-and `ncap2' processes algebraic scripts with them.  `ncks' prints
-compression information, if any, to screen.
-
-   NCO version 3.9.1 (June, 2007) added support for netCDF4 Lempel-Ziv
-deflation.  Lempel-Ziv deflation is a lossless compression technique.
-See *note Deflation:: for more details.
-
-   NCO version 3.9.9 (June, 2009) added support for netCDF4 chunking in
-`ncks' and `ncecat'.  NCO version 4.0.4 (September, 2010) completed
-support for netCDF4 chunking in the remaining operators.  See *note
-Chunking:: for more details.
-
-   netCDF4-enabled NCO handles netCDF3 files without change.  In
-addition, it automagically handles netCDF4 (HDF5) files: If you feed
-NCO netCDF3 files, it produces netCDF3 output.  If you feed NCO netCDF4
-files, it produces netCDF4 output.  Use the handy-dandy `-4' switch to
-request netCDF4 output from netCDF3 input, i.e., to convert netCDF3 to
-netCDF4.  See *note Selecting Output File Format:: for more details.
-
-   As of 2010, netCDF4 is still relatively new software.  Problems with
-netCDF4 and HDF libraries are still being fixed.  Binary NCO
-distributions shipped as RPMs use the netCDF4 library, while debs use
-the netCDF3 library, because of upstream requirements.
-
-   One must often build NCO from source to obtain netCDF4 support.
-Typically, one specifies the root of the netCDF4 installation
-directory. Do this with the `NETCDF4_ROOT' variable.  Then use your
-preferred NCO build mechanism, e.g.,
-     export NETCDF4_ROOT=/usr/local/netcdf4 # Set netCDF4 location
-     cd ~/nco;./configure --enable-netcdf4  # Configure mechanism -or-
-     cd ~/nco/bld;./make NETCDF4=Y allinone # Old Makefile mechanism
-
-   We carefully track the netCDF4 releases, and keep the netCDF4 atomic
-type support and other features working.  Our long term goal is to
-utilize more of the extensive new netCDF4 feature set. The next major
-netCDF4 feature we are likely to utilize is parallel I/O. We will
-enable this in the MPI netCDF operators.
-
-   ---------- Footnotes ----------
-
-   (1) The Hierarchical Data Format, or HDF, is another self-describing
-data format similar to, but more elaborate than, netCDF.
-
-   (2) One must link the NCO code to the HDF4 MFHDF library instead of
-the usual netCDF library.  Does `MF' stands for Mike Folk?  Perhaps.
-In any case, the MFHDF library only supports netCDF2 calls.  Thus I
-will try to keep this capability in NCO as long as it is not too much
-trouble.
-
-
-File: nco.info,  Node: Help Requests and Bug Reports,  Prev: netCDF2/3/4 and HDF4/5 Support,  Up: Introduction
-
-1.6 Help Requests and Bug Reports
-=================================
-
-We generally receive three categories of mail from users: help requests,
-bug reports, and feature requests.  Notes saying the equivalent of
-"Hey, NCO continues to work great and it saves me more time everyday
-than it took to write this note" are a distant fourth.
-
-   There is a different protocol for each type of request.  The
-preferred etiquette for all communications is via NCO Project Forums.
-Do not contact project members via personal e-mail unless your request
-comes with money or you have damaging information about our personal
-lives.  _Please use the Forums_--they preserve a record of the questions
-and answers so that others can learn from our exchange.  Also, since
-NCO is government-funded, this record helps us provide program officers
-with information they need to evaluate our project.
-
-   Before posting to the NCO forums described below, you might first
-register (https://sf.net/account/register.php) your name and email
-address with SourceForge.net or else all of your postings will be
-attributed to "nobody".  Once registered you may choose to "monitor"
-any forum and to receive (or not) email when there are any postings
-including responses to your questions.  We usually reply to the forum
-message, not to the original poster.
-
-   If you want us to include a new feature in NCO, check first to see
-if that feature is already on the TODO (file:./TODO) list.  If it is,
-why not implement that feature yourself and send us the patch?  If the
-feature is not yet on the list, then send a note to the NCO Discussion
-forum (http://sourceforge.net/projects/nco/forums/forum/9829).
-
-   Read the manual before reporting a bug or posting a help request.
-Sending questions whose answers are not in the manual is the best way
-to motivate us to write more documentation.  We would also like to
-accentuate the contrapositive of this statement.  If you think you have
-found a real bug _the most helpful thing you can do is simplify the
-problem to a manageable size and then report it_.  The first thing to
-do is to make sure you are running the latest publicly released version
-of NCO.
-
-   Once you have read the manual, if you are still unable to get NCO to
-perform a documented function, submit a help request.  Follow the same
-procedure as described below for reporting bugs (after all, it might be
-a bug).  That is, describe what you are trying to do, and include the
-complete commands (run with `-D 5'), error messages, and version of NCO
-(with `-r').  Post your help request to the NCO Help forum
-(http://sourceforge.net/projects/nco/forums/forum/9830).
-
-   If you think you used the right command when NCO misbehaves, then
-you might have found a bug.  Incorrect numerical answers are the
-highest priority.  We usually fix those within one or two days.  Core
-dumps and sementation violations receive lower priority.  They are
-always fixed, eventually.
-
-   How do you simplify a problem that reveal a bug?  Cut out extraneous
-variables, dimensions, and metadata from the offending files and re-run
-the command until it no longer breaks.  Then back up one step and
-report the problem.  Usually the file(s) will be very small, i.e., one
-variable with one or two small dimensions ought to suffice.  Run the
-operator with `-r' and then run the command with `-D 5' to increase the
-verbosity of the debugging output.  It is very important that your
-report contain the exact error messages and compile-time environment.
-Include a copy of your sample input file, or place one on a publically
-accessible location, of the file(s).  Post the full bug report to the
-NCO Project buglist (http://sf.net/bugs/?group_id=3331).
-
-   Build failures count as bugs.  Our limited machine access means we
-cannot fix all build failures.  The information we need to diagnose,
-and often fix, build failures are the three files output by GNU build
-tools, `nco.config.log.${GNU_TRP}.foo', `nco.configure.${GNU_TRP}.foo',
-and `nco.make.${GNU_TRP}.foo'.  The file `configure.eg' shows how to
-produce these files.  Here `${GNU_TRP}' is the "GNU architecture
-triplet", the CHIP-VENDOR-OS string returned by `config.guess'.  Please
-send us your improvements to the examples supplied in `configure.eg'.  The
-regressions archive at `http://dust.ess.uci.edu/nco/rgr' contains the
-build output from our standard test systems.  You may find you can
-solve the build problem yourself by examining the differences between
-these files and your own.
-
-
-File: nco.info,  Node: Strategies,  Next: Common features,  Prev: Introduction,  Up: Top
-
-2 Operator Strategies
-*********************
-
-* Menu:
-
-* Philosophy::
-* Climate Model Paradigm::
-* Temporary Output Files::
-* Appending Variables::
-* Simple Arithmetic and Interpolation::
-* Averaging vs. Concatenating::
-* Large Numbers of Files::
-* Large Datasets::
-* Memory Requirements::
-* Performance::
-
-
-File: nco.info,  Node: Philosophy,  Next: Climate Model Paradigm,  Prev: Strategies,  Up: Strategies
-
-2.1 Philosophy
-==============
-
-The main design goal is command line operators which perform useful,
-scriptable operations on netCDF files.  Many scientists work with
-models and observations which produce too much data to analyze in
-tabular format.  Thus, it is often natural to reduce and massage this
-raw or primary level data into summary, or second level data, e.g.,
-temporal or spatial averages.  These second level data may become the
-inputs to graphical and statistical packages, and are often more
-suitable for archival and dissemination to the scientific community.
-NCO performs a suite of operations useful in manipulating data from the
-primary to the second level state.  Higher level interpretive languages
-(e.g., IDL, Yorick, Matlab, NCL, Perl, Python), and lower level
-compiled languages (e.g., C, Fortran) can always perform any task
-performed by NCO, but often with more overhead.  NCO, on the other
-hand, is limited to a much smaller set of arithmetic and metadata
-operations than these full blown languages.
-
-   Another goal has been to implement enough command line switches so
-that frequently used sequences of these operators can be executed from a
-shell script or batch file.  Finally, NCO was written to consume the
-absolute minimum amount of system memory required to perform a given
-job.  The arithmetic operators are extremely efficient; their exact
-memory usage is detailed in *note Memory Requirements::.
-
-
-File: nco.info,  Node: Climate Model Paradigm,  Next: Temporary Output Files,  Prev: Philosophy,  Up: Strategies
-
-2.2 Climate Model Paradigm
-==========================
-
-NCO was developed at NCAR to aid analysis and manipulation of datasets
-produced by General Circulation Models (GCMs).  Datasets produced by
-GCMs share many features with all gridded scientific datasets and so
-provide a useful paradigm for the explication of the NCO operator set.
-Examples in this manual use a GCM paradigm because latitude, longitude,
-time, temperature and other fields related to our natural environment
-are as easy to visualize for the layman as the expert.
-
-
-File: nco.info,  Node: Temporary Output Files,  Next: Appending Variables,  Prev: Climate Model Paradigm,  Up: Strategies
-
-2.3 Temporary Output Files
-==========================
-
-NCO operators are designed to be reasonably fault tolerant, so that if
-there is a system failure or the user aborts the operation (e.g., with
-`C-c'), then no data are lost.  The user-specified OUTPUT-FILE is only
-created upon successful completion of the operation (1).  This is
-accomplished by performing all operations in a temporary copy of
-OUTPUT-FILE.  The name of the temporary output file is constructed by
-appending `.pid<PROCESS ID>.<OPERATOR NAME>.tmp' to the user-specified
-OUTPUT-FILE name.  When the operator completes its task with no fatal
-errors, the temporary output file is moved to the user-specified
-OUTPUT-FILE.  Note the construction of a temporary output file uses
-more disk space than just overwriting existing files "in place"
-(because there may be two copies of the same file on disk until the NCO
-operation successfully concludes and the temporary output file
-overwrites the existing OUTPUT-FILE).  Also, note this feature
-increases the execution time of the operator by approximately the time
-it takes to copy the OUTPUT-FILE.  Finally, note this feature allows
-the OUTPUT-FILE to be the same as the INPUT-FILE without any danger of
-"overlap".
-
-   Other safeguards exist to protect the user from inadvertently
-overwriting data.  If the OUTPUT-FILE specified for a command is a
-pre-existing file, then the operator will prompt the user whether to
-overwrite (erase) the existing OUTPUT-FILE, attempt to append to it, or
-abort the operation.  However, in processing large amounts of data, too
-many interactive questions slows productivity.  Therefore NCO also
-implements two ways to override its own safety features, the `-O' and
-`-A' switches.  Specifying `-O' tells the operator to overwrite any
-existing OUTPUT-FILE without prompting the user interactively.
-Specifying `-A' tells the operator to attempt to append to any existing
-OUTPUT-FILE without prompting the user interactively.  These switches
-are useful in batch environments because they suppress interactive
-keyboard input.
-
-   ---------- Footnotes ----------
-
-   (1) The `ncrename' operator is an exception to this rule.  *Note
-ncrename netCDF Renamer::.
-
-
-File: nco.info,  Node: Appending Variables,  Next: Simple Arithmetic and Interpolation,  Prev: Temporary Output Files,  Up: Strategies
-
-2.4 Appending Variables
-=======================
-
-Adding variables from one file to another is often desirable.  This is
-referred to as "appending", although some prefer the terminology
-"merging" (1) or "pasting".  Appending is often confused with what NCO
-calls "concatenation".  In NCO, concatenation refers to splicing a
-variable along the record dimension.  The length along the record
-dimension of the output is the sum of the lengths of the input files.
-Appending, on the other hand, refers to copying a variable from one file
-to another file which may or may not already contain the variable (2).
-NCO can append or concatenate just one variable, or all the variables
-in a file at the same time.
-
-   In this sense, `ncks' can append variables from one file to another
-file.  This capability is invoked by naming two files on the command
-line, INPUT-FILE and OUTPUT-FILE.  When OUTPUT-FILE already exists, the
-user is prompted whether to "overwrite", "append/replace", or "exit"
-from the command.  Selecting "overwrite" tells the operator to erase
-the existing OUTPUT-FILE and replace it with the results of the
-operation.  Selecting "exit" causes the operator to exit--the
-OUTPUT-FILE will not be touched in this case.  Selecting
-"append/replace" causes the operator to attempt to place the results of
-the operation in the existing OUTPUT-FILE, *Note ncks netCDF Kitchen
-Sink::.
-
-   The simplest way to create the union of two files is
-     ncks -A fl_1.nc fl_2.nc
-   This puts the contents of `fl_1.nc' into `fl_2.nc'.  The `-A' is
-optional.  On output, `fl_2.nc' is the union of the input files,
-regardless of whether they share dimensions and variables, or are
-completely disjoint.  The append fails if the input files have
-differently named record dimensions (since netCDF supports only one),
-or have dimensions of the same name but different sizes.
-
-   ---------- Footnotes ----------
-
-   (1) The terminology "merging" is reserved for an (unwritten)
-operator which replaces hyperslabs of a variable in one file with
-hyperslabs of the same variable from another file
-
-   (2) Yes, the terminology is confusing.  By all means mail me if you
-think of a better nomenclature.  Should NCO use "paste" instead of
-"append"?
-
-
-File: nco.info,  Node: Simple Arithmetic and Interpolation,  Next: Averaging vs. Concatenating,  Prev: Appending Variables,  Up: Strategies
-
-2.5 Simple Arithmetic and Interpolation
-=======================================
-
-Users comfortable with NCO semantics may find it easier to perform some
-simple mathematical operations in NCO rather than higher level
-languages.  `ncbo' (*note ncbo netCDF Binary Operator::) does file
-addition, subtraction, multiplication, division, and broadcasting.
-`ncflint' (*note ncflint netCDF File Interpolator::) does file
-addition, subtraction, multiplication and interpolation.  Sequences of
-these commands can accomplish simple but powerful operations from the
-command line.
-
-
-File: nco.info,  Node: Averaging vs. Concatenating,  Next: Large Numbers of Files,  Prev: Simple Arithmetic and Interpolation,  Up: Strategies
-
-2.6 Averagers vs. Concatenators
-===============================
-
-The most frequently used operators of NCO are probably the averagers
-and concatenators.  Because there are so many permutations of averaging
-(e.g., across files, within a file, over the record dimension, over
-other dimensions, with or without weights and masks) and of
-concatenating (across files, along the record dimension, along other
-dimensions), there are currently no fewer than five operators which
-tackle these two purposes: `ncra', `ncea', `ncwa', `ncrcat', and
-`ncecat'.  These operators do share many capabilities (1), but each has
-its unique specialty.  Two of these operators, `ncrcat' and `ncecat',
-are for concatenating hyperslabs across files.  The other two
-operators, `ncra' and `ncea', are for averaging hyperslabs across files
-(2).  First, let's describe the concatenators, then the averagers.
-
-* Menu:
-
-* Concatenation::
-* Averaging::
-* Interpolating::
-
-   ---------- Footnotes ----------
-
-   (1) Currently `ncea' and `ncrcat' are symbolically linked to the
-`ncra' executable, which behaves slightly differently based on its
-invocation name (i.e., `argv[0]').  These three operators share the
-same source code, but merely have different inner loops.
-
-   (2) The third averaging operator, `ncwa', is the most sophisticated
-averager in NCO.  However, `ncwa' is in a different class than `ncra'
-and `ncea' because it can only operate on a single file per invocation
-(as opposed to multiple files).  On that single file, however, `ncwa'
-provides a richer set of averaging options--including weighting,
-masking, and broadcasting.
-
-
-File: nco.info,  Node: Concatenation,  Next: Averaging,  Prev: Averaging vs. Concatenating,  Up: Averaging vs. Concatenating
-
-2.6.1 Concatenators `ncrcat' and `ncecat'
------------------------------------------
-
-Joining independent files together along a record dimension is called
-"concatenation".  `ncrcat' is designed for concatenating record
-variables, while `ncecat' is designed for concatenating fixed length
-variables.  Consider five files, `85.nc', `86.nc', ... `89.nc' each
-containing a year's worth of data.  Say you wish to create from them a
-single file, `8589.nc' containing all the data, i.e., spanning all five
-years.  If the annual files make use of the same record variable, then
-`ncrcat' will do the job nicely with, e.g., `ncrcat 8?.nc 8589.nc'.
-The number of records in the input files is arbitrary and can vary from
-file to file.  *Note ncrcat netCDF Record Concatenator::, for a
-complete description of `ncrcat'.
-
-   However, suppose the annual files have no record variable, and thus
-their data are all fixed length.  For example, the files may not be
-conceptually sequential, but rather members of the same group, or
-"ensemble".  Members of an ensemble may have no reason to contain a
-record dimension.  `ncecat' will create a new record dimension (named
-RECORD by default) with which to glue together the individual files
-into the single ensemble file.  If `ncecat' is used on files which
-contain an existing record dimension, that record dimension is
-converted to a fixed-length dimension of the same name and a new record
-dimension (named `record') is created.  Consider five realizations,
-`85a.nc', `85b.nc', ... `85e.nc' of 1985 predictions from the same
-climate model.  Then `ncecat 85?.nc 85_ens.nc' glues the individual
-realizations together into the single file, `85_ens.nc'.  If an input
-variable was dimensioned [`lat',`lon'], it will have dimensions
-[`record',`lat',`lon'] in the output file.  A restriction of `ncecat'
-is that the hyperslabs of the processed variables must be the same from
-file to file.  Normally this means all the input files are the same
-size, and contain data on different realizations of the same variables.
-*Note ncecat netCDF Ensemble Concatenator::, for a complete description
-of `ncecat'.
-
-   `ncpdq' makes it possible to concatenate files along any dimension,
-not just the record dimension.  First, use `ncpdq' to convert the
-dimension to be concatenated (i.e., extended with data from other
-files) into the record dimension.  Second, use `ncrcat' to concatenate
-these files.  Finally, if desirable, use `ncpdq' to revert to the
-original dimensionality.  As a concrete example, say that files
-`x_01.nc', `x_02.nc', ... `x_10.nc' contain time-evolving datasets from
-spatially adjacent regions.  The time and spatial coordinates are
-`time' and `x', respectively.  Initially the record dimension is `time'.
-Our goal is to create a single file that contains joins all the
-spatially adjacent regions into one single time-evolving dataset.
-     for idx in 01 02 03 04 05 06 07 08 09 10; do # Bourne Shell
-       ncpdq -a x,time x_${idx}.nc foo_${idx}.nc # Make x record dimension
-     done
-     ncrcat foo_??.nc out.nc       # Concatenate along x
-     ncpdq -a time,x out.nc out.nc # Revert to time as record dimension
-
-   Note that `ncrcat' will not concatenate fixed-length variables,
-whereas `ncecat' concatenates both fixed-length and record variables
-along a new record variable.  To conserve system memory, use `ncrcat'
-where possible.
-
-
-File: nco.info,  Node: Averaging,  Next: Interpolating,  Prev: Concatenation,  Up: Averaging vs. Concatenating
-
-2.6.2 Averagers `ncea', `ncra', and `ncwa'
-------------------------------------------
-
-The differences between the averagers `ncra' and `ncea' are analogous
-to the differences between the concatenators.  `ncra' is designed for
-averaging record variables from at least one file, while `ncea' is
-designed for averaging fixed length variables from multiple files.
-`ncra' performs a simple arithmetic average over the record dimension
-of all the input files, with each record having an equal weight in the
-average.  `ncea' performs a simple arithmetic average of all the input
-files, with each file having an equal weight in the average.  Note that
-`ncra' cannot average fixed-length variables, but `ncea' can average
-both fixed-length and record variables.  To conserve system memory, use
-`ncra' rather than `ncea' where possible (e.g., if each INPUT-FILE is
-one record long).  The file output from `ncea' will have the same
-dimensions (meaning dimension names as well as sizes) as the input
-hyperslabs (*note ncea netCDF Ensemble Averager::, for a complete
-description of `ncea').  The file output from `ncra' will have the same
-dimensions as the input hyperslabs except for the record dimension,
-which will have a size of 1 (*note ncra netCDF Record Averager::, for a
-complete description of `ncra').
-
-
-File: nco.info,  Node: Interpolating,  Prev: Averaging,  Up: Averaging vs. Concatenating
-
-2.6.3 Interpolator `ncflint'
-----------------------------
-
-`ncflint' can interpolate data between or two files.  Since no other
-operators have this ability, the description of interpolation is given
-fully on the `ncflint' reference page (*note ncflint netCDF File
-Interpolator::).  Note that this capability also allows `ncflint' to
-linearly rescale any data in a netCDF file, e.g., to convert between
-differing units.
-
-
-File: nco.info,  Node: Large Numbers of Files,  Next: Large Datasets,  Prev: Averaging vs. Concatenating,  Up: Strategies
-
-2.7 Large Numbers of Files
-==========================
-
-Occasionally one desires to digest (i.e., concatenate or average)
-hundreds or thousands of input files.  Unfortunately, data archives
-(e.g., NASA EOSDIS) may not name netCDF files in a format understood by
-the `-n LOOP' switch (*note Specifying Input Files::) that
-automagically generates arbitrary numbers of input filenames.  The `-n
-LOOP' switch has the virtue of being concise, and of minimizing the
-command line.  This helps keeps output file small since the command
-line is stored as metadata in the `history' attribute (*note History
-Attribute::).  However, the `-n LOOP' switch is useless when there is no
-simple, arithmetic pattern to the input filenames (e.g., `h00001.nc',
-`h00002.nc', ... `h90210.nc').  Moreover, filename globbing does not
-work when the input files are too numerous or their names are too
-lengthy (when strung together as a single argument) to be passed by the
-calling shell to the NCO operator (1).  When this occurs, the ANSI
-C-standard `argc'-`argv' method of passing arguments from the calling
-shell to a C-program (i.e., an NCO operator) breaks down.  There are
-(at least) three alternative methods of specifying the input filenames
-to NCO in environment-limited situations.
-
-   The recommended method for sending very large numbers (hundreds or
-more, typically) of input filenames to the multi-file operators is to
-pass the filenames with the UNIX "standard input" feature, aka `stdin':
-     # Pipe large numbers of filenames to stdin
-     /bin/ls | grep ${CASEID}_'......'.nc | ncecat -o foo.nc
-   This method avoids all constraints on command line size imposed by
-the operating system.  A drawback to this method is that the `history'
-attribute (*note History Attribute::) does not record the name of any
-input files since the names were not passed on the command line.  This
-makes determining the data provenance at a later date difficult.  To
-remedy this situation, multi-file operators store the number of input
-files in the `nco_input_file_number' global attribute and the input
-file list itself in the `nco_input_file_list' global attribute (*note
-File List Attributes::).  Although this does not preserve the exact
-command used to generate the file, it does retains all the information
-required to reconstruct the command and determine the data provenance.
-
-   A second option is to use the UNIX `xargs' command.  This simple
-example selects as input to `xargs' all the filenames in the current
-directory that match a given pattern.  For illustration, consider a
-user trying to average millions of files which each have a six
-character filename.  If the shell buffer can not hold the results of
-the corresponding globbing operator, `??????.nc', then the filename
-globbing technique will fail.  Instead we express the filename pattern
-as an extended regular expression, `......\.nc' (*note Subsetting
-Variables::).  We use `grep' to filter the directory listing for this
-pattern and to pipe the results to `xargs' which, in turn, passes the
-matching filenames to an NCO multi-file operator, e.g., `ncecat'.
-     # Use xargs to transfer filenames on the command line
-     /bin/ls | grep ${CASEID}_'......'.nc | xargs -x ncecat -o foo.nc
-   The single quotes protect the only sensitive parts of the extended
-regular expression (the `grep' argument), and allow shell interpolation
-(the `${CASEID}' variable substitution) to proceed unhindered on the
-rest of the command.  `xargs' uses the UNIX pipe feature to append the
-suitably filtered input file list to the end of the `ncecat' command
-options.  The `-o foo.nc' switch ensures that the input files supplied
-by `xargs' are not confused with the output file name.  `xargs' does,
-unfortunately, have its own limit (usually about 20,000 characters) on
-the size of command lines it can pass.  Give `xargs' the `-x' switch to
-ensure it dies if it reaches this internal limit.  When this occurs,
-use either the `stdin' method above, or the symbolic link presented
-next.
-
-   Even when its internal limits have not been reached, the `xargs'
-technique may not be sophisticated enough to handle all situations.  A
-full scripting language like Perl can handle any level of complexity of
-filtering input filenames, and any number of filenames.  The technique
-of last resort is to write a script that creates symbolic links between
-the irregular input filenames and a set of regular, arithmetic
-filenames that the `-n LOOP' switch understands.  For example, the
-following Perl script a monotonically enumerated symbolic link to up to
-one million `.nc' files in a directory.  If there are 999,999 netCDF
-files present, the links are named `000001.nc' to `999999.nc': 
-     # Create enumerated symbolic links
-     /bin/ls | grep \.nc | perl -e \
-     '$idx=1;while(<STDIN>){chop;symlink $_,sprintf("%06d.nc",$idx++);}'
-     ncecat -n 999999,6,1 000001.nc foo.nc
-     # Remove symbolic links when finished
-     /bin/rm ??????.nc
-   The `-n LOOP' option tells the NCO operator to automatically
-generate the filnames of the symbolic links.  This circumvents any OS
-and shell limits on command line size.  The symbolic links are easily
-removed once NCO is finished.  One drawback to this method is that the
-`history' attribute (*note History Attribute::) retains the filename
-list of the symbolic links, rather than the data files themselves.
-This makes it difficult to determine the data provenance at a later
-date.
-
-   ---------- Footnotes ----------
-
-   (1) The exact length which exceeds the operating system internal
-limit for command line lengths varies from OS to OS and from shell to
-shell.  GNU `bash' may not have any arbitrary fixed limits to the size
-of command line arguments.  Many OSs cannot handle command line
-arguments (including results of file globbing) exceeding 4096
-characters.
-
-
-File: nco.info,  Node: Large Datasets,  Next: Memory Requirements,  Prev: Large Numbers of Files,  Up: Strategies
-
-2.8 Large Datasets
-==================
-
-"Large datasets" are those files that are comparable in size to the
-amount of random access memory (RAM) in your computer.  Many users of
-NCO work with files larger than 100 MB.  Files this large not only push
-the current edge of storage technology, they present special problems
-for programs which attempt to access the entire file at once, such as
-`ncea' and `ncecat'.  If you work with a 300 MB files on a machine with
-only 32 MB of memory then you will need large amounts of swap space
-(virtual memory on disk) and NCO will work slowly, or even fail.  There
-is no easy solution for this.  The best strategy is to work on a
-machine with sufficient amounts of memory and swap space.  Since about
-2004, many users have begun to produce or analyze files exceeding 2 GB
-in size.  These users should familiarize themselves with NCO's Large
-File Support (LFS) capabilities (*note Large File Support::).  The next
-section will increase your familiarity with NCO's memory requirements.
-With this knowledge you may re-design your data reduction approach to
-divide the problem into pieces solvable in memory-limited situations.
-
-   If your local machine has problems working with large files, try
-running NCO from a more powerful machine, such as a network server.
-Certain machine architectures, e.g., Cray UNICOS, have special commands
-which allow one to increase the amount of interactive memory.  On Cray
-systems, try to increase the available memory with the `ilimit' command.  If
-you get a memory-related core dump (e.g., `Error exit (core dumped)')
-on a GNU/Linux system, try increasing the process-available memory with
-`ulimit'.
-
-   The speed of the NCO operators also depends on file size.  When
-processing large files the operators may appear to hang, or do nothing,
-for large periods of time.  In order to see what the operator is
-actually doing, it is useful to activate a more verbose output mode.
-This is accomplished by supplying a number greater than 0 to the `-D
-DEBUG-LEVEL' (or `--debug-level', or `--dbg_lvl') switch.  When the
-DEBUG-LEVEL is nonzero, the operators report their current status to
-the terminal through the STDERR facility.  Using `-D' does not slow the
-operators down.  Choose a DEBUG-LEVEL between 1 and 3 for most
-situations, e.g., `ncea -D 2 85.nc 86.nc 8586.nc'.  A full description
-of how to estimate the actual amount of memory the multi-file NCO
-operators consume is given in *note Memory Requirements::.
-
-
-File: nco.info,  Node: Memory Requirements,  Next: Performance,  Prev: Large Datasets,  Up: Strategies
-
-2.9 Memory Requirements
-=======================
-
-Many people use NCO on gargantuan files which dwarf the memory
-available (free RAM plus swap space) even on today's powerful machines.
-These users want NCO to consume the least memory possible so that their
-scripts do not have to tediously cut files into smaller pieces that fit
-into memory.  We commend these greedy users for pushing NCO to its
-limits!
-
-   This section describes the memory NCO requires during operation.
-The required memory is based on the underlying algorithms.  The
-description below is the memory usage per thread.  Users with shared
-memory machines may use the threaded NCO operators (*note OpenMP
-Threading::).  The peak and sustained memory usage will scale
-accordingly, i.e., by the number of threads.  Memory consumption
-patterns of all operators are similar, with the exception of `ncap2'.
-
-* Menu:
-
-* Single and Multi-file Operators::
-* Memory for ncap2::
-
-
-File: nco.info,  Node: Single and Multi-file Operators,  Next: Memory for ncap2,  Prev: Memory Requirements,  Up: Memory Requirements
-
-2.9.1 Single and Multi-file Operators
--------------------------------------
-
-The multi-file operators currently comprise the record operators,
-`ncra' and `ncrcat', and the ensemble operators, `ncea' and `ncecat'.
-The record operators require _much less_ memory than the ensemble
-operators.  This is because the record operators operate on one single
-record (i.e., time-slice) at a time, wherease the ensemble operators
-retrieve the entire variable into memory.  Let MS be the peak sustained
-memory demand of an operator, FT be the memory required to store the
-entire contents of all the variables to be processed in an input file,
-FR be the memory required to store the entire contents of a single
-record of each of the variables to be processed in an input file, VR be
-the memory required to store a single record of the largest record
-variable to be processed in an input file, VT be the memory required to
-store the largest variable to be processed in an input file, VI be the
-memory required to store the largest variable which is not processed,
-but is copied from the initial file to the output file.  All operators
-require MI = VI during the initial copying of variables from the first
-input file to the output file.  This is the _initial_ (and transient)
-memory demand.  The _sustained_ memory demand is that memory required
-by the operators during the processing (i.e., averaging, concatenation)
-phase which lasts until all the input files have been processed.  The
-operators have the following memory requirements: `ncrcat' requires MS
-<= VR.  `ncecat' requires MS <= VT.  `ncra' requires MS = 2FR + VR.
-`ncea' requires MS = 2FT + VT.  `ncbo' requires MS <= 3VT (both input
-variables and the output variable).  `ncflint' requires MS <= 3VT (both
-input variables and the output variable).  `ncpdq' requires MS <= 2VT
-(one input variable and the output variable).  `ncwa' requires MS <=
-8VT (see below).  Note that only variables that are processed, e.g.,
-averaged, concatenated, or differenced, contribute to MS.  Variables
-which do not appear in the output file (*note Subsetting Variables::)
-are never read and contribute nothing to the memory requirements.
-
-   `ncwa' consumes between two and seven times the memory of a variable
-in order to process it.  Peak consumption occurs when storing
-simultaneously in memory one input variable, one tally array, one input
-weight, one conformed/working weight, one weight tally, one input mask,
-one conformed/working mask, and one output variable.  When invoked, the
-weighting and masking features contribute up to three-sevenths and
-two-sevenths of these requirements apiece.  If weights and masks are
-_not_ specified (i.e., no `-w' or `-a' options) then `ncwa'
-requirements drop to MS <= 3VT (one input variable, one tally array,
-and the output variable).
-
-   The above memory requirements must be multiplied by the number of
-threads THR_NBR (*note OpenMP Threading::).  If this causes problems
-then reduce (with `-t THR_NBR') the number of threads.
-
-
-File: nco.info,  Node: Memory for ncap2,  Prev: Single and Multi-file Operators,  Up: Memory Requirements
-
-2.9.2 Memory for `ncap2'
-------------------------
-
-`ncap2' has unique memory requirements due its ability to process
-arbitrarily long scripts of any complexity.  All scripts acceptable to
-`ncap2' are ultimately processed as a sequence of binary or unary
-operations.  `ncap2' requires MS <= 2VT under most conditions.  An
-exception to this is when left hand casting (*note Left hand casting::)
-is used to stretch the size of derived variables beyond the size of any
-input variables.  Let VC be the memory required to store the largest
-variable defined by left hand casting.  In this case, MS <= 2VC.
-
-   `ncap2' scripts are complete dynamic and may be of arbitrary length.
-A script that contains many thousands of operations, may uncover a slow
-memory leak even though each single operation consumes little
-additional memory.  Memory leaks are usually identifiable by their
-memory usage signature.  Leaks cause peak memory usage to increase
-monotonically with time regardless of script complexity.  Slow leaks
-are very difficult to find.  Sometimes a `malloc()' (or `new[]')
-failure is the only noticeable clue to their existance.  If you have
-good reasons to believe that a memory allocation failure is ultimately
-due to an NCO memory leak (rather than inadequate RAM on your system),
-then we would be very interested in receiving a detailed bug report.
-
-
-File: nco.info,  Node: Performance,  Prev: Memory Requirements,  Up: Strategies
-
-2.10 Performance
-================
-
-An overview of NCO capabilities as of about 2006 is in Zender, C. S.
-(2008), "Analysis of Self-describing Gridded Geoscience Data with
-netCDF Operators (NCO)", Environ. Modell. Softw.,
-doi:10.1016/j.envsoft.2008.03.004.  This paper is also available at
-`http://dust.ess.uci.edu/ppr/ppr_Zen08_ems.pdf'.
-
-   NCO performance and scaling for arithmetic operations is described in
-Zender, C. S., and H. J. Mangalam (2007), "Scaling Properties of Common
-Statistical Operators for Gridded Datasets", Int. J. High Perform.
-Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.  This
-paper is also available at
-`http://dust.ess.uci.edu/ppr/ppr_ZeM07_ijhpca.pdf'.
-
-   It is helpful to be aware of the aspects of NCO design that can
-limit its performance:
-  1. No data buffering is performed during `nc_get_var' and
-     `nc_put_var' operations.  Hyperslabs too large too hold in core
-     memory will suffer substantial performance penalties because of
-     this.
-
-  2. Since coordinate variables are assumed to be monotonic, the search
-     for bracketing the user-specified limits should employ a quicker
-     algorithm, like bisection, than the two-sided incremental search
-     currently implemented.
-
-  3. C_FORMAT, FORTRAN_FORMAT, SIGNEDNESS, SCALE_FORMAT and ADD_OFFSET
-     attributes are ignored by `ncks' when printing variables to screen.
-
-  4. In the late 1990s it was discovered that some random access
-     operations on large files on certain architectures (e.g., UNICOS)
-     were much slower with NCO than with similar operations performed
-     using languages that bypass the netCDF interface (e.g., Yorick).
-     This may have been a penalty of unnecessary byte-swapping in the
-     netCDF interface.  It is unclear whether such problems exist in
-     present day (2007) netCDF/NCO environments, where unnecessary
-     byte-swapping has been reduced or eliminated.
-
-
-File: nco.info,  Node: Common features,  Next: Operator Reference Manual,  Prev: Strategies,  Up: Top
-
-3 NCO Features
-**************
-
-Many features have been implemented in more than one operator and are
-described here for brevity.  The description of each feature is
-preceded by a box listing the operators for which the feature is
-implemented.  Command line switches for a given feature are consistent
-across all operators wherever possible.  If no "key switches" are
-listed for a feature, then that particular feature is automatic and
-cannot be controlled by the user.
-
-* Menu:
-
-* Internationalization::
-* Metadata Optimization::
-* OpenMP Threading::
-* Command Line Options::
-* Specifying Input Files::
-* Specifying Output Files::
-* Remote storage::
-* Retaining Retrieved Files::
-* Selecting Output File Format::
-* Large File Support::
-* Subsetting Variables::
-* Subsetting Coordinate Variables::
-* C and Fortran Index Conventions::
-* Hyperslabs::
-* Stride::
-* Multislabs::
-* Wrapped Coordinates::
-* Auxiliary Coordinates::
-* UDUnits Support::
-* Rebasing Time Coordinate::
-* Missing Values::
-* Chunking::
-* Deflation::
-* Packed data::
-* Operation Types::
-* Type Conversion::
-* Batch Mode::
-* History Attribute::
-* File List Attributes::
-* CF Conventions::
-* ARM Conventions::
-* Operator Version::
-
-
-File: nco.info,  Node: Internationalization,  Next: Metadata Optimization,  Prev: Common features,  Up: Common features
-
-3.1 Internationalization
-========================
-
-Availability: All operators
-NCO support for "internationalization" of textual input and output
-(e.g., Warning messages) is nascent.  We hope to produce foreign
-language string catalogues in 2004.
-
-
-File: nco.info,  Node: Metadata Optimization,  Next: OpenMP Threading,  Prev: Internationalization,  Up: Common features
-
-3.2 Metadata Optimization
-=========================
-
-Availability: `ncatted', `ncks', `ncrename'
-Short options: None
-Long options: `--hdr_pad', `--header_pad'
-NCO supports padding headers to improve the speed of future metadata
-operations.  Use the `--hdr_pad' and `--header_pad' switches to request
-that HDR_PAD bytes be inserted into the metadata section of the output
-file.  Future metadata expansions will not incur the performance
-penalty of copying the entire output file unless the expansion exceeds
-the amount of header padding exceeded.  This can be beneficial when it
-is known that some metadata will be added at a future date.
-
-   This optimization exploits the netCDF library `nc__enddef()'
-function, which behaves differently with different versions of netCDF.
-It will improve speed of future metadata expansion with `CLASSIC' and
-`64bit' netCDF files, but not necessarily with `NETCDF4' files, i.e.,
-those created by the netCDF interface to the HDF5 library (*note
-Selecting Output File Format::).
-
-
-File: nco.info,  Node: OpenMP Threading,  Next: Command Line Options,  Prev: Metadata Optimization,  Up: Common features
-
-3.3 OpenMP Threading
-====================
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-t'
-Long options: `--thr_nbr', `--threads', `--omp_num_threads'
-NCO supports shared memory parallelism (SMP) when compiled with an
-OpenMP-enabled compiler.  Threads requests and allocations occur in two
-stages.  First, users may request a specific number of threads THR_NBR
-with the `-t' switch (or its long option equivalents, `--thr_nbr',
-`--threads', and `--omp_num_threads').  If not user-specified, OpenMP
-obtains THR_NBR from the `OMP_NUM_THREADS' environment variable, if
-present, or from the OS, if not.
-
-   NCO may modify THR_NBR according to its own internal settings before
-it requests any threads from the system.  Certain operators contain
-hard-code limits to the number of threads they request.  We base these
-limits on our experience and common sense, and to reduce potentially
-wasteful system usage by inexperienced users.  For example, `ncrcat' is
-extremely I/O-intensive so we restrict THR_NBR <= 2 for `ncrcat'.  This
-is based on the notion that the best performance that can be expected
-from an operator which does no arithmetic is to have one thread reading
-and one thread writing simultaneously.  In the future (perhaps with
-netCDF4), we hope to demonstrate significant threading improvements
-with operators like `ncrcat' by performing multiple simultaneous writes.
-
-   Compute-intensive operators (`ncap', `ncwa' and `ncpdq') benefit
-most from threading.  The greatest increases in throughput due to
-threading occur on large datasets where each thread performs millions,
-at least, of floating point operations.  Otherwise, the system overhead
-of setting up threads probably outweighs the speed enhancements due to
-SMP parallelism.  However, we have not yet demonstrated that the SMP
-parallelism scales well beyond four threads for these operators.  Hence
-we restrict THR_NBR <= 4 for all operators.  We encourage users to play
-with these limits (edit file `nco_omp.c') and send us their feedback.
-
-   Once the initial THR_NBR has been modified for any operator-specific
-limits, NCO requests the system to allocate a team of THR_NBR threads
-for the body of the code.  The operating system then decides how many
-threads to allocate based on this request.  Users may keep track of
-this information by running the operator with DBG_LVL > 0.
-
-   By default, threaded operators attach one global attribute,
-`nco_openmp_thread_number', to any file they create or modify.  This
-attribute contains the number of threads the operator used to process
-the input files.  This information helps to verify that the answers
-with threaded and non-threaded operators are equal to within machine
-precision.  This information is also useful for benchmarking.
-
-
-File: nco.info,  Node: Command Line Options,  Next: Specifying Input Files,  Prev: OpenMP Threading,  Up: Common features
-
-3.4 Command Line Options
-========================
-
-Availability: All operators
-NCO achieves flexibility by using "command line options".  These
-options are implemented in all traditional UNIX commands as single
-letter "switches", e.g., `ls -l'.  For many years NCO used only single
-letter option names.  In late 2002, we implemented GNU/POSIX extended
-or long option names for all options.  This was done in a backward
-compatible way such that the full functionality of NCO is still
-available through the familiar single letter options.  In the future,
-however, some features of NCO may require the use of long options,
-simply because we have nearly run out of single letter options.  More
-importantly, mnemonics for single letter options are often
-non-intuitive so that long options provide a more natural way of
-expressing intent.
-
-   Extended options, also called long options, are implemented using the
-system-supplied `getopt.h' header file, if possible.  This provides the
-`getopt_long' function to NCO (1).
-
-   The syntax of "short options" (single letter options) is `-KEY
-VALUE' (dash-key-space-value).  Here, KEY is the single letter option
-name, e.g., `-D 2'.
-
-   The syntax of "long options" (multi-letter options) is `--LONG_NAME
-VALUE' (dash-dash-key-space-value), e.g., `--dbg_lvl 2' or
-`--LONG_NAME=VALUE' (dash-dash-key-equal-value), e.g., `--dbg_lvl=2'.
-Thus the following are all valid for the `-D' (short version) or
-`--dbg_lvl' (long version) command line option.
-     ncks -D 3 in.nc        # Short option
-     ncks --dbg_lvl=3 in.nc # Long option, preferred form
-     ncks --dbg_lvl 3 in.nc # Long option, alternate form
-   The last example is preferred for two reasons.  First, `--dbg_lvl'
-is more specific and less ambiguous than `-D'.  The long option form
-makes scripts more self documenting and less error prone.  Often long
-options are named after the source code variable whose value they carry.
-Second, the equals sign `=' joins the key (i.e., LONG_NAME) to the
-value in an uninterruptible text block.  Experience shows that users
-are less likely to mis-parse commands when restricted to this form.
-
-   GNU implements a superset of the POSIX standard which allows any
-unambiguous truncation of a valid option to be used.
-     ncks -D 3 in.nc        # Short option
-     ncks --dbg_lvl=3 in.nc # Long option, full form
-     ncks --dbg=3 in.nc     # Long option, unambiguous truncation
-     ncks --db=3 in.nc      # Long option, unambiguous truncation
-     ncks --d=3 in.nc       # Long option, ambiguous truncation
-   The first four examples are equivalent and will work as expected.
-The final example will exit with an error since `ncks' cannot
-disambiguate whether `--d' is intended as a truncation of `--dbg_lvl',
-of `--dimension', or of some other long option.
-
-   NCO provides many long options for common switches.  For example,
-the debugging level may be set in all operators with any of the
-switches `-D', `--debug-level', or `--dbg_lvl'.  This flexibility
-allows users to choose their favorite mnemonic.  For some, it will be
-`--debug' (an unambiguous truncation of `--debug-level', and other will
-prefer `--dbg'.  Interactive users usually prefer the minimal amount of
-typing, i.e., `-D'.  We recommend that scripts which are re-usable
-employ some form of the long options for future maintainability.
-
-   This manual generally uses the short option syntax.  This is for
-historical reasons and to conserve space.  The remainder of this manual
-specifies the full LONG_NAME of each option.  Users are expected to
-pick the unambiguous truncation of each option name that most suits
-their taste.
-
-   ---------- Footnotes ----------
-
-   (1) If a `getopt_long' function cannot be found on the system, NCO
-will use the `getopt_long' from the `my_getopt' package by Benjamin
-Sittler <bsittler at iname.com>.  This is BSD-licensed software available
-from `http://www.geocities.com/ResearchTriangle/Node/9405/#my_getopt'.
-
-
-File: nco.info,  Node: Specifying Input Files,  Next: Specifying Output Files,  Prev: Command Line Options,  Up: Common features
-
-3.5 Specifying Input Files
-==========================
-
-Availability (`-n'): `ncea', `ncecat', `ncra', `ncrcat'
-Availability (`-p'): All operators
-Short options: `-n', `-p'
-Long options: `--nintap', `--pth', `--path'
-It is important that users be able to specify multiple input files
-without typing every filename in full, often a tedious task even by
-graduate student standards.  There are four different ways of
-specifying input files to NCO: explicitly typing each, using UNIX shell
-wildcards, and using the NCO `-n' and `-p' switches (or their long
-option equivalents, `--nintap' or `--pth' and `--path', respectively).
-Techniques to augment these methods to specify arbitrary numbers (e.g.,
-thousands) and patterns of filenames are discussed separately (*note
-Large Numbers of Files::).
-
-   To illustrate these methods, consider the simple problem of using
-`ncra' to average five input files, `85.nc', `86.nc', ... `89.nc', and
-store the results in `8589.nc'.  Here are the four methods in order.
-They produce identical answers.
-     ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncra 8[56789].nc 8589.nc
-     ncra -p INPUT-PATH 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncra -n 5,2,1 85.nc 8589.nc
-   The first method (explicitly specifying all filenames) works by brute
-force.  The second method relies on the operating system shell to "glob"
-(expand) the "regular expression" `8[56789].nc'.  The shell passes
-valid filenames which match the expansion to `ncra'.  The third method
-uses the `-p INPUT-PATH' argument to specify the directory where all
-the input files reside.  NCO prepends INPUT-PATH (e.g.,
-`/data/usrname/model') to all INPUT-FILES (but not to OUTPUT-FILE).
-Thus, using `-p', the path to any number of input files need only be
-specified once.  Note INPUT-PATH need not end with `/'; the `/' is
-automatically generated if necessary.
-
-   The last method passes (with `-n') syntax concisely describing the
-entire set of filenames (1).  This option is only available with the
-"multi-file operators": `ncra', `ncrcat', `ncea', and `ncecat'.  By
-definition, multi-file operators are able to process an arbitrary
-number of INPUT-FILES.  This option is very useful for abbreviating
-lists of filenames representable as
-ALPHANUMERIC_PREFIX+NUMERIC_SUFFIX+`.'+FILETYPE where
-ALPHANUMERIC_PREFIX is a string of arbitrary length and composition,
-NUMERIC_SUFFIX is a fixed width field of digits, and FILETYPE is a
-standard filetype indicator.  For example, in the file `ccm3_h0001.nc',
-we have ALPHANUMERIC_PREFIX = `ccm3_h', NUMERIC_SUFFIX = `0001', and
-FILETYPE = `nc'.
-
-   NCO is able to decode lists of such filenames encoded using the `-n'
-option.  The simpler (3-argument) `-n' usage takes the form `-n
-FILE_NUMBER,DIGIT_NUMBER,NUMERIC_INCREMENT' where FILE_NUMBER is the
-number of files, DIGIT_NUMBER is the fixed number of numeric digits
-comprising the NUMERIC_SUFFIX, and NUMERIC_INCREMENT is the constant,
-integer-valued difference between the NUMERIC_SUFFIX of any two
-consecutive files.  The value of ALPHANUMERIC_PREFIX is taken from the
-input file, which serves as a template for decoding the filenames.  In
-the example above, the encoding `-n 5,2,1' along with the input file
-name `85.nc' tells NCO to construct five (5) filenames identical to the
-template `85.nc' except that the final two (2) digits are a numeric
-suffix to be incremented by one (1) for each successive file.
-Currently FILETYPE may be either be empty, `nc', `cdf', `hdf', or `hd5'.
-If present, these FILETYPE suffixes (and the preceding `.') are ignored
-by NCO as it uses the `-n' arguments to locate, evaluate, and compute
-the NUMERIC_SUFFIX component of filenames.
-
-   Recently the `-n' option has been extended to allow convenient
-specification of filenames with "circular" characteristics.  This means
-it is now possible for NCO to automatically generate filenames which
-increment regularly until a specified maximum value, and then wrap back
-to begin again at a specified minimum value.  The corresponding `-n'
-usage becomes more complex, taking one or two additional arguments for
-a total of four or five, respectively: `-n
-FILE_NUMBER,DIGIT_NUMBER,NUMERIC_INCREMENT[,NUMERIC_MAX[,NUMERIC_MIN]]'
-where NUMERIC_MAX, if present, is the maximum integer-value of
-NUMERIC_SUFFIX and NUMERIC_MIN, if present, is the minimum
-integer-value of NUMERIC_SUFFIX.  Consider, for example, the problem of
-specifying non-consecutive input files where the filename suffixes end
-with the month index.  In climate modeling it is common to create
-summertime and wintertime averages which contain the averages of the
-months June-July-August, and December-January-February, respectively:
-     ncra -n 3,2,1 85_06.nc 85_0608.nc
-     ncra -n 3,2,1,12 85_12.nc 85_1202.nc
-     ncra -n 3,2,1,12,1 85_12.nc 85_1202.nc
-   The first example shows that three arguments to the `-n' option
-suffice to specify consecutive months (`06, 07, 08') which do not
-"wrap" back to a minimum value.  The second example shows how to use
-the optional fourth and fifth elements of the `-n' option to specify a
-wrap value to NCO.  The fourth argument to `-n', if present, specifies
-the maximum integer value of NUMERIC_SUFFIX.  In this case the maximum
-value is 12, and will be formatted as `12' in the filename string.  The
-fifth argument to `-n', if present, specifies the minimum integer value
-of NUMERIC_SUFFIX.  The default minimum filename suffix is 1, which is
-formatted as `01' in this case.  Thus the second and third examples
-have the same effect, that is, they automatically generate, in order,
-the filenames `85_12.nc', `85_01.nc', and `85_02.nc' as input to NCO.
-
-   ---------- Footnotes ----------
-
-   (1) The `-n' option is a backward compatible superset of the
-`NINTAP' option from the NCAR CCM Processor.
-
-
-File: nco.info,  Node: Specifying Output Files,  Next: Remote storage,  Prev: Specifying Input Files,  Up: Common features
-
-3.6 Specifying Output Files
-===========================
-
-Availability: All operators
-Short options: `-o'
-Long options: `--fl_out', `--output'
-NCO commands produce no more than one output file, FL_OUT.
-Traditionally, users specify FL_OUT as the final argument to the
-operator, following all input file names.  This is the "positional
-argument" method of specifying input and ouput file names.  The
-positional argument method works well in most applications.  NCO also
-supports specifying FL_OUT using the command line switch argument
-method, `-o FL_OUT'.
-
-   Specifying FL_OUT with a switch, rather than as a positional
-argument, allows FL_OUT to precede input files in the argument list.  This
-is particularly useful with multi-file operators for three reasons.
-Multi-file operators may be invoked with hundreds (or more) filenames.
-Visual or automatic location of FL_OUT in such a list is difficult when
-the only syntactic distinction between input and output files is their
-position.  Second, specification of a long list of input files may be
-difficult (*note Large Numbers of Files::).  Making the input file list
-the final argument to an operator facilitates using `xargs' for this
-purpose.  Some alternatives to `xargs' are very ugly and undesirable.
-Finally, many users are more comfortable specifying output files with
-`-o FL_OUT' near the beginning of an argument list.  Compilers and
-linkers are usually invoked this way.
-
-   Users should specify FL_OUT using either but not both methods.  If
-FL_OUT is specified twice (once with the switch and once as the last
-positional argument), then the positional argument takes precedence.
-
-
-File: nco.info,  Node: Remote storage,  Next: Retaining Retrieved Files,  Prev: Specifying Output Files,  Up: Common features
-
-3.7 Accessing Remote Files
-==========================
-
-Availability: All operators
-Short options: `-p', `-l'
-Long options: `--pth', `--path', `--lcl', `--local'
-All NCO operators can retrieve files from remote sites as well as from
-the local file system.  A remote site can be an anonymous FTP server, a
-machine on which the user has `rcp', `scp', or `sftp' privileges, or
-NCAR's Mass Storage System (MSS), or an OPeNDAP server.  Examples of
-each are given below, following a brief description of the particular
-access protocol.
-
-   To access a file via an anonymous FTP server, supply the remote
-file's URL.  FTP is an intrinsically insecure protocol because it
-transfers passwords in plain text format.  Users should access sites
-using anonymous FTP when possible.  Some FTP servers require a
-login/password combination for a valid user account.  NCO allows these
-transactions so long as the required information is stored in the
-`.netrc' file.  Usually this information is the remote machine name,
-login, and password, in plain text, separated by those very keywords,
-e.g.,
-     machine dust.ess.uci.edu login zender password bushlied
-   Eschew using valuable passwords for FTP transactions, since `.netrc'
-passwords are potentially exposed to eavesdropping software (1).
-
-   SFTP, i.e., secure FTP, uses SSH-based security protocols that solve
-the security issues associated with plain FTP.  NCO supports SFTP
-protocol access to files specified with a homebrew syntax of the form
-     sftp://machine.domain.tld:/path/to/filename
-   Note the second colon following the top-level-domain (tld).  This
-syntax is a hybrid between an FTP URL and a standard remote file syntax.
-
-   To access a file using `rcp' or `scp', specify the Internet address
-of the remote file.  Of course in this case you must have `rcp' or `scp'
-privileges which allow transparent (no password entry required) access
-to the remote machine.  This means that `~/.rhosts' or
-`~/ssh/authorized_keys' must be set accordingly on both local and
-remote machines.
-
-   To access a file on a High Performance Storage System (HPSS) (such
-as that at NCAR, ECMWF, LANL, DKRZ, LLNL) specify the full HPSS pathname
-of the remote file.  NCO will attempt to detect whether the local
-machine has direct (synchronous) HPSS access.  In this case, NCO
-attempts to use the Hierarchical Storage Interface (HSI) command `hsi
-get' (2).
-
-   The following examples show how one might analyze files stored on
-remote systems.
-     ncks -l . ftp://dust.ess.uci.edu/pub/zender/nco/in.nc
-     ncks -l . sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco/in.nc
-     ncks -l . dust.ess.uci.edu:/home/zender/nco/data/in.nc
-     ncks -l . /ZENDER/nco/in.nc
-     ncks -l . /home/zender/nco/in.nc
-     ncks -l . http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc
-   The first example works verbatim if your system is connected to the
-Internet and is not behind a firewall.  The second example works if you
-have `sftp' access to the machine `dust.ess.uci.edu'.  The third
-example works if you have `rcp' or `scp' access to the machine
-`dust.ess.uci.edu'.  The fourth and fifth examples work on NCAR
-computers with local access to the HPSS `hsi get' command (3).  The
-sixth command works if your local version of NCO is OPeNDAP-enabled
-(this is fully described in *note OPeNDAP::), or if the remote file is
-accessible via `wget'.  The above commands can be rewritten using the
-`-p INPUT-PATH' option as follows: 
-     ncks -p ftp://dust.ess.uci.edu/pub/zender/nco -l . in.nc
-     ncks -p sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco -l . in.nc
-     ncks -p dust.ess.uci.edu:/home/zender/nco -l . in.nc
-     ncks -p /ZENDER/nco -l . in.nc
-     ncks -p /home/zender/nco -l . in.nc # HPSS
-     ncks -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-          -l . in.nc
-   Using `-p' is recommended because it clearly separates the
-INPUT-PATH from the filename itself, sometimes called the "stub".  When
-INPUT-PATH is not explicitly specified using `-p', NCO internally
-generates an INPUT-PATH from the first input filename.  The
-automatically generated INPUT-PATH is constructed by stripping the
-input filename of everything following the final `/' character (i.e.,
-removing the stub).  The `-l OUTPUT-PATH' option tells NCO where to
-store the remotely retrieved file and the output file.  Often the path
-to a remotely retrieved file is quite different than the path on the
-local machine where you would like to store the file.  If `-l' is not
-specified then NCO internally generates an OUTPUT-PATH by simply
-setting OUTPUT-PATH equal to INPUT-PATH stripped of any machine names.
-If `-l' is not specified and the remote file resides on the NCAR HPSS
-system, then the leading character of INPUT-PATH, `/', is also stripped
-from OUTPUT-PATH.  Specifying OUTPUT-PATH as `-l ./' tells NCO to store
-the remotely retrieved file and the output file in the current
-directory.  Note that `-l .' is equivalent to `-l ./' though the latter
-is recommended as it is syntactically more clear.
-
-* Menu:
-
-* OPeNDAP::
-
-   ---------- Footnotes ----------
-
-   (1) NCO does not implement command line options to specify FTP
-logins and passwords because copying those data into the `history'
-global attribute in the output file (done by default) poses an
-unacceptable security risk.
-
-   (2) The `hsi' command must be in the user's path in one of the
-following directories: `/usr/local/bin' or `/opt/hpss/bin'.  Tell us if
-the HPSS installation at your site places the `hsi' command in a
-different location, and we will add that location to the list of
-acceptable paths to search for `hsi'.
-
-   (3) NCO supported the old NCAR Mass Storage System (MSS) until
-version 4.0.7 in April, 2011.  NCO supported MSS-retrievals via a
-variety of mechanisms including the `msread', `msrcp', and `nrnet'
-commands invoked either automatically or with sentinels like `ncks -p
-mss:/ZENDER/nco -l . in.nc'.  Once the MSS was decommissioned in March,
-2011, support for these retrieval mechanisms was removed from NCO.
-
-
-File: nco.info,  Node: OPeNDAP,  Prev: Remote storage,  Up: Remote storage
-
-3.7.1 OPeNDAP
--------------
-
-The Distributed Oceanographic Data System (DODS) provides useful
-replacements for common data interface libraries like netCDF.  The DODS
-versions of these libraries implement network transparent access to
-data via a client-server data access protocol that uses the HTTP
-protocol for communication.  Although DODS-technology originated with
-oceanography data, it applyies to virtually all scientific data.  In
-recognition of this, the data access protocol underlying DODS (which is
-what NCO cares about) has been renamed the Open-source Project for a
-Network Data Access Protocol, OPeNDAP.  We use the terms DODS and
-OPeNDAP interchangeably, and often write OPeNDAP/DODS for now.  In the
-future we will deprecate DODS in favor of DAP or OPeNDAP, as appropriate
-(1).
-
-   NCO may be DAP-enabled by linking NCO to the OPeNDAP libraries.  This
-is described in the OPeNDAP documentation and automagically implemented
-in NCO build mechanisms (2).  The `./configure' mechanism automatically
-enables NCO as OPeNDAP clients if it can find the required OPeNDAP
-libraries (3).   in the usual locations.  The `$DODS_ROOT' environment
-variable may be used to override the default OPeNDAP library location
-at NCO compile-time.  Building NCO with `bld/Makefile' and the command
-`make DODS=Y' adds the (non-intuitive) commands to link to the OPeNDAP
-libraries installed in the `$DODS_ROOT' directory.  The file
-`doc/opendap.sh' contains a generic script intended to help users
-install OPeNDAP before building NCO.  The documentation at the OPeNDAP
-Homepage (http://www.opendap.org) is voluminous.  Check there and on the
-DODS mail lists
-(http://www.unidata.ucar.edu/packages/dods/home/mailLists/).  to learn
-more about the extensive capabilities of OPeNDAP (4).
-
-   Once NCO is DAP-enabled the operators are OPeNDAP clients.  All
-OPeNDAP clients have network transparent access to any files controlled
-by a OPeNDAP server.  Simply specify the input file path(s) in URL
-notation and all NCO operations may be performed on remote files made
-accessible by a OPeNDAP server.  This command tests the basic
-functionality of OPeNDAP-enabled NCO clients:
-     % ncks -O -o ~/foo.nc -C -H -v one -l /tmp \
-       -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-     % ncks -H -v one ~/foo.nc
-     one = 1
-   The `one = 1' outputs confirm (first) that `ncks' correctly
-retrieved data via the  OPeNDAP protocol and (second) that `ncks'
-created a valid local copy of the subsetted remote file.  With minor
-changes to the above command, netCDF4 can be used as both the input and
-output file format:
-     % ncks -4 -O -o ~/foo.nc -C -H -v one -l /tmp \
-       -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-     % ncks -H -v one ~/foo.nc
-     one = 1
-   And, of course, OPeNDAP-enabled NCO clients continue to support
-other, orthogonal features such as UDUnits (*note UDUnits Support::):
-     % ncks -u -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' \
-       -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-     % wvl[0]=5e-07 meter
-
-   The next command is a more advanced example which demonstrates the
-real power of OPeNDAP-enabled NCO clients.  The `ncwa' client requests
-an equatorial hyperslab from remotely stored NCEP reanalyses data of
-the year 1969.  The NOAA OPeNDAP server (hopefully!) serves these data.
-The local `ncwa' client then computes and stores (locally) the regional
-mean surface pressure (in Pa).
-     ncwa -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-     http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-       pres.sfc.1969.nc ~/foo.nc
-   All with one command!  The data in this particular input file also
-happen to be packed (*note Methods and functions::), although this is
-completely transparent to the user since NCO automatically unpacks data
-before attempting arithmetic.
-
-   NCO obtains remote files from the OPeNDAP server (e.g.,
-`www.cdc.noaa.gov') rather than the local machine.  Input files are
-first copied to the local machine, then processed.  The OPeNDAP server
-performs data access, hyperslabbing, and transfer to the local machine.  This
-allows the I/O to appear to NCO as if the input files were local.  The
-local machine performs all arithmetic operations.  Only the
-hyperslabbed output data are transferred over the network (to the local
-machine) for the number-crunching to begin.  The advantages of this are
-obvious if you are examining small parts of large files stored at
-remote locations.
-
-   ---------- Footnotes ----------
-
-   (1) DODS is being deprecated because it is ambiguous, referring both
-to a protocol and to a collection of (oceanography) data.  It is
-superceded by two terms.  DAP is the discipline-neutral Data Access
-Protocol at the heart of DODS.  The National Virtual Ocean Data System
-(NVODS) refers to the collection of oceanography data and oceanographic
-extensions to DAP.  In other words, NVODS is implemented with OPeNDAP.
-OPeNDAP is _also_ the open source project which maintains, develops,
-and promulgates the DAP standard.  OPeNDAP and DAP really are
-interchangeable.  Got it yet?
-
-   (2) Automagic support for DODS version 3.2.x was deprecated in
-December, 2003 after NCO version 2.8.4.  NCO support for OPeNDAP
-versions 3.4.x commenced in December, 2003, with NCO version 2.8.5.
-NCO support for OPeNDAP versions 3.5.x commenced in June, 2005, with
-NCO version 3.0.1.  NCO support for OPeNDAP versions 3.6.x commenced in
-June, 2006, with NCO version 3.1.3.  NCO support for OPeNDAP versions
-3.7.x commenced in January, 2007, with NCO version 3.1.9.
-
-   (3) The minimal set of libraries required to build NCO as OPeNDAP
-clients are, in link order, `libnc-dap.a', `libdap.a', and `libxml2'
-and `libcurl.a'.
-
-   (4) We are most familiar with the OPeNDAP ability to enable
-network-transparent data access.  OPeNDAP has many other features,
-including sophisticated hyperslabbing and server-side processing via
-"constraint expressions".  If you know more about this, please consider
-writing a section on "OPeNDAP Capabilities of Interest to NCO Users"
-for incorporation in the `NCO User's Guide'.
-
-
-File: nco.info,  Node: Retaining Retrieved Files,  Next: Selecting Output File Format,  Prev: Remote storage,  Up: Common features
-
-3.8 Retaining Retrieved Files
-=============================
-
-Availability: All operators
-Short options: `-R'
-Long options: `--rtn', `--retain'
-In order to conserve local file system space, files retrieved from
-remote locations are automatically deleted from the local file system
-once they have been processed.  Many NCO operators were constructed to
-work with numerous large (e.g., 200 MB) files.  Retrieval of multiple
-files from remote locations is done serially.  Each file is retrieved,
-processed, then deleted before the cycle repeats.  In cases where it is
-useful to keep the remotely-retrieved files on the local file system
-after processing, the automatic removal feature may be disabled by
-specifying `-R' on the command line.
-
-   Invoking `-R' disables the default printing behavior of `ncks'.
-This allows `ncks' to retrieve remote files without automatically
-trying to print them.  See *note ncks netCDF Kitchen Sink::, for more
-details.
-
-   Note that the remote retrieval features of NCO can always be used to
-retrieve _any_ file, including non-netCDF files, via `SSH', anonymous
-FTP, or `msrcp'.  Often this method is quicker than using a browser, or
-running an FTP session from a shell window yourself.  For example, say
-you want to obtain a JPEG file from a weather server.
-     ncks -R -p ftp://weather.edu/pub/pix/jpeg -l . storm.jpg
-   In this example, `ncks' automatically performs an anonymous FTP
-login to the remote machine and retrieves the specified file.  When
-`ncks' attempts to read the local copy of `storm.jpg' as a netCDF file,
-it fails and exits, leaving  `storm.jpg' in the current directory.
-
-   If your NCO is DAP-enabled (*note OPeNDAP::), then you may use NCO
-to retrieve any files (including netCDF, HDF, etc.) served by an
-OPeNDAP server to your local machine.  For example,
-     ncks -R -l . -p \
-     http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-       pres.sfc.1969.nc
-   Note that NCO is never the preffered way to transport files from
-remote machines.  For large jobs, that is best handled by FTP, SSH, or
-`wget'.  It may occasionally be useful to use NCO to transfer files
-when your other preferred methods are not available locally.
-
-
-File: nco.info,  Node: Selecting Output File Format,  Next: Large File Support,  Prev: Retaining Retrieved Files,  Up: Common features
-
-3.9 Selecting Output File Format
-================================
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-3', `-4'
-Long options: `--3', `--4', `--64bit', `--fl_fmt', `--netcdf4'
-All NCO operators support (read and write) all three (or four,
-depending on how one counts) file formats supported by netCDF4.  The
-default output file format for all operators is the input file format.
-The operators listed under "Availability" above allow the user to
-specify the output file format independent of the input file format.
-These operators allow the user to convert between the various file
-formats.  (The operators `ncatted' and `ncrename' do not support these
-switches so they always write the output netCDF file in the same format
-as the input netCDF file.)
-
-   netCDF supports four types of files: `CLASSIC', `64BIT', `NETCDF4',
-and `NETCDF4_CLASSIC', The `CLASSIC' format is the traditional 32-bit
-offset written by netCDF2 and netCDF3.  As of 2005, most netCDF
-datasets are in `CLASSIC' format.  The `64BIT' format was added in
-Fall, 2004.
-
-   The `NETCDF4' format uses HDF5 as the file storage layer.  The files
-are (usually) created, accessed, and manipulated using the traditional
-netCDF3 API (with numerous extensions).  The `NETCDF4_CLASSIC' format
-refers to netCDF4 files created with the `NC_CLASSIC_MODEL' mask.  Such
-files use HDF5 as the back-end storage format (unlike netCDF3), though
-they incorporate only netCDF3 features.  Hence `NETCDF4_CLASSIC' files
-are perfectly readable by applications which use only the netCDF3 API
-and library.  NCO must be built with netCDF4 to write files in the new
-`NETCDF4' and `NETCDF4_CLASSIC' formats, and to read files in the new
-`NETCDF4' format.  Users are advised to use the default `CLASSIC'
-format or the `NETCDF4_CLASSIC' format until netCDF4 is more widespread.
-Widespread support for `NETCDF4' format files is not expected for a few
-more years, 2013-2014, say.  If performance or coolness are issues,
-then use `NETCDF4_CLASSIC' instead of `CLASSIC' format files.
-
-   As mentioned above, all operators write use the input file format for
-output files unless told otherwise.  Toggling the long option `--64bit'
-switch (or its KEY-VALUE equivalent `--fl_fmt=64bit') produces the
-netCDF3 64-bit offset format named `64BIT'.  NCO must be built with
-netCDF 3.6 or higher to produce a `64BIT' file.  Using the `-4' switch
-(or its long option equivalents `--4' or `--netcdf4'), or setting its
-KEY-VALUE equivalent `--fl_fmt=netcdf4' produces a `NETCDF4' file
-(i.e., HDF).  Casual users are advised to use the default (netCDF3)
-`CLASSIC' format until netCDF 3.6 and netCDF 4.0 are more widespread.
-Conversely, operators given the `-3' (or `--3') switch without
-arguments will (attempt to) produce netCDF3 `CLASSIC' output, even from
-netCDF4 input files.
-
-   These examples demonstrate converting a file from any netCDF format
-into any other netCDF format (subject to limits of the format):
-     ncks --fl_fmt=classic in.nc foo_3c.nc # netCDF3 classic
-     ncks --fl_fmt=64bit in.nc foo_364.nc # netCDF3 64bit
-     ncks --fl_fmt=netcdf4_classic in.nc foo_4c.nc # netCDF4 classic
-     ncks --fl_fmt=netcdf4 in.nc foo_4.nc # netCDF4
-     ncks -3 in.nc foo_3c.nc # netCDF3 classic
-     ncks --3 in.nc foo_3c.nc # netCDF3 classic
-     ncks -4 in.nc foo_4.nc # netCDF4
-     ncks --4 in.nc foo_4.nc # netCDF4
-     ncks --64 in.nc foo364.nc # netCDF3 64bit
-   Of course since most operators support these switches, the
-"conversions" can be done at the output stage of arithmetic or metadata
-processing rather than requiring a separate step.  Producing (netCDF3)
-`CLASSIC' or `64BIT' files from `NETCDF4_CLASSIC' files will always
-work.  However, producing netCDF3 files from `NETCDF4' files will only
-work if the output files are not required to contain netCDF4-specific
-features.
-
-   Note that `NETCDF4' and `NETCDF4_CLASSIC' are the same binary format.
-The latter simply causes a writing application to fail if it attempts to
-write a `NETCDF4' file that cannot be completely read by the netCDF3
-library.  Conversely, `NETCDF4_CLASSIC' indicates to a reading
-application that all of the file contents are readable with the netCDF3
-library.  As of October, 2005, NCO writes no netCDF4-specific data
-structures and so always succeeds at writing `NETCDF4_CLASSIC' files.
-
-   There are at least three ways to discover the format of a netCDF
-file, i.e., whether it is a classic (32-bit offset) or newer 64-bit
-offset netCDF3 format, or is netCDF4 format.  Each method returns the
-information using slightly different terminology that becomes easier to
-understand with practice.
-
-   First, examine the end of the first line of global metadata output by
-`ncks -M': 
-     % ncks -M foo_3c.nc
-     Opened file foo_3c.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_CLASSIC
-     % ncks -M foo_364.nc
-     Opened file foo_364.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_64BIT
-     % ncks -M foo_4c.nc
-     Opened file foo_4c.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_NETCDF4_CLASSIC
-     % ncks -M foo_4.nc
-     Opened file foo_4.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_NETCDF4
-   This method requires a netCDF4-enabled NCO version 3.9.0+ (i.e.,
-from 2007 or later).
-
-   Second, query the file with `ncdump -k': 
-     % ncdump -k foo_3.nc
-     classic
-     % ncdump -k foo_364.nc
-     64-bit-offset
-     % ncdump -k foo_4c.nc
-     netCDF-4 classic model
-     % ncdump -k foo_4.nc
-     netCDF-4
-   This method requires a netCDF4-enabled netCDF 3.6.2+ (i.e., from
-2007 or later).
-
-   The third option uses the POSIX-standard `od' (octal dump) command: 
-     % od -An -c -N4 foo_3c.nc
-        C   D   F 001
-     % od -An -c -N4 foo_364.nc
-        C   D   F 002
-     % od -An -c -N4 foo_4c.nc
-      211   H   D   F
-     % od -An -c -N4 foo_4.nc
-      211   H   D   F
-   This option works without NCO and `ncdump'.  Values of `C D F 001'
-and `C D F 002' indicate 32-bit (classic) and 64-bit netCDF3 formats,
-respectively, while values of `211 H D F' indicate the newer netCDF4
-file format.
-
-
-File: nco.info,  Node: Large File Support,  Next: Subsetting Variables,  Prev: Selecting Output File Format,  Up: Common features
-
-3.10 Large File Support
-=======================
-
-Availability: All operators
-Short options: none
-Long options: none
-NCO has Large File Support (LFS), meaning that NCO can write files
-larger than 2 GB on some 32-bit operating systems with netCDF libraries
-earlier than version 3.6.  If desired, LFS support must be configured
-when both netCDF and NCO are installed.  netCDF versions 3.6 and higher
-support 64-bit file addresses as part of the netCDF standard.  We
-recommend that users ignore LFS support which is difficult to configure
-and is implemented in NCO only to support netCDF versions prior to 3.6.
-This obviates the need for configuring explicit LFS support in
-applications (such as NCO) which now support 64-bit files directly
-through the netCDF interface.  See *note Selecting Output File Format::
-for instructions on accessing the different file formats, including
-64-bit files, supported by the modern netCDF interface.
-
-   If you are still interesting in explicit LFS support for netCDF
-versions prior to 3.6, know that LFS support depends on a complex,
-interlocking set of operating system (1) and netCDF suppport issues.
-The netCDF LFS FAQ at
-`http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html'
-describes the various file size limitations imposed by different
-versions of the netCDF standard.  NCO and netCDF automatically attempt
-to configure LFS at build time.
-
-   ---------- Footnotes ----------
-
-   (1) Linux and AIX are known to support LFS.
-
-
-File: nco.info,  Node: Subsetting Variables,  Next: Subsetting Coordinate Variables,  Prev: Large File Support,  Up: Common features
-
-3.11 Subsetting Variables
-=========================
-
-Availability: (`ncap2'), `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-v', `-x'
-Long options: `--variable', `--exclude' or `--xcl'
-Subsetting variables refers to explicitly specifying variables to be
-included or excluded from operator actions.  Subsetting is implemented
-with the `-v VAR[,...]' and `-x' options.  A list of variables to
-extract is specified following the `-v' option, e.g., `-v time,lat,lon'.
-Not using the `-v' option is equivalent to specifying all variables.
-The `-x' option causes the list of variables specified with `-v' to be
-_excluded_ rather than _extracted_.  Thus `-x' saves typing when you
-only want to extract fewer than half of the variables in a file.
-
-   Variables explicitly specified for extraction with `-v VAR[,...]'
-_must_ be present in the input file or an error will result.  Variables
-explicitly specified for _exclusion_ with `-x -v VAR[,...]' need not be
-present in the input file.  Remember, if averaging or concatenating
-large files stresses your systems memory or disk resources, then the
-easiest solution is often to use the `-v' option to retain only the
-most important variables (*note Memory Requirements::).
-
-   Due to its special capabilities, `ncap2' interprets the `-v' switch
-differently (*note ncap2 netCDF Arithmetic Processor::).  For `ncap2',
-the `-v' switch takes no arguments and indicates that _only_
-user-defined variables should be output.  `ncap2' neither accepts nor
-understands the -X switch.
-
-   As of NCO 2.8.1 (August, 2003), variable name arguments of the `-v'
-switch may contain "extended regular expressions".  As of NCO 3.9.6
-(January, 2009), variable names arguments to `ncatted' may contain
-"extended regular expressions".  For example, `-v '^DST'' selects all
-variables beginning with the string `DST'.  Extended regular
-expressions are defined by the GNU `egrep' command.  The
-meta-characters used to express pattern matching operations are
-`^$+?.*[]{}|'.  If the regular expression pattern matches _any_ part of
-a variable name then that variable is selected.  This capability is
-called "wildcarding", and is very useful for sub-setting large data
-files.
-
-   Because of its wide availability, NCO uses the POSIX regular
-expression library `regex'.  Regular expressions of arbitary complexity
-may be used.  Since netCDF variable names are relatively simple
-constructs, only a few varieties of variable wildcards are likely to be
-useful.  For convenience, we define the most useful pattern matching
-operators here: 
-`^'
-     Matches the beginning of a string
-
-`$'
-     Matches the end of a string
-
-`.'
-     Matches any single character
-   The most useful repetition and combination operators are 
-`?'
-     The preceding regular expression is optional and matched at most
-     once
-
-`*'
-     The preceding regular expression will be matched zero or more times
-
-`+'
-     The preceding regular expression will be matched one or more times
-
-`|'
-     The preceding regular expression will be joined to the following
-     regular expression.  The resulting regular expression matches any
-     string matching either subexpression.
-   To illustrate the use of these operators in extracting variables,
-consider a file with variables `Q', `Q01'-`Q99', `Q100', `QAA'-`QZZ',
-`Q_H2O', `X_H2O', `Q_CO2', `X_CO2'.
-     ncks -v 'Q.?' in.nc              # Variables that contain Q
-     ncks -v '^Q.?' in.nc             # Variables that start with Q
-     ncks -v '^Q+.?.' in.nc           # Q, Q0--Q9, Q01--Q99, QAA--QZZ, etc.
-     ncks -v '^Q..' in.nc             # Q01--Q99, QAA--QZZ, etc.
-     ncks -v '^Q[0-9][0-9]' in.nc     # Q01--Q99, Q100
-     ncks -v '^Q[[:digit:]]{2}' in.nc # Q01--Q99
-     ncks -v 'H2O$' in.nc             # Q_H2O, X_H2O
-     ncks -v 'H2O$|CO2$' in.nc        # Q_H2O, X_H2O, Q_CO2, X_CO2
-     ncks -v '^Q[0-9][0-9]$' in.nc    # Q01--Q99
-     ncks -v '^Q[0-6][0-9]|7[0-3]' in.nc # Q01--Q73, Q100
-     ncks -v '(Q[0-6][0-9]|7[0-3])$' in.nc # Q01--Q73
-     ncks -v '^[a-z]_[a-z]{3}$' in.nc # Q_H2O, X_H2O, Q_CO2, X_CO2
-   Beware--two of the most frequently used repetition pattern matching
-operators, `*' and `?', are also valid pattern matching operators for
-filename expansion (globbing) at the shell-level.  Confusingly, their
-meanings in extended regular expressions and in shell-level filename
-expansion are significantly different.  In an extended regular
-expression, `*' matches zero or more occurences of the preceding
-regular expression.  Thus `Q*' selects all variables, and `Q+.*'
-selects all variables containing `Q' (the `+' ensures the preceding item
-matches at least once).  To match zero or one occurence of the
-preceding regular expression, use `?'.  Documentation for the UNIX
-`egrep' command details the extended regular expressions which NCO
-supports.
-
-   One must be careful to protect any special characters in the regular
-expression specification from being interpreted (globbed) by the shell.
-This is accomplish by enclosing special characters within single or
-double quotes
-     ncra -v Q?? in.nc out.nc   # Error: Shell attempts to glob wildcards
-     ncra -v '^Q+..' in.nc out.nc # Correct: NCO interprets wildcards
-     ncra -v '^Q+..' in*.nc out.nc # Correct: NCO interprets, Shell globs
-   The final example shows that commands may use a combination of
-variable wildcarding and shell filename expansion (globbing).  For
-globbing, `*' and `?' _have nothing to do_ with the preceding regular
-expression!  In shell-level filename expansion, `*' matches any string,
-including the null string and `?' matches any single character.
-Documentation for `bash' and `csh' describe the rules of filename
-expansion (globbing).
-
-
-File: nco.info,  Node: Subsetting Coordinate Variables,  Next: C and Fortran Index Conventions,  Prev: Subsetting Variables,  Up: Common features
-
-3.12 Subsetting Coordinate Variables
-====================================
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-C', `-c'
-Long options: `--no-coords', `--no-crd', `--crd', `--coords'
-By default, coordinates variables associated with any variable appearing
-in the INPUT-FILE will be placed in the OUTPUT-FILE, even if they are
-not explicitly specified, e.g., with the `-v' switch.  Thus variables
-with a latitude coordinate `lat' always carry the values of `lat' with
-them into the OUTPUT-FILE.  This feature can be disabled with `-C',
-which causes NCO to not automatically add coordinates to the variables
-appearing in the OUTPUT-FILE.  However, using `-C' does not preclude
-the user from including some coordinates in the output files simply by
-explicitly selecting the coordinates with the -V option.  The `-c'
-option, on the other hand, is a shorthand way of automatically
-specifying that _all_ coordinate variables in the INPUT-FILES should
-appear in the OUTPUT-FILE.  Thus `-c' allows the user to select all the
-coordinate variables without having to know their names.  As of NCO
-version 3.9.6 (January, 2009) both `-c' and `-C' honor the CF
-`coordinates' convention described in *note CF Conventions::.  As of
-NCO version 4.0.8 (April, 2011) both `-c' and `-C' honor the CF `bounds'
-convention described in *note CF Conventions::.
-
-
-File: nco.info,  Node: C and Fortran Index Conventions,  Next: Hyperslabs,  Prev: Subsetting Coordinate Variables,  Up: Common features
-
-3.13 C and Fortran Index conventions
-====================================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-F'
-Long options: `--fortran'
-The `-F' switch changes NCO to read and write with the Fortran index
-convention.  By default, NCO uses C-style (0-based) indices for all I/O.
-In C, indices count from 0 (rather than 1), and dimensions are ordered
-from slowest (inner-most) to fastest (outer-most) varying.  In Fortran,
-indices count from 1 (rather than 0), and dimensions are ordered from
-fastest (inner-most) to slowest (outer-most) varying.  Hence C and
-Fortran data storage conventions represent mathematical transposes of
-eachother.  Note that record variables contain the record dimension as
-the most slowly varying dimension.  See *note ncpdq netCDF Permute
-Dimensions Quickly:: for techniques to re-order (including transpose)
-dimensions and to reverse data storage order.
-
-   Consider a file `85.nc' containing 12 months of data in the record
-dimension `time'.  The following hyperslab operations produce identical
-results, a June-July-August average of the data:
-     ncra -d time,5,7 85.nc 85_JJA.nc
-     ncra -F -d time,6,8 85.nc 85_JJA.nc
-
-   Printing variable THREE_DMN_VAR in file `in.nc' first with the
-C indexing convention, then with Fortran indexing convention results in
-the following output formats:
-     % ncks -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=1000 lon[0]=-180 three_dmn_var[0]=0
-     ...
-     % ncks -F -v three_dmn_var in.nc
-     lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
-     ...
-
-
-File: nco.info,  Node: Hyperslabs,  Next: Stride,  Prev: C and Fortran Index Conventions,  Up: Common features
-
-3.14 Hyperslabs
-===============
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-A "hyperslab" is a subset of a variable's data.  The coordinates of a
-hyperslab are specified with the `-d DIM,[MIN][,[MAX][,[STRIDE]]]' short
-option (or with the same arguments to the `--dimension' or `--dmn' long
-options).  At least one hyperslab argument (MIN, MAX, or STRIDE) must
-be present.  The bounds of the hyperslab to be extracted are specified
-by the associated MIN and MAX values.  A half-open range is specified
-by omitting either the MIN or MAX parameter.  The separating comma must
-be present to indicate the omission of one of these arguments.  The
-unspecified limit is interpreted as the maximum or minimum value in the
-unspecified direction.  A cross-section at a specific coordinate is
-extracted by specifying only the MIN limit and omitting a trailing
-comma.  Dimensions not mentioned are passed with no reduction in range.
-The dimensionality of variables is not reduced (in the case of a
-cross-section, the size of the constant dimension will be one).  If
-values of a coordinate-variable are used to specify a range or
-cross-section, then the coordinate variable must be monotonic (values
-either increasing or decreasing).  In this case, command-line values
-need not exactly match coordinate values for the specified dimension.
-Ranges are determined by seeking the first coordinate value to occur in
-the closed range [MIN,MAX] and including all subsequent values until
-one falls outside the range.  The coordinate value for a cross-section
-is the coordinate-variable value closest to the specified value and
-must lie within the range or coordinate-variable values.
-
-   Coordinate values should be specified using real notation with a
-decimal point required in the value, whereas dimension indices are
-specified using integer notation without a decimal point.  This
-convention serves only to differentiate coordinate values from
-dimension indices.  It is independent of the type of any netCDF
-coordinate variables.  For a given dimension, the specified limits must
-both be coordinate values (with decimal points) or dimension indices
-(no decimal points).  The STRIDE option, if any, must be a dimension
-index, not a coordinate value.  *Note Stride::, for more information on
-the STRIDE option.
-
-   User-specified coordinate limits are promoted to double precision
-values while searching for the indices which bracket the range.  Thus,
-hyperslabs on coordinates of type `NC_BYTE' and `NC_CHAR' are computed
-numerically rather than lexically, so the results are unpredictable.
-
-   The relative magnitude of MIN and MAX indicate to the operator
-whether to expect a "wrapped coordinate" (*note Wrapped Coordinates::),
-such as longitude.  If MIN > MAX, the NCO expects the coordinate to be
-wrapped, and a warning message will be printed.  When this occurs, NCO
-selects all values outside the domain [MAX < MIN], i.e., all the values
-exclusive of the values which would have been selected if MIN and MAX
-were swapped.  If this seems confusing, test your command on just the
-coordinate variables with `ncks', and then examine the output to ensure
-NCO selected the hyperslab you expected (coordinate wrapping is
-currently only supported by `ncks').
-
-   Because of the way wrapped coordinates are interpreted, it is very
-important to make sure you always specify hyperslabs in the
-monotonically increasing sense, i.e., MIN < MAX (even if the underlying
-coordinate variable is monotonically decreasing).  The only exception
-to this is when you are indeed specifying a wrapped coordinate.  The
-distinction is crucial to understand because the points selected by,
-e.g., `-d longitude,50.,340.', are exactly the complement of the points
-selected by `-d longitude,340.,50.'.
-
-   Not specifying any hyperslab option is equivalent to specifying full
-ranges of all dimensions.  This option may be specified more than once
-in a single command (each hyperslabbed dimension requires its own `-d'
-option).
-
-
-File: nco.info,  Node: Stride,  Next: Multislabs,  Prev: Hyperslabs,  Up: Common features
-
-3.15 Stride
-===========
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-All data operators support specifying a "stride" for any and all
-dimensions at the same time.  The STRIDE is the spacing between
-consecutive points in a hyperslab.  A STRIDE of 1 picks all the
-elements of the hyperslab, and a STRIDE of 2 skips every other element,
-etc..  `ncks' multislabs support strides, and are more powerful than
-the regular hyperslabs supported by the other operators (*note
-Multislabs::).  Using the STRIDE option for the record dimension with
-`ncra' and `ncrcat' makes it possible, for instance, to average or
-concatenate regular intervals across multi-file input data sets.
-
-   The STRIDE is specified as the optional fourth argument to the `-d'
-hyperslab specification: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'.  Specify
-STRIDE as an integer (i.e., no decimal point) following the third comma
-in the `-d' argument.  There is no default value for STRIDE.  Thus
-using `-d time,,,2' is valid but `-d time,,,2.0' and `-d time,,,' are
-not.  When STRIDE is specified but MIN is not, there is an ambiguity as
-to whether the extracted hyperslab should begin with (using C-style,
-0-based indexes) element 0 or element `stride-1'.  NCO must resolve
-this ambiguity and it chooses element 0 as the first element of the
-hyperslab when MIN is not specified.  Thus `-d time,,,STRIDE' is
-syntactically equivalent to `-d time,0,,STRIDE'.  This means, for
-example, that specifying the operation `-d time,,,2' on the array
-`1,2,3,4,5' selects the hyperslab `1,3,5'.  To obtain the hyperslab
-`2,4' instead, simply explicitly specify the starting index as 1, i.e.,
-`-d time,1,,2'.
-
-   For example, consider a file `8501_8912.nc' which contains 60
-consecutive months of data.  Say you wish to obtain just the March data
-from this file.  Using 0-based subscripts (*note C and Fortran Index
-Conventions::) these data are stored in records 2, 14, ... 50 so the
-desired STRIDE is 12.  Without the STRIDE option, the procedure is very
-awkward.  One could use `ncks' five times and then use `ncrcat' to
-concatenate the resulting files together: 
-     for idx in 02 14 26 38 50; do # Bourne Shell
-       ncks -d time,${idx} 8501_8912.nc foo.${idx}
-     done
-     foreach idx (02 14 26 38 50) # C Shell
-       ncks -d time,${idx} 8501_8912.nc foo.${idx}
-     end
-     ncrcat foo.?? 8589_03.nc
-     rm foo.??
-   With the STRIDE option, `ncks' performs this hyperslab extraction in
-one operation:
-     ncks -d time,2,,12 8501_8912.nc 8589_03.nc
-   *Note ncks netCDF Kitchen Sink::, for more information on `ncks'.
-
-   Applying the STRIDE option to the record dimension in `ncra' and
-`ncrcat' makes it possible, for instance, to average or concatenate
-regular intervals across multi-file input data sets.
-     ncra -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8589_03.nc
-     ncrcat -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8503_8903.nc
-
-
-File: nco.info,  Node: Multislabs,  Next: Wrapped Coordinates,  Prev: Stride,  Up: Common features
-
-3.16 Multislabs
-===============
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-A multislab is a union of one or more hyperslabs.  One defines
-multislabs by chaining together hyperslab commands, i.e., `-d' options
-(*note Hyperslabs::).  Support for specifying a "multi-hyperslab" or
-"multislab" for any variable was first added to `ncks' in late 2002.
-The other operators received MSA capabilities in April 2008.  Sometimes
-multi-slabbing is referred to by the acronym MSA, which stands for
-"Multi-Slabbing Algorithm".
-
-   Multislabs overcome some restraints that limit hyperslabs.  A single
-`-d' option can only specify a contiguous and/or a regularly spaced
-multi-dimensional data array.  Multislabs are constructed from multiple
-`-d' options and may therefore have non-regularly spaced arrays.  For
-example, suppose it is desired to operate on all longitudes from 10.0
-to 20.0 and from 80.0 to 90.0 degrees.  The combined range of
-longitudes is not selectable in a single hyperslab specfication of the
-form `-d DIMENSION,MIN,MAX' or `-d DIMENSION,MIN,MAX,STRIDE' because its
-elements are irregularly spaced in coordinate space (and presumably in
-index space too).  The multislab specification for obtaining these
-values is simply the union of the hyperslabs specifications that
-comprise the multislab, i.e.,
-     ncks -d lon,10.,20. -d lon,80.,90. in.nc out.nc
-     ncks -d lon,10.,15. -d lon,15.,20. -d lon,80.,90. in.nc out.nc
-   Any number of hyperslabs specifications may be chained together to
-specify the multislab.
-
-   Users may specify redundant ranges of indices in a multislab, e.g.,
-     ncks -d lon,0,4 -d lon,2,9,2 in.nc out.nc
-   This command retrieves the first five longitudes, and then every
-other longitude value up to the tenth.  Elements 0, 2, and 4 are
-specified by both hyperslab arguments (hence this is redundant) but
-will count only once if an arithmetic operation is being performed.
-This example uses index-based (not coordinate-based) multislabs because
-the STRIDE option only supports index-based hyper-slabbing.  *Note
-Stride::, for more information on the STRIDE option.
-
-   Multislabs are more efficient than the alternative of sequentially
-performing hyperslab operations and concatenating the results.  This is
-because NCO employs a novel multislab algorithm to minimize the number
-of I/O operations when retrieving irregularly spaced data from disk.
-The NCO multislab algorithm retrieves each element from disk once and
-only once.  Thus users may take some shortcuts in specifying multislabs
-and the algorithm will obtain the intended values.  Specifying
-redundant ranges is not encouraged, but may be useful on occasion and
-will not result in unintended consequences.
-
-   A final example shows the real power of multislabs.  Suppose the Q
-variable contains three dimensional arrays of distinct chemical
-constituents in no particular order.  We are interested in the NOy
-species in a certain geographic range.  Say that NO, NO2, and N2O5 are
-elements 0, 1, and 5 of the SPECIES dimension of Q.  The multislab
-specification might look something like
-     ncks -d species,0,1 -d species,5 -d lon,0,4 -d lon,2,9,2 in.nc out.nc
-   Multislabs are powerful because they may be specified for every
-dimension at the same time.  Thus multislabs obsolete the need to
-execute multiple `ncks' commands to gather the desired range of data.
-
-
-File: nco.info,  Node: Wrapped Coordinates,  Next: Auxiliary Coordinates,  Prev: Multislabs,  Up: Common features
-
-3.17 Wrapped Coordinates
-========================
-
-Availability: `ncks'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-A "wrapped coordinate" is a coordinate whose values increase or
-decrease monotonically (nothing unusual so far), but which represents a
-dimension that ends where it begins (i.e., wraps around on itself).
-Longitude (i.e., degrees on a circle) is a familiar example of a wrapped
-coordinate.  Longitude increases to the East of Greenwich, England,
-where it is defined to be zero.  Halfway around the globe, the
-longitude is 180 degrees East (or West).  Continuing eastward,
-longitude increases to 360 degrees East at Greenwich.  The longitude
-values of most geophysical data are either in the range [0,360), or
-[-180,180).  In either case, the Westernmost and Easternmost longitudes
-are numerically separated by 360 degrees, but represent contiguous
-regions on the globe.  For example, the Saharan desert stretches from
-roughly 340 to 50 degrees East.  Extracting the hyperslab of data
-representing the Sahara from a global dataset presents special problems
-when the global dataset is stored consecutively in longitude from 0 to
-360 degrees.  This is because the data for the Sahara will not be
-contiguous in the INPUT-FILE but is expected by the user to be
-contiguous in the OUTPUT-FILE.  In this case, `ncks' must invoke
-special software routines to assemble the desired output hyperslab from
-multiple reads of the INPUT-FILE.
-
-   Assume the domain of the monotonically increasing longitude
-coordinate `lon' is 0 < LON < 360.  `ncks' will extract a hyperslab
-which crosses the Greenwich meridian simply by specifying the
-westernmost longitude as MIN and the easternmost longitude as MAX.  The
-following commands extract a hyperslab containing the Saharan desert:
-     ncks -d lon,340.,50. in.nc out.nc
-     ncks -d lon,340.,50. -d lat,10.,35. in.nc out.nc
-   The first example selects data in the same longitude range as the
-Sahara.  The second example further constrains the data to having the
-same latitude as the Sahara.  The coordinate `lon' in the OUTPUT-FILE,
-`out.nc', will no longer be monotonic!  The values of `lon' will be,
-e.g., `340, 350, 0, 10, 20, 30, 40, 50'.  This can have serious
-implications should you run `out.nc' through another operation which
-expects the `lon' coordinate to be monotonically increasing.
-Fortunately, the chances of this happening are slim, since `lon' has
-already been hyperslabbed, there should be no reason to hyperslab `lon'
-again.  Should you need to hyperslab `lon' again, be sure to give
-dimensional indices as the hyperslab arguments, rather than coordinate
-values (*note Hyperslabs::).
-
-
-File: nco.info,  Node: Auxiliary Coordinates,  Next: UDUnits Support,  Prev: Wrapped Coordinates,  Up: Common features
-
-3.18 Auxiliary Coordinates
-==========================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat'
-Short options: `-X LON_MIN,LON_MAX,LAT_MIN,LAT_MAX'
-Long options: `--auxiliary LON_MIN,LON_MAX,LAT_MIN,LAT_MAX'
-Utilize auxiliary coordinates specified in values of the coordinate
-variable's `standard_name' attributes, if any, when interpreting
-hyperslab and multi-slab options.  Also `--auxiliary'.  This switch
-supports hyperslabbing cell-based grids over coordinate ranges.  This
-works on datasets that associate coordinate variables to grid-mappings
-using the CF-convention (*note CF Conventions::) `coordinates' and
-`standard_name' attributes described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system).
-Currently, NCO understands auxiliary coordinate variables pointed to by
-the `standard_name' attributes for LATITUDE and LONGITUDE.  Cells that
-contain a value within the user-specified range
-[LON_MIN,LON_MAX,LAT_MIN,LAT_MAX] are included in the output hyperslab.
-
-   A cell-based grid collapses the horizontal spatial information
-(latitude and longitude) and stores it along a one-dimensional
-coordinate that has a one-to-one mapping to both latitude and longitude
-coordinates.  Rectangular (in longitude and latitude) horizontal
-hyperslabs cannot be selected using the typical procedure (*note
-Hyperslabs::) of separately specifying `-d' arguments for longitude and
-latitude.  Instead, when the `-X' is used, NCO learns the names of the
-latitude and longitude coordinates by searching the `standard_name'
-attribute of all variables until it finds the two variables whose
-`standard_name''s are "latitude" and "longitude", respectively.  This
-`standard_name' attribute for latitude and longitude coordinates
-follows the CF-convention (*note CF Conventions::).
-
-   Putting it all together, consider a variable GDS_3DVAR output from
-simulations on a cell-based geodesic grid.  Although the variable
-contains three dimensions of data (time, latitude, and longitude), it
-is stored in the netCDF file with only two dimensions, `time' and
-`gds_crd'.
-     % ncks -m -C -v gds_3dvar ~/nco/data/in.nc
-     gds_3dvar: type NC_FLOAT, 2 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 41
-     gds_3dvar RAM size is 10*8*sizeof(NC_FLOAT) = 80*4 = 320 bytes
-     gds_3dvar dimension 0: time, size = 10 NC_DOUBLE, dim. ID = 20 (CRD)(REC)
-     gds_3dvar dimension 1: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-     gds_3dvar attribute 0: long_name, size = 17 NC_CHAR, value = Geodesic variable
-     gds_3dvar attribute 1: units, size = 5 NC_CHAR, value = meter
-     gds_3dvar attribute 2: coordinates, size = 15 NC_CHAR, value = lat_gds lon_gds
-     gds_3dvar attribute 3: purpose, size = 64 NC_CHAR, value = Test auxiliary coordinates like those that define geodesic grids
-   The `coordinates' attribute lists the names of the latitude and
-longitude coordinates, `lat_gds' and `lon_gds', respectively.  The
-`coordinates' attribute is recommended though optional.  With it, the
-user can immediately identify which variables contain the latitude and
-longitude coordinates.  Without a `coordinates' attribute it would be
-unclear at first glance whether a variable resides on a cell-based grid.
-In this example, `time' is a normal record dimension and `gds_crd' is
-the cell-based dimension.
-
-   The cell-based grid file must contain two variables whose
-`standard_name' attributes are "latitude", and "longitude":
-     % ncks -m -C -v lat_gds,lon_gds ~/nco/data/in.nc
-     lat_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 37
-     lat_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-     lat_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-     lat_gds attribute 0: long_name, size = 8 NC_CHAR, value = Latitude
-     lat_gds attribute 1: standard_name, size = 8 NC_CHAR, value = latitude
-     lat_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-     lat_gds attribute 3: purpose, size = 62 NC_CHAR, value = 1-D latitude coordinate referred to by geodesic grid variables
-
-     lon_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 38
-     lon_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-     lon_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-     lon_gds attribute 0: long_name, size = 9 NC_CHAR, value = Longitude
-     lon_gds attribute 1: standard_name, size = 9 NC_CHAR, value = longitude
-     lon_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-     lon_gds attribute 3: purpose, size = 63 NC_CHAR, value = 1-D longitude coordinate referred to by geodesic grid variables
-   In this example `lat_gds' and `lon_gds' represent the latitude or
-longitude, respectively, of cell-based variables.  These coordinates
-(must) have the same single dimension (`gds_crd', in this case) as the
-cell-based variables.  And the coordinates must be
-one-dimensional--multidimensional coordinates will not work.
-
-   This infrastructure allows NCO to identify, interpret, and process
-(e.g., hyperslab) the variables on cell-based grids as easily as it
-works with regular grids.  To time-average all the values between zero
-and 180 degrees longitude and between plus and minus 30 degress
-latitude, we use
-     ncra -O -X 0.,180.,-30.,30. -v gds_3dvar in.nc out.nc
-   NCO accepts multiple `-X' arguments for cell-based grid multi-slabs,
-just as it accepts multiple `-d' arguments for multi-slabs of regular
-coordinates.
-     ncra -O -X 0.,180.,-30.,30. -X 270.,315.,45.,90. in.nc out.nc
-   The arguments to `-X' are always interpreted as floating point
-numbers, i.e., as coordinate values rather than dimension indices so
-that these two commands produce identical results
-     ncra -X 0.,180.,-30.,30. in.nc out.nc
-     ncra -X 0,180,-30,30 in.nc out.nc
-   In contrast, arguments to `-d' require decimal places to be
-recognized as coordinates not indices (*note Hyperslabs::).  We
-recommend always using decimal points with `-X' arguments to avoid
-confusion.
-
-
-File: nco.info,  Node: UDUnits Support,  Next: Rebasing Time Coordinate,  Prev: Auxiliary Coordinates,  Up: Common features
-
-3.19 UDUnits Support
-====================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-There is more than one way to hyperskin a cat.  The UDUnits
-(http://www.unidata.ucar.edu/packages/udunits) package provides a
-library which, if present, NCO uses to translate user-specified
-physical dimensions into the physical dimensions of data stored in
-netCDF files.  Unidata provides UDUnits under the same terms as netCDF,
-so sites should install both.  Compiling NCO with UDUnits support is
-currently optional but may become required in a future version of NCO.
-
-   Two examples suffice to demonstrate the power and convenience of
-UDUnits support.  First, consider extraction of a variable containing
-non-record coordinates with physical dimensions stored in MKS units.
-In the following example, the user extracts all wavelengths in the
-visible portion of the spectrum in terms of the units very frequently
-used in visible spectroscopy, microns:
-     % ncks -C -H -v wvl -d wvl,"0.4 micron","0.7 micron" in.nc
-     wvl[0]=5e-07 meter
-   The hyperslab returns the correct values because the WVL variable is
-stored on disk with a length dimension that UDUnits recognizes in the
-`units' attribute.  The automagical algorithm that implements this
-functionality is worth describing since understanding it helps one
-avoid some potential pitfalls.  First, the user includes the physical
-units of the hyperslab dimensions she supplies, separated by a simple
-space from the numerical values of the hyperslab limits.  She encloses
-each coordinate specifications in quotes so that the shell does not
-break the _value-space-unit_ string into separate arguments before
-passing them to NCO.  Double quotes (`"foo"') or single quotes
-(`'foo'') are equally valid for this purpose.  Second, NCO recognizes
-that units translation is requested because each hyperslab argument
-contains text characters and non-initial spaces.  Third, NCO determines
-whether the WVL is dimensioned with a coordinate variable that has a
-`units' attribute.  In this case, WVL itself is a coordinate variable.
-The value of its `units' attribute is `meter'.  Thus WVL passes this
-test so UDUnits conversion is attempted.  If the coordinate associated
-with the variable does not contain a `units' attribute, then NCO aborts.
-Fourth, NCO passes the specified and desired dimension strings (microns
-are specified by the user, meters are required by NCO) to the UDUnits
-library.  Fifth, the UDUnits library that these dimension are
-commensurate and it returns the appropriate linear scaling factors to
-convert from microns to meters to NCO.  If the units are incommensurate
-(i.e., not expressible in the same fundamental MKS units), or are not
-listed in the UDUnits database, then NCO aborts since it cannot
-determine the user's intent.  Finally, NCO uses the scaling information
-to convert the user-specified hyperslab limits into the same physical
-dimensions as those of the corresponding cooridinate variable on disk.
-At this point, NCO can perform a coordinate hyperslab using the same
-algorithm as if the user had specified the hyperslab without requesting
-units conversion.
-
-   The translation and dimensional innterpretation of time coordinates
-shows a more powerful, and probably more common, UDUnits application.
-In this example, the user prints all data between 4 PM and 7 PM on
-December 8, 1999, from a variable whose time dimension is hours since
-the year 1900:
-     % ncks -u -H -C -v time_udunits -d time_udunits,"1999-12-08 \
-       16:00:0.0","1999-12-08 19:00:0.0" in.nc
-     time_udunits[1]=876018 hours since 1900-01-01 00:00:0.0
-   Here, the user invokes the stride (*note Stride::) capability to
-obtain every other timeslice.  This is possible because the UDUnits
-feature is additive, not exclusive--it works in conjunction with all
-other hyperslabbing (*note Hyperslabs::) options and in all operators
-which support hyperslabbing.  The following example shows how one might
-average data in a time period spread across multiple input files
-     ncra -d time,"1939-09-09 12:00:0.0","1945-05-08 00:00:0.0" \
-       in1.nc in2.nc in3.nc out.nc
-   Note that there is no excess whitespace before or after the
-individual elements of the `-d' argument.  This is important since, as
-far as the shell knows, `-d' takes only _one_ command-line argument.
-Parsing this argument into its component `DIM,[MIN][,[MAX][,[STRIDE]]]'
-elements (*note Hyperslabs::) is the job of NCO.  When unquoted
-whitespace is present between these elements, the shell passes NCO
-arugment fragments which will not parse as intended.
-
-   NCO implemented support for the UDUnits2 library with version 3.9.2
-(August, 2007).  The UDUnits2
-(http://www.unidata.ucar.edu/software/udunits/udunits-2/udunits2.html)
-package supports non-ASCII characters and logarithmic units.  We are
-interested in user-feedback on these features.
-
-   One aspect that deserves mention is that UDUnits, and thus NCO,
-supports run-time definition of the location of the relevant UDUnits
-databases.  With UDUnits version 1, users may specify the directory
-which contains the UDUnits database, `udunits.dat', via the
-`UDUNITS_PATH' environment variable.  With UDUnits version 2, users may
-specify the UDUnits database file itself, `udunits2.xml', via the
-`UDUNITS2_XML_PATH' environment variable.
-     export UDUNITS_PATH='/nonstandard/location/share/udunits' # UDUnits1
-     export UDUNITS2_XML_PATH='/nonstandard/location/share/udunits/udunits2.xml' # UDUnits2
-   This run-time flexibility can enable the full functionality of
-pre-built binaries on machines with libraries in different locations.
-
-   The UDUnits (http://www.unidata.ucar.edu/packages/udunits) package
-documentation describes the supported formats of time dimensions.
-Among the metadata conventions which adhere to these formats are the
-Climate and Forecast (CF) Conventions (http://cf-pcmdi.llnl.gov) and the
-Cooperative Ocean/Atmosphere Research Data Service (COARDS) Conventions
-(http://ferret.wrc.noaa.gov/noaa_coop/coop_cdf_profile.html).  The
-following `-d arguments' extract the same data using commonly
-encountered time dimension formats:
-     -d time,"1918-11-11 11:00:0.0","1939-09-09 00:00:0.0"
-   All of these formats include at least one dash `-' in a non-leading
-character position (a dash in a leading character position is a
-negative sign).  NCO assumes that a non-leading dash in a limit string
-indicates that a UDUnits date conversion is requested.
-
-As of version 4.0.0 (January, 2010), NCO supports some calendar
-attributes specified by the CF conventions.
-*Supported types:  *
-     "365_day"/"noleap", "360_day", "gregorian", "standard"
-
-*Unsupported types:*
-     "366_day"/"all_leap","proleptic_gregorian","julian","none"
-   Unsupported types default to mixed Gregorian/Julian as defined by
-UDUnits.
-
-An Example: Consider the following netCDF variable
-
-     variables:
-       double lon_cal(lon_cal) ;
-         lon_cal:long_name = "lon_cal" ;
-         lon_cal:units = "days since 1964-2-28 0:0:0" ;
-         lon_cal:calendar = "365_day" ;
-     data:
-       lon_cal = 1,2,3,4,5,6,7,8,9,10;
-
-     So the command
-     "ncks -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' in.nc out.nc"
-     Results in the hyperslab lon_cal=1,2,3,4
-
-   netCDF variables should always be stored with MKS (i.e., God's)
-units, so that application programs may assume MKS dimensions apply to
-all input variables.  The UDUnits feature is intended to alleviate some
-of the NCO user's pain when handling MKS units.  It connects users who
-think in human-friendly units (e.g., miles, millibars, days) to extract
-data which are always stored in God's units, MKS (e.g., meters,
-Pascals, seconds).  The feature is not intended to encourage writers to
-store data in esoteric units (e.g., furlongs, pounds per square inch,
-fortnights).
-
-
-File: nco.info,  Node: Rebasing Time Coordinate,  Next: Missing Values,  Prev: UDUnits Support,  Up: Common features
-
-3.20 Rebasing Time Coordinate
-=============================
-
-Availability: `ncra', `ncrcat' Short options: None
-
-   Time re-basing is performed automatically when UDUnits is installed.
-Time rebasing is invoked when numerous files share a common time-based
-record coordinate, and the record coordinate is in the same time units
-in each file, but the date offset differs among files.  For example
-suppose the time coordinate is in hours and each day in January is
-stored in its own daily file.  Each daily file records the temperature
-variable `tpt(time)' with an (unadjusted) `time' coordinate value
-between 0-23 hours, and uses the `units' attribute to advance the base
-time:
-     file01.nc time:units="hours since 1990-1-1"
-     file02.nc time:units="hours since 1990-1-2"
-     ...
-     file31.nc time:units="hours since 1990-1-31"
-
-
-     // Find mean noontime temperature in January
-     ncra -v tpt -d time,"1990-1-1 12:00:00","1990-1-31 23:59:59",24 \
-           file??.nc noon.nc
-
-     // Concatenate day2 noon through day3 noon records
-     ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-           file01.nc file02.nc file03.nc noon.nc
-
-     // Results: time is "re-based" to the time units in "file01.nc"
-     time=36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
-          53, 54, 55, 56, 57, 58, 59 ;
-
-     // If we repeat the above command but with only two input files...
-     ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-           file02.nc file03 noon.nc
-
-     // ...then the output time coordinate is based on the time units in "file02.nc"
-     time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-         29, 30, 31, 32, 33, 34, 35 ;
-
-
-File: nco.info,  Node: Missing Values,  Next: Chunking,  Prev: Rebasing Time Coordinate,  Up: Common features
-
-3.21 Missing values
-===================
-
-Availability: `ncap2', `ncbo', `ncea', `ncflint', `ncpdq', `ncra',
-`ncwa'
-Short options: None
-
-   The phrase "missing data" refers to data points that are missing,
-invalid, or for any reason not intended to be arithmetically processed
-in the same fashion as valid data.  The NCO arithmetic operators
-attempt to handle missing data in an intelligent fashion.  There are
-four steps in the NCO treatment of missing data:
-  1. Identifying variables that may contain missing data.
-
-     NCO follows the convention that missing data should be stored with
-     the _FILLVALUE specified in the variable's `_FillValue' attributes.
-     The _only_ way NCO recognizes that a variable _may_ contain
-     missing data is if the variable has a `_FillValue' attribute.  In
-     this case, any elements of the variable which are numerically equal
-     to the _FILLVALUE are treated as missing data.
-
-     NCO adopted the behavior that the default attribute name, if any,
-     assumed to specify the value of data to ignore is `_FillValue'
-     with version 3.9.2 (August, 2007).  Prior to that, the
-     `missing_value' attribute, if any, was assumed to specify the
-     value of data to ignore.  Supporting both of these attributes
-     simultaneously is not practical.  Hence the behavior NCO once
-     applied to MISSING_VALUE it now applies to any _FILLVALUE.  NCO
-     now treats any MISSING_VALUE as normal data (1).
-
-     It has been and remains most advisable to create both `_FillValue'
-     and `missing_value' attributes with identical values in datasets.
-     Many legacy datasets contain only `missing_value' attributes.  NCO
-     can help migrating datasets between these conventions.  One may
-     use `ncrename' (*note ncrename netCDF Renamer::) to rename all
-     `missing_value' attributes to `_FillValue':
-          ncrename -a .missing_value,_FillValue inout.nc
-     Alternatively, one may use `ncatted' (*note ncatted netCDF
-     Attribute Editor::) to add a `_FillValue' attribute to all
-     variables
-          ncatted -O -a _FillValue,,o,f,1.0e36 inout.nc
-
-  2. Converting the _FILLVALUE to the type of the variable, if
-     neccessary.
-
-     Consider a variable VAR of type VAR_TYPE with a `_FillValue'
-     attribute of type ATT_TYPE containing the value _FILLVALUE.  As a
-     guideline, the type of the `_FillValue' attribute should be the
-     same as the type of the variable it is attached to.  If VAR_TYPE
-     equals ATT_TYPE then NCO straightforwardly compares each value of
-     VAR to _FILLVALUE to determine which elements of VAR are to be
-     treated as missing data.  If not, then NCO converts _FILLVALUE from
-     ATT_TYPE to VAR_TYPE by using the implicit conversion rules of C,
-     or, if ATT_TYPE is `NC_CHAR' (2), by typecasting the results of
-     the C function `strtod(_FILLVALUE)'.  You may use the NCO operator
-     `ncatted' to change the `_FillValue' attribute and all data whose
-     data is _FILLVALUE to a new value (*note ncatted netCDF Attribute
-     Editor::).
-
-  3. Identifying missing data during arithmetic operations.
-
-     When an NCO arithmetic operator processes a variable VAR with a
-     `_FillValue' attribute, it compares each value of VAR to
-     _FILLVALUE before performing an operation.  Note the _FILLVALUE
-     comparison imposes a performance penalty on the operator.
-     Arithmetic processing of variables which contain the `_FillValue'
-     attribute always incurs this penalty, even when none of the data
-     are missing.  Conversely, arithmetic processing of variables which
-     do not contain the `_FillValue' attribute never incurs this
-     penalty.  In other words, do not attach a `_FillValue' attribute
-     to a variable which does not contain missing data.  This
-     exhortation can usually be obeyed for model generated data, but it
-     may be harder to know in advance whether all observational data
-     will be valid or not.
-
-  4. Treatment of any data identified as missing in arithmetic
-     operators.
-
-     NCO averagers (`ncra', `ncea', `ncwa') do not count any element
-     with the value _FILLVALUE towards the average.  `ncbo' and
-     `ncflint' define a _FILLVALUE result when either of the input
-     values is a _FILLVALUE.  Sometimes the _FILLVALUE may change from
-     file to file in a multi-file operator, e.g., `ncra'.  NCO is
-     written to account for this (it always compares a variable to the
-     _FILLVALUE assigned to that variable in the current file).
-     Suffice it to say that, in all known cases, NCO does "the right
-     thing".
-
-     It is impossible to determine and store the correct result of a
-     binary operation in a single variable.  One such corner case
-     occurs when both operands have differing _FILLVALUE attributes,
-     i.e., attributes with different numerical values.  Since the
-     output (result) of the operation can only have one _FILLVALUE,
-     some information may be lost.  In this case, NCO always defines
-     the output variable to have the same _FILLVALUE as the first input
-     variable.  Prior to performing the arithmetic operation, all
-     values of the second operand equal to the second _FILLVALUE are
-     replaced with the first _FILLVALUE.  Then the arithmetic operation
-     proceeds as normal, comparing each element of each operand to a
-     single _FILLVALUE.  Comparing each element to two distinct
-     _FILLVALUE's would be much slower and would be no likelier to
-     yield a more satisfactory answer.  In practice, judicious choice
-     of _FILLVALUE values prevents any important information from being
-     lost.
-
-   ---------- Footnotes ----------
-
-   (1) The old functionality, i.e., where the ignored values are
-indicated by `missing_value' not `_FillValue', may still be selected
-_at NCO build time_ by compiling NCO with the token definition
-`CPPFLAGS='-DNCO_MSS_VAL_SNG=missing_value''.
-
-   (2) For example, the DOE ARM program often uses ATT_TYPE = `NC_CHAR'
-and _FILLVALUE = `-99999.'.
-
-
-File: nco.info,  Node: Chunking,  Next: Deflation,  Prev: Missing Values,  Up: Common features
-
-3.22 Chunking
-=============
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: none
-Long options: `--cnk_dmn DMN_NM,CNK_SZ', `--chunk_dimension
-DMN_NM,CNK_SZ'
-, `--cnk_map CNK_MAP', `--chunk_map CNK_MAP',
-`--cnk_plc CNK_PLC', `--chunk_policy CNK_PLC',
-`--cnk_scl CNK_SZ', `--chunk_scalar CNK_SZ'
-
-   All netCDF4-enabled NCO operators that define variables support a
-plethora of chunksize options.  Chunking can significantly accelerate
-or degrade read/write access to large datasets.  Dataset chunking
-issues are described in detail here
-(http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html).
-
-   The NCO chunking implementation is designed to be flexible.  Users
-control three aspects of the chunking implementation.  These are known
-as the "chunking policy", "chunking map", and "chunksize".  The first
-two are high-level mechanisms that apply to an entire file, while the
-third allows per-dimension specification of parameters.  The
-implementation is a hybrid of the `ncpdq' packing policies (*note ncpdq
-netCDF Permute Dimensions Quickly::), and the hyperslab specifications
-(*note Hyperslabs::).  Each aspect is intended to have a sensible
-default, so that most users will only need to set one switch to obtain
-sensible chunking.  Power users can tune the three switches in tandem
-to obtain optimal performance.
-
-   The user specifies the desired chunking policy with the `-P' switch
-(or its long option equivalents, `--cnk_plc' and `--chunk_policy') and
-its CNK_PLC argument.  Five chunking policies are currently implemented:
-"Chunk All Variables [_default_]"
-     Definition: Chunk all variables possible
-     Alternate invocation: `ncchunk'
-     CNK_PLC key values: `all', `cnk_all', `plc_all'
-     Mnemonic: All
-"Chunk Variables with at least Two Dimensions"
-     Definition: Chunk all variables possible with at least two
-     dimensions
-     Alternate invocation: none
-     CNK_PLC key values: `g2d', `cnk_g2d', `plc_g2d'
-     Mnemonic: _G_reater than or equal to _2_ _D_imensions
-"Chunk Variables with at least Three Dimensions"
-     Definition: Chunk all variables possible with at least three
-     dimensions
-     Alternate invocation: none
-     CNK_PLC key values: `g3d', `cnk_g3d', `plc_g3d'
-     Mnemonic: _G_reater than or equal to _3_ _D_imensions
-"Chunk Variables Containing Explicitly Chunked Dimensions"
-     Definition: Chunk all variables possible that contain at least one
-     dimension whose chunksize was explicitly set with the `--cnk_dmn'
-     option.  Alternate invocation: none
-     CNK_PLC key values: `xpl', `cnk_xpl', `plc_xpl'
-     Mnemonic: E_XPL_icitly specified dimensions
-"Unchunking"
-     Definition: Unchunk all variables
-     Alternate invocation: `ncunchunk'
-     CNK_PLC key values: `uck', `cnk_uck', `plc_uck', `unchunk'
-     Mnemonic: _U_n_C_hun_K_
-Equivalent key values are fully interchangeable.  Multiple equivalent
-options are provided to satisfy disparate needs and tastes of NCO users
-working with scripts and from the command line.
-
-   The chunking algorithms must know the chunksizes of each dimension of
-each variable to be chunked.  The correspondence between the input
-variable shape and the chunksizes is called the "chunking map".  The
-user specifies the desired chunking map with the `-M' switch (or its
-long option equivalents, `--cnk_map' and `--chunk_map') and its CNK_MAP
-argument.  Four chunking maps are currently implemented:
-"Chunksize Equals Dimension Size [_default_]"
-     Definition: Chunksize defaults to dimension size.  Explicitly
-     specify chunksizes for particular dimensions with `--cnk_dmn'
-     option.
-     CNK_MAP key values: `dmn', `cnk_dmn', `map_dmn'
-     Mnemonic: _D_i_M_e_N_sion
-"Chunksize Equals Dimension Size except Record Dimension"
-     Definition: Chunksize equals dimension size except record
-     dimension has size one.  Explicitly specify chunksizes for
-     particular dimensions with `--cnk_dmn' option.
-     CNK_MAP key values: `rd1', `cnk_rd1', `map_rd1'
-     Mnemonic: _R_ecord _D_imension size _1_
-"Chunksize Equals Scalar Size Specified"
-     Definition: Chunksize for all dimensions is set with the
-     `--cnk_scl' option.
-     CNK_MAP key values: `xpl', `cnk_xpl', `map_xpl'
-     Mnemonic: E_XPL_icitly specified dimensions
-"Chunksize Product Equals Scalar Size Specified"
-     Definition: The product of the chunksizes for each variable
-     (approximately) equals the size specified with the `--cnk_scl'
-     option.  For a variable of rank R (i.e., with R non-degenerate
-     dimensions), the chunksize in each non-degenerate dimension is the
-     Rth root of CNK_SCL.
-     CNK_MAP key values: `prd', `cnk_prd', `map_prd'
-     Mnemonic: _PR_o_D_uct
-It is possible to combine the above chunking map algorithms with
-user-specified per-dimension (but not per-variable) chunksizes that
-override specific chunksizes determined by the maps above.  The user
-specifies the per-dimension chunksizes with the (equivalent) long
-options `--cnk_dmn' or `--chunk_dimension').  The option takes two
-comma-separated arguments, DMN_NM,CNK_SZ, which are the dimension name
-and its chunksize, respectively.  The `--cnk_dmn' option may be used as
-many times as necessary.
-
-     # Simple chunking and unchunking
-     ncks -O -4 --cnk_plc=all     in.nc out.nc # Chunk in.nc
-     ncks -O -4 --cnk_plc=unchunk in.nc out.nc # Unchunk in.nc
-
-     # Chunk data then unchunk it, printing informative metadata
-     ncks -O -4 -D 4 --cnk_plc=all ~/nco/data/in.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-
-     # More complex chunking procedures, with informative metadata
-     ncks -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_scl=8 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_dmn lat,64 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-
-     # Chunking works with all operators...
-     ncap2 -O -4 -D 4 --cnk_scl=8 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc
-     ncbo -O -4 -D 4 --cnk_scl=8 -p ~/nco/data in.nc in.nc ~/foo.nc
-     ncecat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-     ncflint -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-     ncpdq -O -4 -D 4 -P all_new --cnk_scl=8 -L 5 ~/nco/data/in.nc ~/foo.nc
-     ncrcat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-     ncwa -O -4 -D 4 -a time --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-
-   It is appropriate to conclude by informing users about an aspect of
-chunking that may not be expected: Record dimensions are always chunked
-with a chunksize of one.  Hence all variables that contain the record
-dimension are also stored as chunked (since data must be stored with
-chunking either in all dimensions, or in no dimensions).  Unless
-otherwise specified by the user, the other (fixed, non-record)
-dimensions of such variables are assigned default chunk sizes.  The
-HDF5 layer does all this automatically to optimize the on-disk
-variable/file storage geometry of record variables.  Do not be
-surprised to learn that files created without any explicit instructions
-to activate chunking nevertheless contain chunked variables.
-
-
-File: nco.info,  Node: Deflation,  Next: Packed data,  Prev: Chunking,  Up: Common features
-
-3.23 Deflation
-==============
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-L'
-Long options: `--dfl_lvl', `--deflate'
-
-   All NCO operators that define variables support the netCDF4 feature
-of storing variables compressed with Lempel-Ziv deflation.  The
-Lempel-Ziv algorithm is a lossless data compression technique.
-Activate this deflation with the `-L DFL_LVL' short option (or with the
-same argument to the `--dfl_lvl' or `--deflate' long options).  Specify
-the deflation level DFL_LVL on a scale from no deflation (DFL_LVL = 0)
-to maximum deflation (DFL_LVL = 9).  Minimal deflation (DFL_LVL = 1)
-achieves considerable storage compression with little time penalty.
-Higher deflation levels require more time for compression.  File sizes
-resulting from minimal (DFL_LVL = 1) and maximal (DFL_LVL = 9)
-deflation levels typically differ by a few percent in size.
-
-   To compress an entire file using deflation, use
-     ncks -4 -L 0 in.nc out.nc # No deflation (fast, no time penalty)
-     ncks -4 -L 1 in.nc out.nc # Minimal deflation (little time penalty)
-     ncks -4 -L 9 in.nc out.nc # Maximal deflation (much slower)
-
-   Unscientific testing shows that deflation compresses typical climate
-datasets by 30-60%.  Packing, a lossy compression technique available
-for all netCDF files (see *note Packed data::), can easily compress
-files by 50%.  Packed data may be deflated to squeeze datasets by about
-80%:
-     ncks  -4 -L 1 in.nc out.nc # Minimal deflation (~30-60% compression)
-     ncks  -4 -L 9 in.nc out.nc # Maximal deflation (~31-63% compression)
-     ncpdq         in.nc out.nc # Standard packing  (~50% compression)
-     ncpdq -4 -L 9 in.nc out.nc # Deflated packing  (~80% compression)
-   `ncks' prints deflation parameters, if any, to screen (*note ncks
-netCDF Kitchen Sink::).
-
-
-File: nco.info,  Node: Packed data,  Next: Operation Types,  Prev: Deflation,  Up: Common features
-
-3.24 Packed data
-================
-
-Availability: `ncap2', `ncbo', `ncea', `ncflint', `ncpdq', `ncra',
-`ncwa'
-Short options: None
-
-   The phrase "packed data" refers to data which are stored in the
-standard netCDF3 packing format which employs a lossy algorithm.  See
-*note ncks netCDF Kitchen Sink:: for a description of deflation, a
-lossless compression technique available with netCDF4 only.  Packed
-data may be deflated to save additional space.
-
-Packing Algorithm
------------------
-
-"Packing" The standard netCDF packing algorithm is lossy, and produces
-data with the same dynamic range as the original but which requires no
-more than half the space to store.  The packed variable is stored
-(usually) as type `NC_SHORT' with the two attributes required to unpack
-the variable, `scale_factor' and `add_offset', stored at the original
-(unpacked) precision of the variable (1).  Let MIN and MAX be the
-minimum and maximum values of X.
-
-   SCALE_FACTOR = (MAX-MIN)/NDRV
-ADD_OFFSET = 0.5*(MIN+MAX)
-PCK = (UPK-ADD_OFFSET)/SCALE_FACTOR = (UPK-0.5*(MIN+MAX))*NDRV/(MAX-MIN)
-
-   where NDRV is the number of discrete representable values for given
-type of packed variable.  The theoretical maximum value for NDRV is two
-raised to the number of bits used to store the packed variable.  Thus
-if the variable is packed into type `NC_SHORT', a two-byte datatype,
-then there are at most 2^16 = 65536 distinct values representible.  In
-practice, the number of discretely representible values is taken to be
-two less than the theoretical maximum.  This leaves space for a missing
-value and solves potential problems with rounding that may occur during
-the unpacking of the variable.  Thus for `NC_SHORT', ndrv = 65536 - 2 =
-65534.  Less often, the variable may be packed into type `NC_CHAR',
-where ndrv = 256 - 2 = 254, or type `NC_INT' where where ndrv =
-4294967295 - 2 = 4294967293.  One useful feature of (lossy) netCDF
-packing algorithm is that additional, loss-less packing algorithms
-perform well on top of it.
-
-Unpacking Algorithm
--------------------
-
-"Unpacking" The unpacking algorithm depends on the presence of two
-attributes, `scale_factor' and `add_offset'.  If `scale_factor' is
-present for a variable, the data are multiplied by the value
-SCALE_FACTOR after the data are read.  If `add_offset' is present for a
-variable, then the ADD_OFFSET value is added to the data after the data
-are read.  If both `scale_factor' and `add_offset' attributes are
-present, the data are first scaled by SCALE_FACTOR before the offset
-ADD_OFFSET is added.
-
-   UPK = SCALE_FACTOR*PCK + ADD_OFFSET = (MAX-MIN)*PCK/NDRV +
-0.5*(MIN+MAX)
-
-   When `scale_factor' and `add_offset' are used for packing, the
-associated variable (containing the packed data) is typically of type
-`byte' or `short', whereas the unpacked values are intended to be of
-type `int', `float', or `double'.  An attribute's `scale_factor' and
-`add_offset' and `_FillValue', if any, should all be of the type
-intended for the unpacked data, i.e., `int', `float' or `double'.
-
-Default Handling of Packed Data
--------------------------------
-
-All NCO arithmetic operators understand packed data.  The operators
-automatically unpack any packed variable in the input file which will
-be arithmetically processed.  For example, `ncra' unpacks all record
-variables, and `ncwa' unpacks all variable which contain a dimension to
-be averaged.  These variables are stored unpacked in the output file.
-
-   On the other hand, arithmetic operators do not unpack non-processed
-variables.  For example, `ncra' leaves all non-record variables packed,
-and `ncwa' leaves packed all variables lacking an averaged dimension.
-These variables (called fixed variables) are passed unaltered from the
-input to the output file.  Hence fixed variables which are packed in
-input files remain packed in output files.  Completely packing and
-unpacking files is easily accomplished with `ncpdq' (*note ncpdq netCDF
-Permute Dimensions Quickly::).  Packing and unpacking individual
-variables may be done with `ncpdq' and the `ncap2' `pack()' and
-`unpack()' functions (*note Methods and functions::).
-
-   ---------- Footnotes ----------
-
-   (1) Although not a part of the standard, NCO enforces the policy
-that the `_FillValue' attribute, if any, of a packed variable is also
-stored at the original precision.
-
-
-File: nco.info,  Node: Operation Types,  Next: Type Conversion,  Prev: Packed data,  Up: Common features
-
-3.25 Operation Types
-====================
-
-Availability: `ncap2', `ncra', `ncea', `ncwa'
-Short options: `-y'
-Long options: `--operation', `--op_typ'
-The `-y OP_TYP' switch allows specification of many different types of
-operations Set OP_TYP to the abbreviated key for the corresponding
-operation:
-`avg'
-     Mean value
-
-`sqravg'
-     Square of the mean
-
-`avgsqr'
-     Mean of sum of squares
-
-`max'
-     Maximium value
-
-`min'
-     Minimium value
-
-`rms'
-     Root-mean-square (normalized by N)
-
-`rmssdn'
-     Root-mean square (normalized by N-1)
-
-`sqrt'
-     Square root of the mean
-
-`ttl'
-     Sum of values
-   NCO assumes coordinate variables represent grid axes, e.g.,
-longitude.  The only rank-reduction which makes sense for coordinate
-variables is averaging.  Hence NCO implements the operation type
-requested with `-y' on all non-coordinate variables, but not on
-coorniate variables.  When an operation requires a coordinate variable
-to be reduced in rank, i.e., from one dimension to a scalar or from one
-dimension to a degenerate (single value) array, then NCO _always
-averages_ the coordinate variable regardless of the arithmetic
-operation type performed on the non-coordinate variables.
-
-   The mathematical definition of each arithmetic operation is given
-below.  *Note ncwa netCDF Weighted Averager::, for additional
-information on masks and normalization.  If an operation type is not
-specified with `-y' then the operator performs an arithmetic average by
-default.  Averaging is described first so the terminology for the other
-operations is familiar.
-
-   _Note for Info users_: The definition of mathematical operations
-involving rank reduction (e.g., averaging) relies heavily on
-mathematical expressions which cannot be easily represented in Info.
-_See the printed manual (./nco.pdf) for much more detailed and complete
-documentation of this subject._
-
-   The definitions of some of these operations are not universally
-useful.  Mostly they were chosen to facilitate standard statistical
-computations within the NCO framework.  We are open to redefining and
-or adding to the above.  If you are interested in having other
-statistical quantities defined in NCO please contact the NCO project
-(*note Help Requests and Bug Reports::).
-
-EXAMPLES
-
-Suppose you wish to examine the variable `prs_sfc(time,lat,lon)' which
-contains a time series of the surface pressure as a function of
-latitude and longitude.  Find the minimium value of `prs_sfc' over all
-dimensions:
-     ncwa -y min -v prs_sfc in.nc foo.nc
-   Find the maximum value of `prs_sfc' at each time interval for each
-latitude:
-     ncwa -y max -v prs_sfc -a lon in.nc foo.nc
-   Find the root-mean-square value of the time-series of `prs_sfc' at
-every gridpoint:
-     ncra -y rms -v prs_sfc in.nc foo.nc
-     ncwa -y rms -v prs_sfc -a time in.nc foo.nc
-   The previous two commands give the same answer but `ncra' is
-preferred because it has a smaller memory footprint.  Also, by default,
-`ncra' leaves the (degenerate) `time' dimension in the output file
-(which is usually useful) whereas `ncwa' removes the `time' dimension
-(unless `-b' is given).
-
-These operations work as expected in multi-file operators.  Suppose
-that `prs_sfc' is stored in multiple timesteps per file across multiple
-files, say `jan.nc', `feb.nc', `march.nc'.  We can now find the three
-month maximium surface pressure at every point.
-     ncea -y max -v prs_sfc jan.nc feb.nc march.nc out.nc
-
-It is possible to use a combination of these operations to compute the
-variance and standard deviation of a field stored in a single file or
-across multiple files.  The procedure to compute the temporal standard
-deviation of the surface pressure at all points in a single file
-`in.nc' involves three steps.
-     ncwa -O -v prs_sfc -a time in.nc out.nc
-     ncbo -O -v prs_sfc in.nc out.nc out.nc
-     ncra -O -y rmssdn out.nc out.nc
-   First construct the temporal mean of `prs_sfc' in the file `out.nc'.
-Next overwrite `out.nc' with the anomaly (deviation from the mean).
-Finally overwrite `out.nc' with the root-mean-square of itself.  Note
-the use of `-y rmssdn' (rather than `-y rms') in the final step.  This
-ensures the standard deviation is correctly normalized by one fewer
-than the number of time samples.  The procedure to compute the variance
-is identical except for the use of `-y var' instead of `-y rmssdn' in
-the final step.
-
-   `ncap2' can also compute statistics like standard deviations.
-Brute-force implementation of formulae is one option, e.g.,
-     ncap2 -s 'prs_sfc_sdn=sqrt((prs_sfc-prs_sfc.avg($time)^2).total($time))/($time.size-1)'
-           in.nc out.nc
-   The operation may, of course, be broken into multiple steps in order
-to archive intermediate quantities, such as the time-anomalies
-     ncap2 -s 'prs_sfc_anm=prs_sfc-prs_sfc.avg($time)' \
-           -s 'prs_sfc_sdn=sqrt((prs_sfc_anm^2).total($time))/($time.size-1)' \
-           in.nc out.nc
-
-   `ncap2' supports intrinsic standard deviation functions (*note
-Operation Types::) which simplify the above expression to
-     ncap2 -s 'prs_sfc_sdn=(prs_sfc-prs_sfc.avg($time)).rmssdn($time)' in.nc out.nc
-   These instrinsic functions compute the answer quickly and concisely.
-
-   The procedure to compute the spatial standard deviation of a field
-in a single file `in.nc' involves three steps.
-     ncwa -O -v prs_sfc,gw -a lat,lon -w gw in.nc out.nc
-     ncbo -O -v prs_sfc,gw in.nc out.nc out.nc
-     ncwa -O -y rmssdn -v prs_sfc -a lat,lon -w gw out.nc out.nc
-   First the appropriately weighted (with `-w gw') spatial mean values
-are written to the output file.  This example includes the use of a
-weighted variable specified with `-w gw'.  When using weights to
-compute standard deviations one must remember to include the weights in
-the initial output files so that they may be used again in the final
-step.  The initial output file is then overwritten with the gridpoint
-deviations from the spatial mean.  Finally the root-mean-square of the
-appropriately weighted spatial deviations is taken.
-
-   The `ncap2' solution to the spatially-weighted standard deviation
-problem is
-     ncap2 -s 'prs_sfc_sdn=(prs_sfc*gw-prs_sfc*gw.avg($lat,$lon)).rmssdn($lat,$lon)' \
-           in.nc out.nc
-   Be sure to multiply the variable by the weight prior to computing the
-the anomalies and the standard deviation.
-
-   The procedure to compute the standard deviation of a time-series
-across multiple files involves one extra step since all the input must
-first be collected into one file.
-     ncrcat -O -v tpt in.nc in.nc foo1.nc
-     ncwa -O -a time foo1.nc foo2.nc
-     ncbo -O -v tpt foo1.nc foo2.nc foo3.nc
-     ncra -O -y rmssdn foo3.nc out.nc
-   The first step assembles all the data into a single file.  Though
-this may consume a lot of temporary disk space, it is more or less
-required by the `ncbo' operation in the third step.
-
-
-File: nco.info,  Node: Type Conversion,  Next: Batch Mode,  Prev: Operation Types,  Up: Common features
-
-3.26 Type Conversion
-====================
-
-Availability: `ncap2', `ncbo', `ncea', `ncra', `ncwa'
-Short options: None
-Type conversion (often called "promotion" or "demotion") refers to the
-casting of one fundamental data type to another, e.g., converting
-`NC_SHORT' (two bytes) to `NC_DOUBLE' (eight bytes).  Type conversion
-is automatic when the language carries out this promotion according to
-an internal set of rules without explicit user intervention.  In
-contrast, manual type conversion refers to explicit user commands to
-change the type of a variable or attribute.  Most type conversion
-happens automatically, yet there are situations in which manual type
-conversion is advantageous.
-
-* Menu:
-
-* Automatic type conversion::
-* Manual type conversion::
-
-
-File: nco.info,  Node: Automatic type conversion,  Next: Manual type conversion,  Prev: Type Conversion,  Up: Type Conversion
-
-3.26.1 Automatic type conversion
---------------------------------
-
-As a general rule, automatic type conversions should be avoided for at
-least two reasons.  First, type conversions are expensive since they
-require creating (temporary) buffers and casting each element of a
-variable from the type it was stored at to some other type.  Second,
-the dataset's creator probably had a good reason for storing data as,
-say, `NC_FLOAT' rather than `NC_DOUBLE'.  In a scientific framework
-there is no reason to store data with more precision than the
-observations were made.  Thus NCO tries to avoid performing automatic
-type conversions when performing arithmetic.
-
-   Automatic type conversion during arithmetic in the languages C and
-Fortran is performed only when necessary.  All operands in an operation
-are converted to the most precise type before the operation takes place.
-However, following this parsimonious conversion rule dogmatically
-results in numerous headaches.  For example, the average of the two
-`NC_SHORT's `17000s' and `17000s' results in garbage since the
-intermediate value which holds their sum is also of type `NC_SHORT' and
-thus cannot represent values greater than 32,767 (1).  There are valid
-reasons for expecting this operation to succeed and the NCO philosophy
-is to make operators do what you want, not what is most pure.  Thus,
-unlike C and Fortran, but like many other higher level interpreted
-languages, NCO arithmetic operators will perform automatic type
-conversion when all the following conditions are met (2):
-  1. The operator is `ncea', `ncra', or `ncwa'.  `ncbo' is not yet
-     included in this list because subtraction did not benefit from
-     type conversion.  This will change in the future
-
-  2. The arithmetic operation could benefit from type conversion.
-     Operations that could benefit (e.g., from larger representable
-     sums) include averaging, summation, or any "hard" arithmetic.
-     Type conversion does not benefit searching for minima and maxima
-     (`-y min', or `-y max').
-
-  3. The variable on disk is of type `NC_BYTE', `NC_CHAR', `NC_SHORT',
-     or `NC_INT'.  Type `NC_DOUBLE' is not type converted because there
-     is no type of higher precision to convert to.  Type `NC_FLOAT' is
-     not type converted because, in our judgement, the performance
-     penalty of always doing so would outweigh the (extremely rare)
-     potential benefits.
-
-   When these criteria are all met, the operator promotes the variable
-in question to type `NC_DOUBLE', performs all the arithmetic
-operations, casts the `NC_DOUBLE' type back to the original type, and
-finally writes the result to disk.  The result written to disk may not
-be what you expect, because of incommensurate ranges represented by
-different types, and because of (lack of) rounding.  First, continuing
-the above example, the average (e.g., `-y avg') of `17000s' and
-`17000s' is written to disk as `17000s'.  The type conversion feature
-of NCO makes this possible since the arithmetic and intermediate values
-are stored as `NC_DOUBLE's, i.e., `34000.0d' and only the final result
-must be represented as an `NC_SHORT'.  Without the type conversion
-feature of NCO, the average would have been garbage (albeit predictable
-garbage near `-15768s').  Similarly, the total (e.g., `-y ttl') of
-`17000s' and `17000s' written to disk is garbage (actually `-31536s')
-since the final result (the true total) of 34000 is outside the range
-of type `NC_SHORT'.
-
-   Type conversions use the `floor' function to convert floating point
-number to integers.  Type conversions do not attempt to round floating
-point numbers to the nearest integer.  Thus the average of `1s' and
-`2s' is computed in double precisions arithmetic as (`1.0d' +
-`1.5d')/2) = `1.5d'.  This result is converted to `NC_SHORT' and stored
-on disk as `floor(1.5d)' = `1s' (3).  Thus no "rounding up" is
-performed.  The type conversion rules of C can be stated as follows: If
-N is an integer then any floating point value X satisfying
-
-   n <= x < n+1
-
-   will have the value N when converted to an integer.
-
-   ---------- Footnotes ----------
-
-   (1)
-
-   32767 = 2^15-1
-
-   (2) Operators began performing type conversions before arithmetic in
-NCO version 1.2, August, 2000.  Previous versions never performed
-unnecessary type conversion for arithmetic.
-
-   (3) The actual type conversions are handled by intrinsic C-language
-type conversion, so the `floor()' function is not explicitly called,
-though the results would be the same if it were.
-
-
-File: nco.info,  Node: Manual type conversion,  Prev: Automatic type conversion,  Up: Type Conversion
-
-3.26.2 Manual type conversion
------------------------------
-
-`ncap2' provides intrinsic functions for performing manual type
-conversions.  This, for example, converts variable `tpt' to external
-type `NC_SHORT' (a C-type `short'), and variable `prs' to external type
-`NC_DOUBLE' (a C-type `double').
-     ncap2 -s 'tpt=short(tpt);prs=double(prs)' in.nc out.nc
-   *Note ncap2 netCDF Arithmetic Processor::, for more details.
-
-
-File: nco.info,  Node: Batch Mode,  Next: History Attribute,  Prev: Type Conversion,  Up: Common features
-
-3.27 Batch Mode
-===============
-
-Availability: All operators
-Short options: `-O', `-A'
-Long options: `--ovr', `--overwrite', `--apn', `--append'
-If the OUTPUT-FILE specified for a command is a pre-existing file, then
-the operator will prompt the user whether to overwrite (erase) the
-existing OUTPUT-FILE, attempt to append to it, or abort the operation.
-However, interactive questions reduce productivity when processing large
-amounts of data.  Therefore NCO also implements two ways to override
-its own safety features, the `-O' and `-A' switches.  Specifying `-O'
-tells the operator to overwrite any existing OUTPUT-FILE without
-prompting the user interactively.  Specifying `-A' tells the operator
-to attempt to append to any existing OUTPUT-FILE without prompting the
-user interactively.  These switches are useful in batch environments
-because they suppress interactive keyboard input.
-
-
-File: nco.info,  Node: History Attribute,  Next: File List Attributes,  Prev: Batch Mode,  Up: Common features
-
-3.28 History Attribute
-======================
-
-Availability: All operators
-Short options: `-h'
-Long options: `--hst', `--history'
-All operators automatically append a `history' global attribute to any
-file they create or modify.  The `history' attribute consists of a
-timestamp and the full string of the invocation command to the
-operator, e.g., `Mon May 26 20:10:24 1997: ncks in.nc foo.nc'.  The
-full contents of an existing `history' attribute are copied from the
-first INPUT-FILE to the OUTPUT-FILE.  The timestamps appear in reverse
-chronological order, with the most recent timestamp appearing first in
-the `history' attribute.  Since NCO and many other netCDF operators
-adhere to the `history' convention, the entire data processing path of
-a given netCDF file may often be deduced from examination of its
-`history' attribute.  As of May, 2002, NCO is case-insensitive to the
-spelling of the `history' attribute name.  Thus attributes named
-`History' or `HISTORY' (which are non-standard and not recommended)
-will be treated as valid history attributes.  When more than one global
-attribute fits the case-insensitive search for "history", the first one
-found will be used.  `history' attribute To avoid information overkill,
-all operators have an optional switch (`-h', `--hst', or `--history')
-to override automatically appending the `history' attribute (*note
-ncatted netCDF Attribute Editor::).  Note that the `-h' switch also
-turns off writing the `nco_input_file_list' attribute for multi-file
-operators (*note File List Attributes::).
-
-
-File: nco.info,  Node: File List Attributes,  Next: CF Conventions,  Prev: History Attribute,  Up: Common features
-
-3.29 File List Attributes
-=========================
-
-Availability: `ncea', `ncecat', `ncra', `ncrcat'
-Short options: `-H'
-Long options: `--fl_lst_in', `--file_list'
-Many methods of specifying large numbers of input file names pass these
-names via pipes, encodings, or argument transfer programs (*note Large
-Numbers of Files::).  When these methods are used, the input file list
-is not explicitly passed on the command line.  This results in a loss
-of information since the `history' attribute no longer contains the
-exact command by which the file was created.
-
-   NCO solves this dilemma by archiving input file list attributes.
-When the input file list to a multi-file operator is specified via
-`stdin', the operator, by default, attaches two global attributes to
-any file they create or modify.  The `nco_input_file_number' global
-attribute contains the number of input files, and `nco_input_file_list'
-contains the file names, specified as standard input to the multi-file
-operator.  This information helps to verify that all input files the
-user thinks were piped through `stdin' actually arrived.  Without the
-`nco_input_file_list' attribute, the information is lost forever and
-the "chain of evidence" would be broken.
-
-   The `-H' switch overrides (turns off) the default behavior of
-writing the input file list global attributes when input is from
-`stdin'.  The `-h' switch does this too, and turns off the `history'
-attribute as well (*note History Attribute::).  Hence both switches
-allows space-conscious users to avoid storing what may amount to many
-thousands of filenames in a metadata attribute.
-
-
-File: nco.info,  Node: CF Conventions,  Next: ARM Conventions,  Prev: File List Attributes,  Up: Common features
-
-3.30 CF Conventions
-===================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncpdq', `ncra',
-`ncwa'
-Short options: None
-NCO recognizes the Climate and Forecast (CF) metadata conventions, and
-applies special rules to such data.  NCO also handles older NCAR model
-datasets, such as CCM and early CCSM datasets, with its CF rules even
-though the earlier data may not contain an explicit `Conventions'
-attribute (e.g., `CF-1.0').  We refer to all such data collectively as
-CF data.  Skip this section if you never work with CF data.
-
-   The CF netCDF conventions are described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system).
-Most CF netCDF conventions are transparent to NCO (1).  There are no
-known pitfalls associated with using any NCO operator on files adhering
-to these conventions (2).  However, to facilitate maximum user
-friendliness, NCO applies special rules to certain variables in CF
-files.  The special functions are not required by the CF netCDF
-conventions, yet experience shows that they simplify data analysis.
-
-   Currently, NCO determines whether a datafile is a CF output datafile
-simply by checking (case-insensitively) whether the value of the global
-attribute `Conventions' (if any) equals `CF-1.0' or `NCAR-CSM' Should
-`Conventions' equal either of these in the (first) INPUT-FILE, NCO will
-apply special rules to certain variables because of their usual meaning
-in CF files.  NCO will not average the following variables often found
-in CF files: `ntrm', `ntrn', `ntrk', `ndbase', `nsbase', `nbdate',
-`nbsec', `mdt', `mhisf'.  These variables contain scalar metadata such
-as the resolution of the host geophysical model and it makes no sense
-to change their values.
-
-   Furthermore, the "size and rank-preserving arithmetic operators" try
-not to operate on certain grid properties.  These operators are `ncap',
-`ncbo', `ncea', `ncflint', and `ncpdq' (when used for packing, not for
-permutation).  These operators do not operate, by default, on (i.e.,
-add, subtract, pack, etc.) the following variables: `ORO', `area',
-`datesec', `date', `gw', `hyai', `hyam', `hybi'.  `hybm', `lat_bnds',
-`lon_bnds', `msk_*'.  These variables represent the Gaussian weights,
-the orography field, time fields, hybrid pressure coefficients, and
-latititude/longitude boundaries.  We call these fields non-coordinate
-"grid properties".  Coordinate grid properties are easy to identify
-because they are coordinate variables such as `latitude' and
-`longitude'.
-
-   Users usually want _all_ grid properties to remain unaltered in the
-output file.  To be treated as a grid property, the variable name must
-_exactly_ match a name in the above list, or be a coordinate variable.
-The handling of `msk_*' is exceptional in that _any_ variable name
-beginning with the string `msk_' is considered to be a "mask" and is
-thus preserved (not operated on arithmetically).
-
-   You must spoof NCO if you would like any grid properties or other
-special CF fields processed normally.  For example rename the variables
-first with `ncrename', or alter the `Conventions' attribute.
-
-   As of NCO version 4.0.8 (April, 2011), NCO supports the CF `bounds'
-convention for cell boundaries described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries).
-This convention allows coordinate variables (including multidimensional
-coordinates) to describe the boundaries of their cells.  This is done
-by naming the variable which contains the bounds in in the `bounds'
-attribute.  Note that coordinates of rank N have bounds of rank N+1.
-NCO-generated subsets of CF-compliant files with `bounds' attributes
-will include the coordinates specified by the `bounds' attribute, if
-any.  Hence the subsets will themselves be CF-compliant.
-
-   As of NCO version 3.9.6 (January, 2009), NCO supports the CF
-`coordinates' convention described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system).
-This convention allows variables to specify additional coordinates
-(including multidimensional coordinates) in a space-separated string
-attribute named `coordinates'.  NCO attaches any such coordinates to
-the extraction list along with variable and its usual (one-dimensional)
-coordinates, if any.  These auxiliary coordinates are subject to the
-user-specified overrides described in *note Subsetting Coordinate
-Variables::.
-
-   ---------- Footnotes ----------
-
-   (1) The exception is appending/altering the attributes `x_op',
-`y_op', `z_op', and `t_op' for variables which have been averaged
-across space and time dimensions.  This feature is scheduled for future
-inclusion in NCO.
-
-   (2) The CF conventions recommend `time' be stored in the format TIME
-since BASE_TIME, e.g., the `units' attribute of `time' might be `days
-since 1992-10-8 15:15:42.5 -6:00'.  A problem with this format occurs
-when using `ncrcat' to concatenate multiple files together, each with a
-different BASE_TIME.  That is, any `time' values from files following
-the first file to be concatenated should be corrected to the BASE_TIME
-offset specified in the `units' attribute of `time' from the first file.
-The analogous problem has been fixed in ARM files (*note ARM
-Conventions::) and could be fixed for CF files if there is sufficient
-lobbying.
-
-
-File: nco.info,  Node: ARM Conventions,  Next: Operator Version,  Prev: CF Conventions,  Up: Common features
-
-3.31 ARM Conventions
-====================
-
-Availability: `ncrcat'
-Short options: None
-`ncrcat' has been programmed to correctly handle data files which
-utilize the Atmospheric Radiation Measurement (ARM) Program convention
-(http://www.arm.gov/data/time.stm) for time and time offsets.  If you
-do not work with ARM data then you may skip this section.  ARM data
-files store time information in two variables, a scalar, `base_time',
-and a record variable, `time_offset'.  Subtle but serious problems can
-arise when these type of files are just blindly concatenated.
-Therefore `ncrcat' has been specially programmed to be able to chain
-together consecutive ARM INPUT-FILES and produce and an OUTPUT-FILE
-which contains the correct time information.  Currently, `ncrcat'
-determines whether a datafile is an ARM datafile simply by testing for
-the existence of the variables `base_time', `time_offset', and the
-dimension `time'.  If these are found in the INPUT-FILE then `ncrcat'
-will automatically perform two non-standard, but hopefully useful,
-procedures.  First, `ncrcat' will ensure that values of `time_offset'
-appearing in the OUTPUT-FILE are relative to the `base_time' appearing
-in the first INPUT-FILE (and presumably, though not necessarily, also
-appearing in the OUTPUT-FILE).  Second, if a coordinate variable named
-`time' is not found in the INPUT-FILES, then `ncrcat' automatically
-creates the `time' coordinate in the OUTPUT-FILE.  The values of `time'
-are defined by the ARM conventions TIME = BASE_TIME + TIME_OFFSET.
-Thus, if OUTPUT-FILE contains the `time_offset' variable, it will also
-contain the `time' coordinate.  A short message is added to the
-`history' global attribute whenever these ARM-specific procedures are
-executed.
-
-
-File: nco.info,  Node: Operator Version,  Prev: ARM Conventions,  Up: Common features
-
-3.32 Operator Version
-=====================
-
-Availability: All operators
-Short options: `-r'
-Long options: `--revision', `--version', or `--vrs'
-All operators can be told to print their version information, library
-version, copyright notice, and compile-time configuration with the `-r'
-switch, or its long-option equivalent `revision'.  The `--version' or
-`--vrs' switches print the operator version information only.  The
-internal version number varies between operators, and indicates the
-most recent change to a particular operator's source code.  This is
-useful in making sure you are working with the most recent operators.
-The version of NCO you are using might be, e.g., `3.9.5'.  Using `-r'
-on, say, `ncks', produces something like `NCO netCDF Operators version
-"3.9.5" last modified 2008/05/11 built May 12 2008 on neige by zender
-Copyright (C) 1995--2008 Charlie Zender ncks version 20090918'.  This
-tells you that `ncks' contains all patches up to version `3.9.5', which
-dates from May 11, 2008.
-
-
-File: nco.info,  Node: Operator Reference Manual,  Next: Contributing,  Prev: Common features,  Up: Top
-
-4 Operator Reference Manual
-***************************
-
-This chapter presents reference pages for each of the operators
-individually.  The operators are presented in alphabetical order.  All
-valid command line switches are included in the syntax statement.
-Recall that descriptions of many of these command line switches are
-provided only in *note Common features::, to avoid redundancy.  Only
-options specific to, or most useful with, a particular operator are
-described in any detail in the sections below.
-
-* Menu:
-
-* ncap2 netCDF Arithmetic Processor::
-* ncatted netCDF Attribute Editor::
-* ncbo netCDF Binary Operator::
-* ncea netCDF Ensemble Averager::
-* ncecat netCDF Ensemble Concatenator::
-* ncflint netCDF File Interpolator::
-* ncks netCDF Kitchen Sink::
-* ncpdq netCDF Permute Dimensions Quickly::
-* ncra netCDF Record Averager::
-* ncrcat netCDF Record Concatenator::
-* ncrename netCDF Renamer::
-* ncwa netCDF Weighted Averager::
-
-
-File: nco.info,  Node: ncap2 netCDF Arithmetic Processor,  Next: ncatted netCDF Attribute Editor,  Prev: Operator Reference Manual,  Up: Operator Reference Manual
-
-4.1 `ncap2' netCDF Arithmetic Processor
-=======================================
-
-`ncap2' understands a relatively full-featured language of operations,
-including loops, conditionals, arrays, and math functions.  `ncap2' is
-the most rapidly changing NCO operator and its documentation is
-incomplete.  The distribution file `data/ncap2_tst.nco' contains an
-up-to-date overview of its syntax and capabilities.  The `data/*.nco'
-distribution files (especially `bin_cnt.nco', `psd_wrf.nco', and
-`rgr.nco') contain in-depth examples of `ncap2' solutions to complex
-problems.
-
-SYNTAX
-     ncap2 [-3] [-4] [-6] [-A] [-C] [-c] [-D DBG] [-F] [-f] [-L DFL_LVL]
-     [-l PATH] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-s ALGEBRA] [-S FL.NCO] [-t THR_NBR] [-v]
-     INPUT-FILE [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncap2' arithmetically processes netCDF files (1).  The processing
-instructions are contained either in the NCO script file `fl.nco' or in
-a sequence of command line arguments.  The options `-s' (or long
-options `--spt' or `--script') are used for in-line scripts and `-S'
-(or long options `--fl_spt' or `--script-file') are used to provide the
-filename where (usually multiple) scripting commands are pre-stored.
-`ncap2' was written to perform arbitrary algebraic transformations of
-data and archive the results as easily as possible.  *Note Missing
-Values::, for treatment of missing values.  The results of the
-algebraic manipulations are called "derived fields".
-
-   Unlike the other operators, `ncap2' does not accept a list of
-variables to be operated on as an argument to `-v' (*note Subsetting
-Variables::).  Rather, the `-v' switch takes no arguments and indicates
-that `ncap2' should output _only_ user-defined variables.  `ncap2'
-neither accepts nor understands the -X switch.
-
-* Menu:
-
-* Syntax of ncap2 statements::
-* Expressions::
-* Dimensions::
-* Left hand casting::
-* Arrays and hyperslabs::
-* Attributes::
-* Number literals::
-* if statement::
-* print statement::
-* Missing values ncap2::
-* Methods and functions::
-* RAM variables::
-* Where statement::
-* Loops::
-* Include files::
-* Sort methods::
-* Irregular grids::
-* Bilinear interpolation::
-* GSL special functions::
-* GSL interpolation::
-* GSL least-squares fitting::
-* GSL statistics::
-* GSL random number generation::
-* Examples ncap2::
-* Intrinsic mathematical methods::
-* Operators precedence and associativity ::
-* ID Quoting::
-
-   Defining new variables in terms of existing variables is a powerful
-feature of `ncap2'.  Derived fields inherit the metadata (i.e.,
-attributes) of their ancestors, if any, in the script or input file.
-When the derived field is completely new (no identically-named ancestors
-exist), then it inherits the metadata (if any) of the left-most variable
-on the right hand side of the defining expression.  This metadata
-inheritance is called "attribute propagation".  Attribute propagation
-is intended to facilitate well-documented data analysis, and we welcome
-suggestions to improve this feature.
-
-   The only exception to this rule of attribute propagation is in cases
-of left hand casting (*note Left hand casting::).  The user must
-manually define the proper metadata for variables defined using left
-hand casting.
-
-   ---------- Footnotes ----------
-
-   (1) `ncap2' is the successor to `ncap' which was put into
-maintenance mode in November, 2006.  This documentation refers to
-`ncap2', which has a superset of the `ncap' functionality.  Eventually
-`ncap' will be deprecated in favor `ncap2'.  `ncap2' may be renamed
-`ncap' in 2011.
-
-
-File: nco.info,  Node: Syntax of ncap2 statements,  Next: Expressions,  Prev: ncap2 netCDF Arithmetic Processor,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.1 Syntax of `ncap2' statements
-----------------------------------
-
-Mastering `ncap2' is relatively simple.  Each valid statement STATEMENT
-consists of standard forward algebraic expression.  The `fl.nco', if
-present, is simply a list of such statements, whitespace, and comments.  The
-syntax of statements is most like the computer language C.  The
-following characteristics of C are preserved:
-Array syntax
-     Arrays elements are placed within `[]' characters;
-
-Array indexing
-     Arrays are 0-based;
-
-Array storage
-     Last dimension is most rapidly varying;
-
-Assignment statements
-     A semi-colon `;' indicates the end of an assignment statement.
-
-Comments
-     Multi-line comments are enclosed within `/* */' characters.
-     Single line comments are preceded by `//' characters.
-
-Nesting
-     Files may be nested in scripts using `#include SCRIPT'.  Note that
-     the `#include' command is not followed by a semi-colon because it
-     is a pre-processor directive, not an assignment statement.  The
-     filename `script' is interpreted relative to the run directory.
-
-Attribute syntax
-     The at-sign `@' is used to delineate an attribute name from a
-     variable name.
-
-
-File: nco.info,  Node: Expressions,  Next: Dimensions,  Prev: Syntax of ncap2 statements,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.2 Expressions
------------------
-
-Expressions are the fundamental building block of `ncap2'.  Expressions
-are composed of variables, numbers, literals, and attributes.  The
-following C operators are "overloaded" and work with scalars and
-multi-dimensional arrays:
-     Arithmetic Operators: * / % + - ^
-     Binary Operators:     > >= < <= == != == || && >> <<
-     Unary Operators:      + - ++ -- !
-     Conditional Operator: exp1 ? exp2 : exp3
-     Assign Operators:     = += -= /= *=
-
-   In the following section a "variable" also refers to a number
-literal which is read in as a scalar variable:
-
-   *Arithmetic and Binary Operators *
-
-   Consider _var1 'op' var2_
-
-   *Precision*
-   * When both operands are variables, the result has the precision of
-     the higher precision operand.
-
-   * When one operand is a variable and the other an attribute, the
-     result has the precision of the variable.
-
-   * When both operands are attributes, the result has the precision of
-     the more precise attribute.
-
-   * The exponentiation operator "^" is an exception to the above rules.
-     When both operands have type less than `NC_FLOAT', the result is
-     `NC_FLOAT'.  When either type is `NC_DOUBLE', the result is also
-     `NC_DOUBLE'.
-
-   *Rank*
-   * The Rank of the result is generally equal to Rank of the operand
-     that has the greatest number of dimensions.
-
-   * If the dimensions in var2 are a subset of the dimensions in var1
-     then its possible to  make var2 conform to var1 through
-     broadcasting and or dimension reordering.
-
-   * Broadcasting a variable means creating data in non-existing
-     dimensions from the data in existing dimensions.
-
-   * More specifically: If the numbers of dimensions in var1 is greater
-     than or equal to the number of dimensions in var2 then an attempt
-     is made to make var2 conform to var1 ,else var1 is made to conform
-     to var2. If conformance  is not possible then an error message
-     will be emitted and script execution will cease.
-
-Even though the logical operators return True(1) or False(0) they are
-treated in the same way as the arithmetic operators with regard to
-precision and rank.
-Examples:
-
-     dimensions: time=10, lat=2, lon=4
-     Suppose we have the two variables:
-
-     double  P(time,lat,lon);
-     float   PZ0(lon,lat);  // PZ0=1,2,3,4,5,6,7,8;
-
-     Consider now the expression:
-      PZ=P-PZ0
-
-     PZ0 is made to conform to P and the result is
-     PZ0 =
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-
-     Once the expression is evaluated then PZ will be of type double;
-
-     Consider now
-      start=four-att_var at double_att;  // start =-69  and is of type intger;
-      four_pow=four^3.0f               // four_pow=64 and is of type float
-      three_nw=three_dmn_var_sht*1.0f; // type is now float
-      start at n1=att_var at short_att*att_var at int_att;
-                                       // start at n1=5329 and is type int
-
-*Binary Operators*
-Unlike C the binary operators return an array of values.  There is no
-such thing as short circuiting with the AND/OR operators.  Missing
-values are carried into the result in the same way they are with the
-arithmetic operators.  When an expression is evaluated in an if() the
-missing values are treated as true.
-The binary operators are, in order of precedence:
-
-     !   Logical Not
-     ----------------------------
-     <<  Less Than Selection
-     >>  Greater Than Selection
-     ----------------------------
-     >   Greater than
-     >=  Greater than or equal to
-     <   Less than
-     <=  Less than or equal to
-     ----------------------------
-     ==  Equal to
-     !=  Not equal to
-     ----------------------------
-     &&  Logical AND
-     ----------------------------
-     ||  Logical OR
-     ----------------------------
-
-   To see all operators: *note Operators precedence and associativity::
-Examples:
-     tm1= time>2 && time <7;  // tm1 = 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ; type double;
-     tm2= time==3 || time>=6; // tm2 = 0, 0, 1, 0, 0, 1, 1, 1, 1, 1 ; type double
-     tm3= int(!tm1);          // tm3=  1, 1, 0, 0, 0, 0, 1, 1, 1, 1 ; type int
-     tm4= tm1 && tm2;         // tm4=  0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ; type double;
-     tm5= !tm4;               // tm5=  1, 1, 0, 1, 1, 0, 1, 1, 1, 1 ; type double;
-
-*Regular Assign Operator*
-_var1 '=' exp1_
-If var1 doesn't already exist in Output then var1 is written to Output
-with the values and dimensions from expr1. If var1 already exists in
-Output, then the only requirement on expr1 is that the number of
-elements must match the number already on disk. The type of expr1 is
-converted if necessary to the disk type.
-
-* Other Assign Operators +=,-=,*=./= *
-_var1 'ass_op' exp1 _
-if exp1 is a variable and it doesn't conform to var1 then an attempt is
-made to make it conform to var1. If exp1 is an attribute it must have
-unity size or else have the same number of elements as var1. If expr1
-has a different type to var1 the it is converted to the var1 type.
-
-   example:
-
-     z1=four+=one*=10 // z1=14 four=14 one=10;
-     time-=2          // time= -1,0,1,2,3,4,5,6,7,8
-
-*Increment/ Decrement Operators
-* These work in a similar fashion to their regular C counterparts. If
-say the variable "four" is input only then the statement "++four"
-effectively means -read four from input increment each element by one ,
-then write the new values to Output;
-
-   Example:
-     n2=++four;   n2=5, four=5
-     n3=one--+20; n3=21  one=0;
-     n4=--time;   n4=time=0.,1.,2.,3.,4.,5.,6.,7.,8.,9.;
-
-*Conditional Operator ?: *
-_exp1 ? exp2 : exp3 _
-The conditional operator (or ternary Operator) is a succinct way of
-writing an if/then/else. If exp1 evaluates to true then exp2 is
-returned else exp3 is returned.
-
-   Example:
-     weight_avg= weight.avg();
-     weight_avg at units= (weight_avg ==1 ? "kilo" : "kilos");
-     PS_nw= PS - (PS.min() >100000 ? 100000 : 0 );
-
-*Clipping Operators* 
-<< Less-than Clipping
-     For arrays, the less-than selection operator selects all values in
-     the left operand that are less than the corresponding value in the
-     right operand.  If the value of the left side is greater than or
-     equal to the corresponding value of the right side, then the right
-     side value is placed in the result
-
->> Greater-than Clipping
-     For arrays, the greater-than selection operator selects all values
-     in the left operand that are greater than the corresponding value
-     in the right operand.  If the value of the left side is less than
-     or equal to the corresponding value of the right side, then the
-     right side value is placed in the result.
-
-   Example:
-     RDM2= RDM >>100.0; RDM2=100,100,100,100,126,126,100,100,100, 100; // type double
-     RDM2= RDM << 90s ; RDM3=  1,  9, 36, 84, 90, 90, 84, 36,  9,   1; // type int
-
-
-File: nco.info,  Node: Dimensions,  Next: Left hand casting,  Prev: Expressions,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.3 Dimensions
-----------------
-
-Dimensions are defined in Output using the `defdim()' function.
-     defdim("cnt",10);
-
-   This dimension name must then be prefixed with a dollar-sign `$'
-when referred to in method arguments or left-hand-casting, e.g.,
-     new_var[$cnt]=time;
-     temperature[$time,$lat,$lon]=35.5;
-     temp_avg=temperature.avg($time);
-
-   The `size' method allows the dimension size to be used in an
-arithmetic expression:
-     time_avg=time.total() / $time.size;
-
-   Increase the size of a new variable by one and set new member to
-zero:
-     defdim("cnt_new",$cnt.size+1);
-     new_var[$cnt_new]=0.0;
-     new_var(0:($cnt_new.size-2))=old_var;
-
-*Dimension Abbreviations
-* It is possible to use dimension abbreviations as method arguments:
-`$0' is the first dimension of a variable
-`$1' is the second dimension of a variable
-`$n' is the n+1 dimension of a variable
-     float four_dmn_rec_var(time,lat,lev,lon);
-     double three_dmn_var_dbl(time,lat,lon);
-
-     four_nw=four_dmn_rev_var.reverse($time,$lon)
-     four_nw=four_dmn_rec_var.reverse($0,$3);
-
-     four_avg=four_dmn_rec_var.avg($lat,$lev);
-     four_avg=four_dmn_rec_var.avg($1,$2);
-
-     three_mw=three_dmn_var_dbl.permute($time,$lon,$lat);
-     three_mw=three_dmn_var_dbl.permute($0,$2,$1);
-
-*ID Quoting
-* If the dimension name contains non-regular characters use ID quoting.
-See *note ID Quoting::
-     defdim("a--list.A",10);
-     A1['$a--list.A']=30.0;
-
-*GOTCHA
-* It is not possible to manually define in Output any dimensions that
-exist in Input. When a variable from Input appears in an expression or
-statement its  dimensions in Input are  automagically copied to Output
-(if they are not already present)
-
-
-File: nco.info,  Node: Left hand casting,  Next: Arrays and hyperslabs,  Prev: Dimensions,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.4 Left hand casting
------------------------
-
-The following examples demonstrate the utility of the "left hand
-casting" ability of `ncap2'.  Consider first this simple, artificial,
-example.  If LAT and LON are one dimensional coordinates of dimensions
-LAT and LON, respectively, then addition of these two one-dimensional
-arrays is intrinsically ill-defined because whether LAT_LON should be
-dimensioned LAT by LON or LON by LAT is ambiguous (assuming that
-addition is to remain a "commutative" procedure, i.e., one that does
-not depend on the order of its arguments).  Differing dimensions are
-said to be "orthogonal" to one another, and sets of dimensions which
-are mutually exclusive are orthogonal as a set and any arithmetic
-operation between variables in orthogonal dimensional spaces is
-ambiguous without further information.
-
-   The ambiguity may be resolved by enumerating the desired dimension
-ordering of the output expression inside square brackets on the left
-hand side (LHS) of the equals sign.  This is called "left hand casting"
-because the user resolves the dimensional ordering of the RHS of the
-expression by specifying the desired ordering on the LHS.
-     ncap2 -s 'lat_lon[lat,lon]=lat+lon' in.nc out.nc
-     ncap2 -s 'lon_lat[lon,lat]=lat+lon' in.nc out.nc
-   The explicit list of dimensions on the LHS, `[lat,lon]' resolves the
-otherwise ambiguous ordering of dimensions in LAT_LON.  In effect, the
-LHS "casts" its rank properties onto the RHS.  Without LHS casting, the
-dimensional ordering of LAT_LON would be undefined and, hopefully,
-`ncap2' would print an error message.
-
-   Consider now a slightly more complex example.  In geophysical
-models, a coordinate system based on a blend of terrain-following and
-density-following surfaces is called a "hybrid coordinate system".  In
-this coordinate system, four variables must be manipulated to obtain
-the pressure of the vertical coordinate: PO is the domain-mean surface
-pressure offset (a scalar), PS is the local (time-varying) surface
-pressure (usually two horizontal spatial dimensions, i.e. latitude by
-longitude), HYAM is the weight given to surfaces of constant density
-(one spatial dimension, pressure, which is orthogonal to the horizontal
-dimensions), and HYBM is the weight given to surfaces of constant
-elevation (also one spatial dimension).  This command constructs a
-four-dimensional pressure `prs_mdp' from the four input variables of
-mixed rank and orthogonality:
-     ncap2 -s 'prs_mdp[time,lat,lon,lev]=P0*hyam+PS*hybm' in.nc out.nc
-   Manipulating the four fields which define the pressure in a hybrid
-coordinate system is easy with left hand casting.
-
-
-File: nco.info,  Node: Arrays and hyperslabs,  Next: Attributes,  Prev: Left hand casting,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.5 Arrays and hyperslabs
----------------------------
-
-Generating a regularly spaced one-dimensional array with `ncap2' is
-simple with the `array()' function.  The syntax is
-     output=array(val_srt,val_ncr,$dmn_nm); // One-dimensional output
-     output=array(val_srt,val_ncr,var_tpl);  // Multi-dimensional output
-     h
-   where the arguments are the starting value VAL_SRT, incremental
-value VAL_NCR, and, for one-dimensional output, the single dimension
-`$dmn_nm', or, for multi-dimensional output, a template variable
-`var_tpl', i.e., a variable with the same shape as the desired output.
-
-   Once the associated dimensions have been defined, the start and
-increment arguments may be supplied as values, mathmatical expressions,
-or variables:
-     var_out=array(1,1,$time); // 1,2,3,4,5,6,7,8,9,10
-     var_out=array(1+2-2,one,$time); // 1,2,3,4,5,6,7,8,9,10
-     var_out=array(1,2,three_dmn_rec_var); // 1,3,5,...155,157,159
-
-   Hyperslabs in `ncap2' are more limited than hyperslabs with the
-other NCO operators.  `ncap2' does not understand the shell
-command-line syntax used to specify multi-slabs, wrapped co-ordinates,
-negative stride or coordinate value limits.  However with a bit of
-syntactic magic they are all are possible.  `ncap2' accepts (in fact,
-it requires) N-hyperslab arguments for a variable of rank N:
-     var1(arg1,arg2 ... argN);
-   where each hyperslab argument is of the form
-     start:end:stride
-   and the arguments for different dimensions are separated by commas.
-If "start" is omitted, it defaults to 0.  If "end" is omitted, it
-defaults to dimension size minus one.  If "stride" is omitted, it
-defaults to 1.
-
-If a single value is present then it is assumed that that dimension
-collapses to a single value (i.e., a cross-section).  The number of
-hyperslab arguments MUST equal the variable's rank.
-
-*Hyperslabs on the Right Hand Side of an assign
-*
-
-   A simple 1D example:
-     ($time.size=10)
-     od[$time]={20,22,24,26,28,30,32,34,36,38};
-
-     od(7);     // 34
-     od(7:);    // 34,36,38
-     od(:7);    // 20,22,24,26,28,30,32,34
-     od(::4);   // 20,28,36
-     od(1:6:2)  // 22,26,30
-     od(:)      // 20,22,24,26,28,30,32,34,36,38
-
-   A more complex three dimensional example:
-     ($lat.size=2,$lon.size=4)
-     th[$time,$lat,$lon]=
-                               {1, 2, 3, 4, 5, 6, 7, 8,
-                               9,10,11,12,13,14,15,16,
-                               17,18,19,20,21,22,23,24,
-                               -99,-99,-99,-99,-99,-99,-99,-99,
-                               33,34,35,36,37,38,39,40,
-                               41,42,43,44,45,46,47,48,
-                               49,50,51,52,53,54,55,56,
-                               -99,58,59,60,61,62,63,64,
-                               65,66,67,68,69,70,71,72,
-                               -99,74,75,76,77,78,79,-99 };
-
-     th(1,1,3);        // 16
-     th(2,0,:);        // 17, 18, 19, 20
-     th(:,1,3);        // 8, 16, 24, -99, 40, 48, 56, 64, 72, -99
-     th(::5 ,:,0:3:2); // 1, 3, 5, 7, 41, 43, 45, 47
-
-   If hyperslab arguments collapse to a single value (a cross-section
-has been specified), then that dimension is removed from the returned
-variable.  If all the values collapse then a scalar variable is
-returned.  So, for example, the following is valid:
-     th_nw=th(0,:,:)+th(9,:,:);
-     // th_nw has dimensions $lon,$lat
-     // NB: the time dimension has become degenerate
-
-   The following is invalid:
-     th_nw=th(0,:,0:1)+th(9,:,0:1);
-   because the `$lon' dimension now only has two elements.  The above
-can be calculated by using a LHS cast with `$lon_nw' as replacement dim
-for `$lon':
-     defdim("lon_nw",2);
-     th_nw[$lat,$lon_nw]=th(0,:,0:1) +th(9,:,0:1);
-
-*Hyperslabs on the Left Hand Side of an assign
-* When hyperslabing on the LHS, the expression on the RHS must evaluate
-to a scalar or a variable/attribute with the same number of elements as
-the LHS hyperslab.  Set all elements of the last record to zero:
-     th(9,:,:)=0.0;
-   Set first element of each lon element to 1.0:
-     th(:,:,0)=1.0;
-   One may hyperslab on both sides of an assign.  For example, this
-sets the last record to the first record:
-     th(9,:,:)=th(0,:,:);
-   Say TH0 represents pressure at height=0 and TH1 represents pressure
-at height=1.  Then it is possible to insert these hyperslabs into the
-records
-     prs[$time,$height,$lat,$lon]=0.0;
-     prs(:,0,:,:)=th0;
-     prs(:,1,:,:)=th1
-
-*Reverse method*
-Use the `reverse()' method to reverse a dimension's elements in a
-variable with at least one dimension.  This is equivalent to a negative
-stride, e.g.,
-     th_rv=th(1 ,:,:).reverse($lon); // {12,11,10,9 }, {16,15,14,13}
-     od_rv=od.reverse($time);        // {38,36,34,32,30,28,26,24,22,20}
-
-*Permute method*
-Use the `permute()' method to swap the dimensions of a variable.  The
-number and names of dimension arguments must match the dimensions in
-the variable.  If the first dimension in the variable is of record type
-then this must remain the first dimension.  If you want to change the
-record dimension then consider using `ncpdq'.
-
-   Consider the variable:
-     float three_dmn_var(lat,lev,lon);
-     three_dmn_var_prm=three_dmn_var.permute($lon,$lat,$lev);
-     // The permuted values are
-     three_dmn_var_prm=
-       0,4,8,
-       12,16,20,
-       1,5,9,
-       13,17,21,
-       2,6,10,
-       14,18,22,
-       3,7,11,
-       15,19,23;
-
-
-File: nco.info,  Node: Attributes,  Next: Number literals,  Prev: Arrays and hyperslabs,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.6 Attributes
-----------------
-
-Attributes are referred to by _var_nm at att_nm_
-All the following are valid statements:
-     global at text="Test Attributes"; /* Assign a global variable attribute */
-     a1[$time]=time*20;
-     a1 at long_name="Kelvin";
-     a1 at min=a1.min();
-     a1 at max=a1.max();
-     a1 at min++;
-     --a1 at max; q
-     a1(0)=a1 at min;
-     a1($time.size-1)=a1 at max;
-
-   A _value list_ can be used on the RHS of an assign...  
-     a1 at trip1={1,2,3} ;
-     a1 at triplet={a1 at min,(a1 at min+a1@max)/2,a1 at max};
-   The netCDF specification allows all attribute types to have a size
-greater than one.  The maximum is defined by `NC_MAX_ATTRS'.  The
-following is an `ncdump' of the metadata for variable A1
-     double a1(time) ;
-       a1:long_name = "Kelvin" ;
-       a1:max = 199. ;
-       a1:min = 21. ;
-       a1:trip1 = 1, 2, 3 ;
-       a1:triplet = 21., 110., 199. ;
-
-   The `size()' method can be used with attributes.  For example, to
-save an attribute text string in a variable,
-     defdim("sng_len", a1 at long_name.size());
-     sng_arr[$sng_len]=a1 at long_name; // sng_arr now contains "Kelvin"
-   Attributes defined in a script are stored in memory and are written
-to Output after script completion.  To stop the attribute being written
-use the ram_delete() method or use a bogus variable name.
-
-*Attribute Propagation & Inheritance* 
-   * Attribute propagation occurs in a regular  assign statement. The
-     variable being defined on the LHS gets copies of the attributes
-     from the leftermost variable on the RHS
-
-   * Attribute Inheritance: The LHS variable "inherits" attributes from
-     an Input variable with the same name
-
-   * It is possible to have a regular assign statement for which both
-     propagation and inheritance occur.
-
-     prs_mdp[time,lat,lon,lev]=P0*hyam+hybm*PS;   // prs_mdp gets attributes from PO
-     th_min=1.0 + 2*three_dmn_var_dbl.min($time); // th_min  gets attributes from three_dmn_var_dbl
-
-   If the attribute name contains non-regular characters use ID
-quoting. See *note ID Quoting::
-     'b..m1 at c--lost'=23;
-
-
-File: nco.info,  Node: Number literals,  Next: if statement,  Prev: Attributes,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.7 Number literals
----------------------
-
-The table below lists the postfix character(s) to add to a number
-literal for type cohesion.  To use the new netCDF4 types NCO must be
-compiled/linked to the netCDF4 library and the output file must be HDF5.
-
-     n1[$time]=1UL; // n1 will now by type `NC_UINT'
-     n2[$lon]=4b;   // n2 will be of type `NC_BYTE'
-     n3[$lat]=5ull; // n3 will be of type `NC_UINT64'
-     n3 at a1=6.0d;   // attribute will be type `NC_DOUBLE'
-     n3 at a2=-666L;  // attribute will be type `NC_INT'
-
-   A floating point number without a postfix will default to
-`NC_DOUBLE'.  An integer without a postfix will default to type
-`NC_INT'.  There is no postfix for characters, use a quoted string
-instead.
-     n4[$rlev]=0.1      // n4 will be of type `NC_DOUBLE'
-     n5[$lon_grd]=2.0   // n5 will be of type `NC_DOUBLE'
-     n6[$gds_crd]=2e3;  // n6 will be of type `NC_DOUBLE'
-     n7[$gds_crd]=2e3f;  // n7 will be of type `NC_FLOAT'
-     n6 at a1=41;         // attribute will be type `NC_INT'
-     n6 at a2=-21;        // attribute will be type `NC_INT'
-     n6 at units="kelvin" // attribute will be type `NC_CHAR'
-
-
-     *netCDF3/4 Types*
-
-b|B
-     `NC_BYTE', a signed 1-byte integer
-
-none
-     `NC_CHAR', an ISO/ASCII character
-
-s|S
-     `NC_SHORT', a signed 2-byte integer
-
-l|L
-     `NC_INT', a signed 4-byte integer
-
-f|F
-     `NC_FLOAT', a single-precision (4-byte) floating point number
-
-d|D
-     `NC_DOUBLE', a double-precision (8-byte) floating point number
-
-
-
-     *netCDF4 Types*
-
-ub|UB
-     `NC_UBYTE', an unsigned 1-byte integer
-
-us|US
-     `NC_USHORT', an unsigned 2-byte integer
-
-u|U|ul|UL
-     `NC_UINT', an unsigned 4-byte integer
-
-ll|LL
-     `NC_INT64', a signed 8-byte integer
-
-ull|ULL
-     `NC_UINT64', an unsigned 8-byte integer
-
-
-File: nco.info,  Node: if statement,  Next: print statement,  Prev: Number literals,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.8 if statement
-------------------
-
-The syntax of the if statement is similar to its C counterpart.  The
-_Conditional Operator (ternary operator)_ has also been implemented.
-     if(exp1)
-        stmt1;
-     else if(exp2)
-        stmt2;
-     else
-        stmt3;
-
-     # Can use code blocks as well:
-     if(exp1){
-        stmt1;
-        stmt1a;
-        stmt1b;
-     } else if(exp2)
-        stmt2;
-     else {
-        stmt3;
-        stmt3a;
-        stmt3b;
-     }
-
-For a variable or attribute expression to be logically true all its
-non-missing value elements must be logically true, i.e., non-zero.  The
-expression can be of any type.  Unlike C there is no short-circuiting
-of an expression with the OR (||) AND (&&) operators.  The whole
-expression is evaluated regardless if one of the AND/OR operands are
-true/false.
-     # Simple example
-     if(time>0)
-       print("All values of time are greater than zero\n");
-     else if( time<0)
-       print("All values of time are less than zero\n");
-     else {
-       time_max=time.max();
-       time_min=time.min();
-       print("min value of time=");print(time_min,"%f");
-       print("max value of time=");print(time_max,"%f");
-     }
-
-     # Example from ddra.nco
-     if(fl_typ==fl_typ_gcm){
-       var_nbr_apx=32;
-       lmn_nbr=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Variable size */
-       if(nco_op_typ==nco_op_typ_avg){
-         lmn_nbr_avg=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Averaging block size */
-         lmn_nbr_wgt=dmnsz_gcm_lat; /* [nbr] Weight size */
-       } // !nco_op_typ_avg
-     }else if(fl_typ==fl_typ_stl){
-       var_nbr_apx=8;
-       lmn_nbr=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Variable size */
-       if(nco_op_typ==nco_op_typ_avg){
-         lmn_nbr_avg=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Averaging block size */
-         lmn_nbr_wgt=dmnsz_stl_lat; /* [nbr] Weight size */
-       } // !nco_op_typ_avg
-     } // !fl_typ
-
-*Conditional Operator
-*
-     // netCDF4 needed for this example
-     th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : three_dmn_var_sht.int() );
-
-
-File: nco.info,  Node: print statement,  Next: Missing values ncap2,  Prev: if statement,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.9 print statement
----------------------
-
-     print(variable_name/attribute name/string, format string);
-
-The print function takes a variable name or attribute name or a quoted
-string and prints the contents in a in a similar fashion to `ncks -H'.
-There is also an optional C style format string argument.  Currently
-the print function cannot print RAM variables or expressions such as
-`'print(var_msk*3+4)''.  To print an expression, first evaluate it as a
-non-RAM variable (so it will be saved and can be printed), and then
-print the variable.
-
-examples
-     print(lon);
-     lon[0]=0
-     lon[1]=90
-     lon[2]=180
-     lon[3]=270
-
-     print(lon_2D_rrg,"%3.2f,");
-     0.00,0.00,180.00,0.00,180.00,0.00,180.00,0.00,
-
-     print(mss_val_fst at _FillValue);
-     mss_val_fst at _FillValue, size = 1 NC_FLOAT, value = -999
-
-     print("This function \t is monotonic\n");
-     This function is 	  monotonic
-
-
-File: nco.info,  Node: Missing values ncap2,  Next: Methods and functions,  Prev: print statement,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.10 Missing values ncap2
----------------------------
-
-Missing values operate slightly differently in `ncap2' Consider the
-expression where op is any of the following operators (excluding '=')
-     Arithmetic operators ( * / % + - ^ )
-     Binary Operators     ( >, >= <, <= ==, !=,==,||,&&, >>,<< )
-     Assign Operators     ( +=,-=,/=, *= )
-
-     var1 'op' var2
-
-If var1 has a missing value then this is the value used in the
-operation, otherwise the missing value for var2 is used.  If during the
-element-by-element operation an element from either operand is equal to
-the missing value then the missing value is carried through.  In this
-way missing values 'percolate' or propagate through an expression.
-Missing values associated with Output variables are stored in memory and
-are written to disk after the script finishes.  During script execution
-its possible (and legal) for the missing value of a variable to take on
-several different values.
-     # Consider the variable:
-     int rec_var_int_mss_val_int(time); =-999,2,3,4,5,6,7,8,-999,-999;
-     rec_var_int_mss_val_int:_FillValue = -999;
-
-     n2=rec_var_int_mss_val_int + rec_var_int_mss_val_int.reverse($time);
-
-     n2=-999,-999,11,11,11,11,11,11,999,-999;
-
-   The following methods are used to edit the missing value associated
-with a variable.  They only work on variables in Output.
-`set_miss(expr)'
-     Takes one argument the missing value.   Sets or overwrites the
-     existing missing value.   The argument given is converted if
-     necessary to the variable type
-
-`change_miss(expr)'
-     Changes the missing value elements of the variable to the new
-     missing  value (nb an expensive function).
-
-`get_miss()'
-     Returns the missing value of a variable.   If the variable exists
-     in Input and Output then the missing value of  the variable in
-     Output is returned.   If the variable has no missing value then an
-     error is returned.
-
-`delete_miss()'
-     Deletes the missing value associated with a variable.
-
-     th=three_dmn_var_dbl;
-     th.change_miss(-1e10d);
-     /* Set values less than 0 or greater than 50 to missing value */
-     where(th < 0.0 || th > 50.0) th=th.get_miss();
-
-     # Another example:
-     new[$time,$lat,$lon]=1.0;
-     new.set_miss(-997.0);
-
-     // Extract only elements divisible by 3
-     where (three_dmn_var_dbl%3 == 0)
-          new=three_dmn_var_dbl;
-     elsewhere
-          new=new.get_miss();
-
-
-File: nco.info,  Node: Methods and functions,  Next: RAM variables,  Prev: Missing values ncap2,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.11 Methods and functions
-----------------------------
-
-The convention within this document is that methods can be used as
-functions.  However, functions are not and cannot be used as methods.
-Methods can be daisy changed together and their syntax is cleaner than
-functions.  Method names are reserved words and CANNOT be used as
-variable names.  The command `ncap2 -f' shows the complete list of
-methods available on your build.
-     n2=sin(theta)
-     n2=theta.sin()
-     n2=sin(theta)^2 + cos(theta)^2
-     n2=theta.sin().pow(2) + theta.cos()^2
-
-   This statement chains methods together to convert three_dmn_var_sht
-to type double, average it, then convert this back to type short:
-     three_avg=three_dmn_var_sht.double().avg().short();
-
-
-*Aggregate Methods
-* These methods mirror the averaging types available in `ncwa'. The
-arguments to the methods are the dimensions to average over. Specifying
-no dimensions is equivalent to specifying all dimensions i.e.,
-averaging over all dimensions. A masking variable and a weighting
-variable can be manually created and applied as needed.
-
-`avg()'
-     Mean value
-
-`sqravg()'
-     Square of the mean
-
-`avgsqr()'
-     Mean of sum of squares
-
-`max()'
-     Maximum value
-
-`min()'
-     Minimum value
-
-`rms()'
-     Root-mean-square (normalize by N)
-
-`rmssdn()'
-     Root-mean square (normalize by N-1)
-
-`ttl() or total()'
-     Sum of values
-
-     // Average a variable over time
-     four_time_avg=four_dmn_rec_var($time);
-
-
-* Packing Methods
-* For more information see *note Packed data:: and *note ncpdq netCDF
-Permute Dimensions Quickly::
-`pack() & pack_short()'
-     The default packing algorithm is applied and variable is packed to
-     `NC_SHORT'
-
-`pack_byte()'
-     Variable is packed to `NC_BYTE'
-
-`pack_short()'
-     Variable is packed to `NC_SHORT'
-
-`pack_int()'
-     Variable is packed to `NC_INT'
-
-`unpack()'
-     The standard unpacking algorithm is applied.
-
-*Basic Methods
-* These methods work with variables and attributes. They have no
-arguments
-
-`size()'
-     Total number of elements
-
-`ndims()'
-     Number of dimensions in variable
-
-`type()'
-     Returns the netcdf type (see previous section)
-
-
-*Utility Methods
-* These functions are used to manipulate missing values and RAM
-variables.  *note Missing values ncap2::
-
-`set_miss(expr)'
-     Takes one argument the missing value. Sets or overwrites the
-     existing missing value. The argument given is converted if
-     necessary to the variable type
-
-`change_miss(expr)'
-     Changes the missing value elements of the variable to the new
-     missing value (n.b. an expensive function).
-
-`get_miss()'
-     Returns the missing value of a variable in Input or Output
-
-`delete_miss()'
-     Deletes the missing value associated with a variable.
-
-`ram_write()'
-     Writes a RAM variable to disk i.e., converts it to a regular disk
-     type variable
-
-`ram_delete()'
-     Deletes a RAM variable or an attribute
-
-
-*PDQ Methods
-* See *note ncpdq netCDF Permute Dimensions Quickly::
-`reverse(dim args)'
-     Reverses the dimension ordering of elements in a variable.
-
-`permute(dim args)'
-     Re-shapes variables by re-ordering the dimensions. All the dims of
-     the variable must be specified in the arguments. A limitation of
-     this permute (unlike ncpdq) is that the record dimension cannot be
-     re-assigned.
-   // Swap dimensions about and reorder along lon
-     lat_2D_rrg_new=lat_2D_rrg.permute($lon,$lat).reverse($lon);
-     lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0
-
-
-*Type Conversion Methods
-* These methods allow `ncap2' to convert variables and attributes to
-the different netcdf types. For more details on automatic and manual
-type conversion see (*note Type Conversion::). You can only use the new
-netCDF4 types if you have compiled/links NCO with the netCDF4 library
-and the Output file is HDF5.
-
-`'
-     *netCDF3/4 Types*
-
-`byte()'
-     convert to `NC_BYTE',  a signed 1-byte integer
-
-`char()'
-     convert to `NC_CHAR',  an ISO/ASCII character
-
-`short()'
-     convert to `NC_SHORT', a signed 2-byte integer
-
-`int()'
-     convert to `NC_INT',   a signed 4-byte integer
-
-`float()'
-     convert to `NC_FLOAT', a single-precision (4-byte) floating point
-     number
-
-`double()'
-     convert to `NC_DOUBLE', a double-precision (8-byte) floating point
-     number
-
-`'
-
-`'
-     *netCDF4 Types*
-
-`ubyte()'
-     convert to `NC_UBYTE', an unsigned 1-byte integer
-
-`ushort()'
-     convert to `NC_USHORT', an unsigned 2-byte integer
-
-`uint()'
-     convert to `NC_UINT', an unsigned 4-byte integer
-
-`int64()'
-     convert to `NC_INT64', a signed 8-byte integer
-
-`uint64()'
-     convert to `NC_UINT64', an unsigned 8-byte integer
-
-*Intrinsic Mathematical Methods
-* The list of mathematical methods is system dependant.  For the full
-list *note Intrinsic mathematical methods::
-
-   All the mathematical methods take a single operand ,with the
-exception of `atan2' and `pow' which take two.  If the operand type is
-less than _float_ then the result will be of type _float_. If the
-operand is type _double_ then the result will be type _double_. Like
-the other methods, you are free to use the mathematical methods as
-functions.
-
-     n1=pow(2,3.0f)    // n1 type float
-     n2=atan2(2,3.0)   // n2 type double
-     n3=1/(three_dmn_var_dbl.cos().pow(2))-tan(three_dmn_var_dbl)^2; // n3 type double
-
-
-File: nco.info,  Node: RAM variables,  Next: Where statement,  Prev: Methods and functions,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.12 RAM variables
---------------------
-
-Unlike regular variables, RAM variables are never written to disk.
-Hence using RAM variables in place of regular variables (especially
-within loops) significantly increases execution speed.  Variables that
-are frequently accessed within `for' or `where' clauses provide the
-greatest opportunities for optimization.  To declare and define a RAM
-variable simply prefix the variable name with an asterisk (`*') when
-the variable is declared/initialized.  To delete a RAM variables (and
-recover their memory) use the `ram_delete()' method.  To write a RAM
-variable to disk (like a regular variable) use `ram_write()'.  
-     *temp[$time,$lat,lon]=10.0;     // Cast
-     *temp_avg=temp.avg($time);      // Regular assign
-     temp.ram_delete();              // Delete RAM variable
-     temp_avg.ram_write();           // Write Variable to output
-
-     // Create and increment a RAM variable from "one" in Input
-     *one++;
-     // Create RAM variables from the variables three and four in Input.
-     // Multiply three by 10 and add it to four.
-     *four+=*three*=10; // three=30, four=34
-
-
-File: nco.info,  Node: Where statement,  Next: Loops,  Prev: RAM variables,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.13 Where statement
-----------------------
-
-A `where()' combines the definition and application of a mask all in
-one go and can lead to succinct code.  The full syntax of a `where()'
-statement is as follows:
-
-     // Single assign (the 'elsewhere' block is optional)
-     where(mask)
-        var1=expr1;
-     elsewhere
-        var1=expr2;
-
-     // Multiple assigns
-     where(mask){
-         var1=expr1;
-         var2=expr2;
-         ...
-     }elsewhere{
-         var1=expr3
-         var2=expr4
-         var3=expr5;
-         ...
-     }
-
-   * The only expression allowed in the predicate of a where is assign,
-     i.e., 'var=expr'.  This assign differs from a regular `ncap2'
-     assign.  The LHS var must already exist in Input or Output.  The
-     RHS expression must evaluate to a scalar or a variable/attribute of
-     the same size as the LHS variable.
-
-   * Consider when both the LHS and RHS are variables: For every
-     element where mask condition is True, the corresponding LHS
-     variable element is re-assigned to its partner element on the RHS.
-     In the elsewhere part the mask is logically inverted and the assign
-     process proceeds as before.
-
-   * If the mask dimensions are a subset of the LHS variable's
-     dimensions, then it is made to conform; if it cannot be made to
-     conform then script execution halts.
-
-   * Missing values in the mask evaluate to False in the where
-     code/block statement and to True in the elsewhere block/statement.
-     LHS variable elements set to missing value are not re-assigned.
-     For these reasons, do not explicitly reference missing values in
-     the masking condition, e.g., `where(foo=foo.get_missing()) foo=1;'
-     will not work as expected.
-
-   Example: Consider the variables `float lon_2D_rct(lat,lon);' and
-`float var_msk(lat,lon);'.  Suppose we wish to multiply by two the
-elements for which `var_msk' equals 1:
-     where(var_msk==1) lon_2D_rct=2*lon_2D_rct;
-   Suppose that we have the variable `int RDM(time)' and that we want
-to set its values less than 8 or greater than 80 to 0:
-     where(RDM < 8 || RDM > 80) RDM=0;
-
-   Consider irregularly gridded data, described using rank 2
-coordinates: `double lat(south_north,east_west)', `double
-lon(south_north,east_west)', `double
-temperature(south_north,east_west)'.  To find the average temperature
-in a region bounded by [LAT_MIN,LAT_MAX] and [LON_MIN,LON_MAX]:
-     temperature_msk[$south_north,$east_west]=0.0;
-     where(lat >= lat_min && lat <= lat_max) && (lon >= lon_min && lon <= lon_max)
-       temperature_msk=temperature;
-     elsewhere
-       temperature_msk=temperature at _FillValue;
-
-     temp_avg=temperature_msk.avg();
-     temp_max=temperature.max();
-
-
-File: nco.info,  Node: Loops,  Next: Include files,  Prev: Where statement,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.14 Loops
-------------
-
-`ncap' supplies `for()' loops and `while()' loops.  They are completely
-unoptimized so use them only with RAM variables unless you want thrash
-your disk to death.  To break out of a loop use the `break' command.
-To iterate to the next cycle use the `continue' command.
-
-     // Follwing sets elements in variable double temp(time,lat)
-     // If element < 0 set to 0, if element > 100 set to 100
-     *sz_idx=$time.size;
-     *sz_jdx=$lat.size;
-
-     for(*idx=0;idx<sz_idx;idx++)
-       for(*jdx=0;jdx<sz_jdx;jdx++)
-         if(temp(idx,jdx) > 100) temp(idx,jdx)=100.0;
-         else if(temp(idx,jdx) < 0) temp(idx,jdx)=0.0;
-
-     // Are values of co-ordinate variable double lat(lat) monotonic?
-        *sz=$lat.size;
-
-        for(*idx=1;idx<sz;idx++)
-          if(lat(idx)-lat(idx-1) < 0.0)
-            break;
-
-        if(idx == sz)
-          print("lat co-ordinate is monotonic\n");
-        else
-          print("lat co-ordinate is NOT monotonic\n");
-
-     // Sum odd elements
-     *idx=0;
-     *sz=$lat_nw.size;
-     *sum=0.0;
-       while(idx<sz){
-        if(lat(idx)%2) sum+=lat(idx);
-        idx++;
-       }
-
-     ram_write(sum);
-     print("Total of odd elements ");print(sum);print("\n");
-
-
-File: nco.info,  Node: Include files,  Next: Sort methods,  Prev: Loops,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.15 Include files
---------------------
-
-The syntax of an INCLUDE-FILE is:
-     #include "script.nco"
-   The script filename is searched relative to the run directory.  It
-is possible to nest include files to an arbitrary depth.  A handy use
-of inlcude files is to store often used constants.  Use RAM variables
-if you do not want these constants written to OUTPUT-FILE.
-     // script.nco
-     // Sample file to #include in ncap2 script
-     *pi=3.1415926535; // RAM variable, not written to output
-     *h=6.62607095e-34; // RAM variable, not written to output
-     e=2.71828; // Regular (disk) variable, written to output
-
-
-File: nco.info,  Node: Sort methods,  Next: Irregular grids,  Prev: Include files,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.16 `sort' methods
----------------------
-
-In ncap there are two ways to sort data.  The first is a regular `sort'.
-This sorts ALL the elements of a variable or attribute without regard
-to any dimensions.  The second method applies a sort map to a variable.
-To apply this sort map the size of the variable must be exactly
-divisible by the size of the sort map.  The method
-`sort(var_in,&var_map)' is overloaded.  The second optional argument is
-to supply a call-by-reference variable to hold the returned sort map.
-     a1[$time]={10,2,3,4,6,5,7,3,4,1};
-     a1_sort=sort(a1);
-     print(a1_sort);
-     // 1, 2, 3, 3, 4, 4, 5, 6, 7, 10;
-
-     a2[$lon]={2,1,4,3};
-     a2_sort=sort(a2,&a2_map);
-     print(a2);
-     // 1, 2, 3, 4
-     print(a2_map);
-     // 1, 0, 3, 2;
-
-   If the map variable does not exist prior to the `sort()' call, then
-it will be created with the same shape as the input variable and be of
-type `NC_INT'.  If the map variable already exists, then the only
-restriction is that it be of at least the same size as the input
-variable.  To apply a map use `dsort(var_in,var_map)'.
-     defdim("nlat",5);
-
-     a3[$lon]={2,5,3,7};
-     a4[$nlat,$lon]={
-      1, 2, 3, 4,
-      5, 6, 7, 8,
-      9,10,11,12,
-      13,14,15,16,
-      17,18,19,20};
-
-     a3_sort=sort(a3,&a3_map);
-     print(a3_map);
-     // 0, 2, 1, 3;
-
-     a4_sort=dsort(a4,a3_map);
-     print(a4_sort);
-     // 1, 3, 2, 4,
-     // 5, 7, 6, 8,
-     // 9,11,10,12,
-     // 13,15,14,16,
-     // 17,19,18,20;
-
-     a3_map2[$nlat]={4,3,0,2,1};
-
-     a4_sort2=dsort(a4,a3_map2);
-     print(a4_sort2);
-     // 3, 5, 4, 2, 1
-     // 8, 10, 9,7, 6,
-     // 13,15,14,12,11,
-     // 18,20,19,17,16
-   As in the above example you may create your own sort map.  To sort
-in descending order, apply the `reverse()' method after the `sort()'.
-
-   Here is an extended example of how to use `ncap2' features to
-hyperslab an irregular region based on the values of a variable not a
-coordinate.  The distinction is crucial: hyperslabbing based on
-dimensional indices or coordinate values is straightforward.  Using the
-values of single or multi-dimensional variable to define a hyperslab is
-quite different.
-     cat > ~/ncap2_foo.nco << 'EOF'
-     // Purpose: Save irregular 1-D regions based on variable values
-
-     // Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-     /* NB: Single quotes around EOF above turn off shell parameter
-         expansion in "here documents". This in turn prevents the
-         need for protecting dollarsign characters in NCO scripts with
-         backslashes when the script is cut-and-pasted (aka "moused")
-         from an editor or e-mail into a shell console window */
-
-     /* Copy coordinates and variable(s) of interest into RAM variable(s)
-        Benefits:
-        1. ncap2 defines writes all variables on LHS of expression to disk
-           Only exception is RAM variables, which are stored in RAM only
-           Repeated operations on regular variables takes more time,
-           because changes are written to disk copy after every change.
-           RAM variables are only changed in RAM so script works faster
-           RAM variables can be written to disk at end with ram_write()
-        2. Script permutes variables of interest during processing
-           Safer to work with copies that have different names
-           This discourages accidental, mistaken use of permuted versions
-        3. Makes this script a more generic template:
-           var_in instead of specific variable names everywhere */
-     *var_in=one_dmn_rec_var;
-     *crd_in=time;
-     *dmn_in_sz=$time.size; // [nbr] Size of input arrays
-
-     /* Create all other "intermediate" variables as RAM variables
-        to prevent them from cluttering the output file.
-        Mask flag and sort map are same size as variable of interest */
-     *msk_flg=var_in;
-     *srt_map=var_in;
-
-     /* In this example we mask for all values evenly divisible by 3
-        This is the key, problem-specific portion of the template
-        Replace this where() condition by that for your problem
-        Mask variable is Boolean: 1=Meets condition, 0=Fails condition */
-     where(var_in % 3 == 0) msk_flg=1; elsewhere msk_flg=0;
-
-     // print("msk_flg = ");print(msk_flg); // For debugging...
-
-     /* The sort() routine is overloaded, and takes one or two arguments
-        The second argument (optional) is the "sort map" (srt_map below)
-        Pass the sort map by reference, i.e., prefix with an ampersand
-        If the sort map does not yet exist, then it will be created and
-        returned as an integer type the same shape as the input variable.
-        The output of sort(), on the LHS, is a sorted version of the input
-        msk_flg is not needed in its original order after sort()
-        Hence we use msk_flg as both input to and output from sort()
-        Doing this prevents the need to define a new, unneeded variable */
-     msk_flg=sort(msk_flg,&srt_map);
-
-     // Count number of valid points in mask by summing the one's
-     *msk_nbr=msk_flg.total();
-
-     // Define output dimension equal in size to number of valid points
-     defdim("crd_out",msk_nbr);
-
-     /* Now sort the variable of interest using the sort map and dsort()
-        The output, on the LHS, is the input re-arranged so that all points
-        meeting the mask condition are contiguous at the end of the array
-        Use same srt_map to hyperslab multiple variables of the same shape
-        Remember to apply srt_map to the coordinate variables */
-     crd_in=dsort(crd_in,srt_map);
-     var_in=dsort(var_in,srt_map);
-
-     /* Hyperslab last msk_nbr values of variable(s) of interest */
-     crd_out[crd_out]=crd_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-     var_out[crd_out]=var_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-
-     /* NB: Even though we created all variables possible as RAM variables,
-        the original coordinate of interest, time, is written to the ouput.
-        I'm not exactly sure why. For now, delete it from the output with:
-        ncks -O -x -v time ~/foo.nc ~/foo.nc
-        */
-     EOF
-     ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-     ncks -O -x -v time ~/foo.nc ~/foo.nc
-     ncks ~/foo.nc
-
-   Here is an extended example of how to use `ncap2' features to sort
-multi-dimensional arrays based on the coordinate values along a single
-dimension.
-     cat > ~/ncap2_foo.nco << 'EOF'
-     /* Purpose: Sort multi-dimensional array based on coordinate values
-        This example sorts the variable three_dmn_rec_var(time,lat,lon)
-        based on the values of the time coordinate. */
-
-     // Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-     // Randomize the time coordinate
-     time=10.0*gsl_rng_uniform(time);
-     //print("original randomized time =\n");print(time);
-
-     /* The sort() routine is overloaded, and takes one or two arguments
-        The first argument is a one dimensional array
-        The second argument (optional) is the "sort map" (srt_map below)
-        Pass the sort map by reference, i.e., prefix with an ampersand
-        If the sort map does not yet exist, then it will be created and
-        returned as an integer type the same shape as the input variable.
-        The output of sort(), on the LHS, is a sorted version of the input */
-
-     time=sort(time,&srt_map);
-     //print("sorted time (ascending order) and associated sort map =\n");print(time);print(srt_map);
-
-     /* sort() always sorts in ascending order
-        The associated sort map therefore re-arranges the original,
-        randomized time array into ascending order.
-        There are two methods to obtain the descending order the user wants
-        1) We could solve the problem in ascending order (the default)
-        and then apply the reverse() method to re-arrange the results.
-        2) We could change the sort map to return things in descending
-        order of time and solve the problem directly in descending order. */
-
-     // Following shows how to do method one:
-
-     /* Expand the sort map to srt_map_3d, the size of the data array
-        1. Use data array to provide right shape for the expanded sort map
-        2. Coerce data array into an integer so srt_map_3d is an integer
-        3. Multiply data array by zero so 3-d map elements are all zero
-        4. Add the 1-d sort map to the 3-d sort map (NCO automatically resizes)
-        5. Add the spatial (lat,lon) offsets to each time index
-        6. de-sort using the srt_map_3d
-        7. Use reverse to obtain descending in time order
-        Loops could accomplish the same thing (exercise left for reader)
-        However, loops are slow for large datasets */
-
-     /* Following index manipulation requires understanding correspondence
-        between 1-d (unrolled, memory order of storage) and access into that
-        memory as a multidimensional (3-d, in this case) rectangular array.
-        Key idea to understand is how dimensionality affects offsets */
-     // Copy 1-d sort map into 3-d sort map
-     srt_map_3d=(0*int(three_dmn_rec_var))+srt_map;
-     // Multiply base offset by factorial of lesser dimensions
-     srt_map_3d*=$lat.size*$lon.size;
-     lon_idx=array(0,1,$lon);
-     lat_idx=array(0,1,$lat)*$lon.size;
-     lat_lon_idx[$lat,$lon]=lat_idx+lon_idx;
-     srt_map_3d+=lat_lon_idx;
-
-     print("sort map 3d =\n");print(srt_map_3d);
-
-     // Use dsort() to "de-sort" the data using the sort map
-     three_dmn_rec_var=dsort(three_dmn_rec_var,srt_map_3d);
-
-     // Finally, reverse data so time coordinate is descending
-     time=time.reverse($time);
-     //print("sorted time (descending order) =\n");print(time);
-     three_dmn_rec_var=three_dmn_rec_var.reverse($time);
-
-     // Method two: Key difference is srt_map=$time.size-srt_map-1;
-     EOF
-     ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-
-
-File: nco.info,  Node: Irregular grids,  Next: Bilinear interpolation,  Prev: Sort methods,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.17 Irregular Grids
-----------------------
-
-NCO is capable of analyzing datasets for many different underlying
-coordinate grid types.  netCDF was developed for and initially used
-with grids comprised of orthogonal dimensions forming a rectangular
-coordinate system.  We call such grids _standard_ grids.  It is
-increasingly common for datasets to use metadata to describe much more
-complex grids.  Let us first define three important coordinate grid
-properties: rectangularity, regularity, and fxm.
-
-   Grids are _regular_ if the spacing between adjacent is constant.
-For example, a 4-by-5 degree latitude-longitude grid is regular because
-the spacings between adjacent latitudes (4 degrees) are constant as are
-the (5 degrees) spacings between adjacent longitudes.  Spacing in
-_irregular_ grids depends on the location along the coordinate.  Grids
-such as Gaussian grids have uneven spacing in latitude (points cluster
-near the equator) and so are irregular.
-
-   Grids are _rectangular_ if the number of elements in any dimension
-is not a function of any other dimension.  For example, a T42 Gaussian
-latitude-longitude grid is rectangular because there are the same
-number of longitudes (128) for each of the (64) latitudes.  Grids are
-_non-rectangular_ if the elements in any dimension depend on another
-dimension.  Non-rectangular grids present many special challenges to
-analysis software like NCO.
-
-   Wrapped coordinates (*note Wrapped Coordinates::), such as longitude,
-are independent of these grid properties (regularity, rectangularity).
-
-   The preferred NCO technique to analyze data on non-standard
-coordinate grids is to create a region mask with `ncap2', and then to
-use the mask within `ncap2' for variable-specific processing, and/or
-with other operators (e.g., `ncwa', `ncdiff') for entire file
-processing.
-
-   Before describing the construction of masks, let us review how
-irregularly gridded geoscience data are described.  Say that latitude
-and longitude are stored as R-dimensional arrays and the product of the
-dimension sizes is the total number of elements N in the other
-variables.  Geoscience applications tend to use R=1, R=2, and R=3.
-
-   If the grid is has no simple representation (e.g., discontinuous)
-then it makes sense to store all coordinates as 1D arrays with the same
-size as the number of grid points.  These gridpoints can be completely
-independent of all the other (own weight, area, etc.).
-
-   R=1: lat(number_of_gridpoints) and lon(number_of_gridpoints)
-
-   If the horizontal grid is time-invariant then R=2 is common:
-
-   R=2: lat(south_north,east_west) and lon(south_north,east_west)
-
-   The Weather and Research Forecast (WRF) model uses R=3:
-
-   R=3: lat(time,south_north,east_west), lon(time,south_north,east_west)
-
-   and so supports grids that change with time.
-
-   Grids with R > 1 often use missing values to indicated empty points.
-For example, so-called "staggered grids" will use fewer east_west
-points near the poles and more near the equator. netCDF only accepts
-rectangular arrays so space must be allocated for the maximum number of
-east_west points at all latitudes. Then the application writes missing
-values into the unused points near the poles.
-
-   We demonstrate the `ncap2' analysis technique for irregular regions
-by constructing a mask for an R=2 grid.  We wish to find, say, the mean
-temperature within [LAT_MIN,LAT_MAX] and [LON_MIN,LON_MAX]:
-     ncap2 -s 'mask_var= (lat >= lat_min && lat <= lat_max) && \
-                         (lon >= lon_min && lon <= lon_max);' in.nc out.nc
-   Arbitrarily shaped regions can be defined by more complex conditional
-statements.  Once defined, masks can be applied to specific variables,
-and to entire files:
-     ncap2 -s 'temperature_avg=(temperature*mask_var).avg()' in.nc out.nc
-     ncwa -a lat,lon -m mask_var -w area in.nc out.nc
-   Crafting such commands on the command line is possible though
-unwieldy.  In such cases, a script is often cleaner and allows you to
-document the procedure:
-     cat > ncap2.in << 'EOF'
-     mask_var = (lat >= lat_min && lat <= lat_max) && (lon >= lon_min && > lon <= lon_max);
-     if(mask_var.total() > 0){ // Check that mask contains some valid values
-       temperature_avg=(temperature*mask_var).avg(); // Average temperature
-       temperature_max=(temperature*mask_var).max(); // Maximum temperature
-     }
-     EOF
-     ncap2 -S ncap2.in in.nc out.nc
-
-   For WRF files creating regional masks looks like
-     mask_var = (XLAT >= lat_min && XLAT <= lat_max) && (XLONG >= lon_min && > XLONG <= lon_max);
-   In practice with WRF it's a bit more complicated because you must
-use the global metadata to determine the grid staggering and offsets to
-translate XLAT and XLONG into real latitudes and longitudes and missing
-points. The WRF grid documentation should describe this.
-
-   A few notes: Irregular regions are the union of arrays
-lat/lon_min/max's.  The mask procedure is identical for all R.
-
-
-File: nco.info,  Node: Bilinear interpolation,  Next: GSL special functions,  Prev: Irregular grids,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.18 Bilinear interpolation
------------------------------
-
-As of version 4.0.0 NCO has internal routines to perform bilinear
-interpolation on gridded data sets.  In mathematics, bilinear
-interpolation is an extension of linear interpolation for interpolating
-functions of two variables on a regular grid.  The idea is to perform
-linear interpolation first in one direction, and then again in the
-other direction.
-
-   Suppose we have an irregular grid of data `temperature[lat,lon]',
-with co-ordinate vars `lat[lat], lon[lon]'.  We wish to find the
-temperature at an arbitary point [X,Y] within the grid.  If we can
-locate lat_min,lat_max and lon_min,lon_max such that `lat_min <= X <=
-lat_max' and `lon_min <=Y <=lon_max' then we can interpolate in two
-dimensions to find the temperature at [X,Y].
-
-   The general form of the `ncap2' interpolation function is
-     var_out=bilinear_interp(grid_in,grid_out,grid_out_x,grid_out_y,grid_in_x,grid_in_y)
-   where
-`grid_in'
-     Input function data.  Usually a two dimensional variable.  It must
-     be of size `grid_in_x.size()*grid_in_y.size()'
-
-`grid_out'
-     This variable is the shape of `var_out'.  Usually a two
-     dimensional variable.  It must be of size
-     `grid_out_x.size()*grid_out_y.size()'
-
-`grid_out_x'
-     X output values
-
-`grid_out_y'
-     Y output values
-
-`grid_in_x'
-     X input values values. Must be montonic (increasing or decreasing).
-
-`grid_in_y'
-     Y input values values. Must be montonic (increasing or decreasing).
-   Prior to calculations all arguments are converted to type
-`NC_DOUBLE'.  After calculations `var_out' is converted to the input
-type of `grid_in'.
-
-   Suppose the first part of an ncap2 script is
-     defdim("X",4);
-     defdim("Y",5);
-
-     // Temperature
-     T_in[$X,$Y]=
-      {100, 200, 300, 400, 500,
-       101, 202, 303, 404, 505,
-       102, 204, 306, 408, 510,
-       103, 206, 309, 412, 515.0 };
-
-     // Coordinate variables
-     x_in[$X]={0.0,1.0,2.0,3.01};
-     y_in[$Y]={1.0,2.0,3.0,4.0,5};
-   Now we interpolate with the following variables:
-     defdim("Xn",3);
-     defdim("Yn",4);
-     T_out[$Xn,$Yn]=0.0;
-     x_out[$Xn]={0.0,0.02,3.01};
-     y_out[$Yn]={1.1,2.0,3,4};
-
-     var_out=bilinear_interp(T_in,T_out,x_out,y_out,x_in,y_in);
-     print(var_out);
-     // 110, 200, 300, 400,
-     // 110.022, 200.04, 300.06, 400.08,
-     // 113.3, 206, 309, 412 ;
-
-   It is possible to interpolate a single point:
-     var_out=bilinear_interp(T_in,0.0,3.0,4.99,x_in,y_in);
-     print(var_out);
-     // 513.920594059406
-
-*Wrapping and Extrapolation*
-The function `bilinear_interp_wrap()' takes the same arguments as
-`bilinear_interp()' but performs wrapping (Y) and extrapolation (X) for
-points off the edge of the grid.  If the given range of longitude is
-say (25-335) and we have a point at 20 degrees, then the endpoints of
-the range are used for the interpolation.  This is what wrapping means.
-For wrapping to occur Y must be longitude and must be in the range
-(0,360) or (-180,180).  There are no restrictions on the longitude (X)
-values, though typically these are in the range (-90,90).  This `ncap2'
-script illustrates both wrapping and extrapolation of end points:
-     defdim("lat_in",6);
-     defdim("lon_in",5);
-
-     // Coordinate input vars
-     lat_in[$lat_in]={-80,-40,0,30,60.0,85.0};
-     lon_in[$lon_in]={30, 110, 190, 270, 350.0};
-
-     T_in[$lat_in,$lon_in]=
-       {10,40,50,30,15,
-         12,43,52,31,16,
-         14,46,54,32,17,
-         16,49,56,33,18,
-         18,52,58,34,19,
-         20,55,60,35,20.0 };
-
-     defdim("lat_out",4);
-     defdim("lon_out",3);
-
-     // Coordinate variables
-     lat_out[$lat_out]={-90,0,70,88.0};
-     lon_out[$lon_out]={0,190,355.0};
-
-     T_out[$lat_out,$lon_out]=0.0;
-
-     T_out=bilinear_interp_wrap(T_in,T_out,lat_out,lon_out,lat_in,lon_in);
-     print(T_out);
-     // 13.4375, 49.5, 14.09375,
-     // 16.25, 54, 16.625,
-     // 19.25, 58.8, 19.325,
-     // 20.15, 60.24, 20.135 ;
-
-
-File: nco.info,  Node: GSL special functions,  Next: GSL interpolation,  Prev: Bilinear interpolation,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.19 GSL special functions
-----------------------------
-
-As of version 3.9.6 (released January, 2009), NCO can link to the GNU
-Scientific Library (GSL).  `ncap' can access most GSL special functions
-including Airy, Bessel, error, gamma, beta, hypergeometric, and
-Legendre functions and elliptical integrals.  GSL must be version 1.4
-or later.  To list the GSL functions available with your NCO build, use
-`ncap2 -f | grep ^gsl'.
-
-The function names used by ncap2 mirror their GSL names.  The NCO
-wrappers for GSL functions automatically call the error-handling
-version of the GSL function when available (1).  This allows NCO to
-return a missing value when the GSL library encounters a domain error
-or a floating point exception.  The slow-down due to calling the
-error-handling version of the GSL numerical functions was found to be
-negligible (please let us know if you find otherwise).
-
-Consider the gamma function.
-The GSL function prototype is
-`int gsl_sf_gamma_e(const double x, gsl_sf_result * result)' The `ncap'
-script would be:
-     lon_in[lon]={-1,0.1,0,2,0.3};
-     lon_out=gsl_sf_gamma(lon_in);
-     lon_out= _, 9.5135, 4.5908, 2.9915
-
-The first value is set to `_FillValue' since the gamma function is
-undefined for negative integers.  If the input variable has a missing
-value then this value is used.  Otherwise, the default double fill
-value is used (defined in the netCDF header `netcdf.h' as
-`NC_FILL_DOUBLE = 9.969e+36').
-
-Consider a call to a Bessel function with GSL prototype
-`int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result)'
-
-   An `ncap' script would be
-     lon_out=gsl_sf_bessel_Jn(2,lon_in);
-     lon_out=0.11490, 0.0012, 0.00498, 0.011165
-   This computes the Bessel function of order N=2 for every value in
-`lon_in'.  The Bessel order argument, an integer, can also be a
-non-scalar variable, i.e., an array.
-     n_in[lon]={0,1,2,3};
-     lon_out=gsl_sf_bessel_Jn(n_in,0.5);
-     lon_out= 0.93846, 0.24226, 0.03060, 0.00256
-
-Arguments to GSL wrapper functions in `ncap' must conform to one
-another, i.e., they must share the same sub-set of dimensions.  For
-example: `three_out=gsl_sf_bessel_Jn(n_in,three_dmn_var_dbl)' is valid
-because the variable `three_dmn_var_dbl' has a LON dimension, so `n_in'
-in can be broadcast to conform to `three_dmn_var_dbl'.  However
-`time_out=gsl_sf_bessel_Jn(n_in,time)' is invalid.
-
-   Consider the elliptical integral with prototype `int
-gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode,
-gsl_sf_result * result)'
-     three_out=gsl_sf_ellint_RD(0.5,time,three_dmn_var_dbl);
-
-The three arguments are all conformable so the above `ncap' call is
-valid. The mode argument in the function prototype controls the
-convergence of the algorithm. It also appears  in the Airy Function
-prototypes. It can be set by defining the environment variable
-`GSL_PREC_MODE'. If unset it defaults to the value `GSL_PREC_DOUBLE'.
-See the GSL manual for more details.
-     export GSL_PREC_MODE=0 // GSL_PREC_DOUBLE
-     export GSL_PREC_MODE=1 // GSL_PREC_SINGLE
-     export GSL_PREC_MODE=2 // GSL_PREC_APPROX
-
-The `ncap' wrappers to the array functions are slightly different.
-Consider the following GSL prototype
-`int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double
-*result_array)'
-     b1=lon.double();
-     x=0.5;
-     status=gsl_sf_bessel_Jn_array(1,4,x,&b1);
-     print(status);
-     b1=0.24226,0.0306,0.00256,0.00016;
-   This calculates the Bessel function of X=0.5 for N=1 to 4.  The
-first three arguments are scalar values.  If a non-scalar variable is
-supplied as an argument then only the first value is used.  The final
-argument is the variable where the results are stored (NB: the `&'
-indicates this is a call by reference).  This final argument must be of
-type `double' and must be of least size NMAX-NMIN+1.  If either of
-these conditions is not met then then the function returns an error
-message.  The function/wrapper returns a status flag.  Zero indicates
-success.
-
-Consider another array function
-`int gsl_sf_legendre_Pl_array( int lmax, double x, double
-*result_array);' 
-     a1=time.double();
-     x=0.3;
-     status=gsl_sf_legendre_Pl_array(a1.size()-1, x,&a1);
-     print(status);
-   This call calculates P_L(0.3) for L=0..9.  Note that |X|<=1,
-otherwise there will be a domain error.  See the GSL documentation for
-more details.
-
-The GSL functions implemented in NCO are listed in the table below.
-This table is correct for GSL version 1.10.  To see what functions are
-available on your build run the command `ncap2 -f |grep ^gsl' .  To see
-this table along with the GSL C-function prototypes look at the
-spreadsheet *doc/nco_gsl.ods*.
-*GSL NAME*                *I*  *NCAP FUNCTION CALL*
-gsl_sf_airy_Ai_e          Y    gsl_sf_airy_Ai(dbl_expr)
-gsl_sf_airy_Bi_e          Y    gsl_sf_airy_Bi(dbl_expr)
-gsl_sf_airy_Ai_scaled_e   Y    gsl_sf_airy_Ai_scaled(dbl_expr)
-gsl_sf_airy_Bi_scaled_e   Y    gsl_sf_airy_Bi_scaled(dbl_expr)
-gsl_sf_airy_Ai_deriv_e    Y    gsl_sf_airy_Ai_deriv(dbl_expr)
-gsl_sf_airy_Bi_deriv_e    Y    gsl_sf_airy_Bi_deriv(dbl_expr)
-gsl_sf_airy_Ai_deriv_scaled_eY    gsl_sf_airy_Ai_deriv_scaled(dbl_expr)
-gsl_sf_airy_Bi_deriv_scaled_eY    gsl_sf_airy_Bi_deriv_scaled(dbl_expr)
-gsl_sf_airy_zero_Ai_e     Y    gsl_sf_airy_zero_Ai(uint_expr)
-gsl_sf_airy_zero_Bi_e     Y    gsl_sf_airy_zero_Bi(uint_expr)
-gsl_sf_airy_zero_Ai_deriv_eY    gsl_sf_airy_zero_Ai_deriv(uint_expr)
-gsl_sf_airy_zero_Bi_deriv_eY    gsl_sf_airy_zero_Bi_deriv(uint_expr)
-gsl_sf_bessel_J0_e        Y    gsl_sf_bessel_J0(dbl_expr)
-gsl_sf_bessel_J1_e        Y    gsl_sf_bessel_J1(dbl_expr)
-gsl_sf_bessel_Jn_e        Y    gsl_sf_bessel_Jn(int_expr,dbl_expr)
-gsl_sf_bessel_Jn_array    Y    status=gsl_sf_bessel_Jn_array(int,int,double,&var_out)
-gsl_sf_bessel_Y0_e        Y    gsl_sf_bessel_Y0(dbl_expr)
-gsl_sf_bessel_Y1_e        Y    gsl_sf_bessel_Y1(dbl_expr)
-gsl_sf_bessel_Yn_e        Y    gsl_sf_bessel_Yn(int_expr,dbl_expr)
-gsl_sf_bessel_Yn_array    Y    gsl_sf_bessel_Yn_array
-gsl_sf_bessel_I0_e        Y    gsl_sf_bessel_I0(dbl_expr)
-gsl_sf_bessel_I1_e        Y    gsl_sf_bessel_I1(dbl_expr)
-gsl_sf_bessel_In_e        Y    gsl_sf_bessel_In(int_expr,dbl_expr)
-gsl_sf_bessel_In_array    Y    status=gsl_sf_bessel_In_array(int,int,double,&var_out)
-gsl_sf_bessel_I0_scaled_e Y    gsl_sf_bessel_I0_scaled(dbl_expr)
-gsl_sf_bessel_I1_scaled_e Y    gsl_sf_bessel_I1_scaled(dbl_expr)
-gsl_sf_bessel_In_scaled_e Y    gsl_sf_bessel_In_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_In_scaled_arrayY    staus=gsl_sf_bessel_In_scaled_array(int,int,double,&var_out)
-gsl_sf_bessel_K0_e        Y    gsl_sf_bessel_K0(dbl_expr)
-gsl_sf_bessel_K1_e        Y    gsl_sf_bessel_K1(dbl_expr)
-gsl_sf_bessel_Kn_e        Y    gsl_sf_bessel_Kn(int_expr,dbl_expr)
-gsl_sf_bessel_Kn_array    Y    status=gsl_sf_bessel_Kn_array(int,int,double,&var_out)
-gsl_sf_bessel_K0_scaled_e Y    gsl_sf_bessel_K0_scaled(dbl_expr)
-gsl_sf_bessel_K1_scaled_e Y    gsl_sf_bessel_K1_scaled(dbl_expr)
-gsl_sf_bessel_Kn_scaled_e Y    gsl_sf_bessel_Kn_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_Kn_scaled_arrayY    status=gsl_sf_bessel_Kn_scaled_array(int,int,double,&var_out)
-gsl_sf_bessel_j0_e        Y    gsl_sf_bessel_J0(dbl_expr)
-gsl_sf_bessel_j1_e        Y    gsl_sf_bessel_J1(dbl_expr)
-gsl_sf_bessel_j2_e        Y    gsl_sf_bessel_j2(dbl_expr)
-gsl_sf_bessel_jl_e        Y    gsl_sf_bessel_jl(int_expr,dbl_expr)
-gsl_sf_bessel_jl_array    Y    status=gsl_sf_bessel_jl_array(int,double,&var_out)
-gsl_sf_bessel_jl_steed_arrayY    gsl_sf_bessel_jl_steed_array
-gsl_sf_bessel_y0_e        Y    gsl_sf_bessel_Y0(dbl_expr)
-gsl_sf_bessel_y1_e        Y    gsl_sf_bessel_Y1(dbl_expr)
-gsl_sf_bessel_y2_e        Y    gsl_sf_bessel_y2(dbl_expr)
-gsl_sf_bessel_yl_e        Y    gsl_sf_bessel_yl(int_expr,dbl_expr)
-gsl_sf_bessel_yl_array    Y    status=gsl_sf_bessel_yl_array(int,double,&var_out)
-gsl_sf_bessel_i0_scaled_e Y    gsl_sf_bessel_I0_scaled(dbl_expr)
-gsl_sf_bessel_i1_scaled_e Y    gsl_sf_bessel_I1_scaled(dbl_expr)
-gsl_sf_bessel_i2_scaled_e Y    gsl_sf_bessel_i2_scaled(dbl_expr)
-gsl_sf_bessel_il_scaled_e Y    gsl_sf_bessel_il_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_il_scaled_arrayY    status=gsl_sf_bessel_il_scaled_array(int,double,&var_out)
-gsl_sf_bessel_k0_scaled_e Y    gsl_sf_bessel_K0_scaled(dbl_expr)
-gsl_sf_bessel_k1_scaled_e Y    gsl_sf_bessel_K1_scaled(dbl_expr)
-gsl_sf_bessel_k2_scaled_e Y    gsl_sf_bessel_k2_scaled(dbl_expr)
-gsl_sf_bessel_kl_scaled_e Y    gsl_sf_bessel_kl_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_kl_scaled_arrayY    status=gsl_sf_bessel_kl_scaled_array(int,double,&var_out)
-gsl_sf_bessel_Jnu_e       Y    gsl_sf_bessel_Jnu(dbl_expr,dbl_expr)
-gsl_sf_bessel_Ynu_e       Y    gsl_sf_bessel_Ynu(dbl_expr,dbl_expr)
-gsl_sf_bessel_sequence_Jnu_eN    gsl_sf_bessel_sequence_Jnu
-gsl_sf_bessel_Inu_scaled_eY    gsl_sf_bessel_Inu_scaled(dbl_expr,dbl_expr)
-gsl_sf_bessel_Inu_e       Y    gsl_sf_bessel_Inu(dbl_expr,dbl_expr)
-gsl_sf_bessel_Knu_scaled_eY    gsl_sf_bessel_Knu_scaled(dbl_expr,dbl_expr)
-gsl_sf_bessel_Knu_e       Y    gsl_sf_bessel_Knu(dbl_expr,dbl_expr)
-gsl_sf_bessel_lnKnu_e     Y    gsl_sf_bessel_lnKnu(dbl_expr,dbl_expr)
-gsl_sf_bessel_zero_J0_e   Y    gsl_sf_bessel_zero_J0(uint_expr)
-gsl_sf_bessel_zero_J1_e   Y    gsl_sf_bessel_zero_J1(uint_expr)
-gsl_sf_bessel_zero_Jnu_e  N    gsl_sf_bessel_zero_Jnu
-gsl_sf_clausen_e          Y    gsl_sf_clausen(dbl_expr)
-gsl_sf_hydrogenicR_1_e    N    gsl_sf_hydrogenicR_1
-gsl_sf_hydrogenicR_e      N    gsl_sf_hydrogenicR
-gsl_sf_coulomb_wave_FG_e  N    gsl_sf_coulomb_wave_FG
-gsl_sf_coulomb_wave_F_arrayN    gsl_sf_coulomb_wave_F_array
-gsl_sf_coulomb_wave_FG_arrayN    gsl_sf_coulomb_wave_FG_array
-gsl_sf_coulomb_wave_FGp_arrayN    gsl_sf_coulomb_wave_FGp_array
-gsl_sf_coulomb_wave_sphF_arrayN    gsl_sf_coulomb_wave_sphF_array
-gsl_sf_coulomb_CL_e       N    gsl_sf_coulomb_CL
-gsl_sf_coulomb_CL_array   N    gsl_sf_coulomb_CL_array
-gsl_sf_coupling_3j_e      N    gsl_sf_coupling_3j
-gsl_sf_coupling_6j_e      N    gsl_sf_coupling_6j
-gsl_sf_coupling_RacahW_e  N    gsl_sf_coupling_RacahW
-gsl_sf_coupling_9j_e      N    gsl_sf_coupling_9j
-gsl_sf_coupling_6j_INCORRECT_eN    gsl_sf_coupling_6j_INCORRECT
-gsl_sf_dawson_e           Y    gsl_sf_dawson(dbl_expr)
-gsl_sf_debye_1_e          Y    gsl_sf_debye_1(dbl_expr)
-gsl_sf_debye_2_e          Y    gsl_sf_debye_2(dbl_expr)
-gsl_sf_debye_3_e          Y    gsl_sf_debye_3(dbl_expr)
-gsl_sf_debye_4_e          Y    gsl_sf_debye_4(dbl_expr)
-gsl_sf_debye_5_e          Y    gsl_sf_debye_5(dbl_expr)
-gsl_sf_debye_6_e          Y    gsl_sf_debye_6(dbl_expr)
-gsl_sf_dilog_e            N    gsl_sf_dilog
-gsl_sf_complex_dilog_xy_e N    gsl_sf_complex_dilog_xy_e
-gsl_sf_complex_dilog_e    N    gsl_sf_complex_dilog
-gsl_sf_complex_spence_xy_eN    gsl_sf_complex_spence_xy_e
-gsl_sf_multiply_e         N    gsl_sf_multiply
-gsl_sf_multiply_err_e     N    gsl_sf_multiply_err
-gsl_sf_ellint_Kcomp_e     Y    gsl_sf_ellint_Kcomp(dbl_expr)
-gsl_sf_ellint_Ecomp_e     Y    gsl_sf_ellint_Ecomp(dbl_expr)
-gsl_sf_ellint_Pcomp_e     Y    gsl_sf_ellint_Pcomp(dbl_expr,dbl_expr)
-gsl_sf_ellint_Dcomp_e     Y    gsl_sf_ellint_Dcomp(dbl_expr)
-gsl_sf_ellint_F_e         Y    gsl_sf_ellint_F(dbl_expr,dbl_expr)
-gsl_sf_ellint_E_e         Y    gsl_sf_ellint_E(dbl_expr,dbl_expr)
-gsl_sf_ellint_P_e         Y    gsl_sf_ellint_P(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_D_e         Y    gsl_sf_ellint_D(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_RC_e        Y    gsl_sf_ellint_RC(dbl_expr,dbl_expr)
-gsl_sf_ellint_RD_e        Y    gsl_sf_ellint_RD(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_RF_e        Y    gsl_sf_ellint_RF(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_RJ_e        Y    gsl_sf_ellint_RJ(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_elljac_e           N    gsl_sf_elljac
-gsl_sf_erfc_e             Y    gsl_sf_erfc(dbl_expr)
-gsl_sf_log_erfc_e         Y    gsl_sf_log_erfc(dbl_expr)
-gsl_sf_erf_e              Y    gsl_sf_erf(dbl_expr)
-gsl_sf_erf_Z_e            Y    gsl_sf_erf_Z(dbl_expr)
-gsl_sf_erf_Q_e            Y    gsl_sf_erf_Q(dbl_expr)
-gsl_sf_hazard_e           Y    gsl_sf_hazard(dbl_expr)
-gsl_sf_exp_e              Y    gsl_sf_exp(dbl_expr)
-gsl_sf_exp_e10_e          N    gsl_sf_exp_e10
-gsl_sf_exp_mult_e         Y    gsl_sf_exp_mult(dbl_expr,dbl_expr)
-gsl_sf_exp_mult_e10_e     N    gsl_sf_exp_mult_e10
-gsl_sf_expm1_e            Y    gsl_sf_expm1(dbl_expr)
-gsl_sf_exprel_e           Y    gsl_sf_exprel(dbl_expr)
-gsl_sf_exprel_2_e         Y    gsl_sf_exprel_2(dbl_expr)
-gsl_sf_exprel_n_e         Y    gsl_sf_exprel_n(int_expr,dbl_expr)
-gsl_sf_exp_err_e          Y    gsl_sf_exp_err(dbl_expr,dbl_expr)
-gsl_sf_exp_err_e10_e      N    gsl_sf_exp_err_e10
-gsl_sf_exp_mult_err_e     N    gsl_sf_exp_mult_err
-gsl_sf_exp_mult_err_e10_e N    gsl_sf_exp_mult_err_e10
-gsl_sf_expint_E1_e        Y    gsl_sf_expint_E1(dbl_expr)
-gsl_sf_expint_E2_e        Y    gsl_sf_expint_E2(dbl_expr)
-gsl_sf_expint_En_e        Y    gsl_sf_expint_En(int_expr,dbl_expr)
-gsl_sf_expint_E1_scaled_e Y    gsl_sf_expint_E1_scaled(dbl_expr)
-gsl_sf_expint_E2_scaled_e Y    gsl_sf_expint_E2_scaled(dbl_expr)
-gsl_sf_expint_En_scaled_e Y    gsl_sf_expint_En_scaled(int_expr,dbl_expr)
-gsl_sf_expint_Ei_e        Y    gsl_sf_expint_Ei(dbl_expr)
-gsl_sf_expint_Ei_scaled_e Y    gsl_sf_expint_Ei_scaled(dbl_expr)
-gsl_sf_Shi_e              Y    gsl_sf_Shi(dbl_expr)
-gsl_sf_Chi_e              Y    gsl_sf_Chi(dbl_expr)
-gsl_sf_expint_3_e         Y    gsl_sf_expint_3(dbl_expr)
-gsl_sf_Si_e               Y    gsl_sf_Si(dbl_expr)
-gsl_sf_Ci_e               Y    gsl_sf_Ci(dbl_expr)
-gsl_sf_atanint_e          Y    gsl_sf_atanint(dbl_expr)
-gsl_sf_fermi_dirac_m1_e   Y    gsl_sf_fermi_dirac_m1(dbl_expr)
-gsl_sf_fermi_dirac_0_e    Y    gsl_sf_fermi_dirac_0(dbl_expr)
-gsl_sf_fermi_dirac_1_e    Y    gsl_sf_fermi_dirac_1(dbl_expr)
-gsl_sf_fermi_dirac_2_e    Y    gsl_sf_fermi_dirac_2(dbl_expr)
-gsl_sf_fermi_dirac_int_e  Y    gsl_sf_fermi_dirac_int(int_expr,dbl_expr)
-gsl_sf_fermi_dirac_mhalf_eY    gsl_sf_fermi_dirac_mhalf(dbl_expr)
-gsl_sf_fermi_dirac_half_e Y    gsl_sf_fermi_dirac_half(dbl_expr)
-gsl_sf_fermi_dirac_3half_eY    gsl_sf_fermi_dirac_3half(dbl_expr)
-gsl_sf_fermi_dirac_inc_0_eY    gsl_sf_fermi_dirac_inc_0(dbl_expr,dbl_expr)
-gsl_sf_lngamma_e          Y    gsl_sf_lngamma(dbl_expr)
-gsl_sf_lngamma_sgn_e      N    gsl_sf_lngamma_sgn
-gsl_sf_gamma_e            Y    gsl_sf_gamma(dbl_expr)
-gsl_sf_gammastar_e        Y    gsl_sf_gammastar(dbl_expr)
-gsl_sf_gammainv_e         Y    gsl_sf_gammainv(dbl_expr)
-gsl_sf_lngamma_complex_e  N    gsl_sf_lngamma_complex
-gsl_sf_taylorcoeff_e      Y    gsl_sf_taylorcoeff(int_expr,dbl_expr)
-gsl_sf_fact_e             Y    gsl_sf_fact(uint_expr)
-gsl_sf_doublefact_e       Y    gsl_sf_doublefact(uint_expr)
-gsl_sf_lnfact_e           Y    gsl_sf_lnfact(uint_expr)
-gsl_sf_lndoublefact_e     Y    gsl_sf_lndoublefact(uint_expr)
-gsl_sf_lnchoose_e         N    gsl_sf_lnchoose
-gsl_sf_choose_e           N    gsl_sf_choose
-gsl_sf_lnpoch_e           Y    gsl_sf_lnpoch(dbl_expr,dbl_expr)
-gsl_sf_lnpoch_sgn_e       N    gsl_sf_lnpoch_sgn
-gsl_sf_poch_e             Y    gsl_sf_poch(dbl_expr,dbl_expr)
-gsl_sf_pochrel_e          Y    gsl_sf_pochrel(dbl_expr,dbl_expr)
-gsl_sf_gamma_inc_Q_e      Y    gsl_sf_gamma_inc_Q(dbl_expr,dbl_expr)
-gsl_sf_gamma_inc_P_e      Y    gsl_sf_gamma_inc_P(dbl_expr,dbl_expr)
-gsl_sf_gamma_inc_e        Y    gsl_sf_gamma_inc(dbl_expr,dbl_expr)
-gsl_sf_lnbeta_e           Y    gsl_sf_lnbeta(dbl_expr,dbl_expr)
-gsl_sf_lnbeta_sgn_e       N    gsl_sf_lnbeta_sgn
-gsl_sf_beta_e             Y    gsl_sf_beta(dbl_expr,dbl_expr)
-gsl_sf_beta_inc_e         N    gsl_sf_beta_inc
-gsl_sf_gegenpoly_1_e      Y    gsl_sf_gegenpoly_1(dbl_expr,dbl_expr)
-gsl_sf_gegenpoly_2_e      Y    gsl_sf_gegenpoly_2(dbl_expr,dbl_expr)
-gsl_sf_gegenpoly_3_e      Y    gsl_sf_gegenpoly_3(dbl_expr,dbl_expr)
-gsl_sf_gegenpoly_n_e      N    gsl_sf_gegenpoly_n
-gsl_sf_gegenpoly_array    Y    gsl_sf_gegenpoly_array
-gsl_sf_hyperg_0F1_e       Y    gsl_sf_hyperg_0F1(dbl_expr,dbl_expr)
-gsl_sf_hyperg_1F1_int_e   Y    gsl_sf_hyperg_1F1_int(int_expr,int_expr,dbl_expr)
-gsl_sf_hyperg_1F1_e       Y    gsl_sf_hyperg_1F1(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_U_int_e     Y    gsl_sf_hyperg_U_int(int_expr,int_expr,dbl_expr)
-gsl_sf_hyperg_U_int_e10_e N    gsl_sf_hyperg_U_int_e10
-gsl_sf_hyperg_U_e         Y    gsl_sf_hyperg_U(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_U_e10_e     N    gsl_sf_hyperg_U_e10
-gsl_sf_hyperg_2F1_e       Y    gsl_sf_hyperg_2F1(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F1_conj_e  Y    gsl_sf_hyperg_2F1_conj(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F1_renorm_eY    gsl_sf_hyperg_2F1_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F1_conj_renorm_eY    gsl_sf_hyperg_2F1_conj_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F0_e       Y    gsl_sf_hyperg_2F0(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_laguerre_1_e       Y    gsl_sf_laguerre_1(dbl_expr,dbl_expr)
-gsl_sf_laguerre_2_e       Y    gsl_sf_laguerre_2(dbl_expr,dbl_expr)
-gsl_sf_laguerre_3_e       Y    gsl_sf_laguerre_3(dbl_expr,dbl_expr)
-gsl_sf_laguerre_n_e       Y    gsl_sf_laguerre_n(int_expr,dbl_expr,dbl_expr)
-gsl_sf_lambert_W0_e       Y    gsl_sf_lambert_W0(dbl_expr)
-gsl_sf_lambert_Wm1_e      Y    gsl_sf_lambert_Wm1(dbl_expr)
-gsl_sf_legendre_Pl_e      Y    gsl_sf_legendre_Pl(int_expr,dbl_expr)
-gsl_sf_legendre_Pl_array  Y    status=gsl_sf_legendre_Pl_array(int,double,&var_out)
-gsl_sf_legendre_Pl_deriv_arrayN    gsl_sf_legendre_Pl_deriv_array
-gsl_sf_legendre_P1_e      Y    gsl_sf_legendre_P1(dbl_expr)
-gsl_sf_legendre_P2_e      Y    gsl_sf_legendre_P2(dbl_expr)
-gsl_sf_legendre_P3_e      Y    gsl_sf_legendre_P3(dbl_expr)
-gsl_sf_legendre_Q0_e      Y    gsl_sf_legendre_Q0(dbl_expr)
-gsl_sf_legendre_Q1_e      Y    gsl_sf_legendre_Q1(dbl_expr)
-gsl_sf_legendre_Ql_e      Y    gsl_sf_legendre_Ql(int_expr,dbl_expr)
-gsl_sf_legendre_Plm_e     Y    gsl_sf_legendre_Plm(int_expr,int_expr,dbl_expr)
-gsl_sf_legendre_Plm_array Y    status=gsl_sf_legendre_Plm_array(int,int,double,&var_out)
-gsl_sf_legendre_Plm_deriv_arrayN    gsl_sf_legendre_Plm_deriv_array
-gsl_sf_legendre_sphPlm_e  Y    gsl_sf_legendre_sphPlm(int_expr,int_expr,dbl_expr)
-gsl_sf_legendre_sphPlm_arrayY    status=gsl_sf_legendre_sphPlm_array(int,int,double,&var_out)
-gsl_sf_legendre_sphPlm_deriv_arrayN    gsl_sf_legendre_sphPlm_deriv_array
-gsl_sf_legendre_array_sizeN    gsl_sf_legendre_array_size
-gsl_sf_conicalP_half_e    Y    gsl_sf_conicalP_half(dbl_expr,dbl_expr)
-gsl_sf_conicalP_mhalf_e   Y    gsl_sf_conicalP_mhalf(dbl_expr,dbl_expr)
-gsl_sf_conicalP_0_e       Y    gsl_sf_conicalP_0(dbl_expr,dbl_expr)
-gsl_sf_conicalP_1_e       Y    gsl_sf_conicalP_1(dbl_expr,dbl_expr)
-gsl_sf_conicalP_sph_reg_e Y    gsl_sf_conicalP_sph_reg(int_expr,dbl_expr,dbl_expr)
-gsl_sf_conicalP_cyl_reg_e Y    gsl_sf_conicalP_cyl_reg(int_expr,dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_0_e   Y    gsl_sf_legendre_H3d_0(dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_1_e   Y    gsl_sf_legendre_H3d_1(dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_e     Y    gsl_sf_legendre_H3d(int_expr,dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_array N    gsl_sf_legendre_H3d_array
-gsl_sf_legendre_array_sizeN    gsl_sf_legendre_array_size
-gsl_sf_log_e              Y    gsl_sf_log(dbl_expr)
-gsl_sf_log_abs_e          Y    gsl_sf_log_abs(dbl_expr)
-gsl_sf_complex_log_e      N    gsl_sf_complex_log
-gsl_sf_log_1plusx_e       Y    gsl_sf_log_1plusx(dbl_expr)
-gsl_sf_log_1plusx_mx_e    Y    gsl_sf_log_1plusx_mx(dbl_expr)
-gsl_sf_mathieu_a_array    N    gsl_sf_mathieu_a_array
-gsl_sf_mathieu_b_array    N    gsl_sf_mathieu_b_array
-gsl_sf_mathieu_a          N    gsl_sf_mathieu_a
-gsl_sf_mathieu_b          N    gsl_sf_mathieu_b
-gsl_sf_mathieu_a_coeff    N    gsl_sf_mathieu_a_coeff
-gsl_sf_mathieu_b_coeff    N    gsl_sf_mathieu_b_coeff
-gsl_sf_mathieu_ce         N    gsl_sf_mathieu_ce
-gsl_sf_mathieu_se         N    gsl_sf_mathieu_se
-gsl_sf_mathieu_ce_array   N    gsl_sf_mathieu_ce_array
-gsl_sf_mathieu_se_array   N    gsl_sf_mathieu_se_array
-gsl_sf_mathieu_Mc         N    gsl_sf_mathieu_Mc
-gsl_sf_mathieu_Ms         N    gsl_sf_mathieu_Ms
-gsl_sf_mathieu_Mc_array   N    gsl_sf_mathieu_Mc_array
-gsl_sf_mathieu_Ms_array   N    gsl_sf_mathieu_Ms_array
-gsl_sf_pow_int_e          N    gsl_sf_pow_int
-gsl_sf_psi_int_e          Y    gsl_sf_psi_int(int_expr)
-gsl_sf_psi_e              Y    gsl_sf_psi(dbl_expr)
-gsl_sf_psi_1piy_e         Y    gsl_sf_psi_1piy(dbl_expr)
-gsl_sf_complex_psi_e      N    gsl_sf_complex_psi
-gsl_sf_psi_1_int_e        Y    gsl_sf_psi_1_int(int_expr)
-gsl_sf_psi_1_e            Y    gsl_sf_psi_1(dbl_expr)
-gsl_sf_psi_n_e            Y    gsl_sf_psi_n(int_expr,dbl_expr)
-gsl_sf_synchrotron_1_e    Y    gsl_sf_synchrotron_1(dbl_expr)
-gsl_sf_synchrotron_2_e    Y    gsl_sf_synchrotron_2(dbl_expr)
-gsl_sf_transport_2_e      Y    gsl_sf_transport_2(dbl_expr)
-gsl_sf_transport_3_e      Y    gsl_sf_transport_3(dbl_expr)
-gsl_sf_transport_4_e      Y    gsl_sf_transport_4(dbl_expr)
-gsl_sf_transport_5_e      Y    gsl_sf_transport_5(dbl_expr)
-gsl_sf_sin_e              N    gsl_sf_sin
-gsl_sf_cos_e              N    gsl_sf_cos
-gsl_sf_hypot_e            N    gsl_sf_hypot
-gsl_sf_complex_sin_e      N    gsl_sf_complex_sin
-gsl_sf_complex_cos_e      N    gsl_sf_complex_cos
-gsl_sf_complex_logsin_e   N    gsl_sf_complex_logsin
-gsl_sf_sinc_e             N    gsl_sf_sinc
-gsl_sf_lnsinh_e           N    gsl_sf_lnsinh
-gsl_sf_lncosh_e           N    gsl_sf_lncosh
-gsl_sf_polar_to_rect      N    gsl_sf_polar_to_rect
-gsl_sf_rect_to_polar      N    gsl_sf_rect_to_polar
-gsl_sf_sin_err_e          N    gsl_sf_sin_err
-gsl_sf_cos_err_e          N    gsl_sf_cos_err
-gsl_sf_angle_restrict_symm_eN    gsl_sf_angle_restrict_symm
-gsl_sf_angle_restrict_pos_eN    gsl_sf_angle_restrict_pos
-gsl_sf_angle_restrict_symm_err_eN    gsl_sf_angle_restrict_symm_err
-gsl_sf_angle_restrict_pos_err_eN    gsl_sf_angle_restrict_pos_err
-gsl_sf_zeta_int_e         Y    gsl_sf_zeta_int(int_expr)
-gsl_sf_zeta_e             Y    gsl_sf_zeta(dbl_expr)
-gsl_sf_zetam1_e           Y    gsl_sf_zetam1(dbl_expr)
-gsl_sf_zetam1_int_e       Y    gsl_sf_zetam1_int(int_expr)
-gsl_sf_hzeta_e            Y    gsl_sf_hzeta(dbl_expr,dbl_expr)
-gsl_sf_eta_int_e          Y    gsl_sf_eta_int(int_expr)
-gsl_sf_eta_e              Y    gsl_sf_eta(dbl_expr)
-
-   ---------- Footnotes ----------
-
-   (1) These are the GSL standard function names postfixed with `_e'.
-NCO calls these functions automatically, without the NCO command having
-to specifically indicate the `_e' function suffix.
-
-
-File: nco.info,  Node: GSL interpolation,  Next: GSL least-squares fitting,  Prev: GSL special functions,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.20 GSL interpolation
-------------------------
-
-As of version 3.9.9 (released July, 2009), NCO has wrappers to the GSL
-interpolation functions.
-
-Given a set of data points (x1,y1)...(xn, yn) the GSL functions
-computes a continuous interpolating function Y(x) such that Y(xi) = yi.
-The interpolation is piecewise smooth, and its behavior at the
-end-points is determined by the type of interpolation used. For more
-information consult the GSL manual.
-
-Interpolation with `ncap2' is a two stage process. In the first stage,
-a ram variable is created from the chosen interpolating function and
-the data set. This ram variable holds in memory a GSL interpolation
-object. In the second stage, points along the interpolating function
-are calculated. If you have a very large data set or are interpolating
-many sets then consider deleting the ram variable when it is redundant.
-Use the command `ram_delete(var_nm)'.
-
-A simple example
-
-     x_in[$lon]={1.0,2.0,3.0,4.0};
-     y_in[$lon]={1.1,1.2,1.5,1.8};
-
-     // Ram variable is declared and defined here
-     gsl_interp_cspline(&ram_sp,x_in,y_in);
-
-     x_out[$lon_grd]={1.1,2.0,3.0,3.1,3.99};
-
-     y_out=gsl_spline_eval(ram_sp,x_out);
-     y2=gsl_spline_eval(ram_sp,1.3);
-     y3=gsl_spline_eval(ram_sp,0.0);
-     ram_delete(ram_sp);
-
-     print(y_out);   // 1.10472, 1.2, 1.4, 1.42658, 1.69680002
-     print(y2);      // 1.12454
-     print(y3);      // '_'
-
-Note in the above example y3 is set to 'missing value' because 0.0
-isn't within the input X range.
-
-   * GSL Interpolation Types *
-All the interpolation functions have been implemented. These are:
-gsl_interp_linear()
-gsl_interp_polynomial()
-gsl_interp_cspline()
-gsl_interp_cspline_periodic()
-gsl_interp_akima()
-gsl_interp_akima_periodic()
-* Evaluation of Interpolating Types *
-*Implemented*
-gsl_spline_eval()
-*Unimplemented*
-gsl_spline_deriv()
-gsl_spline_deriv2()
-gsl_spline_integ()
-
-File: nco.info,  Node: GSL least-squares fitting,  Next: GSL statistics,  Prev: GSL interpolation,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.21 GSL least-squares fitting
---------------------------------
-
-Least Squares fitting is a method of calculating a straight line
-through a set of experimental data points in the XY plane. The data
-maybe weighted or unweighted. For more information please refer to the
-GSL manual.
-
-These GSL functions fall into three categories:
-*A)* Fitting data to Y=c0+c1*X
-*B)* Fitting data (through the origin) Y=c1*X
-*C)* Multi-parameter fitting (not yet implemented)
-*Section A*
-`status=*gsl_fit_linear*
-(data_x,stride_x,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&sumsq)
-'
-
-*Input variables*: data_x, stride_x, data_y, stride_y, n
-From the above variables an X and Y vector both of length 'n' are
-derived.  If data_x or data_y is less than type double then it is
-converted to type `double'.  It is up to you to do bounds checking on
-the input data.  For example if stride_x=3 and n=8 then the size of
-data_x must be at least 24
-
-*Output variables*: c0, c1, cov00, cov01, cov11,sumsq
-The '&' prefix indicates that these are call-by-reference variables.
-If any of the output variables don't exist prior to the call then they
-are created on the fly as scalar variables of type `double'. If they
-already exist then their existing value is overwritten. If the function
-call is successful then `status=0'.
-
-   `status=
-*gsl_fit_wlinear*(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&chisq)
-'
-
-Similar to the above call except it creates an additional weighting
-vector from the variables data_w, stride_w, n
-
-   ` data_y_out=*gsl_fit_linear_est*(data_x,c0,c1,cov00,cov01,cov11) '
-
-This function calculates y values along the line Y=c0+c1*X
-*Section B*
-`status=*gsl_fit_mul*(data_x,stride_x,data_y,stride_y,n,&c1,&cov11,&sumsq)
-'
-
-*Input variables*: data_x, stride_x, data_y, stride_y, n
-From the above variables an X and Y vector both of length 'n' are
-derived.  If data_x or data_y is less than type `double' then it is
-converted to type `double'.
-*Output variables*: c1,cov11,sumsq
-`status=
-*gsl_fit_wmul*(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&c1,&cov11,&sumsq)
-'
-
-Similar to the above call except it creates an additional weighting
-vector from the variables data_w, stride_w, n
-
-   ` data_y_out=*gsl_fit_mul_est*(data_x,c0,c1,cov11) '
-
-This function calculates y values along the line Y=c1*X
-The below example shows *gsl_fit_linear()* in action
-
-     defdim("d1",10);
-     xin[d1]={1,2,3,4,5,6,7,8,9,10.0};
-     yin[d1]={3.1,6.2,9.1,12.2,15.1,18.2,21.3,24.0,27.0,30.0};
-     gsl_fit_linear(xin,1,yin,1,$d1.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
-     print(c0);  // 0.2
-     print(c1);  // 2.98545454545
-
-
-     defdim("e1",4);
-     xout[e1]={1.0,3.0,4.0,11};
-     yout[e1]=0.0;
-
-     yout=gsl_fit_linear_est(xout, c0,c1, cov00,cov01, cov11, sumsq);
-
-     print(yout);  // 3.18545454545 ,9.15636363636, ,12.1418181818 ,33.04
-
-
-File: nco.info,  Node: GSL statistics,  Next: GSL random number generation,  Prev: GSL least-squares fitting,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.22 GSL statistics
----------------------
-
-Wrappers for most of the GSL Statistical functions have been
-implemented. The GSL function names include a type specifier (except
-for type double functions). To obtain the equivalent NCO name simply
-remove the type specifier; then depending on the data type the
-appropriate GSL function  is called. The weighed statistical functions
-e.g ` gsl_stats_wvariance()' are only defined in GSL for floating point
-types; so your data must of type `float' or `double' otherwise ncap2
-will emit an error message. To view the implemented functions use the
-shell command `ncap2 -f|grep _stats'
-
-GSL Functions
-     short gsl_stats_max (short data[], size_t stride, size_t n);
-     double gsl_stats_int_mean (int data[], size_t stride, size_t n);
-     double gsl_stats_short_sd_with_fixed_mean (short data[], size_t stride, size_t n, double mean);
-     double gsl_stats_wmean (double w[], size_t wstride, double data[], size_t stride, size_t n);
-     double gsl_stats_quantile_from_sorted_data (double sorted_data[], size_t stride, size_t n, double f) ;
-
-Equivalent ncap2 wrapper functions
-     short gsl_stats_max (var_data, data_stride, n);
-     double gsl_stats_mean (var_data, data_stride, n);
-     double gsl_stats_sd_with_fixed_mean (var_data, data_stride, n, var_mean);
-     double gsl_stats_wmean (var_weight, weight_stride, var_data, data_stride, n, var_mean);
-     double gsl_stats_quantile_from_sorted_data (var_sorted_data, data_stride, n, var_f) ;
-
-GSL has no notion of missing values or dimensionality beyond one. If
-your data has missing values which you want ignored in the calculations
-then use the `ncap2' built in aggregate functions( *note Methods and
-functions:: ). The GSL functions operate on a vector of values created
-from the var_data/stride/n arguments. The ncap wrappers check that
-there is no bounding error with regard to the size of the data and the
-final value in the vector.
-
-   Some examples
-
-     a1[time]={1,2,3,4,5,6,7,8,9,10 };
-
-     a1_avg=gsl_stats_mean(a1,1,10);
-     print(a1_avg); // 5.5
-
-     a1_var=gsl_stats_variance(a1,4,3);
-     print(a1_var); // 16.0
-
-     // bounding error, vector attempts to access element a1(10)
-     a1_sd=gsl_stats_sd(a1,5,3);
-
-For functions with the signature *func_nm(var_data,data_stride,n)*, one
-may omit the second or third arguments.  The default value for STRIDE
-is `1'.  The default value for N is `1+(data.size()-1)/stride'.
-
-     // Following statements are equvalent
-     n2=gsl_stats_max(a1,1,10)
-     n2=gsl_stats_max(a1,1);
-     n2=gsl_stats_max(a1);
-
-     // Following statements are equvalent
-     n3=gsl_stats_median_from_sorted_data(a1,2,5);
-     n3=gsl_stats_median_from_sorted_data(a1,2);
-
-     // Following statements are NOT equvalent
-     n4=gsl_stats_kurtosis(a1,3,2);
-     n4=gsl_stats_kurtosis(a1,3); //default n=4
-
-   The following example illustrates some of the weighted functions.
-The data are randomly generated.  In this case the value of the weight
-for each datum is either 0.0 or 1.0
-     defdim("r1",2000);
-     data[r1]=1.0;
-
-     // Fill with random numbers [0.0,10.0)
-     data=10.0*gsl_rng_uniform(data);
-
-     // Create a weighting variable
-     weight=(data>4.0);
-
-     wmean=gsl_stats_wmean(weight,1,data,1,$r1.size);
-     print(wmean);
-
-     wsd=gsl_stats_wsd(weight,1,data,1,$r1.size);
-     print(wsd);
-
-     // number of values in data that are greater than 4
-     weight_size=weight.total();
-     print(weight_size);
-
-     // print min/max of data
-     dmin=data.gsl_stats_min();
-     dmax=data.gsl_stats_max();
-     print(dmin);print(dmax);
-
-
-File: nco.info,  Node: GSL random number generation,  Next: Examples ncap2,  Prev: GSL statistics,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.23 GSL random number generation
------------------------------------
-
-The GSL library has a large number of random number generators. In
-addition there are a large set of functions for turning uniform random
-numbers into discrete or continuous probabilty distributions. The
-random number generator algorithms vary in terms of quality numbers
-output, speed of execution and maximium number output. For more
-information see the GSL documentation. The algorithm and seed are set
-via environment variables, these are picked up by the `ncap2' code.
-
-*Setup*
-The number algorithm is set by the environment variable `GSL_RNG_TYPE'.
-If this variable isn't set then the default rng algorithm is
-gsl_rng_19937. The seed is set with the environment variable
-`GSL_RNG_SEED'. The following wrapper functions in ncap2 provide
-information about the chosen algorithm.
-`gsl_rng_min()'
-     the minimium value returned by the rng algorithm.
-
-`gsl_rng_max()'
-     the maximium value returned by the rng algorithm.
-
-*Uniformly Distributed Random Numbers*
-`gsl_rng_get(var_in)'
-     This function returns var_in with integers from the chosen rng
-     algorithm. The min and max values depend uoon the chosen rng
-     algorthm.
-
-`gsl_rng_uniform_int(var_in)'
-     This function returns var_in with random integers from 0 to n-1.
-     The value n must be less than or equal to the maximium value of
-     the chosen rng algorithm.
-
-`gsl_rng_uniform(var_in)'
-     This function returns var_in with double precision numbers in the
-     range [0.0,1). The range includes 0.0 and excludes 1.0.
-
-`gsl_rng_uniform_pos(var_in)'
-     This function returns var_in with double precision numbers in the
-     range (0.0,1), excluding both 0.0 and 1.0.
-
-Below are examples of `gsl_rng_get()' and `gsl_rng_uniform_int()' in
-action.
-
-     export GSL_RNG_TYPE=ranlux
-     export GSL_RNG_SEED=10
-     ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc
-     // 10 random numbers from the range 0 - 16777215
-     // a2=9056646, 12776696, 1011656, 13354708, 5139066, 1388751, 11163902, 7730127, 15531355, 10387694 ;
-
-     ncap2 -v -O -s 'a1[time]=21;a2=gsl_rng_uniform_int(a1).sort();' in.nc foo.nc
-     // 10 random numbers from the range 0 - 20
-     a2 = 1, 1, 6, 9, 11, 13, 13, 15, 16, 19 ;
-
-The following example produces an `ncap2' runtime error. This is
-because the chose rng algorithm has a maximium value greater than `
-NC_MAX_INT=2147483647 '; the wrapper functions to `gsl_rng_get()' and
-`gsl_rng_uniform_int()' return variable of type `NC_INT'. Please be
-aware of this when using random number distribution functions functions
-from the GSL library which return `unsigned int'. Examples of these are
-`gsl_ran_geometric()' and `gsl_ran_pascal()'.
-
-     export GSL_RNG_TYPE=mt19937
-     ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc
-
-To find the maximium value of the chosen rng algorithm use the
-following code snippet.
-     ncap2 -v -O -s 'rng_max=gsl_rng_max();print(rng_max)' in.nc foo.nc
-
-*Random Number Distributions*
-The GSL library has a rich set of random number disribution functions.
-The library also provides cumulative distribution functions and inverse
-cumulative distribution functions sometimes referred to a quantile
-functions. To see whats available on your build use the shell command
-`ncap2 -f|grep -e _ran -e _cdf'.
-
-The following examples all return variables of type `NC_INT'
-     defdim("out",15);
-     a1[$out]=0.5;
-     a2=gsl_ran_binomial(a1,30).sort();
-     //a2 = 10, 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 17, 22 ;
-     a3=gsl_ran_geometric(a2).sort();
-     //a2 = 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4, 5 ;
-     a4=gsl_ran_pascal(a2,50);
-     //a5 = 37, 40, 40, 42, 43, 45, 46, 49, 52, 58, 60, 62, 62, 65, 67 ;
-
-The following all return variables of type `NC_DOUBLE';
-     defdim("b1",1000);
-     b1[$b1]=0.8;
-     b2=gsl_ran_exponential(b1);
-     b2_avg=b2.avg();
-     print(b2_avg);
-     // b2_avg = 0.756047976787
-
-     b3=gsl_ran_gaussian(b1);
-     b3_avg=b3.avg();
-     b3_rms=b3.rms();
-     print(b3_avg);
-     // b3_avg = -0.00903446534258;
-     print(b3_rms);
-     // b3_rms = 0.81162979889;
-
-     b4[$b1]=10.0;
-     b5[$b1]=20.0;
-     b6=gsl_ran_flat(b4,b5);
-     b6_avg=b6.avg();
-     print(b6_avg);
-     // b6_avg=15.0588129413
-
-
-File: nco.info,  Node: Examples ncap2,  Next: Intrinsic mathematical methods,  Prev: GSL random number generation,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.24 Examples ncap2
----------------------
-
-See the `ncap.in' and `ncap2.in' scripts released with NCO for more
-complete demonstrations of `ncap2' functionality (script available
-on-line at `http://nco.sf.net/ncap2.in').
-
-   Define new attribute NEW for existing variable ONE as twice the
-existing attribute DOUBLE_ATT of variable ATT_VAR:
-     ncap2 -s 'one at new=2*att_var at double_att' in.nc out.nc
-
-   Average variables of mixed types (result is of type `double'):
-     ncap2 -s 'average=(var_float+var_double+var_int)/3' in.nc out.nc
-
-   Multiple commands may be given to `ncap2' in three ways.  First, the
-commands may be placed in a script which is executed, e.g., `tst.nco'.
-Second, the commands may be individually specified with multiple `-s'
-arguments to the same `ncap2' invocation.  Third, the commands may be
-chained together into a single `-s' argument to `ncap2'.  Assuming the
-file `tst.nco' contains the commands `a=3;b=4;c=sqrt(a^2+b^2);', then
-the following `ncap2' invocations produce identical results:
-     ncap2 -v -S tst.nco in.nc out.nc
-     ncap2 -v -s 'a=3' -s 'b=4' -s 'c=sqrt(a^2+b^2)' in.nc out.nc
-     ncap2 -v -s 'a=3;b=4;c=sqrt(a^2+b^2)' in.nc out.nc
-   The second and third examples show that `ncap2' does not require
-that a trailing semi-colon `;' be placed at the end of a `-s' argument,
-although a trailing semi-colon `;' is always allowed.  However,
-semi-colons are required to separate individual assignment statements
-chained together as a single `-s' argument.
-
-   `ncap2' may be used to "grow" dimensions, i.e., to increase
-dimension sizes without altering existing data.  Say `in.nc' has
-`ORO(lat,lon)' and the user wishes a new file with
-`new_ORO(new_lat,new_lon)' that contains zeros in the undefined
-portions of the new grid.
-     defdim("new_lat",$lat.size+1); // Define new dimension sizes
-     defdim("new_lon",$lon.size+1);
-     new_ORO[$new_lat,$new_lon]=0.0f; // Initialize to zero
-     new_ORO(0:$lat.size-1,0:$lon.size-1)=ORO; // Fill valid data
-   The commands to define new coordinate variables `new_lat' and
-`new_lon' in the output file follow a similar pattern.  One would might
-store these commands in a script `grow.nco' and then execute the script
-with
-     ncap2 -v -S grow.nco in.nc out.nc
-
-   Imagine you wish to create a binary flag based on the value of an
-array.  The flag should have value 1.0 where the array exceeds 1.0, and
-value 0.0 elsewhere.  This example creates the binary flag `ORO_flg' in
-`out.nc' from the continuous array named `ORO' in `in.nc'.
-     ncap2 -s 'ORO_flg=(ORO > 1.0)' in.nc out.nc
-   Suppose your task is to change all values of `ORO' which equal 2.0
-to the new value 3.0:
-     ncap2 -s 'ORO_msk=(ORO==2.0);ORO=ORO_msk*3.0+!ORO_msk*ORO' in.nc out.nc
-   This creates and uses `ORO_msk' to mask the subsequent arithmetic
-operation.  Values of `ORO' are only changed where `ORO_msk' is true,
-i.e., where `ORO' equals 2.0
-Using the `where' statement the above code simplifies to :
-     ncap2 -s 'where(ORO==2.0) ORO=3.0;' in.nc foo.nc
-
-   This example uses `ncap2' to compute the covariance of two variables.
-Let the variables U and V be the horizontal wind components.  The
-"covariance" of U and V is defined as the time mean product of the
-deviations of U and V from their respective time means.  Symbolically,
-the covariance
-
-   [U'V'] = [UV]-[U][V] where [X] denotes the time-average of X and X'
-
-   denotes the deviation from the time-mean.  The covariance tells us
-how much of the correlation of two signals arises from the signal
-fluctuations versus the mean signals.  Sometimes this is called the
-"eddy covariance".  We will store the covariance in the variable
-`uprmvprm'.
-     ncwa -O -a time -v u,v in.nc foo.nc # Compute time mean of u,v
-     ncrename -O -v u,uavg -v v,vavg foo.nc # Rename to avoid conflict
-     ncks -A -v uavg,vavg foo.nc in.nc # Place time means with originals
-     ncap2 -O -s 'uprmvprm=u*v-uavg*vavg' in.nc in.nc # Covariance
-     ncra -O -v uprmvprm in.nc foo.nc # Time-mean covariance
-   The mathematically inclined will note that the same covariance would
-be obtained by replacing the step involving `ncap2' with
-     ncap2 -O -s 'uprmvprm=(u-uavg)*(v-vavg)' foo.nc foo.nc # Covariance
-
-   As of NCO version 3.1.8 (December, 2006), `ncap2' can compute
-averages, and thus covariances, by itself:
-     ncap2 -s 'uavg=u.avg($time);vavg=v.avg($time);uprmvprm=u*v-uavg*vavg' \
-           -s 'uprmvrpmavg=uprmvprm.avg($time)' in.nc foo.nc
-   We have not seen a simpler method to script and execute powerful
-arithmetic than `ncap2'.
-
-   `ncap2' utilizes many meta-characters (e.g., `$', `?', `;', `()',
-`[]') that can confuse the command-line shell if not quoted properly.
-The issues are the same as those which arise in utilizing extended
-regular expressions to subset variables (*note Subsetting Variables::).
-The example above will fail with no quotes and with double quotes.
-This is because shell globbing tries to "interpolate" the value of
-`$time' from the shell environment unless it is quoted:
-     ncap2 -s 'uavg=u.avg($time)'  in.nc foo.nc # Correct (recommended)
-     ncap2 -s  uavg=u.avg('$time') in.nc foo.nc # Correct (and dangerous)
-     ncap2 -s  uavg=u.avg($time)   in.nc foo.nc # Fails ($time = '')
-     ncap2 -s "uavg=u.avg($time)"  in.nc foo.nc # Fails ($time = '')
-   Without the single quotes, the shell replaces `$time' with an empty
-string.  The command `ncap2' receives from the shell is `uavg=u.avg()'.
-This causes `ncap2' to average over all dimensions rather than just the
-TIME dimension, and unintended consequence.
-
-   We recommend using single quotes to protect `ncap2' command-line
-scripts from the shell, even when such protection is not strictly
-necessary.  Expert users may violate this rule to exploit the ability
-to use shell variables in `ncap2' command-line scripts (*note CCSM
-Example::).  In such cases it may be necessary to use the shell
-backslash character `\' to protect the `ncap2' meta-character.
-
-   Whether a degenerate record dimension is desirable or undesirable
-depends on the application.  Often a degenerate TIME dimension is
-useful, e.g., for concatentating, but it may cause problems with
-arithmetic.  Such is the case in the above example, where the first
-step employs `ncwa' rather than `ncra' for the time-averaging.  Of
-course the numerical results are the same with both operators.  The
-difference is that, unless `-b' is specified, `ncwa' writes no TIME
-dimension to the output file, while `ncra' defaults to keeping TIME as
-a degenerate (size 1) dimension.  Appending `u' and `v' to the output
-file would cause `ncks' to try to expand the degenerate time axis of
-`uavg' and `vavg' to the size of the non-degenerate TIME dimension in
-the input file.  Thus the append (`ncks -A') command would be undefined
-(and should fail) in this case.  Equally important is the `-C' argument
-(*note Subsetting Coordinate Variables::) to `ncwa' to prevent any
-scalar TIME variable from being written to the output file.  Knowing
-when to use `ncwa -a time' rather than the default `ncra' for
-time-averaging takes, well, time.
-
-
-File: nco.info,  Node: Intrinsic mathematical methods,  Next: Operators precedence and associativity,  Prev: Examples ncap2,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.25 Intrinsic mathematical methods
--------------------------------------
-
-`ncap2' supports the standard mathematical functions supplied with most
-operating systems.  Standard calculator notation is used for addition
-`+', subtraction `-', multiplication `*', division `/', exponentiation
-`^', and modulus `%'.  The available elementary mathematical functions
-are: 
-`abs(x)'
-     "Absolute value" Absolute value of X.  Example: abs(-1) = 1
-
-`acos(x)'
-     "Arc-cosine" Arc-cosine of X where X is specified in radians.
-     Example: acos(1.0) = 0.0
-
-`acosh(x)'
-     "Hyperbolic arc-cosine" Hyperbolic arc-cosine of X where X is
-     specified in radians.  Example: acosh(1.0) = 0.0
-
-`asin(x)'
-     "Arc-sine" Arc-sine of X where X is specified in radians.  Example:
-     asin(1.0) = 1.57079632679489661922
-
-`asinh(x)'
-     "Hyperbolic arc-sine" Hyperbolic arc-sine of X where X is
-     specified in radians.  Example: asinh(1.0) = 0.88137358702
-
-`atan(x)'
-     "Arc-tangent" Arc-tangent of X where X is specified in radians
-     between -pi/2 and pi/2.  Example: atan(1.0) =
-     0.78539816339744830961
-
-`atan2(y,x)'
-     "Arc-tangent2" Arc-tangent of Y/X :Example atan2(1,3) =
-     0.321689857
-
-`atanh(x)'
-     "Hyperbolic arc-tangent" Hyperbolic arc-tangent of X where X is
-     specified in radians between -pi/2 and pi/2.  Example:
-     atanh(3.14159265358979323844) = 1.0
-
-`ceil(x)'
-     "Ceil" Ceiling of X. Smallest integral value not less than
-     argument.  Example: ceil(0.1) = 1.0
-
-`cos(x)'
-     "Cosine" Cosine of X where X is specified in radians.  Example:
-     cos(0.0) = 1.0
-
-`cosh(x)'
-     "Hyperbolic cosine" Hyperbolic cosine of X where X is specified in
-     radians.  Example: cosh(0.0) = 1.0
-
-`erf(x)'
-     "Error function" Error function of X where X is specified between
-     -1 and 1.  Example: erf(1.0) = 0.842701
-
-`erfc(x)'
-     "Complementary error function" Complementary error function of X
-     where X is specified between -1 and 1.  Example: erfc(1.0) =
-     0.15729920705
-
-`exp(x)'
-     "Exponential" Exponential of X, e^x.  Example: exp(1.0) =
-     2.71828182845904523536
-
-`floor(x)'
-     "Floor" Floor of X. Largest integral value not greater than
-     argument.  Example: floor(1.9) = 1
-
-`gamma(x)'
-     "Gamma function" Gamma function of X, Gamma(x).  The well-known
-     and loved continuous factorial function.  Example: gamma(0.5) =
-     sqrt(pi)
-
-`gamma_inc_P(x)'
-     "Incomplete Gamma function" Incomplete Gamma function of parameter
-     A and variable X, gamma_inc_P(a,x).  One of the four incomplete
-     gamma functions.  Example: gamma_inc_P(1,1) = 1-1/e
-
-`ln(x)'
-     "Natural Logarithm" Natural logarithm of X, ln(x).  Example:
-     ln(2.71828182845904523536) = 1.0
-
-`log(x)'
-     "Natural Logarithm" Exact synonym for `ln(x)'.
-
-`log10(x)'
-     "Base 10 Logarithm" Base 10 logarithm of X, log10(x).  Example:
-     log(10.0) = 1.0
-
-`nearbyint(x)'
-     "Round inexactly" Nearest integer to X is returned in floating
-     point format.  No exceptions are raised for "inexact conversions".
-     Example: nearbyint(0.1) = 0.0
-
-`pow(x,y)'
-     "Power" Value of X is raised to the power of Y.  Exceptions are
-     raised for "domain errors".  Due to type-limitations in the
-     C language `pow' function, integer arguments are promoted (*note
-     Type Conversion::) to type `NC_FLOAT' before evaluation.  Example:
-     pow(2,3) = 8
-
-`rint(x)'
-     "Round exactly" Nearest integer to X is returned in floating point
-     format.  Exceptions are raised for "inexact conversions".  Example:
-     rint(0.1) = 0
-
-`round(x)'
-     "Round" Nearest integer to X is returned in floating point format.
-     Round halfway cases away from zero, regardless of current IEEE
-     rounding direction.  Example: round(0.5) = 1.0
-
-`sin(x)'
-     "Sine" Sine of X where X is specified in radians.  Example:
-     sin(1.57079632679489661922) = 1.0
-
-`sinh(x)'
-     "Hyperbolic sine" Hyperbolic sine of X where X is specified in
-     radians.  Example: sinh(1.0) = 1.1752
-
-`sqrt(x)'
-     "Square Root" Square Root of X, sqrt(x).  Example: sqrt(4.0) = 2.0
-
-`tan(x)'
-     "Tangent" Tangent of X where X is specified in radians.  Example:
-     tan(0.78539816339744830961) = 1.0
-
-`tanh(x)'
-     "Hyperbolic tangent" Hyperbolic tangent of X where X is specified
-     in radians.  Example: tanh(1.0) = 0.761594155956
-
-`trunc(x)'
-     "Truncate" Nearest integer to X is returned in floating point
-     format.  Round halfway cases toward zero, regardless of current
-     IEEE rounding direction.  Example: trunc(0.5) = 0.0
-   The complete list of mathematical functions supported is
-platform-specific.  Functions mandated by ANSI C are _guaranteed_ to be
-present and are indicated with an asterisk (1).  and are indicated with
-an asterisk.  Use the `-f' (or `fnc_tbl' or `prn_fnc_tbl') switch to
-print a complete list of functions supported on your platform.  (2)
-
-
-
-   ---------- Footnotes ----------
-
-   (1) ANSI C compilers are guaranteed to support double precision
-versions of these functions.  These functions normally operate on
-netCDF variables of type `NC_DOUBLE' without having to perform
-intrinsic conversions.  For example, ANSI compilers provide `sin' for
-the sine of C-type `double' variables.  The ANSI standard does not
-require, but many compilers provide, an extended set of mathematical
-functions that apply to single (`float') and quadruple (`long double')
-precision variables.  Using these functions (e.g., `sinf' for `float',
-`sinl' for `long double'), when available, is (presumably) more
-efficient than casting variables to type `double', performing the
-operation, and then re-casting.  NCO uses the faster intrinsic
-functions when they are available, and uses the casting method when
-they are not.
-
-   (2) Linux supports more of these intrinsic functions than other OSs.
-
-
-File: nco.info,  Node: Operators precedence and associativity,  Next: ID Quoting,  Prev: Intrinsic mathematical methods,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.26 Operators precedence and associativity
----------------------------------------------
-
-This page lists the `ncap' operators in order of precedence (highest to
-lowest). Their associativity indicates in what order operators of equal
-precedence in an expression are applied.
-
-Operator      Description                                   Associativity
---------------------------------------------------------------------------- 
-`++ --'       Postfix Increment/Decrement                   Right to Left
-`()'          Parentheses (function call)                   
-`.'           Method call                                   
-
-`++ --'       Prefix Increment/Decrement                    Right to Left
-`+ -'         Unary  Plus/Minus                             
-`!'           Logical Not                                   
-
-`^'           Power of Operator                             Right to Left
-
-`* / %'       Multiply/Divide/Modulus                       Left To Right
-
-`+ -'         Addition/Subtraction                          Left To Right
-
-`>> <<'       Fortran style array clipping                  Left to Right
-
-
-`< <='        Less than/Less than or equal to               Left to Right
-`> >='        Greater than/Greater than or equal to         
-
-`== !='       Equal to/Not equal to                         Left to Right
-
-`&&'          Logical AND                                   Left to Right
-
-`||'          Logical OR                                    Left to Right
-
-`?:'          Ternary Operator                              Right to Left
-
-`='           Assignment                                    Right to Left
-`+= -='       Addition/subtraction assignment               
-`*= /='       Multiplication/division assignment            
-
-
-File: nco.info,  Node: ID Quoting,  Prev: Operators precedence and associativity,  Up: ncap2 netCDF Arithmetic Processor
-
-4.1.27 ID Quoting
------------------
-
-In this section when I refer to a name I mean a variable name,
-attribute name or a dimension name The allowed characters in a valid
-netCDF name vary from release to release. (See end section). If you
-want to use metacharacters in a name or use a method name as a variable
-name then the name has to be quoted wherever it occurs.
-
-The default NCO name is specified by the regular expressions:
-
-     DGT:     ('0'..'9');
-     LPH:     ( 'a'..'z' | 'A'..'Z' | '_' );
-     name:    (LPH)(LPH|DGT)+
-
-The first character of a valid name must be alphabetic or the
-underscore. Any subsequent characters must be alphanumeric or
-underscore. ( e.g a1,_23, hell_is_666 )
-
-The valid characters in a quoted name are specified by the regular
-expressions:
-     LPHDGT:  ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9');
-     name:    (LPHDGT|'-'|'+'|'.'|'('|')'|':' )+  ;
-
-Quote a variable:
-'avg' , '10_+10','set_miss' '+-90field' , '-test'=10.0d
-Quote a attribute:
-'three at 10', 'set_mss at +10', '666 at hell', 't1 at +units'="kelvin"
-Quote a dimension:
-'$10', '$t1-', '$-odd', c1['$10','$t1-']=23.0d
-
-The following comments are from the netCDF library definitions and
-detail the naming conventions for each release.  netcdf-3.5.1
-netcdf-3.6.0-p1
-netcdf-3.6.1
-netcdf-3.6.2
-     /*
-      * ( [a-zA-Z]|[0-9]|'_'|'-'|'+'|'.'|'|':'|'@'|'('|')' )+
-      * Verify that a name string is valid
-      * CDL syntax, eg, all the characters are
-      * alphanumeric, '-', '_', '+', or '.'.
-      * Also permit ':', '@', '(', or ')' in names for chemists currently making
-      * use of these characters, but don't document until ncgen and ncdump can
-      * also handle these characters in names.
-      */
-
-netcdf-3.6.3
-netcdf-4.0 Final  2008/08/28
-     /*
-      * Verify that a name string is valid syntax.  The allowed name
-      * syntax (in RE form) is:
-      *
-      * ([a-zA-Z_]|{UTF8})([^\x00-\x1F\x7F/]|{UTF8})*
-      *
-      * where UTF8 represents a multibyte UTF-8 encoding.  Also, no
-      * trailing spaces are permitted in names.  This definition
-      * must be consistent with the one in ncgen.l.  We do not allow '/'
-      * because HDF5 does not permit slashes in names as slash is used as a
-      * group separator.  If UTF-8 is supported, then a multi-byte UTF-8
-      * character can occur anywhere within an identifier.  We later
-      * normalize UTF-8 strings to NFC to facilitate matching and queries.
-      */
-
-
-File: nco.info,  Node: ncatted netCDF Attribute Editor,  Next: ncbo netCDF Binary Operator,  Prev: ncap2 netCDF Arithmetic Processor,  Up: Operator Reference Manual
-
-4.2 `ncatted' netCDF Attribute Editor
-=====================================
-
-SYNTAX
-     ncatted [-a ATT_DSC] [-a ...] [-D DBG] [-h] [--hdr_pad NBR]
-     [-l PATH] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     INPUT-FILE [[OUTPUT-FILE]]
-
-DESCRIPTION
-
-   `ncatted' edits attributes in a netCDF file.  If you are editing
-attributes then you are spending too much time in the world of
-metadata, and `ncatted' was written to get you back out as quickly and
-painlessly as possible.  `ncatted' can "append", "create", "delete",
-"modify", and "overwrite" attributes (all explained below).
-Furthermore, `ncatted' allows each editing operation to be applied to
-every variable in a file.  This saves time when changing attribute
-conventions throughout a file.  Note that `ncatted' interprets
-character attributes (i.e., attributes of type `NC_CHAR') as strings.
-
-   Because repeated use of `ncatted' can considerably increase the size
-of the `history' global attribute (*note History Attribute::), the `-h'
-switch is provided to override automatically appending the command to
-the `history' global attribute in the OUTPUT-FILE.
-
-   When `ncatted' is used to change the `_FillValue' attribute, it
-changes the associated missing data self-consistently.  If the internal
-floating point representation of a missing value, e.g., 1.0e36, differs
-between two machines then netCDF files produced on those machines will
-have incompatible missing values.  This allows `ncatted' to change the
-missing values in files from different machines to a single value so
-that the files may then be concatenated together, e.g., by `ncrcat',
-without losing any information.  *Note Missing Values::, for more
-information.
-
-   The key to mastering `ncatted' is understanding the meaning of the
-structure that describes the attribute modification, ATT_DSC specified
-by the required option `-a' or `--attribute'.  Each ATT_DSC contains
-five elements, which makes using `ncatted' somewhat complicated, but
-powerful.  The ATT_DSC argument structure contains five arguments in the
-following order:
-ATT_DSC = ATT_NM, VAR_NM, MODE, ATT_TYPE, ATT_VAL
-ATT_NM
-     Attribute name.  Example: `units'
-
-VAR_NM
-     Variable name.  Regular expressions (*note Subsetting Variables::)
-     are accepted and will select any matching variable names.
-     Example: `pressure', `'^H2O''.
-
-MODE
-     Edit mode abbreviation.  Example: `a'.  See below for complete
-     listing of valid values of MODE.
-
-ATT_TYPE
-     Attribute type abbreviation.  Example: `c'.  See below for
-     complete listing of valid values of ATT_TYPE.
-
-ATT_VAL
-     Attribute value.  Example: `pascal'.
-There should be no empty space between these five consecutive arguments.
-The description of these arguments follows in their order of appearance.
-
-   The value of ATT_NM is the name of the attribute you want to edit.
-This meaning of this should be clear to all users of the `ncatted'
-operator.  If ATT_NM is omitted (i.e., left blank) and "Delete" mode is
-selected, then all attributes associated with the specified variable
-will be deleted.
-
-   The value of VAR_NM is the name of the variable containing the
-attribute (named ATT_NM) that you want to edit.  There are three very
-important and useful exceptions to this rule.  The value of VAR_NM can
-also be used to direct `ncatted' to edit global attributes, or to
-repeat the editing operation for every variable in a file.  A value of
-VAR_NM of "global" indicates that ATT_NM refers to a global attribute,
-rather than a particular variable's attribute.  This is the method
-`ncatted' supports for editing global attributes.  If VAR_NM is left
-blank, on the other hand, then `ncatted' attempts to perform the
-editing operation on every variable in the file.  This option may be
-convenient to use if you decide to change the conventions you use for
-describing the data.  Finally, as mentioned above, VAR_NM may be
-specified as a regular expression.
-
-   The value of MODE is a single character abbreviation (`a', `c', `d',
-`m', or `o') standing for one of five editing modes:
-`a'
-     "Append".  Append value ATT_VAL to current VAR_NM attribute ATT_NM
-     value ATT_VAL, if any.  If VAR_NM does not have an attribute
-     ATT_NM, there is no effect.
-
-`c'
-     "Create".  Create variable VAR_NM attribute ATT_NM with ATT_VAL if
-     ATT_NM does not yet exist.  If VAR_NM already has an attribute
-     ATT_NM, there is no effect.
-
-`d'
-     "Delete".  Delete current VAR_NM attribute ATT_NM.  If VAR_NM does
-     not have an attribute ATT_NM, there is no effect.  If ATT_NM is
-     omitted (left blank), then all attributes associated with the
-     specified variable are automatically deleted.  When "Delete" mode
-     is selected, the ATT_TYPE and ATT_VAL arguments are superfluous
-     and may be left blank.
-
-`m'
-     "Modify".  Change value of current VAR_NM attribute ATT_NM to value
-     ATT_VAL.  If VAR_NM does not have an attribute ATT_NM, there is no
-     effect.
-
-`o'
-     "Overwrite".  Write attribute ATT_NM with value ATT_VAL to variable
-     VAR_NM, overwriting existing attribute ATT_NM, if any.  This is
-     the default mode.
-
-   The value of ATT_TYPE is a single character abbreviation (`f', `d',
-`l', `i', `s', `c', `b', `u') or a short string standing for one of the
-twelve primitive netCDF data types:
-`f'
-     "Float".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_FLOAT'.
-
-`d'
-     "Double".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_DOUBLE'.
-
-`i, l'
-     "Integer" or "Long".  Value(s) specified in ATT_VAL will be stored
-     as netCDF intrinsic type `NC_INT'.
-
-`s'
-     "Short".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_SHORT'.
-
-`c'
-     "Char".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_CHAR'.
-
-`b'
-     "Byte".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_BYTE'.
-
-`ub'
-     "Unsigned Byte".  Value(s) specified in ATT_VAL will be stored as
-     netCDF intrinsic type `NC_UBYTE'.
-
-`us'
-     "Unsigned Short".  Value(s) specified in ATT_VAL will be stored as
-     netCDF intrinsic type `NC_USHORT'.
-
-`u, ui, ul'
-     "Unsigned Int".  Value(s) specified in ATT_VAL will be stored as
-     netCDF intrinsic type `NC_UINT'.
-
-`ll, int64'
-     "Int64".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_INT64'.
-
-`ull, uint64'
-     "Uint64".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_UINT64'.
-
-`sng'
-     "String".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_STRING'.
-The specification of ATT_TYPE is optional (and is ignored) in "Delete"
-mode.
-
-   The value of ATT_VAL is what you want to change attribute ATT_NM to
-contain.  The specification of ATT_VAL is optional in "Delete" (and is
-ignored) mode.  Attribute values for all types besides `NC_CHAR' must
-have an attribute length of at least one.  Thus ATT_VAL may be a single
-value or one-dimensional array of elements of type `att_type'.  If the
-ATT_VAL is not set or is set to empty space, and the ATT_TYPE is
-`NC_CHAR', e.g., `-a units,T,o,c,""' or `-a units,T,o,c,', then the
-corresponding attribute is set to have zero length.  When specifying an
-array of values, it is safest to enclose ATT_VAL in single or double
-quotes, e.g., `-a levels,T,o,s,"1,2,3,4"' or `-a
-levels,T,o,s,'1,2,3,4''.  The quotes are strictly unnecessary around
-ATT_VAL except when ATT_VAL contains characters which would confuse the
-calling shell, such as spaces, commas, and wildcard characters.
-
-   NCO processing of `NC_CHAR' attributes is a bit like Perl in that it
-attempts to do what you want by default (but this sometimes causes
-unexpected results if you want unusual data storage).  If the ATT_TYPE
-is `NC_CHAR' then the argument is interpreted as a string and it may
-contain C-language escape sequences, e.g., `\n', which NCO will
-interpret before writing anything to disk.  NCO translates valid escape
-sequences and stores the appropriate ASCII code instead.  Since two
-byte escape sequences, e.g., `\n', represent one-byte ASCII codes,
-e.g., ASCII 10 (decimal), the stored string attribute is one byte
-shorter than the input string length for each embedded escape sequence.
-The most frequently used C-language escape sequences are `\n' (for
-linefeed) and `\t' (for horizontal tab).  These sequences in particular
-allow convenient editing of formatted text attributes.  The other valid
-ASCII codes are `\a', `\b', `\f', `\r', `\v', and `\\'.  *Note ncks
-netCDF Kitchen Sink::, for more examples of string formatting (with the
-`ncks' `-s' option) with special characters.
-
-   Analogous to `printf', other special characters are also allowed by
-`ncatted' if they are "protected" by a backslash.  The characters `"',
-`'', `?', and `\' may be input to the shell as `\"', `\'', `\?', and
-`\\'.  NCO simply strips away the leading backslash from these
-characters before editing the attribute.  No other characters require
-protection by a backslash.  Backslashes which precede any other
-character (e.g., `3', `m', `$', `|', `&', `@', `%', `{', and `}') will
-not be filtered and will be included in the attribute.
-
-   Note that the NUL character `\0' which terminates C language strings
-is assumed and need not be explicitly specified.  If `\0' is input, it
-is translated to the NUL character.  However, this will make the
-subsequent portion of the string, if any, invisible to C standard
-library string functions.  And that may cause unintended consequences.
-Because of these context-sensitive rules, one must use `ncatted' with
-care in order to store data, rather than text strings, in an attribute
-of type `NC_CHAR'.
-
-EXAMPLES
-
-   Append the string "Data version 2.0.\n" to the global attribute
-`history':
-     ncatted -a history,global,a,c,"Data version 2.0\n" in.nc
-   Note the use of embedded C language `printf()'-style escape
-sequences.
-
-   Change the value of the `long_name' attribute for variable `T' from
-whatever it currently is to "temperature":
-     ncatted -a long_name,T,o,c,temperature in.nc
-
-   Delete all existing `units' attributes:
-     ncatted -a units,,d,, in.nc
-   The value of VAR_NM was left blank in order to select all variables
-in the file.  The values of ATT_TYPE and ATT_VAL were left blank because
-they are superfluous in "Delete" mode.
-
-   Delete all attributes associated with the `tpt' variable, and delete
-all global attributes
-     ncatted -a ,tpt,d,, -a ,global,d,, in.nc
-   The value of ATT_NM was left blank in order to select all attributes
-associated with the variable.  To delete all global attributes, simply
-replace `tpt' with `global' in the above.
-
-   Modify all existing `units' attributes to "meter second-1":
-     ncatted -a units,,m,c,"meter second-1" in.nc
-
-   Add a `units' attribute of "kilogram kilogram-1" to all variables
-whose first three characters are `H2O':
-     ncatted -a units,'^H2O',c,c,"kilogram kilogram-1" in.nc
-
-   Overwrite the `quanta' attribute of variable `energy' to an array of
-four integers.
-     ncatted -O -a quanta,energy,o,s,"010,101,111,121" in.nc
-
-   As of NCO 3.9.6 (January, 2009), variable names arguments to
-`ncatted' may contain "extended regular expressions".  Create `isotope'
-attributes for all variables containing `H2O' in their names.
-     ncatted -O -a isotope,'^H2O*',c,s,"18" in.nc
-   See *note Subsetting Variables:: for more details.
-
-   Demonstrate input of C-language escape sequences (e.g., `\n') and
-other special characters (e.g., `\"')
-     ncatted -h -a special,global,o,c,
-     '\nDouble quote: \"\nTwo consecutive double quotes: \"\"\n
-     Single quote: Beyond my shell abilities!\nBackslash: \\\n
-     Two consecutive backslashes: \\\\\nQuestion mark: \?\n' in.nc
-   Note that the entire attribute is protected from the shell by single
-quotes.  These outer single quotes are necessary for interactive use,
-but may be omitted in batch scripts.
-
-
-File: nco.info,  Node: ncbo netCDF Binary Operator,  Next: ncea netCDF Ensemble Averager,  Prev: ncatted netCDF Attribute Editor,  Up: Operator Reference Manual
-
-4.3 `ncbo' netCDF Binary Operator
-=================================
-
-SYNTAX
-     ncbo [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h]
-     [-L DFL_LVL] [-l PATH] [-O] [-o FILE_3] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x] [-y OP_TYP]
-     FILE_1 FILE_2 [FILE_3]
-
-DESCRIPTION
-
-   `ncbo' performs binary operations on variables in FILE_1 and the
-corresponding variables (those with the same name) in FILE_2 and stores
-the results in FILE_3.  The binary operation operates on the entire
-files (modulo any excluded variables).  *Note Missing Values::, for
-treatment of missing values.  One of the four standard arithmetic
-binary operations currently supported must be selected with the `-y
-OP_TYP' switch (or long options `--op_typ' or `--operation').  The
-valid binary operations for `ncbo', their definitions, corresponding
-values of the OP_TYP key, and alternate invocations are:
-"Addition"
-     Definition: FILE_3 = FILE_1 + FILE_2
-     Alternate invocation: `ncadd'
-     OP_TYP key values: `add', `+', `addition'
-     Examples: `ncbo --op_typ=add 1.nc 2.nc 3.nc', `ncadd 1.nc 2.nc
-     3.nc'
-"Subtraction"
-     Definition: FILE_3 = FILE_1 - FILE_2
-     Alternate invocations: `ncdiff', `ncsub', `ncsubtract'
-     OP_TYP key values: `sbt', `-', `dff', `diff', `sub', `subtract',
-     `subtraction'
-     Examples: `ncbo --op_typ=- 1.nc 2.nc 3.nc', `ncdiff 1.nc 2.nc 3.nc'
-"Multiplication"
-     Definition: FILE_3 = FILE_1 * FILE_2
-     Alternate invocations: `ncmult', `ncmultiply'
-     OP_TYP key values: `mlt', `*', `mult', `multiply', `multiplication'
-     Examples: `ncbo --op_typ=mlt 1.nc 2.nc 3.nc', `ncmult 1.nc 2.nc
-     3.nc'
-"Division"
-     Definition: FILE_3 = FILE_1 / FILE_2
-     Alternate invocation: `ncdivide'
-     OP_TYP key values: `dvd', `/', `divide', `division'
-     Examples: `ncbo --op_typ=/ 1.nc 2.nc 3.nc', `ncdivide 1.nc 2.nc
-     3.nc'
-   Care should be taken when using the shortest form of key values,
-i.e., `+', `-', `*', and `/'.  Some of these single characters may have
-special meanings to the shell (1).  Place these characters inside
-quotes to keep them from being interpreted (globbed) by the shell (2).  For
-example, the following commands are equivalent
-     ncbo --op_typ=* 1.nc 2.nc 3.nc # Dangerous (shell may try to glob)
-     ncbo --op_typ='*' 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-     ncbo --op_typ="*" 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-     ncbo --op_typ=mlt 1.nc 2.nc 3.nc
-     ncbo --op_typ=mult 1.nc 2.nc 3.nc
-     ncbo --op_typ=multiply 1.nc 2.nc 3.nc
-     ncbo --op_typ=multiplication 1.nc 2.nc 3.nc
-     ncmult 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmult'
-     ncmultiply 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmultiply'
-   No particular argument or invocation form is preferred.  Users are
-encouraged to use the forms which are most intuitive to them.
-
-   Normally, `ncbo' will fail unless an operation type is specified
-with `-y' (equivalent to `--op_typ').  You may create exceptions to
-this rule to suit your particular tastes, in conformance with your
-site's policy on "symbolic links" to executables (files of a different
-name point to the actual executable).  For many years, `ncdiff' was the
-main binary file operator.  As a result, many users prefer to continue
-invoking `ncdiff' rather than memorizing a new command (`ncbo -y SBT')
-which behaves identically to the original `ncdiff' command.  However,
-from a software maintenance standpoint, maintaining a distinct
-executable for each binary operation (e.g., `ncadd') is untenable, and
-a single executable, `ncbo', is desirable.  To maintain backward
-compatibility, therefore, NCO automatically creates a symbolic link
-from `ncbo' to `ncdiff'.  Thus `ncdiff' is called an "alternate
-invocation" of `ncbo'.  `ncbo' supports many additional alternate
-invocations which must be manually activated.  Should users or system
-adminitrators decide to activate them, the procedure is simple.  For
-example, to use `ncadd' instead of `ncbo --op_typ=add', simply create a
-symbolic link from `ncbo' to `ncadd' (3).  The alternatate invocations
-supported for each operation type are listed above.  Alternatively,
-users may always define `ncadd' as an "alias" to `ncbo --op_typ=add'
-(4).
-
-   It is important to maintain portability in NCO scripts.  Therefore
-we recommend that site-specfic invocations (e.g., `ncadd') be used only
-in interactive sessions from the command-line.  For scripts, we
-recommend using the full invocation (e.g., `ncbo --op_typ=add').  This
-ensures portability of scripts between users and sites.
-
-   `ncbo' operates (e.g., adds) variables in FILE_2 with the
-corresponding variables (those with the same name) in FILE_1 and stores
-the results in FILE_3.  Variables in FILE_2 are "broadcast" to conform
-to the corresponding variable in FILE_1 if necessary, but the reverse is
-not true.  Broadcasting a variable means creating data in non-existing
-dimensions from the data in existing dimensions.  For example, a two
-dimensional variable in FILE_2 can be subtracted from a four, three, or
-two (but not one or zero) dimensional variable (of the same name) in
-`file_1'.  This functionality allows the user to compute anomalies from
-the mean.  Note that variables in FILE_1 are _not_ broadcast to conform
-to the dimensions in FILE_2.  In the future, we will broadcast
-variables in FILE_1, if necessary to conform to their counterparts in
-FILE_2.  Thus, presently, the number of dimensions, or "rank", of any
-processed variable in FILE_1 must be greater than or equal to the rank
-of the same variable in FILE_2.  Furthermore, the size of all
-dimensions common to both FILE_1 and FILE_2 must be equal.
-
-   When computing anomalies from the mean it is often the case that
-FILE_2 was created by applying an averaging operator to a file with
-initially the same dimensions as FILE_1 (often FILE_1 itself).  In
-these cases, creating FILE_2 with `ncra' rather than `ncwa' will cause
-the `ncbo' operation to fail.  For concreteness say the record
-dimension in `file_1' is `time'.  If FILE_2 were created by averaging
-FILE_1 over the `time' dimension with the `ncra' operator rather than
-with the `ncwa' operator, then FILE_2 will have a `time' dimension of
-size 1 rather than having no `time' dimension at all (5).  In this case
-the input files to `ncbo', FILE_1 and FILE_2, will have unequally sized
-`time' dimensions which causes `ncbo' to fail.  To prevent this from
-occuring, use `ncwa' to remove the `time' dimension from FILE_2.  See
-the example below.
-
-   `ncbo' never operates on coordinate variables or variables of type
-`NC_CHAR' or `NC_BYTE'.  This ensures that coordinates like (e.g.,
-latitude and longitude) are physically meaningful in the output file,
-FILE_3.  This behavior is hardcoded.  `ncbo' applies special rules to
-some CF-defined (and/or NCAR CCSM or NCAR CCM fields) such as `ORO'.
-See *note CF Conventions:: for a complete description.  Finally, we
-note that `ncflint' (*note ncflint netCDF File Interpolator::) is
-designed for file interpolation.  As such, it also performs file
-subtraction, addition, multiplication, albeit in a more convoluted way
-than `ncbo'.
-
-EXAMPLES
-
-   Say files `85_0112.nc' and `86_0112.nc' each contain 12 months of
-data.  Compute the change in the monthly averages from 1985 to 1986:
-     ncbo -op_typ=sub 86_0112.nc 85_0112.nc 86m85_0112.nc
-     ncdiff 86_0112.nc 85_0112.nc 86m85_0112.nc
-
-   The following examples demonstrate the broadcasting feature of
-`ncbo'.  Say we wish to compute the monthly anomalies of `T' from the
-yearly average of `T' for the year 1985.  First we create the 1985
-average from the monthly data, which is stored with the record
-dimension `time'.
-     ncra 85_0112.nc 85.nc
-     ncwa -O -a time 85.nc 85.nc
-   The second command, `ncwa', gets rid of the `time' dimension of
-size 1 that `ncra' left in `85.nc'.  Now none of the variables in
-`85.nc' has a `time' dimension.  A quicker way to accomplish this is to
-use `ncwa' from the beginning:
-     ncwa -a time 85_0112.nc 85.nc
-   We are now ready to use `ncbo' to compute the anomalies for 1985:
-     ncdiff -v T 85_0112.nc 85.nc t_anm_85_0112.nc
-   Each of the 12 records in `t_anm_85_0112.nc' now contains the
-monthly deviation of `T' from the annual mean of `T' for each gridpoint.
-
-   Say we wish to compute the monthly gridpoint anomalies from the zonal
-annual mean.  A "zonal mean" is a quantity that has been averaged over
-the longitudinal (or X) direction.  First we use `ncwa' to average over
-longitudinal direction `lon', creating `85_x.nc', the zonal mean of
-`85.nc'.  Then we use `ncbo' to subtract the zonal annual means from the
-monthly gridpoint data:
-     ncwa -a lon 85.nc 85_x.nc
-     ncdiff 85_0112.nc 85_x.nc tx_anm_85_0112.nc
-   This examples works assuming `85_0112.nc' has dimensions `time' and
-`lon', and that `85_x.nc' has no `time' or `lon' dimension.
-
-   As a final example, say we have five years of monthly data (i.e.,
-60 months) stored in `8501_8912.nc' and we wish to create a file which
-contains the twelve month seasonal cycle of the average monthly anomaly
-from the five-year mean of this data.  The following method is just one
-permutation of many which will accomplish the same result.  First use
-`ncwa' to create the five-year mean:
-     ncwa -a time 8501_8912.nc 8589.nc
-   Next use `ncbo' to create a file containing the difference of each
-month's data from the five-year mean:
-     ncbo 8501_8912.nc 8589.nc t_anm_8501_8912.nc
-   Now use `ncks' to group the five January anomalies together in one
-file, and use `ncra' to create the average anomaly for all five
-Januarys.  These commands are embedded in a shell loop so they are
-repeated for all twelve months: 
-     for idx in {1..12}; do # Bash Shell (version 3.0+)
-       idx=`printf "%02d" ${idx}` # Zero-pad to preserve order
-       ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-       ncra foo.${idx} t_anm_8589_${idx}.nc
-     done
-     for idx in 01 02 03 04 05 06 07 08 09 10 11 12; do # Bourne Shell
-       ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-       ncra foo.${idx} t_anm_8589_${idx}.nc
-     done
-     foreach idx (01 02 03 04 05 06 07 08 09 10 11 12) # C Shell
-       ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-       ncra foo.${idx} t_anm_8589_${idx}.nc
-     end
-   Note that `ncra' understands the `stride' argument so the two
-commands inside the loop may be combined into the single command
-     ncra -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-   Finally, use `ncrcat' to concatenate the 12 average monthly anomaly
-files into one twelve-record file which contains the entire seasonal
-cycle of the monthly anomalies:
-     ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc
-
-   ---------- Footnotes ----------
-
-   (1) A naked (i.e., unprotected or unquoted) `*' is a wildcard
-character.  A naked `-' may confuse the command line parser.  A naked
-`+' and `/' are relatively harmless.
-
-   (2) The widely used shell Bash correctly interprets all these
-special characters even when they are not quoted.  That is, Bash does
-not prevent NCO from correctly interpreting the intended arithmetic
-operation when the following arguments are given (without quotes) to
-`ncbo': `--op_typ=+', `--op_typ=-', `--op_typ=*', and `--op_typ=/'
-
-   (3) The command to do this is `ln -s -f ncbo ncadd'
-
-   (4) The command to do this is `alias ncadd='ncbo --op_typ=add''
-
-   (5) This is because `ncra' collapses the record dimension to a size
-of 1 (making it a "degenerate" dimension), but does not remove it,
-while, unless `-b' is given, `ncwa' removes all averaged dimensions.
-In other words, by default `ncra' changes variable size but not rank,
-while, `ncwa' changes both variable size and rank.
-
-
-File: nco.info,  Node: ncea netCDF Ensemble Averager,  Next: ncecat netCDF Ensemble Concatenator,  Prev: ncbo netCDF Binary Operator,  Up: Operator Reference Manual
-
-4.4 `ncea' netCDF Ensemble Averager
-===================================
-
-SYNTAX
-     ncea [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x] [-y OP_TYP]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncea' performs gridpoint averages of variables across an arbitrary
-number (an "ensemble") of INPUT-FILES, with each file receiving an
-equal weight in the average.  `ncea' averages entire files, and weights
-each file evenly.  This is distinct from `ncra', which only averages
-over the record dimension (e.g., TIME), and weights each record in the
-record dimension evenly,
-
-   Variables in the OUTPUT-FILE are the same size as the variable in
-each of the INPUT-FILES, and all INPUT-FILES must be the same size.  The
-only exception is that `ncea' allows files to differ in the record
-dimension size if the requested record hyperslab (*note Hyperslabs::)
-resolves to the same size for all files.  `ncea' recomputes the record
-dimension hyperslab limits for each input file so that coordinate
-limits may be used to select equal length timeseries from unequal
-length files.  This simplifies analysis of unequal length timeseries
-from simulation ensembles (e.g., the CMIP IPCC AR4 archive).
-
-   `ncea' _always averages_ coordinate variables regardless of the
-arithmetic operation type performed on the non-coordinate variables.
-(*note Operation Types::).  All dimensions, including the record
-dimension, are treated identically and preserved in the OUTPUT-FILE.
-
-   *Note Averaging vs. Concatenating::, for a description of the
-distinctions between the various averagers and concatenators.  As a
-multi-file operator, `ncea' will read the list of INPUT-FILES from
-`stdin' if they are not specified as positional arguments on the
-command line (*note Large Numbers of Files::).
-
-   The file is the logical unit of organization for the results of many
-scientific studies.  Often one wishes to generate a file which is the
-gridpoint average of many separate files.  This may be to reduce
-statistical noise by combining the results of a large number of
-experiments, or it may simply be a step in a procedure whose goal is to
-compute anomalies from a mean state.  In any case, when one desires to
-generate a file whose properties are the mean of all the input files,
-then `ncea' is the operator to use.
-
-   `ncea' only allows coordinate variables to be processed by the
-linear average, minimum, and maximum operations.  `ncea' will return
-the linear average of coordinates unless extrema are explicitly
-requested.  Other requested operations (e.g., square-root, RMS) are
-applied only to non-coordinate variables.  In these cases the linear
-average of the coordinate variable will be returned.
-
-EXAMPLES
-
-   Consider a model experiment which generated five realizations of one
-year of data, say 1985.  You can imagine that the experimenter slightly
-perturbs the initial conditions of the problem before generating each
-new solution.  Assume each file contains all twelve months (a seasonal
-cycle) of data and we want to produce a single file containing the
-ensemble average (mean) seasonal cycle.  Here the numeric filename
-suffix denotes the experiment number (_not_ the month):
-     ncea 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-     ncea 85_0[1-5].nc 85.nc
-     ncea -n 5,2,1 85_01.nc 85.nc
-   These three commands produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.  The output file, `85.nc', is the same size as the inputs
-files.  It contains 12 months of data (which might or might not be
-stored in the record dimension, depending on the input files), but each
-value in the output file is the average of the five values in the input
-files.
-
-   In the previous example, the user could have obtained the ensemble
-average values in a particular spatio-temporal region by adding a
-hyperslab argument to the command, e.g.,
-     ncea -d time,0,2 -d lat,-23.5,23.5 85_??.nc 85.nc
-   In this case the output file would contain only three slices of data
-in the TIME dimension.  These three slices are the average of the first
-three slices from the input files.  Additionally, only data inside the
-tropics is included.
-
-
-File: nco.info,  Node: ncecat netCDF Ensemble Concatenator,  Next: ncflint netCDF File Interpolator,  Prev: ncea netCDF Ensemble Averager,  Up: Operator Reference Manual
-
-4.5 `ncecat' netCDF Ensemble Concatenator
-=========================================
-
-SYNTAX
-     ncecat [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-M] [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-u ULM_NM] [-v VAR[,...]] [-X ...] [-x]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncecat' concatenates an arbitrary number of input files into a
-single output file.  The INPUT-FILES are stored consecutively as
-records in OUTPUT-FILE.  Each variable (except coordinate variables) in
-each input file becomes one record in the same variable in the output
-file.  Coordinate variables are not concatenated, they are instead
-simply copied from the first input file to the OUTPUT-FILE.  All
-INPUT-FILES must contain all extracted variables (or else there would
-be "gaps" in the output file).
-
-   A new record dimension is the glue which binds the input file data
-together.  The new record dimension name is, by default, "record".  Its
-name can be specified with the `-u ULM_NM' short option (or the
-`--ulm_nm' or `rcd_nm' long options).
-
-   Each extracted variable must be constant in size and rank across all
-INPUT-FILES.  The only exception is that `ncecat' allows files to
-differ in the record dimension size if the requested record hyperslab
-(*note Hyperslabs::) resolves to the same size for all files.  This
-allows easier gluing/averaging of unequal length timeseries from
-simulation ensembles (e.g., the IPCC AR4 archive).
-
-   Thus, the OUTPUT-FILE size is the sum of the sizes of the extracted
-variables in the input files.  *Note Averaging vs. Concatenating::, for
-a description of the distinctions between the various averagers and
-concatenators.  As a multi-file operator, `ncecat' will read the list of
-INPUT-FILES from `stdin' if they are not specified as positional
-arguments on the command line (*note Large Numbers of Files::).
-
-   Turn off global metadata copying.  By default all NCO operators copy
-the global metadata of the first input file into OUTPUT-FILE.  This
-helps preserve the provenance of the output data.  However, the use of
-metadata is burgeoning and is not uncommon to encounter files with
-excessive amounts of extraneous metadata.  Extracting small bits of
-data from such files leads to output files which are much larger than
-necessary due to the automatically copied metadata.  `ncecat' supports
-turning off the default copying of global metadata via the `-M' switch
-(or its long option equivalents, `--glb_mtd_spr' and
-`--global_metadata_suppress').
-
-   Consider five realizations, `85a.nc', `85b.nc', ... `85e.nc' of 1985
-predictions from the same climate model.  Then `ncecat 85?.nc
-85_ens.nc' glues the individual realizations together into the single
-file, `85_ens.nc'.  If an input variable was dimensioned [`lat',`lon'],
-it will by default have dimensions [`record',`lat',`lon'] in the output
-file.  A restriction of `ncecat' is that the hyperslabs of the
-processed variables must be the same from file to file.  Normally this
-means all the input files are the same size, and contain data on
-different realizations of the same variables.
-
-   Concatenating a variable packed with different scales across multiple
-datasets is beyond the capabilities of `ncecat' (and `ncrcat', the
-other concatenator (*note Concatenation::).  `ncecat' does not unpack
-data, it simply _copies_ the data from the INPUT-FILES, and the
-metadata from the _first_ INPUT-FILE, to the OUTPUT-FILE.  This means
-that data compressed with a packing convention must use the identical
-packing parameters (e.g., `scale_factor' and `add_offset') for a given
-variable across _all_ input files.  Otherwise the concatenated dataset
-will not unpack correctly.  The workaround for cases where the packing
-parameters differ across INPUT-FILES requires three steps: First,
-unpack the data using `ncpdq'.  Second, concatenate the unpacked data
-using `ncecat', Third, re-pack the result with `ncpdq'.
-
-EXAMPLES
-
-   Consider a model experiment which generated five realizations of one
-year of data, say 1985.  You can imagine that the experimenter slightly
-perturbs the initial conditions of the problem before generating each
-new solution.  Assume each file contains all twelve months (a seasonal
-cycle) of data and we want to produce a single file containing all the
-seasonal cycles.  Here the numeric filename suffix denotes the
-experiment number (_not_ the month):
-     ncecat 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-     ncecat 85_0[1-5].nc 85.nc
-     ncecat -n 5,2,1 85_01.nc 85.nc
-   These three commands produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.  The output file, `85.nc', is five times the size as a single
-INPUT-FILE.  It contains 60 months of data.
-
-   One often prefers that the (new) record dimension have a more
-descriptive, context-based name than simply "record".  This is easily
-accomplished with the `-u ULM_NM' switch:
-     ncecat -u realization 85_0[1-5].nc 85.nc
-   Users are more likely to understand the data processing history when
-such descriptive coordinates are used.
-
-   Consider a file with an existing record dimension named `time'.  and
-suppose the user wishes to convert `time' from a record dimension to a
-non-record dimension.  This may be useful, for example, when the user
-has another use for the record variable.  The procedure is to use
-`ncecat' followed by `ncwa': 
-     ncecat in.nc out.nc # Convert time to non-record dimension
-     ncwa -a record in.nc out.nc # Remove new degenerate record dimension
-   The second step removes the degenerate record dimension.  See *note
-ncpdq netCDF Permute Dimensions Quickly:: and *note ncks netCDF Kitchen
-Sink:: for other methods of of changing variable dimensionality,
-including the record dimension.
-
-
-File: nco.info,  Node: ncflint netCDF File Interpolator,  Next: ncks netCDF Kitchen Sink,  Prev: ncecat netCDF Ensemble Concatenator,  Up: Operator Reference Manual
-
-4.6 `ncflint' netCDF File Interpolator
-======================================
-
-SYNTAX
-     ncflint [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-i VAR,VAL3]
-     [-L DFL_LVL] [-l PATH] [-O] [-o FILE_3] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-w WGT1[,WGT2]] [-X ...] [-x]
-     FILE_1 FILE_2 [FILE_3]
-
-DESCRIPTION
-
-   `ncflint' creates an output file that is a linear combination of the
-input files.  This linear combination is a weighted average, a
-normalized weighted average, or an interpolation of the input files.
-Coordinate variables are not acted upon in any case, they are simply
-copied from FILE_1.
-
-   There are two conceptually distinct methods of using `ncflint'.  The
-first method is to specify the weight each input file contributes to
-the output file.  In this method, the value VAL3 of a variable in the
-output file FILE_3 is determined from its values VAL1 and VAL2 in the
-two input files according to
-
-   VAL3 = WGT1*VAL1 + WGT2*VAL2
-
-   .  Here at least WGT1, and, optionally, WGT2, are specified on the
-command line with the `-w' (or `--weight' or `--wgt_var') switch.  If
-only WGT1 is specified then WGT2 is automatically computed as WGT2 = 1
-- WGT1.  Note that weights larger than 1 are allowed.  Thus it is
-possible to specify WGT1 = 2 and WGT2 = -3.  One can use this
-functionality to multiply all the values in a given file by a constant.
-
-   The second method of using `ncflint' is to specify the interpolation
-option with `-i' (or with the `--ntp' or `--interpolate' long options).
-This is really the inverse of the first method in the following sense.
-When the user specifies the weights directly, `ncflint' has no work to
-do besides multiplying the input values by their respective weights and
-adding the results together to produce the output values.  It makes
-sense to use this when the weights are known _a priori_.
-
-   Another class of problems has the "arrival value" (i.e., VAL3) of a
-particular variable VAR known _a priori_.  In this case, the implied
-weights can always be inferred by examining the values of VAR in the
-input files.  This results in one equation in two unknowns, WGT1 and
-WGT2:
-
-   VAL3 = WGT1*VAL1 + WGT2*VAL2
-
-   .  Unique determination of the weights requires imposing the
-additional constraint of normalization on the weights: WGT1 + WGT2 = 1.
-Thus, to use the interpolation option, the user specifies VAR and VAL3
-with the `-i' option.  `ncflint' then computes WGT1 and WGT2, and uses
-these weights on all variables to generate the output file.  Although
-VAR may have any number of dimensions in the input files, it must
-represent a single, scalar value.  Thus any dimensions associated with
-VAR must be "degenerate", i.e., of size one.
-
-   If neither `-i' nor `-w' is specified on the command line, `ncflint'
-defaults to weighting each input file equally in the output file.  This
-is equivalent to specifying `-w 0.5' or `-w 0.5,0.5'.  Attempting to
-specify both `-i' and `-w' methods in the same command is an error.
-
-   `ncflint' does not interpolate variables of type `NC_CHAR' and
-`NC_BYTE'.  This behavior is hardcoded.
-
-   Depending on your intuition, `ncflint' may treat missing values
-unexpectedly.  Consider a point where the value in one input file, say
-VAL1, equals the missing value MSS_VAL_1 and, at the same point, the
-corresponding value in the other input file VAL2 is not misssing (i.e.,
-does not equal MSS_VAL_2).  There are three plausible answers, and this
-creates ambiguity.
-
-   Option one is to set VAL3 = MSS_VAL_1.  The rationale is that
-`ncflint' is, at heart, an interpolator and interpolation involving a
-missing value is intrinsically undefined.  `ncflint' currently
-implements this behavior since it is the most conservative and least
-likely to lead to misinterpretation.
-
-   Option two is to output the weighted valid data point, i.e.,
-
-   VAL3 = WGT2*VAL2
-
-   .  The rationale for this behavior is that interpolation is really a
-weighted average of known points, so `ncflint' should weight the valid
-point.
-
-   Option three is to return the _unweighted_ valid point, i.e., VAL3 =
-VAL2.  This behavior would appeal to those who use `ncflint' to
-estimate data using the closest available data.  When a point is not
-bracketed by valid data on both sides, it is better to return the known
-datum than no datum at all.
-
-   The current implementation uses the first approach, Option one.  If
-you have strong opinions on this matter, let us know, since we are
-willing to implement the other approaches as options if there is enough
-interest.
-
-EXAMPLES
-
-   Although it has other uses, the interpolation feature was designed
-to interpolate FILE_3 to a time between existing files.  Consider input
-files `85.nc' and `87.nc' containing variables describing the state of
-a physical system at times `time' = 85 and `time' = 87.  Assume each
-file contains its timestamp in the scalar variable `time'.  Then, to
-linearly interpolate to a file `86.nc' which describes the state of the
-system at time at `time' = 86, we would use
-     ncflint -i time,86 85.nc 87.nc 86.nc
-
-   Say you have observational data covering January and April 1985 in
-two files named `85_01.nc' and `85_04.nc', respectively.  Then you can
-estimate the values for February and March by interpolating the
-existing data as follows.  Combine `85_01.nc' and `85_04.nc' in a 2:1
-ratio to make `85_02.nc':
-     ncflint -w 0.667 85_01.nc 85_04.nc 85_02.nc
-     ncflint -w 0.667,0.333 85_01.nc 85_04.nc 85_02.nc
-
-   Multiply `85.nc' by 3 and by -2 and add them together to make
-`tst.nc':
-     ncflint -w 3,-2 85.nc 85.nc tst.nc
-   This is an example of a null operation, so `tst.nc' should be
-identical (within machine precision) to `85.nc'.
-
-   Add `85.nc' to `86.nc' to obtain `85p86.nc', then subtract `86.nc'
-from `85.nc' to obtain `85m86.nc'
-     ncflint -w 1,1 85.nc 86.nc 85p86.nc
-     ncflint -w 1,-1 85.nc 86.nc 85m86.nc
-     ncdiff 85.nc 86.nc 85m86.nc
-   Thus `ncflint' can be used to mimic some `ncbo' operations.  However
-this is not a good idea in practice because `ncflint' does not
-broadcast (*note ncbo netCDF Binary Operator::) conforming variables
-during arithmetic.  Thus the final two commands would produce identical
-results except that `ncflint' would fail if any variables needed to be
-broadcast.
-
-   Rescale the dimensional units of the surface pressure `prs_sfc' from
-Pascals to hectopascals (millibars)
-     ncflint -C -v prs_sfc -w 0.01,0.0 in.nc in.nc out.nc
-     ncatted -a units,prs_sfc,o,c,millibar out.nc
-
-
-File: nco.info,  Node: ncks netCDF Kitchen Sink,  Next: ncpdq netCDF Permute Dimensions Quickly,  Prev: ncflint netCDF File Interpolator,  Up: Operator Reference Manual
-
-4.7 `ncks' netCDF Kitchen Sink
-==============================
-
-SYNTAX
-     ncks [-3] [-4] [-6] [-A] [-a] [-B] [-b BINARY-FILE] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [--fix_rec_dmn]
-     [-F] [-H] [-h] [--hdr_pad NBR] [-L DFL_LVL] [-l PATH] [-M] [-m] [--mk_rec_dmn DIM]
-     [-O] [-o OUTPUT-FILE] [-P] [-p PATH] [-Q] [-q] [-R] [-r]
-     [-s FORMAT] [-u] [-v VAR[,...]] [-X ...] [-x]
-     INPUT-FILE [[OUTPUT-FILE]]
-
-DESCRIPTION
-
-   `ncks' combines selected features of `ncdump', `ncextr', and the
-nccut and ncpaste specifications into one versatile utility.  `ncks'
-extracts a subset of the data from INPUT-FILE and prints it as ASCII
-text to `stdout', writes it in flat binary format to `binary-file', and
-writes (or pastes) it in netCDF format to OUTPUT-FILE.
-
-   `ncks' will print netCDF data in ASCII format to `stdout', like
-`ncdump', but with these differences: `ncks' prints data in a tabular
-format intended to be easy to search for the data you want, one datum
-per screen line, with all dimension subscripts and coordinate values
-(if any) preceding the datum.  Option `-s' (or long options `--sng_fmt'
-and `--string') lets the user format the data using C-style format
-strings.
-
-   Options `-a', `-F' , `-H', `-M', `-m', `-P', `-Q', `-q', `-s', and
-`-u' (and their long option counterparts) control the formatted
-appearance of the data.
-
-   `ncks' extracts (and optionally creates a new netCDF file comprised
-of) only selected variables from the input file (similar to the old
-`ncextr' specification).  Only variables and coordinates may be
-specifically included or excluded--all global attributes and any
-attribute associated with an extracted variable are copied to the
-screen and/or output netCDF file.  Options `-c', `-C', `-v', and `-x'
-(and their long option synonyms) control which variables are extracted.
-
-   `ncks' extracts hyperslabs from the specified variables (`ncks'
-implements the original `nccut' specification).  Option `-d' controls
-the hyperslab specification.  Input dimensions that are not associated
-with any output variable do not appear in the output netCDF.  This
-feature removes superfluous dimensions from netCDF files.
-
-   `ncks' will append variables and attributes from the INPUT-FILE to
-OUTPUT-FILE if OUTPUT-FILE is a pre-existing netCDF file whose relevant
-dimensions conform to dimension sizes of INPUT-FILE.  The append
-features of `ncks' are intended to provide a rudimentary means of
-adding data from one netCDF file to another, conforming, netCDF file.
-If naming conflicts exist between the two files, data in OUTPUT-FILE is
-usually overwritten by the corresponding data from INPUT-FILE.  Thus,
-when appending, the user should backup OUTPUT-FILE in case valuable
-data are inadvertantly overwritten.
-
-   If OUTPUT-FILE exists, the user will be queried whether to
-"overwrite", "append", or "exit" the `ncks' call completely.  Choosing
-"overwrite" destroys the existing OUTPUT-FILE and create an entirely
-new one from the output of the `ncks' call.  Append has differing
-effects depending on the uniqueness of the variables and attributes
-output by `ncks': If a variable or attribute extracted from INPUT-FILE
-does not have a name conflict with the members of OUTPUT-FILE then it
-will be added to OUTPUT-FILE without overwriting any of the existing
-contents of OUTPUT-FILE.  In this case the relevant dimensions must
-agree (conform) between the two files; new dimensions are created in
-OUTPUT-FILE as required.  When a name conflict occurs, a global
-attribute from INPUT-FILE will overwrite the corresponding global
-attribute from OUTPUT-FILE.  If the name conflict occurs for a
-non-record variable, then the dimensions and type of the variable (and
-of its coordinate dimensions, if any) must agree (conform) in both
-files.  Then the variable values (and any coordinate dimension values)
-from INPUT-FILE will overwrite the corresponding variable values (and
-coordinate dimension values, if any) in OUTPUT-FILE (1).
-
-   Since there can only be one record dimension in a file, the record
-dimension must have the same name (but not necessarily the same size) in
-both files if a record dimension variable is to be appended.  If the
-record dimensions are of differing sizes, the record dimension of
-OUTPUT-FILE will become the greater of the two record dimension sizes,
-the record variable from INPUT-FILE will overwrite any counterpart in
-OUTPUT-FILE and fill values will be written to any gaps left in the
-rest of the record variables (I think).  In all cases variable
-attributes in OUTPUT-FILE are superseded by attributes of the same name
-from INPUT-FILE, and left alone if there is no name conflict.
-
-   Some users may wish to avoid interactive `ncks' queries about
-whether to overwrite existing data.  For example, batch scripts will
-fail if `ncks' does not receive responses to its queries.  Options `-O'
-and `-A' are available to force overwriting existing files and
-variables, respectively.
-
-Options specific to `ncks'
---------------------------
-
-The following list provides a short summary of the features unique to
-`ncks'.  Features common to many operators are described in *note
-Common features::.
-
-`-a'
-     Do not alphabetize extracted fields.  By default, the specified
-     output variables are extracted, printed, and written to disk in
-     alphabetical order.  This tends to make long output lists easier
-     to search for particular variables.  Specifying `-a' results in
-     the variables being extracted, printed, and written to disk in the
-     order in which they were saved in the input file.  Thus `-a'
-     retains the original ordering of the variables.  Also `--abc' and
-     `--alphabetize'.
-
-`-B `file''
-     Activate native machine binary output writing to the default binary
-     file, `ncks.bnr'.  The `-B' switch is redundant when the
-     `-b' `file' option is specified, and native binary output will be
-     directed to the binary file `file'.  Also `--bnr' and `--binary'.
-     Writing packed variables in binary format is not supported.
-
-`-b `file''
-     Activate native machine binary output writing to binary file
-     `file'.  Also `--fl_bnr' and `--binary-file'.  Writing packed
-     variables in binary format is not supported.
-
-`-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-     Add "stride" argument to hyperslabber.  For a complete description
-     of the STRIDE argument, *Note Stride::.
-
-`--fix_rec_dmn'
-     Change all record dimensions in the input file into fixed
-     dimensions in the output file.  Also `--no_rec_dmn'.
-
-`--mk_rec_dmn DIM'
-     Change existing dimension DIM to a record dimension in the output
-     file.  See *note ncecat netCDF Ensemble Concatenator:: and *note
-     ncpdq netCDF Permute Dimensions Quickly:: for other methods of
-     changing variable dimensionality, including the record dimension.
-
-`-H'
-     Print data to screen.  Also activated using `--print' or `--prn'.
-     By default `ncks' prints all metadata and data to screen if no
-     netCDF output file is specified.  Use `-H' to print data to screen
-     if a netCDF output is specified, or to restrict printing to data
-     (no metadata) when no netCDF output is specified.  Unless
-     otherwise specified (with `-s'), each element of the data
-     hyperslab prints on a separate line containing the names, indices,
-     and, values, if any, of all of the variables dimensions.  The
-     dimension and variable indices refer to the location of the
-     corresponding data element with respect to the variable as stored
-     on disk (i.e., not the hyperslab).
-          % ncks -C -v three_dmn_var in.nc
-          lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-          lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-          lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-          ...
-          lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-          lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-          lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     Printing the same variable with the `-F' option shows the same
-     variable indexed with Fortran conventions
-          % ncks -F -C -v three_dmn_var in.nc
-          lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
-          lon(2)=90 lev(1)=100 lat(1)=-90 three_dmn_var(2)=1
-          lon(3)=180 lev(1)=100 lat(1)=-90 three_dmn_var(3)=2
-          ...
-     Printing a hyperslab does not affect the variable or dimension
-     indices since these indices are relative to the full variable (as
-     stored in the input file), and the input file has not changed.
-     However, if the hyperslab is saved to an output file and those
-     values are printed, the indices will change:
-          % ncks -H -d lat,90.0 -d lev,1000.0 -v three_dmn_var in.nc out.nc
-          ...
-          lat[1]=90 lev[2]=1000 lon[0]=0 three_dmn_var[20]=20
-          lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-          lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-          lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-          % ncks -C -v three_dmn_var out.nc
-          lat[0]=90 lev[0]=1000 lon[0]=0 three_dmn_var[0]=20
-          lat[0]=90 lev[0]=1000 lon[1]=90 three_dmn_var[1]=21
-          lat[0]=90 lev[0]=1000 lon[2]=180 three_dmn_var[2]=22
-          lat[0]=90 lev[0]=1000 lon[3]=270 three_dmn_var[3]=23
-
-`-M'
-     Print to screen the global metadata describing the file.  This
-     includes file summary information and global attributes.  Also
-     `--Mtd' and `--Metadata'.  By default `ncks' prints global
-     metadata to screen if no netCDF output file and no variable
-     extraction list is specified (with `-v').  Use `-M' to print
-     global metadata to screen if a netCDF output is specified, or if a
-     variable extraction list is specified (with `-v').
-
-     The various combinations of printing switches can be confusing.
-     In an attempt to anticipate what most users want to do, `ncks'
-     uses context-sensitive defaults for printing.  Our goal is to
-     minimize the use of switches required to accomplish the common
-     operations.  We assume that users creating a new file or
-     overwriting (e.g., with `-O') an existing file usually wish to
-     copy all global and variable-specific attributes to the new file.
-     In contrast, we assume that users appending (e.g., with `-A' an
-     explicit variable list from one file to another usually wish to
-     copy only the variable-specific attributes to the output file.
-     The switches `-H', `-M', and `-m' switches are implemented as
-     toggles which reverse the default behavior.  The most confusing
-     aspect of this is that `-M' inhibits copying global metadata in
-     overwrite mode and causes copying of global metadata in append
-     mode.
-          ncks -O              in.nc out.nc # Copy   VAs and GAs
-          ncks -O       -v one in.nc out.nc # Copy   VAs and GAs
-          ncks -O -M    -v one in.nc out.nc # Copy   VAs not GAs
-          ncks -O    -m -v one in.nc out.nc # Copy   GAs not VAs
-          ncks -O -M -m -v one in.nc out.nc # Copy   only data (no atts)
-          ncks -A              in.nc out.nc # Append VAs and GAs
-          ncks -A       -v one in.nc out.nc # Append VAs not GAs
-          ncks -A -M    -v one in.nc out.nc # Append VAs and GAs
-          ncks -A    -m -v one in.nc out.nc # Append only data (no atts)
-          ncks -A -M -m -v one in.nc out.nc # Append GAs not VAs
-     where `VAs' and `GAs' denote variable and global attributes,
-     respectively.
-
-`-m'
-     Print variable metadata to screen (similar to `ncdump -h').  This
-     displays all metadata pertaining to each variable, one variable at
-     a time.  This includes information on the storage properties of
-     the variable, such as whether it employs chunking, compression, or
-     packing.  Also activated using `--mtd' and `--metadata'.  The
-     `ncks' default behavior is to print variable metadata to screen if
-     no netCDF output file is specified.  Use `-m' to print variable
-     metadata to screen if a netCDF output is specified.
-
-`-P'
-     Print data, metadata, and units to screen.  The `-P' switch is a
-     convenience abbreviation for `-C -H -M -m -u'.  Also activated
-     using `--print' or `--prn'.  This set of switches is useful for
-     exploring file contents.
-
-`-Q'
-     Toggle printing of dimension indices and coordinate values when
-     printing arrays.  Each variable's name appears flush left in the
-     output.  This helps locate specific variables in lists with many
-     variables and different dimensions.
-
-`-q'
-     Turn off all printing to screen.  This overrides the setting of
-     all print-related switches, equivalent to `-H -M -m' when in
-     single-file printing mode.  When invoked with `-R' (*note
-     Retaining Retrieved Files::), `ncks' automatically sets `-q'.
-     This allows `ncks' to retrieve remote files without automatically
-     trying to print them.  Also `--quiet'.
-
-`-s FORMAT'
-     String format for text output.  Accepts C language escape
-     sequences and `printf()' formats.  Also `--string'  and
-     `--sng_fmt'.
-
-`-u'
-     Toggle the printing of a variable's `units' attribute, if any,
-     with its values.  Also `--units'.
-
-EXAMPLES
-
-   View all data in netCDF `in.nc', printed with Fortran indexing
-conventions:
-     ncks -F in.nc
-
-   Copy the netCDF file `in.nc' to file `out.nc'.
-     ncks in.nc out.nc
-   Now the file `out.nc' contains all the data from `in.nc'.  There
-are, however, two differences between `in.nc' and `out.nc'.  First, the
-`history' global attribute (*note History Attribute::) will contain the
-command used to create `out.nc'.  Second, the variables in `out.nc'
-will be defined in alphabetical order.  Of course the internal storage
-of variable in a netCDF file should be transparent to the user, but
-there are cases when alphabetizing a file is useful (see description of
-`-a' switch).
-
-   Copy all global attributes (and no variables) from `in.nc' to
-`out.nc':
-     ncks -A -x ~/nco/data/in.nc ~/out.nc
-   The `-x' switch tells NCO to use the complement of the extraction
-list (*note Subsetting Variables::).  Since no extraction list is
-explicitly specified (with `-v'), the default is to extract all
-variables.  The complement of all variables is no variables.  Without
-any variables to extract, the append (`-A') command (*note Appending
-Variables::) has only to extract and copy (i.e., append) global
-attributes to the output file.
-
-   Print variable `three_dmn_var' from file `in.nc' with default
-notations.  Next print `three_dmn_var' as an un-annotated text column.
-Then print `three_dmn_var' signed with very high precision.  Finally,
-print `three_dmn_var' as a comma-separated list.
-     % ncks -C -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-     lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-     ...
-     lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     % ncks -s '%f\n' -C -v three_dmn_var in.nc
-     0.000000
-     1.000000
-     ...
-     23.000000
-     % ncks -s '%+16.10f\n' -C -v three_dmn_var in.nc
-        +0.0000000000
-        +1.0000000000
-     ...
-       +23.0000000000
-     % ncks -s '%f, ' -C -v three_dmn_var in.nc
-     0.000000, 1.000000, ..., 23.000000,
-   The second and third options are useful when pasting data into text
-files like reports or papers.  *Note ncatted netCDF Attribute Editor::,
-for more details on string formatting and special characters.
-
-   One dimensional arrays of characters stored as netCDF variables are
-automatically printed as strings, whether or not they are
-NUL-terminated, e.g.,
-     ncks -v fl_nm in.nc
-   The `%c' formatting code is useful for printing multidimensional
-arrays of characters representing fixed length strings
-     ncks -s '%c' -v fl_nm_arr in.nc
-   Using the `%s' format code on strings which are not NUL-terminated
-(and thus not technically strings) is likely to result in a core dump.
-
-   Create netCDF `out.nc' containing all variables, and any associated
-coordinates, except variable `time', from netCDF `in.nc':
-     ncks -x -v time in.nc out.nc
-
-   Extract variables `time' and `pressure' from netCDF `in.nc'.  If
-`out.nc' does not exist it will be created.  Otherwise the you will be
-prompted whether to append to or to overwrite `out.nc':
-     ncks -v time,pressure in.nc out.nc
-     ncks -C -v time,pressure in.nc out.nc
-   The first version of the command creates an `out.nc' which contains
-`time', `pressure', and any coordinate variables associated with
-PRESSURE.  The `out.nc' from the second version is guaranteed to
-contain only two variables `time' and `pressure'.
-
-   Create netCDF `out.nc' containing all variables from file `in.nc'.
-Restrict the dimensions of these variables to a hyperslab.  Print (with
-`-H') the hyperslabs to the screen for good measure.  The specified
-hyperslab is: the fifth value in dimension `time'; the half-open range
-LAT > 0. in coordinate `lat'; the half-open range LON < 330. in
-coordinate `lon'; the closed interval 0.3 < BAND < 0.5 in coordinate
-`band'; and cross-section closest to 1000. in coordinate `lev'.  Note
-that limits applied to coordinate values are specified with a decimal
-point, and limits applied to dimension indices do not have a decimal
-point *Note Hyperslabs::.
-     ncks -H -d time,5 -d lat,,0.0 -d lon,330.0, -d band,0.3,0.5
-     -d lev,1000.0 in.nc out.nc
-
-   Assume the domain of the monotonically increasing longitude
-coordinate `lon' is 0 < LON < 360.  Here, `lon' is an example of a
-wrapped coordinate.  `ncks' will extract a hyperslab which crosses the
-Greenwich meridian simply by specifying the westernmost longitude as
-MIN and the easternmost longitude as MAX, as follows:
-     ncks -d lon,260.0,45.0 in.nc out.nc
-   For more details *Note Wrapped Coordinates::.
-
-   ---------- Footnotes ----------
-
-   (1) Those familiar with netCDF mechanics might wish to know what is
-happening here: `ncks' does not attempt to redefine the variable in
-OUTPUT-FILE to match its definition in INPUT-FILE, `ncks' merely copies
-the values of the variable and its coordinate dimensions, if any, from
-INPUT-FILE to OUTPUT-FILE.
-
-
-File: nco.info,  Node: ncpdq netCDF Permute Dimensions Quickly,  Next: ncra netCDF Record Averager,  Prev: ncks netCDF Kitchen Sink,  Up: Operator Reference Manual
-
-4.8 `ncpdq' netCDF Permute Dimensions Quickly
-=============================================
-
-SYNTAX
-     ncpdq [-3] [-4] [-6] [-A] [-a [-]DIM[,...]] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-M PCK_MAP] [-O] [-o OUTPUT-FILE] [-P PCK_PLC] [-p PATH]
-     [-R] [-r] [-t THR_NBR] [-U] [-v VAR[,...]] [-X ...] [-x]
-     INPUT-FILE [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncpdq' performs one of two distinct functions, packing or dimension
-permutation, but not both, when invoked.  `ncpdq' is optimized to
-perform these actions in a parallel fashion with a minimum of time and
-memory.  The "pdq" may stand for "Permute Dimensions Quickly", "Pack
-Data Quietly", "Pillory Dan Quayle", or other silly uses.
-
-Packing and Unpacking Functions
--------------------------------
-
-The `ncpdq' packing (and unpacking) algorithms are described in *note
-Methods and functions::, and are also implemented in `ncap2'.  `ncpdq'
-extends the functionality of these algorithms by providing high level
-control of the "packing policy" so that users can consistently pack
-(and unpack) entire files with one command.  The user specifies the
-desired packing policy with the `-P' switch (or its long option
-equivalents, `--pck_plc' and `--pack_policy') and its PCK_PLC argument.
-Four packing policies are currently implemented:
-"Packing (and Re-Packing) Variables [_default_]"
-     Definition: Pack unpacked variables, re-pack packed variables
-     Alternate invocation: `ncpack'
-     PCK_PLC key values: `all_new', `pck_all_new_att'
-"Packing (and not Re-Packing) Variables"
-     Definition: Pack unpacked variables, copy packed variables
-     Alternate invocation: none
-     PCK_PLC key values: `all_xst', `pck_all_xst_att'
-"Re-Packing Variables"
-     Definition: Re-pack packed variables, copy unpacked variables
-     Alternate invocation: none
-     PCK_PLC key values: `xst_new', `pck_xst_new_att'
-"Unpacking"
-     Definition: Unpack packed variables, copy unpacked variables
-     Alternate invocation: `ncunpack'
-     PCK_PLC key values: `upk', `unpack', `pck_upk'
-Equivalent key values are fully interchangeable.  Multiple equivalent
-options are provided to satisfy disparate needs and tastes of NCO users
-working with scripts and from the command line.
-
-   Regardless of the packing policy selected, `ncpdq' no longer (as of
-NCO version 4.0.4 in October, 2010) packs coordinate variables, or the
-special variables, weights, and other grid properties described in
-*note CF Conventions::.  Prior `ncpdq' versions treated coordinate
-variables and grid properties no differently from other variables.
-However, coordinate variables are one-dimensional, so packing saves
-little space on large files, and the resulting files are difficult for
-humans to read.  Concurrently, Gaussian and area weights and other grid
-properties are often used to derive fields in re-inflated (unpacked)
-files, so packing such grid properties causes a considerable loss of
-precision in downstream data processing.  If users express strong
-wishes to pack grid properties, we will implement new packing policies.
-An immediate workaround for those needing to pack grid properties now,
-is to use the `ncap2' packing functions or to rename the grid
-properties prior to calling `ncpdq'.  We welcome your feedback.
-
-   To reduce required memorization of these complex policy switches,
-`ncpdq' may also be invoked via a synonym or with switches that imply a
-particular policy.  `ncpack' is a synonym for `ncpdq' and behaves the
-same in all respects.  Both `ncpdq' and `ncpack' assume a default
-packing policy request of `all_new'.  Hence `ncpack' may be invoked
-without any `-P' switch, unlike `ncpdq'.  Similarly, `ncunpack' is a
-synonym for `ncpdq' except that `ncpack' implicitly assumes a request
-to unpack, i.e., `-P pck_upk'.  Finally, the `ncpdq' `-U' switch (or
-its long option equivalents, `--upk' and `--unpack') requires no
-argument.  It simply requests unpacking.
-
-   Given the menagerie of synonyms, equivalent options, and implied
-options, a short list of some equivalent commands is appropriate.  The
-following commands are equivalent for packing: `ncpdq -P all_new',
-`ncpdq --pck_plc=all_new', and `ncpack'.  The following commands are
-equivalent for unpacking: `ncpdq -P upk', `ncpdq -U', `ncpdq
---pck_plc=unpack', and `ncunpack'.  Equivalent commands for other
-packing policies, e.g., `all_xst', follow by analogy.  Note that
-`ncpdq' synonyms are subject to the same constraints and
-recommendations discussed in the secion on `ncbo' synonyms (*note ncbo
-netCDF Binary Operator::).  That is, symbolic links must exist from the
-synonym to `ncpdq', or else the user must define an `alias'.
-
-   The `ncpdq' packing algorithms must know to which type particular
-types of input variables are to be packed.  The correspondence between
-the input variable type and the output, packed type, is called the
-"packing map".  The user specifies the desired packing map with the
-`-M' switch (or its long option equivalents, `--pck_map' and `--map')
-and its PCK_MAP argument.  Five packing maps are currently implemented:
-"Pack Floating Precisions to `NC_SHORT' [_default_]"
-     Definition: Pack floating precision types to `NC_SHORT'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT'] to `NC_SHORT'
-     Types copied instead of packed:
-     [`NC_INT',`NC_SHORT',`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `flt_sht', `pck_map_flt_sht'
-"Pack Floating Precisions to `NC_BYTE'"
-     Definition: Pack floating precision types to `NC_BYTE'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT'] to `NC_BYTE'
-     Types copied instead of packed:
-     [`NC_INT',`NC_SHORT',`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `flt_byt', `pck_map_flt_byt'
-"Pack Higher Precisions to `NC_SHORT'"
-     Definition: Pack higher precision types to `NC_SHORT'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT',`NC_INT'] to `NC_SHORT'
-     Types copied instead of packed: [`NC_SHORT',`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `hgh_sht', `pck_map_hgh_sht'
-"Pack Higher Precisions to `NC_BYTE'"
-     Definition: Pack higher precision types to `NC_BYTE'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT',`NC_INT',`NC_SHORT'] to `NC_BYTE'
-     Types copied instead of packed: [`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `hgh_byt', `pck_map_hgh_byt'
-"Pack to Next Lesser Precision"
-     Definition: Pack each type to type of next lesser size
-     Map: Pack `NC_DOUBLE' to `NC_INT'.  Pack [`NC_FLOAT',`NC_INT'] to
-     `NC_SHORT'.  Pack `NC_SHORT' to `NC_BYTE'.
-     Types copied instead of packed: [`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `nxt_lsr', `pck_map_nxt_lsr'
-The default `all_new' packing policy with the default `flt_sht' packing
-map reduces the typical `NC_FLOAT'-dominated file size by about 50%.
-`flt_byt' packing reduces an `NC_DOUBLE'-dominated file by about 87%.
-
-   The netCDF packing algorithm (*note Methods and functions::) is
-lossy--once packed, the exact original data cannot be recovered without
-a full backup.  Hence users should be aware of some packing caveats:
-First, the interaction of packing and data equal to the _FILLVALUE is
-complex.  Test the `_FillValue' behavior by performing a pack/unpack
-cycle to ensure data that are missing _stay_ missing and data that are
-not misssing do not join the Air National Guard and go missing.  This
-may lead you to elect a new _FILLVALUE.  Second, `ncpdq' actually
-allows packing into `NC_CHAR' (with, e.g., `flt_chr').  However, the
-intrinsic conversion of `signed char' to higher precision types is
-tricky for values equal to zero, i.e., for `NUL'.  Hence packing to
-`NC_CHAR' is not documented or advertised.  Pack into `NC_BYTE' (with,
-e.g., `flt_byt') instead.
-
-Dimension Permutation
----------------------
-
-`ncpdq' re-shapes variables in INPUT-FILE by re-ordering and/or
-reversing dimensions specified in the dimension list.  The dimension
-list is a whitespace-free, comma separated list of dimension names,
-optionally prefixed by negative signs, that follows the `-a' (or long
-options `--arrange', `--permute', `--re-order', or `--rdr') switch.  To
-re-order variables by a subset of their dimensions, specify these
-dimensions in a comma-separated list following `-a', e.g., `-a lon,lat'.
-To reverse a dimension, prefix its name with a negative sign in the
-dimension list, e.g., `-a -lat'.  Re-ordering and reversal may be
-performed simultaneously, e.g., `-a lon,-lat,time,-lev'.
-
-   Users may specify any permutation of dimensions, including
-permutations which change the record dimension identity.  The record
-dimension is re-ordered like any other dimension.  This unique `ncpdq'
-capability makes it possible to concatenate files along any dimension.
-See *note Concatenation:: for a detailed example.  The record dimension
-is always the most slowly varying dimension in a record variable (*note
-C and Fortran Index Conventions::).  The specified re-ordering fails if
-it requires creating more than one record dimension amongst all the
-output variables (1).
-
-   Two special cases of dimension re-ordering and reversal deserve
-special mention.  First, it may be desirable to completely reverse the
-storage order of a variable.  To do this, include all the variable's
-dimensions in the dimension re-order list in their original order, and
-prefix each dimension name with the negative sign.  Second, it may
-useful to transpose a variable's storage order, e.g., from C to Fortran
-data storage order (*note C and Fortran Index Conventions::).  To do
-this, include all the variable's dimensions in the dimension re-order
-list in reversed order.  Explicit examples of these two techniques
-appear below.
-
-EXAMPLES
-
-   Pack and unpack all variables in file `in.nc' and store the results
-in `out.nc':
-     ncpdq in.nc out.nc # Same as ncpack in.nc out.nc
-     ncpdq -P all_new -M flt_sht in.nc out.nc # Defaults
-     ncpdq -P all_xst in.nc out.nc
-     ncpdq -P upk in.nc out.nc # Same as ncunpack in.nc out.nc
-     ncpdq -U in.nc out.nc # Same as ncunpack in.nc out.nc
-   The first two commands pack any unpacked variable in the input file.
-They also unpack and then re-pack every packed variable.  The third
-command only packs unpacked variables in the input file.  If a variable
-is already packed, the third command copies it unchanged to the output
-file.  The fourth and fifth commands unpack any packed variables.  If a
-variable is not packed, the third command copies it unchanged.
-
-   The previous examples all utilized the default packing map.  Suppose
-you wish to archive all data that are currently unpacked into a form
-which only preserves 256 distinct values.  Then you could specify the
-packing map PCK_MAP as `hgh_byt' and the packing policy PCK_PLC as
-`all_xst':
-     ncpdq -P all_xst -M hgh_byt in.nc out.nc
-   Many different packing maps may be used to construct a given file by
-performing the packing on subsets of variables (e.g., with `-v') and
-using the append feature with `-A' (*note Appending Variables::).
-
-   Re-order file `in.nc' so that the dimension `lon' always precedes
-the dimension `lat' and store the results in `out.nc':
-     ncpdq -a lon,lat in.nc out.nc
-     ncpdq -v three_dmn_var -a lon,lat in.nc out.nc
-   The first command re-orders every variable in the input file.  The
-second command extracts and re-orders only the variable `three_dmn_var'.
-
-   Suppose the dimension `lat' represents latitude and monotonically
-increases increases from south to north.  Reversing the `lat' dimension
-means re-ordering the data so that latitude values decrease
-monotonically from north to south.  Accomplish this with
-     % ncpdq -a -lat in.nc out.nc
-     % ncks -C -v lat in.nc
-     lat[0]=-90
-     lat[1]=90
-     % ncks -C -v lat out.nc
-     lat[0]=90
-     lat[1]=-90
-   This operation reversed the latitude dimension of all variables.
-Whitespace immediately preceding the negative sign that specifies
-dimension reversal may be dangerous.  Quotes and long options can help
-protect negative signs that should indicate dimension reversal from
-being interpreted by the shell as dashes that indicate new command line
-switches.
-     ncpdq -a -lat in.nc out.nc # Dangerous? Whitespace before "-lat"
-     ncpdq -a '-lat' in.nc out.nc # OK. Quotes protect "-" in "-lat"
-     ncpdq -a lon,-lat in.nc out.nc # OK. No whitespace before "-"
-     ncpdq --rdr=-lat in.nc out.nc # Preferred. Uses "=" not whitespace
-
-   To create the mathematical transpose of a variable, place all its
-dimensions in the dimension re-order list in reversed order.  This
-example creates the transpose of `three_dmn_var':
-     % ncpdq -a lon,lev,lat -v three_dmn_var in.nc out.nc
-     % ncks -C -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-     lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-     lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-     ...
-     lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-     lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-     lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     % ncks -C -v three_dmn_var out.nc
-     lon[0]=0 lev[0]=100 lat[0]=-90 three_dmn_var[0]=0
-     lon[0]=0 lev[0]=100 lat[1]=90 three_dmn_var[1]=12
-     lon[0]=0 lev[1]=500 lat[0]=-90 three_dmn_var[2]=4
-     ...
-     lon[3]=270 lev[1]=500 lat[1]=90 three_dmn_var[21]=19
-     lon[3]=270 lev[2]=1000 lat[0]=-90 three_dmn_var[22]=11
-     lon[3]=270 lev[2]=1000 lat[1]=90 three_dmn_var[23]=23
-
-   To completely reverse the storage order of a variable, include all
-its dimensions in the re-order list, each prefixed by a negative sign.
-This example reverses the storage order of `three_dmn_var':
-     % ncpdq -a -lat,-lev,-lon -v three_dmn_var in.nc out.nc
-     % ncks -C -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-     lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-     lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-     ...
-     lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-     lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-     lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     % ncks -C -v three_dmn_var out.nc
-     lat[0]=90 lev[0]=1000 lon[0]=270 three_dmn_var[0]=23
-     lat[0]=90 lev[0]=1000 lon[1]=180 three_dmn_var[1]=22
-     lat[0]=90 lev[0]=1000 lon[2]=90 three_dmn_var[2]=21
-     ...
-     lat[1]=-90 lev[2]=100 lon[1]=180 three_dmn_var[21]=2
-     lat[1]=-90 lev[2]=100 lon[2]=90 three_dmn_var[22]=1
-     lat[1]=-90 lev[2]=100 lon[3]=0 three_dmn_var[23]=0
-
-   Creating a record dimension named, e.g., `time', in a file which has
-no existing record dimension is simple with `ncecat':
-     ncecat -O -u time in.nc out.nc # Create degenerate record dimension named "time"
-
-   Now consider a file with all dimensions, including `time', fixed
-(non-record).  Suppose the user wishes to convert `time' from a fixed
-dimension to a record dimension.  This may be useful, for example, when
-the user wishes to append additional time slices to the data.  As of
-NCO version 4.0.1 (April, 2010) the preferred method for doing this is
-with `ncks':
-     ncks -O --mk_rec_dmn time in.nc out.nc # Change "time" to record dimension
-
-   Prior to 4.0.1, the procedure to change an existing fixed dimension
-into a record dimension required three separate commands, `ncecat'
-followed by `ncpdq', and then `ncwa'.  It is still instructive to
-present the original procedure, as it shows how multiple operators can
-achieve the same ends by different means: 
-     ncecat -O in.nc out.nc # Add degenerate record dimension named "record"
-     ncpdq -O -a time,record out.nc out.nc # Switch "record" and "time"
-     ncwa -O -a record out.nc out.nc # Remove (degenerate) "record"
-   The first step creates a degenerate (size equals one) record
-dimension named (by default) `record'.  The second step swaps the
-ordering of the dimensions named `time' and `record'.  Since `time' now
-occupies the position of the first (least rapidly varying) dimension,
-it becomes the record dimension.  The dimension named `record' is no
-longer a record dimension.  The third step averages over this
-degenerate `record' dimension.  Averaging over a degenerate dimension
-does not alter the data.  The ordering of other dimensions in the file
-(`lat', `lon', etc.) is immaterial to this procedure.  See *note ncecat
-netCDF Ensemble Concatenator:: and *note ncks netCDF Kitchen Sink:: for
-other methods of changing variable dimensionality, including the record
-dimension.
-
-   ---------- Footnotes ----------
-
-   (1) This limitation, imposed by the netCDF storage layer, may be
-relaxed in the future with netCDF4.
-
-
-File: nco.info,  Node: ncra netCDF Record Averager,  Next: ncrcat netCDF Record Concatenator,  Prev: ncpdq netCDF Permute Dimensions Quickly,  Up: Operator Reference Manual
-
-4.9 `ncra' netCDF Record Averager
-=================================
-
-SYNTAX
-     ncra [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x] [-y OP_TYP]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncra' averages record variables across an arbitrary number of
-INPUT-FILES.  The record dimension is, by default, retained as a
-degenerate (size 1) dimension in the output variables.  *Note Averaging
-vs. Concatenating::, for a description of the distinctions between the
-various averagers and concatenators.  As a multi-file operator, `ncra'
-will read the list of INPUT-FILES from `stdin' if they are not specified
-as positional arguments on the command line (*note Large Numbers of
-Files::).
-
-   Input files may vary in size, but each must have a record dimension.
-The record coordinate, if any, should be monotonic (or else non-fatal
-warnings may be generated).  Hyperslabs of the record dimension which
-include more than one file work correctly.  `ncra' supports the STRIDE
-argument to the `-d' hyperslab option (*note Hyperslabs::) for the
-record dimension only, STRIDE is not supported for non-record
-dimensions.
-
-   `ncra' weights each record (e.g., time slice) in the INPUT-FILES
-equally.  `ncra' does not attempt to see if, say, the `time' coordinate
-is irregularly spaced and thus would require a weighted average in
-order to be a true time average.  `ncra' _always averages_ coordinate
-variables regardless of the arithmetic operation type performed on the
-non-coordinate variables.  (*note Operation Types::).
-
-EXAMPLES
-
-   Average files `85.nc', `86.nc', ... `89.nc' along the record
-dimension, and store the results in `8589.nc': 
-     ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncra 8[56789].nc 8589.nc
-     ncra -n 5,2,1 85.nc 8589.nc
-   These three methods produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.
-
-   Assume the files `85.nc', `86.nc', ... `89.nc' each contain a record
-coordinate TIME of length 12 defined such that the third record in
-`86.nc' contains data from March 1986, etc.  NCO knows how to hyperslab
-the record dimension across files.  Thus, to average data from
-December, 1985 through February, 1986:
-     ncra -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-     ncra -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc
-   The file `87.nc' is superfluous, but does not cause an error.  The
-`-F' turns on the Fortran (1-based) indexing convention.  The following
-uses the STRIDE option to average all the March temperature data from
-multiple input files into a single output file
-     ncra -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc
-   *Note Stride::, for a description of the STRIDE argument.
-
-   Assume the TIME coordinate is incrementally numbered such that
-January, 1985 = 1 and December, 1989 = 60.  Assuming `??' only expands
-to the five desired files, the following averages June, 1985-June, 1989:
-     ncra -d time,6.,54. ??.nc 8506_8906.nc
-
-
-File: nco.info,  Node: ncrcat netCDF Record Concatenator,  Next: ncrename netCDF Renamer,  Prev: ncra netCDF Record Averager,  Up: Operator Reference Manual
-
-4.10 `ncrcat' netCDF Record Concatenator
-========================================
-
-SYNTAX
-     ncrcat [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncrcat' concatenates record variables across an arbitrary number of
-INPUT-FILES.  The final record dimension is by default the sum of the
-lengths of the record dimensions in the input files.  *Note Averaging
-vs. Concatenating::, for a description of the distinctions between the
-various averagers and concatenators.  As a multi-file operator,
-`ncrcat' will read the list of INPUT-FILES from `stdin' if they are not
-specified as positional arguments on the command line (*note Large
-Numbers of Files::).
-
-   Input files may vary in size, but each must have a record dimension.
-The record coordinate, if any, should be monotonic (or else non-fatal
-warnings may be generated).  Hyperslabs along the record dimension that
-span more than one file are handled correctly.  `ncra' supports the
-STRIDE argument to the `-d' hyperslab option for the record dimension
-only, STRIDE is not supported for non-record dimensions.
-
-   Concatenating a variable packed with different scales multiple
-datasets is beyond the capabilities of `ncrcat' (and `ncecat', the
-other concatenator (*note Concatenation::).  `ncrcat' does not unpack
-data, it simply _copies_ the data from the INPUT-FILES, and the
-metadata from the _first_ INPUT-FILE, to the OUTPUT-FILE.  This means
-that data compressed with a packing convention must use the identical
-packing parameters (e.g., `scale_factor' and `add_offset') for a given
-variable across _all_ input files.  Otherwise the concatenated dataset
-will not unpack correctly.  The workaround for cases where the packing
-parameters differ across INPUT-FILES requires three steps: First,
-unpack the data using `ncpdq'.  Second, concatenate the unpacked data
-using `ncrcat', Third, re-pack the result with `ncpdq'.
-
-   `ncrcat' applies special rules to ARM convention time fields (e.g.,
-`time_offset').  See *note ARM Conventions:: for a complete description.
-
-EXAMPLES
-
-   Concatenate files `85.nc', `86.nc', ... `89.nc' along the record
-dimension, and store the results in `8589.nc': 
-     ncrcat 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncrcat 8[56789].nc 8589.nc
-     ncrcat -n 5,2,1 85.nc 8589.nc
-   These three methods produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.
-
-   Assume the files `85.nc', `86.nc', ... `89.nc' each contain a record
-coordinate TIME of length 12 defined such that the third record in
-`86.nc' contains data from March 1986, etc.  NCO knows how to hyperslab
-the record dimension across files.  Thus, to concatenate data from
-December, 1985-February, 1986:
-     ncrcat -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-     ncrcat -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc
-   The file `87.nc' is superfluous, but does not cause an error.  When
-`ncra' and `ncrcat' encounter a file which does contain any records
-that meet the specified hyperslab criteria, they disregard the file and
-proceed to the next file without failing.  The `-F' turns on the
-Fortran (1-based) indexing convention.  
-
-   The following uses the STRIDE option to concatenate all the March
-temperature data from multiple input files into a single output file
-     ncrcat -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc
-   *Note Stride::, for a description of the STRIDE argument.
-
-   Assume the TIME coordinate is incrementally numbered such that
-January, 1985 = 1 and December, 1989 = 60.  Assuming `??' only expands
-to the five desired files, the following concatenates June, 1985-June,
-1989:
-     ncrcat -d time,6.,54. ??.nc 8506_8906.nc
-
-
-File: nco.info,  Node: ncrename netCDF Renamer,  Next: ncwa netCDF Weighted Averager,  Prev: ncrcat netCDF Record Concatenator,  Up: Operator Reference Manual
-
-4.11 `ncrename' netCDF Renamer
-==============================
-
-SYNTAX
-     ncrename [-a OLD_NAME,NEW_NAME] [-a ...] [-D DBG]
-     [-d OLD_NAME,NEW_NAME] [-d ...] [-h] [--hdr_pad NBR] [-l PATH]
-     [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-v OLD_NAME,NEW_NAME] [-v ...]
-     INPUT-FILE [[OUTPUT-FILE]]
-
-DESCRIPTION
-
-   `ncrename' renames dimensions, variables, and attributes in a netCDF
-file.  Each object that has a name in the list of old names is renamed
-using the corresponding name in the list of new names.  All the new
-names must be unique.  Every old name must exist in the input file,
-unless the old name is preceded by the period (or "dot") character `.'.
-The validity of OLD_NAME is not checked prior to the renaming.  Thus,
-if OLD_NAME is specified without the the `.' prefix and is not present
-in INPUT-FILE, `ncrename' will abort.  The NEW_NAME should never be
-prefixed by a `.' (or else the period will be included as part of the
-new name).  The OPTIONS and EXAMPLES show how to select specific
-variables whose attributes are to be renamed.
-
-   `ncrename' is the exception to the normal rules that the user will
-be interactively prompted before an existing file is changed, and that a
-temporary copy of an output file is constructed during the operation.
-If only INPUT-FILE is specified, then `ncrename' will change the names
-of the INPUT-FILE in place without prompting and without creating a
-temporary copy of `input-file'.  This is because the renaming operation
-is considered reversible if the user makes a mistake.  The NEW_NAME can
-easily be changed back to OLD_NAME by using `ncrename' one more time.
-
-   Note that renaming a dimension to the name of a dependent variable
-can be used to invert the relationship between an independent coordinate
-variable and a dependent variable.  In this case, the named dependent
-variable must be one-dimensional and should have no missing values.
-Such a variable will become a coordinate variable.
-
-   According to the `netCDF User's Guide', renaming properties in
-netCDF files does not incur the penalty of recopying the entire file
-when the NEW_NAME is shorter than the OLD_NAME.
-
-OPTIONS
-
-`-a OLD_NAME,NEW_NAME'
-     Attribute renaming.  The old and new names of the attribute are
-     specified with `-a' (or `--attribute') by the associated OLD_NAME
-     and NEW_NAME values.  Global attributes are treated no differently
-     than variable attributes.  This option may be specified more than
-     once.  As mentioned above, all occurrences of the attribute of a
-     given name will be renamed unless the `.' form is used, with one
-     exception.  To change the attribute name for a particular
-     variable, specify the OLD_NAME in the format
-     OLD_VAR_NAME at OLD_ATT_NAME.  The `@' symbol delimits the variable
-     and attribute names.  If the attribute is uniquely named (no other
-     variables contain the attribute) then the
-     OLD_VAR_NAME at OLD_ATT_NAME syntax is redundant.  The
-     VAR_NAME at ATT_NAME syntax is accepted, but not required, for the
-     NEW_NAME.
-
-`-d OLD_NAME,NEW_NAME'
-     Dimension renaming.  The old and new names of the dimension are
-     specified with `-d' (or `--dmn', `--dimension') by the associated
-     OLD_NAME and NEW_NAME values.  This option may be specified more
-     than once.
-
-`-v OLD_NAME,NEW_NAME'
-     Variable renaming.  The old and new names of the variable are
-     specified with `-v' (or `--variable') by the associated OLD_NAME
-     and NEW_NAME values.  This option may be specified more than once.
-
-EXAMPLES
-
-   Rename the variable `p' to `pressure' and `t' to `temperature' in
-netCDF `in.nc'.  In this case `p' must exist in the input file (or
-`ncrename' will abort), but the presence of `t' is optional:
-     ncrename -v p,pressure -v .t,temperature in.nc
-
-   Rename the attribute `long_name' to `largo_nombre' in the variable
-`u', and no other variables in netCDF `in.nc'.
-     ncrename -a u:long_name,largo_nombre in.nc
-
-   `ncrename' does not automatically attach dimensions to variables of
-the same name.  If you want to rename a coordinate variable so that it
-remains a coordinate variable, you must separately rename both the
-dimension and the variable:
-     ncrename -d lon,longitude -v lon,longitude in.nc
-
-   Create netCDF `out.nc' identical to `in.nc' except the attribute
-`_FillValue' is changed to `missing_value', the attribute `units' is
-changed to `CGS_units' (but only in those variables which possess it),
-the attribute `hieght' is changed to `height' in the variable `tpt',
-and in the variable `prs_sfc', if it exists.
-     ncrename -a _FillValue,missing_value -a .units,CGS_units \
-       -a tpt at hieght,height -a prs_sfc at .hieght,height in.nc out.nc
-   The presence and absence of the `.' and `@' features cause this
-command to execute successfully only if a number of conditions are met.
-All variables _must_ have a `_FillValue' attribute _and_ `_FillValue'
-must also be a global attribute.  The `units' attribute, on the other
-hand, will be renamed to `CGS_units' wherever it is found but need not
-be present in the file at all (either as a global or a variable
-attribute).  The variable `tpt' must contain the `hieght' attribute.
-The variable `prs_sfc' need not exist, and need not contain the
-`hieght' attribute.
-
-
-File: nco.info,  Node: ncwa netCDF Weighted Averager,  Prev: ncrename netCDF Renamer,  Up: Operator Reference Manual
-
-4.12 `ncwa' netCDF Weighted Averager
-====================================
-
-SYNTAX
-     ncwa [-3] [-4] [-6] [-A] [-a DIM[,...]] [-B MASK_COND] [-b] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-I] [-L DFL_LVL] [-l PATH]
-     [-M MASK_VAL] [-m MASK_VAR] [-N] [-O]
-     [-o OUTPUT-FILE] [-p PATH] [-R] [-r] [-T MASK_COMP]
-     [-t THR_NBR] [-v VAR[,...]] [-w WEIGHT] [-X ...] [-x] [-y OP_TYP]
-     INPUT-FILE [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncwa' averages variables in a single file over arbitrary
-dimensions, with options to specify weights, masks, and normalization.
-*Note Averaging vs. Concatenating::, for a description of the
-distinctions between the various averagers and concatenators.  The
-default behavior of `ncwa' is to arithmetically average every numerical
-variable over all dimensions and to produce a scalar result for each.
-
-   Averaged dimensions are, by default, eliminated as dimensions.
-Their corresponding coordinates, if any, are output as scalars.  The
-`-b' switch (and its long option equivalents `--rdd' and
-`--retain-degenerate-dimensions') causes `ncwa' to retain averaged
-dimensions as degenerate (size 1) dimensions.  This maintains the
-association between a dimension (or coordinate) and variables after
-averaging and simplifies, for instance, later concatenation along the
-degenerate dimension.
-
-   To average variables over only a subset of their dimensions, specify
-these dimensions in a comma-separated list following `-a', e.g., `-a
-time,lat,lon'.  As with all arithmetic operators, the operation may be
-restricted to an arbitrary hypserslab by employing the `-d' option
-(*note Hyperslabs::).  `ncwa' also handles values matching the
-variable's `_FillValue' attribute correctly.  Moreover, `ncwa'
-understands how to manipulate user-specified weights, masks, and
-normalization options.  With these options, `ncwa' can compute
-sophisticated averages (and integrals) from the command line.
-
-   MASK_VAR and WEIGHT, if specified, are broadcast to conform to the
-variables being averaged.  The rank of variables is reduced by the
-number of dimensions which they are averaged over.  Thus arrays which
-are one dimensional in the INPUT-FILE and are averaged by `ncwa' appear
-in the OUTPUT-FILE as scalars.  This allows the user to infer which
-dimensions may have been averaged.  Note that that it is impossible for
-`ncwa' to make make a WEIGHT or MASK_VAR of rank W conform to a VAR of
-rank V if W > V.  This situation often arises when coordinate variables
-(which, by definition, are one dimensional) are weighted and averaged.
-`ncwa' assumes you know this is impossible and so `ncwa' does not
-attempt to broadcast WEIGHT or MASK_VAR to conform to VAR in this case,
-nor does `ncwa' print a warning message telling you this, because it is
-so common.  Specifying DBG > 2 does cause `ncwa' to emit warnings in
-these situations, however.
-
-   Non-coordinate variables are always masked and weighted if specified.
-Coordinate variables, however, may be treated specially.  By default,
-an averaged coordinate variable, e.g., `latitude', appears in
-OUTPUT-FILE averaged the same way as any other variable containing an
-averaged dimension.  In other words, by default `ncwa' weights and masks
-coordinate variables like all other variables.  This design decision
-was intended to be helpful but for some applications it may be
-preferable not to weight or mask coordinate variables just like all
-other variables.  Consider the following arguments to `ncwa': `-a
-latitude -w lat_wgt -d latitude,0.,90.' where `lat_wgt' is a weight in
-the `latitude' dimension.  Since, by default `ncwa' weights coordinate
-variables, the value of `latitude' in the OUTPUT-FILE depends on the
-weights in LAT_WGT and is not likely to be 45.0, the midpoint latitude
-of the hyperslab.  Option `-I' overrides this default behavior and
-causes `ncwa' not to weight or mask coordinate variables (1).  In the
-above case, this causes the value of `latitude' in the OUTPUT-FILE to
-be 45.0, an appealing result.  Thus, `-I' specifies simple arithmetic
-averages for the coordinate variables.  In the case of latitude, `-I'
-specifies that you prefer to archive the arithmetic mean latitude of
-the averaged hyperslabs rather than the area-weighted mean latitude.
-(2).
-
-   As explained in *Note Operation Types::, `ncwa' _always averages_
-coordinate variables regardless of the arithmetic operation type
-performed on the non-coordinate variables.  This is independent of the
-setting of the `-I' option.  The mathematical definition of operations
-involving rank reduction is given above (*note Operation Types::).
-
-* Menu:
-
-* Mask condition::
-* Normalization and Integration::
-
-   ---------- Footnotes ----------
-
-   (1) The default behavior of (`-I') changed on 1998/12/01--before
-this date the default was not to weight or mask coordinate variables.
-
-   (2) If `lat_wgt' contains Gaussian weights then the value of
-`latitude' in the OUTPUT-FILE will be the area-weighted centroid of the
-hyperslab.  For the example given, this is about 30 degrees.
-
-
-File: nco.info,  Node: Mask condition,  Next: Normalization and Integration,  Prev: ncwa netCDF Weighted Averager,  Up: ncwa netCDF Weighted Averager
-
-4.12.1 Mask condition
----------------------
-
-The mask condition has the syntax MASK_VAR MASK_COMP MASK_VAL.  The
-preferred method to specify the mask condition is in one string with
-the `-B' or `--mask_condition' switches.  The older method is to use
-the three switches `-m', `-T', and `-M' to specify the MASK_VAR,
-MASK_COMP, and MASK_VAL, respectively.  (1).  The MASK_CONDITION string
-is automatically parsed into its three constituents MASK_VAR,
-MASK_COMP, and MASK_VAL.
-
-   Here MASK_VAR is the name of the masking variable (specified with
-`-m', `--mask-variable', `--mask_variable', `--msk_nm', or `--msk_var').
-The truth MASK_COMP argument (specified with `-T', `--mask_comparator',
-`--msk_cmp_typ', or `--op_rlt' may be any one of the six arithmetic
-comparators: `eq', `ne', `gt', `lt', `ge', `le'.
-
-   These are the Fortran-style character abbreviations for the logical
-comparisons ==, !=, >, <, >=, <=.
-
-   The mask comparator defaults to `eq' (equality).  The MASK_VAL
-argument to `-M' (or `--mask-value', or `--msk_val') is the right hand
-side of the "mask condition".  Thus for the I'th element of the
-hyperslab to be averaged, the mask condition is
-
-   mask(i) MASK_COMP MASK_VAL.
-
-   ---------- Footnotes ----------
-
-   (1) The three switches `-m', `-T', and `-M' are maintained for
-backward compatibility and may be deprecated in the future.  It is
-safest to write scripts using `--mask_condition'.
-
-
-File: nco.info,  Node: Normalization and Integration,  Prev: Mask condition,  Up: ncwa netCDF Weighted Averager
-
-4.12.2 Normalization and Integration
-------------------------------------
-
-`ncwa' has one switch which controls the normalization of the averages
-appearing in the OUTPUT-FILE.  Short option `-N' (or long options
-`--nmr' or `--numerator') prevents `ncwa' from dividing the weighted
-sum of the variable (the numerator in the averaging expression) by the
-weighted sum of the weights (the denominator in the averaging
-expression).  Thus `-N' tells `ncwa' to return just the numerator of the
-arithmetic expression defining the operation (*note Operation Types::).
-
-   With this normalization option, `ncwa' can integrate variables.
-Averages are first computed as sums, and then normalized to obtain the
-average.  The original sum (i.e., the numerator of the expression in
-*note Operation Types::) is output if default normalization is turned
-off (with `-N').  This sum is the integral (not the average) over the
-specified (with `-a', or all, if none are specified) dimensions.  The
-weighting variable, if specified (with `-w'), plays the role of the
-differential increment and thus permits more sophisticated integrals
-(i.e., weighted sums) to be output.  For example, consider the variable
-`lev' where LEV = [100,500,1000] weighted by the weight `lev_wgt' where
-LEV_WGT = [10,2,1].  The vertical integral of `lev', weighted by
-`lev_wgt', is the dot product of LEV and LEV_WGT.  That this is
-is 3000.0 can be seen by inspection and verified with the integration
-command
-     ncwa -N -a lev -v lev -w lev_wgt in.nc foo.nc;ncks foo.nc
-
-EXAMPLES
-
-   Given file `85_0112.nc':
-     netcdf 85_0112 {
-     dimensions:
-             lat = 64 ;
-             lev = 18 ;
-             lon = 128 ;
-             time = UNLIMITED ; // (12 currently)
-     variables:
-             float lat(lat) ;
-             float lev(lev) ;
-             float lon(lon) ;
-             float time(time) ;
-             float scalar_var ;
-             float three_dmn_var(lat, lev, lon) ;
-             float two_dmn_var(lat, lev) ;
-             float mask(lat, lon) ;
-             float gw(lat) ;
-     }
-
-   Average all variables in `in.nc' over all dimensions and store
-results in `out.nc':
-     ncwa in.nc out.nc
-   All variables in `in.nc' are reduced to scalars in `out.nc' since
-`ncwa' averages over all dimensions unless otherwise specified (with
-`-a').
-
-   Store the zonal (longitudinal) mean of `in.nc' in `out.nc':
-     ncwa -a lon in.nc out1.nc
-     ncwa -a lon -b in.nc out2.nc
-   The first command turns `lon' into a scalar and the second retains
-`lon' as a degenerate dimension in all variables.
-     % ncks -C -H -v lon out1.nc
-     lon = 135
-     % ncks -C -H -v lon out2.nc
-     lon[0] = 135
-   In either case the tally is simply the size of `lon', i.e., 180 for
-the `85_0112.nc' file described by the sample header above.
-
-   Compute the meridional (latitudinal) mean, with values weighted by
-the corresponding element of GW (1):
-     ncwa -w gw -a lat in.nc out.nc
-   Here the tally is simply the size of `lat', or 64.  The sum of the
-Gaussian weights is 2.0.
-
-   Compute the area mean over the tropical Pacific:
-     ncwa -w gw -a lat,lon -d lat,-20.,20. -d lon,120.,270. in.nc out.nc
-   Here the tally is
-
-   64 times 128 = 8192.
-
-   Compute the area-mean over the globe using only points for which
-
-   ORO < 0.5
-
-   (2):
-     ncwa -B 'ORO < 0.5'      -w gw -a lat,lon in.nc out.nc
-     ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon in.nc out.nc
-   It is considerably simpler to specify the complete MASK_COND with
-the single string argument to `-B' than with the three separate
-switches `-m', `-T', and `-M'.  If in doubt, enclose the MASK_COND
-within quotes since some of the comparators have special meanings to
-the shell.
-
-   Assuming 70% of the gridpoints are maritime, then here the tally is
-
-   0.70 times 8192 = 5734.
-
-   Compute the global annual mean over the maritime tropical Pacific:
-     ncwa -B 'ORO < 0.5'      -w gw -a lat,lon,time \
-       -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-     ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon,time \
-       -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-   Further examples will use the one-switch specification of MASK_COND.
-
-   Determine the total area of the maritime tropical Pacific, assuming
-the variable AREA contains the area of each gridcell
-     ncwa -N -v area -B 'ORO < 0.5' -a lat,lon \
-       -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-   Weighting AREA (e.g., by GW) is not appropriate because AREA is
-_already_ area-weighted by definition.  Thus the `-N' switch, or,
-equivalently, the `-y ttl' switch, correctly integrate the cell areas
-into a total regional area.
-
-   Mask a file to contain _FILLVALUE everywhere except where THR_MIN <=
-MSK_VAR <= THR_MAX:
-     # Set masking variable and its scalar thresholds
-     export msk_var='three_dmn_var_dbl' # Masking variable
-     export thr_max='20' # Maximum allowed value
-     export thr_min='10' # Minimum allowed value
-     ncecat -O in.nc out.nc # Wrap out.nc in degenerate "record" dimension
-     ncwa -O -a record -B "${msk_var} <= ${thr_max}" out.nc out.nc
-     ncecat -O out.nc out.nc # Wrap out.nc in degenerate "record" dimension
-     ncwa -O -a record -B "${msk_var} >= ${thr_min}" out.nc out.nc
-   After the first use of `ncwa', `out.nc' contains _FILLVALUE where
-`${msk_var} >= ${thr_max}'.  The process is then repeated on the
-remaining data to filter out points where `${msk_var} <= ${thr_min}'.
-The resulting `out.nc' contains valid data only where THR_MIN <=
-MSK_VAR <= THR_MAX.
-
-   ---------- Footnotes ----------
-
-   (1) `gw' stands for "Gaussian weight" in many climate models.
-
-   (2) `ORO' stands for "Orography" in some climate models and in those
-models ORO < 0.5 selects ocean gridpoints.
-
-
-File: nco.info,  Node: Contributing,  Next: CCSM Example,  Prev: Operator Reference Manual,  Up: Top
-
-5 Contributing
-**************
-
-We welcome contributions from anyone.  The project homepage at
-`https://sf.net/projects/nco' contains more information on how to
-contribute.
-
-   Financial contributions to NCO development may be made through
-PayPal
-(https://www.paypal.com/xclick/business=zender%40uci.edu&item_name=NCO+development&item_number=nco_dnt_dvl&no_note=1&tax=0&currency_code=USD).
-NCO has been shared for over 10 years yet only two users have
-contributed any money to the developers (1).  So you could be the third!
-
-* Menu:
-
-* Contributors::
-* Proposals for Institutional Funding::
-
-   ---------- Footnotes ----------
-
-   (1) Happy users have sent me a few gifts, though.  This includes a
-box of imported chocolate.  Mmm.  Appreciation and gifts are definitely
-better than money.  Naturally, I'm too lazy to split and send gifts to
-the other developers.  However, unlike some NCO developers, I have a
-steady "real job".  My intent is to split monetary donations among the
-active developers and to send them their shares via PayPal.
-
-
-File: nco.info,  Node: Contributors,  Next: Proposals for Institutional Funding,  Prev: Contributing,  Up: Contributing
-
-5.1 Contributors
-================
-
-The primary contributors to NCO development have been:
-Charlie Zender
-     Concept, design and implementation of operators from 1995-2000.
-     Since then autotools, bug-squashing, chunking, documentation,
-     packing, NCO library redesign, `ncap2' features, `ncbo', `ncpdq',
-     SMP threading and MPI parallelization, netCDF4 integration,
-     external funding, project management, science research, releases.  
-
-Henry Butowsky
-     Non-linear operations and `min()', `max()', `total()' support in
-     `ncra' and `ncwa'.  Type conversion for arithmetic.  Migration to
-     netCDF3 API.  `ncap' parser, lexer, and I/O.  Multislabbing
-     algorithm.  Variable wildcarding.  Various hacks.  `ncap2'
-     language.  
-
-Rorik Peterson
-     Original autotool build support.  Long command-line options.
-     Original UDUnits support.  Debianization.  Numerous bug-fixes.  
-
-Daniel Wang
-     Script Workflow Analysis for MultiProcessing (SWAMP).  RPM support.  
-
-Harry Mangalam
-     Benchmarking.  OPeNDAP configuration.  
-
-Brian Mays
-     Original packaging for Debian GNU/Linux, `nroff' man pages.  
-
-George Shapovalov
-     Packaging for Gentoo GNU/Linux.  
-
-Bill Kocik
-     Memory management.  
-
-Len Makin
-     NEC SX architecture support.  
-
-Jim Edwards
-     AIX architecture support.  
-
-Juliana Rew
-     Compatibility with large PIDs.  
-
-Karen Schuchardt
-     Auxiliary coordinate support.  
-
-Gayathri Venkitachalam
-     MPI implementation.  
-
-Scott Capps
-     Large work-load testing 
-
-Martin Dix, Mark Flanner, Keith Lindsay, Mike Page, Martin Schmidt, Michael Schulz, Remik Ziemlinski
-     Excellent bug reports and feature requests.  
-
-Markus Liebig
-     Proof-read the ncap documentation 
-
-Daniel Baumann, Barry deFreese, Francesco Lovergine, Matej Vela, Luk Claes
-     Debian packaging 
-
-Patrice Dumas, Ed Hill, Orion Poplawski
-     RedHat packaging 
-
-George Shapavalov, Patrick Kursawe
-     Gentoo packaging 
-
-Filipe Fernandes
-     OpenSuse packaging 
-
-Takeshi Enomoto, Alexander Hansen
-     Mac OS packaging 
-
-Eric Blake
-     Autoconf/M4 help 
-
-Gavin Burris, Kyle Wilcox
-     RHEL and CentOS build scripts and bug reports.
-   Please let me know if your name was omitted!
-
-* Menu:
-
-* Proposals for Institutional Funding::
-
-
-File: nco.info,  Node: Proposals for Institutional Funding,  Prev: Contributors,  Up: Contributing
-
-5.2 Proposals for Institutional Funding
-=======================================
-
-NSF has funded a project (http://nco.sf.net#prp_sei) to improve
-Distributed Data Reduction & Analysis (DDRA) by evolving NCO into a
-suite of Scientific Data Operators called SDO.  The two main components
-of this project are NCO parallelism (OpenMP, MPI) and Server-Side DDRA
-(SSDDRA) implemented through extensions to OPeNDAP and netCDF4.  This
-project will dramatically reduce bandwidth usage for NCO DDRA.
-
-   With this first NCO proposal funded, the content of the next NCO
-proposal is clear.  We are interested in obtaining NASA support for
-HDF-specific enhancements to NCO.  We plan to submit a proposal to the
-next suitable NASA NRA or NSF opportunity.
-
-   We are considering a lot of interesting ideas for still more
-proposals.  Please contact us if you wish to be involved with any future
-NCO-related proposals.  Comments on the proposals and letters of
-support are also very welcome.
-
-
-File: nco.info,  Node: CCSM Example,  Next: mybibnode,  Prev: Contributing,  Up: Top
-
-6 CCSM Example
-**************
-
-This chapter illustrates how to use NCO to process and analyze the
-results of a CCSM climate simulation.
-     ************************************************************************
-     Task 0: Finding input files
-     ************************************************************************
-     The CCSM model outputs files to a local directory like:
-
-     /ptmp/zender/archive/T42x1_40
-
-     Each component model has its own subdirectory, e.g.,
-
-     /ptmp/zender/archive/T42x1_40/atm
-     /ptmp/zender/archive/T42x1_40/cpl
-     /ptmp/zender/archive/T42x1_40/ice
-     /ptmp/zender/archive/T42x1_40/lnd
-     /ptmp/zender/archive/T42x1_40/ocn
-
-     within which model output is tagged with the particular model name
-
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-01.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-02.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-03.nc
-     ...
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-12.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-01.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-02.nc
-     ...
-
-     or
-
-     /ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-01.nc
-     /ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-02.nc
-     /ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-03.nc
-     ...
-
-     ************************************************************************
-     Task 1: Regional processing
-     ************************************************************************
-     The first task in data processing is often creating seasonal cycles.
-     Imagine a 100-year simulation with its 1200 monthly mean files.
-     Our goal is to create a single file containing 12 months of data.
-     Each month in the output file is the mean of 100 input files.
-
-     Normally, we store the "reduced" data in a smaller, local directory.
-
-     caseid='T42x1_40'
-     #drc_in="${DATA}/archive/${caseid}/atm"
-     drc_in="${DATA}/${caseid}"
-     drc_out="${DATA}/${caseid}"
-     mkdir -p ${drc_out}
-     cd ${drc_out}
-
-     Method 1: Assume all data in directory applies
-     for mth in {1..12}; do
-       mm=`printf "%02d" $mth`
-       ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-         ${drc_in}/${caseid}.cam2.h0.*-${mm}.nc
-     done # end loop over mth
-
-     Method 2: Use shell 'globbing' to construct input filenames
-     for mth in {1..12}; do
-       mm=`printf "%02d" $mth`
-       ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-         ${drc_in}/${caseid}.cam2.h0.00??-${mm}.nc \
-         ${drc_in}/${caseid}.cam2.h0.0100-${mm}.nc
-     done # end loop over mth
-
-     Method 3: Construct input filename list explicitly
-     for mth in {1..12}; do
-       mm=`printf "%02d" $mth`
-       fl_lst_in=''
-       for yr in {1..100}; do
-         yyyy=`printf "%04d" $yr`
-         fl_in=${caseid}.cam2.h0.${yyyy}-${mm}.nc
-         fl_lst_in="${fl_lst_in} ${caseid}.cam2.h0.${yyyy}-${mm}.nc"
-       done # end loop over yr
-       ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc -p ${drc_in} \
-         ${fl_lst_in}
-     done # end loop over mth
-
-     Make sure the output file averages correct input files!
-     ncks -M prints global metadata:
-
-       ncks -M ${drc_out}/${caseid}_clm01.nc
-
-     The input files ncra used to create the climatological monthly mean
-     will appear in the global attribute named 'history'.
-
-     Use ncrcat to aggregate the climatological monthly means
-
-       ncrcat -O -D 1 \
-         ${drc_out}/${caseid}_clm??.nc ${drc_out}/${caseid}_clm_0112.nc
-
-     Finally, create climatological means for reference.
-     The climatological time-mean:
-
-       ncra -O -D 1 \
-         ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm.nc
-
-     The climatological zonal-mean:
-
-       ncwa -O -D 1 -a lon \
-         ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_x.nc
-
-     The climatological time- and spatial-mean:
-
-       ncwa -O -D 1 -a lon,lat,time -w gw \
-         ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-     This file contains only scalars, e.g., "global mean temperature",
-     used for summarizing global results of a climate experiment.
-
-     Climatological monthly anomalies = Annual Cycle:
-     Subtract climatological mean from climatological monthly means.
-     Result is annual cycle, i.e., climate-mean has been removed.
-
-       ncbo -O -D 1 -o ${drc_out}/${caseid}_clm_0112_anm.nc \
-         ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-     ************************************************************************
-     Task 2: Correcting monthly averages
-     ************************************************************************
-     The previous step appoximates all months as being equal, so, e.g.,
-     February weighs slightly too much in the climatological mean.
-     This approximation can be removed by weighting months appropriately.
-     We must add the number of days per month to the monthly mean files.
-     First, create a shell variable dpm:
-
-     unset dpm # Days per month
-     declare -a dpm
-     dpm=(0 31 28.25 31 30 31 30 31 31 30 31 30 31) # Allows 1-based indexing
-
-     Method 1: Create dpm directly in climatological monthly means
-     for mth in {1..12}; do
-       mm=`printf "%02d" ${mth}`
-       ncap2 -O -s "dpm=0.0*date+${dpm[${mth}]}" \
-         ${drc_out}/${caseid}_clm${mm}.nc ${drc_out}/${caseid}_clm${mm}.nc
-     done # end loop over mth
-
-     Method 2: Create dpm by aggregating small files
-     for mth in {1..12}; do
-       mm=`printf "%02d" ${mth}`
-       ncap2 -O -v -s "dpm=${dpm[${mth}]}" ~/nco/data/in.nc \
-         ${drc_out}/foo_${mm}.nc
-     done # end loop over mth
-     ncecat -O -D 1 -p ${drc_out} -n 12,2,2 foo_${mm}.nc foo.nc
-     ncrename -O -D 1 -d record,time ${drc_out}/foo.nc
-     ncatted -O -h \
-       -a long_name,dpm,o,c,"Days per month" \
-       -a units,dpm,o,c,"days" \
-       ${drc_out}/${caseid}_clm_0112.nc
-     ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-     Method 3: Create small netCDF file using ncgen
-     cat > foo.cdl << 'EOF'
-     netcdf foo {
-     dimensions:
-     	time=unlimited;
-     variables:
-     	float dpm(time);
-     	dpm:long_name="Days per month";
-     	dpm:units="days";
-     data:
-     	dpm=31,28.25,31,30,31,30,31,31,30,31,30,31;
-     }
-     EOF
-     ncgen -b -o foo.nc foo.cdl
-     ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-     Another way to get correct monthly weighting is to average daily
-     output files, if available.
-
-     ************************************************************************
-     Task 3: Regional processing
-     ************************************************************************
-     Let's say you are interested in examining the California region.
-     Hyperslab your dataset to isolate the appropriate latitude/longitudes.
-
-       ncks -O -D 1 -d lat,30.0,37.0 -d lon,240.0,270.0 \
-         ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_0112_Cal.nc
-
-     The dataset is now much smaller!
-     To examine particular metrics.
-
-     ************************************************************************
-     Task 4: Accessing data stored remotely
-     ************************************************************************
-     OPeNDAP server examples:
-
-     UCI DAP servers:
-     ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
-     ncrcat -O -C -D 3 -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
-       -l /tmp in.nc in.nc ~/foo.nc
-
-     Unidata DAP servers:
-     ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-     ncrcat -O -C -D 3 -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-       -l /tmp in.nc in.nc ~/foo.nc
-
-     NOAA DAP servers:
-     ncwa -O -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-     http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-     pres.sfc.1969.nc ~/foo.nc
-
-     LLNL PCMDI IPCC OPeNDAP Data Portal:
-     ncks -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
-
-     Earth System Grid (ESG): http://www.earthsystemgrid.org
-
-     caseid='b30.025.ES01'
-     CCSM3.0 1% increasing CO2 run, T42_gx1v3, 200 years starting in year 400
-     Atmospheric post-processed data, monthly averages, e.g.,
-     /data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0449-12.nc
-     /data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0599-12.nc
-
-     ESG supports password-protected FTP access by registered users
-     NCO uses the .netrc file, if present, for password-protected FTP access
-     Syntax for accessing single file is, e.g.,
-     ncks -O -D 3 \
-       -p ftp://climate.llnl.gov/sresa1b/atm/mo/tas/ncar_ccsm3_0/run1 \
-       -l /tmp tas_A1.SRESA1B_1.CCSM.atmm.2000-01_cat_2099-12.nc ~/foo.nc
-
-     # Average surface air temperature tas for SRESA1B scenario
-     # This loop is illustrative and will not work until NCO correctly
-     # translates '*' to FTP 'mget' all remote files
-     for var in 'tas'; do
-     for scn in 'sresa1b'; do
-     for mdl in 'cccma_cgcm3_1 cccma_cgcm3_1_t63 cnrm_cm3 csiro_mk3_0 \
-     gfdl_cm2_0 gfdl_cm2_1 giss_aom giss_model_e_h giss_model_e_r \
-     iap_fgoals1_0_g inmcm3_0 ipsl_cm4 miroc3_2_hires miroc3_2_medres \
-     miub_echo_g mpi_echam5 mri_cgcm2_3_2a ncar_ccsm3_0 ncar_pcm1 \
-     ukmo_hadcm3 ukmo_hadgem1'; do
-     for run in '1'; do
-             ncks -R -O -D 3 -p ftp://climate.llnl.gov/${scn}/atm/mo/${var}/${mdl}/run${run} -l ${DATA}/${scn}/atm/mo/${var}/${mdl}/run${run} '*' ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-     done # end loop over run
-     done # end loop over mdl
-     done # end loop over scn
-     done # end loop over var
-
-     cd sresa1b/atm/mo/tas/ukmo_hadcm3/run1/
-     ncks -H -m -v lat,lon,lat_bnds,lon_bnds -M tas_A1.nc | m
-     bds -x 096 -y 073 -m 33 -o ${DATA}/data/dst_3.75x2.5.nc # ukmo_hadcm3
-     ncview ${DATA}/data/dst_3.75x2.5.nc
-
-     # msk_rgn is California mask on ukmo_hadcm3 grid
-     # area is correct area weight on ukmo_hadcm3 grid
-     ncks -A -v area,msk_rgn ${DATA}/data/dst_3.75x2.5.nc \
-     ${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/area_msk_ukmo_hadcm3.nc
-
-     Template for standardized data:
-     ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-     e.g., raw data
-     ${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/tas_A1.nc
-     becomes standardized data
-
-     Level 0: raw from IPCC site--no changes except for name
-              Make symbolic link name match raw data
-     Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-     ln -s -f tas_A1.nc sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc
-     area_msk_ukmo_hadcm3.nc
-
-     Level I: Add all variables (but not standardized in time)
-              to file containing msk_rgn and area
-     Template: ${scn}_${mdl}_${run}_${yyyymm}_${yyyymm}.nc
-
-     /bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-     ncks -A -v tas sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc \
-                    sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-     ncks -A -v pr  sresa1b_ukmo_hadcm3_run1_pr_200101_209911.nc \
-                    sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-     If already have file then:
-     mv sresa1b_ukmo_hadcm3_run1_200101_209911.nc foo.nc
-     /bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-     ncks -A -v tas,pr foo.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-     Level II: Correct # years, months
-     Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-     ncks -d time,....... file1.nc file2.nc
-     ncrcat file2.nc file3.nc sresa1b_ukmo_hadcm3_run1_200001_209912.nc
-
-     Level III: Many derived products from level II, e.g.,
-
-           A. Global mean timeseries
-           ncwa -w area -a lat,lon \
-                sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-     	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy.nc
-
-           B. Califoria average timeseries
-           ncwa -m msk_rgn -w area -a lat,lon \
-                sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-     	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy_Cal.nc
-
-
-File: nco.info,  Node: mybibnode,  Next: General Index,  Prev: CCSM Example,  Up: Top
-
-7 References
-************
-
-     [ZeM07]  Zender, C. S., and H. J. Mangalam (2007), Scaling
-     Properties of Common Statistical Operators for Gridded Datasets,
-     Int. J. High Perform. Comput. Appl., 21(4), 485-498,
-     doi:10.1177/1094342007083802.
-
-     [Zen08]  Zender, C. S. (2008), Analysis of Self-describing Gridded
-     Geoscience Data with netCDF Operators (NCO), Environ. Modell.
-     Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
-
-     [WZJ07]  Wang, D. L., C. S. Zender, and S. F. Jenks (2007),
-     DAP-enabled Server-side Data Reduction and Analysis, Proceedings
-     of the 23rd AMS Conference on Interactive Information and
-     Processing Systems (IIPS) for Meteorology, Oceanography, and
-     Hydrology, Paper 3B.2, January 14-18, San Antonio, TX. American
-     Meteorological Society, AMS Press, Boston, MA.
-
-     [ZMW06]  Zender, C. S., H. Mangalam, and D. L. Wang (2006),
-     Improving Scaling Properties of Common Statistical Operators for
-     Gridded Geoscience Datasets, Eos Trans. AGU, 87(52), Fall Meet.
-     Suppl., Abstract IN53B-0827.
-
-     [ZeW07]  Zender, C. S., and D. L. Wang (2007), High performance
-     distributed data reduction and analysis with the netCDF Operators
-     (NCO), Proceedings of the 23rd AMS Conference on Interactive
-     Information and Processing Systems (IIPS) for Meteorology,
-     Oceanography, and Hydrology, Paper 3B.4, January 14-18, San
-     Antonio, TX. American Meteorological Society, AMS Press, Boston,
-     MA.
-
-     [WZJ06]  Wang, D. L., C. S. Zender, and S. F. Jenks (2006),
-     Server-side netCDF Data Reduction and Analysis, Eos Trans. AGU,
-     87(52), Fall Meet. Suppl., Abstract IN53B-0826.
-
-     [WZJ073]  Wang, D. L., C. S. Zender, and S. F. Jenks (2007),
-     Server-side parallel data reduction and analysis, in Advances in
-     Grid and Pervasive Computing, Second International Conference, GPC
-     2007, Paris, France, May 2-4, 2007, Proceedings. IEEE Lecture
-     Notes in Computer Science, vol. 4459, edited by C. Cerin and K.-C.
-     Li, pp. 744-750, Springer-Verlag, Berlin/Heidelberg,
-     doi:10.1007/978-3-540-72360-8_67.
-
-     [WZJ074]  Wang, D. L., C. S. Zender and S. F. Jenks (2007), A
-     System for Scripted Data Analysis at Remote Data Centers, Eos
-     Trans. AGU, 88(52), Fall Meet. Suppl., Abstract IN11B-0469.
-
-     [WZJ081]  Wang, D. L., C. S. Zender and S. F. Jenks (2008),
-     Cluster Workflow Execution of Retargeted Data Analysis Scripts,
-     Proceedings of the 8th IEEE Int'l Symposium on Cluster Computing
-     and the Grid (IEEE CCGRID '08), pp. 449-458, Lyon, France, May
-     2008.
-
-     [WZJ091]  Wang, D. L., C. S. Zender, and S. F. Jenks (2009),
-     Efficient Clustered Server-side Data Analysis Workflows using
-     SWAMP, Earth Sci. Inform., 2(3), 141-155,
-     doi:10.1007/s12145-009-0021-z.
-
-
-File: nco.info,  Node: General Index,  Prev: mybibnode,  Up: Top
-
-General Index
-*************
-
- [index ]
-* Menu:
-
-* " (double quote):                      ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* #include:                              Syntax of ncap2 statements.
-                                                              (line  28)
-* $ (wildcard character):                Subsetting Variables.
-                                                              (line  50)
-* % (modulus):                           Intrinsic mathematical methods.
-                                                              (line   7)
-* ' (end quote):                         ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* *:                                     ncbo netCDF Binary Operator.
-                                                              (line  22)
-* * (filename expansion):                Subsetting Variables.
-                                                              (line  50)
-* * (multiplication):                    Intrinsic mathematical methods.
-                                                              (line   7)
-* * (wildcard character):                Subsetting Variables.
-                                                              (line  59)
-* +:                                     ncbo netCDF Binary Operator.
-                                                              (line  22)
-* + (addition):                          Intrinsic mathematical methods.
-                                                              (line   7)
-* + (wildcard character):                Subsetting Variables.
-                                                              (line  59)
-* -:                                     ncbo netCDF Binary Operator.
-                                                              (line  22)
-* - (subtraction):                       Intrinsic mathematical methods.
-                                                              (line   7)
-* --3:                                   Selecting Output File Format.
-                                                              (line   6)
-* --4:                                   Selecting Output File Format.
-                                                              (line   6)
-* --64bit:                               Selecting Output File Format.
-                                                              (line   6)
-* --abc:                                 ncks netCDF Kitchen Sink.
-                                                              (line 102)
-* --alphabetize:                         ncks netCDF Kitchen Sink.
-                                                              (line 102)
-* --apn <1>:                             ncks netCDF Kitchen Sink.
-                                                              (line 281)
-* --apn <2>:                             Batch Mode.          (line   6)
-* --apn:                                 Temporary Output Files.
-                                                              (line  25)
-* --append <1>:                          ncks netCDF Kitchen Sink.
-                                                              (line 281)
-* --append <2>:                          Batch Mode.          (line   6)
-* --append:                              Temporary Output Files.
-                                                              (line  25)
-* --auxiliary:                           Auxiliary Coordinates.
-                                                              (line   6)
-* --auxiliary LON_MIN,LON_MAX,LAT_MIN,LAT_MAX: Auxiliary Coordinates.
-                                                              (line   6)
-* --binary:                              ncks netCDF Kitchen Sink.
-                                                              (line 112)
-* --bnr:                                 ncks netCDF Kitchen Sink.
-                                                              (line 112)
-* --chunk_dimension:                     Chunking.            (line   6)
-* --chunk_map:                           Chunking.            (line   6)
-* --chunk_policy:                        Chunking.            (line   6)
-* --chunk_scalar:                        Chunking.            (line   6)
-* --cnk_dmn:                             Chunking.            (line   6)
-* --cnk_map:                             Chunking.            (line   6)
-* --cnk_map CNK_MAP:                     Chunking.            (line  68)
-* --cnk_plc:                             Chunking.            (line   6)
-* --cnk_scl:                             Chunking.            (line   6)
-* --coords <1>:                          CF Conventions.      (line  71)
-* --coords:                              Subsetting Coordinate Variables.
-                                                              (line   6)
-* --crd <1>:                             CF Conventions.      (line  71)
-* --crd:                                 Subsetting Coordinate Variables.
-                                                              (line   6)
-* --data:                                ncks netCDF Kitchen Sink.
-                                                              (line 138)
-* --dbg_lvl DEBUG-LEVEL <1>:             Command Line Options.
-                                                              (line  24)
-* --dbg_lvl DEBUG-LEVEL <2>:             Large Datasets.      (line  37)
-* --dbg_lvl DEBUG-LEVEL:                 Help Requests and Bug Reports.
-                                                              (line  61)
-* --debug-level DEBUG-LEVEL <1>:         Large Datasets.      (line  37)
-* --debug-level DEBUG-LEVEL:             Help Requests and Bug Reports.
-                                                              (line  61)
-* --deflate:                             Deflation.           (line   6)
-* --dfl_lvl:                             Deflation.           (line   6)
-* --dimension DIM,[MIN],[MAX],STRIDE:    Stride.              (line   6)
-* --dimension DIM,[MIN][,[MAX][,[STRIDE]]] <1>: UDUnits Support.
-                                                              (line   6)
-* --dimension DIM,[MIN][,[MAX][,[STRIDE]]] <2>: Wrapped Coordinates.
-                                                              (line   6)
-* --dimension DIM,[MIN][,[MAX][,[STRIDE]]] <3>: Multislabs.   (line   6)
-* --dimension DIM,[MIN][,[MAX][,[STRIDE]]]: Hyperslabs.       (line   6)
-* --dmn DIM,[MIN],[MAX],STRIDE:          Stride.              (line   6)
-* --dmn DIM,[MIN][,[MAX][,[STRIDE]]] <1>: UDUnits Support.    (line   6)
-* --dmn DIM,[MIN][,[MAX][,[STRIDE]]] <2>: Wrapped Coordinates.
-                                                              (line   6)
-* --dmn DIM,[MIN][,[MAX][,[STRIDE]]] <3>: Multislabs.         (line   6)
-* --dmn DIM,[MIN][,[MAX][,[STRIDE]]]:    Hyperslabs.          (line   6)
-* --exclude <1>:                         ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* --exclude:                             Subsetting Variables.
-                                                              (line   6)
-* --file_format:                         Selecting Output File Format.
-                                                              (line   6)
-* --file_list:                           File List Attributes.
-                                                              (line   6)
-* --fix_rec_dmn:                         ncks netCDF Kitchen Sink.
-                                                              (line 128)
-* --fl_bnr:                              ncks netCDF Kitchen Sink.
-                                                              (line 119)
-* --fl_fmt:                              Selecting Output File Format.
-                                                              (line   6)
-* --fl_lst_in:                           File List Attributes.
-                                                              (line   6)
-* --fl_out FL_OUT:                       Specifying Output Files.
-                                                              (line   6)
-* --fl_spt:                              ncap2 netCDF Arithmetic Processor.
-                                                              (line  23)
-* --fnc_tbl:                             Intrinsic mathematical methods.
-                                                              (line 142)
-* --fortran:                             C and Fortran Index Conventions.
-                                                              (line   6)
-* --glb_mtd_spr:                         ncecat netCDF Ensemble Concatenator.
-                                                              (line  44)
-* --hdr_pad HDR_PAD:                     Metadata Optimization.
-                                                              (line   6)
-* --header_pad HDR_PAD:                  Metadata Optimization.
-                                                              (line   6)
-* --hieronymus:                          ncks netCDF Kitchen Sink.
-                                                              (line 138)
-* --history:                             History Attribute.   (line   6)
-* --hst:                                 History Attribute.   (line   6)
-* --lcl OUTPUT-PATH:                     Remote storage.      (line   6)
-* --local OUTPUT-PATH:                   Remote storage.      (line   6)
-* --map CNK_MAP:                         Chunking.            (line  68)
-* --map PCK_MAP:                         ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  92)
-* --mask-value MASK_VAL:                 Mask condition.      (line  23)
-* --mask-variable MASK_VAR:              ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --mask_comparator MASK_COMP:           Mask condition.      (line   6)
-* --mask_condition MASK_COND <1>:        Mask condition.      (line   6)
-* --mask_condition MASK_COND:            ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --mask_value MASK_VAL:                 Mask condition.      (line  23)
-* --mask_variable MASK_VAR:              ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --metadata:                            ncks netCDF Kitchen Sink.
-                                                              (line 219)
-* --Metadata:                            ncks netCDF Kitchen Sink.
-                                                              (line 182)
-* --mk_rec_dmn DIM:                      ncks netCDF Kitchen Sink.
-                                                              (line 132)
-* --msk_cmp_typ MASK_COMP:               Mask condition.      (line   6)
-* --msk_cnd MASK_COND:                   ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --msk_cnd_sng MASK_COND:               Mask condition.      (line   6)
-* --msk_nm MASK_VAR:                     ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --msk_val MASK_VAL:                    Mask condition.      (line  23)
-* --msk_var MASK_VAR:                    ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --mtd:                                 ncks netCDF Kitchen Sink.
-                                                              (line 219)
-* --Mtd:                                 ncks netCDF Kitchen Sink.
-                                                              (line 182)
-* --netcdf4:                             Selecting Output File Format.
-                                                              (line   6)
-* --nintap LOOP:                         Specifying Input Files.
-                                                              (line   6)
-* --no-coords <1>:                       CF Conventions.      (line  71)
-* --no-coords:                           Subsetting Coordinate Variables.
-                                                              (line   6)
-* --no-crd <1>:                          CF Conventions.      (line  71)
-* --no-crd:                              Subsetting Coordinate Variables.
-                                                              (line   6)
-* --no_rec_dmn:                          ncks netCDF Kitchen Sink.
-                                                              (line 128)
-* --omp_num_threads THR_NBR:             OpenMP Threading.    (line   6)
-* --op_rlt MASK_COMP:                    Mask condition.      (line   6)
-* --op_typ OP_TYP <1>:                   ncbo netCDF Binary Operator.
-                                                              (line  22)
-* --op_typ OP_TYP:                       Operation Types.     (line   6)
-* --operation OP_TYP <1>:                ncbo netCDF Binary Operator.
-                                                              (line  22)
-* --operation OP_TYP:                    Operation Types.     (line   6)
-* --output FL_OUT:                       Specifying Output Files.
-                                                              (line   6)
-* --overwrite <1>:                       Batch Mode.          (line   6)
-* --overwrite:                           Temporary Output Files.
-                                                              (line  25)
-* --ovr <1>:                             Batch Mode.          (line   6)
-* --ovr:                                 Temporary Output Files.
-                                                              (line  25)
-* --pack_policy PCK_PLC:                 ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  29)
-* --path INPUT-PATH <1>:                 Remote storage.      (line   6)
-* --path INPUT-PATH:                     Specifying Input Files.
-                                                              (line   6)
-* --pck_map PCK_MAP:                     ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  92)
-* --pck_plc PCK_PLC:                     ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  29)
-* --print:                               ncks netCDF Kitchen Sink.
-                                                              (line 229)
-* --prn:                                 ncks netCDF Kitchen Sink.
-                                                              (line 229)
-* --prn_fnc_tbl:                         Intrinsic mathematical methods.
-                                                              (line 142)
-* --pseudonym:                           Symbolic Links.      (line  16)
-* --pth INPUT-PATH <1>:                  Remote storage.      (line   6)
-* --pth INPUT-PATH:                      Specifying Input Files.
-                                                              (line   6)
-* --quiet:                               ncks netCDF Kitchen Sink.
-                                                              (line 241)
-* --rcd_nm ULM_NM:                       ncecat netCDF Ensemble Concatenator.
-                                                              (line  26)
-* --retain:                              Retaining Retrieved Files.
-                                                              (line   6)
-* --revision <1>:                        Operator Version.    (line   6)
-* --revision:                            Help Requests and Bug Reports.
-                                                              (line  61)
-* --rtn:                                 Retaining Retrieved Files.
-                                                              (line   6)
-* --script:                              ncap2 netCDF Arithmetic Processor.
-                                                              (line  23)
-* --script-file:                         ncap2 netCDF Arithmetic Processor.
-                                                              (line  23)
-* --sng_fmt:                             ncks netCDF Kitchen Sink.
-                                                              (line 249)
-* --spt:                                 ncap2 netCDF Arithmetic Processor.
-                                                              (line  23)
-* --string:                              ncks netCDF Kitchen Sink.
-                                                              (line 249)
-* --thr_nbr THR_NBR:                     OpenMP Threading.    (line   6)
-* --threads THR_NBR:                     OpenMP Threading.    (line   6)
-* --ulm_nm ULM_NM:                       ncecat netCDF Ensemble Concatenator.
-                                                              (line  26)
-* --units:                               ncks netCDF Kitchen Sink.
-                                                              (line 254)
-* --unpack:                              ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  76)
-* --upk:                                 ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  76)
-* --variable VAR <1>:                    ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* --variable VAR:                        Subsetting Variables.
-                                                              (line   6)
-* --version <1>:                         Operator Version.    (line   6)
-* --version:                             Help Requests and Bug Reports.
-                                                              (line  61)
-* --vrs <1>:                             Operator Version.    (line   6)
-* --vrs:                                 Help Requests and Bug Reports.
-                                                              (line  61)
-* --weight WEIGHT:                       ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --weight WGT1[,WGT2]:                  ncflint netCDF File Interpolator.
-                                                              (line  31)
-* --wgt_var WEIGHT:                      ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* --wgt_var WGT1[,WGT2]:                 ncflint netCDF File Interpolator.
-                                                              (line  31)
-* --xcl <1>:                             ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* --xcl:                                 Subsetting Variables.
-                                                              (line   6)
-* -3 <1>:                                Selecting Output File Format.
-                                                              (line   6)
-* -3:                                    netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  77)
-* -4 <1>:                                Selecting Output File Format.
-                                                              (line   6)
-* -4:                                    netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  77)
-* -A <1>:                                ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 201)
-* -A:                                    ncks netCDF Kitchen Sink.
-                                                              (line 281)
-* -a:                                    ncks netCDF Kitchen Sink.
-                                                              (line 102)
-* -A <1>:                                Batch Mode.          (line   6)
-* -A:                                    Temporary Output Files.
-                                                              (line  25)
-* -b:                                    ncks netCDF Kitchen Sink.
-                                                              (line 119)
-* -B:                                    ncks netCDF Kitchen Sink.
-                                                              (line 112)
-* -b <1>:                                ncbo netCDF Binary Operator.
-                                                              (line 119)
-* -b:                                    Examples ncap2.      (line 114)
-* -B MASK_COND <1>:                      Mask condition.      (line   6)
-* -B MASK_COND:                          ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* -C:                                    Examples ncap2.      (line 126)
-* -c:                                    CF Conventions.      (line  71)
-* -C:                                    CF Conventions.      (line  71)
-* -c:                                    Subsetting Coordinate Variables.
-                                                              (line   6)
-* -C:                                    Subsetting Coordinate Variables.
-                                                              (line   6)
-* -D:                                    Help Requests and Bug Reports.
-                                                              (line  46)
-* -D DEBUG-LEVEL <1>:                    Command Line Options.
-                                                              (line  24)
-* -D DEBUG-LEVEL <2>:                    Large Datasets.      (line  37)
-* -D DEBUG-LEVEL:                        Help Requests and Bug Reports.
-                                                              (line  61)
-* -d DIM,[MIN],[MAX],STRIDE:             Stride.              (line   6)
-* -d DIM,[MIN][,[MAX][,[STRIDE]]] <1>:   UDUnits Support.     (line   6)
-* -d DIM,[MIN][,[MAX][,[STRIDE]]] <2>:   Wrapped Coordinates. (line   6)
-* -d DIM,[MIN][,[MAX][,[STRIDE]]] <3>:   Multislabs.          (line   6)
-* -d DIM,[MIN][,[MAX][,[STRIDE]]]:       Hyperslabs.          (line   6)
-* -d DIM,[MIN][,[MAX]]:                  ncwa netCDF Weighted Averager.
-                                                              (line  35)
-* -f:                                    Intrinsic mathematical methods.
-                                                              (line 142)
-* -F:                                    C and Fortran Index Conventions.
-                                                              (line   6)
-* -H:                                    ncks netCDF Kitchen Sink.
-                                                              (line 138)
-* -h:                                    ncatted netCDF Attribute Editor.
-                                                              (line  23)
-* -H:                                    File List Attributes.
-                                                              (line   6)
-* -h:                                    History Attribute.   (line   6)
-* -I:                                    ncwa netCDF Weighted Averager.
-                                                              (line  71)
-* -L:                                    Deflation.           (line   6)
-* -l OUTPUT-PATH:                        Remote storage.      (line   6)
-* -m:                                    ncks netCDF Kitchen Sink.
-                                                              (line 219)
-* -M <1>:                                ncks netCDF Kitchen Sink.
-                                                              (line 182)
-* -M <2>:                                ncecat netCDF Ensemble Concatenator.
-                                                              (line  44)
-* -M:                                    Selecting Output File Format.
-                                                              (line  88)
-* -M CNK_MAP:                            Chunking.            (line  68)
-* -m MASK_VAR:                           ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* -M PCK_MAP:                            ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  92)
-* -N:                                    Normalization and Integration.
-                                                              (line   6)
-* -n LOOP <1>:                           Specifying Input Files.
-                                                              (line   6)
-* -n LOOP:                               Large Numbers of Files.
-                                                              (line   6)
-* -O <1>:                                Batch Mode.          (line   6)
-* -O:                                    Temporary Output Files.
-                                                              (line  25)
-* -o FL_OUT <1>:                         Specifying Output Files.
-                                                              (line   6)
-* -o FL_OUT:                             Large Numbers of Files.
-                                                              (line  60)
-* -P:                                    ncks netCDF Kitchen Sink.
-                                                              (line 229)
-* -p INPUT-PATH <1>:                     Remote storage.      (line  67)
-* -p INPUT-PATH:                         Specifying Input Files.
-                                                              (line   6)
-* -P PCK_PLC:                            ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  29)
-* -q:                                    ncks netCDF Kitchen Sink.
-                                                              (line 241)
-* -Q:                                    ncks netCDF Kitchen Sink.
-                                                              (line 235)
-* -r:                                    Operator Version.    (line   6)
-* -R:                                    Retaining Retrieved Files.
-                                                              (line   6)
-* -r:                                    Help Requests and Bug Reports.
-                                                              (line  46)
-* -s:                                    ncks netCDF Kitchen Sink.
-                                                              (line 249)
-* -t THR_NBR <1>:                        OpenMP Threading.    (line   6)
-* -t THR_NBR:                            Single and Multi-file Operators.
-                                                              (line  49)
-* -U:                                    ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  76)
-* -u:                                    ncks netCDF Kitchen Sink.
-                                                              (line 254)
-* -u ULM_NM:                             ncecat netCDF Ensemble Concatenator.
-                                                              (line  26)
-* -v:                                    ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 201)
-* -v VAR <1>:                            ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* -v VAR:                                Subsetting Variables.
-                                                              (line   6)
-* -w WEIGHT:                             ncwa netCDF Weighted Averager.
-                                                              (line  43)
-* -w WGT1[,WGT2]:                        ncflint netCDF File Interpolator.
-                                                              (line  31)
-* -x:                                    ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* -X:                                    Auxiliary Coordinates.
-                                                              (line   6)
-* -x:                                    Subsetting Variables.
-                                                              (line   6)
-* -X LON_MIN,LON_MAX,LAT_MIN,LAT_MAX:    Auxiliary Coordinates.
-                                                              (line   6)
-* -y OP_TYP <1>:                         ncbo netCDF Binary Operator.
-                                                              (line  22)
-* -y OP_TYP:                             Operation Types.     (line   6)
-* .:                                     ncrename netCDF Renamer.
-                                                              (line  15)
-* . (wildcard character):                Subsetting Variables.
-                                                              (line  50)
-* .netrc:                                Remote storage.      (line   6)
-* .rhosts:                               Remote storage.      (line   6)
-* /:                                     ncbo netCDF Binary Operator.
-                                                              (line  22)
-* / (division):                          Intrinsic mathematical methods.
-                                                              (line   7)
-* /*...*/ (comment):                     Syntax of ncap2 statements.
-                                                              (line  24)
-* // (comment):                          Syntax of ncap2 statements.
-                                                              (line  24)
-* 0 (NUL):                               ncatted netCDF Attribute Editor.
-                                                              (line 209)
-* 32-bit offset file format:             Selecting Output File Format.
-                                                              (line  88)
-* 64-bit offset file format:             Selecting Output File Format.
-                                                              (line  88)
-* 64BIT files:                           Selecting Output File Format.
-                                                              (line   6)
-* ; (end of statement):                  Syntax of ncap2 statements.
-                                                              (line  21)
-* <arpa/nameser.h>:                      Windows Operating System.
-                                                              (line  16)
-* <resolv.h>:                            Windows Operating System.
-                                                              (line  16)
-* ? (filename expansion):                Subsetting Variables.
-                                                              (line  50)
-* ? (question mark):                     ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* ? (wildcard character):                Subsetting Variables.
-                                                              (line  59)
-* @ (attribute):                         Syntax of ncap2 statements.
-                                                              (line  34)
-* [] (array delimiters):                 Syntax of ncap2 statements.
-                                                              (line  12)
-* \ (backslash):                         ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* \" (protected double quote):           ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* \' (protected end quote):              ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* \? (protected question mark):          ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* \\ (ASCII \, backslash):               ncatted netCDF Attribute Editor.
-                                                              (line 195)
-* \\ (protected backslash):              ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* \a (ASCII BEL, bell):                  ncatted netCDF Attribute Editor.
-                                                              (line 195)
-* \b (ASCII BS, backspace):              ncatted netCDF Attribute Editor.
-                                                              (line 195)
-* \f (ASCII FF, formfeed):               ncatted netCDF Attribute Editor.
-                                                              (line 195)
-* \n (ASCII LF, linefeed):               ncatted netCDF Attribute Editor.
-                                                              (line 185)
-* \n (linefeed):                         ncks netCDF Kitchen Sink.
-                                                              (line 286)
-* \r (ASCII CR, carriage return):        ncatted netCDF Attribute Editor.
-                                                              (line 195)
-* \t (ASCII HT, horizontal tab):         ncatted netCDF Attribute Editor.
-                                                              (line 185)
-* \t (horizontal tab):                   ncks netCDF Kitchen Sink.
-                                                              (line 286)
-* \v (ASCII VT, vertical tab):           ncatted netCDF Attribute Editor.
-                                                              (line 195)
-* ^ (power):                             Intrinsic mathematical methods.
-                                                              (line   7)
-* ^ (wildcard character):                Subsetting Variables.
-                                                              (line  50)
-* _FillValue <1>:                        ncrename netCDF Renamer.
-                                                              (line  92)
-* _FillValue:                            ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 130)
-* _FILLVALUE:                            ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 130)
-* _FillValue <1>:                        ncflint netCDF File Interpolator.
-                                                              (line  70)
-* _FillValue <2>:                        ncatted netCDF Attribute Editor.
-                                                              (line  28)
-* _FillValue <3>:                        Packed data.         (line   6)
-* _FillValue:                            Missing Values.      (line   6)
-* `NCO User's Guide':                    Availability.        (line  14)
-* `User's Guide':                        Availability.        (line  14)
-* ABS:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* absolute value:                        Intrinsic mathematical methods.
-                                                              (line  10)
-* ACOS:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* ACOSH:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* add:                                   ncbo netCDF Binary Operator.
-                                                              (line  22)
-* add_offset <1>:                        ncrcat netCDF Record Concatenator.
-                                                              (line  32)
-* add_offset <2>:                        ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  22)
-* add_offset <3>:                        ncecat netCDF Ensemble Concatenator.
-                                                              (line  65)
-* add_offset:                            Packed data.         (line   6)
-* ADD_OFFSET:                            Performance.         (line  31)
-* adding data <1>:                       ncflint netCDF File Interpolator.
-                                                              (line   6)
-* adding data:                           ncbo netCDF Binary Operator.
-                                                              (line   6)
-* addition <1>:                          ncflint netCDF File Interpolator.
-                                                              (line   6)
-* addition <2>:                          ncbo netCDF Binary Operator.
-                                                              (line   6)
-* addition:                              Intrinsic mathematical methods.
-                                                              (line   7)
-* Alexander Hansen:                      Contributors.        (line  74)
-* alias <1>:                             ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  86)
-* alias:                                 ncbo netCDF Binary Operator.
-                                                              (line  66)
-* all:                                   Chunking.            (line  36)
-* alphabetization:                       ncks netCDF Kitchen Sink.
-                                                              (line 102)
-* alphabetize output:                    ncks netCDF Kitchen Sink.
-                                                              (line 269)
-* alternate invocations:                 ncbo netCDF Binary Operator.
-                                                              (line  22)
-* anomalies:                             ncbo netCDF Binary Operator.
-                                                              (line 102)
-* ANSI:                                  Compatability.       (line  35)
-* ANSI C:                                Intrinsic mathematical methods.
-                                                              (line 141)
-* appending data <1>:                    ncks netCDF Kitchen Sink.
-                                                              (line  49)
-* appending data:                        Examples ncap2.      (line 114)
-* appending to files <1>:                ncks netCDF Kitchen Sink.
-                                                              (line 281)
-* appending to files <2>:                Batch Mode.          (line   6)
-* appending to files:                    Temporary Output Files.
-                                                              (line  25)
-* appending variables <1>:               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 201)
-* appending variables:                   Appending Variables. (line   6)
-* AR4:                                   ncea netCDF Ensemble Averager.
-                                                              (line  30)
-* arccosine function:                    Intrinsic mathematical methods.
-                                                              (line  10)
-* arcsine function:                      Intrinsic mathematical methods.
-                                                              (line  10)
-* arctangent function:                   Intrinsic mathematical methods.
-                                                              (line  10)
-* area:                                  CF Conventions.      (line   6)
-* arithmetic operators <1>:              ncwa netCDF Weighted Averager.
-                                                              (line  35)
-* arithmetic operators:                  Missing Values.      (line  12)
-* arithmetic processor:                  ncap2 netCDF Arithmetic Processor.
-                                                              (line   6)
-* ARM conventions <1>:                   ncrcat netCDF Record Concatenator.
-                                                              (line  45)
-* ARM conventions:                       ARM Conventions.     (line   6)
-* array:                                 Arrays and hyperslabs.
-                                                              (line   6)
-* array function:                        Arrays and hyperslabs.
-                                                              (line   6)
-* array indexing:                        Syntax of ncap2 statements.
-                                                              (line  15)
-* array storage:                         Syntax of ncap2 statements.
-                                                              (line  18)
-* array syntax:                          Syntax of ncap2 statements.
-                                                              (line  12)
-* arrays:                                Arrays and hyperslabs.
-                                                              (line   6)
-* arrival value:                         ncflint netCDF File Interpolator.
-                                                              (line  45)
-* ASCII:                                 ncatted netCDF Attribute Editor.
-                                                              (line 183)
-* ASIN:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* ASINH:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* assignment statement:                  Syntax of ncap2 statements.
-                                                              (line  21)
-* asynchronous file access:              Remote storage.      (line   6)
-* ATAN:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* ATANH:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* attribute inheritance:                 Attributes.          (line  39)
-* attribute names <1>:                   ncrename netCDF Renamer.
-                                                              (line   6)
-* attribute names:                       ncatted netCDF Attribute Editor.
-                                                              (line   6)
-* attribute propagation:                 Attributes.          (line  39)
-* attribute syntax:                      Syntax of ncap2 statements.
-                                                              (line  34)
-* attribute, units:                      UDUnits Support.     (line   6)
-* attributes:                            ncatted netCDF Attribute Editor.
-                                                              (line   6)
-* attributes, appending:                 ncatted netCDF Attribute Editor.
-                                                              (line  88)
-* attributes, creating:                  ncatted netCDF Attribute Editor.
-                                                              (line  88)
-* attributes, deleting:                  ncatted netCDF Attribute Editor.
-                                                              (line  88)
-* attributes, editing:                   ncatted netCDF Attribute Editor.
-                                                              (line  88)
-* attributes, global <1>:                ncrename netCDF Renamer.
-                                                              (line  51)
-* attributes, global <2>:                ncks netCDF Kitchen Sink.
-                                                              (line  35)
-* attributes, global <3>:                ncatted netCDF Attribute Editor.
-                                                              (line  72)
-* attributes, global <4>:                ARM Conventions.     (line  30)
-* attributes, global <5>:                File List Attributes.
-                                                              (line   6)
-* attributes, global <6>:                History Attribute.   (line   6)
-* attributes, global:                    Large Numbers of Files.
-                                                              (line  34)
-* attributes, modifying:                 ncatted netCDF Attribute Editor.
-                                                              (line  88)
-* attributes, overwriting:               ncatted netCDF Attribute Editor.
-                                                              (line  88)
-* attributesncap:                        Attributes.          (line   6)
-* autoconf:                              Help Requests and Bug Reports.
-                                                              (line  69)
-* automagic <1>:                         Large Numbers of Files.
-                                                              (line   7)
-* automagic:                             Compatability.       (line  74)
-* automatic type conversion <1>:         Intrinsic mathematical methods.
-                                                              (line 100)
-* automatic type conversion:             Type Conversion.     (line   8)
-* auxiliary coordinates:                 CF Conventions.      (line  71)
-* average <1>:                           ncwa netCDF Weighted Averager.
-                                                              (line  80)
-* average:                               Operation Types.     (line   6)
-* averaging data <1>:                    ncwa netCDF Weighted Averager.
-                                                              (line   6)
-* averaging data <2>:                    ncra netCDF Record Averager.
-                                                              (line   6)
-* averaging data <3>:                    ncea netCDF Ensemble Averager.
-                                                              (line   6)
-* averaging data:                        Missing Values.      (line   6)
-* avg:                                   Operation Types.     (line   6)
-* avg():                                 Methods and functions.
-                                                              (line  30)
-* avgsqr:                                Operation Types.     (line   6)
-* Barry deFreese:                        Contributors.        (line  62)
-* base_time:                             ARM Conventions.     (line   6)
-* bash:                                  Subsetting Variables.
-                                                              (line 102)
-* Bash Shell:                            ncbo netCDF Binary Operator.
-                                                              (line 184)
-* Bash shell:                            ncbo netCDF Binary Operator.
-                                                              (line  51)
-* batch mode:                            Batch Mode.          (line   6)
-* benchmarks:                            OpenMP Threading.    (line  51)
-* Bessel function:                       GSL special functions.
-                                                              (line  35)
-* Bill Kocik:                            Contributors.        (line  35)
-* binary format:                         ncks netCDF Kitchen Sink.
-                                                              (line 112)
-* binary operations <1>:                 ncbo netCDF Binary Operator.
-                                                              (line   6)
-* binary operations:                     Memory for ncap2.    (line   6)
-* binary Operators:                      Expressions.         (line  92)
-* bounds:                                CF Conventions.      (line  60)
-* bounds convention:                     CF Conventions.      (line  60)
-* Bourne Shell <1>:                      ncbo netCDF Binary Operator.
-                                                              (line 184)
-* Bourne Shell:                          Stride.              (line  43)
-* Brian Mays:                            Contributors.        (line  29)
-* broadcasting variables <1>:            ncwa netCDF Weighted Averager.
-                                                              (line   6)
-* broadcasting variables <2>:            ncflint netCDF File Interpolator.
-                                                              (line 132)
-* broadcasting variables:                ncbo netCDF Binary Operator.
-                                                              (line  96)
-* BSD:                                   Command Line Options.
-                                                              (line  21)
-* buffering:                             Performance.         (line  21)
-* bugs, reporting:                       Help Requests and Bug Reports.
-                                                              (line   6)
-* byte():                                Methods and functions.
-                                                              (line 143)
-* C index convention:                    C and Fortran Index Conventions.
-                                                              (line   6)
-* C language <1>:                        ncks netCDF Kitchen Sink.
-                                                              (line 249)
-* C language <2>:                        ncatted netCDF Attribute Editor.
-                                                              (line 209)
-* C language <3>:                        Expressions.         (line   7)
-* C language <4>:                        Syntax of ncap2 statements.
-                                                              (line   8)
-* C language <5>:                        Automatic type conversion.
-                                                              (line  16)
-* C language <6>:                        Missing Values.      (line  54)
-* C language:                            Compatability.       (line  56)
-* C Shell <1>:                           ncbo netCDF Binary Operator.
-                                                              (line 184)
-* C Shell:                               Stride.              (line  43)
-* C++:                                   Compatability.       (line  27)
-* c++:                                   Compatability.       (line  22)
-* C89:                                   Compatability.       (line  35)
-* C99:                                   Compatability.       (line  39)
-* C_FORMAT:                              Performance.         (line  31)
-* cc:                                    Compatability.       (line  22)
-* CC:                                    Compatability.       (line  22)
-* CCM Processor <1>:                     ncrcat netCDF Record Concatenator.
-                                                              (line  51)
-* CCM Processor <2>:                     ncra netCDF Record Averager.
-                                                              (line  43)
-* CCM Processor:                         Specifying Input Files.
-                                                              (line   6)
-* CCSM <1>:                              CCSM Example.        (line   6)
-* CCSM:                                  Proposals for Institutional Funding.
-                                                              (line   6)
-* CCSM conventions:                      CF Conventions.      (line   6)
-* CEIL:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* ceiling function:                      Intrinsic mathematical methods.
-                                                              (line  10)
-* cell-based grids:                      Auxiliary Coordinates.
-                                                              (line  23)
-* CF conventions <1>:                    ncbo netCDF Binary Operator.
-                                                              (line 128)
-* CF conventions <2>:                    CF Conventions.      (line   6)
-* CF conventions <3>:                    UDUnits Support.     (line 101)
-* CF conventions <4>:                    Auxiliary Coordinates.
-                                                              (line   6)
-* CF conventions:                        Subsetting Coordinate Variables.
-                                                              (line  22)
-* change_miss():                         Missing values ncap2.
-                                                              (line  39)
-* char():                                Methods and functions.
-                                                              (line 146)
-* characters, special:                   ncatted netCDF Attribute Editor.
-                                                              (line 185)
-* Charlie Zender <1>:                    Contributors.        (line   7)
-* Charlie Zender:                        Foreword.            (line   6)
-* chocolate:                             Contributing.        (line  23)
-* chunking <1>:                          ncks netCDF Kitchen Sink.
-                                                              (line 222)
-* chunking <2>:                          Chunking.            (line   6)
-* chunking:                              netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  72)
-* chunking map:                          Chunking.            (line  21)
-* chunking policy:                       Chunking.            (line  21)
-* chunksize:                             Chunking.            (line  21)
-* CLASSIC files:                         Selecting Output File Format.
-                                                              (line   6)
-* client-server:                         OPeNDAP.             (line   6)
-* Climate and Forecast Metadata Convention: UDUnits Support.  (line 101)
-* climate model <1>:                     Normalization and Integration.
-                                                              (line  70)
-* climate model <2>:                     ncecat netCDF Ensemble Concatenator.
-                                                              (line  55)
-* climate model <3>:                     Specifying Input Files.
-                                                              (line  69)
-* climate model <4>:                     Concatenation.       (line  19)
-* climate model <5>:                     Climate Model Paradigm.
-                                                              (line   6)
-* climate model:                         Philosophy.          (line   6)
-* clipping operators:                    Expressions.         (line 167)
-* CMIP:                                  ncea netCDF Ensemble Averager.
-                                                              (line  30)
-* cnk_all:                               Chunking.            (line  36)
-* cnk_dmn:                               Chunking.            (line  74)
-* cnk_g2d:                               Chunking.            (line  36)
-* cnk_g3d:                               Chunking.            (line  36)
-* CNK_MAP:                               Chunking.            (line  68)
-* cnk_prd:                               Chunking.            (line  74)
-* cnk_rd1:                               Chunking.            (line  74)
-* cnk_scl:                               Chunking.            (line  74)
-* cnk_xpl:                               Chunking.            (line  36)
-* Comeau:                                Compatability.       (line   6)
-* command line options:                  Command Line Options.
-                                                              (line   6)
-* command line switches <1>:             Operator Reference Manual.
-                                                              (line   7)
-* command line switches <2>:             Specifying Output Files.
-                                                              (line   6)
-* command line switches <3>:             Common features.     (line   9)
-* command line switches:                 Philosophy.          (line  22)
-* comments:                              Syntax of ncap2 statements.
-                                                              (line  24)
-* como:                                  Compatability.       (line  22)
-* Compaq:                                Compatability.       (line   6)
-* comparator:                            Mask condition.      (line  14)
-* compatability:                         Compatability.       (line   6)
-* compilers:                             Specifying Output Files.
-                                                              (line  28)
-* complementary error function:          Intrinsic mathematical methods.
-                                                              (line  10)
-* compression <1>:                       ncks netCDF Kitchen Sink.
-                                                              (line 222)
-* compression:                           Deflation.           (line   6)
-* concatenation <1>:                     ncrcat netCDF Record Concatenator.
-                                                              (line   6)
-* concatenation <2>:                     ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 160)
-* concatenation <3>:                     ncecat netCDF Ensemble Concatenator.
-                                                              (line   6)
-* concatenation:                         Appending Variables. (line   6)
-* conditional Operator:                  Expressions.         (line 157)
-* config.guess:                          Help Requests and Bug Reports.
-                                                              (line  69)
-* configure.eg:                          Help Requests and Bug Reports.
-                                                              (line  69)
-* constraint expressions:                OPeNDAP.             (line 110)
-* contributing:                          Contributing.        (line   6)
-* contributors:                          Contributors.        (line   6)
-* coordinate limits:                     Hyperslabs.          (line   6)
-* coordinate variable <1>:               ncwa netCDF Weighted Averager.
-                                                              (line  71)
-* coordinate variable <2>:               ncbo netCDF Binary Operator.
-                                                              (line 125)
-* coordinate variable <3>:               CF Conventions.      (line  71)
-* coordinate variable <4>:               Operation Types.     (line  38)
-* coordinate variable:                   UDUnits Support.     (line  41)
-* coordinate variables:                  ncrename netCDF Renamer.
-                                                              (line  86)
-* coordinates <1>:                       CF Conventions.      (line  71)
-* coordinates:                           Auxiliary Coordinates.
-                                                              (line   6)
-* coordinates convention:                CF Conventions.      (line  71)
-* core dump <1>:                         ncks netCDF Kitchen Sink.
-                                                              (line 318)
-* core dump <2>:                         Large Datasets.      (line  27)
-* core dump:                             Help Requests and Bug Reports.
-                                                              (line   6)
-* COS:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* COSH:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* cosine function:                       Intrinsic mathematical methods.
-                                                              (line  10)
-* covariance:                            Examples ncap2.      (line  63)
-* Cray <1>:                              Large Datasets.      (line  23)
-* Cray:                                  Compatability.       (line   6)
-* csh:                                   Subsetting Variables.
-                                                              (line 102)
-* cxx:                                   Compatability.       (line  22)
-* Cygwin <1>:                            Symbolic Links.      (line  16)
-* Cygwin:                                Windows Operating System.
-                                                              (line  11)
-* Daniel Baumann:                        Contributors.        (line  62)
-* Daniel Wang:                           Contributors.        (line  23)
-* DAP:                                   OPeNDAP.             (line   6)
-* data access protocol:                  OPeNDAP.             (line   6)
-* data safety <1>:                       ncrename netCDF Renamer.
-                                                              (line  27)
-* data safety:                           Temporary Output Files.
-                                                              (line   6)
-* data, missing <1>:                     ncatted netCDF Attribute Editor.
-                                                              (line  28)
-* data, missing:                         Missing Values.      (line   6)
-* date:                                  CF Conventions.      (line   6)
-* datesec:                               CF Conventions.      (line   6)
-* DBG_LVL <1>:                           OpenMP Threading.    (line  40)
-* DBG_LVL <2>:                           Large Datasets.      (line  37)
-* DBG_LVL:                               Help Requests and Bug Reports.
-                                                              (line  61)
-* DDRA:                                  Proposals for Institutional Funding.
-                                                              (line   6)
-* Debian:                                netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  84)
-* DEBUG-LEVEL <1>:                       Large Datasets.      (line  37)
-* DEBUG-LEVEL:                           Help Requests and Bug Reports.
-                                                              (line  61)
-* debugging <1>:                         OpenMP Threading.    (line  40)
-* debugging <2>:                         Large Datasets.      (line  37)
-* debugging:                             Help Requests and Bug Reports.
-                                                              (line  46)
-* DEC:                                   Compatability.       (line   6)
-* defdim():                              Dimensions.          (line   6)
-* deflation <1>:                         ncks netCDF Kitchen Sink.
-                                                              (line 222)
-* deflation <2>:                         Deflation.           (line   6)
-* deflation:                             netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  68)
-* degenerate dimension <1>:              Normalization and Integration.
-                                                              (line  61)
-* degenerate dimension <2>:              ncwa netCDF Weighted Averager.
-                                                              (line  24)
-* degenerate dimension <3>:              ncra netCDF Record Averager.
-                                                              (line  17)
-* degenerate dimension <4>:              ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 292)
-* degenerate dimension <5>:              ncflint netCDF File Interpolator.
-                                                              (line  59)
-* degenerate dimension <6>:              ncecat netCDF Ensemble Concatenator.
-                                                              (line 106)
-* degenerate dimension <7>:              ncbo netCDF Binary Operator.
-                                                              (line 119)
-* degenerate dimension <8>:              Examples ncap2.      (line 114)
-* degenerate dimension:                  Operation Types.     (line  83)
-* delete_miss():                         Missing values ncap2.
-                                                              (line  49)
-* demotion:                              Type Conversion.     (line   8)
-* derived fields:                        ncap2 netCDF Arithmetic Processor.
-                                                              (line  30)
-* Digital:                               Compatability.       (line   6)
-* dimension limits:                      Hyperslabs.          (line   6)
-* dimension names:                       ncrename netCDF Renamer.
-                                                              (line   6)
-* dimensions, growing:                   Examples ncap2.      (line  33)
-* dimensionsncap:                        Dimensions.          (line   6)
-* disjoint files:                        Appending Variables. (line  29)
-* Distributed Data Reduction & Analysis: Proposals for Institutional Funding.
-                                                              (line   6)
-* Distributed Oceanographic Data System: OPeNDAP.             (line   6)
-* divide:                                ncbo netCDF Binary Operator.
-                                                              (line  22)
-* dividing data:                         ncbo netCDF Binary Operator.
-                                                              (line   6)
-* division:                              Intrinsic mathematical methods.
-                                                              (line   7)
-* dmn:                                   Chunking.            (line  74)
-* documentation:                         Availability.        (line  14)
-* DODS <1>:                              Retaining Retrieved Files.
-                                                              (line  35)
-* DODS:                                  OPeNDAP.             (line   6)
-* DODS_ROOT:                             OPeNDAP.             (line   6)
-* dot product:                           Normalization and Integration.
-                                                              (line   6)
-* double precision:                      Intrinsic mathematical methods.
-                                                              (line 141)
-* double():                              Methods and functions.
-                                                              (line 159)
-* dynamic linking:                       Libraries.           (line   6)
-* Ed Hill:                               Contributors.        (line  65)
-* eddy covariance:                       Examples ncap2.      (line  72)
-* editing attributes:                    ncatted netCDF Attribute Editor.
-                                                              (line   6)
-* egrep:                                 Subsetting Variables.
-                                                              (line  33)
-* Elliptic integrals:                    GSL special functions.
-                                                              (line  55)
-* ensemble <1>:                          ncea netCDF Ensemble Averager.
-                                                              (line  18)
-* ensemble:                              Concatenation.       (line  19)
-* ensemble average:                      ncea netCDF Ensemble Averager.
-                                                              (line   6)
-* ensemble concatenation:                ncecat netCDF Ensemble Concatenator.
-                                                              (line   6)
-* ERF:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* ERFC:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* Eric Blake:                            Contributors.        (line  77)
-* error function:                        Intrinsic mathematical methods.
-                                                              (line  10)
-* error tolerance:                       Temporary Output Files.
-                                                              (line   6)
-* exclusion <1>:                         ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* exclusion:                             Subsetting Variables.
-                                                              (line   6)
-* execution time <1>:                    ncrename netCDF Renamer.
-                                                              (line  42)
-* execution time <2>:                    Missing Values.      (line  64)
-* execution time <3>:                    Metadata Optimization.
-                                                              (line   6)
-* execution time <4>:                    Performance.         (line  22)
-* execution time <5>:                    Temporary Output Files.
-                                                              (line  19)
-* execution time:                        Libraries.           (line   7)
-* EXP:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* exponentiation:                        Intrinsic mathematical methods.
-                                                              (line   7)
-* exponentiation function:               Intrinsic mathematical methods.
-                                                              (line  10)
-* expressions:                           Expressions.         (line   3)
-* extended regular expressions <1>:      ncatted netCDF Attribute Editor.
-                                                              (line  49)
-* extended regular expressions <2>:      Examples ncap2.      (line  91)
-* extended regular expressions <3>:      Subsetting Variables.
-                                                              (line  33)
-* extended regular expressions:          Large Numbers of Files.
-                                                              (line  42)
-* extraction <1>:                        ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* extraction:                            Subsetting Variables.
-                                                              (line   6)
-* f90:                                   Windows Operating System.
-                                                              (line  11)
-* features, requesting:                  Help Requests and Bug Reports.
-                                                              (line   6)
-* file deletion:                         Retaining Retrieved Files.
-                                                              (line   6)
-* file removal:                          Retaining Retrieved Files.
-                                                              (line   6)
-* file retention:                        Retaining Retrieved Files.
-                                                              (line   6)
-* files, multiple:                       Specifying Input Files.
-                                                              (line  40)
-* files, numerous input:                 Large Numbers of Files.
-                                                              (line   6)
-* Filipe Fernandes:                      Contributors.        (line  71)
-* findgen-equivalent:                    Arrays and hyperslabs.
-                                                              (line   6)
-* fixed dimension:                       ncks netCDF Kitchen Sink.
-                                                              (line 128)
-* flags:                                 Examples ncap2.      (line  48)
-* float:                                 Intrinsic mathematical methods.
-                                                              (line 141)
-* float():                               Methods and functions.
-                                                              (line 155)
-* FLOOR:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* floor:                                 Automatic type conversion.
-                                                              (line  63)
-* floor function:                        Intrinsic mathematical methods.
-                                                              (line  10)
-* flt_byt:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* flt_sht:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* for():                                 Loops.               (line   6)
-* force append:                          Batch Mode.          (line   6)
-* force overwrite:                       Batch Mode.          (line   6)
-* foreword:                              Foreword.            (line   6)
-* Fortran <1>:                           ncrcat netCDF Record Concatenator.
-                                                              (line  59)
-* Fortran <2>:                           ncra netCDF Record Averager.
-                                                              (line  51)
-* Fortran:                               Automatic type conversion.
-                                                              (line  16)
-* Fortran index convention:              C and Fortran Index Conventions.
-                                                              (line   6)
-* FORTRAN_FORMAT:                        Performance.         (line  31)
-* Francesco Lovergine:                   Contributors.        (line  62)
-* FTP:                                   Retaining Retrieved Files.
-                                                              (line  24)
-* ftp <1>:                               Remote storage.      (line   6)
-* ftp:                                   Windows Operating System.
-                                                              (line  18)
-* funding:                               Proposals for Institutional Funding.
-                                                              (line   6)
-* g++:                                   Windows Operating System.
-                                                              (line  31)
-* g2d:                                   Chunking.            (line  36)
-* g3d:                                   Chunking.            (line  36)
-* GAMMA <1>:                             Intrinsic mathematical methods.
-                                                              (line  10)
-* GAMMA:                                 Compatability.       (line  72)
-* gamma function <1>:                    Intrinsic mathematical methods.
-                                                              (line  10)
-* gamma function:                        GSL special functions.
-                                                              (line  21)
-* Gaussian weights:                      Normalization and Integration.
-                                                              (line  70)
-* Gavin Burris:                          Contributors.        (line  80)
-* Gayathri Venkitachalam:                Contributors.        (line  50)
-* gcc <1>:                               Windows Operating System.
-                                                              (line  31)
-* gcc:                                   Compatability.       (line  22)
-* GCM:                                   Climate Model Paradigm.
-                                                              (line   6)
-* George Shapavalov:                     Contributors.        (line  68)
-* George Shapovalov:                     Contributors.        (line  32)
-* get_miss():                            Missing values ncap2.
-                                                              (line  43)
-* gethostname:                           Windows Operating System.
-                                                              (line  16)
-* getopt:                                Command Line Options.
-                                                              (line  21)
-* getopt.h:                              Command Line Options.
-                                                              (line  21)
-* getopt_long:                           Command Line Options.
-                                                              (line  21)
-* getuid:                                Windows Operating System.
-                                                              (line  16)
-* global attributes <1>:                 ncrename netCDF Renamer.
-                                                              (line  51)
-* global attributes <2>:                 ncks netCDF Kitchen Sink.
-                                                              (line  35)
-* global attributes <3>:                 ncatted netCDF Attribute Editor.
-                                                              (line  72)
-* global attributes <4>:                 ARM Conventions.     (line  30)
-* global attributes <5>:                 File List Attributes.
-                                                              (line   6)
-* global attributes <6>:                 History Attribute.   (line   6)
-* global attributes:                     Large Numbers of Files.
-                                                              (line  34)
-* globbing <1>:                          ncrcat netCDF Record Concatenator.
-                                                              (line  51)
-* globbing <2>:                          ncra netCDF Record Averager.
-                                                              (line  43)
-* globbing <3>:                          ncbo netCDF Binary Operator.
-                                                              (line  52)
-* globbing <4>:                          Examples ncap2.      (line  91)
-* globbing <5>:                          Subsetting Variables.
-                                                              (line 102)
-* globbing <6>:                          Specifying Input Files.
-                                                              (line   6)
-* globbing:                              Large Numbers of Files.
-                                                              (line  42)
-* GNU <1>:                               Subsetting Variables.
-                                                              (line  33)
-* GNU:                                   Command Line Options.
-                                                              (line   7)
-* gnu-win32:                             Windows Operating System.
-                                                              (line  11)
-* GNU/Linux:                             Large Datasets.      (line  27)
-* GNUmakefile:                           Windows Operating System.
-                                                              (line  11)
-* God:                                   UDUnits Support.     (line 139)
-* growing dimensions:                    Examples ncap2.      (line  33)
-* GSL <1>:                               GSL interpolation.   (line   6)
-* GSL <2>:                               GSL special functions.
-                                                              (line   6)
-* GSL:                                   Compatability.       (line  65)
-* GSL_SF_BESSEL_JN:                      GSL special functions.
-                                                              (line  35)
-* GSL_SF_GAMMA:                          GSL special functions.
-                                                              (line  21)
-* gsl_sf_legendre_Pl:                    GSL special functions.
-                                                              (line  91)
-* gw <1>:                                Normalization and Integration.
-                                                              (line  70)
-* gw:                                    CF Conventions.      (line   6)
-* Harry Mangalam:                        Contributors.        (line  26)
-* HDF <1>:                               Proposals for Institutional Funding.
-                                                              (line  13)
-* HDF <2>:                               Selecting Output File Format.
-                                                              (line   6)
-* HDF:                                   netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  16)
-* HDF5:                                  netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  38)
-* help:                                  Help Requests and Bug Reports.
-                                                              (line   6)
-* Henry Butowsky:                        Contributors.        (line  12)
-* hgh_byt:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* hgh_sht:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* Hierarchical Data Format:              netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  16)
-* history <1>:                           ncks netCDF Kitchen Sink.
-                                                              (line 267)
-* history <2>:                           ncatted netCDF Attribute Editor.
-                                                              (line  23)
-* history <3>:                           ARM Conventions.     (line  30)
-* history <4>:                           History Attribute.   (line   6)
-* history <5>:                           Remote storage.      (line   6)
-* history:                               Large Numbers of Files.
-                                                              (line  87)
-* HP:                                    Compatability.       (line   6)
-* HPSS:                                  Remote storage.      (line  43)
-* hsi:                                   Remote storage.      (line  43)
-* HTML:                                  Availability.        (line  14)
-* HTTP protocol:                         OPeNDAP.             (line   6)
-* hyai:                                  CF Conventions.      (line   6)
-* hyam:                                  CF Conventions.      (line   6)
-* hybi:                                  CF Conventions.      (line   6)
-* hybm:                                  CF Conventions.      (line   6)
-* hybrid coordinate system:              Left hand casting.   (line   6)
-* hyperbolic arccosine function:         Intrinsic mathematical methods.
-                                                              (line  10)
-* hyperbolic arcsine function:           Intrinsic mathematical methods.
-                                                              (line  10)
-* hyperbolic arctangent function:        Intrinsic mathematical methods.
-                                                              (line  10)
-* hyperbolic cosine function:            Intrinsic mathematical methods.
-                                                              (line  10)
-* hyperbolic sine function:              Intrinsic mathematical methods.
-                                                              (line  10)
-* hyperbolic tangent:                    Intrinsic mathematical methods.
-                                                              (line  10)
-* hyperslab <1>:                         ncwa netCDF Weighted Averager.
-                                                              (line  35)
-* hyperslab <2>:                         ncrcat netCDF Record Concatenator.
-                                                              (line  27)
-* hyperslab <3>:                         ncra netCDF Record Averager.
-                                                              (line  27)
-* hyperslab <4>:                         ncecat netCDF Ensemble Concatenator.
-                                                              (line  31)
-* hyperslab <5>:                         ncea netCDF Ensemble Averager.
-                                                              (line  24)
-* hyperslab <6>:                         Chunking.            (line  25)
-* hyperslab:                             Hyperslabs.          (line   6)
-* hyperslabs:                            Arrays and hyperslabs.
-                                                              (line  23)
-* I/O <1>:                               Multislabs.          (line  47)
-* I/O <2>:                               C and Fortran Index Conventions.
-                                                              (line  10)
-* I/O:                                   OPeNDAP.             (line  77)
-* I18N:                                  Internationalization.
-                                                              (line   6)
-* IBM:                                   Compatability.       (line   6)
-* icc:                                   Compatability.       (line  22)
-* ID Quoting:                            ID Quoting.          (line   6)
-* IDL:                                   Philosophy.          (line  15)
-* if():                                  if statement.        (line   6)
-* ilimit:                                Large Datasets.      (line  26)
-* include:                               Include files.       (line   6)
-* including files:                       Syntax of ncap2 statements.
-                                                              (line  28)
-* index convention:                      C and Fortran Index Conventions.
-                                                              (line   6)
-* indgen-equivalent:                     Arrays and hyperslabs.
-                                                              (line   6)
-* inexact conversion:                    Intrinsic mathematical methods.
-                                                              (line  96)
-* Info:                                  Availability.        (line  14)
-* input files <1>:                       Specifying Output Files.
-                                                              (line   6)
-* input files <2>:                       Specifying Input Files.
-                                                              (line   6)
-* input files:                           Large Numbers of Files.
-                                                              (line  60)
-* INPUT-PATH <1>:                        Remote storage.      (line  67)
-* INPUT-PATH:                            Specifying Input Files.
-                                                              (line   6)
-* installation <1>:                      Help Requests and Bug Reports.
-                                                              (line  69)
-* installation:                          Compatability.       (line   6)
-* int():                                 Methods and functions.
-                                                              (line 152)
-* int64():                               Methods and functions.
-                                                              (line 177)
-* integration:                           Normalization and Integration.
-                                                              (line   6)
-* Intel:                                 Compatability.       (line   6)
-* Internationalization:                  Internationalization.
-                                                              (line   6)
-* interpolation:                         ncflint netCDF File Interpolator.
-                                                              (line   6)
-* introduction:                          Introduction.        (line   6)
-* IPCC <1>:                              Proposals for Institutional Funding.
-                                                              (line   6)
-* IPCC <2>:                              ncecat netCDF Ensemble Concatenator.
-                                                              (line  33)
-* IPCC:                                  ncea netCDF Ensemble Averager.
-                                                              (line  30)
-* irregular grids:                       Irregular grids.     (line   6)
-* ISO:                                   Compatability.       (line  27)
-* Jim Edwards:                           Contributors.        (line  41)
-* Juliana Rew:                           Contributors.        (line  44)
-* Karen Schuchardt:                      Contributors.        (line  47)
-* Keith Lindsay:                         Contributors.        (line  56)
-* kitchen sink:                          ncks netCDF Kitchen Sink.
-                                                              (line   6)
-* Kyle Wilcox:                           Contributors.        (line  80)
-* L10N:                                  Internationalization.
-                                                              (line   7)
-* large datasets <1>:                    OpenMP Threading.    (line  18)
-* large datasets:                        Large Datasets.      (line   6)
-* Large File Support <1>:                Large File Support.  (line   6)
-* Large File Support:                    Large Datasets.      (line   6)
-* lat_bnds:                              CF Conventions.      (line   6)
-* LD_LIBRARY_PATH:                       Libraries.           (line   6)
-* left hand casting <1>:                 Left hand casting.   (line   6)
-* left hand casting:                     Memory for ncap2.    (line   6)
-* Legendre polynomial:                   GSL special functions.
-                                                              (line  91)
-* Lempel-Ziv deflation:                  Deflation.           (line   6)
-* Len Makin:                             Contributors.        (line  38)
-* lexer:                                 ncap2 netCDF Arithmetic Processor.
-                                                              (line   6)
-* LFS <1>:                               Large File Support.  (line   6)
-* LFS:                                   Large Datasets.      (line   6)
-* LHS:                                   Left hand casting.   (line   6)
-* libnco:                                Compatability.       (line  27)
-* libraries:                             Libraries.           (line   6)
-* linkers:                               Specifying Output Files.
-                                                              (line  28)
-* Linux:                                 Intrinsic mathematical methods.
-                                                              (line 143)
-* LN:                                    Intrinsic mathematical methods.
-                                                              (line  10)
-* ln -s <1>:                             ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  86)
-* ln -s:                                 ncbo netCDF Binary Operator.
-                                                              (line  66)
-* LOG:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* LOG10:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* logarithm, base 10:                    Intrinsic mathematical methods.
-                                                              (line  10)
-* logarithm, natural:                    Intrinsic mathematical methods.
-                                                              (line  10)
-* lon_bnds:                              CF Conventions.      (line   6)
-* long double:                           Intrinsic mathematical methods.
-                                                              (line 141)
-* long options <1>:                      ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 225)
-* long options:                          Command Line Options.
-                                                              (line  20)
-* longitude:                             Wrapped Coordinates. (line   6)
-* Luk Claes:                             Contributors.        (line  62)
-* Macintosh:                             Compatability.       (line   6)
-* Makefile <1>:                          OPeNDAP.             (line  19)
-* Makefile <2>:                          netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  31)
-* Makefile <3>:                          Windows Operating System.
-                                                              (line  11)
-* Makefile:                              Compatability.       (line  32)
-* malloc():                              Memory for ncap2.    (line  15)
-* manual type conversion:                Type Conversion.     (line   8)
-* map_dmn:                               Chunking.            (line  74)
-* map_prd:                               Chunking.            (line  74)
-* map_rd1:                               Chunking.            (line  74)
-* map_scl:                               Chunking.            (line  74)
-* Mark Flanner:                          Contributors.        (line  56)
-* Markus Liebig:                         Contributors.        (line  59)
-* Martin Dix:                            Contributors.        (line  56)
-* Martin Schmidt:                        Contributors.        (line  56)
-* mask <1>:                              Examples ncap2.      (line  56)
-* mask:                                  Irregular grids.     (line   6)
-* mask condition <1>:                    Normalization and Integration.
-                                                              (line 115)
-* mask condition:                        Mask condition.      (line   6)
-* masked average:                        ncwa netCDF Weighted Averager.
-                                                              (line   6)
-* Mass Store System:                     Remote storage.      (line   6)
-* Matej Vela:                            Contributors.        (line  62)
-* mathematical functions:                Intrinsic mathematical methods.
-                                                              (line  10)
-* max:                                   Operation Types.     (line   6)
-* max():                                 Methods and functions.
-                                                              (line  39)
-* maximum:                               Operation Types.     (line   6)
-* mean:                                  Operation Types.     (line   6)
-* memory available:                      Memory Requirements. (line   6)
-* memory leaks:                          Memory for ncap2.    (line   6)
-* memory requirements <1>:               Subsetting Variables.
-                                                              (line  22)
-* memory requirements:                   Memory Requirements. (line   6)
-* merging files <1>:                     ncks netCDF Kitchen Sink.
-                                                              (line  49)
-* merging files:                         Appending Variables. (line   6)
-* metadata:                              ncks netCDF Kitchen Sink.
-                                                              (line 219)
-* metadata optimization:                 Metadata Optimization.
-                                                              (line   6)
-* metadata, global <1>:                  ncks netCDF Kitchen Sink.
-                                                              (line 182)
-* metadata, global:                      ncecat netCDF Ensemble Concatenator.
-                                                              (line  44)
-* Michael Schulz:                        Contributors.        (line  56)
-* Microsoft <1>:                         Windows Operating System.
-                                                              (line   6)
-* Microsoft:                             Compatability.       (line   6)
-* Mike Folk:                             netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  16)
-* Mike Page:                             Contributors.        (line  56)
-* min:                                   Operation Types.     (line   6)
-* min():                                 Methods and functions.
-                                                              (line  42)
-* minimum:                               Operation Types.     (line   6)
-* missing values <1>:                    ncflint netCDF File Interpolator.
-                                                              (line  70)
-* missing values <2>:                    ncatted netCDF Attribute Editor.
-                                                              (line  28)
-* missing values:                        Missing Values.      (line   6)
-* missing values ncap2:                  Missing values ncap2.
-                                                              (line   6)
-* missing_value <1>:                     ncrename netCDF Renamer.
-                                                              (line  92)
-* missing_value <2>:                     Packed data.         (line   6)
-* missing_value:                         Missing Values.      (line   6)
-* MKS units:                             UDUnits Support.     (line  20)
-* modulus:                               Intrinsic mathematical methods.
-                                                              (line   7)
-* monotonic coordinates:                 Performance.         (line  26)
-* MSA:                                   Multislabs.          (line   6)
-* msk_*:                                 CF Conventions.      (line   6)
-* msrcp <1>:                             Retaining Retrieved Files.
-                                                              (line  24)
-* msrcp:                                 Remote storage.      (line  43)
-* msread:                                Remote storage.      (line  43)
-* MSS:                                   Remote storage.      (line   6)
-* multi-file operators <1>:              ncrcat netCDF Record Concatenator.
-                                                              (line  20)
-* multi-file operators <2>:              ncra netCDF Record Averager.
-                                                              (line  20)
-* multi-file operators <3>:              ncecat netCDF Ensemble Concatenator.
-                                                              (line  40)
-* multi-file operators <4>:              ncea netCDF Ensemble Averager.
-                                                              (line  39)
-* multi-file operators <5>:              Specifying Output Files.
-                                                              (line  18)
-* multi-file operators <6>:              Specifying Input Files.
-                                                              (line  40)
-* multi-file operators:                  Single and Multi-file Operators.
-                                                              (line   6)
-* multi-hyperslab:                       Multislabs.          (line   6)
-* multiplication <1>:                    ncbo netCDF Binary Operator.
-                                                              (line   6)
-* multiplication:                        Intrinsic mathematical methods.
-                                                              (line   7)
-* multiply:                              ncbo netCDF Binary Operator.
-                                                              (line  22)
-* multiplying data <1>:                  ncflint netCDF File Interpolator.
-                                                              (line   6)
-* multiplying data:                      ncbo netCDF Binary Operator.
-                                                              (line   6)
-* multislab:                             Multislabs.          (line   6)
-* naked characters:                      ncbo netCDF Binary Operator.
-                                                              (line  51)
-* NASA:                                  Proposals for Institutional Funding.
-                                                              (line  13)
-* NASA EOSDIS:                           Large Numbers of Files.
-                                                              (line   7)
-* National Virtual Ocean Data System:    OPeNDAP.             (line  87)
-* nc__enddef():                          Metadata Optimization.
-                                                              (line   6)
-* NC_BYTE <1>:                           ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* NC_BYTE <2>:                           ncbo netCDF Binary Operator.
-                                                              (line 125)
-* NC_BYTE:                               Hyperslabs.          (line  46)
-* NC_CHAR <1>:                           ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* NC_CHAR <2>:                           ncbo netCDF Binary Operator.
-                                                              (line 125)
-* NC_CHAR:                               Hyperslabs.          (line  46)
-* NC_DOUBLE <1>:                         ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* NC_DOUBLE:                             Intrinsic mathematical methods.
-                                                              (line 141)
-* NC_FLOAT:                              ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* NC_INT:                                ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* NC_INT64:                              netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  59)
-* NC_SHORT:                              ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* NC_UBYTE:                              netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  59)
-* NC_UINT:                               netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  59)
-* NC_UINT64:                             netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  59)
-* NC_USHORT:                             netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  59)
-* ncadd:                                 ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncap <1>:                              ncap2 netCDF Arithmetic Processor.
-                                                              (line   6)
-* ncap:                                  OpenMP Threading.    (line  18)
-* ncap2 <1>:                             ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  22)
-* ncap2 <2>:                             ncap2 netCDF Arithmetic Processor.
-                                                              (line   6)
-* ncap2 <3>:                             Manual type conversion.
-                                                              (line   6)
-* ncap2 <4>:                             Memory for ncap2.    (line   6)
-* ncap2:                                 Compatability.       (line  65)
-* NCAR:                                  Climate Model Paradigm.
-                                                              (line   6)
-* NCAR MSS:                              Remote storage.      (line   6)
-* ncatted <1>:                           ncatted netCDF Attribute Editor.
-                                                              (line   6)
-* ncatted <2>:                           History Attribute.   (line  24)
-* ncatted <3>:                           Missing Values.      (line  33)
-* ncatted:                               Subsetting Variables.
-                                                              (line  33)
-* ncbo <1>:                              ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncbo:                                  Missing Values.      (line  81)
-* ncdiff:                                ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncdivide:                              ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncdump <1>:                            ncks netCDF Kitchen Sink.
-                                                              (line 219)
-* ncdump:                                Selecting Output File Format.
-                                                              (line 104)
-* ncea <1>:                              ncea netCDF Ensemble Averager.
-                                                              (line   6)
-* ncea <2>:                              Missing Values.      (line  81)
-* ncea:                                  Averaging.           (line   6)
-* ncecat <1>:                            ncecat netCDF Ensemble Concatenator.
-                                                              (line   6)
-* ncecat:                                Concatenation.       (line   6)
-* ncextr:                                ncks netCDF Kitchen Sink.
-                                                              (line  17)
-* ncflint <1>:                           ncflint netCDF File Interpolator.
-                                                              (line   6)
-* ncflint <2>:                           Missing Values.      (line  81)
-* ncflint:                               Interpolating.       (line   6)
-* ncks <1>:                              ncks netCDF Kitchen Sink.
-                                                              (line   6)
-* ncks <2>:                              Examples ncap2.      (line 114)
-* ncks <3>:                              Deflation.           (line  37)
-* ncks:                                  Selecting Output File Format.
-                                                              (line  88)
-* NCL:                                   Philosophy.          (line  15)
-* ncmult:                                ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncmultiply:                            ncbo netCDF Binary Operator.
-                                                              (line   6)
-* NCO availability:                      Availability.        (line   6)
-* NCO homepage:                          Availability.        (line  30)
-* nco.config.log.${GNU_TRP}.foo:         Help Requests and Bug Reports.
-                                                              (line  69)
-* nco.configure.${GNU_TRP}.foo:          Help Requests and Bug Reports.
-                                                              (line  69)
-* nco.make.${GNU_TRP}.foo:               Help Requests and Bug Reports.
-                                                              (line  69)
-* nco_input_file_list <1>:               File List Attributes.
-                                                              (line   6)
-* nco_input_file_list:                   Large Numbers of Files.
-                                                              (line  34)
-* nco_input_file_number <1>:             File List Attributes.
-                                                              (line   6)
-* nco_input_file_number:                 Large Numbers of Files.
-                                                              (line  34)
-* nco_openmp_thread_number:              OpenMP Threading.    (line   6)
-* ncpack:                                ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* ncpdq <1>:                             ncrcat netCDF Record Concatenator.
-                                                              (line  32)
-* ncpdq <2>:                             ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* ncpdq <3>:                             ncecat netCDF Ensemble Concatenator.
-                                                              (line  65)
-* ncpdq <4>:                             Chunking.            (line  25)
-* ncpdq <5>:                             OpenMP Threading.    (line  18)
-* ncpdq:                                 Concatenation.       (line  39)
-* ncra <1>:                              ncra netCDF Record Averager.
-                                                              (line   6)
-* ncra <2>:                              Examples ncap2.      (line 114)
-* ncra <3>:                              Missing Values.      (line  81)
-* ncra:                                  Averaging.           (line   6)
-* ncrcat <1>:                            ncrcat netCDF Record Concatenator.
-                                                              (line   6)
-* ncrcat <2>:                            OpenMP Threading.    (line  18)
-* ncrcat:                                Concatenation.       (line   6)
-* ncrename <1>:                          ncrename netCDF Renamer.
-                                                              (line   6)
-* ncrename:                              Missing Values.      (line  33)
-* NCSA:                                  netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  38)
-* ncsub:                                 ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncsubtract:                            ncbo netCDF Binary Operator.
-                                                              (line   6)
-* ncunpack:                              ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* ncwa <1>:                              ncwa netCDF Weighted Averager.
-                                                              (line   6)
-* ncwa <2>:                              Examples ncap2.      (line 114)
-* ncwa <3>:                              Missing Values.      (line  81)
-* ncwa <4>:                              OpenMP Threading.    (line  18)
-* ncwa:                                  Averaging.           (line   6)
-* ndims():                               Methods and functions.
-                                                              (line  84)
-* NEARBYINT:                             Intrinsic mathematical methods.
-                                                              (line  10)
-* nearest integer function (exact):      Intrinsic mathematical methods.
-                                                              (line  10)
-* nearest integer function (inexact):    Intrinsic mathematical methods.
-                                                              (line  10)
-* NEC:                                   Compatability.       (line   6)
-* nesting:                               Syntax of ncap2 statements.
-                                                              (line  28)
-* netCDF:                                Availability.        (line  34)
-* netCDF2 <1>:                           Selecting Output File Format.
-                                                              (line   6)
-* netCDF2:                               netCDF2/3/4 and HDF4/5 Support.
-                                                              (line   6)
-* NETCDF2_ONLY:                          netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  23)
-* netCDF3 <1>:                           Selecting Output File Format.
-                                                              (line   6)
-* netCDF3:                               netCDF2/3/4 and HDF4/5 Support.
-                                                              (line   6)
-* netCDF3 classic file format:           Selecting Output File Format.
-                                                              (line  88)
-* netCDF4 <1>:                           Selecting Output File Format.
-                                                              (line   6)
-* netCDF4:                               netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  38)
-* netCDF4 classic file format:           Selecting Output File Format.
-                                                              (line  88)
-* netCDF4 file format:                   Selecting Output File Format.
-                                                              (line  88)
-* NETCDF4 files:                         Selecting Output File Format.
-                                                              (line   6)
-* NETCDF4_CLASSIC files:                 Selecting Output File Format.
-                                                              (line   6)
-* NETCDF4_ROOT:                          netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  89)
-* NINTAP <1>:                            ncrcat netCDF Record Concatenator.
-                                                              (line  51)
-* NINTAP <2>:                            ncra netCDF Record Averager.
-                                                              (line  43)
-* NINTAP:                                Specifying Input Files.
-                                                              (line   6)
-* NO_NETCDF_2:                           netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  14)
-* non-coordinate grid properties:        CF Conventions.      (line  36)
-* non-rectangular grids:                 Irregular grids.     (line   6)
-* non-standard grids:                    Irregular grids.     (line   6)
-* normalization:                         Normalization and Integration.
-                                                              (line   6)
-* NRA:                                   Proposals for Institutional Funding.
-                                                              (line  13)
-* nrnet:                                 Remote storage.      (line  43)
-* NSF:                                   Proposals for Institutional Funding.
-                                                              (line   6)
-* NT (Microsoft operating system):       Windows Operating System.
-                                                              (line   6)
-* NUL <1>:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 130)
-* NUL:                                   ncatted netCDF Attribute Editor.
-                                                              (line 209)
-* NUL-termination:                       ncatted netCDF Attribute Editor.
-                                                              (line 209)
-* null operation:                        ncflint netCDF File Interpolator.
-                                                              (line 124)
-* number literals ncap:                  Number literals.     (line   6)
-* numerator:                             Normalization and Integration.
-                                                              (line   6)
-* NVODS:                                 OPeNDAP.             (line  87)
-* nxt_lsr:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  98)
-* oceanography:                          OPeNDAP.             (line   6)
-* octal dump:                            Selecting Output File Format.
-                                                              (line 116)
-* od:                                    Selecting Output File Format.
-                                                              (line 116)
-* OMP_NUM_THREADS:                       OpenMP Threading.    (line  18)
-* on-line documentation:                 Availability.        (line  14)
-* open source <1>:                       OPeNDAP.             (line  87)
-* open source:                           Foreword.            (line  24)
-* Open-source Project for a Network Data Access Protocol: OPeNDAP.
-                                                              (line   6)
-* OPeNDAP.:                              OPeNDAP.             (line   6)
-* OpenMP <1>:                            OpenMP Threading.    (line   6)
-* OpenMP <2>:                            Single and Multi-file Operators.
-                                                              (line  48)
-* OpenMP:                                Memory Requirements. (line  13)
-* operation types <1>:                   ncwa netCDF Weighted Averager.
-                                                              (line  80)
-* operation types <2>:                   ncra netCDF Record Averager.
-                                                              (line  36)
-* operation types <3>:                   ncea netCDF Ensemble Averager.
-                                                              (line  33)
-* operation types:                       Operation Types.     (line   6)
-* operator speed <1>:                    ncrename netCDF Renamer.
-                                                              (line  42)
-* operator speed <2>:                    Missing Values.      (line  64)
-* operator speed <3>:                    Metadata Optimization.
-                                                              (line   6)
-* operator speed <4>:                    Performance.         (line  22)
-* operator speed <5>:                    Temporary Output Files.
-                                                              (line  19)
-* operator speed:                        Libraries.           (line   7)
-* operators:                             Summary.             (line   6)
-* OptIPuter:                             Proposals for Institutional Funding.
-                                                              (line   6)
-* Orion Powlawski:                       Contributors.        (line  65)
-* ORO <1>:                               Normalization and Integration.
-                                                              (line  82)
-* ORO:                                   CF Conventions.      (line   6)
-* OS:                                    Compatability.       (line   6)
-* output file <1>:                       Specifying Output Files.
-                                                              (line   6)
-* output file:                           Large Numbers of Files.
-                                                              (line  60)
-* OUTPUT-PATH:                           Remote storage.      (line  67)
-* overview:                              Performance.         (line   6)
-* overwriting files <1>:                 Batch Mode.          (line   6)
-* overwriting files:                     Temporary Output Files.
-                                                              (line  25)
-* pack():                                Methods and functions.
-                                                              (line  61)
-* pack(x):                               Packed data.         (line   6)
-* pack_byte():                           Methods and functions.
-                                                              (line  65)
-* pack_int():                            Methods and functions.
-                                                              (line  71)
-* pack_short():                          Methods and functions.
-                                                              (line  68)
-* packing <1>:                           ncrcat netCDF Record Concatenator.
-                                                              (line  32)
-* packing <2>:                           ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* packing <3>:                           ncecat netCDF Ensemble Concatenator.
-                                                              (line  65)
-* packing <4>:                           Packed data.         (line   6)
-* packing <5>:                           Chunking.            (line  25)
-* packing:                               OPeNDAP.             (line  69)
-* packing map:                           ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  92)
-* packing policy:                        ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  22)
-* papers:                                Performance.         (line   6)
-* parallelism <1>:                       Proposals for Institutional Funding.
-                                                              (line   8)
-* parallelism:                           OpenMP Threading.    (line   6)
-* parser:                                ncap2 netCDF Arithmetic Processor.
-                                                              (line   6)
-* pasting variables:                     Appending Variables. (line   6)
-* pathCC:                                Compatability.       (line  22)
-* pathcc:                                Compatability.       (line  22)
-* PathScale:                             Compatability.       (line   6)
-* Patrice Dumas:                         Contributors.        (line  65)
-* Patrick Kursawe:                       Contributors.        (line  68)
-* pattern matching <1>:                  ncatted netCDF Attribute Editor.
-                                                              (line  49)
-* pattern matching <2>:                  Subsetting Variables.
-                                                              (line  33)
-* pattern matching:                      Large Numbers of Files.
-                                                              (line  42)
-* PayPal:                                Contributing.        (line  10)
-* PCK_MAP:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  92)
-* PCK_PLC:                               ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  29)
-* peak memory usage:                     Memory Requirements. (line   6)
-* performance <1>:                       ncrename netCDF Renamer.
-                                                              (line  42)
-* performance <2>:                       Missing Values.      (line  64)
-* performance <3>:                       Metadata Optimization.
-                                                              (line   6)
-* performance <4>:                       Performance.         (line  12)
-* performance <5>:                       Temporary Output Files.
-                                                              (line  19)
-* performance:                           Libraries.           (line   7)
-* Perl <1>:                              ncatted netCDF Attribute Editor.
-                                                              (line 183)
-* Perl <2>:                              Large Numbers of Files.
-                                                              (line  74)
-* Perl:                                  Philosophy.          (line  15)
-* permute dimensions:                    ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* permute():                             Arrays and hyperslabs.
-                                                              (line 115)
-* pgCC:                                  Compatability.       (line  22)
-* pgcc:                                  Compatability.       (line  22)
-* PGI:                                   Compatability.       (line   6)
-* philosophy:                            Philosophy.          (line   6)
-* pipes:                                 Large Numbers of Files.
-                                                              (line  55)
-* plc_all:                               Chunking.            (line  36)
-* plc_g2d:                               Chunking.            (line  36)
-* plc_g3d:                               Chunking.            (line  36)
-* plc_xpl:                               Chunking.            (line  36)
-* portability:                           Compatability.       (line   6)
-* positional arguments:                  Specifying Output Files.
-                                                              (line   6)
-* POSIX <1>:                             Subsetting Variables.
-                                                              (line  45)
-* POSIX:                                 Command Line Options.
-                                                              (line   7)
-* POW:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* power:                                 Intrinsic mathematical methods.
-                                                              (line   7)
-* power function:                        Intrinsic mathematical methods.
-                                                              (line  10)
-* prd:                                   Chunking.            (line  74)
-* precision:                             Intrinsic mathematical methods.
-                                                              (line 141)
-* preprocessor tokens:                   Windows Operating System.
-                                                              (line  11)
-* presentations:                         Availability.        (line  24)
-* print()ncap:                           print statement.     (line   6)
-* printf:                                Compatability.       (line  35)
-* printf() <1>:                          ncks netCDF Kitchen Sink.
-                                                              (line 249)
-* printf():                              ncatted netCDF Attribute Editor.
-                                                              (line 185)
-* printing files contents:               ncks netCDF Kitchen Sink.
-                                                              (line   6)
-* printing variables:                    ncks netCDF Kitchen Sink.
-                                                              (line   6)
-* Processor <1>:                         ncrcat netCDF Record Concatenator.
-                                                              (line  51)
-* Processor:                             ncra netCDF Record Averager.
-                                                              (line  43)
-* Processor, CCM:                        Specifying Input Files.
-                                                              (line   6)
-* promotion <1>:                         Intrinsic mathematical methods.
-                                                              (line 100)
-* promotion:                             Type Conversion.     (line   8)
-* proposals:                             Proposals for Institutional Funding.
-                                                              (line   6)
-* pseudonym:                             Symbolic Links.      (line  16)
-* publications:                          Availability.        (line  24)
-* QLogic:                                Compatability.       (line   6)
-* quadruple precision:                   Intrinsic mathematical methods.
-                                                              (line 141)
-* quiet:                                 ncks netCDF Kitchen Sink.
-                                                              (line 241)
-* quotes <1>:                            ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 225)
-* quotes <2>:                            ncbo netCDF Binary Operator.
-                                                              (line  52)
-* quotes <3>:                            Examples ncap2.      (line  91)
-* quotes:                                Subsetting Variables.
-                                                              (line 102)
-* RAM:                                   Memory Requirements. (line   6)
-* ram_delete():                          RAM variables.       (line  14)
-* ram_write():                           RAM variables.       (line  14)
-* rank <1>:                              ncwa netCDF Weighted Averager.
-                                                              (line  44)
-* rank:                                  ncbo netCDF Binary Operator.
-                                                              (line 106)
-* rcp <1>:                               Remote storage.      (line   6)
-* rcp:                                   Windows Operating System.
-                                                              (line  18)
-* RCS:                                   Operator Version.    (line   6)
-* rd1:                                   Chunking.            (line  74)
-* re-dimension:                          ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* re-order dimensions:                   ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* record average:                        ncra netCDF Record Averager.
-                                                              (line   6)
-* record concatenation:                  ncrcat netCDF Record Concatenator.
-                                                              (line   6)
-* record dimension <1>:                  ncrcat netCDF Record Concatenator.
-                                                              (line  17)
-* record dimension <2>:                  ncra netCDF Record Averager.
-                                                              (line   6)
-* record dimension <3>:                  ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 158)
-* record dimension <4>:                  ncks netCDF Kitchen Sink.
-                                                              (line 128)
-* record dimension <5>:                  ncecat netCDF Ensemble Concatenator.
-                                                              (line  26)
-* record dimension <6>:                  ncea netCDF Ensemble Averager.
-                                                              (line  24)
-* record dimension <7>:                  Chunking.            (line 132)
-* record dimension <8>:                  C and Fortran Index Conventions.
-                                                              (line  22)
-* record dimension:                      Appending Variables. (line   9)
-* record variable <1>:                   ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 162)
-* record variable:                       C and Fortran Index Conventions.
-                                                              (line  17)
-* rectangular grids:                     Irregular grids.     (line   6)
-* regex:                                 Subsetting Variables.
-                                                              (line  45)
-* regressions archive:                   Help Requests and Bug Reports.
-                                                              (line  76)
-* regular expressions <1>:               ncatted netCDF Attribute Editor.
-                                                              (line  49)
-* regular expressions <2>:               Examples ncap2.      (line  91)
-* regular expressions <3>:               Subsetting Variables.
-                                                              (line  33)
-* regular expressions <4>:               Specifying Input Files.
-                                                              (line   6)
-* regular expressions:                   Large Numbers of Files.
-                                                              (line  42)
-* Remik Ziemlinski:                      Contributors.        (line  56)
-* remote files <1>:                      Remote storage.      (line   6)
-* remote files:                          Windows Operating System.
-                                                              (line  18)
-* renaming attributes:                   ncrename netCDF Renamer.
-                                                              (line   6)
-* renaming dimensions:                   ncrename netCDF Renamer.
-                                                              (line   6)
-* renaming variables:                    ncrename netCDF Renamer.
-                                                              (line   6)
-* reporting bugs:                        Help Requests and Bug Reports.
-                                                              (line   6)
-* reshape variables:                     ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* restrict:                              Compatability.       (line  58)
-* reverse data:                          ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 255)
-* reverse dimensions:                    ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* reverse():                             Arrays and hyperslabs.
-                                                              (line 108)
-* RINT:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* rms:                                   Operation Types.     (line   6)
-* rmssdn:                                Operation Types.     (line   6)
-* rmssdn():                              Methods and functions.
-                                                              (line  48)
-* root-mean-square:                      Operation Types.     (line   6)
-* Rorik Peterson:                        Contributors.        (line  19)
-* ROUND:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* rounding functions:                    Intrinsic mathematical methods.
-                                                              (line  10)
-* RPM:                                   netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  84)
-* running average:                       ncra netCDF Record Averager.
-                                                              (line   6)
-* safeguards <1>:                        ncrename netCDF Renamer.
-                                                              (line  27)
-* safeguards:                            Temporary Output Files.
-                                                              (line   6)
-* scale_factor <1>:                      ncrcat netCDF Record Concatenator.
-                                                              (line  32)
-* scale_factor <2>:                      ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  22)
-* scale_factor <3>:                      ncecat netCDF Ensemble Concatenator.
-                                                              (line  65)
-* scale_factor:                          Packed data.         (line   6)
-* SCALE_FORMAT:                          Performance.         (line  31)
-* scaling:                               Performance.         (line  12)
-* Scientific Data Operators:             Proposals for Institutional Funding.
-                                                              (line   6)
-* scl:                                   Chunking.            (line  74)
-* Scott Capps:                           Contributors.        (line  53)
-* scp <1>:                               Remote storage.      (line   6)
-* scp:                                   Windows Operating System.
-                                                              (line  18)
-* script file:                           ncap2 netCDF Arithmetic Processor.
-                                                              (line  23)
-* SDO:                                   Proposals for Institutional Funding.
-                                                              (line   6)
-* SEIII:                                 Proposals for Institutional Funding.
-                                                              (line   6)
-* semi-colon:                            Syntax of ncap2 statements.
-                                                              (line  21)
-* server <1>:                            Retaining Retrieved Files.
-                                                              (line  27)
-* server <2>:                            OPeNDAP.             (line   6)
-* server:                                Large Datasets.      (line  23)
-* Server-Side Distributed Data Reduction & Analysis: Proposals for Institutional Funding.
-                                                              (line   6)
-* server-side processing <1>:            Proposals for Institutional Funding.
-                                                              (line   6)
-* server-side processing:                OPeNDAP.             (line 110)
-* set_miss():                            Missing values ncap2.
-                                                              (line  34)
-* sftp <1>:                              Remote storage.      (line   6)
-* sftp:                                  Windows Operating System.
-                                                              (line  18)
-* SGI:                                   Compatability.       (line   6)
-* shared memory machines:                Memory Requirements. (line  13)
-* shared memory parallelism:             OpenMP Threading.    (line   6)
-* shell <1>:                             ncbo netCDF Binary Operator.
-                                                              (line  52)
-* shell <2>:                             Examples ncap2.      (line  91)
-* shell <3>:                             UDUnits Support.     (line  76)
-* shell <4>:                             Subsetting Variables.
-                                                              (line 102)
-* shell:                                 Large Numbers of Files.
-                                                              (line  42)
-* SIGNEDNESS:                            Performance.         (line  31)
-* SIN:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* sine function:                         Intrinsic mathematical methods.
-                                                              (line  10)
-* single precision:                      Intrinsic mathematical methods.
-                                                              (line 141)
-* SINH:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* size():                                Methods and functions.
-                                                              (line  81)
-* SMP:                                   OpenMP Threading.    (line   6)
-* sort alphabetically:                   ncks netCDF Kitchen Sink.
-                                                              (line 102)
-* source code:                           Availability.        (line   6)
-* special characters:                    ncatted netCDF Attribute Editor.
-                                                              (line 200)
-* speed <1>:                             ncrename netCDF Renamer.
-                                                              (line  42)
-* speed <2>:                             Missing Values.      (line  64)
-* speed <3>:                             Metadata Optimization.
-                                                              (line   6)
-* speed <4>:                             Performance.         (line  22)
-* speed <5>:                             Large Datasets.      (line  32)
-* speed <6>:                             Temporary Output Files.
-                                                              (line  19)
-* speed:                                 Libraries.           (line   7)
-* sqravg:                                Operation Types.     (line   6)
-* sqravg():                              Methods and functions.
-                                                              (line  33)
-* SQRT:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* sqrt:                                  Operation Types.     (line   6)
-* square root function:                  Intrinsic mathematical methods.
-                                                              (line  10)
-* SSDDRA:                                Proposals for Institutional Funding.
-                                                              (line   6)
-* SSH <1>:                               Retaining Retrieved Files.
-                                                              (line  24)
-* SSH:                                   Windows Operating System.
-                                                              (line  18)
-* sshort():                              Methods and functions.
-                                                              (line 149)
-* standard deviation:                    Operation Types.     (line   6)
-* standard input <1>:                    ncrcat netCDF Record Concatenator.
-                                                              (line  20)
-* standard input <2>:                    ncra netCDF Record Averager.
-                                                              (line  20)
-* standard input <3>:                    ncecat netCDF Ensemble Concatenator.
-                                                              (line  40)
-* standard input <4>:                    ncea netCDF Ensemble Averager.
-                                                              (line  39)
-* standard input:                        Large Numbers of Files.
-                                                              (line  25)
-* standard_name:                         Auxiliary Coordinates.
-                                                              (line   6)
-* statement:                             Syntax of ncap2 statements.
-                                                              (line   6)
-* static linking:                        Libraries.           (line   6)
-* stdin <1>:                             ncrcat netCDF Record Concatenator.
-                                                              (line  20)
-* stdin <2>:                             ncra netCDF Record Averager.
-                                                              (line  20)
-* stdin <3>:                             ncecat netCDF Ensemble Concatenator.
-                                                              (line  40)
-* stdin <4>:                             ncea netCDF Ensemble Averager.
-                                                              (line  39)
-* stdin <5>:                             File List Attributes.
-                                                              (line   6)
-* stdin:                                 Large Numbers of Files.
-                                                              (line  25)
-* stride <1>:                            ncrcat netCDF Record Concatenator.
-                                                              (line  28)
-* stride <2>:                            ncra netCDF Record Averager.
-                                                              (line  28)
-* stride <3>:                            ncks netCDF Kitchen Sink.
-                                                              (line 124)
-* stride <4>:                            UDUnits Support.     (line  67)
-* stride <5>:                            Multislabs.          (line  36)
-* stride <6>:                            Stride.              (line   6)
-* stride:                                Hyperslabs.          (line  35)
-* strings:                               ncatted netCDF Attribute Editor.
-                                                              (line 209)
-* stub:                                  Remote storage.      (line  76)
-* subsetting <1>:                        ncks netCDF Kitchen Sink.
-                                                              (line 275)
-* subsetting <2>:                        CF Conventions.      (line  71)
-* subsetting <3>:                        Subsetting Coordinate Variables.
-                                                              (line   6)
-* subsetting:                            Subsetting Variables.
-                                                              (line   6)
-* subtract:                              ncbo netCDF Binary Operator.
-                                                              (line  22)
-* subtracting data:                      ncbo netCDF Binary Operator.
-                                                              (line   6)
-* subtraction <1>:                       ncbo netCDF Binary Operator.
-                                                              (line   6)
-* subtraction:                           Intrinsic mathematical methods.
-                                                              (line   7)
-* summary:                               Summary.             (line   6)
-* Sun:                                   Compatability.       (line   6)
-* swap space <1>:                        Memory Requirements. (line   6)
-* swap space:                            Large Datasets.      (line  11)
-* switches:                              Command Line Options.
-                                                              (line   7)
-* symbolic links <1>:                    ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line  86)
-* symbolic links <2>:                    ncbo netCDF Binary Operator.
-                                                              (line  66)
-* symbolic links <3>:                    Large Numbers of Files.
-                                                              (line  68)
-* symbolic links <4>:                    Averaging vs. Concatenating.
-                                                              (line   6)
-* symbolic links:                        Symbolic Links.      (line   6)
-* synchronous file access:               Remote storage.      (line   6)
-* synonym:                               Symbolic Links.      (line  16)
-* syntax:                                Syntax of ncap2 statements.
-                                                              (line   6)
-* Takeshi Enomoto:                       Contributors.        (line  74)
-* TAN:                                   Intrinsic mathematical methods.
-                                                              (line  10)
-* TANH:                                  Intrinsic mathematical methods.
-                                                              (line  10)
-* temporary output files <1>:            ncrename netCDF Renamer.
-                                                              (line  27)
-* temporary output files:                Temporary Output Files.
-                                                              (line   6)
-* TeXinfo:                               Availability.        (line  14)
-* THR_NBR:                               OpenMP Threading.    (line  18)
-* threads <1>:                           OpenMP Threading.    (line   6)
-* threads <2>:                           Single and Multi-file Operators.
-                                                              (line  48)
-* threads:                               Memory Requirements. (line  13)
-* time <1>:                              ARM Conventions.     (line   6)
-* time:                                  UDUnits Support.     (line  59)
-* time-averaging:                        Examples ncap2.      (line 114)
-* time_offset:                           ARM Conventions.     (line   6)
-* timestamp:                             History Attribute.   (line   6)
-* total:                                 Operation Types.     (line   6)
-* transpose <1>:                         ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line 172)
-* transpose:                             C and Fortran Index Conventions.
-                                                              (line  15)
-* TRUNC:                                 Intrinsic mathematical methods.
-                                                              (line  10)
-* truncation function:                   Intrinsic mathematical methods.
-                                                              (line  10)
-* truth condition <1>:                   Normalization and Integration.
-                                                              (line 115)
-* truth condition:                       Mask condition.      (line   6)
-* ttl:                                   Operation Types.     (line   6)
-* ttl():                                 Methods and functions.
-                                                              (line  51)
-* type conversion:                       Type Conversion.     (line   6)
-* type():                                Methods and functions.
-                                                              (line  87)
-* ubyte():                               Methods and functions.
-                                                              (line 168)
-* UDUnits <1>:                           CF Conventions.      (line   6)
-* UDUnits <2>:                           UDUnits Support.     (line   6)
-* UDUnits:                               Compatability.       (line  14)
-* uint():                                Methods and functions.
-                                                              (line 174)
-* ulimit:                                Large Datasets.      (line  27)
-* unary operations:                      Memory for ncap2.    (line   6)
-* UNICOS:                                Large Datasets.      (line  23)
-* Unidata <1>:                           UDUnits Support.     (line   6)
-* Unidata <2>:                           netCDF2/3/4 and HDF4/5 Support.
-                                                              (line  38)
-* Unidata:                               Compatability.       (line  14)
-* union of two files:                    Appending Variables. (line  29)
-* unit64():                              Methods and functions.
-                                                              (line 180)
-* units <1>:                             ncflint netCDF File Interpolator.
-                                                              (line 139)
-* units <2>:                             ncatted netCDF Attribute Editor.
-                                                              (line 243)
-* units:                                 UDUnits Support.     (line   6)
-* UNIX <1>:                              Specifying Input Files.
-                                                              (line  12)
-* UNIX <2>:                              Command Line Options.
-                                                              (line   7)
-* UNIX <3>:                              Large Numbers of Files.
-                                                              (line  42)
-* UNIX <4>:                              Windows Operating System.
-                                                              (line  16)
-* UNIX:                                  Compatability.       (line  14)
-* unlimited dimension:                   ncecat netCDF Ensemble Concatenator.
-                                                              (line  26)
-* unpack():                              Methods and functions.
-                                                              (line  74)
-* unpack(x):                             Packed data.         (line   6)
-* unpacking <1>:                         ncrcat netCDF Record Concatenator.
-                                                              (line  32)
-* unpacking <2>:                         ncpdq netCDF Permute Dimensions Quickly.
-                                                              (line   6)
-* unpacking <3>:                         ncecat netCDF Ensemble Concatenator.
-                                                              (line  65)
-* unpacking <4>:                         Packed data.         (line   6)
-* unpacking:                             OPeNDAP.             (line  69)
-* URL:                                   Remote storage.      (line   6)
-* ushort():                              Methods and functions.
-                                                              (line 171)
-* value list:                            Attributes.          (line  18)
-* variable names:                        ncrename netCDF Renamer.
-                                                              (line   6)
-* variance:                              Operation Types.     (line   6)
-* version:                               Operator Version.    (line   6)
-* Vista (Microsoft operating system):    Windows Operating System.
-                                                              (line   6)
-* weighted average:                      ncwa netCDF Weighted Averager.
-                                                              (line   6)
-* wget:                                  Remote storage.      (line   6)
-* where():                               Where statement.     (line   6)
-* while():                               Loops.               (line   6)
-* whitespace:                            UDUnits Support.     (line  67)
-* wildcards <1>:                         ncatted netCDF Attribute Editor.
-                                                              (line  49)
-* wildcards <2>:                         Subsetting Variables.
-                                                              (line  33)
-* wildcards:                             Specifying Input Files.
-                                                              (line   6)
-* WIN32:                                 Windows Operating System.
-                                                              (line  11)
-* Windows <1>:                           Windows Operating System.
-                                                              (line   6)
-* Windows:                               Compatability.       (line   6)
-* wrapped coordinates <1>:               ncks netCDF Kitchen Sink.
-                                                              (line 348)
-* wrapped coordinates <2>:               Irregular grids.     (line  33)
-* wrapped coordinates <3>:               Wrapped Coordinates. (line   6)
-* wrapped coordinates:                   Hyperslabs.          (line  51)
-* wrapped filenames:                     Specifying Input Files.
-                                                              (line  69)
-* WWW documentation:                     Availability.        (line  14)
-* xargs <1>:                             Specifying Output Files.
-                                                              (line  23)
-* xargs:                                 Large Numbers of Files.
-                                                              (line  42)
-* xlc:                                   Compatability.       (line  22)
-* xlC:                                   Compatability.       (line  22)
-* XP (Microsoft operating system):       Windows Operating System.
-                                                              (line   6)
-* xpl:                                   Chunking.            (line  36)
-* Yorick <1>:                            Performance.         (line  34)
-* Yorick:                                Philosophy.          (line  15)
-* | (wildcard character):                Subsetting Variables.
-                                                              (line  59)
-
-
-
-Tag Table:
-Node: Top1131
-Node: Foreword2781
-Node: Summary4943
-Node: Introduction5738
-Node: Availability6000
-Ref: Availability-Footnote-18103
-Node: Compatability8487
-Ref: Compatability-Footnote-113747
-Ref: Compatability-Footnote-213883
-Node: Windows Operating System14081
-Ref: Windows Operating System-Footnote-115592
-Node: Symbolic Links15821
-Node: Libraries17785
-Ref: Libraries-Footnote-118928
-Node: netCDF2/3/4 and HDF4/5 Support19104
-Ref: netCDF2/3/4 and HDF4/5 Support-Footnote-124826
-Ref: netCDF2/3/4 and HDF4/5 Support-Footnote-224956
-Node: Help Requests and Bug Reports25244
-Node: Strategies29849
-Node: Philosophy30247
-Node: Climate Model Paradigm31784
-Node: Temporary Output Files32433
-Ref: Temporary Output Files-Footnote-134661
-Node: Appending Variables34757
-Ref: Appending Variables-Footnote-136791
-Ref: Appending Variables-Footnote-236972
-Node: Simple Arithmetic and Interpolation37121
-Node: Averaging vs. Concatenating37833
-Ref: Averaging vs. Concatenating-Footnote-138955
-Ref: Averaging vs. Concatenating-Footnote-239216
-Node: Concatenation39591
-Node: Averaging43094
-Node: Interpolating44509
-Node: Large Numbers of Files45021
-Ref: Large Numbers of Files-Footnote-150629
-Node: Large Datasets50977
-Node: Memory Requirements53575
-Node: Single and Multi-file Operators54616
-Node: Memory for ncap257758
-Node: Performance59222
-Node: Common features61222
-Node: Internationalization62525
-Node: Metadata Optimization62896
-Node: OpenMP Threading64033
-Node: Command Line Options66973
-Ref: Command Line Options-Footnote-170765
-Node: Specifying Input Files71046
-Ref: Specifying Input Files-Footnote-176845
-Node: Specifying Output Files76955
-Node: Remote storage78723
-Ref: Remote storage-Footnote-183943
-Ref: Remote storage-Footnote-284168
-Ref: Remote storage-Footnote-384475
-Node: OPeNDAP84884
-Ref: OPeNDAP-Footnote-189546
-Ref: OPeNDAP-Footnote-290127
-Ref: OPeNDAP-Footnote-390596
-Ref: OPeNDAP-Footnote-490752
-Node: Retaining Retrieved Files91138
-Node: Selecting Output File Format93495
-Node: Large File Support99921
-Ref: Large File Support-Footnote-1101484
-Node: Subsetting Variables101532
-Node: Subsetting Coordinate Variables107400
-Node: C and Fortran Index Conventions108968
-Node: Hyperslabs110713
-Node: Stride115004
-Node: Multislabs118191
-Node: Wrapped Coordinates121841
-Node: Auxiliary Coordinates124710
-Node: UDUnits Support130937
-Node: Rebasing Time Coordinate139070
-Node: Missing Values140920
-Ref: Missing Values-Footnote-1146694
-Ref: Missing Values-Footnote-2146938
-Node: Chunking147039
-Node: Deflation154643
-Node: Packed data156607
-Ref: Packed data-Footnote-1160861
-Node: Operation Types161034
-Node: Type Conversion167997
-Node: Automatic type conversion168864
-Ref: Automatic type conversion-Footnote-1173107
-Ref: Automatic type conversion-Footnote-2173134
-Ref: Automatic type conversion-Footnote-3173317
-Node: Manual type conversion173507
-Node: Batch Mode174036
-Node: History Attribute175038
-Node: File List Attributes176702
-Node: CF Conventions178434
-Ref: CF Conventions-Footnote-1183025
-Ref: CF Conventions-Footnote-2183248
-Node: ARM Conventions183888
-Node: Operator Version185747
-Node: Operator Reference Manual186845
-Node: ncap2 netCDF Arithmetic Processor187895
-Ref: ncap2 netCDF Arithmetic Processor-Footnote-1191321
-Node: Syntax of ncap2 statements191604
-Node: Expressions192949
-Node: Dimensions200064
-Node: Left hand casting201888
-Node: Arrays and hyperslabs204673
-Node: Attributes210214
-Node: Number literals212405
-Node: if statement214294
-Node: print statement216488
-Node: Missing values ncap2217526
-Node: Methods and functions220094
-Node: RAM variables225549
-Node: Where statement226813
-Node: Loops229638
-Node: Include files230982
-Node: Sort methods231725
-Node: Irregular grids241718
-Node: Bilinear interpolation246807
-Node: GSL special functions250908
-Ref: GSL special functions-Footnote-1273218
-Node: GSL interpolation273412
-Node: GSL least-squares fitting275451
-Node: GSL statistics278461
-Node: GSL random number generation282204
-Node: Examples ncap2286620
-Node: Intrinsic mathematical methods293869
-Ref: Intrinsic mathematical methods-Footnote-1298954
-Ref: Intrinsic mathematical methods-Footnote-2299774
-Node: Operators precedence and associativity299847
-Node: ID Quoting301768
-Node: ncatted netCDF Attribute Editor304319
-Node: ncbo netCDF Binary Operator316454
-Ref: ncbo netCDF Binary Operator-Footnote-1327477
-Ref: ncbo netCDF Binary Operator-Footnote-2327650
-Ref: ncbo netCDF Binary Operator-Footnote-3327990
-Ref: ncbo netCDF Binary Operator-Footnote-4328046
-Ref: ncbo netCDF Binary Operator-Footnote-5328114
-Node: ncea netCDF Ensemble Averager328443
-Node: ncecat netCDF Ensemble Concatenator333029
-Node: ncflint netCDF File Interpolator339143
-Node: ncks netCDF Kitchen Sink345916
-Ref: ncks netCDF Kitchen Sink-Footnote-1363954
-Node: ncpdq netCDF Permute Dimensions Quickly364264
-Ref: ncpdq netCDF Permute Dimensions Quickly-Footnote-1380898
-Node: ncra netCDF Record Averager381003
-Node: ncrcat netCDF Record Concatenator384387
-Node: ncrename netCDF Renamer388525
-Node: ncwa netCDF Weighted Averager393957
-Ref: ncwa netCDF Weighted Averager-Footnote-1398860
-Ref: ncwa netCDF Weighted Averager-Footnote-2398999
-Node: Mask condition399197
-Ref: Mask condition-Footnote-1400582
-Node: Normalization and Integration400766
-Ref: Normalization and Integration-Footnote-1406425
-Ref: Normalization and Integration-Footnote-2406491
-Node: Contributing406607
-Ref: Contributing-Footnote-1407339
-Node: Contributors407753
-Node: Proposals for Institutional Funding410142
-Node: CCSM Example411219
-Node: mybibnode423548
-Ref: ZeM07423668
-Ref: Zen08423896
-Ref: WZJ07424103
-Ref: ZMW06424489
-Ref: ZeW07424728
-Ref: WZJ06425143
-Ref: WZJ073425331
-Ref: WZJ074425776
-Ref: WZJ081425976
-Ref: WZJ091426260
-Node: General Index426473
-
-End Tag Table
diff --git a/doc/nco.pdf b/doc/nco.pdf
deleted file mode 100644
index 057fb86..0000000
Binary files a/doc/nco.pdf and /dev/null differ
diff --git a/doc/nco.ps b/doc/nco.ps
deleted file mode 100644
index ed73b65..0000000
--- a/doc/nco.ps
+++ /dev/null
@@ -1,27449 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software
-%%Title: nco.dvi
-%%CreationDate: Mon Feb 13 21:50:24 2012
-%%Pages: 190
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX12 CMR10 CMSY10 CMSL10 CMTT10 CMR7 CMR9 CMTT9 CMR8
-%%+ CMTI10 CMSLTT10 CMSL9 CMTT12 CMMI10 LCIRCLE10 CMTI9 CMB10 CMTI8
-%%+ CMMI7 CMEX10 CMSY9 CMSY7 CMMI9 CMMI12
-%%DocumentPaperSizes: Letter
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -o ../doc/nco.ps nco.dvi
-%DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2012.02.13:2150
-%%BeginProcSet: tex.pro 0 0
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
-/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
-setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
-restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: texps.pro 0 0
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginFont: CMMI12
-%!PS-AdobeFont-1.0: CMMI12 003.002
-%%Title: CMMI12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI12 known{/CMMI12 findfont dup/UniqueID known{dup
-/UniqueID get 5087386 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI12 def
-/FontBBox {-31 -250 1026 750 }readonly def
-/UniqueID 5087386 def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI12.) readonly def
-/FullName (CMMI12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBFE3573BF464E2BE
-882A715BE109B49A15C32F62CF5C10257E5EA12C24F72137EB63297C28625AC3
-2274038691582D6D75FE8F895A0813982793297E49CC9B54053BA2ABD429156A
-7FFCD7B19DAA44E2107720921B74185AE507AC33141819511A6AC20BC20FB541
-0B5AAEC5743673E9E39C1976D5E6EB4E4D8E2B31BEA302E5AF1B2FBCEC6D9E69
-987970648B9276232093695D55A806D87648B1749CB537E78BB08AA83A5001F7
-609CD1D17FFA1043EB3807AF0B596AF38C91A9675E2A53196FEF45849C95F7DC
-182A5EC0EC4435A8A4B6E1CDBF9A5AF457564EA72BF85228EB6FD244F2511F5A
-CA9B71A65D53CC06EF5F7EC3A85106139A4D312378BC22183C09A229577B793A
-1B7422611C03E84BF809F46C62CE52D3AE29CE01C32B202ACDAA5B72733EB0AE
-C31D7EF7BA88D2D14F85313F7A8B9B7A5B124B03AB923744D336C969E5CE304D
-3AD977A46664479EDEFB69F113024E761C05FA48A54072DF9E12C2F352ACB3E6
-D04F6EEFFDE209E7FA3DA22E5B1D1409461F4286B7F4F8251B44E5CB7805762E
-E129FF4A06A7458F3191926B1CAF70E32C6571AD2DC07C34FF62840896F4D200
-761B1A7FA356526D1E3AB4C542AF13623BAEB9F61B1BEEF79A9205B1FEFDAE24
-8799D516A9ACC30BC0139C63C9A0523E9D5439213B67D490C96F902958779B8F
-68BD8E9FDDCE8A3A2E35877DB6C94B7612382ED8F218EB1157D2ADD090A2448D
-10B99FBC9211C5629ED1C61C74FE93041E5AA03EA4AC3FFDA00C2B6E719CFAA4
-262FE17F66804A6B54D3669836EE4367D2A2991580C5564463C973CA0DA38AC6
-922716E13B4A807B50304B8826CEFEAA47C305FC07EB2AF25FA7945797237B16
-56CDE17AB0834F5C97E0CC5741B061C6FF3A8DD1A79B9A173B66A6A750538E26
-32FBC92E75BA15CFFE22A7302F47908547007402569158F62C29BA2956534FEA
-7DACF1E507AC309DAE8C325F2A6023D2FBD81EF42146BFCE6A16A6310A650460
-7B07BB7647C8760FADDF0DBBCD3DA6CC4645D1732DB3A22D8B76E1D2D48E4D4A
-46F4BEB80CE65F3517283A1AE08391FD1C10ED452133706BC6725AABC80107FD
-754A8BA47B0281D479F052CE26A723EFFACB79B213041A536542AB334769A2BF
-88505D82C498ABDD5A73EB539530F47CAC52825D16A969C8BB56D4A7F2830B8F
-CB63B92B576E7BD922A4B25E634751F8A3B7C4EBAFCB373EDC8B8281B1D1371A
-7844E9AD990CFF09F0D7ED73A5CF873D2D5C9E8A9923CFA31E1A4B4CCCC40760
-8B3AC8FC3C88BC08BD7407725281BB879A1A822D94997826418F1B89D303F2C0
-BE7A0102E6F529630CBF1BC5BF3E4578C164A3DDE45E62A957EF3FB7F0FBBA6B
-CA1E79A1ED195B6A11CFB345B663C5E72FA55D80476F604F6C4257B51686AE25
-8F7D159FE605DDA0AC74BAA5034F29FFFD403070013C6E2D8EF6A0990D91173B
-D5A3AEB98B64E412991505C3CB7C2CDE13C091FEB3DFBCAF30C4C19511102300
-135BD5D444BB55692013F52056908DFAB2ABFACE81A58423ACEC59344CEF7D4A
-C5A3EFFFFF70759BC3E593D878281225060B97D1BEE6B26EED90571FEAFA1812
-1115C0EEC892F5DE6FDD68321A0B3F10A2D771B79BD85476AF6018472A499A86
-07D64CFF4550866AFE590C471C80EB12CB3A989A60BC7BED39097C12D9286E39
-14C7952C4C64820B4DE44A1827B7B0B535244E93FDB80036D6332F90F95B472D
-7031E7E3819E881BD0313CFA112EB3AAE943C99C47635CCA7E34DC0306C04E5D
-2E9F60FF037EB11602BE74E8E6B711392E866E3E55D988F7C856417A2B9C186D
-639819B4786D039B77F8578EF63C088FF28BD08D8353031445C8498A8F445BC3
-D08923D32AC04BF3CAFEFCCC1E77EA894F4E846F47EF62D6841B8D8576FEAE8F
-90044626869D04D61D64D56E8C51AF8C18D6CC3FEF3B6C4F7D56FE3260354948
-10104F69B117FB8269292579A7D52FED688C663B643D8D99F13956612271073E
-1A337AED059B7A93819A28CDF01569CBEB51069D22ADAE25C47355560F402B2E
-8C9900DA82B79C64497C8494F42FABE5AC41791C2010D98FB7E593C744F250DC
-D837DB0EAA4F75D0016970F3AE8359878A08CF9A697A06C5EA945819151265B9
-1A12122B98F79185DF852257BB4798E7DC03712EA6ED34F6E6AE1476788DBC33
-9229FADB8D581BE1A63F596698DBD6DB98A092F67197A4FD4A50B648F2691875
-EE2495D6BB310078F516785A0CEC7EB6E8305FDBAEB1D15690409FE32DD9CFAE
-DBD3866FB63EBCAAB73E3E4BE5D7F3AA44793938AAF3F8341683F0790F1D46A3
-60CE083F9BEDDA22E0639A92393960F86602216FA51E2754BC2F4CD0BDECE3D8
-FFAB7E0E49613DD4956C9A10AEA798BDA1F756C755BEC12147ADECAB0FB73B7D
-203A11D84DD2AB5AA98FD38C1C2573570FD49A4924A94A106D2A7D850E793608
-FB135853E8C4204441CDBE697FD0CB330B1C3596F32D2BCBF263237EAB362D09
-DA6F531B40384DC91F30674760CA7B64BA1968F6A7FC9EBEF431A1AFC5E76D7F
-2D44DCB7F61C7F6B16196B3E8B47343F572DBA8B8B21B43E35BB6B2DD5C7982D
-244FD4304D254D6CCB5E8CF70E77F50812F41A988EEB3B26BF0F6F69BBA18077
-31134B5A5823D10FEF6201D045AEE7A24E0F25376E9FC66340C56C05F6CD810B
-724D85CC4BB8D789834A447CBBA159565D08BA5793D8599035BB5063271518E8
-F6C50E7DCE71B1D186270DDC860C6DC0CD506010EB5B1FDF6BE47A9A18CC15D7
-D657E58BED9EECAD5CE5D49F63139A39BC52C6584BB2C3264D51BD584B40F8EA
-AFCD8B83F548594386EB2B05CE803105E84931DC6E7A1398073D48E130E0D907
-CD0F1ECC3254EDF5D4DDBF44415DC9BA66C673820CDB0FDF033D59BE2B5EFCEF
-01FF9D33EDC88F8D522E07F1689D024DBCD09A16A63519E1764C8630FF36058D
-CFC07027E0ECDA01E0E85B166C613B22F587B4D355EB018BA93E92A36007B4DA
-287FF5A91F7D8A0EDF5554ACCF45AC8066E88865C5692E63EB99CAC81367B605
-8E6C19EB98EBFE0D2D161B447B9A70CDD1122C7B78A413369016E6D8481E2AE9
-9AA97B5DD0ACC9B0820F7742CEB2F46F89F3E2092621969A88DC0156B4F941A1
-6BF1546D4B136657C47B082A8A35FE96016BAF3D9679B8C32EDDD6AE6DF3BFB5
-7854074FA019707FC22BFA82299E72ADF9A980AE29A8E2434277E58B01F6B03C
-192E1E25DADD49F6E3F69799AE62B56E00B60A031BF8721DB8B2CB6D4A4C15CA
-AB1FDE010AB7DC0DDED977389B101B8E53A949222FAA126656E02817DD32B0D4
-A49516CEC2B97EA7C78FD66229B044EB92F502384BCC6CCDFFF995EABE3BB7A9
-50D5D1AED861E7D3BA8D333026C673C5762712E763E59261426044583D789C67
-A606B96F97663F92BF104CE02FBFDFC521EC0D6670B7D4F85A229F51426DE912
-3B729C4A535FB7C88D0A5E78074751B58885DD6BDD2DD9E9C83F105E8CF63DDF
-CA7DB39D0319CA7CC2E73F42747F007574DE25AE1538B4D493D22D0D5F0F80C6
-5F6FA3937C8391DE2F0116F81DB2DB0EF751EC838A7F85F163A6F48804E84B96
-8D715EF25B7E2A5CAECC558D80F421052A1D698F3B8452AC27E30A4E6226E3CE
-084C8A83ADA0818A110923CF7AC7AD4CB92AE4ABBE0A9EC1FF935FD02774C1F7
-92A278E513012AD17722A23C55EF82E18F8847B5CCE47F4FE3EC508BA563F7B2
-AE56C94285A18DED4D432FB0CEFC05A20BC17DDF9FF919C724810A8ED7358A27
-97EC93C1A13C443A91947FE1F6F528EA7B628917FA7E554A1D7B31ED46C5ABCF
-92BA57961C8876DB4041305EBB029B03D8351D5E2819FF87E97ED214D8F1CEF5
-7F7668DDE223721C0B810F4A4AC81CA4EAC86EAE546E1B15D91E626FB9A31824
-5BFF17C4E79FD56ADBF6DBF01BAF6453A81EBDCB38A5FC0FD0FF0646B3B0D199
-13E2E59A1B5CAB6DE5329BE389BA0E2A2AB55CA40B711ED746C24F1E48892E76
-6DACF7DA163CDC90CF076763008E7A899870CDED5A80758E6177BE6B93B07EB1
-5800A3BF7B9AAC3FA825CE594EF5B7546B181375FA8F37608DF17856D2F8EBD5
-6030A9E6F6BEAF224AD2AEF76D03B023E2FCB922CB8E3C6816AABB61FE6E4F83
-F21B4935102C860ECA03DBEFCA461F0E5B93E5A8D18440BCF7D1D6252A24CB6E
-A64FDAC8B67C4888519AA368D9C4A8C08C7155DF5BACD75C5196C571C3C456C4
-7CE8D90215FA6EE8CDD72C48740F7F5930EC3632DB63A9C8D2DA125088C0F05A
-9FC83D16B7F53163F4EB6FF372C6C3115F1E68EB35967D11126EDEDF0BF80817
-E68A698183B3EB0A207DB43786E1B9D289359D75AD5E465328CAA90E712C2962
-AE2A466173F2FF30EB535A6054BB0B875DC8552C16B49DF17CF84D98D35497BD
-F55E273FCBB0C735899529A69990E09149FBD2DDE64B7FA8D50AE83925DF03C8
-0B63EA158FBABB12A028803DA4B9DD6C48C0FEC469C4E730729F4BB420D5B003
-1918B4AE9CF35CFD31E8E62A44C0484E3D00143BF1D330235E821E5CFEAB4D31
-7CB4604DB1F310457FCF9075A3527279644D908DE847CCD00B6F50DBDEF91D3E
-38238CAF550FDCABA2C3A46237218DCC5A09AFAF69997E1EBDA7EFE6FC99ECC8
-5D4AFD5EE35FE2346BE79B499EC8EC436868154A947D13BC02C780EBA4B9E64F
-3026F1BF5DC1F8D64FEA1281EA40B4BC355638A3A59BD9055BCBB232FA45EA0B
-B405131B64F105814019BC55466EE78E9E9ABB62DB30EA452F7EFD7196C76A85
-15B2CFCD89922CADC0F392B0C54A231F3999AEFB53C24EB0C63B0C8A1A1ABB6B
-AAB2F93E5ECC7AB90EADA320E918106BAAFC1F8C425C617639984629018BA674
-6FF4F338AC43E23BC3740542911C058D43A49A11CB3A0CC8E3088BB5BA6048D6
-CC2AD250DE956BFBE83BB24C945C20D9C22E7105983F284EF478F9B68BFB0322
-EEB7D62802CBAAEFF1C2332159DCC7243EA40CE15C734EA905E04C476B178B82
-A08ABCB0B86A7330C75E62EE7844C9E22DDB013ADDF20AFE08122EE1B930A81D
-806A0F8CC584CB7FF5F56F9B35E5FF78FD93E7E4A40C64537464EAA275FE88F4
-461FC6A467C8A69B9A9FBC10D44AC1B753D313A8E7D97F5FAEB60F82855658D1
-4DCEE043C8FCDFD8A29DD091F3BA55874A458B2B8989F35055C72FC411382361
-9AADC717E602B48D7C9521D3971A6F7EB19D539445DDE9EFBC5B58FA9E5E426C
-172C45CDA24985FC4632287FC3B15849DEB56F5A061993AB10A6BC59868534E6
-69888175053108B77E4978D971B4EC57224C0F93EEA4C15AE92254140A94704E
-ED5666FC06C5341F643F779CC88A9E81891565C63B6F7F6286E664F4E0A48690
-356DC96F1B98026C563700772485B83BFA06435D4E0793EF822F423C93FBACA0
-E5D889D2B76771C6F0EE997A5DB43C2F6921132890406E3C33F6F159B14C5D78
-7C151BDFFDD02B697315F191B5490073EB418A4FF2A398C68D44F0CD1B87CF9C
-B52F12728B72F94D752D23151196A256908135C87991E508B8906CE2539DCA8A
-31F86809C8C6C18A09F6129BD7CDC6B37E76B648788056851F22BD3E3B5772FF
-EC01D822B57FFDB3BAE624F05531292641FD6A7E3666152D18F6C653048DD7D7
-98A942C840C4A0FA662F260B21C64214152BB86F03662A330109C5AC0A5EBA30
-C6201F558858130703DF76AF4FBBEE069BDE45C0D9467077D85FFED4F9BA9C61
-AED87D67CDCA453A6528AC5BA153E1039D9CCC556CEA5CBB542265FF54A1B208
-E0E13740E7E7C26AA00AEE909F8F3ADC2726081A744D8EF6BB711BF5F611A900
-76F91C26A338DA13A7160A9F42410CCEB3190000D963D036FDA05A29F598EF40
-8FAE6F8E7E6F50C99C3304A573501C13A00023085F057DF331E3354CBE65D573
-CAE73BF15B3B96B502E0AAF2B4A86237E98A997AAEFFF4227D5A26E8972C48E7
-761F430733E6EF8AB2D903C17FAFBFA21C25F8A0AC157D397BF3CC1AE7598F0A
-2BE4FB46B29443CE57F41FD5F91122E9D86F903E94D5B55E2BB95949C156D138
-89883BEFD634311F9280C7F028DCA6408D3A682DF5B55B9F7ABF08F019190F60
-D39E4F0E80F0594235B09A5320109638B938633A2C196E4ED2B43DCD8643C3CF
-C6123B076B7F73352F906D96FDE0FBF50CCCA432712C574D5857838BAC30B485
-D25024EB254A7EFE57D1DF0892C275CDB3DF77602F0FED0FAEBC644BCACA04B8
-B424DB125E487794CAB36E01B5E1A26F5E1E97A739AA36D77A12F5B45338EB39
-AF36CEBDED55DCBFCF497FD475FC6BAB5530AD6153C6BD982564EE8712185F1F
-D5EA7ADF4104661168A01994C1FD773A50C8AD6A3E4D332E4D59521BB8BBC6C3
-866EB4AC3EA4532477E6CBF6BBF0860031C3B916AA25E3492670EA67F55CF4FD
-207C684A0DDB6F4AD21B2909CBA71BCE2E762012B0927BA72367A6AE0AF87F73
-756C9BC85E4EDE35317E2CCCD138C02C7A8013AFDC1A48C3A4BB8EF257BDEEA7
-60E012F54D12D31D18DC59D5E526F12567B8688B4B67E16B56713870300016BD
-A3B9DA87FDC865246AF8E94316799110D86B1DDADB8A673402D4226C519C058A
-1D1E5A5778584FC28AF12819B1924060BC4F54B1054EA6AB0149E04B8C4302D4
-A56D8A347EB5D3D2A0E12CF7E35059BDB53D9FF6BD25F6D9619BC4669CFC1048
-C6C9978B8751B840F27D82A69075832BE59F55C1737CBB1220FB8FF691FDBDF3
-03BD7D225A9372AC221C38245E48320E1CCF898D9EEDD678E5B8C65B7F588321
-1A3953EEB9B39EA9A8CB72DB08C3E9234DFFF5FDF9DF804C021D57E97DA7622B
-97F4CB6E0EB640E0DC9EA15C5193F92A3A7565F4C7A4C9CC327F7CD2C44900AE
-D9E76FFE62FC37FA376E77131B566AE67C3E09DA80F198BBB995EE8FA47EEDB8
-4B467C6C7DB8AEA745CF8C56B8BE56534E9C56FCB2B7006426DFE93D728FA4CF
-94F131C549814E54ECE7C914C5FE8E4961D3437CE7475D03534B62650F551D97
-201C794AA877445DBEB11C85ADF6119B05360700F8CEDE4766E3A1D7A35CDDC7
-9ABF7C619E3868A39D1852DBE1EEAF5D7898C78323873AC005542B68C43C5000
-CC58F675EB595F87C879694751494676465891E8A897158B481F11A171CCBBD7
-29603F00210CFD7FF31FE3D273933ECC34AFBCC4108D9B76D9ECE63EA06CF939
-4799092A54A749DACB82C1424E9879672C8BC084C360014C9C1B6D5D65C68AED
-66CE329C3AD712C0A36BE7EF03FDF339CAA2E0336D387A693B1DFAB5D5164E31
-14755A158168962C9B399F8F1DF3FF5060D7464D5071058C30C572A2BC7DEE53
-84BD7614A4BEC4C84E18CF7EC81C811724463BD46CECA5FB57B0F55EAE20CC74
-6AD815D1897B037C197D2456797B992C20C70B663BF99FE28C513B4E221C8E12
-49779F8C0AE8517048ADDF7CDF0D698E3EFE60071C4997B7F5EF12B6CB65390C
-224F13FBB99FFC034C0710F05019899689B6D3350BBA65C7CE7C2AB03D81B9A5
-5F3D65E4D462DAB189006669F7390A78A1B8908A4C913B15DB8827DFF15BB9A4
-A6037DDB643103B937257A7DAB025F09D53FBBC2BCB6B0BCD8D56B2B2784E498
-1F6CF8470DCC892AD0CFE11578718948BABF9C1427084643B66BB9181094E29D
-5FBE37708E1D8A6B7518A96876844CB66954227A7A6AF28DD075A462526DD5D6
-40EECC56FA366106E55C7068997B54B7F0D03AC1AD45D28C67C7ECA99DBEDB1C
-E18A79C353113E2E05B837E703278B202112B1C69E42A69D64B62F0E7D8F7E5B
-C1F93F0F99EC20EF312046F4B0CD7DAB31E422070B629A7FA96583CF3F1519CD
-CF08806F40ACD7BB5C960F21E9DA7FB3C72CBA0801ADE83DF738A4EC94F2977D
-2B95A166BA4AE28CAD1E37FBBF49D342CDB4DF615E2C5F3076313AC517C350DE
-710F5D52DE31DF69864D29DABF14234DF13904BA4333B0D714EEA55CDD79DE45
-FF5D64259C877191547076B1C7684CD252C0337BD9DF66CDC5DBAA4F3102F2E8
-FE48385C55727B80D11F3BE0B7568AA9356FB2B180A6B1392D620DED02F0B736
-5F4399FB9D32DFBC8ED942AD311C82250DA8BFE98D65
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI9
-%!PS-AdobeFont-1.0: CMMI9 003.002
-%%Title: CMMI9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI9 known{/CMMI9 findfont dup/UniqueID known{dup
-/UniqueID get 5087384 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI9 def
-/FontBBox {-29 -250 1075 750 }readonly def
-/UniqueID 5087384 def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI9.) readonly def
-/FullName (CMMI9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 58 /period put
-dup 60 /less put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBD07FC5A8862A8DB
-7E2B90C16137614CDAFB584A32E50C0935109679E31306B8BDD29F1756946A67
-7A7C2D9BA6FAB9B20A424AA0E6F4BA64C2801C2FB5A1156CBEED0ACB95F697B8
-BC2A6E6AA7EB1F9FD8E3C9B1A16697EE1F0E7400421A7765AB218FC837A49365
-82DC6B2C877A7DA84A81E6126EE96DB25C17A207D3020A045DCDAA064360DFFC
-E3CD50E21ED239D2A6450D04F879A26443ADEB6A20ACC504989876476C7D1A74
-91564FEA1F4CC2C8C8FDF666DB537F315AE1886C73CB5B00E67E7B398A6C018E
-540EAEE98BB8136C4F044EDD63C33431D2CF9740F051DF365A4045D9D8782112
-7BB5D494D9235BA98CF2F30CB119F5A904C32AD04C960C43FC1F5FD8DA7D90D8
-93AFB59F3FF4F796481AE2A7548F948FECFC6C127C4D3F159B08F206AE8C296D
-EE470DB2F879EA79475E029D22D7A8535C09A18689DB0609CC233E5199C02756
-972CC9C94D9FCE264DEE5D75C8D651E4E2D1189AD9588CB815722BB5EE3C379A
-6F31C2E6AE1AE4CCEB29766190AFA20EA937114978752189F1A9F42B39483149
-796FCFA123BA9CCD1D9BE28289660BCAE16C40B5B504058D55CFCBFB4F4E3D94
-DDBF39F157E63946534DA81C018B1C01B9F10DDB55E0A5C2B3985ED1977C039B
-D6755EA42CD09E27751E159C30B93F376DBE61CD3AED34BA36A768F232EB3B80
-E3E6B77C4A48D408217818E398B83D995AB6BC871F20991DF57313D6EB0C793D
-0F28088EBDB7F38DAF7E01AAB3476EC24D7BB38A9889A7D3038D930FF4289B83
-F54A7BE1E2D98A3822098D2E4D067A0D400C20C0B2B4BBD74C13ED1B827490F9
-ECF48F8C3994C1C5AAC9CF783BFA4F307528F51EAB55F961808A42ED53F00C97
-72A432EAEDCFCFB622389BDA707B6ACC9433B065CF29EBFE93AD14B8ECD5F47F
-F073F11822C49B8BE924CDFA6348C3A75E9BB9BF3F31C41716B34794B28CDAC9
-4DB8B087E180A9B3B17680F73D9C12C8D86A922C948093629F5D7F542ED882A1
-692F4F6696865E53E3E2DD43B2D5E8C989CFAA5CA5C4C5999045E170BDE9921C
-BACD6F2863F5553EAB2BA2D4A9034729EC0C4201DE90DA89B0A27C5A5C974109
-4E37BFB3F46B3A506169FB0C68E1CAFC844419A8D261A1FD86A3BB78E33D5FB1
-CFC687A5975987CE45155E5FDFAF0CC5FD5568CB1C26212F92E88255F0549F59
-41B33125946DE43436BEC00804063FBF03EC796E3361B1C852EC3038D107F80A
-9198968265D5488B26D7670B22C2D75EDFFD1B7B4AAFA36DFD94640C9D0E2D20
-5BCA18683EFB91834A3939AB8EB60E2F09655BE003582634C52770DA9668C292
-2E02929D812EE2B0CC65F020064AD5BDAC5F5693B30508F40ED8E20E87149BD5
-8DD41AFF83FD1944804017DC5A04512E593549FFFAE501131CE2FDB65EFD0B8B
-33809CBAEE411B3941C241550B9C30DD28088708F1C0CC3125CBEDCD985EAD28
-03313741F67DB5744A87B381147D5BA70AE1145C27F794854628D87D6C1ECCA1
-749E3465B950175D3C3F40E344297BD92D3190041A4392033A79BEAEAABB8DBE
-CC14E39612F43721CFAE6F79074429221CA588AA2501DE520A464DE157A03AFE
-3C082FAE7628FC0C57FFC61D0330AE6332D20FDBB09BF36848FE05E782D6379F
-64F9C82C45402481B0A35989027F9756BF5A79DA2D96E10F39167ADB4305578F
-90B509B6891338FA1D67DCFD61804AA6621526B2EE4769589A2646581712AC05
-DA6E98D16494F07D612743058F54FEE516BD89A8EC3E03F9D7F905175D3412C8
-F7329077FD6EB25213F3CAC94BA0C3363B759401B6EF7548C7D709F3241D030D
-4EB46A1AE81863C412BDDAEA6084C37143A4C5E41BC646315B1CD09F934186CF
-49D1D8239E363A435307030BD79536B50B723A39DD763DB539F24A10DDA12BD4
-E467339D2D6DB177D6FC539FA77D2DE4118EBAC161E928749F7C753ADEF86117
-58619F1155C563DF2E11ACA8347908B98113AED58FCD0394150EEC94B7F986EE
-88BF7171D208D8F1774B1DD478F0C2958AE372D257E7EDF0F6B5D6059CC4D5D3
-B00FCBD2E9CBE79235B9A5A3E943CC27AABB58728C95C7DBD4F4A1F8A4DA99AE
-7377B0CC0BFBD454794398AE0D5F7281771FFE87B25A819F36E692286A42D776
-01794A43CA9BB30FB8FFDAAF014F909A369E34C2F6C75B7D4EB9DB0580E33F46
-19654443AFF8384B95600B86FF8E41FEFD032355626D60C7507C058EF832DF41
-194B48A36F11082D1DCF4723E21401E0C7447AABFAB4639B26E3D2730E348F55
-53EBFF39CDD03E06E2FA5FB379603C879EDB7E1A10F89695C9C47DEEE52BE0A3
-F446F187AB9D7E93E6F9387F21129034F36DF40605D28FD526AF82CA9D232BE4
-412567F06B38ECCD496EF40A7B243E46C9FEBA4F1BF4B1ECA029C5EC239353D6
-C0B100BF7E7DB33BD1277DE104F15AA19F37340A777741AD1AD693BC76DA48CC
-C6F83CD84591ECFEE375979972B0FAC4C10B625E4BFB261B9FFFA83C31DA0108
-4FFB6377466E9739E0EB64424BD9FC7239C7DD834EC6788A0F97FE714AF92831
-E1BA36A8A9E24739F1DC82DC26CC3CE28C210AA7C569B19E1784D663A0CA4E81
-AFF43E86D6F5F63778847700072CEB77A4EB946DC1F23DBC00BCE773203F76DF
-00F0B085F31420672974DDC642D885E95BA6BBE43E1CA8ABF464D9881CDECC7A
-E98E31B9754C9B72A8BD5CF6D4D214DBC3BA7A0CDF6635953F5AC1E7639C4A91
-C7AECE4C75CA3389C348F656FC2CC96C84C85A926237B6504DB51937C9CFCDAC
-B75C31ED570D180757884E27757783DB2D5F35ECC48C496CDA342D49AA947BF8
-2FDAD2F19DFE8CD1C76A8FA08F33681F3E12E229D7DAB45BE3A3F258B5ED4980
-F15340CF20D965252843E026803E8AEE736EC41CCA82167401977AB719AA2F50
-0B791EEAA82027B3C712D2EB9D14BF8F94FBDE2227609BCAC41EC08DE2BAC023
-28352F913F7DF08D4E1C66E83F764578B22B4EB7191E852B91ADCCB1BCFDB1F4
-E63DFD152E86FA9DE9BC8908130EFDE29CC4401339C05B5B9764CF8EFF14951A
-C6C13AF979546996BF22F2B96D3D585B90CD27DADEC78914DA48432C6ACBDD42
-20EF583FD41F2F6D6D10C3DF7DD077304B5940BB0462656E306CBD91EB9B756B
-7014B1884A36201EC582FC9345C386043DD2818FC301EF78791C1D7854F8FACE
-5DE9801DE9F59D5B4271E003AB897B2EF49501589D681D59CFFD9B03F722EEF4
-74ABD29997515DA3591496B62666744EA76DCA45504F8075C0652D6779DBEAE4
-90430C2945FBD60AD53B51DDBEFC7ED703C418B4B244C8FFA5A3C1B7600C5A55
-3EBDB93C16AC191C3A28EB2279BD3F0D67C826BC6A73D3C0AD02262368AB4621
-98A1605F2887BC5880E1AF2780330E0FD01D7CAACBB0F008A42C427F38236066
-54799594E515B289044BAC4DADF8B3686B4372C5110201221FDA923F131E07E7
-93C44BAD406838BA4D1C277EF74098B8C0EDC41EEDD58C195D7DFF5FEDBF96FC
-19CEBC6C3006DD2CBF76916B4298BB915663C2F61AFD7747E03A03BD7280197A
-9DA590E3D081C6F53DBF94E8D6FDDDD910A70AB18A0F6D48A590FFAB314D6CFD
-E3FB20C1F3C91063F00726A2C13A3D48323F9854839405E5A29D66A43E6E2B84
-A8B3765F1D817071D4D6FF42BC785C2D11AB2B9452F141696CE19C6AFB9777DB
-107D6E22D8CC6C26440BC48248AD8805C4329D46BF433741CB519B21663392DA
-5DC7FC9BF37E5BC396BFADD7263D09F6B4D69594AB386B7BDFCF3BACB97A0E08
-22013E716E642592A20136CF9CFD61D4E515D80E06A4CB4FC9D9B916C93CEA95
-B83B98C48CF36C1D02291D4F5C0419338D64E33C90C90EDD2BA3B96D70FAFE0D
-403A060CFF448D3E28A9B1E3916018465E86095BAAB4706CF7ED350D7C554789
-D7F4FE5F180767DE8739259E68CF142040BE1E2E8C6152DE3417C1FAEA7584B6
-20781DC4A9796431EE713DAC4E713C839D7A4FDC8AB6BFEFFE767AFD8B67FDA6
-943AD387E5D3BCB09039ADB64ECC2BE2620C6EC269E708DD06C311F450099E33
-AF46AEC644222E7DC4DBB9371EE12CFBC4F9B27AB46AD1DA96CE006E1DF8291F
-A550A93026CBFFC1087B134EC6EA76F5E109CDA58FF47338A0039A786A575F70
-B8A03A4F9C8D07A4C856C77D9BCC8E3EAA740172D0C2D0A15BA35C9E5717D7FA
-2691774DDE730BB9D7C70D7AE103DB8D35F3728470C76EBA0E670634E1A0BA84
-2FA102BAD7271DF2680D86A4CA6FC353869987700E5E3FD778165456033D624F
-E9B3E80EBF431ACC934AA0357E824B8AD73E222B510DE8445C55C07C8E5DE46D
-E478F832BDDECAF2EBB11941DCF84CCD887043FAED9AA90D12BC8CA9A0C8D94F
-8D3BF1F80B14B6CAE6BB1C6AA405AA64BB94D5A82CFEA548BA070796A02F9642
-87326D066101435AB9EB40BA9EA9E61B363F5F5E3B924369796E8B78DE3414A4
-2B79C6A13ECB2F34E6299658D07D2B3DEF3D4383CE009A927F0EF5C196652842
-D96B857AB5E905201E7E8BA21A5EBED1FC6863BA9A1A6E5390407F75055E2EEC
-512FBDB3E82CEA13663F1A1944DA072C765D8CED06AB461470C5723BDC1271D4
-4D1D049D3EB131743F1EC9A6ADDAA038ACA2C41D139DC6A84EC3C61AC7F1E559
-6155CC2F49171F6E07CF56D721D9728E87FC7DCBCAC46455A3694C765FE807E9
-9CBC2D304AF37E0F28CCB22F239541B53A4D24D09C662559267467EA487BD33A
-0BEFD4899B581D20582930703A868655C31BE935364CA6A95FBCB22CB714C040
-9718824DFE97929D0482430726CCB5A5307957DD2432A9B6271E849148DEB76B
-FAA290FF6D0B18DC5B76407852E81C105EC6CFAB0F620C6DC9DA555A33C167B1
-430A8BC338BFC7D75B7099CC906AD923FA107C74D3FBB719D77A4E5A685FF9D8
-56424EE4AA074434B809D894ED50F6A60A035C5223EA25DD8983B9B34210DABE
-718D7B2BEB293FF1B63CFB1CBDAFC69552963D90F5E3FF533A3FDBB626E9FAA3
-F3C119E5E01C7BFF832A033C3515BF049E29558B1DAD652F2888E339E67D15AE
-95F9BD14E3253DFE9072B24C0E7E85025B71096AF51C86AECB2921126A43156B
-EC812B32B1164BD9B2B947D503C015616DBF2024F5C8CB3236C1DCA653D661FE
-6B1C19A22D272A176B7F1B7F9E67AF40DB0EFD4940E58B2A050249CA4E55CAF7
-6ACFD84FB46FEF952D18552B3972D79D808B4C263B8C7E1BB647A2D03E102867
-630D5C3F2C917F765A4F6FB8106BA6A9D0093E27A4CB6049C2371287D94B5111
-6E7020776EBD744C6C920464BBBC0AC206033E8240017F8CCB112596ECD7CAFA
-89950CF43FD87ACA750C03A778A37FBCE9C82C2F5ABB135BB02DA8E8C0D24475
-3BEA9D79372D0022FF1ABD378C151417DBC69FE5C9CA38D23A3900E34BF924A2
-90777ACDC37930B67DD44A2E76DDBD9B89598D5F626BFD325A978D277265DA47
-38CFAF16E7FF1946E15F41CA73F7B4B02E5AE8FC4C37B115BC567E4EEEFEFC34
-EC8974B1465AE57759EDDA28DD38A9210871D35D331AE1BE6097C3EC21C770C9
-B25D040B2ECCC3AEB1EA1BF99E0C2C0F192C13BB9152CFCF75332E03F9CEC376
-9B8C285A35F53655BE38713E09AE34BA2DA9C06FA42A6FD2D00CBF2AFD2BADB9
-1571629C65DA38A431710CF5B01FCA68E8B8569922FBC3F9B64A5509B6F677AF
-1B97E91FFFEB6308AB68AC58F9BA43DB5E764021E75B56170EB44C2C0A7DB86C
-62B8982256D3621EBE3DB3994DBF5C5A14CF34B4AF3BD5697F8E3203085DE9D5
-84B0598169760B925463E93DC87CE70AF4C2DF0F4287D2F2069847BCCF7A37A2
-AD451D5ACE4DBCCB2E14D5DF38B226952E7446BF87BEC736EF3D5AE793304618
-D66D3299AB9F9CA1D13F134FAEDF36750046E27706C7CBD8E0877BB6276E5196
-BC2A355D109C0253644918E1CC11B717DE6FBDA201E769812752888CD66268F6
-4ACF4A9449378F9F9923D584BA1B51F33663BE7A306887BC14A37E3C5A4654E6
-531D6EB63DE3946BD8BA95CFB037991174F36D61D842071E6625605CAA350A24
-FE551025D10871FE0E2599A63900C8520EF4911C53A03897C8BEE152451708E2
-43FCF4E700C583A5E8DBCC03BF9CAB864DBD19E1760945DEA0EC0BA38BEA8256
-D3A8D4F70F6685A99C6BD2BA8B412A26C002D76138CFCC7DF6802931E5D97BA6
-0151F6A4C572235B4196B22B7B2D14B32886DF0D2CA8A277ABAAC53B63F64CE4
-E4C088192AAB674497E8AF81961359C389B51F4A257373D907C615030BFBEF53
-DBD99058FD06E352450B658478C10454AC8FC0232B70D5CB916981978053E358
-99D322A07294748BA427FFD1E45C909171017B52B7C742FD77A8560852D819DD
-8DD53211A14D7B2FD11E42941722FD3985D627FDAF87EB57326A0D290B5077D1
-8A4230BEB40523A8565F95E0D44F036A571DB698EDD9D94FEC9512369E5E5E73
-A3CA5C142617944F4F99C0697ED088ACAC007FCE06E5A6EDE7D0E03A3399DCE5
-362271BC31533866BA79FD1FB3F608B22CCD4111FFB1BA35D920A23AD157C6B3
-C3DAE11069D5E46DEDA7158C6478D8B8C0D9DC237CDF0CC6633911673C43FB79
-E4F9B7F27495201E5ADE66255BC2CBE9D9F237DECB62A19D62CB41A1C92432D2
-07F0629E913A71B3F1AAF8B8C5AC66D3C8605A48F8913E39C859E163DB1DBC8F
-0ACFEE80A40B6172032E95A76B752B873FB4DF23CF3A655AF1A1B88C8DC156C6
-190DE72973950565454C0A188A33395FD3D529A88F2B578356DE8EBBC12F04C4
-5B899F667D9E6F3A4EC6DD8DE71FD4C2E2B6D56823EE4E0526679D71FF1B868D
-F261489F06F97B010CCBE640E2F57BA3DC3332B329F7958394BA9777D833AB50
-005E8E9232547104065ACE33396772B0E0BD66D2C6CC54DEDD071E444D8C95F8
-6F88B31E20FDB80F77C83151B7E25BD3736B4F9BDC52EE78C41E9475E5A6D94C
-D348AB42F5E36B4F167D29EBDFBD43B03F77EB296B06A36880FF17D412E77EA9
-F2E7C25FD05E16BEC6732681EA21AC3FF6893B93FC09316A370CDDB86D9E6087
-F6042C3F9ECD742778389170F5F041329782FB9F9702F7533E51F355F71825AE
-2BF4F8FE50D413AC9A20C41B42537FDBE8DDC5A5C793D3760C1EE13716068752
-F0AF10812250BEDFB4D7133FD58F4587BACD572505C84A7D3802D27443175FE0
-0D89C3398B55176D8642AFBAB5CBCDFD6220C8488564B4306D74A58CD2921AAD
-73CF803C754DAC2F30A5324886E273064FA51781D5BC596BFEDDCE3982EA1AA2
-62CA7BAA1B16C6EBB99B2AAC4E6C9CEFB3D10F19987045C4918DB239E6E63D79
-5F44B9D097118D081153AFF96E5EB39CBFBB99A3BE30909F614869031358EB98
-F07A97EA78AE50375941B2474DB46AF3305F2B208D45921F93743A6CB8AC584F
-6BEBE25ECAADD5A789EF60C9F54446687E7B030DA3E5243189F02BA46BFD28B7
-DC14822E136AC7E40CE20458DDBF356488045C95907363864CD6943643BF0109
-EE027A3091C11EA392EA91320EBFEA3B857370AD8EB86D73F035A476F7058222
-E8CDE78CA1AA9EA69A8AA6EBFF3E67324C567B914134DE042D6F8F18A9373107
-536E8D90189917D343F5299024239E2EC1D2D177D82DC8E344A7CF2AC71AEC18
-36F139E7A4EB59A67192BCA9ED0EB25DE13032F6FEAFC3B1F4FC81BB0EDC41DF
-B9EB92618667C59EA499B788CD26C2137D70F1B0AF793AF5AD0D0941F2E746E3
-F5A7F0288BC1EE11E982EAAE763CA422D72FBBC0D754AD58FBF92629DC8866A0
-431213513744DB48E52EFC89C83FEB082588E4F30D7DA77BB4C90E011A8C6BFD
-78C82BDCF2A4AAC3F5414C57C9ED29EEE1D68060473C239DBA7010537BF1D2CA
-1310A26AD4F71AB9C414BCCF10203734AF782E067931EFDECFE6919D632B4CDF
-967583F5DEB2BE8868EB08D1B0C7B0024EA03AD592E24F47A6D28525C823C945
-743609B53849276DF9E112781D53309AEF17B92DE777EC90486B0B8F5CBEC6D9
-9E053FE75FABDD66A317EB1B8BF2982AEC246A706076E279D99FEB5F61F1CF22
-C5C8AFBCD095599A81E6695A191FD7EEC5B28140B8EFA448B6532AC9E2618FCD
-8DFDDD56AC4B38BD355F9D94665B605CBC57C31AE91DC4E37F1B8E4144E88376
-D09C66FDDED81CBF4B9E91DAF49C91A710EB4176F47E8C16C7A5423C223196CC
-3E3F649D0427D85F31F444FF93FCFA28DA581658DD6EF8AB329035AEB2ECBBE9
-A53C0BA8EC71
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSY7
-%!PS-AdobeFont-1.0: CMSY7 003.002
-%%Title: CMSY7
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY7.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSY7 known{/CMSY7 findfont dup/UniqueID known{dup
-/UniqueID get 5096648 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSY7 def
-/FontBBox {-15 -951 1251 782 }readonly def
-/UniqueID 5096648 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY7.) readonly def
-/FullName (CMSY7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-dup 48 /prime put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A4D9DAFF1B3EA76067
-C5493B69F73B89C8B61804A34FCEC826343337CCDFFCE17BF343EA8034BF95AA
-14C56862C2C052569AFB236E1F1795F05150C8F28DFEF6BF4BCBACB678D00036
-30EE84FEB44B1A8438185EB45654E6853C1159B073E54292D135F0961A64E8A5
-AAE49C4BA9C44156C123426212120F99F3E8B7425752A5FE384AAEF755A8464B
-51F015F9E2967477D57B22627D75CEF8AAAF0AEBD504EB46D0289DFC8D86C972
-F042BD88A90A53613DD93D8A7A8460E63D85F6C15C000C0AAEE4BD5130B6E668
-8C9B3F3FFD804745DA1D5EC0AB85C96E1724FA67F9324C59275415182AB48D57
-9722DCF602396AD4B5C075A5A89A5D005C9FE11273E5FBDDD1800F11BBDF6AEC
-6711C5633A73AC5DF038BA521AC492E138F7FFC7C5438FFD32FEAA1128C66E83
-0D3AA40665F05E62D7EF00B1B0596162C402A34B6BAE6300D43F3DFCC84860F5
-C0F0F1CE28FC60642BBFE9BC9102E80146774CDC88F9C250DE762D24A3484BCD
-1D26B6D9FE981CA5AAB2A4BEDC528115043DC18D7105735D7528C2C5DD89A812
-75B5D7B2E5A586FBB0C061E708F92C1552F64A296490BD0F20243986A4707FF9
-8AB3C917B8DB92F19DCA6B9D4A1DB57515E51DD85D5C9D2CAF7A036AA3F9E9B1
-5B5E099CC05A9126AB274C17D75CB4FAF78052366D2F21EDAADF84B22A2D645A
-3E65C4BC0F540B5D9609D88DD0E4CBEEF87C16447D43A5F98528FD45ADD10DE6
-41AEC411FD6929308F0E4F48A8D9C9EE386E920D41C1CC98A52073011DF5BD28
-5683F280B5CF7F27DC50930C81D344FF5A8A9258A207D2531AC21A735B14155B
-C22C752DD22AA33C52D6D4D053B3E46FD4C9129068DFF52695A3A9184D04E8EC
-93696A3FEC3AEB3814D9015EC14C22EC3ABD5070E8C28A3B42F5596D948212B4
-AFB9978A0A361135C9E18CBDC98E0D1E8BDC17E25DDB3D52E86127E5AAECC55D
-FEE61693190E378978EF1BBD4D1AF005D511C7607CCFA4BCBD3EC427CAD82809
-B725B25AE8A03EE88F80A7732A571A2317E0B6A0D072EE8CE2EB9E033CDCC899
-B64CF4FA1C708A885442062F08D3D8DAF44C066EE278714D1486EB709D327865
-A483F62709E89D08291F044325208EBA758DD459481334F5D9AE3BB61B3020F2
-A4538CFC2C94BE84C920BE80806FDCEE394230730E049333A7E16509207514FD
-695B5E0AEA9E4A9737311AA0B33B15F6769FF865D1ACB63DC6201C3F1062A3FD
-1B446C1857460745917A36289DD57C94FE6240F4A40FBDFC10E91B91B79029D9
-9F1B9C74E8E5AA011A0ECBEC660230AD5929F01D0325D15FDC0040406F124021
-02AE176F4C98BAC1706F03C2B5B40F325A50CA4683B2BB4605E68E72D0CBDC2D
-96B3BBCDD01201B650A7E7744D58D1E36D81FBF72E0A875FF29B4C109A1950FC
-9621B18D58806392EEE9841794DFD39E3C4E20D45384FE07F9D445F143B922D1
-AB350AA6DFC51FCF767B141A392D6A8B633AACBCEC9F56A0CF40AB08020EE63E
-08CC0BE01B40E86388A65F5869F2F4D022DD4B912031CB8CEDEDFC2473772569
-5B28F66AB74CD7902A0061AA3547D13C7F0C6EEEA7B0BD316694A94E4D672520
-EA044AB28D8D01076C486CE456EDA1811F7ACA75D27473080D27D3E681E35FC6
-447046120C6CC4C17674F0F051570A79DCA74848F3F300B58B19018430D99858
-CA5504084D6BB74CFDB635B6866974A9AF05DF201C69352B2663B0623E7828B9
-5EC5FFA8D8F10A7C28000F8C679B180067D5481D6315BF1C4194EB171C8F3CE2
-4CE319975B9E948D907F9F7EEAF07089844391555F329E331D52FF114668B8A4
-80704B3C6AC0CCAA2F5D043CE44E65EDA89A0CA854CFDCB11D549B7FA72EDB90
-D35353C34A771B1FAF96F83FCA5258AAB65384BAFFCE448690C1432A1F749C20
-5817205185F973FA098BA856584753E75EBEBF387FC155202885F5B67117DD7E
-70D1CD887183C5573B6FB607D4F6CC9F8B94B09B3F3AEC2EF1E6A320CF6D0112
-63046321941D1FB3F2140B59370AA9387E24D579D389A166A10C989497FE9549
-34E1AC2E546CC06C5308460DBEF3E1AEEB6CBB0FFDAC458E61DE3391480CF5CD
-34A647D4DE15B81131B7D1F9EED4C6837A32E89B0EAAD6A05F5F67518655E5DB
-224D4833CEC60D5DBBDB8A03FB1A9730589BB4F0FF56191D17E73B9562E0C356
-B188882B36F9505F6F42EB2644FEE125C2A7D12227ABC8ADB924E88B0A9E8DC2
-79762523B0B88DBBE6AC7968A46BD9E9F0C3F03F5F64724CA07782195F01F130
-30DBE895C212E0EE20162D863F46A674D85232FA0DEE69A8DF019794AF6873AD
-9CC2A5EEEF9393313CA519BF95C08ADF7A75B6F53EDCDC39851D20E58B97CA57
-A7523717AA1821DEA94C8A9F8B82346B16D92D15AEDC16F0011A45A44B09DE47
-08CBA46E8511D0C5CC83F952EEFA4ACFA7F3D7FA5E113EF6B70E5ABA6F1AD3B1
-E4D3B15AC6D5C3BC70A3946F411A7D965D6FA9D7B6C6ECE19B2C29A2FF476251
-EBF0CF3BF658A1D896323706172746F58B2DE49F8B7E431E20304A42694CCF73
-11C4E9E96260CC442E2938A1E27EE6744C7CAB01634C8210CE40488B9CBD757C
-4277B5E3E43C7560291D945F9128AF1F85924003418F96458ADDC5BB8EC431D5
-AC9093D20DEA69B92454613BC1A82DAD4FBF8E56084494D9D2FFABD82A7C9847
-171FE36B265B546F3072B0923840E6C6BB12CA53E05A99F0E8FD4F5109782746
-7CAB9B35B68050230736AE624B7862D1244C7D9BE4D1CAAE21B123D1E8372377
-F1FEF269A9A2EDF02CE0CC8BF92FD7EF09556987B8A3BF6D8C0A663DB6B9742B
-E9AC61A449106AF1EA7ACAD40AC6F59427CC51865E6A90CF2AEED8D6037BA70E
-4ADDAF622CDE877C98C3B2006B4721FC9BA18E30F0752BD4ACE36221F5CD1497
-8FEDA5D643BE2EE007970A68E53D85975116E6CC09F0039A09EBAF0CA4B0EED6
-A485CC0B69E526033FD1C1190BC5686739CE13D1AE8EBCABC01FCFF26141867C
-44ED291196E546369129B9F759FDD7DC21BAF0A528FC34BA9FA8937813953644
-C539F9DA4E55E83DB3D6DA309C562DA1330B157957B18F7618544AB738E25F16
-F0517CD13C1F11BB8EA056BDC575D77CDC526EF497639DD89C2098660C5C45B2
-D7CF715AC5E76847E0D3178360DAC1BAF6ACAEE72453B845B9F86621C166857B
-029CEF5AFE29D1EDB4CA3AD7D008B7550A779E0066D7312DD6C7AFE1C0BFFF25
-7B062B0DF30032EA2A2FE3CC46C96A3A0BA1888D1D2B05424A59ABE3EE928ED8
-B67F507EFA78AE128F58B54634C7F534B3D0F4AFC23E38FB56EB39CFA425FD37
-848545EAD03EDC5A9E796CEFB345F527615C785963F536972EBD9CFC4A6A4A07
-5A31A508CA147FBB762ADD198CE36DF86730FCE2B643D1E7DF0BDE800DE7AF89
-44A36B04193E44231E08919EE91A8B559646DC4DFAFF0AD891890A0A88FFA8EF
-B066BCB7AFCA409C51889E7FEB33F19A3CB1268BD0EA74AF29C1401BABD16F87
-ACF7DD65A8513DA9995C5092C36A774BC4260113360D29AF7ADF5D22B5B58E7E
-A9BEFC33B9A91D2C397B27A81087376CB623318A8362C3FA9CBE3026675723C2
-E711910DDB328E0EE3FCE219F44FE528B70E58B8E6CDB4AAB48237DD933D9639
-E9D4F9EADAA8D46537D964D75C27F210B0C2473CB60D65F61BBD91ADE01576BF
-77C49E31936138B0FBA066BE910DE1B1F0E4FFB5E81038E8656ABFF08DFD923E
-6BA2AFEDCE6998BBF7045393C34811501586A4846E5B942C8E99D4C481D3AE60
-2796ADBB5242D59F1116EBB828014BD903EF58B223DFD18BFBAAE4D348876B06
-CAC10B7AF0DC270E6702A3F75D4DCEF872F2CDB9470AC9A1DC1ABCB55636D26F
-9CB6BF27A0DAEB1F62AFEC12F55F78C9B59AC6DA9DB4B45444B0C582DB4DB8A4
-B31EF4AFB77988E92FC0B257374B4408406490D9AFCC495316D6C08BEC9A76C7
-12371E14417711EF802FB7151B3F6A2580C97527C9C3A0FAAB8D62FD992AA18F
-EBEB36F7910186CD5F70A55DFE932757C299D9D2289796769A00A0C6ABD18F82
-E0D4E95D6477E67B4C012DBBD098FE20E2F15C412DD2AD5471A65EACE05B3A1A
-0C9C430BAEF4887F2CCE668116B87FFD9DAB4B9B3605CD26E6B12488058AFA30
-8843791A95BB322DF5C47387F3EC72343855D6B23D72144EB5EB5157B8B238FD
-6C71DDDA64C9539F66A7DD569FFF43DBE4A8F0608A3CBD354DD9BAB5E3C756DD
-92C3C1B3E169D86A2230299432488BC04A87E08A80809F9968676DF9157B1C91
-27C664ABCCBA9997FAD8966F766B325086899D1FE44581FE07C97688B3E15B0C
-234A22646C32BB965B9BFD2CD34854D1488AAF021E169BF9CA9665CF040E25A8
-16156C80A2F47397CD370AAEDA731E0D14FBEE1E51A17DB972D96DBCCE33F937
-5CDBF1A650BF1D3536BA4CB7A1CACFD5CB457E2368A660A62AC26E64A631B2BA
-6B08EBE42E02D9B1B2E95BF9F0A6B59C96A122968FD46A4D17BA3D018CCBA0F9
-80BA3C1E6C683111AFF79303CF64F1D2CCBD7571C6E09DD9B27B8E101BE219F0
-E075880A0E367885AC94143E777DAE455B990383100EADF786300602C2CE28F2
-4F44662FDF03BD39A5181912D8F1243C36FF88882CFC4B34C1D4EBBC01D96A7D
-9CE5303042D1B21042E4FEAA455F22A01333FCAD7E4AACA5D3A5386331985F6B
-9B247EC6310BB07507321BEF3E4ECFC3B915AAA6E029B3999644C987640863B0
-5DCF58CE479497AFAD1208FEFD1796E74467E9F7867C313A3412E6923F4C9144
-C69EFA17965056DF043DB465BF2F1E191706D3AAB47E6AD5C9767E4A73B29F2D
-E2E579D0262237568F82B360ADB6D0219B7535EFD02DD0688CDD23D84FC4F308
-5D2D0010B1A9F4F0321A00C154672D21708B66B91ADCF98BAC7A2F94848E9A4E
-86CC82EDD0399BD9F13E43359E71F80086B9B0C3B6D08831D4479ED83E7892C4
-90C477BD1F06DFEBBF60F26516EECDEFE4787EEA8683754F2B257D0BAA607DBA
-35EC6D1618C2FDF3881827F92D793ECF152D761F2423A96210F582DC9B90120F
-26A33025414716A5E6F56D712E31BABE5047EC4855B767AC63D793995C9E074B
-6E35C7E5255FBF4C3F17E7AD7B2A6C5F7459794FC94306B581536910F244BF5A
-3158E821CE75F4B0565EBE985DF24DAA92F9C1D848EEC6B88E21FB6C51125872
-1752F7352291960E5BD36F78AABBCF6DAA4D07AF56E4B6058AAB13D41BCDAA14
-C0D63C6807FCD0E2B4B9CC892F224843173A75DC53A8F0FA396959C2E2CFE3F5
-9B1C8B62797F34E7A0BFCF0787C73FEF98442234A617CF161829498035D30B29
-ADFEAABD0B496E8A2E764D22DB7737F950FC5982F1C5F4FD414C1B0202F40FBA
-62C81B8F0E836CD73D79366FD62388B437B81FC673442EE34BF27454F72A08F3
-389E60CE28A050601A42FB4491C60DC02EC008E6B9DD2495522BBEC7293E2923
-120584E88412DA7137397B41A28706B1CC6BB0C80709A2A4BA79822D245757A4
-3EE454198942ED2316FAEB981F7615E642167620EBDDC5B271E273216EB119C6
-4F2F0412F0BA6E3BA396217597575C6739194E1F839232FF088FDDFD3695A5CB
-9A0E220389938596D8BDB183138E1F73F64512E4FAB5E1328F9B42364E3113B8
-004BE2CA0B074EE271BBE0260D31CE555D535C16EBB528747EBAFFF253E659DA
-3A377CBE0B296276AACF0294CF90FDAADB4EAD5E2F600E5B2A018DEFB86FF61C
-84296480A425687CCE37D671472537E897AFD4B8C6A6175E1ADDF9AD24DFC5C3
-A73E18AC2D9B28BDA2F17D51DB3521945850DAF0EE48B0FAC271544C1B4F3B2D
-53BFC8DE32BA366FB1FEC0DD6C0B1FEA374CBE2B96F5B235A1D83A240DB442C7
-1460980A3E5B96AE3D5784DE2C2DFFA671E0A856DB2FF4130E5905F3D5338856
-C11A468D867D0C6EC585F1AD3E7164B8598BB59973B9A952FAE819F052A6554D
-EDC342BCCB0525905D1D27ECB9EE43847B69AE116F494CB2DBBAFB2773F1A3E1
-C75FBDF8D66FA5AB4005757D631A0D9424FCDA91A1D2AC6FCE7CC7A23E84C65B
-3E92BC684F23467DCF8521E0E27CF1441C487EC6E3BCA0AB54BB137E83776009
-833D772FD225E88A8BD992FD69819B3BA90BAAD1DDF16E4326190CC4BF9C30F2
-AF7CA1FB38E6387D9745FC5E176B248B1581BF7A4CA2FCA8E423DF340EAE29AA
-7E07A25FF838F67378F9A6A9A0B404E01E86E64FEF71DD3D540D4711AEB1974D
-E2E0D485DAFFC74BA6B8E9AFDA245BC8997BB39BB6BD52B496A09C68F7A8E900
-8DB3007643416040FCEC85B407EA0A946827771FBBEE49A3DA5542CC5173A31A
-0280AB8E922C23C1BDD88D70627EF124633C318E7C9ACBC14AE216BFD41C0B6B
-3A0161757913CA1F7B6626963C09936A52E73DD9B3D86DEEE73C0293A646FCF1
-21D4C33DFF1671DA7A53E77E20233EDE51571549AACB7968602CD03EE67ACACA
-B231661CA9DA2BEC5795A83DFAF675E9B052C8BDD51490F7874C91EF5ED2E0A6
-BE9CBABB98A950F7E55DDA3823036437C11F614E27DA5BB8BC6D955FFE54B825
-0201275C2C49A3908BEF1DB3D87792DDFFED23DE7FD9CFC284F6255C77E54A39
-C2FDBCD28F2938E4CC135829AC1867CAA5705674062C9639FEEFBE49D6108091
-7C58585B80464F7E69966D7933C7019BF336B88B9E0E7073A85EAF297B71B303
-31EEE9121347A482D28CCE942AF53E94F88A97EF2F1860A92CE29A14495D67B7
-D37E207D42F3891E0423F5BCFFCAAC057FEC683696ED6FEEFA65C8FB6F1312C5
-24A1130192B4179F3B08DA1C951D988894E7FE7CFC28C56992A1CA82BF8BDBDA
-E021F16E630FF67201BA4DF5F3F4D6AA65B8347FC1575C142C6C1868E8472BD2
-CF191137AE1B36F32FD84DCAD50644AD55EBA2694C93BDF984A5C9E7C92B73A0
-26769F00831537266FD2E711AB3F8AFC5F3FDA3C9E6439FFC48C3D1B5527FC56
-1FEDE991E66E8465C0E395EAD0A22A2FDC001E449AB9C5E0EF187A1DE9B74696
-BEB6A525DBF3A60DA2FBF1579150DEE1C5D1B6F55FF2708CE23289803CE123BD
-C81E25DB96551A13AD713D5C7BFDD3F2E1D5C12463A195442B51909CC1724E50
-A1F6F4EADB3B7355908F36F88521F333C4E7C70B094209D1F883B961DFAC32BC
-8C5A2CAF77CA5E6AAB714CC0AF2B42FFF6F73301FC71AFFA9B33A2153F55C2DB
-C1C111874DEC37CB746BEC9A3A9A37A2DD098CE7C66B0FE38460ACD77A47D53C
-1550F857FFB733B5A8D02FB56790A09190B29CCB4F4A3058B1C82F0CC5E1B2EB
-2F8E06F2DE531E1EB81326A8EF0F82843A4AC59D267EEE45730895752820BA93
-A129C22A78C1AB28BCF67AD5DF372FECC9EE6719A02E499FD5CA866688E86089
-7EE8E5912087E0C4588DE38428114785E0CFEDB1E2EE24CC067D107DFDF1E2BD
-B1C4F9C6B740F3DEA0BD315581004E851ED5A9F66C4F9E95DE97D355DB06F482
-A43B565F1255A85710B15A281E2F034B1C23FEE6CDF3A043780CB6AB18A016F1
-9EAFE545CA5A5B5AAE2459D69D2151E99D029FB5C1649B9DA784BFDF7D177385
-4D8B16B9922D149FFF6B4F99311D52BEC9A9FC098E7192180DBB38767DA9B9C6
-E8CFC98615219EF3AD4A8157D14C72BA3F91C8B78381383E0BCA1A5319749E08
-D67D1208C693A6640D1BD6B9285AC0D3110CBF8F7747AD12585141C3248D0BB5
-BDE892F91A4B3291F21F30294693518E4629A3ADD7C8640E424FF615602C603E
-1E14DCB3B17D34C090BEAD2A523E260A599522329B698729A635CFB15BE7E79E
-6A34DAC7C3ED57340821A4E7A0C7F88F64BAA69BB80DFA8B659F4756878E3044
-E1DAB053FE8A8CE996729D6B8C28E61CA326FE8914B35B08F0A09F72130CE848
-C798AA77061ACE81D1581C321EF4173F8DFB14C4BB2F48F732ACEF5D27A3D273
-EB7578DF28EC329125326FE96935BA29486C17330D880C52CAD18DFF2B9DFAD8
-199925AF1D54B1972B81D56F5AECC6C9226C0A754314056EEF9D1D01CE27E58A
-51376066029E299A52F13F031258E1F0DD281A5C49888CCBAA5D23DD11797AE2
-F788DE01F4F57BFDC954D4F6F05419868812695126D974E0E6AA804F1369D8FF
-B8B9864ACF9047B3D4F793DC77A56CF1ABDC7761D88F1796803AEA313C8754B7
-DB80DD00B2A3AA55AB1D00A582DCD3314F154ABB148C0E7F14CEFE753A2E604C
-E324775458BB042F009CFD2090FFE5C5698ECAA64C001E1E982F5CA0
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMB10
-%!PS-AdobeFont-1.0: CMB10 003.002
-%%Title: CMB10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMB10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMB10 known{/CMB10 findfont dup/UniqueID known{dup
-/UniqueID get 5000761 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMB10 def
-/FontBBox {-62 -250 1011 750 }readonly def
-/UniqueID 5000761 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMB10.) readonly def
-/FullName (CMB10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 38 /ampersand put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 51 /three put
-dup 52 /four put
-dup 58 /colon put
-dup 61 /equal put
-dup 63 /question put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 87 /W put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2D432E1428FB6D5BDAF
-3F02C975AA4E0072BE5F8CC7D3D59BA3FD04709FC9E52189F55C7747056EDBF5
-F85CCBDB1DDE9F9163AC7158EE8DBFBE8D94A46510118ECE6A280C4872F448F2
-E6A6B36AE3224FA448DAF204D1C998D010C6BF52DDCC45831DF1EC22528B00C7
-70525CAC9F6BAD892E7D5C81295A2AEFA8A5E4B6BA2C4EF61FD3FECFA2A8551B
-DC84DAC597222341E762620D3D3C1A4AFF2F6D68C4813004318FDBBDE23AE224
-617F7BC1F3846943E915624D6BBFC555E2EDD013F190492F03CB64E5F2403723
-7A2D4652BFFAD1FAA1DBA4538F2C3E608367BF95E09B853A2BBF9930D9B3BE46
-0BFBEF05DA75DF3D8E11A09D472A9E45C626428A1A599C111ADDEC7A4E70407A
-014F792395A2A12303EF51698D487854EA15000AB08BCCA8B2E35A5018F5460C
-9B223315D7B838BFEB224E8D1DC9A0C1077DA31F5FCE0D9D499EB0507B90E9A0
-1F92FB5FBB8D40568C1E8B8CD6E1DD27CAE6E107AEAC5696CFEB19091B40FD77
-7A4B4F0F261702BFF5E2320C62EB5C6E9DDE142E9FC7DEAB99D90297AE0F15A7
-04C0E3B39FBC85CB6B92BDA7917698230B5374D9159807ED1D07947D95802693
-A856C84812ABD3EBA336B88CC8F37288CAB59790B0882A4ED6815FF6D7A1BB35
-5C7B7437D2ED76E806813478007886ED1009A1E73CCE210FFA69A20D6E05A713
-F6EFAB133D146B0EBD547CD29FFE7870973C1E71854C1C643BADC69974BE360A
-4CF84FAB098EA3DCD2DD8B2FAAD19429B0ACC7C312B03E6446F1C1D51E6AB45F
-72F11FFA078DF3196EA970B24B1BE607571795A2FDC2EE7194E9422C483799EE
-23E16A737951BB935EE2C2BF008B6190E0138D551E75C9E6D0EA48E64E9750C4
-BAAE32B894BE25D092CFAE894230430E43C585D0F06636C8D56BB80A4597A0AA
-547FBCF12821C20F0E62369E1A9CD2343B8A8647B2FBB1F4C86CAB1F7A14669B
-69DC857F9BC7538A864E523C2DF7C830315E0907CB17C8FB6E412A2A9E88317C
-0026A6A402B36BDC433015AEBAD775835E5ADB4EE75FD8CA06C199E000CEDF93
-00692F29C5394DEE45DFF2D42872B1370C8D4A14E144FF36163C849F9339AB97
-EA87BD445733162A34E609BA1E92DC92F9AC892E7A0B39AB0FFE517856491695
-56155FF0C2B231EF1314CD4A146EDB1CA9AF7DD546CACDE1E6B49BF0D4ACBC09
-55C85E2D38DF84E0B779642F7E9C26CE19EDBF328104B9E803D1B03F3FC24C4C
-9EF0D27C8E5AFA420A63981C000A0C1F0B3D3F853FF300EEC524C586376AF998
-DF4ED5AA16D8E298C159C2A3E33048D4EF192A11287F69B11BE24D49A033B334
-83CB8783383F92EFB9E3BE84CEF37796BA4211E534B0360970B9C57EA7CB54FB
-F582789A83113ADD2415B3F84AC4ECA15DC70878A32559198DAE67B083B0EE6D
-68A92511FA8FD6BA88A42769E3FBBBBDFDAD61F99A6C274B48CB044D16FD5953
-44F1503D8D1D6DBAC41C1246A71EBCEE5B1F0DCE3EE7E3A99792DD8FFBD94DD4
-3A5ED347A62D301B6739AD2BCCC7C57378C29FA5A83759E7AC6F1505DF6C0E16
-71587914F698608AD93ABEC43611DE709ABC3F1C0A1343CBED5F09DDB4FACE0A
-8BBA9DE5B85FE9B4365358DFE877BBFD9AF08BC60BAD7C41433BBDBA17EA9A7B
-92F76358612FE44F43A85588DAACCF7846ECF5C58B22F18120F895317609AFA1
-06E88CA1D73C4CD5098CF44093207C31F46977B6D22665AACAD5A169906640F6
-3DFFEB3937BD6CE1501C52783743F8F6110DF43ECF512D49A55379432CAB1C33
-7C38B7A38DDB91F0683A052378CBED8BDE4E6DC32FFF6D723A4D1469D32AEDA9
-FBF89B9604656DD0D44ADFAC39BA893808676E1E08444CE56F6CAFF3E93D8D41
-F164049193BA11AF94B43515BC79D6A538C00B08FB518EB67C27E73380A651DC
-4B244E8A2E4ED405EA5C7EEDDB09D44C458A883C839B98D9D6A2209516E0310C
-AD777536190ED06F47EB2ED61C53A2E0AD0CA4E4035324DE75F272B1CA6BC1FB
-B912807B7331D932DADA30F1975A1C9A8B55604EEE8A0CB514C6CAEECAF9C46B
-5D5563E8934B421EA1CCE3B96412D78DBEEABA59FC603CC6ECF65BDB5B66EAF9
-14B852CC04286EBEDD560713090BC417A10BB834944E007F45B61AD6E6150B9C
-10A6FBA56C1B45EA5F9A5379B1A0788513DD4100B82BD61D89E6841A26B362B1
-D4762EAF4FF3BEABD882700BE9832115405728C5292BE942F871661EB0E6B29D
-430CB271A090B6F5399184F21ED6728171B1783C982E61DB7C0BF90CBC1482CE
-C6982B4F0AA39076B64CCA5A71BE73CA65F2CB60B89AFACA957EF8E6429F2182
-CA36220F80EEC5D01AD7061DF45CC5109D9F0B7E2B6DB9D6C6326A45DC6C05D1
-E81B636A82592D99C7B7ADA0E958A0D7570BFF1830017A6241AD62C53D4CB36C
-583672FBA265142DCE545F4855CA3D9E528143AAC66EBC9527B76EE43B4F4E2B
-B209BD265D6AEF18D168CA7BA2CEC40DF86FF352029597A5A3B2941D467DF229
-50C788D4276C5B400F360AB596E35983262A215047C9714912B2E69CABC0DBDF
-BF6925E19EDF3A6638CF5794722C8B92C6DCF5853DF288B9DA52A2152F98227C
-FC04D3C318E7D942E9D33582A490888F0C1CC1A8C4474091B4956222DE467632
-33CF5DB7DA165B59A648AC6945687B0ADB83EF5B286CC469B2C9E4AE92ACAE8E
-86E4C62A092B8F6C05EB2ED346DAA7C573A03760ADB3CD55B6C794FF4463BAC4
-2F4A738F9C4237107C503A7EBF4F4BB4380DBB64F5F5C9B268111752FD2204CF
-F25085683D071FB4149A64426859D407936A3D1E2C627652C126D8F9264E2919
-960ACB9DD61BDF973492CDB1FD20EA81E06BECF5E164A8ABAC12926DE1CBC0FC
-6693737B4875F465B5623C899FE129B3A52A2BDF104F8B8429890AC870580C7D
-B078A9E26C322D1A8AC1C6B2BF340813D989EE8D054882B965905D33EC3F4278
-DC41BE055E0E5F73B5A1F45E9E69718F5E155B4EA30B28BD28C52C6C322F2E84
-674CE600D699CEE1D2CFB7212BD8168B45824890273A0AAE4757D112980DF2DC
-C3026300B4BBC9B081817AC7F4D48B309E66CC7455708C772A08EF6FAC829363
-E27AEBC3E7D0A91984C05935B16E102E81D6AAAC347E38EBA40125543263BCA6
-9C6F4AD6BF8C3A90279FCA4A99D9290C3B8E0DEBB4B2DF932F66FD47AAC3094B
-7582FF8265CFF8BBC7F79C8C74B1FF94B26F3817A39B5FFC6BB562BF6DBF9CEC
-31CC3BE4D7E431D41D55D96C4F020486F993781828E9E8850192F9F6BA350AAA
-5E292210B0EFA4061EC8BD6EE15E3FAA4AB2F54110D17D29BA32C0D28559FF32
-D164DCC98EAC78822D6D6AC6F4871D47290A11C83670374F072A9DC723096C89
-EA584D43BBB13584D9B8B1820C415DA2E0DCA1B50655E81B47B9AC8343DD8FAF
-95F4771ABF81361EBFA9259EE8901F31C21E95DD22FE04BDB77D23DA561FFCE5
-A7708647AAF65FBA2FD95E843D839E5734D4C08A215180C7244924E002A965D8
-AB29470A1B86065B4133A9A6EBA05EF1AC67DFB5ED8DD8C11450233D2624EFEF
-3E6D3DCA7E23ADF174BC83AF25A1D7529E52D39C27DA86A2DF4BE4F8A96361CE
-7025BC1954C75A765ABC95B4AFE0AF5474653E6808F85893BE6ECA1A37F8B666
-05A9E9FBAADB0DD86848D6FC48A1000FAB396F756513798E09D29ED6DBCC8466
-40181BB71C92CAAF8E240E16304DB9F4B0FB6880004A0F9AF6228E60646647D1
-669577DA709B4FDB8721B95B07B4599652A303FFCEBF858A41F08BF3B83EBD31
-74EFA947A8ABFC7467D6CC544B655A7BD4B6A4F5EA9BF11CFC9CDCE14FEEDEC5
-9116A3FEF962932F8B105BC4C51744916E8976815AC286B1E682D83091E9C533
-839223A68B9D977C41107F597E05C3D8C1C3E79542A990B0E8E22F34BBDD8E47
-B6C2CAF54B72E8F0E8A41DB343934FD2C33B6D77AF2E9061C4E76BF258CFD615
-30AEAECE9D04569D358541C346C922A01D017BCE85D4F083AA9B6939D85EEF29
-335D1BDCC9E6D5F7F58EC2BA2D8CE50CCB38AE6A2DE2F695B76831F8F591BEC4
-EC6391563D18E4169151F552B5E1601B1DDA6F93E5C8B5F4FE63F5E002AA3C15
-E0C8DE2C735EE00E9A2A01530FF37B7FEB0FB182A4E381CF1BBC80D743209814
-F99002980CEBCBE3E677005766CE1D0AF4DCC9F103499D1961771FFBF01B833F
-1701EF6EB1A381A287F73E519C01084241335905661B2E8B86B398C88F39BBC5
-09FACC1344E15CC7685708BCB3F43EAD4E24A84AA0687FCE0A2178D9BA84EBB9
-68E8A727DAF9A0B28A7CA3B119798603F9BBC6728C5A6B4BFC84C95DC4F36839
-C2649E364CEA39A4EDBBA4C0E27C61648D38CA46B64E8CE797CA3464C80214EE
-28A1E58B387AE0A663A39F04F57899ED62FB0E542EA108AC32490B4B2BC068F6
-2087BE9C9C3CBFDD80F2E632BC4C971A79A0A3C3A5607B997223A9F6373EE51F
-C58EBEE7756A391C91758A1F6567F532A5EB762A2927F57CF9F0E845E4F66B3D
-8100D1795B706FD32944CEF24A054650EC911A54A22F4F35E3034AC70F07C98B
-8DD43BE9F7D68C50D6449791F5331A189706D9CD18417348B9F296D8D01368E3
-2523FCC0EF33B998FE925B4CC7BE329B32D6AF791BFFACB60E4874412C8C8676
-34914A453A592C7614AEE5001DF3E5E8D9335A155C65174B940E1AE61ACBCBD8
-A41D7E1C6FC0680E094ECF65C60CE714E6EB2A1897D8A3F39FF58D64EF7E9A41
-4CD8E55BE32CE8CA29239A9BE3FD6B1DD5CA5A035AB1FE57CAFACB8A39B6A877
-C853BE6BAAEF5714982FBFA414EC128B61326B60D83076E690FDCBE3D2AD256B
-FA7A15B804402826684AAD933E94853CD0CDEA3CCA7DC833E486F431EC4764DB
-F3FB244DB99FA0CA2FA14DFA75A326385B3AF92AF8E4C6D437DC3DCC07FAF25B
-6C0F270333ED377B08E498BC3004C25C7A991DAC9A3E0D1FC43E2EB6996C7269
-7A864CEF35FE312DD8F87E37AC69490299CEF9B059EC7E7492D1D6E5640E0AC6
-35B97F7A629B6B7CDF3BF86D2B518EA807B03E4F79DEA59C84D98E4C94102EE3
-71A29649ED75F5ED02EFEED8064E2D54E8F9CA0C4284B987B81B7F41FD7DCAC4
-FB9C3ED70774F9FD09F3321CE1D0319C1129F5868DABBD183045984748C8A3E4
-53E085818729A1353B13C78E63E837DE483E9E2ABFDAD16534420BE4D7976D35
-F56B86EEB90F663E9778A6E0CD698E6324EC2D19901972B74EDAB8F4073E4F37
-89082F08735E8345BA167B2B76C77703C586CA5DAF41C0DD0E231184DECD8A9C
-DE8FD239B6CC636507A5BE6EE5283C06A1D8D59E98A31AA76F4D358DBC641DE2
-ECE3D9F2D262FE2E878E909A950A7642A3F59995519D541B96D459F24F12682A
-9AE61FC08CF436D9DF060DAAA90884A1281B370A2F824704B5347FEC65E14E7E
-3D212E29723427BBB12C1CB91B28CA47D6FA8259A875EDAE4B49C33B2F73938A
-784C1E7A7F21873CAD55A868A1451B070A3F259A983293289B131E07C903D7A6
-3CC66CEF8C4D2B6736282896A2683EEB944B67240CAC5FBD8A1392A875245A9E
-2611B511909A041846063E465473D41958104E92519C0F86706AD640FC6CEA10
-620C9718C4589D9D562D8810CF6F461B776D5A1B040F8272D43C029C2A695D2E
-86CF508C4AB11104E575E13C2EF56914E241279BE0558CD3D59D25BF13CE8212
-3D7AD1F25FA5A9155AA06306C7CD0F49E3498856318B0ADF279731E1769839EF
-98657EE73CF07B0585EECB67F5FF609E0E3DA1B78F6A8FBE2F2E0C051237AB4B
-1587DD72BBFD962E865EAE0CAF1A5C592F5019C7533BAF297C0F78F3287838D6
-CEBFC8B5969486A5134DA76B4961C8056E1EF1F2AD17F19D7998175D66B3149A
-2CF21CCABA281EA0345EF50C1EBE7004ED495C6D03963B639A66638A43C049C6
-DCD311B5F86EBC814BE42D432EEC87B861FCBA9C8729FA5AE87E20C5B30B8E5A
-BB41189A42B9853CA408BA01A559CAB722AAC3DA28E70AD79E1BBC8B6FCC937C
-180B5C2E20B03D3FBAC60C83F765CDCDB3146FE5C0B02911F6E120D63EDFB0B0
-86CCF83C2AB62922450206D3701588B54A8B232126BE120432E6BB2E25C50B13
-708D742A44E20176C54FF89F4589B10D5396C94625AEA1914AC168899FE7AE9A
-7D90DA67A5EF3DDA25CCBB18DBAC3AF4AB889528A381542185821B96CCFB4302
-987611DD5B5B8514FDD7F5148D1BAC9C34567F75EDAB317E0B8A7A76604A42F3
-1D46332C4791006DD1AB657308CDBBC7314592707EB163326E345C2C5EA05B33
-01FEA5B7A346E6B1B6EF58B692150C6116B149B6A26B493674337A9C1CB4F42B
-A7A80AC587F9BBD7A487F407EBBF9978840A01B5E7E772DF7EF28481E7AD14F2
-424816AAA958320A0E6F318C757A474F7B05AC0F570094372CDE877B479AE3F4
-90C257A2B3F443DE43D8A58594BE8D4B5C7E5E075ACFB1AFAD4C06415266E168
-FB38C1CA256287953EDAB1D40537A3633CB52FECF3D35BEB8C2C6CBEECB54BBA
-CD6E043EEF68A21D7639FAB8D1006B1119CF92350D9773502F7554B4B3036EA3
-D747596506FC674DC01ADEA9B45ADC43B9E6947235E9BA30FF462252038D91D1
-D908E9132A946FD03B86A08885AC44CEE72F0E27AA63A901F2DCCB86D87702D9
-A66F35F06D6640115B075B0260FB116E24E795E24DAE988CD48A95FFD3116E92
-63D02221D272531186E2AAB74496FB78A4064C9C9772608C49D46E40FE28088E
-B5109171E7AF69599BD8BC1186C196EB11FB4132F5C9FC1395220392E17B66E2
-32215E54E9483196341D6DC691FCCEFBD00DFF4C095FA8AB36A374BD5E1F5082
-730A698AAB7B57A5399196ABCF7B7963E2970CCAC5E9A5EC552CDBE1E2EE1968
-B81CF5BDDFF9D385C9C1FFD726A0C52A4CB0C8121E77AEA16157C1EDCD1AEFF5
-5607E8F5C44072DC54332B95AF28417E2D45B4685F270821EB6C455AC147F938
-50CC9F7F2006D933D0664AADBF5D7E3E6DAD57527AB59DDD13BCA392B059FAD2
-E7833AD00F62EB89CD7BECA9DD479F7CD7C981859EF43CBB1EC1681081B58A39
-2CEC9FEC039082771E1BF48968431F72817C8156D0D6B65DD33D472BCC49496D
-1F5FB1796892C6A45BCC65BECF41D8604B811824739647D87A7B28FDB3574478
-9807DA2557F411E0BA7479F31B9E3BBE6F3CAAA653883A9D2BEF2073F47F057A
-CFD20BE1371F17F5B6F0A9520F2EFCC3C04A24EC272C43E1F587ACDAFEAD7076
-6139D04FD9A50F67301D7765109C76D6270D2DECC94017A877EF386AC7F625C0
-ABCA9A6D15D71AF7A5889403DDB83EDE87EF5A69EEA97995CC1601160B296750
-32AD8D65A456F5471AD4536F1AF41A4D370203F897686CAE7C89577D3A843E90
-9C08CF3E3D489625256DA5E0984BF971E0D8D251AE5B09C17883CE07750051DF
-770B920AABB2E80A4944EF613891B4EC3F9E214339AEDFDD5DD15240933DC82C
-D878BCB743ACBB562A41BBD86191E1129718826681FD12981D4159C7432DC3D9
-AD4C6C478EEEA0A34030BDD0B9122E8AE5F0B473AC5A48346D56C2DE42815D19
-FE378D252960D3F56654B31C58CBBBE0D634FF6EB81295809AF12222C58345C0
-4595590CFBE4FD924113743D5E41F80796B2C5CA077D8042C15732ADBEB4AB2C
-772E80E7C490AA9104DFEA7D363CCEE8BDE3644BC9E155CC433060C749151A6E
-25E7A787826AB0187BBC8C1DEDC1B91AE502256231B376E2B3FCE63EA61889A9
-FDDAC13FEAF57217EC230CCA301F89A1016CD5766B4BF11115560CE3287119DF
-E0FE2FFE4CFA7B41DBCCE9E48F09AD1C3DC43E4C2E379C5976ADA0586431588D
-2E7915BC1DDCDBC1B006CFE5A032B95CA40F19FE0EEEA857328A3AA1BE8F7AB1
-DBB2FCA49033F72FCE87D63F2ECDC3699035DE6025433AF9B61C3966A802421F
-AE89795551B076A423CD9CF1EFD9C37B5AFEB19F225BB34C1B676592FEC36ADB
-F38FF8E7B60DC1EC13C508DE4AE8DFA21E23DB7E05FECB7CBC4A049B275EEEC2
-216280187059B0BB02205C95B68BE31E7900FF1ECD9957FA350664D60210C5FE
-37C3D31984ECA3C3F58CE6C2968946BB397F1A66D68048F44664D1AC519E4DC9
-72F44474CB35738074BCB9FEE4077CC0C4993403300CB5AB595D7C58123CE01E
-1590A3015450F98C6027C4256A7CECA22D415FC62F2370D53C1380FAA37C2B30
-C76426D68344541E7A392ECA7D9932DEFFC819E8A7270A8D6E9F9D387B54FF11
-F7B3620B4AAD325929957F3B4855EE8C9C981CE3AEF12DDF571ABDB6A97838C3
-035D741867F10DE07A619D424C8050CD4CFB102466D7670D819102A7607FDD86
-52EC98C400357306DE513BAF898A8A7B59B8CA44A0E9D31BC613D8DBC8B16C10
-BDDBF045A0FB4CF91958BD031657521A06A807263E359FDFFC253949C2F28966
-45CCE1C5137D6E02761006E4D4475CE68EEA1EB651AF2D23CEE47765548A15F4
-46E87ED99371D49C62AE5224972FC9193657B0A019DA3AF8F6E1CE4409CCD433
-9FE54CE6CFFC0481A95886CB7EC7AB42BFA0EEFE3AADFEE0D5D670C0062B8345
-715F2DAAD5FAE2B01D111F60B800B5DA78D90275D261E8A5A7A7A3F71ADB2C54
-242BBD4640B2D5EBE2EF88172CEFAC1D8B65E0C3707A48B6F6C839917CA863E0
-8964BDB42CE83E4546F035A22C10DDAE7A3F5FDF40513098BB706A060474B29A
-D5D70732DC8687CEE6F1801B75BF659DF7C1EBEC3B6FDE36F921F878DEB5BC08
-259A8BFD606388A93DAB6E33E1D5143518342C963DF7EC57089EE898A83933A4
-E81534B514878897B346E78E04EB8D73D320155CA85FAF0B9BE13C65FB57B095
-73E441ABF28A4150FDCF3265AB56B9EDAD4D1D746406D383E9293FC5DA0FC5C2
-7223FED0E59F55142A4C21689C1CADE658A3B8F2C50470CA5DD1730E58229D24
-D228759008ADB7842DEE05E1E7574A21FF75E4251508B94C0C79CD095157A1AB
-E266F49847F117E5945973159A5DD5BAAC8D21FCFA6116D267B3D5162A7CB9D5
-0295C6567714C3CFFD0EDB38BFDFE0AA5D0A3779E48F8E02455F8248FC3D0CE4
-91D9A096BD8762546A2B1D032E23B3C2FB9C77998A989C16915E134AAB525048
-F979D733464302A7260882C001C01C297F32D4906931D54E135A5B85C87C8EFF
-5F0B4D5B5D4CEA1ABB9B0608470DB818B743CA0ED4266F203877F8DB98446550
-6D3303EB8EFBCEB8A0D73AF1D83A2916A037C365B5C318C99DA6C07E58EA1F4A
-CDC6A9DACAA044E57C142B9EABB4B007676E52A47EE953FE22B755022FBC9E83
-D647C1BAE21A3A2D7BD345F390ABB30F02498A011BCF16DFF4FF511B51A512C4
-10DF5E1EC4601A2A90B4592A3E296D654C379A4AEF48B4201A52BA75EDFF1F52
-69B7F27A9F32A85B6C4BF898624289B8F2534FDE675D6DED4FDCCCCFEA32C6A2
-F540FE140CBBC841F7214F0B05CFCE8E863A9AB484C68F70E3FD4561F9AD5B24
-2848EC5FB02AC6CA1B4C7E23972E848221FA01141A8DD362623F406E484BFAC1
-4364ABC2637902EE56047353F478CD7279AC2C98B4FFFE4E02981E9E9A205692
-2C6E36D84426AFB576BCBDF99367E142BA620CA1EFB50E2C4E069579AA510D75
-689C2F3F1EB610E63185386062679EFAD8933C6E3CAB529DA312BC743DB2A757
-4D75FFC152E6629F7119197DB5D2B823C07B3AE59D267BDDFEA6EDC9F3B4EF85
-52BB5FC2EEBE3D368041D4F36FBE8801306FE06E44390292C2C197BF0521CADD
-A7011E44B25280E016E82F3A2757AC7493E4EBA0C5C4DC6EF918D19351EFC2BD
-46CEF0534B61AF6AD97805E4849D4513C7658A9C3228638627DD3B2AF9E55502
-75F0D04318D27162F46E0EDA7C75E4DD69B762BEC898046D0FBA98DBA4A742B4
-993D2C4991223E73F68BCDE57F0505B24756CB6CC0DE2043F10D2D31738C64D8
-59B2FA7A4B0A7E7D1DA3C64540EF9A3CFB0EA04AE570ED5AE513B583528E3DE2
-3CA68D11F2559A89724CEEE92AE335CA9BC02E99320C729558C1E0758614CCFD
-91944DAD4725C27A6527562EED2D721D0F62284603C8007EAB0B7DB2F81B862D
-BD64BF70ED2C5C60366A64C06C754D36E6953D22BCE8534309A5AFBD5B3AFFB7
-466AA27307175D288DA1003B76774503C37809486F0420507C6FA19F88105B97
-C7062D890521E2B239C32E9ADE024FB89DB30BB386D57F3BBF71C97FA671EB72
-F2CF384E95CD4D6DEEA9B63B1356FD16C242300994DA88A2E042AF0A19725A15
-17A787F157498E33759B16E615C3D975574708617D13A3A3E2F1EBBFB296CF39
-D2F41E74E37768AF7C633DDAE653907FDAEAA651FA21407F87C616D3D0493731
-19A4F1D7FE8275C8C341A2956CE94954BF64264C50F926F6DF6AF8C51DB275E7
-694928CBC3C8D3E1144E3CD69B9E0ADDF7FB20092DAABB5E290DAD972861CBF3
-9E06524772123916C96FA85EBC4137492CDF663642D2F3A80555EBF1B0EDC307
-7C13B356C37CB03E2B4C8935081F2FD9ABF472EFDEA38819A2C94167583DFCD1
-98E3100EC39E3C286568E591983919C283CA1865C0D8388739CE211E21D0649D
-FC47B624A7BA25231800CA424AEE583358B15ADA17F52681C14DE6896B22A342
-ECB54FCA563FAED18553B1941937AF56B849B463A772447F6CA8C816C3091074
-FC8E4984297C93BCAEA8108A2649D2F79B87B10EFC2E6FC7AC69BDC9F94F11BB
-FE6AC6BECD3A742E6EE0636BCC2126F893C94D807AE432AAC19060F467484CFC
-DB15FA34A36EA205A61248B662D120108F0600EF49DBBE57B51A3879547D402B
-ED5384547BA749AB2B2B80F92A8661CE6E429D28EC607768B320A8A7B3ED58F1
-AADDA58E402D06A10C0F4AF9806457F0C96FB8B424BBA110E18C9C7A5E4534DD
-AC26B79EC41C5D297E4ECE9D5E22CE23BBF9EF361AD1675944BB57F3BE52A3BB
-58766C67BEC0BD57F075707EC0C40032D233499EF6B23D7299C867F1AF2F7B10
-FFC59D47D3EE3FB60C3B2C224274D223C4A569DF67FE142DE354E5DEDAE13281
-F8A4E0DEFDBAA45AF8EEA732042022FB4470FDD9B6D70759D406F74CDC424412
-0B7FF0E545202099B7010BF07EEB311783E9B39FD70FFC74E0C006ACBC478FB7
-2B4959C6D408FA0BFEC8097A0492DD3A528AAF3880CB55E31A7E62BC27845301
-470C9378FDA041C2B87AA5729167F829BD15214606047354A27C915FBED0B88C
-E6B024FADE20C8C05BB78356A70579638C28F67BC72046643DEA9944549F4597
-B0BB67BA65C17601E0DB4F142478C5C89D82A010893EF5D46982F7E863073B6B
-B6994D9893474B1FBD86E0019F5AC3E7EF7566232A6E519AE0380CF530AAF3DB
-F1ACE534972609BE49B18CD3BBDAC78872EEBCBD5157C1A1A2CA627CFABA5289
-DC212E6A61AB1079F62319B37962677CD5EE4A779B3AA89BE4AF22FC5D342B19
-BCE3C1599A0E1898AA688F55235D3E157D14C28066E240420269367A930850AA
-DA9B63AB86C724F350A9C78F3C7B150C1EAEBF50384351A1EFF526B6A600F9C0
-5CABB4C2F5AE83436E8FDA7FF9F025F537BFBE6728C0C54CF27E0546845F454D
-477B1ED3E9A71519F90939F26A4026255B24B0619D58F825E319F041FC39DB9A
-EE777AA881217E10E412CB0ECA074AA05C4F69D2BC1B3DCE01777650DBFADF38
-237BA37FCB02721E1598BE909A1C628583ABD51BFF97531114EADCAEF937850C
-A37489C1CAC5E4AAF130610F9FD94F110E969E0CB905CF77BEA7B9EEC9E6B2A9
-F28761F29435C7425B92D0B2B1DA1FB9A7041465E40F43386A572E455E497502
-8F0C0F623FD578D0632D10E282AD7909B5A21E26E83AAF3111060E0BDA07E38B
-348A165E18C76E1BDACCBF4C3C18EDADE92E42B933CE9698D573A51C1087664C
-55016C2059F8DAE8266DE279088AD6B794D3E727590DA0FBD0CCBA3AA33A3833
-017615E0A2948DB301B108B98EB41FA49C61A94936D46506C467CE877E8AE2DF
-61E8769489229CEDF42E36CCB9CC6C097CDE11A7FB21F10E0EAEA279281911B2
-F5F3E9CC96459D87E5DE270B6A00A4A685DC3F3E98D51EDE8826B4C008E29E16
-8D1360827A85487004E771F8B3DBF6BBACFCC966652DEF4F7137B6299535CDA4
-7366BA15371CDDCED8C9BD881A58A84DE16C3CC2D0992281003E37F0B9FDBB06
-7A8FC4226F5E92CC56651A47301CCAA60B98F8DAFAE7A94E1D6EB853FBD61ADB
-22A0C6EBED361F20E87137EB25A2985F8E8276D89F3B7E3D9BD6F7EB94887AAE
-B4B55B558C004C5D7CFE94F9C17A26DC9414EE0FF1249CA824C3FBBCEF10816C
-6307A399FC55CC05714F170AC2B458B9A7D7E5A1C7187F7D3A5398603FD8378F
-1C702E6CE2811A4B6C1C9DC712312D9E862DF41F9D20E731F55CDB69FC0E8BCA
-A2CB82E2B043905EDB5D7B33800F20C79C5D90A031BE9BACBD5CA163FEF00075
-D6A9E490728758FD6964A37D92C91A2A2B9132C8E4F8C6F795096A52275C67A1
-FF95461B82E7B97A8503254652ABE96BD6CD0D7D2DCD3B5A62E199A3CBE14B3E
-BDAC9F65CF6C454182521CF9C3178F39D39A8CEF07C5E5011062052BD425C780
-5A5E83B9C850E8E701270EB8043A76CCB96735C718001F2AFEAB235F5A34A3B2
-88D69DE1E74FE7D7C9328483651176941650E86EDF51E032C18FE3D79AECF3CA
-910E26E3DBD5F8540EE2C2C2F835D561C59B4EEC9BB764E6D4637EE3BD15390C
-39F95EEE8DDC34CAC5E920D8F3E5808B6BB91D0C41490F7201D0E1DFEE2D6CD4
-E94672987CEEB86EF1B3231E81DA75348CDA23CE433C72327794864DE9E1C226
-14CEE941C0573755544B0FF1B2CA1B80ACF728B255B8749529D5CDC9908AC8F7
-3284E933134681FD8AD59DC809AF3299924391F903BDDA63E53DDA28878747B4
-54DC55AB8136C153E4D3629A8EB1E589C7440EAE979FA5828DB8CA5B639638D4
-B6E71771C516F1E05E17C6B96AA7B12D1F77347C2A79958CD8200AE89709A82F
-A8B2E593D8511BD72ED530C996727B47211CF6FF6FBCC443D87C0AF116E323AC
-4D7CEF6E18205542D19337D281CD8ADF6D780A090A7F6D3832DD5527498AA870
-5A4294F64AE946EFC6FD9645D48E17F453900E7F4C051B1A9F148A9BA3B02D10
-1802BDBAD55A1E583D3905093193BE70459843DE436CDD418D1CA5D0968AED21
-9E3F7EFC4807733E190B88D990ED05D36B06CF9589A22B6278C94889E6E96324
-F485DC35630FA10754AEA3B289B4C6E19F77216EA73EF03626CC1CAC5EC067CC
-2E7FF675DAB054045385ABF74E78DF085CF730D9DAACBD2F37D3465FD2F4FFD5
-6B0137E543A3C361ACE971369A5155023FDFA0B5657EF8078EAF68D934D13036
-5C08496931B9546E474E86DC9C55D0B53EB83CD1BEB92D17FD826F1BE2E9618A
-AC90E7145752F8026C5C85FFF1C0B537B16C389B678E80E9CB358DFC3BE8AA21
-C449012BE9A3A532134CD1D17CF5217D7AB57DC74A00667981E711F89274C7CF
-1B561BC6D0B92B3910FE47E883F4BA950C01AB016DDE90A53562E1B9441575F4
-BDDFAE727CF4F36C65AECEB41C3DC87CE636427828AA628B709D01C414EE95D9
-F40303E93B7E9E513D23B9AAAACEB9754D962497527B4FFAE06D4F4A3CAE42E1
-5C95B67500C514B4C2C8A5512C0E18EADF9CA239D479BDD42AA72CB7C40C1E7C
-FC1A9DF55470D0D01B485946A4B0BDB6C8D3768287EA873E082009116B9628FD
-4E352E5ECCFE886EB2F8EED008C5557698DC9269584F18B260551F38F222C702
-AF14E1B0BEDDD76C7FF90BDE98CB15B4BA82CEEE76A0C87B09A897D9E614A1F8
-33DDE6FF5F654D758C1426361D0484F7C7DB20563B4C3889E063D782A19C725C
-FC6553AD7AB1FFA59FA4100A26739564B3FECE9E0E5C1EA8186C31C312195F7F
-2C63E2D434CECB5ADC2480D3F2B50DC71F6CA7FC11C09B6A40EE5152D54F1D7F
-4DDB547FABABF1C580A6C361C903C2C8D337F073ED9C5D3FCEB6784808C4D97C
-59EBB90E5010DE31C25E0704664436E531CB611C63792A4962799277F7333BEB
-50499207A6BF2E60DB75D0334BC9A384B9F15794DD715A56537CDFABC9C5FB91
-92B77855EF14EDE4A6C1A5F298C5DFBFA60CB51B1E233869652D43866C9256CB
-84A1C4DBF2811D2A9CB7ADFAE9BAF9B14A65FDF30CC4CB432777E45D10CE1B39
-6777F9AE585488FC672A7EAEF9049F995D4BDA0BEEACAF86251B7ECF1EAC09E9
-D15436B24DC33B67600804079D2AE2DFFAB2241F650C48908AFD53DB404BC305
-E745040387C9C9BBEF64CC0F9F98C7E5D87F3AF2589B13A2EDD39F1DA43EEE73
-5872E7397935771864EFF56E17F139C9A3A8A50D9E40407A84D627D783EC3A3B
-00B511E77FC868D4D7F7748CC2A5E9906D71BDE724AD589C8BD48ED915735DE1
-782C4AB753F97AEA17F18F1457039CE889F3D011F2F41906F0CE8AA1F4634152
-B135FFBF1204DD8758C1C8F4DB9F6B1444BF368D258FD2A13ADF33B7267B1A69
-87B884A724927313EBDEE3C35A0599B5756EBAB993F144A614914E0895AFD9D0
-1AD72A028136888C8249340722D36DC31EDA10D25423E79E058EFC856BE0F119
-784007555861BF1CA5462A9AAFBB1B379969247118582429905345D8574A4922
-9F69A1E380E86DCE8F2281EF533D8F804E229FD9ADAB5E73C140531936EDF13B
-A36D9FDEF6717F79386A096FAC9E14F2BC0CA28C212CE568E77141FC40D04E9A
-B65553DC4A82339C09D1122D52EB5A7FA6554E2E84E15DBCC12FE9D93BB180F2
-A3EF784B71F7A308F63E24878137E6FB22625399B82C3C3F892E782481A4162D
-C2D7485A4768156A477AF231C3F8FD2C89808FD551F862EB6E91680B83CFFFAE
-9D20924E34E81362BA1593D1AA985394AAD294682B8FF65D3F5929E1347E6088
-91824C22547083E45BD9D756B711B3124341EC5CFEFA12A74233C6C308E4C6AF
-75512E747AAE23CA03BCBCFC36A6CEA202A585BCCA1C1637A806DDF386F5A268
-8B88D080DC3223BDB2A8F3C05E43939239C69EA2AA4B4EA35665069B94CFE576
-B5AA701E8A51FE4F62FFFF40360F991C47455E5D14B4C3A39B98103089561C69
-0363097DB48C20DAFA8C3F2F60A26B2DED178FF25F1DC00C566A3CC3FD558A1D
-244D65771D628D3FF25ADC44F1D5D4F3A86669F7A17F4B90F8BBC0120CEF0DD3
-F7D5FFE1DBC91D624FEB513941E7C20440AB54137D30138AF7F773339A34286C
-AAF189E54D8FF02895628FE9E0FEA40845D65BA4937FD212F34E75FD2FEE2A64
-0DAAB81AEB62CB6D6D73172800D043C08EC09E74B4BA3C7977E8C52CE03657A6
-628F0BE431EC380AB018F39DB3F81BF141326ED98D7535F68F61BC954F146BAC
-357DB81C114A35ECCF579E9617C45AFE3BAD2543D00B6D441BBACB47F780F4B8
-BC1158C3FEB62BB7B5EC101BBD895FFB8EC87BFAA9E4F6717C085A54F22A8AD7
-0535DC2EA55F547A6CFD4EF6255BE09CA4BDA58A7D75AD18A05C66428B09E42C
-B025D5FB9D1D2430B2909280E4362624E11D878EEDE0858A917EFE46A6FBA1C0
-BAE832ABFD8E62858FC5376E6F13E4019DE71E9F19CBCBB90AF578784FB1E171
-CDEF1D190E29D43977E04D92200E681FA3493622F42E7DE5443EB5638D03CD7B
-CBCD4244CF68197F3E92667543D1C31BB53FED32984E7488BE71BEB6EC70152C
-6681B8B539F75AACAEDF6D7632947C4AB3AF8792D09C4D03189EFDDD4CF6864A
-9F1E286D2FFA1F7A194D9F04273EF70DB0BE3D71EE6BB15D48DD29C3707A94F0
-615065E5525B06CB383A555AD5BDA2A56170B8908B2DE540DB21AEE786E5C072
-E294646B80B369F0CF43C82D942C1B16248D20A8F334E520FCE67A08331975B4
-7991159145D2A2B1FADF20B893E5909725307CB8ED86C0F19684271F041E2B0C
-559DD57C32BFD2840D5BC3A54B394A14E6CE61CBD4FC95D15B063A436D387640
-80561B52B040E5A03780BC7942E151315402E27640BEE4003CCBB8AA23513BFF
-4DE66F78E87A9028F11B29F50D781C7C00DE3A78251BC17CA556C548B12869C7
-1B11B53B57639BB1F2F2D026EA356D90FA132FD6D5D7B47E64F6881FDCC0ADD9
-62CCE61F21899978E9F1CF35BC758E82416ABA4D22E0F218955AB800F2C9F398
-6F38794D3FEBE4A274E90E1671580AE699D953B7976C1EA5C444FEB22480D31E
-1FC858AA8B7086C3FBAA1AD369670B26F8BF20E3670838846C1C5F6D8D5A867D
-1867399A0F632111EECBF22D194352A7A871EED3743493F5E2E0619C337212BC
-8011CD9F53FDDD983A60C432C2A89BBEA635EA9015FAC81E19A5481A1CA8B304
-2A41241A15698C8633D3A09FFD9E90063B519625306E3C8D87CAE881D60BA9D1
-472F29B5A64F1FDE01F4AC1E7C66F98FFF4C5A60CCF5DDFD4CB34CC3C80AC3E6
-8C18C27A23831E2A13D03E02B0C1625EC7D50234AC293494FE649FBDE639B929
-7FDB812CB0559655ABB971DAB8283FC8773E14CE8F66E420F88E624F818C4890
-3CD81F0736E388CE265FC8044380D3F09ED00097354ABA63C19E1BAEB6B88BA3
-132FFC2216D2E7734C8DA599A77FDE5222239B588C366E9B5EEB41D768DE6A26
-85031BA119EFBDBB8E9731750F9443289D81D416EC3874534612068C8897D2CC
-8A40B5B45806A55891F5521B5CE3F6426FBC3A7F611D96CF5B9DCDEAD626D6CF
-A667DC656AA52AF6CE7E94A4491A0C90B135F2FF39551C5702B9EE1B0E6BF62A
-0D5E517041DDA8EFCF177DB783A21D5A71C0D7456EBC881990649E60D6A2196E
-F343A26CD8E45CE2A568F016F2F03ABAE1ABC2456DFFAE4C1D887CBA1B3A9D3F
-94C82A96520B00329AAE54C97FC73902E6E17C990AE40BD3EA6857DD73EDECEF
-20A6B5455278D2DA8F21475252EC711098052334487EB3AF6A869C33EFD4C1FC
-8AE1B007C65B85EA5ECC3BD65B3A9399B212101188A6A614835E9227D430D338
-554AA84C03C9B85A7E5341045CA23BD0B0D7532534823F4AFBB614B17EB464A0
-2B3A455F81E6027A59D6FA0607162C55B22F3EB61F97BC4AB22F116B9372C644
-C9D75BBAA2CFE6EF1AB50E060D34D0CD11D9B685FF630A411A68999666EAAD72
-99B8EBC0257956B667A2AD128DE0A6D4D4AD5117849C48A7943300DF24EE9052
-C562F154C852B47753F4B5DB65955C7D5746647101FBD60FDAC3C097231478AE
-E33E351DA8F6423E07AABAAB37920219CF84D4BD3522826B72299A13FFFD6DED
-A4861DE9EC91BCD21113DBEB608CDA949A569C62134211DF3BFD07BF229E316D
-E89887698EFDE6610205C3F6B4941260E7F33FDC3A4BB5E5A78B20C8C54E9686
-A61461C624C75E7FE0EC03AE1775CCDC710D8C364DCCF7CB3D019880FCD4F360
-A188176886517950AF12D2B1C58E593D66508A8159AEBD18BF77E16D1B038784
-91D34C10F244EAB789B5BDEAD9395F5055A19526BD945123B69090F6949FCC1C
-03BC62493EC2922B2E506CE1519DC3B2D7D258C0FFB5A9E8FE47336935E08FC9
-E07C1269C4C6DF82129555DA613E390068FB36EF832F149ED7B9AB3A0EFF1BBB
-E477DC79186BD9F0546DC9C338D045D7FCED73E934DA48633A25C0A807D3670C
-CCC9FD269B04E535CE51FD488E43483EC1E99E5788E1FC379EFDDB8A7BC9BE20
-66E5C166C30B4BFFD74BC72971A6FCBEE669C728B65F1A1CF1416B1E00D3819C
-93A5E922527C029D8920879D47C99E1D80E97A6162FA818FD706D21C1AC77949
-9CC8891A3E126D844F405F847A6FE178E70F2E80CD41B60B361AA64EC06BEAE8
-408017EE534E54274DEC0114B8CE3415D56CA486A637419662E5D5C2E69D0554
-7BCA587B50763B3353FFEB92F6A2E06F00E7347690440823BEC980C1C9024F1C
-DFA59C0C00DB00529D8BB33D57F7C548FC319751C7869AF1D8DFA8FFA2F6B738
-A4D3FAC19BD79BC7871D92A5DCA7B1045D1C7B521B0EEAAF5A01B71DF5347BD4
-FA65CB849F8CECD24313D4C1A036D6856A1F68FE7160A4AD210B5838006B77AD
-DC670731CA6604E980608B4DE3D53979B80AEEB6D55B8E687CF1A9CB17AD0B75
-D8A28AFC6F32E5446E28A51FDB5E1BB2F9D9E455FC1738DFB3CBF9CC582184D8
-5125D4162AF741FD9774768376B3DC0E0521B8B66C3D153F398384D1D3838A21
-F4ACCD9FB9997D164D52C601C98171F53D9FF060E753FDB8971C3A13B9F901C1
-BE0D7BAD4E8CA3CA4D6283B1810B44F36C666F099CC9E753C83482FEC833767C
-98A0B1C22FA129792FF63664CE25F9A19F1203CEBDA25D93063E6DD7B114992D
-488C0973E064A3B73B543DA18A5CB21831F8297E108A823AF715B71633572E89
-E6276EA7705E93CFBA6923737883A4A88B47938B55AB8BE8BF9FFCAA3AAC8B68
-918B73E6BF91E0394D9E08131D72AA0641E6D9069D3F5C6FA7F9B64CE689C715
-59D4222A7BC898621CBF398B60E2278F4D7A890C9FCF40E7E8AF253B7007AA0A
-27C76827D0946436FD9067417AAAA30106391936359B27247D82919B656F14A4
-E48C76858ADF2FD7E70C8591C1DF59A4BC13B3744BB3258069916EA6907B98C3
-1FBA69DC4A8ED8EBCAB916562C35164A23955A80F4C277A6C0F5C480CD92394A
-889BD05E6738D0CDF8E2229FC2701630BEEEDB5FE51C718F9DC34A5519FEBAB0
-EC9E7998511E7FE1BEC5870944274ECA86431664261EDD4C2A14C42C46234D1A
-B0243372A66BD1D0A95C6916830757542FB3E64280CF183FDD3531C7D0BF5337
-0FF5E32015CEAB12421234CDED340DCBDA086C50B43F893AAC98A2335A672D3D
-D75B54A072BB854840484A58AAC7ACCDC19A47229844FE6B21A20DC8F92597D5
-07D3D5BB0B305B07B8D87B021355E4FF5D6509246C93B239FF2904EACA85D1EF
-02982201D962A87F1F05BCAF0D29184D8A54D78744A9FA0FB9232F320FE09FB5
-794A1BD43A6E18EA8CB7D2A8636BC00BF30CA6CE7ADFE4AD0D6CB7E19FE9D100
-D27181B65793A1A4CACC6B085FA277618AB7386E7B3DAEC8AD02912586AEF900
-620049578C382A96150FC31586870963BAB9B0B277FD6A96A46946B0AD288C5F
-BDCBE50808C5BA02C0B29ECEE0D5A7189AA77AB6E6A8FEE1E0993F6CB1258698
-874A45A7AD6934357A1FA1E1B3B70E72BE6DC29AE6CBA3AC322A433A99045427
-0D84274D75B4B28B5D1AD1F5E2C619EF4CD53926DE8F530CB0E15F1FE58684C9
-390A7A6BA0CB904107517964687E21C71DE43EAD8C9D3B46A051FFD9EFB1CC95
-B163C1B800D232CDFD0E5B6B7E11D137095B7DD8839ABA56B0CA7498BF064E60
-49A943531EABD41DD99F1326BCE31BCD209A0B3FD079ADB84FF927B7376AFC5F
-374D1F66571E8C2CFEB58EA71FCB2D9399200CDE32BB7139524A3D98768BA53C
-A48317029E761EB09E52AA7A1AD43C5584993D0A306EEC9F3992C98AF6EE498B
-E4F7050A5210FB555E8F8BE83775F179B03471958DBA25D4ECCBDB31798BD6B5
-D5A3B7BB43338F127F0E2AE7DB2462BBD385319DA49F0A18A8D81BA429F119A4
-DAF166968B0CF97919985371B9CD67F163C27E35CD64D575B9F0431319A5562C
-7B154AF9D36CFBFD41623CB51D09118898AEDDD53D62DB4A119DE08B1FA62D1B
-F0A6651A4720D6E73B74A3F59E78FB12BDDDDC94AE471CE3C7C4F93FD985E381
-E64C2205F9D9391B421CC9A4CDAC48A6AC5FBFE3E3334FEAFAD43782F21F0026
-74196A84381F1651BF493621E1828D63304DF4158655C986E7A2A692E19ED6DA
-73ABA6D83319A59A57EA2554BABC54FABA06081E0A3C2639B3FA6772DF030395
-A505BD3008532C50D548F3EA9FA761D3821C9CF9A06D8AD4E4AE02DD5A6CC4BE
-709A92BACD0C3ADBD2C5AAB837994F7CE4F1348B2F930C2F48BFE55C353D53D9
-0EAF0664912E9F2A57203DC2D67428155C95319E42DC5B1C4E32AE8F81D070E4
-56A9D69122258BE1BDC882CF599A73CEDA05BAE2BDA38D589F052BD6E55832E3
-481B335FECEA92C3F8A42057B550DF72657274DA442A3E7CB6ECF6C0E3F92635
-0DB85B2A14B817DF5E4B27A9C6D3886C1DD02AC710F569E804D7CC20CBE94EA7
-47C7D2FBDA51FC1247869927E02893CE7037AA932375A1C85B9A2F88F7CFFC5F
-B78B9C36F330D779306D744CC11A4FDA5CC0065650F45E98F57731AA326CD514
-A6B271127D16770C538BD02D7D55AC0827FE470997F8040EF0CC8A689D7E2CEF
-F6684BB4B7366087FDF5D48EC7946E536D52D79B61343D28D0096F460495E776
-9A71C026A3FA2539C2789319CD048B7D01C6BF5379C901A89C0917EE95153164
-179CA826B74AF70B6950A8E41481CCE54B9B9C07014CF49774038EAE308B2997
-01BA1D4BC720F615D2879B19F3D7812BF5F999EEB1D6B1442C8470A1C6CA8DFC
-AA63A7175D13752E889108E58C3E8138DF8E862EC5B1132C80910F4DF83309BA
-0C923FAA52011AC210550FC8B09EE8BFEDB1BB91A3B1C2E685D9B0617827C74B
-D996DF5694686A2E9644B65A35C1C8EB98CB6FC03FC2A7A18ED3A4B41355A566
-EF37C9894B46AD6BBAA804B461FED30DE13E0FE3FF0DF65287933D9D45ADFAFF
-7B56B181F9098D7C3C477D114B8C43E1C5A2601B51AA6C36DAD1DE2BF127E1D7
-7286129299A31E2083710F04CCE8F9AA5086BD86B263C49E4DF0CD251958E51C
-18DF16ABF9A33E84F31DBA7A57F5179C29F05996837AB39289C84EE576D61C9F
-5E18DC31AF0FA201422DBE2F256DFFD8B4B6091D5E8A8F806CAC6E619F61782B
-5F464D78FD7248BD895EAFD9E6EA42F2E2E88E247E4FBC10C5C21F3C62622FF9
-5378AE61FCA78FDB1869109E6FF9293A1D125BC1A3F0FCD27D468C4752F628B6
-81AFCD7C0F5CB6EC8AC90C498EE70827799FCF83B7744479AE4902E50CCDA189
-2ED51349C6F8475AA9F9D48515A64FE1760B6B39CBBB45E953A94FFA852F66E1
-E2044A4431CCC7DC26583D912C278B3E7F5BC4BC231A45ED0B5D15BE626510B8
-E477B3B4B7E4AD8F6F972B38991FB433285EF50CB989C12ABAE33DC793CF073A
-B6E2A909BF45460CFE4A9DCDEDEBB28EC8BAB3277B75FA592647AD8881C2A727
-C606A159F2634968C56F5D9C33141AD2D845E71F9271927DE3DE6ADC91DFFDDF
-BA969F605891C096652C7CDB527442C4E9E990B3F8B9E88D20655D8E5059CD7F
-93C67BFF1ADEEA9B122B6EA493E0359BE88ECA30D88785FD16F0D929EF6B65DE
-65589AD4B7EA59D9C077DFCF89CF065C49BD9D34E627704AA14D89442BFD1EEA
-6A00FAC7E29A21B474097A4DB747AEF7AF456B3470F79E6D9767DC0985BDCA67
-FD6DBB81BCBF0DAFF8DA68D638DB685C863C88AFB36285BBA44CEAED2DA1708E
-A6546A6A74F90C3D89C663B6F4B6F628C248B042690B54307D2EF31B3AB88769
-8CAE9FAA4C66F280E4071F68D30124D2ACED938297BB298BC78D707E3FBE2783
-239E457953583C613986CBBEC28F005F28F8B5B8EDC3C0678EF6F6597C5CE524
-A35A2AEC08977CA8601097B04F4E9EF818B9A44E560EDD3CDA42290B62B0FBFD
-DE0D35E0C22C21C95717AD8DF0DD6F61764C307FAEB419EC142367986E872778
-3EBCC2F837BBCA67D6AD3083ACE67C862DFD1EB2747D3816CDBD3EA9D0967262
-47D83B6E02BFC7AF4FB890CD7F9D85E0C290575E6731986F6B008E8BF573D3F5
-8761FA4FB5322F8F59B49E59E81DFFF7698381CAE69AFCF869BE29700D9993BD
-B804ECF7C0758CFB18F4DA2EF46CD77D0D711E8785B41E268CC38188CA462682
-DF83880D05466BC2C26C60581F2314D409B46AF152A268FF66BE5DD1A9F693EA
-53915F1EF439F3605CB2507F9EBC885AE553C811568A193E5AA68B1241F23CBD
-0C9B1E3D0AA2E837988D65991AF88930AEB16056948ABCDEFDD25FCDB13F86C5
-217908A6601461AFC161C7E38E7EA93E24ECDAA78ED913155DBFE534BDC07ED9
-6C336949723834034040B7F913B344AAF84D72A99BD260F2F6971C5CF4BCDA9B
-D3742DE7620D686C1E0D34075214ACA375F724B235266F112C8B36C60C6F1418
-4F8C05C0A54E5E5CD46905BB6CD584BBBC11C0F6AECFB9FBD3596F3D9F7E3392
-6E115F4FBE3B476F56F25EA8A4623244950DE9DA05D7CB8FA192893519CABFC5
-B73664973A66A0C46628CF3D85366C852ABE0F8F9A00EC049629C0ABB62006D6
-3C7125FF4B63B8BEB0E34F8B6D490E57798EF6FA67E4FD60E3804429C365B3AE
-A0CE5AA1255449BAA9B1791257089F943F2DB2199BF71B92F3B7EC3B15DDB4E4
-5E2FF3A0A52360D286A4AB16BDFB287639E9FF890D0A717F3FBA12B447B05540
-291895B26A95F32E6B43442927838A6F04E94ED4C035647338B45684240D2C70
-474F1296B7C5CABE636BC10E9C2A17331769DD7C2FC4A0B6131E5E2449074724
-FD4F9E65313645E4CE8C5D2CBCFD24E861A88CC25F4600ACA780B2100425B0
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT12
-%!PS-AdobeFont-1.0: CMTT12 003.002
-%%Title: CMTT12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup
-/UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT12 def
-/FontBBox {-1 -234 524 695 }readonly def
-/UniqueID 5000833 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT12.) readonly def
-/FullName (CMTT12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 34 /quotedbl put
-dup 43 /plus put
-dup 50 /two put
-dup 60 /less put
-dup 92 /backslash put
-dup 94 /asciicircum put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 119 /w put
-dup 124 /bar put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0
-7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3
-A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3
-4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C
-A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251
-75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0
-9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507
-098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02
-ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581
-DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B
-5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2
-F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914
-2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4
-E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21
-C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23
-42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D
-4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068
-95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9
-830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3
-FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF
-F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19
-13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11
-6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE
-896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2
-91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492
-660D995DA9294C16BED1113CBCC18AFCB5968175EE2FB374B1AA261F22CD75F6
-6E7295A254FEFC41A66EA6833A6A4EE0E75EF6B6FAF292DC5D2AFB61D5203DB5
-4BAEAABAF39E9F98B45F22F2E37F337A7BA412807D539C91F3FD1AFB8E35446E
-DAB21346AF2FEF98F772992C5637092710177BA2E331993DF752B5FC6B2B7CA6
-66F6E1078F7B9F3446848D0B4D5FB3F33718D737A59B72D9A0132631B9F56CD1
-FF4DCE95CB6B8D3ED065F69EC61453CE5F7720300867F43A34FEB3BE8C2A69D6
-B0554B12A77A0838FD015394A70874B9B2CA8A78A514EED93425742D97CC8FF1
-34193406C6E877BA398627E7532C64769C8C8304B9B3F1F20A28658266BCD51D
-48678ACB02E38D4949627320CF16FC67F85CB99A69B333D205BDA5BC26334816
-4CD7B178154BC9123E35B3B8845D49794031A17F46261A9A70D287B31D5E287A
-9C06D580BB0AD85E1F0430E1F497796C92B7119C3F15B0D2168AC4AC23AF905F
-B4E05AE23B492FEEA94ECFDA6EB2A14BA0DD6F05533BBB163DD66E89F27F3054
-B3E1CC5EF5E56DC6CEACCA74F7B3D53D2F507802705472B9D4346CFA47EAE6F9
-2EB1917316F0F1CF47D19B1C741F78074381877358DC2831765AB51353FED4BC
-FE4CF59C41265FE1CC31B79B151316B70ED82B90BB765249CC768BEA49BFBCEE
-91699ECB7795D77DC69404B6857DE636A1F00F36694EFC6431138397CD280AFF
-BCB4CB5B3C72F359E08241BD7FA31E86663B8B55E0DCAAF15F0EA734C3AFE551
-A4E3049C0BCCE6E2C27093FECF6B6D7C9510D33094BF433E220FAE6A03C076BC
-CBBFB14B8274177E66DDCDD30B49F9975E09821134647F378561D03308C82515
-76C6486E33FBB79D67D773C5C025F6D17D37602FEB4122ECB12BB483B813ED1A
-49F64BD492FE1FED6201B6B5E0D6F40C3B4B8CDAA607F70CC4E75076BE591768
-0D21A8D3B2CD9F1F09F154005EC6792D97055B2EA2C24962F25797E6E582232E
-AB51813B2D5956AC1CDAC4CAAFBF1352633F604C28EC7B3CD8BE57F8FE52CDCC
-FFC37783A18D43CDB3A383FE18E1CF4A69EBA817E376E025BE3D390EA0869699
-716357B43495F3B2106FB9DE6C83FF6605C4B86B4526F908E7AB26FCD09A0430
-E8C6B77973824085029B59F22AE775D52A39A4F66AFDEFC3068A6110531A37F5
-5440E94C8261317EE70FE217CDA2B7F732A3D5BCAF255E911A5427C98B4B32C1
-7A42655C38516A80AA1231628FBB5F2A9A1871BCE1DBF8A2DFF7925D8743240E
-069FF51FE1C4B50556738A04CC68AE806633B62E14A2FED69B038D31159BF879
-35C264823E4DCE5C2749EEF3DFF694D52BC832A6F246BCEA5BAA9E92340F00A5
-007DB2D4C311DEF91EA4BE2CDFA7B36C3F9A067E0B3E3E88337190ABD1C1C285
-2799E21025B7EDCAC379160CF7F2188A920376DA60056B06671559AB1473EDE9
-F9C621CC846B433D0D25431B683C8C6C0965CA2A577AE7941BA4BA0D7A3DE0BC
-8A5811C1E45C42AE53025C48C53AEF603AA3FF1C3C4648463E0A6419D401E705
-3C02BEFA33135B9955E414218EEF94FB6397044F84EB90EEAE4662C341A53FA5
-FB998F2A7AE3770843EC1545BF0687E15C15338A9D8B15D4C1D9A4E7E0F2A31B
-781BC0B5657EB1EA6350ED58959E4529F64532F67F7B750EDFF4DA5645314DA7
-B7803DF00DF462B2A0002413AD0271A645145C1753A304326CABB2F4692D71CB
-D4DA333EC3590B5D4CB7225C20908BA0A9F713BF70A67AF4ABDCA0FFC850DD4B
-787FB271B0A7F743D61F540497490A6D436578D03E4534D1044A54E79A356706
-BE51A4585BE2B8706F2F356D30FBA1407367FF250659139B75D34492B689382A
-E4116DFF20ED8FA8FA8596884C32416749F881DA38783631096D7DF5E45C9004
-4E36AA59BB983C73017431EA1BC62CFABB7B7BDE132A356B307774E64CAC8C1B
-646A5B4E7525213A23EB7E568D1283A69BD089B1722ECEDB21728627B92168E1
-8844D4E9413808C2B5A29CF7B947CF9A3428762B7B2DEA442D37D49AD838435A
-87B4CB4C8FD71B0BC64CD4F41F318DF90A0D17EE9992CDE7B040DC74E5A7E783
-08BF322C5A833246432A10622EB533C3A2BB133552C72C33A43A8AE6450D2610
-6F38EACE8782B5B7C5E27FFB7CBD29476661DD066288459998EBC86746763074
-FD74DE26C0E71CA48E7ED8BB423B1E34340AD7C78714EF0054BFA4A562EA070A
-53F112B64979FA756D69FCA5C91FC37DD7AE4CD798A11FFD6B8C47F074F3A952
-56B5EAC35A0F9FEF8D156C02E87720BDD166DDA28110980B70B4FF1D75758AEE
-30EA729AF84ADB37EECF0D5C49DD12A381E8A347BCF7A7EACE905FA3650EF7B4
-D841D116A373EB39D843D20F60B7062A8391DA992EA0F1C30BC4F6F35D2DF90D
-83E196F0267ADA454D095984916FCB520F9B49868F501C126E27895F623D1493
-C8E1B71B5E6EE514DD7B0393BC3AA13298B31A6A8A033E57004C102B57FBCA66
-D8B3DF1408AF675ACDB7724B2D1C27271430C29834E3AEDDA8ACA4BCD9C607CB
-B7BF7282E0656615320163FE6538A09EA4975DC388D82D000F5A600FCAFA2F53
-1908E4147CD83E07862491EF49BE3842E2902EF213A594FB25E66BC7FDD84C20
-1F73CD1262C4B5BF194275D05A108597CED877EEC1DA7A10E50C41B757464973
-7941C4E7A646E28D505A7883BE1E6B9D65BFA6F5D223879695C7F3A2DEA10DB5
-175475EFB7B682ECBF8FEEE09CAAFD79B3DCC7A1E67519F7A7FDADB3884DCB7A
-E5A9D6BC571BC5CD7A62A0D04B2893C6139F66C1412A97282C5DF17E0951C939
-1143EEC5B7ED63B5083A4F25D21808279050DC85944CA487ED95860B9805CB72
-35AB199D969F907DDA55142EDC38606728FF07CE33B34C5C9479E525F303517A
-899C40F06627FA97C5605D3C7588EC714B55533109B727614EC9BFACE5296246
-799F214B3C693DF2FD6762EF68A685D94AFFD598F3C5BDA4BB16581A560D978F
-09D8A5F6B39549C51796D99C0B5309EEEFADBA68347B2790EF6DC37749D1480D
-135E32A012549E56AC6F96394AB5BFAA4BA3F79406BBB92DEF07CF57BCF36145
-CF4032CD9FCD2F432FB7B71A958E4A0399263B8BDDB016DFB2EEC7CBF9469E77
-9D2C99639FB4858BF89A70E6BD93DBC16DF0B63A2A171C82EECD747D428430E6
-56687748913D472CE8904D1D07276D98E32BCF35EA17888035AF19356584DF44
-3C66C94A71B8E019514F7FDC5780E755E230B41B7508E17C81A5199AC698AB46
-BAD7DEB8AA1A38D58865977FC1676A74741C49CA49B41911DA42FF361C434AC4
-0FAD582ED683D758E2C13A9D2E8DACB0C822A64334E98494A63038EE3F6F2A60
-7C0E99D47E891D5B42459EA3307B865176A3E0168D5E975535B06156B585725E
-1AF57AF04033168E925D243F863ABA4221B963BBD8D9EFA38579EF586DE10FFB
-AEEE5E4A0AB77751AB5F9D5F7E6892EF35C89B068830F4A0FF21DEDEC0A716A2
-D902DFE5C2996B76BF6B280FE4B1252A8F55C558665467E959D77515671BCA54
-F673DB3A0758FAEAA41C192CC88CD5E83790C6421D4F7DCE2BD4F9950EBC48ED
-FE3C57E28D27504FFFF0BE8E23EB90702A5E35ECE51E90EF09CB29DBBD82617C
-C0EB10838615173927C509C24D0AC24C70592F0BFB8FDE715969E30085B3B211
-D7ACBA45FA2E04F8F4E1911F39727B1EA62999B16EE6B5B4DA4B431B6C65EFE1
-3D546463D6B6E0B521A5BE77A7E1B883086813EA5F43CF3DCCD63826CE21163D
-BCC6D7914E4F77D062F6AAE9683E75DDF2BB6176B3802740EFDC7B8BE813F90A
-2B85E8360EEA93CF5B2CE279E4974ED63525F5A8E9FF93A21E4E19AD98003081
-6AAB6C2D02CF58C9218402CFE4A831FDF6C03B261EAB6ADCD0F31AD5EA5CC88B
-3AB216F2F8EC3DD723F53C296DE93A0D59E0AFF171506DDE15A67D190E0D7948
-FF64D07217607E25B11B66419AAF9982F161A1AEB8F43BA217E6E36D46EC6693
-435BDB3BF9E7D51216F6BC2AA80105C026E6D2339C5A7283E7184653A803C122
-9A85B380F5C8C0CE93F91EE554D6F07B9C7D4EA5CD77EEE2FC454AD11D035BFE
-119429F257C498949B069D60DB8CB49D8932AAE5B68CDBD8618279C0515E440B
-F8662267E340F8AE147ED88557B219D059D6ACB92C4EB526882927FADEFEBDB6
-E4078479C830B400262B1B6394E02DE23B311EA322A223EC6DC4091F8E3A3CF5
-4D85C0DA45D4BED61CDB7B54B4718936337C8AFF91D6D474BD69F8E4C23672CB
-45F8EBC78468437651F8C6AF73C92030CAD38931B9AA0C38CE7EC10C151A9ACD
-E95A16FF38EED64BF91A8FDFBBBDE9F4478AF4367D41CB0DAAC36B6949599709
-977D77C9133B1CDFBD84866D53449E9368FC6094C1497EE82172337FE28F8D63
-D4DA6602366DDB4C90F8E6E8FEB1113E96BC507DA67F00120F0E77BE3EEC9739
-723D5776920914C9A603D3AEACCCE1D0436E9A7A50143DAD10F0D236B9508E7B
-D1FF92424755D138519AAC663705EE96E371123D40717F43FDC37F0DCF749F4C
-13D0878281BF82258F8DAE3A807411EC4F8F856AA5D40EC8DCA78403E75079F5
-10C4700B3B953AFF8377112784FC50B373B0B0FE360495AB8726D454CC08BBDD
-96A4E314C71DDA4883C924672F9913C0AE2580C19EDA7E612F10E87E218BE770
-F2D145A375CD098B1F4131305DEDE025975AB578AF814B844A0191815DE686EA
-FAB4F2E82BD83F7EC0A7D80783B29C3E68FA5F2E93527A59E2734BE6DA6C87E4
-C03CA2A3F15543343BDE693D6CBD0B0493834E1425008B2690CF7AEF1FB9B6E7
-A3DC440F5377E7662851BF03B73953DDC206AE3DB3938F365A1912A75DC53DC7
-E39ED52337342413B6865160E457210A1D46BE10393889CEB66FDC3454EB68AD
-2831BE80DC9E9B0484B0D46F65169A0EF4608F09469F9E5BBA05C16E434CE184
-0C781BB0125F2B4693CC4473D4F6665349DA3715C6084F0A2A5B370BD2359991
-6FEF25BC18C144D1B7543AF2BF98CDF94B0C5C43A58BF8B6842507E3EECB67C5
-8161F19144B5BA46D60A2F61
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSY9
-%!PS-AdobeFont-1.0: CMSY9 003.002
-%%Title: CMSY9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSY9 known{/CMSY9 findfont dup/UniqueID known{dup
-/UniqueID get 5096650 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSY9 def
-/FontBBox {-29 -958 1146 777 }readonly def
-/UniqueID 5096650 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY9.) readonly def
-/FullName (CMSY9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A580F0834F28818EBF
-F29D3B2C7C9AFD969BA6D3B7429E222AF78F6DE00CE2C8008A5966422936DC5A
-DE549B458EB41026E123FE75E703E046F665B7DC78298A145548DEF8D579E008
-39279A5208EAF898A357DF3FD9CE4450811F20B454D86B2947BEBB11EABFC62B
-187B12458E022CDBAA6EDF4A89D79300F635D8CD973E35FA8D9B1240B3D30D72
-4F30444BDF0B51ABA15A181A3196A6CDF9CD1D38D64C83E745A767446641991E
-23EAE067609DC2E84B44D923CC98407812813D5AEF0EA21E560B31BD77D735BD
-E35EAA564A570DD3294C703E16BB9F251D54407269C8B23DEAD063018D6EB748
-4204A415AAC8384025FA922E7074FA7B8A6C31FD3761E7B2737D4D9C9992B7B6
-DBD0CFDBD87D42E1A451FC5C7EFAAEC65D10D278470DDF42DFABC836CF15D042
-6900E0DCDD36E7153BA186B8358E74F91A1D43D62EB0B821C0E97FE63F1586D0
-98F01E8F6B6F2A435343A25CDD80D3AEB42DC8E5AE02F8837B84EE5EB508B02B
-6980D2349984FE1A0D3ED12355D556BA483CA078B7921FB336EDAFC22AE05C1C
-5614F5025B890009272DA8C838B81913C872A54F7E932237FB1BC2CE5D64CD04
-2D320C8E2E610E9EE36EAC7C28C833F8A14048E751B61D0CEB342CBAAB34D104
-311B421B8CE4D903D2E2518BA8B734E2637E2CA55426C4A87EEBCE637F8D71F1
-54626C52083262A5A9A3B49142948BC1AC0B7698811AE81FC3D3B1C14E6C274E
-CFD6C480514F3649D7725A0A14C82C9D537B1C5A9ADC816340B8B4E484AF55AA
-905EA936A83FE2BE788D084469008F407447E0077417096333F163CE94CD3098
-4B9712EE23120829AE2695EA63975492DB2615214B11C87ED0ADB776ED4BA0B1
-40D09D1A617D4F57EE1A9B05C8D5F42AECB9C6AE67757DE6307B1A9C467123DA
-773239976AB0EA052B23F263031ACABEC9EEC7A43ACD0DC2D7AD66664FB0D937
-6A0F463A173E8B90B2596DD323D2350435D9D31B638112D70492F44769FC0C6B
-40A291FE78AA598CAFC19E5AD195BE7264F0EC29305D36C7AB8F2A733797D75D
-94C8F7AAFC49C13C108F514745A394F460294C6F3F44162BBFA878F773A5115F
-062E934253B786DA2B9A6E8E843E06B97075BE99F21B330D6684998C5C340B72
-09D69B655097354CB682D42120ABF5109E5522ABEC94D05E7211DACE8737A1A9
-0BD3EC16F48798E67C7C85560D79366504BBFE5F7F5EC1B05B9F68F98149A02E
-E53F321C213456D802C01871E9024F965258F71215F40EA71057C15E349F06A3
-A016BF1B7E44DC4766FC92EE500EBF7C47D36B1EA34981EE6FE38FF4903466A8
-C9020B91CFC731642003AAEB145EC0F13D6281B0838BB4236C220F6F467F7DCB
-C79BB9CD5B6A180DD2ED7F94DA6B5CB833E62E898BE832DF601BFBC8148F9430
-C8AC459F23EA2536E301C9DFD3FFBAF4D01E7853B60A69B5D012DCC0054C0BA2
-1293D3B4EEDF7C5C78118138544A60FB1A500F72BA39E63EF5D97D68369850E6
-9B6336DA577128DE68FEB71877360D97204B5F3C06E808BF95AA6D6013524BCC
-85CBA9FD2CFEF383645E7E960E7AD471A6A3B8B8C3A0A0B8464836499309D82F
-52004FCDB68997BAD9E4B5B881634FE1213283B6B19308BB67F2364F7ECD5534
-467EF07CBE71989FFCBC6224417C0710EB3EF2676B9DE846E7FFB1AA6608EC9A
-76C31724A19ABB2AD08CC102F5DE8E4E513F90A53F06D440A66B000CCAF6AD12
-6F4B161B56FA5FAED65A24FA183B84F4B45407AA69624068EE0E3E47BBE973CA
-C72137823F1D676131C8CD5070092CD73FC2A93E0480310E21CFB14C031206AB
-411694AFE7B639ACF35C28705A115E98BC69C66F6C58E9E79902453798D76267
-29B780AFB6B895B34CBEA51530E8300569EE4D500527BA294282FED81F730A46
-6ED19AA5AD45852739882216EE937FC45D75116BBDBA6FF4B4423B398E383CCD
-A7D705B8BA85076133E823300C3EFC9EB9399575F5F6BBF868265304B299AD77
-B6B4EEA04C83E163E8CE2BFACA65F9DAAE3AD2B0F8DA1F986E6A12DDB2AFACD2
-217E37B093F46FF3E20E587A9490401C2833F5844763FE2C528E151214E8CA95
-018E1D8D47C9EB5FB4F0EA2A6D064680DEFD2C5489298F83B58EA7FA8CB019E0
-671028C59C3E007DD86CD247889ECFA6AD6DA2433B02180DCE6ECF9E495D0976
-D063A61B007233DED5E3F351D790F26D4011582735A69F37E7CCBB0AF254B925
-B378522B748BD9BF152E2187DEA12BB168C42AD8D67D18567393B35DB2AD8403
-5A7093EB59FC276525B8796FE81944F7F03349BB077110E182A61754ADECECD8
-A5255DBADB523F3DC251A7D97F17DC76281CC632FAEB382A972D60A15FDDA57E
-2F42AA338D889B47F6A3C1FADAFA8D11D63EF8D0C8C0FCE61FBD8AD34EB8DB3B
-722BD86CE5B1268F704ACE82A39466DC2D96C9849B9422567FA5E728B17FAF61
-59A77E9B3289DB807DF54D076139E3DFE176C3131FA4540C1542AE5AD6200FCD
-B92D5DAA77DD4D3022049B6EA2A037FE96E0CEBB1608C663F1373246FA74D70A
-BAE7BD37F3AC23E003204FA8270B4514DE1FDC5401B69CBC98A67A5CAB5505F2
-87C242B6ECC86E88EEF44B9C79DA5F88CFADAE8B4CF437A7CBD5E0C01A9BC479
-E92EA48C808820C567E74D62ED7597FCEC53DE9A0B3EBB9A3FB50AEACAB82BF9
-2AA56D029357AAE016582592972ED01C0ADE565E87607F17BCF4983E3321F606
-ED664B9516D404B277C2C1B0F873D469D64A9744D9C1897125FD471E71BE060B
-A3A617DC8D812E184664BD83EC74EEB5197611380F2D859E1A61A14404493D04
-B5537C04541E557CB5039905F37E72B762EBD2321633E12C38C409338AD5AAD3
-1A507BB2B8F5235F0614D0CEC2BE44CAD504C9B2CD3E45437A493A33B9BF8A1C
-3FE66B1E673449A54E8E3C3470688E94EE4404C888583F7C96B43A592D586D25
-8AC1F206EE5FBF3AFF7EDF9BA91EEC6BABD573D455E0AD6802E7E23A662D4F12
-FDDA00EA054CD331DF86C099C4BE8AB4EAF5D8EC1BFEFCF50302BE61E6FF26D8
-1E88C544570E8D6F7D875466C70AA91D6CCD4DF4BBA34FC67191D1692D3FB76A
-66F114152956A5E38345E7495BEB1A389B7D0A59624ABA784F77C1BF7728E556
-F9D97D71858D61624C22C6914A3A995BD75922A2C37EF2CA91F923A4561CD3D5
-2DCEACD9C3A65A9FAFFFA4822E79D6D89D6366DA6362DB16FF061840582DA35D
-E4EE8308040C2DA5F298944EED470D6E4E1FF58DFDDA96C20C85E2DF2652E12B
-2EFB8F890D301E8CE777678FA786E552A62A60DFC369AF4BDC069F5457FC86F5
-1FB1A38A2222EEE86FE1AC9A8227663AE33217C1F381115CCD04D2F381A27E97
-36D356DC64615AD63E1952B37AD4F967317D76A6DEF039CE8446AA634086BFB7
-7B0B34F595B61ACEB346F51ED10ADDB7B852B5B2BCFE416D0435A7CAA4C9D9A6
-152D9AD938F39E9756AC752F1604D884992BAD768C720C45479F5AD8E53A4832
-1B44D6109DE4460A662DA6081465E2BE02ACBEB52259E046767DA24E1416FF44
-D5AA1D303CC4249510D703CC6CD0FD7DDB078A91089FD86ACE1721F875F019B9
-82D7C5B2530567F2306F47DE90EADDCD12AA1C693B1982827DC36A74C86474B7
-0A8A2E084CA403AF654E2F8488806B943E38ABF544ECD45FECDC441DD970B180
-FF3FFF1A50D5E22216B240A527F95DA1E43770A3867F225DD2A8AF01A965E06E
-A063997C4CDC0B16B52F9B9C8B0DBA94F88F26A7A01E596DCF8F33DA3DA5B02D
-2ACF771F25A1372F521A80B93DB0337886FCAC0A2E8FAE0D7E1E0C31EB43AE3D
-B4C2020F322A9857A9EADFA7782CA70DE7421B9A83DE1873EED8D096701370B7
-7EC33B9C104E9CC16DF8C80ED24D1F91677E355DF037621ABBB75E09ACDBEB82
-30F1AFB82FAEC4D9E2DA93303F72C1078679EDDA35ABF2AB38DFF091AEB273CC
-5A7B29C0164977160CA75F62BC20474C7C1F127AE7E4DE865FBCEF852698AB80
-B61340CAB6F86017FEF570104E46B6FB3320E78D387CC58DF1C4FAD8570C0126
-B6F54AB5BCD47904A9255366AC9C88576456D3CF605822269CC65979EC3CC740
-AE3D09257BA3AC7A364A7F5EECA3E658AA20B53423553C416D98FD8100D80A30
-A1B19F029B7473070D7C60CDE51BBEEFD2B45B1C82F4FE32A5BB6BB5BC32BBB8
-F600ABE893B83B806A5435AE2B40E5CEA9068C6ABBCE73C9B3533520439F28F5
-E171DB1DD90B2EC04A1F36767B2B97D4EC0FBF217D4E80ADA5383BADCD7E066F
-5F4B23738A14F19AC7D765119AAC9AB6CD0A8AD4EAF8955CB9F5BDB0156CACFF
-236D24E8A12AEBA549FAA9D7053D10AB7094B5D9B86FC7375E245EA8D7FC64B9
-859A1A37C006E0449AA8DB8B89730348C71C7E014A2EF8D871AAA856407C33C9
-392720173DA60850938D0537564455C3957631AC8F8C0B3B29BF6163828796E6
-0944C3000B990715188203B32BC4E3FCDF173A4A9C78753AB7D76BB9A4C2DA4E
-3EC638753D6FF6356EBB07D0A9E8D3F50EA5451FB6C836B9E5EBB8F1331C8CA0
-B0CD271AF316502CBE87F652B5ACCD43176AAA32C6530C69E77E3C85DA496F3C
-06980ACA739DECB5D986622AD81F204579218660EA791774C2D11878DE23F858
-BBC4ABC7EBA01B7FEBB32BC914FEA8E5720731FD43F8A5CC53954D13455827EE
-9C7BADAE8322E77EE7413D6C86E6D378FF8044F50F529E765A1CAC29E8B1D91E
-CD40F70F2D4890E0FD04502933212D5AB176DB143831958605C1667B8841E770
-CB4D513DF0C3182C23CA653A7A714B2A8DE29D6B203F5A9481E0CF3FF073FC6F
-476B0B205136DA43650A940035A970584DD7D06B7CDA8E960186158B75FE3917
-9B1D0FFE45EE1606C875DF635B80F5A9E5B67A6ED748F52A53A710A45AC20BCF
-FC96755E685A3B0712D5E09D860986C61C631A8D2A505C57D57C1D4AE78C552C
-DC5C9EE15B82A4C3020331B78FDEFDE53974C391F375E8118EB7B2D23DFA3F15
-389043EB6F33842C82B896073760197B13D3DAC172D77779DF517AE31BAC43BF
-5BD6F75B59AAA59C7EB81B776FADB720282DC06BBC9C33AF5AC0BC59F6A0044E
-3898A4B5868EF32BC4F980DD863E8EDF6DE3E753A7B3E39F8E8BCB3D3BF14EDE
-3395E73BD07440FCE88FB28A96878E823C1E5519650F2054EC2CF733EB8AEB0D
-510E5659A3179C3FA8E31EED621BE0EA648D76C370C3CBD8043BE206F28699D7
-5871DA483AA5D3580CD55902C85DB9EF5CF5D3191738FE64DB42410F5AB8ACFC
-CE07E524BECA5633B082F4793002A4A7215AD1BA31159A30D72AC60EDD0B2BAF
-73C9934C85C5372B47BCD3ECEE463CADC05CE8352EC1399ABE2465AA53E5965E
-79400336B1F5D1401EE2DA5807F9701D1086DE505F6AD4E64DD4F3E5E90CD64D
-FDD25E6FA03B679597CFB8C5C1F03641CEB7B9B40787E70BC6B063621382E3D5
-1287365426E44A2EA208C26155CDF782F404CA7B3C6D379103EF4A51CA3F1343
-22B04A0B55CE5A7633175838B9E50480E9B80446CD3B541362E7A10BB3C58A42
-88C0FF580B4A0296073F5B6505E4FCCA5D4BA2F7E8D59BB04EC9ED4E664BC2BB
-8754777594DB26DA0985663D321CCD13FB261BE8A771470DDDA783493E452A87
-D0AD01AFF8EDCB7BB159F1408FBCC52F126C46234CE6BEF241B49472102598D6
-91FF2DCBA2CD0E6658A61DB3591EA02E4DF202954B655C5A3C34B14CB60CF9C9
-2A6683AB282DFD79B33FF3A6AA524582F174F11A5568159083496B242ACD2770
-0ACE8473D363AC11250E5DCDCD3CB2281B71FCEB8AAC1367D0714796AF3BF01E
-80BD4B05A0A45E6CFA6C672850B9DF113F5EB15923ED885A0E4488D4914B62A2
-FAFB6A63F8AF0CF0DA498E1BA68C4150B6E59CBA80BD17026FA09920006D2075
-BC6F1010D0A10648A20D8ABF8137BFCD6A5DB3606F6B3CA51E8A4645D32E5966
-6DFF7537F65DA4268A86BCA5791C21F5FA9F4C2F1F6C1AFC4D4BADFA63609C4F
-5F5158608E6FFD9C5BF00646C3AAB983DDA5E37A9C2EA81796B161A06201FB6F
-8EACE87008EE7A008BFBA69AAC04D73A8C0447FADA0249D8861ED405537E23E7
-BE68C4349FD64A14E3A53D6C6484E704BE4AD5FA0269F56D3B752A070D9872FD
-A5CEE543B413F13CC4CFABCE885BA4533EA0969FDADC14DE6846B330552CFD60
-A75BC8C9DDA76102E48DB6B81975A1F3FBE182CEF410841CC6164AFA0CE51FD6
-8E8E6F0971277052E21126909B5EE51508306B886E945C11DFFE1C91BD0D79E4
-554CC7D6A774C9B98610A1E49C3326D62F157CA9D89B56699F32DBB9D49C716D
-CBDEC052133F8E18E8F3D7A59008398AF3E4E1192CFFE4D0B7D2ECC8DE2ABC1D
-4DF7F2EA5EC0DD756CB2FF9F95FF10E506463D3037BABD221C08506FA603DE1C
-DC45A5998921C4023E501DBA494C1F41C0955A761AC3D5B13A88EC4F0BF40756
-BAE8645EA76027B8AF74726521DC129B9AED4BAE67A511EA56EE9D0D8D30C7F6
-FA8BB890375A263A0BC4E9CBBBB8F8F8613A43B10E964F8CBD6BAA2B0BAA70C4
-4CFAF6EBF4882B610AE13689823D37B046FD26DA85BD96B896CBDAB6662573D0
-2CB87D45A86A016146513441BF7A748F1E9C2AC7172460EA628BFB22F9797905
-F6DF6749F13C7F234A2CE4829D41E0F53EF3C5F52165297AAC4B5AF4747A9F53
-60370B4C0110DBB42C25308F489A856B6664371FC2126BAF4710790021255653
-CACDE1B9ED6AF5C696C3D8BEA4698DD9045B3004A5C4C03EA994A5445C9D4EB9
-865266850047E28F2D82A08617E9283FE637CFAE4F7F261CC2D616A8C746EF23
-7360553A6B434201944C04B1522533C61F615A20BA3678AF8D4BAD1FB548D82C
-72D41699FB96EF40ABBABDEE633F05B4445BFC4E6E661DCBC8EC473BD2BBAF7F
-75F7FC86CC7B1F3A2343EDEDF6B5F7E98A0BC4443E21611F4D807FE7F597A37A
-A4DAF8A8E6D04FEFB320E0E25C61E156A72A3E4A69EDA04B0E3B72B69FC19E63
-AA33A682663A8F37F4FFC1533CCA2A80DAA675DD723A7E13D9DAE3BB0F5F3E07
-99BAB9B9BCFB29B73FC76EFA02F4F632690651DAAEC2B3688B636F0FCB156047
-F8EF7239716BE5D3DB2FD1DAEEC11DC2D65CFBEDC1C950CA737A04FCCCA509C4
-7E47664E160322366F70CCC641B9B49192AB839E0AC609AB2FDD3783095293C3
-11C56740FB50D23AE9FEAF66DB13F35367B562F15161AA270EE44713881B2387
-7889FD10198AD4D750390811714DAE7A8DC6F5770224E93408F8CCD4F8712A9B
-3C583C983D98CCA7FF9DDDEF8AFA292781B1D7089336CA631413EA0728353E8B
-3650EDED7ABB6E5DB5B85014A3A9C4C76EBB664A5B3E0F3CB2ECFBB6294F5C4F
-69EA3AC8C071B122B129A28E04FE989DA9670EB6246806A516517DDBC52DC001
-4C027D51EF1F98506F21E63D57FEF267B913F1ED4770D892239222F3A9035C35
-FFA38D1AF3ED9A8C02235D7422695D30A2F801389DADF34CDC489EEB38089B6B
-026D884EE1C24FE5785C383B988FFFEB5459A1644CA44D353503AE117E87F956
-393DEF6C47D4E1C5B1A33835C9B8E1B98809DFEE43C4D6DBEF1C2B1ADE4B8F13
-3B5D224C25927433D5738B0FE019CB88B1F373E4AC2BDB5BD86887FCFC50FA1F
-3E01CC550BE5FA0703E1B89486C67E8A16C560DBC051028078BEF85B349D3058
-55D633040BF5853FE9E50A671CA0A088959B2AACA1B614DBDBD906FBCB6A6B13
-7ED6C5BF448F92E9EB110ECAEADA36CADF4B6D79703CA2EA9BBCC810A6E3532F
-63C155FB86CBF6A6049D730B4729C613BD759AF3742399C6B118C1D2B38FBC4A
-22154122B3E325ACA78A9D418FB443FB334F67F8BD2D33A8491FB2E85BA2BB40
-F538F5DCA031BB3A7E6FB3A47391B9CBBE69A420143793087399AE2CD4C47FB1
-9A93E945FA671D902C95EABDB29F20FAD4D984B5EA0D9F7B1896F77899649E55
-098A11CB40F7BF083B1CE8C511F5858E189ABE6C7F66953621FE5A90479B79F5
-E20C65EF767759387B788A7759465B889B262B3987DCD0D2FA2A948AEC42C3B5
-33C38B3B2E312EE8D2DCD5E0AF1FDF5FA0059464ADC08ECAC4614497F7A7E702
-A4F394B0
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMEX10
-%!PS-AdobeFont-1.0: CMEX10 003.002
-%%Title: CMEX10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMEX10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMEX10 known{/CMEX10 findfont dup/UniqueID known{dup
-/UniqueID get 5092766 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMEX10 def
-/FontBBox {-24 -2960 1454 772 }readonly def
-/UniqueID 5092766 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMEX10.) readonly def
-/FullName (CMEX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 32 /parenleftBigg put
-dup 33 /parenrightBigg put
-dup 80 /summationtext put
-dup 82 /integraltext put
-dup 88 /summationdisplay put
-dup 116 /radicalbt put
-dup 117 /radicalvertex put
-dup 118 /radicaltp put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23E7BC2A6E71BCF95FF3DA948
-1A27320759222BD7BC7C1A533E90058824F06942F0234C68671083E0E4708398
-D246C94F9C16DAB6563651BA33D86273FD2DB3C50C106F3CA95B1C79778D0BEB
-B99D9CFB38E41BDCB4261A86A23E2CDEE4837D9B6F0E85ACEAA984C344A63709
-EA35B61F08821338D363D172BD185A3658F43052AE1E61D879C99DED7F6D726E
-FAFEBD881BDDEA91FB09DB75675FC74AA2BEA8771027C7A51BF849F8E765B870
-8F7CC0871F301ADEF9B71EC3C607B2F51325AA5B3DD74A2C5426E7B329FAE84E
-94A159C8C9C35E27A0FC93FB98A4D616750DAD50068A5F0EB96B8228946E5CC6
-B69E93D262C92E3BC7161313156E380A2ABE27BE400A23DF95E65A4F76B3FFE4
-CF3CD141B006C487EBC73A5A101466D4388FB2CF1D9439D0714720BB58537B7D
-B3EE1F04AE117222CA5F0E5942F7A875D55D91D63958B1A02405D9DE08109B8C
-7104F2D109EF7074852DFD74CBE02E0F3704F2BACA14E05EB1D0D9021EFAC23F
-76C2389F8EA237D2E2AB6AFA83A725E16AECCAF025E05F1B1B5699D761F62A46
-EC6F31B0FE4769BD0D66821592ADBAEFA9EB454CF1402FE870F5F96D09980C1B
-8B6D2FE88BE56032C1959E6C3DC319B6A7353F3AC629CE5BCB947B4B235426E9
-4769302817AEC1ADF50E50265AB488017634AF824D44D3C8423FC7CAD97F6D6E
-6B34313637687FBDE3BDF6FC951CB41277D8EF49D14767B59656D214C9724DC4
-0523EF896F4E48434FCC5D8423F07194C54D48C62AC29001B10C9C8B514B24C5
-CEB60FF68D36749711E108DBB52738760FCF6571D5B04E58F24CC0247834B412
-D0F6F8D7F1573F23E3E399D5A3A3A37FCFFEAFA044A5694D2458EFF2BC1F7650
-8FB0A27C505A20C16776EDF94BEF9DF702F3C64DBC1939BEC0399B6AB283F832
-DD8FB358F701CC075C596FA7B0ED7A9304DC73274C8169337D55124CB748CE26
-A635B2704D8F65E23CC0FDA3C57ED451F8FDE7B6FBFCE2746F5AEA11B065A6DC
-C3D200D962A034DD6757991BA62D8DC0408F49083D48799B6097B61343365A5B
-30FB02E9CDFB5104FB751BE8A268EE55C1208DD8B29D5635014EDE9D0D94BB64
-ED5643B3049027925BF2FD7EFCB631E01269B731AE12AA6226B2656F035C7E92
-959C4A21BE40D7C138C8FF28C9FD4B768CF25F08859AE84FEE6EA18C033B3659
-D9EE250BA5FF2568E8BF7684A93BED7852251D1ADE5DB815AF3AAC36D1A500C9
-41D1BF3A1926828CD1F9E501ABE441A07B1B96612CF0728AD5FECF7480421F46
-0B18E06D2FF1A5B1183459C59517976474698BCE18A728515CD489A83C001AFA
-47BDA929F60D0FABCD8786AE16EE18615C37D18703571936A365D334BACA9BA3
-08E2523132887B5EE95ABCE8581C78C3E858DBF35ADD56A1F6C2489AFA73D1B2
-379C5064DAFD30FDA84581FDE268B470636EE35F21648955513714F6EAA08AF0
-249C937721DB0E93D95C4DDDFB0948051953F39C6D2D811D3FFDC25F786E072B
-2A8A1F4830F9CFC34666A1D3F13268980E9A26682CAB64817318A1E266F3D2D2
-DE4EBB3EDAF0E7B526C838CBD7F37E74A35B1C3EB96DA4099DE689A53970D4CB
-9AB355E93EB294B07DD09356C338BB4A61C147BEDC152E58DC92FA69846E4829
-551A5330006793CD88523F7B3AF7B4475C531C67A4B66A603597EE72C4ADA491
-BF13706F341125CABF37FADA554FDA0BA5534C7AC35F1829E250C885D9A9983C
-5D1FE8CE24458A8B13E5C7EA22BF1608AFA96B83C700889A2A6C9C4052DCB892
-6CAEEAA9E7D7F3E215019719B36A5DAFCCF2396FA0C04AD99A7C23772A7BAA64
-D1FABE8E476EAE9FC1A3E08CD6D1DDC6E087934E676BDFD1528652B6B9A50A35
-2029466364300AF4CA3C5883F6293A7104617D0858B3E43D43752F814654A938
-A44C33410BA0E5EA7BF55D4F1D57E27921DB05C059DE29BAC1BFC9B607D2C5CB
-1DDC47793984FBB18BD99E1DF7776B563A55E15DF024D6D8E6ADF62F16F602A6
-7DDE1C68637672AA9C7A1250161502ADDDC1B4F6011A9BD5605B73AEDC37CE4E
-4467C838B7692C4D541EF87DB41123F9DCCFFA971553A5D9B0E7EC539A28750C
-8554383585CD8B93DF731A301D85BA9ADC95B4A3A237794C30230A82300B6756
-AE5A46A090958109C5565EF60B0B16D6C0A16A56644B05D3371DABBB67ED9BB8
-9BD3983575D371419C7568B2556649402AFB9843106729E4EA87B3F9038218A1
-F820B098A1271E330708432567297CCDA332B555A40C62BAEB16330175D28AA6
-13AE6939CEFA2334E3E890B66A73277F0B63B1FA59F856ABECC5FC0A50571F5B
-0747FA554F5FC72A51E215304B2E44701A13E41D91397B204C66AAB3D101004C
-7FEF2D87DA558EA057BD492CD6EF93601CB63F78426B502CDC5C8E9EF4FF3692
-376601B1FAADD801602668370B5ACEFFDBACA8F8B3F4E850D07A20F6F47440FC
-FD39504F0FDFCA35AF2ED0DA8BAB63AD42EA8CDA912CE17F5E62192DDD912333
-3E9FA0884117F07221642490044A72E359D5F25D9591A8FAD568A3DEE435C354
-11995C0EFCFEA21735DF44A30F79F747510E28767A4266461D1394F81344F6DB
-1FA8D0B0D9E5F52FBB663C8F1E91192E5608FFEAA178B93F8298F70510A65BEE
-12ECB5D675311B5B3B19205476512D92B1D16262720484049370A76F78D9BDC3
-02EB96AC1E5B3CB078D2F219988FD0F36B043ABBF347B22D36CF541A8F80F791
-8E4F92D900B7E7B64DFD500882EFBBF23565FA470103B2E0D2D14E3E4D7827D1
-BAA0F84713A8CDE5904FFF2794850871DEADDDC53B77A502F5CA98B0744BB656
-2FC40ED2AEBCC5CACE2301E983E6C18CF16AFB9FD8CA49DE51B22F4259D43076
-DDC1BD4974CDF2E733EAB6334B1D5614288CC81FDCC722CEE193635D1088FB29
-F80AD5CB96394AE89D920DF8E1F271585AF019190F17DB51FEC9064B54C3A53E
-3FD33C3B553FC79F743BEC9674743BF0A821051261DE4527A2BEF4A04E293E97
-02B181EC5F5EED3E26060F2C9EF6852B7433CA1BC1690C30424B03C522A087EE
-92016EBDAC4B787133B4A22BFEF0B6CA564C6EB910E1DBF983CB4CFC3A1F8A26
-45329CED7F5A8704ACE9D4233583365A5A97342A053EF403F0567E9D0A62EBCD
-84B5D7145BBB11D31046BC2CF5B450CC68B85DA0E78EF8902F8D37DAAA9D4242
-455288C0D73748F9BFEB1B1769D6FB84B94993D5F7C2B9CBDF75AEF2C930F277
-210B3CCB8A0299F50AFE2548A4B8DF5ABB52F098ECDD56FCB8D3A406EFD95088
-92D7EC39FDC7EB1824ECA24D0CBC6EC6F4C6A7F9590D593B269D2CC0BFBD961C
-AA8BB4296B4E4411B54367A341A5EDA97288DAC370A015FDE6D7FB0A4CECEFBD
-1A67DF3A3703E922BEF2C414FDDA42482EB35D5DBB206B44C76C412A435A0842
-6845EAD204BDF87065CE2C99B05D2D4080D5D11CFC3316967472C7DA44CC1F9D
-51B83B4BE9B882D6E9ECB482F9855D024ABFBA502CCD624E0F88164A6F13CED4
-85F20DC01BB15C7D78B1C79FD9FF71F4B043F59DB5C297768115542BC7C8A99E
-ACE39A268D32122541FB441FF1364FCBA2B7627F12C49ED038BC044B6D9D533B
-A72D35317A5AB8D91A9AC56CA90D1DAE9F967605C63BC9F406FB3D5BAEB4B38F
-4934EE3D2F5FE434B45CF5C2D0E5E417EC279DCEC4F16504EE40E837B11620B7
-7526AFF23381ED3E9A92DA4DBF4EA2BE4FE444B9A74AB60EFC818E20DD8B852B
-DF8CB659C0A3956D0DA61F49A9DD467726E57E9B32EFF540D551A67213D40273
-AEAA6E319D92B4B406377D36DAB85662C755D76ADF5795C52D54ECCF0DE81E30
-B84F951233A0A400CB063911837F0AACF44AD2441A7CE08818D64705E1ACF7E0
-F59AEFC5DD812981C5508385274817056B2CDCCA4C9F3103C92838917EBFEC94
-21D5737AC634B23B6F7F63B166D60C6BAA8F33AF44379C5A7337E737190EB3EE
-14272B905D08C01EA118964D3444A03676FF3B62E7626168FA1DC6220699780A
-0BD5776DDFA26BF0BB335B3C978CDD5CF1A419D4B5C562B3974FECFCF0118199
-E547EB287CD92E32E881F344420FA3CD97333BFEF5D7E1BA31FD20622E5B4F95
-692DD0ACAF01D413B21C8608FA87B470191C3CC5AD333263C955B4ADF4370FCE
-D6667FC93495003F4B6AEE4F83603D55F19EFBF56F955FC9CC01E494804952CD
-D426FE706C13D41F87C5C668D8B6BE50AE0370E07F52AC0534ECAB1C19851099
-FC0BB1EC2A649795A62299F73CA606EDFB1D28183DC63ADF67294553115E8C57
-7CB603CC491A6065802B925E6DFBF42917EE6E44C714228AE452851D61BF70AC
-844B5D800EF029357FD659B8A648445CED0ECAE1474E443124F4B3644F54C556
-A330D92EABEC7F607C6B13FACF69CA928F835056BD1A8ADA20EFE6BD5CF4A1A0
-8B9E415E4A5FC6F209EF05ABF2E0C55F6E3060D1C72967E1E68791499F303C8B
-3960C5A1F2DF6306710DFA98C8D0815A06B5590374554DCCDBDC4C295B3BA6B8
-8BE3200CD4421A521C06BE39D4CA495BC63F3F982CAE3C82AD38DCB537E617D3
-34BD96EFDA7C6A0F6D97A6BC9F084645390E194E7A11399FCE4EEB9A965909BA
-6EC69D34DBA081BB3F18BD1ADB1AE1B7FBF96E4C546498667690857EB6931841
-46C427A5B7C7D99FF889582C4AD11A7D267B301C5A5AAD9DA99D5BFD438238DA
-62DEB899FF0F7B7997F781315B2CC328BE3572A3903A33EC901AC6BCC7F152A9
-8A6865C6CB17189A4EEB699006A5F9D4482D53A76E88438E444F9302C79F0DC4
-B3033D29D303B38F5959F020337EE6619DC8A8C3912101B02CF8AD113BF4BC29
-8C6B9D25AF6B6A787F222C05964475B49B6751E3A3A6EBBEA03677D5B136B9DC
-6D9AC20193BFB0759E89831C9E2AF68BD45ECC81175DFE80DC0879069ADFA8E5
-24CF3C84121CD9739A28BACB9891945FA4E72EC07136682E18FCA81938FA6A3B
-8CEFBAED60121530E33C1C0E698B5923D6AFC4E907A99B1367C3D435CAEDEF5F
-878237453B8DB2FE53073CF3319FD096343F42D68F097759D051AEE17E4FCFC9
-86E17099799DE82A38F22D870BF7AB90890E3B5264976700BAE594C8563A218C
-C985D9A5A7D7BD959F7E4E66286833C86E89203ECECD6FC4C6FE1F04010218FA
-A5714881C4C846E85F13BD68AC250CD0E488DBF60BB10B2CD7AE2E30F9C21DFA
-0E84F76B4E996AA1C5C056E64BAC85622C160B56DEFD4DEF86887C1201F7C20C
-076D4A27BA69572BE9C89FF3A9D3BAA5CAE0A6F2187AD01ED497798A305E3BD8
-422DBFBF45E3F4AD35240B07285128B59FA9E83D9F6A2E620CAF6DB05129D930
-44CB241CFF84E776315114C3AB61FBC0A8368D9154CC5066E2B162E89DA51165
-F9CC075F2524F9A8624D2B56ABE64AF93B9F0407CC770C1F2C76CCDC06345D03
-7B173C2FAA201D8E1F6C0315987A7A13902F4AA5ADF081C2B0A01C77E4F7A3E7
-6A4AAEDDC577E855D69D38AF6A1D271B02AB496D94D81996FB078FBED17F833D
-C6C0BCE141BCDE277D530951DD6574B9CB3CF0370D74211E9AC00C7CD3A67842
-0B4B72ED517E4906409DEA7993D0B8E92D418139960EBC86BE63A1B1D417C451
-8BA13C230DAE1EC4E466F23351D410D9FC4A7BBD477D5FA07659B71CE9921B1B
-6755C67AB3D4988064004CF75948879D16174E8097C91F7544352474C2D9A1F8
-A1813BC6F4BA13E952678F5707F19B4799ADB3BD186DF650821DF58CF3C78D67
-84E4E1DF8DACEC50D15647C3DBBC3C4355E602D3A03171FE1CB36FEB940211EE
-0A5300841DD7B7CF91C02B3FC5D89C691156BFF8A38C6C72789DF260B868AAA1
-895046E405661D97FA9A0048AF114A89E3ADAEBCE541753E4FFCD902391B5372
-6A97E32F0257FA9FA1DC15BD3140EC7F0CA5A68AABCEDBE73C38B35FDF195F96
-0F9DB0F592C188D72D73512F4DD92D2371D1A59254BC477CA084E68184AEAB6C
-266BB21DC3AAF874DE999AD2A17C79621AE322612EE4B6D5BDAC511418EDE90A
-AE75066AF19662C4AD855E4200A5D67BEE4ADA9A399192C74D35E59B15FB61E7
-BB167282D32D538029ED22CC5C9860C1F6B7BA7F33D5CF108D4BEEFAE7B37E67
-39391F9934DE17956303532ABB011540645DB8420749C9B9A019C3CE86ACD566
-1EE8D8D5E0D8D0DEAB33B5413EF10D4EE650F82417002E436E0B3B628A657F84
-074098C2E9F897D9AB692E0FB9F268E6728F94A79CF4D6B0A07C8DFDC1D67FD5
-EDD5863EA8949D180B1596D0009D662FC429449D76BF13D83F0D0CF165982443
-E9CC288CF7C5F2E17EB7F3736D1FB814196CCEAB8C833720E3733BF594E1B536
-BC0063080BC751F9DA1741522B2967D07DDDA169E7D3417B4A39EFAC15EA5E8E
-DE3473CC9DF991FAD2A971F44B09635085DB02D692F149F144F3DCDB69B72C53
-A2AF34C65DF0D5F35E82102E67B733750646EC03A4FF47138F7998607BD93AB2
-B63A0B82E8E225FFAD5DC468077FBE8C8C8E5B4BB10A8FE836B07367D742BD6B
-D36DF5304B9DF363120504C279453452EB177FBCDAA6F6FB78A24848F4A1D94D
-1E49F6C46CB36796F3F4C9739346381F28AF085C5EBDB2A02DC0570C7A21E097
-77522D4947B51182431BCBF3E55CCDDE93A916AA40CEB577277FA512380816DF
-9111C56F36341381D62368E70462577D0C135BB3CB4462B269AA8E0F03245BFA
-D01DB8E23F2DFD5DAA88FCAFDD51D48E562EC649DB1FFDA0FD8CC8C48E6A9207
-260ABE35733D75630053CC74A07E5AF6FE87BD5FEA69CB6AA20122276AD92853
-6B225BC9E3350D1B1362E04C7795D473F1266852B02C83D02D938C55D8F0C671
-7A9205F8CD058304DFA034D99A6BC16C582F02484A089602D42DF30D7A5716C1
-D42A4CE56C19E40C01DC7DED931FA13679CFD2700B3826A1E6539AAC12293DA8
-664DE251C5D1761BB45FE364CE3F7F7E9B67F86EB31D9626CCACE4DCE03EF3C1
-0D2FD1B12B5774510D46C5C5CBF0A34847418B9A1DF0C67789422D0EC2D49576
-9DDE72D63A4A98613461A6F730A05336C691583F96C3CAD2AF7C4BFD3AEB3814
-D909858B6598FE19397006C8C4D549AA1635968F47144E7861A2BCE8AB4CA7F0
-4D253949AA0127559FAE3161C810A8CE22A3079602E747C9398F9C8B2A868F23
-D77D7AD6B980FEB038E0557E58E1D7AE471036CBB96B83595D9C96A4895971CD
-C2A810651A045F876A1F5AE470BEF39F856808B1F8D736030A722E1576BDB3B4
-4DF06F73D38D313C8A0D3504EFBC774750C9F6E687ABCB1927FA1BB3882AABC1
-2306A030CEBB259AECAA646C6497712F6C1E9DB7E1365A60EEC5AEDD5147A77B
-1E3A10D73C477876D54FEE853D953EE75F7EDFB287550B93CFA8250D1FE2FE7D
-D34441F1224F3DB1D355188819EBB98A94DB193B9CA23803869DD10776647BF5
-5BB42031AC44A7339DC036AD0292AB9B732E6FB79BEE852A103C3788BB0F4B72
-EF37BB62356F9B2DF7F5899A26F1FE0A3D6469C1034B8AB14F52555EBF6DC592
-3F24D6DB395A3A182ED4B8ECEE8254661C19CC942F236CA40BAABE818EC312D8
-7F5762C210FCE8A3CB9A23A24D0A751A09F4FCFB72DD0FB3AAE0575CF97D126E
-1669203BE1C8F8FF626F49E8AFA7B29EF26618C6D8336D4471314D5D009BEC8C
-D914E74D0BE7D7C3A2511C0DDEB6FE04360D54FB3283AD67D9DCDE211FAFD19C
-449E201F2913232DDAFB2043F674EA73C9F043EB73CC9A96289B3CF819DB3E56
-5FE403D8C387C99979ED9F8EB2FEFA88C45210713F3A1DF60D3B651856EC89C4
-0832B10DFC919C30AF8038C03C574183F7F343D56C4B7FD4520955A3584C6E65
-66721C381F42E2790BC86D1A46E94A4BBB826EBDAF775B25ADBCF63EDA51F576
-22377F443BA4966A15C07C4CCAED1911816AD125F3395819FAB5F4AD1FF58ACE
-1168B2458096FAC16E629376F7B1EE9D5CD61A1681885AA4760692788D030CF1
-54107FF0ED6410D9B01781B5CC6CF92C0294AF36F5A06A2C0BF767CC51FA9EA3
-7CE346076D0AEE0FFE5C902EDD159205356A5C42EEE99E9EEB8336F1D2A8FCE9
-01072F7865F01608D352467DFB2DEA99E4EFE17CAADA899A3C1796BBB407FD2E
-92CB83AE610A2C27878BAEE83AB15A510708E7B13BBB2D35D54C2D5008617993
-7E993CCDB7597BB4974E9E8FBD8D265017E9515121298CE9FF1C4C4073CF122A
-F530AB18E0B2997BFFA80E3DC4D0423FD02508B76A400C9EF32F50CC5A4DAE77
-82DD3A7064C55710570AF8621133A7663F86D3ABF1F14286C14EB228946A0E32
-415146233082BB7C732B7B18DB8431F9D3CB31B9EE6744D57D1FABEBC98057B0
-4936E73C1883571BB94C6105A567AFE3AE587EB6ECAFF7F4AF72C0DAA93B9541
-D20E81E94A8380D890962C99F9E5C478426ABD337C3158779815484088125CBC
-924297840CC8FFF7D610869DFAF5D43CF40EB67B8E631C4D809DA0600B2E9FA5
-E9FEA041C0D91FFF9DB57BFBD418863B9292260DC79DE9B948B37B50A9B78210
-24FD7C6CAC2E12EAE16F5A60492FE6410E5FDF261E4BD586BF0BD3A392044768
-18CF2BA0037542BED89920D745E641501E7C994D1D49ECEC420734AD5DF067A3
-318E9B7AF3B21056FCFC0F08A4D139A9A4D445542A5BA77A6BDBD754B1E3F324
-C89CF03017E0F8B4898513A956BB86C42CF168184697B54A1924761A843C1968
-AA7A54ECD837473D2EF6203298A8C4EAF94B7FC7CD037CBFA44E6F29C3488806
-110501884D5B9AA5424C8D1B50496B470EE41C48523186E82FF8A9EEE92D2891
-07B39E7D460F3A1FB5960DE969F24392A13421BBE17039A3DD3FDC1D700EBE4E
-38F09076A091CA6979BA99F4FB055014BF0FF49A01B3C78D2A2867CEC85876C6
-49B6A18E704CBF31028D0BE64D2784940801382F67F1149B9ED39E5444F0909C
-CF76F8DB28886B2F6468DC218A51FFFEA0EECE4EB45EC2D86610885C3A2D621F
-468D19CF838AE5A6538EA5CCE17DB9AFB839EBCE272DD1EF857D142F346799D1
-57B35B3467ED27CB40BA299324DF6709DE49858CB98CD7D417C55D8ABB0D4ED2
-2FD0ABD1580D03D11BB4ACECF68745728EC24D47FA52E1221C072B7080652273
-70C2242BC44431190DAE57EC1749838C8517D60998C79C441203C2EFFE3A01A2
-F5A51FF34C627389F25BE62E9B512E1C51B22991851A5D8954534686CB0977B4
-EFA24E070257CFB3320AD60FF059B1E826B0B37BDB188E180C76FB60330004D2
-12B6E7A84CC765607FA33B05478D618CB4C67A9B6622FDDB6EA88495C913DE3D
-676D3DD781CEF215C688D86F5EDFF97E0FAAF0D54F529C25A145132405391184
-477F43B29E58C9B86656377FE6AE04F88E7573A05876E912260C403F88D60606
-E70EF032D4C87C6F77F1BEF07D914DC0C81BDCF9D3F1F0032B0312EB029D471C
-CB9651BDE8088E4FC4EC397A16F0AAFB097DA242000470FA444F83C6F1D42FFB
-834FEF911F8DB70B0A54FBDEF4D0AFB545DC928B8FA53EA6A79400F59DDAE6EA
-39EEDB73F7854593E198E395FF470176C295B723435DC5095F10E5DBFA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI7
-%!PS-AdobeFont-1.0: CMMI7 003.002
-%%Title: CMMI7
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI7.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI7 known{/CMMI7 findfont dup/UniqueID known{dup
-/UniqueID get 5087382 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI7 def
-/FontBBox {-1 -250 1171 750 }readonly def
-/UniqueID 5087382 def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI7.) readonly def
-/FullName (CMMI7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 28 /tau put
-dup 78 /N put
-dup 82 /R put
-dup 83 /S put
-dup 105 /i put
-dup 106 /j put
-dup 110 /n put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 120 /x put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBBAAB71645535A2B
-6F0F22458E1429F4A67307E01F0BCF6F337E0E2AD89658D880B04C26306F8179
-C8121B958459B923AC3B05B594D8AB95F75870019130442FD29578D44F5690BC
-7281357A5041C8A809A59D0DEE108E2A07D406656BC74A9F3317CB887E712318
-46B2ECAA341F8692ACC2D14ABABDFBCAC6F35858355F1D3228B0223EC73AC56F
-3C987464DB829F243E304F4C59CDE3EF6EB53A4EF9BA91510CB89A3407261F58
-A2AE66880BA98FC1EF546112892494C85A2C39F9DCCAC5766725894A7AA148E9
-42360AE64BF3A4F1F9F0A0D0C1AAFDC4D50C52233AA595B7D0CE557D4A010D86
-6E6B76A7E9523E8A6633DA9348BC3F59302F72F492A30782AE7EF220516893D3
-DE836CDE311DED9262AF01C506040541EE84AAC539B404B23033EF56D4BCE6BE
-B05F79CD633FE75C6728114D2749E39FD7454050F67763AB636377BA8E1867C3
-996C7D7D4A4A02BC49D1AD7FF174C1F49F1F205BC9D5AE42BCB02CF8554E8F5A
-D1876C9285B6CCD7B8C165F75843B0AA11D8462B57077AFE75BAD086E9D9F91E
-30ACFF91776132F3CACAD1CA5E08B17B36A0E45ACBAC52393B9AF9089BD821D9
-CD5A9CD9BECA59F7445D63DECC1B4502D299DB85B6E2EE7C69A1DAB91E22A3A5
-89B524FA20AF6005E7A586B90A2C6E5A93C9EFA4ABEF5F7E4C7B81363FE8D2B3
-0AD637FA863DE787581ADD7CBE463F7866C40F4E280260ED0E9C8453E5C7E668
-FFF058B9742DD3F131C264F8FA102CD0DA05F3114D13D34D422799181453FE23
-2FC6EFB01BE420C930B879D671F3DFB036197874725220644A5A52DFB467BB75
-8089E4F40CE9401777B9FE1D0AEE02E782A6EB2A185A454AE9394094CDFE7CFA
-C03C23A78EAF242E4F811E4C83B59EF4DC5ACE4AD37B41616B46C263358710B2
-6137314545CA6CE89119B42A3518EC85C68DC07D26839C68B1FF55C4A9CD518B
-A1FB32F9C475BB6110839FCCB94156E7B3648F27245A00D2966FC4DDE3996BFA
-F463A663CB6935B596B1582ED0ABBC648AAA8A86068BF0038001C753C8BAFA0D
-2058041DFA720B528E2D4B16196DB1CF30C779D3F4800FE662D5B60B208341F2
-A66EFCB8448C2FCD12DF0DD899911A8BD96C9B670054D328790E5D388518B146
-8CE92E368EB1DB3CAAFCA4834CC9D9D9DCC80FB1F34F39DACDE643052C977A7E
-A95C5FA8DFED9B4DCE769E4E46256D6DA8FB18FD7FA4E4CED5D486803538F3B4
-6D3F5B3C03184F5C26C66DBB4C724918EBB6A89C4602E4EDDA81EEE2BD18B683
-FDB459F2CE0A9CED23DC208EAA8BEDB304B00E093DEE926A7B32FDB2EC70DD85
-94B9137856DDDABB402B2C76DBA87149051ADC6007018EBDD571BE1D092EBD95
-76D4E063AD7D5F62E6C26EDB88D38678F2806A1F4900B0ABC4ED034A818119A4
-E618F1A902315BC98F26775E59555A3DCEA1D0F8B20A9084920ECBE3F7F245AC
-1182A40B518B194669D95DE968542BFF80FDC89669BC256C44CB66A2AB8CD7A9
-E42C69956CCB6BDE8C09AD22EF3196939B3B84EB23A6E071A36D702909E019FF
-058F27562441EB5CAE87A4407F67C4390810BE89BBE867D636468E73677B84C8
-5A1228DD7DC8EADA221B1BAD5F43E832F20ADE7ADBFF170AB306F5B711816FD1
-39B7882556E30F002977FB88D8B28826A75DE0D20354A2D41F2DA8578376F7DD
-F27B0F59D4DDDF5790E11E3957491DC74EEB7625CA49FAD90FA47AD8E0BDE824
-FF326A84846A47A21B70FA549BEE307F9C6970009F963B49A504F0115777826F
-1D81203F655C242FFF15BA97E3BDDFBF435B10E74CE8543C98966223818839B3
-6BF3BC63F882B0AD0FDACA8C56A570277952E1D83F18BEDF084D2AC004E2B09D
-70DE1740D7D220E92B54D2FD0DDEAF1E08C41FD321A8D474982DD105B23166A7
-AA9E0129DC88065B1E0F9382BEB4B4E1DAAE3EA5489BDCA921AD5A8175F2841F
-9400478DFA99C5E5553F383882664D73FBDFA29BF32E52C28DCE80DAF4839434
-022FA515679DBC13FE98968D2894DF5DD69C49BD23D00F5D858B69D1F220F968
-F0700E13873579B3CFB658972098DC61F1DD580105BC27795DB4AF11A871CCD6
-2E1B9AF7F0DAAD4CE315379A7B42CECB983DAC5A2B9426B4E5E0A7F7978504C1
-DD7E30063AE3CBDFB24EA2BCCDC478AB82084FD30A4793F4707D9F8F9647B413
-F8A5C5AC6D5EA0E35628CE1096A434FB8286F4617CB4D0AD30A4A0B255A5A356
-25AA5A947FD3C4FA44B4AA80BAB44C48CC1E2C6D0A711365A37A58C3483D07ED
-301A83D2650A2E8CBA9EE62FF5C2736EC82C1402959F64527F9B640619F112D9
-8E0F4A8A3078C72ACF3F34AD855AA4008C96E30D9E8C414607C34E06E29AC5B9
-2EE5DDB823E8C3EEE6A8DE228313D476A7F39B5DFBFBDEDDF7C45C1C88EE6D01
-7FB4F7BB2CBBD5DF7F0CBD98DC287FA6940FBFE1B3B136613A3CF16634CA7B90
-53D5FD5776515EFF5D37F8FCC62D8BEC8EE2216503D54D6F2032D3C2BF861E15
-FD1B45B71576F15852EEA65DD372E911EF4CC18283CD2FF4196A3F1A9D81137F
-F1820EC604D6C61AF318C6C5AB6DA1EDF305CADEF7CC0183B86D31310A09972C
-A4BC37D110C77ECCA614D1A281EE1C2040B4A5ECB31A3FC61760F608E44332D1
-D2C53C7891B505A3020E9E4915F3618588FCEC80B9ECC5E637D8D0F3C94B1F2A
-C53FC46CAE0AFAA7E12266C212A73AAE60199752C042BD55A5DF1CD07FBDB830
-C83E7832D8554AD9C9CAEEC7CED1DAEE622090897641CF2E5B34A353D83264D4
-4687522DB290D3BA927BA315EA5D25B0D7B69350C6C180AB0C322B05E01F7C7D
-F2F48651567F0C1B49AF3950E43C94D78F7B184BF2946B924BC4279AED28F3A0
-17A7D8B235698A516D3FB5DF0B18A422B2410C385E7E9439C6D60917EB3299AD
-E31471616251FA40C9FA098109BB31A54D9C03B2F12947E4E9252A0851B81C4D
-F39E7FC44752504B589C3911571B1D3EC3BD1E1807F99CED1DB20270E483A805
-CA2A016E7283550D1B1D35C226FAB63F983CED41A4D02A2F228FA9EF065027B3
-CC69D6F2E278C0A2D238D3A37154B0D22281F62C61D9182A69657B027BBDED64
-11E261E47620602F865221A534C5A32E2BF5B93A187911A146F2E96538B47DBB
-7BFA7EF406FE940F4DAD17E6E4B80C4F031D71F65657C2F5C8233EEAC68DE8A7
-E1FC3055C122C1795D0C71A0284F89A9BF04837F61C9E08DB42644A490C97D34
-A5D3CEE475B8D578205005A0D68AF94AD27C0E855BB8EDB74775690A4EDD6543
-BCC10CF13283D6FA8A7CF3FE6C4F96470A11FF0B0160D3F9816B13B0BAE0D8F9
-B84C7631063FE658D13D108D6FE24A89799FABA72E6A6D1C943922CBE676C1B6
-11A4106ECB4F1A7F8A84B2783C2E6A109C58D63FC0B74D8C8A1CB62D527441AE
-E656D94B1AA8581B4F07B653ED6486AAE1F8ADB30FA8D8914AF24721C74B0908
-D84F2EBB91144ED4BD7EF533F2584048DEE37E17CDE5FBC2992A6F924FEBAF07
-B626F988599DECDAB43C931CFECF99FC6EBB72F8E542765C26295902DFF60B7C
-7B9ADDB4858BC9D808B7F0909690CF8DFBC59A786D48B891937C31A219842A43
-234425B4963062DB4C4E9F534C77F4243408805B5A6B8BBF428632CA4AC03A7A
-E336DD181CE0CF3E742079E2919EAFABE16A63299771BF276EFA8D85C920F995
-5B9D4E8F1ADFCC5C29AA89BF90C186C5DE7679906B2FD4DB279D245D27D08837
-D3A8D541FE37415B706EC585C05804108C1D938E543B8B63E275EE85CE9DD843
-0A8B9163144B77DA1A552A25D5E77E94F29CF252BE9950F4E627D5F72536B6F3
-3278D4A45D10759F16AE42BAE8460865FEE84537F8EC9BF4813570E883B826FD
-1ABF3F4E66DB6FEF8366E07BCF290EA67D39C9D81B2A7EA48E0A228FE3D5AA50
-1A56CCBF229C9AF2537A8FA70EEF41096ACED34CC7BEECA4EA1F23B39FBC39D8
-CCEA93E63F508CBE6722C11467A3D0D5C4C52031DE43C449333E4295104651CE
-E13B821D7904653346067E971BE0042C571ABF40C3A1079A675FE4264B784D46
-1B8FAA4CDE9851C4EBF69ADF51A7B68CC8706C08D13A44909D4C1D78DB0E0B2D
-0E0318304B229DD2FDC968027CDFF65722059C62154304D6F9C3F06DE22914EE
-928B7D1BF1FC7E74B4D882998D59BC086AA2D4EAD0AE39F6B75B5A3FB9994506
-E21731E1A15F0F2D12F88724BA72898197A80FDAC00243A3038871EBD2F2BAB1
-C616278BB78490CB86F552CBE5DD0862F3793D72C68AC16AF8E38FE1A523A5FA
-9B0428745B1455671CFA1F6BFBCCF9CA23C833113C2948E7A6AEFFF1A83509FF
-C559BB5EE7F92BB43F7F37A371E661C826F63DD0C1B25E34A8119E71EC82FB66
-23C7B126FB6554E7560B1B69F2EDBB742F3B20D1648C151C37A8570CBD330A9E
-7592A8607D2D727F3AAA0FF2057DF4E2A4C7D3B658C6CED38824A770420D89E7
-F6AD385DBCE9C9A9095CF0042052A67AB804A6675BB9373A99390CBDFB715984
-A069DE543E4C6ADD7F1EC7A15392EF834EAB4584679A43443953427DB13E6959
-0F2F5061C99C6D00FA5327FDB5330AEDE19A53DE3AE092634DC6AEEAF63A5BED
-990F8A117AEB1CA0E7F7DBE02CB3D86465F1613B976D1CF6F3A1E69740A2FDC8
-062ACC45EDA6B863B60015F276860FB79C31D28F97A799568E66D0A8757B2C41
-E939337B467303041D0F4C59390B2E41E5F298F275DCC699D27C459ED4D5ADBD
-02539F00095D7E1872862142B46BE06513D3EB1A406E6BAA64BE795122100F09
-C37E5D1834218EC1D11B031C7DFC9F5AB071A8F4DC08203821366959E9191D4B
-289682D915AF28CE5858F83338DC51B6B0DD052A181D9133FBA50CF18F70EE65
-C33726A0450EBA9D0E0C3662AF6C2121AB7911AA9880D6BB6811D6D7515888E7
-199A0E632104059A88C9D85B19BB35EDF4AB95E1515BB2339572928BD5FE8CBD
-2D4DAF55DCFE29FBC4C3D56336277BA0C9A889A129F9FA7052AD1420B8705163
-1A808EC1284C888D78CEA2B4BAB71AD76289F5F4986008FA9BF328E8537E6C91
-E11DBDD8447E1C9ACE18DB0EC3D5742C264C8EFA445C5D16C2930FB43669774F
-A2CA52144D99EFA8FC427DB4128CD4C036A8C611B087335C780740FAA419D39B
-5DD68EA89C95275F9254D947EB3683D0130255269B10C6CFF29EA0BE484C9949
-96188FCB747618A8044E2E37DFFD2DB8ABB621B34DC024259340677095B6937A
-78EDCF508AC91D4CEFD872AD73F50582DC8807143CEB9F109C84DC5DA30B64E2
-E56DE973088A9D32583D6946DB4F3523902FB1781D993B89D5F56D79D5D98CC1
-7FEE73FC3A7D1BCCE90179AE450829E228B4DEAD3B2B4C79A400CFF899AB26F9
-048B0875EBC871AD23BA96F88CDA8B87FE5809A13889A6AC349ABB25E54ACAA9
-C213C5DE2D01BCB9CC0D7BBD384D23AE12E289FF8FDF1F611F5E14D4B20B15A3
-42D9B3B37A83A9CA39B5DB6C8316C51B70F211530A56CFE54D63E88169CF5233
-D1A7B2388025B3EBD2BEE0716C3A2D589EBC7A42B3DA602AC4E2FD9C9052C922
-711E44408DEEA1FE0C9FD50A39AD46D437F61F284A2EFD42EF158EDD71A1486D
-4865D6B5E20E60F4F4FC3D646909FF1EE2D7573665E4CD8340A1B232CAC0202C
-C35BA9BB3D2267C7E78518F6711633F888EBEF72DC750AC2CB362D528CFC8B2E
-A1AE1C05456F50EED8CAA768DEF47FF85C4322F02D7F9D188C6F285C674EF589
-251B0B913339FD701FDB281338D96704ED7ED908BC113B4275A24D058955890B
-12CCDD5572D63688426B0E1E9A40D6AAECFA5555C1CF9DBEF8C04CE1E5A63F14
-969D39B6DAE8A91F6AF4CD1E2DA89A4661DA34E272B6032C442C031F081F5DF5
-858F4620885773D8A2B2F5EB6DDA74C1408DF279900450E4A3E80BA9A9B1295E
-F24EDC3F6EFD81A741EF74B0202820516C4FB720687BDD915EB2396128C3B262
-20E3075DA153D6FD36E1C05B855929DAA4DE694B6F15EF2145C63250B24B031A
-4CF0AFDB225E91D99828B83BD90F1702D3906D45872587A3A116B138AD9627CE
-E778A949C392202823C670FDBC56F1896FFFFBCF52C4B400F67BA36B5FCE44A5
-F18EEB8ADFC088C99DFF8E0A593E81A5ACA2E3693005F723C7D3E0AE2BDD3805
-8C6007A00542DEB2539709558A88B21003CE4B2C7817AF207ED576B25A41DEA0
-FC55A459BEB00ADB01309B35920F04F84B7B64F95AA99EBCB843A06CED900D99
-97BEFD7CCB9F4D85876F10160C8D63E2FDE82B7A8D945F37CC9933ABE0FD1D76
-268296B1A5AB06B2E814691128771694224781171DC6266BCC290FCE1AB59416
-85530368115BABD4F1DE45952918D1945D51EB713C283DAE8EDD559F437CD886
-A4B1DA6120D685C284673A3EE489FC1AE4297A3623B339B7D886B6B4B8F9F4A3
-7BF85E320A52FDC6323B51879B98A14C33C567BC069D9B44616514EE1BE36F90
-EC5FA33E1B6B0A46945D876EF0085E74935DF2560A03321861A752E59742B9FC
-5C501FBC64BFB1602459885B63873DC857ED37F8BE1A9C6E9517B9BF5A6161BD
-DEB6DB0381FFB34A8A96AB4AD48BEC40D4C198ABC599C3758AFF638AA75BBDA4
-8545D5F95FA426FB25587301A43E176F6CED7851E815AD907F2443E70740DD2D
-4FBD5D978B9B37F59D6DCF0ADD0F90825DD23558FCB858513602C8BC82BFA383
-7AA6DCEA4009961D06DF233C5381A7F9541259926446B2F03664BC5978A1B6CD
-EA6EBC9FE6100A65959513EEE32E69D47B55BAF30A893D77142F943982019C01
-715CE29923795EA01C58A798979939B507C5B29A32881877EF7EF0C5CB3DE591
-6B9A6C3F3FFA847F396A396F078860B59850BA4CA3115CA2376AEE6B30C05DC1
-6F9DB6781ED0F9D45D10E096C33B1B7CD12A9D57C6E49AD833C4B093DC82811F
-16B3BD902BE764A1680831EC5A6C1CED84AE0DC0A65678EA5270BF20931E6409
-7AA44EACB22CCA11098F8A51096BE83A1ABA56C9EED4195D5CCF24FDAD92E823
-C439DAAFBFD652157D728F2754F28304710D3CB33763156D76A259D446647A11
-493FAC70DD28063A4CDDA162F72542368E1AC2826C4BFF7109208F66371910C1
-068F21779FC39DE03AECF1C9FB2F417930C22791961D801284DCC89B0833B6A8
-D63F153ACBFB7B7D547924613BBCCAED37D90BAC5B0264ED31C7B9DA5A2BC620
-9B20CA48424D0FF58905BCD6190BF4B5FC6ECCA1BCEF13426920197CAB41C4E6
-E82E8EE7BCB23C6BA6F8B58001533B225ED721D6CE3D6E89116EC33CAA6E905A
-649F8C6A1AA187A48E20DB864596481976216DB78F0F57543DFAE3CDC0A6FC77
-2CAA49442527A5D94DC54BE93C875690CBE52EAA4EDD9F2A511361BC0F0807EE
-96AD0D26B62D809E82EC14EDB158EF48A748A6FE0C3A7EE5D4479B35425F35AD
-3EC7444F6FA75CEA5011AD571078293448A33C7647611CAEE87974B0A756DAC9
-4E1BA78DEE477FA59AD50BF5C52E068A5E044A4A4994D5B24CC5045F768A3C51
-D4F65E2A5AFD271A7666C6835E28C60751EE528C0742433165AFBE71562A3016
-F59676D56B0B5F7E4984D664BC3ADDAF24B4205752EE21D4B57057A943018466
-09C3FA5D2C5BCBFC22A643586BC9E7A965DC34C0A7D272B5B1617BAC2B0CB510
-5DD5EC6F7ED1226D19189FF547776698FD48B7A6A038131F869A9E24006A4FCB
-9FDD5E4A6DA9C531E1F1D1F0131CF8BF06B78BD2C6109E3D5251ACCAA6661142
-7E0CF66D8C1998ED3DDDF69890FB2039F35BFBA2D9E6EA42F2E2E88E8C66D0C7
-6B2A404F1C72AD38C2742D4AC7AB941BB9306ADAADAECAC68EB229D3CE861D48
-CFA0EDBF55C5AE42B7888DB9FE6BFE987CD2D13CF5E416829ADE55B64E33933B
-A1D88A6B89D36D0DCAEC29DD4B4C2D2021ED9831ABC1F94DBDF4952CBC514C25
-9F8C5C39B4E7A77247AA023F208B63AF2A8D436901C08079E59BE74DBF83018E
-D58B882B96D1D0AF2274EC40BF80AA2D323DBF12839DDC16CD48B4F6549B8EDE
-4B8D2EC13F781065B10E08698C3C1C07186089B5FFAEC9BEAE7F753DB024376C
-044C96A9CC8F911B864C5D7230690AFAFB176EECB756DFE15133B7173A6C058C
-62584ECAB08EF752434BCED665E7E1C67B7C49BFA4516BF9E870BCD342D18AD8
-5CE246CE72ABAA86A483CE01CC370C45A6A2CF9B4C84EBB2670C26013BE4BB6B
-72A2AFADE105643B389616752FD84BAD4064ADE7576EFAB481B94C85135276C8
-4ACFF0A774194E3BA0F24FEEBA02D35C0BBC0F9E152C300510F511561664524F
-93F4770B700FBF2F2813504CA1EC0B3FF5C5846A96538891CCF04F4CBFFF3D2F
-2F38EF6A80C8F66A69CD4F9B0592096086B6442EA869995A2166423E9427B8E9
-356C5380F89961D44A4E9683970360F90F8402DC5F14AC095C43990F2BC3445A
-667194C34CC44237285037E321BAF2F34D978BCB43317BCAEB58D4B2EE59417F
-9A16D5178C7290C8BFAB66680239FB6B89ED6A51E2B297BC3587ACB18B41D169
-9C9C52C536229C333A059C91171FDC8698080D7B76F45BC6EA83453A6FA312F9
-17ADF154B9000F7583FFE37CFEB155942117C6539E20533CB8B611FEB5284C1D
-F66F145B255512CB73222578BA17E1B849E0EF8674AF6032F64E2C91F68AA109
-472D03BFE68DD462A89851882CB730EBBD1EA5090260E9DD94C29006E942BD3A
-35B784511F77B8C743996FC6AAA6C1078232D0B20BC06EF006A83D66BBCC05E0
-211D480CDC914698797C8D627BEB4A24AD9B2EBE70B7CA2EAA421EEB2A21FD76
-F94B8848F1CB8F4BD7FCF317A35C5A4691323F006604F62D5360BC42DC80537E
-79683A41C261BE135F4E1015116035AFEA1D04CF84B46567D1A153CC13EE7195
-91BCF7CF31A04528580B58C5D6556C106D99A503965EBBAAF48B6FC2B2780AB5
-8D1C09A89B062E71D33F54EBC1B7C256B161AE2BDA0FA40B8105E39C905E242D
-F09BB7FC0B6F97EA092E181D77A6984BD6DB7E2BE48D94A43B2D475EE8EC8535
-60069C7E2957894333D5DC8D83D72A2C872C0014FE902A1548DDA81BC2C64109
-A5B422CE9DCA2D16A8D65C684572B3E97EEB34E2B444D87544AEAFF235AA87A3
-6E0C1EC488CEE9F49EBD0C00771F9667553481245A167F898102D44CB1D7B48E
-7E459EF361303128B1370EC9A7B2D2238B7F0D7C4C644772B5D3CCCE731442D4
-A95F7A1C4A7C0F09B7A959F31C19413843539591853BFDA5CF0154E5CAA991E2
-3506267479798723251F6D39B9343F107CD17E75988B58E087A08C568A14A2C4
-50DE1A854EB79608E52F06AE5E39CA85B9FF651C5B30178CDA0027F752A59B4D
-B86CBCDBF6CBED58684F1689EE57D558C8760C2C516A3D1E04590C69FE9B28E0
-FA5887A621416D7F61C8751320248E5F03716E8775D662F7C80AED68AACE7749
-243BE9B9E21D5039A39D7335D33698AAB8940347ABB2213DB9686F320397094F
-7DB5E1A6EBE4E419C8F359380FE8A0C033D8147AADD8A9E8585F73EA783101E7
-B86B32F025611C9D6030871CE13D292F97058670C6E61EB7600236DBE30AA888
-8D90ECB9CC49E898819FC500E087D64CE8B8E070216413964069859C65B3F6F4
-11602580BC4928189DF803BC2B8559F7383744168D03A892B04EDF4539D429AE
-E8EE61DDA844C7590676E115AA5C6AA188943813F33BF5EE4A53C995F159F511
-2A65840F49E1DF95B1DEA4452B22886F368D1A704E643979BE6DEAE838BF72C2
-953E734E691BC16C5035BBF3E6D1E5FF5D4911DEF666ED8A31E4F2A77BF611B5
-824B2B8D179C2A16D219EF5F68FE0A405065ABCBD5F880096EA96FFF759DFA71
-043707CE9E7F56F1CC8074ED996EFC22CDC91B22E04F74E78FE23AE7C3B7A0E8
-B8A7A870DCA5BA7FB297E4A1ECCB501BD2EA3ED3CCDC2344BD2666CABB27A39A
-D5CBD0DDCCAA872665DD312102DCAB9341E727353429D4691E9CAB420E5B7C46
-170F357F718C689C115B406394500EDB1E8FDB8EA68B65E68BC7AA340714CCFC
-3D2359202C8C16720028798D782199C363AC60C93D36A038D871F11D2E47225D
-E848D12D7DC5CADD5C2B397C71D1CDB5894F0DD7767E9FB34BB9614A9B812A2D
-CE02D57B3998B0B6622384E41E71D5D5973F5BDC8575B0D433BE8BFC025964F7
-00BCD36DFD42E521F7C86891A3B2BC7EED22F6A31FFB449A02BD57EDD9E24B62
-70F9EC3F7A23B10B6F21E960345169B0660B1C54521323A60D4853891090CC47
-354F299CF5A07AA526408E75DC12AAAF4181A2AB043CAA3FF6B3C03848A892F2
-FB0BE0E88FCCB64B38F0EB5E50C9750EA6DF46FD8E22DE12FB4EDF5158ABB8D9
-E82CCD3229B583D1856D6A0696B0AE2F1DC10D9FD200136C101EC0CB2BA6EB44
-483595832B3EC6BC1BD1BE7FBBA6188798E9795F61B76A1B7E039E7B989B3CAB
-9CE28973AE6BB0ABDDDEAF354232CE21DD2383677BAB9D2E66F1D26904469C2E
-62AC6D3B483DDF47BDB38C2A00689DC0BD183133E78F9FB6DD27DFB5DAC18E37
-1D2A1D414EE3DFA13F88C98758A77401D7D5C671002B670A3D6F8E3197A3DBC7
-245BA7197CD870FFCC6132CB3CEB583FCB501D86B1AF8CA0929A4BB8A94B23A3
-F56EBCD82EDE14195A7F2714537A8F5FB99EA10F5AE4870401D9154408356D47
-FDF2BC4BB8B9B941AB01CB622B34627208DFF8A6D94B5DF66FFFD135D3285FE9
-F272C068D1F44E5F815946DAB89D2D3B8732608E0B36E5C29ED7034641AFB1B4
-C5EE92F0C2BE4095BD5AA366303DEADEE04920B67C60D69977C756598983FF7E
-D05C534B6D1C227E27ED631850257734CBA8D4B94BAE88391B0DD249775220BB
-44CEB28CEC2449F00D18D64564BCD270215F09DB5E8F0986CDAE91F84F2ACB47
-B78AD52656C5E6E72595801420624C1BCC9608EC3E9952E0B473E599EEC161F2
-52846312121C86D8ACA5EC463941FC78CB6EBE796671B19F34FEA698D23C6234
-8AA58D09683C9213EB1A205E2278E5452E4F3E49DD5845936D067F2BB2EF30CC
-E08DFD505A9E8B4962824BF09BD9979B12AF6A0D6BBD0B79D7483113995847D4
-16E263F0E7515A11C8A3AC8B632B7C7F8813106BE042EB281B03E88FACD342B9
-BD67A71168B736A4EBCC3AB93F50130828F1C81FA7B4B5A5F5C6F5D536411A77
-4A6C151EAFAC44DEEEA61B988767E01411933561857C71D30E2A720535C427E1
-C3C9B127010D9F0AB01013E93620AF5F2C894100E502E538EC634E20D086C2A7
-4385B35E646ED6880D248F1B3187ACCCC389F940D8E312B82F8072422EE19F39
-FAFCCC717BD5FB0E7F4011DC2567FBE95D2B05C8A85D8240C7B9064FFCAB1B04
-0C754002C32B88977B584CBD8DDE52277CEE68376FC42AF5CB601E359A58A256
-FC025517BC6D15D299221BC4BBFBC115487E49BD940E854E106D554BA342E4B3
-5B15B40F0B0CC421A1854266F4B9C42470773C3AE349BC46EFFBDF3295A2AB63
-CEFA183A4EEA7C70CAAC9B94137C3DDC204CA9F91B551B9C573EB2B3327374E5
-40A4A0A27B6AB00E9C1B155C72BB
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSLTT10
-%!PS-AdobeFont-1.0: CMSLTT10 003.002
-%%Title: CMSLTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSLTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSLTT10 known{/CMSLTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000800 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSLTT10 def
-/FontBBox {-20 -233 617 696 }readonly def
-/UniqueID 5000800 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSLTT10.) readonly def
-/FullName (CMSLTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 37 /percent put
-dup 39 /quoteright put
-dup 42 /asterisk put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 61 /equal put
-dup 65 /A put
-dup 67 /C put
-dup 68 /D put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 83 /S put
-dup 86 /V put
-dup 95 /underscore put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE33C33655F6FF751F340A8D6C01E3
-2E02C24E186BA91B34A1F538959D4450CB683EAE5B034D030186901B458D3777
-6B3942BD2E07121385120248891AEC2EB33C4E3A0CF00828D0F130C31A918C18
-979FE94379C648EF21ABF659253E43CD1253866F157F1DF85AE7E8714F061B1E
-ABA3AD094FE8D6293916FA82EE4F486C7E513A06D4C9BE44306A8287970B4ABF
-B6D1F9274A5A0BB6ECF713ADBD1260D5D6C4420D357FD486470A74B2F0621B59
-A9373ABECDBF32FA68AABB66FAB0C970A3354A335FEDDA1C288245E6C890B8DA
-3D0EB953283ABFE372221EEB1586B0167F634E3F29CADCAB484B81A243CE1E3F
-D5106AD6BDB1AEC91123377F816711CB9D5140120FEA84B8205B79D1569509FC
-6B671211985CEF51691C45A168740BD826464B2CB0ABC575E7D453161328F80F
-3AF1C99EC219010EC6C95E0A8D1909719CF18BE424967E90DF67537220E60C3C
-4345B154D08F9EA684710E659DFFB0BA1B7FDDCD519305900A5E1CDA219A6C90
-DF8BD712A3686DAB90344E8784C7A9AF3318550285039B701B9FA1D3A3C3B6C2
-753F1E794A3463A173C99A9EC0E2AB5737134CEC2C97CD6A37E38692ADB4B131
-54697B7BBBB23680C72CE96066D8007B90AF0FC5958232AB4F21826691E9874D
-107F47DAC1026298D787989BD77CB43A09FC95F6997DB00D8483AE9C2716CBD3
-7CDF02DA34FDA2F0754ED0968270E118DDD8BAAAA65C41D699E2BCC2556AA231
-328187D2F50FD518CF458B0BA1F7DBAF4B231CFD61D5DC56335B53C3013BCCC9
-85690E19E992ACE55EEF2BA7A75DEE6DC33933C226FC1494269B7CA4CBAE987C
-2C787386400172AE3F44AE47115F4117EED866713BDDCA4A7AF658C49F913CB7
-308635000043F63BA210410A66E192289592882C477B2EEA0B2A339F0E7CF450
-CA0EF79D3A6C28598825CA03FD688DA60C95EF707C6E67CB7E57DE7A80545195
-739ACBDF27069F34C9E0216C3D17CFE7A652B910FCC9B9AECC2E646809C22D93
-FAFAD465DE794755AFF5BEC17160C9563B5C51D07022E2D3A256FB5CACE131D6
-F4B30F591A0419D957D8F0DCAA0A8D65A8D83422AD7C2613FF13A302E152B312
-3F1ABB45E42084EAC894FE335C07324849C9736D00C872C4551997DB889AF17A
-A52C5AA77DEB548B0103B77F65717F70B90C1BBAEA7BCB4959F32851A9882A3F
-55673F24103D6BF7FB3AD3EC3CC50FD8FBB4A6B13C3D278174320713A7B327CC
-A71F01E50840B33D0FC3F5F6A6F2B0F2D0E38494B1C73096A430510F927235FB
-69E931DA8CE5415EE88D0248565E3347353621A48F7948AC9EAB5F5057541B50
-82BA955D90BBC82E582FD71904445A59186022FB928015235B60830DA59813D0
-8DA3FC306C43FF8BB2CB6772B1F7BA3C1AA4B2343E7DA7E065EA53A4E5E28DC8
-0790F2D5CFB203CB135A08DCC9702B59A63290444F202756E55B9FB053F773D6
-0F69C63E74DE593E49186FF4304E8FA76C3E3006358DE549E946DB69431981E8
-1261C9C9A884E4EC708F69E6AF5D22C5BAC49F2AE85903E3D48D03B7B97054F1
-D2937A0C685D912D6D20A75A77712164DCBF8FE4D5460DACE139C5A934EEA09F
-B94DBF168A4BC03A9D689936D833018FF43837DF9519AD10F357F00BC068E737
-170FC9FC6715165F733A0B6FADB9ABB48B845167DBE6D771C916577FC2132863
-767DC6E3D460E779254194AA690983184D934F5E858C1176B3862B69B42EBE7D
-EC9AC4E020085D474093F7694C8A8C2025D4B0163E29320C384D62A9F3FBCB1F
-AB5A374EF3DBA48AC2147A207AEFE8B78BECEBC55C97B538F3A0FF4589D171E3
-826342C8A5186224FEE54E4C6AD5EB02BCB4088B132FA1A48362824BEF161235
-8E661DCFDFD8429C65CCEF63902D0E07C2FEC1DC2756D942F13FECCB7E8A8048
-345338F24B7808E46A04A915C111F939E2669A12FAC0BA4F74B832EAC83EABEE
-67E2817C058E69C2010F2572FDD15194CD8DF0FE9F827D349C0444A18D1A86FD
-802BC120A5114FA3523C221242C7E767B0AAF6AD15DA1561CE8EB18A2401D71E
-20481FA5F1E247CB5288F47795A6A3A3BB186E89EAAC4A54AC91405427136127
-5B151203426830F7CADABDB3FF63B40CA29CF8E667E71615869978E99E6F3F07
-0170EACDE3DC62DC05681D7680E2E96C30002AE34A4E5EAEDF88577601A82C36
-22D625A03B0451D7BBAAAE0C396711500E94A482EA787495073F16A76D1657DC
-4EA7C7B83BC30CE7F145B65B6E2ADC207D192CE3B5FEF7031F4BD64F57E1BEFF
-CCFFE06F1E4ECA48B442DF413766A70DA626359183A9B24C70419487423C816B
-4BCB067E661E47E172563090D6328BD738D2B0FE41A0C1D7A47576A79BAFC880
-0473229D134F998909898301CEF50A82B627A9A06DF59D0B9C530EC5D877F1E5
-220D3A1ABD2ACBFDF1933F92B3137B22B9F95A961D93B729307749A50D8A6403
-7AD0F9C40743E39B8D198CFCF7C033D99440D46D821D97545B930EF92E7AE005
-27F2FC766FDD4790FD1913C7A13328E73E587618ABD9008022C5C6C23935CEFE
-B5ECA2CEBA1D25DD846B48423F7186E03B1F61C8F1D5AC95CE03C83B2F221300
-7A761D6CB5F7F9251D3F9A7F4B25B99EE7A1347ED3059A811A82A35A033E9B07
-A4FB2A95009576F48665605C478E5F6C1B135016FEB4AE6A6BE4B4359836E04D
-45AA11366992162973FB6266547C2E570B8F56F6D992D2C0F63950A16839FE10
-F56E59D93A37573E3268C5892C9F3358753D1FAD6379E82BE740FA17236E96F7
-C53A2FF785FAB86AD17EB1DE8A6AA9C69B91C9D9B43B5188E51F6939FEC21B65
-AF17DCE95DD3BA4F1DD51F0BD5E5869A1ECA7398B6E664EB0D189181E9C23012
-DC1E54C146842A90909DBEC03B79B58909205F2CB2A7F83C66B437D7F7DB9781
-FF0C67F004E979C95B706D8D85255CCD827CF6196D847DB380B56980109E96CA
-997157BE78A4F758CE59D78158A854EF2C20099438F74777D3B0298D45BA86D4
-3C0AC30C984718FD62ABA0567AF0A70C1DD41953E3E7212D5C562085177E650A
-2ACD49940551E3F7619B4CC31DBF67AC15D938619B95DBF66E6D1300B1BB8605
-31C4011379FB5388CA49E4A9BD6C921560CB8D513F8716A0733D2A7D77E62D22
-A69B54E9048CA168D210816E613CF6357706EF6B118A1263B858B7E19AA98891
-43BD675B06C893579957BAB97199ACB82C080593ECB8B66A7334779CC16E4D0D
-4AF365CA6AF9727AE29417B61A5FD52452873B1D666044F8E7C1F6C6AA3397B5
-94A5780F4005FB5E41698FADD1594B505A58253D68D2AE3320E22165D198050E
-425820CC0A43FF1D61F168D87CDD30C14D387610B6CDB63BAA39B3EC9B3CA616
-FF1CC679227749DED3DDEA26B4D97C633090DCB8D8A6E5E07E3579E4A99BF1D5
-51E43D1D7F139C9CB1D76D8F693A3F23A74EFBE79F01E0B850BC6B6C7F62C2E9
-859469A144853434895D73DA6BD2B348A48BA80E79327ABD96539F2EA2209852
-E1BF6B0B819D7C68A9A1D0F6F39416E3EC4AC21DCD3C51D3B5B8D417EFAE165F
-2A7E0B76E558AC9F685A76FEC7E3C73CD607D9025DE6113BE5D0401887A53910
-82A813B026A502B51D484797D9D7E79A25B6624940AEDB4A15F2C73CA1AF60FA
-22D15BFBF268EB044FAE17822511AC6580D1D74DBA3C3335217780B29FEE792D
-200B00B8CD888A8BFF15D938FC758BB5CD9B3E08E1AC6CD1669E663BE86711A5
-892684DFCAF70C11E803164994BDAD89128AAD6461D4558AC2ECA3E05EB56D32
-0290AB16A6DF7133DDCBDEAE89C6CD83552792E23CBF567D57E46548EEB0A140
-437492B53C14419B6FE7E64AC23923A9E85F56A9DF209DC4E6BCAF1E045F9CA3
-BB904BFA150F4083C18B0CB5580450CDB657EA768E71222C71DA911A722AB9D9
-E18B6847F417125C40EA8A0CA1F551A4548712D098209C78DF9C3F78605E5402
-DA2DBE2218E49B819296D5AC88D17DDBA982E171733D1E9E295B3157C9B90BF1
-CE68CB185947D1E3D7544155B741296D14B064BEFD3E6AF25C74006CF6800551
-80FCAAEE6FC9105E1674EDFE68C45617D8D3E2264CD395EE94EDD017EB85884F
-FDF530EDF4F3F14750CA066F149E688FAF8EF4B5FE6AB515CD298E8D170346CA
-9B32BAD1D86DC147BD12EBEDF6CE1E749C5B48314F512470A568C172C35CFA41
-031E34586A89404CB5372D7B2C7A6D96F420D4D7C2D4C08184F4AF86B4536A90
-9367598424112A7B05D7107B23695CBCD569002290599E0FF4EC5C852C31F5F3
-9BD56BB840DC17DEEA579E7A7A9F764788D4E3774BD523D21267869224D68891
-4523070E80A123B58F7B579866332FC38A41A5915EC06F2D14FBE4A6CAF59AEB
-57E98D661637EBB885AA5D74AD429CCFF64E5149815E7350118E6385F4C74E0B
-2EB474A6DED021D429F01C9B0634A09250C40E22B3BFE1B7246D18116D585F39
-0E06E9B5F27A6CB77C8E9462189CB900CFEF08F798CAE15FBD94587F33816EE9
-03FB2DA6826EB69D8C284AB9F7B00630D0420EB6E35E0E288BA25F5C2345C067
-22412633898AF99C2FB232D1469025BF262B567F29A05F4816FE8EEF5F02BD79
-06202F6A1E3E5D4B3C91BA8D5FF53D5136BF70E5FAEF441A7310CA83721711FC
-39EE48BFB2FF287234B1A6102AF146B10A632A53AF97E11FFAC3A2A86BBAE3BD
-E0459ECF0305366078066F2CC628A3918E775E4236651B3D817AF1684B07A163
-A0142D16F55D2FB5F2255A8813B8E54EF3E801E95A4A226AB8C0476AC5EDCAD6
-9258ACB6F7C0CBDD298A0B816560622A1871FBE2FAEBFE697A8216A0D8FE30C6
-B1BA6C3E975F78182743842E7F851064037394142AC91B2530FB1D511EB20F3F
-79EDD8B7E1579D35F6E7B2883C47A46B6C1A458BECD6BE58AAFD834A7D82A553
-2FE4E66878E4699856DEDE964F454638F768AEDB595A883E380408F558015FB5
-8720954ECE2704AFAD4D62E8BB2657C4FA920D72248B3F762B2F12D125B796AA
-1C4BD6B42D766EC1C9B2C7AA4B6A3474BF753742DE8AB76D0AB0DD9A20EE2DCA
-0F34CB25995ED3183759CA83ABC32B8BDF0B06EF169252587971F7D37463BFA2
-BE36B2E45559DD73DE7CBE29DE92B9BE6B9F8093F934BA311D81E18A8DA92FC3
-312E3FAB43C53E803975981F0076EBB8F257C123908450661B6FA79E7ECE98F3
-B0A94E0DE3A4DCC8E0FEC106CDEDAA297A75BF1E40F3C2419BF72A644F452E2F
-9A8793810319885EB3AB23B1E80E8B62A889311355C73722C18E62711A7E6A16
-A5B923408444B13F6522FECA9A60B067EE332B83E1A69CD835C9D69B5D8859D6
-91F9276863D2E2E8193641E4239F4ED15E2C482C735BF5434BAA454EC2830C1F
-7CF766DAC9E924F17F03093132627673BA3D99DC2DBFC89E5BA032C16D3C1C8D
-78B3C464081044DB53C7A29E925F4157EEEE928C8E28EDA5F0A4BB6E0042D8AC
-7595C350645118172D04FBF06B2C9A9F3603A54B57999E2960C993724CCD6A09
-766BDF73F66E07FCA9BD09079CE8010E6CFECBE2E5DE1EA4E280AB78D5184C11
-016385007CB5AC0BC95955A1E88EA1A1D8EFEA886007708BA063F556D9284D4D
-C764E75CECA51BEE3D35DFCEBF6175953D30FDAC00F23B1721A1DD577945B5E3
-8176A21A649D907B5F63C71718ECF32ECCF1B26BF15AF694F1045CF98FC75278
-E9782ACD3D83CBDBEE690D29B3176E745AAE436382D258CB22F3DEDD02E441FC
-6A9931AC2F61156DE258DAAD5EDAD41E6C0DFC902173168BB4F51DFA7EA615C8
-B0F92FDB118378CBAC3D56B6B9BB0883C0C14EAA67396AAA7987222A132B7959
-44FC1E9D6DB6D549DFBEF8D2DD8C53DD3B66935FC239E74E2C440CCA13C068EB
-C4A3B69F499F573D076E2C92E24F2C69B806591B0807CD903E078683854963EE
-5125C3640860CEF37BE186DB781475554BFE6C528A9633AD5772BD53244E24AB
-42CA2D1123AF45FA257940CE611D83014DF04E60220E9AF27CB2A2247BBB004A
-F5722A5EF058FDC7DC2B6ED1406649DBAA58DF2ED3A91483D60F11C4A39BAF57
-CB1E320A987B790672CDD3E3BEF4A67032244DED2FF4588B2072CDABFEB36009
-9F4BCBEE16F811A44CEC77F8AE873C90C0F4C975E51014ECBD45A56A63F034C2
-82212977023A132E5C88AAA826D841FDE9CBCE7A01E4B6F0EBDDB9A69EFEBD72
-0B41EDA807CEDB791084047624BC11CE10B7A0A311272EFC9E013FA374D97EA5
-F7998FD908748CA72D8CABFD0F01220C2114D3B462B22FB71A23B284B1CBC7D9
-EA20BE71F8ACCED21F096009A14A7C7B51450BA51514707EB46B9FAAB31CFBEA
-E1DDA6F5D9AF0B6E7D05A1EEEEECD606427B0F2363D1B882B50140466B9D3CBD
-D00DB06DDD1BD4681E367DAA4B7C405C6281B67FFF794041738FC6A01D261CDD
-F6E0A330985F2CA782CBCC02B6F4EE5993434F656B91A51CC03B1D73FFA6629F
-14F6075EBFD83B702D8844A96CFB5C14051595BC7DB2218156A6DEDA5C98CAD8
-BEB5284D9D9F86406A8C1AE85857185991C360E5F44DEF352A1F301207BE94C2
-9A3A11BA468FACB3FA2D683419C44EFDD7C8F1079659F3ABD89D7F168B1591E5
-6105F9B3FA481BA953CD34CCFE73E427D3AFC46E5C58C2981198BA284DB8B37A
-6647BEAA561799877DD6858FCA71CA6003F2961FAA529906673EA94D82D78116
-4DAC81011FD175DA707C1E15D4B6FF19F8720A4E05E6E103E2DE880FA9C192BE
-C5ABE7C311C2ECCBCE8F9713DBA74AEC37A61C8F21F271B35F0F7C88B182525B
-A4183377597ACDA9A6E2F181725D427795B975BC4168A408D292CAA484BD1B8C
-9DC62E737ABC805C8FCB7E96454DA032B601345570EAE0379BDA84BB6D15D780
-42FA1E068A7D62F152B43B788513E13724666FAB4E2B4F04B0448194E46582CE
-7389BAF0D1DD4435BAA6B82AC305C04686B89FD51197C721D941BD2893596024
-1598E6C2BD84527EDA6FAB782033E4BB4F964FBACD96CAEC3F3CF89CBABF6B4D
-4D3AD14A03D4BE931632BB03BC2B92842FAD51A19A756892D5B978DB695D0540
-CC9D030C612E2B201D60D09F56332DD0BA1351EE62816C21A35C33DC11B37BE4
-D2F164ACD836A5CA1553CBC733E3B159860454B17064B4E22D3764FF6293BC81
-CFA3B2325C8E072857F6FF4ADAA8818247D431A28D3C5FDFBFB24A6CAA327AC1
-0B3630C84ED9F0D33B8255A3CAA9C5A0C79F7BF6BA3B9801C3BD0B30AEF7CCA9
-92F25E332EA97A7CC653C93D1497992D6B76363885B92ADE34C2A33E30A3B1A0
-57E9C16D8CEC189565808D3FAC92973C71CDE74DE9D8781CCAF88747758014C4
-5B62667D4D2CC5EBEBE77C5AD00C6A69D1819F5A786964501E077EB3BBEA52A4
-57729AEDF35253F7E1D31F2DD1587BC15CCFC1B0CA930DA83E2031B099A38158
-8D1849E7145AC74777A3C7136DEABB0C787E5A218309A65EC7D128147EDE3AE0
-C0AC039B56F767A22555CFCC12DCBC7F5A5A3B4E86EF5A69EEA93DF0BAF2A3F3
-7504F5C6A7A67388D2F9045BD755BEB7DFBC2EED679497EBEC808BE20FDCB5C7
-B586463BBB898DECCCF7249E9047DA943FAF0718A2050FCFDF8A4C2029FBA674
-EA64003AC03A847185936FC375CC67B3006EA681F61F640C3640A78D0C7FF521
-D477981E23E5956BAF42252463FDBEC49BB560A9428D248B0C5250CFA2A49CD9
-DBCEF73123C13BA382D3CF6A7B8A8CA3191D379A659F0E2C6E9CAFE9DA2AC074
-F622E397A2F7C73347364AE249B11AE2C34AA7F0D27B5F35D548D5AD1228597D
-D16A478C901D3A34D870BA39F770885B7DE62298F0114752435050E99EA4E5E0
-56B965EA185E8DF96B9FE97EE23DD45AADBFE02B427222B9FC99DA94FB2648B8
-46BD30F881BAD3820DCA4D8093BA0FE70E03482CC063B751439125623FA7AE40
-52DB2A380D89D5E37BF264CC73DA9A1540031587F481A0F146C6ED6F3F2957FA
-19477F075ACF608CD94CE466C1FC3EDAEA3ED25C96FE89A7CBFE528A33C4E84D
-465FE6FB031B48D904C5120D428D6B51F3232847CB0B7521E5CEA887FFC56F02
-0882B3BB7F5B0B954E7078DE3E31D8AE65F9EA55F4C169DB7C35DB9645617AFE
-078E03BF9A1BCE4E489AC959CED84E6A9B242B0452188FE2CE0EC111BF9584F2
-807CDA5BF7CC4A92C20167B897BA97B21C9170785FD7E5AA1CE86E130A1919C2
-475971302C6786D05D419007D78A9A97D2774EF4D5FBC8032955669B0469E356
-1BA6C1C3A5B210E9C2146C0797AE355583D824B2BB0726F641802D31F91BAA40
-C3D90C30A01449D0F3EFDE71D35086F68CB548AC66A16E6C1A4CECD34EB49139
-AC6F37B5FE670209BF6B22B6963985CFDF36B819B07306C44D6E21A31A8040DE
-1CB0C6846B22D33D6715F6C1D33BFE41B68AC47737765378A41779FF9662B29E
-516AA57FDFA4D553E25AC6EAC01367E0188C22959E44F5DB21124162F0339B06
-DAFCC53459F1841A5CE8CE9602929AE901C72EA78A05D65FDD96722D089DEC3F
-24E178D7169ABA83504664F9F60576CF134E61CB40DD842E6AA9E935CA8F8B19
-2E73700CF9A9634F56E4B6A37CF10B64D7550BD110D16AE2830909986EEA2376
-E2240D3D3247DBAFB3A1F79ADC08392B0137960823D1AF67BD59786F3D79D070
-C1F2D020033FED04DA5A50017BAE39E46889E0761731BBAEEB544E53701C7819
-4381878F8DD229B54F0C98D5BD27459005DC202D323256433E2D0C4C4B48A532
-3B6708A5A69DD7C2D3219F8B94D2B2AF935C1BEB3C65A3BAFA8A423D081C0869
-687D1790B61E7CC9712057875D04ACDA811879ED6104ECE037E359949CF46789
-97FC54BAC2FC5DD6D05A96A4C1E2AA5B7ED38E5838CB7B31D1B5E9FB85B4BE39
-11069EE32F89BEE796B2CF013C4834D316AD26A3F65F830CA276A874F423E376
-56E36521FB326D51FA7756982D2CED8E7D960428B66D3E51AC03EE98D649C228
-E619AA5F874DECC8EDEA553056C0CB82EC149131853AFC121355CC54902F74C3
-93AF72195226C9C8C584A89C9766B2E90EB82D498EEF62B080BE997D8E035AC7
-2E615A292C64735972DB11F621046A71648C13F704FA76BE03BC8614290D89A3
-8A932F00F1180C18F4CD8BDF404C613B10ED463FAD509C626364B478DF2E777C
-C26D702AAC0A2B4C1FBB8EB9EB4204457B00B95621B6D182C2D899C2D4C962E4
-C09AD27C6F77CACF64640E7552F28CE70128DAAA72C36C8DA5FAD3E698E7A9B3
-0263D3905D9513C5AA93368CD7FDEE93EA31F5F1CB63DFF86595D33F7F12FA8E
-176F67BFB414A13563DA7870BDA8B76BFA2FD7DC8088EB2BDE85C8EA126A525D
-571A98673D917DAEF6FE7C00D166F8641A58157490BFD73942C96BAF3F82E7E6
-5168F4875DFD1BDC880498863097E4FF174764D83577FFB50B8414B72396D636
-671C2F22748480F5D151682FBB1FFCAA449F140008ADF576CA39FF8413B74A66
-B44F62C15D9B281F85E0714CEAA4DFC723ED35D3A2F04CA1D968424B9EE7DFA8
-05DF736842237EE2121C14F1A0624F933BDAFF05ACB7108B135C3482483C6B11
-BB04287FE02B092AA045D1A8E11C991E6F49F9927FFF5356B95E94FDCCAE5358
-AFCED80530135D016EB1ACAE2ACB3CC7C96FE3F65F07E1784FC64D3DEB13D303
-AF159599193AF19A74E6AB2397B4FDFE9EFE9A4B35E84C7BEEEDBE7BCCC0FB34
-0E79CC666E1167E57C7D29EE70919D69DCBEA688A1575903D02887B8BEC90215
-967066789C8FB46BC6665A124570AA133D78B96CB602BA31A0388AFE2733D478
-D6C46645F519083C8DC39F6C16A745B4F41070DCF646C5E91CC660476525F42E
-4B70F84956AF0BC184CA205143E4ADD26124A4552D682DC67F414D077CD46F3C
-F5B6D814D0EBA77AA3D96C9BD4DDDEA29A19F0C321A508BD2F57FF55A0D60DA2
-1EF4453193AB7882ACD30DB0D152186774A56911FA28630897C4428C787C2D6E
-302C7CC9A28AB8D6CD4B340468C3E96FF883CB092BED1C28971491782E0203BE
-174354B3E5B1AADA8DFAF109AEB141B8E1341AA7D304F9F125C964758CE7A143
-31AB660D4F28E0E859F987C5B74163B80F932308DE11E10C6C91FDDB92F7569A
-B5A3F8189FF9B7010C22936548979A8079E1B31A1C031FFCC1B1F01608898676
-8943A21FC74F8F12C0482FB689A2CED610C6A59D8B202419B511BC601686F5DF
-6D3DC057A246F3A6C9A9F407AD930398D5E7BC6277DCE9BE1FDB787EAAA29184
-D4D54A8C962BDA4AEB6857F87501803E6655EC12BD9BAAD0D14057C95F8F304E
-10AC3095476DD7FF8FB0B067938E19BF8E69D0F312DBB2E70CB83824E6C3DCD3
-BA18BF992508CBE459783923C2B94D72E1366DFC3FD563D8E26E415F4DDEA5D4
-050BD9ADADBACC58EA07A3D18BB912FE4D04D02AC1B6FA67289DAAF80C0F5E07
-6F4E60E874FED468ED5A3676007F12E49C11C36A4FA01E2317BCA9E54D667662
-A13AE43190E740F81AC5C67431CDDDADF5FFC7C8D113ACC1C629F4219A27D93C
-3E1F624EB15216513AF279A09A314B63B22C3372890DB88FCDA29B3D1A258DDE
-D8E357F0FFBE0F158E2A1A64DD2E8B762DBBCE752770C49798DCD301E9FD20EB
-2CE41AE4A4A066A21857E9F2B50A51B1A4E64F58CAA826F479A55E5DDB42A720
-095D6A9ADAE7DE6707837D3E921865909DF15EE8B6C43411EF2E64799CA91DDE
-23557055E2EFE39F6CAA630275C821082193A15A73F6EBE4CDFA4DBE6073C822
-52244D512B32DAD17F352DCF0ECC24B593D4844CB0EBD654D84DBE7E3E272F44
-F857A223360642873E81222A30D64C93777494AABA8B109D8A8899082463CA5A
-B2C005BC3C75F49F475C55439D680C3E6574371B6FA758BF34F345A7EC707163
-A8E3D45279507C167BA1EA784A5C59ABBA7938580B3B8852FB79AC9588772998
-2FB4F7FEB6070430A30F61A0DB664406B2F7E82815331A975A4B880632871986
-A570F4614A3365FE3C0E1A95FC699B949E07B104540071E3D08E4904F56A2E73
-C7DE3586F2FA6B115B7A80FF02FC18BB80FD5C0234832C3CD26001FEB4459B12
-58E812B7E4EA9D3CE08F016BE2E462757A5843CDF83F2113F0D4690CE1AB455A
-AED7CB209ACE647D9666590ADCE5D62D48DD88827E60BA9FDEEFA94B58BBCBDB
-85CBDFB238CBFA399A8FECC609EBFA33863693522C96CFBA9C1BD8EF701CB1A5
-60ED15AB13697E62F2ABED9097C71CB4328048B68B4883B72337508F6091BF4B
-9D6AC54363F8F0A6970BD02C0BB96CE892C97CA7378F4A3A87697C8A82874175
-3939E983B4605835B2C1AD838138B622BEA5680D1B0ADC94265FB313CC3144B2
-5E2B39BC9B3834E07664788E0FF2AFE66CFDB4693EC29DD373D17293C5C3D875
-825C5F372FEF80413F0A70F45A5D99605A4005FED7998215D0D402E18F20360D
-59996F0C88CD9C13CF332609C5A8B58709DA131A902ECAFF194B1E04402E0162
-87DD1E10334FE8BE73851F4D3B5A64D37C672FEDA5F1B9C6B2A62A52BCC2E7ED
-6B6D8101E4C20E6D229EC57B2111B6B66C13FEA12A5A05A24CF32CFFB69250C3
-7A40D35CBF88E7EC7CBFB9ED313509439AB8EB353F88FEEEF3375DF551B12859
-D43CA20D20A5E662F21F94A333789BAE259A84D5E2F4AC289FDE98088ECBB8E4
-44BE9875B5156E40F942A06CCE18954BB641008E59D9D1E07AF3271FE180EE4C
-C11DCF364F0166359188CCC64EE00F83B450C67189AB0E780D4FC804341FDAA7
-D4E099A6E31C18937D835744530B33095755FDBD2F479764200E5EE6BFC49650
-6FAFB667C29EACFC365CA01C2E95AD0EBCBD49CCE6EFE2F82FF8C7B40AA46F11
-CD9CE31D8E65E8AAAA7523DD9C48B20AE1DE8FD59F70F2254B8DD39825331003
-44D1595EB69B35A87008929E9B46603F14F8844068DB97105067F9A7FB2277B8
-78C4832570237EC43FDCD374F9F107C476C727A2A5FF397EF330E81A813B83B4
-8BB7B6093FDD51A81A44D25FA71BBC8D47F147A0475A0DEE7D49C2D8DDF98BF3
-F9C53CF3B8EF2DE918B63C2B88F208B9FD9769F0AC2FAED33DE476DFE5DC91D4
-F8B7800A0574061494E0B2B57184DEEDC798B51CD646FE8A0C5151FD4708DD25
-30574485A45E4FAEFB6106B5C33710F88819271035B7EFE279793A919D36937B
-7EEEE7061EE4C8519E3F60C9DA517F9E7D0E196AE3886D2CEE5C559DF838AD2E
-6D2CFFB308A0E160E06677F262CEB91F172598673EFCDA73DAF7000A1F3E3664
-8B23D14C1A2C9E3C54CFAD66975ED9BBC7ED205F1675DCC0438821AB51EE50C7
-72084346FFD46E50B89184F64A9A7380C3E860EC6A8BA1434EBBDC2A32526A75
-7B5D4090189F38A0A6C8F8F7A037A5B10A85235A0C3E3E49968EBE3DE50AEDE9
-F75374CB702DFD1B8B7297CD1A43D606EAB6801C5C72B1F5D3EDF496CB1C101B
-7BA736000AE9E59F34EDB54CA05EC16F93B5591C52BCDA31CC6BD9F5C6B24C14
-6C6AA22C241450222E9664F9B0055266877BF870637D2715C385630564B149B5
-608235B29457796A28D2DA28C5F795A6EF356D6E0D7597AB9CA9ECE26A7A50DE
-E4788323E199BCB45DC9F279BB4DBA3A49C5FBBCE1D6F5204F800BC44D2797FB
-3BB44835D1AE4F6061AD0419F1C026173E951B521C31267125EE948E0B51748C
-BDBC0B7B2C9138E906DF2D37692B5F2A353312F8118C2C2C11CF6126D1D0897D
-4B1C73E0C8C0A229ABDD591F247267399BA2482BCFC8CFB724A7352E77F21FBF
-CA4FD52CF9D029637CAE59A462D28AF9D1217E3DA1E0CB2441D6BE44A85ADA69
-E02F53B6180EE019B0654DE884DE56C0DF3FF2314971D3B436D0E53771B84B1A
-670CABBC64FCCDF743BFEFAFABDF5AA619982C7FD9A30D9E8FFA54E6AD8DC84D
-7D771F214B8AEB71AE6E346B1C28146102F7985EDCE0D2ECEF6177A3200DB961
-E202E0A52EC67308470B8A4053FAD186F0EAAF2F5E8D74213864F2BE6790C49F
-3B76413C526B9828BD601A0F5304C4DB029072F6E978310A47269903950205FD
-2D4FB107A2535DA717815D081092DABCD2BE5309697D74F189CA9E084A5CA150
-4196FE77779C6A5FF292DCA7F093E13854687ECF7CDB169E2DD741A67193069A
-E8D907C01099AA1DDEC65FB86491E9385AD380C0A721CCEE819DDA2F47402C65
-808CD7AECB3A40F360EB6B3CAE5546797CD20753F196A1D67B24769C3F971884
-EFBD49A5E3A44C9D14CF03FD499FC1084280FD50E14A7F4469F104E39670779E
-992C27AD91309C7762A3CCCB2FD40825287C50D37A80246AF5A9F4252FEFFE9D
-E4097C6AF3A676861987F781D606C6345572A9C5F58D3B89103B7DF8E0800990
-9AFD69581C9B08C11D0EAE465015EF1C62783DD21C7434F18645A68F72285FB2
-17C5C36A7EB01EF40C822EF1BDED5D36F5435ED654ED3FA1BBDBA71001D1487F
-4031379D688E89C5BCE10C9810E24F3B4F35D75A9F1EA9BD5AAD35BED7132829
-3F328AFB006E3EA3589F24BEBB7BCD17BD3DBB4005E1E03FAFB2E082FA478388
-E5F71280A540912B9F4A60C36D9C4FCE9A43F94ADC047FBA8FF158EFC308123E
-2B43D639013DC1D60F5FE87107DEC096ECCAC190A14C7337F549CD0B393D9979
-A2CAD3105A290EA43E7C41F99D9656883C155409A105A48DD056BACF1542BAE4
-CC2325DD56CB2321486713F6DF38C50B07B7F76889CFD1A1715466F3A38AC62C
-2B94A059EA5524DB52E6C958BB8B4921B29EF07FC2B054ECD48C6FCA0DF37733
-18827F720E00C5CB24D868033D33C8504494FE01C5A3777DFAC0B87091066120
-D61E1BCFD5797169A0F75E880C6A148F645453C1B3E96C519384CD78B2EE730E
-533349E8F1486357360DB667FEC09EC483E6FFA346B38ADDD93E283FC4B576F5
-082AE506D244E9BD81616EA4D02919BECC5F17907F81D0A5DF7896429F519953
-2443C43D4AB9D8FC4F62D61A7C897E8481155525E1188A3146633028ACFDC514
-BA58C546AD4E0AAFB644A3F576FCC4EA91B7490242F8EEC9B997A491F8A79121
-B73856A1812D3D1B861486F8DB8A7469F12E6497DAFEF494C51BEBD097079990
-46D10AC212B82A4DBDFCC4D84A964F23610BA00B5C77584355D5B1DD0D71E44F
-28C77225808EA4232424514DA07474EC8B207A6AC2051913BC1E877A22AED39D
-F0DC274E135ED47BF678DD075DD350E321D0F47B966D6C41705016D76EFA697E
-6425F369A69768184B1F44291DB64E5CDA9E41E967DDB1278AA23DE35B72E214
-974B2BC8EBB5C9D6C30A9CC5BFB2ABCF389CF9031587C1FA407CDA6C281E5167
-A5B5E1E394696258C48E3120FC6990EE97A3EE9173BB1D6CB9192259D3783812
-0F9359036F0B29607A235A0B8D5D87E88DAE3A3D9A45514266349FCC945CCAC9
-F1A00E485A5F50916CEAD3E1DA162EF9D8FA946D3B84B475E1DABDD4CC852F53
-207BFDB7BDD5CC028B6871D98DA52601FC6A2702DA7E5E390BF15F7746CEDB0C
-685D26F5467B0BA9B2564BF98D27F4B74678640CF14C3DCA1905C91A6B77BEBB
-088FDA1E4FA37D8E6A3C1A5BAC31C1CD2A0FFBC36A6A706E4B48D5C45456A9D2
-7FB4DADA0D066F42C23B1C503D654E612C9EDAF37C0A3B9A69765D6C71E1E2A4
-442E5CAD4A0DADD7BA46541C8228092609828A23B89F896E8193AB640201BC9F
-5187174A0E5821F944517053633613E95730C53028EE8A4A80805FE2C2952249
-2DA3AD47C580645DA4DC4DC36DB9E56C5A2DE3E42AC7824084867BC98EA894E1
-E1637C83DBF48760CB7182283B207F77E98EB7B8F020C47FC0E52EE4A50717E7
-4E8C2188913D124A657B4567CB165832C9F4FA433326110953D6F6A606FCFEDF
-74C47B13640D0097AB6B666EB22E8A0CED17231B49F18900B17DB0F15616379D
-D893A4ACC153F9578DC97643D7EDF067D7CC19A0926E0965F12D74F06D4CD3BD
-17B0CB076E0CBC7180A53DEF916C984ECFA04167F70E9E7813B33B9359555CFA
-E6843699E454313E3A1B9167A17035A639202CCA41BDEC83863E78EDA11A60E6
-00536B230220B19F1191209320BA3F00C15FB7D10A244E94B574443C22705D32
-AB953ED5C619923D85D28CD3AEB1C290E66FE37FDE341ADCAA5FD0D019A745D5
-C9E747FAF6CEBDD90D4711FB3538A90E59D35BDA656BC2A619F01F854297685C
-6B53E5AEDC421996DFA1A4E2CA14C321B4A50F9853FD39AF64534499D352BE59
-C90DFD046DE559DAE31FAB14E37B1F53D35B5DFCE2A9A26CB9826CACB367E018
-9AFCC266A9E294431B4875A3684AB177A536C32A777FA1BA8F5A7BE04F1F8DF0
-328307550556CE7753CFF9FF1E3EF4930BBFD1059FDAA1ED081746864DA52F14
-CAE32D2ACFD9887CB55B5128E06E626F9E3B2F36879FEED25FF7436434BE3DB2
-33EC76D758D0A53C6BA6B301D3F481B4ED79BF0077A05F492BF4A844E88C6F61
-0B7207117004E6B5003259A389B8BEB7A404A398BE0193AE82BD110069B87351
-539A6617DF192E9FF35B175420031483A3847D6DF776A23C8A58CCB2C6BD9B90
-45C0B751AB1A3B7C10E3D790927483495861FD098FFF30DE4DCE8D96FAA5AB74
-B573CEB0A98E5305352705D4258A568DD6B1FA9FC2BE395ACF7E04764981CBE4
-47CBDE38A207A235193BF7B9A12C17599EFFD43004EC297AF33A7B5905412A63
-339B59C77E4ECC04A34D206185CDBAB8E43CEBF4FC249D12C4F24DFF9EB3260F
-52C9580203AA0E6B63DC3E71278E8FA33A3B36928B7556761DB888D9CEAB29CC
-06D9A314746D28E57A9DFC051CA0927BBDBEA507F5B930404DE55DABFDB38BD5
-4506BB59B7DC3B0FCB2ACA81F0CBF8B5B631F6377A95CD02747756E96CF46A82
-9DA8A58C474A08F49F5084C2F78C9A920086EDC1F84B809E40AADB12A31E2346
-677F3F9FDDEF7101C463392E9C07D7AD9DE7E07F9454F98BD5EBD2F21E4B7524
-FA4CF11D79C7158D72AE360BB29BC2DF4C2D62EB16EEC3AE332C8B6796C0999C
-D7FE66EE67CCF4B32F9747AB4B8BD499D5E990647F7FCAFFAA3B5DF1901F8EC4
-EBAB6217E4F8A86EC95108177BCB578AB7C9E4747D060B64FAF284D55B2AE919
-A448FEC46F8FAA3B631CBF8D1B652E3BE0296C8E8E9ECB29DFA0B991A6571F57
-0169FBE88693410496D32F04DD9ADD1C077655EA036BD443D1259A1F95B53FBE
-CC8CA3FBF5CA15FD017EF009B2E49BE68632042A0CB7139B3DEDD298788AFBF4
-D4BEF816B7F0F405A0B37AE743072295A83BB7C9C00E2E317357898C62975660
-3A2283428451F3AB973C8005FFD96A75586A04D6A1B6634B8D086C99DD95AC17
-22762481514B42D8490E4780954B64953A1CFFDA602176995817B492AC6DBEC9
-5282B3E0EEF534741AA0E3D26C56EBDADAAD6DA6F29ECD9BD95366F646AE7390
-3001D134C571249504D5F91D8CFDC9706B09BDB39D75D6D5984579EC40ACCBE8
-AC7C6A32DEBD9052B7494C78AA45B418102A898EB7FE75E8F189C1F601A1B88C
-249B12BE3A16352DD38731685F5E2937C95B50D000635AFB7DE73C2A06180F33
-718088D13A1E9E94C494227AC238B443EF48DF02492186C8D98C7C3C0822F30F
-ABE1213CAB40757100DED7124A641FA3EF9F49215F85C51FEFC72BF31E9A29BB
-21AF542CA5F8424F33DECD7C1FB67986F8A432B56A6B64765E29EDB8D9CDF0B8
-FA9C79BB5AB4637B21C35A7B4C7E31F7C63BC4DA2C51B739B41A74A1844222BB
-93FBDEB79544E95FE4F1B93EA9894B88D4548C1BA629FB2315BD3FCEC0B0A4FE
-67B396B5C3D6BEF3CE3FF16998A60E927F84FB10CBD649BF53B059AB629988B3
-8D3FCEF2D83910C53C425F7534928C3031E6325FE41D91ECB478745ABA58C10F
-5DB21D24681C4F9FE5621F0943F83C9FA3784D01AB6EDAB13870F6C022F2DDDE
-74B632959F59CC7BB9D7B7C4E962FE33D75F59FD255ACF1FAC9FE7FE54CD9567
-81C578A884E652C82E69D2C2DB7002EA6F63DD9C1E9CBB8D3BDCEBF21EB93B0C
-6AA86EDB0D088E96CEA2CDF48B5401DC6BE050389FE3BE6569A14A4BAE362D29
-B381BBABD53E953A3710E0C04494B9C0BA927DFAD9A7888C46805F115C1E7B96
-B7453F878D69F5A0926749691B0E9C8A3C609BF174B94A7FD63D588D25FE5FEB
-BA316F8081FF4AAB1A1BDC3EAFE9FA22CE08C9E70C0FD0E5FC6110565616D74F
-B0717722F97AED2C57C339E687A188DE7C0C37625D9296F803F1A765A3CC066C
-1AA0821C88E796633A3CEF54C6FE5E73DBCC10C3E80858E2335EA7E67E750913
-8CF0659EC04955084280BC911988D3751EAE1BACCE41B3FAB3078D6784659224
-FB38E8C34F6FCE8DC7E8BF829F545CF7CF43FAE56600586FA77344A18C477455
-93E5F482B4CEAF34DB49C01B124E113AC272E68926611AD1FC5B650020AB317D
-DEDD789F1280C137DC6E0F45766E4567BED75C33F51D19D22E687C0673BADB5E
-EEFB089DB1C1C8020373EE7CF81FD519F4ECBE95643C77A672F16725222BE843
-B67E22904E0C6BDBD637BAED6AA46E914B8536824DD57EE70066D75F03701FEC
-656499647691B8C1BCAA2952E8CCF5D0C3C5A0DBBC32ED56544E98E652AF5907
-452935AAF88CB18CFF74FC5BC4DEF67D0FF7479F2E45FF7225845A25759F2AF8
-E2F814C6AF27D1E8A131D85E59E1B4465BFE9BE04E460DBE8A30EAB497F0EFAE
-7428F1552509B19174D906C5801863BA54A790013FD97E781D7DED32A483383F
-9EE8CE05297C59EE879899FD0CE32973D1090ED27608361E94DDB0A3F3B9CCE7
-625261F9B1A1DC2ED07E3BC79E676167EC57B3E6DF869E382EF5566C799E97A2
-B8974FDBCD4A1D71B5FBD5D1ABF7034B1D220722C9E3E5AF651F011FCFAEFC50
-940540089E59301628498D0FDE99A7B224024E28B537A1B0669CF01984701E9F
-E2E41CDC76F0C6B7278B9B8A312E27E1AB5B5338D74C47F1E8E2A7ACD302EF05
-DFA21AA32CCC67B4B070F4BDFF344910A862D95B32CF7B49285F60A875A03F25
-BA31BD0135C693B9AD261C3C20E85B5F1E5F682CBE5E9107F018DD0FDD8D9190
-45AB81C73BA29D0710DE31FC6E5B9C3261963E921C486F09A67B83C96B456255
-05952ECFFABC8D24B5236553E55ABABD210374980FA199030C1870DD7CC71084
-1CB1BF10A7B08D1054237FDE73F53103DE1D44E26495D47285A1E6DFA519D0E0
-557B176B5EC366FE81C0D91144724E6F17562EE2AB80154A79A542A6FBB8418E
-A7030A3E1C6DC132ACE5FB2534A122B1D0A714530E013481700878649645F9D0
-6448F9751645E07E8C9D691AF69B376BE00BD6B6E0D6E4098C104FF92DECD846
-179CCBF2729552BCE00BCCD939B0DC109B02A806260912093210E6BDCAD01B58
-7CB70F141404646A36A0EB4F7C6F45A50E11234F9B5CA74F5271D9D577122593
-DD19E28779C5BF3885863C1E1DDF6C0EC567E477190E6C620461BB63408029F9
-AA1AE0DDB887C22AA70E9BA3CE16FE20B59E424E109DB73CD63FB924E0258342
-BEEAFD0E9337FA5B8600838AB2B870908F498281C7C559DE8D5E436BF96B3AD4
-442DF6A77A2D176B9FF7AB78FA9BA716AF88B76B8D4C79C2B97069CF776E289C
-A1FA62D93B90B9288901DAD9CF9AB028A25F4F0657E66020C850D5C2951D2656
-83B9431A34E4E2B544BD436C0281F9A4181CD1191DA8F9FB572DF9F04AABD7E6
-CBA9123306BDE3E87051018E091CF8D8E5012C392CFE6D84E61B63FA72F1D14B
-FE25F9FE58358FA0BB9D91E4118FA886C0D885D35C3A761D6DB2F82FBA48E56C
-64660C35459A488C8B778C4B1DEE072BFC65B404395A6FC03730744A2343B9BE
-08E775B34B7091856381A7DC2CD5E8DB3F96426CECE28BA19944A397AE3F6FE0
-5813E246C97B5DF824117FE5CA2F5EDF87466891A344102C1DCAFA8A0353F58D
-21D1EE0D917B01BE4901DBFCF53E7B6C3991286323874DBCB15B5D546CE22608
-CD833DB38D36A268996DC9CE8F9364188C5F05DFD79504A79B82D902F4C3B20F
-BD5ADD71B592C22E748F8D46A1FFC99E89A99B53E278C4931A2DB4E17825CC68
-830A3BB477C4326B179BCA9CB3002057F232F111E70DA045ABE272DCA2D8D74A
-382918545CF9B7435456DCE365689D73CA062B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.0: CMTI8 003.002
-%%Title: CMTI8
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI8.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTI8 known{/CMTI8 findfont dup/UniqueID known{dup
-/UniqueID get 5000826 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTI8 def
-/FontBBox {-35 -250 1190 750 }readonly def
-/UniqueID 5000826 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI8.) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 67 /C put
-dup 78 /N put
-dup 79 /O put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5188B8F2AEA89F6B
-B9F27709B9A6F7FA0D2B5A522C8FFAC1E14B3F5FD04513BB94F52F432B304636
-6AE8FADAAF2CD49830BAF2AB6E4BE9BD0BBB46BCDF190BD729750493D407FFBC
-E0AF4FF2457B984427D29E386D7D003DE9F46C90DDB2052542599275C0B2AF3D
-5782F71AA076172B764888EE754083308056CE0FFD39135F0CA6359948C049FD
-63EBF553A84FB9B32845354B27A32CB1398F49E0A331193E0A858DD240483727
-07F041E6D75C1378445A58E2B31F146BAE8BE3BBDBFAEF873B44F245604F69FE
-376E57A404A743550B10A450B9C8413069E2E00F0C304EAA7CF987E7F4577A04
-77F67F4B845BAE635E0639F6E98C3DB615F4376F878495FFD22D7A49FA424EC2
-823C1587925820B548400B53B5513AE97A366A87B4FA8C886467766986F80174
-047CEE583365F828D13C1DC83280388C21E7822EA28E715C1C071B4DCA6F19BD
-1ECD540DE11C990D6AF7D52495E5882E8E4FD30B3C4E33BB91B30BDBE07DCE04
-3DA11D0A2E0DE87AA3FC65A92B11CD3F8A601536AC29992E7219A6E21E6F6DA8
-8B98EF41DBC1D19CD926D2888EFB42BBFA73C8ECFAC12E368E92598AA943FA70
-9D02829DB25AB9A0109C6361752223FE5E054C1E21CEF35E48979979A0DDDEF1
-5EFD7BBF989B7C7D3437DBCE1669341264E290646F2C8C564B6640D0DE9ECE1F
-71724CAD66C37C8EC298848C43387CD3F4488229EE5C7E68668B2D39471ACE31
-D502B7C9560ACDE008E84D99FD379D13C6AE62FCA484B7BADF5B8A92E69790E5
-8240C3E5C78A83E2600B0EADEB020DC3A7B2066E895AEA5A9A1E606E14818DF3
-56EFBF8876EDC25C14D6DAA1B7A80E8F667738D8D5040BDCA080A6A284C25651
-40E7A230582EA0204276217571168BF11644A7DF209C22E3748AAD3A90A2BFBE
-8C3BE010FE3BF7932B36DF91858583EFB3BB212E9F66A09F525981477AC03967
-95C70DC6BF8498F80B7F92B748560C07A583B14D5DB2E48718E2D5B118386AC0
-30DB1283D2842392655AD117A75B4425C51ABAE1EE122E68D24A35406B73CC2C
-A839EEE18F626494A7C781310FE182DBBE6EB9AB532E32EA64534ED6224450AE
-25E1C2DBD245F76936FDC8BD65775F5FB281330BE2F7E21E34FCA486106A8385
-BDE975E225E68DCA7CE41C0A882075D128AD32E4D0B0E2E2AAC9F40D272003FA
-C804774131EA9C190CCB741D688284EE32CD2C7790AA683F56E33D571100C12E
-F753258FBF6749FAED4540FD7BC73429B4C9C93BC9D2D482444C50FC35DEAF0D
-D65136129D220DF8B9CF961F93D4D0E6D6B8E0240B9DB73B2B81617E0A708DA4
-F9B95DFFF22A1EB794B5C2F4E7F2159471F9631DD4B7959B8D87BED8B70B67E2
-BF7D6DCD58A336E3A6E97DB53D94268910CC212EEBE18B4898A56E16F97C7C4D
-A34EB6E1E6AA0154FFEBB13000ED9A4DC26FFBF0481D95F5481A72F480EB7A04
-DCA9A6143D19B604F8502F25000352AE50C33C53657A4F6118EE324246191316
-DBB6635CBA9047F911F0799942C5F46782A8EB3F500BCC68948E58EB0CBEE0D0
-9BA12584C79AAEA795F4EFC3B04169FDB8EF672F6126BB7BA9497CF58CFCB0D5
-CD03BB351D07943B8D0FBFB7DEBA03E833D591660F31EA7BA55A9167766A26D6
-A156EAD371941D319D95FBE43260C19DD649BF80B44C9C695EB927095421DA01
-0D422AE17F547FDDFE09D3D867AD4A1C79014FABF12E69A547B73EC7DF70E3D9
-24D5E8012C5ED4917E2A5E7E830573F44CDBFDEFECDB5CD4BBE0C4DD6A458E31
-A7410FF8C89E1F04775713BC812C34E4D22D375927552B305FDE786B14AC3347
-6695364B2A8F5727B3A202ED392573AD67FC899007EE380485384D10CD55664A
-A7D6AEAD020002AD45B46C9273D50BED3387A0C1D11F894004CBC61C6A8A3166
-E68FF692B25063926DE2F698CD0A0141A4685DCF0FC0A785BB2FCBECCA57771E
-7031DAD19207691B2F1A9F00485D746765B4AF02A9606522D8C75BC14998D68B
-8208773F4D2635EB9502DDA4825EC7DD185DD098B953B086C9B9F99E0BDD7ACD
-058E3D2A02DD2B2C6959BB3D961E27D234189D23088DAC6B2204C4A9E0F76DCE
-394E2E4670346A37E7FA9402E40C20F3C40138C6C7CC90A5A8B9ED3104750118
-4AA57EA814ABC985B0796C3EEB88017C0F69BC5F268F7BA1B700E75A851B79B4
-FB5C715F3792340341D74B45D70D1651814D8847E02B814D47CD8172EB87619E
-5D66CF55CF11D1A877276DFFEA9028B507FA173E1A846D1C42C9662D79766315
-2619DC94A4E331F6B70E5ABA692A96E842D43B05362DA4546427CB890123AF04
-93293AA38FE8CEDB20D325E4E820137206A23DE2E8E3A5663638F74A89D5563E
-1BDA0CAF151F6BA70C4A22AF26E0AC3F2B9F8C45523A53AC4F25A2389F4980CE
-44A118CF1679CC860B075EBE32E52489F75FD6C747BE2E6996714FB61498B05A
-66C01A15D93BBC7C745CE0E923712BB3BF889239D7E9FA4CF6BFD3A48ADC1B62
-AA0D91BEC7F7C836F2AF0BDD8967BE0D63C5EBFA9BB4545AFCE1CBDE408F5DDB
-EAADB00BE93D21DCAECBC937212E64C17C742B77551A7486725DC5B6968B89B7
-71DDC6FF46B31DFE19C5F3FF92CAF32ABA409AEF643E4D8B672E5A4AF5923B10
-08389AEB65A68D4DDD8D8034EE1345D4A357E27A3A0CFBE376748764598912B1
-D29B80102831F3EAF20A854F9B13F3BBD61F69605AEC1B6ED1AB066F8A13D87A
-63A4008A3EEDA327F8541CD5F105D8A5EE4A79B9283820B195D8CEC1E00116EC
-DD4276E99B39A38EB9EB7D2B6FE23EE248EFB9095484930A1B8E68FFE5199643
-D9213A1789D8068E444F4814B88B0389D83C9F1F29572BDB7FFD034B33DC9AC1
-D271CEA82F4EADA3BC91F9E5E7DA608D8567EB4D8A605130E0045F722AD3A0CE
-CDEA22B9CCA878E88EC5E9C8D0B6142B281D99BF7F32D1CA8CED728DBE57C270
-D3636F62D06A97A245B5E7C84BE2B15987A2A4AAAB7C54479A14669B47F26C54
-034F20C1146AEC8295F995C1AE7C03D11F7257BE65803D8582ADA8257BC27F4C
-0459D9B41274267D50CE7C88C42987631D29869AB4EFB1F439D8808BEDBEFBCD
-DCE341F58196C6BBAACE9D924671C1B82E82CD6D394FB092FAEC820660D09767
-F14ED82B17FC5C7AA5C376A63AB05A4B4C6E21FC5A76185D3038591334DEDAFB
-D09146B80D3A0E5D0A171BD83313C9C49B569F42824FC8BF2E1C1DCC8B126E17
-FE92C679853C1EA00FD376A7C12142FB7EBC911168F98BBB77CD5673D038BED1
-677A498EFD3AF478A0E9F0F468310BB304E38BFBA27E35E329779BF4AADD96D5
-7D83517EB68BF45DEB72327924F3DF5FB0434E153C2B4A01BFBD77C6F1DF56C3
-19BCAF94457B781EE43E4F1D69434D96475880591A492100FA85E6AC6BF70299
-3FDCC4F27C49AAB1C339A841A571CE65C1E6C1133409236C0B2AF151A423E4FF
-7C84F42A41E472A5B18EB93DF182BBF8675AA3C0EE971808CC67B83E17FFB475
-CD041D9F5C69F907BC2E1699B9A516E048F1778C8EC1C50E7455B9BC6802E871
-E6EA5B6D6E92BC0048BFA7FCCE18DB433EB037D7D7081F00CF4020C07FFC871A
-C486338D2F8437040DAC75AC1E1114569C60CCF03792360B420F195F2383E51F
-D028FB342CADE9A8B13099A21C2603C7859188784D857D4950F4D82D15F025DC
-6D015BCB9626AB339674589595384AB6CF067820E908493AAEEA2F16D0FC91EA
-C797F6BCDC5963BA1B213CBC050661C84334FD7E643E978594B2E9979C25A9C3
-AD0F3E7AE0445CA0B106C97F962E5B314050AB826F8D01B3C3CB08E3795FAE53
-1C2E0D7A174A2A968AC06A53FD98F807C38CCB35BB57C39FA945D27153CF8C12
-4DD344A2F1FB3F777834716CB86D96C11C1BA9E1CE79DC7FFC1520067CC76AA8
-E4CA100D74C9C26DAC68F6E16C84365B8EB104CD382C5188423A3193C0BAF143
-CACB03DC0EFE64611C71C0BB65C2DB29CC8F9DF85B05CE69C685F54AE506DE41
-7225D2C3EC3021219C84392AE00D862EEC9D4FFD6E520E6245924A16A58D4B9E
-7050013BCA1D24C5C9FC8CC596220BFAF8F9A58D53396106230DD64C19F561A5
-462741FA6B99FC44A23493489E5DC251E63CF2A5629963F356789F78F3117F0F
-2B22F7EFB47D93B92A16F5951DEE257FFFC7E6F8E94BA6E73B3F2216186F3612
-4A276778340698C5C12ED370CF2D2FBAAAE66579A85351B509F73163C459C002
-0D6DA5E9018D6AF35E978779236104086149F79B914111202708B4FB7558F098
-4EC8C44BACC28CC8F20CA53726A73DF040976341CD72FFD434670AD09A62C5D2
-873E0A89A16FB8BB94B25FAD9DA42549758FAE38531D1BF13B2D4E51585C8E9A
-EFEACF6F368BD564FAC6784FB264BEFEC0C133A9F6AE59F53EEC61F03B9F6D46
-17E615CB7AC40DE1C29E1DBF2515A6462CE1278AD5E7C7D616B4D1F61C4092BB
-83FE68173BB8AD591B189106C69F30CA946AB505B955148A9C64F7E767DE1D32
-D19A9CF799F2F005D7E3D912E8351373CA6926D4D9BF2881198F3F92508B0F1C
-9E32E86304261D57A9FB7CE2CBB1DA95F42C728E876DAE97175B7684E1DED2EB
-F6353EF742AA647EA82CCBB8213238A4498C652B0020BBE09DF9248D2B0D7939
-D5D99B1AA7CE785B5979EE2E1EE199856BD2E03ABE8F2916C2A3ED3895AD6F32
-5B3E3C46493C37014B6F339268080FD6FA8B5CFA5527FD21AFF7098021762797
-3A3B7A778B16C138719535225E1C0FFD38E1DFD29E5128442D6FEFB2A9DC568E
-CCB4F97F808B485303A3DF9A7283E14900FEB5E75A0359E9AC87BD47B4E7DB71
-1D155DAB0441EB966240B3FA2F5AE8C5D6C61E156A959B6F0E1B104684A51023
-942121A09D119F830D312A3B23AF98AA065BCD631EFA0BB945442CDA214FA193
-995A49B79600D2AE25085BCBF58BA6A663037FAC029B9D75C7D3D862003DC968
-285FE22C8BCA86583F305C4250442843B2DFF5CDD4736168C668042864DF6C89
-F9719A52ABA0C611F280FFEEA603E4B9C8EB744D1542EDE8BDAFB30740B09788
-E825C550291039A4020367130E66BD2B8E1C04B02C1853F37F07FF529394D18B
-01106058E3C30412F79FF5E4DDC9CD06C77BEADAC904432DCF41C2667E85F89B
-E980DC692E1E396514B6DD04CE197D3B6BF3B059F0F74CAB342B984BBCA7551F
-A19EC31DF2A8F2923318A74269024BF26D7AED42E748B6B67721CE33B2B27A0E
-04C1E92E3B3F97BA524DB97E9C6D3291231DE3D48F7D78A6CC2FD49E98117A1B
-B39418F0DFD8FAFE4A374B337224B935E2827CF69102E30BDC6DE8448562F813
-3AAB07044FAF7324EEBB01DD182969963FE036A483EA0B5EBF59A52200685EDC
-B733F81996FF22E99E772495A82AE6CE4BAC947B819A9250C1E7BAB86C06C3D2
-C9180763BAE247CD41EC46883DA3E98C2C947A2F2E515A0C9593CBC5B7D6CF08
-AB2101C1209AF33851314D4578B0B711888FC3BA0EF3A9480FF16B1DEF59BAE7
-3FAD030F9F0F81014B0960C2B234854FF290473010B011ED96016519D2A3AA57
-5F40CD98C367DBA14AF270965CA1FCFB66295A2DA89F0FBB8AF87B013760D85F
-BD03F8AEDB62221C29746B7195C88D777EBB552D388D79F98A8472615C06F4D2
-DB9045B66BD7CF4A984C7C5A1642FBF92C821B9E74870C129F0E76FB23B27E12
-E88EF9194AB96BEF8846248DE86F31E6DDAD25BB4F86FE0E024A65FC6FBAF2D7
-E172453E3F9C5B5497C10045A0683BB3DA8B5A4EFAEEF4631E9E0042227002F4
-D9025797967F9F143189F30F6A89B4B26E4D274EFAA19677ABE18F75358168F1
-5D5106765AACB1F8338C0A221B5895C660D68EA1864577F8D3B2BD2FA3B7EA21
-A604274B6937DFCE6EB90D0C6F87D987DF0F7DB37E3219DAEC27C500B705C2A1
-D635405DDFD87C99299249281210DA7D0CF6C519389ECC166D99EC9C11EE000F
-96C180A20466E4D9D3F803E0F9562AD09FE2289B5A0F72ACDCDB700158C150B0
-01BC38D269742A8B62E8C005535374F10134162AADD690D40556FF6621E41001
-D530D47D29CB33294D0CD50A4428B8C74C9FE425DF4455A7B283350A112C7721
-565C68084184AA06B8D2FC631080885DA36A9BCC09F8C9AEB8C79D72C2DCBFDD
-BAADF34FA92449ABAAF510196620FF6693E252D31A6C2A4ACB3A198FE3278A25
-2ACCD4B665B5A62CAA65D60C1FFE196825927C922EED2EA130C945F1502263AC
-4D364DF0476BD7F79A6F7B75E217155FB7E9E5CC967B94ACAE72455C709DA98A
-0BA10E1F8851355190C17B6B6211D7610845B16D0FDDF9E12F55FFCAF2CD677B
-FDF3BDEAADAEAE4CADD0334DF5CDA9C737C3A04CAFBAF6C002C26CF29895C11A
-0C744C8738D1A720716272B4025DD975523DA33FC0B4EFBE48CE761B938D9530
-643C26E779566314BD72FDE97A88C62A94B4FE5CDB88C14952F739B5030A2A5E
-ADA78AA3EE7971299E4FBB93404E91DDA9CC799933E7C3B32DC630FCFA9C4F48
-B42B33DD10F5F23B79C539B5B0B645F34DA8D8DF9BF2A052140CD52CC5079D94
-33EB60C17ABE3756BD28A384D91BDF9D655FFEE546B49E98FA3C48243C291B6A
-FC5E352B2EBC82E2104BF7FF5B158847DF59B7B18CF808149DA8C6E55F357E22
-9B78BA28D7DF56A0CA7B55BCBC04307B5E2C811BDAC9815F70DC7671704699EF
-59855418FBFDEF36AE436B74A4447554B39D9362E30D50597C0061C1E4BD6F81
-5856620DC330EA0FA77EAEC9E087341C4BC808CAB056591CB4C5EE5DE3E6A198
-F86A0081801F197142D986047DAB4677A862AAD48DD9EC4BA033FFB00DDEA8A3
-6D8BDFA7EBE4743BB134B6AD5A014B084978DA46D117CEE5BBE5E0BBDF13CB5C
-EFFB4762D2400E5C0E15DAFB986DE0639D7547EC244B38F93EDF3D0C359594E7
-979A0E908E750C7C6BB9E65A9179CE5F2666103C493E84B165A3F08DA5F214A8
-A5E5B1ED447635BF3FCBD6577968E01745F81983DDF961336F79A6404DE6BD1F
-DC9039005742F0D3C45314A7BD52FB4E16727D439746DD5500DA19E0F89914E5
-73E52CE753649DB28FD70F7AC5726BDBAD3F715FD3611D9D27D304E2BA58C32B
-BFE69F9836D0AE72839A4B116CBDEEA9CDD5D6061782BBD53F7905B98A587AD7
-31C6DF8F3673AB9D6F5ABB9376D78137E8377EECB661B6CC8418438D510E6481
-ACC726178F7B86CB1EDD6B12CFA3E0AD19AF7096B7E75B753E06981B2BBC4BB0
-8F7BA4495FF84A571BDB84E280EE393419343F2FD0122C2D6E3C5DD7736E2374
-E41140B2B64EA6AA25D2D198799A2CDE0E7B3EFE8534815C7AE82D31577E8BC7
-73645A02780D46BE9F62A701B585FDBE40A8FABBF35A757B181C4F3070F208A3
-F3318CA3076C2878DDFD4BDEBB547BDBFECA4D5952491768306465317CB31A97
-DCB565FF8391CA4E1FA19533D7AD57332BD149910417E3E2025C86CC62591C4E
-F3C3B0A8C9CB69C788FFEB3945CD080EEA26332EE79D87259B08AD2CE83AD63E
-E90DA927AFAEBE9CE84F7A22CD13DDCB7E75C282537ACE01A31AF410A6ED11D9
-D2C6B6AA40D7CCAA092E9C26EED247CA403E9A3C0BE495C3D04B5541515438E1
-F36D398238F5D214B0D13CFFC3C54344BA08C9F096AD627F24B7C95A560BD01C
-95165B4E7C4172F1B18271FC24337EB0DB10DC587D1D16777D527FC11DBAF6F7
-DDFA806CCCDD5A5D241FD3677E133346B521BAE646C275A7A886C13265E7A788
-43F80CD719C44633862B102690CC61A9FAD8F5344525EA820AF443E9FF5A66AE
-D00AD974CFA67F94EC19C3EC32AA714E650AF284926BA6379D56C6BE1E710E2E
-C984A35AF9469E3B276920CD7F78DF747C0135D9290E91B28AEFFB11DD9CFDC9
-4E18730A535E14CF0AD87B08BB7F0E4F76C142A06D56F9AE7838FB01419E70EA
-5865B1732373F285DC2D08C218FB00D41E6A4607F19CF469C0D649E2423C73FB
-F82E99E175EF6BB8CF092157C6DF82C613F008EC7289246D873B2925E3F964EF
-5FFAF9D374EE9AC93EB26AE8E3FBCCE227A2CB32EEE79EB5C818CF94BD60AC54
-4488668B48D563C8D1B3FC5212F3D92A7AC517CA82144090E3C8B4FF20A7D700
-89DCA49DF1F13FD89202471D6DE0314FCBC1464984D0E5D2204687845CF6964F
-3E0870374E422AB0A42116A787ACCB562A3FC9280D8D5F2FF1A53971264398C7
-C8C71505A16BEAC1253A82D02836E30DD58AA92D63E380957825D2ED56FA3AE3
-8C1C5E20FCC4AE74377FD9D554EA2386221CECA8C4096A50EF04D237A390147F
-6277725BF0B07CF5A86BA30A5BD423C1F492E3B6984618E64399BDB843DFBC71
-854E797A19421063CC6A89C2678A858BF3A17D26B6045943977A6D4E05624CC5
-6D58789D2A01B5B33F0C96CF262823DE2FB97D4E66788612CF1CCE8F894CF3FB
-3D11C7E9432194005B25B0F07D4770C8199EFDC45B8A5488DB88FB8057D4142B
-8B46B093CCFA1A16E8D68A124A839E73093E7A245F0091821172CD5B04B5BDBD
-2AE44742285EA96AF41CA678B88D02057E23772CED39DCB057518F97E00AF7C7
-A61DC92D95ED94711D7E96AEC1743EB4D2A074533A255FA596D5F6179B8A2FF6
-4233C32B09F6CA7ECB1DCD1AF7279DE37F1A0AA6118648E8FFC53073FA5D8D9D
-4A3C45CDC69D5FE59A5ED390140127F24A17E733DA241A40B02973DB6011E5E9
-8368368FAB75905DD03703742C06F54F20D4A9F9DA3A3F9B6E8233578A5F704E
-1FB927B345B0DE87DB0C6EA41B58DDAB11AD16493587D14A7C1EA1A4E0ED0A5B
-1B54B036B9D71C036495E93CD8B598B189CB15803FFB1494A4AEDF0D9135B403
-C2BB95DD217380CF523F24C2C5F082C53543CB37958E
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTI9
-%!PS-AdobeFont-1.0: CMTI9 003.002
-%%Title: CMTI9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTI9 known{/CMTI9 findfont dup/UniqueID known{dup
-/UniqueID get 5000827 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTI9 def
-/FontBBox {-35 -250 1148 750 }readonly def
-/UniqueID 5000827 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI9.) readonly def
-/FullName (CMTI9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 97 /a put
-dup 98 /b put
-dup 100 /d put
-dup 101 /e put
-dup 105 /i put
-dup 108 /l put
-dup 109 /m put
-dup 111 /o put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C50F9043B95BDF77C
-1450E422362CCD41FB4AF30F73B66A85AC8DDEAFA65B4FCF0033D034E111830C
-ACB981C2AC41AC32863D02E6D9CA81F8D407DE4AB20B4CB6418B8067D694DA02
-6E76FF50A7197281B7E8E700C4A8824220374DE1CA077D50A8B751391E35FAAE
-E0AB0604164A16D476EDD5E33B08639DCA14796F27A20EAA52D0BD8B61065AAD
-083E4AAF626C2575C56F87AAC636FDC2E5ABF623F2D916D3CF5CE8703D297151
-0A664F40B144A2F3900D053B709210AB8678EF35301AEF3696CF17A5B41B588F
-539243F32FD78B62A0D80B17F1028CBD7234BA7513A4809B584092B95583CF1B
-664929C33846E8F59A43220F79D8BE0DA051D17D09C1E9DBA6C60BCF99BAE773
-3E9439791901546793B3CDF014E6AD9AA169483DB87A6CE4104A8B25AC117504
-8D6DF6052EF491D510F67D730CA315915E77290A40D3F8EB8F004114BB64C5EE
-9F1E18A47A785A04D4EE3FCEA794EB3438CBCAE35242782053277EFD6B67F6AF
-97D892DA958EDBFAFDDEBEAC4451EF8E00D6D0E7E60C112F74999096428AFC5F
-507D0DEAC778A81F8F47FBB1FD8C22FD22DF2AD0C9BDEFF2633F180E0186A9AB
-B0680E661CF083B8DC5635D7DBD69A17E6BF1E86F7C19FF7E48EAE8D35F0B698
-F990DC16CAE9D6E9D1C323FDD183096BE0EF3BCE379CE5E5CB0F58E4516C01B1
-55004C20A6F2BF430D59368AD4F6D398B9A27B89DBCF70BB8A36AA24496CA621
-0D28748646257C95B113209FA00B4525C582A8B223C64B658DA11CA08CB64F12
-8BF230A57B4DC2FD0AA8C486D7B151C9713B12ABDF174ABDF52EC8034B0858CC
-6D389B503A320AE42AF3BBE33135032FE83E6B7AE0D713BA6A56230A50C22FB8
-597A5F21CDF98D70423E8AF8E3CBCE4756DEB5695D3A5E7C47E6EE62F4D06BC6
-C9978DEFFF773BA6CB9B92D2B2638FA3A1D92806EAF9A9A9D6DE09D81FBD8622
-AA7AE1FE01A1390427D270287D4A436A544D4F568640100F94518C113CCAA34B
-28791F62F1C5B6207165A847AE2A9F1E3AF8B96203DDAEC2AF8F3450CA2FFB5D
-E55DA538F39D6A5F13963857E2CE6D75E510E8287D4DDFE5FF5CDCC0FF51E346
-B8717B28181DC56315751FC861DE7CAFECE8E350CECE6B324879ABC8D8206ED7
-51D1D299BACD2F7F6EC2F8D3836EED6CCF09C205A7A76B82FE1AAFE0833C7693
-FC7E22D373C10C34BC0B57382312646763F593AA91D90F6CBDB096CAF9F52C12
-CB6E75237566C5D528DB58B92D0C7E16D6BB2D097C1FE565A07076209AC4DEE2
-BB6147D06D65F403B6919D65D1C3D9D0FFFC0CEA7FE0EE002AA0EFBFC120A724
-CCE85B3419C44ED7216E4C714FC85F72CA933D3707D2EDC6AC02335D4770B48E
-0B64716C0E1B9DC8A4DA1BCF7B47FE7B37F9630E55E9868AD41AC770C5036E78
-4D8B24AF41E90CE8358F97CCC43295371B73EF7E86BD1647EAB2E493EE912F74
-EBDBB5CAC34EC1044114FDFEEE2FA8E3574F4D1E3EFB38C3BCDC341A0E53044C
-0A19D619CB789E8C10100E413B8057373E6D77709B8019841DF04C8B27700FA8
-B21E2955C9ADD9CBCECB52727BFF0E48029D46C695028CB3A7EA779EA69C8763
-2BA38F274B4217F4D5C942042ABC9E4C1627D63C0BA9B1E03E9E3C7C8CB2812F
-503564C0C02A6F2041D4CD59BFD6E465CD060D655C38FC5499F06E0323A4F359
-37061EA5248B3AD809D16446E67B0267A3A929FBEB0A93DFEFEA3E8D5B7C564B
-95AA458F532CBA8770DD90AE6D3A0BED3BA140A4AB6261CE41967038861D947F
-20BCD353B32618537EACA0F1CA5C2708D67D46B6F9B6D4F12081485AF0699628
-05AE00F008AA816DB07710E06AE2DBFA830C34851E5C63A7E9E02404ADF1DCA7
-2185507F0CEAF858389E4F8DC3A1283FBEC373FB4A1720BA71F993D432425C2E
-D0FB5A6FBC1E1904B959838FCCD085AF1778A5E3EF29166C6660B797C8ADAFF7
-1EEDE9BD371E11CEE77D70008706E0BF2B6DA250F9C6A92BF91ADB7D32CA17D9
-776CE695179FC5D1686E86E2B4C3E34D2741CDA86C0F343E7CDD52AD3059A8C8
-134C7DAE20076E5EE5990CC56EF8AF66131243212C40480BBFDEA97FE0558ED5
-7AECD669BA1AD9A50F1C0B21D75AD5A11FF9F577153C12F9789EDDF81FB683B1
-F66244F6FB2DC1FF2B3BC8CDC6990E6C4CB835E552E2AC9A7540DDCFAD1F931C
-44815C59118C7EB3C4CED4DE0D45C311D69576D5E6DAE9DF8265EC6E566DDBA7
-22655E765C074082F346AB496F08F4E598D6D35472629273128157FA8608DD96
-0CC4A3B97B430B1DF8EA4851CD54E742AC0170215F86D4612129F2CC3874D047
-F485BE77D2FF57B8899E1E667D41E519948F0E60C5247F5483D20CB108BDDDA4
-27F15C14A35FDC3CEA924E051D711D8D4EE36E7735E6DB443DBBD000A4CE0635
-2727EF9C1AFC95E876A46FE001EFF903D64A2C1F00D734D32FF4A6C8E3956DF5
-5E676815AA165DAA9E0AF2D56EFFF32BEC9897F45E40909F2F39BAF85A354420
-5E6CBBC6626B98FF1A9BCC1F76D9AB0348C8E7540E42EEF3F3351006CDBFEB01
-0FED065EBE147B5E36BB659D6AA429E6BF8121F147554BC0959E6F45C6990AE4
-66A74CEBDEDD67A559C3E4937F50D3B51E7DACCA53A2DB98306E7AA86D21977A
-A4CB7592590C94C8479530239945471408FA1F774CAD14F58AFFB59D8CE596B0
-8DDC2E8CEAC94156D5FC69D70F2F779774503F168C48594C63F3180E8C93F423
-7F1F1D44CCC5E5F766D7BECC470F880611C545FB3F4C0E171A30516DBD6477C6
-2C478B4E3C2AC2241C68124C4570D476B1A18E7D093C97D16999E06CC1C8C485
-15AFA4836718A40733ED145DFA4B80D3FC3AA074665316786E65706DA958BB71
-67A4EE35FA629FE738CEC51D4F51431BCF8B14804F2C83453566253847077644
-257AFB4D3D13CE77C9CD592F6C913F5AA3064E88779966EDCA52B2D9469FE48A
-C8F6E5036AC9B0671508DA664E3F24BCE551D22434DBDF58196254D7D2C7C308
-1A6822F2F21BDAE029F7F776C1FA7BA9CD94CA7D919B4E7BCB9B885FD767CD9E
-96CC1604B95F0A8715837D7C27BBA08663FBC0DA33C2962577451DB48A4B76F4
-8A4B66E7D2A2E465789D1E6B6D5F20413D84A47E5788CFA97BE43ED05FA176B1
-F535C65F8FE60C72BE326737154602688AB71A8F12622648031414AB80C46289
-1EAE582B933C87122DBDF3E3F1C4F4F5175E88AD0EC90B33CFC13DA07CBE8C49
-EB1E86E0DCA68AF0BE3814595A4B2A4113FC8654A032BF00DAE293B4F2CCECC6
-C0E804B658720C67DC156B4785D9A15274F2BF38748FAC7936275CDF42915CBD
-FB21A739B80CE81B3897539492F113D589DA8A6C7B38621C8354625DC8B40FC0
-7CFF21FD2D09E41AC9E99CB18FB9C92BB735C16FDEE7A8BB75A2258E76195AD2
-1A88B0D64C130BE88CB2FEE3C723A46516DCE8DC6692EE27C6D8469FF511B7EA
-F1B7EBA054708112981C79CFDCDD40BC55A1778FB3FDFC0AAA7EDC425FC2938D
-694802705011B724423608C7BC1E803D344C9B5BDE13005D06C3F27DE0371EA4
-0F836D5C0D6C0BE2D27700B08ABD09783D329EDD00415387C97C04F89607DCAB
-62463E6A37E36C3A1CD92158353D45B443428177D1AE501F1CC0B50C100166B2
-98C4824CAD58B3A396D097E2850B39130E743CF3CF59259A174586B9361D8F23
-6DFDDAAC5B40CBA0495A3971399A95BAAC66CE5B472669E2C31ED0F2BE60E787
-503EB379D332055EBF839B25802E076B1BA8DE3EC59782335AC80D1CB950948A
-5EEA00C5F5829EB5293E05B982032207D41DDA035B3CAF26802A61751B17D0E5
-170C99F6A0EE0EABB1576814EC3B4317A89C7F11022A0695FA3C2B2B80A2F73F
-6A3FBD3A2B8C4820E7705CCEE368CE580434F3EBD2E9DBC162CB482278531546
-74355C299E321C47D1C4C6D48C5100A4B8B2A16DD422AC3365B37A79D936FB24
-786E9AD00E8E2666438B096BEF243BEC5C1AE35A9612D08CF7776E458265FC58
-0D67659A4D5AB175ADB10F662536C8A9447DCF5173E620320A43B2AA5D5B5C34
-78265F88656D2125C6E694AE4750193B05ED2A6DB4CD5A81E48B9912E25710DF
-C66A0FCB7920479DBBF739D4BC746BB03C2F1FF89288DD807E805957EFB929CB
-248F64A431C995F0300C0F836EBE1678C28DEA1F45034A4057520D17A25180A8
-693BB0FE3FE6308A332A7E54A674B497471E2D13756CB0B991C4A4F9F4851A9C
-49DDFB13416722223559BF7BBE8F1499BC93DC8BAC757E42E25369B182811ABC
-FE4F1CBA5E5BC15ACB6344EBC575C2F443A508A46ADDEBF7C34D88702FE46A8E
-D96C91AEA3EB989909A2B22E86FA80721E68A1385239B4883DC065A0C08ECCB3
-693B0D13CA411A78C13BEE866D8AF8A634B81283B77FF62EEF25C5D48CCB10DB
-BFA10E3066C116662395A6AF0B71D23C4047EE0352F4E02CCF28F959FD4394EF
-43F0761B73B8D726B69D5111CF94B720D461E0AE42C974F2EDA6F7883BCC35FD
-093304225534D8043D934772B0FEEE6427D0481A6CD8BD614669B875E1DCC6E8
-EC423D9A0DA290D8571E97CB6CAEF274DF823767AF4E0576588CF2ADC239FDC6
-437910EC0C2F01B4DC773E73C7FDE6E37D3E784E0E5B655600FBF3FBCC1FDCB4
-CF356017BE2A663DD7983A46482A4C1B42A067381D58AB1B332CAB8E5C83FC78
-1F0D9DBACEAAD372991BE3074D9911CBAA95E776008644F203D6B2EEAAFCDC57
-C53DE48816934BF9D70F90F4186F6268522D260512492305533C1B0FB23D4726
-6ACE20B872517CA01EF5EE275CCDC3BFE45C19FF225550E4E73B15E9BEE3CF21
-1594CC1773CDAF0C659F3EDC2EA43C25D00AA68DA8D39DC46A1676099496DFD7
-1155BCBC439742A80EC917BDB6E7593639CF1217C0265BA3183209DDDAF50E71
-FA061C8978583D93EBD97C70A890230AA7123947B197E9536F0DA91373DECFD9
-BD4E1C12B086B12077EBA19BA50B786AAE9244C60020F406AFF705CF029B43E8
-D70CDD5DC7A61A75858E03657264392D9CAEA8C515DD98C2CB9E84BDBC6A62D2
-36CA59D774BD889D64E6C9A0E043D04744D3D807D3A1B1B25266F0D9953266DC
-662424A93FFEF40F47097F48D1904A1CC00030155AA3D9B07D281E055E6D033D
-745856D9465D7349797A07396AE9026EE96DB8BAAA081D64EE4D86ADD8C4D1C1
-CE8EDA25CF3242047E18E4C9870320052ADF3EA543D32E6EDC93264DCC2E5A1F
-458369CC5CD73DDE165D5BF594C81FC992F35DF29A57464A0C6D72D5E7A92535
-3CA14943640A67B23935409206FAAA6A11F598BE24373E7BF54A2B3C34551080
-1B4DB4E3135AD0B61CB1C12A5154013E11B33393A1C16D74B16BB4D8E7B893FA
-E6AA0C843BA5DC50FBE07407D8B16ED2963E36D021EB433609053BD19ACA31AC
-53B1360A48F71D972E669D5357C22A33A7211F3380DF41069AFC7ABCB3300D72
-FA1E9D6F2291E147988003554D2DCE165B5F316A390500D0273E83453381B13A
-95D6E6F3300F36155573B8FB32A1691F6A9AAFC39541BAE0A4153C9F6B181B89
-43D246EFEB5A2B5F66FC60A44E2E1A6D972C53B1E930CAA18A5B58820D8D2EF6
-C1E798E9B744A31FB980C77D36728AEE6E682EA668F32E0C3EC70BCADC32A8D9
-A2597F1A4AB9565FEE420056E8A8B0004C006AD981E94A84CB30ED6FC9642D65
-0FADC7C9950BD962E0D86543EED6DE476E29A525183E52A8C97769E2FBC4149C
-53A13C54341A9F554F0178211FA1E4731BFB84C11E6B776335F1F42864C70E9F
-4C3F71F7DED7FB704A05FAEF7A2186B2C9C2AE9A3BEA55EC7F3334699BCD3D70
-A675D3D1EBD9958BFE62267CAC06FA97421994C17D60879D8B847B39D5379B2C
-079AD7BDB6FDDC56106127147297932F788184B0BBBEA5657DC92E4D6B097F30
-97149A14677113EC8929C69FC93CCE56C068C015F46029110C7DB91DFE31E06C
-CBB475E860D068ED6BE3B15B5C6F6F0D1D5FE6E7E4E47392C46FAA9CE932F928
-FF628944653962EBFE4EE5AF7522BACB33ED77387B0247C146B81F7A860B84D0
-D372252C89556DABA34913010DBA3576A6E13E3A184CD18D53FC758DDA762338
-AF195F1F261D5F10AE0E733ECB98BA2F81F7B456A75D862C69D623CBDC50BE99
-E3D1ED35ED4AEBD6CE39723F459AD508863C020FEE61980A17D41BBE0A54E120
-1EB69BE8C1198663596A3678F11BB8F28D7BF5F713AAF61866B6C172EAD9D25F
-02289C719F2C121A09DE6D8E47001FA41002DE821E739567F5D45F5C65D2A0D2
-65D011472F8AA705C7BC3E0580BF4E2E007EA98AEAF9AFD2F25FB20B08EE26E2
-E8F94A39F6240409F44E85FFAC9A46A2EA23A5A5F8BB0DBE50A7A1A9A6034D32
-B777C38B88F25D392E59AFEC304C13CB1407C70B7DEC884B5B7AC97440CC198A
-A949ABBCBABD1442C67E1828CE582D77F616A49BA12BD006CD541F707ED05737
-FEDED2D912D3C1083AA726C21C396EC6A36EB6B9219F2BE7EF62D09E487B3FD0
-9748121C531F7CD54DD98622C4C945E5B04ED2FD66D20873BB42C5391627B074
-7DF90B81ECC6AA0743F25247978CC09C28C4F878E29A5070E4023BCE95FE0ACC
-CC01D0EE219FA8344E8F6D7D43475678DEC28FCA370A417D2192DD293B13E507
-F20AEEC2B825BD73A6678698858CC4B3DFA40DC96536735CFBBC2CEB5CA6A396
-C8D387BCB4D6031DD45563921409C33F3BFFE220D7A255AD2B422AC9DDFE7A13
-AFFAE4D39E8F285A4877D1FD83FF8BB9BAAD29C4C4DC7CEEB139D4CC253859B7
-24221EBA02F074C94543E32176588F50D0ABB9B0AB449E21E01377E96A487B39
-E45385A6A12DE9067750598BD5A12DEE276612012DC4226B14B0B289C9C8EB08
-49B5FBCA42865EE9ADECA117AF8B2BE60A2F825F51B3FF32DE769AF8A9F0708D
-7BA0C614E8B1CAFB429B6407B3BDB582FC49D3794A0BA6932824A1FE44429731
-5F1C8D2DEE93EFEE11C29B1C020196EEC515336D8FD1FBD73FA4F2B454066970
-1657B1EF286BB2DE8E5ACBBF40C992F9A22255B3D842E68346CF43C568E1DC7E
-389CB45E387321424D7950AD8834BA43A128309ACFB55FA8D30C0A4E13A06862
-0BA93765AD3744B7F0502EFE5D457D7CA7E988968EF34E2AEF0D1C5C1252BA48
-E4AFEBD828CD1DCB34738801458A8E4F9970DFDDF7973961E756ED7DAD161736
-0F774F441671DB46F07E28F57A1EC5FAFA529685CC5D419FA0ADDF1030B3F21F
-AF395EF405CFC8FDD30B79B80CFC1708602680E9985C38474971F5A24FD0C415
-CAF1F98938F27BB1C805F0617DFB86783BE6F3AE6265DE523D2781E94B042D16
-36DCBA12FAC0BA0B2CAB48F31FE24BCC5B032D3987DE21BE7E191D578E9E5644
-81BC38C95513F04C8F1BB7DD82DA3909DC75CD509C0A5EF8226E0EAC4BAD4D64
-FD2D6BD98699B1B147B03FB3235F4F16F367D9EF10EEEF02093C40B9C6905716
-E43CBE3B6814EC7DC6358B72A2DBDB3A22F65E1B9CDDD4A639ED9FF36E021E07
-F5C45A74E31E755CD1F75CD2432D2E369537D3D738D643624E43CB52A1675A2A
-2501397B11A902B26BFA828E9A744AB40CE3C143C758C6969350BA53BB8CDE8C
-B21FF1336AAB3DA651DA4E822AC8E7B26B484955D115689E5B47F1FC0A88D9E1
-C58559306D908BEFBAAC4411B52396F19D4585B4DA54EA8929B11DC4428F158C
-AA3AB1B6C5736A7F52A3424F1B7995A97253C8F822C11204E340635D13BBEF95
-108334977E7FE842A2159F2B9C85558031F5D1B00F3C41E627B1DB9876EE658C
-50AB296BCF6987C92C60EA329075C391FE8162A7ED4E48FEEF9A7ABD6C26A1A2
-C667A8B8CD2647A9CFA8C792FFE0C2F0DE0C0E93D1A7B33E8E7872F061FD9655
-F39311738856E18EA0D00B495CB2457719FEA94CAB84DB6F5FC372411D7A0AB2
-ADE0DE96EFD4C911DFDA9E71FDCEAFF5D560F3F5452B64A5DBFC767F42C2E275
-BD357515CA488B6396DBB3F64411CA16977271074F78E59A64D710D418B800ED
-C6B89803DB4C5C203539D1F5B72F010F93C7C4AD5B083D12593C3FB192661D2D
-D29EF941C0FFE601698FDCE920459049C09AD75A27D5D356DEDABEBD4D7006A2
-61EF36DBD3B89455CA9BFE2FE8ED26203A2B353C3C9F88C7C0F139E2F261BB8C
-BCD84D39EF0F0BA674CBFB2A3D33E55E3F16D464B4FCA2D199CB49CFAE39C3D6
-4578ED1507341B99F3B0B5648404DB4DB6017AD727B3AC90583C33A97B292D31
-B92B6409377F817A90F44EACE98D1E9E964B629151524CB3B6EF817E1CBDEF71
-B1932976E047CDB677950EA322A037BB2A373D6FA24292572857A1A2DF3BAFC6
-713475131190F98BDCC81D52F345D4F27F9BD39E7AE32EA27F352D00985E72F3
-EDF5338A66A7DAF8128A150AD0323C91D545648DD5F6A3E9F508D183A9D3CF00
-756A226EABB0C56A8462CF1B5A7D690525531E245F007BC479540E1612D3EC21
-F1E5E6989B571F40423A1F8219B61468102DE2BEFC60AE053904CDBB6D72FFF7
-C77E87C7BF193FF67490AE4CE925E875C3DEB9850FB13734F3D6081A400EEB4A
-22883CC403C4D94F026D8CC056955E46618F60B17E645D750E5F5788AA2F0C0B
-51D7F721275326BEAD341C9A2AFF4F5AEA8D441AED0ECC4C8854012961166BBF
-0309460BB9AA8976476A754E5534A45582335835081EFDD7C7BC2EF98076EB17
-BB7E226BE1B243542617C65C11C5376F9FD80B490DD1836E32C69F1A3A130AEB
-C3DCFABE80F70C37723A03EDAB199CD1B59656A714BBC232258AF6D4B38BE10C
-EDAF9B1C268B99F782489D6035B4AFA93BFB5ED0BBBBF641B2CD4D99788DDA11
-2853407BEB3867306B30F9C4AC4EC8AD5F5EF6D5870E2AA0D8663E3CC85607E6
-E1D627EC95C3F26ED1972EF8951DC4A456E5A8B610C266888F289292223135B1
-8BCAD80D679D5E12AF67638E120B0E79F1893786541CF8FC41AEA547DB108CAA
-7F5202696EA5698CB5C995C13CBBDFC2D595EB7880FBC57D21D30F61A4508589
-6E2C3F3951A8E40B02C2037487EA1C780AA37EBEADE41CA961C92E574532D7F9
-F55C21A04F1A91701A0151C31A2740DB5691F4DA0683A2E562129AD9CFFF599A
-7ADBA4DC4BC3CCA72D4BE8C6F4AEBA04AE8DA8B50562CBFBC044AE1E6FDFEF07
-B3F29FD66B2B9BC26D9759753760FE5DDFC4E5B36DD6E39255242F845C5C1407
-8E2438C40E218F86E77D15120F1B2318E4DF5B90C365A8DF64609191213D38B5
-8D7961E075A774ABB3D4CEAC067A893DFFFD64DBDC32FAE56109BF915FAED94D
-35193879EB6D23B8436BE08D3453E9ABD544FE8CF2EE772285240CF431319852
-75E110E016DAC8129594659D8A8899080CC989EAF93EFFC35BA38B0EF5A809CE
-84D6A6F984B81A9C056E848DB7A77441D9F86FAE9A6CD215198BF6CAB68C2FE3
-A81FEC8EF7BBA03CC2FAF5075A97C99A00A932F5F7F6851633C3C82AE746DA6E
-0E77A6DB1C3FBF2CFFDF551C69716407F7CBECCE8438DF1E7DD36D99C235056E
-1FCB0BE202AF56A0FD793E3AEDF63C804B51657A72D975F40CF91263BFB2F5E6
-1D2D430505B03C28B5A0D0674C881116A0A2AE154A9ECB8DE274832B7D71B4B4
-1032DA3374CCE09429228A6C17348B19876BB80C779BB72DB25496F540DD4034
-76A2173A21D840FACC91CF6ECB0CC2E3EA42251DC77E4DC1FC46A826FE48E854
-5886A3A0D32F2FAB9DF8F1DE91502AD4281E16B401C5699456C889FE369DFB8C
-840E6F49A84BAFB9802C2EE9F9CE6D6FD0C6A9D1F11B53B7DF69F5D688DFDAFB
-DCB773A2331AA926F65071AC597F688567D956737FB7614CF0FC37D0D5DEC734
-ADEA88495B8FC084707CFC5B3E055D57496962282DAB869EF2016BF8EF3017A9
-F40D26C36A60B35CE377F1F2A6E77260ADCA43423633CF6373007144C30D6C1E
-DCA4D09F811E6B87BA29B62531D7E41636955156FD457726600F3E63832E79FD
-DB7D25729B4FD0CF322F1C55649899A4F32C5D52B15F96214691B42937AD0030
-C115EF4746D64593255BD6B0C1B2F41F1CE805B44D6B6F1CAEAE37C6E8029544
-3F92EFEA1FD34FBFB23E0838B7202E16A8F8A6D99677ECC497AD32649D20364F
-EDDAFFEBD0479154FED495F44CE30BD574B153EA8143D79B54EE1CC015B72EDC
-49FD8A05999A3F4B89932B9982145CC51241ECA30D17F933AD81923D0C813102
-AFB6BE0E313E63493AD7013C3B18CFA6389FA1E8A78138B78A64FC9CC08DC4A9
-A69879A18E3E9226C0F52FB47CA9300C7D4E625A86FC4F8EEDDBB8F348DE6035
-953510CF464E6C7D12CFA364864332B0E43A2FD6DA595FA07994950CEA3C4818
-5807EB23FB8973F764FD1C2DDE8A844093232D5723591F2C4555DCC8A7909FE1
-2DCC8C8359892FC5ADE6EAF2DBAC49D2C34FBDAE7DB9EFC0453A43CD881D68BD
-848A5036DAB5D21AB382C6C1FE97299EB4776D88DE8C428406E2048C6D0F450F
-FA8C6E41A72218FEA3AD35ECDE084E61FE84CCBE90A967A4DF876F50C51282B2
-AB6FA496E8F0793215CA1432FB1FD9CAB6A3D72C00BE35AB4D752F5D165E8D8E
-00E43FF4295F6F5EAE61FCC14AEBABD7FE6F39B4EB085E80E876B6313C2ADB32
-112AF75440BE467933216CDD14800BC9DB3394A73845D24FFFDAF52D0C909038
-FB028B1E5C5EB4D7791D537D6048B334C2D60D7ADE46933689EB28B7C9B70011
-CFAE112BA68380C88991DCEFDBEF3F77228910B4070B5634672ED148CCC967AB
-D68B423389DDF5613519EEE0E4446CD6826E15B71C4E6E93C5E31793EB3121A1
-16367B5918B08DC4F0166BDA1BC993E6E4407453D0124D0C54AEED340622DB3D
-354140D0470DBA24FF3D30B1CAB82776FC530193D6B8886C74ECBD67C4066218
-141061F7442C76B07E9E87F35A676560FBE22E57CB8089AA964A67FDC52F4F2A
-22FE69F589080FA1F2E2FF6574EF5D5A3EEF6B5B5C3CD34C9D9313E1D1442BC6
-C2B47D3CA6DB6C09291ECDDF57862020A511749A8218081F8CC25398323BB5E5
-7E4F90D3
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: LCIRCLE10
-%!PS-AdobeFont-1.0: LCIRCLE10 003.002
-%%Title: LCIRCLE10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name LCIRCLE10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/LCIRCLE10 known{/LCIRCLE10 findfont dup/UniqueID known{dup
-/UniqueID get 5011942 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /LCIRCLE10 def
-/FontBBox {-2000 -2000 2040 2040 }readonly def
-/UniqueID 5011942 def
-/PaintType 0 def
-/FontInfo 7 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name LCIRCLE10.) readonly def
-/FullName (LCIRCLE10) readonly def
-/FamilyName (LaTeX) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 8 /a8 put
-dup 9 /a9 put
-dup 10 /a10 put
-dup 11 /a11 put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE366EF37D4823F376DD9F7E4CBB15
-DA8E93E91E84D36BA5A5B06F3A46B45692ED11C8FC76C0B0B3157F699878E2ED
-D89511CBE105EB42FD76309DA91EEEE85F1AED9920648285111A1690C4AE2638
-C0601A7DBC8D2D41CA8C4F9DC7A6AA5C51015D8BA926831892381DCA7E61E230
-5BB3BD5632D276B929D97D4836F9703461BED94450CDD2660430A0D13F49EB47
-72EB0371E38B92F488FD6E19C944811D4AA52CCC359210320B484568E5060BC5
-4D2FDAC73C49BA0168EC70388AF54EB24A30387A41246830C3E11B3DBB829229
-A126B8552A35551E255F5AAE7C8EF6118CBD2D4F784FD65B963C316BC80901FD
-B45C9EBB618DFE69C5799A6286E6538B2D72B6CDEFE238C65027FD1C9AA5A1B3
-ACB812A949B7FCF9A7D3295CF3E74B9A9A868E31998E520117DF61FC2ACBB551
-356134A66E4DA553ACE4B3AEC750C9F07790ABA5A908A249C7456F5A3D41D78B
-04A74B53B8A37DB4F3395242D85DFAE5B94CCA6CF9C83ABFB97FC6E91813569E
-D23422021C1A436F1C58A993F06F9219F3E4765E3DD412F07415F2FA51C7E0D8
-9A3A713A43AE7BE764ABFFDC9698CE0F5DE5E7D23BF18BA2012537B3645DB8CC
-D41C2038389037BE4ED53A763F0E2E402BCE13407EB82A814673E8914A7F11CE
-BB5202453FFF14EDBF91F321D2230DE76B34DF7D6AC2BDB21C6FBC15D3E7FA36
-EDE1148E37E302A88B376017392C24B66D231585C3A116E5D363D82FA8CAE807
-97822B87AE10F280D6A66AED7749AB5A6A2A98EA3585A37C74C5C77E389BD364
-85A2BC86C7739ED20211EC314423CB956709D0C336F65D04AD96659DF4F1CCEE
-610631809B9D9199D943DB10FFD23D24FB061CA40091A2D06C660E0968E06AC1
-6AF5733ECC7D22BAED0938251326BEFF83747018B59D1D1A610F821FE23BD403
-811B76423D3E5DCA6312C7E7564EA5736B737134261F430B0752D104FA1658C0
-B10C5CE008180940DF1A333E45992E5EFA514E74C571C1F70FA8326B82186A1C
-CCBA123B2C56BC2426A16C93E907ADAFFC6D632D5BC62BA87086EA10A597E1E2
-F6F8C884CAEBF065F610B00B5285EF78B1D0F72CE3FE6E475E5D06112F804350
-2D1609CE532919621D017A17BFF9AFF5DBCC8F69F0FD2473A1967151864B344B
-BF1CC589907970D84F25CDA6DC8DFEC10D4575E5CB29FB8AF128AF47734FFEDE
-6B4EF9B59CC6F4EFCB6D11B27F8AE9C912B242578AB1604F51D9B09AFAF07179
-48CF524C66CD522E8F7918648B59DC53F7DB1E7A0A273CE0DE442E93737AC5E2
-356F71642E6EA8EDA5220CF2AFCF0FEBED0DF2A546BE6DD1D538D80520516515
-AA5E3AFCB7F9FA1F0F62EAB2D9FC05A3B9EB7CD491F760C5EDEAE34C13665223
-60F616A3574A5144AD7926CB04C5A606009E56069A49927C53E3120AB4DE04D1
-358210F9176E15658973B2D08FD3FD4479C6B7267BA91E8DD98AD2417A9BA799
-F0C6EAC948F03BA8C88249A304ECF8F59A1E3BF3083F77A05DB003DE5CA3314D
-63917E4B63ECE36005952EE2AE157BA062086C2F18B1C5C12CD02D20B186DBB0
-A7DDE7AC216307578F382AE4D4E81BBAF3EBD8FF6FF841E39D28CCC7736C3C0C
-FDC32E5AAD23454E1279C976C3654C84391C8068EE84CD1CE5A335716CC5FE7E
-60A328392DDBFCB4550D521940D69BE80C5A98337F0EF3F4AA16714E743F585A
-1DF2B5514D7AE3F710BA76159481FB3F2C30A8594D80124D0826FDFF3F4D8B7B
-B7B6FF443D85E3B2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.0: CMMI10 003.002
-%%Title: CMMI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMMI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
-/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMMI10 def
-/FontBBox {-32 -250 1048 750 }readonly def
-/UniqueID 5087385 def
-/PaintType 0 def
-/FontInfo 10 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMMI10.) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-/ascent 750 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 22 /mu put
-dup 25 /pi put
-dup 58 /period put
-dup 59 /comma put
-dup 60 /less put
-dup 61 /slash put
-dup 62 /greater put
-dup 67 /C put
-dup 68 /D put
-dup 70 /F put
-dup 73 /I put
-dup 74 /J put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 86 /V put
-dup 97 /a put
-dup 100 /d put
-dup 101 /e put
-dup 103 /g put
-dup 105 /i put
-dup 106 /j put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 114 /r put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
-45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
-7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
-72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
-BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
-974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
-11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
-1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
-7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
-0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
-EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
-404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
-78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
-A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
-88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
-C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
-BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
-98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
-E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
-143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
-981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
-88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
-4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
-FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
-347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
-FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
-C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
-B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
-F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
-29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
-36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
-048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
-80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
-9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
-75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
-4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
-74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
-D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
-E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
-EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
-543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
-710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
-EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
-7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
-03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
-01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
-500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
-F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
-AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
-1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
-85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
-4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
-6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
-55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
-085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
-BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
-2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
-CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
-BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
-D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
-991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
-6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
-E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
-E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
-B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
-4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
-1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
-B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
-8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
-FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
-AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
-BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
-E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
-38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
-7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
-2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
-DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
-22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
-8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
-44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
-D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
-42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
-C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
-0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
-66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
-E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
-6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
-1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
-B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
-897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
-EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
-A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
-F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
-A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
-2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
-51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
-598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
-87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
-178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
-4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
-7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
-AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
-3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
-337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
-C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
-DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
-7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
-6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
-98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
-821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
-C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
-7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
-B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
-A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
-23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
-C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
-969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
-3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
-9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
-1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
-B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
-95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
-FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
-44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
-FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
-E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
-633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
-6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
-FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
-375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
-6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
-EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
-E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
-F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
-DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
-D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
-D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
-9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
-9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
-B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
-D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
-8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
-FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
-B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
-00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
-909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
-5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
-7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
-BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
-C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
-BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
-BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
-4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
-94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
-F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
-E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
-92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
-63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
-CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
-B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
-5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
-86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
-AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
-3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
-35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
-155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
-AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
-E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
-226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
-9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
-8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
-919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
-A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
-9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
-523BFF5E279508A98568CD5CFD18FABBE9D17265A9042537872831BF5F1F340A
-8D3E6DEA1D9675E87B3425FAA0172DBEFD7C28E30906B9FBA65517C9B58FB6BD
-E0D474E69BB90B0D130A32C4130974A1C961CF064A5BE8EC1056858553FFCF7C
-0D78627BDE04E5D0B9F6F72F92B61A915DFF7AFE7DC3807891D039AECEAC3F50
-0A09579E661D3DC3022206061E0250B09A05CF198DF82D4F28FCD3671E815A6D
-94820D0C87AB1DCEC251605D9490BC465D8A62C95B7352250D76D9FF1D3D5A32
-9690780A5B56F9BA2083B29AAEA996FA95246D55AE88B0D3F6F307959251AFD9
-82650287B5A98758C8FF3A60C40CBE3445ECB497F3E04C98DD52DCDB2F632D5E
-FB5654C417A12EEEF2DB5F0CC54A379DA75BB9DEAB9FD9F256C1B832D55382E1
-22A7DFDC37044BF0CC2CBCC4405D8A3495F4886001D615E1737FD9877EA3EB51
-823C2FA1940BD8BD802C34BD648B41E268B825129BB13543961334C69DDD8407
-97E868B79C83752682CB506FC1C801F63AE7B3B8D7EFD23C54232AA97FA8B2ED
-EF2AE0382B4ECC8B24CFC62F698F8BBC90215BEAA8446BE6D261E30DCBEE8CE7
-6BF8D0E51BE2597E8086F27D4C58573A208F32A9FDAA7101AB01A131DBCDF4BD
-2DE99E4FACB33D8694435D2F061C6A4784D911FBD860897A842F0B950FE6891E
-CD121E3F790F6B0B3DD6FACFA7A9128D4DBC9870501240E0FDF907A639603FB9
-9BD5D842AD6014F5A788EE793BA14555BADA25481A5A2314D16E5D1FE67E28A0
-25B2F33D833CB3201FA4B040F7D43CB51A25E1526D98418776907F688D82024E
-4E9B13C0258C7EDC102BA495F04007F3827EFC2C7F157986675586488CF7A10B
-5F4A259F6795360D9A6CBFFE4A3AE27D28E93D5F6360592C81FBE8317289B31A
-1CCB07914A480248D0C36A1E42B07D951F692A9002E06E1DD8C707974C34310B
-56B35A586A05A96BBDD2F3EFA8E17DEA1C4CBE9C65070896D9E71B71943B4641
-288A4EAFBB2D25850BF1B50CDA097EC4D7D448A22F626EDB8AC1E67EABD97F1E
-1E0196481C95E68D8B506B41F9A7424351B552DA26E619A3D0A9F57C8C420AD9
-53368A183511323E4A2BF63658C013D844BC0880B5F86E7D023B58C711DFD83A
-39B70D5F6FE41280C608ADD09BABAB0F40BA79F17DD33B9E0FFBA31036CD8419
-B7F9DD79FD4A7C88C69345C6CC33BC55D3464193A451CDCFA190468D3AFA7809
-B91D5EF08EAA8121388E4B2B237749D1013477F8BDE5D7CC3F8237D3AA9148B8
-3E6603FCCC7E84ECBECC40E670B25DA8280D6A0F4708D0FA9D922D10F8058693
-5409EA886796AB11AAF32D76458887F0FD9D97F7D3783602636EFA704A360D90
-A3FFBE75DBA00D5303DE95B8E044F518F49FB9F7E51F3C43F035E7199A82266A
-60B31EDC48E60E140B18C49E8726733EC53E3D03D6542521BA96C48CFB20F868
-C84610BBA7694BCB80B248B9A9F9282A651B6282D3DB049D6FCE79DB9BC07A35
-13DF78F0F31CC62DE8FEC9793F346DD908692CCB34E14FC29BE4E035DB94C0D8
-C90F51291CCA91CBCFBDF28EF9053F501B0ED8687BB7D16142ED3D893AE5DB42
-E15E7B52787540028BC50EF38E1FBFD4B6179E7D15C5C9C2C4F94B1D4258B2A9
-95AA848CBA9DF227A9E899CCD2171857C5956CCA4026B6B5FF0B7BDC0E154603
-35E5046D33C52AAF57739A5BC9C24A4DBA65264882DAB44A2D0EBA80CB7FA182
-FC6FBF4AA65A2702DCDDDA0A7D9F08D44545F0573EB270655735B6887D5BE716
-75B7147CB417C70AE189D59C06B26B610A4FC14A6125DE1A4CB0035F0C9C5741
-6FE68DD76D1E45B78F3AEE00C51F59C117475E30F3CDC4CB898B32F3D9B44D34
-24C13906DB4DA2211CA3B3E1F55907CBBC64DA9284CBF858ED2B1692CE6AEFC1
-2E9D95AA2B96376A8D6946C03E6144C49D4DCCFC6D109BDE6FA6171B542DBD3D
-CEE379356AFF90A3D15073D66BDDD972B993F541D6F3362B400FD41952032E06
-0890596ABFDB05F632B6F43221F4CF3AE832B1037DA798BC2F20AC47CE4CDEB8
-84E618276D797A21E15DDB8702281407F624EEB6472AD9A9E634CD64D43DB0E5
-693FC5B77B2A082269CE9510185CBE5D51865A460562C60ABFB9A6FF3093E684
-111F8173303D11F033A1D5D20EBF85884C4B4C5EDF25F4A6CDE65E4072BB076A
-CF7F98213F3958D0E281AA3EE6E6389268B931EAEB605515E4A7DC5343314B7B
-A99099CCECC614F39DCEBDDE731EAE6936F464E72B1D0CB7CBE0A994AB32FCF4
-0EC53F096721EA4F9B412648067C485F821B5030EB7165F5D573F842921D6799
-233661A6FD891B8CDF6FC492B9F5896C31C1559B0A510EFCC8ABAAF43CB989C3
-2661C15C5EBE865099F8885B0BD5A186CB9BA23405490E40C27AFAF4CBD6B8F3
-51A731AEFFB8E73D786E760208A5D7C263A45E8A899B06B693BCE65FAF04B70F
-F4D2752DA2291ED00B339CE905661E49555A94854B2BBA04441D0B1F8070DC37
-B7214316912CE1D539CEA1A127CD7B5EC825234D733488D535661D92FC111058
-C8E3CAD7D1B00694D1418ECF68C9BA82E2269375AFD8836ADE9EFC831507E765
-F9A0D59D4C70E740508B54D234C6B8FE694D4A249B916D47391C849F7BF234CB
-9ED9FFC49E2E2DAACC65A0964BD6B7980952FCBBDE1D78954F64E48D4447C31B
-B66A91F8CF01A49BAABAB516A9EA60622A3CDF43042C8C41FA9566600C8B6E62
-60952A2294724B201248BA5F4FDF79C926A94625BC4ED6FC990F0289C4E86F20
-D57EE3AFC4F244ED30630B26FECB21C1365E19A2859B65C06F84A291CBEA1EB3
-24D82C69F3E56487416CD0B307A743716F49B6A2B647FE5E9E1A7EDE40A74C12
-ABBD1C82E4ED1C3662B636F9D4609B17585CFDA8DEE91FB8986E3AEA711E76F1
-57662934062EC498253746419ABE3D71D32B88056576EEFF600D3D625C1675D6
-6459623BE83F00106B2AA840DDE4ADBD6691602E0353DEEE137A2233AB97018F
-846CE05F4EDF816D10401302D7735CF22A38A534670BC3862A7978F3A1B3C796
-2AB3B775B6EB472D5A5649CA265F98E1BE383BA5E9EEA27CD52E2F1025BA75F1
-B25352F5FA8D51B057315B8F45C71DD614E0C7FBC733565865978DE514B5FCFD
-4C7BD5FEDC41AD2932D4C1C4416C304492E98F409A95D3880D86744A48DF40BA
-8004EEDE8A86E7959F6114E86351CC25444130A99E857B7E5BFF1981C8CDF132
-29E35C61B9712F0C34919DF3CFE6403809E9C10DC3BBC15472EC64A5365BFA71
-59FFD4C3054D7231DFB37FFA91CEEA18A22A554B31161AB513440915B23AC5D9
-D68A90461660B8BB75DC5A7196C46E96BA40AF83762C41B2CD962E8405F95167
-5496BC897EA60E28A44EB54729F2DC8433F4C1AB8EFD7157BBBD6F59F39083CE
-FF537AAC5E4FE4D59A51FBBA6C4D410EC739051105E7BF999809EBF5169A2B00
-8AA4E4B806871A7E0D2A26A184A136D7DD59EF081F1CFC3D7B18B3FD4B35FAAF
-213D0EB42B945BF68F3918ABB6AB84156F413722654036E975126ABCBBB7AC8C
-7D59A0580F6FF1DDF0560370392123FDFD99D428FF83702E2968026677A01485
-B6BF81E7925BC0014BFDCEE92B4ADFE66FEDF7589C42D12E695F209F754DBC15
-FF24BBF1E653838C67B90B2DE2303B335D54D2E84BB55D4FA71846426EE116D3
-6AC1AF4670D5925E686D19EBF03F43DE71B0893C9F9DBF38669F54796548A8F5
-403C03277D1385174CCC5C7B3F8129F87A58DD0540B2B777E1CE8E9D008E0CF1
-EAA69971BB12E1FEFEC9ADE7FD7E83D9DCA52D6FB9974C80B4A9284E4267B169
-0CB37A0AAAEB62C5282A18D5BFF356D49F8FB8E645FF40D7B885FA67B5AACAD8
-02613A4272F9E50081124D71EB0FA9F7B5172442F3DFBEEA2EBB9C0D3AB5C1F2
-A02284E98BBCC2AAADB338EAB5FBDB76DBFD968364EFAFBC6F6BD51DB3C85B44
-A5600720ADDB79AA86F09A8B1809F11425D0383F0556EC979120444823DA28BB
-6B8AAA94ADCC08018C8E1FCBCB289D8D04C16CAA5A7B026456BE2231A79F9D40
-7D1AFE1239C5A3788213D412D5B97EF7E95F910D5FE98521EB8423C71EDF3393
-4471CCAD0FFD210397BDB70900F6BCC4E27CF980399D39A899D80A3AC7FFE845
-8AF782341223F294EBC40F321F227869E72BCEB03E961093BD78E4BA203D2AB0
-24D05557A4ED4491D9415116AB675CD3E4A0C698C3920D89D0BC1D024CBAC766
-CEE9DB043188968A9B76F15923439C5A685D91399E73C71424E77DC58D230271
-DDD823AEB794D85C2CC7ACA71CD47BCD6A38EDF95691E698C8B114B5D96EC8C8
-C113397D3B4A3EE28E1A9F7C6E9852A77616E73B758C893148BA91FA06B181A6
-C4BD0F9DFA45413D09D587657D5BA143875966733A581765FE4E2CFA1A36675E
-B5BA24B04EE3D67B4F0EB1296F63ACE806182DEBABE52DD7863780C5BCE68E54
-51EFC6FA6C1ADCBB0CB4A6A32CBFBC373A06B2EBCDFA900867A09005527A819E
-DB1BF9851FC3F48FA27BFB7E31159C8386C09CC0ACCEA813BDC668664D143D81
-DAFF07A34BB426A4A45D48355C142FAF4E53E511B3B4BB7D3E14E1105373B8FA
-A9F649B9F068A21D972B9F7CB17899B71D3AB7D6B4BC59AA82EB199147F8984C
-6888FB58358663FDE92797BB16707EB805A1E30B5B51CAAB0D539A8A531523F3
-28C4CFE6EA813D6FF5016F4BDF395710DB37681DFAE80DD7B653B623BE6B341D
-29A71C09E702B28C048D3F15395BF4F85356CA11E38EACA192CDB408E21A0A75
-13392BF4FFBC2BBEF567E9E3C26FC1AB7E8861D3921429AADE5D3A246E9FD069
-AD0B7879595A86FB5D1DFA3BF7738AF45CA71D7F1D91F5BE01D557AB96417C49
-E8EABA8895708DF732BB281340AC5EA2D6CEE1FFDB48922683510111DEA75DDE
-F07D33D518C47117B43EF9DA6E7DEBFE7367379BE449136A049668DF892261C5
-A782C6E8142F36B8473DC799306C76041D6A8C2E0F509E9DDACDCF917A6904C7
-76F677C601C62A6BC1BA61B63A1E5F519A0AD97B842D5E895C47EB571E64FD46
-22710E4542082372E1AB443F0698B805024B0D907194E6349905FC19E0417F26
-09A9DF717865949469020201BF75C1B4F05A97367284CBA38F99A5C98A73FCCD
-C9C617314CC5967EC8433B5EB9EAE781729332252BEDA08007F7F2B01C51582A
-F10B068307E2CC0F804E468D0BAC9DC7A29C6C12EC37DFA6D3F4BF925B08DF77
-540DFC3C959567968C3896291B6D2C1D2B06D319739B113445BF2868DC04FEFE
-5568CA90EC10B11F163F91F68E6FC90A5547B2FC6E84D5F535B89DFB0EC636FD
-44201D6FD41707D9B1772E6FC05F0C85C708AD4DDEE2D7A74B5EF55115C192C8
-86481CE9C289515CA31F7A1C369AA68119C2C342059CA705D46AAAF52F117E8A
-DADBC2D91CE0B64670B8CE7AFAE1721DF4F2921D362C704DFD3A083E611F0426
-1DE456790A370C32F6E72F22CD5DFB631946092BE35ABE74E70050C83888451C
-F0BFAFC7CFA1FF8B261E9459ABC28D34A5461A9F421901BC054AD942D587E788
-2190C9E0FAEBB210E8B7B229CDE3585BE5BC3EF00EFF3F5F777EC87327A9E69A
-86D178557374F72E28C69191A8E865097620BEBFCF4BA3A8BF240F0F42867B8E
-3626023B11AD9D2E0616031F2E54267B2EE037E4DB583BF509EC7F7052C907E4
-6E341BC854D37F1AF3B437BD01DDD9A209FB1FE70DAE1FD5F588039E7558EF5D
-CD31BD91725060E6EC566E8371797B754D17874AA388C1B1294B119D872CE5D8
-48B24D0A88FBA60E1ED55B70BC007904AD96F855A53F505F00E50555005DF57C
-2F8BFFCC99DB3FF1B7F1390DF415AA50EF2A15D90CDC87B39170A155B669F012
-3222A4E282EE8D97F348606EA612DF353798FDF14C8AFED3B58D9E7194FCCF56
-381138051AB6A7AB3B8B91E09DE3C5C73A5B6E25E6FBF4E0C5D9330E913F652B
-29AD782C48D9BEFAB7EE23427A20497BD09DB16E3186AB80BE9B1109A9089098
-9EEA0016D716787A1CB25A3061E206783AE1172F017D31F5C3DA9E525A311D15
-501C135568150096256B8E4A4B21A39AAFD7AB338DB33054BFC4696BBCE5D6FE
-BC0D9971B17107B81ABB6FC3893E0301681E22E2C489520552F726AF8A305611
-0A0C5DC2C5E04EC6877C3AC8BC1BB25039AA14A71A2869BC075098DB4C6AFE51
-27ED72645EA812562B5D2F57C91F5D095BB58BA85E170587548A9D68F0826D44
-9C0EBB39BE243428066B0DEA3BBDF9B4E9C80DC09C9B4823743C4828BA8E09BE
-DDC4D2B45A069A14FD92D92D703FA2D419AA686229B7AA68FD7AFF5BF0DDAA89
-A798396DFB2B1C01C5BE30345BBC2F61A7E20B494ECF8A1BD092331D38AA5602
-8D03222E3CFEE6935102E8EE152BF2AFB2AA408677AD3EBDB9D13E2861834031
-5B102012691A347D664DE777DE5F2A98736F52E2C77527B10EE03634CE7BD0FF
-1A878FCD6EDB02914E090FDA486042B411C24A3FB489979196A4E08C11445228
-B50920AA004BFD62A198EF2B7E5F90DD982144A9749127C0F7989554D9CA52C5
-932371B1B025DC08FE4DD8280DF5C9E21059D45C4A941A3EA1D47237C0765CA6
-7720D229D2316DF8C1A619B197EE24DE1C5ED80B28D740521C3EA398795E7BCB
-83654BEFC5E2F9F8FEEBEAC2BED1B917B60DD01EF587F5E877036BD3DEF8FF54
-EDE2451C86E3F626E15002E1543C671436F32FC93BAFBEEB319153AE1B3AEDB1
-755A0341E29FDB0E2F253D5AD5ED2432E4DCE442C98D6B86A3D9589F319133F0
-7DB4B2C5B9DA2AC511074E3B4ED2D69060FC90902CACEEC41764C082A1855CB6
-009DF59535D1285AE2518CF9D8E6923F8A38916B348DB0F6E6ED61526E2323CA
-E6DB512B4D896278860D6A13ADB51444DA12BF198C9350005657F3D84D8A13BC
-FC923A72D6940200004377C36215D4C2D2EBEC1F89035BD926C89DD33C94202F
-5310676C3816F2CE2D747A8E3BF63A92F510770285CB9906AE7BF92AC1206998
-12FB3AFCB2407ADBDBD37F4BAAC4B474F5B7B6F2C5A440D0892F166F3DD20B1C
-956FB35A390528C3BC803CCD4414FBA0F606F00321231767FDEBA4691AC32C40
-D5A2DF4B792B43A74B1C0C5BC25A96919B0623C4C158BCBC620A44EA9040A984
-B915C9BEF29A76AC47F27CBDB0FE7D88462F3F9B9F17FD8D8BA3C061A34CB65D
-66D8E8DC1597D6947A67C5836339A6A7D422FC99E58BB2B608D71838BC9D6A69
-ED56BA1EE00B556DA695947C008FB2615A73BC844FD7984BA996F836F51E1D49
-620FB80D2DA051F9253F00FD776B5036C4BBD160F53E5CF4599A9FA47EEF35F8
-E02C8518F58E6417FC2C0D202E01CF56884CEA2635D4439B576FAC1A02C88518
-AE99FB5488F469D27218384BE1EAB941B0CB34905534E2E66CAD63888D51DCC9
-3B432C1E2E76DF66377C6BE4A42F653C7BFF79CB6738D0B8D5CCB87FB630150A
-3AD60A93DB6D327379DF9B800993DA5AB295454E0EC9142218045CB680593F32
-148BB934F98248254DA781306784A28ECBB2E19D7224D508AAA6CE14DDDA0107
-838E0D553E7E84A9C3B5D2F21390839B4B43C986D11FC6D821D5530AA0475671
-530B8C085A5F8EE607E6E64AA44718481BACC2F741A4EF2336080F259322E276
-BE97DDAF47887B742E6F64554DADB7A1EE5C033997B78DF700030501A8604CE1
-9BD02DDDD7D838E2A79C5126F1308A0B271DD3A19FE6A88359F70D08694847BE
-08EEEBB1B073102D363661814B944E1E9C53727D2A5AAE712EA739DD028C6E10
-D262FCC2C392C8893EB5E9A0C2EA0B9CD89CA7C2EE2AB49EDBF8B65D2DB4E1F6
-59282B0D86BBA10C201E53F31588030EAF68C460709E1D8EA798381CE4A8B956
-40590DB285B7E70AE7A829040D4F3363C8CA638995A1B4ABFA3F0C7940077F56
-9FF4C78AC5E96E0C1E799C7FDF61258B4C96E795EE1CF521A10145989B3CF31E
-C5200D87A1B87F363DCF7D94AB43F4EC19D387D38BDB06A57510728CC1093F81
-79041A50957E013DBD1BCBAA885A753F2A42EC888EBD06ECE6BA71F098CD2F2F
-E5BABDF379DABCE89379147759693657C55711B64B537BD557D5617B4D30AD87
-A122A00A755EFEDAA9B9DACA4EA7DF407287C54A9F5429CA96108BD385E7E82D
-76FE9F47AAAB0F81106C448303B33586D868027C61168DF649E4485DC8BA336B
-88FC1459E4C1C3308335878393344FB7E18F49F39F5315BB3160D9D08F060545
-7A8D0E7F559AA1A80BBF15BD10936A1ED1D33B75BE216F3C78BE94FBF81093B2
-66F88FD413239DE3B41A15D1EE123243269E8ACD6D71F53F35DAB01CD859E8EC
-C5AA9CF157C79EA0EAD157B38154B9333D759F15FC64B99BD73E71167738AC9E
-EAD8612048E5D7710992256D96996B1E87B670DD255090A5DCF6E2365528A828
-DAD415D7A385BA5F7236E9FFBA0B5A70AA59F69F0A1B778A954C46D675F2A335
-68ABA61A80989B5AABD6FDFAD3F4FDB40230BB62C3B091479FD3F182D6F19107
-80C8B4F67206403515277787BCA9846167709C0B023F4BA929933335612AF9AA
-CA159F7C9052074BE03C250FDD8D9EB0107EA1E4514E0105EB2900BAEC57924A
-18E64DDEE06321007B244FB9117E5B50C5C2BF1B5BC9FEBAC5440F14FAE5646C
-1EE3F75AA17FD8590E16AAA0BD8410F1E22D24E286DF4675493A1A500B2F993B
-DB470FC64963CB82E87CBB2FA29173D3C48E25394B583241190FB39942843B8F
-CF98C6104983520715A69598945DBCE556DDA8ED86888DDA306566462534B7A5
-3DE7E29DAF45EAE8D638ADF21F4E28948DBE22F4C40C31819560D834F0B48CD4
-8DDEDE9EC6D2F62FD028A57C7B827CDE0900082C0F63446A0BA4B32E5D31A25A
-705C8715393DF7CF947AB7A0F7813804E0D358F8015915E47690A18ADF862E35
-7F50FF1AD4B8E9A69C03B3EE54144824F108C6E75229283FE50E5FF3A07CB955
-233235075ED6FAEDC7EB60B6E3D9E3097976532A19B397C9E941E855508855A0
-AF7852AED508B4DD63558ABEE90CDDEB595D35DFC7436DAE8ACB54F4AD1F83D0
-0ECA0D72AACA9C2395C9A12A4A5B072911CC814C1976496305FC58A7F8F0C60B
-25355B9E22FA460902495543B10310CDECFE0CCD4A6502641301A64855297579
-6B93EFF375C18D7CFB63A146F68615C2922153F9EAC61872BC43FF4888233CF5
-DF97BF08C08213BF6FB6D8FA9C35AABF953FF74043324480A678E492FEBAAC68
-0B0083F5AE0A0B759C303BD5AFB37950110844353CF8AAEBCB36E81BADA669DD
-E47A5D0B58348014EAC30139A1F8079B77685637DD3B6CB340069BF4F0F6B750
-C9C0BBB0A2A0EE938C55D08F616DB803FCF43DE3149ACCC1E2B1EC0FD05113E9
-97286BD6A159B7356338A788DC7780F8A218066873401354DE22E8BAA2E99C9E
-6D4F609562D61398EFD755BF591B1A6D7D83410BFA01009C9D8AF5820C74E635
-A96F9C547481C43435E4E00FF01BFA1C5A99AA2E21BF98CDFC3FF24F47CECBCE
-14DC224544C7D0E6A3B79B9A9DC6D3560D829C03D6A02E85C72858130A1251BE
-31D2EC4834BFEA394E9278B4051A9E1A4AB9E7FECDBCF2376F265DD8C441D118
-3A1335EEC62EEB01B23612DF8CF866127658B56831053FD3DB9A1CC9E05A41AC
-B66EA3074CCA237973B3D6EE6C93965F91E20C02B61A77176BBB20426D596A00
-FC12C4F6618CEF3816205ACE0ABCA12540FC0439545E78DD1CD775453C69EAEC
-256E761116223BC90F349BF667EEC46F291779F7153BF38C740961CF0056BAFE
-F33A16E6141505BC840A7AAE55AFD8E1FD5D6DF8DB6EED2CD7D3B7189729A88C
-ADE74E27B752803C7EB531CF4B53BA56B168635D3B82C2A4C57EEAF60E3032D5
-99ECB6A69CB4FAFB112CE38C42135EDA8453BEFE3BAC748AED19D47FD9D75865
-F1A493601F3FBB35A53C346E3E88C2BE962315B4ACBEFEA8DA90CA689B73CDB9
-0DF30807B63796BBCFE7E117CF6418C4CA1E6D9CC4A85E179DE428D8A8FF939D
-3BFE8760970E03FDDF3D8406D606BF6107B66CE13108225786AD94569DD2F54D
-B1CBC7F5880C81B2D044C067FD4EF08D6338A440A3D55BE559AF539BA6D69E0A
-85385BE5550EBD8CF39FC8BF3DE8CB78C40AA769F4F54272104303ED59577847
-6A66FA0D116A19F129F8F2B4FD5A62063A87F3CFFA88279D0B1C7137C74025D1
-0849B65735D3BC9BD39DD56F296657B3508F322BD046BBA42BAFDE0069A0CC50
-62A4819C2419493E296C302E8FBAD323AED08B3F941AF00CB1D251A69F54C70B
-808A2815C93CCD8023F83BA65224534732803DFD653B99BC665CCF3AC97CB9BF
-780CE42643D2D78125EE5B154E925B9A5948C449F3835498D5737C79FFEBB5F8
-34015DEBC4B65DCF9B640746548285434191940A9DD5A5E92EA820C8AD44AA6C
-F3EFAF08E67B17
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSL9
-%!PS-AdobeFont-1.0: CMSL9 003.002
-%%Title: CMSL9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL9 known{/CMSL9 findfont dup/UniqueID known{dup
-/UniqueID get 5000797 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL9 def
-/FontBBox {-61 -250 1150 750 }readonly def
-/UniqueID 5000797 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL9.) readonly def
-/FullName (CMSL9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 39 /quoteright put
-dup 45 /hyphen put
-dup 48 /zero put
-dup 49 /one put
-dup 65 /A put
-dup 67 /C put
-dup 70 /F put
-dup 71 /G put
-dup 74 /J put
-dup 78 /N put
-dup 79 /O put
-dup 82 /R put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC706FFBAD8F64C4B
-4198909DF28702E889F2DFA1FB9AA175E65D5B8FD3EC28297FC91D644E95B337
-039276A8EF44BBF9AE8C27910AC03F70F9022CCBACD01DF6D2A5247F8050414D
-20008C564BD55A841F12DDF816DBFC3D5CA2AAC9A64235CACF7F17A81AB28785
-F6C95B135A2B9A4B15795B114AFC7FBDEA4B5A49E61ABF7CF1CE129C2F4882A5
-4DECB2F07A9C7EEB2D3B896F5C5C77290881B0C903969A059671DBE2BBC2B72C
-6ED6DF41413AD37609C430EA2BCB630D41BCA9439CBBAC12FECD18D1A7C7A123
-D7613A87CD73488E2EE66DBD78440949A0919E0EED78EBA35409DFF589EA71E4
-CB9C7669FBD96E7DEA501605AA8868B98243F09DF73C4DD85720F14DB4FF402C
-B689D1131CAA96A50D26ED450D7D1E9D2D05885B63872B0906AB8429EE94B494
-DBD181BF2A622D5193FE630D1427270C6B456D2EF8A9C4045A90B4584BC95F58
-0FA668DE006C18595C16BD20CE73928B39A8CFCB9C58B38EB2E72BD69E2326E8
-951C60E3E55537FBB804363D3D608A3D7FD71A5CA0B37F2E7FD34C2524BD3A92
-8686BBEDBC07D7AE6D4ECC940EDB5ED234445D98A6BF7F92B23AB7B501D79148
-BDB9DE83AC86873C061F07A012168DC92B1C7C52AE2041696895D7200DB28B90
-2A6396CF1CD6B827E309CF79F68DCC92A12F4C0762671E025D60AE1F591C57C0
-580F521B41B8187F057C40C03EF9AB27DC90A3CA0434E7A4ECED9F83A32A37E9
-ECE1016828B54008F73DB0C48B407095D800DDFEBD044EE8AC9535B9092C3EBF
-37135F79983DB2F3AF9509D57A11092EE30FDF9FD10599C4D18C926D2DB941F5
-E19D1B4CAFECE138CF9991DA0B109AA841106C89DC7E2872AF52937AB85DC1B7
-06BCFC4705747CAE32E061EDE0C1EDB35E7ED8A307C241F6E11EC14DCCF04745
-693C30DECFEC4087B692D0495AB3870D0D5F001CC29F0CE5C0FFEF417D3F89EA
-3D4BF5398AB7DDBFF6AA1DA49B856654F9D529C29E67884A48119148CCDCFAD4
-09C7B4CD263DEB25029A0D2EF53EC59675A76DF70757D71BC30E82E94327DC96
-828162ADCC70CCF0FE0CA9DC088B0C1FAF498DEE93C7038403B742D393F882F7
-8F2C37565E266274E4033F4DD024DEA90D24B0E5FA96A0B6FCCCA0DB9F268E10
-646C4507F1BBE75F5D014C264AD9F50CE4892C9189F6A60C26012F5EC8B4839B
-57BEE5B2F0F79AA8873BF61D8017AB3CEDA5006F838B436212C115DCCC1BD581
-EB86C4C67F97934C9B0BB46DF9A2BA09C06429F74490BBC6DE00898CDB1C83A4
-3EFF3810104D7B96E70F0BC9DAEB019BD56DC293CCB28EFE9FCD1E571B5D85C6
-55D79A0F4F26FF98AE764742D28B64DF642A9BEC15EE85929EEC9E662F74C8D3
-ED995C8BC3CEF54656E4E3CBD3E91C3323A4AE755C0A56DE2FDEB64FF2F8F5C5
-6600C9A94E6E8348E7E47181565B47180E8010A29F962A609C15689E75D53934
-44FFA7BB0763642336FDFBF8C45704A6BA10AE06C7CB62CF4FA17D50A99F180D
-A936DABA5F2E625A45BFB670DC5D54045D83CF071531537896D2AF608FC6BC85
-70484384898B04B5E9F40F731468FF4FAC27206984BF54177F19BB899C758A66
-E8CC1B6324C99E5CAD172B3FCC901312307AF69D3D933A5041DA93BC8F65A816
-73073444397A754A4C6D1768B4F9BE952FC835E60D9412DFB62B0891943F00AB
-002038C0E22D22599A13AECE302C3A5EEA58DC8B781B1E558B49948EBC949C06
-71D5C102B91B352CC3CD453A76742F8A9E244279E71838CD79E556AADC6D4A56
-A66FBA05A2C284F74B053F79445F1A9C0ADA5261942C15B0C20D8F9A9899999B
-70620939956A7A011E9A9A53F7FDF15BA0174FA85221383B6EB2AB94AA55DC86
-637A0871674885F5F937AB1ECBF5149F3C469B9A454DE86E0949396DF314E6A8
-9E4044B3F11425647AF7D1EB89E42D8BDA43A1E6A7B991E9B6D5776B2A6BBE1C
-573A4780B1486ADE26A9B12CCBB73DBC87A1F171AB0F013A5409A4945406C1AB
-92C082211B597EC3AB4A56DEB6851336AC9E65F84C79E2466170EF9360A210DC
-5D71686D5B88A0B3B789240D722438315E667DB5425554C9B2BED3C3FB5A6AEA
-07DE5132A1732AA95FB309BB86A87003524F9FE1072307B2EE046921520699C8
-61DB4364F342F5A7D29F4B1D0EB04F86B259BC2ED0FA22F8E5A54A7E876A6327
-E01E22A5B40897CBB71F36F02BA648AA1D06662637C1CA48C469C80A6168EC23
-966863583673A6B291A18A56941AD768683B85FE2BA65EA4D0EDDAA2833443C5
-337C537671D74C30BD343EAFAA0A4F0B8DBB62E35E926782EAEBEE313F92538C
-99E3E620CE7832FCFAFE3B051975E7E76BFB1085A9CD2194FC119E2AC91DD517
-5E17AB570B33A27CE5E2FEF0356A6B0E32D7584AE7B9041A452EC64CACB10799
-E694FEDB87CCB82C288FE809B0F4997FA9A6C1683B29CA03E15C017F3A301543
-5581AC58C6A9A0E34FF5E77A091A7ADB44B597A1EA5768B34F869521006A10D7
-67E462E70A2C20021683FBABC1DAEB1CE1DD7FAE43721306492770BEEFC96FD5
-8F69C60D81082136FD9F9A7FC0910E9D36E483131E95B1587F1725E2E80031C4
-730FD118482964289E153B9B91B91FF190C86B020AAA97CB7DE843C54827D4DB
-365741D530D33F46CA483DD183480CB148E24C0039E44EAE0CD7433BBA81C8D0
-766EDBB15B4DE1A5AE8000881CF01BCC835FC20D1F8250E66BE78265D3B437F1
-FB7CB10A2CEDB6A6814AD48C365F51C1C55ACBFE2BF4BEAD06C6E86FD2FF4DB7
-CB7DCCC01CA2DEEAC1E8AE4D6546CE8B6D704A38E895C32CF7B644A04E1D2AE1
-A5C759FF1CA4A832A93060DC5570245A5D769988A86731B3137A5AB0688B2E7E
-58189EC3A60C138DF4277831397B4EBE4F1B390182F2EAF332200C7F6A9FF312
-02D1A0451EA9DDA7B5BB217441ED2A88B2B63C7D27F2EE65EB4E6FD20348CA54
-75D79E0207093C987CB79C04708CA8500DA58A27F21FD95E2C9E02926710D013
-BC2F118CF2A43B2820C29758EFEB5DB30BAFB0E087D0BC0C42F36AFDF491B640
-4D01F38F9218CF25BEB38AB91D7E943E8EC9A9A9277F02EF057B51AB3989AEE6
-7945CA22634DB32DECC1E18D9901A37A05B3395F9E28E2BD394C86CE470CF465
-D9FAFCB4747C5E168C9EA017D8F1901989F076173D61AAB8D0ECA85ED04E2012
-DFA4B89525947FCB6B4A17FD9805E5EAA888326C3281B34CF76152D047ADA492
-1E1ABC03289F49D682133D46D304A02905E397F0678A469DCDC8CC516263AF58
-913BC2874DC4407E53FFE8CEE90056387A32B169ADEB0F7ABFA9AA5A6229C998
-5644C47AF6930AA016CAA265C7B05691604F04FBDFD43BA3D2F3FD36CA761BA2
-5BC7445B4F6380C06A40EFCB4A6A9D501B1ECA0AAD0CBA97C6D726F6DA2E076F
-6CEBD3EB8096C9AFAAC641A3F87066A882064C2B0C21DA8926CEE57C9AEAF611
-31C99FE3E6D3B691BD55AB8D488CDAAA0E8C2A72B057CFF65C1EEF0EA031A2C9
-D9E38DF696C11600B8D9EE07DF6CFF3CB112342020771F124BED5059D8D97E56
-7E1A057552227D80D3CC51C011D736F8A19622D3E72E232CEACDDDB126E2CA6D
-96A143BC63A0066505D5BCC353E086279229E01CD8F69EEF69E26823E4B7FFEF
-589476CED8547DC0C3F7F1702A169FCAFA3D88EAC3ED08DF8043324B6D6BB481
-4FC534FF50FFEA0D3F8A93D9D40929FAD7202AB500C047B2F013BB351040B8E6
-BC513403629AF692145E59A5E518DE768B5210BED9D72CA2B8A36DEEF730C755
-5332F126F59EA348E5366FCCCB88E7AD4E1E2EC21F240F12867716FCE6907AFE
-5F3F6EC4E155096E6418CB525E1BB0C61E23553A1AEF9268D81A76BE23A2D85D
-8C72FCB6662EAFADE3C325A39BFA1A1EE05A1B8075AB66047A293976A626B5C9
-09F95D42CF9357E3522EEB028AD48174D14938C5E11E5B808FDF747B41C2D5BA
-11FAF9F65E4F82EE60CACFC23CA860BB47FBEF3463B622BA9DB82CAF75640993
-F6339111A1303156DEBA684B5940BB59DDE383BF01CF444028F9FB60AEF34959
-38176F1EB5353F1CE8248098FC760ACC07B2139DDECA158DA9D69FE374E63E14
-418A2FB18595442E81D18CF85321316601DB24DE54DBBCE0E8CEF81F3A4EC5B7
-9D05894A70BDC5117AFA0B642974B4A826FA64D8334CD2D19D16DF9E617384FA
-E42A517F62C0A5B34EAA7AB7772716E31261598E3BB2DC426E52EA2AC31B74C3
-39C33EBA019EC687B7FF694AF4E7DC3018B122C6B01985FBF7317B9C29E340D2
-EBAE10F30F8A0840753F4A73FE5917DF79EFB4A9DDEBDBF5A309472E5FC89571
-E0BF21A3CF13CD2FE84CC0A3313A6A2AFA92E750EA8E11DFE6EFB4BCD50B5FCF
-EBDBCCAD8010D14C36C91F0629DFEFBD7EF7AA277BEA1170302E60C4FDECFACB
-979C35A026B703DBBEAFDB89A50243A657ECCF9A16D0491EF3453F946AE188F1
-CD7AD2FCAC0A2ED2A868974D5D51371395D509B71925AAF535F3246AA9EE6899
-52A7C6CACAFEB437C5B31AA73F58CA48766DF6C4D806641CF424AEA5160998CB
-C73E1D4869A5D7BB4662F4A73743BBFD8EFFB371A8DC5606B1A0C7F70C025FF4
-7E8B362860D6864E7B7F85D215C547543D7B039AA07F8135BD4441D393A86D21
-A73E30D863F36CF991BB022A8D74BEF4C88A19AF37BF8241E6C6827C328E13CE
-410F2105A94702F1B5F575A2710A271BA244D1787DC15FFCCCD7D666E900E8F9
-1F5EDE7531043AA339CCF97481BE36E53409E4EE454F72B42C8DA78E6B241850
-060CE2C0933EFA45E4901952B819BF14C9ED7D15797506FF81065E7D46789EDA
-34005123FF1CEDF111B2E3145E502612930E8E26408F6A8E2409BF62650FEBB1
-A15C98097CE83852D3782249D763092DE94C6C05A6912970B3A809578A69D8D0
-792BD8107C1ECA0954BB1709C73F2879EAE3994927EAC8BFA1BFF11AFB382F3F
-8680EBE0DA5F5143C37C9EE4DF21A8EC23BB3D1ABACC474568FEC8E229641B9B
-CC19408FC1CA59F56B1AA815C3AF151514045BB4E2634B60543CFF6AB61AAA9F
-175C9630D68F336CE178ABA458EF07937EE412AC56EB8EAD8DEACEB5D5FCA45E
-58A297DF1E7E9AB7105DDCA38557A7508416A159A10864809C853F0FEB49D79C
-CA26EAE48112337D5F62A60A3EB9C86444A9DF4FFBE9F3763E683683CB429E14
-896C43487C3B9EFBC14CB09540F13B6140834F87027F5A31F166BD26DCF19BCA
-C3EF4B6BD6A610C9D38C2ADEA1F63D5C9AB59A146FCD9473B2FEF9A0F37BF9C2
-C9A9176CF23425B2ADEF0399F608CC71FAAEBFA07185EE94EF4A7E3F8D43A31B
-855C4ED42ABF17F10C5744F64FFE51D0784DA589EC2942CA9506128F5F951667
-CFDBF28184F69C38FD418D02F5E1F546E74A74549CE962F00423A86AC4BCCA5A
-2383D83000B802CE258BC8BE22881518B4A485D8EE33C632F38041B8CA5D469A
-75104DD5B7E7375023F6F8FDF4E348EFB00B1A55C10B394DCAAB87BE84D3142F
-D172E17115A09F29319329E22E652967C67C621145C510B7617103DFF2970DCB
-CF2EFC9B820F2C78FB902021E93E19E48A09F24C71D8E5181AE8C654D72F513B
-A0452A4B5232F15926FCDFDCD8D8CF64F9BF15A5533033986E3C326A5C5504CA
-560D50EF0EC5CC5409E928EC541EE0A931CC159C55C03ACDA7C177C05D72F0F2
-DAECFDD9476118467C0689C7F55AF0312F3F8680B6332B017194B74FE9034D35
-F2B42CFAB4497533786EBA218D3BA699DEEC1D3600822826BC34DC5002EC67E3
-6C5EA3AE332D4D4E995E1216D755B07417CCE2F0E0A8C50870CFA33A95A050EC
-8A230B446E9C46DCC4FD1185500AD432AC3F41C61133A366AD8F23260136B72F
-0AD4AC80AB5AE776A81D2D57E0C3AD28CD8A38065134E3A416FC75A3CA4BFC7F
-1ED5DD3E0F890042FA257E06F3073E832475FF9D42FD462E1394961ADA8B71B8
-2E0BD527786511AF2A9F3058A619E78C01317DD19DD7D3B3D8D3F6E39CBD39F2
-5F60F1A5C6DB389EA554ED283B8C8AEF1013C917AF69950C5D1FFAD294DFEC71
-001ACB3870E1B541E2D892EF72F7E726E029973283E6218AE2660379B977014E
-FD1B97E4D4341F9831D4F399DBDD11F6E717803BCA06C842EB23D668C89765BC
-4F89F7C2C0919D983174D1DA69D4AA27AF05C43F513B856C15DE6B199F093EBF
-2A46A47422A444FEEF7384ACC9CC0161582E336CCB0762CD88B7A21386C797CA
-E6CF26EDF6133C0E4D6A3972556721AB5DCBE1F2EC8CB180A557601A8B86BDE5
-45A50319A3621DE010389CBD16A32C6F2BFE2F107F0FE17AF448D49DDF247E9E
-C130F3D414B5F046AAC808607530239BCFB5C871899C24FAE159506652DAFA4C
-F2F2B61CB88E9E320D85838E8343213CFED5A5354DF5CF0756908C5676A8C919
-74D26319709A29BB17C7590C405817EFD042D75A95BA4504C99161A4CDBF7AC2
-D1DDE99FDA9C04BA88D54B0741705BAE7EFA68EF7AF6B99F31AD9FC16B60E685
-79EE02CCEE2B5702DADE3EEE8A81C3EBF75D9D909621A2EE707EA0E2855F64C4
-B251718FDA71EDAF082C65647AAE6E7E5835CD5BEB23418066783DF21F9CEAB2
-A0BC38217D5BEE9F31AF8206693ECC93B3879D12A067A92CDFEA59A190ECA4F1
-039D4AB46180D368A71F1DCAF637E51EA61EDF0CD2D4378427258422A8F3B770
-33D6C0FDD0434525E105EB38284F189FAB7AE3C546379E200264E1711EE50B04
-B21CB5CF0DA936E5816392BE2A89A4D15F0F4A39DE5232BE9E00BC2B24B1BC2C
-C355DACA7371CBA346313DD7C5655314AB9A098321B406208CAFD741E8833C49
-8328588853B1F2E38498DD13E948689B0FEEC5DDBEF9576C29DB283E22AE9376
-66D6B4B443AFBFE40E6F01D2699F28A28EFE45B108562244C2DE591147882E0C
-2B776020075A39CDC9CA5D353D7DE2CAD3BFE5E76D7D81BAE3A7954A7E7096ED
-8C92D4A787E0403D8469511A39E8AB2BAC7F9D098FE2D4E79416E0F3EBC990E9
-9B9C27467FE13DCEE8999D4430730A053AF37FB0988B9F02981C0666C336F163
-D4C810E2C19CBB865A1F18E5E1FF007825A7DCC19B445300AD85D72A15D58C14
-ECF0B0475EA6B10BA5073D0CF7511E072DC938B969D4196B1A94CD8E5F09B49D
-94A4BE1C06A910D35A724596E0F862468FEE5373F69F7C9C4418F0B487393E01
-9CCA7B80E94FAA33F5100209C10240F00D9C2DC3035008AFFA5150A269CBECA4
-04CC805A1D6D590CC4FDFF6EAC2E81F770407A354C7B4AF0B07EA45B15F23EE7
-9B4B0F8C84156170A3B688A3E45B4F21E7B35B96BD6C371EF75F5D07408D5C37
-0225DBBB43DE22AE5D0A5FCEB5684FEB86C566FE98E712D2692B82A49F30059F
-0463647E0C8FBEF6EE2C2DF00BC5D44086CB8BF2C8C06235659D485187975B49
-4E4179A596BD5A43F8408D849C05AD1B5FDAF83B330E9871F06C6A970F56CF5D
-180F38F2D30C06AF91EE5FADB3952CDC2C512818687629130EE49177B25855D6
-3D888ED4F0EA504279AF45B4232877F40E32014DA3D8CAED305B081ABC08CC4D
-BB16719F966E48CA126091863F7F4E90C4F9E434163479FFCF4655AE7E1DC423
-99BE9F2A7F30A98DD1A33AD45BCCFA75BA8DC8C50A59E36629073CFAC939FDF7
-50B128AF3A04986CC9B6EA75BEE37DB1484F24C67742DB868C42C2BCCB1367F8
-B3A8D2C6AC693C0A3B7785D00C79714D6FED70645D2D05E49BB9FCA6E7FC9D84
-A0F5D7D4B35D4E24AC4A11F6D76807456F2EBF2705ECCE7B2ED90343D23E006E
-CB282A2D23DB41D95C366B9580053E25009486C377A608E2CBA9F534C4587595
-D6A9B217ACE5A5379A1596F4BABD07E5F4673D4602A68FE1104533B9120E19E5
-F7F214E97BBB957327F58B068E8F6CBB662F8DF4B4DE4315683E204D6762D14D
-EB1343ACC80FB96EF56096D6A16CDD1C1748FE75C4E4ACF3700C42078DE37ED4
-D0055002B4160B2C8A3A097DDAE8237E4A34D9C413290538C5E297121D52A97A
-C9D9D5522CEE519304252015FA0C223FEB058A7AD6C912866881201429FDA9C3
-5AAFF5919CF984D24DD0718934445886122A6CF831BA7011CF8076217C42F27D
-931324C9EA6C9B981AC674C83EC31837E10B4F07D779D9E64F181C3CC7E788F9
-D862840DCA807B0BB55BBF9AB6C80688FEA858B1843D3EA1A1C5658A33FA12A9
-2E6FD53A66621EC5ACBA8F51C69E9A38000B12F11CCB4D628807EDBEEB20873D
-B9FCCF0E33B5B991D004E44AD3FD17A2C625DAFD18E3EED6939D6E919CD5FFD5
-79A91BF57A15991E25DDB779FB66C3A36B5DCAFEA3F8087CD63F970120558793
-B4CE81EFD6EE7FDF45647E62ED29A98C158BFD32DD083059A4322B9D9B6B0BD7
-0C3C1FCBED4F7A041FC90B9B2F9013E57A621EAF362A2FF7BEA3895D17B03234
-0ED88FC639F2D28E68FF31F52EE6AE8E5784415F4AB6C7B1E48666186DF1FA86
-CA694D900AB5577620D50654A7A399324B8CA5E51D446711F8FCFB814DBC88AF
-55ABBC47B7B4E0A2DCF698F5E33C736E188E9FEC51A51ACFBD97B81645EFF8C1
-81C9113B98FC2F0E38513A822D5F16C5E9599C8C218BB1491E688B99A569DFB2
-662AEACB1FDFBAA130E5B70016C472E781DD4618C535F45053FADA62687B9E31
-382DE7102F8092B20FEE3D8D6A8C1130A262323CA4793E5304DF8574EA8CD43F
-F950C4B299520E6AEDB1DB8C33B5475A2A45BADA7BDB7D134CDF1B2DDCC841A9
-9C6C2AFF5733C600F4F950AECC2C9C828F44EB8F3E51742ECFC2757B7EF14F4E
-2BCE892F5351C8BD4198106636B97ACE5180B7600C514A7B17A6EBA19D5231F8
-9E1BB2327AEE31F332112E8D618CF05209D85CC2A1180679DBC4BBCCAB2FC5E8
-76E356B9E80AEB40A87716DA03D453E2F114811D4681ECDDD3F62C473666825D
-055EF379CDEF44332C3472E88CD28BD63A2472202903989F7F137906F4A111BD
-9B72325D1AF8A06B64DB9326AFD8B3CABF3287A5DEC44C71ED77D0B29A710F73
-0A0BEDE137C7B50EB73A6544AE4FE59FC94C35D2DED9268675E716E686659A92
-D38DAEE4D1EF9B5626F0B629E36DF1CAC24E65B24FE81F0CD01EED3B29A10A5C
-E754ED63AD5B3E3AF30DF588FE5B2AC901D1129E9C7D67AD773316C6B4C29D6E
-0A47ADD9F35A2E8AA53047A547AA3B238BC84B795CD58C8BA11B1DF7D2B4BB0C
-A18A552E42DE82D4E598B0BB968066381EC379295DB67ED9DE75C1ABB22A6080
-B479D9DD1DE6EB00BE220455AEAE0B95349FA0D7763C20424FA5E73C892B2CC4
-A07854B06F69A007AEF428B789F1DEC5F05F25F723983167BE892936FC76AE5C
-A9FBD1393410E6578935875E1CFE17E220F41A149E18E33FB0E912D9F761AA34
-5ADE4DFD480CD81B5DB2169A076C6A32D1845FD72C1283F69052854C2C78D192
-271CB9BDD9C3267D4E61CE34786CA242CF3B2DFC2DFC76E7D25CE0DA2A4DFA5F
-08AF4301FEC8D05997592A8A9EDB2385FA4BF565F6EC85AAFFDB6B3B3623AE4C
-1F66C1C3AD86DB59FE9390308CEA0A25F41C64B09E4B3C7946C9883B3A7BBBA4
-9E78DC5C68786CDDF4FF60C3F6C3917673436E4E53BF077361DE9B0E845738BB
-302280077BBF72039708610CA7227AFC8984F9CA37319D15A03AA35848EFAD16
-B447E73DCCBECA12B839EC92F600060D01A7966E7DA2CB3D49FA72F1F9623B9E
-2131BAF423C0B2EE43DA34C7B3D02964A9D83521415AC5F562503E6FB8845FA0
-79A42DA85C9FFAE7C8468E43EB46EE38119FBDEFE99EF14D05E3B90E7C5213D7
-59CEC3B3A779A97081F7F130A3B7988DBD90E052667081CE8F3CAF1372698759
-0F5493A40ED39D3D5C54DF3600BE49D64834EB7FF509E0C94A41D7DB6DBA8764
-95394A1F509824E2205BE115B11BD3FFA675AB42C8EE424AF81C53491FC19E2A
-98EB1F5A06131E42B243E9722FE128863C5C7ACFA0AB1F797B9509C67F1DD16A
-19C74C48FB654B66838BF2830FA4EDEAEDA41AD20C1A94FF406A379E9590059A
-86FA9ACF70DEC7656153E690890DBAA3BCD6309DB8B27C1FE99E0CFFA636BEB6
-2D36F3D399531768A4A324F75E80B531BBF6AD25629EDBEDB3BBBFBA9D0651FE
-2D0DA6C86F0CA659CA83BA454F0396C4164B38B53179B193338E68135091860F
-9CB68F7C82C788BC8DFB28620EBC39712705D833FF3AC6947D2569DF16DF269D
-CE408F8CAC697F591C7A08A4194C9E9DF8A9344A008E347910E22ED37B079315
-88F9BD790D18E99ED1BE4C0984BA0055BC421C076D5E5AD8F993823E993936FE
-2F8CDBB2B5FE221C4B711FBE1008EEB32EBD1EF4B53769FC2DF1AB69AEEC5162
-F87452DEFC3792F48BD828DFB096160C1A04B98B55F198520404D88BA7551B07
-7E3B64DD950576E048913042CA3264CE63AF3342804580DCC85E66C0848FFEDF
-30DA172E65148B31CCD86C2E912C7CD0E53A70A8244304F2AAC3F6FD242C25F6
-69361240F4BF027799379C83458AB998C3201823BB03C67367BC5D0126377D39
-FE8DE239113DB969190893A87283D59780D493D277E6938EFACFFEBFF0AC4330
-F97EDF1BE83710FC711822CD01EADC61F019939362C6D69FF5552438E8A0FB69
-031CA67962EBE2DF465370367AD0C9A8196DB327A3576CECEE08CDEBC39703BE
-3C17CCBA2EBEE15CE4C4BCF6F544DE0AD36937EFBDB0DEA139D5394BD713E081
-E653B271A0FEFECFEE668A9905885A37E5F29E72269BE5270F94C6E63145ED03
-CF661B13EE91C70FA136E6E7D1B9EF5A3D9643802F713B87986881B4821E785B
-7583DD2DBDAE857BB3A2C18162E7F0F26D12A7612F86F36F741C037D64262572
-9C1B056108AD2DBB649BDA78218E3BC2C44C1EC7C7E5D7F5B243A3399BD62CE0
-7AB2761107FFB1029D679E54F7C48A3DF51ED6CBAF4B697CC07C8155129E3800
-E786FE45EA173BB37A2CFC61594C0833D11379CBE688D092CAC47324B81C0F33
-FBE2163E9A5C5EC270B80A144C5B148FCA5284EE77042BDF7299648CA4EF9A13
-0475C51126DD9DCE973F0F28B1D6DA9CA5B3D42E873A5993537F4DC43A902E05
-73AADDB226ABFD0D32F389670802A48E44931E963E0A9F40CB646855150B15C2
-AEF14727692BD8EA614366B2F105C48006437C437E2052F60EC7473F3F9792A6
-08BA6A4F5D29532A0FD55BD4B4A7A49E1C7CC236F82B271FBD0CEE162D0C05D8
-8BAEC6BF5D4879C330927156699C45437C5A1D5C4054F463EF1B1BEE725F23E8
-E549DE5F7ED7280DB4D38E8CF267DD836BF27C9DCD3B585D1ED90287ED60BD87
-86DC6ADA7EEEB0FC9C5AD74F91C9239CF4C1AB5B276E8CE1FCB4E5FA27D675AC
-6A80064642050735A6BD54090ABB4AFDE2CB8192AAD5C9C1646491B42E68C1CE
-6E951DC0BB8ECCD00CCD3B8606A81BFE7D3FB9B67E4647A444F6D90134D1573B
-1786F3A4E87C28B92CE29DB4998ADE62E7A0ED5C4072C5139E3EEBECEDE809EA
-9A99728A7A21B0CD61EC0BA74D7CE3A97785C73B8AF703D8682E8B6ABF7B7692
-5F07BCC0F7EB32CAE9AFC9711FAD864BC88E02E18FE3DCF624D9EF5ABD88E041
-58BB814C51A1AFFC6F96D80832B576412E1C3B97A9468F049E70BC2C5066F232
-C5B749CB92E1C340C9F95F7C2C6290A59F1960EADEB530AD0C7E9834DBCF68EF
-A6183C974C57D4B2A403B70C9BBEBE0B02C877750A8EFFFCB73517966D59801B
-00D94F85308C4B101A67039123E954DC2B47B8C5193BF0D4023AF2670210930C
-3E68DE4C768AB87AEE74A38CC8FB5069F93F774337C710270D2F32D27FB6F9F5
-35A01629C73A48790770E71279F27F6FDE6901913BFEEDD99C7329534B5FCDB3
-43AACF8B4ABE9FFE16E52307CB623D0E21DB8A4B49C73A5A3DBBE8F40B24F1B3
-CD4150AFB5151507CAE41FE76689548C83A7CB9061BA2E738D008F7D8D367E27
-6A89044ACE29C7E387EB222FFDFC78858C5DF3B31047D450A6A9B194DACC8F1A
-513C5890359801820B09BD41DE83F0B0ACC84965356672481FC77B5C6DC08044
-C6F95FF745030156BCFDBB7932D064D76A642A7CFAAB17A6C5A09BD4805C861E
-30E0597D1D566739B0BA0BA8EE39B27C833D2CC58DF51BA9C7F3D0A5FE077B3F
-E0E91E688196C721344800C51C777D44A962F388B1915E311AB299B786E3BA21
-768A9F83A25293142A461378696946AC95003F6564E179EEB3C83110036CE592
-57455E8D92523D3FF43FD86E057DA28BC1C173EF2A83ECDAFF72B2E3A1473FD7
-679757851153CF08C21183A2E7102BC419614527897DF45EB7F45B7888986CA0
-E03E767836719317DD566DA73F4A8BA7A59DE1A72827B1114CC96BFCEFBFD8C0
-FB01C08A2DB352679DA60D5BE3DFFF34AF2E728397A4E44A126D0D1B80D3E304
-6F9668A0D0EECF9220EB1CCAB82E112152CC5686326957B6CD08BE42E4BC906B
-E95C608EF9239F6E82603A69C82EC3418520DAB6AF374EB126E1BA3099A7EBD8
-43902BF7C5F1FAD38337B9E718294353B9AE6970C392D7465E4B109A25FE3ABA
-07437CA8810A3364541AC32523A8E06DD2BE9D02CD87AB67F7C19AEB19AF4BD6
-F05C49BCAA176A160E6C76F8D16045B81851899CCEC0C2D6C91C59F250215FB0
-AE66D9650511136984F73FA3AFFD841EB4E0AA0C33708A983B62E67990DFC257
-5E7CDA0F01015635842648ACF9CDB1B82B054A609AF4A56005E3A164BAB0C5AE
-1516652BE49E710FDC3636A150ABE631D8EB5330E4846331A904843DBB157F62
-340320581B5640B1F29D3A638ADA0B9C003A5C9C7E0C26C095C598686D0F8EFE
-AB7AC7E3FDF906C9DCD24AF83CC85FCD1ED1E9EB3E17C6E96EDA37599F1D0160
-48B2D35647AB66D9F21D5777032E49FD16EEC7E094D994239DFFB9C95E333D5A
-D24F1D6AB75379CEA07A74DACE5F9AF07E3E2EE98DE6070E9942A20C61E6414E
-624BB04FA458BFCC6A23793E9DE08831674184A7C394D8D667EBB64492818449
-06B0F2E2EE482AB1BB2FEAD3EB80CAA2FECA63831790FB67393AF8291AE86F27
-5FA74129D757272D40B05FEF5314A81C8FC0CE1F2AC2588008E6C39392117832
-CC7E1287389D84C0DC92EAAABA5AF158592B5B5243E3446F23A9B07FE8FAC09B
-D59FAD585AA0E1B4E073E09A5551DC443B44639260F8EF80829B28C40D952F4A
-896054CC0EF2823A192A8B3F76DF4225567E09FFAFE5D39EC6044623BD4FF1AB
-ED2B1ED721348E7599FD4DAB375D113DE49882237BDB653DE68B584C3DBB71FC
-2CED18FEA8642AB8C4558A3D8BED2A0CB8055C355252405FD45EB588219C8DD3
-CDDB793FBA5C1E113418C0179189DEF2F312908029A3963ACEF0700516FD0230
-9FC1FF7C31F250F701DB1B7C03E34981E7681C87D580E6CF5398EB9B25A7A61B
-A90950B6F1FC94A9A1C0777C58940CCAAA660595D8C3DF8A2B232D52888C8097
-55A76F549A719452BA590FC9477478C9E7B6B7376B80D6F22B0FC50BF460F2B2
-B921D1F14158C8EC0373570D9B2A6F72E03D723FA439AF94E3A24969F73BCF18
-42BDD2EEB9843703E240324E493A598D55BB15D247B6B2438CCC5FA49DE1E33E
-345D2E7D2BB76D5EB7D26B63FED8837F76CC2A2A41C04B16DDB1451F9DBDB351
-5D37475B0E0D106D205BE530B67F34B3BC115C63D68B1B987FB00BB3381C76A4
-389AFED58D2759DB86A5AC36D923C74E2A1592372A131623435F3BBEE963F27F
-94E5C8C6372E8007139D126986E8D6D630492175E4B37A82FAB6AC9E4C4D876F
-8F47178CC1AEAC42CE8C6B635A8FA637026FFF1FD0362F5C33561B8FA43DBE68
-7CA26FC725513CA92A8A99D9301EE0655C7377FC151D4617888CAEDC96679F73
-9783B8E9A234CC099A59CC51263CE17761354FE3CC412BD0BE44E4C7946D6B40
-D88D0A4789296EDBAB6EC813EB400AAD6CDD6C63147B9644B239B16A4531F680
-BA2B6826065E9F1D03F5E5803C72982A5889A52326B1FB4848AA4189D80DF6E3
-C942C4F80CF19F8577FCD87545D332BC0E0035B83F304BD2526CDC44C0814EF1
-835B2CE17218AF7827D2AF45C83793A1BAD6FB12F15C925EEE057195106FE3D4
-96AEE719B089860D314528630A8B293DCE881C98D99944C4F9AAEDA132578023
-93D94D17312D0B998F271E2098A753DBCFD691B50239E977CD89C7DBE7147E9C
-EEE1374B229D43C3E80B360EBD05E53E6823D0DE24BA3CAA94D16CBCF84CF363
-59326A61CDC12CDEA8B02F9C0E7D988F32CF1FCFF2E83DC52A851C4501C61AD2
-1A2BD9DF41504ACE4774D07A362B8A19212E5C66E0C01E248F2AB9F385831394
-F6AC68B9E85FFA460275EF8666C8C38FAE4D23D7B42E7FA742F72629FB37DF05
-3EDD361265E4C9CE7D1D7176FAEE8E544BDA2A256CA63EEFA1FAC34180BD854D
-5277699DF2A77FA35DC70DBBD599DC50170004333842B2416824AB55944D24FF
-0949A43D793C70FF1D01839A0299B0FFD4DE4FA04B4DD47AF86948448DD0A43C
-E4D6EF7CD63C23CD63C98D5F395DBFBA569EB05DBAEFBCC00CC689E1A0F459A6
-2987715027CB0E28167859FF5E9E6270341CBD14D918152DF46CB83EE01559C2
-2A5B9678E3E682B6D782FBA292CF9E9109BE2DFD2936B23CCA649B0EA0CF3DD2
-F025AF69736931D3D5DFD7BE8FE33252BBADD1FE07E3BC924E4465993628B377
-729C8D8A5A86161EF9CA0526C6B65FFCF1EEF0F7561350CB50005A5E6FD81E62
-4FBD1551D17F12467AE88DDD6EE272BA58699BCE1ADCA696B15732F5F01C95CD
-5FBA4E4E99A88103020CD221E7C589B314AA65C06FFC1305B0CF3AAC5B6648A0
-61955F475F9B2E18BF0E3A079F3EC06CE805FA1B998314E018D4197AFEA889A8
-6B908573D2CEDF0765C64CC2A3ABD4887039AD1CB5EA6666EAA7DF15739EF9B9
-8FA918DB76872B37EDB97F640633F60977662DE38E670F4FA414D370D0E3D223
-B5CB14D65FFB39376BD135FD22BE08CC92661E5DB9ADC96E430AB3DBF8141709
-EF3AA2C1D807924644236D4A4BA795E416C014DDE634E983A3670EF0032D6BBC
-B27F2C9B51275AF6E652EA993944B273E057B5A01FA9CABAECAFC0D4C4E48CB7
-5667E5B1C59C31F83ADF0C249B6DF0DF9ED02CE8B09BEA18BBA922286C986B82
-DBF76DFF018F119FF688294C0A978F01395CCBC91538BCF83D9D318A8A4295C6
-3FAC9443845A01EEB006A52CD48495E346ED39721DB7C7966DD7D1D00675CFE6
-AAF59E5847C44A321860AA31C9246802674C8A89012C15ADD6E84D8D96AC8474
-264436DE2B3B93D48A6B6018345AE67ACBBA5E1AAE7A3CF5997A1BD020912CA6
-A69BEAE5F93B1231AD02B772BC92E9253579CDFF079D434C239C90127FA95391
-C1321CF73D19A2330682BA7A37038D44965D6102051A50C72959C5653556A909
-9184B6F41E8860B2C47CD5063DD4939F680F3110FFD59E5269E834179F53544D
-1812A42CD4EBA297419CC1E11FDF55719B5781D94D93E567C08B2C27CED990F3
-5389DD87E6D669DC184B61E440D2CB14A444EB3E78DF38450550759F7AA850EC
-743479645E785A3B1D9C3B8A89D927EB7726179CDF8DBF9DDBA0F454F58D7257
-6037796AE12DBAFDB69EE26CF14F2CC5E2464F5E931BB049B160E9391573F496
-8D6F3425DE9D4ED422318F44497A37E3086A1B12EDFCF1A1F788D24951CA6BFC
-3415DE770340E6259E8C7ACC3E7FB18AB80CC5D9167D2C6660982AD376C02FF3
-D33CA0083DAE375B7376A5FB3AE567308B65D863F31B8332EBBC1FA9612DD39C
-767B2DA4175C8E0BEC111C75748EFD820D9753668BE36E150BA8915BB5B9969E
-FFFD407F52B0701A33197450BD34DE8A7FA5FCFE424E1010CA5C2CC713ADB2BB
-C37C30F8E41826EF1C0886A1122C9964224FDAD27E64BCC1EA8561E0555796D8
-CF7A3836B5C43E3CBA6F1241661DB59B11A8267492B5C3CAC201AC5E62C28AB8
-061E10BF1601EF89B5F42C616F0362664564512F9F3693FE0EE00A3B6C2D44D2
-F42F73D984A3F939B603EE5D0916AB4F4245DE45D86CF3CF9974CCBAC7F6B857
-0ED7C7D317C7D4435170A76652770517DEA1B51DB65516B07984C26D8E550306
-BEB76E024E0A2F3B32B0FDA75E95158C279EFF918C5F918BEE04909C0FD66C68
-2FD6245B669CE8701C0C15EE010CEF1699EE1B5155B05081488CBCEEFFD80779
-D76079BDBFC00189AB9E360BCCA6788AEF252648864563E1520A60110F8C386F
-07EE0DE80D62B4135DD3FD472AC76B19F670C85E5BDB33C23B1717ADE16562A2
-A0B11C605BD174548DD3C3D8E7479569E82386990B0792B4A9EBBEAD34F81990
-6E770F389EEE938CBD97B767CADA6250E84987FCE770D1863F686664D11DA482
-B440FCEC6568786674C1636A5821BEEB951CDB956A4A800FDD3858D556F391AD
-CDFACD49693D081E4A0BED7795D7621EC86C58581D33E7CE7E8BDD97406DDB9E
-017CB672E9E5B8D83A626042AD69CF2DB26A7AD716231AAFA456E0C4DF0747A5
-2B35AF38B8C68D877079B49736496C827C8E8E453DE4F32129CB49CE6163E04F
-2E4AA9D4E2D96BE19C365A337669D0500C303757BF576FA5CB84CC4856D254D0
-CBEA8E38AF5C73526D5D2DAB2ECCCE1094435337E8D5D582C537E27A1652984E
-AA7FEB11952141947130A699F3756B89EBA5F8754FD4648B326980DE360CC638
-A60B84C6F413CCAD35EAF77D96603C802FDB3D6EA8A0BFEEFAFD5CDB9CC4082F
-9466932DCCD1D90185F5983337C6EE80A23A5F0EA509A4238232C86C88B9C8AD
-C0F780195B6976906D36778FF9259D3BB95B0E2F741169BA6A76856DF19FD929
-0846F9C9BAB8CCC100EEAB500BFE6B08528AC1905F14F6DCFA547357495B1989
-198787671D717091E7AC002434D4A7227E126206FE23F1A611C43FBA52D5274B
-3BCAE91CE56870403EC0D539325EB0ADF1E0FA1A18E90331A61A1392C336FDB1
-07D0F9550E97B345A408FD9C0383BDACFE4167056C1EAA1A95CA30737485F1C6
-66C08AC4EADE23B85BE78B819EA171CC6C94101B1D1FD12AF59EAFF52C03AC9F
-236734540562828721C24CF1A9D67AAC89B3508F3822959167562EA72115180B
-852B70E7E66D449C1415CA6679368EA7BE20DA0B433DB45B2B1F1028649981A5
-31DBA233FEC6894B1B8B8970F7B897D399B116E7FDA92895C77A3C7EB0C3BFD0
-A63CE9523FCC2A4123F531D19AEB07E50F39D848B6324EE47815846AB483283A
-3B9523219329DC589575AD3BB022A953C7662C02360255A1475794964FCC68DB
-1D35F0BB393368B7410BD32857131162436240866720A431EBB234860544DC52
-2636D5B7FB6E349C1AA464E720BFB3B2C1FC38E5E91937150529B5381353D3A2
-E0EB4B48DD3F7E01E3F7064ADD74790CB59639CD83065BFE5F13834D2724C885
-090E59F9E00998CBB595691C1C3405EF3949B737B85890421AD4F5F769B71397
-DB044D6DA7E5420BB9378238B4D30591714EC0AAEEF554982C2C9C3FC2897183
-5567170BAA6CF7DD30A0553491B5145CEA4D50D0B58C11873A193FAD1F588D57
-846DAE32F2A584408F355AAFA84BE6CADB69998FAD5CBF6DFC5035DF1107A8E0
-949F28C105693E6A933D74041D9471FFAD359650E79B318DD0318DB795F4B3C9
-2C6AD71ADDBBF53960711D601E89990987D99215D9D8C7C7C87335DFBB7C186D
-6E894A3210E8E730DF095602FB833C3CD2E887B0999999D1E3268AFF2CC95F03
-6C85717C4056A3E8D8164B94764547D5C2821BD34EDC29BEBFF333754ED97AFF
-E315CC74EAD4A948F8C10EDBEE68F3C1623D71BFB66E7E50652BC9AC2D7C7E25
-CC7A41327408D3963B99D5359F43D35084601905DD2CA79F0C60E7B4D264F546
-EAF61200631554BEBFDAA1D7ADC5BA37DAB9747538A2CE18332EEC921A2B2A52
-C262A4964F0361A4391A8150F544A73EE15FDB8B4F5E1AD9C15F86B6C7E0F8AC
-A92CF70E1656EB321BE72900F6BD5C91D723E761B2562E6118EE45B00D3837DD
-AFC5FB5D051E891A66E6329F48A59A4F3FDE11047B9FFF0AB7D3DA3460E730EA
-FB9DF338AC71B4624824F5E4E1A89954B7DCAC06526FA8AA333269F42F47393F
-56FE4D000BB43B04CC88137A60F59CAA32DCFFF9786176E80AD0A831A2351380
-0935767032461400054DACF7D5DEBB3DC44B8D466C517E30B635912B25631DAD
-259394A6B000F46E10B7DE2D9A9C8413FA8280885D4A03ABECDFB326F343922D
-38926BEFFE9043EF062259C41F97B8506916703F306832442592809D9C0AD265
-F4062AA65CBFE2D5D6A976C3C3DD401823D7A25BB9208F6F34A85E0AAAA7A484
-DD40E133BEB3CDB415F4496F3ECC604E9251829FEEF15DA103C627A5031B7005
-AC608563DDE473035D855219808683334B236F10AAE4C8F5B5020942E435F30F
-CC51C0CC2B39EF09D52F6AFB5964DA4BCD720CB6D6F31E1E184964A1513DDBA9
-36976D7A132A985052C30FDEF95CBD816E620A4823D460C5123F4A6ECE6F493A
-B271B89E91E61FEE8E7211B04A86BEAA39440883F6ABC164F31C0B6F84A0B7AB
-A3B5FA25FFE124AEC195F2A4DC67D0FCB5DD80A0512D6187EC998AB994638138
-421EADADC192F5D0990FEAD4038FB8C82CC9A471A550A419376891D7F1D68467
-20A09C68BEDF7631A9805D59F92D3AF33AB20E3D6AD5AA42BE5F5CDE0AC64671
-3AD9A193E38BCFBAA88C7050BE770E1BB78A74AF48D462410F5035937F0E1A95
-8201186A22D813EEE8D96456DF01D3466CCDC0C21028114AE9E4CE944A27B893
-2FF6214827A78F97B777512043079AD4A9328486859FC37C5FC2502E459BE25D
-86C3003D4BF5C5567793FDD4F965FC8C3B29A5E80F5F4F5075F2FDB5C2784897
-634BBF859238ACF703E685853EB225ED949CC42DA589A11819DFCC9B423F751D
-384F4DCA7EE02C162635A25599F2C1C6585E7416F29BD83891902AE98684D859
-8D03BFCFB9EC79BCF1A21A2741FDAC3635E5A3380123B9944235C502B2C6ADE1
-D3FD20B53BBE44D6729AADE8E06C9365C4A31A899598D2C799C4A6310496685B
-0C40ABBB706FBEC71812D01C532FC1751984B313D182633AAB96963E5FC05F1C
-54ADAE3C69A1F078ACECA7E6BB5E41CBB8F2C0D7D8CBD0C25F59FC7684ECFAC3
-6ED2717666827435099B7CB805B90D04080E36319161873B6F7A09E37B461666
-1592E3208DC41DD108043A5918F93CCCE87AB11DFA778F46F0020AABD44BC35E
-D259C1E810A32BCCB51C24371716AED37585613876C1A00DFFC67301EA490590
-CA9B479EEAA9234C1015CF44578E690B00DAAC7F029B27E972079DBBF7DD9C59
-53ABFA38F7F089589A136737E092D69F59A83089B57B1AF0A0985BCB06C776B7
-0A7EBF4555016A97595D41B156AEBD15C08B9CDD0137D78DF98150515988BBF8
-9757EA913613689324A2D0AC364969D74A77095422909DC49FB412A95288600C
-356D91136F075CBA8E9F6DCA29D24327B022793FA005D27CFB235D9CAF75AA18
-97F3D64111FFD576202052A9C7C4A2183320A1EFB39EA17F9374DF14D9480745
-3EA31492C755A2E86E34D355C1DD2335F4B5AB63E73AD5D085D2151D9FD0FFD1
-30CADE575215350031AB9FD96DFC15A43C2AB2AC273D89ED97D3B6136F536753
-9C53FF3B40B88CB8EFE28B81DB3DA098A91793D4B4C353E56B751D2F92D4196E
-2BC056E2BB485FD0152E9C9B247CC0B6121918590DA29F9520164C4F951CF8DD
-4E37CF5978EF18526EA0E69EFF766B736D0005C15A109C8254A356BECAC0DB17
-F472CB4F3E1D8B85B6416222D15F47DA4BA00C7B2E0A0176B1D91D418BF4C3D9
-E199F4F25E13460B392E663CBC811B6170ED745399EFC73C6E69342846935B7E
-603A2946E17D216223EC021CD4004946C38E7404C4221F328E138FC59A5BE188
-F845B0D534C27F9A8600B6184EF7228819189DABB20DB1B85BB7E8C3FC9832B3
-BC34D327BE4750FFDFC6D84DFD4DA88B66D67B6A081200D22BC44BCF51333323
-C92251FC155B4D985872CFC929723C7235923023E2F32F73B02D52B9951C1A3D
-B4A47B86BAE339D65F28E45C8EB21BF9E321A44922A76E205C749D724806029C
-06398AB7CB603C1D99437F2D16248EB0AA7A9D42CF47F91FBD88C779C7D7100C
-26804F00C532C3B1DE0F123F824EB0E404A2D9847B08EADC10AC5E68047E9EA9
-CFFED87C5FD05B30722E27CC4A2D9447428E41E4BEE490AAACA5DF085B1253DE
-CDBAFEF0EA9FDC9326C35D8790F5B162E469F30E165771BE0468A811476FC8A2
-951F771CC656B3F81B5B3B1B128E739B44DC67B6FEAD2815CE1E9AC87DDA4D13
-44B1125B4AD1E4C93B68FD933F8993E83E1B613F9026F36554CACF611117F63B
-908B18343B44A316A14B33F260DBD69E15C70F1473F4ABE08A4333D9D922F792
-A0060D997E338A13EC2F4F18D0CC94084C923A4B6DE2C2A51DD3F0C9AB6E82C8
-5FDBB039F160DB85FBFD9786248CBCAA2E1CCD85918912664C337ACAC03E183E
-97EFE16166EF97D91F52930395CB6933768077E37386CF0897603999FEA33E98
-A26A70DE5E19D24F35B0BA50E37997B6F4574EE0A7B4505EA5FD475B47C7E54C
-E5EA3339F62680BE36BBE3E8477D5B51D5458133DCE8F2070D349BA9098D6E95
-4DF310C2D0E6459FEFF13AD2AC665F8AD509E839345359405495725CF06ABC3C
-4487AB628D491BE8E23ECD8570F772A429C50F496E996406CC6A0BE906F484A4
-E7FD43A2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTI10
-%!PS-AdobeFont-1.0: CMTI10 003.002
-%%Title: CMTI10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTI10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup
-/UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTI10 def
-/FontBBox {-35 -250 1124 750 }readonly def
-/UniqueID 5000828 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTI10.) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 13 /fl put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 45 /hyphen put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 58 /colon put
-dup 61 /equal put
-dup 63 /question put
-dup 67 /C put
-dup 68 /D put
-dup 70 /F put
-dup 71 /G put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 85 /U put
-dup 88 /X put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E
-2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A
-EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD
-8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF
-CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2
-7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC
-32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09
-482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF
-118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381
-1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC
-C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA
-8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4
-61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20
-C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504
-3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70
-9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A
-D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0
-125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8
-34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A
-30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9
-39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49
-9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184
-2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF
-0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348
-3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D
-9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757
-802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28
-FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0
-98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9
-5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF
-AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD
-A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93
-5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815
-DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37
-4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC
-8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B
-A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362
-E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F
-42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96
-3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59
-A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F
-7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4
-49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428
-D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C
-0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955
-CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485
-1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB
-8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388
-6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468
-83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29
-60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284
-42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2
-1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A
-21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA
-206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9
-D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7
-7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B
-55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4
-6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762
-4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392
-871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E
-9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645
-DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5
-41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8
-2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F
-220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001
-A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D
-981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F
-337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8
-139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B
-1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC
-100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A
-1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905
-F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB
-72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7
-A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D
-310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928
-7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989
-1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2
-8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33
-80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610
-3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C
-C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996
-4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB
-865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B
-301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48
-3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9
-1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B
-E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29
-0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0
-30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E
-2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0
-C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89
-14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A
-44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC
-CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654
-DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34
-9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87
-4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3
-2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676
-21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26
-47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4
-F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9
-D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F
-03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5
-886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8
-352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD
-9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0
-9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3
-92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F
-821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93
-3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0
-47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0
-F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B
-9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1
-AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71
-C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978
-B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED
-D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD
-F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E
-81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038
-970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C
-6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7
-97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668
-A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE
-AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594
-971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96
-514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7
-8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C
-392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170
-3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F
-464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE
-C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E
-F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053
-911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6
-261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED
-D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA
-147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D
-C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516
-C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB
-61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD
-FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3
-F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C
-2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C
-7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193
-11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C
-9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66
-C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3
-1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692
-5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5
-6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0
-EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E
-F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23
-AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D
-8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94
-376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6
-B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B
-02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56
-4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF
-9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD
-751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198
-3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A
-40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962
-2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360
-D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A
-0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E
-8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946
-AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510
-6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B
-CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E
-DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D
-098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337
-900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B
-41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149
-7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA
-2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC
-A91885E7410F56F1126D6062165B9EE0BAFF28C2B54AB563630AFE4B69FF032E
-7EAFC808A831EB41785EE4E3C12C9811617774408CD94DB0AA8DD8DA1FAEBC92
-63DBB3C52FCF345AC37310804965CBA5ACCD58E4C1858E9DCDC60B7EC5DE8628
-B9430467A2B7E011B3DED61C7F5A8833EE3F12414FF0B259F9C797559384A645
-BA89F48D26B63043DA049712FB5D33B93FF615BC11AEAA97473B095D79BA450D
-D76B761A5E47340C37814FE1FB817C7C68A5AFCE8768B2B9A0705095755901A3
-27881880298D9DB49E00986D3B9EC53E7FDFA26F060FC883892586428602BD14
-FB4F5EFB7864B895346429B104706745B73D7C2986C30A676D15736C339C5BFB
-BF322588116D67DA72141F4E8C032ACEF5767F2497968B797B3E7CADDC2C3309
-492AC1BA983FCBF326E1BAC7CF91F5AB41CD15536F59F38011AA379A62EDFB13
-78A82FA82511BF1887387A29333AF8E54B79142482B2FE7853B7960061A6C420
-A695F426745E30D20FD1358CBB612A2A7FCD7AB34DAFFDA77102CC5AFF99CE80
-55D070F0E5DC2EA171E90DE5650A0B10503D420B6517A73A255A39E525FAACC9
-3E21B2443290EB5025AF7BEB6D1FF6DD3E69B5F06D010E6BF1D358F7481AA6A3
-3920FAD9A7F7A6CC1703EE06340147CCCFAD7582D711094C0C8B3F1C892370DE
-073A17C26A7EAD3D8B0B7E99C3C08C33498D55FB08ED70950207ABA04B73CB2E
-4EBCF70184C5E1D9C9E3DF6D0AB7F579BE2394C221EFEAE6B514EF09B6121E40
-859662F332F1A91FBF65566BC5BBC90E3E7D05911EDA99912980707299900A6F
-51D2D4D723D4B97C537D80C2DCFE2168ACDF7CEF71ACE205F1EAF90229068FC2
-081EF9CF7B3004F59C5A5D669240E5B7248C8D8DEEB3E0D0918F99342104B4E8
-B6FE947CC273451A1629E9D49D1E5A7BFB95EB473BE91AAB3F8E63D69B1BF02F
-FB141C9777BAD9C226660CCCF1CA0A25AB10E08548D5BE7FF46931493B6F8219
-3E8BADC80B49E283775875126F296BF1CE9CDEADC1EA404EFAAF8B6A567CA94D
-1E6F1190E796E083BCCF96648A03B924C2885F09F1BDE40E5DFBC1A171A7280E
-8FF4AC0D4C8A2199EEF25A377FF6243E9B38814F9CFE771F4A5F8ADA3243CB6F
-6B0677DEDD7EA8BA95C4F28FA7E4FB82012F5A5D7970E22E8A6173586CA83035
-4A8D87F5B5C3DC10D405C0F67FE3950462318057F8187DD5286F6352B3E25B0B
-2886ABBAB846D2EF397F9A5E745EE1577A6E0BB290BD5952B44907874A1B286B
-8D54C921CE493CAA229F8C5F0A5A958B00868FFC21945C93182C034354025F51
-E380B32D290EBBC3B35D92E4820A587BBD81C14A74BDA47832C5F5B695B6B6B1
-43EB6BD348915FAF4F3F2C3E0837FA664F4F4626A30647A4660263851EF848ED
-B981DC4C3972DACF5998B8E3C6CA577E3D9C976321D5AF0DEA0746600FBFCD96
-E60F8ED0220EF38C2F2FE368F51654EF8F3C6F4C6E591B4CF63B3B865D3F39A4
-EFAF3D982283A04848A2AB9F03BA7E25859BBDA3304F931BF11C781A2FE6BDFD
-B6F9FA055203CE73F6FBBD936466B1E7981411AFD7DA2C9A2C1A99B521256BF8
-FD6F7DDF0699A4D666129B9CF8889B73C8A86FEC4E3670693EAD97CFB83AFCAD
-54F44AC00C32E36E1E0F626415A034DDA09D9601412F73845D5F52675AFD1489
-3EC9A430D15ED70DAB5CB0BE23636A4C7426584812DDF02676E499511AB71ECB
-5F7D2D27AD1E99BFDAE23BA335A29ECC8D98E9E49D106753EA622BB3FCC09177
-F796EB9674A2D2D945369A735D469749B9F14E5287208D583BFE57D69E4DB940
-9C78A2B92A5D200A66105898A13FAE4662AD178BFA85201702300427419B6E92
-F3B5ED583F0652BEB6E5E9FCEDC142965806E2725B3387F7383D154BB5E1AFE6
-02AB4A52A686DF87BCB53504786CAF9B7165F73C3A0B86FF4114A8C8D95B83BD
-FCD42F1EED670768E05DD5DB5B945E6ADB0C8D23AF0A92F5072B8E68B8D125FD
-2AE3AC31B22907B36A71B736AFA1AB550740F7291E2EB98A957D3DAE33E425EB
-F9D5BAA0923E22CCC94861F1435B83062809E10D36AF5A15D4C162357C5BF9CE
-6BE96E61B0482F8FF93BF72B016A76562D641EAE89788F1C55B03F95BD2AE8F2
-C19F2DE157B8A61632AA0E5D3E2DE106EEBD7E137C7B040EA0DDF9BBA7571943
-7614A4E3996AE8A37E778AB1FBC4B5AA8C17E6D5FE6F89DD71592916FE3A6157
-1F82D049F70866F2DE42C122E4D267B7236E33C7FCB12F8313B7B784CA19FBFB
-8FDF9DB2C360BBB214C972589B48C84DE86FCDDD34222395B1DEB18B15B3F93C
-FB710FB263F431B2BFF27AC1951AF6A007293A57BFD541011B4E39185EE9B38D
-EF0A12415880444F1EA8F279448DE481F6677FAD213A39A23AE281623AB7DD59
-073AAFD0D374764F8FC4C09A252043E2F659786ABBA8420433C6D1C6485931C3
-40138D6276FE890797924DD8EEF88FE9D038131E4C9331AD618C95AF635F1AE3
-C2050578E338E1408314819C855B8CA8D209B851688160D6D810E486C8579FA1
-49EBBF7A06A1BCA130F2C77D8CAB71F09DC96E1BE5EA241B6B1EEB9C2055B25C
-07ADF9E319D8078F5DCBE5083EBB66EB834C674BE6F72EA24C6751C13186F743
-E3F59DA2BDB1F144F68D34A692E876A8D15A86CA00802CDB4F928ED8DA31BAEE
-BE73E63728C50596A436CCB3DB428B4BF7F581630286B374786135273488B49F
-7CE7A34557870593A250E0BE7A8732763825E349E47099F400C4B539C9D0D3DB
-D7D1B8F3284EF90C6E2B2D8DDDE265FCAC7D9088AE2252799FD9849BEAF77F92
-CF88323A9411E2276886A31358F66993A3FEB5CF1FE6025107E30C76342F4949
-FB31BB5C5DDCEDCEF9DB4C2D3AB5139E365038C901C60A0C094CA2272B9613D6
-8AAC50CD7EA7D59C1CA325AF7CBFE8D1885AE6D33AF1E34DEEE3DA153763D6CF
-89A9923A404F72FC1DDE8ACC21A63ADBDFE90E6F48B3472CB5D69C11AAFB9D07
-768BC13F759AE5181319FB4B1D20D010FB2F4913BBC5AE357D403397711777B3
-CDBE574CBE6A53047C52FCD8E3B9A834B8B29A2072501CE404F823564DB8246C
-E4EE708EE8926B79F138CFCFB297762FB5C45277C5223A93D46A37F6565966D9
-5A6E4A02CDFD06670B94DF22AB574BC30F0BDCCEF4825C607DCBC8D9B818BE2F
-2379DB6E4E54D440E6C9CEDC089B8034E682123C94E9BCA25F5639061DFB089A
-95BDECA4631CEFD78EF8E3E92B21E932EF90D7851C43B17E532F4BF15A8BECDC
-F0383F201A069815955062585780A1F9B5A067B32F6D14851D671B59FAC40BAD
-ACA80D8668AE9E2AD409CBECFD7044BCE3CA6B4C9F01745475B1E3D4AD6F67E1
-0D48BB9A19D1C4E04BB62073DEA3FC62408EFD9903FD541FCC6B529B38092638
-5FE95038E9B81EAC7DD814282E69DDD3468C222FF81A501D650259B7B5562FFB
-8FB1656DA9FCF4FE1798948DA3CA098D82F7104745B6535CC53C3A699440BCCA
-4ADA55C470B07255AB14F232256FCB3EA78A9E5DDE0FDA1387C7EAC83D868494
-AA2342ADE57BCA5C9C475F197A5616637DB48D2F7B9B62EE1105F386C8509E40
-C2575FAB084F370F3155AC40C272BBFB5E119CC262D781BD30563BC6962AB084
-93FB44B7F7B5CEE16852D0DB96492067746033CB4F8DA47D3C61790697903F87
-8AF18EAE33043598A9B3F981D286BB5E221893C7F669925E104F9AA0445C2891
-D16D99882004287ABD63E5A8AFA24248C9F525C1092C288E8F7D27F372FC878D
-0ECA603AC89127F861B37341768550FD348BFC9086C4F9AFADB1F759BB6C04A4
-CFD5D514A807D5C03EF327A642AEAB5EA950A72D479C48D6AC34AD1F2BA58D3D
-6EE8DAB1672BB87950EACC06FB74EAACE21295822173AAF52FEF69D8A41704EB
-98FAD05572477717DCB8D4D0385163C87CA9D01EB66518FD673E64D9E0FCFACE
-C1D79EDE4EFFBBADB6F17D8FF4D06B0680DEB1FFAC8C8E0F98D9F1D761ACB5EA
-220007530B4B747BA4489D1D02A7B88DEEE1C44EF420380FAE9B9802413BE104
-CFCFEDCD58CDD34E3E1EBDD34F23F000F0DEF9838BE60EADE3765A074FE07182
-DBEA601EDC8D5D79A1445CA1319F3CE61AA2CB5540EE6ECDF8DF1005CCB97F5D
-2AD263CC03C3F6A302524C270E224802F99A4F8E3DA40245C1BF21E3A991F39D
-987EFCC4A22BF194362C862C716D2E0937182B3F08C64957DCE942308E1000D8
-EDA28838F3690878200777BAE3645548D41B3853F13604E8A28BCC9168921180
-E2F81DF5254F1CFABAD74E6C120553C6872C58822429982D5DB98FBDA1FB3A5A
-212B844004FA9310848BAD8F4BC948E09159B2EABFE7BDAA24552AA8E8841512
-946AA5C11EB940EA28CAF7C017CB65DF5069BE7BD27C55FD50222D5C87469FC7
-38BC1CCEBDDAEDAE20E412CC7D9ED15FEC7DC8C2F9AF47052FDBDD04103F83A7
-CEA010D116E6E59E03F0FC52B44647481E3628D78BDA640CD12C931DED106287
-7FB557A128D43EC71195D9006D4EC5E139018AE58BC80D0CF3EB1B3DCFD2918B
-6B021CBD0094ABB841B49084698DF89956F75531F041614E9F50C4B0DE4C1B1D
-B43F41A9C176231EE1CE2CEF120209D34CF6096CD2867CFF56D6816C12BEE3D2
-19AD5F3392E2C1846E380EFF83FAEB066423ADD393CDE77E09550EE6E6D9370F
-108D22A8A118CDE2567459EDC05438DB4AA6EEEEE7B4FA88BA9AC17A0EF16C7B
-83A3DCAF99931B3EB0B242A44EE60F3299D53B590ECA4D7AC7EE861955DD7F52
-19C2615C83544236C947EBF0158B374FEF796CFA3E4A4172FFC564F04C174EDD
-91012658573322E35B55D0A66E7B76058B1B316CA2AD0BD99DF2C49AF277C514
-792CA7C2DEEF0E556928B57ED8DD8C47480083B91803135A84CE498D6038AD87
-83467C7750D22A8FF7418B17B4258A23E7D908611030AB3617F9A328606E1A01
-4E56DBD87AA5CEDE445479FD4A86CE38E50288CC4C4599E117FCBE9967EAFB62
-DADC31445C841270C70CA07AD305A7DCBD5FD4AF2E677E4FE0165C4A62EDC906
-CC76D416076E2068504D09B6EC72367B99AFB444DB85D1F6D7CB45958B64D2E6
-59E974A4527820E209D5DE76F0BF62B99A51D20DD3D043265379407DA6BFAFDA
-45EAD76E6F7A74D985BEC536289949437F3CD407BF139EAC602EDD1E0031C354
-8FD969C32899538105060E90F18C4F83FD92B7999505483E1D98581081249E3D
-98475C3BC86CFDDDA953431D1086FF45DB65D2CFA8900D31C8DEC855C8F6584D
-3E1C28EF6CCA9D6CB0621AEAF4584675832BE8CB0394C20DA7BC1DEC02773E92
-54DB632D9DFAAE9011EBE67EE30D6B38AC7B4D28D6D9ED832CFF38AE62A7C4ED
-5E5792C48F6F9FEB75F9E409CE0CF0E9D2A586D190B1F4DFF5A9E45098C537A2
-B5831EE2DBE53BB5A384FD504E85F8CD7F9702AD99A23511726980D4D5A5F1B7
-3641AB5F38A1D4875D555080D104CEC03F9A2564B4AE4BEBDEA6616B7E2C5018
-F985BBD58532ECA8C9ECE9B0D0B6104D51955A9FBA8DF9CA02490A9F2E3FFED2
-59CC238E32483138C3927AA85439D13976DC8C652D94A9DF7A6594289F147E65
-59C234FC0EEDA4A9D6444C00039AC9BCEAC797DA17D186F2FBADA28194657CF3
-C9A7C3FEC16CCE122A5698B917D0682DB17FD5C5EC8AF2BCE6B5138642C14F98
-45BBA1D551F7A6D1F725083EFA7B3DC8A5E9EE588DA4DA6C900B5C0F580D1ACB
-6F25A12955BB557282CAF40EE635A4C8F7A3B67A2FE0123A2F9AEECA849EFA1D
-3A3991A3D016B05151C8F4E05C766E86D417465F3D08B4627B22D37B6E4C11DE
-835EE98D5F464F349B7E57D0A4EB64E93863D23DE0F74FB2AFF878B70AF28B55
-3D5C95569D91AE05F946B3EF0A7EF3FDE2245B4691A10A8FCAC19C6606BA9CA0
-4350608C66A4FD72D37EBFEDBE9E42513C6C1DBB47AD91ECBBE9FBF440AD34DA
-55CF322B998CBDAD217690AA7405F0EFBC6D80342CD2F5C327511C9A087EFBEA
-712FAFE114BD4040C753CB2E0AFBE5C54D5261D76F4434001BB94AB363704B8B
-8981B56EE10AD1EB026ECAE8A6975C4298FCD502DC1145F10E31A50EEFBCD8BC
-49E9656F0CA5BBF0E67CE8108128FB03DA767F4BCD4CCD9763824E0FF1718B9D
-A8FBB4DB39750CEC0F485F89A3205C55978C28CC9F99C942BC9A9DEF65712746
-D5F27F2DD078EB9FA4B26A66B8E5F7D5F2521FE4F55C2AB8B755D6D90F281B31
-C91D99BE9AA59CDE0A39A604351329F87B2BD9A738FC4EF5D2A0334C2AE812BB
-4368392C1EA482C5E24F9D2E9D8E707354B179C673074C31C1AEF221FB67D42C
-71D252E8A38818B9E6090FC9C4978C6EEEA15FB93A85EE79D3065A7C4945540C
-13FCF16DF2D83CA0F691DF31F3BFDF9FC30E14775DAD939C3EBA78EFA5DFB447
-CD40A8553926DD26B4E2D3B8ED72704E86C65A5E5B0C12FEBCCD729BC9E09381
-BD70129DCEC5FC486DBF408244FCF521A26F3C9165C80CD3E4FC57BE30F930D0
-21D87451E665858A7EC194624E4E3BB554D81E1FA0C63A9E708849F23E18CF96
-02C070B800483706287E48594A23BB489000B2E6E3603D4EBCF41FB0A8FE3CCB
-B0B65D04275474ED03DF178483CEBF3BC58D4E7926BDE82E8C72A9AF6E716457
-F545F1D84FE41D57A68493ADE7FCE2C9136D11600E925696995476186D141E04
-6879FAA8BED0AC9784265B9A1B6B4B58208DD163A3CA1D6A4E850BC72643E5B0
-93F159045ED327A579DDC0613D8DB18B66C86354C6DEFDCDBD248158C6302D4C
-E53DD9EBD760C304358B0E908AAD0347BDAD7F6591AF75A26AA2BA6D6D1DABAD
-ED551A861698E5E6071267494749A005ADD263ABCB3044EDEA05199B74D676B1
-D121BDF53C0BAE2303FC565915E81A36DCC0FB93F8A6C89B30AEBF8535CDAFF1
-57A54442DF606A9C85DDC54AAB9656A188FC92EACE7CECF2B17700D337B059AD
-E16E1E005F1F830A702502C1D21D35E2C4653D5386C7D39EE6DFF91D595AF117
-F9B54A533D51294F87557939D1519BF0B7682E4CBD88C9069D9034A900B46661
-39276C5CC455B73A9EB06793A098BE4CDA143FEC6C5F20728618AC2866C644DF
-E131073FBA1920A83331F8FF480FF08CDCB752711524B2D6CD2DA98682C30BE8
-4547F67051F0F9650B6B4064F930FB23C77D871899A0D57342B63CC6489BA1A0
-3E86589A81003793E8486B7E6B4863E609133ABD14998EEBAC0D13F8E3881C38
-AD911413D7D83177DA746F41ED024141E5953905D7062587919192C616F49799
-DFF4631DE2521CF25DF29223E3B9410E5FC34CDE51644A2F9E482F1E87D65F95
-8A2EB171E01FDD1F40171912A2F5635A498EA171DD29836C64BDF554867EAE8D
-2449934A3D0342217D10FB4301217186D4C3A54DD3979E20477776C571B9E5DC
-0A856521BCB1A002566FE1F4B7304CAB6374A300B557416B50C8196451247A9D
-CFC30B48B8889E7AFFD6C4930989ED9A0CEA9C0A40DC7FEE11DEB161E75E9FFE
-823500366A700EE3FD11D1CE58E39DC92305837A16FB86DACF097C72B12B3B22
-FA897E8AF0243FBB2071F05830EB024E50FB434051D9D998686E241F6E6D7307
-ADD5DCD1234D20FCB6FB0008A856C0BD071977395BC3CDAF2C5391BD83C0DC65
-474D0D96CABC964F599739CBA773E5ED1D23041C3DD0B28577A0ECCA763B8ED0
-A20F2BF2C8D23AFD212ACA14B0238A268CB9A830A43B414F06DD03A0E3FAD512
-91F1CE9D77ACC079AD0CFE6A10730A35F49D63351DDAA7AF6A070FCD9C0D5ECA
-EDEA1B5CCBF79580DEE58F87E7586954C2E41ADAA816E0531BCC4BFC6C3F24D4
-BAC33CB27B0C445D179080224BBAD4BB89A8CFE1BD96B21D921B8C466DF65339
-B1BD94EABCF96632105326877E2D2734F45B9CBE283A496EC87925E66FFEFDC3
-72DA1C709669FEF0AA7A375D1268CB782A42434FA1D60E2496D323FB3053DF30
-E9C462B733E6F8F9EDB83285EB271E1DF757C4DA702C49CBB056AAFAA944BE6D
-3A93185CBAE2CAF8687CA91C94AF4BB8932AFFEE8C21DA77CE5DA3D89E87039D
-AC93929C8AB1685BA18714E941E7C668A3559039232994D49765A0ACB350A4DC
-797C408EB3FD8D0278461840754A9D03E22380F578BF73F1AEAB786E083E82A6
-B7160EF67925BEC48E3638B52BE3CD2F537CE031486AF4CA698D903EFD30615F
-7996520B45E4D82D2FEE571B4F1D22F5BD63309B28264ACC33232BA9DD22AD1D
-D3C98D1F22BA402B1E7351EAB66D889A327A0EAA010B8F2A5BAEECFD0117A20D
-F50B41AF0F3A67E1E609FAF548327AB35185A7803B8EB62DF154D5B1A6F69541
-B1B28BD3AB6C80172E88108AF5B0602552028D116A4EE56EBFA318BC6A652385
-B265C4CF9A02D94D34D7FA793FEE2F1BF2A63CE55AC80EB1D463AD364516D750
-F583DF86A481066AC483A50E9999ECE84A966600D66D88FEA009ABC53FF62301
-70080BF4A4618FB5E6A5FB4D87717207BE10674EE39BFEE4E8F5C1817990CB09
-69CA70452A330E0421B74C4CF04EEA121061DF491A9B6DBE080D0FC9C38ED459
-9223981A796D77ED5EC9CBEB43FB95A758EA6D5C5A53CA3F45543FF4730686FE
-C21CAAD868268BB6EC91B6EBB1F91D537F3730BB3AF1D2985143547A81964EF3
-145313DDEA1A4526185B4DEA779DA4AD7E08C98FE5600A554B930E424B10F001
-E6936EE7ACDD06BDC18278010213DDA7F6DE559E13D6BB22AB9E032D6D1B9DD7
-86748734E3F89DD59539EB2C8A087A91F3CFF124335C6E21EBA16EFA5F6AF042
-ED5511FE6BB024FE73A5821DFD5482597CAB30DD6A94689D09966395135980C3
-740139DB03E0C333788A51D6A2FE8E581B7CB79F2FE983282FB2FDDB011BB7E3
-23042CEEA420F372A2EB234EFEACFB6F37865F7C29AE212C1C5DA5FC3C2A90F5
-B4B997B22753DE9F77C04C45F87A9EFF0769F96BD33D11C2BDE56C5B32C9E23E
-82570D650E85C96885EBED4B1AB7F214A49ED63A4D7AB91D95F7F2B16B92060B
-8CF8EE0188D7772D4A837BCBACE1311E4103F1C46EB27421B8DAE20F3C8CF412
-AC46BA403CBCEF5ACE8C6FA3A34F02F2B6BB6E2D29B8353E4B88789736CFBA44
-12BEFBC66A2BBFC9585AD8F04829FC311407E3F99D13198DD6CD3E1C5CEAAC38
-42E89EFC1FD1F0E5A325930A095D3FC779A6C24F80B896CFD7A5A5260D7A8E81
-0AA07ABD151B0CC5C3B14BBC53545DBE06900341043806E4C9418C8305443B83
-92426BB51A9F0B8CCA07FE776DA9761B66CBC39615F56A048144E345EFEB0169
-FD5C5E8CEF95030255FC61CADDCCF37D4ABA1216944FB206B97055AD33003A34
-218378C79AE72C883FC3F180BA3F1F97BA7967B4E5967DB5983061C60229D589
-D4207796B60828B220E1C22BCC10D43DAE7A9B65D4F90FE529376BF024F050AE
-A17F4B4F4C8C76C244337C406AD171D5CA8A490B2A0EE9218F59869940A30C9C
-61BCDB2A1CCDFA181F0E71558892A31C15B1DE9BD0E0B0A504EBF84D0DCF6B60
-21F6BAF5A8341139E39F35CABD42DE555BB20F1BECCD79AC70C12245225C8B24
-9231A2B388477F3058AC215EB22C71D42356ECACAF283D119804FABDC6F7F52F
-241FDD07D5161D559B099DC2A15F1850A5FEE02AE8F8111F630872FD3C335F34
-8347453FAB39C348E598FACF4C5D912B5750A846C0F33C22434FD14A21E1C148
-699BCFEBDDAB6E2ACEEDF17D2D7F182267AC0900CE5E97A85A9410216B769B63
-67E09BD6141DBBF45476B1FB36C3B97461BF570C3A4CCD291356C8826BB6513F
-4AA7A375B0DCDF1AC698EB87D721AB4C1039C37E23985F3B45A19E3280D08E95
-5EA4A67A0A4B69962D9B4427D24274A4E01CF29A3293FD4F7B1CC7CF95925912
-BAF69256382CBCF662D5E91F36230A6815A1511AEE999A785F87DECB4E085808
-BBF136A2AE5DBB79970F41266F408BD49A89463E51D73EE4880F8F58B7AD2BCA
-FB51BABC18A86723F8B65D598D3935CD1867AAF09CCB4B3778EDBF57FDDB8568
-1B25A0C332F48D12E09562E37062CF3E0B84CFDB49AF120AF0AF29D74F276A0C
-31B7006353532028122B42E567B2174E0A0A44DB5950ED15077A2994C735A816
-D36EF785BECC598CD2B6C107C40F48E367255C86A62E97DA893B3B55A31B5444
-84034C0ED471F17203FEF69FDE2107D2B8DA6A9989E5D3FC75B204F8020FD934
-BF341096258B7FB03DA660477ABD44DC5C57D9724E56761102230E9AF6BDD563
-F43954574EF23C1784961D1289D7BA7244F48393AD9A99FD37F25A90CD254D0F
-ED37289B03463DE2552BE4D251E2FCE112661F5FC8B0D354EEEE55A1D4AA47E5
-22AA649E74D0B7546B8CFA4B46D666BD8391EE68569D69BD8C5B692D405F83D3
-CB110D5051AFD555D3169B9C30660FDF66E6384AF66E89C6B11C6DC718491E44
-58B7EC46C10CC7F791AE8AB21266E688A2B0A72C2D7FDC6FC0E08F9C5F180065
-055260F36BDAF6902B1CE372B3B9A501EBA4F34B727659DFBD82ACE004551DBF
-739E5386E891C7D119560BAAFCB0D7C9669D57D8DC087BE3E9F07BD4C81C6659
-F15DB64E2665FD82D409DBB0699E0DDFBA82FA81E3C8D89904F8169380480A81
-7CED2555BBF36FC903D2DA0A98E6A2039A5C9E4D95F9538670EAEF7B739C66A6
-3EB097F4FF85BFF3B6702121182E03AD09DC207C86BEFB6C095EED5449C6319F
-D176612402D7205D5406721C9E2925E036A99584929C48AD177161D131CB0356
-68C22F5514431D5FC9D1C7890589002055DC3D381C05A036A7CE6CF7F7599F98
-1E88812AD185A05645F62CE2C2AD263BA94506E7ADC8CFC0C455F5710A1D2DA5
-452BF93FDA243E7271B3F918C75293CD606F990F838C85F4CF3E3BBD616417A3
-8D4D3EAE37C738EFD85CDB2D202002E2E9D4FF5B4C33A06927A0BE93930A8E73
-862C40F66348493FAE68E94E4D050FEE8FBF56B8F7AD5F6568E8E399B141F4B9
-7E5F2938EA74A67E993357233251717323A0B21F039FFDDDB29CB1328839F81D
-5798D1F62B92D97AE5B8FFF7831B5EF3BEEA9303FC3C10281BA1E82CBAD4F402
-3CD58AFEBF01C509E014418361925A925547F0608A96E49A2E7D6A29C753B16C
-D348CC3C3A7E2A52927A5B398B3D6B0B2015BDE3881DF274DC75873F89102688
-B5AEC4A02E8D6B9AA2302F0E8866EB39730D3EF4D00E617D33C5826F81B040DB
-415AAE49DA262AB1B7BC0C3A405959E67BFCDD9B08E0B43986618D664BC34A8F
-C89EF21627BB3C3F73B6B2D1DD3E59DB3630484322CB1F21D1EE2B1A74CB43B5
-C23C7C1645522A42F7E17E863490D4B7BCFF010A7FAB46893B57159C58AD5351
-1DBC79825133159191D03E86CE08C0DEF4567ABF2DD07C2463AC5046239DCDC3
-32786800F1AD21EB1C684B1273BA47FEE31E06C2B020EBB8379F410332A74F14
-1D8778EA2E897ECF8B1FCB69EBD2F0BCE124AEFAC8C3FAE23F30E351BB930C0A
-1038D3E4D824CE3277D0104DFF8501FCC351F7D49E5CED72F887E34B1C4C737D
-634D886E1C5B09F425782EE41FD7C1E3F0AAC3C735B59B0033E978192FE64368
-1A401E72D6B907054F0A42E812C7CF215809FA1D6C781141C961DED466D91F62
-48CBEDF4AF37AD98C42465037455F247A662617BC2B175A0F45DF0C59D0BF57C
-DF2906A99E30BFD52BC26125D3FF6EBA735A6746B288AD3D1503DC11876DEA64
-F2752FAFF854AFDBE1E9BA62BD07AF06308D8D50FE12B3AF4F3246168C8225CD
-5FB93455A74C7E01EF36E76AACA4F6B39E4B74C83EEC7E00CC23EFA95CA67D84
-A43D5CD3DCAACB9B91894C0BCCB9DB7A3D71F8AC3F7419451951C8AF59E99021
-A7DD438484369DC12478ED791209E164F07D0E660382D5AF436B828E932A7C7D
-3A39DC81A76CC453B1F9D968FB40D593258B8122B5F4EA9D3F0C0EC1C625E415
-6EBB850352B25B3AFAD43DBD30174EC3FAD830C00524CC8FE422F1356452145C
-27F1987B09B3C9C34F351632166C35020912CB5A8EC898A04F2D0949967570FF
-7C8E6854EEA322B7E579F0C955B8705B464BDD0D8DC3A2799ED62E6D1C66772D
-163D3ED678AFB8EF4413AC2FA820016D1189E4F1679A0EB13E31516FAA9DFD38
-2FD071BF065EF21C113667C33751C157AC5054BF5C3F67D0D7D341454B3F0353
-296D4BEE74C202FFF87669CFA364B57C7083FEAADC43E95101A845AD6521EEFA
-DC200B626DCDAAD74646F938A31FF8F441690E196BFB0F96AD9B1AAA57364680
-C903882DDB34E54B13E56C1A3A3E14548719737D41A1AC88BBC6330F60A8268F
-8C7261B0F53F93CE81067DC8C5AC59F2E766491B008F7F2BD76B48898D0C5F8B
-25A23CF6D653AA714081B67876FED60E108E8A83BB1A6A44723FD4B13F140A6F
-BF302D03B6A534FEB978E8FFB7C6D64CB20B9B478BFAFBBEED6DEF3DE5917A7A
-E5C3C881ACDD096869581ED52A6E00C0DCB57DEF00AD5347C92478FE19B13F9D
-A07471EC372D4FE1AB79E091C6E74217DE3A8BFA2B10446AED32E1D14F0A46B7
-973863BD305E673A312E2239534AC1D10AFE67ABDCCC096606B6AA1BE616979A
-FAE9CBDE8EC6DBF848C60DFE879F37D9451A13A72292E2A25640F5AEC9E241EA
-D82271641E4C41B9B2B5BF12C69514258A1D1B18C85442820430C8AAE6500C8F
-B83D35717CFECCC79DE341E8EB054F539B52D03ADEEB518D913D9F07AB3FEA66
-EA599D2715DB57948B404F068CE2A80870FBC06E9FAC305FDA258B909D14F2F3
-E1F0F7E9E7B50DE343EAEE5EE18E832E88740525750AD71603F6F616C4186706
-F0EAF063274FC20EAF2BA37DE9ADC6E8CCCC1E60D0534090071D120232B75B04
-5D01D7EE0DF7D08E61C3AD5CBE01946BD041721579FA42FC8D28F12048694E4F
-CC664645E805E911C135721F0C629B5E63DA25B01D32919685F47F6DB54D73CA
-EB02C83F5CDC012D2C08DB25496DBEA35405027CF13D0509EDEEF76713FC218D
-BAA31BF6A2A76E91F435B803FA5E98403496E93C779A360630ACFFAB9951BBCF
-53BB6B78FF66858B9DB1E5DE41B777CD9206925F1945200F9EFBF1FB42FA3836
-CC7D379500760DAF419DF37F547318652805E955473BBD6AFCB9D149D740E82B
-C716BFA9292ADB43E07E1B9122FFF8387397ED863C904E34400860F8EB55D301
-7F70725107CC3D03DA7FBD9AC885E9483ED66E5BB4E6BBA26A2409AD4646E175
-C109917FB99310B47FD0AEC25E1F4074AF64D703A8E22F2D17250CA9F65A904A
-95D9AD2BE3A853CBE0ADF0340A73611EC250E80C91534F53B916B5E73A33133B
-19F5FA7FEC0841E97350E597C123236C48C2E9683AE077012EA9CE466BD8D7B8
-D976715104DFF4CC0E3082DCD6F1DAD8537404A72A6218F0093211DA9BA8CAC8
-5E9D8171AA3AB651F635045FB5EA2CBAC72FC6C9CF851DB148AACF849E3D00AB
-B558EBFE9B48E1E70538BDBD48AC47A3212A2E19E168EB3B6F2A11CFF973CD16
-951CD1769300BDBB8755E28EFD82CBF191CED7689D4F281A860A2E255E52B1D9
-45DD3DF51BA818F09E4F360C5F2637C5BA44A0B46A85E3E1768433356CFC2719
-0FECA79B760A9A2DBD5DB788D9ADAD27CE87002541090B8860EF167E9B8F4806
-977DDA7FFCD10AB4F443D4DC0D41C40095D18B52C9A035C1AE34EEF9979C6ADE
-DDAC1047733492CA5842EE70572935EE1F2F9F3C36AEFAF7A720C4C94D118830
-C8A598E52A920EA6DD997D05A8501835744565FAFAE8E964884697B7202E2800
-31D4777742EE1CA840B2ADD405631D60269D841E2D75C0BEB549D96394B08709
-A57F7CDC74DF31E901D49B7F6D5E7AB8C96C41F613E35ACE217A725147A998AB
-4C497C4A8692697831C66846FA72F5A78489D388E39CD4EBD8E4A960E93B3102
-26E8F996C82DA46859DC2AE66BE706AA18875741FFD72F36251ABC47024D77D8
-17888FAF25DB3B6D67962005132CEA2C8594984DB8DCF3FFDBCF1C5B2558E2FE
-0CECE149C376A937474B261D23A130BC469A5E53C499B9D1140827169869255E
-D6DBBD70A98FE87CAEE3F185EC36012126285DACFEE518D190AF548B6D4F8A7B
-EBFCE25D50640F98C6139F73C7DCF1A90C19D679BC3485C2E0C53BE233D58F58
-0E5DBC409EE6620535EC07EDE774DB44F1AC96BF56211E3953CD7AD902D495D1
-D9C4B3609D8E88F1E92EE4C0A4C241188A15327DC151C7400649023C6FDC2561
-6D1BB89B0A9A8C073751E70D2098C5281B567C715B28607EF48994A660D41E6D
-14F826FA16FE12817E8EB03A0E65CB22D9284F4B1BF85514D632993C4458E26F
-0A78C70A2D91C17B3659C6A3B1633647BCDC01B7ECD5E7C747198062B3E05DCA
-B1E5C715E519C7C2A28A840794FED862564AFE701E3688D32A3E906B0EF3B6D2
-D02BA4A0779CFF4949F233ACE3D356148705874A8497D4FFE824C05372B81FFB
-A3CA0DECD8AC6305015D4C493FBB9B8BEFB27A1560D7A9D6FE4E9DBB42A10F52
-3ED35293466A4065DFCC6F33479FC70DAB5FC249BB584B133A7A839DC29AEC64
-845E698FBACF68C6917C4C149924B2DEE2E0EF69D7B69FEF49A54ED8464B9776
-653ADD0FE8E5B0DFEBBE1C69C0DD7A61FE3E7BE0F91BEE854AD3D8B4195E6180
-A80810E60220C88017A6BCC57E40D7B5E96B7DE4FEA7B2718F1F26373A2922EC
-F018EA67683158D16228F725E2B3B864CCD6D43A615F98D4ED1D2EF8D475CB43
-FD412D407C68E5FF061C92EC680448F0B4BC0FB03512E02463F823E8809007F2
-72D185F28641B0D4F019BCB3CAA66A05C7A80FE5C87F2CF68EC259DA0AD7CCBD
-241F74CDC0B191AFEEE76DA0DC36AC912EB8321C4D7F588A0F6C50877A50033F
-1C9A4E87DC88CBE02CD9A42A3E5CE9BDF355D3C6F3630E1A237971A5EC507667
-2480A7EA057D8DE7C237EA6B04235086C07A1FE24317B18AD875960847E72FF3
-46300EA655EBB5FFBE308A5E2F7E42C3E48355844E517BA7EED5931D2B5FF46A
-12C7326329347B93DFA50B4D7C6DB94F4D89DA036F8CC2A0FC8892424ABCD9B1
-4A1D4187723D33075B05E8500F3CA26B76DBCE22C04B3955A1E13EEC022869B5
-6E7FF5196527ED119C756423BDE394AE4893B56ACC32E801BFE9961F1AAE2330
-D99EDCB20CDFF50B8AF500D3F21240AB5F6B468807ECAADA4EA784AD16F4EA41
-2E5B7E8E4E685915CA8F457BE72880347EBD27E2F4664579B7BF8017E6CBD80D
-48879055DC4BB124EB321FE99508C9538829E21B2B2B48FF19ECEBDF9F9E2BE1
-D5A877051D7EE817DE46F24D7496885BC07CBF2C5F3A475688C3C6655FDADC0B
-6286CF1B4042DF5AF0E5119ABBF0437A32C671DCAFA7DD5107CBE11C004E5B18
-3E5300043B05DC04F4A96B3D601984F43FE2E11065CC42EE12C0F2AE03A03B60
-F56B86ABFF107E8853162D76DC31EB67677BE5CD3425232A1C9B3A36B1056351
-C50055E19DDE3C9B4E1D525B15849A375248790CBD3ED881F72CAD24EC2EC42B
-DB79ABE8E57AD5258D66BC1222CC18899AE513D49DCF2C25EF8B0C0BFC08BA38
-81C788D259E2F35A5F2116E90CADB7EBB430B755ECC2F8047F7374C519FFD34B
-A784CED2BEE9375DA8467A27B0717CA01ACBF29C21D5064A1490547874D0398A
-2A983E3BE0706D61BCB2A074999CADD88D2DEBFFF2FFED8FCB6989A89F91E239
-20FB6B9348A64A1D118EC601F35F5C97C71DAC66EFD21568EA7B56F72E57476B
-A3DF4E7701A58930A8667E9883D2D67FC7787116DBDCDB33AFEA599E5B5844EF
-56AADD5139CFC4A90FF4C7976A77C7509635DFDC7849EC5574395965679BDD5D
-D5D07B3219DD40077E57977CEA21DA7926834A8CFE89AD23B7A68D80F170B7CA
-A56B478B4CCF468B5AF78B5C2649C2937F61CA24631F66C193922542BA53480D
-3E62D462F99257ADC1FFFA384D57C9B86C83DB3C97FD297D5028685BA381E9F8
-AA36435714F971C1CB4F811B6A5BC9A50349812B7DF2B0167F993240B152F785
-457165DA980BF0CEFF4C52CC215090CE9FC19EF6D85737C8CA7324F29D62817A
-53450FCDF827FF6C64448A5FEA0AE0BA9807FDBBE3C62F971E05ACAAA4E8B03E
-7DA5D6C40997F6C874C2CEB2B38A1A5923A8D352EFC3EA5A8F7BA13B1D597870
-FB53DC9EBC2A801188DBB38EAE07FDEB698465C1D18656A15295682D9CC965E5
-0889F16DB7AAED1A19F24CC28E8BD926B115A49D0A663B00876BCF81AEF29081
-0C3B0AF14C6A4B7A3018D10E241D060FC57C5903900FDC92741579679E5EB0E3
-B66DB3AC3AB11C689EA024DF1969DF6D78FD9108862925D2D429AB1DF21A836F
-B2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.0: CMR8 003.002
-%%Title: CMR8
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR8.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR8 known{/CMR8 findfont dup/UniqueID known{dup
-/UniqueID get 5000791 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR8 def
-/FontBBox {-36 -250 1070 750 }readonly def
-/UniqueID 5000791 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR8.) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 52 /four put
-dup 53 /five put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 88 /X put
-dup 99 /c put
-dup 101 /e put
-dup 109 /m put
-dup 112 /p put
-dup 114 /r put
-dup 115 /s put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9928A7C95D3A6E9B
-8E92F84CA0AA44461D2F4FA0F8B81C6F5B7BE98C9712BE166610465CF689DFAF
-27C875C029C0116DE61C21DA0092D029E7DBEDFDDEE3D67E6936623AB53FA2AF
-18BEDDD7AC19A19CADB6ED6CA7A26E6044BE414FFF59C0B98D5819A6B881F9AB
-7AD0D03BDD5CD309C67811D5CF0B93F6FDC9AE64F74ED4E81F2E18D880BD842A
-DAFD0BDF06300201C6946087FC0B999447BC370200BFB8CA420B668B32EBC242
-6DB1546A7164CF55B332FE9D239B65F532B69EF9F4F93828A44C8F5C526126F8
-B7A369114CA68D4F98638121F4E17F351723D9F1A902FCF087F94AFD23876517
-2D15B482AF2D68C3F31FFA864E031596E597882578AC7FB0DAE2A713B065B374
-3E2E72519ED6D50CBCA40A7275A7109A4F3ED8A4566AD8832890D3D1F4899850
-9B757442B7EA355175CD5D6D8B4152ED2D7EEB4CE30F174FF672140354046A45
-7098EC45B9DF3DF5CF7B417E201DA88308CEF4CED8E8903AF24FB8DD0187352D
-25738519ECBC70304F8F620CC45D2586619205DA3955696FAFFE2082402B3502
-CB682F410DE5FFE80A4DA3D3BCF02E35BD577D0DE55E7B8A33B7A2FD5136B5DD
-A0BCB61F8E7F4363C21F890CF287304DDB8FCE7FE207C0D160B81E7EA662BED2
-DFF8C444E19C91E72254257CD87240A70F1A964FA54ED9ECF27E27A57DACC3DE
-EABB92C085030870C6CF5C40B6E47F5C0AEB30E84A73ECDABB2D754EF6EA28BB
-16EBD6636BC288E62F4A38BFB55F5F4DD20FDD77D767F6CB52F9513E8EB75413
-07F1877B2C01278675177499E4E8EB09F2657821613F5C7643FC064293EC6E9E
-B519FFAEEA36B19C9D1302CF91FCBF87FCB57C5F995CB6712BB3D8681EB6F05B
-B2A4195A3C73CB4ABCCFB958EAC533BD89560D2790CDE1444C0F2E4EF27A529C
-F01052964E56F6D76A190E5FF45934BB711A3406284AF130D4DC0D8112BB3752
-762CA0200CA262359D4F54C0CCFA9A50DE18C7DB14419E2990ADDC4A54B94978
-D9174CA39434022FA77FB30179EF805E2189C35919F5EBE215EE2A00B4407826
-CE56329C5586D8B414770BA5D45513C3AF1931D632FCE69B4CA504944E03362C
-74A1177C6398A61A12DAA0F156543E2A8E9969C4308B7ACC21A5ECAC8F172541
-1B1316A88C0C163E574FFD3CD22FF08488662FCF2F9344BC25D02146F36CA6F9
-E2D0130C654B7485EEA9A110A33AA0C769121F81821E9A2BD062FAC158359D44
-3F9D9947200EF1EDDD5860F10438B162A69683957300C75AF7546C70C97AB2EE
-37EAAF0089E2623F787F252569B06C665FDB45EC9681C0774ACFBA76B98C4E89
-7EB12AA5F8798FFC110B49C25E3A483ABE83B0BCC6DF0578403ADC369E013762
-C9D08FC94D949BAE636ACA9F36F4E3F02296775A062077B011A705B6F1784D36
-A926622CB3847533D7ACB24A4EBABB14593B5D8E1DAE2BFEF8A51835C8D4E76D
-7543C126A4271C59A5881A5AF89331694F84489CA66725995DC3070F306EA447
-CF30F63CD476A46D528EC1FFBFB8EACFA2BEEDCF54C92CE2BD26DEA5827186BD
-3A4D1709415CEE7D51D671357B4A5D11E835F63521B9824EE5282E58F05A8ACC
-FD249461181A38C2F47BAC4E79BE368D64F886AA493C61CBCB2ED401C8AFBA61
-59CA6F6216D941A92AC52ACB3D7ECC28D6A58EF4CC70BA6DE23E80937AB38E89
-6F05FDD15B954C0826636267EDAF9F2BB466BF79D2E10EED9B04297E6BC93069
-79581ADD1A9D9FAE9306F46AC95B98C60A2E53D60CF1AA4069BE301E17E25070
-F98DD67BD8642B1D07571A32766072E48BF27E1576FFEED300D7313A358A823B
-49C8F135961B7E259095C9BB67F996CE0B90E95344F203922F47E11753F70D38
-2ECB615403490310CEE6C03AFA97DA2F47ED47125D110FA69725BA0018F6A40B
-29A307FDB3E52322A77A0102E6F57654CF1E96A134D13860D83AFA0A41112D3F
-2247A09ACF7D06713BE443FA27C7E7220E875965D53030FE7D2D62EFD2F1DB87
-5FB091FEAF599BA8C5167525899E578AB341BFE2BC4E53A047093168AE189237
-EA55F055514EFA939DAE9E859CB5FBCF37D99484F44FE5AA5FA386B28BB642F5
-5DBAF059A50FE96C7C6D834531D64F1F2E99AB2E96EE74D149178B1C0618495E
-293973D9A03E1790654B67C0882376ABEC17D74785B3737D81644F28B3BC6FFF
-F92FE29126995A07E0BC5EF3A4B93789A103C428943E045B8D1A5063AE71E806
-568D48072E53DEA85253B01DF0BB7367A6BE4DD7BE514AD74E3F77C825ABA405
-64DAFA25EAFF8F63344B5F6B523629776CEB090B546469F6A6008DE43072DD3C
-DEF51F62731037D1FBD0C038A1E9B669849EB3BEBA281624F13D20B61917A109
-A0A7871A73F7BAA18077360B38A4625C5DB9AB9E43BDEEB856FD0E2D3AA2E075
-267B978B9EB47F2369302E87DBD5D5B422830BEC32411FE75D584C58650EFB1D
-136FEB92B94BF8939FD63AFB7349C7511E5E46AA7324F8B1FFCA9C2A9E9720C0
-A720918E8E860F137567D386AC29870FD990BD69465B3A3D2A0ECF2753578AD7
-80DC87EBB319EB5AFE0B6F6FF8616EA30C51425FE3ECBC5F8D0B0BEFDEF32FA7
-D168B4E85C804B7326A0942CFDE732B1171C643452B7099B31649CA2C38B62FB
-46EBDF7180004C549B53F88021D029452C2B37D8C565BCDB0B11541039A13C0A
-E45D4B68C7907B8BF08C6F41F564B62BB554235D50330E78DD02795516D969C9
-66119D718798120442CB7EB9877FF84EC69DAE25F8559DCE3BD8042959F695F8
-2F99845B1B5680DDCF181D806CC4903E077D1FF5E60918EB34C0B1E028422B71
-CA63EFBF3F4F3CD813CE831EB54265A555BDD35AD7D723F9CFBDAB29C54F8AFF
-2D35C6A3299E0A2DB470C7B141B1E3E10DABB7873AE302926BA8743278FAA8C0
-DC6174501D6A289CF980A3F55F2DD5C3A514E7E7F13133C35D2697D64C25130C
-DB78FC997968D6B3BC929E8A31B6D212C5128E4412632BC52B3A1049F7F2F61B
-C74AE9A6AD19B9E2E240617E2882F7D29ED3A4279439107AF9AEBEE47CE85DE5
-CE9595A96A118ACF1EB1F5929930321AF7732E351E18C6AD378508E37B4C327B
-0E06AAE21278AFA9255AFE5C022034DA2968D260879B4B38E7EE2E11A593DC3F
-CE71ABA050C004473324CAB6F3C50E85DEDA3E9A27388D8FD3A8F6E42A79670E
-F7549CFAD4CCB337A6E0BAA4846ABCA059F1E1933CF11DC0FFBFF550CC4A1B47
-CF7BCE0875FA747AA854534960F757884505A5AEE0330179A9547A4AE3E68479
-7A457DE83326DC30B67F27CFD4AB697601CEE352F72F0966B3CEE3EA24683BEF
-6D23AD51B8432C3F0DD0D0F80791E1091F38988B7A54E466A9AC7810DE8B7893
-6B0AA6356597891D56190A7660BC7F657BC559E0525D41EC228078F2FBF89C6C
-72D666DAD838CBF0861FBF0A1D4ECC069AA49DFBAE5C56B781A1D5D79DAAC256
-13E3F9B928A2394FC71691E4355642764459714412D6F8EF803FC5F7353822DE
-6CCBB8FBE5AA1F2C7F4D384039D85E7728527DF9FE0239E2CF8BCB7411C000B7
-1FE660AE6A2A19229E5E8776CC83EFF3C27403935756463EB4721C51FE0B1197
-86C2F17842A0FB639F28083DFD4F1E86D7D3BEFA922514ABF489C5CCE93D6F72
-D2EAAE14F6CBA2BE4BBE7D7EA8EA19DB3A87350D4A52064137C3D15A5B05B03B
-70B1DA7328D10713B83974C390C3270AF5A9A47C0BFBFABB9F31063B0CCFBB10
-0F236C74446688198EFF039110F6FF42FA9F82D463AD3958B5FD205BDF85DE20
-FE3F0C7AEEF350AEE6DBC1DE2E2DA4F4599956F59D6F121F7086DC120416E180
-52DBBC4E56C09746938698860F30007091E1CC0351B43990E47208ED495310F5
-7BA9C6AB3CA10A3F1B318FD47C1CE3B9FF1304321F9623E32D315AA9CE64B35B
-F841E6C62B5B2488A311C94937879E5E0E170FA77AF0AC75C5E6E9F3E8F825AA
-09C1702682E14FDFA72D27901C5BDE009B1E52E8C4511C6F6336251BD45261F7
-401CA3DAE7C4B0CAEB91B9954BF4A97C48ECE7FAD401351D59DDAE9DA94E2335
-74A2B880E4749D3D7026CB5299F16C204B6E00A20A6619C34922C7D3FB50F127
-3157CFC08DCC5164C8023CD1B6C3556C73CB8E4ADA845339CA9BABA1457ECEE6
-ECB9849DF1F0FEBC89E5F97C92978A500196520839CEBA6C0FD2E3D27BB4B4F0
-93CB2BB565F4627C6DB62DD0E084E627D69B5DEF42EF094381B62C0D67EFD197
-301B132420F51A41561E6106870147E0D597078435BE3819ACF0DE28AD779847
-F3D2CF667DA06955D53E0204CEA2935E9E984E76963D3079EC092031E2A10E61
-1227E5EE6770DD4D745A52655369EBA06A19BD7D95BBA271E488241199D1008E
-36EA99F8DFD2A9F87B06B070158B466AA4C6EA3BA77DB0F853F0BF9A304EA291
-34069714368E0B94DFCBA3BE5EDB6C8204DFA7EAF5C3406F60A7056407D1BF6C
-CB85C1F432F97D821F5518BBA79AF8453A568FB2C2D025A70CEC75F46C545011
-ACE3A99B2582793BA1DC655230AE2EFD24DE20A01D4A441AFFAB7771F223FA6B
-9169849E727E494247F67D6E1EA9DCA06A082FE2094BD548AD7F08B565145634
-E7ED832FEC1378306DDC796303392ADB0CBA130B63B38ED57B7828B47732853A
-893E8836FE19CCF27002AE92C2B2CACFDF8A42F1B8066E033B965D2E9157FDF8
-E1264B40813C1A4CE424274AA3528A4F09B3B53DD4D23789A68B3D17BC1398AE
-0ADA2C2168427A49846DE0216908C2FFFEF4F13C1ECA12AD341E238EE46E6DC2
-B71B54C52659632911F901660261E493AE2483D64E119D9924489779B62BC9FB
-A052E822FD8D83178E09ADC825DF0DA07FCE7AD68EEB29FAA275A13691B4A5A5
-B0BC0499CD6307610CD6209583C1152C559A2760823F8DC0B9B990BFFE7B7E9F
-3969B968AFEAADB9FC0F1410EBBAA0DB979CF153F0B8C978405F8E6F2B6406D7
-AAFBF4A655A15DD6D1E9A7EAE10EF89264659B09283F50B734236885FC09FBE5
-98D780012FA77FCB19F15BDC522CC7312546C0730EF5225DEA8C22A3BC6554EF
-4FE73B9AEB5C2F7DBD474221760E5F539A064AC450591BCF3499E3968F2CBD6B
-F15BA2B37080A4129B66D4C2188524F025414F14DB3F96049A8B0E5EB2BBE7A1
-AD64A988FE875FE4FE5186BB4F5DDA16983CB052D474B7D72F3E8965663EB50E
-015C72407C3437142D3D7DBC055FA627139488DBC5A0F98D805C2143D99F491A
-167E07AF60EC9F17C36289368D740B632CB919A0E74C412B76CE7A5906D5200F
-9E79CEB9C65ADA3A0F23E8947E834AE7A329A9F0AA7A6BF545B1D7B4666C6522
-CFF268634EA06DB3A82D91A4C0A9B227E79961212881A54A6762C335DE7E0831
-130C45D94394D21C049B9D189ED955438C2151514F17BFC67E431DD9A8349202
-2F616AEC1C7B19F63D5000EB4771370924BD4B9053FE78B5E4A244B9A149D66D
-A8BF3B398396D2233E92E4A5FDC70FAADEADAFD255193D688842DBA865CF6154
-C9348D590F3FEB135D4B7BD4D76A52CB140888247CAFAB25ED51F4D187041CA0
-ABD956F83A5661CEC171B52AF92F9ADE27973B560C802E1E0FF51C4003D1289A
-CDD09F8EDA8AFDFF666D35418CEADF3B0BE298F0D1E5C8E024D6A2017A7E71F3
-3A9FEC9930F1118101E040339F9D41379170928DDF5B5875212B271DC843F612
-E0C21C67263186E3D6929160464D4D5C8928E14D0845762C36FFBDE548188E20
-3B6BAFE5EECA0385142F01216FB8A90C43A472C1D4447FE5C7C78CC088FC72E7
-3FAFA062C338BDE8A430FDF1951B107D8D73FF9376FACDE5900BA362C66F8C1D
-947F9545C5C13A53E4479B1C1A50472C05E8F8C266C6D4F4EB08E97B3B1BA972
-26973B844545089C5732322BCC9A5A8FC972FA0D7DB8BD85D2F515ADE65DA479
-0224F7EA2276CFED0B75B2C23AE7377F86F1F6F205D6FE19377D87E782143697
-984E731F83CA888199CEB425643C259D4FB8B58DD69A96085198306494BB497E
-FE7C9954EF35B679BBE3847A9C73507874F71FC97665E2A58BA41407A1745247
-44A79B588D969D11CE4B863CDA655DAA53CEA5C3C263B345E782006CE9831D49
-603D2D95DE9E370D617F5928BA416C362BB2B4DEF16A5D44BD24B34257765F3B
-6223B3F9B54DAED69A90C7050AB97B06693D253C6894CBD7B497DA449F1D9B7C
-D91B421891EC0724F59C82B9CB288DC42F2D2D7A7F22EE3D910E15953D7766AE
-276DABED3820390BAF2700C4653E1C77FE63DB71A66D93ED293E25B8412A1EFF
-809554BF04ED0DE83F7F190883ED793803CAD2C34A66524D3A580ACDF3C13B22
-08F18905E7A4A16DA9ED2A112462FB9FFE481EC2069E484E8BBFC19D594153B7
-3DED4C11762223B7586483B06BC164D824D1A6FCAE80A35DE0DB8B33396771DF
-76DC5C05578EF1BE00A70BAF3D951A01C87328DB2B0DAD6E1B4C21F37D1BC0C5
-A929BDE5EADF20DA60C4DE2E3C151005814F24824D33B95F700E09A0207EB602
-3EF60DEB1622B91DB99A855A8F1DA96358F05CFCEDBDDDFC8446AE3391BEEC41
-966E594E28D052DD5ADA49DFF65E79540EBE5329DFD86C23CC800F95221B9C18
-CBBF941D2FA47EF1EF59A89DB5DD188E75EE94AD2A79E2221107E5992C00D531
-2E00B544895A9204656867E3DE9D4CDB64B920B5CCA9A73E6514B36CABAE01BF
-94C15603B86780190595560F792E5EF01650074EA4A9BBC6ED284B9AC2020641
-DCBCEE0ED27FE58171DFE104EEE4202759E594159DF45113C00236127A46FB35
-9EC705F21C0E456C1F0F924594C09AC64D4377C5FEEF764BA4A09ABA8D09DEB1
-FC13B0CD202B2F04CF5D73DEAB65C36C2FA7C0DC236BEEF6D23BFFC9C493DC8E
-1831F19EEF81EEDD976E43BAC6B5CED13F901DE59835FC75490EA528A72CEB77
-24C38B258EC38B9E6B97F85CA8C10D8809BBE55A6FAA12456FCAC786942E123C
-06D1E55F7ED04400088BEC968BC5081DC7A1B1B65166E7821679F76694F235FC
-6854C8776AF855B83445D9FF919B1D80E98DE0741D06D6C5EEDB3E3EA6392530
-F1BA817737D8162F7B3A36AC2A03190CDEC654383E31934C3E0A012B639532C6
-26FEBE9B412F1C92D1943B7C18CEF510729D501349644C97F087F2F840074AE6
-D8CD0FB2E620FFC908BFCD938B675A0A4A687F7FBE8F3DD06A62D7B6DE7DF3E2
-49D367D60B10061EA86CD512F5A1BE8950D83C62695E130128E0037B62552D17
-064319BBB9B1FAB9D79705E5D68AAE9B36EA14BF1A59A863BDB8DAD9AB5D7B8A
-E30E2B499F952D65877C8E38EDD7DB29F9579D09E629AC188DB6A6403AB4BA3A
-D358B3770D727A2B77D84B6C9EC17E29D88E3421F9B7D2D822EB78BB8BB50692
-8C46DD6F9BBEF2E848A2B5669B200019802AD19661537A84D3514AEC5AA47445
-2C791E01DCEDF18D9506367241255FFADEEA6183F51A9F42448A7DE413C08359
-52DAD2A60FD606AFE14702BD3B0EC448720FE63438D020DEDFCDE3582FC31DF1
-17B25FC152789D2F17FD60B8209D292D2152DCF8D28B5ADC04F6659BBB746CDF
-145163361823CA343763AA951C640B5D4A99B7787105A1609EDD6A596EFC3F6F
-2AEBB90C4B257BF563574D9980BA3160D59811D25FDA43865C2EF2168316F2FA
-FF514FDD56C78D3EEF38378129BE38676C1A750B344A8C069A83E035F8729D43
-6B65B80B3DD3D4B8F9041C564626D9CB87AB7B9379F8A02E912F859AE0B3F9CE
-0F253FB6800D5D6BB753CFB933FB9303AAAC53D12E21FB229C222646DADE4018
-51AFD06497D881A16DC7532F7C517CC04E27182EBC4DAFD078E2C58CAF3E801A
-701E4D48476D645F86023FE852EB25C98058B68C3E5E1EA186E514A8CE865960
-FAEF7B85CE2E6C2FD725AAF4647371E11A8927AEB722E3B0A70F46877976C122
-6DB4C5A22B23D2574425D4AED5F59D89410AE7E4AE6B8BD87A115141C3399745
-D6D09621988B5909B8DAAACF3CCCA6C0A0CABBB72135AB30009897F3244C8FCA
-51368A761AC0314AA9C9D13B43F84AE05279B113890F28B92AE0D7FA547A4CD3
-ED0C0F71E9624BC8EA8ABC3978AD4D96E95864758AD57B2F70638D33FB06DBEF
-AF117044832581D635014011C065FDFD1EBBCF187086881CD9C93358D6C38D53
-9AAC9784265BB097E97C1DAF7DA4D637174260A2DF580DCCD4AF6D423A02DEE0
-4C2141E03EE67C61BA5137CAEC556D0DF5462D61A3EFF551EA1C2F601753F747
-2FAF2B188866E49F0D2CE7B8596A170CFE33C6926FB566ADCE755B0AD4A22D3D
-BECA3F94EDBB12A79B991184692448145BFF5435BE6E73DAFD6C5013459F43EA
-825E8A9C0ED03B9D18494A42186B834E0C965E1F82953A0617E443546886BB26
-07FF7D7FFB011B993103C259CF4CBC07732978FAA20C5D7CAFD61F9DFDD85CBA
-B2A9FC505076FAB385CABA7D4D7DCBFDD3CEC2CABB7B10357DA34DEF82E8F1B6
-9C5112D3643ECEE347154E5FC284B26AE26DFB55D0366C7DF873C818B6405DCB
-07CA6704716DF53B4A4941C903AF41C3CB376E85DDB15B02A370B5879777C980
-FA1462226F4963E69682F3C587402ABD120BDE5B609CEB53758BC4F7D1667537
-31C351DF554005F3CD2DFB750041A9BF11591E6A1D3C992067F4D96CC0E8060C
-C9801EAF7DF0AC3A4887195D3C69298141E371084A1D92E37201DB7CB38F2ED4
-562FA0FEF235B6488D391E0C4DDC8140FAFE19940B2D58CECDE6CCE48C27ABA9
-3E4D11C062FABE31B6EC3A463241009DC4B71274BC6A1FD083D120958C5B8FFE
-6D1A3B8DEC1346ECE45F2C11EC30B35A9EC5AA041E851536769B7741054A6B6E
-67D2B214EBE10F41FFB13ECF471DB5A64AF373905C0899DDE1FFD6D93AE1B4C0
-6D7B25F751B65DC99612F7306847F1272857546D9C01AAB0E6E7BA69A609E4DD
-CBA9785C520DE9F04E2C4165BFA1F4AE5283DA2873B2468715E515860E675C1B
-4E83AB3C18FB0CB36F732DE1CD54B9F91830CEDB3F040901719F072158DFF0F0
-E5AC9DC69763A3A8818B0A1B32763C83092E11BAFE4D62E1EE782AC14599AF1F
-4166391048C75A119DEF0C3D8FE2DBC60AC2D4A3B706D801D7FA489CEB18B0A3
-55E7CE8E2774E66F477A15942BBA9E5A924816A5CFD21866D192391D7A1C2F12
-F02A050A38DF0A19EFD6BA57BC208B2D14DA925CD5A31EE7946EACEC116E689E
-5653D4E5F6C06DB63F1D8D65CF1562384D0B6BCA5C7759BBAC3641F7DDEC7C8E
-83CBFDA663CDECBD348B83F3BAB150EB55A5D6169823EC228BE0DF2E74598A53
-EB600AE11E58E5D7D9343603CA99C37F3C264E1872E2FD578ABC4BFDCE4299AC
-64FE50EE4AAEBFFB4405FD4E24B38AC1E4F9F4F10517028949BD5442E29660F8
-0CDDA01A6470FD2C2594DC05FED27147949E229A798C4AEE2EF19640C14E4AFC
-72E12566394A5A7882DF99BB8AD27E33FA0B7172AD188BE431C94752E6F391DD
-66C8DD1D12F13D803DF349C5DEEC657FDDEF843B4BFF0E33ADEE2E9614ECF9CE
-D338FC8A793F548585346CAE8A4F913A93F76E09E68060483FF20D2D3D30ABE1
-53695C244B7BE045C8F60E6D4D2C6E60D505083E1A9B97ADCC5A848D77F8848E
-C6A13BE94A5B8A91D5B8848F53054E96B75E02B109E5AF61A5DEDA1FA67BA9B8
-43956A3D252E411AA740F6E8FDBADBC98A614EEE25D906B450F06F5D46436234
-E89BDEE3A44ECC298BCBC1CE3EF9FAF3B159D59D75F1B21B127A0DB67AA1B951
-0E002EA6A51522207EFFF79B45EF49C2C2AC4E6074A52FEFA661120EF941E48B
-574AB5E6A616D8A1EA4958B1459CBEF350958A1EEB114D7433EEB44C724E6A1D
-BCC465C582208C30543EE91201F2202A368EE582D08C417C75EF0D7302D26DD7
-F95AD7D0946699119E80892F4BEF40500DCE04D3CE6962DF116D119E96D780A2
-8585BC0830E45E5EEE5CB489D01EBF3F6D372A25C159D04D49F704735679AC8C
-10E076CC4F9CF4C52EB2F2692C0940C8BE9414D074A50017F47C76A8D6B366F4
-B76270CA659C2C6B3A4933DA2D66B6237171BF2B9BFE99EDD6536E7BFF0C13CE
-2D30C7486438C4EB540717B2F34C64111E1D4557FB709B0C453D2768C7D65183
-001D3EBE1CD042D9EA02C7B365EE22576722EE4756BEF9E41F672BA9D4935E32
-9156BC2AF978C9FF07BF3EEEEFA8728D1766B06FC71D9D38242AAE21D599953F
-D828864A27BE83EB53CD54C4D80577BF78EB6A4448821B33A23DA7EB5FB948A6
-7B21CFE86DC615A6C3B1D616358690D436FD725885774889AED41944DB5590C4
-A55E0121957C83230E1E85853586D180C2D4892492AB872891645F54F5B143F6
-39C81B0AD18D781D9E40643DE577686199761229B783C030156829F4595D607C
-F07E8D1473D35BA035E117919B051F3D870281B53207708AF58D15439AC3D037
-FB490D83732B14583DC67352C919114A6A8ECBD188F806FED193327E2B9CB8B9
-D376A5DDDA0B493ECF82770C4BABEC958E1C6937F39DA9378EF3408DE8F99A56
-F795FB77F30A3FA7532F74C5125F42DDAE9DBCBBDEF306CC291881E98658E372
-CB0DA7F092BA45472C039ADA1DFAFF84EF035769D6F7C5339A3160392CF22BE9
-8C7C20CD616A93636AA0197EE69DD05068EFA3337FFE729AA9BB0DCD694108A4
-A03223144ED4B6A67A20D2E26A83F8C1ADDAC61BFF2758197C75EF81C189F5FC
-2D48A876FC088115FD4D14E59CAB5A65895B64CD8D5EBB7993FB6189DF5827D1
-C6E2F67A825E6C9084FDEBA774D08AE55BE3B7179304EDC604228DEF20B9649A
-BB3080BFA764E5EBABD66630287D5D17DF3194AD1A59EEE33F791E7A9290301C
-ECA6F8C23A810F4BE4F3832165987F0DDAE976B29F661E0356C7B4D92F555B1C
-6749BB17738C5E3031DBD947BBC73C83C6BA4761D3D2650D16439301A39BAE81
-39921D3D69E7498452222C34E9FAA0236BE48E8B899D555B23FC01F2AA7709BC
-2B7244E6AF46E1CAA57606D6DE47B258C6773319617CCA5B07670BB077A5050B
-76AD5AC8D257819FE2301A9A47B3669E6AAEA8DCAEF4B022B89433CCF23DA493
-EDCBD09E0FA952978E6ACBD97CD8E77FBBF4703B0CEBB1DB32B2A2FB66B176E3
-044EC0B6CB894AAEDB09054966A5A67DEE362484BA18A7177244DC665163DBB7
-691D1AAD3A8CBE42C551154F2FE415CFE02532174C218A8366AC45980D0B7292
-B94E02E43B400B4625B8C1B6F5714E33EC793E61A27C91D57F75354B8BDCFFEF
-2DF3C329E062464538FAA3B3EFB7C7868BA875928DBD1CCEB3E636168882566E
-890658ADA32864525401EB3813AB7ACE9E53C8C95F11875D1F5E5EFA93E5D3FC
-D33700355FAC19FD9708556373279E9CDC0E6FB086B24362FE956B75DE1DBD0D
-48CA43896C38C3FACA76AA33B0CBCBBB3C49B6BA5B383D3FA0404FCBBE6B93D1
-25D245C80D019B9330E2E77B2E383A221E27DB6651A9E8CEF3C6BEE8FB63EAE3
-5D2DA576E8FE06A8C58667A35C5652B936BE95C0A32A968CA0D8E6CFFDC39E83
-14757DF2843BAEBA8FE82AB7ABFB21CF299CDD8EC044CB179F8A3ABF72E55E17
-85F58812B99C3D427BE01B9723784065D438D87D84D08B4D4A5901B15B456CF3
-F4C75420318F852377C88FFB0A0242A8F4E167A9A3B2737FB9E018A69380431C
-634DCF9B8239CCFCAD607E481ECC8BAC520DF21B1ED15E128E04A1E941341430
-78B94A71C61AFF8A67D7472D75BE0B542A72FB74F7F5573FFE82582AA68227AD
-3AFF17DBC0F085BE329B0CC68C558D37B186E99B313FB86F90F62A12B53B2AB3
-EE1CC738AAAC034BFEC776F2BCDC5803241B0B91D2A186399CE905A47941ECF8
-D5035E0F1AE71162F031F47A0709FC0625BC275D417AD00BFD3B7269BAAB60B5
-EA3E49CB17F23E6DB50E05F3C3E645D257C1C5ED4469EBE6BA6B4E50997A09BC
-F819701D2B13D420A3B9E0BA82E2F127FBE47C083E5986E78888780B563492B5
-A6669EFCB929385F57DAC9F8AC21D579711B1A12AAE61E6AA82BDAA21A0E3A6C
-463ABC0992F4140A22B8F67721883BB28036ED1C5C25D1163A5E435F2935A3FC
-2D30C2F2C343A7852EF1E2983EF5FA7D3D08D9B30B447528C3B30C6D4D6874AF
-787CCAD6377C99CA4EC2F7461B1BCBB3725FA6A34068CB6874E4E6EE0DD8C45F
-8953E8A221ADAAE0FC14244C67E34EA12CFD551FAFAB397B313C8DF9F0DD82EC
-A7E3B85AE893BC73F0FDED9DA8A372A2068670E016ECB0AF6400DF481F6192B6
-83F12DC05A5BE4C826EA603BF93F4CE0F79CBC77ADAD22FF83BD86AD8C363E85
-BF66FB61412A588F5E27361E5B9837D719B8FCFF92E6A2381F68F630B36EC1CA
-BD66EBF83C85D199CC3A67E55BE333F09FAD56051656483E05E7D8B64451FDAD
-34BAA3D80E53D5BF176B44E762012EFE38D68C32E743E5B6706600D89ECBD117
-97C7FB588E62AB1ED83AE6247963F0B38C96464745467E1F69AADA7AAB2F7317
-EDFC5A7AD173D04436D863610FDCC4B5575A9FDB6893E979B3972EA1638E91E6
-4BB71E4EE8DC830325E2D79C8587F245D7E3A2047EE33A5310DFBB11275A4434
-D46BB2EA1C3FD03CBA5322BA43FE665A77B13F07114F9AB77F467CDB3FC225FB
-53C0ED589CD47B1070873F9DCD0B1ABA9D3453CAD296057862A87DA5DF486984
-B7208CFAD13296B972C67142790DACC9598E15CC41799ED00947A450D3003930
-27435466F2195E0AD9296227758FB993115DC8118F63807B7096564C5C7ABA83
-A5A4AE3A30FF0D655A7B71F3580E3E641A55687E4FB0CD74E3A88D803E4BD57A
-57D4C2BE58779F5E8A3640FD47AF9F5B5291A58D551C2C91D4BE7659C359D9EF
-085308A5D780EACCC90E46585D790B8C5B4FA4117D7C6D2E1B1B6712E7F65CB3
-B8887C069BD96066A90D81DDD882AD0347E8E615D349ED779BC2A2BF26D07F5B
-6920BB4B2F7AC7A9DD367658DAD5E33B5C37571F5FF69C20FD1885B4240F814F
-2D5FE32AB5F1969F441C87AB99D7159CD0941F6BA69BDC21CA4B839FCF5710F8
-D13DD028E6851584D2152F6FE1C949A9056FDD05C034201549D680254580C650
-96D6BF97A19065093CEF1F92E1386864D0704D4C150623543B598521DDB454F7
-0ECD34AFF9D000F8A910531679822CF958EDD9CED04AC62260D6F5B16CA72F10
-CADECE3C0C2361E120D410C22382643CB920363AC22FF4A32B593AAC38916CD3
-56B600A96D2BFBB94A419D15A388886643585733C540F5DBBACDDB4C2DDD4E37
-4CD253E00EBBA011D171FB628061F8F935855AA20E4A51DF5EB06369F09F112F
-9AD63942D681FF23F30E239424A3FEC87D5A234D5E4C76356C338FE38BA4940C
-4EB8E1A8EA8FB6077B48E819F915D2BB6447B9608BA5498F2FA6CF1030CB537C
-2A8B8562F59AA280573C08726A4D543D215B9E52EABD4E5C97CDB34C85DBD10D
-EB9E4E1C505E451409F05811BD971FC545C525451EC7E093674F77A464CBE3E2
-8090A60CC1A4628907014BADEB7B2C017F7269E93CC3A3D713B50233D7365B07
-5CF984372EEF47D5F56403EF4B1B20BBF27609578EE4FD99127AC9D5C0DBDE64
-BAB59AF8482E4842E5C15146687113B8D7E4594A47BE7D80256BA088DF245824
-2253BC038A8112C168FF455FD0E96D343AF6F1BABCBD223116C7D80E33A76A98
-C1AB44593C9A034744D9F62BD959FC1F9D10810DB9513B037B31D6BEA2B6A1A7
-1A247F252BD9FF6951006ABE402586C4362F8487C948CD50D6493D8FB2C1897B
-6F598102A586E643E92BAD3D14ABC549F7E8007A706CD428A1BA993D6848B9F8
-0DB27EAD2B49252988A4187C25FEB8565ADDCDF1026F824361722417FA7A9B99
-BFCD63D4136F0B8428F77C82631991BA555BC15B6DF8E3A8D0E8A3DB04CF099D
-E2AA92C143AE2BC907EC0EFC1FE4FDDC3538F7E757F5F57198CF6677E8AF40A7
-B5818C8DE25BAC8F8244135875BDEC62C9AE2C790D85EA7ADD0475A9EE35818D
-E48CFFAA949B0F55E771E096E7CEDEFA0BCC03FADAF6CDA67F27446486C68ED0
-6790F5629A6E899C92945276E9EA2B8C6C9E737999A7590BC8951DFE087E1386
-232E33A33BD27FE299947D2C033F29BE3BC6A1A47A47A0FBBEF96D37F162BDDF
-1A49989E09AAEABC835027644690D36460FCE9D0E99EF96BF015221C4EF97A76
-91231BA6461976A4D64E388AFFF972FED30A471FDF5C240253B32CEEFD1462D5
-FEBE9C2EBA62DB197B190B0C1083D696654C3B2C0AE105A686F00EA03E09CBCD
-A90AEEE190D1E438B66E9A0AB828111376197B8D482145420712FE638525158C
-B894DCB2988C2EEF94C1202800206C7061B84CCD2C3694A042C906612F1B4E77
-39FEE4F070DA95E6CF87931A95B49F5C14126E03592F913E4920450395B8114E
-83260C03C1C19A8EE5CAAF95CA8FB8D7D65A58B1CF4A027717B7B8618D640170
-02EB4559C7AA9224E36294E226B8CD080290CEEDD9F48BD465EC41409512ABA3
-13C58E5A591BDD83518648A6E1531C70B04B5B576D53926701E1E4571FBB3BF4
-E62260B741AEA9274CB325579C68EFC139869CC05340202CE2A851B6B7374B45
-50025308DBE3C858CCC61897C3DE778162E55A8533C8EB7EECCB9F1AB102D3B8
-C6F95B7B9C6D0BAB47159B1BD0F17782F5F8888ECBFD694538581ABE89D26736
-7CF1EEB83DB760883652DE3D9D1ABC2A9E71932D2C0EA9E30F9A429229A960FC
-57437CD9A44CD4F15C1BE82640DBD57758BDF27BA242CB923A517FE098FF4593
-1F9564B356E9034F67BF1F65B963F9AFED6B4D94D86C3376D6ABB2A5F5CB9040
-0C517690E3ADD2D16B251310C05F0AA365DA5D66CC43920C6566371E48E26BB7
-4F6ED2056239D509ECB4E1227F93FF87D7C2AB45516C40C25D4166BA76782E22
-2837416308299FAC4B74D365D69CB7F72DB5B7B7D91BCA57D4E43C7E8A33C17D
-3A633C8E866FA93EADB85D450E04498A98FCD4A9B492717783BA2A1207A1AEF7
-5CCCF8F541D1C4E2CBDD358B8CD67B19867C48B846AA8193EEFA925E555E7742
-3510E42191FAE8953DFC2285C66D4D5D3309B3A3C35116936089EBDD8F582604
-2D56413B3AA3B2992CC782F1EAC54DBDE43F79C5164FA77BB7C4AD6C78174F75
-5662E0F9830E42181557A7151E970E46D3154076167D3020F4F23057E1043056
-FF35BDA55F5D9A31197531847D3954F3FE048227232792A928EF2C7C8C5F256C
-6B27501C0F1AF75BF51A77D024FD3638245A4BEE4EF4686CEC13BFA59A56FA02
-CAEBB38154AEB021985E49D0F2F751DB0A69DE8F71B873AA3B7EF40EAC914FDA
-7A7E0DC8F8A4AB82608B3E70BDDFBDCFAFC3CD02C0BBE55F685D0F26C6889A22
-7E97AF5B687C01A1429BA247EC2861D53B814F816A655313EA5412F08FE58519
-862EA3D8D56DC6E75F31BDC86442142E3AD4C2730DBE79A931B82AE5687C3D47
-40315AB8B6E8872972CE1D470726331FF805D74D4153D6EA2E31E952B8D7B2BE
-A1F1B8D0DEF8B71E1B5F7A8C1D27B2D0074B8149BCFD7E7E0A23C7FC411AF56A
-161249FC0DBE70FC76DD3CFEF555AB84E41E8F58E6F6E83E14E0C81F3ACB206F
-9AC43FF4032210A659465D3A15F36E6789F8322CA7B29CF50F6346B916570D38
-FD4E6007A4509A6B8A44952F6272DF5E7B1729609CC713F4FB0AF00752F82F86
-5E8BB938C780F20A64CE353841CD971E6E3B67CE7548FF41D97CADBD6EB614DC
-EDE72612B6A02540029B3AD0980E4351E71BB497784393E6306AEF340B1E8DCB
-7416089E580FEA67FAA041E84C9470ED6AB462188A9DF2451FDEA168669A5278
-8C0257EDC91156FD6E27A5EDB0094D4F8E662C85D94659EF71698703E329656C
-6FF521E7E1039362C91AC0EE0D4C01582A299D9610E5219FBD54D3798BBFE04C
-C99958A258E34ACDDE6AEBE5E91A765603D902E5F758BF
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT9
-%!PS-AdobeFont-1.0: CMTT9 003.002
-%%Title: CMTT9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
-/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT9 def
-/FontBBox {-6 -233 542 698 }readonly def
-/UniqueID 5000831 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E6BABDA4215500A0
-42D1A3D0D02C0C98BB1D6ED0B7791274C38B038FC7921FF1FB8FAE7258C09259
-4B8E1BD9EDCEDE9ADAD9BD9598EEA9691589649A9A21539161E374075BEE3457
-689F308A4A7AC9F2FE4B301A6C36B0442FB92E3B002623493DC087800B5A0521
-0DB96A23175AC584DE166F59142779F26FEE9783E28DE49FC3A8D6583EE63FBA
-610DA773CA18ACE6F64A4867A1A7817120ABF9DE4D17782866E6CB6B65A9F6D8
-3667C8D3E61E5356E35343FDD4C6436DF73934470916CB5F0ECEA6BFF092E735
-C7C355B56189D1DD5715EC97E50145FFC17BB1497315A9585D713A7A6DFC7933
-995468EFD0F59E3C15865B87925A3F2930E20D5A35970E2C44F1629FA16E00EE
-EE21EFC50D49F5BC02300D0A7BB85E649CB4E2E828C8B1C5469463013E71D723
-2CB11BCBAC191AC751A2AF7FC228395CE9472DC1809052012AEC2CD66695DAF0
-4CA04234F0187F4116C93F59A7F1F8123DE87F111853B785A20CA8B49B3B0CEC
-B11AD345E1A11578D2EFEB0536D125237086CC8CD9F34A5137AC5DDFD8746014
-D74AAE8239B81ACF65F379CF2153B06A238A2D767F294CAE0D79228F0B7D45CE
-510AC9657A1776202FEF42F96D476E7DF407786AEA12DEA0013D3B4C5D0640F5
-BC5BB72C34066270399CE595827175B23B25072723BD24E07F6BCD9EF0175DEF
-93714BAA53960F81103CFB731CED4A267B53727BCA3C97B0BA5004055D4EF0EC
-F725658E53AC86E4061B489AD4154915C3981B3B703E1E2A8D390CCECCA99385
-45EBE35441B062D7D12DAB2B31569387187D74A4043FD71F1C6D352EAE0F6757
-4345FBFB6DB15CAE47CAC4BAE47AECAE5FF5EC19057DCEFA1B23F47364ABDF47
-088A7C6A2AE26B10459B6D41CB69182FD1472F326CE3A15B59255D1DE3B616D8
-9D1F12561038839781E657C896B8C58A32DF5AEA23732A0966D96C68C988ED7A
-09B7E2C8F9F3D0D56879764781566299A4EDD3588BDF70E3D924D25074F30988
-E35BDD827AE4D0B4A06F55A9976BF0DB3C0B1D09CD08E8CB168B50617691638C
-0EC1A791C228177D4FFB021EC3DF5082CA3487AD2EFC8DE9466A690ADDB4C52A
-FE2A6DB4CC275CD33D9136E735279FBB2008D59E667905EBB04326EC33C98B2C
-94744B7F540D86E90DED64572ECF1EAD3A58EC101642B245A9C7232DC8FB8741
-03F97883BB32FB955C22F878FA0FD114451A3B3859B0B5537AFAB73AEC7DB2BF
-409E1FB41D473714F6BEA73CB085139879FA31710E01915C2938C37BAD6D7D71
-45B897E00857D3931A489EAC7B42BCE4E65F73F67FE027CE482DC47598ABCB95
-39E98DA8ECA3E23F0799D5963ABA6E2984DEACBE7B46B40ADC6213E0F4D08971
-58F68C946C748E4B4217CBA2391BE2086C9758F4E32C9B6413E48D84D33A6E85
-84747029C0A9C9B92841D217A902BA8EB333999D62FDA9F82BFC8ED11F67988A
-0CAE42182E414A9766AFFF4B046A09D476F8E3F15A8C7829BEE982D8350BDF5F
-F215F2BBBF68D4B567BAB798B9604C79306C475926E9FEC0F07A99F43473C6FD
-B15AC29C3D07FEBAD1BAFF75AAF2FBE94F104F1DBF838044FAD94B661B06AECD
-D9AEBD02B60CA4546DD6B5B5C1A3833ED07845671CEFCA8955CE0DE5DB8FC93B
-3306683CBFB8E5B79A863DE78D455DE9D592043C2686F88A43140F8B9F3B553B
-7047420E93E753829F8D47AC7621CFE3626F271E31F0019CC02D0B57F67BB47D
-8CFB63E902EA3231C00EC66EEC0D30FE8394558BD3535C888C4CEFC6EB72E737
-712ADC6300162D5D79BEE0CA1F6E4127A0BC90656C01692F6D82C85550AFC97E
-C2693E379160FDB9636FA41AE9C75B7F6643B05971C6D67CE30971D590FC07B3
-E0B36B4D1C7F25110B5DA2130D574FA292B47322975A2BADBDB39AAE69BDDBDA
-A880F9AAB580117708C79204DFFDC08BF4A48919B5C22228845CE8C3109E93AC
-2479E523B8A1C12A6E541118F121DC6B4EAED83491A03192D5C3A2A45D1A2467
-757E7B377C635CF5CAE11A7CB49D49F3A1BB2286090B5F0E4F89869D1771D50C
-54B5C5E091E3048A2C194F0ED00DD64FB95BAC6FA9D61ECD093ED416DA3A4981
-DB07CFF17C4F55C62DF628EBFF06FAC3F3D3F91C30EBB34052BE1A08F5EDA4B9
-08977197950A282B84E21D43C64BE3AE4BCE22C70E7D392DE09D89B7F23351AD
-6AD37225C12BA79EC9951F5DA1E505DB26200190ADE0E549305B7530CB86EFD2
-A896F13A97E51754F70B609CB4511CEFC38BA579C071E9510A49982389980DC5
-336D6C4A2DB100DFEC4055C7AA9C55880F94FBEA9EB280BEF66CB8E1E38A359D
-E5AFB12B540CD599085ADDA7FC2C72E7C873015773FFEECA2C596B75BC39A3EB
-3C43FA2E53C0D7993042F3D652BCC483E48B7F6C94C3FF6D38E276086A6AE67A
-E5A571B9C72E0D7824E0BC2ADF51A393B9E334649F786EC1923C854382B89627
-1B9E701AE5A6C42E672B2C6A33C8BBCA8F69B9061E787D6B92183F20CF4C3903
-FF5417427B84798C82BE28D2C81624E3920CA61EC9EADB364B5A6E50E49A1A72
-A9A090A1FCD84814B8B2708AD787D2B5015DA1305874F58C5EB62F843685FCB6
-465FCA80176CAB2B2FE65E0A270BCE1E3DB97564BEDFAE5CA44395A8DF4505C0
-3E103CC3B914359B2870DA6CD30382EAE8949131CFE31E9E75C3E47A3834BB32
-CF183D4A8B9001710D0A11390C9DAD116196568591D38C2AF4ADD852F31494EF
-573462759A35415900360882739789D6B89ACEFA251C5ED90ED704DD7C3C80CA
-9F6CDED69537D201D520C99E69EEAD5D3C0EB84C166660B3C190166D93EDFE6D
-15BCB6DC5CDCA825E48D33845CC2FB15291AAB823F25CF8BB0A1EAED8BEC524D
-D9CA016027141FAC9D35B64FB9C224552F29EF6B32497254E319090E698FD8A5
-15491CDFE1B988C79A0E3B9D01E12FF084E9FA86CCAE02A3EE6F2917B61A2CC1
-64B8CAF309D1AB48A34227A7729DFF99CB6EC282E3FAEDD2673779AA7E4C1789
-D93FDC37FE95F087C5F88F53D30A2DA9C913BF205FC6BDD060A40184F4AAEB3C
-D080D63B89CA3DEFF310D09EF0A83F3914BD5B7932980ECE139EF0313C20B4C8
-576EE0FE3F28FAF4D3CE7CD0890BC824A85B8EF4636BDF1EF1BB519F93D36540
-ED09FAF93FD71992CA2CE2E83F5355162ECEB32AD218092F45D5A61A44E67135
-EF0453589CECDC6962D0E8DA7E7567603BAF50B2C8F1CA65EA5320984E7D69AC
-9A7D3D7F92565D79E8C9DD2D92CCA7DE9CD058545E9F98AA47904D70E1897099
-3C4C852B3BA131DDD348433C336BDF5FBDFB62120DDEAEB3255E3207B0C84A0A
-1ECF9EC869DB9BFA3693B03FCB27C5A5D3CDD62630DEDE91B4DD5B9784BF0BDD
-FC6EEC3FA7ACA9E15FAE47CDD9B7FCD2BF0EFA10716F08C0AF25FF67CB6F9598
-C607D2FCA452417D2C69DC808A9441A66492394C3450BD30632AE739EAD654BA
-4343459CA36B6D5B2C12C39495952F2EF93D82C73E33236785A79609E260C4E0
-CF3A3C950DE71DDC3939D42DB1CB1CA917CEAD56979A70F8F3B207C805319FA7
-3C000AE2B21D711A6D78C7BFB901334DC06F59EAB6D94B507734C27971F8458D
-D00193645AB92FB8FE163D5C51AE4F40BDB4F2C51691E76EE0636F071F37AAA9
-BA78BD12459CA499210EB0CE2F8BD317387797C33F5933AE7A6264DA06B4A6A6
-1188326147A16B205D1F965872DED7D8EDB3294FAD2FCDF0D423329E9CCF879D
-4E0B966D509F45527F7609DD09694D286F6FF7535EF8971B7DFBAF608A19D442
-C133207EB1152ABBD11C455D0977F66A9B73E51381D1CA4B66E87C0C7175A63D
-80C699A052F00C41DAEF42E7A40E07B1B14107AB0787E24E17C1462960E3C54C
-AE73BE4924464FB177EC62F116B2822842541543EFF7ABDDEE197D6BD8F8D4E6
-59175D8C5957550B70BE775AD52FFF6E7C00DA7CDC16E1DF7446BB5D8FD82647
-3E9F87D5EA365C82A2D991321ECB14A9E3AEADC5A56665DF7072D6DAE402BCB6
-14D92B17F9E063E4E9D8D239C91F5C7C0BCD2FBD936C9D4A0B57659420343B59
-B395BBD1AB5B6003F653699D57E7581F9813CC98D4F072FB78899D6DECC42D34
-F2787EDEA64058B46C4BFAA2BB96E9BE5CACE8D91E4C080ADFC0FA0D4A29C6B8
-54FEA9E11DBCF53D9CA40A21AE5076451EDAB3593E56B6D453DC8EAB8C78B588
-34D4C4F36861B5649BC1E9F3091E704BDA7613ED45C911DFECA74EEA05165191
-825F95A947CAF382FBAF01F3B8B041ACCDF39718D7DC5BA6CA12BB20EEE96439
-BF2E2628AA3BD2C91998E6247A690FCB0CC95F286F427345CC4F1115BA3A6E54
-4743355F2CC991CBDFF5725902C1F5A6DEFDC8638A26EA456C33C27773D6214F
-66536CD2E44FD253531732D5A8C44B336B1BB47B0477350EB8CF74889B93402E
-2356A9CAAFCA562315D8E0B3F42F08932CB87BA2499A875AFA08D11DA73B38AF
-F46D03B7F639A8D7BF88CF07FFF4E91716DCCE6E2CCAB60A64D5E40EFD8B336A
-1BFCC4CB04F49DE1FBDE7AA5B2092A6EDBD913D161A3271AB6411622D0E14416
-37F81E0102F5B0F2F9A2B27819E4BACD7C50E29D6291AE5B0973C657761545A6
-741729620EF2BF1046B3913399C10982EE5F4142CF461EA31042E432CC79A1A1
-39C607D22E45A6DEC008CB4BF6007CDE9DD5802B49A62C8E02A6D448B64177CC
-887AD71D171B99E7ABE2085B37D90B3BD8513995D9A57F53184DA474F6DB5E49
-B73E04CC214EA5398DF7D7541F94E623E8687B511640457A48A68E9D9D6584CD
-15B57CC044D8091C771D175F2EEDD411099BC8F7B4317DC503BB5E405AEEB526
-5E6E1B1F2705275D274E012A98F66075CEB90AFC648B964DDC0E9C4AE7B24CE1
-80B051022E5781A533A21DCFB97893847D685137EAD85BA708A7E118C72FA839
-A9E460B5D17365A0AF1F53A98319FB64A5819B087F554BC056C4BE44113A5404
-BEF759F890C1CA5E7AE156F4F8106FDB4F8DFCCC640976983EADB30976344048
-2A86D7B2AF4A01CA736B98D52ACE392AD4BECE7E61C710B08B66F01857CA460B
-B8376E257113E10F6DEDF14CE2A4E6A99ECBCD302C36CADB713D849EAE9EB598
-F29DC98531D793B79F83091F9B136809E006F34E423D528CC4309AFFB3EEB47B
-9A9DE4D5B25CE953345C326BCBE2B4912641780637783084D3D12693F8135483
-CBB0AC4EE0B5610D7CEB7DF205830BDB9BB404DC1B28FB0824CC187B26C19A91
-DA0025EC739BF3993700101D042DED86D67F5FB87912CFC51AA7DF53F2162D62
-6314A2CE13810D0B8D81F45771391A236422CFA0F35F7A0CDF14ACB2724AA57B
-7C2C28D53029B1146558610E0CFBBF72A85AB9BA308F846228F299F13F68E8F7
-D963B2EE9EF7D4C21690632B640BDDAD0556EFA4EFBF035F13377ABB5CBC280B
-9E0C12AACB153C93351E5BA95A7D149010E204950A59C7FC6581D9703468C1E9
-EFAE37E7E6ACB892B3F8D1248D9A4A72F642FECC5E0B25C15EEB921EDDE84D12
-0E524FE6133C4921FF4921242392C12FBE69744D53739F7E849C1B96C4020AB2
-1FF10DEA608F111749E2FBD8DBCB17F353DCB3075B4F4B8186963EFE95A76A10
-85AA5BB6DB4095291974221829A8E436680F4860E01C3843BE5BB3101D0869C0
-EFCE08D187BC04F58C7A450A59093680A0F09E8E3F12DF5223E7EAFEFA01978F
-D8354753A68022CC92C71F2CA732DADAA8A466D4AAE5999B0DC077715671F518
-E6277741F44AE798EE50DF44CCF71FCF8BC71F76374005FEBC4883C6EDA854B0
-88C0C2B476709AA809ECE41AE786DB1A32B3FBBCC14921673578D3514C8CA842
-E1FF90BE33F7B93ADF6BFB8B1AFBBD080783BEF056A6BFAEF676F7BF9F2DFCC8
-01D255A9F0391951210D60D4D4DCA93AA858B38C0D7B8FD740D5FC6F277C2A68
-54CC2DE1F40B6347201FCA2A0A91822708D820CE645C3E4E5A09FE25721AB33A
-97871ED448F38FC5A349D81F402B34461D840D5768BFC6849439AB6115104F78
-B87115B1DAE12542EA898F86ACE247709817850B067F537E6137196101D46DD2
-D842EA03EF4501E34074E8458E638ACC4EB349A7430AB035BEF2DD4CE00554F9
-18F9FE32A55AC1E7E50D64AAFDA278D77A7149C59DC5B1E3064A4B281A54C9CE
-A5EA94ABEAE4C6D5674C208ABC72563976487136AF2E21F835BEFD232D7F0D13
-1D19932367F51D5379934DA7F1635AC51EE5CEBFA63D4D32F018DEF13624EE62
-31DAE68A08DBE3B4FDAAFC75291C8C6CC7A657E3C7453C7D1461A36E88E633D5
-408253B673AD87A9FB2D0F56DF1305916D14D5DD62051E27BCE09CEE9A1F14AF
-1D7164BA5FB6E6EC8D38750F7E28BE330909F303ECDEE692E347DE13C8C2F82E
-29C8BE6EFD76546F362A12A1C2DC12389EA95ACB4DCBE95620F0C193EAD91B33
-BAAC5801AE827B9AB3FCE5D11D1D7854F8FA8A31670119CC0CA98628F801838B
-AAC7EF90AC5466BE69CE3E3CD9951A5EB9AC08014285422F6DA6F6E221BB30F8
-0042A11F2E4B765BB0D142AD52F4D85785EA71B2E1CE20728B9E9306CE93268D
-99B822A5AB5232EC7E26EE1160850AD3905864A01357F22722B6A54D4EBE58CE
-480EAD9FBF068EE965AC4B5FD2FA8CCB91ECFC6E90B9C49268CA0B0FDAD23ADC
-D5A74B41149BB08454054C451AD0DA4CCF8B60F2EBD061AA03A011D548B6B481
-FAB00AF9225BB5463F27FD67333FB51F8664536267E95CFAA0BE3BC1B8F889CB
-587A3A4FA2B45864F07E11372C9507A625C0030EF7030A0B4D931BCC48F6DD51
-A4D1F63FDC4B59C1CB18E6242E9F4B4B8AD9755B870FE60D640181FB7EB8120C
-C56F51DC8C47FCC6318C2145EDCBEFA7BC4253315BA67FD2B3D4AF6A9F3F229C
-AB75B592EADE15B1FB5FDBA1C0F786BD21A51506B7A2E42C2D086BA6F84D1B3D
-AC7531545F0B01346831FF36A52CAC1E390F99AEDC265B44B0FC9C581BBA6BE4
-48B723811EBCAEA5FEFAEA7E5B987F2C7B3E9A65D2D14A7B74F099401C57E367
-385352D0776D2A908F7A5A2E4D4160946C5591397877025C8C387CA413EFED56
-8B142E8341E349DB4DBA422A4FEE56A573972A0C66590175158E48850A9F7F38
-4B95726787B8F969FDBC97491CC81CABC976CD00A27D1DFCA7CF467A956C1C6C
-839817AEF8794B6151FAE9261119DD5DB787DC9D3B420FD325ED6599FACADE0C
-320D54C2E0D296537E22C1783670A9D9BECAEC63853EC2F05A990260DC189D63
-7CCC0BDDF2CF7585071ABAC14630666737041194D0777EA4292AE60BD7F7100E
-DB568C90F0D899EA006CA423CFFD6EC70A5D3D8AC43C747DBAD3B02219E47D8D
-DE030631F4678C357A58ECC52782B31B50CFD44EC33F41585E51B27E3997D33F
-461BEF897220AEC80007F13C5A1EE3A0430CA899047DF944831F8B010A7DE74A
-BFD26001472DC00CDC9F17CC435F61ADAD4E9AE062ED477FC621FDDF9242C449
-1BB3F77FDD1519A251B663A693D84B42BF0962F537757F38CE5C5D56B98AB10A
-3B70C8AE8D52DCAFCEC22E7B09D3C4EFDA1841C74CA975E4F8294F7BDC796500
-0ABE197ED3737A65F7BAE601C91DB3983EAE11DA3EA18ABBBA3650DC361C2E77
-EF9F97618B0C337A906FF39926D2B0B7883ABBA650816C4C6B34EEA836994EEA
-AFEDDE56E0099D0E09EB88EB093544B9BF4871200746A0409C475FC4232A38D8
-F3105B0FF44E4F132378DD12D9E796412FD0F9478322215E9F59E69396C35AC4
-097C4995B2C3BAB2DD04B1A7097DE16DFDD76465E79ADEEBA90489ADD0914EBA
-53E11A43ECB11D072C68D2131BE1C7C43CB9DD5FBA0A67BA43D6851AD4CD3BC7
-39AE2E22CCC183A56CEB71D4F9F578518E376426E42B6390426A8434B5A83E78
-77A5B9963BAECD5FA5521C2A29418764E4EC1A72462B04957F823E2817A7F8D0
-1512919889500024B1C42EC107E8B8533C0B314EE4E23313A4C1BDB009A2073F
-9BAB479A3F9DA76CCD65629CCEF78015ADBC2D0D124B3BB2D322FC4D209E417D
-84BC3C758B6AB64A01E25C9C7B71D741AF90A19A339F99A0BE9FC39622F04C6F
-737474CFEC19C890A657BCE192B9DCD8F273CDC5294875DD4507DC572551C934
-9C362FD595A429FDA2D815959461B0CC2A804C1142BD91C7567082699B8E274C
-6A22806D6C51B7DA809BE9F612EC537D4FF3122644AE0718BBDC6ADEFE7EDBCB
-8C8A76CBB280E70ADFE563C01CB9EB828ECFCD365825941C8B7E1B1401AF773E
-0D3E8A6F2D62624F8F5FD1EC3CC76254E4CCB4D8E4DF0D5E6DE10BC1FD8BC325
-05E773E0925B6838E0D7ACF12AE32E572F6642EA587806FD2805C9147B873194
-788B8162F3C20C915E4909B72D0A62D4A2B63B3825F96C42625DA10FC0E9ADCD
-77F50821EC58519CE7CC4889890D31409EE7A30EF8B1AD7AACD087311DCBFC74
-6ECDF13EB8BEEADA42A16B03184451B933228DFA12951899EAC83FC636198C10
-DA3CEB40E498C2F5AEB2A225D29717C258A838D21D8113299BF39433474D2EFA
-978AE1133A2296B33837F1AE3A4C81E1EE157C637F29FA9E6E4914ED2F46B4A9
-F85029EC516F42D051FBC5C4A8FFAE0D6BB06D5A8172B16CDAE87F9D23B9EB5F
-F4FFFCE2CBD625154C4E348250CAFBD420F2DC9C7DFE64103BC03CEF6DD16C53
-7EAA47881BA781A17B319DE0CC4F5088E392D49E976C33F11F57C299D7FBA35B
-7F6D2BCB2797AEB09C661D63898D87BAB6EFF9093B0E6412CCB571026026830B
-5BEAB05687062B60602BE480D3B190670BAB828FD15E2F89771705A99210F069
-60D68A5AD0EB58D2939A654B0BA7CAB5D3FA82FE4C171E14490D4E8F7A0E8373
-1D5F0FDBEA474AF743328DBAE1F95A6E408FD36AA43CBFB07F25D1BD44022749
-806720A41B4564996F7152E69E4370442D6C6615B3B5225948D069687142B1E3
-F1467325E47C1F3E3FA65C8DC67B44940B5CBA595EC2C239A43559451EE69905
-98C3C00F203CA3BB2BA7F1E9F24714C0C561A5E314A8E76BDDF910F828C477FF
-81A56736F7F20F054BF2F200D4B8C7FC57ECB6085099A9A27D37A42F16459F4A
-0846A01E490A0A6443728FC68ECE5A8561EC22BDDD69833220CF0EAB32BDFFEC
-5732E2EFE7946F61A5120FC5A823BF005FDF6585BF523551B6CDF239EB3A7D9F
-87515849644ED5DE7C6F5C05AC908DB5FDC54DC7F347F5B5B00A134F6963806B
-A31F386166D9338113180D477D7830D8096621E81A54B5ED8223C2C1C9829406
-87FC5E6E88156AB3BF3A4024A4F41894A627F7D6C9CF42697163CE85CC564FB3
-1D4FBE4CFE861E2FA8A0D7BE7B33B161E3AF3566C665ABD9BEACBA5EF340B647
-79F697B682C4751CEBBBE3345D300C249C45A03C614D6F0A6E247956E94D2D61
-262CC345F370A0C70D93AF686A510177DF60450D09EED4100FE2AF732332A3B7
-C3F7A2ECA8ECE0319D13DAECEB30FE0741D4D0F18FE60EA2FB471EEF5E8DA25C
-D873DFAB68B3EE72FAE5D2B420CEF2C1CF7DFBA5EF5DD2D659ECA22906835576
-9EC2C44150D8B577BE0D61D58FA4F80B932ACC2D98FB506708A4B9490ED4491D
-2E471137DDE042C9883DF12B34A6B4E484520DAA5674036DD39DD2AC6BDFB99E
-E98D80662C8912DCBDE35C45D0D3C98647E8450190C568B2483EC3842BA30056
-E6D0669C211DA5B188B533E41F80B686485F2BFCB1DCD67BAF82ADB6437E88EB
-9DA9DDCDB11B2F807921AC95C5CCDDF7EC1340A22C3D33D6313D9C4FA344E4DE
-3CD628445C0F923A41DE39929692ECCFE0704B7A3B369735A12F9E0D49CEFB3D
-FCF067B779B0039305143EEEF3DCFAB3F8BF04B1A9FFDD4FE0CF318CAA656B93
-A89D8BB4E92AE72C66884C8D69D25A5D74DFC157FCB14299BDA05A4576BDC33C
-15D1D9D5E2E171B8D94BEEC2CB75358920AD33FC92D5E6A30F8D6BBFDD4CB959
-B7DFEFA4A2DCBCFCA57E1E413F81F26FC3114E3936EC056F6DC48CF5A04557E7
-E65EDEE27B5A5DF50DA973718602CBA86F198F26D1EDB73D7E7C30F3D4A30E73
-C8888AD4885DB513072520558964D36F994CD8796495380CA19FE44572E16DFA
-7E84E732AA956A7269448AA04049849F3CA5B02BAAD4967620F4283C7E460C8A
-1FE1D603F5D1BBCC22106770234AB26BC535CAAD21C60E423BD4066B2FD6604D
-547CA9F7C3F0B3AE077A7F5CBB26F438F4EC806D6A0BE5E48353BAEAC8F0757F
-16FEEA7394F75C82D8A533F17AC49B8F2D499D95AB4A541CBDF760D356AE0B71
-5F526BBB6E2E452FD23981A4028CBB2FAD003A23655A68787E43AD3FB7B871FA
-2AFD3D6C9E852E4FA739EFA045FF7B461FF3F2693C855EFCFE242F278D3150F0
-E7E310FC88F4C6BC76E1CEA1259EA53C8BD6FB354E8A9D58885D16E825659C32
-6EC91C9572D4E13A2CB127D5BBBEE0D36F6082896FE9EC47CA1E40D144166743
-9B51B34A8A876BF1BF59C5EB6E64D0BD1E9C51FEFE961FD61DE175EBF827F064
-57F7CF4F93B1CB387493814EBBE726D05B4F9E7E146FC91A7114E462C272AE69
-CA8AFA90453BD1825A0190D1150139A8306EDC962BD8BF495E1A7E20E184C6D6
-E3A51A5ADA9D8077478BDBBBDC518B9B91BD952008F23D0231DCC97CA445AFAF
-AE9FCA8CE974D946496F6D93781DBCD977B87059684FE70A0D9B14809AEF2285
-30B435415C388FDF5F5278BD910BBFA88F4F67C300639B58D76C8F7E4B1D4098
-F76A62AB0F11BF4BB10AC7833C3604716C2F211C864E7396DE2ED749B1A7F9DE
-71CD9E2D37054EF935BEAECC27F7501229FFA879F22F379D9B21AEFF7228460E
-0615993CC75F5F105FBE8EE30DEEEF23FF89D32454D66FAB36ACDD4B2281CF5C
-1495E46583B3D348E0CB9CAB790BCF73DF33E9FDDF25BBE894522EAEFFACC17D
-512EC825C8865C8AC82BF2C490B7EBA5C8A7171AF06D1D03DE2F0C4FC5DDECB6
-4DA74157972E5DC8381D25DF80C08F139C748D244346FB5F0800F9618CDC774C
-AC643C73FF0974583C57A4FFFA6D0A7A8223492FC6C9487B8891023C2CFB3B8E
-BA72CA138DB5577EB31E1C476161142971E7A3E104C6663D1D39D941D6BB971D
-4063EFEF61890102A358C70E09FAA4F8BD8AB8D7C6B5124D2ADDBBC8F3288220
-83EAF4F167B0BCED20108AC5241E384878E4B6991D0795255369BA0D19E31268
-5F469239EA62DE7AAB7A4B357CC54EFE39963F1F2574A82B4506FB901A6346AB
-3D37F855A9692608E402AB193EBA075F5AD7E76B9976CC62E8FBFFC940968DA4
-333252A94D3131F64EF036C537E08EF24EC5DAC5FB4F33D4ECA7BD8FFB90062B
-E6EDE2CC2794501A5D7FEA93B51E9185DC6BE6107C0A427C392644D2E4681A99
-5594514969346FE5B2971163C271CF3C8D5BF4FFF6CA846CBAFA2DA201B1AD8F
-86E26AE489C725B265C4C85013C218850BA763F5579C85818A9E8BEB36715455
-8BFB416C95EFF976B549CE3A89DA213418E98EB0B3857F34CEA2FE62807FB18D
-BD7992BFCCE27F293EB3953B5F084A2DEEBF3A8E085DE320D7CA4B855C53A22C
-6A9474D5B4646E86F6EE6742C7FE29CCC42D92D3A927C3E63404B76B4ABB25BE
-9E4DAA935B21BCB21626C648BA24367610DEBF3727E0140B126463851ADB04F4
-C74BE0C7694D2032749C5116B6B7C22A9BD7BCE3ECF9558D2A9E35B6AF7C7D49
-E22AE6DE7DBF822C6D85FD2E31DDB27239CE3FF7C9BDA370596C69410487A976
-FE2F7FC396301BF531A6E42AE2BA59D950DE01EE1CE3519FC8F4207D717480B3
-B465410135FDC25BBB6BFD6C5608C0C79A1C9D870DE2F85F8E5803F97E6DB1E7
-B56F952F6CAB8F94EBD6B5258F031EB06CDEB927F570806E86B1855475975D83
-19DC623DDB4DBB59F45EF5948C574027EF92F8B8D3830FECB636E992184C1AE4
-8C097C217B4B59CEB763B6F59E098EB6D03F38B6FC0FD3023EA7DB8ADBF33DAB
-D042846F375C95AAF7659825EB1AC514253DAFC8DE7578ABD7C7C4D7E5A04990
-57E37060426E12581550885C378684C47C9F86DFBF3FE67F5136EB07A8324FEB
-F92D6FBE30E0C517030391A98B0AB9E6CE3116B0141331803D28A6E8F7C3F835
-A19B572BC1D62736CD0286290B221ACBCE94790620AABF96032E16EE0F7F55A5
-AE937375172E6466F11395891DD23FE500752141AACBEC16DB5749C7606A0FA3
-F907F32F78F37B8ADFF881B455A36FED2AF440DA7FFB1B8C310E762A56CE6070
-1C95CCAFA33C75A36EA05B3745C33375F6D83F65C5AD2413E107D79DB3DA2748
-4AA1778C00CAB588BFE6B3705EBBB00F5D381C0EDC77E87C1DD7BB440DCB0018
-3F096D2F9008F7A430637E2072689EF24B4F3A9731F1DFFAA40B9AA9E59D187F
-773B732CEC35F9BC4F96B102D930B61D569A7EA271D84CC7EDD681531A59645C
-7EC7B52E3A420780E8557B1A1F8AE1F31E620AA81ED8083D79E74D25878CFC1D
-C63319DE77555D3B2D4AE4C37BDEF132994BD670ECEC300710CF2C1620641CC7
-5AF14470429814CEE2DFC96AD2153AC5B0C54390B9DE605E8475015D11FD430B
-B1AD65E344E525089624424F8B56110E07939E1774AC3011DC8CF1F8FE413ACA
-468979904FB00F949BEB601B3B746146F2DAF8A4997CE92F4F3A192B9B122C35
-D4891CD818EA215DA78550D2BEA0FE68E888B4A15CE19BB634549CF35F926921
-258DA316557FACA055037306D049D88533D9FF1CA6C2BC3481ACCE716FDEAAD2
-D9B93C063CFB22474EB0A8E38BD78C77784C4052A9D8F9EFC97ECD58D0B4AEF9
-CADDF4D5FAE1663BFF260654814D1846C82E64B2511A6FED5F1CEA8A0B100083
-05F67C8271E2ECC85A1D0C1FCD8107B3EF76378C824528F0A2CB76FDBCC28595
-9D2A2B0D3A495D71522B0D82664094E90AB9B171F361AB23429AE3611103F863
-E2B2B79E3F18B7B4A8DC6A6AA58FC6E7A54CCD33A732FC1FA05A4854086A075F
-AD9864F0DF925334D348A7EA6AA33B2F6EA9A9D3A42E44537FB692DD7EA0E4C9
-B881EA2BB1682DF46C8A208FC32FE17BFC7D76E14840A4106CBFE9FDE9D6EFFF
-294761A5AFD92E811B4A0E3431FF2D3EB301AD6644FF07D71618682927832051
-E05049B45DC8F81B4B59406504CF223364FAD116C490944E9A8213E63D18FB1C
-C8BF9C22237C79D782347298B3156AA509E0DBDEF679902FF59E3B3D67BA96E4
-4DAFE348C859E5B6BA750ECFEDB06773B87E0240C7F94AEF81360DC7914BD01E
-997DCCFF30326F4F1C15C5E051E1CC4973F583A907BB7F8BAD3D91EB45688DFF
-27A3D2449A05A2821612654B6EF3080B998AA6DD5C4E0E5B1DE965B8959A6458
-C455D2208742C290DB46DE9CE50068E75BC9172ED818D11FD40D38F039ADCB7F
-0562680E08A0B54EF7F91536B65CBDBE54E4CE5C76EC9503046D102FCD583F92
-907940BC930A07CC7999FA339C17CC232B744931F5F57F3EF0E63A4687D94FFA
-67CB5731BB6F9D99CD0635E33CB76E9FD0A0ECA95152C4EB3583A737D3055D9F
-89171F48FBE8B397DED2DAE78C64A11A854A0E47B92AD8F9C1293A85D55A6716
-57629559EC8D2575039120A94AFFBD7B82C5D5395BA6B54515B97B3367350C2A
-EA69C9EAC9F1047F552FC29A5165301807ABB471CEE19025D4BD3B84A7FA3F32
-62CE925809263E4C6BAD6D3312706254B5955CD3709694E5DAD6B84C3E5E26A4
-BD7A93FCE1C51FC433E81CCA10D7928953550C77E6E0967B806E53EA624D89B6
-FFC41479013C8A35EFE1C90AECEEED1D7F849054DE628B56CB05E545FC0324F7
-10817CAD18F82018F30DB6D1BB4E94783B4893CDBB97E0E5051A2D1862CDC8EF
-C3F6D5FCB5E7A24EE5823DB72B296C95565C2261DF70211EFF7683DFABBB17C8
-B9A1CED73F705308A088109D2D653240E3D6A319699B1F5DD8D0DBDEC2AD37BF
-555A0E2E8EA5CD950DC4AC6A2E9F07DB6005BCADFA5856FE02DAA170334AFD84
-FD27C495A64AD9C65624AB2FCCBE54AB2861675AA0FCA92D5C32950536D41632
-FABD093F285686450DEDAB5071E2F6FE31FEDC1B21F522EDAEDD474F4D2FB50C
-E435D010AE17E31FC81AC78922B8294DABB1414396212BAC9FFCCB29B5A7FE98
-CFC70EB6011D2D56344A947D12B9A6903ACED763AD0364C4462F8DF7B51C789B
-26228B4A93785490D7C08D4775E625ADF4DE942FE170652356DBD6C66ED462D6
-2635DFBA2C2CF60D71C03CF79C69F7320BF8B0498919053D83C3F42890D0C87D
-AA148F54FF996C4A079B1CCFDFD6AEB0D417C8DAF4878E66B5A2856662B12BB7
-5226332999A61D02644B54B28F37EA43E60D363926B625180A88FDDBA3EDC071
-9024FC8288A33361C0DD06828CFBC14F2D3632F6AADA8F6871B0C521F22B0BA5
-AF900C3441BC32C1CE329B1D2517B3B3DC07A2DFCF9D2882079ECCFA923F1A5C
-262912EF7F1AD487BCC4D0868F0F5A382ECBDD504F429DA76FE9D901F3172031
-A829A803514432B82F582F78A55D08C8CCEF4C9BFD423439E8AF916B36D11D9E
-CCBE54896CAEA8D836E2C1ACAC4ACBCEE5B796DDF0076966731D9954D9328713
-E8E7B58BAC3F1ABB709CD7D78556E85DA214DEBB28C8C4EB170E9D657F2EDC7E
-675A27C4AAB27B2F18E41441EB828AFF2A3FCF3DA049F899670C9970A4F2ADBD
-516469A0AADBC5EDC10A13B1A62CA44F5424D1DD91881AA1B88B70D948AB7326
-29DD0144B44736C20B146B5FE8CB98FD02144A85F97E4F010A98299CCD13C3A3
-051D69ECB4CAC5211DC72D8AA4084C6BCF8B667F4FC54FBDED3F6B44D450E1D0
-173C0127B38AE4F0BCEBBFA308C521A6FB17834F02FE789CB665870016DB330D
-C1142CC54DFFCE4C88E25B591060FDCA0D257FD3528D0A46918B0D5FA4BAD691
-D99F1B4BB2FE18600B2BDA9CDE9D3FF3B2AF36942C20C68BA09A16A50D21C420
-66225E00D4DA958B0C0A804EF69E7420F5FF66BCA8F056DB3076EC1E5C3AE09E
-2CD2DEA4BDE5FE017F78D07BE0943F4A9528A8AC83BE179F8D9B101C5AD772AC
-CF7302F269E37D7FAE1BEC4B1AE9FB7D9C555653EE611534607CF90538997D8D
-0CC8206A3950E05CCAFABFD78783D6A8C7ADCB5F2E6A14ECB885238F96075A94
-74822D52E18F25C2A4F527FD435DA22436365FA9DF2182BF36E33D367DCCB9D4
-DA635E5ED24DB4BB45C40580633D39CD8379382A19EF00CFD0A3C39016BB0F3A
-F1EFC5457A2E526F8DB1DD1AB9F9D74DDE5323D712562E84DD5CBB8489681CD3
-1761A35F01B49D81E120493C2C2472C0B720CACBFE8074455EEF25B0F64EA2A7
-74400AA06D99D6887D4EE4E32D0767976A75E191451DF5AC6E9D3093BB19E9D7
-A083D0F28D11ADF51990AA996B604337BC63CEBF92924351CDD0F3C5C03EE114
-6A1FD79E176166A8E302EBF604200AC4B19DEBAA893A76279C9F14A5FCC44ED9
-666896CF089E093B94C05D1AF30F044A7BD27B4FFBC2558DA49DCB0027B14C4E
-D6BACD10F9B022011C1BF7AE29217BF213D3C166D7EE1D3904F070DF6F549DD1
-127DAF784672B1AEB3B0EC1AAD7E74560C0428C33F86CD4C533F8DA643120671
-A2DBEDFCD5EA82DAA3082DFFC0140408C0628750055FBD6C3ADFA039F8CFF897
-ACC7A2CB4CD0ED05BD7BEEBF9D323B549C735A9E9F75FDC8382E1CEE946754F0
-43989629B0B9947F7FC3134DD9DBA2925875F7E03D8EE6A05C58C6F003F184F4
-8EB6EA43D86D565F61A9122A388659DAE9E49470636FE6EF7333C55A2DADD52D
-6ACDD9AACAE48FEEA1CB17EF3FDCD6EA24A6E5CD43A89766FC4F3E261B8B4552
-C762FC62D447C5E9C7373E2893F903D67F271AE15013E7EC0A529EBC8E355FA8
-B9ABD6093DB263422B4A1DDFE8FBC0A958CF783237185B57264DB970936E18D4
-BAEB94C2DC2EC2137009F8B2C243184763A29953E5B218F7FE7FE77799381128
-AAAE198AFCC76285BFA602D677A628327DE27DD66A5C5DA03C9B508E119384C4
-5C1B3E8CB07D83D177E09DD05919067870973B90467D12B24339701A3731A2EF
-678258E07A2A0A0796AB6E99120F8FA28F532A8EF7CD8C60C57971D7A036760A
-AE4F492BD7AD28AEE46B4C7F5531C52767BC1D78B09B61B45EB8A89C5CCD4270
-DA8B8C99665F58864CCC24ABBBB88E4D70B0D40A6042186E2F1BE82A02875980
-64CF2C81D5FCE96D36C7498DB21CB0F0926778CCE3353835D4B40372B3ADEF9A
-3155CB94633C9CA2BD605CACB66C68625BFF5DEA2C4A68F30A37271230E3CD00
-98D8A2FF55A459A11207F73690C2B9C2CBA3B9A449E9E7F59AA9052D51707A82
-A7CC846FA6C179FDB7D2415320606102E3494C3E12CFDB555683E640C0EF0C4E
-7D03D2D8AF3CBB9EBFA9B99E8A6D93913938D2D7B16A7C84906F544E3C87C560
-8B870C1E7939C4EC3D806EC776610EA1DE1DE6A167527157C24CF40777F37511
-F36BE4DF00F8BD0C2BB9CB46DA2B3A4886126EC33A5A33F8AE159CB961C313A0
-D033350F7060255DEF30062AA81ACCD7BDD25472CD279907539D29074A41A522
-2EE8AF9A3965CD31BD483D1DA25AEA62B20FC2BC0FF2BCF3F56E60427E1D63CB
-06A88A05EB694D04D42370AA5B875AFBCFD91900B198CD73E2A014C07C128329
-9B174D505E3F345F1A85995A786452D5A2E995727F0A363DE71A8CBD2950C159
-4160998FA74536BF99E0A96165F9ABF1118C3516BFFF348C5C26AEB75A9B2F12
-41157210151F31A55DBB21EF02655010701D1F4ED89E1C0E94354F8C27FE5FCD
-D77DE0CBFB42689AC14871A0E87927C9843246A9752483D28F60021618904828
-395E248EBD72FA1C9695C0E950F836D0EF59BF92338C46BD08749D187E914362
-5C885B95712128F97F527F53A180078A6852921223C90137A889CCD7E9D9A99E
-931BB4FCF3409187464898A0DA94F823999BD67EE0D7E3D364302EC6101F6BCA
-5607B57D28956A0B0F81B65A225DC3F40F240C295123C79E4724E908936B8F80
-83F766861FC296E05953B96B675126BD27C6BD74D9601327B1F575BB6F1938F8
-A260037EFB8B14C673012B355F495299C61BECD4FC063733F238E0017FD76DA3
-672B857A648903246106C7A96DD14791AFC5450E5A186F9FBDBBA626EB7793C5
-696C68E681F9A8BBA900A5120339DBC987BC1853C8E9F91E68C1308ACF188ECA
-04BABEE3F1873A7AF5DC65C8F7DAAE37F0E054882A1CA593C8AC565409EC03A4
-AF9438670454DE5E9F453A989DB30215E9772C9812C3EB7392FD2ABEE14F618E
-65C7111A044A14D778D7C2CB22B74A5B05CFA8CD3C45A615C7649D4F4F0CAB08
-B9A2A2F9CA3E216EBF16C1EF44ED546BE5C40DF6EE70A9FF46C73D0646B80AB0
-2B4E04A1A12AC9C25E146648C8FB2FD216F4A02D909A7196EF1CA66F95A4AB8D
-F00F7DC52330E20AB5C63008D4BB30A566FCB012F2BBEB2AF6CCA96B87D2B221
-D590CE5BF4A83789F01C6F0CCE5CE87796C31C3318D3A63F10CE842DFC0D5375
-CFD5440101720A3F00A6BC25ACB177BD8E7ECDBF5F379E3536E94D27BCA956AD
-20B81AB1425B251F6367A8E1BE678F6A04461B01FDE2ACD7F78B83275DBBD988
-A8B58DD5AD9A5AEF75266D6B9ECD57C89EEDC576460BAC16C84E4644FB6C7F57
-4731A6E70BB982DE2C2200D76160FEAFD23D7490759EF93AAB14AD95ED6B768D
-A6216366CD757D9EC9134669385EB558D381160596FE2E6543FB13C6B9E939BD
-A150722BDF549D6D8F73DA812E8C8B722AAB10153F2D67892F9DB94C964220C7
-907B19296E67B547AA5471ED19F48A5422D3C375D3E70485E9BFCF4DDB6694AE
-E7D63B322685FBCA0A11C10FE4AF200BCAC0F43303CF760944E467DDAE488DEF
-6061F5F91257B4DB920FBFB920FC12DDEEECA145E982C1179BF2FDF561FEF95C
-262A419E15DE7D1A874D9F52CACC5B6859440055447D6095AFD3E8B1AC280C33
-0D2F27670DC6BAF5B8D062D62D4E37727EB0EED466019FAFFFB7A04F20B90DA9
-5B5899C968B4C420179119BD9501A931A8AACA36B6106606D680D5C606956D47
-5D6D270C6AAE44D20B6305F4617B3FA9B3AE2879B7BD26EB1079E6E69974B016
-F72F637F1885CEC8175E61BEAE62B7B9EE62CDCAD9E9DB754D83500C8C2FCEC8
-FF9A154D7443F3FE183C407BDA90D8972A5107CC3D03E2F22B0BEAA67EEF8FB2
-07ACB08F46C651FFA514D634443595C98D2A4B2062EB635530D9D214CD6B70E7
-570D04BFCE59923F03161CC417C483F8374135EA118CC6304D0C0ACD31FB79DA
-AE4BAB1BE42C63B5B84DB85ABE4B656398720D07FB4B9BE607464C9E94B4B3FE
-42F30D7D38A2F986B59BC6181614BC113D7BB7866C6BDA5306DBD4EEBC85E41F
-FD5EE9DC3A54F88FA55A0D0090B2899576C3C8B73DEDF9443A9D0D33AE2AD695
-6BC24E8C36116BE5AB71D1AB9AEAB0D27E90F20A2D2FC0839CD4C1199DF99CB0
-68EC99B0F585EC5EE49DDC3D6CFBC6463D15F426109F58B271E8E32F5B1D51AC
-C6D1C4F1BC53459F3116B5A0733C77BBC6F42E1B5C3836E6F3863A711EC12555
-28EF052EE30E47494D2BDB3AE860A50782341DFF03F715E4C1EB2480DBD59F4D
-9EA5863998890D11D0EF29399369D5818600E3AD75F1D529332C69B81D87CE71
-1C59961B7858BA00DB44012BBA9A9A517104D602E6FC055DD0E3913185B8E5F0
-6331E837562DDFD22C9C12C38659422C1C3F1F4EDD0A57A358DA8CC900483DC6
-9A4929593ECF043B348982440CD3E2F6FD17420217A2A03CCECB892FF9BEECA6
-7AFBA9F6D5A731540991FCF1A3C7EEFE61612C235ED2E159B556673D1DA6F148
-FC90C20471B3AED23A4BCE6FB94FF2BA6103428347410FC13BBB400269150EA7
-B7190EA2D7773E223BA4CC8A974E28503946BCC044D0F3B53D03946DF5515D5A
-4AAF8A467AEB4DBD215306516BEF3D43517CECB36668DC7D5F38A4E6AC975CE7
-36F9E6484F1037868DE32F68F43112175D20B79ACADDAD39AA081E35A6FCBC43
-A31C11D19C01C2C7EEE7FFD705D12B809A6DFD84C383AD1BBAD088961CDCAF12
-1425EC76E6725A94A0C60FBCE0D6CB6353894BACAE006BA20646236CCD66CA65
-2B924D80D5F54CC61A5347C24B5622B2CA30DF96EB7F62EA3458C0E8B43C7EB5
-A860BA845A827D23A80348E7FE9894F2A03A675B372C6E7FAF897A1A57F3FDEF
-BFBC4562A9DB9FFABB4E80DE07CFE1198632CC739EEB8A8E3B117DC7A0E63FE6
-BC170C1D397CF19C00C17325624C46598C646AB8FBC74A8529A6A307D1DFC824
-6F12C66492A9350BD4ED02EAB1838366C4ADD1132679EEBDEA294D3AC9C786EC
-27279F790F0D79DE79D9F1487D1FEC7799AF345401DF8AE4AC706FF5CC935444
-A75998A537367B297770BC16B60F56D83DB6CADF08C30767C84EA50C2717D8A6
-35FF36BD96BFD74CF5F45A1B69571D50069343DDD2CCB2B946AA5F689FFA5859
-F0063F50F8448E58617D61D91219C131EEB371F22D10125CDD6CB275FF0FB10B
-F03640816AC421B4CF5FCE47C4064669B28D24ACDEE4299DA2E11F2DE1EC9577
-314609C50D89E33CF9FB04E199A66F60E2AE4B78EAAC1C65C58FAB66985C534D
-CBC0BEECAF79E68D7E90D0F0F42ED384AE350FE03170F211D02D978641625F5C
-1C0C6AFE6AFBB7779F78FEAB08B543F959866EB9416592965A2E1FDC8EFCA853
-322203F17C007D2FF9093CBD678858079B5E1E0B550A03F42B62808A22B4C6BB
-E1463DBE1A4A2E4FCDB783E33D2AC9AEA3DCA3AFA808DAF0FAD2D5604E536A78
-779B025C6206B853FEE98FE3038963BF777FA5749377237E51BBD0BF4FCA2DB9
-50DE9C0D64604DFBBC71BF310E83A9C4F426ED87711DA9F5F9E20EBE0897EEF3
-5F83FCB697542CE03ED6FFF102CF7692E6590DB3BC1ACC2DEBB6FFBDF5A6056A
-74DD2610664CDCA2278A1DF1BE6DD1EA4B06910D920DA47D1CD4F4BFB3D4E82C
-4356D58722570175E3E885B02EF2BF59DAE90BEA4630465BA1545542FDAF131D
-802AE69D2D18044660D197A06B7D6F404D694B7804D1F788BB1E86A865726CBC
-248DCC4F6E2E9E73D514124543848DFAE184D2A4FD8FF22C42C4ACCF7C10430A
-6D3606B0113794D348E592AF55E30D063C9BD46EA5A3AE4EB8338D7ADF7D8B09
-362374B49A7C81A81C71C2368F784DCF759BFCFE50243F4A0155AEF8C1AA54E4
-0A3A4199F3EAE3B5264FB4570FEC2B3FBC5234DFD39315573A9851B2D8CAF8E7
-90F68ED334C8D3689B3BA844AF19EE014F7D4CB5D7CD71B9B873663093047DF4
-E8C152F7E9801D3736D3F8EBDAE010544A1130DA8EE3A174D36AD000A408C44D
-A9297FDB73713B593B61661F023E7AC437B0C56BBF1BFD4DB22C27E9A9030D6E
-FBF76AE51FF3DC5ED04001E27DDB36C579733D7270249A2366B7A1A1AF6E319B
-7C6CD949593ABF9CA4BB5FD9338787B9FE8EA19A9AD6BFB967BA41D6D52AE689
-B7CA3440966BA95BDAE86DE50CC7D023EAEA5992035C6019CB3CF862CF65ABE1
-A9B0271F1F0F98DEE2DAF6BFBB4FB84BB7B4328FE474818267704AD80A480E9D
-2533E26ED13B982A01D615A97DB5759D4AF18ECA3A291B54C94F3F242BC98C5A
-C00603C029A729DDA4B054054B16D330413787ADE727B40104DB94ACF5C68469
-BE534629DC8D9FD1D833FEF3F9909E5BA458765E09EBDDAE053DF7371DF83EEE
-390FD6D7DE1373322F6C1FBF9E938A795890E4EAC9D1302F3F82DB19EE4E120B
-8CCEC1F5BD53CAB211F88AD8A22D69A9C465617B326F51F3232847CB0B759B78
-5E367CE995ABABFB80D23609B802D08296EAFBCF51AECD1FF3718A984B34FB5D
-EBAF92E2A1A9E1F101293CF14BFB34C60D651B9E9741C88F3DC7A3036CDFAC1C
-289186C411477A44E532703B815B214D9A583E8D5DC6FCBB6F51ABDCFC282F40
-6E3F2BD95B4FE24BB68A81EA456950643B6033B4C7D069B4B3C18E86E72B273B
-7B00D0680B45FE9F608E52BAD732EDC1015824A05222DDF89D44A834B88FD51B
-DE13BB05430C244ED2ABE2B444762D8411B8F4539704C5F07DF938ACFBD45827
-26EE1C007BC4F601F6F42EAD369216F098E7B4E9CFE5C41F10F876CF02602D45
-1D059C85333353C0826B87CBD1CA3504FC7B24E0F5E1EA105EAE53678B432D61
-99EEF8463D2CEF4FC8F6BE9DC020310CF4F5B291D7BF246577109652D0568659
-2A95BC8E1AA63264CC8DB8949407488BB967471A183E631708FDB010851C951C
-696F3F4D5EE5E044D639F4E8D96C259D7CD44C0FF554EDBB17655DAECB33AC9E
-CD917217F9EFBCA85FF3625632CA14DD59B567895A10EDB5A6979B25B3C8D068
-6E96D693B792AC0F316D6C63F59C97070737F539412983F6ADD74079A17A9393
-0759050A46923D65B4A33518455B0D2CFF96643CD024354489DA155161567487
-52CB15F4D5B46B1249210852987B170F7A515218EB5F5EB21B7F40519A1D1A8E
-FF6B9160FF852C57156D892B3B39F8F2D91FC6E1802BC2698D97376C698839FF
-37FB18D69A2CBE33A72ABE03212A80871108E737595686DF56719C98574578F5
-783442822C1961B1EAC76E685C872329CCC03408F45051C79952DDB0FE3D00EA
-38EBBAEF8417C19A1A6B6BBF8FE69138F762FF7DC45C1C6F2C3FD7F9ACDEC294
-96740B33A467017A9B2CAD4AFBFAEE2FF9FC86409023DA039474C31E1B8CA386
-5FC1F27F787625AEFB40DB6945EFE02373C16179718BBDDCDABE3C5C626D69F7
-3E91FE8E78215FF797C634F00C3E0DEC040E32AB904F0023D930580E86F5024A
-8B42B585B9D39BB93803C998B7D984D607948D1C841B4C79C33CDF415196903A
-D22D265069C862812AB211F106872D1C12217FDF6B666F54B4E80EEF64FA214B
-7B59795FE856793CFBDEA11E1956A71DAA26A8B1AAAF713813F871C07E725D72
-CF8DE5DD902BAEC013AC202A454536F4DC82489FC7886C734803FDA78337AD6F
-BE55672CF4A5958D00915EBA78C1951C2B2EFB4039BD2E9732ABDCC965BA477B
-B6BDCF3EEA66014B12F99791F1D910923BF9C4551D90A53CCF3847B4365B5FF4
-5EAB4ECE63FA918072EF36ECDF551198F85C108A3D27BFC186D4DFC90C358B96
-69F64E80F047A2621A9D93B1E3F7E24ECCDA873DE112652B2C1ED60082381AE4
-23055447178D58A92081C75850AAEE0E8E3E0D140DA05087334438B21217E592
-BCCED5396ED5651606640FF72C1CCAD13214EB8971F0C5B960A8A5E8116A5541
-502909B82D1EA36FACCC26579B1C24FB384686920A3D1FCD6A90CBB8E774D4E0
-29A30D3F13DC278901614A8BE53D441AF50B9F2514C6089DF41522A177B56250
-49042EECA1D27344952B1D6135930F1CAA5C1EFC28243B8EAA1A99AF6324E9A8
-FB0D44BF2B4734A120878D4C58859FFAFD0BE5C5888711D51B244A86A33A0C22
-E94FF19219416927B62120680092A2D3666D8734A777339D65F0C696EA548B64
-79D701DF93702EE63C53C6823F09DF9FDB886A866202C8A51180DE718DDE2650
-09EB3CE223DC2514EA6C96CA2FE77BC84B616F8CEBBBD204F9E1E4891F35FFA4
-A0CFF2F0D92C3AC50D25A28558A7A9871E3E80475F19FA3AB8C3C8B4AD2A5858
-EA548DC93A959430E2969F874135F80B96C08EAE092E36832CCFCD31922164E5
-ECE2D47DC2D55FBB49D87043C4686B22298FC0EC94139724C47D77DCF6CB521B
-E4D9410A0CF170A123071FBF9A5FB19E173750CFB14EC26B68857E75CA655DC6
-C55DEEA2351BA36B440A245FC435C3506B1B10FB2280FA41512703FCAE88BD6A
-22FDA4479E26F6948ED6D621AA0D25C6833F552ADA7F9AE9F088E7DAC39F2333
-140B7C42528E9C8A073BD092AD188FCA5ED5CC274910E42616170F09E1936DAE
-9AC1B6A86534340283CDC569C22BC227E6D1563C20210C7FFC6ADC53CF298068
-4C361BC1CCB6DE2A5C9BF93E94B297EB04370B242CC2550EE28D295AC569D65C
-5F4E38738A18DB4DA870DD6EE4C8F210D3A427964E950F1D90A2B254950FCD9B
-3B811700961FF03C2B2A04722A621C2C17045DF11B38BA0BF4D8B3AFD0A0021E
-C24C63F6209F518703A3AAB8A8AFD18AE5DD66C5312B5563CBE879688506D2C8
-1F7EAB51B2AE18ECF16A4F0022D040E2508DD6FC77B537E7A6922665E72EC1A5
-21BACCBFE9E348AC02C649815694D361E8936760EBB2EB85BAC1614480BFBE24
-412568D83E6DE51BE956DC1EF204EE95C3B4C3798DA5A68D0EA477BC7679746F
-211CC984970E8DAC1883C826783102B665D70155177758DE296FA719CB7FE413
-E3AA214EE64C2B1251966B4445D2DEC1E66EE4CC31ED2FB617E001F295E3C5CC
-C65CB7D54C32FB076CC6D6DA97C22AC386A78745F521DD37BEC1079C15100539
-34C23F62A53572D0E0D11F57D83405DC88470A7798B8037C6374B7F021423D7B
-FDCD1B9BF28ADFAE698F0A4AF5771B847B2F47A5FF273612B7B795B0A780AD72
-7E95D3C5AA65C70AAA34EBE4946011655C21E282F1B348B890F4D085C0862389
-39EE6EC815079181E9D8A05402B7E00503A02B4F76C003AFA8176C6402DC7727
-24A8F2168A91BCDA25F5A694F8D5656735B2EBEAE718108D272764CD06119FC1
-B5AD6367B6846CCC6C928E51412F2089CBD7C1E79670F2B2C5BD0CDC786FB5CB
-9C15E6204374C5A48925EC98A63CA577660E46D5068DC2D2F6A9AD5B40D37691
-7067604F81F4D055F4B57BEA33438E0AD1C726FA8C73F0906D272F9AC0B821C6
-1708D611008C2C1B3CAC3FA754C991284344A3DD5542193FDC9441FE972E060E
-1D1FC98832B3F956FADB631FFF60868660F1C2A52B9D5395E83BA72A6D6FF1A1
-F28AF1B822EEFBA455D2C7C7ED8042EC40104D9BB6DABACC4A09928B7469766B
-B567783BA9369B1BAFD4813F75EF3BBA94B82302320718B2F3F34E14EBDDCF8B
-3801CE4C6D9110B9461F299015B92B8E02C2041F8A8C160596940FE767C25E42
-65E2F814F4217209F3C3406E38AFF88E68BDE7D276633EA211E51928A714A11B
-3EFB15F99F865E12A1A743AA617DC3B38D8BA6B708B06A60C5F8E9501342E7EC
-CD1D74294CCA1F616F27D37F0DF9338E0AEE737039981F23EA7812C457B30934
-4D5BA68EA7437CAD5F85419AA9F1C07A866011B5D5C0706DE92EB628D153F982
-AB261E6FD84CB243DC40669D053EABD7B620EE42DD3AE9496A6B5F1E98290F2B
-67DDAD26116C9A68F4239E23EB289BB6FD433B71302C15E581C45438ABEBDB3F
-0016C9E99170ACEBF52ADAA6A27D8FD1F88BD91302F819DF86236EF94034416C
-03D9795E5159A77B5E2C4A2214E7DDEC215E67D89463591A03EB5F7065285B40
-5CA61EAB1215BF5921FF3134235DBB85FE057BE8370FF32568183F6BF82AD805
-9185D9C15C4066B1BDC9925E40D737325BBA01D998C28D731E2F9FE5E277CE9B
-1E234394713426597DA9EFD3346F1DFC77D159C210A41CABB31E1EAF50B2D608
-6B557D262A75A3120FBD9CA972F441CE006AAE1CD03090E3C491BC98EDF869F4
-1CFA93D5D6087892FE4F08DBC8B277B00E63D08E756D877BF017F9E95F26A0F8
-F3E06D5F8D27DCE6CADA101388A1195B20820976AE37F403448EBA6CED4F59DD
-9DCEA5DFD0183C60CF19F44A4611593C290B817BA35C8A68BED890174D28A006
-3115F8303F836850676101CA2F4D32BF1677A36C980CD742398545047BE06428
-D147B4AE488B42538C0B8AE4AEA7CDE8B5F3417E2BB45187A3844A7D1460640F
-AFBEAA13A3F44778EB32FCC2E3D18E86F37DFB187F70FE3F69A90FC7DA6668E7
-4924A6A39D2E5447413A86139AC9A4ACCFB40B3380E8BF2B6B1FACDEBE1C3109
-A84B5EB60F079A77223059A1D1DD7E8D00B096E523B01BB3B764DC532E5DE4F9
-981A61233F4579B323CE1467CC2939E25CF496FF831BAE0C28D1B45EC9122032
-20DD77B37B36BCFFC70CA67EFF5C976FE56EF7E9E6243B6D47CEC36DD50B79EF
-7D0F29A77C5D2D4521D1D715FB80371B3837B4F796D6001B098077C27B363797
-2CF337A47358EBEB27C7B60E922384F6DC6FDB491CCE1A679DEC7B3F7698D862
-3AD68CCFC9C9F01602DC0074144C76C2609A08C774A9D32C12EB507A6AE4D5D7
-B2D7B0F6D5444F8FF3A768BBD5EFA4748AA8F41CCA6763531E8155B74AE2294C
-243EDB18C314618A5E30C7A48AC1E0339922A912546CDE18738808E610A86735
-B20982756AB8A0C11FA69DDC5020CCC07670DA94B3972BBCD658754D6C514C00
-A209B10EDCC273290A00F6E33D8BAB517BD47668B3D84C70F459FAFBFFAF6584
-E79B35D4E254D82304C0A7D3F7FA6C0479C8F89AC68D214CA1858EE20966EE1B
-DCBA3CA43C4356BF44A7EE68F87C0F367AE499DEC250382D7E73881C889E2B73
-5D867C0AD40182127307B401A5B700AF0B6DE3836298ECF16DAEF6B327F46ACB
-875FEC36E2AAB63514DB2A5A2311FBD7DC569131FCE049C6BEA2C12D07D273F8
-ED7C3EE96B5569198C06DF91662F0561A5C1234BBC5B367D6AE1B64150982CE7
-5459E1AEDF0CD2D90E30177DE343C9BEE95CC678ACA1B9B5950B4FFC857EC3B6
-1D0D51F8523E97FB12DD0B5B7A0F51DB5A5853A2C2A383DA3C0CF73A8CB95635
-ADE5B3F0B242F3D106F57D64E228AB23E349BCB6F46B9FF9FE61328BD2
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR9
-%!PS-AdobeFont-1.0: CMR9 003.002
-%%Title: CMR9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR9 known{/CMR9 findfont dup/UniqueID known{dup
-/UniqueID get 5000792 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR9 def
-/FontBBox {-39 -250 1036 750 }readonly def
-/UniqueID 5000792 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR9.) readonly def
-/FullName (CMR9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 61 /equal put
-dup 63 /question put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 124 /emdash put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9AF72336CC4AD340
-15A449513D5F74BFB9A68ABC471020464E3E6E33008238B123DEDE18557D712E
-ED5223722892A4DAC477120B8C9F3FE3FD334EACD3E8AABDC3C967C61FF003B4
-B10C56D6A490CE9594D57A2D431B9E5E10FE3D8832E227A7087611431ABCD029
-85F4865E17E17F8CFBD2CADC97E0A8820E3ACEC873F31464466A9545E967E53C
-DBDDB8478E69063FBB891566BAF88B7660A4405B16834761F041CCF7650AF955
-F9E853AA9F5F4382E1FE7D0C5BB4023818A2383F91249D48CE021250EC9EEB1D
-2835E18FB73026250B32A8849067D5E2258797C917F998F2D4121D96560C5FB5
-B5D3471216639A8671B6DFAC5E3554EC36D9A72518525A795590C74DD70DA3A7
-78BFC43E51D6F2BA52F17D4DD00D389D3983EC54912AFF73684A8A7E345537B7
-E62361C04A47859DA084BC72EA53512DC54132EB2EE671793603015652EAFDE3
-41C4B6B679BD60AEC5153EA0D2200CB1D097DAD770F5F31E6FC475A225995277
-B867B731D5401E2D02B85BA85158C80FF7E2BBCC42B98AC867E67D25DB656072
-55A0D32AB7AA483A5A9686CEA4E2B3031D90D84DB3E2DEE7706C91BA81CB8DAA
-700E5F61E07D6998C9552C81B66FD10A10033D49EF3BCB0FF22ED0A3737523C9
-8F851C61C4BF8A213BF6EC70C956AE48B5BD276CC0437C72BF6515B10739919A
-F00F6ADD2798CB211668842349171A5AEB0664D2C44397E55A4A9EBDF54A3EF4
-FBBCDAD9DAEF4B0CAEF7112FA828F2F8D9F633D37E5516AB5ECEA87342EF8DC4
-3A50548490F5BC9A8A1F98AC7AEAD9D913BFA10CA86D73AEB5BACC1FEEFDCC15
-B3655522CCA2C772E902FAB2A6FC153597D52763EB44AB7489FF061F7F58E8F2
-AEAAF4D17F36CBFC00D3C653F335D14240C87DB4339DA9D30A5BD1F502BC9013
-461B9DB2FBEEC01BB18990439A0E9CA6576BC9CF6B1A3DB9386C4A5D4AA6A5DC
-CFA45FB75F22E10ECB72565DB441A194902C91427B4F676E531C661F7A2C3C85
-CD534D1C89B6779B2EDC8E44667B992C20C70B663BFBF680A6CF4383EB7CA26C
-4D1F06B5EF4025BBE65795F1EDB5CCB97050872D6C07BC2974F905ACDB7A765F
-291365D6C8152153E7F017A25FB4476C60FD9EAF9A121633DBEAC32F62850223
-D6418566AB350F90F4B35F19598478F76B63E347D4C61E203D4DB8ECB9889181
-C387F4B663A502C638761D2782BB96EAC81A0108D7BD6938F67FEBB69218D115
-D8E89CFABCE15C6ACC7FEB983332A51A6A73CF4E341574F366713D7FB29956D9
-9BF238A87483D37E526A2EA2F101EDD34E34CB92730DCA7235AA0027189BE405
-2DAB4AA021A30C28B26C50808E1E965C02F6212EC7C72F5683339425A7739380
-A422E6191ED8453AF0CAAA424AE44DFA7CC5C2F6EAA8D73A5101D8E9517DBCFB
-2858D0E8ECB7DC430EF23A9E4428CB7DED8D035D6050251AC101A2D0E884721E
-2F21E573F948048BB8FF888911C508CC198BD750083B339500C426AFCD5634A6
-AAAC1C7E91249667B231BBFC64B4317192FE07FE9DA0DDB5E517D097AAE46577
-9555F29D45C67CDE9812CAD03F220B20519F2FF32DCA56A554D4296FE2D1F3FB
-B209B5270E0E695EA5A0EF1144957CE045881AEB8D05D72CE57F4D34617AED67
-0D3AF0472CD8D60933651626550366E300E72A9C89ACD475C2E2ED9BD44B472D
-9DAFE943F8E02A6DC38E447EED964624C37C3130E48211CA279BB6A0BD59466B
-42F3D89B5746F29E084E22CF58395AF0F29E55113F3A3F2F52CB3A6DF3D026D0
-C81754B8E2E4A15F6943BE9D0087D5166060734FD07C4C57D7C7D90E8C9C1F35
-623CEEE3ABAE75E1A18A1E3B50B7266BD2D8E812CFEB4A46B856885B185640D6
-B9C22179551002B94282F57FB433B7FF157D2F0D240836B72AF4A331668AE5D4
-E6B85415F4E8B9D2F9AF90FAFAA0A3866DF417CA5A31348CF9B41B8F5F4D2F97
-CCF7ADE851B5E2E2F6E319AAF5792EBB9DA2C6AA8B73D889F3CDAA42932CDA7D
-07A7E59183CD89520DDFC36E5D513BFD8AD0886046585F29B4D7F42CC0C27AA7
-53915AB1167D292FE91957E94A57FEE2D49C20C9070ECD736BDEE0F046E60350
-EA539DC298156A4E0D019E7D481FDDA6861E20678516AB80ABEC1F09B126BCB9
-52E8272A06BB6DD87ACFC423B4A4FC9A3DC8DCAEBB807C5F748F1FF8B17B8B88
-F426206BF1B7B7D239D26BC3CF0776C467A98CFBBCA5FB6145D5900137ED19DC
-D002F10704AA680EC753C22E29AAB15712EF22AF73D80820A1EEE953463D4EA3
-81FAF99518D4FD0F862A324FC44C4B9542A92C5B60CC983CC8F647CE5BDB4D6D
-B92B380E0E5F7208A9CD91FA9A469548162C761C1BA05AC9D60B766764D821B6
-B4E17F56CE455F06EA1EE2D38FE47581746C4C5FBA63AEE2B58E877D1A8FA83A
-31C972D53B64E92EEEA147426A92CFBF76FC614119C6E9C6476FD6A069C803BF
-E949FBE50B5AB1F1463F9747E8D353F7BBD991C4F90F920BC9407D8E24720293
-846D052214E60390C3CB926D38C83AF697425D80C2B4FC4706615B905516B733
-46ACA325CEA68FB21B2D17CF0B68BA4DF249368625CF83441EDBF2B86C957C1E
-44CD722BD2537CE84FBA07EC7AE15C840041B9F7F3040072E6084CD55B301C08
-A64A53BD4D3DC30DCAC6C152F316ABC59B8EE978793EBD568849DCC2A75A495A
-BC83470D503F8E389F54B4A4A31624E83C601B43AC1E52CB811FAA7CA6B644A5
-1AE0BFD4FC774C9C9DFC2769ABFA9C83F900BE2DD4010416053A1D4874E6ECF4
-D86E44B4CAB15D53E5630C144B0C15B58DAAD785BA298B1893D1B09BA5D40344
-6678FD2D17FF6674433C976D6DAC659175CED26139967C9B2B9CFFD78FC2570A
-E5142141C2888DBF2DC8503F9137CE7CB21A1EBC2D65BF33FCEFBC85C9CB736E
-24E8595CE934AB032CC70BD6A3B0F3BDBFBBE185512FDB7BE3D4A6620478453E
-75D044BF770B44C9741E31985E6DAF5A318D7BED12B02A4BCFE60D25EF12843D
-EFC9BAE2A3F2EFAD66D7858E83EB46BB09D2FF8AE9C43844A7001C86ED97AF51
-C511E3A89A1BE349FF5215D1A57843EF51456B9838133846F19BE79AAA5C1AB0
-5F400E5E8E7B0BF96EFCA3B8F0894BE589F2C9FB6C97BD16D38F0A237CD4F034
-099C41F85C7E2C7BEC8E02C4F327306A53B4B48B26A8926670CEEF96F6DF2281
-7C2DAD99EF8B81BBB777227C2475AE7400DC393D9C0445E925DB1E955950F7AE
-53E9AC4306794239346A419F7B5DF4168382EF5956B81F83BD4BB7635B3BCC84
-7D84D05AEDC02D14675D777CD19B08124001A4F4EA96990D96000C082A12F00F
-7FEF793A7FA69D56D3A38D012168C5458B667190AFE80E02C816CAFF0A71953C
-D80B085CD286027E2FDBB05452AA762FD7C813B2E19A79C74190E04E746C4933
-CE1E300CAF5DD53B08110509BDA404EF07FA1BC5224BF1205DE8E0C3276A13DD
-866675103B960C5F36644F96B4FAC16F5D6E91F74629B318FCCC8E8CB13EB76B
-B0B7B90718D913A52A04732EA3667674994A325A7973C601A7DDD50F658E0826
-ACB8E53D4914B0274AED98D7BC3B2B7F9D48A7ECC2F8ABEE05CF2C4F2B90360B
-B7DF779EAF3E103D1D83EDBE32DDA873768D8C37DC10A5354A94B4153049AD64
-FF3E0BB51AB91D7C0B4134D8731CD0270DAAF19BED9EAD800A14B65B68EEE89B
-40DD624111670DDC7C030DEFE0D1B96420E249332445C155BA96231C88E70643
-D526BDF3CA1E05FEE72CE2B881CFC01ED780C10E89F0828AD55FE29043BC56E8
-2750A6DD15AADD54492F6092618F4CC6A31766B17FC60766D18C307EFC9BB787
-39047DAD6B38419EFBA46B4E2C932F97451FE78AD75FA90DE409FC6DD46585D2
-1941F5ED47A8FBAEF5A917A240959E8D9F9917DEA3247D9CAE6BF7A88DB4C4A4
-F9F5A6DCE542420A032FF3392FE0F3357B51F884D6181583A554F75B1DF192E9
-253CC828FF06B0D992D5316435980B044BB191508C7C45CD90F797F88856424B
-14A5707459C50EDCF3E3D8D1667AAA83015405354CE744C66D9A5728F29E0085
-6DBF740717FA0799E3BCC4ED7841588B496A5E549B953A7FD288B4A045DB611E
-E3B2F35963FF18ACCB1C968BEEA2CBF52B3999AAF89A05320BB2E97F52CFE06B
-9F10E3A79865A3059A957F97972D80ADF678A36E2B586C101FC6AFA4D137C13E
-EE7102C9B8EF78CB057F8B7476F146E8FF5C897FD5503DD198128CFF7B5FB339
-FAD0AF0EA967F77B07B367A4AC9F668F8BED99B98E87FAC750EE045602D76C3F
-289FC9D97694C96AAC0AD1BD3FA94DF2CBCEA24B40F47B9B59E54EECEE7AC4C3
-A3F5D19160E4C1EA830D57FBE10D8D46AC5CA0260F22FAA45236F0F542BEA9C5
-5A88F878F68B36114E0573900C65E305462B22A3429A17C7A567694414DDDA46
-5F30542B8FD4F00F6C295B2E8D3A986B953D96822DB2ECD48E8BB1763434E652
-152EF3717F5E7FA10FF0B01D9F64E22C5DBD7254629658887BACEC0ABDE972EE
-67299FB84A05B3EFE22B6976DB4CCA384232DDAE38C31623A4E39EA2E82C1EA3
-BBB68F1A7DBF405DEC37CB7203A895C36A44BD2D63F45B3888AF91D37B510A59
-3C921BB44DA620892AD87B665F69F6FA510B071ECC403CB2BE2F54B3969C9E88
-713244BC97C1466DA8216DA7600C221E7E7EF5C789D2E12B36422023A03E11BF
-2790FD6062FE6BF62F5010A92F0A104B76E255A0975E04F6F20F760881BDA7F5
-D834D1D328B6EC19AA7D5E5678A84C74C82553DBE8BB5765E84F5A8789032143
-6020940B4B8D45FC3433D356E28C25F42D0C19F911213D85951B2B00D01B77BB
-A4C72E964F9D95422BEDE582A05CD52E03D28A996E6CC8FCD910CBAB728073F9
-F9FAEED5470FFA55930447C5BA816F826F983D53EC9941EC8364B3060FD74C95
-26D4F5CA753B574FD2FA4D1D333785241D8741B79E628BC852FDC35478C5ED9A
-C1BE88C5EE7302816E65C12B58EA16FEDD4672EB3E24B6EDAD5DCE263BA8A970
-350B651E5A9F3C281D85BC3F44EADD0D93402E36489BA5185E7D388974B0B700
-70575188BB610CCA20F081E2CBDA13DCC6F72567962ADB342E02C1E763B673C5
-F7384E24C6E1730A3A790D690A2103AEF88E0C1D4480DC9B25E5C8C9E1919C95
-F83320179B4C7C4A26D559BFB24D7D596FB73758C9990C451E77FCDDD17763B8
-9C30A9534E3CB6680D3D419D4B70B0B0A0D160FCCDE169714E373F65B7144CC2
-DB9A44E041211E1517D3148E65A2486CBE5E74E625261CCF65392FB4F3091473
-F9E8DF327D59A58558E5C9F7190DB577D5DC658F5E36258291C708B3D224653D
-064BB6079F91293FC733710893AD1C96169B30CBFE4E9D52E7EFAE4AFEE68FEF
-1AFD5E7E9DFCE8DE332B0FDC0514F9B3090AC85BBFB527FD8034DD33E9576325
-A8769AE09AF1BA792447DDD932B98FC9486B39E0B04DDB3EFB7A30DA0940B33E
-E27490E0E841E87B1C90E5248A91742ABEDC10F43A8AF0F9C5B4A4930B1AADAF
-01874B9AC3B8D0DBECCDA6CD7E96471FAA15CB7F8A599C5746327CE392224C3C
-40BD60AF97BCA6FF6FCAB2FEA114D7300B89E91C3BC92D5B3E2C83BB37992D8C
-72F661EFD0AA034C738C019DFB79BF40651A1A34BC1EB9F5AAF58F8B3DA32645
-24AFF8636486F08BC21533B5FF7391B0679A78DFDCB03DAF6BB7475A1D51DAC1
-EE4BE9B986655D1FDB6936445EF99B58B303FE79F11275EEA96A9F6808EA8775
-D873D1052FAC93769789C700F20EB2ED6D15676F6E563A769CA9298E463FC311
-83281483B1C953370D196727A6A0E66D32D9480AB1B6DCA77868C1A2D5DB6483
-5F31EB6B18EEFEF1CDC31533E69B0AFC6B30FC9912DC89BAAEEADC30BE14F448
-1A6B70D36A5D9B01799BEEA686066114910842D022EB464A9A1E8F0A5628BA69
-AA9A1925CCADD44703BC67A89F3B48E4680726DC4360274185CF3C8AB747A8FC
-4B928AD62B092EFE48B01E33ED756DB696171FDB775396BBA138E056F71EDAE3
-7A1E4CC272B8418114B0E81DE0BC43DB3C133167344488820A92DF10FFA26FB9
-65FCA2C87D302E956DE6B4FE145145440C83DB43A68F8B29A592B127BDF49063
-B7F11E155CD4CAE305525BEA56B7C412A6260426407BD892A3F2B444AC3421E6
-FB6E6425EB5C3053C5644666B80405530FA0012B54557327C98E0F4F064099A6
-4ACAAFC1870359C1B6FBE7606BB8A26026AE20C212210449905E628AF1B20490
-8CE908B7EF3E3DB551C85AEB0F7FEB6A8D215B97998E5DD9C7CCFB2A9402B8B6
-1770D4023777D4B45A73F471355353412C51D4CE71FAD1E0AFBD87B5F86307F3
-10D0B94F1194EFFB64AD5DA54A4200490F609CA8B912E149F8217ABB1E9EBB3B
-C4470E7365CF5E1E761AA1945044B225BD53D142F6588C50E0644740F7DD55E4
-8F73201E5354A8BC78339211AFC4935F44701FBA043AAC4BA4698E9D7700029A
-C79F992F62627C91EB855F64C4B251718FDA71EDAF082A0C7B00550949D617A0
-7071FB14F05620CCF2180941341D8E60FC88823438FD728A4042AFA8B853107F
-852F631518B61B234565291B5D5B89DA818DEE3AE3B68A2869DFA63255CC882C
-3B16BBA08FCE3632E57FF7A07F857A1F0FDCADAB39D77960BD827CCC8661A997
-648BF5BEBC0FD2286C2A112A8DEB9CCB6330A049170D5D68EEEEA011D3EF3EBD
-855236B9380087CBBB6BE24191F728B7EAC5B50F7A547AA0989B7C7D3437DBCE
-1669341264E290646F2C8C5A3ACAAC7CB63DC692FAAE13E9B40E8BD39FE16A0C
-1660CE66872D061056C04DDDC265C024BEF8B7E3C3AEE76FE5C9702002C28BE0
-B180295EE00E567FA2E5CD1638226D24A7C732E1BD8103B476EF5702768689C7
-D4FCD47F2AB94A2B1FBAE6ABF87B09E7713C773FB65CA83F7318035B332B9F99
-24A2C8897527021321D003AAD7C273E4BFA2710B9BB26C2CFD3D9A5D7ED1096C
-552D50028AE2476FCD6D12A5D0A897521313ED1A3A8456A70C16EAA50A3E6733
-6DC89FEC56AB54A579EF264377A103939D5EE00A90B4F2206D0023AF9491FBE0
-800C6540FC945199E20E945F46CEEA2E885F6800B9DF042BCEF4291A4B1A62C8
-6A7ACFF872B25FA3AE69E0093F3D0FF13A3313430C06F1AF94D500431566F659
-E8C859A5F80F5BD2E85C8E32603D3745628E8FE6FBC50FA68F9C3811A2BEFEA4
-5852CAE2AE5AAD3230ED050593BAD0A9581EB7B327C6916B8FC348F4C23E6FA2
-00FA28AAACCB3091C1D83F7BB88672A53A2EA3B8C7C24374E400C57F0F01019F
-E52D5C47F389D4C9AF126F4080F9AB8D1C8F470932BBECCEC72A9796F6E965A4
-82057DDB43D68298A00880D4C2E2496F26F015FD83C5549215753459310339B7
-6B2961EEEE74DA31FEC8E2BDDA42D4080A32372AC372524BDDA580EF6634ACE3
-128C69D04D890DCA337212B109585C665AA83EFE47D5BABC2627A86EAD11BF7D
-744176652C7F9497785A7A06A994ED8414BBE8B26E74D48CB83FA24AAFBDD507
-84A90195EA3D77BCE8C2BEDDD1DC52E8164DF15D65B916EBDF3A8A76849653DF
-AE3CAF9561AF3B705F75B9E5DFD6758DB65A2FD54683759912E0D0035CFBCD86
-5D22CE175F9E50FA2301ADBCFAAB2B89B8917307766C4D228198F718DBA1B2E4
-BBB59748043483206B2C87D3A6A95880E47C868308F390EBB8A2F7925D14E782
-6F40A532E02978A494F370A732947755C8CC6FDD9F7092778849B9887820EF5F
-67871FAD992447F76CF16F85D0A04140B7A29CE125D733D197D58FD4186D335B
-DBD88456EC1A698AFBEE2418D715F0A4CFADC0E9D88F83AF8B6CA0AF8A510C59
-E63798EB43CAD793E287BF3CAD7E8CAE1E9BB5F52171A78D4463B995CF637964
-5825941C8B7E1B1408619FCA686B5792D720974ED9249ECE9FE8FCC567D66582
-903C00361D3E72B158C3AD92707D0FA8D6ACE4E66AFD3916267CE37DAD4D1373
-D818CE3F6952EAB0E1C9F7328D9A2C4EC787117853336A14E258D14211E2100A
-636C28C34EF07F0E59BABCD25E48D57FC896D57DFFCF445C5F8015B05CBC1E06
-3BBCEB0ED5F63317937B6E3D5ED2A177CAAC366A85E33B1D60649626A1EAC051
-CAF959945AC0B31D21C930C20A2C4EB6B7D7B2A078E2140075279B962D6D0A0E
-E253AC638B9D0E758FCD57D9685EE33312C1A0A5CF1762F57C0C7236EF014B54
-7DB1B8C3CE37A262AD69A31F5A1E4C2BCF7C4310523B30CCA645B8DA15419438
-C2D541657DC32658E7F14C18F6048F3DFBBE365542B2411B2B72CF35172C6264
-534AC64D3DEB13D303AF97D51A071EC797D611DC571CD4A5E4B308CFF0F78CF2
-8A475ED04DCCE94CB6A54B5D27A8719A0B094E42D3B5FA1D967E96405E690437
-6F9F1F155B7FA0873D8AF3D270825B0EF286176436B0B820176667500E587821
-56ED77373459669911695E73E63BF4D510C4E7701979B23EF39FD99184A9408D
-68E3D41F7F57F05CEF384408644F205FF751E5D6FBE61E3F311D919EECDB4F31
-F756461AD5DA5910521533282982BFCF345E03E778E246B3B724F052F2CA575F
-D9D3E3D30AC17A26B475E05C704BD74D1D01F18E577035FF3493BD361587071A
-62AE7E7856AB6CE1CD62027F264003D6D0D8CF0A0E9A67B967631C38774FB945
-4F35D4CE5740A20005104FBD57BC27C9B28224B9F789380FF871E93EE227D21B
-DCCED5A4D2401A80CE2039C330B944E16C267512E5FC8BF69E20EAC84CF9F3EB
-D2A418A308FB565EB37574A94AA0157967D94B4FE179C3E93DD73B6963AB8C83
-75E2F6F888A597A15E15532D8937C7984B649081CF715E63468CBDB9952CCD0A
-CEEA511B20D45B45113A2E5082DF602CB867B7C7E9DB51A552E0F9CE684A2652
-C19C8D31C9300F072F8D71719570AFBA639D1147E1A3B46543835C4DCBDF7DDA
-FA75120048E1367FA203AA6E4831D3A3DC42C9107CA031420E8DF65638A7D125
-34AA2B79D24A7E25421A64637FCCC45EFF6D04D76978B921AAF1655BBE955588
-9640D412B13C7EB74C45961043BD8C7908E99EE8F3037AD9069C323AD2E125A0
-C17B009F8F8DB00AC086FE44E509A5DC24D41FDD14A825A1F4ECF45A6CEC4624
-68AD8967FFD38FC8A07B02F98A4DFC922DB32E7198E73357DD97C145DCE68EC9
-9F57AD5A160126361C13C06F62B14633CC36D69F10C4B2044F899A2BED950A3A
-5BEB5E7E07F01202FCB8C40051AC9164AC8D954DEAA0442B8BE35BBC5C643E53
-E9B1AF632927D846EDE3A9BF589E24299F2301B6CE330ADFA834DE6C2AD36777
-339DC7C736FFABE2F5FF571BBD073076A6CF4D381DA932CBD3B1529F2BA54DE7
-5318035ED2A2B09FD39AAEF2D7B20C8D384D01E56DC80159C4BE7DA471A403B0
-42E5248E72FABDF76070C5CD62D4B1FF8BCE405D59DCB1FFBD0AD41ADC94580B
-A90462277B0301738DFF45F036DC9F77752A8927CDB49129507B72F9A0D00463
-1192A0049DFD674C2F061C6A4784D911FBD832005A82335648F6C91723788C3E
-0C322EFE02904D82B43C8C46CF4CFEC637F4C37E87EDDF17841268988151A630
-A914A4FCF918B0D589B3F75137A34062145027DB020897E28D2FA5B948AD22F7
-58F1159EA22572E7FF0CF648981BB0F88D34689739E8B6F1A3C9DA8C4C2BB126
-16D47962B8E11C2723B9E38AA1A50D1D6D582C7A94DFE4E6AC501CFB942952C5
-F2D2A7573C801E2D7291DDCA1442DF3AC58F66632695B5C8D55531EE1919B016
-7E8FC73068422A68FB75C4ACD70BB2C1CA74B90B7D317932882AE82292FA3D13
-C1A2F418EF47ACD12550E39E435E3795C7FA7DA34920FDB29E73D10DA44A7CD2
-DA1A584529DB4BD7D1EEB8100D89C6572096263B3CA1714E766617162BC80F73
-6AD316123626A4A71A91B1655E53AB42EBE44E0E3B0BCE82E88055AA369CFEBD
-34B6934E988A2EB41DB5D64C69F0AC2375F42536B540B88E551DC4A3348F9E29
-73D3AB9DD006BC0ACBF3400DB12EF6F04FCBF9E5E6A3CE6F947299953B8BB51E
-36BD9CA66743BF03069A03EE43E4C93F79EE76B68F6328A6F2B316FB29634CAD
-38F0B9C8B1F4A73AB259EEE0DFB88088BC958D3986BF189636A149E5982DDBC4
-2030BCF24415368AD3B90413CBB3CD307D4A5F24E61DD2C25E40726C736602AF
-9D374A8DD159E7DA62264EF8FC01A1575337185C57AD8385A94A66466F6CD071
-7210190DFBAF701EB977A746E220B0AE0C48C77D665363FA8156E2F3298B3006
-3C8F2E8A74B365795F72741BEF1C215BB3F41BDACF4B2D094D0B4149A5E09E72
-04ECCFD4FD2A2EE813B63DA42D9B952E5B496442714EF0EE4F9F1687F434B00E
-267CFF0651F978A098A3B251194F5651AEC589B7FA3A939A0EC79722683BB28E
-20AE7ECB82DE00088F893875207E935CF4233C26B6B0AA3CE75C62F0629A2930
-ADDD62094F9179A64528ECD6892BFD2B0D73AF178529675BA045A8D89AC58BDA
-F657E52E14FA08397ACDAAAE8D21A2923BE8435D26789DB9E0C386293108AE35
-794B7EEC017AC15ACE8DDBC115620F3E3C4F8A6AE71021241BA8098C99C47966
-FD5976C58562D08E81180B1107340038AE071F4FCF20A955BE54A523E402311B
-4344E3858944A9E35D7DF82B374648D3CA865669D4261E3AC31D77C477F6CA9A
-CFDE6A4476116D19F4A0E76DC95BD8940EF1700AF88491729D3209B40F9214DD
-078812ADAFF74C9C6E4D75E72469DCD99061E16225389AFE5EDC8F036EB18242
-94CBFAF923C23418AE37AE7965E8D6ACB36563FF3AD6E5C441E16A6B4F7B1B01
-013DF5930070EC3CA0134137F613D420ABB03B15EEA759665F2DFCCE0EC272D7
-C116220397F4882288A2DFED1047B362267157232F2C25DD43675CE032A22D19
-DA10E44469044FE474ED9CDFE588B9B3A9395E976EB82D52BBA4F24FE7E47782
-43C215C2EA72D7FE11F48B2AE7C9A97B702E131D45F7F1F94D70FCB5E0EC446B
-4246F61A3EE34EA36F794917DF467E68643D444D547EB58FDA9E6A4A948B3E27
-8769413718CDC3BCA88676C48B2F96396455983026F9E703AFCDA9014EBFC9D6
-85CC25254BEBDA84486A83D72AB3DF1E44D41405ED785EAA97EDC9D68CEA7E94
-66B1A762739A60A3FBAC21C746774BFA04546C9A5A1E22AF50299F4AFBD6F7F8
-C0782DE53F0D83CFBA13158F6F74F079E0EE617BB0D3AC4EEC6562E45600B036
-875576ADE37302617FCF8B086039FD1D508F3A0359FACAE29EC3AB55B1BA2488
-F2DCD6440E740C6601EA8EC7C27E50401185588AC6E68A1EDAFBF21E02488607
-C83877D7ABE37717745A3D25999F2CCB69428A3023472C1E1BB70A64C323125E
-C0F50D6B18B3876F643F75B75B943216BD2C02D70DC8EF1BD2712575C00261FC
-B061D0BB1E22A48C02EF78682F7825D90E303BB2F933B339E56C52DFEF554439
-96CC166D80328493CA6C3F1D7A1565E2B4C9D85D71227B328825CC131F067BE8
-2B7AAC39D3BD3B12C22EEE3DB0354FF8026E5A0FACFB3673DB2A270B972E393F
-68858E350C3834E261154B871156E6C682246E1143FA9EC9583055D63486C281
-46829B4314B84F582D6850E0ECBBB9D2CEA10A3106D1407315A03673FCFDCC7B
-686CEECE69964B582FE48A07F4917473275FF4CCE297343FA9CC25E55AB9E1F1
-2BB5165E94AA49B2C3653A32E8470720779FA76ECAC6D936E35E1700C976F37A
-A9B247C9526A2220593C81DBC08856CAD5F8FCFA5E7845E6CB8299C310A40F14
-4F4A10AE72BB806CC386928AC4BB3A3401B65FF1CA6D3B3B36E991505EBEF5C9
-620ADE578A169736CB01FC7C052DAB93245C5221D3BE0F17589F206A00BFA55A
-14A5BF05BB0323BEE13597E0ECC86ECE0989D2C440EC3EE872D181A673E56EB2
-7D91FF6D99CF21AA25498EFE19A9CCBD09457C08BE617123E2178EF4C4C1C0CE
-C31D9982959B71D04B3BC5288EAEE27CFB2FD864CCD022A6CC1DE1E6FA72DDED
-EE65B7464559D37614E5A455B09B6B9629D6742DE4CD1DE41A2D06C412EB5E26
-4EEB6DC44849AE4C232435E1A6D2317F6C908427E97A450587596B6AFCC8C3D0
-E8F4933D8EEB2F8FAF697768CFE7493BA3C422E2D1D873B600EFB8231422F490
-39674CD8447FDC8F5F364B44E246439FDA7F40D98DDE104CE6F3DF1DA7D147D6
-41D88D40E19013BFFF464A38D860DD8C75DA803FB4FD75130AC3F72155EC255B
-8537FC8C068B5A7D8ADDF896E9B4119B6051D30585258116C09FC3377782400B
-D07FAE005574E29FC5FFC7CA71A581F72C6D4F321C67B501102FE97AFEF8C4BE
-0A9E3A8D4B66D6F8520985E8EE5E4AFBFB9628BDA7D19A6EF51A2D2889A56CE6
-B50E743575A80FF2F81FB2FF69A48327C2973D57CB81DDB683A206E4741BDFA9
-BC70BDA4EFDFD2C9E89F11210CD12D75BB5420D3466CE309812DBD8C2DA1BFBB
-4678F0A9D32A053B3275A20939DFA47CA6C77B72A6CED83918A20D042116964A
-E100C331C0A0E7709FCC84DE4EC00AC7926ECA58BFC1A7439502065A98F0D188
-DF1F52B00A275B6701CB446C430A7243755E95271230C2DD24791A2C83FDC0C6
-0AA87DACEB2E4CEFC52813A4B509F18225F798928DBDA46F8212A1833FACDF3D
-7258A8242D22782B9C4DC3226A18060367727B0FB5653CEF3DD27B0A3C05B11F
-BAE16EBBD13E64E9C3AB9C818D094DFC0936E8F3F41C44EC663FC2836AC1882E
-5EBA1442BB94160931260F1541CEE7A1F608173F06DB8F3E78A045EAEDC611DE
-24279612DA5AE02B45CBA2EF3A562CBC29AEF64A30179875D01634787A52C89C
-6583BB6A7EA9E667C8A386A9840D872A600A71A73C6C9FEAE12A3BA73A11C0FB
-ADB0E8A861A3228BDE7FADF6E1AF78A524852DD6601EEEA2181CA386D6883B44
-3598A13D96F3886C0510D286434B19C801F3405A89795C741DAAB4B25EF7E9D8
-70CE6EBBA525ADC638A8A1A85E0D31C0763BFC36ABCBBA27155DE15C5EF5502A
-62ABE8FF7FD6758DFBF28734229760461746BD0A86AACFEC7C2D827A757ABC79
-A32D12DFD9019E9279349A587E16A9010B95470EAC6829782F2F2350C25340D5
-F3C2CE6D834EEA1C5B6562449143EBF9E9900C52F8F31CCD2C242E57DCFE3ACC
-23980D65EB25973DA2BAE8CD44874DDF78BFC228F2A14F05354FA66B40B5F364
-70DD9C45292B62BCD66B1B8C0C801F8773BAEE0C1EAA133CFC6DA8B8A5085567
-4B0421E68DFE3CFB4349C9709AC4F0F792212F632B33A727CFCCCF049060B6A2
-5197E2F050EEAF53B1769F2F11D541E456DD9735C68A35800981E97B92EC01DF
-84B5B0AFA9A96D3518E5AD0341B87479C140D580111BBEDC279D1648E37E34B0
-20BDB7359C59C2F8BBCC5F170AF47B6661102BB2F99BABC6E860A5F8464FB741
-6283E89833D2A48B87B1AF330AD15E60C97F92F47CAD57294AB13E45AE24E793
-2B71F86146BCB865085A30FDC4344740281A3632B78AFF2D0148E3BF3A6B977F
-13C6193CF0362579BF51291730F662187DFAD01FB92CE6EDF5B9BF3E35BE95F3
-F4F4B6B70552CEA8C4CE3D4C77FAFF599A61627724AC6DFF7D1E4CA771A7D875
-44B00F8FAD9E2113037CB24ACF41FC01C8784D94769A5F43343E89F67D1B69C3
-C8ED993165C845990D8CEBAFC7E26FA5DAD20CCC26DB5D487DF14A7DE1CAF47E
-A0834D476288B079BE03ECEDD0697A79F9470E5C8C72803ADF7B576D62A82088
-91B467BAFF031F065E6A270660997C7B3C4FE3201899A1C9B34730EBF06EAE4E
-08755B281D1286CBF39F82AC0504D2104C6B73608413B83693865E37BF1FA1CB
-BBD9D49C78157DB0556935A71E5B29B048E9E63EF0CE3F6566F548C72AF5E3CB
-12B1CDADF8691F651EEF756FDE49A10F9678E8371E7870ADB43B8165119D9A2D
-27C097C11132B172EBCF8E6DE3D31570474FEC42E8B2A729251865E9FCBAEA53
-617D71733502CE72932E15744C2F4ABFBE163480163422D6F9CC1216DC28C3CD
-FB7FFCE961F804F2D13083A41EB396080D2CA01AACDC6466513C30196C51B5D8
-0C1CDE5E5891128E857580326A350F952DD6F84A906BDA033C43C0DC619A995F
-21CF94B5020297280F2E4C9F1FC29E60BE94F8E657B12F10CBE26DD90BF36DB6
-82870DB64357FAD43E9C75DFD61823682879A7BD49275B652A90132F110A63E9
-4F8572E22551DBD1D5F31B8E86D61A549FB075ECDEC615224B4D05E7353D167E
-02383B4716F4E84106C6486E509FC3045CD09E8AE858DC15F0AE52D5493507BC
-6F12C3040C02C3525EC92449B75A09DA52CFCD11D60A574F6D3B162958C44CAF
-6FB6D8D6869C05335CCCD28D71D70643A4331CD6844F3C4F9E934CE4260F2B69
-9F4A60BAADC0680EE74B92E546B8202658F82623FDED7C65A48DAE101ACFCAA1
-1FABF5229AD9B6240C9CD007263A8AB4AEDD5AF75F1D6704D73F003E6628597B
-2AFAC6A1DA92B9388E62C102264BD3CEC0BEF8FD2D5C62FD2575B1AE6271F7CF
-06E329557C3617E2BD91CA5598F9D125BEB5D9DD5EC46FDE34667992B412B08F
-7C0A1FCD3D6B802A59140F4597B824B624AA36EC7E258C17CCDBBC3ABA94A870
-F4AEDD7DCBEBB98B7EAE5682E1BDEC7F9A47530FC4DBAC8615145F48A177A62E
-4D2193C0337CD9FAC2ED81B2DE1F45FDA84738BE165AD508AFDE31CA7796F666
-F10BA9ACB795ECBCF3F54F6B97D56985AF03A05BE433C7A7F80EBC5D051B825E
-C014E3F75809BDC0C4398EA1E6785487381E77090921D875017D9A0B39F59EC8
-928528FA3F018EB047BC56AB1F48DFEB7E8E5ACA7A97D23FD8EB7B714C1DECDF
-14C97142446AA38616EE30FFF0CCCB107B5427FE275C06080CEAD6779719742E
-9D4EB158B86D9DC236B1524EE0AD9A0598A918ACD3BABBDF6D4852EF2F7EC891
-018AA9CE64425F9B862A2A986DB4975CEFA212D354525DF410C9183E5F70C838
-F67953C6A6848D7DAAA46F05A812FD3CC4E7D3F68B2CBC37DE6B8DE3C737295D
-C33BE495E159277362E33C8611F47CB11E9B1329A8580B069A5D7849A7122F85
-BF646139025AF19CE3D2D086E32341B3CD9BD3B36F0D1E984A25F99CEE3B7324
-D03D2FC6E76217F94C2406857C71FA6A945D08DA12C884A772FB6F236584AF24
-937BE3A843E708025AA2BC0DE2AB3AA0D7F08CE193CE65755B2D52BA0795A78F
-7CE158D45C1E15CD54FB14E5CEAD550AD94549BC214C9C6FE718DECD23CF04E9
-1A5B1DDB345B0E1A25D138B29357C11E9783475391C876D281D0F2A4050C5DDF
-5FF96E05F48DA66351EF4D01B49C59C627200DFC747BC723B49BDA45A6519578
-CD28E983C45D3A67535044B027BBA654FEA2D4EF218161A16EF0EF4C8A77836D
-072BCDA7CA60F33E10607D12494D14C98DAF9C3E208B2A9F228DDF20DA07917A
-BC64AE55654BA862E9ADF44A978A00204A327B77BBC7545475900D359626D355
-6417A9063FD7FE903BB98CB62DD74D673F58FACA11B0157385D1B9A5DFCEE37E
-205A67080EBD269EF2F72F1A6F1EE5AB97E074E36AFF1C3E2E09D346407EE737
-DED1BC4D75CB5031ECC3211D6190B017C540DF1D78C0CFFDA70CCDF2F1156F6E
-7AFFFF330050099F95D584C11CF6B295A6B85D43DB0B518FE290DE857361DA25
-E167B9D1569621A60A7A4AAB1346662619024CD15FD2899563BDFF8BE9C9B745
-07AE898333351B9FB6B1DF969A3C074531420D222720A52C901EA7A38A76E411
-A0BD9C2BAE8D43CCEEA3E7AEF8AD8B2BADB9D0B4AE0A415A2279967CED32D38B
-A6F27C0EE3803100AFA3BD6D2E35B644F41C59F1DB29C008A39484A7549C0E80
-7A24D93708131DA258AA90683DF9BA5FBF77ADAD22FF83BD86F7BAE64D1FB520
-EE61BE71361F45B0161C864E7CFBB303E39AB7AB1E787F6D8D5A4A057273EADF
-58EAFC471257BFF74B6EAD39D847F036D5928BFA9349D87F8B9971483BEFBE50
-066B148FBEE06ED2362A35A7A8B7A6966BE53EC3D0D3C372D0D204067C43913D
-0A4D2F299C28BDA3F1E7EF50D699E9CB6C8F34111336BAB4E963C62F6687DD87
-5B4EDD8B6B71CDFE7C15D614F15EA3854FE91ABC799AEA32AE7649C0949207CE
-2620819D357491E79DA07E503FC7DCB264BAE187AB6BD5D9DCEE5AD7C013DDD5
-A8A7E62E0324AF629EA01C4E99F09502E8BAC0994C10444EFA751A3A9B54CE41
-CAD9BD68309C93A34FC2B0B7CEE979BC1FE112F5400EF399DEDAE58E033E407F
-143A778B16E21B897C279DA4C8B07E7B36FCF7FF6AC283FDF904AA5A1324BAB7
-4213B7967E4C315BF078B6D2D81404DB3FE6D52C1025C4A38C90EE9A380C1B8D
-ADEEB85E1C755EFDFE800ABDE9042F897FD83D9D963137B7954ED04323244913
-5EDCE436A3B8939E482A0F562075D821FECA676D74C92B8EED0CBFCBD22B7868
-E67362686ABBC13CFDFBA5342EC872467F909139D27C370AEF4FA3E4F81C71D1
-C407BB592D48E8423AB31CD950FA5911F563BA3A05742C6241F96EBFC148FA7E
-8491F782BBFBB28FCC6A03B23719FFB1468706F6A19189B38BC1A61C1A997EE5
-9038AFA8ABB08AF5756CDB14FBE4EA7BCE60DD510830CA43AC5EC2BEB4C097B2
-B018092974D5CF81BEE55F04613DFAAB82090921651FC6B1A28130E290F2639E
-2345174126264F5AD8F5763107D5C5E9C3FD6BAA52180ADDCC14A2C09767B8F9
-753DDBED90599469C931799F56349DEA72501F80CADC1627BAD4610F2F0E3D69
-5F35460055C9F26A8F52C815F29523CF727D4B011776C7A572D2336E23C9B769
-3E325B1ABF74784B9A78F78DF3E26BE16F3FFB53D1E71B99D76197CD737AAE66
-D44D8BB4FC3CECE4999B6C9EA3F807768A7BC84495E459497610A85419B7D3AA
-46EF0CE79AAFB3967FF097BA2AFA09812E0874A0841B55681B64F617602C4FE5
-05A5D4DF9938F43B64236F22B8286ABF5A4CA0AD266ABEA722CEBC3E34F59C21
-0BDFB6B3DCFC453DEFA99DF60F244393EF167A860A5FF07D77BA04F8A82E5739
-7CEF739256968AEFDC97301B125A0104B2DFAD1598724E906A5B8F9973C35423
-78FAA9F1C8571E2EB185C280A02C284D8A36BA929B684CF655CD3FB419A47CD8
-B31801EAF30248B5012882BC80C410346EBF858167EC388B9ED6C7F785F7A729
-D3EEADD41E9006A427568885EC6A79394CF4F4EF5A84962CCBE7FF115EE41C57
-0A53FE6C68E44E01F0575A85402C4D8524C46416DDCE71E44F850948E4A57486
-F7B42634778607F4078A79E7477B2FBF8EB2BFC4AA4125C61F942901407F50C0
-83EE9C868FE94A1E499E4BF568618A4AC8FDD7FDB58FE191E096BB7B94575AC0
-DC099E2CB64528EC4F91F836BBADDE81CFE93DF06F0056652622F23B4F3088E7
-E69183E8BD1ED8CCE698FB3F995F1B587513CA1076BDC46B6E8D8062E3992B99
-AEBB3965D47FC95F5B441F11C437F7324CF6A10147328276481DA5EA13816471
-3EBE857A9EE5366243A76DE56A5C4B50CE7890F8077A63309554462D5206D971
-E875537A3CA78441E7B7FDCE6187AD7F6527D09ABC070ECD173E3BF174F39DA3
-3F7BA81FDFD91747F0473299E75EE0422B2E86D675AC44089E6EC28D0BAE6CD9
-083D3720572AAAB15FEF7E9380D098E33D4E5AE9B11A52DFE40724C342F16A54
-F7EF051418F6A24E91B03B75420846F63D36865EFACE3B644CD6821A83A7681C
-4F776513F4F1C141EAC2158DB36F511EB282EC646594E2E08B7211295D85174A
-67906F771BFDFD74E8302D7FBC717882F5FF5E4DBB21DD22328A5975B79F7A89
-D1A455A9EB07C209BCCAD4AE76566D1194867AE47151D0E6FE015F665C1E6A8A
-35E570097E93528612817AAFFAEDF22D45666AB7236190650692AAF92619256E
-DEBADDBDC8B7ECF7630B1A4195352DB0FD94BF0901B909FD32A287BC52FA90B5
-513B83D8FA33093593F72BB6A16570756BB7EFC47CFD09BB1F56ADF158A6BEC8
-2BDCF97171E8A4E3058EED8A103B7CD2E251DCC26DA6632138A8AFDA875654D8
-77D406B32975631CD7AB75BAD49CE36E00DBDF981FF902CEC0AC3D17EBA55636
-E77910B5CB3CA0416A9CB72F2B490FA34F94B290959295B7E8D938E9B0BAD46E
-73846D7B5D86D902BE668578D9A73198B742EB4BD9DAF4EC0B6661F474EA6F02
-0487B6C51671D69C2106B9E7838E5FD46D4DDBEB626F79A3E81217D501815B54
-BCE814A04FD97F2DDE5DB3CB03187EF897EE774AEF7DDCDF7740F50332CCE65F
-A9D0626E71AA45FFEC48ECDA0FF9D69D469E398A3AABCAE6F27FC2E65F2DD651
-025A5BF9F57DB8EAEC3BCEF7AB5A857EBA5AAA4EA496A48E034E3BD56571F419
-47A1DC36BEB28813738FE46CB19936AB7891AE94333D518F8C81E0D82045D2A5
-D3A15CCE9644FDC79A5DE59D65180A21FF3F1B1EEEB8569106AECDCF07B0AE17
-CE94ACD64C6DEE0CFF3C7FBE3BAE11006885C186E0F9A15A73F998BAEB502521
-673BF2D95812CF6B1C0812450D88E2EF8D731F6A9C07AFEB5EB9384DAB335EC5
-5137EA6540CDDF63286E6A5B9F039549F490AB5F0CB6D4235457CBC0B5B6F1C6
-5D1D08051E59D267FBADC5C81A47994F251AB9ACFF05414F683C5837D660BC65
-823D51D593EC4A37DE0A6D1423F8A9A45D52158B9C048D714FDE22828F2A5807
-8CF9460BDAAEDC40198F637BA688DFB2A150DBCFBFE9AA55A989F06AAC58A018
-C38B1D98CE73DB77D4C9560A59C5C9BF27A1CE599422DE6D8D167842491BCE19
-86215220A520D9483DBE5B05959EAF33B215DDC18C4876F1054748A56BF2FCA3
-7B6C5F99B55CB7BE5F1226B99F9A23C5747A2A29430E7633A286A4787D050CA9
-8880C2B18BB237EE29E96826BECFFE97B6E0BC657F5A2147D0F477B62D5773AA
-1A99491994F5F20C37DC66A698C70685294E74FCDB78BD2BDAD55CD799A01B9B
-383743518AF1BF4BBFDE1F2C8602E71BD9F87E89C6E8B22188C4D8EED681A6FE
-B673C8F8E2EC31443F77531B54D239774C31E8BC9DE45C2055E91D8512AFF5DC
-D714B05BF25F4C9ABBC2392AF510025341463BE2EA6A06BBAC2AF03EA787B309
-85F1BBE3912CCCE9ABDBD035AAB295C3C49FF90478AF68B646B5B219332CE703
-569CD2AA1A6C73F216492256DED022B3A830DB3E6A4A95E740D2EA14392A9AFD
-F5B8A7C0BB56E8AB683E6CCD34180586EC4F90C518C4C5D0A02F3915A9A20116
-6FD211D526AF727B21A20AC38E656C34CB2DBEBEB8EFD5831F038058EF927345
-1E5014A07E8B752652D520C33180106305B79FF78D01A1C3703BB77B3C0F775E
-02A0EF0B4AC7B6D2645F8EA27F257EAD9D488AE5AB766CC294A1CC7EB678ACC9
-1B24D29E457F7CE0E9F4593BBC3DECED948E33A07300EF488390377CE442FC14
-B929E6A6ACEA029E85EBCDB11FF679FC0638D271E92A1174004ED702EFF50A3B
-D6A865E216AB5D56501B16C9FF3DA606D06779CF9936B5022A03DDD65548D5C7
-9E78A7BE4D5A5953F827B89841C0A13201744380BCFBB63EAE33B6E76164AF84
-62A0342DC937C3FEE447294C67F28AFA106E6693A5284A6AE421695B66E984FE
-73243C5565F4F63B37C6024E4DCF67F78124467A47E867CCBA730A12D9949801
-276B69419D78D5965A200C94B18B43207DFEB6A408A080947F32B3434C7B5CCA
-60EE51A9076870B25022853A170022A5294588C245F31BAE99193CE338FA15A2
-F7D953D6053A63944677628EA027893F39978697FED5AADF52127FC23A9E6026
-5FB62E4744CBA109CF8DCDF7F4E24148EA8CA16C27A13379F3B9244334FB4757
-2E767922A116ED023DE82D937DBC712F0DDF99DF90118EB3737814D243A21493
-B71DCAC3E4B3C641E1B4EAD5E58CF8102B09B0CAFD3031F7C064B0B618148995
-60F74CA645A0D4247CCF76090CAF2D8BB6E1FEC5736F1013A6E7F29098457277
-9163B4AB4754EC56087D1A0853A512114AEA875918E811AE171A86AFDF1D92BD
-E8E68E04BB29A01158189787AF577E806B60F9CDDE855AB63C7ACAFEF37B7F13
-008CF87D5C9A5D9E8B42A1A101013BB7CDEEE98ABC43DA8F2407F76643AA47CC
-4BC25A5A7E65167BAF0F029EEE4256FAEB07A7212731064062EA3A3B883830D2
-D6968B2831F81B4946ED6B95B23FAE93A25C983FA179A4245A1B6487CC868B5F
-3D166C13AD06FE041626D2EA5C0D4EB5C3DA6B22ACFDFFB30D9F77F2FEBAB30D
-F03BCEFAE7BD5B5DB0280D1D7857E28994F1996F4C24FD2DBF687415FF393B6D
-D6A117C175019DCD7062C3823903980506A9F59B68A20EF59C880A962D0289F8
-544651A203AD1971436473AA8B47008F8749AA0FBA243796B319063EBE28E8B3
-BDDC489E060760F0F90910F30F1AD3CC4196CF7A26123D20309E8713B435E762
-BB12BE34185D82338D34FB58AA8ADE16FB9EA3B006C6424B4B43B740BBAFDC3B
-B8053C38272A4FEE00DAE5ECC18E337FB7DC927858302D88B6AFF4C368162C9E
-2012E3B7511E91E52D82B17F6AEF19A6CBF2489871AB157F0467AD09D777EE40
-198147EBA2BA6C6C95060C331965F8A3DFDD1E4B49CBD39D80DF754DE950184B
-13553DDF80583C9E6A18906234AEC9ABCE202391275D03E1C6D6AAAE7A0208A1
-E5FBEDF97873B7A73AF47CAF100820EDE443935CCE89FC58FBCD507C6FD283CA
-E86C1E51FBE8CE6CBC5E56A9F36BFFF4D5470B3904B0F0EDD9CF4A405A5395DC
-646C062531075B010C9AD6F289FE92933392EBD16525D11980C64DD2686DCAD9
-BDB6EA6CE08D598349BEFAFD6E00EA48DBFA9181C4DD7841499C3A84A8D2670A
-986C3F779E169C6728EBC3082AABE7A9E8D9AFFE49AF6D9A2A4740CA74302251
-6C9DCF6F3DDF607B081F881A7C05BDD4C051863C6F15A7EFC8CEF9DB3BDF415D
-BE9DAB5A5817156AEA27D15DBB3C9FA6C81F703E506774ECF611DEBBFABA2E66
-87ABD2DC4E4D65030A8145E26B7800CF15297AB71AF8576EE12F28AD4747C92A
-4142D3354A374392CBF301590CF33ABBE1574BA4150E3999A953ADE0416C248A
-D8C57379B2C66CE778FECEC9B26A285421F8D8A6DBF711D71C04349E4D63818B
-5D6E32594E89FD5AAABFD1F70DC187890C6D70F392179DCC05713F0A7512678D
-6621B6651E89740A3EA96C5D14122371437AC6AF1073330FFE794C55C2E57450
-2CBDEB3982F857E24990F922407050181C2CA9007CB31748757B9DEAE42744AB
-74C58E50F2B8081C2E8DC1FED9CDFC7D40AA7782C8C405E42B8A2258BE16F3CF
-1A5E47A66F84051F011304F8B503561CF5636317A51ECF364B234A76F639DD4D
-2A002CB48FC45AD9A8751ACEDBE1B2C4E287A78B984D5F525FB6D0F0C209D5AC
-645F6B3DE8491D57EF387C6362B2DDC8ACE7CC68B7BD9EDDCE3F7A280079543D
-52E86A802475E819320084E54B038F94E114A6DE91AA530F7B124CF8848534D2
-95C7ABA012A3F0DA193020E6C91D5DD744038360BA65DE7B0CB4DACDAEA40D68
-52DEABB19A334AFA54C87F8DD68C708721884172D0B8A7146C0C810E085D0091
-769C082122CAD51EB4FEBF908E544FBE195F7D8FA39E199FD1418BA0D4F66FCE
-9112E38299730C870F16DEC18A68C3B6AF4C6C90159949027F4CB1B433E8CC58
-EBE55CDB13B6D96B1928A427D793CC4F5D2A2C7A0F12BC957CFAAD6917B67F0B
-39ED990397DD6182F70ACCB1A877AA4A5BDEF138F72B7D34B1A8EBEAC439ECE4
-3DD85E81863CDCACA331175FFC440037C4FBD8F723C6AE624808F84D9EC5CE69
-DCC8015E3EF7B7BE9B25995E6564F28181EC9EDB68C90B520B50D724D7DBED03
-49968A32097BD54D52FBCAFBF44250625FF9765EF9593A23ECF85B09EC2E75CD
-97DF2789AA6F434747DB816293B1C9CFABB508FA05B08DC573310358B2C649B2
-69DA35AD148055FFE13FB476A7F508ACC11489D0DCFA17B78DEE921404E49513
-0EB03E779875D89331287718811349D531035ABD70414216E42CADED69DBDE1C
-F5D5CD0CA3C33F00D61C8367059A126B06199FD6AF9525766EB68FEAD94AAE72
-65F1017DB2D8830B9490CFE96B11B3EF453B1F03B40C53918FF84C42C1811435
-672EB374F98B1EF1F60C482245CD83970E1804464C024AAA81B872AE5C9BBE98
-FC1A47C736B081024DA3BA213595685CB800E3A58F10D4BAA4E67EE1625306B8
-C7BC4900C0F02F0800AF20B542095FCD1F984177303B0D7BFE317323B6166D1D
-EEAA437A3AC43D1C0850AAE067DC9B6E65F368BF598DA6995BF1C995B80BDD8B
-D4ECF36F94DEA6FB6B5385666D1FDBDFD39BD2B8A1938D40AC3E0356C7D6AB6B
-E4CC647EC2566F341817E41355B226877E7E1E8E86A490FF06B4C421DD653960
-AF567691494982F974F1AAA0D79C87AC9E9E8E3AFB3CCBAD1FF21A637CC554A6
-E25D722EED55BF863DAD959AC1E9CB2C902DA32C876D682CE48FB7F305BA60F1
-0E09DA3FA1B532DAB62F84D64F046B252DC800427437DEECF66A083FCB2DCC25
-7EA5E1BEDC95E386B84958FBDE2B7C8193B7E997FF10ACD0D049959BE428C2CF
-4F04435EA060E628C6E17A875B838F258ABF966FD45E9A258E2A4CEB9FBEEF17
-BABD7887F89F4BCB9070730384EDE13B6B20080DCBD4F143A390709744AF6B2D
-2376F016D0C3F73109DA35527C13784FB547E391470E399F47E384B22610E4AC
-7B6BA97948F4AEFA37837AC44C432DBD25D71705655AA61673CDA4090CC12904
-CF4743CD0E5993E1A0603EC1B962233DEDD0BD6F199459C84AB258D333DD6A1D
-FD3F3C5C4C800FD8B6B8762B8B397E07C15B7589CF62B0AD689DE850C30C9D8E
-7BF5AA7F141B3C979DC711FD81FA47EDD0115925302095EDD0C6AB409C228A06
-18E403F444ACBE9FCA55BC34E799951A7D440612726C5DAB75072B4AA64650F9
-5E4150C6F1765882F9C059EB7E0BCB11166F8DDEA80573113D7336D187607EDD
-0549749BEFE1F22B70BF83300134E57709C3374B6B3CCF6EEFC313D54D51DFEC
-5E1EB43F32835D27C5B70949E596B75D1F87C73C9368AB6B681BEEA2D8F0F0EB
-4E31FC81F22143D80F17CD739FDE00AD35F6251EE63D41CEA39A39312E0340E8
-16B465F759E9FFD6993DE790DCAFB7CC76C9DAEE168308B3F6B5C4B14F7FCDFE
-703E7946B6CF534AB6EA7E8F0829255A063ADEED15B72E738D5FF82ABD16C90F
-A9310475EF051F022B74D246D05D26E7552AE8826C22AC2AE9514E94DEE4A84A
-52A1C1472677A4F925919548A54C5BB2F52D1D3E52F51AA2B9907F3C7A054EE1
-00B8B78ECC15D300E266B9A3A264F87553A390AAE585F9A9143A51E5F9393DFA
-B10D0FD90D5DC062B2F88F02619A321DC12EADF4F921A97C56963403FC138732
-08BC3787B9A176538C003E9FCBF6231A61C20079AF440926C8CC3591C65FD7E5
-DEF7F876914A8B5CBE434CE5124D018B3246F2967913238F58C426EE02FE4D20
-82ACA4D809B4D74C08E711190B6005706BFB4DE844D0E3A6F2583AC760E8FE71
-6970396456D285BC69FB79C5B66659C94C8AD2272BDCB6493A692F598212DFD7
-6BFC7EEB5B4FC8B5448B4913B401EB8BF915C6C35C82CD3307CE9B7F662F796E
-FBDA2934F541C5E191ED23E9495C188FDC9AEA60B965EA908F643AD087D05CFC
-60180A45287BA7863248E68DFAF8F41800182A9A2F91E95AF29A6ECB1A78D4D3
-19E2B86115A8139464C81C23DFAE037A36497D6781782B9920DA18DB6D1288CA
-E4869B98ABF3C30C75397AC1757BDB56A465A1A0B3AB6E2B537C76E2216F695A
-7AB42E7C61D99A0ADAD26DF6D427510678A2C1427E46BD5F832B0FCF1563D457
-0D4E89F4CDCDFF59314017B895F09791541ACF7029E8F2138500C6F9AE72E4A3
-43D796FB18AB0006A6C88FFD0AE44A20DD1BC0540BD9A5547180D074391811E9
-DDF0F028FF400BBFD7F424DB4A175490D7A0B85A4F6DF9A41F8100ABBB3C17C1
-0C5837A94539628B545DD278DF38E245FE8BD96F29FDA4582D4C7E85AFA3AFF3
-D92B86273D30CE80C4FA9C47A3B27620617532FD6BD937CB5D5B9A01E6184EE2
-015D261EB60E513277075758F82A3189C68BE1B052D1B8BEEBB3C229AB55B48F
-18D5101FB67D22B8DBC8D9BA6CF098472BE2824AACC0D42F762674C9DDB1A209
-92AA6EA9DB4C35424BEBCC4796D728C0EE14314F1713C56183FEA6410F696B00
-1A97013C3D4E0DF7E9F35B9462E18DC189A0287C9A19A2809B0678695165E213
-6754A6C44CB45D818E6F0B6F32A8C1DD7C8183ABBF6B5DD8EF4A3C197D428AA7
-7A943F59BA509AE017C706FA4F33B17753B5583F08931700DD4E4E74133A27A8
-1B708BCE5264B5ACDC3E67FB82A7A43E3A005A8D5A61FD4F4CA2A829751CECA4
-7BD763073ED4D1D14788296AA26B02AF57C1AF221677B10CDEC6B4641A68BA30
-888121F9E6414EEAFCDFC8319D8971454FBE6FA27FED4A4AF90DBA8A6CDADA00
-D146123B46EF54D41155DBCC218067626406534EEB8FBFB0109494A0EDC94C08
-EB2BD4FE169431B5DB6AE7AE04FB0FA8F2F6A36EE520563F64D1F54F0800C456
-2B4F39BD17CEC2F045C7C801E37820F97B35794B12178E241CA8AF897312E481
-5E6D3A68BCB35731708DD524B7178F3086A4C74A13E2B7510B9CE7E37F930841
-4D28156145730A1C7F4E7BB7B9C13F37A144C8E600A16C7C72D81DBB8C0AC900
-2478AA31E424A9A160C18A1FA26CC90AB7676531022785589BCFCDC6AADFEA78
-8E94D629B93D24F6CEA823B0929D36BA9EABD656F269E43A112E7EA0BA91414A
-B5236D76695BFEA89ED1E12C1523A8AB50E5CD1E20B74CC1345DFA16B65A76DC
-BEE67A2E618C25FA2EF24530ADA20E53B72A2B395C33AC05109D4F9E5B85781F
-DBB6FA8A508B1FD26F83545259465833A5DDF0DF6BA34A437F711AA69554BED7
-1169AF2E984024D2508143EBAF6C31122786BB65EA40327DE44697DA6514138C
-5C4BFD9D7C68F51655744DE42514CB136F2AD4CE927F4EE4D5501FC96BAF4B9B
-3F75331AEA2500C8777A5439D2A48A652941AC5B8AE670E725C25BBE6D44E407
-7E7EEDBAE4A207336FC56BFCF6A0CB04DC4AC40303F3B962B946D56AF4DB0EAD
-B515F36CC150BCBDABE44C4FE632B04D875F7E2AC01906BED887423D96A4C7E2
-2DE88F7E9140454EE5BECBC56599CF6D11CF03021E5EB9DFFEF0850276A1491D
-A29EFCA8FFA4AE2C09E578FFC1778E05720389CBB61D6B030A006AFA46118472
-9660F617670A4F5B7F9DEF36673A1872D11E0E6B117B97A01429E4C9A571C641
-EF2E0F8941DFB24812762F2454D591C14EA3FE8C5CAF0E000C4BD9DC77221D23
-A0F97CDB6BA9B9A582576FC31BF8DF1E5C41E044ECD977212585C69BA812E38E
-8339904920381A58282051F5E5EBFE70200BBC68F192F9D5DB30AC9F92BC0515
-378939A16ABD3B1596C497198707EE5264890723D203A73A89173946E9C39455
-0EF1FEF1B64FA4902713704801E18E83A34DAE5EF697E6434AB502A75A8DAFA2
-06C6C70539B46611EE37760A6AFC9C61F19643C139502E839237E2C6AA1E607B
-472B23F2AF9BBEB029D50F016210737E6CE2FF15E45E0A1F02F72C5CEBF54997
-598CE172D4F1DE3D973193619B236E3F2FD33CEC9D1BA840FB14EC1F7F285EEB
-AE6C45CD104570F21D9331AD65FAD72641C1BC465D37FBE7B4178B1AAED713EF
-154A08C869BA1C7456E79270BF332D310C7121371E4A5FBA7A1C94895015B62C
-82E01104E0667F3B03E71156370A1DEDE75B3BC2D42E8BA060A580CA4A1948AC
-4B568DFD3BB0A92BFDDBF662EF12ADAF8835E976FBE454927D46B31B644154A4
-B65FF980ACF71A1AEAB93455F29A7819ECC82ABACF60B5976986F8D2FFCE3B61
-A7AB8447317C65A51B1AB71E01B05477ADB06DE5843EA8F9F19C604CB6187B2D
-7E1D3AF2E1C58016F2276F76646CB7E3CD350374676E702EF784752690B70479
-AC70BF930F96C935035DE9E2DF4104F4BF43F300973C068579684004692DF4DF
-BFA3EDA025311E9ECD955FA54DB16A338CF743C9E8B92A9F16587336B60F2274
-58969B1B8495B203253E2C8B77C3E791A6D80446D285C5BB24755FD019EF0C5B
-3BA44273453B9E8A9C9A175619A6B777704CEFA4BF51804151C9B6427E75B9CE
-22EC6D69B4990A6406B101AABB25A1AA941B055A4C8C39F0509EB8F6484B5A5A
-6313C91B57365CF1936311DA116DEF8A6EE43B5F8FDF04A4A35747D420C918C0
-BA3309B2934806A90DD9E97B57B8E8C2B3CB2FBB61DADD6066DE375DD637A342
-D57295E488EBC2DB4BC7E12044940349512C083BE23B04517D19BFAA7DAC397C
-6B87F989AEAF8F0C15664C74DAB5108B228EC0BEDA649C159BE741772FF7B10C
-A77C7C073317879A818CC1AED80E028DD3200BA90614AE3F2BF9338E1ABB3E47
-BBC93A8C32816D89BE6A3658D9C636D204F17D4F4E09F7A8BB10718C10851538
-9A92A7C330821DAA8A01E0E680FA2725D8EE081CFC395437D862A33D2FAC079C
-01E34BA70A5A1C81FD18EFA312B81CD1AE0B481D49CCE252B152D9F562D56E64
-FDECC00C113BFC8E36C621FD1B7E03675CB301B0A9B7F05406347CEAC05D923D
-EB2A7A0CA5ED76BD8FEAB8415B3900BCF63F0B46B3CF5834A69803520B1A6812
-20656009A805BA1C5C2C81EAD5F48E8FC5574D80A7AD8C4E17051AAA14B02140
-EBF90E9C9983BDA39629DD1DC75B72CA8684D6DA1E1285553DC8D068C1F8BAA5
-1C85B340F0601ACD9B531BE6177AD4F6E3C69908D034D166302614CDFDC97DC4
-5DD55F8D6F20ADED47487818133B7F5DE10DE7F13D4CD7BD272D360AA7C812F1
-CF47F9434F063B895896F0ACD02E02FB297CD43A293229025D322D8AA0C51EF0
-1856C9738B7244B6071EA65AE99D274F70CFA08BF8176AD01D22FB9E924E1AF8
-10B5184A5773F230766E374D2AACEB84AB67D2DA717498314D681FE20A8D457F
-FBE85C21A1886696CE65FA9C3390B2005D4BA7DC6B995286EBF3AEDF5DD37B0A
-D3A52F26927463391A08C5AD4426367F54A711B0E16404550F83882444889AEE
-23EAB78DD5077034C04F3129E6D7FE682FB6876007D22C99B96F6835CC43C896
-38B7A87DD1E323C51B98294369D341B2E70B7A4FFAC41878B1324676DF017031
-536EC8409193488E05D6444AEB861C7D956ADF2680ED5D146430BA0DF5ACFAAB
-DDB51B68642D9BB081D05B95EBD1B3B85A010391B4FDF834BECCD911AAF2259F
-80AD5A24AE8F4D70FD14C213E70230C7D7093C21F76528EEB03FD24C167C9C3A
-45F5314F648AAFD0A8F4BCA64124A770164D90C6E83DA2B037769439E39DBEC7
-1FC84BFF5BDC217A9631AB7FE4CB6F7653F9296885C4EA822B771CCCAB662781
-29104E1B832B5C3D5EAE00A2F27652C412F2601725E9D8D50C78291C8D4D4891
-BA15236E36534600A892D640BCAF05AFE10B220B4F1026357C2B9DE2AC1893F3
-1E0BE01CB402B8BCAD780200B1328FCFBFBE3167512E2231452254D37A071A6B
-F11DD3DF8BF255E09DE5546E5A0DFB5872339F2A2F53E55BAB1961482AF8D7FB
-C50F53A1CA47E805BF4AEC61FD6B3101B13A90B8B3A886429EAE84E2A8AEDFD5
-9F5D4BEA92820DA065FFE9A1A632B822A04275DFFABD50B74DD243C0BF3D4410
-24B5BA8EE76632F0B5DBD3F6C7D299135DF85F98C96ED76D063B858D37730787
-917971F51998C9B3BFB090F53A8048D1F751F06BEF0D259438E36C4F2DEAFB9C
-CE881F1CC72504B18BC541AF9C19607EF59FEE25617FE87EFB947F6EF3BF8A8F
-66D2942C981DC18B3275A050A6F544589A129575D135C66C5C2EE64724D38B23
-0D7F0680C449F8FA95D629238C1FF229E03B696F153CA907D0E93CD8D09D3228
-D90D9016A8D7F673A2EDA8850C45AB5E5359E783B6C6E8A305A8DFCE98F7F666
-45F013C71C86F0026C6B034E1246AFB724936BE1F249B8870A7D5CFD193B2501
-A17F166CD2744901146382F45661B13EBBFE81243872800D245A12F6930A8E5A
-7EDA607CF909DC1249B22003D2FE2C15A838A07440EFC329C79E672E85977BE2
-41CE5163B8AB19A9520EDD7D6C45ECCF39957E7D5DEC785D228EB7347D01D6BE
-9600A27E9B4C4319AF517D7E46C496B874D0D50C5A6481F82F85C35518C8FA61
-7416A94723C3FB67739D7F9B3CFAE661F68F8B6896613B2F0AC4126A8B9828E4
-F1DAB90F1A51CD074021D14C1E1EB852BAD004D173E4D9B62951B6940BA0CA90
-AF7EA0A47AC33285AFB1F9C36D39BE6CC9E330731B1E5C25E76C255966E3C64C
-937E25BF096E37922B44B9EDC1EED541D0EA20738A894545F61DB77C231AB7BF
-F54138527AD683970EE6FFC86A6A6C32DEAAC5E1051A11867CFB6A18E1A0465B
-9921049C8FDFAE981C992FA98888CC00923B42202C9B8AE489B80CDBC3BD9093
-F58F21FCBBF079F4E4757C4B58F2094F8AF6CC8DA20BA50F8C813B676F31EFB6
-6B40C557A76BE62BA4B4A0D1A85747F0D8C276ABB12E71A654D0BBAFF0246302
-529ADFD2DFBE80DE46BC1E6B0C85B0838E27803CD1A6342B81CDB780A1F97BBD
-6B1627C18DD271F8C13B16584F4DF2F38C3846990C412DF3F8C3D9F8AC4EE1A7
-B9B23645C95CB540E9DCAE2C38C22F03BA7FDC556482895B066B472F76B56B36
-AD91F185CF537E34F520C230DEDA1DC1861F5C4057CE4C0ABC12A6497E145D68
-5D273346485C16FC7363BF3044DA14B3A7ECA0E63A83EF9521ADA24B89E87865
-512AEE26ADA05F9670594C5865892F59F960D286CC7C0FD12E86C060B1C5FD57
-63CC2754343B7A0FB915C66681724A6954FC549FF240E1041EC55A70302CF805
-5DC08FA9F3B22B2C8E3AFBF88F75A34DADABA1193F94C69F6B8ED13FC54A0690
-B86B74FCCB3D03A38AEE75B86367585B15CFA57EBB6DFCF7E809443BB079C9CA
-C15F6B3AA309D9C79B3724CDB243A36D04ADFEDCE86D55511B9A8DE9313A4EA8
-36410BA0759DB27B4C910D1718D10792F06C620DCA21D9079594665E11F6C060
-5FF0A84E2D8E0C92E4901708BECF1422D70AD8F75B140A3F79EB48240D547B02
-54BC9086CF66F9643F520877B126C74267508AB5353B6428AB20CF0899600615
-9B1D947E7A7C20F12EF524724F9C0A5E340ACA92B22181866EEFFE4E90861BC4
-488BC0966ED97FED91BAD10D1A57FDAE6A09326187DEB60B1AD437BBC6CCABAB
-883363ECBDE4ED0EF4419D224BAB5FA005A55ECDB6932D21F2FC45B478A862E1
-C76871F90E26B48DF9764794524E04C0BD5EF25603448D5E2B58CE1C86324ADC
-6D62C5271BC22BA401781FC9031E94971F5FD9ABC3F8D2150BD4148D86A84884
-3128ADC48E50CA655358031E76B8B4AB1D42AF15E9F34160745AF23882A1F651
-8873BB51A8AAF24A66800B7A7A3E4C7A492ED6287C78ABAE084C0AD00332C9CE
-7BE6B16FB35013AC9F82F29EBA3C3C7DC103D87E9469B45A959CA423F8F85E3F
-942CE0AABA6F12FB0509DB13BCFCF5A3B9697B98D8F7BC9AE440FB938100F673
-66587965C0BE1799279FF3D9BB00F8FAB27828EFDC64E0B8DB2C8C124CB9B667
-21B26E93C2E7F384F3825920124603FA06B6DAEAF2E3D42282C6B60BED139CD2
-34865A365138223F07A8BF25E212201815332085B6061A88C237E36488C85FEF
-A52C4CE0479FA42C456CE74A911FE42B1E8AFEDF8F5F517253B67E723E3AB1AB
-22EF3F76A572D55845D180325670E7605537910ADBCA180D44C047F5F2B4ED4D
-40ACB0A12F72DF591C02F65CD5E5822F965C419640642B76E00BCA5792A7DE08
-016081E59E730C48953C83AB9832A4225EC04DB799BEC5212F0FD468AA3A8C6A
-142197D8A0F37AE7F3128EB42153FF7F4E1D0038FA9BC5FA1FBD60C5E53D5B33
-D3D390612E395568A7B38152866A3D3497FCB83C0DE2B4DEA8F48CE224E4B732
-5B5A320E61BCE9D4ACC3B80D11561B4DED5B3BFBC4BBAD6181929C4FABCCE45C
-E120D669C165673C490D1B5567D394D9BEFF86B79211C204896E06D585DDB33C
-99C72916CC88F8C2B337A0D3B7972AB2C3C72F066B16233471542A139176D224
-3DEFEC69E26F9B05D9415F3B956B2962F6543541568EEBA18EFBBBA76B866592
-1E59C4F85DF7ABFAC219C97320F75CDDFCC6E9D68840B8277336C9D985CEE3EE
-FF11A1BCCC981009895D42A5D0301287150E17C0B5ADF9019D8257F716E0E4B7
-00E4F084DEC107DE7A4990C6D6812FB228253DA45809C58799713DB8BABCDDE1
-D3B339D7CD6B7A96C5702ECCB3D40B9DCF8BBCE0A431259DF6754459346005C5
-9E8BADD60B3ACB34C8218D622335C4AB544AFE416E933E3262D3813C9811B3B5
-ED20ADBBDCF609ACED29ABF6634C772F6A9530D1A50476BED0C4DD4A5BA6F278
-978116C92FF831342BA6D98B3CB03F47CBAE893E4D347DCD847D6D04DE8F6E56
-047284DF856D03BDC3803BE08ADB99285234CDFFC67785D75F5088AF0E2F008E
-92C7E4BAC310D2D359D744734DC81817DE9DF3A65B84CFE51F8F3A8CAB169554
-9F9319B177708EB63FDFA6435FCF7AF6A60F026FF1F624D31B8461988D753359
-07332132067868F34D7D7F60C40F4133F77F5C50F9007D4B2A3E6529307CADF5
-0BC03A19BB4C56CE050F2118FAE16AB559110FCC0FA0076D662CA47B6AD44F31
-E3F6432F0CF6A9D19594E22CFB40A99FE0689399BED851DEB4C69F9772008A1E
-525CF0AD409C4D1EC91976A5211E36855730AEE0102837EA69616B8BCF93B14E
-00D661514412E7977C1BA6E02726D2DBBA97055BDD7A1C7E45D98D01E3F02331
-790891CE13741087B2ED700C2CE9C0D37753F60733B4144094C2D6FE3B98D160
-2BB869D5A85CE59EF84B904503A4B5F3F9D4AB9DCC1C69859B3F2DA79F3F6B65
-0C43FBFFDDCFEC6E4AE57FB39A6DB5B331AEEE7AE731DA6A182BBC81C5EB5716
-FC07A2D7AF1BD3791D983BAD20D7795AF97E290967FFF689B3F9899934DB04DB
-FBB44C029F7C34F4B82B9AA619B1B23A678E90003B710D801DFD60E1ED36
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.0: CMBX12 003.002
-%%Title: CMBX12
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMBX12.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup
-/UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMBX12 def
-/FontBBox {-53 -251 1139 750 }readonly def
-/UniqueID 5000769 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMBX12.) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
-dup 13 /fl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 39 /quoteright put
-dup 42 /asterisk put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 59 /semicolon put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE
-0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D
-2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608
-1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C
-42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557
-FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE
-78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18
-22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE
-A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811
-4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065
-4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7
-95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D
-9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC
-5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF
-9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3
-CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511
-BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65
-9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68
-EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A
-D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE
-2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE
-947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B
-0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6
-4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C
-BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2
-F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4
-6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514
-D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415
-F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8
-481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24
-FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D
-419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6
-7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B
-70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988
-2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE
-0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC
-9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A
-C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D
-1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2
-A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969
-21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530
-7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198
-17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60
-30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F
-3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257
-96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3
-B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950
-1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B
-57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE
-B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC
-8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91
-8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59
-B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E
-BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC
-21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91
-D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4
-FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F
-A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4
-A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082
-A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA
-DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38
-7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F
-07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9
-BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E
-8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89
-E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C
-B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5
-45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67
-2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5
-5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF
-A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28
-5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975
-E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01
-5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94
-6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30
-8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB
-BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6
-9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB
-B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B
-B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E
-8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD
-595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E
-FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15
-13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A
-FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3
-DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB
-313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248
-C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89
-F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD
-DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844
-8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753
-E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197
-A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3
-C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20
-417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43
-19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4
-9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85
-12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83
-3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1
-A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68
-90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94
-3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5
-B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B
-82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550
-1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94
-AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D
-9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985
-2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5
-99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A
-31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414
-3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86
-F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5
-70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E
-5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891
-84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978
-BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047
-8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7
-5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7
-9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B
-F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E
-94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE
-0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC
-E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4
-7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581
-596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442
-F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E
-7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1
-1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785
-AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE
-4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F
-744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D
-67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA
-054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA
-6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B
-8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE
-CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39
-EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4
-C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76
-57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5
-5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F
-C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1
-CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2
-848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C
-B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB
-77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28
-87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58
-3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8
-409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7
-A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B
-72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D
-99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD
-8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB
-E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C
-82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3
-C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0
-EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634
-23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A
-59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F
-C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0
-1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C
-403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90
-1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893
-75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E
-0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35
-82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25
-C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8
-A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC
-9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06
-0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C
-5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060
-62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D
-6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E
-1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5
-648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1
-FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6
-754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A
-E124929876488AFA97FAD1A68A0C3496BCA768F4AF8016D7A65BBA3AAFD7F5FE
-E75FE714FFF3D54D09C9747ACA01CEFD260985C6EFCF9F0831780165A3374B17
-88EE15E86A40B16BDFB75FF3B73127BA45BC6E1F752B9A508639FC3EAE24DD7F
-2FA0F626822AA8AADC525E8D3BD70E93AF0235096D04530A79F9419B51397A1C
-D59597B69DC433C565A6CFF294EAA027FC5A36D8060A1A0CA18B49E3088A3216
-30BC1C79785051BB75B7341F06D8E33B49BB22371E3F2C25912D64B01E825B1E
-3FB7AE3C0427D44F0DA691A912C5C0DB845E8637950A393F4F1720D2BDDC7F34
-281148F9D84054968F9E6176AFE229109E6A2995EE0690A27891C5DF8055EC0D
-5D7D17C3722AF875C08ADA539E190137D2ED0056380D04874D35FC8711BC9629
-10F16FB1EB5F1D60149990A463CBC70461FC85741BFF8F5A734B9E6DC208A6EB
-2F5269529A841B3FBAB933303A7D0762D3B1098B68B5406AF05F1B9F93448B77
-9DBFD8DB8B19E152F0D77E955974798F7682B38339677D2E88F5241447272B1F
-04666BB99B0B3060033E2CCC4D2716CA1DF3C1D69E05A7954028A97C5F1F377A
-FF9F20F01FE84B062D8D7ACC38E05E55E401C8F5E83B976371256AE3A8E97DCE
-5A1E7461F5549F39BCA0070BF242716D7797A305E6FB4A2A74F96EA35958036E
-E6E2AFD6F64822FCC25AFD014A0EAE426552DD1FA77DDF6FAA5A2A7B609B6BE6
-36C79E40600D8D0EEC9A56ED8460E40FD124A023B4C2A1571ACFA0FD1D070F3F
-0D5D4BDB507B9BFAA9FB9357CBA599AD496425FF933D98D7F770CFF44286DB28
-F6E2879BD8A98FCA72D07849F50361F289B380E4BCB71F433FA82AB716A03465
-FFD62D7E05269580C794033D07E073EEFBF4B3A3164FC1637584812038117FD8
-F3398B9E369A274F1352CE29305F87D6187F77AEAD2991EEE871C28D76EF1B88
-5FAB88A11CB2E563A64BAEEC19D9E1D91B5A2C98C4F053C91F4136007ECD18C8
-B279CBCA8015425FEE9D48783BA2FECDAD3A53AD6125E306E8AF1AB4B61EE165
-4F5CFA1BC9618661593705577E54A223858F8829AFA5123950EC04C4D6B7EA38
-640BADC3ED35D50F80250A061D9219392D3B759863CCBC241E0BE0DCF4ED5656
-1BEB18A4CB101874A1B2EEB088CE3554160327EB8DA2D679A4E38881DCF6094C
-8504CEBA2BE984501EB8C86C9A1BBD319A3CF3FEC929923199B597F456CF6A64
-3A995732030E7B9337471EEDDC4E79DDDA035408F5E02283B63773F036C16A2E
-52CF858EF9120275C95665F6C3C7EC1E04CEAC297C2255D487855B0A699221B3
-4893C653FAA3144E769239D4AFF9ABD35E6C24FC15D4E9D3BC9B5025DBF15510
-049C602EA16761E6901FA714C42FFD90A71D4E0FFF7C89D15238BB8F64552F3C
-780C863D8E148C17C78B71C0463A280D686AE80CC47C31901262B6BEF3477B83
-5DF2E69C38F744C96248F9AF81F9CB302A32AE6464B093FD77D6777D7544E4F3
-A7C7C1F767319D446F5ED1FEDB862EE5A99326408055430DFB2A207CFBA6A85B
-89B811BAA48C141A79C7ED3270719F10DE873EC55BD948AE5A0C225C11F92A61
-B0C238EB7D922E6405EACD733F700EB26B80E9796246333C524E56F244316412
-EF5860C4480188EAAF6453134FF9F37D09007F7D94D62AAAF9FE337B7EC0BB42
-2FE0AC6822C63E03670F0B7156591024B7E8D84F92A760CB6D299A03DB9785F5
-1BA11AA5A4B5821621C44FB7D8CE6EB30FBD6D09D46BBEFA78A11557E64CC630
-8E49E0D3C79DC03A2F02B2D534FB4A10B7AC474127B1D5D768F3140ED4F90083
-E2690C8460C144725656E34C81AF9E1E0B4555D5BD99B72BA7D4C9B3F845FFC6
-0A1DE254CF21F2FF333105D76773D8266B58CD5B1BB78369CA75D1CA15A27285
-D5EC4C42CC53BEFFF358BDA5407E0356BFDD1724972BF2543DBC77774C4628C6
-5D3C763CD94E5D9F688F4BF564BB41408E51452588EB69D3E3D72F7C4E3AAB3A
-B1A97242E7C04CE0B942A68564CCACDE0228B15761FEEB628EE8EEE6374BFF05
-450FC6264D5DAE7533624D0B04B2E189ABCD0AAC3E8961C07057D40985DBB7D7
-54B0EAF89B770E5102FE1E6CC9BB9AABB2E7580B4A6C409BA395712A2EB7BB28
-549337A3354CD61838A731ED91142EE83F688290DDCF50986166B7BCEDBE1DD0
-B50151DCDF5427743ABCB3FFC3F1FC57F2C40C4E8A24DB7A84787F36D6FD0BD6
-61C70E87DB4B18C04E17ECAC7231BAA719B9275E4C3AC7A8606EF8AAE5A2ED0E
-51A324CC5E5ECF7D77102E22DE14A54CC51F7A07ABBD7DECC0866B55154FA877
-A6E3DE3B7C35E565CB86151644F6828488AC98F3AE020072D938C7A769D011D7
-1D9B4EC04B001646D1A65AF9850BB78F4BE8D515EAB09F335D4695E87D8FC639
-232F04B8ECA677537C736EAD74F72314C7A2AB0E622047532AFEBDD351E175D8
-5B203A012F35040BA223CC6D639DD4B9B03BF11FDDFF5ADD1EB4305F61462582
-89BC23E7B7D72F1CB3C66CFE3D29D3BEF16708FBAB0E495ABDF0FC1AB7DB8530
-F6EB1DD82657C669087A72DDB1CE289E041FE457AE027565262D3D7519DC7815
-13C740C8787B4587440F0596977AD92AE9C06A01A7AF96C9E6C26F5F2056E9A9
-BCF63F2C06B17E94752C2603D6D958124230401CDF3FA054BD0414FC98F0F035
-38C6A2BB688422B9E9E3DAB4A5F65493A38A6A4E51AA4D81F904BCC5078AB566
-48A9C1734795D322D9CF12DB112CE2CA099A6A2F56BE0AFE26A927CBD94BA2F8
-10DB0FCFE03463FC9330781C12433ED9CE0AF58E41CF42F5B982AC795468B483
-6B4DACFCC9CDA8F50DCF1333B60198A78B7667B83D415BF986745E4080D74A99
-6C93653C808B3C71E19BEE8668B76CAE32B126D3BE0BDD64D37BB7F3D28CF85F
-D260492C0FD34DB08EDF387F0B68FA42C8E18F976EC0AB5567D82583DEBA6B2C
-3BC7ADF0332EBB9863C68E5D522328E94310223B8DF596B9FB64E6B9998108F8
-224C2813F9B23A0D9E6F7D13FB9D6CC5371D69C118F022EBD755056D7EBAC88D
-EF1B7490CF937DD3C05EC6286668AE3499D3E462B327FB6B7D3063FCE41A6792
-9BCC289FBC9C249E0E92B802514C2B1A3249E83C9BD18DCA7CE10A59C0EBF9F1
-E0DCA0219C5FC28FDCCE136326350F49B2EE233B8F7D13721CAC8F4762F1DEB1
-C0DF9B62DD6392C731D7B0F4A8F8B20CC4550D1198BEAF5B2B2C7511FE4C4665
-A42A260AE68EB0764FA65168D908ED976E190E2FF36B84BA4C7BE4DAB5C27D57
-172C19F806B58E85A90BC3908CF914F81A112B7CC13626ADE3BFBF8F6156A90F
-51B4BA07356A0911FFA51F68DE25AB8923702236D942289B16D6A541B08587B2
-52E8F889D4FB771D330327E5CCB150F400122D47B1A842040919D2813F0BB5A3
-96DE58B31F1645F09BB59039A2D65F9E6B0F8915DC62B3E4542FCCB791075F0E
-A33523DFB439489C5A3464C8C543FD1859615CC8BCA65A8048CFCF2AFAF9A824
-80BCDC92BC12D932FBF30DDF66C49523AB41249EEAB81EECFC50D57C49B25843
-CA230F9A4B7B9CE4E543F73DBCBA7EEACBE18265582BC4EA9EF88FF2614E8FE9
-A6145AEA574C4F5D3663947DEB9CB2D80724615950BC1E2333FD9023E45960DB
-FAABD6F6426A03194008093B32C3318FFAAEB72B4904AB2EC8DCF22EBE4FAC86
-166966E2D930CCB8D0D15DD00BD0D460ADED64C54A7D1EF4440B0E86B1162F90
-6B7A2BF5FB79BEBF489629131C840276523F0C0CCBD022225B2845642273756A
-4CCE710595EC3DAB299DD6E3137AC17EE905788893041F84F2673341606B5D8A
-0ABA7F5DB87A8DE5A7A8F8025517DE37191E76CDC1D1BC36A1AE04E65A64CD1E
-2215AD6BA3F9CF274020B64F1180CD6989A20A7FEB55BF70EE3C5BB9799278DD
-D35302AEA2A48FA2A85121F8C49BF505908A36A306AABE52B09AE4D52A473C7B
-CF05F95B337B032CF3F590956294A662B26A5177CF0C2A9DC7A32F45DB7C50EF
-0F4FF980D31ACF5AADB51C830DFB43104B64813EAE31C6BF9C00CCECC0A60A0D
-4B675E02CE125E24644A131E01946BBDB8D1282D7C1A62E408EFC8F7210E43A8
-A7BCDE30BFC226BA3EBF893463B94FA286C87F539B23540A3B9B4FFCAC8C63E1
-6BAA6785AD1BB4B8EBE15C56010DADEAF877E6E64176A233ACBC2729218BE75A
-28550313F14B5EEF4AF930E2DA4B34A767DB56C4E05F5E64D176C9C33CBD2A67
-232D93D9B4A18EF869132312D8AEC6C620B2CBAF7107EF2BE511F782D0F7C883
-680C32615AB155199CE817F0589CC0FEFF6A27596BB14B66D8A54EA523D118B4
-FEBCDEEFF7E44A03220E0430F9F1114D83B161CF93D1E6DD4A15E029FE5EFC4B
-143783188348E3FF917225CA704FDED1854E668B707A4C9CD6C0BBC3C12EE6F2
-360835060A19704B8E2F0DBD60A3F3CB65622C464816F0BC9D9B49CF36C8EC6C
-8586FF3AAA8B8720E19E65930BE0D091FC0C1A362C5FAD0C384ED63429BBA7AF
-5E932CA76C8DB7799D74B7AC01C35D24D9C781E624B1F31F2CE335051B39B658
-BBC9EF36197FD3493B6454FDDBC2268C46DC64EC8C6D9EC8A84B9FD3336EB2F7
-7DAEBCAAFDC4BFE1458AF2FD833605384F2E33C23D5AA660E5D9AC9B06ECE907
-03F8813063C8141981F02209C8C31EAADF0647DBFB21F2D23D3AFC6A9C8C3FAE
-C3E81113E6DF02C48B02A2A6A0641ECB93AE3F79E1E792381E9A88B028544013
-6096439973855E12A307B36DD4226A16A7829F3EC6D196C87AA39BAFCF06C677
-55C7CEBBE7E6260E9163AF236730CFD6E194CEEFD11EABDC1BBFAEF6EA44BCF1
-979CC1A7647CDA8CE85CEBA7FF46796353EB5698C0706D9C0B403D2D24F3F0DA
-A0BE6E7E931AA091FAC3209560EEC27F771841C73C196FED7A87895E8E788E7B
-34291C9E89F2CE3F2ED8C37C8585017CCE244915EE80CA1A5D2D7579CA0B10D0
-E812A9B45FF28D0AA7EC5820A4DB3DF719778F9D25785B6A6795BF1C47279D06
-F6B4F4ABB41DCD7A0E3A119087FB06D8779D2A8D92C79A90B7B000EDCE53B01A
-561A059A30848E1ED3D822BD926E25B616FF4105B9C278C6B2BA8555AF850A58
-044F158C47395EF5EB54BAA0226CBDEDDE5E24D7EAEDF05625B5F3870F3D8287
-2CC534ED7E9846C05D024CC84B66763E158B6ACE1AE4FC2F4F7D3D15639308DF
-FFE8782F72042156AF595A0226C684741081EB45CFCA5042672B00A179759567
-4BFEBDFD8F43C4CAE82E21C62B0E518D25ABFA39FEED0A92A62A37B1ED184C22
-462FC3B86A584BA4EC3D1F9D4F15CF9B1B0606EEE2803BC096E717DC2B38304C
-52D3A1090CF7817EB3F6F64D939D19E29AF44BF6F4196A840D43DFC5F28CCF75
-15A0F23D18B366462B2AEBCCF59FEA0E394125A81F28A5B4229E617AE5CCD95A
-81633EA910B5069654ADA04A29E8C3E3C9684B72B849EA935D523338901D10CE
-8C4F64DA0137A01C5FA9EC71D1A7BE23F6652268725AE82CD9EE36D449B2B6E0
-BEC5DD6F7C3FDF4F03B4353FFBD3BDB3855BE3A8BA7BB3342D5C8CBB15870AB4
-3EACADD693C991288878C130EBB4CC4A971C1277C266975ED6FB9DEE4547D119
-8FADA317E3EAD20566247719D2B8A654E305210AF784645780D6529174257FFE
-EC8B70B87199A19ED42B90ABEED2D7B646C142BFAF106F2B1EE3DD47451C6DB0
-C44A9EC53F460833DCDF0F395F0712DC468912C545837B1A829CB9ABAABABA3F
-C83CD6966E40B16F5DDD90F2763CF0C201213E1286442ACDC5788DAB6131F504
-F6B0020AD560ED8738388D1BDA6F2B4C6B6AD90C3EB6286052577F81877A86BE
-9DAFAEBE6859CA7E1A378075BC7D73D422DFB23E970A1085F188055665F7A730
-325A112AE749B6D1207E526B82199FD2B9E697C037D70C05F28E7DEAAC1D5528
-2F1234D4BAF9CA089D9294119E6BBB55EC09503BF1AFD82B3AC6F084AA1E28A4
-610A38B613AA090DE02391CDF5459AE96827630BEC13CBB479AC93A4D363D764
-DA75136E228F34C749F679272FAF9630C8BB99D3DFF80A36B7637E687F684D82
-C470E0E0A0895A05956E5D32450F71030481249D0AA23A8294E88866A72D96DF
-ED10966311D68F0134A4CF6232D8A9B323CF3312F440F71070C5BA63B50C2899
-FF18D25CEC885B86878E9FDE240027A1D6B8BD6BD14528E3F9066ADF9EE4C833
-6FD3A02297D15B52D3B1DB99038B609D4BE0DAAE4268E084FEBCE3943D350421
-D66CACD5C5F00EE0BB86C4FEE1722929226E8A46BD74A7661EFAF5F5948FC433
-F56C882B5D12CDFE3075A129306A292881F30DC1804F6AE1C2D052090B3833FA
-B049E21565742061CD109FDFD7B0AB99AE33160A33C49EA12DB7FCA06A61DDD5
-BCE47E28DA5460821491D9650DD56418F198F918601881EF9768396A5F094243
-DF3A7910647AE2D0C03FF8865B575954F35C9EE6DF9F5415B12767997D530195
-7C1D2D3EB3B6BB11956F76A61AE7C7557CC0E292CB5DB68847A581E7C1CADA60
-DFA2ABF48C46C9AB58DE4AA8B1673E47BE509D5217C77439BBDB674753289B7E
-78B3B56129F43A4BD9C870EF425B70B37EEDB71A6A46B54848182BEC8D249327
-A31518AF7870230850015FBA01EB12B4FDB1B96332EFC41C4D0DABE170AA26FB
-3D1CB846EDBFC749527A2CA395851BCDDB735DF5C6659BBF4D29716687890DF9
-852484374ECCF01C77FADE38DC3BCE963039D38BEE49A6FD6DBD2C97F6B29ADE
-517225A702BE9DAAECFAA525FB7F923F4440247165F0416C3F634D6AE41AF167
-E3D0761EE2749D48D8E17AA05DFAA30008AD6C1A64ABFD84CE353769F0C1E82C
-1F3D22B2242AEE480C3DEEC937526816B75A7C8097329B7E547B64C4F9788A75
-9244A7C0B3026B9C072CB534A125E99879E0FD5F488AF1DCC271EF3884BB6464
-5C3D40C81A262D90524DE98B6BB1B245DF82711786210356A00557612B07E205
-EFB2A9764A44D45BF15F3B48DFBDFEA7D10B82C2BF2CE5F7A9849256ED63168C
-3A4A7B84DEAB0E92E04D4085573E95689A2A0B7DB0C22DA50DC480A12EBA8BEC
-24B0E25D8A395802872D5E26FFF4884BF100267C5CFA7A0D504EBE0DE7AFB934
-0E45077350276290EF09312A8B3E4F2F2C8AE41AABE498D0F927683A2C0492A3
-A8FF32B6FC28E9311DD275C493B123D6175FBDA87B6551C9A3A4AB04F4B96B50
-ABDB23929329D25AA781635A90DAC4FB0B3C05AAD65AFCEF3DCE1EBA8304CEF1
-98CEB491BAD5523F3F2733879FA4EB999000CA2DC34E980BCE45315913C06FD7
-6CFA970C5C966AE21D724B3CD1E66AE42B97BAECB57A573DB29E117E31054F0D
-F8E51362B8EB41389C65269235BD97B7D5853677A5DA51247474B8DE0B22EBCF
-8B20418C2302BAA592EDAB5373D60B935058B2F317A5814D2C806D67CC3582DB
-D4BFF99F910024CB8C28B6D58BAB7E0E7091889DE35676A3BBB27A7360A441C6
-E92BC0D5D12AB1EAF192C090A6B14593EDB7D8F197E1C058F6A090126A6C670E
-A2CFBCE4793DF5062C4B5629EC44F0C5C0F97AF16AEEFD680CD7EEA7FA31CF1C
-992E8C115F926BB80771C4EFA9350C3D665133A5AEB14473E4CA5A684E3F1B98
-3288916CA5E6C39C064D9EA013734F60CD7B40ED54CA8181FB565A57FF63784C
-046B69E93479F4C666BD17EE7D7807CC1C4C083B8D5F23D7F3AD97EE239A0429
-7849AFFAD5E329679228536CB5D54381105F7972FB1C7E214E74FF91007D5DB8
-BEB65DB3045478F287E00EDE2120E30C2463634922240D57167A00B9FE2A3A7E
-8A0A7FBCB78466B8F50771A3BAEC9C38A36B8D28CCC3435610F703F35E93F68D
-7694BE832BF183E36CD0A464C3B1A356547249901B8DD2316575F3EFC02C1773
-D109534FF94253ECFE20B5186E6AB6AEBC3F1D5BD1041CF013D31728482392F6
-A5452EC0FB3316BE56FC797BAEEF67E55A600DA028F6C5681A7A9904AE30EB43
-430F38395964C90F08ECFE31E0647C869CB0E5B14F7823899567248AFA8A821B
-2D0E2B27A142B6523BC047990B6A826BF8E23232AAEBA1571B060A74ECDD5F1D
-B5DBFA98549BD1D8F529E5DF674727B37AAD8003257E4B9EE9C9E62A8500C717
-8B7AAABF51722573BB72DF101B160C45C54FBC007EB2D235BEC47246E55F2A6A
-7A5B274FA3A494B8B3F2B40BCC5205EE4A113F0CB7EC4502F736F76AEB27F360
-F2DD6DAF6FBF235E3C83497902C7F7209C719D741E7C9020C5B7D6988E6562B0
-EBA5FA5C742D3FFE7286905EC18E37617A09761830131A18430DAAC544C6F361
-A0809FDD262A44EBCB21B2F8C4B2C91B70065EA9128D2363DE9831A417690D60
-1AB85DAEADFEF2F4A3A7969FE5B96D84DB5772050D6F53F6590575FAC823B927
-4972C9594891AE59495EFB7864B8953464935564962DC714E125405D36655CCD
-60AD8458130E5E8A3875B45CC0402CE58AC32B94D3B94F9734608A1047C1B285
-09C88391CB7044139E361B2112884EE41FBDF80D14BB732B6DD02B76E3D095CD
-EB31246B43491C83BADEE432C9326AEC75158D00D1C58CFA952400A0D8323301
-D56B2D8FD9B46728C116785AC40278D79E8452A6124F49A716F2738D53936258
-F0B9362EAB8312C31E50DC187E890B4FA2C52EAB212E3D3D39CC1217A6295E19
-79A586D6C8F08F81EC81493F81A7B69589D5F475A3F6CDF30E27BE8888295220
-50896BC69443E1327D76224C811E775D0F8DCBF7FAE4534EF4CF38AD394C21EF
-2D740503C5D6C780E8FB9284423EE34E94D6800F3D2EC626E7885629AE2D4B98
-693FF2A446F1BE37164C6E87D4A81C445C05E5A843A3362D556A9E91BED678FF
-E181B94982100E9E76733C7B962A4389B5C4A4AF5319FD15CEEF40C934AE96F7
-D35A5FAA2AF62332D085DC0E41F0830D368D2FE990A9C4C8469ED98357D22A03
-130D78FB68C41F7656039C26CFF05D06E37D0023ED3A2A1CDAA49B48F05CEF1C
-409A065423773904BC3B35BB7EC23C70D7E2179055F64295D6C26DA5A13C6ACE
-3A613975E20DD291E78CB706377A77F14FBFFC4467C5CEE9ACDC8B575486B22B
-105F469AB3D78893B22B0F4D36B4086FECA22FC669A811A157B8C48C329EE190
-163CB10FC9591A21DEA4E151348E4325D77C99F5F2DA936619946A81452C3790
-0BD3CCA2152F162BB054A8BC2D903738CD8DAB0657500721EEBFD2BCE0FA0B4F
-8F2B3E2CD4B35F73DC2DB018ED753E107EC31F0515D124848B287970F50DEFB1
-10FF0E14D91C458A3C7ABEF8A9273B73EB0747C515C657CED8E77F78B2A0B443
-731435648BF76EAD113CD425303F26E441AB59C6BA365C5B09B1971CF05DB709
-A0F62964C50C1312EBEF6E6AA62BED4DEDF80BA158F65CEE2465B4C2281A8CD3
-DDAB5890A8FD5AE1B3EDF8BD3E5EA0FC1759D8E994A6832951D91551AD2F650A
-436EB285D34723815A4C074A99F5FDA51DF75E2B40D1C9194B151F79AAF816ED
-EA7BB74FCAB20FF9DF813A6A915D4EAC1E9DF757FC7E86D91800ADDA401F9A1B
-CD298BF0615DAEE7907DA34C58AF2D7098868A82552791C3A04D13BF93430281
-DB8E11142F422A814DD2D6AD3770AD55DC289F68D3FC5AEEF503A742F0F67F75
-6C7F57A2D6553C45A257F7C93ACD74E9E70D8C0F3B6FBCA40FD7C91DA258CE49
-5AE4D41FF690F7D4FF9AF295D8F9E0AE4C19043F31E3547E5735A31511B33728
-733743C04B38C14F8F8D31B1B2C395127BA8754622198CAE8DEF3A7337237E97
-56CE07074E1B86E4A568A81A0FB683B5F3F030D429C669C714838547232187F0
-D9B44FAB1C7A7C84FDD4D4EE107BCF2238FCE3895D7B04B8F9B39FCFA3457895
-16599DD783E3957519EC36C12D8E26C54038409C1F0C4507E85C7A505915FB13
-EF7352C8AC4D5EB706C17A5B3B5A20079362C98F07959A7E18CB6EF397AD9404
-05F98E4BCB8ADF0C26E70E7A97C355116E89A6CF44AED1AB94E9EA33CDA53EE9
-776A15316163896EC12992D87DA8528C4A653C1E905C3E89CA3318B2E94E5879
-C62ED6AE9762268C29FE2E370A7F75C4FF689C0793FB83E43E7AC98F41116E02
-697FC8F44D8E5CB6A31F74015882E510375BD44C5FE6808A51B548BA2E66526A
-1D492EE72A6F9B62704AE5641F45FE977A7D225177F9B57AA7DCEDB7BE1256C9
-6F8CA813CC5AE2A3DABAB4F809D79419DDD9BA98DC5FDA122E7264CD9E742EEB
-E246499EF135D617967C5DFB96A4BBB1A01EF30CF61257F33D942ADE12201D5F
-A8FFABBC64082434D435B500210712144E2C85325CD5E2E3B12C34FA5C0512D1
-1761EA84C567ECCDC6BBEEAC9F8CF5A362CF58DD8D5252792ED22C7C75BA3B2A
-D47483C207EC345DDDA6C0951594D07642B8829CB8F83105778481589813078E
-183CEE5E221F77C471F0BC6C86B0370468FACC06FE1A7458459D2B2918EA39EF
-7B88CAEF290209A95269C6547372C64979F9CFBE57A51E271297CF2D39AE8C78
-9A6339F769889374FCAD05DCBBE9683CD7E50E6D899184031D6608B4AF4D5A5A
-CEEC6398F13D9FDF9C55692D47AC0F0FCB87E768A589E310B0C20466A163C2D3
-6A8E98EF5EFC53F22277D5B2AC6B134144855CE5E63D48BD67C8CA083298A1D4
-829A084BE5C865DEBF8AAE02363735A8B8CBF71F10C1ACDE086726C3CF34944A
-0CE6372C2C195CB28F8334A15CC95C4022BDBAB99878FF75E5C2614E175D7926
-AC009482C0E086BE5ADC8118A491ABC367D66FD4E46BBE212CA372F1CA6D1CB0
-A5D65B144FF22C279F95890CD4959329C1D7DC4FC1E20A83DFAEB1F7EB5D749A
-0354208A861E556A76B234E556C8C43FB418669E0E7347E6EB8D1772C7CF723A
-688CF74ACD133EE70878E3B2F339109B420416499A83B73066F8C19698EE8B3F
-413C54ABF1531A9672755D1F9447D7F1CB7E00F433AA9B24A539942B9FD9C075
-77DBEEEA378670D89C1C0094EDAFE4C38869682A6E5B19542A484A50008C5406
-E31F0005CAED31659DCE15644EFD99B9CAAA2C3B240E824642CB02F5D0087420
-D1AB12FF1C2FD0711FE0D3F2B93E0CA6589F2C30619ECC0C5A5399E9A1557C48
-E66AA5C67CDE42C55032B7E2CEC2F9E1E6ACFB5A3DC729E2111D3FCE1A35D669
-F56C338BBECDA34643AF070EB5AB67D68CDAA160E64E31BCDCCEE287BE9A22B3
-B91DB236001315DA4097B3E23060D97CC3491DCEC1A0A37E322EC47EE0CA3795
-200114BF6E694B686A7E5A3C0488A3F9BE2CE5FDD1EDF86B5217C8C441C7C19A
-762E7796A61560C711A40FE7FE5036FE9B3027FE684A27A232607C44331D2D42
-3CA7D3E14DB0031F1F29A6501A0FAC4517C8A421D6D05E6D86322FA561D9644B
-DA9E9FE34A35F06F55765E2812975FE810349982BB50CE984D95E3AECFE8EDF3
-0107E36FE05CD733B7C6DE58BC4B59F03829E3E72006CAA5B88372455801C4D0
-108E8409BAC1825E1D8680B65B13C1522581588058FCA319CA466162AA567C73
-327BED2512C6D9D84A3865D55767E5D94EF1840BF759B5EAEC3494A28FCA8494
-75C0D212B7A3C056A8ECDE426FAE59E329BAED61519A68A5E5A0E759EF4E21D8
-276281725274B6E45937B74D7F9BEB199079401B3A437B7E6B0944BDD30EF1AB
-52F285185018522A2DD96F75F0FF3A4006D71AB9349DAB0FB1330F93B0A246D6
-395724AE365F4ABF5939FBFDA681136EA3CCE095FA46938A8A17E10EB89FED6A
-58EE3A6477279D9B49B9CC7B0BAD66A71085C898CED87947BA11E3D75815C6CD
-B9F8D05729DA3575C52EBB5CA11355F44DE05B9C26150E8802E018A301851171
-4003D64F3663148D19B93C1B3513E6048BFDF171478E6B97187A7FF7F93ABD95
-7323BA09257EB0ED0E21FC621BCB445158748B139C1FA41B8DD67F0BB2DF0616
-51460906D2EFAE1CCA80103B43A1529713FE7FFAC086B9EA835CE32258C3381A
-53ED4E70A201737C03758B8409EC67AA951A37660E3E665AD50C4224CFE6BBB9
-306EA0B995118C499ADE0D5A77AB2DFADB63216409AE8F285BC1F494363ED747
-DC4C57CDE3A41953DC4B0B8E106B3794736FC68176020433A52E3FDFE81B1C7B
-967DA6D1401470E9D1ED78FDA530497EEE39485689FB0E867CE82BB3869EDA88
-6F660D8027D10804F52BBF0E265591F27163EB71BE4A363BAA186A5147E9075B
-1998871479F34F1DD5450A0DCFAF88CF6CB19AB9FDB10E63661EA742F68AF3E8
-7617C0892E23DC1A748F8B3FB820B36AFC766C7EAAE7D13C442BBA5777C17473
-30BCE04868734EF60C128C1E2B60108A167952B101CAA0FBD68CB23AE4AEE671
-00115A310871D4C1B711BFE82C9B2FADCF51D06D189D067A6F32C36E09802C03
-E5379D539D757D9B52E003AE8CBE168870B26704BE85233A6A9014AD37DB8D8F
-793DDC37F23F7C37315BE3BF43B8EB026F817FAE4FE818843DD515E283DC25AA
-77E6EF09D3EBAA45D07C024928F99B862E69531BC6121EC999C814978A28B3E3
-BB6DAED611D33470A6141FBFCB17322BDEB59A510D2C60E21023CD0DB646F747
-159E7260AD5FAC9F422AADB762FDCC5CC9769837F4EECEE981CD2C90166D218C
-395BFBCDEFADAFC56E8356B9D89FAFC5944B344A7BD14BAE6F0350773F3F0B1D
-73CBA4A588CF44E692084C1002EADBCC7C6FFB121233CE863339A7B43C97C7E0
-4B518D4F5EEFAE7658623D078740BDE5E6A76E0B411FF88FEDAD541E218488F8
-90BA4A1E68B134037D33A4CCC119572792C37BD87DD6D79239F8FAF14EE736B4
-C71F84F1D7F77EF66C8A1E314D6FB56E4D7104088D0B21A2CC0B9D6098297CEA
-EB7D8780A5075B3ABF41365FBF6C83D58AAB8BFF447270D1041541CE27B8A205
-F8B71901B36D9C0391AE235B782BD7103E68B499412EB0DBE88E2DB8A3131ACB
-005F53D40EFE619EE155A2FE0A0496C5245DEC0F6D3E22D86950EA57755DB2D8
-601FCD175F44059372CB2A7469188F0430C721A1AFEE1B8DF70BD8814F276560
-60A632339376F7A6C2E840A7F03BFC125A0249A86651FA49919843103AFC4F1F
-F757B6CA66656011789D6E8323E2B16D250FEF3A0F58D20E05E26EFC35CBD2B3
-B23ADFC633CB0BAD2E0D06A41127F142E1D584CB75CAB3B67829DF3B8EBDBCE7
-9770CA0B294EAEC20109688E21273153087E09F14E7208590A9A597D41A7AF4E
-44FD7659FA0DF7B27F32F929966A353CD2FD18951B40C6AA5BEEBB25F619D672
-BA7E178549E0A798B0BC5C7C49F43384D26483A2E380C03EEDF4E041B738B92C
-08A4507FAD460513513F33EC3CEB30044443139273E37C21EEDB28044620A099
-8E25F2B93D0DED48AAD1B0F262AFEF908CD68F779ACBBB24FE8DAB4564DE1A7D
-CBDD3A92212B5157860276C442990AC77A689E3A00D92686F10316D0881980D7
-42C85538780BC7070DB3B4151062216D582F06FCB701CFA11C8216E4532E1340
-FB68AC3BC3CE53DD101571468B1651F4836130C1C5E19A2F7993F73D869C17A0
-C8D1E596F09F45D209D09B7A13000EA1BAFA8BC9991B1994C5D917FFE357D55D
-F362233E274F65CD0E4DF6DDC9E9E692514813C26F2BEE60AF9B2B790EA4A426
-BB94BE9AB2B35225D2B50C24F9ADC88A2B385A2646EDBBB3E93D825F5E011F46
-622363B38908471C05B9054CD3F0DAFA5CAFAA1E5C8E49D5A503F768C3664678
-5A987C562F482509F9851ED2BFD36951416B3A7AECB72AE03EC3FA6F91425A2A
-65C07D4F0687498EF8B1E043755F0D87A88093DD7FD5B661BA9D3AD100A7A5BA
-9E7B7E480FBF3B15941A9162CF54D3C7ECEFA0A319873487D5F8D4EBB893D736
-0CB98A891FA350BB5D83F2482AC1AF94583D1996CAF163A6AEBA038F1EC25B43
-D026A5FE434AAA88679ED53C263A61A9736F2CAD8916CF969CD2845B039BF46A
-51C052133549E2FE0D5F0C06CAF1A0F3E3D471F167AE5FEB92A6EFA6D7999084
-606FC9A1BB4A38CC23C56BB0FD2CF4B55B47BA6CEFCC939890930080DDEE3961
-1A882014A0943EC98F0CBEFFD2926491B61D20A8F2FF4A9BBD4B5B62FB8CE0F4
-15F5058E3786D6F575FA2E89632DE8FA2DCACCA215195CC70F890347202544B3
-5BBB05F8F6780A277A941C77A5C87DE359D1898B13E52C9309AAFAF7A5B3C9C8
-33ADCCE2021D62DD17B010E15BED9A96263DD000F96601F5EC658C143F90B89A
-CF56DAFADB4316CAAFF26CDBE1B156F3CCDBC49029F2F01F71C086666B785627
-195B1D31469226208619B7C02C6664EA39FC1B17E3E74BA0E80E1DC972D1B876
-78E12A8E27666B35C57460C3A8E100924084C4F49243F7C9048440616BE374AA
-EB6D37113072CDF46034D9A12821AB904FB227A924FE861D8BE2AB46A0A8E1E3
-EFE170AF69AC223283326C414C3D1F4A36D9E2AAF640BA54252621919C707651
-4EA7C7DCDF057FE814831B122C8F80FE3D5FFD727C98DB47D375BFAC1676C28A
-FD58A2C9D89A45D0AA5DFEA8BFE15F76B5EA6101E38334D33A48F7C5E3CE5D39
-DDD17834EF862D9CF22CEAB93CFEEF9B4BC72214FB1A486E0E0D7097DAA5F4D8
-FF65DC9DB6BBDF36D72D8A98C87501C66985B791CD3EC1F16E2D580DC8161EF1
-BC089084489707DFA2BD9EAA16F1E8A8236C767C1BBF93419C7D572B0DD39414
-8A24246B27B2FE57E912F8B3F12B1C7A577D1DFEAB844DC5A066E7AD104C1725
-22E1509C2EEAC373F513230E6FEBC573725B255050420B5FB0C15F1D73D2CEE7
-040931028A36008DE48B9053454EEC3F68339DF50AD17B18D8745CE64F5EF501
-A8D6F8BF8103178AEF8E96AAF215B1708D360DCA71F2F58ECC607E9F679522FA
-1B571425B8922E6FE081A175D3316DE3D0A2CDF90BCD25820021156EFD4F3264
-67418A6CDC17563031E36F4D94DA9AF641F1EFB09C351B4AB026DA522BF30ABD
-1EEB08094319E1537A9147186F7E169618E1BF6FEAEDE9CAF9DF4D3A3851253C
-57254C57024B7FA228A021511E11D22A9CB02F58778B4CD1F7B39CF1C81A7D61
-B0E70BB0D91EE565EE0B068F767BB308B099266B80B04C793361502D8FD31F5D
-1871B37DD629DD918F4333F32ED19D151D8BF5BA7B4279A64BDBD184027313AB
-EC838DD57E5F90DE85F33DCFB636B18560AA27529BD95CF51010AE2AC1322C7B
-6134E2068E1A522EC68285066084927D8797C0B47594A86F5F24266BDD0AE9C1
-75DBB220CACD3A22A78819ACB6D464248E1AF8F47E0345193D1697BE30327747
-E4CB279E652DF364E68AC724741BC6E40F1D579B26FDEE6744C88589C98F39AF
-67471135F432B8BB7D89B2FB43698474ACA5076BA10E081B93E52C0C63AD07A0
-F424B6162E260722BE8FB90C0A10E52E1743697C37A3CB61C927ED270BEB330C
-E3510FC5E207850BFE3373EDF7798A4397FCCEEB279E7EECFBC56AF659922A71
-5228C7C82CDF255A0B8C94ECB50009ABA594D9763743B771E3562FAF1CCB4872
-C4AE4249DF1CDF37A6ED7A14E6588C298F5E8FA58433865B3EE5336F42F4E06D
-83AC19BD64F7ED5A1630D40256CE80CD1115865E8EC86CD9BBBD8F744DC15048
-667FE3FE66801B9680D13B2BD1110009A91034CA838E015DE780BE71D1FB835C
-7187553DFF50223F7D3D0C9E1704F49568C5E2800FCD167D71EBCD0A7B9E8BE9
-1777212A6F2ACD1D3FC48483C9432C954A7F03BE053B9F29E78EB8655ABCF10A
-E6AE075BF446209F471909ADE5C301C1209A101B147393D508C44F941A66C47F
-6F550D29E6704F7281ED8936536C523B6944F3693E2FA15E012DBC9FCE63B006
-1808B1AA8A9FF251DDEB46ED652B51AA8D9950705D0E5780B236A8E88DADAAD9
-316ABD27CE1782AF1ED9AB92526CEE83E52709631371A7E59AEA9D1828C9CD9B
-B9947509C9C3D3C8E83F39D9CF3500E594914434F76ED51DF38CCF9BFFD34885
-A2BAC784B9BADCCDA5E62DFB940A1A9ADC09CC068C950FBBEDB8B390CB246EC5
-7DC8CAE94B08A3F4A81EDDE249D2CEA13E4AC8C765057134116E4AC0B14DB6B7
-566E31F22686C9592A3C12932747B0BFEE31F5818FE2D1F0B446437E0254D487
-F6B59DC2F4CC22A67590AB4EB10ABA9CA9A3F0F59B77A0553D19AC6F3DE3B129
-D53B72833931E905EC3D0436F1E0E9C7A1770355E1F0069DED7C556575F8B93E
-DC73B90F8946B4B5EC77CF735F8A0A65F9E80B6DBDCAC6CEF6E12E1453B3F553
-2A64C0A1CDB94DDFCDE35362046C8588A3A779AA3A2E4A2E01DB15ACD9677391
-29C3AF69FAF7BD85EC9C946767E2D182A122BAA738A7741A942F7785034A0D07
-42BA9BE7050D9072FCBAF29D65E92DF8CE7FEC7A719592195C6D63A43CAAC46A
-C45FB4F0DAB166058080D42F2E45A48A503096F0AA59BC479B39B55D1E0E1532
-CE3A846A896592113789FF94FC25A4A8E5316FA73D2D4DEDCFC6DBA5DCA7CF88
-FC19FB4AD0C54C92C0A230BDCB804C801A52FDB805A0092FCF69844466C38738
-9C785B701286E4292ED76911CD2E9FE4770D77773A4553E91A7EC46E4C331783
-32AA7FF1D6D7DDA98A6A952599703DFF6225730A8D4E93219A56F34D5A5A5289
-DC36527D8517E6AB6808B7414AE70296D351D537AB86496D8D3F6B921FB97B85
-A1B49013120498F86171365E146D84E1BEDE5ACB2027C4B6EFDE50D86CC26170
-C43B0AE05A5C50C62AD97BB8DD717A1E0EECC70F39795D8ECCADF8E6759ABAD2
-4A73E88A0AB32EE805769F1F06DCCD501D7EE67A5BE6065CF3E824D4BF35B4ED
-FB679D49181CB2D92EC43CBBC10585C22B298F9353EC2C2E0A29B149AEF79485
-83185C3EB90ACD0A215789889169A9CB694852AC9D0395E77B15813966294E84
-36BA871AE451D92E16D082829271893440E004B3826687FE5C0F1352348075DA
-84AF20BC2E852806BCB6DA59C0E5B33BB059C83864574F5C848EF4165817AE18
-ACF744278F2643D74742FEE49416941F7FFAE17D88C67D313F7937E72F697544
-C4404950E6A6C99BDB94952C226AEBBC4A91679EC34B69484B4450DFA34D04A5
-578A5534490A58EAE2774DAA299214F52B9483E236CAFCE21C74ED943AF4F5FE
-9C31F804E0AA75FFA52EBBCFFD1A3C8349563E0D1D3E46BB0B425839C96E1A4C
-A740D8CF6570B39843FC697C744C0E1D3B822A437B5E66CF6D1680F23D24416A
-B19D8E86593502F5647AC6103F64C7BD6B5BF04C3FBF04D6E67B52D82F0A762C
-FB432AD2F61A5D1CBB3CEB6C48DD1038B699A48B976B4EC4131EE7E8A068A8B3
-54F3FFAEBC521C297D90E32580CD732A258874525C3F9FDB5DDD209260EE05DF
-F3E8A2D0CA06F61CBEC97C9E52DA3FD0F2FFF392CDE30B66A312872040D6E705
-EDE7F05B60F7B34A452BC352EB461C3C9138BBAE4C1485D54C921284AA507683
-0842C04B0AD4C2F557E36DFACC7FE521D3F2C16F74D4672A763DA871F797E22C
-85A06663533F0BFB24AAFADA931060A6F415D9E5033688F0B613DE3C7A612409
-0533E8DBBD818248F682D2486DFF96C155E7CD9CEB8E517F95A536E38CB441B2
-A5F3F0BF1DF0B82D18F2DC991BA73B90857AF508FE8D73C0F15D61A2403FCC15
-D477F89B7702D21D448BFDD2FE7CAE3D84AF33778E522F04FC4481BEDD5B7606
-7E16E62C5C86EBEB839FBBD8AEF0312EDA339720194D49E26B04062CE8A97011
-60B8B325DF0ED7F07B2F5689D3E84DC2DEC28338D13F0A34338F2ABDE9283697
-B2D0BC7D56939043D7A1AF61B5E2E32837A4FA5351C600C360B649DC2C61D4D1
-4423FE5C06360DC13CB55AA8E409C688B66CDB975B331D64844E7F82297BA753
-0C44804DCA61A02A196A26F774AC8E85EDC0626DEC85094D47488603C475F809
-8E78F46CB2021F15F62EA9EF558CC34FB19B52356B5BF76FF905D89F7304C25B
-F7C5CB14E9353FA77661136FADF1A4A68F29430532F4324C6385220C94D1632B
-BF73D29C762868E58752FC0FEE71CCB558FC1569E321A8F875994C3406BB6728
-B91C8DD3D79F020EBA2A45C8E63040A37CB3135244B0E4817DC0056DA8632652
-D13102DC9A8889593BD86042D341D75520F00DB90F370F18624152B76D2ADEE0
-07A32308DC57325F9CAA8C22E13C586556DC214770C6B2C3C957DA211ACBDCBC
-8C0C94F298A60384E295BBDED37233B958E9CF8D3959F7B773A87CC06A7AA396
-04E51B659EB5802E221CCACFBC6D9BC21DE9E43A6A184C43836EA0EC3376A389
-4764B8268B61D24D9251123875C325EB2355C023F4DD07832B1D52CE45B141D3
-221DD9FB5C6F006E00E33D927A36D6CDC358FC343FE59B8F7C4175D79D80D717
-5AFA2DD1D28028B15484B2110046B636CBB851151DA49909ED1863F9A77F0DAF
-4CE323A16C37D5951411C6F46CF3B63E5701B0658D6578B749FD4CC46C17EB7B
-7B677A98A731EAA62874D7B3EB3FB5C3966E6C5B3DCE79EBC94E04406F9BB211
-018B6A0FF146C8EAC09F40AADB9D9E715836D3E8A1F8D74BFF78E4C43C2845F8
-5F388B216A9B469D757E1FA21442FAC10D95201A94D4B2A3E32AB27583D9578B
-F9A00FEAD1E6625D9C188CAC2CB740578C3EB70DA6FC811B7CA232ABA382C217
-A0B45020AD71AEB6947F25C062D61CBF9E1EA9F5C5C412ACBC0A610BA53B848D
-82B76BB1B9563C2B9C6B767961985B8810F1309C2680610EE2A0F0AC3035E4EB
-CD851EADAED3B02A15171D870DCDCD2836E729679450AF4FED103088471CA627
-7A652B029DDC0DA977AD9F887A6A09FA627E7AEEF9CF9A70570D7E85086B3B4C
-7C64CA853AE34656A9672293E79BDA2BD7D76DE659FCC91B5A6D85FDE4EFA0F0
-A9A77B2B2C726F24623AC0A642BA5C96C2FCFB45173C8F9FE802CEC10EA4C218
-8B17399B660A873075F690327DB080B074E4D2227FA184F124F6DB2E5C4A888C
-9901B497976329C4280FFEDDD2145F276A8F5BDA3DCF6F328139433E534D6408
-15961502389B06B89244827DAD2F9353BA0E018D6E5C5287857568A13721AA97
-1E0B02E21036F3D54DF0B70453DA725D43C31868A842A733306650A0749B8032
-18C1AD1911003C179EC4A034EE9615BF2340FC3644314F8C0D54294BBAC1A9FB
-DCCE7B54030DF2A8538FF754E88169F4A30E4528F3F4438835BCA81F668227EA
-AFFEFF037AF998C4AE80A33EFCB8B5BBE775ECCB1EBFD11CDBDD69348DE65339
-A1A8AD12D3148C97FE1DF66DDD939761B6FDDF7CD5BBDBDC3423CF739AC51901
-73E7EEA146B89367D6EB4B2014D3649723D95326C9012213A38362F78EF65403
-33A9B903F3E4A712F8DF5F35DA73EDEB95F69CE5BFDE18C63728162AEDE5CC1C
-58516642B85817A647AB8540149691B2A410898494B1F7E15F2DCDA15A63F816
-AFC836144C26501C08A0B192FE81BECDDDC00534A3C3FE0822F056A36062CE66
-20E421B5D0114DF5BDEC0A7E45D57E6044C0F1F284E8AB131526BC67FB32412C
-4D92EC924AC7A95DE3547A07885F78B4DC73FEA3BFADD31DD221989CD3463FA9
-D370770AEF433911CC82BE2816116D6A585EC5573A555C4BB445FEFEBB1EF6CB
-E62EB4AE4895A0025AEE226ED74118F5F7731E5E1FAF13B56F662A6640118CF8
-E326F9F27BB3D99D097DD3E5EB4B5660905F5C15226BC80BE881F503AEFC6B12
-081E977D87DFE7A7E771FDEFB57418368860A15738AEB3BF15C3BE94AB12E2DB
-C19BD19BAF7E26665340ED738040BA404EA85B142B939B71F3F7058E682CAA67
-0AD6C1C3B9DC33D4B2157CDB4039453E7D1C0FCD06ACAAEDD95B49D75026122A
-97413375774206EE8F631BAA78C454C8BD269034
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR7
-%!PS-AdobeFont-1.0: CMR7 003.002
-%%Title: CMR7
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR7.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR7 known{/CMR7 findfont dup/UniqueID known{dup
-/UniqueID get 5000790 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR7 def
-/FontBBox {-27 -250 1122 750 }readonly def
-/UniqueID 5000790 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR7.) readonly def
-/FullName (CMR7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 43 /plus put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 61 /equal put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB981ABA2ACC9A23A5
-3E152596AF52983541F86D859FC064A0E3D5FC6647C3CAB83AD4F31DDA35019C
-CDB9E3DD3FEBD4C2B36BA3CF6E6C7DA85E25D8A31A9BAD39BDF31FD0D1790707
-9DE6A078E8A409D8295F642DF492AC4F86AC84383B0F4C6BAA7C22AD5A898A71
-D6CB34D2CD12266C486B75E75A69C14819DD9BB8159088E04D4717E576B8482D
-BDA52110AC8B8A80E4E9D58F470EEBD3CF44A1E1EE8DA318FFF3611B02534FC9
-F4018C7C57E80570D2F634D98BE5D5EC6D95051157F0EA94A3D12BE0B4B79939
-F82F8D73136D3337C44E314B0B16CB030D9A12E01FB667105F334C3EE965E5A3
-D410D2F1531547A4497C355AEEB295CD3C5334BEE5232992960B757594B89F3E
-52095042DBE6B4DA3C3AD50CA95EA9EBADA10630B500CF1FCCA7D60306743681
-7E428D33B7F7C40B425CD58E4CD8AB474BCE6A307BC6C6EBC15A8A96E0E2977E
-A33389154536F5C5D8CF036D07F24094E779E5ACBE5502C92892F10F4C6DB627
-C7EC4C7BF20B39418A8A85D7FD9B0EAAFD871DDD41F93BDE5FE619AFB8711824
-DE890E62C1969A6FE28DD3578AF43D58A728FAFF0B9FAA640962C8F35A26F76C
-67F3548D6DB54A25CEB368B47F97EA2B0C4D7C0E7894A4F0C823C6C1922CF9DC
-10E05600556F1C7C9AFB33A2DB6F8730F70D6BF94B1FB0887451F2FFEEF3584F
-DFADCFA9A2D4846B8F0E51620E1327D994CDF973B837D10C90FF76DE22B47CD5
-EE3183898D156861AB4DFAD34A1E3FA260B8164E6680BF58413A553E88F6100B
-C4F4E8E972C81A5F88A7DBCDC308B4C3581BCDE13877B976B1F84330839FE5CF
-C78551620EB803DF94A5C921F8EE24F7EF8FC4C3E1653514212631F54F90E3DC
-E9EAF96E998F340C4F729ECF7AB430FDB7C0BE3DF2C0D23015820E28B743CAD7
-7F0AE95413C3EEABBC69E852F53EE1DC260D7F1E712BECEF2F18437DB23D8E74
-2902AAFBC733AC5BAA452DD6F3671859AD836C8564E99CDC4183D8495AFD99D6
-1F0D65B6588CE7546717911E25BDCA6C2649E3A7466A3E2DA7C7994A30AB4449
-672EFD00632EFA8629C1AFB7D53D801028F77C864869FE636213A69173003EA6
-BE1ABA95EB07B13D1594BEFCC95ECB0A9CFA9892EE0677D6B6C250855762B7A7
-8E4E022640F93169DFA0303A0D5E73BF3E0F4D4AAD10FD7E4EB20532BA30371F
-E9F480F9513432946F9828AFB5D4AEAFA5829B2CB544E5EB634C4537EF7DF08A
-A1CFD94A52DCF0E7CE4C5EFFB01E6D50558B75DB4C8D5512B06080F27BE62E01
-2EEA6A0357441401458C842D3DD4C35B8F561D816B336216CE0C14BF77648AF5
-E33912CF95872A1E1AB9A18980A0B29A881D13397C15E1CBA5D3E0B27943EBE2
-F3003D15EB446BCFC1C231832475D5B7AA19E4CFDE119D6CD62D053C6D29C333
-5F729791D17B3F7108074EEF4D1BD101CB33E01004532CB0D716D2E54D169C6E
-80163E70C0E9081F31A1ECBAE079D2A518B790B0CB2CD03DFD034A0F4788E800
-B0CD2DC1FAFDD487C2F381EBAB2A2F3F3AF82021B211DC9CD2FBA6A1BB3D4AEA
-4C7F3D9A5C21DFF284CCB827D205A69638E98D5DD8E36AFC1A4481B5CB2A2E8F
-D6C838DA6F81990F5ED928DC7457501B5C979FF4CD20A830896A460C5DB13D56
-A3B2B5D9B292374A9BF392894DD99FCD6A1E655AB395E839F074D1596488700C
-4E2891C8AEEF66568E82A8B826F9A28FF84D4D9BDA21F638EAF96880B4EBE0D8
-081982F34831A03BEE81FC177700C2360D2A48915EC40D5FE85B400E175D5AF1
-067FA0097904FB647757BB44B4042D30D1557BD0F7922D731142FD682139CEB7
-58CA4C8C240A0B86B1888CACC507E24E04020BF1882BD9B4CAECFA97DB24D7F5
-AD64C69454027F198BA35881B94EE9159A2D73E450C3BDAED66B886D6DEBC84B
-653E165176228F88993F12A170775A8D7038BDF2FE8DC1F7B98BDC02D1E6686E
-9B834F6C0AD90780B17DFE25F0A4E470CBA84E73F2D22BEE09A040F14CFA2C14
-0FDA5A5149B5FAFFE49F55EEFC43831BC43A8326FEE9C7F469C0FC3B000884FA
-41DA7318EB57262CB96FC4EC7F16CA07FE1C3BE8C2DBC8A8135953D6DDF20BDF
-75A2B6D26074FCE752BD32FB9F5CA797775E8DB9BB9786B469A3CD65A0D9DDDA
-C2A166E454A94860EEF5B5C12172DDFC576A03F6E6F8A735FF21A3E9CCB4CAA1
-3064893487697986A42CB5888B2B0A79FA3C74E8187BDDF7BEAB884B70B8D4AA
-AC6615745AEB906E08BF831CFDE222F58D02B428D55E9D5A3CDE74E42D8A2CB7
-E1A3A9439B678AD438793ABBEB72B21C58981DAF3EDCE4BB93D95F4A1E943BBC
-B3A012DE92FED4F232A3A7D60CE60B605151F9C7C18A5C653E5D6D15E5B49A63
-73E7A339504D0ACC74B8B116EA88C3EBA2CC631AAB29F761E5F062966AD2FD28
-7FFE52FA8A115DBE23E471094FFB3CBAFBDF11B7E9058313F2D069B2CE98A962
-64645738F02A31E2F2AC11628724034ADBCEE012721EBF0A567893411F950410
-B20754A7510D041FFA6144AC9CC46D846B82581F20BBD001D34D9764010824BE
-61C30D05E5C5D100A24F1917F01799CF5BC4E50FCECFEA732CB50196825F0E08
-8A1EC868C6D4357857EE2957E081A0E4372E31A8ABEF23C3F2EA0FEE57DE4D08
-61C570175C41AA0C7A3A579ADF593F18B4AE3782D2552E4E0759C32E059EE741
-2D8191E381731769F6648B3581CAF11DAE46471896666F18F02918B0860BDA3C
-BD5DE777672447C23C62ACFC2611ED5239D6A266FDA6031EBC5A530C1A2FF7A6
-B4380B9A4C877267854AD1F1677CB5433F28894ADF93D39EAB94541A8D232E08
-22D082D0951A60F62B87DC028714EC74133A4D65F7D0D1296C0E189C4A42AA98
-28E8AE7ECBB9FC8DFABCC6EEB1E9FB06227F90808EF31331CCC5D4C9A6182181
-047902DC9FD0444FB94B60FC74F3B677758088CE6A159D940C5CF682335E756A
-8BACF06AD7225D49B0002392C889B0FE2C71311D2596F4903D12FA20BA2FFE25
-A0804B4BC282929BE31E0F46B34532CB5795A65218CFAE21F390792DA67775C7
-B91A2BF4C16DE4F6551DAE3A5827F616BE9040EE6B1008DA2F99A01EF66D697A
-6CD1A44E0A15D1F39EA8025E886A68A1E9C334327C7703EE721E497CA924AC90
-7723106D913C5ED4BA4FC743CEA8D0F5172526107DA65775C0B1B77179D336C2
-9B09B608D80B1A1E87CA1A84A833A00D980D919BFF56F6390E9D5B45E9935CF5
-E69D003564462F750F7DCE02DC23CC215A0696B74D8BD3156A392A94F557655E
-00BFAA035647568ED66157FACC585E411F7F428569C147DC43F6E4FDE693D0F3
-9917BEFEDF61FB980B85515FF6424824E2D995B05CA1E5D3E8BD8D3281DB7CE4
-E54923E84058FFC0A8A2C491327D0F87CE4C352B724167CEE224DABA3B95757E
-4A419594BE4F92E78BA6D35D4C93D31ECC3134B24A45DC32445725BB044F09A3
-AA8C31EFC0A2944ACE2F2CE054CF24DB350FB3C71115518C24BDC0F7E54250AF
-9D3378D38480E1CB9029F31570C619A28F065CA4FED5665EDB96712ABEB33B9B
-4232C00C1B0215F08D53F7E430887035AC25BEAF06942FD1B6C442253C887AB7
-D694C1A6115C8990B4CAF1E81DD1FDDD6B03C00055BE956BE7FD8A4E1049AE69
-EDA8593CBA8C4A41E046C689FBBF9F1B64E5856A7FB1C61EC815A56DE2A8ED33
-41F370B8203D4E5B19C63AE9E6E0D26F4F3814B5AF48AD30EC9B8402C941FDD9
-722FCAFC638FBB835F83DC77F93D367266FA7DFFFCB567EF82B1695AB4D94D09
-B18AC041811027229DF431F5CB2BBF6ACCE9D500C8F075A74590641C1A607C56
-D2B8624797BCD9C91C3177818691FBB4744EDB6056464A0B95B8D63F7C22309B
-82D6126E2057BCC9FE5566D96B7A9B201A09B0D3252A5494C8CA2C8BA8A13C29
-37EF2A882D61DA708C279F663D88A8E2999A0F3B6F98C49901A7631BF7708B67
-54D0B4C52BF4BE0DA0439E6763A7C9D639AD4092E77B13D3510DAE1475C978AC
-796F9B2AAD3BFF35C5A3E19B5E2BF704B3BBDF68CE48BA4FA2496D60E58888EA
-28AE12D00E9F0816FAC190590A865BB58569A91BF0345D01230ABA361442006D
-BA2C90EC2036BBAB79EBAFC3F217DBD5854C519235F9627A1C3C71D21ED38AEF
-0BB40F3B86BB9F09A3F309473D8757AB7E638DC1C59A7F9BCD49DE4107A2E54F
-422767FB94048987847205584309397F554744690ACFFDF5902FE5DB355930B8
-71863217830DD7A563B0B3A4025ACE75B0E777B4414B62A13B50C54E0E6D47E9
-D43BF769B9411B74E1069BF71BA873B4B8973EC9BA492A5DEA58D267872BB246
-10AA67B143D0E2223FFB4991E583E629413CC894C3FA4869B72D19CE1A0CEC8C
-0FF5E5A3EC1FCB7D3C4289813F0D249A11B55104BD60B2A89BEF44CC77CCDA9A
-065B8B83B4F4253AA1D535290DCFAA4773452D110D2B3370F9E2FE5432B54A9E
-644EB3BA9BFF62347F376839024CD5EF3C5DFD30F412DD5474B7933E6A1AB63B
-4B12F2417C72D0543C26A263AEA53E5BAEBD67E23553A72E949DEC556BEB5D09
-C4D7A89B14FE4EC68D0E3E9D65A64B285E53590F418EDA8175113CA375A29930
-DDCF4C71ABB26CEB800C2C2B253AC1F53651C88A56ABE5A74F3B54CB4FFDDB92
-60AD7272BA25EC2F6FB759AA6E1E7964FB55AD09F4EB25DE45FD01833947BD05
-6266AA8ABB7DD792941C7A070FCF3A4636FBF8921C70298D42FE92F079DBA2AD
-6149D9CF9EF7264DE6DFCD4429949B15EA90B596340713BD61926DDB2BB23BE8
-F9DE38A31620A817420A245946E551463960A8C5C7295E3B3D6A59BCDF5E472A
-40B7A2CDDAA43CD8AAFC411D037142579D11054A903E102DF0D0C7B5BB854DBA
-F3F086AF991F7F5D5C730F8F9AF213F25786F3EC0E54530FF912F4876FDE16B6
-A07D0DC4FC46EC6363BCB68B83ACC448B801EC43FDD2F8BE0E93D809FF81E38E
-176AE17C67C85FEA58EC95435434C49A950AA955D8B20989C550AB1F1C31B7FF
-99422E1F48FB7D6F327C6DBC4695A03903DB275B94CB39386E46579271870A25
-21823E75C377E9D5B46655E8CD8F986372CF8BA846423E26582315A9D19E0BF5
-305C32B2A0EAC3ECB275B1D8BE11A37ADF524944219D94EA2C5DBDA768828B6D
-775DA8CDB09E0570E4ADDF462EFD8D3FA3F86B1DEECDFFB699AF6507257C1879
-16FC615868C2D51F03CD57BA38D42995D9164B257441210084DC409B6EE4C119
-0B2E17B0A8D5326DD0010E4A325D5F77BF935693BC90A00A28C7B5F74817DA39
-F47A41E32F4F92AA04D30D810F7B1484EB53AD8CFC8CE8928B570314E0F713F8
-AF127227190F9C16BB73D2A217FF801C391A29095DA5E4974D137A0CAA7DE702
-E20DD4755B1D78739756A5E7EC3542B96AD6844199FFA2F5F2E9C64E2DA4FB2A
-ED79869F745C59D235438251BC2E6D26112AAED20E06021D1AB896EE1F1DD2EB
-437FBD4A25E42245C5A647493FCC9922E6DD7AF57D5D482921D1CBD6F0F02949
-C27777144751C1E72F4EE2BC343D4AE7A8A8758123B54FB1A026144C643651EF
-0907A376945E19A8FC7F98A034832A5820A481B0823F980F59623E0511593FEA
-BDE6EFBCC0383242CBD4954027B075B21F10472059A480D6E5ED01C3B07461CE
-9810251A5C5643EC7403130C2246E8616CEA25EAC7A0076731FEA8CC43BCE3BE
-933FCE61067F5FD402E67E2B9DAD954AA77C5BC86BC5E4BCE2ED676D8D8EC7D0
-ABC5C86D82180B9D5D7451C71B5149B6B67883578DE9909317928C0A92E3205E
-F23015400A1763A6FBF67FDE3318AD2696685A1832FC31CF38589EBC7CA1C818
-60D2B2211E04EFCCEA88D9A9082E82951EEB123924A267CB03C48889032F2892
-4227E217FA28F87E01CBF27BF1EA60641A4238258CB7AA355908FE36D90F5CAD
-FE992D03A33E47CA9AEBEFDA57793F39DC6A9E85D5B289F6B862B35DBCF82E43
-5CD6A862F6FFAC36478C384C3BDB0148CB1FEDF55969C776E77917635B5A65EB
-F2AD351D21CD3822D43289FE8EB0FED58182997097C7E9F4373553AE1CA92083
-EDE3BBE6C3BC7009D15AB5FEC6A59E9FD1BCC7B2099CA15FEF083B9CBF7B890E
-CDDDE6BA0AFF306C76500C945DC91BD533FF9A585CEEDEF79238C54E6168001E
-26FEB29E523EE501BFA4F60B782B1499B07084C35A2434B4D29D3D8E2C8F945F
-A9922443B68D07DF7EAA1F4CDEFFC438B597D8943E231B5216808A85F30EDC81
-9DF5DD22F54A45335B4C2203887475F39D247F0E7347BACFEAF220ED82F9263A
-6488E73C1910023E505FDEB143006C1A351D441AC57F9D52D2C6D63D78C75605
-999885676BBBAD56074298E0BFDACBA1830BA58E87F436CC670EE8EB1870154D
-72DDBBF3794F8CAAA3F1E11DE29752DD99EAC695838A19BB67A1FA3829B6E0BC
-5301610A0351AAA749F456AE31ADD87D6ABADCDD1FB3CE81C3713F48780DF407
-530CB284B2AC709F52EE7AD647DEF9FA4D2A867CCEF728F3D40CF34C28D21527
-10160B3DAFB5FE16AFC9D36C6EC4021FC189005862082BEA60AC72B63AD27D72
-FAF3C2D89DA2648FC4C65104A069212D87144E8533CD86A6D73DC7CD9DBA25CE
-7DA53B000266F3871B24663C77723703315C5E4A89DFCDBAB384AE7EB2F455AE
-AB191FED406F7F6EC9E5B8276EF5C4CBA041AC7E8BCEC7CAE840154BDCA3232F
-15711ABD1E867A434E9787CA0A6D1F197597DA27ED2402CB2D84ED082E8D3A39
-81E6EB270DCA4E7A90E2BEBD3CBB3A2BE3CAB926192D7292CC16845B6399A543
-BCFD224BB52F21352732DB5154FA3442733066CDC3E186D8AA97CD801DFBE43A
-116C86889BE198DA88CA978B8C40ACB67E8F7BA499DE68A6FF0DC72C3D00BA1A
-B378B39610F15CA026F95ED8155CE3FFFFA2E2FEB352DBE14CEE1669F2387B70
-55B91185FBBED764266215D518716EDA3DFC9E5DB6B148A553E75AE5E38E1CFC
-6EF47B314D54CF24BC13856F4F7C976BB91D143DE32FF49BFFC87E17885A1893
-BA1B8E441B08EFC04F7D103C1FFBB665194B3D0920473740C55FB1C50EBCF717
-A2359B687FCEAD65616EE89A68F8D91AFACAA0B238EE4AF0279AF5BE5294C3DE
-A7E1F5E6248C0210E7D40683F04B12A933C746ECB517CF94BBCC6E4CF49AC715
-D8005AFECBDFB7A6B417DB8A28F8E9EAF39CEC1CA64DF37A5E66A76C26F721F8
-A63B003A040A62F87DCF61B298F960D510BEFA453F118E59E7DE8CA3DD002EF0
-127EAF733D5C61B5132348D280F84D159809CC71A3C6F7373BBFD8D6EF715D34
-0016DEFF14AA5F960BF1BB9AC304A1823722843547BB4CA5EA4C41C6C2701C8F
-7BDC810443F9DF34BA469A3260009B799871BAF8523C8763544DCD0B382D44C5
-F75046AFF85F0B5A3188C2EE786CEEE5496A5AF4BCB0B429CAFC403FB983EFE3
-61FD9F52ADFC38E07A0FD7BACBA530D2E4DAB2592AA9564843E7E2305047F060
-C5FE4243FA8FDF1B5D4F61ACA7850A604FBC6D6970959752695C90F78961B4E2
-C8CFA41082B1A37405AABCEE5BA3DC2B9EA76F486117B84728EC6D8AE6379CCB
-402C2AA89078EC992C00D53151E9D82C65643F549A572A20F05107A41BE5AC57
-8EDE92AE20B05E2D0C98151CC92D5389A675DFE39DF546A33A84A4C534337ADE
-B17C34E09145B37CE1EB1D10D42CC8D6E6B127A3809F7202381FDB88D42084CD
-0AEAEB8A8288CB56870EA2BE9D0B9DC8291021CA561E2BA388DA3494E433E0EE
-5E69DA51D0AC505C9F71562D3E9750F23CF14D2C8ECF0692FBBCB4A92B48B4B0
-AA2163A7E18E8FCD41E167D93B600EA8F397B710EEEB490F61CF81FE31C93254
-2912B987A9BFB87F71AB914E836DEFBF5CAE7F91D91D44C4A9D70992C1F31DC6
-AFFBB6B4746899019E44605C4B1825CA5F3FBF96A21E24C2B7B08D084D52D8AF
-08626BD51584CC05DDFA42B196E9024DB542D76A79A2A2A29FC6DC756A71F808
-728A2EFEE04014E47EAF15F9B9D348BEB927CB2CDA74809941539B92718AC156
-0490608F78ADE49A8ACA8D973C77FA015D982C53211F5913E9E705599C3EA349
-ADAFA279CE3D68916281A04E31B43C9775495C36C1F01F2D89844797CD4C7989
-DB35C7A8FF93C8C339B45C23BC0A53FCAE77E912288D82D1D5D4854F6C3B355E
-2185F626DC2E80C0CA4307024FE7E29F31D38CBBCB47A1E525FF27F953A149C3
-80122237308031A5C59C9706132D098BA52ADA347A996878BA0579844075A33D
-2E193FBC2FE8D4AE9E682D072F1A06A93D4A97D3E3DEC9B40BEBD83F89853DD4
-E223F1DFFD615CEA95C026C680F0E2C77A4BECA64400043C2B084497F16488EB
-014030997C75B6EE5FDEC558CED18AAFDF715E2E3A24C842C7298C5975D68F29
-D09553834657C4185C1A86A224B899F96614ED813BE271C3EFFC51C71E0C4F25
-54BD6F1F8D8D07C87A637DBAD3426FC1C81FBB16FE2AE5FEEFCBF6E51C6A5A67
-605A98171E144DB39DC0E2454E9B143D22FA6E0D4B9F2ACFD07466D39864601B
-8C726A06B255674E9303C10C28F569187BF62F8A87B3A0241B93C0F017D6AF28
-B8EDD89014B23401860AA2EA40BC12626C125FF4DD8979FBAB439117E0BE64BD
-91A726065DA1FC87700A40C304E47E2507EDD79BF25BD273C47F8BF54E089AA2
-815DE7DC219C1AAEF052D9B4EB1B807B688975AE9453072F300D0AF84C1DB795
-BF643E3E3C624D27ABA35D5E834668170499FCEBDE54225733D1B7134EADD8AA
-E3B09BED2BBDA71DDC79A498C80268ABE1A06E87DFF0018D1EA3344D3090FF7A
-482A5242D3DAF5F9BB1A5A52FA28150F8A79C1C6792591A3CBF4CBA99156737A
-BD585D71FE5FE50938C6C6FF794FC5AC5CC7BB52B34F86E95965E375C7C53FD7
-0A5BF985984FD8BAF260F398EDD9B6749EC08D9B25CA7FBBB8DF90FBF2DBC907
-8E181D3CE52A5C19E20320090DCF30B4C8A91B8EF88659E272B72127369BA7BA
-9D0A3AC52910DC04E89F69901C86923ED5726F8CEFF57F15312F90CF2A6A4667
-93EDE68CC67B5CC1BEFAF4BFC0C09220B5092B78E11FE65FC227C075D4C5F8EA
-D0319197827EFE2736182F847B4304DFDA37CAA3F48E34347C2244960D1A5BC0
-5105AE2C0F952F1F09AE34EF4E7CF2795FB6D079889A2FFCCF2369AEFDD1411A
-6F78E81DADE6CB1E36FB971DBC621DC645CB0B78C8EEFFC2E235FA425047CB4F
-0362EAB37E1A67205F6AE1FD6FC77FCCC29D3B8F48E7CFCD2CBBA2C70FFA483A
-1CF95B56C70106BD03388E25AEC34F8ABC43BBD2DADD3FB976ACD01E1883A9EF
-6267D07A15C964F0FA7C2B9C82E519155FB0915E7CB8A970467E4A7224B509B4
-928BC5AEEABE9D010589DB07D965418ED5281A0C1CA60F7D15ABABD6E5A6A677
-7020E373E210D256EAFACA0FE571C0F92BC4B53E2A05B1C1244304606C6C1F15
-1614FD0080949232EF990490384989F2ABC312A3D87925689BDD3D2529D02DE8
-3B88B5B67C97320D0E1A8A6205F493D9A09D2A2EBAD79B980F46B36334A715AB
-CC9F6E06B607C69B4780E652496373C59B020F9988396C19DD9D39C46F856387
-2660747C753748FD829E0DD82A44CD718F28A9B6FC802F43CF9D1E4FBE8AE961
-CDC0B62F5296493C3B57BAFBFD5E5C3D22187280A26369BFCA6CCA94533770AC
-6A4A028F95FBD8ADD2408BE2E16A517163FFABF332DD702AC4D9965F1851E291
-67F8DDF8E1531BCF9434A033A41F78ED3E7ADADAAE485247477B67EC2784BF8C
-8F0FE44458A5BADB442D68C1171C1B1E247402746DC8655E4A53AF05F6DED9D5
-6407CC611DD20AF6AB3083F7E238EE4328B359643C955C0B877C014DB49DE4C1
-EA2F12F4DC500B95E24C53CE505A0DECE01119DE1886E5040F6515229FCDB2EC
-32F92AB88207EE73167B29F2C6C3E80481A1B974CA7CED078380EAEDCF2B00F9
-03730F3AB6C677ACC4BD71FD5EB039D7542D703B919E68F7EA5FB6F1D574B65A
-69E4199137D114FBC21EEDD53FB4C3F6BEBDA2E679B672EC5201192B285E14A2
-060776586983E9D6E3DBFE961C4B362444C35B649FC9FD8985474CA7C4BAA7BE
-0849856C7C8F3D03D6E6673196630FF0CCE79BB3A3CAC78C9FF03C91FD4C4990
-C79A889C4028B06BD43D38ECF2FAD9DBFD939BC79F072A5C15F807F2F677A7CD
-7EAC7BB9641000160CCBD3886AB6F9A90D738551CD2240415F2F60A56F1A5936
-823328A501971F7CFE36C1CCFE048866FCFC5EA6207FE132B65C192E0127C75A
-880A49C4250E9AD074FA2DE488A2E0EC6A9F7AE5DB635F43252294F8644576BB
-7D34415FA2D4768F782FC2FD2DE8735001393A632462B86ECBF90E66019B272B
-8EBD68D5A965263A305A1731608F64EE104FA40F14EE6A0CCD24651A425A6BA6
-6269C04337573F51746691838E60DB02ADF4D0E935540447C07C92097F0698EE
-DFC9FE2E1CB570B743AA1B8540F6AE121D8B50DFC324EC351376DC0EF811B296
-8DC2E1A9643BC5E81C59D4AC3E81D0269B041D5F509AE6F1F8279BE653F97661
-70AB5743393D11BEF0C8E5D4995545D9988B811654EBD6ADE59AD55DB8757B68
-42334BD43E9B2EB43CFB40A5BEB78B6FEBF3E0E903EAD3520F2716D8068C309D
-26BA32750A6DAD91402F20EE822CE4BF4A68394E2EC7
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.0: CMTT10 003.002
-%%Title: CMTT10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup
-/UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT10 def
-/FontBBox {-4 -233 537 696 }readonly def
-/UniqueID 5000832 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT10.) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-dup 35 /numbersign put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 63 /question put
-dup 64 /at put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 94 /asciicircum put
-dup 95 /underscore put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
-dup 126 /asciitilde put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3
-7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260
-6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89
-14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0
-0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397
-3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4
-BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F
-D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0
-FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB
-556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F
-8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E
-F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB
-B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673
-125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787
-A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77
-4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC
-56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178
-E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F
-15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385
-2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9
-05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390
-6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD
-04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728
-C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4
-70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA
-4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A
-A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473
-62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364
-240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D
-69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2
-ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84
-121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4
-0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB
-D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A
-0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157
-D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C
-550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844
-CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A
-9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4
-FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F
-7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06
-E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6
-50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A
-2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05
-9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2
-44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE
-49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9
-385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091
-8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011
-6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C
-EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0
-E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB
-C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE
-484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29
-4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0
-0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C
-6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F
-5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C
-1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3
-909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8
-BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506
-CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0
-2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0
-CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08
-EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811
-0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6
-9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A
-D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4
-21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0
-7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F
-52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A
-FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD
-AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7
-F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429
-067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E
-E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431
-C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937
-5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B
-0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD
-CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC
-2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD
-E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714
-56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957
-F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F
-E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F
-0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D
-67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046
-EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7
-CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8
-9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5
-9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0
-C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861
-327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203
-F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC
-60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD
-A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4
-B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5
-0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F
-1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1
-DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D
-55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C
-7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E
-75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5
-E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149
-8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E
-F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB
-8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F
-D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914
-54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0
-49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9
-CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0
-34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276
-1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA
-6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A
-DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4
-E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD
-4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD
-2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC
-ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934
-3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE
-97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C
-FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570
-A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF
-639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4
-D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615
-E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2
-1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E
-A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3
-F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780
-5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5
-4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50
-664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844
-4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8
-35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04
-1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6
-01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A
-5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82
-2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0
-DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C
-BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507
-39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1
-C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665
-99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481
-7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE
-D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8
-6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184
-5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38
-6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B
-F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81
-E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9
-39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81
-7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5
-ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77
-6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882
-2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230
-1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41
-06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE
-5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A
-288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E
-7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F
-759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF
-E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E
-03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A
-6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859
-314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266
-74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D
-906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36
-673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E
-A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901
-931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B
-CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390
-E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1
-4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136
-2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE
-F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B
-E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE
-E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE
-251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71
-7329622828B2785C1A8B26351BC74237A6BF99216652ACBD4CCF54CFC8AC72A6
-46342F1E32D4318E7E27C7B2DAC943B3E72C472FC6F1DDA8684AA922516A672C
-E969C047E318B5E3B1270C1BEB1C4071A15BC81B29B268C679B41FC5E381BE33
-DD95F0D68118CBB60C521E5CB2BA46A10E50E9238163713290DF6DD8A27D3813
-F871C07E725D4518013D9A84CEC96782541E5580E33C2EBCDB18F08EB4655A46
-507A8526DB26C854928B81FD502B0CCE4A68943C12078F57C10F4E85FBEE1025
-46D925B8B3B447D4920410FEEB9844FABE985F9228FDD9F58392F2F3BD650E49
-2E3AD5A14984874DF4572816931885CE8A448EC95BBF40DDF4F85653AD90A88C
-C4A879C0C7596E61997B972E8A55E57B17F802C738E5C7A8FBF6424F8B131B23
-CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
-57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
-788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
-A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
-C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
-27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
-1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
-4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
-F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
-2FD466826D4E666E3A835B98A1D4AE5D17053A6A648E26E77BD08F9A3E02956A
-AE82C4929E9666F539079846527D0E326FE7CBBF86E3722BA3E53F8A5121080B
-ACF8D3C67A2A1DF624B9DB92105D3C833F5A6ECEC108E026E1D3D968967A1447
-15CEFDD09123D56606134BC3449404ADAB1330C9238DE48F3CDFBC91EB86D7B3
-8B85B5BA97376A0673E434DBFF19798EA90BFBD94493E2D21976F8106FC0C276
-C81C9B9F7D4A68120DDA56FC6EC65FFA40DB78A60A05EC270A106DEEBD2CB92B
-F0622BD2B1D43771DF39AAD3ECB655F317AB483F7290C148690903AAA636583C
-99DE3DBA99EFE20773D3D8DDD816A28D7BD8881DE570BAF5C7A30679179E1214
-FCFED81605FE56AEA21C1894167F93D648B474352A65C0756F812F97AB435ADD
-22C031A21714A626DE35308AC51CD676DB1748DD2773532294FA77CFB2AAFD32
-A72BB7A045F12B4934A768F89217233DBBD69B900B28492A26713CA5D61A9042
-A982CB071F1F875718FAC168E4E275860DB6369B8114E1BDD4801110B62C3E3E
-CF140554C826967A99F4E9726526E87D57BF845CE38E33893E5F9788769B6A4B
-A4577C38C8D45AF2EDC9F4FA7DD9979AB8E14FF5D8956233AB4C02982BE8E561
-C63B7BC314793F634DB6F086E1A60D9FC3B69D3A7C20A99FBF3CB028CDBCEB60
-E803C8DC3C5F0CCAC030905E72BBAC052520CB0E40E23B46B2150DE67F61E4B1
-8C4D55904B7F90DDE4A4A78B11AE1009DE46DA396791B1C0EA63FB6897FDFA0F
-42474042E7E9B06A703A7C6E672AC6705506F3C0B6861BC85CEBB9DC9BCFDE0D
-43F5248CD7CAD4B89835BACABBCE6C791BC35FE7211E775C009844FC75CBF6CA
-DA6A6B7B488270BFAFFA3E9950914CB0F88C8AB7CDEFD2FDE11ADA7073037EF3
-1A5CEEE37090F3A56D06FBC70597907A26498593783878C02722ECFD5D65903C
-7D421CAFA78924DD27756853568535B02533C3393183D6E30DA6ED4BD6582E09
-A5A4B4404EC452E91CB44515AC6124EBADAAE8A98D8A95E7D14DA39951EBC461
-D426490071462F246794023DE1BDC04AB0F1834D50F748C3C60A07E1FB8EF400
-78DBAB90B59500BD1232A872ED51928329CC8F06E83164FBB2D0B24222223EE5
-992241E8E00D5DCCD6DB9A8E2325ADBE12FC8512AC127BBEABDA739672C1644B
-554850CD75724E6779A7E76424CAF89E9455860E0AE2679231F4A535C0ED4336
-313717D6F7A4A4DA833847A1BCFC7BF99234FA645F2B85C9A9AAF7108931E3CB
-077A9C571E57B0D7EFD92B56C3AA4FCEC0BCAA96005E649AE8012366BE6E62CD
-9E742F8F45AE4C96BCD73AD80AFB6F061D629ABEAEC3018CFF45E41F46751953
-44E490B1355DC49C1E10BF343307263584091D122ABB1E3892E532B6DBAA105F
-CD48375C112331EC5DB49E4D4CE2D126C9274B21E678E5E3EAAD4EA0CAAA29A7
-86FD8819217B195EC6E40AF23ABCD71156656DAD38C931C8730715A2773DC44C
-4DEF14D92C2A054739F27D7EF349A0EB76D952BD9BA169B4F85C09D80984D232
-2CB4A3812BDE539DC79E2EDC7C221739D16B10246A5F57151C210878556D4176
-31EFF3AB6C4D78C4F0DF81692B3C9BDE4F85242BF0E84BACBFA39688BB222A81
-E85E9CB332868ED5B64E140C66E242B97A90C13B6DFBC3D285A49BA9D4BA1A47
-64D83577FFB50BF974D953F42A249ADF9AC228CC4D8E82213FD463BC757AFF26
-DF4D1678FBCD55AFD5FB3014C0380B2F8CA9D6400DF2AA041580A6FA5694ADBA
-674286F00E531693DB28F7C996D5A66F80AAAF53001EDFBC065C72FA5BE3F114
-1FA3354376AEF7374AE1D0A8E9B06C58FD029922164DC9FA09343FB6652232E2
-2EE34C662F0092BE479D739ACE775C6F589775DD768B736F7391B9AEBDE7F760
-727702E145CF749DC457B2E98A36C52416107B1E59084B5F777B61511B8D17AC
-88386A7933CAF852CA23FE179B67DF8DCF15800755605847ECC0FD77873727FC
-1AF2BA8BC75D30E26C40913771E528724FD7C5DE284A8B58AE55A5C48AF26AC8
-02E155B8FCD6755D8F7F5A6F1AE66E4D24A13567B6463B18E65972BD75ABF732
-FB41F87A62FECE9A50C697BCEA1E3B3DF1E3DC961DCA598220CC746326F85F83
-72E803A4E69106EC5BCA01139F92171DBF9964BBEC8D3370039623CA1F927CBF
-FE7DA71B04B4321EB4D3FCB27F8404994CC7DE5F26AB8FC019A203D6DF2F449D
-85A4F103F7604986A1AC1F7D05D239E728FD6AD1DB5024B0A0542130D2B0E7EA
-4432F910F9FD75568F5732EAC95F7A87CEBC359949C26595741533E952327791
-87E42DF84E1064E1BDD3F5A6455087B8E9C783AB9ABBCAF032E9FA32C27ED7E6
-CA7E3D1D76CD1905166090BD81A85485B9B4E976DB2E19A8E62EFB795FD6298C
-9ADA57D5BDA2FEBB227F0EFEC59E4B51E06B8358006F9D79C1EFE92510D6046B
-6AFEEDC793137DE622A8B3F5C9E3B21F29A98A589D9CEE75E348FD4D206415CE
-508AB95A7496236AF1F6F5ED6B3ADFBAF1E35B51484F9B1E0C11C5AEAB9336F5
-A8861ACE1EC74C4A145A64E4FC8F6BEB3A16B021AFF4AEDA59B06326A8D7FCB3
-3B75F9729BFB7EEEDA8A1774728C80AED40BC35D42045E5CEEBBBEFAD2566CB1
-AD69A9A972826DF0F2303BB232367E611C115E8955DC97779B1AF269B84574C0
-9D816C88BAE3AACA6428CFC648FCF0869AD9236591E3B8FA326BD2EDE7F97286
-511C75F4EE4F7B4DA33BA2CE7F778D92AE7C1B4844CAB3ED8FCA285454D78469
-1639D24729E8002E4507A114407DF51543CF7DFFDB7E05ADB2D36E139F2DBACF
-D90AF274AFB3E5AB5B38918A28EDFCF6EACA78248BEFDC2FAC0E041AD35B1240
-B33191F5397FD09BD2B23112C25D27233ACEBD728E9B2D6ACEF70F13DDA614AC
-12AD845A43269E2BA323A9051FD2B5C539F417DEB625465AD2370DE58D4E0C1C
-90DDBBC85CC416287B4FD8DE7F41085412CA5A1508A9A383089690144F4DC4FB
-B64B7D3E1AFE43B8CA67E55244940C3C3605E259BD02335B0DDA6F022D585A7C
-4A98ECF5D52756717DC98BDC5FF425948858B33C58D1A6521ACD41B381CEBAA1
-C0A3AA55193D46F5962C2C7F26589F5888F3A2BAA0FA4206601B580FEBADAD8C
-34CD8AC20C07D8232B7E2EDEE184FA4D901844FFB3E8F2629CC1462B42CDA11F
-FDD31DBB41286064731E0D0677CDB3BF5A61BA4171C2A79FA9E8D667FC547BEA
-9571408643C4383979354C214CF6C9D8971E91D944791F0E6B2EADB55E4D1356
-66A1D81D0B769C30E3E7672B22170177C015F8B9657663B486648801252DBE96
-AA54E5068AF986D8EA010E158F07F0A3140FE739BF702ECCBDD73F65353D300F
-50FFD9536BE94A080A36C9FB22EBE3E60FD4773B6BCAD134DCA14E30A7A429B7
-23035AEB6C8E5EA7A79937BA62F3B99BE1D0E72D2398C52B32E55823AADC7CF8
-DE4435F908959FF59420B4038042746132994A046C678FB1DC065049E1E5794E
-DC638D83EE32D6423E07B092D82CEC388DD63E05E9ECBDBDEEB34A56DFF67D10
-1113B0996774C5EC465A774C371547440A4AB91C1A64419914ED7D27F7175331
-A0CA4E7F6E85D9BA778C26AD642AC9CAA66D8605332DD7EF702B00E46CEB58A6
-D51573013917544EA4219777E83385E3DF69CFA50DF2AC71C64036CE75E24738
-3A2E951CF750EB4D28EA85F95B13C30825C273091A568A69537BF03D70272A6B
-1E47077D64054588403AC984B9A80390C866A2E2DFB498064555EF3D4D531D10
-669C3E830EA3E0067B5677AFA5BD29C94B5E0893EA14FE874B911DB192F0527D
-646E7206F79859D5E6EA4ECE8B26BBA97BB791BD7DA4F7F7CEBCC8B04D00D920
-6D2E4227F997936A16C683A0AE11F059109A2E679244E9776DC9C7ECBB0BB73D
-D9A149C90BA2C69AD26F9F900323DFF9D04779F53AED156C8A8647FCE57DEFFB
-863B8D148E6722A9077DD3F50DF532094874AC6682680AAEADB785FEBB7F3B12
-1FDFFA94A4BACEC70943405DB37CF6E9E4C7EE51977A803035E06AD0D3B43734
-C8B07ACCCA764DE24A841023316C84CEBF6A2D86E6382281856D8AFC9BABD871
-3BE9E6B1F99262A2BC0C99138A5049C44F2527B02E07E40B9727017F30E59AFD
-9EAF7590517673069D0D5D399446C5D4DA1996CEE93112B322C35290AE4C14E4
-B651FEB0CD3C9A845F5AA9B6C6CC7548895DFB88574F89AE4BC8DF6C94084367
-40ED5EEC51173B32A02B6DA16353E91D07EFD2E034DB0A4B57608EA80C56D975
-9DF0B73BB12A1FC8FE26C7B5486C971D89217E6D45760045255531E2579830FB
-B4984CA52896E88D964BC91E1CD3B3CED5DE4861F98DEAB97979BA9A30F100CA
-027362CFFDD972347B466B295D8244F99EF1A929E54F99830FA62F0A11D7C279
-D5D76395F83D12264B50782207C957324FE35DE6C03C571A0C0E06F1AE3A6C85
-5F8AD72CC806E2EC0BCA6128524A9FA3EF41B372968B0F4D4CDD2B5E5C4FE3A7
-27D0EB547C3F34CA3BCAD92FFA62D761F21C4B213C9529C60D4D83A4AC9BBFE0
-500EDD6E1F22E53E1ADFBB8D1A0FA4D68668E7DF7DEE87CC7A6E55AB0EA91178
-3B46465E041B262CAC2C775B6964AE59F1352A98F4F6D6FE648DDA8C1769A333
-0D35A6CFD30357BC2D059D67ABF7E1A4C78246AF7E9528014CC2D36E12379284
-C17974375E1E4ACA37593C07876312F2BE5018E71F85E140BCC45EB4BFAA7CC3
-0FF2CAF72A76A0788108BE53388ED11FB521CE8C5499F528ECA91F2A21EBD10C
-1F26C0D816DF93E840052230356507BFE615320D7C856332A9DC966AE7960B19
-95C50BFACDB6E824E5E05F6F21CA855CCAA7991F052F222DE81361C6CCBF9BAE
-BCA4BB3E293FEE1A4ACF635AECDBD204EB5AD40926DE56664B67751E90289EF1
-005DE6AEA7BB788D5C1BDEA4D2626A0AD6FB4DCB5D4F5FE3C3B0ABE2AB39EC39
-0C83EF5DD92D5458ACCC7CC6C23E930E60CC81636BE65CAA56A7C552DF3AD090
-F41C8448DBBC4785B2E5359CE5F4B5458E0F5D5BDFB191B5E11D166CDCD979E5
-71B494C2AC013D908F0786751D8E4921C8D3AFF9A2640371F0037CDD33A5B239
-5427A3F13FEDDE7350199E194CBD0D0367A32B654893961B696E27248EE1FA2E
-D4C6128E66526AA9EFE0693BADA6F4196A617A86AA1667503F45B430D50D2187
-1922575245D78C0E696E7301A6D4C9A2BF81FD0294459432A5B46F334A1E9CFA
-D0EAFCEEE0127679E963B04EC13B8C81380E5F68992E95314062767FB1A7481D
-C7268BDDF0840C1BA24B08335256C46FF042661523EE084DBC7F05ABA12EB45E
-BD46ECD92DE2DDAFC372498CBDC82A51AE32A4E3AC7FAC9C2B2FCEA14C18E2B5
-8A2182F6188B9EBDEA3F0288071552D838AFF8F28D41E13633EEEF3DF8EA106B
-78CAB5C69A6F54C5CA0600D151A5FA476183D2EC55D4AE76E856BFE0B91A8A75
-6D9FEAB2BEABCABDD42BA4FA9EAB6335D036B99C7E345632F2557C5AB48093BC
-2B01BEADFF47D830F7F724A305C4DB87B0F44C29D460FC45B1525EDCCBC9C566
-CC6434A2A4767FF5A35E0094097E9A0CE33CD9D09310E77F84662E4870C64BFC
-11D2D1E263756EFDB365A2F6C9EF4E5FB1F493192F14F6CD68C35AF59AEF138E
-60665714C3AAB84BE8A44AACE61A940B2274EC6E48F0DFB2E10870A423F84636
-8C6C1F4EA85F9560C3190AC388727BE054B2A8FA80A18F3309CFB0087553CB4B
-75A3A01B7676B26E92C11B85C7BBC51B8E7842877A2C5FA7CBEE7CDB00123789
-6159D6A49B0B7D5503C2096749F69526C2779388AD5CD2675B5087B5DF61197B
-9FDEEF9AAE9C98B8DD71E5B2AD45CBE9C6CF84E39CE3B1412895A86B6A016279
-EF39755F2F1F045B62CE8EED13A9B05E445D2C8B781987E5DD891070AAFE3F8E
-76F9B2901111D4094DED65E0631AD91AE2A497BA0322EAB3978A2405CA6CE376
-C1C51461BB73B990EDDDDF66F4C4AD9BF1F403AD130F104D67A7781839273653
-181EE49022707C03B0945C08271CAAECB922893F0050270F2BF1AFA776C78DDC
-F2B55A1F80184F2A26D230D42131E91A53A536B5238D2702E8AEA9AD5CDD9E20
-D13B7D67EA0C52E48B6FB033D2BE976B2EDB855FEB8D9BB4BFEBB0A96867CD85
-C04317DFDDBDACEE413EAFE6544CB5CE9DF41E99AC8F9945D8E303A1E86F2AB6
-A12E5E79185B7C1DFB6DB8FD9D6F93B34165F8B88D3993DF034507AFF20DBE60
-72D3329495A1AB31BA5E057D40C10BB6B0B1CF50F1D07F748531DC0BF1011195
-07428DB85302235746CDA81DF9D05F085EE1E452E45FA115CC80E114E4D1F5CC
-36C6266733E70CB2EE8C9FA7F641A08047CEB84126E1B8723F6A19B637D2B4CE
-E73281E6AA7964DFFF6002BFDEB7D206DDA4BC7CCEBC5FCAEE8DE9C3203ECF73
-56082B0B67F2C3DE2B7A30B839E736A96CCC8F10515C450389C37EBF7316889A
-602D35C3DDA74A5270D5C280CBBEFD3ED473D45E068EC4E011E4DADEBA005914
-2DE2C0854DED8C7DF430FF29F3E454442645B646A1718796E9D5910271F088D2
-522DBBBF002D5BB08A129AC2F716E57D31217D6186E05A410F634502EA74C7F5
-8A1DBB0F5B35012291FF58700C3A41856C8351BEB4233AC8FC879D0B1CD0CE1E
-CE50742ED437BE8F80280AEEAE20A7C7C2770F6AEECD7A9F9009207730C6F05B
-42ECE0F1B464558D7487F5143FC0E1B7EBE675BC48A18C0C34A99404579F99BF
-ED16457F3E0C800434234257AA531955833AD900928626C993955299593C8495
-B084CA0AD01EBDDE91E49EE562C961D3828F38FF1B05D977DAC40742AA7AE4E2
-A153C65511D055BA412F67425D63B303296F3B9C4C4B377099F265646D101B4E
-117C63F22CB46BFF21081B885853610C36A2F5BE721BA16AD203F9167F60B7FF
-A83CD5EB56C2FFAB222A1D3B9210B8698863158C6848F0FADF096831557D9B81
-A0061BA5E1BBB75FCC178EC4E5263CE0FDBCED4239012B64808BC85776D70835
-F713846E6C17D92E80B8A1DFED2CFFE0962B5FE2FB7CC764DA214977A03EB01C
-CCB1CD127A23C5486A8115BB840132B3D568D9EDE75B7A0AA814ABBC47854FED
-7F75B0EFB6A2C9B19CABCB0334F70451A7B03662DD83ABC273D16D79E801718C
-7DD2B8D033AB828E9D80023B1024E377295E7A660F894F128B9380E57CCE7DE8
-F842F80F76BCBDD52EAEF474C6F368DA0B30648C46E13121652CE16AB55D78F3
-9E15E6210751706E6EF3DDAD926FDC49C13CCFC3436C9B01008F8D656C0A2111
-8B21119342A600757477D5AE24F673FBE2429BA7A0BD4A3AD41ACB26D732FD54
-BD3F5499F4EF2CA22F29ED773A796AAE0E8D05CBDD3A56EDFA1ABE8A8E3C631F
-7CDB0DB86B5D7345C7CEBAB208702C6E19D0ED09E26980AAE57BB17CE2A98477
-4628C86F7336599DC729B04C8C5C4F0E908D6135434598BA3A1C594B46832E3D
-866A992F4382C00C928540FA636C958C807B2BC3CD4BC1F7C6A79F8DB58A9722
-CD5D352FC5B0B8383ACFEE3BA2072B5A66A5858F4A7CDD70DAAA4A6088CD55F1
-561872587AAE330EF9E76619AAB72744C83D29A51EB86C057D0F5972E5C31FCC
-4A34175C47ABDFAE5311D2318126FB8F15AE8A40E609CDB7ACA07431DFC2DD91
-30765EA0F2DA53F1C9C6459E18645FF6BF92FF9918F860151D1C53E8076239BD
-1FA4F932A7EA9589A439AA3793B4F939AA349A2DB6F574CEFC3F0537A18CA734
-6CA31DEFA1F46A0D93B0A8092E176ACF3475136F03D66506E0B4814E0DEBA2F2
-0640483BB98FE5AD51457A49387EB6FA7CB464DE2683DEFCEEE7754322EC3D75
-BE93657480EE0B205EA0764C411F2957048D84137E27961DDDA720B972697AAC
-07A00FAD82226F92DCCF48E9DF7BC311D9098D9BD2069BB306449EEC97FFBD75
-202C13B602FAA33F29675411D738AE1F3DC5C97641F8215E8ED4A28904C06387
-EEB28B2F6C0494289228512B76CC04B6741C6076C4FE2C42D58A28C332E9FDE9
-289001D2BBC1A8790D7F1FAC88E645E1D3B50C1CA28B24A31E14025679A61250
-67BA993BB3F22CDE012A9CEC30F66DF165A53EB4145850535DA2E17F27E7AD30
-C2EBC274B6D9388B8B58D7BB242581B22AB5ED916276841540EDA6001252565D
-E7E0FC7B762602133B335FAAD00E9690F90747675CE69B17A789DC774D8009FE
-D9D4B7105854A44B634A56D4266E3AD008A1F78FE23FF876B9F8A640E2302C70
-AF50667B3D4B8954D01DDC88BC8140462F22B67EDF59692BA9A70B1E6DE915F7
-429567A130A730A359F58388DE4EB4382EE07D03CCCE3FAE0EA6391A05A3F255
-B63DD8E4EE1F8FEA91F96EDAABD436790E0DA067F0662CFA8BBBEA3E434171BF
-790C78B3CA0A3F4BACFBEAA9B18E5FE5B266A3AE06B85400A1B90902EFE6BB8D
-76D07EA68E0AAE52FB0D6B15660874A3CE6AA275FD279CEA98BACADC5869A3ED
-0E11200EB25B9760D1795B7B261C9144BECE83D37BF4C3FFAEBCCFC3554D6CB9
-40D9E4F20333CF18582D379942940574524B17B767B0405722EDBA9A360D2C14
-C4680EFBC0442D6C35B5C0DEFAD773793338EDC66E14A05FC87F7A38091DB3CB
-0EF6D9F2AFEB4356B5E024ABEF34EB7799EF3A658BB58F6FB1D43C792C3816DE
-A1A41493FD6C4FE088F02379292015FA9CCAC621CEB98F8709AADBF331027B17
-B236BE24CD7AE1F02DBC0064D65C26C3C0929DA5713DD9C0FE39EDEDD24C4417
-D36FE80291FBDD3245918CA105AD4E52ACA28BA901ABBE8D416A53A412921112
-AEE6120650FC6DA122D1B82738BF5A127633BE6E2044F0104614AFD80315251D
-D086A8D2A91C87A545F61CB01CD289CFE86ADC1A5DE5B1DD7F2EDEFC81927F3B
-0DAA749D888E4FE9B6EA80B3E0A2F5E9721B6F81192E021E2705ECCB1F92AB50
-D51064B847A13AD0F32B1769102B0531276D47FC621D5660D4436DB33E028F9F
-EFEEB9953010AB8660E5C9F531E242D7873358F6E6B713478FC40CB42B9A7D06
-40D8558706F5A5628BE9842BEE345E759EC581ACEBFD70A6CD51D412A810C00B
-8ADA276E44994D72AE69AA71C61D1FAA8456710D603D30B155F6AABFB76DE963
-386AFEB54E41E450C65E6F0C0979855EB117AA0B50E8FB8C02F2973CB5A53C34
-D2E7ED301619A8325C4F085454D451BCCD02F46AC1129662EFFDFBC6B4600C37
-A51490A3619DE5ECA9003AD60D601154F03B7053A8CA9FF2134C5F2175DE2120
-76226AB000F940193F4D0B17EBDFD9247B85FE823DE740CCBA6D0CEF119CE48A
-44AD0A5EE0760573119CD4EF9FB0C6C81C6826A24B88B3E3D878091FBD73B117
-0F8A875A96C13E2F328C28A482C250DC5871C5232F3AC55CA4F231C71DF26715
-0585A2F42DEE145A6987ED34593DD1A62C731D15BE51CCD339D52845AD9896BF
-90DBE789D5AE81199735293C113E5BC6BCCBCE4D9A721EC3E4DA08ACF5A4819C
-986402BFCC14DCBC35FBC26252B9BD83BCDB7AFA4075DC58E1CCB295F542F303
-FB0A8F54063D40E435DA18E845DB2030D62BCEBAFBB972608132584E6D484E06
-1FD48230B808A8C67AF8AEEC2C48822C588437DB547A734A7169FDA7A3B347D8
-B59BF7447DA941F25E502F0C3FEBF9D1132DE2FE4093425CC3CE4515D00CB74E
-85AE8C677A13E7A54CC8073C841E5C8F32B4B967EF7694054582447BDCE42E74
-9B07C2140E92CEC205C25B2625F070461422FA1077941A1ED5F1CF6C218CEBB5
-AE70ECA87102BE081C33626F0678F82485CB1DEA62D26C89654FCF294BAFB0A7
-4DC08F22F7993016648570008BE8DB1EFD7ECB6A3147B3A23EDDBC413039004E
-7B3ED15CCCC90A4771467EFE51E795F464FF11EAB2B813118ACA0FED6EFA734F
-2532D136E26F42623A52A863BA0CFA773109F261A97EB35DBDA81768BD5F13C7
-2668C6DAF749BE6564A1F81947F6D224A5A9D792AE5B783F95AB372F71305CFC
-29F5A86D98432C0ADFA5E448EB06D022053BCD2D95E7611C2D321E0E53FF9C5C
-670EFE6732E74ED7DAA70D1F18AC98D8D975E8F82B3903A16CEA2CF34224E30D
-65D0E7E05A991E5C98B8554F8E02C7C85EADC34E9C879B00570862CB7AD01F85
-F6107E0A3013F98A90E972FBD3561659583B08455577D12F25F5E74EE2474C94
-A69EC94EBBCCB05FB90FD00CC773826A7EE5FC7D252AB1748847E38C8F50631B
-42E0FEDCD88D4C47E7F91B74EA3AD2E26B57E6674C78EB74B6178B20B27FFCC1
-0594A99352D7115AF251222F772D66892BE04E44FA40EDFAAB219628CF4D5B83
-746EEED9CF0F84A19EBF3D3DFD8F33BAE2835C1E6E57983B5D9B3FB0AD120B7B
-A8DB2C3648B676F02D98ABF893569C55D5102E772A97947F6D85464AF35BF392
-1F0B31A8D4AAAD549FEB9409B8EA47605D1CBD9D50934D6E14D282AF3727CA58
-CC4B26B63D41755E802E798A1F2153FC12585BE8BDBAB3991AD188CA10DA3F55
-F9056640A1F31D0242A015938DA000ADDFAC774FA6B5010D4647E13682290E2E
-48CDED102CD6A4993C9858F0C7E3842F1C3FBA14E431D068BAB68258C10DE1DF
-682EBB96525AA82E20EA1E4E124DD7630E3553EFFE0F03C3763A776C5D64318B
-2BBF007C0029ACC45615D3B4E77CEB40688EC755F2A1606CDFE4ED8B1B5D4515
-6D9582137DF6358A8208CE99B191999792310E3E9138DCBA4E726700E4D0C4EF
-016EBB22A37C4213BED2822EDC5D5F54C40EB2D22A92E40E63D827FCC8A24CF7
-A802576CD9CF3795892FD077CC77DB908564E4944CD852A3C41466E0683F6437
-BF3CB99189CAF2F3D7A293C5349F494200A88F74FC900122A5E6DE4157BB22A5
-2041988C2E1FFA890A4143AAA8BBD5EEEE9157CE5CAD36C9A1B929576C41094B
-1F4BDF445A6FE42CA871679B1385BA5088BFF264500DB66A1AEE0BF19810E27F
-327D44DD4317C307C811C38864698A0F0F93F9DDE1BA1B7B00D469645A8E353B
-9307B242284689AEE0675E9C6CE7ED473ACB90EBAEE98BE4E336CC926D952D74
-BA108E306C78B1A91D07F7ED434F37B86AE93C52081C696B4BF20053B340BB3D
-961C387DEFF21597F306C4B741A96D98DB7E7B8D835889C6581688EEB62F6E3C
-163BE8E23A7EF73B87D41CB4FE29BC6D23EAF95A258B8FF77B832EBBCD1B4645
-2FF147D8B3EAA3F930231FE68C357114E9B7433B34CC96AAD26540792628B506
-452359AD152CAC44BEFD9F9660DE8FEC6D6FB19E8BD650BFB237E9501AC91ED8
-F6EF73EE75E5BCACB151AF904AD4D476523E7504F0291AB8DDD14437C79E6B4D
-DBF914075E3568A4755A04CA0C42E50665D8ABA4D83273260D3020063D02AE1D
-8FC05995D51B8C9A90DD26BB3C05A6EE022E69F2E59362C07D09CF5E337E94C3
-6672053AAECBFE391F148C575A8C4BDC3EA5E5EC498D8B8C31733E0DF0638D69
-4A5BC67021F8B3B32199C6A36B021ED18B113D6E1DEE67D7C9CA6336ABBD9E22
-93C79BEDEAF3ED5BBDF5083A19705A33848918F66916F8937AE3E2B76A160487
-F6CBDEA233B128EFA70896AB27EAEEE73AB7BAB3AB9F856E924D34DB474FFE9E
-FED841710AE8A00345D7DEA9D92D4423550B37F6D3855F22DA2D8DF65A99E569
-B058C4B4BB0413B844DFFDFD665385374781CB3B9AF1833591C22D4FC7B71BE0
-329E06E9610DB8BDCDC0A319EB45571B2CA8C1E7FE7EB46410AF9BAEC3867949
-264F207EDC23D35E402E1EBD41B8FEA39BAF4A2DCFFDD6DD7B0F10BA352D91D8
-07E4A7FADCB8D98F59A08AE999157809B208DF0FA06D47DC568DF681FF72AAE1
-7B37FC433C7AEEC73AF11AD7EAC745BB7D6691B0920B2B78CADA825E0BC5D030
-ACDBC0E9E5A37B34D796FA5A2DAEE16C7F467787D292BA93A5FF4DE374BFBBED
-DA7E28361FE2071F6D64FDA8F4F97097ACA617A3B1C0C2ECF71DDAE8478CCE80
-D97ADBACA25E95A43084465EB30234C653F7266BBE0EA83CE96906D8C5D03F7F
-8FDD490D7FE1D84E6BE16F9E10AC20709FCA8AACC1B8A8A8A566EB46EC51BAB1
-3BF501E4B079468F08130FF0BF3D2B786F71543C16B7BB173B8D1329A2C65A69
-C5ED57B225E7774F694B44D1ECADE5CF4A53B2315504DB62C2F8E2ED5321B19A
-494103966108C3C60D5B246F8FCEE5007D4DD369C2E2CBC8076019CF8DEC8891
-63114D54F0C8B58363E7043FB422986FFB468FB3D978A0E326D6967CBDDA745C
-15348C665619F41AC20591C3A4610C4190100E753B621C08F9CC026BE5FE3654
-E37790CEBD7F51AB4F187C19641865234E54A5720D419544E7EDD0D718C5592E
-EAD0F2363EC919871D7FA3EF55B1F89C176926F360586A5C8C5C205F554BDB1A
-D25A28E7B2335616E6AF945A8F4D81BC0B998AE317B36246B8361F639E308272
-58FEC15DD63172C4BCE2C57D7711AA0109673D6AD7FB5935FF390A9BF9752B84
-54AA0A4D5726691D59620F66900EDCE15B7B332BE3E198C3562A351299D0E8D8
-F655F492587525A1FB2EA800268A800C8F7FDE34EB732312694F7180247ACCC2
-AEE06ECBB1972DD04B35B46E7564AA7B265DD4E1377B9E3198FC069C67400AE5
-C707F1A990985D93906B1FBF31ABF448C926AFE10242CD3C1B314598F98A899F
-33B9C031F4FD8ABF398E13035EF7A1A3C1370D98F60038A508E7D86C06C6AC19
-48982631E4DD41BE967BC5B1893A693E46860A9E0A3823A73B42F4219A80096A
-04E7A736E423B0DEBF67C4E5DC0A49F6AE294B152C16ABF8426D3845D886BF29
-D906492867AF7E0297D62911AFD504E1AAA7B9EFA2A81FE0C58C8A9A44D6BE0D
-05A751E818DE653489C7A71932AD98C0F0DE2619DFD1C690F29287F56E14E2D9
-2677C61BA8C6DFC1DB65B882C3B3D02964A9D835213F4E37EF48C61E45A3DA8D
-17E7C45ECD56CB63F1372D99817A40CA9705A02785F9173509680DEF0A484A21
-7DD6B88ACCFB9483E9F7B11F08B580B1C76C0D2B9337927694A23DB941C2EE08
-A6E8F874BEC2F5A0E18845791B8297752731F994FA78F6D82EC09FF8EF2FC7A4
-400DF95C31487CF65CDEBBD4BD866647510832BEA0B9D9661CFB8F513AD5954C
-0ABB6A70841E230C19DC4E1B2B4F8D1421BC5D54782C9A6AAD8AA6CEA14D0A5E
-0D66988D9CBA1B65D54C779BF5D79D5A9DAEC89F5551A50F35C316AF4667D96E
-1B7476A500E6BE15C3525A5D7EAF873813D2207E1E5166444F1BD0D52427EBF2
-445483FFF53E7B0ED56AD4741F99ED5F37E7141CBC1C23EC7F69A476C458F327
-EAB3A290A1BB29D1BCDC1D2FA2942208E102AC9818E22E9EC10F2F3AEEF94BD1
-399614049D1EDD94EDA791EBA2E8D5C25A7449941098425A7A911998D3F9F15D
-633C05A5355167A1196D0C4340AF63CC3D268CF99A692C94ADE405C646D19F0B
-0B1A8530615AFA7FC4AAB63663D90BC517A3392B9499103A4F2E189C57322879
-839C898DAF180FF50CB64A3D5172671A2B7F3B6F22307B1B10D233CD138AB41B
-945692D447F0E8228B337F45E3871A224466DB6BCDD2D9B857B2C359D39745C8
-C1836665BD49218EA80E4BDAF20B5B889D1578CF0E7EB6FAAEC228886F530BA4
-F2806B4851E34349A8588CADA96A3D70C51BBD3DC1CB0825C3B4E3C72286C053
-D10BDF61280F27AC3DEF4ADB164FE4CB2EBE6E1155C0A437315CC818237C8AF4
-FE4776C1306B158683FDC03838F66CB6A3618EA101BDBE131D8D77DEE97B10B1
-CFB45A1B9E13E4B02A6A556BB8B78769A410F13BB0C3BFFDD6F776E19CA0F03A
-217BCDB2EA78614CB68F8B8141F38FF7BE62D28458B5FB08734676B36DD03A70
-A1843999E4AE5384029901548D01045972AA77AD5214FB345A7F47C4A7480A58
-BBDAD39FDE66FB7B2C0EF82AC9A814D3A1298684923374EC5E92F8B52B1726E8
-EEB56AF8DEAFBB31F4D1090401675DA4EB033C6905C784A0205D94F0A305F1B4
-3255F47774576908F0C3BED7D3438327E24EC145BF5BCFABDBFCA47D40B77029
-36431000A253860094BFD836DCF19E6BFB5FF75508CBF65FEA900382745FC2AE
-EF968CCE1C6032205871B023892F451474E5379DFD5F885E428FABEC1DEFCB4D
-2DB98F261D3C039591905768B03BCF8588618F386C8B75F2C2B1CFEB5ACB821C
-23474D93C05C07B8D88B88D0430BF19BF699C9D649C1ABA7A7B4FDB7B8E70A4C
-8394B27AB99AB406E334AFE0050AC566D7695FDBBF508E93E7D22121EBA505B0
-F1AE5FA3B8F32E1BA971585EFC7A2CE5513CE410748439522542F90B380AB0AD
-9F1527055B7E2A559E1D3735128D02B96EA028FD5DA8727E33CE3822A44301B6
-BBABDA3192C650FCD7D1F89142A5D47544C19458F86412D6DCFA1BABF3CF4A80
-AF980F44F7AB893A9D2197BAE883BB672E63C3C00CCA363F5C45CE6BC30BEC6C
-8BCA685F08F46FEE281A42C171FFF3C6A1AC5E551C659C6808E76FE3B7178792
-1F94B67E7E100DA039040206D53CB9366F100A637FC14350869EB5D2AEC8DBBC
-E24FE1547A3C7D3CC0E8A48EDEFC323D31C026792AD179215E7FFA45F18D9585
-6859EF48E7F6A90A693FF66A3CC8DB1C13A75E722B3CEF084079D8E423ED67D8
-077EC4FD608EDC7FBB8121E59BD2B2304F54D6540DC186CAB44E68F342836E8B
-559AEB63C74E0DCB9A1891F1D3628F5B34AF42617385F3CD3B28B585C21553FF
-A2E96A984B1043371A184D83AFA58B0600E291B50A97E114C507E56DF287386D
-B1FA3A1C3D62A89D690481412D3846D17D12224C971DFFAAD2F99244B3366EAD
-4E46C7A4B6551ABC34B99543E712AADE0AA1D56E8EF3439A5BBA78CFF308AEFE
-71C3292D3FAAB992A98480B3B553A7102156FC99CEFB5FA56EF0CF162145E5E1
-18D263A6598B436C0190DB08CEE27A69D4F5A7B3B9D740B7C51E5C9149FF2629
-BB8568FE356A82BD8B2E6905B03CF385AF23E961E9A6DAF1A7B2034A05608971
-E9D56EB8195F133BC99502765EE811A4DAB4025733606A888224AE875FAEB9AA
-3B2579585ECFAE0C90E1BFCA9727F7CBC87CF62D35C4AB3657235C3A46C38225
-79FE1424CE94C3A3D64F1FB8D3D673ADACA1DC48A0E0726753818924A4A186EA
-34B2CB2492D0B8A64516FDB920DC59E1AA8FFC403D852DC03ACEB1E33DCA32F0
-737CF57D4665843BD6AC9EBCA63C092035810CCF5ABB9262737F2C256A4EADEE
-B450387F9326EDD7B4242C0D981F8BF9D7CCCE6AD7BD77A96058E2B9B1CD0BF4
-C4697B977AD1422661E854176C6DA938D17CEE9F3A6121BE465803C51D56BFBD
-E8EC49553DDF8127F1FC35DB9C4F0AA3959FD17ED40E850DADAE2AC870E5AA53
-662019B26B3E6EBEF1387EA4A60510219B9D0995F8504945385704D6FB4E93F4
-1125F862CA15265C1FA66F440B8FB9E5B33433014EB2A517BAD771FA7DF8F23E
-89CD3E58F89DF19776DBC3E5673CF190B35CF68B5934C0EB37558FC14581FA56
-07CAF596E51991008C035194B7FA9F150E30B53A7B2117BFCE6932CB3929B2F6
-87232470568A90CBBDD9B77C77A7966AE1C84FD680681AEC09BAC06E39688AE5
-4DE2DB3CEE5F0B072865B5CFF15C835C9AF5737D9ED19C1501BCBBBE909F0EFA
-978CBAFE5A25D203D8E630B36740B22E854CED07D73DE75FD6C1C0C80417E0FA
-BB6BC4AAE6DACBE26F499B8B69B958DEFCB7BCE7ACC9F5E058098170F4FB9E54
-DE12711C4C3A03E0CA3C1EC7AFCF26747BADD5D594A901E31CD42DDFBC50655E
-D669003E1D6A34E98C1A37F3C2B05A0F4E331390D4BEB19372A91BA3894FB886
-5868375664253DA120D2C094492E7C0E14EFFF97A9825F549B5FD8B89FA4CB6A
-5FEA11B2E0293BA22D57FD4A0150902AA3729D81EF74D6AF88D6B2133CA24B68
-FEC7E3941B884067B53DAD429CB7ED9FB023A5F693D1FF1EED9A6FF32F20F947
-5A2FA756EDB6621DD7DF077220C96AEB910E49A2B4CCCF82A02DACB0C42E8263
-7F0E76DFF2F21CEF6628EADC5BB5648BF82DB67FC39B0D0244A0BC0B30A59B8F
-76A7594A3D2A38DC3E6BD9CD05354E6EBE00448D7A7B8A5C094AE8D756151870
-EE984259842C8D2B2AE14D8E3C1FB010DE3B6996499A2426A124DC57BA152304
-D2467D7F3BD9286F3EBD43AF7A51079FBD7770947FD252FA6264E78B48ACC9C5
-CAA45D69784D107686B57E3CC94690C09B47CAE7845398B2C480A183A771FF94
-39B68F3FC3DCEC7059DF57105EF23C92555131F6D1F5DD509E1B6AEB3A4DCEF3
-4F6E660AE7C859139A1414839CAD6380155F907BF0E607BF2710C8F3743A3E44
-558DD7B820D8B9634E9183D0EC8B93297E33C71F2EFAE552E2D8371398CA8729
-60C6FE5B314600A01053279AE003D4470756977366467B2C843E267BCC69AFCE
-5E5297ECB2D69BE6EA118D486F05CE63785E52956ACA64662A962C5148E96C61
-346B834C2401B2A61A002A9738C28120BA7BCFF64A84F85D2F23792555C345E4
-86A37AEDD3C06176AB27D3CDA4FA46EFB1897C5D8827AC392F28A592DC1C5143
-13BA138F0D8B27ABFEE428D062538FE6BA62D2BDEC73EC3B830825E12E69D1C4
-CBFC07C631BBB7AE9BC8F8BDB25DB7415C7B9D0502C734FBAB387E201D1CEEDB
-C5F72A9FF2328DAECFC97A3EA1A75E7C7CCF1B274A3829B9F71C3B1BEC03923C
-F6E1E5E32BB8CBE6E71A855F1A7FB01A6AD8959A4E7CA24AED8F8E8B50967EDF
-E32A69B846B22F7A39D36B8809005E70C6A148F861C9DD68986677F16FF78F10
-B479132D9D5A4DEA428B5F2F360DDFB20C99B653F0F5C2B44472F947FF0F981D
-DA1317377C9D2B686A583814170CF417ED89686E568B1585A8AC08A5B6137695
-B2518B04FA646222A16B167CFAA29A59C9ABEC521868DFF306DE1F11715F16FD
-79F34C80F3BF298AE6ED20352AE60DC029C41552AD946C6CF7CB95F9E8B8C4A1
-7107F9BB0C5C9347D4669F4BAC9DA73D798104C9116FC8E1D10FC2C01AF559AB
-4A139BE448BCBDF113943FCBA3781DC6C0FB26637AF91874924BB9568BE0D34C
-71CBE4CB7CEED092D787C77608D3B2EC8137780BEA416E72DDAB37227A75087E
-DD680558A48CB39B804C795E4CA1642149C488A97186CA640A209F1D4DFE0F8A
-AB95DF6289C9A8490D3AB5B7C2D9F869665C9E163A58F200C3C97983E8D52E0A
-7D7BA1DC68876C3DA365168C1674B44A9F6702CE1BC29C5239240AF0C98E88FB
-64ECD020A7063061468DC709BD3E1BCA4E93E3574CFC4511B3548B5B263ECB2B
-C11543731619C381177C9AC98DC17EF0F1EA4D1A657A58136D873EC2D6555B70
-1B62409E24897A3DB5132039914365D529B476CC5587B1773CEA7C6BED50BC79
-35A2D753876A555D29273A8387A0E7BF81374BDC9B68A4EEA07E3A3E68876AE3
-3443F3DECD2711DE89C23961B364E650317DFCABD116D9E5E7476D6168852B8E
-945A52C78FF81DA9CCF9308C08C11438653AF10D496C82E6FF8FACBC785EFF4D
-42D053AC59E4E2869CF0A44B71AD9422D3C10F47DCF39CA5F57BF5BECDC098C7
-D011468870269798486A67D03579A843222ACE77AD05B05546101DFE33B04237
-EF34690DC25DF3B937113E46C233599F73B00F1C01DFCDC08F2138602C09172A
-63B0229F92E494FBBC896EE5B16BC65C990307F74B506E1BFB8C22D3FC4BB714
-962E6F057604B73859CAF2E14FAD61F427364992092D8CCECE6D0E51676BAC7B
-DA24651A425A61E74040AED70EA59FABA7035514A0F8FDE6DFB1B43838565702
-17B9C8C8786D4C359FFF347DFE060A91FA81932E96C73FEC129D1C5024570262
-FF1C515171973F908B4FB47B13A5AF652072A270ECF4A00402AA0CB9DB91FFAC
-B54DBBDBF179BD3E3A9B67A3E714F7C2A423A61F3AEC621C1D7E31C0398E4F22
-FE8F979EBFD5B143C3FA34E11D5EB1688A8C482D3ED2099DE89BD08069678287
-8FFCDAC7C19706F2288F51DF332B96106C6B7600C0BE4F8C89D013CD7D779472
-EAF9261E10092901566EF875F29CE04D8C6D8ECB37A7096078BDF6DD5F25348F
-9E39DAC89EB8A3DF269E7A7178579E626380EDA7E5D330B2639731FCF802E2E9
-BFA9A87C1685656736F55EF3769FA1EAB28933073CB87621A6B8B9D3D2BC4A98
-61022BCE0E35EF358D903FC77F8930D2CA2D663557BE3B573EBB07E2140779B8
-9E526B45BD4896EDF8229A02DD4A48A0AEAF7CB14679238B301370C1ABB056F0
-C37D9CC91141B5E855363E0E51345F4FC983345AB2057F726F0677C7BF6ACB6C
-AEF80CC2EA9C976206FE0B4D84795ED3D5A4588D0C90E7ABEC97ABCA62A18F8E
-1814E2538564B4A07A82C6758BAE9E8D37DCF47EA9E8154B9299DF7A51EAC45D
-BC4A341307F1A49176F83486153168BAADB77B19D2B6BE161BEFD021722F44D7
-1740E3687921E12D64AAA3744F9457E83A0F7B0459E7E046E29182F0286F38D5
-C35449E6849AAE29E612601164437702FD0BF9BF2331612F3AADD906ED5E7F26
-539AC3A8F798F447076200C0290D58C14A617D9A072FDF46123F89F21F0EA20D
-71F222AF6AAB681CC9BC2CE9E1F37D489C73E8E628B0CE90389C1BF15FBB82CC
-432631F956C85AC52EE619CC864EC00F4E631597691DFF1905D1CC16C78749FE
-9F39FC04257224F8E8B41629AA9A71827D002361850AF30D1EDAFC58E323E361
-D3ADCC591BDEA4D2626A0AD6903C6814FE57E782ED040FBC2CE140AC36336CBB
-C17BE07B5CCC863940CF36853E0154113D625788877329B9C4739F481E8CA942
-27B2DE3588F60EA297BDFA0F3EA34E275455988892F060C98F91758EA4E0B0D1
-7170E0C4FC9E9781A6875512E97E81B7373A9E352BAD9EB00004CBC4763871BD
-BD54D005815128532889B5ADC362B1B64657910FE5FA3DA3A8DCB70BF46C5598
-B1D844B4EAF1AAEC9BB44D37C48872A9307BD5A5FAA4A4DFF81CE7D2952B9676
-6126C65726EA85CF7F0AFADBE9EB077441F9A590F684AB98F22ACD1ABCB1B2BA
-8B659E7716DD06767E04AF78FFD888F6BEBF6D950A42CB9195E69F18C9607C70
-71CCD52A86C7A08A586B816A9F16F69941A08ECB1AE3CD0CD58F6F5AB5D5A8B4
-165655F31B21C0EAC5BD295E419A6F3C925F969C2A605E9183F96BF17FD4CD07
-86E04E57D07565CDD7841835BADA8EC57AADA52666BE34F2736B7015C1637315
-A8B2CC14C4AC2C8509D32D5199FE6F293BE46A5C3F32A00BDFC2EF6F344527DA
-D36898DD9C5319A8617AB3E95814A87C301FD92EEAE2639CD4978DC8DC62F3A4
-E42C0821F9F9178C3EE632D3C4E798C24945CBAF94FCCE65046E1C233B9D4A15
-65ADD80B536709F0282414B62F5A142E08B52F3C21F014438B0FD1E36B9A7734
-A6D9CA034080481D75E317CFC24F723F9B801401DF362BD4C9DDBFA99C6BC828
-D03481F1EB9F767573CF5E7B3A22A2323EDE34AB5CDE29E05D610715C9723FB2
-25BBA2FA1D2D7CDDC230CB6C49E52F3054D5D0D11613CB8A3B5D229A41A20622
-C0D20AE3B443B2527EE54AB4DB3E1CDC89013D56AB754CA542F4F4C634A46751
-2629264596717A9FBF6D3781809A14E3970B65DCE2C2957451414108915A803D
-93292A2B802A02CEC1B34F3E455620AEC38A4F28CC09D835F42FC57741BA951E
-AE907E955DFABA52A9076F322B8F122351E85D75B99EDFF3D2D50059FBF2064F
-A86648300F3B78B9117ACC4B83F8AAEB1AE57A1F056BE2AAD247429B873D314A
-F4ABABB5EA4F9031F8CF29DBCCFAE1EB519D9C3572E4D2D88AC3E856F900D267
-D734164AFCB4FF518AEA409AD3EBA59AF40E53493536188BB496B9247ACBCB88
-529DF6DE1C453F1BBC597E43FF1B8DE2FAACBCD384C813336B5C11F56F368789
-ABEB6C7F5758F356C6ABA76F4E50463EB728315DB7F6C64A6C9C890F2AD3337F
-6FB7E3A64190D687003065D990A395F60505C5334CFCC4F05D7061288AF4B52D
-E3555C18F955D9C5FBEC3FD4F83C580E6D3576CC4E86F059D59F40152A454984
-8BF8A749E118855B6ED6BA9E66316EAB63309FC2C597F76F4981CD56BB180EC7
-1BEE4A8C9AFBCE06C7ED7BA126782D47474F91AAEF69C0D9EC460B44D3083ECF
-8D93D7F22005B41477145A3362A0E22A47B50E3CCEE3693B8259A795F645A9DF
-C7AB00FDC56372725AE9B280EFFEDBB1D082DFF316E125358052E8BBC8C8DA6B
-8DEFE3454245BB6E682F8DBEE76901EED818622974D66EFD951F003F6FB019E4
-9AEFE6DC73BA878DAAEDC7329E5ED9019A6482B802298F4F123A3DB13E508C7A
-38ACB631516936D5373AB9518D138EABB19F460E45C725E5BE52907093AC519B
-3E495CF7078266468CCF9D9494A22A2382968051800791A0AC4AD6D5F6E48621
-D520B1F52F44BC2001587154A8340542CA42417EAA002CA3328AC878AC6C8238
-797C1345E2356FCD4FBE87CDC346EA0B830FF17B35C374F9D8A71451EA3A6159
-8CFD6A39AF6FD5BF14A39F1824CF7179C92FF7E2765F9CB624B1BEAE7110F34F
-B1E74C926352B57E7DAE80C98E60ADEA3F23564CB6DA53E4141092E9EF973CEF
-2915A6D0E5882CB9C2ADC2FA533B616A1874FC20A4D58A73AAE65CA4F4B6FAD0
-E1A970C748F18D80FB0120FD6B766DD79DF40C3BD8A215F6A5A701F16C9982DC
-C6E18342F5E1B2331133DE2500CCF86137564CFB52A759B7CE851424DFD802B0
-5EABAA0AF079E5F906CE3CB4B32D049586A09739B4AAAFEE980A8B608C62FB4C
-CED631546433847D6A103065F35190E73B45F78AC127AF9462CD4DC92B98E22F
-0FE0780F1D6057D8FA051D0D54385ECE63C32FCDD8BD2E82208122C8B8C25498
-92011D7F3A5383F18936E94F570BF307DCA1BF05277B87E366F30A79A2A7EEBE
-FD048294EE529625C7C10AA28694F3FE49D0B8790B39B1A7637E667CD5BB9D75
-9AF8067981238094150A78CCE08B225B427932DC47779922EEAAEFD137E82CFB
-4AA3476AE7AB02558ECD89D6AEAABCDB85F1FB4F4E318FFF3A9CAB4757EF24DA
-ADB33711E855A0E25582F10469F1B6C19089AF013C38F2624826A5730646
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.0: CMSL10 003.002
-%%Title: CMSL10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
-/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL10 def
-/FontBBox {-62 -250 1123 750 }readonly def
-/UniqueID 5000798 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 45 /hyphen put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 54 /six put
-dup 57 /nine put
-dup 61 /equal put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 93 /bracketright put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
-DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
-7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
-C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
-25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
-7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
-299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
-80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
-5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
-8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
-5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
-F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
-966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
-A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
-9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
-A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
-94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
-DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
-E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
-5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
-8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
-155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
-4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
-44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
-8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
-04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
-A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
-F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
-111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
-8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
-567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
-C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
-C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
-51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
-66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
-9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
-2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
-4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
-5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
-0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
-233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
-BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
-62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
-B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
-DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
-C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
-CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
-38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
-FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
-303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
-8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
-8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
-C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
-9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
-4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
-03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
-93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
-91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
-FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
-06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
-95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
-9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
-7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
-6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
-5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
-3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
-CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
-797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
-DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
-CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
-8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
-04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
-78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
-730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
-021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
-CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
-90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
-97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
-F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
-4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
-40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
-3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
-362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
-DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
-7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
-04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
-DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
-C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
-B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
-9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
-3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
-D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
-B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
-74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
-44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
-A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
-3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
-BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
-01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
-6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
-DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
-CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
-683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
-87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
-550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
-2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
-17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
-3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
-F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
-B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
-1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
-61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
-124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
-ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
-0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
-D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
-F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
-BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
-75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
-8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
-B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
-7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
-F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
-F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
-322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
-523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
-6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
-66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
-B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
-5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
-093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
-B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
-6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
-EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
-A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
-8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
-144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
-7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
-172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
-254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
-5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
-011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
-B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
-0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
-3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
-E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
-993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
-0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
-18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
-ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
-CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
-1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
-A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
-6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
-BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
-DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
-1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
-93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
-E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
-4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
-F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
-4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
-361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
-95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
-AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
-50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
-88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
-AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
-60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
-BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
-9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
-6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
-22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
-38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
-B240D1888CB89FBB748FD10B214773D466A44B610E649AA4B5498ED76ED3DFCF
-93FDD1775A32B2626D8514A0459EC4078D38642EA45FA64073C299BFADA12DD7
-A40500CB0211B154A5E50CB68510666968335DE2BEC50F225ABA2C96965F49AD
-2DEC1B8ACF68A7E4A95223D31B5D2BD10C724EC8894D032C50FFCE40AFD16376
-138DF22C88C4D494AD23D65453914C425BBEDA0EC587C4A8DC924485A470D234
-D38A1D466E39D36FDDD3CDD0171E271DFCE9DFE3D3E2FB855CADB69D9960B13F
-EFEEA3132FFADD1E42832C504DFBDA2C234A1DB8534AA7B4C019B50E096A8D35
-06758C37FE34C790773756541A30E9988C943911F0AAE5494EF9465AB04F591E
-2DEDF451678C059DCAB76D049B17736CD962BF299F5870F49CD1187BD84A85A2
-E4772A73892309E2F18E6B0C77F46B829FDC5BF0ABAF92B164CC08DAE987D04F
-427B6171767CF6341E24E1B3210B5AB525457667C8D52D90DD9AF4E8A55F76E6
-F00E64DA1F15A11F99AF60583C5F0AECA3C22E73D4B39269BEBD877FDA8FD1FD
-C2473AAACE9EB1BCD1A1C647ADF4E8AA25F2248EF10E7D584FB78884098F92DA
-C5E1EA71F0EA5D4A461ADF6B1D91FCE388000776A6D1EB311CDBF797FB67FC45
-18A6C439EDEF0B479E6ED2FF8BF67542A7334D9846CE63CFB36DC2AC04DD9E31
-A363C4D7A86C96B9C6A56AB4A30B5FB65DBC5F1A411766FC6F1109F36DBA2721
-0D04B4505756AEDCC6C5B5D0C114E9A6030498B8531ADCF32237DA0A0A661CFA
-AA8E81C76340905D86F611564BC16BB2F96F6A39C47BCFCAAA0D74EF0A3B7F44
-7AB18648B0A443E2AB08F8BC9CBE39DABF0AB19FBDCDAC8A55732B28A52479CA
-3D6770588BEEAEB0223680DE2FE50F404B8F3B8191F393278DF24B224695DE81
-FD0FD8BFE7A3285E55F38AD3C33368D6402091E9137D67D93FDF96ED6736D2C0
-4B68164EAB184F7D53F53B7D69C8846631806A5E479BEBBCE0F2CFB3F78B95B3
-C05C87F7549AB528C59967732B0DA20810A93AE428B730497F82744FA801BD9A
-C1357C6F0161CB6CC8C06D4A8097D8D2EA0739DF6EF3EEB4EB2F7B7B20A952A2
-8CF79DEFFBA547ED8C862C3BE07494ACB5D3B33EDB282DE041B3E056D4B3535E
-88B70376C5A21CAF77572950A804835A456F8810D0CB91B9652FF233055C277F
-E183B39421370AE2BFEE89E3F06A40F1AD34F74D4FBD47E464FCB4257C82DD54
-2CF6333DF3653E02CD7E0810D27033382A81CEC9410F549309AD1E6D027C2948
-652360E5DBB3DEF9402333C8CACC02403F24CDEA0C945855B112036551779DA7
-21E9586D929E28179AE77404773593D7879BD7C09765F2895B4416FA22B172EC
-4F575224E65CBCC1211D51DA6014A71C0D7AE43AE1475DD65EDD1912079D8015
-7973A43A854BFFEAF44144505F80F89DC612CD22002C097059319DBA19039940
-08CF32608BECC260821A45BB15F66967D33B1CDFD4FF6F8315BE7E10F39A16F4
-0D44494E5A41905639D97051DC37AB170C0C2232AAC4690677D565BE0B03E17A
-59FD823C1CCB6A66FD7057B8B7B3ECEA3FE4BAD5AD64834A0204ECBC85D9D4AC
-666B5B0AB5AAB99CC1480EAC91E3F40A08D969C7B3EAE04E7CF8CD88D5BA287C
-5A083B25BBA6442DF71A61A74BE47C3C1FF5DED3E4AB731F261BD4AF0539291B
-9B8004F2333B7E38936432EAC2BD8EF773BB158125AA744EB2545304713D1A57
-DC94FB3FF7496596B7D06B5DB79DDB1034C4A3591ADF143B1452EA1EC99A3F2B
-3F0F531EC5F23C1AE11E07C48D012204D901E2300EB3D8603D868860DFE6FCD0
-9228A6315E8FB12B4C39F594B64EC9F10DA5C4C766B14D5EE61701E5FCDB6A05
-16AA4E057A333963D25C765D43A14F798AD67492AF819CFDF6686BF0D0193AA9
-F9902C3436611EAEEB7B92F4969F4C3E736958A5BD85687472FEC2B3F69EBF98
-37FF4754BFAD681C4A783ECA557F711555B025C455B33130D9BDD3E723F4CFFE
-F32A50402D663CDCF96AF4BFD00CA4D1D320A263F70981CEE3F6CA85F5AE6E65
-3B5F304125EAA135652DF72587D800A18FFA618EDDAEC73E56A65422A1063124
-35CC9CB3EF6BC077BC3FE496384D19FDBD297E5FE443E19038232577F76FBBEF
-2055ACB72BFC468DD974C41B4964014171D772B0EE634B4DA590198DBDA6BCA4
-E1275EB80E1AB33B87CCDA95930CE9C444FC685EC3847B4D967B75255566A944
-727DB938D6479E987983045FB3B011F630DCF14BC8540EA5E01D3DA65C420F5E
-9B749B6A7C4DF65009A7D455B02E298BC6F37A816BCE13CB237B187A7B540874
-EA7034CA13E180A050F7218F2FCC71B0B92370DECAC20E6D1B3F05CE85EEE03B
-DB528094579613E22009B8B1BB2CBC48506D860050AE4BDB147705E56B85D216
-04A40F15C69AF629CFFB8EDFD224C8E9DED17A389882B1F4D3CAF97F52B16FB3
-B128BDDFE5F6C38E3721EB33F3F523BF286BF411198967EEFDF2D0170F17363F
-63C0A699B2F981CEF2CD2C0B51CC1CDAF451B89967C6B7327777D638900A3581
-450E77BB4BF16337454EE061C2721A974CB8C7FCD3CC7AAECF86CD7162946B78
-54DB9B4B3CC2CF58F3AC7F5F6D67412C86AB2922ABFCBDCF5128D75468294DCC
-D922AB8002370878EF21E00D7BBEB73AF458474D5DBC46A5C09514C632E997A9
-B06CE0307BBA3D38D2E25D47FC4E1FACA7FEE834DFDB781552F112157D0F0ADB
-EC7392B66B01B36F4C8EF46F443F506C98C80D1F47345DDEBE2A7062B93C43C9
-A4E842EAD1F5022BE5B15E1DE373DBAD8B6D39152D55D1F9EAEC7082DC907C64
-CF08BF53BF19A90DF6D1104B469884B4D7B051ED9D8A2099A528FF5CDB9CA644
-253B611201C38253118C20DCDD665503C4B78E77F2ABE3591A6DB5C69E17A074
-031B8E159A7748C7959D057E14E8AC221A19C96CD76C88AE6E3A3819A6A72689
-02820A79B77262231966CA329333291EE9C69468BBC75C430AC182B883AE8CFB
-1A5110EE0B9AD4F3C0206F36B15147443112A626B39D0BAB43BF091DAD2375BF
-C9DB5A9FA6CFCB50F7179319837A40F14DFD2C582FF9CF9D9B7528FCEA049AC8
-0E6B2EF84071DFDD6989C887314DAC65BD75A41FD3B4E74FF90B917A715C97B2
-0A4A32725E770CF1ED643CAC7D9D65D877A5D2789652F3C00FE2BAA2356D6A90
-99731D0B035B39CD24591D858D0BCEE9CD7F67E93362F6BF394BE753AE3F3E27
-5D1CD2C40C81FA2101688B8168489299EDC0293D4827B8A955108ABF07F1A5B7
-8A01C5BC95CD236186166E3A98C91CB13ED99575D8A212BB022614C8E916D1FB
-7A2C795BE1518DAC5576304F9A5C8286AC954B4390749F7B168143D5B23FE1D6
-7BDB96FDFC1DFEDA6431FEFC6C9A8830A81E91F508762C4CE69B6DCEA6A4F1DB
-FF8EE71AB23D7B4FAE2F50C3180501DEA70A36AF93205E6EBB20DFE90799962D
-691DDA072B702DC3AD2CD3440CF21200EFA7349660F72F5B564EE0352F3FC80D
-B78F2615156CA7025CC50ACC458C03647639845D4FD22FD4E85B0F4D6F3D41D7
-C85CF835E4993C2BF7B8AD083F0254C2C995CEF3B811678441B06867C4398B6F
-8C913074F2194D9B3DF62B988F00BF36E8EED028D6FC4B83E513C11CE94849D9
-D89CE1B23B5ECDB2182A0D0872D1AFFA84B71B7999A8648E11F18C695FF6A8D2
-E7FC3FE4A38ADA359943F2DEA91104962DCEE4EA4DAACC73F816F3BD8981B90B
-6610FBE0A4783AAE164B7BAD174DFE9E5478D56C26FACD680F4DA587F504AF1E
-8108C893401A66C5F84A2CFD70A05A5F4B18D7CF325259B14346DFD012FC0ECD
-29374086F12999CB2D40D8E5CB4ADBD83B5EF31BA45BD8B80FD9B553A5206E1B
-C6A5A72CDA3E4921E2921D11698DC26B0477D88252618C4D6161ECCCD5DD8ACC
-AD686DA19E454AFCF646E448AAA1C185AAB08DAE8273BB374FCECDF66CCCCB23
-FD18AA1B2C8938B39FB75894656B08859B4EA93D2DF22A89D762A5BD97B3343E
-3B435605B0348FCD8B0BFD2171EEA22DD3F72C598A0F40BA08A502BA96E5097D
-DF5073C519FB1BD45DF5EEECDEDD9C5EB0947D6082D65E15231AA3DE24D1DD00
-E10658E96547BF1C3321105954A81F08D85B1BA361CFFF52973D79C3EC3B191E
-44CF40677F676121D950177AA90374F803DF72E61CE8B69A2E10016B75C4D389
-FDC52976511F93CC9845F6C339752C9589F9E487276B4D2148B8230D4C401008
-6581D806370314523B6E8CC7146300725BFB2CEF56F5BD76E1BEC7557870B378
-4586A5A79B8DF82D4912CC3D38FEC74618AE4D3ED4EEDF88A7A1C6AC84C7B4F1
-EDF6523C13FF44EC1A9100AE9F2BA1EFA4AEDE46E0748C6C249BFE14A46EDCFD
-E140E6FA9A7F846632EB7A3B6BF6112C35C245CB55FD49A44221889ADFCAE421
-FAE8C2981606791FFA2DC5B9C9CD2BE361E56881E9F806EDD35E5E5EDF0A3CA7
-9C492B2A9FCDAFAAD58BA7B45F6E7108A52DE48611802CCDF0BFE1492E0DF659
-F08A06D3F915DA940FA6532C082E20349FBDCC5CA14A167BC2BBB9F04B7B7DEA
-53E0D534FF6B692B99BA2445437FEB835D7FF583BF5DE77075EA4FD2718DC036
-970D8A63A9DE8EE28B879D628C0824620625BDE3FE9F92074D543257E0D363F0
-5F334AF08FC8432B9E15456C72C9D5D0726375D9F69C0C977D155C4211DD2BBA
-4D0697D3B2D8766FA37F34687B980029BE6B089B07C0F3CD4D627B21625025BA
-D3C9181F788A0FA8526CC4738FE0E3B405BF99A87F2E5ABC03F130A9A100E4BB
-D5E9E0903A0E3FCE02D064A64373F68F602415B61063C0B050C68E5AB7832DEA
-05EFCBCBCA021E1EB90977859FDF686EFA1F409EB0B9FC906C706F9D2BDB7F26
-8A7B20B966E4F5A8DF1815BB7C0F26CAB9A56A0F506AA4E80F1B283006CC170F
-FC7C1EE26023F964E3B9D73ABE177AE41B56FA1C9ED077DFF210ABC4BCFC9EE9
-0394B003E32D9124E5B9EEFC2B4712CD223374242ADEC064B09A94D3DB544A05
-7FD7A99AEF8DB77185A21821F78116BF76F69DA6A5EF07F9A8425AFD339183EC
-DCCF63DF100922176AD0257E84075E9A172BE473A9C282C779DF56108C8D441C
-2CCCCB3B83E6528BFFA17A3867BF9D906DEB7DA8B2E933D964597367A2AD10C0
-0FDAA376476C963201959D9033BC197718206882A3CDB9174EBCEC99CD9DDF11
-B89BA0782ACA36AE8FB79FB7EFF9A68F852CF832A6E09AC11A45E05A508AF5A3
-F9B801FD3730ED86C6C6C18C6051107C4C5492927B8823D50C209681C7E65016
-81FCFBDD8646B7A3CE47A58D6C24B952ED27C0AB720928D5272BF0C1A5750961
-0FCB15442BA1A8CA57FAACDB21165B635CB9FD3E0CCD7ACB60B70B85CA5290DB
-D45D3D3617C684ABD4FC7710CA1B7291E9B501F24B3398832323B8905FB46DAA
-0381D4FC0A7BE2C860302E0BC80AF96345132C8303F19354294738E69254C005
-E59BA6B9591EBE35B6432DDEDA6540C1AC763093BC11310DF1CDFD253FBBBF94
-B6C060C5E16BE428B5FB98A81C3EF91700B513EAA22C4A0833E4AC30D1168F8F
-455BD4A04FB4C709A343D0376BCD55BA2B4D9D02E1A255C5535524B2DDB67FE3
-7CB825B6ACBBD67A1C3C134599F396CBD1FFBAFA53DA6987F8BBFDE986040B60
-9CAD0517E4AAE17B8A7FB94342B8BDEF181E9684D8855A6EBFDBECDA0591268D
-5DA6D96F2445498803799AC3156B372C17ED53D8D59950B08244F3E369A97EED
-454AC6A67E5F3DADF27E8A80C379FA10DD2B7A564ACBE6176297276EC5FE36CE
-C9E976E570B5B5090FDB3BEED32D9BF625DC030BBEBBA7F9F6361B62E0FC3ED8
-0130B423F4A372CA7D3AE5BDCA8F1A1C3C212BCEB00C7ED5DA5048FE75A36335
-75F3C7F4FFDE6CF57EF053E127EA837EDAF9DBBFD97EEF8A4C04B71B56C7603C
-B91C70D93B174E5A9D72720B59726664F4D5CB609DABAFC1501DA518F6B84DD7
-979675A5231187CE8A0F215F630A4F641D0271856D02F67E6D2A3ED075E609E7
-64142675AD7245A3E3D71F00F58BECA53C1EC1D3EC324271A845FFE08810CA4B
-CC7389737F0EB7012A459D9DCAAEE69DA8D37B6DCD0D77CADEC24C8915280EB3
-357CFA145588B454F680286AF54F6D841A00C3F56378AD5D170BC64C7E976C61
-2764B3F62A4266E23A13E2DAF78618979A4F4927901F981D0DF33DF700729A91
-013EB55E837C127C285C721E707380870017F92597D08F14CC1684ED5E0D7B82
-218B2483804D3178995BEAE9AAE0F3619ADD32B153F10CF9002475EE391259B2
-B9382C705D640E3BBC3441F473EB4BA49D3D5CCC87F2884FE41231C44A8B5983
-AA47073342332CF51AD1FA3511A1B4B0F35B56B48059C44A563A9ACA1B903C32
-934E62825AF2D7D46BF3AC820299A2F10F7CFBB7CD235164A837245177C92732
-E08CB02C95F10CE1ACDB2B57F39849CBBB08854E32033D4FDDBCF18C91DA97A4
-5EBEAE573DC05AAD1B7F3CC8E553A23CA31CFBC90F746B5DF3BD3211F7745814
-FDB312A31BC564DAE2184249737A336905AF0CB81E367C47A251798061528B97
-29741E7A74999AF3BB3E9F6B5A8C19C4D4ECB0037BCFF49D639A541AC9505E1B
-621A78A6FAA596B686CBC9ADD87E56C75912B0F3611F6612C39E5F69F3F52AC3
-60C253D18DB17E36EA26184087DF07703F9939518B0C448D7EB0605BDB97D2A4
-085946FD5242E7E4A99DA5022245F4674CA9F330321042204E133FCB9BFB7073
-3E48E55CACE1E9AA8DE438A08C92021217D666CAD2C3D26B8CD33E08412249B9
-AAB74D26B0EF3B47A5C04D06E501AF2DF6505707C387213789C25F34AF281EB7
-3865898B728D249152176FAC80F32174E5D45B04739A14D5C8CB9CB5534DD999
-238A4951B44395B8759D7AA24702CB70160B6B31EC8119DD1D208F2D854CFE70
-9C500B32111486414DBEBB10F9FD782F8FD95A532AF91CD073C07D901C0D435A
-BD6B0A0EC384F2F7AC13429B44E14A79CB90CFD4E0CDEC2B8E0D39AA126DE342
-ABF52C7D3A9E983FB8CAFA1E507DD953C9D3644514F0C55C67EF4035CDBAD62D
-2EC3457119151D2261464C15AEB95C607A2F8CBBD19A68EA7047E47D35DF8E88
-D14316393DC47FD240B97328C535BE6C8E44F59E6947AB34FF0E1C8042B69755
-1BB8256D0FCE548D5C08E235511B5651089CF50EE720631A2440FF79CEFB9AEB
-72A25EAA77E3E089AA9999352C2E5B0F77415B699ADA7BF77412409642FA0143
-74321D67DCFBB9753B213537A0A57CFD9792E84C914ECB78CBD9EE88A162CC95
-650BA5AB5BF546869A35173CBD6FDB0FBE006653DDD24D2646D874524D8E4141
-B54856315A3B8EA3318B45595782CB29B41DA9B65775EB89E83B6219A40AB0F4
-0A7C6C5A8B0B2CAC47E71608FF8AF12D962A0D114D950995E350A9936268A5CB
-A375F44E203F9DF523FD2D7431E4A9C9EE044691B562F42B95A5454F38FE780E
-E5E1B56A68B5AD97939E8EF6FD69E3D291E7B96D24CFAB6343FFBD784D18C2D7
-48B930E2CC9302CF06E51E77B96F1B81B2E7B7029FD689F9D21032877C331DFA
-EFAA817F51CD624CB25304F63E2DFBADF5AC5CA1ABE2C1EA268D4264FA4C928E
-E4AC8FAFEA85B9C359BEA71EB3E2C700C80E5DEF8C946CDB4BC3120A342460D0
-0DB34F19E282DF13C97259962AA42B410006BDEA9C769C314CF4B6A034136D14
-17142FC50119A235245106BD37B945EB33F044AF37DD20A863BA0713E39376FC
-F00AA850A0AD335CDEB2910454C6BD2C7DE5296DB6B4213CCD925923B120D960
-808DE7C709742AD2B567EC74514DFE6AB1D20351641A46EB37A88AC788E333BB
-39E45E4574BF359F918F9003799BB8F97549F33A018D5DD04AAE2A7AA9B2956C
-7369A1342CE53E4C00BEDD1A68F17E8A40C439B6413DD7F6D870DE8A967C07ED
-149E1DFCB224F385CDC5EFA9C52C147D2B354496658CE10BA2696ED79721066F
-7F8C35F08BDFE605C84DA8D20FE6A6FA0B6F98C2E32423187EF50455915ECF1C
-FE8AC0DACB07F3F53F942CD7B2748CCDE206046B2D64AB603972716132C59577
-CA4173885EC7A09644106C0E9F2C8A827AFA7C9379A0DBB9E7ADD96B4CFC3810
-4A4DD5F2836659C9F1A27A10B7B55C09BC8779263538DB0FDA7BA888917B341F
-F18943F7A9100DE4D4A147E9F39A58F5F82F903F6EB7AC39B569CA3A891470DF
-7DE5886C8DC88E96D928BE22AB625D0916C6AD90121BA65CD70C852B2A1B7549
-6BE61981418CB79E943262F2E6EFB2845ABD98BABE7A7032D026B5AB08981BC7
-E4CC97DA0331240AA467D36BF2E7CD6C11CF63F850A4283C22D081908943D9D6
-FCF648F57562B78FF013119D5564518517784B3A1A2F9518A9D2F85062C7D5B4
-00BED381D64B3BC3660631AE947116DFA9973BC21F2E1FB1ACB56EDF1616A979
-AAAE7ADA30E9C5B515E7ACC91DB40380BD05A0B35BEA8CDDA3F434300835909F
-12BF5C384899BF00927CA82ABBC4A63CA144439F4255BBF3AFDDFFD1C74DF0FE
-C9559C56D1F20E8E7762C79E67BC1049A225043AA61850163BADEB4252A0BB42
-48A6E798966BC1F70EECCAC076415B09AD21FD84CDEA27CEE10CE5B416E05608
-5EE7683E1ADC756443BB8DD8B0253570295A6C0FA91BA787E99F2B7CDDDEF69F
-C4192D7AC20BDFC485CF0153A5C3E2DC8FC14F9AA7D07345E1C316DFA3892B42
-646B8A736CF660604DCDEFBD5935D007F94FED60997C7F7A809DE5E42B422FED
-0E63F90B8DF6F525F4B19AB6C9723EE6C6BDA33096B41B8C9AEC9F4F33F5028E
-3DB3D2DA7D3B4D8B22DD7544EC175E3D51A80A723AE216186A4EF0CC294D8703
-1A5E3CE6561D56095DAB9C91B3BFEFC03774271FD675E8159E603A555B3FD259
-3112CB04B5DA1668C85B09AB34AF073C7285CCE41CD1B24F6A1A2D6AFCB78E09
-88CDFEB4AE8D383CA2046107A1D51E0C7865D02CEA3722B2291AA553C78BF478
-339A876E5B2AD3E7AF400F462412D4070B1F9A782CA9FE094AC9B1A613576307
-032EAF37B7C6DC9E11E1DCF7DBB4EB6DC1C2C3669FA81D5DF7B80D9D0B0E3884
-B926987C4B160E7B7CA3919CBE7D90AE5FB0FB2B1B31D73DE9377758FF69464A
-9DD278FE9B2977C13E37B80897CC4F4220AFAB15F17B43E86A45BFEAC029E01D
-23AD81F6C1575CFB05E395C224CCD1C4B3C2610CF64F84DAC74313B066C86AC6
-E08C60A163F219B627582A708FFC6C4E45F7BF684333EA1A34395D2A04942F05
-CB3BAD7D46A4B07525E29F15A2A626EB41C453F9D82E3AA3E963A3691A7C3A38
-476430773AB4D42EF74A057C3878B92EA5DCC6B0FE285409B415FEC6251106B1
-683BCD7007C12E094480AC329DE3BE6B8D5205497BDB701CECA825617C079176
-C27E178D227ED07F1D52D50CB3D18F64150B7365B9A2DB30FF40039FAD5405ED
-3291B89DF9DD4C85B468C1F13A4F83F45F24F78DB0409F61F6A29FB591E700A4
-42839EC213C6FE8A852B7C27DC1B1BAB46E86C068A94E192CF70FBD725922894
-CA4195EA895B3056AB64B47CEB2ED4241ADF68F374A633A839C084D8D8765442
-4133DBAB9568B29F2368D56D74765F59B890126EF51DC791AFD0560399D080C5
-F9D12F191E79017575133295B7C023D0E25B4D7ABB691E086768DF4817A72B0B
-5EDB3E66B8166D54A687E0349E3DC3077603C00F65386BC44600F63DF1625404
-4A4BA99F7BBEE43FEF19162C32BDDD2307B628615BC593F0975B52D97569AFF0
-63CAE1475969798194F96259F8A07E1C24AF35576AC61D7A787F0ACD92904D0D
-56BD672E7357B40E634EED6A29E9E8D46FF5C1FC5CDC2BF3B482245BAE750CAD
-88DF5274EF876A1993C6A3883F07E42CED5B6F216A16E24510B74977588FD162
-70C96426A1F845BE8C28E05E587F5439AFFB7652142F3076F1051FBC6248FE32
-745EDEBA14956FF6881400FC3241C124639D9C46940FFA137E398D628A2C2FB8
-CA0F261BE8CEE7C58451543441B179D90DC3F360F3102EE049208863386DD52F
-41011BC0F0D45D280BC899B641A697368A45F07A0E22B79A98461DAC80E79B44
-CCB233427AC1E884D44BF92F752A1A312D0D849EEE2D21867782F6AD32A39458
-FBE690EDCCAC4705E934993BE67A54EEDB2AA5949DF445E07C37D0FDC498C4AB
-A1ADE84847D7B2BC66B4C911E22F83BF1DC989B9A144A7FE010D7437575F7DE4
-458A2E0DE03E1A5BC7A14895880533884CE9F2828603A3872BA400083339FA40
-EE28152ADDBF4C024EF8F33EC9B11F58B1773F32B5AFE322A8855D6844F0CF3B
-648C69BF550DE10F9A479E755960A9A57011C0B40E1FB42135CE5E105262C5D5
-3D3A14A9B37042CC9F59B527AC2676AD8C0EEA036F349D3A9973849EA2278C4D
-A4A5385E6EE754F77B406E45FA99C075B8E8C86F1C302F9E47733EE15BBB188F
-9001A85B8B2E9A57EB4484A6A069FD5BAF94C7B8DE2221C8B344CA5BEB925EC5
-F822113E0F4A1FD7913EF90FB3A98EF1533DB8B64C1719DB0B9A1EA965F1B443
-8477F1D6554811A5A4F5854DCB48EED2D81B3ABA0AB71A73FA58194FE353CE01
-616F53F6E12DBCEEA56439938F54ADD6DA074EFDCF42D7C661884CFE501C7D1A
-C098A86F653556AA5F4C84B1871C696478BC33F563813DBDB0416383F69C3C9D
-3199D2295CEA45C6DBF90FA21640097E00A29441116477FC7164CA6970CB1D87
-65617166CC7ADD221AFBF48054A370E8731C1CE097548BD0005051CF65B23270
-2542193DDAB6FB3ABE6D917FBD81726276163AFAD874FF5AEC67EC6E86A3FC96
-68E66AC4C5D7184C25048522721780604FC69EAA085A7D9E3C4D852150147892
-C4AE45F21596A200548CBA1358B6C3E7F949653565B7BF05332271D87CEA5994
-2CCD83A46D6EA210B8F9693EB0FFFBD54C20AF6A9E64BB851CED1FFB066A626E
-AA94ED721F41597180A28B5A1AC3CB25DA3CD77120F6C123E531EA276574CA4A
-707D7AFD71D520AF66CCE531D5B46D79C66043E4E6286CCA4A026324ECC9D6D3
-8C664F62CF408AAFF42FCF28C9B68286A572982C0AFF7CB972E2E9F5BC3CCEC0
-EAF814AC53ED5EFB29BCD1C8985686D321401A37366DF6A4E0B2FD113276480F
-106DE18B62F64ED8F5E43F012A10DA66C70E04F718A59D318F4CE57A114B97BE
-B0CAB0E691BC69ADA780FF6263B5064F1DF332AF9A68A875D8DA1A21F6072E5D
-C427D0A0CB4C6914113E92B179ACD7DF798066E52F23DD6E1F48F1084A9233EB
-97273C96882E1980C2C766B3D4307E28B957E575FB28FE058C67B3E701CF7646
-6C88F2AD2C24CA75F7E3A0610DAF3CF4EC7290380C7A3A9784F6E002A0340D64
-41A831433D2F1DF06B5A41F94203987002D61DBD117F99C6BB424A16CC776740
-80074898A3D55BBE5F7424C79D5795CCB09D79F5564439E69294010CB47ACA06
-9E2523360853F42E3A717FF80C6D7763BAE8EB31E9DE3C11E0A9A189D6F9A1C0
-374E3E977DDFEC1B95DD2AB9F2D8C33747A0BB05E1C2D058C732853E2F13DC23
-1BAF84C3E48F0EC926FC2C7D4054FB3D407E1042ACD52EB96FF78B9D7330AB16
-67BC756499D2B43009CA7282152734FBE7E9883FAB8BABE016D37152475BB4D7
-F34E0A75772AE2879FA184309EED982EEEC3EE0A84D7D55B938E683973C76AE3
-18716AB77C985DE709B4EDC17D0182D995EF3685A677E80887724EA298E62B26
-1CA8BC74A14DF0F88AFB72C19F581F854CADCC4A3D82F9FE7876D5281C6CD668
-3E6A1E6E5A1F206CD4768F3F51E75177CDB68010F14E1F39325A63BC9ED66345
-755ECBCE8B82EBB40EA44DE7E1E331F1DE73C16934E1ACB512E776CF05F8EFBA
-11B7422E7BA8E1A5596AE2B673FD16450644DEA0387BC0143929282F0E72BAF0
-3CB6939B9E2773E81472C05CA7CB67A602446C6CAD9C43CAA81799CAF083AEB6
-B5D8E966C103AF30B01D8461F731AFE63402A2C503D85F2A6BDA91772A7D2BE5
-AC507D274539002F79F096F85A025012A04CB6B9D4EA85561EBCF74DD0AA21C4
-B0E4DFCCFF70AC0296678CA94A7CDEDE22F6417F070425DF4377672F691FEA12
-997D7553A13C9650AC6072E0784BF611ACFD51DA9FA0268AB5A57F294C888F87
-5B219D68BC8B87E3DEB36B9AC54AEF7FFD08AD56B7B663FB35B59A7CBFC7AA74
-76C8DA5B9CB66A97547CFB089768E93071ACD3794C3AF7DDFF5A683789EF679A
-25846067B78B63FCE6FBF62C0167132A519112F23DD8917E02707692F88438E9
-583FE0ED2B79493D636D18D92499CDAADA9D9F9A10AF3D60FE2096B72CBC1132
-D0F6DBF7C0B94194C3A2BFE94D2CA450EC616318A117506377CD26796F00E092
-0650E8CE82E68B32B93078E29FF7B7A56F6DC2DE6CD3F4850103EC1561017B0D
-BEDA41CDCD8CC0DDFF37B2A4FC12A9A09F37AA585A394E591BFC96343D8B0FBE
-F5749826284B5DB8E2DA2111207BF20BA4BB63174494091E6723A978DD34F651
-931FBBF825882620C220C23DDA00298DC397269D16F0757AF6A525ABA4ABFCE5
-5093D3176AA6C9B6D4A1335995707E49C973DFF879205680FA58DB1ACF5F54CD
-5415055BDFA2BFE36C05A16C3997C9B7C9D09C4219ABEC2F60E2BFAB06012942
-6DFB4F56562DABB5151507CAE41FE755A88B8E379196A3B3D35D8AA0A147ACEA
-5622610C677A8BD351D0814D75AA546B9F0A3609BDF96BA6D601E9A719852411
-8381003EF2C9511B5648081AAE6C5CC0FC77A92A2DAC9F5CD6DD473227F86F0F
-7686FF0903E729E538D2241AFB2E4423C9B7F3DFC776D651191F82E008C89DD6
-3427FAA2D63AB538658CB7E71617F38709C51EF936A94CDF286A8B049754418E
-28F64855AD5B489831D73D50800D25BFE5324E7A8D31CAF3CBB5173568D05206
-EF8E164BFD15936C714058AA8B914E053A5BE872EE8350A97238F88827E7A0F3
-2CB516A3A103FC3A4747EF4373A0AC835B8BA10E44CB69AA9316A377ACFA3F26
-1D81D20A569D2596FFC02FEB0E40EE0746A5245813FF300E2946B0CF4BB88AA8
-12651B0EFE6FB3AE4869E1A79D4E58ABB601C744BB12104C12E45C3347769F6D
-550F26FC6AD67020AEF5F27FB1B96AC906182E943ED144BB227B9AA35E6C3222
-B8B1332C747C160B49BF7B7356855B50301ACD7CB4E3A5D7637A792B1BE622DC
-AEACC9A2496A025E3C4D8B841D930C5F1C0DE57C56B235DE77C4BA57C768C8D8
-B601ED2D180323CDB36431DEEEF9666F7C043DE47DCD6C354A904E598B650FE3
-3C3732D0A4CE801A9101A8C6470307B7DB0B7AE35AB12C590F5B499F4F46AF03
-9C9DF2CF317D59A362679C00FF5AC4ABBCFD85DCE60628ED1C8948C0143C8423
-9E59B2C2005DDD22E105645CAB09A8A460EA79ED654FD6B9654C9632D18EE1A5
-506989E72BF0DA6F2F0D89B61748DA34EA1D8F75E8E1BDEEA4087177B2CDE38C
-997F13A7F1291DACA107ED63E5809450267C7BFE1E7F04092C070D0D1E634111
-9296D2ECFEADD76BFE2CE179B69F14BDD8A21DF30256B915C5F65F436EBFA202
-774DF62285D8DFC737844D4F22FD55F6BE59A2A4E2127247E8BC6FF7FBDFD670
-6C14169E5FDABA8F28B282FE71A99A2703B5B5463A0D318BE95E78A44F0FF7B8
-AD21A297C69FE7FCCA05610D33B2452324153D66196055595C585F1F4B8D615F
-2DDD1AE0EFD0EDD4544A44535797257ABACDCE6D64F4D6D9DDB73405ADFE9467
-A75AB7C94C30E58D45CC3E0BACE3A45582A0D560138F3DDFE5F1F9C701C3E6FE
-F1AAF5F638823C9FD3A8B5E0784C5EEF266D4FC9AF0E97FB13AF654BEFFE3530
-BB0BFDD027A7CA240E856CB336197F368E7FDE0271B310BDB0D09AB92BAA0752
-B42CEA6B7084794428DC36F37A4A8F85EA8FA61197FDC60BCE333910811C5461
-01FFB36AF3FA95CBB6F909887AB566F060A64F117F48DC7330331F1AB58A5DBE
-111174BBEB644288A6BF075048F6473C79361A660733F25D9A77AA50824CDFA6
-77F6440CC4870C20DB9734E07319B42CEE08735278D272F9FCA6A1D872C7A342
-6E8D1A6E8DD1B7297CB5B5CD69542C9A9850A821C481213BF26F58478AF17B14
-E2939D9E584DAF8A213AEB10AA1A51612033963EC10B3102CD9C4A393C26B597
-48B7EA1256E68FA2B9853545FE9AB84ECC3CBF2C824927187D5F1E7817AFF06E
-4D9BAB55A20AA77DE34DA624FBCDF959492DDB3D7A8C5165F1267C09A5FB0C47
-02839B184F6D76D62E98C5E85D9380E20142D13DE6B7AB99BB045771F47FD250
-7D978FED1333DD1CB9C298F9CDF8011BD2D81DD1FCDE21632ACB2A2D59E81F19
-6BCD0B1AD05B7A6CAFCE259D2164A7415A2C904436E8A0A9FDA65A6DAEC759F3
-34B0373E228ED7A6BDA06CFB5DDFF814C8670359C31E25F844028673D1948681
-2FB4C88075B78BF61403CB89A2B4AE3C4DBEB7B82042683483B9480C6723E745
-83F257CA9B29E8653E19152438F185ADF48F31DD2B18BDCDB1C10910E59B72B9
-A8D9A1C3AD8BD5E004177EEEE3910FD65DADFCA86A1E12C101E37EF3148F2DB3
-4EBD6F1302C536BDEDE4E5CC58D6BF44C5A2768414813C75860B77C415B4800C
-5D17560EB4067A00EF3EDDDAFFE1B49297328BCD0864BAB496444BC439AB5554
-43FA6E0C688268DA2CF97882B1DBE49DAEED1862DCF90C06A632F9D9E5E9BA90
-7380BA5A3BAEDD3679B352B71C0B6CC21CE0DEAD6F4204CD056EB0ABD5A566F5
-28F055C8BE9A50C7B143A61B6F4616BDE76C1D58A44B6599DF3106D2D9652E17
-64D3A84350B9317EE09065BE24869F993234A9A726D92FF4FBAA9CDD54853952
-488435BBEBBB1B1DA0AA30F3E9E7DFC261A54306CF750CEA672251D39B901B62
-3349D2BA3A6EC83183C3E1A41CF4E443C281281AE944E718C30F9F22753E1257
-A18BF0292CD25EAE3DA4A7CAC8D71E447B6083152E501F7EF720ABFC88778665
-9AB244B30E8ACEE8ED70C334236F6084DFE36812483094813C36DC5CF5248CC9
-1587E42FA3D7FC5295479DB01F90522C32A71E5D6CEBD6E11F252FDC9053F9AA
-AE61FDD71830B24879A740C50A0DBC1F0B85F3506A5034B71D85420DE26DCB61
-537F2E7CBBD5039286C47F692CB75772B9F3A24F77F070921D929677A7549CEF
-EA902DD5CD6283440C250E22572A7D19006CC52D9E451D84638C0D8DCD32FF61
-D25E0E1BD2C2E608882D01D98554C528E162D937098D3F6FE8213A481EEB755D
-7D9724E63F973F785EC81003FD7B9A363CAA01452D440D66515C55EC708DE285
-75B6529926361E8C54CD7C123C5083412FFB1F6240096AB1B5420BA66623D2B4
-655B46E93F33BD23FC73319C967CF4411651F1273AD9C074DCA12CEA8F8FB10D
-55DD0D0AB16AFC57C7D5B023C0470F943ECA5B96040E322652EB2122E1B91B79
-E0CA3A276B40F739106F181BA13F4ABB3A8BE9D4C320830D8DA5E157ABB0095F
-BD7AA9335E965273C4D97FF84061701B57BF19D9E6F00849DEFF69247D5F279A
-A9EA8ADDC3969F1CC9BE732171039FBBFB570C487C9A6B26DA98BAAA44536DF5
-EE2FAF5434A4BE8AF0BF9AF90AB4BD4F0985287E21408798E4EF30B415D6D529
-8517A6FC8C1EC803549D2E85E601802BEA6E79E83E2AC177FF14C6AD17DB3FDD
-D2A58A579846BAACD17E5A30B367E7A0EA2218B34364A3DC272C6F117E919DC3
-58203CF0E554564D588B52B76645FECF7678AE89752C2F33068B71832AA44D37
-4AE89409B1FA0333BD9943F6B9625A575676D0511781485F3DC8AA3D922E8929
-AA9DF11BC969B52777521E0D2DC7510AFB8C7D98ACB2394DB7B03DBABE0A96C9
-2C1A3FDFD53AF40588675EF2B1E6B8D1600345E4420E591A86E8CB9E320BE3C2
-32B023D5715823F9B7AA8A69EF94D2F9FE2871ECB03D266244F98CA494681635
-2E28EBBEF838865930F29AA5CE80DB668396A07520D553FC43C41F9A527BA055
-D40A03D13E00A619E689CAFFE358A8ACA538CF561AF3AC8923C9AB9FA6CCAEA1
-3793194E38CD4D05D4FB9C7746173A3016B47D8F6718827919FFE46292E8A3B2
-25CC2BBC42687F68BD6ABB5FA552B2D190A56DE7EEE9806C84E36F06FE235C93
-33AF439105D99D57FB892C8145169F6EC0D32AB9ABEAAED0D03F0845C991DAD5
-45997DB3A65FAC384F947251402487AAE21B909BABB6DC7E978071DB3F6E8D92
-46CC69825434E3D65C787C4B7930DA80F92137A74F69B6A3262D5E38938D3167
-CFF65030D36AB4A71E378FB747D4A2176FE21F99B51D2124D18F71EA8B126289
-20171C65F2DD420FE008725E46172CE0EDCC9FD6230C2DA1E924DD32D3B8AD2A
-875E13EE802EB4C03E1281E5E4E60D360418F7B0A37C882A1C4B088853297971
-7CB817622DD1001C8839A4D8ECBF2C3B3AC2A38A5B360C2CD0FBE0BD8A548B76
-DDE223704D209D320AB8CC8449DC7F389829DD7AACF05391DE38FC0661872F55
-54985FA03BFD68F11AC46A94ED678F1895C1CA291989F9D741B91835C8B84F42
-7523E939EC3C3DEE7DAAD436DB7D5EC521C65EB4FE3D2B48365177C9B4864D2D
-94611F7381E3E0C156FA7C2A9FFCCFEE6CBD4C0D3849EC24828374D93A50E2B1
-B9EC92A01E6754C7202ACEAED3390E0688E7F72AACD35F9E0DF56805A02FEF54
-95957A3425BA0284403D161A3151748F601C3CF073A8C30DE5E348EF25EBDF73
-CC5DE866803B6E07796E0A1306CABF87344F9A905A3499A353085A963CC9E67D
-9C00756FF96C985C0F851226C278F321063063508EA7A48E32BC17739A6B4789
-14100FBCC08D48E6B3DF3C6295AD9C8EB69E6AF7E216A9E018BC4AE2691DE1FA
-E61FC1D8FF041A7B612A5AAA75D3C84EB72F6B4DBB26CE971D99ECA9D2C29E24
-E8F61E7C7BBC7E733E3ED866ACD4775B99307141726E915EE1AD335F030B92E5
-B40B2AFAEC165ED218D0E8823C67B5782031AE23E9A97ADE514DD30AFB4C7F64
-C4AAB92A983C4EA6C68B7D2C724C6F0F8E9DEAEA332CA6D50B96130094C75A4F
-2FF7E8D62D6F5F78B2012AE2ED0F7951FCAEC856E6788F29BE6E7A6C18F4F6D0
-FE961D9B92D4D24E82A012B582EF5A9D09A1F27DD89FD3016FEC0347C1EF81EB
-51193C457DAEAA2B54F3B29CC4AB24554F4EE94D777AA2EAD723577774D94003
-60BD885674BAE5DD154F57401430119AC825F05929233D65DEEDD2801D979720
-910D24ACCBF66BC3D014ADEB52EC1BD7C12A13DE907CB96502AEB77643561100
-77930724C65D382FF02A4257D2E758A6B4C25AE6E3B9F4802BA45FAE2B0C0F8F
-61B638F4ADB0D7481B31DEC0BF06712DE69486473337E9A7A990DA31C74E74EC
-251163185F4FA2CE47D12D949456464BD6733F6B0DBBB3B9E0A09895152A9E01
-27B77B78F0EAF17FFF1C1D7B015DB87D516505E13B2FC913FC1412E96FCD58D1
-EE0E40925B40742AA591D314C2E6DA0FB9A6456FE76D34AD5D885D21C3CD44DD
-9CF32B39C83ACAACA4799A6FD3DE855F41C991ADEFCD8FE18C4C94124B1B12DF
-EF34D6C7521206E89EBA6C83FAF487E409C065F5D631288F9A9616EE3A079C89
-73561028EB2DD3971293062BFDC2561B7549FCBD4BDE1AE43711F43CF1F0ADAF
-678DF9F2174D5C8DDC8AA7C5012B1BE159DB2895FFDDEE8110D0E63E46F1D06C
-F0F4427CFD482283BD90966CD6728BCEFED78149FC6DBFB904BA259E82B78D6D
-D0D1DEFEA43558105D794B50D003A5DB582F2D823CED0975B04C556D82133FF8
-69D0F29EF77D4B2DDFD8AB58FAA53CB5EAD83547156557002D722BBE58F74C27
-321C147DDADBCC126C0D1F25F60E285DD2355BAB8C370F03EBAE21DC585BCAA4
-DAF9ADAF6DE13CB3B735545C6206BEF4AC1557285EC2FE5313F7012EE780A92A
-813021E7BBD13CB1570C03595C5235219159CDEB19270930BCE9F5E51915179C
-A57F721A9DFE931AA994F15A0A2A3B3C0B5265B85B0FA13FDEF8DB665FC637E7
-D962DE29C6D8487D253C7A0CE0695139CC66365A7E3B148A4E00F51AEB2636AF
-E0C20F63A73AA09137C9EF0EB983125C7F5F5C7BC80E4315A1AD7E4985BC1A15
-87B88144763741814E6E8054EF2433178C71945597A78749DBEE59521957F7EB
-3DF97980BE5D5EC7DDDAD5B72553C40FBE475C4B1D644F0BE5C6D4C85160E007
-C3D456E3B3CEFD755F44DDFB41E084C1DDD24C4856EAB0217DE0F6A7957E9FF5
-B5F2AD93A54016B491033BA7DDCA6B8D63E3ABF17809B72C787F6617A24A6226
-AF7D4BFC81186B819C2FCD9402C83E723C36C6203A548B5E92ED047E8DC23B35
-E0A32C6D295DA5B8F2979B4FB7331527FF3F5A627D2103BF7342D17ECE5B10B6
-5403770185D6876D4ACA1C6928D445F69CAEE2E38B3551341B070965A64967A3
-8CC15E7BD3CDF4ACCA20519E6C64396BB03FAE04B55A14ACF8804B44F232C42D
-04FB75B310378B20E4315D00CAE810F897A5809DC6C14F7C53AE739FBDEA93F9
-ED111B2710254869A2499BD04FA0A5309BD8FDF4FCEDD33A5437D493A15F9BC5
-7235BCAAE2F75A369498439166AF006B7576348126394756B7BD52E4EC32A8D2
-7D8A054153465F53EBF3CB3F74C5B6A66DDE94CE7658A3015DB782D05A6AA590
-502EC1C5610A02483AFCC76C42D6DDEFCA18E1F8E090B06AAF6D8302751807CD
-D2BAF11DCEC363795A0BEE64D6561DE960F55CF75E197A25DA553ACF2554E48A
-A49D301DE184133232021C4F0F2AEC39F2256B195ED7C47AD64D7A80CCF2EAB2
-95F4C681B0353344A6CE1B9755C83AD7013C55675C033467B51D5A14501FDA0B
-37DBD836B25F1BB619C8DC5C4427B7A47F5B8E51A43DFACA9D01F0590E0185C7
-F4EB60066B0257D85208A2CABDD5E055AB6179DC8CC6F34BD9D377CAA94F20B7
-B9E723537D228786B56FAF205DEF7B238807C5C30D6C40A7A033CA108A12937F
-74FA90308C2BE98C09AD0F85FDA6CC812A2B606B20F090C828B9C4799D068AE7
-137552F250A468E0734537631B8F951278B5920B042AD09CC716DF5E32F04DBB
-2720AC7E532F2E31310054E1F563817C73FEACBD39804A75D8252D9106C6F68A
-4660C415E275595708A0F9E460DACC3C611DC1DAE8AFAADAE1BA2AA6B1365595
-00CB4DEC5AA04C7863CB258D5D09E7E6A3816B7AE76533AB1C7C6C8F00F8DCFB
-0C3C4E0760FA2F9431FDC7D2852CC6B04A72BA3D880B9C4D96875C2A2A578C7F
-DE0B5C2DB75716CE9A94FF105754A411FB96A084ECC001EC81B50F4ADE3EE3E1
-893832AE62130ACFAB04B59478F9E46FADB5395BF47AAEEAC2F228CD56FDE16D
-4E9E536D0B62D9BBE9F7E2B0CB6B5B493AC9339513674E22C9E2F4FCA39C148F
-E555DB96901384D50ADF0CEB2DE58CDD9D7B802EFCB4796A27B230B6D63EDCF9
-3416E8DE1B7400AD6D825B579072B0841A6B2091413526A25F9CBADB08609B5C
-868FE7D435B22870455A8550DADCC82B661A6BB55BA6BA19BDC5B5F299DDC1AF
-1C055C9FA12C1E1EC8E1D78A7500F400EF11A59403781DCC456382C2B175C424
-BF85D5BD80C69CB664AD502F9D77036E47D43B7648D146635A3A5BC48CA16E2A
-B9B71D83BB5FECBDA4BB89EDFA7EA3A4FA1095C08E36D50AC20E21C1009267B8
-D52F22D74CC2C6194F2E201BA1CA5480831D3726B55FC7303AD2C437186B1B75
-DC4FE6D9EA45B8E7A7F001A5DB9D1261E7D9DF025D7DA55A5E7835FB227AAC7D
-62F52D1FCC4BE1CC4B570AFA1339CA7A83CE9F3FA9B013F4A85D4F439390BCC4
-5EE563AD7B419005B47A63B05BC7BB2E9A3ED072345CB3E08F09BD4065C5716E
-DD4B38160F4BF0AD42E1C2FEBB497FF5227797AF866E5558FB43C84E52ACFCFA
-2EB29E7F332E29072AE3413ABC267592715B8AB6A9155F4656F171B0D5110E2E
-C6D5D0AD33A0EACFD401D19CFDD68BC6A3A1B98B1CCB0E2D5B6C95405AEB35E9
-EC62F8B66083EE20CAFC1ED6B1156D09EB6879341FB241C27E3298920BA01B19
-84F2428B6483F8F0655A04B2993952E88C7B8A2CBF9FBEC933390F1041014D1F
-946D0AE1A3D7D48F34C858FCA95536BF0E8295807F6FAE276BB0FD6645F048A9
-C9EDE45EFA8C9DF28F98ED6C66FE88F395627991978883EC226FECDFD361063A
-F925E30B011CFF31C7D4D4EC8349F1FE1F1E942C92B5B4C3E1876BB37DA3D7B4
-59288B049EEA4A0358190295277162A9689E1BCFE8F4B6D9C6E2CAA95B702F0E
-109DF622B22C85AB7D761EA2F9B0625606143ECB9B9367A397707373BD8BA758
-C174B950C1DF849DB66996A85A30D4B9E77E492D88E5B5497170275D5B2B3D74
-2906778399DE1310A4CD5B2B81023EB630BD197FEEB84003B51683CF30F37D2B
-3344081E60532D20F81FEF99102AF85403B9F0226024CD202F83455C6F088758
-779F523A910E14F3395AC663D99F05476A5017D85AD02DF7BE144A5ADC4A7EB9
-9EF234F11E180252CC2F40AFA7E902E1D084B2DE9C0DDFF09EAFAA8DC599BF7A
-DB03F09D990CE0323E99B75414436D4D3D0831F59D0E19BBCBB9F737B33B0CEB
-0C9CBAA9F9D5FB128EAAE2A2306F8CA6DA74942056F0BB0604103970897CE48D
-D77C4AB4E9B88D4C671CB03251A4995F95C83CCD8C0989BD035E3891C6749AAE
-6FF80152B727051B5C241061400BB93EAB83EBE2D3AA85175E8C025493AFF31A
-16917C79B90766B586950BB4CA8E8405147A30990683C18FC78540C66FB02474
-996D307F00C6138380F3781AF19A67851D43BFA616
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.0: CMSY10 003.002
-%%Title: CMSY10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSY10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
-/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSY10 def
-/FontBBox {-29 -960 1116 775 }readonly def
-/UniqueID 5096651 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSY10.) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-dup 2 /multiply put
-dup 13 /circlecopyrt put
-dup 15 /bullet put
-dup 17 /equivalence put
-dup 20 /lessequal put
-dup 21 /greaterequal put
-dup 25 /approxequal put
-dup 33 /arrowright put
-dup 50 /element put
-dup 54 /negationslash put
-dup 55 /mapsto put
-dup 77 /M put
-dup 92 /intersection put
-dup 106 /bar put
-dup 112 /radical put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
-7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
-DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
-511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
-1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
-028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
-1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
-3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
-91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
-E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
-11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
-C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
-D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
-B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
-93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
-10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
-7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
-B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
-491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
-F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
-019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
-915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
-356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
-5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
-9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
-3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
-FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
-720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
-D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
-BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
-7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
-DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
-AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
-A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
-0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
-AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
-CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
-0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
-5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
-5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
-E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
-54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
-E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
-A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
-4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
-4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
-038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
-B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
-5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
-B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
-A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
-2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
-CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
-455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
-FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
-16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
-16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
-483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
-67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
-3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
-1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
-93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
-051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
-8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
-8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
-6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
-06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
-84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
-D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
-DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
-0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
-8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
-C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
-754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
-1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
-CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
-1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
-153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
-905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
-617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
-8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
-98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
-53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
-888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
-052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
-CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
-A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
-07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
-B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
-10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
-CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
-3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
-D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
-849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
-648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
-84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
-2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
-2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
-9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
-B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
-D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
-135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
-EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
-C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
-7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
-4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
-9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
-050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
-3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
-C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
-843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
-CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
-B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
-3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
-19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
-FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
-17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
-8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
-CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
-F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
-1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
-4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
-2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
-9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
-E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
-8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
-BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
-04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
-C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
-ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
-4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
-84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
-C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
-09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
-D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
-56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
-035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
-FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
-CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
-B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
-F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
-CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
-0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
-B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
-33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
-4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
-F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
-2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
-CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
-88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
-17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
-55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
-A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
-2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
-406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
-AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
-60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
-C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
-5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
-822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
-94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
-D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
-343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
-894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
-DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
-DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
-8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
-A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
-DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
-E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
-DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
-4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
-5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
-02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
-88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B1491
-307A6D9A2F2BA5099C8A07762E70BDAA74BA5E2BAB260C1352107EB8A96523D9
-4BA3082B99772D585329AB8645C3BBD11D72BA01F95CCF11C6DEBFDAAF7F5C4D
-795F99DAE6A8D59462D759001BBEBB59AB0C322EFE02904D82B424649C2FA593
-0E23281DECC5AA908E54244566055D418602EEDBE78843300158908F77C0AC75
-9562065826D34C38C598D8626BFED7CB672F132E065E2C27932F709935988376
-94901EBAEAEC410E2B36575A71EBB8954C3A90EEC264E6115950FC91D0D54999
-323D8B4FF8129A8EEC3900A00CCB026E6943BE105BF5F504AB332FC17E568681
-F423D1125A596766BE58ADC658888DB39BA74F67CE0E26C392220832FB036E93
-7587E96684BFB78BD035F54AF71B2408241AAF548F996AD440155624B3EDDC79
-2102EE58E1E27EAA0675F1F13297A4CAF514CB319E58D424A820B8F48984987C
-4B8934934BF21E81B529E3B6985C41413566EBBB6B2FFAA82FCF9BC6834B365C
-39F4F5434F5ACF57D96F605DC501BDB14E54C693A33F3A4EB501F760EFA3B5CB
-2A5E5C93E4039D48B1DCA293C3937A276C520D6262C755F5EBC702465871B5F0
-6D51B9CAC1F5595D9F90BC977E173B994E890B0851CAB033F61C5C663B538878
-A5975C4DB8E318ADCEA6242FC9527D1AAD986E5FD862BC4646BFE6FE6CB20C53
-EC8B0CFEC72C3A3AF805507FD44C948622210DCE229A06D0EE96637935E46139
-C3AD3582F785CA7146CEE8F7B883918A65C5E5202D0606DA9630E14F5BF9D50D
-D521344F686ABF6B8355E62FDA17CA6CD1092B2100B2DA58D91B2DEC7500C084
-32F18B37AE2E5EDCD0E961F0444D4909E8AFD188243250122CF718C5D08DC3AB
-AEE8A7E851FBFD13BBFCF23842A4541A6D4918F9C66D48A7E76583B0D10FFD97
-4F21218FE5B92E6E88E359A6A4F00A78FCF74983C9403E6589A8BB294D6CFC1C
-0662F43F754B3E32A068F37D7D371F552619445AC5F260639122D3683B3BF464
-E20201C5313237F230B22E67DEA9183A5242F928F9488B1C7DA854779CC8770C
-FBAAFD55CBBC9A49408580D76C020BA95A39BEB2FC85272E3B7212D7DB333D0D
-04E3EB8D136A1A2A2CFE4A338D2A8D2D33BF411B4009B2E92A2386B678179E2E
-70EF2577A0486E298B2C7BB7DDF8D57B78EC3D057E7A94E0D131B3B2DA035E43
-4035B9DF18C29E0F1C27784BB343E29C3B0A72008C6BF092518E461D38AA6E2E
-242C160C8E4400D441A16F05D8E03E8D5D6F1815E164E6F20E8EF30B5B96B77A
-BAEAABFD348E9EE06CFA3A62A80DC4471AF484B3D2CF9FAFF686E4C83A0D92C3
-6E2531C3752C2897C7879945AA14E8B41A2C639B1BCF8F918D63786C2ABB4D9D
-2E79066668A721797D887C66C4E95B96466B9176A594DE74F22E8CF9F94ADB13
-C03D60E6F66870F19C168FBFD4C4EBD04CF929083E917539678A91DB49A9A354
-2344410DD40D75C6FA323FFAFB59F7AB557E4461CBC4C300BEF7A30F622021E0
-CFDE12AF4BE584DE2156F49A5F4FEF52A2E9F0408A75889CF7BB127C6510230A
-3FB752438613C7F2986776E4059E047E4417C8BCB72F11C55690F9A77DCD9D26
-9A9D788966E684ADEF378730EC34A502FC016500C8C6C6DA74F7154724616619
-5F244C7BFA8275B75DAAABC217EE8E7E8EF4E5985FB49382E8ECB1C647743FDD
-7A68BA6E6401D97A14F85E366F14211301A7AB63479D78EA5A34F2B44A29D505
-2DC692B90FBB90CE7EC41636D2BF18543014CE2E61005CE67F4B94428214F67D
-A4B7A369BB7165AFDD0C55FC982AF2705D4FBD38F7536A22B7272DCDB9BD898A
-8104EDB0C5B64E447FD0470FFA6B6B2561CD26E807FDE2F1F919B0962B8948F1
-191CD320F1E43FDC64179819A95A0815BF691CEDC2FFE095A2EAEF8B93856645
-D245E608488F30A6C3B4C7A00F617EAD71AB2AE8DC6927D21398AFEFA16B4A15
-51CADCEF35759213057F135062104B9D3B06490D12549E21E387C4B15AE0E30C
-F561106C139ABFB97A1AA30EF2EAFABF6F5F52ED8CABF16DC5A7967B67D7A771
-97F1E6684850684DE037CF6CAFA94D26D42E3C084FF075DD8773B83B703664FE
-25FC046A4C986694C7E2243E1B24FE3139114E3B1B3C32FE81E7A01CBD78308E
-D52B981E6C835F8D5A281B2B4172723A6BADCECDC0D64349D04F6367E04C3CBB
-E14056F53F20287A57916C58B67B32115861D6D9ADC0110AD780C2A504D62292
-1003B07F8413827AC3B4A5C2EE101E6B94BBF660389274A06F547EB6FF79992F
-E96369EE878B23E19D785042CB6CE5CA3D3321DB9F5130AD8B86107486DDD54B
-97A3C56E10A051AAE48164EDACFD0AC7C5027FE6F60F8BF488C338479EEC7170
-12C5B22D739B92C24C2F4902A81C15EAB66EB263E124381260093D6E14BA5B7B
-CC978501621ACE9BE296A82922E88FB0AE92736CB1FB7140C30BD2A94552E62E
-464963813620B9787F5F95E12ACBC4D73759E3B708D80F23E21D6D22B965F0AC
-9408A30029445347DEA0976A5A904136EF30F48AD94B913332619EDC2E3C2F52
-05F34E9BF03A5F49A249F957905494517309E9D496CCDE11E5F74E41CB0BD0E2
-0298066B78B7D46BB3B49C21F244D9C730815E6D81C0C40FF9DF4CD72175A4D1
-032C10622954388BED78ECA0C9ABEA54181B7AFC8C0248B0544D51F3A38C0411
-B58603D5BE2AC669710F8D7BE0AFCBB50AC6916150A4D153E711E1A99D147B06
-19C24466C90E3049399B8C11D132820E76789CE71EDA9A98E0175426458F5288
-16D83D737AE6F7055281726731EE28BB6523D93C61CAFC4061A9F86409862001
-DBE1356F75162CF28D40F4C02B25A6A4F7B7E6BB436445A0C9BDB170C8BE8DDA
-F83FF3F583B1B6C142F16E25BA2F7090995C7EBC8194BA14CDC1C5679B05DFD7
-73F058D9B2A5EA7E60770BABF0FCD715C04B5BBA768C3C48BED49B97479AC241
-97D38DABA01B116F21C9886E9D2872A1C0CDE4517A1D6D30B2965CA014737AA5
-CEA6BD181012EF43CCF85868CE17E7BB6C571C61A811E343D8159A7F58D2CAAF
-D64BF588FB8E5E1012A5B4925C1634D46697F9DB01B4ACFE6AC1CEFF25E365C4
-586E160B391C92D5BC37D00FBD9278AFED9F296F1716F386B9D6B59FA47155B5
-85113AE2B63CE15E0FDF74EBBC6C56A8E44815C4351D0E375888FCEC90321051
-A44E2C6303D3D01BF8EA735DE9149D353A04AFEDAA62565D83223FBFCA2FF712
-D5C0A4FB1BD8566E3BCA3621DA5BEB5569B7ED30FCFA1023D51D5475E07F23CC
-BE21F056FF39137EB1E991801648D2DF51BECC7887EFA08C0485A8A3C03FF0E4
-4E8867BFA9EEB49C3DF1B658911124E4BE56C475293D0C83114B975765C06907
-E87B0900FE255BCFEBD3B1B438BD3DC7142BB5DCBC5531273D293BFF1457DEB8
-7D44E3745DDEDBBADBB912FE4D4E538558B1B394D1FF3DE7D967F4C26387877C
-E13517F231E7D6401050B47032296B5E942BC597918AD5AF04F254147AEE1275
-3B523FC27A6C0158DC141F86E00E51041E3F2991A055B1005F8E3C5DBB73AF32
-9D24D27E76BA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.0: CMR10 003.002
-%%Title: CMR10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
-/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR10 def
-/FontBBox {-40 -250 1009 750 }readonly def
-/UniqueID 5000793 def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /Gamma put
-dup 11 /ff put
-dup 12 /fi put
-dup 13 /fl put
-dup 14 /ffi put
-dup 22 /macron put
-dup 33 /exclam put
-dup 34 /quotedblright put
-dup 36 /dollar put
-dup 37 /percent put
-dup 38 /ampersand put
-dup 39 /quoteright put
-dup 40 /parenleft put
-dup 41 /parenright put
-dup 42 /asterisk put
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 61 /equal put
-dup 63 /question put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 74 /J put
-dup 75 /K put
-dup 76 /L put
-dup 77 /M put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 81 /Q put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 87 /W put
-dup 88 /X put
-dup 89 /Y put
-dup 90 /Z put
-dup 91 /bracketleft put
-dup 92 /quotedblleft put
-dup 93 /bracketright put
-dup 96 /quoteleft put
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 100 /d put
-dup 101 /e put
-dup 102 /f put
-dup 103 /g put
-dup 104 /h put
-dup 105 /i put
-dup 106 /j put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-dup 114 /r put
-dup 115 /s put
-dup 116 /t put
-dup 117 /u put
-dup 118 /v put
-dup 119 /w put
-dup 120 /x put
-dup 121 /y put
-dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
-569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
-24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
-2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
-8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
-3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
-D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
-D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
-03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
-767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
-8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
-DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
-94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
-22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
-72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
-8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
-344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
-64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
-07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
-1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
-78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
-CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
-7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
-BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
-4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
-5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
-EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
-EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
-4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
-0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
-C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
-314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
-DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
-EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
-DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
-DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
-7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
-1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
-69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
-EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
-7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
-CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
-38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
-22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
-0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
-BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
-4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
-3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
-B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
-15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
-849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
-FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
-4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
-1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
-84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
-7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
-CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
-4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
-3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
-F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
-F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
-DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
-D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
-56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
-8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
-59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
-49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
-87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
-8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
-C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
-D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
-D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
-F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
-0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
-5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
-229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
-17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
-01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
-F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
-3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
-689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
-4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
-A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
-DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
-364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
-7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
-26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
-43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
-8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
-C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
-94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
-C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
-B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
-4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
-7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
-204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
-B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
-7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
-279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
-E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
-CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
-65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
-BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
-6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
-B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
-63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
-4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
-A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
-67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
-DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
-5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
-C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
-9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
-B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
-963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
-D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
-B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
-72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
-B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
-8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
-3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
-668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
-ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
-69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
-C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
-3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
-407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
-11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
-2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
-4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
-2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
-9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
-CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
-DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
-0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
-5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
-9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
-EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
-09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
-2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
-AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
-324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
-486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
-EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
-52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
-9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
-4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
-B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
-BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
-6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
-B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
-16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
-E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
-546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
-6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
-559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
-C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
-ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
-04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
-7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
-8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
-A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
-94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
-C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
-41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
-7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
-18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
-9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
-E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
-5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
-4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
-E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
-9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
-89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
-7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
-AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
-3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
-61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
-F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
-D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
-652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
-07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
-6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
-EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
-BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
-2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3
-9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B
-B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E
-CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E0009760E9470F037FDD15E649
-93E9C8FCD9436AF02447C7F5AC380FBE69D1405189E8DBFDACF0E7DAECFA095F
-E6AE1A2E9ACFC032BA9A5DEDE9DDEE22A88D9A1F1E0FD9BAE2D88FA168386D43
-4B93EFF3AD84A9C05A80462BB3A940B2F7311CF7054F501BDD4F1347213C9327
-5653B73E9D78866901235C66B0C49CBDE3A1BA3A11991E6B8443117745D96020
-38F4A74D9676E4E99291D4420C57ADE4A8D5214D07B14916D83DF15114393048
-FBE0DB83223F609ABE120AB877FEF549B6E2389487BB7ECF1979BCB0785DAD1A
-2916961A1DA60AB491FC90BCD6578571226B4DFD204E75FF18FB5E72DFE8A028
-C66F8576254930567A877DBD22F8372E7BA4F23F9497ED653906F5F67A66A1B2
-51957AEB8D443550161075E5523F3D2AFF386E2640B276C3EC5EDAB74AC0DC94
-7D975D7F5781A652BD13AA7F97ADDBE68847167997ACDD038E74E930D8248F0C
-2CCBC094031C7147BD8D4DD664184695CF8C474845692540FE2B8A72CDF9DB62
-BE05E15A05F59D56E5EDBE7C371BE5CB3B276FC7A03B5942057EC3136591A1B9
-15E504DC497B663A9DD1729EFD1478C233B9317351D000DC0982F061BFF25A3A
-8983E560AE31E321DFB137C77C0AEC704F8DA99024232F26AA6920D58CB17DE3
-C1BC8E20988FBC4705E594569BEFC3F6666785B2FFA49367E3CC695F2A1EB846
-DEB37E120B0F4C0783C0D54655C143C4F74DA0690C6D08D07ED225F361BC0F86
-572D79540730791DCAC15823991FD5DF1AB8F25F84EF40C085B17C9070C59EE6
-31DCE45AFA78440BDE4C69A4D954C2006070A2C310179851F2D39B1B5D3EDBAA
-289570BE80F25D75116BBDA61F002B832F9EF2C32B53258B15A1174225168B28
-EC3324C6EC61E5711811E658A1BA65C8D2D47CEC6071CD88DBCDE9CFD2BC34DF
-1ECD2226AD588B50AF2399D171E99D8086DDE33E24640A767F249797B1B742CC
-F4E95A64E1AF8D88FB128194673CDEFD6A1672DD1D03B6749E729587C0CB7C6D
-13BFC785759F35578D611E924CD89FF87DFBC5C93FA7BE150624825F7D137CBB
-FBFB1238C1A397826B8D1DF0A39EBDABA5F10B37FE8C27568E1C088F279A0E28
-020DFD377694024FA154AB5C06EDC3CAAC3CB5A69297E1079F5C2F351D81614C
-D73ED708907A96F6F8FB0994D3247045E8D41028432E91C7ADB2F22066D6F8D2
-701298CC9FDA7928F99CA135B69808AF6FA1E0A3CCE1BFDE234E9218A565FE28
-96541CB9381E887182873FD7866F5F8415EBE92E51E7FF064D6CEB7BDBEE4DF9
-97633E53488AB11EE93137AA185AA7E4AA043BC73DF1739C92B4D3A8C46BA689
-B9F8FA73BE010D7C4F9007937AD0EE3EE4E3041C72A2C4DB92C6C5433DF33A10
-700F9E891885DAFDA44A00781BD019A9FFFDB6FDF9361520D50AA5037E654C8A
-ACD179511AF61BA10DB29A0535972DDE8B838091B5EC3F6C3408E02B8CBB3FD1
-E213E2C53DB7AB14D465CB0E4FE2A2CAFA20E74BF4601CC23687FA7921CB1B86
-6DB57E04C99BF7F56FED75A052362016840676DE91888490B4A1DFE0C079C88D
-C8C3BD3527F7C006E1403DABB47C3F9174208A379C221931724F06270985BDE6
-A53263227EDB00124C5677613BEA94BA029F9D6F8BD1F7B87C4426210AE554C0
-7BC707199BF6DB673E40D55741CE1F0853504A414099BA8E0BC7F5EBA5392684
-79552A5D4F7C0CD3A6D80B18014008AB011C8C66C74D32AAD748EF30C1AD484D
-B56BFB090C5BB937E81189912665F332911E11E83CCE75A79DEC2838E811D5B7
-DA85AD6ACB7D8A98D15DEC66504CF2131FF06AC9A8A4FBC4CF34EFB8455C231D
-0F73A50052AC8FCFB2B2ACB95033AF04078E9CB99551FBB1C46EE6C413D86C90
-AE8BD7FBDB7BA6E9087658C79C4758E242256C0546DB76A3857BC89F26A4DD9A
-F4A848104BF1ADB2DCDA25C79BBBDB66CE1C1A45C7427FE7CE5BDDA7CB599B4D
-B5D346B15414DC9688A9D00F0372DB98FD33E6164E5D78D6CCEEF0FEA60A7F5A
-9873AA7E2A7F98893AC5A9598B71BD06D13D2766489248190A262E5EAA459888
-6D0A38261697EBFA55180F3D416C2190B36C309202D1619A405764612BAA3506
-7D157F49FA1E0A7F252FCB0B8459A30975E02748AE1A891FD6BB288E0D7C144A
-1D348F1DDD145912678DAE1906796591E35012373AE01E18515F5CC3BB29A629
-F8B28B54376A9E10D0CFB29B81981E66F27B6AF44DDE0A3621B9ADADA9588201
-11A0362FEF840B200C84480177C9E3F0777350BE92707BA916A90AA81160D498
-6417DB6C7E15766EC5C9058CD51879041BDF2D2514B0D6B968CA0A300EE2E30B
-6AE41238D76DF324B0502BF79D58C2DA1FF7E384891182AA59918DC8EDF92299
-BA162134FC3DADB6FA5CEABB94D1CA9BE1635F769EAA88377AD96510A4DA8F8C
-5319E0C06CDBDA1BA9845302F716DECFF7B965BE413A7BCFF3C4EADC91626070
-9A5776EC64C67DDBDBBC66F16962306631D70E62616DE4997ECFE39DC6BC9A75
-D2297C2159066195F43B7002138456AE7EF69220925877C87405D06144D250E3
-55EEF1575DE8564BF98E2ED403591F2EA4F6AD71A126A9B1F5D350819058FE4A
-949B8C3A7907A725B463B752EB3B44B090C731EBB86FAFE24340D1A89D3FC0A6
-B89E64C3FA480C91DFCCE4922C000B0533A052FB9305EA3B58A38A3AC2688715
-A7C7418637C393439725F0509B3B08E07DE5E0350A005E4C5DB815CD317EDACF
-6460DADCF9281BC6523DC8FFFFE18CFFB2EC61884E7B324806851A91F7E0336C
-F86AF2C88F1EA1EAF0F87013AFC7DAB6F6BE426D92A406437E38C75614AAC461
-4EDBD8F129D985A1385B0F9F1A4E6D9936FEC600F4E431C653DFD1D56F694471
-FABDCEC7BAAA0C266D35D7380AEE587F61DA5CD1229D99F82BFA7B1A45A165FB
-658A4E7A741E11931D6E5C1358CF76056CC0DCF4B623C2A8CCED91694E46661F
-BCBA0225541BA9A58EA1F2E2B2402299EF2B691C39A87AB3D5C722DB2738EDC6
-8ADEB09750D714286EB392D198A55784AD908470517724B92849D539ACAE89E7
-A8E37CF20CA87635FF92F1140DDBAA76CD52BFC0B40FBFCA768F837D0AFBC7E9
-BBC89422CBD6429B284F67AD2DF917AF69346A5BFE8DA3DA8F9597C2265F3BC5
-A90CCE79572DB45176AED6E1A5FBADC98816F0E29BF58DBCEF62EF76A8D8C845
-4C7E9AB94A0EA43D2FA271BEA800890613D8247171938596CE4948BCBC7960AD
-5B2BA3E0A4384749A7D88F3DD515CC1DA7292EE9775B67F621E156020419D0D2
-1A6AF5B51E64D3EA7D182AA65AD1F663FB28739B86F9EE5880A5A96C3AE1C563
-7A002FD0ECE3AEE80AF18A0FBCA3EDD496C18C8974E856BA39226C382CF8541F
-F7E2C35B3CEB1DEE3BA8F346199944BE2F350E4C3DC89D789250C3C5192236AC
-513D1A3058230470BBA11E0B39141F48065B808B6FC459A897C304B749B5A656
-38B55950D6F379A535CE2816498DE36D03747FD07514C2DA1764217BF2DE17BF
-C8FB2F06382136D301953DC42EA0B429489275571F6B86AAF496E6A2EB196547
-B76BD6DFF6054DAFC9CDC11FBC541426DF0351ED027FE76128411F6F62DAD159
-C116B43AC59C885B3308B158EB74405541F2BD247BEED5D3B35554EABCC133F1
-B71EA3C7C7876661EEDC141818A3E8A9C519E7054E26DC023320A0166FED1C19
-DB1C3044D23E5BA7F039D86ACFBCB5F881A6FF9135E1F5DCF910A873E6F7DF8F
-11372C039D09A875DDACA3FFADB73504C1749932C3792CA80D78979CE0269AD7
-47CBE7CA39E26FCE1E71DB711D176644423FB964CF8CCDF16FBB686877B1B99B
-FC570BBEE55DC7F2AED8E81FF38DFD61322F1FB69E5CD6EEB8135128A35FC23A
-5ADD95D4F873B2EFD14A1FF76CD20454BD3BD2752C9A5F0C21F1E5F39C5865C6
-D4874580E6224B22FAB9240E0346C843AF0C495E7FD5B3310D90A6308D47E882
-EAF80772C87D3F7FB9DDA52F253FE4E3D1E56EBFCBDB9BB9A977DC7E9772428C
-47EDCE4D4F793F4DB9C66E65827109E83723E50424A87B36D6E74DD05B327128
-E407252F937ABE315B18312C8BE965E84ED9C895D275A331EBA6E872DBCEE1BB
-C6254960940B95F46CAB4F8469E7412F546E62683AA356366F454308367A789E
-B1E6F3A07B87829111DD17856727E948E0FAECA4EB00192F125C2331011AABA8
-F4067FD01D56853FA445ADEAE5901242DF460ED8AEF939332F87D81DBE9A30A4
-18884AFF8A7F00530BC7DDD3A1E6C40549BE3E567B225E7C8844F0AF3E19A4A7
-E61F818A5F1BC836012FBB9AC4A5AE737FFA908EBFC88B2EAA62877B05B1B1BB
-65062420B89BC4C3C4B7CFAD1148C6A373F26ABA9A8DDC74DBFE47937035DB49
-20F0B8E788C0AD02381732BEB2B9587D6B50E6F7B4E9DAD171B8C64B60A04776
-F70BDD9C6C8831AE39561701FB54D68810E4C3249C32E4D39BB40C500C8A735D
-F316A68985E3A0338D8CF730881326E2B76D75BD2566D7387C0DD8C5724592D5
-1FEE9798B269DE09387D3A1EDAB20063BA852726BC7EF07CED98E2DD1957F94F
-7E336F6047A935E128444DA8F525FF1E458ADBCB1B6D910B68955DCC59512591
-2F1228007F9524A0AA6113FC6805AC4ED806D5CE6E03AC9EB6830EA9A7AE975D
-99A4FDA50B92FB6977BCE8BCBE2D8EA44BCE9B39718584A452205C4349561CBC
-7B1E281C058D0BE636CDDE883E1C1AE3802A35C5426443AEB6FF705EC26AF94A
-2A7BC536F373C0EBAB41C780E56F5BD1CA645DCED5090CF32D4F0E5A780651A0
-477CB27558B2D0E2AE3D0A02565EE38D5F437D01308A6BEF55E80422F5B5B56F
-6DD11ED717B034083F9BB1536D76E321255A137E618B398875B5BB8F5AF02B6E
-B4DFFB173C424B254B23EFEA04BFF52E2343EEBBF0B43E134876A5B40CF4EBDC
-CCF509D5319865070DD798527474F6F54E32477A8F59AA9537B7513812F2C42E
-51EF96784E75918DB19E4B75582DBD9569A60F746B177425CBD8FB523F911086
-8DEB9F3EA2A85F5AC261B03F216850208A240FA6E072D2D4A68AA12A1A410800
-6CA9506243CD3DF7E5010413DA7B3E6BBEB2DC8FF23D8EC72C36048179DCF860
-3A6DD3FDB612411D1D208D53AE2532BD925F052FCB22433BF2A955608A7F7BA9
-F26E60E09B56161D8CC3C5B3B0418A0E4E57B13B38F2A968C388BD1E5CAFF0EA
-ACC3C738D598516B0454744F531F81A3A40B6DD9A27D5732E403725A62248656
-41D0FD9B3CD5FAE1ED9C4F14DAA7D1CC0FBF236415723446F1B7AB0991C3A12B
-91BFC6639F6CF6FB7E3406CE44ABAE989F876994CC3434B83545DB5ED0ABA4D0
-B96477FD4394D4F543EF6C96DE30CE6178B410B784CA8E011B1C5DA7C3565988
-45586EBE198823B85464FE3C347A1B6EC87BECC996037982F6E5B791F9C943DA
-673D410A9AF6ABC6A579D19800ECDF0AE8A92E09A2188DD1D3E01F20E2B155EF
-0E3F31398A813DB67BD5A333A796BB656192DB8FD84197C40A9393BC44B29041
-4BD0EFA2B6ED25AF9C124994E7CA0F87FCD3694942E5B3EAA6DA7FDBA5914A4C
-B636A9DE7CC47CA5A339C7957956BB36C43E30287343E9DE7441C4E5D7193F90
-BC0CB304722BF0FB31A530525E7968DD804CCE2ACD7B84224EFE717D3379A687
-5535AA3FE35509C7038DED0E924E49ADC65EB7B69C99B55919360EF6FCFC94A3
-8DA3886C56E47917395BC05FA4B279BDF5B5643350CCCAC566A29D869275829E
-52464BF25161CCD7D4E3967469583A76CBE06864C1EA7E8B7176F06A7AD26229
-5E5CD75B28B3BCD5383DADA4BED6F2972275C23CF2D21A66F367FF0F6531F778
-E6C90E121F9D85CC1E56810BA31F1B7CF477BBC91B81C8CCC0DF00793254D5B4
-463E21CF9A918E58EACF26A10CC893897BF06DAE9AECCB03868CB3A43870FB7E
-F3EE6ADEBE7569356674EAE0A4CDB131F3B29979ED65F809C820969B51B85AFD
-DB40E14E5F359B007B5474963B9F8CDBA84FA0A0D446B1417F179BA25E832F79
-685801CF3EC4442FDA8C2CE3589E6270631A9DB8BC24EC00F9207B576636B132
-95602B7EF041A87BD539D87F406C3CA2C4EB9C3A328371854E2E5DFCCD163084
-F273FEB1D7DBDF515FE4235BFCC6E4D26CA8BEB48A37612CD9EE623DFB3D7629
-BEA0D0A14E339599336AF70D73336EECC7148D806754ED5B65DFA9243CF60C7B
-56EB2556D55E715CC3723F7FC5A03BB24412ACEF1CF1F8664D8A65C94FE07B3B
-4F4D85D3F127CEA87B552A2A6D36F2F166AD7B9362895E029B1E62A6468D91C0
-8C4CECAA7417CAE94EFE85B6135DA85DC7505B1DF04A1E9DFA7453D861AE8A8E
-D4673E38AD795F170AD4EA4DD47620D78C1B8B0D7A638F82088D8BDCD10FC9ED
-B8FC6EC06D78D26EE9D358B5F8F3C6E0BA19A27AAB1AC325BA4247514DDE311D
-8C941F2A801B18F628BB1AC9D73B9D9DD9FE9AA6F6A99BFAE6898E9689EC233E
-9E95654CB1E12CA938E5629BCAF02D03C27EEF9B86294D1574F47709D3726BBF
-68BB557416E679DFF7709DD996E1D7B600F26710C4FD6A033FAC4F7A121C4BB1
-A88A543E6E2F88522C68EA189704DE502B3DDEBD0B0D52D94577A873F378EB12
-B46BD9C7CD9BEA25C00414B9B3E853721BAB8268CB1C21115123CB4A8C77480B
-0078A9B310DAA37513919DF6633122CB0B66C224EE71E75EE1853A50E87DEAC8
-3C23D2D3DC19072F0639AF876E78C0B5C5A0B84859B1A0E007D0C529607700EA
-F8AE0A93F94F94A574D4E727B4A87D8E6EA0979E8B6B4EF1BB811C0CAE1476D6
-873DDBBD47E898626C381D7C22832B47A442A9A5AE6FD2F0CFD1F847E5BA20EA
-58019CBE8F982827D4BC7880BB44AFE678BFEF95728B76F0B26CBDAC4F9028BF
-AEAB74985C889D333B20E39BF3CDEF9220EB1CCA9D3C4E24E9ADA0202DF775A4
-4AE93C8292F3978EFB0530AA857F5D819EA2D8CE4D43C521108C8701154727F0
-575E06997A5534D66BE8DFA70524D1AC986594E4C39B51EF6EAA837060D0BA03
-9810FE27B4A0767817770DBBBBCC73256AB8AD7B2B81B128381CCBB01A648FB6
-3C5E8882A26F1F947DC9A70D2AF1487EB9AA883F6C69EAE4DF025AC2E0A14603
-CE14149A91787CFEA77F6F69AA8974F9C5C9FA66237FE5B2A60EAEDF66DEFA4F
-97445A9ECFD99BCEF8F6A2EEA039998DD66C5CB84F8CC1847046B202180B2BEC
-424AD0ECE21BBDAB960279C18E6B52225B514053B9C0B22592EBAC263DD9C754
-7BA67569DA7F56734437F344A62FF8F3A9E05CC85638771F72D9B846EC149FE9
-42C80BB9BD89AF21641BE38F375DF0A9B47C7538937F905A5B44C31EF65DD289
-04052E5828F38B4481E9448C37A6EA2AC756DAF67490F4C6CA9BB8A9D02F3639
-6049605AFC523216DAFC87A7D87C0D05E4312782C17B80CA94E216A17ABE206D
-1A50E57570BE8DFF0FAC0F0BCF2319088E075E3C4A32AFFD8DB9ED593664632D
-6A8F34CA49D16666E194A816DD3BF02A72D64D2C47E672A3489E3643495D582D
-CAD3113328ACFB44981F88D18B8721CF589016CD036230E4E17DB8A27228371F
-01D8E02CDE32D1EE38ED10FADEA0E9F1E7A4F27374AA33389AFBCCED4770B494
-8C64D2488FD5562C30C6DA23857E8B7F6B145A9AD6E6956FC91D191B5AB30FF3
-3570FA6AA529E023E65B77E2B9087A28AE254044E44EE3A490A9A007153B62D1
-2F723B8B3DAF08055EF2DED7B960CDB15764D10785F8CD63BB88B19BDD1CDBF9
-E4BC5095A9B865207817EDF2BB2A7637092EC0712D9FC2A357115D752BB4C248
-69C79CF4FE8D530263641DB28E8016309D28D12183F82F089177E38B5223195D
-8090E104CA1713E9FF05CEFDDB24E2DCD6271FECBE552A9E0AFFC3C38FE7DBB7
-0E7ACA0ECE283DCF6165EC42D9AB52086148BC6D8DB5A612AF010CC5C73E983F
-B0F9A8D1838D46B68531FA60C5828892C92E88684787FDD4384F1012D61E37EB
-9E3CEE07BD6F9F87CB2DAAE65AA7E3D9281B8BF6B798028BFE1D83FE66CA1CCB
-3EED282469B24CD8F22E8B3A5E0490DCCB111E5434D3FAB09660830EB9BB0031
-444B8D70119C8BC4695D605AA04BEAD00005CEEE31443F1DB58D2ECA02E773B2
-A37D17093FC2FBC78982D225CBAEDF01A3F7B88F3A9EBF55DF5F7D5DAF59B58A
-9EB93A33724468FE77E10083106B229435B9B913A6867A7D437B4988C125D666
-431BC731797D9143ACBB1611DD5A3726BBE507E231C16C6B78B8464C6CB273F1
-218B658A4FDB7A59D818DF08F7CEDDE667D64B65F245F3C8B987648EE3FB5E89
-0D66DABE2292B8E2DA27512DCB57D30247B3F4556AFA2C8291F7F3796F44D714
-738F1F4CF1306FE8A2A54A120B5CC6E3B88D4626096A7669A16B0E2358047FD6
-376C75841EC7B402E2BEA43B263AB732AB9491D80F95DAA155944995D5545234
-DB503BD73F7CA4A7EDD4C8404E0E75F7712D1AE15D95EE92F11D525B2E60E9A8
-9CCB76F965AEA7AA517B5480C2D57196A4400E3A8910A3CC5954D1A86C59D8C2
-C1EF1871FB4B909FD877924CBD32B019194F168CEABF5A997E948AF5E28C8B55
-E0A758ACF13B596113A663DA834246C8252AAE94E329AAB84457A3D729B8C919
-8F0B108EC4419AFD6CDCAC7782586C704B86112190447CC31384426664E7B432
-FA096C75FB1D1F9BF1398184552E28F91B7F05DD891ABE6A098F4DF5E9A21351
-32831BD444EDD22618FE9C8A973A87AE8C7BA0F73415DF7E0FBA2C8EE66AEDE5
-4430490FAAC9C6CA0A3EFDA35AA668B4F6B6C485F2075C1BBACC77CDE37763B9
-3E5487CBD6832E2835D356258F45EFD2E01A2E73E4241C1F581897DC02378C63
-50D8CAC713776E68168FD10CCF3DECA26E994A0E2A68646E95835C015B95902A
-519CFE877C609106B83000A5850969ABAB04823AE68916BC14F1AC813DBE31FA
-8E1AF5B87C113CA819066A4A440F71E0E9F24D370EFA0B1BE9FEDEA07F849B9A
-FFD151F5A76E7115E78EE0AFB8C5516B4205E24106EF62BC8526CAA92277CBF8
-4E44A2583990B3C73A1A4619257F1083CBF6BA52D159C640335575C69A9E52DF
-AD0E308DEA67657D64A79A099C4EABA7EB871BF97C1F7EE1967EA8176295DA50
-25B248982731036FF756542D84764DA4DB5079AB5B7DB719081EFE37AD103779
-3184B78BA172327920E6740EB529AC47810218BBAC1B842C1ECB489D6761371D
-95A2507B28C3BE2CA7D7FD3DF89A9AE204DD651F4644CF51DAA8D9FEA36D6196
-7F0A53569BD8FF3301BE9D60E40F56E96C03CCB357EE60E148098E29D9FA80A1
-DF39B854E6D10D28D0D5E3C2A936FA8ADA714D125F1C6671BD6E432F8798FE2A
-1EA1A832179FE1AB4599509E947C4E6BEB3DB282C8CEA0086FEE894B612C7EDC
-8E6E2890418C7C24652445A518344E9D8B16F22F276F01B214E15F72539C60C3
-212AD375A371C582BE71F78CCC68FADFBAB8665F9FB743B9F395508FF98EDB7D
-E3FB15E0D848D426B8253F0B2C43E2972294E4FDE48046CE98E85ACF60C1F8B4
-F95B193D44B2839909626F1B0F0B3851F7AEEC13D660C80D252E9F9EB230EF48
-DA72E2273FC75A8DD0A2C183FEA536BC02C802FD544412DFECFF080C87B7A441
-6128626553ADACCB5FDE7FF64F6932CF6AE0387420E5C6F776C119F3E0CF8648
-D244731109514B7ECF30BF93732C51FC142EA1155B887A4D07D3E571BCFC23CF
-F1D3FDD240620929BB43DA8492387AE8DA9038598F0480F86566636CFA97DF69
-458E5923D3F6D048152B196AF011B8AADE35B0DCBA3E626B3E73FF1D035FEB6A
-BC939325C732EBAC0B835CED418868DC5117E7C222022AEA99750A4DFC9B8204
-66AA7AD0E79391338C51207B0153CE8D6FDD317093B726087E003445271CE234
-2C74404A8CDBFE52AB77D0026DD9F14A954FE2A526032EBEA7DFBC7AAB6FB02E
-C520C0857E7F713FA67F8C4B1F08926D6BCDEE9B1E7F1D385555864DBBA69C99
-A5F141F7581EBE84EE73A3CF78A9A8DD8E25282A2DB151264CDBB758552D91EA
-A0FDC320065E37871D54777CD684A0DFF908976945ED5A5913B412E672D21BB3
-C839CA3496782F73ED8F6D7D04766F6EAE47068BEE546DCA7F127229F7CFB8F2
-03987E1F25C4C7C2F8A83681564DB60A03C81175BFD530068D8494C005A798EF
-3FE14E421AEFD1E2189FC340F1A15A5FCCDB75A54666EDB62775C5443B87F011
-2856C300AFA1D2591ACB90E98D12EE1329A99D40CC62D7FDED51869607AF059E
-284D5E25FB42775460030AFB7F789355838DCBB891BF7BE333DD5A1331AD992B
-2EBE8E3BF19A807EE21B7566ADB79888AF725FDD4445EE7676E2EAEE79DD5059
-E8FCC37473A07D9E8D839B2CE0D824E7DD73173B1BB2D54A4FA66F08CFCBB007
-773DD23545106FD76AD523E66EE714C8C244B5E3E680557297A276E7FB6FBC32
-70ACCB65C172EE6759C4DC437B1939C31691A6C3CBD0920E52A636E8E42E034F
-37C70B52A1B17BDC75849A5FF6AF42332009A9595FD17FD591AAEA67441EEAEE
-4AE121707B8D01BB6E19AEE79CC9E86167CBC22DEC1B3C601755F9FBDCCF91FF
-9F25419AA343960F6A3E39B378A0A5BA8E550E0BFFB6901294A6FA251FDA9A61
-5AF859AE3CD3B124467E1AA4EDD5CA96A5E8D328B9328BF781BFB5BBFD797DD2
-21AF34BB584C3B38296ACB837E393C3BC2458507CA7C206D8BC7A17C17886059
-68F07422B21F6E03A7A93F28553753601AEECC0A6A13FCB7FE6E7C809ACE11D9
-7B78D416DF136D132AE751AFE2CD391CFBABEF75A3882C24019A2EB437294150
-86F985047A3E8F4882369ACE47ECA241B4B39E8C11BC45F7F585F29872C2CEF6
-64ECFD1DCC81BE1D485061C210FD33FA2A9E2799C6DDA8AA33807F5AE30D71E7
-C16836BBFBEFDFF3F455C7F4F8C545203DC9360209976158BF78C01F9C545216
-034F4591253CB4F2F246B02FE444F6561F78C3C9266D531E2046A39867C6C34B
-A662D9ED7A2E7D6F1900AF5BE42FCFBA5785EC5563628C63939C41B6C9B70008
-FD5DF0B7AB1BC8DCE69C7BF463EE3BFB40C3B971A7A29EFF5B9E8268F8EDB49E
-3D4D0DBFC63756F714CB93761A6E62174A4658B1C173FCA3FC4D44B8FBE3BB36
-739FCDF464713982ADC62FD97009118E6D4DC23A6D777C058E134A2F5B6B9A1F
-D16B36A690B60DE8AAAE0A83C165792FE41D3D8B3A21E2AC02B2E52731493FDB
-8AC76459EB210EB2F0CAA706A30B4161183EA6CC97DA6809846DA6D18AF742EC
-5F6EAA92E985B513F344E0E51E27769226CCA0CAD8A46124BA1A953E7A553B74
-31951AF74A66D7704170A1C4C397743FFCA8F8C1E6B43259BB4FE11597FDA84B
-5B379B0ECB14D1E0867B25DE78DFE35F420B47454F12CA7E5B5B7EFF3E8A7D87
-CBF38B7B66BADB64A6F9D232B2F55095FF5E6F0622C47D540D8ED53F0EB7208B
-1CDE09338F22B31CA43DFABB0092086F99869FB47DB0F0E6D967CF295E8516A0
-9EAAE4ECE338E01795B4B61A0D28DC7F055DDF6A6EAB74622A59C14BC73BC6FE
-60EDC0E0F6AA091235434EF6343E290FADB08C03DE45478119CC7A0F4040F27E
-5A0321533CFD004B4F4BBC459303AC17AE87D24DB19489EAA282AD0850D19E8F
-32301CE90559BAD870B16CC630AA5C0BA5F92BE223F50AA865900089E03042C1
-EFA45D26B0FEA2950149DAFD2BB547A61CAFCE2213989B9DF44834AD8322D6DE
-C4146DB2C607FAA760FE6318337C2D34A4B5CC09FD50096C52509028D27E9F0D
-21891104DFC7AD44F3A696C67D45FE01D63B97773351A1280C4D34740FFBC9B7
-4675AD03DB56D82273E1AFCBFD80A62AACEB92B161FE90BA95195E8BE4B1EE06
-93A8714DC61FE020C9DECF71C7CB93BA16B75271BE52CAACF061FBCDD2484421
-736154D2488C84898CCE125819941F74D30C9672B8F43F8069A220878EE39DAA
-31C489B449337526F0FCF7DCE74A0E6D0975FE2ABC9698AD2C2E2BE8FD012675
-D0D2272ECFF04B0E27E86D3BB67AAF9AA29A0D978E46C50D34E17964CD8533A4
-34CC099A59CC512659E0F999AFBF4F9B662ED12D53207F4CCDE66E7762F48C61
-95ACB391C198A79BD4440FF71D17F12C2AC5C2E6F8D8D78A29336A067EDFCA51
-4C9202CF6764E0D1B7CB62A371BB37047B31E691E600C7C66161210DFB1941CA
-07A6BC25502F4A2B77645F1924CFE4B0A20603DBFC7AF5DBCE938A0B4F426675
-353B518C54EEA0D059FCEB11D12C0FAE13A75AE704B985A7A820D4BE65CFB5E7
-CE0948E6A9920948BCF8C62EBD1F78568F1857FF490A292B6882564A6F3A3AF5
-A17527C83850A5327D3BDA496279FFB9C440D100D778A8EC5CB7FE6A01B23EAC
-17B3D0F963892C7AA5CDB6DAE899A57CA2E4932100265E23188A5F8672EF6D53
-4F8A26239783044AE83253A538BB5DD7ABA18E98DB217FAD489AC825AEEA22D7
-E33BB830B8A05F020590967ABA1FAB193351ABB5DF95D927B5FABCB1CF120F5F
-3203D9FB33D604921F726C713981E348BA0D3EC7A9E28441C73CB27B46E47B27
-74C32CA01D8AE2A8126DC60B809FA2444E54DC9B6C7B7697F5AD3795CDD4D36E
-08A5B717C5952EA3E763D1CFBB41378D05BFF484E3B9E82CEEA14864351C46EA
-D20A46B2F7EA536BEAC0239EF88400E8E924ABF09856A02DBB264CA429532D66
-B837B45C9870A4B59BF99D2C666032C7E0454BA2C506C85F1CBAD25BE03E1161
-DC8115B4A547BD02FEE496FFE63EA0BEDDAB2021644A36B5AFC2BB36C05073B0
-0B7026D3CAE5BC768E28438FD4E45637AD2A6AF1C71764BDD7F29D772729CF95
-327AF811D43AC8C8446E7CA9866B83D910690231EB1329826EB4A7A906726F4A
-2FB6463A88E10FD0FA52357AD440A4F19E7A99B86C87500F2F17BA54192B2B86
-75877BBE0812837905F45A0A8452F86CC660DA48DE7869FABF7A43F1D2ADEBEE
-E3AAD50D4BA859C4668A7EAC2B34AD981295C342D831114E314CDB56FF25EA7F
-ECA3228FBD44D7B185D05D775A4689F96E14A24C174FEFEBFCF81C47C6A6E40C
-57225A3A314D98F553BF0453E1BC61AD7833D30C7CAD2CB5FA173BB1FB89A051
-01326952C4BDFF7FB08A9F32CE04ECFF6F639E5BD4F6E8A5CC6757FB78F948D7
-C86B590EF163D517D990700C1ACBE74173164D152AE314DC4F0C983B1028EE4F
-DC7EFF6167382F210A2086E405E8694BB886C12E91B04CDDB3FE0562DE76F0BB
-2F4B49ED0D3A9399ED19ED40521ED6B84C533457D9C9E721A76E92262C8F11E3
-54CA2C3C086324F0524181ED10F42B1C9FC6A130016EAA5DD2F2A094AC9915E2
-FF5A2F542168A0059CFC5E6D57620DFF1E23402D221320C5B9F387356C77F581
-23BDB7BD2C7331B93E071611FED8E09993EB55B9B82711D2E924E9417F10E465
-810E941C2200124AEBE1919743A27D8C115EEBBACD242C566D9964B70A09C597
-6B906460A5FA93638156FBA16E38A99D276D5F06F6AA95C27B7779D33E7EB6AD
-EDD1D424FE81D6BAE0FAE32FADFCA8A24789A4234ABBC10D48213268316116F5
-68933BB85B9EAFBFF4AB81B57BFEB9DB5D133C75D477AC648FA289BF37C04D70
-82F04D47583D87B653AFEB5179905EA1C7E02BA88913D7055F435C0C5264A57A
-4E2C1CBE26974F1D9A3F8C0CE3C439DAD94FA0187E9D52C87F386E11ED3F4692
-12CBDBB0A2FBD2881006424F586606F91150C146DF6AB97CDAC928ACF5E79F2F
-F819538EC846BB9684FB3EC981C3B002766B26091A27360D0272ED2C438E5108
-271A93CA091254D5DA7C7E3A2F392DE8E98C9F19A4ACE1F4CE105D39F6EAE636
-1CB8F12AD9A1D5CCE0FB8D39C96326EA2BFF1333780E2C18346588C09EF33204
-2DA1C669665E5AE5DCCFCB2D38288770497E19FBCE12A8913554BEA7BB5B9ADD
-C62D9C37087BD6ECDF4C28777CC6346982856D8E726767D80452D2C6F7A11EA8
-AA723F201465E95ADE2A7F384AC093147812B81AA5744E6009CF8AFCC33948CF
-682924A42AA071B421E31D8DE8E7B06C3BC063C85E53E0C2F8F5391A18BF58D4
-91B66F3537976EF0C0E0C2F787D34BD19220E54D3FE8FB19C4D56C2E905CB604
-82273497114B204CAA4B917C92F42898DBD2AC2E09C8334EDF20DB022F16E4E4
-3CBA7ACCB851852F92877D20BFFC2CFEA4AC5B48EBE6728C23AB5A20D6A65856
-1CCFC96D1E26FA1BD905332520C2C1E89C03F2D05A2061BEAF33C4BE8BFA0613
-B52C7CBD970773DF44A21DC250F0391FED31B079DAB6F797009A554E005BC5FD
-A119405DF9F6DA0D1837F4B4A80A8DB6D4B2F232B44CBB2D0A07D82E0A6C20E8
-1E978F6244C705532C3F97591B71457DC3F6A8AA30F78C7684BC135477A1BA1A
-FBE8308380A9E073D092E71793F775C51223777DB3918CC8C47FEF5AA62CD83F
-C482EF3A79C9F067B17E072597738E02ED4B359C67D236EB7B70909EE0B9BE95
-92E5A5D759E5C0F109DABF867FE65325A2F41AD7EDBBCA2911289DBD922B59A2
-B0B6AEDB7CE3010BBD481F6B94271BF0941FD82604E3BD967C76C646E5F4443F
-E72F8F59BE6DF081503EC2795C4253424671C31AE81C6C833FAF858D31E32F3A
-FC9C0BD9FF93D7B732FBA56B83F13EB27EBFFF14B82C53237559D1D59A4C00BE
-EAEEEB033229E3C37638C1E55739C075510FB0EF8136E917814E0408A9D1DDF0
-076D988B1C31BAAC28001E793D1743062EA29208EE9C451DAF67DDE2B633A1D3
-A160A442764E8FAE25F39EAC8932DDFFD26CDDEB1036F7E94FDB2CD8E5DC0B94
-F67B0C2D890FE10BF32D2C3B745F2743B661278CD3B9F7CCA06B9F8C9C76A390
-BC77AF39C8EC0CF6B4F9FBAAC755DEB3DF856F1DA494A6E9E2B088E00C97315C
-B7227D5BE1A6471871868796A8A118C1CEB8BACFA1CF523B952E740B713D743B
-68B30F3AF39840B538A123930101CBC4C301CD977B6EA3560CF1D4B52B87B545
-A91F6C157ADC84DD05F0AEA8ECC06FE8DDC10A6E109D3178344DBB1387DD40FC
-DCA3BC43488F1CAD743FD2CA3ED3EC7919A344CF64D58B085845564EE32F3B62
-48062BFD1EEA7993CBAC3D5033129EA91453AE6B41E3BCBDF7BD42BA59C9A38B
-D0359B00F3019467D2A54122283CA1349A39143332E415E1CA3CB7217BC236D8
-71FA3F868C1BE2A4F4B7F795B20F0AF2440772A430618991282DBEC40BF7F121
-D808BA2A579424688C3BFDCB83D50B5EDCE92644E8A57CF47A3941E0B08691A6
-9D5945942F3D6BEAD3A071DE5FC51883B0EC2018560A2663696F6122383DDAAF
-76BA963196BACAB75BFC170FBFFAE269672493CCAEFF60720FC5EF8B38ED00FC
-5C77003D99F5516F9967A7A43505C4F2DB7119CA8331F089CDF69A961BAD36F1
-F23A1F6E3686FFC07DF53FA95E215F12782B257C6B6A2E6C968CA6DDDCDCFB02
-490730EC2EB27D545960EACCFAE7F85E9B879EB098A8D6E9EEA6AD6C676A5988
-E88EDB0D09E051E38EE829B20DA3BD4FFD604B95F7A1EF96DF54065EC848FE0D
-037F1EA94948D7093802849B05EE294C23C94C54A385E41384396180B71E6C0C
-11740CB5E72BF741B61552A3A8CD6AA897D4AF4AFE1A43BC2BCEDB84CFB93E7F
-CF3A9E021B024CFBCB4D400E62BEC1F532E8F801FAA21BD4B9C1E1EE06EFCAF9
-BDC597F07CF42CA28C0BF44887E642D49FC9A9D198362CA8A804226D44E50675
-B650931F3A68B1BC4B90A99BEFB4887D297446C992E84059CCA385A936252372
-BDD352B38CC8AFFD8A6A0DF9C5E058173E49B2698F215FAABC098E6AE7AD5C8B
-55396A9461B95157E3DF392D9E4B2FAC4878A39A6BCF530443C72CE3670D8A02
-EC6D6BCE76260BEA9D6EFFC893AF1661C21FE878F2AAD493A0F0F6AC1363A5D8
-E6756211E36B2044D45F8E81A28BAF4661DD7FC1C659280F1118714FF75D1DE4
-A1291B3612043BAE8BB7A35A718913A7BC14027BA377633EE438C00FC34EC65D
-0D0C366F3D4877887491D1FFF7E42B22736406002FA2421F56BD349441547C52
-5CB0CF871C5724472A7E463025F9EF4876DA27AC1B860640A3BAF440D101CE4A
-11FD1A0BA92725CD87F9AEA1380ACFB2C7D0C63DDD9030DBC5BDC2FEA880ACAC
-E17BB106CFB7622DB5F288059FEE95409C8DFE2DBF7E8441ABD6A0DDA3C439E7
-29E407F7DC48C4F2F88452AF7B2E411C258CE97A65FB3986D243BD99E1C26DEE
-ACF6E5FE7F328EB5C50A198B4CFB1DD14EEF3D87C56EB964A2F26B00579633B7
-C9A78140C6D7B706B8EF686905410178636477F16EEEF135C794E0B4F0DB9D6C
-EF4C4D069ACD6B64F7CEF9F760871CF53E247E3D4162F0E78B3A93D3DB8A7E7A
-56F7BE7769197235DE5F27AF56018CC1D9C1596C411A3FC6264C8B8803F1458D
-4E4754B1F375B1A238EA1F41AEB9BB8B1107E0BD47FC3A504FFF317164C669B6
-1F1FE3A93D7661EBA87E61D95047886438A0B046DFC7EEBAC8F443AFBE3670E3
-7FAD3A4FACAF78C5556FF28B6DF33D9FEC1CC373F7C12C09617A0285790F4C6C
-4A2BD6DE94B9C70B4E33DBEB028B1215AE9B2EAF4C2227C314ED90EA80FFAB32
-ABAD15E847C9B3C2AB8884BBE892CE10152A6DAFA317505E293C2C7B3F402C66
-65282BF683E608CB3A472D69815E8A4CC078EB8BF412CA309007EB756C52E172
-20BDF9CADF79FD9A7760D57528B35FA2E46984683D61C93D18A5FE64FBBC83CA
-C5E593EE5F782800DE66CE6A29947ED57204844B8D02047E9313AB6F28FFE52F
-12DCFAC1369B6A3BF87EFC35CFA01735962542CD6698AA239FC916E68446724B
-67F8850EE75235FB2C7945BA778AB32BA1D262BB10F866294B76F3E7B6C720C4
-AD8D0E874578DB24E797F9E37F865E1054529D89805EF1C8CE2F08801E6572EC
-F71494EA234F34CC33D3E0E51A22831866B15387C5D30D1333157D3DBC7BE9C9
-5D9306CC5BA39E7A6D0CFA446A19795A1029A9C48E181F4BAB8EE11A97A39F1B
-1AF8E6001F36D953920AC6F5619D4CE0D64A63FB32BF94A2B1675D95A48BA24D
-51A45F6AA781815634C50B07C61933E78ED10E67F3CF9E119862EFE6FAC2091E
-D57F200B2491E77EF5988A359CB3A494715E2B59A0FB2DE139B5BFA10B0D2120
-7A58E2FEB76E81FE914B1AA490C20F2C35DB8B050EF0B3DB11429D4E2CEF5532
-BB2D1FFC8C64021F285D79ED77E67A456559BC678ED9DFAA9A20A04DC28BD7B1
-30B468B5E0EA919473EF671B2E47F7DEAB56EE7DBF9B0F8D6D8F038B6A4DA697
-E21C245C87802FF8FD0966FCA973D6A218C80AF1A4C5003503C087E23CDCC2FD
-1EE6FC8416505D3B3B177428D74BCA1BFAC790BAD33878ED88B352911855DDB6
-B3961BB2F07B4FBA3416236C269F9604FED8AE0B39F97B522CB32D9EEE6DD546
-930701604B83D6FB600D19B0330E8B4AFE14E546A19B81BFD6822C6B809EC4D9
-0BA89E175AB71425CF8657669BD7B445C24C5C743A8B26E088B750C314D769AD
-0709C85FFE4F804F9D6D313D43D49F2B1867DA514F9D7F3279E16193B4D69911
-4A950D53CB4545C6DBAA6DEDBAED5446889B749461483F4C09ABE6851FA74F52
-1161D9507AB0BD31D2BC140B0540C50D7494487E7FC5CBA8D05AAC4CCAD9AD27
-C10664F8EC38AA6326DB86D569B10CBAC70D2C9A4732641EC1E23F8D1D52B65D
-4297F0EAA018000CEE0421DA241802864A16754E7098191FA88D49A84E996523
-F144BDD670FA7F731523CE7B831C344BC010391B7C49A07C6D80AB68A919AD28
-B497399246DC219714343E34E2BCBD1DAC81BE6737F5A15B7AF86AFD8B3D48A1
-737008D36CC6D51BFC1EBBAFF8466FD74E87E4F457FC7B8E9F1AF04E7B962F4F
-F7095C5E4D77279E778C5F077439AC030BF9E2C6B47F0F6739C4DA00A692EFBC
-FD9944B624C86EE8433664326EAA096DB6B0FF2043F39CCB50EBA0824DC71DF5
-C47B6E6D28F00F146F285D282CEA6266FA7C188041F3582622845731107E8F82
-60E627EB02546E1D14AD47300F7B659D12E08F7B2D908C457F1F64FA2E963D87
-9D4EFF285DF5F6FB8E5B82859A1DC8B13EF1EA0147F527DD08DC89F285640E7D
-E52BED119D03594BC50A65F9485CED55D0AA9D91DBB7EBB0A1250BD24BF4C18C
-A819FD2173507727FC464E6B6CAEE157ED60EDE1CDD7457D43944DAF88634040
-0FE34F067B2A6F2FF049EF03AC0AB8741AC1A73E113A1F352264B42730C77A3E
-DCAE4FC663C7228EDEC7B98B22ABECB1A30B8723AB4C5C5E43BA18621F8E4A07
-D39334AC22811BF08F34ED845BE49BEE4A7728FE968D2758E22BBDEBE39784D0
-AA2DC5F9F24DDC15AD348B9D041A59CE9EB243F2C71C4A7C9BC6CA4C582CC1DB
-7E17A7017A9E3C8892B10602E9C6E7F85C41C37B3679DBE5BCEC5382AE6A47B4
-0481BA688FB835D1F203DA25F16E78037083202996DD404D3EE061C3D79BED26
-A78526310A9FD08674DD8C5931B7DB2E63F9ACEC6643E921932D6A423B42BF0A
-E490AEC897D5433506EC472D9B5BB6986BC8AB142A978285DD9A05195E19D72C
-509D85F8017DB91185E87CA714ABEF7D67B04BBE809375826B436EC8E6ED0E68
-095B7526DE382274E5B7ED202302DBC5E660EF05D1F899EAD387243C59C3B8DF
-75260B386A34C3E26F3DD7E02100D243F6C43C0412311218261B540F4A7DCA88
-B84F1A4E3782C1802C714844B133EFA956BD1532758D10FF2E8608E3030EC88F
-92A049019416CEBC668778957A7A7F5568857E02A8FC6EBD0C1A97D57636E85B
-3FC39E249A60EBF910D28F8A7781F0204FA818A6787AFD04AD51786B86D654BB
-7DC510B52D76D96EC1D84EDB243AEEB278C396442B9E15905E8F5938DC9CD316
-91C49511C2D25919F72520489E980EE63D7D963B4AD75714A48C3994AE7D9F9C
-5151CC84D1743852481394B1422128E3A53C4EA62BB213ED1C160225B9BE61F1
-1312F381BB1BC4F067FC2C8D99CBA69055EC497C30E54437114381EDEA69DC7D
-AA71E446E625BFDB17D7BB61FC558AD62FED8F9C438B17B1289AE6D1994497F9
-52C21D61F385E01556BC543DA9744B4090929D6D2F200EBBB94A05545B974F45
-2C2FE01F2CA7B11AA557FF4E5D1DB4B392682BA83B7CED6DB9C52D1FE2DB5CC7
-413A0E9D6B18A6C64FAC67E886C7103519A17EC9D0668A7D411EC5BB70A409D5
-C6E57B70FB8346738A764683AEDAE5ED4BDB157C49E46345F726D2204CCAC1CA
-DA760501C6CC2124C36E3E7DD4ED1A49C5FA8C8A44B290DACFF0E4E96D544FD5
-769B3124946B471AA2299F933FA842912E30B1F66612F26275DA83B6EBDC68E0
-6D4B591FE2ADB3FA01BAEC75C654500643CAF63D302DE15CE951463CE2D8D52E
-CCA922580693E9E15D8767DC74BF19A300BEECD3314000AD3F7AE6B7A5561E73
-FA7AA3565F88CB2951E7CB3D265BADEB0ED85A21B0738B559908E4739D05F0EF
-9A78F1F8F1ACC2024C442D7C4306C1923C49B1F07C1A75D26C11417383D263EF
-AF656CD818CDBBB9C8AFAE61F80788485EC2C1ECB2B5488B186B018B6DB48D48
-F360486D052E3B14A3288B0D729425FC417D1D1CBBDFC99D385C117A51EB6F9D
-32703A943FF0394040B0C3E832FC752571C66C25FA5831196EA17CBE3F977509
-34F31C8713D23FEB0F6D6EB120A312776FDD852185D1CC9858D5CB5FA759189C
-B66F42B501EECD39B6A3D0172A87820B5BBE663E083199E930505F7C3919B677
-C2599BAA266A093A586B682C23ADF0B025BF3BF7FF34DB8DB3DA51E5FF723666
-CF4161A274673E314651620A88CBA311CCA88C2CD5D6030245B4B7A080C7DEEF
-2DDB817B293D965FDEA03074250FCC1E5F2CFD77E2F58439F50E99EDB93D88A8
-7AC95D47273AA37C5FC6B7E2B929B27267DDB7191C87FF4B71E035A4EE52FFD6
-4E835FAD78FA7C7A45BC5999E483F442BD63C7D3CF3C832B78EA59207493B018
-5DA09F3B868BBEE0E6306872DB3F60DBF1F0D77251029A34A925BB6022124848
-1BA43EE7D4DF93BB0276C8F58FDAAD17BE753F639C752676B3A57909DCC00F1C
-FE43FEE99F367EBE9DB1F44458796F8D1D7276E5B09A836EE6E5C2FBD2495146
-92308AF8FC92C189050E07BFEC70545C3005261BCBCFA25934C821FC4D80FB9E
-AA023EC4B0EC1DE38239EDDC69914AD00FA3186E1ACEB48D8B6DDDB556D22D3B
-195FE0313DD8D0D08A81378401455145ED56AA5D3F1480D88BFFB800385E4D8E
-6A0FB173880EA430867597E52B30237B96111EF26971A7BCF28EB936282F01EC
-D4F886CA9843F12CAE84CA63285FC47EF662B7C0197F5DA9E1ECE24CA63419D9
-0337CC9273E1F68F4DB93341AB8789CF1BC19BACF8AC7C2C829ECE9BD2093016
-7F3D67EEC7992470C9848A08A4809653B18BAAD9B23E06267D9AB048A8E7B486
-CC4E6B75737DCAA1D441E3B09D77096C908B8028B69DD0AADC37EC93EB4DBA56
-3E2223D87CEB6AB620CE8BB35C12F349C56827DEA548C9486C7CF202C736FFF7
-338572843DF44A8607842B3D1846E0E055FE11056AB943AF658428691B2A7F70
-DA2AEA7FE6C534461FC2E31EFE2B0B8A550B42C266DE36D4FBFD4EC52CCEFA89
-3BB6871735F244E91CC4810FD2556CD141DC7955051059AC627DCBC5B03BEFA1
-1234FB41B0350F58AEFF337F4DF18A56B10E7C0182B9BF988C0BD6AB2303A380
-4836C5EFFB63DB5BC8CDBBBFB98660D7A95249784BD1C23B35B2BB369314F665
-E78DEF000182C5F7F3D0AC88F457D52B84CB1D0F5488D2FD8B003B2F6065EF03
-CE2F88824CF75FD1E593916EB99386C523C410B7184A90198830853DF31CD648
-9F31F9846693A8DB4656375EA73FB5D435FFD9068D35E24A516B49B62B000984
-A0836812828F68895791524DF7B580D64A501E3F22F23AA19F71B4B23223096D
-625DADEB2CBC8D54DEA350420C55BF8F23A3B6F6506CB290BB4C476D0CD12A92
-CD2E3CBF84A4FD63188CE763B20863A9A0257A0D461A1E85EE8380F630E4487A
-AF7EB93F52B29C92F712A58B72B6D74CECAF2D72A9A9CDEB28B293800C7E57F4
-EB54E53806E91BBC4431EEA6EED62056C6D6D76A878CF3CD3095F9EDA83140C3
-21FCEF47128C16248874875E1ED3F1948C922062FAD55C8D57916781BC0D3BD7
-A8B6189F235EE64557F7D79CDD8FAF4DB2FA81FD7AD991B6B032F29E0A0916F4
-775C11BD7129E288D25D74160D81C054766CA4AE15FD41E6F07A3EFB8B74ECF5
-F5356CD4394470AAF0CF427770041124643B0D739A77D4350BF3A51AEA4560D9
-88C27643AC8B281AB2984AD4BC18F6D67A75DFA7CD1A0483DF953DE044DC2AA5
-B37C911782A5E01D1A9EEFD630A38B96C8CCBFFCAC57DCA8DB43C9413689EC63
-85AC555F64BF89C857AA19AF95C60CF36083A3127D6B769F41E72C561417F220
-A26882FBC036B07B44CE022B65D4714EFFAE9AD011268A20C2F192228F12E90F
-28332B35E658D1D48EFC390FB105EBAD33341E9855E598AE3D3CE49E677FDFBF
-B7721047F80140A163D192B2636C6671E69A79C99EAA13B449427E6FF1697E3E
-D66BAE05BCD79FE8842B3B44C13DBB5D1D74BF8864CC28D7AA78FBC2D5780291
-5404F6F58CDAB1D55F0257DEBC6A6993992F8F94AC766CECB89ABC4E9EAF7DCC
-C8CBCEB7E9A591E3367FC28B64A428BB7F8BD76EAB19B398EA98E2A16D5C1965
-202DB44B2B705AF274E1B546F9FEB244315498DA6DB3A03B8410297376E8E381
-DCDD1493A9276983753CD3EEC2A6388C1BBD3C9D5ABC6BA7FE46AB5EC0FE7126
-21F962AD96A800FA6E9947EF13E8DD555C7649709EEB1BA6D51C673732CE346A
-51E5D61CBE66A938B93C945BAB0AD30BAC7C986799D2649397E3BDB27566BFC8
-89E53EBD82838B60C21C7FEB8A6BF18246DD59265EE04D6E4C72BC6FAE7496C5
-63AD4D778F062052BBB16470EE6199019F39ABF41425A625C8B8AC4BC5286A7A
-2A06C3422698079F7C8E09908CA01D9FF75294AC4E2D3485CC8F0747D8BA46A5
-70E8143C8605D0A21BFA68E96B02175D288DA1003B76650F51F1B77B6B924DFF
-0542D60E5D4528DE2603971F27A22577A0B75C28F7B78EEAD4357B2887A336D9
-5B5DFB8D51A1A7AD4E824EBBBAA07C909337DCF50BD172ECC4E73E71232AB7B0
-E3FE25276BA0061ED895C3C64A5B18AF2F6BB204007584B02FBD2EFF8B8E19FE
-141E2CC15DCEF0E7EA7699DFAA12A4436215F9715184B2FF9DAC7610DE84A29D
-EDAFA708AE83594335D0BC2151EF7A03491FBC11C0C9A0C055023EF3B585CDAA
-92C405DA53496EEE0FB5C90BECF971D2B30625F0682F43268AF6D432ADEE23FA
-29A5AA4A4E43A1F907DCC9012556F7E760B8A56D9B625EADBB6A94F9FE1FC500
-467298337F9DEC4D5A1266877095FEEC796E59DF0B34CCD5DBA76F5B057E35BE
-6D27914AFFDAE5D2205E9EDA160177A8FDEA3143AE2B67B33FDDE2CFB453BF7F
-5A89F4D9031551C3A32B1110BFF54A30A35385B73B8A6C6139037A9A222B25FA
-14CCA03E0AD37C7D4DDC0F09C76426DAF1B9E89784FD6A125BF0B42EE177CF83
-19656E38BF2256C18D5B2263E0266609951E590B6EEA0E1A19CDB321520E3D8B
-F336F9CB964C54273A1486D980C3D8F2FE293AAFD2FAA3080B2BADD43BA973E9
-FBB32EDDEE33AE64B1F432F4264601291015A0EF1C1F48998F73A1A160C4912E
-D8C115D6B6B0C6F2BC2E335EA877D04F4F975E7CC48AC5B367F2B07ED4861968
-C84A214152A95DDC5FF2EA1723A951447C715D37BED204A6C5388E4763ED2B80
-E972681A7D7A1266D688E669CBB7FF46BCD7CF7C4EAC81940CC15581DDA10448
-BFA6F6940C502C57AD457D3C87899F2CBE9A03075BE3117422180253AB587446
-7656E50B0EC0688010D041B09C8D874BE1CC1FF11D01830935BBA4292E4A9C72
-AFC53DFC1929070E189FD260DE9D46E8DE2B454B92134ADC9E3E039B586737D4
-06F773893F123229CD3990D335EEF7958AAE325F3C69E63DC9E3DEF6471946A6
-DB04F06CE81D20CEC3A5221895D0844DC40501E7FD58735AF5C7EDCA5C5FA576
-10116D595287C50705FFDFF67606FF777D6C65115C5A40F984435B8C89705703
-86187EBD1D94BBFD46AB6354CE228CCA7D795B6331253E66AFC277EC4192565C
-C90852DE73D64217560CEA0BFE67F739EBD25E20415B79E92341B3EA95C39255
-ABD06486E3379A6E9BB6577B6D11846BDE64AE22B28B86F667A34152EEBEC3F2
-1CC89CDEC8061E12195990DB98CCDD9DB9951929A97D4988A6550235ABF22A9D
-496A6354AF17E0C816AEA2F57F31AC1BC6D8655870DC304E9710A46D8D10F348
-3F7F9D866C145D43189BF90AF806EFAEFF57397926DE8E29D410706E19923422
-7751FFF718396676E4A6DD742D3211675F87EBD7F88B436727B5F60AB7023E9A
-B3C0F7C8574B844F8995519BC6BAA4D214703319FE54A700D8D367556CF21E9E
-A4E542BDCEF52B0604E09FF8F579B5930955274A952D2E5BDD1DC5CE4435C7CB
-A56258D7BED795D9C26A0905F6FBD47B12B0F824A321DA2E6E8260F39A28168B
-4A56C7D040DDA8C939B6F89129F85F1E14C24CB95E65E05049857FAFF7E6C97E
-A5034FE89820DA3A1FDAA31B7B94ACEAF515649BCE8E41055922714E8B001DAA
-F356A344EAA6B2CB90FF2A15454EEEE7115BA9501164FA33D7479FD6AD91CF31
-A3B820F6994B1124EC111B19FA10270D5ADED7E0289E3C4031F3166441D72772
-E273984A35AD3A5788C3B548F78DCC9E6D7B68D4EAC361BDB590030F1D7D8B99
-6DC137FC6912223567724E7ADF3D3159AE75761825E9097401B32C4455DC51EB
-A5EB8BB7554A80390BE7FAC78B0567D38FB219DDEC888706DCD78133299336B0
-7FCC5A1FC1AF72F13B7539851F5C16F59BB14D85CD43A15EF626F42F64499548
-3BA4F529D04999FCC440133A83E10C95B1D4C276DF7E3622498AFA19D9DBC697
-19AAF079B99681074814E86036D5FDB9226337D000007EF744EE8F25F702ED8F
-9C211848FA23EC294D662A900ECB248153F35FB48C9D86E038833CB63897C6EE
-BA6444DB65E7788D9BED2FDBB8DF6ABC64F87DC35EAC0304AE08AAA3EDFCB4BB
-39D7C8EB0E542118203370270E48AB4444DA84083A5D962FD5912F819CC27D71
-E87B004990F6256EE3A00CFA301E85F9CD0451C80BDB22C4D6F4DD712D330E3F
-EBA1497D3ABA45AE494E79985AED8E7B8A17C4CEA5EBC76C94711868A80B8FF3
-BBCC759052A7FD1A83BB4DD93FD377E69DA13FED84055D7F55127FC609DCD154
-E86F0722C836E57CEC156F4A54CFB9E419BEAA8D2907822B203632A0A9A6FC0A
-05671D91D45BC1E4F22E25E049A723A638E7826924C0DB7A3B016DF1408E4714
-7D2B21C64FB77CBA48A050381A07AB8FB9868D018A475D3509DFB9563415FCD6
-8B65E552790A827DA9FBAAA5D05209AF84EDAED48E19F8ACDAB1ECCB0BC1BAD2
-2D5F6EAF73DC365A5543C0F7084200128F53AF8705E9EA05C43CADCEEC6258DC
-01F4B8149628076D3B92E663CE5062CCA0496D28D83C498C40823C377EE85FED
-53B8A49583317F68C1B75AA3FF75D6A7AED88E7FE15CA422E6BB32A79A6CD2B7
-1968BA0CBABD0DA3B6924C33E6EB3B6C701311E5B5C3385A2369847F70B86B9E
-623761D24C0BDC63C97906A8AB360CF3FABE99D334DB71E06431DEF1FB7A0D6C
-32BD3FB474A00E2F16C177BCF7CAEFA8C4B291A65A0BCB8019FCBD002FB18A97
-A00C6BF3D6164D3007B1E763AB6A54AC1899A7FA4516023F748B5785F02C56E5
-125F48595D47D2B53EB7AB14D465CB0E4FF76BE5E67B45930E4777A010A4C505
-2CE5D38996C753045104B46619BED569AC7B88E90C3ED3D4D94DC66AD1DA82D1
-F05FEEE709EEE3B7B5E360B79E6213861E75CC86CB93FED2A9C3694A74369DD0
-42860DA32F6F8EB1DB3E56060E25BB4DE2095B780F3E96371045AC1C6C3548A9
-AC7491AD19D05510C29A7A8F423BE137EA17511B84E838EA2C7B54361DA6EDE4
-60FAB7949927BF6EFF98CB1FB4FF8156AC161F4DBC0D76C23C6DC37AE806CCF4
-BEA86EE39C944ACC3D6CF6C2790B2A854965F0CE7CF1B21C91041D828CE47776
-FD6F5D76133DB8E4ECF1269BEE322C8685E17B85A521C28FF1F82D25B38CD710
-D9D19528F22D511A2136303E582B45262B16DB4A7BA64F91EFBFE14F7BAC89E4
-D1A8326373C97F9E625A48977ACCE4ECF11977A5B6D818375954246C8F74E18B
-CDF462E8266EA4CBDD4BB0176D664E860135FE9CA2258073AEC7E6FC78485C5E
-7262D7A1938D486257D35B9021562F6A634C84F38A12BF3C30B9B4CDC04D3B96
-B1739F0976CB21F80862EB7A97AC4B492B27C2BAA0BB2828324A47C068B29007
-F9DE1A9047B5614AC98E99373494EA9604B01783AAD81C080DC788666DF5C822
-80A155D29608D7F55BC0E9DD86DB70AD7DDC4AF1E23E99C8945B2A461619A9B9
-8C0DB6536B69566814463B6A8D715B6B774C3E30613A0531CA695343211D47C6
-5CBC0C0787FAD2F02C650105E80927024454DA0253E2FD8ED51DD32B11928C7D
-4D7BB81BE93FC7BF8C1BD0BC503FBE2E114C160C764B96A2852ACA7223E9A036
-239937D52EEB8ED05C5E5D0D7FF2169D743A20C40ACE65C43F3699D26261BFAE
-795347C21F6AE0BE4D002934324722E846FAC7532C0AC7577C2D09619C0804D3
-E38DC687B97AA2EA80DCC115A687AA3C58C5B815F72DFEE707C9549EA95E1648
-C72D15726EEB28CAB54A0AAC106267CD5CCB9C03F4F3084D0076AD465F461816
-11CB10750E518595493F2532A17CDE15ED9C70F7920816D2CA1ADB6E38CDC817
-B267A5BCBF50F01521F359B54C7FF98F80E340FBD7D1CC7069DA5F8A921C4804
-A49A1AACA8AE12DFA4D4516CB1A2E459599F73DFB0A31302EF492C40CED504F3
-B0D52FE7278A041438FC3995C22B3DA95AC16169FFED27EDE92F7D867F4C6CDA
-458FD8A41A54F96BB8E4B95BB99F27CD1311A778F4FAA578D075B361713294A9
-5BC93A105495B6868F1677F12FA997036D0D915435BD224C03D95681775A85AB
-D2D375A27A7B9AC87417DBC9C6CA17FAAC3A561982C384DC5BC24049AC3E4E62
-E2006DA8BDCD96273371E7F7921868DD6A5A8EC9A2C8E15A1D6BDF90BD63AF2E
-50572D383E61F6938E75DA4169FA94ACF48ED3501AEFD49CC1268A43F6EDFEE9
-48DC81147032B10A066952B4A6546E282D67287BA971A174E8DC464331ED252D
-3E172CEB7994D350D79C73372ACEA68C803E3CD9B4F8B4D2A8768264B5CDF6EE
-0F9A7F43D3C895D9BA363F98B0159822CFF73979D8812DF3AEB7F69D3B72F26C
-F484C0203D084772C822B90C422ED4E4B9F225EEF68B2E37B2F4D327D2EE4E64
-E4F7C2058B735562A82462207B70FABE81578578960B2723451927448BE3213E
-B7D43FE3B09EED0A9EBA61E134D92C92BD6CF02DEDF0D6BD19388548A32C5A19
-53E5C26ABFC7D8D240D45D6EA3EC9289A9A60942F7142F5E82567510264CF888
-7FDDC683D5DB5CC7C08ACEFCF9854D2AC684A77DEDA2BCF006D12048B46992A8
-B3AEB6AD7A156B98AFCC46C84284A671296FB4466E532F8E208D5EFF7F497E84
-FCB56E247281C1F2E2696CF394737F14CB6B1374A3CC26624EF63F7F4482B528
-D0976A402C948D76713DDC3A4740600B987AFD01B46C133403FDF4F692F51125
-F0175B287DC6B95C83D6B272AE10BD2CAD34D981B3D9FF8E5B77A85CEFC17E89
-2D792B94F2383DE8994525ED925C45873C20
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-TeXDict begin 40258431 52099146 1000 600 600 (nco.dvi)
- at start /Fa 197[33 58[{}1 119.552 /CMMI12 rf /Fb 195[60
-1[21 58[{}2 74.7198 /CMMI9 rf /Fc 207[19 47[52{}2 58.1154
-/CMSY7 rf /Fd 172[46 6[50 4[65 71[{}3 83.022 /CMB10 rf
-/Fe 131[62 4[62 2[62 62 62 62 62 62 62 62 62 62 1[62
-2[62 62 62 62 62 62 2[62 1[62 31[62 9[62 6[62 8[62 34[{}25
-119.552 /CMTT12 rf /Ff 255[60{}1 74.7198 /CMSY9 rf /Fg
-137[88 88 88 27[120 5[39 1[88 46[66 66 32[{}8 83.022
-/CMEX10 rf /Fh 135[38 3[25 31 31 3[41 3[27 23 21[41 50
-3[53 49[31 28[{}11 58.1154 /CMMI7 rf /Fi 134[39 39 39
-39 39 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39
-39 39 39 1[39 8[39 2[39 2[39 39 39 39 39 4[39 39 1[39
-39 1[39 3[39 10[39 39 2[39 39 5[39 39[{}42 74.7198 /CMSLTT10
-rf /Fj 176[55 53 10[51 67[{}3 66.4176 /CMTI8 rf /Fk 134[48
-48 66 48 51 35 36 39 1[51 45 51 76 25 48 1[25 51 45 28
-42 51 40 51 44 9[94 1[70 63 51 69 68 62 68 71 86 55 2[36
-71 71 57 60 70 66 65 69 1[43 1[71 2[25 5[45 45 3[45 25
-30 25 1[45 35 35 1[71 25[51 12[{}57 90.9091 /CMB10 rf
-/Fl 138[41 25 31 3[39 1[63 20 2[24 3[35 39 1[35 39 97[{}11
-74.7198 /CMTI9 rf /Fm 244[100 100 100 100 8[{}4 83.022
-/LCIRCLE10 rf /Fn 134[45 52 65 44 52 33 1[41 3[55 80
-27 1[37 31 1[43 1[42 47 2[48 10[53 1[53 56 69 1[58 69
-73 88 2[50 40 2[58 1[75 65 4[71 45 71 25 25 32[52 2[55
-22[{}36 90.9091 /CMMI10 rf /Fo 136[56 2[56 56 56 1[56
-56 56 1[56 56 1[56 2[56 56 1[56 1[56 46[56 50[{}15 109.091
-/CMTT12 rf /Fp 134[41 41 55 41 43 30 30 30 41 43 38 43
-64 21 41 1[21 43 38 23 34 43 34 43 38 10[58 58 55 1[57
-2[60 58 3[39 2[60 50 2[55 1[58 15[38 38 2[26 5[21 25[43
-43 45 11[{}42 74.7198 /CMSL9 rf /Fq 133[48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48
-48 48 48 1[48 8[48 8[48 3[48 48 1[48 1[48 48 5[48 9[48
-48 48 1[48 48 48 2[48 2[48 1[48 37[{}43 90.9091 /CMSLTT10
-rf /Fr 133[37 44 42 60 42 49 30 37 38 1[46 46 51 74 23
-42 1[28 46 42 28 42 46 42 42 46 8[68 2[68 2[66 1[62 70
-68 82 57 70 3[70 59 1[69 65 3[46 1[70 2[28 6[46 46 46
-3[33 3[37 37 28 25[53 51 12[{}49 90.9091 /CMTI10 rf /Fs
-140[28 28 1[39 2[59 7[31 1[31 10[53 1[53 53 51 39 52
-1[48 55 53 65 44 2[25 53 55 46 48 54 51 50 53 11[35 35
-52[{}28 66.4176 /CMR8 rf /Ft 130[39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 1[39 39 39 39 39
-39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 2[39 39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 39
-39 39 39 39 39 39 39 1[39 39 39 39 34[{}87 74.7198 /CMTT9
-rf /Fu 131[77 1[34 41 41 55 41 43 30 30 30 41 43 38 43
-64 21 41 23 21 43 38 23 34 43 34 43 38 21 2[21 1[21 47
-58 58 79 58 58 55 43 57 60 52 60 58 70 48 60 39 28 58
-60 50 52 59 55 54 58 1[36 1[60 2[21 38 38 38 38 38 38
-38 38 38 38 38 21 26 21 2[30 30 21 60 23[64 43 43 45
-11[{}81 74.7198 /CMR9 rf /Fv 133[55 65 65 89 65 68 48
-48 50 65 68 61 68 102 34 65 1[34 68 61 37 56 68 55 68
-60 9[127 1[94 1[68 92 92 84 92 96 116 74 2[46 96 96 77
-81 94 89 87 93 7[61 61 61 61 61 61 61 61 61 61 1[34 41
-34 31[68 12[{}58 109.091 /CMBX12 rf /Fw 194[51 3[33 33
-33 33 33 33 33 33 33 33 4[51 43[{}12 58.1154 /CMR7 rf
-/Fx 134[85 85 117 1[90 63 64 66 1[90 81 90 134 45 2[45
-1[81 49 74 90 72 90 78 12[112 90 120 2[121 126 153 3[60
-1[127 101 106 1[117 11[81 81 81 81 81 81 81 49[{}38 143.462
-/CMBX12 rf /Fy 129[48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 33[{}94 90.9091 /CMTT10
-rf /Fz 133[40 48 48 66 48 51 35 36 36 48 51 45 51 76
-25 48 28 25 51 45 28 40 51 40 51 45 3[25 1[25 1[68 68
-93 68 68 66 51 67 71 62 71 68 83 57 2[33 68 71 59 62
-69 66 64 68 3[71 3[45 2[45 1[45 45 45 45 45 45 1[30 3[35
-35 25 24[76 51 51 53 11[{}68 90.9091 /CMSL10 rf /FA 143[76
-5[25 13[61 14[109 21[0 0 3[61 16[91 7[71 3[71 71 2[71
-1[45 1[91 10[71 1[71{}16 90.9091 /CMSY10 rf /FB 133[60
-71 71 97 71 75 52 53 55 71 75 67 75 112 37 71 1[37 75
-67 41 61 75 60 75 65 5[37 82 102 102 139 102 103 94 75
-100 101 92 101 105 128 81 105 69 50 105 106 85 88 103
-97 96 102 105 64 3[37 1[67 67 67 67 67 67 67 67 67 67
-67 37 45 37 1[67 2[37 1[112 67 112 21[75 13[{}75 119.552
-/CMBX12 rf /FC 134[44 44 3[32 33 33 1[46 1[46 1[23 2[23
-3[37 46 37 1[42 6[51 62 62 85 62 62 60 46 61 1[57 65
-62 76 52 65 43 30 62 65 54 57 63 60 59 62 3[65 7[42 42
-1[42 8[32 32 40[{}44 83.022 /CMR10 rf /FD 131[91 45 40
-48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51
-45 28 40 51 40 51 45 25 2[25 45 25 56 68 68 93 68 68
-66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66
-64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45
-45 25 30 25 71 45 35 35 25 71 76 45 1[45 25 10[45 7[76
-51 51 53 10[57{}92 90.9091 /CMR10 rf /FE 138[108 1[76
-79 8[54 3[88 108 14[149 5[145 151 6[152 3[140 27[54 39[{}12
-172.154 /CMBX12 rf end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%BeginPaperSize: Letter
-/setpagedevice where
-{ pop << /PageSize [612 792] >> setpagedevice }
-{ /letter where { pop letter } if }
-ifelse
-%%EndPaperSize
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 150 1318 a FE(NCO)65 b(User's)h(Guide)p
-150 1385 3600 34 v 2607 1481 a FD(A)31 b(suite)f(of)h(netCDF)g(op)s
-(erators)2316 1589 y(Edition)f(4.0.9,)j(for)d FC(NCO)g
-FD(V)-8 b(ersion)31 b(4.0.9)3180 1697 y(F)-8 b(ebruary)30
-b(2012)150 4802 y FB(b)l(y)45 b(Charlie)h(Zender)150
-4935 y(Departmen)l(t)g(of)g(Earth)f(System)g(Science)150
-5068 y(Univ)l(ersit)l(y)i(of)e(California,)i(Irvine)p
-150 5141 3600 17 v eop end
-%%Page: 2 2
-TeXDict begin 2 1 bop 150 2072 a FD(Cop)m(yrigh)m(t)602
-2069 y(c)577 2072 y FA(\015)30 b FD(1995{2012)35 b(Charlie)30
-b(Zender.)150 2451 y(This)g(is)g(the)h(\014rst)e(edition)i(of)g(the)f
-Fz(NCO)g(User's)h(Guide)p FD(,)150 2560 y(and)f(is)g(consisten)m(t)i
-(with)e(v)m(ersion)h(2)g(of)f(`)p Fy(texinfo.tex)p FD('.)150
-2939 y(Published)f(b)m(y)h(Charlie)h(Zender)150 3049
-y(Departmen)m(t)h(of)e(Earth)g(System)g(Science)150 3158
-y(3200)i(Croul)e(Hall)150 3268 y(Univ)m(ersit)m(y)i(of)e(California,)h
-(Irvine)150 3377 y(Irvine,)f(CA)g(92697-3100)35 b(USA)150
-3646 y(P)m(ermission)d(is)f(gran)m(ted)i(to)f(cop)m(y)-8
-b(,)33 b(distribute)e(and/or)h(mo)s(dify)f(this)g(do)s(cumen)m(t)g
-(under)g(the)g(terms)h(of)150 3756 y(the)23 b FC(GNU)h
-FD(F)-8 b(ree)24 b(Do)s(cumen)m(tation)g(License,)h(V)-8
-b(ersion)31 b(1.3)24 b(or)f(an)m(y)h(later)f(v)m(ersion)h(published)d
-(b)m(y)i(the)g(F)-8 b(ree)150 3866 y(Soft)m(w)m(are)27
-b(F)-8 b(oundation;)28 b(with)e(no)g(In)m(v)-5 b(arian)m(t)27
-b(Sections,)h(no)d(F)-8 b(ron)m(t-Co)m(v)m(er)29 b(T)-8
-b(exts,)28 b(and)d(no)h(Bac)m(k-Co)m(v)m(er)150 3975
-y(T)-8 b(exts.)41 b(The)30 b(license)i(is)e(a)m(v)-5
-b(ailable)33 b(online)d(at)i Fy(http://www.gnu.org/copy)o(lef)o(t/fd)o
-(l.ht)o(ml)150 4354 y FD(The)h(original)h(author)f(of)g(this)g(soft)m
-(w)m(are,)i(Charlie)e(Zender,)g(w)m(an)m(ts)h(to)g(impro)m(v)m(e)g(it)f
-(with)g(the)g(help)g(of)150 4463 y(y)m(our)d(suggestions,)i(impro)m(v)m
-(emen)m(ts,)g(bug-rep)s(orts,)d(and)h(patc)m(hes.)150
-4573 y(Charlie)g(Zender)g Fy(<)p FD(surname)f(at)i(uci)f(dot)h(edu)p
-Fy(>)e FD(\(y)m(es,)j(m)m(y)f(surname)e(is)h(zender\))150
-4682 y(Departmen)m(t)i(of)e(Earth)g(System)g(Science)150
-4792 y(3200)i(Croul)e(Hall)150 4902 y(Univ)m(ersit)m(y)i(of)e
-(California,)h(Irvine)150 5011 y(Irvine,)f(CA)g(92697-3100)p
-eop end
-%%Page: 1 3
-TeXDict begin 1 2 bop 150 -116 a FD(F)-8 b(orew)m(ord)3188
-b(1)150 299 y Fx(F)-13 b(orew)l(ord)150 548 y FC(NCO)28
-b FD(is)g(the)g(result)g(of)g(soft)m(w)m(are)h(needs)f(that)g(arose)h
-(while)f(I)g(w)m(ork)m(ed)g(on)g(pro)5 b(jects)28 b(funded)e(b)m(y)i
-FC(NCAR)p FD(,)150 658 y FC(NASA)p FD(,)45 b(and)e FC(ARM)p
-FD(.)h(Thinking)f(they)h(migh)m(t)g(pro)m(v)m(e)h(useful)e(as)g(to)s
-(ols)i(or)f(templates)h(to)f(others,)j(it)150 767 y(is)39
-b(m)m(y)g(pleasure)f(to)i(pro)m(vide)f(them)f(freely)h(to)h(the)f
-(scien)m(ti\014c)h(comm)m(unit)m(y)-8 b(.)67 b(Man)m(y)39
-b(users)f(\(most)i(of)150 877 y(whom)25 b(I)h(ha)m(v)m(e)h(nev)m(er)f
-(met\))g(ha)m(v)m(e)h(encouraged)g(the)f(dev)m(elopmen)m(t)h(of)f
-FC(NCO)p FD(.)g(Thanks)e(esp)s(cially)j(to)f(Jan)150
-986 y(P)m(olc)m(her,)h(Keith)d(Lindsa)m(y)-8 b(,)26 b(Arlindo)e(da)30
-b(Silv)-5 b(a,)26 b(John)d(Sheldon,)i(and)e(William)j(W)-8
-b(eib)s(el)25 b(for)f(stim)m(ulating)150 1096 y(suggestions)35
-b(and)e(corresp)s(ondence.)50 b(Y)-8 b(our)34 b(encouragmen)m(t)h
-(motiv)-5 b(ated)36 b(me)e(to)g(complete)h(the)f Fz(NCO)150
-1205 y(User's)42 b(Guide)p FD(.)75 b(So)41 b(if)h(y)m(ou)g(lik)m(e)h
-FC(NCO)p FD(,)f(send)f(me)h(a)g(note!)76 b(I)30 b(should)41
-b(men)m(tion)h(that)g FC(NCO)g FD(is)g(not)150 1315 y(connected)31
-b(to)g(or)g(o\016cially)h(endorsed)d(b)m(y)i(Unidata,)g
-FC(A)n(CD)p FD(,)g FC(ASP)p FD(,)f FC(CGD)p FD(,)h(or)g(Nik)m(e.)150
-1694 y(Charlie)f(Zender)150 1803 y(Ma)m(y)i(1997)150
-1913 y(Boulder,)f(Colorado)275 2401 y(Ma)5 b(jor)28 b(feature)g(impro)m
-(v)m(emen)m(ts)h(en)m(title)g(me)f(to)g(write)g(another)g(F)-8
-b(orew)m(ord.)40 b(In)27 b(the)h(last)g(\014v)m(e)g(y)m(ears)150
-2511 y(a)g(lot)h(of)e(w)m(ork)h(has)f(b)s(een)g(done)h(to)g(re\014ne)f
-FC(NCO)p FD(.)h FC(NCO)f FD(is)h(no)m(w)f(an)h(op)s(en)f(source)h(pro)5
-b(ject)28 b(and)f(app)s(ears)150 2620 y(to)39 b(b)s(e)f(m)m(uc)m(h)g
-(healthier)h(for)f(it.)65 b(The)37 b(list)i(of)g(illustrious)f
-(institutions)h(that)g(do)f(not)g(endorse)g FC(NCO)150
-2730 y FD(con)m(tin)m(ues)31 b(to)h(gro)m(w,)f(and)f(no)m(w)g(includes)
-g FC(UCI)p FD(.)150 3108 y(Charlie)g(Zender)150 3218
-y(Octob)s(er)g(2000)150 3328 y(Irvine,)g(California)275
-3816 y(The)e(most)i(remark)-5 b(able)30 b(adv)-5 b(ances)30
-b(in)f FC(NCO)g FD(capabilities)i(in)e(the)g(last)i(few)e(y)m(ears)h
-(are)g(due)e(to)i(con-)150 3925 y(tributions)i(from)h(the)g(Op)s(en)e
-(Source)i(comm)m(unit)m(y)-8 b(.)50 b(Esp)s(ecially)33
-b(notew)m(orth)m(y)h(are)f(the)h(con)m(tributions)150
-4035 y(of)d(Henry)f(Buto)m(wsky)g(and)g(Rorik)h(P)m(eterson.)150
-4413 y(Charlie)f(Zender)150 4523 y(Jan)m(uary)g(2003)150
-4633 y(Irvine,)g(California)275 5121 y FC(NCO)43 b FD(w)m(as)i
-(generously)g(supp)s(orted)d(from)i(2004{2008)k(b)m(y)c(US)g(National)i
-(Science)f(F)-8 b(oundation)150 5230 y(\()p FC(NSF)p
-FD(\))3158 b(gran)m(t)150 5340 y(I)s(IS-0431203)32 b(\()p
-Fy(http://www.nsf.gov/awardsea)o(rch)o(/sho)o(wAw)o(ard.)o(do?A)o(war)o
-(dNum)o(ber=)o(043)o(1203)o FD(\).)p eop end
-%%Page: 2 4
-TeXDict begin 2 3 bop 150 -116 a FD(2)2611 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(This)37 b(supp)s(ort)e(allo)m(w)m
-(ed)40 b(me)d(to)h(main)m(tain)h(and)d(extend)i(core)g
-FC(NCO)f FD(co)s(de,)j(and)d(others)g(to)h(adv)-5 b(ance)150
-408 y FC(NCO)31 b FD(in)f(new)h(directions:)42 b(Ga)m(y)m(athri)33
-b(V)-8 b(enkitac)m(halam)33 b(help)s(ed)d(implemen)m(t)i
-FC(MPI)p FD(;)f(Harry)f(Mangalam)150 518 y(impro)m(v)m(ed)i(regression)
-f(testing)h(and)f(b)s(enc)m(hmarking;)g(Daniel)i(W)-8
-b(ang)32 b(dev)m(elop)s(ed)g(the)f(serv)m(er-side)h(ca-)150
-628 y(pabilit)m(y)-8 b(,)42 b FC(SW)-9 b(AMP)p FD(;)39
-b(and)e(Henry)h(Buto)m(wsky)-8 b(,)42 b(a)d(long-time)h(con)m
-(tributor,)h(dev)m(elop)s(ed)d Fy(ncap2)p FD(.)64 b(This)150
-737 y(supp)s(ort)36 b(also)j(led)g FC(NCO)e FD(to)i(debut)e(in)h
-(professional)h(journals)e(and)h(meetings.)64 b(The)38
-b(p)s(ersonal)g(and)150 847 y(professional)31 b(con)m(tacts)h(made)f
-(during)e(this)h(ev)m(olution)i(ha)m(v)m(e)g(b)s(een)d(immensely)i(rew)
-m(arding.)150 1225 y(Charlie)f(Zender)150 1335 y(Marc)m(h)h(2008)150
-1445 y(Grenoble,)g(F)-8 b(rance)p eop end
-%%Page: 3 5
-TeXDict begin 3 4 bop 150 -116 a FD(Summary)3172 b(3)150
-299 y Fx(Summary)150 558 y FD(This)20 b(man)m(ual)h(describ)s(es)f
-FC(NCO)p FD(,)g(whic)m(h)g(stands)g(for)h(netCDF)g(Op)s(erators.)37
-b FC(NCO)20 b FD(is)h(a)g(suite)g(of)f(programs)150 667
-y(kno)m(wn)38 b(as)h Fz(op)s(erators)p FD(.)65 b(Eac)m(h)39
-b(op)s(erator)g(is)f(a)h(standalone,)j(command)c(line)h(program)f
-(executed)h(at)150 777 y(the)g(shell-lev)m(el)i(lik)m(e,)i(e.g.,)g
-Fy(ls)38 b FD(or)h Fy(mkdir)p FD(.)65 b(The)39 b(op)s(erators)g(tak)m
-(e)h(netCDF)g(\014les)f(\(including)g FC(HDF5)150 887
-y FD(\014les)30 b(constructed)g(using)g(the)g(netCDF)h
-FC(API)p FD(\))f(as)g(input,)f(p)s(erform)g(an)h(op)s(eration)g
-(\(e.g.,)i(a)m(v)m(eraging)h(or)150 996 y(h)m(yp)s(erslabbing\),)25
-b(and)f(pro)s(duce)g(a)h(netCDF)g(\014le)g(as)g(output.)39
-b(The)24 b(op)s(erators)h(are)g(primarily)f(designed)150
-1106 y(to)32 b(aid)g(manipulation)f(and)g(analysis)h(of)f(data.)44
-b(The)31 b(examples)h(in)f(this)g(do)s(cumen)m(tation)i(are)e(t)m
-(ypical)150 1215 y(applications)37 b(of)e(the)h(op)s(erators)f(for)g
-(pro)s(cessing)g(climate)i(mo)s(del)f(output.)55 b(This)34
-b(stems)i(from)f(their)150 1325 y(origin,)c(though)f(the)h(op)s
-(erators)f(are)h(as)g(general)g(as)g(netCDF)g(itself.)p
-eop end
-%%Page: 4 6
-TeXDict begin 4 5 bop eop end
-%%Page: 5 7
-TeXDict begin 5 6 bop 150 -116 a FD(Chapter)30 b(1:)41
-b(In)m(tro)s(duction)2592 b(5)150 299 y Fx(1)80 b(In)l(tro)t(duction)
-150 604 y FB(1.1)68 b(Av)-7 b(ailabilit)l(y)150 763 y
-FD(The)27 b(complete)j FC(NCO)d FD(source)i(distribution)e(is)h(curren)
-m(tly)g(distributed)f(as)h(a)g Fz(compressed)g(tar\014le)33
-b FD(from)150 873 y Fy(http://sf.net/projects/n)o(co)57
-b FD(and)62 b(from)h Fy(http://dust.ess.uci.edu/n)o(co/)o(nco.)o(tar.)o
-(gz)p FD(.)150 982 y(The)31 b(compressed)g(tar\014le)h(m)m(ust)f(b)s(e)
-f(uncompressed)g(and)h(un)m(tarred)g(b)s(efore)g(building)f
-FC(NCO)p FD(.)h(Uncom-)150 1092 y(press)g(the)h(\014le)g(with)g(`)p
-Fy(gunzip)d(nco.tar.gz)p FD('.)43 b(Extract)33 b(the)f(source)h
-(\014les)f(from)f(the)h(resulting)g(tar\014le)150 1201
-y(with)c(`)p Fy(tar)i(-xvf)f(nco.tar)p FD('.)38 b FC(GNU)29
-b Fy(tar)e FD(lets)i(y)m(ou)g(p)s(erform)e(b)s(oth)g(op)s(erations)i
-(in)f(one)g(step)h(with)f(`)p Fy(tar)150 1311 y(-xvzf)h(nco.tar.gz)p
-FD('.)275 1470 y(The)43 b(do)s(cumen)m(tation)i(for)e
-FC(NCO)h FD(is)g(called)h(the)f Fz(NCO)f(User's)h(Guide)p
-FD(.)82 b(The)43 b Fz(User's)h(Guide)49 b FD(is)150 1580
-y(a)m(v)-5 b(ailable)46 b(in)e(P)m(ostscript,)k FC(HTML)p
-FD(,)c FC(D)n(VI)p FD(,)g(T)1720 1600 y(E)1770 1580 y(Xinfo,)k(and)43
-b(Info)g(formats.)81 b(These)44 b(formats)g(are)g(in-)150
-1690 y(cluded)34 b(in)h(the)g(source)g(distribution)f(in)h(the)g
-(\014les)f(`)p Fy(nco.ps)p FD(',)h(`)p Fy(nco.html)p
-FD(',)g(`)p Fy(nco.dvi)p FD(',)f(`)p Fy(nco.texi)p FD(',)150
-1799 y(and)j(`)p Fy(nco.info*)p FD(',)h(resp)s(ectiv)m(ely)-8
-b(.)65 b(All)39 b(the)f(do)s(cumen)m(tation)g(descends)f(from)h(a)g
-(single)h(source)f(\014le,)150 1909 y(`)p Fy(nco.texi)p
-FD(')584 1876 y Fw(1)620 1909 y FD(.)51 b(Hence)34 b(the)h(do)s(cumen)m
-(tation)f(in)g(ev)m(ery)g(format)h(is)f(v)m(ery)g(similar.)51
-b(Ho)m(w)m(ev)m(er,)37 b(some)e(of)150 2018 y(the)j(complex)h
-(mathematical)i(expressions)c(needed)h(to)h(describ)s(e)e
-Fy(ncwa)g FD(can)i(only)f(b)s(e)g(displa)m(y)m(ed)g(in)150
-2128 y FC(D)n(VI)p FD(,)31 b(P)m(ostscript,)g(and)f FC(PDF)h
-FD(formats.)275 2287 y(A)25 b(complete)i(list)g(of)e(pap)s(ers)g(and)g
-(publications)g(on/ab)s(out)h FC(NCO)f FD(is)h(a)m(v)-5
-b(ailable)28 b(on)d(the)h FC(NCO)g FD(home-)150 2397
-y(page.)41 b(Most)30 b(of)g(these)g(are)f(freely)h(a)m(v)-5
-b(ailable.)43 b(The)29 b(primary)f(refereed)i(publications)f(are)h(fxm)
-f(ZeM06)150 2507 y(and)34 b(fxm)g(Zen07.)53 b(These)34
-b(con)m(tain)i(cop)m(yrigh)m(t)g(restrictions)f(whic)m(h)f(limit)h
-(their)g(redistribution,)g(but)150 2616 y(they)c(are)f(freely)h(a)m(v)
--5 b(ailable)33 b(in)d(preprin)m(t)f(form)h(from)g(the)h
-FC(NCO)p FD(.)275 2776 y(If)19 b(y)m(ou)i(w)m(an)m(t)g(to)g(quic)m(kly)
-h(see)f(what)f(the)g(latest)i(impro)m(v)m(emen)m(ts)g(in)e
-FC(NCO)g FD(are)h(\(without)g(do)m(wnloading)150 2885
-y(the)j(en)m(tire)g(source)g(distribution\),)h(visit)f(the)f
-FC(NCO)h FD(homepage)g(at)g Fy(http://nco.sf.net)p FD(.)34
-b(The)23 b FC(HTML)150 2995 y FD(v)m(ersion)35 b(of)g(the)g
-Fz(User's)g(Guide)k FD(is)c(also)h(a)m(v)-5 b(ailable)37
-b(online)e(through)f(the)g(W)-8 b(orld)36 b(Wide)f(W)-8
-b(eb)35 b(at)h FC(URL)150 3104 y Fy(http://nco.sf.net/nco.ht)o(ml)p
-FD(.)43 b(T)-8 b(o)34 b(build)e(and)h(use)g FC(NCO)p
-FD(,)g(y)m(ou)g(m)m(ust)h(ha)m(v)m(e)g(netCDF)g(installed.)150
-3214 y(The)c(netCDF)h(homepage)g(is)g Fy(http://www.unidata.ucar)o(.ed)
-o(u/pa)o(ckag)o(es/)o(netc)o(df)p FD(.)275 3373 y(New)d
-FC(NCO)h FD(releases)g(are)g(announced)f(on)g(the)h(netCDF)g(list)h
-(and)e(on)g(the)h Fy(nco-announce)c FD(mailing)150 3483
-y(list)31 b Fy(http://lists.sf.net/mail)o(man/)o(list)o(inf)o(o/nc)o
-(o-an)o(nou)o(nce)p FD(.)150 3706 y FB(1.2)68 b(Op)t(erating)46
-b(systems)f(compatible)i(with)e Fv(NCO)150 3866 y FC(NCO)26
-b FD(has)f(b)s(een)h(successfully)g(p)s(orted)f(and)g(tested)i(and)f
-(is)g(kno)m(wn)f(to)i(w)m(ork)f(on)g(the)g(follo)m(wing)h(32-)h(and)150
-3975 y(64-bit)h(platforms:)40 b FC(IBM)25 b(AIX)j FD(4.x,)i(5.x,)f(F)-8
-b(reeBSD)29 b(4.x,)g FC(GNU)p FD(/Lin)m(ux)g(2.x,)g(Lin)m(uxPPC,)e(Lin)
-m(uxAlpha,)150 4085 y(Lin)m(uxARM,)e(Lin)m(uxSparc64,)i
-FC(SGI)c(IRIX)i FD(5.x)h(and)f(6.x,)i(MacOS)k(X)25 b(10.x,)j
-FC(NEC)d FD(Sup)s(er-UX)f(10.x,)j FC(DEC)150 4194 y(OSF)p
-FD(,)e(Sun)e(SunOS)g(4.1.x,)28 b(Solaris)d(2.x,)i FC(Cra)n(y)21
-b(UNICOS)k FD(8.x{10.x,)k(and)24 b(MS)h(Windo)m(ws95)h(and)e(all)i
-(later)150 4304 y(v)m(ersions.)51 b(If)34 b(y)m(ou)g(p)s(ort)f(the)h
-(co)s(de)g(to)h(a)f(new)f(op)s(erating)h(system,)h(please)g(send)e(me)h
-(a)g(note)g(and)g(an)m(y)150 4414 y(patc)m(hes)d(y)m(ou)g(required.)275
-4573 y(The)40 b(ma)5 b(jor)41 b(prerequisite)h(for)f(installing)h
-FC(NCO)f FD(on)g(a)g(particular)h(platform)f(is)h(the)f(successful,)150
-4683 y(prior)35 b(installation)i(of)f(the)f(netCDF)h(library)f(\(and,)i
-(as)f(of)f(2003,)k(the)c(UDUnits)i(library\).)55 b(Unidata)150
-4792 y(has)31 b(sho)m(wn)g(a)g(commitmen)m(t)i(to)f(main)m(taining)g
-(netCDF)g(and)f(UDUnits)h(on)f(all)h(p)s(opular)e FC(UNIX)i
-FD(plat-)150 4902 y(forms,)43 b(and)e(is)g(mo)m(ving)g(to)m(w)m(ards)h
-(full)f(supp)s(ort)e(for)i(the)g(Microsoft)h(Windo)m(ws)f(op)s(erating)
-h(system)p 150 4979 1200 4 v 199 5047 a Fw(1)301 5078
-y Fu(T)-6 b(o)26 b(pro)r(duce)h(these)f(formats,)i(`)p
-Ft(nco.texi)p Fu(')h(w)n(as)e(simply)g(run)e(through)h(the)g(freely)h
-(a)n(v)l(ailable)g(programs)h Ft(texi2dvi)p Fu(,)275
-5166 y Ft(dvips)p Fu(,)f Ft(texi2html)p Fu(,)i(and)d
-Ft(makeinfo)p Fu(.)37 b(Due)26 b(to)g(a)h(bug)f(in)g(T)2042
-5182 y(E)2085 5166 y(X,)g(the)g(resulting)h(P)n(ostscript)g(\014le,)g
-(`)p Ft(nco.ps)p Fu(',)h(con)n(tains)275 5253 y(the)h(T)-6
-b(able)31 b(of)f(Con)n(ten)n(ts)g(as)h(the)e(\014nal)h(pages.)48
-b(Th)n(us)30 b(if)h(y)n(ou)e(prin)n(t)g(`)p Ft(nco.ps)p
-Fu(',)34 b(remem)n(b)r(er)c(to)g(insert)g(the)g(T)-6
-b(able)30 b(of)275 5340 y(Con)n(ten)n(ts)25 b(after)i(the)e(co)n(v)n
-(er)h(sheet)f(b)r(efore)i(y)n(ou)e(staple)h(the)g(man)n(ual.)p
-eop end
-%%Page: 6 8
-TeXDict begin 6 7 bop 150 -116 a FD(6)2611 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(\()p FC(OS)p FD(\).)g(Giv)m(en)h
-(this,)f(the)f(only)h(di\016cult)m(y)g(in)f(implemen)m(ting)i
-FC(NCO)e FD(on)g(a)h(particular)g(platform)g(is)g(stan-)150
-408 y(dardization)k(of)g(v)-5 b(arious)34 b(C)o(-language)i(API)d
-(system)h(calls.)51 b FC(NCO)34 b FD(co)s(de)f(is)h(tested)h(for)e
-FC(ANSI)h FD(compli-)150 518 y(ance)d(b)m(y)g(compiling)g(with)g(C)f
-(compilers)h(including)f(those)h(from)f FC(GNU)h FD(\(`)p
-Fy(gcc)f(-std=c99)e(-pedantic)150 628 y(-D_BSD_SOURCE)f
-(-D_POSIX_SOURCE)p FD(')59 b(-W)-8 b(all\))1850 595 y
-Fw(2)1890 628 y FD(,)71 b(Comeau)64 b(Computing)e(\(`)p
-Fy(como)30 b(--c99)p FD('\),)71 b(Cra)m(y)150 737 y(\(`)p
-Fy(cc)p FD('\),)25 b FC(HP)p FD(/Compaq/)p FC(DEC)d FD(\(`)p
-Fy(cc)p FD('\),)j FC(IBM)d FD(\(`)p Fy(xlc)30 b(-c)g(-qlanglvl=extc99)p
-FD('\),)20 b(In)m(tel)j(\(`)p Fy(icc)30 b(-std=c99)p
-FD('\),)150 847 y FC(NEC)j FD(\(`)p Fy(cc)p FD('\),)j(P)m(athScale)f
-(\(QLogic\))h(\(`)p Fy(pathcc)29 b(-std=c99)p FD('\),)k
-FC(PGI)h FD(\(`)p Fy(pgcc)c(-c9x)p FD('\),)k FC(SGI)g
-FD(\(`)p Fy(cc)c(-c99)p FD('\),)150 956 y(and)57 b(Sun)f(\(`)p
-Fy(cc)p FD('\).)123 b FC(NCO)58 b FD(\(all)h(commands)e(and)g(the)h
-Fy(libnco)e FD(library\))h(and)h(the)f(C)p Fy(++)g FD(in)m(ter-)150
-1066 y(face)f(to)h(netCDF)f(\(called)h Fy(libnco_c++)p
-FD(\))c(comply)j(with)f(the)h FC(ISO)f FD(C)p Fy(++)f
-FD(standards)h(as)h(imple-)150 1176 y(men)m(ted)23 b(b)m(y)f(Comeau)h
-(Computing)e(\(`)p Fy(como)p FD('\),)k(Cra)m(y)d(\(`)p
-Fy(CC)p FD('\),)j FC(GNU)e FD(\(`)p Fy(g++)30 b(-Wall)p
-FD('\),)24 b FC(HP)p FD(/Compaq/)p FC(DEC)150 1285 y
-FD(\(`)p Fy(cxx)p FD('\),)66 b FC(IBM)58 b FD(\(`)p Fy(xlC)p
-FD('\),)65 b(In)m(tel)59 b(\(`)p Fy(icc)p FD('\),)66
-b FC(NEC)58 b FD(\(`)p Fy(c++)p FD('\),)65 b(P)m(athScale)60
-b(\(Qlogic\))h(\(`)p Fy(pathCC)p FD('\),)j FC(PGI)150
-1395 y FD(\(`)p Fy(pgCC)p FD('\),)40 b FC(SGI)d FD(\(`)p
-Fy(CC)31 b(-LANG:std)p FD('\),)37 b(and)g(Sun)f(\(`)p
-Fy(CC)31 b(-LANG:std)p FD('\).)60 b(See)38 b(`)p Fy(nco/bld/Makefile)p
-FD(')c(and)150 1504 y(`)p Fy(nco/src/nco_c++/Makefile.)o(old)p
-FD(')24 b(for)30 b(more)h(details)g(and)f(exact)i(settings.)275
-1675 y(Un)m(til)f(recen)m(tly)h(\(and)e(not)h(ev)m(en)g(y)m(et\),)h
-FC(ANSI)p FD(-complian)m(t)h(has)d(mean)m(t)i(compliance)f(with)g(the)f
-(1989)150 1785 y FC(ISO)22 b FD(C-standard,)h(usually)g(called)g(C89)g
-(\(with)g(minor)e(revisions)i(made)f(in)h(1994)h(and)d(1995\).)41
-b(C89)23 b(lac)m(ks)150 1894 y(v)-5 b(ariable-size)31
-b(arra)m(ys,)f(restricted)g(p)s(oin)m(ters,)f(some)h(useful)e
-Fy(printf)f FD(formats,)j(and)e(man)m(y)i(mathemat-)150
-2004 y(ical)k(sp)s(ecial)g(functions.)48 b(These)33 b(are)g(v)-5
-b(aluable)33 b(features)h(of)f(C99,)h(the)f(1999)i FC(ISO)e
-FD(C-standard.)47 b FC(NCO)150 2113 y FD(is)33 b(C99-complian)m(t)j
-(where)d(p)s(ossible)f(and)h(C89-complian)m(t)j(where)d(necessary)-8
-b(.)50 b(Certain)33 b(branc)m(hes)g(in)150 2223 y(the)g(co)s(de)g(are)f
-(required)g(to)h(satisfy)g(the)g(nativ)m(e)h FC(SGI)f
-FD(and)f(SunOS)e(C)g(compilers,)k(whic)m(h)e(are)h(strictly)150
-2333 y FC(ANSI)25 b FD(C89)g(complian)m(t,)j(and)c(cannot)h(b)s
-(ene\014t)f(from)g(C99)i(features.)39 b(Ho)m(w)m(ev)m(er,)28
-b(C99)d(features)g(are)g(fully)150 2442 y(supp)s(orted)h(b)m(y)h(mo)s
-(dern)f FC(AIX)p FD(,)i FC(GNU)p FD(,)h(In)m(tel,)g FC(NEC)p
-FD(,)e(Solaris,)i(and)d FC(UNICOS)i FD(compilers.)40
-b FC(NCO)27 b FD(requires)150 2552 y(a)k(C99-complian)m(t)h(compiler)f
-(as)g(of)f FC(NCO)h FD(v)m(ersion)f(2.9.8)r(,)h(released)g(in)f
-(August,)g(2004.)275 2722 y(The)40 b(most)h(time-in)m(tensiv)m(e)j(p)s
-(ortion)c(of)h FC(NCO)g FD(execution)h(is)f(sp)s(en)m(t)g(in)f
-(arithmetic)i(op)s(erations,)150 2832 y(e.g.,)g(m)m(ultiplication,)h(a)
-m(v)m(eraging,)g(subtraction.)65 b(These)38 b(op)s(erations)h(w)m(ere)g
-(p)s(erformed)e(in)h(F)-8 b(ortran)150 2942 y(b)m(y)36
-b(default)h(un)m(til)f(August,)i(1999.)60 b(This)35 b(w)m(as)i(a)g
-(design)f(decision)h(based)e(on)i(the)f(relativ)m(e)i(sp)s(eed)e(of)150
-3051 y(F)-8 b(ortran-based)23 b(ob)5 b(ject)23 b(co)s(de)f(vs.)g
-(C-based)g(ob)5 b(ject)23 b(co)s(de)g(in)e(late)j(1994.)40
-b(C)30 b(compiler)22 b(v)m(ectorization)k(ca-)150 3161
-y(pabilities)j(ha)m(v)m(e)g(dramatically)g(impro)m(v)m(ed)f(since)g
-(1994.)42 b(W)-8 b(e)29 b(ha)m(v)m(e)g(accordingly)f(replaced)h(all)f
-(F)-8 b(ortran)150 3270 y(subroutines)23 b(with)h(C)30
-b(functions.)38 b(This)24 b(greatly)i(simpli\014es)e(the)g(task)h(of)g
-(building)e FC(NCO)h FD(on)h(nominally)150 3380 y(unsupp)s(orted)33
-b(platforms.)58 b(As)36 b(of)g(August)g(1999,)j FC(NCO)d
-FD(built)f(en)m(tirely)j(in)30 b(C)35 b(b)m(y)h(default.)58
-b(This)35 b(al-)150 3490 y(lo)m(w)m(ed)c FC(NCO)e FD(to)h(compile)g(on)
-f(an)m(y)h(mac)m(hine)g(with)f(an)h FC(ANSI)g FD(C)g(compiler.)41
-b(In)28 b(August)h(2004,)j(the)e(\014rst)150 3599 y(C99)37
-b(feature,)i(the)e Fy(restrict)d FD(t)m(yp)s(e)j(quali\014er,)h(en)m
-(tered)f FC(NCO)f FD(in)h(v)m(ersion)g(2.9.8.)61 b(C)30
-b(compilers)37 b(can)150 3709 y(obtain)25 b(b)s(etter)f(p)s(erformance)
-g(with)g(C99)h(restricted)g(p)s(oin)m(ters)f(since)g(they)h(inform)f
-(the)g(compiler)h(when)150 3818 y(it)30 b(ma)m(y)g(mak)m(e)h(F)-8
-b(ortran-lik)m(e)32 b(assumptions)d(regarding)h(p)s(oin)m(ter)f(con)m
-(ten)m(ts)j(alteration.)42 b(Subsequen)m(tly)-8 b(,)150
-3928 y FC(NCO)30 b FD(requires)g(a)h(C99)g(compiler)g(to)g(build)e
-(correctly)2029 3895 y Fw(3)2068 3928 y FD(.)275 4099
-y(In)i(Jan)m(uary)h(2009,)k FC(NCO)c FD(v)m(ersion)h(3.9.6)h(w)m(as)f
-(the)g(\014rst)e(to)j(link)e(to)h(the)g(GNU)g(Scien)m(ti\014c)h
-(Library)150 4208 y(\()p FC(GSL)p FD(\).)43 b FC(GSL)f
-FD(m)m(ust)g(b)s(e)f(v)m(ersion)31 b(1.4)43 b(or)f(later.)77
-b FC(NCO)p FD(,)42 b(in)g(particular)g Fy(ncap2)p FD(,)i(uses)d(the)h
-FC(GSL)g FD(sp)s(e-)150 4318 y(cial)34 b(function)e(library)h(to)g(ev)
--5 b(aluate)35 b(geoscience-relev)-5 b(an)m(t)37 b(mathematics)d(suc)m
-(h)e(as)h(Bessel)h(functions,)150 4427 y(Legendre)j(p)s(olynomials,)i
-(and)e(incomplete)h(gamma)g(functions)f(\(see)h(Section)g(4.1.19)h
-([GSL)e(sp)s(ecial)150 4537 y(functions],)30 b(page)i(96\).)275
-4708 y(In)40 b(June)g(2005,)45 b FC(NCO)c FD(v)m(ersion)g(3.0.1)i(b)s
-(egan)e(to)g(tak)m(e)i(adv)-5 b(an)m(tage)43 b(of)e(C99)g(mathematical)
-i(sp)s(e-)150 4817 y(cial)36 b(functions.)55 b(These)35
-b(include)g(the)g(standarized)g(gamma)h(function)f(\(called)i
-Fy(tgamma\(\))c FD(for)i(\\true)p 150 4963 1200 4 v 199
-5031 a Fw(2)304 5063 y Fu(The)c(`)p Ft(_BSD_SOURCE)p
-Fu(')i(tok)n(en)c(is)i(required)e(on)h(some)h(Lin)n(ux)e(platforms)j
-(where)e Ft(gcc)h Fu(dislik)n(es)f(the)g(net)n(w)n(ork)g(header)275
-5150 y(\014les)c(lik)n(e)f(`)p Ft(netinet/in.h)p Fu('\).)199
-5221 y Fw(3)275 5253 y Fs(NCO)34 b Fu(ma)n(y)h(still)h(build)f(with)h
-(an)f Fs(ANSI)g Fu(or)h Fs(ISO)f Fu(C89)i(or)e(C94/95-complian)n(t)j
-(compiler)e(if)g(the)f(C)26 b(pre-pro)r(cessor)275 5340
-y(unde\014nes)e(the)h Ft(restrict)j Fu(t)n(yp)r(e)d(quali\014er,)h
-(e.g.,)h(b)n(y)d(in)n(v)n(oking)i(the)f(compiler)i(with)e(`)p
-Ft(-Drestrict='')p Fu('.)p eop end
-%%Page: 7 9
-TeXDict begin 7 8 bop 150 -116 a FD(Chapter)30 b(1:)41
-b(In)m(tro)s(duction)2592 b(7)150 299 y(gamma"\).)60
-b FC(NCO)37 b FD(automagically)i(tak)m(es)f(adv)-5 b(an)m(tage)38
-b(of)f(some)g FC(GNU)g FD(Compiler)f(Collection)i(\()p
-FC(GCC)p FD(\))150 408 y(extensions)31 b(to)g FC(ANSI)g
-FD(C.)275 574 y(As)f(of)g(July)f(2000)j(and)e FC(NCO)f
-FD(v)m(ersion)i(1.2)q(,)g FC(NCO)e FD(no)h(longer)h(p)s(erforms)e
-(arithmetic)i(op)s(erations)f(in)150 684 y(F)-8 b(ortran.)41
-b(W)-8 b(e)30 b(decided)f(to)g(sacri\014ce)h(executable)g(sp)s(eed)e
-(for)h(co)s(de)g(main)m(tainabilit)m(y)-8 b(.)43 b(Since)28
-b(no)h(ob)5 b(jec-)150 794 y(tiv)m(e)32 b(statistics)h(w)m(ere)f(ev)m
-(er)g(p)s(erformed)d(to)j(quan)m(tify)g(the)f(di\013erence)g(in)g(sp)s
-(eed)f(b)s(et)m(w)m(een)i(the)f(F)-8 b(ortran)150 903
-y(and)39 b(C)30 b(co)s(de,)43 b(the)d(p)s(erformance)f(p)s(enalt)m(y)h
-(incurred)f(b)m(y)g(this)h(decision)g(is)g(unkno)m(wn.)68
-b(Supp)s(orting)150 1013 y(F)-8 b(ortran)30 b(in)m(v)m(olv)m(es)h(main)
-m(taining)f(t)m(w)m(o)g(sets)g(of)f(routines)g(for)g(ev)m(ery)h
-(arithmetic)g(op)s(eration.)41 b(The)28 b Fy(USE_)150
-1122 y(FORTRAN_ARITHMETIC)19 b FD(\015ag)24 b(is)f(still)i(retained)f
-(in)g(the)f(`)p Fy(Makefile)p FD('.)37 b(The)23 b(\014le)h(con)m
-(taining)h(the)f(F)-8 b(ortran)150 1232 y(co)s(de,)27
-b(`)p Fy(nco_fortran.F)p FD(',)d(has)h(b)s(een)g(deprecated)h(but)e(a)i
-(v)m(olun)m(teer)h(\(Dr.)k(F)-8 b(rank)m(enstein)q(?\))39
-b(could)26 b(res-)150 1342 y(urrect)k(it.)41 b(If)30
-b(y)m(ou)h(w)m(ould)f(lik)m(e)i(to)f(v)m(olun)m(teer)h(to)f(main)m
-(tain)g(`)p Fy(nco_fortran.F)p FD(')c(please)32 b(con)m(tact)g(me.)150
-1554 y Fv(1.2.1)63 b(Compiling)42 b FD(NCO)e Fv(for)i(Microsoft)h
-(Windo)m(ws)e FD(OS)150 1701 y FC(NCO)c FD(has)f(b)s(een)h
-(successfully)g(p)s(orted)f(and)g(tested)i(on)f(most)g(Microsoft)i
-(Windo)m(ws)e(op)s(erating)g(sys-)150 1810 y(tems)31
-b(including:)40 b(95/98/NT/2000/XP/Vist)q(a.)47 b(The)30
-b(switc)m(hes)h(necessary)g(to)g(accomplish)g(this)g(are)150
-1920 y(included)g(in)h(the)g(standard)f(distribution)g(of)i
-FC(NCO)p FD(.)e(Using)i(the)f(freely)g(a)m(v)-5 b(ailable)34
-b(Cygwin)e(\(formerly)150 2030 y(gn)m(u-win32\))d(dev)m(elopmen)m(t)h
-(en)m(vironmen)m(t)1638 1997 y Fw(4)1676 2030 y FD(,)f(the)g
-(compilation)h(pro)s(cess)e(is)g(v)m(ery)h(similar)g(to)g(installing)
-150 2139 y FC(NCO)e FD(on)f(a)h FC(UNIX)h FD(system.)40
-b(Set)26 b(the)h Fy(PVM_ARCH)e FD(prepro)s(cessor)h(tok)m(en)i(to)f
-Fy(WIN32)p FD(.)38 b(Note)28 b(that)g(de\014ning)150
-2249 y Fy(WIN32)36 b FD(has)g(the)h(side)g(e\013ect)i(of)e(disabling)g
-(In)m(ternet)g(features)g(of)h FC(NCO)e FD(\(see)i(b)s(elo)m(w\).)61
-b FC(NCO)37 b FD(should)150 2358 y(no)m(w)30 b(build)g(lik)m(e)h(it)g
-(do)s(es)f(on)h FC(UNIX)p FD(.)275 2524 y(The)24 b(least)i(p)s(ortable)
-f(section)h(of)f(the)h(co)s(de)f(is)g(the)g(use)g(of)g(standard)f
-FC(UNIX)h FD(and)g(In)m(ternet)g(proto)s(cols)150 2634
-y(\(e.g.,)47 b Fy(ftp)p FD(,)e Fy(rcp)p FD(,)g Fy(scp)p
-FD(,)g Fy(sftp)p FD(,)f Fy(getuid)p FD(,)g Fy(gethostname)p
-FD(,)f(and)e(header)i(\014les)f(`)p Fy(<arpa/nameser.h>)p
-FD(')150 2743 y(and)c(`)p Fy(<resolv.h>)p FD('\).)64
-b(F)-8 b(ortunately)g(,)42 b(these)d FC(UNIX)p FD(-y)h(calls)g(are)f
-(only)g(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(single)g FC(NCO)150
-2853 y FD(subroutine)25 b(whic)m(h)g(is)h(resp)s(onsible)e(for)i
-(retrieving)g(\014les)g(stored)g(on)f(remote)i(systems)f(\(see)g
-(Section)h(3.7)150 2963 y([Remote)i(storage],)i(page)e(28\).)41
-b(In)27 b(order)h(to)g(supp)s(ort)e FC(NCO)i FD(on)g(the)g(Microsoft)i
-(Windo)m(ws)e(platforms,)150 3072 y(this)c(single)g(feature)g(w)m(as)g
-(disabled)f(\(on)h(Windo)m(ws)g FC(OS)f FD(only\).)39
-b(This)23 b(w)m(as)h(required)f(b)m(y)g(Cygwin)30 b(18.x)q(|)150
-3182 y(new)m(er)25 b(v)m(ersions)h(of)g(Cygwin)e(ma)m(y)i(supp)s(ort)e
-(these)i(proto)s(cols)g(\(let)h(me)e(kno)m(w)g(if)h(this)f(is)g(the)h
-(case\).)40 b(The)150 3291 y FC(NCO)j FD(op)s(erators)h(should)f(b)s
-(eha)m(v)m(e)h(iden)m(tically)h(on)f(Windo)m(ws)f(and)g
-FC(UNIX)i FD(platforms)e(in)g(all)i(other)150 3401 y(resp)s(ects.)150
-3653 y FB(1.3)68 b(Sym)l(b)t(olic)45 b(Links)150 3812
-y FC(NCO)34 b FD(relies)g(on)g(a)g(common)g(set)g(of)g(underlying)f
-(algorithms.)52 b(T)-8 b(o)34 b(minimize)h(duplication)f(of)g(source)
-150 3922 y(co)s(de,)27 b(m)m(ultiple)g(op)s(erators)e(sometimes)i
-(share)f(the)g(same)g(underlying)e(source.)40 b(This)24
-b(is)i(accomplished)150 4031 y(b)m(y)42 b(sym)m(b)s(olic)h(links)g
-(from)f(a)g(single)i(underlying)d(executable)j(program)e(to)i(one)e(or)
-h(more)f(in)m(v)m(ok)m(ed)150 4141 y(executable)j(names.)79
-b(F)-8 b(or)43 b(example,)48 b Fy(ncea)42 b FD(and)g
-Fy(ncrcat)g FD(are)h(sym)m(b)s(olically)i(link)m(ed)e(to)h(the)f
-Fy(ncra)150 4251 y FD(executable.)j(The)31 b Fy(ncra)f
-FD(executable)j(b)s(eha)m(v)m(es)g(sligh)m(tly)f(di\013eren)m(tly)h
-(based)e(on)g(its)h(in)m(v)m(o)s(cation)i(name)150 4360
-y(\(i.e.,)j(`)p Fy(argv[0])p FD('\),)d(whic)m(h)g(can)g(b)s(e)f
-Fy(ncea)p FD(,)h Fy(ncra)p FD(,)g(or)g Fy(ncrcat)p FD(.)50
-b(Logically)-8 b(,)38 b(these)d(are)f(three)g(di\013eren)m(t)150
-4470 y(op)s(erators)d(that)f(happ)s(en)f(to)i(share)f(the)h(same)g
-(executable.)275 4636 y(F)-8 b(or)27 b(historical)g(reasons,)h(and)e
-(to)h(b)s(e)e(more)i(user)e(friendly)-8 b(,)27 b(m)m(ultiple)h(synon)m
-(yms)d(\(or)i(pseudon)m(yms\))150 4745 y(ma)m(y)39 b(refer)f(to)h(the)f
-(same)h(op)s(erator)f(in)m(v)m(ok)m(ed)i(with)e(di\013eren)m(t)g(switc)
-m(hes.)65 b(F)-8 b(or)39 b(example,)i Fy(ncdiff)c FD(is)150
-4855 y(the)31 b(same)f(as)h Fy(ncbo)e FD(and)h Fy(ncpack)e
-FD(is)j(the)f(same)h(as)f Fy(ncpdq)p FD(.)40 b(W)-8 b(e)31
-b(implemen)m(t)g(the)g(sym)m(b)s(olic)f(links)h(and)p
-150 4979 1200 4 v 199 5047 a Fw(4)275 5078 y Fu(The)25
-b(Cygwin)i(pac)n(k)l(age)f(is)g(a)n(v)l(ailable)h(from)275
-5166 y Ft(http://sourceware.redhat.com/cy)q(gwin)275
-5253 y Fu(Curren)n(tly)-6 b(,)24 b(Cygwin)i(20.x)g(comes)f(with)g(the)f
-Fs(GNU)h Fu(C/C)p Ft(++)h Fu(compilers)g(\()p Ft(gcc)p
-Fu(,)g Ft(g++)p Fu(.)35 b(These)25 b Fs(GNU)g Fu(compilers)h(ma)n(y)e
-(b)r(e)275 5340 y(used)h(to)h(build)f(the)g(netCDF)h(distribution)g
-(itself.)p eop end
-%%Page: 8 10
-TeXDict begin 8 9 bop 150 -116 a FD(8)2611 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(synon)m(yms)g(b)m(y)g(the)g
-(executing)i(the)f(follo)m(wing)g FC(UNIX)g FD(commands)f(in)g(the)h
-(directory)g(where)f(the)g FC(NCO)150 408 y FD(executables)i(are)f
-(installed.)390 589 y Fy(ln)47 b(-s)g(-f)h(ncbo)e(ncdiff)189
-b(#)48 b(ncbo)f(--op_typ='+')390 699 y(ln)g(-s)g(-f)h(ncra)e(ncecat)189
-b(#)48 b(ncra)f(--pseudonym='ncecat')390 809 y(ln)g(-s)g(-f)h(ncra)e
-(ncrcat)189 b(#)48 b(ncra)f(--pseudonym='ncrcat')390
-918 y(ln)g(-s)g(-f)h(ncbo)e(ncadd)237 b(#)48 b(ncbo)f(--op_typ='+')390
-1028 y(ln)g(-s)g(-f)h(ncbo)e(ncsubtract)f(#)j(ncbo)e(--op_typ='-')390
-1137 y(ln)h(-s)g(-f)h(ncbo)e(ncmultiply)f(#)j(ncbo)e(--op_typ='*')390
-1247 y(ln)h(-s)g(-f)h(ncbo)e(ncdivide)141 b(#)48 b(ncbo)e(--op_typ='/')
-390 1357 y(ln)h(-s)g(-f)h(ncpdq)e(ncpack)189 b(#)48 b(ncpdq)390
-1466 y(ln)f(-s)g(-f)h(ncpdq)e(ncunpack)93 b(#)48 b(ncpdq)e(--unpack)390
-1576 y(#)h(NB:)g(Cygwin)f(executable)f(\(and)i(link\))f(names)h(have)f
-(an)i('.exe')e(suffix,)g(e.g.,)390 1685 y(ln)h(-s)g(-f)h(ncbo.exe)d
-(ncdiff.exe)390 1795 y(...)275 1976 y FD(The)32 b(imputed)h(command)g
-(called)i(b)m(y)e(the)h(link)f(is)h(giv)m(en)g(after)g(the)g(commen)m
-(t.)51 b(As)33 b(can)h(b)s(e)f(seen,)150 2086 y(some)39
-b(these)h(links)e(impute)h(the)g(passing)g(of)g(a)g(command)g(line)g
-(argumen)m(t)g(to)h(further)e(mo)s(dify)g(the)150 2195
-y(b)s(eha)m(vior)g(of)g(the)g(underlying)e(executable.)65
-b(F)-8 b(or)38 b(example,)j Fy(ncdivide)35 b FD(is)j(a)g(pseudon)m(ym)f
-(for)g Fy(ncbo)150 2305 y(--op_typ='/')p FD(.)150 2602
-y FB(1.4)68 b(Libraries)150 2761 y FD(Lik)m(e)34 b(all)g(executables,)i
-(the)d FC(NCO)g FD(op)s(erators)g(can)h(b)s(e)e(built)h(using)g
-(dynamic)g(linking.)49 b(This)32 b(reduces)150 2871 y(the)g(size)h(of)f
-(the)g(executable)h(and)e(can)h(result)g(in)g(signi\014can)m(t)h(p)s
-(erformance)e(enhancemen)m(ts)h(on)g(m)m(ul-)150 2981
-y(tiuser)k(systems.)59 b(Unfortunately)-8 b(,)39 b(if)d(y)m(our)h
-(library)f(searc)m(h)h(path)f(\(usually)g(the)h Fy(LD_LIBRARY_PATH)150
-3090 y FD(en)m(vironmen)m(t)f(v)-5 b(ariable\))36 b(is)f(not)g(set)h
-(correctly)-8 b(,)38 b(or)d(if)g(the)g(system)h(libraries)f(ha)m(v)m(e)
-h(b)s(een)e(mo)m(v)m(ed,)k(re-)150 3200 y(named,)j(or)e(deleted)g
-(since)g FC(NCO)g FD(w)m(as)g(installed,)j(it)e(is)e(p)s(ossible)h
-FC(NCO)f FD(op)s(erators)h(will)h(fail)f(with)g(a)150
-3309 y(message)e(that)g(they)g(cannot)f(\014nd)f(a)i(dynamically)g
-(loaded)f(\(ak)-5 b(a)38 b Fz(shared)d(ob)5 b(ject)39
-b FD(or)d(`)p Fy(.so)p FD('\))h(library)-8 b(.)150 3419
-y(This)35 b(will)i(pro)s(duce)e(a)h(distinctiv)m(e)i(error)d(message,)k
-(suc)m(h)d(as)g(`)p Fy(ld.so.1:)28 b(/usr/local/bin/ncea:)150
-3529 y(fatal:)h(libsunmath.so.1:)d(can't)j(open)g(file:)g(errno=2)p
-FD('.)48 b(If)33 b(y)m(ou)h(receiv)m(ed)h(an)f(error)f(message)150
-3638 y(lik)m(e)h(this,)g(ask)g(y)m(our)f(system)g(administrator)g(to)h
-(diagnose)g(whether)f(the)g(library)g(is)g(truly)g(missing)3688
-3605 y Fw(5)3725 3638 y FD(,)150 3748 y(or)f(whether)f(y)m(ou)h(simply)
-f(need)h(to)g(alter)h(y)m(our)f(library)f(searc)m(h)i(path.)44
-b(As)32 b(a)g(\014nal)g(remedy)-8 b(,)32 b(y)m(ou)g(ma)m(y)150
-3857 y(re-compile)g(and)d(install)j FC(NCO)e FD(with)g(all)h(op)s
-(erators)g(statically)i(link)m(ed.)150 4155 y FB(1.5)68
-b(netCDF2/3/4)46 b(and)f(HDF4/5)g(Supp)t(ort)150 4314
-y FD(netCDF)f(v)m(ersion)31 b(2)44 b(w)m(as)g(released)h(in)e(1993.)82
-b FC(NCO)44 b FD(\(sp)s(eci\014cally)g Fy(ncks)p FD(\))f(b)s(egan)h(so)
-s(on)f(after)h(this)150 4424 y(in)c(1994.)74 b(netCDF)31
-b(3.0)42 b(w)m(as)f(released)g(in)g(1996,)k(and)40 b(w)m(e)h(w)m(ere)h
-(eager)g(to)f(reap)g(the)g(p)s(erformance)150 4533 y(adv)-5
-b(an)m(tages)39 b(of)f(the)g(new)m(er)f(netCDF)h(implemen)m(tation.)64
-b(One)37 b(netCDF3)i(in)m(terface)g(call)g(\()p Fy(nc_inq_)150
-4643 y(libvers)p FD(\))32 b(w)m(as)j(added)e(to)i FC(NCO)f
-FD(in)g(Jan)m(uary)-8 b(,)35 b(1998,)i(to)e(aid)g(in)e(main)m(tainance)
-j(and)e(debugging.)52 b(In)150 4752 y(Marc)m(h,)42 b(2001,)h(the)d
-(\014nal)e(con)m(v)m(ersion)j(of)e FC(NCO)g FD(to)h(netCDF3)g(w)m(as)f
-(completed)h(\(coinciden)m(tally)i(on)150 4862 y(the)37
-b(same)g(da)m(y)f(netCDF)31 b(3.5)38 b(w)m(as)f(released\).)60
-b FC(NCO)36 b FD(v)m(ersions)31 b(2.0)37 b(and)f(higher)g(are)h(built)g
-(with)f(the)150 4971 y Fy(-DNO_NETCDF_2)27 b FD(\015ag)j(to)i(ensure)d
-(no)h(netCDF2)i(in)m(terface)g(calls)f(are)g(used.)p
-150 5154 1200 4 v 199 5221 a Fw(5)275 5253 y Fu(The)22
-b Ft(ldd)h Fu(command,)h(if)f(it)g(is)g(a)n(v)l(ailable)g(on)g(y)n(our)
-e(system,)j(will)g(tell)f(y)n(ou)f(where)g(the)h(executable)f(is)h(lo)r
-(oking)h(for)f(eac)n(h)275 5340 y(dynamically)i(loaded)i(library)-6
-b(.)34 b(Use,)26 b(e.g.,)h Ft(ldd)f(`which)h(ncea`)p
-Fu(.)p eop end
-%%Page: 9 11
-TeXDict begin 9 10 bop 150 -116 a FD(Chapter)30 b(1:)41
-b(In)m(tro)s(duction)2592 b(9)275 299 y(Ho)m(w)m(ev)m(er,)57
-b(the)51 b(abilit)m(y)g(to)g(compile)h FC(NCO)e FD(with)g(only)g
-(netCDF2)i(calls)f(is)f(w)m(orth)h(main)m(tain-)150 408
-y(ing)i(b)s(ecause)g FC(HDF)g FD(v)m(ersion)31 b(4)1270
-375 y Fw(6)1360 408 y FD(\(a)m(v)-5 b(ailable)55 b(from)e(HDF)h(\()p
-Fy(http://hdf.ncsa.uiuc.edu)o FD(\)\))48 b(sup-)150 518
-y(p)s(orts)26 b(only)h(the)g(netCDF2)g(library)g(calls)h(\(see)f
-Fy(http://hdf.ncsa.uiuc.edu/)o(UG41)o(r3_)o(html)o(/SDS)o(_)150
-628 y(SD.fm12.html#47784)p FD(\).)87 b(Note)49 b(that)f(there)g(are)f
-(m)m(ultiple)i(v)m(ersions)e(of)h FC(HDF)p FD(.)g(Curren)m(tly)f
-FC(HDF)150 737 y FD(v)m(ersion)31 b(4.x)26 b(supp)s(orts)d(netCDF2)k
-(and)e(th)m(us)g FC(NCO)g FD(v)m(ersion)31 b(1.2.x)q(.)39
-b(If)25 b FC(NCO)g FD(v)m(ersion)31 b(1.2.x)c(\(or)f(earlier\))150
-847 y(is)37 b(built)g(with)g(only)g(netCDF2)h(calls)g(then)f(all)h
-FC(NCO)e FD(op)s(erators)i(should)e(w)m(ork)h(with)f
-FC(HDF4)i FD(\014les)f(as)150 956 y(w)m(ell)f(as)g(netCDF)g(\014les)964
-923 y Fw(7)1001 956 y FD(.)55 b(The)35 b(prepro)s(cessor)g(tok)m(en)h
-Fy(NETCDF2_ONLY)c FD(exists)k(in)f FC(NCO)g FD(v)m(ersion)c(1.2.x)150
-1066 y(to)f(eliminate)i(all)e(netCDF3)h(calls.)42 b(Only)29
-b(v)m(ersions)h(of)g FC(NCO)f FD(n)m(um)m(b)s(ered)f(1.2.x)j(and)f
-(earlier)g(ha)m(v)m(e)h(this)150 1176 y(capabilit)m(y)-8
-b(.)45 b(The)30 b FC(NCO)g FD(1.2.x)i(branc)m(h)f(will)g(b)s(e)f(main)m
-(tained)i(with)f(bug\014xes)f(only)h(\(no)g(new)f(features\))150
-1285 y(un)m(til)h FC(HDF)h FD(b)s(egins)e(to)i(fully)e(supp)s(ort)f
-(the)j(netCDF3)f(in)m(terface)i(\(whic)m(h)e(is)g(emplo)m(y)m(ed)h(b)m
-(y)f FC(NCO)f FD(2.x\).)150 1395 y(If,)j(at)g(compilation)h(time,)g
-Fy(NETCDF2_ONLY)29 b FD(is)j(de\014ned,)g(then)g FC(NCO)g
-FD(v)m(ersion)f(1.2.x)j(will)f(not)f(use)h(an)m(y)150
-1504 y(netCDF3)38 b(calls)h(and,)f(if)g(link)m(ed)f(prop)s(erly)-8
-b(,)39 b(the)e(resulting)g FC(NCO)g FD(op)s(erators)h(will)f(w)m(ork)h
-(with)f FC(HDF4)150 1614 y FD(\014les.)50 b(The)33 b(`)p
-Fy(Makefile)p FD(')f(supplied)h(with)g FC(NCO)d FD(1.2.x)35
-b(is)e(written)h(to)g(simplify)g(building)e(in)i(this)f
-FC(HDF)150 1724 y FD(capabilit)m(y)-8 b(.)48 b(When)32
-b FC(NCO)g FD(is)g(built)g(with)f Fy(make)e(HDF4=Y)p
-FD(,)i(the)i(`)p Fy(Makefile)p FD(')d(sets)i(all)h(required)f(prepro-)
-150 1833 y(cessor)e(\015ags)f(and)g(library)f(links)h(to)h(build)e
-(with)h(the)g FC(HDF4)h FD(libraries)f(\(whic)m(h)g(are)h(assumed)e(to)
-i(reside)150 1943 y(under)f Fy(/usr/local/hdf4)p FD(,)d(edit)31
-b(the)g(`)p Fy(Makefile)p FD(')d(to)j(suit)g(y)m(our)f(installation\).)
-275 2144 y FC(HDF)45 b FD(v)m(ersion)30 b(5)45 b(b)s(ecame)g(a)m(v)-5
-b(ailable)46 b(in)e(1999,)50 b(but)44 b(did)f(not)i(supp)s(ort)d
-(netCDF)j(\(or,)j(for)c(that)150 2254 y(matter,)d(F)-8
-b(ortran\))39 b(as)g(of)f(Decem)m(b)s(er)h(1999.)66 b(By)38
-b(early)h(2001,)j FC(HDF5)c FD(did)g(supp)s(ort)e(F)-8
-b(ortran90.)66 b(In)150 2363 y(2004,)45 b(Unidata)c(and)e
-FC(NCSA)i FD(b)s(egan)f(a)h(pro)5 b(ject)40 b(to)h(implemen)m(t)g(the)f
-FC(HDF5)h FD(features)g(necessary)f(to)150 2473 y(supp)s(ort)29
-b(the)i(netCDF)g(API.)f FC(NCO)h FD(v)m(ersion)g(3.0.3)h(added)e(supp)s
-(ort)f(for)h(reading/writing)i(netCDF4-)150 2583 y(formatted)40
-b FC(HDF5)h FD(\014les)e(in)h(Octob)s(er,)i(2005.)71
-b(See)40 b(Section)h(3.9)g([Selecting)g(Output)e(File)i(F)-8
-b(ormat],)150 2692 y(page)31 b(33)g(for)f(more)h(details.)275
-2894 y(HDF)80 b(supp)s(ort)e(for)h(netCDF)i(w)m(as)f(completed)g(with)g
-(HDF5)h(v)m(ersion)f(v)m(ersion)31 b(1.8)80 b(in)150
-3003 y(2007.)202 b(The)83 b(netCDF)i(fron)m(t-end)e(that)h(uses)f(this)
-h FC(HDF5)g FD(bac)m(k-end)g(w)m(as)g(completed)150 3113
-y(and)70 b(released)h(so)s(on)e(after)i(as)g(netCDF)f(v)m(ersion)31
-b(4)q(.)160 b(Do)m(wnload)71 b(it)g(from)e(the)i(netCDF4)150
-3223 y(\()p Fy(http://my.unidata.ucar.edu)o(/co)o(nten)o(t/so)o(ftw)o
-(are/)o(netc)o(df/)o(netc)o(df-4)o FD(\))25 b(w)m(ebsite.)275
-3424 y FC(NCO)34 b FD(v)m(ersion)h(3.9.0,)i(released)f(in)e(Ma)m(y)-8
-b(,)37 b(2007,)h(added)33 b(supp)s(ort)g(for)h(all)i(netCDF4)f(atomic)h
-(data)150 3534 y(t)m(yp)s(es)g(except)h Fy(NC_STRING)p
-FD(.)55 b(Supp)s(ort)34 b(for)h Fy(NC_STRING)p FD(,)g(including)h
-(ragged)h(arra)m(ys)f(of)g(strings,)i(w)m(as)150 3643
-y(\014nally)k(added)g(in)g(v)m(ersion)g(3.9.9,)48 b(released)43
-b(in)f(June,)i(2009.)78 b(Supp)s(ort)41 b(for)h(additional)h(netCDF4)
-150 3753 y(features)37 b(has)f(b)s(een)f(incremen)m(tal.)60
-b(W)-8 b(e)38 b(add)e(one)g(netCDF4)i(feature)f(at)g(a)f(time.)60
-b(Y)-8 b(ou)37 b(m)m(ust)f(build)150 3862 y FC(NCO)30
-b FD(with)g(netCDF4)i(to)f(obtain)g(this)f(supp)s(ort.)275
-4064 y(The)43 b(main)g(netCDF4)i(features)f(that)g(NCO)f(curren)m(tly)h
-(supp)s(orts)e(are)i(the)g(new)f(atomic)i(data)150 4174
-y(t)m(yp)s(es,)34 b(Lemp)s(el-Ziv)e(compression)h(\(de\015ation\),)i
-(and)d(c)m(h)m(unking.)48 b(The)32 b(new)h(atomic)h(data)g(t)m(yp)s(es)
-f(are)150 4283 y Fy(NC_UBYTE)p FD(,)f Fy(NC_USHORT)p
-FD(,)f Fy(NC_UINT)p FD(,)h Fy(NC_INT64)p FD(,)g(and)g
-Fy(NC_UINT64)p FD(.)46 b(Eigh)m(t-b)m(yte)35 b(in)m(teger)g(supp)s(ort)
-c(is)150 4393 y(an)i(esp)s(ecially)i(useful)d(impro)m(v)m(emen)m(t)j
-(from)e(netCDF3.)50 b(All)34 b FC(NCO)f FD(op)s(erators)g(supp)s(ort)f
-(these)i(t)m(yp)s(es,)150 4502 y(e.g.,)26 b Fy(ncks)21
-b FD(copies)i(and)f(prin)m(ts)g(them,)i Fy(ncra)d FD(a)m(v)m(erages)k
-(them,)f(and)e Fy(ncap2)f FD(pro)s(cesses)h(algebraic)i(scripts)150
-4612 y(with)30 b(them.)41 b Fy(ncks)29 b FD(prin)m(ts)h(compression)g
-(information,)h(if)f(an)m(y)-8 b(,)32 b(to)f(screen.)p
-150 4876 1200 4 v 199 4944 a Fw(6)275 4975 y Fu(The)36
-b(Hierarc)n(hical)i(Data)f(F)-6 b(ormat,)40 b(or)d Fs(HDF)p
-Fu(,)f(is)i(another)e(self-describing)i(data)f(format)h(similar)g(to,)i
-(but)35 b(more)275 5063 y(elab)r(orate)27 b(than,)e(netCDF.)199
-5134 y Fw(7)275 5166 y Fu(One)k(m)n(ust)g(link)h(the)g
-Fs(NCO)f Fu(co)r(de)h(to)g(the)g Fs(HDF4)g(MFHDF)f Fu(library)h
-(instead)g(of)h(the)e(usual)i(netCDF)e(library)-6 b(.)47
-b(Do)r(es)275 5253 y(`)p Ft(MF)p Fu(')23 b(stands)g(for)h(Mik)n(e)f(F)
--6 b(olk?)33 b(P)n(erhaps.)h(In)22 b(an)n(y)g(case,)j(the)d
-Fs(MFHDF)g Fu(library)h(only)f(supp)r(orts)h(netCDF2)g(calls.)35
-b(Th)n(us)275 5340 y(I)25 b(will)i(try)e(to)h(k)n(eep)f(this)h
-(capabilit)n(y)g(in)f Fs(NCO)h Fu(as)g(long)g(as)h(it)e(is)i(not)e(to)r
-(o)h(m)n(uc)n(h)f(trouble.)p eop end
-%%Page: 10 12
-TeXDict begin 10 11 bop 150 -116 a FD(10)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y FC(NCO)51 b FD(v)m(ersion)h
-(3.9.1)h(\(June,)j(2007\))e(added)d(supp)s(ort)e(for)j(netCDF4)g(Lemp)s
-(el-Ziv)f(de\015ation.)150 408 y(Lemp)s(el-Ziv)c(de\015ation)h(is)f(a)g
-(lossless)h(compression)g(tec)m(hnique.)92 b(See)47 b(Section)h(3.23)h
-([De\015ation],)150 518 y(page)31 b(54)g(for)f(more)h(details.)275
-695 y FC(NCO)46 b FD(v)m(ersion)i(3.9.9)h(\(June,)i(2009\))e(added)e
-(supp)s(ort)e(for)i(netCDF4)h(c)m(h)m(unking)g(in)f Fy(ncks)f
-FD(and)150 805 y Fy(ncecat)p FD(.)38 b FC(NCO)28 b FD(v)m(ersion)h
-(4.0.4)h(\(Septem)m(b)s(er,)f(2010\))h(completed)f(supp)s(ort)e(for)h
-(netCDF4)h(c)m(h)m(unking)f(in)150 914 y(the)j(remaining)f(op)s
-(erators.)41 b(See)31 b(Section)g(3.22)h([Ch)m(unking],)e(page)h(51)g
-(for)f(more)h(details.)275 1092 y(netCDF4-enabled)f FC(NCO)e
-FD(handles)g(netCDF3)i(\014les)f(without)f(c)m(hange.)42
-b(In)28 b(addition,)h(it)g(automag-)150 1201 y(ically)h(handles)f
-(netCDF4)h(\()p FC(HDF5)p FD(\))g(\014les:)40 b(If)28
-b(y)m(ou)i(feed)f FC(NCO)f FD(netCDF3)i(\014les,)g(it)f(pro)s(duces)f
-(netCDF3)150 1311 y(output.)39 b(If)24 b(y)m(ou)i(feed)f
-FC(NCO)f FD(netCDF4)j(\014les,)f(it)g(pro)s(duces)d(netCDF4)k(output.)
-38 b(Use)26 b(the)f(handy-dandy)150 1420 y(`)p Fy(-4)p
-FD(')35 b(switc)m(h)g(to)h(request)f(netCDF4)h(output)e(from)g(netCDF3)
-i(input,)g(i.e.,)h(to)f(con)m(v)m(ert)g(netCDF3)g(to)150
-1530 y(netCDF4.)42 b(See)30 b(Section)i(3.9)f([Selecting)h(Output)d
-(File)j(F)-8 b(ormat],)32 b(page)f(33)g(for)g(more)f(details.)275
-1707 y(As)g(of)g(2010,)i(netCDF4)g(is)e(still)h(relativ)m(ely)i(new)c
-(soft)m(w)m(are.)42 b(Problems)30 b(with)g(netCDF4)i(and)d
-FC(HDF)150 1817 y FD(libraries)g(are)h(still)g(b)s(eing)f(\014xed.)39
-b(Binary)30 b FC(NCO)f FD(distributions)f(shipp)s(ed)f(as)j
-FC(RPM)p FD(s)f(use)f(the)i(netCDF4)150 1926 y(library)-8
-b(,)31 b(while)f(debs)g(use)g(the)g(netCDF3)i(library)-8
-b(,)30 b(b)s(ecause)h(of)f(upstream)g(requiremen)m(ts.)275
-2104 y(One)41 b(m)m(ust)h(often)h(build)e FC(NCO)h FD(from)f(source)i
-(to)g(obtain)f(netCDF4)h(supp)s(ort.)75 b(T)m(ypically)-8
-b(,)47 b(one)150 2213 y(sp)s(eci\014es)37 b(the)g(ro)s(ot)g(of)g(the)g
-(netCDF4)h(installation)h(directory)-8 b(.)61 b(Do)38
-b(this)f(with)f(the)h Fy(NETCDF4_ROOT)150 2323 y FD(v)-5
-b(ariable.)42 b(Then)29 b(use)h(y)m(our)g(preferred)f
-FC(NCO)i FD(build)e(mec)m(hanism,)i(e.g.,)390 2500 y
-Fy(export)46 b(NETCDF4_ROOT=/usr/local/n)o(etc)o(df4)41
-b(#)48 b(Set)f(netCDF4)f(location)390 2610 y(cd)h(~/nco;./configure)c
-(--enable-netcdf4)91 b(#)48 b(Configure)d(mechanism)g(-or-)390
-2719 y(cd)i(~/nco/bld;./make)d(NETCDF4=Y)h(allinone)g(#)j(Old)f
-(Makefile)e(mechanism)275 2896 y FD(W)-8 b(e)36 b(carefully)g(trac)m(k)
-h(the)f(netCDF4)h(releases,)h(and)d(k)m(eep)h(the)g(netCDF4)h(atomic)g
-(t)m(yp)s(e)f(supp)s(ort)150 3006 y(and)j(other)h(features)g(w)m
-(orking.)70 b(Our)38 b(long)j(term)e(goal)j(is)e(to)g(utilize)h(more)f
-(of)g(the)g(extensiv)m(e)h(new)150 3116 y(netCDF4)36
-b(feature)f(set.)54 b(The)34 b(next)g(ma)5 b(jor)35 b(netCDF4)h
-(feature)f(w)m(e)g(are)g(lik)m(ely)h(to)f(utilize)h(is)f(parallel)150
-3225 y(I/O.)c(W)-8 b(e)31 b(will)g(enable)g(this)f(in)g(the)h
-FC(MPI)e FD(netCDF)i(op)s(erators.)150 3511 y FB(1.6)68
-b(Help)46 b(Requests)g(and)e(Bug)h(Rep)t(orts)150 3670
-y FD(W)-8 b(e)38 b(generally)f(receiv)m(e)h(three)f(categories)i(of)e
-(mail)g(from)e(users:)52 b(help)36 b(requests,)i(bug)e(rep)s(orts,)i
-(and)150 3780 y(feature)31 b(requests.)43 b(Notes)32
-b(sa)m(ying)f(the)g(equiv)-5 b(alen)m(t)33 b(of)e Fy(")p
-FD(Hey)-8 b(,)32 b FC(NCO)e FD(con)m(tin)m(ues)i(to)g(w)m(ork)f(great)h
-(and)e(it)150 3890 y(sa)m(v)m(es)i(me)e(more)h(time)g(ev)m(eryda)m(y)g
-(than)g(it)f(to)s(ok)i(to)f(write)f(this)g(note)p Fy(")h
-FD(are)g(a)g(distan)m(t)g(fourth.)275 4067 y(There)38
-b(is)h(a)g(di\013eren)m(t)h(proto)s(col)f(for)g(eac)m(h)h(t)m(yp)s(e)f
-(of)g(request.)67 b(The)38 b(preferred)g(etiquette)i(for)f(all)150
-4176 y(comm)m(unications)31 b(is)e(via)h FC(NCO)e FD(Pro)5
-b(ject)30 b(F)-8 b(orums.)41 b(Do)30 b(not)f(con)m(tact)j(pro)5
-b(ject)29 b(mem)m(b)s(ers)g(via)g(p)s(ersonal)150 4286
-y(e-mail)h(unless)e(y)m(our)h(request)f(comes)i(with)e(money)h(or)g(y)m
-(ou)g(ha)m(v)m(e)h(damaging)f(information)g(ab)s(out)f(our)150
-4396 y(p)s(ersonal)f(liv)m(es.)41 b Fr(Ple)-5 b(ase)31
-b(use)e(the)i(F)-7 b(orums)p FD(|they)29 b(preserv)m(e)f(a)g(record)f
-(of)h(the)g(questions)f(and)g(answ)m(ers)150 4505 y(so)37
-b(that)g(others)g(can)g(learn)g(from)f(our)g(exc)m(hange.)62
-b(Also,)39 b(since)e FC(NCO)f FD(is)h(go)m(v)m(ernmen)m(t-funded,)i
-(this)150 4615 y(record)25 b(helps)f(us)h(pro)m(vide)g(program)f
-(o\016cers)i(with)e(information)i(they)f(need)f(to)i(ev)-5
-b(aluate)27 b(our)d(pro)5 b(ject.)275 4792 y(Before)74
-b(p)s(osting)f(to)i(the)e FC(NCO)h FD(forums)e(describ)s(ed)g(b)s(elo)m
-(w,)85 b(y)m(ou)74 b(migh)m(t)g(\014rst)f(register)150
-4902 y(\()p Fy(https://sf.net/account/reg)o(ist)o(er.p)o(hp)p
-FD(\))44 b(y)m(our)49 b(name)h(and)f(email)i(address)d(with)i(Source-)
-150 5011 y(F)-8 b(orge.net)46 b(or)e(else)h(all)h(of)e(y)m(our)g(p)s
-(ostings)g(will)g(b)s(e)g(attributed)g(to)h Fy(")p FD(nob)s(o)s(dy)p
-Fy(")p FD(.)80 b(Once)44 b(registered)150 5121 y(y)m(ou)32
-b(ma)m(y)g(c)m(ho)s(ose)h(to)f Fy(")p FD(monitor)p Fy(")g
-FD(an)m(y)g(forum)e(and)h(to)i(receiv)m(e)g(\(or)f(not\))g(email)h
-(when)e(there)h(are)g(an)m(y)150 5230 y(p)s(ostings)27
-b(including)f(resp)s(onses)g(to)h(y)m(our)g(questions.)40
-b(W)-8 b(e)28 b(usually)f(reply)f(to)i(the)f(forum)f(message,)j(not)150
-5340 y(to)i(the)g(original)g(p)s(oster.)p eop end
-%%Page: 11 13
-TeXDict begin 11 12 bop 150 -116 a FD(Chapter)30 b(1:)41
-b(In)m(tro)s(duction)2546 b(11)275 299 y(If)40 b(y)m(ou)i(w)m(an)m(t)g
-(us)e(to)i(include)f(a)h(new)f(feature)g(in)g FC(NCO)p
-FD(,)g(c)m(hec)m(k)i(\014rst)e(to)g(see)h(if)f(that)h(feature)g(is)150
-408 y(already)29 b(on)e(the)h(TODO)g(\()p Fy(file:./TODO)p
-FD(\))d(list.)41 b(If)27 b(it)i(is,)g(wh)m(y)e(not)h(implemen)m(t)h
-(that)f(feature)h(y)m(ourself)150 518 y(and)j(send)g(us)h(the)g(patc)m
-(h?)48 b(If)33 b(the)g(feature)g(is)g(not)h(y)m(et)g(on)e(the)i(list,)g
-(then)f(send)f(a)h(note)h(to)f(the)g(NCO)150 628 y(Discussion)e(forum)e
-(\()p Fy(http://sourceforge.net/pro)o(ject)o(s/n)o(co/f)o(orum)o(s/f)o
-(orum)o(/982)o(9)p FD(\).)275 787 y(Read)35 b(the)h(man)m(ual)f(b)s
-(efore)g(rep)s(orting)g(a)h(bug)f(or)g(p)s(osting)g(a)h(help)f
-(request.)55 b(Sending)35 b(questions)150 897 y(whose)g(answ)m(ers)f
-(are)h(not)h(in)e(the)h(man)m(ual)g(is)g(the)g(b)s(est)g(w)m(a)m(y)g
-(to)h(motiv)-5 b(ate)37 b(us)d(to)h(write)g(more)g(do)s(cu-)150
-1006 y(men)m(tation.)57 b(W)-8 b(e)37 b(w)m(ould)e(also)h(lik)m(e)h(to)
-f(accen)m(tuate)i(the)e(con)m(trap)s(ositiv)m(e)h(of)f(this)f(statemen)
-m(t.)58 b(If)35 b(y)m(ou)150 1116 y(think)26 b(y)m(ou)g(ha)m(v)m(e)i
-(found)d(a)i(real)g(bug)e Fr(the)30 b(most)g(helpful)f(thing)g(you)h(c)
--5 b(an)29 b(do)h(is)f(simplify)g(the)h(pr)-5 b(oblem)30
-b(to)150 1225 y(a)i(manage)-5 b(able)33 b(size)f(and)g(then)g(r)-5
-b(ep)g(ort)34 b(it)p FD(.)40 b(The)29 b(\014rst)f(thing)i(to)g(do)f(is)
-g(to)h(mak)m(e)g(sure)f(y)m(ou)g(are)h(running)150 1335
-y(the)h(latest)h(publicly)e(released)h(v)m(ersion)g(of)f
-FC(NCO)p FD(.)275 1494 y(Once)48 b(y)m(ou)h(ha)m(v)m(e)i(read)d(the)h
-(man)m(ual,)54 b(if)49 b(y)m(ou)g(are)g(still)h(unable)f(to)g(get)h
-FC(NCO)f FD(to)g(p)s(erform)f(a)150 1604 y(do)s(cumen)m(ted)d
-(function,)50 b(submit)45 b(a)h(help)f(request.)87 b(F)-8
-b(ollo)m(w)48 b(the)e(same)g(pro)s(cedure)f(as)h(describ)s(ed)150
-1714 y(b)s(elo)m(w)j(for)g(rep)s(orting)g(bugs)g(\(after)h(all,)55
-b(it)50 b(migh)m(t)f(b)s(e)g(a)h(bug\).)97 b(That)49
-b(is,)54 b(describ)s(e)48 b(what)i(y)m(ou)150 1823 y(are)j(trying)g(to)
-h(do,)59 b(and)52 b(include)h(the)g(complete)i(commands)d(\(run)g(with)
-h(`)p Fy(-D)30 b(5)p FD('\),)59 b(error)53 b(mes-)150
-1933 y(sages,)44 b(and)39 b(v)m(ersion)i(of)f FC(NCO)f
-FD(\(with)i(`)p Fy(-r)p FD('\).)69 b(P)m(ost)41 b(y)m(our)f(help)g
-(request)g(to)h(the)f(NCO)g(Help)g(forum)150 2042 y(\()p
-Fy(http://sourceforge.net/pro)o(jec)o(ts/n)o(co/f)o(oru)o(ms/f)o(orum)o
-(/98)o(30)p FD(\).)275 2202 y(If)31 b(y)m(ou)i(think)f(y)m(ou)h(used)f
-(the)g(righ)m(t)h(command)f(when)g FC(NCO)g FD(misb)s(eha)m(v)m(es,)i
-(then)e(y)m(ou)h(migh)m(t)g(ha)m(v)m(e)150 2311 y(found)k(a)i(bug.)63
-b(Incorrect)39 b(n)m(umerical)g(answ)m(ers)f(are)g(the)h(highest)f
-(priorit)m(y)-8 b(.)65 b(W)-8 b(e)40 b(usually)e(\014x)f(those)150
-2421 y(within)42 b(one)g(or)g(t)m(w)m(o)i(da)m(ys.)76
-b(Core)42 b(dumps)e(and)i(semen)m(tation)i(violations)f(receiv)m(e)h
-(lo)m(w)m(er)g(priorit)m(y)-8 b(.)150 2531 y(They)30
-b(are)h(alw)m(a)m(ys)h(\014xed,)d(ev)m(en)m(tually)-8
-b(.)275 2690 y(Ho)m(w)38 b(do)g(y)m(ou)g(simplify)g(a)g(problem)f(that)
-i(rev)m(eal)g(a)f(bug?)63 b(Cut)37 b(out)h(extraneous)g(v)-5
-b(ariables,)41 b(di-)150 2800 y(mensions,)28 b(and)f(metadata)j(from)d
-(the)h(o\013ending)g(\014les)f(and)g(re-run)g(the)h(command)f(un)m(til)
-h(it)h(no)e(longer)150 2909 y(breaks.)62 b(Then)37 b(bac)m(k)h(up)f
-(one)g(step)h(and)f(rep)s(ort)g(the)h(problem.)62 b(Usually)38
-b(the)f(\014le\(s\))i(will)f(b)s(e)f(v)m(ery)150 3019
-y(small,)k(i.e.,)h(one)d(v)-5 b(ariable)39 b(with)f(one)h(or)f(t)m(w)m
-(o)i(small)f(dimensions)f(ough)m(t)h(to)g(su\016ce.)65
-b(Run)37 b(the)i(op-)150 3128 y(erator)h(with)f(`)p Fy(-r)p
-FD(')g(and)f(then)h(run)f(the)h(command)g(with)g(`)p
-Fy(-D)30 b(5)p FD(')39 b(to)h(increase)g(the)f(v)m(erb)s(osit)m(y)h(of)
-g(the)150 3238 y(debugging)33 b(output.)48 b(It)33 b(is)g(v)m(ery)g
-(imp)s(ortan)m(t)g(that)h(y)m(our)e(rep)s(ort)h(con)m(tain)h(the)f
-(exact)h(error)f(messages)150 3347 y(and)i(compile-time)i(en)m
-(vironmen)m(t.)56 b(Include)35 b(a)h(cop)m(y)g(of)g(y)m(our)f(sample)g
-(input)g(\014le,)i(or)e(place)h(one)g(on)150 3457 y(a)31
-b(publically)g(accessible)i(lo)s(cation,)g(of)e(the)g(\014le\(s\).)43
-b(P)m(ost)32 b(the)f(full)f(bug)h(rep)s(ort)f(to)i(the)f(NCO)f(Pro)5
-b(ject)150 3567 y(buglist)30 b(\()p Fy(http://sf.net/bugs/?group_i)o
-(d=33)o(31)p FD(\).)275 3726 y(Build)2973 b(failures)150
-3836 y(coun)m(t)40 b(as)g(bugs.)67 b(Our)39 b(limited)h(mac)m(hine)g
-(access)h(means)e(w)m(e)h(cannot)g(\014x)f(all)i(build)d(failures.)68
-b(The)150 3945 y(information)33 b(w)m(e)f(need)g(to)h(diagnose,)h(and)e
-(often)g(\014x,)h(build)e(failures)h(are)h(the)f(three)h(\014les)f
-(output)g(b)m(y)150 4055 y FC(GNU)f FD(build)e(to)s(ols,)j(`)p
-Fy(nco.config.log.${GNU_TRP)o(}.fo)o(o)p FD(',)25 b(`)p
-Fy(nco.configure.${GNU_TRP}.)o(foo)o FD(',)150 4164 y(and)40
-b(`)p Fy(nco.make.${GNU_TRP}.foo)p FD('.)65 b(The)40
-b(\014le)h(`)p Fy(configure.eg)p FD(')d(sho)m(ws)i(ho)m(w)h(to)g(pro)s
-(duce)e(these)150 4274 y(\014les.)68 b(Here)40 b Fy(${GNU_TRP})c
-FD(is)k(the)f Fy(")p FC(GNU)h FD(arc)m(hitecture)h(triplet)p
-Fy(")p FD(,)h(the)e Fz(c)m(hip-v)m(endor-OS)k FD(string)c(re-)150
-4384 y(turned)30 b(b)m(y)g(`)p Fy(config.guess)p FD('.)39
-b(Please)32 b(send)e(us)g(y)m(our)g(impro)m(v)m(emen)m(ts)i(to)g(the)f
-(examples)g(supplied)e(in)150 4493 y(`)p Fy(configure.eg)p
-FD('.)41 b(The)32 b(regressions)f(arc)m(hiv)m(e)i(at)g
-Fy(http://dust.ess.uci.edu)o(/nco)o(/rgr)25 b FD(con)m(tains)150
-4603 y(the)38 b(build)e(output)h(from)g(our)g(standard)g(test)h
-(systems.)63 b(Y)-8 b(ou)38 b(ma)m(y)g(\014nd)e(y)m(ou)i(can)f(solv)m
-(e)i(the)f(build)150 4712 y(problem)30 b(y)m(ourself)g(b)m(y)h
-(examining)g(the)f(di\013erences)h(b)s(et)m(w)m(een)g(these)g(\014les)f
-(and)g(y)m(our)g(o)m(wn.)p eop end
-%%Page: 12 14
-TeXDict begin 12 13 bop eop end
-%%Page: 13 15
-TeXDict begin 13 14 bop 150 -116 a FD(Chapter)30 b(2:)41
-b(Op)s(erator)30 b(Strategies)2264 b(13)150 299 y Fx(2)80
-b(Op)t(erator)54 b(Strategies)150 600 y FB(2.1)68 b(Philosoph)l(y)150
-759 y FD(The)23 b(main)g(design)h(goal)h(is)e(command)h(line)f(op)s
-(erators)h(whic)m(h)f(p)s(erform)f(useful,)j(scriptable)f(op)s
-(erations)150 869 y(on)37 b(netCDF)h(\014les.)61 b(Man)m(y)38
-b(scien)m(tists)h(w)m(ork)e(with)g(mo)s(dels)g(and)f(observ)-5
-b(ations)38 b(whic)m(h)f(pro)s(duce)f(to)s(o)150 978
-y(m)m(uc)m(h)f(data)g(to)g(analyze)h(in)e(tabular)h(format.)53
-b(Th)m(us,)35 b(it)g(is)g(often)g(natural)f(to)i(reduce)e(and)g
-(massage)150 1088 y(this)29 b(ra)m(w)g(or)g(primary)f(lev)m(el)j(data)e
-(in)m(to)h(summary)-8 b(,)29 b(or)g(second)g(lev)m(el)i(data,)f(e.g.,)h
-(temp)s(oral)e(or)g(spatial)150 1197 y(a)m(v)m(erages.)42
-b(These)28 b(second)f(lev)m(el)i(data)g(ma)m(y)f(b)s(ecome)g(the)g
-(inputs)e(to)i(graphical)h(and)e(statistical)j(pac)m(k-)150
-1307 y(ages,)d(and)d(are)h(often)g(more)g(suitable)h(for)e(arc)m(hiv)-5
-b(al)26 b(and)e(dissemination)h(to)g(the)g(scien)m(ti\014c)h(comm)m
-(unit)m(y)-8 b(.)150 1417 y FC(NCO)36 b FD(p)s(erforms)e(a)j(suite)f
-(of)g(op)s(erations)g(useful)g(in)f(manipulating)h(data)h(from)f(the)g
-(primary)f(to)i(the)150 1526 y(second)25 b(lev)m(el)i(state.)40
-b(Higher)26 b(lev)m(el)g(in)m(terpretiv)m(e)h(languages)f(\(e.g.,)i
-FC(IDL)p FD(,)e(Y)-8 b(oric)m(k,)28 b(Matlab,)g FC(NCL)p
-FD(,)d(P)m(erl,)150 1636 y(Python\),)i(and)f(lo)m(w)m(er)h(lev)m(el)h
-(compiled)e(languages)i(\(e.g.,)g(C,)e(F)-8 b(ortran\))27
-b(can)g(alw)m(a)m(ys)g(p)s(erform)e(an)m(y)h(task)150
-1745 y(p)s(erformed)31 b(b)m(y)h FC(NCO)p FD(,)h(but)e(often)i(with)f
-(more)h(o)m(v)m(erhead.)48 b(NCO,)32 b(on)g(the)h(other)g(hand,)f(is)g
-(limited)h(to)150 1855 y(a)c(m)m(uc)m(h)g(smaller)h(set)f(of)g
-(arithmetic)h(and)e(metadata)j(op)s(erations)e(than)g(these)g(full)g
-(blo)m(wn)f(languages.)275 2014 y(Another)k(goal)j(has)d(b)s(een)g(to)i
-(implemen)m(t)f(enough)f(command)h(line)g(switc)m(hes)g(so)g(that)h
-(frequen)m(tly)150 2124 y(used)28 b(sequences)i(of)f(these)h(op)s
-(erators)f(can)h(b)s(e)e(executed)i(from)f(a)g(shell)h(script)f(or)g
-(batc)m(h)h(\014le.)40 b(Finally)-8 b(,)150 2234 y FC(NCO)27
-b FD(w)m(as)h(written)g(to)g(consume)f(the)h(absolute)g(minim)m(um)f
-(amoun)m(t)h(of)f(system)h(memory)f(required)g(to)150
-2343 y(p)s(erform)j(a)i(giv)m(en)g(job.)43 b(The)31 b(arithmetic)i(op)s
-(erators)e(are)h(extremely)g(e\016cien)m(t;)i(their)d(exact)i(memory)
-150 2453 y(usage)e(is)f(detailed)i(in)e(Section)h(2.9)h([Memory)f
-(Requiremen)m(ts],)g(page)g(19.)150 2675 y FB(2.2)68
-b(Climate)47 b(Mo)t(del)e(P)l(aradigm)150 2834 y FC(NCO)39
-b FD(w)m(as)g(dev)m(elop)s(ed)g(at)h FC(NCAR)g FD(to)f(aid)g(analysis)h
-(and)e(manipulation)h(of)h(datasets)g(pro)s(duced)d(b)m(y)150
-2944 y(General)43 b(Circulation)f(Mo)s(dels)g(\()p FC(GCM)p
-FD(s\).)76 b(Datasets)44 b(pro)s(duced)c(b)m(y)i FC(GCM)p
-FD(s)g(share)g(man)m(y)g(features)150 3053 y(with)32
-b(all)h(gridded)f(scien)m(ti\014c)i(datasets)f(and)f(so)h(pro)m(vide)f
-(a)h(useful)f(paradigm)g(for)g(the)h(explication)h(of)150
-3163 y(the)39 b FC(NCO)g FD(op)s(erator)g(set.)66 b(Examples)39
-b(in)g(this)f(man)m(ual)h(use)g(a)g FC(GCM)g FD(paradigm)g(b)s(ecause)g
-(latitude,)150 3273 y(longitude,)44 b(time,)g(temp)s(erature)c(and)g
-(other)h(\014elds)f(related)i(to)f(our)f(natural)h(en)m(vironmen)m(t)g
-(are)g(as)150 3382 y(easy)31 b(to)g(visualize)h(for)e(the)g(la)m(yman)i
-(as)e(the)h(exp)s(ert.)150 3604 y FB(2.3)68 b(T)-11 b(emp)t(orary)45
-b(Output)f(Files)150 3764 y FC(NCO)38 b FD(op)s(erators)h(are)h
-(designed)e(to)i(b)s(e)e(reasonably)h(fault)g(toleran)m(t,)k(so)c(that)
-g(if)g(there)g(is)g(a)g(system)150 3873 y(failure)34
-b(or)g(the)g(user)g(ab)s(orts)f(the)h(op)s(eration)h(\(e.g.,)i(with)c
-Fq(C-c)p FD(\),)i(then)f(no)f(data)i(are)f(lost.)53 b(The)33
-b(user-)150 3983 y(sp)s(eci\014ed)h Fz(output-\014le)40
-b FD(is)34 b(only)h(created)h(up)s(on)c(successful)j(completion)h(of)e
-(the)h(op)s(eration)3361 3950 y Fw(1)3399 3983 y FD(.)53
-b(This)34 b(is)150 4092 y(accomplished)i(b)m(y)e(p)s(erforming)g(all)i
-(op)s(erations)f(in)f(a)h(temp)s(orary)g(cop)m(y)g(of)g
-Fz(output-\014le)p FD(.)55 b(The)34 b(name)150 4202 y(of)39
-b(the)g(temp)s(orary)g(output)f(\014le)h(is)g(constructed)g(b)m(y)g
-(app)s(ending)f Fy(.pid<)p Fq(process)27 b(ID)p Fy(>.<)p
-Fq(operator)150 4312 y(name)p Fy(>.tmp)34 b FD(to)k(the)f(user-sp)s
-(eci\014ed)f Fz(output-\014le)43 b FD(name.)60 b(When)37
-b(the)g(op)s(erator)h(completes)g(its)f(task)150 4421
-y(with)f(no)h(fatal)h(errors,)g(the)f(temp)s(orary)f(output)g(\014le)h
-(is)g(mo)m(v)m(ed)h(to)f(the)g(user-sp)s(eci\014ed)f
-Fz(output-\014le)p FD(.)150 4531 y(Note)28 b(the)e(construction)h(of)f
-(a)h(temp)s(orary)e(output)h(\014le)g(uses)g(more)h(disk)e(space)i
-(than)f(just)g(o)m(v)m(erwriting)150 4640 y(existing)41
-b(\014les)f(\\in)g(place")h(\(b)s(ecause)f(there)g(ma)m(y)h(b)s(e)e(t)m
-(w)m(o)i(copies)g(of)f(the)g(same)g(\014le)g(on)g(disk)g(un)m(til)150
-4750 y(the)j FC(NCO)g FD(op)s(eration)h(successfully)f(concludes)h(and)
-f(the)g(temp)s(orary)g(output)g(\014le)g(o)m(v)m(erwrites)i(the)150
-4860 y(existing)37 b Fz(output-\014le)5 b FD(\).)58 b(Also,)39
-b(note)e(this)f(feature)g(increases)h(the)f(execution)h(time)g(of)f
-(the)h(op)s(erator)150 4969 y(b)m(y)28 b(appro)m(ximately)i(the)f(time)
-g(it)g(tak)m(es)h(to)f(cop)m(y)h(the)e Fz(output-\014le)p
-FD(.)41 b(Finally)-8 b(,)30 b(note)f(this)g(feature)g(allo)m(ws)150
-5079 y(the)i Fz(output-\014le)k FD(to)c(b)s(e)f(the)h(same)f(as)h(the)f
-Fz(input-\014le)35 b FD(without)c(an)m(y)g(danger)f(of)g(\\o)m(v)m
-(erlap".)p 150 5154 1200 4 v 199 5221 a Fw(1)275 5253
-y Fu(The)k Ft(ncrename)i Fu(op)r(erator)g(is)f(an)f(exception)g(to)h
-(this)g(rule.)60 b(See)35 b(Section)f(4.11)i([ncrename)f(netCDF)f
-(Renamer],)275 5340 y(page)26 b(153.)p eop end
-%%Page: 14 16
-TeXDict begin 14 15 bop 150 -116 a FD(14)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(Other)35 b(safeguards)g(exist)h
-(to)h(protect)f(the)g(user)f(from)g(inadv)m(erten)m(tly)i(o)m(v)m
-(erwriting)g(data.)57 b(If)35 b(the)150 408 y Fz(output-\014le)45
-b FD(sp)s(eci\014ed)39 b(for)h(a)h(command)e(is)h(a)h(pre-existing)g
-(\014le,)h(then)e(the)g(op)s(erator)g(will)h(prompt)150
-518 y(the)34 b(user)e(whether)h(to)h(o)m(v)m(erwrite)h(\(erase\))g(the)
-f(existing)g Fz(output-\014le)p FD(,)g(attempt)h(to)f(app)s(end)e(to)i
-(it,)h(or)150 628 y(ab)s(ort)g(the)h(op)s(eration.)56
-b(Ho)m(w)m(ev)m(er,)39 b(in)c(pro)s(cessing)g(large)h(amoun)m(ts)g(of)f
-(data,)j(to)s(o)e(man)m(y)f(in)m(teractiv)m(e)150 737
-y(questions)29 b(slo)m(ws)h(pro)s(ductivit)m(y)-8 b(.)41
-b(Therefore)29 b FC(NCO)g FD(also)i(implemen)m(ts)f(t)m(w)m(o)g(w)m(a)m
-(ys)h(to)f(o)m(v)m(erride)g(its)g(o)m(wn)150 847 y(safet)m(y)37
-b(features,)h(the)f(`)p Fy(-O)p FD(')f(and)f(`)p Fy(-A)p
-FD(')h(switc)m(hes.)59 b(Sp)s(ecifying)36 b(`)p Fy(-O)p
-FD(')g(tells)h(the)f(op)s(erator)g(to)h(o)m(v)m(erwrite)150
-956 y(an)m(y)c(existing)h Fz(output-\014le)k FD(without)32
-b(prompting)g(the)h(user)f(in)m(teractiv)m(ely)-8 b(.)51
-b(Sp)s(ecifying)32 b(`)p Fy(-A)p FD(')h(tells)h(the)150
-1066 y(op)s(erator)25 b(to)g(attempt)h(to)g(app)s(end)d(to)i(an)m(y)g
-(existing)h Fz(output-\014le)k FD(without)24 b(prompting)g(the)h(user)f
-(in)m(ter-)150 1176 y(activ)m(ely)-8 b(.)43 b(These)26
-b(switc)m(hes)i(are)g(useful)e(in)h(batc)m(h)g(en)m(vironmen)m(ts)h(b)s
-(ecause)f(they)g(suppress)e(in)m(teractiv)m(e)150 1285
-y(k)m(eyb)s(oard)30 b(input.)150 1509 y FB(2.4)68 b(App)t(ending)44
-b(V)-11 b(ariables)150 1668 y FD(Adding)23 b(v)-5 b(ariables)24
-b(from)e(one)i(\014le)f(to)h(another)g(is)f(often)h(desirable.)38
-b(This)23 b(is)g(referred)g(to)h(as)f Fz(app)s(ending)p
-FD(,)150 1778 y(although)37 b(some)h(prefer)e(the)i(terminology)g
-Fz(merging)2036 1745 y Fw(2)2110 1778 y FD(or)g Fz(pasting)p
-FD(.)61 b(App)s(ending)35 b(is)i(often)h(confused)150
-1887 y(with)h(what)g FC(NCO)f FD(calls)i Fz(concatenation)p
-FD(.)69 b(In)39 b FC(NCO)p FD(,)g(concatenation)i(refers)e(to)g
-(splicing)h(a)f(v)-5 b(ariable)150 1997 y(along)38 b(the)g(record)f
-(dimension.)61 b(The)36 b(length)i(along)g(the)g(record)f(dimension)g
-(of)g(the)h(output)e(is)i(the)150 2106 y(sum)e(of)g(the)h(lengths)g(of)
-g(the)g(input)e(\014les.)59 b(App)s(ending,)37 b(on)g(the)f(other)h
-(hand,)h(refers)e(to)h(cop)m(ying)h(a)150 2216 y(v)-5
-b(ariable)34 b(from)f(one)g(\014le)g(to)h(another)f(\014le)h(whic)m(h)e
-(ma)m(y)i(or)f(ma)m(y)h(not)f(already)h(con)m(tain)g(the)g(v)-5
-b(ariable)3687 2183 y Fw(3)3725 2216 y FD(.)150 2326
-y FC(NCO)30 b FD(can)i(app)s(end)d(or)h(concatenate)k(just)c(one)h(v)-5
-b(ariable,)32 b(or)f(all)g(the)g(v)-5 b(ariables)32 b(in)e(a)h(\014le)g
-(at)h(the)f(same)150 2435 y(time.)275 2595 y(In)e(this)h(sense,)h
-Fy(ncks)e FD(can)h(app)s(end)f(v)-5 b(ariables)31 b(from)e(one)i
-(\014le)f(to)h(another)g(\014le.)40 b(This)30 b(capabilit)m(y)i(is)150
-2704 y(in)m(v)m(ok)m(ed)c(b)m(y)f(naming)g(t)m(w)m(o)h(\014les)f(on)g
-(the)g(command)g(line,)h Fz(input-\014le)j FD(and)c Fz(output-\014le)p
-FD(.)39 b(When)27 b Fz(output-)150 2814 y(\014le)33 b
-FD(already)28 b(exists,)h(the)f(user)f(is)h(prompted)f(whether)g(to)i
-Fz(o)m(v)m(erwrite)p FD(,)h Fz(app)s(end/replace)p FD(,)e(or)g
-Fz(exit)i FD(from)150 2923 y(the)35 b(command.)54 b(Selecting)37
-b Fz(o)m(v)m(erwrite)42 b FD(tells)36 b(the)f(op)s(erator)g(to)h(erase)
-f(the)g(existing)h Fz(output-\014le)41 b FD(and)150 3033
-y(replace)31 b(it)g(with)g(the)f(results)g(of)h(the)g(op)s(eration.)41
-b(Selecting)32 b Fz(exit)h FD(causes)e(the)g(op)s(erator)g(to)g
-(exit|the)150 3143 y Fz(output-\014le)38 b FD(will)33
-b(not)h(b)s(e)e(touc)m(hed)i(in)e(this)h(case.)50 b(Selecting)34
-b Fz(app)s(end/replace)k FD(causes)33 b(the)h(op)s(erator)150
-3252 y(to)e(attempt)h(to)g(place)f(the)g(results)f(of)h(the)g(op)s
-(eration)g(in)g(the)f(existing)i Fz(output-\014le)p FD(,)f(See)g
-(Section)h(4.7)150 3362 y([nc)m(ks)e(netCDF)g(Kitc)m(hen)g(Sink],)f
-(page)h(135.)275 3521 y(The)e(simplest)i(w)m(a)m(y)g(to)g(create)h(the)
-f(union)e(of)i(t)m(w)m(o)h(\014les)e(is)390 3681 y Fy(ncks)47
-b(-A)g(fl_1.nc)f(fl_2.nc)275 3840 y FD(This)36 b(puts)f(the)i(con)m
-(ten)m(ts)i(of)e(`)p Fy(fl_1.nc)p FD(')e(in)m(to)j(`)p
-Fy(fl_2.nc)p FD('.)58 b(The)37 b(`)p Fy(-A)p FD(')f(is)h(optional.)61
-b(On)36 b(output,)150 3950 y(`)p Fy(fl_2.nc)p FD(')c(is)i(the)g(union)f
-(of)g(the)h(input)f(\014les,)i(regardless)f(of)f(whether)g(they)h
-(share)g(dimensions)f(and)150 4059 y(v)-5 b(ariables,)43
-b(or)d(are)g(completely)i(disjoin)m(t.)69 b(The)40 b(app)s(end)e(fails)
-i(if)g(the)g(input)f(\014les)h(ha)m(v)m(e)h(di\013eren)m(tly)150
-4169 y(named)g(record)h(dimensions)f(\(since)h(netCDF)g(supp)s(orts)e
-(only)i(one\),)j(or)d(ha)m(v)m(e)h(dimensions)e(of)h(the)150
-4278 y(same)31 b(name)f(but)g(di\013eren)m(t)h(sizes.)150
-4502 y FB(2.5)68 b(Simple)46 b(Arithmetic)f(and)g(In)l(terp)t(olation)
-150 4661 y FD(Users)34 b(comfortable)i(with)e FC(NCO)g
-FD(seman)m(tics)i(ma)m(y)f(\014nd)e(it)i(easier)g(to)g(p)s(erform)e
-(some)i(simple)f(mathe-)150 4771 y(matical)f(op)s(erations)e(in)f
-FC(NCO)h FD(rather)g(than)f(higher)h(lev)m(el)i(languages.)43
-b Fy(ncbo)30 b FD(\(see)i(Section)f(4.3)h([ncb)s(o)150
-4880 y(netCDF)21 b(Binary)g(Op)s(erator],)i(page)f(123\))g(do)s(es)f
-(\014le)f(addition,)k(subtraction,)f(m)m(ultiplication,)i(division,)p
-150 4963 1200 4 v 199 5031 a Fw(2)275 5063 y Fu(The)e(terminology)h
-Fp(merging)31 b Fu(is)24 b(reserv)n(ed)f(for)h(an)f(\(un)n(written\))g
-(op)r(erator)h(whic)n(h)f(replaces)i(h)n(yp)r(erslabs)e(of)h(a)f(v)l
-(ariable)275 5150 y(in)i(one)h(\014le)g(with)g(h)n(yp)r(erslabs)f(of)i
-(the)e(same)h(v)l(ariable)h(from)f(another)g(\014le)199
-5221 y Fw(3)275 5253 y Fu(Y)-6 b(es,)26 b(the)g(terminology)i(is)f
-(confusing.)37 b(By)27 b(all)g(means)g(mail)g(me)g(if)g(y)n(ou)f(think)
-f(of)i(a)g(b)r(etter)f(nomenclature.)38 b(Should)275
-5340 y Fs(NCO)25 b Fu(use)h Fp(paste)k Fu(instead)c(of)g
-Fp(app)r(end)s Fu(?)p eop end
-%%Page: 15 17
-TeXDict begin 15 16 bop 150 -116 a FD(Chapter)30 b(2:)41
-b(Op)s(erator)30 b(Strategies)2264 b(15)150 299 y(and)34
-b(broadcasting.)56 b Fy(ncflint)33 b FD(\(see)j(Section)f(4.6)h
-([nc\015in)m(t)f(netCDF)h(File)g(In)m(terp)s(olator],)i(page)d(132\))
-150 408 y(do)s(es)g(\014le)h(addition,)i(subtraction,)f(m)m
-(ultiplication)h(and)d(in)m(terp)s(olation.)58 b(Sequences)36
-b(of)g(these)g(com-)150 518 y(mands)29 b(can)i(accomplish)g(simple)g
-(but)e(p)s(o)m(w)m(erful)h(op)s(erations)h(from)f(the)g(command)g
-(line.)150 753 y FB(2.6)68 b(Av)l(eragers)46 b(vs.)f(Concatenators)150
-912 y FD(The)29 b(most)i(frequen)m(tly)f(used)f(op)s(erators)h(of)g
-FC(NCO)g FD(are)g(probably)f(the)h(a)m(v)m(eragers)i(and)e
-(concatenators.)150 1022 y(Because)35 b(there)e(are)h(so)g(man)m(y)f(p)
-s(erm)m(utations)g(of)h(a)m(v)m(eraging)i(\(e.g.,)f(across)f(\014les,)h
-(within)d(a)i(\014le,)h(o)m(v)m(er)150 1131 y(the)h(record)g
-(dimension,)g(o)m(v)m(er)i(other)e(dimensions,)g(with)g(or)g(without)f
-(w)m(eigh)m(ts)i(and)f(masks\))g(and)f(of)150 1241 y(concatenating)f
-(\(across)f(\014les,)f(along)g(the)g(record)g(dimension,)f(along)i
-(other)f(dimensions\),)g(there)g(are)150 1351 y(curren)m(tly)g(no)f
-(few)m(er)h(than)f(\014v)m(e)h(op)s(erators)f(whic)m(h)h(tac)m(kle)h
-(these)f(t)m(w)m(o)h(purp)s(oses:)41 b Fy(ncra)p FD(,)31
-b Fy(ncea)p FD(,)g Fy(ncwa)p FD(,)150 1460 y Fy(ncrcat)p
-FD(,)d(and)h Fy(ncecat)p FD(.)39 b(These)29 b(op)s(erators)g(do)h
-(share)f(man)m(y)h(capabilities)2735 1427 y Fw(4)2774
-1460 y FD(,)g(but)e(eac)m(h)j(has)e(its)h(unique)150
-1570 y(sp)s(ecialt)m(y)-8 b(.)65 b(Tw)m(o)38 b(of)g(these)h(op)s
-(erators,)h Fy(ncrcat)c FD(and)h Fy(ncecat)p FD(,)i(are)f(for)g
-(concatenating)i(h)m(yp)s(erslabs)150 1679 y(across)35
-b(\014les.)52 b(The)34 b(other)g(t)m(w)m(o)i(op)s(erators,)g
-Fy(ncra)d FD(and)g Fy(ncea)p FD(,)i(are)f(for)h(a)m(v)m(eraging)h(h)m
-(yp)s(erslabs)d(across)150 1789 y(\014les)302 1756 y
-Fw(5)339 1789 y FD(.)41 b(First,)31 b(let's)g(describ)s(e)f(the)h
-(concatenators,)h(then)e(the)h(a)m(v)m(eragers.)150 1990
-y Fv(2.6.1)63 b(Concatenators)40 b Fo(ncrcat)i Fv(and)f
-Fo(ncecat)150 2137 y FD(Joining)25 b(indep)s(enden)m(t)f(\014les)h
-(together)i(along)f(a)g(record)f(dimension)g(is)g(called)h
-Fz(concatenation)p FD(.)42 b Fy(ncrcat)150 2246 y FD(is)33
-b(designed)h(for)f(concatenating)j(record)d(v)-5 b(ariables,)35
-b(while)f Fy(ncecat)e FD(is)h(designed)g(for)g(concatenating)150
-2356 y(\014xed)i(length)h(v)-5 b(ariables.)56 b(Consider)34
-b(\014v)m(e)i(\014les,)h(`)p Fy(85.nc)p FD(',)f(`)p Fy(86.nc)p
-FD(',)41 b(.)23 b(.)f(.)42 b(`)p Fy(89.nc)p FD(')34 b(eac)m(h)j(con)m
-(taining)g(a)150 2465 y(y)m(ear's)c(w)m(orth)f(of)h(data.)46
-b(Sa)m(y)33 b(y)m(ou)f(wish)g(to)h(create)h(from)d(them)h(a)h(single)g
-(\014le,)g(`)p Fy(8589.nc)p FD(')d(con)m(taining)150
-2575 y(all)37 b(the)f(data,)j(i.e.,)g(spanning)c(all)i(\014v)m(e)f(y)m
-(ears.)59 b(If)35 b(the)i(ann)m(ual)f(\014les)g(mak)m(e)h(use)f(of)g
-(the)h(same)f(record)150 2685 y(v)-5 b(ariable,)27 b(then)e
-Fy(ncrcat)f FD(will)h(do)g(the)g(job)g(nicely)h(with,)g(e.g.,)i
-Fy(ncrcat)h(8?.nc)g(8589.nc)p FD(.)37 b(The)24 b(n)m(um)m(b)s(er)150
-2794 y(of)f(records)g(in)g(the)g(input)f(\014les)h(is)g(arbitrary)f
-(and)h(can)g(v)-5 b(ary)23 b(from)f(\014le)h(to)h(\014le.)39
-b(See)23 b(Section)h(4.10)g([ncrcat)150 2904 y(netCDF)31
-b(Record)g(Concatenator],)h(page)f(151,)h(for)e(a)h(complete)h
-(description)e(of)h Fy(ncrcat)p FD(.)275 3064 y(Ho)m(w)m(ev)m(er,)51
-b(supp)s(ose)44 b(the)i(ann)m(ual)f(\014les)h(ha)m(v)m(e)h(no)e(record)
-g(v)-5 b(ariable,)51 b(and)45 b(th)m(us)g(their)g(data)i(are)150
-3173 y(all)c(\014xed)f(length.)78 b(F)-8 b(or)43 b(example,)j(the)d
-(\014les)g(ma)m(y)g(not)f(b)s(e)g(conceptually)i(sequen)m(tial,)j(but)
-42 b(rather)150 3283 y(mem)m(b)s(ers)37 b(of)g(the)h(same)g(group,)h
-(or)e Fz(ensem)m(ble)p FD(.)63 b(Mem)m(b)s(ers)37 b(of)h(an)f(ensem)m
-(ble)h(ma)m(y)h(ha)m(v)m(e)f(no)g(reason)150 3393 y(to)c(con)m(tain)h
-(a)f(record)f(dimension.)49 b Fy(ncecat)32 b FD(will)i(create)h(a)f
-(new)f(record)g(dimension)g(\(named)g Fz(record)150 3502
-y FD(b)m(y)e(default\))h(with)f(whic)m(h)g(to)h(glue)g(together)g(the)g
-(individual)e(\014les)i(in)m(to)g(the)f(single)h(ensem)m(ble)g(\014le.)
-43 b(If)150 3612 y Fy(ncecat)30 b FD(is)j(used)e(on)h(\014les)g(whic)m
-(h)g(con)m(tain)i(an)e(existing)h(record)f(dimension,)h(that)f(record)h
-(dimension)150 3721 y(is)40 b(con)m(v)m(erted)i(to)e(a)h
-(\014xed-length)f(dimension)f(of)i(the)f(same)g(name)g(and)g(a)g(new)g
-(record)g(dimension)150 3831 y(\(named)i Fy(record)p
-FD(\))e(is)i(created.)76 b(Consider)41 b(\014v)m(e)h(realizations,)47
-b(`)p Fy(85a.nc)p FD(',)d(`)p Fy(85b.nc)p FD(',)49 b(.)22
-b(.)h(.)41 b(`)p Fy(85e.nc)p FD(')150 3941 y(of)36 b(1985)i
-(predictions)e(from)g(the)g(same)g(climate)i(mo)s(del.)58
-b(Then)35 b Fy(ncecat)28 b(85?.nc)h(85_ens.nc)34 b FD(glues)150
-4050 y(the)j(individual)g(realizations)i(together)g(in)m(to)f(the)f
-(single)h(\014le,)h(`)p Fy(85_ens.nc)p FD('.)58 b(If)37
-b(an)g(input)f(v)-5 b(ariable)150 4160 y(w)m(as)43 b(dimensioned)g([)p
-Fy(lat)p FD(,)p Fy(lon)p FD(],)i(it)f(will)f(ha)m(v)m(e)i(dimensions)d
-([)p Fy(record)p FD(,)p Fy(lat)p FD(,)p Fy(lon)p FD(])f(in)i(the)g
-(output)g(\014le.)150 4269 y(A)30 b(restriction)i(of)f
-Fy(ncecat)e FD(is)i(that)g(the)g(h)m(yp)s(erslabs)f(of)g(the)h(pro)s
-(cessed)g(v)-5 b(ariables)31 b(m)m(ust)g(b)s(e)f(the)h(same)150
-4379 y(from)d(\014le)h(to)h(\014le.)40 b(Normally)30
-b(this)f(means)f(all)i(the)f(input)f(\014les)h(are)g(the)g(same)h
-(size,)g(and)e(con)m(tain)i(data)150 4489 y(on)35 b(di\013eren)m(t)h
-(realizations)i(of)d(the)h(same)g(v)-5 b(ariables.)56
-b(See)36 b(Section)g(4.5)h([ncecat)g(netCDF)f(Ensem)m(ble)150
-4598 y(Concatenator],)c(page)g(130,)f(for)g(a)f(complete)i(description)
-f(of)f Fy(ncecat)p FD(.)p 150 4702 1200 4 v 199 4769
-a Fw(4)275 4801 y Fu(Curren)n(tly)22 b Ft(ncea)h Fu(and)f
-Ft(ncrcat)i Fu(are)f(sym)n(b)r(olically)h(link)n(ed)e(to)h(the)f
-Ft(ncra)h Fu(executable,)h(whic)n(h)e(b)r(eha)n(v)n(es)g(sligh)n(tly)h
-(di\013er-)275 4888 y(en)n(tly)i(based)h(on)h(its)f(in)n(v)n(o)r
-(cation)h(name)f(\(i.e.,)i(`)p Ft(argv[0])p Fu('\).)38
-b(These)27 b(three)f(op)r(erators)i(share)e(the)g(same)h(source)g(co)r
-(de,)275 4975 y(but)d(merely)i(ha)n(v)n(e)f(di\013eren)n(t)g(inner)h
-(lo)r(ops.)199 5047 y Fw(5)275 5078 y Fu(The)j(third)h(a)n(v)n(eraging)
-g(op)r(erator,)j Ft(ncwa)p Fu(,)f(is)e(the)f(most)h(sophisticated)h(a)n
-(v)n(erager)g(in)e Fs(NCO)p Fu(.)h(Ho)n(w)n(ev)n(er,)h
-Ft(ncwa)g Fu(is)f(in)g(a)275 5166 y(di\013eren)n(t)22
-b(class)h(than)f Ft(ncra)i Fu(and)e Ft(ncea)h Fu(b)r(ecause)g(it)g(can)
-g(only)f(op)r(erate)h(on)g(a)g(single)g(\014le)g(p)r(er)g(in)n(v)n(o)r
-(cation)g(\(as)g(opp)r(osed)275 5253 y(to)f(m)n(ultiple)h(\014les\).)33
-b(On)22 b(that)g(single)h(\014le,)h(ho)n(w)n(ev)n(er,)f
-Ft(ncwa)g Fu(pro)n(vides)f(a)h(ric)n(her)f(set)h(of)g(a)n(v)n(eraging)g
-(options|including)275 5340 y(w)n(eigh)n(ting,)j(masking,)h(and)e
-(broadcasting.)p eop end
-%%Page: 16 18
-TeXDict begin 16 17 bop 150 -116 a FD(16)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y Fy(ncpdq)35 b FD(mak)m(es)k(it)e
-(p)s(ossible)g(to)h(concatenate)i(\014les)e(along)g(an)m(y)g
-(dimension,)g(not)g(just)f(the)g(record)150 408 y(dimension.)60
-b(First,)39 b(use)e Fy(ncpdq)e FD(to)j(con)m(v)m(ert)g(the)f(dimension)
-g(to)g(b)s(e)g(concatenated)i(\(i.e.,)h(extended)150
-518 y(with)33 b(data)h(from)f(other)g(\014les\))h(in)m(to)g(the)f
-(record)g(dimension.)49 b(Second,)34 b(use)f Fy(ncrcat)e
-FD(to)j(concatenate)150 628 y(these)k(\014les.)60 b(Finally)-8
-b(,)41 b(if)c(desirable,)i(use)e Fy(ncpdq)e FD(to)j(rev)m(ert)g(to)g
-(the)f(original)h(dimensionalit)m(y)-8 b(.)63 b(As)37
-b(a)150 737 y(concrete)c(example,)f(sa)m(y)g(that)g(\014les)f(`)p
-Fy(x_01.nc)p FD(',)f(`)p Fy(x_02.nc)p FD(',)36 b(.)22
-b(.)g(.)42 b(`)p Fy(x_10.nc)p FD(')30 b(con)m(tain)i(time-ev)m(olving)
-150 847 y(datasets)e(from)f(spatially)i(adjacen)m(t)f(regions.)41
-b(The)29 b(time)h(and)e(spatial)j(co)s(ordinates)f(are)f
-Fy(time)f FD(and)h Fy(x)p FD(,)150 956 y(resp)s(ectiv)m(ely)-8
-b(.)47 b(Initially)33 b(the)f(record)g(dimension)f(is)h
-Fy(time)p FD(.)44 b(Our)31 b(goal)i(is)f(to)h(create)g(a)g(single)f
-(\014le)g(that)150 1066 y(con)m(tains)g(joins)e(all)h(the)g(spatially)g
-(adjacen)m(t)h(regions)f(in)m(to)g(one)g(single)g(time-ev)m(olving)i
-(dataset.)390 1228 y Fy(for)47 b(idx)g(in)g(01)g(02)g(03)h(04)f(05)g
-(06)g(07)g(08)g(09)h(10;)f(do)g(#)g(Bourne)f(Shell)485
-1337 y(ncpdq)h(-a)g(x,time)f(x_${idx}.nc)f(foo_${idx}.nc)f(#)j(Make)g
-(x)h(record)e(dimension)390 1447 y(done)390 1557 y(ncrcat)g(foo_??.nc)f
-(out.nc)333 b(#)47 b(Concatenate)e(along)h(x)390 1666
-y(ncpdq)g(-a)i(time,x)e(out.nc)g(out.nc)g(#)h(Revert)f(to)i(time)e(as)h
-(record)f(dimension)275 1828 y FD(Note)33 b(that)g Fy(ncrcat)e
-FD(will)h(not)h(concatenate)i(\014xed-length)d(v)-5 b(ariables,)34
-b(whereas)e Fy(ncecat)f FD(concate-)150 1938 y(nates)22
-b(b)s(oth)e(\014xed-length)i(and)f(record)g(v)-5 b(ariables)22
-b(along)g(a)g(new)f(record)g(v)-5 b(ariable.)39 b(T)-8
-b(o)21 b(conserv)m(e)i(system)150 2047 y(memory)-8 b(,)31
-b(use)f Fy(ncrcat)f FD(where)h(p)s(ossible.)150 2251
-y Fv(2.6.2)63 b(Av)m(eragers)40 b Fo(ncea)p Fv(,)i Fo(ncra)p
-Fv(,)f(and)g Fo(ncwa)150 2398 y FD(The)33 b(di\013erences)h(b)s(et)m(w)
-m(een)g(the)g(a)m(v)m(eragers)h Fy(ncra)e FD(and)f Fy(ncea)h
-FD(are)h(analogous)h(to)f(the)f(di\013erences)h(b)s(e-)150
-2508 y(t)m(w)m(een)f(the)e(concatenators.)46 b Fy(ncra)31
-b FD(is)g(designed)g(for)h(a)m(v)m(eraging)h(record)f(v)-5
-b(ariables)32 b(from)f(at)h(least)h(one)150 2617 y(\014le,)40
-b(while)d Fy(ncea)g FD(is)g(designed)g(for)h(a)m(v)m(eraging)i(\014xed)
-d(length)h(v)-5 b(ariables)38 b(from)f(m)m(ultiple)h(\014les.)62
-b Fy(ncra)150 2727 y FD(p)s(erforms)30 b(a)j(simple)f(arithmetic)h(a)m
-(v)m(erage)i(o)m(v)m(er)e(the)f(record)g(dimension)f(of)i(all)f(the)h
-(input)e(\014les,)h(with)150 2836 y(eac)m(h)h(record)f(ha)m(ving)g(an)g
-(equal)h(w)m(eigh)m(t)g(in)f(the)g(a)m(v)m(erage.)48
-b Fy(ncea)31 b FD(p)s(erforms)f(a)j(simple)f(arithmetic)h(a)m(v-)150
-2946 y(erage)f(of)f(all)h(the)f(input)f(\014les,)h(with)g(eac)m(h)h
-(\014le)f(ha)m(ving)h(an)e(equal)i(w)m(eigh)m(t)g(in)f(the)g(a)m(v)m
-(erage.)45 b(Note)32 b(that)150 3056 y Fy(ncra)40 b FD(cannot)h(a)m(v)m
-(erage)i(\014xed-length)e(v)-5 b(ariables,)44 b(but)c
-Fy(ncea)g FD(can)g(a)m(v)m(erage)k(b)s(oth)c(\014xed-length)h(and)150
-3165 y(record)36 b(v)-5 b(ariables.)58 b(T)-8 b(o)37
-b(conserv)m(e)g(system)f(memory)-8 b(,)38 b(use)e Fy(ncra)f
-FD(rather)h(than)g Fy(ncea)f FD(where)g(p)s(ossible)150
-3275 y(\(e.g.,)j(if)d(eac)m(h)h Fz(input-\014le)k FD(is)35
-b(one)g(record)g(long\).)55 b(The)35 b(\014le)g(output)g(from)f
-Fy(ncea)g FD(will)h(ha)m(v)m(e)h(the)g(same)150 3384
-y(dimensions)f(\(meaning)i(dimension)e(names)h(as)h(w)m(ell)g(as)f
-(sizes\))h(as)f(the)g(input)g(h)m(yp)s(erslabs)e(\(see)j(Sec-)150
-3494 y(tion)32 b(4.4)g([ncea)h(netCDF)f(Ensem)m(ble)f(Av)m(erager],)j
-(page)e(128,)h(for)f(a)g(complete)g(description)g(of)f
-Fy(ncea)p FD(\).)150 3604 y(The)36 b(\014le)h(output)f(from)g
-Fy(ncra)g FD(will)h(ha)m(v)m(e)g(the)g(same)g(dimensions)f(as)h(the)g
-(input)e(h)m(yp)s(erslabs)h(except)150 3713 y(for)30
-b(the)g(record)g(dimension,)g(whic)m(h)g(will)h(ha)m(v)m(e)g(a)g(size)g
-(of)f(1)h(\(see)g(Section)g(4.9)h([ncra)e(netCDF)h(Record)150
-3823 y(Av)m(erager],)h(page)f(149,)h(for)f(a)f(complete)i(description)f
-(of)f Fy(ncra)p FD(\).)150 4027 y Fv(2.6.3)63 b(In)m(terp)s(olator)41
-b Fo(ncflint)150 4174 y Fy(ncflint)20 b FD(can)i(in)m(terp)s(olate)i
-(data)f(b)s(et)m(w)m(een)g(or)f(t)m(w)m(o)h(\014les.)38
-b(Since)22 b(no)g(other)g(op)s(erators)h(ha)m(v)m(e)g(this)f(abilit)m
-(y)-8 b(,)150 4283 y(the)26 b(description)g(of)h(in)m(terp)s(olation)g
-(is)f(giv)m(en)h(fully)f(on)g(the)g Fy(ncflint)e FD(reference)j(page)g
-(\(see)g(Section)g(4.6)150 4393 y([nc\015in)m(t)f(netCDF)h(File)h(In)m
-(terp)s(olator],)g(page)f(132\).)41 b(Note)28 b(that)f(this)f
-(capabilit)m(y)i(also)f(allo)m(ws)h Fy(ncflint)150 4503
-y FD(to)j(linearly)g(rescale)h(an)m(y)f(data)g(in)f(a)g(netCDF)h
-(\014le,)g(e.g.,)h(to)f(con)m(v)m(ert)h(b)s(et)m(w)m(een)f(di\013ering)
-f(units.)150 4742 y FB(2.7)68 b(Large)46 b(Num)l(b)t(ers)f(of)g(Files)
-150 4902 y FD(Occasionally)36 b(one)f(desires)f(to)h(digest)h(\(i.e.,)h
-(concatenate)g(or)d(a)m(v)m(erage\))k(h)m(undreds)32
-b(or)i(thousands)g(of)150 5011 y(input)d(\014les.)43
-b(Unfortunately)-8 b(,)33 b(data)f(arc)m(hiv)m(es)h(\(e.g.,)h
-FC(NASA)29 b(EOSDIS)p FD(\))j(ma)m(y)g(not)f(name)h(netCDF)g(\014les)
-150 5121 y(in)k(a)h(format)g(understo)s(o)s(d)e(b)m(y)h(the)h(`)p
-Fy(-n)30 b Fq(loop)11 b FD(')35 b(switc)m(h)i(\(see)g(Section)g(3.5)h
-([Sp)s(ecifying)e(Input)f(Files],)150 5230 y(page)27
-b(26\))g(that)g(automagically)i(generates)f(arbitrary)e(n)m(um)m(b)s
-(ers)f(of)h(input)f(\014lenames.)40 b(The)25 b(`)p Fy(-n)30
-b Fq(loop)11 b FD(')150 5340 y(switc)m(h)22 b(has)f(the)g(virtue)h(of)f
-(b)s(eing)g(concise,)k(and)20 b(of)i(minimizing)f(the)h(command)f
-(line.)38 b(This)21 b(helps)f(k)m(eeps)p eop end
-%%Page: 17 19
-TeXDict begin 17 18 bop 150 -116 a FD(Chapter)30 b(2:)41
-b(Op)s(erator)30 b(Strategies)2264 b(17)150 299 y(output)24
-b(\014le)g(small)h(since)g(the)f(command)g(line)h(is)f(stored)h(as)f
-(metadata)i(in)e(the)h Fy(history)d FD(attribute)j(\(see)150
-408 y(Section)35 b(3.28)g([History)g(A)m(ttribute],)h(page)f(63\).)53
-b(Ho)m(w)m(ev)m(er,)37 b(the)d(`)p Fy(-n)c Fq(loop)11
-b FD(')33 b(switc)m(h)h(is)g(useless)g(when)150 518 y(there)22
-b(is)g(no)g(simple,)i(arithmetic)g(pattern)e(to)h(the)f(input)f
-(\014lenames)h(\(e.g.,)k(`)p Fy(h00001.nc)p FD(',)c(`)p
-Fy(h00002.nc)p FD(',)156 628 y(.)g(.)g(.)42 b(`)p Fy(h90210.nc)p
-FD(')n(\).)h(Moreo)m(v)m(er,)34 b(\014lename)d(globbing)h(do)s(es)f
-(not)g(w)m(ork)h(when)e(the)h(input)f(\014les)i(are)f(to)s(o)150
-737 y(n)m(umerous)26 b(or)g(their)h(names)g(are)g(to)s(o)g(length)m(y)g
-(\(when)f(strung)g(together)i(as)f(a)g(single)h(argumen)m(t\))f(to)h(b)
-s(e)150 847 y(passed)k(b)m(y)g(the)g(calling)h(shell)g(to)f(the)h
-FC(NCO)e FD(op)s(erator)2051 814 y Fw(6)2089 847 y FD(.)46
-b(When)32 b(this)g(o)s(ccurs,)g(the)g FC(ANSI)h FD(C-standard)150
-956 y Fy(argc)p FD(-)p Fy(argv)39 b FD(metho)s(d)i(of)g(passing)h
-(argumen)m(ts)f(from)g(the)g(calling)i(shell)f(to)g(a)f(C-program)g
-(\(i.e.,)46 b(an)150 1066 y FC(NCO)34 b FD(op)s(erator\))i(breaks)e(do)
-m(wn.)54 b(There)34 b(are)h(\(at)h(least\))g(three)f(alternativ)m(e)i
-(metho)s(ds)d(of)h(sp)s(ecifying)150 1176 y(the)c(input)e(\014lenames)h
-(to)i FC(NCO)e FD(in)g(en)m(vironmen)m(t-limited)i(situations.)275
-1336 y(The)25 b(recommended)h(metho)s(d)g(for)g(sending)g(v)m(ery)h
-(large)g(n)m(um)m(b)s(ers)e(\(h)m(undreds)g(or)h(more,)i(t)m
-(ypically\))150 1445 y(of)23 b(input)g(\014lenames)g(to)h(the)f(m)m
-(ulti-\014le)h(op)s(erators)f(is)h(to)f(pass)g(the)h(\014lenames)f
-(with)g(the)g FC(UNIX)h Fz(standard)150 1555 y(input)31
-b FD(feature,)g(ak)-5 b(a)32 b Fy(stdin)p FD(:)390 1715
-y Fy(#)47 b(Pipe)g(large)f(numbers)g(of)h(filenames)f(to)h(stdin)390
-1825 y(/bin/ls)f(|)h(grep)g(${CASEID}_'......'.nc)42
-b(|)47 b(ncecat)f(-o)i(foo.nc)275 1985 y FD(This)43 b(metho)s(d)h(a)m
-(v)m(oids)j(all)e(constrain)m(ts)h(on)e(command)h(line)g(size)g(imp)s
-(osed)f(b)m(y)h(the)f(op)s(erating)150 2094 y(system.)39
-b(A)26 b(dra)m(wbac)m(k)g(to)g(this)f(metho)s(d)g(is)g(that)h(the)g
-Fy(history)d FD(attribute)k(\(see)f(Section)g(3.28)h([History)150
-2204 y(A)m(ttribute],)34 b(page)g(63\))f(do)s(es)f(not)h(record)f(the)h
-(name)g(of)f(an)m(y)h(input)f(\014les)g(since)h(the)f(names)h(w)m(ere)g
-(not)150 2313 y(passed)e(on)g(the)g(command)g(line.)44
-b(This)30 b(mak)m(es)j(determining)e(the)g(data)h(pro)m(v)m(enance)g
-(at)g(a)g(later)g(date)150 2423 y(di\016cult.)39 b(T)-8
-b(o)26 b(remedy)f(this)g(situation,)j(m)m(ulti-\014le)e(op)s(erators)g
-(store)g(the)f(n)m(um)m(b)s(er)f(of)i(input)e(\014les)i(in)f(the)150
-2533 y Fy(nco_input_file_number)32 b FD(global)39 b(attribute)g(and)e
-(the)h(input)e(\014le)i(list)h(itself)f(in)g(the)g Fy(nco_input_)150
-2642 y(file_list)g FD(global)43 b(attribute)e(\(see)h(Section)g(3.29)h
-([File)f(List)f(A)m(ttributes],)k(page)d(63\).)74 b(Although)150
-2752 y(this)32 b(do)s(es)g(not)h(preserv)m(e)g(the)f(exact)i(command)e
-(used)g(to)h(generate)h(the)e(\014le,)i(it)f(do)s(es)f(retains)g(all)i
-(the)150 2861 y(information)d(required)e(to)i(reconstruct)g(the)g
-(command)f(and)g(determine)g(the)h(data)g(pro)m(v)m(enance.)275
-3021 y(A)45 b(second)g(option)g(is)g(to)h(use)e(the)h
-FC(UNIX)h Fy(xargs)e FD(command.)84 b(This)44 b(simple)h(example)g
-(selects)150 3131 y(as)39 b(input)e(to)i Fy(xargs)e FD(all)i(the)g
-(\014lenames)f(in)g(the)h(curren)m(t)f(directory)g(that)h(matc)m(h)h(a)
-e(giv)m(en)i(pattern.)150 3241 y(F)-8 b(or)40 b(illustration,)i
-(consider)d(a)h(user)e(trying)h(to)h(a)m(v)m(erage)i(millions)d(of)g
-(\014les)g(whic)m(h)g(eac)m(h)h(ha)m(v)m(e)g(a)g(six)150
-3350 y(c)m(haracter)27 b(\014lename.)39 b(If)25 b(the)h(shell)g
-(bu\013er)e(can)i(not)g(hold)f(the)h(results)f(of)g(the)h(corresp)s
-(onding)f(globbing)150 3460 y(op)s(erator,)37 b(`)p Fy(??????.nc)p
-FD(',)e(then)h(the)f(\014lename)h(globbing)g(tec)m(hnique)g(will)g
-(fail.)57 b(Instead)35 b(w)m(e)h(express)150 3569 y(the)43
-b(\014lename)h(pattern)f(as)h(an)f(extended)g(regular)h(expression,)i
-(`)p Fy(......\\.nc)p FD(')41 b(\(see)j(Section)g(3.11)150
-3679 y([Subsetting)29 b(V)-8 b(ariables],)32 b(page)e(36\).)41
-b(W)-8 b(e)31 b(use)e Fy(grep)f FD(to)i(\014lter)f(the)h(directory)f
-(listing)i(for)e(this)g(pattern)150 3789 y(and)i(to)i(pip)s(e)d(the)i
-(results)g(to)g Fy(xargs)e FD(whic)m(h,)j(in)e(turn,)g(passes)h(the)g
-(matc)m(hing)g(\014lenames)g(to)h(an)e FC(NCO)150 3898
-y FD(m)m(ulti-\014le)g(op)s(erator,)g(e.g.,)h Fy(ncecat)p
-FD(.)390 4058 y Fy(#)47 b(Use)g(xargs)g(to)g(transfer)e(filenames)h(on)
-h(the)g(command)f(line)390 4168 y(/bin/ls)g(|)h(grep)g
-(${CASEID}_'......'.nc)42 b(|)47 b(xargs)g(-x)g(ncecat)f(-o)h(foo.nc)
-275 4328 y FD(The)39 b(single)i(quotes)g(protect)h(the)e(only)h
-(sensitiv)m(e)g(parts)f(of)h(the)f(extended)h(regular)f(expression)150
-4437 y(\(the)c Fy(grep)f FD(argumen)m(t\),)j(and)d(allo)m(w)j(shell)e
-(in)m(terp)s(olation)h(\(the)f Fy(${CASEID})d FD(v)-5
-b(ariable)37 b(substitution\))150 4547 y(to)42 b(pro)s(ceed)e
-(unhindered)f(on)h(the)h(rest)g(of)g(the)g(command.)72
-b Fy(xargs)40 b FD(uses)g(the)h FC(UNIX)h FD(pip)s(e)d(feature)150
-4657 y(to)d(app)s(end)d(the)j(suitably)f(\014ltered)g(input)f(\014le)i
-(list)f(to)h(the)g(end)e(of)i(the)f Fy(ncecat)e FD(command)i(options.)
-150 4766 y(The)28 b Fy(-o)i(foo.nc)d FD(switc)m(h)i(ensures)f(that)h
-(the)g(input)f(\014les)g(supplied)f(b)m(y)i Fy(xargs)e
-FD(are)i(not)g(confused)f(with)150 4876 y(the)33 b(output)f(\014le)g
-(name.)47 b Fy(xargs)31 b FD(do)s(es,)i(unfortunately)-8
-b(,)33 b(ha)m(v)m(e)g(its)g(o)m(wn)g(limit)g(\(usually)f(ab)s(out)g
-(20,000)p 150 4979 1200 4 v 199 5047 a Fw(6)275 5078
-y Fu(The)i(exact)g(length)g(whic)n(h)g(exceeds)h(the)e(op)r(erating)j
-(system)e(in)n(ternal)g(limit)h(for)g(command)f(line)h(lengths)g(v)l
-(aries)275 5166 y(from)26 b Fs(OS)g Fu(to)g Fs(OS)g Fu(and)f(from)h
-(shell)h(to)f(shell.)35 b Fs(GNU)26 b Ft(bash)h Fu(ma)n(y)e(not)h(ha)n
-(v)n(e)f(an)n(y)g(arbitrary)h(\014xed)e(limits)j(to)f(the)g(size)g(of)
-275 5253 y(command)j(line)g(argumen)n(ts.)45 b(Man)n(y)29
-b Fs(OS)p Fu(s)g(cannot)g(handle)g(command)h(line)f(argumen)n(ts)g
-(\(including)g(results)h(of)g(\014le)275 5340 y(globbing\))c(exceeding)
-g(4096)h(c)n(haracters.)p eop end
-%%Page: 18 20
-TeXDict begin 18 19 bop 150 -116 a FD(18)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(c)m(haracters\))d(on)d(the)h
-(size)h(of)f(command)g(lines)g(it)g(can)g(pass.)39 b(Giv)m(e)26
-b Fy(xargs)e FD(the)h(`)p Fy(-x)p FD(')f(switc)m(h)i(to)f(ensure)f(it)
-150 408 y(dies)30 b(if)f(it)h(reac)m(hes)h(this)e(in)m(ternal)i(limit.)
-41 b(When)29 b(this)h(o)s(ccurs,)f(use)h(either)g(the)f
-Fy(stdin)f FD(metho)s(d)h(ab)s(o)m(v)m(e,)150 518 y(or)h(the)h(sym)m(b)
-s(olic)g(link)f(presen)m(ted)g(next.)275 687 y(Ev)m(en)44
-b(when)g(its)h(in)m(ternal)g(limits)h(ha)m(v)m(e)f(not)g(b)s(een)f
-(reac)m(hed,)49 b(the)c Fy(xargs)e FD(tec)m(hnique)i(ma)m(y)h(not)150
-797 y(b)s(e)38 b(sophisticated)j(enough)e(to)g(handle)g(all)h
-(situations.)68 b(A)39 b(full)g(scripting)g(language)i(lik)m(e)f(P)m
-(erl)g(can)150 906 y(handle)c(an)m(y)i(lev)m(el)g(of)f(complexit)m(y)i
-(of)e(\014ltering)g(input)f(\014lenames,)j(and)d(an)m(y)h(n)m(um)m(b)s
-(er)f(of)h(\014lenames.)150 1016 y(The)i(tec)m(hnique)h(of)g(last)g
-(resort)g(is)f(to)h(write)g(a)g(script)f(that)h(creates)h(sym)m(b)s
-(olic)e(links)h(b)s(et)m(w)m(een)g(the)150 1125 y(irregular)24
-b(input)f(\014lenames)h(and)f(a)h(set)g(of)g(regular,)i(arithmetic)f
-(\014lenames)f(that)g(the)g(`)p Fy(-n)30 b Fq(loop)11
-b FD(')22 b(switc)m(h)150 1235 y(understands.)44 b(F)-8
-b(or)33 b(example,)g(the)f(follo)m(wing)i(P)m(erl)f(script)f(a)g
-(monotonically)i(en)m(umerated)f(sym)m(b)s(olic)150 1344
-y(link)27 b(to)h(up)e(to)i(one)f(million)h(`)p Fy(.nc)p
-FD(')f(\014les)g(in)f(a)i(directory)-8 b(.)40 b(If)27
-b(there)g(are)h(999,999)i(netCDF)e(\014les)f(presen)m(t,)150
-1454 y(the)k(links)f(are)g(named)g(`)p Fy(000001.nc)p
-FD(')f(to)i(`)p Fy(999999.nc)p FD(':)390 1623 y Fy(#)47
-b(Create)g(enumerated)e(symbolic)g(links)390 1733 y(/bin/ls)h(|)h(grep)
-g(\\.nc)g(|)g(perl)g(-e)g(\\)390 1842 y('$idx=1;while\(<STDIN>\){c)o
-(hop;)o(syml)o(ink)41 b($_,sprintf\("\04506d.nc",$idx)o(++\);)o(}')390
-1952 y(ncecat)46 b(-n)h(999999,6,1)e(000001.nc)h(foo.nc)390
-2061 y(#)h(Remove)g(symbolic)e(links)h(when)h(finished)390
-2171 y(/bin/rm)f(??????.nc)275 2340 y FD(The)32 b(`)p
-Fy(-n)e Fq(loop)11 b FD(')32 b(option)h(tells)i(the)e
-FC(NCO)g FD(op)s(erator)g(to)h(automatically)i(generate)f(the)e
-(\014lnames)g(of)150 2449 y(the)i(sym)m(b)s(olic)g(links.)54
-b(This)35 b(circum)m(v)m(en)m(ts)h(an)m(y)f FC(OS)g FD(and)f(shell)h
-(limits)h(on)e(command)h(line)g(size.)55 b(The)150 2559
-y(sym)m(b)s(olic)23 b(links)f(are)g(easily)i(remo)m(v)m(ed)f(once)g
-FC(NCO)f FD(is)g(\014nished.)37 b(One)21 b(dra)m(wbac)m(k)i(to)g(this)f
-(metho)s(d)g(is)g(that)150 2669 y(the)34 b Fy(history)f
-FD(attribute)h(\(see)h(Section)g(3.28)h([History)f(A)m(ttribute],)i
-(page)e(63\))g(retains)f(the)h(\014lename)150 2778 y(list)g(of)f(the)g
-(sym)m(b)s(olic)g(links,)h(rather)f(than)g(the)g(data)h(\014les)f
-(themselv)m(es.)53 b(This)33 b(mak)m(es)i(it)f(di\016cult)g(to)150
-2888 y(determine)c(the)h(data)g(pro)m(v)m(enance)h(at)f(a)f(later)i
-(date.)150 3149 y FB(2.8)68 b(Large)46 b(Datasets)150
-3308 y Fz(Large)33 b(datasets)k FD(are)c(those)g(\014les)f(that)h(are)g
-(comparable)g(in)f(size)h(to)g(the)g(amoun)m(t)g(of)f(random)g(access)
-150 3418 y(memory)c(\()p FC(RAM)p FD(\))h(in)f(y)m(our)g(computer.)40
-b(Man)m(y)29 b(users)e(of)h FC(NCO)g FD(w)m(ork)g(with)g(\014les)g
-(larger)h(than)e(100)32 b(MB)q(.)150 3527 y(Files)j(this)f(large)g(not)
-h(only)e(push)g(the)h(curren)m(t)f(edge)i(of)f(storage)h(tec)m(hnology)
--8 b(,)38 b(they)33 b(presen)m(t)h(sp)s(ecial)150 3637
-y(problems)i(for)g(programs)h(whic)m(h)f(attempt)i(to)g(access)g(the)e
-(en)m(tire)i(\014le)f(at)g(once,)j(suc)m(h)c(as)h Fy(ncea)f
-FD(and)150 3746 y Fy(ncecat)p FD(.)h(If)23 b(y)m(ou)g(w)m(ork)h(with)f
-(a)h(300)31 b(MB)24 b(\014les)g(on)f(a)h(mac)m(hine)g(with)f(only)g(32)
-32 b(MB)24 b(of)f(memory)h(then)f(y)m(ou)150 3856 y(will)29
-b(need)f(large)i(amoun)m(ts)f(of)f(sw)m(ap)h(space)g(\(virtual)g
-(memory)g(on)f(disk\))h(and)f FC(NCO)g FD(will)h(w)m(ork)f(slo)m(wly)-8
-b(,)150 3966 y(or)32 b(ev)m(en)g(fail.)46 b(There)31
-b(is)h(no)f(easy)h(solution)h(for)e(this.)45 b(The)31
-b(b)s(est)g(strategy)j(is)d(to)i(w)m(ork)f(on)f(a)h(mac)m(hine)150
-4075 y(with)38 b(su\016cien)m(t)h(amoun)m(ts)f(of)g(memory)g(and)g(sw)m
-(ap)g(space.)65 b(Since)38 b(ab)s(out)g(2004,)k(man)m(y)c(users)g(ha)m
-(v)m(e)150 4185 y(b)s(egun)d(to)j(pro)s(duce)d(or)i(analyze)h(\014les)f
-(exceeding)g(2)31 b(GB)38 b(in)e(size.)60 b(These)37
-b(users)e(should)h(familiarize)150 4294 y(themselv)m(es)d(with)f
-FC(NCO)p FD('s)h(Large)g(File)g(Supp)s(ort)d(\()p FC(LFS)p
-FD(\))j(capabilities)h(\(see)g(Section)f(3.10)h([Large)f(File)150
-4404 y(Supp)s(ort],)40 b(page)g(35\).)69 b(The)39 b(next)g(section)i
-(will)e(increase)h(y)m(our)g(familiarit)m(y)h(with)e
-FC(NCO)p FD('s)g(memory)150 4514 y(requiremen)m(ts.)70
-b(With)41 b(this)f(kno)m(wledge)h(y)m(ou)g(ma)m(y)f(re-design)h(y)m
-(our)f(data)h(reduction)f(approac)m(h)g(to)150 4623 y(divide)30
-b(the)h(problem)f(in)m(to)h(pieces)g(solv)-5 b(able)31
-b(in)g(memory-limited)g(situations.)275 4792 y(If)43
-b(y)m(our)i(lo)s(cal)g(mac)m(hine)g(has)f(problems)g(w)m(orking)g(with)
-g(large)i(\014les,)i(try)c(running)e FC(NCO)i FD(from)150
-4902 y(a)38 b(more)f(p)s(o)m(w)m(erful)g(mac)m(hine,)i(suc)m(h)e(as)h
-(a)f(net)m(w)m(ork)h(serv)m(er.)62 b(Certain)37 b(mac)m(hine)h(arc)m
-(hitectures,)i(e.g.,)150 5011 y(Cra)m(y)24 b FC(UNICOS)p
-FD(,)g(ha)m(v)m(e)i(sp)s(ecial)e(commands)g(whic)m(h)f(allo)m(w)j(one)e
-(to)h(increase)f(the)h(amoun)m(t)f(of)g(in)m(teractiv)m(e)150
-5121 y(memory)-8 b(.)39 b(On)22 b(Cra)m(y)g(systems,)j(try)e(to)g
-(increase)h(the)f(a)m(v)-5 b(ailable)25 b(memory)e(with)g(the)g
-Fy(ilimit)e FD(command.)150 5230 y(If)g(y)m(ou)h(get)g(a)g
-(memory-related)h(core)f(dump)e(\(e.g.,)25 b(`)p Fy(Error)k(exit)g
-(\(core)g(dumped\))p FD('\))20 b(on)i(a)f FC(GNU)p FD(/Lin)m(ux)150
-5340 y(system,)31 b(try)f(increasing)h(the)g(pro)s(cess-a)m(v)-5
-b(ailable)32 b(memory)e(with)h Fy(ulimit)p FD(.)p eop
-end
-%%Page: 19 21
-TeXDict begin 19 20 bop 150 -116 a FD(Chapter)30 b(2:)h(Op)s(erator)f
-(Strategies)2274 b(19)275 299 y(The)34 b(sp)s(eed)f(of)i(the)g
-FC(NCO)f FD(op)s(erators)h(also)g(dep)s(ends)e(on)h(\014le)h(size.)54
-b(When)34 b(pro)s(cessing)g(large)i(\014les)150 408 y(the)29
-b(op)s(erators)h(ma)m(y)g(app)s(ear)e(to)i(hang,)g(or)f(do)h(nothing,)f
-(for)g(large)i(p)s(erio)s(ds)c(of)j(time.)41 b(In)29
-b(order)f(to)i(see)150 518 y(what)35 b(the)h(op)s(erator)g(is)f
-(actually)i(doing,)g(it)f(is)f(useful)g(to)h(activ)-5
-b(ate)38 b(a)e(more)g(v)m(erb)s(ose)f(output)g(mo)s(de.)150
-628 y(This)h(is)h(accomplished)g(b)m(y)g(supplying)f(a)h(n)m(um)m(b)s
-(er)e(greater)j(than)30 b(0)38 b(to)f(the)g(`)p Fy(-D)30
-b Fq(debug-level)11 b FD(')34 b(\(or)150 737 y(`)p Fy(--debug-level)p
-FD(',)29 b(or)j(`)p Fy(--dbg_lvl)p FD('\))e(switc)m(h.)45
-b(When)31 b(the)h Fz(debug-lev)m(el)37 b FD(is)31 b(nonzero,)i(the)f
-(op)s(erators)150 847 y(rep)s(ort)42 b(their)h(curren)m(t)f(status)h
-(to)h(the)f(terminal)g(through)f(the)h Fz(stderr)48 b
-FD(facilit)m(y)-8 b(.)81 b(Using)43 b(`)p Fy(-D)p FD(')f(do)s(es)150
-956 y(not)37 b(slo)m(w)f(the)h(op)s(erators)f(do)m(wn.)58
-b(Cho)s(ose)36 b(a)h Fz(debug-lev)m(el)k FD(b)s(et)m(w)m(een)31
-b(1)37 b(and)30 b(3)36 b(for)g(most)h(situations,)150
-1066 y(e.g.,)49 b Fy(ncea)29 b(-D)h(2)g(85.nc)f(86.nc)g(8586.nc)p
-FD(.)80 b(A)31 b(full)44 b(description)g(of)g(ho)m(w)g(to)h(estimate)h
-(the)f(actual)150 1176 y(amoun)m(t)33 b(of)g(memory)f(the)h(m)m
-(ulti-\014le)h FC(NCO)e FD(op)s(erators)h(consume)f(is)h(giv)m(en)h(in)
-e(Section)h(2.9)h([Memory)150 1285 y(Requiremen)m(ts],)d(page)g(19.)150
-1507 y FB(2.9)68 b(Memory)45 b(Requiremen)l(ts)150 1667
-y FD(Man)m(y)38 b(p)s(eople)g(use)g FC(NCO)f FD(on)h(gargan)m(tuan)g
-(\014les)g(whic)m(h)g(dw)m(arf)f(the)h(memory)f(a)m(v)-5
-b(ailable)40 b(\(free)f FC(RAM)150 1776 y FD(plus)c(sw)m(ap)g(space\))h
-(ev)m(en)h(on)e(to)s(da)m(y's)h(p)s(o)m(w)m(erful)f(mac)m(hines.)57
-b(These)36 b(users)e(w)m(an)m(t)j FC(NCO)e FD(to)h(consume)150
-1886 y(the)26 b(least)g(memory)f(p)s(ossible)g(so)h(that)g(their)f
-(scripts)h(do)f(not)h(ha)m(v)m(e)g(to)g(tediously)g(cut)g(\014les)f(in)
-m(to)h(smaller)150 1995 y(pieces)i(that)h(\014t)e(in)m(to)i(memory)-8
-b(.)40 b(W)-8 b(e)29 b(commend)e(these)i(greedy)f(users)e(for)i
-(pushing)e FC(NCO)h FD(to)i(its)f(limits!)275 2155 y(This)21
-b(section)i(describ)s(es)f(the)g(memory)g FC(NCO)g FD(requires)g
-(during)f(op)s(eration.)38 b(The)22 b(required)f(memory)150
-2264 y(is)40 b(based)g(on)g(the)h(underlying)e(algorithms.)71
-b(The)40 b(description)h(b)s(elo)m(w)f(is)g(the)h(memory)f(usage)h(p)s
-(er)150 2374 y(thread.)68 b(Users)40 b(with)f(shared)g(memory)h(mac)m
-(hines)g(ma)m(y)g(use)g(the)f(threaded)h FC(NCO)f FD(op)s(erators)h
-(\(see)150 2484 y(Section)f(3.3)f([Op)s(enMP)f(Threading],)i(page)g
-(23\).)64 b(The)37 b(p)s(eak)g(and)g(sustained)h(memory)f(usage)i(will)
-150 2593 y(scale)44 b(accordingly)-8 b(,)48 b(i.e.,)f(b)m(y)c(the)g(n)m
-(um)m(b)s(er)e(of)i(threads.)78 b(Memory)43 b(consumption)f(patterns)h
-(of)g(all)150 2703 y(op)s(erators)31 b(are)f(similar,)h(with)f(the)h
-(exception)g(of)g Fy(ncap2)p FD(.)150 2892 y Fv(2.9.1)63
-b(Single)41 b(and)g(Multi-\014le)h(Op)s(erators)150 3039
-y FD(The)26 b(m)m(ulti-\014le)h(op)s(erators)f(curren)m(tly)g(comprise)
-g(the)g(record)g(op)s(erators,)i Fy(ncra)c FD(and)i Fy(ncrcat)p
-FD(,)f(and)h(the)150 3148 y(ensem)m(ble)c(op)s(erators,)j
-Fy(ncea)20 b FD(and)i Fy(ncecat)p FD(.)36 b(The)22 b(record)f(op)s
-(erators)i(require)e Fr(much)26 b(less)j FD(memory)22
-b(than)150 3258 y(the)32 b(ensem)m(ble)h(op)s(erators.)46
-b(This)31 b(is)h(b)s(ecause)h(the)f(record)g(op)s(erators)g(op)s(erate)
-h(on)f(one)g(single)h(record)150 3367 y(\(i.e.,)47 b(time-slice\))e(at)
-f(a)e(time,)47 b(wherease)c(the)f(ensem)m(ble)h(op)s(erators)g(retriev)
-m(e)h(the)f(en)m(tire)g(v)-5 b(ariable)150 3477 y(in)m(to)34
-b(memory)-8 b(.)51 b(Let)34 b Fn(M)10 b(S)38 b FD(b)s(e)33
-b(the)h(p)s(eak)f(sustained)g(memory)g(demand)g(of)h(an)f(op)s(erator,)
-i Fn(F)13 b(T)46 b FD(b)s(e)33 b(the)150 3587 y(memory)42
-b(required)g(to)h(store)g(the)f(en)m(tire)h(con)m(ten)m(ts)h(of)f(all)g
-(the)g(v)-5 b(ariables)43 b(to)g(b)s(e)e(pro)s(cessed)h(in)g(an)150
-3696 y(input)c(\014le,)j Fn(F)13 b(R)40 b FD(b)s(e)e(the)h(memory)g
-(required)f(to)h(store)h(the)f(en)m(tire)h(con)m(ten)m(ts)g(of)f(a)h
-(single)f(record)g(of)150 3806 y(eac)m(h)32 b(of)f(the)f(v)-5
-b(ariables)32 b(to)f(b)s(e)f(pro)s(cessed)g(in)g(an)h(input)e(\014le,)i
-Fn(V)21 b(R)31 b FD(b)s(e)f(the)h(memory)f(required)g(to)h(store)150
-3915 y(a)37 b(single)h(record)e(of)h(the)g(largest)i(record)d(v)-5
-b(ariable)38 b(to)f(b)s(e)g(pro)s(cessed)f(in)g(an)h(input)f(\014le,)j
-Fn(V)20 b(T)50 b FD(b)s(e)36 b(the)150 4025 y(memory)f(required)f(to)i
-(store)g(the)f(largest)i(v)-5 b(ariable)35 b(to)h(b)s(e)f(pro)s(cessed)
-f(in)h(an)g(input)f(\014le,)j Fn(V)20 b(I)42 b FD(b)s(e)35
-b(the)150 4134 y(memory)i(required)f(to)i(store)g(the)f(largest)h(v)-5
-b(ariable)38 b(whic)m(h)f(is)g(not)g(pro)s(cessed,)i(but)d(is)h(copied)
-g(from)150 4244 y(the)31 b(initial)g(\014le)g(to)g(the)g(output)f
-(\014le.)41 b(All)31 b(op)s(erators)g(require)f Fn(M)10
-b(I)33 b FD(=)25 b Fn(V)20 b(I)37 b FD(during)30 b(the)g(initial)i(cop)
-m(ying)150 4354 y(of)k(v)-5 b(ariables)36 b(from)f(the)h(\014rst)f
-(input)g(\014le)g(to)i(the)f(output)f(\014le.)57 b(This)34
-b(is)i(the)g Fr(initial)45 b FD(\(and)36 b(transien)m(t\))150
-4463 y(memory)25 b(demand.)37 b(The)25 b Fr(sustaine)-5
-b(d)35 b FD(memory)24 b(demand)g(is)h(that)g(memory)g(required)e(b)m(y)
-i(the)g(op)s(erators)150 4573 y(during)32 b(the)h(pro)s(cessing)f
-(\(i.e.,)j(a)m(v)m(eraging,)i(concatenation\))e(phase)e(whic)m(h)f
-(lasts)i(un)m(til)f(all)h(the)f(input)150 4682 y(\014les)d(ha)m(v)m(e)h
-(b)s(een)e(pro)s(cessed.)41 b(The)29 b(op)s(erators)h(ha)m(v)m(e)h(the)
-g(follo)m(wing)g(memory)f(requiremen)m(ts:)41 b Fy(ncrcat)150
-4792 y FD(requires)24 b Fn(M)10 b(S)31 b(<)p FD(=)24
-b Fn(V)d(R)q FD(.)38 b Fy(ncecat)23 b FD(requires)h Fn(M)10
-b(S)31 b(<)p FD(=)24 b Fn(V)d(T)13 b FD(.)38 b Fy(ncra)24
-b FD(requires)g Fn(M)10 b(S)30 b FD(=)25 b(2)p Fn(F)13
-b(R)d FD(+)f Fn(V)21 b(R)q FD(.)38 b Fy(ncea)150 4902
-y FD(requires)21 b Fn(M)10 b(S)30 b FD(=)25 b(2)p Fn(F)13
-b(T)i FD(+)r Fn(V)21 b(T)13 b FD(.)37 b Fy(ncbo)21 b
-FD(requires)g Fn(M)10 b(S)30 b(<)p FD(=)25 b(3)p Fn(V)20
-b(T)34 b FD(\(b)s(oth)21 b(input)g(v)-5 b(ariables)22
-b(and)f(the)g(output)150 5011 y(v)-5 b(ariable\).)50
-b Fy(ncflint)32 b FD(requires)g Fn(M)10 b(S)36 b(<)p
-FD(=)29 b(3)p Fn(V)21 b(T)46 b FD(\(b)s(oth)32 b(input)h(v)-5
-b(ariables)34 b(and)e(the)i(output)f(v)-5 b(ariable\).)150
-5121 y Fy(ncpdq)33 b FD(requires)g Fn(M)10 b(S)37 b(<)p
-FD(=)31 b(2)p Fn(V)21 b(T)47 b FD(\(one)34 b(input)g(v)-5
-b(ariable)35 b(and)e(the)h(output)g(v)-5 b(ariable\).)53
-b Fy(ncwa)33 b FD(requires)150 5230 y Fn(M)10 b(S)49
-b(<)p FD(=)43 b(8)p Fn(V)20 b(T)54 b FD(\(see)43 b(b)s(elo)m(w\).)74
-b(Note)43 b(that)f(only)f(v)-5 b(ariables)42 b(that)g(are)g(pro)s
-(cessed,)i(e.g.,)i(a)m(v)m(eraged,)150 5340 y(concatenated,)i(or)43
-b(di\013erenced,)k(con)m(tribute)c(to)h Fn(M)10 b(S)5
-b FD(.)78 b(V)-8 b(ariables)44 b(whic)m(h)f(do)g(not)g(app)s(ear)f(in)h
-(the)p eop end
-%%Page: 20 22
-TeXDict begin 20 21 bop 150 -116 a FD(20)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(output)f(\014le)h(\(see)h
-(Section)g(3.11)g([Subsetting)f(V)-8 b(ariables],)32
-b(page)f(36\))g(are)f(nev)m(er)g(read)g(and)f(con)m(tribute)150
-408 y(nothing)h(to)h(the)g(memory)f(requiremen)m(ts.)275
-579 y Fy(ncwa)22 b FD(consumes)h(b)s(et)m(w)m(een)h(t)m(w)m(o)g(and)f
-(sev)m(en)h(times)g(the)f(memory)g(of)h(a)f(v)-5 b(ariable)25
-b(in)e(order)f(to)i(pro)s(cess)150 688 y(it.)58 b(P)m(eak)37
-b(consumption)e(o)s(ccurs)h(when)f(storing)h(sim)m(ultaneously)h(in)f
-(memory)g(one)g(input)f(v)-5 b(ariable,)150 798 y(one)42
-b(tally)h(arra)m(y)-8 b(,)46 b(one)c(input)e(w)m(eigh)m(t,)47
-b(one)41 b(conformed/w)m(orking)i(w)m(eigh)m(t,)j(one)c(w)m(eigh)m(t)h
-(tally)-8 b(,)47 b(one)150 908 y(input)37 b(mask,)j(one)e(conformed/w)m
-(orking)h(mask,)h(and)d(one)h(output)g(v)-5 b(ariable.)64
-b(When)37 b(in)m(v)m(ok)m(ed,)42 b(the)150 1017 y(w)m(eigh)m(ting)34
-b(and)e(masking)h(features)g(con)m(tribute)h(up)d(to)j(three-sev)m(en)m
-(ths)g(and)e(t)m(w)m(o-sev)m(en)m(ths)j(of)d(these)150
-1127 y(requiremen)m(ts)j(apiece.)58 b(If)35 b(w)m(eigh)m(ts)h(and)f
-(masks)g(are)h Fr(not)45 b FD(sp)s(eci\014ed)35 b(\(i.e.,)j(no)d(`)p
-Fy(-w)p FD(')h(or)f(`)p Fy(-a)p FD(')g(options\))150
-1236 y(then)30 b Fy(ncwa)f FD(requiremen)m(ts)h(drop)f(to)h
-Fn(M)10 b(S)31 b(<)p FD(=)24 b(3)p Fn(V)d(T)43 b FD(\(one)30
-b(input)f(v)-5 b(ariable,)32 b(one)e(tally)h(arra)m(y)-8
-b(,)31 b(and)f(the)150 1346 y(output)g(v)-5 b(ariable\).)275
-1516 y(The)31 b(ab)s(o)m(v)m(e)i(memory)f(requiremen)m(ts)h(m)m(ust)e
-(b)s(e)h(m)m(ultiplied)g(b)m(y)g(the)h(n)m(um)m(b)s(er)d(of)j(threads)e
-Fz(thr)p 3582 1516 28 4 v 40 w(n)m(br)150 1626 y FD(\(see)g(Section)g
-(3.3)h([Op)s(enMP)d(Threading],)h(page)h(23\).)42 b(If)30
-b(this)g(causes)h(problems)f(then)g(reduce)g(\(with)150
-1735 y(`)p Fy(-t)g Fq(thr_nbr)11 b FD('\))29 b(the)h(n)m(um)m(b)s(er)f
-(of)i(threads.)150 1956 y Fv(2.9.2)63 b(Memory)41 b(for)h
-Fo(ncap2)150 2103 y Fy(ncap2)35 b FD(has)i(unique)f(memory)h
-(requiremen)m(ts)g(due)f(its)h(abilit)m(y)i(to)e(pro)s(cess)g
-(arbitrarily)g(long)g(scripts)150 2213 y(of)c(an)m(y)h(complexit)m(y)-8
-b(.)51 b(All)34 b(scripts)f(acceptable)i(to)f Fy(ncap2)e
-FD(are)h(ultimately)i(pro)s(cessed)e(as)g(a)h(sequence)150
-2322 y(of)j(binary)f(or)g(unary)g(op)s(erations.)60 b
-Fy(ncap2)35 b FD(requires)h Fn(M)10 b(S)41 b(<)p FD(=)35
-b(2)p Fn(V)21 b(T)49 b FD(under)35 b(most)i(conditions.)60
-b(An)150 2432 y(exception)33 b(to)g(this)e(is)h(when)f(left)i(hand)e
-(casting)i(\(see)g(Section)f(4.1.4)i([Left)e(hand)f(casting],)j(page)f
-(74\))150 2542 y(is)g(used)g(to)h(stretc)m(h)g(the)g(size)g(of)g(deriv)
-m(ed)f(v)-5 b(ariables)34 b(b)s(ey)m(ond)f(the)g(size)h(of)g(an)m(y)g
-(input)e(v)-5 b(ariables.)50 b(Let)150 2651 y Fn(V)20
-b(C)40 b FD(b)s(e)34 b(the)g(memory)f(required)g(to)i(store)f(the)g
-(largest)h(v)-5 b(ariable)35 b(de\014ned)e(b)m(y)g(left)i(hand)d
-(casting.)53 b(In)150 2761 y(this)30 b(case,)i Fn(M)10
-b(S)30 b(<)p FD(=)25 b(2)p Fn(V)c(C)7 b FD(.)275 2931
-y Fy(ncap2)42 b FD(scripts)h(are)h(complete)g(dynamic)g(and)f(ma)m(y)h
-(b)s(e)e(of)i(arbitrary)f(length.)80 b(A)44 b(script)f(that)150
-3041 y(con)m(tains)28 b(man)m(y)f(thousands)f(of)h(op)s(erations,)h(ma)
-m(y)g(unco)m(v)m(er)f(a)g(slo)m(w)h(memory)f(leak)h(ev)m(en)f(though)g
-(eac)m(h)150 3150 y(single)33 b(op)s(eration)g(consumes)f(little)j
-(additional)e(memory)-8 b(.)48 b(Memory)33 b(leaks)g(are)g(usually)f
-(iden)m(ti\014able)150 3260 y(b)m(y)21 b(their)h(memory)f(usage)h
-(signature.)38 b(Leaks)22 b(cause)f(p)s(eak)h(memory)f(usage)h(to)g
-(increase)g(monotonically)150 3369 y(with)27 b(time)i(regardless)f(of)f
-(script)h(complexit)m(y)-8 b(.)42 b(Slo)m(w)28 b(leaks)g(are)g(v)m(ery)
-g(di\016cult)g(to)g(\014nd.)38 b(Sometimes)29 b(a)150
-3479 y Fy(malloc\(\))d FD(\(or)j Fy(new[])p FD(\))e(failure)i(is)g(the)
-f(only)h(noticeable)h(clue)f(to)g(their)g(existance.)42
-b(If)28 b(y)m(ou)g(ha)m(v)m(e)i(go)s(o)s(d)150 3589 y(reasons)36
-b(to)g(b)s(eliev)m(e)h(that)f(a)g(memory)f(allo)s(cation)j(failure)e
-(is)f(ultimately)i(due)e(to)h(an)g FC(NCO)f FD(memory)150
-3698 y(leak)i(\(rather)f(than)g(inadequate)h FC(RAM)f
-FD(on)g(y)m(our)g(system\),)i(then)d(w)m(e)i(w)m(ould)f(b)s(e)f(v)m
-(ery)h(in)m(terested)h(in)150 3808 y(receiving)32 b(a)e(detailed)i(bug)
-e(rep)s(ort.)150 4073 y FB(2.10)68 b(P)l(erformance)150
-4232 y FD(An)44 b(o)m(v)m(erview)i(of)f FC(NCO)f FD(capabilities)j(as)d
-(of)h(ab)s(out)f(2006)j(is)d(in)g(Zender,)k(C.)c(S.)g(\(2008\),)51
-b(\\Analy-)150 4342 y(sis)45 b(of)g(Self-describing)h(Gridded)e
-(Geoscience)j(Data)g(with)e(netCDF)h(Op)s(erators)f(\(NCO\)",)h(En)m
-(vi-)150 4451 y(ron.)79 b(Mo)s(dell.)h(Soft)m(w.,)47
-b(doi:10.1016/j.en)m(vsoft.2008)q(.03)q(.00)q(4.)86 b(This)42
-b(pap)s(er)g(is)h(also)i(a)m(v)-5 b(ailable)45 b(at)150
-4561 y Fy(http://dust.ess.uci.edu/)o(ppr/)o(ppr_)o(Zen)o(08_e)o(ms.p)o
-(df)p FD(.)275 4731 y FC(NCO)76 b FD(p)s(erformance)g(and)g(scaling)i
-(for)f(arithmetic)h(op)s(erations)f(is)g(describ)s(ed)f(in)g(Zen-)150
-4841 y(der,)f(C.)66 b(S.,)76 b(and)65 b(H.)i(J.)g(Mangalam)h(\(2007\),)
-78 b(\\Scaling)67 b(Prop)s(erties)f(of)h(Common)f(Statis-)150
-4951 y(tical)f(Op)s(erators)f(for)f(Gridded)g(Datasets",)75
-b(In)m(t.)141 b(J.)30 b(High)64 b(P)m(erform.)141 b(Comput.)f(Appl.,)
-150 5060 y(21\(4\),)93 b(485-498,)g(doi:10.1177/10943)q(420)q(07)q(08)q
-(38)q(02)q(.)190 b(This)78 b(pap)s(er)f(is)i(also)g(a)m(v)-5
-b(ailable)81 b(at)150 5170 y Fy(http://dust.ess.uci.edu/)o(ppr/)o(ppr_)
-o(ZeM)o(07_i)o(jhpc)o(a.p)o(df)p FD(.)275 5340 y(It)30
-b(is)g(helpful)g(to)h(b)s(e)f(a)m(w)m(are)i(of)e(the)h(asp)s(ects)f(of)
-h FC(NCO)f FD(design)g(that)h(can)g(limit)g(its)g(p)s(erformance:)p
-eop end
-%%Page: 21 23
-TeXDict begin 21 22 bop 150 -116 a FD(Chapter)30 b(2:)41
-b(Op)s(erator)30 b(Strategies)2264 b(21)199 299 y(1.)61
-b(No)36 b(data)f(bu\013ering)g(is)g(p)s(erformed)e(during)h
-Fy(nc_get_var)f FD(and)h Fy(nc_put_var)e FD(op)s(erations.)56
-b(Hy-)330 408 y(p)s(erslabs)23 b(to)s(o)h(large)i(to)s(o)e(hold)g(in)f
-(core)i(memory)f(will)g(su\013er)g(substan)m(tial)g(p)s(erformance)f(p)
-s(enalties)330 518 y(b)s(ecause)30 b(of)h(this.)199 653
-y(2.)61 b(Since)30 b(co)s(ordinate)h(v)-5 b(ariables)31
-b(are)f(assumed)g(to)h(b)s(e)e(monotonic,)j(the)e(searc)m(h)h(for)f
-(brac)m(k)m(eting)i(the)330 762 y(user-sp)s(eci\014ed)j(limits)i
-(should)e(emplo)m(y)i(a)f(quic)m(k)m(er)h(algorithm,)i(lik)m(e)e
-(bisection,)i(than)d(the)g(t)m(w)m(o-)330 872 y(sided)30
-b(incremen)m(tal)i(searc)m(h)f(curren)m(tly)f(implemen)m(ted.)199
-1006 y(3.)61 b Fz(C)p 402 1006 28 4 v 40 w(format)p FD(,)37
-b Fz(F)m(OR)-8 b(TRAN)p 1224 1006 V 41 w(format)p FD(,)37
-b Fz(signedness)p FD(,)f Fz(scale)p 2250 1006 V 41 w(format)i
-FD(and)d Fz(add)p 2923 1006 V 39 w(o\013set)k FD(attributes)d(are)330
-1116 y(ignored)30 b(b)m(y)h Fy(ncks)e FD(when)g(prin)m(ting)i(v)-5
-b(ariables)31 b(to)g(screen.)199 1250 y(4.)61 b(In)33
-b(the)i(late)g(1990s)h(it)e(w)m(as)h(disco)m(v)m(ered)g(that)g(some)f
-(random)f(access)j(op)s(erations)e(on)g(large)h(\014les)330
-1360 y(on)30 b(certain)h(arc)m(hitectures)g(\(e.g.,)h
-FC(UNICOS)p FD(\))f(w)m(ere)f(m)m(uc)m(h)g(slo)m(w)m(er)i(with)d
-FC(NCO)h FD(than)g(with)g(similar)330 1469 y(op)s(erations)f(p)s
-(erformed)e(using)h(languages)i(that)f(b)m(ypass)f(the)h(netCDF)g(in)m
-(terface)h(\(e.g.,)h(Y)-8 b(oric)m(k\).)330 1579 y(This)30
-b(ma)m(y)i(ha)m(v)m(e)g(b)s(een)e(a)h(p)s(enalt)m(y)g(of)g(unnecessary)
-g(b)m(yte-sw)m(apping)g(in)g(the)g(netCDF)g(in)m(terface.)330
-1689 y(It)d(is)g(unclear)g(whether)f(suc)m(h)g(problems)g(exist)i(in)f
-(presen)m(t)f(da)m(y)i(\(2007\))h(netCDF/)p FC(NCO)f
-FD(en)m(viron-)330 1798 y(men)m(ts,)i(where)f(unnecessary)g(b)m(yte-sw)
-m(apping)h(has)f(b)s(een)f(reduced)h(or)g(eliminated.)p
-eop end
-%%Page: 22 24
-TeXDict begin 22 23 bop eop end
-%%Page: 23 25
-TeXDict begin 23 24 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(23)150 299 y Fx(3)80
-b(NCO)54 b(F)-13 b(eatures)150 564 y FD(Man)m(y)36 b(features)g(ha)m(v)
-m(e)g(b)s(een)f(implemen)m(ted)h(in)f(more)g(than)g(one)h(op)s(erator)f
-(and)g(are)h(describ)s(ed)e(here)150 673 y(for)g(brevit)m(y)-8
-b(.)54 b(The)34 b(description)g(of)h(eac)m(h)g(feature)g(is)f(preceded)
-h(b)m(y)f(a)h(b)s(o)m(x)f(listing)h(the)g(op)s(erators)f(for)150
-783 y(whic)m(h)25 b(the)h(feature)g(is)g(implemen)m(ted.)40
-b(Command)25 b(line)h(switc)m(hes)g(for)g(a)g(giv)m(en)g(feature)g(are)
-h(consisten)m(t)150 893 y(across)37 b(all)g(op)s(erators)f(wherev)m(er)
-g(p)s(ossible.)58 b(If)35 b(no)i(\\k)m(ey)g(switc)m(hes")g(are)g
-(listed)f(for)g(a)h(feature,)h(then)150 1002 y(that)31
-b(particular)g(feature)f(is)h(automatic)h(and)e(cannot)h(b)s(e)f(con)m
-(trolled)i(b)m(y)e(the)g(user.)150 1238 y FB(3.1)68 b(In)l
-(ternationalization)150 1298 y Fm(\013)p 200 1298 3554
-4 v 3553 w(\010)p 150 1568 4 223 v 178 1434 a FD(Av)-5
-b(ailabilit)m(y:)43 b(All)31 b(op)s(erators)p 3803 1568
-V 150 1620 a Fm(\012)p 200 1620 3554 4 v 3553 w(\011)275
-1796 y FC(NCO)36 b FD(supp)s(ort)e(for)i Fz(in)m(ternationalization)k
-FD(of)c(textual)i(input)d(and)h(output)g(\(e.g.,)k(W)-8
-b(arning)37 b(mes-)150 1906 y(sages\))32 b(is)e(nascen)m(t.)42
-b(W)-8 b(e)31 b(hop)s(e)f(to)h(pro)s(duce)e(foreign)i(language)h
-(string)e(catalogues)j(in)d(2004.)150 2142 y FB(3.2)68
-b(Metadata)46 b(Optimization)150 2225 y Fm(\013)p 200
-2225 V 3553 w(\010)p 150 2714 4 442 v 178 2361 a FD(Av)-5
-b(ailabilit)m(y:)43 b Fy(ncatted)p FD(,)29 b Fy(ncks)p
-FD(,)h Fy(ncrename)178 2470 y FD(Short)g(options:)41
-b(None)178 2580 y(Long)31 b(options:)41 b(`)p Fy(--hdr_pad)p
-FD(',)28 b(`)p Fy(--header_pad)p FD(')p 3803 2714 V 150
-2766 a Fm(\012)p 200 2766 3554 4 v 3553 w(\011)275 2937
-y FC(NCO)d FD(supp)s(orts)e(padding)i(headers)g(to)h(impro)m(v)m(e)g
-(the)g(sp)s(eed)e(of)i(future)e(metadata)j(op)s(erations.)40
-b(Use)150 3047 y(the)f(`)p Fy(--hdr_pad)p FD(')d(and)i(`)p
-Fy(--header_pad)p FD(')d(switc)m(hes)40 b(to)f(request)f(that)h
-Fz(hdr)p 2837 3047 28 4 v 39 w(pad)i FD(b)m(ytes)e(b)s(e)f(inserted)150
-3157 y(in)m(to)h(the)g(metadata)h(section)f(of)g(the)f(output)g
-(\014le.)65 b(F)-8 b(uture)38 b(metadata)i(expansions)e(will)h(not)g
-(incur)150 3266 y(the)31 b(p)s(erformance)f(p)s(enalt)m(y)h(of)g(cop)m
-(ying)g(the)g(en)m(tire)h(output)e(\014le)h(unless)f(the)h(expansion)f
-(exceeds)i(the)150 3376 y(amoun)m(t)37 b(of)h(header)e(padding)g
-(exceeded.)62 b(This)36 b(can)h(b)s(e)g(b)s(ene\014cial)g(when)f(it)h
-(is)g(kno)m(wn)g(that)h(some)150 3485 y(metadata)32 b(will)f(b)s(e)e
-(added)h(at)h(a)g(future)e(date.)275 3646 y(This)34 b(optimization)j
-(exploits)f(the)g(netCDF)f(library)g Fy(nc__enddef\(\))d
-FD(function,)k(whic)m(h)f(b)s(eha)m(v)m(es)150 3756 y(di\013eren)m(tly)
-45 b(with)e(di\013eren)m(t)i(v)m(ersions)f(of)g(netCDF.)h(It)f(will)g
-(impro)m(v)m(e)h(sp)s(eed)e(of)h(future)f(metadata)150
-3865 y(expansion)36 b(with)g Fy(CLASSIC)e FD(and)i Fy(64bit)f
-FD(netCDF)i(\014les,)g(but)f(not)g(necessarily)i(with)d
-Fy(NETCDF4)g FD(\014les,)150 3975 y(i.e.,)f(those)f(created)g(b)m(y)g
-(the)f(netCDF)h(in)m(terface)h(to)f(the)g FC(HDF5)f FD(library)g(\(see)
-i(Section)f(3.9)g([Selecting)150 4084 y(Output)c(File)j(F)-8
-b(ormat],)32 b(page)f(33\).)150 4320 y FB(3.3)68 b(Op)t(enMP)44
-b(Threading)150 4403 y Fm(\013)p 200 4403 3554 4 v 3553
-w(\010)p 150 4893 4 442 v 178 4539 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncap2)p FD(,)30 b Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h
-Fy(ncecat)p FD(,)f Fy(ncflint)p FD(,)f Fy(ncpdq)p FD(,)h
-Fy(ncra)p FD(,)h Fy(ncrcat)p FD(,)f Fy(ncwa)178 4649
-y FD(Short)h(options:)41 b(`)p Fy(-t)p FD(')178 4758
-y(Long)31 b(options:)41 b(`)p Fy(--thr_nbr)p FD(',)28
-b(`)p Fy(--threads)p FD(',)h(`)p Fy(--omp_num_threads)p
-FD(')p 3803 4893 V 150 4944 a Fm(\012)p 200 4944 3554
-4 v 3553 w(\011)275 5121 y FC(NCO)46 b FD(supp)s(orts)e(shared)i
-(memory)g(parallelism)i(\()p FC(SMP)p FD(\))f(when)e(compiled)i(with)f
-(an)h(Op)s(enMP-)150 5230 y(enabled)34 b(compiler.)52
-b(Threads)33 b(requests)g(and)h(allo)s(cations)i(o)s(ccur)d(in)h(t)m(w)
-m(o)h(stages.)53 b(First,)35 b(users)e(ma)m(y)150 5340
-y(request)27 b(a)g(sp)s(eci\014c)f(n)m(um)m(b)s(er)f(of)i(threads)f
-Fz(thr)p 1722 5340 28 4 v 40 w(n)m(br)32 b FD(with)26
-b(the)h(`)p Fy(-t)p FD(')g(switc)m(h)g(\(or)g(its)g(long)g(option)g
-(equiv)-5 b(a-)p eop end
-%%Page: 24 26
-TeXDict begin 24 25 bop 150 -116 a FD(24)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(len)m(ts,)c(`)p
-Fy(--thr_nbr)p FD(',)c(`)p Fy(--threads)p FD(',)h(and)f(`)p
-Fy(--omp_num_threads)p FD('\).)35 b(If)22 b(not)h(user-sp)s(eci\014ed,)
-h(Op)s(enMP)150 408 y(obtains)36 b Fz(thr)p 602 408 28
-4 v 40 w(n)m(br)41 b FD(from)36 b(the)g Fy(OMP_NUM_THREADS)c
-FD(en)m(vironmen)m(t)k(v)-5 b(ariable,)39 b(if)d(presen)m(t,)h(or)f
-(from)g(the)150 518 y FC(OS)p FD(,)30 b(if)h(not.)275
-706 y FC(NCO)j FD(ma)m(y)i(mo)s(dify)e Fz(thr)p 1136
-706 V 39 w(n)m(br)41 b FD(according)36 b(to)f(its)g(o)m(wn)g(in)m
-(ternal)h(settings)g(b)s(efore)e(it)i(requests)f(an)m(y)150
-815 y(threads)42 b(from)g(the)h(system.)77 b(Certain)42
-b(op)s(erators)h(con)m(tain)h(hard-co)s(de)e(limits)h(to)g(the)g(n)m
-(um)m(b)s(er)e(of)150 925 y(threads)35 b(they)h(request.)57
-b(W)-8 b(e)36 b(base)g(these)g(limits)h(on)e(our)g(exp)s(erience)h(and)
-f(common)h(sense,)h(and)e(to)150 1034 y(reduce)g(p)s(oten)m(tially)i(w)
-m(asteful)g(system)e(usage)h(b)m(y)g(inexp)s(erienced)f(users.)55
-b(F)-8 b(or)36 b(example,)i Fy(ncrcat)c FD(is)150 1144
-y(extremely)24 b(I/O-in)m(tensiv)m(e)h(so)e(w)m(e)h(restrict)g
-Fz(thr)p 1784 1144 V 46 w(n)m(br)31 b Fn(<)p FD(=)24
-b(2)g(for)e Fy(ncrcat)p FD(.)37 b(This)22 b(is)h(based)g(on)g(the)g
-(notion)150 1254 y(that)28 b(the)f(b)s(est)g(p)s(erformance)g(that)g
-(can)h(b)s(e)f(exp)s(ected)g(from)g(an)g(op)s(erator)h(whic)m(h)f(do)s
-(es)g(no)g(arithmetic)150 1363 y(is)e(to)h(ha)m(v)m(e)h(one)e(thread)h
-(reading)f(and)g(one)g(thread)g(writing)h(sim)m(ultaneously)-8
-b(.)40 b(In)24 b(the)i(future)e(\(p)s(erhaps)150 1473
-y(with)h(netCDF4\),)j(w)m(e)d(hop)s(e)f(to)i(demonstrate)g
-(signi\014can)m(t)g(threading)f(impro)m(v)m(emen)m(ts)h(with)f(op)s
-(erators)150 1582 y(lik)m(e)32 b Fy(ncrcat)c FD(b)m(y)j(p)s(erforming)e
-(m)m(ultiple)i(sim)m(ultaneous)g(writes.)275 1770 y(Compute-in)m
-(tensiv)m(e)e(op)s(erators)f(\()p Fy(ncap)p FD(,)g Fy(ncwa)f
-FD(and)g Fy(ncpdq)p FD(\))g(b)s(ene\014t)h(most)g(from)g(threading.)39
-b(The)150 1880 y(greatest)26 b(increases)g(in)e(throughput)f(due)h(to)h
-(threading)f(o)s(ccur)h(on)f(large)i(datasets)f(where)f(eac)m(h)i
-(thread)150 1989 y(p)s(erforms)36 b(millions,)k(at)e(least,)i(of)e
-(\015oating)g(p)s(oin)m(t)f(op)s(erations.)62 b(Otherwise,)39
-b(the)e(system)h(o)m(v)m(erhead)150 2099 y(of)31 b(setting)h(up)d
-(threads)h(probably)g(out)m(w)m(eighs)i(the)f(sp)s(eed)f(enhancemen)m
-(ts)h(due)f(to)h FC(SMP)g FD(parallelism.)150 2208 y(Ho)m(w)m(ev)m(er,)
-37 b(w)m(e)d(ha)m(v)m(e)h(not)f(y)m(et)h(demonstrated)f(that)g(the)g
-FC(SMP)f FD(parallelism)i(scales)g(w)m(ell)g(b)s(ey)m(ond)e(four)150
-2318 y(threads)22 b(for)h(these)g(op)s(erators.)38 b(Hence)24
-b(w)m(e)f(restrict)g Fz(thr)p 2088 2318 V 46 w(n)m(br)31
-b Fn(<)p FD(=)25 b(4)e(for)f(all)i(op)s(erators.)38 b(W)-8
-b(e)24 b(encourage)150 2428 y(users)30 b(to)h(pla)m(y)g(with)f(these)h
-(limits)g(\(edit)g(\014le)f(`)p Fy(nco_omp.c)p FD('\))f(and)h(send)f
-(us)h(their)g(feedbac)m(k.)275 2615 y(Once)24 b(the)h(initial)h
-Fz(thr)p 1037 2615 V 39 w(n)m(br)31 b FD(has)24 b(b)s(een)g(mo)s
-(di\014ed)f(for)i(an)m(y)g(op)s(erator-sp)s(eci\014c)g(limits,)i
-FC(NCO)d FD(requests)150 2725 y(the)33 b(system)f(to)i(allo)s(cate)h(a)
-d(team)i(of)e Fz(thr)p 1604 2725 V 40 w(n)m(br)38 b FD(threads)32
-b(for)g(the)h(b)s(o)s(dy)e(of)i(the)f(co)s(de.)48 b(The)31
-b(op)s(erating)150 2834 y(system)i(then)g(decides)g(ho)m(w)g(man)m(y)g
-(threads)g(to)g(allo)s(cate)j(based)d(on)f(this)h(request.)49
-b(Users)33 b(ma)m(y)g(k)m(eep)150 2944 y(trac)m(k)f(of)e(this)g
-(information)h(b)m(y)f(running)f(the)i(op)s(erator)f(with)g
-Fz(dbg)p 2512 2944 V 48 w(lvl)f Fn(>)c FD(0.)275 3132
-y(By)20 b(default,)j(threaded)e(op)s(erators)f(attac)m(h)j(one)e
-(global)h(attribute,)h Fy(nco_openmp_thread_number)p
-FD(,)150 3241 y(to)37 b(an)m(y)g(\014le)g(they)g(create)h(or)f(mo)s
-(dify)-8 b(.)59 b(This)36 b(attribute)i(con)m(tains)f(the)g(n)m(um)m(b)
-s(er)f(of)h(threads)f(the)h(op-)150 3351 y(erator)i(used)e(to)i(pro)s
-(cess)e(the)i(input)e(\014les.)63 b(This)37 b(information)i(helps)e(to)
-i(v)m(erify)f(that)h(the)f(answ)m(ers)150 3460 y(with)j(threaded)g(and)
-g(non-threaded)g(op)s(erators)h(are)g(equal)g(to)g(within)f(mac)m(hine)
-h(precision.)75 b(This)150 3570 y(information)31 b(is)f(also)h(useful)f
-(for)g(b)s(enc)m(hmarking.)150 3887 y FB(3.4)68 b(Command)45
-b(Line)g(Options)150 3943 y Fm(\013)p 200 3943 3554 4
-v 3553 w(\010)p 150 4213 4 223 v 178 4079 a FD(Av)-5
-b(ailabilit)m(y:)43 b(All)31 b(op)s(erators)p 3803 4213
-V 150 4265 a Fm(\012)p 200 4265 3554 4 v 3553 w(\011)275
-4463 y FC(NCO)26 b FD(ac)m(hiev)m(es)i(\015exibilit)m(y)g(b)m(y)e
-(using)h Fz(command)f(line)h(options)p FD(.)39 b(These)27
-b(options)g(are)f(implemen)m(ted)150 4573 y(in)36 b(all)h(traditional)g
-FC(UNIX)g FD(commands)f(as)g(single)h(letter)g Fz(switc)m(hes)p
-FD(,)i(e.g.,)g(`)p Fy(ls)30 b(-l)p FD('.)57 b(F)-8 b(or)37
-b(man)m(y)f(y)m(ears)150 4682 y FC(NCO)43 b FD(used)g(only)h(single)g
-(letter)h(option)g(names.)80 b(In)43 b(late)i(2002,)k(w)m(e)44
-b(implemen)m(ted)g FC(GNU)p FD(/)p FC(POSIX)150 4792
-y FD(extended)37 b(or)g(long)g(option)g(names)g(for)f(all)i(options.)60
-b(This)36 b(w)m(as)h(done)g(in)f(a)h(bac)m(kw)m(ard)h(compatible)150
-4902 y(w)m(a)m(y)k(suc)m(h)e(that)h(the)g(full)f(functionalit)m(y)i(of)
-f FC(NCO)f FD(is)h(still)g(a)m(v)-5 b(ailable)43 b(through)d(the)h
-(familiar)g(single)150 5011 y(letter)c(options.)55 b(In)35
-b(the)h(future,)f(ho)m(w)m(ev)m(er,)k(some)c(features)h(of)f
-FC(NCO)g FD(ma)m(y)h(require)f(the)h(use)f(of)g(long)150
-5121 y(options,)c(simply)f(b)s(ecause)h(w)m(e)g(ha)m(v)m(e)h(nearly)e
-(run)f(out)i(of)g(single)g(letter)h(options.)42 b(More)31
-b(imp)s(ortan)m(tly)-8 b(,)150 5230 y(mnemonics)35 b(for)g(single)h
-(letter)h(options)e(are)h(often)g(non-in)m(tuitiv)m(e)g(so)g(that)g
-(long)g(options)f(pro)m(vide)h(a)150 5340 y(more)31 b(natural)f(w)m(a)m
-(y)h(of)g(expressing)f(in)m(ten)m(t.)p eop end
-%%Page: 25 27
-TeXDict begin 25 26 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(25)275 299 y(Extended)32
-b(options,)i(also)g(called)h(long)e(options,)i(are)e(implemen)m(ted)h
-(using)e(the)i(system-supplied)150 408 y(`)p Fy(getopt.h)p
-FD(')29 b(header)h(\014le,)h(if)f(p)s(ossible.)40 b(This)30
-b(pro)m(vides)g(the)h Fy(getopt_long)c FD(function)j(to)h
-FC(NCO)3471 375 y Fw(1)3508 408 y FD(.)275 591 y(The)22
-b(syn)m(tax)i(of)g Fz(short)f(options)28 b FD(\(single)c(letter)h
-(options\))f(is)g Fq(-key)39 b(value)33 b FD(\(dash-k)m(ey-space-v)-5
-b(alue\).)150 700 y(Here,)31 b Fz(k)m(ey)39 b FD(is)30
-b(the)h(single)g(letter)h(option)f(name,)f(e.g.,)i(`)p
-Fy(-D)e(2)p FD('.)275 882 y(The)23 b(syn)m(tax)h(of)g
-Fz(long)h(options)j FD(\(m)m(ulti-letter)e(options\))f(is)e
-Fq(--long_name)38 b(value)33 b FD(\(dash-dash-k)m(ey-)150
-992 y(space-v)-5 b(alue\),)30 b(e.g.,)g(`)p Fy(--dbg_lvl)e(2)p
-FD(')g(or)f Fq(--long_name)11 b(=value)33 b FD(\(dash-dash-k)m
-(ey-equal-v)-5 b(alue\),)31 b(e.g.,)150 1102 y(`)p Fy(--dbg_lvl=2)p
-FD('.)41 b(Th)m(us)30 b(the)i(follo)m(wing)h(are)e(all)i(v)-5
-b(alid)31 b(for)g(the)h(`)p Fy(-D)p FD(')f(\(short)g(v)m(ersion\))i(or)
-e(`)p Fy(--dbg_lvl)p FD(')150 1211 y(\(long)g(v)m(ersion\))h(command)e
-(line)g(option.)390 1393 y Fy(ncks)47 b(-D)g(3)g(in.nc)381
-b(#)47 b(Short)g(option)390 1503 y(ncks)g(--dbg_lvl=3)d(in.nc)j(#)g
-(Long)g(option,)f(preferred)f(form)390 1613 y(ncks)i(--dbg_lvl)e(3)i
-(in.nc)g(#)g(Long)g(option,)f(alternate)f(form)150 1795
-y FD(The)32 b(last)h(example)g(is)g(preferred)e(for)h(t)m(w)m(o)i
-(reasons.)47 b(First,)34 b(`)p Fy(--dbg_lvl)p FD(')c(is)j(more)g(sp)s
-(eci\014c)f(and)g(less)150 1904 y(am)m(biguous)h(than)g(`)p
-Fy(-D)p FD('.)48 b(The)32 b(long)i(option)f(form)g(mak)m(es)g(scripts)g
-(more)g(self)g(do)s(cumen)m(ting)g(and)g(less)150 2014
-y(error)d(prone.)40 b(Often)29 b(long)i(options)f(are)h(named)e(after)i
-(the)f(source)g(co)s(de)h(v)-5 b(ariable)30 b(whose)g(v)-5
-b(alue)31 b(they)150 2123 y(carry)-8 b(.)62 b(Second,)40
-b(the)d(equals)h(sign)g Fq(=)f FD(joins)g(the)h(k)m(ey)g(\(i.e.,)j
-Fz(long)p 2448 2123 28 4 v 41 w(name)5 b FD(\))38 b(to)g(the)f(v)-5
-b(alue)38 b(in)g(an)f(unin-)150 2233 y(terruptible)32
-b(text)i(blo)s(c)m(k.)48 b(Exp)s(erience)33 b(sho)m(ws)f(that)h(users)f
-(are)h(less)g(lik)m(ely)h(to)g(mis-parse)e(commands)150
-2343 y(when)d(restricted)i(to)h(this)e(form.)275 2525
-y FC(GNU)d FD(implemen)m(ts)f(a)h(sup)s(erset)e(of)i(the)f
-FC(POSIX)g FD(standard)g(whic)m(h)g(allo)m(ws)h(an)m(y)g(unam)m
-(biguous)f(trun-)150 2634 y(cation)32 b(of)e(a)h(v)-5
-b(alid)31 b(option)g(to)g(b)s(e)e(used.)390 2817 y Fy(ncks)47
-b(-D)g(3)g(in.nc)381 b(#)47 b(Short)g(option)390 2926
-y(ncks)g(--dbg_lvl=3)d(in.nc)j(#)g(Long)g(option,)f(full)g(form)390
-3036 y(ncks)h(--dbg=3)e(in.nc)238 b(#)47 b(Long)g(option,)f
-(unambiguous)e(truncation)390 3145 y(ncks)j(--db=3)f(in.nc)285
-b(#)47 b(Long)g(option,)f(unambiguous)e(truncation)390
-3255 y(ncks)j(--d=3)f(in.nc)333 b(#)47 b(Long)g(option,)f(ambiguous)f
-(truncation)150 3437 y FD(The)35 b(\014rst)f(four)h(examples)g(are)h
-(equiv)-5 b(alen)m(t)37 b(and)d(will)i(w)m(ork)f(as)h(exp)s(ected.)55
-b(The)35 b(\014nal)g(example)h(will)150 3547 y(exit)26
-b(with)g(an)f(error)g(since)h Fy(ncks)e FD(cannot)i(disam)m(biguate)h
-(whether)e(`)p Fy(--d)p FD(')g(is)h(in)m(tended)f(as)h(a)g(truncation)
-150 3656 y(of)31 b(`)p Fy(--dbg_lvl)p FD(',)d(of)j(`)p
-Fy(--dimension)p FD(',)d(or)i(of)h(some)f(other)h(long)g(option.)275
-3838 y FC(NCO)23 b FD(pro)m(vides)h(man)m(y)g(long)h(options)f(for)g
-(common)g(switc)m(hes.)39 b(F)-8 b(or)25 b(example,)h(the)e(debugging)g
-(lev)m(el)150 3948 y(ma)m(y)k(b)s(e)f(set)h(in)f(all)i(op)s(erators)f
-(with)f(an)m(y)h(of)g(the)f(switc)m(hes)i(`)p Fy(-D)p
-FD(',)f(`)p Fy(--debug-level)p FD(',)d(or)j(`)p Fy(--dbg_lvl)p
-FD('.)150 4058 y(This)21 b(\015exibilit)m(y)i(allo)m(ws)h(users)d(to)h
-(c)m(ho)s(ose)h(their)f(fa)m(v)m(orite)i(mnemonic.)38
-b(F)-8 b(or)23 b(some,)h(it)f(will)f(b)s(e)f(`)p Fy(--debug)p
-FD(')150 4167 y(\(an)29 b(unam)m(biguous)f(truncation)h(of)f(`)p
-Fy(--debug-level)p FD(',)f(and)h(other)g(will)h(prefer)f(`)p
-Fy(--dbg)p FD('.)40 b(In)m(teractiv)m(e)150 4277 y(users)34
-b(usually)g(prefer)g(the)h(minimal)g(amoun)m(t)g(of)g(t)m(yping,)h
-(i.e.,)h(`)p Fy(-D)p FD('.)54 b(W)-8 b(e)36 b(recommend)e(that)h
-(scripts)150 4386 y(whic)m(h)30 b(are)h(re-usable)f(emplo)m(y)i(some)e
-(form)g(of)h(the)f(long)h(options)g(for)f(future)g(main)m(tainabilit)m
-(y)-8 b(.)275 4569 y(This)26 b(man)m(ual)i(generally)g(uses)f(the)h
-(short)f(option)g(syn)m(tax.)41 b(This)26 b(is)h(for)g(historical)i
-(reasons)e(and)g(to)150 4678 y(conserv)m(e)33 b(space.)48
-b(The)32 b(remainder)g(of)h(this)f(man)m(ual)h(sp)s(eci\014es)f(the)g
-(full)h Fz(long)p 2876 4678 V 40 w(name)38 b FD(of)33
-b(eac)m(h)g(option.)150 4788 y(Users)25 b(are)h(exp)s(ected)g(to)g(pic)
-m(k)g(the)f(unam)m(biguous)g(truncation)g(of)h(eac)m(h)g(option)g(name)
-g(that)f(most)h(suits)150 4897 y(their)k(taste.)p 150
-5066 1200 4 v 199 5134 a Fw(1)307 5166 y Fu(If)j(a)h
-Ft(getopt_long)h Fu(function)e(cannot)g(b)r(e)g(found)f(on)h(the)g
-(system,)i Fs(NCO)d Fu(will)j(use)e(the)f Ft(getopt_long)k
-Fu(from)d(the)275 5253 y Ft(my_getopt)f Fu(pac)n(k)l(age)f(b)n(y)f
-(Benjamin)i(Sittler)f Ft(bsittler at iname.com)p Fu(.)54
-b(This)32 b(is)f Fs(BSD)p Fu(-licensed)g(soft)n(w)n(are)i(a)n(v)l
-(ailable)275 5340 y(from)26 b Ft(http://www.geocities.com/Rese)q(arch)q
-(Trian)q(gle/)q(Node/)q(9405)q(/#my)q(_geto)q(pt)p Fu(.)p
-eop end
-%%Page: 26 28
-TeXDict begin 26 27 bop 150 -116 a FD(26)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(3.5)68 b(Sp)t(ecifying)45
-b(Input)f(Files)150 375 y Fm(\013)p 200 375 3554 4 v
-3553 w(\010)p 150 979 4 557 v 178 516 a FD(Av)-5 b(ailabilit)m(y)33
-b(\()p Fy(-n)p FD(\):)41 b Fy(ncea)p FD(,)29 b Fy(ncecat)p
-FD(,)g Fy(ncra)p FD(,)h Fy(ncrcat)178 626 y FD(Av)-5
-b(ailabilit)m(y)33 b(\()p Fy(-p)p FD(\):)41 b(All)31
-b(op)s(erators)178 735 y(Short)f(options:)41 b(`)p Fy(-n)p
-FD(',)31 b(`)p Fy(-p)p FD(')178 845 y(Long)g(options:)41
-b(`)p Fy(--nintap)p FD(',)29 b(`)p Fy(--pth)p FD(',)g(`)p
-Fy(--path)p FD(')p 3803 979 V 150 1031 a Fm(\012)p 200
-1031 3554 4 v 3553 w(\011)275 1209 y FD(It)37 b(is)f(imp)s(ortan)m(t)h
-(that)h(users)e(b)s(e)g(able)i(to)f(sp)s(ecify)g(m)m(ultiple)g(input)f
-(\014les)h(without)g(t)m(yping)g(ev)m(ery)150 1319 y(\014lename)e(in)g
-(full,)h(often)f(a)g(tedious)g(task)h(ev)m(en)g(b)m(y)e(graduate)i
-(studen)m(t)f(standards.)53 b(There)34 b(are)i(four)150
-1428 y(di\013eren)m(t)25 b(w)m(a)m(ys)h(of)e(sp)s(ecifying)h(input)f
-(\014les)g(to)i FC(NCO)p FD(:)e(explicitly)i(t)m(yping)f(eac)m(h,)j
-(using)c FC(UNIX)h FD(shell)g(wild-)150 1538 y(cards,)f(and)e(using)g
-(the)h FC(NCO)f FD(`)p Fy(-n)p FD(')g(and)g(`)p Fy(-p)p
-FD(')g(switc)m(hes)i(\(or)e(their)h(long)g(option)g(equiv)-5
-b(alen)m(ts,)26 b(`)p Fy(--nintap)p FD(')150 1647 y(or)h(`)p
-Fy(--pth)p FD(')f(and)g(`)p Fy(--path)p FD(',)h(resp)s(ectiv)m(ely\).)
-41 b(T)-8 b(ec)m(hniques)27 b(to)g(augmen)m(t)h(these)f(metho)s(ds)g
-(to)g(sp)s(ecify)g(ar-)150 1757 y(bitrary)36 b(n)m(um)m(b)s(ers)f
-(\(e.g.,)40 b(thousands\))c(and)f(patterns)i(of)f(\014lenames)h(are)g
-(discussed)e(separately)j(\(see)150 1866 y(Section)31
-b(2.7)h([Large)f(Num)m(b)s(ers)e(of)i(Files],)h(page)f(16\).)275
-2034 y(T)-8 b(o)34 b(illustrate)h(these)g(metho)s(ds,)f(consider)g(the)
-g(simple)g(problem)g(of)g(using)f Fy(ncra)g FD(to)i(a)m(v)m(erage)i
-(\014v)m(e)150 2143 y(input)c(\014les,)i(`)p Fy(85.nc)p
-FD(',)f(`)p Fy(86.nc)p FD(',)39 b(.)22 b(.)h(.)41 b(`)p
-Fy(89.nc)p FD(')o(,)35 b(and)e(store)i(the)f(results)f(in)h(`)p
-Fy(8589.nc)p FD('.)49 b(Here)35 b(are)f(the)150 2253
-y(four)c(metho)s(ds)f(in)h(order.)41 b(They)29 b(pro)s(duce)h(iden)m
-(tical)i(answ)m(ers.)390 2420 y Fy(ncra)47 b(85.nc)f(86.nc)g(87.nc)h
-(88.nc)f(89.nc)g(8589.nc)390 2530 y(ncra)h(8[56789].nc)d(8589.nc)390
-2639 y(ncra)j(-p)g Fq(input-path)55 b Fy(85.nc)47 b(86.nc)f(87.nc)g
-(88.nc)h(89.nc)f(8589.nc)390 2749 y(ncra)h(-n)g(5,2,1)f(85.nc)h
-(8589.nc)275 2916 y FD(The)40 b(\014rst)g(metho)s(d)g(\(explicitly)j
-(sp)s(ecifying)e(all)g(\014lenames\))g(w)m(orks)g(b)m(y)g(brute)f
-(force.)73 b(The)40 b(sec-)150 3026 y(ond)d(metho)s(d)g(relies)h(on)f
-(the)h(op)s(erating)f(system)h(shell)g(to)g Fz(glob)i
-FD(\(expand\))d(the)h Fz(regular)f(expression)150 3135
-y Fy(8[56789].nc)p FD(.)54 b(The)36 b(shell)g(passes)f(v)-5
-b(alid)37 b(\014lenames)f(whic)m(h)f(matc)m(h)i(the)f(expansion)g(to)g
-Fy(ncra)p FD(.)56 b(The)150 3245 y(third)28 b(metho)s(d)h(uses)f(the)i
-(`)p Fy(-p)g Fq(input-path)11 b FD(')26 b(argumen)m(t)j(to)h(sp)s
-(ecify)f(the)g(directory)h(where)f(all)h(the)f(in-)150
-3355 y(put)i(\014les)h(reside.)44 b FC(NCO)32 b FD(prep)s(ends)d
-Fz(input-path)i FD(\(e.g.,)j(`)p Fy(/data/usrname/model)p
-FD('\))27 b(to)33 b(all)g Fz(input-\014les)150 3464 y
-FD(\(but)e(not)h(to)g Fz(output-\014le)5 b FD(\).)44
-b(Th)m(us,)31 b(using)f(`)p Fy(-p)p FD(',)i(the)g(path)f(to)h(an)m(y)g
-(n)m(um)m(b)s(er)e(of)h(input)f(\014les)i(need)f(only)150
-3574 y(b)s(e)26 b(sp)s(eci\014ed)g(once.)40 b(Note)28
-b Fz(input-path)e FD(need)h(not)g(end)f(with)g(`)p Fy(/)p
-FD(';)j(the)e(`)p Fy(/)p FD(')g(is)f(automatically)k(generated)150
-3683 y(if)g(necessary)-8 b(.)275 3851 y(The)19 b(last)j(metho)s(d)e
-(passes)g(\(with)g(`)p Fy(-n)p FD('\))h(syn)m(tax)g(concisely)h
-(describing)e(the)g(en)m(tire)i(set)f(of)f(\014lenames)3687
-3818 y Fw(2)3725 3851 y FD(.)150 3960 y(This)k(option)h(is)f(only)h(a)m
-(v)-5 b(ailable)27 b(with)d(the)h Fz(m)m(ulti-\014le)g(op)s(erators)t
-FD(:)38 b Fy(ncra)p FD(,)25 b Fy(ncrcat)p FD(,)f Fy(ncea)p
-FD(,)g(and)g Fy(ncecat)p FD(.)150 4070 y(By)39 b(de\014nition,)h(m)m
-(ulti-\014le)g(op)s(erators)e(are)h(able)g(to)h(pro)s(cess)e(an)g
-(arbitrary)g(n)m(um)m(b)s(er)g(of)g Fz(input-\014les)p
-FD(.)150 4179 y(This)46 b(option)h(is)f(v)m(ery)h(useful)f(for)g
-(abbreviating)h(lists)g(of)g(\014lenames)f(represen)m(table)h(as)g
-Fz(alphan)m(u-)150 4289 y(meric)p 373 4289 28 4 v 40
-w(pre\014x)6 b Fy(+)p Fz(n)m(umeric)p 1009 4289 V 39
-w(su\016x)g Fy(+)p FD(`)p Fy(.)p FD(')p Fy(+)p Fz(\014let)m(yp)s(e)34
-b FD(where)28 b Fz(alphan)m(umeric)p 2577 4289 V 40 w(pre\014x)34
-b FD(is)29 b(a)g(string)f(of)h(arbitrary)150 4398 y(length)41
-b(and)f(comp)s(osition,)45 b Fz(n)m(umeric)p 1494 4398
-V 40 w(su\016x)h FD(is)41 b(a)g(\014xed)f(width)g(\014eld)h(of)g
-(digits,)j(and)c Fz(\014let)m(yp)s(e)47 b FD(is)41 b(a)150
-4508 y(standard)d(\014let)m(yp)s(e)h(indicator.)66 b(F)-8
-b(or)39 b(example,)j(in)c(the)h(\014le)f(`)p Fy(ccm3_h0001.nc)p
-FD(',)g(w)m(e)h(ha)m(v)m(e)h Fz(alphan)m(u-)150 4618
-y(meric)p 373 4618 V 40 w(pre\014x)c FD(=)30 b(`)p Fy(ccm3_h)p
-FD(',)f Fz(n)m(umeric)p 1484 4618 V 40 w(su\016x)36 b
-FD(=)30 b(`)p Fy(0001)p FD(',)g(and)g Fz(\014let)m(yp)s(e)36
-b FD(=)30 b(`)p Fy(nc)p FD('.)275 4785 y FC(NCO)47 b
-FD(is)h(able)g(to)g(deco)s(de)g(lists)g(of)g(suc)m(h)f(\014lenames)h
-(enco)s(ded)f(using)g(the)h(`)p Fy(-n)p FD(')f(option.)93
-b(The)150 4894 y(simpler)30 b(\(3-argumen)m(t\))i(`)p
-Fy(-n)p FD(')e(usage)h(tak)m(es)g(the)g(form)e Fy(-n)h
-Fq(file_number)p Fy(,)p Fq(digit_number)o Fy(,)p Fq(num)o(eric)o(_)150
-5004 y(increment)51 b FD(where)43 b Fz(\014le)p 1031
-5004 V 40 w(n)m(um)m(b)s(er)48 b FD(is)43 b(the)g(n)m(um)m(b)s(er)f(of)
-h(\014les,)k Fz(digit)p 2559 5004 V 40 w(n)m(um)m(b)s(er)i
-FD(is)43 b(the)g(\014xed)f(n)m(um)m(b)s(er)150 5114 y(of)e(n)m(umeric)g
-(digits)g(comprising)g(the)g Fz(n)m(umeric)p 1834 5114
-V 40 w(su\016x)p FD(,)i(and)d Fz(n)m(umeric)p 2654 5114
-V 40 w(incremen)m(t)j FD(is)e(the)g(constan)m(t,)p 150
-5241 1200 4 v 199 5308 a Fw(2)275 5340 y Fu(The)22 b(`)p
-Ft(-n)p Fu(')i(option)f(is)g(a)g(bac)n(kw)n(ard)g(compatible)g(sup)r
-(erset)g(of)g(the)g Ft(NINTAP)h Fu(option)f(from)g(the)f
-Fs(NCAR)g(CCM)h Fu(Pro)r(cessor.)p eop end
-%%Page: 27 29
-TeXDict begin 27 28 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(27)150 299 y(in)m(teger-v)-5
-b(alued)28 b(di\013erence)f(b)s(et)m(w)m(een)g(the)g
-Fz(n)m(umeric)p 1957 299 28 4 v 40 w(su\016x)32 b FD(of)27
-b(an)m(y)g(t)m(w)m(o)h(consecutiv)m(e)g(\014les.)39 b(The)26
-b(v)-5 b(alue)150 408 y(of)27 b Fz(alphan)m(umeric)p
-789 408 V 41 w(pre\014x)32 b FD(is)27 b(tak)m(en)i(from)d(the)i(input)e
-(\014le,)i(whic)m(h)f(serv)m(es)h(as)g(a)f(template)i(for)e(deco)s
-(ding)150 518 y(the)h(\014lenames.)40 b(In)27 b(the)h(example)g(ab)s(o)
-m(v)m(e,)i(the)e(enco)s(ding)f Fy(-n)j(5,2,1)c FD(along)j(with)e(the)h
-(input)f(\014le)h(name)150 628 y(`)p Fy(85.nc)p FD(')34
-b(tells)j FC(NCO)e FD(to)h(construct)g(\014v)m(e)g(\(5\))g(\014lenames)
-g(iden)m(tical)h(to)f(the)g(template)g(`)p Fy(85.nc)p
-FD(')f(except)150 737 y(that)41 b(the)f(\014nal)f(t)m(w)m(o)j(\(2\))f
-(digits)f(are)h(a)f(n)m(umeric)g(su\016x)f(to)i(b)s(e)e(incremen)m(ted)
-i(b)m(y)f(one)g(\(1\))h(for)f(eac)m(h)150 847 y(successiv)m(e)e
-(\014le.)61 b(Curren)m(tly)37 b Fz(\014let)m(yp)s(e)42
-b FD(ma)m(y)c(b)s(e)f(either)g(b)s(e)g(empt)m(y)-8 b(,)39
-b(`)p Fy(nc)p FD(',)g(`)p Fy(cdf)p FD(',)g(`)p Fy(hdf)p
-FD(',)g(or)e(`)p Fy(hd5)p FD('.)60 b(If)150 956 y(presen)m(t,)27
-b(these)f Fz(\014let)m(yp)s(e)31 b FD(su\016xes)25 b(\(and)g(the)h
-(preceding)g(`)p Fy(.)p FD('\))g(are)g(ignored)f(b)m(y)h
-FC(NCO)f FD(as)h(it)g(uses)f(the)h(`)p Fy(-n)p FD(')150
-1066 y(argumen)m(ts)31 b(to)g(lo)s(cate,)h(ev)-5 b(aluate,)33
-b(and)c(compute)i(the)g Fz(n)m(umeric)p 2400 1066 V 39
-w(su\016x)36 b FD(comp)s(onen)m(t)31 b(of)f(\014lenames.)275
-1248 y(Recen)m(tly)d(the)e(`)p Fy(-n)p FD(')g(option)h(has)f(b)s(een)g
-(extended)h(to)g(allo)m(w)h(con)m(v)m(enien)m(t)g(sp)s(eci\014cation)f
-(of)g(\014lenames)150 1358 y(with)f(\\circular")h(c)m(haracteristics.)
-42 b(This)24 b(means)i(it)f(is)g(no)m(w)h(p)s(ossible)e(for)h
-FC(NCO)g FD(to)h(automatically)i(gen-)150 1468 y(erate)j(\014lenames)f
-(whic)m(h)f(incremen)m(t)h(regularly)g(un)m(til)g(a)g(sp)s(eci\014ed)f
-(maxim)m(um)h(v)-5 b(alue,)30 b(and)f(then)h(wrap)150
-1577 y(bac)m(k)j(to)h(b)s(egin)e(again)h(at)g(a)g(sp)s(eci\014ed)f
-(minim)m(um)g(v)-5 b(alue.)48 b(The)32 b(corresp)s(onding)f(`)p
-Fy(-n)p FD(')i(usage)g(b)s(ecomes)150 1687 y(more)j(complex,)i(taking)f
-(one)f(or)g(t)m(w)m(o)h(additional)g(argumen)m(ts)f(for)f(a)i(total)g
-(of)f(four)f(or)h(\014v)m(e,)i(resp)s(ec-)150 1796 y(tiv)m(ely:)108
-b Fy(-n)30 b Fq(file_number)p Fy(,)p Fq(digit_numbe)o(r)p
-Fy(,)p Fq(nu)o(meri)o(c_i)o(ncre)o(ment)10 b Fy([)o(,)p
-Fq(num)o(eric)o(_ma)o(x)h Fy([)o(,)p Fq(num)o(eric)o(_)150
-1906 y(min)g Fy(]])45 b FD(where)i Fz(n)m(umeric)p 1048
-1906 V 40 w(max)p FD(,)k(if)c(presen)m(t,)k(is)d(the)f(maxim)m(um)g(in)
-m(teger-v)-5 b(alue)49 b(of)e Fz(n)m(umeric)p 3506 1906
-V 40 w(su\016x)150 2015 y FD(and)41 b Fz(n)m(umeric)p
-660 2015 V 40 w(min)p FD(,)i(if)e(presen)m(t,)j(is)e(the)f(minim)m(um)g
-(in)m(teger-v)-5 b(alue)43 b(of)e Fz(n)m(umeric)p 3033
-2015 V 40 w(su\016x)p FD(.)73 b(Consider,)150 2125 y(for)33
-b(example,)j(the)d(problem)g(of)h(sp)s(ecifying)g(non-consecutiv)m(e)h
-(input)d(\014les)i(where)f(the)h(\014lename)g(suf-)150
-2235 y(\014xes)f(end)h(with)f(the)h(mon)m(th)g(index.)51
-b(In)33 b(climate)i(mo)s(deling)f(it)g(is)g(common)g(to)h(create)g
-(summertime)150 2344 y(and)28 b(win)m(tertime)j(a)m(v)m(erages)g(whic)m
-(h)e(con)m(tain)h(the)g(a)m(v)m(erages)h(of)e(the)h(mon)m(ths)f
-(June{July{August,)g(and)150 2454 y(Decem)m(b)s(er{Jan)m(uary{F)-8
-b(ebruary)g(,)32 b(resp)s(ectiv)m(ely:)390 2636 y Fy(ncra)47
-b(-n)g(3,2,1)f(85_06.nc)g(85_0608.nc)390 2746 y(ncra)h(-n)g(3,2,1,12)e
-(85_12.nc)h(85_1202.nc)390 2855 y(ncra)h(-n)g(3,2,1,12,1)e(85_12.nc)g
-(85_1202.nc)275 3038 y FD(The)32 b(\014rst)g(example)h(sho)m(ws)g(that)
-g(three)g(argumen)m(ts)g(to)g(the)g(`)p Fy(-n)p FD(')g(option)g
-(su\016ce)g(to)g(sp)s(ecify)f(con-)150 3147 y(secutiv)m(e)g(mon)m(ths)e
-(\()p Fy(06,)g(07,)f(08)p FD(\))h(whic)m(h)g(do)h(not)f(\\wrap")h(bac)m
-(k)g(to)g(a)f(minim)m(um)g(v)-5 b(alue.)41 b(The)30 b(second)150
-3257 y(example)25 b(sho)m(ws)e(ho)m(w)h(to)h(use)e(the)h(optional)h
-(fourth)e(and)g(\014fth)g(elemen)m(ts)j(of)e(the)g(`)p
-Fy(-n)p FD(')f(option)i(to)f(sp)s(ecify)150 3367 y(a)g(wrap)e(v)-5
-b(alue)24 b(to)g FC(NCO)p FD(.)g(The)f(fourth)f(argumen)m(t)i(to)g(`)p
-Fy(-n)p FD(',)h(if)f(presen)m(t,)h(sp)s(eci\014es)e(the)g(maxim)m(um)h
-(in)m(teger)150 3476 y(v)-5 b(alue)27 b(of)f Fz(n)m(umeric)p
-802 3476 V 40 w(su\016x)p FD(.)38 b(In)26 b(this)g(case)i(the)e(maxim)m
-(um)g(v)-5 b(alue)27 b(is)j(12,)e(and)d(will)i(b)s(e)f(formatted)h(as)f
-(`)p Fy(12)p FD(')150 3586 y(in)i(the)h(\014lename)f(string.)40
-b(The)28 b(\014fth)f(argumen)m(t)i(to)g(`)p Fy(-n)p FD(',)g(if)f
-(presen)m(t,)h(sp)s(eci\014es)f(the)h(minim)m(um)f(in)m(teger)150
-3695 y(v)-5 b(alue)37 b(of)f Fz(n)m(umeric)p 822 3695
-V 40 w(su\016x)p FD(.)58 b(The)36 b(default)h(minim)m(um)e(\014lename)i
-(su\016x)f(is)30 b(1,)37 b(whic)m(h)f(is)h(formatted)g(as)150
-3805 y(`)p Fy(01)p FD(')e(in)g(this)g(case.)56 b(Th)m(us)34
-b(the)i(second)f(and)g(third)f(examples)i(ha)m(v)m(e)g(the)g(same)f
-(e\013ect,)j(that)e(is,)h(they)150 3914 y(automatically)e(generate,)g
-(in)d(order,)g(the)h(\014lenames)f(`)p Fy(85_12.nc)p
-FD(',)f(`)p Fy(85_01.nc)p FD(',)g(and)h(`)p Fy(85_02.nc)p
-FD(')f(as)150 4024 y(input)e(to)j FC(NCO)p FD(.)150 4325
-y FB(3.6)68 b(Sp)t(ecifying)45 b(Output)g(Files)150 4386
-y Fm(\013)p 200 4386 3554 4 v 3553 w(\010)p 150 4876
-4 442 v 178 4522 a FD(Av)-5 b(ailabilit)m(y:)43 b(All)31
-b(op)s(erators)178 4632 y(Short)f(options:)41 b(`)p Fy(-o)p
-FD(')178 4742 y(Long)31 b(options:)41 b(`)p Fy(--fl_out)p
-FD(',)29 b(`)p Fy(--output)p FD(')p 3803 4876 V 150 4928
-a Fm(\012)p 200 4928 3554 4 v 3553 w(\011)275 5121 y
-FC(NCO)f FD(commands)g(pro)s(duce)f(no)i(more)g(than)f(one)h(output)f
-(\014le,)h Fz(\015)p 2531 5121 28 4 v 40 w(out)p FD(.)40
-b(T)-8 b(raditionally)g(,)31 b(users)d(sp)s(ec-)150 5230
-y(ify)33 b Fz(\015)p 341 5230 V 39 w(out)i FD(as)e(the)f(\014nal)h
-(argumen)m(t)g(to)g(the)g(op)s(erator,)g(follo)m(wing)h(all)g(input)d
-(\014le)i(names.)47 b(This)32 b(is)h(the)150 5340 y Fz(p)s(ositional)i
-(argumen)m(t)j FD(metho)s(d)c(of)g(sp)s(ecifying)h(input)f(and)g(ouput)
-g(\014le)g(names.)54 b(The)34 b(p)s(ositional)i(ar-)p
-eop end
-%%Page: 28 30
-TeXDict begin 28 29 bop 150 -116 a FD(28)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(gumen)m(t)f(metho)s(d)e(w)m(orks)
-h(w)m(ell)i(in)d(most)i(applications.)41 b FC(NCO)28
-b FD(also)h(supp)s(orts)d(sp)s(ecifying)j Fz(\015)p 3348
-299 28 4 v 39 w(out)h FD(using)150 408 y(the)h(command)f(line)g(switc)m
-(h)h(argumen)m(t)g(metho)s(d,)f(`)p Fy(-o)g Fq(fl_out)11
-b FD('.)275 595 y(Sp)s(ecifying)34 b Fz(\015)p 773 595
-V 40 w(out)k FD(with)d(a)g(switc)m(h,)j(rather)d(than)g(as)h(a)g(p)s
-(ositional)g(argumen)m(t,)h(allo)m(ws)g Fz(\015)p 3467
-595 V 40 w(out)g FD(to)150 705 y(precede)28 b(input)f(\014les)h(in)g
-(the)g(argumen)m(t)h(list.)41 b(This)27 b(is)h(particularly)h(useful)e
-(with)h(m)m(ulti-\014le)h(op)s(erators)150 814 y(for)j(three)g
-(reasons.)46 b(Multi-\014le)34 b(op)s(erators)e(ma)m(y)h(b)s(e)e(in)m
-(v)m(ok)m(ed)j(with)e(h)m(undreds)d(\(or)k(more\))g(\014lenames.)150
-924 y(Visual)42 b(or)f(automatic)i(lo)s(cation)g(of)f
-Fz(\015)p 1533 924 V 39 w(out)i FD(in)d(suc)m(h)g(a)g(list)h(is)g
-(di\016cult)f(when)f(the)i(only)f(syn)m(tactic)150 1033
-y(distinction)32 b(b)s(et)m(w)m(een)g(input)e(and)g(output)h(\014les)g
-(is)g(their)g(p)s(osition.)43 b(Second,)32 b(sp)s(eci\014cation)g(of)f
-(a)g(long)150 1143 y(list)23 b(of)g(input)e(\014les)i(ma)m(y)g(b)s(e)e
-(di\016cult)i(\(see)g(Section)g(2.7)h([Large)f(Num)m(b)s(ers)e(of)i
-(Files],)j(page)d(16\).)39 b(Making)150 1253 y(the)28
-b(input)f(\014le)h(list)g(the)g(\014nal)g(argumen)m(t)g(to)g(an)g(op)s
-(erator)g(facilitates)j(using)c Fy(xargs)f FD(for)i(this)f(purp)s(ose.)
-150 1362 y(Some)36 b(alternativ)m(es)j(to)e Fy(xargs)e
-FD(are)i(v)m(ery)g(ugly)f(and)g(undesirable.)58 b(Finally)-8
-b(,)39 b(man)m(y)e(users)e(are)i(more)150 1472 y(comfortable)26
-b(sp)s(ecifying)e(output)g(\014les)h(with)f(`)p Fy(-o)30
-b Fq(fl_out)11 b FD(')23 b(near)h(the)h(b)s(eginning)f(of)h(an)f
-(argumen)m(t)h(list.)150 1581 y(Compilers)30 b(and)g(link)m(ers)g(are)h
-(usually)f(in)m(v)m(ok)m(ed)i(this)e(w)m(a)m(y)-8 b(.)275
-1768 y(Users)41 b(should)g(sp)s(ecify)h Fz(\015)p 1202
-1768 V 39 w(out)i FD(using)e(either)g(but)f(not)h(b)s(oth)f(metho)s
-(ds.)75 b(If)41 b Fz(\015)p 3102 1768 V 40 w(out)j FD(is)e(sp)s
-(eci\014ed)150 1878 y(t)m(wice)33 b(\(once)g(with)e(the)h(switc)m(h)g
-(and)f(once)i(as)f(the)g(last)g(p)s(ositional)h(argumen)m(t\),)g(then)e
-(the)h(p)s(ositional)150 1987 y(argumen)m(t)f(tak)m(es)h(precedence.)
-150 2301 y FB(3.7)68 b(Accessing)45 b(Remote)h(Files)150
-2358 y Fm(\013)p 200 2358 3554 4 v 3553 w(\010)p 150
-2848 4 442 v 178 2494 a FD(Av)-5 b(ailabilit)m(y:)43
-b(All)31 b(op)s(erators)178 2604 y(Short)f(options:)41
-b(`)p Fy(-p)p FD(',)31 b(`)p Fy(-l)p FD(')178 2713 y(Long)g(options:)41
-b(`)p Fy(--pth)p FD(',)29 b(`)p Fy(--path)p FD(',)h(`)p
-Fy(--lcl)p FD(',)g(`)p Fy(--local)p FD(')p 3803 2848
-V 150 2899 a Fm(\012)p 200 2899 3554 4 v 3553 w(\011)275
-3097 y FD(All)44 b FC(NCO)f FD(op)s(erators)h(can)g(retriev)m(e)h
-(\014les)e(from)g(remote)i(sites)f(as)g(w)m(ell)g(as)g(from)f(the)h(lo)
-s(cal)h(\014le)150 3206 y(system.)73 b(A)31 b(remote)42
-b(site)g(can)f(b)s(e)g(an)g(anon)m(ymous)g FC(FTP)g FD(serv)m(er,)j(a)d
-(mac)m(hine)h(on)f(whic)m(h)g(the)h(user)150 3316 y(has)32
-b Fy(rcp)p FD(,)g Fy(scp)p FD(,)g(or)g Fy(sftp)f FD(privileges,)j(or)e
-FC(NCAR)p FD('s)h(Mass)f(Storage)i(System)e(\()p FC(MSS)p
-FD(\),)h(or)f(an)g FC(OP)n(eND)n(AP)150 3425 y FD(serv)m(er.)65
-b(Examples)39 b(of)f(eac)m(h)i(are)f(giv)m(en)g(b)s(elo)m(w,)i(follo)m
-(wing)f(a)f(brief)f(description)g(of)h(the)g(particular)150
-3535 y(access)32 b(proto)s(col.)275 3722 y(T)-8 b(o)32
-b(access)i(a)f(\014le)f(via)h(an)g(anon)m(ymous)f FC(FTP)g
-FD(serv)m(er,)h(supply)e(the)i(remote)g(\014le's)g FC(URL)p
-FD(.)g FC(FTP)f FD(is)g(an)150 3831 y(in)m(trinsically)39
-b(insecure)f(proto)s(col)h(b)s(ecause)g(it)f(transfers)g(passw)m(ords)f
-(in)h(plain)g(text)h(format.)64 b(Users)150 3941 y(should)35
-b(access)i(sites)g(using)f(anon)m(ymous)g FC(FTP)f FD(when)g(p)s
-(ossible.)58 b(Some)36 b FC(FTP)g FD(serv)m(ers)g(require)g(a)g(lo-)150
-4050 y(gin/passw)m(ord)31 b(com)m(bination)i(for)e(a)h(v)-5
-b(alid)32 b(user)e(accoun)m(t.)46 b FC(NCO)31 b FD(allo)m(ws)h(these)g
-(transactions)h(so)e(long)150 4160 y(as)36 b(the)g(required)g
-(information)g(is)g(stored)g(in)g(the)g(`)p Fy(.netrc)p
-FD(')f(\014le.)57 b(Usually)37 b(this)e(information)i(is)f(the)150
-4270 y(remote)25 b(mac)m(hine)f(name,)i(login,)g(and)d(passw)m(ord,)i
-(in)e(plain)h(text,)i(separated)e(b)m(y)g(those)g(v)m(ery)g(k)m(eyw)m
-(ords,)150 4379 y(e.g.,)390 4566 y Fy(machine)46 b(dust.ess.uci.edu)d
-(login)k(zender)f(password)f(bushlied)275 4752 y FD(Esc)m(hew)c(using)g
-(v)-5 b(aluable)42 b(passw)m(ords)f(for)g FC(FTP)g FD(transactions,)46
-b(since)c(`)p Fy(.netrc)p FD(')e(passw)m(ords)h(are)150
-4862 y(p)s(oten)m(tially)32 b(exp)s(osed)e(to)h(ea)m(v)m(esdropping)g
-(soft)m(w)m(are)1976 4829 y Fw(3)2015 4862 y FD(.)p 150
-5066 1200 4 v 199 5134 a Fw(3)275 5166 y Fs(NCO)e Fu(do)r(es)g(not)h
-(implemen)n(t)f(command)g(line)h(options)g(to)g(sp)r(ecify)g
-Fs(FTP)f Fu(logins)i(and)e(passw)n(ords)h(b)r(ecause)g(cop)n(ying)275
-5253 y(those)c(data)h(in)n(to)f(the)g Ft(history)i Fu(global)g
-(attribute)e(in)g(the)g(output)f(\014le)h(\(done)g(b)n(y)g(default\))g
-(p)r(oses)h(an)g(unacceptable)275 5340 y(securit)n(y)e(risk.)p
-eop end
-%%Page: 29 31
-TeXDict begin 29 30 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(29)275 299 y FC(SFTP)p
-FD(,)32 b(i.e.,)j(secure)e FC(FTP)p FD(,)g(uses)f FC(SSH)p
-FD(-based)i(securit)m(y)f(proto)s(cols)h(that)f(solv)m(e)i(the)e
-(securit)m(y)g(issues)150 408 y(asso)s(ciated)42 b(with)e(plain)h
-FC(FTP)p FD(.)f FC(NCO)g FD(supp)s(orts)f FC(SFTP)h FD(proto)s(col)i
-(access)g(to)f(\014les)f(sp)s(eci\014ed)g(with)h(a)150
-518 y(homebrew)30 b(syn)m(tax)h(of)f(the)h(form)390 685
-y Fy(sftp://machine.domain.tl)o(d:/p)o(ath/)o(to/)o(file)o(name)275
-852 y FD(Note)43 b(the)f(second)h(colon)g(follo)m(wing)g(the)g(top-lev)
-m(el-domain)h(\(tld\).)77 b(This)42 b(syn)m(tax)g(is)h(a)f(h)m(ybrid)
-150 962 y(b)s(et)m(w)m(een)31 b(an)f FC(FTP)e(URL)i FD(and)g(a)h
-(standard)e(remote)j(\014le)e(syn)m(tax.)275 1129 y(T)-8
-b(o)39 b(access)h(a)f(\014le)g(using)g Fy(rcp)f FD(or)g
-Fy(scp)p FD(,)j(sp)s(ecify)d(the)h(In)m(ternet)g(address)f(of)h(the)g
-(remote)h(\014le.)67 b(Of)150 1238 y(course)33 b(in)f(this)h(case)h(y)m
-(ou)f(m)m(ust)g(ha)m(v)m(e)g Fy(rcp)f FD(or)h Fy(scp)f
-FD(privileges)i(whic)m(h)e(allo)m(w)i(transparen)m(t)f(\(no)g(pass-)150
-1348 y(w)m(ord)47 b(en)m(try)h(required\))f(access)i(to)f(the)g(remote)
-g(mac)m(hine.)93 b(This)47 b(means)g(that)h(`)p Fy(~/.rhosts)p
-FD(')e(or)150 1457 y(`)p Fy(~/ssh/authorized_keys)p FD(')25
-b(m)m(ust)30 b(b)s(e)g(set)h(accordingly)h(on)e(b)s(oth)f(lo)s(cal)j
-(and)e(remote)h(mac)m(hines.)275 1624 y(T)-8 b(o)31 b(access)i(a)f
-(\014le)f(on)g(a)h(High)g(P)m(erformance)g(Storage)g(System)f(\()p
-FC(HPSS)p FD(\))h(\(suc)m(h)g(as)f(that)h(at)g FC(NCAR)p
-FD(,)150 1734 y FC(ECMWF)p FD(,)c FC(LANL)p FD(,)g FC(DKRZ)p
-FD(,)g FC(LLNL)p FD(\))g(sp)s(ecify)f(the)h(full)f FC(HPSS)h
-FD(pathname)f(of)h(the)g(remote)g(\014le.)40 b FC(NCO)28
-b FD(will)150 1843 y(attempt)i(to)f(detect)h(whether)e(the)h(lo)s(cal)h
-(mac)m(hine)f(has)g(direct)g(\(sync)m(hronous\))f FC(HPSS)h
-FD(access.)41 b(In)28 b(this)150 1953 y(case,)k FC(NCO)e
-FD(attempts)h(to)g(use)f(the)h(Hierarc)m(hical)h(Storage)g(In)m
-(terface)f(\()p FC(HSI)p FD(\))h(command)e Fy(hsi)f(get)3575
-1920 y Fw(4)3612 1953 y FD(.)275 2120 y(The)g(follo)m(wing)j(examples)f
-(sho)m(w)f(ho)m(w)h(one)f(migh)m(t)i(analyze)f(\014les)g(stored)f(on)g
-(remote)i(systems.)390 2287 y Fy(ncks)47 b(-l)g(.)g
-(ftp://dust.ess.uci.edu/pu)o(b/ze)o(nder)o(/nc)o(o/in)o(.nc)390
-2397 y(ncks)g(-l)g(.)g(sftp://dust.ess.uci.edu:/)o(home)o(/ftp)o(/pu)o
-(b/ze)o(nder)o(/nc)o(o/in)o(.nc)390 2506 y(ncks)g(-l)g(.)g
-(dust.ess.uci.edu:/home/ze)o(nder)o(/nco)o(/da)o(ta/i)o(n.nc)390
-2616 y(ncks)g(-l)g(.)g(/ZENDER/nco/in.nc)390 2725 y(ncks)g(-l)g(.)g
-(/home/zender/nco/in.nc)390 2835 y(ncks)g(-l)g(.)g
-(http://motherlode.ucar.ed)o(u:80)o(80/t)o(hre)o(dds/)o(dods)o(C/t)o
-(estd)o(ods/)o(in.)o(nc)150 3002 y FD(The)37 b(\014rst)f(example)i(w)m
-(orks)f(v)m(erbatim)h(if)g(y)m(our)f(system)g(is)h(connected)g(to)g
-(the)f(In)m(ternet)h(and)e(is)i(not)150 3112 y(b)s(ehind)43
-b(a)i(\014rew)m(all.)84 b(The)45 b(second)f(example)i(w)m(orks)e(if)h
-(y)m(ou)g(ha)m(v)m(e)h Fy(sftp)e FD(access)i(to)f(the)g(mac)m(hine)150
-3221 y Fy(dust.ess.uci.edu)p FD(.)35 b(The)27 b(third)f(example)i(w)m
-(orks)f(if)g(y)m(ou)h(ha)m(v)m(e)g Fy(rcp)e FD(or)h Fy(scp)g
-FD(access)h(to)g(the)f(mac)m(hine)150 3331 y Fy(dust.ess.uci.edu)p
-FD(.)57 b(The)37 b(fourth)f(and)h(\014fth)f(examples)i(w)m(ork)f(on)g
-FC(NCAR)h FD(computers)f(with)g(lo)s(cal)150 3440 y(access)c(to)f(the)f
-FC(HPSS)h Fy(hsi)d(get)i FD(command)1664 3407 y Fw(5)1701
-3440 y FD(.)44 b(The)31 b(sixth)g(command)g(w)m(orks)g(if)h(y)m(our)f
-(lo)s(cal)i(v)m(ersion)f(of)150 3550 y FC(NCO)27 b FD(is)g
-FC(OP)n(eND)n(AP)p FD(-enabled)f(\(this)i(is)f(fully)g(describ)s(ed)f
-(in)h(Section)g(3.7.1)i([OP)m(eND)m(AP],)h(page)e(30\),)h(or)150
-3659 y(if)34 b(the)g(remote)h(\014le)f(is)g(accessible)h(via)g
-Fy(wget)p FD(.)50 b(The)33 b(ab)s(o)m(v)m(e)i(commands)f(can)g(b)s(e)f
-(rewritten)h(using)g(the)150 3769 y(`)p Fy(-p)c Fq(input-path)11
-b FD(')27 b(option)k(as)g(follo)m(ws:)390 3936 y Fy(ncks)47
-b(-p)g(ftp://dust.ess.uci.edu/p)o(ub/)o(zend)o(er/n)o(co)41
-b(-l)48 b(.)f(in.nc)390 4046 y(ncks)g(-p)g(sftp://dust.ess.uci.edu:)o
-(/ho)o(me/f)o(tp/p)o(ub/)o(zend)o(er/n)o(co)41 b(-l)48
-b(.)f(in.nc)390 4155 y(ncks)g(-p)g(dust.ess.uci.edu:/home/z)o(end)o
-(er/n)o(co)42 b(-l)47 b(.)g(in.nc)390 4265 y(ncks)g(-p)g(/ZENDER/nco)e
-(-l)i(.)g(in.nc)390 4374 y(ncks)g(-p)g(/home/zender/nco)c(-l)k(.)h
-(in.nc)e(#)i(HPSS)390 4484 y(ncks)f(-p)g(http://motherlode.ucar.e)o
-(du:)o(8080)o(/thr)o(edd)o(s/do)o(dsC/)o(tes)o(tdod)o(s)42
-b(\\)629 4594 y(-l)47 b(.)g(in.nc)p 150 4702 1200 4 v
-199 4769 a Fw(4)275 4801 y Fu(The)31 b Ft(hsi)h Fu(command)f(m)n(ust)g
-(b)r(e)g(in)g(the)g(user's)h(path)f(in)g(one)h(of)g(the)e(follo)n(wing)
-k(directories:)47 b Ft(/usr/local/bin)35 b Fu(or)275
-4888 y Ft(/opt/hpss/bin)p Fu(.)63 b(T)-6 b(ell)35 b(us)g(if)g(the)f
-Fs(HPSS)h Fu(installation)h(at)e(y)n(our)g(site)h(places)h(the)e
-Ft(hsi)h Fu(command)f(in)h(a)f(di\013eren)n(t)275 4975
-y(lo)r(cation,)27 b(and)e(w)n(e)i(will)g(add)e(that)g(lo)r(cation)j(to)
-d(the)h(list)g(of)h(acceptable)f(paths)g(to)f(searc)n(h)i(for)f
-Ft(hsi)p Fu(.)199 5047 y Fw(5)275 5078 y Fs(NCO)34 b
-Fu(supp)r(orted)h(the)g(old)g Fs(NCAR)g Fu(Mass)i(Storage)f(System)e
-(\()p Fs(MSS)p Fu(\))h(un)n(til)g(v)n(ersion)h(4.0.7)h(in)e(April,)j
-(2011.)64 b Fs(NCO)275 5166 y Fu(supp)r(orted)20 b Fs(MSS)p
-Fu(-retriev)l(als)h(via)h(a)f(v)l(ariet)n(y)f(of)i(mec)n(hanisms)g
-(including)f(the)g Ft(msread)p Fu(,)i Ft(msrcp)p Fu(,)h(and)c
-Ft(nrnet)i Fu(commands)275 5253 y(in)n(v)n(ok)n(ed)g(either)i
-(automatically)h(or)f(with)g(sen)n(tinels)g(lik)n(e)g
-Ft(ncks)j(-p)f(mss:/ZENDER/nco)j(-l)d(.)f(in.nc)p Fu(.)35
-b(Once)24 b(the)f Fs(MSS)275 5340 y Fu(w)n(as)j(decommissioned)h(in)f
-(Marc)n(h,)g(2011,)i(supp)r(ort)d(for)i(these)e(retriev)l(al)h(mec)n
-(hanisms)h(w)n(as)f(remo)n(v)n(ed)g(from)g Fs(NCO)p Fu(.)p
-eop end
-%%Page: 30 32
-TeXDict begin 30 31 bop 150 -116 a FD(30)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(Using)37 b(`)p
-Fy(-p)p FD(')g(is)f(recommended)h(b)s(ecause)g(it)g(clearly)h
-(separates)g(the)f Fz(input-path)e FD(from)i(the)g(\014lename)150
-408 y(itself,)42 b(sometimes)e(called)g(the)f Fz(stub)p
-FD(.)65 b(When)38 b Fz(input-path)g FD(is)h(not)g(explicitly)h(sp)s
-(eci\014ed)f(using)f(`)p Fy(-p)p FD(',)150 518 y FC(NCO)d
-FD(in)m(ternally)i(generates)g(an)e Fz(input-path)g FD(from)g(the)h
-(\014rst)f(input)f(\014lename.)57 b(The)35 b(automatically)150
-628 y(generated)29 b Fz(input-path)f FD(is)g(constructed)g(b)m(y)g
-(stripping)g(the)g(input)g(\014lename)g(of)g(ev)m(erything)h(follo)m
-(wing)150 737 y(the)37 b(\014nal)g(`)p Fy(/)p FD(')g(c)m(haracter)h
-(\(i.e.,)j(remo)m(ving)d(the)f(stub\).)60 b(The)36 b(`)p
-Fy(-l)30 b Fq(output-path)11 b FD(')34 b(option)j(tells)h
-FC(NCO)150 847 y FD(where)28 b(to)i(store)f(the)g(remotely)h(retriev)m
-(ed)f(\014le)g(and)f(the)h(output)f(\014le.)41 b(Often)28
-b(the)h(path)f(to)i(a)f(remotely)150 956 y(retriev)m(ed)40
-b(\014le)e(is)h(quite)g(di\013eren)m(t)g(than)f(the)h(path)g(on)f(the)h
-(lo)s(cal)h(mac)m(hine)f(where)f(y)m(ou)h(w)m(ould)g(lik)m(e)150
-1066 y(to)d(store)f(the)g(\014le.)54 b(If)34 b(`)p Fy(-l)p
-FD(')h(is)g(not)g(sp)s(eci\014ed)f(then)g FC(NCO)h FD(in)m(ternally)h
-(generates)g(an)f Fz(output-path)f FD(b)m(y)150 1176
-y(simply)23 b(setting)h Fz(output-path)f FD(equal)g(to)h
-Fz(input-path)f FD(stripp)s(ed)e(of)i(an)m(y)h(mac)m(hine)g(names.)38
-b(If)23 b(`)p Fy(-l)p FD(')g(is)g(not)150 1285 y(sp)s(eci\014ed)29
-b(and)f(the)i(remote)g(\014le)g(resides)f(on)g(the)h
-FC(NCAR)f(HPSS)h FD(system,)g(then)f(the)g(leading)h(c)m(haracter)150
-1395 y(of)c Fz(input-path)p FD(,)g(`)p Fy(/)p FD(',)h(is)f(also)h
-(stripp)s(ed)d(from)h Fz(output-path)p FD(.)39 b(Sp)s(ecifying)25
-b Fz(output-path)h FD(as)g(`)p Fy(-l)k(./)p FD(')25 b(tells)150
-1504 y FC(NCO)32 b FD(to)h(store)f(the)h(remotely)g(retriev)m(ed)g
-(\014le)f(and)g(the)g(output)g(\014le)g(in)g(the)g(curren)m(t)g
-(directory)-8 b(.)47 b(Note)150 1614 y(that)34 b(`)p
-Fy(-l)c(.)p FD(')j(is)g(equiv)-5 b(alen)m(t)35 b(to)f(`)p
-Fy(-l)c(./)p FD(')j(though)g(the)h(latter)g(is)f(recommended)g(as)h(it)
-g(is)f(syn)m(tactically)150 1724 y(more)e(clear.)150
-1913 y Fv(3.7.1)63 b FD(OP)m(eND)m(AP)150 2060 y(The)24
-b(Distributed)g(Oceanographic)h(Data)g(System)f(\()p
-FC(DODS)p FD(\))i(pro)m(vides)e(useful)f(replacemen)m(ts)i(for)f(com-)
-150 2169 y(mon)32 b(data)i(in)m(terface)g(libraries)f(lik)m(e)h
-(netCDF.)f(The)f FC(DODS)i FD(v)m(ersions)f(of)f(these)i(libraries)e
-(implemen)m(t)150 2279 y(net)m(w)m(ork)39 b(transparen)m(t)f(access)h
-(to)f(data)h(via)f(a)g(clien)m(t-serv)m(er)i(data)f(access)g(proto)s
-(col)g(that)f(uses)g(the)150 2389 y FC(HTTP)27 b FD(proto)s(col)i(for)e
-(comm)m(unication.)41 b(Although)28 b FC(DODS)p FD(-tec)m(hnology)i
-(originated)f(with)e(o)s(ceanogra-)150 2498 y(ph)m(y)32
-b(data,)i(it)f(applyies)f(to)i(virtually)f(all)g(scien)m(ti\014c)h
-(data.)47 b(In)32 b(recognition)i(of)f(this,)g(the)f(data)i(access)150
-2608 y(proto)s(col)f(underlying)e FC(DODS)h FD(\(whic)m(h)h(is)f(what)g
-FC(NCO)f FD(cares)i(ab)s(out\))f(has)g(b)s(een)f(renamed)h(the)g(Op)s
-(en-)150 2717 y(source)38 b(Pro)5 b(ject)38 b(for)g(a)g(Net)m(w)m(ork)h
-(Data)g(Access)g(Proto)s(col,)h FC(OP)n(eND)n(AP)p FD(.)d(W)-8
-b(e)39 b(use)e(the)h(terms)f FC(DODS)150 2827 y FD(and)27
-b FC(OP)n(eND)n(AP)f FD(in)m(terc)m(hangeably)-8 b(,)30
-b(and)d(often)g(write)h FC(OP)n(eND)n(AP)p FD(/)p FC(DODS)f
-FD(for)g(no)m(w.)39 b(In)27 b(the)g(future)f(w)m(e)150
-2936 y(will)31 b(deprecate)g FC(DODS)g FD(in)f(fa)m(v)m(or)h(of)g
-FC(D)n(AP)f FD(or)h FC(OP)n(eND)n(AP)p FD(,)e(as)i(appropriate)2783
-2903 y Fw(6)2820 2936 y FD(.)275 3096 y FC(NCO)46 b FD(ma)m(y)i(b)s(e)e
-FC(D)n(AP)p FD(-enabled)h(b)m(y)g(linking)g FC(NCO)g
-FD(to)h(the)f FC(OP)n(eND)n(AP)f FD(libraries.)91 b(This)46
-b(is)h(de-)150 3205 y(scrib)s(ed)e(in)g(the)h FC(OP)n(eND)n(AP)f
-FD(do)s(cumen)m(tation)h(and)f(automagically)k(implemen)m(ted)d(in)g
-FC(NCO)f FD(build)150 3315 y(mec)m(hanisms)623 3282 y
-Fw(7)660 3315 y FD(.)85 b(The)44 b(`)p Fy(./configure)p
-FD(')e(mec)m(hanism)k(automatically)h(enables)e FC(NCO)g
-FD(as)g FC(OP)n(eND)n(AP)150 3425 y FD(clien)m(ts)34
-b(if)f(it)g(can)g(\014nd)e(the)i(required)f FC(OP)n(eND)n(AP)g
-FD(libraries)2233 3392 y Fw(8)2270 3425 y FD(.)48 b(in)32
-b(the)h(usual)f(lo)s(cations.)49 b(The)33 b Fy($DODS_)150
-3534 y(ROOT)42 b FD(en)m(vironmen)m(t)i(v)-5 b(ariable)44
-b(ma)m(y)f(b)s(e)g(used)f(to)i(o)m(v)m(erride)g(the)g(default)f
-FC(OP)n(eND)n(AP)f FD(library)h(lo)s(ca-)150 3644 y(tion)e(at)f
-FC(NCO)g FD(compile-time.)72 b(Building)40 b FC(NCO)g
-FD(with)f(`)p Fy(bld/Makefile)p FD(')f(and)h(the)h(command)g
-Fy(make)150 3753 y(DODS=Y)35 b FD(adds)i(the)g(\(non-in)m(tuitiv)m(e\))
-i(commands)e(to)h(link)e(to)i(the)g FC(OP)n(eND)n(AP)d
-FD(libraries)i(installed)h(in)150 3863 y(the)30 b Fy($DODS_ROOT)d
-FD(directory)-8 b(.)41 b(The)29 b(\014le)h(`)p Fy(doc/opendap.sh)p
-FD(')c(con)m(tains)31 b(a)f(generic)h(script)f(in)m(tended)f(to)150
-3973 y(help)38 b(users)g(install)i FC(OP)n(eND)n(AP)e
-FD(b)s(efore)g(building)g FC(NCO)p FD(.)h(The)f(do)s(cumen)m(tation)i
-(at)f(the)g(OP)m(eND)m(AP)150 4082 y(Homepage)29 b(\()p
-Fy(http://www.opendap.org)p FD(\))22 b(is)28 b(v)m(oluminous.)39
-b(Chec)m(k)28 b(there)g(and)f(on)g(the)h(DODS)f(mail)p
-150 4163 1200 4 v 199 4230 a Fw(6)303 4262 y Fs(DODS)h
-Fu(is)h(b)r(eing)f(deprecated)g(b)r(ecause)h(it)f(is)h(am)n(biguous,)h
-(referring)g(b)r(oth)e(to)g(a)h(proto)r(col)g(and)f(to)h(a)f
-(collection)i(of)275 4349 y(\(o)r(ceanograph)n(y\))23
-b(data.)34 b(It)22 b(is)h(sup)r(erceded)g(b)n(y)e(t)n(w)n(o)i(terms.)34
-b Fs(D)n(AP)23 b Fu(is)g(the)f(discipline-neutral)i(Data)f(Access)g
-(Proto)r(col)275 4436 y(at)32 b(the)g(heart)h(of)g Fs(DODS)p
-Fu(.)f(The)h(National)g(Virtual)g(Ocean)f(Data)h(System)e(\()p
-Fs(NV)n(ODS)p Fu(\))h(refers)i(to)e(the)g(collection)i(of)275
-4524 y(o)r(ceanograph)n(y)26 b(data)h(and)e(o)r(ceanographic)j
-(extensions)f(to)f Fs(D)n(AP)p Fu(.)g(In)f(other)h(w)n(ords,)i
-Fs(NV)n(ODS)d Fu(is)i(implemen)n(ted)f(with)275 4611
-y Fs(OP)n(eND)n(AP)p Fu(.)k Fs(OP)n(eND)n(AP)g Fu(is)h
-Fl(also)k Fu(the)30 b(op)r(en)g(source)h(pro)t(ject)g(whic)n(h)g(main)n
-(tains,)h(dev)n(elops,)g(and)e(prom)n(ulgates)h(the)275
-4698 y Fs(D)n(AP)25 b Fu(standard.)34 b Fs(OP)n(eND)n(AP)26
-b Fu(and)f Fs(D)n(AP)h Fu(really)g(are)g(in)n(terc)n(hangeable.)35
-b(Got)26 b(it)g(y)n(et?)199 4769 y Fw(7)300 4801 y Fu(Automagic)g(supp)
-r(ort)f(for)h Fs(DODS)f Fu(v)n(ersion)g(3.2.x)h(w)n(as)h(deprecated)e
-(in)g(Decem)n(b)r(er,)h(2003)g(after)g Fs(NCO)f Fu(v)n(ersion)h(2.8.4.)
-275 4888 y Fs(NCO)d Fu(supp)r(ort)g(for)i Fs(OP)n(eND)n(AP)e
-Fu(v)n(ersions)h(3.4.x)h(commenced)f(in)f(Decem)n(b)r(er,)i(2003,)h
-(with)d Fs(NCO)h Fu(v)n(ersion)g(2.8.5.)35 b Fs(NCO)275
-4975 y Fu(supp)r(ort)20 b(for)h Fs(OP)n(eND)n(AP)g Fu(v)n(ersions)g
-(3.5.x)g(commenced)g(in)g(June,)h(2005,)h(with)e Fs(NCO)f
-Fu(v)n(ersion)h(3.0.1.)35 b Fs(NCO)20 b Fu(supp)r(ort)g(for)275
-5063 y Fs(OP)n(eND)n(AP)j Fu(v)n(ersions)g(3.6.x)h(commenced)g(in)f
-(June,)h(2006,)h(with)f Fs(NCO)f Fu(v)n(ersion)g(3.1.3.)35
-b Fs(NCO)23 b Fu(supp)r(ort)g(for)h Fs(OP)n(eND)n(AP)275
-5150 y Fu(v)n(ersions)i(3.7.x)g(commenced)g(in)g(Jan)n(uary)-6
-b(,)25 b(2007,)j(with)e Fs(NCO)f Fu(v)n(ersion)h(3.1.9.)199
-5221 y Fw(8)295 5253 y Fu(The)20 b(minimal)i(set)e(of)h(libraries)h
-(required)e(to)h(build)f Fs(NCO)g Fu(as)h Fs(OP)n(eND)n(AP)f
-Fu(clien)n(ts)h(are,)h(in)e(link)h(order,)h(`)p Ft(libnc-dap.a)p
-Fu(',)275 5340 y(`)p Ft(libdap.a)p Fu(',)28 b(and)d(`)p
-Ft(libxml2)p Fu(')j(and)d(`)p Ft(libcurl.a)p Fu('.)p
-eop end
-%%Page: 31 33
-TeXDict begin 31 32 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(31)150 299 y(lists)34
-b(\()p Fy(http://www.unidata.ucar.ed)o(u/pa)o(cka)o(ges/)o(dods)o(/ho)o
-(me/m)o(ailL)o(ist)o(s/)p FD(\).)45 b(to)34 b(learn)g(more)150
-408 y(ab)s(out)c(the)h(extensiv)m(e)h(capabilities)g(of)e
-FC(OP)n(eND)n(AP)1936 375 y Fw(9)1972 408 y FD(.)275
-570 y(Once)21 b FC(NCO)g FD(is)h FC(D)n(AP)p FD(-enabled)f(the)h(op)s
-(erators)f(are)h FC(OP)n(eND)n(AP)e FD(clien)m(ts.)40
-b(All)22 b FC(OP)n(eND)n(AP)e FD(clien)m(ts)j(ha)m(v)m(e)150
-680 y(net)m(w)m(ork)k(transparen)m(t)f(access)i(to)e(an)m(y)h(\014les)f
-(con)m(trolled)i(b)m(y)e(a)g FC(OP)n(eND)n(AP)f FD(serv)m(er.)40
-b(Simply)25 b(sp)s(ecify)h(the)150 789 y(input)37 b(\014le)g(path\(s\))
-h(in)f FC(URL)h FD(notation)h(and)d(all)j FC(NCO)e FD(op)s(erations)h
-(ma)m(y)g(b)s(e)f(p)s(erformed)f(on)h(remote)150 899
-y(\014les)31 b(made)g(accessible)i(b)m(y)e(a)g FC(OP)n(eND)n(AP)f
-FD(serv)m(er.)43 b(This)31 b(command)g(tests)g(the)h(basic)f
-(functionalit)m(y)i(of)150 1008 y FC(OP)n(eND)n(AP)p
-FD(-enabled)c FC(NCO)i FD(clien)m(ts:)390 1170 y Fy(\045)47
-b(ncks)g(-O)g(-o)g(~/foo.nc)f(-C)h(-H)g(-v)h(one)e(-l)i(/tmp)e(\\)485
-1280 y(-p)i(http://motherlode.ucar.)o(edu:)o(808)o(0/th)o(redd)o(s/d)o
-(odsC)o(/tes)o(tdo)o(ds)42 b(in.nc)390 1389 y(\045)47
-b(ncks)g(-H)g(-v)g(one)g(~/foo.nc)390 1499 y(one)g(=)g(1)275
-1661 y FD(The)26 b Fy(one)j(=)h(1)c FD(outputs)g(con\014rm)g
-(\(\014rst\))g(that)h Fy(ncks)f FD(correctly)i(retriev)m(ed)f(data)g
-(via)g(the)g FC(OP)n(eND)n(AP)150 1770 y FD(proto)s(col)41
-b(and)e(\(second\))i(that)g Fy(ncks)d FD(created)j(a)g(v)-5
-b(alid)40 b(lo)s(cal)h(cop)m(y)g(of)f(the)g(subsetted)g(remote)h
-(\014le.)150 1880 y(With)33 b(minor)f(c)m(hanges)i(to)f(the)g(ab)s(o)m
-(v)m(e)h(command,)f(netCDF4)h(can)f(b)s(e)f(used)g(as)h(b)s(oth)f(the)h
-(input)f(and)150 1989 y(output)e(\014le)g(format:)390
-2151 y Fy(\045)47 b(ncks)g(-4)g(-O)g(-o)h(~/foo.nc)d(-C)i(-H)h(-v)f
-(one)g(-l)g(/tmp)f(\\)485 2261 y(-p)i(http://motherlode.ucar.)o(edu:)o
-(808)o(0/th)o(redd)o(s/d)o(odsC)o(/tes)o(tdo)o(ds)42
-b(in_4.nc)390 2370 y(\045)47 b(ncks)g(-H)g(-v)g(one)g(~/foo.nc)390
-2480 y(one)g(=)g(1)275 2641 y FD(And,)39 b(of)g(course,)h
-FC(OP)n(eND)n(AP)p FD(-enabled)e FC(NCO)g FD(clien)m(ts)i(con)m(tin)m
-(ue)f(to)g(supp)s(ort)e(other,)k(orthogonal)150 2751
-y(features)31 b(suc)m(h)f(as)g(UDUnits)h(\(see)h(Section)f(3.19)h
-([UDUnits)f(Supp)s(ort],)e(page)i(45\):)390 2913 y Fy(\045)47
-b(ncks)g(-u)g(-C)g(-H)h(-v)f(wvl)g(-d)g(wvl,'0.4)e(micron','0.7)g
-(micron')h(\\)485 3022 y(-p)i(http://motherlode.ucar.)o(edu:)o(808)o
-(0/th)o(redd)o(s/d)o(odsC)o(/tes)o(tdo)o(ds)42 b(in_4.nc)390
-3132 y(\045)47 b(wvl[0]=5e-07)e(meter)275 3294 y FD(The)c(next)h
-(command)f(is)h(a)g(more)g(adv)-5 b(anced)42 b(example)h(whic)m(h)e
-(demonstrates)h(the)g(real)h(p)s(o)m(w)m(er)150 3403
-y(of)34 b FC(OP)n(eND)n(AP)p FD(-enabled)f FC(NCO)h FD(clien)m(ts.)53
-b(The)33 b Fy(ncwa)g FD(clien)m(t)i(requests)f(an)g(equatorial)h(h)m
-(yp)s(erslab)e(from)150 3513 y(remotely)d(stored)f FC(NCEP)c
-(reanalyses)f(data)k FD(of)h(the)g(y)m(ear)i(1969)r(.)40
-b(The)29 b FC(NO)n(AA)f(OP)n(eND)n(AP)g FD(serv)m(er)h(\(hop)s(e-)150
-3622 y(fully!\))73 b(serv)m(es)42 b(these)f(data.)74
-b(The)41 b(lo)s(cal)h Fy(ncwa)e FD(clien)m(t)j(then)e(computes)g(and)g
-(stores)g(\(lo)s(cally\))j(the)150 3732 y(regional)32
-b(mean)e(surface)g(pressure)f(\(in)i(P)m(a\))q(.)390
-3894 y Fy(ncwa)47 b(-C)g(-a)g(lat,lon,time)d(-d)k(lon,-10.,10.)c(-d)j
-(lat,-10.,10.)e(-l)i(/tmp)g(-p)g(\\)390 4003 y
-(http://www.esrl.noaa.gov)o(/psd)o(/thr)o(edd)o(s/do)o(dsC/)o(Dat)o
-(aset)o(s/nc)o(ep.)o(rean)o(alys)o(is.)o(dail)o(yavg)o(s/s)o(urfa)o(ce)
-41 b(\\)485 4113 y(pres.sfc.1969.nc)j(~/foo.nc)150 4274
-y FD(All)28 b(with)f(one)g(command!)40 b(The)26 b(data)i(in)f(this)g
-(particular)h(input)e(\014le)h(also)i(happ)s(en)c(to)j(b)s(e)f(pac)m(k)
-m(ed)h(\(see)150 4384 y(Section)35 b(4.1.11)h([Metho)s(ds)f(and)e
-(functions],)j(page)e(82\),)j(although)e(this)f(is)g(completely)i
-(transparen)m(t)150 4494 y(to)31 b(the)g(user)e(since)i
-FC(NCO)f FD(automatically)j(unpac)m(ks)d(data)h(b)s(efore)f(attempting)
-i(arithmetic.)275 4655 y FC(NCO)i FD(obtains)g(remote)i(\014les)e(from)
-g(the)g FC(OP)n(eND)n(AP)f FD(serv)m(er)i(\(e.g.,)i(`)p
-Fy(www.cdc.noaa.gov)p FD('\))31 b(rather)150 4765 y(than)23
-b(the)g(lo)s(cal)h(mac)m(hine.)39 b(Input)22 b(\014les)h(are)g(\014rst)
-f(copied)i(to)f(the)g(lo)s(cal)i(mac)m(hine,)g(then)e(pro)s(cessed.)37
-b(The)150 4874 y FC(OP)n(eND)n(AP)e FD(serv)m(er)i(p)s(erforms)e(data)i
-(access,)j(h)m(yp)s(erslabbing,)d(and)f(transfer)g(to)h(the)g(lo)s(cal)
-h(mac)m(hine.)p 150 4979 1200 4 v 199 5047 a Fw(9)300
-5078 y Fu(W)-6 b(e)25 b(are)i(most)f(familiar)i(with)e(the)f
-Fs(OP)n(eND)n(AP)g Fu(abilit)n(y)h(to)g(enable)g(net)n(w)n
-(ork-transparen)n(t)f(data)h(access.)36 b Fs(OP)n(eND)n(AP)275
-5166 y Fu(has)23 b(man)n(y)g(other)g(features,)i(including)e
-(sophisticated)h(h)n(yp)r(erslabbing)f(and)g(serv)n(er-side)g(pro)r
-(cessing)i(via)e Fp(constrain)n(t)275 5253 y(expressions)p
-Fu(.)39 b(If)27 b(y)n(ou)f(kno)n(w)h(more)h(ab)r(out)f(this,)h(please)g
-(consider)f(writing)h(a)g(section)g(on)f Ft(")p Fs(OP)n(eND)n(AP)g
-Fu(Capabilities)275 5340 y(of)f(In)n(terest)f(to)h Fs(NCO)f
-Fu(Users)p Ft(")i Fu(for)f(incorp)r(oration)h(in)f(the)f
-Fp(NCO)g(User's)i(Guide)p Fu(.)p eop end
-%%Page: 32 34
-TeXDict begin 32 33 bop 150 -116 a FD(32)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(This)k(allo)m(ws)i(the)f(I/O)f
-(to)i(app)s(ear)e(to)h FC(NCO)g FD(as)g(if)g(the)f(input)g(\014les)h(w)
-m(ere)g(lo)s(cal.)55 b(The)34 b(lo)s(cal)i(mac)m(hine)150
-408 y(p)s(erforms)24 b(all)j(arithmetic)g(op)s(erations.)40
-b(Only)25 b(the)h(h)m(yp)s(erslabb)s(ed)e(output)i(data)g(are)h
-(transferred)e(o)m(v)m(er)150 518 y(the)32 b(net)m(w)m(ork)h(\(to)h
-(the)e(lo)s(cal)i(mac)m(hine\))f(for)f(the)g(n)m(um)m(b)s(er-crunc)m
-(hing)f(to)i(b)s(egin.)46 b(The)32 b(adv)-5 b(an)m(tages)34
-b(of)150 628 y(this)c(are)h(ob)m(vious)g(if)f(y)m(ou)h(are)g(examining)
-g(small)f(parts)g(of)h(large)g(\014les)g(stored)f(at)h(remote)h(lo)s
-(cations.)150 973 y FB(3.8)68 b(Retaining)47 b(Retriev)l(ed)g(Files)150
-1019 y Fm(\013)p 200 1019 3554 4 v 3553 w(\010)p 150
-1509 4 442 v 178 1156 a FD(Av)-5 b(ailabilit)m(y:)43
-b(All)31 b(op)s(erators)178 1265 y(Short)f(options:)41
-b(`)p Fy(-R)p FD(')178 1375 y(Long)31 b(options:)41 b(`)p
-Fy(--rtn)p FD(',)29 b(`)p Fy(--retain)p FD(')p 3803 1509
-V 150 1561 a Fm(\012)p 200 1561 3554 4 v 3553 w(\011)275
-1769 y FD(In)39 b(order)h(to)i(conserv)m(e)f(lo)s(cal)h(\014le)f
-(system)f(space,)k(\014les)d(retriev)m(ed)g(from)f(remote)i(lo)s
-(cations)g(are)150 1878 y(automatically)30 b(deleted)e(from)e(the)h(lo)
-s(cal)i(\014le)e(system)g(once)h(they)f(ha)m(v)m(e)h(b)s(een)e(pro)s
-(cessed.)40 b(Man)m(y)27 b FC(NCO)150 1988 y FD(op)s(erators)33
-b(w)m(ere)g(constructed)g(to)h(w)m(ork)f(with)g(n)m(umerous)e(large)j
-(\(e.g.,)i(200)31 b(MB)q(\))i(\014les.)48 b(Retriev)-5
-b(al)35 b(of)150 2097 y(m)m(ultiple)e(\014les)g(from)f(remote)i(lo)s
-(cations)g(is)f(done)f(serially)-8 b(.)49 b(Eac)m(h)33
-b(\014le)g(is)g(retriev)m(ed,)h(pro)s(cessed,)f(then)150
-2207 y(deleted)g(b)s(efore)f(the)h(cycle)h(rep)s(eats.)47
-b(In)31 b(cases)j(where)e(it)g(is)h(useful)f(to)h(k)m(eep)g(the)f
-(remotely-retriev)m(ed)150 2317 y(\014les)24 b(on)h(the)g(lo)s(cal)g
-(\014le)g(system)g(after)g(pro)s(cessing,)g(the)g(automatic)i(remo)m(v)
--5 b(al)25 b(feature)g(ma)m(y)g(b)s(e)f(disabled)150
-2426 y(b)m(y)30 b(sp)s(ecifying)g(`)p Fy(-R)p FD(')h(on)f(the)h
-(command)f(line.)275 2623 y(In)m(v)m(oking)g Fy(-R)f
-FD(disables)g(the)h(default)g(prin)m(ting)f(b)s(eha)m(vior)h(of)g
-Fy(ncks)p FD(.)39 b(This)29 b(allo)m(ws)i Fy(ncks)d FD(to)j(retriev)m
-(e)150 2733 y(remote)42 b(\014les)g(without)f(automatically)j(trying)e
-(to)g(prin)m(t)f(them.)73 b(See)42 b(Section)g(4.7)h([nc)m(ks)e(netCDF)
-150 2842 y(Kitc)m(hen)31 b(Sink],)f(page)h(135,)h(for)e(more)h
-(details.)275 3039 y(Note)i(that)g(the)g(remote)g(retriev)-5
-b(al)34 b(features)e(of)h FC(NCO)f FD(can)g(alw)m(a)m(ys)i(b)s(e)e
-(used)g(to)h(retriev)m(e)h Fr(any)41 b FD(\014le,)150
-3149 y(including)h(non-netCDF)i(\014les,)i(via)e Fy(SSH)p
-FD(,)h(anon)m(ymous)e FC(FTP)p FD(,)f(or)h Fy(msrcp)p
-FD(.)77 b(Often)43 b(this)g(metho)s(d)f(is)150 3259 y(quic)m(k)m(er)31
-b(than)e(using)g(a)h(bro)m(wser,)f(or)h(running)e(an)h
-FC(FTP)g FD(session)h(from)f(a)h(shell)g(windo)m(w)e(y)m(ourself.)41
-b(F)-8 b(or)150 3368 y(example,)31 b(sa)m(y)g(y)m(ou)g(w)m(an)m(t)g(to)
-g(obtain)g(a)g FC(JPEG)e FD(\014le)i(from)f(a)g(w)m(eather)h(serv)m
-(er.)390 3565 y Fy(ncks)47 b(-R)g(-p)g(ftp://weather.edu/pub/pi)o(x/jp)
-o(eg)42 b(-l)47 b(.)g(storm.jpg)150 3762 y FD(In)e(this)h(example,)k
-Fy(ncks)45 b FD(automatically)j(p)s(erforms)c(an)i(anon)m(ymous)g
-FC(FTP)f FD(login)i(to)f(the)g(remote)150 3872 y(mac)m(hine)41
-b(and)e(retriev)m(es)j(the)e(sp)s(eci\014ed)g(\014le.)70
-b(When)40 b Fy(ncks)f FD(attempts)i(to)g(read)f(the)g(lo)s(cal)i(cop)m
-(y)f(of)150 3982 y(`)p Fy(storm.jpg)p FD(')33 b(as)i(a)g(netCDF)g
-(\014le,)h(it)f(fails)g(and)f(exits,)j(lea)m(ving)f(`)p
-Fy(storm.jpg)p FD(')d(in)h(the)h(curren)m(t)g(direc-)150
-4091 y(tory)-8 b(.)275 4288 y(If)27 b(y)m(our)h FC(NCO)g
-FD(is)g FC(D)n(AP)p FD(-enabled)h(\(see)g(Section)g(3.7.1)h([OP)m(eND)m
-(AP],)g(page)f(30\),)h(then)e(y)m(ou)g(ma)m(y)h(use)150
-4398 y FC(NCO)j FD(to)h(retriev)m(e)g(an)m(y)g(\014les)f(\(including)g
-(netCDF,)g FC(HDF)p FD(,)i(etc.\))47 b(serv)m(ed)32 b(b)m(y)g(an)g
-FC(OP)n(eND)n(AP)f FD(serv)m(er)h(to)150 4507 y(y)m(our)e(lo)s(cal)i
-(mac)m(hine.)41 b(F)-8 b(or)32 b(example,)390 4705 y
-Fy(ncks)47 b(-R)g(-l)g(.)g(-p)h(\\)390 4814 y(http://www.esrl.noaa.gov)
-o(/psd)o(/thr)o(edd)o(s/do)o(dsC/)o(Dat)o(aset)o(s/nc)o(ep.)o(rean)o
-(alys)o(is.)o(dail)o(yavg)o(s/s)o(urfa)o(ce)41 b(\\)485
-4924 y(pres.sfc.1969.nc)275 5121 y FD(Note)32 b(that)g
-FC(NCO)f FD(is)h(nev)m(er)f(the)h(pre\013ered)f(w)m(a)m(y)h(to)g
-(transp)s(ort)f(\014les)g(from)g(remote)h(mac)m(hines.)44
-b(F)-8 b(or)150 5230 y(large)30 b(jobs,)g(that)f(is)h(b)s(est)f
-(handled)f(b)m(y)h FC(FTP)p FD(,)g FC(SSH)p FD(,)h(or)f
-Fy(wget)p FD(.)39 b(It)30 b(ma)m(y)g(o)s(ccasionally)h(b)s(e)e(useful)f
-(to)i(use)150 5340 y FC(NCO)g FD(to)h(transfer)f(\014les)g(when)g(y)m
-(our)g(other)h(preferred)e(metho)s(ds)h(are)g(not)h(a)m(v)-5
-b(ailable)33 b(lo)s(cally)-8 b(.)p eop end
-%%Page: 33 35
-TeXDict begin 33 34 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(33)150 299 y FB(3.9)68
-b(Selecting)46 b(Output)f(File)g(F)-11 b(ormat)150 373
-y Fm(\013)p 200 373 3554 4 v 3553 w(\010)p 150 863 4
-442 v 178 510 a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncap2)p
-FD(,)30 b Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h Fy(ncecat)p
-FD(,)f Fy(ncflint)p FD(,)f Fy(ncks)p FD(,)i Fy(ncpdq)p
-FD(,)f Fy(ncra)p FD(,)g Fy(ncrcat)p FD(,)g Fy(ncwa)178
-619 y FD(Short)h(options:)41 b(`)p Fy(-3)p FD(',)31 b(`)p
-Fy(-4)p FD(')178 729 y(Long)g(options:)41 b(`)p Fy(--3)p
-FD(',)30 b(`)p Fy(--4)p FD(',)g(`)p Fy(--64bit)p FD(',)f(`)p
-Fy(--fl_fmt)p FD(',)g(`)p Fy(--netcdf4)p FD(')p 3803
-863 V 150 915 a Fm(\012)p 200 915 3554 4 v 3553 w(\011)275
-1099 y FD(All)36 b FC(NCO)g FD(op)s(erators)g(supp)s(ort)e(\(read)i
-(and)f(write\))i(all)f(three)h(\(or)f(four,)h(dep)s(ending)d(on)i(ho)m
-(w)g(one)150 1209 y(coun)m(ts\))27 b(\014le)f(formats)g(supp)s(orted)e
-(b)m(y)i(netCDF4.)40 b(The)25 b(default)i(output)e(\014le)h(format)g
-(for)g(all)h(op)s(erators)150 1319 y(is)33 b(the)g(input)f(\014le)h
-(format.)48 b(The)32 b(op)s(erators)h(listed)g(under)f(\\Av)-5
-b(ailabilit)m(y")36 b(ab)s(o)m(v)m(e)e(allo)m(w)g(the)f(user)f(to)150
-1428 y(sp)s(ecify)g(the)h(output)g(\014le)g(format)g(indep)s(enden)m(t)
-f(of)h(the)g(input)f(\014le)g(format.)49 b(These)32 b(op)s(erators)h
-(allo)m(w)150 1538 y(the)26 b(user)e(to)i(con)m(v)m(ert)h(b)s(et)m(w)m
-(een)f(the)g(v)-5 b(arious)25 b(\014le)h(formats.)39
-b(\(The)25 b(op)s(erators)h Fy(ncatted)d FD(and)i Fy(ncrename)150
-1647 y FD(do)39 b(not)h(supp)s(ort)d(these)j(switc)m(hes)g(so)g(they)f
-(alw)m(a)m(ys)i(write)e(the)h(output)f(netCDF)h(\014le)f(in)g(the)h
-(same)150 1757 y(format)31 b(as)f(the)h(input)e(netCDF)i(\014le.\))275
-1926 y(netCDF)g(supp)s(orts)f(four)g(t)m(yp)s(es)h(of)h(\014les:)42
-b Fy(CLASSIC)p FD(,)29 b Fy(64BIT)p FD(,)i Fy(NETCDF4)p
-FD(,)e(and)i Fy(NETCDF4_CLASSIC)p FD(,)150 2035 y(The)f
-Fy(CLASSIC)e FD(format)j(is)f(the)g(traditional)i(32-bit)f(o\013set)h
-(written)e(b)m(y)g(netCDF2)i(and)d(netCDF3.)42 b(As)150
-2145 y(of)37 b(2005,)k(most)c(netCDF)h(datasets)g(are)f(in)g
-Fy(CLASSIC)e FD(format.)61 b(The)37 b Fy(64BIT)e FD(format)j(w)m(as)f
-(added)f(in)150 2254 y(F)-8 b(all,)32 b(2004.)275 2423
-y(The)c Fy(NETCDF4)f FD(format)j(uses)f FC(HDF5)g FD(as)g(the)h(\014le)
-f(storage)i(la)m(y)m(er.)42 b(The)28 b(\014les)h(are)h(\(usually\))g
-(created,)150 2533 y(accessed,)f(and)e(manipulated)g(using)g(the)h
-(traditional)h(netCDF3)f FC(API)f FD(\(with)g(n)m(umerous)g
-(extensions\).)150 2642 y(The)i Fy(NETCDF4_CLASSIC)c
-FD(format)30 b(refers)f(to)h(netCDF4)g(\014les)f(created)i(with)e(the)g
-Fy(NC_CLASSIC_MODEL)150 2752 y FD(mask.)44 b(Suc)m(h)30
-b(\014les)h(use)g FC(HDF5)h FD(as)g(the)f(bac)m(k-end)h(storage)h
-(format)e(\(unlik)m(e)h(netCDF3\),)i(though)d(they)150
-2861 y(incorp)s(orate)38 b(only)h(netCDF3)g(features.)63
-b(Hence)39 b Fy(NETCDF4_CLASSIC)34 b FD(\014les)k(are)g(p)s(erfectly)g
-(readable)150 2971 y(b)m(y)i(applications)i(whic)m(h)e(use)g(only)g
-(the)h(netCDF3)g FC(API)f FD(and)g(library)-8 b(.)70
-b FC(NCO)40 b FD(m)m(ust)g(b)s(e)g(built)g(with)150 3081
-y(netCDF4)h(to)f(write)g(\014les)g(in)f(the)h(new)f Fy(NETCDF4)f
-FD(and)h Fy(NETCDF4_CLASSIC)d FD(formats,)42 b(and)e(to)g(read)150
-3190 y(\014les)35 b(in)f(the)i(new)e Fy(NETCDF4)f FD(format.)55
-b(Users)34 b(are)i(advised)e(to)i(use)f(the)g(default)g
-Fy(CLASSIC)e FD(format)i(or)150 3300 y(the)d Fy(NETCDF4_CLASSIC)c
-FD(format)33 b(un)m(til)f(netCDF4)i(is)e(more)g(widespread.)46
-b(Widespread)32 b(supp)s(ort)e(for)150 3409 y Fy(NETCDF4)g
-FD(format)j(\014les)f(is)g(not)h(exp)s(ected)f(for)g(a)h(few)f(more)g
-(y)m(ears,)i(2013{2014,)j(sa)m(y)-8 b(.)47 b(If)32 b(p)s(erformance)150
-3519 y(or)e(co)s(olness)h(are)g(issues,)f(then)h(use)f
-Fy(NETCDF4_CLASSIC)c FD(instead)k(of)h Fy(CLASSIC)d FD(format)j
-(\014les.)275 3688 y(As)37 b(men)m(tioned)i(ab)s(o)m(v)m(e,)i(all)e(op)
-s(erators)e(write)h(use)g(the)g(input)f(\014le)h(format)g(for)g(output)
-f(\014les)h(un-)150 3797 y(less)j(told)g(otherwise.)71
-b(T)-8 b(oggling)43 b(the)d(long)h(option)g(`)p Fy(--64bit)p
-FD(')e(switc)m(h)i(\(or)g(its)g Fz(k)m(ey)p FD(-)p Fz(v)-5
-b(alue)47 b FD(equiv)-5 b(a-)150 3907 y(len)m(t)41 b(`)p
-Fy(--fl_fmt=64bit)p FD('\))c(pro)s(duces)i(the)i(netCDF3)g(64-bit)h
-(o\013set)f(format)f(named)g Fy(64BIT)p FD(.)69 b FC(NCO)150
-4016 y FD(m)m(ust)37 b(b)s(e)g(built)g(with)g(netCDF)31
-b(3.6)38 b(or)f(higher)g(to)h(pro)s(duce)e(a)i Fy(64BIT)e
-FD(\014le.)61 b(Using)38 b(the)f(`)p Fy(-4)p FD(')g(switc)m(h)150
-4126 y(\(or)k(its)h(long)f(option)h(equiv)-5 b(alen)m(ts)42
-b(`)p Fy(--4)p FD(')f(or)g(`)p Fy(--netcdf4)p FD('\),)h(or)f(setting)h
-(its)g Fz(k)m(ey)p FD(-)p Fz(v)-5 b(alue)47 b FD(equiv)-5
-b(alen)m(t)150 4236 y(`)p Fy(--fl_fmt=netcdf4)p FD(')19
-b(pro)s(duces)j(a)i Fy(NETCDF4)d FD(\014le)j(\(i.e.,)i
-FC(HDF)p FD(\).)f(Casual)e(users)g(are)g(advised)h(to)g(use)f(the)150
-4345 y(default)h(\(netCDF3\))i Fy(CLASSIC)c FD(format)i(un)m(til)h
-(netCDF)31 b(3.6)25 b(and)e(netCDF)31 b(4.0)25 b(are)f(more)h
-(widespread.)150 4455 y(Con)m(v)m(ersely)-8 b(,)33 b(op)s(erators)e
-(giv)m(en)h(the)g(`)p Fy(-3)p FD(')f(\(or)g(`)p Fy(--3)p
-FD('\))g(switc)m(h)h(without)f(argumen)m(ts)h(will)f(\(attempt)i(to\))
-150 4564 y(pro)s(duce)c(netCDF3)j Fy(CLASSIC)c FD(output,)i(ev)m(en)h
-(from)f(netCDF4)i(input)d(\014les.)275 4733 y(These)k(examples)h
-(demonstrate)g(con)m(v)m(erting)h(a)f(\014le)g(from)f(an)m(y)h(netCDF)g
-(format)g(in)m(to)h(an)m(y)f(other)150 4843 y(netCDF)d(format)g(\(sub)5
-b(ject)30 b(to)h(limits)g(of)g(the)f(format\):)390 5011
-y Fy(ncks)47 b(--fl_fmt=classic)c(in.nc)j(foo_3c.nc)g(#)h(netCDF3)f
-(classic)390 5121 y(ncks)h(--fl_fmt=64bit)d(in.nc)i(foo_364.nc)f(#)i
-(netCDF3)f(64bit)390 5230 y(ncks)h(--fl_fmt=netcdf4_classi)o(c)42
-b(in.nc)k(foo_4c.nc)f(#)j(netCDF4)e(classic)390 5340
-y(ncks)h(--fl_fmt=netcdf4)c(in.nc)j(foo_4.nc)g(#)h(netCDF4)p
-eop end
-%%Page: 34 36
-TeXDict begin 34 35 bop 150 -116 a FD(34)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(ncks)47 b(-3)g(in.nc)f
-(foo_3c.nc)f(#)j(netCDF3)e(classic)390 408 y(ncks)h(--3)g(in.nc)f
-(foo_3c.nc)f(#)j(netCDF3)d(classic)390 518 y(ncks)i(-4)g(in.nc)f
-(foo_4.nc)g(#)h(netCDF4)390 628 y(ncks)g(--4)g(in.nc)f(foo_4.nc)f(#)j
-(netCDF4)390 737 y(ncks)f(--64)f(in.nc)h(foo364.nc)e(#)i(netCDF3)f
-(64bit)275 902 y FD(Of)35 b(course)g(since)i(most)f(op)s(erators)f
-(supp)s(ort)f(these)i(switc)m(hes,)i(the)e(\\con)m(v)m(ersions")i(can)e
-(b)s(e)f(done)150 1011 y(at)e(the)g(output)f(stage)i(of)f(arithmetic)g
-(or)g(metadata)h(pro)s(cessing)e(rather)h(than)f(requiring)g(a)h
-(separate)150 1121 y(step.)40 b(Pro)s(ducing)26 b(\(netCDF3\))i
-Fy(CLASSIC)d FD(or)i Fy(64BIT)e FD(\014les)i(from)g Fy(NETCDF4_CLASSIC)
-22 b FD(\014les)27 b(will)g(alw)m(a)m(ys)150 1230 y(w)m(ork.)57
-b(Ho)m(w)m(ev)m(er,)39 b(pro)s(ducing)c(netCDF3)i(\014les)e(from)g
-Fy(NETCDF4)f FD(\014les)i(will)g(only)g(w)m(ork)g(if)f(the)h(output)150
-1340 y(\014les)30 b(are)h(not)g(required)e(to)i(con)m(tain)h
-(netCDF4-sp)s(eci\014c)g(features.)275 1504 y(Note)24
-b(that)h Fy(NETCDF4)c FD(and)i Fy(NETCDF4_CLASSIC)d FD(are)k(the)g
-(same)g(binary)e(format.)39 b(The)23 b(latter)i(simply)150
-1614 y(causes)38 b(a)h(writing)e(application)j(to)e(fail)h(if)f(it)g
-(attempts)h(to)f(write)h(a)f Fy(NETCDF4)e FD(\014le)i(that)g(cannot)h
-(b)s(e)150 1724 y(completely)47 b(read)d(b)m(y)h(the)g(netCDF3)h
-(library)-8 b(.)84 b(Con)m(v)m(ersely)-8 b(,)50 b Fy(NETCDF4_CLASSIC)41
-b FD(indicates)46 b(to)g(a)150 1833 y(reading)31 b(application)i(that)f
-(all)g(of)f(the)h(\014le)f(con)m(ten)m(ts)i(are)f(readable)g(with)f
-(the)g(netCDF3)i(library)-8 b(.)43 b(As)150 1943 y(of)31
-b(Octob)s(er,)h(2005,)i FC(NCO)d FD(writes)g(no)g(netCDF4-sp)s
-(eci\014c)i(data)f(structures)f(and)f(so)i(alw)m(a)m(ys)h(succeeds)150
-2052 y(at)e(writing)f Fy(NETCDF4_CLASSIC)d FD(\014les.)275
-2217 y(There)i(are)i(at)g(least)h(three)e(w)m(a)m(ys)i(to)f(disco)m(v)m
-(er)g(the)g(format)g(of)f(a)h(netCDF)g(\014le,)g(i.e.,)g(whether)f(it)h
-(is)150 2326 y(a)c(classic)h(\(32-bit)h(o\013set\))f(or)f(new)m(er)g
-(64-bit)h(o\013set)g(netCDF3)g(format,)g(or)f(is)f(netCDF4)i(format.)40
-b(Eac)m(h)150 2436 y(metho)s(d)29 b(returns)g(the)h(information)g
-(using)g(sligh)m(tly)h(di\013eren)m(t)f(terminology)i(that)e(b)s
-(ecomes)g(easier)h(to)150 2545 y(understand)e(with)h(practice.)275
-2710 y(First,)h(examine)g(the)f(end)g(of)g(the)h(\014rst)f(line)g(of)h
-(global)h(metadata)g(output)e(b)m(y)g(`)p Fy(ncks)f(-M)p
-FD(':)390 2874 y Fy(\045)47 b(ncks)g(-M)g(foo_3c.nc)390
-2984 y(Opened)f(file)h(foo_3c.nc:)e(dimensions)g(=)i(19,)g(variables)e
-(=)j(261,)e(global)h(atts.)f(=)h(4,)485 3093 y(id)h(=)f(65536,)f(type)h
-(=)g(NC_FORMAT_CLASSIC)390 3203 y(\045)g(ncks)g(-M)g(foo_364.nc)390
-3313 y(Opened)f(file)h(foo_364.nc:)d(dimensions)h(=)j(19,)f(variables)e
-(=)j(261,)e(global)g(atts.)h(=)g(4,)485 3422 y(id)h(=)f(65536,)f(type)h
-(=)g(NC_FORMAT_64BIT)390 3532 y(\045)g(ncks)g(-M)g(foo_4c.nc)390
-3641 y(Opened)f(file)h(foo_4c.nc:)e(dimensions)g(=)i(19,)g(variables)e
-(=)j(261,)e(global)h(atts.)f(=)h(4,)485 3751 y(id)h(=)f(65536,)f(type)h
-(=)g(NC_FORMAT_NETCDF4_CLASSIC)390 3861 y(\045)g(ncks)g(-M)g(foo_4.nc)
-390 3970 y(Opened)f(file)h(foo_4.nc:)e(dimensions)g(=)i(19,)g
-(variables)f(=)h(261,)g(global)f(atts.)g(=)i(4,)485 4080
-y(id)g(=)f(65536,)f(type)h(=)g(NC_FORMAT_NETCDF4)275
-4244 y FD(This)29 b(metho)s(d)h(requires)g(a)h(netCDF4-enabled)g
-FC(NCO)f FD(v)m(ersion)h(3.9.0)p Fy(+)h FD(\(i.e.,)g(from)e(2007)i(or)f
-(later\).)275 4408 y(Second,)f(query)g(the)g(\014le)h(with)f(`)p
-Fy(ncdump)f(-k)p FD(':)390 4573 y Fy(\045)47 b(ncdump)g(-k)g(foo_3.nc)
-390 4682 y(classic)390 4792 y(\045)g(ncdump)g(-k)g(foo_364.nc)390
-4902 y(64-bit-offset)390 5011 y(\045)g(ncdump)g(-k)g(foo_4c.nc)390
-5121 y(netCDF-4)f(classic)f(model)390 5230 y(\045)i(ncdump)g(-k)g
-(foo_4.nc)390 5340 y(netCDF-4)p eop end
-%%Page: 35 37
-TeXDict begin 35 36 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(35)275 299 y(This)29
-b(metho)s(d)h(requires)g(a)h(netCDF4-enabled)g FC(netCDF)h
-FD(3.6.2)p Fy(+)f FD(\(i.e.,)i(from)c(2007)k(or)d(later\).)275
-518 y(The)f(third)h(option)h(uses)f(the)g(POSIX-standard)f
-Fy(od)h FD(\(o)s(ctal)i(dump\))d(command:)390 737 y Fy(\045)47
-b(od)h(-An)f(-c)g(-N4)g(foo_3c.nc)533 846 y(C)143 b(D)g(F)47
-b(001)390 956 y(\045)g(od)h(-An)f(-c)g(-N4)g(foo_364.nc)533
-1066 y(C)143 b(D)g(F)47 b(002)390 1175 y(\045)g(od)h(-An)f(-c)g(-N4)g
-(foo_4c.nc)438 1285 y(211)142 b(H)h(D)g(F)390 1394 y(\045)47
-b(od)h(-An)f(-c)g(-N4)g(foo_4.nc)438 1504 y(211)142 b(H)h(D)g(F)275
-1723 y FD(This)44 b(option)h(w)m(orks)g(without)f FC(NCO)h
-FD(and)f Fy(ncdump)p FD(.)83 b(V)-8 b(alues)45 b(of)g(`)p
-Fy(C)31 b(D)f(F)g(001)p FD(')44 b(and)g(`)p Fy(C)31 b(D)f(F)g(002)p
-FD(')150 1832 y(indicate)i(32-bit)f(\(classic\))i(and)d(64-bit)i
-(netCDF3)g(formats,)f(resp)s(ectiv)m(ely)-8 b(,)32 b(while)f(v)-5
-b(alues)31 b(of)g(`)p Fy(211)e(H)h(D)150 1942 y(F)p FD(')g(indicate)i
-(the)e(new)m(er)h(netCDF4)g(\014le)g(format.)150 2353
-y FB(3.10)68 b(Large)46 b(File)f(Supp)t(ort)150 2377
-y Fm(\013)p 200 2377 3554 4 v 3553 w(\010)p 150 2867
-4 442 v 178 2514 a FD(Av)-5 b(ailabilit)m(y:)43 b(All)31
-b(op)s(erators)178 2623 y(Short)f(options:)41 b(none)178
-2733 y(Long)31 b(options:)41 b(none)p 3803 2867 V 150
-2919 a Fm(\012)p 200 2919 3554 4 v 3553 w(\011)275 3154
-y FC(NCO)29 b FD(has)g(Large)i(File)g(Supp)s(ort)c(\()p
-FC(LFS)p FD(\),)k(meaning)f(that)h FC(NCO)e FD(can)h(write)g(\014les)g
-(larger)g(than)g(2)g(GB)150 3263 y(on)c(some)h(32-bit)h(op)s(erating)f
-(systems)f(with)h(netCDF)g(libraries)f(earlier)i(than)e(v)m(ersion)31
-b(3.6)q(.)39 b(If)26 b(desired,)150 3373 y(LFS)45 b(supp)s(ort)e(m)m
-(ust)j(b)s(e)e(con\014gured)h(when)f(b)s(oth)h(netCDF)h(and)e
-FC(NCO)h FD(are)h(installed.)86 b(netCDF)150 3482 y(v)m(ersions)31
-b(3.6)j(and)f(higher)g(supp)s(ort)f(64-bit)j(\014le)e(addresses)g(as)h
-(part)f(of)h(the)f(netCDF)i(standard.)49 b(W)-8 b(e)150
-3592 y(recommend)24 b(that)h(users)f(ignore)h(LFS)f(supp)s(ort)e(whic)m
-(h)i(is)h(di\016cult)f(to)h(con\014gure)f(and)g(is)g(implemen)m(ted)150
-3702 y(in)f FC(NCO)h FD(only)f(to)i(supp)s(ort)c(netCDF)k(v)m(ersions)e
-(prior)g(to)31 b(3.6)r(.)38 b(This)23 b(ob)m(viates)i(the)f(need)f(for)
-g(con\014guring)150 3811 y(explicit)32 b(LFS)d(supp)s(ort)g(in)h
-(applications)h(\(suc)m(h)f(as)h FC(NCO)p FD(\))f(whic)m(h)g(no)m(w)g
-(supp)s(ort)f(64-bit)i(\014les)f(directly)150 3921 y(through)f(the)h
-(netCDF)h(in)m(terface.)42 b(See)30 b(Section)g(3.9)h([Selecting)h
-(Output)c(File)j(F)-8 b(ormat],)32 b(page)f(33)f(for)150
-4030 y(instructions)i(on)g(accessing)i(the)f(di\013eren)m(t)g(\014le)f
-(formats,)h(including)f(64-bit)i(\014les,)f(supp)s(orted)d(b)m(y)j(the)
-150 4140 y(mo)s(dern)c(netCDF)i(in)m(terface.)275 4359
-y(If)67 b(y)m(ou)h(are)g(still)h(in)m(teresting)g(in)e(explicit)i(LFS)f
-(supp)s(ort)e(for)h(netCDF)i(v)m(ersions)f(prior)150
-4468 y(to)31 b(3.6)q(,)86 b(kno)m(w)74 b(that)h(LFS)e(supp)s(ort)g(dep)
-s(ends)f(on)i(a)h(complex,)86 b(in)m(terlo)s(c)m(king)76
-b(set)e(of)h(op-)150 4578 y(erating)88 b(system)786 4545
-y Fw(10)944 4578 y FD(and)f(netCDF)h(suppp)s(ort)d(issues.)212
-b(The)86 b(netCDF)i(LFS)f(F)-10 b(A)m(Q)88 b(at)150 4688
-y Fy(http://my.unidata.ucar.e)o(du/c)o(onte)o(nt/)o(soft)o(ware)o(/ne)o
-(tcdf)o(/faq)o(-lf)o(s.ht)o(ml)49 b FD(describ)s(es)54
-b(the)150 4797 y(v)-5 b(arious)39 b(\014le)f(size)i(limitations)g(imp)s
-(osed)e(b)m(y)h(di\013eren)m(t)g(v)m(ersions)g(of)f(the)h(netCDF)h
-(standard.)64 b FC(NCO)150 4907 y FD(and)30 b(netCDF)h(automatically)i
-(attempt)e(to)h(con\014gure)e(LFS)g(at)h(build)e(time.)p
-150 5241 1200 4 v 166 5308 a Fw(10)300 5340 y Fu(Lin)n(ux)c(and)g
-Fs(AIX)h Fu(are)g(kno)n(wn)f(to)h(supp)r(ort)f Fs(LFS)p
-Fu(.)p eop end
-%%Page: 36 38
-TeXDict begin 36 37 bop 150 -116 a FD(36)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(3.11)68 b(Subsetting)46
-b(V)-11 b(ariables)150 380 y Fm(\013)p 200 380 3554 4
-v 3553 w(\010)p 150 874 4 447 v 178 521 a FD(Av)-5 b(ailabilit)m(y:)43
-b(\()p Fy(ncap2)p FD(\),)30 b Fy(ncbo)p FD(,)g Fy(ncea)p
-FD(,)f Fy(ncecat)p FD(,)g Fy(ncflint)p FD(,)g Fy(ncks)p
-FD(,)g Fy(ncpdq)p FD(,)h Fy(ncra)p FD(,)f Fy(ncrcat)p
-FD(,)g Fy(ncwa)178 630 y FD(Short)h(options:)41 b(`)p
-Fy(-v)p FD(',)31 b(`)p Fy(-x)p FD(')178 740 y(Long)g(options:)41
-b(`)p Fy(--variable)p FD(',)28 b(`)p Fy(--exclude)p FD(')g(or)j(`)p
-Fy(--xcl)p FD(')p 3803 874 V 150 926 a Fm(\012)p 200
-926 3554 4 v 3553 w(\011)275 1099 y FD(Subsetting)i(v)-5
-b(ariables)35 b(refers)f(to)h(explicitly)h(sp)s(ecifying)e(v)-5
-b(ariables)35 b(to)g(b)s(e)e(included)h(or)g(excluded)150
-1209 y(from)22 b(op)s(erator)h(actions.)39 b(Subsetting)22
-b(is)h(implemen)m(ted)g(with)f(the)g(`)p Fy(-v)30 b Fq(var)11
-b Fy([,...)n(])p FD(')22 b(and)g(`)p Fy(-x)p FD(')g(options.)150
-1319 y(A)30 b(list)h(of)g(v)-5 b(ariables)31 b(to)f(extract)i(is)e(sp)s
-(eci\014ed)g(follo)m(wing)i(the)e(`)p Fy(-v)p FD(')g(option,)h(e.g.,)h
-(`)p Fy(-v)e(time,lat,lon)p FD('.)150 1428 y(Not)36 b(using)f(the)g(`)p
-Fy(-v)p FD(')g(option)h(is)f(equiv)-5 b(alen)m(t)37 b(to)f(sp)s
-(ecifying)f(all)h(v)-5 b(ariables.)56 b(The)35 b(`)p
-Fy(-x)p FD(')g(option)h(causes)150 1538 y(the)27 b(list)h(of)f(v)-5
-b(ariables)27 b(sp)s(eci\014ed)f(with)h(`)p Fy(-v)p FD(')g(to)h(b)s(e)e
-Fr(exclude)-5 b(d)37 b FD(rather)27 b(than)f Fr(extr)-5
-b(acte)g(d)p FD(.)42 b(Th)m(us)26 b(`)p Fy(-x)p FD(')g(sa)m(v)m(es)150
-1647 y(t)m(yping)31 b(when)e(y)m(ou)i(only)f(w)m(an)m(t)i(to)f(extract)
-h(few)m(er)e(than)g(half)h(of)f(the)h(v)-5 b(ariables)31
-b(in)f(a)h(\014le.)275 1810 y(V)-8 b(ariables)31 b(explicitly)g(sp)s
-(eci\014ed)e(for)h(extraction)h(with)e(`)p Fy(-v)i Fq(var)11
-b Fy([,...)m(])p FD(')30 b Fr(must)38 b FD(b)s(e)29 b(presen)m(t)h(in)g
-(the)150 1919 y(input)39 b(\014le)h(or)g(an)g(error)g(will)g(result.)70
-b(V)-8 b(ariables)41 b(explicitly)g(sp)s(eci\014ed)f(for)f
-Fr(exclusion)48 b FD(with)40 b(`)p Fy(-x)30 b(-v)150
-2029 y Fq(var)11 b Fy([,...)m(])p FD(')28 b(need)g(not)g(b)s(e)f
-(presen)m(t)h(in)g(the)g(input)f(\014le.)40 b(Remem)m(b)s(er,)28
-b(if)g(a)m(v)m(eraging)j(or)c(concatenating)150 2139
-y(large)i(\014les)f(stresses)h(y)m(our)f(systems)g(memory)g(or)g(disk)g
-(resources,)h(then)f(the)g(easiest)i(solution)e(is)h(often)150
-2248 y(to)f(use)f(the)h(`)p Fy(-v)p FD(')f(option)h(to)g(retain)g(only)
-g(the)g(most)f(imp)s(ortan)m(t)h(v)-5 b(ariables)28 b(\(see)g(Section)h
-(2.9)f([Memory)150 2358 y(Requiremen)m(ts],)j(page)g(19\).)275
-2520 y(Due)23 b(to)h(its)f(sp)s(ecial)h(capabilities,)i
-Fy(ncap2)c FD(in)m(terprets)h(the)h(`)p Fy(-v)p FD(')f(switc)m(h)g
-(di\013eren)m(tly)h(\(see)g(Section)g(4.1)150 2630 y([ncap2)37
-b(netCDF)g(Arithmetic)g(Pro)s(cessor],)i(page)e(68\).)60
-b(F)-8 b(or)37 b Fy(ncap2)p FD(,)g(the)f(`)p Fy(-v)p
-FD(')h(switc)m(h)f(tak)m(es)i(no)f(ar-)150 2740 y(gumen)m(ts)i(and)f
-(indicates)h(that)h Fr(only)47 b FD(user-de\014ned)37
-b(v)-5 b(ariables)39 b(should)f(b)s(e)g(output.)65 b
-Fy(ncap2)37 b FD(neither)150 2849 y(accepts)32 b(nor)e(understands)e
-(the)i Fz(-x)37 b FD(switc)m(h.)275 3012 y(As)24 b(of)h
-FC(NCO)g FD(2.8.1)h(\(August,)g(2003\),)i(v)-5 b(ariable)26
-b(name)f(argumen)m(ts)g(of)g(the)g(`)p Fy(-v)p FD(')f(switc)m(h)h(ma)m
-(y)h(con)m(tain)150 3121 y Fz(extended)32 b(regular)f(expressions)p
-FD(.)44 b(As)32 b(of)f FC(NCO)h FD(3.9.6)h(\(Jan)m(uary)-8
-b(,)33 b(2009\),)h(v)-5 b(ariable)32 b(names)g(argumen)m(ts)150
-3231 y(to)e Fy(ncatted)d FD(ma)m(y)i(con)m(tain)h Fz(extended)f
-(regular)g(expressions)p FD(.)40 b(F)-8 b(or)30 b(example,)g(`)p
-Fy(-v)g('^DST')p FD(')e(selects)i(all)150 3341 y(v)-5
-b(ariables)32 b(b)s(eginning)f(with)g(the)h(string)g(`)p
-Fy(DST)p FD('.)44 b(Extended)31 b(regular)h(expressions)f(are)h
-(de\014ned)e(b)m(y)i(the)150 3450 y FC(GNU)j Fy(egrep)e
-FD(command.)52 b(The)34 b(meta-c)m(haracters)j(used)c(to)i(express)f
-(pattern)g(matc)m(hing)i(op)s(erations)150 3560 y(are)d(`)p
-Fy(^$+?.*[]{}|)p FD('.)43 b(If)32 b(the)h(regular)f(expression)g
-(pattern)g(matc)m(hes)i Fr(any)41 b FD(part)32 b(of)g(a)h(v)-5
-b(ariable)33 b(name)150 3669 y(then)h(that)g(v)-5 b(ariable)35
-b(is)g(selected.)53 b(This)33 b(capabilit)m(y)j(is)e(called)i
-Fz(wildcarding)p FD(,)f(and)e(is)h(v)m(ery)h(useful)e(for)150
-3779 y(sub-setting)e(large)g(data)g(\014les.)275 3942
-y(Because)k(of)e(its)h(wide)g(a)m(v)-5 b(ailabilit)m(y)d(,)38
-b FC(NCO)c FD(uses)f(the)h FC(POSIX)f FD(regular)g(expression)h
-(library)f Fy(regex)p FD(.)150 4051 y(Regular)c(expressions)f(of)g
-(arbitary)g(complexit)m(y)i(ma)m(y)f(b)s(e)f(used.)39
-b(Since)28 b(netCDF)h(v)-5 b(ariable)29 b(names)g(are)150
-4161 y(relativ)m(ely)f(simple)d(constructs,)i(only)e(a)h(few)f(v)-5
-b(arieties)27 b(of)f(v)-5 b(ariable)26 b(wildcards)f(are)h(lik)m(ely)h
-(to)f(b)s(e)e(useful.)150 4270 y(F)-8 b(or)31 b(con)m(v)m(enience,)i(w)
-m(e)e(de\014ne)e(the)i(most)g(useful)e(pattern)i(matc)m(hing)g(op)s
-(erators)g(here:)150 4461 y(`)p Fy(^)p FD(')382 b(Matc)m(hes)32
-b(the)f(b)s(eginning)e(of)i(a)g(string)150 4627 y(`)p
-Fy($)p FD(')382 b(Matc)m(hes)32 b(the)f(end)e(of)i(a)g(string)150
-4793 y(`)p Fy(.)p FD(')382 b(Matc)m(hes)32 b(an)m(y)f(single)g(c)m
-(haracter)150 4983 y(The)f(most)h(useful)e(rep)s(etition)i(and)f(com)m
-(bination)i(op)s(erators)e(are)150 5174 y(`)p Fy(?)p
-FD(')382 b(The)30 b(preceding)g(regular)h(expression)f(is)g(optional)i
-(and)e(matc)m(hed)h(at)g(most)g(once)150 5340 y(`)p Fy(*)p
-FD(')382 b(The)30 b(preceding)g(regular)h(expression)f(will)h(b)s(e)e
-(matc)m(hed)j(zero)f(or)f(more)h(times)p eop end
-%%Page: 37 39
-TeXDict begin 37 38 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(37)150 299 y(`)p Fy(+)p
-FD(')382 b(The)30 b(preceding)g(regular)h(expression)f(will)h(b)s(e)e
-(matc)m(hed)j(one)e(or)h(more)f(times)150 571 y(`)p Fy(|)p
-FD(')382 b(The)42 b(preceding)g(regular)h(expression)f(will)h(b)s(e)f
-(joined)g(to)h(the)g(follo)m(wing)h(regular)e(ex-)630
-680 y(pression.)k(The)32 b(resulting)g(regular)h(expression)f(matc)m
-(hes)h(an)m(y)g(string)f(matc)m(hing)h(either)630 790
-y(sub)s(expression.)275 1193 y(T)-8 b(o)30 b(illustrate)i(the)f(use)f
-(of)g(these)h(op)s(erators)g(in)f(extracting)i(v)-5 b(ariables,)32
-b(consider)e(a)h(\014le)f(with)g(v)-5 b(ari-)150 1303
-y(ables)31 b Fy(Q)p FD(,)f Fy(Q01)p FD({)p Fy(Q99)p FD(,)f
-Fy(Q100)p FD(,)h Fy(QAA)p FD({)p Fy(QZZ)p FD(,)f Fy(Q_H2O)p
-FD(,)g Fy(X_H2O)p FD(,)h Fy(Q_CO2)p FD(,)f Fy(X_CO2)p
-FD(.)390 1518 y Fy(ncks)47 b(-v)g('Q.?')f(in.nc)667 b(#)47
-b(Variables)f(that)g(contain)g(Q)390 1628 y(ncks)h(-v)g('^Q.?')f(in.nc)
-619 b(#)47 b(Variables)f(that)g(start)h(with)f(Q)390
-1737 y(ncks)h(-v)g('^Q+.?.')e(in.nc)524 b(#)47 b(Q,)h(Q0--Q9,)d
-(Q01--Q99,)h(QAA--QZZ,)f(etc.)390 1847 y(ncks)i(-v)g('^Q..')f(in.nc)619
-b(#)47 b(Q01--Q99,)f(QAA--QZZ,)f(etc.)390 1957 y(ncks)i(-v)g
-('^Q[0-9][0-9]')d(in.nc)237 b(#)47 b(Q01--Q99,)f(Q100)390
-2066 y(ncks)h(-v)g('^Q[[:digit:]]{2}')c(in.nc)j(#)h(Q01--Q99)390
-2176 y(ncks)g(-v)g('H2O$')f(in.nc)619 b(#)47 b(Q_H2O,)g(X_H2O)390
-2285 y(ncks)g(-v)g('H2O$|CO2$')e(in.nc)380 b(#)47 b(Q_H2O,)g(X_H2O,)f
-(Q_CO2,)g(X_CO2)390 2395 y(ncks)h(-v)g('^Q[0-9][0-9]$')c(in.nc)190
-b(#)47 b(Q01--Q99)390 2505 y(ncks)g(-v)g('^Q[0-6][0-9]|7[0-3]')42
-b(in.nc)k(#)i(Q01--Q73,)d(Q100)390 2614 y(ncks)i(-v)g
-('\(Q[0-6][0-9]|7[0-3]\)$')41 b(in.nc)47 b(#)g(Q01--Q73)390
-2724 y(ncks)g(-v)g('^[a-z]_[a-z]{3}$')c(in.nc)j(#)h(Q_H2O,)g(X_H2O,)f
-(Q_CO2,)g(X_CO2)275 2939 y FD(Bew)m(are|t)m(w)m(o)29
-b(of)e(the)h(most)f(frequen)m(tly)g(used)f(rep)s(etition)i(pattern)f
-(matc)m(hing)h(op)s(erators,)g(`)p Fy(*)p FD(')g(and)150
-3049 y(`)p Fy(?)p FD(',)f(are)e(also)i(v)-5 b(alid)25
-b(pattern)h(matc)m(hing)g(op)s(erators)g(for)f(\014lename)g(expansion)h
-(\(globbing\))g(at)g(the)f(shell-)150 3159 y(lev)m(el.)40
-b(Confusingly)-8 b(,)24 b(their)f(meanings)f(in)h(extended)f(regular)h
-(expressions)f(and)g(in)h(shell-lev)m(el)i(\014lename)150
-3268 y(expansion)37 b(are)g(signi\014can)m(tly)h(di\013eren)m(t.)61
-b(In)36 b(an)h(extended)f(regular)i(expression,)g(`)p
-Fy(*)p FD(')f(matc)m(hes)h(zero)150 3378 y(or)k(more)h(o)s(ccurences)g
-(of)f(the)h(preceding)f(regular)h(expression.)76 b(Th)m(us)42
-b(`)p Fy(Q*)p FD(')g(selects)i(all)f(v)-5 b(ariables,)150
-3487 y(and)34 b(`)p Fy(Q+.*)p FD(')h(selects)h(all)g(v)-5
-b(ariables)36 b(con)m(taining)g(`)p Fy(Q)p FD(')f(\(the)h(`)p
-Fy(+)p FD(')f(ensures)f(the)h(preceding)g(item)h(matc)m(hes)150
-3597 y(at)j(least)h(once\).)67 b(T)-8 b(o)39 b(matc)m(h)g(zero)h(or)e
-(one)h(o)s(ccurence)g(of)g(the)g(preceding)g(regular)g(expression,)h
-(use)150 3707 y(`)p Fy(?)p FD('.)g(Do)s(cumen)m(tation)31
-b(for)e(the)g FC(UNIX)h Fy(egrep)e FD(command)h(details)h(the)f
-(extended)g(regular)g(expressions)150 3816 y(whic)m(h)h
-FC(NCO)g FD(supp)s(orts.)275 4032 y(One)25 b(m)m(ust)h(b)s(e)f(careful)
-i(to)f(protect)h(an)m(y)g(sp)s(ecial)f(c)m(haracters)i(in)d(the)h
-(regular)h(expression)e(sp)s(eci\014ca-)150 4141 y(tion)31
-b(from)f(b)s(eing)g(in)m(terpreted)h(\(globb)s(ed\))g(b)m(y)f(the)h
-(shell.)42 b(This)29 b(is)i(accomplish)g(b)m(y)g(enclosing)g(sp)s
-(ecial)150 4251 y(c)m(haracters)h(within)e(single)h(or)f(double)g
-(quotes)390 4467 y Fy(ncra)47 b(-v)g(Q??)g(in.nc)f(out.nc)142
-b(#)47 b(Error:)f(Shell)h(attempts)e(to)i(glob)g(wildcards)390
-4576 y(ncra)g(-v)g('^Q+..')f(in.nc)g(out.nc)g(#)i(Correct:)d(NCO)i
-(interprets)e(wildcards)390 4686 y(ncra)i(-v)g('^Q+..')f(in*.nc)g
-(out.nc)g(#)h(Correct:)f(NCO)h(interprets,)d(Shell)j(globs)275
-4902 y FD(The)27 b(\014nal)g(example)i(sho)m(ws)f(that)g(commands)g(ma)
-m(y)g(use)g(a)g(com)m(bination)h(of)f(v)-5 b(ariable)29
-b(wildcarding)150 5011 y(and)i(shell)h(\014lename)f(expansion)h
-(\(globbing\).)45 b(F)-8 b(or)32 b(globbing,)g(`)p Fy(*)p
-FD(')g(and)f(`)p Fy(?)p FD(')g Fr(have)j(nothing)h(to)f(do)k
-FD(with)150 5121 y(the)32 b(preceding)f(regular)g(expression!)44
-b(In)30 b(shell-lev)m(el)k(\014lename)d(expansion,)h(`)p
-Fy(*)p FD(')g(matc)m(hes)g(an)m(y)g(string,)150 5230
-y(including)26 b(the)h(n)m(ull)f(string)g(and)g(`)p Fy(?)p
-FD(')h(matc)m(hes)g(an)m(y)g(single)g(c)m(haracter.)41
-b(Do)s(cumen)m(tation)28 b(for)e Fy(bash)g FD(and)150
-5340 y Fy(csh)j FD(describ)s(e)h(the)h(rules)f(of)g(\014lename)h
-(expansion)f(\(globbing\).)p eop end
-%%Page: 38 40
-TeXDict begin 38 39 bop 150 -116 a FD(38)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(3.12)68 b(Subsetting)46
-b(Co)t(ordinate)g(V)-11 b(ariables)150 361 y Fm(\013)p
-200 361 3554 4 v 3553 w(\010)p 150 850 4 442 v 178 497
-a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncap2)p FD(,)30 b
-Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h Fy(ncecat)p FD(,)f
-Fy(ncflint)p FD(,)f Fy(ncks)p FD(,)i Fy(ncpdq)p FD(,)f
-Fy(ncra)p FD(,)g Fy(ncrcat)p FD(,)g Fy(ncwa)178 606 y
-FD(Short)h(options:)41 b(`)p Fy(-C)p FD(',)31 b(`)p Fy(-c)p
-FD(')178 716 y(Long)g(options:)41 b(`)p Fy(--no-coords)p
-FD(',)28 b(`)p Fy(--no-crd)p FD(',)h(`)p Fy(--crd)p FD(',)g(`)p
-Fy(--coords)p FD(')p 3803 850 V 150 902 a Fm(\012)p 200
-902 3554 4 v 3553 w(\011)275 1094 y FD(By)c(default,)i(co)s(ordinates)f
-(v)-5 b(ariables)26 b(asso)s(ciated)h(with)e(an)m(y)h(v)-5
-b(ariable)26 b(app)s(earing)f(in)g(the)g Fz(input-\014le)150
-1204 y FD(will)30 b(b)s(e)g(placed)g(in)g(the)g Fz(output-\014le)p
-FD(,)g(ev)m(en)h(if)f(they)g(are)g(not)h(explicitly)g(sp)s(eci\014ed,)f
-(e.g.,)h(with)f(the)g(`)p Fy(-v)p FD(')150 1313 y(switc)m(h.)46
-b(Th)m(us)31 b(v)-5 b(ariables)33 b(with)f(a)g(latitude)h(co)s
-(ordinate)g Fy(lat)e FD(alw)m(a)m(ys)j(carry)e(the)g(v)-5
-b(alues)33 b(of)f Fy(lat)f FD(with)150 1423 y(them)39
-b(in)m(to)h(the)g Fz(output-\014le)p FD(.)67 b(This)39
-b(feature)g(can)h(b)s(e)e(disabled)h(with)g(`)p Fy(-C)p
-FD(',)j(whic)m(h)d(causes)g FC(NCO)g FD(to)150 1533 y(not)33
-b(automatically)j(add)d(co)s(ordinates)g(to)h(the)f(v)-5
-b(ariables)34 b(app)s(earing)f(in)g(the)g Fz(output-\014le)p
-FD(.)49 b(Ho)m(w)m(ev)m(er,)150 1642 y(using)35 b(`)p
-Fy(-C)p FD(')h(do)s(es)f(not)h(preclude)f(the)h(user)f(from)g
-(including)g(some)h(co)s(ordinates)h(in)e(the)h(output)f(\014les)150
-1752 y(simply)e(b)m(y)h(explicitly)i(selecting)g(the)e(co)s(ordinates)g
-(with)g(the)g Fz(-v)42 b FD(option.)52 b(The)34 b(`)p
-Fy(-c)p FD(')f(option,)j(on)e(the)150 1861 y(other)c(hand,)f(is)h(a)h
-(shorthand)e(w)m(a)m(y)h(of)h(automatically)h(sp)s(ecifying)e(that)h
-Fr(al)5 b(l)40 b FD(co)s(ordinate)31 b(v)-5 b(ariables)30
-b(in)150 1971 y(the)j Fz(input-\014les)j FD(should)c(app)s(ear)h(in)g
-(the)g Fz(output-\014le)p FD(.)49 b(Th)m(us)32 b(`)p
-Fy(-c)p FD(')g(allo)m(ws)j(the)e(user)f(to)i(select)h(all)f(the)150
-2081 y(co)s(ordinate)24 b(v)-5 b(ariables)24 b(without)f(ha)m(ving)h
-(to)g(kno)m(w)f(their)g(names.)38 b(As)23 b(of)h FC(NCO)f
-FD(v)m(ersion)g(3.9.6)i(\(Jan)m(uary)-8 b(,)150 2190
-y(2009\))36 b(b)s(oth)e(`)p Fy(-c)p FD(')g(and)g(`)p
-Fy(-C)p FD(')g(honor)g(the)h FC(CF)f Fy(coordinates)d
-FD(con)m(v)m(en)m(tion)37 b(describ)s(ed)c(in)h(Section)h(3.30)150
-2300 y([CF)30 b(Con)m(v)m(en)m(tions],)h(page)g(64.)41
-b(As)29 b(of)h FC(NCO)g FD(v)m(ersion)g(4.0.8)h(\(April,)f(2011\))i(b)s
-(oth)d(`)p Fy(-c)p FD(')g(and)g(`)p Fy(-C)p FD(')g(honor)150
-2409 y(the)i FC(CF)f Fy(bounds)f FD(con)m(v)m(en)m(tion)j(describ)s(ed)
-e(in)g(Section)h(3.30)h([CF)e(Con)m(v)m(en)m(tions],)i(page)g(64.)150
-2708 y FB(3.13)68 b(C)45 b(and)g(F)-11 b(ortran)45 b(Index)f(con)l(v)l
-(en)l(tions)150 2747 y Fm(\013)p 200 2747 V 3553 w(\010)p
-150 3237 4 442 v 178 2883 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncbo)p FD(,)30 b Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g
-Fy(ncflint)p FD(,)g Fy(ncks)p FD(,)g Fy(ncpdq)p FD(,)h
-Fy(ncra)p FD(,)f Fy(ncrcat)p FD(,)g Fy(ncwa)178 2992
-y FD(Short)h(options:)41 b(`)p Fy(-F)p FD(')178 3102
-y(Long)31 b(options:)41 b(`)p Fy(--fortran)p FD(')p 3803
-3237 V 150 3288 a Fm(\012)p 200 3288 3554 4 v 3553 w(\011)275
-3480 y FD(The)30 b(`)p Fy(-F)p FD(')h(switc)m(h)h(c)m(hanges)g
-FC(NCO)f FD(to)h(read)g(and)e(write)i(with)f(the)g(F)-8
-b(ortran)32 b(index)f(con)m(v)m(en)m(tion.)46 b(By)150
-3590 y(default,)34 b FC(NCO)e FD(uses)g(C-st)m(yle)i(\(0-based\))g
-(indices)e(for)h(all)g(I/O.)g(In)d(C)o(,)k(indices)f(coun)m(t)g(from)d
-(0)j(\(rather)150 3700 y(than)d(1)q(\),)d(and)e(dimensions)f(are)i
-(ordered)f(from)g(slo)m(w)m(est)j(\(inner-most\))e(to)g(fastest)h
-(\(outer-most\))g(v)-5 b(ary-)150 3809 y(ing.)70 b(In)39
-b(F)-8 b(ortran,)44 b(indices)c(coun)m(t)g(from)30 b(1)41
-b(\(rather)f(than)30 b(0)q(\),)43 b(and)c(dimensions)g(are)i(ordered)e
-(from)150 3919 y(fastest)i(\(inner-most\))f(to)h(slo)m(w)m(est)h
-(\(outer-most\))f(v)-5 b(arying.)69 b(Hence)41 b(C)30
-b(and)39 b(F)-8 b(ortran)41 b(data)f(storage)150 4028
-y(con)m(v)m(en)m(tions)i(represen)m(t)f(mathematical)i(transp)s(oses)c
-(of)i(eac)m(hother.)72 b(Note)42 b(that)f(record)f(v)-5
-b(ariables)150 4138 y(con)m(tain)29 b(the)f(record)g(dimension)f(as)h
-(the)g(most)g(slo)m(wly)h(v)-5 b(arying)28 b(dimension.)39
-b(See)28 b(Section)g(4.8)h([ncp)s(dq)150 4247 y(netCDF)c(P)m(erm)m(ute)
-g(Dimensions)f(Quic)m(kly],)i(page)f(142)h(for)d(tec)m(hniques)i(to)g
-(re-order)f(\(including)g(trans-)150 4357 y(p)s(ose\))30
-b(dimensions)g(and)g(to)h(rev)m(erse)g(data)g(storage)h(order.)275
-4539 y(Consider)27 b(a)i(\014le)f(`)p Fy(85.nc)p FD(')g(con)m(taining)i
-(12)h(mon)m(ths)d(of)h(data)g(in)f(the)g(record)h(dimension)f
-Fy(time)p FD(.)38 b(The)150 4648 y(follo)m(wing)29 b(h)m(yp)s(erslab)d
-(op)s(erations)h(pro)s(duce)f(iden)m(tical)j(results,)e(a)h
-(June-July-August)e(a)m(v)m(erage)k(of)d(the)150 4758
-y(data:)390 4939 y Fy(ncra)47 b(-d)g(time,5,7)e(85.nc)i(85_JJA.nc)390
-5049 y(ncra)g(-F)g(-d)g(time,6,8)f(85.nc)g(85_JJA.nc)275
-5230 y FD(Prin)m(ting)22 b(v)-5 b(ariable)24 b Fz(three)p
-1166 5230 28 4 v 40 w(dmn)p 1384 5230 V 39 w(v)-5 b(ar)29
-b FD(in)22 b(\014le)g(`)p Fy(in.nc)p FD(')g(\014rst)g(with)g(the)g(C)30
-b(indexing)23 b(con)m(v)m(en)m(tion,)j(then)150 5340
-y(with)k(F)-8 b(ortran)31 b(indexing)f(con)m(v)m(en)m(tion)j(results)d
-(in)g(the)h(follo)m(wing)g(output)f(formats:)p eop end
-%%Page: 39 41
-TeXDict begin 39 40 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(39)390 299 y Fy(\045)47
-b(ncks)g(-v)g(three_dmn_var)d(in.nc)390 408 y(lat[0]=-90)h(lev[0]=1000)
-g(lon[0]=-180)f(three_dmn_var[0]=0)390 518 y(...)390
-628 y(\045)j(ncks)g(-F)g(-v)g(three_dmn_var)e(in.nc)390
-737 y(lon\(1\)=0)h(lev\(1\)=100)f(lat\(1\)=-90)g(three_dmn_var\(1\)=0)
-390 847 y(...)150 1192 y FB(3.14)68 b(Hyp)t(erslabs)150
-1238 y Fm(\013)p 200 1238 3554 4 v 3553 w(\010)p 150
-1838 4 552 v 178 1374 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncbo)p FD(,)30 b Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g
-Fy(ncflint)p FD(,)g Fy(ncks)p FD(,)g Fy(ncpdq)p FD(,)h
-Fy(ncra)p FD(,)f Fy(ncrcat)p FD(,)g Fy(ncwa)178 1484
-y FD(Short)h(options:)41 b(`)p Fy(-d)30 b Fq(dim)p Fy(,[)p
-Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g
-Fy(])o(]])p FD(')178 1594 y(Long)31 b(options:)41 b(`)p
-Fy(--dimension)27 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p
-Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o FD(',)178
-1703 y(`)p Fy(--dmn)29 b Fq(dim)p Fy(,[)p Fq(min)11 b
-Fy(][,[)p Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o
-FD(')p 3803 1838 V 150 1889 a Fm(\012)p 200 1889 3554
-4 v 3553 w(\011)275 2097 y FD(A)30 b Fz(h)m(yp)s(erslab)d
-FD(is)f(a)h(subset)e(of)h(a)h(v)-5 b(ariable's)27 b(data.)40
-b(The)26 b(co)s(ordinates)g(of)h(a)f(h)m(yp)s(erslab)f(are)i(sp)s
-(eci\014ed)150 2206 y(with)35 b(the)h Fy(-d)30 b Fq(dim)p
-Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)o Fq(stri)o(de)f
-Fy(]]])29 b FD(short)35 b(option)h(\(or)g(with)f(the)h(same)g(argumen)m
-(ts)150 2316 y(to)26 b(the)g(`)p Fy(--dimension)p FD(')d(or)j(`)p
-Fy(--dmn)p FD(')f(long)h(options\).)40 b(A)m(t)26 b(least)h(one)f(h)m
-(yp)s(erslab)f(argumen)m(t)h(\()p Fz(min)p FD(,)h Fz(max)p
-FD(,)150 2426 y(or)e Fz(stride)5 b FD(\))24 b(m)m(ust)h(b)s(e)f(presen)
-m(t.)39 b(The)24 b(b)s(ounds)e(of)j(the)g(h)m(yp)s(erslab)e(to)j(b)s(e)
-d(extracted)j(are)f(sp)s(eci\014ed)f(b)m(y)h(the)150
-2535 y(asso)s(ciated)h Fz(min)e FD(and)g Fz(max)31 b
-FD(v)-5 b(alues.)39 b(A)30 b(half-op)s(en)24 b(range)h(is)g(sp)s
-(eci\014ed)e(b)m(y)i(omitting)g(either)g(the)g Fz(min)f
-FD(or)150 2645 y Fz(max)36 b FD(parameter.)41 b(The)30
-b(separating)h(comma)f(m)m(ust)g(b)s(e)f(presen)m(t)h(to)h(indicate)g
-(the)f(omission)g(of)h(one)f(of)150 2754 y(these)c(argumen)m(ts.)39
-b(The)25 b(unsp)s(eci\014ed)e(limit)k(is)e(in)m(terpreted)h(as)f(the)h
-(maxim)m(um)f(or)g(minim)m(um)f(v)-5 b(alue)26 b(in)150
-2864 y(the)i(unsp)s(eci\014ed)e(direction.)41 b(A)30
-b(cross-section)g(at)e(a)h(sp)s(eci\014c)e(co)s(ordinate)i(is)f
-(extracted)h(b)m(y)f(sp)s(ecifying)150 2974 y(only)34
-b(the)h Fz(min)f FD(limit)h(and)e(omitting)j(a)e(trailing)i(comma.)53
-b(Dimensions)34 b(not)h(men)m(tioned)g(are)f(passed)150
-3083 y(with)f(no)g(reduction)f(in)h(range.)49 b(The)32
-b(dimensionalit)m(y)i(of)g(v)-5 b(ariables)33 b(is)g(not)g(reduced)g
-(\(in)g(the)g(case)h(of)150 3193 y(a)h(cross-section,)i(the)d(size)h
-(of)f(the)h(constan)m(t)g(dimension)f(will)g(b)s(e)g(one\).)53
-b(If)33 b(v)-5 b(alues)35 b(of)f(a)h(co)s(ordinate-)150
-3302 y(v)-5 b(ariable)33 b(are)g(used)f(to)h(sp)s(ecify)f(a)h(range)g
-(or)f(cross-section,)j(then)d(the)h(co)s(ordinate)g(v)-5
-b(ariable)33 b(m)m(ust)g(b)s(e)150 3412 y(monotonic)e(\(v)-5
-b(alues)31 b(either)g(increasing)f(or)g(decreasing\).)42
-b(In)30 b(this)g(case,)h(command-line)g(v)-5 b(alues)30
-b(need)150 3521 y(not)e(exactly)h(matc)m(h)f(co)s(ordinate)h(v)-5
-b(alues)27 b(for)h(the)f(sp)s(eci\014ed)g(dimension.)39
-b(Ranges)28 b(are)g(determined)f(b)m(y)150 3631 y(seeking)33
-b(the)f(\014rst)f(co)s(ordinate)i(v)-5 b(alue)33 b(to)f(o)s(ccur)g(in)g
-(the)g(closed)h(range)f([)p Fz(min)p FD(,)p Fz(max)6
-b FD(])33 b(and)e(including)h(all)150 3741 y(subsequen)m(t)26
-b(v)-5 b(alues)28 b(un)m(til)f(one)g(falls)h(outside)f(the)g(range.)40
-b(The)27 b(co)s(ordinate)h(v)-5 b(alue)27 b(for)g(a)g(cross-section)150
-3850 y(is)j(the)g(co)s(ordinate-v)-5 b(ariable)31 b(v)-5
-b(alue)31 b(closest)g(to)f(the)g(sp)s(eci\014ed)f(v)-5
-b(alue)30 b(and)f(m)m(ust)h(lie)h(within)e(the)h(range)150
-3960 y(or)g(co)s(ordinate-v)-5 b(ariable)33 b(v)-5 b(alues.)275
-4157 y(Co)s(ordinate)21 b(v)-5 b(alues)23 b(should)e(b)s(e)g(sp)s
-(eci\014ed)g(using)g(real)i(notation)g(with)e(a)i(decimal)f(p)s(oin)m
-(t)g(required)f(in)150 4266 y(the)28 b(v)-5 b(alue,)30
-b(whereas)d(dimension)h(indices)g(are)h(sp)s(eci\014ed)e(using)h(in)m
-(teger)h(notation)g(without)g(a)f(decimal)150 4376 y(p)s(oin)m(t.)38
-b(This)23 b(con)m(v)m(en)m(tion)j(serv)m(es)e(only)g(to)g(di\013eren)m
-(tiate)h(co)s(ordinate)g(v)-5 b(alues)24 b(from)f(dimension)g(indices.)
-150 4486 y(It)f(is)h(indep)s(enden)m(t)e(of)i(the)f(t)m(yp)s(e)h(of)f
-(an)m(y)h(netCDF)g(co)s(ordinate)g(v)-5 b(ariables.)39
-b(F)-8 b(or)23 b(a)g(giv)m(en)g(dimension,)h(the)150
-4595 y(sp)s(eci\014ed)30 b(limits)i(m)m(ust)e(b)s(oth)g(b)s(e)g(co)s
-(ordinate)i(v)-5 b(alues)31 b(\(with)g(decimal)h(p)s(oin)m(ts\))f(or)g
-(dimension)f(indices)150 4705 y(\(no)d(decimal)i(p)s(oin)m(ts\).)39
-b(The)27 b Fz(stride)32 b FD(option,)d(if)e(an)m(y)-8
-b(,)29 b(m)m(ust)e(b)s(e)f(a)i(dimension)e(index,)i(not)g(a)f(co)s
-(ordinate)150 4814 y(v)-5 b(alue.)41 b(See)31 b(Section)g(3.15)h
-([Stride],)f(page)g(40,)g(for)f(more)h(information)g(on)f(the)g
-Fz(stride)36 b FD(option.)275 5011 y(User-sp)s(eci\014ed)27
-b(co)s(ordinate)i(limits)g(are)g(promoted)f(to)h(double)f(precision)g
-(v)-5 b(alues)29 b(while)f(searc)m(hing)150 5121 y(for)k(the)h(indices)
-f(whic)m(h)g(brac)m(k)m(et)i(the)f(range.)46 b(Th)m(us,)32
-b(h)m(yp)s(erslabs)g(on)g(co)s(ordinates)h(of)f(t)m(yp)s(e)h
-Fy(NC_BYTE)150 5230 y FD(and)44 b Fy(NC_CHAR)f FD(are)i(computed)f(n)m
-(umerically)h(rather)g(than)f(lexically)-8 b(,)51 b(so)45
-b(the)g(results)f(are)h(unpre-)150 5340 y(dictable.)p
-eop end
-%%Page: 40 42
-TeXDict begin 40 41 bop 150 -116 a FD(40)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(The)35 b(relativ)m(e)j(magnitude)
-e(of)g Fz(min)f FD(and)g Fz(max)43 b FD(indicate)37 b(to)f(the)g(op)s
-(erator)g(whether)g(to)g(exp)s(ect)h(a)150 408 y Fz(wrapp)s(ed)29
-b(co)s(ordinate)36 b FD(\(see)c(Section)f(3.17)i([W)-8
-b(rapp)s(ed)30 b(Co)s(ordinates],)h(page)h(42\),)g(suc)m(h)e(as)h
-(longitude.)150 518 y(If)e Fz(min)24 b Fn(>)h Fz(max)7
-b FD(,)29 b(the)h FC(NCO)f FD(exp)s(ects)g(the)g(co)s(ordinate)h(to)g
-(b)s(e)f(wrapp)s(ed,)e(and)i(a)g(w)m(arning)g(message)i(will)150
-628 y(b)s(e)e(prin)m(ted.)40 b(When)29 b(this)g(o)s(ccurs,)h
-FC(NCO)f FD(selects)i(all)g(v)-5 b(alues)29 b(outside)h(the)g(domain)f
-([)p Fz(max)j Fn(<)25 b Fz(min)o FD(],)31 b(i.e.,)150
-737 y(all)h(the)g(v)-5 b(alues)32 b(exclusiv)m(e)h(of)f(the)f(v)-5
-b(alues)32 b(whic)m(h)f(w)m(ould)h(ha)m(v)m(e)g(b)s(een)f(selected)i
-(if)f Fz(min)f FD(and)g Fz(max)37 b FD(w)m(ere)150 847
-y(sw)m(app)s(ed.)i(If)28 b(this)h(seems)g(confusing,)f(test)i(y)m(our)f
-(command)f(on)h(just)f(the)g(co)s(ordinate)i(v)-5 b(ariables)29
-b(with)150 956 y Fy(ncks)p FD(,)41 b(and)d(then)i(examine)g(the)f
-(output)g(to)h(ensure)f FC(NCO)g FD(selected)i(the)e(h)m(yp)s(erslab)g
-(y)m(ou)h(exp)s(ected)150 1066 y(\(co)s(ordinate)32 b(wrapping)d(is)h
-(curren)m(tly)h(only)f(supp)s(orted)f(b)m(y)h Fy(ncks)p
-FD(\).)275 1252 y(Because)35 b(of)g(the)g(w)m(a)m(y)g(wrapp)s(ed)e(co)s
-(ordinates)i(are)g(in)m(terpreted,)h(it)f(is)f(v)m(ery)h(imp)s(ortan)m
-(t)g(to)g(mak)m(e)150 1362 y(sure)d(y)m(ou)i(alw)m(a)m(ys)h(sp)s(ecify)
-d(h)m(yp)s(erslabs)g(in)h(the)g(monotonically)j(increasing)d(sense,)h
-(i.e.,)i Fz(min)29 b Fn(<)h Fz(max)150 1471 y FD(\(ev)m(en)24
-b(if)f(the)g(underlying)f(co)s(ordinate)i(v)-5 b(ariable)24
-b(is)f(monotonically)i(decreasing\).)39 b(The)23 b(only)g(exception)150
-1581 y(to)33 b(this)f(is)g(when)f(y)m(ou)i(are)f(indeed)g(sp)s
-(ecifying)g(a)g(wrapp)s(ed)f(co)s(ordinate.)47 b(The)31
-b(distinction)i(is)f(crucial)150 1691 y(to)25 b(understand)e(b)s
-(ecause)i(the)g(p)s(oin)m(ts)f(selected)j(b)m(y)-8 b(,)26
-b(e.g.,)h Fy(-d)j(longitude,50.,340.)p FD(,)21 b(are)k(exactly)i(the)
-150 1800 y(complemen)m(t)32 b(of)e(the)h(p)s(oin)m(ts)f(selected)i(b)m
-(y)e Fy(-d)g(longitude,340.,50.)p FD(.)275 1986 y(Not)h(sp)s(ecifying)g
-(an)m(y)g(h)m(yp)s(erslab)f(option)h(is)g(equiv)-5 b(alen)m(t)32
-b(to)g(sp)s(ecifying)e(full)h(ranges)g(of)g(all)g(dimen-)150
-2096 y(sions.)38 b(This)22 b(option)i(ma)m(y)f(b)s(e)g(sp)s(eci\014ed)f
-(more)h(than)g(once)h(in)f(a)g(single)h(command)e(\(eac)m(h)j(h)m(yp)s
-(erslabb)s(ed)150 2206 y(dimension)30 b(requires)g(its)g(o)m(wn)h
-Fy(-d)f FD(option\).)150 2519 y FB(3.15)68 b(Stride)150
-2552 y Fm(\013)p 200 2552 3554 4 v 3553 w(\010)p 150
-3152 4 552 v 178 2689 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncbo)p FD(,)30 b Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g
-Fy(ncflint)p FD(,)g Fy(ncks)p FD(,)g Fy(ncpdq)p FD(,)h
-Fy(ncra)p FD(,)f Fy(ncrcat)p FD(,)g Fy(ncwa)178 2798
-y FD(Short)h(options:)41 b(`)p Fy(-d)30 b Fq(dim)p Fy(,[)p
-Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g
-Fy(])o(]])p FD(')178 2908 y(Long)31 b(options:)41 b(`)p
-Fy(--dimension)27 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p
-Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o FD(',)178
-3017 y(`)p Fy(--dmn)29 b Fq(dim)p Fy(,[)p Fq(min)11 b
-Fy(][,[)p Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o
-FD(')p 3803 3152 V 150 3203 a Fm(\012)p 200 3203 3554
-4 v 3553 w(\011)275 3400 y FD(All)36 b(data)h(op)s(erators)f(supp)s
-(ort)e(sp)s(ecifying)i(a)h Fz(stride)k FD(for)35 b(an)m(y)i(and)e(all)i
-(dimensions)f(at)g(the)h(same)150 3510 y(time.)59 b(The)36
-b Fz(stride)41 b FD(is)c(the)f(spacing)h(b)s(et)m(w)m(een)g(consecutiv)
-m(e)h(p)s(oin)m(ts)e(in)g(a)h(h)m(yp)s(erslab.)57 b(A)31
-b Fz(stride)41 b FD(of)31 b(1)150 3619 y(pic)m(ks)22
-b(all)g(the)g(elemen)m(ts)h(of)e(the)h(h)m(yp)s(erslab,)h(and)d(a)i
-Fz(stride)27 b FD(of)j(2)22 b(skips)f(ev)m(ery)h(other)g(elemen)m(t,)j
-(etc..)39 b Fy(ncks)150 3729 y FD(m)m(ultislabs)e(supp)s(ort)e
-(strides,)j(and)d(are)i(more)g(p)s(o)m(w)m(erful)f(than)g(the)h
-(regular)f(h)m(yp)s(erslabs)g(supp)s(orted)150 3839 y(b)m(y)30
-b(the)h(other)f(op)s(erators)h(\(see)g(Section)g(3.16)h([Multislabs],)g
-(page)f(41\).)42 b(Using)30 b(the)h Fz(stride)k FD(option)c(for)150
-3948 y(the)j(record)f(dimension)g(with)g Fy(ncra)g FD(and)g
-Fy(ncrcat)e FD(mak)m(es)k(it)f(p)s(ossible,)g(for)f(instance,)j(to)e(a)
-m(v)m(erage)i(or)150 4058 y(concatenate)d(regular)e(in)m(terv)-5
-b(als)31 b(across)g(m)m(ulti-\014le)g(input)f(data)h(sets.)275
-4244 y(The)22 b Fz(stride)27 b FD(is)c(sp)s(eci\014ed)f(as)g(the)h
-(optional)h(fourth)e(argumen)m(t)h(to)g(the)g(`)p Fy(-d)p
-FD(')f(h)m(yp)s(erslab)g(sp)s(eci\014cation:)150 4354
-y Fy(-d)30 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(s)o(trid)o(e)f Fy(]]])p FD(.)39 b(Sp)s(ecify)32
-b Fz(stride)37 b FD(as)32 b(an)g(in)m(teger)h(\(i.e.,)i(no)d(decimal)h
-(p)s(oin)m(t\))150 4463 y(follo)m(wing)e(the)f(third)f(comma)h(in)f
-(the)h(`)p Fy(-d)p FD(')f(argumen)m(t.)41 b(There)29
-b(is)h(no)f(default)h(v)-5 b(alue)30 b(for)g Fz(stride)p
-FD(.)40 b(Th)m(us)150 4573 y(using)34 b(`)p Fy(-d)c(time,,,2)p
-FD(')j(is)i(v)-5 b(alid)35 b(but)f(`)p Fy(-d)c(time,,,2.0)p
-FD(')j(and)h(`)p Fy(-d)c(time,,,)p FD(')j(are)i(not.)54
-b(When)35 b Fz(stride)150 4682 y FD(is)k(sp)s(eci\014ed)f(but)g
-Fz(min)g FD(is)g(not,)k(there)c(is)h(an)g(am)m(biguit)m(y)h(as)f(to)g
-(whether)f(the)h(extracted)h(h)m(yp)s(erslab)150 4792
-y(should)31 b(b)s(egin)h(with)g(\(using)g(C-st)m(yle,)i(0-based)e
-(indexes\))h(elemen)m(t)f(0)g(or)g(elemen)m(t)i(`)p Fy(stride-1)p
-FD('.)44 b FC(NCO)150 4902 y FD(m)m(ust)33 b(resolv)m(e)h(this)f(am)m
-(biguit)m(y)h(and)e(it)i(c)m(ho)s(oses)f(elemen)m(t)f(0)h(as)g(the)g
-(\014rst)g(elemen)m(t)h(of)f(the)g(h)m(yp)s(erslab)150
-5011 y(when)43 b Fz(min)g FD(is)h(not)g(sp)s(eci\014ed.)80
-b(Th)m(us)43 b(`)p Fy(-d)30 b(time,,,)p Fq(stride)11
-b FD(')40 b(is)k(syn)m(tactically)j(equiv)-5 b(alen)m(t)45
-b(to)f(`)p Fy(-d)150 5121 y(time,0,,)p Fq(stride)11 b
-FD('.)52 b(This)34 b(means,)j(for)e(example,)j(that)e(sp)s(ecifying)f
-(the)h(op)s(eration)g(`)p Fy(-d)30 b(time,,,2)p FD(')150
-5230 y(on)43 b(the)h(arra)m(y)g(`)p Fy(1,2,3,4,5)p FD(')d(selects)k
-(the)e(h)m(yp)s(erslab)g(`)p Fy(1,3,5)p FD('.)79 b(T)-8
-b(o)44 b(obtain)f(the)h(h)m(yp)s(erslab)e(`)p Fy(2,4)p
-FD(')150 5340 y(instead,)31 b(simply)f(explicitly)i(sp)s(ecify)e(the)g
-(starting)h(index)f(as)h(1,)g(i.e.,)h(`)p Fy(-d)e(time,1,,2)p
-FD('.)p eop end
-%%Page: 41 43
-TeXDict begin 41 42 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(41)275 299 y(F)-8 b(or)39
-b(example,)i(consider)d(a)g(\014le)h(`)p Fy(8501_8912.nc)p
-FD(')c(whic)m(h)j(con)m(tains)h(60)h(consecutiv)m(e)g(mon)m(ths)e(of)
-150 408 y(data.)46 b(Sa)m(y)33 b(y)m(ou)f(wish)g(to)g(obtain)h(just)e
-(the)i(Marc)m(h)f(data)h(from)f(this)g(\014le.)46 b(Using)32
-b(0-based)g(subscripts)150 518 y(\(see)42 b(Section)g(3.13)g([C)f(and)f
-(F)-8 b(ortran)42 b(Index)e(Con)m(v)m(en)m(tions],)46
-b(page)41 b(38\))i(these)e(data)h(are)f(stored)g(in)150
-628 y(records)33 b(2,)e(14,)37 b(.)23 b(.)f(.)42 b(50)34
-b(so)g(the)g(desired)f Fz(stride)38 b FD(is)31 b(12.)j(Without)h(the)f
-Fz(stride)k FD(option,)d(the)f(pro)s(cedure)150 737 y(is)h(v)m(ery)g(a)
-m(wkw)m(ard.)54 b(One)34 b(could)h(use)g Fy(ncks)e FD(\014v)m(e)i
-(times)h(and)e(then)g(use)h Fy(ncrcat)e FD(to)i(concatenate)j(the)150
-847 y(resulting)30 b(\014les)h(together:)390 1024 y Fy(for)47
-b(idx)g(in)g(02)g(14)g(26)h(38)f(50;)g(do)g(#)g(Bourne)f(Shell)485
-1134 y(ncks)h(-d)g(time,${idx})e(8501_8912.nc)f(foo.${idx})390
-1243 y(done)390 1353 y(foreach)i(idx)h(\(02)g(14)g(26)g(38)g(50\))g(#)h
-(C)f(Shell)485 1463 y(ncks)g(-d)g(time,${idx})e(8501_8912.nc)f
-(foo.${idx})390 1572 y(end)390 1682 y(ncrcat)i(foo.??)g(8589_03.nc)390
-1791 y(rm)h(foo.??)275 1969 y FD(With)30 b(the)h Fz(stride)k
-FD(option,)c Fy(ncks)f FD(p)s(erforms)e(this)j(h)m(yp)s(erslab)e
-(extraction)j(in)e(one)h(op)s(eration:)390 2146 y Fy(ncks)47
-b(-d)g(time,2,,12)e(8501_8912.nc)f(8589_03.nc)275 2324
-y FD(See)30 b(Section)h(4.7)h([nc)m(ks)f(netCDF)g(Kitc)m(hen)f(Sink],)h
-(page)g(135,)h(for)e(more)g(information)h(on)f Fy(ncks)p
-FD(.)275 2501 y(Applying)21 b(the)i Fz(stride)k FD(option)c(to)g(the)f
-(record)g(dimension)g(in)g Fy(ncra)f FD(and)h Fy(ncrcat)e
-FD(mak)m(es)j(it)g(p)s(ossible,)150 2611 y(for)30 b(instance,)h(to)h(a)
-m(v)m(erage)h(or)d(concatenate)j(regular)e(in)m(terv)-5
-b(als)31 b(across)g(m)m(ulti-\014le)g(input)f(data)h(sets.)390
-2789 y Fy(ncra)47 b(-F)g(-d)g(time,3,,12)e(85.nc)h(86.nc)h(87.nc)f
-(88.nc)g(89.nc)h(8589_03.nc)390 2898 y(ncrcat)f(-F)h(-d)g(time,3,,12)e
-(85.nc)i(86.nc)f(87.nc)h(88.nc)f(89.nc)g(8503_8903.nc)150
-3185 y FB(3.16)68 b(Multislabs)150 3227 y Fm(\013)p 200
-3227 3554 4 v 3553 w(\010)p 150 3827 4 552 v 178 3364
-a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncbo)p FD(,)30 b
-Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g Fy(ncflint)p FD(,)g
-Fy(ncks)p FD(,)g Fy(ncpdq)p FD(,)h Fy(ncra)p FD(,)f Fy(ncrcat)178
-3473 y FD(Short)h(options:)41 b(`)p Fy(-d)30 b Fq(dim)p
-Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g
-Fy(])o(]])p FD(')178 3583 y(Long)31 b(options:)41 b(`)p
-Fy(--dimension)27 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p
-Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o FD(',)178
-3692 y(`)p Fy(--dmn)29 b Fq(dim)p Fy(,[)p Fq(min)11 b
-Fy(][,[)p Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o
-FD(')p 3803 3827 V 150 3878 a Fm(\012)p 200 3878 3554
-4 v 3553 w(\011)275 4067 y FD(A)35 b(m)m(ultislab)i(is)f(a)g(union)f
-(of)h(one)g(or)g(more)g(h)m(yp)s(erslabs.)56 b(One)35
-b(de\014nes)g(m)m(ultislabs)h(b)m(y)g(c)m(haining)150
-4176 y(together)44 b(h)m(yp)s(erslab)d(commands,)j(i.e.,)j
-Fq(-d)41 b FD(options)h(\(see)h(Section)g(3.14)h([Hyp)s(erslabs],)h
-(page)d(39\).)150 4286 y(Supp)s(ort)18 b(for)j(sp)s(ecifying)f(a)h
-Fz(m)m(ulti-h)m(yp)s(erslab)i FD(or)d Fz(m)m(ultislab)j
-FD(for)e(an)m(y)g(v)-5 b(ariable)21 b(w)m(as)g(\014rst)f(added)g(to)h
-Fy(ncks)150 4395 y FD(in)i(late)i(2002.)40 b(The)23 b(other)h(op)s
-(erators)g(receiv)m(ed)h FC(MSA)f FD(capabilities)h(in)e(April)h(2008.)
-40 b(Sometimes)24 b(m)m(ulti-)150 4505 y(slabbing)k(is)h(referred)f(to)
-i(b)m(y)e(the)h(acron)m(ym)g FC(MSA)p FD(,)h(whic)m(h)e(stands)g(for)h
-(\\Multi-Slabbing)g(Algorithm".)275 4682 y(Multislabs)i(o)m(v)m(ercome)
-j(some)e(restrain)m(ts)f(that)h(limit)g(h)m(yp)s(erslabs.)43
-b(A)30 b(single)i Fq(-d)f FD(option)g(can)h(only)150
-4792 y(sp)s(ecify)24 b(a)h(con)m(tiguous)h(and/or)e(a)h(regularly)g
-(spaced)f(m)m(ulti-dimensional)i(data)f(arra)m(y)-8 b(.)40
-b(Multislabs)25 b(are)150 4902 y(constructed)31 b(from)g(m)m(ultiple)h
-Fq(-d)e FD(options)i(and)e(ma)m(y)i(therefore)f(ha)m(v)m(e)i
-(non-regularly)e(spaced)g(arra)m(ys.)150 5011 y(F)-8
-b(or)33 b(example,)g(supp)s(ose)e(it)h(is)g(desired)g(to)h(op)s(erate)f
-(on)g(all)h(longitudes)g(from)e(10.0)j(to)e(20.0)i(and)d(from)150
-5121 y(80.0)i(to)f(90.0)g(degrees)q(.)44 b(The)31 b(com)m(bined)h
-(range)g(of)f(longitudes)h(is)g(not)g(selectable)h(in)f(a)g(single)g(h)
-m(yp)s(er-)150 5230 y(slab)26 b(sp)s(ec\014cation)h(of)g(the)g(form)f
-(`)p Fy(-d)k Fq(dimension)p Fy(,)p Fq(min)p Fy(,)p Fq(max)11
-b FD(')21 b(or)27 b(`)p Fy(-d)j Fq(dimension)p Fy(,)p
-Fq(min)p Fy(,)p Fq(max)p Fy(,)p Fq(strid)o(e)11 b FD(')150
-5340 y(b)s(ecause)35 b(its)h(elemen)m(ts)h(are)f(irregularly)f(spaced)h
-(in)f(co)s(ordinate)h(space)g(\(and)f(presumably)f(in)h(index)p
-eop end
-%%Page: 42 44
-TeXDict begin 42 43 bop 150 -116 a FD(42)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(space)e(to)s(o\).)40
-b(The)27 b(m)m(ultislab)h(sp)s(eci\014cation)g(for)f(obtaining)h(these)
-f(v)-5 b(alues)28 b(is)f(simply)g(the)g(union)f(of)i(the)150
-408 y(h)m(yp)s(erslabs)h(sp)s(eci\014cations)i(that)g(comprise)g(the)f
-(m)m(ultislab,)i(i.e.,)390 573 y Fy(ncks)47 b(-d)g(lon,10.,20.)e(-d)i
-(lon,80.,90.)d(in.nc)j(out.nc)390 682 y(ncks)g(-d)g(lon,10.,15.)e(-d)i
-(lon,15.,20.)d(-d)k(lon,80.,90.)c(in.nc)j(out.nc)150
-847 y FD(An)m(y)30 b(n)m(um)m(b)s(er)f(of)h(h)m(yp)s(erslabs)g(sp)s
-(eci\014cations)g(ma)m(y)h(b)s(e)f(c)m(hained)g(together)i(to)f(sp)s
-(ecify)f(the)g(m)m(ultislab.)275 1011 y(Users)g(ma)m(y)h(sp)s(ecify)f
-(redundan)m(t)f(ranges)h(of)h(indices)f(in)h(a)f(m)m(ultislab,)h(e.g.,)
-390 1175 y Fy(ncks)47 b(-d)g(lon,0,4)f(-d)h(lon,2,9,2)e(in.nc)h(out.nc)
-150 1339 y FD(This)e(command)h(retriev)m(es)h(the)f(\014rst)f(\014v)m
-(e)h(longitudes,)k(and)c(then)f(ev)m(ery)i(other)f(longitude)g(v)-5
-b(alue)150 1449 y(up)36 b(to)h(the)g(ten)m(th.)61 b(Elemen)m(ts)37
-b(0,)i(2,)h(and)29 b(4)37 b(are)h(sp)s(eci\014ed)e(b)m(y)g(b)s(oth)h(h)
-m(yp)s(erslab)e(argumen)m(ts)i(\(hence)150 1558 y(this)c(is)h(redundan)
-m(t\))e(but)h(will)g(coun)m(t)h(only)g(once)g(if)f(an)g(arithmetic)i
-(op)s(eration)f(is)f(b)s(eing)g(p)s(erformed.)150 1668
-y(This)27 b(example)i(uses)e(index-based)h(\(not)h(co)s
-(ordinate-based\))g(m)m(ultislabs)f(b)s(ecause)g(the)g
-Fz(stride)33 b FD(option)150 1778 y(only)43 b(supp)s(orts)e
-(index-based)i(h)m(yp)s(er-slabbing.)77 b(See)43 b(Section)h(3.15)h
-([Stride],)h(page)e(40,)j(for)c(more)150 1887 y(information)31
-b(on)f(the)h Fz(stride)k FD(option.)275 2051 y(Multislabs)g(are)g(more)
-g(e\016cien)m(t)i(than)d(the)h(alternativ)m(e)j(of)d(sequen)m(tially)h
-(p)s(erforming)e(h)m(yp)s(erslab)150 2161 y(op)s(erations)g(and)e
-(concatenating)k(the)d(results.)49 b(This)33 b(is)g(b)s(ecause)g
-FC(NCO)g FD(emplo)m(ys)h(a)g(no)m(v)m(el)g(m)m(ultislab)150
-2271 y(algorithm)42 b(to)g(minimize)f(the)h(n)m(um)m(b)s(er)d(of)i(I/O)
-g(op)s(erations)h(when)e(retrieving)i(irregularly)f(spaced)150
-2380 y(data)36 b(from)f(disk.)55 b(The)35 b FC(NCO)g
-FD(m)m(ultislab)h(algorithm)g(retriev)m(es)h(eac)m(h)f(elemen)m(t)h
-(from)e(disk)g(once)h(and)150 2490 y(only)31 b(once.)42
-b(Th)m(us)29 b(users)h(ma)m(y)h(tak)m(e)i(some)e(shortcuts)f(in)h(sp)s
-(ecifying)f(m)m(ultislabs)h(and)f(the)h(algorithm)150
-2599 y(will)k(obtain)h(the)f(in)m(tended)g(v)-5 b(alues.)56
-b(Sp)s(ecifying)34 b(redundan)m(t)g(ranges)h(is)g(not)h(encouraged,)h
-(but)d(ma)m(y)150 2709 y(b)s(e)c(useful)f(on)i(o)s(ccasion)g(and)f
-(will)h(not)f(result)h(in)f(unin)m(tended)f(consequences.)275
-2873 y(A)h(\014nal)37 b(example)h(sho)m(ws)g(the)g(real)g(p)s(o)m(w)m
-(er)f(of)h(m)m(ultislabs.)63 b(Supp)s(ose)36 b(the)h
-Fz(Q)42 b FD(v)-5 b(ariable)39 b(con)m(tains)150 2983
-y(three)d(dimensional)g(arra)m(ys)g(of)h(distinct)f(c)m(hemical)i
-(constituen)m(ts)f(in)e(no)h(particular)h(order.)56 b(W)-8
-b(e)38 b(are)150 3092 y(in)m(terested)29 b(in)f(the)g(NOy)g(sp)s(ecies)
-h(in)f(a)g(certain)h(geographic)h(range.)40 b(Sa)m(y)29
-b(that)f(NO,)h(NO2,)g(and)e(N2O5)150 3202 y(are)36 b(elemen)m(ts)31
-b(0)q(,)36 b(1,)h(and)30 b(5)36 b(of)f(the)h Fz(sp)s(ecies)j
-FD(dimension)34 b(of)i Fz(Q)p FD(.)f(The)f(m)m(ultislab)i(sp)s
-(eci\014cation)g(migh)m(t)150 3312 y(lo)s(ok)31 b(something)g(lik)m(e)
-390 3476 y Fy(ncks)47 b(-d)g(species,0,1)e(-d)i(species,5)e(-d)i
-(lon,0,4)f(-d)h(lon,2,9,2)e(in.nc)i(out.nc)150 3640 y
-FD(Multislabs)41 b(are)g(p)s(o)m(w)m(erful)g(b)s(ecause)f(they)h(ma)m
-(y)g(b)s(e)f(sp)s(eci\014ed)g(for)h(ev)m(ery)g(dimension)f(at)i(the)f
-(same)150 3750 y(time.)g(Th)m(us)29 b(m)m(ultislabs)h(obsolete)h(the)f
-(need)g(to)g(execute)h(m)m(ultiple)g Fy(ncks)d FD(commands)i(to)g
-(gather)h(the)150 3859 y(desired)f(range)h(of)f(data.)150
-4106 y FB(3.17)68 b(W)-11 b(rapp)t(ed)44 b(Co)t(ordinates)150
-4185 y Fm(\013)p 200 4185 3554 4 v 3553 w(\010)p 150
-4785 4 552 v 178 4321 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncks)178 4431 y FD(Short)30 b(options:)41 b(`)p
-Fy(-d)30 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])p FD(')178 4541
-y(Long)31 b(options:)41 b(`)p Fy(--dimension)27 b Fq(dim)p
-Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(str)o(ide)f
-Fy(]]])o FD(',)178 4650 y(`)p Fy(--dmn)29 b Fq(dim)p
-Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(str)o(ide)f
-Fy(]]])o FD(')p 3803 4785 V 150 4836 a Fm(\012)p 200
-4836 3554 4 v 3553 w(\011)275 5011 y FD(A)30 b Fz(wrapp)s(ed)e(co)s
-(ordinate)40 b FD(is)33 b(a)h(co)s(ordinate)g(whose)f(v)-5
-b(alues)34 b(increase)g(or)g(decrease)g(monotonically)150
-5121 y(\(nothing)d(un)m(usual)f(so)h(far\),)h(but)e(whic)m(h)g
-(represen)m(ts)h(a)g(dimension)g(that)g(ends)f(where)h(it)g(b)s(egins)f
-(\(i.e.,)150 5230 y(wraps)39 b(around)g(on)h(itself)7
-b(\).)70 b(Longitude)40 b(\(i.e.,)k(degrees)d(on)e(a)i(circle\))g(is)f
-(a)g(familiar)h(example)f(of)h(a)150 5340 y(wrapp)s(ed)34
-b(co)s(ordinate.)59 b(Longitude)37 b(increases)g(to)g(the)f(East)h(of)f
-(Green)m(wic)m(h,)j(England,)e(where)f(it)h(is)p eop
-end
-%%Page: 43 45
-TeXDict begin 43 44 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(43)150 299 y(de\014ned)29
-b(to)i(b)s(e)e(zero.)42 b(Halfw)m(a)m(y)32 b(around)d(the)h(glob)s(e,)h
-(the)f(longitude)h(is)f(180)i(degrees)f(East)f(\(or)h(W)-8
-b(est\).)150 408 y(Con)m(tin)m(uing)30 b(east)m(w)m(ard,)h(longitude)g
-(increases)f(to)g(360)i(degrees)e(East)g(at)h(Green)m(wic)m(h.)41
-b(The)29 b(longitude)150 518 y(v)-5 b(alues)24 b(of)g(most)g(geoph)m
-(ysical)i(data)f(are)f(either)g(in)g(the)g(range)g([0,360\),)k(or)c([)p
-FA(\000)p FD(180,180\).)41 b(In)23 b(either)i(case,)150
-628 y(the)42 b(W)-8 b(esternmost)42 b(and)f(Easternmost)h(longitudes)g
-(are)f(n)m(umerically)h(separated)g(b)m(y)f(360)32 b(degrees)q(,)150
-737 y(but)h(represen)m(t)h(con)m(tiguous)h(regions)g(on)f(the)g(glob)s
-(e.)52 b(F)-8 b(or)34 b(example,)i(the)e(Saharan)g(desert)g(stretc)m
-(hes)150 847 y(from)k(roughly)h(340)h(to)g(50)31 b(degrees)39
-b(East.)67 b(Extracting)40 b(the)f(h)m(yp)s(erslab)f(of)h(data)h
-(represen)m(ting)f(the)150 956 y(Sahara)c(from)g(a)h(global)h(dataset)g
-(presen)m(ts)e(sp)s(ecial)i(problems)d(when)h(the)h(global)g(dataset)h
-(is)f(stored)150 1066 y(consecutiv)m(ely)g(in)d(longitude)h(from)f(0)h
-(to)g(360)e(degrees)q(.)50 b(This)33 b(is)g(b)s(ecause)h(the)g(data)g
-(for)f(the)h(Sahara)150 1176 y(will)d(not)g(b)s(e)e(con)m(tiguous)j(in)
-e(the)h Fz(input-\014le)k FD(but)30 b(is)g(exp)s(ected)h(b)m(y)f(the)h
-(user)f(to)h(b)s(e)f(con)m(tiguous)i(in)e(the)150 1285
-y Fz(output-\014le)p FD(.)40 b(In)26 b(this)h(case,)i
-Fy(ncks)d FD(m)m(ust)h(in)m(v)m(ok)m(e)i(sp)s(ecial)e(soft)m(w)m(are)i
-(routines)e(to)g(assem)m(ble)h(the)f(desired)150 1395
-y(output)j(h)m(yp)s(erslab)f(from)h(m)m(ultiple)h(reads)f(of)h(the)g
-Fz(input-\014le)p FD(.)275 1559 y(Assume)40 b(the)h(domain)g(of)g(the)g
-(monotonically)i(increasing)e(longitude)h(co)s(ordinate)f
-Fy(lon)f FD(is)h(0)i Fn(<)150 1668 y Fz(lon)29 b Fn(<)f
-FD(360.)49 b Fy(ncks)31 b FD(will)i(extract)h(a)e(h)m(yp)s(erslab)g
-(whic)m(h)g(crosses)h(the)g(Green)m(wic)m(h)g(meridian)f(simply)g(b)m
-(y)150 1778 y(sp)s(ecifying)j(the)g(w)m(esternmost)g(longitude)h(as)f
-Fz(min)f FD(and)h(the)g(easternmost)g(longitude)h(as)f
-Fz(max)p FD(.)54 b(The)150 1888 y(follo)m(wing)32 b(commands)e(extract)
-i(a)e(h)m(yp)s(erslab)g(con)m(taining)i(the)e(Saharan)g(desert:)390
-2052 y Fy(ncks)47 b(-d)g(lon,340.,50.)d(in.nc)j(out.nc)390
-2161 y(ncks)g(-d)g(lon,340.,50.)d(-d)j(lat,10.,35.)e(in.nc)i(out.nc)150
-2325 y FD(The)24 b(\014rst)g(example)h(selects)h(data)f(in)f(the)g
-(same)h(longitude)g(range)g(as)g(the)f(Sahara.)39 b(The)24
-b(second)g(exam-)150 2435 y(ple)31 b(further)g(constrains)g(the)h(data)
-g(to)g(ha)m(ving)g(the)f(same)h(latitude)g(as)g(the)g(Sahara.)43
-b(The)31 b(co)s(ordinate)150 2545 y Fy(lon)k FD(in)h(the)h
-Fz(output-\014le)p FD(,)h(`)p Fy(out.nc)p FD(',)e(will)h(no)f(longer)h
-(b)s(e)e(monotonic!)60 b(The)35 b(v)-5 b(alues)37 b(of)f
-Fy(lon)g FD(will)g(b)s(e,)150 2654 y(e.g.,)26 b(`)p Fy(340,)k(350,)f
-(0,)h(10,)f(20,)h(30,)f(40,)h(50)p FD('.)38 b(This)23
-b(can)g(ha)m(v)m(e)i(serious)e(implications)i(should)e(y)m(ou)g(run)150
-2764 y(`)p Fy(out.nc)p FD(')29 b(through)g(another)h(op)s(eration)g
-(whic)m(h)g(exp)s(ects)g(the)g Fy(lon)f FD(co)s(ordinate)i(to)g(b)s(e)e
-(monotonically)150 2873 y(increasing.)41 b(F)-8 b(ortunately)g(,)31
-b(the)f(c)m(hances)g(of)f(this)g(happ)s(ening)f(are)h(slim,)h(since)f
-Fy(lon)f FD(has)h(already)h(b)s(een)150 2983 y(h)m(yp)s(erslabb)s(ed,)k
-(there)g(should)g(b)s(e)f(no)h(reason)h(to)g(h)m(yp)s(erslab)f
-Fy(lon)f FD(again.)54 b(Should)33 b(y)m(ou)i(need)f(to)h(h)m(y-)150
-3093 y(p)s(erslab)d Fy(lon)g FD(again,)k(b)s(e)c(sure)h(to)h(giv)m(e)g
-(dimensional)f(indices)h(as)f(the)g(h)m(yp)s(erslab)g(argumen)m(ts,)h
-(rather)150 3202 y(than)c(co)s(ordinate)h(v)-5 b(alues)31
-b(\(see)g(Section)h(3.14)f([Hyp)s(erslabs],)g(page)g(39\).)150
-3449 y FB(3.18)68 b(Auxiliary)46 b(Co)t(ordinates)150
-3528 y Fm(\013)p 200 3528 3554 4 v 3553 w(\010)p 150
-4018 4 442 v 178 3664 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncbo)p FD(,)30 b Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g
-Fy(ncflint)p FD(,)g Fy(ncks)p FD(,)g Fy(ncpdq)p FD(,)h
-Fy(ncra)p FD(,)f Fy(ncrcat)178 3774 y FD(Short)h(options:)41
-b(`)p Fy(-X)30 b Fq(lon_min)p Fy(,)p Fq(lon_max)p Fy(,)p
-Fq(lat_min)p Fy(,)o Fq(lat_)o(max)10 b FD(')178 3883
-y(Long)31 b(options:)41 b(`)p Fy(--auxiliary)27 b Fq(lon_min)p
-Fy(,)p Fq(lon_max)p Fy(,)p Fq(lat_min)p Fy(,)p Fq(la)o(t_m)o(ax)10
-b FD(')p 3803 4018 V 150 4069 a Fm(\012)p 200 4069 3554
-4 v 3553 w(\011)275 4244 y FD(Utilize)88 b(auxiliary)e(co)s(ordinates)h
-(sp)s(eci\014ed)e(in)h(v)-5 b(alues)86 b(of)g(the)g(co)s(ordinate)h(v)
--5 b(ariable's)150 4354 y Fy(standard_name)87 b FD(attributes,)106
-b(if)90 b(an)m(y)-8 b(,)107 b(when)89 b(in)m(terpreting)i(h)m(yp)s
-(erslab)e(and)h(m)m(ulti-slab)150 4463 y(options.)197
-b(Also)83 b(`)p Fy(--auxiliary)p FD('.)193 b(This)82
-b(switc)m(h)g(supp)s(orts)f(h)m(yp)s(erslabbing)g(cell-based)150
-4573 y(grids)g(o)m(v)m(er)i(co)s(ordinate)g(ranges.)194
-b(This)81 b(w)m(orks)h(on)f(datasets)i(that)f(asso)s(ciate)h(co)s
-(ordi-)150 4682 y(nate)c(v)-5 b(ariables)78 b(to)h(grid-mappings)f
-(using)f(the)i FC(CF)p FD(-con)m(v)m(en)m(tion)h(\(see)f(Section)g
-(3.30)h([CF)150 4792 y(Con)m(v)m(en)m(tions],)d(page)66
-b(64\))h Fy(coordinates)c FD(and)i Fy(standard_name)e
-FD(attributes)j(describ)s(ed)f(here)150 4902 y(\()p Fy
-(http://cf-pcmdi.llnl.gov/d)o(ocu)o(ment)o(s/cf)o(-co)o(nven)o(tion)o
-(s/1)o(.5/c)o(f-co)o(nve)o(ntio)o(ns.)o(html)o(#coo)o(rdi)o(nate)o
-(-sys)o(tem)o FD(\).)150 5011 y(Curren)m(tly)-8 b(,)41
-b FC(NCO)d FD(understands)e(auxiliary)k(co)s(ordinate)f(v)-5
-b(ariables)39 b(p)s(oin)m(ted)g(to)g(b)m(y)g(the)f Fy(standard_)150
-5121 y(name)58 b FD(attributes)i(for)f Fz(latitude)65
-b FD(and)59 b Fz(longitude)p FD(.)128 b(Cells)60 b(that)g(con)m(tain)h
-(a)e(v)-5 b(alue)60 b(within)f(the)150 5230 y(user-sp)s(eci\014ed)76
-b(range)i([)p Fz(lon)p 1203 5230 28 4 v 40 w(min)p FD(,)p
-Fz(lon)p 1541 5230 V 40 w(max)p FD(,)p Fz(lat)p 1880
-5230 V 42 w(min)p FD(,)p Fz(lat)p 2204 5230 V 41 w(max)6
-b FD(])78 b(are)f(included)g(in)g(the)g(output)150 5340
-y(h)m(yp)s(erslab.)p eop end
-%%Page: 44 46
-TeXDict begin 44 45 bop 150 -116 a FD(44)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(A)38 b(cell-based)h(grid)f
-(collapses)h(the)f(horizon)m(tal)i(spatial)f(information)f(\(latitude)i
-(and)d(longitude\))150 408 y(and)g(stores)h(it)g(along)g(a)g
-(one-dimensional)h(co)s(ordinate)f(that)g(has)f(a)h(one-to-one)i
-(mapping)c(to)j(b)s(oth)150 518 y(latitude)32 b(and)f(longitude)h(co)s
-(ordinates.)44 b(Rectangular)33 b(\(in)e(longitude)h(and)f(latitude\))i
-(horizon)m(tal)g(h)m(y-)150 628 y(p)s(erslabs)44 b(cannot)i(b)s(e)f
-(selected)i(using)e(the)h(t)m(ypical)h(pro)s(cedure)d(\(see)j(Section)f
-(3.14)h([Hyp)s(erslabs],)150 737 y(page)32 b(39\))g(of)g(separately)g
-(sp)s(ecifying)f(`)p Fy(-d)p FD(')g(argumen)m(ts)h(for)f(longitude)h
-(and)e(latitude.)44 b(Instead,)32 b(when)150 847 y(the)c(`)p
-Fy(-X)p FD(')h(is)f(used,)g FC(NCO)g FD(learns)g(the)g(names)h(of)f
-(the)g(latitude)i(and)d(longitude)i(co)s(ordinates)g(b)m(y)f(searc)m
-(h-)150 956 y(ing)45 b(the)f Fy(standard_name)d FD(attribute)k(of)g
-(all)h(v)-5 b(ariables)45 b(un)m(til)g(it)g(\014nds)d(the)j(t)m(w)m(o)h
-(v)-5 b(ariables)45 b(whose)150 1066 y Fy(standard_name)p
-FD('s)39 b(are)j(\\latitude")j(and)c(\\longitude",)47
-b(resp)s(ectiv)m(ely)-8 b(.)79 b(This)41 b Fy(standard_name)e
-FD(at-)150 1176 y(tribute)34 b(for)g(latitude)i(and)e(longitude)h(co)s
-(ordinates)g(follo)m(ws)g(the)g FC(CF)p FD(-con)m(v)m(en)m(tion)i
-(\(see)e(Section)g(3.30)150 1285 y([CF)c(Con)m(v)m(en)m(tions],)h(page)
-f(64\).)275 1461 y(Putting)e(it)h(all)g(together,)h(consider)e(a)h(v)-5
-b(ariable)30 b Fz(gds)p 2112 1461 28 4 v 39 w(3dv)-5
-b(ar)36 b FD(output)29 b(from)g(sim)m(ulations)h(on)f(a)g(cell-)150
-1570 y(based)21 b(geo)s(desic)i(grid.)38 b(Although)21
-b(the)h(v)-5 b(ariable)22 b(con)m(tains)h(three)f(dimensions)f(of)h
-(data)g(\(time,)j(latitude,)150 1680 y(and)f(longitude\),)k(it)d(is)g
-(stored)g(in)g(the)g(netCDF)h(\014le)f(with)f(only)i(t)m(w)m(o)g
-(dimensions,)f Fy(time)f FD(and)h Fy(gds_crd)p FD(.)390
-1855 y Fy(\045)47 b(ncks)g(-m)g(-C)g(-v)h(gds_3dvar)d(~/nco/data/in.nc)
-390 1965 y(gds_3dvar:)g(type)i(NC_FLOAT,)e(2)i(dimensions,)e(4)j
-(attributes,)c(chunked?)i(no,)h(compressed?)d(no,)j(packed?)f(no,)h(ID)
-g(=)h(41)390 2074 y(gds_3dvar)d(RAM)i(size)g(is)g
-(10*8*sizeof\(NC_FLOAT\))42 b(=)47 b(80*4)g(=)h(320)e(bytes)390
-2184 y(gds_3dvar)f(dimension)h(0:)h(time,)f(size)h(=)g(10)g(NC_DOUBLE,)
-e(dim.)i(ID)g(=)h(20)f(\(CRD\)\(REC\))390 2293 y(gds_3dvar)e(dimension)
-h(1:)h(gds_crd,)e(size)i(=)g(8)h(NC_FLOAT,)d(dim.)i(ID)g(=)g(17)h
-(\(CRD\))390 2403 y(gds_3dvar)d(attribute)h(0:)h(long_name,)e(size)h(=)
-i(17)f(NC_CHAR,)f(value)g(=)h(Geodesic)f(variable)390
-2513 y(gds_3dvar)f(attribute)h(1:)h(units,)f(size)g(=)i(5)f(NC_CHAR,)f
-(value)g(=)i(meter)390 2622 y(gds_3dvar)d(attribute)h(2:)h
-(coordinates,)d(size)j(=)g(15)g(NC_CHAR,)f(value)g(=)i(lat_gds)e
-(lon_gds)390 2732 y(gds_3dvar)f(attribute)h(3:)h(purpose,)e(size)i(=)g
-(64)h(NC_CHAR,)d(value)h(=)i(Test)f(auxiliary)e(coordinates)f(like)j
-(those)f(that)h(define)f(geodesic)g(grids)275 2907 y
-FD(The)36 b Fy(coordinates)e FD(attribute)k(lists)g(the)f(names)g(of)g
-(the)h(latitude)g(and)e(longitude)i(co)s(ordinates,)150
-3017 y Fy(lat_gds)d FD(and)h Fy(lon_gds)p FD(,)h(resp)s(ectiv)m(ely)-8
-b(.)63 b(The)36 b Fy(coordinates)e FD(attribute)k(is)f(recommended)f
-(though)150 3126 y(optional.)57 b(With)36 b(it,)i(the)e(user)e(can)i
-(immediately)h(iden)m(tify)f(whic)m(h)f(v)-5 b(ariables)36
-b(con)m(tain)h(the)f(latitude)150 3236 y(and)e(longitude)h(co)s
-(ordinates.)54 b(Without)35 b(a)g Fy(coordinates)c FD(attribute)36
-b(it)f(w)m(ould)f(b)s(e)g(unclear)g(at)i(\014rst)150
-3345 y(glance)h(whether)d(a)i(v)-5 b(ariable)36 b(resides)f(on)g(a)h
-(cell-based)h(grid.)55 b(In)34 b(this)h(example,)j Fy(time)c
-FD(is)h(a)h(normal)150 3455 y(record)30 b(dimension)g(and)g
-Fy(gds_crd)e FD(is)j(the)f(cell-based)i(dimension.)275
-3630 y(The)c(cell-based)i(grid)f(\014le)g(m)m(ust)g(con)m(tain)i(t)m(w)
-m(o)f(v)-5 b(ariables)30 b(whose)f Fy(standard_name)c
-FD(attributes)30 b(are)150 3740 y(\\latitude",)j(and)c(\\longitude":)
-390 3915 y Fy(\045)47 b(ncks)g(-m)g(-C)g(-v)h(lat_gds,lon_gds)43
-b(~/nco/data/in.nc)390 4025 y(lat_gds:)j(type)g(NC_DOUBLE,)f(1)j
-(dimensions,)c(4)k(attributes,)d(chunked?)g(no,)i(compressed?)e(no,)i
-(packed?)e(no,)i(ID)g(=)h(37)390 4134 y(lat_gds)e(RAM)h(size)f(is)i
-(8*sizeof\(NC_DOUBLE\))42 b(=)48 b(8*8)e(=)i(64)f(bytes)390
-4244 y(lat_gds)f(dimension)f(0:)i(gds_crd,)f(size)g(=)i(8)f(NC_FLOAT,)f
-(dim.)g(ID)h(=)h(17)f(\(CRD\))390 4354 y(lat_gds)f(attribute)f(0:)i
-(long_name,)e(size)i(=)g(8)h(NC_CHAR,)d(value)i(=)g(Latitude)390
-4463 y(lat_gds)f(attribute)f(1:)i(standard_name,)d(size)j(=)g(8)h
-(NC_CHAR,)d(value)i(=)g(latitude)390 4573 y(lat_gds)f(attribute)f(2:)i
-(units,)f(size)h(=)g(6)h(NC_CHAR,)d(value)i(=)g(degree)390
-4682 y(lat_gds)f(attribute)f(3:)i(purpose,)f(size)g(=)i(62)f(NC_CHAR,)f
-(value)g(=)h(1-D)g(latitude)f(coordinate)f(referred)g(to)j(by)f
-(geodesic)e(grid)i(variables)390 4902 y(lon_gds:)f(type)g(NC_DOUBLE,)f
-(1)j(dimensions,)c(4)k(attributes,)d(chunked?)g(no,)i(compressed?)e
-(no,)i(packed?)e(no,)i(ID)g(=)h(38)390 5011 y(lon_gds)e(RAM)h(size)f
-(is)i(8*sizeof\(NC_DOUBLE\))42 b(=)48 b(8*8)e(=)i(64)f(bytes)390
-5121 y(lon_gds)f(dimension)f(0:)i(gds_crd,)f(size)g(=)i(8)f(NC_FLOAT,)f
-(dim.)g(ID)h(=)h(17)f(\(CRD\))390 5230 y(lon_gds)f(attribute)f(0:)i
-(long_name,)e(size)i(=)g(9)h(NC_CHAR,)d(value)i(=)g(Longitude)390
-5340 y(lon_gds)f(attribute)f(1:)i(standard_name,)d(size)j(=)g(9)h
-(NC_CHAR,)d(value)i(=)g(longitude)p eop end
-%%Page: 45 47
-TeXDict begin 45 46 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(45)390 299 y Fy(lon_gds)46
-b(attribute)f(2:)i(units,)f(size)h(=)g(6)h(NC_CHAR,)d(value)i(=)g
-(degree)390 408 y(lon_gds)f(attribute)f(3:)i(purpose,)f(size)g(=)i(63)f
-(NC_CHAR,)f(value)g(=)h(1-D)g(longitude)f(coordinate)f(referred)g(to)i
-(by)g(geodesic)f(grid)h(variables)275 573 y FD(In)31
-b(this)g(example)i Fy(lat_gds)d FD(and)h Fy(lon_gds)f
-FD(represen)m(t)i(the)g(latitude)h(or)f(longitude,)h(resp)s(ectiv)m
-(ely)-8 b(,)150 682 y(of)26 b(cell-based)i(v)-5 b(ariables.)40
-b(These)25 b(co)s(ordinates)i(\(m)m(ust\))g(ha)m(v)m(e)g(the)g(same)f
-(single)h(dimension)e(\()p Fy(gds_crd)p FD(,)150 792
-y(in)36 b(this)f(case\))j(as)e(the)g(cell-based)h(v)-5
-b(ariables.)58 b(And)35 b(the)h(co)s(ordinates)h(m)m(ust)f(b)s(e)f
-(one-dimensional|)150 901 y(m)m(ultidimensional)c(co)s(ordinates)g
-(will)g(not)g(w)m(ork.)275 1066 y(This)i(infrastructure)h(allo)m(ws)i
-FC(NCO)e FD(to)h(iden)m(tify)-8 b(,)37 b(in)m(terpret,)f(and)e(pro)s
-(cess)g(\(e.g.,)k(h)m(yp)s(erslab\))c(the)150 1175 y(v)-5
-b(ariables)37 b(on)g(cell-based)h(grids)e(as)h(easily)g(as)g(it)g(w)m
-(orks)g(with)f(regular)h(grids.)59 b(T)-8 b(o)37 b(time-a)m(v)m(erage)j
-(all)150 1285 y(the)31 b(v)-5 b(alues)30 b(b)s(et)m(w)m(een)h(zero)h
-(and)d(180)j(degrees)f(longitude)g(and)f(b)s(et)m(w)m(een)h(plus)e(and)
-h(min)m(us)g(30)h(degress)150 1394 y(latitude,)h(w)m(e)e(use)390
-1559 y Fy(ncra)47 b(-O)g(-X)g(0.,180.,-30.,30.)c(-v)48
-b(gds_3dvar)d(in.nc)h(out.nc)275 1723 y FC(NCO)35 b FD(accepts)i(m)m
-(ultiple)f(`)p Fy(-X)p FD(')g(argumen)m(ts)g(for)f(cell-based)i(grid)e
-(m)m(ulti-slabs,)j(just)e(as)f(it)i(accepts)150 1833
-y(m)m(ultiple)31 b(`)p Fy(-d)p FD(')f(argumen)m(ts)h(for)f(m)m
-(ulti-slabs)h(of)g(regular)f(co)s(ordinates.)390 1997
-y Fy(ncra)47 b(-O)g(-X)g(0.,180.,-30.,30.)c(-X)48 b(270.,315.,45.,90.)
-43 b(in.nc)j(out.nc)275 2161 y FD(The)20 b(argumen)m(ts)h(to)g(`)p
-Fy(-X)p FD(')g(are)g(alw)m(a)m(ys)h(in)m(terpreted)f(as)g(\015oating)h
-(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)g(i.e.,)j(as)d(co)s(ordinate)150
-2271 y(v)-5 b(alues)29 b(rather)g(than)f(dimension)h(indices)g(so)g
-(that)g(these)g(t)m(w)m(o)h(commands)f(pro)s(duce)f(iden)m(tical)i
-(results)390 2435 y Fy(ncra)47 b(-X)g(0.,180.,-30.,30.)c(in.nc)k
-(out.nc)390 2544 y(ncra)g(-X)g(0,180,-30,30)d(in.nc)j(out.nc)275
-2709 y FD(In)38 b(con)m(trast,)k(argumen)m(ts)d(to)h(`)p
-Fy(-d)p FD(')e(require)h(decimal)h(places)f(to)h(b)s(e)e(recognized)i
-(as)f(co)s(ordinates)150 2818 y(not)32 b(indices)h(\(see)g(Section)g
-(3.14)h([Hyp)s(erslabs],)e(page)h(39\).)47 b(W)-8 b(e)34
-b(recommend)e(alw)m(a)m(ys)h(using)f(decimal)150 2928
-y(p)s(oin)m(ts)e(with)g(`)p Fy(-X)p FD(')h(argumen)m(ts)f(to)h(a)m(v)m
-(oid)h(confusion.)150 3175 y FB(3.19)68 b(UDUnits)46
-b(Supp)t(ort)150 3254 y Fm(\013)p 200 3254 3554 4 v 3553
-w(\010)p 150 3853 4 552 v 178 3390 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncbo)p FD(,)30 b Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g
-Fy(ncflint)p FD(,)g Fy(ncks)p FD(,)g Fy(ncpdq)p FD(,)h
-Fy(ncra)p FD(,)f Fy(ncrcat)p FD(,)g Fy(ncwa)178 3500
-y FD(Short)h(options:)41 b(`)p Fy(-d)30 b Fq(dim)p Fy(,[)p
-Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g
-Fy(])o(]])p FD(')178 3609 y(Long)31 b(options:)41 b(`)p
-Fy(--dimension)27 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p
-Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o FD(',)178
-3719 y(`)p Fy(--dmn)29 b Fq(dim)p Fy(,[)p Fq(min)11 b
-Fy(][,[)p Fq(max)g Fy(][,[)p Fq(str)o(ide)f Fy(]]])o
-FD(')p 3803 3853 V 150 3905 a Fm(\012)p 200 3905 3554
-4 v 3553 w(\011)275 4080 y FD(There)502 b(is)g(more)h(than)f(one)h(w)m
-(a)m(y)150 4189 y(to)40 b(h)m(yp)s(erskin)e(a)h(cat.)69
-b(The)38 b(UDUnits)i(\()p Fy(http://www.unidata.ucar.edu)o(/pa)o(ckag)o
-(es/u)o(dun)o(its)p FD(\))150 4299 y(pac)m(k)-5 b(age)36
-b(pro)m(vides)d(a)h(library)g(whic)m(h,)g(if)g(presen)m(t,)h
-FC(NCO)e FD(uses)g(to)i(translate)g(user-sp)s(eci\014ed)d(ph)m(ysical)
-150 4409 y(dimensions)h(in)m(to)h(the)f(ph)m(ysical)h(dimensions)e(of)i
-(data)g(stored)f(in)g(netCDF)h(\014les.)49 b(Unidata)34
-b(pro)m(vides)150 4518 y(UDUnits)i(under)f(the)h(same)g(terms)g(as)g
-(netCDF,)g(so)g(sites)h(should)e(install)h(b)s(oth.)56
-b(Compiling)36 b FC(NCO)150 4628 y FD(with)27 b(UDUnits)h(supp)s(ort)e
-(is)h(curren)m(tly)h(optional)g(but)f(ma)m(y)h(b)s(ecome)g(required)e
-(in)i(a)f(future)g(v)m(ersion)h(of)150 4737 y FC(NCO)p
-FD(.)275 4902 y(Tw)m(o)35 b(examples)i(su\016ce)e(to)i(demonstrate)f
-(the)g(p)s(o)m(w)m(er)g(and)f(con)m(v)m(enience)j(of)e(UDUnits)g(supp)s
-(ort.)150 5011 y(First,)48 b(consider)c(extraction)i(of)e(a)h(v)-5
-b(ariable)44 b(con)m(taining)i(non-record)e(co)s(ordinates)h(with)e(ph)
-m(ysical)150 5121 y(dimensions)23 b(stored)i(in)e(MKS)h(units.)38
-b(In)23 b(the)i(follo)m(wing)g(example,)i(the)d(user)f(extracts)j(all)f
-(w)m(a)m(v)m(elengths)150 5230 y(in)32 b(the)h(visible)g(p)s(ortion)g
-(of)g(the)g(sp)s(ectrum)e(in)i(terms)f(of)h(the)g(units)f(v)m(ery)h
-(frequen)m(tly)g(used)f(in)g(visible)150 5340 y(sp)s(ectroscop)m(y)-8
-b(,)32 b(microns:)p eop end
-%%Page: 46 48
-TeXDict begin 46 47 bop 150 -116 a FD(46)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(\045)47 b(ncks)g(-C)g(-H)g(-v)
-h(wvl)f(-d)g(wvl,"0.4)e(micron","0.7)g(micron")h(in.nc)390
-408 y(wvl[0]=5e-07)e(meter)150 591 y FD(The)36 b(h)m(yp)s(erslab)g
-(returns)g(the)h(correct)h(v)-5 b(alues)37 b(b)s(ecause)g(the)g
-Fz(wvl)j FD(v)-5 b(ariable)38 b(is)f(stored)g(on)g(disk)f(with)150
-701 y(a)45 b(length)h(dimension)e(that)h(UDUnits)h(recognizes)h(in)d
-(the)h Fy(units)f FD(attribute.)85 b(The)44 b(automagical)150
-810 y(algorithm)h(that)f(implemen)m(ts)g(this)g(functionalit)m(y)h(is)f
-(w)m(orth)g(describing)f(since)h(understanding)e(it)150
-920 y(helps)36 b(one)h(a)m(v)m(oid)i(some)e(p)s(oten)m(tial)h
-(pitfalls.)61 b(First,)39 b(the)e(user)f(includes)g(the)h(ph)m(ysical)h
-(units)e(of)h(the)150 1029 y(h)m(yp)s(erslab)23 b(dimensions)h(she)g
-(supplies,)h(separated)g(b)m(y)g(a)g(simple)f(space)h(from)f(the)h(n)m
-(umerical)g(v)-5 b(alues)25 b(of)150 1139 y(the)k(h)m(yp)s(erslab)g
-(limits.)41 b(She)28 b(encloses)j(eac)m(h)f(co)s(ordinate)g(sp)s
-(eci\014cations)g(in)f(quotes)h(so)f(that)h(the)g(shell)150
-1249 y(do)s(es)h(not)g(break)g(the)g Fr(value-sp)-5 b(ac)g(e-unit)40
-b FD(string)31 b(in)m(to)h(separate)g(argumen)m(ts)g(b)s(efore)e
-(passing)h(them)g(to)150 1358 y FC(NCO)p FD(.)37 b(Double)h(quotes)g
-(\()p Fy(")p Fq(foo)p Fy(")p FD(\))f(or)h(single)g(quotes)g(\()p
-Fq('foo')p FD(\))f(are)h(equally)g(v)-5 b(alid)38 b(for)f(this)g(purp)s
-(ose.)150 1468 y(Second,)23 b FC(NCO)f FD(recognizes)h(that)f(units)f
-(translation)i(is)f(requested)f(b)s(ecause)h(eac)m(h)h(h)m(yp)s(erslab)
-d(argumen)m(t)150 1577 y(con)m(tains)31 b(text)f(c)m(haracters)h(and)e
-(non-initial)i(spaces.)41 b(Third,)28 b FC(NCO)i FD(determines)f
-(whether)g(the)h Fz(wvl)j FD(is)150 1687 y(dimensioned)24
-b(with)h(a)g(co)s(ordinate)h(v)-5 b(ariable)25 b(that)h(has)e(a)i
-Fy(units)d FD(attribute.)40 b(In)24 b(this)h(case,)i
-Fz(wvl)h FD(itself)e(is)150 1797 y(a)31 b(co)s(ordinate)g(v)-5
-b(ariable.)41 b(The)30 b(v)-5 b(alue)31 b(of)f(its)h
-Fy(units)d FD(attribute)j(is)g Fy(meter)p FD(.)39 b(Th)m(us)29
-b Fz(wvl)34 b FD(passes)c(this)g(test)150 1906 y(so)25
-b(UDUnits)g(con)m(v)m(ersion)h(is)e(attempted.)40 b(If)24
-b(the)h(co)s(ordinate)g(asso)s(ciated)h(with)e(the)h(v)-5
-b(ariable)25 b(do)s(es)g(not)150 2016 y(con)m(tain)31
-b(a)f Fy(units)e FD(attribute,)j(then)e FC(NCO)g FD(ab)s(orts.)40
-b(F)-8 b(ourth,)30 b FC(NCO)g FD(passes)f(the)h(sp)s(eci\014ed)f(and)f
-(desired)150 2125 y(dimension)34 b(strings)h(\(microns)g(are)g(sp)s
-(eci\014ed)f(b)m(y)h(the)g(user,)h(meters)f(are)g(required)f(b)m(y)h
-FC(NCO)p FD(\))g(to)h(the)150 2235 y(UDUnits)e(library)-8
-b(.)51 b(Fifth,)35 b(the)f(UDUnits)g(library)g(that)g(these)g
-(dimension)f(are)h(commensurate)h(and)150 2345 y(it)30
-b(returns)e(the)i(appropriate)f(linear)h(scaling)g(factors)h(to)f(con)m
-(v)m(ert)h(from)e(microns)g(to)h(meters)g(to)g FC(NCO)p
-FD(.)150 2454 y(If)d(the)g(units)g(are)g(incommensurate)h(\(i.e.,)h
-(not)f(expressible)f(in)g(the)g(same)h(fundamen)m(tal)f(MKS)g(units\),)
-150 2564 y(or)41 b(are)h(not)f(listed)h(in)f(the)g(UDUnits)h(database,)
-j(then)c(NCO)f(ab)s(orts)h(since)g(it)h(cannot)g(determine)150
-2673 y(the)37 b(user's)f(in)m(ten)m(t.)61 b(Finally)-8
-b(,)39 b FC(NCO)e FD(uses)f(the)h(scaling)h(information)f(to)g(con)m(v)
-m(ert)h(the)f(user-sp)s(eci\014ed)150 2783 y(h)m(yp)s(erslab)22
-b(limits)i(in)m(to)h(the)e(same)h(ph)m(ysical)g(dimensions)e(as)i
-(those)g(of)f(the)h(corresp)s(onding)e(co)s(oridinate)150
-2892 y(v)-5 b(ariable)36 b(on)f(disk.)56 b(A)m(t)36 b(this)f(p)s(oin)m
-(t,)i FC(NCO)e FD(can)h(p)s(erform)e(a)i(co)s(ordinate)g(h)m(yp)s
-(erslab)e(using)h(the)h(same)150 3002 y(algorithm)31
-b(as)g(if)f(the)h(user)f(had)f(sp)s(eci\014ed)h(the)h(h)m(yp)s(erslab)e
-(without)h(requesting)h(units)f(con)m(v)m(ersion.)275
-3185 y(The)d(translation)i(and)e(dimensional)h(inn)m(terpretation)g(of)
-g(time)h(co)s(ordinates)f(sho)m(ws)g(a)g(more)g(p)s(o)m(w-)150
-3294 y(erful,)d(and)e(probably)g(more)h(common,)i(UDUnits)f
-(application.)39 b(In)24 b(this)f(example,)j(the)f(user)e(prin)m(ts)g
-(all)150 3404 y(data)29 b(b)s(et)m(w)m(een)f(4)j(PM)d(and)f(7)k(PM)d
-(on)f(Decem)m(b)s(er)32 b(8,)d(1999,)h(from)d(a)i(v)-5
-b(ariable)28 b(whose)g(time)h(dimension)150 3513 y(is)h(hours)g(since)g
-(the)h(y)m(ear)g(1900:)390 3696 y Fy(\045)47 b(ncks)g(-u)g(-H)g(-C)h
-(-v)f(time_udunits)d(-d)j(time_udunits,"1999-12-08)42
-b(\\)485 3806 y(16:00:0.0","1999-12-08)g(19:00:0.0")j(in.nc)390
-3915 y(time_udunits[1]=876018)d(hours)k(since)g(1900-01-01)f(00:00:0.0)
-150 4098 y FD(Here,)23 b(the)e(user)f(in)m(v)m(ok)m(es)i(the)f(stride)g
-(\(see)g(Section)g(3.15)i([Stride],)f(page)g(40\))f(capabilit)m(y)i(to)
-e(obtain)g(ev)m(ery)150 4208 y(other)31 b(timeslice.)42
-b(This)30 b(is)g(p)s(ossible)g(b)s(ecause)h(the)f(UDUnits)h(feature)g
-(is)g(additiv)m(e,)g(not)g(exclusiv)m(e|it)150 4317 y(w)m(orks)g(in)h
-(conjunction)f(with)g(all)i(other)e(h)m(yp)s(erslabbing)f(\(see)j
-(Section)f(3.14)h([Hyp)s(erslabs],)f(page)g(39\))150
-4427 y(options)38 b(and)f(in)h(all)g(op)s(erators)g(whic)m(h)g(supp)s
-(ort)e(h)m(yp)s(erslabbing.)61 b(The)38 b(follo)m(wing)h(example)f(sho)
-m(ws)150 4536 y(ho)m(w)30 b(one)h(migh)m(t)g(a)m(v)m(erage)i(data)e(in)
-f(a)h(time)g(p)s(erio)s(d)e(spread)h(across)h(m)m(ultiple)g(input)e
-(\014les)390 4719 y Fy(ncra)47 b(-d)g(time,"1939-09-09)c
-(12:00:0.0","1945-05-08)f(00:00:0.0")j(\\)485 4829 y(in1.nc)i(in2.nc)f
-(in3.nc)g(out.nc)150 5011 y FD(Note)34 b(that)g(there)g(is)f(no)g
-(excess)h(whitespace)g(b)s(efore)e(or)h(after)h(the)f(individual)g
-(elemen)m(ts)h(of)g(the)f(`)p Fy(-d)p FD(')150 5121 y(argumen)m(t.)40
-b(This)27 b(is)g(imp)s(ortan)m(t)g(since,)i(as)e(far)h(as)f(the)h
-(shell)f(kno)m(ws,)h(`)p Fy(-d)p FD(')f(tak)m(es)i(only)e
-Fr(one)35 b FD(command-)150 5230 y(line)21 b(argumen)m(t.)38
-b(P)m(arsing)22 b(this)e(argumen)m(t)i(in)m(to)g(its)f(comp)s(onen)m(t)
-g Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g Fy(][,[)p
-Fq(st)o(ride)f Fy(]])o(])150 5340 y FD(elemen)m(ts)29
-b(\(see)f(Section)h(3.14)g([Hyp)s(erslabs],)f(page)g(39\))h(is)e(the)h
-(job)f(of)h FC(NCO)p FD(.)g(When)f(unquoted)g(white-)p
-eop end
-%%Page: 47 49
-TeXDict begin 47 48 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(47)150 299 y(space)36
-b(is)f(presen)m(t)g(b)s(et)m(w)m(een)g(these)h(elemen)m(ts,)h(the)f
-(shell)f(passes)g FC(NCO)f FD(arugmen)m(t)i(fragmen)m(ts)f(whic)m(h)150
-408 y(will)c(not)f(parse)g(as)h(in)m(tended.)275 572
-y FC(NCO)g FD(implemen)m(ted)h(supp)s(ort)d(for)i(the)h(UDUnits2)g
-(library)f(with)h(v)m(ersion)f(3.9.2)j(\(August,)e(2007\).)150
-682 y(The)3045 b(UDUnits2)150 791 y(\()p Fy(http://www.unidata.ucar.ed)
-o(u/s)o(oftw)o(are/)o(udu)o(nits)o(/udu)o(nit)o(s-2/)o(udun)o(its)o
-(2.ht)o(ml)p FD(\))66 b(pac)m(k-)150 901 y(age)49 b(supp)s(orts)d
-(non-ASCI)s(I)h(c)m(haracters)i(and)e(logarithmic)j(units.)93
-b(W)-8 b(e)49 b(are)g(in)m(terested)g(in)e(user-)150
-1011 y(feedbac)m(k)31 b(on)f(these)h(features.)275 1174
-y(One)k(asp)s(ect)h(that)h(deserv)m(es)f(men)m(tion)h(is)f(that)g
-(UDUnits,)j(and)c(th)m(us)g FC(NCO)p FD(,)h(supp)s(orts)e(run-time)150
-1284 y(de\014nition)42 b(of)g(the)h(lo)s(cation)h(of)e(the)h(relev)-5
-b(an)m(t)43 b(UDUnits)g(databases.)78 b(With)42 b(UDUnits)h(v)m(ersion)
-31 b(1)q(,)150 1394 y(users)g(ma)m(y)i(sp)s(ecify)f(the)g(directory)g
-(whic)m(h)g(con)m(tains)h(the)g(UDUnits)f(database,)i(`)p
-Fy(udunits.dat)p FD(',)c(via)150 1503 y(the)35 b Fy(UDUNITS_PATH)d
-FD(en)m(vironmen)m(t)k(v)-5 b(ariable.)57 b(With)35 b(UDUnits)h(v)m
-(ersion)31 b(2)q(,)36 b(users)f(ma)m(y)h(sp)s(ecify)f(the)150
-1613 y(UDUnits)46 b(database)g(\014le)g(itself,)k(`)p
-Fy(udunits2.xml)p FD(',)c(via)g(the)g Fy(UDUNITS2_XML_PATH)40
-b FD(en)m(vironmen)m(t)150 1722 y(v)-5 b(ariable.)390
-1886 y Fy(export)46 b(UDUNITS_PATH='/nonstandar)o(d/l)o(ocat)o(ion/)o
-(sha)o(re/u)o(duni)o(ts')41 b(#)48 b(UDUnits1)390 1996
-y(export)e(UDUNITS2_XML_PATH='/nonst)o(and)o(ard/)o(loca)o(tio)o(n/sh)o
-(are/)o(udu)o(nits)o(/udu)o(nit)o(s2.x)o(ml')41 b(#)48
-b(UDUnits2)275 2159 y FD(This)20 b(run-time)h(\015exibilit)m(y)h(can)g
-(enable)f(the)h(full)f(functionalit)m(y)h(of)g(pre-built)e(binaries)h
-(on)g(mac)m(hines)150 2269 y(with)30 b(libraries)h(in)f(di\013eren)m(t)
-g(lo)s(cations.)275 2433 y(The)24 b(UDUnits)i(\()p Fy
-(http://www.unidata.ucar.edu)o(/pac)o(kag)o(es/u)o(duni)o(ts)p
-FD(\))19 b(pac)m(k)-5 b(age)28 b(do)s(cumen-)150 2542
-y(tation)45 b(describ)s(es)e(the)h(supp)s(orted)e(formats)i(of)g(time)h
-(dimensions.)80 b(Among)44 b(the)g(metadata)h(con-)150
-2652 y(v)m(en)m(tions)c(whic)m(h)f(adhere)f(to)i(these)f(formats)g(are)
-h(the)f(Climate)h(and)e(F)-8 b(orecast)42 b(\(CF\))f(Con)m(v)m(en)m
-(tions)150 2762 y(\()p Fy(http://cf-pcmdi.llnl.gov)p
-FD(\))46 b(and)52 b(the)h(Co)s(op)s(erativ)m(e)g(Ocean/A)m(tmosphere)h
-(Researc)m(h)f(Data)150 2871 y(Service)48 b(\(CO)m(ARDS\))h(Con)m(v)m
-(en)m(tions)g(\()p Fy(http://ferret.wrc.noaa.gov)o(/noa)o(a_co)o(op/)o
-(coop)o(_cdf)o(_)150 2981 y(profile.html)p FD(\).)85
-b(The)45 b(follo)m(wing)j(`)p Fy(-d)30 b(arguments)p
-FD(')44 b(extract)j(the)g(same)f(data)h(using)e(commonly)150
-3090 y(encoun)m(tered)31 b(time)g(dimension)f(formats:)390
-3254 y Fy(-d)47 b(time,"1918-11-11)d(11:00:0.0","1939-09-09)d
-(00:00:0.0")150 3418 y FD(All)30 b(of)f(these)h(formats)f(include)g(at)
-h(least)g(one)g(dash)e Fq(-)h FD(in)g(a)g(non-leading)h(c)m(haracter)h
-(p)s(osition)e(\(a)h(dash)150 3527 y(in)d(a)h(leading)h(c)m(haracter)g
-(p)s(osition)e(is)h(a)g(negativ)m(e)i(sign\).)40 b FC(NCO)27
-b FD(assumes)g(that)h(a)g(non-leading)g(dash)f(in)150
-3637 y(a)k(limit)g(string)f(indicates)i(that)f(a)f(UDUnits)h(date)g
-(con)m(v)m(ersion)h(is)e(requested.)150 3801 y(As)c(of)f(v)m(ersion)h
-(4.0.0)i(\(Jan)m(uary)-8 b(,)27 b(2010\),)i FC(NCO)c
-FD(supp)s(orts)f(some)i(calendar)g(attributes)g(sp)s(eci\014ed)f(b)m(y)
-h(the)150 3910 y(CF)k(con)m(v)m(en)m(tions.)150 4103
-y Fk(Supp)s(orted)f(t)m(yp)s(es:)630 4213 y Fy(")p FD(365)p
-819 4213 28 4 v 41 w(da)m(y)p Fy(")p FD(/)p Fy(")p FD(noleap)p
-Fy(")p FD(,)i Fy(")p FD(360)p 1686 4213 V 41 w(da)m(y)p
-Fy(")p FD(,)g Fy(")p FD(gregorian)p Fy(")p FD(,)g Fy(")p
-FD(standard)p Fy(")150 4381 y Fk(Unsupp)s(orted)d(t)m(yp)s(es:)630
-4491 y Fy(")p FD(366)p 819 4491 V 41 w(da)m(y)p Fy(")p
-FD(/)p Fy(")p FD(all)p 1237 4491 V 41 w(leap)p Fy(")p
-FD(,)p Fy(")p FD(proleptic)p 1908 4491 V 41 w(gregorian)p
-Fy(")p FD(,)p Fy(")p FD(julian)p Fy(")p FD(,)p Fy(")p
-FD(none)p Fy(")275 4684 y FD(Unsupp)s(orted)g(t)m(yp)s(es)i(default)h
-(to)g(mixed)f(Gregorian/Julian)i(as)e(de\014ned)f(b)m(y)i(UDUnits.)150
-4847 y(An)f(Example:)41 b(Consider)29 b(the)i(follo)m(wing)h(netCDF)f
-(v)-5 b(ariable)390 5011 y Fy(variables:)485 5121 y(double)47
-b(lon_cal\(lon_cal\))c(;)581 5230 y(lon_cal:long_name)g(=)k("lon_cal")f
-(;)581 5340 y(lon_cal:units)e(=)k("days)e(since)g(1964-2-28)g(0:0:0")g
-(;)p eop end
-%%Page: 48 50
-TeXDict begin 48 49 bop 150 -116 a FD(48)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)581 299 y Fy(lon_cal:calendar)43
-b(=)48 b("365_day")d(;)390 408 y(data:)485 518 y(lon_cal)h(=)i
-(1,2,3,4,5,6,7,8,9,10;)390 737 y(So)f(the)g(command)390
-847 y("ncks)f(-v)i(lon_cal)d(-d)j(lon_cal,'1964-3-1)43
-b(0:00:0.0','1964-3-4)f(00:00:0.0')j(in.nc)i(out.nc")390
-956 y(Results)f(in)h(the)g(hyperslab)e(lon_cal=1,2,3,4)275
-1121 y FD(netCDF)33 b(v)-5 b(ariables)34 b(should)e(alw)m(a)m(ys)j(b)s
-(e)d(stored)h(with)g(MKS)g(\(i.e.,)i(Go)s(d's\))e(units,)h(so)f(that)h
-(appli-)150 1230 y(cation)g(programs)f(ma)m(y)g(assume)g(MKS)f
-(dimensions)g(apply)g(to)i(all)f(input)f(v)-5 b(ariables.)49
-b(The)32 b(UDUnits)150 1340 y(feature)g(is)g(in)m(tended)f(to)i
-(alleviate)h(some)e(of)g(the)g FC(NCO)f FD(user's)g(pain)g(when)g
-(handling)g(MKS)g(units.)44 b(It)150 1449 y(connects)38
-b(users)e(who)g(think)h(in)f(h)m(uman-friendly)g(units)g(\(e.g.,)k
-(miles,)g(millibars,)e(da)m(ys\))g(to)f(extract)150 1559
-y(data)h(whic)m(h)g(are)g(alw)m(a)m(ys)h(stored)e(in)h(Go)s(d's)f
-(units,)i(MKS)e(\(e.g.,)42 b(meters,)e(P)m(ascals,)h(seconds\).)62
-b(The)150 1668 y(feature)35 b(is)f(not)h(in)m(tended)f(to)h(encourage)h
-(writers)e(to)h(store)g(data)g(in)f(esoteric)i(units)e(\(e.g.,)j
-(furlongs,)150 1778 y(p)s(ounds)28 b(p)s(er)i(square)g(inc)m(h,)g
-(fortnigh)m(ts\).)150 2025 y FB(3.20)68 b(Rebasing)46
-b(Time)g(Co)t(ordinate)150 2104 y Fm(\013)p 200 2104
-3554 4 v 3553 w(\010)p 150 2374 4 223 v 178 2240 a FD(Av)-5
-b(ailabilit)m(y:)43 b Fy(ncra)p FD(,)30 b Fy(ncrcat)f
-FD(Short)g(options:)41 b(None)p 3803 2374 V 150 2426
-a Fm(\012)p 200 2426 3554 4 v 3553 w(\011)275 2601 y
-FD(Time)28 b(re-basing)h(is)f(p)s(erformed)f(automatically)k(when)d
-(UDUnits)h(is)f(installed.)41 b(Time)29 b(rebasing)f(is)150
-2710 y(in)m(v)m(ok)m(ed)h(when)e(n)m(umerous)f(\014les)i(share)f(a)h
-(common)g(time-based)g(record)g(co)s(ordinate,)h(and)e(the)h(record)150
-2820 y(co)s(ordinate)40 b(is)g(in)f(the)g(same)h(time)g(units)f(in)g
-(eac)m(h)i(\014le,)h(but)d(the)g(date)h(o\013set)h(di\013ers)e(among)h
-(\014les.)150 2930 y(F)-8 b(or)40 b(example)h(supp)s(ose)d(the)i(time)g
-(co)s(ordinate)g(is)g(in)f(hours)g(and)g(eac)m(h)i(da)m(y)f(in)f(Jan)m
-(uary)g(is)h(stored)150 3039 y(in)35 b(its)h(o)m(wn)f(daily)h(\014le.)
-56 b(Eac)m(h)36 b(daily)g(\014le)g(records)f(the)h(temp)s(erature)f(v)
--5 b(ariable)36 b Fy(tpt\(time\))d FD(with)i(an)150 3149
-y(\(unadjusted\))f Fy(time)h FD(co)s(ordinate)h(v)-5
-b(alue)36 b(b)s(et)m(w)m(een)g(0{23)h(hours,)f(and)f(uses)g(the)g
-Fy(units)f FD(attribute)i(to)150 3258 y(adv)-5 b(ance)31
-b(the)g(base)f(time:)390 3422 y Fy(file01.nc)45 b(time:units="hours)e
-(since)k(1990-1-1")390 3532 y(file02.nc)e(time:units="hours)e(since)k
-(1990-1-2")390 3642 y(...)390 3751 y(file31.nc)e(time:units="hours)e
-(since)k(1990-1-31")390 3915 y(//)g(Find)g(mean)f(noontime)g
-(temperature)f(in)i(January)390 4025 y(ncra)g(-v)g(tpt)g(-d)g
-(time,"1990-1-1)d(12:00:00","1990-1-31)e(23:59:59",24)j(\\)676
-4134 y(file??.nc)h(noon.nc)390 4354 y(//)h(Concatenate)e(day2)i(noon)f
-(through)g(day3)h(noon)f(records)390 4463 y(ncrcat)g(-v)h(tpt)g(-d)g
-(time,"1990-1-2)d(12:00:00","1990-1-3)f(11:59:59")i(\\)676
-4573 y(file01.nc)h(file02.nc)f(file03.nc)g(noon.nc)390
-4792 y(//)i(Results:)f(time)g(is)i("re-based")d(to)i(the)g(time)f
-(units)h(in)g("file01.nc")390 4902 y(time=36,)f(37,)g(38,)h(39,)g(40,)g
-(41,)g(42,)g(43,)g(44,)g(45,)g(46,)g(47,)g(48,)f(49,)h(50,)g(51,)g(52,)
-629 5011 y(53,)g(54,)f(55,)h(56,)g(57,)g(58,)g(59)g(;)390
-5230 y(//)g(If)g(we)h(repeat)e(the)h(above)f(command)g(but)h(with)f
-(only)h(two)g(input)f(files...)390 5340 y(ncrcat)g(-v)h(tpt)g(-d)g
-(time,"1990-1-2)d(12:00:00","1990-1-3)f(11:59:59")i(\\)p
-eop end
-%%Page: 49 51
-TeXDict begin 49 50 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(49)676 299 y Fy(file02.nc)46
-b(file03)g(noon.nc)390 518 y(//)h(...then)f(the)h(output)f(time)h
-(coordinate)e(is)i(based)f(on)h(the)g(time)g(units)f(in)h("file02.nc")
-390 628 y(time)g(=)g(12,)g(13,)g(14,)g(15,)g(16,)g(17,)g(18,)f(19,)h
-(20,)g(21,)g(22,)g(23,)g(24,)g(25,)g(26,)g(27,)g(28,)581
-737 y(29,)g(30,)g(31,)g(32,)g(33,)f(34,)h(35)h(;)150
-969 y FB(3.21)68 b(Missing)46 b(v)-7 b(alues)150 1053
-y Fm(\013)p 200 1053 3554 4 v 3553 w(\010)p 150 1433
-4 333 v 178 1189 a FD(Av)i(ailabilit)m(y:)43 b Fy(ncap2)p
-FD(,)30 b Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h Fy(ncflint)p
-FD(,)e Fy(ncpdq)p FD(,)h Fy(ncra)p FD(,)h Fy(ncwa)178
-1299 y FD(Short)g(options:)41 b(None)p 3803 1433 V 150
-1485 a Fm(\012)p 200 1485 3554 4 v 3553 w(\011)275 1655
-y FD(The)25 b(phrase)h Fz(missing)g(data)h FD(refers)f(to)g(data)h(p)s
-(oin)m(ts)f(that)h(are)g(missing,)g(in)m(v)-5 b(alid,)28
-b(or)e(for)g(an)m(y)h(reason)150 1765 y(not)36 b(in)m(tended)g(to)h(b)s
-(e)f(arithmetically)i(pro)s(cessed)e(in)f(the)i(same)f(fashion)g(as)g
-(v)-5 b(alid)37 b(data.)59 b(The)35 b FC(NCO)150 1874
-y FD(arithmetic)j(op)s(erators)f(attempt)g(to)h(handle)e(missing)g
-(data)h(in)g(an)f(in)m(telligen)m(t)j(fashion.)59 b(There)37
-b(are)150 1984 y(four)30 b(steps)g(in)g(the)h FC(NCO)f
-FD(treatmen)m(t)i(of)e(missing)g(data:)199 2143 y(1.)61
-b(Iden)m(tifying)31 b(v)-5 b(ariables)31 b(that)g(ma)m(y)g(con)m(tain)g
-(missing)g(data.)330 2278 y FC(NCO)40 b FD(follo)m(ws)h(the)g(con)m(v)m
-(en)m(tion)h(that)f(missing)f(data)h(should)e(b)s(e)h(stored)g(with)g
-(the)p 3359 2278 28 4 v 81 w Fz(FillV)-8 b(alue)330 2387
-y FD(sp)s(eci\014ed)33 b(in)f(the)i(v)-5 b(ariable's)34
-b Fy(_FillValue)c FD(attributes.)50 b(The)33 b Fr(only)42
-b FD(w)m(a)m(y)34 b FC(NCO)f FD(recognizes)i(that)330
-2497 y(a)d(v)-5 b(ariable)33 b Fr(may)41 b FD(con)m(tain)34
-b(missing)e(data)g(is)g(if)h(the)f(v)-5 b(ariable)33
-b(has)e(a)i Fy(_FillValue)c FD(attribute.)47 b(In)330
-2606 y(this)36 b(case,)i(an)m(y)f(elemen)m(ts)g(of)f(the)g(v)-5
-b(ariable)37 b(whic)m(h)e(are)i(n)m(umerically)f(equal)h(to)g(the)p
-3359 2606 V 76 w Fz(FillV)-8 b(alue)330 2716 y FD(are)31
-b(treated)g(as)g(missing)f(data.)330 2850 y FC(NCO)g
-FD(adopted)g(the)g(b)s(eha)m(vior)g(that)h(the)f(default)h(attribute)f
-(name,)h(if)f(an)m(y)-8 b(,)31 b(assumed)e(to)i(sp)s(ecify)330
-2960 y(the)h(v)-5 b(alue)33 b(of)f(data)h(to)g(ignore)f(is)g
-Fy(_FillValue)e FD(with)h(v)m(ersion)i(3.9.2)h(\(August,)f(2007\).)47
-b(Prior)32 b(to)330 3070 y(that,)39 b(the)e Fy(missing_value)c
-FD(attribute,)39 b(if)d(an)m(y)-8 b(,)39 b(w)m(as)e(assumed)f(to)h(sp)s
-(ecify)g(the)f(v)-5 b(alue)38 b(of)e(data)330 3179 y(to)e(ignore.)48
-b(Supp)s(orting)31 b(b)s(oth)i(of)g(these)g(attributes)g(sim)m
-(ultaneously)h(is)f(not)g(practical.)50 b(Hence)330 3289
-y(the)26 b(b)s(eha)m(vior)h FC(NCO)f FD(once)g(applied)g(to)h
-Fz(missing)p 1986 3289 V 40 w(v)-5 b(alue)32 b FD(it)27
-b(no)m(w)f(applies)g(to)h(an)m(y)p 3108 3289 V 67 w Fz(FillV)-8
-b(alue)p FD(.)41 b FC(NCO)330 3398 y FD(no)m(w)30 b(treats)i(an)m(y)e
-Fz(missing)p 1249 3398 V 40 w(v)-5 b(alue)36 b FD(as)31
-b(normal)f(data)2119 3365 y Fw(11)2190 3398 y FD(.)330
-3533 y(It)43 b(has)f(b)s(een)h(and)f(remains)g(most)i(advisable)f(to)h
-(create)g(b)s(oth)e Fy(_FillValue)e FD(and)i Fy(missing_)330
-3642 y(value)30 b FD(attributes)i(with)g(iden)m(tical)h(v)-5
-b(alues)32 b(in)f(datasets.)46 b(Man)m(y)33 b(legacy)g(datasets)g(con)m
-(tain)g(only)330 3752 y Fy(missing_value)h FD(attributes.)63
-b FC(NCO)37 b FD(can)h(help)g(migrating)g(datasets)h(b)s(et)m(w)m(een)f
-(these)g(con)m(v)m(en-)330 3861 y(tions.)g(One)22 b(ma)m(y)g(use)g
-Fy(ncrename)e FD(\(see)j(Section)f(4.11)i([ncrename)e(netCDF)g
-(Renamer],)j(page)d(153\))330 3971 y(to)31 b(rename)g(all)g
-Fy(missing_value)c FD(attributes)k(to)g Fy(_FillValue)p
-FD(:)570 4105 y Fy(ncrename)46 b(-a)h(.missing_value,_FillVal)o(ue)42
-b(inout.nc)330 4240 y FD(Alternativ)m(ely)-8 b(,)26 b(one)c(ma)m(y)h
-(use)e Fy(ncatted)f FD(\(see)i(Section)h(4.2)g([ncatted)g(netCDF)f(A)m
-(ttribute)g(Editor],)330 4349 y(page)31 b(118\))h(to)f(add)f(a)h
-Fy(_FillValue)c FD(attribute)k(to)h(all)f(v)-5 b(ariables)570
-4484 y Fy(ncatted)46 b(-O)h(-a)g(_FillValue,,o,f,1.0e36)42
-b(inout.nc)199 4618 y FD(2.)61 b(Con)m(v)m(erting)31
-b(the)p 960 4618 V 71 w Fz(FillV)-8 b(alue)38 b FD(to)31
-b(the)f(t)m(yp)s(e)h(of)f(the)h(v)-5 b(ariable,)31 b(if)g(neccessary)-8
-b(.)330 4752 y(Consider)27 b(a)h(v)-5 b(ariable)29 b
-Fz(v)-5 b(ar)34 b FD(of)29 b(t)m(yp)s(e)f Fz(v)-5 b(ar)p
-1711 4752 V 40 w(t)m(yp)s(e)33 b FD(with)27 b(a)i Fy(_FillValue)c
-FD(attribute)j(of)h(t)m(yp)s(e)f Fz(att)p 3541 4752 V
-41 w(t)m(yp)s(e)330 4862 y FD(con)m(taining)33 b(the)g(v)-5
-b(alue)p 1174 4862 V 72 w Fz(FillV)d(alue)p FD(.)48 b(As)31
-b(a)i(guideline,)g(the)f(t)m(yp)s(e)g(of)g(the)g Fy(_FillValue)d
-FD(attribute)330 4971 y(should)37 b(b)s(e)h(the)g(same)g(as)h(the)f(t)m
-(yp)s(e)g(of)h(the)f(v)-5 b(ariable)39 b(it)g(is)f(attac)m(hed)i(to.)65
-b(If)37 b Fz(v)-5 b(ar)p 3253 4971 V 40 w(t)m(yp)s(e)44
-b FD(equals)p 150 5066 1200 4 v 166 5134 a Fw(11)303
-5166 y Fu(The)29 b(old)g(functionalit)n(y)-6 b(,)30 b(i.e.,)h(where)e
-(the)f(ignored)i(v)l(alues)e(are)i(indicated)f(b)n(y)e
-Ft(missing_value)32 b Fu(not)c Ft(_FillValue)p Fu(,)275
-5253 y(ma)n(y)38 b(still)i(b)r(e)f(selected)h Fl(at)g
-Fj(NCO)f Fl(build)h(time)k Fu(b)n(y)38 b(compiling)i
-Fs(NCO)f Fu(with)g(the)g(tok)n(en)f(de\014nition)g Fi(CPPFLAGS='-)275
-5340 y(DNCO_MSS_VAL_SNG=missing_value')q Fu(.)p eop end
-%%Page: 50 52
-TeXDict begin 50 51 bop 150 -116 a FD(50)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)330 299 y Fz(att)p 451 299
-28 4 v 41 w(t)m(yp)s(e)39 b FD(then)33 b FC(NCO)g FD(straigh)m(tforw)m
-(ardly)i(compares)f(eac)m(h)g(v)-5 b(alue)34 b(of)g Fz(v)-5
-b(ar)40 b FD(to)p 3085 299 V 74 w Fz(FillV)-8 b(alue)41
-b FD(to)34 b(de-)330 408 y(termine)39 b(whic)m(h)f(elemen)m(ts)i(of)e
-Fz(v)-5 b(ar)45 b FD(are)39 b(to)h(b)s(e)d(treated)j(as)f(missing)f
-(data.)66 b(If)38 b(not,)j(then)d FC(NCO)330 518 y FD(con)m(v)m(erts)p
-701 518 V 79 w Fz(FillV)-8 b(alue)45 b FD(from)37 b Fz(att)p
-1477 518 V 42 w(t)m(yp)s(e)43 b FD(to)38 b Fz(v)-5 b(ar)p
-1978 518 V 40 w(t)m(yp)s(e)43 b FD(b)m(y)38 b(using)f(the)h(implicit)g
-(con)m(v)m(ersion)h(rules)330 628 y(of)31 b(C)o(,)25
-b(or,)g(if)e Fz(att)p 877 628 V 41 w(t)m(yp)s(e)28 b
-FD(is)23 b Fy(NC_CHAR)1534 595 y Fw(12)1603 628 y FD(,)h(b)m(y)f(t)m
-(yp)s(ecasting)i(the)e(results)g(of)g(the)g(C)30 b(function)23
-b Fy(strtod\()p Fq(_)330 737 y(FillValue)11 b Fy(\))p
-FD(.)45 b(Y)-8 b(ou)33 b(ma)m(y)g(use)g(the)g FC(NCO)f
-FD(op)s(erator)i Fy(ncatted)c FD(to)k(c)m(hange)g(the)f
-Fy(_FillValue)d FD(at-)330 847 y(tribute)i(and)g(all)h(data)g(whose)f
-(data)h(is)p 1730 847 V 72 w Fz(FillV)-8 b(alue)40 b
-FD(to)33 b(a)g(new)e(v)-5 b(alue)33 b(\(see)g(Section)g(4.2)h([ncatted)
-330 956 y(netCDF)d(A)m(ttribute)g(Editor],)g(page)g(118\).)199
-1191 y(3.)61 b(Iden)m(tifying)31 b(missing)f(data)h(during)e
-(arithmetic)j(op)s(erations.)330 1426 y(When)41 b(an)h
-FC(NCO)f FD(arithmetic)h(op)s(erator)g(pro)s(cesses)f(a)h(v)-5
-b(ariable)42 b Fz(v)-5 b(ar)48 b FD(with)41 b(a)h Fy(_FillValue)d
-FD(at-)330 1536 y(tribute,)g(it)f(compares)g(eac)m(h)h(v)-5
-b(alue)38 b(of)g Fz(v)-5 b(ar)43 b FD(to)p 2029 1536
-V 79 w Fz(FillV)-8 b(alue)45 b FD(b)s(efore)37 b(p)s(erforming)f(an)h
-(op)s(eration.)330 1645 y(Note)26 b(the)p 700 1645 V
-64 w Fz(FillV)-8 b(alue)31 b FD(comparison)25 b(imp)s(oses)f(a)g(p)s
-(erformance)g(p)s(enalt)m(y)g(on)g(the)h(op)s(erator.)39
-b(Arith-)330 1755 y(metic)24 b(pro)s(cessing)f(of)g(v)-5
-b(ariables)24 b(whic)m(h)e(con)m(tain)j(the)e Fy(_FillValue)d
-FD(attribute)k(alw)m(a)m(ys)g(incurs)e(this)330 1865
-y(p)s(enalt)m(y)-8 b(,)32 b(ev)m(en)g(when)e(none)g(of)h(the)g(data)h
-(are)f(missing.)42 b(Con)m(v)m(ersely)-8 b(,)33 b(arithmetic)f(pro)s
-(cessing)f(of)330 1974 y(v)-5 b(ariables)31 b(whic)m(h)f(do)h(not)f
-(con)m(tain)i(the)f Fy(_FillValue)c FD(attribute)k(nev)m(er)g(incurs)f
-(this)g(p)s(enalt)m(y)-8 b(.)42 b(In)330 2084 y(other)25
-b(w)m(ords,)g(do)f(not)g(attac)m(h)j(a)d Fy(_FillValue)e
-FD(attribute)j(to)g(a)f(v)-5 b(ariable)25 b(whic)m(h)f(do)s(es)g(not)h
-(con)m(tain)330 2193 y(missing)j(data.)40 b(This)27 b(exhortation)i
-(can)f(usually)f(b)s(e)h(ob)s(ey)m(ed)f(for)h(mo)s(del)f(generated)i
-(data,)g(but)e(it)330 2303 y(ma)m(y)j(b)s(e)g(harder)e(to)j(kno)m(w)f
-(in)f(adv)-5 b(ance)31 b(whether)e(all)h(observ)-5 b(ational)32
-b(data)e(will)g(b)s(e)g(v)-5 b(alid)30 b(or)f(not.)199
-2538 y(4.)61 b(T)-8 b(reatmen)m(t)32 b(of)e(an)m(y)h(data)g(iden)m
-(ti\014ed)f(as)h(missing)f(in)g(arithmetic)i(op)s(erators.)330
-2773 y FC(NCO)c FD(a)m(v)m(eragers)j(\()p Fy(ncra)p FD(,)e
-Fy(ncea)p FD(,)f Fy(ncwa)p FD(\))g(do)g(not)h(coun)m(t)h(an)m(y)f
-(elemen)m(t)h(with)f(the)f(v)-5 b(alue)p 3359 2773 V
-70 w Fz(FillV)d(alue)330 2882 y FD(to)m(w)m(ards)35 b(the)f(a)m(v)m
-(erage.)53 b Fy(ncbo)33 b FD(and)g Fy(ncflint)f FD(de\014ne)h(a)p
-2328 2882 V 74 w Fz(FillV)-8 b(alue)41 b FD(result)34
-b(when)f(either)h(of)g(the)330 2992 y(input)27 b(v)-5
-b(alues)28 b(is)g(a)p 1007 2992 V 68 w Fz(FillV)-8 b(alue)p
-FD(.)43 b(Sometimes)28 b(the)p 2076 2992 V 68 w Fz(FillV)-8
-b(alue)35 b FD(ma)m(y)29 b(c)m(hange)g(from)e(\014le)h(to)h(\014le)f
-(in)g(a)330 3102 y(m)m(ulti-\014le)k(op)s(erator,)h(e.g.,)g
-Fy(ncra)p FD(.)43 b FC(NCO)31 b FD(is)g(written)h(to)g(accoun)m(t)h
-(for)e(this)g(\(it)i(alw)m(a)m(ys)g(compares)330 3211
-y(a)g(v)-5 b(ariable)33 b(to)h(the)p 1030 3211 V 73 w
-Fz(FillV)-8 b(alue)40 b FD(assigned)32 b(to)i(that)f(v)-5
-b(ariable)33 b(in)g(the)g(curren)m(t)f(\014le\).)48 b(Su\016ce)32
-b(it)h(to)330 3321 y(sa)m(y)e(that,)g(in)f(all)i(kno)m(wn)d(cases,)j
-FC(NCO)e FD(do)s(es)g(\\the)h(righ)m(t)g(thing".)330
-3556 y(It)22 b(is)g(imp)s(ossible)f(to)h(determine)g(and)g(store)g(the)
-g(correct)h(result)e(of)h(a)g(binary)f(op)s(eration)i(in)e(a)h(single)
-330 3665 y(v)-5 b(ariable.)63 b(One)37 b(suc)m(h)g(corner)g(case)i(o)s
-(ccurs)e(when)g(b)s(oth)f(op)s(erands)h(ha)m(v)m(e)h(di\013ering)p
-3359 3665 V 78 w Fz(FillV)-8 b(alue)330 3775 y FD(attributes,)42
-b(i.e.,)h(attributes)c(with)g(di\013eren)m(t)h(n)m(umerical)f(v)-5
-b(alues.)67 b(Since)39 b(the)h(output)e(\(result\))330
-3884 y(of)c(the)f(op)s(eration)h(can)g(only)f(ha)m(v)m(e)i(one)p
-1767 3884 V 73 w Fz(FillV)-8 b(alue)p FD(,)37 b(some)d(information)f
-(ma)m(y)h(b)s(e)f(lost.)50 b(In)33 b(this)330 3994 y(case,)i
-FC(NCO)e FD(alw)m(a)m(ys)h(de\014nes)e(the)h(output)g(v)-5
-b(ariable)34 b(to)f(ha)m(v)m(e)i(the)e(same)p 2890 3994
-V 73 w Fz(FillV)-8 b(alue)40 b FD(as)34 b(the)f(\014rst)330
-4104 y(input)f(v)-5 b(ariable.)51 b(Prior)33 b(to)h(p)s(erforming)e
-(the)i(arithmetic)g(op)s(eration,)h(all)f(v)-5 b(alues)34
-b(of)f(the)h(second)330 4213 y(op)s(erand)j(equal)h(to)g(the)g(second)p
-1525 4213 V 78 w Fz(FillV)-8 b(alue)45 b FD(are)38 b(replaced)h(with)e
-(the)h(\014rst)p 3064 4213 V 77 w Fz(FillV)-8 b(alue)p
-FD(.)65 b(Then)330 4323 y(the)29 b(arithmetic)i(op)s(eration)e(pro)s
-(ceeds)g(as)g(normal,)h(comparing)f(eac)m(h)h(elemen)m(t)h(of)e(eac)m
-(h)h(op)s(erand)330 4432 y(to)k(a)g(single)p 785 4432
-V 74 w Fz(FillV)-8 b(alue)p FD(.)52 b(Comparing)33 b(eac)m(h)i(elemen)m
-(t)g(to)f(t)m(w)m(o)h(distinct)p 2898 4432 V 73 w Fz(FillV)-8
-b(alue)5 b FD('s)36 b(w)m(ould)e(b)s(e)330 4542 y(m)m(uc)m(h)d(slo)m(w)
-m(er)h(and)f(w)m(ould)f(b)s(e)h(no)g(lik)m(elier)h(to)g(yield)f(a)h
-(more)f(satisfactory)i(answ)m(er.)42 b(In)30 b(practice,)330
-4651 y(judicious)37 b(c)m(hoice)j(of)p 1115 4651 V 78
-w Fz(FillV)-8 b(alue)46 b FD(v)-5 b(alues)38 b(prev)m(en)m(ts)g(an)m(y)
-h(imp)s(ortan)m(t)f(information)g(from)f(b)s(eing)330
-4761 y(lost.)p 150 5241 1200 4 v 166 5308 a Fw(12)275
-5340 y Fu(F)-6 b(or)25 b(example,)h(the)g Fs(DOE)f(ARM)g
-Fu(program)i(often)f(uses)g Fp(att)p 2012 5340 24 4 v
-34 w(t)n(yp)r(e)j Fu(=)c Ft(NC_CHAR)i Fu(and)p 2758 5340
-V 59 w Fp(FillV)-6 b(alue)31 b Fu(=)25 b(`)p Ft(-99999.)p
-Fu('.)p eop end
-%%Page: 51 53
-TeXDict begin 51 52 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(51)150 299 y FB(3.22)68
-b(Ch)l(unking)150 366 y Fm(\013)p 200 366 3554 4 v 3553
-w(\010)p 150 1184 4 771 v 178 502 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncap2)p FD(,)30 b Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h
-Fy(ncecat)p FD(,)f Fy(ncflint)p FD(,)f Fy(ncks)p FD(,)i
-Fy(ncpdq)p FD(,)f Fy(ncra)p FD(,)g Fy(ncrcat)p FD(,)g
-Fy(ncwa)178 611 y FD(Short)h(options:)41 b(none)178 721
-y(Long)31 b(options:)41 b(`)p Fy(--cnk_dmn)28 b Fq(dmn_nm)p
-Fy(,)p Fq(cnk_sz)11 b FD(',)27 b(`)p Fy(--chunk_dimension)f
-Fq(dmn_nm)p Fy(,)p Fq(cnk_sz)11 b FD(')178 831 y(,)31
-b(`)p Fy(--cnk_map)d Fq(cnk_map)11 b FD(',)28 b(`)p Fy(--chunk_map)g
-Fq(cnk_map)11 b FD(',)178 940 y(`)p Fy(--cnk_plc)28 b
-Fq(cnk_plc)11 b FD(',)29 b(`)p Fy(--chunk_policy)d Fq(cnk_plc)11
-b FD(',)178 1050 y(`)p Fy(--cnk_scl)28 b Fq(cnk_sz)11
-b FD(',)29 b(`)p Fy(--chunk_scalar)e Fq(cnk_sz)11 b FD(')p
-3803 1184 V 150 1236 a Fm(\012)p 200 1236 3554 4 v 3553
-w(\011)275 1423 y FD(All)75 b(netCDF4-enabled)h FC(NCO)f
-FD(op)s(erators)f(that)i(de\014ne)e(v)-5 b(ariables)75
-b(supp)s(ort)e(a)i(plethora)150 1533 y(of)63 b(c)m(h)m(unksize)h
-(options.)139 b(Ch)m(unking)62 b(can)h(signi\014can)m(tly)i(accelerate)
-h(or)d(degrade)g(read/write)150 1642 y(access)74 b(to)f(large)h
-(datasets.)169 b(Dataset)75 b(c)m(h)m(unking)e(issues)f(are)h(describ)s
-(ed)f(in)g(detail)i(here)150 1752 y(\()p Fy(http://www.hdfgroup.org/HD)
-o(F5/)o(doc/)o(H5.u)o(ser)o(/Chu)o(nkin)o(g.h)o(tml)p
-FD(\).)275 1928 y(The)23 b FC(NCO)g FD(c)m(h)m(unking)h(implemen)m
-(tation)h(is)f(designed)f(to)h(b)s(e)f(\015exible.)39
-b(Users)24 b(con)m(trol)h(three)f(asp)s(ects)150 2038
-y(of)33 b(the)g(c)m(h)m(unking)g(implemen)m(tation.)50
-b(These)32 b(are)i(kno)m(wn)e(as)h(the)g Fz(c)m(h)m(unking)g(p)s(olicy)
-p FD(,)h Fz(c)m(h)m(unking)f(map)p FD(,)150 2147 y(and)g
-Fz(c)m(h)m(unksize)p FD(.)51 b(The)33 b(\014rst)g(t)m(w)m(o)i(are)f
-(high-lev)m(el)h(mec)m(hanisms)f(that)g(apply)f(to)h(an)g(en)m(tire)g
-(\014le,)h(while)150 2257 y(the)27 b(third)g(allo)m(ws)h(p)s
-(er-dimension)e(sp)s(eci\014cation)i(of)g(parameters.)40
-b(The)26 b(implemen)m(tation)j(is)f(a)f(h)m(ybrid)150
-2367 y(of)c(the)h Fy(ncpdq)e FD(pac)m(king)i(p)s(olicies)g(\(see)g
-(Section)g(4.8)h([ncp)s(dq)d(netCDF)h(P)m(erm)m(ute)h(Dimensions)g
-(Quic)m(kly],)150 2476 y(page)33 b(142\),)h(and)e(the)g(h)m(yp)s
-(erslab)f(sp)s(eci\014cations)i(\(see)g(Section)g(3.14)g([Hyp)s
-(erslabs],)f(page)h(39\).)47 b(Eac)m(h)150 2586 y(asp)s(ect)34
-b(is)g(in)m(tended)g(to)h(ha)m(v)m(e)g(a)g(sensible)f(default,)h(so)f
-(that)h(most)f(users)f(will)i(only)f(need)f(to)i(set)g(one)150
-2695 y(switc)m(h)e(to)g(obtain)g(sensible)g(c)m(h)m(unking.)47
-b(P)m(o)m(w)m(er)33 b(users)f(can)h(tune)f(the)h(three)f(switc)m(hes)i
-(in)e(tandem)g(to)150 2805 y(obtain)f(optimal)g(p)s(erformance.)275
-2981 y(The)k(user)h(sp)s(eci\014es)f(the)i(desired)e(c)m(h)m(unking)h
-(p)s(olicy)h(with)f(the)g(`)p Fy(-P)p FD(')g(switc)m(h)h(\(or)f(its)h
-(long)f(option)150 3091 y(equiv)-5 b(alen)m(ts,)32 b(`)p
-Fy(--cnk_plc)p FD(')d(and)h(`)p Fy(--chunk_policy)p FD('\))d(and)j(its)
-h Fz(cnk)p 2564 3091 28 4 v 40 w(plc)36 b FD(argumen)m(t.)42
-b(Fiv)m(e)32 b(c)m(h)m(unking)150 3201 y(p)s(olicies)f(are)g(curren)m
-(tly)f(implemen)m(ted:)150 3528 y Fz(Ch)m(unk)f(All)i(V)-8
-b(ariables)32 b([)p Fr(default)9 b Fz(])630 3638 y FD(De\014nition:)41
-b(Ch)m(unk)29 b(all)j(v)-5 b(ariables)31 b(p)s(ossible)630
-3748 y(Alternate)h(in)m(v)m(o)s(cation:)43 b Fy(ncchunk)630
-3857 y Fz(cnk)p 775 3857 V 40 w(plc)36 b FD(k)m(ey)31
-b(v)-5 b(alues:)41 b(`)p Fy(all)p FD(',)30 b(`)p Fy(cnk_all)p
-FD(',)f(`)p Fy(plc_all)p FD(')630 3967 y(Mnemonic:)41
-b(All)150 4270 y Fz(Ch)m(unk)29 b(V)-8 b(ariables)32
-b(with)e(at)h(least)g(Tw)m(o)g(Dimensions)630 4379 y
-FD(De\014nition:)41 b(Ch)m(unk)29 b(all)j(v)-5 b(ariables)31
-b(p)s(ossible)e(with)i(at)g(least)g(t)m(w)m(o)h(dimensions)630
-4489 y(Alternate)g(in)m(v)m(o)s(cation:)43 b(none)630
-4599 y Fz(cnk)p 775 4599 V 40 w(plc)36 b FD(k)m(ey)31
-b(v)-5 b(alues:)41 b(`)p Fy(g2d)p FD(',)30 b(`)p Fy(cnk_g2d)p
-FD(',)f(`)p Fy(plc_g2d)p FD(')630 4708 y(Mnemonic:)41
-b Fr(G)8 b FD(reater)32 b(than)e(or)g(equal)h(to)g Fr(2)43
-b(D)9 b FD(imensions)150 5011 y Fz(Ch)m(unk)29 b(V)-8
-b(ariables)32 b(with)e(at)h(least)g(Three)f(Dimensions)630
-5121 y FD(De\014nition:)41 b(Ch)m(unk)29 b(all)j(v)-5
-b(ariables)31 b(p)s(ossible)e(with)i(at)g(least)g(three)g(dimensions)
-630 5230 y(Alternate)h(in)m(v)m(o)s(cation:)43 b(none)630
-5340 y Fz(cnk)p 775 5340 V 40 w(plc)36 b FD(k)m(ey)31
-b(v)-5 b(alues:)41 b(`)p Fy(g3d)p FD(',)30 b(`)p Fy(cnk_g3d)p
-FD(',)f(`)p Fy(plc_g3d)p FD(')p eop end
-%%Page: 52 54
-TeXDict begin 52 53 bop 150 -116 a FD(52)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)630 299 y(Mnemonic:)41 b
-Fr(G)8 b FD(reater)32 b(than)e(or)g(equal)h(to)g Fr(3)43
-b(D)9 b FD(imensions)150 591 y Fz(Ch)m(unk)29 b(V)-8
-b(ariables)32 b(Con)m(taining)f(Explicitly)g(Ch)m(unk)m(ed)f
-(Dimensions)630 700 y FD(De\014nition:)62 b(Ch)m(unk)40
-b(all)i(v)-5 b(ariables)41 b(p)s(ossible)g(that)g(con)m(tain)h(at)g
-(least)g(one)g(dimension)630 810 y(whose)j(c)m(h)m(unksize)h(w)m(as)g
-(explicitly)h(set)f(with)f(the)h(`)p Fy(--cnk_dmn)p FD(')d(option.)86
-b(Alternate)630 920 y(in)m(v)m(o)s(cation:)43 b(none)630
-1029 y Fz(cnk)p 775 1029 28 4 v 40 w(plc)36 b FD(k)m(ey)31
-b(v)-5 b(alues:)41 b(`)p Fy(xpl)p FD(',)30 b(`)p Fy(cnk_xpl)p
-FD(',)f(`)p Fy(plc_xpl)p FD(')630 1139 y(Mnemonic:)41
-b(E)p Fr(XPL)p FD(icitly)31 b(sp)s(eci\014ed)f(dimensions)150
-1431 y Fz(Unc)m(h)m(unking)630 1540 y FD(De\014nition:)41
-b(Unc)m(h)m(unk)30 b(all)h(v)-5 b(ariables)630 1650 y(Alternate)32
-b(in)m(v)m(o)s(cation:)43 b Fy(ncunchunk)630 1760 y Fz(cnk)p
-775 1760 V 40 w(plc)36 b FD(k)m(ey)31 b(v)-5 b(alues:)41
-b(`)p Fy(uck)p FD(',)30 b(`)p Fy(cnk_uck)p FD(',)f(`)p
-Fy(plc_uck)p FD(',)h(`)p Fy(unchunk)p FD(')630 1869 y(Mnemonic:)41
-b Fr(U)15 b FD(n)p Fr(C)e FD(h)m(un)p Fr(K)150 2186 y
-FD(Equiv)-5 b(alen)m(t)26 b(k)m(ey)g(v)-5 b(alues)26
-b(are)g(fully)f(in)m(terc)m(hangeable.)41 b(Multiple)26
-b(equiv)-5 b(alen)m(t)27 b(options)f(are)f(pro)m(vided)g(to)150
-2296 y(satisfy)g(disparate)g(needs)f(and)g(tastes)h(of)g
-FC(NCO)f FD(users)g(w)m(orking)g(with)h(scripts)f(and)g(from)g(the)g
-(command)150 2405 y(line.)275 2576 y(The)32 b(c)m(h)m(unking)h
-(algorithms)h(m)m(ust)f(kno)m(w)g(the)h(c)m(h)m(unksizes)f(of)h(eac)m
-(h)g(dimension)f(of)g(eac)m(h)h(v)-5 b(ariable)150 2686
-y(to)29 b(b)s(e)e(c)m(h)m(unk)m(ed.)40 b(The)28 b(corresp)s(ondence)f
-(b)s(et)m(w)m(een)i(the)f(input)f(v)-5 b(ariable)29 b(shap)s(e)e(and)g
-(the)h(c)m(h)m(unksizes)h(is)150 2795 y(called)i(the)e
-Fz(c)m(h)m(unking)g(map)p FD(.)40 b(The)29 b(user)g(sp)s(eci\014es)g
-(the)h(desired)e(c)m(h)m(unking)i(map)f(with)g(the)g(`)p
-Fy(-M)p FD(')g(switc)m(h)150 2905 y(\(or)c(its)g(long)g(option)g(equiv)
--5 b(alen)m(ts,)27 b(`)p Fy(--cnk_map)p FD(')22 b(and)i(`)p
-Fy(--chunk_map)p FD('\))f(and)h(its)g Fz(cnk)p 3115 2905
-V 40 w(map)j FD(argumen)m(t.)150 3014 y(F)-8 b(our)31
-b(c)m(h)m(unking)f(maps)g(are)h(curren)m(tly)f(implemen)m(ted:)150
-3331 y Fz(Ch)m(unksize)g(Equals)g(Dimension)h(Size)g([)p
-Fr(default)9 b Fz(])630 3441 y FD(De\014nition:)43 b(Ch)m(unksize)30
-b(defaults)h(to)h(dimension)f(size.)44 b(Explicitly)32
-b(sp)s(ecify)e(c)m(h)m(unksizes)630 3551 y(for)g(particular)h
-(dimensions)e(with)i(`)p Fy(--cnk_dmn)p FD(')d(option.)630
-3660 y Fz(cnk)p 775 3660 V 40 w(map)33 b FD(k)m(ey)e(v)-5
-b(alues:)41 b(`)p Fy(dmn)p FD(',)30 b(`)p Fy(cnk_dmn)p
-FD(',)f(`)p Fy(map_dmn)p FD(')630 3770 y(Mnemonic:)41
-b Fr(D)9 b FD(i)p Fr(M)15 b FD(e)p Fr(N)g FD(sion)150
-4062 y Fz(Ch)m(unksize)30 b(Equals)g(Dimension)h(Size)g(except)g
-(Record)g(Dimension)630 4171 y FD(De\014nition:)52 b(Ch)m(unksize)35
-b(equals)h(dimension)f(size)h(except)g(record)g(dimension)f(has)g(size)
-630 4281 y(one.)55 b(Explicitly)36 b(sp)s(ecify)f(c)m(h)m(unksizes)h
-(for)e(particular)i(dimensions)e(with)h(`)p Fy(--cnk_dmn)p
-FD(')630 4390 y(option.)630 4500 y Fz(cnk)p 775 4500
-V 40 w(map)e FD(k)m(ey)e(v)-5 b(alues:)41 b(`)p Fy(rd1)p
-FD(',)30 b(`)p Fy(cnk_rd1)p FD(',)f(`)p Fy(map_rd1)p
-FD(')630 4610 y(Mnemonic:)41 b Fr(R)t FD(ecord)31 b Fr(D)9
-b FD(imension)29 b(size)i Fr(1)150 4902 y Fz(Ch)m(unksize)f(Equals)g
-(Scalar)h(Size)g(Sp)s(eci\014ed)630 5011 y FD(De\014nition:)41
-b(Ch)m(unksize)30 b(for)g(all)i(dimensions)d(is)i(set)g(with)f(the)g(`)
-p Fy(--cnk_scl)p FD(')f(option.)630 5121 y Fz(cnk)p 775
-5121 V 40 w(map)k FD(k)m(ey)e(v)-5 b(alues:)41 b(`)p
-Fy(xpl)p FD(',)30 b(`)p Fy(cnk_xpl)p FD(',)f(`)p Fy(map_xpl)p
-FD(')630 5230 y(Mnemonic:)41 b(E)p Fr(XPL)p FD(icitly)31
-b(sp)s(eci\014ed)f(dimensions)p eop end
-%%Page: 53 55
-TeXDict begin 53 54 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(53)150 299 y Fz(Ch)m(unksize)30
-b(Pro)s(duct)f(Equals)i(Scalar)g(Size)f(Sp)s(eci\014ed)630
-408 y FD(De\014nition:)63 b(The)40 b(pro)s(duct)g(of)h(the)g(c)m(h)m
-(unksizes)h(for)f(eac)m(h)h(v)-5 b(ariable)42 b(\(appro)m(ximately\))
-630 518 y(equals)30 b(the)h(size)g(sp)s(eci\014ed)e(with)h(the)g(`)p
-Fy(--cnk_scl)p FD(')e(option.)41 b(F)-8 b(or)31 b(a)f(v)-5
-b(ariable)31 b(of)g(rank)e Fz(R)630 628 y FD(\(i.e.,)h(with)d
-Fz(R)g FD(non-degenerate)i(dimensions\),)f(the)g(c)m(h)m(unksize)g(in)f
-(eac)m(h)i(non-degenerate)630 737 y(dimension)h(is)g(the)h
-Fz(R)p FD(th)f(ro)s(ot)h(of)f Fz(cnk)p 1934 737 28 4
-v 40 w(scl)p FD(.)630 847 y Fz(cnk)p 775 847 V 40 w(map)j
-FD(k)m(ey)e(v)-5 b(alues:)41 b(`)p Fy(prd)p FD(',)30
-b(`)p Fy(cnk_prd)p FD(',)f(`)p Fy(map_prd)p FD(')630
-956 y(Mnemonic:)41 b Fr(PR)t FD(o)p Fr(D)9 b FD(uct)150
-1328 y(It)49 b(is)g(p)s(ossible)f(to)i(com)m(bine)g(the)f(ab)s(o)m(v)m
-(e)h(c)m(h)m(unking)f(map)f(algorithms)i(with)f(user-sp)s(eci\014ed)f
-(p)s(er-)150 1437 y(dimension)39 b(\(but)g(not)g(p)s(er-v)-5
-b(ariable\))40 b(c)m(h)m(unksizes)g(that)g(o)m(v)m(erride)g(sp)s
-(eci\014c)f(c)m(h)m(unksizes)h(determined)150 1547 y(b)m(y)32
-b(the)h(maps)f(ab)s(o)m(v)m(e.)49 b(The)32 b(user)f(sp)s(eci\014es)i
-(the)f(p)s(er-dimension)g(c)m(h)m(unksizes)h(with)f(the)h(\(equiv)-5
-b(alen)m(t\))150 1656 y(long)23 b(options)g(`)p Fy(--cnk_dmn)p
-FD(')d(or)i(`)p Fy(--chunk_dimension)p FD('\).)34 b(The)22
-b(option)h(tak)m(es)h(t)m(w)m(o)f(comma-separated)150
-1766 y(argumen)m(ts,)30 b Fz(dmn)p 801 1766 V 39 w(nm)p
-FD(,)p Fz(cnk)p 1131 1766 V 40 w(sz)p FD(,)g(whic)m(h)f(are)h(the)g
-(dimension)f(name)h(and)f(its)h(c)m(h)m(unksize,)h(resp)s(ectiv)m(ely)
--8 b(.)150 1875 y(The)30 b(`)p Fy(--cnk_dmn)p FD(')e(option)j(ma)m(y)g
-(b)s(e)f(used)f(as)i(man)m(y)f(times)h(as)g(necessary)-8
-b(.)390 2073 y Fy(#)47 b(Simple)g(chunking)e(and)i(unchunking)390
-2183 y(ncks)g(-O)g(-4)g(--cnk_plc=all)235 b(in.nc)46
-b(out.nc)h(#)g(Chunk)f(in.nc)390 2293 y(ncks)h(-O)g(-4)g
-(--cnk_plc=unchunk)c(in.nc)j(out.nc)h(#)g(Unchunk)f(in.nc)390
-2512 y(#)h(Chunk)g(data)f(then)h(unchunk)f(it,)h(printing)e
-(informative)g(metadata)390 2621 y(ncks)i(-O)g(-4)g(-D)g(4)h
-(--cnk_plc=all)c(~/nco/data/in.nc)f(~/foo.nc)390 2731
-y(ncks)k(-O)g(-4)g(-D)g(4)h(--cnk_plc=uck)c(~/foo.nc)h(~/foo.nc)390
-2950 y(#)i(More)g(complex)f(chunking)f(procedures,)g(with)i
-(informative)e(metadata)390 3060 y(ncks)i(-O)g(-4)g(-D)g(4)h
-(--cnk_scl=8)c(~/nco/data/in.nc)g(~/foo.nc)390 3169 y(ncks)j(-O)g(-4)g
-(-D)g(4)h(--cnk_scl=8)c(/data/zender/dstmch90/dstm)o(ch9)o(0_cl)o(m.nc)
-d(~/foo.nc)390 3279 y(ncks)47 b(-O)g(-4)g(-D)g(4)h(--cnk_dmn)d(lat,64)h
-(--cnk_dmn)f(lon,128)h(/data/zender/dstmch90/dst)o(mch)o(90_c)o(lm.)o
-(nc)c(~/foo.nc)390 3389 y(ncks)47 b(-O)g(-4)g(-D)g(4)h(--cnk_plc=uck)c
-(~/foo.nc)h(~/foo.nc)390 3498 y(ncks)i(-O)g(-4)g(-D)g(4)h
-(--cnk_plc=g2d)c(--cnk_map=rd1)g(--cnk_dmn)h(lat,32)h(--cnk_dmn)g
-(lon,128)f(/data/zender/dstmch90/dstm)o(ch9)o(0_cl)o(m_01)o(12.)o(nc)d
-(~/foo.nc)390 3717 y(#)47 b(Chunking)f(works)g(with)h(all)g
-(operators...)390 3827 y(ncap2)f(-O)i(-4)f(-D)g(4)g(--cnk_scl=8)e(-S)i
-(~/nco/data/ncap2_tst.nco)41 b(~/nco/data/in.nc)j(~/foo.nc)390
-3936 y(ncbo)j(-O)g(-4)g(-D)g(4)h(--cnk_scl=8)c(-p)k(~/nco/data)d(in.nc)
-h(in.nc)g(~/foo.nc)390 4046 y(ncecat)g(-O)h(-4)g(-D)h(4)f(-n)g(12,2,1)f
-(--cnk_dmn)g(lat,32)g(-p)h(/data/zender/dstmch90)42 b
-(dstmch90_clm01.nc)h(~/foo.nc)390 4156 y(ncflint)j(-O)h(-4)g(-D)g(4)h
-(--cnk_scl=8)d(~/nco/data/in.nc)e(~/foo.nc)390 4265 y(ncpdq)j(-O)i(-4)f
-(-D)g(4)g(-P)h(all_new)d(--cnk_scl=8)g(-L)i(5)h(~/nco/data/in.nc)43
-b(~/foo.nc)390 4375 y(ncrcat)j(-O)h(-4)g(-D)h(4)f(-n)g(12,2,1)f
-(--cnk_dmn)g(lat,32)g(-p)h(/data/zender/dstmch90)42 b
-(dstmch90_clm01.nc)h(~/foo.nc)390 4484 y(ncwa)k(-O)g(-4)g(-D)g(4)h(-a)f
-(time)f(--cnk_plc=g2d)f(--cnk_map=rd1)f(--cnk_dmn)h(lat,32)h(--cnk_dmn)
-f(lon,128)h(/data/zender/dstmch90/dst)o(mch9)o(0_c)o(lm_0)o(112.)o(nc)
-41 b(~/foo.nc)275 4682 y FD(It)32 b(is)g(appropriate)g(to)h(conclude)f
-(b)m(y)g(informing)f(users)g(ab)s(out)h(an)g(asp)s(ect)h(of)f(c)m(h)m
-(unking)g(that)g(ma)m(y)150 4792 y(not)k(b)s(e)g(exp)s(ected:)53
-b(Record)36 b(dimensions)g(are)h(alw)m(a)m(ys)g(c)m(h)m(unk)m(ed)g
-(with)f(a)g(c)m(h)m(unksize)h(of)g(one.)58 b(Hence)150
-4902 y(all)30 b(v)-5 b(ariables)30 b(that)f(con)m(tain)i(the)e(record)g
-(dimension)f(are)i(also)g(stored)f(as)g(c)m(h)m(unk)m(ed)h(\(since)f
-(data)h(m)m(ust)150 5011 y(b)s(e)35 b(stored)i(with)e(c)m(h)m(unking)i
-(either)f(in)g(all)h(dimensions,)g(or)f(in)g(no)g(dimensions\).)57
-b(Unless)37 b(otherwise)150 5121 y(sp)s(eci\014ed)25
-b(b)m(y)g(the)g(user,)h(the)f(other)h(\(\014xed,)g(non-record\))f
-(dimensions)g(of)g(suc)m(h)g(v)-5 b(ariables)26 b(are)g(assigned)150
-5230 y(default)39 b(c)m(h)m(unk)f(sizes.)66 b(The)38
-b FC(HDF5)h FD(la)m(y)m(er)h(do)s(es)f(all)g(this)g(automatically)i(to)
-e(optimize)h(the)f(on-disk)150 5340 y(v)-5 b(ariable/\014le)37
-b(storage)h(geometry)f(of)f(record)g(v)-5 b(ariables.)58
-b(Do)37 b(not)f(b)s(e)g(surprised)e(to)i(learn)g(that)h(\014les)p
-eop end
-%%Page: 54 56
-TeXDict begin 54 55 bop 150 -116 a FD(54)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(created)e(without)f(an)m(y)g
-(explicit)i(instructions)d(to)i(activ)-5 b(ate)30 b(c)m(h)m(unking)d
-(nev)m(ertheless)g(con)m(tain)i(c)m(h)m(unk)m(ed)150
-408 y(v)-5 b(ariables.)150 653 y FB(3.23)68 b(De\015ation)150
-709 y Fm(\013)p 200 709 3554 4 v 3553 w(\010)p 150 1199
-4 442 v 178 846 a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncap2)p
-FD(,)30 b Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h Fy(ncecat)p
-FD(,)f Fy(ncflint)p FD(,)f Fy(ncks)p FD(,)i Fy(ncpdq)p
-FD(,)f Fy(ncra)p FD(,)g Fy(ncrcat)p FD(,)g Fy(ncwa)178
-955 y FD(Short)h(options:)41 b(`)p Fy(-L)p FD(')178 1065
-y(Long)31 b(options:)41 b(`)p Fy(--dfl_lvl)p FD(',)28
-b(`)p Fy(--deflate)p FD(')p 3803 1199 V 150 1251 a Fm(\012)p
-200 1251 3554 4 v 3553 w(\011)275 1425 y FD(All)38 b
-FC(NCO)f FD(op)s(erators)h(that)g(de\014ne)f(v)-5 b(ariables)39
-b(supp)s(ort)d(the)i(netCDF4)g(feature)g(of)g(storing)g(v)-5
-b(ari-)150 1534 y(ables)35 b(compressed)g(with)f(Lemp)s(el-Ziv)h
-(de\015ation.)54 b(The)34 b(Lemp)s(el-Ziv)h(algorithm)h(is)f(a)g
-(lossless)g(data)150 1644 y(compression)d(tec)m(hnique.)48
-b(Activ)-5 b(ate)34 b(this)f(de\015ation)f(with)g(the)h
-Fy(-L)d Fq(dfl_lvl)41 b FD(short)32 b(option)h(\(or)f(with)150
-1754 y(the)f(same)g(argumen)m(t)h(to)f(the)g(`)p Fy(--dfl_lvl)p
-FD(')e(or)i(`)p Fy(--deflate)p FD(')e(long)i(options\).)43
-b(Sp)s(ecify)30 b(the)i(de\015ation)150 1863 y(lev)m(el)i
-Fz(d\015)p 467 1863 28 4 v 39 w(lvl)i FD(on)d(a)f(scale)i(from)e(no)g
-(de\015ation)h(\()p Fz(d\015)p 1924 1863 V 39 w(lvl)g(=)f(0)7
-b FD(\))33 b(to)h(maxim)m(um)e(de\015ation)h(\()p Fz(d\015)p
-3370 1863 V 39 w(lvl)g(=)f(9)7 b FD(\).)150 1973 y(Minimal)35
-b(de\015ation)g(\()p Fz(d\015)p 1036 1973 V 40 w(lvl)g(=)f(1)7
-b FD(\))36 b(ac)m(hiev)m(es)g(considerable)g(storage)g(compression)e
-(with)h(little)h(time)150 2082 y(p)s(enalt)m(y)-8 b(.)40
-b(Higher)27 b(de\015ation)g(lev)m(els)h(require)f(more)f(time)i(for)e
-(compression.)40 b(File)27 b(sizes)h(resulting)e(from)150
-2192 y(minimal)37 b(\()p Fz(d\015)p 653 2192 V 39 w(lvl)g(=)f(1)7
-b FD(\))37 b(and)f(maximal)h(\()p Fz(d\015)p 1755 2192
-V 40 w(lvl)f(=)h(9)7 b FD(\))37 b(de\015ation)g(lev)m(els)h(t)m
-(ypically)g(di\013er)e(b)m(y)g(a)h(few)150 2302 y(p)s(ercen)m(t)30
-b(in)h(size.)275 2465 y(T)-8 b(o)30 b(compress)h(an)f(en)m(tire)h
-(\014le)g(using)e(de\015ation,)i(use)390 2628 y Fy(ncks)47
-b(-4)g(-L)g(0)g(in.nc)g(out.nc)f(#)h(No)h(deflation)d(\(fast,)h(no)h
-(time)g(penalty\))390 2738 y(ncks)g(-4)g(-L)g(1)g(in.nc)g(out.nc)f(#)h
-(Minimal)f(deflation)f(\(little)h(time)h(penalty\))390
-2847 y(ncks)g(-4)g(-L)g(9)g(in.nc)g(out.nc)f(#)h(Maximal)f(deflation)f
-(\(much)i(slower\))275 3011 y FD(Unscien)m(ti\014c)29
-b(testing)g(sho)m(ws)f(that)h(de\015ation)f(compresses)h(t)m(ypical)g
-(climate)h(datasets)g(b)m(y)e(30-60\045.)150 3120 y(P)m(ac)m(king,)51
-b(a)45 b(lossy)h(compression)f(tec)m(hnique)h(a)m(v)-5
-b(ailable)47 b(for)e(all)h(netCDF)g(\014les)f(\(see)h(Section)g(3.24)
-150 3230 y([P)m(ac)m(k)m(ed)33 b(data],)f(page)f(54\),)h(can)f(easily)h
-(compress)e(\014les)h(b)m(y)f(50\045.)42 b(P)m(ac)m(k)m(ed)33
-b(data)e(ma)m(y)h(b)s(e)e(de\015ated)g(to)150 3339 y(squeeze)h
-(datasets)h(b)m(y)e(ab)s(out)g(80\045:)390 3503 y Fy(ncks)94
-b(-4)48 b(-L)f(1)g(in.nc)g(out.nc)f(#)h(Minimal)f(deflation)f
-(\(~30-60\045)h(compression\))390 3612 y(ncks)94 b(-4)48
-b(-L)f(9)g(in.nc)g(out.nc)f(#)h(Maximal)f(deflation)f(\(~31-63\045)h
-(compression\))390 3722 y(ncpdq)428 b(in.nc)47 b(out.nc)f(#)h(Standard)
-f(packing)93 b(\(~50\045)47 b(compression\))390 3832
-y(ncpdq)f(-4)i(-L)f(9)g(in.nc)g(out.nc)f(#)h(Deflated)f(packing)93
-b(\(~80\045)47 b(compression\))275 3995 y(ncks)23 b FD(prin)m(ts)h
-(de\015ation)i(parameters,)g(if)f(an)m(y)-8 b(,)27 b(to)e(screen)g
-(\(see)h(Section)g(4.7)g([nc)m(ks)f(netCDF)g(Kitc)m(hen)150
-4104 y(Sink],)30 b(page)h(135\).)150 4349 y FB(3.24)68
-b(P)l(ac)l(k)l(ed)46 b(data)150 4405 y Fm(\013)p 200
-4405 3554 4 v 3553 w(\010)p 150 4786 4 333 v 178 4542
-a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncap2)p FD(,)30 b
-Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h Fy(ncflint)p FD(,)e
-Fy(ncpdq)p FD(,)h Fy(ncra)p FD(,)h Fy(ncwa)178 4651 y
-FD(Short)g(options:)41 b(None)p 3803 4786 V 150 4837
-a Fm(\012)p 200 4837 3554 4 v 3553 w(\011)275 5011 y
-FD(The)22 b(phrase)h Fz(pac)m(k)m(ed)h(data)g FD(refers)f(to)h(data)g
-(whic)m(h)f(are)h(stored)g(in)f(the)g(standard)g(netCDF3)h(pac)m(king)
-150 5121 y(format)43 b(whic)m(h)g(emplo)m(ys)h(a)f(lossy)h(algorithm.)
-80 b(See)43 b(Section)h(4.7)g([nc)m(ks)g(netCDF)g(Kitc)m(hen)f(Sink],)
-150 5230 y(page)j(135)g(for)f(a)h(description)f(of)h(de\015ation,)j(a)d
-(lossless)g(compression)f(tec)m(hnique)h(a)m(v)-5 b(ailable)47
-b(with)150 5340 y(netCDF4)31 b(only)-8 b(.)42 b(P)m(ac)m(k)m(ed)32
-b(data)f(ma)m(y)g(b)s(e)f(de\015ated)g(to)h(sa)m(v)m(e)h(additional)g
-(space.)p eop end
-%%Page: 55 57
-TeXDict begin 55 56 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(55)150 299 y Fv(P)m(ac)m(king)40
-b(Algorithm)150 446 y Fz(P)m(ac)m(king)53 b FD(The)42
-b(standard)h(netCDF)g(pac)m(king)h(algorithm)g(is)g(lossy)-8
-b(,)47 b(and)42 b(pro)s(duces)g(data)i(with)f(the)150
-555 y(same)26 b(dynamic)f(range)h(as)f(the)h(original)g(but)f(whic)m(h)
-g(requires)g(no)g(more)g(than)g(half)h(the)f(space)h(to)g(store.)150
-665 y(The)31 b(pac)m(k)m(ed)i(v)-5 b(ariable)32 b(is)g(stored)f
-(\(usually\))h(as)g(t)m(yp)s(e)g Fy(NC_SHORT)d FD(with)i(the)h(t)m(w)m
-(o)h(attributes)f(required)150 775 y(to)i(unpac)m(k)e(the)h(v)-5
-b(ariable,)35 b Fy(scale_factor)29 b FD(and)k Fy(add_offset)p
-FD(,)d(stored)j(at)h(the)f(original)h(\(unpac)m(k)m(ed\))150
-884 y(precision)d(of)f(the)h(v)-5 b(ariable)1100 851
-y Fw(13)1171 884 y FD(.)41 b(Let)30 b Fz(min)g FD(and)g
-Fz(max)37 b FD(b)s(e)29 b(the)i(minim)m(um)f(and)f(maxim)m(um)i(v)-5
-b(alues)30 b(of)h Fz(x)p FD(.)1046 1124 y(scale)p 1238
-1124 28 4 v 41 w(factor)26 b(=)f(\(max)c FA(\000)f FD(min)o(\))p
-Fn(=)p FD(ndrv)1106 1258 y(add)p 1259 1258 V 40 w(o\013set)26
-b(=)f(\(min)20 b(+)g(max\))p Fn(=)p FD(2)1364 1393 y(p)s(c)m(k)25
-b(=)g(\(upk)20 b FA(\000)g FD(add)p 2073 1393 V 39 w(o\013set)q(\))p
-Fn(=)p FD(scale)p 2588 1393 V 42 w(factor)1528 1588 y(=)1634
-1527 y(ndrv)f FA(\002)h FD([upk)f FA(\000)h FD(\(min)g(+)g(max\))p
-Fn(=)p FD(2])p 1634 1567 1200 4 v 2018 1651 a(max)h FA(\000)e
-FD(min)150 1866 y(where)26 b Fz(ndrv)34 b FD(is)27 b(the)g(n)m(um)m(b)s
-(er)e(of)i(discrete)h(represen)m(table)g(v)-5 b(alues)27
-b(for)g(giv)m(en)h(t)m(yp)s(e)f(of)g(pac)m(k)m(ed)h(v)-5
-b(ariable.)150 1975 y(The)31 b(theoretical)k(maxim)m(um)d(v)-5
-b(alue)32 b(for)g Fz(ndrv)38 b FD(is)32 b(t)m(w)m(o)h(raised)f(to)h
-(the)f(n)m(um)m(b)s(er)f(of)h(bits)g(used)f(to)h(store)150
-2085 y(the)24 b(pac)m(k)m(ed)h(v)-5 b(ariable.)39 b(Th)m(us)22
-b(if)i(the)g(v)-5 b(ariable)24 b(is)g(pac)m(k)m(ed)g(in)m(to)h(t)m(yp)s
-(e)f Fy(NC_SHORT)p FD(,)f(a)h(t)m(w)m(o-b)m(yte)i(datat)m(yp)s(e,)150
-2195 y(then)g(there)h(are)g(at)h(most)f(2)1102 2162 y
-Fw(1)1140 2195 y FD(6)e(=)g(65536)k(distinct)e(v)-5 b(alues)27
-b(represen)m(tible.)40 b(In)26 b(practice,)j(the)e(n)m(um)m(b)s(er)f
-(of)150 2304 y(discretely)33 b(represen)m(tible)f(v)-5
-b(alues)32 b(is)g(tak)m(en)g(to)h(b)s(e)e(t)m(w)m(o)i(less)f(than)f
-(the)h(theoretical)i(maxim)m(um.)45 b(This)150 2414 y(lea)m(v)m(es)26
-b(space)f(for)f(a)h(missing)f(v)-5 b(alue)25 b(and)e(solv)m(es)j(p)s
-(oten)m(tial)f(problems)f(with)g(rounding)e(that)j(ma)m(y)g(o)s(ccur)
-150 2523 y(during)k(the)h(unpac)m(king)g(of)h(the)f(v)-5
-b(ariable.)41 b(Th)m(us)29 b(for)h Fy(NC_SHORT)p FD(,)e
-Fn(ndr)s(v)g FD(=)d(65536)d FA(\000)e FD(2)25 b(=)g(65534.)43
-b(Less)150 2633 y(often,)30 b(the)f(v)-5 b(ariable)30
-b(ma)m(y)g(b)s(e)e(pac)m(k)m(ed)i(in)m(to)g(t)m(yp)s(e)f
-Fy(NC_CHAR)p FD(,)f(where)g Fn(ndr)s(v)g FD(=)d(256)19
-b FA(\000)e FD(2)26 b(=)f(254,)31 b(or)e(t)m(yp)s(e)150
-2743 y Fy(NC_INT)j FD(where)i(where)g Fn(ndr)s(v)g FD(=)d(4294967295)d
-FA(\000)22 b FD(2)32 b(=)f(4294967293.)57 b(One)34 b(useful)f(feature)i
-(of)f(\(lossy\))150 2852 y(netCDF)e(pac)m(king)g(algorithm)g(is)g(that)
-g(additional,)g(loss-less)h(pac)m(king)f(algorithms)g(p)s(erform)e(w)m
-(ell)i(on)150 2962 y(top)f(of)f(it.)150 3185 y Fv(Unpac)m(king)41
-b(Algorithm)150 3332 y Fz(Unpac)m(king)48 b FD(The)38
-b(unpac)m(king)h(algorithm)i(dep)s(ends)c(on)i(the)g(presence)h(of)f(t)
-m(w)m(o)h(attributes,)j Fy(scale_)150 3441 y(factor)26
-b FD(and)g Fy(add_offset)p FD(.)37 b(If)27 b Fy(scale_factor)d
-FD(is)k(presen)m(t)f(for)g(a)h(v)-5 b(ariable,)29 b(the)f(data)g(are)f
-(m)m(ultiplied)150 3551 y(b)m(y)34 b(the)g(v)-5 b(alue)35
-b Fz(scale)p 871 3551 28 4 v 41 w(factor)42 b FD(after)34
-b(the)h(data)f(are)h(read.)52 b(If)33 b Fy(add_offset)e
-FD(is)j(presen)m(t)h(for)e(a)i(v)-5 b(ariable,)150 3660
-y(then)23 b(the)h Fz(add)p 653 3660 V 39 w(o\013set)i
-FD(v)-5 b(alue)24 b(is)g(added)e(to)j(the)e(data)h(after)g(the)g(data)g
-(are)f(read.)39 b(If)23 b(b)s(oth)f Fy(scale_factor)150
-3770 y FD(and)31 b Fy(add_offset)d FD(attributes)k(are)f(presen)m(t,)h
-(the)g(data)g(are)f(\014rst)g(scaled)h(b)m(y)f Fz(scale)p
-3047 3770 V 41 w(factor)39 b FD(b)s(efore)31 b(the)150
-3880 y(o\013set)g Fz(add)p 543 3880 V 40 w(o\013set)i
-FD(is)e(added.)1147 4102 y(upk)24 b(=)h(scale)p 1609
-4102 V 42 w(factor)c FA(\002)f FD(p)s(c)m(k)g(+)g(add)p
-2389 4102 V 39 w(o\013set)1321 4297 y(=)1427 4236 y(p)s(c)m(k)h
-FA(\002)e FD(\(max)i FA(\000)f FD(min\))p 1427 4276 753
-4 v 1711 4360 a(ndrv)2210 4297 y(+)2311 4236 y(min)g(+)g(max)p
-2311 4276 432 4 v 2504 4360 a(2)150 4572 y(When)35 b
-Fy(scale_factor)d FD(and)j Fy(add_offset)e FD(are)j(used)f(for)g(pac)m
-(king,)j(the)e(asso)s(ciated)h(v)-5 b(ariable)36 b(\(con-)150
-4682 y(taining)f(the)f(pac)m(k)m(ed)h(data\))g(is)f(t)m(ypically)i(of)e
-(t)m(yp)s(e)h Fy(byte)e FD(or)h Fy(short)p FD(,)f(whereas)h(the)g
-(unpac)m(k)m(ed)h(v)-5 b(alues)150 4791 y(are)32 b(in)m(tended)f(to)g
-(b)s(e)g(of)g(t)m(yp)s(e)h Fy(int)p FD(,)e Fy(float)p
-FD(,)g(or)i Fy(double)p FD(.)41 b(An)31 b(attribute's)h
-Fy(scale_factor)c FD(and)i Fy(add_)150 4901 y(offset)g
-FD(and)i Fy(_FillValue)p FD(,)e(if)i(an)m(y)-8 b(,)34
-b(should)d(all)i(b)s(e)e(of)i(the)f(t)m(yp)s(e)g(in)m(tended)g(for)g
-(the)h(unpac)m(k)m(ed)f(data,)150 5010 y(i.e.,)g Fy(int)p
-FD(,)d Fy(float)g FD(or)i Fy(double)p FD(.)p 150 5154
-1200 4 v 166 5221 a Fw(13)275 5253 y Fu(Although)26 b(not)g(a)h(part)g
-(of)g(the)f(standard,)i Fs(NCO)e Fu(enforces)i(the)e(p)r(olicy)h(that)f
-(the)h Ft(_FillValue)i Fu(attribute,)e(if)g(an)n(y)-6
-b(,)26 b(of)275 5340 y(a)g(pac)n(k)n(ed)e(v)l(ariable)j(is)f(also)h
-(stored)f(at)g(the)f(original)i(precision.)p eop end
-%%Page: 56 58
-TeXDict begin 56 57 bop 150 -116 a FD(56)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fv(Default)41 b(Handling)h(of)g
-(P)m(ac)m(k)m(ed)c(Data)150 446 y FD(All)23 b FC(NCO)g
-FD(arithmetic)h(op)s(erators)e(understand)f(pac)m(k)m(ed)j(data.)39
-b(The)22 b(op)s(erators)h(automatically)i(unpac)m(k)150
-555 y(an)m(y)33 b(pac)m(k)m(ed)h(v)-5 b(ariable)34 b(in)f(the)g(input)f
-(\014le)h(whic)m(h)g(will)g(b)s(e)f(arithmetically)j(pro)s(cessed.)48
-b(F)-8 b(or)34 b(example,)150 665 y Fy(ncra)26 b FD(unpac)m(ks)g(all)h
-(record)g(v)-5 b(ariables,)28 b(and)e Fy(ncwa)g FD(unpac)m(ks)g(all)i
-(v)-5 b(ariable)27 b(whic)m(h)f(con)m(tain)i(a)g(dimension)150
-775 y(to)j(b)s(e)f(a)m(v)m(eraged.)43 b(These)30 b(v)-5
-b(ariables)31 b(are)g(stored)f(unpac)m(k)m(ed)h(in)f(the)g(output)g
-(\014le.)275 934 y(On)37 b(the)h(other)h(hand,)g(arithmetic)h(op)s
-(erators)e(do)g(not)h(unpac)m(k)f(non-pro)s(cessed)f(v)-5
-b(ariables.)65 b(F)-8 b(or)150 1044 y(example,)33 b Fy(ncra)e
-FD(lea)m(v)m(es)k(all)d(non-record)g(v)-5 b(ariables)33
-b(pac)m(k)m(ed,)h(and)d Fy(ncwa)g FD(lea)m(v)m(es)j(pac)m(k)m(ed)f(all)
-g(v)-5 b(ariables)150 1153 y(lac)m(king)27 b(an)e(a)m(v)m(eraged)i
-(dimension.)38 b(These)25 b(v)-5 b(ariables)25 b(\(called)i(\014xed)d
-(v)-5 b(ariables\))26 b(are)g(passed)e(unaltered)150
-1263 y(from)c(the)i(input)e(to)h(the)g(output)g(\014le.)38
-b(Hence)21 b(\014xed)g(v)-5 b(ariables)21 b(whic)m(h)g(are)g(pac)m(k)m
-(ed)h(in)f(input)f(\014les)h(remain)150 1372 y(pac)m(k)m(ed)31
-b(in)e(output)h(\014les.)40 b(Completely)31 b(pac)m(king)g(and)e(unpac)
-m(king)h(\014les)g(is)g(easily)h(accomplished)f(with)150
-1482 y Fy(ncpdq)i FD(\(see)i(Section)g(4.8)g([ncp)s(dq)e(netCDF)i(P)m
-(erm)m(ute)g(Dimensions)f(Quic)m(kly],)i(page)f(142\).)51
-b(P)m(ac)m(king)150 1592 y(and)38 b(unpac)m(king)g(individual)g(v)-5
-b(ariables)39 b(ma)m(y)h(b)s(e)d(done)i(with)f Fy(ncpdq)f
-FD(and)h(the)h Fy(ncap2)e(pack\(\))g FD(and)150 1701
-y Fy(unpack\(\))28 b FD(functions)i(\(see)h(Section)h(4.1.11)g([Metho)s
-(ds)f(and)e(functions],)i(page)g(82\).)150 1927 y FB(3.25)68
-b(Op)t(eration)46 b(T)l(yp)t(es)150 2011 y Fm(\013)p
-200 2011 3554 4 v 3553 w(\010)p 150 2500 4 442 v 178
-2147 a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncap2)p FD(,)30
-b Fy(ncra)p FD(,)f Fy(ncea)p FD(,)h Fy(ncwa)178 2256
-y FD(Short)g(options:)41 b(`)p Fy(-y)p FD(')178 2366
-y(Long)31 b(options:)41 b(`)p Fy(--operation)p FD(',)28
-b(`)p Fy(--op_typ)p FD(')p 3803 2500 V 150 2552 a Fm(\012)p
-200 2552 3554 4 v 3553 w(\011)150 2722 y FD(The)23 b(`)p
-Fy(-y)30 b Fq(op_typ)11 b FD(')22 b(switc)m(h)i(allo)m(ws)h(sp)s
-(eci\014cation)g(of)e(man)m(y)h(di\013eren)m(t)g(t)m(yp)s(es)g(of)g(op)
-s(erations)g(Set)g Fz(op)p 3585 2722 28 4 v 40 w(t)m(yp)150
-2832 y FD(to)31 b(the)g(abbreviated)f(k)m(ey)i(for)e(the)g(corresp)s
-(onding)g(op)s(eration:)150 3013 y Fy(avg)336 b FD(Mean)31
-b(v)-5 b(alue)150 3165 y Fy(sqravg)192 b FD(Square)30
-b(of)g(the)h(mean)150 3318 y Fy(avgsqr)192 b FD(Mean)31
-b(of)g(sum)e(of)h(squares)150 3470 y Fy(max)336 b FD(Maximium)31
-b(v)-5 b(alue)150 3623 y Fy(min)336 b FD(Minimium)30
-b(v)-5 b(alue)150 3775 y Fy(rms)336 b FD(Ro)s(ot-mean-square)32
-b(\(normalized)f(b)m(y)f Fz(N)10 b FD(\))150 3928 y Fy(rmssdn)192
-b FD(Ro)s(ot-mean)31 b(square)g(\(normalized)g(b)m(y)f
-Fz(N-1)7 b FD(\))150 4080 y Fy(sqrt)288 b FD(Square)30
-b(ro)s(ot)g(of)h(the)g(mean)150 4233 y Fy(ttl)336 b FD(Sum)29
-b(of)i(v)-5 b(alues)150 4413 y FC(NCO)44 b FD(assumes)f(co)s(ordinate)i
-(v)-5 b(ariables)44 b(represen)m(t)g(grid)f(axes,)49
-b(e.g.,)f(longitude.)82 b(The)43 b(only)h(rank-)150 4523
-y(reduction)30 b(whic)m(h)f(mak)m(es)h(sense)g(for)f(co)s(ordinate)i(v)
--5 b(ariables)30 b(is)g(a)m(v)m(eraging.)43 b(Hence)30
-b FC(NCO)f FD(implemen)m(ts)150 4633 y(the)d(op)s(eration)g(t)m(yp)s(e)
-g(requested)g(with)g(`)p Fy(-y)p FD(')f(on)h(all)h(non-co)s(ordinate)f
-(v)-5 b(ariables,)28 b(but)d(not)h(on)g(co)s(orniate)150
-4742 y(v)-5 b(ariables.)66 b(When)39 b(an)g(op)s(eration)g(requires)f
-(a)h(co)s(ordinate)h(v)-5 b(ariable)39 b(to)h(b)s(e)e(reduced)g(in)g
-(rank,)j(i.e.,)150 4852 y(from)30 b(one)g(dimension)f(to)i(a)g(scalar)g
-(or)f(from)f(one)i(dimension)e(to)i(a)f(degenerate)i(\(single)f(v)-5
-b(alue\))31 b(arra)m(y)-8 b(,)150 4961 y(then)37 b FC(NCO)g
-Fr(always)k(aver)-5 b(ages)45 b FD(the)38 b(co)s(ordinate)g(v)-5
-b(ariable)38 b(regardless)f(of)h(the)f(arithmetic)h(op)s(eration)150
-5071 y(t)m(yp)s(e)31 b(p)s(erformed)d(on)j(the)f(non-co)s(ordinate)h(v)
--5 b(ariables.)275 5230 y(The)20 b(mathematical)k(de\014nition)d(of)g
-(eac)m(h)h(arithmetic)h(op)s(eration)f(is)f(giv)m(en)h(b)s(elo)m(w.)38
-b(See)21 b(Section)h(4.12)150 5340 y([ncw)m(a)44 b(netCDF)f(W)-8
-b(eigh)m(ted)46 b(Av)m(erager],)i(page)c(155,)j(for)c(additional)h
-(information)g(on)f(masks)g(and)p eop end
-%%Page: 57 59
-TeXDict begin 57 58 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(57)150 299 y(normalization.)41
-b(If)26 b(an)h(op)s(eration)g(t)m(yp)s(e)g(is)g(not)g(sp)s(eci\014ed)f
-(with)g(`)p Fy(-y)p FD(')h(then)f(the)h(op)s(erator)g(p)s(erforms)e(an)
-150 408 y(arithmetic)30 b(a)m(v)m(erage)h(b)m(y)e(default.)40
-b(Av)m(eraging)31 b(is)e(describ)s(ed)e(\014rst)h(so)h(the)g
-(terminology)h(for)f(the)g(other)150 518 y(op)s(erations)i(is)f
-(familiar.)275 682 y(The)f(mask)m(ed,)i(w)m(eigh)m(ted)h(a)m(v)m(erage)
-h(of)e(a)f(v)-5 b(ariable)32 b Fn(x)e FD(can)h(b)s(e)e(generally)j
-(represen)m(ted)e(as)1538 966 y(\026)-48 b Fn(x)1587
-980 y Fh(j)1647 966 y FD(=)1753 840 y Fg(P)1841 861 y
-Fh(i)p Fw(=)p Fh(N)1841 927 y(i)p Fw(=1)1993 904 y Fn(\026)2048
-918 y Fh(i)2075 904 y Fn(m)2155 918 y Fh(i)2183 904 y
-Fn(w)2248 918 y Fh(i)2276 904 y Fn(x)2328 918 y Fh(i)p
-1753 945 603 4 v 1793 974 a Fg(P)1880 995 y Fh(i)p Fw(=)p
-Fh(N)1880 1061 y(i)p Fw(=1)2033 1038 y Fn(\026)2088 1052
-y Fh(i)2115 1038 y Fn(m)2195 1052 y Fh(i)2223 1038 y
-Fn(w)2288 1052 y Fh(i)150 1246 y FD(where)40 b(\026)-48
-b Fn(x)472 1260 y Fh(j)544 1246 y FD(is)37 b(the)g Fn(j)5
-b FD('th)38 b(elemen)m(t)h(of)e(the)h(output)e(h)m(yp)s(erslab,)j
-Fn(x)2416 1260 y Fh(i)2480 1246 y FD(is)f(the)f Fn(i)p
-FD('th)g(elemen)m(t)i(of)e(the)h(input)150 1356 y(h)m(yp)s(erslab,)30
-b Fn(\026)643 1370 y Fh(i)701 1356 y FD(is)g(1)h(unless)f
-Fn(x)1189 1370 y Fh(i)1247 1356 y FD(equals)h(the)f(missing)h(v)-5
-b(alue,)31 b Fn(m)2344 1370 y Fh(i)2402 1356 y FD(is)f(1)h(unless)f
-Fn(x)2890 1370 y Fh(i)2948 1356 y FD(is)h(mask)m(ed,)g(and)f
-Fn(w)3631 1370 y Fh(i)3689 1356 y FD(is)150 1465 y(the)j(w)m(eigh)m(t.)
-48 b(This)32 b(formiddable)g(lo)s(oking)h(form)m(ula)g(represen)m(ts)g
-(a)g(simple)f(w)m(eigh)m(ted)i(a)m(v)m(erage)h(whose)150
-1575 y(b)s(ells)d(and)g(whistles)h(are)g(all)g(explained)g(b)s(elo)m
-(w.)47 b(It)32 b(is)h(not)g(to)s(o)g(early)g(to)g(note,)h(ho)m(w)m(ev)m
-(er,)h(that)e(when)150 1684 y Fn(\026)205 1698 y Fh(i)264
-1684 y FD(=)f Fn(m)447 1698 y Fh(i)507 1684 y FD(=)f
-Fn(w)674 1698 y Fh(i)734 1684 y FD(=)h(1,)k(the)e(generic)i(a)m(v)m
-(eraging)h(expression)d(ab)s(o)m(v)m(e)h(reduces)f(to)h(a)g(simple)g
-(arithmetic)150 1794 y(a)m(v)m(erage.)72 b(F)-8 b(urthermore,)42
-b Fn(m)1184 1808 y Fh(i)1252 1794 y FD(=)f Fn(w)1429
-1808 y Fh(i)1497 1794 y FD(=)g(1)f(for)g(all)g(op)s(erators)g(except)h
-Fy(ncwa)p FD(.)68 b(These)39 b(v)-5 b(ariables)41 b(are)150
-1903 y(included)i(in)h(the)g(discussion)g(b)s(elo)m(w)g(for)g
-(completeness,)k(and)c(for)g(p)s(ossible)f(future)g(use)h(in)g(other)
-150 2013 y(op)s(erators.)275 2177 y(The)21 b(size)h Fn(J)31
-b FD(of)22 b(the)g(output)f(h)m(yp)s(erslab)g(for)g(a)h(giv)m(en)h(v)-5
-b(ariable)22 b(is)g(the)g(pro)s(duct)e(of)i(all)h(the)f(dimensions)150
-2286 y(of)43 b(the)h(input)e(v)-5 b(ariable)44 b(whic)m(h)f(are)h(not)f
-(a)m(v)m(eraged)j(o)m(v)m(er.)81 b(The)42 b(size)j Fn(N)53
-b FD(of)43 b(the)h(input)e(h)m(yp)s(erslab)150 2396 y(con)m(tributing)k
-(to)g(eac)m(h)k(\026)-49 b Fn(x)1080 2410 y Fh(j)1161
-2396 y FD(is)45 b(simply)g(the)g(pro)s(duct)f(of)i(the)f(sizes)h(of)g
-(all)g(dimensions)f(whic)m(h)g(are)150 2506 y(a)m(v)m(eraged)27
-b(o)m(v)m(er)f(\(i.e.,)h(dimensions)d(sp)s(eci\014ed)g(with)h(`)p
-Fy(-a)p FD('\).)39 b(Th)m(us)23 b Fn(N)35 b FD(is)25
-b(the)g(n)m(um)m(b)s(er)e(of)i(input)f(elemen)m(ts)150
-2615 y(whic)m(h)36 b Fr(p)-5 b(otential)5 b(ly)46 b FD(con)m(tribute)36
-b(to)h(eac)m(h)g(output)f(elemen)m(t.)58 b(An)36 b(input)f(elemen)m(t)i
-Fn(x)3127 2629 y Fh(i)3191 2615 y FD(con)m(tributes)f(to)150
-2725 y(the)31 b(output)f(elemen)m(t)h Fn(x)992 2739 y
-Fh(j)1058 2725 y FD(except)g(in)f(t)m(w)m(o)i(conditions:)199
-2888 y(1.)61 b Fn(x)382 2902 y Fh(i)434 2888 y FD(equals)26
-b(the)f Fz(missing)g(v)-5 b(alue)30 b FD(\(see)c(Section)g(3.21)g
-([Missing)g(V)-8 b(alues],)27 b(page)f(49\))g(for)f(the)g(v)-5
-b(ariable.)199 3027 y(2.)61 b Fn(x)382 3041 y Fh(i)438
-3027 y FD(is)29 b(lo)s(cated)h(at)f(a)g(p)s(oin)m(t)f(where)g(the)h
-(mask)g(condition)g(\(see)g(Section)h(4.12.1)g([Mask)g(condition],)330
-3137 y(page)h(156\))h(is)f(false.)275 3330 y(P)m(oin)m(ts)c
-Fn(x)602 3344 y Fh(i)655 3330 y FD(in)f(either)h(of)f(these)h(t)m(w)m
-(o)g(categories)i(do)d(not)g(con)m(tribute)h(to)g Fn(x)2793
-3344 y Fh(j)2828 3330 y FD(|they)f(are)g(ignored.)40
-b(W)-8 b(e)150 3439 y(no)m(w)30 b(de\014ne)g(these)h(criteria)g(more)g
-(rigorously)-8 b(.)275 3603 y(Eac)m(h)45 b Fn(x)567 3617
-y Fh(i)640 3603 y FD(has)g(an)g(asso)s(ciated)i(Bo)s(olean)f(w)m(eigh)m
-(t)h Fn(\026)2128 3617 y Fh(i)2200 3603 y FD(whose)e(v)-5
-b(alue)46 b(is)f(0)h(or)f(1)g(\(false)h(or)g(true\).)150
-3712 y(The)38 b(v)-5 b(alue)40 b(of)f Fn(\026)756 3726
-y Fh(i)822 3712 y FD(is)g(1)h(\(true\))f(unless)g Fn(x)1608
-3726 y Fh(i)1674 3712 y FD(equals)g(the)h Fz(missing)e(v)-5
-b(alue)45 b FD(\(see)40 b(Section)g(3.21)g([Missing)150
-3822 y(V)-8 b(alues],)31 b(page)f(49\))g(for)f(the)h(v)-5
-b(ariable.)41 b(Th)m(us,)29 b(for)g(a)g(v)-5 b(ariable)30
-b(with)f(no)g Fy(_FillValue)e FD(attribute,)j Fn(\026)3632
-3836 y Fh(i)3689 3822 y FD(is)150 3932 y(alw)m(a)m(ys)35
-b(1.)52 b(All)34 b FC(NCO)g FD(arithmetic)h(op)s(erators)f(\()p
-Fy(ncbo)p FD(,)g Fy(ncra)p FD(,)g Fy(ncea)p FD(,)g Fy(ncflint)p
-FD(,)f Fy(ncwa)p FD(\))g(treat)i(missing)150 4041 y(v)-5
-b(alues)31 b(analogously)-8 b(.)275 4205 y(Besides)36
-b(\(w)m(eigh)m(ted\))h(a)m(v)m(eraging,)j Fy(ncwa)p FD(,)c
-Fy(ncra)p FD(,)g(and)f Fy(ncea)f FD(also)j(compute)e(some)h(common)g
-(non-)150 4315 y(linear)c(op)s(erations)g(whic)m(h)f(ma)m(y)i(b)s(e)e
-(sp)s(eci\014ed)g(with)g(the)h(`)p Fy(-y)p FD(')g(switc)m(h)g(\(see)g
-(Section)h(3.25)g([Op)s(eration)150 4424 y(T)m(yp)s(es],)h(page)f
-(56\).)50 b(The)33 b(other)g(rank-reducing)g(op)s(erations)g(are)g
-(simple)g(v)-5 b(ariations)35 b(of)e(the)g(generic)150
-4534 y(w)m(eigh)m(ted)f(mean)e(describ)s(ed)f(ab)s(o)m(v)m(e.)42
-b(The)30 b(total)i(v)-5 b(alue)31 b(of)g Fn(x)f FD(\()p
-Fy(-y)g(ttl)p FD(\))g(is)1594 4832 y(\026)-48 b Fn(x)1643
-4846 y Fh(j)1703 4832 y FD(=)1799 4726 y Fh(i)p Fw(=)p
-Fh(N)1805 4751 y Fg(X)1812 4928 y Fh(i)p Fw(=1)1947 4832
-y Fn(\026)2002 4846 y Fh(i)2030 4832 y Fn(m)2110 4846
-y Fh(i)2137 4832 y Fn(w)2202 4846 y Fh(i)2230 4832 y
-Fn(x)2282 4846 y Fh(i)150 5121 y FD(Note)26 b(that)f(the)f(total)i(is)f
-(the)f(same)h(as)f(the)h(n)m(umerator)f(of)h(the)f(mean)h(of)f
-Fn(x)p FD(,)i(and)e(ma)m(y)h(also)g(b)s(e)f(obtained)150
-5230 y(in)45 b Fy(ncwa)e FD(b)m(y)i(using)f(the)h(`)p
-Fy(-N)p FD(')g(switc)m(h)g(\(see)h(Section)g(4.12)g([ncw)m(a)g(netCDF)f
-(W)-8 b(eigh)m(ted)47 b(Av)m(erager],)150 5340 y(page)31
-b(155\).)p eop end
-%%Page: 58 60
-TeXDict begin 58 59 bop 150 -116 a FD(58)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(The)f(minim)m(um)h(v)-5
-b(alue)31 b(of)f Fn(x)h FD(\()p Fy(-y)f(min)p FD(\))g(is)975
-502 y(\026)-49 b Fn(x)1023 516 y Fh(j)1084 502 y FD(=)24
-b(min[)p Fn(\026)1411 516 y Fw(1)1448 502 y Fn(m)1528
-516 y Fw(1)1565 502 y Fn(w)1630 516 y Fw(1)1668 502 y
-Fn(x)1720 516 y Fw(1)1757 502 y Fn(;)15 b(\026)1852 516
-y Fw(2)1889 502 y Fn(m)1969 516 y Fw(2)2006 502 y Fn(w)2071
-516 y Fw(2)2109 502 y Fn(x)2161 516 y Fw(2)2198 502 y
-Fn(;)g(:)g(:)g(:)h(;)f(\026)2454 516 y Fh(N)2518 502
-y Fn(m)2598 516 y Fh(N)2660 502 y Fn(w)2725 516 y Fh(N)2788
-502 y Fn(x)2840 516 y Fh(N)2903 502 y FD(])150 704 y(Analogously)-8
-b(,)32 b(the)f(maxim)m(um)f(v)-5 b(alue)31 b(of)g Fn(x)f
-FD(\()p Fy(-y)g(max)p FD(\))g(is)966 907 y(\026)-49 b
-Fn(x)1014 921 y Fh(j)1075 907 y FD(=)25 b(max[)p Fn(\026)1420
-921 y Fw(1)1457 907 y Fn(m)1537 921 y Fw(1)1574 907 y
-Fn(w)1639 921 y Fw(1)1676 907 y Fn(x)1728 921 y Fw(1)1766
-907 y Fn(;)15 b(\026)1861 921 y Fw(2)1898 907 y Fn(m)1978
-921 y Fw(2)2015 907 y Fn(w)2080 921 y Fw(2)2118 907 y
-Fn(x)2170 921 y Fw(2)2207 907 y Fn(;)g(:)g(:)g(:)h(;)f(\026)2463
-921 y Fh(N)2526 907 y Fn(m)2606 921 y Fh(N)2669 907 y
-Fn(w)2734 921 y Fh(N)2797 907 y Fn(x)2849 921 y Fh(N)2912
-907 y FD(])150 1110 y(Th)m(us)29 b(the)i(minima)f(and)g(maxima)h(are)g
-(determined)f(after)h(an)m(y)f(w)m(eigh)m(ts)i(are)f(applied.)275
-1269 y(The)e(square)i(of)f(the)h(mean)f(v)-5 b(alue)31
-b(of)f Fn(x)h FD(\()p Fy(-y)f(sqravg)p FD(\))f(is)1454
-1558 y(\026)-49 b Fn(x)1502 1572 y Fh(j)1563 1558 y FD(=)1659
-1415 y Fg( )1734 1433 y(P)1822 1453 y Fh(i)p Fw(=)p Fh(N)1822
-1520 y(i)p Fw(=1)1974 1497 y Fn(\026)2029 1511 y Fh(i)2057
-1497 y Fn(m)2137 1511 y Fh(i)2164 1497 y Fn(w)2229 1511
-y Fh(i)2257 1497 y Fn(x)2309 1511 y Fh(i)p 1734 1537
-603 4 v 1774 1567 a Fg(P)1862 1587 y Fh(i)p Fw(=)p Fh(N)1862
-1654 y(i)p Fw(=1)2014 1631 y Fn(\026)2069 1645 y Fh(i)2097
-1631 y Fn(m)2177 1645 y Fh(i)2204 1631 y Fn(w)2269 1645
-y Fh(i)2347 1415 y Fg(!)2412 1432 y Fw(2)150 1831 y FD(The)30
-b(mean)g(of)h(the)f(sum)g(of)g(squares)g(of)h Fn(x)f
-FD(\()p Fy(-y)g(avgsqr)p FD(\))f(is)1533 2101 y(\026)-48
-b Fn(x)1582 2115 y Fh(j)1642 2101 y FD(=)1748 1975 y
-Fg(P)1836 1996 y Fh(i)p Fw(=)p Fh(N)1836 2062 y(i)p Fw(=1)1988
-2039 y Fn(\026)2043 2053 y Fh(i)2071 2039 y Fn(m)2151
-2053 y Fh(i)2178 2039 y Fn(w)2243 2053 y Fh(i)2271 2039
-y Fn(x)2323 2006 y Fw(2)2323 2062 y Fh(i)p 1748 2080
-613 4 v 1793 2109 a Fg(P)1880 2129 y Fh(i)p Fw(=)p Fh(N)1880
-2196 y(i)p Fw(=1)2033 2173 y Fn(\026)2088 2187 y Fh(i)2115
-2173 y Fn(m)2195 2187 y Fh(i)2223 2173 y Fn(w)2288 2187
-y Fh(i)150 2366 y FD(If)21 b Fn(x)h FD(represen)m(ts)g(a)g(deviation)h
-(from)e(the)h(mean)g(of)g(another)g(v)-5 b(ariable,)25
-b Fn(x)2601 2380 y Fh(i)2653 2366 y FD(=)g Fn(y)2794
-2380 y Fh(i)2825 2366 y FA(\000)t FD(\026)-46 b Fn(y)24
-b FD(\(p)s(ossibly)d(created)i(b)m(y)150 2476 y Fy(ncbo)28
-b FD(in)g(a)h(previous)f(step\),)i(then)f(applying)f
-Fy(avgsqr)f FD(to)j Fn(x)e FD(computes)h(the)g(appro)m(ximate)h(v)-5
-b(ariance)30 b(of)150 2586 y Fn(y)s FD(.)39 b(Computing)24
-b(the)h(true)g(v)-5 b(ariance)26 b(of)f Fn(y)j FD(requires)c
-(subtracting)h(1)h(from)e(the)h(denominator,)i(discussed)150
-2695 y(b)s(elo)m(w.)41 b(F)-8 b(or)31 b(a)g(large)g(sample)g(size)g(ho)
-m(w)m(ev)m(er,)h(the)f(t)m(w)m(o)g(results)f(will)h(b)s(e)f(nearly)g
-(indistinguishable.)275 2855 y(The)f(ro)s(ot)i(mean)g(square)f(of)g
-Fn(x)g FD(\()p Fy(-y)h(rms)p FD(\))e(is)1489 3165 y(\026)-48
-b Fn(x)1538 3179 y Fh(j)1598 3165 y FD(=)1694 2986 y
-Fg(v)1694 3033 y(u)1694 3083 y(u)1694 3132 y(t)p 1782
-2986 632 4 v 1792 3040 a(P)1880 3060 y Fh(i)p Fw(=)p
-Fh(N)1880 3127 y(i)p Fw(=1)2032 3104 y Fn(\026)2087 3118
-y Fh(i)2115 3104 y Fn(m)2195 3118 y Fh(i)2222 3104 y
-Fn(w)2287 3118 y Fh(i)2315 3104 y Fn(x)2367 3073 y Fw(2)2367
-3124 y Fh(i)p 1792 3144 613 4 v 1836 3174 a Fg(P)1924
-3194 y Fh(i)p Fw(=)p Fh(N)1924 3261 y(i)p Fw(=1)2077
-3238 y Fn(\026)2132 3252 y Fh(i)2159 3238 y Fn(m)2239
-3252 y Fh(i)2267 3238 y Fn(w)2332 3252 y Fh(i)150 3447
-y FD(Th)m(us)29 b Fy(rms)h FD(simply)g(computes)g(the)h(squarero)s(ot)f
-(of)h(the)f(quan)m(tit)m(y)i(computed)e(b)m(y)h Fy(avgsqr)p
-FD(.)275 3607 y(The)37 b(ro)s(ot)i(mean)f(square)g(of)h
-Fn(x)f FD(with)g(standard-deviation-lik)m(e)j(normalization)f(\()p
-Fy(-y)30 b(rmssdn)p FD(\))37 b(is)150 3716 y(implemen)m(ted)f(as)f
-(follo)m(ws.)56 b(When)34 b(w)m(eigh)m(ts)j(are)e(not)g(sp)s
-(eci\014ed,)h(this)f(function)g(is)g(the)g(same)g(as)h(the)150
-3826 y(ro)s(ot)31 b(mean)f(square)g(of)h Fn(x)f FD(except)h(one)g(is)f
-(subtracted)h(from)f(the)g(sum)g(in)g(the)g(denominator)1467
-4132 y(\026)-49 b Fn(x)1515 4146 y Fh(j)1576 4132 y FD(=)1672
-3952 y Fg(v)1672 3999 y(u)1672 4049 y(u)1672 4099 y(t)p
-1759 3952 678 4 v 1838 4006 a(P)1926 4026 y Fh(i)p Fw(=)p
-Fh(N)1926 4093 y(i)p Fw(=1)2078 4070 y Fn(\026)2133 4084
-y Fh(i)2161 4070 y Fn(m)2241 4084 y Fh(i)2268 4070 y
-Fn(x)2320 4039 y Fw(2)2320 4091 y Fh(i)p 1769 4111 658
-4 v 1769 4204 a FA(\000)p FD(1)21 b(+)1996 4140 y Fg(P)2084
-4160 y Fh(i)p Fw(=)p Fh(N)2084 4227 y(i)p Fw(=1)2237
-4204 y Fn(\026)2292 4218 y Fh(i)2319 4204 y Fn(m)2399
-4218 y Fh(i)150 4413 y FD(If)29 b Fn(x)h FD(represen)m(ts)g(the)g
-(deviation)h(from)f(the)g(mean)g(of)g(another)g(v)-5
-b(ariable,)31 b Fn(x)2769 4427 y Fh(i)2822 4413 y FD(=)25
-b Fn(y)2963 4427 y Fh(i)3009 4413 y FA(\000)c FD(\026)-47
-b Fn(y)s FD(,)30 b(then)g(applying)150 4523 y Fy(rmssdn)e
-FD(to)i Fn(x)f FD(computes)h(the)g(standard)e(deviation)j(of)f
-Fn(y)s FD(.)40 b(In)29 b(this)g(case)i(the)e FA(\000)p
-FD(1)h(in)f(the)h(denominator)150 4633 y(comp)s(ensates)45
-b(for)f(the)g(degree)h(of)g(freedom)f(already)g(used)g(in)g(computing)h
-(\026)-46 b Fn(y)47 b FD(in)d(the)h(n)m(umerator.)150
-4742 y(Consult)30 b(a)h(statistics)h(b)s(o)s(ok)e(for)g(more)g
-(details.)275 4902 y(When)42 b(w)m(eigh)m(ts)h(are)g(sp)s(eci\014ed)e
-(it)i(is)f(unclear)h(ho)m(w)f(to)h(comp)s(ensate)g(for)f(this)g(extra)h
-(degree)g(of)150 5011 y(freedom.)59 b(W)-8 b(eigh)m(ting)39
-b(the)e(n)m(umerator)f(and)g(denominator)h(of)g(the)f(ab)s(o)m(v)m(e)i
-(b)m(y)f Fn(w)3053 5025 y Fh(i)3117 5011 y FD(and)f(subtracting)150
-5121 y(one)21 b(from)f(the)g(denominator)h(is)f(only)h(appropriate)f
-(when)g(all)h(the)g(w)m(eigh)m(ts)g(are)g(1.0.)39 b(When)20
-b(the)h(w)m(eigh)m(ts)150 5230 y(are)38 b(arbitrary)e(\(e.g.,)41
-b(Gaussian)d(w)m(eigh)m(ts\),)i(subtracting)e(one)f(from)g(the)g(sum)g
-(in)f(the)i(denominator)150 5340 y(do)s(es)28 b(not)g(necessarily)h
-(remo)m(v)m(e)h(one)e(degree)h(of)f(freedom.)40 b(Therefore)28
-b(when)f Fy(-y)i(rmssdn)e FD(is)h(requested)p eop end
-%%Page: 59 61
-TeXDict begin 59 60 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(59)150 299 y(and)37
-b(w)m(eigh)m(ts)i(are)f(sp)s(eci\014ed,)h Fy(ncwa)e FD(actually)i
-(implemen)m(ts)f(the)g Fy(rms)f FD(pro)s(cedure.)61 b
-Fy(ncea)37 b FD(and)g Fy(ncra)p FD(,)150 408 y(whic)m(h)32
-b(do)g(not)h(allo)m(w)h(w)m(eigh)m(ts)f(to)h(b)s(e)d(sp)s(eci\014ed,)i
-(alw)m(a)m(ys)h(implemen)m(t)f(the)f Fy(rmssdn)f FD(pro)s(cedure)g
-(when)150 518 y(ask)m(ed.)275 678 y(The)e(square)i(ro)s(ot)f(of)h(the)f
-(mean)h(of)f Fn(x)h FD(\()p Fy(-y)f(sqrt)p FD(\))f(is)1494
-997 y(\026)-48 b Fn(x)1543 1011 y Fh(j)1603 997 y FD(=)1699
-818 y Fg(v)1699 865 y(u)1699 914 y(u)1699 964 y(t)p 1787
-818 623 4 v 1797 871 a(P)1884 892 y Fh(i)p Fw(=)p Fh(N)1884
-959 y(i)p Fw(=1)2037 936 y Fn(\026)2092 950 y Fh(i)2119
-936 y Fn(m)2199 950 y Fh(i)2227 936 y Fn(w)2292 950 y
-Fh(i)2319 936 y Fn(x)2371 950 y Fh(i)p 1797 976 603 4
-v 1836 1005 a Fg(P)1924 1026 y Fh(i)p Fw(=)p Fh(N)1924
-1092 y(i)p Fw(=1)2077 1069 y Fn(\026)2132 1083 y Fh(i)2159
-1069 y Fn(m)2239 1083 y Fh(i)2267 1069 y Fn(w)2332 1083
-y Fh(i)150 1287 y FD(The)37 b(de\014nitions)g(of)h(some)g(of)g(these)g
-(op)s(erations)g(are)g(not)f(univ)m(ersally)h(useful.)62
-b(Mostly)39 b(they)e(w)m(ere)150 1397 y(c)m(hosen)d(to)h(facilitate)h
-(standard)d(statistical)k(computations)d(within)f(the)h
-FC(NCO)g FD(framew)m(ork.)51 b(W)-8 b(e)35 b(are)150
-1506 y(op)s(en)20 b(to)h(rede\014ning)f(and)g(or)g(adding)h(to)g(the)g
-(ab)s(o)m(v)m(e.)38 b(If)20 b(y)m(ou)h(are)g(in)m(terested)h(in)e(ha)m
-(ving)h(other)g(statistical)150 1616 y(quan)m(tities)34
-b(de\014ned)e(in)g FC(NCO)g FD(please)i(con)m(tact)h(the)e
-FC(NCO)f FD(pro)5 b(ject)33 b(\(see)h(Section)g(1.6)f([Help)h(Requests)
-150 1726 y(and)c(Bug)g(Rep)s(orts],)h(page)g(10\).)150
-1886 y(EXAMPLES)150 2046 y(Supp)s(ose)d(y)m(ou)j(wish)e(to)i(examine)g
-(the)f(v)-5 b(ariable)31 b Fy(prs_sfc\(time,lat,lon\))24
-b FD(whic)m(h)30 b(con)m(tains)i(a)e(time)150 2155 y(series)35
-b(of)f(the)g(surface)h(pressure)d(as)j(a)g(function)f(of)g(latitude)h
-(and)f(longitude.)53 b(Find)34 b(the)g(minimium)150 2265
-y(v)-5 b(alue)31 b(of)f Fy(prs_sfc)f FD(o)m(v)m(er)i(all)h(dimensions:)
-390 2425 y Fy(ncwa)47 b(-y)g(min)g(-v)g(prs_sfc)f(in.nc)g(foo.nc)150
-2585 y FD(Find)30 b(the)g(maxim)m(um)h(v)-5 b(alue)31
-b(of)f Fy(prs_sfc)e FD(at)k(eac)m(h)f(time)g(in)m(terv)-5
-b(al)32 b(for)e(eac)m(h)h(latitude:)390 2745 y Fy(ncwa)47
-b(-y)g(max)g(-v)g(prs_sfc)f(-a)h(lon)g(in.nc)f(foo.nc)150
-2905 y FD(Find)30 b(the)g(ro)s(ot-mean-square)i(v)-5
-b(alue)31 b(of)f(the)h(time-series)g(of)g Fy(prs_sfc)d
-FD(at)j(ev)m(ery)h(gridp)s(oin)m(t:)390 3065 y Fy(ncra)47
-b(-y)g(rms)g(-v)g(prs_sfc)f(in.nc)g(foo.nc)390 3174 y(ncwa)h(-y)g(rms)g
-(-v)g(prs_sfc)f(-a)h(time)g(in.nc)f(foo.nc)150 3334 y
-FD(The)34 b(previous)f(t)m(w)m(o)j(commands)d(giv)m(e)j(the)e(same)h
-(answ)m(er)f(but)f Fy(ncra)g FD(is)h(preferred)f(b)s(ecause)h(it)h(has)
-f(a)150 3444 y(smaller)25 b(memory)g(fo)s(otprin)m(t.)39
-b(Also,)27 b(b)m(y)e(default,)h Fy(ncra)e FD(lea)m(v)m(es)j(the)e
-(\(degenerate\))i Fy(time)d FD(dimension)g(in)150 3554
-y(the)31 b(output)g(\014le)h(\(whic)m(h)f(is)g(usually)g(useful\))g
-(whereas)g Fy(ncwa)f FD(remo)m(v)m(es)j(the)e Fy(time)g
-FD(dimension)f(\(unless)150 3663 y(`)p Fy(-b)p FD(')g(is)h(giv)m(en\).)
-150 3823 y(These)f(op)s(erations)h(w)m(ork)f(as)g(exp)s(ected)h(in)f(m)
-m(ulti-\014le)h(op)s(erators.)41 b(Supp)s(ose)28 b(that)j
-Fy(prs_sfc)e FD(is)h(stored)150 3933 y(in)i(m)m(ultiple)h(timesteps)g
-(p)s(er)e(\014le)i(across)f(m)m(ultiple)h(\014les,)g(sa)m(y)g(`)p
-Fy(jan.nc)p FD(',)f(`)p Fy(feb.nc)p FD(',)g(`)p Fy(march.nc)p
-FD('.)45 b(W)-8 b(e)150 4042 y(can)31 b(no)m(w)f(\014nd)f(the)h(three)h
-(mon)m(th)f(maximium)g(surface)h(pressure)e(at)i(ev)m(ery)g(p)s(oin)m
-(t.)390 4202 y Fy(ncea)47 b(-y)g(max)g(-v)g(prs_sfc)f(jan.nc)g(feb.nc)g
-(march.nc)f(out.nc)150 4362 y FD(It)24 b(is)h(p)s(ossible)f(to)h(use)f
-(a)g(com)m(bination)i(of)e(these)h(op)s(erations)g(to)g(compute)f(the)h
-(v)-5 b(ariance)25 b(and)f(standard)150 4472 y(deviation)29
-b(of)f(a)g(\014eld)f(stored)h(in)g(a)g(single)g(\014le)g(or)g(across)g
-(m)m(ultiple)g(\014les.)40 b(The)28 b(pro)s(cedure)e(to)j(compute)150
-4582 y(the)g(temp)s(oral)g(standard)f(deviation)i(of)f(the)h(surface)e
-(pressure)g(at)i(all)g(p)s(oin)m(ts)e(in)h(a)g(single)h(\014le)f(`)p
-Fy(in.nc)p FD(')150 4691 y(in)m(v)m(olv)m(es)j(three)f(steps.)390
-4851 y Fy(ncwa)47 b(-O)g(-v)g(prs_sfc)f(-a)h(time)g(in.nc)f(out.nc)390
-4961 y(ncbo)h(-O)g(-v)g(prs_sfc)f(in.nc)g(out.nc)g(out.nc)390
-5070 y(ncra)h(-O)g(-y)g(rmssdn)f(out.nc)g(out.nc)275
-5230 y FD(First)f(construct)g(the)f(temp)s(oral)h(mean)g(of)g
-Fy(prs_sfc)e FD(in)h(the)h(\014le)f(`)p Fy(out.nc)p FD('.)83
-b(Next)45 b(o)m(v)m(erwrite)150 5340 y(`)p Fy(out.nc)p
-FD(')27 b(with)i(the)f(anomaly)i(\(deviation)g(from)e(the)h(mean\).)40
-b(Finally)30 b(o)m(v)m(erwrite)g(`)p Fy(out.nc)p FD(')d(with)i(the)p
-eop end
-%%Page: 60 62
-TeXDict begin 60 61 bop 150 -116 a FD(60)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(ro)s(ot-mean-square)k(of)g
-(itself.)51 b(Note)35 b(the)f(use)f(of)h(`)p Fy(-y)c(rmssdn)p
-FD(')i(\(rather)i(than)f(`)p Fy(-y)d(rms)p FD('\))j(in)h(the)f(\014nal)
-150 408 y(step.)63 b(This)37 b(ensures)g(the)h(standard)f(deviation)h
-(is)g(correctly)h(normalized)g(b)m(y)e(one)h(few)m(er)g(than)g(the)150
-518 y(n)m(um)m(b)s(er)27 b(of)i(time)g(samples.)40 b(The)28
-b(pro)s(cedure)f(to)i(compute)g(the)f(v)-5 b(ariance)30
-b(is)e(iden)m(tical)i(except)g(for)e(the)150 628 y(use)i(of)h(`)p
-Fy(-y)f(var)p FD(')f(instead)i(of)g(`)p Fy(-y)f(rmssdn)p
-FD(')e(in)j(the)f(\014nal)g(step.)275 796 y Fy(ncap2)e
-FD(can)j(also)g(compute)g(statistics)h(lik)m(e)g(standard)d
-(deviations.)42 b(Brute-force)31 b(implemen)m(tation)150
-905 y(of)g(form)m(ulae)g(is)f(one)h(option,)g(e.g.,)390
-1073 y Fy(ncap2)46 b(-s)i('prs_sfc_sdn=sqrt\(\(prs_)o(sfc)o(-prs)o
-(_sfc)o(.av)o(g\($t)o(ime\))o(^2\))o(.tot)o(al\($)o(tim)o(e\)\)/)o
-(\($ti)o(me.)o(size)o(-1\))o(')676 1183 y(in.nc)f(out.nc)275
-1351 y FD(The)27 b(op)s(eration)i(ma)m(y)-8 b(,)30 b(of)f(course,)g(b)s
-(e)e(brok)m(en)i(in)m(to)g(m)m(ultiple)g(steps)f(in)g(order)g(to)h(arc)
-m(hiv)m(e)h(in)m(terme-)150 1461 y(diate)h(quan)m(tities,)h(suc)m(h)e
-(as)h(the)f(time-anomalies)390 1629 y Fy(ncap2)46 b(-s)i
-('prs_sfc_anm=prs_sfc-pr)o(s_s)o(fc.a)o(vg\($)o(tim)o(e\)')41
-b(\\)676 1738 y(-s)48 b('prs_sfc_sdn=sqrt\(\(prs_)o(sfc)o(_anm)o(^2\).)
-o(tot)o(al\($)o(time)o(\)\)/)o(\($ti)o(me.s)o(ize)o(-1\)')41
-b(\\)676 1848 y(in.nc)47 b(out.nc)275 2016 y(ncap2)j
-FD(supp)s(orts)g(in)m(trinsic)j(standard)e(deviation)i(functions)f
-(\(see)h(Section)f(3.25)i([Op)s(eration)150 2125 y(T)m(yp)s(es],)30
-b(page)h(56\))h(whic)m(h)e(simplify)g(the)h(ab)s(o)m(v)m(e)g
-(expression)f(to)390 2293 y Fy(ncap2)46 b(-s)i
-('prs_sfc_sdn=\(prs_sfc-p)o(rs_)o(sfc.)o(avg\()o($ti)o(me\)\))o(.rms)o
-(sdn)o(\($ti)o(me\)')41 b(in.nc)46 b(out.nc)275 2461
-y FD(These)30 b(instrinsic)g(functions)g(compute)g(the)h(answ)m(er)f
-(quic)m(kly)h(and)f(concisely)-8 b(.)275 2629 y(The)24
-b(pro)s(cedure)f(to)j(compute)e(the)h(spatial)h(standard)e(deviation)h
-(of)g(a)g(\014eld)g(in)f(a)h(single)g(\014le)g(`)p Fy(in.nc)p
-FD(')150 2739 y(in)m(v)m(olv)m(es)32 b(three)f(steps.)390
-2907 y Fy(ncwa)47 b(-O)g(-v)g(prs_sfc,gw)e(-a)i(lat,lon)f(-w)h(gw)g
-(in.nc)g(out.nc)390 3017 y(ncbo)g(-O)g(-v)g(prs_sfc,gw)e(in.nc)h
-(out.nc)g(out.nc)390 3126 y(ncwa)h(-O)g(-y)g(rmssdn)f(-v)h(prs_sfc)f
-(-a)h(lat,lon)f(-w)h(gw)g(out.nc)g(out.nc)275 3294 y
-FD(First)35 b(the)h(appropriately)g(w)m(eigh)m(ted)h(\(with)e(`)p
-Fy(-w)30 b(gw)p FD('\))35 b(spatial)i(mean)e(v)-5 b(alues)36
-b(are)g(written)g(to)g(the)150 3404 y(output)i(\014le.)66
-b(This)38 b(example)h(includes)f(the)h(use)f(of)h(a)g(w)m(eigh)m(ted)h
-(v)-5 b(ariable)40 b(sp)s(eci\014ed)e(with)g(`)p Fy(-w)30
-b(gw)p FD('.)150 3513 y(When)40 b(using)f(w)m(eigh)m(ts)i(to)g(compute)
-f(standard)f(deviations)i(one)f(m)m(ust)g(remem)m(b)s(er)f(to)i
-(include)f(the)150 3623 y(w)m(eigh)m(ts)f(in)e(the)h(initial)h(output)e
-(\014les)h(so)g(that)g(they)g(ma)m(y)g(b)s(e)f(used)g(again)h(in)g(the)
-g(\014nal)f(step.)62 b(The)150 3733 y(initial)33 b(output)f(\014le)f
-(is)h(then)g(o)m(v)m(erwritten)h(with)f(the)g(gridp)s(oin)m(t)f
-(deviations)i(from)f(the)g(spatial)h(mean.)150 3842 y(Finally)e(the)g
-(ro)s(ot-mean-square)g(of)g(the)f(appropriately)h(w)m(eigh)m(ted)h
-(spatial)f(deviations)g(is)g(tak)m(en.)275 4010 y(The)e
-Fy(ncap2)g FD(solution)i(to)g(the)g(spatially-w)m(eigh)m(ted)i
-(standard)d(deviation)h(problem)f(is)390 4178 y Fy(ncap2)46
-b(-s)i('prs_sfc_sdn=\(prs_sfc*g)o(w-p)o(rs_s)o(fc*g)o(w.a)o(vg\($)o
-(lat,)o($lo)o(n\)\).)o(rmss)o(dn\()o($lat)o(,$lo)o(n\)')41
-b(\\)676 4288 y(in.nc)47 b(out.nc)275 4456 y FD(Be)27
-b(sure)f(to)h(m)m(ultiply)g(the)f(v)-5 b(ariable)28 b(b)m(y)e(the)h(w)m
-(eigh)m(t)h(prior)d(to)j(computing)e(the)h(the)g(anomalies)h(and)150
-4566 y(the)j(standard)e(deviation.)275 4734 y(The)k(pro)s(cedure)g(to)i
-(compute)g(the)g(standard)e(deviation)i(of)g(a)f(time-series)i(across)f
-(m)m(ultiple)g(\014les)150 4843 y(in)m(v)m(olv)m(es)d(one)f(extra)g
-(step)g(since)f(all)i(the)e(input)g(m)m(ust)g(\014rst)f(b)s(e)h
-(collected)j(in)m(to)e(one)g(\014le.)390 5011 y Fy(ncrcat)46
-b(-O)h(-v)g(tpt)g(in.nc)g(in.nc)f(foo1.nc)390 5121 y(ncwa)h(-O)g(-a)g
-(time)g(foo1.nc)e(foo2.nc)390 5230 y(ncbo)i(-O)g(-v)g(tpt)g(foo1.nc)f
-(foo2.nc)g(foo3.nc)390 5340 y(ncra)h(-O)g(-y)g(rmssdn)f(foo3.nc)g
-(out.nc)p eop end
-%%Page: 61 63
-TeXDict begin 61 62 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(61)275 299 y(The)32
-b(\014rst)g(step)h(assem)m(bles)h(all)g(the)f(data)h(in)m(to)g(a)f
-(single)h(\014le.)48 b(Though)32 b(this)h(ma)m(y)h(consume)f(a)g(lot)
-150 408 y(of)28 b(temp)s(orary)g(disk)f(space,)i(it)g(is)f(more)g(or)g
-(less)g(required)f(b)m(y)h(the)g Fy(ncbo)f FD(op)s(eration)i(in)e(the)i
-(third)e(step.)150 661 y FB(3.26)68 b(T)l(yp)t(e)45 b(Con)l(v)l(ersion)
-150 738 y Fm(\013)p 200 738 3554 4 v 3553 w(\010)p 150
-1118 4 333 v 178 874 a FD(Av)-5 b(ailabilit)m(y:)43 b
-Fy(ncap2)p FD(,)30 b Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h
-Fy(ncra)p FD(,)f Fy(ncwa)178 984 y FD(Short)h(options:)41
-b(None)p 3803 1118 V 150 1170 a Fm(\012)p 200 1170 3554
-4 v 3553 w(\011)275 1351 y FD(T)m(yp)s(e)32 b(con)m(v)m(ersion)j
-(\(often)f(called)h Fz(promotion)e FD(or)g Fz(demotion)p
-FD(\))i(refers)e(to)h(the)f(casting)i(of)e(one)h(fun-)150
-1461 y(damen)m(tal)d(data)g(t)m(yp)s(e)f(to)g(another,)h(e.g.,)g(con)m
-(v)m(erting)h Fy(NC_SHORT)c FD(\(t)m(w)m(o)j(b)m(ytes\))g(to)g
-Fy(NC_DOUBLE)c FD(\(eigh)m(t)150 1571 y(b)m(ytes\).)41
-b(T)m(yp)s(e)26 b(con)m(v)m(ersion)j(is)e(automatic)i(when)e(the)g
-(language)i(carries)f(out)f(this)g(promotion)h(accord-)150
-1680 y(ing)33 b(to)g(an)f(in)m(ternal)h(set)g(of)g(rules)f(without)g
-(explicit)i(user)e(in)m(terv)m(en)m(tion.)49 b(In)31
-b(con)m(trast,)k(man)m(ual)e(t)m(yp)s(e)150 1790 y(con)m(v)m(ersion)i
-(refers)f(to)h(explicit)h(user)d(commands)h(to)h(c)m(hange)g(the)g(t)m
-(yp)s(e)f(of)g(a)h(v)-5 b(ariable)35 b(or)f(attribute.)150
-1899 y(Most)28 b(t)m(yp)s(e)g(con)m(v)m(ersion)g(happ)s(ens)e
-(automatically)-8 b(,)31 b(y)m(et)d(there)g(are)f(situations)h(in)f
-(whic)m(h)g(man)m(ual)h(t)m(yp)s(e)150 2009 y(con)m(v)m(ersion)k(is)e
-(adv)-5 b(an)m(tageous.)150 2221 y Fv(3.26.1)63 b(Automatic)40
-b(t)m(yp)s(e)h(con)m(v)m(ersion)150 2368 y FD(As)35 b(a)g(general)h
-(rule,)g(automatic)h(t)m(yp)s(e)e(con)m(v)m(ersions)h(should)e(b)s(e)g
-(a)m(v)m(oided)j(for)d(at)i(least)g(t)m(w)m(o)h(reasons.)150
-2478 y(First,)i(t)m(yp)s(e)d(con)m(v)m(ersions)i(are)f(exp)s(ensiv)m(e)
-f(since)h(they)g(require)f(creating)i(\(temp)s(orary\))e(bu\013ers)g
-(and)150 2588 y(casting)25 b(eac)m(h)f(elemen)m(t)h(of)e(a)h(v)-5
-b(ariable)24 b(from)f(the)h(t)m(yp)s(e)f(it)h(w)m(as)g(stored)f(at)h
-(to)g(some)g(other)f(t)m(yp)s(e.)39 b(Second,)150 2697
-y(the)30 b(dataset's)i(creator)g(probably)d(had)h(a)g(go)s(o)s(d)g
-(reason)h(for)f(storing)h(data)g(as,)f(sa)m(y)-8 b(,)32
-b Fy(NC_FLOAT)c FD(rather)150 2807 y(than)43 b Fy(NC_DOUBLE)p
-FD(.)77 b(In)42 b(a)i(scien)m(ti\014c)g(framew)m(ork)f(there)h(is)f(no)
-g(reason)g(to)h(store)g(data)g(with)f(more)150 2916 y(precision)29
-b(than)f(the)h(observ)-5 b(ations)29 b(w)m(ere)g(made.)40
-b(Th)m(us)28 b FC(NCO)g FD(tries)h(to)h(a)m(v)m(oid)g(p)s(erforming)d
-(automatic)150 3026 y(t)m(yp)s(e)k(con)m(v)m(ersions)g(when)e(p)s
-(erforming)h(arithmetic.)275 3192 y(Automatic)42 b(t)m(yp)s(e)f(con)m
-(v)m(ersion)i(during)d(arithmetic)i(in)f(the)g(languages)32
-b(C)40 b(and)h(F)-8 b(ortran)42 b(is)f(p)s(er-)150 3301
-y(formed)24 b(only)i(when)e(necessary)-8 b(.)39 b(All)26
-b(op)s(erands)e(in)h(an)g(op)s(eration)g(are)h(con)m(v)m(erted)g(to)g
-(the)f(most)h(precise)150 3411 y(t)m(yp)s(e)h(b)s(efore)f(the)g(op)s
-(eration)h(tak)m(es)h(place.)40 b(Ho)m(w)m(ev)m(er,)30
-b(follo)m(wing)d(this)g(parsimonious)f(con)m(v)m(ersion)h(rule)150
-3521 y(dogmatically)e(results)e(in)f(n)m(umerous)g(headac)m(hes.)39
-b(F)-8 b(or)24 b(example,)h(the)e(a)m(v)m(erage)i(of)e(the)g(t)m(w)m(o)
-h Fy(NC_SHORT)p FD(s)150 3630 y Fy(17000s)31 b FD(and)i
-Fy(17000s)e FD(results)i(in)g(garbage)i(since)e(the)h(in)m(termediate)g
-(v)-5 b(alue)34 b(whic)m(h)f(holds)g(their)g(sum)150
-3740 y(is)c(also)g(of)g(t)m(yp)s(e)f Fy(NC_SHORT)e FD(and)i(th)m(us)g
-(cannot)h(represen)m(t)g(v)-5 b(alues)29 b(greater)g(than)g(32,767)3230
-3707 y Fw(14)3303 3740 y FD(.)40 b(There)28 b(are)150
-3849 y(v)-5 b(alid)36 b(reasons)g(for)f(exp)s(ecting)h(this)g(op)s
-(eration)g(to)g(succeed)g(and)f(the)h FC(NCO)g FD(philosoph)m(y)f(is)h
-(to)g(mak)m(e)150 3959 y(op)s(erators)41 b(do)g(what)g(y)m(ou)h(w)m(an)
-m(t,)j(not)c(what)g(is)h(most)f(pure.)72 b(Th)m(us,)43
-b(unlik)m(e)f(C)e(and)h(F)-8 b(ortran,)45 b(but)150 4069
-y(lik)m(e)33 b(man)m(y)e(other)h(higher)f(lev)m(el)i(in)m(terpreted)e
-(languages,)i FC(NCO)f FD(arithmetic)g(op)s(erators)g(will)f(p)s
-(erform)150 4178 y(automatic)h(t)m(yp)s(e)f(con)m(v)m(ersion)h(when)d
-(all)i(the)g(follo)m(wing)h(conditions)e(are)h(met)2868
-4145 y Fw(15)2939 4178 y FD(:)199 4344 y(1.)61 b(The)40
-b(op)s(erator)h(is)g Fy(ncea)p FD(,)i Fy(ncra)p FD(,)g(or)d
-Fy(ncwa)p FD(.)71 b Fy(ncbo)40 b FD(is)h(not)g(y)m(et)h(included)e(in)h
-(this)f(list)i(b)s(ecause)330 4454 y(subtraction)31 b(did)e(not)i(b)s
-(ene\014t)e(from)h(t)m(yp)s(e)h(con)m(v)m(ersion.)42
-b(This)29 b(will)i(c)m(hange)h(in)e(the)g(future)199
-4595 y(2.)61 b(The)36 b(arithmetic)h(op)s(eration)g(could)f(b)s
-(ene\014t)f(from)h(t)m(yp)s(e)g(con)m(v)m(ersion.)59
-b(Op)s(erations)36 b(that)h(could)330 4704 y(b)s(ene\014t)j(\(e.g.,)k
-(from)c(larger)i(represen)m(table)f(sums\))e(include)h(a)m(v)m
-(eraging,)46 b(summation,)d(or)e(an)m(y)330 4814 y Fy(")p
-FD(hard)p Fy(")23 b FD(arithmetic.)39 b(T)m(yp)s(e)24
-b(con)m(v)m(ersion)i(do)s(es)d(not)i(b)s(ene\014t)e(searc)m(hing)i(for)
-f(minima)g(and)f(maxima)330 4924 y(\(`)p Fy(-y)30 b(min)p
-FD(',)g(or)h(`)p Fy(-y)f(max)p FD('\).)p 150 5051 1200
-4 v 166 5118 a Fw(14)300 5150 y Fu(32767)23 b(=)f(2)633
-5118 y Fw(15)720 5150 y Ff(\000)17 b Fu(1)166 5221 y
-Fw(15)275 5253 y Fu(Op)r(erators)26 b(b)r(egan)g(p)r(erforming)g(t)n
-(yp)r(e)f(con)n(v)n(ersions)h(b)r(efore)h(arithmetic)f(in)g
-Fs(NCO)f Fu(v)n(ersion)h(1.2)q(,)g(August,)f(2000.)36
-b(Pre-)275 5340 y(vious)25 b(v)n(ersions)i(nev)n(er)e(p)r(erformed)h
-(unnecessary)f(t)n(yp)r(e)g(con)n(v)n(ersion)h(for)h(arithmetic.)p
-eop end
-%%Page: 62 64
-TeXDict begin 62 63 bop 150 -116 a FD(62)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)199 299 y(3.)61 b(The)37
-b(v)-5 b(ariable)39 b(on)f(disk)f(is)h(of)g(t)m(yp)s(e)g
-Fy(NC_BYTE)p FD(,)g Fy(NC_CHAR)p FD(,)g Fy(NC_SHORT)p
-FD(,)g(or)g Fy(NC_INT)p FD(.)61 b(T)m(yp)s(e)38 b Fy(NC_)330
-408 y(DOUBLE)c FD(is)i(not)h(t)m(yp)s(e)f(con)m(v)m(erted)i(b)s(ecause)
-e(there)g(is)g(no)g(t)m(yp)s(e)g(of)h(higher)e(precision)i(to)f(con)m
-(v)m(ert)330 518 y(to.)44 b(T)m(yp)s(e)30 b Fy(NC_FLOAT)f
-FD(is)i(not)h(t)m(yp)s(e)f(con)m(v)m(erted)i(b)s(ecause,)e(in)g(our)g
-(judgemen)m(t,)g(the)h(p)s(erformance)330 628 y(p)s(enalt)m(y)f(of)f
-(alw)m(a)m(ys)i(doing)f(so)f(w)m(ould)g(out)m(w)m(eigh)i(the)f
-(\(extremely)h(rare\))e(p)s(oten)m(tial)i(b)s(ene\014ts.)275
-813 y(When)e(these)i(criteria)g(are)g(all)g(met,)g(the)f(op)s(erator)g
-(promotes)h(the)f(v)-5 b(ariable)32 b(in)f(question)g(to)h(t)m(yp)s(e)
-150 922 y Fy(NC_DOUBLE)p FD(,)h(p)s(erforms)g(all)i(the)g(arithmetic)h
-(op)s(erations,)g(casts)f(the)g Fy(NC_DOUBLE)d FD(t)m(yp)s(e)i(bac)m(k)
-i(to)f(the)150 1032 y(original)g(t)m(yp)s(e,)g(and)e(\014nally)h
-(writes)g(the)g(result)g(to)g(disk.)51 b(The)33 b(result)h(written)g
-(to)h(disk)e(ma)m(y)h(not)h(b)s(e)150 1142 y(what)40
-b(y)m(ou)f(exp)s(ect,)k(b)s(ecause)d(of)g(incommensurate)f(ranges)h
-(represen)m(ted)g(b)m(y)f(di\013eren)m(t)h(t)m(yp)s(es,)j(and)150
-1251 y(b)s(ecause)34 b(of)g(\(lac)m(k)i(of)7 b(\))34
-b(rounding.)50 b(First,)35 b(con)m(tin)m(uing)g(the)f(ab)s(o)m(v)m(e)h
-(example,)h(the)e(a)m(v)m(erage)j(\(e.g.,)f(`)p Fy(-y)150
-1361 y(avg)p FD('\))20 b(of)h Fy(17000s)d FD(and)i Fy(17000s)f
-FD(is)h(written)h(to)g(disk)f(as)h Fy(17000s)p FD(.)35
-b(The)20 b(t)m(yp)s(e)h(con)m(v)m(ersion)h(feature)f(of)f
-FC(NCO)150 1470 y FD(mak)m(es)30 b(this)f(p)s(ossible)g(since)g(the)h
-(arithmetic)g(and)f(in)m(termediate)i(v)-5 b(alues)29
-b(are)h(stored)f(as)g Fy(NC_DOUBLE)p FD(s,)150 1580 y(i.e.,)k
-Fy(34000.0d)c FD(and)i(only)h(the)f(\014nal)h(result)f(m)m(ust)g(b)s(e)
-g(represen)m(ted)h(as)f(an)h Fy(NC_SHORT)p FD(.)41 b(Without)33
-b(the)150 1690 y(t)m(yp)s(e)j(con)m(v)m(ersion)g(feature)g(of)g
-FC(NCO)p FD(,)f(the)h(a)m(v)m(erage)i(w)m(ould)d(ha)m(v)m(e)i(b)s(een)d
-(garbage)j(\(alb)s(eit)f(predictable)150 1799 y(garbage)25
-b(near)f Fy(-15768s)p FD(\).)37 b(Similarly)-8 b(,)25
-b(the)f(total)i(\(e.g.,)h(`)p Fy(-y)j(ttl)p FD('\))23
-b(of)h Fy(17000s)e FD(and)h Fy(17000s)f FD(written)i(to)150
-1909 y(disk)29 b(is)h(garbage)h(\(actually)h Fy(-31536s)p
-FD(\))c(since)j(the)f(\014nal)f(result)h(\(the)g(true)g(total\))i(of)e
-(34000)i(is)e(outside)150 2018 y(the)h(range)f(of)h(t)m(yp)s(e)f
-Fy(NC_SHORT)p FD(.)275 2178 y(T)m(yp)s(e)k(con)m(v)m(ersions)i(use)e
-(the)h Fy(floor)e FD(function)i(to)g(con)m(v)m(ert)h(\015oating)g(p)s
-(oin)m(t)f(n)m(um)m(b)s(er)e(to)i(in)m(tegers.)150 2288
-y(T)m(yp)s(e)g(con)m(v)m(ersions)i(do)e(not)h(attempt)g(to)h(round)c
-(\015oating)k(p)s(oin)m(t)e(n)m(um)m(b)s(ers)f(to)j(the)e(nearest)h(in)
-m(teger.)150 2397 y(Th)m(us)42 b(the)h(a)m(v)m(erage)j(of)d
-Fy(1s)f FD(and)g Fy(2s)h FD(is)g(computed)f(in)h(double)g(precisions)g
-(arithmetic)h(as)f(\()p Fy(1)p Fn(:)p Fy(0d)28 b FD(+)150
-2507 y Fy(1)p Fn(:)p Fy(5d)o FD(\))p Fn(=)p FD(2\))f(=)e
-Fy(1)p Fn(:)p Fy(5d)p FD(.)40 b(This)27 b(result)h(is)g(con)m(v)m
-(erted)i(to)f Fy(NC_SHORT)d FD(and)i(stored)g(on)g(disk)g(as)g
-Fy(floor)p FD(\()p Fy(1)p Fn(:)p Fy(5d)p FD(\))c(=)150
-2616 y Fy(1s)245 2583 y Fw(16)316 2616 y FD(.)50 b(Th)m(us)32
-b(no)h Fy(")p FD(rounding)f(up)p Fy(")g FD(is)i(p)s(erformed.)48
-b(The)33 b(t)m(yp)s(e)g(con)m(v)m(ersion)i(rules)e(of)e(C)i(can)g(b)s
-(e)g(stated)150 2726 y(as)g(follo)m(ws:)47 b(If)33 b
-Fz(n)f FD(is)i(an)e(in)m(teger)j(then)e(an)m(y)g(\015oating)h(p)s(oin)m
-(t)f(v)-5 b(alue)33 b Fz(x)40 b FD(satisfying)33 b Fn(n)d
-FA(\024)f Fn(x)h(<)f(n)21 b FD(+)h(1)34 b(will)150 2836
-y(ha)m(v)m(e)e(the)e(v)-5 b(alue)31 b Fz(n)f FD(when)f(con)m(v)m(erted)
-j(to)f(an)f(in)m(teger.)150 3036 y Fv(3.26.2)63 b(Man)m(ual)41
-b(t)m(yp)s(e)f(con)m(v)m(ersion)150 3183 y Fy(ncap2)26
-b FD(pro)m(vides)i(in)m(trinsic)g(functions)f(for)h(p)s(erforming)e
-(man)m(ual)i(t)m(yp)s(e)g(con)m(v)m(ersions.)41 b(This,)28
-b(for)f(exam-)150 3292 y(ple,)i(con)m(v)m(erts)g(v)-5
-b(ariable)28 b Fy(tpt)f FD(to)i(external)f(t)m(yp)s(e)g
-Fy(NC_SHORT)e FD(\(a)i(C-t)m(yp)s(e)g Fy(short)p FD(\),)g(and)f(v)-5
-b(ariable)28 b Fy(prs)f FD(to)150 3402 y(external)k(t)m(yp)s(e)g
-Fy(NC_DOUBLE)d FD(\(a)j(C-t)m(yp)s(e)f Fy(double)p FD(\).)390
-3562 y Fy(ncap2)46 b(-s)i('tpt=short\(tpt\);prs=dou)o(ble)o(\(prs)o
-(\)')42 b(in.nc)k(out.nc)275 3722 y FD(See)30 b(Section)h(4.1)h([ncap2)
-f(netCDF)g(Arithmetic)g(Pro)s(cessor],)g(page)g(68,)g(for)g(more)f
-(details.)150 3955 y FB(3.27)68 b(Batc)l(h)45 b(Mo)t(de)150
-4015 y Fm(\013)p 200 4015 3554 4 v 3553 w(\010)p 150
-4505 4 442 v 178 4152 a FD(Av)-5 b(ailabilit)m(y:)43
-b(All)31 b(op)s(erators)178 4261 y(Short)f(options:)41
-b(`)p Fy(-O)p FD(',)31 b(`)p Fy(-A)p FD(')178 4371 y(Long)g(options:)41
-b(`)p Fy(--ovr)p FD(',)29 b(`)p Fy(--overwrite)p FD(',)g(`)p
-Fy(--apn)p FD(',)g(`)p Fy(--append)p FD(')p 3803 4505
-V 150 4557 a Fm(\012)p 200 4557 3554 4 v 3553 w(\011)275
-4727 y FD(If)35 b(the)h Fz(output-\014le)41 b FD(sp)s(eci\014ed)35
-b(for)h(a)g(command)g(is)g(a)g(pre-existing)h(\014le,)h(then)d(the)h
-(op)s(erator)h(will)150 4837 y(prompt)d(the)i(user)e(whether)h(to)h(o)m
-(v)m(erwrite)g(\(erase\))h(the)e(existing)i Fz(output-\014le)p
-FD(,)f(attempt)h(to)f(app)s(end)150 4947 y(to)43 b(it,)k(or)42
-b(ab)s(ort)h(the)g(op)s(eration.)78 b(Ho)m(w)m(ev)m(er,)48
-b(in)m(teractiv)m(e)d(questions)e(reduce)f(pro)s(ductivit)m(y)h(when)
-150 5056 y(pro)s(cessing)38 b(large)i(amoun)m(ts)f(of)f(data.)66
-b(Therefore)38 b FC(NCO)g FD(also)i(implemen)m(ts)f(t)m(w)m(o)g(w)m(a)m
-(ys)h(to)f(o)m(v)m(erride)p 150 5154 1200 4 v 166 5221
-a Fw(16)293 5253 y Fu(The)18 b(actual)h(t)n(yp)r(e)f(con)n(v)n(ersions)
-h(are)g(handled)e(b)n(y)h(in)n(trinsic)g(C-language)i(t)n(yp)r(e)e(con)
-n(v)n(ersion,)i(so)f(the)f Ft(floor\(\))i Fu(function)275
-5340 y(is)26 b(not)f(explicitly)h(called,)h(though)e(the)h(results)g(w)
-n(ould)g(b)r(e)f(the)h(same)g(if)g(it)g(w)n(ere.)p eop
-end
-%%Page: 63 65
-TeXDict begin 63 64 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(63)150 299 y(its)41
-b(o)m(wn)g(safet)m(y)h(features,)i(the)d(`)p Fy(-O)p
-FD(')f(and)g(`)p Fy(-A)p FD(')h(switc)m(hes.)73 b(Sp)s(ecifying)40
-b(`)p Fy(-O)p FD(')g(tells)i(the)f(op)s(erator)g(to)150
-408 y(o)m(v)m(erwrite)30 b(an)m(y)f(existing)g Fz(output-\014le)34
-b FD(without)28 b(prompting)g(the)h(user)f(in)m(teractiv)m(ely)-8
-b(.)43 b(Sp)s(ecifying)28 b(`)p Fy(-A)p FD(')150 518
-y(tells)33 b(the)e(op)s(erator)h(to)g(attempt)h(to)f(app)s(end)e(to)i
-(an)m(y)g(existing)h Fz(output-\014le)j FD(without)c(prompting)f(the)
-150 628 y(user)h(in)m(teractiv)m(ely)-8 b(.)53 b(These)33
-b(switc)m(hes)h(are)f(useful)f(in)h(batc)m(h)h(en)m(vironmen)m(ts)g(b)s
-(ecause)f(they)g(suppress)150 737 y(in)m(teractiv)m(e)g(k)m(eyb)s(oard)
-d(input.)150 970 y FB(3.28)68 b(History)46 b(A)l(ttribute)150
-1053 y Fm(\013)p 200 1053 3554 4 v 3553 w(\010)p 150
-1543 4 442 v 178 1190 a FD(Av)-5 b(ailabilit)m(y:)43
-b(All)31 b(op)s(erators)178 1299 y(Short)f(options:)41
-b(`)p Fy(-h)p FD(')178 1409 y(Long)31 b(options:)41 b(`)p
-Fy(--hst)p FD(',)29 b(`)p Fy(--history)p FD(')p 3803
-1543 V 150 1595 a Fm(\012)p 200 1595 3554 4 v 3553 w(\011)275
-1765 y FD(All)e(op)s(erators)g(automatically)j(app)s(end)25
-b(a)j Fy(history)c FD(global)29 b(attribute)e(to)h(an)m(y)f(\014le)g
-(they)g(create)i(or)150 1875 y(mo)s(dify)-8 b(.)39 b(The)26
-b Fy(history)e FD(attribute)j(consists)g(of)g(a)g(timestamp)g(and)f
-(the)g(full)g(string)h(of)f(the)h(in)m(v)m(o)s(cation)150
-1984 y(command)e(to)i(the)f(op)s(erator,)h(e.g.,)h(`)p
-Fy(Mon)i(May)f(26)h(20:10:24)e(1997:)h(ncks)g(in.nc)g(foo.nc)p
-FD('.)38 b(The)25 b(full)150 2094 y(con)m(ten)m(ts)30
-b(of)f(an)f(existing)i Fy(history)c FD(attribute)j(are)g(copied)g(from)
-f(the)g(\014rst)g Fz(input-\014le)33 b FD(to)c(the)g
-Fz(output-)150 2203 y(\014le)p FD(.)39 b(The)25 b(timestamps)h(app)s
-(ear)f(in)h(rev)m(erse)g(c)m(hronological)i(order,)f(with)e(the)h(most)
-g(recen)m(t)g(timestamp)150 2313 y(app)s(earing)37 b(\014rst)h(in)f
-(the)h Fy(history)e FD(attribute.)64 b(Since)38 b FC(NCO)f
-FD(and)g(man)m(y)h(other)g(netCDF)h(op)s(erators)150
-2423 y(adhere)33 b(to)h(the)g Fy(history)d FD(con)m(v)m(en)m(tion,)36
-b(the)e(en)m(tire)g(data)g(pro)s(cessing)f(path)g(of)h(a)g(giv)m(en)g
-(netCDF)g(\014le)150 2532 y(ma)m(y)h(often)g(b)s(e)e(deduced)h(from)g
-(examination)h(of)g(its)f Fy(history)f FD(attribute.)53
-b(As)34 b(of)h(Ma)m(y)-8 b(,)37 b(2002,)g FC(NCO)150
-2642 y FD(is)f(case-insensitiv)m(e)i(to)f(the)f(sp)s(elling)g(of)g(the)
-g Fy(history)e FD(attribute)j(name.)57 b(Th)m(us)35 b(attributes)h
-(named)150 2751 y Fy(History)20 b FD(or)j Fy(HISTORY)d
-FD(\(whic)m(h)j(are)g(non-standard)e(and)h(not)h(recommended\))f(will)h
-(b)s(e)e(treated)j(as)f(v)-5 b(alid)150 2861 y(history)40
-b(attributes.)71 b(When)40 b(more)g(than)g(one)h(global)g(attribute)g
-(\014ts)f(the)h(case-insensitiv)m(e)h(searc)m(h)150 2971
-y(for)e Fy(")p FD(history)p Fy(")p FD(,)i(the)e(\014rst)f(one)h(found)e
-(will)j(b)s(e)e(used.)68 b Fy(history)38 b FD(attribute)j(T)-8
-b(o)40 b(a)m(v)m(oid)i(information)150 3080 y(o)m(v)m(erkill,)g(all)c
-(op)s(erators)g(ha)m(v)m(e)h(an)e(optional)i(switc)m(h)f(\(`)p
-Fy(-h)p FD(',)h(`)p Fy(--hst)p FD(',)g(or)f(`)p Fy(--history)p
-FD('\))e(to)i(o)m(v)m(erride)150 3190 y(automatically)29
-b(app)s(ending)24 b(the)i Fy(history)e FD(attribute)i(\(see)h(Section)g
-(4.2)g([ncatted)g(netCDF)f(A)m(ttribute)150 3299 y(Editor],)35
-b(page)f(118\).)53 b(Note)35 b(that)f(the)g(`)p Fy(-h)p
-FD(')f(switc)m(h)h(also)h(turns)d(o\013)j(writing)e(the)h
-Fy(nco_input_file_)150 3409 y(list)29 b FD(attribute)i(for)f(m)m
-(ulti-\014le)i(op)s(erators)e(\(see)i(Section)f(3.29)h([File)g(List)e
-(A)m(ttributes],)i(page)f(63\).)150 3641 y FB(3.29)68
-b(File)46 b(List)f(A)l(ttributes)150 3702 y Fm(\013)p
-200 3702 V 3553 w(\010)p 150 4192 4 442 v 178 3838 a
-FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncea)p FD(,)30 b Fy(ncecat)p
-FD(,)f Fy(ncra)p FD(,)g Fy(ncrcat)178 3948 y FD(Short)h(options:)41
-b(`)p Fy(-H)p FD(')178 4057 y(Long)31 b(options:)41 b(`)p
-Fy(--fl_lst_in)p FD(',)28 b(`)p Fy(--file_list)p FD(')p
-3803 4192 V 150 4243 a Fm(\012)p 200 4243 3554 4 v 3553
-w(\011)275 4413 y FD(Man)m(y)41 b(metho)s(ds)g(of)g(sp)s(ecifying)g
-(large)h(n)m(um)m(b)s(ers)e(of)h(input)g(\014le)g(names)g(pass)g(these)
-g(names)g(via)150 4523 y(pip)s(es,)29 b(enco)s(dings,)g(or)h(argumen)m
-(t)g(transfer)e(programs)h(\(see)i(Section)f(2.7)g([Large)h(Num)m(b)s
-(ers)d(of)h(Files],)150 4633 y(page)34 b(16\).)52 b(When)34
-b(these)g(metho)s(ds)f(are)h(used,)g(the)g(input)f(\014le)h(list)g(is)g
-(not)g(explicitly)h(passed)e(on)h(the)150 4742 y(command)e(line.)48
-b(This)32 b(results)g(in)g(a)h(loss)g(of)g(information)f(since)h(the)g
-Fy(history)e FD(attribute)i(no)f(longer)150 4852 y(con)m(tains)g(the)e
-(exact)i(command)e(b)m(y)g(whic)m(h)h(the)f(\014le)h(w)m(as)f(created.)
-275 5011 y FC(NCO)g FD(solv)m(es)i(this)e(dilemma)h(b)m(y)g(arc)m
-(hiving)g(input)f(\014le)h(list)g(attributes.)42 b(When)31
-b(the)g(input)f(\014le)g(list)150 5121 y(to)g(a)g(m)m(ulti-\014le)g(op)
-s(erator)g(is)g(sp)s(eci\014ed)e(via)j Fy(stdin)p FD(,)d(the)i(op)s
-(erator,)g(b)m(y)f(default,)h(attac)m(hes)i(t)m(w)m(o)f(global)150
-5230 y(attributes)f(to)h(an)m(y)f(\014le)f(they)h(create)h(or)f(mo)s
-(dify)-8 b(.)40 b(The)29 b Fy(nco_input_file_number)24
-b FD(global)31 b(attribute)150 5340 y(con)m(tains)45
-b(the)g(n)m(um)m(b)s(er)e(of)h(input)f(\014les,)48 b(and)c
-Fy(nco_input_file_list)39 b FD(con)m(tains)45 b(the)f(\014le)h(names,)p
-eop end
-%%Page: 64 66
-TeXDict begin 64 65 bop 150 -116 a FD(64)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(sp)s(eci\014ed)e(as)h(standard)f
-(input)g(to)h(the)g(m)m(ulti-\014le)h(op)s(erator.)40
-b(This)28 b(information)h(helps)g(to)g(v)m(erify)g(that)150
-408 y(all)e(input)f(\014les)g(the)h(user)f(thinks)g(w)m(ere)h(pip)s(ed)
-e(through)g Fy(stdin)g FD(actually)k(arriv)m(ed.)39 b(Without)27
-b(the)g Fy(nco_)150 518 y(input_file_list)37 b FD(attribute,)46
-b(the)c(information)g(is)f(lost)i(forev)m(er)f(and)f(the)h(\\c)m(hain)h
-(of)f(evidence")150 628 y(w)m(ould)30 b(b)s(e)g(brok)m(en.)275
-787 y(The)36 b(`)p Fy(-H)p FD(')g(switc)m(h)h(o)m(v)m(errides)h
-(\(turns)d(o\013)7 b(\))38 b(the)e(default)h(b)s(eha)m(vior)g(of)g
-(writing)f(the)h(input)f(\014le)g(list)150 897 y(global)h(attributes)g
-(when)e(input)g(is)h(from)g Fy(stdin)p FD(.)56 b(The)36
-b(`)p Fy(-h)p FD(')g(switc)m(h)g(do)s(es)g(this)g(to)s(o,)i(and)e
-(turns)f(o\013)150 1006 y(the)e Fy(history)f FD(attribute)i(as)f(w)m
-(ell)h(\(see)h(Section)f(3.28)g([History)h(A)m(ttribute],)g(page)f
-(63\).)51 b(Hence)34 b(b)s(oth)150 1116 y(switc)m(hes)25
-b(allo)m(ws)h(space-conscious)h(users)d(to)h(a)m(v)m(oid)h(storing)g
-(what)e(ma)m(y)i(amoun)m(t)f(to)g(man)m(y)g(thousands)150
-1225 y(of)31 b(\014lenames)f(in)g(a)h(metadata)h(attribute.)150
-1445 y FB(3.30)68 b Fv(CF)45 b FB(Con)l(v)l(en)l(tions)150
-1505 y Fm(\013)p 200 1505 3554 4 v 3553 w(\010)p 150
-1885 4 333 v 178 1641 a FD(Av)-5 b(ailabilit)m(y:)43
-b Fy(ncbo)p FD(,)30 b Fy(ncea)p FD(,)f Fy(ncecat)p FD(,)g
-Fy(ncflint)p FD(,)g Fy(ncpdq)p FD(,)g Fy(ncra)p FD(,)h
-Fy(ncwa)178 1751 y FD(Short)g(options:)41 b(None)p 3803
-1885 V 150 1937 a Fm(\012)p 200 1937 3554 4 v 3553 w(\011)275
-2112 y FC(NCO)21 b FD(recognizes)j(the)e(Climate)h(and)f(F)-8
-b(orecast)24 b(\()p FC(CF)p FD(\))f(metadata)h(con)m(v)m(en)m(tions,)i
-(and)21 b(applies)h(sp)s(ecial)150 2222 y(rules)32 b(to)g(suc)m(h)g
-(data.)46 b FC(NCO)32 b FD(also)h(handles)e(older)h FC(NCAR)h
-FD(mo)s(del)e(datasets,)j(suc)m(h)e(as)g FC(CCM)g FD(and)f(early)150
-2331 y FC(CCSM)f FD(datasets,)i(with)e(its)h FC(CF)f
-FD(rules)g(ev)m(en)h(though)f(the)g(earlier)h(data)g(ma)m(y)g(not)g
-(con)m(tain)g(an)g(explicit)150 2441 y Fy(Conventions)g
-FD(attribute)j(\(e.g.,)j(`)p Fy(CF-1.0)p FD('\).)51 b(W)-8
-b(e)35 b(refer)e(to)i(all)g(suc)m(h)e(data)i(collectiv)m(ely)j(as)c
-FC(CF)g FD(data.)150 2551 y(Skip)c(this)g(section)h(if)g(y)m(ou)f(nev)m
-(er)h(w)m(ork)g(with)f FC(CF)g FD(data.)275 2710 y(The)293
-b FC(CF)h FD(netCDF)g(con)m(v)m(en)m(tions)j(are)d(describ)s(ed)f(here)
-150 2820 y(\()p Fy(http://cf-pcmdi.llnl.gov/d)o(ocu)o(ment)o(s/cf)o
-(-co)o(nven)o(tion)o(s/1)o(.5/c)o(f-co)o(nve)o(ntio)o(ns.)o(html)o
-(#coo)o(rdi)o(nate)o(-sys)o(tem)o FD(\).)150 2929 y(Most)50
-b FC(CF)e FD(netCDF)i(con)m(v)m(en)m(tions)h(are)e(transparen)m(t)f(to)
-i FC(NCO)2433 2896 y Fw(17)2503 2929 y FD(.)f(There)f(are)h(no)g(kno)m
-(wn)f(pitfalls)150 3039 y(asso)s(ciated)30 b(with)f(using)f(an)m(y)h
-FC(NCO)g FD(op)s(erator)g(on)g(\014les)g(adhering)f(to)i(these)f(con)m
-(v)m(en)m(tions)3251 3006 y Fw(18)3323 3039 y FD(.)41
-b(Ho)m(w)m(ev)m(er,)150 3148 y(to)49 b(facilitate)i(maxim)m(um)d(user)g
-(friendliness,)k FC(NCO)c FD(applies)g(sp)s(ecial)h(rules)f(to)h
-(certain)g(v)-5 b(ariables)150 3258 y(in)41 b FC(CF)g
-FD(\014les.)72 b(The)41 b(sp)s(ecial)g(functions)g(are)g(not)g
-(required)f(b)m(y)h(the)g FC(CF)g FD(netCDF)h(con)m(v)m(en)m(tions,)k
-(y)m(et)150 3367 y(exp)s(erience)31 b(sho)m(ws)f(that)h(they)f
-(simplify)g(data)h(analysis.)275 3527 y(Curren)m(tly)-8
-b(,)26 b FC(NCO)e FD(determines)h(whether)g(a)g(data\014le)h(is)f(a)h
-FC(CF)f FD(output)g(data\014le)h(simply)e(b)m(y)h(c)m(hec)m(king)150
-3636 y(\(case-insensitiv)m(ely\))38 b(whether)c(the)g(v)-5
-b(alue)35 b(of)g(the)f(global)i(attribute)f Fy(Conventions)d
-FD(\(if)i(an)m(y\))i(equals)150 3746 y(`)p Fy(CF-1.0)p
-FD(')e(or)i(`)p Fy(NCAR-CSM)p FD(')e(Should)g Fy(Conventions)e
-FD(equal)k(either)g(of)g(these)g(in)f(the)h(\(\014rst\))f
-Fz(input-\014le)p FD(,)150 3856 y FC(NCO)28 b FD(will)h(apply)f(sp)s
-(ecial)h(rules)e(to)j(certain)f(v)-5 b(ariables)29 b(b)s(ecause)f(of)h
-(their)f(usual)g(meaning)g(in)g FC(CF)h FD(\014les.)150
-3965 y FC(NCO)39 b FD(will)h(not)g(a)m(v)m(erage)j(the)c(follo)m(wing)j
-(v)-5 b(ariables)40 b(often)g(found)e(in)i FC(CF)f FD(\014les:)60
-b Fy(ntrm)p FD(,)41 b Fy(ntrn)p FD(,)g Fy(ntrk)p FD(,)150
-4075 y Fy(ndbase)p FD(,)27 b Fy(nsbase)p FD(,)g Fy(nbdate)p
-FD(,)g Fy(nbsec)p FD(,)h Fy(mdt)p FD(,)g Fy(mhisf)p FD(.)38
-b(These)28 b(v)-5 b(ariables)29 b(con)m(tain)g(scalar)g(metadata)h(suc)
-m(h)150 4184 y(as)25 b(the)g(resolution)g(of)g(the)g(host)f(geoph)m
-(ysical)j(mo)s(del)e(and)f(it)h(mak)m(es)g(no)g(sense)f(to)i(c)m(hange)
-g(their)e(v)-5 b(alues.)275 4344 y(F)d(urthermore,)39
-b(the)f Fz(size)g(and)f(rank-preserving)g(arithmetic)h(op)s(erators)k
-FD(try)37 b(not)h(to)g(op)s(erate)g(on)150 4453 y(certain)32
-b(grid)f(prop)s(erties.)42 b(These)31 b(op)s(erators)h(are)f
-Fy(ncap)p FD(,)g Fy(ncbo)p FD(,)f Fy(ncea)p FD(,)h Fy(ncflint)p
-FD(,)e(and)i Fy(ncpdq)f FD(\(when)p 150 4528 1200 4 v
-166 4595 a Fw(17)298 4627 y Fu(The)23 b(exception)g(is)h(app)r
-(ending/altering)h(the)e(attributes)g Ft(x_op)p Fu(,)i
-Ft(y_op)p Fu(,)g Ft(z_op)p Fu(,)g(and)e Ft(t_op)h Fu(for)g(v)l
-(ariables)g(whic)n(h)g(ha)n(v)n(e)275 4714 y(b)r(een)f(a)n(v)n(eraged)i
-(across)g(space)g(and)f(time)g(dimensions.)35 b(This)24
-b(feature)h(is)g(sc)n(heduled)e(for)i(future)f(inclusion)h(in)f
-Fs(NCO)p Fu(.)166 4785 y Fw(18)308 4817 y Fu(The)33 b
-Fs(CF)g Fu(con)n(v)n(en)n(tions)g(recommend)g Ft(time)h
-Fu(b)r(e)f(stored)g(in)g(the)g(format)h Fp(time)j Fu(since)d
-Fp(base)p 3008 4817 24 4 v 34 w(time)p Fu(,)i(e.g.,)g(the)d
-Ft(units)275 4904 y Fu(attribute)k(of)h Ft(time)h Fu(migh)n(t)e(b)r(e)h
-(`)p Ft(days)27 b(since)f(1992-10-8)i(15:15:42.5)g(-6:00)p
-Fu('.)71 b(A)26 b(problem)37 b(with)h(this)g(format)275
-4991 y(o)r(ccurs)27 b(when)f(using)h Ft(ncrcat)h Fu(to)f(concatenate)g
-(m)n(ultiple)g(\014les)g(together,)g(eac)n(h)g(with)g(a)g(di\013eren)n
-(t)f Fp(base)p 3347 4991 V 34 w(time)p Fu(.)38 b(That)275
-5078 y(is,)j(an)n(y)36 b Ft(time)j Fu(v)l(alues)e(from)h(\014les)g
-(follo)n(wing)i(the)d(\014rst)g(\014le)g(to)h(b)r(e)f(concatenated)h
-(should)f(b)r(e)g(corrected)h(to)f(the)275 5166 y Fp(base)p
-425 5166 V 34 w(time)31 b Fu(o\013set)c(sp)r(eci\014ed)g(in)f(the)h
-Ft(units)g Fu(attribute)g(of)g Ft(time)h Fu(from)f(the)f(\014rst)h
-(\014le.)37 b(The)27 b(analogous)i(problem)e(has)275
-5253 y(b)r(een)d(\014xed)f(in)i Fs(ARM)f Fu(\014les)h(\(see)g(Section)g
-(3.31)h([ARM)e(Con)n(v)n(en)n(tions],)i(page)f(65\))g(and)f(could)h(b)r
-(e)g(\014xed)e(for)j Fs(CF)e Fu(\014les)h(if)275 5340
-y(there)g(is)h(su\016cien)n(t)g(lobb)n(ying.)p eop end
-%%Page: 65 67
-TeXDict begin 65 66 bop 150 -116 a FD(Chapter)30 b(3:)41
-b(NCO)30 b(F)-8 b(eatures)2475 b(65)150 299 y(used)25
-b(for)g(pac)m(king,)j(not)d(for)h(p)s(erm)m(utation\).)39
-b(These)25 b(op)s(erators)h(do)f(not)h(op)s(erate,)i(b)m(y)d(default,)i
-(on)e(\(i.e.,)150 408 y(add,)e(subtract,)g(pac)m(k,)i(etc.\))39
-b(the)22 b(follo)m(wing)h(v)-5 b(ariables:)37 b Fy(ORO)p
-FD(,)22 b Fy(area)p FD(,)h Fy(datesec)p FD(,)e Fy(date)p
-FD(,)i Fy(gw)p FD(,)f Fy(hyai)p FD(,)h Fy(hyam)p FD(,)150
-518 y Fy(hybi)p FD(.)44 b Fy(hybm)p FD(,)31 b Fy(lat_bnds)p
-FD(,)f Fy(lon_bnds)p FD(,)g Fy(msk_*)p FD(.)43 b(These)31
-b(v)-5 b(ariables)33 b(represen)m(t)f(the)f(Gaussian)h(w)m(eigh)m(ts,)
-150 628 y(the)23 b(orograph)m(y)g(\014eld,)h(time)f(\014elds,)h(h)m
-(ybrid)e(pressure)f(co)s(e\016cien)m(ts,)26 b(and)c
-(latititude/longitude)k(b)s(ound-)150 737 y(aries.)57
-b(W)-8 b(e)37 b(call)g(these)f(\014elds)f(non-co)s(ordinate)i
-Fz(grid)e(prop)s(erties)p FD(.)56 b(Co)s(ordinate)36
-b(grid)f(prop)s(erties)h(are)150 847 y(easy)31 b(to)g(iden)m(tify)g(b)s
-(ecause)f(they)h(are)g(co)s(ordinate)g(v)-5 b(ariables)31
-b(suc)m(h)f(as)h Fy(latitude)d FD(and)h Fy(longitude)p
-FD(.)275 1006 y(Users)39 b(usually)h(w)m(an)m(t)h Fr(al)5
-b(l)50 b FD(grid)40 b(prop)s(erties)g(to)g(remain)g(unaltered)g(in)g
-(the)g(output)g(\014le.)70 b(T)-8 b(o)41 b(b)s(e)150
-1116 y(treated)31 b(as)f(a)g(grid)f(prop)s(ert)m(y)-8
-b(,)30 b(the)g(v)-5 b(ariable)30 b(name)g(m)m(ust)f Fr(exactly)39
-b FD(matc)m(h)30 b(a)g(name)g(in)f(the)h(ab)s(o)m(v)m(e)h(list,)150
-1226 y(or)41 b(b)s(e)f(a)i(co)s(ordinate)g(v)-5 b(ariable.)73
-b(The)40 b(handling)h(of)g Fy(msk_*)e FD(is)i(exceptional)i(in)e(that)g
-Fr(any)50 b FD(v)-5 b(ariable)150 1335 y(name)36 b(b)s(eginning)f(with)
-g(the)h(string)g Fy(msk_)f FD(is)h(considered)f(to)i(b)s(e)e(a)h
-(\\mask")h(and)e(is)h(th)m(us)f(preserv)m(ed)150 1445
-y(\(not)c(op)s(erated)f(on)h(arithmetically\).)275 1604
-y(Y)-8 b(ou)40 b(m)m(ust)f(sp)s(o)s(of)g FC(NCO)h FD(if)f(y)m(ou)h(w)m
-(ould)g(lik)m(e)h(an)m(y)f(grid)f(prop)s(erties)h(or)f(other)h(sp)s
-(ecial)h FC(CF)e FD(\014elds)150 1714 y(pro)s(cessed)g(normally)-8
-b(.)69 b(F)-8 b(or)40 b(example)g(rename)f(the)h(v)-5
-b(ariables)40 b(\014rst)f(with)g Fy(ncrename)p FD(,)h(or)f(alter)i(the)
-150 1824 y Fy(Conventions)27 b FD(attribute.)275 1983
-y(As)191 b(of)g FC(NCO)g FD(v)m(ersion)h(4.0.8)h(\(April,)231
-b(2011\),)j FC(NCO)191 b FD(supp)s(orts)150 2093 y(the)180
-b FC(CF)g Fy(bounds)e FD(con)m(v)m(en)m(tion)k(for)d(cell)i(b)s
-(oundaries)d(describ)s(ed)h(here)150 2202 y(\()p Fy
-(http://cf-pcmdi.llnl.gov/d)o(ocu)o(ment)o(s/cf)o(-co)o(nven)o(tion)o
-(s/1)o(.5/c)o(f-co)o(nve)o(ntio)o(ns.)o(html)o(#cel)o(l-b)o(ound)o
-(arie)o(s)p FD(\).)150 2312 y(This)43 b(con)m(v)m(en)m(tion)i(allo)m
-(ws)g(co)s(ordinate)f(v)-5 b(ariables)44 b(\(including)g(m)m
-(ultidimensional)g(co)s(ordinates\))g(to)150 2422 y(describ)s(e)31
-b(the)h(b)s(oundaries)f(of)h(their)g(cells.)47 b(This)31
-b(is)h(done)g(b)m(y)f(naming)h(the)g(v)-5 b(ariable)33
-b(whic)m(h)f(con)m(tains)150 2531 y(the)k(b)s(ounds)e(in)i(in)g(the)g
-Fy(bounds)e FD(attribute.)59 b(Note)37 b(that)g(co)s(ordinates)g(of)f
-(rank)g Fn(N)46 b FD(ha)m(v)m(e)37 b(b)s(ounds)d(of)150
-2641 y(rank)44 b Fn(N)39 b FD(+)29 b(1.)83 b(NCO-generated)45
-b(subsets)e(of)h FC(CF)p FD(-complian)m(t)i(\014les)f(with)e
-Fy(bounds)g FD(attributes)i(will)150 2750 y(include)37
-b(the)h(co)s(ordinates)g(sp)s(eci\014ed)e(b)m(y)h(the)h
-Fy(bounds)e FD(attribute,)k(if)d(an)m(y)-8 b(.)62 b(Hence)38
-b(the)g(subsets)f(will)150 2860 y(themselv)m(es)32 b(b)s(e)d
-FC(CF)p FD(-complian)m(t.)275 3020 y(As)199 b(of)g FC(NCO)g
-FD(v)m(ersion)g(3.9.6)i(\(Jan)m(uary)-8 b(,)242 b(2009\),)i
-FC(NCO)199 b FD(sup-)150 3129 y(p)s(orts)277 b(the)h
-FC(CF)g Fy(coordinates)c FD(con)m(v)m(en)m(tion)280 b(describ)s(ed)d
-(here)150 3239 y(\()p Fy(http://cf-pcmdi.llnl.gov/d)o(ocu)o(ment)o
-(s/cf)o(-co)o(nven)o(tion)o(s/1)o(.5/c)o(f-co)o(nve)o(ntio)o(ns.)o
-(html)o(#coo)o(rdi)o(nate)o(-sys)o(tem)o FD(\).)150 3348
-y(This)54 b(con)m(v)m(en)m(tion)j(allo)m(ws)f(v)-5 b(ariables)56
-b(to)g(sp)s(ecify)e(additional)i(co)s(ordinates)g(\(including)e(m)m
-(ultidi-)150 3458 y(mensional)39 b(co)s(ordinates\))h(in)e(a)h
-(space-separated)h(string)f(attribute)h(named)e Fy(coordinates)p
-FD(.)62 b(NCO)150 3568 y(attac)m(hes)50 b(an)m(y)f(suc)m(h)e(co)s
-(ordinates)i(to)g(the)f(extraction)i(list)f(along)g(with)f(v)-5
-b(ariable)48 b(and)g(its)g(usual)150 3677 y(\(one-dimensional\))k(co)s
-(ordinates,)j(if)50 b(an)m(y)-8 b(.)101 b(These)49 b(auxiliary)i(co)s
-(ordinates)g(are)f(sub)5 b(ject)50 b(to)h(the)150 3787
-y(user-sp)s(eci\014ed)64 b(o)m(v)m(errides)i(describ)s(ed)e(in)h
-(Section)g(3.12)i([Subsetting)e(Co)s(ordinate)g(V)-8
-b(ariables],)150 3896 y(page)31 b(38.)150 4129 y FB(3.31)68
-b Fv(ARM)45 b FB(Con)l(v)l(en)l(tions)150 4190 y Fm(\013)p
-200 4190 3554 4 v 3553 w(\010)p 150 4570 4 333 v 178
-4326 a FD(Av)-5 b(ailabilit)m(y:)43 b Fy(ncrcat)178 4436
-y FD(Short)30 b(options:)41 b(None)p 3803 4570 V 150
-4622 a Fm(\012)p 200 4622 3554 4 v 3553 w(\011)275 4792
-y Fy(ncrcat)f FD(has)i(b)s(een)f(programmed)g(to)i(correctly)g(handle)f
-(data)g(\014les)g(whic)m(h)g(utilize)h(the)f(A)m(tmo-)150
-4902 y(spheric)446 b(Radiation)h(Measuremen)m(t)h(\()p
-FC(ARM)p FD(\))f(Program)150 5011 y(con)m(v)m(en)m(tion)43
-b(\()p Fy(http://www.arm.gov/data/ti)o(me.s)o(tm)p FD(\))35
-b(for)41 b(time)h(and)e(time)i(o\013sets.)73 b(If)41
-b(y)m(ou)g(do)150 5121 y(not)32 b(w)m(ork)g(with)g FC(ARM)g
-FD(data)g(then)g(y)m(ou)g(ma)m(y)g(skip)g(this)f(section.)47
-b FC(ARM)32 b FD(data)g(\014les)g(store)h(time)f(infor-)150
-5230 y(mation)h(in)f(t)m(w)m(o)h(v)-5 b(ariables,)34
-b(a)e(scalar,)i Fy(base_time)p FD(,)d(and)g(a)i(record)f(v)-5
-b(ariable,)33 b Fy(time_offset)p FD(.)43 b(Subtle)150
-5340 y(but)24 b(serious)g(problems)f(can)i(arise)g(when)e(these)h(t)m
-(yp)s(e)h(of)f(\014les)h(are)f(just)g(blindly)f(concatenated.)41
-b(There-)p eop end
-%%Page: 66 68
-TeXDict begin 66 67 bop 150 -116 a FD(66)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(fore)h Fy(ncrcat)f
-FD(has)h(b)s(een)f(sp)s(ecially)i(programmed)f(to)h(b)s(e)e(able)i(to)g
-(c)m(hain)g(together)g(consecutiv)m(e)i FC(ARM)150 408
-y Fz(input-\014les)45 b FD(and)c(pro)s(duce)f(and)i(an)f
-Fz(output-\014le)47 b FD(whic)m(h)41 b(con)m(tains)i(the)f(correct)h
-(time)f(information.)150 518 y(Curren)m(tly)-8 b(,)35
-b Fy(ncrcat)d FD(determines)i(whether)f(a)i(data\014le)g(is)f(an)f
-FC(ARM)i FD(data\014le)g(simply)e(b)m(y)h(testing)h(for)150
-628 y(the)e(existence)i(of)e(the)h(v)-5 b(ariables)34
-b Fy(base_time)p FD(,)d Fy(time_offset)p FD(,)g(and)i(the)g(dimension)g
-Fy(time)p FD(.)48 b(If)32 b(these)150 737 y(are)i(found)d(in)i(the)h
-Fz(input-\014le)j FD(then)c Fy(ncrcat)f FD(will)h(automatically)j(p)s
-(erform)c(t)m(w)m(o)j(non-standard,)e(but)150 847 y(hop)s(efully)41
-b(useful,)j(pro)s(cedures.)73 b(First,)45 b Fy(ncrcat)40
-b FD(will)i(ensure)f(that)h(v)-5 b(alues)42 b(of)g Fy(time_offset)d
-FD(ap-)150 956 y(p)s(earing)h(in)g(the)g Fz(output-\014le)46
-b FD(are)40 b(relativ)m(e)j(to)e(the)f Fy(base_time)e
-FD(app)s(earing)i(in)f(the)i(\014rst)e Fz(input-\014le)150
-1066 y FD(\(and)d(presumably)-8 b(,)38 b(though)e(not)h(necessarily)-8
-b(,)40 b(also)e(app)s(earing)e(in)g(the)h Fz(output-\014le)5
-b FD(\).)60 b(Second,)38 b(if)f(a)150 1176 y(co)s(ordinate)32
-b(v)-5 b(ariable)32 b(named)f Fy(time)f FD(is)h(not)h(found)d(in)i(the)
-h Fz(input-\014les)p FD(,)f(then)g Fy(ncrcat)e FD(automatically)150
-1285 y(creates)j(the)e Fy(time)f FD(co)s(ordinate)j(in)e(the)g
-Fz(output-\014le)p FD(.)41 b(The)30 b(v)-5 b(alues)30
-b(of)h Fy(time)e FD(are)i(de\014ned)e(b)m(y)h(the)h FC(ARM)150
-1395 y FD(con)m(v)m(en)m(tions)e Fz(time)j FD(=)25 b
-Fz(base)p 1124 1395 28 4 v 45 w(time)20 b FD(+)14 b Fz(time)p
-1626 1395 V 46 w(o\013set)s FD(.)40 b(Th)m(us,)27 b(if)g
-Fz(output-\014le)33 b FD(con)m(tains)28 b(the)g Fy(time_offset)150
-1504 y FD(v)-5 b(ariable,)29 b(it)g(will)f(also)g(con)m(tain)i(the)d
-Fy(time)g FD(co)s(ordinate.)41 b(A)30 b(short)e(message)h(is)e(added)g
-(to)i(the)f Fy(history)150 1614 y FD(global)k(attribute)f(whenev)m(er)f
-(these)h FC(ARM)p FD(-sp)s(eci\014c)g(pro)s(cedures)e(are)i(executed.)
-150 1846 y FB(3.32)68 b(Op)t(erator)46 b(V)-11 b(ersion)150
-1930 y Fm(\013)p 200 1930 3554 4 v 3553 w(\010)p 150
-2420 4 442 v 178 2066 a FD(Av)-5 b(ailabilit)m(y:)43
-b(All)31 b(op)s(erators)178 2176 y(Short)f(options:)41
-b(`)p Fy(-r)p FD(')178 2286 y(Long)31 b(options:)41 b(`)p
-Fy(--revision)p FD(',)28 b(`)p Fy(--version)p FD(',)h(or)h(`)p
-Fy(--vrs)p FD(')p 3803 2420 V 150 2472 a Fm(\012)p 200
-2472 3554 4 v 3553 w(\011)275 2642 y FD(All)36 b(op)s(erators)f(can)h
-(b)s(e)f(told)h(to)h(prin)m(t)e(their)g(v)m(ersion)h(information,)i
-(library)d(v)m(ersion,)j(cop)m(yrigh)m(t)150 2751 y(notice,)i(and)c
-(compile-time)j(con\014guration)e(with)g(the)g(`)p Fy(-r)p
-FD(')f(switc)m(h,)j(or)e(its)g(long-option)h(equiv)-5
-b(alen)m(t)150 2861 y(`)p Fy(revision)p FD('.)63 b(The)38
-b(`)p Fy(--version)p FD(')f(or)h(`)p Fy(--vrs)p FD(')g(switc)m(hes)h
-(prin)m(t)f(the)h(op)s(erator)g(v)m(ersion)g(information)150
-2971 y(only)-8 b(.)69 b(The)40 b(in)m(ternal)g(v)m(ersion)g(n)m(um)m(b)
-s(er)f(v)-5 b(aries)40 b(b)s(et)m(w)m(een)g(op)s(erators,)j(and)c
-(indicates)i(the)f(most)g(re-)150 3080 y(cen)m(t)c(c)m(hange)g(to)f(a)g
-(particular)h(op)s(erator's)f(source)g(co)s(de.)54 b(This)34
-b(is)h(useful)f(in)g(making)h(sure)f(y)m(ou)i(are)150
-3190 y(w)m(orking)31 b(with)g(the)h(most)f(recen)m(t)h(op)s(erators.)44
-b(The)30 b(v)m(ersion)i(of)f FC(NCO)g FD(y)m(ou)g(are)h(using)f(migh)m
-(t)g(b)s(e,)g(e.g.,)150 3299 y Fy(3.9.5)p FD(.)39 b(Using)31
-b(`)p Fy(-r)p FD(')f(on,)g(sa)m(y)-8 b(,)31 b Fy(ncks)p
-FD(,)f(pro)s(duces)f(something)h(lik)m(e)i(`)p Fy(NCO)d(netCDF)g
-(Operators)f(version)150 3409 y("3.9.5")g(last)i(modified)e(2008/05/11)
-f(built)i(May)h(12)f(2008)h(on)f(neige)g(by)150 3519
-y(zender)g(Copyright)f(\(C\))h(1995--2008)f(Charlie)g(Zender)h(ncks)g
-(version)f(20090918)p FD('.)64 b(This)38 b(tells)150
-3628 y(y)m(ou)31 b(that)g Fy(ncks)e FD(con)m(tains)i(all)h(patc)m(hes)f
-(up)e(to)i(v)m(ersion)g Fy(3.9.5)p FD(,)e(whic)m(h)i(dates)f(from)g(Ma)
-m(y)i(11)q(,)e(2008.)p eop end
-%%Page: 67 69
-TeXDict begin 67 68 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(67)150
-299 y Fx(4)80 b(Op)t(erator)54 b(Reference)e(Man)l(ual)150
-558 y FD(This)29 b(c)m(hapter)h(presen)m(ts)g(reference)g(pages)g(for)f
-(eac)m(h)i(of)f(the)f(op)s(erators)h(individually)-8
-b(.)41 b(The)29 b(op)s(erators)150 667 y(are)37 b(presen)m(ted)f(in)g
-(alphab)s(etical)i(order.)58 b(All)37 b(v)-5 b(alid)36
-b(command)h(line)f(switc)m(hes)h(are)g(included)f(in)g(the)150
-777 y(syn)m(tax)k(statemen)m(t.)70 b(Recall)41 b(that)f(descriptions)f
-(of)h(man)m(y)g(of)f(these)h(command)g(line)f(switc)m(hes)i(are)150
-887 y(pro)m(vided)25 b(only)h(in)f(Chapter)g(3)h([Common)f(features],)i
-(page)f(23,)i(to)e(a)m(v)m(oid)h(redundancy)-8 b(.)38
-b(Only)25 b(options)150 996 y(sp)s(eci\014c)39 b(to,)k(or)d(most)f
-(useful)g(with,)j(a)e(particular)g(op)s(erator)f(are)h(describ)s(ed)f
-(in)g(an)m(y)h(detail)h(in)e(the)150 1106 y(sections)31
-b(b)s(elo)m(w.)p eop end
-%%Page: 68 70
-TeXDict begin 68 69 bop 150 -116 a FD(68)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(4.1)68 b Fe(ncap2)43
-b FB(netCDF)i(Arithmetic)g(Pro)t(cessor)150 348 y Fm(\013)p
-200 348 3554 4 v 3553 w(\010)p 150 1075 4 679 v 178 484
-a Fy(ncap2)28 b FD(understands)e(a)j(relativ)m(ely)j(full-featured)c
-(language)j(of)d(op)s(erations,)i(including)e(lo)s(ops,)i(condi-)178
-594 y(tionals,)g(arra)m(ys,)g(and)e(math)h(functions.)39
-b Fy(ncap2)28 b FD(is)g(the)h(most)g(rapidly)f(c)m(hanging)i
-FC(NCO)e FD(op)s(erator)h(and)178 703 y(its)35 b(do)s(cumen)m(tation)g
-(is)g(incomplete.)54 b(The)34 b(distribution)f(\014le)i(`)p
-Fy(data/ncap2_tst.nco)p FD(')30 b(con)m(tains)35 b(an)178
-813 y(up-to-date)d(o)m(v)m(erview)h(of)e(its)g(syn)m(tax)h(and)e
-(capabilities.)45 b(The)30 b(`)p Fy(data/*.nco)p FD(')f(distribution)h
-(\014les)h(\(es-)178 923 y(p)s(ecially)c(`)p Fy(bin_cnt.nco)p
-FD(',)d(`)p Fy(psd_wrf.nco)p FD(',)g(and)h(`)p Fy(rgr.nco)p
-FD('\))g(con)m(tain)i(in-depth)e(examples)h(of)g Fy(ncap2)178
-1032 y FD(solutions)31 b(to)g(complex)g(problems.)p 3803
-1075 V 150 1126 a Fm(\012)p 200 1126 3554 4 v 3553 w(\011)150
-1333 y FD(SYNT)-8 b(AX)390 1531 y Fy(ncap2)46 b([-3])h([-4])g([-6])f
-([-A])h([-C])g([-c])f([-D)h Fq(dbg)11 b Fy(])46 b([-F])h([-f])f([-L)h
-Fq(dfl_lvl)11 b Fy(])390 1640 y([-l)47 b Fq(path)11 b
-Fy(])46 b([-O])g([-o)h Fq(output-file)11 b Fy(])44 b([-p)j
-Fq(path)11 b Fy(])46 b([-R])h([-r])390 1750 y([-s)g Fq(algebra)11
-b Fy(])45 b([-S)i Fq(fl.nco)11 b Fy(])45 b([-t)i Fq(thr_nbr)11
-b Fy(])45 b([-v])390 1860 y Fq(input-file)56 b Fy([)p
-Fq(output-file)11 b Fy(])150 2057 y FD(DESCRIPTION)275
-2254 y Fy(ncap2)25 b FD(arithmetically)k(pro)s(cesses)d(netCDF)i
-(\014les)2009 2221 y Fw(1)2046 2254 y FD(.)39 b(The)27
-b(pro)s(cessing)f(instructions)h(are)g(con)m(tained)150
-2364 y(either)37 b(in)f(the)g FC(NCO)g FD(script)h(\014le)f(`)p
-Fy(fl.nco)p FD(')f(or)i(in)f(a)g(sequence)h(of)g(command)f(line)g
-(argumen)m(ts.)59 b(The)150 2473 y(options)40 b(`)p Fy(-s)p
-FD(')f(\(or)h(long)g(options)f(`)p Fy(--spt)p FD(')g(or)g(`)p
-Fy(--script)p FD('\))f(are)i(used)e(for)h(in-line)h(scripts)f(and)g(`)p
-Fy(-S)p FD(')150 2583 y(\(or)f(long)g(options)g(`)p Fy(--fl_spt)p
-FD(')d(or)j(`)p Fy(--script-file)p FD('\))d(are)j(used)e(to)i(pro)m
-(vide)g(the)g(\014lename)f(where)150 2693 y(\(usually)32
-b(m)m(ultiple\))g(scripting)g(commands)f(are)h(pre-stored.)45
-b Fy(ncap2)30 b FD(w)m(as)i(written)f(to)i(p)s(erform)d(arbi-)150
-2802 y(trary)37 b(algebraic)i(transformations)f(of)f(data)h(and)f(arc)m
-(hiv)m(e)i(the)e(results)g(as)h(easily)g(as)g(p)s(ossible.)61
-b(See)150 2912 y(Section)33 b(3.21)h([Missing)f(V)-8
-b(alues],)35 b(page)e(49,)h(for)f(treatmen)m(t)h(of)e(missing)h(v)-5
-b(alues.)47 b(The)32 b(results)g(of)h(the)150 3021 y(algebraic)f
-(manipulations)f(are)f(called)i Fz(deriv)m(ed)e(\014elds)p
-FD(.)275 3219 y(Unlik)m(e)42 b(the)g(other)g(op)s(erators,)j
-Fy(ncap2)40 b FD(do)s(es)h(not)h(accept)h(a)f(list)g(of)g(v)-5
-b(ariables)42 b(to)h(b)s(e)e(op)s(erated)150 3328 y(on)34
-b(as)h(an)g(argumen)m(t)g(to)g(`)p Fy(-v)p FD(')f(\(see)i(Section)f
-(3.11)h([Subsetting)f(V)-8 b(ariables],)37 b(page)e(36\).)55
-b(Rather,)36 b(the)150 3438 y(`)p Fy(-v)p FD(')f(switc)m(h)g(tak)m(es)h
-(no)f(argumen)m(ts)g(and)g(indicates)g(that)h Fy(ncap2)d
-FD(should)h(output)h Fr(only)43 b FD(user-de\014ned)150
-3548 y(v)-5 b(ariables.)41 b Fy(ncap2)29 b FD(neither)i(accepts)g(nor)f
-(understands)f(the)h Fz(-x)37 b FD(switc)m(h.)275 3745
-y(De\014ning)29 b(new)f(v)-5 b(ariables)30 b(in)f(terms)g(of)g
-(existing)h(v)-5 b(ariables)30 b(is)f(a)h(p)s(o)m(w)m(erful)e(feature)i
-(of)f Fy(ncap2)p FD(.)39 b(De-)150 3854 y(riv)m(ed)g(\014elds)f
-(inherit)h(the)g(metadata)h(\(i.e.,)j(attributes\))c(of)g(their)g
-(ancestors,)j(if)d(an)m(y)-8 b(,)42 b(in)c(the)h(script)150
-3964 y(or)h(input)f(\014le.)69 b(When)40 b(the)g(deriv)m(ed)g(\014eld)f
-(is)h(completely)i(new)d(\(no)h(iden)m(tically-named)i(ancestors)150
-4074 y(exist\),)29 b(then)e(it)g(inherits)g(the)g(metadata)h(\(if)g(an)
-m(y\))f(of)g(the)h(left-most)g(v)-5 b(ariable)28 b(on)f(the)g(righ)m(t)
-g(hand)f(side)150 4183 y(of)33 b(the)g(de\014ning)f(expression.)48
-b(This)32 b(metadata)i(inheritance)f(is)g(called)h Fz(attribute)g
-(propagation)p FD(.)49 b(A)m(t-)150 4293 y(tribute)24
-b(propagation)h(is)f(in)m(tended)g(to)h(facilitate)h(w)m(ell-do)s
-(cumen)m(ted)g(data)e(analysis,)i(and)e(w)m(e)g(w)m(elcome)150
-4402 y(suggestions)31 b(to)g(impro)m(v)m(e)h(this)e(feature.)275
-4600 y(The)h(only)h(exception)i(to)e(this)g(rule)g(of)g(attribute)h
-(propagation)g(is)f(in)g(cases)h(of)f(left)h(hand)e(casting)150
-4709 y(\(see)g(Section)g(4.1.4)h([Left)f(hand)e(casting],)j(page)f
-(74\).)42 b(The)29 b(user)h(m)m(ust)g(man)m(ually)h(de\014ne)e(the)h
-(prop)s(er)150 4819 y(metadata)i(for)e(v)-5 b(ariables)31
-b(de\014ned)e(using)h(left)h(hand)f(casting.)p 150 5066
-1200 4 v 199 5134 a Fw(1)275 5166 y Ft(ncap2)22 b Fu(is)g(the)f
-(successor)i(to)f Ft(ncap)g Fu(whic)n(h)g(w)n(as)g(put)f(in)n(to)g
-(main)n(tenance)h(mo)r(de)g(in)f(No)n(v)n(em)n(b)r(er,)h(2006.)34
-b(This)23 b(do)r(cumen-)275 5253 y(tation)e(refers)h(to)f
-Ft(ncap2)p Fu(,)i(whic)n(h)e(has)g(a)g(sup)r(erset)g(of)g(the)g
-Ft(ncap)g Fu(functionalit)n(y)-6 b(.)33 b(Ev)n(en)n(tually)21
-b Ft(ncap)g Fu(will)h(b)r(e)f(deprecated)275 5340 y(in)k(fa)n(v)n(or)h
-Ft(ncap2)p Fu(.)36 b Ft(ncap2)27 b Fu(ma)n(y)e(b)r(e)h(renamed)f
-Ft(ncap)i Fu(in)e(2011.)p eop end
-%%Page: 69 71
-TeXDict begin 69 70 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(69)150
-299 y Fv(4.1.1)63 b(Syn)m(tax)39 b(of)j Fo(ncap2)g Fv(statemen)m(ts)150
-446 y FD(Mastering)33 b Fy(ncap2)d FD(is)i(relativ)m(ely)i(simple.)44
-b(Eac)m(h)33 b(v)-5 b(alid)32 b(statemen)m(t)h Fz(statemen)m(t)j
-FD(consists)c(of)g(standard)150 555 y(forw)m(ard)g(algebraic)i
-(expression.)47 b(The)32 b(`)p Fy(fl.nco)p FD(',)g(if)g(presen)m(t,)i
-(is)e(simply)g(a)h(list)g(of)g(suc)m(h)f(statemen)m(ts,)150
-665 y(whitespace,)26 b(and)d(commen)m(ts.)39 b(The)23
-b(syn)m(tax)h(of)g(statemen)m(ts)i(is)d(most)h(lik)m(e)h(the)f
-(computer)f(language)32 b(C.)150 775 y(The)e(follo)m(wing)i(c)m
-(haracteristics)h(of)d(C)g(are)h(preserv)m(ed:)150 953
-y(Arra)m(y)g(syn)m(tax)630 1063 y(Arra)m(ys)f(elemen)m(ts)i(are)f
-(placed)g(within)f Fy([])f FD(c)m(haracters;)150 1210
-y(Arra)m(y)i(indexing)630 1320 y(Arra)m(ys)f(are)h(0-based;)150
-1467 y(Arra)m(y)g(storage)630 1577 y(Last)g(dimension)f(is)g(most)h
-(rapidly)f(v)-5 b(arying;)150 1724 y(Assignmen)m(t)31
-b(statemen)m(ts)630 1834 y(A)f(semi)q(-colon)h(`)p Fy(;)p
-FD(')g(indicates)g(the)g(end)f(of)g(an)g(assignmen)m(t)i(statemen)m(t.)
-150 1982 y(Commen)m(ts)630 2091 y(Multi-line)22 b(commen)m(ts)g(are)f
-(enclosed)h(within)e Fy(/*)30 b(*/)21 b FD(c)m(haracters.)39
-b(Single)21 b(line)g(commen)m(ts)630 2201 y(are)31 b(preceded)f(b)m(y)g
-Fy(//)g FD(c)m(haracters.)150 2348 y(Nesting)180 b(Files)25
-b(ma)m(y)g(b)s(e)f(nested)g(in)g(scripts)g(using)g Fy(#include)k
-Fq(script)11 b FD(.)36 b(Note)26 b(that)f(the)f Fy(#include)630
-2458 y FD(command)h(is)h(not)g(follo)m(w)m(ed)h(b)m(y)e(a)h(semi-colon)
-h(b)s(ecause)f(it)g(is)f(a)h(pre-pro)s(cessor)f(directiv)m(e,)630
-2568 y(not)33 b(an)g(assignmen)m(t)h(statemen)m(t.)50
-b(The)32 b(\014lename)h(`)p Fy(script)p FD(')f(is)h(in)m(terpreted)g
-(relativ)m(e)i(to)630 2677 y(the)c(run)d(directory)-8
-b(.)150 2825 y(A)m(ttribute)31 b(syn)m(tax)630 2934 y(The)f(at-sign)h
-Fy(@)f FD(is)h(used)e(to)i(delineate)h(an)f(attribute)g(name)f(from)g
-(a)h(v)-5 b(ariable)31 b(name.)150 3122 y Fv(4.1.2)63
-b(Expressions)150 3269 y FD(Expressions)40 b(are)h(the)f(fundamen)m
-(tal)h(building)e(blo)s(c)m(k)i(of)g Fy(ncap2)p FD(.)70
-b(Expressions)40 b(are)g(comp)s(osed)h(of)150 3378 y(v)-5
-b(ariables,)44 b(n)m(um)m(b)s(ers,)d(literals,)j(and)c(attributes.)71
-b(The)40 b(follo)m(wing)h(C)30 b(op)s(erators)41 b(are)f(\\o)m(v)m
-(erloaded")150 3488 y(and)30 b(w)m(ork)g(with)g(scalars)i(and)d(m)m
-(ulti-dimensional)j(arra)m(ys:)390 3647 y Fy(Arithmetic)45
-b(Operators:)g(*)i(/)h(\045)f(+)h(-)f(^)390 3757 y(Binary)f(Operators:)
-236 b(>)47 b(>=)h(<)f(<=)g(==)g(!=)h(==)f(||)g(&&)g(>>)g(<<)390
-3866 y(Unary)f(Operators:)284 b(+)47 b(-)h(++)f(--)g(!)390
-3976 y(Conditional)e(Operator:)g(exp1)i(?)g(exp2)g(:)g(exp3)390
-4086 y(Assign)f(Operators:)236 b(=)47 b(+=)h(-=)f(/=)g(*=)275
-4245 y FD(In)33 b(the)i(follo)m(wing)h(section)g(a)e
-Fz(v)-5 b(ariable)41 b FD(also)35 b(refers)f(to)i(a)e(n)m(um)m(b)s(er)g
-(literal)i(whic)m(h)e(is)g(read)h(in)f(as)h(a)150 4355
-y(scalar)c(v)-5 b(ariable:)275 4514 y Fk(Arithmetic)31
-b(and)e(Binary)h(Op)s(erators)275 4673 y FD(Consider)f
-Fr(var1)34 b('op')f(var2)275 4833 y Fk(Precision)225
-4992 y FA(\017)60 b FD(When)30 b(b)s(oth)g(op)s(erands)g(are)h(v)-5
-b(ariables,)31 b(the)g(result)g(has)f(the)h(precision)g(of)g(the)f
-(higher)h(precision)330 5102 y(op)s(erand.)225 5230 y
-FA(\017)60 b FD(When)26 b(one)h(op)s(erand)f(is)g(a)h(v)-5
-b(ariable)28 b(and)e(the)h(other)f(an)h(attribute,)h(the)f(result)g
-(has)f(the)h(precision)330 5340 y(of)k(the)f(v)-5 b(ariable.)p
-eop end
-%%Page: 70 72
-TeXDict begin 70 71 bop 150 -116 a FD(70)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)225 299 y FA(\017)60 b FD(When)37
-b(b)s(oth)g(op)s(erands)f(are)h(attributes,)j(the)e(result)f(has)g(the)
-h(precision)f(of)h(the)f(more)h(precise)330 408 y(attribute.)225
-540 y FA(\017)60 b FD(The)46 b(exp)s(onen)m(tiation)i(op)s(erator)f(\\)
-p Fy(^)p FD(")g(is)f(an)h(exception)h(to)f(the)g(ab)s(o)m(v)m(e)g
-(rules.)89 b(When)47 b(b)s(oth)330 649 y(op)s(erands)40
-b(ha)m(v)m(e)j(t)m(yp)s(e)e(less)h(than)f Fy(NC_FLOAT)p
-FD(,)h(the)f(result)g(is)h Fy(NC_FLOAT)p FD(.)71 b(When)41
-b(either)h(t)m(yp)s(e)330 759 y(is)30 b Fy(NC_DOUBLE)p
-FD(,)f(the)h(result)g(is)h(also)g Fy(NC_DOUBLE)p FD(.)275
-940 y Fk(Rank)225 1099 y FA(\017)60 b FD(The)28 b(Rank)g(of)g(the)h
-(result)f(is)h(generally)g(equal)g(to)g(Rank)f(of)h(the)f(op)s(erand)g
-(that)g(has)h(the)f(greatest)330 1209 y(n)m(um)m(b)s(er)h(of)i
-(dimensions.)225 1340 y FA(\017)60 b FD(If)37 b(the)g(dimensions)f(in)h
-(v)-5 b(ar2)37 b(are)h(a)f(subset)g(of)g(the)g(dimensions)f(in)h(v)-5
-b(ar1)37 b(then)g(its)h(p)s(ossible)e(to)330 1450 y(mak)m(e)31
-b(v)-5 b(ar2)31 b(conform)f(to)h(v)-5 b(ar1)31 b(through)f
-(broadcasting)h(and)f(or)g(dimension)g(reordering.)225
-1581 y FA(\017)60 b FD(Broadcasting)31 b(a)e(v)-5 b(ariable)30
-b(means)f(creating)i(data)e(in)g(non-existing)h(dimensions)e(from)h
-(the)g(data)330 1690 y(in)h(existing)h(dimensions.)225
-1822 y FA(\017)60 b FD(More)31 b(sp)s(eci\014cally:)41
-b(If)30 b(the)h(n)m(um)m(b)s(ers)e(of)h(dimensions)g(in)g(v)-5
-b(ar1)31 b(is)f(greater)h(than)g(or)f(equal)h(to)g(the)330
-1931 y(n)m(um)m(b)s(er)f(of)i(dimensions)f(in)g(v)-5
-b(ar2)32 b(then)f(an)h(attempt)h(is)e(made)h(to)g(mak)m(e)h(v)-5
-b(ar2)32 b(conform)f(to)i(v)-5 b(ar1)330 2041 y(,else)40
-b(v)-5 b(ar1)39 b(is)f(made)h(to)g(conform)g(to)g(v)-5
-b(ar2.)66 b(If)38 b(conformance)i(is)e(not)h(p)s(ossible)f(then)h(an)f
-(error)330 2150 y(message)31 b(will)g(b)s(e)f(emitted)h(and)f(script)g
-(execution)i(will)f(cease.)150 2441 y(Ev)m(en)h(though)g(the)h(logical)
-h(op)s(erators)f(return)e(T)-8 b(rue\(1\))33 b(or)f(F)-8
-b(alse\(0\))35 b(they)d(are)h(treated)g(in)f(the)h(same)150
-2550 y(w)m(a)m(y)e(as)g(the)g(arithmetic)g(op)s(erators)g(with)f
-(regard)g(to)h(precision)g(and)f(rank.)150 2660 y(Examples:)390
-2819 y Fy(dimensions:)45 b(time=10,)g(lat=2,)h(lon=4)390
-2929 y(Suppose)g(we)h(have)g(the)g(two)f(variables:)390
-3148 y(double)94 b(P\(time,lat,lon\);)390 3258 y(float)142
-b(PZ0\(lon,lat\);)92 b(//)47 b(PZ0=1,2,3,4,5,6,7,8;)390
-3477 y(Consider)f(now)g(the)h(expression:)438 3587 y(PZ=P-PZ0)390
-3806 y(PZ0)g(is)g(made)g(to)g(conform)f(to)h(P)g(and)g(the)g(result)f
-(is)390 3915 y(PZ0)h(=)533 4025 y(1,3,5,7,2,4,6,8,)533
-4134 y(1,3,5,7,2,4,6,8,)533 4244 y(1,3,5,7,2,4,6,8,)533
-4354 y(1,3,5,7,2,4,6,8,)533 4463 y(1,3,5,7,2,4,6,8,)533
-4573 y(1,3,5,7,2,4,6,8,)533 4682 y(1,3,5,7,2,4,6,8,)533
-4792 y(1,3,5,7,2,4,6,8,)533 4902 y(1,3,5,7,2,4,6,8,)533
-5011 y(1,3,5,7,2,4,6,8,)390 5230 y(Once)g(the)g(expression)e(is)i
-(evaluated)e(then)i(PZ)g(will)f(be)i(of)f(type)f(double;)p
-eop end
-%%Page: 71 73
-TeXDict begin 71 72 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(71)390
-299 y Fy(Consider)46 b(now)438 408 y(start=four-att_var at doub)o(le_a)o
-(tt;)89 b(//)47 b(start)g(=-69)94 b(and)47 b(is)g(of)g(type)g(intger;)
-438 518 y(four_pow=four^3.0f)711 b(//)47 b(four_pow=64)e(and)i(is)g(of)
-g(type)g(float)438 628 y(three_nw=three_dmn_var_)o(sht*)o(1.0f)o(;)42
-b(//)47 b(type)g(is)g(now)g(float)438 737 y(start at n1=att_var at short_)o
-(att*)o(att_)o(var)o(@int)o(_att)o(;)2013 847 y(//)g(start at n1=5329)d
-(and)j(is)g(type)g(int)150 1044 y Fk(Binary)30 b(Op)s(erators)150
-1154 y FD(Unlik)m(e)36 b(C)f(the)g(binary)f(op)s(erators)i(return)d(an)
-i(arra)m(y)h(of)f(v)-5 b(alues.)55 b(There)35 b(is)g(no)g(suc)m(h)g
-(thing)g(as)g(short)150 1263 y(circuiting)i(with)f(the)h(AND/OR)g(op)s
-(erators.)59 b(Missing)37 b(v)-5 b(alues)37 b(are)g(carried)f(in)m(to)i
-(the)e(result)h(in)f(the)150 1373 y(same)f(w)m(a)m(y)g(they)f(are)h
-(with)f(the)g(arithmetic)h(op)s(erators.)53 b(When)34
-b(an)g(expression)g(is)g(ev)-5 b(aluated)35 b(in)f(an)150
-1482 y(if\(\))d(the)g(missing)f(v)-5 b(alues)31 b(are)f(treated)i(as)e
-(true.)150 1592 y(The)g(binary)f(op)s(erators)i(are,)g(in)f(order)g(of)
-g(precedence:)390 1899 y Fy(!)143 b(Logical)46 b(Not)390
-2008 y(------------------------)o(----)390 2118 y(<<)95
-b(Less)47 b(Than)f(Selection)390 2228 y(>>)95 b(Greater)46
-b(Than)g(Selection)390 2337 y(------------------------)o(----)390
-2447 y(>)143 b(Greater)46 b(than)390 2556 y(>=)95 b(Greater)46
-b(than)g(or)i(equal)e(to)390 2666 y(<)143 b(Less)47 b(than)390
-2776 y(<=)95 b(Less)47 b(than)f(or)h(equal)g(to)390 2885
-y(------------------------)o(----)390 2995 y(==)95 b(Equal)46
-b(to)390 3104 y(!=)95 b(Not)47 b(equal)f(to)390 3214
-y(------------------------)o(----)390 3324 y(&&)95 b(Logical)46
-b(AND)390 3433 y(------------------------)o(----)390
-3543 y(||)95 b(Logical)46 b(OR)390 3652 y(------------------------)o
-(----)275 3850 y FD(T)-8 b(o)21 b(see)g(all)h(op)s(erators:)36
-b(see)22 b(Section)g(4.1.26)h([Op)s(erators)d(precedence)i(and)e(asso)s
-(ciativit)m(y],)26 b(page)c(116)150 3959 y(Examples:)390
-4156 y Fy(tm1=)47 b(time>2)f(&&)h(time)g(<7;)94 b(//)47
-b(tm1)g(=)h(0,)f(0,)g(1,)g(1,)g(1,)h(1,)f(0,)g(0,)g(0,)g(0)h(;)f(type)g
-(double;)390 4266 y(tm2=)g(time==3)e(||)j(time>=6;)d(//)i(tm2)g(=)h(0,)
-f(0,)g(1,)g(0,)g(0,)h(1,)f(1,)g(1,)g(1,)g(1)h(;)f(type)g(double)390
-4376 y(tm3=)g(int\(!tm1\);)474 b(//)47 b(tm3=)95 b(1,)47
-b(1,)g(0,)g(0,)g(0,)h(0,)f(1,)g(1,)g(1,)g(1)h(;)f(type)g(int)390
-4485 y(tm4=)g(tm1)g(&&)g(tm2;)428 b(//)47 b(tm4=)95 b(0,)47
-b(0,)g(1,)g(0,)g(0,)h(1,)f(0,)g(0,)g(0,)g(0)h(;)f(type)g(double;)390
-4595 y(tm5=)g(!tm4;)714 b(//)47 b(tm5=)95 b(1,)47 b(1,)g(0,)g(1,)g(1,)h
-(0,)f(1,)g(1,)g(1,)g(1)h(;)f(type)g(double;)150 4792
-y Fk(Regular)31 b(Assign)f(Op)s(erator)150 4902 y Fr(var1)k('=')e(exp1)
-150 5011 y FD(If)e(v)-5 b(ar1)30 b(do)s(esn't)g(already)h(exist)g(in)e
-(Output)g(then)h(v)-5 b(ar1)31 b(is)f(written)g(to)h(Output)e(with)h
-(the)g(v)-5 b(alues)31 b(and)150 5121 y(dimensions)40
-b(from)f(expr1.)71 b(If)40 b(v)-5 b(ar1)41 b(already)g(exists)g(in)f
-(Output,)h(then)g(the)f(only)h(requiremen)m(t)f(on)150
-5230 y(expr1)29 b(is)f(that)h(the)g(n)m(um)m(b)s(er)f(of)g(elemen)m(ts)
-i(m)m(ust)f(matc)m(h)g(the)g(n)m(um)m(b)s(er)e(already)j(on)e(disk.)40
-b(The)28 b(t)m(yp)s(e)h(of)150 5340 y(expr1)h(is)h(con)m(v)m(erted)h
-(if)e(necessary)h(to)g(the)f(disk)g(t)m(yp)s(e.)p eop
-end
-%%Page: 72 74
-TeXDict begin 72 73 bop 150 -116 a FD(72)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)180 299 y Fk(Other)h(Assign)f(Op)s(erators)
-h Fy(+)p Fk(=,-=,*=./=)150 408 y Fr(var1)j('ass)p 511
-408 28 4 v 41 w(op')g(exp1)150 518 y FD(if)j(exp1)h(is)f(a)g(v)-5
-b(ariable)38 b(and)f(it)h(do)s(esn't)f(conform)g(to)h(v)-5
-b(ar1)37 b(then)g(an)g(attempt)i(is)e(made)g(to)h(mak)m(e)g(it)150
-628 y(conform)23 b(to)i(v)-5 b(ar1.)39 b(If)23 b(exp1)g(is)h(an)f
-(attribute)i(it)f(m)m(ust)f(ha)m(v)m(e)i(unit)m(y)e(size)i(or)e(else)i
-(ha)m(v)m(e)g(the)e(same)h(n)m(um)m(b)s(er)150 737 y(of)37
-b(elemen)m(ts)i(as)e(v)-5 b(ar1.)62 b(If)37 b(expr1)g(has)g(a)g
-(di\013eren)m(t)h(t)m(yp)s(e)g(to)f(v)-5 b(ar1)38 b(the)f(it)h(is)f
-(con)m(v)m(erted)i(to)f(the)g(v)-5 b(ar1)150 847 y(t)m(yp)s(e.)275
-1011 y(example:)390 1174 y Fy(z1=four+=one*=10)43 b(//)48
-b(z1=14)e(four=14)g(one=10;)390 1284 y(time-=2)475 b(//)48
-b(time=)e(-1,0,1,2,3,4,5,6,7,8)150 1448 y Fk(Incremen)m(t/)32
-b(Decremen)m(t)g(Op)s(erators)180 1557 y FD(These)e(w)m(ork)g(in)g(a)g
-(similar)g(fashion)g(to)h(their)f(regular)g(C)g(coun)m(terparts.)41
-b(If)29 b(sa)m(y)i(the)f(v)-5 b(ariable)31 b Fy(")p FD(four)p
-Fy(")150 1667 y FD(is)25 b(input)f(only)g(then)h(the)g(statemen)m(t)h
-Fy("++)p FD(four)p Fy(")d FD(e\013ectiv)m(ely)28 b(means)c(-read)h
-(four)f(from)h(input)e(incremen)m(t)150 1776 y(eac)m(h)32
-b(elemen)m(t)f(b)m(y)g(one)f(,)h(then)f(write)h(the)f(new)g(v)-5
-b(alues)31 b(to)g(Output;)275 1940 y(Example:)390 2104
-y Fy(n2=++four;)140 b(n2=5,)47 b(four=5)390 2214 y(n3=one--+20;)d
-(n3=21)95 b(one=0;)390 2323 y(n4=--time;)140 b
-(n4=time=0.,1.,2.,3.,4.,5.,)o(6.,7)o(.,8)o(.,9.)o(;)150
-2487 y Fk(Conditional)31 b(Op)s(erator)g(?:)150 2597
-y Fr(exp1)i(?)43 b(exp2)33 b(:)42 b(exp3)150 2706 y FD(The)26
-b(conditional)i(op)s(erator)f(\(or)g(ternary)f(Op)s(erator\))g(is)h(a)g
-(succinct)g(w)m(a)m(y)g(of)g(writing)g(an)f(if/then/else.)150
-2816 y(If)k(exp1)h(ev)-5 b(aluates)31 b(to)h(true)e(then)g(exp2)g(is)h
-(returned)e(else)i(exp3)g(is)f(returned.)275 2979 y(Example:)390
-3143 y Fy(weight_avg=)45 b(weight.avg\(\);)390 3253 y
-(weight_avg at units=)e(\(weight_avg)i(==1)i(?)g("kilo")f(:)i("kilos"\);)
-390 3362 y(PS_nw=)e(PS)h(-)h(\(PS.min\(\))d(>100000)h(?)h(100000)f(:)i
-(0)f(\);)150 3526 y Fk(Clipping)30 b(Op)s(erators)150
-3719 y Fy(<<)g FD(Less-than)g(Clipping)630 3938 y(F)-8
-b(or)28 b(arra)m(ys,)g(the)g(less-than)f(selection)i(op)s(erator)f
-(selects)g(all)g(v)-5 b(alues)28 b(in)f(the)g(left)h(op)s(erand)630
-4048 y(that)37 b(are)g(less)g(than)g(the)g(corresp)s(onding)e(v)-5
-b(alue)37 b(in)g(the)g(righ)m(t)g(op)s(erand.)58 b(If)37
-b(the)f(v)-5 b(alue)630 4158 y(of)32 b(the)g(left)g(side)f(is)h
-(greater)h(than)e(or)h(equal)g(to)g(the)g(corresp)s(onding)f(v)-5
-b(alue)32 b(of)g(the)f(righ)m(t)630 4267 y(side,)g(then)f(the)g(righ)m
-(t)h(side)f(v)-5 b(alue)31 b(is)g(placed)g(in)f(the)g(result)150
-4435 y Fy(>>)g FD(Greater-than)h(Clipping)630 4654 y(F)-8
-b(or)46 b(arra)m(ys,)51 b(the)46 b(greater-than)h(selection)g(op)s
-(erator)f(selects)h(all)g(v)-5 b(alues)46 b(in)f(the)h(left)630
-4764 y(op)s(erand)38 b(that)h(are)h(greater)g(than)f(the)g(corresp)s
-(onding)f(v)-5 b(alue)39 b(in)g(the)g(righ)m(t)h(op)s(erand.)630
-4874 y(If)33 b(the)h(v)-5 b(alue)34 b(of)g(the)g(left)h(side)e(is)h
-(less)g(than)g(or)f(equal)i(to)f(the)g(corresp)s(onding)f(v)-5
-b(alue)34 b(of)630 4983 y(the)d(righ)m(t)g(side,)f(then)g(the)h(righ)m
-(t)g(side)f(v)-5 b(alue)31 b(is)f(placed)h(in)f(the)h(result.)275
-5176 y(Example:)390 5340 y Fy(RDM2=)46 b(RDM)h(>>100.0;)f
-(RDM2=100,100,100,100,126)o(,12)o(6,10)o(0,10)o(0,1)o(00,)41
-b(100;)47 b(//)g(type)g(double)p eop end
-%%Page: 73 75
-TeXDict begin 73 74 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(73)390
-299 y Fy(RDM2=)46 b(RDM)h(<<)g(90s)g(;)h(RDM3=)94 b(1,)h(9,)47
-b(36,)g(84,)g(90,)g(90,)g(84,)g(36,)94 b(9,)143 b(1;)47
-b(//)g(type)g(int)150 520 y Fv(4.1.3)63 b(Dimensions)150
-667 y FD(Dimensions)31 b(are)f(de\014ned)f(in)i(Output)e(using)h(the)g
-Fy(defdim\(\))e FD(function.)390 837 y Fy(defdim\("cnt",10\);)275
-1007 y FD(This)35 b(dimension)g(name)h(m)m(ust)f(then)h(b)s(e)f
-(pre\014xed)g(with)g(a)h(dollar-sign)h(`)p Fy($)p FD(')f(when)f
-(referred)g(to)h(in)150 1117 y(metho)s(d)30 b(argumen)m(ts)g(or)h
-(left-hand-casting,)h(e.g.,)390 1287 y Fy(new_var[$cnt]=time;)390
-1397 y(temperature[$time,$lat,$)o(lon])o(=35.)o(5;)390
-1506 y(temp_avg=temperature.avg)o(\($ti)o(me\);)275 1677
-y FD(The)d Fy(size)h FD(metho)s(d)f(allo)m(ws)j(the)f(dimension)e(size)
-j(to)f(b)s(e)f(used)f(in)h(an)g(arithmetic)i(expression:)390
-1847 y Fy(time_avg=time.total\(\))42 b(/)47 b($time.size;)275
-2017 y FD(Increase)30 b(the)h(size)g(of)g(a)f(new)g(v)-5
-b(ariable)31 b(b)m(y)g(one)f(and)g(set)h(new)f(mem)m(b)s(er)g(to)h
-(zero:)390 2187 y Fy(defdim\("cnt_new",$cnt.si)o(ze+1)o(\);)390
-2297 y(new_var[$cnt_new]=0.0;)390 2407 y(new_var\(0:\($cnt_new.size)o
-(-2\)\))o(=old)o(_va)o(r;)150 2577 y Fk(Dimension)f(Abbreviations)180
-2686 y FD(It)h(is)f(p)s(ossible)g(to)h(use)f(dimension)g(abbreviations)
-h(as)g(metho)s(d)e(argumen)m(ts:)150 2796 y Fy($0)h FD(is)g(the)h
-(\014rst)e(dimension)h(of)h(a)f(v)-5 b(ariable)150 2906
-y Fy($1)30 b FD(is)g(the)h(second)f(dimension)g(of)h(a)f(v)-5
-b(ariable)150 3015 y Fy($n)30 b FD(is)g(the)h(n)p Fy(+)p
-FD(1)f(dimension)g(of)g(a)h(v)-5 b(ariable)390 3295 y
-Fy(float)46 b(four_dmn_rec_var\(time,lat,)o(lev)o(,lon)o(\);)390
-3405 y(double)g(three_dmn_var_dbl\(time,la)o(t,l)o(on\);)390
-3624 y(four_nw=four_dmn_rev_var)o(.rev)o(erse)o(\($t)o(ime,)o($lon)o
-(\))390 3733 y(four_nw=four_dmn_rec_var)o(.rev)o(erse)o(\($0)o(,$3\))o
-(;)390 3952 y(four_avg=four_dmn_rec_va)o(r.av)o(g\($l)o(at,)o($lev)o
-(\);)390 4062 y(four_avg=four_dmn_rec_va)o(r.av)o(g\($1)o(,$2)o(\);)390
-4281 y(three_mw=three_dmn_var_d)o(bl.p)o(ermu)o(te\()o($tim)o(e,$l)o
-(on,)o($lat)o(\);)390 4391 y(three_mw=three_dmn_var_d)o(bl.p)o(ermu)o
-(te\()o($0,$)o(2,$1)o(\);)150 4561 y Fk(ID)30 b(Quoting)197
-4671 y FD(If)46 b(the)i(dimension)e(name)h(con)m(tains)h(non-regular)f
-(c)m(haracters)i(use)d(ID)i(quoting.)91 b(See)47 b(see)g(Sec-)150
-4780 y(tion)31 b(4.1.27)h([ID)f(Quoting],)g(page)g(116)390
-4951 y Fy(defdim\("a--list.A",10\);)390 5060 y(A1['$a--list.A']=30.0;)
-150 5230 y Fk(GOTCHA)180 5340 y FD(It)g(is)g(not)g(p)s(ossible)f(to)h
-(man)m(ually)g(de\014ne)f(in)g(Output)g(an)m(y)h(dimensions)e(that)j
-(exist)f(in)f(Input.)40 b(When)p eop end
-%%Page: 74 76
-TeXDict begin 74 75 bop 150 -116 a FD(74)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(a)38 b(v)-5 b(ariable)39
-b(from)f(Input)f(app)s(ears)g(in)h(an)g(expression)f(or)h(statemen)m(t)
-i(its)f(dimensions)e(in)h(Input)f(are)150 408 y(automagically)c(copied)
-e(to)g(Output)f(\(if)g(they)h(are)g(not)f(already)h(presen)m(t\))150
-618 y Fv(4.1.4)63 b(Left)41 b(hand)g(casting)150 765
-y FD(The)36 b(follo)m(wing)h(examples)g(demonstrate)f(the)h(utilit)m(y)
-g(of)f(the)h Fz(left)f(hand)f(casting)45 b FD(abilit)m(y)38
-b(of)e Fy(ncap2)p FD(.)150 874 y(Consider)25 b(\014rst)f(this)i
-(simple,)h(arti\014cial,)h(example.)40 b(If)25 b Fz(lat)j
-FD(and)d Fz(lon)h FD(are)g(one)g(dimensional)f(co)s(ordinates)150
-984 y(of)34 b(dimensions)f Fz(lat)j FD(and)d Fz(lon)p
-FD(,)i(resp)s(ectiv)m(ely)-8 b(,)37 b(then)c(addition)h(of)g(these)g(t)
-m(w)m(o)h(one-dimensional)g(arra)m(ys)150 1093 y(is)e(in)m(trinsically)
-h(ill-de\014ned)e(b)s(ecause)h(whether)f Fz(lat)p 1964
-1093 28 4 v 41 w(lon)h FD(should)e(b)s(e)h(dimensioned)g
-Fz(lat)k FD(b)m(y)c Fz(lon)h FD(or)g Fz(lon)150 1203
-y FD(b)m(y)k Fz(lat)j FD(is)d(am)m(biguous)g(\(assuming)g(that)g
-(addition)g(is)g(to)h(remain)f(a)g Fz(comm)m(utativ)m(e)45
-b FD(pro)s(cedure,)38 b(i.e.,)150 1313 y(one)32 b(that)h(do)s(es)f(not)
-g(dep)s(end)e(on)i(the)h(order)e(of)h(its)h(argumen)m(ts\).)46
-b(Di\013ering)33 b(dimensions)f(are)g(said)g(to)150 1422
-y(b)s(e)f Fz(orthogonal)36 b FD(to)d(one)f(another,)g(and)f(sets)h(of)g
-(dimensions)e(whic)m(h)i(are)g(m)m(utually)g(exclusiv)m(e)h(are)f(or-)
-150 1532 y(thogonal)27 b(as)f(a)g(set)g(and)f(an)m(y)h(arithmetic)h(op)
-s(eration)f(b)s(et)m(w)m(een)g(v)-5 b(ariables)26 b(in)g(orthogonal)h
-(dimensional)150 1641 y(spaces)k(is)f(am)m(biguous)h(without)f(further)
-f(information.)275 1806 y(The)34 b(am)m(biguit)m(y)j(ma)m(y)f(b)s(e)e
-(resolv)m(ed)j(b)m(y)e(en)m(umerating)h(the)f(desired)g(dimension)f
-(ordering)h(of)h(the)150 1915 y(output)24 b(expression)g(inside)g
-(square)g(brac)m(k)m(ets)i(on)e(the)h(left)g(hand)e(side)i(\()p
-FC(LHS)p FD(\))g(of)g(the)f(equals)h(sign.)39 b(This)150
-2025 y(is)29 b(called)h Fz(left)g(hand)e(casting)38 b
-FD(b)s(ecause)29 b(the)g(user)f(resolv)m(es)i(the)f(dimensional)g
-(ordering)g(of)g(the)g FC(RHS)h FD(of)150 2134 y(the)h(expression)f(b)m
-(y)g(sp)s(ecifying)g(the)h(desired)f(ordering)g(on)g(the)h
-FC(LHS)p FD(.)390 2299 y Fy(ncap2)46 b(-s)i('lat_lon[lat,lon]=lat+l)o
-(on')41 b(in.nc)47 b(out.nc)390 2408 y(ncap2)f(-s)i
-('lon_lat[lon,lat]=lat+l)o(on')41 b(in.nc)47 b(out.nc)275
-2573 y FD(The)27 b(explicit)i(list)g(of)f(dimensions)f(on)h(the)g
-FC(LHS)p FD(,)g Fy([lat,lon])d FD(resolv)m(es)k(the)f(otherwise)h(am)m
-(biguous)150 2682 y(ordering)41 b(of)h(dimensions)f(in)h
-Fz(lat)p 1341 2682 V 41 w(lon)p FD(.)75 b(In)41 b(e\013ect,)46
-b(the)c FC(LHS)g Fz(casts)k FD(its)c(rank)g(prop)s(erties)f(on)m(to)i
-(the)150 2792 y FC(RHS)p FD(.)c(Without)f FC(LHS)g FD(casting,)k(the)c
-(dimensional)g(ordering)f(of)i Fz(lat)p 2559 2792 V 41
-w(lon)f FD(w)m(ould)f(b)s(e)h(unde\014ned)d(and,)150
-2902 y(hop)s(efully)-8 b(,)30 b Fy(ncap2)f FD(w)m(ould)h(prin)m(t)g(an)
-g(error)g(message.)275 3066 y(Consider)38 b(no)m(w)h(a)h(sligh)m(tly)h
-(more)e(complex)h(example.)69 b(In)38 b(geoph)m(ysical)k(mo)s(dels,)f
-(a)f(co)s(ordinate)150 3176 y(system)24 b(based)f(on)g(a)h(blend)f(of)h
-(terrain-follo)m(wing)h(and)e(densit)m(y-follo)m(wing)j(surfaces)d(is)h
-(called)g(a)g Fz(h)m(ybrid)150 3285 y(co)s(ordinate)i(system)p
-FD(.)40 b(In)25 b(this)g(co)s(ordinate)h(system,)h(four)e(v)-5
-b(ariables)26 b(m)m(ust)g(b)s(e)f(manipulated)g(to)h(obtain)150
-3395 y(the)44 b(pressure)e(of)h(the)h(v)m(ertical)h(co)s(ordinate:)68
-b Fz(PO)48 b FD(is)43 b(the)h(domain-mean)f(surface)h(pressure)e
-(o\013set)150 3504 y(\(a)c(scalar\),)j Fz(PS)h FD(is)c(the)g(lo)s(cal)h
-(\(time-v)-5 b(arying\))39 b(surface)f(pressure)e(\(usually)i(t)m(w)m
-(o)h(horizon)m(tal)g(spatial)150 3614 y(dimensions,)g(i.e.)65
-b(latitude)38 b(b)m(y)g(longitude\),)j Fz(h)m(y)m(am)e
-FD(is)f(the)g(w)m(eigh)m(t)h(giv)m(en)g(to)g(surfaces)f(of)g(constan)m
-(t)150 3724 y(densit)m(y)27 b(\(one)g(spatial)g(dimension,)g(pressure,)
-f(whic)m(h)h(is)f(orthogonal)i(to)f(the)g(horizon)m(tal)h
-(dimensions\),)150 3833 y(and)f Fz(h)m(ybm)f FD(is)h(the)g(w)m(eigh)m
-(t)i(giv)m(en)f(to)g(surfaces)f(of)g(constan)m(t)i(elev)-5
-b(ation)29 b(\(also)f(one)g(spatial)g(dimension\).)150
-3943 y(This)21 b(command)h(constructs)g(a)g(four-dimensional)g
-(pressure)f Fy(prs_mdp)f FD(from)h(the)h(four)f(input)g(v)-5
-b(ariables)150 4052 y(of)31 b(mixed)f(rank)g(and)f(orthogonalit)m(y:)
-390 4217 y Fy(ncap2)46 b(-s)i('prs_mdp[time,lat,lon,l)o(ev])o(=P0*)o
-(hyam)o(+PS)o(*hyb)o(m')42 b(in.nc)k(out.nc)275 4381
-y FD(Manipulating)32 b(the)g(four)f(\014elds)h(whic)m(h)f(de\014ne)g
-(the)h(pressure)f(in)g(a)i(h)m(ybrid)d(co)s(ordinate)j(system)f(is)150
-4491 y(easy)f(with)f(left)h(hand)e(casting.)150 4700
-y Fv(4.1.5)63 b(Arra)m(ys)40 b(and)h(h)m(yp)s(erslabs)150
-4847 y FD(Generating)25 b(a)g(regularly)f(spaced)h(one-dimensional)f
-(arra)m(y)h(with)f Fy(ncap2)f FD(is)h(simple)g(with)g(the)g
-Fy(array\(\))150 4956 y FD(function.)40 b(The)30 b(syn)m(tax)h(is)390
-5121 y Fy(output=array\(val_srt,val)o(_ncr)o(,$dm)o(n_n)o(m\);)41
-b(//)48 b(One-dimensional)43 b(output)390 5230 y
-(output=array\(val_srt,val)o(_ncr)o(,var)o(_tp)o(l\);)89
-b(//)47 b(Multi-dimensional)c(output)390 5340 y(h)p eop
-end
-%%Page: 75 77
-TeXDict begin 75 76 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(75)150
-299 y(where)43 b(the)g(argumen)m(ts)h(are)g(the)f(starting)h(v)-5
-b(alue)44 b Fz(v)-5 b(al)p 2104 299 28 4 v 41 w(srt)p
-FD(,)47 b(incremen)m(tal)d(v)-5 b(alue)44 b Fz(v)-5 b(al)p
-3190 299 V 41 w(ncr)p FD(,)46 b(and,)g(for)150 408 y(one-dimensional)31
-b(output,)f(the)g(single)g(dimension)g Fy($dmn_nm)p FD(,)e(or,)i(for)g
-(m)m(ulti-dimensional)h(output,)f(a)150 518 y(template)i(v)-5
-b(ariable)31 b Fy(var_tpl)p FD(,)e(i.e.,)i(a)g(v)-5 b(ariable)31
-b(with)f(the)h(same)g(shap)s(e)e(as)i(the)f(desired)g(output.)275
-678 y(Once)j(the)i(asso)s(ciated)g(dimensions)e(ha)m(v)m(e)i(b)s(een)e
-(de\014ned,)h(the)g(start)h(and)e(incremen)m(t)i(argumen)m(ts)150
-788 y(ma)m(y)c(b)s(e)f(supplied)f(as)h(v)-5 b(alues,)31
-b(mathmatical)i(expressions,)d(or)g(v)-5 b(ariables:)390
-948 y Fy(var_out=array\(1,1,$time\))o(;)42 b(//)47 b
-(1,2,3,4,5,6,7,8,9,10)390 1058 y(var_out=array\(1+2-2,one,)o($tim)o
-(e\);)41 b(//)47 b(1,2,3,4,5,6,7,8,9,10)390 1167 y
-(var_out=array\(1,2,three_)o(dmn_)o(rec_)o(var)o(\);)42
-b(//)47 b(1,3,5,...155,157,159)275 1327 y FD(Hyp)s(erslabs)35
-b(in)g Fy(ncap2)g FD(are)i(more)f(limited)h(than)e(h)m(yp)s(erslabs)g
-(with)h(the)g(other)h FC(NCO)f FD(op)s(erators.)150 1437
-y Fy(ncap2)44 b FD(do)s(es)i(not)g(understand)e(the)i(shell)g
-(command-line)g(syn)m(tax)h(used)e(to)h(sp)s(ecify)g(m)m(ulti-slabs,)
-150 1547 y(wrapp)s(ed)38 b(co-ordinates,)44 b(negativ)m(e)e(stride)e
-(or)f(co)s(ordinate)i(v)-5 b(alue)40 b(limits.)70 b(Ho)m(w)m(ev)m(er)42
-b(with)e(a)g(bit)g(of)150 1656 y(syn)m(tactic)c(magic)g(they)e(are)h
-(all)g(are)g(p)s(ossible.)51 b Fy(ncap2)33 b FD(accepts)j(\(in)e(fact,)
-j(it)d(requires\))g Fz(N)p FD(-h)m(yp)s(erslab)150 1766
-y(argumen)m(ts)d(for)f(a)h(v)-5 b(ariable)31 b(of)f(rank)g
-Fz(N)10 b FD(:)390 1926 y Fy(var1\(arg1,arg2)44 b(...)j(argN\);)275
-2086 y FD(where)29 b(eac)m(h)j(h)m(yp)s(erslab)d(argumen)m(t)i(is)g(of)
-f(the)h(form)390 2246 y Fy(start:end:stride)275 2406
-y FD(and)43 b(the)i(argumen)m(ts)g(for)f(di\013eren)m(t)h(dimensions)f
-(are)h(separated)g(b)m(y)f(commas.)84 b(If)44 b Fy(")p
-FD(start)p Fy(")h FD(is)150 2516 y(omitted,)37 b(it)f(defaults)f(to)h
-(0.)55 b(If)34 b Fy(")p FD(end)p Fy(")g FD(is)h(omitted,)j(it)d
-(defaults)g(to)h(dimension)e(size)i(min)m(us)e(one.)55
-b(If)150 2626 y Fy(")p FD(stride)p Fy(")30 b FD(is)g(omitted,)i(it)f
-(defaults)f(to)h(1.)150 2895 y(If)26 b(a)i(single)f(v)-5
-b(alue)28 b(is)f(presen)m(t)f(then)h(it)g(is)g(assumed)g(that)g(that)g
-(dimension)g(collapses)h(to)g(a)f(single)g(v)-5 b(alue)150
-3005 y(\(i.e.,)28 b(a)d(cross-section\).)41 b(The)25
-b(n)m(um)m(b)s(er)f(of)h(h)m(yp)s(erslab)f(argumen)m(ts)i(MUST)e(equal)
-i(the)f(v)-5 b(ariable's)26 b(rank.)150 3275 y Fk(Hyp)s(erslabs)k(on)g
-(the)g(Righ)m(t)i(Hand)e(Side)g(of)g(an)g(assign)275
-3544 y FD(A)g(simple)g(1D)i(example:)390 3705 y Fy(\($time.size=10\))
-390 3814 y(od[$time]={20,22,24,26,2)o(8,30)o(,32,)o(34,)o(36,3)o(8};)
-390 4033 y(od\(7\);)237 b(//)47 b(34)390 4143 y(od\(7:\);)189
-b(//)47 b(34,36,38)390 4253 y(od\(:7\);)189 b(//)47 b
-(20,22,24,26,28,30,32,34)390 4362 y(od\(::4\);)141 b(//)47
-b(20,28,36)390 4472 y(od\(1:6:2\))93 b(//)47 b(22,26,30)390
-4581 y(od\(:\))285 b(//)47 b(20,22,24,26,28,30,32,34,3)o(6,38)275
-4741 y FD(A)30 b(more)h(complex)g(three)f(dimensional)h(example:)390
-4902 y Fy(\($lat.size=2,$lon.size=4)o(\))390 5011 y
-(th[$time,$lat,$lon]=)1631 5121 y({1,)47 b(2,)g(3,)g(4,)g(5,)h(6,)f(7,)
-g(8,)1631 5230 y(9,10,11,12,13,14,15,16,)1631 5340 y
-(17,18,19,20,21,22,23,24,)p eop end
-%%Page: 76 78
-TeXDict begin 76 77 bop 150 -116 a FD(76)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)1631 299 y Fy(-99,-99,-99,-99,-99,-99,)o
-(-99,)o(-99)o(,)1631 408 y(33,34,35,36,37,38,39,40,)1631
-518 y(41,42,43,44,45,46,47,48,)1631 628 y(49,50,51,52,53,54,55,56,)1631
-737 y(-99,58,59,60,61,62,63,64)o(,)1631 847 y(65,66,67,68,69,70,71,72,)
-1631 956 y(-99,74,75,76,77,78,79,-9)o(9)42 b(};)390 1176
-y(th\(1,1,3\);)379 b(//)47 b(16)390 1285 y(th\(2,0,:\);)379
-b(//)47 b(17,)g(18,)g(19,)g(20)390 1395 y(th\(:,1,3\);)379
-b(//)47 b(8,)g(16,)g(24,)g(-99,)g(40,)g(48,)g(56,)g(64,)g(72,)f(-99)390
-1504 y(th\(::5)g(,:,0:3:2\);)f(//)i(1,)g(3,)h(5,)f(7,)g(41,)g(43,)g
-(45,)g(47)275 1677 y FD(If)38 b(h)m(yp)s(erslab)g(argumen)m(ts)h
-(collapse)i(to)f(a)f(single)h(v)-5 b(alue)39 b(\(a)h(cross-section)h
-(has)e(b)s(een)f(sp)s(eci\014ed\),)150 1786 y(then)32
-b(that)i(dimension)e(is)g(remo)m(v)m(ed)i(from)e(the)h(returned)e(v)-5
-b(ariable.)49 b(If)32 b(all)h(the)g(v)-5 b(alues)33 b(collapse)h(then)
-150 1896 y(a)d(scalar)g(v)-5 b(ariable)31 b(is)g(returned.)39
-b(So,)31 b(for)f(example,)h(the)g(follo)m(wing)h(is)e(v)-5
-b(alid:)390 2068 y Fy(th_nw=th\(0,:,:\)+th\(9,:,:)o(\);)390
-2178 y(//)47 b(th_nw)g(has)f(dimensions)f($lon,$lat)390
-2287 y(//)i(NB:)g(the)g(time)g(dimension)e(has)i(become)f(degenerate)
-275 2459 y FD(The)29 b(follo)m(wing)j(is)f(in)m(v)-5
-b(alid:)390 2632 y Fy(th_nw=th\(0,:,0:1\)+th\(9,:)o(,0:1)o(\);)275
-2804 y FD(b)s(ecause)34 b(the)i Fy($lon)d FD(dimension)i(no)m(w)f(only)
-i(has)e(t)m(w)m(o)i(elemen)m(ts.)56 b(The)34 b(ab)s(o)m(v)m(e)j(can)e
-(b)s(e)f(calculated)150 2913 y(b)m(y)c(using)g(a)h(LHS)f(cast)h(with)f
-Fy($lon_nw)f FD(as)h(replacemen)m(t)i(dim)e(for)g Fy($lon)p
-FD(:)390 3086 y Fy(defdim\("lon_nw",2\);)390 3195 y
-(th_nw[$lat,$lon_nw]=th\(0)o(,:,0)o(:1\))41 b(+th\(9,:,0:1\);)150
-3367 y Fk(Hyp)s(erslabs)30 b(on)g(the)g(Left)h(Hand)f(Side)g(of)g(an)g
-(assign)179 3477 y FD(When)f(h)m(yp)s(erslabing)g(on)g(the)g(LHS,)g
-(the)g(expression)g(on)g(the)h(RHS)f(m)m(ust)g(ev)-5
-b(aluate)31 b(to)f(a)f(scalar)h(or)g(a)150 3587 y(v)-5
-b(ariable/attribute)26 b(with)d(the)h(same)g(n)m(um)m(b)s(er)e(of)i
-(elemen)m(ts)g(as)g(the)g(LHS)f(h)m(yp)s(erslab.)37 b(Set)24
-b(all)h(elemen)m(ts)150 3696 y(of)31 b(the)f(last)h(record)g(to)g
-(zero:)390 3868 y Fy(th\(9,:,:\)=0.0;)275 4041 y FD(Set)f(\014rst)g
-(elemen)m(t)i(of)e(eac)m(h)i(lon)e(elemen)m(t)i(to)f(1.0:)390
-4213 y Fy(th\(:,:,0\)=1.0;)275 4385 y FD(One)e(ma)m(y)i(h)m(yp)s
-(erslab)e(on)g(b)s(oth)h(sides)f(of)i(an)e(assign.)41
-b(F)-8 b(or)31 b(example,)g(this)f(sets)g(the)g(last)h(record)f(to)150
-4495 y(the)h(\014rst)e(record:)390 4667 y Fy(th\(9,:,:\)=th\(0,:,:\);)
-275 4839 y FD(Sa)m(y)f Fz(th0)36 b FD(represen)m(ts)28
-b(pressure)f(at)i(heigh)m(t=0)g(and)e Fz(th1)36 b FD(represen)m(ts)28
-b(pressure)f(at)i(heigh)m(t=1.)41 b(Then)150 4949 y(it)31
-b(is)f(p)s(ossible)g(to)h(insert)g(these)f(h)m(yp)s(erslabs)g(in)m(to)h
-(the)g(records)390 5121 y Fy(prs[$time,$height,$lat,$)o(lon])o(=0.0)o
-(;)390 5230 y(prs\(:,0,:,:\)=th0;)390 5340 y(prs\(:,1,:,:\)=th1)p
-eop end
-%%Page: 77 79
-TeXDict begin 77 78 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(77)150
-299 y Fk(Rev)m(erse)32 b(metho)s(d)150 408 y FD(Use)26
-b(the)h Fy(reverse\(\))c FD(metho)s(d)i(to)i(rev)m(erse)g(a)f
-(dimension's)g(elemen)m(ts)h(in)f(a)g(v)-5 b(ariable)27
-b(with)f(at)g(least)i(one)150 518 y(dimension.)40 b(This)30
-b(is)g(equiv)-5 b(alen)m(t)32 b(to)f(a)g(negativ)m(e)h(stride,)f(e.g.,)
-390 691 y Fy(th_rv=th\(1)45 b(,:,:\).reverse\($lon\);)d(//)47
-b({12,11,10,9)e(},)i({16,15,14,13})390 800 y
-(od_rv=od.reverse\($time\);)375 b(//)47 b({38,36,34,32,30,28,26,24,2)o
-(2,20)o(})150 973 y Fk(P)m(erm)m(ute)32 b(metho)s(d)150
-1082 y FD(Use)g(the)g Fy(permute\(\))d FD(metho)s(d)i(to)i(sw)m(ap)e
-(the)h(dimensions)f(of)h(a)g(v)-5 b(ariable.)45 b(The)32
-b(n)m(um)m(b)s(er)e(and)h(names)150 1192 y(of)h(dimension)g(argumen)m
-(ts)h(m)m(ust)f(matc)m(h)h(the)f(dimensions)g(in)f(the)i(v)-5
-b(ariable.)47 b(If)32 b(the)g(\014rst)g(dimension)150
-1302 y(in)g(the)g(v)-5 b(ariable)33 b(is)f(of)g(record)g(t)m(yp)s(e)g
-(then)g(this)f(m)m(ust)h(remain)g(the)g(\014rst)g(dimension.)45
-b(If)31 b(y)m(ou)h(w)m(an)m(t)h(to)150 1411 y(c)m(hange)f(the)e(record)
-g(dimension)g(then)g(consider)h(using)e Fy(ncpdq)p FD(.)275
-1584 y(Consider)g(the)i(v)-5 b(ariable:)390 1756 y Fy(float)46
-b(three_dmn_var\(lat,lev,lon\))o(;)390 1866 y(three_dmn_var_prm=three_)
-o(dmn_)o(var.)o(per)o(mute)o(\($lo)o(n,$)o(lat,)o($lev)o(\);)390
-1976 y(//)h(The)g(permuted)f(values)g(are)390 2085 y
-(three_dmn_var_prm=)485 2195 y(0,4,8,)485 2304 y(12,16,20,)485
-2414 y(1,5,9,)485 2524 y(13,17,21,)485 2633 y(2,6,10,)485
-2743 y(14,18,22,)485 2852 y(3,7,11,)485 2962 y(15,19,23;)150
-3188 y Fv(4.1.6)63 b(A)m(ttributes)150 3334 y FD(A)m(ttributes)31
-b(are)g(referred)f(to)h(b)m(y)f Fr(var)p 1449 3334 28
-4 v 41 w(nm)p Fy(@)p Fr(att)p 1769 3334 V 42 w(nm)150
-3444 y FD(All)h(the)g(follo)m(wing)g(are)g(v)-5 b(alid)31
-b(statemen)m(ts:)390 3617 y Fy(global at text="Test)43 b(Attributes";)i
-(/*)i(Assign)f(a)h(global)f(variable)g(attribute)f(*/)390
-3726 y(a1[$time]=time*20;)390 3836 y(a1 at long_name="Kelvin";)390
-3945 y(a1 at min=a1.min\(\);)390 4055 y(a1 at max=a1.max\(\);)390
-4165 y(a1 at min++;)390 4274 y(--a1 at max;)g(q)390 4384 y(a1\(0\)=a1 at min;)
-390 4493 y(a1\($time.size-1\)=a1 at max;)275 4666 y FD(A)30
-b Fr(value)j(list)39 b FD(can)31 b(b)s(e)e(used)h(on)g(the)h(RHS)f(of)g
-(an)h(assign...)390 4839 y Fy(a1 at trip1={1,2,3})43 b(;)390
-4948 y(a1 at triplet={a1 at min,\(a1 at m)o(in+a)o(1 at ma)o(x\)/)o(2,a1)o(@max)o
-(};)275 5121 y FD(The)26 b(netCDF)h(sp)s(eci\014cation)g(allo)m(ws)h
-(all)g(attribute)f(t)m(yp)s(es)g(to)g(ha)m(v)m(e)h(a)f(size)g(greater)h
-(than)f(one.)39 b(The)150 5230 y(maxim)m(um)g(is)g(de\014ned)e(b)m(y)i
-Fy(NC_MAX_ATTRS)p FD(.)63 b(The)39 b(follo)m(wing)h(is)f(an)g
-Fy(ncdump)e FD(of)i(the)h(metadata)g(for)150 5340 y(v)-5
-b(ariable)31 b Fz(a1)p eop end
-%%Page: 78 80
-TeXDict begin 78 79 bop 150 -116 a FD(78)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(double)46 b(a1\(time\))g(;)485
-408 y(a1:long_name)f(=)i("Kelvin")f(;)485 518 y(a1:max)h(=)g(199.)g(;)
-485 628 y(a1:min)g(=)g(21.)g(;)485 737 y(a1:trip1)f(=)h(1,)h(2,)f(3)g
-(;)485 847 y(a1:triplet)e(=)j(21.,)f(110.,)f(199.)h(;)275
-1009 y FD(The)26 b Fy(size\(\))g FD(metho)s(d)h(can)h(b)s(e)e(used)h
-(with)g(attributes.)40 b(F)-8 b(or)28 b(example,)h(to)g(sa)m(v)m(e)g
-(an)e(attribute)h(text)150 1119 y(string)i(in)g(a)h(v)-5
-b(ariable,)390 1281 y Fy(defdim\("sng_len",)43 b
-(a1 at long_name.size\(\)\);)390 1390 y(sng_arr[$sng_len]=a1 at lon)o(g_na)o
-(me;)e(//)47 b(sng_arr)f(now)h(contains)f("Kelvin")275
-1553 y FD(A)m(ttributes)41 b(de\014ned)e(in)h(a)g(script)g(are)h
-(stored)f(in)g(memory)h(and)e(are)i(written)f(to)h(Output)e(after)150
-1662 y(script)30 b(completion.)42 b(T)-8 b(o)31 b(stop)f(the)h
-(attribute)g(b)s(eing)f(written)g(use)g(the)g(ram)p 2814
-1662 28 4 v 40 w(delete\(\))i(metho)s(d)e(or)g(use)150
-1772 y(a)h(b)s(ogus)e(v)-5 b(ariable)32 b(name.)150 1934
-y Fk(A)m(ttribute)f(Propagation)h(&)e(Inheritance)225
-2096 y FA(\017)60 b FD(A)m(ttribute)27 b(propagation)g(o)s(ccurs)f(in)g
-(a)h(regular)f(assign)h(statemen)m(t.)41 b(The)25 b(v)-5
-b(ariable)27 b(b)s(eing)f(de\014ned)330 2206 y(on)k(the)h(LHS)f(gets)h
-(copies)g(of)g(the)f(attributes)h(from)f(the)h(leftermost)g(v)-5
-b(ariable)31 b(on)g(the)f(RHS)225 2343 y FA(\017)60 b
-FD(A)m(ttribute)33 b(Inheritance:)45 b(The)32 b(LHS)g(v)-5
-b(ariable)33 b Fy(")p FD(inherits)p Fy(")f FD(attributes)h(from)f(an)g
-(Input)f(v)-5 b(ariable)330 2453 y(with)30 b(the)h(same)f(name)225
-2590 y FA(\017)60 b FD(It)28 b(is)g(p)s(ossible)f(to)i(ha)m(v)m(e)g(a)f
-(regular)g(assign)g(statemen)m(t)h(for)f(whic)m(h)f(b)s(oth)h
-(propagation)g(and)f(inher-)330 2700 y(itance)32 b(o)s(ccur.)390
-2862 y Fy(prs_mdp[time,lat,lon,lev)o(]=P0)o(*hya)o(m+h)o(ybm*)o(PS;)137
-b(//)47 b(prs_mdp)f(gets)g(attributes)f(from)i(PO)390
-2972 y(th_min=1.0)e(+)i(2*three_dmn_var_dbl.min\($t)o(ime\))o(;)42
-b(//)47 b(th_min)94 b(gets)46 b(attributes)f(from)i(three_dmn_var_dbl)
-275 3134 y FD(If)d(the)h(attribute)g(name)g(con)m(tains)h(non-regular)e
-(c)m(haracters)j(use)d(ID)h(quoting.)84 b(See)45 b(see)g(Sec-)150
-3243 y(tion)31 b(4.1.27)h([ID)f(Quoting],)g(page)g(116)390
-3406 y Fy('b..m1 at c--lost'=23;)150 3610 y Fv(4.1.7)63
-b(Num)m(b)s(er)41 b(literals)150 3757 y FD(The)31 b(table)h(b)s(elo)m
-(w)f(lists)g(the)h(p)s(ost\014x)e(c)m(haracter\(s\))j(to)f(add)e(to)i
-(a)g(n)m(um)m(b)s(er)d(literal)k(for)e(t)m(yp)s(e)g(cohesion.)150
-3867 y(T)-8 b(o)30 b(use)f(the)h(new)f(netCDF4)i(t)m(yp)s(es)f
-FC(NCO)f FD(m)m(ust)h(b)s(e)f(compiled/link)m(ed)h(to)h(the)f(netCDF4)g
-(library)g(and)150 3977 y(the)h(output)f(\014le)g(m)m(ust)g(b)s(e)g
-FC(HDF5)p FD(.)390 4139 y Fy(n1[$time]=1UL;)44 b(//)j(n1)g(will)g(now)g
-(by)g(type)g(NC_UINT)390 4248 y(n2[$lon]=4b;)140 b(//)47
-b(n2)g(will)g(be)g(of)g(type)g(NC_BYTE)390 4358 y(n3[$lat]=5ull;)d(//)j
-(n3)g(will)g(be)g(of)g(type)g(NC_UINT64)390 4468 y(n3 at a1=6.0d;)140
-b(//)47 b(attribute)f(will)g(be)h(type)g(NC_DOUBLE)390
-4577 y(n3 at a2=-666L;)92 b(//)47 b(attribute)f(will)g(be)h(type)g(NC_INT)
-275 4739 y FD(A)24 b(\015oating)h(p)s(oin)m(t)g(n)m(um)m(b)s(er)e
-(without)h(a)h(p)s(ost\014x)e(will)i(default)g(to)g Fy(NC_DOUBLE)p
-FD(.)36 b(An)24 b(in)m(teger)i(without)150 4849 y(a)h(p)s(ost\014x)f
-(will)h(default)f(to)i(t)m(yp)s(e)f Fy(NC_INT)p FD(.)37
-b(There)27 b(is)f(no)h(p)s(ost\014x)e(for)i(c)m(haracters,)i(use)d(a)h
-(quoted)g(string)150 4959 y(instead.)390 5121 y Fy(n4[$rlev]=0.1)283
-b(//)47 b(n4)g(will)g(be)g(of)g(type)g(NC_DOUBLE)390
-5230 y(n5[$lon_grd]=2.0)139 b(//)47 b(n5)g(will)g(be)g(of)g(type)g
-(NC_DOUBLE)390 5340 y(n6[$gds_crd]=2e3;)91 b(//)47 b(n6)g(will)g(be)g
-(of)g(type)g(NC_DOUBLE)p eop end
-%%Page: 79 81
-TeXDict begin 79 80 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(79)390
-299 y Fy(n7[$gds_crd]=2e3f;)91 b(//)47 b(n7)g(will)g(be)g(of)g(type)g
-(NC_FLOAT)390 408 y(n6 at a1=41;)427 b(//)47 b(attribute)f(will)g(be)h
-(type)g(NC_INT)390 518 y(n6 at a2=-21;)379 b(//)47 b(attribute)f(will)g
-(be)h(type)g(NC_INT)390 628 y(n6 at units="kelvin")c(//)k(attribute)f
-(will)g(be)h(type)g(NC_CHAR)630 811 y Fk(netCDF3/4)32
-b(T)m(yp)s(es)150 969 y FD(b)p Fy(|)p FD(B)317 b Fy(NC_BYTE)p
-FD(,)29 b(a)h(signed)h(1-b)m(yte)g(in)m(teger)150 1127
-y(none)293 b Fy(NC_CHAR)p FD(,)29 b(an)h(ISO/ASCI)s(I)e(c)m(haracter)
-150 1285 y(s)p Fy(|)p FD(S)345 b Fy(NC_SHORT)p FD(,)28
-b(a)j(signed)f(2-b)m(yte)i(in)m(teger)150 1443 y(l)p
-Fy(|)p FD(L)350 b Fy(NC_INT)p FD(,)29 b(a)i(signed)f(4-b)m(yte)i(in)m
-(teger)150 1600 y(f)p Fy(|)p FD(F)345 b Fy(NC_FLOAT)p
-FD(,)28 b(a)j(single-precision)h(\(4-b)m(yte\))g(\015oating)f(p)s(oin)m
-(t)g(n)m(um)m(b)s(er)150 1758 y(d)p Fy(|)p FD(D)312 b
-Fy(NC_DOUBLE)p FD(,)28 b(a)j(double-precision)f(\(8-b)m(yte\))j
-(\015oating)e(p)s(oin)m(t)f(n)m(um)m(b)s(er)630 2074
-y Fk(netCDF4)h(T)m(yp)s(es)150 2232 y FD(ub)p Fy(|)p
-FD(UB)198 b Fy(NC_UBYTE)p FD(,)28 b(an)j(unsigned)e(1-b)m(yte)j(in)m
-(teger)150 2390 y(us)p Fy(|)p FD(US)226 b Fy(NC_USHORT)p
-FD(,)28 b(an)i(unsigned)g(2-b)m(yte)h(in)m(teger)150
-2548 y(u)p Fy(|)p FD(U)p Fy(|)p FD(ul)p Fy(|)p FD(UL)630
-2657 y Fy(NC_UINT)p FD(,)e(an)h(unsigned)f(4-b)m(yte)j(in)m(teger)150
-2815 y(ll)p Fy(|)p FD(LL)268 b Fy(NC_INT64)p FD(,)28
-b(a)j(signed)f(8-b)m(yte)i(in)m(teger)150 2973 y(ull)p
-Fy(|)p FD(ULL)149 b Fy(NC_UINT64)p FD(,)28 b(an)i(unsigned)g(8-b)m(yte)
-h(in)m(teger)150 3171 y Fv(4.1.8)63 b(if)41 b(statemen)m(t)150
-3318 y FD(The)35 b(syn)m(tax)g(of)g(the)g(if)g(statemen)m(t)i(is)e
-(similar)h(to)g(its)f(C)g(coun)m(terpart.)55 b(The)34
-b Fr(Conditional)40 b(Op)-5 b(er)g(ator)150 3427 y(\(ternary)34
-b(op)-5 b(er)g(ator\))37 b FD(has)30 b(also)i(b)s(een)d(implemen)m
-(ted.)390 3587 y Fy(if\(exp1\))533 3696 y(stmt1;)390
-3806 y(else)47 b(if\(exp2\))533 3915 y(stmt2;)390 4025
-y(else)533 4134 y(stmt3;)390 4354 y(#)g(Can)g(use)g(code)g(blocks)f(as)
-h(well:)390 4463 y(if\(exp1\){)533 4573 y(stmt1;)533
-4682 y(stmt1a;)533 4792 y(stmt1b;)390 4902 y(})g(else)g(if\(exp2\))533
-5011 y(stmt2;)390 5121 y(else)g({)533 5230 y(stmt3;)533
-5340 y(stmt3a;)p eop end
-%%Page: 80 82
-TeXDict begin 80 81 bop 150 -116 a FD(80)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)533 299 y Fy(stmt3b;)390
-408 y(})150 577 y FD(F)-8 b(or)29 b(a)g(v)-5 b(ariable)29
-b(or)g(attribute)g(expression)f(to)h(b)s(e)f(logically)j(true)d(all)i
-(its)f(non-missing)f(v)-5 b(alue)29 b(elemen)m(ts)150
-686 y(m)m(ust)35 b(b)s(e)f(logically)j(true,)g(i.e.,)g(non-zero.)55
-b(The)34 b(expression)h(can)g(b)s(e)f(of)h(an)m(y)g(t)m(yp)s(e.)54
-b(Unlik)m(e)36 b(C)f(there)150 796 y(is)d(no)f(short-circuiting)i(of)e
-(an)h(expression)f(with)g(the)h(OR)f(\()p Fy(||)p FD(\))h(AND)g(\(&&\))
-f(op)s(erators.)45 b(The)31 b(whole)150 906 y(expression)f(is)h(ev)-5
-b(aluated)31 b(regardless)g(if)f(one)h(of)f(the)h(AND/OR)g(op)s(erands)
-e(are)i(true/false.)390 1074 y Fy(#)47 b(Simple)g(example)390
-1183 y(if\(time>0\))485 1293 y(print\("All)e(values)i(of)g(time)f(are)h
-(greater)f(than)h(zero\\n"\);)390 1403 y(else)g(if\()g(time<0\))485
-1512 y(print\("All)e(values)i(of)g(time)f(are)h(less)g(than)g
-(zero\\n"\);)390 1622 y(else)g({)485 1731 y(time_max=time.max\(\);)485
-1841 y(time_min=time.min\(\);)485 1951 y(print\("min)e(value)i(of)g
-(time="\);print\(time_min,")o(\045f"\))o(;)485 2060 y(print\("max)e
-(value)i(of)g(time="\);print\(time_max,")o(\045f"\))o(;)390
-2170 y(})390 2389 y(#)g(Example)f(from)h(ddra.nco)390
-2498 y(if\(fl_typ==fl_typ_gcm\){)485 2608 y(var_nbr_apx=32;)485
-2718 y(lmn_nbr=1.0*var_nbr_apx*va)o(rsz_)o(gcm)o(_4D;)41
-b(/*)47 b([nbr])g(Variable)e(size)i(*/)485 2827 y
-(if\(nco_op_typ==nco_op_typ_)o(avg\))o({)581 2937 y
-(lmn_nbr_avg=1.0*var_nbr_)o(apx*)o(var)o(sz_g)o(cm_4)o(D;)41
-b(/*)48 b([nbr])e(Averaging)f(block)i(size)f(*/)581 3046
-y(lmn_nbr_wgt=dmnsz_gcm_la)o(t;)c(/*)47 b([nbr])f(Weight)g(size)h(*/)
-485 3156 y(})h(//)f(!nco_op_typ_avg)390 3266 y(}else)f
-(if\(fl_typ==fl_typ_stl\){)485 3375 y(var_nbr_apx=8;)485
-3485 y(lmn_nbr=1.0*var_nbr_apx*va)o(rsz_)o(stl)o(_2D;)41
-b(/*)47 b([nbr])g(Variable)e(size)i(*/)485 3594 y
-(if\(nco_op_typ==nco_op_typ_)o(avg\))o({)581 3704 y
-(lmn_nbr_avg=1.0*var_nbr_)o(apx*)o(var)o(sz_s)o(tl_2)o(D;)41
-b(/*)48 b([nbr])e(Averaging)f(block)i(size)f(*/)581 3814
-y(lmn_nbr_wgt=dmnsz_stl_la)o(t;)c(/*)47 b([nbr])f(Weight)g(size)h(*/)
-485 3923 y(})h(//)f(!nco_op_typ_avg)390 4033 y(})g(//)h(!fl_typ)150
-4201 y Fk(Conditional)31 b(Op)s(erator)390 4479 y Fy(//)47
-b(netCDF4)f(needed)g(for)h(this)g(example)390 4589 y
-(th_nw=\(three_dmn_var_sht)41 b(>=)47 b(0)h(?)f
-(three_dmn_var_sht.uint\(\))41 b(:)48 b(three_dmn_var_sht.int\(\))41
-b(\);)150 4806 y Fv(4.1.9)63 b(prin)m(t)40 b(statemen)m(t)390
-4952 y Fy(print\(variable_name/attr)o(ibut)o(e)i(name/string,)i(format)
-i(string\);)150 5121 y FD(The)33 b(prin)m(t)g(function)h(tak)m(es)h(a)f
-(v)-5 b(ariable)34 b(name)g(or)f(attribute)i(name)e(or)h(a)g(quoted)g
-(string)f(and)g(prin)m(ts)150 5230 y(the)f(con)m(ten)m(ts)i(in)d(a)h
-(in)g(a)g(similar)g(fashion)g(to)g Fy(ncks)d(-H)p FD(.)45
-b(There)31 b(is)h(also)h(an)e(optional)i(C)f(st)m(yle)h(format)150
-5340 y(string)h(argumen)m(t.)51 b(Curren)m(tly)33 b(the)h(prin)m(t)f
-(function)h(cannot)g(prin)m(t)f(RAM)h(v)-5 b(ariables)35
-b(or)e(expressions)p eop end
-%%Page: 81 83
-TeXDict begin 81 82 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(81)150
-299 y(suc)m(h)37 b(as)g Fy('print\(var_msk*3+4\)')p FD(.)56
-b(T)-8 b(o)38 b(prin)m(t)f(an)g(expression,)i(\014rst)d(ev)-5
-b(aluate)39 b(it)f(as)f(a)h(non-RAM)150 408 y(v)-5 b(ariable)31
-b(\(so)g(it)g(will)g(b)s(e)e(sa)m(v)m(ed)j(and)e(can)g(b)s(e)g(prin)m
-(ted\),)h(and)e(then)h(prin)m(t)g(the)h(v)-5 b(ariable.)150
-597 y(examples)390 785 y Fy(print\(lon\);)390 895 y(lon[0]=0)390
-1004 y(lon[1]=90)390 1114 y(lon[2]=180)390 1224 y(lon[3]=270)390
-1443 y(print\(lon_2D_rrg,"\0453.2f,)o("\);)390 1552 y
-(0.00,0.00,180.00,0.00,18)o(0.00)o(,0.0)o(0,1)o(80.0)o(0,0.)o(00,)390
-1771 y(print\(mss_val_fst at _FillV)o(alue)o(\);)390 1881
-y(mss_val_fst at _FillValue,)41 b(size)47 b(=)h(1)f(NC_FLOAT,)e(value)i(=)
-g(-999)390 2100 y(print\("This)e(function)g(\\t)i(is)h
-(monotonic\\n"\);)390 2210 y(This)f(function)e(is)191
-b(monotonic)150 2467 y Fv(4.1.10)63 b(Missing)43 b(v)-7
-b(alues)41 b(ncap2)150 2614 y FD(Missing)27 b(v)-5 b(alues)27
-b(op)s(erate)g(sligh)m(tly)h(di\013eren)m(tly)f(in)f
-Fy(ncap2)f FD(Consider)h(the)g(expression)h(where)f(op)g(is)h(an)m(y)
-150 2724 y(of)k(the)f(follo)m(wing)i(op)s(erators)e(\(excluding)h
-('='\))390 2912 y Fy(Arithmetic)45 b(operators)g(\()j(*)f(/)h(\045)f(+)
-h(-)f(^)g(\))390 3021 y(Binary)f(Operators)236 b(\()48
-b(>,)f(>=)g(<,)g(<=)g(==,)g(!=,==,||,&&,)e(>>,<<)h(\))390
-3131 y(Assign)g(Operators)236 b(\()48 b(+=,-=,/=,)d(*=)i(\))390
-3350 y(var1)g('op')f(var2)150 3539 y FD(If)23 b(v)-5
-b(ar1)24 b(has)g(a)g(missing)f(v)-5 b(alue)24 b(then)g(this)f(is)h(the)
-g(v)-5 b(alue)24 b(used)f(in)g(the)h(op)s(eration,)i(otherwise)e(the)g
-(missing)150 3648 y(v)-5 b(alue)34 b(for)f(v)-5 b(ar2)34
-b(is)g(used.)49 b(If)33 b(during)f(the)i(elemen)m(t-b)m(y-elemen)m(t)j
-(op)s(eration)d(an)f(elemen)m(t)i(from)e(either)150 3758
-y(op)s(erand)26 b(is)h(equal)h(to)f(the)h(missing)f(v)-5
-b(alue)27 b(then)g(the)g(missing)g(v)-5 b(alue)27 b(is)h(carried)f
-(through.)39 b(In)26 b(this)h(w)m(a)m(y)150 3867 y(missing)j(v)-5
-b(alues)31 b('p)s(ercolate')h(or)e(propagate)i(through)e(an)g
-(expression.)150 3977 y(Missing)k(v)-5 b(alues)35 b(asso)s(ciated)g
-(with)f(Output)f(v)-5 b(ariables)34 b(are)h(stored)f(in)g(memory)f(and)
-h(are)g(written)g(to)150 4087 y(disk)26 b(after)h(the)f(script)g
-(\014nishes.)39 b(During)26 b(script)g(execution)h(its)g(p)s(ossible)f
-(\(and)g(legal\))i(for)f(the)f(missing)150 4196 y(v)-5
-b(alue)31 b(of)f(a)h(v)-5 b(ariable)31 b(to)g(tak)m(e)h(on)f(sev)m
-(eral)g(di\013eren)m(t)g(v)-5 b(alues.)390 4384 y Fy(#)47
-b(Consider)f(the)h(variable:)390 4494 y(int)g
-(rec_var_int_mss_val_int\()o(time)o(\);)41 b
-(=-999,2,3,4,5,6,7,8,-999,-)o(999;)390 4604 y(rec_var_int_mss_val_int:)
-o(_Fil)o(lVal)o(ue)g(=)48 b(-999;)390 4823 y(n2=rec_var_int_mss_val_i)o
-(nt)42 b(+)47 b(rec_var_int_mss_val_int.r)o(eve)o(rse\()o($tim)o(e\);)
-390 5042 y(n2=-999,-999,11,11,11,11)o(,11,)o(11,9)o(99,)o(-999)o(;)275
-5230 y FD(The)39 b(follo)m(wing)h(metho)s(ds)f(are)h(used)f(to)h(edit)g
-(the)g(missing)f(v)-5 b(alue)40 b(asso)s(ciated)h(with)e(a)h(v)-5
-b(ariable.)150 5340 y(They)30 b(only)g(w)m(ork)h(on)f(v)-5
-b(ariables)31 b(in)f(Output.)p eop end
-%%Page: 82 84
-TeXDict begin 82 83 bop 150 -116 a FD(82)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fy(set_miss\(expr\))630
-408 y FD(T)-8 b(ak)m(es)33 b(one)f(argumen)m(t)g(the)g(missing)f(v)-5
-b(alue.)45 b(Sets)32 b(or)g(o)m(v)m(erwrites)h(the)e(existing)i
-(missing)630 518 y(v)-5 b(alue.)41 b(The)30 b(argumen)m(t)h(giv)m(en)g
-(is)g(con)m(v)m(erted)h(if)e(necessary)h(to)g(the)f(v)-5
-b(ariable)31 b(t)m(yp)s(e)150 681 y Fy(change_miss\(expr\))630
-790 y FD(Changes)37 b(the)h(missing)f(v)-5 b(alue)38
-b(elemen)m(ts)g(of)g(the)g(v)-5 b(ariable)38 b(to)g(the)f(new)g
-(missing)g(v)-5 b(alue)630 900 y(\(n)m(b)30 b(an)g(exp)s(ensiv)m(e)h
-(function\).)150 1063 y Fy(get_miss\(\))630 1173 y FD(Returns)40
-b(the)h(missing)g(v)-5 b(alue)42 b(of)f(a)h(v)-5 b(ariable.)73
-b(If)41 b(the)g(v)-5 b(ariable)42 b(exists)g(in)f(Input)f(and)630
-1282 y(Output)e(then)h(the)g(missing)g(v)-5 b(alue)39
-b(of)h(the)f(v)-5 b(ariable)40 b(in)e(Output)g(is)i(returned.)65
-b(If)39 b(the)630 1392 y(v)-5 b(ariable)31 b(has)f(no)h(missing)f(v)-5
-b(alue)31 b(then)f(an)g(error)g(is)g(returned.)150 1555
-y Fy(delete_miss\(\))630 1664 y FD(Deletes)i(the)f(missing)f(v)-5
-b(alue)31 b(asso)s(ciated)h(with)e(a)h(v)-5 b(ariable.)390
-1825 y Fy(th=three_dmn_var_dbl;)390 1935 y(th.change_miss\(-1e10d\);)
-390 2044 y(/*)47 b(Set)g(values)f(less)h(than)f(0)i(or)f(greater)f
-(than)h(50)g(to)g(missing)f(value)g(*/)390 2154 y(where\(th)g(<)h(0.0)g
-(||)g(th)g(>)h(50.0\))e(th=th.get_miss\(\);)390 2373
-y(#)h(Another)f(example:)390 2483 y(new[$time,$lat,$lon]=1.0)o(;)390
-2592 y(new.set_miss\(-997.0\);)390 2812 y(//)h(Extract)f(only)h
-(elements)e(divisible)g(by)j(3)390 2921 y(where)e
-(\(three_dmn_var_dbl\0453)d(==)k(0\))629 3031 y(new=three_dmn_var_dbl;)
-390 3140 y(elsewhere)629 3250 y(new=new.get_miss\(\);)150
-3453 y Fv(4.1.11)63 b(Metho)s(ds)43 b(and)e(functions)150
-3600 y FD(The)32 b(con)m(v)m(en)m(tion)i(within)d(this)h(do)s(cumen)m
-(t)g(is)h(that)f(metho)s(ds)g(can)g(b)s(e)g(used)f(as)h(functions.)46
-b(Ho)m(w)m(ev)m(er,)150 3709 y(functions)30 b(are)g(not)g(and)g(cannot)
-g(b)s(e)g(used)f(as)h(metho)s(ds.)40 b(Metho)s(ds)30
-b(can)g(b)s(e)g(daisy)g(c)m(hanged)g(together)150 3819
-y(and)22 b(their)h(syn)m(tax)h(is)f(cleaner)h(than)e(functions.)38
-b(Metho)s(d)23 b(names)g(are)g(reserv)m(ed)h(w)m(ords)e(and)g(CANNOT)
-150 3928 y(b)s(e)37 b(used)g(as)i(v)-5 b(ariable)38 b(names.)64
-b(The)37 b(command)h Fy(ncap2)29 b(-f)37 b FD(sho)m(ws)h(the)g
-(complete)h(list)g(of)f(metho)s(ds)150 4038 y(a)m(v)-5
-b(ailable)33 b(on)d(y)m(our)g(build.)390 4199 y Fy(n2=sin\(theta\))390
-4309 y(n2=theta.sin\(\))390 4418 y(n2=sin\(theta\)^2)44
-b(+)j(cos\(theta\)^2)390 4528 y(n2=theta.sin\(\).pow\(2\))42
-b(+)47 b(theta.cos\(\)^2)275 4689 y FD(This)33 b(statemen)m(t)j(c)m
-(hains)e(metho)s(ds)f(together)j(to)e(con)m(v)m(ert)i(three)p
-2571 4689 28 4 v 40 w(dmn)p 2789 4689 V 39 w(v)-5 b(ar)p
-2952 4689 V 40 w(sh)m(t)34 b(to)h(t)m(yp)s(e)f(double,)150
-4799 y(a)m(v)m(erage)f(it,)e(then)f(con)m(v)m(ert)i(this)e(bac)m(k)i
-(to)f(t)m(yp)s(e)f(short:)390 4960 y Fy(three_avg=three_dmn_var_)o
-(sht.)o(doub)o(le\()o(\).av)o(g\(\).)o(sho)o(rt\(\))o(;)150
-5230 y Fk(Aggregate)j(Metho)s(ds)171 5340 y FD(These)22
-b(metho)s(ds)f(mirror)f(the)i(a)m(v)m(eraging)i(t)m(yp)s(es)e(a)m(v)-5
-b(ailable)24 b(in)d Fy(ncwa)p FD(.)37 b(The)21 b(argumen)m(ts)h(to)g
-(the)g(metho)s(ds)p eop end
-%%Page: 83 85
-TeXDict begin 83 84 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(83)150
-299 y(are)29 b(the)g(dimensions)f(to)h(a)m(v)m(erage)i(o)m(v)m(er.)41
-b(Sp)s(ecifying)28 b(no)h(dimensions)f(is)g(equiv)-5
-b(alen)m(t)30 b(to)g(sp)s(ecifying)e(all)150 408 y(dimensions)f(i.e.,)i
-(a)m(v)m(eraging)g(o)m(v)m(er)g(all)f(dimensions.)39
-b(A)27 b(masking)h(v)-5 b(ariable)28 b(and)f(a)g(w)m(eigh)m(ting)i(v)-5
-b(ariable)150 518 y(can)31 b(b)s(e)e(man)m(ually)i(created)h(and)e
-(applied)g(as)g(needed.)150 702 y Fy(avg\(\))240 b FD(Mean)31
-b(v)-5 b(alue)150 859 y Fy(sqravg\(\))96 b FD(Square)30
-b(of)g(the)h(mean)150 1017 y Fy(avgsqr\(\))96 b FD(Mean)31
-b(of)g(sum)e(of)h(squares)150 1175 y Fy(max\(\))240 b
-FD(Maxim)m(um)31 b(v)-5 b(alue)150 1333 y Fy(min\(\))240
-b FD(Minim)m(um)30 b(v)-5 b(alue)150 1491 y Fy(rms\(\))240
-b FD(Ro)s(ot-mean-square)32 b(\(normalize)f(b)m(y)g Fz(N)10
-b FD(\))150 1648 y Fy(rmssdn\(\))96 b FD(Ro)s(ot-mean)31
-b(square)g(\(normalize)g(b)m(y)g Fz(N-1)7 b FD(\))150
-1806 y Fy(ttl\(\))29 b(or)h(total\(\))630 1916 y FD(Sum)f(of)i(v)-5
-b(alues)390 2075 y Fy(//)47 b(Average)f(a)h(variable)f(over)h(time)390
-2185 y(four_time_avg=four_dmn_r)o(ec_v)o(ar\($)o(tim)o(e\);)180
-2454 y Fk(P)m(ac)m(king)32 b(Metho)s(ds)174 2563 y FD(F)-8
-b(or)25 b(more)f(information)h(see)f(see)h(Section)g(3.24)g([P)m(ac)m
-(k)m(ed)i(data],)f(page)f(54)g(and)f(see)g(Section)h(4.8)g([ncp)s(dq)
-150 2673 y(netCDF)31 b(P)m(erm)m(ute)g(Dimensions)g(Quic)m(kly],)g
-(page)g(142)150 2966 y Fy(pack\(\))e(&)h(pack_short\(\))630
-3076 y FD(The)g(default)g(pac)m(king)i(algorithm)f(is)g(applied)f(and)g
-(v)-5 b(ariable)31 b(is)f(pac)m(k)m(ed)i(to)f Fy(NC_SHORT)150
-3233 y(pack_byte\(\))630 3343 y FD(V)-8 b(ariable)32
-b(is)e(pac)m(k)m(ed)i(to)f Fy(NC_BYTE)150 3501 y(pack_short\(\))630
-3610 y FD(V)-8 b(ariable)32 b(is)e(pac)m(k)m(ed)i(to)f
-Fy(NC_SHORT)150 3768 y(pack_int\(\))630 3878 y FD(V)-8
-b(ariable)32 b(is)e(pac)m(k)m(ed)i(to)f Fy(NC_INT)150
-4036 y(unpack\(\))96 b FD(The)30 b(standard)f(unpac)m(king)i(algorithm)
-g(is)g(applied.)150 4219 y Fk(Basic)g(Metho)s(ds)180
-4329 y FD(These)f(metho)s(ds)g(w)m(ork)h(with)f(v)-5
-b(ariables)31 b(and)e(attributes.)42 b(They)30 b(ha)m(v)m(e)h(no)f
-(argumen)m(ts)150 4512 y Fy(size\(\))192 b FD(T)-8 b(otal)32
-b(n)m(um)m(b)s(er)d(of)h(elemen)m(ts)150 4670 y Fy(ndims\(\))144
-b FD(Num)m(b)s(er)29 b(of)i(dimensions)e(in)i(v)-5 b(ariable)150
-4828 y Fy(type\(\))192 b FD(Returns)29 b(the)i(netcdf)f(t)m(yp)s(e)h
-(\(see)g(previous)f(section\))150 5121 y Fk(Utilit)m(y)i(Metho)s(ds)196
-5230 y FD(These)45 b(functions)g(are)h(used)f(to)h(manipulate)g
-(missing)f(v)-5 b(alues)46 b(and)f(RAM)h(v)-5 b(ariables.)87
-b(see)46 b(Sec-)150 5340 y(tion)31 b(4.1.10)h([Missing)g(v)-5
-b(alues)30 b(ncap2],)h(page)h(81)p eop end
-%%Page: 84 86
-TeXDict begin 84 85 bop 150 -116 a FD(84)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fy(set_miss\(expr\))630
-408 y FD(T)-8 b(ak)m(es)33 b(one)f(argumen)m(t)g(the)g(missing)f(v)-5
-b(alue.)45 b(Sets)32 b(or)g(o)m(v)m(erwrites)h(the)e(existing)i
-(missing)630 518 y(v)-5 b(alue.)41 b(The)30 b(argumen)m(t)h(giv)m(en)g
-(is)g(con)m(v)m(erted)h(if)e(necessary)h(to)g(the)f(v)-5
-b(ariable)31 b(t)m(yp)s(e)150 680 y Fy(change_miss\(expr\))630
-790 y FD(Changes)37 b(the)h(missing)f(v)-5 b(alue)38
-b(elemen)m(ts)g(of)g(the)g(v)-5 b(ariable)38 b(to)g(the)f(new)g
-(missing)g(v)-5 b(alue)630 899 y(\(n.b.)40 b(an)31 b(exp)s(ensiv)m(e)f
-(function\).)150 1061 y Fy(get_miss\(\))630 1171 y FD(Returns)f(the)i
-(missing)f(v)-5 b(alue)31 b(of)g(a)f(v)-5 b(ariable)32
-b(in)e(Input)f(or)h(Output)150 1333 y Fy(delete_miss\(\))630
-1442 y FD(Deletes)i(the)f(missing)f(v)-5 b(alue)31 b(asso)s(ciated)h
-(with)e(a)h(v)-5 b(ariable.)150 1604 y Fy(ram_write\(\))630
-1714 y FD(W)d(rites)32 b(a)e(RAM)h(v)-5 b(ariable)31
-b(to)g(disk)f(i.e.,)i(con)m(v)m(erts)g(it)f(to)g(a)g(regular)f(disk)g
-(t)m(yp)s(e)h(v)-5 b(ariable)150 1875 y Fy(ram_delete\(\))630
-1985 y FD(Deletes)32 b(a)f(RAM)g(v)-5 b(ariable)31 b(or)f(an)h
-(attribute)150 2281 y Fk(PDQ)f(Metho)s(ds)180 2391 y
-FD(See)h(see)g(Section)g(4.8)h([ncp)s(dq)d(netCDF)i(P)m(erm)m(ute)g
-(Dimensions)f(Quic)m(kly],)i(page)f(142)150 2578 y Fy(reverse\(dim)c
-(args\))630 2687 y FD(Rev)m(erses)k(the)g(dimension)f(ordering)g(of)g
-(elemen)m(ts)i(in)e(a)h(v)-5 b(ariable.)150 2849 y Fy(permute\(dim)27
-b(args\))630 2959 y FD(Re-shap)s(es)g(v)-5 b(ariables)28
-b(b)m(y)g(re-ordering)f(the)h(dimensions.)39 b(All)28
-b(the)g(dims)f(of)g(the)h(v)-5 b(ariable)630 3068 y(m)m(ust)24
-b(b)s(e)f(sp)s(eci\014ed)g(in)g(the)h(argumen)m(ts.)39
-b(A)24 b(limitation)i(of)e(this)f(p)s(erm)m(ute)h(\(unlik)m(e)g(ncp)s
-(dq\))630 3178 y(is)30 b(that)h(the)g(record)f(dimension)g(cannot)h(b)s
-(e)f(re-assigned.)275 3365 y(//)h(Sw)m(ap)f(dimensions)f(ab)s(out)h
-(and)g(reorder)g(along)h(lon)390 3526 y Fy(lat_2D_rrg_new=lat_2D_rr)o
-(g.pe)o(rmut)o(e\($)o(lon,)o($lat)o(\).r)o(ever)o(se\($)o(lon)o(\);)390
-3635 y(lat_2D_rrg_new=0,90,-30,)o(30,-)o(30,3)o(0,-)o(90,0)150
-3905 y Fk(T)m(yp)s(e)f(Con)m(v)m(ersion)i(Metho)s(ds)173
-4015 y FD(These)22 b(metho)s(ds)g(allo)m(w)i Fy(ncap2)e
-FD(to)h(con)m(v)m(ert)i(v)-5 b(ariables)23 b(and)f(attributes)h(to)h
-(the)f(di\013eren)m(t)g(netcdf)g(t)m(yp)s(es.)150 4125
-y(F)-8 b(or)43 b(more)f(details)h(on)f(automatic)i(and)d(man)m(ual)i(t)
-m(yp)s(e)f(con)m(v)m(ersion)h(see)g(\(see)g(Section)g(3.26)g([T)m(yp)s
-(e)150 4234 y(Con)m(v)m(ersion],)28 b(page)e(61\).)41
-b(Y)-8 b(ou)26 b(can)g(only)g(use)f(the)h(new)f(netCDF4)i(t)m(yp)s(es)f
-(if)f(y)m(ou)h(ha)m(v)m(e)h(compiled/links)150 4344 y
-FC(NCO)j FD(with)g(the)h(netCDF4)g(library)f(and)g(the)g(Output)g
-(\014le)g(is)h(HDF5.)630 4531 y Fk(netCDF3/4)h(T)m(yp)s(es)150
-4692 y Fy(byte\(\))192 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_BYTE)p
-FD(,)e(a)h(signed)h(1-b)m(yte)h(in)m(teger)150 4854 y
-Fy(char\(\))192 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_CHAR)p
-FD(,)e(an)h(ISO/ASCI)s(I)e(c)m(haracter)150 5016 y Fy(short\(\))144
-b FD(con)m(v)m(ert)32 b(to)f Fy(NC_SHORT)p FD(,)d(a)j(signed)f(2-b)m
-(yte)i(in)m(teger)150 5178 y Fy(int\(\))240 b FD(con)m(v)m(ert)32
-b(to)f Fy(NC_INT)p FD(,)e(a)i(signed)f(4-b)m(yte)i(in)m(teger)150
-5340 y Fy(float\(\))144 b FD(con)m(v)m(ert)32 b(to)f
-Fy(NC_FLOAT)p FD(,)d(a)j(single-precision)h(\(4-b)m(yte\))g(\015oating)
-g(p)s(oin)m(t)e(n)m(um)m(b)s(er)p eop end
-%%Page: 85 87
-TeXDict begin 85 86 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(85)150
-299 y Fy(double\(\))96 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_DOUBLE)p
-FD(,)d(a)j(double-precision)f(\(8-b)m(yte\))j(\015oating)e(p)s(oin)m(t)
-g(n)m(um)m(b)s(er)630 626 y Fk(netCDF4)g(T)m(yp)s(es)150
-790 y Fy(ubyte\(\))144 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_UBYTE)p
-FD(,)d(an)j(unsigned)e(1-b)m(yte)j(in)m(teger)150 954
-y Fy(ushort\(\))96 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_USHORT)p
-FD(,)d(an)i(unsigned)g(2-b)m(yte)i(in)m(teger)150 1118
-y Fy(uint\(\))192 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_UINT)p
-FD(,)e(an)h(unsigned)f(4-b)m(yte)j(in)m(teger)150 1281
-y Fy(int64\(\))144 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_INT64)p
-FD(,)d(a)j(signed)f(8-b)m(yte)i(in)m(teger)150 1445 y
-Fy(uint64\(\))96 b FD(con)m(v)m(ert)32 b(to)f Fy(NC_UINT64)p
-FD(,)d(an)i(unsigned)g(8-b)m(yte)i(in)m(teger)150 1634
-y Fk(In)m(trinsic)f(Mathematical)i(Metho)s(ds)180 1743
-y FD(The)c(list)h(of)g(mathematical)i(metho)s(ds)c(is)i(system)g(dep)s
-(endan)m(t.)39 b(F)-8 b(or)31 b(the)f(full)f(list)h(see)g(Section)h
-(4.1.25)150 1853 y([In)m(trinsic)g(mathematical)h(metho)s(ds],)e(page)i
-(113)275 2014 y(All)i(the)f(mathematical)j(metho)s(ds)d(tak)m(e)i(a)f
-(single)g(op)s(erand)f(,with)g(the)h(exception)h(of)e
-Fy(atan2)g FD(and)150 2124 y Fy(pow)h FD(whic)m(h)g(tak)m(e)j(t)m(w)m
-(o.)55 b(If)34 b(the)h(op)s(erand)e(t)m(yp)s(e)i(is)g(less)g(than)g
-Fr(\015o)-5 b(at)45 b FD(then)34 b(the)h(result)g(will)g(b)s(e)f(of)h
-(t)m(yp)s(e)150 2234 y Fr(\015o)-5 b(at)p FD(.)71 b(If)39
-b(the)h(op)s(erand)f(is)h(t)m(yp)s(e)g Fr(double)47 b
-FD(then)39 b(the)h(result)g(will)g(b)s(e)f(t)m(yp)s(e)h
-Fr(double)p FD(.)70 b(Lik)m(e)41 b(the)f(other)150 2343
-y(metho)s(ds,)30 b(y)m(ou)h(are)f(free)h(to)g(use)f(the)h(mathematical)
-h(metho)s(ds)e(as)h(functions.)390 2505 y Fy(n1=pow\(2,3.0f\))187
-b(//)47 b(n1)g(type)g(float)390 2614 y(n2=atan2\(2,3.0\))139
-b(//)47 b(n2)g(type)g(double)390 2724 y(n3=1/\(three_dmn_var_dbl.)o
-(cos\()o(\).po)o(w\(2)o(\)\)-t)o(an\(t)o(hre)o(e_dm)o(n_va)o(r_d)o
-(bl\)^)o(2;)42 b(//)47 b(n3)g(type)g(double)150 2928
-y Fv(4.1.12)63 b(RAM)41 b(v)-7 b(ariables)150 3074 y
-FD(Unlik)m(e)31 b(regular)f(v)-5 b(ariables,)30 b(RAM)h(v)-5
-b(ariables)30 b(are)g(nev)m(er)g(written)g(to)g(disk.)41
-b(Hence)30 b(using)f(RAM)h(v)-5 b(ari-)150 3184 y(ables)29
-b(in)g(place)h(of)f(regular)g(v)-5 b(ariables)30 b(\(esp)s(ecially)g
-(within)f(lo)s(ops\))g(signi\014can)m(tly)h(increases)g(execution)150
-3294 y(sp)s(eed.)38 b(V)-8 b(ariables)26 b(that)f(are)g(frequen)m(tly)g
-(accessed)g(within)f Fy(for)g FD(or)h Fy(where)e FD(clauses)i(pro)m
-(vide)g(the)f(great-)150 3403 y(est)29 b(opp)s(ortunities)f(for)g
-(optimization.)42 b(T)-8 b(o)29 b(declare)g(and)f(de\014ne)f(a)i(RAM)g
-(v)-5 b(ariable)29 b(simply)e(pre\014x)h(the)150 3513
-y(v)-5 b(ariable)38 b(name)g(with)f(an)g(asterisk)h(\()p
-Fy(*)p FD(\))g(when)e(the)i(v)-5 b(ariable)38 b(is)f
-(declared/initialized.)65 b(T)-8 b(o)38 b(delete)h(a)150
-3622 y(RAM)j(v)-5 b(ariables)42 b(\(and)f(reco)m(v)m(er)h(their)g
-(memory\))f(use)g(the)h Fy(ram_delete\(\))c FD(metho)s(d.)72
-b(T)-8 b(o)42 b(write)g(a)150 3732 y(RAM)31 b(v)-5 b(ariable)31
-b(to)g(disk)f(\(lik)m(e)i(a)f(regular)f(v)-5 b(ariable\))32
-b(use)e Fy(ram_write\(\))p FD(.)390 3894 y Fy(*temp[$time,$lat,lon]=10)
-o(.0;)232 b(//)47 b(Cast)390 4003 y(*temp_avg=temp.avg\($time)o(\);)280
-b(//)47 b(Regular)f(assign)390 4113 y(temp.ram_delete\(\);)663
-b(//)47 b(Delete)g(RAM)f(variable)390 4222 y(temp_avg.ram_write\(\);)
-519 b(//)47 b(Write)g(Variable)e(to)j(output)390 4441
-y(//)f(Create)f(and)h(increment)e(a)j(RAM)f(variable)e(from)i("one")f
-(in)i(Input)390 4551 y(*one++;)390 4661 y(//)f(Create)f(RAM)h
-(variables)e(from)i(the)g(variables)e(three)i(and)g(four)f(in)h(Input.)
-390 4770 y(//)g(Multiply)f(three)g(by)h(10)g(and)g(add)g(it)g(to)h
-(four.)390 4880 y(*four+=*three*=10;)43 b(//)k(three=30,)e(four=34)150
-5083 y Fv(4.1.13)63 b(Where)41 b(statemen)m(t)150 5230
-y FD(A)30 b Fy(where\(\))d FD(com)m(bines)k(the)e(de\014nition)h(and)f
-(application)i(of)e(a)h(mask)g(all)g(in)g(one)g(go)g(and)f(can)h(lead)g
-(to)150 5340 y(succinct)h(co)s(de.)41 b(The)30 b(full)g(syn)m(tax)h(of)
-f(a)h Fy(where\(\))d FD(statemen)m(t)33 b(is)d(as)h(follo)m(ws:)p
-eop end
-%%Page: 86 88
-TeXDict begin 86 87 bop 150 -116 a FD(86)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(//)47 b(Single)f(assign)g
-(\(the)h('elsewhere')e(block)h(is)h(optional\))390 408
-y(where\(mask\))533 518 y(var1=expr1;)390 628 y(elsewhere)533
-737 y(var1=expr2;)390 956 y(//)g(Multiple)f(assigns)390
-1066 y(where\(mask\){)581 1176 y(var1=expr1;)581 1285
-y(var2=expr2;)581 1395 y(...)390 1504 y(}elsewhere{)581
-1614 y(var1=expr3)581 1724 y(var2=expr4)581 1833 y(var3=expr5;)581
-1943 y(...)390 2052 y(})225 2216 y FA(\017)60 b FD(The)26
-b(only)h(expression)g(allo)m(w)m(ed)h(in)f(the)g(predicate)g(of)g(a)h
-(where)e(is)h(assign,)h(i.e.,)h('v)-5 b(ar=expr'.)39
-b(This)330 2325 y(assign)28 b(di\013ers)f(from)h(a)g(regular)g
-Fy(ncap2)e FD(assign.)40 b(The)28 b(LHS)f(v)-5 b(ar)28
-b(m)m(ust)f(already)i(exist)f(in)g(Input)e(or)330 2435
-y(Output.)47 b(The)32 b(RHS)h(expression)f(m)m(ust)h(ev)-5
-b(aluate)34 b(to)g(a)f(scalar)h(or)f(a)g(v)-5 b(ariable/attribute)35
-b(of)e(the)330 2544 y(same)e(size)g(as)g(the)f(LHS)g(v)-5
-b(ariable.)225 2683 y FA(\017)60 b FD(Consider)34 b(when)g(b)s(oth)g
-(the)h(LHS)f(and)g(RHS)h(are)g(v)-5 b(ariables:)50 b(F)-8
-b(or)36 b(ev)m(ery)f(elemen)m(t)i(where)d(mask)330 2793
-y(condition)29 b(is)g(T)-8 b(rue,)28 b(the)h(corresp)s(onding)e(LHS)h
-(v)-5 b(ariable)29 b(elemen)m(t)h(is)f(re-assigned)g(to)g(its)g
-(partner)330 2902 y(elemen)m(t)e(on)e(the)h(RHS.)f(In)g(the)g
-(elsewhere)h(part)f(the)h(mask)f(is)h(logically)i(in)m(v)m(erted)e(and)
-f(the)h(assign)330 3012 y(pro)s(cess)k(pro)s(ceeds)g(as)h(b)s(efore.)
-225 3150 y FA(\017)60 b FD(If)30 b(the)h(mask)g(dimensions)f(are)h(a)g
-(subset)f(of)h(the)g(LHS)f(v)-5 b(ariable's)31 b(dimensions,)g(then)f
-(it)h(is)g(made)330 3260 y(to)g(conform;)g(if)f(it)h(cannot)g(b)s(e)f
-(made)g(to)h(conform)f(then)g(script)h(execution)g(halts.)225
-3398 y FA(\017)60 b FD(Missing)36 b(v)-5 b(alues)35 b(in)g(the)h(mask)f
-(ev)-5 b(aluate)37 b(to)f(F)-8 b(alse)37 b(in)e(the)h(where)f(co)s
-(de/blo)s(c)m(k)h(statemen)m(t)i(and)330 3508 y(to)32
-b(T)-8 b(rue)31 b(in)g(the)g(elsewhere)h(blo)s(c)m(k/statemen)m(t.)47
-b(LHS)31 b(v)-5 b(ariable)32 b(elemen)m(ts)g(set)g(to)g(missing)f(v)-5
-b(alue)330 3617 y(are)40 b(not)g(re-assigned.)68 b(F)-8
-b(or)41 b(these)f(reasons,)i(do)d(not)h(explicitly)h(reference)f
-(missing)f(v)-5 b(alues)40 b(in)330 3727 y(the)27 b(masking)f
-(condition,)i(e.g.,)h Fy(where\(foo=foo.get_missing)o(\(\)\))24
-b(foo=1;)h FD(will)h(not)h(w)m(ork)g(as)330 3837 y(exp)s(ected.)275
-4029 y(Example:)114 b(Consider)67 b(the)h(v)-5 b(ariables)68
-b Fy(float)29 b(lon_2D_rct\(lat,lon\);)61 b FD(and)67
-b Fy(float)29 b(var_)150 4138 y(msk\(lat,lon\);)p FD(.)76
-b(Supp)s(ose)42 b(w)m(e)h(wish)g(to)h(m)m(ultiply)g(b)m(y)f(t)m(w)m(o)i
-(the)e(elemen)m(ts)i(for)e(whic)m(h)g Fy(var_msk)150
-4248 y FD(equals)31 b(1:)390 4411 y Fy(where\(var_msk==1\))43
-b(lon_2D_rct=2*lon_2D_rct;)275 4575 y FD(Supp)s(ose)23
-b(that)k(w)m(e)f(ha)m(v)m(e)h(the)f(v)-5 b(ariable)26
-b Fy(int)k(RDM\(time\))23 b FD(and)i(that)h(w)m(e)g(w)m(an)m(t)h(to)f
-(set)h(its)f(v)-5 b(alues)26 b(less)150 4684 y(than)k(8)h(or)f(greater)
-i(than)e(80)h(to)g(0)q(:)390 4848 y Fy(where\(RDM)45
-b(<)j(8)f(||)g(RDM)g(>)h(80\))f(RDM=0;)275 5011 y FD(Consider)1207
-b(irregularly)h(gridded)150 5121 y(data,)35 b(describ)s(ed)e(using)g
-(rank)d(2)k(co)s(ordinates:)48 b Fy(double)28 b
-(lat\(south_north,east_west)o(\))p FD(,)h Fy(double)150
-5230 y(lon\(south_north,east_wes)o(t\))p FD(,)f Fy(double)g
-(temperature\(south_north,e)o(ast_)o(west)o(\))p FD(.)42
-b(T)-8 b(o)33 b(\014nd)150 5340 y(the)d(a)m(v)m(erage)i(temp)s(erature)
-e(in)g(a)g(region)g(b)s(ounded)e(b)m(y)i([)p Fz(lat)p
-2235 5340 28 4 v 41 w(min)p FD(,)p Fz(lat)p 2558 5340
-V 41 w(max)6 b FD(])30 b(and)g([)p Fz(lon)p 3152 5340
-V 40 w(min)p FD(,)p Fz(lon)p 3490 5340 V 40 w(max)6 b
-FD(]:)p eop end
-%%Page: 87 89
-TeXDict begin 87 88 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(87)390
-299 y Fy(temperature_msk[$south_n)o(orth)o(,$ea)o(st_)o(west)o(]=0.)o
-(0;)390 408 y(where\(lat)45 b(>=)i(lat_min)f(&&)h(lat)g(<=)h(lat_max\))
-d(&&)i(\(lon)g(>=)g(lon_min)f(&&)h(lon)g(<=)g(lon_max\))485
-518 y(temperature_msk=temperatur)o(e;)390 628 y(elsewhere)485
-737 y(temperature_msk=temperatur)o(e at _F)o(ill)o(Valu)o(e;)390
-956 y(temp_avg=temperature_msk)o(.avg)o(\(\);)390 1066
-y(temp_max=temperature.max)o(\(\);)150 1293 y Fv(4.1.14)63
-b(Lo)s(ops)150 1440 y Fy(ncap)37 b FD(supplies)h Fy(for\(\))f
-FD(lo)s(ops)i(and)f Fy(while\(\))f FD(lo)s(ops.)65 b(They)38
-b(are)i(completely)g(unoptimized)e(so)h(use)150 1550
-y(them)29 b(only)f(with)h(RAM)g(v)-5 b(ariables)29 b(unless)f(y)m(ou)h
-(w)m(an)m(t)h(thrash)e(y)m(our)g(disk)g(to)i(death.)40
-b(T)-8 b(o)29 b(break)g(out)g(of)150 1660 y(a)i(lo)s(op)f(use)g(the)h
-Fy(break)e FD(command.)40 b(T)-8 b(o)31 b(iterate)h(to)f(the)g(next)g
-(cycle)g(use)f(the)h Fy(continue)d FD(command.)390 1833
-y Fy(//)47 b(Follwing)f(sets)g(elements)g(in)h(variable)f(double)g
-(temp\(time,lat\))390 1943 y(//)h(If)g(element)f(<)i(0)f(set)g(to)g(0,)
-g(if)h(element)d(>)j(100)f(set)g(to)g(100)390 2052 y
-(*sz_idx=$time.size;)390 2162 y(*sz_jdx=$lat.size;)390
-2381 y(for\(*idx=0;idx<sz_idx;id)o(x++\))485 2491 y
-(for\(*jdx=0;jdx<sz_jdx;jdx+)o(+\))581 2600 y(if\(temp\(idx,jdx\))c(>)
-48 b(100\))e(temp\(idx,jdx\)=100.0;)581 2710 y(else)h
-(if\(temp\(idx,jdx\))c(<)k(0\))h(temp\(idx,jdx\)=0.0;)390
-2929 y(//)f(Are)g(values)f(of)h(co-ordinate)e(variable)h(double)g
-(lat\(lat\))f(monotonic?)533 3039 y(*sz=$lat.size;)533
-3258 y(for\(*idx=1;idx<sz;idx++\))629 3367 y
-(if\(lat\(idx\)-lat\(idx-1\))c(<)48 b(0.0\))724 3477
-y(break;)533 3696 y(if\(idx)e(==)h(sz\))629 3806 y(print\("lat)e
-(co-ordinate)f(is)k(monotonic\\n"\);)533 3915 y(else)629
-4025 y(print\("lat)d(co-ordinate)f(is)k(NOT)e(monotonic\\n"\);)390
-4244 y(//)h(Sum)g(odd)g(elements)390 4354 y(*idx=0;)390
-4463 y(*sz=$lat_nw.size;)390 4573 y(*sum=0.0;)485 4682
-y(while\(idx<sz\){)533 4792 y(if\(lat\(idx\)\0452\))d(sum+=lat\(idx\);)
-533 4902 y(idx++;)485 5011 y(})390 5230 y(ram_write\(sum\);)390
-5340 y(print\("Total)g(of)k(odd)f(elements)e
-("\);print\(sum\);print\("\\n"\))o(;)p eop end
-%%Page: 88 90
-TeXDict begin 88 89 bop 150 -116 a FD(88)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fv(4.1.15)63 b(Include)41
-b(\014les)150 446 y FD(The)30 b(syn)m(tax)h(of)f(an)h
-Fz(include-\014le)k FD(is:)390 616 y Fy(#include)46 b("script.nco")275
-786 y FD(The)24 b(script)i(\014lename)f(is)g(searc)m(hed)h(relativ)m(e)
-i(to)e(the)f(run)f(directory)-8 b(.)40 b(It)26 b(is)f(p)s(ossible)g(to)
-h(nest)f(include)150 895 y(\014les)36 b(to)i(an)e(arbitrary)g(depth.)59
-b(A)36 b(handy)g(use)g(of)g(inlcude)h(\014les)f(is)h(to)g(store)g
-(often)g(used)f(constan)m(ts.)150 1005 y(Use)31 b(RAM)f(v)-5
-b(ariables)32 b(if)e(y)m(ou)h(do)f(not)g(w)m(an)m(t)i(these)e(constan)m
-(ts)i(written)e(to)i Fz(output-\014le)p FD(.)390 1175
-y Fy(//)47 b(script.nco)390 1285 y(//)g(Sample)f(file)h(to)g(#include)f
-(in)h(ncap2)f(script)390 1394 y(*pi=3.1415926535;)d(//)k(RAM)g
-(variable,)e(not)i(written)f(to)h(output)390 1504 y(*h=6.62607095e-34;)
-c(//)k(RAM)g(variable,)e(not)i(written)f(to)h(output)390
-1613 y(e=2.71828;)e(//)i(Regular)f(\(disk\))g(variable,)f(written)h(to)
-h(output)150 1834 y Fv(4.1.16)63 b Fo(sort)41 b Fv(metho)s(ds)150
-1981 y FD(In)34 b FC(ncap)h FD(there)g(are)g(t)m(w)m(o)i(w)m(a)m(ys)f
-(to)f(sort)h(data.)55 b(The)34 b(\014rst)h(is)g(a)g(regular)g
-Fy(sort)p FD(.)54 b(This)34 b(sorts)h(ALL)g(the)150 2090
-y(elemen)m(ts)e(of)g(a)f(v)-5 b(ariable)33 b(or)f(attribute)h(without)f
-(regard)g(to)h(an)m(y)g(dimensions.)45 b(The)31 b(second)h(metho)s(d)
-150 2200 y(applies)41 b(a)h(sort)f(map)f(to)i(a)g(v)-5
-b(ariable.)73 b(T)-8 b(o)41 b(apply)g(this)g(sort)g(map)g(the)g(size)h
-(of)f(the)g(v)-5 b(ariable)42 b(m)m(ust)150 2309 y(b)s(e)34
-b(exactly)i(divisible)e(b)m(y)h(the)f(size)i(of)e(the)h(sort)f(map.)53
-b(The)34 b(metho)s(d)f Fy(sort\(var_in,&var_map\))c FD(is)150
-2419 y(o)m(v)m(erloaded.)43 b(The)31 b(second)f(optional)i(argumen)m(t)
-f(is)g(to)g(supply)e(a)i(call-b)m(y-reference)i(v)-5
-b(ariable)32 b(to)f(hold)150 2529 y(the)g(returned)e(sort)h(map.)390
-2699 y Fy(a1[$time]={10,2,3,4,6,5,)o(7,3,)o(4,1})o(;)390
-2808 y(a1_sort=sort\(a1\);)390 2918 y(print\(a1_sort\);)390
-3027 y(//)47 b(1,)g(2,)h(3,)f(3,)g(4,)g(4,)g(5,)g(6,)h(7,)f(10;)390
-3247 y(a2[$lon]={2,1,4,3};)390 3356 y(a2_sort=sort\(a2,&a2_map\))o(;)
-390 3466 y(print\(a2\);)390 3575 y(//)g(1,)g(2,)h(3,)f(4)390
-3685 y(print\(a2_map\);)390 3795 y(//)g(1,)g(0,)h(3,)f(2;)275
-3965 y FD(If)30 b(the)i(map)f(v)-5 b(ariable)32 b(do)s(es)f(not)g
-(exist)h(prior)f(to)h(the)f Fy(sort\(\))f FD(call,)j(then)e(it)h(will)f
-(b)s(e)g(created)h(with)150 4074 y(the)i(same)h(shap)s(e)e(as)h(the)h
-(input)e(v)-5 b(ariable)34 b(and)g(b)s(e)f(of)i(t)m(yp)s(e)f
-Fy(NC_INT)p FD(.)50 b(If)34 b(the)g(map)f(v)-5 b(ariable)35
-b(already)150 4184 y(exists,)c(then)e(the)i(only)f(restriction)h(is)e
-(that)i(it)f(b)s(e)g(of)g(at)g(least)i(the)e(same)g(size)h(as)f(the)g
-(input)f(v)-5 b(ariable.)150 4293 y(T)d(o)31 b(apply)f(a)h(map)f(use)g
-Fy(dsort\(var_in,var_map\))p FD(.)390 4463 y Fy(defdim\("nlat",5\);)390
-4682 y(a3[$lon]={2,5,3,7};)390 4792 y(a4[$nlat,$lon]={)438
-4902 y(1,)47 b(2,)g(3,)g(4,)438 5011 y(5,)g(6,)g(7,)g(8,)438
-5121 y(9,10,11,12,)438 5230 y(13,14,15,16,)438 5340 y(17,18,19,20};)p
-eop end
-%%Page: 89 91
-TeXDict begin 89 90 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(89)390
-408 y Fy(a3_sort=sort\(a3,&a3_map\))o(;)390 518 y(print\(a3_map\);)390
-628 y(//)47 b(0,)g(2,)h(1,)f(3;)390 847 y(a4_sort=dsort\(a4,a3_map\))o
-(;)390 956 y(print\(a4_sort\);)390 1066 y(//)g(1,)g(3,)h(2,)f(4,)390
-1176 y(//)g(5,)g(7,)h(6,)f(8,)390 1285 y(//)g(9,11,10,12,)390
-1395 y(//)g(13,15,14,16,)390 1504 y(//)g(17,19,18,20;)390
-1724 y(a3_map2[$nlat]={4,3,0,2,)o(1};)390 1943 y
-(a4_sort2=dsort\(a4,a3_map)o(2\);)390 2052 y(print\(a4_sort2\);)390
-2162 y(//)g(3,)g(5,)h(4,)f(2,)g(1)390 2271 y(//)g(8,)g(10,)g(9,7,)g(6,)
-390 2381 y(//)g(13,15,14,12,11,)390 2491 y(//)g(18,20,19,17,16)275
-2673 y FD(As)39 b(in)h(the)g(ab)s(o)m(v)m(e)h(example)f(y)m(ou)g(ma)m
-(y)g(create)i(y)m(our)d(o)m(wn)h(sort)g(map.)69 b(T)-8
-b(o)40 b(sort)g(in)f(descending)150 2783 y(order,)30
-b(apply)g(the)h Fy(reverse\(\))d FD(metho)s(d)h(after)i(the)g
-Fy(sort\(\))p FD(.)275 2966 y(Here)22 b(is)f(an)g(extended)h(example)g
-(of)g(ho)m(w)f(to)i(use)e Fy(ncap2)f FD(features)i(to)g(h)m(yp)s
-(erslab)e(an)i(irregular)f(region)150 3075 y(based)26
-b(on)f(the)h(v)-5 b(alues)27 b(of)f(a)g(v)-5 b(ariable)27
-b(not)f(a)g(co)s(ordinate.)40 b(The)25 b(distinction)i(is)f(crucial:)39
-b(h)m(yp)s(erslabbing)150 3185 y(based)c(on)g(dimensional)h(indices)f
-(or)g(co)s(ordinate)i(v)-5 b(alues)35 b(is)h(straigh)m(tforw)m(ard.)56
-b(Using)36 b(the)f(v)-5 b(alues)36 b(of)150 3294 y(single)31
-b(or)f(m)m(ulti-dimensional)i(v)-5 b(ariable)31 b(to)g(de\014ne)f(a)g
-(h)m(yp)s(erslab)g(is)g(quite)h(di\013eren)m(t.)390 3477
-y Fy(cat)47 b(>)g(~/ncap2_foo.nco)d(<<)j('EOF')390 3587
-y(//)g(Purpose:)f(Save)g(irregular)g(1-D)h(regions)e(based)i(on)g
-(variable)e(values)390 3806 y(//)i(Included)f(in)h(NCO)g(User's)f
-(Guide)g(at)h(http://nco.sf.net/nco.html)o(#sor)o(t)390
-4025 y(/*)g(NB:)g(Single)f(quotes)g(around)g(EOF)h(above)g(turn)f(off)h
-(shell)g(parameter)581 4134 y(expansion)e(in)i("here)g(documents".)d
-(This)j(in)g(turn)g(prevents)e(the)581 4244 y(need)i(for)f(protecting)f
-(dollarsign)g(characters)g(in)j(NCO)f(scripts)e(with)581
-4354 y(backslashes)g(when)h(the)h(script)f(is)h(cut-and-pasted)d(\(aka)
-j("moused"\))581 4463 y(from)g(an)g(editor)f(or)h(e-mail)f(into)h(a)g
-(shell)g(console)e(window)h(*/)390 4682 y(/*)h(Copy)g(coordinates)e
-(and)h(variable\(s\))f(of)i(interest)f(into)h(RAM)f(variable\(s\))533
-4792 y(Benefits:)533 4902 y(1.)h(ncap2)g(defines)f(writes)g(all)h
-(variables)e(on)i(LHS)g(of)g(expression)e(to)i(disk)676
-5011 y(Only)g(exception)e(is)i(RAM)g(variables,)e(which)i(are)g(stored)
-f(in)h(RAM)g(only)676 5121 y(Repeated)f(operations)f(on)i(regular)f
-(variables)f(takes)i(more)f(time,)676 5230 y(because)g(changes)g(are)h
-(written)f(to)h(disk)g(copy)f(after)h(every)f(change.)676
-5340 y(RAM)h(variables)f(are)g(only)h(changed)f(in)h(RAM)g(so)g(script)
-f(works)h(faster)p eop end
-%%Page: 90 92
-TeXDict begin 90 91 bop 150 -116 a FD(90)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)676 299 y Fy(RAM)47 b(variables)f(can)g(be)
-i(written)d(to)j(disk)e(at)h(end)g(with)g(ram_write\(\))533
-408 y(2.)g(Script)f(permutes)g(variables)f(of)i(interest)f(during)g
-(processing)676 518 y(Safer)h(to)g(work)g(with)f(copies)g(that)h(have)g
-(different)e(names)676 628 y(This)i(discourages)e(accidental,)f
-(mistaken)i(use)h(of)g(permuted)f(versions)533 737 y(3.)h(Makes)g(this)
-f(script)g(a)i(more)f(generic)e(template:)676 847 y(var_in)h(instead)g
-(of)h(specific)f(variable)g(names)g(everywhere)f(*/)390
-956 y(*var_in=one_dmn_rec_var;)390 1066 y(*crd_in=time;)390
-1176 y(*dmn_in_sz=$time.size;)d(//)47 b([nbr])f(Size)h(of)g(input)f
-(arrays)390 1395 y(/*)h(Create)f(all)h(other)g("intermediate")c
-(variables)j(as)h(RAM)g(variables)533 1504 y(to)g(prevent)f(them)h
-(from)f(cluttering)f(the)i(output)f(file.)533 1614 y(Mask)h(flag)f(and)
-h(sort)g(map)g(are)g(same)f(size)h(as)g(variable)f(of)h(interest)f(*/)
-390 1724 y(*msk_flg=var_in;)390 1833 y(*srt_map=var_in;)390
-2052 y(/*)h(In)g(this)g(example)f(we)h(mask)g(for)g(all)f(values)h
-(evenly)f(divisible)f(by)i(3)533 2162 y(This)g(is)g(the)g(key,)g
-(problem-specific)c(portion)j(of)h(the)g(template)533
-2271 y(Replace)f(this)h(where\(\))e(condition)h(by)h(that)g(for)f(your)
-h(problem)533 2381 y(Mask)g(variable)e(is)j(Boolean:)d(1=Meets)h
-(condition,)f(0=Fails)h(condition)f(*/)390 2491 y(where\(var_in)f(\045)
-k(3)f(==)h(0\))f(msk_flg=1;)e(elsewhere)g(msk_flg=0;)390
-2710 y(//)i(print\("msk_flg)d(=)k("\);print\(msk_flg\);)42
-b(//)48 b(For)e(debugging...)390 2929 y(/*)h(The)g(sort\(\))f(routine)g
-(is)h(overloaded,)e(and)i(takes)f(one)h(or)g(two)g(arguments)533
-3039 y(The)g(second)f(argument)g(\(optional\))f(is)i(the)g("sort)f
-(map")h(\(srt_map)e(below\))533 3148 y(Pass)i(the)g(sort)f(map)h(by)g
-(reference,)e(i.e.,)i(prefix)f(with)h(an)g(ampersand)533
-3258 y(If)g(the)g(sort)g(map)g(does)f(not)h(yet)g(exist,)f(then)h(it)g
-(will)g(be)g(created)f(and)533 3367 y(returned)g(as)h(an)g(integer)f
-(type)h(the)f(same)h(shape)f(as)i(the)f(input)f(variable.)533
-3477 y(The)h(output)f(of)h(sort\(\),)f(on)h(the)g(LHS,)g(is)g(a)h
-(sorted)e(version)f(of)j(the)f(input)533 3587 y(msk_flg)f(is)h(not)g
-(needed)f(in)h(its)g(original)f(order)g(after)h(sort\(\))533
-3696 y(Hence)g(we)g(use)g(msk_flg)e(as)j(both)e(input)h(to)g(and)g
-(output)f(from)g(sort\(\))533 3806 y(Doing)h(this)f(prevents)g(the)h
-(need)f(to)h(define)g(a)g(new,)g(unneeded)e(variable)h(*/)390
-3915 y(msk_flg=sort\(msk_flg,&sr)o(t_ma)o(p\);)390 4134
-y(//)h(Count)g(number)f(of)h(valid)f(points)g(in)h(mask)g(by)g(summing)
-f(the)h(one's)390 4244 y(*msk_nbr=msk_flg.total\(\))o(;)390
-4463 y(//)g(Define)f(output)g(dimension)g(equal)g(in)h(size)g(to)g
-(number)f(of)h(valid)g(points)390 4573 y(defdim\("crd_out",msk_nbr)o
-(\);)390 4792 y(/*)g(Now)g(sort)g(the)g(variable)e(of)i(interest)f
-(using)g(the)h(sort)g(map)g(and)g(dsort\(\))533 4902
-y(The)g(output,)f(on)h(the)g(LHS,)g(is)g(the)g(input)f(re-arranged)f
-(so)i(that)g(all)g(points)533 5011 y(meeting)f(the)h(mask)g(condition)e
-(are)i(contiguous)e(at)i(the)g(end)g(of)g(the)g(array)533
-5121 y(Use)g(same)g(srt_map)f(to)h(hyperslab)e(multiple)h(variables)f
-(of)i(the)g(same)g(shape)533 5230 y(Remember)f(to)h(apply)f(srt_map)g
-(to)h(the)g(coordinate)e(variables)g(*/)390 5340 y
-(crd_in=dsort\(crd_in,srt_)o(map\))o(;)p eop end
-%%Page: 91 93
-TeXDict begin 91 92 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(91)390
-299 y Fy(var_in=dsort\(var_in,srt_)o(map\))o(;)390 518
-y(/*)47 b(Hyperslab)e(last)i(msk_nbr)f(values)g(of)h(variable\(s\))e
-(of)i(interest)f(*/)390 628 y(crd_out[crd_out]=crd_in\()o(\(dmn)o(_in_)
-o(sz-)o(msk_)o(nbr\))o(:\(d)o(mn_i)o(n_sz)o(-1\))o(\);)390
-737 y(var_out[crd_out]=var_in\()o(\(dmn)o(_in_)o(sz-)o(msk_)o(nbr\))o
-(:\(d)o(mn_i)o(n_sz)o(-1\))o(\);)390 956 y(/*)h(NB:)g(Even)g(though)f
-(we)h(created)f(all)h(variables)e(possible)h(as)h(RAM)g(variables,)533
-1066 y(the)g(original)f(coordinate)f(of)i(interest,)e(time,)h(is)i
-(written)d(to)j(the)f(ouput.)533 1176 y(I'm)g(not)g(exactly)f(sure)g
-(why.)h(For)g(now,)g(delete)f(it)h(from)g(the)f(output)h(with:)533
-1285 y(ncks)g(-O)g(-x)g(-v)g(time)g(~/foo.nc)f(~/foo.nc)533
-1395 y(*/)390 1504 y(EOF)390 1614 y(ncap2)g(-O)i(-v)f(-S)g
-(~/ncap2_foo.nco)d(~/nco/data/in.nc)f(~/foo.nc)390 1724
-y(ncks)k(-O)g(-x)g(-v)g(time)g(~/foo.nc)e(~/foo.nc)390
-1833 y(ncks)i(~/foo.nc)275 1998 y FD(Here)40 b(is)g(an)g(extended)g
-(example)h(of)f(ho)m(w)g(to)g(use)g Fy(ncap2)f FD(features)h(to)h(sort)
-f(m)m(ulti-dimensional)150 2107 y(arra)m(ys)31 b(based)f(on)g(the)h(co)
-s(ordinate)g(v)-5 b(alues)31 b(along)g(a)g(single)g(dimension.)390
-2271 y Fy(cat)47 b(>)g(~/ncap2_foo.nco)d(<<)j('EOF')390
-2381 y(/*)g(Purpose:)f(Sort)g(multi-dimensional)d(array)k(based)f(on)h
-(coordinate)e(values)533 2491 y(This)i(example)f(sorts)g(the)h
-(variable)e(three_dmn_rec_var\(time,lat)o(,lon)o(\))533
-2600 y(based)i(on)g(the)g(values)f(of)h(the)g(time)f(coordinate.)f(*/)
-390 2819 y(//)i(Included)f(in)h(NCO)g(User's)f(Guide)g(at)h
-(http://nco.sf.net/nco.html)o(#sor)o(t)390 3039 y(//)g(Randomize)e(the)
-i(time)g(coordinate)390 3148 y(time=10.0*gsl_rng_unifor)o(m\(ti)o
-(me\);)390 3258 y(//print\("original)c(randomized)i(time)i
-(=\\n"\);print\(time\);)390 3477 y(/*)g(The)g(sort\(\))f(routine)g(is)h
-(overloaded,)e(and)i(takes)f(one)h(or)g(two)g(arguments)533
-3587 y(The)g(first)f(argument)g(is)h(a)h(one)f(dimensional)d(array)533
-3696 y(The)j(second)f(argument)g(\(optional\))f(is)i(the)g("sort)f
-(map")h(\(srt_map)e(below\))533 3806 y(Pass)i(the)g(sort)f(map)h(by)g
-(reference,)e(i.e.,)i(prefix)f(with)h(an)g(ampersand)533
-3915 y(If)g(the)g(sort)g(map)g(does)f(not)h(yet)g(exist,)f(then)h(it)g
-(will)g(be)g(created)f(and)533 4025 y(returned)g(as)h(an)g(integer)f
-(type)h(the)f(same)h(shape)f(as)i(the)f(input)f(variable.)533
-4134 y(The)h(output)f(of)h(sort\(\),)f(on)h(the)g(LHS,)g(is)g(a)h
-(sorted)e(version)f(of)j(the)f(input)f(*/)390 4354 y
-(time=sort\(time,&srt_map\))o(;)390 4463 y(//print\("sorted)e(time)i
-(\(ascending)f(order\))h(and)h(associated)e(sort)i(map)g
-(=\\n"\);print\(time\);print)o(\(srt)o(_map)o(\);)390
-4682 y(/*)g(sort\(\))f(always)g(sorts)h(in)g(ascending)e(order)533
-4792 y(The)i(associated)e(sort)i(map)g(therefore)e(re-arranges)g(the)i
-(original,)533 4902 y(randomized)e(time)i(array)f(into)h(ascending)e
-(order.)533 5011 y(There)i(are)f(two)h(methods)f(to)h(obtain)f(the)h
-(descending)e(order)i(the)g(user)f(wants)533 5121 y(1\))h(We)h(could)e
-(solve)g(the)h(problem)f(in)h(ascending)e(order)i(\(the)f(default\))533
-5230 y(and)h(then)g(apply)f(the)h(reverse\(\))e(method)h(to)i
-(re-arrange)d(the)h(results.)533 5340 y(2\))h(We)h(could)e(change)g
-(the)h(sort)g(map)f(to)i(return)e(things)g(in)h(descending)p
-eop end
-%%Page: 92 94
-TeXDict begin 92 93 bop 150 -116 a FD(92)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)533 299 y Fy(order)47 b(of)g(time)f(and)h
-(solve)g(the)g(problem)e(directly)h(in)h(descending)e(order.)h(*/)390
-518 y(//)h(Following)e(shows)i(how)g(to)g(do)g(method)f(one:)390
-737 y(/*)h(Expand)f(the)h(sort)g(map)g(to)g(srt_map_3d,)e(the)i(size)f
-(of)h(the)g(data)g(array)533 847 y(1.)g(Use)g(data)g(array)f(to)h
-(provide)f(right)h(shape)f(for)h(the)g(expanded)e(sort)i(map)533
-956 y(2.)g(Coerce)f(data)h(array)f(into)h(an)g(integer)f(so)h
-(srt_map_3d)e(is)i(an)h(integer)533 1066 y(3.)f(Multiply)f(data)h
-(array)f(by)h(zero)g(so)g(3-d)g(map)g(elements)e(are)i(all)g(zero)533
-1176 y(4.)g(Add)g(the)g(1-d)g(sort)g(map)g(to)g(the)g(3-d)g(sort)f(map)
-h(\(NCO)g(automatically)d(resizes\))533 1285 y(5.)j(Add)g(the)g
-(spatial)f(\(lat,lon\))f(offsets)h(to)h(each)g(time)g(index)533
-1395 y(6.)g(de-sort)f(using)h(the)f(srt_map_3d)533 1504
-y(7.)h(Use)g(reverse)f(to)h(obtain)f(descending)f(in)j(time)e(order)533
-1614 y(Loops)h(could)f(accomplish)f(the)i(same)f(thing)h(\(exercise)e
-(left)i(for)g(reader\))533 1724 y(However,)f(loops)g(are)h(slow)g(for)g
-(large)f(datasets)f(*/)390 1943 y(/*)i(Following)e(index)i
-(manipulation)d(requires)i(understanding)e(correspondence)533
-2052 y(between)i(1-d)h(\(unrolled,)e(memory)h(order)g(of)i(storage\))d
-(and)i(access)f(into)h(that)533 2162 y(memory)f(as)h(a)h
-(multidimensional)43 b(\(3-d,)k(in)g(this)f(case\))h(rectangular)e
-(array.)533 2271 y(Key)i(idea)g(to)g(understand)e(is)i(how)g
-(dimensionality)d(affects)i(offsets)g(*/)390 2381 y(//)h(Copy)g(1-d)g
-(sort)f(map)h(into)g(3-d)g(sort)f(map)390 2491 y
-(srt_map_3d=\(0*int\(three_)o(dmn_)o(rec_)o(var)o(\)\)+s)o(rt_m)o(ap;)
-390 2600 y(//)h(Multiply)f(base)g(offset)g(by)i(factorial)d(of)i
-(lesser)f(dimensions)390 2710 y(srt_map_3d*=$lat.size*$l)o(on.s)o(ize;)
-390 2819 y(lon_idx=array\(0,1,$lon\);)390 2929 y
-(lat_idx=array\(0,1,$lat\)*)o($lon)o(.siz)o(e;)390 3039
-y(lat_lon_idx[$lat,$lon]=l)o(at_i)o(dx+l)o(on_)o(idx;)390
-3148 y(srt_map_3d+=lat_lon_idx;)390 3367 y(print\("sort)f(map)i(3d)g
-(=\\n"\);print\(srt_map_3d\);)390 3587 y(//)g(Use)g(dsort\(\))f(to)h
-("de-sort")e(the)i(data)g(using)f(the)h(sort)g(map)390
-3696 y(three_dmn_rec_var=dsort\()o(thre)o(e_dm)o(n_r)o(ec_v)o(ar,s)o
-(rt_)o(map_)o(3d\);)390 3915 y(//)g(Finally,)f(reverse)g(data)g(so)h
-(time)g(coordinate)e(is)i(descending)390 4025 y
-(time=time.reverse\($time\))o(;)390 4134 y(//print\("sorted)d(time)i
-(\(descending)f(order\))h(=\\n"\);print\(time\);)390
-4244 y(three_dmn_rec_var=three_)o(dmn_)o(rec_)o(var)o(.rev)o(erse)o
-(\($t)o(ime\))o(;)390 4463 y(//)h(Method)f(two:)h(Key)g(difference)e
-(is)i(srt_map=$time.size-srt_m)o(ap-1)o(;)390 4573 y(EOF)390
-4682 y(ncap2)f(-O)i(-v)f(-S)g(~/ncap2_foo.nco)d(~/nco/data/in.nc)f
-(~/foo.nc)150 4974 y Fv(4.1.17)63 b(Irregular)41 b(Grids)150
-5121 y FC(NCO)33 b FD(is)g(capable)h(of)f(analyzing)h(datasets)g(for)f
-(man)m(y)g(di\013eren)m(t)g(underlying)f(co)s(ordinate)i(grid)f(t)m(yp)
-s(es.)150 5230 y(netCDF)26 b(w)m(as)g(dev)m(elop)s(ed)f(for)g(and)g
-(initially)i(used)d(with)h(grids)g(comprised)g(of)h(orthogonal)h
-(dimensions)150 5340 y(forming)33 b(a)g(rectangular)h(co)s(ordinate)f
-(system.)49 b(W)-8 b(e)34 b(call)g(suc)m(h)f(grids)f
-Fr(standar)-5 b(d)45 b FD(grids.)j(It)33 b(is)g(increas-)p
-eop end
-%%Page: 93 95
-TeXDict begin 93 94 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(93)150
-299 y(ingly)34 b(common)g(for)f(datasets)h(to)h(use)e(metadata)i(to)f
-(describ)s(e)f(m)m(uc)m(h)g(more)h(complex)g(grids.)50
-b(Let)34 b(us)150 408 y(\014rst)c(de\014ne)f(three)i(imp)s(ortan)m(t)f
-(co)s(ordinate)i(grid)e(prop)s(erties:)40 b(rectangularit)m(y)-8
-b(,)33 b(regularit)m(y)-8 b(,)32 b(and)e(fxm.)275 569
-y(Grids)38 b(are)h Fr(r)-5 b(e)g(gular)50 b FD(if)38
-b(the)h(spacing)g(b)s(et)m(w)m(een)g(adjacen)m(t)h(is)f(constan)m(t.)67
-b(F)-8 b(or)39 b(example,)j(a)d(4-b)m(y-5)150 679 y(degree)g
-(latitude-longitude)i(grid)d(is)h(regular)f(b)s(ecause)h(the)f
-(spacings)h(b)s(et)m(w)m(een)g(adjacen)m(t)h(latitudes)150
-788 y(\(4)31 b(degrees)q(\))c(are)h(constan)m(t)h(as)f(are)f(the)h(\(5)
-j(degrees)q(\))c(spacings)h(b)s(et)m(w)m(een)g(adjacen)m(t)h
-(longitudes.)40 b(Spac-)150 898 y(ing)27 b(in)g Fr(irr)-5
-b(e)g(gular)38 b FD(grids)27 b(dep)s(ends)e(on)i(the)h(lo)s(cation)g
-(along)g(the)g(co)s(ordinate.)40 b(Grids)27 b(suc)m(h)f(as)i(Gaussian)
-150 1008 y(grids)f(ha)m(v)m(e)i(unev)m(en)e(spacing)h(in)f(latitude)h
-(\(p)s(oin)m(ts)g(cluster)g(near)f(the)h(equator\))g(and)f(so)h(are)g
-(irregular.)275 1168 y(Grids)35 b(are)h Fr(r)-5 b(e)g(ctangular)48
-b FD(if)36 b(the)g(n)m(um)m(b)s(er)f(of)h(elemen)m(ts)h(in)f(an)m(y)g
-(dimension)g(is)g(not)g(a)g(function)g(of)150 1278 y(an)m(y)f(other)h
-(dimension.)54 b(F)-8 b(or)36 b(example,)h(a)e(T42)h(Gaussian)f
-(latitude-longitude)i(grid)e(is)g(rectangular)150 1387
-y(b)s(ecause)28 b(there)g(are)g(the)g(same)h(n)m(um)m(b)s(er)d(of)i
-(longitudes)h(\(128\))g(for)f(eac)m(h)h(of)f(the)g(\(64\))i(latitudes.)
-40 b(Grids)150 1497 y(are)33 b Fr(non-r)-5 b(e)g(ctangular)45
-b FD(if)33 b(the)g(elemen)m(ts)h(in)e(an)m(y)h(dimension)g(dep)s(end)e
-(on)h(another)h(dimension.)48 b(Non-)150 1607 y(rectangular)31
-b(grids)f(presen)m(t)h(man)m(y)f(sp)s(ecial)h(c)m(hallenges)h(to)g
-(analysis)e(soft)m(w)m(are)i(lik)m(e)g FC(NCO)p FD(.)275
-1767 y(W)-8 b(rapp)s(ed)29 b(co)s(ordinates)i(\(see)h(Section)f(3.17)h
-([W)-8 b(rapp)s(ed)29 b(Co)s(ordinates],)i(page)g(42\),)h(suc)m(h)e(as)
-h(longi-)150 1877 y(tude,)f(are)h(indep)s(enden)m(t)e(of)i(these)g
-(grid)f(prop)s(erties)g(\(regularit)m(y)-8 b(,)32 b(rectangularit)m
-(y\).)275 2038 y(The)38 b(preferred)g FC(NCO)h FD(tec)m(hnique)h(to)g
-(analyze)h(data)f(on)f(non-standard)f(co)s(ordinate)i(grids)f(is)g(to)
-150 2147 y(create)24 b(a)f(region)g(mask)g(with)f Fy(ncap2)p
-FD(,)h(and)f(then)g(to)i(use)e(the)h(mask)f(within)g
-Fy(ncap2)g FD(for)g(v)-5 b(ariable-sp)s(eci\014c)150
-2257 y(pro)s(cessing,)30 b(and/or)h(with)f(other)g(op)s(erators)h
-(\(e.g.,)h Fy(ncwa)p FD(,)e Fy(ncdiff)p FD(\))f(for)h(en)m(tire)h
-(\014le)g(pro)s(cessing.)275 2418 y(Before)i(describing)f(the)h
-(construction)h(of)e(masks,)i(let)f(us)f(review)h(ho)m(w)g(irregularly)
-g(gridded)e(geo-)150 2527 y(science)40 b(data)f(are)g(describ)s(ed.)63
-b(Sa)m(y)39 b(that)g(latitude)h(and)d(longitude)j(are)e(stored)h(as)g
-Fz(R)p FD(-dimensional)150 2637 y(arra)m(ys)26 b(and)e(the)i(pro)s
-(duct)e(of)h(the)h(dimension)f(sizes)h(is)f(the)h(total)h(n)m(um)m(b)s
-(er)d(of)h(elemen)m(ts)i(N)e(in)g(the)h(other)150 2746
-y(v)-5 b(ariables.)41 b(Geoscience)33 b(applications)f(tend)e(to)h(use)
-f Fz(R)25 b FD(=)g(1,)31 b Fz(R)25 b FD(=)g(2,)31 b(and)f
-Fz(R)25 b FD(=)g(3.)275 2907 y(If)34 b(the)i(grid)f(is)g(has)g(no)g
-(simple)g(represen)m(tation)h(\(e.g.,)j(discon)m(tin)m(uous\))c(then)g
-(it)h(mak)m(es)g(sense)f(to)150 3017 y(store)e(all)h(co)s(ordinates)f
-(as)g(1D)h(arra)m(ys)f(with)f(the)h(same)g(size)h(as)f(the)g(n)m(um)m
-(b)s(er)e(of)i(grid)g(p)s(oin)m(ts.)47 b(These)150 3126
-y(gridp)s(oin)m(ts)30 b(can)h(b)s(e)e(completely)k(indep)s(enden)m(t)c
-(of)h(all)h(the)g(other)g(\(o)m(wn)f(w)m(eigh)m(t,)j(area,)e(etc.\).)
-275 3287 y Fz(R)p FD(=1:)40 b(lat\(n)m(um)m(b)s(er)p
-971 3287 28 4 v 40 w(of)p 1084 3287 V 41 w(gridp)s(oin)m(ts\))30
-b(and)g(lon\(n)m(um)m(b)s(er)p 2225 3287 V 39 w(of)p
-2337 3287 V 40 w(gridp)s(oin)m(ts\))275 3448 y(If)f(the)i(horizon)m
-(tal)h(grid)e(is)h(time-in)m(v)-5 b(arian)m(t)32 b(then)e
-Fz(R)p FD(=2)h(is)f(common:)275 3608 y Fz(R)p FD(=2:)40
-b(lat\(south)p 887 3608 V 41 w(north,east)p 1327 3608
-V 41 w(w)m(est\))32 b(and)d(lon\(south)p 2159 3608 V
-41 w(north,east)p 2599 3608 V 40 w(w)m(est\))275 3769
-y(The)g(W)-8 b(eather)32 b(and)e(Researc)m(h)h(F)-8 b(orecast)33
-b(\()p FC(WRF)p FD(\))f(mo)s(del)e(uses)g Fz(R)p FD(=3:)275
-3930 y Fz(R)p FD(=3:)40 b(lat\(time,south)p 1088 3930
-V 42 w(north,east)p 1529 3930 V 41 w(w)m(est\),)32 b(lon\(time,south)p
-2411 3930 V 41 w(north,east)p 2851 3930 V 41 w(w)m(est\))275
-4091 y(and)d(so)i(supp)s(orts)d(grids)i(that)h(c)m(hange)h(with)e
-(time.)275 4251 y(Grids)41 b(with)g Fz(R)h Fy(>)f FD(1)h(often)g(use)g
-(missing)f(v)-5 b(alues)42 b(to)h(indicated)f(empt)m(y)g(p)s(oin)m(ts.)
-75 b(F)-8 b(or)42 b(example,)150 4361 y(so-called)e Fy(")p
-FD(staggered)f(grids)p Fy(")f FD(will)g(use)g(few)m(er)g(east)p
-2017 4361 V 41 w(w)m(est)h(p)s(oin)m(ts)f(near)g(the)g(p)s(oles)g(and)g
-(more)g(near)150 4471 y(the)f(equator.)61 b(netCDF)38
-b(only)f(accepts)h(rectangular)g(arra)m(ys)f(so)g(space)h(m)m(ust)f(b)s
-(e)f(allo)s(cated)j(for)e(the)150 4580 y(maxim)m(um)30
-b(n)m(um)m(b)s(er)e(of)i(east)p 1169 4580 V 41 w(w)m(est)g(p)s(oin)m
-(ts)g(at)h(all)f(latitudes.)42 b(Then)28 b(the)i(application)h(writes)f
-(missing)150 4690 y(v)-5 b(alues)31 b(in)m(to)g(the)g(un)m(used)e(p)s
-(oin)m(ts)h(near)g(the)h(p)s(oles.)275 4850 y(W)-8 b(e)41
-b(demonstrate)g(the)g Fy(ncap2)e FD(analysis)i(tec)m(hnique)g(for)g
-(irregular)f(regions)h(b)m(y)f(constructing)i(a)150 4960
-y(mask)24 b(for)f(an)g Fz(R)p FD(=2)h(grid.)38 b(W)-8
-b(e)25 b(wish)d(to)j(\014nd,)e(sa)m(y)-8 b(,)27 b(the)c(mean)h(temp)s
-(erature)f(within)g([)p Fz(lat)p 3191 4960 V 41 w(min)p
-FD(,)p Fz(lat)p 3514 4960 V 41 w(max)6 b FD(])150 5070
-y(and)30 b([)p Fz(lon)p 479 5070 V 40 w(min)p FD(,)p
-Fz(lon)p 817 5070 V 40 w(max)6 b FD(]:)390 5230 y Fy(ncap2)46
-b(-s)i('mask_var=)d(\(lat)h(>=)h(lat_min)f(&&)h(lat)g(<=)g(lat_max\))f
-(&&)h(\\)1345 5340 y(\(lon)f(>=)h(lon_min)f(&&)h(lon)g(<=)g
-(lon_max\);')e(in.nc)i(out.nc)p eop end
-%%Page: 94 96
-TeXDict begin 94 95 bop 150 -116 a FD(94)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(Arbitrarily)22
-b(shap)s(ed)g(regions)h(can)g(b)s(e)f(de\014ned)g(b)m(y)h(more)f
-(complex)i(conditional)g(statemen)m(ts.)40 b(Once)150
-408 y(de\014ned,)29 b(masks)i(can)f(b)s(e)g(applied)g(to)h(sp)s
-(eci\014c)f(v)-5 b(ariables,)32 b(and)d(to)j(en)m(tire)f(\014les:)390
-572 y Fy(ncap2)46 b(-s)i('temperature_avg=\(tempe)o(rat)o(ure*)o(mask)o
-(_va)o(r\).a)o(vg\(\))o(')42 b(in.nc)k(out.nc)390 682
-y(ncwa)h(-a)g(lat,lon)f(-m)h(mask_var)e(-w)j(area)e(in.nc)h(out.nc)275
-846 y FD(Crafting)41 b(suc)m(h)f(commands)h(on)g(the)g(command)g(line)g
-(is)g(p)s(ossible)g(though)f(un)m(wieldy)-8 b(.)73 b(In)40
-b(suc)m(h)150 956 y(cases,)32 b(a)e(script)h(is)f(often)h(cleaner)g
-(and)f(allo)m(ws)i(y)m(ou)e(to)h(do)s(cumen)m(t)g(the)f(pro)s(cedure:)
-390 1119 y Fy(cat)47 b(>)g(ncap2.in)f(<<)h('EOF')390
-1229 y(mask_var)f(=)h(\(lat)g(>=)g(lat_min)f(&&)h(lat)g(<=)g(lat_max\))
-e(&&)j(\(lon)e(>=)h(lon_min)f(&&)h(>)h(lon)f(<=)g(lon_max\);)390
-1339 y(if\(mask_var.total\(\))c(>)k(0\){)g(//)g(Check)f(that)h(mask)g
-(contains)e(some)i(valid)f(values)485 1448 y
-(temperature_avg=\(temperatu)o(re*m)o(ask)o(_var)o(\).av)o(g\(\))o(;)c
-(//)47 b(Average)f(temperature)485 1558 y(temperature_max=\(temperatu)o
-(re*m)o(ask)o(_var)o(\).ma)o(x\(\))o(;)c(//)47 b(Maximum)f(temperature)
-390 1667 y(})390 1777 y(EOF)390 1887 y(ncap2)g(-S)i(ncap2.in)d(in.nc)h
-(out.nc)275 2051 y FD(F)-8 b(or)31 b FC(WRF)g FD(\014les)f(creating)i
-(regional)f(masks)g(lo)s(oks)f(lik)m(e)390 2214 y Fy(mask_var)46
-b(=)h(\(XLAT)f(>=)i(lat_min)d(&&)j(XLAT)e(<=)h(lat_max\))f(&&)h
-(\(XLONG)f(>=)h(lon_min)f(&&)h(>)h(XLONG)e(<=)h(lon_max\);)275
-2378 y FD(In)42 b(practice)i(with)e(WRF)i(it's)f(a)h(bit)f(more)g
-(complicated)h(b)s(ecause)f(y)m(ou)g(m)m(ust)g(use)g(the)g(global)150
-2488 y(metadata)29 b(to)f(determine)f(the)h(grid)f(staggering)i(and)e
-(o\013sets)h(to)g(translate)g(XLA)-8 b(T)28 b(and)f(XLONG)g(in)m(to)150
-2598 y(real)41 b(latitudes)f(and)g(longitudes)g(and)f(missing)h(p)s
-(oin)m(ts.)69 b(The)40 b(WRF)g(grid)g(do)s(cumen)m(tation)h(should)150
-2707 y(describ)s(e)30 b(this.)275 2871 y(A)38 b(few)g(notes:)57
-b(Irregular)38 b(regions)g(are)h(the)g(union)e(of)h(arra)m(ys)h
-(lat/lon)p 2798 2871 28 4 v 42 w(min/max's.)64 b(The)38
-b(mask)150 2981 y(pro)s(cedure)29 b(is)i(iden)m(tical)h(for)e(all)h
-Fz(R)p FD(.)150 3189 y Fv(4.1.18)63 b(Bilinear)41 b(in)m(terp)s
-(olation)150 3336 y FD(As)32 b(of)g(v)m(ersion)h(4.0.0)h
-FC(NCO)e FD(has)g(in)m(ternal)g(routines)g(to)h(p)s(erform)e(bilinear)h
-(in)m(terp)s(olation)i(on)e(gridded)150 3446 y(data)g(sets.)43
-b(In)30 b(mathematics,)j(bilinear)f(in)m(terp)s(olation)g(is)f(an)g
-(extension)h(of)f(linear)h(in)m(terp)s(olation)g(for)150
-3555 y(in)m(terp)s(olating)40 b(functions)e(of)h(t)m(w)m(o)h(v)-5
-b(ariables)40 b(on)e(a)i(regular)f(grid.)65 b(The)39
-b(idea)g(is)g(to)g(p)s(erform)f(linear)150 3665 y(in)m(terp)s(olation)
-32 b(\014rst)d(in)h(one)h(direction,)g(and)f(then)g(again)i(in)e(the)g
-(other)h(direction.)275 3829 y(Supp)s(ose)22 b(w)m(e)i(ha)m(v)m(e)h(an)
-f(irregular)g(grid)f(of)i(data)f Fy(temperature[lat,lon])p
-FD(,)c(with)k(co-ordinate)h(v)-5 b(ars)150 3938 y Fy(lat[lat],)28
-b(lon[lon])p FD(.)44 b(W)-8 b(e)34 b(wish)d(to)i(\014nd)e(the)h(temp)s
-(erature)h(at)g(an)f(arbitary)g(p)s(oin)m(t)g([)p Fz(X)p
-FD(,)p Fz(Y)13 b FD(])33 b(within)150 4048 y(the)k(grid.)59
-b(If)36 b(w)m(e)h(can)g(lo)s(cate)h(lat)p 1346 4048 V
-41 w(min,lat)p 1669 4048 V 41 w(max)f(and)f(lon)p 2220
-4048 V 40 w(min,lon)p 2558 4048 V 40 w(max)h(suc)m(h)f(that)h
-Fy(lat_min)29 b(<=)g(X)150 4157 y(<=)h(lat_max)25 b FD(and)h
-Fy(lon_min)i(<=Y)i(<=lon_max)24 b FD(then)j(w)m(e)g(can)g(in)m(terp)s
-(olate)i(in)d(t)m(w)m(o)j(dimensions)d(to)h(\014nd)150
-4267 y(the)k(temp)s(erature)f(at)h([)p Fz(X)p FD(,)p
-Fz(Y)13 b FD(].)275 4431 y(The)29 b(general)j(form)e(of)g(the)h
-Fy(ncap2)e FD(in)m(terp)s(olation)i(function)f(is)390
-4595 y Fy(var_out=bilinear_interp\()o(grid)o(_in,)o(gri)o(d_ou)o(t,gr)o
-(id_)o(out_)o(x,gr)o(id_)o(out_)o(y,gr)o(id_)o(in_x)o(,gri)o(d_i)o
-(n_y\))275 4759 y FD(where)150 4952 y Fy(grid_in)144
-b FD(Input)37 b(function)h(data.)65 b(Usually)38 b(a)h(t)m(w)m(o)g
-(dimensional)g(v)-5 b(ariable.)65 b(It)38 b(m)m(ust)g(b)s(e)g(of)g
-(size)630 5062 y Fy(grid_in_x.size\(\)*grid_in)o(_y.s)o(ize\()o(\))150
-5230 y(grid_out)96 b FD(This)32 b(v)-5 b(ariable)34 b(is)f(the)g(shap)s
-(e)g(of)g Fy(var_out)p FD(.)47 b(Usually)33 b(a)h(t)m(w)m(o)g
-(dimensional)f(v)-5 b(ariable.)50 b(It)630 5340 y(m)m(ust)30
-b(b)s(e)g(of)h(size)g Fy(grid_out_x.size\(\)*grid_)o(out_)o(y.si)o
-(ze\()o(\))p eop end
-%%Page: 95 97
-TeXDict begin 95 96 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(95)150
-299 y Fy(grid_out_x)630 408 y Fz(X)40 b FD(output)30
-b(v)-5 b(alues)150 561 y Fy(grid_out_y)630 670 y Fz(Y)43
-b FD(output)30 b(v)-5 b(alues)150 823 y Fy(grid_in_x)630
-932 y Fz(X)40 b FD(input)29 b(v)-5 b(alues)31 b(v)-5
-b(alues.)41 b(Must)30 b(b)s(e)g(mon)m(tonic)h(\(increasing)h(or)e
-(decreasing\).)150 1085 y Fy(grid_in_y)630 1194 y Fz(Y)43
-b FD(input)30 b(v)-5 b(alues)30 b(v)-5 b(alues.)41 b(Must)31
-b(b)s(e)e(mon)m(tonic)j(\(increasing)f(or)g(decreasing\).)150
-1375 y(Prior)39 b(to)h(calculations)h(all)f(argumen)m(ts)f(are)h(con)m
-(v)m(erted)g(to)g(t)m(yp)s(e)f Fy(NC_DOUBLE)p FD(.)65
-b(After)39 b(calculations)150 1484 y Fy(var_out)28 b
-FD(is)j(con)m(v)m(erted)h(to)f(the)f(input)g(t)m(yp)s(e)g(of)h
-Fy(grid_in)p FD(.)275 1644 y(Supp)s(ose)d(the)j(\014rst)e(part)i(of)f
-(an)g(ncap2)h(script)f(is)390 1803 y Fy(defdim\("X",4\);)390
-1913 y(defdim\("Y",5\);)390 2132 y(//)47 b(Temperature)390
-2242 y(T_in[$X,$Y]=)438 2351 y({100,)f(200,)h(300,)f(400,)h(500,)485
-2461 y(101,)g(202,)g(303,)f(404,)h(505,)485 2570 y(102,)g(204,)g(306,)f
-(408,)h(510,)485 2680 y(103,)g(206,)g(309,)f(412,)h(515.0)f(};)390
-2899 y(//)h(Coordinate)e(variables)390 3009 y(x_in[$X]={0.0,1.0,2.0,3.)
-o(01};)390 3118 y(y_in[$Y]={1.0,2.0,3.0,4.)o(0,5})o(;)275
-3278 y FD(No)m(w)31 b(w)m(e)f(in)m(terp)s(olate)i(with)e(the)h(follo)m
-(wing)h(v)-5 b(ariables:)390 3437 y Fy(defdim\("Xn",3\);)390
-3547 y(defdim\("Yn",4\);)390 3656 y(T_out[$Xn,$Yn]=0.0;)390
-3766 y(x_out[$Xn]={0.0,0.02,3.0)o(1};)390 3875 y
-(y_out[$Yn]={1.1,2.0,3,4})o(;)390 4095 y(var_out=bilinear_interp\()o
-(T_in)o(,T_o)o(ut,)o(x_ou)o(t,y_)o(out)o(,x_i)o(n,y_)o(in\))o(;)390
-4204 y(print\(var_out\);)390 4314 y(//)47 b(110,)g(200,)f(300,)h(400,)
-390 4423 y(//)g(110.022,)f(200.04,)g(300.06,)f(400.08,)390
-4533 y(//)i(113.3,)f(206,)h(309,)g(412)f(;)275 4692 y
-FD(It)30 b(is)g(p)s(ossible)g(to)h(in)m(terp)s(olate)h(a)f(single)g(p)s
-(oin)m(t:)390 4852 y Fy(var_out=bilinear_interp\()o(T_in)o(,0.0)o(,3.)o
-(0,4.)o(99,x)o(_in)o(,y_i)o(n\);)390 4961 y(print\(var_out\);)390
-5071 y(//)47 b(513.920594059406)150 5230 y Fk(W)-8 b(rapping)30
-b(and)f(Extrap)s(olation)150 5340 y FD(The)g(function)g
-Fy(bilinear_interp_wrap\(\))24 b FD(tak)m(es)31 b(the)f(same)g(argumen)
-m(ts)g(as)g Fy(bilinear_interp\(\))p eop end
-%%Page: 96 98
-TeXDict begin 96 97 bop 150 -116 a FD(96)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(but)36 b(p)s(erforms)f(wrapping)h
-(\()p Fz(Y)13 b FD(\))37 b(and)f(extrap)s(olation)i(\()p
-Fz(X)9 b FD(\))38 b(for)f(p)s(oin)m(ts)f(o\013)h(the)g(edge)h(of)f(the)
-g(grid.)59 b(If)150 408 y(the)37 b(giv)m(en)g(range)g(of)g(longitude)g
-(is)f(sa)m(y)i(\(25-335\))h(and)d(w)m(e)h(ha)m(v)m(e)h(a)f(p)s(oin)m(t)
-f(at)h(20)h(degrees,)h(then)d(the)150 518 y(endp)s(oin)m(ts)e(of)g(the)
-h(range)g(are)g(used)f(for)g(the)h(in)m(terp)s(olation.)54
-b(This)34 b(is)g(what)h(wrapping)e(means.)53 b(F)-8 b(or)150
-628 y(wrapping)36 b(to)i(o)s(ccur)g Fz(Y)50 b FD(m)m(ust)37
-b(b)s(e)g(longitude)h(and)f(m)m(ust)g(b)s(e)g(in)g(the)g(range)h
-(\(0,360\))i(or)e(\(-180,180\).)150 737 y(There)22 b(are)h(no)g
-(restrictions)h(on)f(the)f(longitude)i(\()p Fz(X)9 b
-FD(\))24 b(v)-5 b(alues,)25 b(though)d(t)m(ypically)j(these)e(are)g(in)
-g(the)g(range)150 847 y(\(-90,90\).)44 b(This)29 b Fy(ncap2)g
-FD(script)i(illustrates)g(b)s(oth)f(wrapping)f(and)h(extrap)s(olation)i
-(of)e(end)g(p)s(oin)m(ts:)390 1130 y Fy(defdim\("lat_in",6\);)390
-1240 y(defdim\("lon_in",5\);)390 1459 y(//)47 b(Coordinate)e(input)i
-(vars)390 1568 y(lat_in[$lat_in]={-80,-40)o(,0,3)o(0,60)o(.0,)o(85.0)o
-(};)390 1678 y(lon_in[$lon_in]={30,)42 b(110,)47 b(190,)g(270,)f
-(350.0};)390 1897 y(T_in[$lat_in,$lon_in]=)485 2007 y({10,40,50,30,15,)
-581 2116 y(12,43,52,31,16,)581 2226 y(14,46,54,32,17,)581
-2335 y(16,49,56,33,18,)581 2445 y(18,52,58,34,19,)581
-2555 y(20,55,60,35,20.0)d(};)390 2774 y(defdim\("lat_out",4\);)390
-2883 y(defdim\("lon_out",3\);)390 3103 y(//)k(Coordinate)e(variables)
-390 3212 y(lat_out[$lat_out]={-90,0)o(,70,)o(88.0)o(};)390
-3322 y(lon_out[$lon_out]={0,190)o(,355)o(.0};)390 3541
-y(T_out[$lat_out,$lon_out])o(=0.0)o(;)390 3760 y
-(T_out=bilinear_interp_wr)o(ap\(T)o(_in,)o(T_o)o(ut,l)o(at_o)o(ut,)o
-(lon_)o(out,)o(lat)o(_in,)o(lon_)o(in\))o(;)390 3870
-y(print\(T_out\);)390 3979 y(//)i(13.4375,)f(49.5,)g(14.09375,)390
-4089 y(//)h(16.25,)f(54,)h(16.625,)390 4198 y(//)g(19.25,)f(58.8,)h
-(19.325,)390 4308 y(//)g(20.15,)f(60.24,)g(20.135)g(;)150
-4755 y Fv(4.1.19)63 b(GSL)41 b(sp)s(ecial)h(functions)150
-4902 y FD(As)47 b(of)h(v)m(ersion)g(3.9.6)h(\(released)g(Jan)m(uary)-8
-b(,)52 b(2009\),)i FC(NCO)48 b FD(can)g(link)f(to)h(the)g(GNU)g(Scien)m
-(ti\014c)h(Li-)150 5011 y(brary)43 b(\()p FC(GSL)p FD(\).)i
-Fy(ncap)e FD(can)h(access)h(most)g FC(GSL)f FD(sp)s(ecial)g(functions)g
-(including)f(Airy)-8 b(,)48 b(Bessel,)h(error,)150 5121
-y(gamma,)38 b(b)s(eta,)f(h)m(yp)s(ergeometric,)i(and)c(Legendre)g
-(functions)g(and)g(elliptical)j(in)m(tegrals.)58 b FC(GSL)36
-b FD(m)m(ust)150 5230 y(b)s(e)28 b(v)m(ersion)j(1.4)f(or)e(later.)41
-b(T)-8 b(o)29 b(list)h(the)f FC(GSL)f FD(functions)h(a)m(v)-5
-b(ailable)31 b(with)d(y)m(our)g FC(NCO)h FD(build,)f(use)g
-Fy(ncap2)150 5340 y(-f)i(|)g(grep)f(^gsl)p FD(.)p eop
-end
-%%Page: 97 99
-TeXDict begin 97 98 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(97)150
-299 y(The)36 b(function)g(names)g(used)g(b)m(y)g FC(ncap2)f
-FD(mirror)h(their)g FC(GSL)h FD(names.)58 b(The)36 b
-FC(NCO)g FD(wrapp)s(ers)f(for)h FC(GSL)150 408 y FD(functions)26
-b(automatically)j(call)e(the)f(error-handling)g(v)m(ersion)g(of)h(the)f
-FC(GSL)g FD(function)g(when)f(a)m(v)-5 b(ailable)3685
-375 y Fw(2)3725 408 y FD(.)150 518 y(This)26 b(allo)m(ws)j
-FC(NCO)e FD(to)h(return)e(a)i(missing)f(v)-5 b(alue)27
-b(when)g(the)g FC(GSL)g FD(library)g(encoun)m(ters)h(a)f(domain)g
-(error)150 628 y(or)35 b(a)h(\015oating)g(p)s(oin)m(t)f(exception.)57
-b(The)34 b(slo)m(w-do)m(wn)i(due)e(to)i(calling)h(the)f(error-handling)
-e(v)m(ersion)i(of)150 737 y(the)42 b FC(GSL)h FD(n)m(umerical)f
-(functions)g(w)m(as)h(found)d(to)j(b)s(e)f(negligible)i(\(please)f(let)
-g(us)f(kno)m(w)g(if)g(y)m(ou)g(\014nd)150 847 y(otherwise\).)150
-1013 y(Consider)30 b(the)g(gamma)h(function.)150 1122
-y(The)f FC(GSL)g FD(function)g(protot)m(yp)s(e)h(is)150
-1232 y Fy(int)e(gsl_sf_gamma_e\(const)c(double)k(x,)h(gsl_sf_result)c
-(*)31 b(result\))f FD(The)j Fy(ncap)e FD(script)i(w)m(ould)150
-1342 y(b)s(e:)390 1508 y Fy(lon_in[lon]={-1,0.1,0,2,)o(0.3})o(;)390
-1617 y(lon_out=gsl_sf_gamma\(lon)o(_in\))o(;)390 1727
-y(lon_out=)46 b(_,)h(9.5135,)f(4.5908,)f(2.9915)150 1893
-y FD(The)38 b(\014rst)g(v)-5 b(alue)38 b(is)h(set)g(to)g
-Fy(_FillValue)c FD(since)k(the)g(gamma)g(function)f(is)g(unde\014ned)f
-(for)h(negativ)m(e)150 2003 y(in)m(tegers.)52 b(If)33
-b(the)h(input)f(v)-5 b(ariable)35 b(has)e(a)h(missing)g(v)-5
-b(alue)34 b(then)g(this)f(v)-5 b(alue)34 b(is)g(used.)50
-b(Otherwise,)35 b(the)150 2112 y(default)40 b(double)g(\014ll)g(v)-5
-b(alue)40 b(is)g(used)f(\(de\014ned)g(in)h(the)g(netCDF)h(header)f(`)p
-Fy(netcdf.h)p FD(')e(as)i Fy(NC_FILL_)150 2222 y(DOUBLE)29
-b(=)h(9.969e+36)p FD(\).)150 2388 y(Consider)g(a)g(call)i(to)f(a)g
-(Bessel)g(function)f(with)g FC(GSL)h FD(protot)m(yp)s(e)150
-2497 y Fy(int)e(gsl_sf_bessel_Jn_e\(int)c(n,)30 b(double)e(x,)i
-(gsl_sf_result)d(*)j(result\))275 2663 y FD(An)g Fy(ncap)f
-FD(script)h(w)m(ould)g(b)s(e)390 2829 y Fy(lon_out=gsl_sf_bessel_Jn)o
-(\(2,l)o(on_i)o(n\);)390 2939 y(lon_out=0.11490,)43 b(0.0012,)j
-(0.00498,)g(0.011165)275 3105 y FD(This)31 b(computes)i(the)f(Bessel)i
-(function)e(of)g(order)g Fz(n=2)39 b FD(for)32 b(ev)m(ery)h(v)-5
-b(alue)33 b(in)f Fy(lon_in)p FD(.)45 b(The)32 b(Bessel)150
-3215 y(order)e(argumen)m(t,)h(an)f(in)m(teger,)i(can)f(also)g(b)s(e)f
-(a)h(non-scalar)g(v)-5 b(ariable,)31 b(i.e.,)h(an)e(arra)m(y)-8
-b(.)390 3381 y Fy(n_in[lon]={0,1,2,3};)390 3490 y
-(lon_out=gsl_sf_bessel_Jn)o(\(n_i)o(n,0.)o(5\);)390 3600
-y(lon_out=)46 b(0.93846,)f(0.24226,)h(0.03060,)f(0.00256)150
-3766 y FD(Argumen)m(ts)g(to)g FC(GSL)g FD(wrapp)s(er)e(functions)i(in)f
-Fy(ncap)g FD(m)m(ust)h(conform)f(to)i(one)f(another,)k(i.e.,)h(they)150
-3876 y(m)m(ust)42 b(share)f(the)i(same)f(sub-set)g(of)g(dimensions.)74
-b(F)-8 b(or)43 b(example:)65 b Fy(three_out=gsl_sf_bessel)o(_)150
-3985 y(Jn\(n_in,three_dmn_var_db)o(l\))22 b FD(is)29
-b(v)-5 b(alid)29 b(b)s(ecause)f(the)h(v)-5 b(ariable)29
-b Fy(three_dmn_var_dbl)24 b FD(has)k(a)h Fz(lon)150 4095
-y FD(dimension,)d(so)g Fy(n_in)e FD(in)h(can)h(b)s(e)f(broadcast)h(to)g
-(conform)f(to)i Fy(three_dmn_var_dbl)p FD(.)34 b(Ho)m(w)m(ev)m(er)27
-b Fy(time_)150 4204 y(out=gsl_sf_bessel_Jn\(n_i)o(n,ti)o(me\))d
-FD(is)30 b(in)m(v)-5 b(alid.)275 4370 y(Consider)50 b(the)h(elliptical)
-i(in)m(tegral)g(with)d(protot)m(yp)s(e)i Fy(int)29 b
-(gsl_sf_ellint_RD_e\(double)24 b(x,)150 4480 y(double)29
-b(y,)g(double)g(z,)h(gsl_mode_t)d(mode,)i(gsl_sf_result)e(*)j(result\))
-390 4646 y(three_out=gsl_sf_ellint_)o(RD\(0)o(.5,t)o(ime)o(,thr)o(ee_d)
-o(mn_)o(var_)o(dbl\))o(;)150 4812 y FD(The)21 b(three)h(argumen)m(ts)h
-(are)f(all)h(conformable)f(so)g(the)g(ab)s(o)m(v)m(e)i
-Fy(ncap)c FD(call)j(is)f(v)-5 b(alid.)39 b(The)21 b(mo)s(de)g(argumen)m
-(t)150 4922 y(in)30 b(the)h(function)f(protot)m(yp)s(e)i(con)m(trols)f
-(the)g(con)m(v)m(ergence)i(of)e(the)g(algorithm.)42 b(It)31
-b(also)h(app)s(ears)d(in)i(the)150 5031 y(Airy)36 b(F)-8
-b(unction)36 b(protot)m(yp)s(es.)57 b(It)36 b(can)g(b)s(e)f(set)h(b)m
-(y)f(de\014ning)g(the)h(en)m(vironmen)m(t)g(v)-5 b(ariable)36
-b Fy(GSL_PREC_)p 150 5154 1200 4 v 199 5221 a Fw(2)297
-5253 y Fu(These)23 b(are)g(the)e Fs(GSL)i Fu(standard)g(function)f
-(names)h(p)r(ost\014xed)e(with)i Ft(_e)p Fu(.)34 b Fs(NCO)22
-b Fu(calls)h(these)g(functions)f(automatically)-6 b(,)275
-5340 y(without)25 b(the)h Fs(NCO)f Fu(command)h(ha)n(ving)f(to)h(sp)r
-(eci\014cally)h(indicate)f(the)f Ft(_e)h Fu(function)g(su\016x.)p
-eop end
-%%Page: 98 100
-TeXDict begin 98 99 bop 150 -116 a FD(98)2566 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fy(MODE)p FD(.)60
-b(If)37 b(unset)g(it)h(defaults)f(to)h(the)g(v)-5 b(alue)37
-b Fy(GSL_PREC_DOUBLE)p FD(.)58 b(See)37 b(the)h FC(GSL)f
-FD(man)m(ual)h(for)f(more)150 408 y(details.)390 579
-y Fy(export)46 b(GSL_PREC_MODE=0)e(//)j(GSL_PREC_DOUBLE)390
-689 y(export)f(GSL_PREC_MODE=1)e(//)j(GSL_PREC_SINGLE)390
-798 y(export)f(GSL_PREC_MODE=2)e(//)j(GSL_PREC_APPROX)150
-969 y FD(The)26 b Fy(ncap)g FD(wrapp)s(ers)e(to)k(the)f(arra)m(y)g
-(functions)f(are)h(sligh)m(tly)h(di\013eren)m(t.)40 b(Consider)26
-b(the)h(follo)m(wing)h FC(GSL)150 1078 y FD(protot)m(yp)s(e)150
-1188 y Fy(int)h(gsl_sf_bessel_Jn_array\(int)24 b(nmin,)29
-b(int)g(nmax,)g(double)g(x,)g(double)g(*result_array\))390
-1358 y(b1=lon.double\(\);)390 1468 y(x=0.5;)390 1577
-y(status=gsl_sf_bessel_Jn_)o(arra)o(y\(1,)o(4,x)o(,&b1)o(\);)390
-1687 y(print\(status\);)390 1797 y(b1=0.24226,0.0306,0.0025)o(6,0.)o
-(0001)o(6;)150 1967 y FD(This)35 b(calculates)j(the)d(Bessel)i
-(function)e(of)h Fz(x)6 b FD(=0.5)37 b(for)e Fz(n)p FD(=1)g(to)h(4.)57
-b(The)35 b(\014rst)g(three)h(argumen)m(ts)g(are)150 2077
-y(scalar)28 b(v)-5 b(alues.)40 b(If)27 b(a)g(non-scalar)h(v)-5
-b(ariable)28 b(is)f(supplied)f(as)i(an)f(argumen)m(t)g(then)g(only)g
-(the)h(\014rst)e(v)-5 b(alue)28 b(is)150 2186 y(used.)45
-b(The)32 b(\014nal)g(argumen)m(t)h(is)f(the)g(v)-5 b(ariable)33
-b(where)f(the)g(results)g(are)h(stored)f(\(NB:)i(the)e
-Fy(&)g FD(indicates)150 2296 y(this)25 b(is)g(a)h(call)g(b)m(y)f
-(reference\).)40 b(This)24 b(\014nal)h(argumen)m(t)g(m)m(ust)g(b)s(e)g
-(of)g(t)m(yp)s(e)g Fy(double)f FD(and)g(m)m(ust)h(b)s(e)f(of)i(least)
-150 2405 y(size)34 b Fz(nmax-nmin)p Fy(+)p Fz(1)p FD(.)50
-b(If)33 b(either)h(of)g(these)g(conditions)g(is)g(not)f(met)i(then)e
-(then)g(the)h(function)f(returns)150 2515 y(an)d(error)g(message.)42
-b(The)30 b(function/wrapp)s(er)f(returns)g(a)i(status)f(\015ag.)41
-b(Zero)31 b(indicates)g(success.)150 2685 y(Consider)f(another)g(arra)m
-(y)h(function)150 2795 y Fy(int)e(gsl_sf_legendre_Pl_array\()24
-b(int)29 b(lmax,)g(double)g(x,)h(double)e(*result_array\);)390
-2966 y(a1=time.double\(\);)390 3075 y(x=0.3;)390 3185
-y(status=gsl_sf_legendre_P)o(l_ar)o(ray\()o(a1.)o(size)o(\(\)-1)o(,)42
-b(x,&a1\);)390 3294 y(print\(status\);)150 3465 y FD(This)25
-b(call)i(calculates)g Fz(P)p 992 3465 28 4 v 40 w(l)t
-FD(\(0.3\))g(for)f Fz(l)t FD(=0..9.)40 b(Note)27 b(that)f
-Fy(|)p Fz(x)p Fy(|<)p Fz(=1)p FD(,)g(otherwise)g(there)f(will)h(b)s(e)f
-(a)h(domain)150 3574 y(error.)40 b(See)31 b(the)g FC(GSL)f
-FD(do)s(cumen)m(tation)h(for)f(more)h(details.)150 3745
-y(The)e FC(GSL)h FD(functions)f(implemen)m(ted)h(in)g
-FC(NCO)f FD(are)h(listed)g(in)g(the)f(table)i(b)s(elo)m(w.)41
-b(This)29 b(table)h(is)g(correct)150 3854 y(for)i FC(GSL)g
-FD(v)m(ersion)h(1.10.)48 b(T)-8 b(o)33 b(see)g(what)f(functions)g(are)h
-(a)m(v)-5 b(ailable)34 b(on)e(y)m(our)h(build)e(run)g(the)h(command)150
-3964 y Fy(ncap2)d(-f)h(|grep)f(^gsl)e FD(.)41 b(T)-8
-b(o)29 b(see)g(this)g(table)h(along)g(with)f(the)g FC(GSL)g
-FD(C-function)f(protot)m(yp)s(es)i(lo)s(ok)f(at)150 4074
-y(the)i(spreadsheet)f Fk(do)s(c/nco)p 1124 4074 28 5
-v 40 w(gsl.o)s(ds)p FD(.)150 4463 y Fk(GSL)g(NAME)867
-b(I)144 b(NCAP)30 b(FUNCTION)g(CALL)150 4573 y FD(gsl)p
-262 4573 28 4 v 41 w(sf)p 367 4573 V 39 w(airy)p 560
-4573 V 40 w(Ai)p 693 4573 V 41 w(e)742 b(Y)112 b(gsl)p
-1802 4573 V 40 w(sf)p 1906 4573 V 40 w(airy)p 2100 4573
-V 40 w(Ai\(dbl)p 2395 4573 V 40 w(expr\))150 4682 y(gsl)p
-262 4682 V 41 w(sf)p 367 4682 V 39 w(airy)p 560 4682
-V 40 w(Bi)p 689 4682 V 41 w(e)746 b(Y)112 b(gsl)p 1802
-4682 V 40 w(sf)p 1906 4682 V 40 w(airy)p 2100 4682 V
-40 w(Bi\(dbl)p 2391 4682 V 40 w(expr\))150 4792 y(gsl)p
-262 4792 V 41 w(sf)p 367 4792 V 39 w(airy)p 560 4792
-V 40 w(Ai)p 693 4792 V 41 w(scaled)p 971 4792 V 41 w(e)464
-b(Y)112 b(gsl)p 1802 4792 V 40 w(sf)p 1906 4792 V 40
-w(airy)p 2100 4792 V 40 w(Ai)p 2233 4792 V 41 w(scaled\(dbl)p
-2673 4792 V 40 w(expr\))150 4902 y(gsl)p 262 4902 V 41
-w(sf)p 367 4902 V 39 w(airy)p 560 4902 V 40 w(Bi)p 689
-4902 V 41 w(scaled)p 967 4902 V 41 w(e)468 b(Y)112 b(gsl)p
-1802 4902 V 40 w(sf)p 1906 4902 V 40 w(airy)p 2100 4902
-V 40 w(Bi)p 2229 4902 V 41 w(scaled\(dbl)p 2669 4902
-V 40 w(expr\))150 5011 y(gsl)p 262 5011 V 41 w(sf)p 367
-5011 V 39 w(airy)p 560 5011 V 40 w(Ai)p 693 5011 V 41
-w(deriv)p 934 5011 V 40 w(e)502 b(Y)112 b(gsl)p 1802
-5011 V 40 w(sf)p 1906 5011 V 40 w(airy)p 2100 5011 V
-40 w(Ai)p 2233 5011 V 41 w(deriv\(dbl)p 2636 5011 V 39
-w(expr\))150 5121 y(gsl)p 262 5121 V 41 w(sf)p 367 5121
-V 39 w(airy)p 560 5121 V 40 w(Bi)p 689 5121 V 41 w(deriv)p
-930 5121 V 40 w(e)506 b(Y)112 b(gsl)p 1802 5121 V 40
-w(sf)p 1906 5121 V 40 w(airy)p 2100 5121 V 40 w(Bi)p
-2229 5121 V 41 w(deriv\(dbl)p 2632 5121 V 39 w(expr\))150
-5230 y(gsl)p 262 5230 V 41 w(sf)p 367 5230 V 39 w(airy)p
-560 5230 V 40 w(Ai)p 693 5230 V 41 w(deriv)p 934 5230
-V 40 w(scaled)p 1211 5230 V 41 w(e)224 b(Y)112 b(gsl)p
-1802 5230 V 40 w(sf)p 1906 5230 V 40 w(airy)p 2100 5230
-V 40 w(Ai)p 2233 5230 V 41 w(deriv)p 2474 5230 V 39 w(scaled\(dbl)p
-2912 5230 V 41 w(expr\))150 5340 y(gsl)p 262 5340 V 41
-w(sf)p 367 5340 V 39 w(airy)p 560 5340 V 40 w(Bi)p 689
-5340 V 41 w(deriv)p 930 5340 V 40 w(scaled)p 1207 5340
-V 41 w(e)228 b(Y)112 b(gsl)p 1802 5340 V 40 w(sf)p 1906
-5340 V 40 w(airy)p 2100 5340 V 40 w(Bi)p 2229 5340 V
-41 w(deriv)p 2470 5340 V 40 w(scaled\(dbl)p 2909 5340
-V 40 w(expr\))p eop end
-%%Page: 99 101
-TeXDict begin 99 100 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1942 b(99)150
-299 y(gsl)p 262 299 28 4 v 41 w(sf)p 367 299 V 39 w(airy)p
-560 299 V 40 w(zero)p 761 299 V 41 w(Ai)p 895 299 V 41
-w(e)540 b(Y)112 b(gsl)p 1802 299 V 40 w(sf)p 1906 299
-V 40 w(airy)p 2100 299 V 40 w(zero)p 2301 299 V 41 w(Ai\(uin)m(t)p
-2629 299 V 41 w(expr\))150 408 y(gsl)p 262 408 V 41 w(sf)p
-367 408 V 39 w(airy)p 560 408 V 40 w(zero)p 761 408 V
-41 w(Bi)p 891 408 V 41 w(e)544 b(Y)112 b(gsl)p 1802 408
-V 40 w(sf)p 1906 408 V 40 w(airy)p 2100 408 V 40 w(zero)p
-2301 408 V 41 w(Bi\(uin)m(t)p 2625 408 V 41 w(expr\))150
-518 y(gsl)p 262 518 V 41 w(sf)p 367 518 V 39 w(airy)p
-560 518 V 40 w(zero)p 761 518 V 41 w(Ai)p 895 518 V 41
-w(deriv)p 1136 518 V 40 w(e)300 b(Y)112 b(gsl)p 1802
-518 V 40 w(sf)p 1906 518 V 40 w(airy)p 2100 518 V 40
-w(zero)p 2301 518 V 41 w(Ai)p 2435 518 V 40 w(deriv\(uin)m(t)p
-2869 518 V 41 w(expr\))150 628 y(gsl)p 262 628 V 41 w(sf)p
-367 628 V 39 w(airy)p 560 628 V 40 w(zero)p 761 628 V
-41 w(Bi)p 891 628 V 41 w(deriv)p 1132 628 V 40 w(e)304
-b(Y)112 b(gsl)p 1802 628 V 40 w(sf)p 1906 628 V 40 w(airy)p
-2100 628 V 40 w(zero)p 2301 628 V 41 w(Bi)p 2431 628
-V 41 w(deriv\(uin)m(t)p 2866 628 V 40 w(expr\))150 737
-y(gsl)p 262 737 V 41 w(sf)p 367 737 V 39 w(b)s(essel)p
-637 737 V 40 w(J0)p 769 737 V 40 w(e)667 b(Y)112 b(gsl)p
-1802 737 V 40 w(sf)p 1906 737 V 40 w(b)s(essel)p 2177
-737 V 40 w(J0\(dbl)p 2471 737 V 39 w(expr\))150 847 y(gsl)p
-262 847 V 41 w(sf)p 367 847 V 39 w(b)s(essel)p 637 847
-V 40 w(J1)p 769 847 V 40 w(e)667 b(Y)112 b(gsl)p 1802
-847 V 40 w(sf)p 1906 847 V 40 w(b)s(essel)p 2177 847
-V 40 w(J1\(dbl)p 2471 847 V 39 w(expr\))150 956 y(gsl)p
-262 956 V 41 w(sf)p 367 956 V 39 w(b)s(essel)p 637 956
-V 40 w(Jn)p 775 956 V 39 w(e)662 b(Y)112 b(gsl)p 1802
-956 V 40 w(sf)p 1906 956 V 40 w(b)s(essel)p 2177 956
-V 40 w(Jn\(in)m(t)p 2458 956 V 40 w(expr,dbl)p 2825 956
-V 39 w(expr\))150 1066 y(gsl)p 262 1066 V 41 w(sf)p 367
-1066 V 39 w(b)s(essel)p 637 1066 V 40 w(Jn)p 775 1066
-V 39 w(arra)m(y)495 b(Y)112 b(status=gsl)p 2111 1066
-V 40 w(sf)p 2215 1066 V 40 w(b)s(essel)p 2486 1066 V
-40 w(Jn)p 2624 1066 V 39 w(arra)m(y\(in)m(t,in)m(t,double,&v)-5
-b(ar)p 3654 1066 V 42 w(out\))150 1176 y(gsl)p 262 1176
-V 41 w(sf)p 367 1176 V 39 w(b)s(essel)p 637 1176 V 40
-w(Y0)p 790 1176 V 41 w(e)645 b(Y)112 b(gsl)p 1802 1176
-V 40 w(sf)p 1906 1176 V 40 w(b)s(essel)p 2177 1176 V
-40 w(Y0\(dbl)p 2492 1176 V 40 w(expr\))150 1285 y(gsl)p
-262 1285 V 41 w(sf)p 367 1285 V 39 w(b)s(essel)p 637
-1285 V 40 w(Y1)p 790 1285 V 41 w(e)645 b(Y)112 b(gsl)p
-1802 1285 V 40 w(sf)p 1906 1285 V 40 w(b)s(essel)p 2177
-1285 V 40 w(Y1\(dbl)p 2492 1285 V 40 w(expr\))150 1395
-y(gsl)p 262 1395 V 41 w(sf)p 367 1395 V 39 w(b)s(essel)p
-637 1395 V 40 w(Yn)p 796 1395 V 40 w(e)640 b(Y)112 b(gsl)p
-1802 1395 V 40 w(sf)p 1906 1395 V 40 w(b)s(essel)p 2177
-1395 V 40 w(Yn\(in)m(t)p 2479 1395 V 40 w(expr,dbl)p
-2846 1395 V 39 w(expr\))150 1504 y(gsl)p 262 1504 V 41
-w(sf)p 367 1504 V 39 w(b)s(essel)p 637 1504 V 40 w(Yn)p
-796 1504 V 40 w(arra)m(y)473 b(Y)112 b(gsl)p 1802 1504
-V 40 w(sf)p 1906 1504 V 40 w(b)s(essel)p 2177 1504 V
-40 w(Yn)p 2336 1504 V 39 w(arra)m(y)150 1614 y(gsl)p
-262 1614 V 41 w(sf)p 367 1614 V 39 w(b)s(essel)p 637
-1614 V 40 w(I0)p 755 1614 V 40 w(e)681 b(Y)112 b(gsl)p
-1802 1614 V 40 w(sf)p 1906 1614 V 40 w(b)s(essel)p 2177
-1614 V 40 w(I0\(dbl)p 2457 1614 V 40 w(expr\))150 1724
-y(gsl)p 262 1724 V 41 w(sf)p 367 1724 V 39 w(b)s(essel)p
-637 1724 V 40 w(I1)p 755 1724 V 40 w(e)681 b(Y)112 b(gsl)p
-1802 1724 V 40 w(sf)p 1906 1724 V 40 w(b)s(essel)p 2177
-1724 V 40 w(I1\(dbl)p 2457 1724 V 40 w(expr\))150 1833
-y(gsl)p 262 1833 V 41 w(sf)p 367 1833 V 39 w(b)s(essel)p
-637 1833 V 40 w(In)p 761 1833 V 39 w(e)676 b(Y)112 b(gsl)p
-1802 1833 V 40 w(sf)p 1906 1833 V 40 w(b)s(essel)p 2177
-1833 V 40 w(In\(in)m(t)p 2444 1833 V 40 w(expr,dbl)p
-2811 1833 V 39 w(expr\))150 1943 y(gsl)p 262 1943 V 41
-w(sf)p 367 1943 V 39 w(b)s(essel)p 637 1943 V 40 w(In)p
-761 1943 V 39 w(arra)m(y)509 b(Y)112 b(status=gsl)p 2111
-1943 V 40 w(sf)p 2215 1943 V 40 w(b)s(essel)p 2486 1943
-V 40 w(In)p 2610 1943 V 39 w(arra)m(y\(in)m(t,in)m(t,double,&v)-5
-b(ar)p 3640 1943 V 42 w(out\))150 2052 y(gsl)p 262 2052
-V 41 w(sf)p 367 2052 V 39 w(b)s(essel)p 637 2052 V 40
-w(I0)p 755 2052 V 40 w(scaled)p 1032 2052 V 41 w(e)403
-b(Y)112 b(gsl)p 1802 2052 V 40 w(sf)p 1906 2052 V 40
-w(b)s(essel)p 2177 2052 V 40 w(I0)p 2295 2052 V 40 w(scaled\(dbl)p
-2734 2052 V 40 w(expr\))150 2162 y(gsl)p 262 2162 V 41
-w(sf)p 367 2162 V 39 w(b)s(essel)p 637 2162 V 40 w(I1)p
-755 2162 V 40 w(scaled)p 1032 2162 V 41 w(e)403 b(Y)112
-b(gsl)p 1802 2162 V 40 w(sf)p 1906 2162 V 40 w(b)s(essel)p
-2177 2162 V 40 w(I1)p 2295 2162 V 40 w(scaled\(dbl)p
-2734 2162 V 40 w(expr\))150 2271 y(gsl)p 262 2271 V 41
-w(sf)p 367 2271 V 39 w(b)s(essel)p 637 2271 V 40 w(In)p
-761 2271 V 39 w(scaled)p 1037 2271 V 41 w(e)398 b(Y)112
-b(gsl)p 1802 2271 V 40 w(sf)p 1906 2271 V 40 w(b)s(essel)p
-2177 2271 V 40 w(In)p 2301 2271 V 39 w(scaled\(in)m(t)p
-2720 2271 V 42 w(expr,dbl)p 3089 2271 V 39 w(expr\))150
-2381 y(gsl)p 262 2381 V 41 w(sf)p 367 2381 V 39 w(b)s(essel)p
-637 2381 V 40 w(In)p 761 2381 V 39 w(scaled)p 1037 2381
-V 41 w(arra)m(y)231 b(Y)112 b(staus=gsl)p 2076 2381 V
-40 w(sf)p 2180 2381 V 40 w(b)s(essel)p 2451 2381 V 39
-w(In)p 2574 2381 V 40 w(scaled)p 2851 2381 V 41 w(arra)m(y\(in)m(t,in)m
-(t,double,&v)-5 b(ar)p 3883 2381 V 42 w(out\))150 2491
-y(gsl)p 262 2491 V 41 w(sf)p 367 2491 V 39 w(b)s(essel)p
-637 2491 V 40 w(K0)p 793 2491 V 40 w(e)643 b(Y)112 b(gsl)p
-1802 2491 V 40 w(sf)p 1906 2491 V 40 w(b)s(essel)p 2177
-2491 V 40 w(K0\(dbl)p 2495 2491 V 39 w(expr\))150 2600
-y(gsl)p 262 2600 V 41 w(sf)p 367 2600 V 39 w(b)s(essel)p
-637 2600 V 40 w(K1)p 793 2600 V 40 w(e)643 b(Y)112 b(gsl)p
-1802 2600 V 40 w(sf)p 1906 2600 V 40 w(b)s(essel)p 2177
-2600 V 40 w(K1\(dbl)p 2495 2600 V 39 w(expr\))150 2710
-y(gsl)p 262 2710 V 41 w(sf)p 367 2710 V 39 w(b)s(essel)p
-637 2710 V 40 w(Kn)p 799 2710 V 39 w(e)638 b(Y)112 b(gsl)p
-1802 2710 V 40 w(sf)p 1906 2710 V 40 w(b)s(essel)p 2177
-2710 V 40 w(Kn\(in)m(t)p 2482 2710 V 40 w(expr,dbl)p
-2849 2710 V 39 w(expr\))150 2819 y(gsl)p 262 2819 V 41
-w(sf)p 367 2819 V 39 w(b)s(essel)p 637 2819 V 40 w(Kn)p
-799 2819 V 39 w(arra)m(y)471 b(Y)112 b(status=gsl)p 2111
-2819 V 40 w(sf)p 2215 2819 V 40 w(b)s(essel)p 2486 2819
-V 40 w(Kn)p 2648 2819 V 39 w(arra)m(y\(in)m(t,in)m(t,double,&v)-5
-b(ar)p 3678 2819 V 42 w(out\))150 2929 y(gsl)p 262 2929
-V 41 w(sf)p 367 2929 V 39 w(b)s(essel)p 637 2929 V 40
-w(K0)p 793 2929 V 40 w(scaled)p 1070 2929 V 41 w(e)365
-b(Y)112 b(gsl)p 1802 2929 V 40 w(sf)p 1906 2929 V 40
-w(b)s(essel)p 2177 2929 V 40 w(K0)p 2333 2929 V 40 w(scaled\(dbl)p
-2772 2929 V 40 w(expr\))150 3039 y(gsl)p 262 3039 V 41
-w(sf)p 367 3039 V 39 w(b)s(essel)p 637 3039 V 40 w(K1)p
-793 3039 V 40 w(scaled)p 1070 3039 V 41 w(e)365 b(Y)112
-b(gsl)p 1802 3039 V 40 w(sf)p 1906 3039 V 40 w(b)s(essel)p
-2177 3039 V 40 w(K1)p 2333 3039 V 40 w(scaled\(dbl)p
-2772 3039 V 40 w(expr\))150 3148 y(gsl)p 262 3148 V 41
-w(sf)p 367 3148 V 39 w(b)s(essel)p 637 3148 V 40 w(Kn)p
-799 3148 V 39 w(scaled)p 1075 3148 V 41 w(e)360 b(Y)112
-b(gsl)p 1802 3148 V 40 w(sf)p 1906 3148 V 40 w(b)s(essel)p
-2177 3148 V 40 w(Kn)p 2339 3148 V 39 w(scaled\(in)m(t)p
-2758 3148 V 42 w(expr,dbl)p 3127 3148 V 39 w(expr\))150
-3258 y(gsl)p 262 3258 V 41 w(sf)p 367 3258 V 39 w(b)s(essel)p
-637 3258 V 40 w(Kn)p 799 3258 V 39 w(scaled)p 1075 3258
-V 41 w(arra)m(y)193 b(Y)112 b(status=gsl)p 2111 3258
-V 40 w(sf)p 2215 3258 V 40 w(b)s(essel)p 2486 3258 V
-40 w(Kn)p 2648 3258 V 39 w(scaled)p 2924 3258 V 41 w(arra)m(y\(in)m
-(t,in)m(t,double,&v)-5 b(ar)p 3956 3258 V 42 w(out\))150
-3367 y(gsl)p 262 3367 V 41 w(sf)p 367 3367 V 39 w(b)s(essel)p
-637 3367 V 40 w(j0)p 750 3367 V 40 w(e)686 b(Y)112 b(gsl)p
-1802 3367 V 40 w(sf)p 1906 3367 V 40 w(b)s(essel)p 2177
-3367 V 40 w(J0\(dbl)p 2471 3367 V 39 w(expr\))150 3477
-y(gsl)p 262 3477 V 41 w(sf)p 367 3477 V 39 w(b)s(essel)p
-637 3477 V 40 w(j1)p 750 3477 V 40 w(e)686 b(Y)112 b(gsl)p
-1802 3477 V 40 w(sf)p 1906 3477 V 40 w(b)s(essel)p 2177
-3477 V 40 w(J1\(dbl)p 2471 3477 V 39 w(expr\))150 3587
-y(gsl)p 262 3587 V 41 w(sf)p 367 3587 V 39 w(b)s(essel)p
-637 3587 V 40 w(j2)p 750 3587 V 40 w(e)686 b(Y)112 b(gsl)p
-1802 3587 V 40 w(sf)p 1906 3587 V 40 w(b)s(essel)p 2177
-3587 V 40 w(j2\(dbl)p 2452 3587 V 40 w(expr\))150 3696
-y(gsl)p 262 3696 V 41 w(sf)p 367 3696 V 39 w(b)s(essel)p
-637 3696 V 40 w(jl)p 730 3696 V 40 w(e)706 b(Y)112 b(gsl)p
-1802 3696 V 40 w(sf)p 1906 3696 V 40 w(b)s(essel)p 2177
-3696 V 40 w(jl\(in)m(t)p 2413 3696 V 41 w(expr,dbl)p
-2781 3696 V 39 w(expr\))150 3806 y(gsl)p 262 3806 V 41
-w(sf)p 367 3806 V 39 w(b)s(essel)p 637 3806 V 40 w(jl)p
-730 3806 V 40 w(arra)m(y)539 b(Y)112 b(status=gsl)p 2111
-3806 V 40 w(sf)p 2215 3806 V 40 w(b)s(essel)p 2486 3806
-V 40 w(jl)p 2579 3806 V 40 w(arra)m(y\(in)m(t,double,&v)-5
-b(ar)p 3477 3806 V 41 w(out\))150 3915 y(gsl)p 262 3915
-V 41 w(sf)p 367 3915 V 39 w(b)s(essel)p 637 3915 V 40
-w(jl)p 730 3915 V 40 w(steed)p 972 3915 V 41 w(arra)m(y)296
-b(Y)112 b(gsl)p 1802 3915 V 40 w(sf)p 1906 3915 V 40
-w(b)s(essel)p 2177 3915 V 40 w(jl)p 2270 3915 V 40 w(steed)p
-2512 3915 V 40 w(arra)m(y)150 4025 y(gsl)p 262 4025 V
-41 w(sf)p 367 4025 V 39 w(b)s(essel)p 637 4025 V 40 w(y0)p
-770 4025 V 40 w(e)666 b(Y)112 b(gsl)p 1802 4025 V 40
-w(sf)p 1906 4025 V 40 w(b)s(essel)p 2177 4025 V 40 w(Y0\(dbl)p
-2492 4025 V 40 w(expr\))150 4134 y(gsl)p 262 4134 V 41
-w(sf)p 367 4134 V 39 w(b)s(essel)p 637 4134 V 40 w(y1)p
-770 4134 V 40 w(e)666 b(Y)112 b(gsl)p 1802 4134 V 40
-w(sf)p 1906 4134 V 40 w(b)s(essel)p 2177 4134 V 40 w(Y1\(dbl)p
-2492 4134 V 40 w(expr\))150 4244 y(gsl)p 262 4244 V 41
-w(sf)p 367 4244 V 39 w(b)s(essel)p 637 4244 V 40 w(y2)p
-770 4244 V 40 w(e)666 b(Y)112 b(gsl)p 1802 4244 V 40
-w(sf)p 1906 4244 V 40 w(b)s(essel)p 2177 4244 V 40 w(y2\(dbl)p
-2472 4244 V 40 w(expr\))150 4354 y(gsl)p 262 4354 V 41
-w(sf)p 367 4354 V 39 w(b)s(essel)p 637 4354 V 40 w(yl)p
-750 4354 V 40 w(e)686 b(Y)112 b(gsl)p 1802 4354 V 40
-w(sf)p 1906 4354 V 40 w(b)s(essel)p 2177 4354 V 40 w(yl\(in)m(t)p
-2433 4354 V 41 w(expr,dbl)p 2801 4354 V 39 w(expr\))150
-4463 y(gsl)p 262 4463 V 41 w(sf)p 367 4463 V 39 w(b)s(essel)p
-637 4463 V 40 w(yl)p 750 4463 V 40 w(arra)m(y)519 b(Y)112
-b(status=gsl)p 2111 4463 V 40 w(sf)p 2215 4463 V 40 w(b)s(essel)p
-2486 4463 V 40 w(yl)p 2599 4463 V 40 w(arra)m(y\(in)m(t,double,&v)-5
-b(ar)p 3497 4463 V 41 w(out\))150 4573 y(gsl)p 262 4573
-V 41 w(sf)p 367 4573 V 39 w(b)s(essel)p 637 4573 V 40
-w(i0)p 747 4573 V 41 w(scaled)p 1025 4573 V 41 w(e)410
-b(Y)112 b(gsl)p 1802 4573 V 40 w(sf)p 1906 4573 V 40
-w(b)s(essel)p 2177 4573 V 40 w(I0)p 2295 4573 V 40 w(scaled\(dbl)p
-2734 4573 V 40 w(expr\))150 4682 y(gsl)p 262 4682 V 41
-w(sf)p 367 4682 V 39 w(b)s(essel)p 637 4682 V 40 w(i1)p
-747 4682 V 41 w(scaled)p 1025 4682 V 41 w(e)410 b(Y)112
-b(gsl)p 1802 4682 V 40 w(sf)p 1906 4682 V 40 w(b)s(essel)p
-2177 4682 V 40 w(I1)p 2295 4682 V 40 w(scaled\(dbl)p
-2734 4682 V 40 w(expr\))150 4792 y(gsl)p 262 4792 V 41
-w(sf)p 367 4792 V 39 w(b)s(essel)p 637 4792 V 40 w(i2)p
-747 4792 V 41 w(scaled)p 1025 4792 V 41 w(e)410 b(Y)112
-b(gsl)p 1802 4792 V 40 w(sf)p 1906 4792 V 40 w(b)s(essel)p
-2177 4792 V 40 w(i2)p 2287 4792 V 40 w(scaled\(dbl)p
-2726 4792 V 41 w(expr\))150 4902 y(gsl)p 262 4902 V 41
-w(sf)p 367 4902 V 39 w(b)s(essel)p 637 4902 V 40 w(il)p
-727 4902 V 41 w(scaled)p 1005 4902 V 40 w(e)431 b(Y)112
-b(gsl)p 1802 4902 V 40 w(sf)p 1906 4902 V 40 w(b)s(essel)p
-2177 4902 V 40 w(il)p 2267 4902 V 40 w(scaled\(in)m(t)p
-2687 4902 V 42 w(expr,dbl)p 3056 4902 V 39 w(expr\))150
-5011 y(gsl)p 262 5011 V 41 w(sf)p 367 5011 V 39 w(b)s(essel)p
-637 5011 V 40 w(il)p 727 5011 V 41 w(scaled)p 1005 5011
-V 40 w(arra)m(y)264 b(Y)112 b(status=gsl)p 2111 5011
-V 40 w(sf)p 2215 5011 V 40 w(b)s(essel)p 2486 5011 V
-40 w(il)p 2576 5011 V 40 w(scaled)p 2853 5011 V 41 w(arra)m(y\(in)m
-(t,double,&v)-5 b(ar)p 3752 5011 V 41 w(out\))150 5121
-y(gsl)p 262 5121 V 41 w(sf)p 367 5121 V 39 w(b)s(essel)p
-637 5121 V 40 w(k0)p 770 5121 V 40 w(scaled)p 1047 5121
-V 41 w(e)388 b(Y)112 b(gsl)p 1802 5121 V 40 w(sf)p 1906
-5121 V 40 w(b)s(essel)p 2177 5121 V 40 w(K0)p 2333 5121
-V 40 w(scaled\(dbl)p 2772 5121 V 40 w(expr\))150 5230
-y(gsl)p 262 5230 V 41 w(sf)p 367 5230 V 39 w(b)s(essel)p
-637 5230 V 40 w(k1)p 770 5230 V 40 w(scaled)p 1047 5230
-V 41 w(e)388 b(Y)112 b(gsl)p 1802 5230 V 40 w(sf)p 1906
-5230 V 40 w(b)s(essel)p 2177 5230 V 40 w(K1)p 2333 5230
-V 40 w(scaled\(dbl)p 2772 5230 V 40 w(expr\))150 5340
-y(gsl)p 262 5340 V 41 w(sf)p 367 5340 V 39 w(b)s(essel)p
-637 5340 V 40 w(k2)p 770 5340 V 40 w(scaled)p 1047 5340
-V 41 w(e)388 b(Y)112 b(gsl)p 1802 5340 V 40 w(sf)p 1906
-5340 V 40 w(b)s(essel)p 2177 5340 V 40 w(k2)p 2310 5340
-V 40 w(scaled\(dbl)p 2749 5340 V 41 w(expr\))p eop end
-%%Page: 100 102
-TeXDict begin 100 101 bop 150 -116 a FD(100)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(gsl)p 262 299 28
-4 v 41 w(sf)p 367 299 V 39 w(b)s(essel)p 637 299 V 40
-w(kl)p 750 299 V 40 w(scaled)p 1027 299 V 41 w(e)408
-b(Y)112 b(gsl)p 1802 299 V 40 w(sf)p 1906 299 V 40 w(b)s(essel)p
-2177 299 V 40 w(kl)p 2290 299 V 40 w(scaled\(in)m(t)p
-2710 299 V 42 w(expr,dbl)p 3079 299 V 39 w(expr\))150
-408 y(gsl)p 262 408 V 41 w(sf)p 367 408 V 39 w(b)s(essel)p
-637 408 V 40 w(kl)p 750 408 V 40 w(scaled)p 1027 408
-V 41 w(arra)m(y)241 b(Y)112 b(status=gsl)p 2111 408 V
-40 w(sf)p 2215 408 V 40 w(b)s(essel)p 2486 408 V 40 w(kl)p
-2599 408 V 40 w(scaled)p 2876 408 V 41 w(arra)m(y\(in)m(t,double,&v)-5
-b(ar)p 3775 408 V 41 w(out\))150 518 y(gsl)p 262 518
-V 41 w(sf)p 367 518 V 39 w(b)s(essel)p 637 518 V 40 w(Jn)m(u)p
-823 518 V 39 w(e)614 b(Y)112 b(gsl)p 1802 518 V 40 w(sf)p
-1906 518 V 40 w(b)s(essel)p 2177 518 V 40 w(Jn)m(u\(dbl)p
-2525 518 V 38 w(expr,dbl)p 2890 518 V 40 w(expr\))150
-628 y(gsl)p 262 628 V 41 w(sf)p 367 628 V 39 w(b)s(essel)p
-637 628 V 40 w(Yn)m(u)p 844 628 V 40 w(e)592 b(Y)112
-b(gsl)p 1802 628 V 40 w(sf)p 1906 628 V 40 w(b)s(essel)p
-2177 628 V 40 w(Yn)m(u\(dbl)p 2546 628 V 39 w(expr,dbl)p
-2912 628 V 39 w(expr\))150 737 y(gsl)p 262 737 V 41 w(sf)p
-367 737 V 39 w(b)s(essel)p 637 737 V 40 w(sequence)p
-1023 737 V 40 w(Jn)m(u)p 1209 737 V 40 w(e)227 b(N)112
-b(gsl)p 1802 737 V 40 w(sf)p 1906 737 V 40 w(b)s(essel)p
-2177 737 V 40 w(sequence)p 2563 737 V 40 w(Jn)m(u)150
-847 y(gsl)p 262 847 V 41 w(sf)p 367 847 V 39 w(b)s(essel)p
-637 847 V 40 w(In)m(u)p 809 847 V 39 w(scaled)p 1085
-847 V 41 w(e)350 b(Y)112 b(gsl)p 1802 847 V 40 w(sf)p
-1906 847 V 40 w(b)s(essel)p 2177 847 V 40 w(In)m(u)p
-2349 847 V 39 w(scaled\(dbl)p 2787 847 V 40 w(expr,dbl)p
-3154 847 V 39 w(expr\))150 956 y(gsl)p 262 956 V 41 w(sf)p
-367 956 V 39 w(b)s(essel)p 637 956 V 40 w(In)m(u)p 809
-956 V 39 w(e)628 b(Y)112 b(gsl)p 1802 956 V 40 w(sf)p
-1906 956 V 40 w(b)s(essel)p 2177 956 V 40 w(In)m(u\(dbl)p
-2511 956 V 39 w(expr,dbl)p 2877 956 V 39 w(expr\))150
-1066 y(gsl)p 262 1066 V 41 w(sf)p 367 1066 V 39 w(b)s(essel)p
-637 1066 V 40 w(Kn)m(u)p 847 1066 V 39 w(scaled)p 1123
-1066 V 41 w(e)312 b(Y)112 b(gsl)p 1802 1066 V 40 w(sf)p
-1906 1066 V 40 w(b)s(essel)p 2177 1066 V 40 w(Kn)m(u)p
-2387 1066 V 39 w(scaled\(dbl)p 2825 1066 V 40 w(expr,dbl)p
-3192 1066 V 39 w(expr\))150 1176 y(gsl)p 262 1176 V 41
-w(sf)p 367 1176 V 39 w(b)s(essel)p 637 1176 V 40 w(Kn)m(u)p
-847 1176 V 39 w(e)590 b(Y)112 b(gsl)p 1802 1176 V 40
-w(sf)p 1906 1176 V 40 w(b)s(essel)p 2177 1176 V 40 w(Kn)m(u\(dbl)p
-2549 1176 V 38 w(expr,dbl)p 2914 1176 V 39 w(expr\))150
-1285 y(gsl)p 262 1285 V 41 w(sf)p 367 1285 V 39 w(b)s(essel)p
-637 1285 V 40 w(lnKn)m(u)p 923 1285 V 39 w(e)514 b(Y)112
-b(gsl)p 1802 1285 V 40 w(sf)p 1906 1285 V 40 w(b)s(essel)p
-2177 1285 V 40 w(lnKn)m(u\(dbl)p 2625 1285 V 38 w(expr,dbl)p
-2990 1285 V 39 w(expr\))150 1395 y(gsl)p 262 1395 V 41
-w(sf)p 367 1395 V 39 w(b)s(essel)p 637 1395 V 40 w(zero)p
-838 1395 V 41 w(J0)p 971 1395 V 40 w(e)465 b(Y)112 b(gsl)p
-1802 1395 V 40 w(sf)p 1906 1395 V 40 w(b)s(essel)p 2177
-1395 V 40 w(zero)p 2378 1395 V 41 w(J0\(uin)m(t)p 2705
-1395 V 40 w(expr\))150 1504 y(gsl)p 262 1504 V 41 w(sf)p
-367 1504 V 39 w(b)s(essel)p 637 1504 V 40 w(zero)p 838
-1504 V 41 w(J1)p 971 1504 V 40 w(e)465 b(Y)112 b(gsl)p
-1802 1504 V 40 w(sf)p 1906 1504 V 40 w(b)s(essel)p 2177
-1504 V 40 w(zero)p 2378 1504 V 41 w(J1\(uin)m(t)p 2705
-1504 V 40 w(expr\))150 1614 y(gsl)p 262 1614 V 41 w(sf)p
-367 1614 V 39 w(b)s(essel)p 637 1614 V 40 w(zero)p 838
-1614 V 41 w(Jn)m(u)p 1025 1614 V 39 w(e)412 b(N)112 b(gsl)p
-1802 1614 V 40 w(sf)p 1906 1614 V 40 w(b)s(essel)p 2177
-1614 V 40 w(zero)p 2378 1614 V 41 w(Jn)m(u)150 1724 y(gsl)p
-262 1724 V 41 w(sf)p 367 1724 V 39 w(clausen)p 694 1724
-V 41 w(e)741 b(Y)112 b(gsl)p 1802 1724 V 40 w(sf)p 1906
-1724 V 40 w(clausen\(dbl)p 2396 1724 V 40 w(expr\))150
-1833 y(gsl)p 262 1833 V 41 w(sf)p 367 1833 V 39 w(h)m(ydrogenicR)p
-902 1833 V 41 w(1)p 988 1833 V 40 w(e)448 b(N)112 b(gsl)p
-1802 1833 V 40 w(sf)p 1906 1833 V 40 w(h)m(ydrogenicR)p
-2442 1833 V 40 w(1)150 1943 y(gsl)p 262 1943 V 41 w(sf)p
-367 1943 V 39 w(h)m(ydrogenicR)p 902 1943 V 41 w(e)533
-b(N)112 b(gsl)p 1802 1943 V 40 w(sf)p 1906 1943 V 40
-w(h)m(ydrogenicR)150 2052 y(gsl)p 262 2052 V 41 w(sf)p
-367 2052 V 39 w(coulom)m(b)p 736 2052 V 41 w(w)m(a)m(v)m(e)p
-967 2052 V 42 w(F)m(G)p 1136 2052 V 41 w(e)299 b(N)112
-b(gsl)p 1802 2052 V 40 w(sf)p 1906 2052 V 40 w(coulom)m(b)p
-2276 2052 V 41 w(w)m(a)m(v)m(e)p 2507 2052 V 42 w(F)m(G)150
-2162 y(gsl)p 262 2162 V 41 w(sf)p 367 2162 V 39 w(coulom)m(b)p
-736 2162 V 41 w(w)m(a)m(v)m(e)p 967 2162 V 42 w(F)p 1068
-2162 V 40 w(arra)m(y)201 b(N)112 b(gsl)p 1802 2162 V
-40 w(sf)p 1906 2162 V 40 w(coulom)m(b)p 2276 2162 V 41
-w(w)m(a)m(v)m(e)p 2507 2162 V 42 w(F)p 2608 2162 V 40
-w(arra)m(y)150 2271 y(gsl)p 262 2271 V 41 w(sf)p 367
-2271 V 39 w(coulom)m(b)p 736 2271 V 41 w(w)m(a)m(v)m(e)p
-967 2271 V 42 w(F)m(G)p 1136 2271 V 41 w(arra)m(y)132
-b(N)112 b(gsl)p 1802 2271 V 40 w(sf)p 1906 2271 V 40
-w(coulom)m(b)p 2276 2271 V 41 w(w)m(a)m(v)m(e)p 2507
-2271 V 42 w(F)m(G)p 2676 2271 V 41 w(arra)m(y)150 2381
-y(gsl)p 262 2381 V 41 w(sf)p 367 2381 V 39 w(coulom)m(b)p
-736 2381 V 41 w(w)m(a)m(v)m(e)p 967 2381 V 42 w(F)m(Gp)p
-1187 2381 V 41 w(arra)m(y)81 b(N)112 b(gsl)p 1802 2381
-V 40 w(sf)p 1906 2381 V 40 w(coulom)m(b)p 2276 2381 V
-41 w(w)m(a)m(v)m(e)p 2507 2381 V 42 w(F)m(Gp)p 2727 2381
-V 40 w(arra)m(y)150 2491 y(gsl)p 262 2491 V 41 w(sf)p
-367 2491 V 39 w(coulom)m(b)p 736 2491 V 41 w(w)m(a)m(v)m(e)p
-967 2491 V 42 w(sphF)p 1206 2491 V 39 w(arra)m(y)64 b(N)112
-b(gsl)p 1802 2491 V 40 w(sf)p 1906 2491 V 40 w(coulom)m(b)p
-2276 2491 V 41 w(w)m(a)m(v)m(e)p 2507 2491 V 42 w(sphF)p
-2746 2491 V 39 w(arra)m(y)150 2600 y(gsl)p 262 2600 V
-41 w(sf)p 367 2600 V 39 w(coulom)m(b)p 736 2600 V 41
-w(CL)p 900 2600 V 39 w(e)537 b(N)112 b(gsl)p 1802 2600
-V 40 w(sf)p 1906 2600 V 40 w(coulom)m(b)p 2276 2600 V
-41 w(CL)150 2710 y(gsl)p 262 2710 V 41 w(sf)p 367 2710
-V 39 w(coulom)m(b)p 736 2710 V 41 w(CL)p 900 2710 V 39
-w(arra)m(y)370 b(N)112 b(gsl)p 1802 2710 V 40 w(sf)p
-1906 2710 V 40 w(coulom)m(b)p 2276 2710 V 41 w(CL)p 2440
-2710 V 39 w(arra)m(y)150 2819 y(gsl)p 262 2819 V 41 w(sf)p
-367 2819 V 39 w(coupling)p 739 2819 V 41 w(3j)p 853 2819
-V 40 w(e)583 b(N)112 b(gsl)p 1802 2819 V 40 w(sf)p 1906
-2819 V 40 w(coupling)p 2279 2819 V 40 w(3j)150 2929 y(gsl)p
-262 2929 V 41 w(sf)p 367 2929 V 39 w(coupling)p 739 2929
-V 41 w(6j)p 853 2929 V 40 w(e)583 b(N)112 b(gsl)p 1802
-2929 V 40 w(sf)p 1906 2929 V 40 w(coupling)p 2279 2929
-V 40 w(6j)150 3039 y(gsl)p 262 3039 V 41 w(sf)p 367 3039
-V 39 w(coupling)p 739 3039 V 41 w(RacahW)p 1121 3039
-V 41 w(e)314 b(N)112 b(gsl)p 1802 3039 V 40 w(sf)p 1906
-3039 V 40 w(coupling)p 2279 3039 V 40 w(RacahW)150 3148
-y(gsl)p 262 3148 V 41 w(sf)p 367 3148 V 39 w(coupling)p
-739 3148 V 41 w(9j)p 853 3148 V 40 w(e)583 b(N)112 b(gsl)p
-1802 3148 V 40 w(sf)p 1906 3148 V 40 w(coupling)p 2279
-3148 V 40 w(9j)150 3258 y(gsl)p 262 3258 V 41 w(sf)p
-367 3258 V 39 w(coupling)p 739 3258 V 41 w(6j)p 853 3258
-V 40 w(INCORRECT)p 1459 3258 V 38 w(e)-21 b(N)112 b(gsl)p
-1802 3258 V 40 w(sf)p 1906 3258 V 40 w(coupling)p 2279
-3258 V 40 w(6j)p 2392 3258 V 40 w(INCORRECT)150 3367
-y(gsl)p 262 3367 V 41 w(sf)p 367 3367 V 39 w(da)m(wson)p
-697 3367 V 40 w(e)739 b(Y)112 b(gsl)p 1802 3367 V 40
-w(sf)p 1906 3367 V 40 w(da)m(wson\(dbl)p 2399 3367 V
-39 w(expr\))150 3477 y(gsl)p 262 3477 V 41 w(sf)p 367
-3477 V 39 w(deb)m(y)m(e)p 630 3477 V 41 w(1)p 716 3477
-V 40 w(e)720 b(Y)112 b(gsl)p 1802 3477 V 40 w(sf)p 1906
-3477 V 40 w(deb)m(y)m(e)p 2170 3477 V 41 w(1\(dbl)p 2418
-3477 V 40 w(expr\))150 3587 y(gsl)p 262 3587 V 41 w(sf)p
-367 3587 V 39 w(deb)m(y)m(e)p 630 3587 V 41 w(2)p 716
-3587 V 40 w(e)720 b(Y)112 b(gsl)p 1802 3587 V 40 w(sf)p
-1906 3587 V 40 w(deb)m(y)m(e)p 2170 3587 V 41 w(2\(dbl)p
-2418 3587 V 40 w(expr\))150 3696 y(gsl)p 262 3696 V 41
-w(sf)p 367 3696 V 39 w(deb)m(y)m(e)p 630 3696 V 41 w(3)p
-716 3696 V 40 w(e)720 b(Y)112 b(gsl)p 1802 3696 V 40
-w(sf)p 1906 3696 V 40 w(deb)m(y)m(e)p 2170 3696 V 41
-w(3\(dbl)p 2418 3696 V 40 w(expr\))150 3806 y(gsl)p 262
-3806 V 41 w(sf)p 367 3806 V 39 w(deb)m(y)m(e)p 630 3806
-V 41 w(4)p 716 3806 V 40 w(e)720 b(Y)112 b(gsl)p 1802
-3806 V 40 w(sf)p 1906 3806 V 40 w(deb)m(y)m(e)p 2170
-3806 V 41 w(4\(dbl)p 2418 3806 V 40 w(expr\))150 3915
-y(gsl)p 262 3915 V 41 w(sf)p 367 3915 V 39 w(deb)m(y)m(e)p
-630 3915 V 41 w(5)p 716 3915 V 40 w(e)720 b(Y)112 b(gsl)p
-1802 3915 V 40 w(sf)p 1906 3915 V 40 w(deb)m(y)m(e)p
-2170 3915 V 41 w(5\(dbl)p 2418 3915 V 40 w(expr\))150
-4025 y(gsl)p 262 4025 V 41 w(sf)p 367 4025 V 39 w(deb)m(y)m(e)p
-630 4025 V 41 w(6)p 716 4025 V 40 w(e)720 b(Y)112 b(gsl)p
-1802 4025 V 40 w(sf)p 1906 4025 V 40 w(deb)m(y)m(e)p
-2170 4025 V 41 w(6\(dbl)p 2418 4025 V 40 w(expr\))150
-4134 y(gsl)p 262 4134 V 41 w(sf)p 367 4134 V 39 w(dilog)p
-597 4134 V 41 w(e)838 b(N)112 b(gsl)p 1802 4134 V 40
-w(sf)p 1906 4134 V 40 w(dilog)150 4244 y(gsl)p 262 4244
-V 41 w(sf)p 367 4244 V 39 w(complex)p 731 4244 V 41 w(dilog)p
-963 4244 V 41 w(xy)p 1100 4244 V 40 w(e)336 b(N)112 b(gsl)p
-1802 4244 V 40 w(sf)p 1906 4244 V 40 w(complex)p 2271
-4244 V 41 w(dilog)p 2503 4244 V 41 w(xy)p 2640 4244 V
-40 w(e)150 4354 y(gsl)p 262 4354 V 41 w(sf)p 367 4354
-V 39 w(complex)p 731 4354 V 41 w(dilog)p 963 4354 V 41
-w(e)472 b(N)112 b(gsl)p 1802 4354 V 40 w(sf)p 1906 4354
-V 40 w(complex)p 2271 4354 V 41 w(dilog)150 4463 y(gsl)p
-262 4463 V 41 w(sf)p 367 4463 V 39 w(complex)p 731 4463
-V 41 w(sp)s(ence)p 1033 4463 V 40 w(xy)p 1169 4463 V
-40 w(e)267 b(N)112 b(gsl)p 1802 4463 V 40 w(sf)p 1906
-4463 V 40 w(complex)p 2271 4463 V 41 w(sp)s(ence)p 2573
-4463 V 39 w(xy)p 2708 4463 V 40 w(e)150 4573 y(gsl)p
-262 4573 V 41 w(sf)p 367 4573 V 39 w(m)m(ultiply)p 739
-4573 V 41 w(e)696 b(N)112 b(gsl)p 1802 4573 V 40 w(sf)p
-1906 4573 V 40 w(m)m(ultiply)150 4682 y(gsl)p 262 4682
-V 41 w(sf)p 367 4682 V 39 w(m)m(ultiply)p 739 4682 V
-41 w(err)p 892 4682 V 39 w(e)545 b(N)112 b(gsl)p 1802
-4682 V 40 w(sf)p 1906 4682 V 40 w(m)m(ultiply)p 2279
-4682 V 40 w(err)150 4792 y(gsl)p 262 4792 V 41 w(sf)p
-367 4792 V 39 w(ellin)m(t)p 604 4792 V 42 w(Kcomp)p 929
-4792 V 40 w(e)507 b(Y)112 b(gsl)p 1802 4792 V 40 w(sf)p
-1906 4792 V 40 w(ellin)m(t)p 2144 4792 V 41 w(Kcomp\(dbl)p
-2630 4792 V 40 w(expr\))150 4902 y(gsl)p 262 4902 V 41
-w(sf)p 367 4902 V 39 w(ellin)m(t)p 604 4902 V 42 w(Ecomp)p
-920 4902 V 40 w(e)516 b(Y)112 b(gsl)p 1802 4902 V 40
-w(sf)p 1906 4902 V 40 w(ellin)m(t)p 2144 4902 V 41 w(Ecomp\(dbl)p
-2621 4902 V 40 w(expr\))150 5011 y(gsl)p 262 5011 V 41
-w(sf)p 367 5011 V 39 w(ellin)m(t)p 604 5011 V 42 w(Pcomp)p
-920 5011 V 40 w(e)516 b(Y)112 b(gsl)p 1802 5011 V 40
-w(sf)p 1906 5011 V 40 w(ellin)m(t)p 2144 5011 V 41 w(Pcomp\(dbl)p
-2621 5011 V 40 w(expr,dbl)p 2988 5011 V 39 w(expr\))150
-5121 y(gsl)p 262 5121 V 41 w(sf)p 367 5121 V 39 w(ellin)m(t)p
-604 5121 V 42 w(Dcomp)p 927 5121 V 40 w(e)509 b(Y)112
-b(gsl)p 1802 5121 V 40 w(sf)p 1906 5121 V 40 w(ellin)m(t)p
-2144 5121 V 41 w(Dcomp\(dbl)p 2628 5121 V 41 w(expr\))150
-5230 y(gsl)p 262 5230 V 41 w(sf)p 367 5230 V 39 w(ellin)m(t)p
-604 5230 V 42 w(F)p 705 5230 V 40 w(e)731 b(Y)112 b(gsl)p
-1802 5230 V 40 w(sf)p 1906 5230 V 40 w(ellin)m(t)p 2144
-5230 V 41 w(F\(dbl)p 2406 5230 V 40 w(expr,dbl)p 2773
-5230 V 39 w(expr\))150 5340 y(gsl)p 262 5340 V 41 w(sf)p
-367 5340 V 39 w(ellin)m(t)p 604 5340 V 42 w(E)p 708 5340
-V 40 w(e)728 b(Y)112 b(gsl)p 1802 5340 V 40 w(sf)p 1906
-5340 V 40 w(ellin)m(t)p 2144 5340 V 41 w(E\(dbl)p 2409
-5340 V 40 w(expr,dbl)p 2776 5340 V 39 w(expr\))p eop
-end
-%%Page: 101 103
-TeXDict begin 101 102 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(101)150
-299 y(gsl)p 262 299 28 4 v 41 w(sf)p 367 299 V 39 w(ellin)m(t)p
-604 299 V 42 w(P)p 708 299 V 40 w(e)728 b(Y)112 b(gsl)p
-1802 299 V 40 w(sf)p 1906 299 V 40 w(ellin)m(t)p 2144
-299 V 41 w(P\(dbl)p 2409 299 V 40 w(expr,dbl)p 2776 299
-V 39 w(expr,dbl)p 3142 299 V 39 w(expr\))150 408 y(gsl)p
-262 408 V 41 w(sf)p 367 408 V 39 w(ellin)m(t)p 604 408
-V 42 w(D)p 715 408 V 40 w(e)721 b(Y)112 b(gsl)p 1802
-408 V 40 w(sf)p 1906 408 V 40 w(ellin)m(t)p 2144 408
-V 41 w(D\(dbl)p 2416 408 V 40 w(expr,dbl)p 2783 408 V
-39 w(expr,dbl)p 3149 408 V 39 w(expr\))150 518 y(gsl)p
-262 518 V 41 w(sf)p 367 518 V 39 w(ellin)m(t)p 604 518
-V 42 w(R)m(C)p 776 518 V 40 w(e)660 b(Y)112 b(gsl)p 1802
-518 V 40 w(sf)p 1906 518 V 40 w(ellin)m(t)p 2144 518
-V 41 w(R)m(C\(dbl)p 2477 518 V 40 w(expr,dbl)p 2844 518
-V 39 w(expr\))150 628 y(gsl)p 262 628 V 41 w(sf)p 367
-628 V 39 w(ellin)m(t)p 604 628 V 42 w(RD)p 782 628 V
-40 w(e)654 b(Y)112 b(gsl)p 1802 628 V 40 w(sf)p 1906
-628 V 40 w(ellin)m(t)p 2144 628 V 41 w(RD\(dbl)p 2483
-628 V 40 w(expr,dbl)p 2850 628 V 39 w(expr,dbl)p 3216
-628 V 39 w(expr\))150 737 y(gsl)p 262 737 V 41 w(sf)p
-367 737 V 39 w(ellin)m(t)p 604 737 V 42 w(RF)p 772 737
-V 40 w(e)664 b(Y)112 b(gsl)p 1802 737 V 40 w(sf)p 1906
-737 V 40 w(ellin)m(t)p 2144 737 V 41 w(RF\(dbl)p 2473
-737 V 40 w(expr,dbl)p 2840 737 V 39 w(expr,dbl)p 3206
-737 V 39 w(expr\))150 847 y(gsl)p 262 847 V 41 w(sf)p
-367 847 V 39 w(ellin)m(t)p 604 847 V 42 w(RJ)p 760 847
-V 39 w(e)677 b(Y)112 b(gsl)p 1802 847 V 40 w(sf)p 1906
-847 V 40 w(ellin)m(t)p 2144 847 V 41 w(RJ\(dbl)p 2461
-847 V 40 w(expr,dbl)p 2828 847 V 39 w(expr,dbl)p 3194
-847 V 39 w(expr,dbl)p 3560 847 V 39 w(expr\))150 956
-y(gsl)p 262 956 V 41 w(sf)p 367 956 V 39 w(elljac)p 609
-956 V 42 w(e)825 b(N)112 b(gsl)p 1802 956 V 40 w(sf)p
-1906 956 V 40 w(elljac)150 1066 y(gsl)p 262 1066 V 41
-w(sf)p 367 1066 V 39 w(erfc)p 550 1066 V 40 w(e)886 b(Y)112
-b(gsl)p 1802 1066 V 40 w(sf)p 1906 1066 V 40 w(erfc\(dbl)p
-2252 1066 V 40 w(expr\))150 1176 y(gsl)p 262 1176 V 41
-w(sf)p 367 1176 V 39 w(log)p 521 1176 V 41 w(erfc)p 706
-1176 V 41 w(e)729 b(Y)112 b(gsl)p 1802 1176 V 40 w(sf)p
-1906 1176 V 40 w(log)p 2061 1176 V 41 w(erfc\(dbl)p 2408
-1176 V 40 w(expr\))150 1285 y(gsl)p 262 1285 V 41 w(sf)p
-367 1285 V 39 w(erf)p 510 1285 V 40 w(e)926 b(Y)112 b(gsl)p
-1802 1285 V 40 w(sf)p 1906 1285 V 40 w(erf\(dbl)p 2212
-1285 V 39 w(expr\))150 1395 y(gsl)p 262 1395 V 41 w(sf)p
-367 1395 V 39 w(erf)p 510 1395 V 40 w(Z)p 606 1395 V
-40 w(e)830 b(Y)112 b(gsl)p 1802 1395 V 40 w(sf)p 1906
-1395 V 40 w(erf)p 2050 1395 V 40 w(Z\(dbl)p 2308 1395
-V 39 w(expr\))150 1504 y(gsl)p 262 1504 V 41 w(sf)p 367
-1504 V 39 w(erf)p 510 1504 V 40 w(Q)p 621 1504 V 40 w(e)815
-b(Y)112 b(gsl)p 1802 1504 V 40 w(sf)p 1906 1504 V 40
-w(erf)p 2050 1504 V 40 w(Q\(dbl)p 2323 1504 V 39 w(expr\))150
-1614 y(gsl)p 262 1614 V 41 w(sf)p 367 1614 V 39 w(hazard)p
-674 1614 V 40 w(e)762 b(Y)112 b(gsl)p 1802 1614 V 40
-w(sf)p 1906 1614 V 40 w(hazard\(dbl)p 2376 1614 V 39
-w(expr\))150 1724 y(gsl)p 262 1724 V 41 w(sf)p 367 1724
-V 39 w(exp)p 545 1724 V 40 w(e)891 b(Y)112 b(gsl)p 1802
-1724 V 40 w(sf)p 1906 1724 V 40 w(exp\(dbl)p 2247 1724
-V 39 w(expr\))150 1833 y(gsl)p 262 1833 V 41 w(sf)p 367
-1833 V 39 w(exp)p 545 1833 V 40 w(e10)p 715 1833 V 41
-w(e)720 b(N)112 b(gsl)p 1802 1833 V 40 w(sf)p 1906 1833
-V 40 w(exp)p 2085 1833 V 40 w(e10)150 1943 y(gsl)p 262
-1943 V 41 w(sf)p 367 1943 V 39 w(exp)p 545 1943 V 40
-w(m)m(ult)p 769 1943 V 40 w(e)667 b(Y)112 b(gsl)p 1802
-1943 V 40 w(sf)p 1906 1943 V 40 w(exp)p 2085 1943 V 40
-w(m)m(ult\(dbl)p 2471 1943 V 40 w(expr,dbl)p 2838 1943
-V 39 w(expr\))150 2052 y(gsl)p 262 2052 V 41 w(sf)p 367
-2052 V 39 w(exp)p 545 2052 V 40 w(m)m(ult)p 769 2052
-V 40 w(e10)p 939 2052 V 42 w(e)495 b(N)112 b(gsl)p 1802
-2052 V 40 w(sf)p 1906 2052 V 40 w(exp)p 2085 2052 V 40
-w(m)m(ult)p 2309 2052 V 40 w(e10)150 2162 y(gsl)p 262
-2162 V 41 w(sf)p 367 2162 V 39 w(expm1)p 666 2162 V 40
-w(e)770 b(Y)112 b(gsl)p 1802 2162 V 40 w(sf)p 1906 2162
-V 40 w(expm1\(dbl)p 2368 2162 V 40 w(expr\))150 2271
-y(gsl)p 262 2271 V 41 w(sf)p 367 2271 V 39 w(exprel)p
-646 2271 V 40 w(e)790 b(Y)112 b(gsl)p 1802 2271 V 40
-w(sf)p 1906 2271 V 40 w(exprel\(dbl)p 2348 2271 V 40
-w(expr\))150 2381 y(gsl)p 262 2381 V 41 w(sf)p 367 2381
-V 39 w(exprel)p 646 2381 V 40 w(2)p 731 2381 V 41 w(e)704
-b(Y)112 b(gsl)p 1802 2381 V 40 w(sf)p 1906 2381 V 40
-w(exprel)p 2186 2381 V 40 w(2\(dbl)p 2433 2381 V 40 w(expr\))150
-2491 y(gsl)p 262 2491 V 41 w(sf)p 367 2491 V 39 w(exprel)p
-646 2491 V 40 w(n)p 737 2491 V 40 w(e)699 b(Y)112 b(gsl)p
-1802 2491 V 40 w(sf)p 1906 2491 V 40 w(exprel)p 2186
-2491 V 40 w(n\(in)m(t)p 2420 2491 V 40 w(expr,dbl)p 2787
-2491 V 39 w(expr\))150 2600 y(gsl)p 262 2600 V 41 w(sf)p
-367 2600 V 39 w(exp)p 545 2600 V 40 w(err)p 697 2600
-V 40 w(e)739 b(Y)112 b(gsl)p 1802 2600 V 40 w(sf)p 1906
-2600 V 40 w(exp)p 2085 2600 V 40 w(err\(dbl)p 2399 2600
-V 39 w(expr,dbl)p 2765 2600 V 39 w(expr\))150 2710 y(gsl)p
-262 2710 V 41 w(sf)p 367 2710 V 39 w(exp)p 545 2710 V
-40 w(err)p 697 2710 V 40 w(e10)p 867 2710 V 41 w(e)568
-b(N)112 b(gsl)p 1802 2710 V 40 w(sf)p 1906 2710 V 40
-w(exp)p 2085 2710 V 40 w(err)p 2237 2710 V 39 w(e10)150
-2819 y(gsl)p 262 2819 V 41 w(sf)p 367 2819 V 39 w(exp)p
-545 2819 V 40 w(m)m(ult)p 769 2819 V 40 w(err)p 921 2819
-V 40 w(e)515 b(N)112 b(gsl)p 1802 2819 V 40 w(sf)p 1906
-2819 V 40 w(exp)p 2085 2819 V 40 w(m)m(ult)p 2309 2819
-V 40 w(err)150 2929 y(gsl)p 262 2929 V 41 w(sf)p 367
-2929 V 39 w(exp)p 545 2929 V 40 w(m)m(ult)p 769 2929
-V 40 w(err)p 921 2929 V 40 w(e10)p 1091 2929 V 41 w(e)344
-b(N)112 b(gsl)p 1802 2929 V 40 w(sf)p 1906 2929 V 40
-w(exp)p 2085 2929 V 40 w(m)m(ult)p 2309 2929 V 40 w(err)p
-2461 2929 V 40 w(e10)150 3039 y(gsl)p 262 3039 V 41 w(sf)p
-367 3039 V 39 w(expin)m(t)p 653 3039 V 41 w(E1)p 801
-3039 V 40 w(e)635 b(Y)112 b(gsl)p 1802 3039 V 40 w(sf)p
-1906 3039 V 40 w(expin)m(t)p 2193 3039 V 40 w(E1\(dbl)p
-2502 3039 V 40 w(expr\))150 3148 y(gsl)p 262 3148 V 41
-w(sf)p 367 3148 V 39 w(expin)m(t)p 653 3148 V 41 w(E2)p
-801 3148 V 40 w(e)635 b(Y)112 b(gsl)p 1802 3148 V 40
-w(sf)p 1906 3148 V 40 w(expin)m(t)p 2193 3148 V 40 w(E2\(dbl)p
-2502 3148 V 40 w(expr\))150 3258 y(gsl)p 262 3258 V 41
-w(sf)p 367 3258 V 39 w(expin)m(t)p 653 3258 V 41 w(En)p
-807 3258 V 39 w(e)630 b(Y)112 b(gsl)p 1802 3258 V 40
-w(sf)p 1906 3258 V 40 w(expin)m(t)p 2193 3258 V 40 w(En\(in)m(t)p
-2489 3258 V 41 w(expr,dbl)p 2857 3258 V 39 w(expr\))150
-3367 y(gsl)p 262 3367 V 41 w(sf)p 367 3367 V 39 w(expin)m(t)p
-653 3367 V 41 w(E1)p 801 3367 V 40 w(scaled)p 1078 3367
-V 41 w(e)357 b(Y)112 b(gsl)p 1802 3367 V 40 w(sf)p 1906
-3367 V 40 w(expin)m(t)p 2193 3367 V 40 w(E1)p 2340 3367
-V 41 w(scaled\(dbl)p 2780 3367 V 40 w(expr\))150 3477
-y(gsl)p 262 3477 V 41 w(sf)p 367 3477 V 39 w(expin)m(t)p
-653 3477 V 41 w(E2)p 801 3477 V 40 w(scaled)p 1078 3477
-V 41 w(e)357 b(Y)112 b(gsl)p 1802 3477 V 40 w(sf)p 1906
-3477 V 40 w(expin)m(t)p 2193 3477 V 40 w(E2)p 2340 3477
-V 41 w(scaled\(dbl)p 2780 3477 V 40 w(expr\))150 3587
-y(gsl)p 262 3587 V 41 w(sf)p 367 3587 V 39 w(expin)m(t)p
-653 3587 V 41 w(En)p 807 3587 V 39 w(scaled)p 1083 3587
-V 41 w(e)352 b(Y)112 b(gsl)p 1802 3587 V 40 w(sf)p 1906
-3587 V 40 w(expin)m(t)p 2193 3587 V 40 w(En)p 2346 3587
-V 40 w(scaled\(in)m(t)p 2766 3587 V 42 w(expr,dbl)p 3135
-3587 V 39 w(expr\))150 3696 y(gsl)p 262 3696 V 41 w(sf)p
-367 3696 V 39 w(expin)m(t)p 653 3696 V 41 w(Ei)p 781
-3696 V 40 w(e)655 b(Y)112 b(gsl)p 1802 3696 V 40 w(sf)p
-1906 3696 V 40 w(expin)m(t)p 2193 3696 V 40 w(Ei\(dbl)p
-2482 3696 V 40 w(expr\))150 3806 y(gsl)p 262 3806 V 41
-w(sf)p 367 3806 V 39 w(expin)m(t)p 653 3806 V 41 w(Ei)p
-781 3806 V 40 w(scaled)p 1058 3806 V 41 w(e)377 b(Y)112
-b(gsl)p 1802 3806 V 40 w(sf)p 1906 3806 V 40 w(expin)m(t)p
-2193 3806 V 40 w(Ei)p 2320 3806 V 40 w(scaled\(dbl)p
-2759 3806 V 41 w(expr\))150 3915 y(gsl)p 262 3915 V 41
-w(sf)p 367 3915 V 39 w(Shi)p 533 3915 V 39 w(e)904 b(Y)112
-b(gsl)p 1802 3915 V 40 w(sf)p 1906 3915 V 40 w(Shi\(dbl)p
-2235 3915 V 39 w(expr\))150 4025 y(gsl)p 262 4025 V 41
-w(sf)p 367 4025 V 39 w(Chi)p 548 4025 V 40 w(e)888 b(Y)112
-b(gsl)p 1802 4025 V 40 w(sf)p 1906 4025 V 40 w(Chi\(dbl)p
-2250 4025 V 39 w(expr\))150 4134 y(gsl)p 262 4134 V 41
-w(sf)p 367 4134 V 39 w(expin)m(t)p 653 4134 V 41 w(3)p
-739 4134 V 40 w(e)697 b(Y)112 b(gsl)p 1802 4134 V 40
-w(sf)p 1906 4134 V 40 w(expin)m(t)p 2193 4134 V 40 w(3\(dbl)p
-2440 4134 V 40 w(expr\))150 4244 y(gsl)p 262 4244 V 41
-w(sf)p 367 4244 V 39 w(Si)p 482 4244 V 40 w(e)954 b(Y)112
-b(gsl)p 1802 4244 V 40 w(sf)p 1906 4244 V 40 w(Si\(dbl)p
-2184 4244 V 39 w(expr\))150 4354 y(gsl)p 262 4354 V 41
-w(sf)p 367 4354 V 39 w(Ci)p 497 4354 V 40 w(e)939 b(Y)112
-b(gsl)p 1802 4354 V 40 w(sf)p 1906 4354 V 40 w(Ci\(dbl)p
-2199 4354 V 39 w(expr\))150 4463 y(gsl)p 262 4463 V 41
-w(sf)p 367 4463 V 39 w(atanin)m(t)p 690 4463 V 42 w(e)744
-b(Y)112 b(gsl)p 1802 4463 V 40 w(sf)p 1906 4463 V 40
-w(atanin)m(t\(dbl)p 2392 4463 V 41 w(expr\))150 4573
-y(gsl)p 262 4573 V 41 w(sf)p 367 4573 V 39 w(fermi)p
-611 4573 V 40 w(dirac)p 848 4573 V 40 w(m1)p 1009 4573
-V 40 w(e)427 b(Y)112 b(gsl)p 1802 4573 V 40 w(sf)p 1906
-4573 V 40 w(fermi)p 2151 4573 V 40 w(dirac)p 2388 4573
-V 40 w(m1\(dbl)p 2711 4573 V 40 w(expr\))150 4682 y(gsl)p
-262 4682 V 41 w(sf)p 367 4682 V 39 w(fermi)p 611 4682
-V 40 w(dirac)p 848 4682 V 40 w(0)p 933 4682 V 41 w(e)502
-b(Y)112 b(gsl)p 1802 4682 V 40 w(sf)p 1906 4682 V 40
-w(fermi)p 2151 4682 V 40 w(dirac)p 2388 4682 V 40 w(0\(dbl)p
-2635 4682 V 40 w(expr\))150 4792 y(gsl)p 262 4792 V 41
-w(sf)p 367 4792 V 39 w(fermi)p 611 4792 V 40 w(dirac)p
-848 4792 V 40 w(1)p 933 4792 V 41 w(e)502 b(Y)112 b(gsl)p
-1802 4792 V 40 w(sf)p 1906 4792 V 40 w(fermi)p 2151 4792
-V 40 w(dirac)p 2388 4792 V 40 w(1\(dbl)p 2635 4792 V
-40 w(expr\))150 4902 y(gsl)p 262 4902 V 41 w(sf)p 367
-4902 V 39 w(fermi)p 611 4902 V 40 w(dirac)p 848 4902
-V 40 w(2)p 933 4902 V 41 w(e)502 b(Y)112 b(gsl)p 1802
-4902 V 40 w(sf)p 1906 4902 V 40 w(fermi)p 2151 4902 V
-40 w(dirac)p 2388 4902 V 40 w(2\(dbl)p 2635 4902 V 40
-w(expr\))150 5011 y(gsl)p 262 5011 V 41 w(sf)p 367 5011
-V 39 w(fermi)p 611 5011 V 40 w(dirac)p 848 5011 V 40
-w(in)m(t)p 996 5011 V 41 w(e)439 b(Y)112 b(gsl)p 1802
-5011 V 40 w(sf)p 1906 5011 V 40 w(fermi)p 2151 5011 V
-40 w(dirac)p 2388 5011 V 40 w(in)m(t\(in)m(t)p 2679 5011
-V 41 w(expr,dbl)p 3047 5011 V 39 w(expr\))150 5121 y(gsl)p
-262 5121 V 41 w(sf)p 367 5121 V 39 w(fermi)p 611 5121
-V 40 w(dirac)p 848 5121 V 40 w(mhalf)p 1113 5121 V 40
-w(e)323 b(Y)112 b(gsl)p 1802 5121 V 40 w(sf)p 1906 5121
-V 40 w(fermi)p 2151 5121 V 40 w(dirac)p 2388 5121 V 40
-w(mhalf\(dbl)p 2815 5121 V 39 w(expr\))150 5230 y(gsl)p
-262 5230 V 41 w(sf)p 367 5230 V 39 w(fermi)p 611 5230
-V 40 w(dirac)p 848 5230 V 40 w(half)p 1037 5230 V 40
-w(e)399 b(Y)112 b(gsl)p 1802 5230 V 40 w(sf)p 1906 5230
-V 40 w(fermi)p 2151 5230 V 40 w(dirac)p 2388 5230 V 40
-w(half\(dbl)p 2739 5230 V 39 w(expr\))150 5340 y(gsl)p
-262 5340 V 41 w(sf)p 367 5340 V 39 w(fermi)p 611 5340
-V 40 w(dirac)p 848 5340 V 40 w(3half)p 1082 5340 V 41
-w(e)353 b(Y)112 b(gsl)p 1802 5340 V 40 w(sf)p 1906 5340
-V 40 w(fermi)p 2151 5340 V 40 w(dirac)p 2388 5340 V 40
-w(3half\(dbl)p 2784 5340 V 40 w(expr\))p eop end
-%%Page: 102 104
-TeXDict begin 102 103 bop 150 -116 a FD(102)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(gsl)p 262 299 28
-4 v 41 w(sf)p 367 299 V 39 w(fermi)p 611 299 V 40 w(dirac)p
-848 299 V 40 w(inc)p 1004 299 V 40 w(0)p 1089 299 V 41
-w(e)346 b(Y)112 b(gsl)p 1802 299 V 40 w(sf)p 1906 299
-V 40 w(fermi)p 2151 299 V 40 w(dirac)p 2388 299 V 40
-w(inc)p 2544 299 V 40 w(0\(dbl)p 2791 299 V 40 w(expr,dbl)p
-3158 299 V 39 w(expr\))150 408 y(gsl)p 262 408 V 41 w(sf)p
-367 408 V 39 w(lngamma)p 769 408 V 41 w(e)666 b(Y)112
-b(gsl)p 1802 408 V 40 w(sf)p 1906 408 V 40 w(lngamma\(dbl)p
-2471 408 V 40 w(expr\))150 518 y(gsl)p 262 518 V 41 w(sf)p
-367 518 V 39 w(lngamma)p 769 518 V 41 w(sgn)p 942 518
-V 40 w(e)494 b(N)112 b(gsl)p 1802 518 V 40 w(sf)p 1906
-518 V 40 w(lngamma)p 2309 518 V 41 w(sgn)150 628 y(gsl)p
-262 628 V 41 w(sf)p 367 628 V 39 w(gamma)p 693 628 V
-41 w(e)742 b(Y)112 b(gsl)p 1802 628 V 40 w(sf)p 1906
-628 V 40 w(gamma\(dbl)p 2395 628 V 40 w(expr\))150 737
-y(gsl)p 262 737 V 41 w(sf)p 367 737 V 39 w(gammastar)p
-845 737 V 41 w(e)590 b(Y)112 b(gsl)p 1802 737 V 40 w(sf)p
-1906 737 V 40 w(gammastar\(dbl)p 2547 737 V 41 w(expr\))150
-847 y(gsl)p 262 847 V 41 w(sf)p 367 847 V 39 w(gammain)m(v)p
-814 847 V 41 w(e)621 b(Y)112 b(gsl)p 1802 847 V 40 w(sf)p
-1906 847 V 40 w(gammain)m(v\(dbl)p 2516 847 V 41 w(expr\))150
-956 y(gsl)p 262 956 V 41 w(sf)p 367 956 V 39 w(lngamma)p
-769 956 V 41 w(complex)p 1135 956 V 41 w(e)300 b(N)112
-b(gsl)p 1802 956 V 40 w(sf)p 1906 956 V 40 w(lngamma)p
-2309 956 V 41 w(complex)150 1066 y(gsl)p 262 1066 V 41
-w(sf)p 367 1066 V 39 w(ta)m(ylorco)s(e\013)p 818 1066
-V 43 w(e)615 b(Y)112 b(gsl)p 1802 1066 V 40 w(sf)p 1906
-1066 V 40 w(ta)m(ylorco)s(e\013\(in)m(t)p 2501 1066 V
-43 w(expr,dbl)p 2871 1066 V 39 w(expr\))150 1176 y(gsl)p
-262 1176 V 41 w(sf)p 367 1176 V 39 w(fact)p 554 1176
-V 41 w(e)881 b(Y)112 b(gsl)p 1802 1176 V 40 w(sf)p 1906
-1176 V 40 w(fact\(uin)m(t)p 2288 1176 V 41 w(expr\))150
-1285 y(gsl)p 262 1285 V 41 w(sf)p 367 1285 V 39 w(doublefact)p
-817 1285 V 41 w(e)618 b(Y)112 b(gsl)p 1802 1285 V 40
-w(sf)p 1906 1285 V 40 w(doublefact\(uin)m(t)p 2551 1285
-V 41 w(expr\))150 1395 y(gsl)p 262 1395 V 41 w(sf)p 367
-1395 V 39 w(lnfact)p 630 1395 V 41 w(e)805 b(Y)112 b(gsl)p
-1802 1395 V 40 w(sf)p 1906 1395 V 40 w(lnfact\(uin)m(t)p
-2364 1395 V 41 w(expr\))150 1504 y(gsl)p 262 1504 V 41
-w(sf)p 367 1504 V 39 w(lndoublefact)p 893 1504 V 41 w(e)542
-b(Y)112 b(gsl)p 1802 1504 V 40 w(sf)p 1906 1504 V 40
-w(lndoublefact\(uin)m(t)p 2627 1504 V 41 w(expr\))150
-1614 y(gsl)p 262 1614 V 41 w(sf)p 367 1614 V 39 w(lnc)m(ho)s(ose)p
-739 1614 V 41 w(e)696 b(N)112 b(gsl)p 1802 1614 V 40
-w(sf)p 1906 1614 V 40 w(lnc)m(ho)s(ose)150 1724 y(gsl)p
-262 1724 V 41 w(sf)p 367 1724 V 39 w(c)m(ho)s(ose)p 663
-1724 V 41 w(e)772 b(N)112 b(gsl)p 1802 1724 V 40 w(sf)p
-1906 1724 V 40 w(c)m(ho)s(ose)150 1833 y(gsl)p 262 1833
-V 41 w(sf)p 367 1833 V 39 w(lnp)s(o)s(c)m(h)p 672 1833
-V 39 w(e)765 b(Y)112 b(gsl)p 1802 1833 V 40 w(sf)p 1906
-1833 V 40 w(lnp)s(o)s(c)m(h\(dbl)p 2374 1833 V 39 w(expr,dbl)p
-2740 1833 V 39 w(expr\))150 1943 y(gsl)p 262 1943 V 41
-w(sf)p 367 1943 V 39 w(lnp)s(o)s(c)m(h)p 672 1943 V 39
-w(sgn)p 843 1943 V 40 w(e)593 b(N)112 b(gsl)p 1802 1943
-V 40 w(sf)p 1906 1943 V 40 w(lnp)s(o)s(c)m(h)p 2212 1943
-V 39 w(sgn)150 2052 y(gsl)p 262 2052 V 41 w(sf)p 367
-2052 V 39 w(p)s(o)s(c)m(h)p 596 2052 V 40 w(e)840 b(Y)112
-b(gsl)p 1802 2052 V 40 w(sf)p 1906 2052 V 40 w(p)s(o)s(c)m(h\(dbl)p
-2298 2052 V 39 w(expr,dbl)p 2664 2052 V 39 w(expr\))150
-2162 y(gsl)p 262 2162 V 41 w(sf)p 367 2162 V 39 w(p)s(o)s(c)m(hrel)p
-697 2162 V 40 w(e)739 b(Y)112 b(gsl)p 1802 2162 V 40
-w(sf)p 1906 2162 V 40 w(p)s(o)s(c)m(hrel\(dbl)p 2399
-2162 V 39 w(expr,dbl)p 2765 2162 V 39 w(expr\))150 2271
-y(gsl)p 262 2271 V 41 w(sf)p 367 2271 V 39 w(gamma)p
-693 2271 V 41 w(inc)p 850 2271 V 40 w(Q)p 961 2271 V
-40 w(e)475 b(Y)112 b(gsl)p 1802 2271 V 40 w(sf)p 1906
-2271 V 40 w(gamma)p 2233 2271 V 41 w(inc)p 2390 2271
-V 40 w(Q\(dbl)p 2663 2271 V 39 w(expr,dbl)p 3029 2271
-V 39 w(expr\))150 2381 y(gsl)p 262 2381 V 41 w(sf)p 367
-2381 V 39 w(gamma)p 693 2381 V 41 w(inc)p 850 2381 V
-40 w(P)p 952 2381 V 40 w(e)484 b(Y)112 b(gsl)p 1802 2381
-V 40 w(sf)p 1906 2381 V 40 w(gamma)p 2233 2381 V 41 w(inc)p
-2390 2381 V 40 w(P\(dbl)p 2654 2381 V 39 w(expr,dbl)p
-3020 2381 V 39 w(expr\))150 2491 y(gsl)p 262 2491 V 41
-w(sf)p 367 2491 V 39 w(gamma)p 693 2491 V 41 w(inc)p
-850 2491 V 40 w(e)586 b(Y)112 b(gsl)p 1802 2491 V 40
-w(sf)p 1906 2491 V 40 w(gamma)p 2233 2491 V 41 w(inc\(dbl)p
-2552 2491 V 40 w(expr,dbl)p 2919 2491 V 39 w(expr\))150
-2600 y(gsl)p 262 2600 V 41 w(sf)p 367 2600 V 39 w(ln)m(b)s(eta)p
-653 2600 V 41 w(e)782 b(Y)112 b(gsl)p 1802 2600 V 40
-w(sf)p 1906 2600 V 40 w(ln)m(b)s(eta\(dbl)p 2355 2600
-V 40 w(expr,dbl)p 2722 2600 V 39 w(expr\))150 2710 y(gsl)p
-262 2710 V 41 w(sf)p 367 2710 V 39 w(ln)m(b)s(eta)p 653
-2710 V 41 w(sgn)p 826 2710 V 40 w(e)610 b(N)112 b(gsl)p
-1802 2710 V 40 w(sf)p 1906 2710 V 40 w(ln)m(b)s(eta)p
-2193 2710 V 40 w(sgn)150 2819 y(gsl)p 262 2819 V 41 w(sf)p
-367 2819 V 39 w(b)s(eta)p 580 2819 V 40 w(e)856 b(Y)112
-b(gsl)p 1802 2819 V 40 w(sf)p 1906 2819 V 40 w(b)s(eta\(dbl)p
-2282 2819 V 40 w(expr,dbl)p 2649 2819 V 39 w(expr\))150
-2929 y(gsl)p 262 2929 V 41 w(sf)p 367 2929 V 39 w(b)s(eta)p
-580 2929 V 40 w(inc)p 736 2929 V 41 w(e)699 b(N)112 b(gsl)p
-1802 2929 V 40 w(sf)p 1906 2929 V 40 w(b)s(eta)p 2120
-2929 V 40 w(inc)150 3039 y(gsl)p 262 3039 V 41 w(sf)p
-367 3039 V 39 w(gegenp)s(oly)p 799 3039 V 41 w(1)p 885
-3039 V 41 w(e)550 b(Y)112 b(gsl)p 1802 3039 V 40 w(sf)p
-1906 3039 V 40 w(gegenp)s(oly)p 2339 3039 V 41 w(1\(dbl)p
-2587 3039 V 40 w(expr,dbl)p 2954 3039 V 39 w(expr\))150
-3148 y(gsl)p 262 3148 V 41 w(sf)p 367 3148 V 39 w(gegenp)s(oly)p
-799 3148 V 41 w(2)p 885 3148 V 41 w(e)550 b(Y)112 b(gsl)p
-1802 3148 V 40 w(sf)p 1906 3148 V 40 w(gegenp)s(oly)p
-2339 3148 V 41 w(2\(dbl)p 2587 3148 V 40 w(expr,dbl)p
-2954 3148 V 39 w(expr\))150 3258 y(gsl)p 262 3258 V 41
-w(sf)p 367 3258 V 39 w(gegenp)s(oly)p 799 3258 V 41 w(3)p
-885 3258 V 41 w(e)550 b(Y)112 b(gsl)p 1802 3258 V 40
-w(sf)p 1906 3258 V 40 w(gegenp)s(oly)p 2339 3258 V 41
-w(3\(dbl)p 2587 3258 V 40 w(expr,dbl)p 2954 3258 V 39
-w(expr\))150 3367 y(gsl)p 262 3367 V 41 w(sf)p 367 3367
-V 39 w(gegenp)s(oly)p 799 3367 V 41 w(n)p 891 3367 V
-40 w(e)545 b(N)112 b(gsl)p 1802 3367 V 40 w(sf)p 1906
-3367 V 40 w(gegenp)s(oly)p 2339 3367 V 41 w(n)150 3477
-y(gsl)p 262 3477 V 41 w(sf)p 367 3477 V 39 w(gegenp)s(oly)p
-799 3477 V 41 w(arra)m(y)469 b(Y)112 b(gsl)p 1802 3477
-V 40 w(sf)p 1906 3477 V 40 w(gegenp)s(oly)p 2339 3477
-V 41 w(arra)m(y)150 3587 y(gsl)p 262 3587 V 41 w(sf)p
-367 3587 V 39 w(h)m(yp)s(erg)p 677 3587 V 40 w(0F1)p
-866 3587 V 41 w(e)569 b(Y)112 b(gsl)p 1802 3587 V 40
-w(sf)p 1906 3587 V 40 w(h)m(yp)s(erg)p 2217 3587 V 39
-w(0F1\(dbl)p 2567 3587 V 41 w(expr,dbl)p 2935 3587 V
-39 w(expr\))150 3696 y(gsl)p 262 3696 V 41 w(sf)p 367
-3696 V 39 w(h)m(yp)s(erg)p 677 3696 V 40 w(1F1)p 866
-3696 V 41 w(in)m(t)p 1015 3696 V 41 w(e)420 b(Y)112 b(gsl)p
-1802 3696 V 40 w(sf)p 1906 3696 V 40 w(h)m(yp)s(erg)p
-2217 3696 V 39 w(1F1)p 2405 3696 V 42 w(in)m(t\(in)m(t)p
-2698 3696 V 41 w(expr,in)m(t)p 3047 3696 V 40 w(expr,dbl)p
-3414 3696 V 39 w(expr\))150 3806 y(gsl)p 262 3806 V 41
-w(sf)p 367 3806 V 39 w(h)m(yp)s(erg)p 677 3806 V 40 w(1F1)p
-866 3806 V 41 w(e)569 b(Y)112 b(gsl)p 1802 3806 V 40
-w(sf)p 1906 3806 V 40 w(h)m(yp)s(erg)p 2217 3806 V 39
-w(1F1\(dbl)p 2567 3806 V 41 w(expr,dbl)p 2935 3806 V
-39 w(expr,dbl)p 3301 3806 V 39 w(expr\))150 3915 y(gsl)p
-262 3915 V 41 w(sf)p 367 3915 V 39 w(h)m(yp)s(erg)p 677
-3915 V 40 w(U)p 785 3915 V 40 w(in)m(t)p 933 3915 V 40
-w(e)503 b(Y)112 b(gsl)p 1802 3915 V 40 w(sf)p 1906 3915
-V 40 w(h)m(yp)s(erg)p 2217 3915 V 39 w(U)p 2324 3915
-V 41 w(in)m(t\(in)m(t)p 2616 3915 V 41 w(expr,in)m(t)p
-2965 3915 V 40 w(expr,dbl)p 3332 3915 V 39 w(expr\))150
-4025 y(gsl)p 262 4025 V 41 w(sf)p 367 4025 V 39 w(h)m(yp)s(erg)p
-677 4025 V 40 w(U)p 785 4025 V 40 w(in)m(t)p 933 4025
-V 40 w(e10)p 1103 4025 V 42 w(e)331 b(N)112 b(gsl)p 1802
-4025 V 40 w(sf)p 1906 4025 V 40 w(h)m(yp)s(erg)p 2217
-4025 V 39 w(U)p 2324 4025 V 41 w(in)m(t)p 2473 4025 V
-40 w(e10)150 4134 y(gsl)p 262 4134 V 41 w(sf)p 367 4134
-V 39 w(h)m(yp)s(erg)p 677 4134 V 40 w(U)p 785 4134 V
-40 w(e)651 b(Y)112 b(gsl)p 1802 4134 V 40 w(sf)p 1906
-4134 V 40 w(h)m(yp)s(erg)p 2217 4134 V 39 w(U\(dbl)p
-2486 4134 V 40 w(expr,dbl)p 2853 4134 V 39 w(expr,dbl)p
-3219 4134 V 39 w(expr\))150 4244 y(gsl)p 262 4244 V 41
-w(sf)p 367 4244 V 39 w(h)m(yp)s(erg)p 677 4244 V 40 w(U)p
-785 4244 V 40 w(e10)p 955 4244 V 41 w(e)480 b(N)112 b(gsl)p
-1802 4244 V 40 w(sf)p 1906 4244 V 40 w(h)m(yp)s(erg)p
-2217 4244 V 39 w(U)p 2324 4244 V 41 w(e10)150 4354 y(gsl)p
-262 4354 V 41 w(sf)p 367 4354 V 39 w(h)m(yp)s(erg)p 677
-4354 V 40 w(2F1)p 866 4354 V 41 w(e)569 b(Y)112 b(gsl)p
-1802 4354 V 40 w(sf)p 1906 4354 V 40 w(h)m(yp)s(erg)p
-2217 4354 V 39 w(2F1\(dbl)p 2567 4354 V 41 w(expr,dbl)p
-2935 4354 V 39 w(expr,dbl)p 3301 4354 V 39 w(expr,dbl)p
-3667 4354 V 39 w(expr\))150 4463 y(gsl)p 262 4463 V 41
-w(sf)p 367 4463 V 39 w(h)m(yp)s(erg)p 677 4463 V 40 w(2F1)p
-866 4463 V 41 w(conj)p 1071 4463 V 40 w(e)365 b(Y)112
-b(gsl)p 1802 4463 V 40 w(sf)p 1906 4463 V 40 w(h)m(yp)s(erg)p
-2217 4463 V 39 w(2F1)p 2405 4463 V 42 w(conj\(dbl)p 2773
-4463 V 39 w(expr,dbl)p 3139 4463 V 39 w(expr,dbl)p 3505
-4463 V 39 w(expr,dbl)p 3871 4463 V 39 w(expr\))150 4573
-y(gsl)p 262 4573 V 41 w(sf)p 367 4573 V 39 w(h)m(yp)s(erg)p
-677 4573 V 40 w(2F1)p 866 4573 V 41 w(renorm)p 1191 4573
-V 39 w(e)246 b(Y)112 b(gsl)p 1802 4573 V 40 w(sf)p 1906
-4573 V 40 w(h)m(yp)s(erg)p 2217 4573 V 39 w(2F1)p 2405
-4573 V 42 w(renorm\(dbl)p 2893 4573 V 39 w(expr,dbl)p
-3259 4573 V 39 w(expr,dbl)p 3625 4573 V 39 w(expr,dbl)p
-3991 4573 V 39 w(expr\))150 4682 y(gsl)p 262 4682 V 41
-w(sf)p 367 4682 V 39 w(h)m(yp)s(erg)p 677 4682 V 40 w(2F1)p
-866 4682 V 41 w(conj)p 1071 4682 V 40 w(renorm)p 1395
-4682 V 39 w(e)42 b(Y)112 b(gsl)p 1802 4682 V 40 w(sf)p
-1906 4682 V 40 w(h)m(yp)s(erg)p 2217 4682 V 39 w(2F1)p
-2405 4682 V 42 w(conj)p 2611 4682 V 40 w(renorm\(dbl)p
-3097 4682 V 39 w(expr,dbl)p 3463 4682 V 39 w(expr,dbl)p
-3829 4682 V 39 w(expr,dbl)p 4195 4682 V 39 w(expr\))150
-4792 y(gsl)p 262 4792 V 41 w(sf)p 367 4792 V 39 w(h)m(yp)s(erg)p
-677 4792 V 40 w(2F0)p 866 4792 V 41 w(e)569 b(Y)112 b(gsl)p
-1802 4792 V 40 w(sf)p 1906 4792 V 40 w(h)m(yp)s(erg)p
-2217 4792 V 39 w(2F0\(dbl)p 2567 4792 V 41 w(expr,dbl)p
-2935 4792 V 39 w(expr,dbl)p 3301 4792 V 39 w(expr\))150
-4902 y(gsl)p 262 4902 V 41 w(sf)p 367 4902 V 39 w(laguerre)p
-724 4902 V 41 w(1)p 810 4902 V 40 w(e)626 b(Y)112 b(gsl)p
-1802 4902 V 40 w(sf)p 1906 4902 V 40 w(laguerre)p 2264
-4902 V 41 w(1\(dbl)p 2512 4902 V 40 w(expr,dbl)p 2879
-4902 V 39 w(expr\))150 5011 y(gsl)p 262 5011 V 41 w(sf)p
-367 5011 V 39 w(laguerre)p 724 5011 V 41 w(2)p 810 5011
-V 40 w(e)626 b(Y)112 b(gsl)p 1802 5011 V 40 w(sf)p 1906
-5011 V 40 w(laguerre)p 2264 5011 V 41 w(2\(dbl)p 2512
-5011 V 40 w(expr,dbl)p 2879 5011 V 39 w(expr\))150 5121
-y(gsl)p 262 5121 V 41 w(sf)p 367 5121 V 39 w(laguerre)p
-724 5121 V 41 w(3)p 810 5121 V 40 w(e)626 b(Y)112 b(gsl)p
-1802 5121 V 40 w(sf)p 1906 5121 V 40 w(laguerre)p 2264
-5121 V 41 w(3\(dbl)p 2512 5121 V 40 w(expr,dbl)p 2879
-5121 V 39 w(expr\))150 5230 y(gsl)p 262 5230 V 41 w(sf)p
-367 5230 V 39 w(laguerre)p 724 5230 V 41 w(n)p 816 5230
-V 39 w(e)621 b(Y)112 b(gsl)p 1802 5230 V 40 w(sf)p 1906
-5230 V 40 w(laguerre)p 2264 5230 V 41 w(n\(in)m(t)p 2499
-5230 V 40 w(expr,dbl)p 2866 5230 V 39 w(expr,dbl)p 3232
-5230 V 39 w(expr\))150 5340 y(gsl)p 262 5340 V 41 w(sf)p
-367 5340 V 39 w(lam)m(b)s(ert)p 714 5340 V 41 w(W0)p
-893 5340 V 40 w(e)543 b(Y)112 b(gsl)p 1802 5340 V 40
-w(sf)p 1906 5340 V 40 w(lam)m(b)s(ert)p 2254 5340 V 40
-w(W0\(dbl)p 2594 5340 V 41 w(expr\))p eop end
-%%Page: 103 105
-TeXDict begin 103 104 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(103)150
-299 y(gsl)p 262 299 28 4 v 41 w(sf)p 367 299 V 39 w(lam)m(b)s(ert)p
-714 299 V 41 w(Wm1)p 969 299 V 40 w(e)467 b(Y)112 b(gsl)p
-1802 299 V 40 w(sf)p 1906 299 V 40 w(lam)m(b)s(ert)p
-2254 299 V 40 w(Wm1\(dbl)p 2670 299 V 40 w(expr\))150
-408 y(gsl)p 262 408 V 41 w(sf)p 367 408 V 39 w(legendre)p
-734 408 V 41 w(Pl)p 862 408 V 40 w(e)574 b(Y)112 b(gsl)p
-1802 408 V 40 w(sf)p 1906 408 V 40 w(legendre)p 2274
-408 V 40 w(Pl\(in)m(t)p 2544 408 V 41 w(expr,dbl)p 2912
-408 V 39 w(expr\))150 518 y(gsl)p 262 518 V 41 w(sf)p
-367 518 V 39 w(legendre)p 734 518 V 41 w(Pl)p 862 518
-V 40 w(arra)m(y)407 b(Y)112 b(status=gsl)p 2111 518 V
-40 w(sf)p 2215 518 V 40 w(legendre)p 2583 518 V 40 w(Pl)p
-2710 518 V 41 w(arra)m(y\(in)m(t,double,&v)-5 b(ar)p
-3609 518 V 41 w(out\))150 628 y(gsl)p 262 628 V 41 w(sf)p
-367 628 V 39 w(legendre)p 734 628 V 41 w(Pl)p 862 628
-V 40 w(deriv)p 1102 628 V 40 w(arra)m(y)167 b(N)112 b(gsl)p
-1802 628 V 40 w(sf)p 1906 628 V 40 w(legendre)p 2274
-628 V 40 w(Pl)p 2401 628 V 41 w(deriv)p 2642 628 V 39
-w(arra)m(y)150 737 y(gsl)p 262 737 V 41 w(sf)p 367 737
-V 39 w(legendre)p 734 737 V 41 w(P1)p 882 737 V 40 w(e)554
-b(Y)112 b(gsl)p 1802 737 V 40 w(sf)p 1906 737 V 40 w(legendre)p
-2274 737 V 40 w(P1\(dbl)p 2583 737 V 40 w(expr\))150
-847 y(gsl)p 262 847 V 41 w(sf)p 367 847 V 39 w(legendre)p
-734 847 V 41 w(P2)p 882 847 V 40 w(e)554 b(Y)112 b(gsl)p
-1802 847 V 40 w(sf)p 1906 847 V 40 w(legendre)p 2274
-847 V 40 w(P2\(dbl)p 2583 847 V 40 w(expr\))150 956 y(gsl)p
-262 956 V 41 w(sf)p 367 956 V 39 w(legendre)p 734 956
-V 41 w(P3)p 882 956 V 40 w(e)554 b(Y)112 b(gsl)p 1802
-956 V 40 w(sf)p 1906 956 V 40 w(legendre)p 2274 956 V
-40 w(P3\(dbl)p 2583 956 V 40 w(expr\))150 1066 y(gsl)p
-262 1066 V 41 w(sf)p 367 1066 V 39 w(legendre)p 734 1066
-V 41 w(Q0)p 891 1066 V 40 w(e)545 b(Y)112 b(gsl)p 1802
-1066 V 40 w(sf)p 1906 1066 V 40 w(legendre)p 2274 1066
-V 40 w(Q0\(dbl)p 2592 1066 V 40 w(expr\))150 1176 y(gsl)p
-262 1176 V 41 w(sf)p 367 1176 V 39 w(legendre)p 734 1176
-V 41 w(Q1)p 891 1176 V 40 w(e)545 b(Y)112 b(gsl)p 1802
-1176 V 40 w(sf)p 1906 1176 V 40 w(legendre)p 2274 1176
-V 40 w(Q1\(dbl)p 2592 1176 V 40 w(expr\))150 1285 y(gsl)p
-262 1285 V 41 w(sf)p 367 1285 V 39 w(legendre)p 734 1285
-V 41 w(Ql)p 871 1285 V 40 w(e)565 b(Y)112 b(gsl)p 1802
-1285 V 40 w(sf)p 1906 1285 V 40 w(legendre)p 2274 1285
-V 40 w(Ql\(in)m(t)p 2553 1285 V 41 w(expr,dbl)p 2921
-1285 V 39 w(expr\))150 1395 y(gsl)p 262 1395 V 41 w(sf)p
-367 1395 V 39 w(legendre)p 734 1395 V 41 w(Plm)p 938
-1395 V 40 w(e)498 b(Y)112 b(gsl)p 1802 1395 V 40 w(sf)p
-1906 1395 V 40 w(legendre)p 2274 1395 V 40 w(Plm\(in)m(t)p
-2620 1395 V 41 w(expr,in)m(t)p 2969 1395 V 41 w(expr,dbl)p
-3337 1395 V 39 w(expr\))150 1504 y(gsl)p 262 1504 V 41
-w(sf)p 367 1504 V 39 w(legendre)p 734 1504 V 41 w(Plm)p
-938 1504 V 40 w(arra)m(y)331 b(Y)112 b(status=gsl)p 2111
-1504 V 40 w(sf)p 2215 1504 V 40 w(legendre)p 2583 1504
-V 40 w(Plm)p 2786 1504 V 40 w(arra)m(y\(in)m(t,in)m(t,double,&v)-5
-b(ar)p 3817 1504 V 43 w(out\))150 1614 y(gsl)p 262 1614
-V 41 w(sf)p 367 1614 V 39 w(legendre)p 734 1614 V 41
-w(Plm)p 938 1614 V 40 w(deriv)p 1178 1614 V 39 w(arra)m(y)92
-b(N)112 b(gsl)p 1802 1614 V 40 w(sf)p 1906 1614 V 40
-w(legendre)p 2274 1614 V 40 w(Plm)p 2477 1614 V 40 w(deriv)p
-2717 1614 V 40 w(arra)m(y)150 1724 y(gsl)p 262 1724 V
-41 w(sf)p 367 1724 V 39 w(legendre)p 734 1724 V 41 w(sphPlm)p
-1076 1724 V 38 w(e)362 b(Y)112 b(gsl)p 1802 1724 V 40
-w(sf)p 1906 1724 V 40 w(legendre)p 2274 1724 V 40 w(sphPlm\(in)m(t)p
-2758 1724 V 40 w(expr,in)m(t)p 3106 1724 V 40 w(expr,dbl)p
-3473 1724 V 39 w(expr\))150 1833 y(gsl)p 262 1833 V 41
-w(sf)p 367 1833 V 39 w(legendre)p 734 1833 V 41 w(sphPlm)p
-1076 1833 V 38 w(arra)m(y)195 b(Y)112 b(status=gsl)p
-2111 1833 V 40 w(sf)p 2215 1833 V 40 w(legendre)p 2583
-1833 V 40 w(sphPlm)p 2924 1833 V 39 w(arra)m(y\(in)m(t,in)m
-(t,double,&v)-5 b(ar)p 3954 1833 V 42 w(out\))150 1943
-y(gsl)p 262 1943 V 41 w(sf)p 367 1943 V 39 w(legendre)p
-734 1943 V 41 w(sphPlm)p 1076 1943 V 38 w(deriv)p 1314
-1943 V 40 w(arra)m(y)-45 b(N)112 b(gsl)p 1802 1943 V
-40 w(sf)p 1906 1943 V 40 w(legendre)p 2274 1943 V 40
-w(sphPlm)p 2615 1943 V 39 w(deriv)p 2854 1943 V 40 w(arra)m(y)150
-2052 y(gsl)p 262 2052 V 41 w(sf)p 367 2052 V 39 w(legendre)p
-734 2052 V 41 w(arra)m(y)p 982 2052 V 40 w(size)353 b(N)112
-b(gsl)p 1802 2052 V 40 w(sf)p 1906 2052 V 40 w(legendre)p
-2274 2052 V 40 w(arra)m(y)p 2521 2052 V 41 w(size)150
-2162 y(gsl)p 262 2162 V 41 w(sf)p 367 2162 V 39 w(conicalP)p
-739 2162 V 42 w(half)p 930 2162 V 40 w(e)506 b(Y)112
-b(gsl)p 1802 2162 V 40 w(sf)p 1906 2162 V 40 w(conicalP)p
-2279 2162 V 41 w(half\(dbl)p 2631 2162 V 40 w(expr,dbl)p
-2998 2162 V 39 w(expr\))150 2271 y(gsl)p 262 2271 V 41
-w(sf)p 367 2271 V 39 w(conicalP)p 739 2271 V 42 w(mhalf)p
-1006 2271 V 40 w(e)430 b(Y)112 b(gsl)p 1802 2271 V 40
-w(sf)p 1906 2271 V 40 w(conicalP)p 2279 2271 V 41 w(mhalf\(dbl)p
-2707 2271 V 40 w(expr,dbl)p 3074 2271 V 39 w(expr\))150
-2381 y(gsl)p 262 2381 V 41 w(sf)p 367 2381 V 39 w(conicalP)p
-739 2381 V 42 w(0)p 826 2381 V 40 w(e)610 b(Y)112 b(gsl)p
-1802 2381 V 40 w(sf)p 1906 2381 V 40 w(conicalP)p 2279
-2381 V 41 w(0\(dbl)p 2527 2381 V 41 w(expr,dbl)p 2895
-2381 V 39 w(expr\))150 2491 y(gsl)p 262 2491 V 41 w(sf)p
-367 2491 V 39 w(conicalP)p 739 2491 V 42 w(1)p 826 2491
-V 40 w(e)610 b(Y)112 b(gsl)p 1802 2491 V 40 w(sf)p 1906
-2491 V 40 w(conicalP)p 2279 2491 V 41 w(1\(dbl)p 2527
-2491 V 41 w(expr,dbl)p 2895 2491 V 39 w(expr\))150 2600
-y(gsl)p 262 2600 V 41 w(sf)p 367 2600 V 39 w(conicalP)p
-739 2600 V 42 w(sph)p 919 2600 V 39 w(reg)p 1079 2600
-V 40 w(e)357 b(Y)112 b(gsl)p 1802 2600 V 40 w(sf)p 1906
-2600 V 40 w(conicalP)p 2279 2600 V 41 w(sph)p 2458 2600
-V 39 w(reg\(in)m(t)p 2761 2600 V 42 w(expr,dbl)p 3130
-2600 V 39 w(expr,dbl)p 3496 2600 V 39 w(expr\))150 2710
-y(gsl)p 262 2710 V 41 w(sf)p 367 2710 V 39 w(conicalP)p
-739 2710 V 42 w(cyl)p 894 2710 V 40 w(reg)p 1055 2710
-V 41 w(e)380 b(Y)112 b(gsl)p 1802 2710 V 40 w(sf)p 1906
-2710 V 40 w(conicalP)p 2279 2710 V 41 w(cyl)p 2433 2710
-V 41 w(reg\(in)m(t)p 2738 2710 V 42 w(expr,dbl)p 3107
-2710 V 39 w(expr,dbl)p 3473 2710 V 39 w(expr\))150 2819
-y(gsl)p 262 2819 V 41 w(sf)p 367 2819 V 39 w(legendre)p
-734 2819 V 41 w(H3d)p 939 2819 V 40 w(0)p 1024 2819 V
-40 w(e)412 b(Y)112 b(gsl)p 1802 2819 V 40 w(sf)p 1906
-2819 V 40 w(legendre)p 2274 2819 V 40 w(H3d)p 2478 2819
-V 41 w(0\(dbl)p 2726 2819 V 40 w(expr,dbl)p 3093 2819
-V 39 w(expr\))150 2929 y(gsl)p 262 2929 V 41 w(sf)p 367
-2929 V 39 w(legendre)p 734 2929 V 41 w(H3d)p 939 2929
-V 40 w(1)p 1024 2929 V 40 w(e)412 b(Y)112 b(gsl)p 1802
-2929 V 40 w(sf)p 1906 2929 V 40 w(legendre)p 2274 2929
-V 40 w(H3d)p 2478 2929 V 41 w(1\(dbl)p 2726 2929 V 40
-w(expr,dbl)p 3093 2929 V 39 w(expr\))150 3039 y(gsl)p
-262 3039 V 41 w(sf)p 367 3039 V 39 w(legendre)p 734 3039
-V 41 w(H3d)p 939 3039 V 40 w(e)497 b(Y)112 b(gsl)p 1802
-3039 V 40 w(sf)p 1906 3039 V 40 w(legendre)p 2274 3039
-V 40 w(H3d\(in)m(t)p 2621 3039 V 41 w(expr,dbl)p 2989
-3039 V 39 w(expr,dbl)p 3355 3039 V 40 w(expr\))150 3148
-y(gsl)p 262 3148 V 41 w(sf)p 367 3148 V 39 w(legendre)p
-734 3148 V 41 w(H3d)p 939 3148 V 40 w(arra)m(y)330 b(N)112
-b(gsl)p 1802 3148 V 40 w(sf)p 1906 3148 V 40 w(legendre)p
-2274 3148 V 40 w(H3d)p 2478 3148 V 41 w(arra)m(y)150
-3258 y(gsl)p 262 3258 V 41 w(sf)p 367 3258 V 39 w(legendre)p
-734 3258 V 41 w(arra)m(y)p 982 3258 V 40 w(size)353 b(N)112
-b(gsl)p 1802 3258 V 40 w(sf)p 1906 3258 V 40 w(legendre)p
-2274 3258 V 40 w(arra)m(y)p 2521 3258 V 41 w(size)150
-3367 y(gsl)p 262 3367 V 41 w(sf)p 367 3367 V 39 w(log)p
-521 3367 V 41 w(e)914 b(Y)112 b(gsl)p 1802 3367 V 40
-w(sf)p 1906 3367 V 40 w(log\(dbl)p 2223 3367 V 41 w(expr\))150
-3477 y(gsl)p 262 3477 V 41 w(sf)p 367 3477 V 39 w(log)p
-521 3477 V 41 w(abs)p 694 3477 V 40 w(e)742 b(Y)112 b(gsl)p
-1802 3477 V 40 w(sf)p 1906 3477 V 40 w(log)p 2061 3477
-V 41 w(abs\(dbl)p 2396 3477 V 39 w(expr\))150 3587 y(gsl)p
-262 3587 V 41 w(sf)p 367 3587 V 39 w(complex)p 731 3587
-V 41 w(log)p 887 3587 V 41 w(e)548 b(N)112 b(gsl)p 1802
-3587 V 40 w(sf)p 1906 3587 V 40 w(complex)p 2271 3587
-V 41 w(log)150 3696 y(gsl)p 262 3696 V 41 w(sf)p 367
-3696 V 39 w(log)p 521 3696 V 41 w(1plusx)p 818 3696 V
-40 w(e)618 b(Y)112 b(gsl)p 1802 3696 V 40 w(sf)p 1906
-3696 V 40 w(log)p 2061 3696 V 41 w(1plusx\(dbl)p 2520
-3696 V 39 w(expr\))150 3806 y(gsl)p 262 3806 V 41 w(sf)p
-367 3806 V 39 w(log)p 521 3806 V 41 w(1plusx)p 818 3806
-V 40 w(mx)p 982 3806 V 40 w(e)454 b(Y)112 b(gsl)p 1802
-3806 V 40 w(sf)p 1906 3806 V 40 w(log)p 2061 3806 V 41
-w(1plusx)p 2358 3806 V 40 w(mx\(dbl)p 2684 3806 V 39
-w(expr\))150 3915 y(gsl)p 262 3915 V 41 w(sf)p 367 3915
-V 39 w(mathieu)p 729 3915 V 40 w(a)p 814 3915 V 41 w(arra)m(y)454
-b(N)112 b(gsl)p 1802 3915 V 40 w(sf)p 1906 3915 V 40
-w(mathieu)p 2269 3915 V 40 w(a)p 2354 3915 V 41 w(arra)m(y)150
-4025 y(gsl)p 262 4025 V 41 w(sf)p 367 4025 V 39 w(mathieu)p
-729 4025 V 40 w(b)p 820 4025 V 40 w(arra)m(y)449 b(N)112
-b(gsl)p 1802 4025 V 40 w(sf)p 1906 4025 V 40 w(mathieu)p
-2269 4025 V 40 w(b)p 2360 4025 V 40 w(arra)m(y)150 4134
-y(gsl)p 262 4134 V 41 w(sf)p 367 4134 V 39 w(mathieu)p
-729 4134 V 40 w(a)702 b(N)112 b(gsl)p 1802 4134 V 40
-w(sf)p 1906 4134 V 40 w(mathieu)p 2269 4134 V 40 w(a)150
-4244 y(gsl)p 262 4244 V 41 w(sf)p 367 4244 V 39 w(mathieu)p
-729 4244 V 40 w(b)696 b(N)112 b(gsl)p 1802 4244 V 40
-w(sf)p 1906 4244 V 40 w(mathieu)p 2269 4244 V 40 w(b)150
-4354 y(gsl)p 262 4354 V 41 w(sf)p 367 4354 V 39 w(mathieu)p
-729 4354 V 40 w(a)p 814 4354 V 41 w(co)s(e\013)480 b(N)112
-b(gsl)p 1802 4354 V 40 w(sf)p 1906 4354 V 40 w(mathieu)p
-2269 4354 V 40 w(a)p 2354 4354 V 41 w(co)s(e\013)150
-4463 y(gsl)p 262 4463 V 41 w(sf)p 367 4463 V 39 w(mathieu)p
-729 4463 V 40 w(b)p 820 4463 V 40 w(co)s(e\013)475 b(N)112
-b(gsl)p 1802 4463 V 40 w(sf)p 1906 4463 V 40 w(mathieu)p
-2269 4463 V 40 w(b)p 2360 4463 V 40 w(co)s(e\013)150
-4573 y(gsl)p 262 4573 V 41 w(sf)p 367 4573 V 39 w(mathieu)p
-729 4573 V 40 w(ce)667 b(N)112 b(gsl)p 1802 4573 V 40
-w(sf)p 1906 4573 V 40 w(mathieu)p 2269 4573 V 40 w(ce)150
-4682 y(gsl)p 262 4682 V 41 w(sf)p 367 4682 V 39 w(mathieu)p
-729 4682 V 40 w(se)671 b(N)112 b(gsl)p 1802 4682 V 40
-w(sf)p 1906 4682 V 40 w(mathieu)p 2269 4682 V 40 w(se)150
-4792 y(gsl)p 262 4792 V 41 w(sf)p 367 4792 V 39 w(mathieu)p
-729 4792 V 40 w(ce)p 849 4792 V 41 w(arra)m(y)419 b(N)112
-b(gsl)p 1802 4792 V 40 w(sf)p 1906 4792 V 40 w(mathieu)p
-2269 4792 V 40 w(ce)p 2389 4792 V 41 w(arra)m(y)150 4902
-y(gsl)p 262 4902 V 41 w(sf)p 367 4902 V 39 w(mathieu)p
-729 4902 V 40 w(se)p 845 4902 V 41 w(arra)m(y)423 b(N)112
-b(gsl)p 1802 4902 V 40 w(sf)p 1906 4902 V 40 w(mathieu)p
-2269 4902 V 40 w(se)p 2385 4902 V 40 w(arra)m(y)150 5011
-y(gsl)p 262 5011 V 41 w(sf)p 367 5011 V 39 w(mathieu)p
-729 5011 V 40 w(Mc)624 b(N)112 b(gsl)p 1802 5011 V 40
-w(sf)p 1906 5011 V 40 w(mathieu)p 2269 5011 V 40 w(Mc)150
-5121 y(gsl)p 262 5121 V 41 w(sf)p 367 5121 V 39 w(mathieu)p
-729 5121 V 40 w(Ms)628 b(N)112 b(gsl)p 1802 5121 V 40
-w(sf)p 1906 5121 V 40 w(mathieu)p 2269 5121 V 40 w(Ms)150
-5230 y(gsl)p 262 5230 V 41 w(sf)p 367 5230 V 39 w(mathieu)p
-729 5230 V 40 w(Mc)p 892 5230 V 41 w(arra)m(y)376 b(N)112
-b(gsl)p 1802 5230 V 40 w(sf)p 1906 5230 V 40 w(mathieu)p
-2269 5230 V 40 w(Mc)p 2432 5230 V 41 w(arra)m(y)150 5340
-y(gsl)p 262 5340 V 41 w(sf)p 367 5340 V 39 w(mathieu)p
-729 5340 V 40 w(Ms)p 888 5340 V 41 w(arra)m(y)380 b(N)112
-b(gsl)p 1802 5340 V 40 w(sf)p 1906 5340 V 40 w(mathieu)p
-2269 5340 V 40 w(Ms)p 2428 5340 V 40 w(arra)m(y)p eop
-end
-%%Page: 104 106
-TeXDict begin 104 105 bop 150 -116 a FD(104)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(gsl)p 262 299 28
-4 v 41 w(sf)p 367 299 V 39 w(p)s(o)m(w)p 568 299 V 40
-w(in)m(t)p 716 299 V 40 w(e)720 b(N)112 b(gsl)p 1802
-299 V 40 w(sf)p 1906 299 V 40 w(p)s(o)m(w)p 2108 299
-V 39 w(in)m(t)150 408 y(gsl)p 262 408 V 41 w(sf)p 367
-408 V 39 w(psi)p 518 408 V 40 w(in)m(t)p 666 408 V 40
-w(e)770 b(Y)112 b(gsl)p 1802 408 V 40 w(sf)p 1906 408
-V 40 w(psi)p 2058 408 V 39 w(in)m(t\(in)m(t)p 2348 408
-V 42 w(expr\))150 518 y(gsl)p 262 518 V 41 w(sf)p 367
-518 V 39 w(psi)p 518 518 V 40 w(e)918 b(Y)112 b(gsl)p
-1802 518 V 40 w(sf)p 1906 518 V 40 w(psi\(dbl)p 2220
-518 V 39 w(expr\))150 628 y(gsl)p 262 628 V 41 w(sf)p
-367 628 V 39 w(psi)p 518 628 V 40 w(1piy)p 727 628 V
-40 w(e)709 b(Y)112 b(gsl)p 1802 628 V 40 w(sf)p 1906
-628 V 40 w(psi)p 2058 628 V 39 w(1piy\(dbl)p 2428 628
-V 40 w(expr\))150 737 y(gsl)p 262 737 V 41 w(sf)p 367
-737 V 39 w(complex)p 731 737 V 41 w(psi)p 884 737 V 40
-w(e)552 b(N)112 b(gsl)p 1802 737 V 40 w(sf)p 1906 737
-V 40 w(complex)p 2271 737 V 41 w(psi)150 847 y(gsl)p
-262 847 V 41 w(sf)p 367 847 V 39 w(psi)p 518 847 V 40
-w(1)p 603 847 V 40 w(in)m(t)p 751 847 V 41 w(e)684 b(Y)112
-b(gsl)p 1802 847 V 40 w(sf)p 1906 847 V 40 w(psi)p 2058
-847 V 39 w(1)p 2142 847 V 41 w(in)m(t\(in)m(t)p 2434
-847 V 41 w(expr\))150 956 y(gsl)p 262 956 V 41 w(sf)p
-367 956 V 39 w(psi)p 518 956 V 40 w(1)p 603 956 V 40
-w(e)833 b(Y)112 b(gsl)p 1802 956 V 40 w(sf)p 1906 956
-V 40 w(psi)p 2058 956 V 39 w(1\(dbl)p 2304 956 V 41 w(expr\))150
-1066 y(gsl)p 262 1066 V 41 w(sf)p 367 1066 V 39 w(psi)p
-518 1066 V 40 w(n)p 609 1066 V 39 w(e)828 b(Y)112 b(gsl)p
-1802 1066 V 40 w(sf)p 1906 1066 V 40 w(psi)p 2058 1066
-V 39 w(n\(in)m(t)p 2291 1066 V 41 w(expr,dbl)p 2659 1066
-V 39 w(expr\))150 1176 y(gsl)p 262 1176 V 41 w(sf)p 367
-1176 V 39 w(sync)m(hrotron)p 877 1176 V 40 w(1)p 962
-1176 V 40 w(e)474 b(Y)112 b(gsl)p 1802 1176 V 40 w(sf)p
-1906 1176 V 40 w(sync)m(hrotron)p 2417 1176 V 40 w(1\(dbl)p
-2664 1176 V 40 w(expr\))150 1285 y(gsl)p 262 1285 V 41
-w(sf)p 367 1285 V 39 w(sync)m(hrotron)p 877 1285 V 40
-w(2)p 962 1285 V 40 w(e)474 b(Y)112 b(gsl)p 1802 1285
-V 40 w(sf)p 1906 1285 V 40 w(sync)m(hrotron)p 2417 1285
-V 40 w(2\(dbl)p 2664 1285 V 40 w(expr\))150 1395 y(gsl)p
-262 1395 V 41 w(sf)p 367 1395 V 39 w(transp)s(ort)p 779
-1395 V 39 w(2)p 863 1395 V 41 w(e)572 b(Y)112 b(gsl)p
-1802 1395 V 40 w(sf)p 1906 1395 V 40 w(transp)s(ort)p
-2319 1395 V 39 w(2\(dbl)p 2565 1395 V 40 w(expr\))150
-1504 y(gsl)p 262 1504 V 41 w(sf)p 367 1504 V 39 w(transp)s(ort)p
-779 1504 V 39 w(3)p 863 1504 V 41 w(e)572 b(Y)112 b(gsl)p
-1802 1504 V 40 w(sf)p 1906 1504 V 40 w(transp)s(ort)p
-2319 1504 V 39 w(3\(dbl)p 2565 1504 V 40 w(expr\))150
-1614 y(gsl)p 262 1614 V 41 w(sf)p 367 1614 V 39 w(transp)s(ort)p
-779 1614 V 39 w(4)p 863 1614 V 41 w(e)572 b(Y)112 b(gsl)p
-1802 1614 V 40 w(sf)p 1906 1614 V 40 w(transp)s(ort)p
-2319 1614 V 39 w(4\(dbl)p 2565 1614 V 40 w(expr\))150
-1724 y(gsl)p 262 1724 V 41 w(sf)p 367 1724 V 39 w(transp)s(ort)p
-779 1724 V 39 w(5)p 863 1724 V 41 w(e)572 b(Y)112 b(gsl)p
-1802 1724 V 40 w(sf)p 1906 1724 V 40 w(transp)s(ort)p
-2319 1724 V 39 w(5\(dbl)p 2565 1724 V 40 w(expr\))150
-1833 y(gsl)p 262 1833 V 41 w(sf)p 367 1833 V 39 w(sin)p
-518 1833 V 40 w(e)918 b(N)112 b(gsl)p 1802 1833 V 40
-w(sf)p 1906 1833 V 40 w(sin)150 1943 y(gsl)p 262 1943
-V 41 w(sf)p 367 1943 V 39 w(cos)p 527 1943 V 41 w(e)908
-b(N)112 b(gsl)p 1802 1943 V 40 w(sf)p 1906 1943 V 40
-w(cos)150 2052 y(gsl)p 262 2052 V 41 w(sf)p 367 2052
-V 39 w(h)m(yp)s(ot)p 636 2052 V 40 w(e)800 b(N)112 b(gsl)p
-1802 2052 V 40 w(sf)p 1906 2052 V 40 w(h)m(yp)s(ot)150
-2162 y(gsl)p 262 2162 V 41 w(sf)p 367 2162 V 39 w(complex)p
-731 2162 V 41 w(sin)p 884 2162 V 40 w(e)552 b(N)112 b(gsl)p
-1802 2162 V 40 w(sf)p 1906 2162 V 40 w(complex)p 2271
-2162 V 41 w(sin)150 2271 y(gsl)p 262 2271 V 41 w(sf)p
-367 2271 V 39 w(complex)p 731 2271 V 41 w(cos)p 893 2271
-V 41 w(e)542 b(N)112 b(gsl)p 1802 2271 V 40 w(sf)p 1906
-2271 V 40 w(complex)p 2271 2271 V 41 w(cos)150 2381 y(gsl)p
-262 2381 V 41 w(sf)p 367 2381 V 39 w(complex)p 731 2381
-V 41 w(logsin)p 999 2381 V 41 w(e)436 b(N)112 b(gsl)p
-1802 2381 V 40 w(sf)p 1906 2381 V 40 w(complex)p 2271
-2381 V 41 w(logsin)150 2491 y(gsl)p 262 2491 V 41 w(sf)p
-367 2491 V 39 w(sinc)p 558 2491 V 40 w(e)878 b(N)112
-b(gsl)p 1802 2491 V 40 w(sf)p 1906 2491 V 40 w(sinc)150
-2600 y(gsl)p 262 2600 V 41 w(sf)p 367 2600 V 39 w(lnsinh)p
-645 2600 V 39 w(e)792 b(N)112 b(gsl)p 1802 2600 V 40
-w(sf)p 1906 2600 V 40 w(lnsinh)150 2710 y(gsl)p 262 2710
-V 41 w(sf)p 367 2710 V 39 w(lncosh)p 654 2710 V 40 w(e)782
-b(N)112 b(gsl)p 1802 2710 V 40 w(sf)p 1906 2710 V 40
-w(lncosh)150 2819 y(gsl)p 262 2819 V 41 w(sf)p 367 2819
-V 39 w(p)s(olar)p 611 2819 V 40 w(to)p 731 2819 V 41
-w(rect)593 b(N)112 b(gsl)p 1802 2819 V 40 w(sf)p 1906
-2819 V 40 w(p)s(olar)p 2151 2819 V 40 w(to)p 2271 2819
-V 40 w(rect)150 2929 y(gsl)p 262 2929 V 41 w(sf)p 367
-2929 V 39 w(rect)p 557 2929 V 41 w(to)p 678 2929 V 41
-w(p)s(olar)592 b(N)112 b(gsl)p 1802 2929 V 40 w(sf)p
-1906 2929 V 40 w(rect)p 2097 2929 V 41 w(to)p 2218 2929
-V 40 w(p)s(olar)150 3039 y(gsl)p 262 3039 V 41 w(sf)p
-367 3039 V 39 w(sin)p 518 3039 V 40 w(err)p 670 3039
-V 39 w(e)767 b(N)112 b(gsl)p 1802 3039 V 40 w(sf)p 1906
-3039 V 40 w(sin)p 2058 3039 V 39 w(err)150 3148 y(gsl)p
-262 3148 V 41 w(sf)p 367 3148 V 39 w(cos)p 527 3148 V
-41 w(err)p 680 3148 V 40 w(e)756 b(N)112 b(gsl)p 1802
-3148 V 40 w(sf)p 1906 3148 V 40 w(cos)p 2067 3148 V 41
-w(err)150 3258 y(gsl)p 262 3258 V 41 w(sf)p 367 3258
-V 39 w(angle)p 612 3258 V 41 w(restrict)p 936 3258 V
-41 w(symm)p 1213 3258 V 39 w(e)224 b(N)112 b(gsl)p 1802
-3258 V 40 w(sf)p 1906 3258 V 40 w(angle)p 2152 3258 V
-41 w(restrict)p 2476 3258 V 41 w(symm)150 3367 y(gsl)p
-262 3367 V 41 w(sf)p 367 3367 V 39 w(angle)p 612 3367
-V 41 w(restrict)p 936 3367 V 41 w(p)s(os)p 1112 3367
-V 39 w(e)325 b(N)112 b(gsl)p 1802 3367 V 40 w(sf)p 1906
-3367 V 40 w(angle)p 2152 3367 V 41 w(restrict)p 2476
-3367 V 41 w(p)s(os)150 3477 y(gsl)p 262 3477 V 41 w(sf)p
-367 3477 V 39 w(angle)p 612 3477 V 41 w(restrict)p 936
-3477 V 41 w(symm)p 1213 3477 V 39 w(err)p 1364 3477 V
-40 w(e)72 b(N)112 b(gsl)p 1802 3477 V 40 w(sf)p 1906
-3477 V 40 w(angle)p 2152 3477 V 41 w(restrict)p 2476
-3477 V 41 w(symm)p 2753 3477 V 39 w(err)150 3587 y(gsl)p
-262 3587 V 41 w(sf)p 367 3587 V 39 w(angle)p 612 3587
-V 41 w(restrict)p 936 3587 V 41 w(p)s(os)p 1112 3587
-V 39 w(err)p 1263 3587 V 40 w(e)173 b(N)112 b(gsl)p 1802
-3587 V 40 w(sf)p 1906 3587 V 40 w(angle)p 2152 3587 V
-41 w(restrict)p 2476 3587 V 41 w(p)s(os)p 2652 3587 V
-39 w(err)150 3696 y(gsl)p 262 3696 V 41 w(sf)p 367 3696
-V 39 w(zeta)p 566 3696 V 42 w(in)m(t)p 716 3696 V 40
-w(e)720 b(Y)112 b(gsl)p 1802 3696 V 40 w(sf)p 1906 3696
-V 40 w(zeta)p 2106 3696 V 41 w(in)m(t\(in)m(t)p 2398
-3696 V 42 w(expr\))150 3806 y(gsl)p 262 3806 V 41 w(sf)p
-367 3806 V 39 w(zeta)p 566 3806 V 42 w(e)868 b(Y)112
-b(gsl)p 1802 3806 V 40 w(sf)p 1906 3806 V 40 w(zeta\(dbl)p
-2268 3806 V 41 w(expr\))150 3915 y(gsl)p 262 3915 V 41
-w(sf)p 367 3915 V 39 w(zetam1)p 687 3915 V 42 w(e)747
-b(Y)112 b(gsl)p 1802 3915 V 40 w(sf)p 1906 3915 V 40
-w(zetam1\(dbl)p 2389 3915 V 41 w(expr\))150 4025 y(gsl)p
-262 4025 V 41 w(sf)p 367 4025 V 39 w(zetam1)p 687 4025
-V 42 w(in)m(t)p 837 4025 V 41 w(e)598 b(Y)112 b(gsl)p
-1802 4025 V 40 w(sf)p 1906 4025 V 40 w(zetam1)p 2227
-4025 V 42 w(in)m(t\(in)m(t)p 2520 4025 V 41 w(expr\))150
-4134 y(gsl)p 262 4134 V 41 w(sf)p 367 4134 V 39 w(hzeta)p
-617 4134 V 41 w(e)818 b(Y)112 b(gsl)p 1802 4134 V 40
-w(sf)p 1906 4134 V 40 w(hzeta\(dbl)p 2319 4134 V 41 w(expr,dbl)p
-2687 4134 V 39 w(expr\))150 4244 y(gsl)p 262 4244 V 41
-w(sf)p 367 4244 V 39 w(eta)p 526 4244 V 41 w(in)m(t)p
-675 4244 V 41 w(e)760 b(Y)112 b(gsl)p 1802 4244 V 40
-w(sf)p 1906 4244 V 40 w(eta)p 2066 4244 V 41 w(in)m(t\(in)m(t)p
-2358 4244 V 42 w(expr\))150 4354 y(gsl)p 262 4354 V 41
-w(sf)p 367 4354 V 39 w(eta)p 526 4354 V 41 w(e)909 b(Y)112
-b(gsl)p 1802 4354 V 40 w(sf)p 1906 4354 V 40 w(eta\(dbl)p
-2228 4354 V 41 w(expr\))150 4581 y Fv(4.1.20)63 b(GSL)41
-b(in)m(terp)s(olation)150 4728 y FD(As)30 b(of)g(v)m(ersion)g(3.9.9)i
-(\(released)f(July)-8 b(,)30 b(2009\),)i FC(NCO)d FD(has)h(wrapp)s(ers)
-e(to)i(the)g FC(GSL)g FD(in)m(terp)s(olation)i(func-)150
-4838 y(tions.)150 5011 y(Giv)m(en)45 b(a)f(set)g(of)g(data)g(p)s(oin)m
-(ts)g(\(x1,y1\)...\(xn,)49 b(yn\))44 b(the)f FC(GSL)h
-FD(functions)f(computes)h(a)g(con)m(tin)m(uous)150 5121
-y(in)m(terp)s(olating)27 b(function)f FC(Y\(x\))h FD(suc)m(h)e(that)i
-FC(Y\(xi\))d(=)g(yi)p FD(.)39 b(The)25 b(in)m(terp)s(olation)i(is)f
-(piecewise)i(smo)s(oth,)f(and)150 5230 y(its)36 b(b)s(eha)m(vior)g(at)h
-(the)f(end-p)s(oin)m(ts)f(is)h(determined)g(b)m(y)f(the)i(t)m(yp)s(e)f
-(of)g(in)m(terp)s(olation)h(used.)56 b(F)-8 b(or)37 b(more)150
-5340 y(information)31 b(consult)f(the)h FC(GSL)f FD(man)m(ual.)p
-eop end
-%%Page: 105 107
-TeXDict begin 105 106 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(105)150
-299 y(In)m(terp)s(olation)28 b(with)f Fy(ncap2)f FD(is)h(a)h(t)m(w)m(o)
-g(stage)h(pro)s(cess.)39 b(In)27 b(the)g(\014rst)f(stage,)k(a)e(ram)f
-(v)-5 b(ariable)28 b(is)f(created)150 408 y(from)d(the)h(c)m(hosen)g
-(in)m(terp)s(olating)h(function)e(and)g(the)h(data)g(set.)39
-b(This)24 b(ram)g(v)-5 b(ariable)26 b(holds)e(in)g(memory)150
-518 y(a)k FC(GSL)g FD(in)m(terp)s(olation)h(ob)5 b(ject.)41
-b(In)26 b(the)i(second)g(stage,)i(p)s(oin)m(ts)e(along)g(the)g(in)m
-(terp)s(olating)h(function)f(are)150 628 y(calculated.)53
-b(If)33 b(y)m(ou)h(ha)m(v)m(e)h(a)f(v)m(ery)g(large)h(data)f(set)g(or)g
-(are)g(in)m(terp)s(olating)h(man)m(y)f(sets)g(then)f(consider)150
-737 y(deleting)e(the)g(ram)f(v)-5 b(ariable)31 b(when)f(it)h(is)f
-(redundan)m(t.)39 b(Use)31 b(the)g(command)f Fy(ram_delete\(var_nm\))p
-FD(.)150 913 y(A)g(simple)h(example)390 1088 y Fy
-(x_in[$lon]={1.0,2.0,3.0,)o(4.0})o(;)390 1198 y
-(y_in[$lon]={1.1,1.2,1.5,)o(1.8})o(;)390 1417 y(//)47
-b(Ram)g(variable)f(is)h(declared)e(and)i(defined)f(here)390
-1526 y(gsl_interp_cspline\(&ram_)o(sp,x)o(_in,)o(y_i)o(n\);)390
-1745 y(x_out[$lon_grd]={1.1,2.0)o(,3.0)o(,3.1)o(,3.)o(99};)390
-1965 y(y_out=gsl_spline_eval\(ra)o(m_sp)o(,x_o)o(ut\))o(;)390
-2074 y(y2=gsl_spline_eval\(ram_s)o(p,1.)o(3\);)390 2184
-y(y3=gsl_spline_eval\(ram_s)o(p,0.)o(0\);)390 2293 y
-(ram_delete\(ram_sp\);)390 2513 y(print\(y_out\);)140
-b(//)47 b(1.10472,)e(1.2,)i(1.4,)g(1.42658,)e(1.69680002)390
-2622 y(print\(y2\);)284 b(//)47 b(1.12454)390 2732 y(print\(y3\);)284
-b(//)47 b('_')150 3017 y FD(Note)31 b(in)f(the)g(ab)s(o)m(v)m(e)h
-(example)f(y3)g(is)g(set)h(to)f('missing)g(v)-5 b(alue')31
-b(b)s(ecause)f(0.0)h(isn't)f(within)f(the)h(input)f(X)150
-3126 y(range.)275 3302 y Fd(GSL)h Fk(In)m(terp)s(olation)i(T)m(yp)s(es)
-150 3411 y FD(All)f(the)g(in)m(terp)s(olation)g(functions)f(ha)m(v)m(e)
-i(b)s(een)d(implemen)m(ted.)42 b(These)30 b(are:)150
-3521 y(gsl)p 262 3521 28 4 v 41 w(in)m(terp)p 538 3521
-V 40 w(linear\(\))150 3630 y(gsl)p 262 3630 V 41 w(in)m(terp)p
-538 3630 V 40 w(p)s(olynomial\(\))150 3740 y(gsl)p 262
-3740 V 41 w(in)m(terp)p 538 3740 V 40 w(cspline\(\))150
-3850 y(gsl)p 262 3850 V 41 w(in)m(terp)p 538 3850 V 40
-w(cspline)p 846 3850 V 40 w(p)s(erio)s(dic\(\))150 3959
-y(gsl)p 262 3959 V 41 w(in)m(terp)p 538 3959 V 40 w(akima\(\))150
-4069 y(gsl)p 262 4069 V 41 w(in)m(terp)p 538 4069 V 40
-w(akima)p 817 4069 V 41 w(p)s(erio)s(dic\(\))180 4573
-y Fk(Ev)-5 b(aluation)31 b(of)g(In)m(terp)s(olating)g(T)m(yp)s(es)150
-4682 y(Implemen)m(ted)150 4792 y FD(gsl)p 262 4792 V
-41 w(spline)p 531 4792 V 39 w(ev)-5 b(al\(\))150 4902
-y Fk(Unimplemen)m(ted)150 5011 y FD(gsl)p 262 5011 V
-41 w(spline)p 531 5011 V 39 w(deriv\(\))150 5121 y(gsl)p
-262 5121 V 41 w(spline)p 531 5121 V 39 w(deriv2\(\))150
-5230 y(gsl)p 262 5230 V 41 w(spline)p 531 5230 V 39 w(in)m(teg\(\))p
-eop end
-%%Page: 106 108
-TeXDict begin 106 107 bop 150 -116 a FD(106)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fv(4.1.21)63 b(GSL)41
-b(least-squares)h(\014tting)150 446 y FD(Least)26 b(Squares)f
-(\014tting)g(is)h(a)f(metho)s(d)g(of)g(calculating)j(a)d(straigh)m(t)i
-(line)f(through)e(a)i(set)g(of)f(exp)s(erimen)m(tal)150
-555 y(data)c(p)s(oin)m(ts)f(in)g(the)h(XY)f(plane.)38
-b(The)19 b(data)i(ma)m(yb)s(e)g(w)m(eigh)m(ted)h(or)e(un)m(w)m(eigh)m
-(ted.)38 b(F)-8 b(or)21 b(more)g(information)150 665
-y(please)31 b(refer)f(to)h(the)g FC(GSL)f FD(man)m(ual.)150
-841 y(These)g FC(GSL)h FD(functions)f(fall)h(in)m(to)g(three)f
-(categories:)150 951 y Fk(A\))g FD(Fitting)i(data)f(to)g(Y=c0)p
-Fy(+)p FD(c1*X)150 1060 y Fk(B\))f FD(Fitting)i(data)f(\(through)f(the)
-h(origin\))g(Y=c1*X)150 1170 y Fk(C\))f FD(Multi-parameter)i(\014tting)
-f(\(not)g(y)m(et)g(implemen)m(ted\))275 1455 y Fk(Section)g(A)150
-1674 y Fy(status=)p Fk(gsl)p 598 1674 28 5 v 39 w(\014t)p
-723 1674 V 40 w(linear)150 1784 y Fy(\(data_x,stride_x,data_y,)o(stri)o
-(de_y)o(,n,)o(&co,)o(&c1,)o(&co)o(v00,)o(&cov)o(01,)o(&cov)o(11,&)o
-(sum)o(sq\))150 1960 y Fk(Input)e(v)-5 b(ariables)p FD(:)42
-b(data)p 1001 1960 28 4 v 40 w(x,)31 b(stride)p 1368
-1960 V 40 w(x,)f(data)p 1687 1960 V 41 w(y)-8 b(,)31
-b(stride)p 2047 1960 V 40 w(y)-8 b(,)31 b(n)150 2070
-y(F)-8 b(rom)36 b(the)g(ab)s(o)m(v)m(e)g(v)-5 b(ariables)36
-b(an)g(X)f(and)g(Y)h(v)m(ector)h(b)s(oth)e(of)g(length)h('n')g(are)g
-(deriv)m(ed.)56 b(If)35 b(data)p 3551 2070 V 41 w(x)g(or)150
-2179 y(data)p 332 2179 V 41 w(y)e(is)g(less)g(than)g(t)m(yp)s(e)g
-(double)g(then)g(it)g(is)g(con)m(v)m(erted)i(to)f(t)m(yp)s(e)f
-Fy(double)p FD(.)47 b(It)33 b(is)g(up)f(to)i(y)m(ou)f(to)h(do)150
-2289 y(b)s(ounds)g(c)m(hec)m(king)39 b(on)e(the)f(input)g(data.)60
-b(F)-8 b(or)38 b(example)f(if)g(stride)p 2501 2289 V
-40 w(x=3)g(and)f(n=8)g(then)g(the)h(size)h(of)150 2398
-y(data)p 332 2398 V 41 w(x)30 b(m)m(ust)g(b)s(e)g(at)h(least)h(24)150
-2574 y Fk(Output)e(v)-5 b(ariables)p FD(:)41 b(c0,)32
-b(c1,)f(co)m(v00,)i(co)m(v01,)f(co)m(v11,sumsq)150 2684
-y(The)41 b('&')h(pre\014x)e(indicates)j(that)f(these)g(are)g(call-b)m
-(y-reference)i(v)-5 b(ariables.)75 b(If)41 b(an)m(y)h(of)g(the)f
-(output)150 2793 y(v)-5 b(ariables)31 b(don't)f(exist)i(prior)d(to)i
-(the)g(call)h(then)e(they)g(are)h(created)g(on)g(the)f(\015y)g(as)g
-(scalar)i(v)-5 b(ariables)31 b(of)150 2903 y(t)m(yp)s(e)h
-Fy(double)p FD(.)45 b(If)32 b(they)g(already)h(exist)g(then)f(their)g
-(existing)h(v)-5 b(alue)33 b(is)f(o)m(v)m(erwritten.)48
-b(If)32 b(the)g(function)150 3013 y(call)g(is)e(successful)g(then)g
-Fy(status=0)p FD(.)275 3188 y Fy(status=)e Fk(gsl)p 751
-3188 28 5 v 40 w(\014t)p 877 3188 V 40 w(wlinear)p Fy
-(\(data_x,stride_x,data_w,str)o(ide)o(_w,d)o(ata_)o(y,s)o(trid)o(e_)150
-3298 y(y,n,&co,&c1,&cov00,&cov0)o(1,&c)o(ov11)o(,&c)o(hisq)o(\))150
-3474 y FD(Similar)f(to)i(the)e(ab)s(o)m(v)m(e)i(call)g(except)f(it)g
-(creates)h(an)e(additional)i(w)m(eigh)m(ting)g(v)m(ector)g(from)e(the)g
-(v)-5 b(ariables)150 3584 y(data)p 332 3584 28 4 v 41
-w(w,)30 b(stride)p 717 3584 V 40 w(w,)g(n)275 3760 y
-Fy(data_y_out=)p Fk(gsl)p 915 3760 28 5 v 37 w(\014t)p
-1038 3760 V 40 w(linear)p 1304 3760 V 41 w(est)p Fy
-(\(data_x,c0,c1,cov00,cov01,)o(cov)o(11\))150 3935 y
-FD(This)g(function)g(calculates)i(y)f(v)-5 b(alues)30
-b(along)i(the)e(line)h(Y=c0)p Fy(+)p FD(c1*X)275 4331
-y Fk(Section)g(B)150 4550 y Fy(status=)p Fk(gsl)p 598
-4550 V 39 w(\014t)p 723 4550 V 40 w(m)m(ul)p Fy
-(\(data_x,stride_x,data_y)o(,str)o(ide)o(_y,n)o(,&c1)o(,&c)o(ov11)o
-(,&su)o(msq)o(\))150 4726 y Fk(Input)e(v)-5 b(ariables)p
-FD(:)42 b(data)p 1001 4726 28 4 v 40 w(x,)31 b(stride)p
-1368 4726 V 40 w(x,)f(data)p 1687 4726 V 41 w(y)-8 b(,)31
-b(stride)p 2047 4726 V 40 w(y)-8 b(,)31 b(n)150 4835
-y(F)-8 b(rom)36 b(the)g(ab)s(o)m(v)m(e)g(v)-5 b(ariables)36
-b(an)g(X)f(and)g(Y)h(v)m(ector)h(b)s(oth)e(of)g(length)h('n')g(are)g
-(deriv)m(ed.)56 b(If)35 b(data)p 3551 4835 V 41 w(x)g(or)150
-4945 y(data)p 332 4945 V 41 w(y)30 b(is)g(less)h(than)f(t)m(yp)s(e)h
-Fy(double)d FD(then)j(it)f(is)h(con)m(v)m(erted)h(to)f(t)m(yp)s(e)f
-Fy(double)p FD(.)150 5230 y Fk(Output)g(v)-5 b(ariables)p
-FD(:)41 b(c1,co)m(v11,sumsq)p eop end
-%%Page: 107 109
-TeXDict begin 107 108 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(107)275
-299 y Fy(status=)28 b Fk(gsl)p 751 299 28 5 v 40 w(\014t)p
-877 299 V 40 w(wm)m(ul)p Fy(\(data_x,stride_x,data_w,s)o(tri)o(de_w)o
-(,dat)o(a_y)o(,str)o(ide_)150 408 y(y,n,&c1,&cov11,&sumsq\))150
-581 y FD(Similar)f(to)i(the)e(ab)s(o)m(v)m(e)i(call)g(except)f(it)g
-(creates)h(an)e(additional)i(w)m(eigh)m(ting)g(v)m(ector)g(from)e(the)g
-(v)-5 b(ariables)150 691 y(data)p 332 691 28 4 v 41 w(w,)30
-b(stride)p 717 691 V 40 w(w,)g(n)275 863 y Fy(data_y_out=)p
-Fk(gsl)p 915 863 28 5 v 37 w(\014t)p 1038 863 V 40 w(m)m(ul)p
-1227 863 V 40 w(est)p Fy(\(data_x,c0,c1,cov11\))150 1036
-y FD(This)g(function)g(calculates)i(y)f(v)-5 b(alues)30
-b(along)i(the)e(line)h(Y=c1*X)150 1428 y(The)f(b)s(elo)m(w)g(example)i
-(sho)m(ws)e Fk(gsl)p 1324 1428 V 40 w(\014t)p 1450 1428
-V 40 w(linear\(\))i FD(in)e(action)390 1600 y Fy(defdim\("d1",10\);)390
-1710 y(xin[d1]={1,2,3,4,5,6,7,8)o(,9,1)o(0.0})o(;)390
-1819 y(yin[d1]={3.1,6.2,9.1,12.)o(2,15)o(.1,1)o(8.2)o(,21.)o(3,24)o
-(.0,)o(27.0)o(,30.)o(0};)390 1929 y(gsl_fit_linear\(xin,1,yin)o(,1,$)o
-(d1.s)o(ize)o(,&c0)o(,&c1)o(,&c)o(ov00)o(,&co)o(v01)o(,&co)o(v11,)o
-(&su)o(msq\))o(;)390 2039 y(print\(c0\);)93 b(//)47 b(0.2)390
-2148 y(print\(c1\);)93 b(//)47 b(2.98545454545)390 2477
-y(defdim\("e1",4\);)390 2587 y(xout[e1]={1.0,3.0,4.0,11)o(};)390
-2696 y(yout[e1]=0.0;)390 2915 y(yout=gsl_fit_linear_est\()o(xout)o(,)42
-b(c0,c1,)k(cov00,cov01,)e(cov11,)i(sumsq\);)390 3134
-y(print\(yout\);)92 b(//)47 b(3.18545454545)e(,9.15636363636,)e
-(,12.1418181818)h(,33.04)150 3752 y Fv(4.1.22)63 b(GSL)41
-b(statistics)150 3899 y FD(W)-8 b(rapp)s(ers)44 b(for)h(most)g(of)g
-(the)g FC(GSL)g FD(Statistical)i(functions)e(ha)m(v)m(e)h(b)s(een)e
-(implemen)m(ted.)84 b(The)45 b FC(GSL)150 4008 y FD(function)34
-b(names)g(include)g(a)h(t)m(yp)s(e)f(sp)s(eci\014er)g(\(except)h(for)f
-(t)m(yp)s(e)g(double)g(functions\).)52 b(T)-8 b(o)35
-b(obtain)g(the)150 4118 y(equiv)-5 b(alen)m(t)36 b FC(NCO)f
-FD(name)g(simply)f(remo)m(v)m(e)j(the)e(t)m(yp)s(e)g(sp)s(eci\014er;)h
-(then)f(dep)s(ending)e(on)i(the)g(data)h(t)m(yp)s(e)150
-4228 y(the)d(appropriate)g FC(GSL)f FD(function)h(is)g(called.)48
-b(The)33 b(w)m(eighed)g(statistical)i(functions)e(e.g)64
-b Fy(gsl_stats_)150 4337 y(wvariance\(\))33 b FD(are)j(only)f
-(de\014ned)g(in)g FC(GSL)h FD(for)f(\015oating)i(p)s(oin)m(t)e(t)m(yp)s
-(es;)k(so)d(y)m(our)f(data)h(m)m(ust)g(of)g(t)m(yp)s(e)150
-4447 y Fy(float)h FD(or)h Fy(double)e FD(otherwise)i(ncap2)h(will)f
-(emit)h(an)f(error)g(message.)64 b(T)-8 b(o)39 b(view)f(the)g(implemen)
-m(ted)150 4556 y(functions)30 b(use)g(the)h(shell)f(command)g
-Fy(ncap2)f(-f|grep)g(_stats)150 4729 y FC(GSL)h FD(F)-8
-b(unctions)390 4902 y Fy(short)46 b(gsl_stats_max)f(\(short)h(data[],)f
-(size_t)i(stride,)e(size_t)h(n\);)390 5011 y(double)g
-(gsl_stats_int_mean)d(\(int)k(data[],)e(size_t)h(stride,)g(size_t)g
-(n\);)390 5121 y(double)g(gsl_stats_short_sd_with_f)o(ixe)o(d_me)o(an)c
-(\(short)k(data[],)f(size_t)i(stride,)e(size_t)h(n,)i(double)e(mean\);)
-390 5230 y(double)g(gsl_stats_wmean)e(\(double)i(w[],)g(size_t)g
-(wstride,)g(double)g(data[],)g(size_t)g(stride,)g(size_t)g(n\);)390
-5340 y(double)g(gsl_stats_quantile_from_s)o(ort)o(ed_d)o(ata)41
-b(\(double)46 b(sorted_data[],)e(size_t)i(stride,)g(size_t)g(n,)h
-(double)f(f\))h(;)p eop end
-%%Page: 108 110
-TeXDict begin 108 109 bop 150 -116 a FD(108)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(Equiv)-5 b(alen)m(t)31
-b(ncap2)g(wrapp)s(er)d(functions)390 463 y Fy(short)46
-b(gsl_stats_max)f(\(var_data,)g(data_stride,)f(n\);)390
-573 y(double)i(gsl_stats_mean)e(\(var_data,)h(data_stride,)f(n\);)390
-682 y(double)i(gsl_stats_sd_with_fixed_m)o(ean)41 b(\(var_data,)k
-(data_stride,)g(n,)i(var_mean\);)390 792 y(double)f(gsl_stats_wmean)e
-(\(var_weight,)g(weight_stride,)g(var_data,)h(data_stride,)g(n,)i
-(var_mean\);)390 902 y(double)f(gsl_stats_quantile_from_s)o(ort)o(ed_d)
-o(ata)41 b(\(var_sorted_data,)i(data_stride,)i(n,)i(var_f\))f(;)150
-1066 y FC(GSL)26 b FD(has)g(no)g(notion)h(of)f(missing)g(v)-5
-b(alues)27 b(or)f(dimensionalit)m(y)h(b)s(ey)m(ond)f(one.)39
-b(If)26 b(y)m(our)g(data)h(has)f(missing)150 1176 y(v)-5
-b(alues)38 b(whic)m(h)f(y)m(ou)h(w)m(an)m(t)h(ignored)f(in)f(the)h
-(calculations)h(then)f(use)f(the)h Fy(ncap2)e FD(built)i(in)f
-(aggregate)150 1285 y(functions\()e(Section)h(4.1.11)i([Metho)s(ds)d
-(and)g(functions],)i(page)f(82)g(\).)56 b(The)35 b FC(GSL)g
-FD(functions)g(op)s(erate)150 1395 y(on)h(a)h(v)m(ector)g(of)g(v)-5
-b(alues)36 b(created)h(from)f(the)h(v)-5 b(ar)p 1866
-1395 28 4 v 40 w(data/stride/n)37 b(argumen)m(ts.)58
-b(The)36 b(ncap)g(wrapp)s(ers)150 1504 y(c)m(hec)m(k)29
-b(that)f(there)f(is)h(no)f(b)s(ounding)f(error)h(with)g(regard)g(to)h
-(the)g(size)g(of)f(the)h(data)g(and)f(the)g(\014nal)g(v)-5
-b(alue)150 1614 y(in)30 b(the)h(v)m(ector.)275 1778 y(Some)f(examples)
-390 1943 y Fy(a1[time]={1,2,3,4,5,6,7,)o(8,9,)o(10)42
-b(};)390 2162 y(a1_avg=gsl_stats_mean\(a1)o(,1,1)o(0\);)390
-2271 y(print\(a1_avg\);)i(//)j(5.5)390 2491 y(a1_var=gsl_stats_varianc)
-o(e\(a1)o(,4,3)o(\);)390 2600 y(print\(a1_var\);)d(//)j(16.0)390
-2819 y(//)g(bounding)f(error,)g(vector)g(attempts)f(to)j(access)e
-(element)g(a1\(10\))390 2929 y(a1_sd=gsl_stats_sd\(a1,5,)o(3\);)150
-3203 y FD(F)-8 b(or)37 b(functions)f(with)g(the)h(signature)f
-Fk(func)p 1669 3203 28 5 v 40 w(nm\(v)-5 b(ar)p 1997
-3203 V 39 w(data,data)p 2409 3203 V 41 w(stride,n\))p
-FD(,)39 b(one)d(ma)m(y)h(omit)g(the)g(sec-)150 3313 y(ond)43
-b(or)h(third)f(argumen)m(ts.)81 b(The)43 b(default)h(v)-5
-b(alue)45 b(for)e Fz(stride)49 b FD(is)44 b Fy(1)p FD(.)81
-b(The)43 b(default)h(v)-5 b(alue)44 b(for)g Fz(n)f FD(is)150
-3422 y Fy(1+\(data.size\(\)-1\)/stride)o FD(.)390 3587
-y Fy(//)k(Following)e(statements)g(are)i(equvalent)390
-3696 y(n2=gsl_stats_max\(a1,1,10)o(\))390 3806 y
-(n2=gsl_stats_max\(a1,1\);)390 3915 y(n2=gsl_stats_max\(a1\);)390
-4134 y(//)g(Following)e(statements)g(are)i(equvalent)390
-4244 y(n3=gsl_stats_median_from)o(_sor)o(ted_)o(dat)o(a\(a1)o(,2,5)o
-(\);)390 4354 y(n3=gsl_stats_median_from)o(_sor)o(ted_)o(dat)o(a\(a1)o
-(,2\);)390 4573 y(//)g(Following)e(statements)g(are)i(NOT)g(equvalent)
-390 4682 y(n4=gsl_stats_kurtosis\(a1)o(,3,2)o(\);)390
-4792 y(n4=gsl_stats_kurtosis\(a1)o(,3\);)41 b(//default)k(n=4)275
-4956 y FD(The)22 b(follo)m(wing)i(example)f(illustrates)h(some)f(of)g
-(the)f(w)m(eigh)m(ted)i(functions.)38 b(The)22 b(data)h(are)g(randomly)
-150 5066 y(generated.)42 b(In)29 b(this)i(case)g(the)g(v)-5
-b(alue)30 b(of)h(the)g(w)m(eigh)m(t)g(for)g(eac)m(h)g(datum)f(is)g
-(either)h(0.0)h(or)e(1.0)390 5230 y Fy(defdim\("r1",2000\);)390
-5340 y(data[r1]=1.0;)p eop end
-%%Page: 109 111
-TeXDict begin 109 110 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(109)390
-408 y Fy(//)47 b(Fill)g(with)f(random)h(numbers)e([0.0,10.0\))390
-518 y(data=10.0*gsl_rng_unifor)o(m\(da)o(ta\);)390 737
-y(//)i(Create)f(a)i(weighting)d(variable)390 847 y
-(weight=\(data>4.0\);)390 1066 y(wmean=gsl_stats_wmean\(we)o(ight)o
-(,1,d)o(ata)o(,1,$)o(r1.s)o(ize)o(\);)390 1176 y(print\(wmean\);)390
-1395 y(wsd=gsl_stats_wsd\(weight)o(,1,d)o(ata,)o(1,$)o(r1.s)o(ize\))o
-(;)390 1504 y(print\(wsd\);)390 1724 y(//)i(number)f(of)h(values)g(in)g
-(data)f(that)h(are)g(greater)f(than)g(4)390 1833 y
-(weight_size=weight.total)o(\(\);)390 1943 y(print\(weight_size\);)390
-2162 y(//)h(print)g(min/max)e(of)j(data)390 2271 y
-(dmin=data.gsl_stats_min\()o(\);)390 2381 y(dmax=data.gsl_stats_max\()o
-(\);)390 2491 y(print\(dmin\);print\(dmax\);)150 2796
-y Fv(4.1.23)63 b(GSL)41 b(random)h(n)m(um)m(b)s(er)f(generation)150
-2943 y FD(The)j FC(GSL)h FD(library)f(has)g(a)h(large)h(n)m(um)m(b)s
-(er)d(of)i(random)f(n)m(um)m(b)s(er)f(generators.)85
-b(In)44 b(addition)h(there)150 3052 y(are)27 b(a)h(large)g(set)g(of)f
-(functions)g(for)f(turning)h(uniform)e(random)i(n)m(um)m(b)s(ers)e(in)m
-(to)j(discrete)g(or)f(con)m(tin)m(uous)150 3162 y(probabilt)m(y)e
-(distributions.)39 b(The)24 b(random)h(n)m(um)m(b)s(er)f(generator)i
-(algorithms)g(v)-5 b(ary)25 b(in)g(terms)g(of)h(qualit)m(y)150
-3272 y(n)m(um)m(b)s(ers)j(output,)i(sp)s(eed)e(of)i(execution)h(and)e
-(maximium)g(n)m(um)m(b)s(er)f(output.)42 b(F)-8 b(or)31
-b(more)g(information)150 3381 y(see)40 b(the)h FC(GSL)f
-FD(do)s(cumen)m(tation.)70 b(The)39 b(algorithm)i(and)e(seed)h(are)h
-(set)f(via)h(en)m(vironmen)m(t)f(v)-5 b(ariables,)150
-3491 y(these)31 b(are)g(pic)m(k)m(ed)g(up)e(b)m(y)h(the)h
-Fy(ncap2)e FD(co)s(de.)150 3650 y Fk(Setup)150 3760 y
-FD(The)35 b(n)m(um)m(b)s(er)f(algorithm)i(is)g(set)g(b)m(y)f(the)g(en)m
-(vironmen)m(t)h(v)-5 b(ariable)37 b Fy(GSL_RNG_TYPE)p
-FD(.)52 b(If)35 b(this)g(v)-5 b(ariable)150 3869 y(isn't)31
-b(set)g(then)f(the)h(default)f(rng)h(algorithm)g(is)g(gsl)p
-1945 3869 28 4 v 40 w(rng)p 2117 3869 V 40 w(19937.)43
-b(The)30 b(seed)h(is)f(set)i(with)e(the)h(en)m(viron-)150
-3979 y(men)m(t)22 b(v)-5 b(ariable)22 b Fy(GSL_RNG_SEED)p
-FD(.)35 b(The)21 b(follo)m(wing)h(wrapp)s(er)e(functions)h(in)g(ncap2)h
-(pro)m(vide)g(information)150 4089 y(ab)s(out)30 b(the)h(c)m(hosen)g
-(algorithm.)150 4381 y Fy(gsl_rng_min\(\))630 4490 y
-FD(the)g(minimium)e(v)-5 b(alue)31 b(returned)e(b)m(y)h(the)h(rng)f
-(algorithm.)150 4646 y Fy(gsl_rng_max\(\))630 4756 y
-FD(the)h(maximium)f(v)-5 b(alue)30 b(returned)g(b)m(y)g(the)g(rng)g
-(algorithm.)150 4938 y Fk(Uniformly)g(Distributed)g(Random)g(Num)m(b)s
-(ers)150 5121 y Fy(gsl_rng_get\(var_in\))630 5230 y FD(This)f(function)
-h(returns)f(v)-5 b(ar)p 1637 5230 V 40 w(in)30 b(with)g(in)m(tegers)h
-(from)f(the)g(c)m(hosen)h(rng)f(algorithm.)41 b(The)630
-5340 y(min)30 b(and)g(max)g(v)-5 b(alues)31 b(dep)s(end)d(uo)s(on)i
-(the)h(c)m(hosen)g(rng)f(algorthm.)p eop end
-%%Page: 110 112
-TeXDict begin 110 111 bop 150 -116 a FD(110)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fy(gsl_rng_uniform_int\(var_)o
-(in\))630 408 y FD(This)i(function)g(returns)f(v)-5 b(ar)p
-1644 408 28 4 v 40 w(in)32 b(with)g(random)f(in)m(tegers)j(from)d(0)i
-(to)g(n-1.)47 b(The)32 b(v)-5 b(alue)32 b(n)630 518 y(m)m(ust)c(b)s(e)f
-(less)h(than)f(or)h(equal)g(to)h(the)f(maximium)f(v)-5
-b(alue)28 b(of)g(the)g(c)m(hosen)g(rng)g(algorithm.)150
-667 y Fy(gsl_rng_uniform\(var_in\))630 777 y FD(This)c(function)h
-(returns)f(v)-5 b(ar)p 1622 777 V 40 w(in)25 b(with)g(double)g
-(precision)g(n)m(um)m(b)s(ers)f(in)g(the)i(range)f([0.0,1\).)630
-887 y(The)30 b(range)h(includes)f(0.0)h(and)f(excludes)g(1.0.)150
-1036 y Fy(gsl_rng_uniform_pos\(var_)o(in\))630 1146 y
-FD(This)23 b(function)h(returns)f(v)-5 b(ar)p 1619 1146
-V 40 w(in)24 b(with)g(double)g(precision)g(n)m(um)m(b)s(ers)f(in)h(the)
-h(range)f(\(0.0,1\),)630 1255 y(excluding)31 b(b)s(oth)e(0.0)j(and)d
-(1.0.)150 1435 y(Belo)m(w)j(are)f(examples)g(of)f Fy(gsl_rng_get\(\))d
-FD(and)j Fy(gsl_rng_uniform_int\(\))24 b FD(in)30 b(action.)390
-1594 y Fy(export)46 b(GSL_RNG_TYPE=ranlux)390 1704 y(export)g
-(GSL_RNG_SEED=10)390 1813 y(ncap2)g(-v)i(-O)f(-s)g
-('a1[time]=0;a2=gsl_rng_g)o(et\(a)o(1\);)o(')42 b(in.nc)k(foo.nc)390
-1923 y(//)h(10)g(random)f(numbers)g(from)h(the)g(range)f(0)i(-)f
-(16777215)390 2032 y(//)g(a2=9056646,)e(12776696,)g(1011656,)h
-(13354708,)f(5139066,)h(1388751,)f(11163902,)g(7730127,)h(15531355,)f
-(10387694)h(;)390 2252 y(ncap2)g(-v)i(-O)f(-s)g
-('a1[time]=21;a2=gsl_rng_)o(unif)o(orm)o(_int)o(\(a1\))o(.so)o(rt\(\))o
-(;')42 b(in.nc)k(foo.nc)390 2361 y(//)h(10)g(random)f(numbers)g(from)h
-(the)g(range)f(0)i(-)f(20)390 2471 y(a2)g(=)h(1,)f(1,)g(6,)g(9,)g(11,)g
-(13,)g(13,)g(15,)g(16,)g(19)g(;)150 2740 y FD(The)39
-b(follo)m(wing)h(example)g(pro)s(duces)e(an)h Fy(ncap2)f
-FD(run)m(time)h(error.)67 b(This)38 b(is)i(b)s(ecause)f(the)g(c)m(hose)
-h(rng)150 2849 y(algorithm)46 b(has)f(a)g(maximium)g(v)-5
-b(alue)45 b(greater)h(than)75 b Fy(NC_MAX_INT=2147483647)25
-b FD(;)53 b(the)45 b(wrapp)s(er)150 2959 y(functions)30
-b(to)h Fy(gsl_rng_get\(\))26 b FD(and)k Fy(gsl_rng_uniform_int\(\))24
-b FD(return)29 b(v)-5 b(ariable)31 b(of)f(t)m(yp)s(e)g
-Fy(NC_INT)p FD(.)150 3068 y(Please)36 b(b)s(e)e(a)m(w)m(are)j(of)e
-(this)f(when)g(using)h(random)f(n)m(um)m(b)s(er)f(distribution)i
-(functions)f(functions)g(from)150 3178 y(the)29 b FC(GSL)g
-FD(library)g(whic)m(h)f(return)g Fy(unsigned)g(int)p
-FD(.)40 b(Examples)28 b(of)i(these)f(are)g Fy(gsl_ran_geometric\(\))150
-3288 y FD(and)h Fy(gsl_ran_pascal\(\))p FD(.)390 3447
-y Fy(export)46 b(GSL_RNG_TYPE=mt19937)390 3557 y(ncap2)g(-v)i(-O)f(-s)g
-('a1[time]=0;a2=gsl_rng_g)o(et\(a)o(1\);)o(')42 b(in.nc)k(foo.nc)150
-3716 y FD(T)-8 b(o)31 b(\014nd)e(the)h(maximium)g(v)-5
-b(alue)31 b(of)g(the)f(c)m(hosen)h(rng)f(algorithm)h(use)f(the)h(follo)
-m(wing)h(co)s(de)e(snipp)s(et.)390 3875 y Fy(ncap2)46
-b(-v)i(-O)f(-s)g('rng_max=gsl_rng_max\(\);p)o(rint)o(\(rn)o(g_ma)o
-(x\)')41 b(in.nc)47 b(foo.nc)150 4035 y Fk(Random)30
-b(Num)m(b)s(er)f(Distributions)150 4144 y FD(The)34 b
-FC(GSL)i FD(library)e(has)h(a)g(ric)m(h)g(set)h(of)f(random)f(n)m(um)m
-(b)s(er)g(disribution)g(functions.)54 b(The)34 b(library)h(also)150
-4254 y(pro)m(vides)42 b(cum)m(ulativ)m(e)i(distribution)d(functions)h
-(and)f(in)m(v)m(erse)i(cum)m(ulativ)m(e)h(distribution)d(functions)150
-4364 y(sometimes)c(referred)f(to)h(a)f(quan)m(tile)i(functions.)57
-b(T)-8 b(o)37 b(see)g(whats)f(a)m(v)-5 b(ailable)38 b(on)f(y)m(our)f
-(build)f(use)h(the)150 4473 y(shell)31 b(command)f Fy(ncap2)f(-f|grep)f
-(-e)i(_ran)f(-e)h(_cdf)p FD(.)150 4633 y(The)g(follo)m(wing)i(examples)
-f(all)g(return)e(v)-5 b(ariables)31 b(of)g(t)m(yp)s(e)f
-Fy(NC_INT)390 4902 y(defdim\("out",15\);)390 5011 y(a1[$out]=0.5;)390
-5121 y(a2=gsl_ran_binomial\(a1,3)o(0\).s)o(ort\()o(\);)390
-5230 y(//a2)47 b(=)g(10,)g(11,)g(12,)g(12,)g(13,)g(14,)g(14,)f(15,)h
-(15,)g(16,)g(16,)g(16,)g(16,)g(17,)g(22)g(;)390 5340
-y(a3=gsl_ran_geometric\(a2\))o(.sor)o(t\(\);)p eop end
-%%Page: 111 113
-TeXDict begin 111 112 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(111)390
-299 y Fy(//a2)47 b(=)g(1,)g(1,)g(1,)h(1,)f(1,)g(1,)g(1,)g(1,)h(2,)f(2,)
-g(2,)g(2,)g(3,)g(4,)h(5)f(;)390 408 y(a4=gsl_ran_pascal\(a2,50\))o(;)
-390 518 y(//a5)g(=)g(37,)g(40,)g(40,)g(42,)g(43,)g(45,)g(46,)f(49,)h
-(52,)g(58,)g(60,)g(62,)g(62,)g(65,)g(67)g(;)150 680 y
-FD(The)30 b(follo)m(wing)i(all)f(return)e(v)-5 b(ariables)31
-b(of)g(t)m(yp)s(e)f Fy(NC_DOUBLE)p FD(;)390 841 y Fy
-(defdim\("b1",1000\);)390 951 y(b1[$b1]=0.8;)390 1061
-y(b2=gsl_ran_exponential\(b)o(1\);)390 1170 y(b2_avg=b2.avg\(\);)390
-1280 y(print\(b2_avg\);)390 1389 y(//)47 b(b2_avg)f(=)i(0.756047976787)
-390 1608 y(b3=gsl_ran_gaussian\(b1\);)390 1718 y(b3_avg=b3.avg\(\);)390
-1828 y(b3_rms=b3.rms\(\);)390 1937 y(print\(b3_avg\);)390
-2047 y(//)f(b3_avg)f(=)i(-0.00903446534258;)390 2156
-y(print\(b3_rms\);)390 2266 y(//)f(b3_rms)f(=)i(0.81162979889;)390
-2485 y(b4[$b1]=10.0;)390 2595 y(b5[$b1]=20.0;)390 2704
-y(b6=gsl_ran_flat\(b4,b5\);)390 2814 y(b6_avg=b6.avg\(\);)390
-2924 y(print\(b6_avg\);)390 3033 y(//)f(b6_avg=15.0588129413)150
-3237 y Fv(4.1.24)63 b(Examples)41 b(ncap2)150 3384 y
-FD(See)28 b(the)h(`)p Fy(ncap.in)p FD(')e(and)g(`)p Fy(ncap2.in)p
-FD(')g(scripts)h(released)h(with)f FC(NCO)g FD(for)g(more)g(complete)i
-(demonstra-)150 3493 y(tions)h(of)f Fy(ncap2)f FD(functionalit)m(y)j
-(\(script)f(a)m(v)-5 b(ailable)32 b(on-line)f(at)g Fy
-(http://nco.sf.net/ncap2.in)o FD(\).)275 3655 y(De\014ne)i(new)g
-(attribute)h Fz(new)41 b FD(for)33 b(existing)h(v)-5
-b(ariable)35 b Fz(one)k FD(as)33 b(t)m(wice)i(the)f(existing)g
-(attribute)g Fz(dou-)150 3765 y(ble)p 272 3765 28 4 v
-40 w(att)g FD(of)c(v)-5 b(ariable)31 b Fz(att)p 1020
-3765 V 41 w(v)-5 b(ar)7 b FD(:)390 3926 y Fy(ncap2)46
-b(-s)i('one at new=2*att_var at doub)o(le_)o(att')41 b(in.nc)46
-b(out.nc)275 4088 y FD(Av)m(erage)32 b(v)-5 b(ariables)31
-b(of)f(mixed)h(t)m(yp)s(es)f(\(result)h(is)f(of)h(t)m(yp)s(e)f
-Fy(double)p FD(\):)390 4250 y Fy(ncap2)46 b(-s)i
-('average=\(var_float+var)o(_do)o(uble)o(+var)o(_in)o(t\)/3)o(')42
-b(in.nc)k(out.nc)275 4411 y FD(Multiple)38 b(commands)f(ma)m(y)h(b)s(e)
-e(giv)m(en)j(to)f Fy(ncap2)e FD(in)h(three)g(w)m(a)m(ys.)63
-b(First,)40 b(the)d(commands)g(ma)m(y)150 4521 y(b)s(e)h(placed)g(in)g
-(a)h(script)f(whic)m(h)g(is)h(executed,)i(e.g.,)h(`)p
-Fy(tst.nco)p FD('.)63 b(Second,)40 b(the)f(commands)f(ma)m(y)h(b)s(e)
-150 4630 y(individually)c(sp)s(eci\014ed)f(with)g(m)m(ultiple)i(`)p
-Fy(-s)p FD(')f(argumen)m(ts)g(to)h(the)f(same)g Fy(ncap2)f
-FD(in)m(v)m(o)s(cation.)56 b(Third,)150 4740 y(the)36
-b(commands)g(ma)m(y)g(b)s(e)g(c)m(hained)g(together)i(in)m(to)f(a)f
-(single)h(`)p Fy(-s)p FD(')e(argumen)m(t)i(to)g Fy(ncap2)p
-FD(.)56 b(Assuming)150 4850 y(the)31 b(\014le)f(`)p Fy(tst.nco)p
-FD(')f(con)m(tains)j(the)e(commands)h Fy(a=3;b=4;c=sqrt\(a^2+b^2\))o(;)
-p FD(,)25 b(then)30 b(the)g(follo)m(wing)150 4959 y Fy(ncap2)f
-FD(in)m(v)m(o)s(cations)j(pro)s(duce)d(iden)m(tical)k(results:)390
-5121 y Fy(ncap2)46 b(-v)i(-S)f(tst.nco)f(in.nc)g(out.nc)390
-5230 y(ncap2)g(-v)i(-s)f('a=3')f(-s)h('b=4')g(-s)g('c=sqrt\(a^2+b^2\)')
-c(in.nc)j(out.nc)390 5340 y(ncap2)g(-v)i(-s)f('a=3;b=4;c=sqrt\(a^2+b^2)
-o(\)')42 b(in.nc)k(out.nc)p eop end
-%%Page: 112 114
-TeXDict begin 112 113 bop 150 -116 a FD(112)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(The)i(second)h(and)f(third)h
-(examples)g(sho)m(w)g(that)g Fy(ncap2)f FD(do)s(es)h(not)g(require)f
-(that)i(a)f(trailing)h(semi-)150 408 y(colon)26 b(`)p
-Fy(;)p FD(')e(b)s(e)g(placed)h(at)g(the)g(end)f(of)h(a)g(`)p
-Fy(-s)p FD(')f(argumen)m(t,)j(although)d(a)h(trailing)h(semi-colon)g(`)
-p Fy(;)p FD(')f(is)f(alw)m(a)m(ys)150 518 y(allo)m(w)m(ed.)61
-b(Ho)m(w)m(ev)m(er,)40 b(semi-colons)e(are)e(required)g(to)h(separate)g
-(individual)f(assignmen)m(t)h(statemen)m(ts)150 628 y(c)m(hained)31
-b(together)h(as)e(a)h(single)g(`)p Fy(-s)p FD(')f(argumen)m(t.)275
-796 y Fy(ncap2)j FD(ma)m(y)i(b)s(e)g(used)f(to)h(\\gro)m(w")i
-(dimensions,)e(i.e.,)j(to)d(increase)h(dimension)e(sizes)i(without)f
-(al-)150 906 y(tering)j(existing)g(data.)61 b(Sa)m(y)37
-b(`)p Fy(in.nc)p FD(')f(has)h Fy(ORO\(lat,lon\))d FD(and)i(the)h(user)g
-(wishes)f(a)i(new)e(\014le)h(with)150 1015 y Fy
-(new_ORO\(new_lat,new_lon\))22 b FD(that)29 b(con)m(tains)h(zeros)f(in)
-f(the)h(unde\014ned)d(p)s(ortions)i(of)h(the)g(new)f(grid.)390
-1184 y Fy(defdim\("new_lat",$lat.si)o(ze+1)o(\);)42 b(//)47
-b(Define)f(new)h(dimension)e(sizes)390 1294 y
-(defdim\("new_lon",$lon.si)o(ze+1)o(\);)390 1403 y
-(new_ORO[$new_lat,$new_lo)o(n]=0)o(.0f;)c(//)47 b(Initialize)e(to)i
-(zero)390 1513 y(new_ORO\(0:$lat.size-1,0:)o($lon)o(.siz)o(e-1)o(\)=OR)
-o(O;)42 b(//)47 b(Fill)f(valid)h(data)275 1681 y FD(The)31
-b(commands)g(to)i(de\014ne)e(new)g(co)s(ordinate)i(v)-5
-b(ariables)33 b Fy(new_lat)d FD(and)h Fy(new_lon)f FD(in)h(the)h
-(output)150 1791 y(\014le)c(follo)m(w)h(a)f(similar)h(pattern.)40
-b(One)27 b(w)m(ould)h(migh)m(t)h(store)f(these)g(commands)g(in)g(a)g
-(script)g(`)p Fy(grow.nco)p FD(')150 1901 y(and)i(then)g(execute)i(the)
-e(script)g(with)390 2069 y Fy(ncap2)46 b(-v)i(-S)f(grow.nco)e(in.nc)i
-(out.nc)275 2238 y FD(Imagine)28 b(y)m(ou)g(wish)f(to)h(create)h(a)f
-(binary)f(\015ag)h(based)f(on)h(the)g(v)-5 b(alue)28
-b(of)g(an)f(arra)m(y)-8 b(.)41 b(The)27 b(\015ag)h(should)150
-2347 y(ha)m(v)m(e)33 b(v)-5 b(alue)31 b(1.0)i(where)e(the)h(arra)m(y)g
-(exceeds)f(1.0)r(,)h(and)f(v)-5 b(alue)31 b(0.0)i(elsewhere.)45
-b(This)31 b(example)i(creates)150 2457 y(the)e(binary)e(\015ag)i
-Fy(ORO_flg)d FD(in)i(`)p Fy(out.nc)p FD(')g(from)f(the)i(con)m(tin)m
-(uous)g(arra)m(y)g(named)f Fy(ORO)f FD(in)h(`)p Fy(in.nc)p
-FD('.)390 2626 y Fy(ncap2)46 b(-s)i('ORO_flg=\(ORO)c(>)j(1.0\)')g
-(in.nc)f(out.nc)275 2794 y FD(Supp)s(ose)28 b(y)m(our)i(task)h(is)g(to)
-g(c)m(hange)g(all)h(v)-5 b(alues)30 b(of)h Fy(ORO)e FD(whic)m(h)h
-(equal)h(2.0)h(to)f(the)g(new)e(v)-5 b(alue)31 b(3.0)q(:)390
-2963 y Fy(ncap2)46 b(-s)i('ORO_msk=\(ORO==2.0\);ORO)o(=OR)o(O_ms)o
-(k*3.)o(0+!)o(ORO_)o(msk*)o(ORO)o(')42 b(in.nc)k(out.nc)275
-3131 y FD(This)30 b(creates)j(and)e(uses)h Fy(ORO_msk)d
-FD(to)k(mask)e(the)h(subsequen)m(t)f(arithmetic)i(op)s(eration.)45
-b(V)-8 b(alues)33 b(of)150 3241 y Fy(ORO)c FD(are)i(only)g(c)m(hanged)g
-(where)f Fy(ORO_msk)e FD(is)i(true,)h(i.e.,)h(where)d
-Fy(ORO)h FD(equals)h(2.0)150 3351 y(Using)g(the)f Fy(where)f
-FD(statemen)m(t)j(the)f(ab)s(o)m(v)m(e)g(co)s(de)g(simpli\014es)f(to)h
-(:)390 3519 y Fy(ncap2)46 b(-s)i('where\(ORO==2.0\))43
-b(ORO=3.0;')i(in.nc)i(foo.nc)275 3688 y FD(This)30 b(example)j(uses)e
-Fy(ncap2)f FD(to)j(compute)f(the)g(co)m(v)-5 b(ariance)34
-b(of)e(t)m(w)m(o)h(v)-5 b(ariables.)45 b(Let)32 b(the)g(v)-5
-b(ariables)150 3797 y Fz(u)42 b FD(and)h Fz(v)50 b FD(b)s(e)43
-b(the)g(horizon)m(tal)h(wind)e(comp)s(onen)m(ts.)79 b(The)42
-b Fz(co)m(v)-5 b(ariance)51 b FD(of)43 b Fz(u)f FD(and)g
-Fz(v)51 b FD(is)43 b(de\014ned)f(as)150 3907 y(the)g(time)h(mean)g(pro)
-s(duct)e(of)h(the)h(deviations)g(of)f Fz(u)g FD(and)f
-Fz(v)50 b FD(from)42 b(their)g(resp)s(ectiv)m(e)i(time)f(means.)150
-4016 y(Sym)m(b)s(olically)-8 b(,)36 b(the)e(co)m(v)-5
-b(ariance)35 b([)p Fn(u)1386 3983 y Fc(0)1410 4016 y
-Fn(v)1457 3983 y Fc(0)1481 4016 y FD(])30 b(=)g([)p Fn(uv)s
-FD(])24 b FA(\000)e FD([)p Fn(u)p FD(][)p Fn(v)s FD(])34
-b(where)f([)p Fn(x)p FD(])h(denotes)g(the)g(time-a)m(v)m(erage)j(of)d
-Fn(x)p FD(,)150 4126 y([)p Fn(x)p FD(])28 b FA(\021)390
-4090 y Fw(1)p 388 4105 38 4 v 388 4157 a Fh(\034)451
-4057 y Fg(R)506 4078 y Fh(t)p Fw(=)p Fh(\034)490 4154
-y(t)p Fw(=0)639 4126 y Fn(x)p FD(\()p Fn(t)p FD(\))15
-b(d)p Fn(t)31 b FD(and)h Fn(x)1155 4093 y Fc(0)1209 4126
-y FD(denotes)h(the)f(deviation)g(from)g(the)g(time-mean.)46
-b(The)31 b(co)m(v)-5 b(ariance)34 b(tells)150 4236 y(us)29
-b(ho)m(w)h(m)m(uc)m(h)g(of)g(the)g(correlation)i(of)e(t)m(w)m(o)h
-(signals)g(arises)f(from)f(the)i(signal)f(\015uctuations)g(v)m(ersus)g
-(the)150 4345 y(mean)e(signals.)41 b(Sometimes)29 b(this)f(is)g(called)
-h(the)g Fz(eddy)e(co)m(v)-5 b(ariance)p FD(.)43 b(W)-8
-b(e)29 b(will)g(store)f(the)h(co)m(v)-5 b(ariance)30
-b(in)150 4455 y(the)h(v)-5 b(ariable)31 b Fy(uprmvprm)p
-FD(.)390 4623 y Fy(ncwa)47 b(-O)g(-a)g(time)g(-v)g(u,v)g(in.nc)f
-(foo.nc)g(#)i(Compute)d(time)i(mean)g(of)g(u,v)390 4733
-y(ncrename)f(-O)h(-v)g(u,uavg)f(-v)h(v,vavg)f(foo.nc)g(#)i(Rename)e(to)
-h(avoid)f(conflict)390 4843 y(ncks)h(-A)g(-v)g(uavg,vavg)e(foo.nc)h
-(in.nc)h(#)g(Place)g(time)f(means)h(with)f(originals)390
-4952 y(ncap2)g(-O)i(-s)f('uprmvprm=u*v-uavg*vavg)o(')42
-b(in.nc)k(in.nc)h(#)g(Covariance)390 5062 y(ncra)g(-O)g(-v)g(uprmvprm)f
-(in.nc)g(foo.nc)g(#)h(Time-mean)f(covariance)275 5230
-y FD(The)34 b(mathematically)j(inclined)e(will)g(note)h(that)f(the)g
-(same)g(co)m(v)-5 b(ariance)37 b(w)m(ould)e(b)s(e)f(obtained)h(b)m(y)
-150 5340 y(replacing)c(the)g(step)f(in)m(v)m(olving)i
-Fy(ncap2)d FD(with)p eop end
-%%Page: 113 115
-TeXDict begin 113 114 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(113)390
-299 y Fy(ncap2)46 b(-O)i(-s)f('uprmvprm=\(u-uavg\)*\(v-v)o(avg\))o(')42
-b(foo.nc)k(foo.nc)g(#)h(Covariance)275 471 y FD(As)34
-b(of)g FC(NCO)g FD(v)m(ersion)h(3.1.8)h(\(Decem)m(b)s(er,)h(2006\),)g
-Fy(ncap2)c FD(can)i(compute)f(a)m(v)m(erages,)k(and)c(th)m(us)g(co-)150
-581 y(v)-5 b(ariances,)31 b(b)m(y)g(itself:)390 754 y
-Fy(ncap2)46 b(-s)i('uavg=u.avg\($time\);vavg)o(=v.)o(avg\()o($tim)o
-(e\);)o(uprm)o(vprm)o(=u*)o(v-ua)o(vg*v)o(avg)o(')42
-b(\\)676 863 y(-s)48 b('uprmvrpmavg=uprmvprm.a)o(vg\()o($tim)o(e\)')41
-b(in.nc)47 b(foo.nc)275 1036 y FD(W)-8 b(e)44 b(ha)m(v)m(e)g(not)g
-(seen)f(a)h(simpler)f(metho)s(d)f(to)i(script)g(and)e(execute)j(p)s(o)m
-(w)m(erful)e(arithmetic)h(than)150 1145 y Fy(ncap2)p
-FD(.)275 1318 y Fy(ncap2)34 b FD(utilizes)j(man)m(y)f(meta-c)m
-(haracters)i(\(e.g.,)h(`)p Fy($)p FD(',)f(`)p Fy(?)p
-FD(',)g(`)p Fy(;)p FD(',)f(`)p Fy(\(\))p FD(',)h(`)p
-Fy([])p FD('\))e(that)g(can)g(confuse)g(the)150 1428
-y(command-line)30 b(shell)h(if)e(not)i(quoted)f(prop)s(erly)-8
-b(.)40 b(The)29 b(issues)h(are)g(the)g(same)g(as)h(those)f(whic)m(h)g
-(arise)g(in)150 1537 y(utilizing)d(extended)e(regular)h(expressions)f
-(to)h(subset)f(v)-5 b(ariables)26 b(\(see)g(Section)g(3.11)h
-([Subsetting)f(V)-8 b(ari-)150 1647 y(ables],)31 b(page)g(36\).)42
-b(The)29 b(example)i(ab)s(o)m(v)m(e)h(will)e(fail)h(with)f(no)g(quotes)
-g(and)g(with)g(double)g(quotes.)41 b(This)150 1756 y(is)29
-b(b)s(ecause)g(shell)g(globbing)h(tries)f(to)h Fz(in)m(terp)s(olate)36
-b FD(the)29 b(v)-5 b(alue)29 b(of)h Fy($time)d FD(from)i(the)g(shell)g
-(en)m(vironmen)m(t)150 1866 y(unless)h(it)h(is)f(quoted:)390
-2039 y Fy(ncap2)46 b(-s)i('uavg=u.avg\($time\)')90 b(in.nc)46
-b(foo.nc)g(#)i(Correct)e(\(recommended\))390 2148 y(ncap2)g(-s)95
-b(uavg=u.avg\('$time'\))43 b(in.nc)j(foo.nc)g(#)i(Correct)e(\(and)g
-(dangerous\))390 2258 y(ncap2)g(-s)95 b(uavg=u.avg\($time\))139
-b(in.nc)46 b(foo.nc)g(#)i(Fails)e(\($time)g(=)i(''\))390
-2367 y(ncap2)e(-s)i("uavg=u.avg\($time\)")90 b(in.nc)46
-b(foo.nc)g(#)i(Fails)e(\($time)g(=)i(''\))275 2540 y
-FD(Without)25 b(the)h(single)f(quotes,)i(the)f(shell)f(replaces)h
-Fy($time)d FD(with)i(an)g(empt)m(y)h(string.)39 b(The)24
-b(command)150 2650 y Fy(ncap2)43 b FD(receiv)m(es)i(from)f(the)g(shell)
-g(is)h Fy(uavg=u.avg\(\))p FD(.)78 b(This)43 b(causes)i
-Fy(ncap2)d FD(to)j(a)m(v)m(erage)i(o)m(v)m(er)e(all)150
-2759 y(dimensions)30 b(rather)g(than)g(just)g(the)g Fz(time)37
-b FD(dimension,)30 b(and)f(unin)m(tended)h(consequence.)275
-2932 y(W)-8 b(e)45 b(recommend)e(using)g(single)i(quotes)f(to)g
-(protect)h Fy(ncap2)e FD(command-line)h(scripts)f(from)h(the)150
-3041 y(shell,)27 b(ev)m(en)f(when)e(suc)m(h)h(protection)i(is)e(not)h
-(strictly)g(necessary)-8 b(.)40 b(Exp)s(ert)24 b(users)h(ma)m(y)h
-(violate)h(this)e(rule)150 3151 y(to)36 b(exploit)g(the)f(abilit)m(y)h
-(to)g(use)f(shell)g(v)-5 b(ariables)36 b(in)e Fy(ncap2)g
-FD(command-line)h(scripts)g(\(see)h(Chapter)f(6)150 3261
-y([CCSM)d(Example],)h(page)g(165\).)48 b(In)32 b(suc)m(h)g(cases)h(it)g
-(ma)m(y)g(b)s(e)e(necessary)i(to)g(use)f(the)h(shell)f(bac)m(kslash)150
-3370 y(c)m(haracter)g(`)p Fy(\\)p FD(')f(to)g(protect)g(the)g
-Fy(ncap2)e FD(meta-c)m(haracter.)275 3543 y(Whether)k(a)h(degenerate)h
-(record)e(dimension)g(is)h(desirable)f(or)h(undesirable)e(dep)s(ends)g
-(on)h(the)h(ap-)150 3652 y(plication.)42 b(Often)29 b(a)h(degenerate)h
-Fz(time)36 b FD(dimension)29 b(is)h(useful,)f(e.g.,)i(for)f(concaten)m
-(tating,)j(but)c(it)h(ma)m(y)150 3762 y(cause)e(problems)e(with)h
-(arithmetic.)41 b(Suc)m(h)26 b(is)i(the)f(case)h(in)f(the)g(ab)s(o)m(v)
-m(e)i(example,)f(where)f(the)g(\014rst)g(step)150 3871
-y(emplo)m(ys)j Fy(ncwa)e FD(rather)h(than)g Fy(ncra)f
-FD(for)i(the)f(time-a)m(v)m(eraging.)44 b(Of)29 b(course)g(the)h(n)m
-(umerical)f(results)h(are)150 3981 y(the)k(same)h(with)f(b)s(oth)f(op)s
-(erators.)52 b(The)33 b(di\013erence)i(is)f(that,)i(unless)d(`)p
-Fy(-b)p FD(')h(is)g(sp)s(eci\014ed,)h Fy(ncwa)e FD(writes)150
-4091 y(no)f Fz(time)38 b FD(dimension)32 b(to)h(the)g(output)f(\014le,)
-h(while)g Fy(ncra)e FD(defaults)h(to)i(k)m(eeping)f Fz(time)38
-b FD(as)33 b(a)g(degenerate)150 4200 y(\(size)f(1\))25
-b(dimension.)39 b(App)s(ending)23 b Fy(u)i FD(and)g Fy(v)g
-FD(to)h(the)f(output)g(\014le)g(w)m(ould)g(cause)h Fy(ncks)e
-FD(to)i(try)f(to)h(expand)150 4310 y(the)g(degenerate)h(time)g(axis)f
-(of)g Fy(uavg)e FD(and)h Fy(vavg)g FD(to)i(the)f(size)g(of)g(the)g
-(non-degenerate)h Fz(time)32 b FD(dimension)150 4419
-y(in)37 b(the)g(input)f(\014le.)61 b(Th)m(us)36 b(the)h(app)s(end)f(\()
-p Fy(ncks)29 b(-A)p FD(\))37 b(command)g(w)m(ould)g(b)s(e)f
-(unde\014ned)f(\(and)i(should)150 4529 y(fail\))31 b(in)f(this)g(case.)
-41 b(Equally)31 b(imp)s(ortan)m(t)f(is)g(the)g(`)p Fy(-C)p
-FD(')g(argumen)m(t)g(\(see)h(Section)g(3.12)h([Subsetting)e(Co-)150
-4639 y(ordinate)c(V)-8 b(ariables],)27 b(page)f(38\))g(to)g
-Fy(ncwa)e FD(to)i(prev)m(en)m(t)g(an)m(y)f(scalar)h Fz(time)31
-b FD(v)-5 b(ariable)26 b(from)e(b)s(eing)h(written)150
-4748 y(to)39 b(the)f(output)f(\014le.)63 b(Kno)m(wing)38
-b(when)f(to)i(use)e Fy(ncwa)30 b(-a)f(time)37 b FD(rather)h(than)f(the)
-h(default)g Fy(ncra)f FD(for)150 4858 y(time-a)m(v)m(eraging)d(tak)m
-(es,)e(w)m(ell,)g(time.)150 5083 y Fv(4.1.25)63 b(In)m(trinsic)41
-b(mathematical)e(metho)s(ds)150 5230 y Fy(ncap2)22 b
-FD(supp)s(orts)g(the)i(standard)e(mathematical)k(functions)d(supplied)g
-(with)g(most)h(op)s(erating)g(systems.)150 5340 y(Standard)g
-(calculator)k(notation)f(is)f(used)f(for)g(addition)h
-Fy(+)p FD(,)g(subtraction)g Fq(-)p FD(,)h(m)m(ultiplication)g
-Fq(*)p FD(,)g(division)p eop end
-%%Page: 114 116
-TeXDict begin 114 115 bop 150 -116 a FD(114)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fq(/)p FD(,)f(exp)s(onen)m
-(tiation)h Fy(^)p FD(,)f(and)f(mo)s(dulus)f Fq(\045)p
-FD(.)40 b(The)28 b(a)m(v)-5 b(ailable)31 b(elemen)m(tary)f
-(mathematical)h(functions)d(are:)150 596 y Fy(abs\(x\))192
-b Fz(Absolute)31 b(v)-5 b(alue)36 b FD(Absolute)31 b(v)-5
-b(alue)30 b(of)h Fn(x)p FD(,)f FA(j)p Fn(x)p FA(j)p FD(.)42
-b(Example:)e(abs\()p FA(\000)p FD(1\))26 b(=)f(1)150
-759 y Fy(acos\(x\))144 b Fz(Arc-cosine)28 b FD(Arc-cosine)23
-b(of)e Fz(x)28 b FD(where)21 b Fz(x)28 b FD(is)21 b(sp)s(eci\014ed)g
-(in)g(radians.)38 b(Example:)e(acos\(1)p Fn(:)p FD(0\))28
-b(=)630 869 y(0)p Fn(:)p FD(0)150 1032 y Fy(acosh\(x\))96
-b Fz(Hyp)s(erb)s(olic)24 b(arc-cosine)31 b FD(Hyp)s(erb)s(olic)23
-b(arc-cosine)j(of)e Fz(x)31 b FD(where)23 b Fz(x)31 b
-FD(is)24 b(sp)s(eci\014ed)f(in)h(radians.)630 1142 y(Example:)41
-b(acosh\(1)p Fn(:)p FD(0\))28 b(=)d(0)p Fn(:)p FD(0)150
-1305 y Fy(asin\(x\))144 b Fz(Arc-sine)42 b FD(Arc-sine)37
-b(of)f Fz(x)43 b FD(where)36 b Fz(x)42 b FD(is)37 b(sp)s(eci\014ed)f
-(in)g(radians.)58 b(Example:)53 b(asin\(1)p Fn(:)p FD(0\))37
-b(=)630 1414 y(1)p Fn(:)p FD(5707963267948)q(96)q(619)q(22)150
-1577 y Fy(asinh\(x\))96 b Fz(Hyp)s(erb)s(olic)39 b(arc-sine)46
-b FD(Hyp)s(erb)s(olic)39 b(arc-sine)i(of)f Fz(x)46 b
-FD(where)39 b Fz(x)46 b FD(is)40 b(sp)s(eci\014ed)f(in)g(radians.)630
-1687 y(Example:)i(asinh\(1)p Fn(:)p FD(0\))27 b(=)e(0)p
-Fn(:)p FD(88137358702)150 1850 y Fy(atan\(x\))144 b Fz(Arc-tangen)m(t)
-30 b FD(Arc-tangen)m(t)d(of)f Fz(x)32 b FD(where)25 b
-Fz(x)32 b FD(is)26 b(sp)s(eci\014ed)f(in)h(radians)f(b)s(et)m(w)m(een)h
-FA(\000)p Fn(\031)s(=)p FD(2)h(and)630 1959 y Fn(\031)s(=)p
-FD(2.)42 b(Example:)f(atan\(1)p Fn(:)p FD(0\))27 b(=)e(0)p
-Fn(:)p FD(785398163397)q(448)q(30)q(96)q(1)150 2122 y
-Fy(atan2\(y,x\))630 2232 y Fz(Arc-tangen)m(t2)40 b FD(Arc-tangen)m(t)32
-b(of)f Fz(y/x)150 2395 y Fy(atanh\(x\))96 b Fz(Hyp)s(erb)s(olic)24
-b(arc-tangen)m(t)29 b FD(Hyp)s(erb)s(olic)24 b(arc-tangen)m(t)j(of)e
-Fz(x)30 b FD(where)24 b Fz(x)31 b FD(is)25 b(sp)s(eci\014ed)f(in)g
-(radi-)630 2504 y(ans)30 b(b)s(et)m(w)m(een)h FA(\000)p
-Fn(\031)s(=)p FD(2)g(and)f Fn(\031)s(=)p FD(2.)42 b(Example:)e
-(atanh\(3)p Fn(:)p FD(14159265358)q(97)q(93)q(238)q(44)q(\))31
-b(=)25 b(1)p Fn(:)p FD(0)150 2667 y Fy(ceil\(x\))144
-b Fz(Ceil)42 b FD(Ceiling)d(of)g Fz(x)p FD(.)64 b(Smallest)39
-b(in)m(tegral)h(v)-5 b(alue)39 b(not)f(less)h(than)f(argumen)m(t.)65
-b(Example:)630 2777 y(ceil\(0)p Fn(:)p FD(1\))28 b(=)d(1)p
-Fn(:)p FD(0)150 2940 y Fy(cos\(x\))192 b Fz(Cosine)36
-b FD(Cosine)30 b(of)g Fz(x)37 b FD(where)30 b Fz(x)36
-b FD(is)31 b(sp)s(eci\014ed)f(in)g(radians.)40 b(Example:)h(cos\(0)p
-Fn(:)p FD(0\))28 b(=)d(1)p Fn(:)p FD(0)150 3103 y Fy(cosh\(x\))144
-b Fz(Hyp)s(erb)s(olic)34 b(cosine)40 b FD(Hyp)s(erb)s(olic)34
-b(cosine)h(of)f Fz(x)41 b FD(where)34 b Fz(x)40 b FD(is)34
-b(sp)s(eci\014ed)g(in)g(radians.)52 b(Ex-)630 3213 y(ample:)41
-b(cosh\(0)p Fn(:)p FD(0\))27 b(=)e(1)p Fn(:)p FD(0)150
-3376 y Fy(erf\(x\))192 b Fz(Error)43 b(function)h FD(Error)g(function)g
-(of)g Fz(x)50 b FD(where)44 b Fz(x)51 b FD(is)44 b(sp)s(eci\014ed)f(b)s
-(et)m(w)m(een)i FA(\000)p FD(1)g(and)e(1.)630 3485 y(Example:)e(erf\(1)
-p Fn(:)p FD(0\))27 b(=)e(0)p Fn(:)p FD(842701)150 3648
-y Fy(erfc\(x\))144 b Fz(Complemen)m(tary)35 b(error)f(function)g
-FD(Complemen)m(tary)h(error)g(function)f(of)g Fz(x)41
-b FD(where)34 b Fz(x)41 b FD(is)630 3758 y(sp)s(eci\014ed)30
-b(b)s(et)m(w)m(een)h FA(\000)p FD(1)f(and)g(1.)41 b(Example:)g(erfc\(1)
-p Fn(:)p FD(0\))27 b(=)e(0)p Fn(:)p FD(15729920705)150
-3921 y Fy(exp\(x\))192 b Fz(Exp)s(onen)m(tial)223 b FD(Exp)s(onen)m
-(tial)d(of)f Fz(x)p FD(,)267 b Fn(e)2703 3888 y Fh(x)2745
-3921 y FD(.)608 b(Example:)630 4030 y(exp\(1)p Fn(:)p
-FD(0\))27 b(=)e(2)p Fn(:)p FD(7182818284590)q(452)q(35)q(36)150
-4193 y Fy(floor\(x\))96 b Fz(Flo)s(or)39 b FD(Flo)s(or)32
-b(of)g Fz(x)p FD(.)45 b(Largest)32 b(in)m(tegral)i(v)-5
-b(alue)32 b(not)g(greater)h(than)e(argumen)m(t.)46 b(Example:)630
-4303 y(\015o)s(or\(1)p Fn(:)p FD(9\))27 b(=)e(1)150 4466
-y Fy(gamma\(x\))96 b Fz(Gamma)33 b(function)g FD(Gamma)g(function)f(of)
-h Fz(x)p FD(,)h(\000\()p Fn(x)p FD(\).)48 b(The)32 b(w)m(ell-kno)m(wn)h
-(and)f(lo)m(v)m(ed)i(con-)630 4576 y(tin)m(uous)c(factorial)j
-(function.)40 b(Example:)h(gamma\(0)p Fn(:)p FD(5\))28
-b(=)2708 4510 y FA(p)p 2784 4510 56 4 v 66 x Fn(\031)150
-4739 y Fy(gamma_inc_P\(x\))630 4848 y Fz(Incomplete)34
-b(Gamma)g(function)f FD(Incomplete)g(Gamma)h(function)f(of)g(parameter)
-h Fz(a)g FD(and)630 4958 y(v)-5 b(ariable)39 b Fz(x)p
-FD(,)h Fn(P)13 b FD(\()p Fn(a;)i(x)p FD(\).)64 b(One)38
-b(of)g(the)g(four)f(incomplete)j(gamma)e(functions.)64
-b(Example:)630 5067 y(gamma)p 923 5067 28 4 v 41 w(inc)p
-1080 5067 V 40 w(P\(1)p Fn(;)15 b FD(1\))27 b(=)e(1)c
-FA(\000)f FD(e)1696 5034 y Fc(\000)p Fw(1)150 5230 y
-Fy(ln\(x\))240 b Fz(Natural)112 b(Logarithm)f FD(Natural)g(logarithm)h
-(of)f Fz(x)p FD(,)131 b(ln\()p Fn(x)p FD(\).)283 b(Example:)630
-5340 y(ln\(2)p Fn(:)p FD(7182818284590)q(45)q(23)q(536)q(\))32
-b(=)24 b(1)p Fn(:)p FD(0)p eop end
-%%Page: 115 117
-TeXDict begin 115 116 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(115)150
-299 y Fy(log\(x\))192 b Fz(Natural)31 b(Logarithm)g FD(Exact)g(synon)m
-(ym)f(for)g Fy(ln\(x\))p FD(.)150 482 y Fy(log10\(x\))96
-b Fz(Base)31 b(10)h(Logarithm)f FD(Base)g(10)g(logarithm)h(of)e
-Fz(x)p FD(,)h(log)2490 504 y Fw(10)2560 482 y FD(\()p
-Fn(x)p FD(\).)42 b(Example:)f(log\(10)p Fn(:)p FD(0\))28
-b(=)d(1)p Fn(:)p FD(0)150 665 y Fy(nearbyint\(x\))630
-775 y Fz(Round)31 b(inexactly)41 b FD(Nearest)34 b(in)m(teger)f(to)g
-Fz(x)38 b FD(is)32 b(returned)f(in)h(\015oating)h(p)s(oin)m(t)f
-(format.)46 b(No)630 884 y(exceptions)31 b(are)g(raised)g(for)f
-Fz(inexact)h(con)m(v)m(ersions)p FD(.)42 b(Example:)f(nearb)m(yin)m
-(t\(0)p Fn(:)p FD(1\))28 b(=)d(0)p Fn(:)p FD(0)150 1067
-y Fy(pow\(x,y\))96 b Fz(P)m(o)m(w)m(er)47 b FD(V)-8 b(alue)41
-b(of)e Fz(x)46 b FD(is)39 b(raised)g(to)h(the)g(p)s(o)m(w)m(er)f(of)g
-Fz(y)p FD(.)68 b(Exceptions)40 b(are)f(raised)h(for)f
-Fz(do-)630 1177 y(main)d(errors)p FD(.)59 b(Due)37 b(to)g(t)m(yp)s
-(e-limitations)h(in)f(the)f(C)30 b(language)38 b Fy(pow)e
-FD(function,)i(in)m(teger)630 1287 y(argumen)m(ts)30
-b(are)g(promoted)f(\(see)i(Section)f(3.26)h([T)m(yp)s(e)f(Con)m(v)m
-(ersion],)g(page)h(61\))f(to)h(t)m(yp)s(e)630 1396 y
-Fy(NC_FLOAT)d FD(b)s(efore)i(ev)-5 b(aluation.)42 b(Example:)f(p)s(o)m
-(w\(2)p Fn(;)15 b FD(3\))27 b(=)e(8)150 1579 y Fy(rint\(x\))144
-b Fz(Round)34 b(exactly)46 b FD(Nearest)36 b(in)m(teger)h(to)g
-Fz(x)42 b FD(is)35 b(returned)g(in)g(\015oating)h(p)s(oin)m(t)g
-(format.)57 b(Ex-)630 1689 y(ceptions)31 b(are)g(raised)f(for)g
-Fz(inexact)i(con)m(v)m(ersions)p FD(.)42 b(Example:)f(rin)m(t\(0)p
-Fn(:)p FD(1\))27 b(=)e(0)150 1872 y Fy(round\(x\))96
-b Fz(Round)27 b FD(Nearest)f(in)m(teger)g(to)f Fz(x)30
-b FD(is)25 b(returned)e(in)i(\015oating)g(p)s(oin)m(t)g(format.)39
-b(Round)23 b(halfw)m(a)m(y)630 1982 y(cases)28 b(a)m(w)m(a)m(y)h(from)e
-(zero,)i(regardless)f(of)f(curren)m(t)g(IEEE)g(rounding)f(direction.)41
-b(Example:)630 2091 y(round\(0)p Fn(:)p FD(5\))26 b(=)f(1)p
-Fn(:)p FD(0)150 2274 y Fy(sin\(x\))192 b Fz(Sine)110
-b FD(Sine)104 b(of)h Fz(x)111 b FD(where)105 b Fz(x)111
-b FD(is)105 b(sp)s(eci\014ed)f(in)h(radians.)264 b(Example:)630
-2384 y(sin\(1)p Fn(:)p FD(5707963267948)q(966)q(19)q(22)q(\))31
-b(=)25 b(1)p Fn(:)p FD(0)150 2567 y Fy(sinh\(x\))144
-b Fz(Hyp)s(erb)s(olic)29 b(sine)35 b FD(Hyp)s(erb)s(olic)30
-b(sine)f(of)h Fz(x)36 b FD(where)30 b Fz(x)36 b FD(is)30
-b(sp)s(eci\014ed)f(in)g(radians.)41 b(Example:)630 2677
-y(sinh\(1)p Fn(:)p FD(0\))26 b(=)f(1)p Fn(:)p FD(1752)150
-2860 y Fy(sqrt\(x\))144 b Fz(Square)30 b(Ro)s(ot)j FD(Square)d(Ro)s(ot)
-h(of)f Fz(x)p FD(,)1893 2795 y FA(p)p 1968 2795 52 4
-v 1968 2860 a Fn(x)p FD(.)41 b(Example:)g(sqrt\(4)p Fn(:)p
-FD(0\))27 b(=)e(2)p Fn(:)p FD(0)150 3043 y Fy(tan\(x\))192
-b Fz(T)-8 b(angen)m(t)82 b FD(T)-8 b(angen)m(t)80 b(of)g
-Fz(x)85 b FD(where)79 b Fz(x)85 b FD(is)79 b(sp)s(eci\014ed)f(in)h
-(radians.)187 b(Example:)630 3153 y(tan\(0)p Fn(:)p FD(785398163397)q
-(44)q(83)q(09)q(61\))32 b(=)25 b(1)p Fn(:)p FD(0)150
-3336 y Fy(tanh\(x\))144 b Fz(Hyp)s(erb)s(olic)40 b(tangen)m(t)k
-FD(Hyp)s(erb)s(olic)c(tangen)m(t)j(of)d Fz(x)47 b FD(where)40
-b Fz(x)47 b FD(is)41 b(sp)s(eci\014ed)f(in)g(radians.)630
-3445 y(Example:)h(tanh\(1)p Fn(:)p FD(0\))27 b(=)e(0)p
-Fn(:)p FD(761594155956)150 3628 y Fy(trunc\(x\))96 b
-Fz(T)-8 b(runcate)32 b FD(Nearest)d(in)m(teger)f(to)g
-Fz(x)34 b FD(is)27 b(returned)f(in)h(\015oating)h(p)s(oin)m(t)f
-(format.)40 b(Round)26 b(half-)630 3738 y(w)m(a)m(y)d(cases)h(to)m(w)m
-(ard)f(zero,)i(regardless)d(of)h(curren)m(t)f(IEEE)g(rounding)f
-(direction.)39 b(Example:)630 3848 y(trunc\(0)p Fn(:)p
-FD(5\))26 b(=)f(0)p Fn(:)p FD(0)150 4056 y(The)g(complete)h(list)g(of)f
-(mathematical)j(functions)d(supp)s(orted)e(is)i(platform-sp)s
-(eci\014c.)39 b(F)-8 b(unctions)26 b(man-)150 4165 y(dated)35
-b(b)m(y)g(ANSI)30 b(C)k(are)h Fr(guar)-5 b(ante)g(e)g(d)47
-b FD(to)35 b(b)s(e)g(presen)m(t)g(and)f(are)h(indicated)g(with)g(an)g
-(asterisk)3487 4132 y Fw(3)3524 4165 y FD(.)55 b(and)150
-4275 y(are)27 b(indicated)f(with)g(an)h(asterisk.)40
-b(Use)26 b(the)h(`)p Fy(-f)p FD(')f(\(or)h(`)p Fy(fnc_tbl)p
-FD(')d(or)j(`)p Fy(prn_fnc_tbl)p FD('\))d(switc)m(h)i(to)h(prin)m(t)150
-4384 y(a)k(complete)h(list)f(of)f(functions)g(supp)s(orted)f(on)h(y)m
-(our)g(platform.)2425 4351 y Fw(4)p 150 4528 1200 4 v
-199 4595 a(3)301 4627 y Fu(ANSI)24 b(C)k(compilers)g(are)f(guaran)n
-(teed)g(to)g(supp)r(ort)g(double)g(precision)g(v)n(ersions)h(of)f
-(these)g(functions.)39 b(These)27 b(func-)275 4714 y(tions)36
-b(normally)h(op)r(erate)h(on)e(netCDF)g(v)l(ariables)i(of)f(t)n(yp)r(e)
-e Ft(NC_DOUBLE)k Fu(without)d(ha)n(ving)h(to)f(p)r(erform)h(in)n
-(trinsic)275 4801 y(con)n(v)n(ersions.)58 b(F)-6 b(or)33
-b(example,)j Fs(ANSI)e Fu(compilers)g(pro)n(vide)f Ft(sin)h
-Fu(for)g(the)f(sine)h(of)g(C-t)n(yp)r(e)f Ft(double)h
-Fu(v)l(ariables.)59 b(The)275 4888 y Fs(ANSI)22 b Fu(standard)g(do)r
-(es)h(not)g(require,)g(but)e(man)n(y)h(compilers)i(pro)n(vide,)e(an)h
-(extended)e(set)i(of)g(mathematical)h(functions)275 4975
-y(that)33 b(apply)g(to)g(single)i(\()p Ft(float)p Fu(\))f(and)f
-(quadruple)g(\()p Ft(long)26 b(double)p Fu(\))34 b(precision)h(v)l
-(ariables.)58 b(Using)34 b(these)g(functions)275 5063
-y(\(e.g.,)25 b Ft(sinf)f Fu(for)g Ft(float)p Fu(,)h Ft(sinl)f
-Fu(for)g Ft(long)j(double)p Fu(\),)e(when)e(a)n(v)l(ailable,)i(is)f
-(\(presumably\))f(more)h(e\016cien)n(t)f(than)g(casting)275
-5150 y(v)l(ariables)29 b(to)g(t)n(yp)r(e)f Ft(double)p
-Fu(,)j(p)r(erforming)f(the)e(op)r(eration,)j(and)d(then)g(re-casting.)
-45 b Fs(NCO)28 b Fu(uses)h(the)g(faster)g(in)n(trinsic)275
-5237 y(functions)d(when)f(they)g(are)h(a)n(v)l(ailable,)h(and)f(uses)g
-(the)f(casting)i(metho)r(d)e(when)h(they)e(are)j(not.)199
-5308 y Fw(4)275 5340 y Fu(Lin)n(ux)d(supp)r(orts)i(more)g(of)g(these)g
-(in)n(trinsic)g(functions)g(than)g(other)f(OSs.)p eop
-end
-%%Page: 116 118
-TeXDict begin 116 117 bop 150 -116 a FD(116)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fv(4.1.26)63 b(Op)s(erators)42
-b(precedence)f(and)g(asso)s(ciativit)m(y)150 446 y FD(This)33
-b(page)i(lists)g(the)f Fy(ncap)f FD(op)s(erators)h(in)g(order)g(of)g
-(precedence)h(\(highest)g(to)f(lo)m(w)m(est\).)55 b(Their)33
-b(asso-)150 555 y(ciativit)m(y)c(indicates)f(in)e(what)h(order)f(op)s
-(erators)h(of)g(equal)g(precedence)g(in)g(an)f(expression)h(are)g
-(applied.)150 828 y Fk(Op)s(erator)382 b(Description)1773
-b(Asso)s(ciativit)m(y)150 938 y Fy(++)30 b(--)526 b FD(P)m(ost\014x)30
-b(Incremen)m(t/Decremen)m(t)1060 b(Righ)m(t)31 b(to)g(Left)150
-1047 y Fy(\(\))652 b FD(P)m(aren)m(theses)31 b(\(function)f(call\))150
-1157 y Fy(.)700 b FD(Metho)s(d)30 b(call)150 1267 y Fy(++)g(--)526
-b FD(Pre\014x)29 b(Incremen)m(t/Decremen)m(t)1098 b(Righ)m(t)31
-b(to)g(Left)150 1376 y Fy(+)f(-)622 b FD(Unary)30 b(Plus/Min)m(us)150
-1486 y Fy(!)700 b FD(Logical)32 b(Not)150 1595 y Fy(^)700
-b FD(P)m(o)m(w)m(er)31 b(of)g(Op)s(erator)1495 b(Righ)m(t)31
-b(to)g(Left)150 1705 y Fy(*)f(/)g(\045)544 b FD(Multiply/Divide/Mo)s
-(dulus)1196 b(Left)30 b(T)-8 b(o)31 b(Righ)m(t)150 1815
-y Fy(+)f(-)622 b FD(Addition/Subtraction)1371 b(Left)30
-b(T)-8 b(o)31 b(Righ)m(t)150 1924 y Fy(>>)f(<<)526 b
-FD(F)-8 b(ortran)31 b(st)m(yle)g(arra)m(y)g(clipping)1139
-b(Left)30 b(to)h(Righ)m(t)150 2034 y Fy(<)f(<=)574 b
-FD(Less)30 b(than/Less)g(than)g(or)h(equal)g(to)963 b(Left)30
-b(to)h(Righ)m(t)150 2143 y Fy(>)f(>=)574 b FD(Greater)31
-b(than/Greater)h(than)e(or)g(equal)h(to)150 2253 y Fy(==)f(!=)526
-b FD(Equal)30 b(to/Not)j(equal)d(to)1346 b(Left)30 b(to)h(Righ)m(t)150
-2363 y Fy(&&)652 b FD(Logical)32 b(AND)1713 b(Left)30
-b(to)h(Righ)m(t)150 2472 y Fy(||)652 b FD(Logical)32
-b(OR)1780 b(Left)30 b(to)h(Righ)m(t)150 2582 y Fy(?:)652
-b FD(T)-8 b(ernary)30 b(Op)s(erator)1526 b(Righ)m(t)31
-b(to)g(Left)150 2691 y Fy(=)700 b FD(Assignmen)m(t)1772
-b(Righ)m(t)31 b(to)g(Left)150 2801 y Fy(+=)f(-=)526 b
-FD(Addition/subtraction)31 b(assignmen)m(t)150 2910 y
-Fy(*=)f(/=)526 b FD(Multiplication/division)33 b(assignmen)m(t)150
-3117 y Fv(4.1.27)63 b(ID)41 b(Quoting)150 3264 y FD(In)22
-b(this)g(section)i(when)e(I)g(refer)h(to)g(a)g(name)g(I)f(mean)h(a)g(v)
--5 b(ariable)23 b(name,)i(attribute)e(name)g(or)f(a)i(dimension)150
-3374 y(name)i(The)f(allo)m(w)m(ed)i(c)m(haracters)g(in)e(a)h(v)-5
-b(alid)26 b(netCDF)g(name)g(v)-5 b(ary)25 b(from)g(release)i(to)f
-(release.)40 b(\(See)27 b(end)150 3484 y(section\).)43
-b(If)30 b(y)m(ou)h(w)m(an)m(t)g(to)g(use)g(metac)m(haracters)i(in)d(a)h
-(name)f(or)h(use)f(a)h(metho)s(d)f(name)g(as)h(a)g(v)-5
-b(ariable)150 3593 y(name)30 b(then)g(the)h(name)f(has)h(to)g(b)s(e)e
-(quoted)i(wherev)m(er)f(it)h(o)s(ccurs.)150 3756 y(The)f(default)g
-FC(NCO)h FD(name)f(is)g(sp)s(eci\014ed)g(b)m(y)g(the)h(regular)f
-(expressions:)390 3920 y Fy(DGT:)238 b(\('0'..'9'\);)390
-4029 y(LPH:)g(\()47 b('a'..'z')f(|)h('A'..'Z')f(|)h('_')g(\);)390
-4139 y(name:)190 b(\(LPH\)\(LPH|DGT\)+)150 4302 y FD(The)30
-b(\014rst)g(c)m(haracter)j(of)e(a)g(v)-5 b(alid)31 b(name)g(m)m(ust)g
-(b)s(e)f(alphab)s(etic)i(or)e(the)h(underscore.)42 b(An)m(y)31
-b(subsequen)m(t)150 4412 y(c)m(haracters)h(m)m(ust)e(b)s(e)g(alphan)m
-(umeric)g(or)h(underscore.)39 b(\()31 b(e.g)h(a1,)p 2426
-4412 28 4 v 41 w(23,)f(hell)p 2754 4412 V 41 w(is)p 2856
-4412 V 40 w(666)g(\))150 4575 y(The)f(v)-5 b(alid)31
-b(c)m(haracters)g(in)f(a)h(quoted)g(name)f(are)h(sp)s(eci\014ed)f(b)m
-(y)g(the)g(regular)h(expressions:)390 4738 y Fy(LPHDGT:)94
-b(\()47 b('a'..'z')f(|)h('A'..'Z')f(|)h('_')g(|)g('0'..'9'\);)390
-4848 y(name:)190 b(\(LPHDGT|'-'|'+'|'.'|'\(')o(|'\))o('|':)o(')42
-b(\)+)95 b(;)150 5011 y FD(Quote)31 b(a)f(v)-5 b(ariable:)150
-5121 y('a)m(vg')32 b(,)f('10)p 544 5121 V 41 w Fy(+)p
-FD(10','set)p 909 5121 V 42 w(miss')f(')p Fy(+)p FD(-90\014eld')i(,)e
-('{test'=10.0d)150 5340 y(Quote)h(a)f(attribute:)p eop
-end
-%%Page: 117 119
-TeXDict begin 117 118 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(117)150
-299 y('three)p Fy(@)p FD(10',)32 b('set)p 739 299 28
-4 v 41 w(mss)p Fy(@+)p FD(10',)e('666)p Fy(@)p FD(hell',)j('t1)p
-Fy(@+)p FD(units'=)p Fy(")p FD(k)m(elvin)p Fy(")150 518
-y FD(Quote)e(a)f(dimension:)150 628 y('$10',)i('$t1{',)h('${o)s(dd',)e
-(c1['$10','$t1{']=23.)q(0d)275 1006 y(The)d(follo)m(wing)j(commen)m(ts)
-g(are)e(from)g(the)h(netCDF)g(library)f(de\014nitions)g(and)g(detail)h
-(the)g(naming)150 1116 y(con)m(v)m(en)m(tions)i(for)f(eac)m(h)g
-(release.)42 b(netcdf-3.5.1)150 1225 y(netcdf-3.6.0-p1)150
-1335 y(netcdf-3.6.1)150 1445 y(netcdf-3.6.2)390 1714
-y Fy(/*)438 1823 y(*)47 b(\()h([a-zA-Z]|[0-9]|'_'|'-'|)o('+'|)o('.')o
-(|'|')o(:'|')o(@'|)o('\('|)o('\)')41 b(\)+)438 1933 y(*)47
-b(Verify)f(that)h(a)g(name)g(string)f(is)h(valid)438
-2042 y(*)g(CDL)g(syntax,)f(eg,)h(all)g(the)g(characters)e(are)438
-2152 y(*)i(alphanumeric,)d('-',)j('_',)g('+',)f(or)h('.'.)438
-2262 y(*)g(Also)g(permit)f(':',)h('@',)f('\(',)h(or)g('\)')g(in)g
-(names)f(for)h(chemists)f(currently)f(making)438 2371
-y(*)i(use)g(of)g(these)g(characters,)d(but)j(don't)g(document)e(until)i
-(ncgen)f(and)h(ncdump)f(can)438 2481 y(*)h(also)g(handle)f(these)g
-(characters)f(in)i(names.)438 2590 y(*/)150 2750 y FD(netcdf-3.6.3)150
-2859 y(netcdf-4.0)32 b(Final)f(2008/08/28)390 3128 y
-Fy(/*)438 3238 y(*)47 b(Verify)f(that)h(a)g(name)g(string)f(is)h(valid)
-g(syntax.)93 b(The)47 b(allowed)f(name)438 3347 y(*)h(syntax)f(\(in)h
-(RE)g(form\))g(is:)438 3457 y(*)438 3567 y(*)g
-(\([a-zA-Z_]|{UTF8}\)\([^\\x00)o(-\\x1)o(F\\x)o(7F/])o(|{UT)o(F8})o
-(\)*)438 3676 y(*)438 3786 y(*)g(where)g(UTF8)f(represents)f(a)j
-(multibyte)d(UTF-8)h(encoding.)93 b(Also,)47 b(no)438
-3895 y(*)g(trailing)f(spaces)g(are)h(permitted)e(in)i(names.)94
-b(This)47 b(definition)438 4005 y(*)g(must)g(be)g(consistent)e(with)i
-(the)g(one)f(in)i(ncgen.l.)93 b(We)47 b(do)g(not)g(allow)g('/')438
-4115 y(*)g(because)f(HDF5)h(does)f(not)h(permit)f(slashes)g(in)h(names)
-g(as)g(slash)f(is)h(used)g(as)g(a)438 4224 y(*)g(group)g(separator.)92
-b(If)47 b(UTF-8)g(is)g(supported,)e(then)i(a)g(multi-byte)e(UTF-8)438
-4334 y(*)i(character)e(can)i(occur)g(anywhere)e(within)h(an)i
-(identifier.)92 b(We)47 b(later)438 4443 y(*)g(normalize)e(UTF-8)i
-(strings)f(to)h(NFC)g(to)g(facilitate)e(matching)g(and)i(queries.)438
-4553 y(*/)p eop end
-%%Page: 118 120
-TeXDict begin 118 119 bop 150 -116 a FD(118)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(4.2)68 b Fe(ncatted)42
-b FB(netCDF)j(A)l(ttribute)g(Editor)150 458 y FD(SYNT)-8
-b(AX)390 618 y Fy(ncatted)46 b([-a)h Fq(att_dsc)11 b
-Fy(])45 b([-a)i(...)o(])g([-D)g Fq(dbg)11 b Fy(])46 b([-h])h
-([--hdr_pad)e Fq(nbr)11 b Fy(])390 727 y([-l)47 b Fq(path)11
-b Fy(])46 b([-O])g([-o)h Fq(output-file)11 b Fy(])44
-b([-p)j Fq(path)11 b Fy(])46 b([-R])h([-r])390 837 y
-Fq(input-file)56 b Fy([[)p Fq(output-file)11 b Fy(]])150
-996 y FD(DESCRIPTION)275 1156 y Fy(ncatted)35 b FD(edits)k(attributes)f
-(in)g(a)g(netCDF)h(\014le.)63 b(If)38 b(y)m(ou)g(are)g(editing)h
-(attributes)g(then)e(y)m(ou)i(are)150 1265 y(sp)s(ending)e(to)s(o)i(m)m
-(uc)m(h)g(time)g(in)g(the)f(w)m(orld)h(of)g(metadata,)j(and)c
-Fy(ncatted)f FD(w)m(as)i(written)f(to)i(get)g(y)m(ou)150
-1375 y(bac)m(k)28 b(out)g(as)f(quic)m(kly)h(and)f(painlessly)h(as)f(p)s
-(ossible.)40 b Fy(ncatted)25 b FD(can)j Fz(app)s(end)p
-FD(,)e Fz(create)p FD(,)k Fz(delete)p FD(,)f Fz(mo)s(dify)p
-FD(,)150 1484 y(and)k Fz(o)m(v)m(erwrite)40 b FD(attributes)35
-b(\(all)f(explained)g(b)s(elo)m(w\).)51 b(F)-8 b(urthermore,)35
-b Fy(ncatted)d FD(allo)m(ws)i(eac)m(h)h(editing)150 1594
-y(op)s(eration)43 b(to)g(b)s(e)g(applied)f(to)h(ev)m(ery)h(v)-5
-b(ariable)43 b(in)g(a)g(\014le.)77 b(This)42 b(sa)m(v)m(es)i(time)g
-(when)d(c)m(hanging)j(at-)150 1704 y(tribute)38 b(con)m(v)m(en)m(tions)
-i(throughout)e(a)h(\014le.)64 b(Note)39 b(that)g Fy(ncatted)d
-FD(in)m(terprets)j(c)m(haracter)g(attributes)150 1813
-y(\(i.e.,)32 b(attributes)f(of)g(t)m(yp)s(e)f Fy(NC_CHAR)p
-FD(\))f(as)h(strings.)275 1973 y(Because)46 b(rep)s(eated)f(use)f(of)h
-Fy(ncatted)e FD(can)i(considerably)g(increase)h(the)f(size)h(of)f(the)g
-Fy(history)150 2082 y FD(global)32 b(attribute)g(\(see)g(Section)g
-(3.28)h([History)e(A)m(ttribute],)i(page)f(63\),)h(the)e(`)p
-Fy(-h)p FD(')g(switc)m(h)g(is)g(pro)m(vided)150 2192
-y(to)j(o)m(v)m(erride)h(automatically)i(app)s(ending)32
-b(the)i(command)g(to)g(the)g Fy(history)e FD(global)j(attribute)f(in)g
-(the)150 2301 y Fz(output-\014le)p FD(.)275 2461 y(When)i
-Fy(ncatted)e FD(is)j(used)f(to)h(c)m(hange)h(the)e Fy(_FillValue)e
-FD(attribute,)39 b(it)e(c)m(hanges)h(the)e(asso)s(ciated)150
-2570 y(missing)22 b(data)h(self-consisten)m(tly)-8 b(.)41
-b(If)22 b(the)g(in)m(ternal)h(\015oating)g(p)s(oin)m(t)g(represen)m
-(tation)g(of)f(a)h(missing)f(v)-5 b(alue,)150 2680 y(e.g.,)38
-b(1.0e36,)g(di\013ers)d(b)s(et)m(w)m(een)g(t)m(w)m(o)i(mac)m(hines)e
-(then)g(netCDF)g(\014les)g(pro)s(duced)e(on)i(those)g(mac)m(hines)150
-2790 y(will)h(ha)m(v)m(e)h(incompatible)f(missing)g(v)-5
-b(alues.)56 b(This)35 b(allo)m(ws)i Fy(ncatted)c FD(to)k(c)m(hange)f
-(the)g(missing)g(v)-5 b(alues)150 2899 y(in)29 b(\014les)f(from)h
-(di\013eren)m(t)g(mac)m(hines)g(to)h(a)f(single)h(v)-5
-b(alue)29 b(so)g(that)h(the)f(\014les)g(ma)m(y)g(then)g(b)s(e)f
-(concatenated)150 3009 y(together,)e(e.g.,)g(b)m(y)d
-Fy(ncrcat)p FD(,)h(without)f(losing)h(an)m(y)f(information.)39
-b(See)23 b(Section)h(3.21)h([Missing)e(V)-8 b(alues],)150
-3118 y(page)31 b(49,)h(for)e(more)g(information.)275
-3278 y(The)46 b(k)m(ey)j(to)f(mastering)g Fy(ncatted)d
-FD(is)i(understanding)f(the)i(meaning)f(of)h(the)f(structure)g(that)150
-3387 y(describ)s(es)53 b(the)g(attribute)h(mo)s(di\014cation,)60
-b Fz(att)p 1845 3387 28 4 v 41 w(dsc)f FD(sp)s(eci\014ed)52
-b(b)m(y)i(the)f(required)g(option)h(`)p Fy(-a)p FD(')f(or)150
-3497 y(`)p Fy(--attribute)p FD('.)70 b(Eac)m(h)42 b Fz(att)p
-1181 3497 V 41 w(dsc)k FD(con)m(tains)c(\014v)m(e)g(elemen)m(ts,)j
-(whic)m(h)c(mak)m(es)h(using)e Fy(ncatted)f FD(some-)150
-3606 y(what)33 b(complicated,)j(but)c(p)s(o)m(w)m(erful.)49
-b(The)32 b Fz(att)p 1806 3606 V 41 w(dsc)39 b FD(argumen)m(t)33
-b(structure)g(con)m(tains)h(\014v)m(e)g(argumen)m(ts)150
-3716 y(in)c(the)h(follo)m(wing)g(order:)275 3985 y Fz(att)p
-396 3985 V 41 w(dsc)k FD(=)30 b Fz(att)p 815 3985 V 41
-w(nm)p FD(,)g Fz(v)-5 b(ar)p 1162 3985 V 40 w(nm)p FD(,)30
-b Fz(mo)s(de)p FD(,)g Fz(att)p 1769 3985 V 41 w(t)m(yp)s(e)p
-FD(,)h Fz(att)p 2155 3985 V 41 w(v)-5 b(al)150 4277 y(att)p
-271 4277 V 41 w(nm)197 b FD(A)m(ttribute)31 b(name.)41
-b(Example:)g Fy(units)150 4433 y Fz(v)-5 b(ar)p 280 4433
-V 40 w(nm)189 b FD(V)-8 b(ariable)41 b(name.)66 b(Regular)40
-b(expressions)f(\(see)h(Section)g(3.11)g([Subsetting)f(V)-8
-b(ariables],)630 4543 y(page)34 b(36\))g(are)f(accepted)i(and)d(will)h
-(select)i(an)m(y)e(matc)m(hing)h(v)-5 b(ariable)34 b(names.)49
-b(Example:)630 4653 y Fy(pressure)p FD(,)28 b Fy('^H2O')p
-FD(.)150 4809 y Fz(mo)s(de)265 b FD(Edit)35 b(mo)s(de)f(abbreviation.)
-56 b(Example:)50 b Fy(a)p FD(.)k(See)35 b(b)s(elo)m(w)g(for)g(complete)
-i(listing)e(of)h(v)-5 b(alid)630 4918 y(v)g(alues)31
-b(of)f Fz(mo)s(de)p FD(.)150 5074 y Fz(att)p 271 5074
-V 41 w(t)m(yp)s(e)150 b FD(A)m(ttribute)40 b(t)m(yp)s(e)g
-(abbreviation.)68 b(Example:)58 b Fy(c)p FD(.)67 b(See)40
-b(b)s(elo)m(w)f(for)g(complete)i(listing)f(of)630 5184
-y(v)-5 b(alid)31 b(v)-5 b(alues)30 b(of)h Fz(att)p 1345
-5184 V 41 w(t)m(yp)s(e)p FD(.)150 5340 y Fz(att)p 271
-5340 V 41 w(v)-5 b(al)211 b FD(A)m(ttribute)31 b(v)-5
-b(alue.)41 b(Example:)g Fy(pascal)p FD(.)p eop end
-%%Page: 119 121
-TeXDict begin 119 120 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(119)150
-299 y(There)25 b(should)g(b)s(e)g(no)h(empt)m(y)g(space)g(b)s(et)m(w)m
-(een)g(these)h(\014v)m(e)f(consecutiv)m(e)h(argumen)m(ts.)40
-b(The)25 b(description)150 408 y(of)31 b(these)f(argumen)m(ts)h(follo)m
-(ws)h(in)e(their)g(order)g(of)g(app)s(earance.)275 575
-y(The)d(v)-5 b(alue)28 b(of)g Fz(att)p 913 575 28 4 v
-41 w(nm)f FD(is)h(the)g(name)g(of)g(the)g(attribute)h(y)m(ou)f(w)m(an)m
-(t)h(to)f(edit.)41 b(This)27 b(meaning)h(of)g(this)150
-685 y(should)j(b)s(e)g(clear)h(to)h(all)f(users)f(of)h(the)g
-Fy(ncatted)d FD(op)s(erator.)45 b(If)32 b Fz(att)p 2501
-685 V 41 w(nm)f FD(is)g(omitted)i(\(i.e.,)h(left)e(blank\))150
-795 y(and)h Fz(Delete)40 b FD(mo)s(de)33 b(is)g(selected,)j(then)c(all)
-j(attributes)e(asso)s(ciated)i(with)e(the)g(sp)s(eci\014ed)g(v)-5
-b(ariable)34 b(will)150 904 y(b)s(e)c(deleted.)275 1071
-y(The)23 b(v)-5 b(alue)24 b(of)g Fz(v)-5 b(ar)p 910 1071
-V 40 w(nm)23 b FD(is)h(the)g(name)g(of)g(the)h(v)-5 b(ariable)24
-b(con)m(taining)i(the)e(attribute)g(\(named)g Fz(att)p
-3553 1071 V 41 w(nm)p FD(\))150 1181 y(that)34 b(y)m(ou)h(w)m(an)m(t)f
-(to)h(edit.)52 b(There)33 b(are)h(three)g(v)m(ery)g(imp)s(ortan)m(t)g
-(and)g(useful)f(exceptions)i(to)f(this)g(rule.)150 1290
-y(The)22 b(v)-5 b(alue)22 b(of)h Fz(v)-5 b(ar)p 781 1290
-V 40 w(nm)21 b FD(can)h(also)i(b)s(e)d(used)g(to)i(direct)g
-Fy(ncatted)d FD(to)j(edit)g(global)g(attributes,)i(or)d(to)h(rep)s(eat)
-150 1400 y(the)36 b(editing)g(op)s(eration)g(for)f(ev)m(ery)h(v)-5
-b(ariable)36 b(in)f(a)h(\014le.)56 b(A)31 b(v)-5 b(alue)36
-b(of)f Fz(v)-5 b(ar)p 2733 1400 V 40 w(nm)35 b FD(of)g(\\global")j
-(indicates)150 1510 y(that)31 b Fz(att)p 468 1510 V 41
-w(nm)f FD(refers)g(to)h(a)g(global)g(attribute,)h(rather)e(than)g(a)h
-(particular)g(v)-5 b(ariable's)31 b(attribute.)42 b(This)150
-1619 y(is)36 b(the)g(metho)s(d)f Fy(ncatted)e FD(supp)s(orts)h(for)i
-(editing)g(global)h(attributes.)57 b(If)35 b Fz(v)-5
-b(ar)p 2915 1619 V 40 w(nm)35 b FD(is)h(left)g(blank,)h(on)150
-1729 y(the)30 b(other)h(hand,)e(then)h Fy(ncatted)f FD(attempts)i(to)g
-(p)s(erform)e(the)h(editing)h(op)s(eration)g(on)f(ev)m(ery)h(v)-5
-b(ariable)150 1838 y(in)34 b(the)g(\014le.)52 b(This)33
-b(option)h(ma)m(y)h(b)s(e)e(con)m(v)m(enien)m(t)k(to)d(use)g(if)g(y)m
-(ou)g(decide)h(to)g(c)m(hange)g(the)f(con)m(v)m(en)m(tions)150
-1948 y(y)m(ou)29 b(use)f(for)g(describing)h(the)f(data.)41
-b(Finally)-8 b(,)31 b(as)e(men)m(tioned)g(ab)s(o)m(v)m(e,)h
-Fz(v)-5 b(ar)p 2724 1948 V 40 w(nm)28 b FD(ma)m(y)h(b)s(e)f(sp)s
-(eci\014ed)g(as)h(a)150 2058 y(regular)i(expression.)275
-2225 y(The)g(v)-5 b(alue)33 b(of)g Fz(mo)s(de)k FD(is)c(a)f(single)h(c)
-m(haracter)h(abbreviation)g(\()p Fy(a)p FD(,)f Fy(c)p
-FD(,)g Fy(d)p FD(,)f Fy(m)p FD(,)h(or)g Fy(o)p FD(\))f(standing)g(for)h
-(one)150 2334 y(of)e(\014v)m(e)f(editing)h(mo)s(des:)150
-2643 y Fy(a)432 b Fz(App)s(end)p FD(.)96 b(App)s(end)48
-b(v)-5 b(alue)50 b Fz(att)p 1804 2643 V 41 w(v)-5 b(al)53
-b FD(to)e(curren)m(t)e Fz(v)-5 b(ar)p 2601 2643 V 40
-w(nm)48 b FD(attribute)j Fz(att)p 3335 2643 V 41 w(nm)d
-FD(v)-5 b(alue)630 2753 y Fz(att)p 751 2753 V 41 w(v)g(al)p
-FD(,)41 b(if)d(an)m(y)-8 b(.)65 b(If)37 b Fz(v)-5 b(ar)p
-1507 2753 V 40 w(nm)37 b FD(do)s(es)h(not)h(ha)m(v)m(e)g(an)f
-(attribute)h Fz(att)p 2952 2753 V 41 w(nm)p FD(,)g(there)f(is)h(no)f
-(ef-)630 2862 y(fect.)150 3037 y Fy(c)432 b Fz(Create)p
-FD(.)56 b(Create)36 b(v)-5 b(ariable)36 b Fz(v)-5 b(ar)p
-1747 3037 V 40 w(nm)35 b FD(attribute)g Fz(att)p 2452
-3037 V 42 w(nm)f FD(with)h Fz(att)p 2982 3037 V 41 w(v)-5
-b(al)39 b FD(if)d Fz(att)p 3379 3037 V 41 w(nm)e FD(do)s(es)630
-3147 y(not)d(y)m(et)g(exist.)42 b(If)30 b Fz(v)-5 b(ar)p
-1415 3147 V 40 w(nm)29 b FD(already)i(has)f(an)g(attribute)i
-Fz(att)p 2720 3147 V 41 w(nm)p FD(,)e(there)g(is)h(no)f(e\013ect.)150
-3321 y Fy(d)432 b Fz(Delete)p FD(.)57 b(Delete)37 b(curren)m(t)e
-Fz(v)-5 b(ar)p 1698 3321 V 40 w(nm)34 b FD(attribute)h
-Fz(att)p 2402 3321 V 42 w(nm)p FD(.)53 b(If)35 b Fz(v)-5
-b(ar)p 2869 3321 V 40 w(nm)34 b FD(do)s(es)h(not)g(ha)m(v)m(e)h(an)630
-3431 y(attribute)23 b Fz(att)p 1127 3431 V 41 w(nm)p
-FD(,)g(there)f(is)g(no)f(e\013ect.)40 b(If)21 b Fz(att)p
-2237 3431 V 41 w(nm)g FD(is)h(omitted)h(\(left)g(blank\),)h(then)d(all)
-i(at-)630 3540 y(tributes)j(asso)s(ciated)i(with)f(the)f(sp)s
-(eci\014ed)g(v)-5 b(ariable)28 b(are)f(automatically)i(deleted.)40
-b(When)630 3650 y Fz(Delete)46 b FD(mo)s(de)39 b(is)g(selected,)j(the)d
-Fz(att)p 1939 3650 V 42 w(t)m(yp)s(e)44 b FD(and)38 b
-Fz(att)p 2499 3650 V 41 w(v)-5 b(al)43 b FD(argumen)m(ts)c(are)h(sup)s
-(er\015uous)630 3760 y(and)30 b(ma)m(y)h(b)s(e)e(left)j(blank.)150
-3934 y Fy(m)432 b Fz(Mo)s(dify)p FD(.)46 b(Change)33
-b(v)-5 b(alue)32 b(of)h(curren)m(t)f Fz(v)-5 b(ar)p 2105
-3934 V 40 w(nm)31 b FD(attribute)j Fz(att)p 2805 3934
-V 41 w(nm)d FD(to)i(v)-5 b(alue)33 b Fz(att)p 3469 3934
-V 41 w(v)-5 b(al)p FD(.)47 b(If)630 4044 y Fz(v)-5 b(ar)p
-760 4044 V 40 w(nm)30 b FD(do)s(es)g(not)g(ha)m(v)m(e)i(an)e(attribute)
-h Fz(att)p 2158 4044 V 41 w(nm)p FD(,)f(there)h(is)f(no)g(e\013ect.)150
-4218 y Fy(o)432 b Fz(Ov)m(erwrite)p FD(.)40 b(W)-8 b(rite)29
-b(attribute)f Fz(att)p 1841 4218 V 41 w(nm)e FD(with)h(v)-5
-b(alue)28 b Fz(att)p 2586 4218 V 41 w(v)-5 b(al)32 b
-FD(to)c(v)-5 b(ariable)28 b Fz(v)-5 b(ar)p 3342 4218
-V 40 w(nm)p FD(,)27 b(o)m(v)m(er-)630 4328 y(writing)j(existing)i
-(attribute)f Fz(att)p 1785 4328 V 41 w(nm)p FD(,)f(if)g(an)m(y)-8
-b(.)42 b(This)29 b(is)i(the)f(default)h(mo)s(de.)275
-4527 y(The)d(v)-5 b(alue)30 b(of)f Fz(att)p 917 4527
-V 41 w(t)m(yp)s(e)34 b FD(is)c(a)f(single)h(c)m(haracter)h
-(abbreviation)e(\()p Fy(f)p FD(,)h Fy(d)p FD(,)f Fy(l)p
-FD(,)g Fy(i)p FD(,)h Fy(s)p FD(,)f Fy(c)p FD(,)g Fy(b)p
-FD(,)h Fy(u)p FD(\))f(or)g(a)g(short)150 4637 y(string)h(standing)h
-(for)f(one)g(of)h(the)f(t)m(w)m(elv)m(e)j(primitiv)m(e)e(netCDF)g(data)
-g(t)m(yp)s(es:)150 4946 y Fy(f)432 b Fz(Float)p FD(.)77
-b(V)-8 b(alue\(s\))44 b(sp)s(eci\014ed)d(in)h Fz(att)p
-1929 4946 V 41 w(v)-5 b(al)46 b FD(will)c(b)s(e)g(stored)g(as)g(netCDF)
-g(in)m(trinsic)h(t)m(yp)s(e)630 5056 y Fy(NC_FLOAT)p
-FD(.)150 5230 y Fy(d)432 b Fz(Double)p FD(.)60 b(V)-8
-b(alue\(s\))38 b(sp)s(eci\014ed)e(in)g Fz(att)p 1967
-5230 V 41 w(v)-5 b(al)41 b FD(will)36 b(b)s(e)g(stored)h(as)g(netCDF)g
-(in)m(trinsic)g(t)m(yp)s(e)630 5340 y Fy(NC_DOUBLE)p
-FD(.)p eop end
-%%Page: 120 122
-TeXDict begin 120 121 bop 150 -116 a FD(120)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fy(i,)g(l)306 b
-Fz(In)m(teger)33 b FD(or)25 b Fz(Long)p FD(.)39 b(V)-8
-b(alue\(s\))27 b(sp)s(eci\014ed)d(in)h Fz(att)p 2245
-299 28 4 v 41 w(v)-5 b(al)30 b FD(will)25 b(b)s(e)g(stored)g(as)h
-(netCDF)g(in)m(trinsic)630 408 y(t)m(yp)s(e)31 b Fy(NC_INT)p
-FD(.)150 571 y Fy(s)432 b Fz(Short)p FD(.)73 b(V)-8 b(alue\(s\))43
-b(sp)s(eci\014ed)e(in)g Fz(att)p 1932 571 V 41 w(v)-5
-b(al)46 b FD(will)c(b)s(e)f(stored)g(as)h(netCDF)g(in)m(trinsic)g(t)m
-(yp)s(e)630 681 y Fy(NC_SHORT)p FD(.)150 843 y Fy(c)432
-b Fz(Char)p FD(.)78 b(V)-8 b(alue\(s\))44 b(sp)s(eci\014ed)f(in)f
-Fz(att)p 1921 843 V 42 w(v)-5 b(al)47 b FD(will)c(b)s(e)f(stored)i(as)f
-(netCDF)g(in)m(trinsic)h(t)m(yp)s(e)630 953 y Fy(NC_CHAR)p
-FD(.)150 1115 y Fy(b)432 b Fz(Byte)p FD(.)82 b(V)-8 b(alue\(s\))45
-b(sp)s(eci\014ed)e(in)h Fz(att)p 1917 1115 V 41 w(v)-5
-b(al)48 b FD(will)c(b)s(e)f(stored)g(as)h(netCDF)h(in)m(trinsic)f(t)m
-(yp)s(e)630 1225 y Fy(NC_BYTE)p FD(.)150 1388 y Fy(ub)384
-b Fz(Unsigned)28 b(Byte)p FD(.)41 b(V)-8 b(alue\(s\))30
-b(sp)s(eci\014ed)e(in)g Fz(att)p 2225 1388 V 42 w(v)-5
-b(al)32 b FD(will)d(b)s(e)f(stored)h(as)f(netCDF)i(in)m(trinsic)630
-1497 y(t)m(yp)s(e)h Fy(NC_UBYTE)p FD(.)150 1660 y Fy(us)384
-b Fz(Unsigned)25 b(Short)p FD(.)39 b(V)-8 b(alue\(s\))27
-b(sp)s(eci\014ed)e(in)g Fz(att)p 2242 1660 V 42 w(v)-5
-b(al)29 b FD(will)d(b)s(e)g(stored)f(as)h(netCDF)h(in)m(trinsic)630
-1769 y(t)m(yp)s(e)k Fy(NC_USHORT)p FD(.)150 1932 y Fy(u,)f(ui,)f(ul)85
-b Fz(Unsigned)34 b(In)m(t)p FD(.)53 b(V)-8 b(alue\(s\))36
-b(sp)s(eci\014ed)e(in)g Fz(att)p 2190 1932 V 41 w(v)-5
-b(al)39 b FD(will)34 b(b)s(e)g(stored)h(as)f(netCDF)i(in)m(trinsic)630
-2041 y(t)m(yp)s(e)31 b Fy(NC_UINT)p FD(.)150 2204 y Fy(ll,)e(int64)67
-b Fz(In)m(t64)p FD(.)77 b(V)-8 b(alue\(s\))44 b(sp)s(eci\014ed)e(in)g
-Fz(att)p 1927 2204 V 41 w(v)-5 b(al)46 b FD(will)d(b)s(e)e(stored)i(as)
-f(netCDF)h(in)m(trinsic)g(t)m(yp)s(e)630 2314 y Fy(NC_INT64)p
-FD(.)150 2476 y Fy(ull,)29 b(uint64)630 2586 y Fz(Uin)m(t64)p
-FD(.)64 b(V)-8 b(alue\(s\))39 b(sp)s(eci\014ed)e(in)g
-Fz(att)p 1959 2586 V 42 w(v)-5 b(al)41 b FD(will)d(b)s(e)f(stored)h(as)
-g(netCDF)g(in)m(trinsic)g(t)m(yp)s(e)630 2695 y Fy(NC_UINT64)p
-FD(.)150 2858 y Fy(sng)336 b Fz(String)p FD(.)68 b(V)-8
-b(alue\(s\))41 b(sp)s(eci\014ed)e(in)g Fz(att)p 1946
-2858 V 41 w(v)-5 b(al)44 b FD(will)c(b)s(e)e(stored)i(as)g(netCDF)g(in)
-m(trinsic)g(t)m(yp)s(e)630 2968 y Fy(NC_STRING)p FD(.)150
-3155 y(The)30 b(sp)s(eci\014cation)h(of)g Fz(att)p 1080
-3155 V 41 w(t)m(yp)s(e)k FD(is)c(optional)g(\(and)f(is)h(ignored\))g
-(in)f Fz(Delete)37 b FD(mo)s(de.)275 3316 y(The)42 b(v)-5
-b(alue)43 b(of)h Fz(att)p 959 3316 V 41 w(v)-5 b(al)47
-b FD(is)c(what)g(y)m(ou)g(w)m(an)m(t)h(to)g(c)m(hange)g(attribute)f
-Fz(att)p 2871 3316 V 42 w(nm)f FD(to)i(con)m(tain.)79
-b(The)150 3426 y(sp)s(eci\014cation)39 b(of)e Fz(att)p
-907 3426 V 42 w(v)-5 b(al)41 b FD(is)d(optional)h(in)f
-Fz(Delete)45 b FD(\(and)37 b(is)h(ignored\))g(mo)s(de.)62
-b(A)m(ttribute)39 b(v)-5 b(alues)38 b(for)150 3535 y(all)32
-b(t)m(yp)s(es)e(b)s(esides)g Fy(NC_CHAR)f FD(m)m(ust)h(ha)m(v)m(e)i(an)
-f(attribute)g(length)g(of)g(at)g(least)h(one.)42 b(Th)m(us)29
-b Fz(att)p 3400 3535 V 42 w(v)-5 b(al)34 b FD(ma)m(y)150
-3645 y(b)s(e)f(a)h(single)g(v)-5 b(alue)34 b(or)f(one-dimensional)i
-(arra)m(y)f(of)f(elemen)m(ts)i(of)f(t)m(yp)s(e)g Fy(att_type)p
-FD(.)47 b(If)33 b(the)h Fz(att)p 3503 3645 V 41 w(v)-5
-b(al)38 b FD(is)150 3754 y(not)h(set)h(or)f(is)g(set)h(to)g(empt)m(y)f
-(space,)j(and)d(the)g Fz(att)p 1999 3754 V 41 w(t)m(yp)s(e)45
-b FD(is)39 b Fy(NC_CHAR)p FD(,)g(e.g.,)k Fy(-a)30 b(units,T,o,c,"")150
-3864 y FD(or)38 b Fy(-a)30 b(units,T,o,c,)p FD(,)37 b(then)g(the)h
-(corresp)s(onding)f(attribute)i(is)f(set)h(to)f(ha)m(v)m(e)h(zero)g
-(length.)64 b(When)150 3974 y(sp)s(ecifying)44 b(an)g(arra)m(y)h(of)g
-(v)-5 b(alues,)48 b(it)d(is)g(safest)g(to)g(enclose)g
-Fz(att)p 2453 3974 V 41 w(v)-5 b(al)49 b FD(in)44 b(single)h(or)f
-(double)g(quotes,)150 4083 y(e.g.,)25 b Fy(-a)k(levels,T,o,s,"1,2,3,4")
-15 b FD(or)22 b Fy(-a)29 b(levels,T,o,s,'1,2,3,4')p FD(.)j(The)21
-b(quotes)g(are)h(strictly)150 4193 y(unnecessary)35 b(around)g
-Fz(att)p 1094 4193 V 41 w(v)-5 b(al)39 b FD(except)e(when)e
-Fz(att)p 1936 4193 V 41 w(v)-5 b(al)40 b FD(con)m(tains)c(c)m
-(haracters)h(whic)m(h)f(w)m(ould)f(confuse)150 4302 y(the)c(calling)g
-(shell,)g(suc)m(h)f(as)h(spaces,)g(commas,)g(and)f(wildcard)g(c)m
-(haracters.)275 4463 y FC(NCO)j FD(pro)s(cessing)g(of)h
-Fy(NC_CHAR)e FD(attributes)i(is)g(a)g(bit)g(lik)m(e)h(P)m(erl)f(in)g
-(that)g(it)g(attempts)h(to)f(do)g(what)150 4573 y(y)m(ou)40
-b(w)m(an)m(t)h(b)m(y)f(default)g(\(but)f(this)h(sometimes)h(causes)f
-(unexp)s(ected)g(results)f(if)h(y)m(ou)g(w)m(an)m(t)h(un)m(usual)150
-4682 y(data)26 b(storage\).)41 b(If)25 b(the)h Fz(att)p
-1094 4682 V 41 w(t)m(yp)s(e)31 b FD(is)26 b Fy(NC_CHAR)d
-FD(then)j(the)g(argumen)m(t)g(is)f(in)m(terpreted)h(as)g(a)g(string)f
-(and)g(it)150 4792 y(ma)m(y)i(con)m(tain)i(C-language)f(escap)s(e)f
-(sequences,)h(e.g.,)h Fy(\\n)p FD(,)e(whic)m(h)g FC(NCO)f
-FD(will)h(in)m(terpret)h(b)s(efore)e(writing)150 4902
-y(an)m(ything)32 b(to)h(disk.)45 b FC(NCO)31 b FD(translates)i(v)-5
-b(alid)32 b(escap)s(e)h(sequences)f(and)f(stores)h(the)g(appropriate)g
-FC(ASCI)r(I)150 5011 y FD(co)s(de)37 b(instead.)62 b(Since)37
-b(t)m(w)m(o)i(b)m(yte)f(escap)s(e)f(sequences,)j(e.g.,)g
-Fy(\\n)p FD(,)f(represen)m(t)e(one-b)m(yte)i FC(ASCI)r(I)f
-FD(co)s(des,)150 5121 y(e.g.,)27 b FC(ASCI)r(I)e FD(10)h(\(decimal\),)i
-(the)c(stored)h(string)g(attribute)g(is)g(one)g(b)m(yte)g(shorter)f
-(than)h(the)f(input)g(string)150 5230 y(length)36 b(for)g(eac)m(h)i(em)
-m(b)s(edded)d(escap)s(e)h(sequence.)58 b(The)36 b(most)g(frequen)m(tly)
-h(used)e(C-language)i(escap)s(e)150 5340 y(sequences)e(are)g
-Fy(\\n)e FD(\(for)i(linefeed\))g(and)f Fy(\\t)g FD(\(for)h(horizon)m
-(tal)h(tab\).)53 b(These)35 b(sequences)f(in)h(particular)p
-eop end
-%%Page: 121 123
-TeXDict begin 121 122 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(121)150
-299 y(allo)m(w)33 b(con)m(v)m(enien)m(t)h(editing)e(of)g(formatted)g
-(text)h(attributes.)45 b(The)31 b(other)h(v)-5 b(alid)32
-b FC(ASCI)r(I)g FD(co)s(des)g(are)g Fy(\\a)p FD(,)150
-408 y Fy(\\b)p FD(,)37 b Fy(\\f)p FD(,)h Fy(\\r)p FD(,)f
-Fy(\\v)p FD(,)h(and)e Fy(\\\\)p FD(.)58 b(See)36 b(Section)i(4.7)f([nc)
-m(ks)g(netCDF)g(Kitc)m(hen)g(Sink],)g(page)g(135,)j(for)c(more)150
-518 y(examples)31 b(of)f(string)h(formatting)g(\(with)f(the)h
-Fy(ncks)e FD(`)p Fy(-s)p FD(')i(option\))g(with)f(sp)s(ecial)h(c)m
-(haracters.)275 682 y(Analogous)k(to)h Fy(printf)p FD(,)e(other)h(sp)s
-(ecial)g(c)m(haracters)h(are)f(also)h(allo)m(w)m(ed)g(b)m(y)f
-Fy(ncatted)d FD(if)j(they)g(are)150 792 y Fy(")p FD(protected)p
-Fy(")c FD(b)m(y)f(a)h(bac)m(kslash.)42 b(The)30 b(c)m(haracters)i
-Fy(")p FD(,)e Fy(')p FD(,)h Fy(?)p FD(,)f(and)g Fy(\\)g
-FD(ma)m(y)h(b)s(e)f(input)g(to)h(the)g(shell)g(as)f Fy(\\")p
-FD(,)150 902 y Fy(\\')p FD(,)f Fy(\\?)p FD(,)f(and)g
-Fy(\\\\)p FD(.)40 b FC(NCO)28 b FD(simply)h(strips)f(a)m(w)m(a)m(y)i
-(the)f(leading)g(bac)m(kslash)h(from)e(these)h(c)m(haracters)h(b)s
-(efore)150 1011 y(editing)35 b(the)f(attribute.)54 b(No)34
-b(other)h(c)m(haracters)h(require)e(protection)h(b)m(y)f(a)h(bac)m
-(kslash.)53 b(Bac)m(kslashes)150 1121 y(whic)m(h)27 b(precede)h(an)m(y)
-g(other)g(c)m(haracter)h(\(e.g.,)h Fy(3)p FD(,)e Fy(m)p
-FD(,)g Fy($)p FD(,)g Fy(|)p FD(,)g Fy(&)p FD(,)g Fy(@)p
-FD(,)h Fy(\045)p FD(,)f Fy({)p FD(,)g(and)f Fy(})p FD(\))g(will)h(not)g
-(b)s(e)f(\014ltered)h(and)150 1230 y(will)j(b)s(e)e(included)h(in)g
-(the)h(attribute.)275 1395 y(Note)37 b(that)h(the)e(NUL)h(c)m(haracter)
-h Fy(\\0)e FD(whic)m(h)g(terminates)i(C)30 b(language)38
-b(strings)e(is)h(assumed)f(and)150 1504 y(need)44 b(not)g(b)s(e)f
-(explicitly)j(sp)s(eci\014ed.)81 b(If)43 b Fy(\\0)h FD(is)g(input,)j
-(it)d(is)g(translated)h(to)g(the)f(NUL)g(c)m(haracter.)150
-1614 y(Ho)m(w)m(ev)m(er,)30 b(this)c(will)i(mak)m(e)f(the)g(subsequen)m
-(t)f(p)s(ortion)h(of)g(the)g(string,)h(if)e(an)m(y)-8
-b(,)29 b(in)m(visible)e(to)h(C)i(standard)150 1724 y(library)35
-b(string)g(functions.)54 b(And)35 b(that)g(ma)m(y)h(cause)g(unin)m
-(tended)e(consequences.)56 b(Because)36 b(of)f(these)150
-1833 y(con)m(text-sensitiv)m(e)e(rules,)d(one)g(m)m(ust)f(use)h
-Fy(ncatted)e FD(with)h(care)h(in)g(order)f(to)i(store)f(data,)h(rather)
-e(than)150 1943 y(text)i(strings,)g(in)f(an)g(attribute)h(of)g(t)m(yp)s
-(e)f Fy(NC_CHAR)p FD(.)150 2107 y(EXAMPLES)275 2271 y(App)s(end)e(the)j
-(string)f Fy(")p FD(Data)i(v)m(ersion)e(2.0.)p Fy(\\)p
-FD(n)p Fy(")h FD(to)g(the)g(global)g(attribute)h Fy(history)p
-FD(:)390 2436 y Fy(ncatted)46 b(-a)h(history,global,a,c,"Data)41
-b(version)46 b(2.0\\n")g(in.nc)275 2600 y FD(Note)31
-b(the)g(use)f(of)g(em)m(b)s(edded)g(C)g(language)h Fy(printf\(\))p
-FD(-st)m(yle)f(escap)s(e)h(sequences.)275 2765 y(Change)i(the)g(v)-5
-b(alue)34 b(of)g(the)f Fy(long_name)e FD(attribute)j(for)g(v)-5
-b(ariable)34 b Fy(T)f FD(from)g(whatev)m(er)h(it)g(curren)m(tly)150
-2874 y(is)c(to)i Fy(")p FD(temp)s(erature)p Fy(")p FD(:)390
-3039 y Fy(ncatted)46 b(-a)h(long_name,T,o,c,temperat)o(ure)41
-b(in.nc)275 3203 y FD(Delete)32 b(all)f(existing)h Fy(units)d
-FD(attributes:)390 3367 y Fy(ncatted)46 b(-a)h(units,,d,,)e(in.nc)150
-3532 y FD(The)29 b(v)-5 b(alue)30 b(of)g Fz(v)-5 b(ar)p
-803 3532 28 4 v 40 w(nm)29 b FD(w)m(as)h(left)h(blank)e(in)h(order)f
-(to)h(select)i(all)e(v)-5 b(ariables)31 b(in)e(the)h(\014le.)40
-b(The)30 b(v)-5 b(alues)30 b(of)150 3641 y Fz(att)p 271
-3641 V 41 w(t)m(yp)s(e)36 b FD(and)30 b Fz(att)p 814
-3641 V 41 w(v)-5 b(al)34 b FD(w)m(ere)d(left)g(blank)f(b)s(ecause)h
-(they)f(are)h(sup)s(er\015uous)c(in)j Fz(Delete)38 b
-FD(mo)s(de.)275 3806 y(Delete)32 b(all)f(attributes)g(asso)s(ciated)h
-(with)e(the)h Fy(tpt)e FD(v)-5 b(ariable,)32 b(and)d(delete)j(all)f
-(global)h(attributes)390 3970 y Fy(ncatted)46 b(-a)h(,tpt,d,,)f(-a)h
-(,global,d,,)d(in.nc)150 4134 y FD(The)d(v)-5 b(alue)41
-b(of)h Fz(att)p 829 4134 V 41 w(nm)e FD(w)m(as)i(left)g(blank)f(in)g
-(order)f(to)i(select)h(all)f(attributes)g(asso)s(ciated)h(with)e(the)
-150 4244 y(v)-5 b(ariable.)42 b(T)-8 b(o)30 b(delete)i(all)f(global)h
-(attributes,)f(simply)f(replace)h Fy(tpt)f FD(with)g
-Fy(global)f FD(in)h(the)g(ab)s(o)m(v)m(e.)275 4408 y(Mo)s(dify)g(all)h
-(existing)g Fy(units)e FD(attributes)i(to)g Fy(")p FD(meter)g(second-1)
-p Fy(")p FD(:)390 4573 y Fy(ncatted)46 b(-a)h(units,,m,c,"meter)c
-(second-1")i(in.nc)275 4737 y FD(Add)30 b(a)i Fy(units)f
-FD(attribute)h(of)g Fy(")p FD(kilogram)g(kilogram-1)p
-Fy(")i FD(to)e(all)h(v)-5 b(ariables)32 b(whose)f(\014rst)g(three)h(c)m
-(har-)150 4847 y(acters)f(are)g(`)p Fy(H2O)p FD(':)390
-5011 y Fy(ncatted)46 b(-a)h(units,'^H2O',c,c,"kilogr)o(am)42
-b(kilogram-1")i(in.nc)275 5176 y FD(Ov)m(erwrite)30 b(the)h
-Fy(quanta)e FD(attribute)i(of)f(v)-5 b(ariable)31 b Fy(energy)e
-FD(to)i(an)f(arra)m(y)h(of)g(four)e(in)m(tegers.)390
-5340 y Fy(ncatted)46 b(-O)h(-a)g(quanta,energy,o,s,"010,10)o(1,11)o
-(1,1)o(21")41 b(in.nc)p eop end
-%%Page: 122 124
-TeXDict begin 122 123 bop 150 -116 a FD(122)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 299 y(As)38 b(of)h FC(NCO)f
-FD(3.9.6)i(\(Jan)m(uary)-8 b(,)42 b(2009\),)h(v)-5 b(ariable)39
-b(names)g(argumen)m(ts)g(to)g Fy(ncatted)d FD(ma)m(y)k(con)m(tain)150
-408 y Fz(extended)34 b(regular)g(expressions)p FD(.)50
-b(Create)35 b Fy(isotope)c FD(attributes)k(for)e(all)i(v)-5
-b(ariables)34 b(con)m(taining)h(`)p Fy(H2O)p FD(')150
-518 y(in)30 b(their)g(names.)390 677 y Fy(ncatted)46
-b(-O)h(-a)g(isotope,'^H2O*',c,s,"18")41 b(in.nc)275 837
-y FD(See)30 b(Section)h(3.11)h([Subsetting)f(V)-8 b(ariables],)32
-b(page)f(36)g(for)f(more)h(details.)275 996 y(Demonstrate)24
-b(input)d(of)i(C-language)h(escap)s(e)f(sequences)f(\(e.g.,)k
-Fy(\\n)p FD(\))d(and)f(other)g(sp)s(ecial)h(c)m(haracters)150
-1106 y(\(e.g.,)32 b Fy(\\")p FD(\))390 1265 y Fy(ncatted)46
-b(-h)h(-a)g(special,global,o,c,)390 1375 y('\\nDouble)e(quote:)h
-(\\"\\nTwo)g(consecutive)f(double)h(quotes:)g(\\"\\"\\n)390
-1484 y(Single)g(quote:)g(Beyond)g(my)h(shell)g(abilities!\\nBackslash:)
-42 b(\\\\\\n)390 1594 y(Two)47 b(consecutive)e(backslashes:)f
-(\\\\\\\\\\nQuestion)g(mark:)i(\\?\\n')h(in.nc)275 1753
-y FD(Note)32 b(that)g(the)g(en)m(tire)g(attribute)h(is)e(protected)h
-(from)f(the)h(shell)g(b)m(y)f(single)h(quotes.)44 b(These)32
-b(outer)150 1863 y(single)f(quotes)g(are)g(necessary)f(for)h(in)m
-(teractiv)m(e)i(use,)d(but)g(ma)m(y)h(b)s(e)e(omitted)j(in)e(batc)m(h)h
-(scripts.)p eop end
-%%Page: 123 125
-TeXDict begin 123 124 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(123)150
-299 y FB(4.3)68 b Fe(ncbo)43 b FB(netCDF)i(Binary)g(Op)t(erator)150
-458 y FD(SYNT)-8 b(AX)390 618 y Fy(ncbo)47 b([-3])f([-4])h([-6])g([-A])
-f([-C])h([-c])390 727 y([--cnk_dmn)e(nm,sz])h([--cnk_map)f(map])i
-([--cnk_plc)e(plc])h([--cnk_scl)f(sz])390 837 y([-D)i
-Fq(dbg)11 b Fy(])46 b([-d)h Fq(dim)p Fy(,[)p Fq(min)11
-b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42
-b([-F])k([-h])390 946 y([-L)h Fq(dfl_lvl)11 b Fy(])45
-b([-l)i Fq(path)11 b Fy(])46 b([-O])g([-o)h Fq(file_3)11
-b Fy(])46 b([-p)h Fq(path)11 b Fy(])45 b([-R])i([-r])390
-1056 y([-t)g Fq(thr_nbr)11 b Fy(])45 b([-v)i Fq(var)11
-b Fy([,...)m(]])47 b([-X)g(...])g([-x])g([-y)f Fq(op_typ)11
-b Fy(])390 1166 y Fq(file_1)57 b(file_2)f Fy([)p Fq(file_3)11
-b Fy(])150 1325 y FD(DESCRIPTION)275 1484 y Fy(ncbo)32
-b FD(p)s(erforms)g(binary)g(op)s(erations)i(on)f(v)-5
-b(ariables)34 b(in)f Fz(\014le)p 2356 1484 28 4 v 41
-w(1)41 b FD(and)32 b(the)i(corresp)s(onding)e(v)-5 b(ariables)150
-1594 y(\(those)32 b(with)e(the)h(same)h(name\))f(in)g
-Fz(\014le)p 1524 1594 V 40 w(2)38 b FD(and)31 b(stores)g(the)g(results)
-g(in)f Fz(\014le)p 2753 1594 V 40 w(3)p FD(.)43 b(The)30
-b(binary)g(op)s(eration)150 1704 y(op)s(erates)42 b(on)g(the)g(en)m
-(tire)h(\014les)f(\(mo)s(dulo)g(an)m(y)g(excluded)g(v)-5
-b(ariables\).)77 b(See)42 b(Section)h(3.21)g([Missing)150
-1813 y(V)-8 b(alues],)46 b(page)d(49,)i(for)d(treatmen)m(t)h(of)f
-(missing)g(v)-5 b(alues.)75 b(One)42 b(of)g(the)g(four)f(standard)g
-(arithmetic)150 1923 y(binary)e(op)s(erations)h(curren)m(tly)g(supp)s
-(orted)e(m)m(ust)h(b)s(e)g(selected)i(with)f(the)g(`)p
-Fy(-y)30 b Fq(op_typ)11 b FD(')37 b(switc)m(h)k(\(or)150
-2032 y(long)f(options)h(`)p Fy(--op_typ)p FD(')d(or)i(`)p
-Fy(--operation)p FD('\).)67 b(The)39 b(v)-5 b(alid)40
-b(binary)g(op)s(erations)g(for)g Fy(ncbo)p FD(,)h(their)150
-2142 y(de\014nitions,)30 b(corresp)s(onding)f(v)-5 b(alues)31
-b(of)g(the)f Fz(op)p 1832 2142 V 40 w(t)m(yp)k FD(k)m(ey)-8
-b(,)31 b(and)f(alternate)i(in)m(v)m(o)s(cations)h(are:)150
-2325 y Fz(Addition)129 b FD(De\014nition:)41 b Fz(\014le)p
-1210 2325 V 40 w(3)d FD(=)31 b Fz(\014le)p 1551 2325
-V 40 w(1)38 b Fy(+)30 b Fz(\014le)p 1868 2325 V 40 w(2)630
-2435 y FD(Alternate)i(in)m(v)m(o)s(cation:)43 b Fy(ncadd)630
-2544 y Fz(op)p 732 2544 V 40 w(t)m(yp)33 b FD(k)m(ey)e(v)-5
-b(alues:)42 b(`)p Fy(add)p FD(',)30 b(`)p Fy(+)p FD(',)h(`)p
-Fy(addition)p FD(')630 2654 y(Examples:)41 b(`)p Fy(ncbo)29
-b(--op_typ=add)e(1.nc)i(2.nc)h(3.nc)p FD(',)f(`)p Fy(ncadd)h(1.nc)f
-(2.nc)g(3.nc)p FD(')150 2921 y Fz(Subtraction)630 3030
-y FD(De\014nition:)41 b Fz(\014le)p 1210 3030 V 40 w(3)d
-FD(=)31 b Fz(\014le)p 1551 3030 V 40 w(1)38 b FD(-)30
-b Fz(\014le)p 1850 3030 V 40 w(2)630 3140 y FD(Alternate)i(in)m(v)m(o)s
-(cations:)42 b Fy(ncdiff)p FD(,)29 b Fy(ncsub)p FD(,)h
-Fy(ncsubtract)630 3250 y Fz(op)p 732 3250 V 40 w(t)m(yp)j
-FD(k)m(ey)e(v)-5 b(alues:)42 b(`)p Fy(sbt)p FD(',)30
-b(`)p Fy(-)p FD(',)h(`)p Fy(dff)p FD(',)f(`)p Fy(diff)p
-FD(',)g(`)p Fy(sub)p FD(',)g(`)p Fy(subtract)p FD(',)f(`)p
-Fy(subtraction)p FD(')630 3359 y(Examples:)41 b(`)p Fy(ncbo)29
-b(--op_typ=-)f(1.nc)h(2.nc)g(3.nc)p FD(',)h(`)p Fy(ncdiff)f(1.nc)g
-(2.nc)g(3.nc)p FD(')150 3626 y Fz(Multiplication)630
-3736 y FD(De\014nition:)41 b Fz(\014le)p 1210 3736 V
-40 w(3)d FD(=)31 b Fz(\014le)p 1551 3736 V 40 w(1)38
-b FD(*)30 b Fz(\014le)p 1865 3736 V 41 w(2)630 3845 y
-FD(Alternate)i(in)m(v)m(o)s(cations:)42 b Fy(ncmult)p
-FD(,)29 b Fy(ncmultiply)630 3955 y Fz(op)p 732 3955 V
-40 w(t)m(yp)k FD(k)m(ey)e(v)-5 b(alues:)42 b(`)p Fy(mlt)p
-FD(',)30 b(`)p Fy(*)p FD(',)h(`)p Fy(mult)p FD(',)f(`)p
-Fy(multiply)p FD(',)e(`)p Fy(multiplication)p FD(')630
-4064 y(Examples:)41 b(`)p Fy(ncbo)29 b(--op_typ=mlt)e(1.nc)i(2.nc)h
-(3.nc)p FD(',)f(`)p Fy(ncmult)g(1.nc)g(2.nc)h(3.nc)p
-FD(')150 4331 y Fz(Division)156 b FD(De\014nition:)41
-b Fz(\014le)p 1210 4331 V 40 w(3)d FD(=)31 b Fz(\014le)p
-1551 4331 V 40 w(1)38 b FD(/)30 b Fz(\014le)p 1865 4331
-V 41 w(2)630 4441 y FD(Alternate)i(in)m(v)m(o)s(cation:)43
-b Fy(ncdivide)630 4550 y Fz(op)p 732 4550 V 40 w(t)m(yp)33
-b FD(k)m(ey)e(v)-5 b(alues:)42 b(`)p Fy(dvd)p FD(',)30
-b(`)p Fy(/)p FD(',)h(`)p Fy(divide)p FD(',)e(`)p Fy(division)p
-FD(')630 4660 y(Examples:)41 b(`)p Fy(ncbo)29 b(--op_typ=/)f(1.nc)h
-(2.nc)g(3.nc)p FD(',)h(`)p Fy(ncdivide)e(1.nc)h(2.nc)h(3.nc)p
-FD(')150 4953 y(Care)i(should)g(b)s(e)g(tak)m(en)h(when)e(using)h(the)h
-(shortest)g(form)e(of)i(k)m(ey)g(v)-5 b(alues,)34 b(i.e.,)g(`)p
-Fy(+)p FD(',)f(`)p Fy(-)p FD(',)g(`)p Fy(*)p FD(',)h(and)c(`)p
-Fy(/)p FD('.)150 5062 y(Some)43 b(of)h(these)g(single)g(c)m(haracters)h
-(ma)m(y)f(ha)m(v)m(e)h(sp)s(ecial)f(meanings)f(to)h(the)g(shell)3149
-5029 y Fw(1)3186 5062 y FD(.)80 b(Place)44 b(these)p
-150 5154 1200 4 v 199 5221 a Fw(1)275 5253 y Fu(A)25
-b(nak)n(ed)i(\(i.e.,)i(unprotected)e(or)h(unquoted\))e(`)p
-Ft(*)p Fu(')j(is)f(a)g(wildcard)h(c)n(haracter.)41 b(A)25
-b(nak)n(ed)i(`)p Ft(-)p Fu(')i(ma)n(y)e(confuse)i(the)e(com-)275
-5340 y(mand)e(line)h(parser.)35 b(A)25 b(nak)n(ed)g(`)p
-Ft(+)p Fu(')i(and)e(`)p Ft(/)p Fu(')h(are)h(relativ)n(ely)f(harmless.)p
-eop end
-%%Page: 124 126
-TeXDict begin 124 125 bop 150 -116 a FD(124)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(c)m(haracters)k(inside)f(quotes)g
-(to)h(k)m(eep)g(them)e(from)h(b)s(eing)f(in)m(terpreted)h(\(globb)s
-(ed\))h(b)m(y)e(the)h(shell)3506 266 y Fw(2)3544 299
-y FD(.)48 b(F)-8 b(or)150 408 y(example,)31 b(the)g(follo)m(wing)h
-(commands)e(are)g(equiv)-5 b(alen)m(t)390 576 y Fy(ncbo)47
-b(--op_typ=*)e(1.nc)h(2.nc)h(3.nc)g(#)g(Dangerous)e(\(shell)h(may)h
-(try)g(to)g(glob\))390 685 y(ncbo)g(--op_typ='*')d(1.nc)j(2.nc)f(3.nc)h
-(#)g(Safe)g(\('*')g(protected)e(from)i(shell\))390 795
-y(ncbo)g(--op_typ="*")d(1.nc)j(2.nc)f(3.nc)h(#)g(Safe)g(\('*')g
-(protected)e(from)i(shell\))390 904 y(ncbo)g(--op_typ=mlt)d(1.nc)j
-(2.nc)f(3.nc)390 1014 y(ncbo)h(--op_typ=mult)d(1.nc)i(2.nc)h(3.nc)390
-1124 y(ncbo)g(--op_typ=multiply)c(1.nc)j(2.nc)h(3.nc)390
-1233 y(ncbo)g(--op_typ=multiplication)41 b(1.nc)47 b(2.nc)f(3.nc)390
-1343 y(ncmult)g(1.nc)h(2.nc)f(3.nc)h(#)g(First)g(do)g('ln)g(-s)g(ncbo)g
-(ncmult')390 1452 y(ncmultiply)e(1.nc)i(2.nc)f(3.nc)h(#)g(First)g(do)g
-('ln)g(-s)g(ncbo)g(ncmultiply')275 1619 y FD(No)27 b(particular)g
-(argumen)m(t)h(or)f(in)m(v)m(o)s(cation)i(form)d(is)h(preferred.)39
-b(Users)26 b(are)i(encouraged)f(to)h(use)f(the)150 1729
-y(forms)j(whic)m(h)g(are)h(most)f(in)m(tuitiv)m(e)i(to)g(them.)275
-1896 y(Normally)-8 b(,)42 b Fy(ncbo)c FD(will)i(fail)g(unless)e(an)h
-(op)s(eration)h(t)m(yp)s(e)f(is)g(sp)s(eci\014ed)f(with)h(`)p
-Fy(-y)p FD(')g(\(equiv)-5 b(alen)m(t)41 b(to)150 2006
-y(`)p Fy(--op_typ)p FD('\).)84 b(Y)-8 b(ou)46 b(ma)m(y)g(create)g
-(exceptions)h(to)f(this)f(rule)g(to)h(suit)f(y)m(our)g(particular)h
-(tastes,)k(in)150 2115 y(conformance)22 b(with)g(y)m(our)f(site's)i(p)s
-(olicy)f(on)f Fz(sym)m(b)s(olic)h(links)j FD(to)e(executables)g
-(\(\014les)f(of)g(a)g(di\013eren)m(t)g(name)150 2225
-y(p)s(oin)m(t)28 b(to)g(the)g(actual)i(executable\).)41
-b(F)-8 b(or)29 b(man)m(y)f(y)m(ears,)h Fy(ncdiff)d FD(w)m(as)j(the)f
-(main)f(binary)g(\014le)h(op)s(erator.)150 2335 y(As)45
-b(a)h(result,)j(man)m(y)d(users)e(prefer)h(to)h(con)m(tin)m(ue)h(in)m
-(v)m(oking)f Fy(ncdiff)e FD(rather)h(than)g(memorizing)i(a)150
-2444 y(new)29 b(command)f(\(`)p Fy(ncbo)i(-y)g Fq(sbt)11
-b FD('\))28 b(whic)m(h)h(b)s(eha)m(v)m(es)g(iden)m(tically)i(to)f(the)f
-(original)i Fy(ncdiff)c FD(command.)150 2554 y(Ho)m(w)m(ev)m(er,)43
-b(from)c(a)g(soft)m(w)m(are)i(main)m(tenance)f(standp)s(oin)m(t,)h
-(main)m(taining)f(a)f(distinct)h(executable)g(for)150
-2663 y(eac)m(h)27 b(binary)f(op)s(eration)g(\(e.g.,)j
-Fy(ncadd)p FD(\))c(is)h(un)m(tenable,)i(and)d(a)i(single)f(executable,)
-j Fy(ncbo)p FD(,)d(is)h(desirable.)150 2773 y(T)-8 b(o)31
-b(main)m(tain)h(bac)m(kw)m(ard)f(compatibilit)m(y)-8
-b(,)33 b(therefore,)e FC(NCO)g FD(automatically)i(creates)f(a)f(sym)m
-(b)s(olic)g(link)150 2882 y(from)24 b Fy(ncbo)g FD(to)i
-Fy(ncdiff)p FD(.)37 b(Th)m(us)24 b Fy(ncdiff)f FD(is)i(called)i(an)d
-Fz(alternate)j(in)m(v)m(o)s(cation)g FD(of)e Fy(ncbo)p
-FD(.)38 b Fy(ncbo)24 b FD(supp)s(orts)150 2992 y(man)m(y)32
-b(additional)h(alternate)h(in)m(v)m(o)s(cations)g(whic)m(h)d(m)m(ust)h
-(b)s(e)g(man)m(ually)g(activ)-5 b(ated.)48 b(Should)31
-b(users)g(or)150 3102 y(system)39 b(adminitrators)h(decide)f(to)h
-(activ)-5 b(ate)41 b(them,)h(the)d(pro)s(cedure)f(is)h(simple.)66
-b(F)-8 b(or)40 b(example,)i(to)150 3211 y(use)c(`)p Fy(ncadd)p
-FD(')g(instead)g(of)h(`)p Fy(ncbo)29 b(--op_typ=add)p
-FD(',)38 b(simply)g(create)i(a)f(sym)m(b)s(olic)g(link)f(from)g
-Fy(ncbo)f FD(to)150 3321 y Fy(ncadd)390 3288 y Fw(3)426
-3321 y FD(.)64 b(The)38 b(alternatate)i(in)m(v)m(o)s(cations)g(supp)s
-(orted)d(for)h(eac)m(h)h(op)s(eration)g(t)m(yp)s(e)f(are)h(listed)f(ab)
-s(o)m(v)m(e.)150 3430 y(Alternativ)m(ely)-8 b(,)33 b(users)d(ma)m(y)h
-(alw)m(a)m(ys)h(de\014ne)d(`)p Fy(ncadd)p FD(')h(as)h(an)f
-Fz(alias)35 b FD(to)c(`)p Fy(ncbo)f(--op_typ=add)p FD(')3425
-3397 y Fw(4)3459 3430 y FD(.)275 3598 y(It)50 b(is)h(imp)s(ortan)m(t)g
-(to)g(main)m(tain)h(p)s(ortabilit)m(y)f(in)f FC(NCO)h
-FD(scripts.)101 b(Therefore)50 b(w)m(e)h(recommend)150
-3707 y(that)56 b(site-sp)s(ec\014c)g(in)m(v)m(o)s(cations)i(\(e.g.,)64
-b(`)p Fy(ncadd)p FD('\))55 b(b)s(e)g(used)f(only)i(in)f(in)m(teractiv)m
-(e)k(sessions)c(from)150 3817 y(the)d(command-line.)106
-b(F)-8 b(or)52 b(scripts,)57 b(w)m(e)c(recommend)e(using)g(the)h(full)g
-(in)m(v)m(o)s(cation)i(\(e.g.,)59 b(`)p Fy(ncbo)150 3926
-y(--op_typ=add)p FD('\).)38 b(This)30 b(ensures)f(p)s(ortabilit)m(y)i
-(of)g(scripts)f(b)s(et)m(w)m(een)h(users)f(and)f(sites.)275
-4093 y Fy(ncbo)22 b FD(op)s(erates)i(\(e.g.,)j(adds\))c(v)-5
-b(ariables)24 b(in)g Fz(\014le)p 1899 4093 28 4 v 40
-w(2)31 b FD(with)23 b(the)h(corresp)s(onding)f(v)-5 b(ariables)24
-b(\(those)g(with)150 4203 y(the)34 b(same)h(name\))f(in)g
-Fz(\014le)p 1055 4203 V 40 w(1)41 b FD(and)34 b(stores)g(the)h(results)
-e(in)h Fz(\014le)p 2303 4203 V 40 w(3)p FD(.)52 b(V)-8
-b(ariables)36 b(in)d Fz(\014le)p 3089 4203 V 40 w(2)42
-b FD(are)34 b Fz(broadcast)150 4313 y FD(to)f(conform)f(to)h(the)f
-(corresp)s(onding)g(v)-5 b(ariable)33 b(in)e Fz(\014le)p
-2046 4313 V 41 w(1)39 b FD(if)33 b(necessary)-8 b(,)33
-b(but)f(the)g(rev)m(erse)h(is)f(not)h(true.)150 4422
-y(Broadcasting)k(a)f(v)-5 b(ariable)36 b(means)f(creating)i(data)f(in)f
-(non-existing)h(dimensions)f(from)g(the)g(data)h(in)150
-4532 y(existing)h(dimensions.)55 b(F)-8 b(or)36 b(example,)i(a)e(t)m(w)
-m(o)h(dimensional)e(v)-5 b(ariable)37 b(in)e Fz(\014le)p
-2907 4532 V 40 w(2)43 b FD(can)36 b(b)s(e)f(subtracted)150
-4641 y(from)28 b(a)h(four,)f(three,)h(or)f(t)m(w)m(o)i(\(but)e(not)g
-(one)h(or)f(zero\))i(dimensional)e(v)-5 b(ariable)29
-b(\(of)g(the)g(same)g(name\))f(in)p 150 4773 1200 4 v
-199 4841 a Fw(2)275 4872 y Fu(The)18 b(widely)h(used)f(shell)i(Bash)f
-(correctly)g(in)n(terprets)f(all)i(these)f(sp)r(ecial)h(c)n(haracters)f
-(ev)n(en)f(when)g(they)g(are)h(not)f(quoted.)275 4960
-y(That)23 b(is,)i(Bash)f(do)r(es)g(not)f(prev)n(en)n(t)f
-Fs(NCO)h Fu(from)h(correctly)g(in)n(terpreting)f(the)g(in)n(tended)g
-(arithmetic)h(op)r(eration)g(when)275 5047 y(the)h(follo)n(wing)k
-(argumen)n(ts)d(are)g(giv)n(en)g(\(without)g(quotes\))f(to)i
-Ft(ncbo)p Fu(:)35 b(`)p Ft(--op_typ=+)p Fu(',)30 b(`)p
-Ft(--op_typ=-)p Fu(',)f(`)p Ft(--op_typ=*)p Fu(',)275
-5134 y(and)c(`)p Ft(--op_typ=/)p Fu(')199 5205 y Fw(3)275
-5237 y Fu(The)g(command)h(to)g(do)g(this)g(is)g(`)p Ft(ln)g(-s)g(-f)g
-(ncbo)h(ncadd)p Fu(')199 5308 y Fw(4)275 5340 y Fu(The)e(command)h(to)g
-(do)g(this)g(is)g(`)p Ft(alias)h(ncadd='ncbo)h(--op_typ=add')p
-Fu(')p eop end
-%%Page: 125 127
-TeXDict begin 125 126 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(125)150
-299 y Fy(file_1)p FD(.)38 b(This)25 b(functionalit)m(y)j(allo)m(ws)g
-(the)e(user)g(to)h(compute)f(anomalies)i(from)e(the)g(mean.)40
-b(Note)27 b(that)150 408 y(v)-5 b(ariables)33 b(in)g
-Fz(\014le)p 760 408 28 4 v 40 w(1)40 b FD(are)33 b Fr(not)42
-b FD(broadcast)34 b(to)f(conform)g(to)g(the)g(dimensions)f(in)g
-Fz(\014le)p 3057 408 V 41 w(2)p FD(.)48 b(In)32 b(the)h(future,)150
-518 y(w)m(e)e(will)g(broadcast)g(v)-5 b(ariables)31 b(in)f
-Fz(\014le)p 1476 518 V 40 w(1)p FD(,)h(if)f(necessary)h(to)g(conform)g
-(to)g(their)f(coun)m(terparts)h(in)f Fz(\014le)p 3645
-518 V 40 w(2)p FD(.)150 628 y(Th)m(us,)c(presen)m(tly)-8
-b(,)28 b(the)e(n)m(um)m(b)s(er)f(of)i(dimensions,)f(or)g
-Fz(rank)p FD(,)h(of)f(an)m(y)h(pro)s(cessed)e(v)-5 b(ariable)27
-b(in)f Fz(\014le)p 3442 628 V 40 w(1)34 b FD(m)m(ust)150
-737 y(b)s(e)28 b(greater)i(than)e(or)g(equal)h(to)h(the)e(rank)g(of)h
-(the)g(same)g(v)-5 b(ariable)29 b(in)f Fz(\014le)p 2656
-737 V 40 w(2)p FD(.)41 b(F)-8 b(urthermore,)29 b(the)f(size)i(of)150
-847 y(all)h(dimensions)f(common)h(to)g(b)s(oth)e Fz(\014le)p
-1553 847 V 40 w(1)38 b FD(and)30 b Fz(\014le)p 1969 847
-V 40 w(2)38 b FD(m)m(ust)31 b(b)s(e)e(equal.)275 1007
-y(When)d(computing)g(anomalies)i(from)e(the)h(mean)f(it)h(is)g(often)f
-(the)h(case)h(that)f Fz(\014le)p 3056 1007 V 40 w(2)34
-b FD(w)m(as)27 b(created)g(b)m(y)150 1116 y(applying)k(an)h(a)m(v)m
-(eraging)i(op)s(erator)e(to)g(a)g(\014le)g(with)f(initially)i(the)f
-(same)g(dimensions)f(as)h Fz(\014le)p 3397 1116 V 40
-w(1)39 b FD(\(often)150 1226 y Fz(\014le)p 272 1226 V
-40 w(1)e FD(itself)7 b(\).)41 b(In)28 b(these)h(cases,)i(creating)f
-Fz(\014le)p 1750 1226 V 40 w(2)36 b FD(with)29 b Fy(ncra)f
-FD(rather)g(than)h Fy(ncwa)f FD(will)h(cause)g(the)g
-Fy(ncbo)150 1336 y FD(op)s(eration)38 b(to)g(fail.)62
-b(F)-8 b(or)37 b(concreteness)i(sa)m(y)f(the)f(record)g(dimension)g(in)
-g Fy(file_1)e FD(is)j Fy(time)p FD(.)60 b(If)36 b Fz(\014le)p
-3670 1336 V 41 w(2)150 1445 y FD(w)m(ere)j(created)g(b)m(y)f(a)m(v)m
-(eraging)j Fz(\014le)p 1365 1445 V 40 w(1)46 b FD(o)m(v)m(er)40
-b(the)e Fy(time)f FD(dimension)h(with)g(the)g Fy(ncra)f
-FD(op)s(erator)i(rather)150 1555 y(than)33 b(with)h(the)g
-Fy(ncwa)e FD(op)s(erator,)j(then)f Fz(\014le)p 1689 1555
-V 40 w(2)41 b FD(will)34 b(ha)m(v)m(e)h(a)f Fy(time)e
-FD(dimension)i(of)f(size)f(1)i(rather)f(than)150 1664
-y(ha)m(ving)k(no)g Fy(time)f FD(dimension)g(at)i(all)1496
-1631 y Fw(5)1534 1664 y FD(.)60 b(In)36 b(this)h(case)g(the)g(input)f
-(\014les)h(to)h Fy(ncbo)p FD(,)f Fz(\014le)p 3216 1664
-V 40 w(1)45 b FD(and)36 b Fz(\014le)p 3645 1664 V 40
-w(2)p FD(,)150 1774 y(will)c(ha)m(v)m(e)g(unequally)f(sized)g
-Fy(time)f FD(dimensions)h(whic)m(h)g(causes)g Fy(ncbo)f
-FD(to)i(fail.)44 b(T)-8 b(o)32 b(prev)m(en)m(t)f(this)g(from)150
-1884 y(o)s(ccuring,)g(use)f Fy(ncwa)f FD(to)i(remo)m(v)m(e)h(the)e
-Fy(time)g FD(dimension)f(from)h Fz(\014le)p 2486 1884
-V 41 w(2)p FD(.)41 b(See)30 b(the)h(example)g(b)s(elo)m(w.)275
-2044 y Fy(ncbo)j FD(nev)m(er)j(op)s(erates)f(on)g(co)s(ordinate)h(v)-5
-b(ariables)37 b(or)f(v)-5 b(ariables)36 b(of)g(t)m(yp)s(e)h
-Fy(NC_CHAR)d FD(or)i Fy(NC_BYTE)p FD(.)150 2153 y(This)d(ensures)g
-(that)h(co)s(ordinates)h(lik)m(e)g(\(e.g.,)h(latitude)f(and)e
-(longitude\))i(are)f(ph)m(ysically)h(meaningful)150 2263
-y(in)h(the)g(output)g(\014le,)i Fz(\014le)p 1029 2263
-V 40 w(3)p FD(.)58 b(This)36 b(b)s(eha)m(vior)g(is)g(hardco)s(ded.)57
-b Fy(ncbo)35 b FD(applies)h(sp)s(ecial)h(rules)f(to)h(some)150
-2372 y FC(CF)p FD(-de\014ned)44 b(\(and/or)h FC(NCAR)c(CCSM)k
-FD(or)g FC(NCAR)c(CCM)j FD(\014elds\))h(suc)m(h)f(as)h
-Fy(ORO)p FD(.)83 b(See)45 b(Section)g(3.30)150 2482 y([CF)33
-b(Con)m(v)m(en)m(tions],)j(page)e(64)g(for)f(a)h(complete)g
-(description.)50 b(Finally)-8 b(,)35 b(w)m(e)f(note)g(that)g
-Fy(ncflint)d FD(\(see)150 2592 y(Section)23 b(4.6)g([nc\015in)m(t)f
-(netCDF)h(File)g(In)m(terp)s(olator],)i(page)e(132\))h(is)e(designed)g
-(for)g(\014le)g(in)m(terp)s(olation.)39 b(As)150 2701
-y(suc)m(h,)29 b(it)g(also)h(p)s(erforms)d(\014le)i(subtraction,)g
-(addition,)g(m)m(ultiplication,)j(alb)s(eit)d(in)f(a)h(more)g(con)m(v)m
-(oluted)150 2811 y(w)m(a)m(y)i(than)f Fy(ncbo)p FD(.)150
-2971 y(EXAMPLES)275 3131 y(Sa)m(y)g(\014les)g(`)p Fy(85_0112.nc)p
-FD(')d(and)j(`)p Fy(86_0112.nc)p FD(')d(eac)m(h)k(con)m(tain)g(12)g
-(mon)m(ths)f(of)g(data.)41 b(Compute)30 b(the)150 3241
-y(c)m(hange)i(in)e(the)g(mon)m(thly)h(a)m(v)m(erages)i(from)c(1985)k
-(to)e(1986:)390 3401 y Fy(ncbo)47 b(-op_typ=sub)d(86_0112.nc)h
-(85_0112.nc)g(86m85_0112.nc)390 3510 y(ncdiff)h(86_0112.nc)f
-(85_0112.nc)g(86m85_0112.nc)275 3670 y FD(The)32 b(follo)m(wing)j
-(examples)f(demonstrate)f(the)h(broadcasting)g(feature)f(of)h
-Fy(ncbo)p FD(.)48 b(Sa)m(y)33 b(w)m(e)h(wish)e(to)150
-3780 y(compute)25 b(the)f(mon)m(thly)g(anomalies)i(of)e
-Fy(T)g FD(from)g(the)g(y)m(early)i(a)m(v)m(erage)h(of)d
-Fy(T)g FD(for)g(the)g(y)m(ear)h(1985.)41 b(First)24 b(w)m(e)150
-3889 y(create)33 b(the)e(1985)h(a)m(v)m(erage)i(from)d(the)g(mon)m
-(thly)g(data,)h(whic)m(h)f(is)g(stored)g(with)f(the)i(record)f
-(dimension)150 3999 y Fy(time)p FD(.)390 4159 y Fy(ncra)47
-b(85_0112.nc)e(85.nc)390 4269 y(ncwa)i(-O)g(-a)g(time)g(85.nc)f(85.nc)
-150 4429 y FD(The)c(second)h(command,)i Fy(ncwa)p FD(,)g(gets)f(rid)e
-(of)g(the)h Fy(time)e FD(dimension)h(of)h(size)31 b(1)43
-b(that)h Fy(ncra)d FD(left)i(in)150 4538 y(`)p Fy(85.nc)p
-FD('.)66 b(No)m(w)40 b(none)f(of)g(the)g(v)-5 b(ariables)40
-b(in)f(`)p Fy(85.nc)p FD(')f(has)h(a)g Fy(time)f FD(dimension.)67
-b(A)30 b(quic)m(k)m(er)40 b(w)m(a)m(y)g(to)150 4648 y(accomplish)31
-b(this)f(is)h(to)g(use)f Fy(ncwa)f FD(from)h(the)h(b)s(eginning:)390
-4808 y Fy(ncwa)47 b(-a)g(time)f(85_0112.nc)f(85.nc)150
-4968 y FD(W)-8 b(e)32 b(are)e(no)m(w)h(ready)f(to)h(use)f
-Fy(ncbo)f FD(to)i(compute)g(the)g(anomalies)g(for)g(1985:)p
-150 5066 1200 4 v 199 5134 a Fw(5)275 5166 y Fu(This)d(is)h(b)r(ecause)
-f Ft(ncra)h Fu(collapses)h(the)d(record)h(dimension)h(to)f(a)g(size)h
-(of)d(1)i(\(making)g(it)g(a)h Fp(degenerate)j Fu(dimension\),)275
-5253 y(but)20 b(do)r(es)i(not)f(remo)n(v)n(e)h(it,)g(while,)i(unless)e
-(`)p Ft(-b)p Fu(')g(is)g(giv)n(en,)h Ft(ncwa)f Fu(remo)n(v)n(es)g(all)g
-(a)n(v)n(eraged)g(dimensions.)34 b(In)20 b(other)i(w)n(ords,)275
-5340 y(b)n(y)i(default)i Ft(ncra)h Fu(c)n(hanges)f(v)l(ariable)g(size)h
-(but)e(not)g(rank,)h(while,)g Ft(ncwa)h Fu(c)n(hanges)f(b)r(oth)f(v)l
-(ariable)i(size)f(and)f(rank.)p eop end
-%%Page: 126 128
-TeXDict begin 126 127 bop 150 -116 a FD(126)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(ncdiff)46 b(-v)h(T)h
-(85_0112.nc)d(85.nc)h(t_anm_85_0112.nc)150 472 y FD(Eac)m(h)40
-b(of)g(the)g(12)g(records)f(in)h(`)p Fy(t_anm_85_0112.nc)p
-FD(')35 b(no)m(w)40 b(con)m(tains)g(the)g(mon)m(thly)g(deviation)h(of)e
-Fy(T)150 582 y FD(from)30 b(the)g(ann)m(ual)h(mean)f(of)h
-Fy(T)f FD(for)g(eac)m(h)i(gridp)s(oin)m(t.)275 756 y(Sa)m(y)f(w)m(e)h
-(wish)e(to)i(compute)g(the)f(mon)m(thly)h(gridp)s(oin)m(t)f(anomalies)i
-(from)e(the)g(zonal)h(ann)m(ual)g(mean.)150 865 y(A)e
-Fz(zonal)i(mean)i FD(is)f(a)i(quan)m(tit)m(y)g(that)f(has)f(b)s(een)g
-(a)m(v)m(eraged)j(o)m(v)m(er)f(the)f(longitudinal)h(\(or)f
-Fz(x)6 b FD(\))34 b(direction.)150 975 y(First)d(w)m(e)f(use)g
-Fy(ncwa)g FD(to)h(a)m(v)m(erage)h(o)m(v)m(er)g(longitudinal)f
-(direction)g Fy(lon)p FD(,)f(creating)h(`)p Fy(85_x.nc)p
-FD(',)e(the)i(zonal)150 1084 y(mean)g(of)g(`)p Fy(85.nc)p
-FD('.)42 b(Then)30 b(w)m(e)i(use)f Fy(ncbo)f FD(to)h(subtract)g(the)h
-(zonal)g(ann)m(ual)f(means)g(from)f(the)i(mon)m(thly)150
-1194 y(gridp)s(oin)m(t)e(data:)390 1367 y Fy(ncwa)47
-b(-a)g(lon)g(85.nc)f(85_x.nc)390 1477 y(ncdiff)g(85_0112.nc)f(85_x.nc)h
-(tx_anm_85_0112.nc)150 1650 y FD(This)j(examples)i(w)m(orks)f(assuming)
-f(`)p Fy(85_0112.nc)p FD(')f(has)i(dimensions)f Fy(time)g
-FD(and)h Fy(lon)p FD(,)k(and)49 b(that)150 1760 y(`)p
-Fy(85_x.nc)p FD(')29 b(has)h(no)g Fy(time)f FD(or)i Fy(lon)e
-FD(dimension.)275 1934 y(As)35 b(a)h(\014nal)f(example,)i(sa)m(y)g(w)m
-(e)f(ha)m(v)m(e)g(\014v)m(e)g(y)m(ears)g(of)g(mon)m(thly)f(data)h
-(\(i.e.,)j(60)31 b(mon)m(ths\))36 b(stored)f(in)150 2043
-y(`)p Fy(8501_8912.nc)p FD(')23 b(and)j(w)m(e)h(wish)e(to)i(create)h(a)
-e(\014le)h(whic)m(h)f(con)m(tains)h(the)f(t)m(w)m(elv)m(e)j(mon)m(th)d
-(seasonal)i(cycle)150 2153 y(of)c(the)h(a)m(v)m(erage)h(mon)m(thly)f
-(anomaly)g(from)e(the)i(\014v)m(e-y)m(ear)g(mean)g(of)f(this)g(data.)39
-b(The)24 b(follo)m(wing)h(metho)s(d)150 2262 y(is)33
-b(just)f(one)h(p)s(erm)m(utation)g(of)g(man)m(y)f(whic)m(h)h(will)g
-(accomplish)g(the)g(same)g(result.)48 b(First)33 b(use)g
-Fy(ncwa)e FD(to)150 2372 y(create)h(the)e(\014v)m(e-y)m(ear)i(mean:)390
-2545 y Fy(ncwa)47 b(-a)g(time)f(8501_8912.nc)f(8589.nc)150
-2719 y FD(Next)f(use)f Fy(ncbo)f FD(to)h(create)i(a)e(\014le)h(con)m
-(taining)g(the)f(di\013erence)h(of)f(eac)m(h)h(mon)m(th's)f(data)h
-(from)f(the)150 2829 y(\014v)m(e-y)m(ear)32 b(mean:)390
-3002 y Fy(ncbo)47 b(8501_8912.nc)d(8589.nc)i(t_anm_8501_8912.nc)150
-3176 y FD(No)m(w)38 b(use)f Fy(ncks)f FD(to)i(group)f(the)h(\014v)m(e)f
-(Jan)m(uary)g(anomalies)i(together)g(in)e(one)h(\014le,)h(and)e(use)g
-Fy(ncra)f FD(to)150 3285 y(create)30 b(the)f(a)m(v)m(erage)i(anomaly)f
-(for)e(all)i(\014v)m(e)f(Jan)m(uarys.)39 b(These)29 b(commands)f(are)h
-(em)m(b)s(edded)e(in)i(a)g(shell)150 3395 y(lo)s(op)h(so)h(they)g(are)f
-(rep)s(eated)h(for)f(all)h(t)m(w)m(elv)m(e)i(mon)m(ths:)390
-3568 y Fy(for)47 b(idx)g(in)g({1..12};)f(do)h(#)g(Bash)g(Shell)f
-(\(version)g(3.0+\))485 3678 y(idx=`printf)f("\04502d")h(${idx}`)g(#)i
-(Zero-pad)d(to)i(preserve)f(order)485 3787 y(ncks)h(-F)g(-d)g
-(time,${idx},,12)d(t_anm_8501_8912.nc)f(foo.${idx})485
-3897 y(ncra)k(foo.${idx})e(t_anm_8589_${idx}.nc)390 4007
-y(done)390 4116 y(for)i(idx)g(in)g(01)g(02)g(03)h(04)f(05)g(06)g(07)g
-(08)g(09)h(10)f(11)g(12;)g(do)g(#)h(Bourne)e(Shell)485
-4226 y(ncks)h(-F)g(-d)g(time,${idx},,12)d(t_anm_8501_8912.nc)f
-(foo.${idx})485 4335 y(ncra)k(foo.${idx})e(t_anm_8589_${idx}.nc)390
-4445 y(done)390 4555 y(foreach)h(idx)h(\(01)g(02)g(03)g(04)g(05)g(06)h
-(07)f(08)g(09)g(10)g(11)g(12\))g(#)h(C)f(Shell)485 4664
-y(ncks)g(-F)g(-d)g(time,${idx},,12)d(t_anm_8501_8912.nc)f(foo.${idx})
-485 4774 y(ncra)k(foo.${idx})e(t_anm_8589_${idx}.nc)390
-4883 y(end)150 5057 y FD(Note)39 b(that)g Fy(ncra)d FD(understands)g
-(the)i Fy(stride)e FD(argumen)m(t)j(so)f(the)g(t)m(w)m(o)h(commands)e
-(inside)h(the)g(lo)s(op)150 5166 y(ma)m(y)31 b(b)s(e)f(com)m(bined)g
-(in)m(to)i(the)e(single)h(command)390 5340 y Fy(ncra)47
-b(-F)g(-d)g(time,${idx},,12)d(t_anm_8501_8912.nc)e(foo.${idx})p
-eop end
-%%Page: 127 129
-TeXDict begin 127 128 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(127)150
-299 y(Finally)-8 b(,)37 b(use)d Fy(ncrcat)f FD(to)i(concatenate)i(the)d
-(12)d(a)m(v)m(erage)37 b(mon)m(thly)e(anomaly)g(\014les)f(in)m(to)i
-(one)e(t)m(w)m(elv)m(e-)150 408 y(record)c(\014le)h(whic)m(h)f(con)m
-(tains)h(the)g(en)m(tire)g(seasonal)h(cycle)g(of)e(the)h(mon)m(thly)f
-(anomalies:)390 568 y Fy(ncrcat)46 b(t_anm_8589_??.nc)d
-(t_anm_8589_0112.nc)p eop end
-%%Page: 128 130
-TeXDict begin 128 129 bop 150 -116 a FD(128)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(4.4)68 b Fe(ncea)43
-b FB(netCDF)i(Ensem)l(ble)h(Av)l(erager)150 458 y FD(SYNT)-8
-b(AX)390 618 y Fy(ncea)47 b([-3])f([-4])h([-6])g([-A])f([-C])h([-c])390
-727 y([--cnk_dmn)e(nm,sz])h([--cnk_map)f(map])i([--cnk_plc)e(plc])h
-([--cnk_scl)f(sz])390 837 y([-D)i Fq(dbg)11 b Fy(])46
-b([-d)h Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42 b([-F])k([-h])h([-L)g
-Fq(dfl_lvl)11 b Fy(])45 b([-l)i Fq(path)11 b Fy(])390
-946 y([-n)47 b Fq(loop)11 b Fy(])46 b([-O])g([-o)h Fq(output-file)11
-b Fy(])44 b([-p)j Fq(path)11 b Fy(])46 b([-R])h([-r])390
-1056 y([-t)g Fq(thr_nbr)11 b Fy(])45 b([-v)i Fq(var)11
-b Fy([,...)m(]])47 b([-X)g(...])g([-x])g([-y)f Fq(op_typ)11
-b Fy(])390 1166 y([)p Fq(input-files)g Fy(])44 b([)p
-Fq(output-file)11 b Fy(])150 1325 y FD(DESCRIPTION)275
-1484 y Fy(ncea)26 b FD(p)s(erforms)f(gridp)s(oin)m(t)i(a)m(v)m(erages)j
-(of)e(v)-5 b(ariables)28 b(across)f(an)h(arbitrary)f(n)m(um)m(b)s(er)e
-(\(an)j Fz(ensem)m(ble)5 b FD(\))150 1594 y(of)32 b Fz(input-\014les)p
-FD(,)f(with)h(eac)m(h)h(\014le)e(receiving)i(an)f(equal)g(w)m(eigh)m(t)
-h(in)e(the)h(a)m(v)m(erage.)47 b Fy(ncea)31 b FD(a)m(v)m(erages)j(en)m
-(tire)150 1704 y(\014les,)d(and)f(w)m(eigh)m(ts)h(eac)m(h)h(\014le)e
-(ev)m(enly)-8 b(.)43 b(This)29 b(is)i(distinct)g(from)f
-Fy(ncra)p FD(,)f(whic)m(h)h(only)h(a)m(v)m(erages)i(o)m(v)m(er)f(the)
-150 1813 y(record)e(dimension)g(\(e.g.,)i Fz(time)5 b
-FD(\),)32 b(and)e(w)m(eigh)m(ts)i(eac)m(h)f(record)f(in)h(the)f(record)
-g(dimension)g(ev)m(enly)-8 b(,)275 1973 y(V)g(ariables)35
-b(in)f(the)h Fz(output-\014le)40 b FD(are)34 b(the)h(same)g(size)g(as)g
-(the)f(v)-5 b(ariable)35 b(in)g(eac)m(h)g(of)g(the)f
-Fz(input-\014les)p FD(,)150 2082 y(and)42 b(all)h Fz(input-\014les)i
-FD(m)m(ust)d(b)s(e)g(the)g(same)h(size.)77 b(The)42 b(only)h(exception)
-g(is)f(that)h Fy(ncea)e FD(allo)m(ws)j(\014les)150 2192
-y(to)39 b(di\013er)f(in)g(the)h(record)f(dimension)f(size)j(if)e(the)g
-(requested)h(record)f(h)m(yp)s(erslab)f(\(see)i(Section)g(3.14)150
-2301 y([Hyp)s(erslabs],)f(page)f(39\))g(resolv)m(es)g(to)g(the)g(same)g
-(size)g(for)f(all)h(\014les.)58 b Fy(ncea)35 b FD(recomputes)i(the)f
-(record)150 2411 y(dimension)24 b(h)m(yp)s(erslab)f(limits)h(for)g(eac)
-m(h)i(input)d(\014le)h(so)g(that)h(co)s(ordinate)g(limits)g(ma)m(y)g(b)
-s(e)e(used)g(to)i(select)150 2521 y(equal)k(length)f(timeseries)h(from)
-f(unequal)g(length)g(\014les.)40 b(This)27 b(simpli\014es)h(analysis)h
-(of)f(unequal)g(length)150 2630 y(timeseries)j(from)f(sim)m(ulation)i
-(ensem)m(bles)f(\(e.g.,)h(the)e(CMIP)g(IPCC)g(AR4)h(arc)m(hiv)m(e\).)
-275 2790 y Fy(ncea)36 b Fr(always)41 b(aver)-5 b(ages)45
-b FD(co)s(ordinate)39 b(v)-5 b(ariables)38 b(regardless)f(of)h(the)f
-(arithmetic)i(op)s(eration)f(t)m(yp)s(e)150 2899 y(p)s(erformed)30
-b(on)h(the)g(non-co)s(ordinate)h(v)-5 b(ariables.)44
-b(\(see)32 b(Section)g(3.25)h([Op)s(eration)e(T)m(yp)s(es],)h(page)f
-(56\).)150 3009 y(All)c(dimensions,)g(including)g(the)g(record)f
-(dimension,)h(are)g(treated)h(iden)m(tically)h(and)d(preserv)m(ed)g(in)
-h(the)150 3118 y Fz(output-\014le)p FD(.)275 3278 y(See)j(Section)g
-(2.6)h([Av)m(eraging)h(vs.)40 b(Concatenating],)32 b(page)f(15,)g(for)f
-(a)g(description)g(of)g(the)g(distinc-)150 3387 y(tions)i(b)s(et)m(w)m
-(een)h(the)f(v)-5 b(arious)32 b(a)m(v)m(eragers)i(and)d(concatenators.)
-47 b(As)32 b(a)g(m)m(ulti-\014le)h(op)s(erator,)g Fy(ncea)e
-FD(will)150 3497 y(read)i(the)g(list)g(of)h Fz(input-\014les)i
-FD(from)c Fy(stdin)f FD(if)i(they)g(are)h(not)f(sp)s(eci\014ed)f(as)h
-(p)s(ositional)h(argumen)m(ts)f(on)150 3606 y(the)e(command)f(line)g
-(\(see)i(Section)f(2.7)g([Large)h(Num)m(b)s(ers)d(of)h(Files],)i(page)f
-(16\).)275 3766 y(The)24 b(\014le)h(is)g(the)h(logical)h(unit)e(of)g
-(organization)i(for)e(the)g(results)g(of)g(man)m(y)g(scien)m(ti\014c)i
-(studies.)38 b(Often)150 3875 y(one)26 b(wishes)e(to)i(generate)h(a)f
-(\014le)f(whic)m(h)g(is)g(the)h(gridp)s(oin)m(t)f(a)m(v)m(erage)j(of)d
-(man)m(y)h(separate)g(\014les.)39 b(This)24 b(ma)m(y)150
-3985 y(b)s(e)k(to)h(reduce)g(statistical)i(noise)e(b)m(y)g(com)m
-(bining)g(the)g(results)f(of)h(a)g(large)h(n)m(um)m(b)s(er)d(of)i(exp)s
-(erimen)m(ts,)g(or)150 4095 y(it)35 b(ma)m(y)g(simply)f(b)s(e)g(a)h
-(step)g(in)f(a)h(pro)s(cedure)f(whose)g(goal)i(is)f(to)g(compute)g
-(anomalies)h(from)e(a)h(mean)150 4204 y(state.)42 b(In)29
-b(an)m(y)i(case,)h(when)d(one)h(desires)g(to)h(generate)h(a)f(\014le)f
-(whose)g(prop)s(erties)f(are)i(the)f(mean)h(of)f(all)150
-4314 y(the)h(input)e(\014les,)i(then)f Fy(ncea)f FD(is)h(the)h(op)s
-(erator)f(to)i(use.)275 4473 y Fy(ncea)f FD(only)i(allo)m(ws)h(co)s
-(ordinate)g(v)-5 b(ariables)33 b(to)g(b)s(e)f(pro)s(cessed)h(b)m(y)f
-(the)h(linear)g(a)m(v)m(erage,)j(minim)m(um,)150 4583
-y(and)24 b(maxim)m(um)h(op)s(erations.)39 b Fy(ncea)24
-b FD(will)h(return)f(the)h(linear)h(a)m(v)m(erage)h(of)e(co)s
-(ordinates)h(unless)e(extrema)150 4692 y(are)36 b(explicitly)g
-(requested.)55 b(Other)35 b(requested)g(op)s(erations)g(\(e.g.,)j
-(square-ro)s(ot,)f(RMS\))f(are)f(applied)150 4802 y(only)24
-b(to)h(non-co)s(ordinate)g(v)-5 b(ariables.)40 b(In)23
-b(these)i(cases)g(the)g(linear)f(a)m(v)m(erage)j(of)e(the)f(co)s
-(ordinate)h(v)-5 b(ariable)150 4912 y(will)31 b(b)s(e)e(returned.)150
-5071 y(EXAMPLES)275 5230 y(Consider)i(a)i(mo)s(del)f(exp)s(erimen)m(t)g
-(whic)m(h)g(generated)i(\014v)m(e)e(realizations)j(of)d(one)h(y)m(ear)g
-(of)f(data,)i(sa)m(y)150 5340 y(1985.)42 b(Y)-8 b(ou)30
-b(can)g(imagine)g(that)g(the)g(exp)s(erimen)m(ter)g(sligh)m(tly)g(p)s
-(erturbs)e(the)h(initial)i(conditions)f(of)g(the)p eop
-end
-%%Page: 129 131
-TeXDict begin 129 130 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(129)150
-299 y(problem)31 b(b)s(efore)g(generating)i(eac)m(h)g(new)e(solution.)
-46 b(Assume)31 b(eac)m(h)i(\014le)f(con)m(tains)g(all)h(t)m(w)m(elv)m
-(e)h(mon)m(ths)150 408 y(\(a)41 b(seasonal)g(cycle\))g(of)f(data)h(and)
-e(w)m(e)i(w)m(an)m(t)g(to)f(pro)s(duce)f(a)h(single)h(\014le)f(con)m
-(taining)h(the)f(ensem)m(ble)150 518 y(a)m(v)m(erage)h(\(mean\))e
-(seasonal)g(cycle.)66 b(Here)39 b(the)f(n)m(umeric)g(\014lename)h
-(su\016x)e(denotes)h(the)h(exp)s(erimen)m(t)150 628 y(n)m(um)m(b)s(er)
-29 b(\()p Fr(not)40 b FD(the)31 b(mon)m(th\):)390 787
-y Fy(ncea)47 b(85_01.nc)e(85_02.nc)h(85_03.nc)f(85_04.nc)h(85_05.nc)f
-(85.nc)390 897 y(ncea)i(85_0[1-5].nc)d(85.nc)390 1006
-y(ncea)j(-n)g(5,2,1)f(85_01.nc)g(85.nc)150 1166 y FD(These)30
-b(three)g(commands)f(pro)s(duce)g(iden)m(tical)i(answ)m(ers.)41
-b(See)30 b(Section)g(3.5)h([Sp)s(ecifying)f(Input)e(Files],)150
-1275 y(page)39 b(26,)j(for)c(an)h(explanation)h(of)e(the)h
-(distinctions)g(b)s(et)m(w)m(een)h(these)f(metho)s(ds.)64
-b(The)38 b(output)h(\014le,)150 1385 y(`)p Fy(85.nc)p
-FD(',)30 b(is)g(the)g(same)h(size)g(as)g(the)f(inputs)f(\014les.)41
-b(It)30 b(con)m(tains)i(12)f(mon)m(ths)f(of)h(data)g(\(whic)m(h)f(migh)
-m(t)h(or)150 1494 y(migh)m(t)g(not)g(b)s(e)f(stored)h(in)f(the)h
-(record)g(dimension,)f(dep)s(ending)f(on)i(the)g(input)e(\014les\),)j
-(but)e(eac)m(h)h(v)-5 b(alue)150 1604 y(in)30 b(the)h(output)f(\014le)g
-(is)g(the)h(a)m(v)m(erage)i(of)e(the)f(\014v)m(e)h(v)-5
-b(alues)31 b(in)f(the)g(input)g(\014les.)275 1763 y(In)f(the)h
-(previous)g(example,)h(the)f(user)f(could)h(ha)m(v)m(e)i(obtained)e
-(the)g(ensem)m(ble)h(a)m(v)m(erage)h(v)-5 b(alues)31
-b(in)f(a)150 1873 y(particular)h(spatio-temp)s(oral)g(region)g(b)m(y)g
-(adding)f(a)g(h)m(yp)s(erslab)g(argumen)m(t)h(to)g(the)f(command,)h
-(e.g.,)390 2032 y Fy(ncea)47 b(-d)g(time,0,2)e(-d)j(lat,-23.5,23.5)43
-b(85_??.nc)j(85.nc)150 2192 y FD(In)33 b(this)h(case)h(the)e(output)h
-(\014le)g(w)m(ould)f(con)m(tain)i(only)f(three)g(slices)h(of)f(data)g
-(in)g(the)g Fz(time)39 b FD(dimension.)150 2301 y(These)29
-b(three)g(slices)h(are)f(the)g(a)m(v)m(erage)j(of)d(the)g(\014rst)f
-(three)h(slices)h(from)e(the)h(input)f(\014les.)40 b(Additionally)-8
-b(,)150 2411 y(only)30 b(data)i(inside)e(the)g(tropics)h(is)f
-(included.)p eop end
-%%Page: 130 132
-TeXDict begin 130 131 bop 150 -116 a FD(130)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(4.5)68 b Fe(ncecat)42
-b FB(netCDF)j(Ensem)l(ble)h(Concatenator)150 458 y FD(SYNT)-8
-b(AX)390 630 y Fy(ncecat)46 b([-3])h([-4])f([-6])h([-A])g([-C])f([-c])
-390 740 y([--cnk_dmn)f(nm,sz])h([--cnk_map)f(map])i([--cnk_plc)e(plc])h
-([--cnk_scl)f(sz])390 849 y([-D)i Fq(dbg)11 b Fy(])46
-b([-d)h Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42 b([-F])k([-h])h([-L)g
-Fq(dfl_lvl)11 b Fy(])45 b([-l)i Fq(path)11 b Fy(])390
-959 y([-M])47 b([-n)g Fq(loop)11 b Fy(])45 b([-O])i([-o)g
-Fq(output-file)11 b Fy(])44 b([-p)j Fq(path)11 b Fy(])46
-b([-R])g([-r])390 1068 y([-t)h Fq(thr_nbr)11 b Fy(])45
-b([-u)i Fq(ulm_nm)11 b Fy(])45 b([-v)i Fq(var)11 b Fy([,...)m(]])48
-b([-X)f(...])f([-x])390 1178 y([)p Fq(input-files)11
-b Fy(])44 b([)p Fq(output-file)11 b Fy(])150 1350 y FD(DESCRIPTION)275
-1522 y Fy(ncecat)35 b FD(concatenates)k(an)e(arbitrary)g(n)m(um)m(b)s
-(er)f(of)h(input)f(\014les)i(in)m(to)g(a)f(single)h(output)e(\014le.)61
-b(The)150 1631 y Fz(input-\014les)41 b FD(are)d(stored)f(consecutiv)m
-(ely)j(as)e(records)f(in)g Fz(output-\014le)p FD(.)63
-b(Eac)m(h)38 b(v)-5 b(ariable)38 b(\(except)h(co)s(or-)150
-1741 y(dinate)34 b(v)-5 b(ariables\))34 b(in)f(eac)m(h)h(input)e
-(\014le)h(b)s(ecomes)h(one)f(record)g(in)g(the)h(same)f(v)-5
-b(ariable)34 b(in)f(the)g(output)150 1851 y(\014le.)61
-b(Co)s(ordinate)37 b(v)-5 b(ariables)38 b(are)f(not)g(concatenated,)k
-(they)c(are)h(instead)f(simply)g(copied)g(from)g(the)150
-1960 y(\014rst)27 b(input)f(\014le)h(to)h(the)g Fz(output-\014le)p
-FD(.)40 b(All)27 b Fz(input-\014les)k FD(m)m(ust)c(con)m(tain)i(all)f
-(extracted)h(v)-5 b(ariables)27 b(\(or)h(else)150 2070
-y(there)j(w)m(ould)f(b)s(e)f Fy(")p FD(gaps)p Fy(")h
-FD(in)h(the)f(output)g(\014le\).)275 2242 y(A)j(new)g(record)g
-(dimension)f(is)i(the)f(glue)h(whic)m(h)f(binds)f(the)h(input)g(\014le)
-g(data)h(together.)51 b(The)32 b(new)150 2351 y(record)40
-b(dimension)f(name)g(is,)k(b)m(y)c(default,)k(\\record".)69
-b(Its)40 b(name)f(can)h(b)s(e)f(sp)s(eci\014ed)g(with)g(the)h(`)p
-Fy(-u)150 2461 y Fq(ulm_nm)11 b FD(')28 b(short)j(option)f(\(or)h(the)g
-(`)p Fy(--ulm_nm)p FD(')d(or)j(`)p Fy(rcd_nm)p FD(')e(long)i
-(options\).)275 2633 y(Eac)m(h)24 b(extracted)i(v)-5
-b(ariable)24 b(m)m(ust)g(b)s(e)f(constan)m(t)j(in)d(size)i(and)f(rank)f
-(across)i(all)f Fz(input-\014les)p FD(.)38 b(The)24 b(only)150
-2742 y(exception)34 b(is)e(that)h Fy(ncecat)d FD(allo)m(ws)k(\014les)e
-(to)h(di\013er)f(in)g(the)h(record)f(dimension)g(size)h(if)f(the)h
-(requested)150 2852 y(record)21 b(h)m(yp)s(erslab)f(\(see)h(Section)h
-(3.14)g([Hyp)s(erslabs],)h(page)f(39\))g(resolv)m(es)g(to)f(the)g(same)
-h(size)f(for)g(all)h(\014les.)150 2961 y(This)28 b(allo)m(ws)i(easier)f
-(gluing/a)m(v)m(eraging)j(of)c(unequal)g(length)h(timeseries)h(from)e
-(sim)m(ulation)i(ensem)m(bles)150 3071 y(\(e.g.,)i(the)f(IPCC)e(AR4)i
-(arc)m(hiv)m(e\).)275 3243 y(Th)m(us,)g(the)g Fz(output-\014le)37
-b FD(size)32 b(is)g(the)g(sum)e(of)i(the)g(sizes)g(of)g(the)g
-(extracted)h(v)-5 b(ariables)32 b(in)f(the)h(input)150
-3352 y(\014les.)79 b(See)43 b(Section)h(2.6)h([Av)m(eraging)g(vs.)79
-b(Concatenating],)48 b(page)c(15,)k(for)43 b(a)g(description)g(of)h
-(the)150 3462 y(distinctions)f(b)s(et)m(w)m(een)h(the)f(v)-5
-b(arious)43 b(a)m(v)m(eragers)i(and)e(concatenators.)80
-b(As)43 b(a)g(m)m(ulti-\014le)h(op)s(erator,)150 3572
-y Fy(ncecat)37 b FD(will)h(read)g(the)h(list)g(of)f Fz(input-\014les)k
-FD(from)37 b Fy(stdin)g FD(if)h(they)h(are)g(not)f(sp)s(eci\014ed)g(as)
-g(p)s(ositional)150 3681 y(argumen)m(ts)31 b(on)f(the)h(command)f(line)
-g(\(see)i(Section)f(2.7)g([Large)h(Num)m(b)s(ers)d(of)h(Files],)i(page)
-f(16\).)275 3853 y(T)-8 b(urn)19 b(o\013)h(global)i(metadata)g(cop)m
-(ying.)39 b(By)20 b(default)h(all)g FC(NCO)f FD(op)s(erators)h(cop)m(y)
-g(the)g(global)g(metadata)150 3963 y(of)k(the)f(\014rst)g(input)f
-(\014le)i(in)m(to)g Fz(output-\014le)p FD(.)39 b(This)24
-b(helps)g(preserv)m(e)g(the)h(pro)m(v)m(enance)h(of)e(the)h(output)f
-(data.)150 4072 y(Ho)m(w)m(ev)m(er,)j(the)c(use)g(of)h(metadata)h(is)e
-(burgeoning)g(and)g(is)g(not)h(uncommon)e(to)i(encoun)m(ter)g(\014les)f
-(with)g(ex-)150 4182 y(cessiv)m(e)29 b(amoun)m(ts)e(of)g(extraneous)h
-(metadata.)41 b(Extracting)28 b(small)g(bits)f(of)g(data)h(from)f(suc)m
-(h)f(\014les)i(leads)150 4291 y(to)g(output)f(\014les)h(whic)m(h)f(are)
-g(m)m(uc)m(h)h(larger)g(than)f(necessary)h(due)f(to)h(the)g
-(automatically)i(copied)e(meta-)150 4401 y(data.)39 b
-Fy(ncecat)22 b FD(supp)s(orts)g(turning)h(o\013)i(the)f(default)g(cop)m
-(ying)h(of)f(global)h(metadata)g(via)g(the)f(`)p Fy(-M)p
-FD(')f(switc)m(h)150 4511 y(\(or)31 b(its)f(long)h(option)g(equiv)-5
-b(alen)m(ts,)32 b(`)p Fy(--glb_mtd_spr)p FD(')27 b(and)j(`)p
-Fy(--global_metadata_suppress)o FD('\).)275 4682 y(Consider)43
-b(\014v)m(e)i(realizations,)51 b(`)p Fy(85a.nc)p FD(',)c(`)p
-Fy(85b.nc)p FD(',)53 b(.)22 b(.)h(.)41 b(`)p Fy(85e.nc)p
-FD(')j(of)g(1985)j(predictions)d(from)150 4792 y(the)31
-b(same)f(climate)j(mo)s(del.)40 b(Then)29 b Fy(ncecat)g(85?.nc)g
-(85_ens.nc)f FD(glues)i(the)h(individual)f(realizations)150
-4902 y(together)e(in)m(to)g(the)f(single)g(\014le,)h(`)p
-Fy(85_ens.nc)p FD('.)37 b(If)26 b(an)h(input)e(v)-5 b(ariable)28
-b(w)m(as)f(dimensioned)f([)p Fy(lat)p FD(,)p Fy(lon)p
-FD(],)g(it)150 5011 y(will)g(b)m(y)g(default)h(ha)m(v)m(e)g(dimensions)
-e([)p Fy(record)p FD(,)p Fy(lat)p FD(,)p Fy(lon)p FD(])f(in)i(the)g
-(output)g(\014le.)39 b(A)30 b(restriction)d(of)g Fy(ncecat)150
-5121 y FD(is)d(that)h(the)f(h)m(yp)s(erslabs)f(of)i(the)f(pro)s(cessed)
-g(v)-5 b(ariables)25 b(m)m(ust)f(b)s(e)f(the)i(same)f(from)g(\014le)g
-(to)h(\014le.)39 b(Normally)150 5230 y(this)28 b(means)f(all)i(the)f
-(input)f(\014les)h(are)g(the)g(same)g(size,)i(and)d(con)m(tain)i(data)g
-(on)e(di\013eren)m(t)i(realizations)h(of)150 5340 y(the)h(same)f(v)-5
-b(ariables.)p eop end
-%%Page: 131 133
-TeXDict begin 131 132 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(131)275
-299 y(Concatenating)44 b(a)f(v)-5 b(ariable)44 b(pac)m(k)m(ed)g(with)f
-(di\013eren)m(t)g(scales)h(across)g(m)m(ultiple)f(datasets)h(is)f(b)s
-(e-)150 408 y(y)m(ond)34 b(the)h(capabilities)h(of)f
-Fy(ncecat)d FD(\(and)i Fy(ncrcat)p FD(,)g(the)h(other)f(concatenator)j
-(\(Section)f(2.6.1)g([Con-)150 518 y(catenation],)41
-b(page)d(15\).)62 b Fy(ncecat)36 b FD(do)s(es)g(not)i(unpac)m(k)f
-(data,)i(it)f(simply)f Fr(c)-5 b(opies)45 b FD(the)37
-b(data)h(from)f(the)150 628 y Fz(input-\014les)p FD(,)c(and)e(the)i
-(metadata)h(from)e(the)g Fr(\014rst)42 b Fz(input-\014le)p
-FD(,)33 b(to)g(the)g Fz(output-\014le)p FD(.)46 b(This)32
-b(means)g(that)150 737 y(data)26 b(compressed)e(with)h(a)g(pac)m(king)h
-(con)m(v)m(en)m(tion)h(m)m(ust)e(use)g(the)g(iden)m(tical)i(pac)m(king)
-f(parameters)f(\(e.g.,)150 847 y Fy(scale_factor)31 b
-FD(and)k Fy(add_offset)p FD(\))d(for)i(a)h(giv)m(en)h(v)-5
-b(ariable)36 b(across)f Fr(al)5 b(l)45 b FD(input)34
-b(\014les.)53 b(Otherwise)35 b(the)150 956 y(concatenated)d(dataset)g
-(will)f(not)f(unpac)m(k)g(correctly)-8 b(.)42 b(The)30
-b(w)m(ork)-5 b(around)30 b(for)g(cases)h(where)e(the)i(pac)m(k-)150
-1066 y(ing)36 b(parameters)h(di\013er)e(across)i Fz(input-\014les)i
-FD(requires)d(three)g(steps:)52 b(First,)38 b(unpac)m(k)e(the)h(data)f
-(using)150 1176 y Fy(ncpdq)p FD(.)h(Second,)25 b(concatenate)i(the)d
-(unpac)m(k)m(ed)f(data)i(using)e Fy(ncecat)p FD(,)h(Third,)g(re-pac)m
-(k)h(the)f(result)f(with)150 1285 y Fy(ncpdq)p FD(.)150
-1445 y(EXAMPLES)275 1604 y(Consider)31 b(a)i(mo)s(del)f(exp)s(erimen)m
-(t)g(whic)m(h)g(generated)i(\014v)m(e)e(realizations)j(of)d(one)h(y)m
-(ear)g(of)f(data,)i(sa)m(y)150 1714 y(1985.)42 b(Y)-8
-b(ou)30 b(can)g(imagine)g(that)g(the)g(exp)s(erimen)m(ter)g(sligh)m
-(tly)g(p)s(erturbs)e(the)h(initial)i(conditions)f(of)g(the)150
-1823 y(problem)h(b)s(efore)g(generating)i(eac)m(h)g(new)e(solution.)46
-b(Assume)31 b(eac)m(h)i(\014le)f(con)m(tains)g(all)h(t)m(w)m(elv)m(e)h
-(mon)m(ths)150 1933 y(\(a)g(seasonal)h(cycle\))g(of)f(data)g(and)f(w)m
-(e)h(w)m(an)m(t)g(to)g(pro)s(duce)e(a)i(single)g(\014le)g(con)m
-(taining)h(all)f(the)g(seasonal)150 2042 y(cycles.)42
-b(Here)31 b(the)f(n)m(umeric)h(\014lename)f(su\016x)g(denotes)g(the)h
-(exp)s(erimen)m(t)f(n)m(um)m(b)s(er)g(\()p Fr(not)40
-b FD(the)30 b(mon)m(th\):)390 2202 y Fy(ncecat)46 b(85_01.nc)g
-(85_02.nc)f(85_03.nc)h(85_04.nc)f(85_05.nc)h(85.nc)390
-2311 y(ncecat)g(85_0[1-5].nc)f(85.nc)390 2421 y(ncecat)h(-n)h(5,2,1)g
-(85_01.nc)e(85.nc)150 2580 y FD(These)30 b(three)g(commands)f(pro)s
-(duce)g(iden)m(tical)i(answ)m(ers.)41 b(See)30 b(Section)g(3.5)h([Sp)s
-(ecifying)f(Input)e(Files],)150 2690 y(page)39 b(26,)j(for)c(an)h
-(explanation)h(of)e(the)h(distinctions)g(b)s(et)m(w)m(een)h(these)f
-(metho)s(ds.)64 b(The)38 b(output)h(\014le,)150 2800
-y(`)p Fy(85.nc)p FD(',)30 b(is)g(\014v)m(e)h(times)g(the)f(size)h(as)g
-(a)g(single)g Fz(input-\014le)p FD(.)40 b(It)31 b(con)m(tains)g(60)g
-(mon)m(ths)g(of)f(data.)275 2959 y(One)21 b(often)h(prefers)f(that)h
-(the)g(\(new\))g(record)g(dimension)f(ha)m(v)m(e)i(a)f(more)g
-(descriptiv)m(e,)j(con)m(text-based)150 3068 y(name)30
-b(than)h(simply)e(\\record".)42 b(This)30 b(is)g(easily)h(accomplished)
-h(with)e(the)g(`)p Fy(-u)g Fq(ulm_nm)11 b FD(')29 b(switc)m(h:)390
-3228 y Fy(ncecat)46 b(-u)h(realization)e(85_0[1-5].nc)f(85.nc)150
-3387 y FD(Users)h(are)g(more)g(lik)m(ely)h(to)f(understand)e(the)i
-(data)h(pro)s(cessing)e(history)h(when)f(suc)m(h)g(descriptiv)m(e)150
-3497 y(co)s(ordinates)31 b(are)g(used.)275 3656 y(Consider)36
-b(a)i(\014le)g(with)f(an)h(existing)h(record)e(dimension)g(named)g
-Fy(time)p FD(.)62 b(and)37 b(supp)s(ose)f(the)i(user)150
-3766 y(wishes)c(to)g(con)m(v)m(ert)i Fy(time)d FD(from)g(a)i(record)f
-(dimension)f(to)i(a)g(non-record)e(dimension.)52 b(This)33
-b(ma)m(y)i(b)s(e)150 3875 y(useful,)d(for)f(example,)j(when)d(the)h
-(user)f(has)g(another)i(use)e(for)h(the)g(record)g(v)-5
-b(ariable.)46 b(The)31 b(pro)s(cedure)150 3985 y(is)f(to)i(use)e
-Fy(ncecat)e FD(follo)m(w)m(ed)k(b)m(y)f Fy(ncwa)p FD(:)390
-4144 y Fy(ncecat)46 b(in.nc)g(out.nc)h(#)g(Convert)f(time)g(to)i
-(non-record)d(dimension)390 4254 y(ncwa)i(-a)g(record)f(in.nc)g(out.nc)
-g(#)i(Remove)e(new)h(degenerate)e(record)h(dimension)150
-4413 y FD(The)28 b(second)h(step)g(remo)m(v)m(es)h(the)f(degenerate)h
-(record)e(dimension.)40 b(See)29 b(Section)g(4.8)h([ncp)s(dq)d(netCDF)
-150 4523 y(P)m(erm)m(ute)49 b(Dimensions)f(Quic)m(kly],)54
-b(page)49 b(142)g(and)e(Section)i(4.7)g([nc)m(ks)g(netCDF)g(Kitc)m(hen)
-f(Sink],)150 4633 y(page)41 b(135)h(for)f(other)g(metho)s(ds)e(of)i(of)
-g(c)m(hanging)h(v)-5 b(ariable)41 b(dimensionalit)m(y)-8
-b(,)45 b(including)40 b(the)h(record)150 4742 y(dimension.)p
-eop end
-%%Page: 132 134
-TeXDict begin 132 133 bop 150 -116 a FD(132)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(4.6)68 b Fe(ncflint)42
-b FB(netCDF)j(File)g(In)l(terp)t(olator)150 458 y FD(SYNT)-8
-b(AX)390 639 y Fy(ncflint)46 b([-3])g([-4])h([-6])g([-A])f([-C])h([-c])
-390 749 y([--cnk_dmn)e(nm,sz])h([--cnk_map)f(map])i([--cnk_plc)e(plc])h
-([--cnk_scl)f(sz])390 858 y([-D)i Fq(dbg)11 b Fy(])46
-b([-d)h Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42 b([-F])k([-h])h([-i)g
-Fq(var)p Fy(,)p Fq(val3)11 b Fy(])390 968 y([-L)47 b
-Fq(dfl_lvl)11 b Fy(])45 b([-l)i Fq(path)11 b Fy(])46
-b([-O])g([-o)h Fq(file_3)11 b Fy(])46 b([-p)h Fq(path)11
-b Fy(])45 b([-R])i([-r])390 1077 y([-t)g Fq(thr_nbr)11
-b Fy(])45 b([-v)i Fq(var)11 b Fy([,...)m(]])47 b([-w)g
-Fq(wgt1)11 b Fy([,)p Fq(wgt2)g Fy(]])44 b([-X)j(...])f([-x])390
-1187 y Fq(file_1)57 b(file_2)f Fy([)p Fq(file_3)11 b
-Fy(])150 1368 y FD(DESCRIPTION)275 1548 y Fy(ncflint)25
-b FD(creates)j(an)f(output)f(\014le)i(that)f(is)g(a)h(linear)f(com)m
-(bination)h(of)g(the)f(input)f(\014les.)39 b(This)27
-b(linear)150 1658 y(com)m(bination)37 b(is)e(a)h(w)m(eigh)m(ted)h(a)m
-(v)m(erage,)i(a)d(normalized)g(w)m(eigh)m(ted)h(a)m(v)m(erage,)i(or)d
-(an)f(in)m(terp)s(olation)i(of)150 1768 y(the)27 b(input)f(\014les.)40
-b(Co)s(ordinate)27 b(v)-5 b(ariables)28 b(are)f(not)g(acted)i(up)s(on)c
-(in)i(an)m(y)g(case,)i(they)e(are)h(simply)e(copied)150
-1877 y(from)k Fz(\014le)p 487 1877 28 4 v 40 w(1)p FD(.)275
-2058 y(There)j(are)g(t)m(w)m(o)i(conceptually)g(distinct)f(metho)s(ds)f
-(of)h(using)f Fy(ncflint)p FD(.)48 b(The)33 b(\014rst)g(metho)s(d)g(is)
-g(to)150 2168 y(sp)s(ecify)f(the)g(w)m(eigh)m(t)i(eac)m(h)g(input)d
-(\014le)h(con)m(tributes)h(to)g(the)g(output)e(\014le.)47
-b(In)31 b(this)i(metho)s(d,)f(the)g(v)-5 b(alue)150 2277
-y Fz(v)g(al3)45 b FD(of)37 b(a)h(v)-5 b(ariable)37 b(in)g(the)g(output)
-g(\014le)g Fz(\014le)p 1749 2277 V 40 w(3)45 b FD(is)37
-b(determined)f(from)h(its)g(v)-5 b(alues)37 b Fz(v)-5
-b(al1)46 b FD(and)36 b Fz(v)-5 b(al2)45 b FD(in)150 2387
-y(the)37 b(t)m(w)m(o)h(input)d(\014les)i(according)g(to)h
-Fn(v)s(al)r FD(3)e(=)f Fn(w)r(g)s(t)p FD(1)26 b FA(\002)e
-Fn(v)s(al)r FD(1)h(+)f Fn(w)r(g)s(t)p FD(2)i FA(\002)e
-Fn(v)s(al)r FD(2)37 b(.)60 b(Here)37 b(at)g(least)h Fz(wgt1)p
-FD(,)150 2496 y(and,)g(optionally)-8 b(,)39 b Fz(wgt2)p
-FD(,)g(are)e(sp)s(eci\014ed)f(on)g(the)h(command)f(line)h(with)f(the)g
-(`)p Fy(-w)p FD(')h(\(or)f(`)p Fy(--weight)p FD(')f(or)150
-2606 y(`)p Fy(--wgt_var)p FD('\))40 b(switc)m(h.)75 b(If)41
-b(only)h Fz(wgt1)50 b FD(is)42 b(sp)s(eci\014ed)f(then)g
-Fz(wgt2)50 b FD(is)42 b(automatically)i(computed)e(as)150
-2716 y Fz(wgt2)33 b FD(=)25 b(1)11 b FA(\000)g Fz(wgt1)d
-FD(.)39 b(Note)27 b(that)f(w)m(eigh)m(ts)h(larger)f(than)31
-b(1)26 b(are)g(allo)m(w)m(ed.)41 b(Th)m(us)24 b(it)i(is)g(p)s(ossible)f
-(to)h(sp)s(ecify)150 2825 y Fz(wgt1)42 b FD(=)34 b(2)i(and)f
-Fz(wgt2)42 b FD(=)34 b FA(\000)p FD(3.)57 b(One)35 b(can)h(use)f(this)h
-(functionalit)m(y)h(to)f(m)m(ultiply)g(all)g(the)g(v)-5
-b(alues)36 b(in)g(a)150 2935 y(giv)m(en)31 b(\014le)g(b)m(y)f(a)h
-(constan)m(t.)275 3115 y(The)c(second)i(metho)s(d)f(of)h(using)f
-Fy(ncflint)e FD(is)j(to)g(sp)s(ecify)f(the)g(in)m(terp)s(olation)i
-(option)f(with)h(`)p Fy(-i)p FD(')f(\(or)150 3225 y(with)36
-b(the)g(`)p Fy(--ntp)p FD(')g(or)g(`)p Fy(--interpolate)p
-FD(')d(long)k(options\).)59 b(This)35 b(is)h(really)h(the)g(in)m(v)m
-(erse)g(of)f(the)h(\014rst)150 3335 y(metho)s(d)25 b(in)g(the)h(follo)m
-(wing)h(sense.)39 b(When)25 b(the)h(user)f(sp)s(eci\014es)g(the)h(w)m
-(eigh)m(ts)g(directly)-8 b(,)28 b Fy(ncflint)c FD(has)h(no)150
-3444 y(w)m(ork)k(to)h(do)f(b)s(esides)g(m)m(ultiplying)g(the)h(input)e
-(v)-5 b(alues)29 b(b)m(y)g(their)h(resp)s(ectiv)m(e)g(w)m(eigh)m(ts)g
-(and)f(adding)g(the)150 3554 y(results)h(together)h(to)g(pro)s(duce)e
-(the)i(output)e(v)-5 b(alues.)41 b(It)30 b(mak)m(es)h(sense)f(to)h(use)
-f(this)g(when)f(the)i(w)m(eigh)m(ts)150 3663 y(are)g(kno)m(wn)f
-Fr(a)j(priori)q FD(.)275 3844 y(Another)h(class)i(of)f(problems)f(has)h
-(the)g Fz(arriv)-5 b(al)36 b(v)-5 b(alue)40 b FD(\(i.e.,)e
-Fz(v)-5 b(al3)7 b FD(\))37 b(of)e(a)g(particular)g(v)-5
-b(ariable)36 b Fz(v)-5 b(ar)150 3954 y FD(kno)m(wn)31
-b Fr(a)i(priori)r FD(.)45 b(In)31 b(this)g(case,)j(the)e(implied)f(w)m
-(eigh)m(ts)i(can)g(alw)m(a)m(ys)g(b)s(e)e(inferred)g(b)m(y)g(examining)
-i(the)150 4063 y(v)-5 b(alues)36 b(of)g Fz(v)-5 b(ar)42
-b FD(in)36 b(the)f(input)g(\014les.)57 b(This)35 b(results)g(in)h(one)g
-(equation)h(in)e(t)m(w)m(o)i(unkno)m(wns,)f Fz(wgt1)44
-b FD(and)150 4173 y Fz(wgt2)7 b FD(:)52 b Fn(v)s(al)r
-FD(3)35 b(=)f Fn(w)r(g)s(t)p FD(1)25 b FA(\002)e Fn(v)s(al)r
-FD(1)i(+)e Fn(w)r(g)s(t)p FD(2)i FA(\002)f Fn(v)s(al)r
-FD(2)36 b(.)56 b(Unique)36 b(determination)g(of)g(the)f(w)m(eigh)m(ts)i
-(requires)150 4283 y(imp)s(osing)42 b(the)h(additional)g(constrain)m(t)
-h(of)e(normalization)i(on)f(the)f(w)m(eigh)m(ts:)66 b
-Fz(wgt1)37 b FD(+)28 b Fz(wgt2)53 b FD(=)45 b(1.)150
-4392 y(Th)m(us,)31 b(to)h(use)f(the)h(in)m(terp)s(olation)h(option,)g
-(the)e(user)g(sp)s(eci\014es)g Fz(v)-5 b(ar)38 b FD(and)31
-b Fz(v)-5 b(al3)40 b FD(with)31 b(the)h(`)p Fy(-i)p FD(')f(option.)150
-4502 y Fy(ncflint)26 b FD(then)i(computes)g Fz(wgt1)37
-b FD(and)27 b Fz(wgt2)p FD(,)j(and)e(uses)f(these)i(w)m(eigh)m(ts)h(on)
-e(all)h(v)-5 b(ariables)28 b(to)h(generate)150 4611 y(the)39
-b(output)g(\014le.)67 b(Although)39 b Fz(v)-5 b(ar)45
-b FD(ma)m(y)40 b(ha)m(v)m(e)g(an)m(y)g(n)m(um)m(b)s(er)d(of)j
-(dimensions)e(in)h(the)g(input)f(\014les,)j(it)150 4721
-y(m)m(ust)d(represen)m(t)f(a)i(single,)h(scalar)f(v)-5
-b(alue.)63 b(Th)m(us)37 b(an)m(y)h(dimensions)f(asso)s(ciated)i(with)f
-Fz(v)-5 b(ar)44 b FD(m)m(ust)38 b(b)s(e)150 4830 y Fz(degenerate)p
-FD(,)32 b(i.e.,)g(of)e(size)i(one.)275 5011 y(If)e(neither)i(`)p
-Fy(-i)p FD(')f(nor)g(`)p Fy(-w)p FD(')g(is)h(sp)s(eci\014ed)e(on)h(the)
-h(command)f(line,)h Fy(ncflint)e FD(defaults)h(to)h(w)m(eigh)m(ting)150
-5121 y(eac)m(h)38 b(input)d(\014le)i(equally)g(in)g(the)f(output)g
-(\014le.)60 b(This)36 b(is)g(equiv)-5 b(alen)m(t)38 b(to)f(sp)s
-(ecifying)g(`)p Fy(-w)30 b(0.5)p FD(')36 b(or)g(`)p Fy(-w)150
-5230 y(0.5,0.5)p FD('.)52 b(A)m(ttempting)37 b(to)e(sp)s(ecify)f(b)s
-(oth)g(`)p Fy(-i)p FD(')h(and)f(`)p Fy(-w)p FD(')h(metho)s(ds)f(in)h
-(the)f(same)i(command)e(is)h(an)150 5340 y(error.)p eop
-end
-%%Page: 133 135
-TeXDict begin 133 134 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(133)275
-299 y Fy(ncflint)29 b FD(do)s(es)j(not)g(in)m(terp)s(olate)h(v)-5
-b(ariables)32 b(of)g(t)m(yp)s(e)g Fy(NC_CHAR)d FD(and)j
-Fy(NC_BYTE)p FD(.)42 b(This)31 b(b)s(eha)m(vior)h(is)150
-408 y(hardco)s(ded.)275 569 y(Dep)s(ending)27 b(on)h(y)m(our)h(in)m
-(tuition,)g Fy(ncflint)e FD(ma)m(y)i(treat)g(missing)f(v)-5
-b(alues)29 b(unexp)s(ectedly)-8 b(.)40 b(Consider)150
-679 y(a)30 b(p)s(oin)m(t)f(where)g(the)h(v)-5 b(alue)30
-b(in)f(one)h(input)f(\014le,)h(sa)m(y)g Fz(v)-5 b(al1)p
-FD(,)31 b(equals)f(the)g(missing)f(v)-5 b(alue)30 b Fz(mss)p
-3309 679 28 4 v 39 w(v)-5 b(al)p 3461 679 V 41 w(1)37
-b FD(and,)150 788 y(at)31 b(the)e(same)i(p)s(oin)m(t,)f(the)g(corresp)s
-(onding)e(v)-5 b(alue)31 b(in)e(the)h(other)g(input)f(\014le)h
-Fz(v)-5 b(al2)38 b FD(is)30 b(not)g(misssing)f(\(i.e.,)150
-898 y(do)s(es)h(not)h(equal)g Fz(mss)p 911 898 V 39 w(v)-5
-b(al)p 1063 898 V 41 w(2)7 b FD(\).)41 b(There)30 b(are)h(three)g
-(plausible)f(answ)m(ers,)g(and)g(this)g(creates)i(am)m(biguit)m(y)-8
-b(.)275 1059 y(Option)30 b(one)35 b(is)h(to)g(set)g Fz(v)-5
-b(al3)42 b FD(=)34 b Fz(mss)p 1577 1059 V 43 w(v)-5 b(al)p
-1733 1059 V 44 w(1)8 b FD(.)56 b(The)35 b(rationale)i(is)f(that)g
-Fy(ncflint)d FD(is,)38 b(at)e(heart,)h(an)150 1168 y(in)m(terp)s
-(olator)30 b(and)f(in)m(terp)s(olation)h(in)m(v)m(olving)h(a)e(missing)
-g(v)-5 b(alue)29 b(is)g(in)m(trinsically)i(unde\014ned.)38
-b Fy(ncflint)150 1278 y FD(curren)m(tly)29 b(implemen)m(ts)g(this)g(b)s
-(eha)m(vior)g(since)g(it)h(is)f(the)g(most)g(conserv)-5
-b(ativ)m(e)31 b(and)d(least)i(lik)m(ely)h(to)e(lead)150
-1387 y(to)i(misin)m(terpretation.)275 1548 y(Option)f(t)m(w)m(o)36
-b(is)e(to)i(output)e(the)h(w)m(eigh)m(ted)h(v)-5 b(alid)35
-b(data)g(p)s(oin)m(t,)h(i.e.,)h Fn(v)s(al)r FD(3)c(=)f
-Fn(w)r(g)s(t)p FD(2)25 b FA(\002)e Fn(v)s(al)r FD(2)35
-b(.)53 b(The)150 1658 y(rationale)26 b(for)f(this)g(b)s(eha)m(vior)g
-(is)g(that)g(in)m(terp)s(olation)h(is)f(really)h(a)f(w)m(eigh)m(ted)h
-(a)m(v)m(erage)i(of)c(kno)m(wn)h(p)s(oin)m(ts,)150 1767
-y(so)31 b Fy(ncflint)d FD(should)h(w)m(eigh)m(t)j(the)f(v)-5
-b(alid)31 b(p)s(oin)m(t.)275 1928 y(Option)f(three)36
-b(is)h(to)g(return)f(the)g Fr(unweighte)-5 b(d)47 b FD(v)-5
-b(alid)37 b(p)s(oin)m(t,)h(i.e.,)i Fz(v)-5 b(al3)44 b
-FD(=)35 b Fz(v)-5 b(al2)8 b FD(.)59 b(This)36 b(b)s(eha)m(vior)150
-2038 y(w)m(ould)d(app)s(eal)g(to)h(those)g(who)f(use)g
-Fy(ncflint)e FD(to)j(estimate)h(data)f(using)f(the)h(closest)g(a)m(v)-5
-b(ailable)36 b(data.)150 2147 y(When)28 b(a)h(p)s(oin)m(t)f(is)g(not)h
-(brac)m(k)m(eted)h(b)m(y)e(v)-5 b(alid)29 b(data)g(on)f(b)s(oth)f
-(sides,)i(it)g(is)f(b)s(etter)h(to)g(return)e(the)h(kno)m(wn)150
-2257 y(datum)i(than)g(no)g(datum)g(at)h(all.)275 2418
-y(The)40 b(curren)m(t)h(implemen)m(tation)h(uses)e(the)h(\014rst)g
-(approac)m(h,)j(Option)30 b(one.)72 b(If)40 b(y)m(ou)i(ha)m(v)m(e)g
-(strong)150 2527 y(opinions)24 b(on)g(this)h(matter,)h(let)g(us)d(kno)m
-(w,)j(since)f(w)m(e)g(are)f(willing)h(to)g(implemen)m(t)g(the)g(other)f
-(approac)m(hes)150 2637 y(as)31 b(options)f(if)h(there)f(is)h(enough)f
-(in)m(terest.)150 2798 y(EXAMPLES)275 2958 y(Although)24
-b(it)i(has)e(other)h(uses,)h(the)e(in)m(terp)s(olation)i(feature)g(w)m
-(as)f(designed)f(to)i(in)m(terp)s(olate)g Fz(\014le)p
-3558 2958 V 40 w(3)32 b FD(to)150 3068 y(a)f(time)g(b)s(et)m(w)m(een)h
-(existing)f(\014les.)42 b(Consider)29 b(input)h(\014les)h(`)p
-Fy(85.nc)p FD(')e(and)h(`)p Fy(87.nc)p FD(')g(con)m(taining)i(v)-5
-b(ariables)150 3177 y(describing)31 b(the)g(state)i(of)e(a)h(ph)m
-(ysical)f(system)h(at)g(times)f Fy(time)26 b FD(=)g(85)32
-b(and)e Fy(time)c FD(=)g(87.)44 b(Assume)31 b(eac)m(h)150
-3287 y(\014le)36 b(con)m(tains)h(its)f(timestamp)g(in)f(the)h(scalar)h
-(v)-5 b(ariable)36 b Fy(time)p FD(.)55 b(Then,)36 b(to)h(linearly)f(in)
-m(terp)s(olate)h(to)g(a)150 3397 y(\014le)30 b(`)p Fy(86.nc)p
-FD(')g(whic)m(h)g(describ)s(es)g(the)g(state)i(of)e(the)h(system)g(at)g
-(time)g(at)g Fy(time)e FD(=)h(86,)i(w)m(e)e(w)m(ould)h(use)390
-3557 y Fy(ncflint)46 b(-i)h(time,86)f(85.nc)g(87.nc)h(86.nc)275
-3718 y FD(Sa)m(y)39 b(y)m(ou)g(ha)m(v)m(e)h(observ)-5
-b(ational)40 b(data)f(co)m(v)m(ering)i(Jan)m(uary)d(and)g(April)h(1985)
-h(in)f(t)m(w)m(o)h(\014les)e(named)150 3828 y(`)p Fy(85_01.nc)p
-FD(')20 b(and)i(`)p Fy(85_04.nc)p FD(',)g(resp)s(ectiv)m(ely)-8
-b(.)40 b(Then)21 b(y)m(ou)i(can)f(estimate)i(the)e(v)-5
-b(alues)23 b(for)f(F)-8 b(ebruary)22 b(and)150 3937 y(Marc)m(h)35
-b(b)m(y)f(in)m(terp)s(olating)i(the)e(existing)i(data)f(as)f(follo)m
-(ws.)54 b(Com)m(bine)34 b(`)p Fy(85_01.nc)p FD(')f(and)h(`)p
-Fy(85_04.nc)p FD(')150 4047 y(in)c(a)h(2:1)g(ratio)h(to)f(mak)m(e)g(`)p
-Fy(85_02.nc)p FD(':)390 4208 y Fy(ncflint)46 b(-w)h(0.667)f(85_01.nc)g
-(85_04.nc)f(85_02.nc)390 4317 y(ncflint)h(-w)h(0.667,0.333)e(85_01.nc)g
-(85_04.nc)h(85_02.nc)275 4478 y FD(Multiply)30 b(`)p
-Fy(85.nc)p FD(')g(b)m(y)g(3)h(and)f(b)m(y)g FA(\000)p
-FD(2)g(and)g(add)g(them)g(together)i(to)f(mak)m(e)g(`)p
-Fy(tst.nc)p FD(':)390 4639 y Fy(ncflint)46 b(-w)h(3,-2)g(85.nc)f(85.nc)
-g(tst.nc)150 4799 y FD(This)38 b(is)i(an)f(example)h(of)f(a)h(n)m(ull)f
-(op)s(eration,)k(so)c(`)p Fy(tst.nc)p FD(')f(should)g(b)s(e)h(iden)m
-(tical)i(\(within)e(mac)m(hine)150 4909 y(precision\))31
-b(to)g(`)p Fy(85.nc)p FD('.)275 5070 y(Add)41 b(`)p Fy(85.nc)p
-FD(')g(to)i(`)p Fy(86.nc)p FD(')e(to)i(obtain)f(`)p Fy(85p86.nc)p
-FD(',)i(then)d(subtract)h(`)p Fy(86.nc)p FD(')f(from)h(`)p
-Fy(85.nc)p FD(')f(to)150 5179 y(obtain)31 b(`)p Fy(85m86.nc)p
-FD(')390 5340 y Fy(ncflint)46 b(-w)h(1,1)g(85.nc)f(86.nc)h(85p86.nc)p
-eop end
-%%Page: 134 136
-TeXDict begin 134 135 bop 150 -116 a FD(134)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(ncflint)46 b(-w)h(1,-1)g
-(85.nc)f(86.nc)g(85m86.nc)390 408 y(ncdiff)g(85.nc)g(86.nc)h(85m86.nc)
-150 568 y FD(Th)m(us)37 b Fy(ncflint)f FD(can)j(b)s(e)e(used)h(to)g
-(mimic)h(some)f Fy(ncbo)f FD(op)s(erations.)65 b(Ho)m(w)m(ev)m(er)40
-b(this)e(is)g(not)h(a)f(go)s(o)s(d)150 677 y(idea)28
-b(in)f(practice)i(b)s(ecause)f Fy(ncflint)e FD(do)s(es)h(not)h
-(broadcast)g(\(see)g(Section)h(4.3)f([ncb)s(o)g(netCDF)g(Binary)150
-787 y(Op)s(erator],)f(page)f(123\))h(conforming)e(v)-5
-b(ariables)27 b(during)d(arithmetic.)40 b(Th)m(us)25
-b(the)g(\014nal)g(t)m(w)m(o)i(commands)150 897 y(w)m(ould)34
-b(pro)s(duce)f(iden)m(tical)j(results)f(except)g(that)g
-Fy(ncflint)d FD(w)m(ould)i(fail)h(if)g(an)m(y)f(v)-5
-b(ariables)35 b(needed)f(to)150 1006 y(b)s(e)c(broadcast.)275
-1166 y(Rescale)e(the)g(dimensional)f(units)g(of)g(the)g(surface)g
-(pressure)f Fy(prs_sfc)f FD(from)i(P)m(ascals)i(to)f(hectopas-)150
-1275 y(cals)j(\(millibars\))390 1435 y Fy(ncflint)46
-b(-C)h(-v)g(prs_sfc)f(-w)h(0.01,0.0)f(in.nc)g(in.nc)g(out.nc)390
-1544 y(ncatted)g(-a)h(units,prs_sfc,o,c,millib)o(ar)42
-b(out.nc)p eop end
-%%Page: 135 137
-TeXDict begin 135 136 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(135)150
-299 y FB(4.7)68 b Fe(ncks)43 b FB(netCDF)i(Kitc)l(hen)h(Sink)150
-458 y FD(SYNT)-8 b(AX)390 623 y Fy(ncks)47 b([-3])f([-4])h([-6])g([-A])
-f([-a])h([-B])f([-b)h Fq(binary-file)11 b Fy(])44 b([-C])j([-c])390
-733 y([--cnk_dmn)e(nm,sz])h([--cnk_map)f(map])i([--cnk_plc)e(plc])h
-([--cnk_scl)f(sz])390 842 y([-D)i Fq(dbg)11 b Fy(])46
-b([-d)h Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42 b([--fix_rec_dmn])390
-952 y([-F])47 b([-H])f([-h])h([--hdr_pad)e Fq(nbr)11
-b Fy(])46 b([-L)h Fq(dfl_lvl)11 b Fy(])45 b([-l)i Fq(path)11
-b Fy(])46 b([-M])g([-m])h([--mk_rec_dmn)d Fq(dim)11 b
-Fy(])390 1062 y([-O])47 b([-o)g Fq(output-file)11 b Fy(])44
-b([-P])i([-p)h Fq(path)11 b Fy(])46 b([-Q])h([-q])f([-R])h([-r])390
-1171 y([-s)g Fq(format)11 b Fy(])45 b([-u])i([-v)g Fq(var)11
-b Fy([,...)m(]])47 b([-X)g(...])g([-x])390 1281 y Fq(input-file)56
-b Fy([[)p Fq(output-file)11 b Fy(]])150 1446 y FD(DESCRIPTION)275
-1611 y Fy(ncks)24 b FD(com)m(bines)i(selected)i(features)e(of)g
-Fy(ncdump)p FD(,)f Fy(ncextr)p FD(,)g(and)g(the)h(nccut)g(and)f
-(ncpaste)h(sp)s(eci\014ca-)150 1720 y(tions)i(in)m(to)h(one)e(v)m
-(ersatile)j(utilit)m(y)-8 b(.)42 b Fy(ncks)26 b FD(extracts)j(a)f
-(subset)f(of)h(the)g(data)g(from)f Fz(input-\014le)32
-b FD(and)27 b(prin)m(ts)150 1830 y(it)36 b(as)g FC(ASCI)r(I)g
-FD(text)g(to)g(`)p Fy(stdout)p FD(',)g(writes)f(it)h(in)f(\015at)h
-(binary)f(format)h(to)g(`)p Fy(binary-file)p FD(',)e(and)h(writes)150
-1939 y(\(or)c(pastes\))g(it)g(in)f(netCDF)h(format)f(to)i
-Fz(output-\014le)p FD(.)275 2104 y Fy(ncks)k FD(will)h(prin)m(t)g
-(netCDF)h(data)g(in)f FC(ASCI)r(I)g FD(format)h(to)g
-Fy(stdout)p FD(,)f(lik)m(e)i Fy(ncdump)p FD(,)e(but)g(with)f(these)150
-2214 y(di\013erences:)k Fy(ncks)27 b FD(prin)m(ts)h(data)i(in)e(a)h
-(tabular)f(format)h(in)m(tended)g(to)g(b)s(e)f(easy)h(to)g(searc)m(h)g
-(for)g(the)f(data)150 2324 y(y)m(ou)34 b(w)m(an)m(t,)h(one)f(datum)f(p)
-s(er)g(screen)g(line,)i(with)f(all)g(dimension)f(subscripts)f(and)h(co)
-s(ordinate)i(v)-5 b(alues)150 2433 y(\(if)37 b(an)m(y\))g(preceding)f
-(the)h(datum.)58 b(Option)36 b(`)p Fy(-s)p FD(')g(\(or)h(long)g
-(options)f(`)p Fy(--sng_fmt)p FD(')f(and)g(`)p Fy(--string)p
-FD('\))150 2543 y(lets)c(the)g(user)e(format)i(the)g(data)g(using)f
-(C-st)m(yle)h(format)g(strings.)275 2708 y(Options)i(`)p
-Fy(-a)p FD(',)h(`)p Fy(-F)p FD(')f(,)h(`)p Fy(-H)p FD(',)h(`)p
-Fy(-M)p FD(',)f(`)p Fy(-m)p FD(',)g(`)p Fy(-P)p FD(',)h(`)p
-Fy(-Q)p FD(',)f(`)p Fy(-q)p FD(',)g(`)p Fy(-s)p FD(',)h(and)e(`)p
-Fy(-u)p FD(')g(\(and)g(their)g(long)h(option)150 2817
-y(coun)m(terparts\))d(con)m(trol)h(the)f(formatted)f(app)s(earance)h
-(of)g(the)f(data.)275 2982 y Fy(ncks)39 b FD(extracts)j(\(and)e
-(optionally)i(creates)f(a)g(new)f(netCDF)h(\014le)g(comprised)f(of)7
-b(\))41 b(only)f(selected)150 3092 y(v)-5 b(ariables)35
-b(from)e(the)i(input)e(\014le)h(\(similar)h(to)g(the)f(old)g
-Fy(ncextr)e FD(sp)s(eci\014cation\).)53 b(Only)34 b(v)-5
-b(ariables)35 b(and)150 3201 y(co)s(ordinates)23 b(ma)m(y)f(b)s(e)g(sp)
-s(eci\014cally)g(included)g(or)g(excluded|all)h(global)g(attributes)f
-(and)g(an)m(y)g(attribute)150 3311 y(asso)s(ciated)33
-b(with)f(an)g(extracted)i(v)-5 b(ariable)32 b(are)h(copied)f(to)h(the)f
-(screen)g(and/or)g(output)g(netCDF)h(\014le.)150 3421
-y(Options)f(`)p Fy(-c)p FD(',)g(`)p Fy(-C)p FD(',)h(`)p
-Fy(-v)p FD(',)g(and)e(`)p Fy(-x)p FD(')h(\(and)g(their)g(long)h(option)
-f(synon)m(yms\))g(con)m(trol)h(whic)m(h)f(v)-5 b(ariables)150
-3530 y(are)31 b(extracted.)275 3695 y Fy(ncks)44 b FD(extracts)i(h)m
-(yp)s(erslabs)f(from)g(the)g(sp)s(eci\014ed)g(v)-5 b(ariables)46
-b(\()p Fy(ncks)e FD(implemen)m(ts)i(the)g(original)150
-3805 y Fy(nccut)37 b FD(sp)s(eci\014cation\).)67 b(Option)39
-b(`)p Fy(-d)p FD(')f(con)m(trols)i(the)f(h)m(yp)s(erslab)f(sp)s
-(eci\014cation.)66 b(Input)38 b(dimensions)150 3914 y(that)27
-b(are)f(not)h(asso)s(ciated)g(with)f(an)m(y)g(output)g(v)-5
-b(ariable)27 b(do)f(not)g(app)s(ear)g(in)g(the)g(output)g(netCDF.)h
-(This)150 4024 y(feature)k(remo)m(v)m(es)h(sup)s(er\015uous)27
-b(dimensions)j(from)g(netCDF)h(\014les.)275 4189 y Fy(ncks)26
-b FD(will)i(app)s(end)d(v)-5 b(ariables)28 b(and)f(attributes)h(from)f
-(the)h Fz(input-\014le)k FD(to)c Fz(output-\014le)k FD(if)c
-Fz(output-\014le)150 4298 y FD(is)c(a)h(pre-existing)g(netCDF)f(\014le)
-g(whose)g(relev)-5 b(an)m(t)26 b(dimensions)d(conform)h(to)h(dimension)
-f(sizes)g(of)h Fz(input-)150 4408 y(\014le)p FD(.)48
-b(The)33 b(app)s(end)e(features)i(of)g Fy(ncks)f FD(are)h(in)m(tended)g
-(to)h(pro)m(vide)f(a)g(rudimen)m(tary)f(means)h(of)g(adding)150
-4518 y(data)i(from)f(one)g(netCDF)h(\014le)g(to)g(another,)g
-(conforming,)h(netCDF)f(\014le.)52 b(If)34 b(naming)g(con\015icts)h
-(exist)150 4627 y(b)s(et)m(w)m(een)e(the)f(t)m(w)m(o)h(\014les,)g(data)
-f(in)g Fz(output-\014le)37 b FD(is)32 b(usually)g(o)m(v)m(erwritten)h
-(b)m(y)f(the)g(corresp)s(onding)f(data)150 4737 y(from)d
-Fz(input-\014le)p FD(.)39 b(Th)m(us,)28 b(when)f(app)s(ending,)h(the)g
-(user)g(should)f(bac)m(kup)h Fz(output-\014le)33 b FD(in)28
-b(case)h(v)-5 b(aluable)150 4846 y(data)31 b(are)g(inadv)m(ertan)m(tly)
-h(o)m(v)m(erwritten.)275 5011 y(If)h Fz(output-\014le)38
-b FD(exists,)d(the)f(user)f(will)h(b)s(e)f(queried)g(whether)g(to)h
-Fz(o)m(v)m(erwrite)p FD(,)i Fz(app)s(end)p FD(,)d(or)g
-Fz(exit)k FD(the)150 5121 y Fy(ncks)f FD(call)j(completely)-8
-b(.)63 b(Cho)s(osing)37 b Fz(o)m(v)m(erwrite)44 b FD(destro)m(ys)38
-b(the)g(existing)g Fz(output-\014le)k FD(and)37 b(create)i(an)150
-5230 y(en)m(tirely)33 b(new)e(one)h(from)f(the)h(output)f(of)h(the)g
-Fy(ncks)f FD(call.)46 b(App)s(end)29 b(has)j(di\013ering)f(e\013ects)i
-(dep)s(ending)150 5340 y(on)28 b(the)h(uniqueness)e(of)i(the)f(v)-5
-b(ariables)29 b(and)f(attributes)h(output)f(b)m(y)g Fy(ncks)p
-FD(:)39 b(If)28 b(a)h(v)-5 b(ariable)29 b(or)f(attribute)p
-eop end
-%%Page: 136 138
-TeXDict begin 136 137 bop 150 -116 a FD(136)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(extracted)25 b(from)d
-Fz(input-\014le)28 b FD(do)s(es)23 b(not)g(ha)m(v)m(e)h(a)g(name)f
-(con\015ict)h(with)f(the)g(mem)m(b)s(ers)g(of)g Fz(output-\014le)28
-b FD(then)150 408 y(it)34 b(will)f(b)s(e)g(added)g(to)h
-Fz(output-\014le)k FD(without)33 b(o)m(v)m(erwriting)i(an)m(y)f(of)f
-(the)g(existing)i(con)m(ten)m(ts)g(of)e Fz(output-)150
-518 y(\014le)p FD(.)48 b(In)32 b(this)h(case)h(the)f(relev)-5
-b(an)m(t)34 b(dimensions)e(m)m(ust)h(agree)h(\(conform\))f(b)s(et)m(w)m
-(een)h(the)f(t)m(w)m(o)h(\014les;)g(new)150 628 y(dimensions)h(are)h
-(created)h(in)f Fz(output-\014le)41 b FD(as)36 b(required.)57
-b(When)35 b(a)i(name)e(con\015ict)i(o)s(ccurs,)g(a)g(global)150
-737 y(attribute)30 b(from)f Fz(input-\014le)34 b FD(will)c(o)m(v)m
-(erwrite)h(the)f(corresp)s(onding)f(global)h(attribute)h(from)e
-Fz(output-\014le)p FD(.)150 847 y(If)j(the)h(name)g(con\015ict)g(o)s
-(ccurs)f(for)h(a)g(non-record)f(v)-5 b(ariable,)34 b(then)e(the)h
-(dimensions)f(and)g(t)m(yp)s(e)h(of)g(the)150 956 y(v)-5
-b(ariable)28 b(\(and)f(of)g(its)h(co)s(ordinate)g(dimensions,)f(if)g
-(an)m(y\))h(m)m(ust)f(agree)h(\(conform\))g(in)f(b)s(oth)f(\014les.)40
-b(Then)150 1066 y(the)27 b(v)-5 b(ariable)28 b(v)-5 b(alues)28
-b(\(and)e(an)m(y)i(co)s(ordinate)g(dimension)e(v)-5 b(alues\))28
-b(from)f Fz(input-\014le)32 b FD(will)27 b(o)m(v)m(erwrite)i(the)150
-1176 y(corresp)s(onding)g(v)-5 b(ariable)32 b(v)-5 b(alues)30
-b(\(and)g(co)s(ordinate)i(dimension)d(v)-5 b(alues,)31
-b(if)g(an)m(y\))g(in)f Fz(output-\014le)3547 1143 y Fw(1)3584
-1176 y FD(.)275 1343 y(Since)h(there)h(can)g(only)f(b)s(e)g(one)h
-(record)g(dimension)f(in)g(a)h(\014le,)g(the)g(record)f(dimension)g(m)m
-(ust)h(ha)m(v)m(e)150 1452 y(the)23 b(same)h(name)f(\(but)g(not)g
-(necessarily)h(the)f(same)h(size\))g(in)f(b)s(oth)f(\014les)h(if)g(a)h
-(record)f(dimension)f(v)-5 b(ariable)150 1562 y(is)33
-b(to)i(b)s(e)d(app)s(ended.)49 b(If)32 b(the)i(record)f(dimensions)g
-(are)h(of)f(di\013ering)h(sizes,)h(the)f(record)f(dimension)g(of)150
-1671 y Fz(output-\014le)41 b FD(will)36 b(b)s(ecome)g(the)f(greater)i
-(of)f(the)g(t)m(w)m(o)h(record)e(dimension)g(sizes,)j(the)e(record)f(v)
--5 b(ariable)150 1781 y(from)33 b Fz(input-\014le)38
-b FD(will)c(o)m(v)m(erwrite)h(an)m(y)f(coun)m(terpart)g(in)f
-Fz(output-\014le)38 b FD(and)33 b(\014ll)h(v)-5 b(alues)33
-b(will)h(b)s(e)f(written)150 1891 y(to)d(an)m(y)g(gaps)g(left)g(in)g
-(the)f(rest)h(of)g(the)g(record)f(v)-5 b(ariables)30
-b(\(I)g(think\).)40 b(In)29 b(all)i(cases)f(v)-5 b(ariable)30
-b(attributes)150 2000 y(in)f Fz(output-\014le)34 b FD(are)29
-b(sup)s(erseded)e(b)m(y)i(attributes)h(of)f(the)g(same)g(name)g(from)g
-Fz(input-\014le)p FD(,)g(and)f(left)i(alone)150 2110
-y(if)g(there)h(is)f(no)h(name)f(con\015ict.)275 2277
-y(Some)j(users)f(ma)m(y)i(wish)f(to)h(a)m(v)m(oid)h(in)m(teractiv)m(e)h
-Fy(ncks)c FD(queries)i(ab)s(out)f(whether)f(to)i(o)m(v)m(erwrite)h(ex-)
-150 2386 y(isting)j(data.)62 b(F)-8 b(or)38 b(example,)i(batc)m(h)e
-(scripts)f(will)h(fail)g(if)f Fy(ncks)f FD(do)s(es)h(not)h(receiv)m(e)h
-(resp)s(onses)d(to)j(its)150 2496 y(queries.)h(Options)29
-b(`)p Fy(-O)p FD(')g(and)f(`)p Fy(-A)p FD(')h(are)g(a)m(v)-5
-b(ailable)32 b(to)e(force)f(o)m(v)m(erwriting)i(existing)f(\014les)f
-(and)f(v)-5 b(ariables,)150 2605 y(resp)s(ectiv)m(ely)d(.)150
-2820 y Fv(Options)42 b(sp)s(eci\014c)f(to)g Fo(ncks)150
-2967 y FD(The)j(follo)m(wing)i(list)f(pro)m(vides)g(a)f(short)h
-(summary)e(of)i(the)f(features)h(unique)f(to)h Fy(ncks)p
-FD(.)82 b(F)-8 b(eatures)150 3076 y(common)31 b(to)g(man)m(y)f(op)s
-(erators)h(are)g(describ)s(ed)e(in)h(Chapter)g(3)g([Common)h
-(features],)g(page)g(23.)150 3276 y(`)p Fy(-a)p FD(')334
-b(Do)33 b(not)f(alphab)s(etize)h(extracted)g(\014elds.)45
-b(By)32 b(default,)h(the)f(sp)s(eci\014ed)g(output)f(v)-5
-b(ariables)630 3386 y(are)38 b(extracted,)i(prin)m(ted,)f(and)d
-(written)i(to)f(disk)g(in)g(alphab)s(etical)h(order.)61
-b(This)36 b(tends)630 3495 y(to)h(mak)m(e)f(long)h(output)e(lists)h
-(easier)h(to)g(searc)m(h)f(for)g(particular)g(v)-5 b(ariables.)57
-b(Sp)s(ecifying)630 3605 y Fy(-a)32 b FD(results)f(in)h(the)h(v)-5
-b(ariables)32 b(b)s(eing)g(extracted,)i(prin)m(ted,)f(and)e(written)h
-(to)h(disk)f(in)g(the)630 3714 y(order)i(in)f(whic)m(h)h(they)g(w)m
-(ere)h(sa)m(v)m(ed)g(in)f(the)g(input)f(\014le.)52 b(Th)m(us)34
-b Fy(-a)f FD(retains)h(the)h(original)630 3824 y(ordering)30
-b(of)h(the)f(v)-5 b(ariables.)42 b(Also)31 b(`)p Fy(--abc)p
-FD(')e(and)h(`)p Fy(--alphabetize)p FD('.)150 3999 y(`)p
-Fy(-B)g(`file')p FD(')630 4108 y(Activ)-5 b(ate)56 b(nativ)m(e)e(mac)m
-(hine)h(binary)d(output)h(writing)h(to)g(the)f(default)h(binary)f
-(\014le,)630 4218 y(`)p Fy(ncks.bnr)p FD('.)38 b(The)27
-b Fy(-B)g FD(switc)m(h)i(is)e(redundan)m(t)g(when)g(the)h
-Fy(-b)h FD(`)p Fy(file)p FD(')e(option)i(is)e(sp)s(eci\014ed,)630
-4327 y(and)e(nativ)m(e)i(binary)e(output)g(will)h(b)s(e)f(directed)h
-(to)h(the)e(binary)g(\014le)h(`)p Fy(file)p FD('.)39
-b(Also)26 b(`)p Fy(--bnr)p FD(')630 4437 y(and)k(`)p
-Fy(--binary)p FD('.)39 b(W)-8 b(riting)31 b(pac)m(k)m(ed)h(v)-5
-b(ariables)31 b(in)f(binary)g(format)g(is)h(not)f(supp)s(orted.)150
-4612 y(`)p Fy(-b)g(`file')p FD(')630 4721 y(Activ)-5
-b(ate)50 b(nativ)m(e)f(mac)m(hine)f(binary)f(output)g(writing)g(to)h
-(binary)f(\014le)h(`)p Fy(file)p FD('.)91 b(Also)630
-4831 y(`)p Fy(--fl_bnr)p FD(')27 b(and)h(`)p Fy(--binary-file)p
-FD('.)37 b(W)-8 b(riting)29 b(pac)m(k)m(ed)h(v)-5 b(ariables)29
-b(in)f(binary)g(format)h(is)630 4940 y(not)i(supp)s(orted.)p
-150 5066 1200 4 v 199 5134 a Fw(1)306 5166 y Fu(Those)i(familiar)i
-(with)d(netCDF)g(mec)n(hanics)g(migh)n(t)g(wish)h(to)f(kno)n(w)g(what)g
-(is)h(happ)r(ening)f(here:)47 b Ft(ncks)33 b Fu(do)r(es)f(not)275
-5253 y(attempt)d(to)h(rede\014ne)f(the)h(v)l(ariable)g(in)g
-Fp(output-\014le)j Fu(to)d(matc)n(h)g(its)g(de\014nition)f(in)h
-Fp(input-\014le)p Fu(,)g Ft(ncks)h Fu(merely)f(copies)275
-5340 y(the)25 b(v)l(alues)h(of)g(the)f(v)l(ariable)h(and)g(its)g(co)r
-(ordinate)h(dimensions,)f(if)h(an)n(y)-6 b(,)25 b(from)h
-Fp(input-\014le)j Fu(to)d Fp(output-\014le)p Fu(.)p eop
-end
-%%Page: 137 139
-TeXDict begin 137 138 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(137)150
-299 y(`)p Fy(-d)30 b Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p
-Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])p FD(')630
-408 y(Add)29 b Fz(stride)35 b FD(argumen)m(t)c(to)f(h)m(yp)s(erslabb)s
-(er.)39 b(F)-8 b(or)31 b(a)f(complete)i(description)e(of)g(the)g
-Fz(stride)630 518 y FD(argumen)m(t,)h(See)g(Section)g(3.15)h([Stride],)
-e(page)i(40.)150 667 y(`)p Fy(--fix_rec_dmn)p FD(')630
-777 y(Change)44 b(all)i(record)e(dimensions)f(in)i(the)f(input)g
-(\014le)g(in)m(to)h(\014xed)f(dimensions)g(in)g(the)630
-887 y(output)30 b(\014le.)41 b(Also)31 b(`)p Fy(--no_rec_dmn)p
-FD('.)150 1036 y(`)p Fy(--mk_rec_dmn)c Fq(dim)11 b FD(')630
-1146 y(Change)36 b(existing)g(dimension)g Fz(dim)f FD(to)h(a)g(record)g
-(dimension)f(in)h(the)f(output)h(\014le.)57 b(See)630
-1255 y(Section)29 b(4.5)h([ncecat)g(netCDF)f(Ensem)m(ble)g
-(Concatenator],)i(page)e(130)h(and)e(Section)h(4.8)630
-1365 y([ncp)s(dq)k(netCDF)i(P)m(erm)m(ute)g(Dimensions)f(Quic)m(kly],)i
-(page)f(142)h(for)e(other)g(metho)s(ds)g(of)630 1474
-y(c)m(hanging)d(v)-5 b(ariable)31 b(dimensionalit)m(y)-8
-b(,)33 b(including)d(the)g(record)h(dimension.)150 1624
-y(`)p Fy(-H)p FD(')334 b(Prin)m(t)21 b(data)h(to)g(screen.)38
-b(Also)22 b(activ)-5 b(ated)23 b(using)e(`)p Fy(--print)p
-FD(')e(or)i(`)p Fy(--prn)p FD('.)37 b(By)22 b(default)f
-Fy(ncks)630 1733 y FD(prin)m(ts)j(all)h(metadata)h(and)d(data)i(to)g
-(screen)f(if)g(no)g(netCDF)h(output)f(\014le)g(is)h(sp)s(eci\014ed.)38
-b(Use)630 1843 y(`)p Fy(-H)p FD(')22 b(to)g(prin)m(t)f(data)i(to)f
-(screen)g(if)g(a)g(netCDF)g(output)g(is)f(sp)s(eci\014ed,)i(or)f(to)h
-(restrict)f(prin)m(ting)630 1953 y(to)34 b(data)f(\(no)h(metadata\))h
-(when)d(no)g(netCDF)i(output)f(is)g(sp)s(eci\014ed.)48
-b(Unless)33 b(otherwise)630 2062 y(sp)s(eci\014ed)39
-b(\(with)g Fy(-s)p FD(\),)j(eac)m(h)f(elemen)m(t)g(of)f(the)g(data)g(h)
-m(yp)s(erslab)e(prin)m(ts)i(on)f(a)h(separate)630 2172
-y(line)f(con)m(taining)h(the)e(names,)j(indices,)g(and,)f(v)-5
-b(alues,)41 b(if)e(an)m(y)-8 b(,)41 b(of)e(all)g(of)g(the)f(v)-5
-b(ariables)630 2281 y(dimensions.)71 b(The)40 b(dimension)g(and)g(v)-5
-b(ariable)41 b(indices)g(refer)f(to)h(the)g(lo)s(cation)h(of)f(the)630
-2391 y(corresp)s(onding)28 b(data)i(elemen)m(t)h(with)e(resp)s(ect)g
-(to)i(the)e(v)-5 b(ariable)30 b(as)g(stored)f(on)g(disk)g(\(i.e.,)630
-2501 y(not)i(the)f(h)m(yp)s(erslab\).)870 2630 y Fy(\045)47
-b(ncks)g(-C)g(-v)g(three_dmn_var)e(in.nc)870 2740 y(lat[0]=-90)g
-(lev[0]=100)g(lon[0]=0)h(three_dmn_var[0]=0)870 2849
-y(lat[0]=-90)f(lev[0]=100)g(lon[1]=90)g(three_dmn_var[1]=1)870
-2959 y(lat[0]=-90)g(lev[0]=100)g(lon[2]=180)g(three_dmn_var[2]=2)870
-3068 y(...)870 3178 y(lat[1]=90)g(lev[2]=1000)g(lon[1]=90)g
-(three_dmn_var[21]=21)870 3288 y(lat[1]=90)g(lev[2]=1000)g(lon[2]=180)g
-(three_dmn_var[22]=22)870 3397 y(lat[1]=90)g(lev[2]=1000)g(lon[3]=270)g
-(three_dmn_var[23]=23)630 3527 y FD(Prin)m(ting)24 b(the)g(same)g(v)-5
-b(ariable)25 b(with)f(the)g(`)p Fy(-F)p FD(')f(option)i(sho)m(ws)e(the)
-i(same)f(v)-5 b(ariable)24 b(indexed)630 3636 y(with)30
-b(F)-8 b(ortran)31 b(con)m(v)m(en)m(tions)870 3766 y
-Fy(\045)47 b(ncks)g(-F)g(-C)g(-v)h(three_dmn_var)c(in.nc)870
-3875 y(lon\(1\)=0)i(lev\(1\)=100)f(lat\(1\)=-90)g(three_dmn_var\(1\)=0)
-870 3985 y(lon\(2\)=90)g(lev\(1\)=100)g(lat\(1\)=-90)g
-(three_dmn_var\(2\)=1)870 4095 y(lon\(3\)=180)g(lev\(1\)=100)g
-(lat\(1\)=-90)g(three_dmn_var\(3\)=2)870 4204 y(...)630
-4334 y FD(Prin)m(ting)e(a)f(h)m(yp)s(erslab)g(do)s(es)g(not)h(a\013ect)
-h(the)e(v)-5 b(ariable)44 b(or)e(dimension)g(indices)h(since)630
-4443 y(these)35 b(indices)h(are)f(relativ)m(e)i(to)f(the)f(full)g(v)-5
-b(ariable)36 b(\(as)f(stored)h(in)e(the)i(input)e(\014le\),)j(and)630
-4553 y(the)29 b(input)f(\014le)h(has)f(not)h(c)m(hanged.)41
-b(Ho)m(w)m(ev)m(er,)31 b(if)e(the)g(h)m(yp)s(erslab)f(is)g(sa)m(v)m(ed)
-i(to)g(an)e(output)630 4663 y(\014le)i(and)g(those)h(v)-5
-b(alues)31 b(are)g(prin)m(ted,)f(the)g(indices)h(will)g(c)m(hange:)870
-4792 y Fy(\045)47 b(ncks)g(-H)g(-d)g(lat,90.0)f(-d)h(lev,1000.0)e(-v)i
-(three_dmn_var)e(in.nc)h(out.nc)870 4902 y(...)870 5011
-y(lat[1]=90)f(lev[2]=1000)g(lon[0]=0)h(three_dmn_var[20]=20)870
-5121 y(lat[1]=90)f(lev[2]=1000)g(lon[1]=90)g(three_dmn_var[21]=21)870
-5230 y(lat[1]=90)g(lev[2]=1000)g(lon[2]=180)g(three_dmn_var[22]=22)870
-5340 y(lat[1]=90)g(lev[2]=1000)g(lon[3]=270)g(three_dmn_var[23]=23)p
-eop end
-%%Page: 138 140
-TeXDict begin 138 139 bop 150 -116 a FD(138)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)870 299 y Fy(\045)47 b(ncks)g(-C)g(-v)g
-(three_dmn_var)e(out.nc)870 408 y(lat[0]=90)g(lev[0]=1000)g(lon[0]=0)h
-(three_dmn_var[0]=20)870 518 y(lat[0]=90)f(lev[0]=1000)g(lon[1]=90)g
-(three_dmn_var[1]=21)870 628 y(lat[0]=90)g(lev[0]=1000)g(lon[2]=180)g
-(three_dmn_var[2]=22)870 737 y(lat[0]=90)g(lev[0]=1000)g(lon[3]=270)g
-(three_dmn_var[3]=23)150 920 y FD(`)p Fy(-M)p FD(')334
-b(Prin)m(t)31 b(to)g(screen)g(the)g(global)i(metadata)f(describing)f
-(the)g(\014le.)42 b(This)30 b(includes)h(\014le)g(sum-)630
-1029 y(mary)37 b(information)g(and)f(global)j(attributes.)61
-b(Also)37 b(`)p Fy(--Mtd)p FD(')f(and)g(`)p Fy(--Metadata)p
-FD('.)59 b(By)630 1139 y(default)30 b Fy(ncks)g FD(prin)m(ts)f(global)j
-(metadata)g(to)f(screen)f(if)g(no)g(netCDF)h(output)f(\014le)g(and)g
-(no)630 1249 y(v)-5 b(ariable)36 b(extraction)h(list)e(is)g(sp)s
-(eci\014ed)g(\(with)g(`)p Fy(-v)p FD('\).)55 b(Use)35
-b(`)p Fy(-M)p FD(')g(to)h(prin)m(t)e(global)j(meta-)630
-1358 y(data)30 b(to)f(screen)h(if)f(a)g(netCDF)h(output)e(is)h(sp)s
-(eci\014ed,)g(or)g(if)g(a)h(v)-5 b(ariable)29 b(extraction)i(list)f(is)
-630 1468 y(sp)s(eci\014ed)g(\(with)g(`)p Fy(-v)p FD('\).)630
-1614 y(The)e(v)-5 b(arious)28 b(com)m(binations)h(of)f(prin)m(ting)g
-(switc)m(hes)g(can)h(b)s(e)e(confusing.)40 b(In)27 b(an)h(attempt)630
-1724 y(to)k(an)m(ticipate)i(what)d(most)h(users)e(w)m(an)m(t)i(to)g
-(do,)g Fy(ncks)e FD(uses)h(con)m(text-sensitiv)m(e)k(defaults)630
-1833 y(for)26 b(prin)m(ting.)40 b(Our)25 b(goal)j(is)e(to)i(minimize)f
-(the)f(use)g(of)h(switc)m(hes)g(required)f(to)h(accomplish)630
-1943 y(the)c(common)f(op)s(erations.)38 b(W)-8 b(e)24
-b(assume)e(that)h(users)f(creating)h(a)g(new)f(\014le)g(or)h(o)m(v)m
-(erwriting)630 2052 y(\(e.g.,)43 b(with)38 b(`)p Fy(-O)p
-FD('\))h(an)g(existing)h(\014le)e(usually)h(wish)f(to)h(cop)m(y)h(all)g
-(global)g(and)e(v)-5 b(ariable-)630 2162 y(sp)s(eci\014c)28
-b(attributes)g(to)h(the)f(new)f(\014le.)40 b(In)27 b(con)m(trast,)j(w)m
-(e)e(assume)g(that)g(users)f(app)s(ending)630 2271 y(\(e.g.,)32
-b(with)e(`)p Fy(-A)p FD(')g(an)g(explicit)i(v)-5 b(ariable)30
-b(list)h(from)f(one)g(\014le)h(to)g(another)f(usually)g(wish)f(to)630
-2381 y(cop)m(y)j(only)f(the)h(v)-5 b(ariable-sp)s(eci\014c)32
-b(attributes)g(to)g(the)g(output)e(\014le.)44 b(The)31
-b(switc)m(hes)h(`)p Fy(-H)p FD(',)630 2491 y(`)p Fy(-M)p
-FD(',)42 b(and)e(`)p Fy(-m)p FD(')g(switc)m(hes)g(are)h(implemen)m(ted)
-f(as)g(toggles)i(whic)m(h)e(rev)m(erse)h(the)f(default)630
-2600 y(b)s(eha)m(vior.)g(The)28 b(most)g(confusing)g(asp)s(ect)h(of)f
-(this)h(is)f(that)h(`)p Fy(-M)p FD(')f(inhibits)f(cop)m(ying)j(global)
-630 2710 y(metadata)j(in)d(o)m(v)m(erwrite)j(mo)s(de)e(and)f(causes)i
-(cop)m(ying)g(of)f(global)h(metadata)h(in)e(app)s(end)630
-2819 y(mo)s(de.)870 2966 y Fy(ncks)47 b(-O)667 b(in.nc)47
-b(out.nc)f(#)h(Copy)142 b(VAs)47 b(and)g(GAs)870 3075
-y(ncks)g(-O)333 b(-v)47 b(one)g(in.nc)g(out.nc)f(#)h(Copy)142
-b(VAs)47 b(and)g(GAs)870 3185 y(ncks)g(-O)g(-M)190 b(-v)47
-b(one)g(in.nc)g(out.nc)f(#)h(Copy)142 b(VAs)47 b(not)g(GAs)870
-3294 y(ncks)g(-O)190 b(-m)47 b(-v)g(one)g(in.nc)g(out.nc)f(#)h(Copy)142
-b(GAs)47 b(not)g(VAs)870 3404 y(ncks)g(-O)g(-M)g(-m)g(-v)g(one)g(in.nc)
-g(out.nc)f(#)h(Copy)142 b(only)47 b(data)g(\(no)f(atts\))870
-3513 y(ncks)h(-A)667 b(in.nc)47 b(out.nc)f(#)h(Append)f(VAs)h(and)g
-(GAs)870 3623 y(ncks)g(-A)333 b(-v)47 b(one)g(in.nc)g(out.nc)f(#)h
-(Append)f(VAs)h(not)g(GAs)870 3733 y(ncks)g(-A)g(-M)190
-b(-v)47 b(one)g(in.nc)g(out.nc)f(#)h(Append)f(VAs)h(and)g(GAs)870
-3842 y(ncks)g(-A)190 b(-m)47 b(-v)g(one)g(in.nc)g(out.nc)f(#)h(Append)f
-(only)h(data)g(\(no)f(atts\))870 3952 y(ncks)h(-A)g(-M)g(-m)g(-v)g(one)
-g(in.nc)g(out.nc)f(#)h(Append)f(GAs)h(not)g(VAs)630 4098
-y FD(where)30 b Fy(VAs)f FD(and)h Fy(GAs)g FD(denote)h(v)-5
-b(ariable)31 b(and)e(global)j(attributes,)f(resp)s(ectiv)m(ely)-8
-b(.)150 4281 y(`)p Fy(-m)p FD(')334 b(Prin)m(t)43 b(v)-5
-b(ariable)43 b(metadata)h(to)g(screen)f(\(similar)g(to)g
-Fq(ncdump)29 b(-h)p FD(\).)77 b(This)42 b(displa)m(ys)h(all)630
-4390 y(metadata)f(p)s(ertaining)e(to)h(eac)m(h)h(v)-5
-b(ariable,)44 b(one)d(v)-5 b(ariable)41 b(at)g(a)g(time.)72
-b(This)39 b(includes)630 4500 y(information)e(on)f(the)h(storage)g
-(prop)s(erties)f(of)h(the)f(v)-5 b(ariable,)39 b(suc)m(h)d(as)h
-(whether)f(it)h(em-)630 4609 y(plo)m(ys)45 b(c)m(h)m(unking,)i
-(compression,)h(or)d(pac)m(king.)83 b(Also)44 b(activ)-5
-b(ated)47 b(using)c(`)p Fy(--mtd)p FD(')h(and)630 4719
-y(`)p Fy(--metadata)p FD('.)36 b(The)21 b Fy(ncks)g FD(default)h(b)s
-(eha)m(vior)h(is)f(to)h(prin)m(t)e(v)-5 b(ariable)23
-b(metadata)h(to)f(screen)630 4829 y(if)38 b(no)f(netCDF)h(output)f
-(\014le)h(is)g(sp)s(eci\014ed.)62 b(Use)37 b(`)p Fy(-m)p
-FD(')h(to)g(prin)m(t)g(v)-5 b(ariable)38 b(metadata)h(to)630
-4938 y(screen)30 b(if)h(a)g(netCDF)g(output)f(is)g(sp)s(eci\014ed.)150
-5121 y(`)p Fy(-P)p FD(')334 b(Prin)m(t)39 b(data,)i(metadata,)i(and)38
-b(units)g(to)h(screen.)66 b(The)38 b(`)p Fy(-P)p FD(')g(switc)m(h)h(is)
-g(a)g(con)m(v)m(enience)630 5230 y(abbreviation)e(for)g(`)p
-Fy(-C)30 b(-H)g(-M)f(-m)h(-u)p FD('.)59 b(Also)38 b(activ)-5
-b(ated)39 b(using)d(`)p Fy(--print)p FD(')f(or)i(`)p
-Fy(--prn)p FD('.)630 5340 y(This)30 b(set)g(of)h(switc)m(hes)g(is)g
-(useful)e(for)h(exploring)h(\014le)f(con)m(ten)m(ts.)p
-eop end
-%%Page: 139 141
-TeXDict begin 139 140 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(139)150
-299 y(`)p Fy(-Q)p FD(')334 b(T)-8 b(oggle)23 b(prin)m(ting)e(of)g
-(dimension)f(indices)h(and)f(co)s(ordinate)i(v)-5 b(alues)21
-b(when)f(prin)m(ting)g(arra)m(ys.)630 408 y(Eac)m(h)26
-b(v)-5 b(ariable's)27 b(name)f(app)s(ears)f(\015ush)f(left)j(in)e(the)h
-(output.)39 b(This)25 b(helps)h(lo)s(cate)h(sp)s(eci\014c)630
-518 y(v)-5 b(ariables)31 b(in)f(lists)h(with)f(man)m(y)h(v)-5
-b(ariables)31 b(and)e(di\013eren)m(t)i(dimensions.)150
-682 y(`)p Fy(-q)p FD(')334 b(T)-8 b(urn)36 b(o\013)i(all)h(prin)m(ting)
-e(to)h(screen.)63 b(This)37 b(o)m(v)m(errides)h(the)g(setting)h(of)f
-(all)g(prin)m(t-related)630 792 y(switc)m(hes,)h(equiv)-5
-b(alen)m(t)38 b(to)g Fq(-H)29 b(-M)h(-m)36 b FD(when)g(in)g
-(single-\014le)i(prin)m(ting)e(mo)s(de.)60 b(When)36
-b(in-)630 902 y(v)m(ok)m(ed)d(with)f Fy(-R)g FD(\(see)h(Section)g(3.8)g
-([Retaining)h(Retriev)m(ed)f(Files],)i(page)e(32\),)h
-Fy(ncks)d FD(au-)630 1011 y(tomatically)g(sets)e Fy(-q)p
-FD(.)39 b(This)27 b(allo)m(ws)j Fy(ncks)d FD(to)i(retriev)m(e)g(remote)
-g(\014les)f(without)g(automat-)630 1121 y(ically)k(trying)e(to)h(prin)m
-(t)f(them.)41 b(Also)31 b(`)p Fy(--quiet)p FD('.)150
-1285 y(`)p Fy(-s)f Fq(format)11 b FD(')630 1395 y(String)51
-b(format)g(for)g(text)h(output.)103 b(Accepts)52 b(C)30
-b(language)53 b(escap)s(e)e(sequences)h(and)630 1504
-y Fy(printf\(\))28 b FD(formats.)41 b(Also)31 b(`)p Fy(--string)p
-FD(')e(and)g(`)p Fy(--sng_fmt)p FD('.)150 1669 y(`)p
-Fy(-u)p FD(')334 b(T)-8 b(oggle)31 b(the)e(prin)m(ting)f(of)h(a)g(v)-5
-b(ariable's)29 b Fy(units)f FD(attribute,)i(if)e(an)m(y)-8
-b(,)30 b(with)f(its)g(v)-5 b(alues.)40 b(Also)630 1778
-y(`)p Fy(--units)p FD('.)150 1968 y(EXAMPLES)275 2130
-y(View)30 b(all)i(data)f(in)f(netCDF)h(`)p Fy(in.nc)p
-FD(',)e(prin)m(ted)h(with)g(F)-8 b(ortran)31 b(indexing)g(con)m(v)m(en)
-m(tions:)390 2291 y Fy(ncks)47 b(-F)g(in.nc)275 2453
-y FD(Cop)m(y)30 b(the)g(netCDF)h(\014le)g(`)p Fy(in.nc)p
-FD(')e(to)j(\014le)e(`)p Fy(out.nc)p FD('.)390 2615 y
-Fy(ncks)47 b(in.nc)f(out.nc)275 2777 y FD(No)m(w)28 b(the)f(\014le)h(`)
-p Fy(out.nc)p FD(')e(con)m(tains)i(all)h(the)e(data)h(from)f(`)p
-Fy(in.nc)p FD('.)39 b(There)27 b(are,)i(ho)m(w)m(ev)m(er,)g(t)m(w)m(o)g
-(di\013er-)150 2887 y(ences)k(b)s(et)m(w)m(een)g(`)p
-Fy(in.nc)p FD(')f(and)g(`)p Fy(out.nc)p FD('.)46 b(First,)33
-b(the)g Fy(history)e FD(global)i(attribute)h(\(see)f(Section)g(3.28)150
-2996 y([History)j(A)m(ttribute],)i(page)f(63\))f(will)g(con)m(tain)h
-(the)e(command)h(used)e(to)i(create)h(`)p Fy(out.nc)p
-FD('.)55 b(Second,)150 3106 y(the)24 b(v)-5 b(ariables)24
-b(in)f(`)p Fy(out.nc)p FD(')g(will)g(b)s(e)g(de\014ned)g(in)g(alphab)s
-(etical)i(order.)38 b(Of)23 b(course)g(the)h(in)m(ternal)g(storage)150
-3215 y(of)37 b(v)-5 b(ariable)37 b(in)g(a)g(netCDF)g(\014le)g(should)f
-(b)s(e)g(transparen)m(t)h(to)g(the)g(user,)h(but)e(there)h(are)g(cases)
-h(when)150 3325 y(alphab)s(etizing)31 b(a)g(\014le)f(is)h(useful)e
-(\(see)j(description)e(of)h Fy(-a)e FD(switc)m(h\).)275
-3487 y(Cop)m(y)h(all)h(global)h(attributes)f(\(and)f(no)g(v)-5
-b(ariables\))32 b(from)d(`)p Fy(in.nc)p FD(')h(to)h(`)p
-Fy(out.nc)p FD(':)390 3649 y Fy(ncks)47 b(-A)g(-x)g(~/nco/data/in.nc)c
-(~/out.nc)275 3811 y FD(The)28 b(`)p Fy(-x)p FD(')h(switc)m(h)h(tells)g
-FC(NCO)f FD(to)h(use)f(the)h(complemen)m(t)g(of)g(the)f(extraction)i
-(list)f(\(see)g(Section)g(3.11)150 3920 y([Subsetting)i(V)-8
-b(ariables],)35 b(page)e(36\).)47 b(Since)32 b(no)h(extraction)h(list)e
-(is)h(explicitly)h(sp)s(eci\014ed)d(\(with)h(`)p Fy(-v)p
-FD('\),)150 4030 y(the)43 b(default)f(is)h(to)g(extract)h(all)g(v)-5
-b(ariables.)78 b(The)42 b(complemen)m(t)i(of)e(all)i(v)-5
-b(ariables)43 b(is)g(no)f(v)-5 b(ariables.)150 4139 y(Without)31
-b(an)m(y)f(v)-5 b(ariables)30 b(to)h(extract,)g(the)f(app)s(end)e(\(`)p
-Fy(-A)p FD('\))j(command)e(\(see)i(Section)g(2.4)f([App)s(ending)150
-4249 y(V)-8 b(ariables],)43 b(page)d(14\))g(has)f(only)g(to)h(extract)g
-(and)f(cop)m(y)g(\(i.e.,)k(app)s(end\))38 b(global)i(attributes)g(to)g
-(the)150 4359 y(output)30 b(\014le.)275 4521 y(Prin)m(t)47
-b(v)-5 b(ariable)48 b Fy(three_dmn_var)43 b FD(from)k(\014le)g(`)p
-Fy(in.nc)p FD(')g(with)g(default)g(notations.)92 b(Next)48
-b(prin)m(t)150 4630 y Fy(three_dmn_var)30 b FD(as)k(an)g(un-annotated)f
-(text)i(column.)51 b(Then)32 b(prin)m(t)i Fy(three_dmn_var)c
-FD(signed)j(with)150 4740 y(v)m(ery)e(high)f(precision.)41
-b(Finally)-8 b(,)32 b(prin)m(t)e Fy(three_dmn_var)c FD(as)31
-b(a)g(comma-separated)h(list.)390 4902 y Fy(\045)47 b(ncks)g(-C)g(-v)g
-(three_dmn_var)e(in.nc)390 5011 y(lat[0]=-90)g(lev[0]=100)g(lon[0]=0)h
-(three_dmn_var[0]=0)390 5121 y(lat[0]=-90)f(lev[0]=100)g(lon[1]=90)g
-(three_dmn_var[1]=1)390 5230 y(...)390 5340 y(lat[1]=90)g(lev[2]=1000)g
-(lon[3]=270)g(three_dmn_var[23]=23)p eop end
-%%Page: 140 142
-TeXDict begin 140 141 bop 150 -116 a FD(140)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(\045)47 b(ncks)g(-s)g
-('\045f\\n')f(-C)i(-v)f(three_dmn_var)d(in.nc)390 408
-y(0.000000)390 518 y(1.000000)390 628 y(...)390 737 y(23.000000)390
-847 y(\045)j(ncks)g(-s)g('\045+16.10f\\n')e(-C)i(-v)g(three_dmn_var)d
-(in.nc)533 956 y(+0.0000000000)533 1066 y(+1.0000000000)390
-1176 y(...)485 1285 y(+23.0000000000)390 1395 y(\045)j(ncks)g(-s)g
-('\045f,)g(')g(-C)h(-v)f(three_dmn_var)d(in.nc)390 1504
-y(0.000000,)h(1.000000,)h(...,)g(23.000000,)150 1678
-y FD(The)37 b(second)g(and)g(third)g(options)h(are)f(useful)g(when)f
-(pasting)i(data)g(in)m(to)h(text)f(\014les)g(lik)m(e)g(rep)s(orts)f(or)
-150 1787 y(pap)s(ers.)49 b(See)34 b(Section)g(4.2)h([ncatted)f(netCDF)g
-(A)m(ttribute)h(Editor],)g(page)f(118,)i(for)d(more)h(details)g(on)150
-1897 y(string)c(formatting)i(and)d(sp)s(ecial)i(c)m(haracters.)275
-2071 y(One)46 b(dimensional)h(arra)m(ys)g(of)g(c)m(haracters)i(stored)e
-(as)g(netCDF)g(v)-5 b(ariables)48 b(are)f(automatically)150
-2180 y(prin)m(ted)30 b(as)h(strings,)f(whether)g(or)g(not)h(they)f(are)
-h(NUL-terminated,)h(e.g.,)390 2354 y Fy(ncks)47 b(-v)g(fl_nm)f(in.nc)
-150 2527 y FD(The)33 b Fy(\045c)f FD(formatting)j(co)s(de)e(is)h
-(useful)e(for)h(prin)m(ting)g(m)m(ultidimensional)h(arra)m(ys)g(of)f(c)
-m(haracters)i(repre-)150 2637 y(sen)m(ting)c(\014xed)f(length)h
-(strings)390 2810 y Fy(ncks)47 b(-s)g('\045c')f(-v)i(fl_nm_arr)d(in.nc)
-150 2984 y FD(Using)22 b(the)f Fy(\045s)g FD(format)h(co)s(de)g(on)g
-(strings)f(whic)m(h)g(are)h(not)g(NUL-terminated)g(\(and)g(th)m(us)f
-(not)h(tec)m(hnically)150 3093 y(strings\))31 b(is)f(lik)m(ely)i(to)f
-(result)f(in)g(a)h(core)g(dump.)275 3267 y(Create)25
-b(netCDF)h(`)p Fy(out.nc)p FD(')e(con)m(taining)j(all)e(v)-5
-b(ariables,)28 b(and)c(an)m(y)h(asso)s(ciated)i(co)s(ordinates,)g
-(except)150 3377 y(v)-5 b(ariable)31 b Fy(time)p FD(,)f(from)g(netCDF)h
-(`)p Fy(in.nc)p FD(':)390 3550 y Fy(ncks)47 b(-x)g(-v)g(time)g(in.nc)f
-(out.nc)275 3724 y FD(Extract)26 b(v)-5 b(ariables)25
-b Fy(time)f FD(and)h Fy(pressure)e FD(from)h(netCDF)i(`)p
-Fy(in.nc)p FD('.)38 b(If)25 b(`)p Fy(out.nc)p FD(')e(do)s(es)i(not)h
-(exist)f(it)150 3833 y(will)31 b(b)s(e)f(created.)42
-b(Otherwise)30 b(the)h(y)m(ou)f(will)h(b)s(e)f(prompted)g(whether)f(to)
-j(app)s(end)c(to)k(or)e(to)h(o)m(v)m(erwrite)150 3943
-y(`)p Fy(out.nc)p FD(':)390 4116 y Fy(ncks)47 b(-v)g(time,pressure)d
-(in.nc)i(out.nc)390 4226 y(ncks)h(-C)g(-v)g(time,pressure)d(in.nc)j
-(out.nc)150 4399 y FD(The)30 b(\014rst)f(v)m(ersion)i(of)f(the)h
-(command)f(creates)h(an)g(`)p Fy(out.nc)p FD(')e(whic)m(h)h(con)m
-(tains)h Fy(time)p FD(,)e Fy(pressure)p FD(,)g(and)150
-4509 y(an)m(y)g(co)s(ordinate)h(v)-5 b(ariables)30 b(asso)s(ciated)g
-(with)f Fz(pressure)p FD(.)39 b(The)29 b(`)p Fy(out.nc)p
-FD(')e(from)i(the)g(second)g(v)m(ersion)h(is)150 4619
-y(guaran)m(teed)h(to)h(con)m(tain)f(only)g(t)m(w)m(o)g(v)-5
-b(ariables)31 b Fy(time)f FD(and)f Fy(pressure)p FD(.)275
-4792 y(Create)k(netCDF)g(`)p Fy(out.nc)p FD(')e(con)m(taining)j(all)g
-(v)-5 b(ariables)33 b(from)f(\014le)h(`)p Fy(in.nc)p
-FD('.)46 b(Restrict)34 b(the)e(dimen-)150 4902 y(sions)38
-b(of)h(these)f(v)-5 b(ariables)39 b(to)g(a)g(h)m(yp)s(erslab.)63
-b(Prin)m(t)38 b(\(with)h Fy(-H)p FD(\))f(the)g(h)m(yp)s(erslabs)f(to)i
-(the)g(screen)f(for)150 5011 y(go)s(o)s(d)30 b(measure.)41
-b(The)30 b(sp)s(eci\014ed)g(h)m(yp)s(erslab)g(is:)41
-b(the)30 b(\014fth)g(v)-5 b(alue)31 b(in)f(dimension)g
-Fy(time)p FD(;)g(the)g(half-op)s(en)150 5121 y(range)39
-b Fz(lat)i Fn(>)d FD(0)p Fn(:)h FD(in)f(co)s(ordinate)h
-Fy(lat)p FD(;)i(the)e(half-op)s(en)e(range)i Fz(lon)g
-Fn(<)f FD(330)p Fn(:)h FD(in)f(co)s(ordinate)h Fy(lon)p
-FD(;)j(the)150 5230 y(closed)36 b(in)m(terv)-5 b(al)36
-b(0)p Fn(:)p FD(3)d Fn(<)g Fz(band)i Fn(<)e FD(0)p Fn(:)p
-FD(5)i(in)g(co)s(ordinate)h Fy(band)p FD(;)g(and)e(cross-section)i
-(closest)h(to)e(1000.)i(in)150 5340 y(co)s(ordinate)c
-Fy(lev)p FD(.)44 b(Note)33 b(that)g(limits)f(applied)g(to)h(co)s
-(ordinate)f(v)-5 b(alues)33 b(are)f(sp)s(eci\014ed)f(with)h(a)g
-(decimal)p eop end
-%%Page: 141 143
-TeXDict begin 141 142 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(141)150
-299 y(p)s(oin)m(t,)29 b(and)e(limits)i(applied)f(to)g(dimension)g
-(indices)g(do)g(not)g(ha)m(v)m(e)h(a)f(decimal)h(p)s(oin)m(t)f(See)h
-(Section)f(3.14)150 408 y([Hyp)s(erslabs],)i(page)h(39.)390
-568 y Fy(ncks)47 b(-H)g(-d)g(time,5)f(-d)h(lat,,0.0)f(-d)h(lon,330.0,)e
-(-d)i(band,0.3,0.5)390 677 y(-d)g(lev,1000.0)e(in.nc)i(out.nc)275
-837 y FD(Assume)40 b(the)h(domain)g(of)g(the)g(monotonically)i
-(increasing)e(longitude)h(co)s(ordinate)f Fy(lon)f FD(is)h(0)i
-Fn(<)150 946 y Fz(lon)25 b Fn(<)g FD(360.)42 b(Here,)29
-b Fy(lon)e FD(is)i(an)f(example)h(of)f(a)h(wrapp)s(ed)d(co)s(ordinate.)
-41 b Fy(ncks)27 b FD(will)i(extract)g(a)g(h)m(yp)s(erslab)150
-1056 y(whic)m(h)35 b(crosses)i(the)e(Green)m(wic)m(h)i(meridian)f
-(simply)f(b)m(y)g(sp)s(ecifying)h(the)g(w)m(esternmost)g(longitude)h
-(as)150 1166 y Fz(min)30 b FD(and)g(the)g(easternmost)h(longitude)g(as)
-g Fz(max)p FD(,)g(as)f(follo)m(ws:)390 1325 y Fy(ncks)47
-b(-d)g(lon,260.0,45.0)d(in.nc)i(out.nc)275 1484 y FD(F)-8
-b(or)31 b(more)f(details)i(See)e(Section)h(3.17)h([W)-8
-b(rapp)s(ed)30 b(Co)s(ordinates],)h(page)g(42.)p eop
-end
-%%Page: 142 144
-TeXDict begin 142 143 bop 150 -116 a FD(142)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FB(4.8)68 b Fe(ncpdq)43
-b FB(netCDF)i(P)l(erm)l(ute)h(Dimensions)f(Quic)l(kly)150
-458 y FD(SYNT)-8 b(AX)390 618 y Fy(ncpdq)46 b([-3])h([-4])g([-6])f
-([-A])h([-a)g([-])p Fq(dim)11 b Fy([,...)l(]])47 b([-C])g([-c])390
-727 y([--cnk_dmn)e(nm,sz])h([--cnk_map)f(map])i([--cnk_plc)e(plc])h
-([--cnk_scl)f(sz])390 837 y([-D)i Fq(dbg)11 b Fy(])46
-b([-d)h Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42 b([-F])k([-h])h([-L)g
-Fq(dfl_lvl)11 b Fy(])45 b([-l)i Fq(path)11 b Fy(])390
-946 y([-M)47 b Fq(pck_map)11 b Fy(])45 b([-O])i([-o)g
-Fq(output-file)11 b Fy(])43 b([-P)k Fq(pck_plc)11 b Fy(])45
-b([-p)i Fq(path)11 b Fy(])390 1056 y([-R])47 b([-r])f([-t)h
-Fq(thr_nbr)11 b Fy(])45 b([-U])i([-v)g Fq(var)11 b Fy([,...)m(]])47
-b([-X)g(...])g([-x])390 1166 y Fq(input-file)56 b Fy([)p
-Fq(output-file)11 b Fy(])150 1325 y FD(DESCRIPTION)275
-1484 y Fy(ncpdq)22 b FD(p)s(erforms)g(one)h(of)h(t)m(w)m(o)h(distinct)f
-(functions,)h(pac)m(king)f(or)g(dimension)f(p)s(erm)m(utation,)i(but)e
-(not)150 1594 y(b)s(oth,)29 b(when)g(in)m(v)m(ok)m(ed.)41
-b Fy(ncpdq)28 b FD(is)i(optimized)g(to)g(p)s(erform)e(these)i(actions)h
-(in)e(a)h(parallel)g(fashion)f(with)150 1704 y(a)j(minim)m(um)g(of)g
-(time)h(and)e(memory)-8 b(.)46 b(The)32 b Fz(p)s(dq)g
-FD(ma)m(y)h(stand)e(for)h(\\P)m(erm)m(ute)h(Dimensions)g(Quic)m(kly",)
-150 1813 y(\\P)m(ac)m(k)f(Data)g(Quietly",)g(\\Pillory)f(Dan)g(Qua)m
-(yle",)h(or)e(other)h(silly)g(uses.)150 2012 y Fv(P)m(ac)m(king)40
-b(and)g(Unpac)m(king)h(F)-10 b(unctions)150 2159 y FD(The)36
-b Fy(ncpdq)f FD(pac)m(king)j(\(and)e(unpac)m(king\))h(algorithms)h(are)
-f(describ)s(ed)e(in)i(Section)g(4.1.11)i([Metho)s(ds)150
-2268 y(and)28 b(functions],)h(page)h(82,)g(and)e(are)h(also)g(implemen)
-m(ted)g(in)g Fy(ncap2)p FD(.)39 b Fy(ncpdq)27 b FD(extends)h(the)h
-(functional-)150 2378 y(it)m(y)35 b(of)f(these)h(algorithms)g(b)m(y)f
-(pro)m(viding)g(high)g(lev)m(el)h(con)m(trol)h(of)e(the)g
-Fz(pac)m(king)i(p)s(olicy)42 b FD(so)34 b(that)h(users)150
-2488 y(can)f(consisten)m(tly)h(pac)m(k)f(\(and)f(unpac)m(k\))h(en)m
-(tire)g(\014les)f(with)h(one)f(command.)50 b(The)33 b(user)g(sp)s
-(eci\014es)g(the)150 2597 y(desired)27 b(pac)m(king)i(p)s(olicy)f(with)
-f(the)h(`)p Fy(-P)p FD(')g(switc)m(h)g(\(or)g(its)g(long)h(option)f
-(equiv)-5 b(alen)m(ts,)30 b(`)p Fy(--pck_plc)p FD(')c(and)150
-2707 y(`)p Fy(--pack_policy)p FD('\))38 b(and)j(its)h
-Fz(p)s(c)m(k)p 1368 2707 28 4 v 40 w(plc)k FD(argumen)m(t.)74
-b(F)-8 b(our)41 b(pac)m(king)i(p)s(olicies)f(are)f(curren)m(tly)h
-(imple-)150 2816 y(men)m(ted:)150 3110 y Fz(P)m(ac)m(king)32
-b(\(and)e(Re-P)m(ac)m(king\))j(V)-8 b(ariables)32 b([)p
-Fr(default)9 b Fz(])630 3220 y FD(De\014nition:)41 b(P)m(ac)m(k)32
-b(unpac)m(k)m(ed)f(v)-5 b(ariables,)31 b(re-pac)m(k)h(pac)m(k)m(ed)f(v)
--5 b(ariables)630 3329 y(Alternate)32 b(in)m(v)m(o)s(cation:)43
-b Fy(ncpack)630 3439 y Fz(p)s(c)m(k)p 775 3439 V 40 w(plc)36
-b FD(k)m(ey)31 b(v)-5 b(alues:)41 b(`)p Fy(all_new)p
-FD(',)29 b(`)p Fy(pck_all_new_att)p FD(')150 3707 y Fz(P)m(ac)m(king)j
-(\(and)e(not)h(Re-P)m(ac)m(king\))i(V)-8 b(ariables)630
-3817 y FD(De\014nition:)41 b(P)m(ac)m(k)32 b(unpac)m(k)m(ed)f(v)-5
-b(ariables,)31 b(cop)m(y)g(pac)m(k)m(ed)h(v)-5 b(ariables)630
-3926 y(Alternate)32 b(in)m(v)m(o)s(cation:)43 b(none)630
-4036 y Fz(p)s(c)m(k)p 775 4036 V 40 w(plc)36 b FD(k)m(ey)31
-b(v)-5 b(alues:)41 b(`)p Fy(all_xst)p FD(',)29 b(`)p
-Fy(pck_all_xst_att)p FD(')150 4304 y Fz(Re-P)m(ac)m(king)k(V)-8
-b(ariables)630 4414 y FD(De\014nition:)41 b(Re-pac)m(k)32
-b(pac)m(k)m(ed)g(v)-5 b(ariables,)31 b(cop)m(y)g(unpac)m(k)m(ed)f(v)-5
-b(ariables)630 4524 y(Alternate)32 b(in)m(v)m(o)s(cation:)43
-b(none)630 4633 y Fz(p)s(c)m(k)p 775 4633 V 40 w(plc)36
-b FD(k)m(ey)31 b(v)-5 b(alues:)41 b(`)p Fy(xst_new)p
-FD(',)29 b(`)p Fy(pck_xst_new_att)p FD(')150 4902 y Fz(Unpac)m(king)630
-5011 y FD(De\014nition:)41 b(Unpac)m(k)31 b(pac)m(k)m(ed)h(v)-5
-b(ariables,)31 b(cop)m(y)g(unpac)m(k)m(ed)g(v)-5 b(ariables)630
-5121 y(Alternate)32 b(in)m(v)m(o)s(cation:)43 b Fy(ncunpack)630
-5230 y Fz(p)s(c)m(k)p 775 5230 V 40 w(plc)36 b FD(k)m(ey)31
-b(v)-5 b(alues:)41 b(`)p Fy(upk)p FD(',)30 b(`)p Fy(unpack)p
-FD(',)g(`)p Fy(pck_upk)p FD(')p eop end
-%%Page: 143 145
-TeXDict begin 143 144 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(143)150
-299 y(Equiv)-5 b(alen)m(t)26 b(k)m(ey)g(v)-5 b(alues)26
-b(are)g(fully)f(in)m(terc)m(hangeable.)41 b(Multiple)26
-b(equiv)-5 b(alen)m(t)27 b(options)f(are)f(pro)m(vided)g(to)150
-408 y(satisfy)g(disparate)g(needs)f(and)g(tastes)h(of)g
-FC(NCO)f FD(users)g(w)m(orking)g(with)h(scripts)f(and)g(from)g(the)g
-(command)150 518 y(line.)275 687 y(Regardless)43 b(of)g(the)g(pac)m
-(king)h(p)s(olicy)g(selected,)j Fy(ncpdq)42 b FD(no)h(longer)g(\(as)h
-(of)f FC(NCO)g FD(v)m(ersion)g(4.0.4)150 796 y(in)36
-b(Octob)s(er,)h(2010\))h(pac)m(ks)f(co)s(ordinate)g(v)-5
-b(ariables,)38 b(or)e(the)g(sp)s(ecial)h(v)-5 b(ariables,)38
-b(w)m(eigh)m(ts,)h(and)d(other)150 906 y(grid)c(prop)s(erties)h
-(describ)s(ed)e(in)i(Section)g(3.30)i([CF)e(Con)m(v)m(en)m(tions],)i
-(page)e(64.)49 b(Prior)32 b Fy(ncpdq)g FD(v)m(ersions)150
-1015 y(treated)i(co)s(ordinate)h(v)-5 b(ariables)34 b(and)f(grid)g
-(prop)s(erties)g(no)g(di\013eren)m(tly)h(from)f(other)h(v)-5
-b(ariables.)51 b(Ho)m(w-)150 1125 y(ev)m(er,)37 b(co)s(ordinate)e(v)-5
-b(ariables)35 b(are)g(one-dimensional,)i(so)e(pac)m(king)g(sa)m(v)m(es)
-h(little)h(space)e(on)f(large)i(\014les,)150 1235 y(and)g(the)h
-(resulting)g(\014les)g(are)g(di\016cult)g(for)f(h)m(umans)g(to)h(read.)
-60 b(Concurren)m(tly)-8 b(,)39 b(Gaussian)e(and)f(area)150
-1344 y(w)m(eigh)m(ts)h(and)d(other)i(grid)f(prop)s(erties)f(are)i
-(often)g(used)e(to)i(deriv)m(e)g(\014elds)f(in)g(re-in\015ated)g
-(\(unpac)m(k)m(ed\))150 1454 y(\014les,)d(so)g(pac)m(king)h(suc)m(h)e
-(grid)h(prop)s(erties)f(causes)h(a)g(considerable)g(loss)g(of)g
-(precision)g(in)f(do)m(wnstream)150 1563 y(data)i(pro)s(cessing.)48
-b(If)32 b(users)g(express)g(strong)h(wishes)f(to)h(pac)m(k)h(grid)e
-(prop)s(erties,)h(w)m(e)g(will)g(implemen)m(t)150 1673
-y(new)e(pac)m(king)i(p)s(olicies.)45 b(An)31 b(immediate)h(w)m(ork)-5
-b(around)31 b(for)g(those)h(needing)g(to)g(pac)m(k)g(grid)g(prop)s
-(erties)150 1782 y(no)m(w,)d(is)g(to)g(use)f(the)h Fy(ncap2)e
-FD(pac)m(king)j(functions)e(or)g(to)i(rename)e(the)h(grid)f(prop)s
-(erties)g(prior)g(to)h(calling)150 1892 y Fy(ncpdq)p
-FD(.)39 b(W)-8 b(e)32 b(w)m(elcome)g(y)m(our)e(feedbac)m(k.)275
-2061 y(T)-8 b(o)34 b(reduce)f(required)g(memorization)j(of)e(these)g
-(complex)g(p)s(olicy)g(switc)m(hes,)i Fy(ncpdq)c FD(ma)m(y)j(also)g(b)s
-(e)150 2170 y(in)m(v)m(ok)m(ed)25 b(via)g(a)f(synon)m(ym)g(or)g(with)g
-(switc)m(hes)g(that)h(imply)f(a)g(particular)g(p)s(olicy)-8
-b(.)40 b Fy(ncpack)22 b FD(is)i(a)g(synon)m(ym)150 2280
-y(for)32 b Fy(ncpdq)e FD(and)h(b)s(eha)m(v)m(es)h(the)g(same)g(in)g
-(all)g(resp)s(ects.)45 b(Both)33 b Fy(ncpdq)d FD(and)h
-Fy(ncpack)f FD(assume)i(a)g(default)150 2389 y(pac)m(king)26
-b(p)s(olicy)e(request)h(of)g(`)p Fy(all_new)p FD('.)37
-b(Hence)25 b Fy(ncpack)e FD(ma)m(y)i(b)s(e)f(in)m(v)m(ok)m(ed)i
-(without)f(an)m(y)g(`)p Fy(-P)p FD(')f(switc)m(h,)150
-2499 y(unlik)m(e)36 b Fy(ncpdq)p FD(.)56 b(Similarly)-8
-b(,)38 b Fy(ncunpack)c FD(is)i(a)g(synon)m(ym)g(for)g
-Fy(ncpdq)e FD(except)j(that)g Fy(ncpack)d FD(implicitly)150
-2609 y(assumes)43 b(a)h(request)g(to)g(unpac)m(k,)j(i.e.,)h(`)p
-Fy(-P)30 b(pck_upk)p FD('.)79 b(Finally)-8 b(,)48 b(the)c
-Fy(ncpdq)e FD(`)p Fy(-U)p FD(')i(switc)m(h)g(\(or)g(its)150
-2718 y(long)32 b(option)g(equiv)-5 b(alen)m(ts,)33 b(`)p
-Fy(--upk)p FD(')d(and)g(`)p Fy(--unpack)p FD('\))g(requires)h(no)g
-(argumen)m(t.)44 b(It)31 b(simply)g(requests)150 2828
-y(unpac)m(king.)275 2996 y(Giv)m(en)i(the)g(menagerie)h(of)f(synon)m
-(yms,)f(equiv)-5 b(alen)m(t)35 b(options,)e(and)f(implied)h(options,)h
-(a)f(short)f(list)150 3106 y(of)j(some)g(equiv)-5 b(alen)m(t)36
-b(commands)f(is)f(appropriate.)54 b(The)34 b(follo)m(wing)j(commands)d
-(are)h(equiv)-5 b(alen)m(t)36 b(for)150 3215 y(pac)m(king:)45
-b Fy(ncpdq)29 b(-P)h(all_new)p FD(,)h Fy(ncpdq)e(--pck_plc=all_new)p
-FD(,)f(and)k Fy(ncpack)p FD(.)45 b(The)31 b(follo)m(wing)j(com-)150
-3325 y(mands)h(are)h(equiv)-5 b(alen)m(t)38 b(for)e(unpac)m(king:)52
-b Fy(ncpdq)29 b(-P)g(upk)p FD(,)37 b Fy(ncpdq)29 b(-U)p
-FD(,)37 b Fy(ncpdq)29 b(--pck_plc=unpack)p FD(,)150 3435
-y(and)j Fy(ncunpack)p FD(.)44 b(Equiv)-5 b(alen)m(t)33
-b(commands)f(for)g(other)g(pac)m(king)h(p)s(olicies,)h(e.g.,)g(`)p
-Fy(all_xst)p FD(',)e(follo)m(w)h(b)m(y)150 3544 y(analogy)-8
-b(.)63 b(Note)38 b(that)g Fy(ncpdq)e FD(synon)m(yms)g(are)i(sub)5
-b(ject)37 b(to)h(the)f(same)h(constrain)m(ts)g(and)e(recommen-)150
-3654 y(dations)h(discussed)e(in)h(the)h(secion)g(on)f
-Fy(ncbo)f FD(synon)m(yms)h(\(see)h(Section)g(4.3)h([ncb)s(o)e(netCDF)h
-(Binary)150 3763 y(Op)s(erator],)g(page)g(123\).)59 b(That)36
-b(is,)h(sym)m(b)s(olic)f(links)g(m)m(ust)g(exist)g(from)g(the)g(synon)m
-(ym)f(to)i Fy(ncpdq)p FD(,)f(or)150 3873 y(else)31 b(the)g(user)e(m)m
-(ust)i(de\014ne)e(an)i Fy(alias)p FD(.)275 4042 y(The)f
-Fy(ncpdq)g FD(pac)m(king)i(algorithms)h(m)m(ust)e(kno)m(w)g(to)h(whic)m
-(h)f(t)m(yp)s(e)h(particular)f(t)m(yp)s(es)h(of)f(input)f(v)-5
-b(ari-)150 4151 y(ables)24 b(are)f(to)i(b)s(e)d(pac)m(k)m(ed.)40
-b(The)23 b(corresp)s(ondence)f(b)s(et)m(w)m(een)i(the)g(input)e(v)-5
-b(ariable)24 b(t)m(yp)s(e)g(and)f(the)g(output,)150 4261
-y(pac)m(k)m(ed)37 b(t)m(yp)s(e,)g(is)f(called)g(the)g
-Fz(pac)m(king)h(map)p FD(.)56 b(The)35 b(user)g(sp)s(eci\014es)g(the)g
-(desired)g(pac)m(king)i(map)e(with)150 4370 y(the)f(`)p
-Fy(-M)p FD(')f(switc)m(h)i(\(or)f(its)g(long)g(option)g(equiv)-5
-b(alen)m(ts,)36 b(`)p Fy(--pck_map)p FD(')c(and)h(`)p
-Fy(--map)p FD('\))g(and)g(its)h Fz(p)s(c)m(k)p 3544 4370
-28 4 v 40 w(map)150 4480 y FD(argumen)m(t.)41 b(Fiv)m(e)32
-b(pac)m(king)f(maps)f(are)h(curren)m(tly)f(implemen)m(ted:)150
-4792 y Fz(P)m(ac)m(k)i(Floating)g(Precisions)f(to)g Fy(NC_SHORT)d
-Fz([)p Fr(default)9 b Fz(])630 4902 y FD(De\014nition:)41
-b(P)m(ac)m(k)32 b(\015oating)g(precision)e(t)m(yp)s(es)h(to)g
-Fy(NC_SHORT)630 5011 y FD(Map:)41 b(P)m(ac)m(k)32 b([)p
-Fy(NC_DOUBLE)p FD(,)p Fy(NC_FLOAT)p FD(])26 b(to)31 b
-Fy(NC_SHORT)630 5121 y FD(T)m(yp)s(es)f(copied)h(instead)f(of)h(pac)m
-(k)m(ed:)42 b([)p Fy(NC_INT)p FD(,)p Fy(NC_SHORT)p FD(,)p
-Fy(NC_CHAR)p FD(,)p Fy(NC_BY)o(TE)p FD(])630 5230 y Fz(p)s(c)m(k)p
-775 5230 V 40 w(map)33 b FD(k)m(ey)e(v)-5 b(alues:)41
-b(`)p Fy(flt_sht)p FD(',)29 b(`)p Fy(pck_map_flt_sht)p
-FD(')p eop end
-%%Page: 144 146
-TeXDict begin 144 145 bop 150 -116 a FD(144)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fz(P)m(ac)m(k)i(Floating)g
-(Precisions)f(to)g Fy(NC_BYTE)630 408 y FD(De\014nition:)41
-b(P)m(ac)m(k)32 b(\015oating)g(precision)e(t)m(yp)s(es)h(to)g
-Fy(NC_BYTE)630 518 y FD(Map:)41 b(P)m(ac)m(k)32 b([)p
-Fy(NC_DOUBLE)p FD(,)p Fy(NC_FLOAT)p FD(])26 b(to)31 b
-Fy(NC_BYTE)630 628 y FD(T)m(yp)s(es)f(copied)h(instead)f(of)h(pac)m(k)m
-(ed:)42 b([)p Fy(NC_INT)p FD(,)p Fy(NC_SHORT)p FD(,)p
-Fy(NC_CHAR)p FD(,)p Fy(NC_BY)o(TE)p FD(])630 737 y Fz(p)s(c)m(k)p
-775 737 28 4 v 40 w(map)33 b FD(k)m(ey)e(v)-5 b(alues:)41
-b(`)p Fy(flt_byt)p FD(',)29 b(`)p Fy(pck_map_flt_byt)p
-FD(')150 1013 y Fz(P)m(ac)m(k)j(Higher)f(Precisions)f(to)i
-Fy(NC_SHORT)630 1123 y FD(De\014nition:)41 b(P)m(ac)m(k)32
-b(higher)e(precision)h(t)m(yp)s(es)f(to)h Fy(NC_SHORT)630
-1232 y FD(Map:)41 b(P)m(ac)m(k)32 b([)p Fy(NC_DOUBLE)p
-FD(,)p Fy(NC_FLOAT)p FD(,)p Fy(NC_INT)p FD(])25 b(to)31
-b Fy(NC_SHORT)630 1342 y FD(T)m(yp)s(es)f(copied)h(instead)f(of)h(pac)m
-(k)m(ed:)42 b([)p Fy(NC_SHORT)p FD(,)p Fy(NC_CHAR)p FD(,)p
-Fy(NC_BYTE)p FD(])630 1451 y Fz(p)s(c)m(k)p 775 1451
-V 40 w(map)33 b FD(k)m(ey)e(v)-5 b(alues:)41 b(`)p Fy(hgh_sht)p
-FD(',)29 b(`)p Fy(pck_map_hgh_sht)p FD(')150 1727 y Fz(P)m(ac)m(k)j
-(Higher)f(Precisions)f(to)i Fy(NC_BYTE)630 1837 y FD(De\014nition:)41
-b(P)m(ac)m(k)32 b(higher)e(precision)h(t)m(yp)s(es)f(to)h
-Fy(NC_BYTE)630 1946 y FD(Map:)41 b(P)m(ac)m(k)32 b([)p
-Fy(NC_DOUBLE)p FD(,)p Fy(NC_FLOAT)p FD(,)p Fy(NC_INT)p
-FD(,)p Fy(NC_SH)o(ORT)o FD(])25 b(to)31 b Fy(NC_BYTE)630
-2056 y FD(T)m(yp)s(es)f(copied)h(instead)f(of)h(pac)m(k)m(ed:)42
-b([)p Fy(NC_CHAR)p FD(,)p Fy(NC_BYTE)p FD(])630 2166
-y Fz(p)s(c)m(k)p 775 2166 V 40 w(map)33 b FD(k)m(ey)e(v)-5
-b(alues:)41 b(`)p Fy(hgh_byt)p FD(',)29 b(`)p Fy(pck_map_hgh_byt)p
-FD(')150 2441 y Fz(P)m(ac)m(k)j(to)f(Next)g(Lesser)g(Precision)630
-2551 y FD(De\014nition:)41 b(P)m(ac)m(k)32 b(eac)m(h)g(t)m(yp)s(e)e(to)
-h(t)m(yp)s(e)g(of)g(next)f(lesser)h(size)630 2660 y(Map:)40
-b(P)m(ac)m(k)30 b Fy(NC_DOUBLE)c FD(to)j Fy(NC_INT)p
-FD(.)39 b(P)m(ac)m(k)30 b([)p Fy(NC_FLOAT)p FD(,)p Fy(NC_INT)p
-FD(])25 b(to)k Fy(NC_SHORT)p FD(.)38 b(P)m(ac)m(k)630
-2770 y Fy(NC_SHORT)28 b FD(to)j Fy(NC_BYTE)p FD(.)630
-2880 y(T)m(yp)s(es)f(copied)h(instead)f(of)h(pac)m(k)m(ed:)42
-b([)p Fy(NC_CHAR)p FD(,)p Fy(NC_BYTE)p FD(])630 2989
-y Fz(p)s(c)m(k)p 775 2989 V 40 w(map)33 b FD(k)m(ey)e(v)-5
-b(alues:)41 b(`)p Fy(nxt_lsr)p FD(',)29 b(`)p Fy(pck_map_nxt_lsr)p
-FD(')150 3290 y(The)46 b(default)h(`)p Fy(all_new)p FD(')e(pac)m(king)j
-(p)s(olicy)e(with)h(the)g(default)f(`)p Fy(flt_sht)p
-FD(')f(pac)m(king)j(map)e(reduces)150 3400 y(the)32 b(t)m(ypical)h
-Fy(NC_FLOAT)p FD(-dominated)d(\014le)i(size)h(b)m(y)e(ab)s(out)f
-(50\045.)j(`)p Fy(flt_byt)p FD(')d(pac)m(king)j(reduces)e(an)h
-Fy(NC_)150 3509 y(DOUBLE)p FD(-dominated)d(\014le)i(b)m(y)f(ab)s(out)g
-(87\045.)275 3672 y(The)36 b(netCDF)h(pac)m(king)g(algorithm)h(\(see)f
-(Section)h(4.1.11)h([Metho)s(ds)d(and)g(functions],)i(page)g(82\))150
-3782 y(is)d(lossy|once)g(pac)m(k)m(ed,)j(the)d(exact)h(original)g(data)
-f(cannot)g(b)s(e)f(reco)m(v)m(ered)j(without)d(a)i(full)e(bac)m(kup.)
-150 3891 y(Hence)42 b(users)d(should)h(b)s(e)g(a)m(w)m(are)j(of)d(some)
-i(pac)m(king)f(ca)m(v)m(eats:)65 b(First,)43 b(the)e(in)m(teraction)i
-(of)e(pac)m(king)150 4001 y(and)29 b(data)i(equal)g(to)g(the)p
-1046 4001 V 70 w Fz(FillV)-8 b(alue)37 b FD(is)30 b(complex.)42
-b(T)-8 b(est)30 b(the)h Fy(_FillValue)c FD(b)s(eha)m(vior)j(b)m(y)g(p)s
-(erforming)150 4110 y(a)37 b(pac)m(k/unpac)m(k)h(cycle)h(to)f(ensure)e
-(data)i(that)f(are)h(missing)f Fr(stay)46 b FD(missing)36
-b(and)h(data)h(that)f(are)h(not)150 4220 y(misssing)30
-b(do)h(not)g(join)g(the)g(Air)g(National)h(Guard)e(and)g(go)i(missing.)
-42 b(This)30 b(ma)m(y)h(lead)g(y)m(ou)h(to)f(elect)i(a)150
-4329 y(new)p 338 4329 V 64 w Fz(FillV)-8 b(alue)p FD(.)41
-b(Second,)26 b Fy(ncpdq)d FD(actually)j(allo)m(ws)g(pac)m(king)g(in)m
-(to)g Fy(NC_CHAR)c FD(\(with,)k(e.g.,)i(`)p Fy(flt_chr)p
-FD('\).)150 4439 y(Ho)m(w)m(ev)m(er,)d(the)c(in)m(trinsic)g(con)m(v)m
-(ersion)h(of)f Fy(signed)28 b(char)20 b FD(to)h(higher)f(precision)h(t)
-m(yp)s(es)g(is)g(tric)m(ky)g(for)g(v)-5 b(alues)150 4549
-y(equal)23 b(to)h(zero,)h(i.e.,)g(for)e Fy(NUL)p FD(.)37
-b(Hence)23 b(pac)m(king)h(to)f Fy(NC_CHAR)e FD(is)i(not)f(do)s(cumen)m
-(ted)h(or)f(adv)m(ertised.)39 b(P)m(ac)m(k)150 4658 y(in)m(to)31
-b Fy(NC_BYTE)e FD(\(with,)h(e.g.,)i(`)p Fy(flt_byt)p
-FD('\))e(instead.)150 4864 y Fv(Dimension)43 b(P)m(erm)m(utation)150
-5011 y Fy(ncpdq)26 b FD(re-shap)s(es)i(v)-5 b(ariables)28
-b(in)g Fz(input-\014le)k FD(b)m(y)c(re-ordering)g(and/or)f(rev)m
-(ersing)i(dimensions)e(sp)s(eci\014ed)150 5121 y(in)42
-b(the)g(dimension)f(list.)76 b(The)42 b(dimension)f(list)i(is)e(a)i
-(whitespace-free,)j(comma)d(separated)f(list)h(of)150
-5230 y(dimension)22 b(names,)i(optionally)g(pre\014xed)d(b)m(y)h
-(negativ)m(e)j(signs,)f(that)f(follo)m(ws)h(the)e(`)p
-Fy(-a)p FD(')h(\(or)g(long)g(options)150 5340 y(`)p Fy(--arrange)p
-FD(',)42 b(`)p Fy(--permute)p FD(',)g(`)p Fy(--re-order)p
-FD(',)g(or)f(`)p Fy(--rdr)p FD('\))f(switc)m(h.)73 b(T)-8
-b(o)42 b(re-order)f(v)-5 b(ariables)42 b(b)m(y)f(a)p
-eop end
-%%Page: 145 147
-TeXDict begin 145 146 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(145)150
-299 y(subset)39 b(of)g(their)g(dimensions,)i(sp)s(ecify)e(these)h
-(dimensions)e(in)h(a)h(comma-separated)h(list)e(follo)m(wing)150
-408 y(`)p Fy(-a)p FD(',)29 b(e.g.,)i(`)p Fy(-a)f(lon,lat)p
-FD('.)38 b(T)-8 b(o)29 b(rev)m(erse)h(a)f(dimension,)f(pre\014x)g(its)h
-(name)g(with)f(a)h(negativ)m(e)i(sign)d(in)h(the)150
-518 y(dimension)h(list,)h(e.g.,)h(`)p Fy(-a)e(-lat)p
-FD('.)40 b(Re-ordering)31 b(and)e(rev)m(ersal)j(ma)m(y)f(b)s(e)f(p)s
-(erformed)e(sim)m(ultaneously)-8 b(,)150 628 y(e.g.,)32
-b(`)p Fy(-a)e(lon,-lat,time,-lev)p FD('.)275 787 y(Users)c(ma)m(y)h(sp)
-s(ecify)g(an)m(y)g(p)s(erm)m(utation)g(of)f(dimensions,)h(including)g
-(p)s(erm)m(utations)f(whic)m(h)h(c)m(hange)150 897 y(the)f(record)g
-(dimension)f(iden)m(tit)m(y)-8 b(.)41 b(The)26 b(record)g(dimension)f
-(is)h(re-ordered)g(lik)m(e)h(an)m(y)f(other)g(dimension.)150
-1006 y(This)35 b(unique)h Fy(ncpdq)f FD(capabilit)m(y)j(mak)m(es)f(it)g
-(p)s(ossible)e(to)i(concatenate)i(\014les)d(along)i(an)m(y)e
-(dimension.)150 1116 y(See)g(Section)g(2.6.1)h([Concatenation],)j(page)
-c(15)g(for)g(a)g(detailed)g(example.)57 b(The)35 b(record)h(dimension)
-150 1226 y(is)e(alw)m(a)m(ys)h(the)f(most)g(slo)m(wly)h(v)-5
-b(arying)34 b(dimension)f(in)g(a)h(record)g(v)-5 b(ariable)34
-b(\(see)h(Section)g(3.13)g([C)f(and)150 1335 y(F)-8 b(ortran)31
-b(Index)f(Con)m(v)m(en)m(tions],)j(page)e(38\).)43 b(The)30
-b(sp)s(eci\014ed)g(re-ordering)g(fails)i(if)e(it)h(requires)g(creating)
-150 1445 y(more)g(than)f(one)g(record)h(dimension)e(amongst)j(all)f
-(the)f(output)g(v)-5 b(ariables)2755 1412 y Fw(1)2793
-1445 y FD(.)275 1604 y(Tw)m(o)32 b(sp)s(ecial)g(cases)h(of)f(dimension)
-f(re-ordering)h(and)f(rev)m(ersal)i(deserv)m(e)f(sp)s(ecial)h(men)m
-(tion.)45 b(First,)150 1714 y(it)g(ma)m(y)g(b)s(e)f(desirable)h(to)g
-(completely)h(rev)m(erse)f(the)g(storage)h(order)e(of)h(a)g(v)-5
-b(ariable.)83 b(T)-8 b(o)45 b(do)g(this,)150 1824 y(include)35
-b(all)h(the)f(v)-5 b(ariable's)37 b(dimensions)d(in)h(the)g(dimension)g
-(re-order)g(list)h(in)f(their)g(original)h(order,)150
-1933 y(and)28 b(pre\014x)f(eac)m(h)j(dimension)e(name)h(with)f(the)h
-(negativ)m(e)h(sign.)40 b(Second,)29 b(it)g(ma)m(y)g(useful)f(to)h
-(transp)s(ose)150 2043 y(a)35 b(v)-5 b(ariable's)35 b(storage)h(order,)
-f(e.g.,)i(from)30 b(C)k(to)h(F)-8 b(ortran)35 b(data)h(storage)g(order)
-d(\(see)j(Section)f(3.13)h([C)150 2152 y(and)28 b(F)-8
-b(ortran)29 b(Index)e(Con)m(v)m(en)m(tions],)j(page)f(38\).)41
-b(T)-8 b(o)29 b(do)f(this,)h(include)f(all)h(the)g(v)-5
-b(ariable's)29 b(dimensions)150 2262 y(in)i(the)h(dimension)g(re-order)
-f(list)i(in)e(rev)m(ersed)h(order.)44 b(Explicit)33 b(examples)f(of)g
-(these)g(t)m(w)m(o)h(tec)m(hniques)150 2372 y(app)s(ear)d(b)s(elo)m(w.)
-275 2531 y(NB:)42 b(fxm)e(ncp)s(dq)g(do)s(cumen)m(tation)i(will)g(ev)m
-(olv)m(e)i(through)d(F)-8 b(all)43 b(2004.)75 b(I)41
-b(will)h(upload)f(up)s(dates)150 2641 y(to)c(do)s(cumen)m(tation)h
-(link)m(ed)f(to)g(b)m(y)g(the)f(NCO)g(homepage.)61 b(ncp)s(dq)35
-b(is)h(a)h(p)s(o)m(w)m(erful)f(op)s(erator,)j(and)d(I)150
-2750 y(am)31 b(unfamiliar)h(with)f(the)g(terminology)i(needed)e(to)h
-(describ)s(e)e(what)i(ncp)s(dq)d(do)s(es.)44 b(Sequences,)31
-b(sets,)150 2860 y(sheesh!)52 b(I)34 b(just)g(kno)m(w)g(that)h(it)g(do)
-s(es)f("The)g(righ)m(t)h(thing")g(according)g(to)g(m)m(y)g(gut)g
-(feelings.)53 b(No)m(w)35 b(do)150 2970 y(y)m(ou)c(feel)g(more)f
-(comfortable)i(using)e(it?)275 3129 y(Let)36 b Fk(D)p
-FD(\()p Fn(x)p FD(\))h(represen)m(t)f(the)g(dimensionalit)m(y)i(of)e
-(the)h(v)-5 b(ariable)37 b Fn(x)p FD(.)58 b(Dimensionalit)m(y)38
-b(describ)s(es)e(the)150 3239 y(order)30 b(and)h(sizes)g(of)g
-(dimensions.)42 b(If)30 b Fn(x)h FD(has)f(rank)h Fn(N)10
-b FD(,)31 b(then)f(w)m(e)h(ma)m(y)h(write)f Fk(D)p FD(\()p
-Fn(x)p FD(\))g(as)g(the)g Fn(N)10 b FD(-elemen)m(t)150
-3348 y(v)m(ector)718 3459 y Fk(D)p FD(\()p Fn(x)p FD(\))26
-b(=)f([)p Fn(D)1132 3473 y Fw(1)1170 3459 y Fn(;)15 b(D)1285
-3473 y Fw(2)1323 3459 y Fn(;)g(D)1438 3473 y Fw(3)1476
-3459 y Fn(;)g(:)g(:)g(:)h(;)f(D)1752 3473 y Fh(n)p Fc(\000)p
-Fw(1)1883 3459 y Fn(;)g(D)1998 3473 y Fh(n)2044 3459
-y Fn(;)g(D)2159 3473 y Fh(n)p Fw(+1)2289 3459 y Fn(;)g(:)g(:)g(:)h(;)f
-(D)2565 3473 y Fh(N)6 b Fc(\000)p Fw(2)2714 3459 y Fn(;)15
-b(D)2829 3473 y Fh(N)6 b Fc(\000)p Fw(1)2978 3459 y Fn(;)15
-b(D)3093 3473 y Fh(N)3156 3459 y FD(])150 3627 y(where)30
-b Fn(D)488 3641 y Fh(n)564 3627 y FD(is)g(the)h(size)g(of)f(the)h
-Fn(n)p FD('th)f(dimension.)275 3787 y(The)f(dimension)h(re-order)g
-(list)h(sp)s(eci\014ed)f(with)g(`)p Fy(-a)p FD(')g(is)h(the)f
-Fn(R)q FD(-elemen)m(t)i(v)m(ector)834 3997 y Fk(R)25
-b FD(=)g([)p Fn(R)1118 4011 y Fw(1)1155 3997 y Fn(;)15
-b(R)1264 4011 y Fw(2)1302 3997 y Fn(;)g(R)1411 4011 y
-Fw(3)1449 3997 y Fn(;)g(:)g(:)g(:)h(;)f(R)1719 4011 y
-Fh(r)r Fc(\000)p Fw(1)1841 3997 y Fn(;)g(R)1950 4011
-y Fh(r)1988 3997 y Fn(;)g(R)2097 4011 y Fh(r)r Fw(+1)2218
-3997 y Fn(;)g(:)g(:)g(:)i(;)e(R)2489 4011 y Fh(R)p Fc(\000)p
-Fw(2)2628 3997 y Fn(;)g(R)2737 4011 y Fh(R)p Fc(\000)p
-Fw(1)2877 3997 y Fn(;)g(R)2986 4011 y Fh(R)3041 3997
-y FD(])150 4206 y(There)25 b(need)g(b)s(e)g(no)h(relation)h(b)s(et)m(w)
-m(een)f Fn(N)35 b FD(and)25 b Fn(R)q FD(.)39 b(Let)26
-b(the)g Fn(S)5 b FD(-elemen)m(t)27 b(v)m(ector)g Fk(S)e
-FD(b)s(e)g(the)h(in)m(tersection)150 4316 y(\(i.e.,)32
-b(the)f(ordered)e(set)i(of)g(unique)e(shared)h(dimensions\))g(of)h
-Fk(D)f FD(and)f Fk(R)i FD(Then)914 4526 y Fk(S)25 b FD(=)g
-Fk(R)20 b FA(\\)g Fk(D)990 4660 y FD(=)25 b([)p Fn(S)1167
-4674 y Fw(1)1204 4660 y Fn(;)15 b(S)1300 4674 y Fw(2)1337
-4660 y Fn(;)g(S)1433 4674 y Fw(3)1471 4660 y Fn(;)g(:)g(:)g(:)h(;)f(S)
-1728 4674 y Fh(s)p Fc(\000)p Fw(1)1849 4660 y Fn(;)g(S)1945
-4674 y Fh(s)1981 4660 y Fn(;)g(S)2077 4674 y Fh(s)p Fw(+1)2196
-4660 y Fn(;)g(:)g(:)g(:)i(;)e(S)2454 4674 y Fh(S)s Fc(\000)p
-Fw(2)2587 4660 y Fn(;)g(S)2683 4674 y Fh(S)s Fc(\000)p
-Fw(1)2816 4660 y Fn(;)g(S)2912 4674 y Fh(S)2961 4660
-y FD(])150 4870 y Fk(S)30 b FD(is)g(empt)m(y)h(if)f Fk(R)36
-b Fn(=)-55 b FA(2)25 b Fk(D)p FD(.)275 5030 y(Re-ordering)33
-b(\(or)g(re-shaping\))g(a)h(v)-5 b(ariable)34 b(means)e(mapping)h(the)g
-(input)f(state)i(with)f(dimension-)150 5139 y(alit)m(y)i
-Fk(D)p FD(\()p Fn(x)p FD(\))f(to)h(the)f(output)f(state)i(with)e
-(dimensionalit)m(y)i Fk(D)2278 5106 y Fc(0)2301 5139
-y FD(\()p Fn(x)2388 5106 y Fc(0)2412 5139 y FD(\).)51
-b(In)33 b(practice,)j(mapping)d(o)s(ccurs)g(in)p 150
-5241 1200 4 v 199 5308 a Fw(1)275 5340 y Fu(This)26 b(limitation,)h
-(imp)r(osed)g(b)n(y)d(the)i(netCDF)f(storage)i(la)n(y)n(er,)f(ma)n(y)g
-(b)r(e)f(relaxed)h(in)g(the)f(future)g(with)h(netCDF4.)p
-eop end
-%%Page: 146 148
-TeXDict begin 146 147 bop 150 -116 a FD(146)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(three)g(logically)i(distinct)e
-(steps.)40 b(First,)30 b(w)m(e)g(tranlate)h(the)f(user)f(input)f(to)j
-(a)e(one-to-one)j(mapping)d FA(M)150 408 y FD(b)s(et)m(w)m(een)i(input)
-e(and)g(output)h(dimensions,)g Fk(D)25 b FA(7!)g Fk(D)1989
-375 y Fc(0)2012 408 y FD(.)41 b(This)29 b(ten)m(tativ)m(e)k(map)d(is)g
-(\014nal)g(unless)f(external)150 518 y(constrain)m(ts)40
-b(\(t)m(ypically)h(netCDF)f(restrictions\))g(imp)s(ose)f(themselv)m
-(es.)68 b(Second,)41 b(w)m(e)e(c)m(hec)m(k)i(and,)g(if)150
-628 y(necessary)-8 b(,)34 b(re\014ne)e(the)h(ten)m(tativ)m(e)j(mapping)
-c(so)h(that)g(the)g(re-shap)s(ed)e(v)-5 b(ariables)34
-b(will)f(co-exist)h(in)f(the)150 737 y(same)i(\014le)g(without)f
-(violating)j(netCDF-imp)s(osed)d(storage)i(restrictions.)54
-b(This)34 b(re\014ned)g(map)g(sp)s(eci-)150 847 y(\014es)h(the)h
-(\014nal)f(\(output\))h(dimensionalit)m(y)-8 b(.)59 b(Third,)35
-b(w)m(e)h(translate)h(the)f(output)f(dimensionalit)m(y)i(in)m(to)150
-956 y(one-dimensional)27 b(memory)g(o\013sets)g(for)g(eac)m(h)h(datum)e
-(according)h(to)h(the)e(C)k(language)e(con)m(v)m(en)m(tion)h(for)150
-1066 y(m)m(ulti-dimensional)j(arra)m(y)f(storage.)43
-b(Dimension)31 b(rev)m(ersal)g(c)m(hanges)h(the)f(ordering)f(of)h
-(data,)h(but)e(not)150 1176 y(the)h(dimensionalit)m(y)-8
-b(,)32 b(and)e(so)g(is)h(part)f(of)g(the)h(third)e(step.)275
-1345 y(Dimensions)24 b Fn(R)g FD(disjoin)m(t)g(from)f
-Fk(D)h FD(pla)m(y)g(no)g(role)g(in)g(re-ordering.)38
-b(The)24 b(\014rst)f(step)h(tak)m(en)h(to)f(re-order)150
-1455 y(a)38 b(v)-5 b(ariable)39 b(is)f(to)h(determine)f
-Fk(S)p FD(.)62 b Fk(R)38 b FD(is)g(constan)m(t)h(for)f(all)h(v)-5
-b(ariables,)41 b(whereas)c Fk(D)p FD(,)j(and)d(hence)h
-Fk(S)p FD(,)i(is)150 1564 y(v)-5 b(ariable-sp)s(eci\014c.)47
-b Fk(S)32 b FD(is)g(empt)m(y)h(if)f Fk(R)39 b Fn(=)-55
-b FA(2)28 b Fk(D)p FD(.)46 b(This)31 b(ma)m(y)i(b)s(e)f(the)g(case)i
-(for)e(some)g(extracted)i(v)-5 b(ariables.)150 1674 y(The)27
-b(user)g(ma)m(y)h(explicitly)h(sp)s(ecify)e(the)g(one-to-one)j(mapping)
-c(of)i(input)e(to)j(output)e(dimension)f(order)150 1783
-y(b)m(y)36 b(supplying)f(\(with)i(`)p Fy(-a)p FD('\))g(a)f(re-order)h
-(list)g Fk(R)f FD(suc)m(h)g(that)h Fn(S)k FD(=)35 b Fn(N)10
-b FD(.)58 b(In)36 b(this)g(case)i Fn(D)3225 1750 y Fc(0)3222
-1806 y Fh(n)3303 1783 y FD(=)d Fn(S)3465 1797 y Fh(n)3510
-1783 y FD(.)58 b(The)150 1893 y(degenerate)32 b(case)f(o)s(ccurs)f
-(when)g Fk(D)25 b FD(=)g Fk(S)p FD(.)40 b(This)29 b(pro)s(duces)g(the)i
-(iden)m(tit)m(y)h(mapping)e Fn(D)3157 1860 y Fc(0)3154
-1915 y Fh(n)3224 1893 y FD(=)25 b Fn(D)3395 1907 y Fh(n)3441
-1893 y FD(.)275 2062 y(The)k(mapping)f(of)i(input)f(to)h(output)f
-(dimension)g(order)g(is)g(more)h(complex)g(when)f Fn(S)h
-FA(6)p FD(=)25 b Fn(N)10 b FD(.)40 b(In)29 b(this)150
-2172 y(case)i Fn(D)420 2139 y Fc(0)417 2194 y Fh(n)488
-2172 y FD(=)25 b Fn(D)659 2186 y Fh(n)735 2172 y FD(for)30
-b(the)h Fn(N)f FA(\000)20 b Fn(S)35 b FD(dimensions)30
-b Fn(D)1860 2139 y Fc(0)1857 2194 y Fh(n)1937 2172 y
-Fn(=)-55 b FA(2)25 b Fk(S)p FD(.)40 b(F)-8 b(or)31 b(the)g
-Fn(S)k FD(dimensions)30 b Fn(D)3084 2139 y Fc(0)3081
-2194 y Fh(n)3152 2172 y FA(2)25 b Fk(S)p FD(,)30 b Fn(D)3422
-2139 y Fc(0)3419 2194 y Fh(n)3489 2172 y FD(=)25 b Fn(S)3641
-2186 y Fh(s)3676 2172 y FD(.)150 2341 y(EXAMPLES)275
-2511 y(P)m(ac)m(k)31 b(and)f(unpac)m(k)g(all)i(v)-5 b(ariables)31
-b(in)f(\014le)g(`)p Fy(in.nc)p FD(')g(and)f(store)i(the)g(results)f(in)
-g(`)p Fy(out.nc)p FD(':)390 2680 y Fy(ncpdq)46 b(in.nc)h(out.nc)f(#)h
-(Same)g(as)g(ncpack)f(in.nc)h(out.nc)390 2790 y(ncpdq)f(-P)i(all_new)d
-(-M)j(flt_sht)d(in.nc)i(out.nc)f(#)h(Defaults)390 2899
-y(ncpdq)f(-P)i(all_xst)d(in.nc)i(out.nc)390 3009 y(ncpdq)f(-P)i(upk)e
-(in.nc)h(out.nc)f(#)h(Same)g(as)g(ncunpack)f(in.nc)g(out.nc)390
-3118 y(ncpdq)g(-U)i(in.nc)e(out.nc)g(#)h(Same)g(as)g(ncunpack)f(in.nc)g
-(out.nc)275 3288 y FD(The)27 b(\014rst)g(t)m(w)m(o)i(commands)f(pac)m
-(k)g(an)m(y)g(unpac)m(k)m(ed)g(v)-5 b(ariable)29 b(in)e(the)h(input)f
-(\014le.)40 b(They)27 b(also)i(unpac)m(k)150 3397 y(and)d(then)g
-(re-pac)m(k)i(ev)m(ery)f(pac)m(k)m(ed)h(v)-5 b(ariable.)40
-b(The)26 b(third)g(command)g(only)g(pac)m(ks)i(unpac)m(k)m(ed)e(v)-5
-b(ariables)150 3507 y(in)29 b(the)g(input)e(\014le.)41
-b(If)28 b(a)h(v)-5 b(ariable)30 b(is)f(already)g(pac)m(k)m(ed,)i(the)e
-(third)f(command)h(copies)g(it)h(unc)m(hanged)e(to)150
-3616 y(the)j(output)f(\014le.)42 b(The)30 b(fourth)g(and)g(\014fth)f
-(commands)i(unpac)m(k)f(an)m(y)h(pac)m(k)m(ed)h(v)-5
-b(ariables.)42 b(If)30 b(a)h(v)-5 b(ariable)150 3726
-y(is)30 b(not)h(pac)m(k)m(ed,)h(the)e(third)g(command)g(copies)h(it)g
-(unc)m(hanged.)275 3895 y(The)23 b(previous)h(examples)h(all)g
-(utilized)g(the)g(default)f(pac)m(king)h(map.)39 b(Supp)s(ose)22
-b(y)m(ou)j(wish)e(to)i(arc)m(hiv)m(e)150 4005 y(all)34
-b(data)g(that)g(are)g(curren)m(tly)f(unpac)m(k)m(ed)h(in)m(to)g(a)f
-(form)g(whic)m(h)g(only)h(preserv)m(es)f(256)i(distinct)e(v)-5
-b(alues.)150 4115 y(Then)40 b(y)m(ou)i(could)f(sp)s(ecify)g(the)g(pac)m
-(king)i(map)e Fz(p)s(c)m(k)p 2016 4115 28 4 v 39 w(map)j
-FD(as)e(`)p Fy(hgh_byt)p FD(')d(and)i(the)g(pac)m(king)i(p)s(olicy)150
-4224 y Fz(p)s(c)m(k)p 295 4224 V 40 w(plc)36 b FD(as)30
-b(`)p Fy(all_xst)p FD(':)390 4394 y Fy(ncpdq)46 b(-P)i(all_xst)d(-M)j
-(hgh_byt)d(in.nc)i(out.nc)275 4563 y FD(Man)m(y)36 b(di\013eren)m(t)g
-(pac)m(king)h(maps)e(ma)m(y)h(b)s(e)f(used)g(to)h(construct)g(a)g(giv)m
-(en)h(\014le)f(b)m(y)f(p)s(erforming)g(the)150 4672 y(pac)m(king)29
-b(on)f(subsets)f(of)i(v)-5 b(ariables)28 b(\(e.g.,)j(with)d(`)p
-Fy(-v)p FD('\))g(and)f(using)h(the)g(app)s(end)f(feature)h(with)g(`)p
-Fy(-A)p FD(')g(\(see)150 4782 y(Section)j(2.4)h([App)s(ending)d(V)-8
-b(ariables],)32 b(page)f(14\).)275 4951 y(Re-order)f(\014le)h(`)p
-Fy(in.nc)p FD(')f(so)h(that)g(the)g(dimension)f Fy(lon)g
-FD(alw)m(a)m(ys)i(precedes)f(the)g(dimension)f Fy(lat)g
-FD(and)150 5061 y(store)h(the)g(results)f(in)g(`)p Fy(out.nc)p
-FD(':)390 5230 y Fy(ncpdq)46 b(-a)i(lon,lat)d(in.nc)i(out.nc)390
-5340 y(ncpdq)f(-v)i(three_dmn_var)c(-a)j(lon,lat)f(in.nc)g(out.nc)p
-eop end
-%%Page: 147 149
-TeXDict begin 147 148 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(147)275
-299 y(The)42 b(\014rst)g(command)h(re-orders)f(ev)m(ery)i(v)-5
-b(ariable)43 b(in)g(the)g(input)f(\014le.)78 b(The)42
-b(second)h(command)150 408 y(extracts)32 b(and)d(re-orders)i(only)f
-(the)h(v)-5 b(ariable)31 b Fy(three_dmn_var)p FD(.)275
-573 y(Supp)s(ose)39 b(the)i(dimension)g Fy(lat)f FD(represen)m(ts)h
-(latitude)i(and)d(monotonically)j(increases)f(increases)150
-682 y(from)g(south)g(to)h(north.)77 b(Rev)m(ersing)43
-b(the)f Fy(lat)g FD(dimension)g(means)g(re-ordering)h(the)f(data)i(so)e
-(that)150 792 y(latitude)31 b(v)-5 b(alues)31 b(decrease)g
-(monotonically)i(from)d(north)f(to)j(south.)40 b(Accomplish)31
-b(this)f(with)390 956 y Fy(\045)47 b(ncpdq)g(-a)g(-lat)g(in.nc)f
-(out.nc)390 1066 y(\045)h(ncks)g(-C)g(-v)g(lat)g(in.nc)390
-1176 y(lat[0]=-90)390 1285 y(lat[1]=90)390 1395 y(\045)g(ncks)g(-C)g
-(-v)g(lat)g(out.nc)390 1504 y(lat[0]=90)390 1614 y(lat[1]=-90)275
-1778 y FD(This)25 b(op)s(eration)i(rev)m(ersed)g(the)g(latitude)g
-(dimension)f(of)h(all)g(v)-5 b(ariables.)41 b(Whitespace)28
-b(immediately)150 1888 y(preceding)d(the)f(negativ)m(e)j(sign)e(that)g
-(sp)s(eci\014es)f(dimension)g(rev)m(ersal)h(ma)m(y)g(b)s(e)f
-(dangerous.)39 b(Quotes)25 b(and)150 1998 y(long)35 b(options)g(can)f
-(help)g(protect)i(negativ)m(e)g(signs)e(that)h(should)f(indicate)h
-(dimension)f(rev)m(ersal)h(from)150 2107 y(b)s(eing)30
-b(in)m(terpreted)h(b)m(y)f(the)g(shell)h(as)g(dashes)f(that)h(indicate)
-g(new)f(command)g(line)h(switc)m(hes.)390 2271 y Fy(ncpdq)46
-b(-a)i(-lat)e(in.nc)h(out.nc)f(#)h(Dangerous?)e(Whitespace)g(before)h
-("-lat")390 2381 y(ncpdq)g(-a)i('-lat')e(in.nc)g(out.nc)g(#)i(OK.)e
-(Quotes)h(protect)e("-")i(in)g("-lat")390 2491 y(ncpdq)f(-a)i(lon,-lat)
-d(in.nc)h(out.nc)h(#)g(OK.)g(No)g(whitespace)e(before)h("-")390
-2600 y(ncpdq)g(--rdr=-lat)f(in.nc)i(out.nc)f(#)h(Preferred.)e(Uses)i
-("=")g(not)g(whitespace)275 2765 y FD(T)-8 b(o)24 b(create)h(the)f
-(mathematical)h(transp)s(ose)f(of)f(a)h(v)-5 b(ariable,)26
-b(place)f(all)f(its)g(dimensions)f(in)g(the)h(dimen-)150
-2874 y(sion)30 b(re-order)h(list)g(in)f(rev)m(ersed)g(order.)40
-b(This)30 b(example)h(creates)h(the)e(transp)s(ose)g(of)h
-Fy(three_dmn_var)p FD(:)390 3039 y Fy(\045)47 b(ncpdq)g(-a)g
-(lon,lev,lat)e(-v)i(three_dmn_var)d(in.nc)i(out.nc)390
-3148 y(\045)h(ncks)g(-C)g(-v)g(three_dmn_var)e(in.nc)390
-3258 y(lat[0]=-90)g(lev[0]=100)g(lon[0]=0)h(three_dmn_var[0]=0)390
-3367 y(lat[0]=-90)f(lev[0]=100)g(lon[1]=90)g(three_dmn_var[1]=1)390
-3477 y(lat[0]=-90)g(lev[0]=100)g(lon[2]=180)g(three_dmn_var[2]=2)390
-3587 y(...)390 3696 y(lat[1]=90)g(lev[2]=1000)g(lon[1]=90)g
-(three_dmn_var[21]=21)390 3806 y(lat[1]=90)g(lev[2]=1000)g(lon[2]=180)g
-(three_dmn_var[22]=22)390 3915 y(lat[1]=90)g(lev[2]=1000)g(lon[3]=270)g
-(three_dmn_var[23]=23)390 4025 y(\045)i(ncks)g(-C)g(-v)g(three_dmn_var)
-e(out.nc)390 4134 y(lon[0]=0)h(lev[0]=100)f(lat[0]=-90)g
-(three_dmn_var[0]=0)390 4244 y(lon[0]=0)h(lev[0]=100)f(lat[1]=90)g
-(three_dmn_var[1]=12)390 4354 y(lon[0]=0)h(lev[1]=500)f(lat[0]=-90)g
-(three_dmn_var[2]=4)390 4463 y(...)390 4573 y(lon[3]=270)g(lev[1]=500)g
-(lat[1]=90)g(three_dmn_var[21]=19)390 4682 y(lon[3]=270)g(lev[2]=1000)g
-(lat[0]=-90)g(three_dmn_var[22]=11)390 4792 y(lon[3]=270)g(lev[2]=1000)
-g(lat[1]=90)g(three_dmn_var[23]=23)275 4956 y FD(T)-8
-b(o)35 b(completely)h(rev)m(erse)g(the)f(storage)h(order)e(of)h(a)g(v)
--5 b(ariable,)37 b(include)d(all)i(its)f(dimensions)f(in)h(the)150
-5066 y(re-order)f(list,)i(eac)m(h)f(pre\014xed)e(b)m(y)h(a)g(negativ)m
-(e)i(sign.)52 b(This)33 b(example)i(rev)m(erses)f(the)h(storage)g
-(order)f(of)150 5176 y Fy(three_dmn_var)p FD(:)390 5340
-y Fy(\045)47 b(ncpdq)g(-a)g(-lat,-lev,-lon)d(-v)j(three_dmn_var)d
-(in.nc)j(out.nc)p eop end
-%%Page: 148 150
-TeXDict begin 148 149 bop 150 -116 a FD(148)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(\045)47 b(ncks)g(-C)g(-v)g
-(three_dmn_var)e(in.nc)390 408 y(lat[0]=-90)g(lev[0]=100)g(lon[0]=0)h
-(three_dmn_var[0]=0)390 518 y(lat[0]=-90)f(lev[0]=100)g(lon[1]=90)g
-(three_dmn_var[1]=1)390 628 y(lat[0]=-90)g(lev[0]=100)g(lon[2]=180)g
-(three_dmn_var[2]=2)390 737 y(...)390 847 y(lat[1]=90)g(lev[2]=1000)g
-(lon[1]=90)g(three_dmn_var[21]=21)390 956 y(lat[1]=90)g(lev[2]=1000)g
-(lon[2]=180)g(three_dmn_var[22]=22)390 1066 y(lat[1]=90)g(lev[2]=1000)g
-(lon[3]=270)g(three_dmn_var[23]=23)390 1176 y(\045)i(ncks)g(-C)g(-v)g
-(three_dmn_var)e(out.nc)390 1285 y(lat[0]=90)g(lev[0]=1000)g
-(lon[0]=270)g(three_dmn_var[0]=23)390 1395 y(lat[0]=90)g(lev[0]=1000)g
-(lon[1]=180)g(three_dmn_var[1]=22)390 1504 y(lat[0]=90)g(lev[0]=1000)g
-(lon[2]=90)g(three_dmn_var[2]=21)390 1614 y(...)390 1724
-y(lat[1]=-90)g(lev[2]=100)g(lon[1]=180)g(three_dmn_var[21]=2)390
-1833 y(lat[1]=-90)g(lev[2]=100)g(lon[2]=90)g(three_dmn_var[22]=1)390
-1943 y(lat[1]=-90)g(lev[2]=100)g(lon[3]=0)h(three_dmn_var[23]=0)275
-2102 y FD(Creating)37 b(a)h(record)f(dimension)f(named,)j(e.g.,)i
-Fy(time)p FD(,)c(in)g(a)h(\014le)f(whic)m(h)g(has)g(no)g(existing)h
-(record)150 2212 y(dimension)30 b(is)g(simple)h(with)f
-Fy(ncecat)p FD(:)390 2371 y Fy(ncecat)46 b(-O)h(-u)g(time)g(in.nc)f
-(out.nc)h(#)g(Create)f(degenerate)f(record)h(dimension)f(named)i
-("time")275 2531 y FD(No)m(w)27 b(consider)g(a)h(\014le)f(with)g(all)g
-(dimensions,)h(including)e Fy(time)p FD(,)h(\014xed)f(\(non-record\).)
-41 b(Supp)s(ose)25 b(the)150 2640 y(user)36 b(wishes)f(to)j(con)m(v)m
-(ert)g Fy(time)d FD(from)h(a)g(\014xed)g(dimension)g(to)h(a)g(record)f
-(dimension.)58 b(This)36 b(ma)m(y)h(b)s(e)150 2750 y(useful,)30
-b(for)h(example,)h(when)e(the)h(user)f(wishes)g(to)i(app)s(end)d
-(additional)i(time)h(slices)g(to)f(the)g(data.)43 b(As)150
-2859 y(of)31 b FC(NCO)f FD(v)m(ersion)g(4.0.1)j(\(April,)d(2010\))j
-(the)d(preferred)g(metho)s(d)f(for)h(doing)h(this)f(is)h(with)f
-Fy(ncks)p FD(:)390 3019 y Fy(ncks)47 b(-O)g(--mk_rec_dmn)d(time)j
-(in.nc)f(out.nc)g(#)i(Change)e("time")g(to)h(record)f(dimension)275
-3178 y FD(Prior)28 b(to)h(4.0.1,)i(the)e(pro)s(cedure)e(to)i(c)m(hange)
-h(an)e(existing)i(\014xed)e(dimension)f(in)m(to)j(a)f(record)f(dimen-)
-150 3288 y(sion)37 b(required)f(three)h(separate)h(commands,)g
-Fy(ncecat)d FD(follo)m(w)m(ed)k(b)m(y)e Fy(ncpdq)p FD(,)g(and)f(then)h
-Fy(ncwa)p FD(.)59 b(It)37 b(is)150 3397 y(still)f(instructiv)m(e)g(to)g
-(presen)m(t)f(the)h(original)g(pro)s(cedure,)g(as)f(it)h(sho)m(ws)f(ho)
-m(w)g(m)m(ultiple)h(op)s(erators)g(can)150 3507 y(ac)m(hiev)m(e)d(the)d
-(same)h(ends)f(b)m(y)g(di\013eren)m(t)h(means:)390 3666
-y Fy(ncecat)46 b(-O)h(in.nc)g(out.nc)f(#)h(Add)g(degenerate)e(record)h
-(dimension)f(named)i("record")390 3776 y(ncpdq)f(-O)i(-a)f(time,record)
-d(out.nc)j(out.nc)f(#)h(Switch)f("record")g(and)h("time")390
-3885 y(ncwa)g(-O)g(-a)g(record)f(out.nc)g(out.nc)g(#)i(Remove)e
-(\(degenerate\))e("record")150 4045 y FD(The)33 b(\014rst)g(step)g
-(creates)i(a)f(degenerate)h(\(size)f(equals)g(one\))g(record)g
-(dimension)f(named)g(\(b)m(y)g(default\))150 4154 y Fy(record)p
-FD(.)53 b(The)35 b(second)g(step)g(sw)m(aps)g(the)g(ordering)g(of)g
-(the)g(dimensions)f(named)h Fy(time)f FD(and)g Fy(record)p
-FD(.)150 4264 y(Since)g Fy(time)f FD(no)m(w)h(o)s(ccupies)g(the)h(p)s
-(osition)f(of)g(the)g(\014rst)f(\(least)j(rapidly)e(v)-5
-b(arying\))34 b(dimension,)h(it)f(b)s(e-)150 4374 y(comes)26
-b(the)f(record)g(dimension.)39 b(The)25 b(dimension)f(named)h
-Fy(record)e FD(is)j(no)f(longer)h(a)f(record)g(dimension.)150
-4483 y(The)k(third)f(step)h(a)m(v)m(erages)j(o)m(v)m(er)e(this)g
-(degenerate)g Fy(record)e FD(dimension.)39 b(Av)m(eraging)31
-b(o)m(v)m(er)g(a)e(degener-)150 4593 y(ate)23 b(dimension)f(do)s(es)g
-(not)g(alter)h(the)g(data.)39 b(The)21 b(ordering)h(of)h(other)f
-(dimensions)f(in)h(the)h(\014le)f(\()p Fy(lat)p FD(,)i
-Fy(lon)p FD(,)150 4702 y(etc.\))49 b(is)33 b(immaterial)h(to)g(this)f
-(pro)s(cedure.)46 b(See)33 b(Section)h(4.5)g([ncecat)g(netCDF)g(Ensem)m
-(ble)e(Concate-)150 4812 y(nator],)h(page)f(130)h(and)f(Section)g(4.7)h
-([nc)m(ks)f(netCDF)h(Kitc)m(hen)f(Sink],)g(page)g(135)h(for)f(other)g
-(metho)s(ds)150 4922 y(of)f(c)m(hanging)g(v)-5 b(ariable)31
-b(dimensionalit)m(y)-8 b(,)32 b(including)e(the)h(record)f(dimension.)p
-eop end
-%%Page: 149 151
-TeXDict begin 149 150 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(149)150
-299 y FB(4.9)68 b Fe(ncra)43 b FB(netCDF)i(Record)g(Av)l(erager)150
-458 y FD(SYNT)-8 b(AX)390 643 y Fy(ncra)47 b([-3])f([-4])h([-6])g([-A])
-f([-C])h([-c])390 753 y([--cnk_dmn)e(nm,sz])h([--cnk_map)f(map])i
-([--cnk_plc)e(plc])h([--cnk_scl)f(sz])390 862 y([-D)i
-Fq(dbg)11 b Fy(])46 b([-d)h Fq(dim)p Fy(,[)p Fq(min)11
-b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42
-b([-F])k([-h])h([-L)g Fq(dfl_lvl)11 b Fy(])45 b([-l)i
-Fq(path)11 b Fy(])390 972 y([-n)47 b Fq(loop)11 b Fy(])46
-b([-O])g([-o)h Fq(output-file)11 b Fy(])44 b([-p)j Fq(path)11
-b Fy(])46 b([-R])h([-r])390 1081 y([-t)g Fq(thr_nbr)11
-b Fy(])45 b([-v)i Fq(var)11 b Fy([,...)m(]])47 b([-X)g(...])g([-x])g
-([-y)f Fq(op_typ)11 b Fy(])390 1191 y([)p Fq(input-files)g
-Fy(])44 b([)p Fq(output-file)11 b Fy(])150 1376 y FD(DESCRIPTION)275
-1561 y Fy(ncra)38 b FD(a)m(v)m(erages)43 b(record)d(v)-5
-b(ariables)40 b(across)h(an)f(arbitrary)g(n)m(um)m(b)s(er)e(of)j
-Fz(input-\014les)p FD(.)69 b(The)39 b(record)150 1670
-y(dimension)23 b(is,)j(b)m(y)e(default,)i(retained)e(as)g(a)h
-(degenerate)g(\(size)31 b(1\))25 b(dimension)f(in)f(the)h(output)g(v)-5
-b(ariables.)150 1780 y(See)27 b(Section)g(2.6)h([Av)m(eraging)h(vs.)39
-b(Concatenating],)30 b(page)d(15,)i(for)d(a)h(description)g(of)g(the)f
-(distinctions)150 1889 y(b)s(et)m(w)m(een)34 b(the)f(v)-5
-b(arious)34 b(a)m(v)m(eragers)h(and)e(concatenators.)51
-b(As)34 b(a)f(m)m(ulti-\014le)i(op)s(erator,)f Fy(ncra)e
-FD(will)i(read)150 1999 y(the)i(list)h(of)f Fz(input-\014les)j
-FD(from)c Fy(stdin)g FD(if)h(they)g(are)g(not)g(sp)s(eci\014ed)g(as)g
-(p)s(ositional)h(argumen)m(ts)f(on)g(the)150 2108 y(command)30
-b(line)h(\(see)g(Section)g(2.7)h([Large)f(Num)m(b)s(ers)e(of)i(Files],)
-h(page)f(16\).)275 2293 y(Input)c(\014les)h(ma)m(y)h(v)-5
-b(ary)29 b(in)f(size,)i(but)e(eac)m(h)i(m)m(ust)e(ha)m(v)m(e)i(a)f
-(record)f(dimension.)40 b(The)28 b(record)g(co)s(ordi-)150
-2403 y(nate,)d(if)e(an)m(y)-8 b(,)26 b(should)c(b)s(e)g(monotonic)i
-(\(or)g(else)g(non-fatal)g(w)m(arnings)e(ma)m(y)i(b)s(e)e(generated\).)
-40 b(Hyp)s(erslabs)150 2512 y(of)27 b(the)h(record)f(dimension)g(whic)m
-(h)g(include)g(more)g(than)g(one)h(\014le)f(w)m(ork)h(correctly)-8
-b(.)41 b Fy(ncra)26 b FD(supp)s(orts)g(the)150 2622 y
-Fz(stride)42 b FD(argumen)m(t)36 b(to)i(the)e(`)p Fy(-d)p
-FD(')h(h)m(yp)s(erslab)e(option)i(\(see)h(Section)f(3.14)h([Hyp)s
-(erslabs],)g(page)f(39\))h(for)150 2732 y(the)31 b(record)f(dimension)g
-(only)-8 b(,)31 b Fz(stride)k FD(is)c(not)f(supp)s(orted)f(for)h
-(non-record)g(dimensions.)275 2916 y Fy(ncra)i FD(w)m(eigh)m(ts)j(eac)m
-(h)f(record)f(\(e.g.,)k(time)d(slice\))h(in)e(the)g Fz(input-\014les)k
-FD(equally)-8 b(.)51 b Fy(ncra)32 b FD(do)s(es)h(not)h(at-)150
-3026 y(tempt)40 b(to)g(see)h(if,)h(sa)m(y)-8 b(,)44 b(the)39
-b Fy(time)g FD(co)s(ordinate)i(is)e(irregularly)h(spaced)g(and)f(th)m
-(us)h(w)m(ould)f(require)h(a)150 3136 y(w)m(eigh)m(ted)30
-b(a)m(v)m(erage)h(in)d(order)g(to)h(b)s(e)e(a)i(true)f(time)h(a)m(v)m
-(erage.)43 b Fy(ncra)27 b Fr(always)33 b(aver)-5 b(ages)36
-b FD(co)s(ordinate)29 b(v)-5 b(ari-)150 3245 y(ables)24
-b(regardless)g(of)g(the)g(arithmetic)h(op)s(eration)f(t)m(yp)s(e)g(p)s
-(erformed)e(on)i(the)g(non-co)s(ordinate)g(v)-5 b(ariables.)150
-3355 y(\(see)31 b(Section)h(3.25)f([Op)s(eration)g(T)m(yp)s(es],)f
-(page)h(56\).)150 3539 y(EXAMPLES)275 3724 y(Av)m(erage)41
-b(\014les)f(`)p Fy(85.nc)p FD(',)h(`)p Fy(86.nc)p FD(',)46
-b(.)23 b(.)f(.)42 b(`)p Fy(89.nc)p FD(')c(along)j(the)f(record)f
-(dimension,)j(and)d(store)h(the)150 3834 y(results)30
-b(in)g(`)p Fy(8589.nc)p FD(':)390 4019 y Fy(ncra)47 b(85.nc)f(86.nc)g
-(87.nc)h(88.nc)f(89.nc)g(8589.nc)390 4128 y(ncra)h(8[56789].nc)d
-(8589.nc)390 4238 y(ncra)j(-n)g(5,2,1)f(85.nc)h(8589.nc)275
-4423 y FD(These)25 b(three)h(metho)s(ds)f(pro)s(duce)g(iden)m(tical)j
-(answ)m(ers.)39 b(See)26 b(Section)g(3.5)h([Sp)s(ecifying)f(Input)e
-(Files],)150 4532 y(page)31 b(26,)h(for)e(an)g(explanation)h(of)g(the)g
-(distinctions)f(b)s(et)m(w)m(een)h(these)g(metho)s(ds.)275
-4717 y(Assume)f(the)i(\014les)f(`)p Fy(85.nc)p FD(',)g(`)p
-Fy(86.nc)p FD(',)37 b(.)22 b(.)g(.)42 b(`)p Fy(89.nc)p
-FD(')30 b(eac)m(h)j(con)m(tain)f(a)g(record)f(co)s(ordinate)i
-Fz(time)k FD(of)150 4826 y(length)28 b(12)g(de\014ned)f(suc)m(h)g(that)
-h(the)g(third)e(record)i(in)f(`)p Fy(86.nc)p FD(')f(con)m(tains)j(data)
-f(from)f(Marc)m(h)i(1986,)h(etc.)150 4936 y FC(NCO)d
-FD(kno)m(ws)g(ho)m(w)h(to)g(h)m(yp)s(erslab)e(the)i(record)f(dimension)
-g(across)h(\014les.)40 b(Th)m(us,)27 b(to)h(a)m(v)m(erage)i(data)e
-(from)150 5046 y(Decem)m(b)s(er,)j(1985)i(through)c(F)-8
-b(ebruary)g(,)31 b(1986:)390 5230 y Fy(ncra)47 b(-d)g(time,11,13)e
-(85.nc)h(86.nc)h(87.nc)f(8512_8602.nc)390 5340 y(ncra)h(-F)g(-d)g
-(time,12,14)e(85.nc)h(86.nc)h(87.nc)f(8512_8602.nc)p
-eop end
-%%Page: 150 152
-TeXDict begin 150 151 bop 150 -116 a FD(150)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(The)g(\014le)h(`)p
-Fy(87.nc)p FD(')f(is)h(sup)s(er\015uous,)d(but)i(do)s(es)h(not)g(cause)
-g(an)g(error.)41 b(The)30 b(`)p Fy(-F)p FD(')h(turns)f(on)g(the)h(F)-8
-b(ortran)150 408 y(\(1-based\))24 b(indexing)f(con)m(v)m(en)m(tion.)41
-b(The)22 b(follo)m(wing)j(uses)d(the)i Fz(stride)k FD(option)23
-b(to)h(a)m(v)m(erage)i(all)e(the)f(Marc)m(h)150 518 y(temp)s(erature)30
-b(data)h(from)f(m)m(ultiple)h(input)f(\014les)g(in)m(to)h(a)g(single)g
-(output)f(\014le)390 677 y Fy(ncra)47 b(-F)g(-d)g(time,3,,12)e(-v)i
-(temperature)e(85.nc)h(86.nc)h(87.nc)f(858687_03.nc)275
-837 y FD(See)30 b(Section)h(3.15)h([Stride],)f(page)g(40,)h(for)e(a)g
-(description)h(of)f(the)h Fz(stride)k FD(argumen)m(t.)275
-996 y(Assume)25 b(the)g Fz(time)32 b FD(co)s(ordinate)26
-b(is)g(incremen)m(tally)h(n)m(um)m(b)s(ered)d(suc)m(h)h(that)i(Jan)m
-(uary)-8 b(,)27 b(1985)g(=)e(1)h(and)150 1106 y(Decem)m(b)s(er,)39
-b(1989)27 b(=)e(60)q(.)58 b(Assuming)36 b(`)p Fy(??)p
-FD(')g(only)h(expands)e(to)i(the)g(\014v)m(e)f(desired)g(\014les,)i
-(the)e(follo)m(wing)150 1215 y(a)m(v)m(erages)d(June,)d(1985{June,)i
-(1989:)390 1375 y Fy(ncra)47 b(-d)g(time,6.,54.)e(??.nc)h(8506_8906.nc)
-p eop end
-%%Page: 151 153
-TeXDict begin 151 152 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(151)150
-299 y FB(4.10)68 b Fe(ncrcat)42 b FB(netCDF)j(Record)g(Concatenator)150
-458 y FD(SYNT)-8 b(AX)390 623 y Fy(ncrcat)46 b([-3])h([-4])f([-6])h
-([-A])g([-C])f([-c])390 733 y([--cnk_dmn)f(nm,sz])h([--cnk_map)f(map])i
-([--cnk_plc)e(plc])h([--cnk_scl)f(sz])390 842 y([-D)i
-Fq(dbg)11 b Fy(])46 b([-d)h Fq(dim)p Fy(,[)p Fq(min)11
-b Fy(][,[)p Fq(max)g Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42
-b([-F])k([-h])h([-L)g Fq(dfl_lvl)11 b Fy(])45 b([-l)i
-Fq(path)11 b Fy(])390 952 y([-n)47 b Fq(loop)11 b Fy(])46
-b([-O])g([-o)h Fq(output-file)11 b Fy(])44 b([-p)j Fq(path)11
-b Fy(])46 b([-R])h([-r])390 1061 y([-t)g Fq(thr_nbr)11
-b Fy(])45 b([-v)i Fq(var)11 b Fy([,...)m(]])47 b([-X)g(...])g([-x])390
-1171 y([)p Fq(input-files)11 b Fy(])44 b([)p Fq(output-file)11
-b Fy(])150 1336 y FD(DESCRIPTION)275 1501 y Fy(ncrcat)39
-b FD(concatenates)44 b(record)e(v)-5 b(ariables)42 b(across)g(an)g
-(arbitrary)f(n)m(um)m(b)s(er)f(of)i Fz(input-\014les)p
-FD(.)73 b(The)150 1610 y(\014nal)30 b(record)h(dimension)g(is)f(b)m(y)h
-(default)g(the)g(sum)f(of)h(the)g(lengths)g(of)g(the)g(record)g
-(dimensions)f(in)h(the)150 1720 y(input)37 b(\014les.)65
-b(See)38 b(Section)h(2.6)h([Av)m(eraging)g(vs.)64 b(Concatenating],)42
-b(page)d(15,)j(for)c(a)g(description)h(of)150 1830 y(the)30
-b(distinctions)g(b)s(et)m(w)m(een)h(the)f(v)-5 b(arious)30
-b(a)m(v)m(eragers)i(and)d(concatenators.)43 b(As)29 b(a)i(m)m
-(ulti-\014le)f(op)s(erator,)150 1939 y Fy(ncrcat)37 b
-FD(will)h(read)g(the)h(list)g(of)f Fz(input-\014les)k
-FD(from)37 b Fy(stdin)g FD(if)h(they)h(are)g(not)f(sp)s(eci\014ed)g(as)
-g(p)s(ositional)150 2049 y(argumen)m(ts)31 b(on)f(the)h(command)f(line)
-g(\(see)i(Section)f(2.7)g([Large)h(Num)m(b)s(ers)d(of)h(Files],)i(page)
-f(16\).)275 2214 y(Input)c(\014les)h(ma)m(y)h(v)-5 b(ary)29
-b(in)f(size,)i(but)e(eac)m(h)i(m)m(ust)e(ha)m(v)m(e)i(a)f(record)f
-(dimension.)40 b(The)28 b(record)g(co)s(ordi-)150 2323
-y(nate,)d(if)e(an)m(y)-8 b(,)26 b(should)c(b)s(e)g(monotonic)i(\(or)g
-(else)g(non-fatal)g(w)m(arnings)e(ma)m(y)i(b)s(e)e(generated\).)40
-b(Hyp)s(erslabs)150 2433 y(along)34 b(the)f(record)g(dimension)g(that)g
-(span)g(more)g(than)g(one)g(\014le)g(are)g(handled)f(correctly)-8
-b(.)51 b Fy(ncra)32 b FD(sup-)150 2542 y(p)s(orts)27
-b(the)g Fz(stride)33 b FD(argumen)m(t)28 b(to)g(the)f(`)p
-Fy(-d)p FD(')h(h)m(yp)s(erslab)e(option)i(for)f(the)h(record)f
-(dimension)g(only)-8 b(,)29 b Fz(stride)150 2652 y FD(is)h(not)h(supp)s
-(orted)e(for)h(non-record)g(dimensions.)275 2817 y(Concatenating)40
-b(a)e(v)-5 b(ariable)40 b(pac)m(k)m(ed)f(with)f(di\013eren)m(t)h
-(scales)h(m)m(ultiple)f(datasets)h(is)e(b)s(ey)m(ond)g(the)150
-2926 y(capabilities)32 b(of)d Fy(ncrcat)f FD(\(and)i
-Fy(ncecat)p FD(,)e(the)i(other)g(concatenator)i(\(Section)f(2.6.1)g
-([Concatenation],)150 3036 y(page)f(15\).)41 b Fy(ncrcat)27
-b FD(do)s(es)i(not)g(unpac)m(k)f(data,)j(it)e(simply)f
-Fr(c)-5 b(opies)38 b FD(the)29 b(data)g(from)g(the)g
-Fz(input-\014les)p FD(,)g(and)150 3145 y(the)f(metadata)i(from)d(the)h
-Fr(\014rst)37 b Fz(input-\014le)p FD(,)29 b(to)f(the)g
-Fz(output-\014le)p FD(.)40 b(This)27 b(means)h(that)h(data)f
-(compressed)150 3255 y(with)k(a)g(pac)m(king)i(con)m(v)m(en)m(tion)g(m)
-m(ust)e(use)g(the)g(iden)m(tical)i(pac)m(king)f(parameters)g(\(e.g.,)h
-Fy(scale_factor)150 3365 y FD(and)k Fy(add_offset)p FD(\))e(for)i(a)h
-(giv)m(en)h(v)-5 b(ariable)39 b(across)g Fr(al)5 b(l)48
-b FD(input)38 b(\014les.)65 b(Otherwise)38 b(the)h(concatenated)150
-3474 y(dataset)31 b(will)e(not)h(unpac)m(k)f(correctly)-8
-b(.)42 b(The)29 b(w)m(ork)-5 b(around)28 b(for)h(cases)h(where)f(the)g
-(pac)m(king)i(parameters)150 3584 y(di\013er)j(across)h
-Fz(input-\014les)i FD(requires)d(three)h(steps:)48 b(First,)36
-b(unpac)m(k)e(the)h(data)g(using)f Fy(ncpdq)p FD(.)51
-b(Second,)150 3693 y(concatenate)33 b(the)e(unpac)m(k)m(ed)f(data)h
-(using)f Fy(ncrcat)p FD(,)f(Third,)g(re-pac)m(k)i(the)g(result)f(with)g
-Fy(ncpdq)p FD(.)275 3858 y Fy(ncrcat)37 b FD(applies)j(sp)s(ecial)g
-(rules)f(to)i FC(ARM)f FD(con)m(v)m(en)m(tion)h(time)f(\014elds)f
-(\(e.g.,)44 b Fy(time_offset)p FD(\).)66 b(See)150 3968
-y(Section)31 b(3.31)h([ARM)f(Con)m(v)m(en)m(tions],)h(page)f(65)h(for)e
-(a)g(complete)i(description.)150 4133 y(EXAMPLES)275
-4298 y(Concatenate)40 b(\014les)f(`)p Fy(85.nc)p FD(',)h(`)p
-Fy(86.nc)p FD(',)46 b(.)22 b(.)h(.)41 b(`)p Fy(89.nc)p
-FD(')d(along)i(the)f(record)g(dimension,)h(and)e(store)150
-4407 y(the)31 b(results)f(in)g(`)p Fy(8589.nc)p FD(':)390
-4572 y Fy(ncrcat)46 b(85.nc)g(86.nc)h(87.nc)f(88.nc)h(89.nc)f(8589.nc)
-390 4682 y(ncrcat)g(8[56789].nc)f(8589.nc)390 4791 y(ncrcat)h(-n)h
-(5,2,1)g(85.nc)f(8589.nc)150 4956 y FD(These)36 b(three)h(metho)s(ds)e
-(pro)s(duce)h(iden)m(tical)i(answ)m(ers.)58 b(See)37
-b(Section)g(3.5)g([Sp)s(ecifying)f(Input)f(Files],)150
-5066 y(page)c(26,)h(for)e(an)g(explanation)h(of)g(the)g(distinctions)f
-(b)s(et)m(w)m(een)h(these)g(metho)s(ds.)275 5230 y(Assume)f(the)i
-(\014les)f(`)p Fy(85.nc)p FD(',)g(`)p Fy(86.nc)p FD(',)37
-b(.)22 b(.)g(.)42 b(`)p Fy(89.nc)p FD(')30 b(eac)m(h)j(con)m(tain)f(a)g
-(record)f(co)s(ordinate)i Fz(time)k FD(of)150 5340 y(length)31
-b(12)d(de\014ned)e(suc)m(h)h(that)h(the)f(third)g(record)g(in)g(`)p
-Fy(86.nc)p FD(')f(con)m(tains)j(data)f(from)f(Marc)m(h)h(1986,)i(etc.)p
-eop end
-%%Page: 152 154
-TeXDict begin 152 153 bop 150 -116 a FD(152)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y FC(NCO)g FD(kno)m(ws)h(ho)m(w)f
-(to)h(h)m(yp)s(erslab)f(the)h(record)f(dimension)g(across)h(\014les.)41
-b(Th)m(us,)30 b(to)h(concatenate)i(data)150 408 y(from)d(Decem)m(b)s
-(er,)h(1985{F)-8 b(ebruary)g(,)33 b(1986:)390 568 y Fy(ncrcat)46
-b(-d)h(time,11,13)e(85.nc)i(86.nc)f(87.nc)g(8512_8602.nc)390
-677 y(ncrcat)g(-F)h(-d)g(time,12,14)e(85.nc)i(86.nc)f(87.nc)h
-(8512_8602.nc)150 837 y FD(The)e(\014le)g(`)p Fy(87.nc)p
-FD(')f(is)i(sup)s(er\015uous,)g(but)f(do)s(es)g(not)g(cause)h(an)f
-(error.)85 b(When)45 b Fy(ncra)f FD(and)h Fy(ncrcat)150
-946 y FD(encoun)m(ter)33 b(a)g(\014le)f(whic)m(h)g(do)s(es)g(con)m
-(tain)i(an)m(y)f(records)f(that)h(meet)g(the)f(sp)s(eci\014ed)g(h)m(yp)
-s(erslab)f(criteria,)150 1056 y(they)j(disregard)g(the)g(\014le)g(and)f
-(pro)s(ceed)g(to)i(the)f(next)g(\014le)g(without)g(failing.)52
-b(The)34 b(`)p Fy(-F)p FD(')f(turns)g(on)h(the)150 1166
-y(F)-8 b(ortran)31 b(\(1-based\))h(indexing)e(con)m(v)m(en)m(tion.)275
-1325 y(The)24 b(follo)m(wing)i(uses)e(the)h Fz(stride)30
-b FD(option)25 b(to)h(concatenate)h(all)f(the)f(Marc)m(h)g(temp)s
-(erature)g(data)g(from)150 1435 y(m)m(ultiple)31 b(input)e(\014les)i
-(in)m(to)g(a)g(single)g(output)f(\014le)390 1594 y Fy(ncrcat)46
-b(-F)h(-d)g(time,3,,12)e(-v)j(temperature)c(85.nc)j(86.nc)f(87.nc)g
-(858687_03.nc)275 1753 y FD(See)30 b(Section)h(3.15)h([Stride],)f(page)
-g(40,)h(for)e(a)g(description)h(of)f(the)h Fz(stride)k
-FD(argumen)m(t.)275 1913 y(Assume)41 b(the)g Fz(time)48
-b FD(co)s(ordinate)42 b(is)g(incremen)m(tally)h(n)m(um)m(b)s(ered)d
-(suc)m(h)i(that)g(Jan)m(uary)-8 b(,)44 b(1985)33 b(=)d(1)150
-2022 y(and)d(Decem)m(b)s(er,)i(1989)j(=)e(60.)e(Assuming)e
-Fy(??)h FD(only)g(expands)g(to)h(the)f(\014v)m(e)g(desired)g(\014les,)h
-(the)f(follo)m(wing)150 2132 y(concatenates)33 b(June,)d(1985{June,)i
-(1989:)390 2291 y Fy(ncrcat)46 b(-d)h(time,6.,54.)e(??.nc)h
-(8506_8906.nc)p eop end
-%%Page: 153 155
-TeXDict begin 153 154 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(153)150
-299 y FB(4.11)68 b Fe(ncrename)41 b FB(netCDF)k(Renamer)150
-458 y FD(SYNT)-8 b(AX)390 638 y Fy(ncrename)46 b([-a)g
-Fq(old_name)p Fy(,)p Fq(new_name)11 b Fy(])43 b([-a)k(...)o(])g([-D)g
-Fq(dbg)11 b Fy(])390 748 y([-d)47 b Fq(old_name)p Fy(,)p
-Fq(new_name)11 b Fy(])42 b([-d)47 b(...)o(])h([-h])e([--hdr_pad)f
-Fq(nbr)11 b Fy(])47 b([-l)f Fq(path)11 b Fy(])390 857
-y([-O])47 b([-o)g Fq(output-file)11 b Fy(])44 b([-p)i
-Fq(path)11 b Fy(])46 b([-R])h([-r])390 967 y([-v)g Fq(old_name)p
-Fy(,)p Fq(new_name)11 b Fy(])42 b([-v)47 b(...)o(])390
-1077 y Fq(input-file)56 b Fy([[)p Fq(output-file)11 b
-Fy(]])150 1256 y FD(DESCRIPTION)275 1436 y Fy(ncrename)30
-b FD(renames)j(dimensions,)g(v)-5 b(ariables,)34 b(and)f(attributes)g
-(in)g(a)g(netCDF)g(\014le.)49 b(Eac)m(h)33 b(ob)5 b(ject)150
-1546 y(that)26 b(has)f(a)h(name)f(in)g(the)h(list)f(of)h(old)f(names)h
-(is)f(renamed)g(using)g(the)g(corresp)s(onding)f(name)i(in)f(the)g
-(list)150 1655 y(of)k(new)f(names.)40 b(All)30 b(the)f(new)f(names)h(m)
-m(ust)f(b)s(e)g(unique.)40 b(Ev)m(ery)29 b(old)f(name)h(m)m(ust)g
-(exist)g(in)g(the)g(input)150 1765 y(\014le,)h(unless)f(the)h(old)g
-(name)g(is)g(preceded)g(b)m(y)f(the)h(p)s(erio)s(d)f(\(or)h(\\dot"\))h
-(c)m(haracter)h(`)p Fy(.)p FD('.)40 b(The)30 b(v)-5 b(alidit)m(y)31
-b(of)150 1875 y Fz(old)p 277 1875 28 4 v 40 w(name)36
-b FD(is)31 b(not)h(c)m(hec)m(k)m(ed)g(prior)f(to)g(the)h(renaming.)42
-b(Th)m(us,)30 b(if)h Fz(old)p 2543 1875 V 40 w(name)37
-b FD(is)31 b(sp)s(eci\014ed)f(without)h(the)150 1984
-y(the)i(`)p Fy(.)p FD(')g(pre\014x)f(and)g(is)h(not)g(presen)m(t)g(in)f
-Fz(input-\014le)p FD(,)h Fy(ncrename)e FD(will)i(ab)s(ort.)48
-b(The)32 b Fz(new)p 3208 1984 V 40 w(name)38 b FD(should)150
-2094 y(nev)m(er)f(b)s(e)f(pre\014xed)f(b)m(y)h(a)h(`)p
-Fy(.)p FD(')g(\(or)g(else)g(the)g(p)s(erio)s(d)e(will)i(b)s(e)f
-(included)g(as)h(part)f(of)h(the)f(new)g(name\).)150
-2203 y(The)27 b(OPTIONS)f(and)h(EXAMPLES)g(sho)m(w)g(ho)m(w)h(to)g
-(select)h(sp)s(eci\014c)f(v)-5 b(ariables)28 b(whose)f(attributes)i
-(are)150 2313 y(to)i(b)s(e)f(renamed.)275 2493 y Fy(ncrename)18
-b FD(is)j(the)g(exception)i(to)e(the)h(normal)f(rules)f(that)i(the)f
-(user)f(will)h(b)s(e)g(in)m(teractiv)m(ely)j(prompted)150
-2602 y(b)s(efore)h(an)g(existing)h(\014le)f(is)g(c)m(hanged,)j(and)c
-(that)i(a)f(temp)s(orary)g(cop)m(y)h(of)f(an)g(output)g(\014le)g(is)h
-(constructed)150 2712 y(during)f(the)h(op)s(eration.)40
-b(If)26 b(only)g Fz(input-\014le)31 b FD(is)c(sp)s(eci\014ed,)f(then)g
-Fy(ncrename)e FD(will)j(c)m(hange)g(the)g(names)f(of)150
-2822 y(the)g Fz(input-\014le)31 b FD(in)25 b(place)i(without)f
-(prompting)f(and)g(without)h(creating)h(a)g(temp)s(orary)e(cop)m(y)i
-(of)f Fy(input-)150 2931 y(file)p FD(.)49 b(This)33 b(is)h(b)s(ecause)g
-(the)f(renaming)h(op)s(eration)g(is)g(considered)f(rev)m(ersible)i(if)e
-(the)h(user)f(mak)m(es)i(a)150 3041 y(mistak)m(e.)55
-b(The)34 b Fz(new)p 886 3041 V 40 w(name)39 b FD(can)c(easily)h(b)s(e)e
-(c)m(hanged)h(bac)m(k)g(to)h Fz(old)p 2539 3041 V 40
-w(name)k FD(b)m(y)34 b(using)g Fy(ncrename)f FD(one)150
-3150 y(more)e(time.)275 3330 y(Note)22 b(that)f(renaming)f(a)h
-(dimension)g(to)g(the)g(name)g(of)f(a)h(dep)s(enden)m(t)f(v)-5
-b(ariable)22 b(can)f(b)s(e)f(used)g(to)h(in)m(v)m(ert)150
-3440 y(the)44 b(relationship)h(b)s(et)m(w)m(een)g(an)f(indep)s(enden)m
-(t)f(co)s(ordinate)i(v)-5 b(ariable)45 b(and)f(a)h(dep)s(enden)m(t)e(v)
--5 b(ariable.)150 3549 y(In)35 b(this)h(case,)j(the)d(named)g(dep)s
-(enden)m(t)f(v)-5 b(ariable)36 b(m)m(ust)g(b)s(e)g(one-dimensional)g
-(and)g(should)f(ha)m(v)m(e)i(no)150 3659 y(missing)30
-b(v)-5 b(alues.)41 b(Suc)m(h)30 b(a)h(v)-5 b(ariable)31
-b(will)g(b)s(ecome)f(a)h(co)s(ordinate)g(v)-5 b(ariable.)275
-3839 y(According)24 b(to)h(the)g Fz(netCDF)f(User's)h(Guide)p
-FD(,)g(renaming)f(prop)s(erties)g(in)g(netCDF)h(\014les)f(do)s(es)g
-(not)g(in-)150 3949 y(cur)e(the)h(p)s(enalt)m(y)g(of)g(recop)m(ying)g
-(the)g(en)m(tire)h(\014le)e(when)g(the)h Fz(new)p 2340
-3949 V 39 w(name)28 b FD(is)23 b(shorter)f(than)h(the)f
-Fz(old)p 3478 3949 V 41 w(name)p FD(.)150 4128 y(OPTIONS)150
-4354 y(`)p Fy(-a)30 b Fq(old_name)p Fy(,)p Fq(new_name)11
-b FD(')630 4463 y(A)m(ttribute)44 b(renaming.)80 b(The)43
-b(old)g(and)g(new)g(names)g(of)g(the)h(attribute)g(are)g(sp)s
-(eci\014ed)630 4573 y(with)24 b(`)p Fy(-a)p FD(')g(\(or)g(`)p
-Fy(--attribute)p FD('\))e(b)m(y)i(the)h(asso)s(ciated)g
-Fz(old)p 2600 4573 V 41 w(name)k FD(and)23 b Fz(new)p
-3209 4573 V 40 w(name)29 b FD(v)-5 b(alues.)630 4682
-y(Global)22 b(attributes)g(are)g(treated)g(no)f(di\013eren)m(tly)h
-(than)f(v)-5 b(ariable)22 b(attributes.)38 b(This)20
-b(option)630 4792 y(ma)m(y)34 b(b)s(e)f(sp)s(eci\014ed)g(more)h(than)g
-(once.)51 b(As)33 b(men)m(tioned)i(ab)s(o)m(v)m(e,)h(all)e(o)s
-(ccurrences)g(of)g(the)630 4902 y(attribute)29 b(of)g(a)h(giv)m(en)f
-(name)g(will)g(b)s(e)f(renamed)h(unless)f(the)h(`)p Fy(.)p
-FD(')g(form)f(is)h(used,)f(with)h(one)630 5011 y(exception.)49
-b(T)-8 b(o)34 b(c)m(hange)f(the)g(attribute)h(name)f(for)f(a)i
-(particular)f(v)-5 b(ariable,)34 b(sp)s(ecify)f(the)630
-5121 y Fz(old)p 757 5121 V 40 w(name)39 b FD(in)33 b(the)h(format)g
-Fz(old)p 1737 5121 V 40 w(v)-5 b(ar)p 1901 5121 V 40
-w(name)p Fy(@)p Fz(old)p 2322 5121 V 40 w(att)p 2477
-5121 V 42 w(name)p FD(.)50 b(The)33 b(`)p Fy(@)p FD(')h(sym)m(b)s(ol)f
-(delimits)630 5230 y(the)d(v)-5 b(ariable)31 b(and)e(attribute)i
-(names.)40 b(If)29 b(the)h(attribute)h(is)f(uniquely)f(named)h(\(no)g
-(other)630 5340 y(v)-5 b(ariables)29 b(con)m(tain)g(the)f(attribute\))h
-(then)f(the)g Fz(old)p 2380 5340 V 40 w(v)-5 b(ar)p 2544
-5340 V 40 w(name)p Fy(@)p Fz(old)p 2965 5340 V 40 w(att)p
-3120 5340 V 41 w(name)33 b FD(syn)m(tax)c(is)p eop end
-%%Page: 154 156
-TeXDict begin 154 155 bop 150 -116 a FD(154)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)630 299 y(redundan)m(t.)48
-b(The)33 b Fz(v)-5 b(ar)p 1431 299 28 4 v 40 w(name)p
-Fy(@)p Fz(att)p 1846 299 V 41 w(name)38 b FD(syn)m(tax)c(is)f
-(accepted,)j(but)c(not)i(required,)f(for)630 408 y(the)e
-Fz(new)p 950 408 V 39 w(name)p FD(.)150 568 y(`)p Fy(-d)f
-Fq(old_name)p Fy(,)p Fq(new_name)11 b FD(')630 677 y(Dimension)45
-b(renaming.)85 b(The)44 b(old)h(and)f(new)h(names)g(of)g(the)g
-(dimension)f(are)i(sp)s(eci-)630 787 y(\014ed)f(with)h(`)p
-Fy(-d)p FD(')g(\(or)h(`)p Fy(--dmn)p FD(',)i(`)p Fy(--dimension)p
-FD('\))44 b(b)m(y)i(the)g(asso)s(ciated)i Fz(old)p 3306
-787 V 40 w(name)k FD(and)630 897 y Fz(new)p 793 897 V
-40 w(name)35 b FD(v)-5 b(alues.)41 b(This)30 b(option)h(ma)m(y)g(b)s(e)
-e(sp)s(eci\014ed)h(more)g(than)h(once.)150 1056 y(`)p
-Fy(-v)f Fq(old_name)p Fy(,)p Fq(new_name)11 b FD(')630
-1166 y(V)-8 b(ariable)35 b(renaming.)52 b(The)33 b(old)h(and)f(new)h
-(names)g(of)g(the)g(v)-5 b(ariable)35 b(are)f(sp)s(eci\014ed)f(with)630
-1275 y(`)p Fy(-v)p FD(')28 b(\(or)g(`)p Fy(--variable)p
-FD('\))d(b)m(y)j(the)g(asso)s(ciated)h Fz(old)p 2373
-1275 V 40 w(name)k FD(and)27 b Fz(new)p 2989 1275 V 40
-w(name)33 b FD(v)-5 b(alues.)40 b(This)630 1385 y(option)31
-b(ma)m(y)g(b)s(e)f(sp)s(eci\014ed)f(more)i(than)f(once.)150
-1569 y(EXAMPLES)275 1729 y(Rename)i(the)h(v)-5 b(ariable)33
-b Fy(p)f FD(to)h Fy(pressure)e FD(and)g Fy(t)i FD(to)g
-Fy(temperature)c FD(in)j(netCDF)h(`)p Fy(in.nc)p FD('.)46
-b(In)32 b(this)150 1838 y(case)25 b Fy(p)f FD(m)m(ust)h(exist)g(in)f
-(the)g(input)g(\014le)g(\(or)h Fy(ncrename)d FD(will)i(ab)s(ort\),)i
-(but)e(the)g(presence)h(of)f Fy(t)g FD(is)h(optional:)390
-1998 y Fy(ncrename)46 b(-v)h(p,pressure)e(-v)i(.t,temperature)d(in.nc)
-275 2157 y FD(Rename)29 b(the)g(attribute)h Fy(long_name)d
-FD(to)j Fy(largo_nombre)25 b FD(in)k(the)g(v)-5 b(ariable)30
-b Fy(u)p FD(,)g(and)e(no)h(other)g(v)-5 b(ari-)150 2267
-y(ables)31 b(in)f(netCDF)h(`)p Fy(in.nc)p FD('.)390 2426
-y Fy(ncrename)46 b(-a)h(u:long_name,largo_nombr)o(e)42
-b(in.nc)275 2585 y(ncrename)32 b FD(do)s(es)j(not)g(automatically)j
-(attac)m(h)e(dimensions)f(to)g(v)-5 b(ariables)36 b(of)f(the)g(same)g
-(name.)54 b(If)150 2695 y(y)m(ou)25 b(w)m(an)m(t)h(to)f(rename)g(a)g
-(co)s(ordinate)h(v)-5 b(ariable)26 b(so)f(that)g(it)g(remains)g(a)g(co)
-s(ordinate)h(v)-5 b(ariable,)27 b(y)m(ou)e(m)m(ust)150
-2804 y(separately)32 b(rename)e(b)s(oth)g(the)g(dimension)g(and)g(the)g
-(v)-5 b(ariable:)390 2964 y Fy(ncrename)46 b(-d)h(lon,longitude)d(-v)j
-(lon,longitude)d(in.nc)275 3123 y FD(Create)24 b(netCDF)f(`)p
-Fy(out.nc)p FD(')g(iden)m(tical)i(to)f(`)p Fy(in.nc)p
-FD(')e(except)i(the)g(attribute)g Fy(_FillValue)c FD(is)j(c)m(hanged)
-150 3233 y(to)g Fy(missing_value)p FD(,)e(the)h(attribute)h
-Fy(units)e FD(is)i(c)m(hanged)g(to)g Fy(CGS_units)d FD(\(but)i(only)g
-(in)g(those)h(v)-5 b(ariables)150 3342 y(whic)m(h)26
-b(p)s(ossess)g(it\),)i(the)e(attribute)h Fy(hieght)e
-FD(is)h(c)m(hanged)h(to)g Fy(height)e FD(in)h(the)g(v)-5
-b(ariable)28 b Fy(tpt)p FD(,)e(and)g(in)g(the)150 3452
-y(v)-5 b(ariable)31 b Fy(prs_sfc)p FD(,)e(if)h(it)h(exists.)390
-3611 y Fy(ncrename)46 b(-a)h(_FillValue,missing_valu)o(e)42
-b(-a)47 b(.units,CGS_units)c(\\)485 3721 y(-a)48 b(tpt at hieght,height)43
-b(-a)k(prs_sfc at .hieght,height)42 b(in.nc)k(out.nc)275
-3880 y FD(The)39 b(presence)h(and)g(absence)h(of)f(the)g(`)p
-Fy(.)p FD(')h(and)e(`)p Fy(@)p FD(')h(features)h(cause)g(this)f
-(command)g(to)h(execute)150 3990 y(successfully)30 b(only)h(if)f(a)h(n)
-m(um)m(b)s(er)d(of)j(conditions)g(are)f(met.)41 b(All)31
-b(v)-5 b(ariables)31 b Fr(must)40 b FD(ha)m(v)m(e)31
-b(a)g Fy(_FillValue)150 4100 y FD(attribute)38 b Fr(and)49
-b Fy(_FillValue)35 b FD(m)m(ust)i(also)i(b)s(e)e(a)h(global)h
-(attribute.)64 b(The)37 b Fy(units)f FD(attribute,)41
-b(on)d(the)150 4209 y(other)30 b(hand,)g(will)g(b)s(e)g(renamed)f(to)i
-Fy(CGS_units)d FD(wherev)m(er)i(it)h(is)f(found)f(but)g(need)h(not)h(b)
-s(e)e(presen)m(t)h(in)150 4319 y(the)e(\014le)f(at)i(all)f(\(either)h
-(as)f(a)f(global)i(or)f(a)g(v)-5 b(ariable)28 b(attribute\).)41
-b(The)27 b(v)-5 b(ariable)29 b Fy(tpt)d FD(m)m(ust)i(con)m(tain)h(the)
-150 4428 y Fy(hieght)i FD(attribute.)50 b(The)33 b(v)-5
-b(ariable)34 b Fy(prs_sfc)d FD(need)i(not)h(exist,)h(and)d(need)h(not)h
-(con)m(tain)g(the)g Fy(hieght)150 4538 y FD(attribute.)p
-eop end
-%%Page: 155 157
-TeXDict begin 155 156 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(155)150
-299 y FB(4.12)68 b Fe(ncwa)43 b FB(netCDF)i(W)-11 b(eigh)l(ted)46
-b(Av)l(erager)150 458 y FD(SYNT)-8 b(AX)390 623 y Fy(ncwa)47
-b([-3])f([-4])h([-6])g([-A])f([-a)h Fq(dim)11 b Fy([,...)m(]])48
-b([-B)e Fq(mask_cond)11 b Fy(])45 b([-b])i([-C])f([-c])390
-733 y([--cnk_dmn)f(nm,sz])h([--cnk_map)f(map])i([--cnk_plc)e(plc])h
-([--cnk_scl)f(sz])390 843 y([-D)i Fq(dbg)11 b Fy(])46
-b([-d)h Fq(dim)p Fy(,[)p Fq(min)11 b Fy(][,[)p Fq(max)g
-Fy(][,[)p Fq(st)o(rid)o(e)g Fy(])o(]])42 b([-F])k([-h])h([-I])g([-L)f
-Fq(dfl_lvl)11 b Fy(])45 b([-l)i Fq(path)11 b Fy(])390
-952 y([-M)47 b Fq(mask_val)11 b Fy(])45 b([-m)i Fq(mask_var)11
-b Fy(])44 b([-N])j([-O])390 1062 y([-o)g Fq(output-file)11
-b Fy(])44 b([-p)j Fq(path)11 b Fy(])46 b([-R])g([-r])h([-T)g
-Fq(mask_comp)11 b Fy(])390 1171 y([-t)47 b Fq(thr_nbr)11
-b Fy(])45 b([-v)i Fq(var)11 b Fy([,...)m(]])47 b([-w)g
-Fq(weight)11 b Fy(])46 b([-X)h(...])f([-x])h([-y)g Fq(op_typ)11
-b Fy(])390 1281 y Fq(input-file)56 b Fy([)p Fq(output-file)11
-b Fy(])150 1446 y FD(DESCRIPTION)275 1611 y Fy(ncwa)25
-b FD(a)m(v)m(erages)k(v)-5 b(ariables)28 b(in)e(a)h(single)h(\014le)f
-(o)m(v)m(er)h(arbitrary)e(dimensions,)h(with)g(options)g(to)g(sp)s
-(ecify)150 1721 y(w)m(eigh)m(ts,)g(masks,)f(and)e(normalization.)41
-b(See)25 b(Section)g(2.6)h([Av)m(eraging)h(vs.)38 b(Concatenating],)28
-b(page)e(15,)150 1830 y(for)31 b(a)h(description)f(of)g(the)h
-(distinctions)f(b)s(et)m(w)m(een)h(the)g(v)-5 b(arious)31
-b(a)m(v)m(eragers)i(and)e(concatenators.)45 b(The)150
-1940 y(default)35 b(b)s(eha)m(vior)g(of)h Fy(ncwa)d FD(is)j(to)f
-(arithmetically)j(a)m(v)m(erage)f(ev)m(ery)f(n)m(umerical)g(v)-5
-b(ariable)36 b(o)m(v)m(er)g(all)g(di-)150 2049 y(mensions)30
-b(and)g(to)h(pro)s(duce)e(a)i(scalar)g(result)f(for)h(eac)m(h.)275
-2215 y(Av)m(eraged)41 b(dimensions)f(are,)k(b)m(y)c(default,)j
-(eliminated)f(as)e(dimensions.)70 b(Their)40 b(corresp)s(onding)150
-2324 y(co)s(ordinates,)33 b(if)f(an)m(y)-8 b(,)34 b(are)e(output)g(as)g
-(scalars.)47 b(The)32 b(`)p Fy(-b)p FD(')g(switc)m(h)g(\(and)g(its)g
-(long)h(option)g(equiv)-5 b(alen)m(ts)150 2434 y(`)p
-Fy(--rdd)p FD(')34 b(and)f(`)p Fy(--retain-degenerate-dimensi)o(ons)o
-FD('\))c(causes)35 b Fy(ncwa)f FD(to)h(retain)g(a)m(v)m(eraged)h
-(dimen-)150 2543 y(sions)22 b(as)h(degenerate)h(\(size)32
-b(1\))23 b(dimensions.)38 b(This)22 b(main)m(tains)h(the)g(asso)s
-(ciation)h(b)s(et)m(w)m(een)f(a)h(dimension)150 2653
-y(\(or)f(co)s(ordinate\))h(and)e(v)-5 b(ariables)23 b(after)g(a)m(v)m
-(eraging)i(and)d(simpli\014es,)i(for)e(instance,)j(later)e
-(concatenation)150 2762 y(along)31 b(the)g(degenerate)h(dimension.)275
-2928 y(T)-8 b(o)39 b(a)m(v)m(erage)j(v)-5 b(ariables)40
-b(o)m(v)m(er)h(only)e(a)h(subset)e(of)i(their)f(dimensions,)i(sp)s
-(ecify)e(these)h(dimensions)150 3037 y(in)c(a)g(comma-separated)h(list)
-g(follo)m(wing)g(`)p Fy(-a)p FD(',)h(e.g.,)g(`)p Fy(-a)30
-b(time,lat,lon)p FD('.)54 b(As)36 b(with)g(all)h(arithmetic)150
-3147 y(op)s(erators,)44 b(the)c(op)s(eration)i(ma)m(y)f(b)s(e)f
-(restricted)h(to)h(an)e(arbitrary)h(h)m(ypserslab)f(b)m(y)g(emplo)m
-(ying)i(the)150 3256 y(`)p Fy(-d)p FD(')28 b(option)h(\(see)g(Section)g
-(3.14)h([Hyp)s(erslabs],)f(page)g(39\).)41 b Fy(ncwa)27
-b FD(also)i(handles)f(v)-5 b(alues)28 b(matc)m(hing)i(the)150
-3366 y(v)-5 b(ariable's)31 b Fy(_FillValue)d FD(attribute)j(correctly)
--8 b(.)42 b(Moreo)m(v)m(er,)33 b Fy(ncwa)c FD(understands)f(ho)m(w)j
-(to)g(manipulate)150 3476 y(user-sp)s(eci\014ed)39 b(w)m(eigh)m(ts,)k
-(masks,)g(and)c(normalization)i(options.)69 b(With)40
-b(these)g(options,)j Fy(ncwa)c FD(can)150 3585 y(compute)31
-b(sophisticated)g(a)m(v)m(erages)i(\(and)d(in)m(tegrals\))i(from)e(the)
-h(command)f(line.)275 3750 y Fz(mask)p 486 3750 28 4
-v 40 w(v)-5 b(ar)36 b FD(and)29 b Fz(w)m(eigh)m(t)p FD(,)i(if)f(sp)s
-(eci\014ed,)f(are)h(broadcast)h(to)f(conform)f(to)i(the)f(v)-5
-b(ariables)30 b(b)s(eing)f(a)m(v)m(er-)150 3860 y(aged.)39
-b(The)23 b(rank)g(of)g(v)-5 b(ariables)24 b(is)g(reduced)e(b)m(y)i(the)
-f(n)m(um)m(b)s(er)f(of)i(dimensions)e(whic)m(h)h(they)h(are)g(a)m(v)m
-(eraged)150 3969 y(o)m(v)m(er.)62 b(Th)m(us)36 b(arra)m(ys)i(whic)m(h)f
-(are)g(one)h(dimensional)f(in)g(the)g Fz(input-\014le)42
-b FD(and)36 b(are)i(a)m(v)m(eraged)h(b)m(y)e Fy(ncwa)150
-4079 y FD(app)s(ear)f(in)h(the)g Fz(output-\014le)42
-b FD(as)37 b(scalars.)62 b(This)36 b(allo)m(ws)i(the)f(user)f(to)i
-(infer)e(whic)m(h)h(dimensions)f(ma)m(y)150 4189 y(ha)m(v)m(e)j(b)s
-(een)e(a)m(v)m(eraged.)65 b(Note)39 b(that)f(that)g(it)h(is)e(imp)s
-(ossible)h(for)f Fy(ncwa)g FD(to)h(mak)m(e)h(mak)m(e)g(a)f
-Fz(w)m(eigh)m(t)j FD(or)150 4298 y Fz(mask)p 361 4298
-V 40 w(v)-5 b(ar)34 b FD(of)27 b(rank)g Fz(W)39 b FD(conform)28
-b(to)g(a)f Fz(v)-5 b(ar)34 b FD(of)27 b(rank)g Fz(V)39
-b FD(if)28 b Fz(W)f Fy(>)g Fz(V)p FD(.)h(This)e(situation)j(often)e
-(arises)h(when)150 4408 y(co)s(ordinate)g(v)-5 b(ariables)28
-b(\(whic)m(h,)g(b)m(y)f(de\014nition,)h(are)g(one)f(dimensional\))h
-(are)f(w)m(eigh)m(ted)i(and)e(a)m(v)m(eraged.)150 4517
-y Fy(ncwa)c FD(assumes)g(y)m(ou)h(kno)m(w)g(this)f(is)h(imp)s(ossible)f
-(and)g(so)h Fy(ncwa)f FD(do)s(es)g(not)h(attempt)h(to)f(broadcast)g
-Fz(w)m(eigh)m(t)150 4627 y FD(or)31 b Fz(mask)p 473 4627
-V 40 w(v)-5 b(ar)38 b FD(to)32 b(conform)f(to)h Fz(v)-5
-b(ar)38 b FD(in)31 b(this)g(case,)i(nor)e(do)s(es)g Fy(ncwa)f
-FD(prin)m(t)h(a)h(w)m(arning)f(message)i(telling)150
-4737 y(y)m(ou)c(this,)h(b)s(ecause)f(it)g(is)g(so)g(common.)41
-b(Sp)s(ecifying)28 b Fz(dbg)g Fy(>)h Fz(2)37 b FD(do)s(es)28
-b(cause)i Fy(ncwa)d FD(to)j(emit)g(w)m(arnings)e(in)150
-4846 y(these)j(situations,)g(ho)m(w)m(ev)m(er.)275 5011
-y(Non-co)s(ordinate)g(v)-5 b(ariables)31 b(are)f(alw)m(a)m(ys)i(mask)m
-(ed)e(and)g(w)m(eigh)m(ted)h(if)f(sp)s(eci\014ed.)40
-b(Co)s(ordinate)30 b(v)-5 b(ari-)150 5121 y(ables,)30
-b(ho)m(w)m(ev)m(er,)i(ma)m(y)e(b)s(e)e(treated)j(sp)s(ecially)-8
-b(.)42 b(By)29 b(default,)h(an)g(a)m(v)m(eraged)h(co)s(ordinate)g(v)-5
-b(ariable,)30 b(e.g.,)150 5230 y Fy(latitude)p FD(,)k(app)s(ears)f(in)i
-Fz(output-\014le)k FD(a)m(v)m(eraged)e(the)e(same)g(w)m(a)m(y)g(as)g
-(an)m(y)g(other)g(v)-5 b(ariable)35 b(con)m(taining)150
-5340 y(an)41 b(a)m(v)m(eraged)i(dimension.)73 b(In)40
-b(other)h(w)m(ords,)j(b)m(y)d(default)g Fy(ncwa)f FD(w)m(eigh)m(ts)j
-(and)d(masks)h(co)s(ordinate)p eop end
-%%Page: 156 158
-TeXDict begin 156 157 bop 150 -116 a FD(156)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(v)-5 b(ariables)37
-b(lik)m(e)g(all)g(other)g(v)-5 b(ariables.)59 b(This)35
-b(design)h(decision)h(w)m(as)g(in)m(tended)f(to)h(b)s(e)e(helpful)h
-(but)f(for)150 408 y(some)30 b(applications)g(it)g(ma)m(y)g(b)s(e)f
-(preferable)g(not)g(to)h(w)m(eigh)m(t)h(or)e(mask)h(co)s(ordinate)g(v)
--5 b(ariables)30 b(just)f(lik)m(e)150 518 y(all)e(other)g(v)-5
-b(ariables.)40 b(Consider)26 b(the)h(follo)m(wing)h(argumen)m(ts)f(to)g
-Fy(ncwa)p FD(:)38 b Fy(-a)29 b(latitude)f(-w)i(lat_wgt)f(-d)150
-628 y(latitude,0.,90.)23 b FD(where)k Fy(lat_wgt)f FD(is)h(a)h(w)m
-(eigh)m(t)h(in)e(the)h Fy(latitude)d FD(dimension.)39
-b(Since,)28 b(b)m(y)g(default)150 737 y Fy(ncwa)g FD(w)m(eigh)m(ts)i
-(co)s(ordinate)g(v)-5 b(ariables,)30 b(the)f(v)-5 b(alue)30
-b(of)f Fy(latitude)e FD(in)h(the)i Fz(output-\014le)k
-FD(dep)s(ends)27 b(on)i(the)150 847 y(w)m(eigh)m(ts)h(in)f
-Fz(lat)p 688 847 28 4 v 41 w(wgt)i FD(and)e(is)g(not)g(lik)m(ely)i(to)e
-(b)s(e)h(45.0)r(,)f(the)g(midp)s(oin)m(t)g(latitude)h(of)f(the)g(h)m
-(yp)s(erslab.)39 b(Op-)150 956 y(tion)31 b(`)p Fy(-I)p
-FD(')f(o)m(v)m(errides)h(this)g(default)f(b)s(eha)m(vior)g(and)g
-(causes)h Fy(ncwa)e FD(not)i(to)g(w)m(eigh)m(t)g(or)g(mask)f(co)s
-(ordinate)150 1066 y(v)-5 b(ariables)496 1033 y Fw(1)534
-1066 y FD(.)38 b(In)24 b(the)g(ab)s(o)m(v)m(e)h(case,)h(this)e(causes)g
-(the)g(v)-5 b(alue)25 b(of)f Fy(latitude)d FD(in)j(the)g
-Fz(output-\014le)29 b FD(to)24 b(b)s(e)30 b(45.0)r(,)150
-1176 y(an)f(app)s(ealing)g(result.)40 b(Th)m(us,)28 b(`)p
-Fy(-I)p FD(')h(sp)s(eci\014es)f(simple)h(arithmetic)h(a)m(v)m(erages)h
-(for)e(the)g(co)s(ordinate)g(v)-5 b(ari-)150 1285 y(ables.)44
-b(In)31 b(the)h(case)g(of)g(latitude,)h(`)p Fy(-I)p FD(')e(sp)s
-(eci\014es)h(that)g(y)m(ou)g(prefer)e(to)i(arc)m(hiv)m(e)h(the)f
-(arithmetic)h(mean)150 1395 y(latitude)e(of)g(the)f(a)m(v)m(eraged)j(h)
-m(yp)s(erslabs)c(rather)h(than)h(the)f(area-w)m(eigh)m(ted)j(mean)e
-(latitude.)3366 1362 y Fw(2)3404 1395 y FD(.)275 1554
-y(As)44 b(explained)h(in)f(See)h(Section)h(3.25)g([Op)s(eration)e(T)m
-(yp)s(es],)k(page)e(56,)j Fy(ncwa)43 b Fr(always)48 b(aver)-5
-b(ages)150 1664 y FD(co)s(ordinate)45 b(v)-5 b(ariables)44
-b(regardless)h(of)f(the)g(arithmetic)h(op)s(eration)g(t)m(yp)s(e)f(p)s
-(erformed)e(on)i(the)g(non-)150 1773 y(co)s(ordinate)21
-b(v)-5 b(ariables.)39 b(This)19 b(is)i(indep)s(enden)m(t)e(of)i(the)g
-(setting)h(of)e(the)h(`)p Fy(-I)p FD(')g(option.)38 b(The)20
-b(mathematical)150 1883 y(de\014nition)25 b(of)h(op)s(erations)f(in)m
-(v)m(olving)i(rank)e(reduction)h(is)f(giv)m(en)i(ab)s(o)m(v)m(e)f
-(\(see)h(Section)f(3.25)h([Op)s(eration)150 1993 y(T)m(yp)s(es],)j
-(page)h(56\).)150 2189 y Fv(4.12.1)63 b(Mask)41 b(condition)150
-2336 y FD(Eac)m(h)28 b Fn(x)425 2350 y Fh(i)480 2336
-y FD(also)h(has)e(an)g(asso)s(ciated)i(masking)f(w)m(eigh)m(t)h
-Fn(m)2091 2350 y Fh(i)2146 2336 y FD(whose)e(v)-5 b(alue)28
-b(is)f(0)h(or)g(1)g(\(false)g(or)g(true\).)39 b(The)150
-2446 y(v)-5 b(alue)26 b(of)g Fn(m)559 2460 y Fh(i)612
-2446 y FD(is)g(alw)m(a)m(ys)h(1)f(unless)f(a)h Fz(mask)p
-1602 2446 V 40 w(v)-5 b(ar)32 b FD(is)26 b(sp)s(eci\014ed)f(\(with)h(`)
-p Fy(-m)p FD('\).)39 b(As)26 b(noted)g(ab)s(o)m(v)m(e,)i
-Fz(mask)p 3592 2446 V 40 w(v)-5 b(ar)150 2555 y FD(is)32
-b(broadcast,)g(if)g(p)s(ossible,)f(to)h(conform)g(to)g(the)g(v)-5
-b(ariable)32 b(b)s(eing)f(a)m(v)m(eraged.)46 b(In)31
-b(this)h(case,)h(the)e(v)-5 b(alue)150 2665 y(of)41 b
-Fn(m)344 2679 y Fh(i)413 2665 y FD(dep)s(ends)e(on)i(the)g
-Fz(mask)g(condition)h FD(also)g(kno)m(wn)f(as)g(the)g
-Fz(truth)g(condition)p FD(.)73 b(As)41 b(exp)s(ected,)150
-2775 y Fn(m)230 2789 y Fh(i)283 2775 y FD(=)25 b(1)30
-b(when)g(the)g(mask)h(condition)g(is)f Fz(true)35 b FD(and)30
-b Fn(m)2028 2789 y Fh(i)2081 2775 y FD(=)25 b(0)31 b(otherwise.)275
-2934 y(The)43 b(mask)g(condition)i(has)e(the)h(syn)m(tax)h
-Fz(mask)p 2003 2934 V 45 w(v)-5 b(ar)50 b(mask)p 2427
-2934 V 46 w(comp)c(mask)p 2936 2934 V 46 w(v)-5 b(al)t
-FD(.)81 b(The)43 b(preferred)150 3044 y(metho)s(d)28
-b(to)i(sp)s(ecify)e(the)h(mask)g(condition)h(is)e(in)h(one)g(string)g
-(with)f(the)h(`)p Fy(-B)p FD(')g(or)g(`)p Fy(--mask_condition)p
-FD(')150 3153 y(switc)m(hes.)51 b(The)34 b(older)g(metho)s(d)f(is)h(to)
-g(use)f(the)h(three)g(switc)m(hes)h(`)p Fy(-m)p FD(',)f(`)p
-Fy(-T)p FD(',)h(and)e(`)p Fy(-M)p FD(')h(to)g(sp)s(ecify)g(the)150
-3263 y Fz(mask)p 361 3263 V 40 w(v)-5 b(ar)p FD(,)41
-b Fz(mask)p 796 3263 V 40 w(comp)p FD(,)g(and)d Fz(mask)p
-1504 3263 V 40 w(v)-5 b(al)p FD(,)42 b(resp)s(ectiv)m(ely)-8
-b(.)2199 3230 y Fw(3)2238 3263 y FD(.)66 b(The)38 b Fz(mask)p
-2735 3263 V 40 w(condition)i FD(string)e(is)h(auto-)150
-3372 y(matically)32 b(parsed)e(in)m(to)h(its)g(three)g(constituen)m(ts)
-g Fz(mask)p 2098 3372 V 40 w(v)-5 b(ar)p FD(,)31 b Fz(mask)p
-2523 3372 V 40 w(comp)p FD(,)g(and)e Fz(mask)p 3212 3372
-V 41 w(v)-5 b(al)p FD(.)275 3532 y(Here)87 b Fz(mask)p
-757 3532 V 40 w(v)-5 b(ar)94 b FD(is)87 b(the)h(name)f(of)h(the)f
-(masking)h(v)-5 b(ariable)88 b(\(sp)s(eci\014ed)f(with)g(`)p
-Fy(-m)p FD(',)150 3641 y(`)p Fy(--mask-variable)p FD(',)81
-b(`)p Fy(--mask_variable)p FD(',)h(`)p Fy(--msk_nm)p
-FD(',)h(or)74 b(`)p Fy(--msk_var)p FD('\).)170 b(The)74
-b(truth)150 3751 y Fz(mask)p 361 3751 V 40 w(comp)55
-b FD(argumen)m(t)d(\(sp)s(eci\014ed)g(with)g(`)p Fy(-T)p
-FD(',)57 b(`)p Fy(--mask_comparator)p FD(',)c(`)p Fy(--msk_cmp_typ)p
-FD(',)i(or)150 3860 y(`)p Fy(--op_rlt)p FD(')41 b(ma)m(y)i(b)s(e)e(an)m
-(y)i(one)g(of)f(the)h(six)f(arithmetic)i(comparators:)65
-b Fq(eq)p FD(,)45 b Fq(ne)p FD(,)g Fq(gt)p FD(,)g Fq(lt)p
-FD(,)g Fq(ge)p FD(,)g Fq(le)p FD(.)150 3970 y(These)37
-b(are)g(the)g(F)-8 b(ortran-st)m(yle)39 b(c)m(haracter)g(abbreviations)
-e(for)g(the)g(logical)i(comparisons)e(=,)i FA(6)p FD(=,)f
-Fn(>)p FD(,)150 4080 y Fn(<)p FD(,)32 b FA(\025)p FD(,)h
-FA(\024)p FD(.)45 b(The)31 b(mask)h(comparator)h(defaults)f(to)h
-Fq(eq)e FD(\(equalit)m(y\).)48 b(The)32 b Fz(mask)p 2900
-4080 V 40 w(v)-5 b(al)36 b FD(argumen)m(t)c(to)h(`)p
-Fy(-M)p FD(')150 4189 y(\(or)c(`)p Fy(--mask-value)p
-FD(',)d(or)i(`)p Fy(--msk_val)p FD('\))e(is)i(the)h(righ)m(t)f(hand)g
-(side)g(of)g(the)g Fz(mask)g(condition)p FD(.)41 b(Th)m(us)27
-b(for)150 4299 y(the)33 b Fz(i)5 b FD('th)34 b(elemen)m(t)g(of)g(the)f
-(h)m(yp)s(erslab)f(to)i(b)s(e)f(a)m(v)m(eraged,)j(the)d(mask)g
-(condition)h(is)f Fr(mask)3241 4313 y Fh(i)3305 4299
-y Fr(mask)p 3511 4299 V 42 w(c)-5 b(omp)150 4408 y(mask)p
-356 4408 V 42 w(val)p FD(.)275 4568 y(Eac)m(h)22 b Fn(x)544
-4582 y Fh(i)594 4568 y FD(is)f(also)i(asso)s(ciated)h(with)d(an)h
-(additional)h(w)m(eigh)m(t)g Fn(w)2356 4582 y Fh(i)2406
-4568 y FD(whose)f(v)-5 b(alue)22 b(ma)m(y)g(b)s(e)g(user-sp)s
-(eci\014ed.)150 4677 y(The)33 b(v)-5 b(alue)34 b(of)g
-Fn(w)750 4691 y Fh(i)811 4677 y FD(is)f(iden)m(tically)j(1)e(unless)f
-(the)g(user)g(sp)s(eci\014es)g(a)h(w)m(eigh)m(ting)i(v)-5
-b(ariable)34 b Fz(w)m(eigh)m(t)j FD(\(with)p 150 4773
-1200 4 v 199 4841 a Fw(1)275 4872 y Fu(The)29 b(default)g(b)r(eha)n
-(vior)g(of)h(\(`)p Ft(-I)p Fu('\))g(c)n(hanged)f(on)g(1998/12/01|b)r
-(efore)34 b(this)29 b(date)g(the)g(default)g(w)n(as)h(not)f(to)g(w)n
-(eigh)n(t)275 4960 y(or)d(mask)f(co)r(ordinate)i(v)l(ariables.)199
-5031 y Fw(2)275 5063 y Fu(If)32 b Ft(lat_wgt)i Fu(con)n(tains)g
-(Gaussian)f(w)n(eigh)n(ts)h(then)e(the)g(v)l(alue)g(of)i
-Ft(latitude)g Fu(in)f(the)f Fp(output-\014le)k Fu(will)e(b)r(e)e(the)g
-(area-)275 5150 y(w)n(eigh)n(ted)26 b(cen)n(troid)f(of)i(the)e(h)n(yp)r
-(erslab.)34 b(F)-6 b(or)26 b(the)f(example)h(giv)n(en,)g(this)g(is)g
-(ab)r(out)g(30)g(degrees.)199 5221 y Fw(3)275 5253 y
-Fu(The)c(three)g(switc)n(hes)h(`)p Ft(-m)p Fu(',)h(`)p
-Ft(-T)p Fu(',)g(and)d(`)p Ft(-M)p Fu(')j(are)e(main)n(tained)g(for)h
-(bac)n(kw)n(ard)f(compatibilit)n(y)h(and)e(ma)n(y)h(b)r(e)g(deprecated)
-275 5340 y(in)j(the)g(future.)35 b(It)25 b(is)h(safest)h(to)f(write)h
-(scripts)f(using)g(`)p Ft(--mask_condition)p Fu('.)p
-eop end
-%%Page: 157 159
-TeXDict begin 157 158 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(157)150
-299 y(`)p Fy(-w)p FD(',)30 b(`)p Fy(--weight)p FD(',)e(or)i(`)p
-Fy(--wgt)p 1221 299 29 4 v 41 w(var)p FD('\).)40 b(In)29
-b(this)h(case,)h(the)f(v)-5 b(alue)30 b(of)g Fn(w)2589
-313 y Fh(i)2646 299 y FD(is)g(determined)f(b)m(y)h(the)f
-Fz(w)m(eigh)m(t)150 408 y FD(v)-5 b(ariable)36 b(in)g(the)f
-Fz(input-\014le)p FD(.)56 b(As)36 b(noted)g(ab)s(o)m(v)m(e,)i
-Fz(w)m(eigh)m(t)h FD(is)d(broadcast,)h(if)f(p)s(ossible,)g(to)h
-(conform)e(to)150 518 y(the)c(v)-5 b(ariable)31 b(b)s(eing)f(a)m(v)m
-(eraged.)275 678 y Fn(M)43 b FD(is)33 b(the)h(n)m(um)m(b)s(er)d(of)j
-(input)e(elemen)m(ts)j Fn(x)1772 692 y Fh(i)1832 678
-y FD(whic)m(h)e(actually)i(con)m(tribute)f(to)g(output)f(elemen)m(t)i
-Fn(x)3690 692 y Fh(j)3725 678 y FD(.)150 787 y Fn(M)40
-b FD(is)31 b(also)g(kno)m(wn)f(as)h(the)f Fz(tally)40
-b FD(and)29 b(is)i(de\014ned)e(as)1671 1068 y Fn(M)36
-b FD(=)1891 963 y Fh(i)p Fw(=)p Fh(N)1897 988 y Fg(X)1903
-1164 y Fh(i)p Fw(=1)2039 1068 y Fn(\026)2094 1082 y Fh(i)2121
-1068 y Fn(m)2201 1082 y Fh(i)150 1345 y Fn(M)c FD(is)22
-b(iden)m(tical)i(to)e(the)g(denominator)h(of)f(the)g(generic)h(a)m(v)m
-(eraging)h(expression)e(except)h(for)e(the)i(omission)150
-1455 y(of)28 b(the)g(w)m(eigh)m(t)h Fn(w)755 1469 y Fh(i)783
-1455 y FD(.)39 b(Th)m(us)27 b Fn(M)35 b FD(=)25 b Fn(N)38
-b FD(whenev)m(er)27 b(no)h(input)f(p)s(oin)m(ts)g(are)h(missing)g(v)-5
-b(alues)28 b(or)f(are)h(mask)m(ed.)150 1565 y(Whether)f(an)f(elemen)m
-(t)j(con)m(tributes)e(to)g(the)g(output,)g(and)f(th)m(us)h(incremen)m
-(ts)g Fn(M)36 b FD(b)m(y)27 b(one,)h(has)e(more)h(to)150
-1674 y(do)i(with)f(the)h(ab)s(o)m(v)m(e)h(t)m(w)m(o)g(criteria)f
-(\(missing)g(v)-5 b(alue)29 b(and)f(masking\))i(than)e(with)g(the)h(n)m
-(umeric)g(v)-5 b(alue)29 b(of)150 1784 y(the)g(elemen)m(t)h(p)s(er)e
-(se.)40 b(F)-8 b(or)30 b(example,)g Fn(x)1532 1798 y
-Fh(i)1584 1784 y FD(=)25 b(0)p Fn(:)p FD(0)30 b(do)s(es)f(con)m
-(tribute)g(to)h Fn(x)2626 1798 y Fh(j)2689 1784 y FD(\(assuming)f(the)g
-Fy(_FillValue)150 1893 y FD(attribute)34 b(is)f(not)g(0.0)h(and)e(lo)s
-(cation)j Fn(i)e FD(is)g(not)g(mask)m(ed\).)50 b(The)32
-b(v)-5 b(alue)34 b Fn(x)2676 1907 y Fh(i)2733 1893 y
-FD(=)29 b(0)p Fn(:)p FD(0)34 b(will)f(not)h(c)m(hange)g(the)150
-2003 y(n)m(umerator)f(of)g(the)f(generic)i(a)m(v)m(eraging)h
-(expression,)e(but)f(it)i(will)f(c)m(hange)h(the)e(denominator)h
-(\(unless)150 2113 y(its)e(w)m(eigh)m(t)h Fn(w)630 2127
-y Fh(i)683 2113 y FD(=)25 b(0)p Fn(:)p FD(0)31 b(as)g(w)m(ell\).)150
-2312 y Fv(4.12.2)63 b(Normalization)41 b(and)g(In)m(tegration)150
-2459 y Fy(ncwa)g FD(has)i(one)g(switc)m(h)g(whic)m(h)f(con)m(trols)i
-(the)f(normalization)h(of)e(the)h(a)m(v)m(erages)i(app)s(earing)d(in)h
-(the)150 2569 y Fz(output-\014le)p FD(.)70 b(Short)39
-b(option)i(`)p Fy(-N)p FD(')f(\(or)g(long)h(options)f(`)p
-Fy(--nmr)p FD(')g(or)g(`)p Fy(--numerator)p FD('\))e(prev)m(en)m(ts)i
-Fy(ncwa)150 2679 y FD(from)27 b(dividing)f(the)i(w)m(eigh)m(ted)g(sum)f
-(of)g(the)g(v)-5 b(ariable)28 b(\(the)g(n)m(umerator)f(in)g(the)g(a)m
-(v)m(eraging)j(expression\))150 2788 y(b)m(y)22 b(the)g(w)m(eigh)m(ted)
-h(sum)e(of)g(the)h(w)m(eigh)m(ts)i(\(the)e(denominator)g(in)f(the)h(a)m
-(v)m(eraging)i(expression\).)38 b(Th)m(us)21 b(`)p Fy(-N)p
-FD(')150 2898 y(tells)32 b Fy(ncwa)d FD(to)j(return)d(just)h(the)h(n)m
-(umerator)g(of)g(the)g(arithmetic)g(expression)g(de\014ning)f(the)g(op)
-s(eration)150 3007 y(\(see)h(Section)h(3.25)f([Op)s(eration)g(T)m(yp)s
-(es],)f(page)h(56\).)275 3167 y(With)36 b(this)h(normalization)h
-(option,)g Fy(ncwa)d FD(can)i(in)m(tegrate)h(v)-5 b(ariables.)60
-b(Av)m(erages)38 b(are)e(\014rst)g(com-)150 3277 y(puted)k(as)h(sums,)i
-(and)e(then)f(normalized)i(to)g(obtain)f(the)g(a)m(v)m(erage.)76
-b(The)40 b(original)i(sum)e(\(i.e.,)46 b(the)150 3386
-y(n)m(umerator)27 b(of)f(the)h(expression)g(in)f(Section)h(3.25)h([Op)s
-(eration)f(T)m(yp)s(es],)g(page)h(56\))f(is)g(output)f(if)h(default)150
-3496 y(normalization)32 b(is)f(turned)f(o\013)h(\(with)f(`)p
-Fy(-N)p FD('\).)43 b(This)30 b(sum)f(is)i(the)g(in)m(tegral)i(\(not)e
-(the)g(a)m(v)m(erage\))j(o)m(v)m(er)e(the)150 3605 y(sp)s(eci\014ed)40
-b(\(with)31 b(`)p Fy(-a)p FD(',)43 b(or)e(all,)k(if)c(none)g(are)g(sp)s
-(eci\014ed\))g(dimensions.)71 b(The)41 b(w)m(eigh)m(ting)h(v)-5
-b(ariable,)45 b(if)150 3715 y(sp)s(eci\014ed)30 b(\(with)g(`)p
-Fy(-w)p FD('\),)i(pla)m(ys)f(the)f(role)i(of)e(the)h(di\013eren)m(tial)
-h(incremen)m(t)g(and)e(th)m(us)g(p)s(ermits)g(more)g(so-)150
-3825 y(phisticated)g(in)m(tegrals)g(\(i.e.,)h(w)m(eigh)m(ted)f(sums\))f
-(to)g(b)s(e)g(output.)39 b(F)-8 b(or)30 b(example,)g(consider)f(the)g
-(v)-5 b(ariable)150 3934 y Fy(lev)25 b FD(where)g Fz(lev)34
-b FD(=)25 b([100)p Fn(;)15 b FD(500)p Fn(;)g FD(1000])31
-b(w)m(eigh)m(ted)d(b)m(y)d(the)h(w)m(eigh)m(t)h Fy(lev_wgt)d
-FD(where)i Fz(lev)p 3108 3934 28 4 v 48 w(wgt)i FD(=)d([10)p
-Fn(;)15 b FD(2)p Fn(;)g FD(1].)150 4044 y(The)33 b(v)m(ertical)j(in)m
-(tegral)g(of)e Fy(lev)p FD(,)g(w)m(eigh)m(ted)h(b)m(y)f
-Fy(lev_wgt)p FD(,)f(is)h(the)g(dot)g(pro)s(duct)e(of)i
-Fz(lev)42 b FD(and)34 b Fz(lev)p 3544 4044 V 40 w(wgt)p
-FD(.)150 4153 y(That)29 b(this)f(is)h(is)i(3000.0)g(can)e(b)s(e)f(seen)
-h(b)m(y)g(insp)s(ection)g(and)f(v)m(eri\014ed)h(with)f(the)h(in)m
-(tegration)i(command)390 4313 y Fy(ncwa)47 b(-N)g(-a)g(lev)g(-v)g(lev)g
-(-w)g(lev_wgt)f(in.nc)g(foo.nc;ncks)f(foo.nc)150 4473
-y FD(EXAMPLES)275 4632 y(Giv)m(en)31 b(\014le)f(`)p Fy(85_0112.nc)p
-FD(':)390 4792 y Fy(netcdf)46 b(85_0112)g({)390 4902
-y(dimensions:)772 5011 y(lat)h(=)g(64)g(;)772 5121 y(lev)g(=)g(18)g(;)
-772 5230 y(lon)g(=)g(128)g(;)772 5340 y(time)f(=)i(UNLIMITED)d(;)j(//)f
-(\(12)g(currently\))p eop end
-%%Page: 158 160
-TeXDict begin 158 159 bop 150 -116 a FD(158)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(variables:)772
-408 y(float)46 b(lat\(lat\))g(;)772 518 y(float)g(lev\(lev\))g(;)772
-628 y(float)g(lon\(lon\))g(;)772 737 y(float)g(time\(time\))f(;)772
-847 y(float)h(scalar_var)f(;)772 956 y(float)h(three_dmn_var\(lat,)d
-(lev,)k(lon\))f(;)772 1066 y(float)g(two_dmn_var\(lat,)e(lev\))i(;)772
-1176 y(float)g(mask\(lat,)f(lon\))i(;)772 1285 y(float)f(gw\(lat\))g(;)
-390 1395 y(})275 1555 y FD(Av)m(erage)32 b(all)f(v)-5
-b(ariables)31 b(in)f(`)p Fy(in.nc)p FD(')g(o)m(v)m(er)h(all)h
-(dimensions)d(and)h(store)h(results)f(in)g(`)p Fy(out.nc)p
-FD(':)390 1716 y Fy(ncwa)47 b(in.nc)f(out.nc)150 1876
-y FD(All)e(v)-5 b(ariables)44 b(in)f(`)p Fy(in.nc)p FD(')g(are)h
-(reduced)e(to)j(scalars)f(in)f(`)p Fy(out.nc)p FD(')f(since)i
-Fy(ncwa)e FD(a)m(v)m(erages)k(o)m(v)m(er)f(all)150 1986
-y(dimensions)30 b(unless)f(otherwise)i(sp)s(eci\014ed)f(\(with)g(`)p
-Fy(-a)p FD('\).)275 2146 y(Store)g(the)h(zonal)g(\(longitudinal\))h
-(mean)e(of)h(`)p Fy(in.nc)p FD(')e(in)h(`)p Fy(out.nc)p
-FD(':)390 2307 y Fy(ncwa)47 b(-a)g(lon)g(in.nc)f(out1.nc)390
-2416 y(ncwa)h(-a)g(lon)g(-b)g(in.nc)f(out2.nc)150 2577
-y FD(The)41 b(\014rst)g(command)h(turns)e Fy(lon)h FD(in)m(to)i(a)f
-(scalar)h(and)e(the)h(second)f(retains)i Fy(lon)d FD(as)i(a)h
-(degenerate)150 2686 y(dimension)30 b(in)g(all)h(v)-5
-b(ariables.)390 2847 y Fy(\045)47 b(ncks)g(-C)g(-H)g(-v)h(lon)f
-(out1.nc)390 2956 y(lon)g(=)g(135)390 3066 y(\045)g(ncks)g(-C)g(-H)g
-(-v)h(lon)f(out2.nc)390 3175 y(lon[0])f(=)i(135)275 3336
-y FD(In)43 b(either)h(case)h(the)f(tally)h(is)f(simply)g(the)g(size)h
-(of)f Fy(lon)p FD(,)i(i.e.,)j(180)c(for)f(the)g(`)p Fy(85_0112.nc)p
-FD(')e(\014le)150 3445 y(describ)s(ed)29 b(b)m(y)i(the)f(sample)h
-(header)f(ab)s(o)m(v)m(e.)275 3606 y(Compute)f(the)i(meridional)f
-(\(latitudinal\))j(mean,)d(with)g(v)-5 b(alues)31 b(w)m(eigh)m(ted)g(b)
-m(y)g(the)f(corresp)s(onding)150 3715 y(elemen)m(t)i(of)e
-Fz(gw)708 3682 y Fw(4)746 3715 y FD(:)390 3876 y Fy(ncwa)47
-b(-w)g(gw)g(-a)g(lat)g(in.nc)f(out.nc)150 4036 y FD(Here)31
-b(the)f(tally)i(is)e(simply)g(the)h(size)g(of)g Fy(lat)p
-FD(,)e(or)i(64.)g(The)f(sum)g(of)g(the)h(Gaussian)f(w)m(eigh)m(ts)i(is)
-e(2.0.)275 4197 y(Compute)f(the)i(area)g(mean)g(o)m(v)m(er)g(the)g
-(tropical)h(P)m(aci\014c:)390 4357 y Fy(ncwa)47 b(-w)g(gw)g(-a)g
-(lat,lon)f(-d)h(lat,-20.,20.)e(-d)i(lon,120.,270.)d(in.nc)i(out.nc)150
-4518 y FD(Here)31 b(the)f(tally)i(is)e(64)22 b FA(\002)d
-FD(128)27 b(=)e(8192.)275 4678 y(Compute)k(the)i(area-mean)h(o)m(v)m
-(er)f(the)g(glob)s(e)g(using)f(only)g(p)s(oin)m(ts)g(for)h(whic)m(h)f
-Fn(O)s(R)q(O)d(<)e FD(0)p Fn(:)p FD(5)3415 4645 y Fw(5)3454
-4678 y FD(:)390 4839 y Fy(ncwa)47 b(-B)g('ORO)f(<)i(0.5')285
-b(-w)47 b(gw)h(-a)f(lat,lon)f(in.nc)g(out.nc)390 4948
-y(ncwa)h(-m)g(ORO)g(-M)g(0.5)g(-T)g(lt)g(-w)g(gw)h(-a)f(lat,lon)f
-(in.nc)g(out.nc)p 150 5051 1200 4 v 199 5118 a Fw(4)275
-5150 y Ft(gw)26 b Fu(stands)f(for)i Fp(Gaussian)g(w)n(eigh)n(t)g
-Fu(in)f(man)n(y)f(climate)i(mo)r(dels.)199 5221 y Fw(5)275
-5253 y Ft(ORO)40 b Fu(stands)g(for)g Fp(Orograph)n(y)46
-b Fu(in)39 b(some)i(climate)g(mo)r(dels)f(and)g(in)f(those)h(mo)r(dels)
-h Fp(OR)n(O)47 b Fb(<)e Fu(0)p Fb(:)p Fu(5)40 b(selects)h(o)r(cean)275
-5340 y(gridp)r(oin)n(ts.)p eop end
-%%Page: 159 161
-TeXDict begin 159 160 bop 150 -116 a FD(Chapter)30 b(4:)41
-b(Op)s(erator)30 b(Reference)h(Man)m(ual)1897 b(159)150
-299 y(It)23 b(is)f(considerably)h(simpler)f(to)h(sp)s(ecify)f(the)h
-(complete)h Fz(mask)p 2283 299 28 4 v 40 w(cond)i FD(with)c(the)h
-(single)g(string)f(argumen)m(t)150 408 y(to)35 b(`)p
-Fy(-B)p FD(')g(than)f(with)g(the)h(three)f(separate)i(switc)m(hes)f(`)p
-Fy(-m)p FD(',)h(`)p Fy(-T)p FD(',)f(and)f(`)p Fy(-M)p
-FD('.)53 b(If)34 b(in)g(doubt,)h(enclose)h(the)150 518
-y Fz(mask)p 361 518 V 40 w(cond)31 b FD(within)26 b(quotes)i(since)f
-(some)h(of)f(the)h(comparators)g(ha)m(v)m(e)g(sp)s(ecial)g(meanings)f
-(to)h(the)f(shell.)275 677 y(Assuming)g(70\045)h(of)g(the)g(gridp)s
-(oin)m(ts)g(are)g(maritime,)h(then)f(here)f(the)h(tally)h(is)f(0)p
-Fn(:)p FD(70)15 b FA(\002)g FD(8192)29 b FA(\031)c FD(5734.)275
-837 y(Compute)k(the)i(global)h(ann)m(ual)e(mean)h(o)m(v)m(er)g(the)g
-(maritime)g(tropical)h(P)m(aci\014c:)390 996 y Fy(ncwa)47
-b(-B)g('ORO)f(<)i(0.5')285 b(-w)47 b(gw)h(-a)f(lat,lon,time)d(\\)485
-1106 y(-d)k(lat,-20.0,20.0)c(-d)j(lon,120.0,270.0)c(in.nc)k(out.nc)390
-1215 y(ncwa)g(-m)g(ORO)g(-M)g(0.5)g(-T)g(lt)g(-w)g(gw)h(-a)f
-(lat,lon,time)d(\\)485 1325 y(-d)k(lat,-20.0,20.0)c(-d)j
-(lon,120.0,270.0)c(in.nc)k(out.nc)275 1484 y FD(F)-8
-b(urther)30 b(examples)h(will)f(use)g(the)h(one-switc)m(h)g(sp)s
-(eci\014cation)h(of)e Fz(mask)p 2762 1484 V 40 w(cond)p
-FD(.)275 1644 y(Determine)39 b(the)g(total)i(area)e(of)g(the)g
-(maritime)g(tropical)h(P)m(aci\014c,)i(assuming)d(the)g(v)-5
-b(ariable)39 b Fz(area)150 1753 y FD(con)m(tains)32 b(the)e(area)h(of)g
-(eac)m(h)g(gridcell)390 1913 y Fy(ncwa)47 b(-N)g(-v)g(area)g(-B)g('ORO)
-f(<)i(0.5')f(-a)g(lat,lon)f(\\)485 2022 y(-d)i(lat,-20.0,20.0)c(-d)j
-(lon,120.0,270.0)c(in.nc)k(out.nc)275 2182 y FD(W)-8
-b(eigh)m(ting)39 b Fz(area)e FD(\(e.g.,)k(b)m(y)36 b
-Fz(gw)8 b FD(\))37 b(is)g(not)g(appropriate)g(b)s(ecause)g
-Fz(area)g FD(is)g Fr(alr)-5 b(e)g(ady)47 b FD(area-w)m(eigh)m(ted)150
-2291 y(b)m(y)27 b(de\014nition.)39 b(Th)m(us)26 b(the)i(`)p
-Fy(-N)p FD(')f(switc)m(h,)h(or,)g(equiv)-5 b(alen)m(tly)d(,)30
-b(the)d(`)p Fy(-y)j(ttl)p FD(')d(switc)m(h,)h(correctly)h(in)m(tegrate)
-150 2401 y(the)i(cell)g(areas)g(in)m(to)h(a)e(total)j(regional)e(area.)
-275 2560 y(Mask)38 b(a)h(\014le)f(to)i(con)m(tain)p 1218
-2560 V 79 w Fz(FillV)-8 b(alue)46 b FD(ev)m(erywhere)39
-b(except)g(where)f Fz(thr)p 2832 2560 V 46 w(min)g Fn(<)p
-FD(=)f Fz(msk)p 3406 2560 V 46 w(v)-5 b(ar)45 b Fn(<)p
-FD(=)150 2670 y Fz(thr)p 285 2670 V 46 w(max)6 b FD(:)390
-2829 y Fy(#)47 b(Set)g(masking)f(variable)g(and)h(its)g(scalar)f
-(thresholds)390 2939 y(export)g(msk_var='three_dmn_var_db)o(l')41
-b(#)48 b(Masking)e(variable)390 3049 y(export)g(thr_max='20')f(#)i
-(Maximum)f(allowed)g(value)390 3158 y(export)g(thr_min='10')f(#)i
-(Minimum)f(allowed)g(value)390 3268 y(ncecat)g(-O)h(in.nc)g(out.nc)f(#)
-h(Wrap)g(out.nc)f(in)h(degenerate)e("record")h(dimension)390
-3377 y(ncwa)h(-O)g(-a)g(record)f(-B)h("${msk_var})e(<=)i(${thr_max}")e
-(out.nc)h(out.nc)390 3487 y(ncecat)g(-O)h(out.nc)f(out.nc)g(#)i(Wrap)f
-(out.nc)f(in)h(degenerate)e("record")g(dimension)390
-3597 y(ncwa)i(-O)g(-a)g(record)f(-B)h("${msk_var})e(>=)i(${thr_min}")e
-(out.nc)h(out.nc)275 3756 y FD(After)35 b(the)g(\014rst)f(use)h(of)g
-Fy(ncwa)p FD(,)g(`)p Fy(out.nc)p FD(')f(con)m(tains)p
-2132 3756 V 76 w Fz(FillV)-8 b(alue)43 b FD(where)34
-b Fy(${msk_var})28 b(>=)i(${thr_)150 3866 y(max})p FD(.)38
-b(The)26 b(pro)s(cess)g(is)g(then)h(rep)s(eated)f(on)g(the)h(remaining)
-f(data)h(to)g(\014lter)g(out)g(p)s(oin)m(ts)f(where)g
-Fy(${msk_)150 3975 y(var})j(<=)h(${thr_min})p FD(.)50
-b(The)33 b(resulting)i(`)p Fy(out.nc)p FD(')e(con)m(tains)i(v)-5
-b(alid)35 b(data)g(only)f(where)g Fz(thr)p 3392 3975
-V 46 w(min)e Fn(<)p FD(=)150 4085 y Fz(msk)p 322 4085
-V 45 w(v)-5 b(ar)32 b Fn(<)p FD(=)25 b Fz(thr)p 813 4085
-V 46 w(max)6 b FD(.)p eop end
-%%Page: 160 162
-TeXDict begin 160 161 bop eop end
-%%Page: 161 163
-TeXDict begin 161 162 bop 150 -116 a FD(Chapter)30 b(5:)41
-b(Con)m(tributing)2486 b(161)150 299 y Fx(5)80 b(Con)l(tributing)150
-544 y FD(W)-8 b(e)291 b(w)m(elcome)h(con)m(tributions)e(from)f(an)m(y)m
-(one.)820 b(The)150 653 y(pro)5 b(ject)40 b(homepage)g(at)g
-Fy(https://sf.net/projects/nc)o(o)34 b FD(con)m(tains)40
-b(more)g(information)g(on)f(ho)m(w)150 763 y(to)31 b(con)m(tribute.)275
-922 y(Financial)193 b(con)m(tributions)g(to)h FC(NCO)e
-FD(dev)m(elopmen)m(t)i(ma)m(y)f(b)s(e)f(made)150 1032
-y(through)29 b(P)m(a)m(yP)m(al)j(\()p Fy(https://www.paypal.com/xcli)o
-(ck/)o(busi)o(ness)o(=ze)o(nder)o(\04540u)o(ci.)o(edu&)o(item)o(_)150
-1141 y(name=NCO+development&ite)o(m_nu)o(mber)o(=nc)o(o_dn)o(t_dv)o
-(l&n)o(o_no)o(te=1)o(&ta)o(x=0&)o(curr)o(enc)o(y_)150
-1251 y(code=USD)p FD(\).)64 b FC(NCO)39 b FD(has)g(b)s(een)f(shared)g
-(for)h(o)m(v)m(er)h(10)31 b(y)m(ears)40 b(y)m(et)g(only)f(t)m(w)m(o)h
-(users)f(ha)m(v)m(e)h(con)m(tributed)150 1361 y(an)m(y)31
-b(money)f(to)h(the)g(dev)m(elop)s(ers)1292 1328 y Fw(1)1329
-1361 y FD(.)41 b(So)30 b(y)m(ou)h(could)f(b)s(e)g(the)h(third!)150
-1586 y FB(5.1)68 b(Con)l(tributors)150 1745 y FD(The)30
-b(primary)f(con)m(tributors)i(to)g FC(NCO)f FD(dev)m(elopmen)m(t)i(ha)m
-(v)m(e)g(b)s(een:)150 1926 y(Charlie)e(Zender)630 2036
-y(Concept,)35 b(design)f(and)f(implemen)m(tation)i(of)f(op)s(erators)g
-(from)f(1995-2000.)55 b(Since)33 b(then)630 2145 y(autoto)s(ols,)39
-b(bug-squashing,)d(c)m(h)m(unking,)h(do)s(cumen)m(tation,)g(pac)m
-(king,)h FC(NCO)e FD(library)f(re-)630 2255 y(design,)g
-Fy(ncap2)d FD(features,)j Fy(ncbo)p FD(,)f Fy(ncpdq)p
-FD(,)f(SMP)g(threading)h(and)f(MPI)h(parallelization,)630
-2364 y(netCDF4)f(in)m(tegration,)h(external)e(funding,)f(pro)5
-b(ject)32 b(managemen)m(t,)h(science)g(researc)m(h,)630
-2474 y(releases.)150 2626 y(Henry)d(Buto)m(wsky)630 2736
-y(Non-linear)35 b(op)s(erations)g(and)f Fy(min\(\))p
-FD(,)h Fy(max\(\))p FD(,)f Fy(total\(\))f FD(supp)s(ort)f(in)j
-Fy(ncra)e FD(and)h Fy(ncwa)p FD(.)630 2845 y(T)m(yp)s(e)24
-b(con)m(v)m(ersion)i(for)e(arithmetic.)40 b(Migration)26
-b(to)f(netCDF3)g(API.)g Fy(ncap)e FD(parser,)i(lexer,)630
-2955 y(and)30 b(I/O.)38 b(Multislabbing)22 b(algorithm.)39
-b(V)-8 b(ariable)24 b(wildcarding.)38 b(V)-8 b(arious)23
-b(hac)m(ks.)38 b Fy(ncap2)630 3065 y FD(language.)150
-3217 y(Rorik)31 b(P)m(eterson)630 3327 y(Original)59
-b(autoto)s(ol)h(build)d(supp)s(ort.)124 b(Long)58 b(command-line)h
-(options.)126 b(Original)630 3436 y(UDUnits)31 b(supp)s(ort.)39
-b(Debianization.)k(Numerous)30 b(bug-\014xes.)150 3588
-y(Daniel)i(W)-8 b(ang)630 3698 y(Script)30 b(W)-8 b(ork\015o)m(w)31
-b(Analysis)g(for)f(MultiPro)s(cessing)h(\(SW)-10 b(AMP\).)32
-b(RPM)e(supp)s(ort.)150 3850 y(Harry)g(Mangalam)630 3960
-y(Benc)m(hmarking.)41 b(OP)m(eND)m(AP)32 b(con\014guration.)150
-4112 y(Brian)f(Ma)m(ys)630 4222 y(Original)g(pac)m(k)-5
-b(aging)32 b(for)e(Debian)h(GNU/Lin)m(ux,)g Fy(nroff)e
-FD(man)h(pages.)150 4374 y(George)i(Shap)s(o)m(v)-5 b(alo)m(v)630
-4484 y(P)m(ac)m(k)g(aging)33 b(for)d(Gen)m(to)s(o)i(GNU/Lin)m(ux.)150
-4636 y(Bill)f(Ko)s(cik)78 b(Memory)31 b(managemen)m(t.)150
-4788 y(Len)f(Makin)630 4898 y(NEC)g(SX)g(arc)m(hitecture)i(supp)s(ort.)
-p 150 4979 1200 4 v 199 5047 a Fw(1)309 5078 y Fu(Happ)n(y)g(users)j
-(ha)n(v)n(e)f(sen)n(t)g(me)g(a)g(few)i(gifts,)h(though.)60
-b(This)35 b(includes)f(a)h(b)r(o)n(x)e(of)i(imp)r(orted)g(c)n(ho)r
-(colate.)61 b(Mmm.)275 5166 y(Appreciation)27 b(and)g(gifts)i(are)f
-(de\014nitely)f(b)r(etter)g(than)g(money)-6 b(.)39 b(Naturally)-6
-b(,)28 b(I'm)f(to)r(o)h(lazy)g(to)g(split)f(and)h(send)f(gifts)275
-5253 y(to)d(the)g(other)h(dev)n(elop)r(ers.)34 b(Ho)n(w)n(ev)n(er,)25
-b(unlik)n(e)f(some)h Fs(NCO)g Fu(dev)n(elop)r(ers,)g(I)f(ha)n(v)n(e)g
-(a)h(steady)f Ft(")p Fu(real)i(job)p Ft(")p Fu(.)34 b(My)25
-b(in)n(ten)n(t)e(is)275 5340 y(to)i(split)h(monetary)g(donations)g
-(among)h(the)e(activ)n(e)h(dev)n(elop)r(ers)g(and)f(to)h(send)g(them)f
-(their)h(shares)g(via)g(P)n(a)n(yP)n(al.)p eop end
-%%Page: 162 164
-TeXDict begin 162 163 bop 150 -116 a FD(162)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y(Jim)g(Edw)m(ards)630
-408 y(AIX)g(arc)m(hitecture)j(supp)s(ort.)150 570 y(Juliana)d(Rew)630
-680 y(Compatibilit)m(y)i(with)e(large)h(PIDs.)150 842
-y(Karen)f(Sc)m(h)m(uc)m(hardt)630 952 y(Auxiliary)h(co)s(ordinate)g
-(supp)s(ort.)150 1114 y(Ga)m(y)m(athri)h(V)-8 b(enkitac)m(halam)630
-1223 y FC(MPI)30 b FD(implemen)m(tation.)150 1385 y(Scott)h(Capps)630
-1495 y(Large)g(w)m(ork-load)g(testing)150 1657 y(Martin)g(Dix,)g(Mark)g
-(Flanner,)f(Keith)h(Lindsa)m(y)-8 b(,)31 b(Mik)m(e)g(P)m(age,)i(Martin)
-d(Sc)m(hmidt,)h(Mic)m(hael)h(Sc)m(h)m(ulz,)150 1766 y(Remik)f
-(Ziemlinski)630 1876 y(Excellen)m(t)h(bug)e(rep)s(orts)g(and)f(feature)
-i(requests.)150 2038 y(Markus)f(Liebig)630 2148 y(Pro)s(of-read)g(the)h
-(ncap)f(do)s(cumen)m(tation)150 2310 y(Daniel)i(Baumann,)e(Barry)g(deF)
--8 b(reese,)32 b(F)-8 b(rancesco)32 b(Lo)m(v)m(ergine,)h(Matej)e(V)-8
-b(ela,)32 b(Luk)e(Claes)630 2419 y(Debian)h(pac)m(k)-5
-b(aging)150 2581 y(P)m(atrice)32 b(Dumas,)f(Ed)e(Hill,)j(Orion)e(P)m
-(opla)m(wski)630 2691 y(RedHat)h(pac)m(k)-5 b(aging)150
-2853 y(George)32 b(Shapa)m(v)-5 b(alo)m(v,)32 b(P)m(atric)m(k)g(Kursa)m
-(w)m(e)630 2962 y(Gen)m(to)s(o)g(pac)m(k)-5 b(aging)150
-3124 y(Filip)s(e)31 b(F)-8 b(ernandes)630 3234 y(Op)s(enSuse)28
-b(pac)m(k)-5 b(aging)150 3396 y(T)d(ak)m(eshi)31 b(Enomoto,)h
-(Alexander)e(Hansen)630 3506 y(Mac)h(OS)f(pac)m(k)-5
-b(aging)150 3667 y(Eric)30 b(Blak)m(e)68 b(Auto)s(conf/M4)32
-b(help)150 3829 y(Ga)m(vin)f(Burris,)f(Kyle)h(Wilco)m(x)630
-3939 y(RHEL)f(and)g(Cen)m(tOS)g(build)f(scripts)h(and)g(bug)g(rep)s
-(orts.)275 4126 y(Please)h(let)g(me)g(kno)m(w)f(if)h(y)m(our)f(name)g
-(w)m(as)h(omitted!)150 4362 y FB(5.2)68 b(Prop)t(osals)46
-b(for)f(Institutional)h(F)-11 b(unding)150 4522 y FC(NSF)27
-b FD(has)f(funded)e(a)j(pro)5 b(ject)26 b(\()p Fy
-(http://nco.sf.net#prp_sei)p FD(\))20 b(to)27 b(impro)m(v)m(e)g
-(Distributed)g(Data)g(Re-)150 4631 y(duction)d(&)f(Analysis)h(\()p
-FC(DDRA)p FD(\))h(b)m(y)f(ev)m(olving)h FC(NCO)f FD(in)m(to)h(a)f
-(suite)g(of)g(Scien)m(ti\014c)g(Data)i(Op)s(erators)d(called)150
-4741 y FC(SDO)p FD(.)34 b(The)f(t)m(w)m(o)j(main)d(comp)s(onen)m(ts)h
-(of)g(this)g(pro)5 b(ject)35 b(are)f FC(NCO)f FD(parallelism)i(\(Op)s
-(enMP)-8 b(,)34 b FC(MPI)p FD(\))g(and)150 4851 y(Serv)m(er-Side)27
-b FC(DDRA)i FD(\()p FC(SSDDRA)p FD(\))h(implemen)m(ted)e(through)e
-(extensions)i(to)h FC(OP)n(eND)n(AP)d FD(and)h(netCDF4.)150
-4960 y(This)j(pro)5 b(ject)30 b(will)h(dramatically)h(reduce)e
-(bandwidth)f(usage)i(for)f FC(NCO)g(DDRA)p FD(.)275 5121
-y(With)e(this)g(\014rst)f FC(NCO)h FD(prop)s(osal)g(funded,)f(the)h
-(con)m(ten)m(t)i(of)e(the)g(next)g FC(NCO)g FD(prop)s(osal)g(is)g
-(clear.)41 b(W)-8 b(e)150 5230 y(are)30 b(in)m(terested)g(in)g
-(obtaining)g FC(NASA)g FD(supp)s(ort)e(for)h FC(HDF)p
-FD(-sp)s(eci\014c)i(enhancemen)m(ts)f(to)g FC(NCO)p FD(.)g(W)-8
-b(e)30 b(plan)150 5340 y(to)h(submit)f(a)g(prop)s(osal)g(to)h(the)g
-(next)g(suitable)f FC(NASA)i(NRA)f FD(or)f FC(NSF)h FD(opp)s(ortunit)m
-(y)-8 b(.)p eop end
-%%Page: 163 165
-TeXDict begin 163 164 bop 150 -116 a FD(Chapter)30 b(5:)41
-b(Con)m(tributing)2486 b(163)275 299 y(W)-8 b(e)41 b(are)g(considering)
-f(a)h(lot)g(of)f(in)m(teresting)i(ideas)f(for)f(still)h(more)f(prop)s
-(osals.)70 b(Please)42 b(con)m(tact)150 408 y(us)37 b(if)h(y)m(ou)g
-(wish)f(to)h(b)s(e)f(in)m(v)m(olv)m(ed)i(with)f(an)m(y)g(future)f
-FC(NCO)p FD(-related)h(prop)s(osals.)62 b(Commen)m(ts)38
-b(on)g(the)150 518 y(prop)s(osals)30 b(and)g(letters)h(of)g(supp)s(ort)
-d(are)j(also)g(v)m(ery)g(w)m(elcome.)p eop end
-%%Page: 164 166
-TeXDict begin 164 165 bop eop end
-%%Page: 165 167
-TeXDict begin 165 166 bop 150 -116 a FD(Chapter)30 b(6:)41
-b(CCSM)29 b(Example)2357 b(165)150 299 y Fx(6)80 b(CCSM)53
-b(Example)150 575 y FD(This)41 b(c)m(hapter)i(illustrates)g(ho)m(w)f
-(to)g(use)g FC(NCO)g FD(to)g(pro)s(cess)g(and)f(analyze)j(the)e
-(results)f(of)i(a)f FC(CCSM)150 684 y FD(climate)32 b(sim)m(ulation.)
-390 847 y Fy(************************)o(****)o(****)o(***)o(****)o
-(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)390
-956 y(Task)47 b(0:)g(Finding)f(input)g(files)390 1066
-y(************************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)390 1176
-y(The)h(CCSM)g(model)f(outputs)g(files)g(to)h(a)h(local)e(directory)f
-(like:)390 1395 y(/ptmp/zender/archive/T42)o(x1_4)o(0)390
-1614 y(Each)i(component)e(model)h(has)h(its)g(own)g(subdirectory,)d
-(e.g.,)390 1833 y(/ptmp/zender/archive/T42)o(x1_4)o(0/at)o(m)390
-1943 y(/ptmp/zender/archive/T42)o(x1_4)o(0/cp)o(l)390
-2052 y(/ptmp/zender/archive/T42)o(x1_4)o(0/ic)o(e)390
-2162 y(/ptmp/zender/archive/T42)o(x1_4)o(0/ln)o(d)390
-2271 y(/ptmp/zender/archive/T42)o(x1_4)o(0/oc)o(n)390
-2491 y(within)i(which)g(model)h(output)f(is)h(tagged)f(with)h(the)g
-(particular)e(model)h(name)390 2710 y(/ptmp/zender/archive/T42)o(x1_4)o
-(0/at)o(m/T)o(42x1)o(_40.)o(cam)o(2.h0)o(.000)o(1-0)o(1.nc)390
-2819 y(/ptmp/zender/archive/T42)o(x1_4)o(0/at)o(m/T)o(42x1)o(_40.)o
-(cam)o(2.h0)o(.000)o(1-0)o(2.nc)390 2929 y(/ptmp/zender/archive/T42)o
-(x1_4)o(0/at)o(m/T)o(42x1)o(_40.)o(cam)o(2.h0)o(.000)o(1-0)o(3.nc)390
-3039 y(...)390 3148 y(/ptmp/zender/archive/T42)o(x1_4)o(0/at)o(m/T)o
-(42x1)o(_40.)o(cam)o(2.h0)o(.000)o(1-1)o(2.nc)390 3258
-y(/ptmp/zender/archive/T42)o(x1_4)o(0/at)o(m/T)o(42x1)o(_40.)o(cam)o
-(2.h0)o(.000)o(2-0)o(1.nc)390 3367 y(/ptmp/zender/archive/T42)o(x1_4)o
-(0/at)o(m/T)o(42x1)o(_40.)o(cam)o(2.h0)o(.000)o(2-0)o(2.nc)390
-3477 y(...)390 3696 y(or)390 3915 y(/ptmp/zender/archive/T42)o(x1_4)o
-(0/ln)o(d/T)o(42x1)o(_40.)o(clm)o(2.h0)o(.000)o(1-0)o(1.nc)390
-4025 y(/ptmp/zender/archive/T42)o(x1_4)o(0/ln)o(d/T)o(42x1)o(_40.)o
-(clm)o(2.h0)o(.000)o(1-0)o(2.nc)390 4134 y(/ptmp/zender/archive/T42)o
-(x1_4)o(0/ln)o(d/T)o(42x1)o(_40.)o(clm)o(2.h0)o(.000)o(1-0)o(3.nc)390
-4244 y(...)390 4463 y(************************)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)390
-4573 y(Task)h(1:)g(Regional)e(processing)390 4682 y
-(************************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)390 4792
-y(The)i(first)f(task)h(in)g(data)g(processing)e(is)i(often)f(creating)g
-(seasonal)f(cycles.)390 4902 y(Imagine)h(a)h(100-year)f(simulation)f
-(with)h(its)h(1200)g(monthly)f(mean)g(files.)390 5011
-y(Our)h(goal)g(is)g(to)g(create)f(a)h(single)g(file)f(containing)f(12)i
-(months)f(of)i(data.)390 5121 y(Each)f(month)f(in)h(the)g(output)f
-(file)h(is)g(the)g(mean)g(of)g(100)g(input)f(files.)390
-5340 y(Normally,)f(we)i(store)g(the)g("reduced")e(data)i(in)g(a)g
-(smaller,)f(local)g(directory.)p eop end
-%%Page: 166 168
-TeXDict begin 166 167 bop 150 -116 a FD(166)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 408 y Fy(caseid='T42x1_40')390
-518 y(#drc_in="${DATA}/archive)o(/${c)o(asei)o(d}/)o(atm")390
-628 y(drc_in="${DATA}/${caseid)o(}")390 737 y(drc_out="${DATA}/${casei)
-o(d}")390 847 y(mkdir)46 b(-p)i(${drc_out})390 956 y(cd)f(${drc_out})
-390 1176 y(Method)f(1:)h(Assume)f(all)h(data)g(in)g(directory)e
-(applies)390 1285 y(for)i(mth)g(in)g({1..12};)f(do)485
-1395 y(mm=`printf)f("\04502d")i($mth`)485 1504 y(ncra)g(-O)g(-D)g(1)h
-(-o)f(${drc_out}/${caseid}_clm$)o({mm)o(}.nc)41 b(\\)581
-1614 y(${drc_in}/${caseid}.cam2)o(.h0.)o(*-$)o({mm})o(.nc)390
-1724 y(done)47 b(#)g(end)g(loop)g(over)f(mth)390 1943
-y(Method)g(2:)h(Use)g(shell)g('globbing')e(to)i(construct)e(input)h
-(filenames)390 2052 y(for)h(mth)g(in)g({1..12};)f(do)485
-2162 y(mm=`printf)f("\04502d")i($mth`)485 2271 y(ncra)g(-O)g(-D)g(1)h
-(-o)f(${drc_out}/${caseid}_clm$)o({mm)o(}.nc)41 b(\\)581
-2381 y(${drc_in}/${caseid}.cam2)o(.h0.)o(00?)o(?-${)o(mm}.)o(nc)g(\\)
-581 2491 y(${drc_in}/${caseid}.cam2)o(.h0.)o(010)o(0-${)o(mm}.)o(nc)390
-2600 y(done)47 b(#)g(end)g(loop)g(over)f(mth)390 2819
-y(Method)g(3:)h(Construct)f(input)g(filename)f(list)i(explicitly)390
-2929 y(for)g(mth)g(in)g({1..12};)f(do)485 3039 y(mm=`printf)f
-("\04502d")i($mth`)485 3148 y(fl_lst_in='')485 3258 y(for)g(yr)h(in)f
-({1..100};)e(do)581 3367 y(yyyy=`printf)f("\04504d")i($yr`)581
-3477 y(fl_in=${caseid}.cam2.h0.)o(${yy)o(yy})o(-${m)o(m}.n)o(c)581
-3587 y(fl_lst_in="${fl_lst_in})41 b(${caseid}.cam2.h0.${yyyy}-)o(${m)o
-(m}.n)o(c")485 3696 y(done)47 b(#)h(end)e(loop)h(over)g(yr)485
-3806 y(ncra)g(-O)g(-D)g(1)h(-o)f(${drc_out}/${caseid}_clm$)o({mm)o
-(}.nc)41 b(-p)47 b(${drc_in})f(\\)581 3915 y(${fl_lst_in})390
-4025 y(done)h(#)g(end)g(loop)g(over)f(mth)390 4244 y(Make)h(sure)f(the)
-h(output)f(file)h(averages)e(correct)h(input)h(files!)390
-4354 y(ncks)g(-M)g(prints)f(global)g(metadata:)485 4573
-y(ncks)h(-M)g(${drc_out}/${caseid}_clm0)o(1.nc)390 4792
-y(The)g(input)f(files)h(ncra)f(used)h(to)g(create)f(the)h
-(climatological)d(monthly)i(mean)390 4902 y(will)h(appear)f(in)h(the)g
-(global)f(attribute)f(named)i('history'.)390 5121 y(Use)g(ncrcat)f(to)h
-(aggregate)e(the)i(climatological)d(monthly)i(means)485
-5340 y(ncrcat)h(-O)g(-D)g(1)g(\\)p eop end
-%%Page: 167 169
-TeXDict begin 167 168 bop 150 -116 a FD(Chapter)30 b(6:)41
-b(CCSM)29 b(Example)2357 b(167)581 299 y Fy(${drc_out}/${caseid}_clm)o
-(??.n)o(c)42 b(${drc_out}/${caseid}_cl)o(m_01)o(12.n)o(c)390
-518 y(Finally,)k(create)g(climatological)e(means)i(for)h(reference.)390
-628 y(The)g(climatological)d(time-mean:)485 847 y(ncra)j(-O)g(-D)g(1)h
-(\\)581 956 y(${drc_out}/${caseid}_clm)o(_011)o(2.n)o(c)42
-b(${drc_out}/${caseid}_clm)o(.nc)390 1176 y(The)47 b(climatological)d
-(zonal-mean:)485 1395 y(ncwa)j(-O)g(-D)g(1)h(-a)f(lon)g(\\)581
-1504 y(${drc_out}/${caseid}_clm)o(.nc)41 b(${drc_out}/${caseid}_clm_)o
-(x.nc)390 1724 y(The)47 b(climatological)d(time-)i(and)h(spatial-mean:)
-485 1943 y(ncwa)g(-O)g(-D)g(1)h(-a)f(lon,lat,time)e(-w)i(gw)g(\\)581
-2052 y(${drc_out}/${caseid}_clm)o(.nc)41 b(${drc_out}/${caseid}_clm_)o
-(xyt.)o(nc)390 2271 y(This)47 b(file)f(contains)g(only)g(scalars,)g
-(e.g.,)g("global)g(mean)h(temperature",)390 2381 y(used)g(for)g
-(summarizing)d(global)i(results)g(of)h(a)h(climate)e(experiment.)390
-2600 y(Climatological)e(monthly)i(anomalies)f(=)i(Annual)g(Cycle:)390
-2710 y(Subtract)f(climatological)d(mean)k(from)g(climatological)d
-(monthly)h(means.)390 2819 y(Result)h(is)h(annual)f(cycle,)g(i.e.,)h
-(climate-mean)d(has)j(been)g(removed.)485 3039 y(ncbo)g(-O)g(-D)g(1)h
-(-o)f(${drc_out}/${caseid}_clm_)o(011)o(2_an)o(m.nc)41
-b(\\)581 3148 y(${drc_out}/${caseid}_clm)o(_011)o(2.n)o(c)h
-(${drc_out}/${caseid}_clm)o(_xyt)o(.nc)390 3367 y
-(************************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)390 3477
-y(Task)47 b(2:)g(Correcting)e(monthly)h(averages)390
-3587 y(************************)o(****)o(****)o(***)o(****)o(****)o
-(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)390
-3696 y(The)h(previous)e(step)i(appoximates)e(all)i(months)f(as)h(being)
-f(equal,)g(so,)h(e.g.,)390 3806 y(February)f(weighs)g(slightly)f(too)i
-(much)g(in)g(the)g(climatological)d(mean.)390 3915 y(This)j
-(approximation)d(can)j(be)g(removed)f(by)h(weighting)e(months)h
-(appropriately.)390 4025 y(We)h(must)g(add)g(the)g(number)f(of)h(days)g
-(per)f(month)h(to)g(the)g(monthly)f(mean)g(files.)390
-4134 y(First,)g(create)g(a)i(shell)e(variable)g(dpm:)390
-4354 y(unset)g(dpm)h(#)h(Days)e(per)h(month)390 4463
-y(declare)f(-a)h(dpm)390 4573 y(dpm=\(0)f(31)h(28.25)g(31)g(30)g(31)g
-(30)g(31)h(31)f(30)g(31)g(30)g(31\))g(#)h(Allows)e(1-based)g(indexing)
-390 4792 y(Method)g(1:)h(Create)f(dpm)h(directly)f(in)h(climatological)
-d(monthly)i(means)390 4902 y(for)h(mth)g(in)g({1..12};)f(do)485
-5011 y(mm=`printf)f("\04502d")i(${mth}`)485 5121 y(ncap2)g(-O)g(-s)g
-("dpm=0.0*date+${dpm[${mth)o(}]}")41 b(\\)581 5230 y
-(${drc_out}/${caseid}_clm)o(${mm)o(}.n)o(c)h(${drc_out}/${caseid}_clm)o
-(${mm)o(}.n)o(c)390 5340 y(done)47 b(#)g(end)g(loop)g(over)f(mth)p
-eop end
-%%Page: 168 170
-TeXDict begin 168 169 bop 150 -116 a FD(168)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 408 y Fy(Method)46 b(2:)h(Create)f(dpm)
-h(by)g(aggregating)e(small)i(files)390 518 y(for)g(mth)g(in)g({1..12};)
-f(do)485 628 y(mm=`printf)f("\04502d")i(${mth}`)485 737
-y(ncap2)g(-O)g(-v)g(-s)g("dpm=${dpm[${mth}]}")c(~/nco/data/in.nc)g(\\)
-581 847 y(${drc_out}/foo_${mm}.nc)390 956 y(done)k(#)g(end)g(loop)g
-(over)f(mth)390 1066 y(ncecat)g(-O)h(-D)g(1)h(-p)f(${drc_out})e(-n)i
-(12,2,2)f(foo_${mm}.nc)f(foo.nc)390 1176 y(ncrename)h(-O)h(-D)g(1)g(-d)
-h(record,time)c(${drc_out}/foo.nc)390 1285 y(ncatted)i(-O)h(-h)g(\\)485
-1395 y(-a)h(long_name,dpm,o,c,"Days)41 b(per)47 b(month")f(\\)485
-1504 y(-a)i(units,dpm,o,c,"days")42 b(\\)485 1614 y
-(${drc_out}/${caseid}_clm_0)o(112.)o(nc)390 1724 y(ncks)47
-b(-A)g(-v)g(dpm)g(${drc_out}/foo.nc)c(${drc_out}/${caseid}_clm)o(_011)o
-(2.nc)390 1943 y(Method)j(3:)h(Create)f(small)h(netCDF)f(file)g(using)h
-(ncgen)390 2052 y(cat)g(>)g(foo.cdl)f(<<)h('EOF')390
-2162 y(netcdf)f(foo)h({)390 2271 y(dimensions:)390 2381
-y(time=unlimited;)390 2491 y(variables:)390 2600 y(float)f
-(dpm\(time\);)390 2710 y(dpm:long_name="Days)d(per)j(month";)390
-2819 y(dpm:units="days";)390 2929 y(data:)390 3039 y
-(dpm=31,28.25,31,30,31,30)o(,31,)o(31,3)o(0,3)o(1,30)o(,31;)390
-3148 y(})390 3258 y(EOF)390 3367 y(ncgen)g(-b)i(-o)f(foo.nc)f(foo.cdl)
-390 3477 y(ncks)h(-A)g(-v)g(dpm)g(${drc_out}/foo.nc)c
-(${drc_out}/${caseid}_clm)o(_011)o(2.nc)390 3696 y(Another)j(way)h(to)g
-(get)g(correct)f(monthly)f(weighting)h(is)h(to)g(average)f(daily)390
-3806 y(output)g(files,)g(if)h(available.)390 4025 y
-(************************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)390 4134
-y(Task)g(3:)g(Regional)e(processing)390 4244 y
-(************************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)390 4354
-y(Let's)h(say)h(you)g(are)g(interested)e(in)i(examining)f(the)g
-(California)f(region.)390 4463 y(Hyperslab)g(your)i(dataset)f(to)h
-(isolate)f(the)h(appropriate)d(latitude/longitudes.)485
-4682 y(ncks)j(-O)g(-D)g(1)h(-d)f(lat,30.0,37.0)d(-d)j(lon,240.0,270.0)d
-(\\)581 4792 y(${drc_out}/${caseid}_clm)o(_011)o(2.n)o(c)e
-(${drc_out}/${caseid}_clm)o(_011)o(2_C)o(al.n)o(c)390
-5011 y(The)47 b(dataset)f(is)h(now)g(much)f(smaller!)390
-5121 y(To)h(examine)f(particular)f(metrics.)390 5340
-y(************************)o(****)o(****)o(***)o(****)o(****)o(***)o
-(****)o(****)o(***)o(****)o(****)o(***)o(****)p eop end
-%%Page: 169 171
-TeXDict begin 169 170 bop 150 -116 a FD(Chapter)30 b(6:)41
-b(CCSM)29 b(Example)2357 b(169)390 299 y Fy(Task)47 b(4:)g(Accessing)e
-(data)i(stored)f(remotely)390 408 y(************************)o(****)o
-(****)o(***)o(****)o(****)o(***)o(****)o(****)o(***)o(****)o(****)o
-(***)o(****)390 518 y(OPeNDAP)g(server)g(examples:)390
-737 y(UCI)h(DAP)g(servers:)390 847 y(ncks)g(-M)g(-p)g
-(http://dust.ess.uci.edu/)o(cgi-)o(bin/)o(dod)o(s/np)o(h-do)o(ds/)o
-(dods)o(data)41 b(in.nc)390 956 y(ncrcat)46 b(-O)h(-C)g(-D)h(3)f(-p)g
-(http://dust.ess.uci.edu/c)o(gi-b)o(in/d)o(ods)o(/nph)o(-dod)o(s/d)o
-(odsd)o(ata)41 b(\\)485 1066 y(-l)48 b(/tmp)e(in.nc)h(in.nc)f(~/foo.nc)
-390 1285 y(Unidata)g(DAP)h(servers:)390 1395 y(ncks)g(-M)g(-p)g
-(http://motherlode.ucar.e)o(du:8)o(080/)o(thr)o(edds)o(/dod)o(sC/)o
-(test)o(dods)41 b(in.nc)390 1504 y(ncrcat)46 b(-O)h(-C)g(-D)h(3)f(-p)g
-(http://motherlode.ucar.ed)o(u:80)o(80/t)o(hre)o(dds/)o(dods)o(C/t)o
-(estd)o(ods)41 b(\\)485 1614 y(-l)48 b(/tmp)e(in.nc)h(in.nc)f(~/foo.nc)
-390 1833 y(NOAA)h(DAP)g(servers:)390 1943 y(ncwa)g(-O)g(-C)g(-a)g
-(lat,lon,time)e(-d)i(lon,-10.,10.)d(-d)j(lat,-10.,10.)e(-l)i(/tmp)g(-p)
-g(\\)390 2052 y(http://www.esrl.noaa.gov)o(/psd)o(/thr)o(edd)o(s/do)o
-(dsC/)o(Dat)o(aset)o(s/nc)o(ep.)o(rean)o(alys)o(is.)o(dail)o(yavg)o
-(s/s)o(urfa)o(ce)41 b(\\)390 2162 y(pres.sfc.1969.nc)i(~/foo.nc)390
-2381 y(LLNL)k(PCMDI)f(IPCC)h(OPeNDAP)e(Data)i(Portal:)390
-2491 y(ncks)g(-M)g(-p)g(http://username:password)o(@esg)o(cet.)o(lln)o
-(l.go)o(v/cg)o(i-b)o(in/d)o(ap-c)o(gi.)o(py/i)o(pcc4)o(/sr)o(esa1)o
-(b/n)o(car_)o(ccsm)o(3_0)41 b(pcmdi.ipcc4.ncar_ccsm3_0.)o(sres)o(a1b)o
-(.run)o(1.at)o(m.m)o(o.xm)o(l)390 2710 y(Earth)46 b(System)g(Grid)h
-(\(ESG\):)f(http://www.earthsystemgri)o(d.or)o(g)390
-2929 y(caseid='b30.025.ES01')390 3039 y(CCSM3.0)g(1\045)h(increasing)e
-(CO2)i(run,)g(T42_gx1v3,)e(200)h(years)h(starting)e(in)j(year)e(400)390
-3148 y(Atmospheric)f(post-processed)f(data,)i(monthly)g(averages,)f
-(e.g.,)390 3258 y(/data/zender/tmp/b30.025)o(.ES0)o(1.ca)o(m2.)o(h0.T)o
-(REFH)o(T.0)o(400-)o(01_c)o(at_)o(0449)o(-12.)o(nc)390
-3367 y(/data/zender/tmp/b30.025)o(.ES0)o(1.ca)o(m2.)o(h0.T)o(REFH)o
-(T.0)o(400-)o(01_c)o(at_)o(0599)o(-12.)o(nc)390 3587
-y(ESG)i(supports)e(password-protected)e(FTP)k(access)f(by)h(registered)
-e(users)390 3696 y(NCO)i(uses)g(the)f(.netrc)h(file,)f(if)h(present,)f
-(for)h(password-protected)42 b(FTP)47 b(access)390 3806
-y(Syntax)f(for)h(accessing)e(single)h(file)h(is,)g(e.g.,)390
-3915 y(ncks)g(-O)g(-D)g(3)g(\\)485 4025 y(-p)h(ftp://climate.llnl.gov/)
-o(sres)o(a1b)o(/atm)o(/mo/)o(tas)o(/nca)o(r_cc)o(sm3)o(_0/r)o(un1)41
-b(\\)485 4134 y(-l)48 b(/tmp)e(tas_A1.SRESA1B_1.CCSM.atm)o(m.20)o(00-0)
-o(1_c)o(at_2)o(099-)o(12.)o(nc)c(~/foo.nc)390 4354 y(#)47
-b(Average)f(surface)g(air)h(temperature)e(tas)i(for)g(SRESA1B)e
-(scenario)390 4463 y(#)i(This)g(loop)g(is)g(illustrative)d(and)j(will)g
-(not)g(work)f(until)h(NCO)g(correctly)390 4573 y(#)g(translates)e('*')i
-(to)h(FTP)e('mget')h(all)f(remote)h(files)390 4682 y(for)g(var)g(in)g
-('tas';)f(do)390 4792 y(for)h(scn)g(in)g('sresa1b';)e(do)390
-4902 y(for)i(mdl)g(in)g('cccma_cgcm3_1)d(cccma_cgcm3_1_t63)f(cnrm_cm3)j
-(csiro_mk3_0)e(\\)390 5011 y(gfdl_cm2_0)h(gfdl_cm2_1)g(giss_aom)h
-(giss_model_e_h)d(giss_model_e_r)h(\\)390 5121 y(iap_fgoals1_0_g)g
-(inmcm3_0)h(ipsl_cm4)h(miroc3_2_hires)e(miroc3_2_medres)f(\\)390
-5230 y(miub_echo_g)i(mpi_echam5)g(mri_cgcm2_3_2a)f(ncar_ccsm3_0)g
-(ncar_pcm1)h(\\)390 5340 y(ukmo_hadcm3)g(ukmo_hadgem1';)f(do)p
-eop end
-%%Page: 170 172
-TeXDict begin 170 171 bop 150 -116 a FD(170)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)390 299 y Fy(for)47 b(run)g(in)g('1';)g(do)
-772 408 y(ncks)f(-R)i(-O)f(-D)g(3)g(-p)h(ftp://climate.llnl.gov/)o
-(${sc)o(n}/)o(atm/)o(mo/$)o({va)o(r}/$)o({mdl)o(}/r)o(un${)o(run)o(})42
-b(-l)47 b(${DATA}/${scn}/atm/mo/${v)o(ar})o(/${m)o(dl}/)o(run)o(${ru)o
-(n})42 b('*')k(${scn}_${mdl}_${run}_${var)o(}_${)o(yyy)o(ymm})o(_${y)o
-(yyy)o(mm}.)o(nc)390 518 y(done)h(#)g(end)g(loop)g(over)f(run)390
-628 y(done)h(#)g(end)g(loop)g(over)f(mdl)390 737 y(done)h(#)g(end)g
-(loop)g(over)f(scn)390 847 y(done)h(#)g(end)g(loop)g(over)f(var)390
-1066 y(cd)h(sresa1b/atm/mo/tas/ukmo_h)o(adcm)o(3/r)o(un1/)390
-1176 y(ncks)g(-H)g(-m)g(-v)g(lat,lon,lat_bnds,lon_bnds)41
-b(-M)47 b(tas_A1.nc)f(|)h(m)390 1285 y(bds)g(-x)g(096)g(-y)g(073)g(-m)g
-(33)g(-o)h(${DATA}/data/dst_3.75x2)o(.5.n)o(c)42 b(#)47
-b(ukmo_hadcm3)390 1395 y(ncview)f(${DATA}/data/dst_3.75x2.5)o(.nc)390
-1614 y(#)h(msk_rgn)f(is)h(California)e(mask)i(on)g(ukmo_hadcm3)e(grid)
-390 1724 y(#)i(area)g(is)g(correct)f(area)h(weight)f(on)h(ukmo_hadcm3)e
-(grid)390 1833 y(ncks)i(-A)g(-v)g(area,msk_rgn)d
-(${DATA}/data/dst_3.75x2.5.)o(nc)e(\\)390 1943 y
-(${DATA}/sresa1b/atm/mo/t)o(as/u)o(kmo_)o(had)o(cm3/)o(run1)o(/ar)o
-(ea_m)o(sk_u)o(kmo)o(_had)o(cm3.)o(nc)390 2162 y(Template)k(for)g
-(standardized)f(data:)390 2271 y(${scn}_${mdl}_${run}_${v)o(ar}_)o
-(${yy)o(yym)o(m}_$)o({yyy)o(ymm)o(}.nc)390 2491 y(e.g.,)h(raw)h(data)
-390 2600 y(${DATA}/sresa1b/atm/mo/t)o(as/u)o(kmo_)o(had)o(cm3/)o(run1)o
-(/ta)o(s_A1)o(.nc)390 2710 y(becomes)f(standardized)e(data)390
-2929 y(Level)i(0:)i(raw)e(from)h(IPCC)g(site--no)e(changes)h(except)g
-(for)h(name)820 3039 y(Make)f(symbolic)g(link)g(name)h(match)f(raw)h
-(data)390 3148 y(Template:)e(${scn}_${mdl}_${run}_${va)o(r}_$)o({yyy)o
-(ymm)o(}_${)o(yyyy)o(mm})o(.nc)390 3367 y(ln)i(-s)g(-f)h(tas_A1.nc)d
-(sresa1b_ukmo_hadcm3_run1)o(_ta)o(s_20)o(0101)o(_20)o(9911)o(.nc)390
-3477 y(area_msk_ukmo_hadcm3.nc)390 3696 y(Level)h(I:)i(Add)e(all)h
-(variables)f(\(but)g(not)h(standardized)e(in)i(time\))820
-3806 y(to)g(file)f(containing)f(msk_rgn)h(and)h(area)390
-3915 y(Template:)e(${scn}_${mdl}_${run}_${yy)o(yymm)o(}_${)o(yyy)o
-(ymm})o(.nc)390 4134 y(/bin/cp)h(area_msk_ukmo_hadcm3.nc)41
-b(sresa1b_ukmo_hadcm3_run1_)o(2001)o(01_2)o(099)o(11.n)o(c)390
-4244 y(ncks)47 b(-A)g(-v)g(tas)g(sresa1b_ukmo_hadcm3_run1)o(_tas)o(_20)
-o(0101)o(_209)o(911)o(.nc)41 b(\\)1106 4354 y(sresa1b_ukmo_hadcm3_run1)
-o(_200)o(101)o(_209)o(911.)o(nc)390 4463 y(ncks)47 b(-A)g(-v)g(pr)95
-b(sresa1b_ukmo_hadcm3_run1)o(_pr_)o(200)o(101_)o(2099)o(11.)o(nc)42
-b(\\)1106 4573 y(sresa1b_ukmo_hadcm3_run1)o(_200)o(101)o(_209)o(911.)o
-(nc)390 4792 y(If)47 b(already)f(have)h(file)f(then:)390
-4902 y(mv)h(sresa1b_ukmo_hadcm3_run1_)o(2001)o(01_)o(2099)o(11.n)o(c)42
-b(foo.nc)390 5011 y(/bin/cp)k(area_msk_ukmo_hadcm3.nc)41
-b(sresa1b_ukmo_hadcm3_run1_)o(2001)o(01_2)o(099)o(11.n)o(c)390
-5121 y(ncks)47 b(-A)g(-v)g(tas,pr)f(foo.nc)g(sresa1b_ukmo_hadcm3_run1_)
-o(2001)o(01_)o(2099)o(11.n)o(c)390 5340 y(Level)g(II:)h(Correct)f(#)i
-(years,)e(months)p eop end
-%%Page: 171 173
-TeXDict begin 171 172 bop 150 -116 a FD(Chapter)30 b(6:)41
-b(CCSM)29 b(Example)2357 b(171)390 299 y Fy(Template:)45
-b(${scn}_${mdl}_${run}_${va)o(r}_$)o({yyy)o(ymm)o(}_${)o(yyyy)o(mm})o
-(.nc)390 518 y(ncks)i(-d)g(time,.......)d(file1.nc)i(file2.nc)390
-628 y(ncrcat)g(file2.nc)g(file3.nc)f(sresa1b_ukmo_hadcm3_run1_)o(2000)o
-(01_)o(2099)o(12.n)o(c)390 847 y(Level)h(III:)h(Many)g(derived)e
-(products)h(from)h(level)f(II,)h(e.g.,)676 1066 y(A.)h(Global)e(mean)g
-(timeseries)676 1176 y(ncwa)h(-w)g(area)g(-a)g(lat,lon)f(\\)915
-1285 y(sresa1b_ukmo_hadcm3_run1)o(_200)o(001_)o(209)o(912.)o(nc)c(\\)
-533 1395 y(sresa1b_ukmo_hadcm3_run1_)o(2000)o(01_)o(2099)o(12_x)o(y.n)o
-(c)676 1614 y(B.)48 b(Califoria)d(average)h(timeseries)676
-1724 y(ncwa)h(-m)g(msk_rgn)f(-w)h(area)g(-a)g(lat,lon)f(\\)915
-1833 y(sresa1b_ukmo_hadcm3_run1)o(_200)o(001_)o(209)o(912.)o(nc)c(\\)
-533 1943 y(sresa1b_ukmo_hadcm3_run1_)o(2000)o(01_)o(2099)o(12_x)o(y_C)o
-(al.n)o(c)p eop end
-%%Page: 172 174
-TeXDict begin 172 173 bop eop end
-%%Page: 173 175
-TeXDict begin 173 174 bop 150 -116 a FD(Chapter)30 b(7:)41
-b(References)2581 b(173)150 299 y Fx(7)80 b(References)330
-533 y FD([ZeM07])75 b(Zender,)37 b(C.)f(S.,)j(and)d(H.)g(J.)h(Mangalam)
-h(\(2007\),)j(Scaling)c(Prop)s(erties)g(of)f(Common)330
-643 y(Statistical)42 b(Op)s(erators)d(for)g(Gridded)f(Datasets,)44
-b(In)m(t.)68 b(J.)40 b(High)f(P)m(erform.)68 b(Comput.)f(Appl.,)330
-752 y(21\(4\),)33 b(485-498,)g(doi:10.1177/109434)q(20)q(07)q(08)q(380)
-q(2.)330 887 y([Zen08])83 b(Zender,)43 b(C.)e(S.)g(\(2008\),)47
-b(Analysis)41 b(of)g(Self-describing)h(Gridded)e(Geoscience)j(Data)330
-996 y(with)58 b(netCDF)i(Op)s(erators)e(\(NCO\),)h(En)m(viron.)125
-b(Mo)s(dell.)i(Soft)m(w.,)66 b(23\(10\),)j(1338-1342,)330
-1106 y(doi:10.1016/j.en)m(vsoft.2008)q(.0)q(3.0)q(04)q(.)330
-1240 y([WZJ07])58 b(W)-8 b(ang,)30 b(D.)f(L.,)g(C.)f(S.)g(Zender,)g
-(and)f(S.)h(F.)h(Jenks)f(\(2007\),)j(D)m(AP-enabled)f(Serv)m(er-side)
-330 1350 y(Data)40 b(Reduction)e(and)f(Analysis,)k(Pro)s(ceedings)d(of)
-g(the)g(23rd)g(AMS)g(Conference)g(on)g(In)m(terac-)330
-1460 y(tiv)m(e)f(Information)e(and)f(Pro)s(cessing)h(Systems)g(\(I)s
-(IPS\))g(for)g(Meteorology)-8 b(,)40 b(Oceanograph)m(y)-8
-b(,)38 b(and)330 1569 y(Hydrology)-8 b(,)46 b(P)m(ap)s(er)41
-b(3B.2,)46 b(Jan)m(uary)41 b(14-18,)47 b(San)41 b(An)m(tonio,)46
-b(TX.)41 b(American)h(Meteorological)330 1679 y(So)s(ciet)m(y)-8
-b(,)32 b(AMS)f(Press,)f(Boston,)h(MA.)330 1813 y([ZMW06])78
-b(Zender,)39 b(C.)f(S.,)i(H.)f(Mangalam,)j(and)37 b(D.)i(L.)f(W)-8
-b(ang)39 b(\(2006\),)k(Impro)m(ving)38 b(Scaling)330
-1923 y(Prop)s(erties)45 b(of)g(Common)f(Statistical)k(Op)s(erators)c
-(for)h(Gridded)f(Geoscience)j(Datasets,)k(Eos)330 2032
-y(T)-8 b(rans.)40 b(A)m(GU,)32 b(87\(52\),)h(F)-8 b(all)32
-b(Meet.)42 b(Suppl.,)29 b(Abstract)i(IN53B-0827.)330
-2167 y([ZeW07])75 b(Zender,)37 b(C.)f(S.,)j(and)c(D.)j(L.)e(W)-8
-b(ang)38 b(\(2007\),)j(High)c(p)s(erformance)f(distributed)f(data)330
-2276 y(reduction)j(and)f(analysis)h(with)g(the)g(netCDF)g(Op)s(erators)
-g(\(NCO\),)g(Pro)s(ceedings)g(of)g(the)g(23rd)330 2386
-y(AMS)31 b(Conference)h(on)f(In)m(teractiv)m(e)j(Information)d(and)g
-(Pro)s(cessing)g(Systems)g(\(I)s(IPS\))g(for)g(Mete-)330
-2496 y(orology)-8 b(,)33 b(Oceanograph)m(y)-8 b(,)32
-b(and)e(Hydrology)-8 b(,)33 b(P)m(ap)s(er)d(3B.4,)i(Jan)m(uary)f
-(14-18,)i(San)d(An)m(tonio,)i(TX.)330 2605 y(American)f(Meteorological)
-k(So)s(ciet)m(y)-8 b(,)32 b(AMS)e(Press,)h(Boston,)g(MA.)330
-2740 y([WZJ06])86 b(W)-8 b(ang,)47 b(D.)c(L.,)j(C.)c(S.)h(Zender,)h
-(and)e(S.)g(F.)h(Jenks)f(\(2006\),)49 b(Serv)m(er-side)42
-b(netCDF)330 2849 y(Data)36 b(Reduction)e(and)g(Analysis,)i(Eos)e(T)-8
-b(rans.)52 b(A)m(GU,)35 b(87\(52\),)j(F)-8 b(all)36 b(Meet.)53
-b(Suppl.,)34 b(Abstract)330 2959 y(IN53B-0826.)330 3093
-y([WZJ073])84 b(W)-8 b(ang,)46 b(D.)c(L.,)i(C.)d(S.)g(Zender,)i(and)e
-(S.)g(F.)h(Jenks)f(\(2007\),)46 b(Serv)m(er-side)c(parallel)330
-3203 y(data)c(reduction)f(and)g(analysis,)j(in)d(Adv)-5
-b(ances)37 b(in)g(Grid)g(and)g(P)m(erv)-5 b(asiv)m(e)39
-b(Computing,)f(Second)330 3313 y(In)m(ternational)27
-b(Conference,)g(GPC)e(2007,)k(P)m(aris,)e(F)-8 b(rance,)28
-b(Ma)m(y)f(2-4,)h(2007,)g(Pro)s(ceedings.)40 b(IEEE)330
-3422 y(Lecture)c(Notes)g(in)f(Computer)f(Science,)k(v)m(ol.)56
-b(4459,)38 b(edited)e(b)m(y)f(C.)g(Cerin)f(and)h(K.-C.)g(Li,)i(pp.)330
-3532 y(744-750,)d(Springer-V)-8 b(erlag,)31 b(Berlin/Heidelb)s(erg,)h
-(doi:10.1007/978-3-5)q(40)q(-72)q(36)q(0-)q(8)p 3330
-3532 28 4 v 46 w(67.)330 3666 y([WZJ074])69 b(W)-8 b(ang,)37
-b(D.)d(L.,)i(C.)d(S.)h(Zender)f(and)h(S.)f(F.)i(Jenks)e(\(2007\),)38
-b(A)c(System)g(for)f(Scripted)330 3776 y(Data)i(Analysis)e(at)h(Remote)
-h(Data)f(Cen)m(ters,)h(Eos)e(T)-8 b(rans.)49 b(A)m(GU,)34
-b(88\(52\),)j(F)-8 b(all)35 b(Meet.)50 b(Suppl.,)330
-3885 y(Abstract)31 b(IN11B-0469.)330 4020 y([WZJ081])55
-b(W)-8 b(ang,)29 b(D.)e(L.,)h(C.)f(S.)f(Zender)g(and)g(S.)h(F.)g(Jenks)
-f(\(2008\),)k(Cluster)d(W)-8 b(ork\015o)m(w)28 b(Execu-)330
-4130 y(tion)23 b(of)g(Retargeted)i(Data)g(Analysis)e(Scripts,)h(Pro)s
-(ceedings)f(of)g(the)g(8th)g(IEEE)f(In)m(t'l)i(Symp)s(osium)330
-4239 y(on)30 b(Cluster)f(Computing)g(and)g(the)h(Grid)f(\(IEEE)g
-(CCGRID)h('08\),)h(pp.)39 b(449-458,)33 b(Ly)m(on,)e(F)-8
-b(rance,)330 4349 y(Ma)m(y)32 b(2008.)330 4483 y([WZJ091])86
-b(W)-8 b(ang,)47 b(D.)c(L.,)j(C.)c(S.)g(Zender,)j(and)d(S.)g(F.)h
-(Jenks)f(\(2009\),)48 b(E\016cien)m(t)43 b(Clustered)330
-4593 y(Serv)m(er-side)26 b(Data)i(Analysis)e(W)-8 b(ork\015o)m(ws)27
-b(using)e(SW)-10 b(AMP)i(,)27 b(Earth)f(Sci.)39 b(Inform.,)26
-b(2\(3\),)j(141-155,)330 4702 y(doi:10.1007/s12145-0)q(09)q(-00)q(21)q
-(-z)q(.)p eop end
-%%Page: 174 176
-TeXDict begin 174 175 bop eop end
-%%Page: 175 177
-TeXDict begin 175 176 bop 150 -116 a FD(General)31 b(Index)2902
-b(175)150 299 y Fx(General)53 b(Index)150 610 y Fe(")150
-728 y Ft(")26 b Fu(\(double)f(quote\))7 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)34 b Fu(121)150 986 y FB(#)150
-1104 y Ft(#include)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fu(69)150 1350
-y FB($)150 1468 y Ft($)26 b Fu(\(wildcard)g(c)n(haracter\))18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(36)150 1733 y
-FB(\045)150 1851 y Ft(\045)26 b Fu(\(mo)r(dulus\))14
-b Fb(:)e(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40
-b Fu(113)150 2109 y FB(')150 2227 y Ft(')26 b Fu(\(end)f(quote\))7
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(121)150 2492 y FB(*)150 2609 y Ft(*)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)37 b Fu(123)150 2697 y Ft(*)26 b Fu(\(\014lename)g
-(expansion\))11 b Fb(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b
-Fu(36)150 2785 y Ft(*)26 b Fu(\(m)n(ultiplication\))7
-b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(113)150 2873 y Ft(*)26 b Fu(\(wildcard)g(c)n(haracter\))18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(36)150 3110 y
-Fe(+)150 3228 y Ft(+)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37
-b Fu(123)150 3316 y Ft(+)26 b Fu(\(addition\))17 b Fb(:)c(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 b
-Fu(113)150 3403 y Ft(+)26 b Fu(\(wildcard)g(c)n(haracter\))18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(36)150 3640 y
-FB(-)150 3758 y Ft(-)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37
-b Fu(123)150 3846 y Ft(-)26 b Fu(\(subtraction\))17 b
-Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(113)150 3934 y Ft(--3)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-34 b Fu(33)150 4022 y Ft(--4)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)34 b Fu(33)150 4110 y Ft(--64bit)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41
-b Fu(33)150 4197 y Ft(--abc)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44
-b Fu(136)150 4285 y Ft(--alphabetize)14 b Fb(:)i(:)d(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(136)150 4373 y Ft(--apn)13
-b Fb(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)40
-b Fu(13,)26 b(62,)h(139)150 4461 y Ft(--append)e Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)50 b Fu(13,)26
-b(62,)h(139)150 4549 y Ft(--auxiliary)d Fb(:)13 b(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fu(43)150
-4637 y Ft(--auxiliary)28 b Fi(lon_min)p Ft(,)p Fi(lon_max)p
-Ft(,)p Fi(lat_min)p Ft(,)p Fi(lat_m)q(ax)310 4724 y Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fu(43)150 4812 y Ft(--binary)10
-b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)37 b Fu(136)150 4900 y Ft(--bnr)18 b Fb(:)c(:)f(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44
-b Fu(136)150 4988 y Ft(--chunk_dimension)6 b Fb(:)17
-b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fu(51)150
-5076 y Ft(--chunk_map)24 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fu(51)150 5164 y Ft(--chunk_policy)14
-b Fb(:)i(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40
-b Fu(51)150 5252 y Ft(--chunk_scalar)14 b Fb(:)i(:)d(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fu(51)150 5340 y Ft(--cnk_dmn)9
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)36 b Fu(51)2025 610 y Ft(--cnk_map)9 b Fb(:)15
-b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)36 b Fu(51)2025 698 y Ft(--cnk_map)27 b Fi(cnk_map)17
-b Fb(:)e(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fu(52)2025
-785 y Ft(--cnk_plc)9 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(51)2025 873
-y Ft(--cnk_scl)9 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(51)2025 961 y
-Ft(--coords)18 b Fb(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)45 b Fu(38,)27 b(65)2025 1048 y Ft(--crd)9
-b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)35 b Fu(38,)27 b(65)2025 1136 y Ft(--data)15
-b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)42 b Fu(137)2025 1223 y Ft(--dbg_lvl)27
-b Fi(debug-level)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)38 b Fu(11,)26 b(19,)h(25)2025 1311 y
-Ft(--debug-level)h Fi(debug-level)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fu(11,)27 b(19)2025
-1399 y Ft(--deflate)9 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(54)2025 1486
-y Ft(--dfl_lvl)9 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(54)2025 1574 y
-Ft(--dimension)28 b Fi(dim)p Ft(,[)p Fi(min)9 b Ft(],[)p
-Fi(max)g Ft(],)p Fi(stride)17 b Fb(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)34
-b Fu(40)2025 1661 y Ft(--dimension)28 b Fi(dim)p Ft(,[)p
-Fi(min)9 b Ft(][,[)p Fi(max)g Ft(][,[)p Fi(stride)g Ft(]]])2187
-1749 y Fb(:)k(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
-b Fu(39,)27 b(41,)f(42,)h(45)2025 1836 y Ft(--dmn)f Fi(dim)p
-Ft(,[)p Fi(min)9 b Ft(],[)p Fi(max)g Ft(],)p Fi(stride)15
-b Fb(:)j(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
-b Fu(40)2025 1924 y Ft(--dmn)26 b Fi(dim)p Ft(,[)p Fi(min)9
-b Ft(][,[)p Fi(max)g Ft(][,[)p Fi(stride)g Ft(]]])26
-b Fb(:)14 b(:)f(:)47 b Fu(39,)27 b(41,)2178 2011 y(42,)g(45)2025
-2099 y Ft(--exclude)14 b Fb(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)40 b Fu(36,)27 b(139)2025 2186 y Ft(--file_format)16
-b Fb(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43
-b Fu(33)2025 2274 y Ft(--file_list)24 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(63)2025
-2361 y Ft(--fix_rec_dmn)14 b Fb(:)i(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)41 b Fu(137)2025 2449 y Ft(--fl_bnr)10 b
-Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)37 b Fu(136)2025 2537 y Ft(--fl_fmt)12 b
-Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)39 b Fu(33)2025 2624 y Ft(--fl_lst_in)24
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-48 b Fu(63)2025 2712 y Ft(--fl_out)27 b Fi(fl_out)d Fb(:)13
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fu(27)2025
-2799 y Ft(--fl_spt)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fu(68)2025 2887
-y Ft(--fnc_tbl)7 b Fb(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fu(115)2025 2975 y Ft(--fortran)9
-b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)36 b Fu(38)2025 3062 y Ft(--glb_mtd_spr)14
-b Fb(:)i(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
-b Fu(130)2025 3150 y Ft(--hdr_pad)27 b Fi(hdr_pad)17
-b Fb(:)e(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fu(23)2025
-3237 y Ft(--header_pad)28 b Fi(hdr_pad)g Fb(:)14 b(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-45 b Fu(23)2025 3325 y Ft(--hieronymus)17 b Fb(:)e(:)f(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(137)2025 3413
-y Ft(--history)9 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(63)2025 3500 y
-Ft(--hst)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fu(63)2025
-3588 y Ft(--lcl)26 b Fi(output-path)17 b Fb(:)f(:)e(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)35 b Fu(28)2025 3675 y Ft(--local)27 b Fi(output-path)32
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fu(28)2025 3763
-y Ft(--map)26 b Fi(cnk_map)k Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)45 b Fu(52)2025 3851 y Ft(--map)26
-b Fi(pck_map)h Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)44 b Fu(143)2025 3938 y Ft(--mask-value)28 b Fi(mask_val)c
-Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)40 b Fu(156)2025 4026 y Ft(--mask-variable)29
-b Fi(mask_var)k Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)50 b Fu(155)2025 4114 y Ft(--mask_comparator)29
-b Fi(mask_comp)d Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)42 b Fu(156)2025 4201 y Ft(--mask_condition)29
-b Fi(mask_cond)k Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49
-b Fu(155,)27 b(156)2025 4289 y Ft(--mask_value)h Fi(mask_val)c
-Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)40 b Fu(156)2025 4376 y Ft(--mask_variable)29
-b Fi(mask_var)k Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)50 b Fu(155)2025 4464 y Ft(--metadata)24
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-49 b Fu(138)2025 4552 y Ft(--Metadata)24 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(138)2025
-4639 y Ft(--mk_rec_dmn)28 b Fi(dim)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)36 b Fu(137)2025 4727 y Ft(--msk_cmp_typ)28
-b Fi(mask_comp)17 b Fb(:)e(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fu(156)2025 4814
-y Ft(--msk_cnd)27 b Fi(mask_cond)j Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45
-b Fu(155)2025 4902 y Ft(--msk_cnd_sng)28 b Fi(mask_cond)17
-b Fb(:)e(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)35 b Fu(156)2025 4990 y Ft(--msk_nm)27 b
-Fi(mask_var)15 b Fb(:)g(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33
-b Fu(155)2025 5077 y Ft(--msk_val)27 b Fi(mask_val)32
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(156)2025 5165
-y Ft(--msk_var)27 b Fi(mask_var)32 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-48 b Fu(155)2025 5252 y Ft(--mtd)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(138)2025 5340 y Ft(--Mtd)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(138)p eop end
-%%Page: 176 178
-TeXDict begin 176 177 bop 150 -116 a FD(176)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Ft(--netcdf4)9
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)36 b Fu(33)150 387 y Ft(--nintap)27 b Fi(loop)i
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45
-b Fu(26)150 476 y Ft(--no-coords)11 b Fb(:)k(:)f(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)38 b Fu(38,)26 b(65)150 564 y
-Ft(--no-crd)18 b Fb(:)d(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)45 b Fu(38,)26 b(65)150 653 y Ft(--no_rec_dmn)17
-b Fb(:)f(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(137)150 741 y Ft(--omp_num_threads)29 b Fi(thr_nbr)k
-Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)49 b Fu(23)150 830 y Ft(--op_rlt)27 b Fi(mask_comp)32
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)48 b Fu(156)150 918
-y Ft(--op_typ)27 b Fi(op_typ)h Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(56,)27 b(123)150 1006 y Ft(--operation)h Fi(op_typ)20
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(56,)27 b(123)150 1095
-y Ft(--output)g Fi(fl_out)d Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)40 b Fu(27)150 1183 y Ft(--overwrite)11 b
-Fb(:)k(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38
-b Fu(13,)26 b(62)150 1272 y Ft(--ovr)9 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(13,)26 b(62)150 1360 y Ft(--pack_policy)j Fi(pck_plc)23
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)40 b Fu(142)150 1449 y Ft(--path)27
-b Fi(input-path)f Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fu(26,)26
-b(28)150 1537 y Ft(--pck_map)i Fi(pck_map)15 b Fb(:)g(:)e(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)33 b Fu(143)150 1625 y Ft(--pck_plc)28
-b Fi(pck_plc)15 b Fb(:)g(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
-b Fu(142)150 1714 y Ft(--print)12 b Fb(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b
-Fu(138)150 1802 y Ft(--prn)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44
-b Fu(138)150 1891 y Ft(--prn_fnc_tbl)14 b Fb(:)i(:)d(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(115)150 1979 y Ft(--pseudonym)7
-b Fb(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)33 b Fu(7)150 2068 y Ft(--pth)27 b Fi(input-path)h
-Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fu(26,)26 b(28)150
-2156 y Ft(--quiet)12 b Fb(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b Fu(139)150 2245
-y(`)p Ft(--rcd_nm)28 b Fi(ulm_nm)9 b Fu(')e Fb(:)15 b(:)e(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)34 b Fu(130)150 2333 y Ft(--retain)12
-b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)38 b Fu(32)150 2421 y Ft(--revision)13
-b Fb(:)j(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40
-b Fu(11,)26 b(66)150 2510 y Ft(--rtn)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
-b Fu(32)150 2598 y Ft(--script)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b
-Fu(68)150 2687 y Ft(--script-file)16 b Fb(:)g(:)e(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 b Fu(68)150 2775 y Ft(--sng_fmt)7
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)34 b Fu(139)150 2864 y Ft(--spt)21 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)46 b Fu(68)150 2952 y Ft(--string)10
-b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)37 b Fu(139)150 3041 y Ft(--thr_nbr)28 b
-Fi(thr_nbr)17 b Fb(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fu(23)150 3129 y Ft(--threads)28 b Fi(thr_nbr)17 b
-Fb(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fu(23)150
-3217 y(`)p Ft(--ulm_nm)28 b Fi(ulm_nm)9 b Fu(')e Fb(:)15
-b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fu(130)150
-3306 y Ft(--units)12 b Fb(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b Fu(139)150 3394
-y Ft(--unpack)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fu(143)150 3483 y
-Ft(--upk)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(143)150 3571
-y Ft(--variable)28 b Fi(var)i Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47
-b Fu(36,)27 b(139)150 3660 y Ft(--version)16 b Fb(:)f(:)e(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fu(11,)26
-b(66)150 3748 y Ft(--vrs)9 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(11,)26
-b(66)150 3836 y Ft(--weight)h Fi(weight)22 b Fb(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fu(155)150
-3925 y Ft(--weight)27 b Fi(wgt1)9 b Ft([,)p Fi(wgt2)g
-Ft(])j Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fu(132)150 4013 y
-Ft(--wgt_var)28 b Fi(weight)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)36 b Fu(155)150 4102 y Ft(--wgt_var)28 b Fi(wgt1)9
-b Ft([,)p Fi(wgt2)g Ft(])g Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b
-Fu(132)150 4190 y Ft(--xcl)7 b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fu(36,)27
-b(139)150 4279 y Ft(-3)17 b Fb(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(10,)26 b(33)150 4367 y Ft(-4)17 b Fb(:)c(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(10,)26 b(33)150 4456 y Ft(-a)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39
-b Fu(136,)27 b(139)150 4544 y Ft(-A)21 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b
-Fu(13,)26 b(62,)h(139)150 4632 y(`)p Ft(-A)p Fu(')22
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)48 b Fu(146)150 4721
-y(`)p Ft(-b)p Fu(')8 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fu(113,)27
-b(125)150 4809 y Ft(-b)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
-b Fu(136)150 4898 y Ft(-B)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
-b Fu(136)150 4986 y Ft(-B)26 b Fi(mask_cond)15 b Fb(:)g(:)e(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)33 b Fu(155,)27 b(156)150 5075 y
-Ft(-c)17 b Fb(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(38,)26 b(65)150
-5163 y Ft(-C)21 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)48 b Fu(38,)26 b(65,)h(113)150
-5252 y Ft(-D)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37
-b Fu(11)150 5340 y Ft(-D)26 b Fi(debug-level)d Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)39 b Fu(11,)27 b(19,)f(25)2025
-299 y Ft(-d)g Fi(dim)p Ft(,[)p Fi(min)9 b Ft(],[)p Fi(max)g
-Ft(],)p Fi(stride)27 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fu(40)2025 387 y Ft(-d)26
-b Fi(dim)p Ft(,[)p Fi(min)9 b Ft(][,[)p Fi(max)g Ft(][,[)p
-Fi(stride)g Ft(]]])18 b Fb(:)g(:)13 b(:)44 b Fu(39,)27
-b(41,)g(42,)2178 474 y(45)2025 561 y Ft(-d)f Fi(dim)p
-Ft(,[)p Fi(min)9 b Ft(][,[)p Fi(max)g Ft(]])j Fb(:)k(:)d(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39
-b Fu(155)2025 649 y Ft(-f)8 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fu(115)2025 737 y Ft(-F)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)37 b Fu(38)2025 824 y Ft(-h)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
-b Fu(63,)27 b(118)2025 912 y Ft(-H)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
-b Fu(63,)27 b(137)2025 999 y Ft(-I)8 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)35 b Fu(156)2025 1087 y Ft(-L)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)37 b Fu(54)2025 1175 y Ft(-l)26 b Fi(output-path)34
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fu(28,)27
-b(29)2025 1262 y Ft(-m)8 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fu(138)2025 1350 y Ft(-M)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)46 b Fu(34,)27 b(130,)g(138)2025
-1438 y Ft(-M)f Fi(cnk_map)18 b Fb(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fu(52)2025 1525
-y Ft(-m)26 b Fi(mask_var)32 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(155)2025 1613 y Ft(-M)26
-b Fi(pck_map)16 b Fb(:)e(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)34 b Fu(143)2025 1700 y Ft(-N)15 b
-Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)41 b Fu(57,)27 b(157)2025 1788 y
-Ft(-n)f Fi(loop)c Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)40 b Fu(16,)26 b(18,)h(26)2025 1876 y Ft(-O)17
-b Fb(:)c(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fu(13,)27 b(62)2025 1963
-y Ft(-o)f Fi(fl_out)i Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)45 b Fu(17,)27 b(27)2025 2051 y Ft(-P)8
-b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fu(138)2025
-2139 y Ft(-p)26 b Fi(input-path)17 b Fb(:)e(:)e(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)34 b Fu(26,)27 b(29)2025 2226 y Ft(-P)f Fi(pck_plc)16
-b Fb(:)e(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)34 b Fu(142)2025 2314 y Ft(-q)8 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)35 b Fu(139)2025 2401 y Ft(-Q)8 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)35 b Fu(138)2025 2489 y Ft(-r)17 b Fb(:)c(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-43 b Fu(11,)27 b(66)2025 2577 y Ft(-R)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)37 b Fu(32)2025 2664 y Ft(-s)8 b Fb(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fu(139)2025 2752
-y Ft(-t)26 b Fi(thr_nbr)g Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)42 b Fu(20,)27 b(23)2025 2839 y Ft(-u)8
-b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fu(139)2025
-2927 y Ft(-U)8 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fu(143)2025 3015 y(`)p Ft(-u)26 b Fi(ulm_nm)9 b Fu(')24
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-50 b Fu(130)2025 3102 y(`)p Ft(-v)p Fu(')22 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)48 b Fu(146)2025 3190 y Ft(-v)26
-b Fi(var)15 b Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)33 b Fu(36,)27 b(139)2025 3278 y Ft(-w)f
-Fi(weight)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(155)2025 3365 y Ft(-w)26
-b Fi(wgt1)9 b Ft([,)p Fi(wgt2)g Ft(])h Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(132)2025 3453 y Ft(-x)15
-b Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)41 b Fu(36,)27 b(139)2025 3540
-y Ft(-X)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37
-b Fu(43)2025 3628 y Ft(-X)26 b Fi(lon_min)p Ft(,)p Fi(lon_max)p
-Ft(,)p Fi(lat_min)p Ft(,)p Fi(lat_ma)q(x)31 b Fb(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)43 b Fu(43)2025 3716 y Ft(-y)26
-b Fi(op_typ)g Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)43 b Fu(56,)27 b(123)2025 3951 y FB(.)2025 4068 y
-Fi(.)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38
-b Fu(153)2025 4155 y Ft(.)26 b Fu(\(wildcard)g(c)n(haracter\))18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fu(36)2025 4243
-y(`)p Ft(.netrc)p Fu(')13 b Fb(:)i(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fu(28)2025
-4331 y(`)p Ft(.rhosts)p Fu(')10 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fu(28)2025 4575 y FB(/)2025 4692 y Ft(/)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)38 b Fu(123)2025 4780 y Ft(/)26 b Fu(\(division\))9
-b Fb(:)k(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)36 b Fu(113)2025 4868 y Ft(/*...*/)27 b Fu(\(commen)n(t\))7
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fu(69)2025
-4955 y Ft(//)26 b Fu(\(commen)n(t\))19 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46 b Fu(69)2025 5190
-y FB(;)2025 5307 y Ft(;)26 b Fu(\(end)f(of)h(statemen)n(t\))13
-b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fu(69)p
-eop end
-%%Page: 177 179
-TeXDict begin 177 178 bop 150 -116 a FD(General)31 b(Index)2902
-b(177)150 299 y Fe(<)150 416 y Ft(`<arpa/nameser.h>')27
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)50 b Fu(7)150
-504 y Ft(`<resolv.h>')24 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(7)150 741 y FB(?)150
-858 y Ft(?)26 b Fu(\(\014lename)g(expansion\))11 b Fb(:)i(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)38 b Fu(36)150 946 y Ft(?)26 b Fu(\(question)f(mark\))19
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)46 b Fu(121)150
-1034 y Ft(?)26 b Fu(\(wildcard)g(c)n(haracter\))18 b
-Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(36)150 1292 y
-FB(@)150 1410 y Ft(@)26 b Fu(\(attribute\))8 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35
-b Fu(69)150 1675 y FB([)150 1792 y Ft([])26 b Fu(\(arra)n(y)g
-(delimiters\))10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(69)150 2040 y Fe(^)150 2158 y Ft(^)26 b Fu(\(p)r(o)n(w)n(er\))c
-Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)49 b Fu(113)150 2246 y Ft(^)26 b Fu(\(wildcard)g(c)n
-(haracter\))18 b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(36)p
-159 2482 41 6 v 150 2600 a Ft(_FillValue)13 b Fb(:)j(:)d(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)40 b Fu(49,)27 b(54,)g(118,)g(133,)g(144,)g
-(154)150 2854 y Fe(\\)150 2971 y Ft(\\)f Fu(\(bac)n(kslash\))15
-b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41
-b Fu(121)150 3059 y Ft(\\")26 b Fu(\(protected)f(double)h(quote\))21
-b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)49 b Fu(121)150 3147 y Ft(\\')26 b Fu(\(protected)f(end)h
-(quote\))21 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fu(121)150 3235 y
-Ft(\\?)26 b Fu(\(protected)f(question)h(mark\))16 b Fb(:)d(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43
-b Fu(121)150 3323 y Ft(\\\\)26 b Fu(\()p Fs(ASCI)r(I)g
-Ft(\\)p Fu(,)g(bac)n(kslash\))12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38
-b Fu(121)150 3411 y Ft(\\\\)26 b Fu(\(protected)f(bac)n(kslash\))12
-b Fb(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)39 b Fu(121)150 3499 y Ft(\\a)26
-b Fu(\()p Fs(ASCI)r(I)g Fu(BEL,)h(b)r(ell\))17 b Fb(:)d(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)44 b Fu(121)150 3587 y Ft(\\b)26 b Fu(\()p Fs(ASCI)r(I)g
-Fu(BS,)g(bac)n(kspace\))9 b Fb(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fu(121)150
-3675 y Ft(\\f)26 b Fu(\()p Fs(ASCI)r(I)g Fu(FF,)h(formfeed\))11
-b Fb(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)38 b Fu(121)150 3762 y Ft(\\n)26
-b Fu(\()p Fs(ASCI)r(I)g Fu(LF,)g(linefeed\))14 b Fb(:)g(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-40 b Fu(120)150 3850 y Ft(\\n)26 b Fu(\(linefeed\))9
-b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-36 b Fu(139)150 3938 y Ft(\\r)26 b Fu(\()p Fs(ASCI)r(I)g
-Fu(CR,)g(carriage)i(return\))19 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fu(121)150 4026 y Ft(\\t)26
-b Fu(\()p Fs(ASCI)r(I)g Fu(HT,)g(horizon)n(tal)h(tab\))17
-b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(120)150 4114 y Ft(\\t)26 b Fu(\(horizon)n(tal)h(tab\))19
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(139)150
-4202 y Ft(\\v)26 b Fu(\()p Fs(ASCI)r(I)g Fu(VT,)g(v)n(ertical)h(tab\))9
-b Fb(:)k(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)36 b Fu(121)150 4460 y Fe(|)150 4578 y Ft(|)26
-b Fu(\(wildcard)g(c)n(haracter\))18 b Fb(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44
-b Fu(36)150 4830 y FB(0)150 4947 y Ft(0)26 b Fu(\(NUL\))c
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)50 b Fu(121)150 5200 y FB(3)150 5317 y Fu(32-bit)26
-b(o\013set)g(\014le)g(format)c Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)48
-b Fu(34)2025 299 y FB(6)2025 416 y Fu(64-bit)26 b(o\013set)g(\014le)f
-(format)e Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(34)2025
-504 y Ft(64BIT)26 b Fu(\014les)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fu(33)2025
-741 y FB(A)2025 858 y Fp(abs)10 b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(114)2025 946 y(absolute)26 b(v)l(alue)14 b Fb(:)f(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(114)2025
-1034 y Fp(acos)12 b Fb(:)i(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36 b
-Fu(114)2025 1122 y Fp(acosh)7 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fu(114)2025 1210 y Ft(add)23 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50
-b Fu(123)2025 1297 y Fp(add)p 2154 1297 24 4 v 33 w(o\013set)20
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)44 b Fu(21)2025 1385 y Ft(add_offset)22 b
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)47 b Fu(54,)27 b(130,)g(142,)g(151)2025
-1473 y(adding)e(data)e Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)49 b Fu(123,)27 b(132)2025 1561 y(addition)20 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 b Fu(113,)27
-b(123,)g(132)2025 1649 y(Alexander)e(Hansen)14 b Fb(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)41 b Fu(162)2025 1737 y Ft(alias)23
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)49 b Fu(124,)27 b(143)2025 1825 y(`)p Ft(all)p Fu(')22
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fu(51)2025 1913
-y(alphab)r(etization)10 b Fb(:)k(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)37 b Fu(136)2025 2000 y(alphab)r(etize)26
-b(output)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)48
-b Fu(139)2025 2088 y(alternate)26 b(in)n(v)n(o)r(cations)d
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)48 b Fu(123)2025 2176
-y(anomalies)21 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)46 b Fu(125)2025 2264 y Fs(ANSI)18
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fu(6)2025 2352
-y Ft(ANSI)26 b(C)c Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(115)2025
-2440 y(app)r(ending)25 b(data)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-39 b Fu(113,)27 b(135)2025 2528 y(app)r(ending)e(to)h(\014les)18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)45 b Fu(13,)27 b(62,)g(139)2025 2616
-y(app)r(ending)e(v)l(ariables)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fu(14,)27 b(146)2025 2704 y(AR4)22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49
-b Fu(128)2025 2791 y(arccosine)27 b(function)18 b Fb(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fu(114)2025
-2879 y(arcsine)26 b(function)21 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)47 b Fu(114)2025 2967 y(arctangen)n(t)26
-b(function)9 b Fb(:)k(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36
-b Fu(114)2025 3055 y Ft(area)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49
-b Fu(64)2025 3143 y(arithmetic)26 b(op)r(erators)7 b
-Fb(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)34 b Fu(49,)27 b(50,)g(155)2025 3231 y(arithmetic)f(pro)r
-(cessor)16 b Fb(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42
-b Fu(68)2025 3319 y Fs(ARM)25 b Fu(con)n(v)n(en)n(tions)14
-b Fb(:)e(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40
-b Fu(65)2025 3407 y(ARM)25 b(con)n(v)n(en)n(tions)c Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(151)2025
-3494 y Ft(array)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b
-Fu(74)2025 3582 y Ft(array)26 b Fu(function)e Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49
-b Fu(74)2025 3670 y(arra)n(y)26 b(indexing)12 b Fb(:)g(:)i(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fu(69)2025
-3758 y(arra)n(y)26 b(storage)17 b Fb(:)d(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(69)2025 3846 y(arra)n(y)26
-b(syn)n(tax)10 b Fb(:)i(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)36 b Fu(69)2025 3934 y(arra)n(ys)15 b
-Fb(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)41 b Fu(74)2025 4022 y(arriv)l(al)26
-b(v)l(alue)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)38 b Fu(132)2025 4110 y Fs(ASCI)r(I)23 b
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)49 b Fu(120,)27 b(121)2025 4198 y Fp(asin)15 b Fb(:)f(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)42 b Fu(114)2025 4285 y Fp(asinh)11 b Fb(:)i(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)38 b Fu(114)2025 4373 y(assignmen)n(t)26 b(statemen)n(t)10
-b Fb(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fu(69)2025 4461
-y(async)n(hronous)25 b(\014le)h(access)8 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)34 b Fu(28)2025 4549 y Fp(atan)7 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
-b Fu(114)2025 4637 y Fp(atanh)19 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)47
-b Fu(114)2025 4725 y(attribute)25 b(inheritance)9 b Fb(:)k(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)35 b Fu(78)2025 4813 y(attribute)25
-b(names)6 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fu(118,)27 b(153)2025 4901 y(attribute)e(propagation)11
-b Fb(:)j(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fu(78)2025 4988
-y(attribute)25 b(syn)n(tax)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)43 b Fu(69)2025 5076 y(attribute,)26
-b Ft(units)17 b Fb(:)d(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-44 b Fu(45)2025 5164 y(attributes)19 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fu(118)2025
-5252 y(attributes,)26 b(app)r(ending)10 b Fb(:)i(:)i(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)37 b Fu(119)2025 5340 y(attributes,)26 b(creating)15
-b Fb(:)f(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42 b Fu(119)p
-eop end
-%%Page: 178 180
-TeXDict begin 178 179 bop 150 -116 a FD(178)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fu(attributes,)c(deleting)17
-b Fb(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 b Fu(119)150
-387 y(attributes,)26 b(editing)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)44 b Fu(119)150 474 y(attributes,)26 b(global)21
-b Fb(:)13 b(:)g(:)46 b Fu(17,)27 b(63,)g(66,)f(119,)h(121,)h(135,)f
-(136,)304 561 y(139,)g(153,)g(154)150 649 y(attributes,)f(mo)r(difying)
-16 b Fb(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)43 b Fu(119)150 737
-y(attributes,)26 b(o)n(v)n(erwriting)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38
-b Fu(119)150 825 y(attributes)p Ft(ncap)11 b Fb(:)j(:)g(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fu(77)150 912
-y Ft(autoconf)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fu(11)150 1000 y(automagic)23
-b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-48 b Fu(7,)26 b(16)150 1088 y(automatic)h(t)n(yp)r(e)d(con)n(v)n
-(ersion)e Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)48 b Fu(61,)27 b(115)150 1175 y(auxiliary)f(co)r(ordinates)e
-Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b Fu(65)150
-1263 y(a)n(v)n(erage)14 b Fb(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)41 b Fu(56,)27 b(156)150 1351
-y(a)n(v)n(eraging)g(data)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fu(49,)27 b(128,)g(149,)g(155)
-150 1438 y Ft(avg)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fu(56)150 1526 y(a)n(vg\(\))13 b Fb(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)39
-b Fu(83)150 1614 y Ft(avgsqr)17 b Fb(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(56)150 1868 y FB(B)150 1985 y Fu(Barry)26 b(deF)-6
-b(reese)18 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-45 b Fu(162)150 2073 y Ft(base_time)9 b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36
-b Fu(65)150 2160 y Ft(bash)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(37)150 2248 y(Bash)26 b(shell)13 b Fb(:)i(:)e(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fu(123)150
-2336 y(Bash)26 b(Shell)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34 b Fu(126)150 2423
-y(batc)n(h)25 b(mo)r(de)7 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fu(62)150 2511
-y(b)r(enc)n(hmarks)20 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)47 b Fu(24)150 2599 y(Bessel)27
-b(function)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)45 b Fu(97)150 2687 y(Bill)27 b(Ko)r(cik)14 b
-Fb(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)40 b Fu(161)150 2774 y(binary)25 b(format)c Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(136)150 2862 y(binary)25 b(op)r(erations)15 b Fb(:)g(:)e(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)41 b Fu(20,)27 b(123)150 2950 y(binary)e(Op)r(erators)17
-b Fb(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43
-b Fu(71)150 3037 y Ft(bounds)17 b Fb(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(65)150 3125 y(b)r(ounds)25 b(con)n(v)n(en)n(tion)10
-b Fb(:)i(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b
-Fu(65)150 3213 y(Bourne)26 b(Shell)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)36 b Fu(41,)27 b(126)150 3300
-y(Brian)f(Ma)n(ys)e Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)50 b Fu(161)150 3388 y(broadcasting)27
-b(v)l(ariables)7 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)34 b Fu(124,)27 b(134,)g(155)150 3476 y Ft(BSD)8
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fu(25)150
-3564 y(bu\013ering)20 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fu(21)150
-3651 y(bugs,)26 b(rep)r(orting)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)42 b Fu(10)150 3739 y(b)n(yte\(\))15
-b Fb(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(84)150 3995 y FB(C)150
-4112 y Fu(C)26 b(index)f(con)n(v)n(en)n(tion)16 b Fb(:)d(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)43 b Fu(38)150 4200 y(C)26 b(language)17
-b Fb(:)e(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(6,)26 b(50,)h(61,)f(62,)h(69,)g(121,)g(139)150 4288
-y(C)f(Shell)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)44 b Fu(41,)27 b(126)150 4375 y Ft(c++)10
-b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(6)150
-4463 y(C)p Ft(++)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46
-b Fu(6)150 4551 y Fp(C)p 210 4551 24 4 v 34 w(format)13
-b Fb(:)i(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)38 b Fu(21)150 4638 y(C89)21 b Fb(:)13
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(6)150 4726 y(C99)21
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(6)150
-4814 y Ft(cc)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39
-b Fu(6)150 4901 y Ft(CC)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)39 b Fu(6)150 4989 y Fs(CCM)25 b Fu(Pro)r(cessor)7
-b Fb(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fu(26,)27 b(149,)g(151)150
-5077 y Fs(CCSM)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fu(162)150
-5165 y(CCSM)22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47 b Fu(165)150 5252
-y Fs(CCSM)25 b Fu(con)n(v)n(en)n(tions)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)39 b Fu(64)150 5340 y Fp(ceil)10
-b Fb(:)k(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fu(114)2025 299
-y(ceiling)27 b(function)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)39 b Fu(114)2025 387 y(cell-based)26 b(grids)15
-b Fb(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41
-b Fu(43)2025 476 y Fs(CF)25 b Fu(con)n(v)n(en)n(tions)d
-Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)48 b Fu(38,)27
-b(43)2025 564 y(CF)f(con)n(v)n(en)n(tions)11 b Fb(:)i(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fu(47)2025 653
-y Fs(CF)25 b Fu(con)n(v)n(en)n(tions)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)47 b Fu(64,)27 b(125)2025 741 y(c)n(hange)p
-2258 741 V 34 w(miss\(\))21 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)47 b Fu(82)2025 830 y(c)n(har\(\))16
-b Fb(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fu(84)2025 918 y(c)n(haracters,)27
-b(sp)r(ecial)15 b Fb(:)f(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42
-b Fu(120)2025 1006 y(Charlie)27 b(Zender)11 b Fb(:)h(:)h(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)37 b Fu(1,)27 b(161)2025 1095
-y(c)n(ho)r(colate)11 b Fb(:)j(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fu(161)2025 1183
-y(c)n(h)n(unking)12 b Fb(:)g(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)39 b Fu(10,)27 b(51,)g(138)2025 1272 y(c)n(h)n(unking)d(map)8
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(51,)27 b(52)2025 1360 y(c)n(h)n(unking)d(p)r(olicy)8
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fu(51)2025 1449 y(c)n(h)n(unksize)10 b Fb(:)i(:)h(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36
-b Fu(51)2025 1537 y Ft(CLASSIC)27 b Fu(\014les)c Fb(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49
-b Fu(33)2025 1625 y(clien)n(t-serv)n(er)18 b Fb(:)13
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45
-b Fu(30)2025 1714 y(Climate)27 b(and)e(F)-6 b(orecast)27
-b(Metadata)g(Con)n(v)n(en)n(tion)13 b Fb(:)g(:)g(:)g(:)40
-b Fu(47)2025 1802 y(climate)27 b(mo)r(del)c Fb(:)13 b(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)50 b Fu(13,)26
-b(15,)h(27,)g(130,)g(158)2025 1891 y(clipping)f(op)r(erators)c
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47
-b Fu(72)2025 1979 y(CMIP)13 b Fb(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)40
-b Fu(128)2025 2068 y(`)p Ft(cnk_all)p Fu(')10 b Fb(:)15
-b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)37 b Fu(51)2025 2156 y(`)p Ft(cnk_dmn)p Fu(')10
-b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)37 b Fu(52)2025 2245 y(`)p Ft(cnk_g2d)p
-Fu(')10 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(51)2025 2333 y(`)p Ft(cnk_g3d)p
-Fu(')10 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(51)2025 2421 y Fp(cnk)p
-2148 2421 V 33 w(map)22 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46 b Fu(52)2025
-2510 y(`)p Ft(cnk_prd)p Fu(')10 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fu(52)2025 2598 y(`)p Ft(cnk_rd1)p Fu(')10 b Fb(:)15
-b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)37 b Fu(52)2025 2687 y(`)p Ft(cnk_scl)p Fu(')10
-b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)37 b Fu(52)2025 2775 y(`)p Ft(cnk_xpl)p
-Fu(')10 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(51)2025 2864 y(Comeau)17
-b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)45 b Fu(5)2025 2952 y(command)26
-b(line)g(options)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48
-b Fu(24)2025 3041 y(command)26 b(line)g(switc)n(hes)7
-b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(13,)27 b(23,)f(27,)h(67)2025 3129 y(commen)n(ts)18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)45 b Fu(69)2025 3217 y Ft(como)7 b Fb(:)14
-b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fu(6)2025 3306 y(Compaq)14
-b Fb(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)41 b Fu(5)2025 3394 y(comparator)9
-b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)36 b Fu(156)2025 3483 y(compatabilit)n(y)9 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(5)2025 3571 y(compilers)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fu(28)2025
-3660 y(complemen)n(tary)26 b(error)g(function)7 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fu(114)2025 3748 y(compression)22 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)48 b Fu(54,)27 b(138)2025 3836 y(concatenation)17
-b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)44 b Fu(14,)27 b(130,)g(145,)g(151)2025 3925
-y(conditional)g(Op)r(erator)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49
-b Fu(72)2025 4013 y(`)p Ft(config.guess)p Fu(')15 b Fb(:)h(:)d(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fu(11)2025
-4102 y(`)p Ft(configure.eg)p Fu(')15 b Fb(:)h(:)d(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fu(11)2025 4190 y(constrain)n(t)26
-b(expressions)e Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)49
-b Fu(31)2025 4279 y(con)n(tributing)12 b Fb(:)h(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fu(161)2025
-4367 y(con)n(tributors)14 b Fb(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)41 b Fu(161)2025 4456 y(co)r(ordinate)27
-b(limits)c Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49
-b Fu(39)2025 4544 y(co)r(ordinate)27 b(v)l(ariable)7
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
-b Fu(46,)26 b(56,)h(65,)g(125,)g(156)2025 4632 y(co)r(ordinate)g(v)l
-(ariables)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(154)2025 4721 y Ft(coordinates)11 b Fb(:)k(:)e(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)37 b Fu(43,)27 b(65)2025 4809
-y(co)r(ordinates)g(con)n(v)n(en)n(tion)8 b Fb(:)k(:)h(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)34 b Fu(65)2025 4898 y(core)26 b(dump)9 b Fb(:)j(:)h(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
-b Fu(10)2025 4986 y Ft(core)26 b(dump)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fu(18,)27 b(140)2025
-5075 y Fp(cos)15 b Fb(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38
-b Fu(114)2025 5163 y Fp(cosh)9 b Fb(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
-b Fu(114)2025 5252 y(cosine)26 b(function)18 b Fb(:)c(:)f(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fu(114)2025 5340
-y(co)n(v)l(ariance)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fu(112)p eop end
-%%Page: 179 181
-TeXDict begin 179 180 bop 150 -116 a FD(General)31 b(Index)2902
-b(179)150 299 y Fu(Cra)n(y)11 b Fb(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38
-b Fu(5,)26 b(18)150 387 y Ft(csh)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)34 b Fu(37)150 474 y Ft(cxx)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)37 b Fu(6)150 562 y(Cygwin)10 b Fb(:)k(:)f(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fu(7)150 815 y FB(D)150 932 y Fu(Daniel)26 b(Baumann)21
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47
-b Fu(162)150 1020 y(Daniel)26 b(W)-6 b(ang)18 b Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45
-b Fu(161)150 1108 y Fs(D)n(AP)7 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fu(30)150 1196 y(data)26 b(access)h(proto)r(col)18
-b Fb(:)c(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)44 b Fu(30)150
-1283 y(data)26 b(safet)n(y)d Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)49 b Fu(13,)27 b(153)150 1371 y(data,)f(missing)21
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46
-b Fu(49,)27 b(118)150 1459 y Ft(date)c Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-49 b Fu(64)150 1547 y Ft(datesec)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41
-b Fu(64)150 1635 y Fp(dbg)p 279 1635 24 4 v 34 w(lvl)12
-b Fb(:)g(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)35
-b Fu(11,)27 b(19,)f(24)150 1722 y Fs(DDRA)9 b Fb(:)k(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(162)150 1810 y(Debian)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42
-b Fu(10)150 1898 y Fp(debug-lev)n(el)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47 b Fu(11,)26 b(19)150
-1986 y(debugging)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)38 b Fu(11,)27 b(19,)f(24)150 2073 y Fs(DEC)9 b Fb(:)k(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)36 b Fu(5)150 2161 y(defdim\(\))8
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)34 b Fu(73)150 2249 y(de\015ation)20
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46
-b Fu(9,)26 b(54,)h(138)150 2337 y(degenerate)e(dimension)10
-b Fb(:)k(:)36 b Fu(59,)26 b(113,)g(125,)g(131,)g(132,)g(148,)304
-2424 y(149,)h(155,)g(158)150 2512 y(delete)p 351 2512
-V 34 w(miss\(\))20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)46 b Fu(82)150 2600 y(demotion)13
-b Fb(:)h(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)39 b Fu(61)150 2687 y(deriv)n(ed)25 b(\014elds)17
-b Fb(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(68)150 2775 y(Digital)24 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49
-b Fu(5)150 2863 y(dimension)26 b(limits)13 b Fb(:)h(:)f(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fu(39)150 2951 y(dimension)26
-b(names)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(153)150 3039 y(dimensions,)27 b(gro)n(wing)16 b
-Fb(:)e(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)43 b Fu(112)150 3126
-y(dimensions)p Ft(ncap)9 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)35 b Fu(73)150 3214 y(disjoin)n(t)26
-b(\014les)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)45 b Fu(14)150 3302 y(Distributed)25
-b(Data)h(Reduction)f(&)g(Analysis)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)g(:)38
-b Fu(162)150 3390 y(Distributed)25 b(Oceanographic)i(Data)f(System)17
-b Fb(:)12 b(:)h(:)g(:)h(:)f(:)g(:)43 b Fu(30)150 3478
-y Ft(divide)15 b Fb(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(123)150 3565
-y(dividing)26 b(data)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)39 b Fu(123)150 3653 y(division)21
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)47 b Fu(113)150 3741 y(`)p Ft(dmn)p Fu(')22
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)47 b Fu(52)150 3829 y(do)r(cumen)n
-(tation)7 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)34 b Fu(5)150 3917 y Fs(DODS)6 b Fb(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)33 b Fu(30,)26 b(32)150 4004 y Ft(DODS_ROOT)9
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)36 b Fu(30)150 4092 y(dot)26 b(pro)r(duct)18
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-45 b Fu(157)150 4180 y(double)25 b(precision)15 b Fb(:)g(:)e(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(115)150 4268 y(double\(\))11
-b Fb(:)i(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)37 b Fu(85)150 4356 y(dynamic)25 b(linking)d
-Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(8)150 4608 y FB(E)150 4725 y Fu(Ed)26 b(Hill)12
-b Fb(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)38 b Fu(162)150 4813 y(eddy)25 b(co)n(v)l(ariance)c
-Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47
-b Fu(112)150 4901 y(editing)26 b(attributes)11 b Fb(:)i(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)37 b Fu(118)150 4989 y Ft(egrep)21
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fu(36)150 5077 y(Elliptic)27
-b(in)n(tegrals)11 b Fb(:)k(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)38 b Fu(97)150 5164 y(ensem)n(ble)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fu(15,)27
-b(128)150 5252 y(ensem)n(ble)f(a)n(v)n(erage)15 b Fb(:)f(:)f(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(128)150 5340 y(ensem)n(ble)26
-b(concatenation)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fu(130)2025
-299 y Fp(erf)28 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40
-b Fu(114)2025 387 y Fp(erfc)23 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)45
-b Fu(114)2025 474 y(Eric)26 b(Blak)n(e)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36
-b Fu(162)2025 562 y(error)26 b(function)21 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47
-b Fu(114)2025 650 y(error)26 b(tolerance)9 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fu(13)2025 738 y(exclusion)8 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)34 b Fu(36,)27 b(139,)g(140)2025 826 y(execution)e(time)e
-Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)50
-b Fu(8,)26 b(13,)h(21,)f(23,)h(50,)g(153)2025 913 y Fp(exp)c
-Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b Fu(114)2025 1001
-y(exp)r(onen)n(tiation)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)48 b Fu(113)2025 1089 y(exp)r(onen)n(tiation)25
-b(function)7 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fu(114)2025
-1177 y(expressions)16 b Fb(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)42 b Fu(69)2025 1265 y(extended)24
-b(regular)j(expressions)16 b Fb(:)e(:)f(:)h(:)f(:)43
-b Fu(17,)27 b(36,)f(113,)h(118,)2178 1352 y(121)2025
-1440 y(extraction)8 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
-b Fu(36,)27 b(139,)g(140)2025 1692 y FB(F)2025 1809 y
-Ft(f90)10 b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fu(7)2025 1897 y(features,)27 b(requesting)13 b Fb(:)g(:)g(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)39 b Fu(10)2025 1985 y(\014le)26
-b(deletion)9 b Fb(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)35 b Fu(32)2025 2073 y(\014le)26
-b(remo)n(v)l(al)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)37 b Fu(32)2025 2161 y(\014le)26
-b(reten)n(tion)8 b Fb(:)k(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)34 b Fu(32)2025 2248 y(\014les,)26
-b(m)n(ultiple)12 b Fb(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)38 b Fu(26)2025 2336 y(\014les,)26 b(n)n(umerous)f
-(input)d Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(16)2025
-2424 y(Filip)r(e)26 b(F)-6 b(ernandes)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)34 b Fu(162)2025 2512 y(\014ndgen-equiv)l(alen)
-n(t)16 b Fb(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45
-b Fu(74)2025 2600 y(\014xed)24 b(dimension)8 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
-b Fu(137)2025 2687 y(\015ags)7 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fu(112)2025 2775 y Ft(float)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(115)2025 2863 y(\015oat\(\))13 b Fb(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40
-b Fu(84)2025 2951 y Ft(floor)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(62)2025 3039 y Fp(\015o)r(or)26 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47
-b Fu(114)2025 3126 y(\015o)r(or)26 b(function)9 b Fb(:)k(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fu(114)2025
-3214 y(`)p Ft(flt_byt)p Fu(')8 b Fb(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fu(143)2025
-3302 y(`)p Ft(flt_sht)p Fu(')8 b Fb(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fu(143)2025
-3390 y(for\(\))8 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
-b Fu(87)2025 3478 y(force)27 b(app)r(end)21 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)48
-b Fu(62)2025 3565 y(force)27 b(o)n(v)n(erwrite)7 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fu(62)2025 3653 y(forew)n(ord)9 b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fu(1)2025 3741 y(F)-6 b(ortran)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)44 b Fu(61,)27 b(149,)g(151)2025 3829
-y(F)-6 b(ortran)25 b(index)g(con)n(v)n(en)n(tion)20 b
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(38)2025 3917 y Fp(F)n(OR)-6
-b(TRAN)p 2417 3917 V 32 w(format)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)44 b Fu(21)2025 4004 y(F)-6 b(rancesco)26
-b(Lo)n(v)n(ergine)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)44
-b Fu(162)2025 4092 y Ft(ftp)16 b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)43
-b Fu(7,)26 b(28)2025 4180 y Fs(FTP)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)38 b Fu(32)2025 4268 y(funding)22 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)50
-b Fu(162)2025 4520 y FB(G)2025 4638 y Ft(g++)10 b Fb(:)j(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)37 b Fu(7)2025 4725 y(`)p Ft(g2d)p
-Fu(')22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fu(51)2025
-4813 y(`)p Ft(g3d)p Fu(')22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47
-b Fu(51)2025 4901 y Fp(gamma)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fu(6,)27
-b(114)2025 4989 y(gamma)g(function)20 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)47 b Fu(97,)27 b(114)2025 5077 y(Gaussian)g(w)n(eigh)n(ts)14
-b Fb(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b
-Fu(158)2025 5164 y(Ga)n(vin)25 b(Burris)17 b Fb(:)e(:)e(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)44 b Fu(162)2025
-5252 y(Ga)n(y)n(athri)26 b(V)-6 b(enkitac)n(halam)14
-b Fb(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)41 b Fu(162)2025 5340 y Ft(gcc)10
-b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fu(6)p
-eop end
-%%Page: 180 182
-TeXDict begin 180 181 bop 150 -116 a FD(180)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Ft(gcc)10 b Fb(:)k(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)37 b Fu(7)150 387 y Fs(GCM)15 b Fb(:)e(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)41 b Fu(13)150 474 y(George)27 b(Shapa)n(v)l(alo)n(v)19
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fu(162)150
-562 y(George)27 b(Shap)r(o)n(v)l(alo)n(v)18 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45 b Fu(161)150 650
-y(get)p 257 650 24 4 v 34 w(miss\(\))15 b Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41
-b Fu(82)150 738 y Ft(gethostname)7 b Fb(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fu(7)150
-825 y Ft(getopt)17 b Fb(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fu(25)150
-913 y(`)p Ft(getopt.h)p Fu(')8 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fu(25)150
-1001 y Ft(getopt_long)24 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fu(25)150 1089 y Ft(getuid)21
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fu(7)150 1176 y(global)27
-b(attributes)13 b Fb(:)g(:)g(:)h(:)39 b Fu(17,)27 b(63,)g(66,)f(119,)h
-(121,)h(135,)f(136,)304 1264 y(139,)g(153,)g(154)150
-1351 y(globbing)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-49 b Fu(17,)26 b(26,)h(37,)g(113,)g(124,)g(149,)g(151)150
-1439 y Fs(GNU)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fu(24,)26 b(36)150
-1527 y Ft(gnu-win32)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fu(7)150 1615
-y Fs(GNU)p Fu(/Lin)n(ux)7 b Fb(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fu(18)150 1702
-y(`)p Ft(GNUmakefile)p Fu(')22 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fu(7)150 1790 y(Go)r(d)12
-b Fb(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 b Fu(48)150 1878
-y(gro)n(wing)27 b(dimensions)9 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)36 b Fu(112)150 1966 y Fs(GSL)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(6,)26
-b(96,)h(104)150 2054 y Fp(gsl)p 244 2054 V 35 w(sf)p
-332 2054 V 34 w(b)r(essel)p 560 2054 V 35 w(Jn)10 b Fb(:)k(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fu(97)150
-2141 y Fp(gsl)p 244 2141 V 35 w(sf)p 332 2141 V 34 w(gamma)10
-b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-36 b Fu(97)150 2229 y Ft(gsl_sf_legendre_Pl)25 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fu(98)150 2317 y
-Ft(gw)15 b Fb(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(64,)27 b(158)150
-2571 y FB(H)150 2689 y Fu(Harry)e(Mangalam)16 b Fb(:)g(:)d(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)43 b Fu(161)150 2776 y Fs(HDF)20
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)47 b Fu(8,)26 b(33,)h(162)150 2864 y Fs(HDF5)15 b
-Fb(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)42 b Fu(9,)26 b(10)150 2952 y(help)13
-b Fb(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fu(10)150 3040
-y(Henry)25 b(Buto)n(wsky)e Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)50 b Fu(161)150 3127 y(`)p Ft(hgh_byt)p Fu(')8
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)35 b Fu(143)150 3215 y(`)p Ft(hgh_sht)p Fu(')8
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)35 b Fu(143)150 3303 y(Hierarc)n(hical)27
-b(Data)f(F)-6 b(ormat)13 b Fb(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40
-b Fu(8)150 3391 y Ft(history)8 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fu(18,)27
-b(28,)f(63,)h(66,)g(118,)g(139)150 3478 y Fs(HP)18 b
-Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fu(5)150
-3566 y Fs(HPSS)11 b Fb(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b
-Fu(29)150 3654 y Ft(hsi)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fu(29)150 3742 y Fs(HTML)14 b Fb(:)e(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)40
-b Fu(5)150 3829 y Fs(HTTP)25 b Fu(proto)r(col)c Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)46
-b Fu(30)150 3917 y Ft(hyai)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(64)150 4005 y Ft(hyam)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(64)150 4093 y Ft(hybi)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(64)150 4180 y Ft(hybm)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(64)150 4268 y(h)n(ybrid)24 b(co)r(ordinate)j(system)17
-b Fb(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)43 b Fu(74)150 4356 y(h)n(yp)r(erb)r(olic)26
-b(arccosine)h(function)18 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fu(114)150 4444 y(h)n(yp)r(erb)r
-(olic)26 b(arcsine)g(function)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fu(114)150
-4532 y(h)n(yp)r(erb)r(olic)26 b(arctangen)n(t)g(function)9
-b Fb(:)k(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
-b Fu(114)150 4619 y(h)n(yp)r(erb)r(olic)26 b(cosine)g(function)18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)45 b Fu(114)150 4707 y(h)n(yp)r(erb)r(olic)26
-b(sine)g(function)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fu(114)150
-4795 y(h)n(yp)r(erb)r(olic)26 b(tangen)n(t)c Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fu(114)150 4883
-y(h)n(yp)r(erslab)18 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45
-b Fu(39,)27 b(51,)g(128,)g(130,)g(149,)g(151,)g(155)150
-4970 y(h)n(yp)r(erslabs)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fu(75)150
-5223 y FB(I)150 5340 y Fu(I/O)16 b Fb(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)43 b Fu(32,)27
-b(38,)f(42)2025 299 y(I18N)19 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(23)2025 387 y Fs(IBM)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43
-b Fu(5)2025 475 y Ft(icc)10 b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-37 b Fu(6)2025 563 y(ID)25 b(Quoting)8 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fu(116)2025
-651 y Fs(IDL)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48
-b Fu(13)2025 739 y(if\(\))14 b Fb(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)41
-b Fu(79)2025 827 y Ft(ilimit)17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(18)2025 915 y Ft(include)15 b Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41
-b Fu(88)2025 1003 y(including)26 b(\014les)7 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fu(69)2025 1091 y(index)25 b(con)n(v)n(en)n(tion)d
-Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)49
-b Fu(38)2025 1179 y(indgen-equiv)l(alen)n(t)12 b Fb(:)g(:)h(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)39 b Fu(74)2025 1267 y(inexact)25
-b(con)n(v)n(ersion)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40
-b Fu(115)2025 1355 y(Info)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-47 b Fu(5)2025 1443 y(input)25 b(\014les)d Fb(:)13 b(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)48 b Fu(17,)27 b(26,)f(27,)h(28)2025 1531
-y Fp(input-path)13 b Fb(:)e(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)39 b Fu(26,)27 b(29)2025 1619 y(installation)7
-b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-33 b Fu(5,)26 b(11)2025 1707 y(in)n(t\(\))8 b Fb(:)k(:)h(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)34 b Fu(84)2025 1795 y(in)n(t64\(\))21 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)47 b Fu(85)2025 1883 y(in)n(tegration)18
-b Fb(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)45 b Fu(157)2025 1971 y(In)n(tel)9 b Fb(:)j(:)i(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)36 b Fu(5)2025 2059 y(In)n(ternationalization)9
-b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fu(23)2025
-2147 y(in)n(terp)r(olation)20 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(132)2025 2235 y(in)n(tro)r(duction)
-15 b Fb(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)42 b Fu(5)2025 2323 y(IPCC)7 b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fu(128,)27
-b(130)2025 2411 y Fs(IPCC)11 b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38
-b Fu(162)2025 2499 y(irregular)27 b(grids)17 b Fb(:)d(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fu(92)2025
-2587 y Fs(ISO)9 b Fb(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(6)2025 2824 y FB(J)2025 2942 y Fu(Jim)26 b(Edw)n(ards)15
-b Fb(:)f(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
-b Fu(161)2025 3030 y(Juliana)27 b(Rew)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fu(162)2025
-3267 y FB(K)2025 3385 y Fu(Karen)25 b(Sc)n(h)n(uc)n(hardt)18
-b Fb(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)45 b Fu(162)2025
-3473 y(Keith)25 b(Lindsa)n(y)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(162)2025 3561 y(kitc)n(hen)25
-b(sink)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)43 b Fu(135)2025 3649 y(Kyle)25 b(Wilco)n(x)11
-b Fb(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38
-b Fu(162)2025 3902 y FB(L)2025 4020 y Fu(L10N)9 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(23)2025 4108 y(large)27
-b(datasets)13 b Fb(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)39
-b Fu(18,)27 b(24)2025 4196 y(Large)f(File)h(Supp)r(ort)10
-b Fb(:)i(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fu(18,)27 b(35)2025
-4284 y Ft(lat_bnds)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fu(64)2025 4372
-y Ft(LD_LIBRARY_PATH)13 b Fb(:)k(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)41 b Fu(8)2025 4460 y(left)26 b(hand)f(casting)14
-b Fb(:)g(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fu(20,)27
-b(74)2025 4548 y(Legendre)f(p)r(olynomial)6 b Fb(:)14
-b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33 b Fu(98)2025 4636
-y(Lemp)r(el-Ziv)25 b(de\015ation)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)35 b Fu(54)2025 4724 y(Len)25 b(Makin)20 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46
-b Fu(161)2025 4812 y(lexer)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47
-b Fu(68)2025 4900 y(LFS)19 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b
-Fu(18,)27 b(35)2025 4988 y Fs(LHS)16 b Fb(:)d(:)g(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)42 b Fu(74)2025 5076 y Ft(libnco)20 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46
-b Fu(6)2025 5164 y(libraries)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46
-b Fu(8)2025 5252 y(link)n(ers)9 b Fb(:)k(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fu(28)2025 5340 y(Lin)n(ux)18 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46
-b Fu(115)p eop end
-%%Page: 181 183
-TeXDict begin 181 182 bop 150 -116 a FD(General)31 b(Index)2902
-b(181)150 299 y Fp(ln)15 b Fb(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42
-b Fu(114)150 387 y Ft(ln)26 b(-s)12 b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fu(124,)27
-b(143)150 476 y Fp(log)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39
-b Fu(114)150 564 y Fp(log10)14 b Fb(:)h(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
-b Fu(114)150 652 y(logarithm,)27 b(base)f(10)11 b Fb(:)j(:)f(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)37 b Fu(114)150 741 y(logarithm,)27
-b(natural)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40
-b Fu(114)150 829 y Ft(lon_bnds)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b
-Fu(64)150 917 y Ft(long)27 b(double)9 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fu(115)150
-1006 y(long)26 b(options)20 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)46 b Fu(24,)27 b(147)150 1094 y(longitude)13
-b Fb(:)h(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)39 b Fu(42)150 1183 y(Luk)25 b(Claes)16
-b Fb(:)e(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)42 b Fu(162)150 1422 y FB(M)150 1540 y Fu(Macin)n(tosh)15
-b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)42 b Fu(5)150 1628 y(`)p Ft(Makefile)p
-Fu(')16 b Fb(:)g(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)43
-b Fu(6,)27 b(7,)f(9,)g(30)150 1717 y Ft(malloc\(\))12
-b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)38 b Fu(20)150 1805 y(man)n(ual)26 b(t)n(yp)r(e)f(con)n
-(v)n(ersion)12 b Fb(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fu(61)150
-1894 y(`)p Ft(map_dmn)p Fu(')10 b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b
-Fu(52)150 1982 y(`)p Ft(map_prd)p Fu(')10 b Fb(:)16 b(:)d(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fu(52)150 2070 y(`)p Ft(map_rd1)p Fu(')10 b Fb(:)16
-b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)37 b Fu(52)150 2159 y(`)p Ft(map_scl)p Fu(')10
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)37 b Fu(52)150 2247 y(Mark)26 b(Flanner)20
-b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)47
-b Fu(162)150 2335 y(Markus)26 b(Liebig)10 b Fb(:)k(:)f(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fu(162)150 2424
-y(Martin)26 b(Dix)12 b Fb(:)g(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)38 b Fu(162)150 2512 y(Martin)26
-b(Sc)n(hmidt)19 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-46 b Fu(162)150 2600 y(mask)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fu(92,)27
-b(112)150 2689 y(mask)f(condition)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)45 b Fu(156,)27 b(159)150 2777 y(mask)n(ed)f(a)n(v)n(erage)8
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(155)150 2866 y(Mass)27 b(Store)f(System)20 b Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47 b Fu(28)150
-2954 y(Matej)27 b(V)-6 b(ela)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(162)150 3042
-y(mathematical)27 b(functions)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)39
-b Fu(114)150 3131 y Ft(max)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-34 b Fu(56)150 3219 y(max\(\))16 b Fb(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43
-b Fu(83)150 3307 y(maxim)n(um)19 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fu(56)150
-3396 y(mean)11 b Fb(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fu(56)150
-3484 y(memory)26 b(a)n(v)l(ailable)12 b Fb(:)i(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)38 b Fu(19)150 3573 y(memory)26 b(leaks)6
-b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-33 b Fu(20)150 3661 y(memory)26 b(requiremen)n(ts)16
-b Fb(:)c(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)43 b Fu(19,)26 b(36)150 3749 y(merging)h(\014les)13
-b Fb(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39
-b Fu(14,)27 b(135)150 3838 y(metadata)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
-b Fu(138)150 3926 y(metadata)26 b(optimization)9 b Fb(:)15
-b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fu(23)150 4014 y(metadata,)27
-b(global)9 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fu(130,)27
-b(138)150 4103 y(Mic)n(hael)g(Sc)n(h)n(ulz)19 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46
-b Fu(162)150 4191 y(Microsoft)24 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b Fu(5,)26
-b(7)150 4280 y(Mik)n(e)g(F)-6 b(olk)21 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48
-b Fu(8)150 4368 y(Mik)n(e)26 b(P)n(age)8 b Fb(:)14 b(:)g(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fu(162)150 4456 y Ft(min)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-34 b Fu(56)150 4545 y(min\(\))7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fu(83)150 4633 y(minim)n(um)10 b Fb(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36 b
-Fu(56)150 4721 y(missing)27 b(v)l(alues)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40
-b Fu(49,)27 b(57,)g(118,)g(133)150 4810 y(missing)g(v)l(alues)f(ncap2)7
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fu(81)150
-4898 y Ft(missing_value)10 b Fb(:)16 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37
-b Fu(49,)26 b(54,)h(154)150 4986 y(MKS)e(units)10 b Fb(:)j(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(45,)26
-b(48)150 5075 y(mo)r(dulus)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fu(113)150
-5163 y(monotonic)26 b(co)r(ordinates)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)38 b Fu(21)150 5252 y Fs(MSA)22 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(41)150 5340 y Ft(msk_*)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
-b Fu(64)2025 299 y Ft(msrcp)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(29)2025 387 y Fs(msrcp)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35
-b Fu(32)2025 476 y Ft(msread)17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(29)2025 564 y Fs(MSS)12 b Fb(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)39
-b Fu(28)2025 652 y(m)n(ulti-\014le)25 b(op)r(erators)15
-b Fb(:)g(:)41 b Fu(19,)27 b(26,)g(28,)f(128,)i(130,)f(149,)g(151)2025
-741 y(m)n(ulti-h)n(yp)r(erslab)9 b Fb(:)j(:)h(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)35 b Fu(41)2025 829 y(m)n(ultiplication)24
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)50 b Fu(113,)27
-b(123)2025 917 y Ft(multiply)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(123)2025
-1006 y(m)n(ultiplying)25 b(data)11 b Fb(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38
-b Fu(123,)27 b(132)2025 1094 y(m)n(ultislab)14 b Fb(:)g(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41
-b Fu(41)2025 1333 y FB(N)2025 1452 y Fu(nak)n(ed)25 b(c)n(haracters)e
-Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)49
-b Fu(123)2025 1540 y Fs(NASA)17 b Fb(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(162)2025 1628 y Fs(NASA)23 b(EOSDIS)13 b Fb(:)h(:)f(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40 b Fu(16)2025
-1717 y(National)26 b(Virtual)g(Ocean)g(Data)g(System)c
-Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50 b Fu(30)2025
-1805 y Ft(nc__enddef\(\))21 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)45 b Fu(23)2025 1894 y Ft(NC_BYTE)6
-b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33
-b Fu(39,)27 b(125,)g(143)2025 1982 y Ft(NC_CHAR)6 b Fb(:)15
-b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fu(39,)27
-b(125,)g(143)2025 2070 y Ft(NC_DOUBLE)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)39 b Fu(115,)27 b(143)2025
-2159 y Ft(NC_FLOAT)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(143)2025
-2247 y Ft(NC_INT)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42 b Fu(143)2025
-2335 y Ft(NC_INT64)14 b Fb(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fu(9)2025
-2424 y Ft(NC_SHORT)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(143)2025
-2512 y Ft(NC_UBYTE)14 b Fb(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fu(9)2025
-2600 y Ft(NC_UINT)17 b Fb(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 b Fu(9)2025
-2689 y Ft(NC_UINT64)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39 b Fu(9)2025 2777
-y Ft(NC_USHORT)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39 b Fu(9)2025 2866 y
-Ft(ncadd)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fu(123)2025 2954
-y Ft(ncap)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(24)2025
-3042 y Ft(ncap)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49
-b Fu(68)2025 3131 y Ft(ncap2)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49
-b Fu(6)2025 3219 y Ft(ncap2)9 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b
-Fu(20,)27 b(62)2025 3307 y Ft(ncap2)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(68)2025 3396 y Ft(ncap2)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(142)2025 3484 y Fs(NCAR)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40
-b Fu(13)2025 3573 y Fs(NCAR)23 b(MSS)15 b Fb(:)f(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)42 b Fu(28)2025
-3661 y Ft(ncatted)15 b Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fu(36)2025
-3749 y Ft(ncatted)15 b Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 b Fu(49)2025
-3838 y Ft(ncatted)22 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fu(50,)27 b(63)2025 3926
-y Ft(ncatted)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fu(118)2025 4014
-y Ft(ncbo)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(50)2025
-4103 y Ft(ncbo)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b
-Fu(123)2025 4191 y Ft(ncdiff)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
-b Fu(123)2025 4280 y Ft(ncdivide)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fu(123)2025 4368 y Ft(ncdump)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b Fu(34,)27 b(138)2025
-4456 y Ft(ncea)12 b Fb(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fu(16,)27 b(50)2025
-4545 y Ft(ncea)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b
-Fu(128)2025 4633 y Ft(ncecat)17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(15)2025 4721 y Ft(ncecat)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
-b Fu(130)2025 4810 y Ft(ncextr)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
-b Fu(135)2025 4898 y Ft(ncflint)22 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fu(16,)27
-b(50)2025 4986 y Ft(ncflint)12 b Fb(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fu(132)2025
-5075 y Ft(ncks)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49
-b Fu(34)2025 5163 y Ft(ncks)14 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)40 b Fu(54,)27 b(113,)g(135)2025
-5252 y Fs(NCL)10 b Fb(:)i(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36
-b Fu(13)2025 5340 y Ft(ncmult)15 b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)42
-b Fu(123)p eop end
-%%Page: 182 184
-TeXDict begin 182 183 bop 150 -116 a FD(182)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Ft(ncmultiply)24
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-49 b Fu(123)150 387 y Fs(NCO)25 b Fu(a)n(v)l(ailabilit)n(y)15
-b Fb(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42
-b Fu(5)150 476 y Fs(NCO)25 b Fu(homepage)15 b Fb(:)f(:)f(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 b Fu(5)150
-564 y Fp(NCO)25 b(User's)i(Guide)12 b Fb(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)35 b Fu(5)150 653 y(`)p Ft
-(nco.config.log.${GNU_TRP}.fo)q(o)p Fu(')29 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(11)150
-741 y(`)p Ft(nco.configure.${GNU_TRP}.foo)q Fu(')8 b
-Fb(:)19 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
-b Fu(11)150 830 y(`)p Ft(nco.make.${GNU_TRP}.foo)p Fu(')27
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)47 b Fu(11)150 918 y Ft(nco_input_file_list)7
-b Fb(:)18 b(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fu(17,)26 b(63)150 1006
-y Ft(nco_input_file_number)e Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(17,)26
-b(63)150 1095 y Ft(nco_openmp_thread_number)i Fb(:)13
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)49 b Fu(23)150 1183 y Ft(ncpack)15 b Fb(:)f(:)g(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42
-b Fu(142)150 1272 y Ft(ncpdq)9 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b
-Fu(15,)26 b(24)150 1360 y Ft(ncpdq)15 b Fb(:)g(:)e(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)42 b Fu(51,)27 b(130,)g(142,)g(151)150 1449 y
-Ft(ncra)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fu(16,)26 b(50)150 1537
-y Ft(ncra)7 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)34 b Fu(113,)27 b(149)150 1625
-y Ft(ncrcat)6 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fu(15,)26 b(24)150 1714
-y Ft(ncrcat)15 b Fb(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(151)150 1802
-y Ft(ncrename)16 b Fb(:)f(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)43 b Fu(49,)27 b(153)150 1891 y Fs(NCSA)22
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(9)150 1979 y
-Ft(ncsub)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(123)150 2068
-y Ft(ncsubtract)24 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)49 b Fu(123)150 2156 y Ft(ncunpack)10
-b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)37 b Fu(142)150 2245 y Ft(ncwa)18 b Fb(:)c(:)f(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b
-Fu(16,)27 b(24,)f(50)150 2333 y Ft(ncwa)7 b Fb(:)14 b(:)f(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fu(113,)27 b(155)150 2421 y(ndims\(\))21 b Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)48 b Fu(83)150 2510 y Fp(nearb)n(yin)n(t)9
-b Fb(:)j(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)34 b Fu(114)150 2598 y(nearest)26 b(in)n(teger)g(function)g
-(\(exact\))14 b Fb(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)41 b Fu(114)150 2687 y(nearest)26 b(in)n(teger)g(function)g
-(\(inexact\))16 b Fb(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-43 b Fu(114)150 2775 y Fs(NEC)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)37 b Fu(5)150 2864 y(nesting)15 b Fb(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)41
-b Fu(69)150 2952 y(netCDF)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)45
-b Fu(5)150 3041 y(netCDF2)23 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fu(8,)26 b(33)150
-3129 y Ft(NETCDF2_ONLY)e Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(9)150 3217 y(netCDF3)23
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)49 b Fu(8,)26 b(33)150 3306 y(netCDF3)g(classic)h(\014le)f(format)
-17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)43 b Fu(34)150 3394 y(netCDF4)23 b Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49
-b Fu(9,)26 b(33)150 3483 y(netCDF4)g(classic)h(\014le)f(format)17
-b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)43 b Fu(34)150 3571 y(netCDF4)26 b(\014le)g(format)15
-b Fb(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(34)150
-3660 y Ft(NETCDF4)27 b Fu(\014les)d Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49 b Fu(33)150 3748
-y Ft(NETCDF4_CLASSIC)29 b Fu(\014les)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)46 b Fu(33)150 3836 y Ft(NETCDF4_ROOT)22 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45
-b Fu(10)150 3925 y Ft(NINTAP)9 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fu(26,)27 b(149,)g(151)150 4013
-y Ft(NO_NETCDF_2)7 b Fb(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fu(8)150 4102 y(non-co)r(ordinate)26
-b(grid)g(prop)r(erties)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)43 b Fu(64)150 4190 y(non-rectangular)26
-b(grids)15 b Fb(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fu(92)150
-4279 y(non-standard)25 b(grids)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)32 b Fu(92)150 4367 y(normalization)24
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)48
-b Fu(157)150 4456 y Fs(NRA)19 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46
-b Fu(162)150 4544 y Ft(nrnet)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
-b Fu(29)150 4632 y Fs(NSF)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39
-b Fu(162)150 4721 y(NT)26 b(\(Microsoft)h(op)r(erating)g(system\))7
-b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-34 b Fu(7)150 4809 y(NUL)17 b Fb(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(121)150 4898 y Ft(NUL)23 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)49
-b Fu(144)150 4986 y(NUL-termination)13 b Fb(:)f(:)h(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)39 b Fu(121)150 5075 y(n)n(ull)25 b(op)r(eration)17
-b Fb(:)e(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44
-b Fu(133)150 5163 y(n)n(um)n(b)r(er)25 b(literals)i Ft(ncap)12
-b Fb(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fu(78)150
-5252 y Ft(numerator)14 b Fb(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)40 b Fu(57,)27 b(157)150 5340 y Fs(NV)n(ODS)9
-b Fb(:)k(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)35 b Fu(30)2025 299 y(`)p Ft(nxt_lsr)p
-Fu(')8 b Fb(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)35 b Fu(143)2025 545 y FB(O)2025
-662 y Fu(o)r(ceanograph)n(y)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fu(30)2025 750 y(o)r(ctal)27
-b(dump)12 b Fb(:)g(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)39 b Fu(35)2025 838 y Ft(od)10 b Fb(:)k(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)37 b Fu(35)2025 926 y Ft(OMP_NUM_THREADS)11
-b Fb(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38
-b Fu(24)2025 1014 y(on-line)26 b(do)r(cumen)n(tation)17
-b Fb(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)45 b Fu(5)2025 1102
-y(op)r(en)25 b(source)14 b Fb(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)41 b Fu(1,)26 b(30)2025 1190 y(Op)r(en-source)f
-(Pro)t(ject)i(for)g(a)f(Net)n(w)n(ork)f(Data)h(Access)2178
-1277 y(Proto)r(col)18 b Fb(:)d(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)44 b Fu(30)2025 1365 y Fs(OP)n(eND)n(AP)p
-Fu(.)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)33 b Fu(30)2025 1453 y(Op)r(enMP)13
-b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)40
-b Fu(19,)26 b(20,)h(23)2025 1541 y(op)r(eration)f(t)n(yp)r(es)6
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)33 b Fu(56,)27 b(128,)g(149,)g(156)2025 1629 y(op)r(erator)f(sp)
-r(eed)c Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)48
-b Fu(8,)26 b(13,)h(21,)f(23,)h(50,)g(153)2025 1717 y(op)r(erators)14
-b Fb(:)g(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)41 b Fu(3)2025 1804 y(OptIPuter)9
-b Fb(:)j(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)36 b Fu(162)2025 1892 y(Orion)26 b(P)n(o)n(wla)n(wski)c
-Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48
-b Fu(162)2025 1980 y Ft(ORO)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)39 b
-Fu(64,)27 b(158)2025 2068 y Fs(OS)21 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)49 b Fu(5)2025 2156 y(output)24 b(\014le)17
-b Fb(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(17,)27 b(27)2025 2244 y Fp(output-path)17 b Fb(:)12
-b(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44
-b Fu(29)2025 2332 y(o)n(v)n(erview)7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
-b Fu(20)2025 2420 y(o)n(v)n(erwriting)26 b(\014les)12
-b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fu(13,)27
-b(62)2025 2673 y FB(P)2025 2791 y Fu(pac)n(k\(\))11 b
-Fb(:)h(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)38 b Fu(83)2025 2878 y Ft(pack\(x\))15
-b Fb(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)41 b Fu(54)2025 2966 y(pac)n(k)p 2184
-2966 24 4 v 33 w(b)n(yte\(\))7 b Fb(:)12 b(:)h(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fu(83)2025
-3054 y(pac)n(k)p 2184 3054 V 33 w(in)n(t\(\))17 b Fb(:)12
-b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)43 b Fu(83)2025 3142 y(pac)n(k)p 2184 3142 V 33 w(short\(\))11
-b Fb(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)37 b Fu(83)2025 3230 y(pac)n(king)15 b Fb(:)e(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 b Fu(31,)27
-b(51,)g(54,)g(130,)g(142,)g(151)2025 3318 y(pac)n(king)e(map)d
-Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49
-b Fu(143)2025 3406 y(pac)n(king)25 b(p)r(olicy)11 b Fb(:)j(:)f(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fu(142)2025
-3494 y(pap)r(ers)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b
-Fu(20)2025 3582 y(parallelism)9 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)35 b Fu(23,)27 b(162)2025 3670
-y(parser)15 b Fb(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)41 b Fu(68)2025
-3758 y(pasting)26 b(v)l(ariables)7 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)34 b Fu(14)2025 3845 y Ft(pathcc)20
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(6)2025 3933 y Ft(pathCC)20
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fu(6)2025 4021 y(P)n(athScale)23
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)49 b Fu(5)2025 4109 y(P)n(atrice)26 b(Dumas)21
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)47
-b Fu(162)2025 4197 y(P)n(atric)n(k)26 b(Kursa)n(w)n(e)9
-b Fb(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(162)2025 4285 y(pattern)25 b(matc)n(hing)12 b Fb(:)h(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39
-b Fu(17,)27 b(36,)g(118,)g(121)2025 4373 y(P)n(a)n(yP)n(al)14
-b Fb(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)41 b Fu(161)2025 4461 y Fp(p)r(c)n(k)p
-2148 4461 V 33 w(map)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)45 b Fu(143)2025
-4549 y Fp(p)r(c)n(k)p 2148 4549 V 33 w(plc)27 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)50 b Fu(142)2025 4637 y(p)r(eak)25 b(memory)h(usage)8
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fu(19)2025
-4725 y(p)r(erformance)17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)44 b Fu(8,)26 b(13,)h(20,)g(21,)f(23,)h(50,)g(153)2025
-4813 y(P)n(erl)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)36 b Fu(13,)27 b(18,)g(120)2025
-4900 y(p)r(erm)n(ute)e(dimensions)20 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)46 b Fu(142)2025 4988 y(p)r(erm)n(ute\(\))17 b
-Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)44 b Fu(77)2025 5076 y Ft(pgcc)7 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)34 b Fu(6)2025 5164 y Ft(pgCC)7 b Fb(:)14
-b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fu(6)2025 5252 y
-Fs(PGI)22 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)48
-b Fu(5)2025 5340 y(philosoph)n(y)7 b Fb(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b
-Fu(13)p eop end
-%%Page: 183 185
-TeXDict begin 183 184 bop 150 -116 a FD(General)31 b(Index)2902
-b(183)150 299 y Fu(pip)r(es)14 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40
-b Fu(17)150 387 y(`)p Ft(plc_all)p Fu(')10 b Fb(:)16
-b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)37 b Fu(51)150 474 y(`)p Ft(plc_g2d)p Fu(')10
-b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)37 b Fu(51)150 562 y(`)p Ft(plc_g3d)p
-Fu(')10 b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)37 b Fu(51)150 650 y(`)p Ft(plc_xpl)p
-Fu(')10 b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)37 b Fu(51)150 738 y(p)r(ortabilit)n(y)10
-b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)37 b Fu(5)150 826 y(p)r(ositional)27 b(argumen)n(ts)6
-b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fu(27)150
-913 y Fs(POSIX)14 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(24,)26 b(36)150 1001
-y Fp(p)r(o)n(w)16 b Fb(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b
-Fu(114)150 1089 y(p)r(o)n(w)n(er)16 b Fb(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)43
-b Fu(113)150 1177 y(p)r(o)n(w)n(er)26 b(function)20 b
-Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(114)150 1265 y(`)p Ft(prd)p Fu(')22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)47 b Fu(52)150 1352 y(precision)20 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46
-b Fu(115)150 1440 y(prepro)r(cessor)27 b(tok)n(ens)13
-b Fb(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40 b
-Fu(7)150 1528 y(presen)n(tations)18 b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45 b Fu(5)150
-1616 y(prin)n(t\(\))p Ft(ncap)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39 b Fu(80)150
-1704 y Ft(printf)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b
-Fu(6)150 1791 y Ft(printf\(\))14 b Fb(:)h(:)e(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(120,)27 b(139)150 1879
-y(prin)n(ting)e(\014les)h(con)n(ten)n(ts)9 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fu(135)150 1967 y(prin)n(ting)25
-b(v)l(ariables)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37
-b Fu(135)150 2055 y(Pro)r(cessor)11 b Fb(:)k(:)e(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fu(149,)27 b(151)150
-2143 y(Pro)r(cessor,)h Fs(CCM)21 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)48 b Fu(26)150 2230 y(promotion)17
-b Fb(:)d(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44
-b Fu(61,)27 b(115)150 2318 y(prop)r(osals)9 b Fb(:)15
-b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)36 b Fu(162)150 2406 y(pseudon)n(ym)17 b Fb(:)12
-b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)44 b Fu(7)150 2494 y(publications)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)46
-b Fu(5)150 2746 y FB(Q)150 2864 y Fu(QLogic)17 b Fb(:)d(:)f(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)44 b Fu(5)150 2951 y(quadruple)25 b(precision)10 b
-Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)36 b Fu(115)150
-3039 y(quiet)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fu(139)150
-3127 y(quotes)22 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49
-b Fu(37,)27 b(113,)g(124,)g(147)150 3380 y FB(R)150 3497
-y Fu(RAM)8 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35 b Fu(19)150
-3585 y(ram)p 287 3585 24 4 v 34 w(delete\(\))9 b Fb(:)k(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b
-Fu(85)150 3672 y(ram)p 287 3672 V 34 w(write\(\))23 b
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)48 b Fu(85)150 3760 y(rank)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fu(125,)27
-b(155)150 3848 y Ft(rcp)16 b Fb(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)43
-b Fu(7,)26 b(28)150 3936 y Fs(R)n(CS)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)40 b Fu(66)150 4024 y(`)p Ft(rd1)p Fu(')22 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)47 b Fu(52)150 4111 y(re-dimension)22
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48
-b Fu(142)150 4199 y(re-order)26 b(dimensions)8 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fu(142)150 4287
-y(record)26 b(a)n(v)n(erage)10 b Fb(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)36 b Fu(149)150 4375 y(record)26
-b(concatenation)d Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)48
-b Fu(151)150 4463 y(record)26 b(dimension)c Fb(:)13 b(:)g(:)48
-b Fu(14,)27 b(38,)g(53,)f(128,)h(130,)h(131,)f(137,)304
-4550 y(145,)g(148,)g(149,)g(151)150 4638 y(record)f(v)l(ariable)10
-b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fu(38,)27
-b(145)150 4725 y(rectangular)g(grids)22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)48 b Fu(92)150 4813 y Ft(regex)21
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fu(36)150 4901 y(regressions)28
-b(arc)n(hiv)n(e)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fu(11)150 4989 y(regular)27 b(expressions)13 b Fb(:)h(:)f(:)g(:)g(:)g
-(:)h(:)40 b Fu(17,)26 b(26,)h(36,)g(113,)g(118,)g(121)150
-5077 y(Remik)e(Ziemlinski)10 b Fb(:)k(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)37 b Fu(162)150 5164 y(remote)26 b(\014les)20
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46
-b Fu(7,)26 b(28)150 5252 y(renaming)g(attributes)c Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b Fu(153)150 5340 y(renaming)26
-b(dimensions)20 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)46
-b Fu(153)2025 299 y(renaming)26 b(v)l(ariables)d Fb(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)49 b Fu(153)2025 387
-y(rep)r(orting)26 b(bugs)10 b Fb(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)36 b Fu(10)2025 475 y(reshap)r(e)26
-b(v)l(ariables)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44
-b Fu(142)2025 563 y Ft(restrict)14 b Fb(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)41
-b Fu(6)2025 651 y(rev)n(erse)26 b(data)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 b Fu(147)2025
-739 y(rev)n(erse)26 b(dimensions)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)39
-b Fu(142,)27 b(147)2025 828 y(rev)n(erse\(\))6 b Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)33 b Fu(77)2025 916 y Fp(rin)n(t)21 b Fb(:)13
-b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)47 b Fu(114)2025 1004 y Ft(rms)8
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fu(56)2025
-1092 y Ft(rmssdn)17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(56)2025
-1180 y(rmssdn\(\))19 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46 b Fu(83)2025
-1268 y(ro)r(ot-mean-square)13 b Fb(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)39 b Fu(56)2025 1356 y(Rorik)25 b(P)n(eterson)18
-b Fb(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45
-b Fu(161)2025 1444 y Fp(round)18 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43
-b Fu(114)2025 1532 y(rounding)25 b(functions)e Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)49 b Fu(114)2025 1621
-y Fs(RPM)18 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)45 b Fu(10)2025
-1709 y(running)25 b(a)n(v)n(erage)18 b Fb(:)c(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)45 b Fu(149)2025 1963 y FB(S)2025
-2081 y Fu(safeguards)16 b Fb(:)f(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)43 b Fu(13,)27 b(153)2025 2169 y Ft(scale_factor)15
-b Fb(:)g(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)42 b Fu(54,)27 b(130,)g(142,)g(151)2025 2257
-y Fp(scale)p 2187 2257 V 35 w(format)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fu(21)2025
-2345 y(scaling)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b Fu(20)2025
-2433 y(Scien)n(ti\014c)25 b(Data)h(Op)r(erators)13 b
-Fb(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)40 b Fu(162)2025 2521 y(`)p Ft(scl)p Fu(')22
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 b Fu(52)2025 2609
-y(Scott)25 b(Capps)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)40 b Fu(162)2025 2698 y Ft(scp)16
-b Fb(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)43 b Fu(7,)26 b(28)2025 2786
-y(script)g(\014le)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)39 b Fu(68)2025 2874
-y Fs(SDO)7 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)34 b Fu(162)2025
-2962 y Fs(SEI)r(I)r(I)15 b Fb(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42
-b Fu(162)2025 3050 y(semi-colon)11 b Fb(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fu(69)2025
-3138 y(serv)n(er)15 b Fb(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)42 b Fu(18,)26 b(30,)h(32)2025 3226
-y(Serv)n(er-Side)d(Distributed)h(Data)h(Reduction)f(&)2178
-3313 y(Analysis)17 b Fb(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)44 b Fu(162)2025 3402 y(serv)n(er-side)25
-b(pro)r(cessing)17 b Fb(:)e(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44 b Fu(31,)27 b(162)2025
-3490 y(set)p 2124 3490 V 34 w(miss\(\))20 b Fb(:)13 b(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)46
-b Fu(82)2025 3578 y Ft(sftp)14 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)41
-b Fu(7,)26 b(28)2025 3666 y Fs(SGI)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)36 b Fu(5)2025 3754 y(shared)26 b(memory)f(mac)n(hines)20
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)45 b Fu(19)2025 3842 y(shared)26
-b(memory)f(parallelism)7 b Fb(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fu(23)2025
-3930 y(shell)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)40
-b Fu(17,)26 b(37,)h(46,)g(113,)g(124)2025 4018 y Fp(signedness)14
-b Fb(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)38 b Fu(21)2025 4106 y Fp(sin)17 b Fb(:)c(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)44 b Fu(114)2025 4195 y(sine)26 b(function)20
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)47
-b Fu(114)2025 4283 y(single)27 b(precision)15 b Fb(:)e(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)42 b Fu(115)2025 4371
-y Fp(sinh)13 b Fb(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 b Fu(114)2025
-4459 y(size\(\))11 b Fb(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b
-Fu(83)2025 4547 y Fs(SMP)8 b Fb(:)k(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
-b Fu(23)2025 4635 y(sort)26 b(alphab)r(etically)13 b
-Fb(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)40 b Fu(136,)27 b(139)2025 4723
-y(source)f(co)r(de)12 b Fb(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)39 b Fu(5)2025 4811 y(sp)r(ecial)27
-b(c)n(haracters)8 b Fb(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-35 b Fu(121)2025 4899 y(sp)r(eed)12 b Fb(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39 b
-Fu(8,)26 b(13,)h(18,)g(21,)f(23,)h(50,)g(153)2025 4988
-y Ft(sqravg)17 b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(56)2025 5076
-y(sqra)n(vg\(\))14 b Fb(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)41 b Fu(83)2025 5164
-y Ft(sqrt)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fu(56)2025
-5252 y Fp(sqrt)17 b Fb(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)42
-b Fu(114)2025 5340 y(square)25 b(ro)r(ot)i(function)14
-b Fb(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)41 b Fu(114)p eop
-end
-%%Page: 184 186
-TeXDict begin 184 185 bop 150 -116 a FD(184)2521 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)150 299 y Fs(SSDDRA)21 b
-Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)48 b Fu(162)150 387 y Fs(SSH)9 b Fb(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)36 b Fu(7,)26 b(32)150 474 y(sshort\(\))c
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)48 b Fu(84)150 562 y(standard)26
-b(deviation)8 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34
-b Fu(56)150 650 y(standard)26 b(input)20 b Fb(:)13 b(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)48 b Fu(17,)27 b(128,)g(130,)g(149,)g(151)
-150 737 y Ft(standard_name)16 b Fb(:)g(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)43 b Fu(43)150 825 y(statemen)n(t)21
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)47 b Fu(69)150 913 y(static)26 b(linking)21
-b Fb(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)47 b Fu(8)150 1000 y Ft(stdin)9 b Fb(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)36 b Fu(17,)27
-b(63,)g(128,)g(130,)g(149,)g(151)150 1088 y(stride)13
-b Fb(:)g(:)h(:)f(:)g(:)g(:)g(:)40 b Fu(39,)26 b(40,)h(42,)g(46,)g(136,)
-g(149,)g(150,)g(151,)g(152)150 1176 y(strings)22 b Fb(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)48 b Fu(121)150 1263 y(stub)11 b Fb(:)h(:)i(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)37 b Fu(30)150 1351 y(subsetting)19 b Fb(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)46 b Fu(36,)26 b(38,)h(65,)g(139,)g(140)150 1439
-y Ft(subtract)10 b Fb(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fu(123)150 1526 y(subtracting)26
-b(data)9 b Fb(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
-b Fu(123)150 1614 y(subtraction)15 b Fb(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)42 b Fu(113,)27 b(123)150 1702 y(summary)16
-b Fb(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)43 b Fu(3)150 1789 y(Sun)21 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 b Fu(5)150 1877 y(sw)n(ap)26
-b(space)7 b Fb(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)34 b Fu(18,)26 b(19)150 1965 y(switc)n(hes)14
-b Fb(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)40 b Fu(24)150 2052 y(sym)n(b)r(olic)26
-b(links)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)33 b Fu(7,)26 b(15,)h(18,)g(124,)g(143)150
-2140 y(sync)n(hronous)e(\014le)h(access)10 b Fb(:)15
-b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fu(28)150 2228 y(synon)n(ym)22
-b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)49 b Fu(7)150 2315 y(syn)n(tax)8
-b Fb(:)k(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)34 b Fu(69)150 2567 y FB(T)150
-2684 y Fu(T)-6 b(ak)n(eshi)26 b(Enomoto)11 b Fb(:)j(:)g(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)38 b Fu(162)150 2772 y Fp(tan)9 b
-Fb(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36 b Fu(114)150 2860
-y Fp(tanh)21 b Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 b Fu(114)150
-2947 y(temp)r(orary)26 b(output)f(\014les)17 b Fb(:)c(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)43
-b Fu(13,)27 b(153)150 3035 y(T)192 3051 y(E)235 3035
-y(Xinfo)20 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)47 b Fu(5)150 3123
-y Fp(thr)p 258 3123 24 4 v 33 w(n)n(br)13 b Fb(:)f(:)i(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
-b Fu(24)150 3210 y(threads)6 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fu(19,)27 b(20,)f(23)150
-3298 y Ft(time)12 b Fb(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fu(46,)26 b(65)150
-3386 y(time-a)n(v)n(eraging)e Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)49 b Fu(113)150 3473 y Ft(time_offset)24
-b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-48 b Fu(65)150 3561 y(timestamp)9 b Fb(:)k(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fu(63)150
-3649 y(total)23 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b
-Fu(56)150 3736 y(transp)r(ose)14 b Fb(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)40 b Fu(38,)27 b(145)150
-3824 y Fp(trunc)11 b Fb(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fu(114)150
-3912 y(truncation)26 b(function)12 b Fb(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)39 b Fu(114)150 3999 y(truth)25 b(condition)17 b
-Fb(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 b Fu(156,)27 b(159)150
-4087 y Ft(ttl)8 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fu(56)150 4175 y(ttl\(\))13 b Fb(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)39
-b Fu(83)150 4262 y(t)n(yp)r(e)25 b(con)n(v)n(ersion)11
-b Fb(:)i(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37
-b Fu(61)150 4350 y(t)n(yp)r(e\(\))14 b Fb(:)e(:)h(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)41
-b Fu(83)150 4606 y FB(U)150 4723 y Fu(ub)n(yte\(\))11
-b Fb(:)h(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)37 b Fu(85)2025 299 y(UDUnits)18
-b Fb(:)12 b(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44
-b Fu(5,)26 b(45,)h(64)2025 386 y(uin)n(t\(\))20 b Fb(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)47 b Fu(85)2025 473 y Ft(ulimit)17
-b Fb(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(18)2025 561 y(unary)25
-b(op)r(erations)d Fb(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-48 b Fu(20)2025 648 y Fs(UNICOS)14 b Fb(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40
-b Fu(18)2025 735 y(Unidata)16 b Fb(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fu(5,)26 b(9,)g(45)2025
-822 y(union)f(of)i(t)n(w)n(o)f(\014les)18 b Fb(:)13 b(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fu(14)2025 910 y(unit64\(\))15
-b Fb(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)42 b Fu(85)2025 997 y Ft(units)18
-b Fb(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44 b Fu(45,)27
-b(46,)g(121,)g(134)2025 1084 y Fs(UNIX)21 b Fb(:)13 b(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)48 b Fu(5,)26 b(7,)h(17,)f(24,)h(26)2025
-1171 y(unlimited)e(dimension)13 b Fb(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40
-b Fu(130)2025 1259 y(unpac)n(k\(\))18 b Fb(:)13 b(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46
-b Fu(83)2025 1346 y Ft(unpack\(x\))9 b Fb(:)15 b(:)f(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(54)2025 1433 y(unpac)n(king)17 b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44 b Fu(31,)27
-b(54,)g(130,)g(142,)g(151)2025 1520 y Fs(URL)9 b Fb(:)k(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)36 b Fu(28)2025 1608 y Fp(User's)26 b(Guide)g
-Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)49 b Fu(5)2025 1695 y(ushort\(\))15 b Fb(:)e(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)42
-b Fu(85)2025 1949 y FB(V)2025 2065 y Fu(v)l(alue)25 b(list)18
-b Fb(:)c(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)45 b Fu(77)2025 2152 y(v)l(ariable)26
-b(names)21 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-47 b Fu(153)2025 2240 y(v)l(ariance)14 b Fb(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41
-b Fu(56)2025 2327 y(v)n(ersion)17 b Fb(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44
-b Fu(66)2025 2414 y(Vista)26 b(\(Microsoft)i(op)r(erating)e(system\))9
-b Fb(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fu(7)2025 2668 y FB(W)2025 2784 y Fu(w)n(eigh)n(ted)26
-b(a)n(v)n(erage)18 b Fb(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)45
-b Fu(155)2025 2871 y Ft(wget)23 b Fb(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49
-b Fu(28)2025 2959 y(where\(\))7 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
-b Fu(85)2025 3046 y(while\(\))17 b Fb(:)d(:)f(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44
-b Fu(87)2025 3133 y(whitespace)22 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 b Fu(46)2025
-3220 y(wildcards)9 b Fb(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fu(26,)27 b(36,)g(118,)g(121)2025 3308 y Ft(WIN32)c
-Fb(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fu(7)2025 3395 y(Windo)n(ws)9
-b Fb(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)35 b Fu(5,)27 b(7)2025 3482 y(wrapp)r(ed)f(co)r(ordinates)9
-b Fb(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)36
-b Fu(39,)26 b(42,)h(93,)g(141)2025 3569 y(wrapp)r(ed)f(\014lenames)12
-b Fb(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b
-Fu(27)2025 3657 y(WWW)25 b(do)r(cumen)n(tation)12 b Fb(:)i(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)39 b Fu(5)2025 3890 y FB(X)2025 4006
-y Ft(xargs)9 b Fb(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fu(17,)27 b(28)2025
-4093 y Ft(xlc)10 b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fu(6)2025 4180 y Ft(xlC)10 b Fb(:)j(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)37 b Fu(6)2025 4268 y(XP)25 b(\(Microsoft)j(op)r(erating)f(system\))
-9 b Fb(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36
-b Fu(7)2025 4355 y(`)p Ft(xpl)p Fu(')22 b Fb(:)13 b(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)47 b Fu(51)2025 4607 y FB(Y)2025 4723 y Fu(Y)-6 b(oric)n(k)17
-b Fb(:)c(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)44 b Fu(13,)27 b(21)p eop end
-%%Page: -1 187
-TeXDict begin -1 186 bop 3725 -116 a FD(i)150 299 y Fx(T)-13
-b(able)53 b(of)h(Con)l(ten)l(ts)150 632 y FB(F)-11 b(orew)l(ord)27
-b Fa(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)71 b FB(1)150
-898 y(Summary)18 b Fa(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)62
-b FB(3)150 1164 y(1)135 b(In)l(tro)t(duction)13 b Fa(:)19
-b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-h(:)57 b FB(5)275 1301 y FD(1.1)92 b(Av)-5 b(ailabilit)m(y)26
-b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)54 b FD(5)275 1411 y(1.2)92 b(Op)s(erating)30 b(systems)g
-(compatible)i(with)e FC(NCO)25 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)56
-b FD(5)399 1520 y(1.2.1)93 b(Compiling)30 b FC(NCO)g
-FD(for)g(Microsoft)i(Windo)m(ws)f FC(OS)10 b Fn(:)15
-b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41
-b FD(7)275 1630 y(1.3)92 b(Sym)m(b)s(olic)30 b(Links)11
-b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)41
-b FD(7)275 1740 y(1.4)92 b(Libraries)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)48
-b FD(8)275 1849 y(1.5)92 b(netCDF2/3/4)33 b(and)d(HDF4/5)i(Supp)s(ort)
-19 b Fn(:)14 b(:)h(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)49
-b FD(8)275 1959 y(1.6)92 b(Help)30 b(Requests)h(and)f(Bug)g(Rep)s(orts)
-16 b Fn(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)46
-b FD(10)150 2197 y FB(2)135 b(Op)t(erator)45 b(Strategies)33
-b Fa(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)76 b FB(13)275
-2334 y FD(2.1)92 b(Philosoph)m(y)13 b Fn(:)i(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)43 b FD(13)275 2444
-y(2.2)92 b(Climate)31 b(Mo)s(del)g(P)m(aradigm)12 b Fn(:)k(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)42
-b FD(13)275 2553 y(2.3)92 b(T)-8 b(emp)s(orary)29 b(Output)h(Files)c
-Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)55 b FD(13)275 2663 y(2.4)92 b(App)s(ending)28
-b(V)-8 b(ariables)19 b Fn(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)48
-b FD(14)275 2773 y(2.5)92 b(Simple)30 b(Arithmetic)h(and)f(In)m(terp)s
-(olation)9 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b FD(14)275 2882 y(2.6)92 b(Av)m(eragers)31 b(vs.)g(Concatenators)e
-Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-58 b FD(15)399 2992 y(2.6.1)93 b(Concatenators)32 b Fy(ncrcat)c
-FD(and)i Fy(ncecat)8 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38
-b FD(15)399 3101 y(2.6.2)93 b(Av)m(eragers)32 b Fy(ncea)p
-FD(,)d Fy(ncra)p FD(,)g(and)h Fy(ncwa)17 b Fn(:)e(:)g(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)g(:)47 b FD(16)399 3211 y(2.6.3)93 b(In)m(terp)s(olator)31
-b Fy(ncflint)15 b Fn(:)f(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)45 b FD(16)275 3321 y(2.7)92
-b(Large)31 b(Num)m(b)s(ers)e(of)h(Files)8 b Fn(:)17 b(:)e(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38
-b FD(16)275 3430 y(2.8)92 b(Large)31 b(Datasets)13 b
-Fn(:)18 b(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)43
-b FD(18)275 3540 y(2.9)92 b(Memory)30 b(Requiremen)m(ts)23
-b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)53 b FD(19)399 3649 y(2.9.1)93
-b(Single)31 b(and)e(Multi-\014le)j(Op)s(erators)19 b
-Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)49 b FD(19)399
-3759 y(2.9.2)93 b(Memory)31 b(for)f Fy(ncap2)c Fn(:)16
-b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)57 b FD(20)275 3869 y(2.10)92 b(P)m(erformance)21
-b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50
-b FD(20)150 4107 y FB(3)135 b(NCO)45 b(F)-11 b(eatures)32
-b Fa(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)77
-b FB(23)275 4244 y FD(3.1)92 b(In)m(ternationalization)21
-b Fn(:)d(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)51 b FD(23)275 4354
-y(3.2)92 b(Metadata)32 b(Optimization)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)55
-b FD(23)275 4463 y(3.3)92 b(Op)s(enMP)29 b(Threading)13
-b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)43 b FD(23)275 4573
-y(3.4)92 b(Command)29 b(Line)h(Options)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)45
-b FD(24)275 4682 y(3.5)92 b(Sp)s(ecifying)29 b(Input)g(Files)17
-b Fn(:)g(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)46 b FD(26)275 4792 y(3.6)92
-b(Sp)s(ecifying)29 b(Output)h(Files)21 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50
-b FD(27)275 4902 y(3.7)92 b(Accessing)31 b(Remote)h(Files)c
-Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)57 b FD(28)399 5011 y(3.7.1)93 b
-FC(OP)n(eND)n(AP)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)45 b FD(30)275 5121 y(3.8)92 b(Retaining)31 b(Retriev)m(ed)h(Files)
-d Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-h(:)f(:)g(:)58 b FD(32)275 5230 y(3.9)92 b(Selecting)31
-b(Output)f(File)h(F)-8 b(ormat)28 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56 b FD(33)275 5340 y(3.10)92
-b(Large)31 b(File)h(Supp)s(ort)12 b Fn(:)h(:)j(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)42
-b FD(35)p eop end
-%%Page: -2 188
-TeXDict begin -2 187 bop 150 -116 a FD(ii)2606 b FC(NCO)30
-b FD(4.0.9)j(User's)d(Guide)275 83 y(3.11)92 b(Subsetting)30
-b(V)-8 b(ariables)25 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)53
-b FD(36)275 193 y(3.12)92 b(Subsetting)30 b(Co)s(ordinate)h(V)-8
-b(ariables)9 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39
-b FD(38)275 302 y(3.13)92 b(C)30 b(and)g(F)-8 b(ortran)31
-b(Index)e(con)m(v)m(en)m(tions)15 b Fn(:)j(:)e(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)45 b FD(38)275 412 y(3.14)92 b(Hyp)s(erslabs)10
-b Fn(:)k(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)39
-b FD(39)275 521 y(3.15)92 b(Stride)9 b Fn(:)15 b(:)g(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38
-b FD(40)275 631 y(3.16)92 b(Multislabs)22 b Fn(:)16 b(:)g(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)52 b FD(41)275
-741 y(3.17)92 b(W)-8 b(rapp)s(ed)30 b(Co)s(ordinates)16
-b Fn(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)46 b FD(42)275 850 y(3.18)92 b(Auxiliary)31
-b(Co)s(ordinates)11 b Fn(:)k(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b FD(43)275
-960 y(3.19)92 b(UDUnits)31 b(Supp)s(ort)18 b Fn(:)13
-b(:)j(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)48 b FD(45)275 1069 y(3.20)92
-b(Rebasing)31 b(Time)f(Co)s(ordinate)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)46 b FD(48)275
-1179 y(3.21)92 b(Missing)31 b(v)-5 b(alues)24 b Fn(:)15
-b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)53 b FD(49)275
-1289 y(3.22)92 b(Ch)m(unking)16 b Fn(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b FD(51)275 1398 y(3.23)92
-b(De\015ation)29 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)57 b FD(54)275 1508 y(3.24)92 b(P)m(ac)m(k)m(ed)32
-b(data)27 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)56 b FD(54)399 1617 y(P)m(ac)m(king)32 b(Algorithm)19
-b Fn(:)e(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)49 b FD(55)399
-1727 y(Unpac)m(king)31 b(Algorithm)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)54 b FD(55)399 1836 y(Default)32 b(Handling)e(of)h(P)m(ac)m(k)m
-(ed)h(Data)14 b Fn(:)j(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)44 b FD(56)275 1946 y(3.25)92 b(Op)s(eration)30 b(T)m(yp)s(es)14
-b Fn(:)g(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)43 b FD(56)275
-2056 y(3.26)92 b(T)m(yp)s(e)30 b(Con)m(v)m(ersion)14
-b Fn(:)h(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)43 b FD(61)399
-2165 y(3.26.1)93 b(Automatic)32 b(t)m(yp)s(e)f(con)m(v)m(ersion)21
-b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50
-b FD(61)399 2275 y(3.26.2)93 b(Man)m(ual)32 b(t)m(yp)s(e)e(con)m(v)m
-(ersion)22 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)52 b FD(62)275 2384 y(3.27)92 b(Batc)m(h)32 b(Mo)s(de)26
-b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)56
-b FD(62)275 2494 y(3.28)92 b(History)31 b(A)m(ttribute)21
-b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)51 b FD(63)275
-2604 y(3.29)92 b(File)32 b(List)e(A)m(ttributes)24 b
-Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)53 b FD(63)275 2713 y(3.30)92
-b FC(CF)31 b FD(Con)m(v)m(en)m(tions)15 b Fn(:)h(:)f(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)44 b FD(64)275 2823 y(3.31)92 b FC(ARM)31
-b FD(Con)m(v)m(en)m(tions)12 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-42 b FD(65)275 2932 y(3.32)92 b(Op)s(erator)30 b(V)-8
-b(ersion)28 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)57
-b FD(66)150 3175 y FB(4)135 b(Op)t(erator)45 b(Reference)h(Man)l(ual)26
-b Fa(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)71 b FB(67)275 3312 y FD(4.1)92 b Fy(ncap2)29
-b FD(netCDF)i(Arithmetic)g(Pro)s(cessor)26 b Fn(:)15
-b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)55 b FD(68)399 3421 y(4.1.1)93
-b(Syn)m(tax)30 b(of)h Fy(ncap2)e FD(statemen)m(ts)e Fn(:)15
-b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)55 b FD(69)399
-3531 y(4.1.2)93 b(Expressions)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)52 b FD(69)399 3641 y(4.1.3)93 b(Dimensions)28
-b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)57 b
-FD(73)399 3750 y(4.1.4)93 b(Left)31 b(hand)e(casting)g
-Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)57 b FD(74)399 3860 y(4.1.5)93
-b(Arra)m(ys)30 b(and)g(h)m(yp)s(erslabs)11 b Fn(:)k(:)g(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)41 b
-FD(74)399 3969 y(4.1.6)93 b(A)m(ttributes)9 b Fn(:)16
-b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b
-FD(77)399 4079 y(4.1.7)93 b(Num)m(b)s(er)29 b(literals)e
-Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55 b FD(78)399 4188 y(4.1.8)93
-b(if)30 b(statemen)m(t)17 b Fn(:)h(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)47 b FD(79)399 4298 y(4.1.9)93 b(prin)m(t)30 b(statemen)m(t)f
-Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b FD(80)399 4408 y(4.1.10)93
-b(Missing)31 b(v)-5 b(alues)31 b(ncap2)17 b Fn(:)e(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)46 b
-FD(81)399 4517 y(4.1.11)93 b(Metho)s(ds)31 b(and)e(functions)18
-b Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48
-b FD(82)399 4627 y(4.1.12)93 b(RAM)31 b(v)-5 b(ariables)15
-b Fn(:)h(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)45 b FD(85)399 4736 y(4.1.13)93
-b(Where)31 b(statemen)m(t)12 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)41
-b FD(85)399 4846 y(4.1.14)93 b(Lo)s(ops)13 b Fn(:)i(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)42 b FD(87)399
-4956 y(4.1.15)93 b(Include)30 b(\014les)16 b Fn(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)45 b FD(88)399 5065 y(4.1.16)93 b Fy(sort)30
-b FD(metho)s(ds)14 b Fn(:)g(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43
-b FD(88)399 5175 y(4.1.17)93 b(Irregular)30 b(Grids)15
-b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)45 b FD(92)399 5284 y(4.1.18)93
-b(Bilinear)32 b(in)m(terp)s(olation)d Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)57 b FD(94)p
-eop end
-%%Page: -3 189
-TeXDict begin -3 188 bop 3674 -116 a FD(iii)399 83 y(4.1.19)93
-b(GSL)30 b(sp)s(ecial)h(functions)21 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)51 b FD(96)399
-193 y(4.1.20)93 b(GSL)30 b(in)m(terp)s(olation)11 b Fn(:)17
-b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)41 b FD(104)399 302 y(4.1.21)93 b(GSL)30 b(least-squares)i
-(\014tting)19 b Fn(:)d(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-49 b FD(106)399 412 y(4.1.22)93 b(GSL)30 b(statistics)11
-b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b FD(107)399 521 y(4.1.23)93
-b(GSL)30 b(random)g(n)m(um)m(b)s(er)f(generation)10 b
-Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40 b FD(109)399 631 y(4.1.24)93
-b(Examples)31 b(ncap2)d Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b FD(111)399
-741 y(4.1.25)93 b(In)m(trinsic)31 b(mathematical)h(metho)s(ds)20
-b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)51 b FD(113)399 850 y(4.1.26)93
-b(Op)s(erators)30 b(precedence)h(and)f(asso)s(ciativit)m(y)17
-b Fn(:)h(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-48 b FD(116)399 960 y(4.1.27)93 b(ID)31 b(Quoting)22
-b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)52 b FD(116)275
-1069 y(4.2)92 b Fy(ncatted)28 b FD(netCDF)j(A)m(ttribute)g(Editor)c
-Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b FD(118)275
-1179 y(4.3)92 b Fy(ncbo)29 b FD(netCDF)i(Binary)f(Op)s(erator)16
-b Fn(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46
-b FD(123)275 1289 y(4.4)92 b Fy(ncea)29 b FD(netCDF)i(Ensem)m(ble)f(Av)
-m(erager)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55
-b FD(128)275 1398 y(4.5)92 b Fy(ncecat)28 b FD(netCDF)j(Ensem)m(ble)g
-(Concatenator)9 b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)39 b FD(130)275
-1508 y(4.6)92 b Fy(ncflint)28 b FD(netCDF)j(File)h(In)m(terp)s(olator)
-27 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b FD(132)275
-1617 y(4.7)92 b Fy(ncks)29 b FD(netCDF)i(Kitc)m(hen)g(Sink)8
-b Fn(:)14 b(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)38 b FD(135)399 1727 y(Options)30 b(sp)s(eci\014c)g(to)h
-Fy(ncks)11 b Fn(:)k(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b FD(136)275 1836
-y(4.8)92 b Fy(ncpdq)29 b FD(netCDF)i(P)m(erm)m(ute)g(Dimensions)f(Quic)
-m(kly)f Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)58 b FD(142)399 1946 y(P)m(ac)m(king)32 b(and)e(Unpac)m
-(king)h(F)-8 b(unctions)16 b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)46 b FD(142)399 2056 y(Dimension)31 b(P)m(erm)m(utation)19
-b Fn(:)e(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)50 b FD(144)275 2165 y(4.9)92
-b Fy(ncra)29 b FD(netCDF)i(Record)f(Av)m(erager)13 b
-Fn(:)18 b(:)d(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)43
-b FD(149)275 2275 y(4.10)92 b Fy(ncrcat)29 b FD(netCDF)i(Record)f
-(Concatenator)15 b Fn(:)i(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)45 b FD(151)275
-2384 y(4.11)92 b Fy(ncrename)28 b FD(netCDF)j(Renamer)10
-b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)40
-b FD(153)275 2494 y(4.12)92 b Fy(ncwa)29 b FD(netCDF)i(W)-8
-b(eigh)m(ted)33 b(Av)m(erager)27 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)56 b FD(155)399 2604 y(4.12.1)93 b(Mask)31 b(condition)26
-b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)55 b FD(156)399 2713 y(4.12.2)93
-b(Normalization)33 b(and)d(In)m(tegration)8 b Fn(:)17
-b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b FD(157)150 2956 y
-FB(5)135 b(Con)l(tributing)14 b Fa(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)58 b FB(161)275 3093
-y FD(5.1)92 b(Con)m(tributors)15 b Fn(:)f(:)i(:)f(:)g(:)h(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)45 b FD(161)275 3202 y(5.2)92
-b(Prop)s(osals)30 b(for)g(Institutional)h(F)-8 b(unding)13
-b Fn(:)i(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)43 b FD(162)150
-3445 y FB(6)135 b(CCSM)44 b(Example)23 b Fa(:)e(:)f(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)h(:)67 b FB(165)150 3714 y(7)135 b(References)27
-b Fa(:)21 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)71 b FB(173)150 3984 y(General)46 b(Index)24
-b Fa(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
-h(:)f(:)68 b FB(175)p eop end
-%%Page: -4 190
-TeXDict begin -4 189 bop eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/nco.texi b/doc/nco.texi
index a66d6df..f454d5c 100644
--- a/doc/nco.texi
+++ b/doc/nco.texi
@@ -1,17 +1,19 @@
 \input texinfo @c -*-texinfo-*- 
+ at c \input /home/zender/texinfo_fedora.tex
+ at c \input /home/zender/texinfo_ubuntu.tex
 
 @c 19980817: TeX-based systems (texi2dvi, texi2dvi --pdf) require texinfo.tex
 @c Hyper-text systems (texi2html, makeinfo) do not require texinfo.tex
 
 @ignore
 
-$Header: /cvsroot/nco/nco/doc/nco.texi,v 1.660 2012/02/14 05:39:03 zender Exp $
+$Header: /cvsroot/nco/nco/doc/nco.texi,v 1.917 2013/12/03 00:28:01 zender Exp $
 
 Purpose: TeXInfo documentation for NCO suite
 
 URL: http://nco.sf.net/nco.texi
 
-Copyright (C) 1995--2012 Charlie Zender
+Copyright (C) 1995--2013 Charlie Zender
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3
 or any later version published by the Free Software Foundation;
@@ -27,9 +29,9 @@ Department of Earth System Science
 University of California, Irvine
 Irvine, CA 92697-3100
 
-After editing any hyperlink locations, use 
+After editing any hyperlink locations, Emacs users update indices with
 C-c C-u C-a	texinfo-all-menus-update
-C-c C-u C-e	texinfo-every-node-update
+C-c C-u C-e	texinfo-every-node-updatexb
 
 Multiple files:
 M-x texinfo-multiple-files-update
@@ -40,7 +42,7 @@ cd ~/nco/doc;texi2dvi nco.texi; makeinfo --html --ifinfo --no-split --output=nco
 dvips -o nco.ps nco.dvi 
 dvips -Ppdf -G0 -o nco.ps nco.dvi 
 makeinfo --html --ifinfo --no-split --output=nco.html nco.texi
-makeinfo --no-split --output=nco.info nco.texi 
+makeinfo --no-split --output=nco.info nco.texi
 makeinfo --no-headers --no-split --output=nco.txt nco.texi
 makeinfo --xml --no-split --output=nco.xml nco.texi
 makeinfo --docbook --no-split --output=nco.xml nco.texi
@@ -50,11 +52,16 @@ texi2dvi --output=nco.dvi nco.texi
 texi2dvi --pdf --output=nco.pdf nco.texi
 texi2html -monolithic -verbose nco.texi
 texi2html -l2h -l2h_tmp=./l2h_tmp -monolithic -verbose nco.texi # Invoke latex2html
-cd ~/nco/doc;/usr/bin/scp index.shtml nco_news.shtml ChangeLog TODO README VERSION nco.dvi nco.html nco.info* nco.pdf nco_*.png nco.ps nco.texi nco.txt nco.xml ../data/ncap.in ../data/ncap2.in zender,nco at web.sf.net:/home/project-web/nco/htdocs;cd -
-cd ~/nco/doc;      scp -p index.shtml nco_news.shtml ChangeLog TODO README VERSION nco.dvi nco.html nco.info* nco.pdf nco_*.png nco.ps nco.texi nco.txt nco.xml ../data/ncap.in ../data/ncap2.in dust.ess.uci.edu:/var/www/html/nco;cd -
-# 20120203 provisional commands to copy PNG images for nco.html
+cd ~/nco/doc;/usr/bin/scp index.shtml nco_news.shtml ChangeLog TODO README VERSION nco.dvi nco.html nco.info* nco.pdf nco.ps nco.texi nco.txt nco.xml ../data/ncap.in ../data/ncap2.in zender,nco at web.sf.net:/home/project-web/nco/htdocs;cd -
+cd ~/nco/doc;      scp -p index.shtml nco_news.shtml ChangeLog TODO README VERSION nco.dvi nco.html nco.info* nco.pdf nco.ps nco.texi nco.txt nco.xml ../data/ncap.in ../data/ncap2.in dust.ess.uci.edu:/var/www/html/nco;cd -
+# 20130806 Copy CMIP5 images (takes additional time)
+cd ~/nco/doc/xmp;/usr/bin/scp fgr*.png fgr*.eps zender,nco at web.sf.net:/home/project-web/nco/htdocs/xmp;cd -
+cd ~/nco/doc/xmp;/usr/bin/scp fgr*.png fgr*.eps                 dust.ess.uci.edu:/var/www/html/nco/xmp;cd -
+# 20120203 Copy all nco.html PNG images (takes additional time)
 cd ~/nco/doc;/usr/bin/scp nco_*.png zender,nco at web.sf.net:/home/project-web/nco/htdocs;cd -
 cd ~/nco/doc;scp -p nco_*.png dust.ess.uci.edu:/var/www/html/nco;cd -
+# 20130801 Copy nco.texi to Ubuntu machine for quick build-tests
+scp ~/nco/doc/nco.texi givre.ess.uci.edu:nco/doc
 
 NB: @cindex references in footnotes propagate to PDF file, but not to
     HTML files, bug-report sent to makeinfo people 20040229
@@ -85,6 +92,7 @@ Legend (defined in "highlighting" section of TeXInfo manual):
 @uref{}: URL with optional alternate text, e.g., @uref{http://nco.sf.net,NCO homepage}
 @url{}: URL, synonym for @uref
 @var{}: Metasyntactic variable, e.g., @var{}
+ at verbatim: Anything goes inside environment
 @w{}: Unbreakable text, e.g., @w{of 1}
 
 Use '@*' to force hard carriage return
@@ -103,25 +111,27 @@ Octave TeXInfo manual shows clean TeXInfo structure
 @setfilename nco.info
 
 @c Define edition, date, ...
- at set nco-edition 4.0.9
- at set doc-edition 4.0.9
- at set copyright-years 1995--2012
- at set update-year 2012
- at set update-date 13 February 2012
- at set update-month February 2012
+ at set nco-edition 4.3.9
+ at set doc-edition 4.3.9
+ at set copyright-years 1995--2013
+ at set update-year 2013
+ at set update-date 2 December 2013
+ at set update-month December 2013
 
- at settitle @acronym{NCO} @value{nco-edition} User's Guide
+ at settitle @acronym{NCO} @value{nco-edition} User Guide
 
 @c Uncomment following line to produce guide in smallbook format
 @c @smallbook
 @c Merge function index into concept index
 @syncodeindex fn cp
- at c end of header
 
- at c 20090226 Add bibliography capabilities
+ at c 20090226 Add bibliography capabilities as per
+ at c http://lists.gnu.org/archive/html//help-texinfo/2004-12/txtPW9h_VG8ez.txt
 @include my-bib-macros.texi
 @mybibuselist{References}
 
+ at c end of header
+
 @c TeXInfo macros may not appear before TeXInfo @setfilename header
 @c [idx] Index
 @macro idx {}
@@ -195,7 +205,7 @@ x
 @c install-info installs NCO info into this category
 @dircategory netCDF
 @direntry
-* NCO::        User's Guide for the netCDF Operator suite
+* NCO::        User Guide for the netCDF Operator suite
 @end direntry
 @iftex
 @tolerance 10000
@@ -232,7 +242,7 @@ manipulate and analyze netCDF files.
 
 Copyright @copyright{} @value{copyright-years} Charlie Zender
 
-This is the first edition of the @cite{NCO User's Guide},@*
+This is the first edition of the @cite{NCO User Guide},@*
 and is consistent with @w{version 2} of @file{texinfo.tex}.
 
 Permission is granted to copy, distribute and/or modify this document 
@@ -255,7 +265,6 @@ Permission is granted to process this file through TeX and print the
 results, provided the printed document carries copying permission
 notice identical to this one except for the removal of this paragraph
 (this paragraph not being relevant to the printed manual).
-
 @end ignore
 @end ifinfo
 
@@ -264,8 +273,8 @@ notice identical to this one except for the removal of this paragraph
 @titlepage
 @html
 <meta name="Author" content="Charlie Zender">
-<meta name="Keywords" content="NCO documentation, NCO User's Guide,
-netCDF, operator, GCM, CCM, scientific data, ncbo, ncea, ncecat,
+<meta name="Keywords" content="NCO documentation, NCO User Guide,
+netCDF, operator, GCM, CCM, scientific data, ncbo, ncfe, ncecat,
 ncflint, ncks, ncra, ncrcat, ncrename, ncwa">
 @end html
 @html
@@ -274,7 +283,7 @@ ncflint, ncks, ncra, ncrcat, ncrename, ncwa">
 @end html
 @ignore
 @end ignore
- at title NCO User's Guide
+ at title NCO User Guide
 @subtitle A suite of netCDF operators
 @subtitle Edition @value{doc-edition}, for @acronym{NCO} Version @value{nco-edition}
 @subtitle @value{update-month}
@@ -293,7 +302,7 @@ ncflint, ncks, ncra, ncrcat, ncrename, ncwa">
 Copyright @copyright{} @value{copyright-years} Charlie Zender.
 
 @sp 2
-This is the first edition of the @cite{NCO User's Guide},@*
+This is the first edition of the @cite{NCO User Guide},@*
 and is consistent with @w{version 2} of @file{texinfo.tex}.
 @sp 2
 
@@ -320,32 +329,38 @@ Irvine, CA 92697-3100@*
 @sp 2
 @c Cover art by Robynn Rudel
 @end titlepage
+
+ at c Print table of contents
+ at contents
+
 @node Top, Foreword, (dir), (dir)
 @ifinfo
- at top NCO User's Guide
+ at top NCO User Guide
 @c node format: node-name, next, previous, up
 
 @ifhtml
 @cartouche
 @html
-<p><b>Note to readers of the NCO User's Guide in HTML format</b>: 
-<b>The <a href="./nco.pdf">NCO User's Guide in PDF format</a> 
+<p><b>Note to readers of the NCO User Guide in HTML format</b>: 
+<b>The <a href="./nco.pdf">NCO User Guide in PDF format</a> 
 (also on <a href="http://nco.sf.net/nco.pdf">SourceForge</a>)
 contains the complete NCO documentation.</b> 
 <br>This HTML documentation is equivalent except it refers you to the
 printed (i.e., DVI, PostScript, and PDF) documentation for description
-of complex mathematical expressions. 
+of complex mathematical expressions. Also, images appear only in the
+PDF document due to SourceForge limitations.
 @end html
 @end cartouche
 @end ifhtml
 @ifnothtml
- at emph{Note to readers of the NCO User's Guide in Info format}: 
- at emph{The @uref{./nco.pdf,NCO User's Guide in PDF format}
+ at emph{Note to readers of the NCO User Guide in Info format}: 
+ at emph{The @uref{./nco.pdf,NCO User Guide in PDF format}
 (also on @uref{http://nco.sf.net/nco.pdf,SourceForge})
 contains the complete @acronym{NCO} documentation.}
 This Info documentation is equivalent except it refers you to the 
 printed (i.e., DVI, PostScript, and PDF) documentation for description 
-of complex mathematical expressions. 
+of complex mathematical expressions. Also, images appear only in the
+PDF document due to SourceForge limitations.
 @end ifnothtml
 
 The netCDF Operators, or @acronym{NCO}, are a suite of programs known as 
@@ -359,7 +374,7 @@ renaming), and outputs a processed netCDF file.
 Although most users of netCDF data are involved in scientific research,
 these data formats, and thus @acronym{NCO}, are generic and are equally
 useful in fields from agriculture to zoology.
-The @acronym{NCO} User's Guide illustrates @acronym{NCO} use with
+The @acronym{NCO} User Guide illustrates @acronym{NCO} use with
 examples from the field of climate modeling and analysis. 
 The @acronym{NCO} homepage is @uref{http://nco.sf.net}, and
 there is a mirror at @uref{http://dust.ess.uci.edu/nco}.
@@ -374,16 +389,19 @@ Charlie Zender
 @end ifinfo
 
 @menu
-* Foreword::                    
-* Summary::                     
-* Introduction::                
-* Strategies::                  
-* Common features::             
-* Operator Reference Manual::   
-* Contributing::                
-* CCSM Example::                
-* mybibnode::                   
-* General Index::               
+* Foreword::
+* Summary::
+* Introduction::
+* Strategies::
+* Common features::
+* Operator Reference Manual::
+* Contributing::
+* Quick Start::
+* CMIP5 Example::
+* Parallel::
+* CCSM Example::
+* mybibnode::
+* General Index::
 @end menu
 
 @html
@@ -402,7 +420,7 @@ development of @acronym{NCO}.
 Thanks espcially to Jan Polcher, Keith Lindsay, Arlindo @w{da Silva},
 John Sheldon, and William Weibel for stimulating suggestions and
 correspondence. 
-Your encouragment motivated me to complete the @cite{NCO User's Guide}.
+Your encouragment motivated me to complete the @cite{NCO User Guide}.
 So if you like @acronym{NCO}, send me a note!
 @w{I should} mention that @acronym{NCO} is not connected to or
 officially endorsed by Unidata, @acronym{ACD}, @acronym{ASP},
@@ -459,27 +477,32 @@ Charlie Zender@*
 March 2008@*
 Grenoble, France@*
 
- at ignore
 @sp 2
-Under construction:
-The end of the NSF SEI grant curtailed @acronym{NCO} development. 
-Following that, NSF grant
- at uref{http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0714088,ARC-0714088}.
-and 
-NASA grant
- at uref{http://www.nasa.gov/mission_pages/IPY/main/PolarExploration.html,NNX07AR23G}.
-supported Henry Butowsky until May, 2010 while he developed key
- at command{ncap2} features used in our research. 
-Fortunately, the NASA ACCESS program has now agreed to fund NCO
-support for netCDF4 group functionality
- at uref{http://www.nasa.gov/mission_pages/IPY/main/PolarExploration.html,NNX07AR23G}.
-.@*
+The end of the @acronym{NSF} SEI grant in August, 2008 curtailed @acronym{NCO}
+development.  
+Fortunately we could justify supporting Henry Butowsky on other research 
+grants until May, 2010 while he developed the key @command{ncap2}
+features used in our climate research.
+And recentely the NASA ACCESS program commenced funding NCO support for
+netCDF4 group functionality.@* 
+Thus @acronym{NCO} will grow and evade bit-rot for the foreseeable future.
+
+On a personal level, I continue to receive with gratitude the thanks of
+ at acronym{NCO} users at nearly every scientific meeting I attend. 
+People introduce themselves, shake my hand and extol, sometimes rather
+effusively, these time-saving tools.
+These exchanges lighten me like anti-gravity.
+Sometimes I daydream how many hours @acronym{NCO} has turned from grunt
+work to productive research for researchers world-wide, or from research
+into early happy hours. 
+It's a cool feeling.
+
+ at c @uref{http://www.nasa.gov/mission_pages/IPY/main/PolarExploration.html,NNX07AR23G}.@*
 @sp 1
 @noindent
 Charlie Zender@*
-2012@*
+April, 2012@*
 Irvine, California@*
- at end ignore
 
 @html
 <a name="smr"></a> <!-- http://nco.sf.net/nco.html#smr -->
@@ -511,15 +534,16 @@ netCDF itself.
 @cindex introduction
 
 @menu
-* Availability::                
-* Compatability::               
-* Symbolic Links::              
-* Libraries::                   
-* netCDF2/3/4 and HDF4/5 Support::  
-* Help Requests and Bug Reports::  
+* Availability::
+* How to Use This guide::
+* Compatability::
+* Symbolic Links::
+* Libraries::
+* netCDF2/3/4 and HDF4/5 Support::
+* Help Requests and Bug Reports::
 @end menu
 
- at node Availability, Compatability, Introduction, Introduction
+ at node Availability, How to Use This guide, Introduction, Introduction
 @section Availability
 @cindex @acronym{NCO} availability
 @cindex source code
@@ -542,15 +566,15 @@ with @samp{tar -xvzf nco.tar.gz}.
 @cindex @acronym{HTML}
 @cindex @TeX{}info
 @cindex Info
- at cindex @cite{User's Guide}
- at cindex @cite{NCO User's Guide}
+ at cindex @cite{User Guide}
+ at cindex @cite{NCO User Guide}
 The documentation for @acronym{NCO} is called the 
- at cite{NCO User's Guide}. 
-The @cite{User's Guide} is available in Postscript, @acronym{HTML},
- at acronym{DVI}, @TeX{}info, and Info formats.
+ at cite{NCO User Guide}. 
+The @cite{User Guide} is available in @acronym{PDF}, Postscript,
+ at acronym{HTML}, @acronym{DVI}, @TeX{}info, and Info formats.
 These formats are included in the source distribution in the files
- at file{nco.ps}, @file{nco.html}, @file{nco.dvi}, @file{nco.texi}, and
- at file{nco.info*}, respectively.
+ at file{nco.pdf}, @file{nco.ps}, @file{nco.html}, @file{nco.dvi},
+ at file{nco.texi}, and @file{nco.info*}, respectively.
 All the documentation descends from a single source file,
 @file{nco.texi}
 @footnote{   
@@ -572,10 +596,11 @@ However, some of the complex mathematical expressions needed to describe
 A complete list of papers and publications on/about @acronym{NCO} 
 is available on the @acronym{NCO} homepage.
 Most of these are freely available. 
- at c fxm query replace mybibnode with @mybibnode{}
- at c The primary refereed publications are @mybibcite{ZeM06} and
- at c @mybibcite{Zen07}. 
-The primary refereed publications are fxm ZeM06 and fxm Zen07. 
+ at c 20130526 fxm Replace mybibnode with @mybibnode{}
+ at c 20130526 Doing so, unfortunately, produces error "TeX capacity exceeded, sorry [input stack size=5000]."
+ at c 20130526 Denude document of @mybibcite{} until it works
+ at c The primary refereed publications are @mybibcite{ZeM06} and @mybibcite{Zen08}. 
+The primary refereed publications are ZeM06 and Zen08. 
 These contain copyright restrictions which limit their redistribution,
 but they are freely available in preprint form from the @acronym{NCO}.
 
@@ -584,7 +609,7 @@ If you want to quickly see what the latest improvements in @acronym{NCO}
 are (without downloading the entire source distribution), visit the
 @acronym{NCO} homepage at 
 @uref{http://nco.sf.net}.
-The @acronym{HTML} version of the @cite{User's Guide} is also available 
+The @acronym{HTML} version of the @cite{User Guide} is also available 
 online through the World Wide Web at @acronym{URL}
 @uref{http://nco.sf.net/nco.html}.
 @cindex netCDF
@@ -601,7 +626,50 @@ This tests incorporates an image using the @code{@@image} command.
 @image{/data/zender/ps/odxc,6in,}
 @end ignore
 
- at node Compatability, Symbolic Links, Availability, Introduction
+ at node How to Use This guide, Compatability, Availability, Introduction
+ at section How to Use This Guide
+ at cindex contents
+ at cindex introduction
+Detailed instructions about
+ at uref{http://nco.sf.net/#Source, how to download the newest version}, 
+and @uref{http://nco.sf.net/#bld, how to complie source code},
+as well as a @uref{http://nco.sf.net/#FAQ, @acronym{FAQ}} and 
+descriptions of @uref{http://nco.sf.net/#bug, Known Problems} etc.
+are on our homepage 
+(@uref{http://nco.sf.net/}).
+
+There are twelve operators in the current version (@value{nco-edition}).
+The function of each is explained in @ref{Operator Reference Manual, Operator Reference Manual}.
+Many of the tasks that @acronym{NCO} can accomplish are described during
+the explanation of common @acronym{NCO} Features (@pxref{Common features}).
+More specific use examples for each operator can be seen by visiting the
+operator-specific examples in the @ref{Operator Reference Manual}.
+These can be found directly by prepending the operator name with the
+ at code{xmp_} tag, e.g., @uref{http://nco.sf.net/nco.html#xmp_ncks}.
+Also, users can type the operator name on the shell command line to 
+see all the available options, or type, e.g., @samp{man ncks} to see
+a help man-page.
+
+ at acronym{NCO} is a command-line language.
+You can either use an operator after the prompt (e.g., @samp{$} here),
+like, 
+ at example
+$ @command{operator} @option{[options]} @file{input} @file{[output]}
+ at end example
+or write all commands lines into a shell script, as in
+the @acronym{CMIP5} Example (@pxref{CMIP5 Example}).
+
+If you are new to @acronym{NCO}, the Quick Start (@pxref{Quick Start})
+shows simple examples about how to use @acronym{NCO} on different kinds
+of data files.  
+More detailed ``real-world'' examples are in the
+ at ref{CMIP5 Example, @acronym{CMIP5} Example}. 
+The @ref{General Index, Index} is presents multiple keyword entries for
+the same subject. 
+If these resources do not help enough, please 
+ at pxref{Help Requests and Bug Reports}.
+
+ at node Compatability, Symbolic Links, How to Use This guide, Introduction
 @section Operating systems compatible with @acronym{NCO}
 @cindex @acronym{OS}
 @cindex @acronym{IBM}
@@ -653,14 +721,17 @@ Given this, the only difficulty in implementing @acronym{NCO} on a
 particular platform is standardization of various @w{C}-language API
 system calls. 
 @acronym{NCO} code is tested for @acronym{ANSI} compliance by
-compiling with @w{C compilers} including those from 
+compiling with @w{C99 compilers} including those from 
 @cindex @command{CC}
 @cindex @command{c++}
 @cindex @command{cc}
+ at cindex @command{clang}
 @cindex @command{como}
 @cindex @command{cxx}
 @cindex @command{gcc}
+ at cindex @command{g++}
 @cindex @command{icc}
+ at cindex @command{MVS}
 @cindex @command{pgcc}
 @cindex @command{pgCC}
 @cindex @command{pathcc}
@@ -677,6 +748,8 @@ Cray (@samp{cc}),
 @acronym{HP}/Compaq/@acronym{DEC} (@samp{cc}),
 @acronym{IBM} (@samp{xlc -c -qlanglvl=extc99}),
 Intel (@samp{icc -std=c99}),
+ at cindex @acronym{LLVM}
+ at acronym{LLVM} (@samp{clang}),
 @acronym{NEC} (@samp{cc}),
 PathScale (QLogic) (@samp{pathcc -std=c99}),
 @acronym{PGI} (@samp{pgcc -c9x}),
@@ -695,6 +768,7 @@ Cray (@samp{CC}),
 @acronym{HP}/Compaq/@acronym{DEC} (@samp{cxx}),
 @acronym{IBM} (@samp{xlC}),
 Intel (@samp{icc}),
+Microsoft (@samp{MVS}),
 @acronym{NEC} (@samp{c++}),
 PathScale (Qlogic) (@samp{pathCC}),
 @acronym{PGI} (@samp{pgCC}),
@@ -814,11 +888,13 @@ platform, and the change in the wallclock time for execution.}.
 @end ignore
 
 @menu
-* Windows Operating System::    
+* Windows Operating System::
 @end menu
 
 @html
 <a name="wnd"></a> <!-- http://nco.sf.net/nco.html#wnd -->
+<a name="windows"></a> <!-- http://nco.sf.net/nco.html#windows -->
+<a name="qt"></a> <!-- http://nco.sf.net/nco.html#qt -->
 @end html
 @node Windows Operating System,  , Compatability, Compatability
 @subsection Compiling @acronym{NCO} for Microsoft Windows @acronym{OS}
@@ -827,11 +903,25 @@ platform, and the change in the wallclock time for execution.}.
 @cindex XP (Microsoft operating system)
 @cindex NT (Microsoft operating system)
 @cindex Vista (Microsoft operating system)
+ at cindex @acronym{MVS}
+ at cindex Microsoft Visual Studio
 
 @acronym{NCO} has been successfully ported and tested on most Microsoft  
-Windows operating systems including: 95/98/NT/2000/XP/Vista.
-The switches necessary to accomplish this are included in the standard
+Windows operating systems including: XP SP2/Vista/7.
+Support is provided for compiling either native Windows executables,
+using the Microsoft Visual Studio 2010 Compiler, or with Cygwin, the
+UNIX-emulating compatibility layer with the GNU toolchain.
+The switches necessary to accomplish both are included in the standard
 distribution of @acronym{NCO}.
+
+ at cindex Qt
+ at cindex C99
+Using Microsoft Visual Studio (@acronym{MVS}), one must build
+ at acronym{NCO} with the C++ compiler since MVS does not support C99.
+Qt, a convenient integrated development environment, was used to convert
+the project files to @acronym{MVS} format.
+The Qt files themselves are distributed in the @file{nco/qt} directory.
+
 Using the freely available Cygwin (formerly gnu-win32) development
 environment  
 @footnote{The Cygwin package is available from@*
@@ -892,11 +982,11 @@ To minimize duplication of source code, multiple operators sometimes
 share the same underlying source.
 This is accomplished by symbolic links from a single underlying
 executable program to one or more invoked executable names.
-For example, @command{ncea} and @command{ncrcat} are symbolically linked  
+For example, @command{nces} and @command{ncrcat} are symbolically linked  
 to the @command{ncra} executable.
 The @command{ncra} executable behaves slightly differently based on its
 invocation name (i.e., @samp{argv[0]}), which can be 
- at command{ncea}, @command{ncra}, or @command{ncrcat}.
+ at command{nces}, @command{ncra}, or @command{ncrcat}.
 Logically, these are three different operators that happen to share 
 the same executable.
 
@@ -956,13 +1046,13 @@ the system libraries have been moved, renamed, or deleted since
 will fail with a message that they cannot find a dynamically loaded (aka
 @dfn{shared object} or @samp{.so}) library. 
 This will produce a distinctive error message, such as
- at samp{ld.so.1:@- /usr/local/bin/ncea:@- fatal:@- libsunmath. at -so.1:@- can't
+ at samp{ld.so.1:@- /usr/local/bin/nces:@- fatal:@- libsunmath. at -so.1:@- can't
 open at - file:@- errno at -=2}.   
 If you received an error message like this, ask your system 
 administrator to diagnose whether the library is truly missing
 @footnote{The @command{ldd} command, if it is available on your system,
 will tell you where the executable is looking for each dynamically
-loaded library. Use, e.g., @code{ldd `which ncea`}.}, or whether you
+loaded library. Use, e.g., @code{ldd `which nces`}.}, or whether you
 simply need to alter your library search path.
 As a final remedy, you may re-compile and install @acronym{NCO} with all
 operators statically linked.  
@@ -973,11 +1063,11 @@ operators statically linked.
 @cindex netCDF3
 netCDF @w{version 2} was released in 1993.
 @acronym{NCO} (specifically @command{ncks}) began soon after this in 1994.  
- at w{netCDF 3.0} was released in 1996, and we were eager to reap the
-performance advantages of the newer netCDF implementation.
+ at w{netCDF 3.0} was released in 1996, and we were not exactly eager to 
+convert all code to the newer, less tested netCDF implementation.
 One @w{netCDF3} interface call (@code{nc_inq_libvers}) was added to 
 @acronym{NCO} in January, 1998, to aid in maintainance and debugging. 
-In March, 2001, the final conversion of @acronym{NCO} to @w{netCDF3} 
+In March, 2001, the final @acronym{NCO} conversion to @w{netCDF3} 
 was completed (coincidentally on the same day @w{netCDF 3.5} was
 released). 
 @acronym{NCO} @w{versions 2.0} and higher are built with the
@@ -989,48 +1079,38 @@ are used.
 @cindex Hierarchical Data Format
 @cindex Mike Folk
 However, the ability to compile @acronym{NCO} with only @w{netCDF2}
-calls is worth maintaining because @acronym{HDF} @w{version 4}
+calls is worth maintaining because @acronym{HDF} @w{version 4}, 
+aka @acronym{HDF4} or simply @acronym{HDF}, 
 @footnote{The Hierarchical Data Format, or @acronym{HDF}, is another
 self-describing data format similar to, but more elaborate than,
-netCDF.} 
-(available from @uref{http://hdf.ncsa.uiuc.edu, HDF})
+netCDF. 
+ at acronym{HDF} comes in two flavors, @acronym{HDF4} and @acronym{HDF5}. 
+Often people use the shorthand @acronym{HDF} to refer to the older
+format @acronym{HDF4}.
+People almost always use @acronym{HDF5} to refer to @acronym{HDF5}.} 
+(available from @uref{http://hdfgroup.org, HDF})
 supports only the @w{netCDF2} library calls
-(see @uref{http://hdf.ncsa.uiuc.edu/UG41r3_html/SDS_SD.fm12.html#47784}).
-Note that there are multiple versions of @acronym{HDF}.
-Currently @acronym{HDF} @w{version 4.x} supports @w{netCDF2} and thus 
- at acronym{NCO} @w{version 1.2.x}. 
+(see @uref{http://hdfgroup.org/UG41r3_html/SDS_SD.fm12.html#47784}).
+There are two versions of @acronym{HDF}.
+Currently @acronym{HDF} @w{version 4.x} supports the full @w{netCDF2}
+ at acronym{API} and thus @acronym{NCO} @w{version 1.2.x}. 
 If @acronym{NCO} @w{version 1.2.x} (or earlier) is built with only
 @w{netCDF2} calls then all @acronym{NCO} operators should work with 
 @acronym{HDF4} files as well as netCDF files
 @footnote{One must link the @acronym{NCO} code to the @acronym{HDF4}
 @acronym{MFHDF} library instead of the usual netCDF library. 
-Does @samp{MF} stands for Mike Folk?
-Perhaps. 
-In any case, the @acronym{MFHDF} library only supports @w{netCDF2}
-calls. 
-Thus I will try to keep this capability in @acronym{NCO} as long as it
-is not too much trouble.}.
+Apparently @samp{MF} stands for Multi-file not for Mike Folk.
+In any case, until about 2007 the @acronym{MFHDF} library only supported 
+ at w{netCDF2} calls. 
+Most people will never again install @acronym{NCO} 1.2.x and so will
+never use @acronym{NCO} to write @acronym{HDF4} files.
+It is simply too much trouble.}.
 @cindex @code{NETCDF2_ONLY}
 The preprocessor token @code{NETCDF2_ONLY} exists
 in @acronym{NCO} @w{version 1.2.x} to eliminate all @w{netCDF3}
 calls.  
 Only versions of @acronym{NCO} numbered 1.2.x and earlier have this
 capability. 
-The @w{@acronym{NCO} 1.2.x} branch will be maintained with bugfixes only  
-(no new features) until @acronym{HDF} begins to fully support the
- at w{netCDF3} interface (which is employed by @w{@acronym{NCO} 2.x}).
-If, at compilation time, @code{NETCDF2_ONLY} is defined, then
- at acronym{NCO} @w{version 1.2.x} will not use any @w{netCDF3} calls
-and, if linked properly, the resulting @acronym{NCO} operators will work
-with @acronym{HDF4} files.  
- at cindex @file{Makefile}
-The @file{Makefile} supplied with @w{@acronym{NCO} 1.2.x} is written
-to simplify building in this @acronym{HDF} capability.
-When @acronym{NCO} is built with @code{make HDF4=Y}, the @file{Makefile} 
-sets all required preprocessor flags and library links to build 
-with the @acronym{HDF4} libraries (which are assumed to reside under  
- at code{/usr/local/hdf4}, edit the @file{Makefile} to suit your
-installation).  
 
 @cindex Unidata
 @cindex @acronym{NCSA}
@@ -1039,7 +1119,10 @@ installation).
 @acronym{HDF} @w{version 5} became available in 1999, but did not
 support netCDF (or, for that matter, Fortran) as of December 1999.
 By early 2001, @acronym{HDF5} did support Fortran90.
-In 2004, Unidata and @acronym{NCSA} began a project to implement
+Thanks to an @acronym{NSF}-funded ``harmonization'' partnership,
+ at acronym{HDF} began to fully support the @w{netCDF3} read interface
+(which is employed by @w{@acronym{NCO} 2.x} and later). 
+In 2004, Unidata and @acronym{THG} began a project to implement
 the @acronym{HDF5} features necessary to support the netCDF API.
 @acronym{NCO} version 3.0.3 added support for reading/writing
 netCDF4-formatted @acronym{HDF5} files in October, 2005.
@@ -1093,6 +1176,23 @@ chunking in @command{ncks} and @command{ncecat}.
 netCDF4 chunking in the remaining operators.
 See @ref{Chunking} for more details.
 
+ at cindex groups
+ at acronym{NCO} version 4.2.2 (October, 2012) added support for netCDF4
+groups in @command{ncks} and @command{ncecat}.
+Group support for these operators was complete (e.g., regular
+expressions to select groups and Group Path Editing) as of 
+ at acronym{NCO} version 4.2.6 (March, 2013).
+See @ref{Group Path Editing} for more details.
+Group support for all other operators was finished in the
+ at acronym{NCO} version 4.3.x series completed in December, 2013.
+
+ at cindex broadcasting groups
+Support for netCDF4 in the first arithmetic operator, @command{ncbo},
+was introduced in @acronym{NCO} version 4.3.0 (March, 2013).
+ at acronym{NCO} version 4.3.1 (May, 2013) completed this support and
+introduced the first example of automatic group broadcasting.
+See @ref{ncbo netCDF Binary Operator} for more details.
+
 @cindex @acronym{HDF5}
 @cindex @code{-4}
 @cindex @code{-3}
@@ -1104,13 +1204,73 @@ Use the handy-dandy @samp{-4} switch to request netCDF4 output from
 netCDF3 input, i.e., to convert netCDF3 to netCDF4.
 See @ref{Selecting Output File Format} for more details.
 
+ at html
+<a name="hdf4"></a> <!-- http://nco.sf.net/nco.html#hdf4 -->
+<a name="HDF4"></a> <!-- http://nco.sf.net/nco.html#HDF4 -->
+ at end html
+ at cindex @acronym{HDF4}
+ at cindex @samp{--hdf4}
+When linked to a netCDF library that was built with @acronym{HDF4}
+support
+ at footnote{The procedure for doing this is documented at
+ at uref{http://www.unidata.ucar.edu/software/netcdf/docs/build_hdf4.html}.},
+ at acronym{NCO} automatically supports reading @acronym{HDF4} 
+files and writing them as netCDF4/@acronym{HDF5} files.
+ at acronym{NCO} can only write throught the netCDF @acronym{API}, which
+can only write netCDF3/netCDF4/@acronym{HDF5} files. 
+But it can read @acronym{HDF4} files, perform manipulations and
+calculations, and then write the results in netCDF format.
+As of this writing (October, 2013) the user must tell @acronym{NCO} 
+that an input file is @acronym{HDF4} format by using the @samp{--hdf4} 
+switch introduced in @acronym{NCO} 4.3.7.
+Eventually we hope to make @acronym{HDF4}-detection automatic and to
+therefore deprecate this switch.
+
+Converting @acronym{HDF4} files to netCDF:
+Since @acronym{NCO} reads @acronym{HDF4} files natively, it is now easy  
+to convert @acronym{HDF4} files to netCDF4 files directly, e.g.,
+ at example
+ncks --hdf4 fl.hdf fl.nc      # Convert HDF4->netCDF4
+ncks --hdf4 -L 1 fl.hdf fl.nc # Convert HDF4->netCDF4 with compression
+ at end example
+This produces a netCDF4 file not a netCDF3 file.
+Obtaining a netCDF3 file from an @acronym{HDF4} file can be easy or
+arduous, depending whether the input contains any netCDF4 atomic types
+(e.g., unsigned bytes, 64-bit integers):
+ at example
+ncks --hdf4 -3 fl.hdf fl.nc      # HDF4->netCDF3
+ncks --hdf4 -7 -L 1 fl.hdf fl.nc # HDF4->netCDF4 classic with compression
+ at end example
+These commands work only if the input has no netCDF4 atomic types.
+Many @acronym{HDF4} producers (@acronym{NASA}!) love to use netCDF4
+types, e.g., unsigned bytes. 
+So to get a netCDF3 file from an HDF4 file that @emph{does} contain
+netCDF4 atomic types, one must first convert to netCDF4 then use a
+tool like @command{ncap2} to convert any netCDF4 types to netCDF3
+types. 
+No one wants to do that. 
+Instead we recommend the @command{ncl_convert2nc} tool to convert
+ at acronym{HDF} to netCDF3 when both these are true: @w{1. You} must have
+netCDF3 and @w{2. the} @acronym{HDF} file contains netCDF4 atomic
+types. 
+Otherwise use @command{ncks} which is faster and more space-efficient.
+Moreover, @command{ncl_convert2nc} automatically converts netCDF4 types
+to netCDF3  types, yet it will not produce full netCDF4 files.
+In contrast, @command{ncks} happily converts @acronym{HDF} straight to
+netCDF4 files with netCDF4 types. 
+Hence @command{ncks} can and does preserve the variable types.
+Unsigned bytes stay unsigned bytes. 
+64-bit integers stay 64-bit integers. 
+Strings stay strings. 
+Hence, @command{ncks} conversions often result in smaller files than
+ at command{ncl_convert2nc} conversions.
+
 @cindex @acronym{RPM}
 @cindex Debian
-As of 2010, netCDF4 is still relatively new software.
-Problems with netCDF4 and @acronym{HDF} libraries are still being fixed.
-Binary @acronym{NCO} distributions shipped as @acronym{RPM}s use the
-netCDF4 library, while debs use the netCDF3 library, because of upstream
-requirements. 
+As of 2012, netCDF4 is relatively stable software.
+Problems with netCDF4 and @acronym{HDF} libraries have mainly been fixed.
+Binary @acronym{NCO} distributions shipped as @acronym{RPM}s and as debs
+have used the netCDF4 library since 2010 and 2011, respectively.
 
 @cindex @code{NETCDF4_ROOT}
 One must often build @acronym{NCO} from source to obtain netCDF4
@@ -1174,7 +1334,7 @@ If you want us to include a new feature in @acronym{NCO}, check first to
 see if that feature is already on the @uref{file:./TODO,TODO} list.
 If it is, why not implement that feature yourself and send us the patch?
 If the feature is not yet on the list, then send a note to the
- at uref{http://sourceforge.net/projects/nco/forums/forum/9829, NCO Discussion forum}.
+ at uref{http://sf.net/projects/nco/forums/forum/9829, NCO Discussion forum}.
 
 Read the manual before reporting a bug or posting a help request.
 Sending questions whose answers are not in the manual is the best
@@ -1196,7 +1356,7 @@ That is, describe what you are trying to do, and include the complete
 commands (run with @samp{-D 5}), error messages, and version of
 @acronym{NCO} (with @samp{-r}).  
 Post your help request to the 
- at uref{http://sourceforge.net/projects/nco/forums/forum/9830, NCO Help forum}.
+ at uref{http://sf.net/projects/nco/forums/forum/9830, NCO Help forum}.
 
 If you think you used the right command when @acronym{NCO} misbehaves,
 then you might have found a bug.  
@@ -1265,16 +1425,16 @@ differences between these files and your own.
 @chapter Operator Strategies
 
 @menu
-* Philosophy::                  
-* Climate Model Paradigm::      
-* Temporary Output Files::      
-* Appending Variables::         
-* Simple Arithmetic and Interpolation::  
-* Averaging vs. Concatenating::  
-* Large Numbers of Files::      
-* Large Datasets::              
-* Memory Requirements::         
-* Performance::                 
+* Philosophy::
+* Climate Model Paradigm::
+* Temporary Output Files::
+* Appending Variables::
+* Simple Arithmetic and Interpolation::
+* Statistics vs. Concatenation::
+* Large Numbers of Files::
+* Large Datasets::
+* Memory Requirements::
+* Performance::
 @end menu
 
 @html
@@ -1297,8 +1457,9 @@ statistical packages, and are often more suitable for archival and
 dissemination to the scientific community.
 @acronym{NCO} performs a suite of operations useful in manipulating data
 from the primary to the second level state.
- at cindex @acronym{NCL}
 @cindex @acronym{IDL}
+ at cindex Matlab
+ at cindex @acronym{NCL}
 @cindex Perl
 @cindex Yorick
 Higher level interpretive languages (e.g., @acronym{IDL}, Yorick,
@@ -1329,9 +1490,9 @@ usage is detailed in @ref{Memory Requirements}.
 @acronym{NCO} was developed at @acronym{NCAR} to aid analysis and
 manipulation of datasets produced by General Circulation Models
 (@acronym{GCM}s).  
-Datasets produced by @acronym{GCM}s share many features with all gridded
-scientific datasets and so provide a useful paradigm for the explication
-of the @acronym{NCO} operator set.
+ at acronym{GCM} datasets share many features with other gridded scientific
+datasets and so provide a useful paradigm for the explication of the
+ at acronym{NCO} operator set. 
 Examples in this manual use a @acronym{GCM} paradigm because latitude,
 longitude, time, temperature and other fields related to our natural
 environment are as easy to visualize for the layman as the expert.
@@ -1345,12 +1506,14 @@ environment are as easy to visualize for the layman as the expert.
 @cindex error tolerance
 @cindex safeguards
 @cindex temporary output files
+ at cindex temporary files
 @acronym{NCO} operators are designed to be reasonably fault tolerant, so
-that if there is a system failure or the user aborts the operation (e.g.,
-with @kbd{C-c}), then no data are lost. 
+that a system failure or user-abort of the operation (e.g., with
+ at kbd{C-c}) does not cause loss of data.
 The user-specified @var{output-file} is only created upon successful
 completion of the operation  
- at footnote{The @command{ncrename} operator is an exception to this rule.
+ at footnote{The @command{ncrename} and @command{ncatted} operators are
+exceptions to this rule.
 @xref{ncrename netCDF Renamer}.}.
 This is accomplished by performing all operations in a temporary copy
 of @var{output-file}.
@@ -1359,6 +1522,9 @@ The name of the temporary output file is constructed by appending
 user-specified @var{output-file} name.  
 When the operator completes its task with no fatal errors, the temporary
 output file is moved to the user-specified @var{output-file}.
+This imbues the process with fault-tolerance since fatal error
+(e.g., disk space fills up) affect only the temporary output file,
+leaving the final output file not created if it did not already exist. 
 Note the construction of a temporary output file uses more disk space
 than just overwriting existing files ``in place'' (because there may be
 two copies of the same file on disk until the @acronym{NCO} operation
@@ -1369,9 +1535,76 @@ existing @var{output-file}).
 @cindex speed
 @cindex execution time
 Also, note this feature increases the execution time of the operator
-by approximately the time it takes to copy the @var{output-file}.
-Finally, note this feature allows the @var{output-file} to be the same 
-as the @var{input-file} without any danger of ``overlap''.
+by approximately the time it takes to copy the @var{output-file}
+ at footnote{The OS-specific system move command is used.
+This is @command{mv} for UNIX, and @command{move} for Windows.}.
+Finally, note this fault-tolerant feature allows the @var{output-file}
+to be the same as the @var{input-file} without any danger of
+``overlap''. 
+
+ at html
+<a name="tmp_fl"></a> <!-- http://nco.sf.net/nco.html#tmp_fl -->
+<a name="no_tmp_fl"></a> <!-- http://nco.sf.net/nco.html#no_tmp_fl -->
+<a name="wrt_tmp_fl"></a> <!-- http://nco.sf.net/nco.html#wrt_tmp_fl -->
+ at end html
+ at cindex @code{--no_tmp_fl}
+ at cindex @code{--wrt_tmp_fl}
+ at cindex @code{--write_tmp_fl}
+ at cindex @code{--create_ram}
+ at cindex @code{--open_ram}
+ at cindex @acronym{RAM} disks
+ at cindex @acronym{RAM} files
+Over time many ``power users'' have requested a way to turn-off the
+fault-tolerance safety feature of automatically creating a temporary
+file. 
+Often these users build and execute production data analysis scripts
+that are repeated frequently on large datasets.
+Obviating an extra file write can then conserve significant disk space
+and time.  
+For this purpose @acronym{NCO} has, since version 4.2.1 in August, 2012, 
+made configurable the controls over temporary file creation.
+The @samp{--wrt_tmp_fl} and equivalent @samp{--write_tmp_fl} switches 
+ensure @acronym{NCO} writes output to an intermediate temporary file.
+This is and has always been the default behavior so there is currently
+no need to specify these switches.
+However, the default may change some day, especially since writing to
+RAM disks (@pxref{RAM disks}) may some day become the default.
+The @samp{--no_tmp_fl} switch causes @acronym{NCO} to write directly to
+the final output file instead of to an intermediate temporary file. 
+``Power users'' may wish to invoke this switch to increase performance
+(i.e., reduce wallclock time) when manipulating large files. 
+When eschewing temporary files, users may forsake the ability to have
+the same name for both @var{output-file} and @var{input-file} since, as   
+described above, the temporary file prevented overlap issues.
+However, if the user creates the output file in @acronym{RAM} (@pxref{RAM disks})
+then it is still possible to have the same name for both
+ at var{output-file} and @var{input-file}.
+ at example
+ncks in.nc out.nc # Default: create out.pid.tmp.nc then move to out.nc
+ncks --wrt_tmp_fl in.nc out.nc # Same as default
+ncks --no_tmp_fl in.nc out.nc # Create out.nc directly on disk
+ncks --no_tmp_fl in.nc in.nc # ERROR-prone! Overwrite in.nc with itself
+ncks --create_ram --no_tmp_fl in.nc in.nc # Create in RAM, write to disk
+ncks --open_ram --no_tmp_fl in.nc in.nc # Read into RAM, write to disk
+ at end example
+ at noindent
+There is no reason to expect the fourth example to work.
+The behavior of overwriting a file while reading from the same file is
+undefined, much as is the shell command @samp{cat foo > foo}.
+Although it may ``work'' in some cases, it is unreliable.
+One way around this is to use @samp{--create_ram} so that the
+output file is not written to disk until the input file is closed,
+ at xref{RAM disks}.
+However, as of 20130328, the behavior of the @samp{--create_ram} and
+ at samp{--open_ram} examples has not been thoroughly tested.
+
+The @acronym{NCO} authors have seen compelling use cases for utilizing
+the @acronym{RAM} switches, but not (yet) for combining them with
+ at samp{--no_tmp_fl}. 
+ at acronym{NCO} implements both options because they are largely
+independent of eachother.
+It is up to ``power users'' to discover which best fit their needs.
+We welcome accounts of your experiences posted to the forums.
 
 @html
 <a name="-A"></a> <!-- http://nco.sf.net/nco.html#-A -->
@@ -1384,6 +1617,7 @@ as the @var{input-file} without any danger of ``overlap''.
 @cindex @code{--ovr}
 @cindex @code{--overwrite}
 @cindex overwriting files
+ at cindex appending variables
 @cindex appending to files
 Other safeguards exist to protect the user from inadvertently
 overwriting data.
@@ -1404,6 +1638,7 @@ interactive keyboard input.
 
 @html
 <a name="apn"></a> <!-- http://nco.sf.net/nco.html#apn -->
+<a name="append"></a> <!-- http://nco.sf.net/nco.html#append -->
 @end html
 @node Appending Variables, Simple Arithmetic and Interpolation, Temporary Output Files, Strategies
 @section Appending Variables
@@ -1450,7 +1685,7 @@ the results of the operation in the existing @var{output-file},
 @html
 <a name="unn"></a> <!-- http://nco.sf.net/nco.html#unn -->
 @end html
- at cindex union of two files
+ at cindex union of files
 @cindex disjoint files
 The simplest way to create the union of two files is
 @example
@@ -1468,7 +1703,7 @@ same name but different sizes.
 @html
 <a name="bnr"></a> <!-- http://nco.sf.net/nco.html#bnr -->
 @end html
- at node Simple Arithmetic and Interpolation, Averaging vs. Concatenating, Appending Variables, Strategies
+ at node Simple Arithmetic and Interpolation, Statistics vs. Concatenation, Appending Variables, Strategies
 @section Simple Arithmetic and Interpolation
 
 Users comfortable with @acronym{NCO} semantics may find it easier to
@@ -1476,59 +1711,63 @@ perform some simple mathematical operations in @acronym{NCO} rather than
 higher level languages. 
 @command{ncbo} (@pxref{ncbo netCDF Binary Operator}) does file
 addition, subtraction, multiplication, division, and broadcasting. 
+It even does group broadcasting.
 @command{ncflint} (@pxref{ncflint netCDF File Interpolator}) does
 file addition, subtraction, multiplication and interpolation. 
 Sequences of these commands can accomplish simple but powerful
 operations from the command line.
 
 @html
+<a name="statisticians"></a> <!-- http://nco.sf.net/nco.html#statisticians -->
 <a name="averagers"></a> <!-- http://nco.sf.net/nco.html#averagers -->
 @end html
- at node Averaging vs. Concatenating, Large Numbers of Files, Simple Arithmetic and Interpolation, Strategies
- at section Averagers vs.@: Concatenators
+ at node Statistics vs. Concatenation, Large Numbers of Files, Simple Arithmetic and Interpolation, Strategies
+ at section Statistics vs.@: Concatenation
 
 @html
 <a name="sym_ncea"></a> <!-- http://nco.sf.net/nco.html#sym_ncea -->
+<a name="sym_nces"></a> <!-- http://nco.sf.net/nco.html#sym_nces -->
 <a name="sym_ncrcat"></a> <!-- http://nco.sf.net/nco.html#sym_ncrcat -->
 @end html
 @cindex symbolic links
 The most frequently used operators of @acronym{NCO} are probably the
-averagers and concatenators.
-Because there are so many permutations of averaging (e.g., across files,
-within a file, over the record dimension, over other dimensions, with or
-without weights and masks) and of concatenating (across files, along the
-record dimension, along other dimensions), there are currently no fewer
-than five operators which tackle these two purposes: @command{ncra},
- at command{ncea}, @command{ncwa}, @command{ncrcat}, and @command{ncecat}. 
+ at dfn{statisticians} (i.e., tools that do statistics) and concatenators.
+Because there are so many types of statistics like averaging (e.g.,
+across files, within a file, over the record dimension, over other
+dimensions, with or without weights and masks) and of concatenating
+(across files, along the record dimension, along other dimensions),
+there are currently no fewer than five operators which tackle these two
+purposes: @command{ncra}, @command{nces}, @command{ncwa},
+ at command{ncrcat}, and @command{ncecat}.  
 These operators do share many capabilities @footnote{Currently
- at command{ncea} and @command{ncrcat} are symbolically linked to the
+ at command{nces} and @command{ncrcat} are symbolically linked to the
 @command{ncra} executable, which behaves slightly differently based on
 its invocation name (i.e., @samp{argv[0]}). 
-These three operators share the same source code, but merely have
-different inner loops.}, but each has its unique specialty.
-Two of these operators, @command{ncrcat} and @command{ncecat}, are for
-concatenating hyperslabs across files. 
-The other two operators, @command{ncra} and @command{ncea}, are for
-averaging hyperslabs across files 
+These three operators share the same source code, and merely have
+different inner loops.}, though each has its unique specialty.
+Two of these operators, @command{ncrcat} and @command{ncecat}, 
+concatenate hyperslabs across files. 
+The other two operators, @command{ncra} and @command{nces}, compute
+statistics across (and/or within) files 
 @footnote{The third averaging operator, @command{ncwa}, is the most
 sophisticated averager in @acronym{NCO}. 
 However, @command{ncwa} is in a different class than @command{ncra} and
- at command{ncea} because it can only operate on a single file per
-invocation (as opposed to multiple files).   
+ at command{nces} because it operates on a single file per invocation (as
+opposed to multiple files).    
 On that single file, however, @command{ncwa} provides a richer set of 
 averaging options---including weighting, masking, and broadcasting.}.  
-First, let's describe the concatenators, then the averagers. 
+First, let's describe the concatenators, then the statistics tools.
 
 @menu
-* Concatenation::               
-* Averaging::                   
-* Interpolating::               
+* Concatenation::
+* Averaging::
+* Interpolating::
 @end menu
 
 @html
 <a name="cnc"></a> <!-- http://nco.sf.net/nco.html#cnc -->
 @end html
- at node Concatenation, Averaging, Averaging vs. Concatenating, Averaging vs. Concatenating
+ at node Concatenation, Averaging, Statistics vs. Concatenation, Statistics vs. Concatenation
 @subsection Concatenators @command{ncrcat} and @command{ncecat}
 @cindex @command{ncecat}
 @cindex @command{ncrcat}
@@ -1611,31 +1850,31 @@ To conserve system memory, use @command{ncrcat} where possible.
 @html
 <a name="avg"></a> <!-- http://nco.sf.net/nco.html#avg -->
 @end html
- at node Averaging, Interpolating, Concatenation, Averaging vs. Concatenating
- at subsection Averagers @command{ncea}, @command{ncra}, and @command{ncwa} 
- at cindex @command{ncea}
+ at node Averaging, Interpolating, Concatenation, Statistics vs. Concatenation
+ at subsection Averagers @command{nces}, @command{ncra}, and @command{ncwa} 
+ at cindex @command{nces}
 @cindex @command{ncra}
 @cindex @command{ncwa}
 
-The differences between the averagers @command{ncra} and @command{ncea}
+The differences between the averagers @command{ncra} and @command{nces}
 are analogous to the differences between the concatenators.
 @command{ncra} is designed for averaging record variables from at least
-one file, while @command{ncea} is designed for averaging fixed length
+one file, while @command{nces} is designed for averaging fixed length
 variables from multiple files.
 @command{ncra} performs a simple arithmetic average over the record
 dimension of all the input files, with each record having an equal
 weight in the average. 
- at command{ncea} performs a simple arithmetic average of all the input
+ at command{nces} performs a simple arithmetic average of all the input
 files, with each file having an equal weight in the average. 
 Note that @command{ncra} cannot average fixed-length variables,
-but @command{ncea} can average both fixed-length and record variables.  
+but @command{nces} can average both fixed-length and record variables.  
 To conserve system memory, use @command{ncra} rather than
- at command{ncea} where possible (e.g., if each @var{input-file} is one
+ at command{nces} where possible (e.g., if each @var{input-file} is one
 record long). 
-The file output from @command{ncea} will have the same dimensions
+The file output from @command{nces} will have the same dimensions
 (meaning dimension names as well as sizes) as the input hyperslabs  
-(@pxref{ncea netCDF Ensemble Averager}, for a complete description of 
- at command{ncea}).  
+(@pxref{nces netCDF Ensemble Statistics}, for a complete description of 
+ at command{nces}).  
 The file output from @command{ncra} will have the same dimensions as
 the input hyperslabs except for the record dimension, which will have a   
 size @w{of 1} (@pxref{ncra netCDF Record Averager}, for a complete
@@ -1644,7 +1883,7 @@ description of @command{ncra}).
 @html
 <a name="ntp"></a> <!-- http://nco.sf.net/nco.html#ntp -->
 @end html
- at node Interpolating,  , Averaging, Averaging vs. Concatenating
+ at node Interpolating,  , Averaging, Statistics vs. Concatenation
 @subsection Interpolator @command{ncflint}
 @cindex @command{ncflint}
 
@@ -1659,7 +1898,7 @@ units.
 @html
 <a name="lrg"></a> <!-- http://nco.sf.net/nco.html#lrg -->
 @end html
- at node Large Numbers of Files, Large Datasets, Averaging vs. Concatenating, Strategies
+ at node Large Numbers of Files, Large Datasets, Statistics vs. Concatenation, Strategies
 @section Large Numbers of Files
 @cindex files, numerous input
 @cindex @code{-n @var{loop}}
@@ -1740,11 +1979,11 @@ This simple example selects as input to @command{xargs} all the
 filenames in the current directory that match a given pattern.
 For illustration, consider a user trying to average millions of 
 files which each have a six character filename. 
-If the shell buffer can not hold the results of the corresponding
+If the shell buffer cannot hold the results of the corresponding
 globbing operator, @file{??????.nc}, then the filename globbing
 technique will fail. 
 Instead we express the filename pattern as an extended regular 
-expression, @file{......\.nc} (@pxref{Subsetting Variables}).
+expression, @file{......\.nc} (@pxref{Subsetting Files}).
 We use @command{grep} to filter the directory listing for this pattern
 and to pipe the results to @command{xargs} which, in turn, passes the
 matching filenames to an @acronym{NCO} multi-file operator, e.g.,
@@ -1783,10 +2022,10 @@ The technique of last resort is to write a script that creates symbolic
 links between the irregular input filenames and a set of regular,
 arithmetic filenames that the @samp{-n @var{loop}} switch understands. 
 @cindex Perl
-For example, the following Perl script a monotonically enumerated
-symbolic link to up to one million @file{.nc} files in a directory.
-If there are 999,999 netCDF files present, the links are named
- at file{000001.nc} to @file{999999.nc}: 
+For example, the following Perl script creates a monotonically
+enumerated symbolic link to up to one million @file{.nc} files in a
+directory. If there are 999,999 netCDF files present, the links are
+named @file{000001.nc} to @file{999999.nc}: 
 @cindex @code{-n @var{loop}}
 @example
 # Create enumerated symbolic links
@@ -1804,7 +2043,8 @@ The symbolic links are easily removed once @acronym{NCO} is finished.
 One drawback to this method is that the @code{history} attribute
 (@pxref{History Attribute}) retains the filename list of the symbolic
 links, rather than the data files themselves. 
-This makes it difficult to determine the data provenance at a later date.
+This makes it difficult to determine the data provenance at a later
+date. 
 
 @node Large Datasets, Memory Requirements, Large Numbers of Files, Strategies
 @section Large Datasets
@@ -1817,7 +2057,7 @@ amount of random access memory (@acronym{RAM}) in your computer.
 Many users of @acronym{NCO} work with files larger than @w{100 MB}.
 Files this large not only push the current edge of storage technology, 
 they present special problems for programs which attempt to access the  
-entire file at once, such as @command{ncea} and @command{ncecat}.
+entire file at once, such as @command{nces} and @command{ncecat}.
 @cindex swap space
 If you work with a @w{300 MB} files on a machine with only @w{32 MB} of
 memory then you will need large amounts of swap space (virtual memory on
@@ -1870,7 +2110,7 @@ When the @var{debug-level} is nonzero, the operators report their
 current status to the terminal through the @var{stderr} facility.
 Using @samp{-D} does not slow the operators down. 
 Choose a @var{debug-level} @w{between 1} @w{and 3} for most situations,
-e.g., @code{ncea -D 2 85.nc 86.nc 8586.nc}.
+e.g., @code{nces -D 2 85.nc 86.nc 8586.nc}.
 @w{A full} description of how to estimate the actual amount of memory the
 multi-file @acronym{NCO} operators consume is given in 
 @ref{Memory Requirements}. 
@@ -1882,9 +2122,12 @@ multi-file @acronym{NCO} operators consume is given in
 @section Memory Requirements
 @cindex memory requirements
 @cindex memory available
- at cindex RAM
+ at cindex @acronym{RAM}
 @cindex swap space
 @cindex peak memory usage
+ at cindex @code{--ram_all}
+ at cindex @code{--open_ram}
+ at cindex @code{--diskless_all}
 
 Many people use @acronym{NCO} on gargantuan files which dwarf the
 memory available (free @acronym{RAM} plus swap space) even on today's powerful
@@ -1909,8 +2152,8 @@ Memory consumption patterns of all operators are similar, with
 the exception of @command{ncap2}.
 
 @menu
-* Single and Multi-file Operators::  
-* Memory for ncap2::            
+* Single and Multi-file Operators::
+* Memory for ncap2::
 @end menu
 
 @node Single and Multi-file Operators, Memory for ncap2, Memory Requirements, Memory Requirements
@@ -1919,11 +2162,11 @@ the exception of @command{ncap2}.
 @cindex multi-file operators
 The multi-file operators currently comprise the record operators,
 @command{ncra} and @command{ncrcat}, and the ensemble operators,
- at command{ncea} and @command{ncecat}. 
+ at command{nces} and @command{ncecat}. 
 The record operators require @emph{much less} memory than the ensemble 
 operators. 
 This is because the record operators operate on one single record (i.e.,
-time-slice) at a time, wherease the ensemble operators retrieve the
+time-slice) at a time, whereas the ensemble operators retrieve the
 entire variable into memory. 
 Let @math{MS} be the peak sustained memory demand of an operator,
 @math{FT} be the memory required to store the entire contents of all the 
@@ -1947,7 +2190,7 @@ The operators have the following memory requirements:
 @command{ncrcat} requires @math{MS <= VR}. 
 @command{ncecat} requires @math{MS <= VT}. 
 @command{ncra} requires @math{MS = 2FR + VR}. 
- at command{ncea} requires @math{MS = 2FT + VT}. 
+ at command{nces} requires @math{MS = 2FT + VT}. 
 @command{ncbo} requires @math{MS <= 3VT} 
 (both input variables and the output variable).
 @command{ncflint} requires @math{MS <= 3VT}
@@ -1958,9 +2201,37 @@ The operators have the following memory requirements:
 Note that only variables that are processed, e.g., averaged,
 concatenated, or differenced, contribute to @math{MS}. 
 Variables which do not appear in the output file 
-(@pxref{Subsetting Variables}) are never read and contribute nothing
+(@pxref{Subsetting Files}) are never read and contribute nothing
 to the memory requirements. 
 
+Further note that some operators perform internal type-promotion on some
+variables prior to arithmetic (@pxref{Type Conversion}).
+For example, @command{ncra} and @command{nces} both promote integer
+types to double-precision floating point prior to arithmetic, then 
+perform the arithmetic, then demote back to the original integer type
+after arithmetic.
+This preserves the on-disk storage type while obtaining the accuracy
+advantages of floating point arithmetic. 
+Since version 4.3.6 (released in September, 2013), @acronym{NCO} also
+by default converts single-precision floating point to double-precision
+prior to arithmetic, which incurs the same @acronym{RAM} penalty.
+Hence, the sustained memory required for integer variables and
+single-precision floats are two or four-times their on-disk,
+uncompressed, unpacked sizes if they meet the rules for automatic
+internal promotion. 
+Put another way, disabling auto-promotion of single-precision variables
+(with @samp{--flt}) considerably reduces the @acronym{RAM} footprint 
+of arithmetic operators.
+
+The @samp{--open_ram} switch (and switches that invoke it like
+ at samp{--ram_all} and @samp{--diskless_all}) incurs a @acronym{RAM}
+penalty.
+These switches cause each input file to be copied to @acronym{RAM} upon
+opening. 
+Hence any operator invoking these switches utilizes an additional
+ at math{FT} of @acronym{RAM} (i.e., @math{MS += FT}).
+See @ref{RAM disks} for further details. 
+
 @html
 <a name="mmr_ncwa"></a> <!-- http://nco.sf.net/nco.html#mmr_ncwa -->
 @end html
@@ -2032,7 +2303,7 @@ Zender, C. S. (2008),
 ``Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO)'',
 Environ. Modell. Softw., doi:10.1016/j.envsoft.2008.03.004.
 This paper is also available at
- at url{http://dust.ess.uci.edu/ppr/ppr_Zen08_ems.pdf}.
+ at url{http://dust.ess.uci.edu/ppr/ppr_Zen08.pdf}.
 
 @cindex scaling
 @cindex performance
@@ -2043,7 +2314,7 @@ Zender, C. S., and H. J. Mangalam (2007),
 Int. @w{J. High} Perform. Comput. Appl., 21(4), 485-498,
 doi:10.1177/1094342007083802. 
 This paper is also available at
- at url{http://dust.ess.uci.edu/ppr/ppr_ZeM07_ijhpca.pdf}.
+ at url{http://dust.ess.uci.edu/ppr/ppr_ZeM07.pdf}.
 
 It is helpful to be aware of the aspects of @acronym{NCO} design 
 that can limit its performance:
@@ -2106,38 +2377,45 @@ If no ``key switches'' are listed for a feature, then that particular
 feature is automatic and cannot be controlled by the user. 
 
 @menu
-* Internationalization::        
-* Metadata Optimization::       
-* OpenMP Threading::            
-* Command Line Options::        
-* Specifying Input Files::      
-* Specifying Output Files::     
-* Remote storage::              
-* Retaining Retrieved Files::   
-* Selecting Output File Format::  
-* Large File Support::          
-* Subsetting Variables::        
-* Subsetting Coordinate Variables::  
-* C and Fortran Index Conventions::  
-* Hyperslabs::                  
-* Stride::                      
-* Multislabs::                  
-* Wrapped Coordinates::         
-* Auxiliary Coordinates::       
-* UDUnits Support::             
-* Rebasing Time Coordinate::    
-* Missing Values::              
-* Chunking::                    
-* Deflation::                   
-* Packed data::                 
-* Operation Types::             
-* Type Conversion::             
-* Batch Mode::                  
-* History Attribute::           
-* File List Attributes::        
-* CF Conventions::              
-* ARM Conventions::             
-* Operator Version::            
+* Internationalization::
+* Metadata Optimization::
+* OpenMP Threading::
+* Command Line Options::
+* Specifying Input Files::
+* Specifying Output Files::
+* Remote storage::
+* Retaining Retrieved Files::
+* Selecting Output File Format::
+* Large File Support::
+* Subsetting Files::
+* Subsetting Coordinate Variables::
+* Group Path Editing::
+* C and Fortran Index Conventions::
+* Hyperslabs::
+* Stride::
+* Record Appending::
+* Duration::
+* Multislabs::
+* Wrapped Coordinates::
+* Auxiliary Coordinates::
+* UDUnits Support::
+* Rebasing Time Coordinate::
+* Multiple Record Dimensions::
+* Missing Values::
+* Chunking::
+* Deflation::
+* MD5 digests::
+* Buffer sizes::
+* RAM disks::
+* Packed data::
+* Operation Types::
+* Type Conversion::
+* Batch Mode::
+* History Attribute::
+* File List Attributes::
+* CF Conventions::
+* ARM Conventions::
+* Operator Version::
 @end menu
 
 @html
@@ -2158,6 +2436,7 @@ We hope to produce foreign language string catalogues in 2004.
 
 @html
 <a name="hdr"></a> <!-- http://nco.sf.net/nco.html#hdr -->
+<a name="hdr_pad"></a> <!-- http://nco.sf.net/nco.html#hdr_pad -->
 @end html
 @node Metadata Optimization, OpenMP Threading, Internationalization, Common features
 @section Metadata Optimization
@@ -2170,7 +2449,7 @@ We hope to produce foreign language string catalogues in 2004.
 @cindex @code{--hdr_pad @var{hdr_pad}}
 @cindex @code{--header_pad @var{hdr_pad}}
 @cartouche
-Availability: @command{ncatted}, @command{ncks}, @command{ncrename}@*
+Availability: All operators@*
 Short options: None@*
 Long options: @samp{--hdr_pad}, @samp{--header_pad}@* 
 @end cartouche
@@ -2179,9 +2458,9 @@ metadata operations.
 Use the @samp{--hdr_pad} and @samp{--header_pad} switches to request
 that @var{hdr_pad} bytes be inserted into the metadata section of the
 output file.
-Future metadata expansions will not incur the performance penalty of
-copying the entire output file unless the expansion exceeds the amount 
-of header padding exceeded.
+Future metadata expansions will not incur the netCDF3 performance
+penalty of copying the entire output file unless the expansion exceeds
+the amount of header padding exceeded.
 This can be beneficial when it is known that some metadata will be added
 at a future date.
 
@@ -2209,7 +2488,7 @@ library (@pxref{Selecting Output File Format}).
 @cindex @code{--omp_num_threads @var{thr_nbr}}
 @cindex @code{-t @var{thr_nbr}}
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncpdq}, @command{ncra}, @command{ncrcat},
 @command{ncwa}@*
 Short options: @samp{-t}@*
@@ -2226,11 +2505,32 @@ If not user-specified, OpenMP obtains @var{thr_nbr} from the
 @code{OMP_NUM_THREADS} environment variable, if present, or from the
 @acronym{OS}, if not.
 
+ at cartouche
+Caveat:
+Unfortunately, threading does not improve @acronym{NCO} throughput (i.e.,
+wallclock time) because nearly all @acronym{NCO} operations are
+I/O-bound. 
+This means that @acronym{NCO} spends negligible time doing anything
+compared to reading and writing. 
+We have seen some and can imagine other use cases where
+ at command{ncwa}, @command{ncpdq}, and @command{ncap2} (with long scripts) 
+will complete faster due to threading. 
+The main benefits of threading so far have been to isolate the serial
+from parallel portions of code. 
+This parallelism is now exploited by OpenMP but then runs into the I/O
+bottleneck during output. 
+The bottleneck could be ameliorated for large files by the use of
+MPI-enabled calls in the netCDF4 library when the underlying filesystem
+is parallel (e.g., @acronym{PVFS} or @acronym{JFS}).
+Implementation of the parallel output calls in @acronym{NCO} is not a
+goal of our current funding and would require new volunteers or funding.  
+ at end cartouche
+
 @cindex @var{thr_nbr}
 @cindex @code{OMP_NUM_THREADS}
 @cindex @command{ncrcat}
 @cindex @command{ncwa}
- at cindex @command{ncap}
+ at cindex @command{ncap2}
 @cindex @command{ncpdq}
 @cindex large datasets
 @acronym{NCO} may modify @var{thr_nbr} according to its own internal
@@ -2244,11 +2544,11 @@ For example, @code{ncrcat} is extremely I/O-intensive so we restrict
 This is based on the notion that the best performance that can be
 expected from an operator which does no arithmetic is to have one thread
 reading and one thread writing simultaneously.
-In the future (perhaps with netCDF4), we hope to
-demonstrate significant threading improvements with operators
-like @code{ncrcat} by performing multiple simultaneous writes.
+In the future (perhaps with netCDF4), we hope to demonstrate significant
+threading improvements with operators like @code{ncrcat} by performing
+multiple simultaneous writes. 
 
-Compute-intensive operators (@code{ncap}, @code{ncwa} and @code{ncpdq}) 
+Compute-intensive operators (@code{ncap2}, @code{ncwa} and @code{ncpdq}) 
 benefit most from threading.
 The greatest increases in throughput due to threading occur on
 large datasets where each thread performs millions, at least,
@@ -2256,7 +2556,7 @@ of floating point operations.
 Otherwise, the system overhead of setting up threads probably outweighs 
 the speed enhancements due to @acronym{SMP} parallelism.
 However, we have not yet demonstrated that the @acronym{SMP} parallelism 
-scales well beyond four threads for these operators.
+scales beyond four threads for these operators.
 Hence we restrict @math{@var{thr_nbr} <= 4} for all operators.
 We encourage users to play with these limits (edit file
 @file{nco_omp.c}) and send us their feedback.
@@ -2383,10 +2683,8 @@ Interactive users usually prefer the minimal amount of typing, i.e.,
 We recommend that scripts which are re-usable employ some form of 
 the long options for future maintainability.
 
-This manual generally uses the short option syntax.
-This is for historical reasons and to conserve space.
-The remainder of this manual specifies the full @var{long_name} of
-each option.
+This manual generally uses the short option syntax in examples.
+This is for historical reasons and to conserve space in printed output.
 Users are expected to pick the unambiguous truncation of each option
 name that most suits their taste.
 
@@ -2411,7 +2709,7 @@ name that most suits their taste.
 @cindex @code{--path @var{input-path}}
 @cindex @var{input-path}
 @cartouche
-Availability (@code{-n}): @command{ncea}, @command{ncecat}, @command{ncra}, @command{ncrcat}@*
+Availability (@code{-n}): @command{nces}, @command{ncecat}, @command{ncra}, @command{ncrcat}@*
 Availability (@code{-p}): All operators@*
 Short options: @samp{-n}, @samp{-p}@*
 Long options: @samp{--nintap}, @samp{--pth}, @samp{--path}@*
@@ -2463,7 +2761,7 @@ the entire set of filenames
 @cindex multi-file operators
 @cindex files, multiple
 This option is only available with the @dfn{multi-file operators}:
- at command{ncra}, @command{ncrcat}, @command{ncea}, and @command{ncecat}.
+ at command{ncra}, @command{ncrcat}, @command{nces}, and @command{ncecat}.
 By definition, multi-file operators are able to process an arbitrary
 number of @var{input-files}.
 This option is very useful for abbreviating lists of filenames
@@ -2628,7 +2926,7 @@ All @acronym{NCO} operators can retrieve files from remote sites as well
 as from the local file system.
 @w{A remote} site can be an anonymous @acronym{FTP} server, a machine on
 which the user has @command{rcp}, @command{scp}, or @command{sftp}
-privileges, or @acronym{NCAR}'s Mass Storage System (@acronym{MSS}), or
+privileges, @acronym{NCAR}'s Mass Storage System (@acronym{MSS}), or
 an @acronym{OPeNDAP} server.
 Examples of each are given below, following a brief description of the 
 particular access protocol.
@@ -2640,7 +2938,8 @@ To access a file via an anonymous @acronym{FTP} server, supply the
 remote file's @acronym{URL}.
 @acronym{FTP} is an intrinsically insecure protocol because it transfers
 passwords in plain text format. 
-Users should access sites using anonymous @acronym{FTP} when possible. 
+Users should access sites using anonymous @acronym{FTP}, or better yet,
+secure @acronym{FTP} when possible. 
 Some @acronym{FTP} servers require a login/password combination for a
 valid user account.
 @acronym{NCO} allows these transactions so long as the required
@@ -2670,7 +2969,7 @@ specified with a homebrew syntax of the form
 @example
 sftp://machine.domain.tld:/path/to/filename
 @end example
-Note the second colon following the top-level-domain (tld).
+Note the second colon following the top-level-domain, @code{tld}.
 This syntax is a hybrid between an @acronym{FTP URL} and a standard
 remote file syntax.
 
@@ -2709,8 +3008,8 @@ of the remote file.
 In this case, @acronym{NCO} attempts to use the Hierarchical Storage
 Interface (@acronym{HSI}) command @command{hsi get}
 @footnote{The @command{hsi} command must be in the user's path in one of
-the following directories: @code{/usr/local/bin} or
- at code{/opt/hpss/bin}. 
+the following directories: @code{/usr/local/bin}, @code{/opt/hpss/bin},
+or @code{/ncar/opt/hpss/hsi}.
 Tell us if the @acronym{HPSS} installation at your site places the
 @command{hsi} command in a different location, and we will add that
 location to the list of acceptable paths to search for @command{hsi}.
@@ -2725,7 +3024,7 @@ ncks -l . sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco/in.nc
 ncks -l . dust.ess.uci.edu:/home/zender/nco/data/in.nc
 ncks -l . /ZENDER/nco/in.nc
 ncks -l . /home/zender/nco/in.nc
-ncks -l . http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc 
+ncks -l . http://thredds-test.ucar.edu/thredds/dodsC/testdods/in.nc 
 @end example
 @noindent
 The first example works verbatim if your system is connected to the
@@ -2743,7 +3042,8 @@ mechanisms including the @command{msread}, @command{msrcp}, and
 @command{nrnet} commands invoked either automatically or with sentinels
 like @command{ncks -p mss:/ZENDER/nco -l . in.nc}.
 Once the @acronym{MSS} was decommissioned in March, 2011, support for
-these retrieval mechanisms was removed from @acronym{NCO}.
+these retrieval mechanisms was replaced by support for @acronym{HPSS}
+in @acronym{NCO}.
 }.
 The sixth command works if your local version of @acronym{NCO} is
 @acronym{OPeNDAP}-enabled (this is fully described in @ref{OPeNDAP}),
@@ -2760,7 +3060,7 @@ ncks -p sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco -l . in.nc
 ncks -p dust.ess.uci.edu:/home/zender/nco -l . in.nc
 ncks -p /ZENDER/nco -l . in.nc
 ncks -p /home/zender/nco -l . in.nc # HPSS
-ncks -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \ 
+ncks -p http://thredds-test.ucar.edu/thredds/dodsC/testdods \ 
      -l . in.nc
 @end example
 @noindent
@@ -2775,7 +3075,8 @@ The automatically generated @var{input-path} is constructed by stripping
 the input filename of everything following the final @samp{/} character
 (i.e., removing the stub).
 The @samp{-l @var{output-path}} option tells @acronym{NCO} where to
-store the remotely retrieved file and the output file.
+store the remotely retrieved file.
+It has no effect on locally-retrieved files, or on the output file.
 Often the path to a remotely retrieved file is quite different than the
 path on the local machine where you would like to store the file.
 If @samp{-l} is not specified then @acronym{NCO} internally generates an
@@ -2788,10 +3089,10 @@ Specifying @var{output-path} as @samp{-l ./} tells @acronym{NCO} to
 store the remotely retrieved file and the output file in the current
 directory. 
 Note that @samp{-l .} is equivalent to @samp{-l ./} though the latter is
-recommended as it is syntactically more clear.
+syntactically more clear.
 
 @menu
-* OPeNDAP::                     
+* OPeNDAP::
 @end menu
 
 @html
@@ -2869,7 +3170,8 @@ The @file{./configure} mechanism automatically enables @acronym{NCO} as
 @acronym{OPeNDAP} libraries
 @footnote{
 The minimal set of libraries required to build @acronym{NCO} as
- at acronym{OPeNDAP} clients are, in link order,
+ at acronym{OPeNDAP} clients, where @acronym{OPeNDAP} is supplied as a
+separate library apart from @file{libnetcdf.a}, are, in link order,
 @file{libnc-dap.a}, @file{libdap.a}, and 
 @file{libxml2} and @file{libcurl.a}.}.
  in the usual locations.
@@ -2897,7 +3199,7 @@ network-transparent data access.
 hyperslabbing and server-side processing via @dfn{constraint expressions}.
 If you know more about this, please consider writing a section
 on "@acronym{OPeNDAP} Capabilities of Interest to @acronym{NCO} Users"
-for incorporation in the @cite{NCO User's Guide}.}.
+for incorporation in the @cite{NCO User Guide}.}.
 
 Once @acronym{NCO} is @acronym{DAP}-enabled the operators are
 @acronym{OPeNDAP} clients.  
@@ -2910,7 +3212,7 @@ This command tests the basic functionality of @acronym{OPeNDAP}-enabled
 @acronym{NCO} clients: 
 @example
 % ncks -O -o ~/foo.nc -C -H -v one -l /tmp \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
+  -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
 % ncks -H -v one ~/foo.nc
 one = 1
 @end example
@@ -2921,7 +3223,7 @@ With minor changes to the above command, netCDF4 can be used as both the
 input and output file format:
 @example
 % ncks -4 -O -o ~/foo.nc -C -H -v one -l /tmp \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
+  -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in_4.nc
 % ncks -H -v one ~/foo.nc
 one = 1
 @end example
@@ -2930,7 +3232,7 @@ to support other, orthogonal features such as UDUnits
 (@pxref{UDUnits Support}):
 @example
 % ncks -u -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
+  -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in_4.nc
 % wvl[0]=5e-07 meter
 @end example
 
@@ -3037,10 +3339,6 @@ ncks -R -l . -p \
 http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
   pres.sfc.1969.nc
 @end example
-Note that @acronym{NCO} is never the preffered way to transport files
-from remote machines.
-For large jobs, that is best handled by @acronym{FTP}, @acronym{SSH},
-or @command{wget}.
 It may occasionally be useful to use @acronym{NCO} to transfer files
 when your other preferred methods are not available locally.
 
@@ -3063,17 +3361,20 @@ when your other preferred methods are not available locally.
 @cindex @code{--3}
 @cindex @code{-3}
 @cindex @code{-4}
+ at cindex @code{-6}
+ at cindex @code{-7}
 @cindex @code{--4}
+ at cindex @code{--7}
 @cindex @code{--netcdf4}
 @cindex @code{--fl_fmt}
 @cindex @code{--file_format}
 @cindex @code{--64bit}
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
 @command{ncra}, @command{ncrcat}, @command{ncwa}@*
-Short options: @samp{-3}, @samp{-4}@*
-Long options: @samp{--3}, @samp{--4}, @samp{--64bit}, @samp{--fl_fmt},
+Short options: @samp{-3}, @samp{-4}, @samp{-6}, @samp{-7}@*
+Long options: @samp{--3}, @samp{--4}, @samp{--64bit}, @samp{--7}, @samp{--fl_fmt},
 @samp{--netcdf4}@*  
 @end cartouche
 All @acronym{NCO} operators support (read and write) all three (or four, 
@@ -3092,8 +3393,10 @@ netCDF supports four types of files: @code{CLASSIC}, @code{64BIT},
 @code{NETCDF4}, and @code{NETCDF4_CLASSIC}, 
 The @code{CLASSIC} format is the traditional 32-bit offset written by
 netCDF2 and netCDF3.
-As of 2005, most netCDF datasets are in @code{CLASSIC} format. 
+As of 2005, nearly all netCDF datasets were in @code{CLASSIC} format. 
 The @code{64BIT} format was added in Fall, 2004.
+As of 2010, many netCDF datasets were in @code{64BIT} format. 
+As of 2013, many netCDF datasets are in @code{NETCDF4_CLASSIC} format. 
 
 The @code{NETCDF4} format uses @acronym{HDF5} as the file storage layer. 
 The files are (usually) created, accessed, and manipulated using the 
@@ -3103,33 +3406,44 @@ the @code{NC_CLASSIC_MODEL} mask.
 Such files use @acronym{HDF5} as the back-end storage format (unlike
 netCDF3), though they incorporate only netCDF3 features.
 Hence @code{NETCDF4_CLASSIC} files are perfectly readable by
-applications which use only the netCDF3 @acronym{API} and library.
+applications which use only the netCDF3 @acronym{API}.
 @acronym{NCO} must be built with @w{netCDF4} to write files in the new
 @code{NETCDF4} and @code{NETCDF4_CLASSIC} formats, and to read files in
-the new @code{NETCDF4} format. 
-Users are advised to use the default @code{CLASSIC} format or the
- at code{NETCDF4_CLASSIC} format until netCDF4 is more widespread.
-Widespread support for @code{NETCDF4} format files is not expected for 
-a few more years, 2013--2014, say.
-If performance or coolness are issues, then use @code{NETCDF4_CLASSIC}  
-instead of @code{CLASSIC} format files.
+these formats. 
+Datasets in the default @code{CLASSIC} or the newer @code{64BIT} formats
+have maximum backwards-compatibility with older applications. 
+ at acronym{NCO} has deep support for @code{NETCDF4} formats, yet many
+applications do not. 
+If performance or disk-space as important as backwards compatibility,
+then use @code{NETCDF4_CLASSIC} instead of @code{CLASSIC} format files. 
+As of 2014, @acronym{NCO} support for the @code{NETCDF4} format is
+complete and the most powerful and disk/@acronym{RAM} efficient
+workflows will utilize this format.
 
 As mentioned above, all operators write use the input file format for
 output files unless told otherwise.
-Toggling the long option @samp{--64bit} switch (or its
- at var{key}- at var{value} equivalent @samp{--fl_fmt=64bit}) produces the
-netCDF3 64-bit offset format named @code{64BIT}. 
+Toggling the short option @samp{-6} or the long option @samp{--64bit}
+switch (or its @var{key}- at var{value} equivalent @samp{--fl_fmt=64bit})
+produces the netCDF3 64-bit offset format named @code{64BIT}. 
 @acronym{NCO} must be built with @w{netCDF 3.6} or higher to produce
 a @code{64BIT} file.
 Using the @samp{-4} switch (or its long option equivalents
 @samp{--4} or @samp{--netcdf4}), or setting its @var{key}- at var{value}
 equivalent @samp{--fl_fmt=netcdf4} produces a @code{NETCDF4} file
-(i.e., @acronym{HDF}).
-Casual users are advised to use the default (netCDF3) @code{CLASSIC}
-format until @w{netCDF 3.6} and @w{netCDF 4.0} are more widespread.
-Conversely, operators given the @samp{-3} (or @samp{--3}) switch
-without arguments will (attempt to) produce netCDF3 @code{CLASSIC}
-output, even from netCDF4 input files. 
+(i.e., with all supported @acronym{HDF5} features).
+Using the @samp{-7} switch (or its long option equivalent
+ at samp{--7}
+ at footnote{
+The reason (and mnemonic) for @samp{-7} is that @code{NETCDF4_CLASSIC}
+files include great features of both netCDF3 (compatibility) and
+netCDF4 (compression, chunking) and, well, @math{3+4=7}.}, or 
+setting its @var{key}- at var{value} equivalent
+ at samp{--fl_fmt=netcdf4_classic} produces a @code{NETCDF4_CLASSIC}  
+file (i.e., with all supported @acronym{HDF5} features like compression
+and chunking but without groups or new atomic types).
+Operators given the @samp{-3} (or @samp{--3}) switch without arguments
+will (attempt to) produce netCDF3 @code{CLASSIC} output, even from
+netCDF4 input files.  
 
 @html
 <a name="3to4"></a> <!-- http://nco.sf.net/nco.html#3to4 -->
@@ -3144,9 +3458,12 @@ ncks --fl_fmt=netcdf4_classic in.nc foo_4c.nc # netCDF4 classic
 ncks --fl_fmt=netcdf4 in.nc foo_4.nc # netCDF4 
 ncks -3 in.nc foo_3c.nc # netCDF3 classic
 ncks --3 in.nc foo_3c.nc # netCDF3 classic
+ncks -6 in.nc foo_364.nc # netCDF3 64bit
+ncks --64 in.nc foo_364.nc # netCDF3 64bit
 ncks -4 in.nc foo_4.nc # netCDF4 
 ncks --4 in.nc foo_4.nc # netCDF4 
-ncks --64 in.nc foo364.nc # netCDF3 64bit
+ncks -7 in.nc foo_4c.nc # netCDF4 classic
+ncks --7 in.nc foo_4c.nc # netCDF4 classic
 @end example
 Of course since most operators support these switches, the
 ``conversions'' can be done at the output stage of arithmetic
@@ -3188,17 +3505,17 @@ First, examine the end of the first line of global metadata output by
 @cindex @code{-M}
 @example
 % ncks -M foo_3c.nc
-Opened file foo_3c.nc: dimensions = 19, variables = 261, global atts. = 4, 
-  id = 65536, type = NC_FORMAT_CLASSIC 
+Opened file foo_3c.nc: dimensions = 23, variables = 296, 
+global atts. = 5, type = NC_FORMAT_CLASSIC 
 % ncks -M foo_364.nc
-Opened file foo_364.nc: dimensions = 19, variables = 261, global atts. = 4, 
-  id = 65536, type = NC_FORMAT_64BIT
+Opened file foo_364.nc: dimensions = 23, variables = 296, 
+global atts. = 5, type = NC_FORMAT_64BIT
 % ncks -M foo_4c.nc
-Opened file foo_4c.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_NETCDF4_CLASSIC
+Opened file foo_4c.nc: dimensions = 23, variables = 296, 
+global atts. = 5, type = NC_FORMAT_NETCDF4_CLASSIC
 % ncks -M foo_4.nc
-Opened file foo_4.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_NETCDF4
+Opened file foo_4.nc: dimensions = 23, variables = 296, 
+global atts. = 5, type = NC_FORMAT_NETCDF4
 @end example
 This method requires a netCDF4-enabled @acronym{NCO} version 3.9.0+
 (i.e., from 2007 or later).
@@ -3240,7 +3557,7 @@ Values of @samp{C D F 001} and @samp{C D F 002} indicate 32-bit
 @html
 <a name="lfs"></a> <!-- http://nco.sf.net/nco.html#lfs -->
 @end html
- at node Large File Support, Subsetting Variables, Selecting Output File Format, Common features
+ at node Large File Support, Subsetting Files, Selecting Output File Format, Common features
 @section Large File Support
 @cindex LFS
 @cindex Large File Support
@@ -3266,72 +3583,258 @@ See @ref{Selecting Output File Format} for instructions on accessing
 the different file formats, including 64-bit files, supported by the
 modern netCDF interface. 
 
-If you are still interesting in explicit LFS support for netCDF versions
+If you are still interested in explicit LFS support for netCDF versions
 prior @w{to 3.6}, know that LFS support depends on a complex,
 interlocking set of operating system  
 @footnote{
-Linux and @acronym{AIX} are known to support @acronym{LFS}.}
-and netCDF suppport issues.
-The netCDF LFS FAQ at
- at uref{http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html}
+Linux and @acronym{AIX} do support @acronym{LFS}.}
+and netCDF support issues.
+The netCDF LFS 
+ at uref{http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html,FAQ}
 describes the various file size limitations imposed by different
 versions of the netCDF standard.
 @acronym{NCO} and netCDF automatically attempt to configure LFS at
 build time. 
 
 @html
+<a name="grp"></a> <!-- http://nco.sf.net/nco.html#grp -->
 <a name="var"></a> <!-- http://nco.sf.net/nco.html#var -->
 <a name="xcl"></a> <!-- http://nco.sf.net/nco.html#xcl -->
 <a name="sbs"></a> <!-- http://nco.sf.net/nco.html#sbs -->
+<a name="subset"></a> <!-- http://nco.sf.net/nco.html#subset -->
 @end html
- at node Subsetting Variables, Subsetting Coordinate Variables, Large File Support, Common features
- at section Subsetting Variables
+ at node Subsetting Files, Subsetting Coordinate Variables, Large File Support, Common features
+ at section Subsetting Files
 @cindex subsetting
+ at cindex union
+ at cindex intersection
 @cindex exclusion
 @cindex extraction
 @cindex @code{-v @var{var}}
 @cindex @code{--variable @var{var}}
+ at cindex @code{-g @var{grp}}
+ at cindex @code{--grp @var{grp}}
+ at cindex @code{--group @var{grp}}
 @cindex @code{-x}
 @cindex @code{--exclude}
 @cindex @code{--xcl}
+ at cindex @code{--unn}
+ at cindex @code{--union}
 @cartouche
-Availability: (@command{ncap2}), @command{ncbo}, @command{ncea},
+Options @code{--unn}@*
+Availability: @command{ncbo}, @command{nces},
+ at command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
+ at command{ncra}, @command{ncrcat}, @command{ncwa}@* 
+Short options: @*
+Long options: @samp{--unn} and @samp{--union}@*
+Options @code{-g @var{grp}}@*
+Availability: @command{ncbo}, @command{nces},
 @command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
 @command{ncra}, @command{ncrcat}, @command{ncwa}@* 
+Short options: @samp{-g}@*
+Long options: @samp{--grp} and @samp{--group}@*
+Options @code{-v @var{var}} and @code{-x}@*
+Availability: (@command{ncap2}), @command{ncbo}, @command{nces},
+ at command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
+ at command{ncra}, @command{ncrcat}, @command{ncwa}@*
 Short options: @samp{-v}, @samp{-x}@*
 Long options: @samp{--variable}, @samp{--exclude} or @samp{--xcl}@*
 @end cartouche
-Subsetting variables refers to explicitly specifying variables to be
-included or excluded from operator actions.
-Subsetting is implemented with the @samp{-v @var{var}[, at dots{}]} and
- at samp{-x} options.  
- at w{A list} of variables to extract is specified following the @samp{-v} 
-option, e.g., @samp{-v time,lat,lon}.
-Not using the @samp{-v} option is equivalent to specifying all
-variables.  
+Subsetting variables refers to explicitly specifying variables and
+groups to be included or excluded from operator actions.
+Subsetting is controlled by the @samp{-v @var{var}[, at dots{}]} and
+ at samp{-x} options for directly specifying variables.  
+Specifying groups, whether in addition to or instead of variables,
+is quite similar and is controlled by the @samp{-g @var{grp}[, at dots{}]}
+and @samp{-x} options.
+ at w{A list} of variables or groups to extract is specified following the
+ at samp{-v} and @samp{-g} options, e.g., @samp{-v time,lat,lon} or
+ at samp{-g grp1,grp2}.
+Both options may be specified simultaneously and @acronym{NCO} will
+extract the intersection of the lists, i.e., only variables of the
+specified names found in groups of the specified names.
+The @samp{--unn} option causes @acronym{NCO} to extract the
+union, rather than the intersection, of the specified groups and
+variables. 
+Not using the @samp{-v} or @samp{-g} option is equivalent to specifying
+all variables or groupp, respectively.  
 The @samp{-x} option causes the list of variables specified with
 @samp{-v} to be @emph{excluded} rather than @emph{extracted}.
 Thus @samp{-x} saves typing when you only want to extract fewer than
 half of the variables in a file.
 
-Variables explicitly specified for extraction with
- at samp{-v @var{var}[, at dots{}]} @emph{must} be present in the input file 
-or an error will result.
+Variables or groups explicitly specified for extraction with
+ at samp{-v @var{var}[, at dots{}]} or @samp{-g @var{grp}[, at dots{}]}
+ at emph{must} be present in the input file or an error will result.
 Variables explicitly specified for @emph{exclusion} with
 @samp{-x -v @var{var}[, at dots{}]} need not be present in the input
 file.
+To accord with the sophistication of the underlying hierarchy,
+group subsetting is controlled by a few powerful yet subtle syntactical
+distinctions.
+When learning this syntax it is helpful to keep in mind the similarity
+between group hierarchies and directory structures. 
+
+ at cindex @command{mv}
+ at cindex @command{cp}
+ at cindex recursion
+ at cindex recursive
+ at cindex anchor
+ at cindex anchoring
+ at html
+<a name="rcr"></a> <!-- http://nco.sf.net/nco.html#rcr -->
+<a name="recursion"></a> <!-- http://nco.sf.net/nco.html#recursion -->
+<a name="recursive"></a> <!-- http://nco.sf.net/nco.html#recursive -->
+<a name="ncr"></a> <!-- http://nco.sf.net/nco.html#ncr -->
+<a name="anchor"></a> <!-- http://nco.sf.net/nco.html#anchor -->
+<a name="anchoring"></a> <!-- http://nco.sf.net/nco.html#anchoring -->
+ at end html
+Two properties of subsetting, recursion and anchoring, are best
+illustrated by reminding the user of their @acronym{UNIX} equivalents.
+The @acronym{UNIX} command @command{mv src dst} moves @file{src}
+ at emph{and all its subdirectories} (and all their subdirectories etc.)
+to @file{dst}.
+In other words @command{mv} is, by default, @emph{recursive}.
+In contrast, the @acronym{UNIX} command @command{cp src dst} moves
+ at file{src}, and only @file{src}, to @file{dst},
+If @file{src} is a directory, not a file, then that command fails.
+One must explicitly request to copy directories recursively, i.e.,
+with @command{cp -r src dst}.
+In @acronym{NCO} recursive extraction (and copying) of groups is the
+default (like with @command{mv}, not with @command{cp}).
+Recursion is turned off by appending a trailing slash to the path.
+
+These @acronym{UNIX} commands also illustrate a property we call
+ at emph{anchoring}. 
+The command @command{mv src dst} moves (recursively) the source
+directory @file{src} to the destination directory @file{dst}. 
+If @file{src} begins with the slash character then the specified path is
+relative to the root directory, otherwise the path is relative to the
+current working directory. 
+In other words, an initial slash character anchors the subsequent path
+to the root directory.
+In @acronym{NCO} an initial slash anchors the path at the root group.
+Paths that begin and end with slash characters (e.g., @file{//},
+ at file{/g1/}, and @file{/g1/g2/}) are both anchored and non-recursive. 
+
+Consider the following commands, all of which may be assumed to end with
+ at samp{in.nc out.nc}:
+ at example       
+ncks -g  g1  # Extract, recursively, all groups with a g1 component
+ncks -g  g1/ # Extract, non-recursively, all groups terminating in g1
+ncks -g /g1  # Extract, recursively, root group g1
+ncks -g /g1/ # Extract, non-recursively root group g1
+ncks -g //   # Extract, non-recursively the root group
+ at end example
+The first command is probably the most useful and common.
+It would extract these groups, if present, and all their direct
+ancestors and children:
+ at file{/g1}, @file{/g2/g1}, and @file{/g3/g1/g2}.
+In other words, the simplest form of @samp{-g grp} grabs all groups that 
+(and their direct ancestors and children, recursively) that have
+ at file{grp} as a complete component of their path.
+A simple string match is insufficient, @var{grp} must be a complete 
+component (i.e., group name) in the path.
+The option @samp{-g g1} would not extract these groups because @file{g1} 
+is not a complete component of the path: @file{/g12}, @file{/fg1}, and
+ at file{/g1g1}.
+The second command above shows how a terminating slash character
+ at kbd{/} cancels the recursive copying of groups.
+An argument to @samp{-g} which terminates with a slash character
+extracts the group and its direct ancestors, but none of its children. 
+The third command above shows how an initial slash character @kbd{/}
+anchors the argument to the root group.
+The third command would not extract the group @file{/g2/g1} because 
+the @file{g1} group is not at the root level, but it would extract,
+any group @file{/g1} at the root level and all its children,
+recursively.  
+The fourth command is the non-recursive version of the third command.
+The fifth command is a special case of the fourth command.
+
+ at html
+<a name="unn"></a> <!-- http://nco.sf.net/nco.html#unn -->
+<a name="nsx"></a> <!-- http://nco.sf.net/nco.html#nsx -->
+<a name="union"></a> <!-- http://nco.sf.net/nco.html#union -->
+<a name="intersection"></a> <!-- http://nco.sf.net/nco.html#intersection -->
+ at end html
+ at cindex union
+ at cindex intersection
+ at cindex @code{--unn}
+ at cindex @code{--union}
+ at cindex @code{--nsx}
+ at cindex @code{--intersection}
+As mentioned above, both @samp{-v} and @samp{-g} options may be
+specified simultaneously and @acronym{NCO} will, by default, extract the
+intersection of the lists, i.e., the specified variables found in the
+specified groups
+ at footnote{
+Intersection-mode can also be explicitly invoked with the @samp{--nsx}
+or @samp{--intersection} switches.
+These switches are supplied for clarity and consistency and do
+absolutely nothing since intersection-mode is the default.}.
+The @samp{--unn} option causes @acronym{NCO} to extract the
+union, rather than the intersection, of the specified groups and
+variables. 
+Consider the following commands (which may be assumed to end with
+ at samp{in.nc out.nc}):
+ at example       
+# Intersection-mode subsetting (default)
+ncks -g  g1  -v v1 # Yes: /g1/v1, /g2/g1/v1. No: /v1, /g2/v1
+ncks -g /g1  -v v1 # Yes: /g1/v1, /g1/g2/v1. No: /v1, /g2/v1, /g2/g1/v1
+ncks -g  g1/ -v v1 # Yes: /g1/v1, /g2/g1/v1. No: /v1, /g2/v1, /g1/g2/v1
+ncks -v  g1/v1     # Yes: /g1/v1, /g2/g1/v1. No: /v1, /g2/v1, /g1/g2/v1
+ncks -g /g1/ -v v1 # Yes: /g1/v1. No: /g2/g1/v1, /v1, /g2/v1 ...
+ncks -v /g1/v1     # Yes: /g1/v1. No: /g2/g1/v1, /v1, /g2/v1 ...
+
+# Union-mode subsetting (invoke with --unn or --union)
+ncks -g  g1  -v v1 --unn # All variables in  g1 or progeny, or named v1
+ncks -g /g1  -v v1 --unn # All variables in /g1 or progeny, or named v1
+ncks -g  g1/ -v v1 --unn # All variables in  g1 or named v1
+ncks -g /g1/ -v v1 --unn # All variables in /g1 or named v1
+ at end example
+The first command (@samp{-g g1 -v v1}) extracts the variable @file{v1}
+from any group named @file{g1} or descendent @file{g1}.
+The second command extracts @file{v1} from any root group
+named @file{g1} and any descendent groups as well.
+The third and fourth commands are equivalent ways of extracting
+ at file{v1} only from the root group named @file{g1} (but not its
+descendents). 
+The fifth and sixth commands are equivalent ways of extracting the 
+variable @file{v1} only from the root group named @file{g1}.
+Subsetting in union-mode (with @samp{--unn}) causes all variables to be
+extracted which meet either one or both of the specifications of the 
+variable and group specifications.
+Union-mode subsetting is simply the logical ``OR'' of intersection-mode
+subsetting. 
+As discussed below, the group and variable specifications may be comma
+separated lists of regular expressions for added control over
+subsetting. 
+
 @cindex memory requirements
 Remember, if averaging or concatenating large files stresses your
 systems memory or disk resources, then the easiest solution is often to
-use the @samp{-v} option to retain only the most important variables
-(@pxref{Memory Requirements}).
+subset (with @samp{-g} and/or @samp{-v}) to retain only the most
+important variables (@pxref{Memory Requirements}).
+ at example       
+ncks          in.nc out.nc # Extract all groups and variables
+ncks -v scl   # Extract variable scl from all groups
+ncks -g g1    # Extract group g1 and descendents
+ncks -x -g g1 # Extract all groups except g1 and descendents
+ncks -g g2,g3 -v scl # Extract scl from groups g2 and g3
+ at end example
+Overwriting and appending work as expected:
+ at example
+# Replace scl in group g2 in out.nc with scl from group g2 from in.nc
+ncks -A -g g2 -v scl in.nc out.nc
+ at end example
 
 Due to its special capabilities, @command{ncap2} interprets the
 @samp{-v} switch differently 
 (@pxref{ncap2 netCDF Arithmetic Processor}). 
 For @command{ncap2}, the @samp{-v} switch takes no arguments and
 indicates that @emph{only} user-defined variables should be output. 
- at command{ncap2} neither accepts nor understands the @var{-x} switch.
+ at command{ncap2} neither accepts nor understands the @var{-x} and
+ at var{-g} switches.
 
 @html
 <a name="rx"></a> <!-- http://nco.sf.net/nco.html#rx -->
@@ -3341,24 +3844,31 @@ indicates that @emph{only} user-defined variables should be output.
 @cindex regular expressions
 @cindex pattern matching
 @cindex wildcards
+ at cindex @command{grep -E}
 @cindex @command{egrep}
 @cindex @command{ncatted}
 @cindex @acronym{GNU}
-As of @acronym{NCO} 2.8.1 (August, 2003), variable name arguments
-of the @samp{-v} switch may contain @dfn{extended regular expressions}.
-As of @acronym{NCO} 3.9.6 (January, 2009), variable names arguments 
-to @command{ncatted} may contain @dfn{extended regular expressions}. 
-For example, @samp{-v '^DST'} selects all variables beginning with the 
-string @samp{DST}.
-Extended regular expressions are defined by the @acronym{GNU}
- at command{egrep} command.  
+Regular expressions the syntax that @acronym{NCO} use pattern-match
+object names in netCDF file against user requests.
+The user can select all variables beginning with the string @samp{DST}
+from an input file by supplying the regular expression @samp{^DST} to
+the @samp{-v} switch, i.e., @samp{-v '^DST'}. 
 The meta-characters used to express pattern matching operations are
 @samp{^$+?.*[]@{@}|}. 
 If the regular expression pattern matches @emph{any} part of a variable 
 name then that variable is selected.
-This capability is called @dfn{wildcarding}, and is very useful for
+This capability is also called @dfn{wildcarding}, and is very useful for 
 sub-setting large data files.
 
+Extended regular expressions are defined by the @acronym{POSIX}
+ at command{grep -E} (aka @command{egrep}) command.  
+As of @acronym{NCO} 2.8.1 (August, 2003), variable name arguments
+to the @samp{-v} switch may contain @dfn{extended regular expressions}.
+As of @acronym{NCO} 3.9.6 (January, 2009), variable names arguments 
+to @command{ncatted} may contain @dfn{extended regular expressions}. 
+As of @acronym{NCO} 4.2.4 (November, 2012), group name arguments 
+to the @samp{-g} switch may contain @dfn{extended regular expressions}.
+
 @cindex @acronym{POSIX}
 @cindex @code{regex}
 Because of its wide availability, @acronym{NCO} uses the @acronym{POSIX}  
@@ -3402,11 +3912,14 @@ subexpression.
 @end table
 @noindent
 
-To illustrate the use of these operators in extracting variables,
-consider a file with variables @code{Q}, @code{Q01}-- at code{Q99},
- at code{Q100}, @code{QAA}-- at code{QZZ}, @code{Q_H2O}, @code{X_H2O},
- at code{Q_CO2}, @code{X_CO2}.  
+To illustrate the use of these operators in extracting variables
+and groups, consider file @file{in_grp.nc} with groups
+ at code{g0}-- at code{g9}, and subgroups @code{s0}-- at code{s9}, in each of
+those groups, and file @file{in.nc} with variables @code{Q},
+ at code{Q01}-- at code{Q99}, @code{Q100}, @code{QAA}-- at code{QZZ},
+ at code{Q_H2O}, @code{X_H2O}, @code{Q_CO2}, @code{X_CO2}.  
 @example
+ncks -v '.+' in.nc               # All variables (default)
 ncks -v 'Q.?' in.nc              # Variables that contain Q
 ncks -v '^Q.?' in.nc             # Variables that start with Q
 ncks -v '^Q+.?.' in.nc           # Q, Q0--Q9, Q01--Q99, QAA--QZZ, etc.
@@ -3419,6 +3932,9 @@ ncks -v '^Q[0-9][0-9]$' in.nc    # Q01--Q99
 ncks -v '^Q[0-6][0-9]|7[0-3]' in.nc # Q01--Q73, Q100
 ncks -v '(Q[0-6][0-9]|7[0-3])$' in.nc # Q01--Q73
 ncks -v '^[a-z]_[a-z]@{3@}$' in.nc # Q_H2O, X_H2O, Q_CO2, X_CO2
+ncks -g 'g.' in_grp.nc           # 10 Groups g0-g9
+ncks -g 's.' in_grp.nc       # 100 sub-groups g0/s0, g0/s1, ... g9/s9
+ncks -g 'g.' -v 'v.' in_grp.nc   # All variables 'v.' in groups 'g.'
 @end example
 Beware---two of the most frequently used repetition pattern matching
 operators, @samp{*} and @samp{?}, are also valid pattern matching
@@ -3435,6 +3951,10 @@ use @samp{?}.
 Documentation for the @acronym{UNIX} @command{egrep} command details the
 extended regular expressions which @acronym{NCO} supports.
 
+ at html
+<a name="globbing"></a> <!-- http://nco.sf.net/nco.html#globbing -->
+<a name="glb"></a> <!-- http://nco.sf.net/nco.html#glb -->
+ at end html
 @cindex globbing
 @cindex shell
 @cindex @command{bash}
@@ -3463,7 +3983,7 @@ filename expansion (globbing).
 <a name="-C"></a> <!-- http://nco.sf.net/nco.html#-C -->
 <a name="-c"></a> <!-- http://nco.sf.net/nco.html#-c -->
 @end html
- at node Subsetting Coordinate Variables, C and Fortran Index Conventions, Subsetting Variables, Common features
+ at node Subsetting Coordinate Variables, Group Path Editing, Subsetting Files, Common features
 @section Subsetting Coordinate Variables
 @cindex subsetting
 @cindex @code{-C}
@@ -3473,7 +3993,7 @@ filename expansion (globbing).
 @cindex @code{--coords}
 @cindex @code{--crd}
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
 @command{ncra}, @command{ncrcat}, @command{ncwa}@* 
 Short options: @samp{-C}, @samp{-c}@*
@@ -3504,10 +4024,366 @@ both @samp{-c} and @samp{-C} honor the @acronym{CF} @code{bounds}
 convention described in @ref{CF Conventions}. 
 
 @html
+<a name="gpe"></a> <!-- http://nco.sf.net/nco.html#gpe -->
+ at end html
+ at node Group Path Editing, C and Fortran Index Conventions, Subsetting Coordinate Variables, Common features
+ at section Group Path Editing
+ at cindex @code{-G @var{gpe_dsc}}
+ at cindex @code{--gpe @var{gpe_dsc}}
+ at cartouche
+Options @code{-G @var{gpe_dsc}}@*
+Availability: @command{ncbo}, @command{ncecat}, @command{nces},
+ at command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
+ at command{ncrcat}, @command{ncwa}@*
+Short options: @samp{-G}@*
+Long options: @samp{--gpe}@*
+ at end cartouche
+
+ at dfn{Group Path Editing}, or @acronym{GPE}, allows the user to
+restructure (i.e., add, remove, and rename groups) in the output file 
+relative to the input file based on the instructions they provide.
+As of  @acronym{NCO} 4.2.3 (November, 2012), all operators that accept  
+netCDF4 files with groups accept the @samp{-G} switch, or its
+long-option equivalent @samp{--gpe}.
+To master @acronym{GPE} one must understand the meaning of the
+required @var{gpe_dsc} structure/argument that specifies the
+transformation of input-to-output group paths.
+
+Each @var{gpe_dsc} contains up to three elements (two are optional) in
+the following order:@*   
+ at var{gpe_dsc} = @var{grp_pth}:@var{lvl_nbr} or @var{grp_pth}@@@var{lvl_nbr}
+
+ at table @var
+ at item grp_pth
+Group Path.
+ at cindex group path
+This (optional) component specifies the output group path that should be 
+appended after any editing (i.e., deletion or truncation) of the input
+path is performed.
+ at item lvl_nbr
+The number of levels to delete (from the head) or truncate (from the
+tail) of the input path.
+ at end table
+ at noindent
+If both components of the argument are present, then a single character,
+either the colon or at-sign (@code{:} or @code{@@}), must separate them.
+If only @var{grp_pth} is specifed, the separator character may be
+omitted, e.g., @samp{-G g1}.
+If only @var{lvl_nbr} is specifed, the separator character is still
+required to indicate it is a @var{lvl_nbr} arugment and not a
+ at var{grp_pth}, e.g., @samp{-G :-1} or @samp{-G @@1}.
+
+If the at-sign separator character @code{@@} is used instead of the colon
+separator character @code{:}, then the following @var{lvl_nbr} arugment 
+must be positive and it will be assumed to refer to Truncation-Mode.
+Hence, @samp{-G :-1} is the same as @samp{-G @@1}. 
+This is simply a way of making the @var{lvl_nbr} argument
+positive-definite. 
+
+ at cindex @code{@@} (separator character)
+ at cindex @code{:} (separator character)
+ at cindex deletion (groups)
+ at cindex truncation (groups)
+ at cindex flattening (groups)
+ at acronym{GPE} has three editing modes: Deletion, Truncation, and
+Flattening.
+Select one of @acronym{GPE}'s three editing modes by supplying a
+ at var{lvl_nbr} that is positive, negative, or zero for Deletion-, 
+Truncation- and Flattening-mode, respectively. 
+
+In Deletion-mode, @var{lvl_nbr} is a positive integer which specifies
+the maximum number of group path components (i.e., groups) that
+ at acronym{GPE} will try to delete from the head of @var{grp_pth}. 
+For example @math{@var{lvl_nbr} = 3} changes the input path
+ at file{/g1/g2/g3/g4/g5} to the output path @file{/g4/g5}.
+Input paths with @var{lvl_nbr} or fewer components (groups)
+are completely erased and the output path commences from the root  
+level. 
+
+In other words, @acronym{GPE} is tolerant of specifying too many group
+components to delete. 
+It deletes as many as possible, without complaint, and then begins to
+flatten the file (which will fail if namespace conflicts arise).
+
+In Truncation-mode, @var{lvl_nbr} is a negative integer which specifies
+the maximum number of group path components (i.e., groups) that
+ at acronym{GPE} will try to truncate from the tail of @var{grp_pth}. 
+For example @math{@var{lvl_nbr} = -3} changes the input path
+ at file{/g1/g2/g3/g4/g5} to the output path @file{/g1/g2}.
+Input paths with @var{lvl_nbr} or fewer components (groups)
+are completely erased and the output path commences from the root  
+level. 
+
+In Flattening-mode, indicated by the separator character alone
+or with @math{@var{lvl_nbr} = 0}, @acronym{GPE} removes the entire group
+path from the input file and constructs the output path beginning at the
+root level.  
+For example @code{-G :0} and @code{-G :} are identical and change the
+input path @file{/g1/g2/g3/g4/g5} to the output path @file{/} whereas
+ at code{-G g1:0} and @code{-G g1:} are identical and result in the output 
+path @file{/g1} for all variables.
+
+Subsequent to the alteration of the input path by the specified
+editing mode, if any, @acronym{GPE} prepends (in Deletion Mode)
+or Appends (in Truncation-mode) any specifed @var{grp_pth} to the output
+path. 
+For example @code{-G g2} changes the input paths @file{/} and @file{/g1}
+to @file{/g2} and @file{/g1/g2}, respectively.
+Likewise, @code{-G g2/g3} changes the input paths @file{/} and @file{/g1}
+to @file{/g2/g3} and @file{/g1/g2/g3}, respectively.
+When @var{grp_pth} and @var{lvl_nbr} are both specified, the editing
+actions are taken in sequence so that, e.g., @code{-G g1/g2:2} 
+changes the input paths @file{/} and @file{/h1/h2/h3/h4}
+to @file{/g1/g2} and @file{/g1/g2/h3/h4}, respectively.
+Likewise, @code{-G g1/g2:-2} changes the input paths @file{/} and
+ at file{/h1/h2/h3/h4} to @file{/g1/g2} and @file{/h1/h2/g1/g2},
+respectively. 
+
+Combining @acronym{GPE} with subsetting (@pxref{Subsetting Files}) 
+yields powerful control over the extracted (or excluded) variables and
+groups and their placement in the output file as shown by the following
+commands. 
+All commands below may be assumed to end with @samp{in.nc out.nc}.
+ at example       
+# Prepending paths without editing:
+ncks                   # /g?/v? -> /g?/v?
+ncks             -v v1 # /g?/v1 -> /g?/v1
+ncks       -g g1       # /g1/v? -> /g1/v?
+ncks -G o1             # /g?/v? -> /o1/g?/v?
+ncks -G o1 -g g1       # /g1/v? -> /o1/g1/v?
+ncks       -g g1 -v v1 # /g1/v1 -> /g1/v1
+ncks -G o1       -v v1 # /g?/v1 -> /o1/g?/v1
+ncks -G o1 -g g1 -v v1 # /g1/v1 -> /o1/g1/v1
+ncks -G g1 -g /  -v v1 # /v1    -> /g1/v1
+ncks -G g1/g2    -v v1 # /g?/v1 -> /g1/g2/g?/v1
+# Deletion-mode: Delete from and Prepend to path head
+# Syntax: -G [ppn]:lvl_nbr = # of levels to delete
+ncks -G :1    -g g1    -v v1 # /g1/v1    -> /v1
+ncks -G :1    -g g1/g1 -v v1 # /g1/g1/v1 -> /g1/v1
+ncks -G :2    -g g1/g1 -v v1 # /g1/g1/v1 -> /v1
+ncks -G :2    -g g1    -v v1 # /g1/v1    -> /v1
+ncks -G g2:1  -g g1    -v v1 # /g1/v1    -> /g2/v1
+ncks -G g2:2  -g g1/g1 -v v1 # /g1/g1/v1 -> /g2/v1
+ncks -G g2:1  -g /     -v v1 # /v1       -> /g2/v1
+ncks -G g2:1           -v v1 # /v1       -> /g2/v1
+ncks -G g2:1  -g g1/g1 -v v1 # /g1/g1/v1 -> /g2/g1/v1
+# Flattening-mode: Remove all input path components
+# Syntax: -G [apn]: colon without numerical argument
+ncks -G :            -v v1 # /g?/v1    -> /v1
+ncks -G :   -g g1    -v v1 # /g1/v1    -> /v1
+ncks -G :   -g g1/g1 -v v1 # /g1/g1/v1 -> /v1
+ncks -G g2:          -v v1 # /g?/v1    -> /g2/v1
+ncks -G g2:                # /g?/v?    -> /g2/v?
+ncks -G g2: -g g1/g1 -v v1 # /g1/g1/v1 -> /g2/v1
+# Truncation-mode: Truncate from and Append to path tail
+# Syntax: -G [apn]:-lvl_nbr = # of levels to truncate
+# NB: -G [apn]:-lvl_nbr is equivalent to -G [apn]@@lvl_nbr
+ncks -G :-1   -g g1    -v v1 # /g1/v1    -> /v1
+ncks -G :-1   -g g1/g2 -v v1 # /g1/g2/v1 -> /g1/v1
+ncks -G :-2   -g g1/g2 -v v1 # /g1/g2/v1 -> /v1
+ncks -G :-2   -g g1    -v v1 # /g1/v1    -> /v1
+ncks -G g2:-1          -v v1 # /g?/v1    -> /g2/v1
+ncks -G g2:-1 -g g1    -v v1 # /g1/v1    -> /g2/v1
+ncks -G g1:-1 -g g1/g2 -v v1 # /g1/g2/v1 -> /g1/g1/v1
+ at end example
+
+ at cindex move groups
+ at cindex groups, moving
+ at cindex rename groups
+ at cindex groups, renaming
+Until fall 2013 (netCDF version 4.3.1), netCDF contained no library
+function for renaming groups. 
+ at acronym{NCO} built on earlier versions of netCDF than 4.3.1 therefore
+provides a workaround mechanism that utilizes @acronym{GPE} to rename
+groups.
+The @acronym{GPE} mechanism used is actually to move groups, a more
+arduous procedure than renaming.
+ at acronym{GPE} applies to all selected groups, so, in the general case,
+one must move only the desired group to a new file, and then merge that
+new file with the original to obtain a file where the desired group has
+been ``renamed'' and all else is unchanged.
+ at example
+ncks -O -G f4:1 -g g4 ~/nco/data/in_grp.nc ~/tmp.nc # Move /g4 to /f4
+ncks -O -x -g g4 ~/nco/data/in_grp.nc ~/out.nc # Excise /g4
+ncks -A ~/tmp.nc ~/out.nc # Add /f4 to new file
+ at end example
+If the original group @file{g4} is not excised from @file{out.nc} (step
+two above), then the final output file would contain both @file{g4} and
+a copy named @file{f4}.
+Thus GPE can be used to both ``rename'' and copy groups.
+The recommended way to rename groups when when netCDF version 4.3.1 is
+availale is to use @command{ncrename} (@pxref{ncrename netCDF Renamer}).
+
+ at html
+<a name="xmp_flt"></a> <!-- http://nco.sf.net/nco.html#xmp_flt -->
+ at end html
+One may wish to flatten hierarchical group files for many reasons.
+These include @w{1. Obtaining} flat netCDF3 files for use with tools
+that do not work with netCDF4 files, @w{2. Splitting} apart
+hierarchies to re-assemble into different hierarchies, and
+ at w{3. Providing} a subset of a hierarchical file with the simplest
+possible storage structure.
+ at example
+ncks -O -G : -g cesm -3 ~/nco/data/cmip5.nc ~/cesm.nc # Extract /cesm to /
+ at end example
+The @option{-3} switch 
+ at footnote{Note that the @option{-3} switch should appear @emph{after} the
+ at option{-G} and @option{-g} switches. 
+This is due to an artifact of the @acronym{GPE} implementation which we
+will hopefully remove in the future.}
+specifies the output dataset should be in netCDF3
+format, the @option{-G :} switch flattens all extracted groups, and the
+ at option{-g cesm} switch extracts only the @code{cesm} group and leaves
+all other groups (e.g., @code{ecmwf}, @code{giss}).
+
+ at html
+<a name="dismember"></a> <!-- http://nco.sf.net/nco.html#dismember -->
+<a name="disaggregate"></a> <!-- http://nco.sf.net/nco.html#disaggregate -->
+<a name="ncdismember"></a> <!-- http://nco.sf.net/nco.html#ncdismember -->
+ at end html
+ at cindex disaggregate
+ at cindex dismember
+ at findex ncdismember
+Let us show how to completely disaggregate (or, more memorably)
+ at emph{dismember} a hierarchical dataset.
+For now we take this to mean: store each lowest-level group, aka 
+leaf-group, as a standalone flat dataset in netCDF3 format. 
+This can be accomplished by looping the previous example over all
+leaf-groups. 
+This script @file{ncdismember} dismembers the input file @var{fl_in} 
+specified in the first argument @var{fl_in} and places the resulting
+files in the directory @var{drc_out} specified by the second argument
+ at example
+ at verbatim
+cat > ~/ncdismember << 'EOF'
+# Purpose: Dismember netCDF4/HDF5 hierarchical files. CF-check them.
+# Place each leaf group of input file in separate netCDF3 output file
+# Described in NCO User Guide at http://nco.sf.net/nco.html#dismember
+# Requirements: NCO 4.3.x, UNIX shell utilities grep, cut, sed, sort
+# Optional: CFchecker command https://bitbucket.org/mde_/cfchecker
+
+# Usage:
+# ncdismember <fl_in> <drc_out> [flg_cf] [cf_vrs]
+# where fl_in is input file/URL to dismember, drc_out is output directory,
+# CF-compliance check is performed when optional third argument is 'cf',
+# and optional fourth argument cf_vrs is CF version to check
+# chmod a+x ~/sh/ncdismember
+# ncdismember ~/nco/data/mdl.nc /data/zender/nco/tmp
+# ncdismember ~/nco/data/mdl.nc /data/zender/nco/tmp
+# ncdismember http://dust.ess.uci.edu/nco/mdl.nc /data/zender/nco/tmp
+# ncdismember http://thredds-test.ucar.edu/thredds/dodsC/testdods/foo.nc /data/zender/nco/tmp
+# ncdismember ~/nco/data/mdl.nc /data/zender/nco/tmp cf
+# ncdismember ~/nco/data/mdl.nc /data/zender/nco/tmp cf 1.3
+
+# Command line argument defaults
+fl_in="${HOME}/nco/data/mdl.nc" # [sng] Input file to dismember/check
+drc_out="${DATA}/nco/tmp" # [sng] Output directory
+flg_cf='0' # [flg] Perform CF-compliance check
+cf_vrs='auto' # [sng] Perform compliance-check on this CF version (e.g., '1.1')
+
+# Command line argument option parsing
+if [ -n "${1}" ]; then
+    fl_in=${1}
+fi # !$1
+if [ -n "${2}" ]; then
+    drc_out=${2}
+fi # !$2
+if [ -n "${3}" ]; then
+    flg_cf=${3}
+fi # !$3
+if [ -n "${4}" ]; then
+    cf_vrs=${4}
+fi # !$4
+
+mkdir -p ${drc_out}
+cd ${drc_out}
+
+grp_lf=`ncks --get_grp_info ${fl_in} | grep '0 subgroups' | cut -f 1 -d ' ' | sed 's/://' | sort`
+echo "Dismembering file ${fl_in} into following files:"
+for grp_in in ${grp_lf} ; do
+    grp_out=`echo ${grp_in} | sed 's/\///' | sed 's/\//./g'`
+    echo "${drc_out}/${grp_out}.nc"
+    ncks -O -G : -g ${grp_in} -3 ${fl_in} ${drc_out}/${grp_out}.nc
+    if [ ${flg_cf} = 'cf' ]; then
+       cfchecker -c ${cf_vrs} ${drc_out}/${grp_out}.nc
+    fi # !flg_cf
+done
+EOF
+chmod 755 ~/ncdismember # Make command executable
+/bin/mv -f ~/ncdismember ~/sh # Store in location on $PATH, e.g., /usr/local/bin
+
+zender at roulee:~$ ncdismember ~/nco/data/mdl.nc /data/zender/nco/tmp
+Dismembering file /home/zender/nco/data/mdl.nc into following files:
+/data/zender/nco/tmp/cesm.cesm_01.nc
+/data/zender/nco/tmp/cesm.cesm_02.nc
+/data/zender/nco/tmp/ecmwf.ecmwf_01.nc
+/data/zender/nco/tmp/ecmwf.ecmwf_02.nc
+ at end verbatim
+ at end example
+An operator could be written to dismember all groups with a single
+invocation, but the point is dismembering without loss of information 
+is possible now with this simple script.
+Note that all dimensions inherited by groups in the input file are
+correctly placed by @command{ncdismember} into the flat files.
+Moreover, each output file preserves the group metadata of all ancestor
+groups, including the global metadata from the input file.
+As written, the script fails on groups that contain netCDF4 features
+because the user requests (with the @samp{-3} option) that output be
+netCDF3 classic format.  
+Naturally groups containing netCDF4-only atomic-types (such as
+ at code{NC_STRING} and @code{NC_UINT64}) should be dismembered into flat
+netCDF4 files, not flat netCDF3 files (compliance-checkers may complain
+about netCDF4 filetypes, atomic types, or both).
+
+ at cindex @acronym{CF} compliance checker
+ at findex cfchecker
+ at findex ncdismember
+ at cindex compliance checker
+ at cindex Martin Schultz
+ at cindex Michael Decker
+One application of dismembering is to check the @acronym{CF}-compliance of each 
+group in a file. 
+When invoked with the optional third argumnt @samp{cf},
+ at command{ncdismember} passes each file it generates to the freely
+available
+ at footnote{CFchecker is developed by Michael Decker and Martin Schultz at
+Forschungszentrum J@"ulich and distributed at
+ at uref{https://bitbucket.org/mde_/cfchecker}.} 
+ at command{cfchecker} command.
+ at example
+ at verbatim
+zender at roulee:~$ ncdismember ~/nco/data/mdl.nc /data/zender/nco/tmp cf
+Dismembering file /home/zender/nco/data/mdl.nc into following files:
+/data/zender/nco/tmp/cesm.cesm_01.nc
+WARNING: Using the default (non-CF) Udunits database
+/data/zender/nco/tmp/cesm.cesm_01.nc: 
+INFO: INIT:	running CFchecker version 1.5.15
+INFO: INIT:	checking compliance with convention CF-1.5
+INFO: INIT:	using standard name table version: 25, last modified: 2013-07-05T05:40:30Z
+INFO: INIT:	using area type table version: 2, date: 10 July 2013
+INFO: 2.4:	no axis information found in dimension variables, not checking dimension order
+WARNING: 3:	variable "tas" contains neither long_name nor standard_name attribute
+INFO: 3.1:	variable "tas" does not contain units attribute
+--------------------------------------------------
+total files: 1, OK: 0, with warnings: 1, with errors: 0
+/data/zender/nco/tmp/cesm.cesm_02.nc
+WARNING: Using the default (non-CF) Udunits database
+...
+ at end verbatim
+ at end example
+By default the @acronym{CF} version checked is determined automatically by
+ at command{cfchecker}. 
+The user can override this default by supplying a supported @acronym{CF} version,
+e.g., @samp{1.3}, as an optional fourth argument to
+ at command{ncdismember}. 
+Current valid @acronym{CF} versions are @samp{1.0}, @samp{1.1},
+ at samp{1.2}, @samp{1.3}, @samp{1.4}, and @samp{1.5}. 
+
+ at html
 <a name="ftn"></a> <!-- http://nco.sf.net/nco.html#ftn -->
 <a name="-F"></a> <!-- http://nco.sf.net/nco.html#-F -->
 @end html
- at node C and Fortran Index Conventions, Hyperslabs, Subsetting Coordinate Variables, Common features
+ at node C and Fortran Index Conventions, Hyperslabs, Group Path Editing, Common features
 @section C and Fortran Index conventions
 @cindex index convention
 @cindex Fortran index convention
@@ -3515,7 +4391,7 @@ convention described in @ref{CF Conventions}.
 @cindex @code{-F}
 @cindex @code{--fortran}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
 @command{ncrcat}, @command{ncwa}@* 
 Short options: @samp{-F}@*
@@ -3567,6 +4443,7 @@ lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
 <a name="-d"></a> <!-- http://nco.sf.net/nco.html#-d -->
 <a name="dmn"></a> <!-- http://nco.sf.net/nco.html#dmn -->
 <a name="hyp"></a> <!-- http://nco.sf.net/nco.html#hyp -->
+<a name="hyperslab"></a> <!-- http://nco.sf.net/nco.html#hyperslab -->
 @end html
 @node Hyperslabs, Stride, C and Fortran Index Conventions, Common features
 @section Hyperslabs 
@@ -3577,7 +4454,7 @@ lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
 @cindex @code{--dimension @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
 @cindex @code{--dmn @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
 @command{ncrcat}, @command{ncwa}@* 
 Short options: @samp{-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}@*
@@ -3605,6 +4482,23 @@ the @var{min} limit and omitting a trailing comma.
 Dimensions not mentioned are passed with no reduction in range.
 The dimensionality of variables is not reduced (in the case of a
 cross-section, the size of the constant dimension will be one). 
+ at example
+# First and second indices of lon dimension
+ncks -F -d lon,1,2 in.nc out.nc
+# Second and third indices of lon dimension
+ncks -d lon,1,2 in.nc out.nc
+ at end example
+
+ at cindex stride
+Coordinate values should be specified using real notation with a decimal 
+point required in the value, whereas dimension indices are specified
+using integer notation without a decimal point. 
+This convention serves only to differentiate coordinate values from
+dimension indices.
+It is independent of the type of any netCDF coordinate variables.
+For a given dimension, the specified limits must both be coordinate
+values (with decimal points) or dimension indices (no decimal points).
+
 If values of a coordinate-variable are used to specify a range or
 cross-section, then the coordinate variable must be monotonic (values
 either increasing or decreasing). 
@@ -3616,27 +4510,47 @@ values until one falls outside the range.
 The coordinate value for a cross-section is the coordinate-variable
 value closest to the specified value and must lie within the range or
 coordinate-variable values. 
-
- at cindex stride
-Coordinate values should be specified using real notation with a decimal 
-point required in the value, whereas dimension indices are specified
-using integer notation without a decimal point. 
-This convention serves only to differentiate coordinate values from
-dimension indices.
-It is independent of the type of any netCDF coordinate variables.
-For a given dimension, the specified limits must both be coordinate
-values (with decimal points) or dimension indices (no decimal points).
-The @var{stride} option, if any, must be a dimension index, not a
+The @var{stride} argument, if any, must be a dimension index, not a
 coordinate value.
 @xref{Stride}, for more information on the @var{stride} option.
+ at example
+# All longitude values between 1 and 2 degrees
+ncks -d lon,1.0,2.0 in.nc out.nc
+# All longitude values between 1 and 2 degrees
+ncks -F -d lon,1.0,2.0 in.nc out.nc
+# Every other longitude value between 0 and 90 degrees
+ncks -F -d lon,0.0,90.0,2 in.nc out.nc
+ at end example
+
+As of version 4.2.1 (August, 2012), @acronym{NCO} allows one to extract
+the last @var{N} elements of a hyperslab.
+Negative integers as @var{min} or @var{max} elements of a hyperslab
+specification indicate offsets from the end (Python also uses this
+convention). 
+Previously, for example, @samp{-d time,-2,-1} caused a domain error. 
+Now it means select the second-to-last and penultimate timesteps.
+Negative integers work for @var{min} and @var{max} indices but not for
+ at var{stride}. 
+ at example
+# Last two indices of lon dimension
+ncks -F -d lon,1,-2 in.nc out.nc
+# First to penultimate indices of lon dimension
+ncks -F -d lon,1,-2 in.nc out.nc
+# Third-to-last to last index of lon dimension
+ncks -F -d lon,-3,-1 in.nc out.nc
+# Third-to-last to last index of lon dimension
+ncks -F -d lon,-3, in.nc out.nc
+ at end example
+ at noindent
+As shown, we recommend using a full floating point suffix of @code{.0}
+instead of simply @code{.} in order to make obvious the selection of
+hyperslab elements based on coordinate value rather than index.
 
- at cindex @code{NC_BYTE}
 @cindex @code{NC_CHAR}
-User-specified coordinate limits are promoted to double precision values 
+User-specified coordinate limits are promoted to double-precision values 
 while searching for the indices which bracket the range. 
-Thus, hyperslabs on coordinates of type @code{NC_BYTE} and
- at code{NC_CHAR} are computed numerically rather than lexically, so the
-results are unpredictable. 
+Thus, hyperslabs on coordinates of type @code{NC_CHAR} are computed
+numerically rather than lexically, so the results are unpredictable. 
 
 @cindex wrapped coordinates
 The relative magnitude of @var{min} and @var{max} indicate to the
@@ -3673,14 +4587,14 @@ This option may be specified more than once in a single command
 <a name="srd"></a> <!-- http://nco.sf.net/nco.html#srd -->
 <a name="stride"></a> <!-- http://nco.sf.net/nco.html#stride -->
 @end html
- at node Stride, Multislabs, Hyperslabs, Common features
+ at node Stride, Record Appending, Hyperslabs, Common features
 @section Stride 
 @cindex stride
 @cindex @code{-d @var{dim},[@var{min}],[@var{max}], at var{stride}}
 @cindex @code{--dimension @var{dim},[@var{min}],[@var{max}], at var{stride}}
 @cindex @code{--dmn @var{dim},[@var{min}],[@var{max}], at var{stride}}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
 @command{ncrcat}, @command{ncwa}@* 
 Short options: @samp{-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}@*
@@ -3760,10 +4674,176 @@ ncrcat -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8503_8903.nc
 @end example
 
 @html
+<a name="rec_apn"></a> <!-- http://nco.sf.net/nco.html#rec_apn -->
+<a name="record_append"></a> <!-- http://nco.sf.net/nco.html#record_append -->
+ at end html
+ at node Record Appending, Duration, Stride, Common features
+ at section Record Appending
+ at cindex record append
+ at cindex @code{--rec_apn}
+ at cindex @code{--record_append}
+ at cartouche
+Availability: @command{ncra}, @command{ncrcat}@* 
+Short options: None@*
+Long options: 
+ at samp{--rec_apn}, @samp{--record_append}@*
+ at end cartouche
+As of version 4.2.6 (March, 2013), @acronym{NCO} allows both
+Multi-File, Multi-Record operators (@command{ncra} and @command{ncrcat})
+to append their output directly to the end of an existing file.
+This feature useful when a target file is to be augmented, rather than
+constructed from scratch. 
+For example, when a timeseries is concatenated from input data that
+becomes available in stages rather than all at once.
+This switch enables an optimization that significantly speeds writing
+in such cases.
+
+Consider the use case where wants to preserve the contents of
+ at file{fl_1.nc}, and add to them new records contained in
+ at file{fl_2.nc}. 
+Previously the output had to be placed in a third file, @file{fl_3.nc}
+(which could also safely be named @file{fl_2.nc}), via
+ at example
+ncrcat -O fl_1.nc fl_2.nc fl_3.nc
+ at end example
+Under the hood this operation copies all information in
+ at file{fl_1.nc} and @file{fl_2.nc} not once but twice.
+The first copy is performed through the netCDF interface, as all
+data from @file{fl_1.nc} and @file{fl_2.nc} are extracted and placed in
+the output file.
+The second copy occurs (usually much) more quickly as the (by default)
+temporary output file is copied (sometimes a quick re-link suffices) to
+the final output file (@pxref{Temporary Output Files}).
+All this copying is expensive for large files. 
+
+The new @samp{--record_append} switch causes all records in
+ at file{fl_1.nc} to be appended to the end of the corresponding records in
+ at file{fl_2.nc}: 
+ at example
+ncrcat --rec_apn fl_1.nc fl_2.nc
+ at end example
+The contents of @file{fl_2.nc} are completely preserved, and only
+values in @file{fl_1.nc} are copied. 
+This switch avoids the necessity of copying all of @file{fl_2.nc} 
+through the netCDF interface to a new output file.
+The @samp{--rec_apn} switch automatically puts @acronym{NCO} into 
+append mode (@pxref{Appending Variables}), so specifying @samp{-A} is
+redundant, and simultaneously specifying overwrite mode with @samp{-O}
+causes an error.  
+By default, NCO works in an intermediate temporary file.
+Power users may combine @samp{--rec_apn} with the @samp{--no_tmp_fl}
+switch (@pxref{Temporary Output Files}):
+ at example
+ncrcat --rec_apn --no_tmp_fl fl_1.nc fl_2.nc
+ at end example
+This avoids creating an intermediate file, and copies only the
+minimal amount of data (i.e., all of @file{fl_1.nc}). 
+Hence, it is fast.
+We recommend users try to understand the safety trade-offs involved. 
+
+ at html
+<a name="duration"></a> <!-- http://nco.sf.net/nco.html#duration -->
+<a name="drn"></a> <!-- http://nco.sf.net/nco.html#drn -->
+<a name="mro"></a> <!-- http://nco.sf.net/nco.html#mro -->
+ at end html
+ at node Duration, Multislabs, Record Appending, Common features
+ at section Duration
+ at cindex duration
+ at cindex sub-cycle
+ at cindex MRO
+ at cindex Multi-Record Operator
+ at cindex @code{--mro}
+ at cindex @code{-d @var{dim},[@var{min}],[@var{max}],[@var{stride}],[@var{duration}]}
+ at cindex @code{--dimension @var{dim},[@var{min}],[@var{max}],[@var{stride}],[@var{duration}]}
+ at cindex @code{--dmn @var{dim},[@var{min}],[@var{max}],[@var{stride}], at var{duration}]}
+ at cartouche
+Availability: @command{ncra}, @command{ncrcat}@* 
+Short options: @samp{-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}][,[@var{duration}]]]]}@*
+Long options: 
+ at samp{--mro}
+ at samp{--dimension @var{dim},[@var{min}][,[@var{max}][,[@var{stride}][,[@var{duration}]]]]}@*
+ at samp{--dmn @var{dim},[@var{min}][,[@var{max}][,[@var{stride}][,[@var{duration}]]]]}@*
+ at end cartouche
+As of version 4.2.1 (August, 2012), @acronym{NCO} allows both Multi-File,
+Multi-Record operators, @command{ncra} and @command{ncrcat}, to extract
+and operate on multiple groups of records. 
+These groups may be physically connected to @emph{sub-cycles} of a
+periodic nature, e.g., seasons of a year.
+Or they may be thought of as groups of a specifed duration.
+The feature and the terminology to describe it are new.
+For now, we call this the @dfn{duration feature}, sometimes abbreviated DRN.
+
+The duration feature allows processing of groups of records
+separated by regular intervals of records.
+It is perhaps best illustrated by an extended example which describes
+how to solve the same problem both with and without the DRN feature.
+
+The first task in climate data processing is often creating seasonal
+cycles. 
+Suppose a 150-year climate simulation produces 150 output files, each
+comprising 12 records, each record a monthly mean:
+ at file{1850.nc}, @file{1851.nc}, ... @file{1999.nc}.
+Our goal is to create a single file containing the summertime (June,
+July, and August, aka JJA) mean.
+Traditionally, we would first compute the climatological monthly
+mean for each month of summer. 
+Each of these is a 150-year mean, i.e., 
+ at example
+# Step 1: Create climatological monthly files clm06.nc..clm08.nc
+for mth in @{6..8@}; do
+  mm=`printf "%02d" $mth`
+  ncra -O -F -d time,$@{mm@},,12 -n 150,4,1 1850.nc clm$@{mm@}.nc
+done
+# Step 2: Average climatological monthly files into summertime mean
+ncra -O clm06 clm07.nc clm08.nc clm_JJA.nc
+ at end example
+ at noindent
+So far, nothing is unusual and this task can be performed by any
+ at acronym{NCO} version. 
+The DRN feature makes obsolete the need for the shell loop used in
+ at w{Step 1} above. 
+
+The new DRN option aggregates more than one input record at a time
+before performing arithmetic operations, and, with an additional
+switch, allows us to archive those results in multiple record output
+(MRO) files.  
+This reduces the task of producing a the climatological summertime
+mean to one step:
+ at example
+# Step 1: Compute climatological summertime mean
+ncra -O -F -d time,6,,12,3 -n 150,4,1 1850.nc clm_JJA.nc
+ at end example
+ at noindent
+The DRN option instructs @command{ncra} (or @command{ncrcat}) to process 
+files in groups of three records. 
+
+A separate option, @samp{--mro}, instructs @command{ncra} to output 
+its results from each sub-group, and to produce a @dfn{Multi-Record Output}
+(MRO) file rather than a @dfn{Single-Record Output} (SRO) file.
+Unless @samp{--mro} is specified, @command{ncra} collects all the
+sub-groups together, and operates on their ensemble, producing a single
+output record. 
+The addition of @samp{--mro} to the above example causes @command{ncra}
+to archive all (150) annual summertime means to one file:
+ at example
+# Step 1: Archive all 150 summertime means in one file
+ncra --mro -O -F -d time,6,,12,3 -n 150,4,1 1850.nc 1850_2009_JJA.nc
+# ...or all (150) annual means...
+ncra --mro -O -d time,,,12,12 -n 150,4,1 1850.nc 1850_2009.nc
+ at end example
+ at noindent
+These operations generated and required no intermediate files.
+This contrasts to the previous @acronym{NCO} methods, which require
+generating, averaging, then catenating 150 files. 
+The @samp{--mro} option has no effect on, or rather is redundant for, 
+ at command{ncrcat} since @command{ncrcat} always outputs all selected
+records.
+
+ at html
 <a name="msa"></a> <!-- http://nco.sf.net/nco.html#msa -->
 <a name="mlt"></a> <!-- http://nco.sf.net/nco.html#mlt -->
 @end html
- at node Multislabs, Wrapped Coordinates, Stride, Common features
+ at node Multislabs, Wrapped Coordinates, Duration, Common features
 @section Multislabs 
 @cindex multislab
 @cindex multi-hyperslab
@@ -3771,25 +4851,35 @@ ncrcat -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8503_8903.nc
 @cindex @code{-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
 @cindex @code{--dimension @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
 @cindex @code{--dmn @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
+ at cindex @code{--msa}
+ at cindex @code{--msa_usr_rdr}
+ at cindex @code{--msa_user_order}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
 @command{ncrcat}@* 
 Short options: @samp{-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}@*
 Long options: 
 @samp{--dimension @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]},@* 
 @samp{--dmn @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}@*
+ at samp{--msa_usr_rdr}, @samp{--msa_user_order}@*
 @end cartouche
 A @w{multislab} is a union of one or more hyperslabs.
 One defines multislabs by chaining together hyperslab commands, i.e., 
 @kbd{-d} options (@pxref{Hyperslabs}).
 Support for specifying a @dfn{multi-hyperslab} or @dfn{multislab} for
 any variable was first added to @command{ncks} in late 2002.
-The other operators received @acronym{MSA} capabilities in April 2008.
-Sometimes multi-slabbing is referred to by the acronym @acronym{MSA},
+The other operators received these capabilities in April 2008.
+Multi-slabbing is often referred to by the acronym @acronym{MSA},
 which stands for ``Multi-Slabbing Algorithm''.
-
-Multislabs overcome some restraints that limit hyperslabs.
+As explained below, the user may additionally request that the
+multislabs be returned in the user-specified order, rather than the
+on-disk storage order. 
+Although @acronym{MSA} user-ordering has been available in all operators
+since 2008, most users were unaware of it since the documentation
+(below, and in the man pages) was not written until July 2013.
+
+Multislabs overcome many restraints that limit simple hyperslabs.
 @w{A single} @kbd{-d} option can only specify a contiguous and/or
 a regularly spaced multi-dimensional data array.
 Multislabs are constructed from multiple @kbd{-d} options and may
@@ -3812,6 +4902,9 @@ ncks -d lon,10.,15. -d lon,15.,20. -d lon,80.,90. in.nc out.nc
 @noindent
 Any number of hyperslabs specifications may be chained together
 to specify the multislab.
+ at acronym{MSA} creates an output dimension equal in size to the sum of
+the sizes of the multislabs.
+This can be used to extend and or pad coordinate grids.
 
 @cindex stride
 Users may specify redundant ranges of indices in a multislab, e.g., 
@@ -3841,7 +4934,6 @@ algorithm will obtain the intended values.
 Specifying redundant ranges is not encouraged, but may be useful on
 occasion and will not result in unintended consequences.
 
- at w{A final} example shows the real power of multislabs.
 Suppose the @var{Q} variable contains three dimensional arrays of
 distinct chemical constituents in no particular order.
 We are interested in the NOy species in a certain geographic range. 
@@ -3858,6 +4950,94 @@ Thus multislabs obsolete the need to execute multiple @command{ncks}
 commands to gather the desired range of data.
 
 @html
+<a name="msa_usr_rdr"></a> <!-- http://nco.sf.net/nco.html#msa_usr_rdr -->
+ at end html
+The @acronym{MSA} user-order switch @samp{--msa_usr_rdr} (or
+ at samp{--msa_user_order}, both of which shorten to @samp{--msa}) 
+requests that the multislabs be output in the user-specified
+order from the command-line, rather than in the input-file on-disk
+storage order.  
+This allows the user to perform complex data re-ordering in one
+operation that would otherwise require cumbersome steps of
+hyperslabbing, concatenating, and permuting. 
+Consider the recent example of a user who needed to convert datasets
+stored with the longitude coordinate @code{Lon} ranging from
+[@minus{}180,180) to datasets that follow the [0,360) convention.
+ at example
+% ncks -H -v Lon in.nc
+Lon[0]=-180
+Lon[1]=-90
+Lon[2]=0
+Lon[3]=90
+ at end example
+ at noindent
+Although simple in theory, this task requires both mathematics to
+change the numerical value of the longitude coordinate, data
+hyperslabbing to split the input on-disk arrays at Greenwich, and data
+re-ordering within to stitch the western hemisphere onto the eastern
+hemisphere at the date-line.
+The @samp{--msa} user-order switch overrides the default that data are
+output in the same order in which they are stored on-disk in the input
+file, and instead stores them in the same order as the multi-slabs are
+given to the command line.
+This default is intuitive and is not important in most uses.
+However, the @acronym{MSA} user-order switch allows users to meet
+their output order needs by specifying multi-slabs in a certain order.
+Compare the results of default ordering to user-ordering for longitude:
+ at example
+% ncks -O -H       -v Lon -d Lon,0.,180. -d Lon,-180.,-1.0 in.nc
+Lon[0]=-180 
+Lon[1]=-90 
+Lon[2]=0 
+Lon[3]=90 
+% ncks -O -H --msa -v Lon -d Lon,0.,180. -d Lon,-180.,-1.0 in.nc
+Lon[0]=0 
+Lon[1]=90 
+Lon[2]=-180 
+Lon[3]=-90 
+ at end example
+ at noindent
+The two multi-slabs are the same but they can be presented to screen,
+or to an output file, in either order. 
+The second example shows how to place the western hemisphere after the
+eastern hemisphere, although they are stored in the opposite order in
+the input file. 
+
+With this background, one sees that the following commands suffice to
+rotate the input file by 180 degrees longitude:
+ at example
+% ncks -O -v LatLon --msa -d Lon,0.,180. -d Lon,-180.,-1.0 in.nc out.nc
+% ncap2 -O -s 'where(Lon < 0) Lon=Lon+360' out.nc out.nc
+% ncks -C -H -v LatLon ~/nco/data/in.nc
+Lat[0]=-45 Lon[0]=-180 LatLon[0]=0 
+Lat[0]=-45 Lon[1]=-90 LatLon[1]=1 
+Lat[0]=-45 Lon[2]=0 LatLon[2]=2 
+Lat[0]=-45 Lon[3]=90 LatLon[3]=3 
+Lat[1]=45 Lon[0]=-180 LatLon[4]=4 
+Lat[1]=45 Lon[1]=-90 LatLon[5]=5 
+Lat[1]=45 Lon[2]=0 LatLon[6]=6 
+Lat[1]=45 Lon[3]=90 LatLon[7]=7 
+% ncks -C -H -v LatLon ~/out.nc
+Lat[0]=-45 Lon[0]=0 LatLon[0]=2 
+Lat[0]=-45 Lon[1]=90 LatLon[1]=3 
+Lat[0]=-45 Lon[2]=180 LatLon[2]=0 
+Lat[0]=-45 Lon[3]=270 LatLon[3]=1 
+Lat[1]=45 Lon[0]=0 LatLon[4]=6 
+Lat[1]=45 Lon[1]=90 LatLon[5]=7 
+Lat[1]=45 Lon[2]=180 LatLon[6]=4 
+Lat[1]=45 Lon[3]=270 LatLon[7]=5 
+ at end example
+ at noindent
+There are other workable, valid methods to accomplish this rotation, yet
+none are simpler nor more efficient than utilizing @acronym{MSA}
+user-ordering. 
+Some final comments on applying this algorithm:
+Be careful to specify hemispheres that do not overlap, e.g., by
+inadvertently specifying coordinate ranges that both include Greenwich. 
+Some users will find using index-based rather than coordinate-based
+hyperslabs makes this clearer.
+
+ at html
 <a name="wrp"></a> <!-- http://nco.sf.net/nco.html#wrp -->
 @end html
 @node Wrapped Coordinates, Auxiliary Coordinates, Multislabs, Common features
@@ -3946,7 +5126,7 @@ values (@pxref{Hyperslabs}).
 @cindex @code{-X @var{lon_min}, at var{lon_max}, at var{lat_min}, at var{lat_max}}
 @cindex @code{--auxiliary @var{lon_min}, at var{lon_max}, at var{lat_min}, at var{lat_max}}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
 @command{ncrcat}@* 
 Short options: @samp{-X @var{lon_min}, at var{lon_max}, at var{lat_min}, at var{lat_max}}@*
@@ -3962,7 +5142,7 @@ ranges.
 This works on datasets that associate coordinate variables to
 grid-mappings using the @acronym{CF}-convention (@pxref{CF Conventions})   
 @code{coordinates} and @code{standard_name} attributes described 
- at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system, here}. 
+ at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.6/cf-conventions.html#coordinate-system, here}. 
 Currently, @acronym{NCO} understands auxiliary coordinate variables 
 pointed to by the @code{standard_name} attributes for @var{latitude} and 
 @var{longitude}.   
@@ -3994,14 +5174,19 @@ and longitude), it is stored in the netCDF file with only two dimensions,
 @code{time} and @code{gds_crd}.  
 @example
 % ncks -m -C -v gds_3dvar ~/nco/data/in.nc
-gds_3dvar: type NC_FLOAT, 2 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 41
+gds_3dvar: type NC_FLOAT, 2 dimensions, 4 attributes, chunked? no, \
+ compressed? no, packed? no, ID = 41
 gds_3dvar RAM size is 10*8*sizeof(NC_FLOAT) = 80*4 = 320 bytes
-gds_3dvar dimension 0: time, size = 10 NC_DOUBLE, dim. ID = 20 (CRD)(REC)
+gds_3dvar dimension 0: time, size = 10 NC_DOUBLE, dim. ID = 20 \ 
+ (CRD)(REC)
 gds_3dvar dimension 1: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-gds_3dvar attribute 0: long_name, size = 17 NC_CHAR, value = Geodesic variable
+gds_3dvar attribute 0: long_name, size = 17 NC_CHAR, value = \ 
+ Geodesic variable
 gds_3dvar attribute 1: units, size = 5 NC_CHAR, value = meter
-gds_3dvar attribute 2: coordinates, size = 15 NC_CHAR, value = lat_gds lon_gds
-gds_3dvar attribute 3: purpose, size = 64 NC_CHAR, value = Test auxiliary coordinates like those that define geodesic grids
+gds_3dvar attribute 2: coordinates, size = 15 NC_CHAR, value = \
+ lat_gds lon_gds
+gds_3dvar attribute 3: purpose, size = 64 NC_CHAR, value = \ 
+ Test auxiliary coordinates like those that define geodesic grids
 @end example
 The @code{coordinates} attribute lists the names of the latitude and
 longitude coordinates, @code{lat_gds} and @code{lon_gds}, respectively. 
@@ -4017,21 +5202,25 @@ The cell-based grid file must contain two variables whose
 @code{standard_name} attributes are ``latitude'', and ``longitude'':
 @example
 % ncks -m -C -v lat_gds,lon_gds ~/nco/data/in.nc
-lat_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 37
+lat_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, \
+ chunked? no, compressed? no, packed? no, ID = 37
 lat_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
 lat_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
 lat_gds attribute 0: long_name, size = 8 NC_CHAR, value = Latitude
 lat_gds attribute 1: standard_name, size = 8 NC_CHAR, value = latitude
 lat_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-lat_gds attribute 3: purpose, size = 62 NC_CHAR, value = 1-D latitude coordinate referred to by geodesic grid variables
+lat_gds attribute 3: purpose, size = 62 NC_CHAR, value = \ 
+ 1-D latitude coordinate referred to by geodesic grid variables
 
-lon_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 38
+lon_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, \
+ chunked? no, compressed? no, packed? no, ID = 38
 lon_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
 lon_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
 lon_gds attribute 0: long_name, size = 9 NC_CHAR, value = Longitude
 lon_gds attribute 1: standard_name, size = 9 NC_CHAR, value = longitude
 lon_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-lon_gds attribute 3: purpose, size = 63 NC_CHAR, value = 1-D longitude coordinate referred to by geodesic grid variables
+lon_gds attribute 3: purpose, size = 63 NC_CHAR, value = \
+ 1-D longitude coordinate referred to by geodesic grid variables
 @end example
 In this example @code{lat_gds} and @code{lon_gds} represent the 
 latitude or longitude, respectively, of cell-based variables.
@@ -4080,7 +5269,7 @@ to avoid confusion.
 @cindex @code{--dimension @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
 @cindex @code{--dmn @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncks}, @command{ncpdq}, @command{ncra},
 @command{ncrcat}, @command{ncwa}@* 
 Short options: @samp{-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]}@*
@@ -4210,18 +5399,20 @@ With UDUnits @w{version 2}, users may specify the UDUnits database file
 itself, @file{udunits2.xml}, via the @code{UDUNITS2_XML_PATH} 
 environment variable.
 @example
-export UDUNITS_PATH='/nonstandard/location/share/udunits' # UDUnits1
-export UDUNITS2_XML_PATH='/nonstandard/location/share/udunits/udunits2.xml' # UDUnits2
+# UDUnits1
+export UDUNITS_PATH='/unusual/location/share/udunits'
+# UDUnits2
+export UDUNITS2_XML_PATH='/unusual/location/share/udunits/udunits2.xml'
 @end example
 This run-time flexibility can enable the full functionality of
 pre-built binaries on machines with libraries in different locations.
 
 @cindex Climate and Forecast Metadata Convention
- at cindex CF conventions
+ at cindex @acronym{CF} conventions
 The @uref{http://www.unidata.ucar.edu/packages/udunits, UDUnits}
 package documentation describes the supported formats of time
 dimensions. 
-Among the metadata conventions which adhere to these formats are the  
+Among the metadata conventions that adhere to these formats are the  
 @uref{http://cf-pcmdi.llnl.gov, 
 Climate and Forecast (CF) Conventions} and the 
 @uref{http://ferret.wrc.noaa.gov/noaa_coop/coop_cdf_profile.html,
@@ -4230,21 +5421,35 @@ The following @samp{-d arguments} extract the same data using
 commonly encountered time dimension formats: 
 @c fxm add more formats here
 @example
--d time,"1918-11-11 11:00:0.0","1939-09-09 00:00:0.0"
+-d time,'1918-11-11 00:00:0.0','1939-09-09 00:00:0.0'
+-d time,'1918-11-11 00:00:0.0','1939-09-09 00:00:0.0'
+-d time,'1918-11-11T00:00:0.0Z','1939-09-09T00:00:0.0Z'
+-d time,'1918-11-11','1939-09-09'
+-d time,'1918-11-11','1939-9-9'
 @end example
 @noindent
 All of these formats include at least one dash @kbd{-} in a
-non-leading character position (a dash in a leading character position
+non-leading character position (a dash in a leading character position 
 is a negative sign). 
- at acronym{NCO} assumes that a non-leading dash in a limit string
-indicates that a UDUnits date conversion is requested.
+ at acronym{NCO} assumes that a space, colon, or non-leading dash in a
+limit string indicates that a UDUnits units conversion is requested.
+Some date formats like YYYYMMDD that are valid in UDUnits are ambiguous
+to @acronym{NCO} because it cannot distinguish a purely numerical date
+(i.e., no dashes or text characters in it) from a coordinate or index
+value: 
+ at example
+-d time,1918-11-11 # Interpreted as the date November 11, 1918
+-d time,19181111   # Interpreted as time-dimension index 19181111
+-d time,19181111.  # Interpreted as time-coordinate value 19181111.0
+ at end example
+Hence, use the YYYY-MM-DD format rather than YYYYMMDD for dates.
 
 @noindent
 As of version 4.0.0 (January, 2010), @acronym{NCO} supports some
-calendar attributes specified by the CF conventions. 
+calendar attributes specified by the @acronym{CF} conventions. 
 @table @asis
- at item @strong{Supported types:  } 
- "365_day"/"noleap", "360_day", "gregorian", "standard" 
+ at item @strong{Supported types:} 
+"365_day"/"noleap", "360_day", "gregorian", "standard" 
 @item  @strong{Unsupported types:} 
 "366_day"/"all_leap","proleptic_gregorian","julian","none" 
 @end table
@@ -4261,11 +5466,9 @@ variables:
     lon_cal:calendar = "365_day" ;
 data:
   lon_cal = 1,2,3,4,5,6,7,8,9,10;
-
-So the command 
-"ncks -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' in.nc out.nc"
-Results in the hyperslab lon_cal=1,2,3,4   
 @end example 
+ at samp{ncks -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0'}
+results in @code{lon_cal=1,2,3,4}.
 
 @cindex MKS units
 @cindex God
@@ -4282,8 +5485,9 @@ esoteric units (e.g., furlongs, pounds per square inch, fortnights).
 
 @html
 <a name="time_rebase"></a> <!-- http://nco.sf.net/nco.html#time_rebase -->
+<a name="rbs"></a> <!-- http://nco.sf.net/nco.html#rbs -->
 @end html
- at node Rebasing Time Coordinate, Missing Values, UDUnits Support, Common features
+ at node Rebasing Time Coordinate, Multiple Record Dimensions, UDUnits Support, Common features
 @section Rebasing Time Coordinate
 @cartouche
 Availability: 
@@ -4291,10 +5495,20 @@ Availability:
 Short options: None@*
 @end cartouche
 
-Time re-basing is performed automatically when UDUnits is installed.
-Time rebasing is invoked when numerous files share a common time-based
-record coordinate, and the record coordinate is in the same time units
-in each file, but the date offset differs among files.
+Time rebasing is invoked when numerous files share a common record
+coordinate, and the record coordinate units change among input files.
+The rebasing is performed automatically if and only if UDUnits is
+installed. 
+Usually rebasing occurs when the recoordinate is a time-based variable, 
+and times are recorded in units of a time-since-basetime, and the
+basetime changes from file to file.
+Since the output file can have only one unit (i.e., one basetime) for
+the record coordinate, @acronym{NCO}, in such cases, chooses the units
+of the first input file to be the units of the output file.
+It is necessary to ``rebase'' all the input record variables to this
+output time unit in order for the output file to have the correct
+values.  
+
 For example suppose the time coordinate is in hours and each day in
 January is stored in its own daily file.
 Each daily file records the temperature variable @code{tpt(time)} 
@@ -4307,8 +5521,8 @@ file02.nc time:units="hours since 1990-1-2"
 file31.nc time:units="hours since 1990-1-31"   
 @end example
 
- at noindent @example
-// Find mean noontime temperature in January
+ at example
+// Mean noontime temperature in January
 ncra -v tpt -d time,"1990-1-1 12:00:00","1990-1-31 23:59:59",24 \
       file??.nc noon.nc    
 
@@ -4317,17 +5531,75 @@ ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
       file01.nc file02.nc file03.nc noon.nc    
 
 // Results: time is "re-based" to the time units in "file01.nc"
-time=36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
-     53, 54, 55, 56, 57, 58, 59 ;
+time=36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, \
+     51, 52, 53, 54, 55, 56, 57, 58, 59 ;
   
 // If we repeat the above command but with only two input files...
 ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
       file02.nc file03 noon.nc    
 
-// ...then the output time coordinate is based on the time units in "file02.nc"
-time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-    29, 30, 31, 32, 33, 34, 35 ;
+// ...then output time coordinate is based on time units in "file02.nc"
+time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, \ 
+     26, 27, 28, 29, 30, 31, 32, 33, 34, 35 ;
 @end example
+As of @acronym{NCO} version 4.2.1 (August, 2012), @acronym{NCO}
+automatically rebases not only the record coordinate (@code{time}, here) 
+but also any bounds associated with the record coordinate (e.g.,
+ at code{time_bnds}) (@pxref{CF Conventions}).
+
+ at html
+<a name="mrd"></a> <!-- http://nco.sf.net/nco.html#mrd -->
+ at end html
+ at node Multiple Record Dimensions, Missing Values, Rebasing Time Coordinate, Common features
+ at section Multiple Record Dimensions
+ at cindex netCDF4
+ at cindex @code{--mrd}
+ at cindex @code{--multiple_record_dimensions}
+ at cartouche
+Availability: 
+ at command{ncecat}, @command{ncpdq} 
+Short options: None@*
+Long options: @samp{--mrd}@*
+ at end cartouche
+The netCDF3 file format allows only one record dimension, and that
+dimension must be the first dimension (i.e., the least rapidly varying 
+dimension) of any variable in which it appears.
+This imposes certain rules on how operators must perform operations
+that alter the ordering of dimensions or the number of record variables.
+The netCDF4 file format has no such restrictions.
+Files and variables may have any number of record dimensions in any
+order.
+This additional flexibility of netCDF4 can only be realized by
+selectively abandoning the constraints that would make operations
+behave completely consistently between netCDF3 and netCDF4 files.
+
+ at acronym{NCO} chooses, by default, to impose netCDF3-based constraints
+on netCDF4 files. 
+This reduces the number of unanticipated consequences and keeps the
+operators functioning in a familiar way.
+Put another way, @acronym{NCO} limits production of additional record
+dimensions so processing netCDF4 files leads to the same results as
+processing netCDF4 files.
+Users can override this default with the @samp{--mrd} (or 
+ at samp{--multiple_record_dimension}) switch, which enables netCDF4
+variables to accumulate additional record dimensions.
+
+How can additional record dimensions be produced?
+Most commonly @command{ncecat} (in record-aggregate mode) defines a new
+leading record dimension.
+In netCDF4 files this becomes an additional record dimension unless the
+original record dimension is changed to a fixed dimension (as must be
+done in netCDF3 files). 
+Also when @command{ncpdq} reorders dimensions it can preserve the
+``record'' property of record variables.
+ at command{ncpdq} tries to define as a record dimension whichever
+dimension ends up first in a record variable, and, in netCDF4 files,
+this becomes an additional record dimension unless the original record
+dimension is changed to a fixed dimension (as must be done in netCDF3
+files). 
+It it easier if @command{ncpdq} and @command{ncecat} do not increase
+the number of record dimensions in a variable so that is the default.
+Use @samp{--mrd} to override this.
 
 @html
 <a name="missing_value"></a> <!-- http://nco.sf.net/nco.html#missing_value -->
@@ -4336,7 +5608,7 @@ time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
 <a name="mss_val"></a> <!-- http://nco.sf.net/nco.html#mss_val -->
 <a name="mss"></a> <!-- http://nco.sf.net/nco.html#mss -->
 @end html
- at node Missing Values, Chunking, Rebasing Time Coordinate, Common features
+ at node Missing Values, Chunking, Multiple Record Dimensions, Common features
 @section Missing values
 @cindex missing values
 @cindex data, missing 
@@ -4344,7 +5616,7 @@ time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
 @cindex @code{missing_value}
 @cindex @code{_FillValue}
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncflint}, @command{ncpdq}, @command{ncra}, @command{ncwa}@* 
 Short options: None@*
 @end cartouche
@@ -4375,15 +5647,16 @@ with version 3.9.2 (August, 2007).
 Prior to that, the @code{missing_value} attribute, if any, was assumed to  
 specify the value of data to ignore.
 Supporting both of these attributes simultaneously is not practical.
-Hence the behavior @acronym{NCO} once applied to @var{missing_value} it now applies 
-to any @var{_FillValue}. 
+Hence the behavior @acronym{NCO} once applied to @var{missing_value} it
+now applies to any @var{_FillValue}. 
 @acronym{NCO} now treats any @var{missing_value} as normal data 
 @footnote{
 The old functionality, i.e., where the ignored values are indicated by
 @code{missing_value} not @code{_FillValue}, may still be selected 
 @emph{at @acronym{NCO} build time} by compiling @acronym{NCO} 
 with the token definition 
- at kbd{CPPFLAGS='-DNCO_MSS_VAL_SNG=missing_value'}.
+ at c @kbd{CPPFLAGS='-DNCO_MSS_VAL_SNG=missing_value'}.
+ at kbd{CPPFLAGS='-UNCO_USE_FILL_VALUE'}.
 }.
 
 @findex ncrename
@@ -4459,12 +5732,12 @@ valid or not.
 @item 
 Treatment of any data identified as missing in arithmetic operators.
 
- at cindex @command{ncea}
+ at cindex @command{nces}
 @cindex @command{ncra}
 @cindex @command{ncwa}
 @cindex @command{ncbo}
 @cindex @command{ncflint}
- at acronym{NCO} averagers (@command{ncra}, @command{ncea}, @command{ncwa})
+ at acronym{NCO} averagers (@command{ncra}, @command{nces}, @command{ncwa})
 do not count any element with the value @var{_FillValue} towards the
 average. 
 @command{ncbo} and @command{ncflint} define a @var{_FillValue} result  
@@ -4516,7 +5789,7 @@ important information from being lost.
 @cindex @code{--chunk_scalar}
 @cindex chunking
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
 @command{ncra}, @command{ncrcat}, @command{ncwa}@*
 Short options: none@*
@@ -4605,6 +5878,7 @@ and tastes of @acronym{NCO} users working with scripts and from the
 command line.
 
 @cindex chunking map
+ at cindex degenerate dimension
 @cindex @var{cnk_map}
 @cindex @code{-M @var{cnk_map}}
 @cindex @code{--cnk_map @var{cnk_map}}
@@ -4651,6 +5925,7 @@ Mnemonic: E at emph{XPL}icitly specified dimensions@*
 Definition: The product of the chunksizes for each variable
 (approximately) equals the size specified with the @samp{--cnk_scl}
 option.
+A dimension of size one is said to be @emph{degenerate}.
 For a variable of rank @var{R} (i.e., with @var{R} non-degenerate
 dimensions), the chunksize in each non-degenerate dimension is the
 @var{R}th root of @var{cnk_scl}.@*
@@ -4683,19 +5958,25 @@ ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
 
 # More complex chunking procedures, with informative metadata
 ncks -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_scl=8 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_dmn lat,64 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc 
+ncks -O -4 -D 4 --cnk_scl=8 dstmch90_clm.nc ~/foo.nc
+ncks -O -4 -D 4 --cnk_dmn lat,64 --cnk_dmn lon,128 dstmch90_clm.nc \ 
+ ~/foo.nc 
 ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
+ncks -O -4 -D 4 --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 \
+ --cnk_dmn lon,128 dstmch90_clm_0112.nc ~/foo.nc
 
 # Chunking works with all operators...
-ncap2 -O -4 -D 4 --cnk_scl=8 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc
+ncap2 -O -4 -D 4 --cnk_scl=8 -S ~/nco/data/ncap2_tst.nco \ 
+ ~/nco/data/in.nc ~/foo.nc
 ncbo -O -4 -D 4 --cnk_scl=8 -p ~/nco/data in.nc in.nc ~/foo.nc
-ncecat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
+ncecat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 \ 
+ -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
 ncflint -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
 ncpdq -O -4 -D 4 -P all_new --cnk_scl=8 -L 5 ~/nco/data/in.nc ~/foo.nc
-ncrcat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-ncwa -O -4 -D 4 -a time --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
+ncrcat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 \ 
+ -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
+ncwa -O -4 -D 4 -a time --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 \ 
+ --cnk_dmn lon,128 dstmch90_clm_0112.nc ~/foo.nc
 @end example
 
 @cindex record dimension
@@ -4721,7 +6002,7 @@ variables.
 <a name="deflate"></a> <!-- http://nco.sf.net/nco.html#deflate -->
 <a name="deflation"></a> <!-- http://nco.sf.net/nco.html#deflation -->
 @end html
- at node Deflation, Packed data, Chunking, Common features
+ at node Deflation, MD5 digests, Chunking, Common features
 @section Deflation
 @cindex @code{-L}
 @cindex @code{--deflate}
@@ -4730,7 +6011,7 @@ variables.
 @cindex compression
 @cindex deflation
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncecat}, @command{ncflint}, @command{ncks}, @command{ncpdq},
 @command{ncra}, @command{ncrcat}, @command{ncwa}@*
 Short options: @samp{-L}@*
@@ -4777,10 +6058,286 @@ ncpdq -4 -L 9 in.nc out.nc # Deflated packing  (~80% compression)
 (@pxref{ncks netCDF Kitchen Sink}).
 
 @html
+<a name="md5"></a> <!-- http://nco.sf.net/nco.html#md5 -->
+<a name="digest"></a> <!-- http://nco.sf.net/nco.html#digest -->
+<a name="hash"></a> <!-- http://nco.sf.net/nco.html#hash -->
+<a name="integrity"></a> <!-- http://nco.sf.net/nco.html#integrity -->
+<a name="security"></a> <!-- http://nco.sf.net/nco.html#security -->
+ at end html
+ at node MD5 digests, Buffer sizes, Deflation, Common features
+ at section MD5 digests
+ at cindex @code{--md5_digest}
+ at cindex @code{--md5_dgs}
+ at cindex @code{--md5_wrt_att}
+ at cindex @code{--md5_write_attribute}
+ at cindex integrity
+ at cindex security
+ at cindex digest
+ at cindex hash
+ at cindex MD5 digest
+ at cartouche
+Availability: 
+ at command{ncecat}, @command{ncks}, @command{ncrcat}@*
+Short options: @*
+Long options: @samp{--md5_dgs}, @samp{--md5_digest}, @samp{--md5_wrt_att}, @samp{--md5_write_attribute}@*
+ at end cartouche
+
+As of @acronym{NCO} version 4.1.0 (April, 2012), @acronym{NCO} 
+supports data integrity verification using the @acronym{MD5} digest
+algorithm. 
+This support is currently implemented in @command{ncks} and in the
+multifile concantenators @command{ncecat} and @command{ncrcat}.
+Activate it with the @samp{--md5_dgs} or @samp{--md5_digest} long
+options. 
+As of @acronym{NCO} version 4.3.3 (July, 2013), @acronym{NCO} 
+will write the @acronym{MD5} digest of each variable as an
+ at code{NC_CHAR} attribute named @code{MD5}.
+This support is currently implemented in @command{ncks} and in the
+multifile concantenators @command{ncecat} and @command{ncrcat}.
+Activate it with the @samp{--md5_wrt_att} or
+ at samp{--md5_write_attribute} long options.
+
+The behavior and verbosity of the @acronym{MD5} digest is
+operator-dependent.
+When activating @acronym{MD5} digests with @command{ncks} it is assumed
+that the user simply wishes to see the digest of every variable and this
+is done when the debugging level exceeds one.
+This incurs only the minor overhead of performing the hash algorithm for
+each variable read.
+ at acronym{MD5} digests may be activated in both the one- and two-filename
+argument forms of @command{ncks}, which are used for printing and for
+sub-setting, respectively.
+The @acronym{MD5} digests are shown as a 32-character hexadecimal string 
+in which each two characters represent one byte of the 16-byte digest:
+ at example
+> ncks -O -D 2 -C --md5 -v md5_a,md5_abc ~/nco/data/in.nc
+...
+ncks: INFO MD5(md5_a) = 0cc175b9c0f1b6a831c399e269772661
+md5_a = 'a' 
+ncks: INFO MD5(md5_abc) = 900150983cd24fb0d6963f7d28e17f72
+lev[0]=100 md5_abc[0--2]='abc' 
+> ncks -O -D 2 -C -d lev,0 --md5 -v md5_a,md5_abc ~/nco/data/in.nc
+...
+ncks: INFO MD5(md5_a) = 0cc175b9c0f1b6a831c399e269772661
+md5_a = 'a' 
+ncks: INFO MD5(md5_abc) = 0cc175b9c0f1b6a831c399e269772661
+lev[0]=100 md5_abc[0--0]='a' 
+ at end example
+In fact these examples demonstrate the validity of the hash algorithm
+since the @acronym{MD5} hashes of the strings ``a'' and ``abc'' are
+widely known.
+The second example shows that the hyperslab of variable @code{md5_abc}
+(= ``abc'') consisting of only its first letter (= ``a'') has the same
+hash as the variable @code{md5_a} (``a'').
+This illustrates that @acronym{MD5} digests act only on variable data,
+not on metadata. 
+
+When activating @acronym{MD5} digests with @command{ncecat} or
+ at command{ncrcat} it is assumed that the user wishes to verify
+that every variable written to disk has the same @acronym{MD5} digest 
+as when it is subsequently read from disk.
+This incurs the major additional overhead of reading in each variable
+after it is written and performing the hash algorithm again on that to
+compare to the original hash.
+Moreover, it is assumed that such operations are generally done
+``production mode'' where the user is not interested in actually
+examining the digests herself.
+The digests proceed silently unless the debugging level exceeds three:
+ at example
+> ncecat -O -D 4 --md5 -p ~/nco/data in.nc in.nc ~/foo.nc | grep MD5
+...
+ncecat: INFO MD5(wnd_spd) = bec190dd944f2ce2794a7a4abf224b28
+ncecat: INFO MD5 digests of RAM and disk contents for wnd_spd agree
+> ncrcat -O -D 4 --md5 -p ~/nco/data in.nc in.nc ~/foo.nc | grep MD5
+...
+ncrcat: INFO MD5(wnd_spd) = 74699bb0a72b7f16456badb2c995f1a1
+ncrcat: INFO MD5 digests of RAM and disk contents for wnd_spd agree
+ at end example
+Regardless of the debugging level, an error is returned when the digests
+of the variable read from the source file and from the output file
+disagree.  
+
+These rules are evolving and as @acronym{NCO} pays more attention to
+data integrity. 
+We welcome feedback and suggestions from users.
+
+ at html
+<a name="bfr_sz_hnt"></a> <!-- http://nco.sf.net/nco.html#bfr_sz_hnt -->
+<a name="bfr"></a> <!-- http://nco.sf.net/nco.html#bfr -->
+<a name="buffer"></a> <!-- http://nco.sf.net/nco.html#buffer -->
+ at end html
+ at node Buffer sizes, RAM disks, MD5 digests, Common features
+ at section Buffer sizes
+ at cindex @code{--bfr_sz_hnt}
+ at cindex Buffer sizes
+ at cindex File buffers
+ at cindex @command{stat() system call}
+ at cindex I/O block size
+ at cindex System calls
+ at cartouche
+Availability: All operators@*
+Short options: @*
+Long options: @samp{--bfr_sz_hnt}, @samp{--buffer_size_hint}@*  
+ at end cartouche
+
+As of @acronym{NCO} version 4.2.0 (May, 2012), @acronym{NCO} 
+allows the user to request specific buffer sizes to allocate for reading 
+and writing files.
+This buffer size determines how many system calls the netCDF layer must
+invoke to read and write files.
+By default, netCDF uses the preferred I/O block size returned as the
+ at samp{st_blksize} member of the @samp{stat} structure returned by the
+ at command{stat()} system call
+ at footnote{
+On modern Linux systems the block size defaults to @w{8192 B}.
+The GLADE filesystem at NCAR has a block size of @w{512 kB}.}.
+Otherwise, netCDF uses twice the system pagesize.
+Larger sizes can increase access speed by reducing the number of 
+system calls netCDF makes to read/write data from/to disk.
+Because netCDF cannot guarantee the buffer size request will be met, the 
+actual buffer size granted by the system is printed as an INFO
+statement. 
+ at example
+# Request 2 MB file buffer instead of default 8 kB buffer
+> ncks -O -D 3 --bfr_sz=2097152 ~/nco/data/in.nc ~/foo.nc
+...
+ncks: INFO nc__open() will request file buffer size = 2097152 bytes
+ncks: INFO nc__open() opened file with buffer size = 2097152 bytes
+...
+ at end example
+
+ at html
+<a name="ram_all"></a> <!-- http://nco.sf.net/nco.html#ram_all -->
+<a name="ram"></a> <!-- http://nco.sf.net/nco.html#ram -->
+<a name="diskless"></a> <!-- http://nco.sf.net/nco.html#diskless -->
+ at end html
+ at node RAM disks, Packed data, Buffer sizes, Common features
+ at section RAM disks
+ at cindex @code{--ram_all}
+ at cindex @code{--create_ram}
+ at cindex @code{--open_ram}
+ at cindex @code{--diskless_all}
+ at cindex @acronym{RAM} disks
+ at cindex @acronym{RAM} files
+ at cindex @code{NC_DISKLESS}
+ at cindex diskless files
+ at cindex memory requirements
+ at cindex memory available
+ at cindex @acronym{RAM}
+ at cindex swap space
+ at cindex peak memory usage
+ at cartouche
+Availability: All operators@*
+Short options: @*
+Long options: @samp{--ram_all}, @samp{--create_ram}, @samp{--open_ram},
+ at samp{--diskless_all}@*   
+ at end cartouche
+
+As of @acronym{NCO} version 4.2.1 (August, 2012), @acronym{NCO} supports
+the use of diskless files, aka @acronym{RAM} disks, for file access and creation. 
+Two independent switches, @samp{--open_ram} and @samp{--create_ram},
+control this feature. 
+Before describing the specifics of these switches, we describe why many 
+ at acronym{NCO} operations will not benefit from them.
+Essentially, reading/writing from/to @acronym{RAM} rather than disk only hastens 
+the task when reads/writes to disk are avoided.
+Most @acronym{NCO} operations are simple enough that they require a
+single read-from/write-to disk for every block of input/output. 
+Diskless access does not change this, but it does add an extra
+read-from/write-to RAM. 
+However this extra @acronym{RAM} write/read does avoid contention for limited
+system resources like disk-head access.
+Operators which may benefit from @acronym{RAM} disks include @command{ncwa}, which
+may need to read weighting variables multiple times, the multi-file 
+operators @command{ncra}, @command{ncrcat}, and @command{ncecat},
+which may try to write output at least once per input file, and
+ at command{ncap2} scripts which may be arbitrarily long and convoluted. 
+
+The @samp{--open_ram} switch causes input files to copied to @acronym{RAM} when
+opened. 
+All further metadata and data access occurs in @acronym{RAM} and thus avoids
+access time delays caused by disk-head movement.
+Usually input data is read at most once so it is unlikely that
+requesting input files be stored in @acronym{RAM} will save much time.
+The likeliest exceptions are files that are accessed numerous times,
+such as those analyzed extensively analyzed by @command{ncap2}. 
+
+Invoking @samp{--open_ram}, @samp{--ram_all}, or @samp{--diskless_all}
+uses much more system memory.
+To copy the input file to @acronym{RAM} increases the sustained
+memory use by exactly the on-disk filesize of the input file, i.e.,
+ at math{MS += FT}.
+For large input files this can be a huge memory burden that starves
+the rest of the @acronym{NCO} analysis of sufficient @acronym{RAM}.
+To be safe, use @samp{--open_ram}, @samp{--ram_all}, or
+ at samp{--diskless_all} only on files that are much (say at least a factor
+of four) smaller than your available system @acronym{RAM}.
+See @ref{Memory Requirements} for further details. 
+
+ at cindex @acronym{RAM} variables
+The @samp{--create_ram} switch causes output files to be created in RAM,
+rather than on disk. 
+These files are copied to disk only when closed, i.e., when the
+operator completes.
+Creating files in @acronym{RAM} may save time, especially with @command{ncap2}
+computations that are iterative, e.g., loops, and for multi-file
+operators that write output every record (timestep) or file.
+RAM files provide many of the same benefits as @acronym{RAM} variables in such
+cases (@pxref{RAM variables}). 
+
+Two switches, @samp{--ram_all} and @samp{--diskless_all}, are convenient
+shortcuts for specifying both @samp{--create_ram} and
+ at samp{--diskless_ram}. 
+Thus
+ at example
+ncks in.nc out.nc # Default: Open in.nc on disk, write out.nc to disk
+ncks --open_ram in.nc out.nc # Open in.nc in RAM, write out.nc to disk
+ncks --create_ram in.nc out.nc # Create out.nc in RAM, write to disk
+# Open in.nc in RAM, create out.nc in RAM, then write out.nc to disk
+ncks --open_ram --create_ram in.nc out.nc
+ncks --ram_all in.nc out.nc # Same as above
+ncks --diskless_all in.nc out.nc # Same as above
+ at end example
+
+It is straightforward to demonstrate the efficacy of @acronym{RAM} disks.
+For @acronym{NASA} we constructed a test that employs @command{ncecat}
+an arbitrary number (set to one hundred thousand) of files are all
+symbolically linked to the same file. 
+Everything is on the local filesystem (not @acronym{DAP}).
+ at example
+# Create symbolic links for benchmark
+cd $@{DATA@}/nco # Do all work here
+for idx in @{1..99999@}; do
+  idx_fmt=`printf "%05d" $@{idx@}`
+  /bin/ln -s $@{DATA@}/nco/LPRM-AMSR_E_L3_D_SOILM3_V002-20120512T111931Z_20020619.nc \
+             $@{DATA@}/nco/$@{idx_fmt@}.nc
+done
+# Benchmark time to ncecat one hundred thousand files
+time ncecat --create_ram -O -u time -v ts -d Latitude,40.0 \ 
+ -d Longitude,-105.0 -p $@{DATA@}/nco -n 99999,5,1 00001.nc ~/foo.nc
+ at end example
+Run normally on a laptop in 201303, this completes in @w{21 seconds}.
+The @samp{--create_ram} reduces the elapsed time to @w{9 seconds}.
+Some of this speed may be due to using symlinks and caching.
+However, the efficacy of @samp{--create_ram} is clear.
+Placing the output file in @acronym{RAM} avoids thousands of disk writes.
+It is not unreasonable to for @acronym{NCO} to process a million files
+like this in a few minutes. 
+However, there is no substitute for benchmarking with real files.
+
+ at cindex temporary output files
+ at cindex temporary files
+ at cindex @code{--no_tmp_fl}
+A completely independent way to reduce time spent writing files is 
+to refrain from writing temporary output files.
+This is accomplished with the @samp{--no_tmp_fl} switch 
+(@pxref{Temporary Output Files}).
+
+ at html
 <a name="pck"></a> <!-- http://nco.sf.net/nco.html#pck -->
 <a name="pack"></a> <!-- http://nco.sf.net/nco.html#pack -->
 @end html
- at node Packed data, Operation Types, Deflation, Common features
+ at node Packed data, Operation Types, RAM disks, Common features
 @section Packed data
 @cindex packing
 @cindex unpacking
@@ -4790,10 +6347,13 @@ ncpdq -4 -L 9 in.nc out.nc # Deflated packing  (~80% compression)
 @cindex @code{_FillValue}
 @cindex @command{pack(x)}
 @cindex @command{unpack(x)}
+ at cindex @code{--hdf_upk}
+ at cindex @code{--hdf_unpack}
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
+Availability: @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncflint}, @command{ncpdq}, @command{ncra}, @command{ncwa}@* 
 Short options: None@*
+Long options: @samp{--hdf_upk}, @samp{--hdf_unpack}@*
 @end cartouche
 
 The phrase @dfn{packed data} refers to data which are stored in the
@@ -4804,9 +6364,12 @@ Packed data may be deflated to save additional space.
 
 @unnumberedsubsec Packing Algorithm
 @dfn{Packing}
-The standard netCDF packing algorithm is lossy, and produces data with
+The standard netCDF packing algorithm (described
+ at uref{http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Attribute-Conventions.html, here})
+produces data with
 the same dynamic range as the original but which requires no more than
 half the space to store.
+Like all packing algorithms, it is @emph{lossy}.
 The packed variable is stored (usually) as type @code{NC_SHORT}
 with the two attributes required to unpack the variable,
 @code{scale_factor} and @code{add_offset}, stored at the original
@@ -4837,19 +6400,23 @@ given type of packed variable.
 The theoretical maximum value for @var{ndrv} is two raised to the
 number of bits used to store the packed variable.
 Thus if the variable is packed into type @code{NC_SHORT}, a two-byte
-datatype, then there are at most @math{2^16 = 65536} distinct values
-representible.
+datatype, then there are at most @math{2^{16} = 65536} distinct values
+representable.
 In practice, the number of discretely representible values is taken
 to be two less than the theoretical maximum.
 This leaves space for a missing value and solves potential problems with
 rounding that may occur during the unpacking of the variable.
 Thus for @code{NC_SHORT}, @math{ndrv = 65536 - 2 = 65534}.
 Less often, the variable may be packed into type @code{NC_CHAR}, 
-where @math{ndrv = 256 - 2 = 254}, or type @code{NC_INT} where
-where @math{ndrv = 4294967295 - 2 = 4294967293}.
+where @math{ndrv = 2^{8} - 2 = 256 - 2 = 254}, or type @code{NC_INT} where
+where @math{ndrv = 2^{32} - 2 = 4294967295 - 2 = 4294967293}.
 One useful feature of (lossy) netCDF packing algorithm is that
 additional, loss-less packing algorithms perform well on top of it. 
 
+ at html
+<a name="upk"></a> <!-- http://nco.sf.net/nco.html#upk -->
+<a name="unpack"></a> <!-- http://nco.sf.net/nco.html#unpack -->
+ at end html
 @unnumberedsubsec Unpacking Algorithm
 @dfn{Unpacking}
 The unpacking algorithm depends on the presence of two attributes,
@@ -4882,6 +6449,70 @@ An attribute's @code{scale_factor} and @code{add_offset} and
 unpacked data, i.e., @code{int}, @code{float} or @code{double}. 
 
 @unnumberedsubsec Default Handling of Packed Data
+ at html
+<a name="hdf_upk"></a> <!-- http://nco.sf.net/nco.html#hdf_upk -->
+<a name="hdf_unpack"></a> <!-- http://nco.sf.net/nco.html#hdf_unpack -->
+ at end html
+ at cindex interoperability
+ at cindex @acronym{HDF} unpacking
+Most files originally written in @acronym{HDF} format use the
+ at acronym{HDF} packing/unpacking algorithm.
+This algorithm is incompatible with the netCDF packing algorithm 
+described above.   
+The unpacking component of the @acronym{HDF} algorithm (described
+ at uref{http://www.hdfgroup.org/HDF5/doc/UG, here}) is
+ at tex
+$$
+\rm
+\hbox{upk} = \hbox{scale\_factor}\times(\hbox{pck} - \hbox{add\_offset})
+$$
+ at end tex
+ at ifnottex
+ at sp 1
+ at var{upk} = @var{scale_factor}*(@var{pck} - @var{add_offset})@*
+ at sp 1
+ at end ifnottex
+Confusingly, the (incompatible) netCDF and @acronym{HDF} algorithms both 
+store their parameters in attributes with the same names
+(@code{scale_factor} and @code{add_offset}).
+Data packed with one algorithm should never be unpacked with the other;
+doing so will result in incorrect answers.
+Unfortunately, few users are aware that their datasets may be packed,
+and fewer know the details of the packing algorithm employed.
+This is what we in the ``bizness'' call an @dfn{interoperability} issue
+because it hampers data analysis performed on heterogeneous systems.
+
+As described below, @acronym{NCO} automatically unpacks data before
+performing arithmetic.
+This automatic unpacking occurs silently since there is usually no
+reason to bother users with these details. 
+There is as yet no generic way for @acronym{NCO} to know which
+packing convention was used, so @acronym{NCO} @emph{assumes} the netCDF 
+convention was used. 
+ at acronym{NCO} uses the same convention for unpacking unless explicitly
+told otherwise with the @samp{--hdf_upk} (also @samp{--hdf_unpack})
+switch. 
+Until and unless a method of automatically detecting the packing method 
+is devised, it must remain the user's responsibility to tell
+ at acronym{NCO} when to use the @acronym{HDF} convention instead of the
+netCDF convention to unpack. 
+
+If your data originally came from an @acronym{HDF} file (e.g.,
+ at acronym{NASA} @acronym{EOS}) then it was likely packed with the
+ at acronym{HDF} convention and must be unpacked with the same convention.
+Our recommendation is to only request @acronym{HDF} unpacking when you 
+are certain. 
+Most packed datasets encountered by @acronym{NCO} will have used the
+netCDF convention.
+Those that were not will hopefully produce noticeably weird values when
+unpacked by the wrong algorithm.
+Before or after panicking, treat this as a clue to re-try your commands
+with the @samp{--hdf_upk} switch.
+See @ref{ncpdq netCDF Permute Dimensions Quickly} for an easy technique
+to unpack data packed with the @acronym{HDF} convention, and then
+re-pack it with the netCDF convention.
+
+ at unnumberedsubsec Default Handling of Packed Data
 All @acronym{NCO} arithmetic operators understand packed data.
 The operators automatically unpack any packed variable in the input 
 file which will be arithmetically processed.
@@ -4901,9 +6532,8 @@ Hence fixed variables which are packed in input files remain packed in
 output files.
 Completely packing and unpacking files is easily accomplished with
 @command{ncpdq} (@pxref{ncpdq netCDF Permute Dimensions Quickly}).
-Packing and unpacking individual variables may be done with 
- at command{ncpdq} and the @command{ncap2} 
- at command{pack()} and @command{unpack()} functions
+Pack and unpack individual variables with @command{ncpdq} and the
+ at command{ncap2} @command{pack()} and @command{unpack()} functions
 (@pxref{Methods and functions}).
 
 @html
@@ -4933,7 +6563,7 @@ Packing and unpacking individual variables may be done with
 @cindex @code{--operation @var{op_typ}}
 @cindex @code{--op_typ @var{op_typ}}
 @cartouche
-Availability: @command{ncap2}, @command{ncra}, @command{ncea}, @command{ncwa}@*
+Availability: @command{ncap2}, @command{ncra}, @command{nces}, @command{ncwa}@*
 Short options: @samp{-y}@*
 Long options: @samp{--operation}, @samp{--op_typ}@*
 @end cartouche
@@ -5059,11 +6689,11 @@ the @var{missing value} (@pxref{Missing Values}) for the variable.
 Thus, for a variable with no @code{_FillValue} attribute,
 $\mssflg_{\idx}$~is always~1.
 All @acronym{NCO} arithmetic operators (@command{ncbo},
- at command{ncra}, @command{ncea}, @command{ncflint}, @command{ncwa}) treat  
+ at command{ncra}, @command{nces}, @command{ncflint}, @command{ncwa}) treat  
 missing values analogously. 
 
 Besides (weighted) averaging, @command{ncwa}, @command{ncra}, and
- at command{ncea} also compute some common non-linear operations which may
+ at command{nces} also compute some common non-linear operations which may
 be specified with the @samp{-y} switch (@pxref{Operation Types}).
 The other rank-reducing operations are simple variations of the generic
 weighted mean described above.
@@ -5150,9 +6780,22 @@ from the sum in the denominator does not necessarily remove one degree
 of freedom. 
 Therefore when @code{-y rmssdn} is requested and weights are specified,
 @command{ncwa} actually implements the @code{rms} procedure.
- at command{ncea} and @command{ncra}, which do not allow weights to be
+ at command{nces} and @command{ncra}, which do not allow weights to be
 specified, always implement the @code{rmssdn} procedure when asked.
 
+ at c 20130827: Fedora Core 19 (FC19) broke here with "./nco.texi:6394: Missing dollarsign inserted."
+ at c Ubuntu always built nco.texi fine
+ at c Adding a dollarsign character right here breaks Ubuntu builds too
+ at c Hence I must carefully spell-out the word dollarsign instead
+ at c 20130829: Making many smaller TeX environments does not solve problem
+ at c 20130910: Using latest texinfo.tex from GNU does not solve problem
+ at c 20130910: Karl Berry solved problem by fixing bug in texinfo.tex
+ at c Bug was triggered in Fedora by apostrophe in "User's Guide" (manual title)
+ at c Bug not present in texinfo.tex version 2008-04-18.10 (used by Ubuntu 13.04)
+ at c Bug     present in texinfo.tex version 2013-02-01.11 (used by FC19)
+ at c Bug just fixed  in texinfo.tex version 2013-09-11 (committed by Karl)
+ at c nco/autobld/texinfo.tex now contains fixed version
+ at c Breakage always occurs near here
 The square root of the mean of~$\xxx$ (@code{-y sqrt}) is 
 $$
 \bar \xxx_{\jjj} = \sqrt{ {\sum_{\idx=1}^{\idx=\lmnnbr} \mssflg_{\idx}
@@ -5201,7 +6844,8 @@ ncwa -y rms -v prs_sfc -a time in.nc foo.nc
 The previous two commands give the same answer but @command{ncra} is
 preferred because it has a smaller memory footprint.
 @cindex degenerate dimension
-Also, by default, @command{ncra} leaves the (degenerate) @code{time}
+A dimension of size one is said to be @dfn{degenerate}.
+By default, @command{ncra} leaves the (degenerate) @code{time}
 dimension in the output file (which is usually useful) whereas
 @command{ncwa} removes the @code{time} dimension (unless @samp{-b} is
 given).
@@ -5213,7 +6857,7 @@ across multiple files, say @file{jan.nc}, @file{feb.nc},
 @file{march.nc}.  
 We can now find the three month maximium surface pressure at every point.
 @example
-ncea -y max -v prs_sfc jan.nc feb.nc march.nc out.nc
+nces -y max -v prs_sfc jan.nc feb.nc march.nc out.nc
 @end example
 
 @html
@@ -5247,14 +6891,14 @@ The procedure to compute the variance is identical except for the use of
 @command{ncap2} can also compute statistics like standard deviations.
 Brute-force implementation of formulae is one option, e.g.,
 @example
-ncap2 -s 'prs_sfc_sdn=sqrt((prs_sfc-prs_sfc.avg($time)^2).total($time))/($time.size-1)'
+ncap2 -s 'prs_sfc_sdn=sqrt((prs_sfc-prs_sfc.avg($time)^2).total($time)/($time.size-1))'
       in.nc out.nc
 @end example
 The operation may, of course, be broken into multiple steps in order  
 to archive intermediate quantities, such as the time-anomalies
 @example
 ncap2 -s 'prs_sfc_anm=prs_sfc-prs_sfc.avg($time)' \
-      -s 'prs_sfc_sdn=sqrt((prs_sfc_anm^2).total($time))/($time.size-1)' \
+      -s 'prs_sfc_sdn=sqrt((prs_sfc_anm^2).total($time)/($time.size-1))' \
       in.nc out.nc
 @end example
 
@@ -5313,19 +6957,24 @@ less required by the @command{ncbo} operation in the third step.
 @section Type Conversion
 @cindex type conversion
 @cartouche
-Availability: @command{ncap2}, @command{ncbo}, @command{ncea},
- at command{ncra}, @command{ncwa}@* 
+Availability (automatic type conversion): @command{ncap2}, @command{ncbo}, @command{nces},
+ at command{ncflint}, @command{ncra}, @command{ncwa}@* 
+Short options: None (it's @emph{automatic})@*
+Availability (manual type conversion): @command{nces}, @command{ncra}, @command{ncwa}@* 
 Short options: None@*
+Long options: @samp{--dbl}, @samp{--flt}, @samp{--rth_dbl}, @samp{--rth_flt}@* 
 @end cartouche
 @cindex promotion
 @cindex demotion
 @cindex automatic type conversion
 @cindex manual type conversion
-Type conversion (often called @dfn{promotion} or @dfn{demotion}) refers
-to the casting of one fundamental data type to another, e.g., converting
- at code{NC_SHORT} (two bytes) to @code{NC_DOUBLE} (eight bytes). 
+Type conversion refers to the casting or coercion of one fundamental or
+atomic data type to another, e.g., converting @code{NC_SHORT} (two
+bytes) to @code{NC_DOUBLE} (eight bytes).  
+Type conversion always @dfn{promotes} or @dfn{demotes} the range and/or 
+precision of the values a variable can hold.
 Type conversion is automatic when the language carries out this
-promotion according to an internal set of rules without explicit user
+promotion according to an internal set of rules without explicit user 
 intervention. 
 In contrast, manual type conversion refers to explicit user commands to
 change the type of a variable or attribute.
@@ -5333,37 +6982,46 @@ Most type conversion happens automatically, yet there are situations in
 which manual type conversion is advantageous.
 
 @menu
-* Automatic type conversion::   
-* Manual type conversion::      
+* Automatic type conversion::
+* Promoting Single-precision to Double::
+* Manual type conversion::
 @end menu
 
- at node Automatic type conversion, Manual type conversion, Type Conversion, Type Conversion
+ at node Automatic type conversion, Promoting Single-precision to Double, Type Conversion, Type Conversion
 @subsection Automatic type conversion
 
-As a general rule, automatic type conversions should be avoided for at
-least two reasons. 
+There are at least two reasons to avoid type conversions.
 First, type conversions are expensive since they require creating
-(temporary) buffers and casting each element of a variable from 
-the type it was stored at to some other type.
-Second, the dataset's creator probably had a good reason
-for storing data as, say, @code{NC_FLOAT} rather than @code{NC_DOUBLE}. 
+(temporary) buffers and casting each element of a variable from its 
+storage type to some other type and then, often, converting it back.
+Second, a dataset's creator perhaps had a good reason for storing 
+data as, say, @code{NC_FLOAT} rather than @code{NC_DOUBLE}.  
 In a scientific framework there is no reason to store data with more
-precision than the observations were made.  
-Thus @acronym{NCO} tries to avoid performing automatic type conversions
-when performing arithmetic. 
-
- at cindex C language
- at cindex Fortran
-Automatic type conversion during arithmetic in the @w{languages C} and
-Fortran is performed only when necessary.
-All operands in an operation are converted to the most precise type
-before the operation takes place.
-However, following this parsimonious conversion rule dogmatically
-results in numerous headaches.
-For example, the average of the two @code{NC_SHORT}s @code{17000s} and
- at code{17000s} results in garbage since the intermediate value which
-holds their sum is also of type @code{NC_SHORT} and thus cannot
-represent values greater than 32,767
+precision than the observations merit.
+Normally this is single-precision, which guarantees 6--9 digits of
+precision. 
+Reasons to engage in type conversion include avoiding rounding 
+errors and out-of-range limitations of less-precise types.
+This is the case with most integers.
+Thus @acronym{NCO} defaults to automatically promote integer types to
+floating point when performing lengthy arithmetic, yet @acronym{NCO}
+defaults to not promoting single to double-precision floats.
+
+Before discussing the more subtle floating point issues, we first
+examine integer promotion. 
+We will show how following parsimonious conversion rules dogmatically
+can cause problems, and what @acronym{NCO} does about that. 
+That said, there are situations in which implicit conversion of
+single- to double-precision is also warranted.
+Understanding the narrowness of these situations takes time, and we
+hope the reader appreciates the following detailed discussion.
+
+Consider the average of the two @code{NC_SHORT}s @code{17000s} and
+ at code{17000s}.
+A straightforward average without promotion results in garbage since the
+intermediate value which holds their sum is also of type @code{NC_SHORT}
+and thus overflows on (i.e., cannot represent) values greater than
+32,767 
 @footnote{
 @set flg
 @tex
@@ -5382,32 +7040,33 @@ $32767 = 2^{15}-1$
 }.
 There are valid reasons for expecting this operation to succeed and 
 the @acronym{NCO} philosophy is to make operators do what you want, not
-what is most pure.
+what is purest.
 Thus, unlike C and Fortran, but like many other higher level interpreted
 languages, @acronym{NCO} arithmetic operators will perform automatic type
-conversion when all the following conditions are met
- at footnote{Operators began performing type conversions before arithmetic
-in @acronym{NCO} @w{version 1.2}, August, 2000. 
+conversion on integers when all the following conditions are met
+ at footnote{Operators began performing automatic type conversions before
+arithmetic in @acronym{NCO} @w{version 1.2}, August, 2000. 
 Previous versions never performed unnecessary type conversion for
 arithmetic.}: 
 @enumerate
- at item The operator is @command{ncea}, @command{ncra}, or @command{ncwa}. 
- at command{ncbo} is not yet included in this list because subtraction did
-not benefit from type conversion.
-This will change in the future
- at c fxm TODO #265
+ at item The requested operation is arithmetic.
+This is why type conversion is limited to the operators @command{ncap2}, 
+ at command{ncbo}, @command{nces}, @command{ncflint}, @command{ncra}, and
+ at command{ncwa}.   
 @item The arithmetic operation could benefit from type conversion.
-Operations that could benefit (e.g., from larger representable sums) 
-include averaging, summation, or any "hard" arithmetic. 
+Operations that could benefit include averaging, summation, or any
+"hard" arithmetic that could overflow or underflow.  
+Larger representable sums help avoid overflow, and more precision
+helps to avoid underflow.
 Type conversion does not benefit searching for minima and maxima
 (@samp{-y min}, or @samp{-y max}).
 @item The variable on disk is of type @code{NC_BYTE}, @code{NC_CHAR},
 @code{NC_SHORT}, or @code{NC_INT}.
-Type @code{NC_DOUBLE} is not type converted because there is no type of
-higher precision to convert to.
-Type @code{NC_FLOAT} is not type converted because, in our judgement,
-the performance penalty of always doing so would outweigh the (extremely
-rare) potential benefits.  
+Type @code{NC_DOUBLE} is not promoted because there is no type of
+higher precision.
+Conversion of type @code{NC_FLOAT} is discussed in detail below. 
+When it occurs, it follows the same procedure (promotion then
+arithmetic then demotion) as conversion of integer types.
 @end enumerate
 
 When these criteria are all met, the operator promotes the variable in
@@ -5430,42 +7089,488 @@ Similarly, the total (e.g., @samp{-y ttl}) of @code{17000s} and
 the final result (the true total) of @math{34000} is outside the range
 of type @code{NC_SHORT}.  
 
- at cindex @code{floor}
-Type conversions use the @code{floor} function to convert floating point
-number to integers.
-Type conversions do not attempt to round floating point numbers to the
-nearest integer.
-Thus the average of @code{1s} and @code{2s} is computed in double
-precisions arithmetic as 
- at math{(@code{1.0d} + @code{1.5d})/2) = @code{1.5d}}.
-This result is converted to @code{NC_SHORT} and stored on disk as 
- at math{@code{floor(1.5d)} = @code{1s}}
+ at cindex @code{trunc()}
+After arithmetic is computed in double-precision for promoted variables,
+the intermediate double-precision values must be demoted to the
+variables' original storage type (e.g., from @code{NC_DOUBLE} to
+ at code{NC_SHORT}). 
+ at acronym{NCO} has handled this demotion in three ways in its history.
+Prior to October, 2011 (version 4.0.8), @acronym{NCO} employed the
+ at w{C library} truncate function, @code{trunc()}
 @footnote{
 @cindex C language
-The actual type conversions are handled by intrinsic C-language type
-conversion, so the @code{floor()} function is not explicitly called, 
-though the results would be the same if it were.}.
-Thus no "rounding up" is performed. 
-The type conversion rules @w{of C} can be stated as follows:
-If @var{n} is an integer then any floating point value @var{x}
-satisfying 
- at set flg
- at tex
-$n \le x < n+1$
- at clear flg
- at end tex
- at ifinfo
- at math{n <= x < n+1} 
- at clear flg
- at end ifinfo
- at ifset flg
- at c texi2html does not like @math{}
- at var{n} <= @var{x} < @var{n+1}
- at clear flg
- at end ifset
-will have the value @var{n} when converted to an integer.
+The actual type conversions with trunction were handled by intrinsic
+type conversion, so the @code{trunc()} function was never explicitly
+called, although the results would be the same if it were.}.
+Truncation rounds @var{x} to the nearest integer not larger in absolute 
+value.
+For example, truncation rounds @code{1.0d}, @code{1.5d}, and
+ at code{1.8d} to the same value, @code{1s}. 
+Clearly, truncation does not round floating point numbers to the nearest
+integer! 
+Yet truncation is how the @w{C language} performs implicit conversion of 
+real numbers to integers.
+
+ at cindex Neil Davis
+ at acronym{NCO} stopped using truncation for demotion when an alert user
+(Neil Davis) informed us that this caused a small bias in the packing
+algorithm employed by @command{ncpdq}.
+This led to @acronym{NCO} adopting rounding functions for demotion.
+Rounding functions eliminated the small bias in the packing algorithm.
+
+ at findex @code{lround()}. 
+From February, 2012 through March, 2013 (versions 4.0.9--4.2.6),
+ at acronym{NCO} employed the @w{C library} family of rounding functions,
+ at code{lround()}. 
+These functions round @var{x} to the nearest integer, halfway cases away
+from zero.
+The problem with @code{lround()} is that it always rounds real values
+ending in @code{.5} away from zero.
+This rounds, for example, @code{1.5d} and @code{2.5d} to @code{1s}
+and @code{2s}, respectively.
+
+ at findex @code{lrint()}. 
+ at cindex @acronym{IEEE}
+Since April, 2013 (version 4.3.0), @acronym{NCO} has employed the 
+other @w{C library} family of rounding functions, @code{lrint()}. 
+This algorithm rounds @var{x} to the nearest integer, using the current 
+rounding direction.
+Halfway cases are rounded to the nearest even integer.
+This rounds, for example, both @code{1.5d} and @code{2.5d} to the same
+value, @code{2s}, as recommended by the @acronym{IEEE}.
+This rounding is symmetric: up half the time, down half the time.
+This is the current and hopefully final demotion algorithm employed by  
+ at acronym{NCO}.
+
+Hence because of automatic conversion, @acronym{NCO} will compute the
+average of @code{2s} and @code{3s} in double-precision arithmetic as 
+ at math{(@code{2.0d} + @code{3.0d})/@code{2.0d}) = @code{2.5d}}.
+It then demotes this intermediate result back to @code{NC_SHORT} and
+stores it on disk as  
+ at math{@code{trunc(2.5d)} = @code{2s}} (versions up to 4.0.8), 
+ at math{@code{lround(2.5d)} = @code{3s}} (versions 4.0.9--4.2.6), and
+ at math{@code{lrint(2.5d)} = @code{2s}} (versions 4.3.0 and later).
+
+ at html
+<a name="sp_dp"></a> <!-- http://nco.sf.net/nco.html#sp_dp -->
+<a name="dbl"></a> <!-- http://nco.sf.net/nco.html#dbl -->
+ at end html
+ at node Promoting Single-precision to Double, Manual type conversion, Automatic type conversion, Type Conversion
+ at subsection Promoting Single-precision to Double
+ at cindex promotion
+ at cindex implicit conversion
+ at cindex @code{--dbl}
+ at cindex @code{--rth_dbl}
+ at cindex @code{--flt}
+ at cindex @code{--rth_flt}
+Promotion of real numbers from single- to double-precision is
+fundamental to scientific computing.
+When it should occur depends on the precision of the inputs and the
+number of operations.
+Single-precision (four-byte) numbers contain about seven significant
+figures, while double-precision contain about sixteen.
+More, err, precisely, the @acronym{IEEE} single-precision representation
+gives from @w{6 to 9} significant decimal digits precision
+ at footnote{According to Wikipedia's summary of @acronym{IEEE} standard
+754, ``If a decimal string with at most 6 significant digits is
+converted to IEEE 754 single-precision and then converted back to the
+same number of significant decimal, then the final string should match
+the original; and if an IEEE 754 single-precision is converted to a
+decimal string with at least 9 significant decimal and then converted
+back to single, then the final number must match the original''.}.
+And the @acronym{IEEE} double-precision representation
+gives from @w{15 to 17} significant decimal digits precision
+ at footnote{According to Wikipedia's summary of @acronym{IEEE} standard
+754, ``If a decimal string with at most 15 significant digits is
+converted to IEEE 754 double-precision representation and then converted
+back to a string with the same number of significant digits, then the
+final string should match the original; and if an IEEE 754 double
+precision is converted to a decimal string with at least 17 significant
+digits and then converted back to double, then the final number must
+match the original''.}. 
+Hence double-precision numbers represent about nine digits more
+precision than single-precision numbers.
+
+Given these properties, there are at least two possible arithmetic
+conventions for the treatment of real numbers:
+ at cindex C language
+ at cindex Fortran
+ at enumerate
+ at item Conservative, aka Fortran Convention
+Automatic type conversion during arithmetic in the Fortran language is,
+by default, performed only when necessary. 
+All operands in an operation are converted to the most precise type
+involved the operation before the arithmetic operation.
+Expressions which involve only single-precision numbers are computed
+entirely in single-precision.
+Expressions involving mixed precision types are computed in the type
+of higher precision.
+ at acronym{NCO} by default employs the Fortan Convention for promotion.
+ at item Aggressive, aka C Convention
+The @w{C language} is by default much more aggressive (and thus
+wasteful) than Fortran, and will always implicitly convert single- 
+to double-precision numbers for no good reason.
+All real-number standard @w{C library} functions are double-precision, 
+and @w{C programmers} must take extra steps to only utilize single
+precision arithmetic.
+The high level interpreted data analysis languages @acronym{IDL},
+Matlab, and @acronym{NCL} all adopt the @w{C Convention}.
+ at end enumerate
 
- at node Manual type conversion,  , Automatic type conversion, Type Conversion
+ at acronym{NCO} does not automatically promote @code{NC_FLOAT} because, in
+our judgement, the performance penalty of always doing so would outweigh
+the potential benefits. 
+The now-classic text ``Numerical Recipes @w{in C}'' discusses this point
+under the section ``Implicit Conversion of Float to Double''
+ at footnote{See @w{page 21} in Section 1.2 of the First edition for this
+gem:
+ at quotation
+One does not need much experience in scientific computing to recognize
+that the implicit conversion rules are, in fact, sheer madness!
+In effect, they make it impossible to write efficient numerical
+programs. 
+ at end quotation
+}.
+That said, such promotion is warranted in some circumstances.
+
+For example, rounding errors can accumulate to worrisome levels during
+arithmetic performed on large arrays of single-precision floats. 
+This use-case occurs often in geoscientific studies of climate where
+thousands-to-millions of gridpoints may contribute to a single average.
+If the inputs are all single-precision, then so should be the output.
+However the intermediate results where running sums are accumulated may  
+suffer from too much rounding or from underflow unless computed in
+double-precision. 
+
+The order of operations matters to floating point math even when the
+analytic expressions are equal. 
+Cautious users feel disquieted when results from equally valid analyses
+differ in the final bits instead of agreeing bit-for-bit.
+For example, averaging arrays in multiple stages produces different
+answers than averaging them in one step. 
+This is easily seen in the computation of ensemble averages by two
+different methods.
+The @acronym{NCO} test file @file{in.nc} contains single- and
+double-precision representations of the same temperature timeseries as 
+ at code{tpt_flt} and @code{tpt_dbl}.  
+Pretend each datapoint in this timeseries represents a monthly-mean
+temperature. 
+We will mimic the derivation of a fifteen-year ensemble-mean January
+temperature by concatenating the input file five times, and then
+averaging the datapoints representing January two different ways.
+In @w{Method 1} we derive the 15-year ensemble January average in two 
+steps, as the average of three five-year averages.
+This method is naturally used when each input file contains multiple
+years and multiple input files are needed
+ at footnote{For example, the @acronym{CMIP5} archive tends to distribute
+monthly average timeseries in 50-year chunks.}.
+In @w{Method 2} we obtain 15-year ensemble January average in a single
+step, by averaging all 15 Januaries at one time:
+ at example
+# tpt_flt and tpt_dbl are identical except for precision
+ncks --cdl -C -v tpt_flt,tpt_dbl ~/nco/data/in.nc
+# tpt_dbl = 273.1, 273.2, 273.3, 273.4, 273.5, 273.6, 273.7, 273.8, 273.9, 274
+# tpt_flt = 273.1, 273.2, 273.3, 273.4, 273.5, 273.6, 273.7, 273.8, 273.9, 274
+# Create file with five "ten-month years" (i.e., 50 timesteps) of temperature data
+ncrcat -O -v tpt_flt,tpt_dbl -p ~/nco/data in.nc in.nc in.nc in.nc in.nc ~/foo.nc
+# Average 1st five "Januaries" (elements 1, 11, 21, 31, 41)
+ncra --flt -O -F -d time,1,,10 ~/foo.nc ~/foo_avg1.nc
+# Average 2nd five "Januaries" (elements 2, 12, 22, 32, 42)
+ncra --flt -O -F -d time,2,,10 ~/foo.nc ~/foo_avg2.nc
+# Average 3rd five "Januaries" (elements 3, 13, 23, 33, 43)
+ncra --flt -O -F -d time,3,,10 ~/foo.nc ~/foo_avg3.nc
+# Method 1: Obtain ensemble January average by averaging the averages
+ncra --flt -O ~/foo_avg1.nc ~/foo_avg2.nc ~/foo_avg3.nc ~/foo_avg_mth1.nc
+# Method 2: Obtain ensemble January average by averaging the raw data
+# Employ ncra's "duration" feature (http://nco.sf.net/nco.html#drn)
+ncra --flt -O -F -d time,1,,10,3 ~/foo.nc ~/foo_avg_mth2.nc
+# Difference the two methods
+ncbo -O ~/foo_avg_mth1.nc ~/foo_avg_mth2.nc ~/foo_avg_dff.nc
+ncks --cdl ~/foo_avg_dff.nc
+# tpt_dbl = 5.6843418860808e-14 ;
+# tpt_flt = -3.051758e-05 ;
+ at end example
+Although the two methods are arithmetically equivalent, they produce
+slightly different answers due to the different order of operations.
+Moreover, it appears at first glance that the single-precision
+answers suffer from greater error than the double-precision answers.
+In fact both precisions suffer from non-zero rounding errors.
+The answers differ negligibly to machine precision, which is about 
+seven significant figures for single precision floats (@code{tpt_flt}),
+and sixteen significant figures for double precision (@code{tpt_dbl}).
+The input precision determines the answer precision.
+
+IEEE arithmetic guarantees that two methods will produce bit-for-bit
+identical answers only if they compute the same operations in the same  
+order.  
+Bit-for-bit identical answers may also occur by happenstance when 
+rounding errors exactly compensate one another.
+This is demonstrated by repeating the example above with the
+ at samp{--dbl} (or @samp{--rth_dbl} for clarity) option which forces
+conversion of single-precision numbers to double-precision prior to
+arithmetic. 
+Now @command{ncra} will treat the first value of @code{tpt_flt},
+ at code{273.1000f}, as @code{273.1000000000000d}. 
+Arithmetic on @code{tpt_flt} then proceeds in double-precision until the
+final answer, which is converted back to single-precision for final
+storage. 
+ at example
+# Average 1st five "Januaries" (elements 1, 11, 21, 31, 41)
+ncra --dbl -O -F -d time,1,,10 ~/foo.nc ~/foo_avg1.nc
+# Average 2nd five "Januaries" (elements 2, 12, 22, 32, 42)
+ncra --dbl -O -F -d time,2,,10 ~/foo.nc ~/foo_avg2.nc
+# Average 3rd five "Januaries" (elements 3, 13, 23, 33, 43)
+ncra --dbl -O -F -d time,3,,10 ~/foo.nc ~/foo_avg3.nc
+# Method 1: Obtain ensemble January average by averaging the averages
+ncra --dbl -O ~/foo_avg1.nc ~/foo_avg2.nc ~/foo_avg3.nc ~/foo_avg_mth1.nc
+# Method 2: Obtain ensemble January average by averaging the raw data
+# Employ ncra's "duration" feature (http://nco.sf.net/nco.html#drn)
+ncra --dbl -O -F -d time,1,,10,3 ~/foo.nc ~/foo_avg_mth2.nc
+# Difference the two methods
+ncbo -O ~/foo_avg_mth1.nc ~/foo_avg_mth2.nc ~/foo_avg_dff.nc
+# Show differences
+ncks --cdl ~/foo_avg_dff.nc
+# tpt_dbl = 5.6843418860808e-14 ;
+# tpt_flt = 0 ;
+ at end example
+The @samp{--dbl} switch has no effect on the results computed from
+double-precision inputs.
+But now the two methods produce bit-for-bit identical results from the
+single-precision inputs!
+This is due to the happenstance of rounding along with the effects of 
+the @samp{--dbl} switch.
+The @samp{--flt} and @samp{--rth_flt} switches are provided for
+symmetry.
+They enforce the traditional @acronym{NCO} and Fortran convention of
+keeping single-precision arithmetic in single-precision unless a
+double-precision number is explicitly involved.
+
+As has been seen, forced promotion of single- to double-precision
+prior to arithmetic has advantages and disadvantages. 
+The primary disadvantages are speed and size. 
+Double-precision arithmetic is 10--60% slower than, and requires
+twice the memory of single-precision arithmetic. 
+The primary advantage is that rounding errors in double-precision are 
+much less likely to accumulate to values near the precision of the 
+underlying geophysical variable. 
+
+For example, if we know temperature to five significant digits, then a
+rounding error of 1-bit could affect the least precise digit of
+temperature after 1,000--10,000 consecutive one-sided rounding
+errors under the worst possible scenario.
+Many geophysical grids have tens-of-thousands to millions of points
+that must be summed prior to normalization to compute an average.
+It is possible for single-precision rouding errors to accumulate and
+degrade the precision in such situtations. 
+Double-precision arithmetic mititgates this problem, so @samp{--dbl}
+would be warranted. 
+
+ at cindex @acronym{TREFHT}
+ at cindex @acronym{CAM3}
+ at cindex @acronym{GCM}
+This can be seen with another example, averaging a global surface
+temperature field with @command{ncwa}.
+The input contains a single-precision global temperature field
+(stored in @code{TREFHT}) produced by the @acronym{CAM3} general
+circulation model (@acronym{GCM}) run and stored at @w{1.9 by 2.5}
+degrees resolution. 
+This requires @w{94 latitudes} and @w{144 longitudes}, or @math{13,824} 
+total surface gridpoints, a typical GCM resolution these days.
+These input characteristics are provided only to show the context
+to the interested reader, equivalent results would be found in 
+statistics of any dataset of comparable size.
+Models often represent Earth on a spherical grid where global averages 
+must be created by weighting each gridcell by its latitude-dependent
+weight (i.e., the Gaussian weight stored in @code{gw}), or by the
+surface area of each contributing gridpoint (stored in @code{area}).
+
+Like many geophysical models and most @acronym{GCM}s, @acronym{CAM3}
+runs completely in double-precision yet stores its archival output in
+single-precision to save space.
+In practice such models usually save multi-dimensional prognostic and
+diagnostic fields (like @code{TREFHT(lat,lon)} and @code{area(lat,lon)})
+as single-precision, while saving all one-dimensional coordinates and
+weights (here @code{lat}, @code{lon}, and @code{gw(lon)}) as
+double-precision.  
+To obtain pure double-precision arithmetic @emph{and} storage of the 
+globla mean temperature, we first create and store double-precision
+versions of the single-precision fields:
+ at example
+ncap2 -O -s 'TREFHT_dbl=double(TREFHT);area_dbl=double(area)' in.nc in.nc
+ at end example
+The single- and double-precision temperatures may each be averaged
+globally using four permutations for the precision of the weight
+and of the intermediate arithmetic representation:
+ at enumerate
+ at item Single-precision weight (@code{area}), single-precision arithmetic
+ at item Double-precision weight (@code{gw}),   single-precision arithmetic
+ at item Single-precision weight (@code{area}), double-precision arithmetic
+ at item Double-precision weight (@code{gw}),   double-precision arithmetic
+ at end enumerate
+ at example
+# NB: Values below are printed with C-format %5.6f using
+# ncks -H -C -s '%5.6f' -v TREFHT,TREFHT_dbl out.nc
+# Single-precision weight (area), single-precision arithmetic
+ncwa --flt -O -a lat,lon -w area in.nc out.nc
+# TREFHT     = 289.246735 
+# TREFHT_dbl = 289.239964
+# Double-precision weight (gw),   single-precision arithmetic
+ncwa --flt -O -a lat,lon -w gw   in.nc out.nc
+# TREFHT     = 289.226135
+# TREFHT_dbl = 289.239964
+# Single-precision weight (area), double-precision arithmetic
+ncwa --dbl -O -a lat,lon -w area in.nc out.nc
+# TREFHT     = 289.239960
+# TREFHT_dbl = 289.239964
+# Double-precision weight (gw),   double-precision arithmetic
+ncwa --dbl -O -a lat,lon -w gw   in.nc out.nc
+# TREFHT     = 289.239960
+# TREFHT_dbl = 289.239964
+ at end example
+First note that the @code{TREFHT_dbl} average never changes because 
+ at code{TREFHT_dbl(lat,lon)} is double-precision in the input file.
+As described above, @acronym{NCO} automatically converts all operands
+involving to the highest precision involved in the operation.
+So specifying @samp{--dbl} is redundant for double-precision inputs.
+
+Second, the single-precision arithmetic averages of the single-precision
+input @code{TREFHT} differ by @math{289.246735 - 289.226135 = 0.0206}
+from eachother, and, more importantly, by as much as 
+ at math{289.239964 - 289.226135 = 0.013829} from the correct
+(double-precision) answer.
+These averages differ in the fifth digit, i.e., they agree only to four
+significant figures!
+Given that climate scientists are concerned about global temperature
+variations of a tenth of a degree or less, this difference is large.
+It means that the global mean temperature changes scientists are looking
+for are comparable in size to the numerical artifacts produced by the
+averaging procedure. 
+
+ at cindex rounding
+ at cindex random walk
+Why are the single-precision numerical artifacts so large?
+Each global average is the result of multiplying almost 15,000 elements
+each by its weight, summing those, and then dividing by the summed 
+weights.  
+Thus about 50,000 single-precision floating point operations caused
+the loss of two to three significant digits of precision.
+The net error of a series of independent rounding errors is a random
+walk phenomena
+ at footnote{
+ at cindex Michael Prather
+Thanks to @w{Michael J.} Prather for explaining this to me.}.
+Successive rounding errors displace the answer further from the truth.
+An ensemble of such averages will, on average, have no net bias.
+In other words, the expectation value of a series of @acronym{IEEE}
+rounding errors is zero.
+And the error of any given sequence of rounding errors obeys, for large 
+series, a Gaussian distribution centered on zero.
+
+ at cindex mantissa
+ at cindex exponent
+Single-precision numbers use three of their four eight-bit bytes to
+represent the mantissa so the smallest representable single-precision
+mantissa is @math{\epsilon \equiv 2^{-23} = 1.19209 \times 10^{-7}}.
+This @math{\epsilon} is the smallest @var{x} such that 
+ at math{1.0 + x \ne 1.0}.
+This is the rounding error for non-exact precision-numbers.
+Applying random walk theory to rounding, it can be shown that the
+expected rounding error after @var{n} inexact operations is
+ at math{\sqrt{2n/\pi}} for @w{large @var{n}}.
+The expected (i.e., mean absolute) rounding error in our example with
+ at math{13,824} additions is about 
+ at math{\sqrt{2 \times 13824 / \pi} = 91.96}.
+Hence, addition alone of about fifteen thousand single-precision floats
+is expected to consume about two significant digits of precision.
+This neglects the error due to the inner product (weights times values)
+and normalization (division by tally) aspects of a weighted average.
+the ratio of two numbers each containing a numerical bias can magnify
+the size of the bias. 
+In summary, a global mean number computed from about 15,000 gridpoints
+each with weights can be expected to lose up to three significant digits.
+Since single-precision starts with about seven significant digits, we
+should not expect to retain more than four significant digits after
+computing weighted averages in single-precision.
+The above example with @code{TREFHT} shows the expected four digits of
+agreement. 
+ at c For example, 50,000 coin flips would lead to 25,500 or more ``heads''
+ at c only a small percentage of the time.
+ at c P(k,n)= 50000_C_25500 p^k(1-p)^(n-k)
+ at c P(25500,50000)= 50000_C_25500 (0.5)^(25500)(0.5)^(24500)
+ at c P(>=25500,50000)= ?
+ at c fxm: Use Gaussian distribution/Random Walk
+
+ at cindex beer
+The @acronym{NCO} results have been independently validated to the
+extent possible in three other languages: 
+ at w{C}, Matlab, and @acronym{NCL}. 
+C and @acronym{NCO} are the only languages that permit single-precision 
+numbers to be treated with single precision arithmetic:
+ at example
+# Double-precision weight (gw),   single-precision arithmetic (C)
+ncwa_3528514.exe
+# TREFHT     = 289.240112
+# Double-precision weight (gw),   double-precision arithmetic (C)
+# TREFHT     = 289.239964
+# Single-precision weight (area), double-precision arithmetic (Matlab)
+# TREFHT     = 289.239964
+# Double-precision weight (gw),   double-precision arithmetic (Matlab)
+# TREFHT     = 289.239964
+# Single-precision weight (area), double-precision arithmetic (NCL)
+ncl < ncwa_3528514.ncl
+# TREFHT     = 289.239960
+# TREFHT_dbl = 289.239964
+# Double-precision weight (gw),   double-precision arithmetic (NCL)
+# TREFHT     = 289.239960
+# TREFHT_dbl = 289.239964
+ at end example
+All languages tested (C, Matlab, @acronym{NCL}, and @acronym{NCO}) agree
+to machine precision with double-precision arithmetic.
+Users are fortunate to have a variety of high quality software that 
+liberates them from the drudgery of coding their own.
+Many packages are free (as in beer)!
+As shown above @acronym{NCO} permits one to shift to their
+float-promotion preferences as desired. 
+No other language allows this with a simple switch.
+
+To summarize, until version 4.3.6 (September, 2013), the default
+arithmetic convention of @acronym{NCO} followed the behavior of Fortran,
+and automatically promoted single-precision to double-precision in all
+mixed-precision expressions, and left-alone pure single-precision
+expressions.  
+This is faster and more memory efficient than other conventions.
+However, pure single-precision arithmetic can lose too much precision
+when used to condense (e.g., average) large arrays.
+Statistics involving about @math{n = 10,000} single-precision inputs
+will lose about @w{2--3} digits if not promoted to double-precision
+prior to arithmetic. 
+The loss scales with the squareroot @w{of @var{n}}. 
+For larger @var{n}, users should promote floats with the @samp{--dbl} 
+option if they want to preserve more than four significant digits in
+their results. 
+
+The @samp{--dbl} and @samp{-flt} switches are only available with the
+ at acronym{NCO} arithmetic operators that could potentially perform more
+than a few  single-precision floating point operations per result.
+These are @command{nces}, @command{ncra}, and @command{ncwa}.
+Each is capable of thousands to millions or more operations per result. 
+By contrast, the arithmetic operators @command{ncbo} and
+ at command{ncflint} perform at most one floating point operation per
+result. 
+Providing the @samp{--dbl} option for such trivial operations makes 
+little sense, so the option is not currently made available.
+
+At the time of this writing (September 2013), we are interested in
+users' opinions on these matters. 
+Currently the default behavior is @samp{--flt}.
+We are willing to change the default to @samp{--dbl} if users prefer.
+Or we could set a threshold (e.g., @math{n \ge 10000}) after which
+single- to double-precision promotion is automatically invoked.
+Or we could make the default promotion convention settable via an
+environment variable (@acronym{GSL} does this a lot).
+Please let us know what you think of the selected defaults and options.
+
+ at node Manual type conversion,  , Promoting Single-precision to Double, Type Conversion
 @subsection Manual type conversion
 @cindex @command{ncap2}
 @command{ncap2} provides intrinsic functions for performing manual type
@@ -5514,6 +7619,8 @@ Specifying @samp{-A} tells the operator to attempt to append to any
 existing @var{output-file} without prompting the user interactively.
 These switches are useful in batch environments because they suppress
 interactive keyboard input.
+NB: As of 20120515, @command{ncap2} is unable to append to files that
+already contain the appended dimensions. 
 
 @html
 <a name="hst"></a> <!-- http://nco.sf.net/nco.html#hst -->
@@ -5578,7 +7685,7 @@ Note that the @samp{-h} switch also turns off writing the
 @cindex @code{--fl_lst_in}
 @cindex @code{--file_list}
 @cartouche
-Availability: @command{ncea}, @command{ncecat}, @command{ncra}, @command{ncrcat}@*
+Availability: @command{nces}, @command{ncecat}, @command{ncra}, @command{ncrcat}@*
 Short options: @samp{-H}@*
 Long options: @samp{--fl_lst_in}, @samp{--file_list}@*
 @end cartouche
@@ -5636,7 +7743,7 @@ may amount to many thousands of filenames in a metadata attribute.
 @cindex @code{lon_bnds}
 @cindex @code{msk_*}
 @cartouche
-Availability: @command{ncbo}, @command{ncea}, @command{ncecat},
+Availability: @command{ncbo}, @command{nces}, @command{ncecat},
 @command{ncflint}, @command{ncpdq}, @command{ncra}, @command{ncwa}@*
 Short options: None@*
 @end cartouche
@@ -5650,7 +7757,7 @@ We refer to all such data collectively as @acronym{CF} data.
 Skip this section if you never work with @acronym{CF} data.
 
 The @acronym{CF} netCDF conventions are described 
- at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system, here}. 
+ at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.6/cf-conventions.html#coordinate-system, here}. 
 Most @acronym{CF} netCDF conventions are transparent to @acronym{NCO}  
 @footnote{
 The exception is appending/altering the attributes @code{x_op},
@@ -5681,6 +7788,9 @@ special rules to certain variables in @acronym{CF} files.
 The special functions are not required by the @acronym{CF} netCDF
 conventions, yet experience shows that they simplify data analysis.
 
+ at html
+<a name="prc_xcp"></a> <!-- http://nco.sf.net/nco.html#prc_xcp -->
+ at end html
 Currently, @acronym{NCO} determines whether a datafile is a
 @acronym{CF} output datafile simply by checking (case-insensitively)
 whether the value of the global attribute @code{Conventions} (if any)
@@ -5698,7 +7808,7 @@ host geophysical model and it makes no sense to change their values.
 @cindex non-coordinate grid properties
 Furthermore, the @dfn{size and rank-preserving arithmetic operators} try
 not to operate on certain grid properties.
-These operators are @command{ncap}, @command{ncbo}, @command{ncea},
+These operators are @command{ncap2}, @command{ncbo}, @command{nces},
 @command{ncflint}, and @command{ncpdq} (when used for packing, not for
 permutation).  
 These operators do not operate, by default, on (i.e., add, subtract,
@@ -5744,10 +7854,9 @@ or alter the @code{Conventions} attribute.
 As of @acronym{NCO} version 4.0.8 (April, 2011), @acronym{NCO} 
 supports the @acronym{CF} @code{bounds} convention for cell boundaries
 described 
- at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries, here}.
-This convention allows coordinate variables
-(including multidimensional coordinates) to describe the boundaries of
-their cells.
+ at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.6/cf-conventions.html#cell-boundaries, here}.
+This convention allows coordinate variables (including multidimensional
+coordinates) to describe the boundaries of their cells.
 This is done by naming the variable which contains the bounds in
 in the @code{bounds} attribute. 
 Note that coordinates of rank @math{N} have bounds of rank @math{N+1}.
@@ -5772,7 +7881,7 @@ Hence the subsets will themselves be @acronym{CF}-compliant.
 @cindex @code{--crd}
 As of @acronym{NCO} version 3.9.6 (January, 2009), @acronym{NCO}
 supports the @acronym{CF} @code{coordinates} convention described 
- at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system, here}. 
+ at uref{http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.6/cf-conventions.html#coordinate-system, here}. 
 This convention allows variables to specify additional coordinates
 (including multidimensional coordinates) in a space-separated string
 attribute named @code{coordinates}. 
@@ -5882,18 +7991,18 @@ Only options specific to, or most useful with, a particular operator are
 described in any detail in the sections below.  
 
 @menu
-* ncap2 netCDF Arithmetic Processor::  
-* ncatted netCDF Attribute Editor::  
-* ncbo netCDF Binary Operator::  
-* ncea netCDF Ensemble Averager::  
-* ncecat netCDF Ensemble Concatenator::  
-* ncflint netCDF File Interpolator::  
-* ncks netCDF Kitchen Sink::    
-* ncpdq netCDF Permute Dimensions Quickly::  
-* ncra netCDF Record Averager::  
-* ncrcat netCDF Record Concatenator::  
-* ncrename netCDF Renamer::     
-* ncwa netCDF Weighted Averager::  
+* ncap2 netCDF Arithmetic Processor::
+* ncatted netCDF Attribute Editor::
+* ncbo netCDF Binary Operator::
+* nces netCDF Ensemble Statistics::
+* ncecat netCDF Ensemble Concatenator::
+* ncflint netCDF File Interpolator::
+* ncks netCDF Kitchen Sink::
+* ncpdq netCDF Permute Dimensions Quickly::
+* ncra netCDF Record Averager::
+* ncrcat netCDF Record Concatenator::
+* ncrename netCDF Renamer::
+* ncwa netCDF Weighted Averager::
 @end menu
 
 @page
@@ -5930,8 +8039,9 @@ in-depth examples of @command{ncap2} solutions to complex problems.
 @noindent
 SYNTAX
 @example
-ncap2 [-3] [-4] [-6] [@uref{http://nco.sf.net/nco.html#-A,,-A}] [-C] [-c] [-D @var{dbg}] [-F] [-f] [-L @var{dfl_lvl}] 
-[-l @var{path}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] 
+ncap2 [-3] [-4] [-6] [-7] [@uref{http://nco.sf.net/nco.html#-A,,-A}] [-C] [-c] 
+[-D @var{dbg}] [-F] [-f] [-h] [--hdf] [--hdr_pad @var{nbr}] [-L @var{dfl_lvl}] [-l @var{path}]
+[--no_tmp_fl] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all]
 [-s @var{algebra}] [-S @var{fl.nco}] [-t @var{thr_nbr}] [-v]
 @var{input-file} [@var{output-file}]  
 @end example
@@ -5945,7 +8055,7 @@ put into maintenance mode in November, 2006.
 This documentation refers to @command{ncap2}, which has a superset of
 the @command{ncap} functionality. 
 Eventually @command{ncap} will be deprecated in favor @command{ncap2}.
- at command{ncap2} may be renamed @command{ncap} in 2011.}.
+ at command{ncap2} may be renamed @command{ncap} in 2013.}.
 @cindex script file
 @cindex @code{--script-file}
 @cindex @code{--fl_spt}
@@ -5966,41 +8076,44 @@ The results of the algebraic manipulations are called
 
 Unlike the other operators, @command{ncap2} does not accept a list of
 variables to be operated on as an argument to @samp{-v} 
-(@pxref{Subsetting Variables}).
+(@pxref{Subsetting Files}).
 Rather, the @samp{-v} switch takes no arguments and indicates
 that @command{ncap2} should output @emph{only} user-defined variables.
 @command{ncap2} neither accepts nor understands the @var{-x} switch.
+ at cindex appending variables
+NB: As of 20120515, @command{ncap2} is unable to append to files that
+already contain the appended dimensions. 
 
 @c @subsection Scripting Mathematical Processing with @command{ncap2}
 
 @menu
-* Syntax of ncap2 statements::  
-* Expressions::                 
-* Dimensions::                  
-* Left hand casting::           
-* Arrays and hyperslabs::       
-* Attributes::                  
-* Number literals::             
-* if statement::                
-* print statement::             
-* Missing values ncap2::        
-* Methods and functions::       
-* RAM variables::               
-* Where statement::             
-* Loops::                       
-* Include files::               
-* Sort methods::                
-* Irregular grids::             
-* Bilinear interpolation::      
-* GSL special functions::       
-* GSL interpolation::           
-* GSL least-squares fitting::   
-* GSL statistics::              
-* GSL random number generation::  
-* Examples ncap2::              
-* Intrinsic mathematical methods::  
-* Operators precedence and associativity ::  
-* ID Quoting::                  
+* Syntax of ncap2 statements::
+* Expressions::
+* Dimensions::
+* Left hand casting::
+* Arrays and hyperslabs::
+* Attributes::
+* Number literals::
+* if statement::
+* print statement::
+* Missing values ncap2::
+* Methods and functions::
+* RAM variables::
+* Where statement::
+* Loops::
+* Include files::
+* Sort methods::
+* Irregular grids::
+* Bilinear interpolation::
+* GSL special functions::
+* GSL interpolation::
+* GSL least-squares fitting::
+* GSL statistics::
+* GSL random number generation::
+* Examples ncap2::
+* Intrinsic mathematical methods::
+* Operator precedence and associativity ::
+* ID Quoting::
 @end menu
 
 @html
@@ -6113,6 +8226,8 @@ When either type is @code{NC_DOUBLE}, the result is also @code{NC_DOUBLE}.
 @end itemize
 @c csz got to here editing
 
+ at cindex broadcasting variables
+ at cindex rank
 @strong{Rank}
 @itemize @bullet 
 @item The Rank of the result is generally equal to Rank of the operand
@@ -6121,8 +8236,8 @@ that has the greatest number of dimensions.
 then its possible to  make var2 conform to var1 through broadcasting and
 or dimension reordering.  
 @item Broadcasting a variable means creating data in non-existing
-dimensions from the data in existing dimensions. 
- at item More specifically: If the numbers of dimensions in var1 is greater
+dimensions by copying data in existing dimensions. 
+ at item More specifically: If the numbers of dimensions in var1 is greater 
 than or equal to the number of dimensions in var2 then an attempt is
 made to make var2 conform to var1 ,else var1 is made to conform to
 var2. If conformance  is not possible then an error message will be
@@ -6197,26 +8312,23 @@ The binary operators are, in order of precedence:
 ----------------------------
 @end example
 
-To see all operators: @pxref{Operators precedence and associativity} 
+To see all operators: @pxref{Operator precedence and associativity} 
 Examples:
 @example
-tm1= time>2 && time <7;  // tm1 = 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ; type double;
-tm2= time==3 || time>=6; // tm2 = 0, 0, 1, 0, 0, 1, 1, 1, 1, 1 ; type double
-tm3= int(!tm1);          // tm3=  1, 1, 0, 0, 0, 0, 1, 1, 1, 1 ; type int 
-tm4= tm1 && tm2;         // tm4=  0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ; type double;
-tm5= !tm4;               // tm5=  1, 1, 0, 1, 1, 0, 1, 1, 1, 1 ; type double;
+tm1=time>2 && time <7;  // tm1=0, 0, 1, 1, 1, 1, 0, 0, 0, 0 double
+tm2=time==3 || time>=6; // tm2=0, 0, 1, 0, 0, 1, 1, 1, 1, 1 double
+tm3=int(!tm1);          // tm3=1, 1, 0, 0, 0, 0, 1, 1, 1, 1 int
+tm4=tm1 && tm2;         // tm4=0, 0, 1, 0, 0, 1, 0, 0, 0, 0 double
+tm5=!tm4;               // tm5=1, 1, 0, 1, 1, 0, 1, 1, 1, 1 double
 @end example
 	
- at noindent @strong{Regular Assign Operator} @*
+ at noindent @strong{Regular Assign Operator}@*
 @noindent @emph{var1 '=' exp1} @*
-If var1 doesn't already exist in Output then var1 is written to Output with the values and dimensions from expr1. If var1 already exists in Output, then the only requirement on expr1 is that the number of elements must match the number already on disk. The type of expr1 is converted if necessary to the disk type.
+If var1 does not already exist in Output then var1 is written to Output with the values and dimensions from expr1. If var1 already exists in Output, then the only requirement on expr1 is that the number of elements must match the number already on disk. The type of expr1 is converted if necessary to the disk type.
 
- at noindent @strong{ Other Assign Operators +=,-=,*=./= } @*
+ at noindent @strong{ Other Assign Operators +=,-=,*=./= }@*
         @noindent  @emph{var1 'ass_op' exp1 }@*
 if exp1 is a variable and it doesn't conform to var1 then an attempt is made to make it conform to var1. If exp1 is an attribute it must have unity size or else have the same number of elements as var1. If expr1 has a different type to var1 the it is converted to the var1 type.
-
-example:
-
 @example
 z1=four+=one*=10 // z1=14 four=14 one=10;	
 time-=2          // time= -1,0,1,2,3,4,5,6,7,8
@@ -6241,11 +8353,15 @@ returned else exp3 is returned.
 
 Example:
 @example
-weight_avg= weight.avg();
-weight_avg@@units= (weight_avg ==1 ? "kilo" : "kilos");  
-PS_nw= PS - (PS.min() >100000 ? 100000 : 0 );
+weight_avg=weight.avg();
+weight_avg@@units= (weight_avg == 1 ? "kilo" : "kilos");  
+PS_nw=PS-(PS.min() > 100000 ? 100000 : 0);
 @end example
 
+ at html
+<a name="clp"></a> <!-- http://nco.sf.net/nco.html#clp -->
+<a name="clipping"></a> <!-- http://nco.sf.net/nco.html#clipping -->
+ at end html
 @noindent @strong{Clipping Operators}
 @cindex clipping operators
 @table @asis
@@ -6267,17 +8383,18 @@ result.
 
 Example:
 @example
-RDM2= RDM >>100.0; RDM2=100,100,100,100,126,126,100,100,100, 100; // type double
-RDM2= RDM << 90s ; RDM3=  1,  9, 36, 84, 90, 90, 84, 36,  9,   1; // type int
+RDM2=RDM >> 100.0 // 100,100,100,100,126,126,100,100,100,100 double
+RDM2=RDM <<  90s  // 1, 9, 36, 84, 90, 90, 84, 36, 9, 1 int
 @end example
 
 @html
 <a name="ncap_dims"></a> <!-- http://nco.sf.net/nco.html#ncap_dims -->
+<a name="defdim"></a> <!-- http://nco.sf.net/nco.html#defdim -->
 @end html
 @node Dimensions, Left hand casting, Expressions, ncap2 netCDF Arithmetic Processor
 @subsection Dimensions
- at cindex dimensions at command{ncap}
- at cindex defdim()
+ at cindex defining dimensions in @command{ncap2}
+ at cindex @code{defdim()}
 Dimensions are defined in Output using the @code{defdim()} function.
 @example
 defdim("cnt",10);
@@ -6415,8 +8532,8 @@ is simple with the @code{array()} function.
 The syntax is 
 @example
 output=array(val_srt,val_ncr,$dmn_nm); // One-dimensional output
-output=array(val_srt,val_ncr,var_tpl);  // Multi-dimensional output
-h at end example
+output=array(val_srt,val_ncr,var_tpl); // Multi-dimensional output
+ at end example
 @noindent
 where the arguments are the starting value @var{val_srt}, 
 incremental value @var{val_ncr}, and, for one-dimensional output, the
@@ -6493,7 +8610,7 @@ th[$time,$lat,$lon]=
 th(1,1,3);        // 16
 th(2,0,:);        // 17, 18, 19, 20
 th(:,1,3);        // 8, 16, 24, -99, 40, 48, 56, 64, 72, -99 
-th(::5 ,:,0:3:2); // 1, 3, 5, 7, 41, 43, 45, 47
+th(::5,:,0:3:2); // 1, 3, 5, 7, 41, 43, 45, 47
 @end example
 
 If hyperslab arguments collapse to a single value (a cross-section has
@@ -6545,7 +8662,7 @@ prs(:,0,:,:)=th0;
 prs(:,1,:,:)=th1
 @end example
 
- at noindent @strong{Reverse method} @*
+ at noindent @strong{Reverse method}@*
 @cindex reverse()
 Use the @code{reverse()} method to reverse a dimension's elements in a
 variable with at least one dimension.
@@ -6555,7 +8672,7 @@ th_rv=th(1 ,:,:).reverse($lon); // @{12,11,10,9 @}, @{16,15,14,13@}
 od_rv=od.reverse($time);        // @{38,36,34,32,30,28,26,24,22,20@}
 @end example
 
- at noindent @strong{Permute method} @*
+ at noindent @strong{Permute method}p@*
 @cindex permute()
 Use the @code{permute()} method to swap the dimensions of a variable.
 The number and names of dimension arguments must match the dimensions in
@@ -6586,7 +8703,7 @@ three_dmn_var_prm=
 @end html
 @node Attributes, Number literals, Arrays and hyperslabs, ncap2 netCDF Arithmetic Processor
 @subsection Attributes
- at cindex attributes at command{ncap}
+ at cindex attributes at command{ncap2}
 @noindent Attributes are referred to by @emph{var_nm@@att_nm} @*
 All the following are valid statements:
 @example
@@ -6629,7 +8746,7 @@ sng_arr[$sng_len]=a1@@long_name; // sng_arr now contains "Kelvin"
 Attributes defined in a script are stored in memory and are written to Output after script completion.
 To stop the attribute being written use the ram_delete() method or use a bogus variable name.
 
- at noindent @strong{Attribute Propagation & Inheritance}
+ at noindent @strong{Attribute Propagation and Inheritance}
 @cindex attribute propagation
 @cindex attribute inheritance
 @itemize @bullet
@@ -6641,8 +8758,10 @@ To stop the attribute being written use the ram_delete() method or use a bogus v
 @end itemize
 
 @example
-prs_mdp[time,lat,lon,lev]=P0*hyam+hybm*PS;   // prs_mdp gets attributes from PO
-th_min=1.0 + 2*three_dmn_var_dbl.min($time); // th_min  gets attributes from three_dmn_var_dbl
+// prs_mdp inherits attributes from P0:
+prs_mdp[time,lat,lon,lev]=P0*hyam+hybm*PS;
+// th_min inherits attributes from three_dmn_var_dbl:
+th_min=1.0 + 2*three_dmn_var_dbl.min($time);
 @end example
 
 If the attribute name contains non-regular characters use ID quoting. See @pxref{ID Quoting}
@@ -6655,7 +8774,7 @@ If the attribute name contains non-regular characters use ID quoting. See @pxref
 @end html
 @node Number literals, if statement, Attributes, ncap2 netCDF Arithmetic Processor
 @subsection Number literals
- at cindex number literals @command{ncap}
+ at cindex number literals @command{ncap2}
 The table below lists the postfix character(s) to add to a number
 literal for type cohesion. 
 To use the new netCDF4 types @acronym{NCO} must be compiled/linked to
@@ -6684,8 +8803,7 @@ n6@@units="kelvin" // attribute will be type @code{NC_CHAR}
 @end example 
 
 @table @asis
- at item
- at strong{netCDF3/4 Types}
+ at item @strong{netCDF3/4 Types}
 @item b|B	 
   @code{NC_BYTE}, a signed 1-byte integer 
 @item none	 
@@ -6698,9 +8816,7 @@ n6@@units="kelvin" // attribute will be type @code{NC_CHAR}
   @code{NC_FLOAT}, a single-precision (4-byte) floating point number 
 @item d|D
   @code{NC_DOUBLE}, a double-precision (8-byte) floating point number 
- at item
- at item
- at strong{netCDF4 Types}
+ at item @strong{netCDF4 Types}
 @item ub|UB	 
   @code{NC_UBYTE}, an unsigned 1-byte integer 
 @item us|US 
@@ -6749,10 +8865,10 @@ else @{
 all its non-missing value elements must be logically true, i.e.,
 non-zero. 
 The expression can be of any type. 
-Unlike C there is no short-circuiting of an expression with the OR (||)
-AND (&&) operators. 
+ at w{Unlike C} there is no short-circuiting of an expression with the 
+OR (@code{||}) and AND (@code{&&}) operators. 
 The whole expression is evaluated regardless if one of the AND/OR
-operands are true/false.   
+operands are True/False.
 @example
 # Simple example
 if(time>0)
@@ -6771,14 +8887,14 @@ if(fl_typ==fl_typ_gcm)@{
   var_nbr_apx=32;
   lmn_nbr=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Variable size */
   if(nco_op_typ==nco_op_typ_avg)@{
-    lmn_nbr_avg=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Averaging block size */
+    lmn_nbr_avg=1.0*var_nbr_apx*varsz_gcm_4D; // Block size
     lmn_nbr_wgt=dmnsz_gcm_lat; /* [nbr] Weight size */
   @} // !nco_op_typ_avg
 @}else if(fl_typ==fl_typ_stl)@{
   var_nbr_apx=8;
   lmn_nbr=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Variable size */
   if(nco_op_typ==nco_op_typ_avg)@{
-    lmn_nbr_avg=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Averaging block size */
+    lmn_nbr_avg=1.0*var_nbr_apx*varsz_stl_2D; // Block size
     lmn_nbr_wgt=dmnsz_stl_lat; /* [nbr] Weight size */
   @} // !nco_op_typ_avg
 @} // !fl_typ
@@ -6787,7 +8903,8 @@ if(fl_typ==fl_typ_gcm)@{
 @noindent @strong{Conditional Operator @*}
 @example
 // netCDF4 needed for this example
-th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : three_dmn_var_sht.int() ); 
+th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : \
+       three_dmn_var_sht.int()); 
 @end example
 
 @html
@@ -6795,7 +8912,7 @@ th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : three_dmn_var_sht.int
 @end html
 @node print statement, Missing values ncap2, if statement, ncap2 netCDF Arithmetic Processor
 @subsection print statement
- at cindex print()@command{ncap}
+ at cindex print() @command{ncap2}
 @example
 print(variable_name/attribute name/string, format string);
 @end example  
@@ -6803,10 +8920,10 @@ print(variable_name/attribute name/string, format string);
 @noindent The print function takes a variable name or attribute name or
 a quoted string and prints the contents in a in a similar fashion to
 @code{ncks -H}.
-There is also an optional C style format string argument. 
-Currently the print function cannot print RAM variables or expressions 
+There is also an optional C-language style format string argument. 
+Currently the print function cannot print @acronym{RAM} variables or expressions 
 such as @code{'print(var_msk*3+4)'}. 
-To print an expression, first evaluate it as a non-RAM variable (so it
+To print an expression, first evaluate it as a non- at acronym{RAM} variable (so it
 will be saved and can be printed), and then print the variable.
 
 @noindent examples
@@ -6864,28 +8981,48 @@ n2=rec_var_int_mss_val_int + rec_var_int_mss_val_int.reverse($time);
 n2=-999,-999,11,11,11,11,11,11,999,-999;
 @end example
 
-The following methods are used to edit the missing value associated with
-a variable. 
+ at html
+<a name="set_miss"></a> <!-- http://nco.sf.net/nco.html#set_miss -->
+<a name="get_miss"></a> <!-- http://nco.sf.net/nco.html#get_miss -->
+<a name="change_miss"></a> <!-- http://nco.sf.net/nco.html#change_miss -->
+<a name="number_miss"></a> <!-- http://nco.sf.net/nco.html#number_miss -->
+ at end html
+The following methods manipulate missing value information associated
+with a variable. 
 They only work on variables in Output. 
 @table @code
 @item set_miss(expr)
- at cindex set_miss()
- Takes one argument the missing value. 
- Sets or overwrites the existing missing value. 
- The argument given is converted if necessary to the variable type 
+ at cindex @code{set_miss()}
+ The numeric argument @var{expr} becomes the new missing value,
+ overwriting the old missing value, if any.
+ The argument given is converted if necessary to the variable type.
+ NB: This only changes the missing value attribute. 
+ Missing values in the original variable remain unchanged, and thus 
+ are no long considered missing values.
+ They are ``orphaned''.
+ Thus @code{set_miss()} is normally used only when creating new
+ variables.
+ The intrinsic function @code{change_miss()} (see below) is typically 
+ used to edit values of existing variables.
 @item change_miss(expr)
- at cindex change_miss()
- Changes the missing value elements of the variable to the new missing
- value (nb an expensive function). 
+ at cindex @code{change_miss()}
+ Sets or changes (any pre-existing) missing value attribute and missing 
+ data values to @var{expr}. 
+ NB: This is an expensive function since all values must be examined. 
+ Use this function when changing missing values for pre-existing
+ variables. 
 @item get_miss() 
- at cindex get_miss()
+ at cindex @code{get_miss()}
  Returns the missing value of a variable. 
  If the variable exists in Input and Output then the missing value of
  the variable in Output is returned. 
  If the variable has no missing value then an error is returned.   
 @item delete_miss()
- at cindex delete_miss()
+ at cindex @code{delete_miss()}
  Deletes the missing value associated with a variable.
+ at item number_miss()
+ at cindex @code{number_miss()}
+ Counts the number of missing values a variable contains.
 @end table
 
 @example
@@ -6903,6 +9040,13 @@ where (three_dmn_var_dbl%3 == 0)
      new=three_dmn_var_dbl; 
 elsewhere
      new=new.get_miss();   
+
+// Print missing value and variable summary
+mss_val_nbr=three_dmn_var_dbl.number_miss();
+print(three_dmn_var_dbl@@_FillValue);
+print("Number of missing values in three_dmn_var_dbl: ");
+print(mss_val_nbr,"%d");
+print(three_dmn_var_dbl);
 @end example
 
 @html
@@ -7004,7 +9148,7 @@ Returns the netcdf type (see previous section)
 
 @sp 1
 @noindent @strong{Utility Methods @*}
-These functions are used to manipulate missing values and RAM variables.
+These functions are used to manipulate missing values and @acronym{RAM} variables.
 @pxref{Missing values ncap2} 
 
 @table @code
@@ -7017,9 +9161,9 @@ These functions are used to manipulate missing values and RAM variables.
 @item delete_miss()
  Deletes the missing value associated with a variable.
 @item ram_write()
- Writes a RAM variable to disk i.e., converts it to a regular disk type variable
+ Writes a @acronym{RAM} variable to disk i.e., converts it to a regular disk type variable
 @item ram_delete()
- Deletes a RAM variable or an attribute 
+ Deletes a @acronym{RAM} variable or an attribute 
 @end table
 
 @sp 1
@@ -7042,8 +9186,7 @@ lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0
 @noindent These methods allow @command{ncap2} to convert variables and attributes to the different netcdf types. For more details on automatic and manual type conversion see (@pxref{Type Conversion}). You can only use the new netCDF4 types if you have compiled/links @acronym{NCO} with the netCDF4 library and the Output file is HDF5.
 
 @table @code
- at item
- at strong{netCDF3/4 Types}
+ at item @strong{netCDF3/4 Types}
 @item byte()	 
 @cindex byte()
  convert to @code{NC_BYTE},  a signed 1-byte integer 
@@ -7062,9 +9205,7 @@ lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0
 @item double() 
 @cindex double()
  convert to @code{NC_DOUBLE}, a double-precision (8-byte) floating point number 
- at item
- at item
- at strong{netCDF4 Types}
+ at item @strong{netCDF4 Types}
 @item ubyte()	 
 @cindex ubyte()
  convert to @code{NC_UBYTE}, an unsigned 1-byte integer 
@@ -7086,8 +9227,12 @@ lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0
 The list of mathematical methods is system dependant.
 For the full list @pxref{Intrinsic mathematical methods} 
 
-All the mathematical methods take a single operand ,with the exception of @code{atan2} and @code{pow} which take two.
-If the operand type is less than @emph{float} then the result will be of type @emph{float}. If the operand is type @emph{double} then the result will be type @emph{double}. Like the other methods, you are free to use the mathematical methods as functions.
+All the mathematical methods take a single argument except @code{atan2()}
+and @code{pow()} which take two. 
+If the operand type is less than @emph{float} then the result will be of
+type @emph{float}. 
+Arguments of type @emph{double} yield results of type @emph{double}. 
+Like the other methods, you are free to use the mathematical methods as functions. 
 
 @example
 n1=pow(2,3.0f)    // n1 type float
@@ -7098,23 +9243,24 @@ n3=1/(three_dmn_var_dbl.cos().pow(2))-tan(three_dmn_var_dbl)^2; // n3 type doubl
 @html
 <a name="ncap_ram"></a> <!-- http://nco.sf.net/nco.html#ncap_ram -->
 @end html
+ at cindex @acronym{RAM} variables
 @node RAM variables, Where statement, Methods and functions, ncap2 netCDF Arithmetic Processor
- at subsection RAM variables
-Unlike regular variables, RAM variables are never written to disk.
-Hence using RAM variables in place of regular variables (especially
+ at subsection @acronym{RAM} variables
+Unlike regular variables, @acronym{RAM} variables are never written to disk.
+Hence using @acronym{RAM} variables in place of regular variables (especially
 within loops) significantly increases execution speed.
 Variables that are frequently accessed within @code{for} or @code{where}
 clauses provide the greatest opportunities for optimization. 
-To declare and define a RAM variable simply prefix the variable name
+To declare and define a @acronym{RAM} variable simply prefix the variable name
 with an asterisk (@code{*}) when the variable is declared/initialized.
-To delete a RAM variables (and recover their memory) use the
+To delete a @acronym{RAM} variables (and recover their memory) use the
 @code{ram_delete()} method. 
-To write a RAM variable to disk (like a regular variable) use
+To write a @acronym{RAM} variable to disk (like a regular variable) use
 @code{ram_write()}. 
 @cindex ram_write()
 @cindex ram_delete()
 @example
-*temp[$time,$lat,lon]=10.0;     // Cast
+*temp[$time,$lat,$lon]=10.0;     // Cast
 *temp_avg=temp.avg($time);      // Regular assign
 temp.ram_delete();              // Delete RAM variable
 temp_avg.ram_write();           // Write Variable to output
@@ -7218,43 +9364,41 @@ temp_max=temperature.max();
 @subsection Loops
 @cindex while()
 @cindex for()
- at command{ncap} supplies @command{for()} loops and @command{while()} loops. 
-They are completely unoptimized so use them only with RAM 
+ at command{ncap2} supplies @command{for()} loops and @command{while()} loops. 
+They are completely unoptimized so use them only with @acronym{RAM} 
 variables unless you want thrash your disk to death. 
 To break out of a loop use the @command{break} command. 
 To iterate to the next cycle use the @command{continue} command. 
 
 @example
-// Follwing sets elements in variable double temp(time,lat) 
+// Set elements in variable double temp(time,lat) 
 // If element < 0 set to 0, if element > 100 set to 100
 *sz_idx=$time.size;
 *sz_jdx=$lat.size;
 
 for(*idx=0;idx<sz_idx;idx++)
   for(*jdx=0;jdx<sz_jdx;jdx++)
-    if(temp(idx,jdx) > 100) temp(idx,jdx)=100.0;
-    else if(temp(idx,jdx) < 0) temp(idx,jdx)=0.0;
+    if(temp(idx,jdx) > 100) temp(idx,jdx)=100.0; 
+      else if(temp(idx,jdx) < 0) temp(idx,jdx)=0.0;
 
 // Are values of co-ordinate variable double lat(lat) monotonic?
-   *sz=$lat.size;
+*sz=$lat.size;
 
-   for(*idx=1;idx<sz;idx++)
-     if(lat(idx)-lat(idx-1) < 0.0) 
-       break;
+for(*idx=1;idx<sz;idx++)
+  if(lat(idx)-lat(idx-1) < 0.0) break;
 
-   if(idx == sz) 
-     print("lat co-ordinate is monotonic\n");
-   else 
-     print("lat co-ordinate is NOT monotonic\n");
+if(idx == sz) print("lat co-ordinate is monotonic\n");
+   else print("lat co-ordinate is NOT monotonic\n");
 
 // Sum odd elements	
 *idx=0;
 *sz=$lat_nw.size;
 *sum=0.0;
-  while(idx<sz)@{
-   if(lat(idx)%2) sum+=lat(idx);
-   idx++;
-  @}
+
+while(idx<sz)@{
+  if(lat(idx)%2) sum+=lat(idx);
+  idx++;
+@}
 
 ram_write(sum);
 print("Total of odd elements ");print(sum);print("\n"); 
@@ -7273,7 +9417,7 @@ The syntax of an @var{include-file} is:
 The script filename is searched relative to the run directory. 
 It is possible to nest include files to an arbitrary depth. 
 A handy use of inlcude files is to store often used constants. 
-Use RAM variables if you do not want these constants written to
+Use @acronym{RAM} variables if you do not want these constants written to
 @var{output-file}.  
 @example
 // script.nco
@@ -7284,20 +9428,56 @@ e=2.71828; // Regular (disk) variable, written to output
 @end example
 
 @html
-<a name="ncap_srt"></a> <!-- http://nco.sf.net/nco.html#ncap_srt -->
+<a name="srt"></a> <!-- http://nco.sf.net/nco.html#srt -->
+<a name="sort"></a> <!-- http://nco.sf.net/nco.html#sort -->
+<a name="remap"></a> <!-- http://nco.sf.net/nco.html#remap -->
 @end html
 @node Sort methods, Irregular grids, Include files, ncap2 netCDF Arithmetic Processor
 @subsection @command{sort} methods
-In @acronym{ncap} there are two ways to sort data. 
-The first is a regular @command{sort}. 
-This sorts ALL the elements of a variable or attribute without
-regard to any dimensions. 
-The second method applies a sort map to a variable. 
-To apply this sort map the size of the variable must be exactly
-divisible by the size of the sort map. 
-The method @code{sort(var_in,&var_map)} is overloaded. 
-The second optional argument is to supply a call-by-reference variable
-to hold the returned sort map.  
+ at cindex @command{sort}
+ at cindex @command{asort}
+ at cindex @command{dsort}
+ at cindex @command{remap}
+ at cindex @command{unmap}
+ at cindex @command{invert_map}
+In @acronym{ncap2} there are multiple ways to sort data. 
+Beginning with @acronym{NCO} 4.1.0 (March, 2012), @acronym{ncap2} 
+support six sorting functions:
+ at example
+var_out=sort(var_in,&srt_map); // Ascending sort
+var_out=asort(var_in,&srt_map); // Accending sort 
+var_out=dsort(var_in,&srt_map); // Desending sort     
+var_out=remap(var_in,srt_map); // Apply srt_map to var_in
+var_out=unmap(var_in,srt_map); // Reverse what srt_map did to var_in
+dsr_map=invert_map(srt_map); // Produce "de-sort" map that inverts srt_map
+ at end example
+The first two functions, @command{sort()} and @command{asort()}
+sort, in ascending order, all the elements of @var{var_in} (which can be
+a variable or attribute) without regard to any dimensions.
+The third function, @command{dsort()} does the same but sorts in
+descending order. 
+Remember that ascending and descending sorts are specified by
+ at command{asort()} and @command{dsort()}, respectively.
+
+These three functions are overloaded to take a second, optional argument 
+called the sort map @var{srt_map}, which should be supplied as a
+call-by-reference variable, i.e., preceded with an ampersand.
+If the sort map does not yet exist, then it will be created and 
+returned as an integer type the same shape as the input variable.
+
+The output @var{var_out} of each sort function is a sorted version of
+the input, @var{var_in}.
+The output @var{var_out} of the two mapping functions the result of
+applying (with @command{remap()} or un-applying (with @command{unmap()}) 
+the sort map @var{srt_map} to the input @var{var_in}.
+To apply the sort map with @command{remap()} the size of the variable
+must be exactly divisible by the size of the sort map. 
+
+The final function @command{invert_map()} returns the so-called
+de-sorting map @var{dsr_map} which is inverse map of the input map
+ at var{srt_map}. 
+This gives the user access to both the forward and inverse sorting maps
+which can be useful in special situations.
 @example
 a1[$time]=@{10,2,3,4,6,5,7,3,4,1@};
 a1_sort=sort(a1);
@@ -7317,7 +9497,7 @@ then it will be created with the same shape as the input variable and be
 of type @code{NC_INT}. 
 If the map variable already exists, then the only restriction is that it
 be of at least the same size as the input variable. 
-To apply a map use @code{dsort(var_in,var_map)}. 
+To apply a map use @code{remap(var_in,srt_map)}. 
 @example
 defdim("nlat",5);
 
@@ -7333,7 +9513,7 @@ a3_sort=sort(a3,&a3_map);
 print(a3_map);
 // 0, 2, 1, 3;
 
-a4_sort=dsort(a4,a3_map);
+a4_sort=remap(a4,a3_map);
 print(a4_sort);
 // 1, 3, 2, 4,
 // 5, 7, 6, 8,
@@ -7343,7 +9523,7 @@ print(a4_sort);
 
 a3_map2[$nlat]=@{4,3,0,2,1@};
 
-a4_sort2=dsort(a4,a3_map2);
+a4_sort2=remap(a4,a3_map2);
 print(a4_sort2);
 // 3, 5, 4, 2, 1
 // 8, 10, 9,7, 6, 
@@ -7354,11 +9534,6 @@ As in the above example you may create your own sort map.
 To sort in descending order, apply the @code{reverse()} method after the
 @command{sort()}.    
 
- at html
-<a name="srt"></a> <!-- http://nco.sf.net/nco.html#srt -->
-<a name="sort"></a> <!-- http://nco.sf.net/nco.html#sort -->
-<a name="dsort"></a> <!-- http://nco.sf.net/nco.html#dsort -->
- at end html
 Here is an extended example of how to use @command{ncap2} features to
 hyperslab an irregular region based on the values of a variable not a
 coordinate. 
@@ -7370,7 +9545,7 @@ hyperslab is quite different.
 cat > ~/ncap2_foo.nco << 'EOF'
 // Purpose: Save irregular 1-D regions based on variable values
 
-// Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
+// Included in NCO User Guide at http://nco.sf.net/nco.html#sort
 
 /* NB: Single quotes around EOF above turn off shell parameter 
     expansion in "here documents". This in turn prevents the
@@ -7426,13 +9601,13 @@ msk_flg=sort(msk_flg,&srt_map);
 // Define output dimension equal in size to number of valid points
 defdim("crd_out",msk_nbr);
 
-/* Now sort the variable of interest using the sort map and dsort()
+/* Now sort the variable of interest using the sort map and remap()
    The output, on the LHS, is the input re-arranged so that all points
    meeting the mask condition are contiguous at the end of the array
    Use same srt_map to hyperslab multiple variables of the same shape
    Remember to apply srt_map to the coordinate variables */
-crd_in=dsort(crd_in,srt_map);
-var_in=dsort(var_in,srt_map);
+crd_in=remap(crd_in,srt_map);
+var_in=remap(var_in,srt_map);
 
 /* Hyperslab last msk_nbr values of variable(s) of interest */
 crd_out[crd_out]=crd_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
@@ -7458,7 +9633,7 @@ cat > ~/ncap2_foo.nco << 'EOF'
    This example sorts the variable three_dmn_rec_var(time,lat,lon)
    based on the values of the time coordinate. */
 
-// Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
+// Included in NCO User Guide at http://nco.sf.net/nco.html#sort
 
 // Randomize the time coordinate
 time=10.0*gsl_rng_uniform(time);
@@ -7512,8 +9687,8 @@ srt_map_3d+=lat_lon_idx;
 
 print("sort map 3d =\n");print(srt_map_3d);
 
-// Use dsort() to "de-sort" the data using the sort map
-three_dmn_rec_var=dsort(three_dmn_rec_var,srt_map_3d);
+// Use remap() to re-map the data
+three_dmn_rec_var=remap(three_dmn_rec_var,srt_map_3d);
 
 // Finally, reverse data so time coordinate is descending
 time=time.reverse($time);
@@ -7633,24 +9808,38 @@ Crafting such commands on the command line is possible though unwieldy.
 In such cases, a script is often cleaner and allows you to document the
 procedure:
 @example
+ at verbatim
 cat > ncap2.in << 'EOF'
 mask_var = (lat >= lat_min && lat <= lat_max) && (lon >= lon_min && > lon <= lon_max);
-if(mask_var.total() > 0)@{ // Check that mask contains some valid values
+if(mask_var.total() > 0){ // Check that mask contains some valid values
   temperature_avg=(temperature*mask_var).avg(); // Average temperature
   temperature_max=(temperature*mask_var).max(); // Maximum temperature
-@}
+}
 EOF
 ncap2 -S ncap2.in in.nc out.nc
+ at end verbatim
 @end example
 
+ at html
+<a name="wrf"></a> <!-- http://nco.sf.net/nco.html#wrf -->
+<a name="WRF"></a> <!-- http://nco.sf.net/nco.html#WRF -->
+ at end html
+ at ignore
+http://foehn.colorado.edu/wrfout_to_cf/wrfout_to_cf.ncl
+ncl 'file_in="wrfout.nc"' 'file_out="wrfpost.nc"' wrfout_to_cf.ncl
+ncl 'file_in="wrfout_d02_2013-10-04_20:00:00"' 'file_out="wrfout_d02_2013-10-04_20:00:00_cf.nc"' wrfout_to_cf.ncl
+ncl 'file_in="wrfout_v2_Lambert"' 'file_out="wrfout_v2_Lambert.nc"' wrfout_to_cf.ncl
+ at end ignore
+ at cindex @acronym{WRF}
+Grids like those produced by the @acronym{WRF} model are complex because
+one must use global metadata to determine the grid staggering and
+offsets to translate @code{XLAT} and @code{XLONG} into real latitudes, 
+longitudes, and missing points. 
+The @acronym{WRF} grid documentation should describe this.
 For @acronym{WRF} files creating regional masks looks like 
 @example
-mask_var = (XLAT >= lat_min && XLAT <= lat_max) && (XLONG >= lon_min && > XLONG <= lon_max);
+mask_var = (XLAT >= lat_min && XLAT <= lat_max) && (XLONG >= lon_min && XLONG <= lon_max);
 @end example
-In practice with WRF it's a bit more complicated because you must
-use the global metadata to determine the grid staggering and offsets
-to translate XLAT and XLONG into real latitudes and longitudes and
-missing points. The WRF grid documentation should describe this.
 
 A few notes:
 Irregular regions are the union of arrays lat/lon_min/max's. 
@@ -7676,9 +9865,9 @@ with co-ordinate vars @code{lat[lat], lon[lon]}.
 We wish to find the temperature at an arbitary point [@var{X}, at var{Y}]
 within the grid. 
 If we can locate lat_min,lat_max and lon_min,lon_max such that 
- at code{lat_min <= X <= lat_max} and @code{lon_min <=Y <=lon_max} 
-then we can interpolate in two dimensions to find the temperature at
-[@var{X}, at var{Y}].
+ at code{lat_min <= X <= lat_max} and @code{lon_min <= Y <= lon_max} 
+then we can interpolate in two dimensions the temperature at
+[@var{X}, at var{Y}]. 
 
 The general form of the @command{ncap2} interpolation function is
 @example
@@ -7699,9 +9888,9 @@ It must be of size @code{grid_out_x.size()*grid_out_y.size()}
 @item grid_out_y
 @var{Y} output values 
 @item grid_in_x
- at var{X} input values values. Must be montonic (increasing or decreasing).
+ at var{X} input values values. Must be monotonic (increasing or decreasing).
 @item grid_in_y
- at var{Y} input values values. Must be montonic (increasing or decreasing).
+ at var{Y} input values values. Must be monotonic (increasing or decreasing).
 @end table
 @noindent
 Prior to calculations all arguments are converted to type
@@ -7709,7 +9898,7 @@ Prior to calculations all arguments are converted to type
 After calculations @code{var_out} is converted to the input type of
 @code{grid_in}. 
 
-Suppose the first part of an ncap2 script is
+Suppose the first part of an @command{ncap2} script is
 @example
 defdim("X",4);
 defdim("Y",5);
@@ -7802,7 +9991,7 @@ print(T_out);
 @cindex @acronym{GSL}
 @noindent As of version 3.9.6 (released January, 2009), @acronym{NCO} 
 can link to the GNU Scientific Library (@acronym{GSL}). 
- at command{ncap} can access most @acronym{GSL} special functions including
+ at command{ncap2} can access most @acronym{GSL} special functions including
 Airy, Bessel, error, gamma, beta, hypergeometric, and Legendre functions
 and elliptical integrals. 
 @acronym{GSL} must be @w{version 1.4} or later. 
@@ -7833,7 +10022,7 @@ us know if you find otherwise).
 @noindent Consider the gamma function.@*
 @noindent The @acronym{GSL} function prototype is @*
 @code{int gsl_sf_gamma_e(const double x, gsl_sf_result * result)}
-The @command{ncap} script would be:
+The @command{ncap2} script would be:
 @example
 lon_in[lon]=@{-1,0.1,0,2,0.3@};
 lon_out=gsl_sf_gamma(lon_in);
@@ -7853,7 +10042,7 @@ Otherwise, the default double fill value is used
 prototype@* 
 @code{int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result)} 
 
-An @command{ncap} script would be
+An @command{ncap2} script would be
 @example
 lon_out=gsl_sf_bessel_Jn(2,lon_in);  
 lon_out=0.11490, 0.0012, 0.00498, 0.011165
@@ -7868,7 +10057,7 @@ lon_out=gsl_sf_bessel_Jn(n_in,0.5);
 lon_out= 0.93846, 0.24226, 0.03060, 0.00256
 @end example
 
- at noindent Arguments to @acronym{GSL} wrapper functions in @command{ncap}
+ at noindent Arguments to @acronym{GSL} wrapper functions in @command{ncap2}
 must conform to one another, i.e., they must share the same sub-set of
 dimensions.  
 For example: @code{three_out=gsl_sf_bessel_Jn(n_in,three_dmn_var_dbl)}
@@ -7884,14 +10073,14 @@ Consider the elliptical integral with prototype
 three_out=gsl_sf_ellint_RD(0.5,time,three_dmn_var_dbl);
 @end example
 
- at noindent The three arguments are all conformable so the above @command{ncap} call is valid. The mode argument in the function prototype controls the convergence of the algorithm. It also appears  in the Airy Function prototypes. It can be set by defining the environment variable @code{GSL_PREC_MODE}. If unset it defaults to the value @code{GSL_PREC_DOUBLE}. See the @acronym{GSL} manual for more details. 
+ at noindent The three arguments are all conformable so the above @command{ncap2} call is valid. The mode argument in the function prototype controls the convergence of the algorithm. It also appears  in the Airy Function prototypes. It can be set by defining the environment variable @code{GSL_PREC_MODE}. If unset it defaults to the value @code{GSL_PREC_DOUBLE}. See the @acronym{GSL} manual for more details. 
 @example
 export GSL_PREC_MODE=0 // GSL_PREC_DOUBLE
 export GSL_PREC_MODE=1 // GSL_PREC_SINGLE
 export GSL_PREC_MODE=2 // GSL_PREC_APPROX
 @end example
 
- at noindent The @command{ncap} wrappers to the array functions are
+ at noindent The @command{ncap2} wrappers to the array functions are
 slightly different. 
 Consider the following @acronym{GSL} prototype @* 
 @code{int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double *result_array)}
@@ -8234,7 +10423,7 @@ prototypes look at the spreadsheet @strong{doc/nco_gsl.ods}. @* @*
 
 @noindent  Given a set of data points (x1,y1)...(xn, yn) the @acronym{GSL} functions computes a continuous interpolating function @acronym{Y(x)} such that @acronym{Y(xi) = yi}. The interpolation is piecewise smooth, and its behavior at the end-points is determined by the type of interpolation used. For more information consult the @acronym{GSL} manual. 
 
- at noindent Interpolation with @command{ncap2} is a two stage process. In the first stage, a ram variable is created from the chosen interpolating function and the data set. This ram variable holds in memory a @acronym{GSL} interpolation object. In the second stage, points along the interpolating function are calculated. If you have a very large data set or are interpolating many sets then consider deleting the ram variable when it is redundant. Use the command @command{ram_delete(var_nm)}.   
+ at noindent Interpolation with @command{ncap2} is a two stage process. In the first stage, a @acronym{RAM} variable is created from the chosen interpolating function and the data set. This @acronym{RAM} variable holds in memory a @acronym{GSL} interpolation object. In the second stage, points along the interpolating function are calculated. If you have a very large data set or are interpolating many sets then consider deleting the @acronym{RAM} variable when it is redundant. Use the comman [...]
 
 @noindent A simple example
 
@@ -8252,16 +10441,15 @@ y2=gsl_spline_eval(ram_sp,1.3);
 y3=gsl_spline_eval(ram_sp,0.0);
 ram_delete(ram_sp);
 
-print(y_out);   // 1.10472, 1.2, 1.4, 1.42658, 1.69680002 
-print(y2);      // 1.12454 
-print(y3);      // '_' 
-
+print(y_out); // 1.10472, 1.2, 1.4, 1.42658, 1.69680002 
+print(y2);    // 1.12454 
+print(y3);    // '_' 
 @end example
 
 @noindent Note in the above example y3 is set to 'missing value' because 0.0 isn't within the input X range.  
 
- at strong{ @acronym{GSL} Interpolation Types } @*
- at noindent All the interpolation functions have been implemented. These are: @*
+ at strong{@acronym{GSL} Interpolation Types}@*
+ at noindent All the interpolation functions have been implemented. These are:@*
 gsl_interp_linear() @* gsl_interp_polynomial() @* gsl_interp_cspline()@*
 gsl_interp_cspline_periodic()@* gsl_interp_akima() @* gsl_interp_akima_periodic() @*
 
@@ -8270,9 +10458,9 @@ gsl_interp_cspline_periodic()@* gsl_interp_akima() @* gsl_interp_akima_periodic(
 @noindent @strong{Implemented} @*
 gsl_spline_eval() @*
 @noindent @strong{Unimplemented} @*
-gsl_spline_deriv() @*
-gsl_spline_deriv2() @*
-gsl_spline_integ() @*
+gsl_spline_deriv()@*
+gsl_spline_deriv2()@*
+gsl_spline_integ()@*
 
 @html
 <a name="ncap_lsqf"></a> <!-- http://nco.sf.net/nco.html#ncap_lsqf -->
@@ -8446,11 +10634,8 @@ print(weight_size);
 dmin=data.gsl_stats_min();
 dmax=data.gsl_stats_max();
 print(dmin);print(dmax);
-
 @end example
 
-
-
 @html
 <a name="ncap_rng"></a> <!-- http://nco.sf.net/nco.html#ncap_rng -->
 @end html
@@ -8476,9 +10661,9 @@ This function returns var_in with integers from the chosen rng algorithm. The mi
 @item gsl_rng_uniform_int(var_in)
 This function returns var_in with random integers from 0 to n-1. The value n must be less than or equal to the maximium value of the chosen rng algorithm. 
 @item gsl_rng_uniform(var_in)
-This function returns var_in with double precision numbers in the range [0.0,1). The range includes 0.0 and excludes 1.0.
+This function returns var_in with double-precision numbers in the range [0.0,1). The range includes 0.0 and excludes 1.0.
 @item gsl_rng_uniform_pos(var_in)
-This function returns var_in with double precision numbers in the range (0.0,1), excluding both 0.0 and 1.0.
+This function returns var_in with double-precision numbers in the range (0.0,1), excluding both 0.0 and 1.0.
 @end table
 
 @noindent Below are examples of @code{gsl_rng_get()} and @code{gsl_rng_uniform_int()} in action.
@@ -8716,7 +10901,7 @@ arithmetic than @command{ncap2}.
 (e.g., @samp{$}, @samp{?}, @samp{;}, @samp{()}, @samp{[]})
 that can confuse the command-line shell if not quoted properly.
 The issues are the same as those which arise in utilizing extended
-regular expressions to subset variables (@pxref{Subsetting Variables}).
+regular expressions to subset variables (@pxref{Subsetting Files}).
 The example above will fail with no quotes and with double quotes.
 This is because shell globbing tries to @dfn{interpolate} the value of
 @code{$time} from the shell environment unless it is quoted:
@@ -8749,7 +10934,8 @@ In such cases it may be necessary to use the shell backslash character
 @findex ncra
 @cindex degenerate dimension
 @cindex @samp{-b}
-Whether a degenerate record dimension is desirable or undesirable
+A dimension of size one is said to be @emph{degenerate}.
+Whether a degenerate record dimension is desirable or not
 depends on the application.
 Often a degenerate @var{time} dimension is useful, e.g., for
 concatentating, but it may cause problems with arithmetic.
@@ -8775,7 +10961,7 @@ Knowing when to use @command{ncwa -a time} rather than the default
 @html
 <a name="mth"></a> <!-- http://nco.sf.net/nco.html#mth -->
 @end html
- at node Intrinsic mathematical methods, Operators precedence and associativity , Examples ncap2, ncap2 netCDF Arithmetic Processor
+ at node Intrinsic mathematical methods, Operator precedence and associativity , Examples ncap2, ncap2 netCDF Arithmetic Processor
 @subsection Intrinsic mathematical methods
 @command{ncap2} supports the standard mathematical functions supplied with
 most operating systems.
@@ -8931,7 +11117,6 @@ Arc-tangent of @var{y/x}
 @math{:Example atan2(1,3) =  0.321689857}
 @end ifinfo
 
-
 @item atanh(x)
 @dfn{Hyperbolic arc-tangent}
 Hyperbolic arc-tangent of @var{x} where @var{x} is specified in radians between 
@@ -9232,13 +11417,13 @@ and are indicated with an asterisk
 @cindex @code{ANSI C}
 @cindex @code{float}
 @cindex precision
- at cindex quadruple precision
- at cindex single precision
- at cindex double precision
+ at cindex quadruple-precision
+ at cindex single-precision
+ at cindex double-precision
 @cindex @code{long double}
 @cindex @code{NC_DOUBLE}
 @footnote{
- at w{ANSI C} compilers are guaranteed to support double precision versions
+ at w{ANSI C} compilers are guaranteed to support double-precision versions
 of these functions.
 These functions normally operate on netCDF variables of type @code{NC_DOUBLE}
 without having to perform intrinsic conversions.
@@ -9275,9 +11460,9 @@ other OSs.}
 @html
 <a name="ncap_opts"></a> <!-- http://nco.sf.net/nco.html#ncap_opts -->
 @end html
- at node Operators precedence and associativity , ID Quoting, Intrinsic mathematical methods, ncap2 netCDF Arithmetic Processor
- at subsection Operators precedence and associativity
-This page lists the @command{ncap} operators in order of precedence (highest to lowest). Their associativity indicates in what order operators of equal precedence in an expression are applied.
+ at node Operator precedence and associativity , ID Quoting, Intrinsic mathematical methods, ncap2 netCDF Arithmetic Processor
+ at subsection Operator precedence and associativity
+This page lists the @command{ncap2} operators in order of precedence (highest to lowest). Their associativity indicates in what order operators of equal precedence in an expression are applied.
 
 @multitable @columnfractions .18 .62 .20
 @headitem Operator @tab Description @tab Associativity
@@ -9314,12 +11499,10 @@ This page lists the @command{ncap} operators in order of precedence (highest to
 @item @code{*= /=} @tab	Multiplication/division assignment
 @end multitable
 
-
-
 @html
 <a name="ncap_nmc"></a> <!-- http://nco.sf.net/nco.html#ncap_nmc -->
 @end html
- at node ID Quoting,  , Operators precedence and associativity , ncap2 netCDF Arithmetic Processor
+ at node ID Quoting,  , Operator precedence and associativity , ncap2 netCDF Arithmetic Processor
 @subsection ID Quoting
 @cindex ID Quoting
 In this section when I refer to a name I mean a variable name, attribute name or a dimension name
@@ -9341,7 +11524,7 @@ LPHDGT:  ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9');
 name:    (LPHDGT|'-'|'+'|'.'|'('|')'|':' )+  ;      
 @end example
 
- at noindent Quote a variable: @*
+ at noindent Quote a variable:@*
 'avg' , '10_+10','set_miss' '+-90field' , '--test'=10.0d@* @* 
 Quote a attribute: @*
 'three@@10', 'set_mss@@+10', '666@@hell', 't1@@+units'="kelvin" @* @*
@@ -9358,8 +11541,7 @@ netcdf-3.6.2 @*
 @example
 /*
  * ( [a-zA-Z]|[0-9]|'_'|'-'|'+'|'.'|'|':'|'@@'|'('|')' )+
- * Verify that a name string is valid
- * CDL syntax, eg, all the characters are
+ * Verify that name string is valid CDL syntax, i.e., all characters are
  * alphanumeric, '-', '_', '+', or '.'.
  * Also permit ':', '@@', '(', or ')' in names for chemists currently making 
  * use of these characters, but don't document until ncgen and ncdump can 
@@ -9367,8 +11549,8 @@ netcdf-3.6.2 @*
  */
 @end example
 
- at noindent netcdf-3.6.3 @*
-netcdf-4.0 Final  2008/08/28 @*
+ at noindent netcdf-3.6.3@*
+netcdf-4.0 Final  2008/08/28@*
 @example
 /*
  * Verify that a name string is valid syntax.  The allowed name
@@ -9402,24 +11584,27 @@ netcdf-4.0 Final  2008/08/28 @*
 SYNTAX
 @example
 ncatted [-a @var{att_dsc}] [-a @dots{}] [-D @var{dbg}] [-h] [--hdr_pad @var{nbr}]
-[-l @var{path}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r]
+[-l @var{path}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all]
 @var{input-file} [[@var{output-file}]]
 @end example
  
 @noindent
 DESCRIPTION
 
+ at cindex @command{ncattget}
 @command{ncatted} edits attributes in a netCDF file.  
 If you are editing attributes then you are spending too much time in the
 world of metadata, and @command{ncatted} was written to get you back out as
 quickly and painlessly as possible.
 @command{ncatted} can @dfn{append}, @dfn{create}, @dfn{delete},
 @dfn{modify}, and @dfn{overwrite} attributes (all explained below).  
-Furthermore, @command{ncatted} allows each editing operation to be applied
+ at command{ncatted} allows each editing operation to be applied
 to every variable in a file.
 This saves time when changing attribute conventions throughout a file. 
-Note that @command{ncatted} interprets character attributes
-(i.e., attributes of type @code{NC_CHAR}) as strings.
+ at command{ncatted} is for @emph{writing} attributes.
+To @emph{read} attribute values in plain text, use @command{ncks -m -M},
+or define something like @command{ncattget} as a shell command
+(@pxref{Filters for @command{ncks}}). 
 
 @cindex @code{history}
 @cindex @code{-h}
@@ -9442,8 +11627,8 @@ concatenated together, e.g., by @command{ncrcat}, without losing any
 information.   
 @xref{Missing Values}, for more information.
 
-The key to mastering @command{ncatted} is understanding the meaning of
-the structure that describes the attribute modification, @var{att_dsc}
+To master @command{ncatted} one must understand the meaning of the
+structure that describes the attribute modification, @var{att_dsc} 
 specified by the required option @samp{-a} or @samp{--attribute}. 
 Each @var{att_dsc} contains five elements, which makes using
 @command{ncatted} somewhat complicated, but powerful.
@@ -9463,7 +11648,7 @@ Variable name.
 @cindex regular expressions
 @cindex pattern matching
 @cindex wildcards
-Regular expressions (@pxref{Subsetting Variables}) are accepted and will 
+Regular expressions (@pxref{Subsetting Files}) are accepted and will 
 select any matching variable names.
 Example: @code{pressure}, @code{'^H2O'}.
 @item mode
@@ -9612,14 +11797,17 @@ type @code{NC_INT64}.
 @dfn{Uint64}.
 Value(s) specified in @var{att_val} will be stored as netCDF intrinsic
 type @code{NC_UINT64}.
- at item sng
+ at item sng, string
 @dfn{String}.
 Value(s) specified in @var{att_val} will be stored as netCDF intrinsic
 type @code{NC_STRING}.
+Note that @command{ncatted} handles type @code{NC_STRING} attributes
+correctly beginning with version 4.3.3 released in July, 2013. 
+Earlier versions fail when asked to handle @code{NC_STRING} attributes.  
 @end table
 @noindent
-The specification of @var{att_type} is optional (and is ignored) in
- at dfn{Delete} mode. 
+In @dfn{Delete} mode the specification of @var{att_type} is optional
+(and is ignored if supplied).
 
 The value of @var{att_val} is what you want to change attribute
 @var{att_nm} to contain.
@@ -9714,6 +11902,8 @@ Because of these context-sensitive rules, one must use @command{ncatted}
 with care in order to store data, rather than text strings, in an 
 attribute of type @code{NC_CHAR}.
 
+Note that @command{ncatted} interprets character attributes
+(i.e., attributes of type @code{NC_CHAR}) as strings.
 @noindent
 @html
 <a name="xmp_ncatted"></a> <!-- http://nco.sf.net/nco.html#xmp_ncatted -->
@@ -9734,6 +11924,30 @@ from whatever it currently is to "temperature":
 ncatted -a long_name,T,o,c,temperature in.nc
 @end example
 
+ at html
+<a name="NaN"></a> <!-- http://nco.sf.net/nco.html#NaN -->
+ at end html
+ at cindex NaN
+ at cindex IEEE NaN
+ at cindex Not-a-Number
+ at acronym{NCO} arithmetic operators will not work as expected on IEEE
+NaN (short for Not-a-Number) and NaN-like numbers such as positive
+infinity and negative infinity.  
+One way to work-around this problem is to change IEEE NaNs to normal
+missing values. 
+As of @acronym{NCO} 4.1.0 (March, 2012), @command{ncatted} works with
+NaNs.
+First set the missing value (i.e., the value of the @code{_FillValue}
+attribute) for the variable(s) in question to the IEEE NaN value. 
+ at example
+ncatted -a _FillValue,,o,f,NaN in.nc
+ at end example
+Then change the missing value from the IEEE NaN value to a normal IEEE
+number, like 1.0e36 (or to whatever the original missing value was).
+ at example
+ncatted -a _FillValue,,m,f,1.0e36 in.nc
+ at end example
+
 Delete all existing @code{units} attributes:
 @example
 ncatted -a units,,d,, in.nc
@@ -9744,6 +11958,7 @@ variables in the file.
 The values of @var{att_type} and @var{att_val} were left blank because
 they are superfluous in @dfn{Delete} mode. 
 
+ at cindex @code{global} attribute
 @cindex global attributes
 @cindex attributes, global
 Delete all attributes associated with the @code{tpt} variable, and
@@ -9780,14 +11995,38 @@ ncatted -O -a quanta,energy,o,s,"010,101,111,121" in.nc
 @cindex regular expressions
 @cindex pattern matching
 @cindex wildcards
-As of @acronym{NCO} 3.9.6 (January, 2009), variable names arguments 
-to @command{ncatted} may contain @dfn{extended regular expressions}.
+As of @acronym{NCO} 3.9.6 (January, 2009), @command{ncatted} accepts
+ at dfn{extended regular expressions} as arguments for variable names.
 Create @code{isotope} attributes for all variables containing @samp{H2O} 
 in their names.
 @example
 ncatted -O -a isotope,'^H2O*',c,s,"18" in.nc
 @end example
-See @ref{Subsetting Variables} for more details.
+See @ref{Subsetting Files} for more details.
+
+ at cindex groups
+As of @acronym{NCO} 4.3.8 (November, 2013), @command{ncatted} 
+accepts full and partial group paths in names of attributes,
+variables, dimensions, and groups.
+ at c ncks -m -v lon ~/in_grp.nc
+ at example
+# Overwrite units attribute of specific 'lon' variable
+ncatted -O -a units,/g1/lon,o,c,"degrees_west" in_grp.nc
+# Overwrite units attribute of all 'lon' variables
+ncatted -O -a units,lon,o,c,"degrees_west" in_grp.nc
+# Delete units attribute of all 'lon' variables
+ncatted -O -a units,lon,d,, in_grp.nc
+# Overwrite units attribute with new type for specific 'lon' variable
+ncatted -O -a units,/g1/lon,o,sng,"degrees_west" in_grp.nc
+# Add new_att attribute to all variables
+ncatted -O -a new_att,,c,sng,"new variable attribute" in_grp.nc
+# Add new_grp_att group attribute to all groups
+ncatted -O -a new_grp_att,group,c,sng,"new group attribute" in_grp.nc
+# Add new_grp_att group attribute to single group
+ncatted -O -a g1_grp_att,g1,c,sng,"new group attribute" in_grp.nc
+# Add new_glb_att global attribute to root group
+ncatted -O -a new_glb_att,global,c,sng,"new global attribute" in_grp.nc
+ at end example
 
 Demonstrate input of C-language escape sequences (e.g., @code{\n}) and
 other special characters (e.g., @code{\"}) 
@@ -9813,7 +12052,7 @@ omitted in batch scripts.
 <a name="ncmultiply"></a> <!-- http://nco.sf.net/nco.html#ncmultiply -->
 <a name="ncdivide"></a> <!-- http://nco.sf.net/nco.html#ncdivide -->
 @end html
- at node ncbo netCDF Binary Operator, ncea netCDF Ensemble Averager, ncatted netCDF Attribute Editor, Operator Reference Manual
+ at node ncbo netCDF Binary Operator, nces netCDF Ensemble Statistics, ncatted netCDF Attribute Editor, Operator Reference Manual
 @section @command{ncbo} netCDF Binary Operator
 @findex ncbo
 @findex ncdiff
@@ -9835,11 +12074,13 @@ omitted in batch scripts.
 @noindent
 SYNTAX
 @example 
-ncbo [-3] [-4] [-6] [-A] [-C] [-c]
+ncbo [-3] [-4] [-6] [-7] [-A] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h]
-[-L @var{dfl_lvl}] [-l @var{path}] [-O] [-o @var{file_3}] [-p @var{path}] [-R] [-r]
-[-t @var{thr_nbr}] [-v @var{var}[, at dots{}]] [-X ...] [-x] [-y @var{op_typ}]
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] 
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdr_pad @var{nbr}]
+[-L @var{dfl_lvl}] [-l @var{path}] [--no_tmp_fl]
+[-O] [-o @var{file_3}] [-p @var{path}] [-R] [-r] [--ram_all]
+[-t @var{thr_nbr}] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x] [-y @var{op_typ}]
 @var{file_1} @var{file_2} [@var{file_3}]
 @end example
 
@@ -9971,22 +12212,47 @@ For scripts, we recommend using the full invocation (e.g.,
 @samp{ncbo --op_typ=add}).
 This ensures portability of scripts between users and sites.
 
+ at html
+<a name="brd_var"></a> <!-- http://nco.sf.net/nco.html#brd_var -->
+ at end html
+ at cindex broadcasting variables
+ at cindex rank
 @command{ncbo} operates (e.g., adds) variables in @var{file_2} with the
 corresponding variables (those with the same name) in @var{file_1} and
 stores the results in @var{file_3}. 
 @cindex broadcasting variables
-Variables in @var{file_2} are @dfn{broadcast} to conform to the
-corresponding variable in @var{file_1} if necessary, but the reverse is
-not true.
+Variables in @var{file_1} or @var{file_2} are @dfn{broadcast} to conform
+to the corresponding variable in the other input file if
+necessary at footnote{
+Prior to @acronym{NCO} version 4.3.1 (May, 2013), @command{ncbo}
+would only broadcast variables in @var{file_2} to conform to
+ at var{file_1}. 
+Variables in @var{file_1} were @emph{never} broadcast to conform to the 
+dimensions in @var{file_2}.}. 
+Now @command{ncbo} is completely symmetric with respect to @var{file_1}
+and @var{file_2}, i.e., 
+ at set flg
+ at tex
+$\rm{file}_1 - \rm{file}_2 = -(\rm{file}_2-\rm{file}_1)$.
+ at clear flg
+ at end tex
+ at ifinfo
+ at math{@var{file_1} - @var{file_2} = - (@var{file_2} - @var{file_1}}.
+ at clear flg
+ at end ifinfo
+ at ifset flg
+ at c texi2html does not like @math{}
+ at var{file_1} - @var{file_2} = -(@var{file_2} - @var{file_1}.
+ at clear flg
+ at end ifset
+
 Broadcasting a variable means creating data in non-existing dimensions
-from the data in existing dimensions.
+by copying data in existing dimensions.
 For example, a two dimensional variable in @var{file_2} can be
 subtracted from a four, three, or two (but not one or zero)
 dimensional variable (of the same name) in @code{file_1}. 
 @cindex anomalies
 This functionality allows the user to compute anomalies from the mean.
-Note that variables in @var{file_1} are @emph{not} broadcast to conform
-to the dimensions in @var{file_2}. 
 In the future, we will broadcast variables in @var{file_1}, if necessary
 to conform to their counterparts in @var{file_2}.
 @c TODO #268
@@ -9994,7 +12260,7 @@ to conform to their counterparts in @var{file_2}.
 Thus, presently, the number of dimensions, or @dfn{rank}, of any
 processed variable in @var{file_1} must be greater than or equal to the
 rank of the same variable in @var{file_2}. 
-Furthermore, the size of all dimensions common to both @var{file_1} and
+Of course, the size of all dimensions common to both @var{file_1} and
 @var{file_2} must be equal. 
 
 When computing anomalies from the mean it is often the case that
@@ -10026,10 +12292,9 @@ To prevent this from occuring, use @command{ncwa} to remove the
 See the example below.
 
 @cindex coordinate variable 
- at cindex @code{NC_BYTE}
 @cindex @code{NC_CHAR}
 @command{ncbo} never operates on coordinate variables or variables
-of type @code{NC_CHAR} or @code{NC_BYTE}. 
+of type @code{NC_CHAR} or @code{NC_STRING}. 
 This ensures that coordinates like (e.g., latitude and longitude) are 
 physically meaningful in the output file, @var{file_3}. 
 This behavior is hardcoded.
@@ -10043,6 +12308,27 @@ Interpolator}) is designed for file interpolation.
 As such, it also performs file subtraction, addition, multiplication,
 albeit in a more convoluted way than @command{ncbo}.
 
+ at html
+<a name="brd_grp"></a> <!-- http://nco.sf.net/nco.html#brd_grp -->
+<a name="gb"></a> <!-- http://nco.sf.net/nco.html#gb -->
+<a name="GB"></a> <!-- http://nco.sf.net/nco.html#GB -->
+ at end html
+ at cindex broadcasting groups
+Beginning with @acronym{NCO} version 4.3.1 (May, 2013), @command{ncbo} 
+supports @dfn{group broadcasting}.
+Group broadcasting means processing data based on group patterns in the
+input file(s) and automatically transferring or transforming groups to
+the output file. 
+Consider the case where @var{file_1} contains multiple groups each with
+the variable @var{v1}, while @var{file_2} contains @var{v1} only in its 
+top-level (i.e., root) group.
+Then @command{ncbo} will replicate the group structure of @var{file_1}
+in the output file, @var{file_3}.
+Each group in @var{file_3} contains the output of the corresponding
+group in @var{file_1} operating on the data in the single group in
+ at var{file_2}. 
+An example is provided below.
+
 @noindent
 @html
 <a name="xmp_ncbo"></a> <!-- http://nco.sf.net/nco.html#xmp_ncbo -->
@@ -10054,10 +12340,16 @@ Say files @file{85_0112.nc} and @file{86_0112.nc} each contain 12 months
 of data.
 Compute the change in the monthly averages from 1985 to 1986:
 @example
-ncbo -op_typ=sub 86_0112.nc 85_0112.nc 86m85_0112.nc
+ncbo   86_0112.nc 85_0112.nc 86m85_0112.nc
 ncdiff 86_0112.nc 85_0112.nc 86m85_0112.nc
+ncbo --op_typ=sub 86_0112.nc 85_0112.nc 86m85_0112.nc
+ncbo --op_typ='-' 86_0112.nc 85_0112.nc 86m85_0112.nc
 @end example
+ at noindent
+These commands are all different ways of expressing the same thing.
 
+ at cindex broadcasting
+ at cindex rank
 The following examples demonstrate the broadcasting feature of
 @command{ncbo}.  
 Say we wish to compute the monthly anomalies of @code{T} from the yearly
@@ -10104,6 +12396,34 @@ This examples works assuming @file{85_0112.nc} has dimensions
 @code{time} and @code{lon}, and that @file{85_x.nc} has no @code{time}
 or @code{lon} dimension.
 
+ at cindex broadcasting groups
+Group broadcasting simplifies evaluation of multiple models against
+observations.
+Consider the input file @file{cmip5.nc} which contains multiple
+top-level groups @code{cesm}, @code{ecmwf}, and @code{giss}, each of
+which contains the surface air temperature field @code{tas}.
+We wish to compare these models to observations stored in @file{obs.nc} 
+which contains @code{tas} only in its top-level (i.e., root) group.
+It is often the case that many models and/or model simulations exist,
+whereas only one observational dataset does.
+We evaluate the models and obtain the bias (difference) between models
+and observations by subtracting @file{obs.nc} from @file{cmip5.nc}.
+Then @command{ncbo} ``broadcasts'' (i.e., replicates) the observational
+data to match the group structure of @file{cmip5.nc}, subtracts,
+and then stores the results in the output file, @file{bias.nc}
+which has the same group structure as @file{cmip5.nc}.
+ at example
+% ncbo -O cmip5.nc obs.nc bias.nc
+% ncks -H -v tas -d time,3 bias.nc
+/cesm/tas
+time[3] tas[3]=-1 
+/ecmwf/tas
+time[3] tas[3]=0 
+/giss/tas
+time[3] tas[3]=1 
+ at end example
+ at noindent
+
 @html
 <a name="csn_anm"></a> <!-- http://nco.sf.net/nco.html#csn_anm -->
 @end html
@@ -10164,111 +12484,169 @@ ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc
 
 @page
 @html
+<a name="nces"></a> <!-- http://nco.sf.net/nco.html#nces -->
 <a name="ncea"></a> <!-- http://nco.sf.net/nco.html#ncea -->
 @end html
- at node ncea netCDF Ensemble Averager, ncecat netCDF Ensemble Concatenator, ncbo netCDF Binary Operator, Operator Reference Manual
- at section @command{ncea} netCDF Ensemble Averager
+ at node nces netCDF Ensemble Statistics, ncecat netCDF Ensemble Concatenator, ncbo netCDF Binary Operator, Operator Reference Manual
+ at section @command{nces} netCDF Ensemble Statistics
 @cindex averaging data
 @cindex ensemble average
- at findex ncea
+ at findex nces
 
 @noindent
 SYNTAX
 @example
-ncea [-3] [-4] [-6] [-A] [-C] [-c]
+nces [-3] [-4] [-6] [-7] [-A] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-L @var{dfl_lvl}] [-l @var{path}] 
-[-n @var{loop}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] 
-[-t @var{thr_nbr}] [-v @var{var}[, at dots{}]] [-X ...] [-x] [-y @var{op_typ}]
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F]
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdf] [--hdr_pad @var{nbr}] 
+[-L @var{dfl_lvl}] [-l @var{path}] [-n @var{loop}] [--no_tmp_fl] [--nsm_fl|grp] [--nsm_sfx sfx]
+[-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all] [--rth_dbl|flt]
+[-t @var{thr_nbr}] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x] [-y @var{op_typ}]
 [@var{input-files}] [@var{output-file}]
 @end example
 
 @noindent
 DESCRIPTION
 
- at command{ncea} performs gridpoint averages of variables across an
-arbitrary number (an @dfn{ensemble}) of @var{input-files}, with each
-file receiving an equal weight in the average.
+ at command{nces} performs gridpoint statistics on variables across an
+arbitrary number (an @dfn{ensemble}) of @var{input-files} and/or of
+input groups within each file.
+Each file (or group) receives an equal weight.
+ at command{nces} was formerly (until @acronym{NCO} version 4.3.9,
+released December, 2013) known as @command{ncea} (netCDF Ensemble
+Averager)@footnote{
+The old ncea command was deprecated in @acronym{NCO} version 4.3.9,  
+released December, 2013.
+ at acronym{NCO} will attempt to maintain back-compatibility and work
+as expected with invocations of @command{ncea} for as long as possible.
+Please replace @command{ncea} by @command{nces} in all future work.}.
 @cindex ensemble
- at command{ncea} averages entire files, and weights each file evenly.
-This is distinct from @command{ncra}, which only averages over the
-record dimension (e.g., @var{time}), and weights each record in the
-record dimension evenly,  
+For example, @command{nces} will average a set of files or groups,
+weighting each file or group evenly. 
+This is distinct from @command{ncra}, which performs statistics only
+over the record dimension(s) (e.g., @var{time}), and weights each record 
+in each record dimension evenly.
+
+The file or group is the logical unit of organization for the results of
+many scientific studies.
+Often one wishes to generate a file or group which is the statistical
+product (e.g., average) of many separate files or groups. 
+This may be to reduce statistical noise by combining the results of a
+large number of experiments, or it may simply be a step in a procedure 
+whose goal is to compute anomalies from a mean state. 
+In any case, when one desires to generate a file whose statistical
+properties are equally influenced by all the inputs, then @command{nces}
+is the operator to use. 
 
 Variables in the @var{output-file} are the same size as the variable
-in each of the @var{input-files}, and all @var{input-files} must be
-the same size.
+in each input file or group, and each input file or group must be the
+same size. 
 @cindex record dimension
 @cindex hyperslab
-The only exception is that @command{ncea} allows files to differ in
+The only exception is that @command{nces} allows files to differ in
 the record dimension size if the requested record hyperslab
 (@pxref{Hyperslabs}) resolves to the same size for all files. 
- at command{ncea} recomputes the record dimension hyperslab limits for
+ at command{nces} recomputes the record dimension hyperslab limits for
 each input file so that coordinate limits may be used to select equal
 length timeseries from unequal length files.
- at cindex IPCC
- at cindex AR4
- at cindex CMIP
+ at cindex @acronym{IPCC}
+ at cindex @acronym{AR4}
+ at cindex @acronym{CMIP}
 This simplifies analysis of unequal length timeseries from simulation
-ensembles (e.g., the CMIP IPCC AR4 archive).  
+ensembles (e.g., the @acronym{CMIP3} @acronym{IPCC} @acronym{AR4}
+archive).   
 
- at cindex operation types
- at command{ncea} @emph{always averages} coordinate variables regardless of 
-the arithmetic operation type performed on the non-coordinate variables. 
-(@pxref{Operation Types}). 
- at cindex record dimension
-All dimensions, including the record dimension, are treated identically
-and preserved in the @var{output-file}.
-
- at xref{Averaging vs. Concatenating}, for a description of the
-distinctions between the various averagers and concatenators. 
+ at html
+<a name="nsm_fl"></a> <!-- http://nco.sf.net/nco.html#nsm_fl -->
+<a name="nsm_grp"></a> <!-- http://nco.sf.net/nco.html#nsm_grp -->
+<a name="nsm_sfx"></a> <!-- http://nco.sf.net/nco.html#nsm_sfx -->
+ at end html
+ at cindex @code{--nsm_fl}
+ at cindex @code{--nsm_grp}
+ at cindex @code{--ensemble_file}
+ at cindex @code{--ensemble_group}
+ at cindex @code{--nsm_sfx}
+ at cindex @code{--ensemble_suffix}
+ at command{nces} works in one of two modes, file ensembles 
+or group ensembles.
+File ensembles are the default (equivalent to the old @command{ncea}) 
+and may also be explicitly specified by the @samp{--nsm_fl} or
+ at samp{--ensemble_file} switches.
+To perform statistics on ensembles of groups, a newer feature, use
+ at samp{--nsm_grp} or @samp{--ensemble_group}.
+Members of a group ensemble are groups that share the same structure,
+parent group, and nesting level. 
+Members must be @dfn{leaf groups}, i.e., not contain any sub-groups.
+Their contents usually have different values because they are
+realizations of replicated experiments.  
+In group ensemble mode @command{nces} computes the statistics across 
+the ensemble, which may span multiple input files. 
+Files may contain members of multiple, distinct ensembles. 
+However, all ensembles must have at least one member in the first input 
+file. 
+Group ensembles behave as an unlimited dimension of datasets: 
+they may contain an arbitrary and extensible number of realizations in
+each file, and may be composed from multiple files. 
+
+Output statistics in group ensemble mode are stored in the parent group
+by default. 
+If the ensemble members are @file{/cesm/cesm_01} and
+ at file{/cesm/cesm_02}, then the computed statistic will be in
+ at file{/cesm} in the output file.  
+The @samp{--nsm_sfx} option instructs nces to instead store output in  
+a new child group of the parent created by attaching the suffix
+to the parent group's name, e.g., @samp{--nsm_sfx='_avg'} would store
+results in the output group @file{/cesm/cesm_avg}:
+ at example
+nces --nsm_grp                  mdl1.nc mdl2.nc mdl3.nc out.nc
+nces --nsm_grp --nsm_sfx='_avg' mdl1.nc mdl2.nc mdl3.nc out.nc
+ at end example
+
+ at xref{Statistics vs. Concatenation}, for a description of the
+distinctions between the statistics tools and concatenators. 
 @cindex multi-file operators
 @cindex standard input
 @cindex @code{stdin}
-As a multi-file operator, @command{ncea} will read the list of
+As a multi-file operator, @command{nces} will read the list of
 @var{input-files} from @code{stdin} if they are not specified 
 as positional arguments on the command line 
 (@pxref{Large Numbers of Files}).
 
-The file is the logical unit of organization for the results of many
-scientific studies.
-Often one wishes to generate a file which is the gridpoint average of
-many separate files. 
-This may be to reduce statistical noise by combining the results of a
-large number of experiments, or it may simply be a step in a procedure 
-whose goal is to compute anomalies from a mean state. 
-In any case, when one desires to generate a file whose properties are
-the mean of all the input files, then @command{ncea} is the operator to 
-use. 
-
- at command{ncea} only allows coordinate variables to be processed by
-the linear average, minimum, and maximum operations.
- at command{ncea} will return the linear average of coordinates unless
+ at command{nces} only allows coordinate variables to be processed by
+the linear average, minimum, and maximum operations, regardless of 
+the arithmetic operation type performed on the non-coordinate variables.   
+(@pxref{Operation Types}). 
+ at command{nces} will return the linear average of coordinates unless
 extrema are explicitly requested.
 Other requested operations (e.g., square-root, RMS) are applied only
 to non-coordinate variables.
 In these cases the linear average of the coordinate variable will be
 returned.
+ at cindex record dimension
+All dimensions, including the record dimension, are treated identically
+and preserved in the @var{output-file}.
 
 @noindent
 @html
 <a name="xmp_ncea"></a> <!-- http://nco.sf.net/nco.html#xmp_ncea -->
+<a name="xmp_nces"></a> <!-- http://nco.sf.net/nco.html#xmp_nces -->
 @end html
 EXAMPLES
 
 Consider a model experiment which generated five realizations of one
 year of data, say 1985.
-You can imagine that the experimenter slightly perturbs the
-initial conditions of the problem before generating each new solution.  
+Imagine that the experimenter slightly perturbs the initial conditions
+of the problem before generating each new solution.   
 Assume each file contains all twelve months (a seasonal cycle) of data
 and we want to produce a single file containing the ensemble average
 (mean) seasonal cycle.  
-Here the numeric filename suffix denotes the experiment number
+Here the numeric filename suffix denotes the realization number
 (@emph{not} the month):
 @example
-ncea 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-ncea 85_0[1-5].nc 85.nc
-ncea -n 5,2,1 85_01.nc 85.nc
+nces 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
+nces 85_0[1-5].nc 85.nc
+nces -n 5,2,1 85_01.nc 85.nc
 @end example
 @noindent
 These three commands produce identical answers.
@@ -10283,7 +12661,7 @@ In the previous example, the user could have obtained the ensemble
 average values in a particular spatio-temporal region by adding a 
 hyperslab argument to the command, e.g.,
 @example
-ncea -d time,0,2 -d lat,-23.5,23.5 85_??.nc 85.nc
+nces -d time,0,2 -d lat,-23.5,23.5 85_??.nc 85.nc
 @end example
 @noindent
 In this case the output file would contain only three slices of data in
@@ -10292,11 +12670,33 @@ These three slices are the average of the first three slices from the
 input files.
 Additionally, only data inside the tropics is included.
 
+As of @acronym{NCO} version 4.3.9 (released December, 2013)
+ at command{nces} also works with groups (rather than files) as the
+fundamental unit of the ensemble.
+Consider two ensembles, @code{/ecmwf} and @code{/cesm} stored across
+three input files @file{mdl1.nc}, @file{mdl2.nc}, and @file{mdl3.nc}.
+Ensemble members would be leaf groups with names like @code{/ecmwf/01},
+ at code{/ecmwf/02} etc. and @code{/cesm/01}, @code{/cesm/02}, etc.
+These commands average both ensembles: 
+ at example
+nces --nsm_grp mdl1.nc mdl2.nc mdl3.nc out.nc
+nces --nsm_grp --nsm_sfx='_min' --op_typ=min -n 3,1,1 mdl1.nc out.nc
+nces --nsm_grp -g cesm -v tas -d time,0,3 -n 3,1,1 mdl1.nc out.nc
+ at end example
+The first command stores averages in the output groups @file{/cesm} and 
+ at file{/ecmwf}, while the second stores minima in the output groups
+ at file{/cesm/cesm_min} and @file{/ecmwf/ecmwf_min}:
+The third command demonstrates that sub-setting and hyperslabbing work
+as expected.
+Note that each input file may contain different numbers of members
+of each ensemble, as long as all distinct ensembles contain at least one
+member in the first file.
+
 @page
 @html
 <a name="ncecat"></a> <!-- http://nco.sf.net/nco.html#ncecat -->
 @end html
- at node ncecat netCDF Ensemble Concatenator, ncflint netCDF File Interpolator, ncea netCDF Ensemble Averager, Operator Reference Manual
+ at node ncecat netCDF Ensemble Concatenator, ncflint netCDF File Interpolator, nces netCDF Ensemble Statistics, Operator Reference Manual
 @section @command{ncecat} netCDF Ensemble Concatenator
 @cindex concatenation
 @cindex ensemble concatenation
@@ -10305,23 +12705,40 @@ Additionally, only data inside the tropics is included.
 @noindent
 SYNTAX
 @example
-ncecat [-3] [-4] [-6] [-A] [-C] [-c]
+ncecat [-3] [-4] [-6] [-7] [-A] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-L @var{dfl_lvl}] [-l @var{path}] 
-[-M] [-n @var{loop}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] 
-[-t @var{thr_nbr}] [-u @var{ulm_nm}] [-v @var{var}[, at dots{}]] [-X ...] [-x] 
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F]
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [--gag] [-h] [--hdf] [--hdr_pad @var{nbr}]
+[-L @var{dfl_lvl}] [-l @var{path}] [-M] [--md5_digest] [--mrd] [-n @var{loop}] [--no_tmp_fl] 
+[-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all] 
+[-t @var{thr_nbr}] [-u @var{ulm_nm}] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x] 
 [@var{input-files}] [@var{output-file}]
 @end example
 
 @noindent
 DESCRIPTION
 
- at command{ncecat} concatenates an arbitrary number of input files into a 
-single output file.
-The @var{input-files} are stored consecutively as records in 
- at var{output-file}.
-Each variable (except coordinate variables) in each input file becomes
-one record in the same variable in the output file. 
+ at command{ncecat} aggregates an arbitrary number of input files into a 
+single output file using using one of two methods.
+ at dfn{Record AGgregation} (@acronym{RAG}), the traditional method employed on
+netCDF3 files and still the default method, stores @var{input-files} as
+consecutive records in the @var{output-file}.
+ at dfn{Group AGgregation} (@acronym{GAG}) stores @var{input-files} as top-level
+groups in the netCDF4 @var{output-file}.
+Record Aggregation (@acronym{RAG}) makes numerous assumptions about the structure
+of input files and Group Aggregation (@acronym{GAG}) makes none.
+Both methods are described in detail below.
+Since @command{ncecat} aggregates all the contents of the input files,
+it can easily produce large output files so it is often helpful to invoke
+subsetting simultaneously (@pxref{Subsetting Files}).
+
+ at html
+<a name="rag"></a> <!-- http://nco.sf.net/nco.html#rag -->
+ at end html
+ at cindex record aggregation
+ at cindex @acronym{RAG}
+ at acronym{RAG} makes each variable (except coordinate variables) in each input file 
+into a single record of the same variable in the output file. 
 Coordinate variables are not concatenated, they are instead simply
 copied from the first input file to the @var{output-file}.
 All @var{input-files} must contain all extracted variables (or else
@@ -10329,14 +12746,16 @@ there would be "gaps" in the output file).
 
 A new record dimension is the glue which binds the input file data
 together. 
-The new record dimension name is, by default, ``record''.
+The new record dimension is defined in the root group of the output file
+so it is visible to all sub-groups.
+Its name is, by default, ``record''.
 @cindex unlimited dimension
 @cindex record dimension
 @cindex @samp{-u @var{ulm_nm}}
 @cindex @samp{--ulm_nm @var{ulm_nm}}
 @cindex @samp{--rcd_nm @var{ulm_nm}}
-Its name can be specified with the @samp{-u @var{ulm_nm}} short
-option (or the @samp{--ulm_nm} or @samp{rcd_nm} long options).
+This default name can be overridden with the @samp{-u @var{ulm_nm}}
+short option (or the @samp{--ulm_nm} or @samp{rcd_nm} long options).
 
 Each extracted variable must be constant in size and rank across all
 @var{input-files}. 
@@ -10345,14 +12764,63 @@ Each extracted variable must be constant in size and rank across all
 The only exception is that @command{ncecat} allows files to differ in
 the record dimension size if the requested record hyperslab
 (@pxref{Hyperslabs}) resolves to the same size for all files. 
- at cindex IPCC
+ at cindex @acronym{CMIP}
 This allows easier gluing/averaging of unequal length timeseries from 
-simulation ensembles (e.g., the IPCC AR4 archive). 
+simulation ensembles (e.g., the @acronym{CMIP} rchive). 
 
-Thus, the @var{output-file} size is the sum of the sizes of the
-extracted variables in the input files. 
- at xref{Averaging vs. Concatenating}, for a description of the
-distinctions between the various averagers and concatenators. 
+ at cindex fixed dimension
+ at cindex fix record dimension
+Classic (i.e., all netCDF3 and @code{NETCDF4_CLASSIC}) output files
+can contain only one record dimension.
+ at command{ncecat} makes room for the new glue record dimension by
+changing the pre-existing record dimension, if any, in the input files
+into a fixed dimension in the output file. 
+netCDF4 output files may contain any number of record dimensions, so
+ at command{ncecat} need not and does not alter the record dimensions,
+if any, of the input files as it copies them to the output file. 
+
+ at html
+<a name="gag"></a> <!-- http://nco.sf.net/nco.html#gag -->
+ at end html
+ at cindex group aggregation
+ at cindex @acronym{GAG}
+ at dfn{Group AGgregation} (@acronym{GAG}) stores @var{input-files} as
+top-level groups in the @var{output-file}.
+No assumption is made about the size or shape or type of a given 
+object (variable or dimension or group) in the input file.
+The entire contents of the extracted portion of each input file
+is placed in its own top-level group in @var{output-file}, which
+is automatically made as a netCDF4-format file.
+
+ at cindex @option{--gag}
+ at acronym{GAG} has two methods to specify group names for the
+ at var{output-file}.    
+The @samp{-G} option, or its long-option equivalent @samp{--gpe},
+takes as argument a group path editing description @var{gpe_dsc} of
+where to place the results.
+Each input file needs a distinct output group name to avoid namespace
+conflicts in the @var{output-file}. 
+Hence @command{ncecat} automatically creates unique output group names
+based on either the input filenames or the @var{gpe_dsc} arguments.
+When the user provides @var{gpe_dsc} (i.e., with @samp{-G}), then the
+output groups are formed by enumerating sequential two-digit numeric
+suffixes starting with zero, and appending them to the specified group
+path (@pxref{Group Path Editing}).
+When @var{gpe_dsc} is not provided (i.e., user requests @acronym{GAG} with
+ at samp{--gag} instead of @samp{-G}), then @command{ncecat} forms the
+output groups by stripping the input file name of any type-suffix
+(e.g., @code{.nc}), and all but the final component of the full
+filename. 
+ at example
+ncecat --gag 85.nc 86.nc 87.nc 8587.nc # Output groups 85, 86, 87
+ncecat -G 85_ a.nc b.nc c.nc 8589.nc # Output groups 85_00, 85_01, 85_02
+ncecat -G 85/ a.nc b.nc c.nc 8589.nc # Output groups 85/00, 85/01, 85/02
+ at end example
+
+With both @acronym{RAG} and @acronym{GAG} the @var{output-file} size is
+the sum of the sizes of the extracted variables in the input files. 
+ at xref{Statistics vs. Concatenation}, for a description of the
+distinctions between the various statistics tools and concatenators. 
 @cindex multi-file operators
 @cindex standard input
 @cindex @code{stdin}
@@ -10362,12 +12830,12 @@ as positional arguments on the command line
 (@pxref{Large Numbers of Files}).
 
 @cindex @code{-M}
- at cindex @code{--glb_mtd_spr}
+ at cindex @code{--glb_mtd_spp}
 @cindex metadata, global 
-Turn off global metadata copying.
-By default all @acronym{NCO} operators copy the global metadata of the 
-first input file into @var{output-file}.  
-This helps preserve the provenance of the output data.
+Suppress global metadata copying.
+By default @acronym{NCO}'s multi-file operators copy the global metadata
+from the first input file into @var{output-file}.  
+This helps to preserve the provenance of the output data.
 However, the use of metadata is burgeoning and is not uncommon to
 encounter files with excessive amounts of extraneous metadata.
 Extracting small bits of data from such files leads to output files
@@ -10375,7 +12843,7 @@ which are much larger than necessary due to the automatically copied
 metadata.
 @command{ncecat} supports turning off the default copying of global
 metadata via the @samp{-M} switch (or its long option equivalents,
- at samp{--glb_mtd_spr} and @samp{--global_metadata_suppress}). 
+ at samp{--glb_mtd_spp} and @samp{--global_metadata_suppress}). 
 
 @cindex climate model
 Consider five realizations, @file{85a.nc}, @file{85b.nc}, 
@@ -10457,12 +12925,17 @@ such descriptive coordinates are used.
 <a name="dmn_rcd_rm"></a> <!-- http://nco.sf.net/nco.html#dmn_rcd_rm -->
 @end html
 @cindex record dimension
+ at cindex fixed dimension
+ at cindex fix record dimension
+ at cindex @code{--mk_rec_dmn @var{dim}}
 Consider a file with an existing record dimension named @code{time}. 
 and suppose the user wishes to convert @code{time} from a record
 dimension to a non-record dimension.
 This may be useful, for example, when the user has another use for the
 record variable.
-The procedure is to use @command{ncecat} followed by @command{ncwa}:
+The simplest method is to use @samp{ncks --fix_rec_dmn} but another
+possibility is to use @command{ncecat} followed by 
+ at command{ncwa}: 
 @cindex degenerate dimension
 @example
 ncecat in.nc out.nc # Convert time to non-record dimension
@@ -10489,11 +12962,13 @@ of changing variable dimensionality, including the record dimension.
 @noindent
 SYNTAX
 @example
-ncflint [-3] [-4] [-6] [-A] [-C] [-c]
+ncflint [-3] [-4] [-6] [-7] [-A] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-i @var{var}, at var{val3}]
-[-L @var{dfl_lvl}] [-l @var{path}] [-O] [-o @var{file_3}] [-p @var{path}] [-R] [-r] 
-[-t @var{thr_nbr}] [-v @var{var}[, at dots{}]] [-w @var{wgt1}[, at var{wgt2}]] [-X ...] [-x]
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]
+[-F] [--fix_rec_crd] [-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdr_pad @var{nbr}]
+[-i @var{var}, at var{val3}] [-L @var{dfl_lvl}] [-l @var{path}] [--no_tmp_fl] 
+[-O] [-o @var{file_3}] [-p @var{path}] [-R] [-r] [--ram_all] 
+[-t @var{thr_nbr}] [--unn] [-v @var{var}[, at dots{}]] [-w @var{wgt1}[, at var{wgt2}]] [-X ...] [-x]
 @var{file_1} @var{file_2} [@var{file_3}]
 @end example
 
@@ -10545,7 +13020,7 @@ file by a constant.
 The second method of using @command{ncflint} is to specify the
 interpolation option @w{with @samp{-i}} (or with the @samp{--ntp} or 
 @samp{--interpolate} long options). 
-This is really the inverse of the first method in the following sense. 
+This is the inverse of the first method in the following sense: 
 When the user specifies the weights directly, @command{ncflint} has no
 work to do besides multiplying the input values by their respective
 weights and adding the results together to produce the output values.  
@@ -10594,9 +13069,21 @@ Attempting to specify both @samp{-i} and @samp{-w} methods in the same
 command is an error. 
 
 @command{ncflint} does not interpolate variables of type @code{NC_CHAR}
-and @code{NC_BYTE}. 
+and @code{NC_STRING}. 
 This behavior is hardcoded.
 
+By default @command{ncflint} interpolates or multiplies record
+coordinate variables (e.g., time is often stored as a record coordinate) 
+but not other coordinate variables (e.g., latitude and longitude). 
+This is because @command{ncflint} is often used to time-interpolate
+between existing files, but is rarely used to spatially interpolate.
+Sometimes however, users wish to multiply entire files by a constant
+that does not multiply any coordinate variables.
+The @samp{--fix_rec_crd} switch was implemented for this purpose
+in @acronym{NCO} version 4.2.6 (March, 2013).
+It prevents @command{ncflint} from multiplying or interpolating any
+coordinate variables, including record coordinate variables. 
+
 @cindex missing values
 @cindex @code{_FillValue}
 Depending on your intuition, @command{ncflint} may treat missing values
@@ -10685,6 +13172,18 @@ ncflint -w 3,-2 85.nc 85.nc tst.nc
 This is an example of a null operation, so @file{tst.nc} should be
 identical (within machine precision) to @file{85.nc}.
 
+ at cindex multiplication
+ at cindex file multiplication
+ at cindex scaling
+Multiply all the variables except the coordinate variables in the file
+ at file{emissions.nc} by @w{by 0.8}:
+ at example
+ncflint --fix_rec_crd -w 0.8,0.0 emissions.nc emissions.nc scaled_emissions.nc
+ at end example
+ at noindent
+The use of @samp{--fix_rec_crd} ensures, e.g., that the @code{time}
+coordinate, if any, is not scaled (i.e., multiplied).
+
 Add @file{85.nc} to @file{86.nc} to obtain @file{85p86.nc},
 then subtract @file{86.nc} from @file{85.nc} to obtain @file{85m86.nc} 
 @example
@@ -10725,12 +13224,14 @@ ncatted -a units,prs_sfc,o,c,millibar out.nc
 @noindent
 SYNTAX
 @example
-ncks [-3] [-4] [-6] [-A] [-a] [-B] [-b @var{binary-file}] [-C] [-c] 
+ncks [-3] [-4] [-5] [-6] [-7] [-A] [-a] [-b @var{binary-file}] [-C] [-c] [--cdl]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [--fix_rec_dmn]
-[-F] [-H] [-h] [--hdr_pad @var{nbr}] [-L @var{dfl_lvl}] [-l @var{path}] [-M] [-m] [--mk_rec_dmn @var{dim}]
-[-O] [-o @var{output-file}] [-P] [-p @var{path}] [-Q] [-q] [-R] [-r] 
-[-s @var{format}] [-u] [-v @var{var}[, at dots{}]] [-X ...] [-x] 
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [--fix_rec_dmn @var{dim}] 
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-H] [-h] [--hdr_pad @var{nbr}]
+[-L @var{dfl_lvl}] [-l @var{path}] [-M] [-m] [--mk_rec_dmn @var{dim}] [--md5_digest]
+[--no_blank] [--no_tmp_fl] [-O] [-o @var{output-file}] [-P] [-p @var{path}] 
+[-Q] [-q] [-R] [-r] [--ram_all] [-s @var{format}] 
+[-u] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x] [--xml]
 @var{input-file} [[@var{output-file}]]
 @end example
 
@@ -10738,25 +13239,32 @@ ncks [-3] [-4] [-6] [-A] [-a] [-B] [-b @var{binary-file}] [-C] [-c]
 DESCRIPTION
 
 @cindex @command{ncextr}
- at command{ncks} combines selected features of @command{ncdump},
- at command{ncextr}, and the nccut and ncpaste specifications into one
-versatile utility. 
+The nickname ``kitchen sink'' is a catch-all because @command{ncks}
+combines most features of @command{ncdump} and @command{nccopy} with
+extra features to extract, hyperslab, multi-slab, sub-set, and translate  
+into one versatile utility. 
 @command{ncks} extracts a subset of the data from @var{input-file} and
-prints it as @acronym{ASCII} text to @file{stdout}, writes it in
-flat binary format to @file{binary-file}, and writes (or pastes) it in
-netCDF format to @var{output-file}.
-
- at command{ncks} will print netCDF data in @acronym{ASCII} format to
- at code{stdout}, like @command{ncdump}, but with these differences: 
- at command{ncks} prints data in a tabular format intended to be easy to
-search for the data you want, one datum per screen line, with all
-dimension subscripts and coordinate values (if any) preceding the datum.
-Option @samp{-s} (or long options @samp{--sng_fmt} and @samp{--string})
-lets the user format the data using C-style format strings. 
-
-Options @samp{-a}, @samp{-F} , @samp{-H}, @samp{-M}, @samp{-m},
- at samp{-P}, @samp{-Q}, @samp{-q}, @samp{-s}, and @samp{-u} (and their
-long option counterparts) control the formatted appearance of the data.
+writes it in flat binary format to @file{binary-file}, and writes (or
+pastes) it in netCDF format to @var{output-file}. 
+
+ at command{ncks} will also print netCDF data in @acronym{ASCII},
+ at acronym{CDL}, or @acronym{NcML} text formats @code{stdout}, like
+ at command{ncdump}.
+By default @command{ncks} prints data in a tabular format intended to be
+easy to search for the data you want, one datum per screen line, with
+all dimension subscripts and coordinate values (if any) preceding the
+datum. 
+Option @samp{-s} (or long options @samp{--sng_fmt} and @samp{--string}) 
+lets the user format the data using C-style format strings, while option
+ at samp{--cdl} outputs @acronym{CDL} and option @samp{--xml} outputs
+ at acronym{NcML}. 
+ at command{ncks} exposes many flexible controls over printed output,
+including @acronym{CDL} and @acronym{NcML}.
+
+Options @samp{-5}, @samp{-a}, @samp{--cdl}, @samp{-F} , @samp{-H},
+ at samp{-M}, @samp{-m}, @samp{-P}, @samp{-Q}, @samp{-q}, @samp{-s},
+ at samp{-u}, @samp{--xml} (and their long option counterparts) control the
+formatted appearance of the data. 
 
 @cindex global attributes
 @cindex attributes, global
@@ -10852,6 +13360,18 @@ Features common to many operators are described in
 
 @table @samp
 
+ at html
+<a name="-5"></a> <!-- http://nco.sf.net/nco.html#-5 -->
+ at end html
+ at cindex @code{-5}
+ at item -5 
+Print data to screen alphabetically by group, and alphabetically by
+variable within each group.
+This ordering here is used by default in @acronym{CDL}-mode printing,
+and may be selected for traditional mode printing with @samp{-5}
+(The switch for invocation may change to something more descriptive in
+the future). 
+
 @cindex alphabetization
 @cindex sort alphabetically
 @cindex @code{-a}
@@ -10870,43 +13390,104 @@ Thus @code{-a} retains the original ordering of the variables.
 Also @samp{--abc} and @samp{--alphabetize}.
 
 @cindex binary format
- at cindex @code{-B}
- at cindex @code{--bnr}
- at cindex @code{--binary}
- at item -B @file{file}
-Activate native machine binary output writing to the default binary
-file, @file{ncks.bnr}. 
-The @code{-B} switch is redundant when the @w{@code{-b} @file{file}}
-option is specified, and native binary output will be directed to the
-binary file @file{file}.
-Also @samp{--bnr} and @samp{--binary}.
-Writing packed variables in binary format is not supported.
-
 @cindex @code{-b}
 @cindex @code{--fl_bnr}
+ at cindex @code{--bnr}
+ at cindex @code{--binary}
 @item -b @file{file}
 Activate native machine binary output writing to binary file
 @file{file}.
 Also @samp{--fl_bnr} and @samp{--binary-file}.
 Writing packed variables in binary format is not supported.
 
- at cindex stride
- at item -d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]
-Add @dfn{stride} argument to hyperslabber. 
-For a complete description of the @var{stride} argument, @xref{Stride}.
-
 @html
 <a name="dmn_fix_mk"></a> <!-- http://nco.sf.net/nco.html#dmn_fix_mk -->
 <a name="fix_rec_dmn"></a> <!-- http://nco.sf.net/nco.html#fix_rec_dmn -->
 @end html
 @cindex record dimension
 @cindex fixed dimension
- at cindex @code{--fix_rec_dmn}
- at cindex @code{--no_rec_dmn}
+ at cindex @code{--fix_rec_dmn @var{dim}}
+ at cindex @code{--no_rec_dmn @var{dim}}
 @item --fix_rec_dmn
-Change all record dimensions in the input file into fixed dimensions
-in the output file. 
+Change record dimension @var{dim} in the input file into a fixed
+dimension in the output file. 
 Also @samp{--no_rec_dmn}.
+Before @acronym{NCO} version 4.2.5 (January, 2013), the syntax for 
+ at code{--fix_rec_dmn} did not permit or require the specification of
+the dimension name @var{dim}. 
+This is because the feature only worked on netCDF3 files, which support
+only one record dimension, so specifying its name was not necessary.
+netCDF4 files allow an arbitrary number of record dimensions, so the
+user must specify which record dimension to fix.
+The decision was made that starting with @acronym{NCO} version 4.2.5
+(January, 2013), it is always required to specify the dimension name to
+fix regardless of the netCDF file type.
+This keeps the code simple, and is symmetric with the syntax for
+ at code{--mk_rec_dmn}, described next.
+
+ at html
+<a name="cdl"></a> <!-- http://nco.sf.net/nco.html#cdl -->
+<a name="hdp"></a> <!-- http://nco.sf.net/nco.html#hdp -->
+<a name="hncgen"></a> <!-- http://nco.sf.net/nco.html#hncgen -->
+<a name="ncgen-hdf"></a> <!-- http://nco.sf.net/nco.html#ncgen-hdf -->
+ at end html
+ at cindex @command{hdp}
+ at cindex @command{ncgen}
+ at cindex @command{ncgen-hdf}
+ at cindex @command{hncgen}
+ at cindex @command{ncdump}
+ at cindex @code{--cdl}
+ at cindex @acronym{CDL}
+ at cindex @acronym{HDF}
+ at cindex @acronym{HDF4}
+ at item --cdl 
+As of @acronym{NCO} version 4.3.3 (July, 2013), @command{ncks} can
+print extracted data and metadata to screen (i.e., @code{stdout}) as
+valid @acronym{CDL} (network Common data form Description Language). 
+ at acronym{CDL} is the human-readable ``lingua franca'' of netCDF ingested by
+ at command{ncgen} and excreted by @command{ncdump}.
+Compare @command{ncks} ``traditional'' with @acronym{CDL} printing:
+ at example
+zender@@roulee:~$ ncks -v one ~/nco/data/in.nc
+one: type NC_FLOAT, 0 dimensions, 1 attribute, chunked? no, compressed? no, packed? no
+one size (RAM) = 1*sizeof(NC_FLOAT) = 1*4 = 4 bytes
+one attribute 0: long_name, size = 3 NC_CHAR, value = one
+
+one = 1 
+
+zender@@roulee:~$ ncks --cdl -v one ~/nco/data/in.nc
+netcdf in @{
+
+  variables:
+    float one ;
+    one:long_name = "one" ;
+
+  data:
+    one = 1 ;
+
+@} // group /
+ at end example
+ at command{ncgen} converts @acronym{CDL}-mode output into a netCDF file:
+ at example
+ncks --cdl -v one ~/nco/data/in.nc > ~/in.cdl
+ncgen -k netCDF-4 -b -o ~/in.nc ~/in.cdl
+ncks -v one ~/in.nc
+ at end example
+The @acronym{HDF} version of @command{ncgen}, often named
+ at command{hncgen} or @command{ncgen-hdf}, converts netCDF3 @acronym{CDL}
+into an @acronym{HDF} file:  
+ at example
+/usr/hdf4/bin/ncgen -b -o ~/in.hdf ~/in.cdl # HDF ncgen (local builds)
+/usr/bin/hncgen     -b -o ~/in.hdf ~/in.cdl # Same as HDF ncgen (RPM packages?)
+/usr/bin/ncgen-hdf  -b -o ~/in.hdf ~/in.cdl # Same as HDF ncgen (Debian packages?)
+hdp dumpsds ~/in.hdf                        # ncdump-equivalent for HDF4 files
+ at end example
+Note that @acronym{HDF4} does not support netCDF-style groups, so the
+above commands fail when the input file contains groups.
+Only netCDF4 and @acronym{HDF5} support groups.
+In our experience the @acronym{HDF} @command{ncgen} command, by whatever 
+name installed, is not robust and can fail on valid netCDF3
+ at acronym{CDL}.  
 
 @html
 <a name="dmn_rec_mk"></a> <!-- http://nco.sf.net/nco.html#dmn_rec_mk -->
@@ -10914,9 +13495,12 @@ Also @samp{--no_rec_dmn}.
 @end html
 @cindex record dimension
 @cindex fixed dimension
+ at cindex fix record dimension
 @cindex @code{--mk_rec_dmn @var{dim}}
 @item --mk_rec_dmn @var{dim}
 Change existing dimension @var{dim} to a record dimension in the output file.
+This is the most straightforward way of changing a dimension to a/the
+record dimension, and works fine in most cases.
 See @ref{ncecat netCDF Ensemble Concatenator} and 
 @ref{ncpdq netCDF Permute Dimensions Quickly} for other methods of
 changing variable dimensionality, including the record dimension. 
@@ -10928,13 +13512,15 @@ changing variable dimensionality, including the record dimension.
 @cindex @code{--data}
 @cindex @code{--hieronymus}
 @item -H 
-Print data to screen.
+Turn-on printing to screen or turn-off copying data (not metadata).
 Also activated using @samp{--print} or @samp{--prn}.
 By default @command{ncks} prints all metadata and data to screen if
 no netCDF output file is specified.
 Use @samp{-H} to print data to screen if a netCDF output is specified,
 or to restrict printing to data (no metadata) when no netCDF output is 
 specified.
+Also use @samp{-H} to turn-off copying data (not metadata) to an output
+file. 
 Unless otherwise specified (with @code{-s}), each element of the data
 hyperslab prints on a separate line containing the names, indices,
 and, values, if any, of all of the variables dimensions.
@@ -10985,14 +13571,19 @@ lat[0]=90 lev[0]=1000 lon[3]=270 three_dmn_var[3]=23
 @cindex @code{--Metadata}
 @cindex metadata, global 
 @item -M
-Print to screen the global metadata describing the file.
-This includes file summary information and global attributes.
+Turn-on printing to screen or turn-off copying global and group metadata.
+This includes file summary information and global and group attributes.
 Also @samp{--Mtd} and @samp{--Metadata}.
 By default @command{ncks} prints global metadata to screen if no netCDF
 output file and no variable extraction list is specified (with @samp{-v}).  
 Use @samp{-M} to print global metadata to screen if a netCDF output is 
 specified, or if a variable extraction list is specified (with @samp{-v}). 
+Use @samp{-M} to turn-off copying of global and group metadata when
+copying, subsetting, or appending to an output file.
 
+ at html
+<a name="prn_tbl"></a> <!-- http://nco.sf.net/nco.html#prn_tbl -->
+ at end html
 The various combinations of printing switches can be confusing.
 In an attempt to anticipate what most users want to do, @command{ncks}
 uses context-sensitive defaults for printing.
@@ -11010,6 +13601,11 @@ The most confusing aspect of this is that @samp{-M} inhibits copying
 global metadata in overwrite mode and causes copying of global
 metadata in append mode.
 @example
+ncks                 in.nc        # Print  VAs and GAs
+ncks          -v one in.nc        # Print  VAs not GAs
+ncks    -M    -v one in.nc        # Print  GAs only
+ncks       -m -v one in.nc        # Print  VAs only
+ncks    -M -m -v one in.nc        # Print  VAs and GAs
 ncks -O              in.nc out.nc # Copy   VAs and GAs
 ncks -O       -v one in.nc out.nc # Copy   VAs and GAs
 ncks -O -M    -v one in.nc out.nc # Copy   VAs not GAs
@@ -11021,8 +13617,8 @@ ncks -A -M    -v one in.nc out.nc # Append VAs and GAs
 ncks -A    -m -v one in.nc out.nc # Append only data (no atts)
 ncks -A -M -m -v one in.nc out.nc # Append GAs not VAs
 @end example
-where @code{VAs} and @code{GAs} denote variable and global attributes,
-respectively. 
+where @code{VAs} and @code{GAs} denote variable and group/global
+attributes, respectively. 
 
 @cindex @command{ncdump}
 @cindex @code{-m}
@@ -11030,7 +13626,9 @@ respectively.
 @cindex @code{--metadata}
 @cindex metadata
 @item -m
-Print variable metadata to screen (similar to @kbd{ncdump -h}). 
+Turn-on printing to screen or turn-off copying variable metadata.
+Using @samp{-m} will print variable metadata to screen (similar to
+ at kbd{ncdump -h}).  
 This displays all metadata pertaining to each variable, one variable
 at a time.
 @cindex chunking
@@ -11041,8 +13639,24 @@ such as whether it employs chunking, compression, or packing.
 Also activated using @samp{--mtd} and @samp{--metadata}.
 The @command{ncks} default behavior is to print variable metadata to
 screen if no netCDF output file is specified.
-Use @samp{-m} to print variable metadata to screen if a netCDF output is 
+Use @samp{-m} to print variable metadata to screen if a netCDF output is  
 specified. 
+Also use @samp{-m} to turn-off copying of variable metadata to an output
+file.
+
+ at cindex @code{--no_blank}
+ at cindex @code{--noblank}
+ at cindex @code{--no-blank}
+ at cindex blank
+ at cindex missing values
+ at item --no_blank
+Print numeric representation of missing values.
+As of @acronym{NCO}
+As of @acronym{NCO} version 4.2.2 (October, 2012), @acronym{NCO} prints
+missing values as blanks (i.e., the underscore character @samp{_}) by default.
+To enable the old behavior of printing the numeric representation of
+missing values (e.g., @code{1.0e36}), use the @samp{--no_blank} switch.
+Also activated using @samp{--noblank} or @samp{--no-blank}.
 
 @cindex @code{-P}
 @cindex @code{--print}
@@ -11091,8 +13705,255 @@ Also @samp{--string}  and @samp{--sng_fmt}.
 Toggle the printing of a variable's @code{units} attribute, if any, 
 with its values.
 Also @samp{--units}.
+
+ at html
+<a name="xml"></a> <!-- http://nco.sf.net/nco.html#xml -->
+<a name="ncmnl"></a> <!-- http://nco.sf.net/nco.html#ncml -->
+ at end html
+ at cindex @code{--xml}
+ at cindex @code{--ncml}
+ at cindex @command{ncdump}
+ at cindex @acronym{XML}
+ at cindex @acronym{NcML}
+ at item --xml, --ncml
+As of @acronym{NCO} version 4.3.3 (July, 2013), @command{ncks} can
+print extracted metadata to screen (i.e., @code{stdout}) as
+ at acronym{XML} in @acronym{NcML}, the netCDF Markup Language.  
+ at command{ncks} supports for @acronym{XML} more completely than 
+of @samp{ncdump -x}.
+With @command{ncks} one can translate entire netCDF3 and netCDF4 files
+into @acronym{NcML}, including metadata and data, using all 
+ at acronym{NCO}'s subsetting and hyperslabbing capabilities.
+Compare @command{ncks} ``traditional'' with @acronym{XML} printing:
+ at example
+ at verbatim
+zender@@roulee:~$ ncks -v one ~/nco/data/in.nc
+one: type NC_FLOAT, 0 dimensions, 1 attribute, chunked? no, compressed? no, packed? no
+one size (RAM) = 1*sizeof(NC_FLOAT) = 1*4 = 4 bytes
+one attribute 0: long_name, size = 3 NC_CHAR, value = one
+
+one = 1 
+
+zender at roulee:~$ ncks --xml -v one ~/nco/data/in.nc
+<?xml version="1.0" encoding="UTF-8"?>
+<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="/home/zender/nco/data/in.nc">
+  <variable name="one" type="float" shape="">
+    <attribute name="long_name" separator="*" value="one" />
+    <values>1.</values>
+  </variable>
+</netcdf>
+ at end verbatim
+ at end example
+ at acronym{XML}-mode prints variable metadata, and, as of 
+ at acronym{NCO} version 4.3.7 (October, 2013), variable data.
+We know of no reference application that translates @acronym{CDM}
+files completely into @acronym{NcML}, so it is possible that
+ at acronym{ncks} produces incorrect translations for some datatypes.
+The @command{toolsUI} Java program is helpful but incomplete.
+We have found that @command{toolsUI} fails to ingest some @acronym{NcML} 
+produced by both @command{ncks --xml} and @command{ncdump -x}.
+However, most common features work well.
+Please let us know how to improve @acronym{XML}/@acronym{NcML}
+features. 
+
+ at cindex @code{--xml_no_location}
+ at cindex @code{--xml_spr_chr}
+ at cindex @code{--xml_spr_nmr}
+ at cindex separator
+ at command{ncks} provides additional options to configure @acronym{NcML}
+output: @samp{--xml_no_location}, @samp{--xml_spr_chr}, and
+ at samp{--xml_spr_nmr}. 
+Every @acronym{NcML} configuration option automatically triggers
+ at acronym{NcML} printing, so that specifying @samp{--xml} in addition
+to a configuration option is redundant and unnecessary.
+The @samp{--xml_no_location} switch prevents output of the
+ at acronym{NcML} @code{location} element.
+By default the location element is printed with a value equal to the
+location of the input dataset, e.g.,
+ at code{location="/home/zender/in.nc"}.
+The @samp{--xml_spr_chr} and @samp{--xml_spr_nmr} options customize
+the strings used as @acronym{NcML} separators for attributes and
+variables of character-type and numeric-type, respectively.
+Their default separators are "*" and " ":
+ at example
+ at verbatim
+zender@@roulee:~$ ncks --xml -d time,0,3 -v two_dmn_rec_var_sng in.nc
+...
+   <values separator="*">abc*bcd*cde*def</values>
+ ...
+ zender@@roulee:~$ ncks --xml_spr_chr=', ' -v two_dmn_rec_var_sng in.nc
+...
+<values separator=", ">abc, bcd, cde, def, efg, fgh, ghi, hij, jkl, klm</values>
+...
+zender@@roulee:~$ ncks --xml -v one_dmn_rec_var in.nc
+...
+<values>1 2 3 4 5 6 7 8 9 10</values>
+...
+zender@@roulee:~$ ncks --xml_spr_nmr=', ' -v one_dmn_rec_var in.nc
+...
+<values separator=", ">1, 2, 3, 4, 5, 6, 7, 8, 9, 10</values>
+...
+ at end verbatim
+ at end example
+Separator elements for strings are a thorny issue.
+One must be sure that the separator element is not mistaken as a portion
+of the string. 
+ at acronym{NCO} attempts to produce valid @acronym{NcML} and supplies the
+ at samp{--xml_spr_chr} option to work around any difficulties.
+ at acronym{NCO} performs precautionary checks with
+ at code{strstr(@var{val}, at var{spr})} to identify presence of the separator
+string (@var{spr}) in data (@var{val}) and, when it detects a match,
+automatically switches to a backup separator string (@code{*|*}). 
+However limitations of @code{strstr()} may lead to false negatives 
+when the separator string occurs in data beyond the first string in
+multi-dimensional @code{NC_CHAR} arrays. 
+Hence, results may be ambiguous to NcML parsers. 
+If problems arise, use @samp{--xml_spr_chr} to specify a multi-character
+separator that does not appear in the string array and that does not
+include an NcML formatting characters (e.g., commas, angles, quotes).
 @end table
 
+ at html
+<a name="ncattget"></a> <!-- http://nco.sf.net/nco.html#ncattget -->
+<a name="nclist"></a> <!-- http://nco.sf.net/nco.html#nclist -->
+<a name="ncdmnsz"></a> <!-- http://nco.sf.net/nco.html#ncdmnsz -->
+<a name="ncrecsz"></a> <!-- http://nco.sf.net/nco.html#ncrecsz -->
+<a name="ncmax"></a> <!-- http://nco.sf.net/nco.html#ncmax -->
+<a name="ncmdn"></a> <!-- http://nco.sf.net/nco.html#ncmdn -->
+<a name="ncavg"></a> <!-- http://nco.sf.net/nco.html#ncavg -->
+<a name="ncrng"></a> <!-- http://nco.sf.net/nco.html#ncrng -->
+<a name="ncunits"></a> <!-- http://nco.sf.net/nco.html#ncunits -->
+<a name="alias"></a> <!-- http://nco.sf.net/nco.html#alias -->
+<a name="filters"></a> <!-- http://nco.sf.net/nco.html#filters -->
+<a name="filter"></a> <!-- http://nco.sf.net/nco.html#filter -->
+<a name="flt"></a> <!-- http://nco.sf.net/nco.html#flt -->
+ at end html
+ at menu
+* Filters for @command{ncks}::
+ at end menu
+
+ at node Filters for @command{ncks},  , ncks netCDF Kitchen Sink, ncks netCDF Kitchen Sink
+ at subsection Filters for @command{ncks}
+ at cindex @acronym{UNIX}
+ at cindex @command{ncattget}
+ at cindex @command{ncavg}
+ at cindex @command{ncdmnsz}
+ at cindex @command{nclist}
+ at cindex @command{ncmax}
+ at cindex @command{ncmdn}
+ at cindex @command{ncmin}
+ at cindex @command{ncrecsz}
+ at cindex @command{ncrng}
+ at cindex @command{ncunits}
+ at cindex @file{.bashrc}
+ at cindex filters
+ at cindex alias
+ at cindex shell
+ at cindex Bash shell
+ at cindex Csh shell
+ at cindex Sh shell
+ at cindex @command{bash}
+We encourage the use of standard @acronym{UNIX} pipes and filters to
+narrow the verbose output of @command{ncks} into more precise targets.
+For example, to obtain an uncluttered listing of the variables in a file
+try 
+ at example
+ncks -m in.nc | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort
+ at end example
+A Bash user could alias the previous filter to the shell command
+ at command{nclist} as shown below.
+More complex examples could involve command line arguments.
+For example, a user may frequently be interested in obtaining the value
+of an attribute, e.g., for textual file examination or for passing to
+another shell command.
+Say the attribute is @code{purpose}, the variable is @code{z}, and the
+file is @code{in.nc}.
+In this example, @command{ncks -m -v z} is too verbose so a robust
+ at command{grep} and @command{cut} filter is desirable, such as
+ at example
+ncks -M -m in.nc | grep -E -i "^z attribute [0-9]+: purpose" | cut -f 11- -d ' ' | sort
+ at end example
+The filters are clearly too complex to remember on-the-fly so the entire 
+procedure could be implemented as a shell command or function called,
+say, @command{ncattget}
+ at example
+function ncattget @{ ncks -M -m $@{3@} | grep -E -i "^$@{2@} attribute [0-9]+: $@{1@}" | cut -f 11- -d ' ' | sort ; @}
+ at end example
+The shell @command{ncattget} is invoked with three arugments that are,
+in order, the names of the attribute, variable, and file to examine.
+Global attributes are indicated by using a variable name of @code{global}.
+This definition yields the following results
+ at example
+% ncattget purpose z in.nc
+Height stored with a monotonically increasing coordinate
+% ncattget Purpose Z in.nc
+Height stored with a monotonically increasing coordinate
+% ncattget history z in.nc
+% ncattget history global in.nc
+History global attribute.
+ at end example
+Note that case sensitivity has been turned off for the variable and
+attribute names (and could be turned on by removing the @samp{-i} switch
+to @command{grep}).
+Furthermore, extended regular expressions may be used for both the
+variable and attribute names.
+The next two commands illustrate this by searching for the values
+of attribute @code{purpose} in all variables, and then for all
+attributes of the variable @code{z}:
+ at example
+% ncattget purpose .+ in.nc
+1-D latitude coordinate referred to by geodesic grid variables
+1-D longitude coordinate referred to by geodesic grid variables
+...
+% ncattget .+ Z in.nc
+Height
+Height stored with a monotonically increasing coordinate
+meter
+ at end example
+
+Extended filters are best stored as shell commands if they are
+used frequently.
+Shell commands may be re-used when they are defined in shell
+configuration files.
+These files are usually named @file{.bashrc}, @file{.cshrc}, and
+ at file{.profile} for the Bash, Csh, and Sh shells, respectively.
+ at example
+# NB: Untested on Csh, Ksh, Sh, Zsh! Send us feedback!
+# Bash shell (/bin/bash) users place these in .bashrc
+# ncattget $att_nm $var_nm $fl_nm : What attributes does variable have?
+function ncattget @{ ncks -M -m $@{3@} | grep -E -i "^$@{2@} attribute [0-9]+: $@{1@}" | cut -f 11- -d ' ' | sort ; @}
+# ncunits $att_val $fl_nm : Which variables have given units?
+function ncunits @{ ncks -M -m $@{2@} | grep -E -i " attribute [0-9]+: units.+ $@{1@}" | cut -f 1 -d ' ' | sort ; @}
+# ncavg $var_nm $fl_nm : What is mean of variable?
+function ncavg @{ ncwa -y avg -O -C -v $@{1@} $@{2@} ~/foo.nc ; ncks -H -C -v $@{1@} ~/foo.nc | cut -f 3- -d ' ' ; @}
+# ncavg $var_nm $fl_nm : What is mean of variable?
+function ncavg @{ ncap2 -O -C -v -s "foo=$@{1@}.avg();print(foo)" $@{2@} ~/foo.nc | cut -f 3- -d ' ' ; @}
+# ncdmnsz $dmn_nm $fl_nm : What is dimension size?
+function ncdmnsz @{ ncks -m -M $@{2@} | grep -E -i ": $@{1@}, size =" | cut -f 7 -d ' ' | uniq ; @}
+# nclist $fl_nm : What variables are in file?
+function nclist @{ ncks -m $@{1@} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; @}
+# ncmax $var_nm $fl_nm : What is maximum of variable?
+function ncmax @{ ncwa -y max -O -C -v $@{1@} $@{2@} ~/foo.nc ; ncks -H -C -v $@{1@} ~/foo.nc | cut -f 3- -d ' ' ; @}
+# ncmax $var_nm $fl_nm : What is maximum of variable?
+function ncmax @{ ncap2 -O -C -v -s "foo=$@{1@}.max();print(foo)" $@{2@} ~/foo.nc | cut -f 3- -d ' ' ; @}
+# ncmdn $var_nm $fl_nm : What is median of variable?
+function ncmdn @{ ncap2 -O -C -v -s "foo=gsl_stats_median_from_sorted_data($@{1@}.sort());print(foo)" $@{2@} ~/foo.nc | cut -f 3- -d ' ' ; @}
+# ncrng $var_nm $fl_nm : What is range of variable?
+function ncrng @{ ncap2 -O -C -v -s "foo_min=$@{1@}.min();foo_max=$@{1@}.max();print(foo_min,\"%f\");print(\" to \");print(foo_max,\"%f\")" $@{2@} ~/foo.nc ; @}
+# ncrecsz $fl_nm : What is record dimension size?
+function ncrecsz @{ ncks -M $@{1@} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; @}
+# Csh shell (/bin/csh) users place these in .cshrc
+ncattget() @{ ncks -M -m $@{3@} | grep -E -i "^$@{2@} attribute [0-9]+: $@{1@}" | cut -f 11- -d ' ' | sort ; @}
+ncdmnsz() @{ ncks -m -M $@{2@} | grep -E -i ": $@{1@}, size =" | cut -f 7 -d ' ' | uniq ; @}
+nclist() @{ ncks -m $@{1@} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; @}
+ncrecsz() @{ ncks -M $@{1@} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; @}
+# Sh shell (/bin/sh) users place these in .profile
+ncattget() @{ ncks -M -m $@{3@} | grep -E -i "^$@{2@} attribute [0-9]+: $@{1@}" | cut -f 11- -d ' ' | sort ; @}
+ncdmnsz() @{ ncks -m -M $@{2@} | grep -E -i ": $@{1@}, size =" | cut -f 7 -d ' ' | uniq ; @}
+nclist() @{ ncks -m $@{1@} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; @}
+ncrecsz() @{ ncks -M $@{1@} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; @}
+ at end example
+
 @noindent
 @html
 <a name="xmp_ncks"></a> <!-- http://nco.sf.net/nco.html#xmp_ncks -->
@@ -11143,7 +14004,7 @@ Copy all global attributes (and no variables) from @file{in.nc} to
 ncks -A -x ~/nco/data/in.nc ~/out.nc
 @end example
 The @samp{-x} switch tells @acronym{NCO} to use the complement of the extraction
-list (@pxref{Subsetting Variables}). 
+list (@pxref{Subsetting Files}). 
 Since no extraction list is explicitly specified (with @samp{-v}),
 the default is to extract all variables.
 The complement of all variables is no variables.
@@ -11155,6 +14016,29 @@ Without any variables to extract, the append (@samp{-A}) command
 (@pxref{Appending Variables}) has only to extract and copy
 (i.e., append) global attributes to the output file.
 
+ at html
+<a name="xmp_att_glb_cpy"></a> <!-- http://nco.sf.net/nco.html#xmp_att_var_cpy -->
+ at end html
+Copy/append metadata (but not data) from variables in one file to
+variables in a second file.
+When copying/subsetting/appending files (as opposed to printing them),
+the copying of data, variable metadata, and global/group metadata are
+now turned OFF by @samp{-H}, @samp{-m}, and @samp{-M}, respectively. 
+This is the opposite sense in which these switches work when
+ at emph{printing} a file. 
+One can use these switches to easily replace data or metadata in one
+file with data or metadata from another:
+ at example
+# Extract naked (data-only) copies of two variables
+ncks -h -M -m -O -C -v one,three_dmn_rec_var ~/nco/data/in.nc ~/out.nc
+# Change values to be sure original values are not copied in following step
+ncap2 -O -v -s 'one*=2;three_dmn_rec_var*=0' ~/nco/data/in.nc ~/in2.nc
+# Append in2.nc metadata (not data!) to out.nc
+ncks -A -C -H -v one,three_dmn_rec_var ~/in2.nc ~/out.nc
+ at end example
+Variables in @file{out.nc} now contain data (not metadata) from
+ at file{in.nc} and metadata (not data) from @file{in2.nc}.
+
 @cindex @code{printf()}
 @cindex @code{\n} (linefeed)
 @cindex @code{\t} (horizontal tab)
@@ -11183,11 +14067,26 @@ lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
 0.000000, 1.000000, ..., 23.000000,
 @end example
 @noindent
+Programmers will recognize these as the venerable @w{C language} 
+ at code{printf()} formatting strings. 
 The second and third options are useful when pasting data into text
 files like reports or papers.  
 @xref{ncatted netCDF Attribute Editor}, for more details on string
 formatting and special characters. 
 
+As of @acronym{NCO} version 4.2.2 (October, 2012), @acronym{NCO} prints
+missing values as blanks (i.e., the underscore character @samp{_}) by
+default: 
+ at example
+% ncks -C -H -v mss_val in.nc
+lon[0]=0 mss_val[0]=73 
+lon[1]=90 mss_val[1]=_ 
+lon[2]=180 mss_val[2]=73 
+lon[3]=270 mss_val[3]=_ 
+% ncks -s '%+5.1f, ' -H -C -v mss_val in.nc
++73.0, _, +73.0, _, 
+ at end example
+
 One dimensional arrays of characters stored as netCDF variables are 
 automatically printed as strings, whether or not they are
 NUL-terminated, e.g.,
@@ -11213,6 +14112,22 @@ coordinates, except variable @code{time}, from netCDF @file{in.nc}:
 @example
 ncks -x -v time in.nc out.nc
 @end example
+As a special case of this, consider how to remove a 
+ at acronym{CF} Convention comliant @code{bounds} or @code{coordinates}
+variable (@pxref{CF Conventions}) such as @code{time_bounds}.
+ at acronym{NCO} subsetting assumes the user wants all coordinates 
+and bounds and axes associated with all extracted variables 
+(@pxref{Subsetting Coordinate Variables}).
+Hence to exclude a @code{bounds} or @code{coordinates} variable while
+retaining the ``parent'' variable (here @code{time}), one must use the
+ at samp{-C} switch: 
+ at example
+ncks -C -x -v time_bounds in.nc out.nc
+ at end example
+The @samp{-C} switch tells the operator @emph{NOT} to necessarily
+include all the @acronym{CF} coordinates and bounds and axes.
+Hence the output file will contain @code{time} and not
+ at code{time_bounds}. 
 
 Extract variables @code{time} and @code{pressure} from netCDF
 @file{in.nc}.  
@@ -11282,11 +14197,13 @@ For more details @xref{Wrapped Coordinates}.
 @noindent
 SYNTAX
 @example
-ncpdq [-3] [-4] [-6] [-A] [-a [-]@var{dim}[, at dots{}]] [-C] [-c]
+ncpdq [-3] [-4] [-6] [-7] [-A] [-a [-]@var{dim}[, at dots{}]] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-L @var{dfl_lvl}] [-l @var{path}] 
-[-M @var{pck_map}] [-O] [-o @var{output-file}] [-P @var{pck_plc}] [-p @var{path}] 
-[-R] [-r] [-t @var{thr_nbr}] [-U] [-v @var{var}[, at dots{}]] [-X ...] [-x]
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]]
+[-F] [-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdf] [--hdr_pad @var{nbr}]
+[-L @var{dfl_lvl}] [-l @var{path}] [-M @var{pck_map}] [--mrd] [--no_tmp_fl] 
+[-O] [-o @var{output-file}] [-P @var{pck_plc}] [-p @var{path}] 
+[-R] [-r] [--ram_all] [-t @var{thr_nbr}] [-U] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x]
 @var{input-file} [@var{output-file}]
 @end example
 
@@ -11352,6 +14269,10 @@ grid properties no differently from other variables.
 However, coordinate variables are one-dimensional, so packing saves
 little space on large files, and the resulting files are difficult for
 humans to read. 
+ at command{ncpdq} will, of course, @emph{unpack} coordinate variables and
+weights, for example, in case some other, non- at acronym{NCO} software
+packed them in the first place.
+
 Concurrently, Gaussian and area weights and other grid properties are
 often used to derive fields in re-inflated (unpacked) files, so packing
 such grid properties causes a considerable loss of precision in 
@@ -11421,39 +14342,44 @@ Five packing maps are currently implemented:@*
 @cindex @samp{nxt_lsr}
 @cindex @code{NC_DOUBLE}
 @cindex @code{NC_FLOAT}
+ at cindex @code{NC_INT64}
+ at cindex @code{NC_UINT64}
 @cindex @code{NC_INT}
+ at cindex @code{NC_UINT}
 @cindex @code{NC_SHORT}
+ at cindex @code{NC_USHORT}
 @cindex @code{NC_CHAR}
 @cindex @code{NC_BYTE}
+ at cindex @code{NC_UBYTE}
 @table @dfn
 @item Pack Floating Precisions to @code{NC_SHORT} [@emph{default}]
 Definition: Pack floating precision types to @code{NC_SHORT}@*
 Map: Pack [@code{NC_DOUBLE}, at code{NC_FLOAT}] to @code{NC_SHORT}@*
-Types copied instead of packed: [@code{NC_INT}, at code{NC_SHORT}, at code{NC_CHAR}, at code{NC_BYTE}]@*
+Types copied instead of packed: [@code{NC_INT64}, at code{NC_UINT64}, at code{NC_INT}, at code{NC_UINT}, at code{NC_SHORT}, at code{NC_USHORT}, at code{NC_CHAR}, at code{NC_BYTE}, at code{NC_UBYTE}]@*
 @var{pck_map} key values: @samp{flt_sht}, @samp{pck_map_flt_sht}@*
 @item Pack Floating Precisions to @code{NC_BYTE}
 Definition: Pack floating precision types to @code{NC_BYTE}@*
 Map: Pack [@code{NC_DOUBLE}, at code{NC_FLOAT}] to @code{NC_BYTE}@* 
-Types copied instead of packed: [@code{NC_INT}, at code{NC_SHORT}, at code{NC_CHAR}, at code{NC_BYTE}]@*
+Types copied instead of packed: [@code{NC_INT64}, at code{NC_UINT64}, at code{NC_INT}, at code{NC_UINT}, at code{NC_SHORT}, at code{NC_USHORT}, at code{NC_CHAR}, at code{NC_BYTE}, at code{NC_UBYTE}]@*
 @var{pck_map} key values: @samp{flt_byt}, @samp{pck_map_flt_byt}@*
 @item Pack Higher Precisions to @code{NC_SHORT}
 Definition: Pack higher precision types to @code{NC_SHORT}@*
 Map: 
-Pack [@code{NC_DOUBLE}, at code{NC_FLOAT}, at code{NC_INT}] to @code{NC_SHORT}@*
-Types copied instead of packed: [@code{NC_SHORT}, at code{NC_CHAR}, at code{NC_BYTE}]@*
+Pack [@code{NC_DOUBLE}, at code{NC_FLOAT}, at code{NC_INT64}, at code{NC_UINT64}, at code{NC_INT}, at code{NC_UINT}] to @code{NC_SHORT}@*
+Types copied instead of packed: [@code{NC_SHORT}, at code{NC_USHORT}, at code{NC_CHAR}, at code{NC_BYTE}, at code{NC_UBYTE}]@*
 @var{pck_map} key values: @samp{hgh_sht}, @samp{pck_map_hgh_sht}@*
 @item Pack Higher Precisions to @code{NC_BYTE}
 Definition: Pack higher precision types to @code{NC_BYTE}@*
 Map: 
-Pack [@code{NC_DOUBLE}, at code{NC_FLOAT}, at code{NC_INT}, at code{NC_SHORT}] to @code{NC_BYTE}@*
-Types copied instead of packed: [@code{NC_CHAR}, at code{NC_BYTE}]@*
+Pack [@code{NC_DOUBLE}, at code{NC_FLOAT}, at code{NC_INT64}, at code{NC_UINT64}, at code{NC_INT}, at code{NC_UINT}, at code{NC_SHORT}, at code{NC_USHORT}] to @code{NC_BYTE}@*
+Types copied instead of packed: [@code{NC_CHAR}, at code{NC_BYTE}, at code{NC_UBYTE}]@*
 @var{pck_map} key values: @samp{hgh_byt}, @samp{pck_map_hgh_byt}@*
 @item Pack to Next Lesser Precision
 Definition: Pack each type to type of next lesser size@*
-Map: Pack @code{NC_DOUBLE} to @code{NC_INT}. 
-Pack [@code{NC_FLOAT}, at code{NC_INT}] to @code{NC_SHORT}.
-Pack @code{NC_SHORT} to @code{NC_BYTE}.@*
-Types copied instead of packed: [@code{NC_CHAR}, at code{NC_BYTE}]@*
+Map: Pack [@code{NC_DOUBLE}, at code{NC_INT64}, at code{NC_UINT64}], to @code{NC_INT}. 
+Pack [@code{NC_FLOAT}, at code{NC_INT}, at code{NC_UINT}] to @code{NC_SHORT}.
+Pack [@code{NC_SHORT}, at code{NC_USHORT}] to @code{NC_BYTE}.@*
+Types copied instead of packed: [@code{NC_CHAR}, at code{NC_BYTE}, at code{NC_UBYTE}]@*
 @var{pck_map} key values: @samp{nxt_lsr}, @samp{pck_map_nxt_lsr}@*
 @end table
 @noindent
@@ -11654,6 +14580,50 @@ Many different packing maps may be used to construct a given file
 by performing the packing on subsets of variables (e.g., with @samp{-v}) 
 and using the append feature with @samp{-A} (@pxref{Appending Variables}).
 
+Users may wish to unpack data packed with the @acronym{HDF} convention,
+and then re-pack it with the netCDF convention so that all their
+datasets use the same packing convention prior to intercomparison.
+ at cindex @command{ncl_convert2nc}
+ at cindex @acronym{NCL}
+ at example
+# One-step procedure: Works with NCO 4.3.7 and later
+# 1. Convert, unpack, and repack HDF file into netCDF file
+ncpdq --hdf4 --hdf_upk -P xst_new modis.hdf modis.nc # HDF4 files
+ncpdq --hdf_upk -P xst_new modis.h5 modis.nc # HDF5 files
+
+# Two-step procedure: Necessary with NCO 4.3.6 and earlier
+# 1. Convert HDF file to netCDF file
+ncl_convert2nc modis.hdf
+# 2. Unpack using HDF convention and repack using netCDF convention
+ncpdq --hdf_upk -P xst_new modis.nc modis.nc
+ at end example
+The @samp{--hdf4} switch is a precaution necessary because of flaws
+in the netCDF library versions 4.3.1 and earlier.
+Hopefully the need for this switch will disappear with netCDF 4.3.2,
+which will allow @acronym{NCO} to automatically detect and treat 
+ at acronym{HDF4} files.
+Prior to version 4.3.7 (October, 2013), @acronym{NCO} lacked the
+software necessary to workaround netCDF library flaws handling
+ at acronym{HDF4} files, and thus @acronym{NCO} failed to convert
+ at acronym{HDF4} files to netCDF files.
+In those cases, use the @command{ncl_convert2nc} command distributed
+with @acronym{NCL} to convert @acronym{HDF4} files to netCDF.
+In this case it produces an output file @file{modis.nc} which preserves
+the @acronym{HDF} packing used in the input file.
+The @command{ncpdq} command first unpacks all packed variables using the
+ at acronym{HDF} unpacking algorithm (as specified by @samp{--hdf_upk}), 
+and then repacks those same variables using the netCDF algorithm
+(because that is the only algorithm @acronym{NCO} packs with).
+As described above the @samp{--P xst_new} packing policy only repacks
+variables that are already packed. 
+Not-packed variables are copied directly without loss of precision
+ at footnote{@command{ncpdq} does not support packing data using the
+ at acronym{HDF} convention.
+Although it is now straightforward to support this, we think it might
+sow more confusion than it reaps. 
+Let us know if you disagree and would like @acronym{NCO} to support
+packing data with @acronym{HDF} algorithm.}.
+
 Re-order file @file{in.nc} so that the dimension @code{lon} always
 precedes the dimension @code{lat} and store the results in
 @file{out.nc}:  
@@ -11746,6 +14716,7 @@ lat[1]=-90 lev[2]=100 lon[3]=0 three_dmn_var[23]=0
 
 @html
 <a name="dmn_rcd_mk"></a> <!-- http://nco.sf.net/nco.html#dmn_rcd_mk -->
+<a name="mk_rcd_dmn"></a> <!-- http://nco.sf.net/nco.html#mk_rcd_dmn -->
 @end html
 Creating a record dimension named, e.g., @code{time}, in a file which
 has no existing record dimension is simple with @command{ncecat}:
@@ -11769,8 +14740,9 @@ ncks -O --mk_rec_dmn time in.nc out.nc # Change "time" to record dimension
 Prior to 4.0.1, the procedure to change an existing fixed dimension into
 a record dimension required three separate commands,
 @command{ncecat} followed by @command{ncpdq}, and then @command{ncwa}.
-It is still instructive to present the original procedure, as it shows
-how multiple operators can achieve the same ends by different means:
+The recommended method is now to use @samp{ncks --fix_rec_dmn}, yet it
+is still instructive to present the original procedure, as it shows how
+multiple operators can achieve the same ends by different means: 
 @cindex degenerate dimension
 @example
 ncecat -O in.nc out.nc # Add degenerate record dimension named "record"
@@ -11808,11 +14780,13 @@ changing variable dimensionality, including the record dimension.
 @noindent
 SYNTAX
 @example
-ncra [-3] [-4] [-6] [-A] [-C] [-c]
+ncra [-3] [-4] [-6] [-7] [-A] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-L @var{dfl_lvl}] [-l @var{path}] 
-[-n @var{loop}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r]
-[-t @var{thr_nbr}] [-v @var{var}[, at dots{}]] [-X ...] [-x] [-y @var{op_typ}]
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}][,[@var{duration}]]]] [-F]
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdf] [--hdr_pad @var{nbr}] 
+[-L @var{dfl_lvl}] [-l @var{path}] [--mro] [-n @var{loop}] [--no_tmp_fl]
+[-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all] [--rec_apn] [--rth_dbl|flt]
+[-t @var{thr_nbr}] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x] [-y @var{op_typ}]
 [@var{input-files}] [@var{output-file}]
 @end example
 
@@ -11825,8 +14799,8 @@ DESCRIPTION
 @cindex record dimension
 The record dimension is, by default, retained as a degenerate 
 @w{(size 1)} dimension in the output variables.
- at xref{Averaging vs. Concatenating}, for a description of the
-distinctions between the various averagers and concatenators. 
+ at xref{Statistics vs. Concatenation}, for a description of the
+distinctions between the various statistics tools and concatenators. 
 @cindex multi-file operators
 @cindex standard input
 @cindex @code{stdin}
@@ -11920,11 +14894,13 @@ ncra -d time,6.,54. ??.nc 8506_8906.nc
 @noindent
 SYNTAX
 @example
-ncrcat [-3] [-4] [-6] [-A] [-C] [-c]
+ncrcat [-3] [-4] [-6] [-7] [-A] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-L @var{dfl_lvl}] [-l @var{path}] 
-[-n @var{loop}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r]
-[-t @var{thr_nbr}] [-v @var{var}[, at dots{}]] [-X ...] [-x] 
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}][,[@var{duration}]]]] [-F]
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdr_pad @var{nbr}]
+[-L @var{dfl_lvl}] [-l @var{path}] [--md5_digest] [-n @var{loop}] [--no_tmp_fl]
+[-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all] [--rec_apn]
+[-t @var{thr_nbr}] [--unn] [-v @var{var}[, at dots{}]] [-X ...] [-x] 
 [@var{input-files}] [@var{output-file}]
 @end example
 
@@ -11936,8 +14912,8 @@ number of @var{input-files}.
 @cindex record dimension
 The final record dimension is by default the sum of the lengths of the 
 record dimensions in the input files.
- at xref{Averaging vs. Concatenating}, for a description of the
-distinctions between the various averagers and concatenators. 
+ at xref{Statistics vs. Concatenation}, for a description of the
+distinctions between the various statistics tools and concatenators. 
 @cindex multi-file operators
 @cindex standard input
 @cindex @code{stdin}
@@ -12046,19 +15022,21 @@ ncrcat -d time,6.,54. ??.nc 8506_8906.nc
 @node ncrename netCDF Renamer, ncwa netCDF Weighted Averager, ncrcat netCDF Record Concatenator, Operator Reference Manual
 @section @command{ncrename} netCDF Renamer
 @cindex renaming variables
+ at cindex renaming groups
 @cindex renaming dimensions
 @cindex renaming attributes
 @cindex variable names
 @cindex dimension names
 @cindex attribute names
+ at cindex group names
 @findex ncrename
 
 @noindent
 SYNTAX
 @example
 ncrename [-a @var{old_name}, at var{new_name}] [-a @dots{}] [-D @var{dbg}] 
-[-d @var{old_name}, at var{new_name}] [-d @dots{}] [-h] [--hdr_pad @var{nbr}] [-l @var{path}]
-[-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] 
+[-d @var{old_name}, at var{new_name}] [-d @dots{}] [-g @var{old_name}, at var{new_name}] [-g @dots{}] 
+[-h] [--hdf] [--hdr_pad @var{nbr}] [-l @var{path}] [-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] 
 [-v @var{old_name}, at var{new_name}] [-v @dots{}]
 @var{input-file} [[@var{output-file}]]
 @end example
@@ -12067,8 +15045,8 @@ ncrename [-a @var{old_name}, at var{new_name}] [-a @dots{}] [-D @var{dbg}]
 DESCRIPTION
 
 @cindex @kbd{.}
- at command{ncrename} renames dimensions, variables, and attributes in a
-netCDF file.  
+ at command{ncrename} renames netCDF dimensions, variables, attributes, and
+groups. 
 Each object that has a name in the list of old names is renamed using
 the corresponding name in the list of new names. 
 All the new names must be unique. 
@@ -12085,10 +15063,11 @@ whose attributes are to be renamed.
 @cindex data safety
 @cindex safeguards
 @cindex temporary output files
- at command{ncrename} is the exception to the normal rules that the user will
-be interactively prompted before an existing file is changed, and that a
-temporary copy of an output file is constructed during the operation.
-If only @var{input-file} is specified, then @command{ncrename} will change
+ at command{ncrename} is an exception to the normal @acronym{NCO} rule that
+the user will be interactively prompted before an existing file is
+changed, and that a temporary copy of an output file is constructed
+during the operation. 
+If only @var{input-file} is specified, then @command{ncrename} changes
 the names of the @var{input-file} in place without prompting and without
 creating a temporary copy of @code{input-file}.
 This is because the renaming operation is considered reversible if the
@@ -12107,7 +15086,7 @@ Such a variable will become a coordinate variable.
 @cindex operator speed
 @cindex speed
 @cindex execution time
-According to the @cite{netCDF User's Guide}, renaming properties in
+According to the @cite{netCDF User Guide}, renaming properties in
 netCDF files does not incur the penalty of recopying the entire file
 when the @var{new_name} is shorter than the @var{old_name}.
 
@@ -12120,6 +15099,7 @@ Attribute renaming.
 The old and new names of the attribute are specified with @samp{-a}
 (or @samp{--attribute}) by the associated @var{old_name} and
 @var{new_name} values.  
+ at cindex @code{global} attribute
 @cindex global attributes
 @cindex attributes, global
 Global attributes are treated no differently than variable attributes.
@@ -12128,10 +15108,15 @@ As mentioned above, all occurrences of the attribute of a given name
 will be renamed unless the @samp{.} form is used, with one exception.
 To change the attribute name for a particular variable, specify 
 the @var{old_name} in the format @var{old_var_name@@old_att_name}.
-The @samp{@@} symbol delimits the variable and attribute names.
+The @samp{@@} symbol delimits the variable from the attribute name.
 If the attribute is uniquely named (no other variables contain the
 attribute) then the @var{old_var_name@@old_att_name} syntax is
 redundant. 
+The @var{var_nm} @code{global} has special significance---it indicates
+that @var{att_nm} refers to a global or group attribute, and not to a
+variable named @code{global}.
+In other words, a @var{var_nm} of @code{global} is syntactically
+equivalent to a @var{var_nm} that is empty.
 The @var{var_name@@att_name} syntax is accepted, but not required,
 for the @var{new_name}.
 
@@ -12142,6 +15127,13 @@ The old and new names of the dimension are specified with @samp{-d}
 and @var{new_name} values.  
 This option may be specified more than once.
  
+ at item -g @var{old_name}, at var{new_name}
+Group renaming. 
+The old and new names of the group are specified with @samp{-g}
+(or @samp{--grp}, @samp{--group}) by the associated @var{old_name}
+and @var{new_name} values.  
+This option may be specified more than once.
+ 
 @item -v @var{old_name}, at var{new_name}
 Variable renaming. 
 The old and new names of the variable are specified with @samp{-v}
@@ -12167,7 +15159,12 @@ ncrename -v p,pressure -v .t,temperature in.nc
 Rename the attribute @code{long_name} to @code{largo_nombre} in the
 variable @code{u}, and no other variables in netCDF @file{in.nc}. 
 @example
-ncrename -a u:long_name,largo_nombre in.nc
+ncrename -a u@@long_name,largo_nombre in.nc
+ at end example
+ 
+Rename group @code{g8} to @code{g20} in netCDF @file{in.nc}. 
+ at example
+ncrename -g g8,g20 in_grp.nc
 @end example
  
 @cindex coordinate variables
@@ -12179,6 +15176,8 @@ the variable:
 @example
 ncrename -d lon,longitude -v lon,longitude in.nc
 @end example
+Unfortunately, the netCDF library has a longstanding bug () that causes
+ at acronym{NCO} to crash when performing this operation.
 
 @cindex global attributes
 @cindex attributes, global
@@ -12206,6 +15205,29 @@ The variable @code{tpt} must contain the @code{hieght} attribute.
 The variable @code{prs_sfc} need not exist, and need not contain the
 @code{hieght} attribute.
 
+Rename the global or group attribute @code{Convention} to
+ at code{Conventions}
+ at example
+ncrename -a Convention,Conventions  in.nc # Variable and global atts.
+ncrename -a .Convention,Conventions in.nc # Variable and global atts.
+ncrename -a @@Convention,Conventions  in.nc # Global atts. only
+ncrename -a @@.Convention,Conventions in.nc # Global atts. only
+ncrename -a global@@Convention,Conventions   in.nc # Global atts. only
+ncrename -a .global@@.Convention,Conventions in.nc # Global atts. only
+ at end example
+The examples without the @code{@@} character attempt to change the
+attribute name in both Global or Group and variable attributes.
+The examples with the @code{@@} character attempt to change only 
+global and group @code{Convention} attributes, and leave unchanged any
+ at code{Convention} attributes attached directly to variables.
+Attributes prefixed with a period (@code{.Convention}) need not be
+present. 
+Attributes not prefixed with a period (@code{Convention}) must be
+present. 
+Variables prefixed with a period (@code{.} or @code{.global}) need not 
+be present.  
+Variables not prefixed with a period (@code{global}) must be present.  
+
 @page
 @html
 <a name="ncwa"></a> <!-- http://nco.sf.net/nco.html#ncwa -->
@@ -12221,12 +15243,14 @@ The variable @code{prs_sfc} need not exist, and need not contain the
 @noindent
 SYNTAX
 @example
-ncwa [-3] [-4] [-6] [-A] [-a @var{dim}[, at dots{}]] [-B @var{mask_cond}] [-b] [-C] [-c]
+ncwa [-3] [-4] [-6] [-7] [-A] [-a @var{dim}[, at dots{}]] [-B @var{mask_cond}] [-b] [-C] [-c]
 [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F] [-h] [-I] [-L @var{dfl_lvl}] [-l @var{path}] 
-[-M @var{mask_val}] [-m @var{mask_var}] [-N] [-O] 
-[-o @var{output-file}] [-p @var{path}] [-R] [-r] [-T @var{mask_comp}]
-[-t @var{thr_nbr}] [-v @var{var}[, at dots{}]] [-w @var{weight}] [-X ...] [-x] [-y @var{op_typ}]
+[-D @var{dbg}] [-d @var{dim},[@var{min}][,[@var{max}][,[@var{stride}]]] [-F]
+[-G @var{gpe_dsc}] [-g @var{grp}[, at dots{}]] [-h] [--hdr_pad @var{nbr}] [-I]
+[-L @var{dfl_lvl}] [-l @var{path}] [-M @var{mask_val}] [-m @var{mask_var}] [-N] [--no_tmp_fl]
+[-O] [-o @var{output-file}] [-p @var{path}] [-R] [-r] [--ram_all] [--rth_dbl|flt]
+[-T @var{mask_comp}] [-t @var{thr_nbr}] [--unn] [-v @var{var}[, at dots{}]] [-w @var{weight}]
+[-X ...] [-x] [-y @var{op_typ}]
 @var{input-file} [@var{output-file}]
 @end example
 
@@ -12235,8 +15259,8 @@ DESCRIPTION
 
 @command{ncwa} averages variables in a single file over arbitrary
 dimensions, with options to specify weights, masks, and normalization.   
- at xref{Averaging vs. Concatenating}, for a description of the
-distinctions between the various averagers and concatenators. 
+ at xref{Statistics vs. Concatenation}, for a description of the
+distinctions between the various statistics tools and concatenators. 
 The default behavior of @command{ncwa} is to arithmetically average
 every numerical variable over all dimensions and to produce a scalar 
 result for each. 
@@ -12349,8 +15373,8 @@ The mathematical definition of operations involving rank reduction
 is given above (@pxref{Operation Types}).
 
 @menu
-* Mask condition::              
-* Normalization and Integration::  
+* Mask condition::
+* Normalization and Integration::
 @end menu
 
 @html
@@ -12655,7 +15679,10 @@ ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon in.nc out.nc
 @noindent
 It is considerably simpler to specify the complete @var{mask_cond} with
 the single string argument to @samp{-B} than with the three separate
-switches @samp{-m}, @samp{-T}, and @samp{-M}.
+switches @samp{-m}, @samp{-T}, and @samp{-M}
+ at footnote{Unfortunately the @samp{-B} and @samp{--mask_condition}
+options are unsupported on Windows (with the @acronym{MVS} compiler),
+which lacks a free, standard parser and lexer.}. 
 If in doubt, enclose the @var{mask_cond} within quotes since some
 of the comparators have special meanings to the shell.
 
@@ -12715,7 +15742,7 @@ where @math{@var{thr_min} <= @var{msk_var} <= @var{thr_max}}.
 @html
 <a name="ctr"></a> <!-- http://nco.sf.net/nco.html#ctr -->
 @end html
- at node Contributing, CCSM Example, Operator Reference Manual, Top
+ at node Contributing, Quick Start, Operator Reference Manual, Top
 @chapter Contributing
 @cindex contributing
 We welcome contributions from anyone.
@@ -12745,33 +15772,58 @@ So you could be the third!
 <a name="ppl"></a> <!-- http://nco.sf.net/nco.html#ppl -->
 @end html
 @menu
-* Contributors::                
-* Proposals for Institutional Funding::  
+* Contributors::
+* Proposals for Institutional Funding::
 @end menu
 
 @node Contributors, Proposals for Institutional Funding, Contributing, Contributing
 @section Contributors
+ at acronym{NCO} would not exist without the dedicated efforts of the
+remarkable software engineers who conceive, develop, and
+maintain netCDF, UDUnits, and OPeNDAP.
+ at cindex Russ Rew
+ at cindex John Caron
+ at cindex Glenn Davis
+ at cindex Steve Emmerson
+ at cindex James Gallagher
+ at cindex Ed Hartnett
+ at cindex Dennis Heimbigner
+Since 1995 @acronym{NCO} has received support from, I believe, the
+entire staff of all these projects, including 
+Russ Rew, 
+John Caron,
+Glenn Davis, 
+Steve Emmerson, 
+James Gallagher, 
+Ed Hartnett, 
+and Dennis Heimbigner.
+In addition to their roles in maintaining the software stack on which
+ at acronym{NCO} perches, Yertl-like, some of these gentlemen have advised
+or contributed to @acronym{NCO} specifically. That support is
+acknowledged separately below. 
+
 @cindex contributors
 The primary contributors to @acronym{NCO} development have been:
 @table @asis
 @cindex Charlie Zender
 @item Charlie Zender
-Concept, design and implementation of operators from 1995-2000.
-Since then autotools, bug-squashing, chunking, documentation, packing,
- at acronym{NCO} library redesign, @command{ncap2} features, @command{ncbo}, 
- at command{ncpdq}, SMP threading and MPI parallelization, 
+All concept, design and implementation from 1995-2000.
+Since then autotools, bug-squashing, @acronym{CDL}, chunking,
+documentation, anchoring, recursion, @acronym{GPE}, packing,
+ at acronym{NCO} library redesign, @command{ncap2} features,
+ at command{ncbo}, @command{ncpdq}, SMP threading and MPI parallelization,
 netCDF4 integration, external funding, project management, science
-research, releases.
+research, releases. 
 @cindex Henry Butowsky
 @item Henry Butowsky
 Non-linear operations and @code{min()}, @code{max()}, @code{total()}
 support in @command{ncra} and @command{ncwa}. 
 Type conversion for arithmetic.
 Migration to netCDF3 API.
- at command{ncap} parser, lexer, @w{and I/O}.
+ at command{ncap2} parser, lexer, @acronym{GSL}-support, @w{and I/O}.
 Multislabbing algorithm.
 Variable wildcarding.
-Various hacks.
+Numerous hacks.
 @command{ncap2} language.
 @cindex Rorik Peterson
 @item Rorik Peterson
@@ -12788,12 +15840,19 @@ RPM support.
 @item Harry Mangalam
 Benchmarking.
 OPeNDAP configuration.
+ at cindex Pedro Vicente
+ at item Pedro Vicente
+Windows Visual Studio support.
+netCDF4 groups.
+ at cindex Russ Rew
+ at item Russ Rew
+Advice on NCO structural algorithms
 @cindex Brian Mays
 @item Brian Mays
-Original packaging for Debian GNU/Linux, @command{nroff} man pages.
+Original packaging for Debian @acronym{GNU}/Linux, @command{nroff} man pages.
 @cindex George Shapovalov
 @item George Shapovalov
-Packaging for Gentoo GNU/Linux.
+Packaging for Gentoo @acronym{GNU}/Linux.
 @cindex Bill Kocik
 @item Bill Kocik
 Memory management.
@@ -12805,7 +15864,7 @@ NEC SX architecture support.
 AIX architecture support.
 @cindex Juliana Rew
 @item Juliana Rew
-Compatibility with large PIDs.
+Compatibility with large @acronym{PID}s.
 @cindex Karen Schuchardt
 @item Karen Schuchardt
 Auxiliary coordinate support.
@@ -12815,24 +15874,29 @@ Auxiliary coordinate support.
 @cindex Scott Capps
 @item Scott Capps
 Large work-load testing
+ at cindex Peter Campbell
+ at cindex Martin Dix
 @cindex Mark Flanner
+ at cindex Markus Liebig
 @cindex Keith Lindsay
- at cindex Martin Dix
+ at cindex Stu Muller
 @cindex Mike Page
 @cindex Martin Schmidt
+ at cindex Lori Sentman
 @cindex Michael Schulz
+ at cindex Gary Strand
+ at cindex Andrew Wittenberg
 @cindex Remik Ziemlinski
- at item Martin Dix, Mark Flanner, Keith Lindsay, Mike Page, Martin Schmidt, Michael Schulz, Remik Ziemlinski
+ at item Peter Campbell, Martin Dix, Mark Flanner, Markus Liebig, Keith Lindsay, Mike Page, Martin Schmidt, Michael Schulz, Lori Sentman, Gary Strand, Andrew Wittenberg, Remik Ziemlinski
 Excellent bug reports and feature requests.
- at cindex Markus Liebig
- at item Markus Liebig
-Proof-read the ncap documentation
 @cindex Daniel Baumann
+ at cindex Nick Bower
+ at cindex Luk Claes
 @cindex Barry deFreese
+ at cindex Aleksandar Jelenak
 @cindex Francesco Lovergine
 @cindex Matej Vela
- at cindex Luk Claes
- at item Daniel Baumann, Barry deFreese, Francesco Lovergine, Matej Vela, Luk Claes
+ at item Daniel Baumann, Nick Bower, Luk Claebs, Barry deFreese, Aleksandar Jelenak, Francesco Lovergine, Matej Vela
 Debian packaging
 @cindex Patrice Dumas
 @cindex Ed Hill
@@ -12857,6 +15921,16 @@ Autoconf/M4 help
 @cindex Kyle Wilcox
 @item Gavin Burris, Kyle Wilcox
 RHEL and CentOS build scripts and bug reports.
+ at cindex Andrea Cimatoribus
+ at item Andrea Cimatoribus
+ at acronym{NCO} Spiral Logo
+ at cindex Martin Otte
+ at cindex Etienne Tourigny
+ at item Martin Otte, Etienne Tourigny
+Single bug reports and fixes
+ at cindex Wenshan Wang
+ at item Wenshan Wang
+ at acronym{CMIP5} and @acronym{MODIS} processing documentation.
 @end table
 Please let me know if your name was omitted!
 
@@ -12909,15 +15983,456 @@ We are interested in obtaining @acronym{NASA} support for
 We plan to submit a proposal to the next suitable @acronym{NASA}
 @acronym{NRA} or @acronym{NSF} opportunity. 
 
-We are considering a lot of interesting ideas for still more proposals.
+We are considering other interesting ideas for still more proposals.
 Please contact us if you wish to be involved with any future
 @acronym{NCO}-related proposals.  
 Comments on the proposals and letters of support are also very welcome.
 
 @html
+<a name="quicksrt"></a> <!-- http://nco.sf.net/nco.html#quicksrt -->
+ at end html
+ at node Quick Start, CMIP5 Example, Contributing, Top
+ at chapter Quick Start
+ at cindex Quick Start
+Simple examples in Bash shell scripts showing how to average data with
+different file structures.  
+Here we include monthly, seasonal and annual average with daily or
+monthly data in either one file or multiple files. 
+
+ at menu
+* Daily data in one file::
+* Monthly data in one file::
+* One time point one file::
+* Multiple files with multiple time points::
+ at end menu
+
+ at node Daily data in one file, Monthly data in one file, Quick Start, Quick Start
+ at section Daily data in one file
+ at cindex daily data
+Suppose we have daily data from Jan 1st, 1990 to Dec. 31, 2005 in the
+file of @file{in.nc} with the record dimension as @code{time}.
+
+ at noindent
+ at strong{Monthly average:}
+ at cindex monthly average
+ at cindex average
+ at cindex time-averaging
+ at example
+for yyyy in @{1990..2005@}; do      # Loop over years
+  for moy in @{1..12@}; do          # Loop over months
+    mm=$( printf "%02d" $@{moy@} )  # Change to 2-digit format
+
+    # Average specific month yyyy-mm
+    ncra -O -d time,"$@{yyyy@}-$@{mm@}-01","$@{yyyy@}-$@{mm@}-31" \
+         in.nc in_$@{yyyy@}$@{mm@}.nc
+  done
+done
+
+# Concatenate monthly files together
+ncrcat -O in_??????.nc out.nc
+ at end example
+
+ at noindent
+ at strong{Annual average:}
+ at cindex annual average from daily data
+ at cindex average
+ at cindex time-averaging
+ at example
+for yyyy in @{1990..2005@}; do      # Loop over years
+  ncra -O -d time,"$@{yyyy@}-01-01","$@{yyyy@}-12-31" in.nc in_$@{yyyy@}.nc
+done
+
+# Concatenate annual files together
+ncrcat -O in_????.nc out.nc
+ at end example
+The @option{-O} switch means to overwrite the pre-existing files (@pxref{Batch Mode}).
+The @option{-d} option is to specify the range of hyperslabs (@pxref{Hyperslabs}).
+There are detailed instructions on @command{ncra} (@pxref{ncra netCDF Record Averager} and @command{ncrcat} (@pxref{ncrcat netCDF Record Concatenator}).
+ at acronym{NCO} supports UDUnits so that we can use readable dates as time dimension (@pxref{UDUnits Support}).
+
+ at node Monthly data in one file, One time point one file, Daily data in one file, Quick Start
+ at section Monthly data in one file
+ at cindex monthly data
+Inside the input file @file{in.nc}, the record dimension @code{time} is from Jan 1990 to Dec 2005.
+
+ at noindent
+ at strong{Seasonal average (e.g., DJF):}
+ at cindex seasonal average
+ at cindex average
+ at cindex time-averaging
+ at example
+ncra -O --mro -d time,"1990-12-01",,12,3 in.nc out.nc
+ at end example
+
+ at noindent
+ at strong{Annual average:}
+ at cindex annual average from monthly data
+ at cindex average
+ at cindex time-averaging
+ at example
+ncra -O --mro -d time,,,12,12 in.nc out.nc
+ at end example
+Here we use the duration feature (i.e., the number after the fourth comma: @samp{3} in the seasonal example and the second @samp{12} in the annual example) 
+to retrieve groups of records separated by regular intervals (@pxref{Duration}).
+The option @option{--mro} switches @command{ncra} to produce a Multi-Record Output instead of a single-record output.
+For example, assume @var{snd} is a 3D array with dimensions @code{time} * @code{latitude} * @code{longitude} 
+and @code{time} includes every month from Jan. 1990 to Dec. 2005, 192 months as total, which are 16 years.
+Let's look at the following two command lines.
+ at example
+ncra --mro -v snd -d time,"1990-12-01",,12,3 in.nc out_mro.nc
+ncra -v snd -d time,"1990-12-01",,12,3 in.nc out_sro.nc
+ at end example
+In the first output file, @file{out_mro.nc}, @var{snd} is still a 3D array with dimensions @code{time} * @code{latitude} * @code{longitude},
+but the length of @code{time} now is 16, meaning 16 winters.
+In the second output file, @file{out_sro.nc}, the length of @code{time} is @w{only 1}.
+It is now the average of all the 16 winters.
+
+when using @samp{-d @var{dim},min[,max]} to specify the hyperslabs,
+you can leave it blank if you want to include the minimum or the maximum of the data, like we did above.
+
+ at node One time point one file, Multiple files with multiple time points, Monthly data in one file, Quick Start
+ at section One time point one file
+ at cindex daily data
+ at cindex monthly data
+ at cindex average
+ at cindex time-averaging
+This means if you have daily data of 30 days, there will be 30 data files.
+Or if you have monthly data of 12 months, there will be 12 data files.
+Dealing with this kind of files, you need to specify the file names in shell scripts and pass them to NCO operators.
+For example, your daily data files may look like @file{snd_19900101.nc}, @file{snd_19900102.nc}, @file{snd_19900103.nc} ...
+If you want to know the monthly average of Jan 1990, you can write like,
+ at example
+ncra -O snd_199001??.nc out.nc
+ at end example
+You might want to use loop if you need the average of each month.
+ at example
+for moy in @{1..12@}; do          # Loop over months
+  mm=$( printf "%02d" $@{moy@} )  # Change to 2-digit format
+
+  ncra -O snd_????$@{mm@}??.nc out_$@{mm@}.nc
+done
+ at end example
+
+ at node Multiple files with multiple time points,  , One time point one file, Quick Start
+ at section Multiple files with multiple time points
+ at cindex daily data
+ at cindex monthly data
+Similar as the last one, it's more about shell scripts.
+Suppose you have daily data with one month of them in one data file.
+The monthly average is simply to apply @command{ncra} on the specific data file.
+And for seasonal averages, you can specify the three months by shell scripts.
+
+ at html
+<a name="cmip5"></a> <!-- http://nco.sf.net/nco.html#cmip5 -->
+ at end html
+ at node CMIP5 Example, Parallel, Quick Start, Top
+ at chapter @acronym{CMIP5} Example
+ at cindex @acronym{CMIP5}
+ at ignore
+This @uref{http://nco.sf.net/xmp_cesm.html,Wonderful CMIP5 Documentation}
+shows complete processing of the @acronym{CMIP5} dataset.
+ at end ignore
+
+The fifth phase of the Coupled Model Intercomparison Project 
+(@uref{http://cmip-pcmdi.llnl.gov/cmip5/index.html?submenuheader=0, @acronym{CMIP5}}) 
+provides a multi-model framework for comparing the mechanisms and
+responses of climate models from around the world.   
+However, it is a tremendous workload to retrieve a single climate
+statistic from all these models, each of which includes several ensemble 
+members.  
+Not only that, it is too often a repetitive process which impedes new
+research and hypothesis testing.  
+Our @acronym{NASA} @acronym{ACCESS} project is designed to simplify and
+accelerate this process.  
+To begin, we document below a prototypical example of @acronym{CMIP5}
+analysis and evaluation using traditional @acronym{NCO} commands on
+netCDF3-format model and @acronym{HDF-EOS} format observational
+(@acronym{NASA} @acronym{MODIS} satellite instrument) datasets.
+These examples complement the @acronym{NCO} User Guide by detailing
+in-depth data analysis in a frequently encountered ``real world''
+context.   
+Graphical representations of the results (@acronym{NCL} scripts
+available upon request) are provided to illustrate physical meaning of
+the analysis.
+ at ignore
+Over the summer of 2013, we will add scripts which make use of new
+ at acronym{NCO} features that combine all the loops in the analysis into
+single commands by exploiting @acronym{NCO}'s new group aggregation and
+arithmetic features.  
+ at end ignore
+Since @acronym{NCO} @value{nco-edition} can process hierarchical 
+datasets, i.e., datasets stored with netCDF4 groups, we present sample
+scripts illustrating group-based processing as well.
+
+ at menu
+* Combine Files::
+* Global Distribution of Long-term Average::
+* Annual Average over Regions::
+* Monthly Cycle::
+* Regrid MODIS Data::
+* Add Coordinates to MODIS Data::
+* Permute MODIS Coordinates::
+ at end menu
+
+ at node Combine Files, Global Distribution of Long-term Average, CMIP5 Example, CMIP5 Example
+ at section Combine Files
+ at cindex file combination
+Sometimes, the data of one ensemble member will be stored in several
+files to reduce single file size.
+But it is not convenient to process in a batch mode.
+The following script illustrates how to concatenate these files into one.
+Key steps include: 
+ at enumerate
+ at item Obtain number and names (or partial names) of files in a directory
+ at item Concatenate files along the record dimension (usually time) using 
+ at command{ncrcat} (@pxref{ncrcat netCDF Record Concatenator}).
+ at end enumerate
+ at example
+ at verbatiminclude xmp/cmb_fl.sh
+ at end example
+
+Right now, @acronym{CIMP5} model data downloaded from Earth System Grid Federation (@uref{http://pcmdi9.llnl.gov/esgf-web-fe/, @acronym{ESGF}})
+has not implement @key{group} feature yet. 
+Therefore users can aggregate the flat files into groups themselves.
+The following script shows how to aggregate models to one file.
+Each dataset becomes a group in the output file.
+There can be several levels of groups.
+In this example, we employ two experiments as the top-level.
+The second-level comprises different models.
+Some models have more than one ensemble member.
+These ensemble members are on the third level.
+In each sub-group of ensemble members, we appended two variables,
+ at var{snc} and @var{snd} (these stand for snow cover and snow depth, by
+the way).
+ at cindex @option{--gag}
+ at cindex aggregation
+ at cindex group aggregation
+ at cindex groups, creating
+ at example
+ at verbatiminclude xmp/cmb_fl_grp.sh
+ at end example
+
+ at node Global Distribution of Long-term Average, Annual Average over Regions, Combine Files, CMIP5 Example
+ at section Global Distribution of Long-term Average
+ at cindex spatial distribution
+ at cindex long-term average
+ at cindex average
+ at cindex time-averaging
+ at float Figure,fgr:glb
+ at image{xmp/fgr1,3.5in} 
+ at caption{Global Distribution of Long-term Average.}
+ at end float
+ at noindent
+This section illustrates how to calculate the global distribution of
+long-term average (@pxref{fgr:glb}).
+Key steps include: 
+ at enumerate
+ at item Average ensemble members of each model using @command{nces} (@pxref{nces netCDF Ensemble Statistics})
+ at item Average the record dimension using @command{ncra} (@pxref{ncra netCDF Record Averager})
+ at item Store results of each model as a distinct group in a single output file using @command{ncecat} (@pxref{ncrcat netCDF Record Concatenator}) with the @option{--gag} option
+ at end enumerate
+ at example
+ at verbatiminclude xmp/glb_avg.sh
+ at end example
+
+With the use of @key{group}, the above script except ensemble average  
+will be shortened to just @w{ONE LINE}.
+ at cindex groups, averaging
+ at ignore
+Isn't it amazing or what?!
+ at end ignore
+ at example
+# Data from cmb_fl_grp.sh
+ncra -O sn_LImon_all-mdl_all-xpt_all-nsm_199001-200512.nc \
+  sn_LImon_all-mdl_all-xpt_all-nsm_tm-avg.nc
+ at end example
+
+ at node Annual Average over Regions, Monthly Cycle, Global Distribution of Long-term Average, CMIP5 Example
+ at section Annual Average over Regions
+ at cindex annual average
+ at cindex average
+ at cindex time-averaging
+ at cindex area-averaging
+ at cindex dimension order
+ at cindex anomalies
+ at cindex standard deviation
+ at cindex renaming variables
+ at cindex attributes, editing
+ at cindex	attributes, modifying
+ at cindex	attributes, overwriting
+ at cindex regression
+ at cindex nco script file
+ at cindex variables, appending
+ at float Figure,fgr:anl
+ at image{xmp/fgr2,4in}
+ at caption{Annual Average over Regions.}
+ at end float
+ at noindent
+This section illustrates how to calculate the annual average over
+specific regions (@pxref{fgr:anl}).
+Key steps include: 
+ at enumerate
+ at item Spatial average using @command{ncap2} (@pxref{ncap2 netCDF Arithmetic Processor}) and @command{ncwa} (@pxref{ncwa netCDF Weighted Averager}); 
+ at item Change dimension order using @command{ncpdq} (@pxref{ncpdq netCDF Permute Dimensions Quickly});
+ at item Annual average using @command{ncra} (@pxref{ncra netCDF Record Averager});
+ at item Anomaly from long-term average using @command{ncbo} (@pxref{ncbo netCDF Binary Operator});
+ at item Standard deviation using @command{ncbo} (@pxref{ncbo netCDF Binary Operator}) and @command{nces} (@pxref{nces netCDF Ensemble Statistics});
+ at item Rename variables using @command{ncrename} (@pxref{ncrename netCDF Renamer});
+ at item Edit attributions using @command{ncatted} (@pxref{ncatted netCDF Attribute Editor});
+ at item Linear regression using @command{ncap2} (@pxref{ncap2 netCDF Arithmetic Processor});
+ at item Use @command{ncap2} (@pxref{ncap2 netCDF Arithmetic Processor}) with nco script file (i.e., @file{.nco} file);
+ at item Move variables around using @command{ncks} (@pxref{ncks netCDF Kitchen Sink}).
+ at end enumerate
+ at strong{Main Script}
+ at example
+ at verbatiminclude xmp/ann_avg.sh
+ at end example
+ at strong{gsl_rgr.nco}
+ at example
+ at verbatiminclude xmp/gsl_rgr.nco
+ at end example
+
+With the @key{group} feature, 
+all the loops over experiments, models and ensemble members can be omitted.
+As we are working on implementing @key{group} feature in all @acronym{NCO} operators,
+some functions (e.g., regression and standard deviation) 
+may have to wait until the new versions.
+ at cindex group, averaging
+ at cindex group, standard deviation
+ at cindex aggregation
+ at cindex ensemble average
+ at example
+ at verbatiminclude xmp/ann_avg_grp.sh
+ at end example
+
+ at node Monthly Cycle, Regrid MODIS Data, Annual Average over Regions, CMIP5 Example
+ at section Monthly Cycle
+ at cindex monthly average
+ at cindex average
+ at cindex time-averaging
+ at cindex anomalies
+ at cindex geographical weight
+ at cindex weighted average
+ at float Figure,fgr:mon
+ at image{xmp/fgr3,4in}
+ at caption{Monthly Cycle.}
+ at end float
+ at noindent
+This script illustrates how to calculate the monthly anomaly from the
+annual average (@pxref{fgr:mon}). 
+In order to keep only the monthly cycle,
+we will subtract the annual average of each year from the monthly data,
+instead of subtracting the long-term average.
+This is a little more complicated in coding since we need to loop over years. 
+ at example
+ at verbatiminclude xmp/mcc.sh
+ at end example
+Using @key{group} and @option{-d} option of @command{ncbo},
+the script will be shortened.
+ at example
+ at verbatiminclude xmp/mcc_grp.sh
+ at end example
+
+ at node Regrid MODIS Data, Add Coordinates to MODIS Data, Monthly Cycle, CMIP5 Example
+ at section Regrid @acronym{MODIS} Data
+ at cindex regrid
+ at cindex MODIS
+ at cindex bilinear interpolation
+ at cindex interpolation
+ at cindex renaming variables
+ at cindex renaming attributes
+ at cindex renaming dimensions
+ at cindex attributes, editing
+ at cindex	attributes, modifying
+ at cindex	attributes, overwriting
+In order to compare the results between @acronym{MODIS} and
+ at acronym{CMIP5} models, one usually regrids one or both datasets so 
+that the spatial resolutions match. 
+Here, the script illustrates how to regrid @acronym{MODIS} data.
+Key steps include:
+ at enumerate
+ at item Regrid using bilinear interpolation (@pxref{Bilinear interpolation})
+ at item Rename variables, dimensions and attributions using @command{ncrename} (@pxref{ncrename netCDF Renamer}).
+ at end enumerate
+ at strong{Main Script}
+ at example
+ at verbatiminclude xmp/rgr.sh
+ at end example
+ at strong{bi_interp.nco}
+ at example
+ at verbatiminclude xmp/bi_interp.nco
+ at end example
+
+ at node Add Coordinates to MODIS Data, Permute MODIS Coordinates, Regrid MODIS Data, CMIP5 Example
+ at section Add Coordinates to @acronym{MODIS} Data
+ at cindex MODIS
+ at cindex coordinates
+ at strong{Main Script}
+ at example
+ at verbatiminclude xmp/add_crd.sh
+ at end example
+ at strong{crd.nco}
+ at example
+ at verbatiminclude xmp/crd.nco
+ at end example
+
+ at node Permute MODIS Coordinates,  , Add Coordinates to MODIS Data, CMIP5 Example
+ at section Permute @acronym{MODIS} Coordinates
+ at cindex coordinates, modifying
+ at acronym{MODIS} orders latitude data from 90 at textdegree{}N to
+-90 at textdegree{}N, and longitude from -180 at textdegree{}E to
+180 at textdegree{}E.   
+However, @acronym{CMIP5} orders latitude from -90 at textdegree{}N to
+90 at textdegree{}N, and longitude from 0 at textdegree{}E to
+360 at textdegree{}E.  
+This script changes the @acronym{MODIS} coordinates to follow the
+ at acronym{CMIP5} convention.
+ at example
+ at verbatiminclude xmp/pmt_crd.sh
+ at end example
+
+ at ignore
+ at node Hierarchical Data Files, Parallel, CMIP5 Example, Top
+section Hierarchical Data Files
+ at cindex hierarchical data
+ at cindex groups
+Hierarchical Data Files support arbitrarily nested groups.
+The following @acronym{NCO} operators now can work recursively through all groups:
+ at itemize @bullet
+ at item @command{ncbo} (@pxref{ncbo netCDF Binary Operator})
+ at item @command{ncecat} (@pxref{ncecat netCDF Ensemble Concatenator})
+ at item @command{ncks} (@pxref{ncks netCDF Kitchen Sink})
+ at item @command{ncpdq} (@pxref{ncpdq netCDF Permute Dimensions Quickly})
+ at item @command{ncwa} (@pxref{ncwa netCDF Weighted Averager})
+ at end itemize
+Here is an example showing:
+ at enumerate
+ at item How to create a hierarchical data file from multiple files using @command{ncecat} (@pxref{ncecat netCDF Ensemble Concatenator}) or @command{ncks} (@pxref{ncks netCDF Kitchen Sink});
+ at item Hyperslabs using @command{ncks} (@pxref{ncks netCDF Kitchen Sink});
+ at item Spatial average and time average using @command{ncwa} (@pxref{ncwa netCDF Weighted Averager});
+ at item Anomaly from average using @command{ncbo} (@pxref{ncbo netCDF Binary Operator}).
+ at end enumerate
+ at example
+ at verbatiminclude xmp/grp.sh
+ at end example
+ at end ignore
+
+ at html
+<a name="parallel"></a> <!-- http://nco.sf.net/nco.html#parallel -->
+ at end html
+ at node Parallel, CCSM Example, CMIP5 Example, Top
+ at chapter Parallel
+ at cindex @command{parallel}
+This section will describe scripting strategies, including the use of
+ at acronym{GNU} Parallel, to @acronym{NCO}.
+ at example
+ls *historical*.nc | parallel ncks -O -d time,"1950-01-01","2000-01-01" @{@} 50y/@{@}
+ at end example
+
+ at html
 <a name="ccsm"></a> <!-- http://nco.sf.net/nco.html#ccsm -->
 @end html
- at node CCSM Example, mybibnode, Contributing, Top
+ at node CCSM Example, mybibnode, Parallel, Top
 @chapter CCSM Example
 @cindex CCSM
 
@@ -13100,8 +16615,9 @@ Task 3: Regional processing
 Let's say you are interested in examining the California region.
 Hyperslab your dataset to isolate the appropriate latitude/longitudes.
 
-  ncks -O -D 1 -d lat,30.0,37.0 -d lon,240.0,270.0 \ 
-    $@{drc_out@}/$@{caseid@}_clm_0112.nc $@{drc_out@}/$@{caseid@}_clm_0112_Cal.nc
+ncks -O -D 1 -d lat,30.0,37.0 -d lon,240.0,270.0 \ 
+    $@{drc_out@}/$@{caseid@}_clm_0112.nc \
+    $@{drc_out@}/$@{caseid@}_clm_0112_Cal.nc
 
 The dataset is now much smaller!
 To examine particular metrics.
@@ -13113,12 +16629,14 @@ OPeNDAP server examples:
 
 UCI DAP servers:
 ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
-ncrcat -O -C -D 3 -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
+ncrcat -O -C -D 3 \
+  -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
   -l /tmp in.nc in.nc ~/foo.nc
 
 Unidata DAP servers:
-ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-ncrcat -O -C -D 3 -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
+ncks -M -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
+ncrcat -O -C -D 3 \
+  -p http://thredds-test.ucar.edu/thredds/dodsC/testdods \
   -l /tmp in.nc in.nc ~/foo.nc
 
 NOAA DAP servers:
@@ -13225,7 +16743,7 @@ Level III: Many derived products from level II, e.g.,
 @end html
 @node mybibnode, General Index, CCSM Example, Top
 @chapter References
- at itemize @asis
+ at itemize
 @mybibitem{ZeM07} Zender, C. S., and H. J. Mangalam (2007), Scaling Properties of Common Statistical Operators for Gridded Datasets, Int. J. High Perform. Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.
 @mybibitem{Zen08} Zender, C. S. (2008), Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO), Environ. Modell. Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
 @mybibitem{WZJ07} Wang, D. L., C. S. Zender, and S. F. Jenks (2007), DAP-enabled Server-side Data Reduction and Analysis, Proceedings of the 23rd AMS Conference on Interactive Information and Processing Systems (IIPS) for Meteorology, Oceanography, and Hydrology, Paper 3B.2, January 14-18, San Antonio, TX. American Meteorological Society, AMS Press, Boston, MA.
@@ -13236,6 +16754,7 @@ Level III: Many derived products from level II, e.g.,
 @mybibitem{WZJ074} Wang, D. L., C. S. Zender and S. F. Jenks (2007), A System for Scripted Data Analysis at Remote Data Centers, Eos Trans. AGU, 88(52), Fall Meet. Suppl., Abstract IN11B-0469.
 @mybibitem{WZJ081} Wang, D. L., C. S. Zender and S. F. Jenks (2008), Cluster Workflow Execution of Retargeted Data Analysis Scripts, Proceedings of the 8th IEEE Int'l Symposium on Cluster Computing and the Grid (IEEE CCGRID '08), pp. 449-458, Lyon, France, May 2008.
 @mybibitem{WZJ091} Wang, D. L., C. S. Zender, and S. F. Jenks (2009), Efficient Clustered Server-side Data Analysis Workflows using SWAMP, Earth Sci. Inform., 2(3), 141-155, doi:10.1007/s12145-009-0021-z.
+ at mybibitem{PFT88} Press, Flannery, Teukolsky, and Vetterling (1988), Numerical Recipes in C, Cambridge Univ. Press, New York, NY.
 @end itemize
 
 @c @node Name Index, General Index, Operators, Top
@@ -13253,8 +16772,5 @@ Level III: Many derived products from level II, e.g.,
 @syncodeindex fn cp
 @printindex cp
 
- at c Print table of contents
- at contents
-
 @c TTFN (Ta ta for now)
 @bye
diff --git a/doc/nco.txt b/doc/nco.txt
deleted file mode 100644
index 7620a3b..0000000
--- a/doc/nco.txt
+++ /dev/null
@@ -1,10076 +0,0 @@
-This file documents NCO, a collection of utilities to manipulate and
-analyze netCDF files.
-
-   Copyright (C) 1995-2012 Charlie Zender
-
-   This is the first edition of the `NCO User's Guide',
-and is consistent with version 2 of `texinfo.tex'.
-
-   Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.3 or
-any later version published by the Free Software Foundation; with no
-Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. The
-license is available online at `http://www.gnu.org/copyleft/fdl.html'
-
-   The original author of this software, Charlie Zender, wants to
-improve it with the help of your suggestions, improvements,
-bug-reports, and patches.
-Charlie Zender <surname at uci dot edu> (yes, my surname is zender)
-3200 Croul Hall
-Department of Earth System Science
-University of California, Irvine
-Irvine, CA 92697-3100
-NCO User's Guide
-****************
-
-_Note to readers of the NCO User's Guide in Info format_: _The NCO
-User's Guide in PDF format (./nco.pdf) (also on SourceForge
-(http://nco.sf.net/nco.pdf)) contains the complete NCO documentation._
-This Info documentation is equivalent except it refers you to the
-printed (i.e., DVI, PostScript, and PDF) documentation for description
-of complex mathematical expressions.
-
-The netCDF Operators, or NCO, are a suite of programs known as
-operators.  The operators facilitate manipulation and analysis of data
-stored in the self-describing netCDF format, available from
-(`http://www.unidata.ucar.edu/packages/netcdf').  Each NCO operator
-(e.g., ncks) takes netCDF input file(s), performs an operation (e.g.,
-averaging, hyperslabbing, or renaming), and outputs a processed netCDF
-file.  Although most users of netCDF data are involved in scientific
-research, these data formats, and thus NCO, are generic and are equally
-useful in fields from agriculture to zoology.  The NCO User's Guide
-illustrates NCO use with examples from the field of climate modeling
-and analysis.  The NCO homepage is `http://nco.sf.net', and there is a
-mirror at `http://dust.ess.uci.edu/nco'.
-
-   This documentation is for NCO version 4.0.9.  It was last updated
-13 February 2012.  Corrections, additions, and rewrites of this
-documentation are very welcome.
-
-   Enjoy,
-Charlie Zender
-
-Foreword
-********
-
-NCO is the result of software needs that arose while I worked on
-projects funded by NCAR, NASA, and ARM.  Thinking they might prove
-useful as tools or templates to others, it is my pleasure to provide
-them freely to the scientific community.  Many users (most of whom I
-have never met) have encouraged the development of NCO.  Thanks
-espcially to Jan Polcher, Keith Lindsay, Arlindo da Silva, John
-Sheldon, and William Weibel for stimulating suggestions and
-correspondence.  Your encouragment motivated me to complete the `NCO
-User's Guide'.  So if you like NCO, send me a note!  I should mention
-that NCO is not connected to or officially endorsed by Unidata, ACD,
-ASP, CGD, or Nike.
-
-Charlie Zender
-May 1997
-Boulder, Colorado
-
-
-Major feature improvements entitle me to write another Foreword.  In
-the last five years a lot of work has been done to refine NCO.  NCO is
-now an open source project and appears to be much healthier for it.
-The list of illustrious institutions that do not endorse NCO continues
-to grow, and now includes UCI.
-
-Charlie Zender
-October 2000
-Irvine, California
-
-
-The most remarkable advances in NCO capabilities in the last few years
-are due to contributions from the Open Source community.  Especially
-noteworthy are the contributions of Henry Butowsky and Rorik Peterson.
-
-Charlie Zender
-January 2003
-Irvine, California
-
-
-NCO was generously supported from 2004-2008 by US National Science
-Foundation (NSF) grant IIS-0431203
-(http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0431203).
-This support allowed me to maintain and extend core NCO code, and
-others to advance NCO in new directions: Gayathri Venkitachalam helped
-implement MPI; Harry Mangalam improved regression testing and
-benchmarking; Daniel Wang developed the server-side capability, SWAMP;
-and Henry Butowsky, a long-time contributor, developed `ncap2'.  This
-support also led NCO to debut in professional journals and meetings.
-The personal and professional contacts made during this evolution have
-been immensely rewarding.
-
-Charlie Zender
-March 2008
-Grenoble, France
-Summary
-*******
-
-This manual describes NCO, which stands for netCDF Operators.  NCO is a
-suite of programs known as "operators".  Each operator is a standalone,
-command line program executed at the shell-level like, e.g., `ls' or
-`mkdir'.  The operators take netCDF files (including HDF5 files
-constructed using the netCDF API) as input, perform an operation (e.g.,
-averaging or hyperslabbing), and produce a netCDF file as output.  The
-operators are primarily designed to aid manipulation and analysis of
-data.  The examples in this documentation are typical applications of
-the operators for processing climate model output.  This stems from
-their origin, though the operators are as general as netCDF itself.
-
-1 Introduction
-**************
-
-1.1 Availability
-================
-
-The complete NCO source distribution is currently distributed as a
-"compressed tarfile" from `http://sf.net/projects/nco' and from
-`http://dust.ess.uci.edu/nco/nco.tar.gz'.  The compressed tarfile must
-be uncompressed and untarred before building NCO.  Uncompress the file
-with `gunzip nco.tar.gz'.  Extract the source files from the resulting
-tarfile with `tar -xvf nco.tar'.  GNU `tar' lets you perform both
-operations in one step with `tar -xvzf nco.tar.gz'.
-
-   The documentation for NCO is called the `NCO User's Guide'.  The
-`User's Guide' is available in Postscript, HTML, DVI, TeXinfo, and Info
-formats.  These formats are included in the source distribution in the
-files `nco.ps', `nco.html', `nco.dvi', `nco.texi', and `nco.info*',
-respectively.  All the documentation descends from a single source file,
-`nco.texi' (1).  Hence the documentation in every format is very
-similar.  However, some of the complex mathematical expressions needed
-to describe `ncwa' can only be displayed in DVI, Postscript, and PDF
-formats.
-
-   A complete list of papers and publications on/about NCO is available
-on the NCO homepage.  Most of these are freely available.  The primary
-refereed publications are fxm ZeM06 and fxm Zen07.  These contain
-copyright restrictions which limit their redistribution, but they are
-freely available in preprint form from the NCO.
-
-   If you want to quickly see what the latest improvements in NCO are
-(without downloading the entire source distribution), visit the NCO
-homepage at `http://nco.sf.net'.  The HTML version of the `User's
-Guide' is also available online through the World Wide Web at URL
-`http://nco.sf.net/nco.html'.  To build and use NCO, you must have
-netCDF installed.  The netCDF homepage is
-`http://www.unidata.ucar.edu/packages/netcdf'.
-
-   New NCO releases are announced on the netCDF list and on the
-`nco-announce' mailing list
-`http://lists.sf.net/mailman/listinfo/nco-announce'.
-
-   ---------- Footnotes ----------
-
-   (1) To produce these formats, `nco.texi' was simply run through the
-freely available programs `texi2dvi', `dvips', `texi2html', and
-`makeinfo'.  Due to a bug in TeX, the resulting Postscript file,
-`nco.ps', contains the Table of Contents as the final pages.  Thus if
-you print `nco.ps', remember to insert the Table of Contents after the
-cover sheet before you staple the manual.
-
-1.2 Operating systems compatible with NCO
-=========================================
-
-NCO has been successfully ported and tested and is known to work on the
-following 32- and 64-bit platforms: IBM AIX 4.x, 5.x, FreeBSD 4.x,
-GNU/Linux 2.x, LinuxPPC, LinuxAlpha, LinuxARM, LinuxSparc64, SGI IRIX
-5.x and 6.x, MacOS X 10.x, NEC Super-UX 10.x, DEC OSF, Sun SunOS 4.1.x,
-Solaris 2.x, Cray UNICOS 8.x-10.x, and MS Windows95 and all later
-versions.  If you port the code to a new operating system, please send
-me a note and any patches you required.
-
-   The major prerequisite for installing NCO on a particular platform
-is the successful, prior installation of the netCDF library (and, as of
-2003, the UDUnits library).  Unidata has shown a commitment to
-maintaining netCDF and UDUnits on all popular UNIX platforms, and is
-moving towards full support for the Microsoft Windows operating system
-(OS).  Given this, the only difficulty in implementing NCO on a
-particular platform is standardization of various C-language API system
-calls.  NCO code is tested for ANSI compliance by compiling with
-C compilers including those from GNU (`gcc -std=c99 -pedantic
--D_BSD_SOURCE -D_POSIX_SOURCE' -Wall) (1), Comeau Computing (`como
---c99'), Cray (`cc'), HP/Compaq/DEC (`cc'), IBM (`xlc -c
--qlanglvl=extc99'), Intel (`icc -std=c99'), NEC (`cc'), PathScale
-(QLogic) (`pathcc -std=c99'), PGI (`pgcc -c9x'), SGI (`cc -c99'), and
-Sun (`cc').  NCO (all commands and the `libnco' library) and the C++
-interface to netCDF (called `libnco_c++') comply with the ISO C++
-standards as implemented by Comeau Computing (`como'), Cray (`CC'), GNU
-(`g++ -Wall'), HP/Compaq/DEC (`cxx'), IBM (`xlC'), Intel (`icc'), NEC
-(`c++'), PathScale (Qlogic) (`pathCC'), PGI (`pgCC'), SGI (`CC
--LANG:std'), and Sun (`CC -LANG:std').  See `nco/bld/Makefile' and
-`nco/src/nco_c++/Makefile.old' for more details and exact settings.
-
-   Until recently (and not even yet), ANSI-compliant has meant
-compliance with the 1989 ISO C-standard, usually called C89 (with minor
-revisions made in 1994 and 1995).  C89 lacks variable-size arrays,
-restricted pointers, some useful `printf' formats, and many
-mathematical special functions.  These are valuable features of C99,
-the 1999 ISO C-standard.  NCO is C99-compliant where possible and
-C89-compliant where necessary.  Certain branches in the code are
-required to satisfy the native SGI and SunOS C compilers, which are
-strictly ANSI C89 compliant, and cannot benefit from C99 features.
-However, C99 features are fully supported by modern AIX, GNU, Intel,
-NEC, Solaris, and UNICOS compilers.  NCO requires a C99-compliant
-compiler as of NCO version 2.9.8, released in August, 2004.
-
-   The most time-intensive portion of NCO execution is spent in
-arithmetic operations, e.g., multiplication, averaging, subtraction.
-These operations were performed in Fortran by default until August,
-1999.  This was a design decision based on the relative speed of
-Fortran-based object code vs. C-based object code in late 1994.
-C compiler vectorization capabilities have dramatically improved since
-1994.  We have accordingly replaced all Fortran subroutines with
-C functions.  This greatly simplifies the task of building NCO on
-nominally unsupported platforms.  As of August 1999, NCO built entirely
-in C by default.  This allowed NCO to compile on any machine with an
-ANSI C compiler.  In August 2004, the first C99 feature, the `restrict'
-type qualifier, entered NCO in version 2.9.8.  C compilers can obtain
-better performance with C99 restricted pointers since they inform the
-compiler when it may make Fortran-like assumptions regarding pointer
-contents alteration.  Subsequently, NCO requires a C99 compiler to
-build correctly (2).
-
-   In January 2009, NCO version 3.9.6 was the first to link to the GNU
-Scientific Library (GSL).  GSL must be version 1.4 or later.  NCO, in
-particular `ncap2', uses the GSL special function library to evaluate
-geoscience-relevant mathematics such as Bessel functions, Legendre
-polynomials, and incomplete gamma functions (*note GSL special
-functions::).
-
-   In June 2005, NCO version 3.0.1 began to take advantage of C99
-mathematical special functions.  These include the standarized gamma
-function (called `tgamma()' for "true gamma").  NCO automagically takes
-advantage of some GNU Compiler Collection (GCC) extensions to ANSI C.
-
-   As of July 2000 and NCO version 1.2, NCO no longer performs
-arithmetic operations in Fortran.  We decided to sacrifice executable
-speed for code maintainability.  Since no objective statistics were
-ever performed to quantify the difference in speed between the Fortran
-and C code, the performance penalty incurred by this decision is
-unknown.  Supporting Fortran involves maintaining two sets of routines
-for every arithmetic operation.  The `USE_FORTRAN_ARITHMETIC' flag is
-still retained in the `Makefile'.  The file containing the Fortran
-code, `nco_fortran.F', has been deprecated but a volunteer
-(Dr. Frankenstein?) could resurrect it.  If you would like to volunteer
-to maintain `nco_fortran.F' please contact me.
-
-   ---------- Footnotes ----------
-
-   (1) The `_BSD_SOURCE' token is required on some Linux platforms where
-`gcc' dislikes the network header files like `netinet/in.h').
-
-   (2) NCO may still build with an ANSI or ISO C89 or C94/95-compliant
-compiler if the C pre-processor undefines the `restrict' type
-qualifier, e.g., by invoking the compiler with `-Drestrict='''.
-
-1.2.1 Compiling NCO for Microsoft Windows OS
---------------------------------------------
-
-NCO has been successfully ported and tested on most Microsoft Windows
-operating systems including: 95/98/NT/2000/XP/Vista.  The switches
-necessary to accomplish this are included in the standard distribution
-of NCO.  Using the freely available Cygwin (formerly gnu-win32)
-development environment (1), the compilation process is very similar to
-installing NCO on a UNIX system.  Set the `PVM_ARCH' preprocessor token
-to `WIN32'.  Note that defining `WIN32' has the side effect of disabling
-Internet features of NCO (see below).  NCO should now build like it
-does on UNIX.
-
-   The least portable section of the code is the use of standard UNIX
-and Internet protocols (e.g., `ftp', `rcp', `scp', `sftp', `getuid',
-`gethostname', and header files `<arpa/nameser.h>' and `<resolv.h>').  Fortunately,
-these UNIX-y calls are only invoked by the single NCO subroutine which
-is responsible for retrieving files stored on remote systems (*note
-Remote storage::).  In order to support NCO on the Microsoft Windows
-platforms, this single feature was disabled (on Windows OS only).  This
-was required by Cygwin 18.x--newer versions of Cygwin may support these
-protocols (let me know if this is the case).  The NCO operators should
-behave identically on Windows and UNIX platforms in all other respects.
-
-   ---------- Footnotes ----------
-
-   (1) The Cygwin package is available from
-`http://sourceware.redhat.com/cygwin'
-Currently, Cygwin 20.x comes with the GNU C/C++ compilers (`gcc', `g++'.
-These GNU compilers may be used to build the netCDF distribution itself.
-
-1.3 Symbolic Links
-==================
-
-NCO relies on a common set of underlying algorithms.  To minimize
-duplication of source code, multiple operators sometimes share the same
-underlying source.  This is accomplished by symbolic links from a
-single underlying executable program to one or more invoked executable
-names.  For example, `ncea' and `ncrcat' are symbolically linked to the
-`ncra' executable.  The `ncra' executable behaves slightly differently
-based on its invocation name (i.e., `argv[0]'), which can be `ncea',
-`ncra', or `ncrcat'.  Logically, these are three different operators
-that happen to share the same executable.
-
-   For historical reasons, and to be more user friendly, multiple
-synonyms (or pseudonyms) may refer to the same operator invoked with
-different switches.  For example, `ncdiff' is the same as `ncbo' and
-`ncpack' is the same as `ncpdq'.  We implement the symbolic links and
-synonyms by the executing the following UNIX commands in the directory
-where the NCO executables are installed.
-     ln -s -f ncbo ncdiff    # ncbo --op_typ='+'
-     ln -s -f ncra ncecat    # ncra --pseudonym='ncecat'
-     ln -s -f ncra ncrcat    # ncra --pseudonym='ncrcat'
-     ln -s -f ncbo ncadd     # ncbo --op_typ='+'
-     ln -s -f ncbo ncsubtract # ncbo --op_typ='-'
-     ln -s -f ncbo ncmultiply # ncbo --op_typ='*'
-     ln -s -f ncbo ncdivide   # ncbo --op_typ='/'
-     ln -s -f ncpdq ncpack    # ncpdq
-     ln -s -f ncpdq ncunpack  # ncpdq --unpack
-     # NB: Cygwin executable (and link) names have an '.exe' suffix, e.g.,
-     ln -s -f ncbo.exe ncdiff.exe
-     ...
-   The imputed command called by the link is given after the comment.
-As can be seen, some these links impute the passing of a command line
-argument to further modify the behavior of the underlying executable.
-For example, `ncdivide' is a pseudonym for `ncbo --op_typ='/''.
-
-1.4 Libraries
-=============
-
-Like all executables, the NCO operators can be built using dynamic
-linking.  This reduces the size of the executable and can result in
-significant performance enhancements on multiuser systems.
-Unfortunately, if your library search path (usually the
-`LD_LIBRARY_PATH' environment variable) is not set correctly, or if the
-system libraries have been moved, renamed, or deleted since NCO was
-installed, it is possible NCO operators will fail with a message that
-they cannot find a dynamically loaded (aka "shared object" or `.so')
-library.  This will produce a distinctive error message, such as
-`ld.so.1: /usr/local/bin/ncea: fatal: libsunmath.so.1: can't open file:
-errno=2'.  If you received an error message like this, ask your system
-administrator to diagnose whether the library is truly missing (1), or
-whether you simply need to alter your library search path.  As a final
-remedy, you may re-compile and install NCO with all operators
-statically linked.
-
-   ---------- Footnotes ----------
-
-   (1) The `ldd' command, if it is available on your system, will tell
-you where the executable is looking for each dynamically loaded
-library. Use, e.g., `ldd `which ncea`'.
-
-1.5 netCDF2/3/4 and HDF4/5 Support
-==================================
-
-netCDF version 2 was released in 1993.  NCO (specifically `ncks') began
-soon after this in 1994.  netCDF 3.0 was released in 1996, and we were
-eager to reap the performance advantages of the newer netCDF
-implementation.  One netCDF3 interface call (`nc_inq_libvers') was
-added to NCO in January, 1998, to aid in maintainance and debugging.
-In March, 2001, the final conversion of NCO to netCDF3 was completed
-(coincidentally on the same day netCDF 3.5 was released).  NCO
-versions 2.0 and higher are built with the `-DNO_NETCDF_2' flag to
-ensure no netCDF2 interface calls are used.  
-
-   However, the ability to compile NCO with only netCDF2 calls is worth
-maintaining because HDF version 4 (1) (available from HDF
-(http://hdf.ncsa.uiuc.edu)) supports only the netCDF2 library calls
-(see `http://hdf.ncsa.uiuc.edu/UG41r3_html/SDS_SD.fm12.html#47784').
-Note that there are multiple versions of HDF.  Currently HDF
-version 4.x supports netCDF2 and thus NCO version 1.2.x.  If NCO
-version 1.2.x (or earlier) is built with only netCDF2 calls then all
-NCO operators should work with HDF4 files as well as netCDF files (2).  The
-preprocessor token `NETCDF2_ONLY' exists in NCO version 1.2.x to
-eliminate all netCDF3 calls.  Only versions of NCO numbered 1.2.x and
-earlier have this capability.  The NCO 1.2.x branch will be maintained
-with bugfixes only (no new features) until HDF begins to fully support
-the netCDF3 interface (which is employed by NCO 2.x).  If, at
-compilation time, `NETCDF2_ONLY' is defined, then NCO version 1.2.x
-will not use any netCDF3 calls and, if linked properly, the resulting
-NCO operators will work with HDF4 files.  The `Makefile' supplied with
-NCO 1.2.x is written to simplify building in this HDF capability.  When
-NCO is built with `make HDF4=Y', the `Makefile' sets all required
-preprocessor flags and library links to build with the HDF4 libraries
-(which are assumed to reside under `/usr/local/hdf4', edit the
-`Makefile' to suit your installation).
-
-   HDF version 5 became available in 1999, but did not support netCDF
-(or, for that matter, Fortran) as of December 1999.  By early 2001,
-HDF5 did support Fortran90.  In 2004, Unidata and NCSA began a project
-to implement the HDF5 features necessary to support the netCDF API.
-NCO version 3.0.3 added support for reading/writing netCDF4-formatted
-HDF5 files in October, 2005.  See *note Selecting Output File Format::
-for more details.
-
-   HDF support for netCDF was completed with HDF5 version version 1.8
-in 2007.  The netCDF front-end that uses this HDF5 back-end was
-completed and released soon after as netCDF version 4.  Download it
-from the netCDF4
-(http://my.unidata.ucar.edu/content/software/netcdf/netcdf-4) website.
-
-   NCO version 3.9.0, released in May, 2007, added support for all
-netCDF4 atomic data types except `NC_STRING'.  Support for `NC_STRING',
-including ragged arrays of strings, was finally added in version 3.9.9,
-released in June, 2009.  Support for additional netCDF4 features has
-been incremental.  We add one netCDF4 feature at a time.  You must
-build NCO with netCDF4 to obtain this support.
-
-   The main netCDF4 features that NCO currently supports are the new
-atomic data types, Lempel-Ziv compression (deflation), and chunking.
-The new atomic data types are `NC_UBYTE', `NC_USHORT', `NC_UINT',
-`NC_INT64', and `NC_UINT64'.  Eight-byte integer support is an
-especially useful improvement from netCDF3.  All NCO operators support
-these types, e.g., `ncks' copies and prints them, `ncra' averages them,
-and `ncap2' processes algebraic scripts with them.  `ncks' prints
-compression information, if any, to screen.
-
-   NCO version 3.9.1 (June, 2007) added support for netCDF4 Lempel-Ziv
-deflation.  Lempel-Ziv deflation is a lossless compression technique.
-See *note Deflation:: for more details.
-
-   NCO version 3.9.9 (June, 2009) added support for netCDF4 chunking in
-`ncks' and `ncecat'.  NCO version 4.0.4 (September, 2010) completed
-support for netCDF4 chunking in the remaining operators.  See *note
-Chunking:: for more details.
-
-   netCDF4-enabled NCO handles netCDF3 files without change.  In
-addition, it automagically handles netCDF4 (HDF5) files: If you feed
-NCO netCDF3 files, it produces netCDF3 output.  If you feed NCO netCDF4
-files, it produces netCDF4 output.  Use the handy-dandy `-4' switch to
-request netCDF4 output from netCDF3 input, i.e., to convert netCDF3 to
-netCDF4.  See *note Selecting Output File Format:: for more details.
-
-   As of 2010, netCDF4 is still relatively new software.  Problems with
-netCDF4 and HDF libraries are still being fixed.  Binary NCO
-distributions shipped as RPMs use the netCDF4 library, while debs use
-the netCDF3 library, because of upstream requirements.
-
-   One must often build NCO from source to obtain netCDF4 support.
-Typically, one specifies the root of the netCDF4 installation
-directory. Do this with the `NETCDF4_ROOT' variable.  Then use your
-preferred NCO build mechanism, e.g.,
-     export NETCDF4_ROOT=/usr/local/netcdf4 # Set netCDF4 location
-     cd ~/nco;./configure --enable-netcdf4  # Configure mechanism -or-
-     cd ~/nco/bld;./make NETCDF4=Y allinone # Old Makefile mechanism
-
-   We carefully track the netCDF4 releases, and keep the netCDF4 atomic
-type support and other features working.  Our long term goal is to
-utilize more of the extensive new netCDF4 feature set. The next major
-netCDF4 feature we are likely to utilize is parallel I/O. We will
-enable this in the MPI netCDF operators.
-
-   ---------- Footnotes ----------
-
-   (1) The Hierarchical Data Format, or HDF, is another self-describing
-data format similar to, but more elaborate than, netCDF.
-
-   (2) One must link the NCO code to the HDF4 MFHDF library instead of
-the usual netCDF library.  Does `MF' stands for Mike Folk?  Perhaps.
-In any case, the MFHDF library only supports netCDF2 calls.  Thus I
-will try to keep this capability in NCO as long as it is not too much
-trouble.
-
-1.6 Help Requests and Bug Reports
-=================================
-
-We generally receive three categories of mail from users: help requests,
-bug reports, and feature requests.  Notes saying the equivalent of
-"Hey, NCO continues to work great and it saves me more time everyday
-than it took to write this note" are a distant fourth.
-
-   There is a different protocol for each type of request.  The
-preferred etiquette for all communications is via NCO Project Forums.
-Do not contact project members via personal e-mail unless your request
-comes with money or you have damaging information about our personal
-lives.  _Please use the Forums_--they preserve a record of the questions
-and answers so that others can learn from our exchange.  Also, since
-NCO is government-funded, this record helps us provide program officers
-with information they need to evaluate our project.
-
-   Before posting to the NCO forums described below, you might first
-register (https://sf.net/account/register.php) your name and email
-address with SourceForge.net or else all of your postings will be
-attributed to "nobody".  Once registered you may choose to "monitor"
-any forum and to receive (or not) email when there are any postings
-including responses to your questions.  We usually reply to the forum
-message, not to the original poster.
-
-   If you want us to include a new feature in NCO, check first to see
-if that feature is already on the TODO (file:./TODO) list.  If it is,
-why not implement that feature yourself and send us the patch?  If the
-feature is not yet on the list, then send a note to the NCO Discussion
-forum (http://sourceforge.net/projects/nco/forums/forum/9829).
-
-   Read the manual before reporting a bug or posting a help request.
-Sending questions whose answers are not in the manual is the best way
-to motivate us to write more documentation.  We would also like to
-accentuate the contrapositive of this statement.  If you think you have
-found a real bug _the most helpful thing you can do is simplify the
-problem to a manageable size and then report it_.  The first thing to
-do is to make sure you are running the latest publicly released version
-of NCO.
-
-   Once you have read the manual, if you are still unable to get NCO to
-perform a documented function, submit a help request.  Follow the same
-procedure as described below for reporting bugs (after all, it might be
-a bug).  That is, describe what you are trying to do, and include the
-complete commands (run with `-D 5'), error messages, and version of NCO
-(with `-r').  Post your help request to the NCO Help forum
-(http://sourceforge.net/projects/nco/forums/forum/9830).
-
-   If you think you used the right command when NCO misbehaves, then
-you might have found a bug.  Incorrect numerical answers are the
-highest priority.  We usually fix those within one or two days.  Core
-dumps and sementation violations receive lower priority.  They are
-always fixed, eventually.
-
-   How do you simplify a problem that reveal a bug?  Cut out extraneous
-variables, dimensions, and metadata from the offending files and re-run
-the command until it no longer breaks.  Then back up one step and
-report the problem.  Usually the file(s) will be very small, i.e., one
-variable with one or two small dimensions ought to suffice.  Run the
-operator with `-r' and then run the command with `-D 5' to increase the
-verbosity of the debugging output.  It is very important that your
-report contain the exact error messages and compile-time environment.
-Include a copy of your sample input file, or place one on a publically
-accessible location, of the file(s).  Post the full bug report to the
-NCO Project buglist (http://sf.net/bugs/?group_id=3331).
-
-   Build failures count as bugs.  Our limited machine access means we
-cannot fix all build failures.  The information we need to diagnose,
-and often fix, build failures are the three files output by GNU build
-tools, `nco.config.log.${GNU_TRP}.foo', `nco.configure.${GNU_TRP}.foo',
-and `nco.make.${GNU_TRP}.foo'.  The file `configure.eg' shows how to
-produce these files.  Here `${GNU_TRP}' is the "GNU architecture
-triplet", the CHIP-VENDOR-OS string returned by `config.guess'.  Please
-send us your improvements to the examples supplied in `configure.eg'.  The
-regressions archive at `http://dust.ess.uci.edu/nco/rgr' contains the
-build output from our standard test systems.  You may find you can
-solve the build problem yourself by examining the differences between
-these files and your own.
-
-2 Operator Strategies
-*********************
-
-2.1 Philosophy
-==============
-
-The main design goal is command line operators which perform useful,
-scriptable operations on netCDF files.  Many scientists work with
-models and observations which produce too much data to analyze in
-tabular format.  Thus, it is often natural to reduce and massage this
-raw or primary level data into summary, or second level data, e.g.,
-temporal or spatial averages.  These second level data may become the
-inputs to graphical and statistical packages, and are often more
-suitable for archival and dissemination to the scientific community.
-NCO performs a suite of operations useful in manipulating data from the
-primary to the second level state.  Higher level interpretive languages
-(e.g., IDL, Yorick, Matlab, NCL, Perl, Python), and lower level
-compiled languages (e.g., C, Fortran) can always perform any task
-performed by NCO, but often with more overhead.  NCO, on the other
-hand, is limited to a much smaller set of arithmetic and metadata
-operations than these full blown languages.
-
-   Another goal has been to implement enough command line switches so
-that frequently used sequences of these operators can be executed from a
-shell script or batch file.  Finally, NCO was written to consume the
-absolute minimum amount of system memory required to perform a given
-job.  The arithmetic operators are extremely efficient; their exact
-memory usage is detailed in *note Memory Requirements::.
-
-2.2 Climate Model Paradigm
-==========================
-
-NCO was developed at NCAR to aid analysis and manipulation of datasets
-produced by General Circulation Models (GCMs).  Datasets produced by
-GCMs share many features with all gridded scientific datasets and so
-provide a useful paradigm for the explication of the NCO operator set.
-Examples in this manual use a GCM paradigm because latitude, longitude,
-time, temperature and other fields related to our natural environment
-are as easy to visualize for the layman as the expert.
-
-2.3 Temporary Output Files
-==========================
-
-NCO operators are designed to be reasonably fault tolerant, so that if
-there is a system failure or the user aborts the operation (e.g., with
-`C-c'), then no data are lost.  The user-specified OUTPUT-FILE is only
-created upon successful completion of the operation (1).  This is
-accomplished by performing all operations in a temporary copy of
-OUTPUT-FILE.  The name of the temporary output file is constructed by
-appending `.pid<PROCESS ID>.<OPERATOR NAME>.tmp' to the user-specified
-OUTPUT-FILE name.  When the operator completes its task with no fatal
-errors, the temporary output file is moved to the user-specified
-OUTPUT-FILE.  Note the construction of a temporary output file uses
-more disk space than just overwriting existing files "in place"
-(because there may be two copies of the same file on disk until the NCO
-operation successfully concludes and the temporary output file
-overwrites the existing OUTPUT-FILE).  Also, note this feature
-increases the execution time of the operator by approximately the time
-it takes to copy the OUTPUT-FILE.  Finally, note this feature allows
-the OUTPUT-FILE to be the same as the INPUT-FILE without any danger of
-"overlap".
-
-   Other safeguards exist to protect the user from inadvertently
-overwriting data.  If the OUTPUT-FILE specified for a command is a
-pre-existing file, then the operator will prompt the user whether to
-overwrite (erase) the existing OUTPUT-FILE, attempt to append to it, or
-abort the operation.  However, in processing large amounts of data, too
-many interactive questions slows productivity.  Therefore NCO also
-implements two ways to override its own safety features, the `-O' and
-`-A' switches.  Specifying `-O' tells the operator to overwrite any
-existing OUTPUT-FILE without prompting the user interactively.
-Specifying `-A' tells the operator to attempt to append to any existing
-OUTPUT-FILE without prompting the user interactively.  These switches
-are useful in batch environments because they suppress interactive
-keyboard input.
-
-   ---------- Footnotes ----------
-
-   (1) The `ncrename' operator is an exception to this rule.  *Note
-ncrename netCDF Renamer::.
-
-2.4 Appending Variables
-=======================
-
-Adding variables from one file to another is often desirable.  This is
-referred to as "appending", although some prefer the terminology
-"merging" (1) or "pasting".  Appending is often confused with what NCO
-calls "concatenation".  In NCO, concatenation refers to splicing a
-variable along the record dimension.  The length along the record
-dimension of the output is the sum of the lengths of the input files.
-Appending, on the other hand, refers to copying a variable from one file
-to another file which may or may not already contain the variable (2).
-NCO can append or concatenate just one variable, or all the variables
-in a file at the same time.
-
-   In this sense, `ncks' can append variables from one file to another
-file.  This capability is invoked by naming two files on the command
-line, INPUT-FILE and OUTPUT-FILE.  When OUTPUT-FILE already exists, the
-user is prompted whether to "overwrite", "append/replace", or "exit"
-from the command.  Selecting "overwrite" tells the operator to erase
-the existing OUTPUT-FILE and replace it with the results of the
-operation.  Selecting "exit" causes the operator to exit--the
-OUTPUT-FILE will not be touched in this case.  Selecting
-"append/replace" causes the operator to attempt to place the results of
-the operation in the existing OUTPUT-FILE, *Note ncks netCDF Kitchen
-Sink::.
-
-   The simplest way to create the union of two files is
-     ncks -A fl_1.nc fl_2.nc
-   This puts the contents of `fl_1.nc' into `fl_2.nc'.  The `-A' is
-optional.  On output, `fl_2.nc' is the union of the input files,
-regardless of whether they share dimensions and variables, or are
-completely disjoint.  The append fails if the input files have
-differently named record dimensions (since netCDF supports only one),
-or have dimensions of the same name but different sizes.
-
-   ---------- Footnotes ----------
-
-   (1) The terminology "merging" is reserved for an (unwritten)
-operator which replaces hyperslabs of a variable in one file with
-hyperslabs of the same variable from another file
-
-   (2) Yes, the terminology is confusing.  By all means mail me if you
-think of a better nomenclature.  Should NCO use "paste" instead of
-"append"?
-
-2.5 Simple Arithmetic and Interpolation
-=======================================
-
-Users comfortable with NCO semantics may find it easier to perform some
-simple mathematical operations in NCO rather than higher level
-languages.  `ncbo' (*note ncbo netCDF Binary Operator::) does file
-addition, subtraction, multiplication, division, and broadcasting.
-`ncflint' (*note ncflint netCDF File Interpolator::) does file
-addition, subtraction, multiplication and interpolation.  Sequences of
-these commands can accomplish simple but powerful operations from the
-command line.
-
-2.6 Averagers vs. Concatenators
-===============================
-
-The most frequently used operators of NCO are probably the averagers
-and concatenators.  Because there are so many permutations of averaging
-(e.g., across files, within a file, over the record dimension, over
-other dimensions, with or without weights and masks) and of
-concatenating (across files, along the record dimension, along other
-dimensions), there are currently no fewer than five operators which
-tackle these two purposes: `ncra', `ncea', `ncwa', `ncrcat', and
-`ncecat'.  These operators do share many capabilities (1), but each has
-its unique specialty.  Two of these operators, `ncrcat' and `ncecat',
-are for concatenating hyperslabs across files.  The other two
-operators, `ncra' and `ncea', are for averaging hyperslabs across files
-(2).  First, let's describe the concatenators, then the averagers.
-
-   ---------- Footnotes ----------
-
-   (1) Currently `ncea' and `ncrcat' are symbolically linked to the
-`ncra' executable, which behaves slightly differently based on its
-invocation name (i.e., `argv[0]').  These three operators share the
-same source code, but merely have different inner loops.
-
-   (2) The third averaging operator, `ncwa', is the most sophisticated
-averager in NCO.  However, `ncwa' is in a different class than `ncra'
-and `ncea' because it can only operate on a single file per invocation
-(as opposed to multiple files).  On that single file, however, `ncwa'
-provides a richer set of averaging options--including weighting,
-masking, and broadcasting.
-
-2.6.1 Concatenators `ncrcat' and `ncecat'
------------------------------------------
-
-Joining independent files together along a record dimension is called
-"concatenation".  `ncrcat' is designed for concatenating record
-variables, while `ncecat' is designed for concatenating fixed length
-variables.  Consider five files, `85.nc', `86.nc', ... `89.nc' each
-containing a year's worth of data.  Say you wish to create from them a
-single file, `8589.nc' containing all the data, i.e., spanning all five
-years.  If the annual files make use of the same record variable, then
-`ncrcat' will do the job nicely with, e.g., `ncrcat 8?.nc 8589.nc'.
-The number of records in the input files is arbitrary and can vary from
-file to file.  *Note ncrcat netCDF Record Concatenator::, for a
-complete description of `ncrcat'.
-
-   However, suppose the annual files have no record variable, and thus
-their data are all fixed length.  For example, the files may not be
-conceptually sequential, but rather members of the same group, or
-"ensemble".  Members of an ensemble may have no reason to contain a
-record dimension.  `ncecat' will create a new record dimension (named
-RECORD by default) with which to glue together the individual files
-into the single ensemble file.  If `ncecat' is used on files which
-contain an existing record dimension, that record dimension is
-converted to a fixed-length dimension of the same name and a new record
-dimension (named `record') is created.  Consider five realizations,
-`85a.nc', `85b.nc', ... `85e.nc' of 1985 predictions from the same
-climate model.  Then `ncecat 85?.nc 85_ens.nc' glues the individual
-realizations together into the single file, `85_ens.nc'.  If an input
-variable was dimensioned [`lat',`lon'], it will have dimensions
-[`record',`lat',`lon'] in the output file.  A restriction of `ncecat'
-is that the hyperslabs of the processed variables must be the same from
-file to file.  Normally this means all the input files are the same
-size, and contain data on different realizations of the same variables.
-*Note ncecat netCDF Ensemble Concatenator::, for a complete description
-of `ncecat'.
-
-   `ncpdq' makes it possible to concatenate files along any dimension,
-not just the record dimension.  First, use `ncpdq' to convert the
-dimension to be concatenated (i.e., extended with data from other
-files) into the record dimension.  Second, use `ncrcat' to concatenate
-these files.  Finally, if desirable, use `ncpdq' to revert to the
-original dimensionality.  As a concrete example, say that files
-`x_01.nc', `x_02.nc', ... `x_10.nc' contain time-evolving datasets from
-spatially adjacent regions.  The time and spatial coordinates are
-`time' and `x', respectively.  Initially the record dimension is `time'.
-Our goal is to create a single file that contains joins all the
-spatially adjacent regions into one single time-evolving dataset.
-     for idx in 01 02 03 04 05 06 07 08 09 10; do # Bourne Shell
-       ncpdq -a x,time x_${idx}.nc foo_${idx}.nc # Make x record dimension
-     done
-     ncrcat foo_??.nc out.nc       # Concatenate along x
-     ncpdq -a time,x out.nc out.nc # Revert to time as record dimension
-
-   Note that `ncrcat' will not concatenate fixed-length variables,
-whereas `ncecat' concatenates both fixed-length and record variables
-along a new record variable.  To conserve system memory, use `ncrcat'
-where possible.
-
-2.6.2 Averagers `ncea', `ncra', and `ncwa'
-------------------------------------------
-
-The differences between the averagers `ncra' and `ncea' are analogous
-to the differences between the concatenators.  `ncra' is designed for
-averaging record variables from at least one file, while `ncea' is
-designed for averaging fixed length variables from multiple files.
-`ncra' performs a simple arithmetic average over the record dimension
-of all the input files, with each record having an equal weight in the
-average.  `ncea' performs a simple arithmetic average of all the input
-files, with each file having an equal weight in the average.  Note that
-`ncra' cannot average fixed-length variables, but `ncea' can average
-both fixed-length and record variables.  To conserve system memory, use
-`ncra' rather than `ncea' where possible (e.g., if each INPUT-FILE is
-one record long).  The file output from `ncea' will have the same
-dimensions (meaning dimension names as well as sizes) as the input
-hyperslabs (*note ncea netCDF Ensemble Averager::, for a complete
-description of `ncea').  The file output from `ncra' will have the same
-dimensions as the input hyperslabs except for the record dimension,
-which will have a size of 1 (*note ncra netCDF Record Averager::, for a
-complete description of `ncra').
-
-2.6.3 Interpolator `ncflint'
-----------------------------
-
-`ncflint' can interpolate data between or two files.  Since no other
-operators have this ability, the description of interpolation is given
-fully on the `ncflint' reference page (*note ncflint netCDF File
-Interpolator::).  Note that this capability also allows `ncflint' to
-linearly rescale any data in a netCDF file, e.g., to convert between
-differing units.
-
-2.7 Large Numbers of Files
-==========================
-
-Occasionally one desires to digest (i.e., concatenate or average)
-hundreds or thousands of input files.  Unfortunately, data archives
-(e.g., NASA EOSDIS) may not name netCDF files in a format understood by
-the `-n LOOP' switch (*note Specifying Input Files::) that
-automagically generates arbitrary numbers of input filenames.  The `-n
-LOOP' switch has the virtue of being concise, and of minimizing the
-command line.  This helps keeps output file small since the command
-line is stored as metadata in the `history' attribute (*note History
-Attribute::).  However, the `-n LOOP' switch is useless when there is no
-simple, arithmetic pattern to the input filenames (e.g., `h00001.nc',
-`h00002.nc', ... `h90210.nc').  Moreover, filename globbing does not
-work when the input files are too numerous or their names are too
-lengthy (when strung together as a single argument) to be passed by the
-calling shell to the NCO operator (1).  When this occurs, the ANSI
-C-standard `argc'-`argv' method of passing arguments from the calling
-shell to a C-program (i.e., an NCO operator) breaks down.  There are
-(at least) three alternative methods of specifying the input filenames
-to NCO in environment-limited situations.
-
-   The recommended method for sending very large numbers (hundreds or
-more, typically) of input filenames to the multi-file operators is to
-pass the filenames with the UNIX "standard input" feature, aka `stdin':
-     # Pipe large numbers of filenames to stdin
-     /bin/ls | grep ${CASEID}_'......'.nc | ncecat -o foo.nc
-   This method avoids all constraints on command line size imposed by
-the operating system.  A drawback to this method is that the `history'
-attribute (*note History Attribute::) does not record the name of any
-input files since the names were not passed on the command line.  This
-makes determining the data provenance at a later date difficult.  To
-remedy this situation, multi-file operators store the number of input
-files in the `nco_input_file_number' global attribute and the input
-file list itself in the `nco_input_file_list' global attribute (*note
-File List Attributes::).  Although this does not preserve the exact
-command used to generate the file, it does retains all the information
-required to reconstruct the command and determine the data provenance.
-
-   A second option is to use the UNIX `xargs' command.  This simple
-example selects as input to `xargs' all the filenames in the current
-directory that match a given pattern.  For illustration, consider a
-user trying to average millions of files which each have a six
-character filename.  If the shell buffer can not hold the results of
-the corresponding globbing operator, `??????.nc', then the filename
-globbing technique will fail.  Instead we express the filename pattern
-as an extended regular expression, `......\.nc' (*note Subsetting
-Variables::).  We use `grep' to filter the directory listing for this
-pattern and to pipe the results to `xargs' which, in turn, passes the
-matching filenames to an NCO multi-file operator, e.g., `ncecat'.
-     # Use xargs to transfer filenames on the command line
-     /bin/ls | grep ${CASEID}_'......'.nc | xargs -x ncecat -o foo.nc
-   The single quotes protect the only sensitive parts of the extended
-regular expression (the `grep' argument), and allow shell interpolation
-(the `${CASEID}' variable substitution) to proceed unhindered on the
-rest of the command.  `xargs' uses the UNIX pipe feature to append the
-suitably filtered input file list to the end of the `ncecat' command
-options.  The `-o foo.nc' switch ensures that the input files supplied
-by `xargs' are not confused with the output file name.  `xargs' does,
-unfortunately, have its own limit (usually about 20,000 characters) on
-the size of command lines it can pass.  Give `xargs' the `-x' switch to
-ensure it dies if it reaches this internal limit.  When this occurs,
-use either the `stdin' method above, or the symbolic link presented
-next.
-
-   Even when its internal limits have not been reached, the `xargs'
-technique may not be sophisticated enough to handle all situations.  A
-full scripting language like Perl can handle any level of complexity of
-filtering input filenames, and any number of filenames.  The technique
-of last resort is to write a script that creates symbolic links between
-the irregular input filenames and a set of regular, arithmetic
-filenames that the `-n LOOP' switch understands.  For example, the
-following Perl script a monotonically enumerated symbolic link to up to
-one million `.nc' files in a directory.  If there are 999,999 netCDF
-files present, the links are named `000001.nc' to `999999.nc': 
-     # Create enumerated symbolic links
-     /bin/ls | grep \.nc | perl -e \
-     '$idx=1;while(<STDIN>){chop;symlink $_,sprintf("%06d.nc",$idx++);}'
-     ncecat -n 999999,6,1 000001.nc foo.nc
-     # Remove symbolic links when finished
-     /bin/rm ??????.nc
-   The `-n LOOP' option tells the NCO operator to automatically
-generate the filnames of the symbolic links.  This circumvents any OS
-and shell limits on command line size.  The symbolic links are easily
-removed once NCO is finished.  One drawback to this method is that the
-`history' attribute (*note History Attribute::) retains the filename
-list of the symbolic links, rather than the data files themselves.
-This makes it difficult to determine the data provenance at a later
-date.
-
-   ---------- Footnotes ----------
-
-   (1) The exact length which exceeds the operating system internal
-limit for command line lengths varies from OS to OS and from shell to
-shell.  GNU `bash' may not have any arbitrary fixed limits to the size
-of command line arguments.  Many OSs cannot handle command line
-arguments (including results of file globbing) exceeding 4096
-characters.
-
-2.8 Large Datasets
-==================
-
-"Large datasets" are those files that are comparable in size to the
-amount of random access memory (RAM) in your computer.  Many users of
-NCO work with files larger than 100 MB.  Files this large not only push
-the current edge of storage technology, they present special problems
-for programs which attempt to access the entire file at once, such as
-`ncea' and `ncecat'.  If you work with a 300 MB files on a machine with
-only 32 MB of memory then you will need large amounts of swap space
-(virtual memory on disk) and NCO will work slowly, or even fail.  There
-is no easy solution for this.  The best strategy is to work on a
-machine with sufficient amounts of memory and swap space.  Since about
-2004, many users have begun to produce or analyze files exceeding 2 GB
-in size.  These users should familiarize themselves with NCO's Large
-File Support (LFS) capabilities (*note Large File Support::).  The next
-section will increase your familiarity with NCO's memory requirements.
-With this knowledge you may re-design your data reduction approach to
-divide the problem into pieces solvable in memory-limited situations.
-
-   If your local machine has problems working with large files, try
-running NCO from a more powerful machine, such as a network server.
-Certain machine architectures, e.g., Cray UNICOS, have special commands
-which allow one to increase the amount of interactive memory.  On Cray
-systems, try to increase the available memory with the `ilimit' command.  If
-you get a memory-related core dump (e.g., `Error exit (core dumped)')
-on a GNU/Linux system, try increasing the process-available memory with
-`ulimit'.
-
-   The speed of the NCO operators also depends on file size.  When
-processing large files the operators may appear to hang, or do nothing,
-for large periods of time.  In order to see what the operator is
-actually doing, it is useful to activate a more verbose output mode.
-This is accomplished by supplying a number greater than 0 to the `-D
-DEBUG-LEVEL' (or `--debug-level', or `--dbg_lvl') switch.  When the
-DEBUG-LEVEL is nonzero, the operators report their current status to
-the terminal through the STDERR facility.  Using `-D' does not slow the
-operators down.  Choose a DEBUG-LEVEL between 1 and 3 for most
-situations, e.g., `ncea -D 2 85.nc 86.nc 8586.nc'.  A full description
-of how to estimate the actual amount of memory the multi-file NCO
-operators consume is given in *note Memory Requirements::.
-
-2.9 Memory Requirements
-=======================
-
-Many people use NCO on gargantuan files which dwarf the memory
-available (free RAM plus swap space) even on today's powerful machines.
-These users want NCO to consume the least memory possible so that their
-scripts do not have to tediously cut files into smaller pieces that fit
-into memory.  We commend these greedy users for pushing NCO to its
-limits!
-
-   This section describes the memory NCO requires during operation.
-The required memory is based on the underlying algorithms.  The
-description below is the memory usage per thread.  Users with shared
-memory machines may use the threaded NCO operators (*note OpenMP
-Threading::).  The peak and sustained memory usage will scale
-accordingly, i.e., by the number of threads.  Memory consumption
-patterns of all operators are similar, with the exception of `ncap2'.
-
-2.9.1 Single and Multi-file Operators
--------------------------------------
-
-The multi-file operators currently comprise the record operators,
-`ncra' and `ncrcat', and the ensemble operators, `ncea' and `ncecat'.
-The record operators require _much less_ memory than the ensemble
-operators.  This is because the record operators operate on one single
-record (i.e., time-slice) at a time, wherease the ensemble operators
-retrieve the entire variable into memory.  Let MS be the peak sustained
-memory demand of an operator, FT be the memory required to store the
-entire contents of all the variables to be processed in an input file,
-FR be the memory required to store the entire contents of a single
-record of each of the variables to be processed in an input file, VR be
-the memory required to store a single record of the largest record
-variable to be processed in an input file, VT be the memory required to
-store the largest variable to be processed in an input file, VI be the
-memory required to store the largest variable which is not processed,
-but is copied from the initial file to the output file.  All operators
-require MI = VI during the initial copying of variables from the first
-input file to the output file.  This is the _initial_ (and transient)
-memory demand.  The _sustained_ memory demand is that memory required
-by the operators during the processing (i.e., averaging, concatenation)
-phase which lasts until all the input files have been processed.  The
-operators have the following memory requirements: `ncrcat' requires MS
-<= VR.  `ncecat' requires MS <= VT.  `ncra' requires MS = 2FR + VR.
-`ncea' requires MS = 2FT + VT.  `ncbo' requires MS <= 3VT (both input
-variables and the output variable).  `ncflint' requires MS <= 3VT (both
-input variables and the output variable).  `ncpdq' requires MS <= 2VT
-(one input variable and the output variable).  `ncwa' requires MS <=
-8VT (see below).  Note that only variables that are processed, e.g.,
-averaged, concatenated, or differenced, contribute to MS.  Variables
-which do not appear in the output file (*note Subsetting Variables::)
-are never read and contribute nothing to the memory requirements.
-
-   `ncwa' consumes between two and seven times the memory of a variable
-in order to process it.  Peak consumption occurs when storing
-simultaneously in memory one input variable, one tally array, one input
-weight, one conformed/working weight, one weight tally, one input mask,
-one conformed/working mask, and one output variable.  When invoked, the
-weighting and masking features contribute up to three-sevenths and
-two-sevenths of these requirements apiece.  If weights and masks are
-_not_ specified (i.e., no `-w' or `-a' options) then `ncwa'
-requirements drop to MS <= 3VT (one input variable, one tally array,
-and the output variable).
-
-   The above memory requirements must be multiplied by the number of
-threads THR_NBR (*note OpenMP Threading::).  If this causes problems
-then reduce (with `-t THR_NBR') the number of threads.
-
-2.9.2 Memory for `ncap2'
-------------------------
-
-`ncap2' has unique memory requirements due its ability to process
-arbitrarily long scripts of any complexity.  All scripts acceptable to
-`ncap2' are ultimately processed as a sequence of binary or unary
-operations.  `ncap2' requires MS <= 2VT under most conditions.  An
-exception to this is when left hand casting (*note Left hand casting::)
-is used to stretch the size of derived variables beyond the size of any
-input variables.  Let VC be the memory required to store the largest
-variable defined by left hand casting.  In this case, MS <= 2VC.
-
-   `ncap2' scripts are complete dynamic and may be of arbitrary length.
-A script that contains many thousands of operations, may uncover a slow
-memory leak even though each single operation consumes little
-additional memory.  Memory leaks are usually identifiable by their
-memory usage signature.  Leaks cause peak memory usage to increase
-monotonically with time regardless of script complexity.  Slow leaks
-are very difficult to find.  Sometimes a `malloc()' (or `new[]')
-failure is the only noticeable clue to their existance.  If you have
-good reasons to believe that a memory allocation failure is ultimately
-due to an NCO memory leak (rather than inadequate RAM on your system),
-then we would be very interested in receiving a detailed bug report.
-
-2.10 Performance
-================
-
-An overview of NCO capabilities as of about 2006 is in Zender, C. S.
-(2008), "Analysis of Self-describing Gridded Geoscience Data with
-netCDF Operators (NCO)", Environ. Modell. Softw.,
-doi:10.1016/j.envsoft.2008.03.004.  This paper is also available at
-`http://dust.ess.uci.edu/ppr/ppr_Zen08_ems.pdf'.
-
-   NCO performance and scaling for arithmetic operations is described in
-Zender, C. S., and H. J. Mangalam (2007), "Scaling Properties of Common
-Statistical Operators for Gridded Datasets", Int. J. High Perform.
-Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.  This
-paper is also available at
-`http://dust.ess.uci.edu/ppr/ppr_ZeM07_ijhpca.pdf'.
-
-   It is helpful to be aware of the aspects of NCO design that can
-limit its performance:
-  1. No data buffering is performed during `nc_get_var' and
-     `nc_put_var' operations.  Hyperslabs too large too hold in core
-     memory will suffer substantial performance penalties because of
-     this.
-
-  2. Since coordinate variables are assumed to be monotonic, the search
-     for bracketing the user-specified limits should employ a quicker
-     algorithm, like bisection, than the two-sided incremental search
-     currently implemented.
-
-  3. C_FORMAT, FORTRAN_FORMAT, SIGNEDNESS, SCALE_FORMAT and ADD_OFFSET
-     attributes are ignored by `ncks' when printing variables to screen.
-
-  4. In the late 1990s it was discovered that some random access
-     operations on large files on certain architectures (e.g., UNICOS)
-     were much slower with NCO than with similar operations performed
-     using languages that bypass the netCDF interface (e.g., Yorick).
-     This may have been a penalty of unnecessary byte-swapping in the
-     netCDF interface.  It is unclear whether such problems exist in
-     present day (2007) netCDF/NCO environments, where unnecessary
-     byte-swapping has been reduced or eliminated.
-
-3 NCO Features
-**************
-
-Many features have been implemented in more than one operator and are
-described here for brevity.  The description of each feature is
-preceded by a box listing the operators for which the feature is
-implemented.  Command line switches for a given feature are consistent
-across all operators wherever possible.  If no "key switches" are
-listed for a feature, then that particular feature is automatic and
-cannot be controlled by the user.
-
-3.1 Internationalization
-========================
-
-Availability: All operators
-NCO support for "internationalization" of textual input and output
-(e.g., Warning messages) is nascent.  We hope to produce foreign
-language string catalogues in 2004.
-
-3.2 Metadata Optimization
-=========================
-
-Availability: `ncatted', `ncks', `ncrename'
-Short options: None
-Long options: `--hdr_pad', `--header_pad'
-NCO supports padding headers to improve the speed of future metadata
-operations.  Use the `--hdr_pad' and `--header_pad' switches to request
-that HDR_PAD bytes be inserted into the metadata section of the output
-file.  Future metadata expansions will not incur the performance
-penalty of copying the entire output file unless the expansion exceeds
-the amount of header padding exceeded.  This can be beneficial when it
-is known that some metadata will be added at a future date.
-
-   This optimization exploits the netCDF library `nc__enddef()'
-function, which behaves differently with different versions of netCDF.
-It will improve speed of future metadata expansion with `CLASSIC' and
-`64bit' netCDF files, but not necessarily with `NETCDF4' files, i.e.,
-those created by the netCDF interface to the HDF5 library (*note
-Selecting Output File Format::).
-
-3.3 OpenMP Threading
-====================
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-t'
-Long options: `--thr_nbr', `--threads', `--omp_num_threads'
-NCO supports shared memory parallelism (SMP) when compiled with an
-OpenMP-enabled compiler.  Threads requests and allocations occur in two
-stages.  First, users may request a specific number of threads THR_NBR
-with the `-t' switch (or its long option equivalents, `--thr_nbr',
-`--threads', and `--omp_num_threads').  If not user-specified, OpenMP
-obtains THR_NBR from the `OMP_NUM_THREADS' environment variable, if
-present, or from the OS, if not.
-
-   NCO may modify THR_NBR according to its own internal settings before
-it requests any threads from the system.  Certain operators contain
-hard-code limits to the number of threads they request.  We base these
-limits on our experience and common sense, and to reduce potentially
-wasteful system usage by inexperienced users.  For example, `ncrcat' is
-extremely I/O-intensive so we restrict THR_NBR <= 2 for `ncrcat'.  This
-is based on the notion that the best performance that can be expected
-from an operator which does no arithmetic is to have one thread reading
-and one thread writing simultaneously.  In the future (perhaps with
-netCDF4), we hope to demonstrate significant threading improvements
-with operators like `ncrcat' by performing multiple simultaneous writes.
-
-   Compute-intensive operators (`ncap', `ncwa' and `ncpdq') benefit
-most from threading.  The greatest increases in throughput due to
-threading occur on large datasets where each thread performs millions,
-at least, of floating point operations.  Otherwise, the system overhead
-of setting up threads probably outweighs the speed enhancements due to
-SMP parallelism.  However, we have not yet demonstrated that the SMP
-parallelism scales well beyond four threads for these operators.  Hence
-we restrict THR_NBR <= 4 for all operators.  We encourage users to play
-with these limits (edit file `nco_omp.c') and send us their feedback.
-
-   Once the initial THR_NBR has been modified for any operator-specific
-limits, NCO requests the system to allocate a team of THR_NBR threads
-for the body of the code.  The operating system then decides how many
-threads to allocate based on this request.  Users may keep track of
-this information by running the operator with DBG_LVL > 0.
-
-   By default, threaded operators attach one global attribute,
-`nco_openmp_thread_number', to any file they create or modify.  This
-attribute contains the number of threads the operator used to process
-the input files.  This information helps to verify that the answers
-with threaded and non-threaded operators are equal to within machine
-precision.  This information is also useful for benchmarking.
-
-3.4 Command Line Options
-========================
-
-Availability: All operators
-NCO achieves flexibility by using "command line options".  These
-options are implemented in all traditional UNIX commands as single
-letter "switches", e.g., `ls -l'.  For many years NCO used only single
-letter option names.  In late 2002, we implemented GNU/POSIX extended
-or long option names for all options.  This was done in a backward
-compatible way such that the full functionality of NCO is still
-available through the familiar single letter options.  In the future,
-however, some features of NCO may require the use of long options,
-simply because we have nearly run out of single letter options.  More
-importantly, mnemonics for single letter options are often
-non-intuitive so that long options provide a more natural way of
-expressing intent.
-
-   Extended options, also called long options, are implemented using the
-system-supplied `getopt.h' header file, if possible.  This provides the
-`getopt_long' function to NCO (1).
-
-   The syntax of "short options" (single letter options) is `-KEY
-VALUE' (dash-key-space-value).  Here, KEY is the single letter option
-name, e.g., `-D 2'.
-
-   The syntax of "long options" (multi-letter options) is `--LONG_NAME
-VALUE' (dash-dash-key-space-value), e.g., `--dbg_lvl 2' or
-`--LONG_NAME=VALUE' (dash-dash-key-equal-value), e.g., `--dbg_lvl=2'.
-Thus the following are all valid for the `-D' (short version) or
-`--dbg_lvl' (long version) command line option.
-     ncks -D 3 in.nc        # Short option
-     ncks --dbg_lvl=3 in.nc # Long option, preferred form
-     ncks --dbg_lvl 3 in.nc # Long option, alternate form
-   The last example is preferred for two reasons.  First, `--dbg_lvl'
-is more specific and less ambiguous than `-D'.  The long option form
-makes scripts more self documenting and less error prone.  Often long
-options are named after the source code variable whose value they carry.
-Second, the equals sign `=' joins the key (i.e., LONG_NAME) to the
-value in an uninterruptible text block.  Experience shows that users
-are less likely to mis-parse commands when restricted to this form.
-
-   GNU implements a superset of the POSIX standard which allows any
-unambiguous truncation of a valid option to be used.
-     ncks -D 3 in.nc        # Short option
-     ncks --dbg_lvl=3 in.nc # Long option, full form
-     ncks --dbg=3 in.nc     # Long option, unambiguous truncation
-     ncks --db=3 in.nc      # Long option, unambiguous truncation
-     ncks --d=3 in.nc       # Long option, ambiguous truncation
-   The first four examples are equivalent and will work as expected.
-The final example will exit with an error since `ncks' cannot
-disambiguate whether `--d' is intended as a truncation of `--dbg_lvl',
-of `--dimension', or of some other long option.
-
-   NCO provides many long options for common switches.  For example,
-the debugging level may be set in all operators with any of the
-switches `-D', `--debug-level', or `--dbg_lvl'.  This flexibility
-allows users to choose their favorite mnemonic.  For some, it will be
-`--debug' (an unambiguous truncation of `--debug-level', and other will
-prefer `--dbg'.  Interactive users usually prefer the minimal amount of
-typing, i.e., `-D'.  We recommend that scripts which are re-usable
-employ some form of the long options for future maintainability.
-
-   This manual generally uses the short option syntax.  This is for
-historical reasons and to conserve space.  The remainder of this manual
-specifies the full LONG_NAME of each option.  Users are expected to
-pick the unambiguous truncation of each option name that most suits
-their taste.
-
-   ---------- Footnotes ----------
-
-   (1) If a `getopt_long' function cannot be found on the system, NCO
-will use the `getopt_long' from the `my_getopt' package by Benjamin
-Sittler <bsittler at iname.com>.  This is BSD-licensed software available
-from `http://www.geocities.com/ResearchTriangle/Node/9405/#my_getopt'.
-
-3.5 Specifying Input Files
-==========================
-
-Availability (`-n'): `ncea', `ncecat', `ncra', `ncrcat'
-Availability (`-p'): All operators
-Short options: `-n', `-p'
-Long options: `--nintap', `--pth', `--path'
-It is important that users be able to specify multiple input files
-without typing every filename in full, often a tedious task even by
-graduate student standards.  There are four different ways of
-specifying input files to NCO: explicitly typing each, using UNIX shell
-wildcards, and using the NCO `-n' and `-p' switches (or their long
-option equivalents, `--nintap' or `--pth' and `--path', respectively).
-Techniques to augment these methods to specify arbitrary numbers (e.g.,
-thousands) and patterns of filenames are discussed separately (*note
-Large Numbers of Files::).
-
-   To illustrate these methods, consider the simple problem of using
-`ncra' to average five input files, `85.nc', `86.nc', ... `89.nc', and
-store the results in `8589.nc'.  Here are the four methods in order.
-They produce identical answers.
-     ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncra 8[56789].nc 8589.nc
-     ncra -p INPUT-PATH 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncra -n 5,2,1 85.nc 8589.nc
-   The first method (explicitly specifying all filenames) works by brute
-force.  The second method relies on the operating system shell to "glob"
-(expand) the "regular expression" `8[56789].nc'.  The shell passes
-valid filenames which match the expansion to `ncra'.  The third method
-uses the `-p INPUT-PATH' argument to specify the directory where all
-the input files reside.  NCO prepends INPUT-PATH (e.g.,
-`/data/usrname/model') to all INPUT-FILES (but not to OUTPUT-FILE).
-Thus, using `-p', the path to any number of input files need only be
-specified once.  Note INPUT-PATH need not end with `/'; the `/' is
-automatically generated if necessary.
-
-   The last method passes (with `-n') syntax concisely describing the
-entire set of filenames (1).  This option is only available with the
-"multi-file operators": `ncra', `ncrcat', `ncea', and `ncecat'.  By
-definition, multi-file operators are able to process an arbitrary
-number of INPUT-FILES.  This option is very useful for abbreviating
-lists of filenames representable as
-ALPHANUMERIC_PREFIX+NUMERIC_SUFFIX+`.'+FILETYPE where
-ALPHANUMERIC_PREFIX is a string of arbitrary length and composition,
-NUMERIC_SUFFIX is a fixed width field of digits, and FILETYPE is a
-standard filetype indicator.  For example, in the file `ccm3_h0001.nc',
-we have ALPHANUMERIC_PREFIX = `ccm3_h', NUMERIC_SUFFIX = `0001', and
-FILETYPE = `nc'.
-
-   NCO is able to decode lists of such filenames encoded using the `-n'
-option.  The simpler (3-argument) `-n' usage takes the form `-n
-FILE_NUMBER,DIGIT_NUMBER,NUMERIC_INCREMENT' where FILE_NUMBER is the
-number of files, DIGIT_NUMBER is the fixed number of numeric digits
-comprising the NUMERIC_SUFFIX, and NUMERIC_INCREMENT is the constant,
-integer-valued difference between the NUMERIC_SUFFIX of any two
-consecutive files.  The value of ALPHANUMERIC_PREFIX is taken from the
-input file, which serves as a template for decoding the filenames.  In
-the example above, the encoding `-n 5,2,1' along with the input file
-name `85.nc' tells NCO to construct five (5) filenames identical to the
-template `85.nc' except that the final two (2) digits are a numeric
-suffix to be incremented by one (1) for each successive file.
-Currently FILETYPE may be either be empty, `nc', `cdf', `hdf', or `hd5'.
-If present, these FILETYPE suffixes (and the preceding `.') are ignored
-by NCO as it uses the `-n' arguments to locate, evaluate, and compute
-the NUMERIC_SUFFIX component of filenames.
-
-   Recently the `-n' option has been extended to allow convenient
-specification of filenames with "circular" characteristics.  This means
-it is now possible for NCO to automatically generate filenames which
-increment regularly until a specified maximum value, and then wrap back
-to begin again at a specified minimum value.  The corresponding `-n'
-usage becomes more complex, taking one or two additional arguments for
-a total of four or five, respectively: `-n
-FILE_NUMBER,DIGIT_NUMBER,NUMERIC_INCREMENT[,NUMERIC_MAX[,NUMERIC_MIN]]'
-where NUMERIC_MAX, if present, is the maximum integer-value of
-NUMERIC_SUFFIX and NUMERIC_MIN, if present, is the minimum
-integer-value of NUMERIC_SUFFIX.  Consider, for example, the problem of
-specifying non-consecutive input files where the filename suffixes end
-with the month index.  In climate modeling it is common to create
-summertime and wintertime averages which contain the averages of the
-months June-July-August, and December-January-February, respectively:
-     ncra -n 3,2,1 85_06.nc 85_0608.nc
-     ncra -n 3,2,1,12 85_12.nc 85_1202.nc
-     ncra -n 3,2,1,12,1 85_12.nc 85_1202.nc
-   The first example shows that three arguments to the `-n' option
-suffice to specify consecutive months (`06, 07, 08') which do not
-"wrap" back to a minimum value.  The second example shows how to use
-the optional fourth and fifth elements of the `-n' option to specify a
-wrap value to NCO.  The fourth argument to `-n', if present, specifies
-the maximum integer value of NUMERIC_SUFFIX.  In this case the maximum
-value is 12, and will be formatted as `12' in the filename string.  The
-fifth argument to `-n', if present, specifies the minimum integer value
-of NUMERIC_SUFFIX.  The default minimum filename suffix is 1, which is
-formatted as `01' in this case.  Thus the second and third examples
-have the same effect, that is, they automatically generate, in order,
-the filenames `85_12.nc', `85_01.nc', and `85_02.nc' as input to NCO.
-
-   ---------- Footnotes ----------
-
-   (1) The `-n' option is a backward compatible superset of the
-`NINTAP' option from the NCAR CCM Processor.
-
-3.6 Specifying Output Files
-===========================
-
-Availability: All operators
-Short options: `-o'
-Long options: `--fl_out', `--output'
-NCO commands produce no more than one output file, FL_OUT.
-Traditionally, users specify FL_OUT as the final argument to the
-operator, following all input file names.  This is the "positional
-argument" method of specifying input and ouput file names.  The
-positional argument method works well in most applications.  NCO also
-supports specifying FL_OUT using the command line switch argument
-method, `-o FL_OUT'.
-
-   Specifying FL_OUT with a switch, rather than as a positional
-argument, allows FL_OUT to precede input files in the argument list.  This
-is particularly useful with multi-file operators for three reasons.
-Multi-file operators may be invoked with hundreds (or more) filenames.
-Visual or automatic location of FL_OUT in such a list is difficult when
-the only syntactic distinction between input and output files is their
-position.  Second, specification of a long list of input files may be
-difficult (*note Large Numbers of Files::).  Making the input file list
-the final argument to an operator facilitates using `xargs' for this
-purpose.  Some alternatives to `xargs' are very ugly and undesirable.
-Finally, many users are more comfortable specifying output files with
-`-o FL_OUT' near the beginning of an argument list.  Compilers and
-linkers are usually invoked this way.
-
-   Users should specify FL_OUT using either but not both methods.  If
-FL_OUT is specified twice (once with the switch and once as the last
-positional argument), then the positional argument takes precedence.
-
-3.7 Accessing Remote Files
-==========================
-
-Availability: All operators
-Short options: `-p', `-l'
-Long options: `--pth', `--path', `--lcl', `--local'
-All NCO operators can retrieve files from remote sites as well as from
-the local file system.  A remote site can be an anonymous FTP server, a
-machine on which the user has `rcp', `scp', or `sftp' privileges, or
-NCAR's Mass Storage System (MSS), or an OPeNDAP server.  Examples of
-each are given below, following a brief description of the particular
-access protocol.
-
-   To access a file via an anonymous FTP server, supply the remote
-file's URL.  FTP is an intrinsically insecure protocol because it
-transfers passwords in plain text format.  Users should access sites
-using anonymous FTP when possible.  Some FTP servers require a
-login/password combination for a valid user account.  NCO allows these
-transactions so long as the required information is stored in the
-`.netrc' file.  Usually this information is the remote machine name,
-login, and password, in plain text, separated by those very keywords,
-e.g.,
-     machine dust.ess.uci.edu login zender password bushlied
-   Eschew using valuable passwords for FTP transactions, since `.netrc'
-passwords are potentially exposed to eavesdropping software (1).
-
-   SFTP, i.e., secure FTP, uses SSH-based security protocols that solve
-the security issues associated with plain FTP.  NCO supports SFTP
-protocol access to files specified with a homebrew syntax of the form
-     sftp://machine.domain.tld:/path/to/filename
-   Note the second colon following the top-level-domain (tld).  This
-syntax is a hybrid between an FTP URL and a standard remote file syntax.
-
-   To access a file using `rcp' or `scp', specify the Internet address
-of the remote file.  Of course in this case you must have `rcp' or `scp'
-privileges which allow transparent (no password entry required) access
-to the remote machine.  This means that `~/.rhosts' or
-`~/ssh/authorized_keys' must be set accordingly on both local and
-remote machines.
-
-   To access a file on a High Performance Storage System (HPSS) (such
-as that at NCAR, ECMWF, LANL, DKRZ, LLNL) specify the full HPSS pathname
-of the remote file.  NCO will attempt to detect whether the local
-machine has direct (synchronous) HPSS access.  In this case, NCO
-attempts to use the Hierarchical Storage Interface (HSI) command `hsi
-get' (2).
-
-   The following examples show how one might analyze files stored on
-remote systems.
-     ncks -l . ftp://dust.ess.uci.edu/pub/zender/nco/in.nc
-     ncks -l . sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco/in.nc
-     ncks -l . dust.ess.uci.edu:/home/zender/nco/data/in.nc
-     ncks -l . /ZENDER/nco/in.nc
-     ncks -l . /home/zender/nco/in.nc
-     ncks -l . http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc
-   The first example works verbatim if your system is connected to the
-Internet and is not behind a firewall.  The second example works if you
-have `sftp' access to the machine `dust.ess.uci.edu'.  The third
-example works if you have `rcp' or `scp' access to the machine
-`dust.ess.uci.edu'.  The fourth and fifth examples work on NCAR
-computers with local access to the HPSS `hsi get' command (3).  The
-sixth command works if your local version of NCO is OPeNDAP-enabled
-(this is fully described in *note OPeNDAP::), or if the remote file is
-accessible via `wget'.  The above commands can be rewritten using the
-`-p INPUT-PATH' option as follows: 
-     ncks -p ftp://dust.ess.uci.edu/pub/zender/nco -l . in.nc
-     ncks -p sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco -l . in.nc
-     ncks -p dust.ess.uci.edu:/home/zender/nco -l . in.nc
-     ncks -p /ZENDER/nco -l . in.nc
-     ncks -p /home/zender/nco -l . in.nc # HPSS
-     ncks -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-          -l . in.nc
-   Using `-p' is recommended because it clearly separates the
-INPUT-PATH from the filename itself, sometimes called the "stub".  When
-INPUT-PATH is not explicitly specified using `-p', NCO internally
-generates an INPUT-PATH from the first input filename.  The
-automatically generated INPUT-PATH is constructed by stripping the
-input filename of everything following the final `/' character (i.e.,
-removing the stub).  The `-l OUTPUT-PATH' option tells NCO where to
-store the remotely retrieved file and the output file.  Often the path
-to a remotely retrieved file is quite different than the path on the
-local machine where you would like to store the file.  If `-l' is not
-specified then NCO internally generates an OUTPUT-PATH by simply
-setting OUTPUT-PATH equal to INPUT-PATH stripped of any machine names.
-If `-l' is not specified and the remote file resides on the NCAR HPSS
-system, then the leading character of INPUT-PATH, `/', is also stripped
-from OUTPUT-PATH.  Specifying OUTPUT-PATH as `-l ./' tells NCO to store
-the remotely retrieved file and the output file in the current
-directory.  Note that `-l .' is equivalent to `-l ./' though the latter
-is recommended as it is syntactically more clear.
-
-   ---------- Footnotes ----------
-
-   (1) NCO does not implement command line options to specify FTP
-logins and passwords because copying those data into the `history'
-global attribute in the output file (done by default) poses an
-unacceptable security risk.
-
-   (2) The `hsi' command must be in the user's path in one of the
-following directories: `/usr/local/bin' or `/opt/hpss/bin'.  Tell us if
-the HPSS installation at your site places the `hsi' command in a
-different location, and we will add that location to the list of
-acceptable paths to search for `hsi'.
-
-   (3) NCO supported the old NCAR Mass Storage System (MSS) until
-version 4.0.7 in April, 2011.  NCO supported MSS-retrievals via a
-variety of mechanisms including the `msread', `msrcp', and `nrnet'
-commands invoked either automatically or with sentinels like `ncks -p
-mss:/ZENDER/nco -l . in.nc'.  Once the MSS was decommissioned in March,
-2011, support for these retrieval mechanisms was removed from NCO.
-
-3.7.1 OPeNDAP
--------------
-
-The Distributed Oceanographic Data System (DODS) provides useful
-replacements for common data interface libraries like netCDF.  The DODS
-versions of these libraries implement network transparent access to
-data via a client-server data access protocol that uses the HTTP
-protocol for communication.  Although DODS-technology originated with
-oceanography data, it applyies to virtually all scientific data.  In
-recognition of this, the data access protocol underlying DODS (which is
-what NCO cares about) has been renamed the Open-source Project for a
-Network Data Access Protocol, OPeNDAP.  We use the terms DODS and
-OPeNDAP interchangeably, and often write OPeNDAP/DODS for now.  In the
-future we will deprecate DODS in favor of DAP or OPeNDAP, as appropriate
-(1).
-
-   NCO may be DAP-enabled by linking NCO to the OPeNDAP libraries.  This
-is described in the OPeNDAP documentation and automagically implemented
-in NCO build mechanisms (2).  The `./configure' mechanism automatically
-enables NCO as OPeNDAP clients if it can find the required OPeNDAP
-libraries (3).   in the usual locations.  The `$DODS_ROOT' environment
-variable may be used to override the default OPeNDAP library location
-at NCO compile-time.  Building NCO with `bld/Makefile' and the command
-`make DODS=Y' adds the (non-intuitive) commands to link to the OPeNDAP
-libraries installed in the `$DODS_ROOT' directory.  The file
-`doc/opendap.sh' contains a generic script intended to help users
-install OPeNDAP before building NCO.  The documentation at the OPeNDAP
-Homepage (http://www.opendap.org) is voluminous.  Check there and on the
-DODS mail lists
-(http://www.unidata.ucar.edu/packages/dods/home/mailLists/).  to learn
-more about the extensive capabilities of OPeNDAP (4).
-
-   Once NCO is DAP-enabled the operators are OPeNDAP clients.  All
-OPeNDAP clients have network transparent access to any files controlled
-by a OPeNDAP server.  Simply specify the input file path(s) in URL
-notation and all NCO operations may be performed on remote files made
-accessible by a OPeNDAP server.  This command tests the basic
-functionality of OPeNDAP-enabled NCO clients:
-     % ncks -O -o ~/foo.nc -C -H -v one -l /tmp \
-       -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-     % ncks -H -v one ~/foo.nc
-     one = 1
-   The `one = 1' outputs confirm (first) that `ncks' correctly
-retrieved data via the  OPeNDAP protocol and (second) that `ncks'
-created a valid local copy of the subsetted remote file.  With minor
-changes to the above command, netCDF4 can be used as both the input and
-output file format:
-     % ncks -4 -O -o ~/foo.nc -C -H -v one -l /tmp \
-       -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-     % ncks -H -v one ~/foo.nc
-     one = 1
-   And, of course, OPeNDAP-enabled NCO clients continue to support
-other, orthogonal features such as UDUnits (*note UDUnits Support::):
-     % ncks -u -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' \
-       -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-     % wvl[0]=5e-07 meter
-
-   The next command is a more advanced example which demonstrates the
-real power of OPeNDAP-enabled NCO clients.  The `ncwa' client requests
-an equatorial hyperslab from remotely stored NCEP reanalyses data of
-the year 1969.  The NOAA OPeNDAP server (hopefully!) serves these data.
-The local `ncwa' client then computes and stores (locally) the regional
-mean surface pressure (in Pa).
-     ncwa -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-     http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-       pres.sfc.1969.nc ~/foo.nc
-   All with one command!  The data in this particular input file also
-happen to be packed (*note Methods and functions::), although this is
-completely transparent to the user since NCO automatically unpacks data
-before attempting arithmetic.
-
-   NCO obtains remote files from the OPeNDAP server (e.g.,
-`www.cdc.noaa.gov') rather than the local machine.  Input files are
-first copied to the local machine, then processed.  The OPeNDAP server
-performs data access, hyperslabbing, and transfer to the local machine.  This
-allows the I/O to appear to NCO as if the input files were local.  The
-local machine performs all arithmetic operations.  Only the
-hyperslabbed output data are transferred over the network (to the local
-machine) for the number-crunching to begin.  The advantages of this are
-obvious if you are examining small parts of large files stored at
-remote locations.
-
-   ---------- Footnotes ----------
-
-   (1) DODS is being deprecated because it is ambiguous, referring both
-to a protocol and to a collection of (oceanography) data.  It is
-superceded by two terms.  DAP is the discipline-neutral Data Access
-Protocol at the heart of DODS.  The National Virtual Ocean Data System
-(NVODS) refers to the collection of oceanography data and oceanographic
-extensions to DAP.  In other words, NVODS is implemented with OPeNDAP.
-OPeNDAP is _also_ the open source project which maintains, develops,
-and promulgates the DAP standard.  OPeNDAP and DAP really are
-interchangeable.  Got it yet?
-
-   (2) Automagic support for DODS version 3.2.x was deprecated in
-December, 2003 after NCO version 2.8.4.  NCO support for OPeNDAP
-versions 3.4.x commenced in December, 2003, with NCO version 2.8.5.
-NCO support for OPeNDAP versions 3.5.x commenced in June, 2005, with
-NCO version 3.0.1.  NCO support for OPeNDAP versions 3.6.x commenced in
-June, 2006, with NCO version 3.1.3.  NCO support for OPeNDAP versions
-3.7.x commenced in January, 2007, with NCO version 3.1.9.
-
-   (3) The minimal set of libraries required to build NCO as OPeNDAP
-clients are, in link order, `libnc-dap.a', `libdap.a', and `libxml2'
-and `libcurl.a'.
-
-   (4) We are most familiar with the OPeNDAP ability to enable
-network-transparent data access.  OPeNDAP has many other features,
-including sophisticated hyperslabbing and server-side processing via
-"constraint expressions".  If you know more about this, please consider
-writing a section on "OPeNDAP Capabilities of Interest to NCO Users"
-for incorporation in the `NCO User's Guide'.
-
-3.8 Retaining Retrieved Files
-=============================
-
-Availability: All operators
-Short options: `-R'
-Long options: `--rtn', `--retain'
-In order to conserve local file system space, files retrieved from
-remote locations are automatically deleted from the local file system
-once they have been processed.  Many NCO operators were constructed to
-work with numerous large (e.g., 200 MB) files.  Retrieval of multiple
-files from remote locations is done serially.  Each file is retrieved,
-processed, then deleted before the cycle repeats.  In cases where it is
-useful to keep the remotely-retrieved files on the local file system
-after processing, the automatic removal feature may be disabled by
-specifying `-R' on the command line.
-
-   Invoking `-R' disables the default printing behavior of `ncks'.
-This allows `ncks' to retrieve remote files without automatically
-trying to print them.  See *note ncks netCDF Kitchen Sink::, for more
-details.
-
-   Note that the remote retrieval features of NCO can always be used to
-retrieve _any_ file, including non-netCDF files, via `SSH', anonymous
-FTP, or `msrcp'.  Often this method is quicker than using a browser, or
-running an FTP session from a shell window yourself.  For example, say
-you want to obtain a JPEG file from a weather server.
-     ncks -R -p ftp://weather.edu/pub/pix/jpeg -l . storm.jpg
-   In this example, `ncks' automatically performs an anonymous FTP
-login to the remote machine and retrieves the specified file.  When
-`ncks' attempts to read the local copy of `storm.jpg' as a netCDF file,
-it fails and exits, leaving  `storm.jpg' in the current directory.
-
-   If your NCO is DAP-enabled (*note OPeNDAP::), then you may use NCO
-to retrieve any files (including netCDF, HDF, etc.) served by an
-OPeNDAP server to your local machine.  For example,
-     ncks -R -l . -p \
-     http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-       pres.sfc.1969.nc
-   Note that NCO is never the preffered way to transport files from
-remote machines.  For large jobs, that is best handled by FTP, SSH, or
-`wget'.  It may occasionally be useful to use NCO to transfer files
-when your other preferred methods are not available locally.
-
-3.9 Selecting Output File Format
-================================
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-3', `-4'
-Long options: `--3', `--4', `--64bit', `--fl_fmt', `--netcdf4'
-All NCO operators support (read and write) all three (or four,
-depending on how one counts) file formats supported by netCDF4.  The
-default output file format for all operators is the input file format.
-The operators listed under "Availability" above allow the user to
-specify the output file format independent of the input file format.
-These operators allow the user to convert between the various file
-formats.  (The operators `ncatted' and `ncrename' do not support these
-switches so they always write the output netCDF file in the same format
-as the input netCDF file.)
-
-   netCDF supports four types of files: `CLASSIC', `64BIT', `NETCDF4',
-and `NETCDF4_CLASSIC', The `CLASSIC' format is the traditional 32-bit
-offset written by netCDF2 and netCDF3.  As of 2005, most netCDF
-datasets are in `CLASSIC' format.  The `64BIT' format was added in
-Fall, 2004.
-
-   The `NETCDF4' format uses HDF5 as the file storage layer.  The files
-are (usually) created, accessed, and manipulated using the traditional
-netCDF3 API (with numerous extensions).  The `NETCDF4_CLASSIC' format
-refers to netCDF4 files created with the `NC_CLASSIC_MODEL' mask.  Such
-files use HDF5 as the back-end storage format (unlike netCDF3), though
-they incorporate only netCDF3 features.  Hence `NETCDF4_CLASSIC' files
-are perfectly readable by applications which use only the netCDF3 API
-and library.  NCO must be built with netCDF4 to write files in the new
-`NETCDF4' and `NETCDF4_CLASSIC' formats, and to read files in the new
-`NETCDF4' format.  Users are advised to use the default `CLASSIC'
-format or the `NETCDF4_CLASSIC' format until netCDF4 is more widespread.
-Widespread support for `NETCDF4' format files is not expected for a few
-more years, 2013-2014, say.  If performance or coolness are issues,
-then use `NETCDF4_CLASSIC' instead of `CLASSIC' format files.
-
-   As mentioned above, all operators write use the input file format for
-output files unless told otherwise.  Toggling the long option `--64bit'
-switch (or its KEY-VALUE equivalent `--fl_fmt=64bit') produces the
-netCDF3 64-bit offset format named `64BIT'.  NCO must be built with
-netCDF 3.6 or higher to produce a `64BIT' file.  Using the `-4' switch
-(or its long option equivalents `--4' or `--netcdf4'), or setting its
-KEY-VALUE equivalent `--fl_fmt=netcdf4' produces a `NETCDF4' file
-(i.e., HDF).  Casual users are advised to use the default (netCDF3)
-`CLASSIC' format until netCDF 3.6 and netCDF 4.0 are more widespread.
-Conversely, operators given the `-3' (or `--3') switch without
-arguments will (attempt to) produce netCDF3 `CLASSIC' output, even from
-netCDF4 input files.
-
-   These examples demonstrate converting a file from any netCDF format
-into any other netCDF format (subject to limits of the format):
-     ncks --fl_fmt=classic in.nc foo_3c.nc # netCDF3 classic
-     ncks --fl_fmt=64bit in.nc foo_364.nc # netCDF3 64bit
-     ncks --fl_fmt=netcdf4_classic in.nc foo_4c.nc # netCDF4 classic
-     ncks --fl_fmt=netcdf4 in.nc foo_4.nc # netCDF4
-     ncks -3 in.nc foo_3c.nc # netCDF3 classic
-     ncks --3 in.nc foo_3c.nc # netCDF3 classic
-     ncks -4 in.nc foo_4.nc # netCDF4
-     ncks --4 in.nc foo_4.nc # netCDF4
-     ncks --64 in.nc foo364.nc # netCDF3 64bit
-   Of course since most operators support these switches, the
-"conversions" can be done at the output stage of arithmetic or metadata
-processing rather than requiring a separate step.  Producing (netCDF3)
-`CLASSIC' or `64BIT' files from `NETCDF4_CLASSIC' files will always
-work.  However, producing netCDF3 files from `NETCDF4' files will only
-work if the output files are not required to contain netCDF4-specific
-features.
-
-   Note that `NETCDF4' and `NETCDF4_CLASSIC' are the same binary format.
-The latter simply causes a writing application to fail if it attempts to
-write a `NETCDF4' file that cannot be completely read by the netCDF3
-library.  Conversely, `NETCDF4_CLASSIC' indicates to a reading
-application that all of the file contents are readable with the netCDF3
-library.  As of October, 2005, NCO writes no netCDF4-specific data
-structures and so always succeeds at writing `NETCDF4_CLASSIC' files.
-
-   There are at least three ways to discover the format of a netCDF
-file, i.e., whether it is a classic (32-bit offset) or newer 64-bit
-offset netCDF3 format, or is netCDF4 format.  Each method returns the
-information using slightly different terminology that becomes easier to
-understand with practice.
-
-   First, examine the end of the first line of global metadata output by
-`ncks -M': 
-     % ncks -M foo_3c.nc
-     Opened file foo_3c.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_CLASSIC
-     % ncks -M foo_364.nc
-     Opened file foo_364.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_64BIT
-     % ncks -M foo_4c.nc
-     Opened file foo_4c.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_NETCDF4_CLASSIC
-     % ncks -M foo_4.nc
-     Opened file foo_4.nc: dimensions = 19, variables = 261, global atts. = 4,
-       id = 65536, type = NC_FORMAT_NETCDF4
-   This method requires a netCDF4-enabled NCO version 3.9.0+ (i.e.,
-from 2007 or later).
-
-   Second, query the file with `ncdump -k': 
-     % ncdump -k foo_3.nc
-     classic
-     % ncdump -k foo_364.nc
-     64-bit-offset
-     % ncdump -k foo_4c.nc
-     netCDF-4 classic model
-     % ncdump -k foo_4.nc
-     netCDF-4
-   This method requires a netCDF4-enabled netCDF 3.6.2+ (i.e., from
-2007 or later).
-
-   The third option uses the POSIX-standard `od' (octal dump) command: 
-     % od -An -c -N4 foo_3c.nc
-        C   D   F 001
-     % od -An -c -N4 foo_364.nc
-        C   D   F 002
-     % od -An -c -N4 foo_4c.nc
-      211   H   D   F
-     % od -An -c -N4 foo_4.nc
-      211   H   D   F
-   This option works without NCO and `ncdump'.  Values of `C D F 001'
-and `C D F 002' indicate 32-bit (classic) and 64-bit netCDF3 formats,
-respectively, while values of `211 H D F' indicate the newer netCDF4
-file format.
-
-3.10 Large File Support
-=======================
-
-Availability: All operators
-Short options: none
-Long options: none
-NCO has Large File Support (LFS), meaning that NCO can write files
-larger than 2 GB on some 32-bit operating systems with netCDF libraries
-earlier than version 3.6.  If desired, LFS support must be configured
-when both netCDF and NCO are installed.  netCDF versions 3.6 and higher
-support 64-bit file addresses as part of the netCDF standard.  We
-recommend that users ignore LFS support which is difficult to configure
-and is implemented in NCO only to support netCDF versions prior to 3.6.
-This obviates the need for configuring explicit LFS support in
-applications (such as NCO) which now support 64-bit files directly
-through the netCDF interface.  See *note Selecting Output File Format::
-for instructions on accessing the different file formats, including
-64-bit files, supported by the modern netCDF interface.
-
-   If you are still interesting in explicit LFS support for netCDF
-versions prior to 3.6, know that LFS support depends on a complex,
-interlocking set of operating system (1) and netCDF suppport issues.
-The netCDF LFS FAQ at
-`http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html'
-describes the various file size limitations imposed by different
-versions of the netCDF standard.  NCO and netCDF automatically attempt
-to configure LFS at build time.
-
-   ---------- Footnotes ----------
-
-   (1) Linux and AIX are known to support LFS.
-
-3.11 Subsetting Variables
-=========================
-
-Availability: (`ncap2'), `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-v', `-x'
-Long options: `--variable', `--exclude' or `--xcl'
-Subsetting variables refers to explicitly specifying variables to be
-included or excluded from operator actions.  Subsetting is implemented
-with the `-v VAR[,...]' and `-x' options.  A list of variables to
-extract is specified following the `-v' option, e.g., `-v time,lat,lon'.
-Not using the `-v' option is equivalent to specifying all variables.
-The `-x' option causes the list of variables specified with `-v' to be
-_excluded_ rather than _extracted_.  Thus `-x' saves typing when you
-only want to extract fewer than half of the variables in a file.
-
-   Variables explicitly specified for extraction with `-v VAR[,...]'
-_must_ be present in the input file or an error will result.  Variables
-explicitly specified for _exclusion_ with `-x -v VAR[,...]' need not be
-present in the input file.  Remember, if averaging or concatenating
-large files stresses your systems memory or disk resources, then the
-easiest solution is often to use the `-v' option to retain only the
-most important variables (*note Memory Requirements::).
-
-   Due to its special capabilities, `ncap2' interprets the `-v' switch
-differently (*note ncap2 netCDF Arithmetic Processor::).  For `ncap2',
-the `-v' switch takes no arguments and indicates that _only_
-user-defined variables should be output.  `ncap2' neither accepts nor
-understands the -X switch.
-
-   As of NCO 2.8.1 (August, 2003), variable name arguments of the `-v'
-switch may contain "extended regular expressions".  As of NCO 3.9.6
-(January, 2009), variable names arguments to `ncatted' may contain
-"extended regular expressions".  For example, `-v '^DST'' selects all
-variables beginning with the string `DST'.  Extended regular
-expressions are defined by the GNU `egrep' command.  The
-meta-characters used to express pattern matching operations are
-`^$+?.*[]{}|'.  If the regular expression pattern matches _any_ part of
-a variable name then that variable is selected.  This capability is
-called "wildcarding", and is very useful for sub-setting large data
-files.
-
-   Because of its wide availability, NCO uses the POSIX regular
-expression library `regex'.  Regular expressions of arbitary complexity
-may be used.  Since netCDF variable names are relatively simple
-constructs, only a few varieties of variable wildcards are likely to be
-useful.  For convenience, we define the most useful pattern matching
-operators here: 
-`^'
-     Matches the beginning of a string
-
-`$'
-     Matches the end of a string
-
-`.'
-     Matches any single character
-   The most useful repetition and combination operators are 
-`?'
-     The preceding regular expression is optional and matched at most
-     once
-
-`*'
-     The preceding regular expression will be matched zero or more times
-
-`+'
-     The preceding regular expression will be matched one or more times
-
-`|'
-     The preceding regular expression will be joined to the following
-     regular expression.  The resulting regular expression matches any
-     string matching either subexpression.
-   To illustrate the use of these operators in extracting variables,
-consider a file with variables `Q', `Q01'-`Q99', `Q100', `QAA'-`QZZ',
-`Q_H2O', `X_H2O', `Q_CO2', `X_CO2'.
-     ncks -v 'Q.?' in.nc              # Variables that contain Q
-     ncks -v '^Q.?' in.nc             # Variables that start with Q
-     ncks -v '^Q+.?.' in.nc           # Q, Q0--Q9, Q01--Q99, QAA--QZZ, etc.
-     ncks -v '^Q..' in.nc             # Q01--Q99, QAA--QZZ, etc.
-     ncks -v '^Q[0-9][0-9]' in.nc     # Q01--Q99, Q100
-     ncks -v '^Q[[:digit:]]{2}' in.nc # Q01--Q99
-     ncks -v 'H2O$' in.nc             # Q_H2O, X_H2O
-     ncks -v 'H2O$|CO2$' in.nc        # Q_H2O, X_H2O, Q_CO2, X_CO2
-     ncks -v '^Q[0-9][0-9]$' in.nc    # Q01--Q99
-     ncks -v '^Q[0-6][0-9]|7[0-3]' in.nc # Q01--Q73, Q100
-     ncks -v '(Q[0-6][0-9]|7[0-3])$' in.nc # Q01--Q73
-     ncks -v '^[a-z]_[a-z]{3}$' in.nc # Q_H2O, X_H2O, Q_CO2, X_CO2
-   Beware--two of the most frequently used repetition pattern matching
-operators, `*' and `?', are also valid pattern matching operators for
-filename expansion (globbing) at the shell-level.  Confusingly, their
-meanings in extended regular expressions and in shell-level filename
-expansion are significantly different.  In an extended regular
-expression, `*' matches zero or more occurences of the preceding
-regular expression.  Thus `Q*' selects all variables, and `Q+.*'
-selects all variables containing `Q' (the `+' ensures the preceding item
-matches at least once).  To match zero or one occurence of the
-preceding regular expression, use `?'.  Documentation for the UNIX
-`egrep' command details the extended regular expressions which NCO
-supports.
-
-   One must be careful to protect any special characters in the regular
-expression specification from being interpreted (globbed) by the shell.
-This is accomplish by enclosing special characters within single or
-double quotes
-     ncra -v Q?? in.nc out.nc   # Error: Shell attempts to glob wildcards
-     ncra -v '^Q+..' in.nc out.nc # Correct: NCO interprets wildcards
-     ncra -v '^Q+..' in*.nc out.nc # Correct: NCO interprets, Shell globs
-   The final example shows that commands may use a combination of
-variable wildcarding and shell filename expansion (globbing).  For
-globbing, `*' and `?' _have nothing to do_ with the preceding regular
-expression!  In shell-level filename expansion, `*' matches any string,
-including the null string and `?' matches any single character.
-Documentation for `bash' and `csh' describe the rules of filename
-expansion (globbing).
-
-3.12 Subsetting Coordinate Variables
-====================================
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-C', `-c'
-Long options: `--no-coords', `--no-crd', `--crd', `--coords'
-By default, coordinates variables associated with any variable appearing
-in the INPUT-FILE will be placed in the OUTPUT-FILE, even if they are
-not explicitly specified, e.g., with the `-v' switch.  Thus variables
-with a latitude coordinate `lat' always carry the values of `lat' with
-them into the OUTPUT-FILE.  This feature can be disabled with `-C',
-which causes NCO to not automatically add coordinates to the variables
-appearing in the OUTPUT-FILE.  However, using `-C' does not preclude
-the user from including some coordinates in the output files simply by
-explicitly selecting the coordinates with the -V option.  The `-c'
-option, on the other hand, is a shorthand way of automatically
-specifying that _all_ coordinate variables in the INPUT-FILES should
-appear in the OUTPUT-FILE.  Thus `-c' allows the user to select all the
-coordinate variables without having to know their names.  As of NCO
-version 3.9.6 (January, 2009) both `-c' and `-C' honor the CF
-`coordinates' convention described in *note CF Conventions::.  As of
-NCO version 4.0.8 (April, 2011) both `-c' and `-C' honor the CF `bounds'
-convention described in *note CF Conventions::.
-
-3.13 C and Fortran Index conventions
-====================================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-F'
-Long options: `--fortran'
-The `-F' switch changes NCO to read and write with the Fortran index
-convention.  By default, NCO uses C-style (0-based) indices for all I/O.
-In C, indices count from 0 (rather than 1), and dimensions are ordered
-from slowest (inner-most) to fastest (outer-most) varying.  In Fortran,
-indices count from 1 (rather than 0), and dimensions are ordered from
-fastest (inner-most) to slowest (outer-most) varying.  Hence C and
-Fortran data storage conventions represent mathematical transposes of
-eachother.  Note that record variables contain the record dimension as
-the most slowly varying dimension.  See *note ncpdq netCDF Permute
-Dimensions Quickly:: for techniques to re-order (including transpose)
-dimensions and to reverse data storage order.
-
-   Consider a file `85.nc' containing 12 months of data in the record
-dimension `time'.  The following hyperslab operations produce identical
-results, a June-July-August average of the data:
-     ncra -d time,5,7 85.nc 85_JJA.nc
-     ncra -F -d time,6,8 85.nc 85_JJA.nc
-
-   Printing variable THREE_DMN_VAR in file `in.nc' first with the
-C indexing convention, then with Fortran indexing convention results in
-the following output formats:
-     % ncks -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=1000 lon[0]=-180 three_dmn_var[0]=0
-     ...
-     % ncks -F -v three_dmn_var in.nc
-     lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
-     ...
-
-3.14 Hyperslabs
-===============
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-A "hyperslab" is a subset of a variable's data.  The coordinates of a
-hyperslab are specified with the `-d DIM,[MIN][,[MAX][,[STRIDE]]]' short
-option (or with the same arguments to the `--dimension' or `--dmn' long
-options).  At least one hyperslab argument (MIN, MAX, or STRIDE) must
-be present.  The bounds of the hyperslab to be extracted are specified
-by the associated MIN and MAX values.  A half-open range is specified
-by omitting either the MIN or MAX parameter.  The separating comma must
-be present to indicate the omission of one of these arguments.  The
-unspecified limit is interpreted as the maximum or minimum value in the
-unspecified direction.  A cross-section at a specific coordinate is
-extracted by specifying only the MIN limit and omitting a trailing
-comma.  Dimensions not mentioned are passed with no reduction in range.
-The dimensionality of variables is not reduced (in the case of a
-cross-section, the size of the constant dimension will be one).  If
-values of a coordinate-variable are used to specify a range or
-cross-section, then the coordinate variable must be monotonic (values
-either increasing or decreasing).  In this case, command-line values
-need not exactly match coordinate values for the specified dimension.
-Ranges are determined by seeking the first coordinate value to occur in
-the closed range [MIN,MAX] and including all subsequent values until
-one falls outside the range.  The coordinate value for a cross-section
-is the coordinate-variable value closest to the specified value and
-must lie within the range or coordinate-variable values.
-
-   Coordinate values should be specified using real notation with a
-decimal point required in the value, whereas dimension indices are
-specified using integer notation without a decimal point.  This
-convention serves only to differentiate coordinate values from
-dimension indices.  It is independent of the type of any netCDF
-coordinate variables.  For a given dimension, the specified limits must
-both be coordinate values (with decimal points) or dimension indices
-(no decimal points).  The STRIDE option, if any, must be a dimension
-index, not a coordinate value.  *Note Stride::, for more information on
-the STRIDE option.
-
-   User-specified coordinate limits are promoted to double precision
-values while searching for the indices which bracket the range.  Thus,
-hyperslabs on coordinates of type `NC_BYTE' and `NC_CHAR' are computed
-numerically rather than lexically, so the results are unpredictable.
-
-   The relative magnitude of MIN and MAX indicate to the operator
-whether to expect a "wrapped coordinate" (*note Wrapped Coordinates::),
-such as longitude.  If MIN > MAX, the NCO expects the coordinate to be
-wrapped, and a warning message will be printed.  When this occurs, NCO
-selects all values outside the domain [MAX < MIN], i.e., all the values
-exclusive of the values which would have been selected if MIN and MAX
-were swapped.  If this seems confusing, test your command on just the
-coordinate variables with `ncks', and then examine the output to ensure
-NCO selected the hyperslab you expected (coordinate wrapping is
-currently only supported by `ncks').
-
-   Because of the way wrapped coordinates are interpreted, it is very
-important to make sure you always specify hyperslabs in the
-monotonically increasing sense, i.e., MIN < MAX (even if the underlying
-coordinate variable is monotonically decreasing).  The only exception
-to this is when you are indeed specifying a wrapped coordinate.  The
-distinction is crucial to understand because the points selected by,
-e.g., `-d longitude,50.,340.', are exactly the complement of the points
-selected by `-d longitude,340.,50.'.
-
-   Not specifying any hyperslab option is equivalent to specifying full
-ranges of all dimensions.  This option may be specified more than once
-in a single command (each hyperslabbed dimension requires its own `-d'
-option).
-
-3.15 Stride
-===========
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-All data operators support specifying a "stride" for any and all
-dimensions at the same time.  The STRIDE is the spacing between
-consecutive points in a hyperslab.  A STRIDE of 1 picks all the
-elements of the hyperslab, and a STRIDE of 2 skips every other element,
-etc..  `ncks' multislabs support strides, and are more powerful than
-the regular hyperslabs supported by the other operators (*note
-Multislabs::).  Using the STRIDE option for the record dimension with
-`ncra' and `ncrcat' makes it possible, for instance, to average or
-concatenate regular intervals across multi-file input data sets.
-
-   The STRIDE is specified as the optional fourth argument to the `-d'
-hyperslab specification: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'.  Specify
-STRIDE as an integer (i.e., no decimal point) following the third comma
-in the `-d' argument.  There is no default value for STRIDE.  Thus
-using `-d time,,,2' is valid but `-d time,,,2.0' and `-d time,,,' are
-not.  When STRIDE is specified but MIN is not, there is an ambiguity as
-to whether the extracted hyperslab should begin with (using C-style,
-0-based indexes) element 0 or element `stride-1'.  NCO must resolve
-this ambiguity and it chooses element 0 as the first element of the
-hyperslab when MIN is not specified.  Thus `-d time,,,STRIDE' is
-syntactically equivalent to `-d time,0,,STRIDE'.  This means, for
-example, that specifying the operation `-d time,,,2' on the array
-`1,2,3,4,5' selects the hyperslab `1,3,5'.  To obtain the hyperslab
-`2,4' instead, simply explicitly specify the starting index as 1, i.e.,
-`-d time,1,,2'.
-
-   For example, consider a file `8501_8912.nc' which contains 60
-consecutive months of data.  Say you wish to obtain just the March data
-from this file.  Using 0-based subscripts (*note C and Fortran Index
-Conventions::) these data are stored in records 2, 14, ... 50 so the
-desired STRIDE is 12.  Without the STRIDE option, the procedure is very
-awkward.  One could use `ncks' five times and then use `ncrcat' to
-concatenate the resulting files together: 
-     for idx in 02 14 26 38 50; do # Bourne Shell
-       ncks -d time,${idx} 8501_8912.nc foo.${idx}
-     done
-     foreach idx (02 14 26 38 50) # C Shell
-       ncks -d time,${idx} 8501_8912.nc foo.${idx}
-     end
-     ncrcat foo.?? 8589_03.nc
-     rm foo.??
-   With the STRIDE option, `ncks' performs this hyperslab extraction in
-one operation:
-     ncks -d time,2,,12 8501_8912.nc 8589_03.nc
-   *Note ncks netCDF Kitchen Sink::, for more information on `ncks'.
-
-   Applying the STRIDE option to the record dimension in `ncra' and
-`ncrcat' makes it possible, for instance, to average or concatenate
-regular intervals across multi-file input data sets.
-     ncra -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8589_03.nc
-     ncrcat -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8503_8903.nc
-
-3.16 Multislabs
-===============
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-A multislab is a union of one or more hyperslabs.  One defines
-multislabs by chaining together hyperslab commands, i.e., `-d' options
-(*note Hyperslabs::).  Support for specifying a "multi-hyperslab" or
-"multislab" for any variable was first added to `ncks' in late 2002.
-The other operators received MSA capabilities in April 2008.  Sometimes
-multi-slabbing is referred to by the acronym MSA, which stands for
-"Multi-Slabbing Algorithm".
-
-   Multislabs overcome some restraints that limit hyperslabs.  A single
-`-d' option can only specify a contiguous and/or a regularly spaced
-multi-dimensional data array.  Multislabs are constructed from multiple
-`-d' options and may therefore have non-regularly spaced arrays.  For
-example, suppose it is desired to operate on all longitudes from 10.0
-to 20.0 and from 80.0 to 90.0 degrees.  The combined range of
-longitudes is not selectable in a single hyperslab specfication of the
-form `-d DIMENSION,MIN,MAX' or `-d DIMENSION,MIN,MAX,STRIDE' because its
-elements are irregularly spaced in coordinate space (and presumably in
-index space too).  The multislab specification for obtaining these
-values is simply the union of the hyperslabs specifications that
-comprise the multislab, i.e.,
-     ncks -d lon,10.,20. -d lon,80.,90. in.nc out.nc
-     ncks -d lon,10.,15. -d lon,15.,20. -d lon,80.,90. in.nc out.nc
-   Any number of hyperslabs specifications may be chained together to
-specify the multislab.
-
-   Users may specify redundant ranges of indices in a multislab, e.g.,
-     ncks -d lon,0,4 -d lon,2,9,2 in.nc out.nc
-   This command retrieves the first five longitudes, and then every
-other longitude value up to the tenth.  Elements 0, 2, and 4 are
-specified by both hyperslab arguments (hence this is redundant) but
-will count only once if an arithmetic operation is being performed.
-This example uses index-based (not coordinate-based) multislabs because
-the STRIDE option only supports index-based hyper-slabbing.  *Note
-Stride::, for more information on the STRIDE option.
-
-   Multislabs are more efficient than the alternative of sequentially
-performing hyperslab operations and concatenating the results.  This is
-because NCO employs a novel multislab algorithm to minimize the number
-of I/O operations when retrieving irregularly spaced data from disk.
-The NCO multislab algorithm retrieves each element from disk once and
-only once.  Thus users may take some shortcuts in specifying multislabs
-and the algorithm will obtain the intended values.  Specifying
-redundant ranges is not encouraged, but may be useful on occasion and
-will not result in unintended consequences.
-
-   A final example shows the real power of multislabs.  Suppose the Q
-variable contains three dimensional arrays of distinct chemical
-constituents in no particular order.  We are interested in the NOy
-species in a certain geographic range.  Say that NO, NO2, and N2O5 are
-elements 0, 1, and 5 of the SPECIES dimension of Q.  The multislab
-specification might look something like
-     ncks -d species,0,1 -d species,5 -d lon,0,4 -d lon,2,9,2 in.nc out.nc
-   Multislabs are powerful because they may be specified for every
-dimension at the same time.  Thus multislabs obsolete the need to
-execute multiple `ncks' commands to gather the desired range of data.
-
-3.17 Wrapped Coordinates
-========================
-
-Availability: `ncks'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-A "wrapped coordinate" is a coordinate whose values increase or
-decrease monotonically (nothing unusual so far), but which represents a
-dimension that ends where it begins (i.e., wraps around on itself).
-Longitude (i.e., degrees on a circle) is a familiar example of a wrapped
-coordinate.  Longitude increases to the East of Greenwich, England,
-where it is defined to be zero.  Halfway around the globe, the
-longitude is 180 degrees East (or West).  Continuing eastward,
-longitude increases to 360 degrees East at Greenwich.  The longitude
-values of most geophysical data are either in the range [0,360), or
-[-180,180).  In either case, the Westernmost and Easternmost longitudes
-are numerically separated by 360 degrees, but represent contiguous
-regions on the globe.  For example, the Saharan desert stretches from
-roughly 340 to 50 degrees East.  Extracting the hyperslab of data
-representing the Sahara from a global dataset presents special problems
-when the global dataset is stored consecutively in longitude from 0 to
-360 degrees.  This is because the data for the Sahara will not be
-contiguous in the INPUT-FILE but is expected by the user to be
-contiguous in the OUTPUT-FILE.  In this case, `ncks' must invoke
-special software routines to assemble the desired output hyperslab from
-multiple reads of the INPUT-FILE.
-
-   Assume the domain of the monotonically increasing longitude
-coordinate `lon' is 0 < LON < 360.  `ncks' will extract a hyperslab
-which crosses the Greenwich meridian simply by specifying the
-westernmost longitude as MIN and the easternmost longitude as MAX.  The
-following commands extract a hyperslab containing the Saharan desert:
-     ncks -d lon,340.,50. in.nc out.nc
-     ncks -d lon,340.,50. -d lat,10.,35. in.nc out.nc
-   The first example selects data in the same longitude range as the
-Sahara.  The second example further constrains the data to having the
-same latitude as the Sahara.  The coordinate `lon' in the OUTPUT-FILE,
-`out.nc', will no longer be monotonic!  The values of `lon' will be,
-e.g., `340, 350, 0, 10, 20, 30, 40, 50'.  This can have serious
-implications should you run `out.nc' through another operation which
-expects the `lon' coordinate to be monotonically increasing.
-Fortunately, the chances of this happening are slim, since `lon' has
-already been hyperslabbed, there should be no reason to hyperslab `lon'
-again.  Should you need to hyperslab `lon' again, be sure to give
-dimensional indices as the hyperslab arguments, rather than coordinate
-values (*note Hyperslabs::).
-
-3.18 Auxiliary Coordinates
-==========================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat'
-Short options: `-X LON_MIN,LON_MAX,LAT_MIN,LAT_MAX'
-Long options: `--auxiliary LON_MIN,LON_MAX,LAT_MIN,LAT_MAX'
-Utilize auxiliary coordinates specified in values of the coordinate
-variable's `standard_name' attributes, if any, when interpreting
-hyperslab and multi-slab options.  Also `--auxiliary'.  This switch
-supports hyperslabbing cell-based grids over coordinate ranges.  This
-works on datasets that associate coordinate variables to grid-mappings
-using the CF-convention (*note CF Conventions::) `coordinates' and
-`standard_name' attributes described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system).
-Currently, NCO understands auxiliary coordinate variables pointed to by
-the `standard_name' attributes for LATITUDE and LONGITUDE.  Cells that
-contain a value within the user-specified range
-[LON_MIN,LON_MAX,LAT_MIN,LAT_MAX] are included in the output hyperslab.
-
-   A cell-based grid collapses the horizontal spatial information
-(latitude and longitude) and stores it along a one-dimensional
-coordinate that has a one-to-one mapping to both latitude and longitude
-coordinates.  Rectangular (in longitude and latitude) horizontal
-hyperslabs cannot be selected using the typical procedure (*note
-Hyperslabs::) of separately specifying `-d' arguments for longitude and
-latitude.  Instead, when the `-X' is used, NCO learns the names of the
-latitude and longitude coordinates by searching the `standard_name'
-attribute of all variables until it finds the two variables whose
-`standard_name''s are "latitude" and "longitude", respectively.  This
-`standard_name' attribute for latitude and longitude coordinates
-follows the CF-convention (*note CF Conventions::).
-
-   Putting it all together, consider a variable GDS_3DVAR output from
-simulations on a cell-based geodesic grid.  Although the variable
-contains three dimensions of data (time, latitude, and longitude), it
-is stored in the netCDF file with only two dimensions, `time' and
-`gds_crd'.
-     % ncks -m -C -v gds_3dvar ~/nco/data/in.nc
-     gds_3dvar: type NC_FLOAT, 2 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 41
-     gds_3dvar RAM size is 10*8*sizeof(NC_FLOAT) = 80*4 = 320 bytes
-     gds_3dvar dimension 0: time, size = 10 NC_DOUBLE, dim. ID = 20 (CRD)(REC)
-     gds_3dvar dimension 1: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-     gds_3dvar attribute 0: long_name, size = 17 NC_CHAR, value = Geodesic variable
-     gds_3dvar attribute 1: units, size = 5 NC_CHAR, value = meter
-     gds_3dvar attribute 2: coordinates, size = 15 NC_CHAR, value = lat_gds lon_gds
-     gds_3dvar attribute 3: purpose, size = 64 NC_CHAR, value = Test auxiliary coordinates like those that define geodesic grids
-   The `coordinates' attribute lists the names of the latitude and
-longitude coordinates, `lat_gds' and `lon_gds', respectively.  The
-`coordinates' attribute is recommended though optional.  With it, the
-user can immediately identify which variables contain the latitude and
-longitude coordinates.  Without a `coordinates' attribute it would be
-unclear at first glance whether a variable resides on a cell-based grid.
-In this example, `time' is a normal record dimension and `gds_crd' is
-the cell-based dimension.
-
-   The cell-based grid file must contain two variables whose
-`standard_name' attributes are "latitude", and "longitude":
-     % ncks -m -C -v lat_gds,lon_gds ~/nco/data/in.nc
-     lat_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 37
-     lat_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-     lat_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-     lat_gds attribute 0: long_name, size = 8 NC_CHAR, value = Latitude
-     lat_gds attribute 1: standard_name, size = 8 NC_CHAR, value = latitude
-     lat_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-     lat_gds attribute 3: purpose, size = 62 NC_CHAR, value = 1-D latitude coordinate referred to by geodesic grid variables
-
-     lon_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 38
-     lon_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-     lon_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-     lon_gds attribute 0: long_name, size = 9 NC_CHAR, value = Longitude
-     lon_gds attribute 1: standard_name, size = 9 NC_CHAR, value = longitude
-     lon_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-     lon_gds attribute 3: purpose, size = 63 NC_CHAR, value = 1-D longitude coordinate referred to by geodesic grid variables
-   In this example `lat_gds' and `lon_gds' represent the latitude or
-longitude, respectively, of cell-based variables.  These coordinates
-(must) have the same single dimension (`gds_crd', in this case) as the
-cell-based variables.  And the coordinates must be
-one-dimensional--multidimensional coordinates will not work.
-
-   This infrastructure allows NCO to identify, interpret, and process
-(e.g., hyperslab) the variables on cell-based grids as easily as it
-works with regular grids.  To time-average all the values between zero
-and 180 degrees longitude and between plus and minus 30 degress
-latitude, we use
-     ncra -O -X 0.,180.,-30.,30. -v gds_3dvar in.nc out.nc
-   NCO accepts multiple `-X' arguments for cell-based grid multi-slabs,
-just as it accepts multiple `-d' arguments for multi-slabs of regular
-coordinates.
-     ncra -O -X 0.,180.,-30.,30. -X 270.,315.,45.,90. in.nc out.nc
-   The arguments to `-X' are always interpreted as floating point
-numbers, i.e., as coordinate values rather than dimension indices so
-that these two commands produce identical results
-     ncra -X 0.,180.,-30.,30. in.nc out.nc
-     ncra -X 0,180,-30,30 in.nc out.nc
-   In contrast, arguments to `-d' require decimal places to be
-recognized as coordinates not indices (*note Hyperslabs::).  We
-recommend always using decimal points with `-X' arguments to avoid
-confusion.
-
-3.19 UDUnits Support
-====================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncks', `ncpdq',
-`ncra', `ncrcat', `ncwa'
-Short options: `-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-Long options: `--dimension DIM,[MIN][,[MAX][,[STRIDE]]]',
-`--dmn DIM,[MIN][,[MAX][,[STRIDE]]]'
-There is more than one way to hyperskin a cat.  The UDUnits
-(http://www.unidata.ucar.edu/packages/udunits) package provides a
-library which, if present, NCO uses to translate user-specified
-physical dimensions into the physical dimensions of data stored in
-netCDF files.  Unidata provides UDUnits under the same terms as netCDF,
-so sites should install both.  Compiling NCO with UDUnits support is
-currently optional but may become required in a future version of NCO.
-
-   Two examples suffice to demonstrate the power and convenience of
-UDUnits support.  First, consider extraction of a variable containing
-non-record coordinates with physical dimensions stored in MKS units.
-In the following example, the user extracts all wavelengths in the
-visible portion of the spectrum in terms of the units very frequently
-used in visible spectroscopy, microns:
-     % ncks -C -H -v wvl -d wvl,"0.4 micron","0.7 micron" in.nc
-     wvl[0]=5e-07 meter
-   The hyperslab returns the correct values because the WVL variable is
-stored on disk with a length dimension that UDUnits recognizes in the
-`units' attribute.  The automagical algorithm that implements this
-functionality is worth describing since understanding it helps one
-avoid some potential pitfalls.  First, the user includes the physical
-units of the hyperslab dimensions she supplies, separated by a simple
-space from the numerical values of the hyperslab limits.  She encloses
-each coordinate specifications in quotes so that the shell does not
-break the _value-space-unit_ string into separate arguments before
-passing them to NCO.  Double quotes (`"foo"') or single quotes
-(`'foo'') are equally valid for this purpose.  Second, NCO recognizes
-that units translation is requested because each hyperslab argument
-contains text characters and non-initial spaces.  Third, NCO determines
-whether the WVL is dimensioned with a coordinate variable that has a
-`units' attribute.  In this case, WVL itself is a coordinate variable.
-The value of its `units' attribute is `meter'.  Thus WVL passes this
-test so UDUnits conversion is attempted.  If the coordinate associated
-with the variable does not contain a `units' attribute, then NCO aborts.
-Fourth, NCO passes the specified and desired dimension strings (microns
-are specified by the user, meters are required by NCO) to the UDUnits
-library.  Fifth, the UDUnits library that these dimension are
-commensurate and it returns the appropriate linear scaling factors to
-convert from microns to meters to NCO.  If the units are incommensurate
-(i.e., not expressible in the same fundamental MKS units), or are not
-listed in the UDUnits database, then NCO aborts since it cannot
-determine the user's intent.  Finally, NCO uses the scaling information
-to convert the user-specified hyperslab limits into the same physical
-dimensions as those of the corresponding cooridinate variable on disk.
-At this point, NCO can perform a coordinate hyperslab using the same
-algorithm as if the user had specified the hyperslab without requesting
-units conversion.
-
-   The translation and dimensional innterpretation of time coordinates
-shows a more powerful, and probably more common, UDUnits application.
-In this example, the user prints all data between 4 PM and 7 PM on
-December 8, 1999, from a variable whose time dimension is hours since
-the year 1900:
-     % ncks -u -H -C -v time_udunits -d time_udunits,"1999-12-08 \
-       16:00:0.0","1999-12-08 19:00:0.0" in.nc
-     time_udunits[1]=876018 hours since 1900-01-01 00:00:0.0
-   Here, the user invokes the stride (*note Stride::) capability to
-obtain every other timeslice.  This is possible because the UDUnits
-feature is additive, not exclusive--it works in conjunction with all
-other hyperslabbing (*note Hyperslabs::) options and in all operators
-which support hyperslabbing.  The following example shows how one might
-average data in a time period spread across multiple input files
-     ncra -d time,"1939-09-09 12:00:0.0","1945-05-08 00:00:0.0" \
-       in1.nc in2.nc in3.nc out.nc
-   Note that there is no excess whitespace before or after the
-individual elements of the `-d' argument.  This is important since, as
-far as the shell knows, `-d' takes only _one_ command-line argument.
-Parsing this argument into its component `DIM,[MIN][,[MAX][,[STRIDE]]]'
-elements (*note Hyperslabs::) is the job of NCO.  When unquoted
-whitespace is present between these elements, the shell passes NCO
-arugment fragments which will not parse as intended.
-
-   NCO implemented support for the UDUnits2 library with version 3.9.2
-(August, 2007).  The UDUnits2
-(http://www.unidata.ucar.edu/software/udunits/udunits-2/udunits2.html)
-package supports non-ASCII characters and logarithmic units.  We are
-interested in user-feedback on these features.
-
-   One aspect that deserves mention is that UDUnits, and thus NCO,
-supports run-time definition of the location of the relevant UDUnits
-databases.  With UDUnits version 1, users may specify the directory
-which contains the UDUnits database, `udunits.dat', via the
-`UDUNITS_PATH' environment variable.  With UDUnits version 2, users may
-specify the UDUnits database file itself, `udunits2.xml', via the
-`UDUNITS2_XML_PATH' environment variable.
-     export UDUNITS_PATH='/nonstandard/location/share/udunits' # UDUnits1
-     export UDUNITS2_XML_PATH='/nonstandard/location/share/udunits/udunits2.xml' # UDUnits2
-   This run-time flexibility can enable the full functionality of
-pre-built binaries on machines with libraries in different locations.
-
-   The UDUnits (http://www.unidata.ucar.edu/packages/udunits) package
-documentation describes the supported formats of time dimensions.
-Among the metadata conventions which adhere to these formats are the
-Climate and Forecast (CF) Conventions (http://cf-pcmdi.llnl.gov) and the
-Cooperative Ocean/Atmosphere Research Data Service (COARDS) Conventions
-(http://ferret.wrc.noaa.gov/noaa_coop/coop_cdf_profile.html).  The
-following `-d arguments' extract the same data using commonly
-encountered time dimension formats:
-     -d time,"1918-11-11 11:00:0.0","1939-09-09 00:00:0.0"
-   All of these formats include at least one dash `-' in a non-leading
-character position (a dash in a leading character position is a
-negative sign).  NCO assumes that a non-leading dash in a limit string
-indicates that a UDUnits date conversion is requested.
-
-As of version 4.0.0 (January, 2010), NCO supports some calendar
-attributes specified by the CF conventions.
-*Supported types:  *
-     "365_day"/"noleap", "360_day", "gregorian", "standard"
-
-*Unsupported types:*
-     "366_day"/"all_leap","proleptic_gregorian","julian","none"
-   Unsupported types default to mixed Gregorian/Julian as defined by
-UDUnits.
-
-An Example: Consider the following netCDF variable
-
-     variables:
-       double lon_cal(lon_cal) ;
-         lon_cal:long_name = "lon_cal" ;
-         lon_cal:units = "days since 1964-2-28 0:0:0" ;
-         lon_cal:calendar = "365_day" ;
-     data:
-       lon_cal = 1,2,3,4,5,6,7,8,9,10;
-
-     So the command
-     "ncks -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' in.nc out.nc"
-     Results in the hyperslab lon_cal=1,2,3,4
-
-   netCDF variables should always be stored with MKS (i.e., God's)
-units, so that application programs may assume MKS dimensions apply to
-all input variables.  The UDUnits feature is intended to alleviate some
-of the NCO user's pain when handling MKS units.  It connects users who
-think in human-friendly units (e.g., miles, millibars, days) to extract
-data which are always stored in God's units, MKS (e.g., meters,
-Pascals, seconds).  The feature is not intended to encourage writers to
-store data in esoteric units (e.g., furlongs, pounds per square inch,
-fortnights).
-
-3.20 Rebasing Time Coordinate
-=============================
-
-Availability: `ncra', `ncrcat' Short options: None
-
-   Time re-basing is performed automatically when UDUnits is installed.
-Time rebasing is invoked when numerous files share a common time-based
-record coordinate, and the record coordinate is in the same time units
-in each file, but the date offset differs among files.  For example
-suppose the time coordinate is in hours and each day in January is
-stored in its own daily file.  Each daily file records the temperature
-variable `tpt(time)' with an (unadjusted) `time' coordinate value
-between 0-23 hours, and uses the `units' attribute to advance the base
-time:
-     file01.nc time:units="hours since 1990-1-1"
-     file02.nc time:units="hours since 1990-1-2"
-     ...
-     file31.nc time:units="hours since 1990-1-31"
-
-
-     // Find mean noontime temperature in January
-     ncra -v tpt -d time,"1990-1-1 12:00:00","1990-1-31 23:59:59",24 \
-           file??.nc noon.nc
-
-     // Concatenate day2 noon through day3 noon records
-     ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-           file01.nc file02.nc file03.nc noon.nc
-
-     // Results: time is "re-based" to the time units in "file01.nc"
-     time=36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
-          53, 54, 55, 56, 57, 58, 59 ;
-
-     // If we repeat the above command but with only two input files...
-     ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-           file02.nc file03 noon.nc
-
-     // ...then the output time coordinate is based on the time units in "file02.nc"
-     time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-         29, 30, 31, 32, 33, 34, 35 ;
-
-3.21 Missing values
-===================
-
-Availability: `ncap2', `ncbo', `ncea', `ncflint', `ncpdq', `ncra',
-`ncwa'
-Short options: None
-
-   The phrase "missing data" refers to data points that are missing,
-invalid, or for any reason not intended to be arithmetically processed
-in the same fashion as valid data.  The NCO arithmetic operators
-attempt to handle missing data in an intelligent fashion.  There are
-four steps in the NCO treatment of missing data:
-  1. Identifying variables that may contain missing data.
-
-     NCO follows the convention that missing data should be stored with
-     the _FILLVALUE specified in the variable's `_FillValue' attributes.
-     The _only_ way NCO recognizes that a variable _may_ contain
-     missing data is if the variable has a `_FillValue' attribute.  In
-     this case, any elements of the variable which are numerically equal
-     to the _FILLVALUE are treated as missing data.
-
-     NCO adopted the behavior that the default attribute name, if any,
-     assumed to specify the value of data to ignore is `_FillValue'
-     with version 3.9.2 (August, 2007).  Prior to that, the
-     `missing_value' attribute, if any, was assumed to specify the
-     value of data to ignore.  Supporting both of these attributes
-     simultaneously is not practical.  Hence the behavior NCO once
-     applied to MISSING_VALUE it now applies to any _FILLVALUE.  NCO
-     now treats any MISSING_VALUE as normal data (1).
-
-     It has been and remains most advisable to create both `_FillValue'
-     and `missing_value' attributes with identical values in datasets.
-     Many legacy datasets contain only `missing_value' attributes.  NCO
-     can help migrating datasets between these conventions.  One may
-     use `ncrename' (*note ncrename netCDF Renamer::) to rename all
-     `missing_value' attributes to `_FillValue':
-          ncrename -a .missing_value,_FillValue inout.nc
-     Alternatively, one may use `ncatted' (*note ncatted netCDF
-     Attribute Editor::) to add a `_FillValue' attribute to all
-     variables
-          ncatted -O -a _FillValue,,o,f,1.0e36 inout.nc
-
-  2. Converting the _FILLVALUE to the type of the variable, if
-     neccessary.
-
-     Consider a variable VAR of type VAR_TYPE with a `_FillValue'
-     attribute of type ATT_TYPE containing the value _FILLVALUE.  As a
-     guideline, the type of the `_FillValue' attribute should be the
-     same as the type of the variable it is attached to.  If VAR_TYPE
-     equals ATT_TYPE then NCO straightforwardly compares each value of
-     VAR to _FILLVALUE to determine which elements of VAR are to be
-     treated as missing data.  If not, then NCO converts _FILLVALUE from
-     ATT_TYPE to VAR_TYPE by using the implicit conversion rules of C,
-     or, if ATT_TYPE is `NC_CHAR' (2), by typecasting the results of
-     the C function `strtod(_FILLVALUE)'.  You may use the NCO operator
-     `ncatted' to change the `_FillValue' attribute and all data whose
-     data is _FILLVALUE to a new value (*note ncatted netCDF Attribute
-     Editor::).
-
-  3. Identifying missing data during arithmetic operations.
-
-     When an NCO arithmetic operator processes a variable VAR with a
-     `_FillValue' attribute, it compares each value of VAR to
-     _FILLVALUE before performing an operation.  Note the _FILLVALUE
-     comparison imposes a performance penalty on the operator.
-     Arithmetic processing of variables which contain the `_FillValue'
-     attribute always incurs this penalty, even when none of the data
-     are missing.  Conversely, arithmetic processing of variables which
-     do not contain the `_FillValue' attribute never incurs this
-     penalty.  In other words, do not attach a `_FillValue' attribute
-     to a variable which does not contain missing data.  This
-     exhortation can usually be obeyed for model generated data, but it
-     may be harder to know in advance whether all observational data
-     will be valid or not.
-
-  4. Treatment of any data identified as missing in arithmetic
-     operators.
-
-     NCO averagers (`ncra', `ncea', `ncwa') do not count any element
-     with the value _FILLVALUE towards the average.  `ncbo' and
-     `ncflint' define a _FILLVALUE result when either of the input
-     values is a _FILLVALUE.  Sometimes the _FILLVALUE may change from
-     file to file in a multi-file operator, e.g., `ncra'.  NCO is
-     written to account for this (it always compares a variable to the
-     _FILLVALUE assigned to that variable in the current file).
-     Suffice it to say that, in all known cases, NCO does "the right
-     thing".
-
-     It is impossible to determine and store the correct result of a
-     binary operation in a single variable.  One such corner case
-     occurs when both operands have differing _FILLVALUE attributes,
-     i.e., attributes with different numerical values.  Since the
-     output (result) of the operation can only have one _FILLVALUE,
-     some information may be lost.  In this case, NCO always defines
-     the output variable to have the same _FILLVALUE as the first input
-     variable.  Prior to performing the arithmetic operation, all
-     values of the second operand equal to the second _FILLVALUE are
-     replaced with the first _FILLVALUE.  Then the arithmetic operation
-     proceeds as normal, comparing each element of each operand to a
-     single _FILLVALUE.  Comparing each element to two distinct
-     _FILLVALUE's would be much slower and would be no likelier to
-     yield a more satisfactory answer.  In practice, judicious choice
-     of _FILLVALUE values prevents any important information from being
-     lost.
-
-   ---------- Footnotes ----------
-
-   (1) The old functionality, i.e., where the ignored values are
-indicated by `missing_value' not `_FillValue', may still be selected
-_at NCO build time_ by compiling NCO with the token definition
-`CPPFLAGS='-DNCO_MSS_VAL_SNG=missing_value''.
-
-   (2) For example, the DOE ARM program often uses ATT_TYPE = `NC_CHAR'
-and _FILLVALUE = `-99999.'.
-
-3.22 Chunking
-=============
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: none
-Long options: `--cnk_dmn DMN_NM,CNK_SZ', `--chunk_dimension
-DMN_NM,CNK_SZ'
-, `--cnk_map CNK_MAP', `--chunk_map CNK_MAP',
-`--cnk_plc CNK_PLC', `--chunk_policy CNK_PLC',
-`--cnk_scl CNK_SZ', `--chunk_scalar CNK_SZ'
-
-   All netCDF4-enabled NCO operators that define variables support a
-plethora of chunksize options.  Chunking can significantly accelerate
-or degrade read/write access to large datasets.  Dataset chunking
-issues are described in detail here
-(http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html).
-
-   The NCO chunking implementation is designed to be flexible.  Users
-control three aspects of the chunking implementation.  These are known
-as the "chunking policy", "chunking map", and "chunksize".  The first
-two are high-level mechanisms that apply to an entire file, while the
-third allows per-dimension specification of parameters.  The
-implementation is a hybrid of the `ncpdq' packing policies (*note ncpdq
-netCDF Permute Dimensions Quickly::), and the hyperslab specifications
-(*note Hyperslabs::).  Each aspect is intended to have a sensible
-default, so that most users will only need to set one switch to obtain
-sensible chunking.  Power users can tune the three switches in tandem
-to obtain optimal performance.
-
-   The user specifies the desired chunking policy with the `-P' switch
-(or its long option equivalents, `--cnk_plc' and `--chunk_policy') and
-its CNK_PLC argument.  Five chunking policies are currently implemented:
-"Chunk All Variables [_default_]"
-     Definition: Chunk all variables possible
-     Alternate invocation: `ncchunk'
-     CNK_PLC key values: `all', `cnk_all', `plc_all'
-     Mnemonic: All
-"Chunk Variables with at least Two Dimensions"
-     Definition: Chunk all variables possible with at least two
-     dimensions
-     Alternate invocation: none
-     CNK_PLC key values: `g2d', `cnk_g2d', `plc_g2d'
-     Mnemonic: _G_reater than or equal to _2_ _D_imensions
-"Chunk Variables with at least Three Dimensions"
-     Definition: Chunk all variables possible with at least three
-     dimensions
-     Alternate invocation: none
-     CNK_PLC key values: `g3d', `cnk_g3d', `plc_g3d'
-     Mnemonic: _G_reater than or equal to _3_ _D_imensions
-"Chunk Variables Containing Explicitly Chunked Dimensions"
-     Definition: Chunk all variables possible that contain at least one
-     dimension whose chunksize was explicitly set with the `--cnk_dmn'
-     option.  Alternate invocation: none
-     CNK_PLC key values: `xpl', `cnk_xpl', `plc_xpl'
-     Mnemonic: E_XPL_icitly specified dimensions
-"Unchunking"
-     Definition: Unchunk all variables
-     Alternate invocation: `ncunchunk'
-     CNK_PLC key values: `uck', `cnk_uck', `plc_uck', `unchunk'
-     Mnemonic: _U_n_C_hun_K_
-Equivalent key values are fully interchangeable.  Multiple equivalent
-options are provided to satisfy disparate needs and tastes of NCO users
-working with scripts and from the command line.
-
-   The chunking algorithms must know the chunksizes of each dimension of
-each variable to be chunked.  The correspondence between the input
-variable shape and the chunksizes is called the "chunking map".  The
-user specifies the desired chunking map with the `-M' switch (or its
-long option equivalents, `--cnk_map' and `--chunk_map') and its CNK_MAP
-argument.  Four chunking maps are currently implemented:
-"Chunksize Equals Dimension Size [_default_]"
-     Definition: Chunksize defaults to dimension size.  Explicitly
-     specify chunksizes for particular dimensions with `--cnk_dmn'
-     option.
-     CNK_MAP key values: `dmn', `cnk_dmn', `map_dmn'
-     Mnemonic: _D_i_M_e_N_sion
-"Chunksize Equals Dimension Size except Record Dimension"
-     Definition: Chunksize equals dimension size except record
-     dimension has size one.  Explicitly specify chunksizes for
-     particular dimensions with `--cnk_dmn' option.
-     CNK_MAP key values: `rd1', `cnk_rd1', `map_rd1'
-     Mnemonic: _R_ecord _D_imension size _1_
-"Chunksize Equals Scalar Size Specified"
-     Definition: Chunksize for all dimensions is set with the
-     `--cnk_scl' option.
-     CNK_MAP key values: `xpl', `cnk_xpl', `map_xpl'
-     Mnemonic: E_XPL_icitly specified dimensions
-"Chunksize Product Equals Scalar Size Specified"
-     Definition: The product of the chunksizes for each variable
-     (approximately) equals the size specified with the `--cnk_scl'
-     option.  For a variable of rank R (i.e., with R non-degenerate
-     dimensions), the chunksize in each non-degenerate dimension is the
-     Rth root of CNK_SCL.
-     CNK_MAP key values: `prd', `cnk_prd', `map_prd'
-     Mnemonic: _PR_o_D_uct
-It is possible to combine the above chunking map algorithms with
-user-specified per-dimension (but not per-variable) chunksizes that
-override specific chunksizes determined by the maps above.  The user
-specifies the per-dimension chunksizes with the (equivalent) long
-options `--cnk_dmn' or `--chunk_dimension').  The option takes two
-comma-separated arguments, DMN_NM,CNK_SZ, which are the dimension name
-and its chunksize, respectively.  The `--cnk_dmn' option may be used as
-many times as necessary.
-
-     # Simple chunking and unchunking
-     ncks -O -4 --cnk_plc=all     in.nc out.nc # Chunk in.nc
-     ncks -O -4 --cnk_plc=unchunk in.nc out.nc # Unchunk in.nc
-
-     # Chunk data then unchunk it, printing informative metadata
-     ncks -O -4 -D 4 --cnk_plc=all ~/nco/data/in.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-
-     # More complex chunking procedures, with informative metadata
-     ncks -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_scl=8 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_dmn lat,64 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-     ncks -O -4 -D 4 --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-
-     # Chunking works with all operators...
-     ncap2 -O -4 -D 4 --cnk_scl=8 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc
-     ncbo -O -4 -D 4 --cnk_scl=8 -p ~/nco/data in.nc in.nc ~/foo.nc
-     ncecat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-     ncflint -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-     ncpdq -O -4 -D 4 -P all_new --cnk_scl=8 -L 5 ~/nco/data/in.nc ~/foo.nc
-     ncrcat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-     ncwa -O -4 -D 4 -a time --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-
-   It is appropriate to conclude by informing users about an aspect of
-chunking that may not be expected: Record dimensions are always chunked
-with a chunksize of one.  Hence all variables that contain the record
-dimension are also stored as chunked (since data must be stored with
-chunking either in all dimensions, or in no dimensions).  Unless
-otherwise specified by the user, the other (fixed, non-record)
-dimensions of such variables are assigned default chunk sizes.  The
-HDF5 layer does all this automatically to optimize the on-disk
-variable/file storage geometry of record variables.  Do not be
-surprised to learn that files created without any explicit instructions
-to activate chunking nevertheless contain chunked variables.
-
-3.23 Deflation
-==============
-
-Availability: `ncap2', `ncbo', `ncea', `ncecat', `ncflint', `ncks',
-`ncpdq', `ncra', `ncrcat', `ncwa'
-Short options: `-L'
-Long options: `--dfl_lvl', `--deflate'
-
-   All NCO operators that define variables support the netCDF4 feature
-of storing variables compressed with Lempel-Ziv deflation.  The
-Lempel-Ziv algorithm is a lossless data compression technique.
-Activate this deflation with the `-L DFL_LVL' short option (or with the
-same argument to the `--dfl_lvl' or `--deflate' long options).  Specify
-the deflation level DFL_LVL on a scale from no deflation (DFL_LVL = 0)
-to maximum deflation (DFL_LVL = 9).  Minimal deflation (DFL_LVL = 1)
-achieves considerable storage compression with little time penalty.
-Higher deflation levels require more time for compression.  File sizes
-resulting from minimal (DFL_LVL = 1) and maximal (DFL_LVL = 9)
-deflation levels typically differ by a few percent in size.
-
-   To compress an entire file using deflation, use
-     ncks -4 -L 0 in.nc out.nc # No deflation (fast, no time penalty)
-     ncks -4 -L 1 in.nc out.nc # Minimal deflation (little time penalty)
-     ncks -4 -L 9 in.nc out.nc # Maximal deflation (much slower)
-
-   Unscientific testing shows that deflation compresses typical climate
-datasets by 30-60%.  Packing, a lossy compression technique available
-for all netCDF files (see *note Packed data::), can easily compress
-files by 50%.  Packed data may be deflated to squeeze datasets by about
-80%:
-     ncks  -4 -L 1 in.nc out.nc # Minimal deflation (~30-60% compression)
-     ncks  -4 -L 9 in.nc out.nc # Maximal deflation (~31-63% compression)
-     ncpdq         in.nc out.nc # Standard packing  (~50% compression)
-     ncpdq -4 -L 9 in.nc out.nc # Deflated packing  (~80% compression)
-   `ncks' prints deflation parameters, if any, to screen (*note ncks
-netCDF Kitchen Sink::).
-
-3.24 Packed data
-================
-
-Availability: `ncap2', `ncbo', `ncea', `ncflint', `ncpdq', `ncra',
-`ncwa'
-Short options: None
-
-   The phrase "packed data" refers to data which are stored in the
-standard netCDF3 packing format which employs a lossy algorithm.  See
-*note ncks netCDF Kitchen Sink:: for a description of deflation, a
-lossless compression technique available with netCDF4 only.  Packed
-data may be deflated to save additional space.
-
-Packing Algorithm
------------------
-
-"Packing" The standard netCDF packing algorithm is lossy, and produces
-data with the same dynamic range as the original but which requires no
-more than half the space to store.  The packed variable is stored
-(usually) as type `NC_SHORT' with the two attributes required to unpack
-the variable, `scale_factor' and `add_offset', stored at the original
-(unpacked) precision of the variable (1).  Let MIN and MAX be the
-minimum and maximum values of X.
-
-   SCALE_FACTOR = (MAX-MIN)/NDRV
-ADD_OFFSET = 0.5*(MIN+MAX)
-PCK = (UPK-ADD_OFFSET)/SCALE_FACTOR = (UPK-0.5*(MIN+MAX))*NDRV/(MAX-MIN)
-
-   where NDRV is the number of discrete representable values for given
-type of packed variable.  The theoretical maximum value for NDRV is two
-raised to the number of bits used to store the packed variable.  Thus
-if the variable is packed into type `NC_SHORT', a two-byte datatype,
-then there are at most 2^16 = 65536 distinct values representible.  In
-practice, the number of discretely representible values is taken to be
-two less than the theoretical maximum.  This leaves space for a missing
-value and solves potential problems with rounding that may occur during
-the unpacking of the variable.  Thus for `NC_SHORT', ndrv = 65536 - 2 =
-65534.  Less often, the variable may be packed into type `NC_CHAR',
-where ndrv = 256 - 2 = 254, or type `NC_INT' where where ndrv =
-4294967295 - 2 = 4294967293.  One useful feature of (lossy) netCDF
-packing algorithm is that additional, loss-less packing algorithms
-perform well on top of it.
-
-Unpacking Algorithm
--------------------
-
-"Unpacking" The unpacking algorithm depends on the presence of two
-attributes, `scale_factor' and `add_offset'.  If `scale_factor' is
-present for a variable, the data are multiplied by the value
-SCALE_FACTOR after the data are read.  If `add_offset' is present for a
-variable, then the ADD_OFFSET value is added to the data after the data
-are read.  If both `scale_factor' and `add_offset' attributes are
-present, the data are first scaled by SCALE_FACTOR before the offset
-ADD_OFFSET is added.
-
-   UPK = SCALE_FACTOR*PCK + ADD_OFFSET = (MAX-MIN)*PCK/NDRV +
-0.5*(MIN+MAX)
-
-   When `scale_factor' and `add_offset' are used for packing, the
-associated variable (containing the packed data) is typically of type
-`byte' or `short', whereas the unpacked values are intended to be of
-type `int', `float', or `double'.  An attribute's `scale_factor' and
-`add_offset' and `_FillValue', if any, should all be of the type
-intended for the unpacked data, i.e., `int', `float' or `double'.
-
-Default Handling of Packed Data
--------------------------------
-
-All NCO arithmetic operators understand packed data.  The operators
-automatically unpack any packed variable in the input file which will
-be arithmetically processed.  For example, `ncra' unpacks all record
-variables, and `ncwa' unpacks all variable which contain a dimension to
-be averaged.  These variables are stored unpacked in the output file.
-
-   On the other hand, arithmetic operators do not unpack non-processed
-variables.  For example, `ncra' leaves all non-record variables packed,
-and `ncwa' leaves packed all variables lacking an averaged dimension.
-These variables (called fixed variables) are passed unaltered from the
-input to the output file.  Hence fixed variables which are packed in
-input files remain packed in output files.  Completely packing and
-unpacking files is easily accomplished with `ncpdq' (*note ncpdq netCDF
-Permute Dimensions Quickly::).  Packing and unpacking individual
-variables may be done with `ncpdq' and the `ncap2' `pack()' and
-`unpack()' functions (*note Methods and functions::).
-
-   ---------- Footnotes ----------
-
-   (1) Although not a part of the standard, NCO enforces the policy
-that the `_FillValue' attribute, if any, of a packed variable is also
-stored at the original precision.
-
-3.25 Operation Types
-====================
-
-Availability: `ncap2', `ncra', `ncea', `ncwa'
-Short options: `-y'
-Long options: `--operation', `--op_typ'
-The `-y OP_TYP' switch allows specification of many different types of
-operations Set OP_TYP to the abbreviated key for the corresponding
-operation:
-`avg'
-     Mean value
-
-`sqravg'
-     Square of the mean
-
-`avgsqr'
-     Mean of sum of squares
-
-`max'
-     Maximium value
-
-`min'
-     Minimium value
-
-`rms'
-     Root-mean-square (normalized by N)
-
-`rmssdn'
-     Root-mean square (normalized by N-1)
-
-`sqrt'
-     Square root of the mean
-
-`ttl'
-     Sum of values
-   NCO assumes coordinate variables represent grid axes, e.g.,
-longitude.  The only rank-reduction which makes sense for coordinate
-variables is averaging.  Hence NCO implements the operation type
-requested with `-y' on all non-coordinate variables, but not on
-coorniate variables.  When an operation requires a coordinate variable
-to be reduced in rank, i.e., from one dimension to a scalar or from one
-dimension to a degenerate (single value) array, then NCO _always
-averages_ the coordinate variable regardless of the arithmetic
-operation type performed on the non-coordinate variables.
-
-   The mathematical definition of each arithmetic operation is given
-below.  *Note ncwa netCDF Weighted Averager::, for additional
-information on masks and normalization.  If an operation type is not
-specified with `-y' then the operator performs an arithmetic average by
-default.  Averaging is described first so the terminology for the other
-operations is familiar.
-
-   _Note for Info users_: The definition of mathematical operations
-involving rank reduction (e.g., averaging) relies heavily on
-mathematical expressions which cannot be easily represented in Info.
-_See the printed manual (./nco.pdf) for much more detailed and complete
-documentation of this subject._
-
-   The definitions of some of these operations are not universally
-useful.  Mostly they were chosen to facilitate standard statistical
-computations within the NCO framework.  We are open to redefining and
-or adding to the above.  If you are interested in having other
-statistical quantities defined in NCO please contact the NCO project
-(*note Help Requests and Bug Reports::).
-
-EXAMPLES
-
-Suppose you wish to examine the variable `prs_sfc(time,lat,lon)' which
-contains a time series of the surface pressure as a function of
-latitude and longitude.  Find the minimium value of `prs_sfc' over all
-dimensions:
-     ncwa -y min -v prs_sfc in.nc foo.nc
-   Find the maximum value of `prs_sfc' at each time interval for each
-latitude:
-     ncwa -y max -v prs_sfc -a lon in.nc foo.nc
-   Find the root-mean-square value of the time-series of `prs_sfc' at
-every gridpoint:
-     ncra -y rms -v prs_sfc in.nc foo.nc
-     ncwa -y rms -v prs_sfc -a time in.nc foo.nc
-   The previous two commands give the same answer but `ncra' is
-preferred because it has a smaller memory footprint.  Also, by default,
-`ncra' leaves the (degenerate) `time' dimension in the output file
-(which is usually useful) whereas `ncwa' removes the `time' dimension
-(unless `-b' is given).
-
-These operations work as expected in multi-file operators.  Suppose
-that `prs_sfc' is stored in multiple timesteps per file across multiple
-files, say `jan.nc', `feb.nc', `march.nc'.  We can now find the three
-month maximium surface pressure at every point.
-     ncea -y max -v prs_sfc jan.nc feb.nc march.nc out.nc
-
-It is possible to use a combination of these operations to compute the
-variance and standard deviation of a field stored in a single file or
-across multiple files.  The procedure to compute the temporal standard
-deviation of the surface pressure at all points in a single file
-`in.nc' involves three steps.
-     ncwa -O -v prs_sfc -a time in.nc out.nc
-     ncbo -O -v prs_sfc in.nc out.nc out.nc
-     ncra -O -y rmssdn out.nc out.nc
-   First construct the temporal mean of `prs_sfc' in the file `out.nc'.
-Next overwrite `out.nc' with the anomaly (deviation from the mean).
-Finally overwrite `out.nc' with the root-mean-square of itself.  Note
-the use of `-y rmssdn' (rather than `-y rms') in the final step.  This
-ensures the standard deviation is correctly normalized by one fewer
-than the number of time samples.  The procedure to compute the variance
-is identical except for the use of `-y var' instead of `-y rmssdn' in
-the final step.
-
-   `ncap2' can also compute statistics like standard deviations.
-Brute-force implementation of formulae is one option, e.g.,
-     ncap2 -s 'prs_sfc_sdn=sqrt((prs_sfc-prs_sfc.avg($time)^2).total($time))/($time.size-1)'
-           in.nc out.nc
-   The operation may, of course, be broken into multiple steps in order
-to archive intermediate quantities, such as the time-anomalies
-     ncap2 -s 'prs_sfc_anm=prs_sfc-prs_sfc.avg($time)' \
-           -s 'prs_sfc_sdn=sqrt((prs_sfc_anm^2).total($time))/($time.size-1)' \
-           in.nc out.nc
-
-   `ncap2' supports intrinsic standard deviation functions (*note
-Operation Types::) which simplify the above expression to
-     ncap2 -s 'prs_sfc_sdn=(prs_sfc-prs_sfc.avg($time)).rmssdn($time)' in.nc out.nc
-   These instrinsic functions compute the answer quickly and concisely.
-
-   The procedure to compute the spatial standard deviation of a field
-in a single file `in.nc' involves three steps.
-     ncwa -O -v prs_sfc,gw -a lat,lon -w gw in.nc out.nc
-     ncbo -O -v prs_sfc,gw in.nc out.nc out.nc
-     ncwa -O -y rmssdn -v prs_sfc -a lat,lon -w gw out.nc out.nc
-   First the appropriately weighted (with `-w gw') spatial mean values
-are written to the output file.  This example includes the use of a
-weighted variable specified with `-w gw'.  When using weights to
-compute standard deviations one must remember to include the weights in
-the initial output files so that they may be used again in the final
-step.  The initial output file is then overwritten with the gridpoint
-deviations from the spatial mean.  Finally the root-mean-square of the
-appropriately weighted spatial deviations is taken.
-
-   The `ncap2' solution to the spatially-weighted standard deviation
-problem is
-     ncap2 -s 'prs_sfc_sdn=(prs_sfc*gw-prs_sfc*gw.avg($lat,$lon)).rmssdn($lat,$lon)' \
-           in.nc out.nc
-   Be sure to multiply the variable by the weight prior to computing the
-the anomalies and the standard deviation.
-
-   The procedure to compute the standard deviation of a time-series
-across multiple files involves one extra step since all the input must
-first be collected into one file.
-     ncrcat -O -v tpt in.nc in.nc foo1.nc
-     ncwa -O -a time foo1.nc foo2.nc
-     ncbo -O -v tpt foo1.nc foo2.nc foo3.nc
-     ncra -O -y rmssdn foo3.nc out.nc
-   The first step assembles all the data into a single file.  Though
-this may consume a lot of temporary disk space, it is more or less
-required by the `ncbo' operation in the third step.
-
-3.26 Type Conversion
-====================
-
-Availability: `ncap2', `ncbo', `ncea', `ncra', `ncwa'
-Short options: None
-Type conversion (often called "promotion" or "demotion") refers to the
-casting of one fundamental data type to another, e.g., converting
-`NC_SHORT' (two bytes) to `NC_DOUBLE' (eight bytes).  Type conversion
-is automatic when the language carries out this promotion according to
-an internal set of rules without explicit user intervention.  In
-contrast, manual type conversion refers to explicit user commands to
-change the type of a variable or attribute.  Most type conversion
-happens automatically, yet there are situations in which manual type
-conversion is advantageous.
-
-3.26.1 Automatic type conversion
---------------------------------
-
-As a general rule, automatic type conversions should be avoided for at
-least two reasons.  First, type conversions are expensive since they
-require creating (temporary) buffers and casting each element of a
-variable from the type it was stored at to some other type.  Second,
-the dataset's creator probably had a good reason for storing data as,
-say, `NC_FLOAT' rather than `NC_DOUBLE'.  In a scientific framework
-there is no reason to store data with more precision than the
-observations were made.  Thus NCO tries to avoid performing automatic
-type conversions when performing arithmetic.
-
-   Automatic type conversion during arithmetic in the languages C and
-Fortran is performed only when necessary.  All operands in an operation
-are converted to the most precise type before the operation takes place.
-However, following this parsimonious conversion rule dogmatically
-results in numerous headaches.  For example, the average of the two
-`NC_SHORT's `17000s' and `17000s' results in garbage since the
-intermediate value which holds their sum is also of type `NC_SHORT' and
-thus cannot represent values greater than 32,767 (1).  There are valid
-reasons for expecting this operation to succeed and the NCO philosophy
-is to make operators do what you want, not what is most pure.  Thus,
-unlike C and Fortran, but like many other higher level interpreted
-languages, NCO arithmetic operators will perform automatic type
-conversion when all the following conditions are met (2):
-  1. The operator is `ncea', `ncra', or `ncwa'.  `ncbo' is not yet
-     included in this list because subtraction did not benefit from
-     type conversion.  This will change in the future
-
-  2. The arithmetic operation could benefit from type conversion.
-     Operations that could benefit (e.g., from larger representable
-     sums) include averaging, summation, or any "hard" arithmetic.
-     Type conversion does not benefit searching for minima and maxima
-     (`-y min', or `-y max').
-
-  3. The variable on disk is of type `NC_BYTE', `NC_CHAR', `NC_SHORT',
-     or `NC_INT'.  Type `NC_DOUBLE' is not type converted because there
-     is no type of higher precision to convert to.  Type `NC_FLOAT' is
-     not type converted because, in our judgement, the performance
-     penalty of always doing so would outweigh the (extremely rare)
-     potential benefits.
-
-   When these criteria are all met, the operator promotes the variable
-in question to type `NC_DOUBLE', performs all the arithmetic
-operations, casts the `NC_DOUBLE' type back to the original type, and
-finally writes the result to disk.  The result written to disk may not
-be what you expect, because of incommensurate ranges represented by
-different types, and because of (lack of) rounding.  First, continuing
-the above example, the average (e.g., `-y avg') of `17000s' and
-`17000s' is written to disk as `17000s'.  The type conversion feature
-of NCO makes this possible since the arithmetic and intermediate values
-are stored as `NC_DOUBLE's, i.e., `34000.0d' and only the final result
-must be represented as an `NC_SHORT'.  Without the type conversion
-feature of NCO, the average would have been garbage (albeit predictable
-garbage near `-15768s').  Similarly, the total (e.g., `-y ttl') of
-`17000s' and `17000s' written to disk is garbage (actually `-31536s')
-since the final result (the true total) of 34000 is outside the range
-of type `NC_SHORT'.
-
-   Type conversions use the `floor' function to convert floating point
-number to integers.  Type conversions do not attempt to round floating
-point numbers to the nearest integer.  Thus the average of `1s' and
-`2s' is computed in double precisions arithmetic as (`1.0d' +
-`1.5d')/2) = `1.5d'.  This result is converted to `NC_SHORT' and stored
-on disk as `floor(1.5d)' = `1s' (3).  Thus no "rounding up" is
-performed.  The type conversion rules of C can be stated as follows: If
-N is an integer then any floating point value X satisfying
-
-   n <= x < n+1
-
-   will have the value N when converted to an integer.
-
-   ---------- Footnotes ----------
-
-   (1)
-
-   32767 = 2^15-1
-
-   (2) Operators began performing type conversions before arithmetic in
-NCO version 1.2, August, 2000.  Previous versions never performed
-unnecessary type conversion for arithmetic.
-
-   (3) The actual type conversions are handled by intrinsic C-language
-type conversion, so the `floor()' function is not explicitly called,
-though the results would be the same if it were.
-
-3.26.2 Manual type conversion
------------------------------
-
-`ncap2' provides intrinsic functions for performing manual type
-conversions.  This, for example, converts variable `tpt' to external
-type `NC_SHORT' (a C-type `short'), and variable `prs' to external type
-`NC_DOUBLE' (a C-type `double').
-     ncap2 -s 'tpt=short(tpt);prs=double(prs)' in.nc out.nc
-   *Note ncap2 netCDF Arithmetic Processor::, for more details.
-
-3.27 Batch Mode
-===============
-
-Availability: All operators
-Short options: `-O', `-A'
-Long options: `--ovr', `--overwrite', `--apn', `--append'
-If the OUTPUT-FILE specified for a command is a pre-existing file, then
-the operator will prompt the user whether to overwrite (erase) the
-existing OUTPUT-FILE, attempt to append to it, or abort the operation.
-However, interactive questions reduce productivity when processing large
-amounts of data.  Therefore NCO also implements two ways to override
-its own safety features, the `-O' and `-A' switches.  Specifying `-O'
-tells the operator to overwrite any existing OUTPUT-FILE without
-prompting the user interactively.  Specifying `-A' tells the operator
-to attempt to append to any existing OUTPUT-FILE without prompting the
-user interactively.  These switches are useful in batch environments
-because they suppress interactive keyboard input.
-
-3.28 History Attribute
-======================
-
-Availability: All operators
-Short options: `-h'
-Long options: `--hst', `--history'
-All operators automatically append a `history' global attribute to any
-file they create or modify.  The `history' attribute consists of a
-timestamp and the full string of the invocation command to the
-operator, e.g., `Mon May 26 20:10:24 1997: ncks in.nc foo.nc'.  The
-full contents of an existing `history' attribute are copied from the
-first INPUT-FILE to the OUTPUT-FILE.  The timestamps appear in reverse
-chronological order, with the most recent timestamp appearing first in
-the `history' attribute.  Since NCO and many other netCDF operators
-adhere to the `history' convention, the entire data processing path of
-a given netCDF file may often be deduced from examination of its
-`history' attribute.  As of May, 2002, NCO is case-insensitive to the
-spelling of the `history' attribute name.  Thus attributes named
-`History' or `HISTORY' (which are non-standard and not recommended)
-will be treated as valid history attributes.  When more than one global
-attribute fits the case-insensitive search for "history", the first one
-found will be used.  `history' attribute To avoid information overkill,
-all operators have an optional switch (`-h', `--hst', or `--history')
-to override automatically appending the `history' attribute (*note
-ncatted netCDF Attribute Editor::).  Note that the `-h' switch also
-turns off writing the `nco_input_file_list' attribute for multi-file
-operators (*note File List Attributes::).
-
-3.29 File List Attributes
-=========================
-
-Availability: `ncea', `ncecat', `ncra', `ncrcat'
-Short options: `-H'
-Long options: `--fl_lst_in', `--file_list'
-Many methods of specifying large numbers of input file names pass these
-names via pipes, encodings, or argument transfer programs (*note Large
-Numbers of Files::).  When these methods are used, the input file list
-is not explicitly passed on the command line.  This results in a loss
-of information since the `history' attribute no longer contains the
-exact command by which the file was created.
-
-   NCO solves this dilemma by archiving input file list attributes.
-When the input file list to a multi-file operator is specified via
-`stdin', the operator, by default, attaches two global attributes to
-any file they create or modify.  The `nco_input_file_number' global
-attribute contains the number of input files, and `nco_input_file_list'
-contains the file names, specified as standard input to the multi-file
-operator.  This information helps to verify that all input files the
-user thinks were piped through `stdin' actually arrived.  Without the
-`nco_input_file_list' attribute, the information is lost forever and
-the "chain of evidence" would be broken.
-
-   The `-H' switch overrides (turns off) the default behavior of
-writing the input file list global attributes when input is from
-`stdin'.  The `-h' switch does this too, and turns off the `history'
-attribute as well (*note History Attribute::).  Hence both switches
-allows space-conscious users to avoid storing what may amount to many
-thousands of filenames in a metadata attribute.
-
-3.30 CF Conventions
-===================
-
-Availability: `ncbo', `ncea', `ncecat', `ncflint', `ncpdq', `ncra',
-`ncwa'
-Short options: None
-NCO recognizes the Climate and Forecast (CF) metadata conventions, and
-applies special rules to such data.  NCO also handles older NCAR model
-datasets, such as CCM and early CCSM datasets, with its CF rules even
-though the earlier data may not contain an explicit `Conventions'
-attribute (e.g., `CF-1.0').  We refer to all such data collectively as
-CF data.  Skip this section if you never work with CF data.
-
-   The CF netCDF conventions are described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system).
-Most CF netCDF conventions are transparent to NCO (1).  There are no
-known pitfalls associated with using any NCO operator on files adhering
-to these conventions (2).  However, to facilitate maximum user
-friendliness, NCO applies special rules to certain variables in CF
-files.  The special functions are not required by the CF netCDF
-conventions, yet experience shows that they simplify data analysis.
-
-   Currently, NCO determines whether a datafile is a CF output datafile
-simply by checking (case-insensitively) whether the value of the global
-attribute `Conventions' (if any) equals `CF-1.0' or `NCAR-CSM' Should
-`Conventions' equal either of these in the (first) INPUT-FILE, NCO will
-apply special rules to certain variables because of their usual meaning
-in CF files.  NCO will not average the following variables often found
-in CF files: `ntrm', `ntrn', `ntrk', `ndbase', `nsbase', `nbdate',
-`nbsec', `mdt', `mhisf'.  These variables contain scalar metadata such
-as the resolution of the host geophysical model and it makes no sense
-to change their values.
-
-   Furthermore, the "size and rank-preserving arithmetic operators" try
-not to operate on certain grid properties.  These operators are `ncap',
-`ncbo', `ncea', `ncflint', and `ncpdq' (when used for packing, not for
-permutation).  These operators do not operate, by default, on (i.e.,
-add, subtract, pack, etc.) the following variables: `ORO', `area',
-`datesec', `date', `gw', `hyai', `hyam', `hybi'.  `hybm', `lat_bnds',
-`lon_bnds', `msk_*'.  These variables represent the Gaussian weights,
-the orography field, time fields, hybrid pressure coefficients, and
-latititude/longitude boundaries.  We call these fields non-coordinate
-"grid properties".  Coordinate grid properties are easy to identify
-because they are coordinate variables such as `latitude' and
-`longitude'.
-
-   Users usually want _all_ grid properties to remain unaltered in the
-output file.  To be treated as a grid property, the variable name must
-_exactly_ match a name in the above list, or be a coordinate variable.
-The handling of `msk_*' is exceptional in that _any_ variable name
-beginning with the string `msk_' is considered to be a "mask" and is
-thus preserved (not operated on arithmetically).
-
-   You must spoof NCO if you would like any grid properties or other
-special CF fields processed normally.  For example rename the variables
-first with `ncrename', or alter the `Conventions' attribute.
-
-   As of NCO version 4.0.8 (April, 2011), NCO supports the CF `bounds'
-convention for cell boundaries described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries).
-This convention allows coordinate variables (including multidimensional
-coordinates) to describe the boundaries of their cells.  This is done
-by naming the variable which contains the bounds in in the `bounds'
-attribute.  Note that coordinates of rank N have bounds of rank N+1.
-NCO-generated subsets of CF-compliant files with `bounds' attributes
-will include the coordinates specified by the `bounds' attribute, if
-any.  Hence the subsets will themselves be CF-compliant.
-
-   As of NCO version 3.9.6 (January, 2009), NCO supports the CF
-`coordinates' convention described here
-(http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system).
-This convention allows variables to specify additional coordinates
-(including multidimensional coordinates) in a space-separated string
-attribute named `coordinates'.  NCO attaches any such coordinates to
-the extraction list along with variable and its usual (one-dimensional)
-coordinates, if any.  These auxiliary coordinates are subject to the
-user-specified overrides described in *note Subsetting Coordinate
-Variables::.
-
-   ---------- Footnotes ----------
-
-   (1) The exception is appending/altering the attributes `x_op',
-`y_op', `z_op', and `t_op' for variables which have been averaged
-across space and time dimensions.  This feature is scheduled for future
-inclusion in NCO.
-
-   (2) The CF conventions recommend `time' be stored in the format TIME
-since BASE_TIME, e.g., the `units' attribute of `time' might be `days
-since 1992-10-8 15:15:42.5 -6:00'.  A problem with this format occurs
-when using `ncrcat' to concatenate multiple files together, each with a
-different BASE_TIME.  That is, any `time' values from files following
-the first file to be concatenated should be corrected to the BASE_TIME
-offset specified in the `units' attribute of `time' from the first file.
-The analogous problem has been fixed in ARM files (*note ARM
-Conventions::) and could be fixed for CF files if there is sufficient
-lobbying.
-
-3.31 ARM Conventions
-====================
-
-Availability: `ncrcat'
-Short options: None
-`ncrcat' has been programmed to correctly handle data files which
-utilize the Atmospheric Radiation Measurement (ARM) Program convention
-(http://www.arm.gov/data/time.stm) for time and time offsets.  If you
-do not work with ARM data then you may skip this section.  ARM data
-files store time information in two variables, a scalar, `base_time',
-and a record variable, `time_offset'.  Subtle but serious problems can
-arise when these type of files are just blindly concatenated.
-Therefore `ncrcat' has been specially programmed to be able to chain
-together consecutive ARM INPUT-FILES and produce and an OUTPUT-FILE
-which contains the correct time information.  Currently, `ncrcat'
-determines whether a datafile is an ARM datafile simply by testing for
-the existence of the variables `base_time', `time_offset', and the
-dimension `time'.  If these are found in the INPUT-FILE then `ncrcat'
-will automatically perform two non-standard, but hopefully useful,
-procedures.  First, `ncrcat' will ensure that values of `time_offset'
-appearing in the OUTPUT-FILE are relative to the `base_time' appearing
-in the first INPUT-FILE (and presumably, though not necessarily, also
-appearing in the OUTPUT-FILE).  Second, if a coordinate variable named
-`time' is not found in the INPUT-FILES, then `ncrcat' automatically
-creates the `time' coordinate in the OUTPUT-FILE.  The values of `time'
-are defined by the ARM conventions TIME = BASE_TIME + TIME_OFFSET.
-Thus, if OUTPUT-FILE contains the `time_offset' variable, it will also
-contain the `time' coordinate.  A short message is added to the
-`history' global attribute whenever these ARM-specific procedures are
-executed.
-
-3.32 Operator Version
-=====================
-
-Availability: All operators
-Short options: `-r'
-Long options: `--revision', `--version', or `--vrs'
-All operators can be told to print their version information, library
-version, copyright notice, and compile-time configuration with the `-r'
-switch, or its long-option equivalent `revision'.  The `--version' or
-`--vrs' switches print the operator version information only.  The
-internal version number varies between operators, and indicates the
-most recent change to a particular operator's source code.  This is
-useful in making sure you are working with the most recent operators.
-The version of NCO you are using might be, e.g., `3.9.5'.  Using `-r'
-on, say, `ncks', produces something like `NCO netCDF Operators version
-"3.9.5" last modified 2008/05/11 built May 12 2008 on neige by zender
-Copyright (C) 1995--2008 Charlie Zender ncks version 20090918'.  This
-tells you that `ncks' contains all patches up to version `3.9.5', which
-dates from May 11, 2008.
-
-4 Operator Reference Manual
-***************************
-
-This chapter presents reference pages for each of the operators
-individually.  The operators are presented in alphabetical order.  All
-valid command line switches are included in the syntax statement.
-Recall that descriptions of many of these command line switches are
-provided only in *note Common features::, to avoid redundancy.  Only
-options specific to, or most useful with, a particular operator are
-described in any detail in the sections below.
-
-4.1 `ncap2' netCDF Arithmetic Processor
-=======================================
-
-`ncap2' understands a relatively full-featured language of operations,
-including loops, conditionals, arrays, and math functions.  `ncap2' is
-the most rapidly changing NCO operator and its documentation is
-incomplete.  The distribution file `data/ncap2_tst.nco' contains an
-up-to-date overview of its syntax and capabilities.  The `data/*.nco'
-distribution files (especially `bin_cnt.nco', `psd_wrf.nco', and
-`rgr.nco') contain in-depth examples of `ncap2' solutions to complex
-problems.
-
-SYNTAX
-     ncap2 [-3] [-4] [-6] [-A] [-C] [-c] [-D DBG] [-F] [-f] [-L DFL_LVL]
-     [-l PATH] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-s ALGEBRA] [-S FL.NCO] [-t THR_NBR] [-v]
-     INPUT-FILE [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncap2' arithmetically processes netCDF files (1).  The processing
-instructions are contained either in the NCO script file `fl.nco' or in
-a sequence of command line arguments.  The options `-s' (or long
-options `--spt' or `--script') are used for in-line scripts and `-S'
-(or long options `--fl_spt' or `--script-file') are used to provide the
-filename where (usually multiple) scripting commands are pre-stored.
-`ncap2' was written to perform arbitrary algebraic transformations of
-data and archive the results as easily as possible.  *Note Missing
-Values::, for treatment of missing values.  The results of the
-algebraic manipulations are called "derived fields".
-
-   Unlike the other operators, `ncap2' does not accept a list of
-variables to be operated on as an argument to `-v' (*note Subsetting
-Variables::).  Rather, the `-v' switch takes no arguments and indicates
-that `ncap2' should output _only_ user-defined variables.  `ncap2'
-neither accepts nor understands the -X switch.
-
-   Defining new variables in terms of existing variables is a powerful
-feature of `ncap2'.  Derived fields inherit the metadata (i.e.,
-attributes) of their ancestors, if any, in the script or input file.
-When the derived field is completely new (no identically-named ancestors
-exist), then it inherits the metadata (if any) of the left-most variable
-on the right hand side of the defining expression.  This metadata
-inheritance is called "attribute propagation".  Attribute propagation
-is intended to facilitate well-documented data analysis, and we welcome
-suggestions to improve this feature.
-
-   The only exception to this rule of attribute propagation is in cases
-of left hand casting (*note Left hand casting::).  The user must
-manually define the proper metadata for variables defined using left
-hand casting.
-
-   ---------- Footnotes ----------
-
-   (1) `ncap2' is the successor to `ncap' which was put into
-maintenance mode in November, 2006.  This documentation refers to
-`ncap2', which has a superset of the `ncap' functionality.  Eventually
-`ncap' will be deprecated in favor `ncap2'.  `ncap2' may be renamed
-`ncap' in 2011.
-
-4.1.1 Syntax of `ncap2' statements
-----------------------------------
-
-Mastering `ncap2' is relatively simple.  Each valid statement STATEMENT
-consists of standard forward algebraic expression.  The `fl.nco', if
-present, is simply a list of such statements, whitespace, and comments.  The
-syntax of statements is most like the computer language C.  The
-following characteristics of C are preserved:
-Array syntax
-     Arrays elements are placed within `[]' characters;
-
-Array indexing
-     Arrays are 0-based;
-
-Array storage
-     Last dimension is most rapidly varying;
-
-Assignment statements
-     A semi-colon `;' indicates the end of an assignment statement.
-
-Comments
-     Multi-line comments are enclosed within `/* */' characters.
-     Single line comments are preceded by `//' characters.
-
-Nesting
-     Files may be nested in scripts using `#include SCRIPT'.  Note that
-     the `#include' command is not followed by a semi-colon because it
-     is a pre-processor directive, not an assignment statement.  The
-     filename `script' is interpreted relative to the run directory.
-
-Attribute syntax
-     The at-sign `@' is used to delineate an attribute name from a
-     variable name.
-
-4.1.2 Expressions
------------------
-
-Expressions are the fundamental building block of `ncap2'.  Expressions
-are composed of variables, numbers, literals, and attributes.  The
-following C operators are "overloaded" and work with scalars and
-multi-dimensional arrays:
-     Arithmetic Operators: * / % + - ^
-     Binary Operators:     > >= < <= == != == || && >> <<
-     Unary Operators:      + - ++ -- !
-     Conditional Operator: exp1 ? exp2 : exp3
-     Assign Operators:     = += -= /= *=
-
-   In the following section a "variable" also refers to a number
-literal which is read in as a scalar variable:
-
-   *Arithmetic and Binary Operators *
-
-   Consider _var1 'op' var2_
-
-   *Precision*
-   * When both operands are variables, the result has the precision of
-     the higher precision operand.
-
-   * When one operand is a variable and the other an attribute, the
-     result has the precision of the variable.
-
-   * When both operands are attributes, the result has the precision of
-     the more precise attribute.
-
-   * The exponentiation operator "^" is an exception to the above rules.
-     When both operands have type less than `NC_FLOAT', the result is
-     `NC_FLOAT'.  When either type is `NC_DOUBLE', the result is also
-     `NC_DOUBLE'.
-
-   *Rank*
-   * The Rank of the result is generally equal to Rank of the operand
-     that has the greatest number of dimensions.
-
-   * If the dimensions in var2 are a subset of the dimensions in var1
-     then its possible to  make var2 conform to var1 through
-     broadcasting and or dimension reordering.
-
-   * Broadcasting a variable means creating data in non-existing
-     dimensions from the data in existing dimensions.
-
-   * More specifically: If the numbers of dimensions in var1 is greater
-     than or equal to the number of dimensions in var2 then an attempt
-     is made to make var2 conform to var1 ,else var1 is made to conform
-     to var2. If conformance  is not possible then an error message
-     will be emitted and script execution will cease.
-
-Even though the logical operators return True(1) or False(0) they are
-treated in the same way as the arithmetic operators with regard to
-precision and rank.
-Examples:
-
-     dimensions: time=10, lat=2, lon=4
-     Suppose we have the two variables:
-
-     double  P(time,lat,lon);
-     float   PZ0(lon,lat);  // PZ0=1,2,3,4,5,6,7,8;
-
-     Consider now the expression:
-      PZ=P-PZ0
-
-     PZ0 is made to conform to P and the result is
-     PZ0 =
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-        1,3,5,7,2,4,6,8,
-
-     Once the expression is evaluated then PZ will be of type double;
-
-     Consider now
-      start=four-att_var at double_att;  // start =-69  and is of type intger;
-      four_pow=four^3.0f               // four_pow=64 and is of type float
-      three_nw=three_dmn_var_sht*1.0f; // type is now float
-      start at n1=att_var at short_att*att_var at int_att;
-                                       // start at n1=5329 and is type int
-
-*Binary Operators*
-Unlike C the binary operators return an array of values.  There is no
-such thing as short circuiting with the AND/OR operators.  Missing
-values are carried into the result in the same way they are with the
-arithmetic operators.  When an expression is evaluated in an if() the
-missing values are treated as true.
-The binary operators are, in order of precedence:
-
-     !   Logical Not
-     ----------------------------
-     <<  Less Than Selection
-     >>  Greater Than Selection
-     ----------------------------
-     >   Greater than
-     >=  Greater than or equal to
-     <   Less than
-     <=  Less than or equal to
-     ----------------------------
-     ==  Equal to
-     !=  Not equal to
-     ----------------------------
-     &&  Logical AND
-     ----------------------------
-     ||  Logical OR
-     ----------------------------
-
-   To see all operators: *note Operators precedence and associativity::
-Examples:
-     tm1= time>2 && time <7;  // tm1 = 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ; type double;
-     tm2= time==3 || time>=6; // tm2 = 0, 0, 1, 0, 0, 1, 1, 1, 1, 1 ; type double
-     tm3= int(!tm1);          // tm3=  1, 1, 0, 0, 0, 0, 1, 1, 1, 1 ; type int
-     tm4= tm1 && tm2;         // tm4=  0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ; type double;
-     tm5= !tm4;               // tm5=  1, 1, 0, 1, 1, 0, 1, 1, 1, 1 ; type double;
-
-*Regular Assign Operator*
-_var1 '=' exp1_
-If var1 doesn't already exist in Output then var1 is written to Output
-with the values and dimensions from expr1. If var1 already exists in
-Output, then the only requirement on expr1 is that the number of
-elements must match the number already on disk. The type of expr1 is
-converted if necessary to the disk type.
-
-* Other Assign Operators +=,-=,*=./= *
-_var1 'ass_op' exp1 _
-if exp1 is a variable and it doesn't conform to var1 then an attempt is
-made to make it conform to var1. If exp1 is an attribute it must have
-unity size or else have the same number of elements as var1. If expr1
-has a different type to var1 the it is converted to the var1 type.
-
-   example:
-
-     z1=four+=one*=10 // z1=14 four=14 one=10;
-     time-=2          // time= -1,0,1,2,3,4,5,6,7,8
-
-*Increment/ Decrement Operators
-* These work in a similar fashion to their regular C counterparts. If
-say the variable "four" is input only then the statement "++four"
-effectively means -read four from input increment each element by one ,
-then write the new values to Output;
-
-   Example:
-     n2=++four;   n2=5, four=5
-     n3=one--+20; n3=21  one=0;
-     n4=--time;   n4=time=0.,1.,2.,3.,4.,5.,6.,7.,8.,9.;
-
-*Conditional Operator ?: *
-_exp1 ? exp2 : exp3 _
-The conditional operator (or ternary Operator) is a succinct way of
-writing an if/then/else. If exp1 evaluates to true then exp2 is
-returned else exp3 is returned.
-
-   Example:
-     weight_avg= weight.avg();
-     weight_avg at units= (weight_avg ==1 ? "kilo" : "kilos");
-     PS_nw= PS - (PS.min() >100000 ? 100000 : 0 );
-
-*Clipping Operators* 
-<< Less-than Clipping
-     For arrays, the less-than selection operator selects all values in
-     the left operand that are less than the corresponding value in the
-     right operand.  If the value of the left side is greater than or
-     equal to the corresponding value of the right side, then the right
-     side value is placed in the result
-
->> Greater-than Clipping
-     For arrays, the greater-than selection operator selects all values
-     in the left operand that are greater than the corresponding value
-     in the right operand.  If the value of the left side is less than
-     or equal to the corresponding value of the right side, then the
-     right side value is placed in the result.
-
-   Example:
-     RDM2= RDM >>100.0; RDM2=100,100,100,100,126,126,100,100,100, 100; // type double
-     RDM2= RDM << 90s ; RDM3=  1,  9, 36, 84, 90, 90, 84, 36,  9,   1; // type int
-
-4.1.3 Dimensions
-----------------
-
-Dimensions are defined in Output using the `defdim()' function.
-     defdim("cnt",10);
-
-   This dimension name must then be prefixed with a dollar-sign `$'
-when referred to in method arguments or left-hand-casting, e.g.,
-     new_var[$cnt]=time;
-     temperature[$time,$lat,$lon]=35.5;
-     temp_avg=temperature.avg($time);
-
-   The `size' method allows the dimension size to be used in an
-arithmetic expression:
-     time_avg=time.total() / $time.size;
-
-   Increase the size of a new variable by one and set new member to
-zero:
-     defdim("cnt_new",$cnt.size+1);
-     new_var[$cnt_new]=0.0;
-     new_var(0:($cnt_new.size-2))=old_var;
-
-*Dimension Abbreviations
-* It is possible to use dimension abbreviations as method arguments:
-`$0' is the first dimension of a variable
-`$1' is the second dimension of a variable
-`$n' is the n+1 dimension of a variable
-     float four_dmn_rec_var(time,lat,lev,lon);
-     double three_dmn_var_dbl(time,lat,lon);
-
-     four_nw=four_dmn_rev_var.reverse($time,$lon)
-     four_nw=four_dmn_rec_var.reverse($0,$3);
-
-     four_avg=four_dmn_rec_var.avg($lat,$lev);
-     four_avg=four_dmn_rec_var.avg($1,$2);
-
-     three_mw=three_dmn_var_dbl.permute($time,$lon,$lat);
-     three_mw=three_dmn_var_dbl.permute($0,$2,$1);
-
-*ID Quoting
-* If the dimension name contains non-regular characters use ID quoting.
-See *note ID Quoting::
-     defdim("a--list.A",10);
-     A1['$a--list.A']=30.0;
-
-*GOTCHA
-* It is not possible to manually define in Output any dimensions that
-exist in Input. When a variable from Input appears in an expression or
-statement its  dimensions in Input are  automagically copied to Output
-(if they are not already present)
-
-4.1.4 Left hand casting
------------------------
-
-The following examples demonstrate the utility of the "left hand
-casting" ability of `ncap2'.  Consider first this simple, artificial,
-example.  If LAT and LON are one dimensional coordinates of dimensions
-LAT and LON, respectively, then addition of these two one-dimensional
-arrays is intrinsically ill-defined because whether LAT_LON should be
-dimensioned LAT by LON or LON by LAT is ambiguous (assuming that
-addition is to remain a "commutative" procedure, i.e., one that does
-not depend on the order of its arguments).  Differing dimensions are
-said to be "orthogonal" to one another, and sets of dimensions which
-are mutually exclusive are orthogonal as a set and any arithmetic
-operation between variables in orthogonal dimensional spaces is
-ambiguous without further information.
-
-   The ambiguity may be resolved by enumerating the desired dimension
-ordering of the output expression inside square brackets on the left
-hand side (LHS) of the equals sign.  This is called "left hand casting"
-because the user resolves the dimensional ordering of the RHS of the
-expression by specifying the desired ordering on the LHS.
-     ncap2 -s 'lat_lon[lat,lon]=lat+lon' in.nc out.nc
-     ncap2 -s 'lon_lat[lon,lat]=lat+lon' in.nc out.nc
-   The explicit list of dimensions on the LHS, `[lat,lon]' resolves the
-otherwise ambiguous ordering of dimensions in LAT_LON.  In effect, the
-LHS "casts" its rank properties onto the RHS.  Without LHS casting, the
-dimensional ordering of LAT_LON would be undefined and, hopefully,
-`ncap2' would print an error message.
-
-   Consider now a slightly more complex example.  In geophysical
-models, a coordinate system based on a blend of terrain-following and
-density-following surfaces is called a "hybrid coordinate system".  In
-this coordinate system, four variables must be manipulated to obtain
-the pressure of the vertical coordinate: PO is the domain-mean surface
-pressure offset (a scalar), PS is the local (time-varying) surface
-pressure (usually two horizontal spatial dimensions, i.e. latitude by
-longitude), HYAM is the weight given to surfaces of constant density
-(one spatial dimension, pressure, which is orthogonal to the horizontal
-dimensions), and HYBM is the weight given to surfaces of constant
-elevation (also one spatial dimension).  This command constructs a
-four-dimensional pressure `prs_mdp' from the four input variables of
-mixed rank and orthogonality:
-     ncap2 -s 'prs_mdp[time,lat,lon,lev]=P0*hyam+PS*hybm' in.nc out.nc
-   Manipulating the four fields which define the pressure in a hybrid
-coordinate system is easy with left hand casting.
-
-4.1.5 Arrays and hyperslabs
----------------------------
-
-Generating a regularly spaced one-dimensional array with `ncap2' is
-simple with the `array()' function.  The syntax is
-     output=array(val_srt,val_ncr,$dmn_nm); // One-dimensional output
-     output=array(val_srt,val_ncr,var_tpl);  // Multi-dimensional output
-     h
-   where the arguments are the starting value VAL_SRT, incremental
-value VAL_NCR, and, for one-dimensional output, the single dimension
-`$dmn_nm', or, for multi-dimensional output, a template variable
-`var_tpl', i.e., a variable with the same shape as the desired output.
-
-   Once the associated dimensions have been defined, the start and
-increment arguments may be supplied as values, mathmatical expressions,
-or variables:
-     var_out=array(1,1,$time); // 1,2,3,4,5,6,7,8,9,10
-     var_out=array(1+2-2,one,$time); // 1,2,3,4,5,6,7,8,9,10
-     var_out=array(1,2,three_dmn_rec_var); // 1,3,5,...155,157,159
-
-   Hyperslabs in `ncap2' are more limited than hyperslabs with the
-other NCO operators.  `ncap2' does not understand the shell
-command-line syntax used to specify multi-slabs, wrapped co-ordinates,
-negative stride or coordinate value limits.  However with a bit of
-syntactic magic they are all are possible.  `ncap2' accepts (in fact,
-it requires) N-hyperslab arguments for a variable of rank N:
-     var1(arg1,arg2 ... argN);
-   where each hyperslab argument is of the form
-     start:end:stride
-   and the arguments for different dimensions are separated by commas.
-If "start" is omitted, it defaults to 0.  If "end" is omitted, it
-defaults to dimension size minus one.  If "stride" is omitted, it
-defaults to 1.
-
-If a single value is present then it is assumed that that dimension
-collapses to a single value (i.e., a cross-section).  The number of
-hyperslab arguments MUST equal the variable's rank.
-
-*Hyperslabs on the Right Hand Side of an assign
-*
-
-   A simple 1D example:
-     ($time.size=10)
-     od[$time]={20,22,24,26,28,30,32,34,36,38};
-
-     od(7);     // 34
-     od(7:);    // 34,36,38
-     od(:7);    // 20,22,24,26,28,30,32,34
-     od(::4);   // 20,28,36
-     od(1:6:2)  // 22,26,30
-     od(:)      // 20,22,24,26,28,30,32,34,36,38
-
-   A more complex three dimensional example:
-     ($lat.size=2,$lon.size=4)
-     th[$time,$lat,$lon]=
-                               {1, 2, 3, 4, 5, 6, 7, 8,
-                               9,10,11,12,13,14,15,16,
-                               17,18,19,20,21,22,23,24,
-                               -99,-99,-99,-99,-99,-99,-99,-99,
-                               33,34,35,36,37,38,39,40,
-                               41,42,43,44,45,46,47,48,
-                               49,50,51,52,53,54,55,56,
-                               -99,58,59,60,61,62,63,64,
-                               65,66,67,68,69,70,71,72,
-                               -99,74,75,76,77,78,79,-99 };
-
-     th(1,1,3);        // 16
-     th(2,0,:);        // 17, 18, 19, 20
-     th(:,1,3);        // 8, 16, 24, -99, 40, 48, 56, 64, 72, -99
-     th(::5 ,:,0:3:2); // 1, 3, 5, 7, 41, 43, 45, 47
-
-   If hyperslab arguments collapse to a single value (a cross-section
-has been specified), then that dimension is removed from the returned
-variable.  If all the values collapse then a scalar variable is
-returned.  So, for example, the following is valid:
-     th_nw=th(0,:,:)+th(9,:,:);
-     // th_nw has dimensions $lon,$lat
-     // NB: the time dimension has become degenerate
-
-   The following is invalid:
-     th_nw=th(0,:,0:1)+th(9,:,0:1);
-   because the `$lon' dimension now only has two elements.  The above
-can be calculated by using a LHS cast with `$lon_nw' as replacement dim
-for `$lon':
-     defdim("lon_nw",2);
-     th_nw[$lat,$lon_nw]=th(0,:,0:1) +th(9,:,0:1);
-
-*Hyperslabs on the Left Hand Side of an assign
-* When hyperslabing on the LHS, the expression on the RHS must evaluate
-to a scalar or a variable/attribute with the same number of elements as
-the LHS hyperslab.  Set all elements of the last record to zero:
-     th(9,:,:)=0.0;
-   Set first element of each lon element to 1.0:
-     th(:,:,0)=1.0;
-   One may hyperslab on both sides of an assign.  For example, this
-sets the last record to the first record:
-     th(9,:,:)=th(0,:,:);
-   Say TH0 represents pressure at height=0 and TH1 represents pressure
-at height=1.  Then it is possible to insert these hyperslabs into the
-records
-     prs[$time,$height,$lat,$lon]=0.0;
-     prs(:,0,:,:)=th0;
-     prs(:,1,:,:)=th1
-
-*Reverse method*
-Use the `reverse()' method to reverse a dimension's elements in a
-variable with at least one dimension.  This is equivalent to a negative
-stride, e.g.,
-     th_rv=th(1 ,:,:).reverse($lon); // {12,11,10,9 }, {16,15,14,13}
-     od_rv=od.reverse($time);        // {38,36,34,32,30,28,26,24,22,20}
-
-*Permute method*
-Use the `permute()' method to swap the dimensions of a variable.  The
-number and names of dimension arguments must match the dimensions in
-the variable.  If the first dimension in the variable is of record type
-then this must remain the first dimension.  If you want to change the
-record dimension then consider using `ncpdq'.
-
-   Consider the variable:
-     float three_dmn_var(lat,lev,lon);
-     three_dmn_var_prm=three_dmn_var.permute($lon,$lat,$lev);
-     // The permuted values are
-     three_dmn_var_prm=
-       0,4,8,
-       12,16,20,
-       1,5,9,
-       13,17,21,
-       2,6,10,
-       14,18,22,
-       3,7,11,
-       15,19,23;
-
-4.1.6 Attributes
-----------------
-
-Attributes are referred to by _var_nm at att_nm_
-All the following are valid statements:
-     global at text="Test Attributes"; /* Assign a global variable attribute */
-     a1[$time]=time*20;
-     a1 at long_name="Kelvin";
-     a1 at min=a1.min();
-     a1 at max=a1.max();
-     a1 at min++;
-     --a1 at max; q
-     a1(0)=a1 at min;
-     a1($time.size-1)=a1 at max;
-
-   A _value list_ can be used on the RHS of an assign...  
-     a1 at trip1={1,2,3} ;
-     a1 at triplet={a1 at min,(a1 at min+a1@max)/2,a1 at max};
-   The netCDF specification allows all attribute types to have a size
-greater than one.  The maximum is defined by `NC_MAX_ATTRS'.  The
-following is an `ncdump' of the metadata for variable A1
-     double a1(time) ;
-       a1:long_name = "Kelvin" ;
-       a1:max = 199. ;
-       a1:min = 21. ;
-       a1:trip1 = 1, 2, 3 ;
-       a1:triplet = 21., 110., 199. ;
-
-   The `size()' method can be used with attributes.  For example, to
-save an attribute text string in a variable,
-     defdim("sng_len", a1 at long_name.size());
-     sng_arr[$sng_len]=a1 at long_name; // sng_arr now contains "Kelvin"
-   Attributes defined in a script are stored in memory and are written
-to Output after script completion.  To stop the attribute being written
-use the ram_delete() method or use a bogus variable name.
-
-*Attribute Propagation & Inheritance* 
-   * Attribute propagation occurs in a regular  assign statement. The
-     variable being defined on the LHS gets copies of the attributes
-     from the leftermost variable on the RHS
-
-   * Attribute Inheritance: The LHS variable "inherits" attributes from
-     an Input variable with the same name
-
-   * It is possible to have a regular assign statement for which both
-     propagation and inheritance occur.
-
-     prs_mdp[time,lat,lon,lev]=P0*hyam+hybm*PS;   // prs_mdp gets attributes from PO
-     th_min=1.0 + 2*three_dmn_var_dbl.min($time); // th_min  gets attributes from three_dmn_var_dbl
-
-   If the attribute name contains non-regular characters use ID
-quoting. See *note ID Quoting::
-     'b..m1 at c--lost'=23;
-
-4.1.7 Number literals
----------------------
-
-The table below lists the postfix character(s) to add to a number
-literal for type cohesion.  To use the new netCDF4 types NCO must be
-compiled/linked to the netCDF4 library and the output file must be HDF5.
-
-     n1[$time]=1UL; // n1 will now by type `NC_UINT'
-     n2[$lon]=4b;   // n2 will be of type `NC_BYTE'
-     n3[$lat]=5ull; // n3 will be of type `NC_UINT64'
-     n3 at a1=6.0d;   // attribute will be type `NC_DOUBLE'
-     n3 at a2=-666L;  // attribute will be type `NC_INT'
-
-   A floating point number without a postfix will default to
-`NC_DOUBLE'.  An integer without a postfix will default to type
-`NC_INT'.  There is no postfix for characters, use a quoted string
-instead.
-     n4[$rlev]=0.1      // n4 will be of type `NC_DOUBLE'
-     n5[$lon_grd]=2.0   // n5 will be of type `NC_DOUBLE'
-     n6[$gds_crd]=2e3;  // n6 will be of type `NC_DOUBLE'
-     n7[$gds_crd]=2e3f;  // n7 will be of type `NC_FLOAT'
-     n6 at a1=41;         // attribute will be type `NC_INT'
-     n6 at a2=-21;        // attribute will be type `NC_INT'
-     n6 at units="kelvin" // attribute will be type `NC_CHAR'
-
-
-     *netCDF3/4 Types*
-
-b|B
-     `NC_BYTE', a signed 1-byte integer
-
-none
-     `NC_CHAR', an ISO/ASCII character
-
-s|S
-     `NC_SHORT', a signed 2-byte integer
-
-l|L
-     `NC_INT', a signed 4-byte integer
-
-f|F
-     `NC_FLOAT', a single-precision (4-byte) floating point number
-
-d|D
-     `NC_DOUBLE', a double-precision (8-byte) floating point number
-
-
-
-     *netCDF4 Types*
-
-ub|UB
-     `NC_UBYTE', an unsigned 1-byte integer
-
-us|US
-     `NC_USHORT', an unsigned 2-byte integer
-
-u|U|ul|UL
-     `NC_UINT', an unsigned 4-byte integer
-
-ll|LL
-     `NC_INT64', a signed 8-byte integer
-
-ull|ULL
-     `NC_UINT64', an unsigned 8-byte integer
-
-4.1.8 if statement
-------------------
-
-The syntax of the if statement is similar to its C counterpart.  The
-_Conditional Operator (ternary operator)_ has also been implemented.
-     if(exp1)
-        stmt1;
-     else if(exp2)
-        stmt2;
-     else
-        stmt3;
-
-     # Can use code blocks as well:
-     if(exp1){
-        stmt1;
-        stmt1a;
-        stmt1b;
-     } else if(exp2)
-        stmt2;
-     else {
-        stmt3;
-        stmt3a;
-        stmt3b;
-     }
-
-For a variable or attribute expression to be logically true all its
-non-missing value elements must be logically true, i.e., non-zero.  The
-expression can be of any type.  Unlike C there is no short-circuiting
-of an expression with the OR (||) AND (&&) operators.  The whole
-expression is evaluated regardless if one of the AND/OR operands are
-true/false.
-     # Simple example
-     if(time>0)
-       print("All values of time are greater than zero\n");
-     else if( time<0)
-       print("All values of time are less than zero\n");
-     else {
-       time_max=time.max();
-       time_min=time.min();
-       print("min value of time=");print(time_min,"%f");
-       print("max value of time=");print(time_max,"%f");
-     }
-
-     # Example from ddra.nco
-     if(fl_typ==fl_typ_gcm){
-       var_nbr_apx=32;
-       lmn_nbr=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Variable size */
-       if(nco_op_typ==nco_op_typ_avg){
-         lmn_nbr_avg=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Averaging block size */
-         lmn_nbr_wgt=dmnsz_gcm_lat; /* [nbr] Weight size */
-       } // !nco_op_typ_avg
-     }else if(fl_typ==fl_typ_stl){
-       var_nbr_apx=8;
-       lmn_nbr=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Variable size */
-       if(nco_op_typ==nco_op_typ_avg){
-         lmn_nbr_avg=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Averaging block size */
-         lmn_nbr_wgt=dmnsz_stl_lat; /* [nbr] Weight size */
-       } // !nco_op_typ_avg
-     } // !fl_typ
-
-*Conditional Operator
-*
-     // netCDF4 needed for this example
-     th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : three_dmn_var_sht.int() );
-
-4.1.9 print statement
----------------------
-
-     print(variable_name/attribute name/string, format string);
-
-The print function takes a variable name or attribute name or a quoted
-string and prints the contents in a in a similar fashion to `ncks -H'.
-There is also an optional C style format string argument.  Currently
-the print function cannot print RAM variables or expressions such as
-`'print(var_msk*3+4)''.  To print an expression, first evaluate it as a
-non-RAM variable (so it will be saved and can be printed), and then
-print the variable.
-
-examples
-     print(lon);
-     lon[0]=0
-     lon[1]=90
-     lon[2]=180
-     lon[3]=270
-
-     print(lon_2D_rrg,"%3.2f,");
-     0.00,0.00,180.00,0.00,180.00,0.00,180.00,0.00,
-
-     print(mss_val_fst at _FillValue);
-     mss_val_fst at _FillValue, size = 1 NC_FLOAT, value = -999
-
-     print("This function \t is monotonic\n");
-     This function is 	  monotonic
-
-4.1.10 Missing values ncap2
----------------------------
-
-Missing values operate slightly differently in `ncap2' Consider the
-expression where op is any of the following operators (excluding '=')
-     Arithmetic operators ( * / % + - ^ )
-     Binary Operators     ( >, >= <, <= ==, !=,==,||,&&, >>,<< )
-     Assign Operators     ( +=,-=,/=, *= )
-
-     var1 'op' var2
-
-If var1 has a missing value then this is the value used in the
-operation, otherwise the missing value for var2 is used.  If during the
-element-by-element operation an element from either operand is equal to
-the missing value then the missing value is carried through.  In this
-way missing values 'percolate' or propagate through an expression.
-Missing values associated with Output variables are stored in memory and
-are written to disk after the script finishes.  During script execution
-its possible (and legal) for the missing value of a variable to take on
-several different values.
-     # Consider the variable:
-     int rec_var_int_mss_val_int(time); =-999,2,3,4,5,6,7,8,-999,-999;
-     rec_var_int_mss_val_int:_FillValue = -999;
-
-     n2=rec_var_int_mss_val_int + rec_var_int_mss_val_int.reverse($time);
-
-     n2=-999,-999,11,11,11,11,11,11,999,-999;
-
-   The following methods are used to edit the missing value associated
-with a variable.  They only work on variables in Output.
-`set_miss(expr)'
-     Takes one argument the missing value.   Sets or overwrites the
-     existing missing value.   The argument given is converted if
-     necessary to the variable type
-
-`change_miss(expr)'
-     Changes the missing value elements of the variable to the new
-     missing  value (nb an expensive function).
-
-`get_miss()'
-     Returns the missing value of a variable.   If the variable exists
-     in Input and Output then the missing value of  the variable in
-     Output is returned.   If the variable has no missing value then an
-     error is returned.
-
-`delete_miss()'
-     Deletes the missing value associated with a variable.
-
-     th=three_dmn_var_dbl;
-     th.change_miss(-1e10d);
-     /* Set values less than 0 or greater than 50 to missing value */
-     where(th < 0.0 || th > 50.0) th=th.get_miss();
-
-     # Another example:
-     new[$time,$lat,$lon]=1.0;
-     new.set_miss(-997.0);
-
-     // Extract only elements divisible by 3
-     where (three_dmn_var_dbl%3 == 0)
-          new=three_dmn_var_dbl;
-     elsewhere
-          new=new.get_miss();
-
-4.1.11 Methods and functions
-----------------------------
-
-The convention within this document is that methods can be used as
-functions.  However, functions are not and cannot be used as methods.
-Methods can be daisy changed together and their syntax is cleaner than
-functions.  Method names are reserved words and CANNOT be used as
-variable names.  The command `ncap2 -f' shows the complete list of
-methods available on your build.
-     n2=sin(theta)
-     n2=theta.sin()
-     n2=sin(theta)^2 + cos(theta)^2
-     n2=theta.sin().pow(2) + theta.cos()^2
-
-   This statement chains methods together to convert three_dmn_var_sht
-to type double, average it, then convert this back to type short:
-     three_avg=three_dmn_var_sht.double().avg().short();
-
-
-*Aggregate Methods
-* These methods mirror the averaging types available in `ncwa'. The
-arguments to the methods are the dimensions to average over. Specifying
-no dimensions is equivalent to specifying all dimensions i.e.,
-averaging over all dimensions. A masking variable and a weighting
-variable can be manually created and applied as needed.
-
-`avg()'
-     Mean value
-
-`sqravg()'
-     Square of the mean
-
-`avgsqr()'
-     Mean of sum of squares
-
-`max()'
-     Maximum value
-
-`min()'
-     Minimum value
-
-`rms()'
-     Root-mean-square (normalize by N)
-
-`rmssdn()'
-     Root-mean square (normalize by N-1)
-
-`ttl() or total()'
-     Sum of values
-
-     // Average a variable over time
-     four_time_avg=four_dmn_rec_var($time);
-
-
-* Packing Methods
-* For more information see *note Packed data:: and *note ncpdq netCDF
-Permute Dimensions Quickly::
-`pack() & pack_short()'
-     The default packing algorithm is applied and variable is packed to
-     `NC_SHORT'
-
-`pack_byte()'
-     Variable is packed to `NC_BYTE'
-
-`pack_short()'
-     Variable is packed to `NC_SHORT'
-
-`pack_int()'
-     Variable is packed to `NC_INT'
-
-`unpack()'
-     The standard unpacking algorithm is applied.
-
-*Basic Methods
-* These methods work with variables and attributes. They have no
-arguments
-
-`size()'
-     Total number of elements
-
-`ndims()'
-     Number of dimensions in variable
-
-`type()'
-     Returns the netcdf type (see previous section)
-
-
-*Utility Methods
-* These functions are used to manipulate missing values and RAM
-variables.  *note Missing values ncap2::
-
-`set_miss(expr)'
-     Takes one argument the missing value. Sets or overwrites the
-     existing missing value. The argument given is converted if
-     necessary to the variable type
-
-`change_miss(expr)'
-     Changes the missing value elements of the variable to the new
-     missing value (n.b. an expensive function).
-
-`get_miss()'
-     Returns the missing value of a variable in Input or Output
-
-`delete_miss()'
-     Deletes the missing value associated with a variable.
-
-`ram_write()'
-     Writes a RAM variable to disk i.e., converts it to a regular disk
-     type variable
-
-`ram_delete()'
-     Deletes a RAM variable or an attribute
-
-
-*PDQ Methods
-* See *note ncpdq netCDF Permute Dimensions Quickly::
-`reverse(dim args)'
-     Reverses the dimension ordering of elements in a variable.
-
-`permute(dim args)'
-     Re-shapes variables by re-ordering the dimensions. All the dims of
-     the variable must be specified in the arguments. A limitation of
-     this permute (unlike ncpdq) is that the record dimension cannot be
-     re-assigned.
-   // Swap dimensions about and reorder along lon
-     lat_2D_rrg_new=lat_2D_rrg.permute($lon,$lat).reverse($lon);
-     lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0
-
-
-*Type Conversion Methods
-* These methods allow `ncap2' to convert variables and attributes to
-the different netcdf types. For more details on automatic and manual
-type conversion see (*note Type Conversion::). You can only use the new
-netCDF4 types if you have compiled/links NCO with the netCDF4 library
-and the Output file is HDF5.
-
-`'
-     *netCDF3/4 Types*
-
-`byte()'
-     convert to `NC_BYTE',  a signed 1-byte integer
-
-`char()'
-     convert to `NC_CHAR',  an ISO/ASCII character
-
-`short()'
-     convert to `NC_SHORT', a signed 2-byte integer
-
-`int()'
-     convert to `NC_INT',   a signed 4-byte integer
-
-`float()'
-     convert to `NC_FLOAT', a single-precision (4-byte) floating point
-     number
-
-`double()'
-     convert to `NC_DOUBLE', a double-precision (8-byte) floating point
-     number
-
-`'
-
-`'
-     *netCDF4 Types*
-
-`ubyte()'
-     convert to `NC_UBYTE', an unsigned 1-byte integer
-
-`ushort()'
-     convert to `NC_USHORT', an unsigned 2-byte integer
-
-`uint()'
-     convert to `NC_UINT', an unsigned 4-byte integer
-
-`int64()'
-     convert to `NC_INT64', a signed 8-byte integer
-
-`uint64()'
-     convert to `NC_UINT64', an unsigned 8-byte integer
-
-*Intrinsic Mathematical Methods
-* The list of mathematical methods is system dependant.  For the full
-list *note Intrinsic mathematical methods::
-
-   All the mathematical methods take a single operand ,with the
-exception of `atan2' and `pow' which take two.  If the operand type is
-less than _float_ then the result will be of type _float_. If the
-operand is type _double_ then the result will be type _double_. Like
-the other methods, you are free to use the mathematical methods as
-functions.
-
-     n1=pow(2,3.0f)    // n1 type float
-     n2=atan2(2,3.0)   // n2 type double
-     n3=1/(three_dmn_var_dbl.cos().pow(2))-tan(three_dmn_var_dbl)^2; // n3 type double
-
-4.1.12 RAM variables
---------------------
-
-Unlike regular variables, RAM variables are never written to disk.
-Hence using RAM variables in place of regular variables (especially
-within loops) significantly increases execution speed.  Variables that
-are frequently accessed within `for' or `where' clauses provide the
-greatest opportunities for optimization.  To declare and define a RAM
-variable simply prefix the variable name with an asterisk (`*') when
-the variable is declared/initialized.  To delete a RAM variables (and
-recover their memory) use the `ram_delete()' method.  To write a RAM
-variable to disk (like a regular variable) use `ram_write()'.  
-     *temp[$time,$lat,lon]=10.0;     // Cast
-     *temp_avg=temp.avg($time);      // Regular assign
-     temp.ram_delete();              // Delete RAM variable
-     temp_avg.ram_write();           // Write Variable to output
-
-     // Create and increment a RAM variable from "one" in Input
-     *one++;
-     // Create RAM variables from the variables three and four in Input.
-     // Multiply three by 10 and add it to four.
-     *four+=*three*=10; // three=30, four=34
-
-4.1.13 Where statement
-----------------------
-
-A `where()' combines the definition and application of a mask all in
-one go and can lead to succinct code.  The full syntax of a `where()'
-statement is as follows:
-
-     // Single assign (the 'elsewhere' block is optional)
-     where(mask)
-        var1=expr1;
-     elsewhere
-        var1=expr2;
-
-     // Multiple assigns
-     where(mask){
-         var1=expr1;
-         var2=expr2;
-         ...
-     }elsewhere{
-         var1=expr3
-         var2=expr4
-         var3=expr5;
-         ...
-     }
-
-   * The only expression allowed in the predicate of a where is assign,
-     i.e., 'var=expr'.  This assign differs from a regular `ncap2'
-     assign.  The LHS var must already exist in Input or Output.  The
-     RHS expression must evaluate to a scalar or a variable/attribute of
-     the same size as the LHS variable.
-
-   * Consider when both the LHS and RHS are variables: For every
-     element where mask condition is True, the corresponding LHS
-     variable element is re-assigned to its partner element on the RHS.
-     In the elsewhere part the mask is logically inverted and the assign
-     process proceeds as before.
-
-   * If the mask dimensions are a subset of the LHS variable's
-     dimensions, then it is made to conform; if it cannot be made to
-     conform then script execution halts.
-
-   * Missing values in the mask evaluate to False in the where
-     code/block statement and to True in the elsewhere block/statement.
-     LHS variable elements set to missing value are not re-assigned.
-     For these reasons, do not explicitly reference missing values in
-     the masking condition, e.g., `where(foo=foo.get_missing()) foo=1;'
-     will not work as expected.
-
-   Example: Consider the variables `float lon_2D_rct(lat,lon);' and
-`float var_msk(lat,lon);'.  Suppose we wish to multiply by two the
-elements for which `var_msk' equals 1:
-     where(var_msk==1) lon_2D_rct=2*lon_2D_rct;
-   Suppose that we have the variable `int RDM(time)' and that we want
-to set its values less than 8 or greater than 80 to 0:
-     where(RDM < 8 || RDM > 80) RDM=0;
-
-   Consider irregularly gridded data, described using rank 2
-coordinates: `double lat(south_north,east_west)', `double
-lon(south_north,east_west)', `double
-temperature(south_north,east_west)'.  To find the average temperature
-in a region bounded by [LAT_MIN,LAT_MAX] and [LON_MIN,LON_MAX]:
-     temperature_msk[$south_north,$east_west]=0.0;
-     where(lat >= lat_min && lat <= lat_max) && (lon >= lon_min && lon <= lon_max)
-       temperature_msk=temperature;
-     elsewhere
-       temperature_msk=temperature at _FillValue;
-
-     temp_avg=temperature_msk.avg();
-     temp_max=temperature.max();
-
-4.1.14 Loops
-------------
-
-`ncap' supplies `for()' loops and `while()' loops.  They are completely
-unoptimized so use them only with RAM variables unless you want thrash
-your disk to death.  To break out of a loop use the `break' command.
-To iterate to the next cycle use the `continue' command.
-
-     // Follwing sets elements in variable double temp(time,lat)
-     // If element < 0 set to 0, if element > 100 set to 100
-     *sz_idx=$time.size;
-     *sz_jdx=$lat.size;
-
-     for(*idx=0;idx<sz_idx;idx++)
-       for(*jdx=0;jdx<sz_jdx;jdx++)
-         if(temp(idx,jdx) > 100) temp(idx,jdx)=100.0;
-         else if(temp(idx,jdx) < 0) temp(idx,jdx)=0.0;
-
-     // Are values of co-ordinate variable double lat(lat) monotonic?
-        *sz=$lat.size;
-
-        for(*idx=1;idx<sz;idx++)
-          if(lat(idx)-lat(idx-1) < 0.0)
-            break;
-
-        if(idx == sz)
-          print("lat co-ordinate is monotonic\n");
-        else
-          print("lat co-ordinate is NOT monotonic\n");
-
-     // Sum odd elements
-     *idx=0;
-     *sz=$lat_nw.size;
-     *sum=0.0;
-       while(idx<sz){
-        if(lat(idx)%2) sum+=lat(idx);
-        idx++;
-       }
-
-     ram_write(sum);
-     print("Total of odd elements ");print(sum);print("\n");
-
-4.1.15 Include files
---------------------
-
-The syntax of an INCLUDE-FILE is:
-     #include "script.nco"
-   The script filename is searched relative to the run directory.  It
-is possible to nest include files to an arbitrary depth.  A handy use
-of inlcude files is to store often used constants.  Use RAM variables
-if you do not want these constants written to OUTPUT-FILE.
-     // script.nco
-     // Sample file to #include in ncap2 script
-     *pi=3.1415926535; // RAM variable, not written to output
-     *h=6.62607095e-34; // RAM variable, not written to output
-     e=2.71828; // Regular (disk) variable, written to output
-
-4.1.16 `sort' methods
----------------------
-
-In ncap there are two ways to sort data.  The first is a regular `sort'.
-This sorts ALL the elements of a variable or attribute without regard
-to any dimensions.  The second method applies a sort map to a variable.
-To apply this sort map the size of the variable must be exactly
-divisible by the size of the sort map.  The method
-`sort(var_in,&var_map)' is overloaded.  The second optional argument is
-to supply a call-by-reference variable to hold the returned sort map.
-     a1[$time]={10,2,3,4,6,5,7,3,4,1};
-     a1_sort=sort(a1);
-     print(a1_sort);
-     // 1, 2, 3, 3, 4, 4, 5, 6, 7, 10;
-
-     a2[$lon]={2,1,4,3};
-     a2_sort=sort(a2,&a2_map);
-     print(a2);
-     // 1, 2, 3, 4
-     print(a2_map);
-     // 1, 0, 3, 2;
-
-   If the map variable does not exist prior to the `sort()' call, then
-it will be created with the same shape as the input variable and be of
-type `NC_INT'.  If the map variable already exists, then the only
-restriction is that it be of at least the same size as the input
-variable.  To apply a map use `dsort(var_in,var_map)'.
-     defdim("nlat",5);
-
-     a3[$lon]={2,5,3,7};
-     a4[$nlat,$lon]={
-      1, 2, 3, 4,
-      5, 6, 7, 8,
-      9,10,11,12,
-      13,14,15,16,
-      17,18,19,20};
-
-     a3_sort=sort(a3,&a3_map);
-     print(a3_map);
-     // 0, 2, 1, 3;
-
-     a4_sort=dsort(a4,a3_map);
-     print(a4_sort);
-     // 1, 3, 2, 4,
-     // 5, 7, 6, 8,
-     // 9,11,10,12,
-     // 13,15,14,16,
-     // 17,19,18,20;
-
-     a3_map2[$nlat]={4,3,0,2,1};
-
-     a4_sort2=dsort(a4,a3_map2);
-     print(a4_sort2);
-     // 3, 5, 4, 2, 1
-     // 8, 10, 9,7, 6,
-     // 13,15,14,12,11,
-     // 18,20,19,17,16
-   As in the above example you may create your own sort map.  To sort
-in descending order, apply the `reverse()' method after the `sort()'.
-
-   Here is an extended example of how to use `ncap2' features to
-hyperslab an irregular region based on the values of a variable not a
-coordinate.  The distinction is crucial: hyperslabbing based on
-dimensional indices or coordinate values is straightforward.  Using the
-values of single or multi-dimensional variable to define a hyperslab is
-quite different.
-     cat > ~/ncap2_foo.nco << 'EOF'
-     // Purpose: Save irregular 1-D regions based on variable values
-
-     // Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-     /* NB: Single quotes around EOF above turn off shell parameter
-         expansion in "here documents". This in turn prevents the
-         need for protecting dollarsign characters in NCO scripts with
-         backslashes when the script is cut-and-pasted (aka "moused")
-         from an editor or e-mail into a shell console window */
-
-     /* Copy coordinates and variable(s) of interest into RAM variable(s)
-        Benefits:
-        1. ncap2 defines writes all variables on LHS of expression to disk
-           Only exception is RAM variables, which are stored in RAM only
-           Repeated operations on regular variables takes more time,
-           because changes are written to disk copy after every change.
-           RAM variables are only changed in RAM so script works faster
-           RAM variables can be written to disk at end with ram_write()
-        2. Script permutes variables of interest during processing
-           Safer to work with copies that have different names
-           This discourages accidental, mistaken use of permuted versions
-        3. Makes this script a more generic template:
-           var_in instead of specific variable names everywhere */
-     *var_in=one_dmn_rec_var;
-     *crd_in=time;
-     *dmn_in_sz=$time.size; // [nbr] Size of input arrays
-
-     /* Create all other "intermediate" variables as RAM variables
-        to prevent them from cluttering the output file.
-        Mask flag and sort map are same size as variable of interest */
-     *msk_flg=var_in;
-     *srt_map=var_in;
-
-     /* In this example we mask for all values evenly divisible by 3
-        This is the key, problem-specific portion of the template
-        Replace this where() condition by that for your problem
-        Mask variable is Boolean: 1=Meets condition, 0=Fails condition */
-     where(var_in % 3 == 0) msk_flg=1; elsewhere msk_flg=0;
-
-     // print("msk_flg = ");print(msk_flg); // For debugging...
-
-     /* The sort() routine is overloaded, and takes one or two arguments
-        The second argument (optional) is the "sort map" (srt_map below)
-        Pass the sort map by reference, i.e., prefix with an ampersand
-        If the sort map does not yet exist, then it will be created and
-        returned as an integer type the same shape as the input variable.
-        The output of sort(), on the LHS, is a sorted version of the input
-        msk_flg is not needed in its original order after sort()
-        Hence we use msk_flg as both input to and output from sort()
-        Doing this prevents the need to define a new, unneeded variable */
-     msk_flg=sort(msk_flg,&srt_map);
-
-     // Count number of valid points in mask by summing the one's
-     *msk_nbr=msk_flg.total();
-
-     // Define output dimension equal in size to number of valid points
-     defdim("crd_out",msk_nbr);
-
-     /* Now sort the variable of interest using the sort map and dsort()
-        The output, on the LHS, is the input re-arranged so that all points
-        meeting the mask condition are contiguous at the end of the array
-        Use same srt_map to hyperslab multiple variables of the same shape
-        Remember to apply srt_map to the coordinate variables */
-     crd_in=dsort(crd_in,srt_map);
-     var_in=dsort(var_in,srt_map);
-
-     /* Hyperslab last msk_nbr values of variable(s) of interest */
-     crd_out[crd_out]=crd_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-     var_out[crd_out]=var_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-
-     /* NB: Even though we created all variables possible as RAM variables,
-        the original coordinate of interest, time, is written to the ouput.
-        I'm not exactly sure why. For now, delete it from the output with:
-        ncks -O -x -v time ~/foo.nc ~/foo.nc
-        */
-     EOF
-     ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-     ncks -O -x -v time ~/foo.nc ~/foo.nc
-     ncks ~/foo.nc
-
-   Here is an extended example of how to use `ncap2' features to sort
-multi-dimensional arrays based on the coordinate values along a single
-dimension.
-     cat > ~/ncap2_foo.nco << 'EOF'
-     /* Purpose: Sort multi-dimensional array based on coordinate values
-        This example sorts the variable three_dmn_rec_var(time,lat,lon)
-        based on the values of the time coordinate. */
-
-     // Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-     // Randomize the time coordinate
-     time=10.0*gsl_rng_uniform(time);
-     //print("original randomized time =\n");print(time);
-
-     /* The sort() routine is overloaded, and takes one or two arguments
-        The first argument is a one dimensional array
-        The second argument (optional) is the "sort map" (srt_map below)
-        Pass the sort map by reference, i.e., prefix with an ampersand
-        If the sort map does not yet exist, then it will be created and
-        returned as an integer type the same shape as the input variable.
-        The output of sort(), on the LHS, is a sorted version of the input */
-
-     time=sort(time,&srt_map);
-     //print("sorted time (ascending order) and associated sort map =\n");print(time);print(srt_map);
-
-     /* sort() always sorts in ascending order
-        The associated sort map therefore re-arranges the original,
-        randomized time array into ascending order.
-        There are two methods to obtain the descending order the user wants
-        1) We could solve the problem in ascending order (the default)
-        and then apply the reverse() method to re-arrange the results.
-        2) We could change the sort map to return things in descending
-        order of time and solve the problem directly in descending order. */
-
-     // Following shows how to do method one:
-
-     /* Expand the sort map to srt_map_3d, the size of the data array
-        1. Use data array to provide right shape for the expanded sort map
-        2. Coerce data array into an integer so srt_map_3d is an integer
-        3. Multiply data array by zero so 3-d map elements are all zero
-        4. Add the 1-d sort map to the 3-d sort map (NCO automatically resizes)
-        5. Add the spatial (lat,lon) offsets to each time index
-        6. de-sort using the srt_map_3d
-        7. Use reverse to obtain descending in time order
-        Loops could accomplish the same thing (exercise left for reader)
-        However, loops are slow for large datasets */
-
-     /* Following index manipulation requires understanding correspondence
-        between 1-d (unrolled, memory order of storage) and access into that
-        memory as a multidimensional (3-d, in this case) rectangular array.
-        Key idea to understand is how dimensionality affects offsets */
-     // Copy 1-d sort map into 3-d sort map
-     srt_map_3d=(0*int(three_dmn_rec_var))+srt_map;
-     // Multiply base offset by factorial of lesser dimensions
-     srt_map_3d*=$lat.size*$lon.size;
-     lon_idx=array(0,1,$lon);
-     lat_idx=array(0,1,$lat)*$lon.size;
-     lat_lon_idx[$lat,$lon]=lat_idx+lon_idx;
-     srt_map_3d+=lat_lon_idx;
-
-     print("sort map 3d =\n");print(srt_map_3d);
-
-     // Use dsort() to "de-sort" the data using the sort map
-     three_dmn_rec_var=dsort(three_dmn_rec_var,srt_map_3d);
-
-     // Finally, reverse data so time coordinate is descending
-     time=time.reverse($time);
-     //print("sorted time (descending order) =\n");print(time);
-     three_dmn_rec_var=three_dmn_rec_var.reverse($time);
-
-     // Method two: Key difference is srt_map=$time.size-srt_map-1;
-     EOF
-     ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-
-4.1.17 Irregular Grids
-----------------------
-
-NCO is capable of analyzing datasets for many different underlying
-coordinate grid types.  netCDF was developed for and initially used
-with grids comprised of orthogonal dimensions forming a rectangular
-coordinate system.  We call such grids _standard_ grids.  It is
-increasingly common for datasets to use metadata to describe much more
-complex grids.  Let us first define three important coordinate grid
-properties: rectangularity, regularity, and fxm.
-
-   Grids are _regular_ if the spacing between adjacent is constant.
-For example, a 4-by-5 degree latitude-longitude grid is regular because
-the spacings between adjacent latitudes (4 degrees) are constant as are
-the (5 degrees) spacings between adjacent longitudes.  Spacing in
-_irregular_ grids depends on the location along the coordinate.  Grids
-such as Gaussian grids have uneven spacing in latitude (points cluster
-near the equator) and so are irregular.
-
-   Grids are _rectangular_ if the number of elements in any dimension
-is not a function of any other dimension.  For example, a T42 Gaussian
-latitude-longitude grid is rectangular because there are the same
-number of longitudes (128) for each of the (64) latitudes.  Grids are
-_non-rectangular_ if the elements in any dimension depend on another
-dimension.  Non-rectangular grids present many special challenges to
-analysis software like NCO.
-
-   Wrapped coordinates (*note Wrapped Coordinates::), such as longitude,
-are independent of these grid properties (regularity, rectangularity).
-
-   The preferred NCO technique to analyze data on non-standard
-coordinate grids is to create a region mask with `ncap2', and then to
-use the mask within `ncap2' for variable-specific processing, and/or
-with other operators (e.g., `ncwa', `ncdiff') for entire file
-processing.
-
-   Before describing the construction of masks, let us review how
-irregularly gridded geoscience data are described.  Say that latitude
-and longitude are stored as R-dimensional arrays and the product of the
-dimension sizes is the total number of elements N in the other
-variables.  Geoscience applications tend to use R=1, R=2, and R=3.
-
-   If the grid is has no simple representation (e.g., discontinuous)
-then it makes sense to store all coordinates as 1D arrays with the same
-size as the number of grid points.  These gridpoints can be completely
-independent of all the other (own weight, area, etc.).
-
-   R=1: lat(number_of_gridpoints) and lon(number_of_gridpoints)
-
-   If the horizontal grid is time-invariant then R=2 is common:
-
-   R=2: lat(south_north,east_west) and lon(south_north,east_west)
-
-   The Weather and Research Forecast (WRF) model uses R=3:
-
-   R=3: lat(time,south_north,east_west), lon(time,south_north,east_west)
-
-   and so supports grids that change with time.
-
-   Grids with R > 1 often use missing values to indicated empty points.
-For example, so-called "staggered grids" will use fewer east_west
-points near the poles and more near the equator. netCDF only accepts
-rectangular arrays so space must be allocated for the maximum number of
-east_west points at all latitudes. Then the application writes missing
-values into the unused points near the poles.
-
-   We demonstrate the `ncap2' analysis technique for irregular regions
-by constructing a mask for an R=2 grid.  We wish to find, say, the mean
-temperature within [LAT_MIN,LAT_MAX] and [LON_MIN,LON_MAX]:
-     ncap2 -s 'mask_var= (lat >= lat_min && lat <= lat_max) && \
-                         (lon >= lon_min && lon <= lon_max);' in.nc out.nc
-   Arbitrarily shaped regions can be defined by more complex conditional
-statements.  Once defined, masks can be applied to specific variables,
-and to entire files:
-     ncap2 -s 'temperature_avg=(temperature*mask_var).avg()' in.nc out.nc
-     ncwa -a lat,lon -m mask_var -w area in.nc out.nc
-   Crafting such commands on the command line is possible though
-unwieldy.  In such cases, a script is often cleaner and allows you to
-document the procedure:
-     cat > ncap2.in << 'EOF'
-     mask_var = (lat >= lat_min && lat <= lat_max) && (lon >= lon_min && > lon <= lon_max);
-     if(mask_var.total() > 0){ // Check that mask contains some valid values
-       temperature_avg=(temperature*mask_var).avg(); // Average temperature
-       temperature_max=(temperature*mask_var).max(); // Maximum temperature
-     }
-     EOF
-     ncap2 -S ncap2.in in.nc out.nc
-
-   For WRF files creating regional masks looks like
-     mask_var = (XLAT >= lat_min && XLAT <= lat_max) && (XLONG >= lon_min && > XLONG <= lon_max);
-   In practice with WRF it's a bit more complicated because you must
-use the global metadata to determine the grid staggering and offsets to
-translate XLAT and XLONG into real latitudes and longitudes and missing
-points. The WRF grid documentation should describe this.
-
-   A few notes: Irregular regions are the union of arrays
-lat/lon_min/max's.  The mask procedure is identical for all R.
-
-4.1.18 Bilinear interpolation
------------------------------
-
-As of version 4.0.0 NCO has internal routines to perform bilinear
-interpolation on gridded data sets.  In mathematics, bilinear
-interpolation is an extension of linear interpolation for interpolating
-functions of two variables on a regular grid.  The idea is to perform
-linear interpolation first in one direction, and then again in the
-other direction.
-
-   Suppose we have an irregular grid of data `temperature[lat,lon]',
-with co-ordinate vars `lat[lat], lon[lon]'.  We wish to find the
-temperature at an arbitary point [X,Y] within the grid.  If we can
-locate lat_min,lat_max and lon_min,lon_max such that `lat_min <= X <=
-lat_max' and `lon_min <=Y <=lon_max' then we can interpolate in two
-dimensions to find the temperature at [X,Y].
-
-   The general form of the `ncap2' interpolation function is
-     var_out=bilinear_interp(grid_in,grid_out,grid_out_x,grid_out_y,grid_in_x,grid_in_y)
-   where
-`grid_in'
-     Input function data.  Usually a two dimensional variable.  It must
-     be of size `grid_in_x.size()*grid_in_y.size()'
-
-`grid_out'
-     This variable is the shape of `var_out'.  Usually a two
-     dimensional variable.  It must be of size
-     `grid_out_x.size()*grid_out_y.size()'
-
-`grid_out_x'
-     X output values
-
-`grid_out_y'
-     Y output values
-
-`grid_in_x'
-     X input values values. Must be montonic (increasing or decreasing).
-
-`grid_in_y'
-     Y input values values. Must be montonic (increasing or decreasing).
-   Prior to calculations all arguments are converted to type
-`NC_DOUBLE'.  After calculations `var_out' is converted to the input
-type of `grid_in'.
-
-   Suppose the first part of an ncap2 script is
-     defdim("X",4);
-     defdim("Y",5);
-
-     // Temperature
-     T_in[$X,$Y]=
-      {100, 200, 300, 400, 500,
-       101, 202, 303, 404, 505,
-       102, 204, 306, 408, 510,
-       103, 206, 309, 412, 515.0 };
-
-     // Coordinate variables
-     x_in[$X]={0.0,1.0,2.0,3.01};
-     y_in[$Y]={1.0,2.0,3.0,4.0,5};
-   Now we interpolate with the following variables:
-     defdim("Xn",3);
-     defdim("Yn",4);
-     T_out[$Xn,$Yn]=0.0;
-     x_out[$Xn]={0.0,0.02,3.01};
-     y_out[$Yn]={1.1,2.0,3,4};
-
-     var_out=bilinear_interp(T_in,T_out,x_out,y_out,x_in,y_in);
-     print(var_out);
-     // 110, 200, 300, 400,
-     // 110.022, 200.04, 300.06, 400.08,
-     // 113.3, 206, 309, 412 ;
-
-   It is possible to interpolate a single point:
-     var_out=bilinear_interp(T_in,0.0,3.0,4.99,x_in,y_in);
-     print(var_out);
-     // 513.920594059406
-
-*Wrapping and Extrapolation*
-The function `bilinear_interp_wrap()' takes the same arguments as
-`bilinear_interp()' but performs wrapping (Y) and extrapolation (X) for
-points off the edge of the grid.  If the given range of longitude is
-say (25-335) and we have a point at 20 degrees, then the endpoints of
-the range are used for the interpolation.  This is what wrapping means.
-For wrapping to occur Y must be longitude and must be in the range
-(0,360) or (-180,180).  There are no restrictions on the longitude (X)
-values, though typically these are in the range (-90,90).  This `ncap2'
-script illustrates both wrapping and extrapolation of end points:
-     defdim("lat_in",6);
-     defdim("lon_in",5);
-
-     // Coordinate input vars
-     lat_in[$lat_in]={-80,-40,0,30,60.0,85.0};
-     lon_in[$lon_in]={30, 110, 190, 270, 350.0};
-
-     T_in[$lat_in,$lon_in]=
-       {10,40,50,30,15,
-         12,43,52,31,16,
-         14,46,54,32,17,
-         16,49,56,33,18,
-         18,52,58,34,19,
-         20,55,60,35,20.0 };
-
-     defdim("lat_out",4);
-     defdim("lon_out",3);
-
-     // Coordinate variables
-     lat_out[$lat_out]={-90,0,70,88.0};
-     lon_out[$lon_out]={0,190,355.0};
-
-     T_out[$lat_out,$lon_out]=0.0;
-
-     T_out=bilinear_interp_wrap(T_in,T_out,lat_out,lon_out,lat_in,lon_in);
-     print(T_out);
-     // 13.4375, 49.5, 14.09375,
-     // 16.25, 54, 16.625,
-     // 19.25, 58.8, 19.325,
-     // 20.15, 60.24, 20.135 ;
-
-4.1.19 GSL special functions
-----------------------------
-
-As of version 3.9.6 (released January, 2009), NCO can link to the GNU
-Scientific Library (GSL).  `ncap' can access most GSL special functions
-including Airy, Bessel, error, gamma, beta, hypergeometric, and
-Legendre functions and elliptical integrals.  GSL must be version 1.4
-or later.  To list the GSL functions available with your NCO build, use
-`ncap2 -f | grep ^gsl'.
-
-The function names used by ncap2 mirror their GSL names.  The NCO
-wrappers for GSL functions automatically call the error-handling
-version of the GSL function when available (1).  This allows NCO to
-return a missing value when the GSL library encounters a domain error
-or a floating point exception.  The slow-down due to calling the
-error-handling version of the GSL numerical functions was found to be
-negligible (please let us know if you find otherwise).
-
-Consider the gamma function.
-The GSL function prototype is
-`int gsl_sf_gamma_e(const double x, gsl_sf_result * result)' The `ncap'
-script would be:
-     lon_in[lon]={-1,0.1,0,2,0.3};
-     lon_out=gsl_sf_gamma(lon_in);
-     lon_out= _, 9.5135, 4.5908, 2.9915
-
-The first value is set to `_FillValue' since the gamma function is
-undefined for negative integers.  If the input variable has a missing
-value then this value is used.  Otherwise, the default double fill
-value is used (defined in the netCDF header `netcdf.h' as
-`NC_FILL_DOUBLE = 9.969e+36').
-
-Consider a call to a Bessel function with GSL prototype
-`int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result)'
-
-   An `ncap' script would be
-     lon_out=gsl_sf_bessel_Jn(2,lon_in);
-     lon_out=0.11490, 0.0012, 0.00498, 0.011165
-   This computes the Bessel function of order N=2 for every value in
-`lon_in'.  The Bessel order argument, an integer, can also be a
-non-scalar variable, i.e., an array.
-     n_in[lon]={0,1,2,3};
-     lon_out=gsl_sf_bessel_Jn(n_in,0.5);
-     lon_out= 0.93846, 0.24226, 0.03060, 0.00256
-
-Arguments to GSL wrapper functions in `ncap' must conform to one
-another, i.e., they must share the same sub-set of dimensions.  For
-example: `three_out=gsl_sf_bessel_Jn(n_in,three_dmn_var_dbl)' is valid
-because the variable `three_dmn_var_dbl' has a LON dimension, so `n_in'
-in can be broadcast to conform to `three_dmn_var_dbl'.  However
-`time_out=gsl_sf_bessel_Jn(n_in,time)' is invalid.
-
-   Consider the elliptical integral with prototype `int
-gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode,
-gsl_sf_result * result)'
-     three_out=gsl_sf_ellint_RD(0.5,time,three_dmn_var_dbl);
-
-The three arguments are all conformable so the above `ncap' call is
-valid. The mode argument in the function prototype controls the
-convergence of the algorithm. It also appears  in the Airy Function
-prototypes. It can be set by defining the environment variable
-`GSL_PREC_MODE'. If unset it defaults to the value `GSL_PREC_DOUBLE'.
-See the GSL manual for more details.
-     export GSL_PREC_MODE=0 // GSL_PREC_DOUBLE
-     export GSL_PREC_MODE=1 // GSL_PREC_SINGLE
-     export GSL_PREC_MODE=2 // GSL_PREC_APPROX
-
-The `ncap' wrappers to the array functions are slightly different.
-Consider the following GSL prototype
-`int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double
-*result_array)'
-     b1=lon.double();
-     x=0.5;
-     status=gsl_sf_bessel_Jn_array(1,4,x,&b1);
-     print(status);
-     b1=0.24226,0.0306,0.00256,0.00016;
-   This calculates the Bessel function of X=0.5 for N=1 to 4.  The
-first three arguments are scalar values.  If a non-scalar variable is
-supplied as an argument then only the first value is used.  The final
-argument is the variable where the results are stored (NB: the `&'
-indicates this is a call by reference).  This final argument must be of
-type `double' and must be of least size NMAX-NMIN+1.  If either of
-these conditions is not met then then the function returns an error
-message.  The function/wrapper returns a status flag.  Zero indicates
-success.
-
-Consider another array function
-`int gsl_sf_legendre_Pl_array( int lmax, double x, double
-*result_array);' 
-     a1=time.double();
-     x=0.3;
-     status=gsl_sf_legendre_Pl_array(a1.size()-1, x,&a1);
-     print(status);
-   This call calculates P_L(0.3) for L=0..9.  Note that |X|<=1,
-otherwise there will be a domain error.  See the GSL documentation for
-more details.
-
-The GSL functions implemented in NCO are listed in the table below.
-This table is correct for GSL version 1.10.  To see what functions are
-available on your build run the command `ncap2 -f |grep ^gsl' .  To see
-this table along with the GSL C-function prototypes look at the
-spreadsheet *doc/nco_gsl.ods*.
-*GSL NAME*                *I*  *NCAP FUNCTION CALL*
-gsl_sf_airy_Ai_e          Y    gsl_sf_airy_Ai(dbl_expr)
-gsl_sf_airy_Bi_e          Y    gsl_sf_airy_Bi(dbl_expr)
-gsl_sf_airy_Ai_scaled_e   Y    gsl_sf_airy_Ai_scaled(dbl_expr)
-gsl_sf_airy_Bi_scaled_e   Y    gsl_sf_airy_Bi_scaled(dbl_expr)
-gsl_sf_airy_Ai_deriv_e    Y    gsl_sf_airy_Ai_deriv(dbl_expr)
-gsl_sf_airy_Bi_deriv_e    Y    gsl_sf_airy_Bi_deriv(dbl_expr)
-gsl_sf_airy_Ai_deriv_scaled_eY    gsl_sf_airy_Ai_deriv_scaled(dbl_expr)
-gsl_sf_airy_Bi_deriv_scaled_eY    gsl_sf_airy_Bi_deriv_scaled(dbl_expr)
-gsl_sf_airy_zero_Ai_e     Y    gsl_sf_airy_zero_Ai(uint_expr)
-gsl_sf_airy_zero_Bi_e     Y    gsl_sf_airy_zero_Bi(uint_expr)
-gsl_sf_airy_zero_Ai_deriv_eY    gsl_sf_airy_zero_Ai_deriv(uint_expr)
-gsl_sf_airy_zero_Bi_deriv_eY    gsl_sf_airy_zero_Bi_deriv(uint_expr)
-gsl_sf_bessel_J0_e        Y    gsl_sf_bessel_J0(dbl_expr)
-gsl_sf_bessel_J1_e        Y    gsl_sf_bessel_J1(dbl_expr)
-gsl_sf_bessel_Jn_e        Y    gsl_sf_bessel_Jn(int_expr,dbl_expr)
-gsl_sf_bessel_Jn_array    Y    status=gsl_sf_bessel_Jn_array(int,int,double,&var_out)
-gsl_sf_bessel_Y0_e        Y    gsl_sf_bessel_Y0(dbl_expr)
-gsl_sf_bessel_Y1_e        Y    gsl_sf_bessel_Y1(dbl_expr)
-gsl_sf_bessel_Yn_e        Y    gsl_sf_bessel_Yn(int_expr,dbl_expr)
-gsl_sf_bessel_Yn_array    Y    gsl_sf_bessel_Yn_array
-gsl_sf_bessel_I0_e        Y    gsl_sf_bessel_I0(dbl_expr)
-gsl_sf_bessel_I1_e        Y    gsl_sf_bessel_I1(dbl_expr)
-gsl_sf_bessel_In_e        Y    gsl_sf_bessel_In(int_expr,dbl_expr)
-gsl_sf_bessel_In_array    Y    status=gsl_sf_bessel_In_array(int,int,double,&var_out)
-gsl_sf_bessel_I0_scaled_e Y    gsl_sf_bessel_I0_scaled(dbl_expr)
-gsl_sf_bessel_I1_scaled_e Y    gsl_sf_bessel_I1_scaled(dbl_expr)
-gsl_sf_bessel_In_scaled_e Y    gsl_sf_bessel_In_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_In_scaled_arrayY    staus=gsl_sf_bessel_In_scaled_array(int,int,double,&var_out)
-gsl_sf_bessel_K0_e        Y    gsl_sf_bessel_K0(dbl_expr)
-gsl_sf_bessel_K1_e        Y    gsl_sf_bessel_K1(dbl_expr)
-gsl_sf_bessel_Kn_e        Y    gsl_sf_bessel_Kn(int_expr,dbl_expr)
-gsl_sf_bessel_Kn_array    Y    status=gsl_sf_bessel_Kn_array(int,int,double,&var_out)
-gsl_sf_bessel_K0_scaled_e Y    gsl_sf_bessel_K0_scaled(dbl_expr)
-gsl_sf_bessel_K1_scaled_e Y    gsl_sf_bessel_K1_scaled(dbl_expr)
-gsl_sf_bessel_Kn_scaled_e Y    gsl_sf_bessel_Kn_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_Kn_scaled_arrayY    status=gsl_sf_bessel_Kn_scaled_array(int,int,double,&var_out)
-gsl_sf_bessel_j0_e        Y    gsl_sf_bessel_J0(dbl_expr)
-gsl_sf_bessel_j1_e        Y    gsl_sf_bessel_J1(dbl_expr)
-gsl_sf_bessel_j2_e        Y    gsl_sf_bessel_j2(dbl_expr)
-gsl_sf_bessel_jl_e        Y    gsl_sf_bessel_jl(int_expr,dbl_expr)
-gsl_sf_bessel_jl_array    Y    status=gsl_sf_bessel_jl_array(int,double,&var_out)
-gsl_sf_bessel_jl_steed_arrayY    gsl_sf_bessel_jl_steed_array
-gsl_sf_bessel_y0_e        Y    gsl_sf_bessel_Y0(dbl_expr)
-gsl_sf_bessel_y1_e        Y    gsl_sf_bessel_Y1(dbl_expr)
-gsl_sf_bessel_y2_e        Y    gsl_sf_bessel_y2(dbl_expr)
-gsl_sf_bessel_yl_e        Y    gsl_sf_bessel_yl(int_expr,dbl_expr)
-gsl_sf_bessel_yl_array    Y    status=gsl_sf_bessel_yl_array(int,double,&var_out)
-gsl_sf_bessel_i0_scaled_e Y    gsl_sf_bessel_I0_scaled(dbl_expr)
-gsl_sf_bessel_i1_scaled_e Y    gsl_sf_bessel_I1_scaled(dbl_expr)
-gsl_sf_bessel_i2_scaled_e Y    gsl_sf_bessel_i2_scaled(dbl_expr)
-gsl_sf_bessel_il_scaled_e Y    gsl_sf_bessel_il_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_il_scaled_arrayY    status=gsl_sf_bessel_il_scaled_array(int,double,&var_out)
-gsl_sf_bessel_k0_scaled_e Y    gsl_sf_bessel_K0_scaled(dbl_expr)
-gsl_sf_bessel_k1_scaled_e Y    gsl_sf_bessel_K1_scaled(dbl_expr)
-gsl_sf_bessel_k2_scaled_e Y    gsl_sf_bessel_k2_scaled(dbl_expr)
-gsl_sf_bessel_kl_scaled_e Y    gsl_sf_bessel_kl_scaled(int_expr,dbl_expr)
-gsl_sf_bessel_kl_scaled_arrayY    status=gsl_sf_bessel_kl_scaled_array(int,double,&var_out)
-gsl_sf_bessel_Jnu_e       Y    gsl_sf_bessel_Jnu(dbl_expr,dbl_expr)
-gsl_sf_bessel_Ynu_e       Y    gsl_sf_bessel_Ynu(dbl_expr,dbl_expr)
-gsl_sf_bessel_sequence_Jnu_eN    gsl_sf_bessel_sequence_Jnu
-gsl_sf_bessel_Inu_scaled_eY    gsl_sf_bessel_Inu_scaled(dbl_expr,dbl_expr)
-gsl_sf_bessel_Inu_e       Y    gsl_sf_bessel_Inu(dbl_expr,dbl_expr)
-gsl_sf_bessel_Knu_scaled_eY    gsl_sf_bessel_Knu_scaled(dbl_expr,dbl_expr)
-gsl_sf_bessel_Knu_e       Y    gsl_sf_bessel_Knu(dbl_expr,dbl_expr)
-gsl_sf_bessel_lnKnu_e     Y    gsl_sf_bessel_lnKnu(dbl_expr,dbl_expr)
-gsl_sf_bessel_zero_J0_e   Y    gsl_sf_bessel_zero_J0(uint_expr)
-gsl_sf_bessel_zero_J1_e   Y    gsl_sf_bessel_zero_J1(uint_expr)
-gsl_sf_bessel_zero_Jnu_e  N    gsl_sf_bessel_zero_Jnu
-gsl_sf_clausen_e          Y    gsl_sf_clausen(dbl_expr)
-gsl_sf_hydrogenicR_1_e    N    gsl_sf_hydrogenicR_1
-gsl_sf_hydrogenicR_e      N    gsl_sf_hydrogenicR
-gsl_sf_coulomb_wave_FG_e  N    gsl_sf_coulomb_wave_FG
-gsl_sf_coulomb_wave_F_arrayN    gsl_sf_coulomb_wave_F_array
-gsl_sf_coulomb_wave_FG_arrayN    gsl_sf_coulomb_wave_FG_array
-gsl_sf_coulomb_wave_FGp_arrayN    gsl_sf_coulomb_wave_FGp_array
-gsl_sf_coulomb_wave_sphF_arrayN    gsl_sf_coulomb_wave_sphF_array
-gsl_sf_coulomb_CL_e       N    gsl_sf_coulomb_CL
-gsl_sf_coulomb_CL_array   N    gsl_sf_coulomb_CL_array
-gsl_sf_coupling_3j_e      N    gsl_sf_coupling_3j
-gsl_sf_coupling_6j_e      N    gsl_sf_coupling_6j
-gsl_sf_coupling_RacahW_e  N    gsl_sf_coupling_RacahW
-gsl_sf_coupling_9j_e      N    gsl_sf_coupling_9j
-gsl_sf_coupling_6j_INCORRECT_eN    gsl_sf_coupling_6j_INCORRECT
-gsl_sf_dawson_e           Y    gsl_sf_dawson(dbl_expr)
-gsl_sf_debye_1_e          Y    gsl_sf_debye_1(dbl_expr)
-gsl_sf_debye_2_e          Y    gsl_sf_debye_2(dbl_expr)
-gsl_sf_debye_3_e          Y    gsl_sf_debye_3(dbl_expr)
-gsl_sf_debye_4_e          Y    gsl_sf_debye_4(dbl_expr)
-gsl_sf_debye_5_e          Y    gsl_sf_debye_5(dbl_expr)
-gsl_sf_debye_6_e          Y    gsl_sf_debye_6(dbl_expr)
-gsl_sf_dilog_e            N    gsl_sf_dilog
-gsl_sf_complex_dilog_xy_e N    gsl_sf_complex_dilog_xy_e
-gsl_sf_complex_dilog_e    N    gsl_sf_complex_dilog
-gsl_sf_complex_spence_xy_eN    gsl_sf_complex_spence_xy_e
-gsl_sf_multiply_e         N    gsl_sf_multiply
-gsl_sf_multiply_err_e     N    gsl_sf_multiply_err
-gsl_sf_ellint_Kcomp_e     Y    gsl_sf_ellint_Kcomp(dbl_expr)
-gsl_sf_ellint_Ecomp_e     Y    gsl_sf_ellint_Ecomp(dbl_expr)
-gsl_sf_ellint_Pcomp_e     Y    gsl_sf_ellint_Pcomp(dbl_expr,dbl_expr)
-gsl_sf_ellint_Dcomp_e     Y    gsl_sf_ellint_Dcomp(dbl_expr)
-gsl_sf_ellint_F_e         Y    gsl_sf_ellint_F(dbl_expr,dbl_expr)
-gsl_sf_ellint_E_e         Y    gsl_sf_ellint_E(dbl_expr,dbl_expr)
-gsl_sf_ellint_P_e         Y    gsl_sf_ellint_P(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_D_e         Y    gsl_sf_ellint_D(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_RC_e        Y    gsl_sf_ellint_RC(dbl_expr,dbl_expr)
-gsl_sf_ellint_RD_e        Y    gsl_sf_ellint_RD(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_RF_e        Y    gsl_sf_ellint_RF(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_ellint_RJ_e        Y    gsl_sf_ellint_RJ(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_elljac_e           N    gsl_sf_elljac
-gsl_sf_erfc_e             Y    gsl_sf_erfc(dbl_expr)
-gsl_sf_log_erfc_e         Y    gsl_sf_log_erfc(dbl_expr)
-gsl_sf_erf_e              Y    gsl_sf_erf(dbl_expr)
-gsl_sf_erf_Z_e            Y    gsl_sf_erf_Z(dbl_expr)
-gsl_sf_erf_Q_e            Y    gsl_sf_erf_Q(dbl_expr)
-gsl_sf_hazard_e           Y    gsl_sf_hazard(dbl_expr)
-gsl_sf_exp_e              Y    gsl_sf_exp(dbl_expr)
-gsl_sf_exp_e10_e          N    gsl_sf_exp_e10
-gsl_sf_exp_mult_e         Y    gsl_sf_exp_mult(dbl_expr,dbl_expr)
-gsl_sf_exp_mult_e10_e     N    gsl_sf_exp_mult_e10
-gsl_sf_expm1_e            Y    gsl_sf_expm1(dbl_expr)
-gsl_sf_exprel_e           Y    gsl_sf_exprel(dbl_expr)
-gsl_sf_exprel_2_e         Y    gsl_sf_exprel_2(dbl_expr)
-gsl_sf_exprel_n_e         Y    gsl_sf_exprel_n(int_expr,dbl_expr)
-gsl_sf_exp_err_e          Y    gsl_sf_exp_err(dbl_expr,dbl_expr)
-gsl_sf_exp_err_e10_e      N    gsl_sf_exp_err_e10
-gsl_sf_exp_mult_err_e     N    gsl_sf_exp_mult_err
-gsl_sf_exp_mult_err_e10_e N    gsl_sf_exp_mult_err_e10
-gsl_sf_expint_E1_e        Y    gsl_sf_expint_E1(dbl_expr)
-gsl_sf_expint_E2_e        Y    gsl_sf_expint_E2(dbl_expr)
-gsl_sf_expint_En_e        Y    gsl_sf_expint_En(int_expr,dbl_expr)
-gsl_sf_expint_E1_scaled_e Y    gsl_sf_expint_E1_scaled(dbl_expr)
-gsl_sf_expint_E2_scaled_e Y    gsl_sf_expint_E2_scaled(dbl_expr)
-gsl_sf_expint_En_scaled_e Y    gsl_sf_expint_En_scaled(int_expr,dbl_expr)
-gsl_sf_expint_Ei_e        Y    gsl_sf_expint_Ei(dbl_expr)
-gsl_sf_expint_Ei_scaled_e Y    gsl_sf_expint_Ei_scaled(dbl_expr)
-gsl_sf_Shi_e              Y    gsl_sf_Shi(dbl_expr)
-gsl_sf_Chi_e              Y    gsl_sf_Chi(dbl_expr)
-gsl_sf_expint_3_e         Y    gsl_sf_expint_3(dbl_expr)
-gsl_sf_Si_e               Y    gsl_sf_Si(dbl_expr)
-gsl_sf_Ci_e               Y    gsl_sf_Ci(dbl_expr)
-gsl_sf_atanint_e          Y    gsl_sf_atanint(dbl_expr)
-gsl_sf_fermi_dirac_m1_e   Y    gsl_sf_fermi_dirac_m1(dbl_expr)
-gsl_sf_fermi_dirac_0_e    Y    gsl_sf_fermi_dirac_0(dbl_expr)
-gsl_sf_fermi_dirac_1_e    Y    gsl_sf_fermi_dirac_1(dbl_expr)
-gsl_sf_fermi_dirac_2_e    Y    gsl_sf_fermi_dirac_2(dbl_expr)
-gsl_sf_fermi_dirac_int_e  Y    gsl_sf_fermi_dirac_int(int_expr,dbl_expr)
-gsl_sf_fermi_dirac_mhalf_eY    gsl_sf_fermi_dirac_mhalf(dbl_expr)
-gsl_sf_fermi_dirac_half_e Y    gsl_sf_fermi_dirac_half(dbl_expr)
-gsl_sf_fermi_dirac_3half_eY    gsl_sf_fermi_dirac_3half(dbl_expr)
-gsl_sf_fermi_dirac_inc_0_eY    gsl_sf_fermi_dirac_inc_0(dbl_expr,dbl_expr)
-gsl_sf_lngamma_e          Y    gsl_sf_lngamma(dbl_expr)
-gsl_sf_lngamma_sgn_e      N    gsl_sf_lngamma_sgn
-gsl_sf_gamma_e            Y    gsl_sf_gamma(dbl_expr)
-gsl_sf_gammastar_e        Y    gsl_sf_gammastar(dbl_expr)
-gsl_sf_gammainv_e         Y    gsl_sf_gammainv(dbl_expr)
-gsl_sf_lngamma_complex_e  N    gsl_sf_lngamma_complex
-gsl_sf_taylorcoeff_e      Y    gsl_sf_taylorcoeff(int_expr,dbl_expr)
-gsl_sf_fact_e             Y    gsl_sf_fact(uint_expr)
-gsl_sf_doublefact_e       Y    gsl_sf_doublefact(uint_expr)
-gsl_sf_lnfact_e           Y    gsl_sf_lnfact(uint_expr)
-gsl_sf_lndoublefact_e     Y    gsl_sf_lndoublefact(uint_expr)
-gsl_sf_lnchoose_e         N    gsl_sf_lnchoose
-gsl_sf_choose_e           N    gsl_sf_choose
-gsl_sf_lnpoch_e           Y    gsl_sf_lnpoch(dbl_expr,dbl_expr)
-gsl_sf_lnpoch_sgn_e       N    gsl_sf_lnpoch_sgn
-gsl_sf_poch_e             Y    gsl_sf_poch(dbl_expr,dbl_expr)
-gsl_sf_pochrel_e          Y    gsl_sf_pochrel(dbl_expr,dbl_expr)
-gsl_sf_gamma_inc_Q_e      Y    gsl_sf_gamma_inc_Q(dbl_expr,dbl_expr)
-gsl_sf_gamma_inc_P_e      Y    gsl_sf_gamma_inc_P(dbl_expr,dbl_expr)
-gsl_sf_gamma_inc_e        Y    gsl_sf_gamma_inc(dbl_expr,dbl_expr)
-gsl_sf_lnbeta_e           Y    gsl_sf_lnbeta(dbl_expr,dbl_expr)
-gsl_sf_lnbeta_sgn_e       N    gsl_sf_lnbeta_sgn
-gsl_sf_beta_e             Y    gsl_sf_beta(dbl_expr,dbl_expr)
-gsl_sf_beta_inc_e         N    gsl_sf_beta_inc
-gsl_sf_gegenpoly_1_e      Y    gsl_sf_gegenpoly_1(dbl_expr,dbl_expr)
-gsl_sf_gegenpoly_2_e      Y    gsl_sf_gegenpoly_2(dbl_expr,dbl_expr)
-gsl_sf_gegenpoly_3_e      Y    gsl_sf_gegenpoly_3(dbl_expr,dbl_expr)
-gsl_sf_gegenpoly_n_e      N    gsl_sf_gegenpoly_n
-gsl_sf_gegenpoly_array    Y    gsl_sf_gegenpoly_array
-gsl_sf_hyperg_0F1_e       Y    gsl_sf_hyperg_0F1(dbl_expr,dbl_expr)
-gsl_sf_hyperg_1F1_int_e   Y    gsl_sf_hyperg_1F1_int(int_expr,int_expr,dbl_expr)
-gsl_sf_hyperg_1F1_e       Y    gsl_sf_hyperg_1F1(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_U_int_e     Y    gsl_sf_hyperg_U_int(int_expr,int_expr,dbl_expr)
-gsl_sf_hyperg_U_int_e10_e N    gsl_sf_hyperg_U_int_e10
-gsl_sf_hyperg_U_e         Y    gsl_sf_hyperg_U(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_U_e10_e     N    gsl_sf_hyperg_U_e10
-gsl_sf_hyperg_2F1_e       Y    gsl_sf_hyperg_2F1(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F1_conj_e  Y    gsl_sf_hyperg_2F1_conj(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F1_renorm_eY    gsl_sf_hyperg_2F1_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F1_conj_renorm_eY    gsl_sf_hyperg_2F1_conj_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_hyperg_2F0_e       Y    gsl_sf_hyperg_2F0(dbl_expr,dbl_expr,dbl_expr)
-gsl_sf_laguerre_1_e       Y    gsl_sf_laguerre_1(dbl_expr,dbl_expr)
-gsl_sf_laguerre_2_e       Y    gsl_sf_laguerre_2(dbl_expr,dbl_expr)
-gsl_sf_laguerre_3_e       Y    gsl_sf_laguerre_3(dbl_expr,dbl_expr)
-gsl_sf_laguerre_n_e       Y    gsl_sf_laguerre_n(int_expr,dbl_expr,dbl_expr)
-gsl_sf_lambert_W0_e       Y    gsl_sf_lambert_W0(dbl_expr)
-gsl_sf_lambert_Wm1_e      Y    gsl_sf_lambert_Wm1(dbl_expr)
-gsl_sf_legendre_Pl_e      Y    gsl_sf_legendre_Pl(int_expr,dbl_expr)
-gsl_sf_legendre_Pl_array  Y    status=gsl_sf_legendre_Pl_array(int,double,&var_out)
-gsl_sf_legendre_Pl_deriv_arrayN    gsl_sf_legendre_Pl_deriv_array
-gsl_sf_legendre_P1_e      Y    gsl_sf_legendre_P1(dbl_expr)
-gsl_sf_legendre_P2_e      Y    gsl_sf_legendre_P2(dbl_expr)
-gsl_sf_legendre_P3_e      Y    gsl_sf_legendre_P3(dbl_expr)
-gsl_sf_legendre_Q0_e      Y    gsl_sf_legendre_Q0(dbl_expr)
-gsl_sf_legendre_Q1_e      Y    gsl_sf_legendre_Q1(dbl_expr)
-gsl_sf_legendre_Ql_e      Y    gsl_sf_legendre_Ql(int_expr,dbl_expr)
-gsl_sf_legendre_Plm_e     Y    gsl_sf_legendre_Plm(int_expr,int_expr,dbl_expr)
-gsl_sf_legendre_Plm_array Y    status=gsl_sf_legendre_Plm_array(int,int,double,&var_out)
-gsl_sf_legendre_Plm_deriv_arrayN    gsl_sf_legendre_Plm_deriv_array
-gsl_sf_legendre_sphPlm_e  Y    gsl_sf_legendre_sphPlm(int_expr,int_expr,dbl_expr)
-gsl_sf_legendre_sphPlm_arrayY    status=gsl_sf_legendre_sphPlm_array(int,int,double,&var_out)
-gsl_sf_legendre_sphPlm_deriv_arrayN    gsl_sf_legendre_sphPlm_deriv_array
-gsl_sf_legendre_array_sizeN    gsl_sf_legendre_array_size
-gsl_sf_conicalP_half_e    Y    gsl_sf_conicalP_half(dbl_expr,dbl_expr)
-gsl_sf_conicalP_mhalf_e   Y    gsl_sf_conicalP_mhalf(dbl_expr,dbl_expr)
-gsl_sf_conicalP_0_e       Y    gsl_sf_conicalP_0(dbl_expr,dbl_expr)
-gsl_sf_conicalP_1_e       Y    gsl_sf_conicalP_1(dbl_expr,dbl_expr)
-gsl_sf_conicalP_sph_reg_e Y    gsl_sf_conicalP_sph_reg(int_expr,dbl_expr,dbl_expr)
-gsl_sf_conicalP_cyl_reg_e Y    gsl_sf_conicalP_cyl_reg(int_expr,dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_0_e   Y    gsl_sf_legendre_H3d_0(dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_1_e   Y    gsl_sf_legendre_H3d_1(dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_e     Y    gsl_sf_legendre_H3d(int_expr,dbl_expr,dbl_expr)
-gsl_sf_legendre_H3d_array N    gsl_sf_legendre_H3d_array
-gsl_sf_legendre_array_sizeN    gsl_sf_legendre_array_size
-gsl_sf_log_e              Y    gsl_sf_log(dbl_expr)
-gsl_sf_log_abs_e          Y    gsl_sf_log_abs(dbl_expr)
-gsl_sf_complex_log_e      N    gsl_sf_complex_log
-gsl_sf_log_1plusx_e       Y    gsl_sf_log_1plusx(dbl_expr)
-gsl_sf_log_1plusx_mx_e    Y    gsl_sf_log_1plusx_mx(dbl_expr)
-gsl_sf_mathieu_a_array    N    gsl_sf_mathieu_a_array
-gsl_sf_mathieu_b_array    N    gsl_sf_mathieu_b_array
-gsl_sf_mathieu_a          N    gsl_sf_mathieu_a
-gsl_sf_mathieu_b          N    gsl_sf_mathieu_b
-gsl_sf_mathieu_a_coeff    N    gsl_sf_mathieu_a_coeff
-gsl_sf_mathieu_b_coeff    N    gsl_sf_mathieu_b_coeff
-gsl_sf_mathieu_ce         N    gsl_sf_mathieu_ce
-gsl_sf_mathieu_se         N    gsl_sf_mathieu_se
-gsl_sf_mathieu_ce_array   N    gsl_sf_mathieu_ce_array
-gsl_sf_mathieu_se_array   N    gsl_sf_mathieu_se_array
-gsl_sf_mathieu_Mc         N    gsl_sf_mathieu_Mc
-gsl_sf_mathieu_Ms         N    gsl_sf_mathieu_Ms
-gsl_sf_mathieu_Mc_array   N    gsl_sf_mathieu_Mc_array
-gsl_sf_mathieu_Ms_array   N    gsl_sf_mathieu_Ms_array
-gsl_sf_pow_int_e          N    gsl_sf_pow_int
-gsl_sf_psi_int_e          Y    gsl_sf_psi_int(int_expr)
-gsl_sf_psi_e              Y    gsl_sf_psi(dbl_expr)
-gsl_sf_psi_1piy_e         Y    gsl_sf_psi_1piy(dbl_expr)
-gsl_sf_complex_psi_e      N    gsl_sf_complex_psi
-gsl_sf_psi_1_int_e        Y    gsl_sf_psi_1_int(int_expr)
-gsl_sf_psi_1_e            Y    gsl_sf_psi_1(dbl_expr)
-gsl_sf_psi_n_e            Y    gsl_sf_psi_n(int_expr,dbl_expr)
-gsl_sf_synchrotron_1_e    Y    gsl_sf_synchrotron_1(dbl_expr)
-gsl_sf_synchrotron_2_e    Y    gsl_sf_synchrotron_2(dbl_expr)
-gsl_sf_transport_2_e      Y    gsl_sf_transport_2(dbl_expr)
-gsl_sf_transport_3_e      Y    gsl_sf_transport_3(dbl_expr)
-gsl_sf_transport_4_e      Y    gsl_sf_transport_4(dbl_expr)
-gsl_sf_transport_5_e      Y    gsl_sf_transport_5(dbl_expr)
-gsl_sf_sin_e              N    gsl_sf_sin
-gsl_sf_cos_e              N    gsl_sf_cos
-gsl_sf_hypot_e            N    gsl_sf_hypot
-gsl_sf_complex_sin_e      N    gsl_sf_complex_sin
-gsl_sf_complex_cos_e      N    gsl_sf_complex_cos
-gsl_sf_complex_logsin_e   N    gsl_sf_complex_logsin
-gsl_sf_sinc_e             N    gsl_sf_sinc
-gsl_sf_lnsinh_e           N    gsl_sf_lnsinh
-gsl_sf_lncosh_e           N    gsl_sf_lncosh
-gsl_sf_polar_to_rect      N    gsl_sf_polar_to_rect
-gsl_sf_rect_to_polar      N    gsl_sf_rect_to_polar
-gsl_sf_sin_err_e          N    gsl_sf_sin_err
-gsl_sf_cos_err_e          N    gsl_sf_cos_err
-gsl_sf_angle_restrict_symm_eN    gsl_sf_angle_restrict_symm
-gsl_sf_angle_restrict_pos_eN    gsl_sf_angle_restrict_pos
-gsl_sf_angle_restrict_symm_err_eN    gsl_sf_angle_restrict_symm_err
-gsl_sf_angle_restrict_pos_err_eN    gsl_sf_angle_restrict_pos_err
-gsl_sf_zeta_int_e         Y    gsl_sf_zeta_int(int_expr)
-gsl_sf_zeta_e             Y    gsl_sf_zeta(dbl_expr)
-gsl_sf_zetam1_e           Y    gsl_sf_zetam1(dbl_expr)
-gsl_sf_zetam1_int_e       Y    gsl_sf_zetam1_int(int_expr)
-gsl_sf_hzeta_e            Y    gsl_sf_hzeta(dbl_expr,dbl_expr)
-gsl_sf_eta_int_e          Y    gsl_sf_eta_int(int_expr)
-gsl_sf_eta_e              Y    gsl_sf_eta(dbl_expr)
-
-   ---------- Footnotes ----------
-
-   (1) These are the GSL standard function names postfixed with `_e'.
-NCO calls these functions automatically, without the NCO command having
-to specifically indicate the `_e' function suffix.
-
-4.1.20 GSL interpolation
-------------------------
-
-As of version 3.9.9 (released July, 2009), NCO has wrappers to the GSL
-interpolation functions.
-
-Given a set of data points (x1,y1)...(xn, yn) the GSL functions
-computes a continuous interpolating function Y(x) such that Y(xi) = yi.
-The interpolation is piecewise smooth, and its behavior at the
-end-points is determined by the type of interpolation used. For more
-information consult the GSL manual.
-
-Interpolation with `ncap2' is a two stage process. In the first stage,
-a ram variable is created from the chosen interpolating function and
-the data set. This ram variable holds in memory a GSL interpolation
-object. In the second stage, points along the interpolating function
-are calculated. If you have a very large data set or are interpolating
-many sets then consider deleting the ram variable when it is redundant.
-Use the command `ram_delete(var_nm)'.
-
-A simple example
-
-     x_in[$lon]={1.0,2.0,3.0,4.0};
-     y_in[$lon]={1.1,1.2,1.5,1.8};
-
-     // Ram variable is declared and defined here
-     gsl_interp_cspline(&ram_sp,x_in,y_in);
-
-     x_out[$lon_grd]={1.1,2.0,3.0,3.1,3.99};
-
-     y_out=gsl_spline_eval(ram_sp,x_out);
-     y2=gsl_spline_eval(ram_sp,1.3);
-     y3=gsl_spline_eval(ram_sp,0.0);
-     ram_delete(ram_sp);
-
-     print(y_out);   // 1.10472, 1.2, 1.4, 1.42658, 1.69680002
-     print(y2);      // 1.12454
-     print(y3);      // '_'
-
-Note in the above example y3 is set to 'missing value' because 0.0
-isn't within the input X range.
-
-   * GSL Interpolation Types *
-All the interpolation functions have been implemented. These are:
-gsl_interp_linear()
-gsl_interp_polynomial()
-gsl_interp_cspline()
-gsl_interp_cspline_periodic()
-gsl_interp_akima()
-gsl_interp_akima_periodic()
-* Evaluation of Interpolating Types *
-*Implemented*
-gsl_spline_eval()
-*Unimplemented*
-gsl_spline_deriv()
-gsl_spline_deriv2()
-gsl_spline_integ()
-4.1.21 GSL least-squares fitting
---------------------------------
-
-Least Squares fitting is a method of calculating a straight line
-through a set of experimental data points in the XY plane. The data
-maybe weighted or unweighted. For more information please refer to the
-GSL manual.
-
-These GSL functions fall into three categories:
-*A)* Fitting data to Y=c0+c1*X
-*B)* Fitting data (through the origin) Y=c1*X
-*C)* Multi-parameter fitting (not yet implemented)
-*Section A*
-`status=*gsl_fit_linear*
-(data_x,stride_x,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&sumsq)
-'
-
-*Input variables*: data_x, stride_x, data_y, stride_y, n
-From the above variables an X and Y vector both of length 'n' are
-derived.  If data_x or data_y is less than type double then it is
-converted to type `double'.  It is up to you to do bounds checking on
-the input data.  For example if stride_x=3 and n=8 then the size of
-data_x must be at least 24
-
-*Output variables*: c0, c1, cov00, cov01, cov11,sumsq
-The '&' prefix indicates that these are call-by-reference variables.
-If any of the output variables don't exist prior to the call then they
-are created on the fly as scalar variables of type `double'. If they
-already exist then their existing value is overwritten. If the function
-call is successful then `status=0'.
-
-   `status=
-*gsl_fit_wlinear*(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&chisq)
-'
-
-Similar to the above call except it creates an additional weighting
-vector from the variables data_w, stride_w, n
-
-   ` data_y_out=*gsl_fit_linear_est*(data_x,c0,c1,cov00,cov01,cov11) '
-
-This function calculates y values along the line Y=c0+c1*X
-*Section B*
-`status=*gsl_fit_mul*(data_x,stride_x,data_y,stride_y,n,&c1,&cov11,&sumsq)
-'
-
-*Input variables*: data_x, stride_x, data_y, stride_y, n
-From the above variables an X and Y vector both of length 'n' are
-derived.  If data_x or data_y is less than type `double' then it is
-converted to type `double'.
-*Output variables*: c1,cov11,sumsq
-`status=
-*gsl_fit_wmul*(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&c1,&cov11,&sumsq)
-'
-
-Similar to the above call except it creates an additional weighting
-vector from the variables data_w, stride_w, n
-
-   ` data_y_out=*gsl_fit_mul_est*(data_x,c0,c1,cov11) '
-
-This function calculates y values along the line Y=c1*X
-The below example shows *gsl_fit_linear()* in action
-
-     defdim("d1",10);
-     xin[d1]={1,2,3,4,5,6,7,8,9,10.0};
-     yin[d1]={3.1,6.2,9.1,12.2,15.1,18.2,21.3,24.0,27.0,30.0};
-     gsl_fit_linear(xin,1,yin,1,$d1.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
-     print(c0);  // 0.2
-     print(c1);  // 2.98545454545
-
-
-     defdim("e1",4);
-     xout[e1]={1.0,3.0,4.0,11};
-     yout[e1]=0.0;
-
-     yout=gsl_fit_linear_est(xout, c0,c1, cov00,cov01, cov11, sumsq);
-
-     print(yout);  // 3.18545454545 ,9.15636363636, ,12.1418181818 ,33.04
-
-4.1.22 GSL statistics
----------------------
-
-Wrappers for most of the GSL Statistical functions have been
-implemented. The GSL function names include a type specifier (except
-for type double functions). To obtain the equivalent NCO name simply
-remove the type specifier; then depending on the data type the
-appropriate GSL function  is called. The weighed statistical functions
-e.g ` gsl_stats_wvariance()' are only defined in GSL for floating point
-types; so your data must of type `float' or `double' otherwise ncap2
-will emit an error message. To view the implemented functions use the
-shell command `ncap2 -f|grep _stats'
-
-GSL Functions
-     short gsl_stats_max (short data[], size_t stride, size_t n);
-     double gsl_stats_int_mean (int data[], size_t stride, size_t n);
-     double gsl_stats_short_sd_with_fixed_mean (short data[], size_t stride, size_t n, double mean);
-     double gsl_stats_wmean (double w[], size_t wstride, double data[], size_t stride, size_t n);
-     double gsl_stats_quantile_from_sorted_data (double sorted_data[], size_t stride, size_t n, double f) ;
-
-Equivalent ncap2 wrapper functions
-     short gsl_stats_max (var_data, data_stride, n);
-     double gsl_stats_mean (var_data, data_stride, n);
-     double gsl_stats_sd_with_fixed_mean (var_data, data_stride, n, var_mean);
-     double gsl_stats_wmean (var_weight, weight_stride, var_data, data_stride, n, var_mean);
-     double gsl_stats_quantile_from_sorted_data (var_sorted_data, data_stride, n, var_f) ;
-
-GSL has no notion of missing values or dimensionality beyond one. If
-your data has missing values which you want ignored in the calculations
-then use the `ncap2' built in aggregate functions( *note Methods and
-functions:: ). The GSL functions operate on a vector of values created
-from the var_data/stride/n arguments. The ncap wrappers check that
-there is no bounding error with regard to the size of the data and the
-final value in the vector.
-
-   Some examples
-
-     a1[time]={1,2,3,4,5,6,7,8,9,10 };
-
-     a1_avg=gsl_stats_mean(a1,1,10);
-     print(a1_avg); // 5.5
-
-     a1_var=gsl_stats_variance(a1,4,3);
-     print(a1_var); // 16.0
-
-     // bounding error, vector attempts to access element a1(10)
-     a1_sd=gsl_stats_sd(a1,5,3);
-
-For functions with the signature *func_nm(var_data,data_stride,n)*, one
-may omit the second or third arguments.  The default value for STRIDE
-is `1'.  The default value for N is `1+(data.size()-1)/stride'.
-
-     // Following statements are equvalent
-     n2=gsl_stats_max(a1,1,10)
-     n2=gsl_stats_max(a1,1);
-     n2=gsl_stats_max(a1);
-
-     // Following statements are equvalent
-     n3=gsl_stats_median_from_sorted_data(a1,2,5);
-     n3=gsl_stats_median_from_sorted_data(a1,2);
-
-     // Following statements are NOT equvalent
-     n4=gsl_stats_kurtosis(a1,3,2);
-     n4=gsl_stats_kurtosis(a1,3); //default n=4
-
-   The following example illustrates some of the weighted functions.
-The data are randomly generated.  In this case the value of the weight
-for each datum is either 0.0 or 1.0
-     defdim("r1",2000);
-     data[r1]=1.0;
-
-     // Fill with random numbers [0.0,10.0)
-     data=10.0*gsl_rng_uniform(data);
-
-     // Create a weighting variable
-     weight=(data>4.0);
-
-     wmean=gsl_stats_wmean(weight,1,data,1,$r1.size);
-     print(wmean);
-
-     wsd=gsl_stats_wsd(weight,1,data,1,$r1.size);
-     print(wsd);
-
-     // number of values in data that are greater than 4
-     weight_size=weight.total();
-     print(weight_size);
-
-     // print min/max of data
-     dmin=data.gsl_stats_min();
-     dmax=data.gsl_stats_max();
-     print(dmin);print(dmax);
-
-4.1.23 GSL random number generation
------------------------------------
-
-The GSL library has a large number of random number generators. In
-addition there are a large set of functions for turning uniform random
-numbers into discrete or continuous probabilty distributions. The
-random number generator algorithms vary in terms of quality numbers
-output, speed of execution and maximium number output. For more
-information see the GSL documentation. The algorithm and seed are set
-via environment variables, these are picked up by the `ncap2' code.
-
-*Setup*
-The number algorithm is set by the environment variable `GSL_RNG_TYPE'.
-If this variable isn't set then the default rng algorithm is
-gsl_rng_19937. The seed is set with the environment variable
-`GSL_RNG_SEED'. The following wrapper functions in ncap2 provide
-information about the chosen algorithm.
-`gsl_rng_min()'
-     the minimium value returned by the rng algorithm.
-
-`gsl_rng_max()'
-     the maximium value returned by the rng algorithm.
-
-*Uniformly Distributed Random Numbers*
-`gsl_rng_get(var_in)'
-     This function returns var_in with integers from the chosen rng
-     algorithm. The min and max values depend uoon the chosen rng
-     algorthm.
-
-`gsl_rng_uniform_int(var_in)'
-     This function returns var_in with random integers from 0 to n-1.
-     The value n must be less than or equal to the maximium value of
-     the chosen rng algorithm.
-
-`gsl_rng_uniform(var_in)'
-     This function returns var_in with double precision numbers in the
-     range [0.0,1). The range includes 0.0 and excludes 1.0.
-
-`gsl_rng_uniform_pos(var_in)'
-     This function returns var_in with double precision numbers in the
-     range (0.0,1), excluding both 0.0 and 1.0.
-
-Below are examples of `gsl_rng_get()' and `gsl_rng_uniform_int()' in
-action.
-
-     export GSL_RNG_TYPE=ranlux
-     export GSL_RNG_SEED=10
-     ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc
-     // 10 random numbers from the range 0 - 16777215
-     // a2=9056646, 12776696, 1011656, 13354708, 5139066, 1388751, 11163902, 7730127, 15531355, 10387694 ;
-
-     ncap2 -v -O -s 'a1[time]=21;a2=gsl_rng_uniform_int(a1).sort();' in.nc foo.nc
-     // 10 random numbers from the range 0 - 20
-     a2 = 1, 1, 6, 9, 11, 13, 13, 15, 16, 19 ;
-
-The following example produces an `ncap2' runtime error. This is
-because the chose rng algorithm has a maximium value greater than `
-NC_MAX_INT=2147483647 '; the wrapper functions to `gsl_rng_get()' and
-`gsl_rng_uniform_int()' return variable of type `NC_INT'. Please be
-aware of this when using random number distribution functions functions
-from the GSL library which return `unsigned int'. Examples of these are
-`gsl_ran_geometric()' and `gsl_ran_pascal()'.
-
-     export GSL_RNG_TYPE=mt19937
-     ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc
-
-To find the maximium value of the chosen rng algorithm use the
-following code snippet.
-     ncap2 -v -O -s 'rng_max=gsl_rng_max();print(rng_max)' in.nc foo.nc
-
-*Random Number Distributions*
-The GSL library has a rich set of random number disribution functions.
-The library also provides cumulative distribution functions and inverse
-cumulative distribution functions sometimes referred to a quantile
-functions. To see whats available on your build use the shell command
-`ncap2 -f|grep -e _ran -e _cdf'.
-
-The following examples all return variables of type `NC_INT'
-     defdim("out",15);
-     a1[$out]=0.5;
-     a2=gsl_ran_binomial(a1,30).sort();
-     //a2 = 10, 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 17, 22 ;
-     a3=gsl_ran_geometric(a2).sort();
-     //a2 = 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4, 5 ;
-     a4=gsl_ran_pascal(a2,50);
-     //a5 = 37, 40, 40, 42, 43, 45, 46, 49, 52, 58, 60, 62, 62, 65, 67 ;
-
-The following all return variables of type `NC_DOUBLE';
-     defdim("b1",1000);
-     b1[$b1]=0.8;
-     b2=gsl_ran_exponential(b1);
-     b2_avg=b2.avg();
-     print(b2_avg);
-     // b2_avg = 0.756047976787
-
-     b3=gsl_ran_gaussian(b1);
-     b3_avg=b3.avg();
-     b3_rms=b3.rms();
-     print(b3_avg);
-     // b3_avg = -0.00903446534258;
-     print(b3_rms);
-     // b3_rms = 0.81162979889;
-
-     b4[$b1]=10.0;
-     b5[$b1]=20.0;
-     b6=gsl_ran_flat(b4,b5);
-     b6_avg=b6.avg();
-     print(b6_avg);
-     // b6_avg=15.0588129413
-
-4.1.24 Examples ncap2
----------------------
-
-See the `ncap.in' and `ncap2.in' scripts released with NCO for more
-complete demonstrations of `ncap2' functionality (script available
-on-line at `http://nco.sf.net/ncap2.in').
-
-   Define new attribute NEW for existing variable ONE as twice the
-existing attribute DOUBLE_ATT of variable ATT_VAR:
-     ncap2 -s 'one at new=2*att_var at double_att' in.nc out.nc
-
-   Average variables of mixed types (result is of type `double'):
-     ncap2 -s 'average=(var_float+var_double+var_int)/3' in.nc out.nc
-
-   Multiple commands may be given to `ncap2' in three ways.  First, the
-commands may be placed in a script which is executed, e.g., `tst.nco'.
-Second, the commands may be individually specified with multiple `-s'
-arguments to the same `ncap2' invocation.  Third, the commands may be
-chained together into a single `-s' argument to `ncap2'.  Assuming the
-file `tst.nco' contains the commands `a=3;b=4;c=sqrt(a^2+b^2);', then
-the following `ncap2' invocations produce identical results:
-     ncap2 -v -S tst.nco in.nc out.nc
-     ncap2 -v -s 'a=3' -s 'b=4' -s 'c=sqrt(a^2+b^2)' in.nc out.nc
-     ncap2 -v -s 'a=3;b=4;c=sqrt(a^2+b^2)' in.nc out.nc
-   The second and third examples show that `ncap2' does not require
-that a trailing semi-colon `;' be placed at the end of a `-s' argument,
-although a trailing semi-colon `;' is always allowed.  However,
-semi-colons are required to separate individual assignment statements
-chained together as a single `-s' argument.
-
-   `ncap2' may be used to "grow" dimensions, i.e., to increase
-dimension sizes without altering existing data.  Say `in.nc' has
-`ORO(lat,lon)' and the user wishes a new file with
-`new_ORO(new_lat,new_lon)' that contains zeros in the undefined
-portions of the new grid.
-     defdim("new_lat",$lat.size+1); // Define new dimension sizes
-     defdim("new_lon",$lon.size+1);
-     new_ORO[$new_lat,$new_lon]=0.0f; // Initialize to zero
-     new_ORO(0:$lat.size-1,0:$lon.size-1)=ORO; // Fill valid data
-   The commands to define new coordinate variables `new_lat' and
-`new_lon' in the output file follow a similar pattern.  One would might
-store these commands in a script `grow.nco' and then execute the script
-with
-     ncap2 -v -S grow.nco in.nc out.nc
-
-   Imagine you wish to create a binary flag based on the value of an
-array.  The flag should have value 1.0 where the array exceeds 1.0, and
-value 0.0 elsewhere.  This example creates the binary flag `ORO_flg' in
-`out.nc' from the continuous array named `ORO' in `in.nc'.
-     ncap2 -s 'ORO_flg=(ORO > 1.0)' in.nc out.nc
-   Suppose your task is to change all values of `ORO' which equal 2.0
-to the new value 3.0:
-     ncap2 -s 'ORO_msk=(ORO==2.0);ORO=ORO_msk*3.0+!ORO_msk*ORO' in.nc out.nc
-   This creates and uses `ORO_msk' to mask the subsequent arithmetic
-operation.  Values of `ORO' are only changed where `ORO_msk' is true,
-i.e., where `ORO' equals 2.0
-Using the `where' statement the above code simplifies to :
-     ncap2 -s 'where(ORO==2.0) ORO=3.0;' in.nc foo.nc
-
-   This example uses `ncap2' to compute the covariance of two variables.
-Let the variables U and V be the horizontal wind components.  The
-"covariance" of U and V is defined as the time mean product of the
-deviations of U and V from their respective time means.  Symbolically,
-the covariance
-
-   [U'V'] = [UV]-[U][V] where [X] denotes the time-average of X and X'
-
-   denotes the deviation from the time-mean.  The covariance tells us
-how much of the correlation of two signals arises from the signal
-fluctuations versus the mean signals.  Sometimes this is called the
-"eddy covariance".  We will store the covariance in the variable
-`uprmvprm'.
-     ncwa -O -a time -v u,v in.nc foo.nc # Compute time mean of u,v
-     ncrename -O -v u,uavg -v v,vavg foo.nc # Rename to avoid conflict
-     ncks -A -v uavg,vavg foo.nc in.nc # Place time means with originals
-     ncap2 -O -s 'uprmvprm=u*v-uavg*vavg' in.nc in.nc # Covariance
-     ncra -O -v uprmvprm in.nc foo.nc # Time-mean covariance
-   The mathematically inclined will note that the same covariance would
-be obtained by replacing the step involving `ncap2' with
-     ncap2 -O -s 'uprmvprm=(u-uavg)*(v-vavg)' foo.nc foo.nc # Covariance
-
-   As of NCO version 3.1.8 (December, 2006), `ncap2' can compute
-averages, and thus covariances, by itself:
-     ncap2 -s 'uavg=u.avg($time);vavg=v.avg($time);uprmvprm=u*v-uavg*vavg' \
-           -s 'uprmvrpmavg=uprmvprm.avg($time)' in.nc foo.nc
-   We have not seen a simpler method to script and execute powerful
-arithmetic than `ncap2'.
-
-   `ncap2' utilizes many meta-characters (e.g., `$', `?', `;', `()',
-`[]') that can confuse the command-line shell if not quoted properly.
-The issues are the same as those which arise in utilizing extended
-regular expressions to subset variables (*note Subsetting Variables::).
-The example above will fail with no quotes and with double quotes.
-This is because shell globbing tries to "interpolate" the value of
-`$time' from the shell environment unless it is quoted:
-     ncap2 -s 'uavg=u.avg($time)'  in.nc foo.nc # Correct (recommended)
-     ncap2 -s  uavg=u.avg('$time') in.nc foo.nc # Correct (and dangerous)
-     ncap2 -s  uavg=u.avg($time)   in.nc foo.nc # Fails ($time = '')
-     ncap2 -s "uavg=u.avg($time)"  in.nc foo.nc # Fails ($time = '')
-   Without the single quotes, the shell replaces `$time' with an empty
-string.  The command `ncap2' receives from the shell is `uavg=u.avg()'.
-This causes `ncap2' to average over all dimensions rather than just the
-TIME dimension, and unintended consequence.
-
-   We recommend using single quotes to protect `ncap2' command-line
-scripts from the shell, even when such protection is not strictly
-necessary.  Expert users may violate this rule to exploit the ability
-to use shell variables in `ncap2' command-line scripts (*note CCSM
-Example::).  In such cases it may be necessary to use the shell
-backslash character `\' to protect the `ncap2' meta-character.
-
-   Whether a degenerate record dimension is desirable or undesirable
-depends on the application.  Often a degenerate TIME dimension is
-useful, e.g., for concatentating, but it may cause problems with
-arithmetic.  Such is the case in the above example, where the first
-step employs `ncwa' rather than `ncra' for the time-averaging.  Of
-course the numerical results are the same with both operators.  The
-difference is that, unless `-b' is specified, `ncwa' writes no TIME
-dimension to the output file, while `ncra' defaults to keeping TIME as
-a degenerate (size 1) dimension.  Appending `u' and `v' to the output
-file would cause `ncks' to try to expand the degenerate time axis of
-`uavg' and `vavg' to the size of the non-degenerate TIME dimension in
-the input file.  Thus the append (`ncks -A') command would be undefined
-(and should fail) in this case.  Equally important is the `-C' argument
-(*note Subsetting Coordinate Variables::) to `ncwa' to prevent any
-scalar TIME variable from being written to the output file.  Knowing
-when to use `ncwa -a time' rather than the default `ncra' for
-time-averaging takes, well, time.
-
-4.1.25 Intrinsic mathematical methods
--------------------------------------
-
-`ncap2' supports the standard mathematical functions supplied with most
-operating systems.  Standard calculator notation is used for addition
-`+', subtraction `-', multiplication `*', division `/', exponentiation
-`^', and modulus `%'.  The available elementary mathematical functions
-are: 
-`abs(x)'
-     "Absolute value" Absolute value of X.  Example: abs(-1) = 1
-
-`acos(x)'
-     "Arc-cosine" Arc-cosine of X where X is specified in radians.
-     Example: acos(1.0) = 0.0
-
-`acosh(x)'
-     "Hyperbolic arc-cosine" Hyperbolic arc-cosine of X where X is
-     specified in radians.  Example: acosh(1.0) = 0.0
-
-`asin(x)'
-     "Arc-sine" Arc-sine of X where X is specified in radians.  Example:
-     asin(1.0) = 1.57079632679489661922
-
-`asinh(x)'
-     "Hyperbolic arc-sine" Hyperbolic arc-sine of X where X is
-     specified in radians.  Example: asinh(1.0) = 0.88137358702
-
-`atan(x)'
-     "Arc-tangent" Arc-tangent of X where X is specified in radians
-     between -pi/2 and pi/2.  Example: atan(1.0) =
-     0.78539816339744830961
-
-`atan2(y,x)'
-     "Arc-tangent2" Arc-tangent of Y/X :Example atan2(1,3) =
-     0.321689857
-
-`atanh(x)'
-     "Hyperbolic arc-tangent" Hyperbolic arc-tangent of X where X is
-     specified in radians between -pi/2 and pi/2.  Example:
-     atanh(3.14159265358979323844) = 1.0
-
-`ceil(x)'
-     "Ceil" Ceiling of X. Smallest integral value not less than
-     argument.  Example: ceil(0.1) = 1.0
-
-`cos(x)'
-     "Cosine" Cosine of X where X is specified in radians.  Example:
-     cos(0.0) = 1.0
-
-`cosh(x)'
-     "Hyperbolic cosine" Hyperbolic cosine of X where X is specified in
-     radians.  Example: cosh(0.0) = 1.0
-
-`erf(x)'
-     "Error function" Error function of X where X is specified between
-     -1 and 1.  Example: erf(1.0) = 0.842701
-
-`erfc(x)'
-     "Complementary error function" Complementary error function of X
-     where X is specified between -1 and 1.  Example: erfc(1.0) =
-     0.15729920705
-
-`exp(x)'
-     "Exponential" Exponential of X, e^x.  Example: exp(1.0) =
-     2.71828182845904523536
-
-`floor(x)'
-     "Floor" Floor of X. Largest integral value not greater than
-     argument.  Example: floor(1.9) = 1
-
-`gamma(x)'
-     "Gamma function" Gamma function of X, Gamma(x).  The well-known
-     and loved continuous factorial function.  Example: gamma(0.5) =
-     sqrt(pi)
-
-`gamma_inc_P(x)'
-     "Incomplete Gamma function" Incomplete Gamma function of parameter
-     A and variable X, gamma_inc_P(a,x).  One of the four incomplete
-     gamma functions.  Example: gamma_inc_P(1,1) = 1-1/e
-
-`ln(x)'
-     "Natural Logarithm" Natural logarithm of X, ln(x).  Example:
-     ln(2.71828182845904523536) = 1.0
-
-`log(x)'
-     "Natural Logarithm" Exact synonym for `ln(x)'.
-
-`log10(x)'
-     "Base 10 Logarithm" Base 10 logarithm of X, log10(x).  Example:
-     log(10.0) = 1.0
-
-`nearbyint(x)'
-     "Round inexactly" Nearest integer to X is returned in floating
-     point format.  No exceptions are raised for "inexact conversions".
-     Example: nearbyint(0.1) = 0.0
-
-`pow(x,y)'
-     "Power" Value of X is raised to the power of Y.  Exceptions are
-     raised for "domain errors".  Due to type-limitations in the
-     C language `pow' function, integer arguments are promoted (*note
-     Type Conversion::) to type `NC_FLOAT' before evaluation.  Example:
-     pow(2,3) = 8
-
-`rint(x)'
-     "Round exactly" Nearest integer to X is returned in floating point
-     format.  Exceptions are raised for "inexact conversions".  Example:
-     rint(0.1) = 0
-
-`round(x)'
-     "Round" Nearest integer to X is returned in floating point format.
-     Round halfway cases away from zero, regardless of current IEEE
-     rounding direction.  Example: round(0.5) = 1.0
-
-`sin(x)'
-     "Sine" Sine of X where X is specified in radians.  Example:
-     sin(1.57079632679489661922) = 1.0
-
-`sinh(x)'
-     "Hyperbolic sine" Hyperbolic sine of X where X is specified in
-     radians.  Example: sinh(1.0) = 1.1752
-
-`sqrt(x)'
-     "Square Root" Square Root of X, sqrt(x).  Example: sqrt(4.0) = 2.0
-
-`tan(x)'
-     "Tangent" Tangent of X where X is specified in radians.  Example:
-     tan(0.78539816339744830961) = 1.0
-
-`tanh(x)'
-     "Hyperbolic tangent" Hyperbolic tangent of X where X is specified
-     in radians.  Example: tanh(1.0) = 0.761594155956
-
-`trunc(x)'
-     "Truncate" Nearest integer to X is returned in floating point
-     format.  Round halfway cases toward zero, regardless of current
-     IEEE rounding direction.  Example: trunc(0.5) = 0.0
-   The complete list of mathematical functions supported is
-platform-specific.  Functions mandated by ANSI C are _guaranteed_ to be
-present and are indicated with an asterisk (1).  and are indicated with
-an asterisk.  Use the `-f' (or `fnc_tbl' or `prn_fnc_tbl') switch to
-print a complete list of functions supported on your platform.  (2)
-
-
-
-   ---------- Footnotes ----------
-
-   (1) ANSI C compilers are guaranteed to support double precision
-versions of these functions.  These functions normally operate on
-netCDF variables of type `NC_DOUBLE' without having to perform
-intrinsic conversions.  For example, ANSI compilers provide `sin' for
-the sine of C-type `double' variables.  The ANSI standard does not
-require, but many compilers provide, an extended set of mathematical
-functions that apply to single (`float') and quadruple (`long double')
-precision variables.  Using these functions (e.g., `sinf' for `float',
-`sinl' for `long double'), when available, is (presumably) more
-efficient than casting variables to type `double', performing the
-operation, and then re-casting.  NCO uses the faster intrinsic
-functions when they are available, and uses the casting method when
-they are not.
-
-   (2) Linux supports more of these intrinsic functions than other OSs.
-
-4.1.26 Operators precedence and associativity
----------------------------------------------
-
-This page lists the `ncap' operators in order of precedence (highest to
-lowest). Their associativity indicates in what order operators of equal
-precedence in an expression are applied.
-
-Operator      Description                                   Associativity
---------------------------------------------------------------------------- 
-`++ --'       Postfix Increment/Decrement                   Right to Left
-`()'          Parentheses (function call)                   
-`.'           Method call                                   
-
-`++ --'       Prefix Increment/Decrement                    Right to Left
-`+ -'         Unary  Plus/Minus                             
-`!'           Logical Not                                   
-
-`^'           Power of Operator                             Right to Left
-
-`* / %'       Multiply/Divide/Modulus                       Left To Right
-
-`+ -'         Addition/Subtraction                          Left To Right
-
-`>> <<'       Fortran style array clipping                  Left to Right
-
-
-`< <='        Less than/Less than or equal to               Left to Right
-`> >='        Greater than/Greater than or equal to         
-
-`== !='       Equal to/Not equal to                         Left to Right
-
-`&&'          Logical AND                                   Left to Right
-
-`||'          Logical OR                                    Left to Right
-
-`?:'          Ternary Operator                              Right to Left
-
-`='           Assignment                                    Right to Left
-`+= -='       Addition/subtraction assignment               
-`*= /='       Multiplication/division assignment            
-
-4.1.27 ID Quoting
------------------
-
-In this section when I refer to a name I mean a variable name,
-attribute name or a dimension name The allowed characters in a valid
-netCDF name vary from release to release. (See end section). If you
-want to use metacharacters in a name or use a method name as a variable
-name then the name has to be quoted wherever it occurs.
-
-The default NCO name is specified by the regular expressions:
-
-     DGT:     ('0'..'9');
-     LPH:     ( 'a'..'z' | 'A'..'Z' | '_' );
-     name:    (LPH)(LPH|DGT)+
-
-The first character of a valid name must be alphabetic or the
-underscore. Any subsequent characters must be alphanumeric or
-underscore. ( e.g a1,_23, hell_is_666 )
-
-The valid characters in a quoted name are specified by the regular
-expressions:
-     LPHDGT:  ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9');
-     name:    (LPHDGT|'-'|'+'|'.'|'('|')'|':' )+  ;
-
-Quote a variable:
-'avg' , '10_+10','set_miss' '+-90field' , '-test'=10.0d
-Quote a attribute:
-'three at 10', 'set_mss at +10', '666 at hell', 't1 at +units'="kelvin"
-Quote a dimension:
-'$10', '$t1-', '$-odd', c1['$10','$t1-']=23.0d
-
-The following comments are from the netCDF library definitions and
-detail the naming conventions for each release.  netcdf-3.5.1
-netcdf-3.6.0-p1
-netcdf-3.6.1
-netcdf-3.6.2
-     /*
-      * ( [a-zA-Z]|[0-9]|'_'|'-'|'+'|'.'|'|':'|'@'|'('|')' )+
-      * Verify that a name string is valid
-      * CDL syntax, eg, all the characters are
-      * alphanumeric, '-', '_', '+', or '.'.
-      * Also permit ':', '@', '(', or ')' in names for chemists currently making
-      * use of these characters, but don't document until ncgen and ncdump can
-      * also handle these characters in names.
-      */
-
-netcdf-3.6.3
-netcdf-4.0 Final  2008/08/28
-     /*
-      * Verify that a name string is valid syntax.  The allowed name
-      * syntax (in RE form) is:
-      *
-      * ([a-zA-Z_]|{UTF8})([^\x00-\x1F\x7F/]|{UTF8})*
-      *
-      * where UTF8 represents a multibyte UTF-8 encoding.  Also, no
-      * trailing spaces are permitted in names.  This definition
-      * must be consistent with the one in ncgen.l.  We do not allow '/'
-      * because HDF5 does not permit slashes in names as slash is used as a
-      * group separator.  If UTF-8 is supported, then a multi-byte UTF-8
-      * character can occur anywhere within an identifier.  We later
-      * normalize UTF-8 strings to NFC to facilitate matching and queries.
-      */
-
-4.2 `ncatted' netCDF Attribute Editor
-=====================================
-
-SYNTAX
-     ncatted [-a ATT_DSC] [-a ...] [-D DBG] [-h] [--hdr_pad NBR]
-     [-l PATH] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     INPUT-FILE [[OUTPUT-FILE]]
-
-DESCRIPTION
-
-   `ncatted' edits attributes in a netCDF file.  If you are editing
-attributes then you are spending too much time in the world of
-metadata, and `ncatted' was written to get you back out as quickly and
-painlessly as possible.  `ncatted' can "append", "create", "delete",
-"modify", and "overwrite" attributes (all explained below).
-Furthermore, `ncatted' allows each editing operation to be applied to
-every variable in a file.  This saves time when changing attribute
-conventions throughout a file.  Note that `ncatted' interprets
-character attributes (i.e., attributes of type `NC_CHAR') as strings.
-
-   Because repeated use of `ncatted' can considerably increase the size
-of the `history' global attribute (*note History Attribute::), the `-h'
-switch is provided to override automatically appending the command to
-the `history' global attribute in the OUTPUT-FILE.
-
-   When `ncatted' is used to change the `_FillValue' attribute, it
-changes the associated missing data self-consistently.  If the internal
-floating point representation of a missing value, e.g., 1.0e36, differs
-between two machines then netCDF files produced on those machines will
-have incompatible missing values.  This allows `ncatted' to change the
-missing values in files from different machines to a single value so
-that the files may then be concatenated together, e.g., by `ncrcat',
-without losing any information.  *Note Missing Values::, for more
-information.
-
-   The key to mastering `ncatted' is understanding the meaning of the
-structure that describes the attribute modification, ATT_DSC specified
-by the required option `-a' or `--attribute'.  Each ATT_DSC contains
-five elements, which makes using `ncatted' somewhat complicated, but
-powerful.  The ATT_DSC argument structure contains five arguments in the
-following order:
-ATT_DSC = ATT_NM, VAR_NM, MODE, ATT_TYPE, ATT_VAL
-ATT_NM
-     Attribute name.  Example: `units'
-
-VAR_NM
-     Variable name.  Regular expressions (*note Subsetting Variables::)
-     are accepted and will select any matching variable names.
-     Example: `pressure', `'^H2O''.
-
-MODE
-     Edit mode abbreviation.  Example: `a'.  See below for complete
-     listing of valid values of MODE.
-
-ATT_TYPE
-     Attribute type abbreviation.  Example: `c'.  See below for
-     complete listing of valid values of ATT_TYPE.
-
-ATT_VAL
-     Attribute value.  Example: `pascal'.
-There should be no empty space between these five consecutive arguments.
-The description of these arguments follows in their order of appearance.
-
-   The value of ATT_NM is the name of the attribute you want to edit.
-This meaning of this should be clear to all users of the `ncatted'
-operator.  If ATT_NM is omitted (i.e., left blank) and "Delete" mode is
-selected, then all attributes associated with the specified variable
-will be deleted.
-
-   The value of VAR_NM is the name of the variable containing the
-attribute (named ATT_NM) that you want to edit.  There are three very
-important and useful exceptions to this rule.  The value of VAR_NM can
-also be used to direct `ncatted' to edit global attributes, or to
-repeat the editing operation for every variable in a file.  A value of
-VAR_NM of "global" indicates that ATT_NM refers to a global attribute,
-rather than a particular variable's attribute.  This is the method
-`ncatted' supports for editing global attributes.  If VAR_NM is left
-blank, on the other hand, then `ncatted' attempts to perform the
-editing operation on every variable in the file.  This option may be
-convenient to use if you decide to change the conventions you use for
-describing the data.  Finally, as mentioned above, VAR_NM may be
-specified as a regular expression.
-
-   The value of MODE is a single character abbreviation (`a', `c', `d',
-`m', or `o') standing for one of five editing modes:
-`a'
-     "Append".  Append value ATT_VAL to current VAR_NM attribute ATT_NM
-     value ATT_VAL, if any.  If VAR_NM does not have an attribute
-     ATT_NM, there is no effect.
-
-`c'
-     "Create".  Create variable VAR_NM attribute ATT_NM with ATT_VAL if
-     ATT_NM does not yet exist.  If VAR_NM already has an attribute
-     ATT_NM, there is no effect.
-
-`d'
-     "Delete".  Delete current VAR_NM attribute ATT_NM.  If VAR_NM does
-     not have an attribute ATT_NM, there is no effect.  If ATT_NM is
-     omitted (left blank), then all attributes associated with the
-     specified variable are automatically deleted.  When "Delete" mode
-     is selected, the ATT_TYPE and ATT_VAL arguments are superfluous
-     and may be left blank.
-
-`m'
-     "Modify".  Change value of current VAR_NM attribute ATT_NM to value
-     ATT_VAL.  If VAR_NM does not have an attribute ATT_NM, there is no
-     effect.
-
-`o'
-     "Overwrite".  Write attribute ATT_NM with value ATT_VAL to variable
-     VAR_NM, overwriting existing attribute ATT_NM, if any.  This is
-     the default mode.
-
-   The value of ATT_TYPE is a single character abbreviation (`f', `d',
-`l', `i', `s', `c', `b', `u') or a short string standing for one of the
-twelve primitive netCDF data types:
-`f'
-     "Float".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_FLOAT'.
-
-`d'
-     "Double".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_DOUBLE'.
-
-`i, l'
-     "Integer" or "Long".  Value(s) specified in ATT_VAL will be stored
-     as netCDF intrinsic type `NC_INT'.
-
-`s'
-     "Short".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_SHORT'.
-
-`c'
-     "Char".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_CHAR'.
-
-`b'
-     "Byte".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_BYTE'.
-
-`ub'
-     "Unsigned Byte".  Value(s) specified in ATT_VAL will be stored as
-     netCDF intrinsic type `NC_UBYTE'.
-
-`us'
-     "Unsigned Short".  Value(s) specified in ATT_VAL will be stored as
-     netCDF intrinsic type `NC_USHORT'.
-
-`u, ui, ul'
-     "Unsigned Int".  Value(s) specified in ATT_VAL will be stored as
-     netCDF intrinsic type `NC_UINT'.
-
-`ll, int64'
-     "Int64".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_INT64'.
-
-`ull, uint64'
-     "Uint64".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_UINT64'.
-
-`sng'
-     "String".  Value(s) specified in ATT_VAL will be stored as netCDF
-     intrinsic type `NC_STRING'.
-The specification of ATT_TYPE is optional (and is ignored) in "Delete"
-mode.
-
-   The value of ATT_VAL is what you want to change attribute ATT_NM to
-contain.  The specification of ATT_VAL is optional in "Delete" (and is
-ignored) mode.  Attribute values for all types besides `NC_CHAR' must
-have an attribute length of at least one.  Thus ATT_VAL may be a single
-value or one-dimensional array of elements of type `att_type'.  If the
-ATT_VAL is not set or is set to empty space, and the ATT_TYPE is
-`NC_CHAR', e.g., `-a units,T,o,c,""' or `-a units,T,o,c,', then the
-corresponding attribute is set to have zero length.  When specifying an
-array of values, it is safest to enclose ATT_VAL in single or double
-quotes, e.g., `-a levels,T,o,s,"1,2,3,4"' or `-a
-levels,T,o,s,'1,2,3,4''.  The quotes are strictly unnecessary around
-ATT_VAL except when ATT_VAL contains characters which would confuse the
-calling shell, such as spaces, commas, and wildcard characters.
-
-   NCO processing of `NC_CHAR' attributes is a bit like Perl in that it
-attempts to do what you want by default (but this sometimes causes
-unexpected results if you want unusual data storage).  If the ATT_TYPE
-is `NC_CHAR' then the argument is interpreted as a string and it may
-contain C-language escape sequences, e.g., `\n', which NCO will
-interpret before writing anything to disk.  NCO translates valid escape
-sequences and stores the appropriate ASCII code instead.  Since two
-byte escape sequences, e.g., `\n', represent one-byte ASCII codes,
-e.g., ASCII 10 (decimal), the stored string attribute is one byte
-shorter than the input string length for each embedded escape sequence.
-The most frequently used C-language escape sequences are `\n' (for
-linefeed) and `\t' (for horizontal tab).  These sequences in particular
-allow convenient editing of formatted text attributes.  The other valid
-ASCII codes are `\a', `\b', `\f', `\r', `\v', and `\\'.  *Note ncks
-netCDF Kitchen Sink::, for more examples of string formatting (with the
-`ncks' `-s' option) with special characters.
-
-   Analogous to `printf', other special characters are also allowed by
-`ncatted' if they are "protected" by a backslash.  The characters `"',
-`'', `?', and `\' may be input to the shell as `\"', `\'', `\?', and
-`\\'.  NCO simply strips away the leading backslash from these
-characters before editing the attribute.  No other characters require
-protection by a backslash.  Backslashes which precede any other
-character (e.g., `3', `m', `$', `|', `&', `@', `%', `{', and `}') will
-not be filtered and will be included in the attribute.
-
-   Note that the NUL character `\0' which terminates C language strings
-is assumed and need not be explicitly specified.  If `\0' is input, it
-is translated to the NUL character.  However, this will make the
-subsequent portion of the string, if any, invisible to C standard
-library string functions.  And that may cause unintended consequences.
-Because of these context-sensitive rules, one must use `ncatted' with
-care in order to store data, rather than text strings, in an attribute
-of type `NC_CHAR'.
-
-EXAMPLES
-
-   Append the string "Data version 2.0.\n" to the global attribute
-`history':
-     ncatted -a history,global,a,c,"Data version 2.0\n" in.nc
-   Note the use of embedded C language `printf()'-style escape
-sequences.
-
-   Change the value of the `long_name' attribute for variable `T' from
-whatever it currently is to "temperature":
-     ncatted -a long_name,T,o,c,temperature in.nc
-
-   Delete all existing `units' attributes:
-     ncatted -a units,,d,, in.nc
-   The value of VAR_NM was left blank in order to select all variables
-in the file.  The values of ATT_TYPE and ATT_VAL were left blank because
-they are superfluous in "Delete" mode.
-
-   Delete all attributes associated with the `tpt' variable, and delete
-all global attributes
-     ncatted -a ,tpt,d,, -a ,global,d,, in.nc
-   The value of ATT_NM was left blank in order to select all attributes
-associated with the variable.  To delete all global attributes, simply
-replace `tpt' with `global' in the above.
-
-   Modify all existing `units' attributes to "meter second-1":
-     ncatted -a units,,m,c,"meter second-1" in.nc
-
-   Add a `units' attribute of "kilogram kilogram-1" to all variables
-whose first three characters are `H2O':
-     ncatted -a units,'^H2O',c,c,"kilogram kilogram-1" in.nc
-
-   Overwrite the `quanta' attribute of variable `energy' to an array of
-four integers.
-     ncatted -O -a quanta,energy,o,s,"010,101,111,121" in.nc
-
-   As of NCO 3.9.6 (January, 2009), variable names arguments to
-`ncatted' may contain "extended regular expressions".  Create `isotope'
-attributes for all variables containing `H2O' in their names.
-     ncatted -O -a isotope,'^H2O*',c,s,"18" in.nc
-   See *note Subsetting Variables:: for more details.
-
-   Demonstrate input of C-language escape sequences (e.g., `\n') and
-other special characters (e.g., `\"')
-     ncatted -h -a special,global,o,c,
-     '\nDouble quote: \"\nTwo consecutive double quotes: \"\"\n
-     Single quote: Beyond my shell abilities!\nBackslash: \\\n
-     Two consecutive backslashes: \\\\\nQuestion mark: \?\n' in.nc
-   Note that the entire attribute is protected from the shell by single
-quotes.  These outer single quotes are necessary for interactive use,
-but may be omitted in batch scripts.
-
-4.3 `ncbo' netCDF Binary Operator
-=================================
-
-SYNTAX
-     ncbo [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h]
-     [-L DFL_LVL] [-l PATH] [-O] [-o FILE_3] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x] [-y OP_TYP]
-     FILE_1 FILE_2 [FILE_3]
-
-DESCRIPTION
-
-   `ncbo' performs binary operations on variables in FILE_1 and the
-corresponding variables (those with the same name) in FILE_2 and stores
-the results in FILE_3.  The binary operation operates on the entire
-files (modulo any excluded variables).  *Note Missing Values::, for
-treatment of missing values.  One of the four standard arithmetic
-binary operations currently supported must be selected with the `-y
-OP_TYP' switch (or long options `--op_typ' or `--operation').  The
-valid binary operations for `ncbo', their definitions, corresponding
-values of the OP_TYP key, and alternate invocations are:
-"Addition"
-     Definition: FILE_3 = FILE_1 + FILE_2
-     Alternate invocation: `ncadd'
-     OP_TYP key values: `add', `+', `addition'
-     Examples: `ncbo --op_typ=add 1.nc 2.nc 3.nc', `ncadd 1.nc 2.nc
-     3.nc'
-"Subtraction"
-     Definition: FILE_3 = FILE_1 - FILE_2
-     Alternate invocations: `ncdiff', `ncsub', `ncsubtract'
-     OP_TYP key values: `sbt', `-', `dff', `diff', `sub', `subtract',
-     `subtraction'
-     Examples: `ncbo --op_typ=- 1.nc 2.nc 3.nc', `ncdiff 1.nc 2.nc 3.nc'
-"Multiplication"
-     Definition: FILE_3 = FILE_1 * FILE_2
-     Alternate invocations: `ncmult', `ncmultiply'
-     OP_TYP key values: `mlt', `*', `mult', `multiply', `multiplication'
-     Examples: `ncbo --op_typ=mlt 1.nc 2.nc 3.nc', `ncmult 1.nc 2.nc
-     3.nc'
-"Division"
-     Definition: FILE_3 = FILE_1 / FILE_2
-     Alternate invocation: `ncdivide'
-     OP_TYP key values: `dvd', `/', `divide', `division'
-     Examples: `ncbo --op_typ=/ 1.nc 2.nc 3.nc', `ncdivide 1.nc 2.nc
-     3.nc'
-   Care should be taken when using the shortest form of key values,
-i.e., `+', `-', `*', and `/'.  Some of these single characters may have
-special meanings to the shell (1).  Place these characters inside
-quotes to keep them from being interpreted (globbed) by the shell (2).  For
-example, the following commands are equivalent
-     ncbo --op_typ=* 1.nc 2.nc 3.nc # Dangerous (shell may try to glob)
-     ncbo --op_typ='*' 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-     ncbo --op_typ="*" 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-     ncbo --op_typ=mlt 1.nc 2.nc 3.nc
-     ncbo --op_typ=mult 1.nc 2.nc 3.nc
-     ncbo --op_typ=multiply 1.nc 2.nc 3.nc
-     ncbo --op_typ=multiplication 1.nc 2.nc 3.nc
-     ncmult 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmult'
-     ncmultiply 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmultiply'
-   No particular argument or invocation form is preferred.  Users are
-encouraged to use the forms which are most intuitive to them.
-
-   Normally, `ncbo' will fail unless an operation type is specified
-with `-y' (equivalent to `--op_typ').  You may create exceptions to
-this rule to suit your particular tastes, in conformance with your
-site's policy on "symbolic links" to executables (files of a different
-name point to the actual executable).  For many years, `ncdiff' was the
-main binary file operator.  As a result, many users prefer to continue
-invoking `ncdiff' rather than memorizing a new command (`ncbo -y SBT')
-which behaves identically to the original `ncdiff' command.  However,
-from a software maintenance standpoint, maintaining a distinct
-executable for each binary operation (e.g., `ncadd') is untenable, and
-a single executable, `ncbo', is desirable.  To maintain backward
-compatibility, therefore, NCO automatically creates a symbolic link
-from `ncbo' to `ncdiff'.  Thus `ncdiff' is called an "alternate
-invocation" of `ncbo'.  `ncbo' supports many additional alternate
-invocations which must be manually activated.  Should users or system
-adminitrators decide to activate them, the procedure is simple.  For
-example, to use `ncadd' instead of `ncbo --op_typ=add', simply create a
-symbolic link from `ncbo' to `ncadd' (3).  The alternatate invocations
-supported for each operation type are listed above.  Alternatively,
-users may always define `ncadd' as an "alias" to `ncbo --op_typ=add'
-(4).
-
-   It is important to maintain portability in NCO scripts.  Therefore
-we recommend that site-specfic invocations (e.g., `ncadd') be used only
-in interactive sessions from the command-line.  For scripts, we
-recommend using the full invocation (e.g., `ncbo --op_typ=add').  This
-ensures portability of scripts between users and sites.
-
-   `ncbo' operates (e.g., adds) variables in FILE_2 with the
-corresponding variables (those with the same name) in FILE_1 and stores
-the results in FILE_3.  Variables in FILE_2 are "broadcast" to conform
-to the corresponding variable in FILE_1 if necessary, but the reverse is
-not true.  Broadcasting a variable means creating data in non-existing
-dimensions from the data in existing dimensions.  For example, a two
-dimensional variable in FILE_2 can be subtracted from a four, three, or
-two (but not one or zero) dimensional variable (of the same name) in
-`file_1'.  This functionality allows the user to compute anomalies from
-the mean.  Note that variables in FILE_1 are _not_ broadcast to conform
-to the dimensions in FILE_2.  In the future, we will broadcast
-variables in FILE_1, if necessary to conform to their counterparts in
-FILE_2.  Thus, presently, the number of dimensions, or "rank", of any
-processed variable in FILE_1 must be greater than or equal to the rank
-of the same variable in FILE_2.  Furthermore, the size of all
-dimensions common to both FILE_1 and FILE_2 must be equal.
-
-   When computing anomalies from the mean it is often the case that
-FILE_2 was created by applying an averaging operator to a file with
-initially the same dimensions as FILE_1 (often FILE_1 itself).  In
-these cases, creating FILE_2 with `ncra' rather than `ncwa' will cause
-the `ncbo' operation to fail.  For concreteness say the record
-dimension in `file_1' is `time'.  If FILE_2 were created by averaging
-FILE_1 over the `time' dimension with the `ncra' operator rather than
-with the `ncwa' operator, then FILE_2 will have a `time' dimension of
-size 1 rather than having no `time' dimension at all (5).  In this case
-the input files to `ncbo', FILE_1 and FILE_2, will have unequally sized
-`time' dimensions which causes `ncbo' to fail.  To prevent this from
-occuring, use `ncwa' to remove the `time' dimension from FILE_2.  See
-the example below.
-
-   `ncbo' never operates on coordinate variables or variables of type
-`NC_CHAR' or `NC_BYTE'.  This ensures that coordinates like (e.g.,
-latitude and longitude) are physically meaningful in the output file,
-FILE_3.  This behavior is hardcoded.  `ncbo' applies special rules to
-some CF-defined (and/or NCAR CCSM or NCAR CCM fields) such as `ORO'.
-See *note CF Conventions:: for a complete description.  Finally, we
-note that `ncflint' (*note ncflint netCDF File Interpolator::) is
-designed for file interpolation.  As such, it also performs file
-subtraction, addition, multiplication, albeit in a more convoluted way
-than `ncbo'.
-
-EXAMPLES
-
-   Say files `85_0112.nc' and `86_0112.nc' each contain 12 months of
-data.  Compute the change in the monthly averages from 1985 to 1986:
-     ncbo -op_typ=sub 86_0112.nc 85_0112.nc 86m85_0112.nc
-     ncdiff 86_0112.nc 85_0112.nc 86m85_0112.nc
-
-   The following examples demonstrate the broadcasting feature of
-`ncbo'.  Say we wish to compute the monthly anomalies of `T' from the
-yearly average of `T' for the year 1985.  First we create the 1985
-average from the monthly data, which is stored with the record
-dimension `time'.
-     ncra 85_0112.nc 85.nc
-     ncwa -O -a time 85.nc 85.nc
-   The second command, `ncwa', gets rid of the `time' dimension of
-size 1 that `ncra' left in `85.nc'.  Now none of the variables in
-`85.nc' has a `time' dimension.  A quicker way to accomplish this is to
-use `ncwa' from the beginning:
-     ncwa -a time 85_0112.nc 85.nc
-   We are now ready to use `ncbo' to compute the anomalies for 1985:
-     ncdiff -v T 85_0112.nc 85.nc t_anm_85_0112.nc
-   Each of the 12 records in `t_anm_85_0112.nc' now contains the
-monthly deviation of `T' from the annual mean of `T' for each gridpoint.
-
-   Say we wish to compute the monthly gridpoint anomalies from the zonal
-annual mean.  A "zonal mean" is a quantity that has been averaged over
-the longitudinal (or X) direction.  First we use `ncwa' to average over
-longitudinal direction `lon', creating `85_x.nc', the zonal mean of
-`85.nc'.  Then we use `ncbo' to subtract the zonal annual means from the
-monthly gridpoint data:
-     ncwa -a lon 85.nc 85_x.nc
-     ncdiff 85_0112.nc 85_x.nc tx_anm_85_0112.nc
-   This examples works assuming `85_0112.nc' has dimensions `time' and
-`lon', and that `85_x.nc' has no `time' or `lon' dimension.
-
-   As a final example, say we have five years of monthly data (i.e.,
-60 months) stored in `8501_8912.nc' and we wish to create a file which
-contains the twelve month seasonal cycle of the average monthly anomaly
-from the five-year mean of this data.  The following method is just one
-permutation of many which will accomplish the same result.  First use
-`ncwa' to create the five-year mean:
-     ncwa -a time 8501_8912.nc 8589.nc
-   Next use `ncbo' to create a file containing the difference of each
-month's data from the five-year mean:
-     ncbo 8501_8912.nc 8589.nc t_anm_8501_8912.nc
-   Now use `ncks' to group the five January anomalies together in one
-file, and use `ncra' to create the average anomaly for all five
-Januarys.  These commands are embedded in a shell loop so they are
-repeated for all twelve months: 
-     for idx in {1..12}; do # Bash Shell (version 3.0+)
-       idx=`printf "%02d" ${idx}` # Zero-pad to preserve order
-       ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-       ncra foo.${idx} t_anm_8589_${idx}.nc
-     done
-     for idx in 01 02 03 04 05 06 07 08 09 10 11 12; do # Bourne Shell
-       ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-       ncra foo.${idx} t_anm_8589_${idx}.nc
-     done
-     foreach idx (01 02 03 04 05 06 07 08 09 10 11 12) # C Shell
-       ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-       ncra foo.${idx} t_anm_8589_${idx}.nc
-     end
-   Note that `ncra' understands the `stride' argument so the two
-commands inside the loop may be combined into the single command
-     ncra -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-   Finally, use `ncrcat' to concatenate the 12 average monthly anomaly
-files into one twelve-record file which contains the entire seasonal
-cycle of the monthly anomalies:
-     ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc
-
-   ---------- Footnotes ----------
-
-   (1) A naked (i.e., unprotected or unquoted) `*' is a wildcard
-character.  A naked `-' may confuse the command line parser.  A naked
-`+' and `/' are relatively harmless.
-
-   (2) The widely used shell Bash correctly interprets all these
-special characters even when they are not quoted.  That is, Bash does
-not prevent NCO from correctly interpreting the intended arithmetic
-operation when the following arguments are given (without quotes) to
-`ncbo': `--op_typ=+', `--op_typ=-', `--op_typ=*', and `--op_typ=/'
-
-   (3) The command to do this is `ln -s -f ncbo ncadd'
-
-   (4) The command to do this is `alias ncadd='ncbo --op_typ=add''
-
-   (5) This is because `ncra' collapses the record dimension to a size
-of 1 (making it a "degenerate" dimension), but does not remove it,
-while, unless `-b' is given, `ncwa' removes all averaged dimensions.
-In other words, by default `ncra' changes variable size but not rank,
-while, `ncwa' changes both variable size and rank.
-
-4.4 `ncea' netCDF Ensemble Averager
-===================================
-
-SYNTAX
-     ncea [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x] [-y OP_TYP]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncea' performs gridpoint averages of variables across an arbitrary
-number (an "ensemble") of INPUT-FILES, with each file receiving an
-equal weight in the average.  `ncea' averages entire files, and weights
-each file evenly.  This is distinct from `ncra', which only averages
-over the record dimension (e.g., TIME), and weights each record in the
-record dimension evenly,
-
-   Variables in the OUTPUT-FILE are the same size as the variable in
-each of the INPUT-FILES, and all INPUT-FILES must be the same size.  The
-only exception is that `ncea' allows files to differ in the record
-dimension size if the requested record hyperslab (*note Hyperslabs::)
-resolves to the same size for all files.  `ncea' recomputes the record
-dimension hyperslab limits for each input file so that coordinate
-limits may be used to select equal length timeseries from unequal
-length files.  This simplifies analysis of unequal length timeseries
-from simulation ensembles (e.g., the CMIP IPCC AR4 archive).
-
-   `ncea' _always averages_ coordinate variables regardless of the
-arithmetic operation type performed on the non-coordinate variables.
-(*note Operation Types::).  All dimensions, including the record
-dimension, are treated identically and preserved in the OUTPUT-FILE.
-
-   *Note Averaging vs. Concatenating::, for a description of the
-distinctions between the various averagers and concatenators.  As a
-multi-file operator, `ncea' will read the list of INPUT-FILES from
-`stdin' if they are not specified as positional arguments on the
-command line (*note Large Numbers of Files::).
-
-   The file is the logical unit of organization for the results of many
-scientific studies.  Often one wishes to generate a file which is the
-gridpoint average of many separate files.  This may be to reduce
-statistical noise by combining the results of a large number of
-experiments, or it may simply be a step in a procedure whose goal is to
-compute anomalies from a mean state.  In any case, when one desires to
-generate a file whose properties are the mean of all the input files,
-then `ncea' is the operator to use.
-
-   `ncea' only allows coordinate variables to be processed by the
-linear average, minimum, and maximum operations.  `ncea' will return
-the linear average of coordinates unless extrema are explicitly
-requested.  Other requested operations (e.g., square-root, RMS) are
-applied only to non-coordinate variables.  In these cases the linear
-average of the coordinate variable will be returned.
-
-EXAMPLES
-
-   Consider a model experiment which generated five realizations of one
-year of data, say 1985.  You can imagine that the experimenter slightly
-perturbs the initial conditions of the problem before generating each
-new solution.  Assume each file contains all twelve months (a seasonal
-cycle) of data and we want to produce a single file containing the
-ensemble average (mean) seasonal cycle.  Here the numeric filename
-suffix denotes the experiment number (_not_ the month):
-     ncea 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-     ncea 85_0[1-5].nc 85.nc
-     ncea -n 5,2,1 85_01.nc 85.nc
-   These three commands produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.  The output file, `85.nc', is the same size as the inputs
-files.  It contains 12 months of data (which might or might not be
-stored in the record dimension, depending on the input files), but each
-value in the output file is the average of the five values in the input
-files.
-
-   In the previous example, the user could have obtained the ensemble
-average values in a particular spatio-temporal region by adding a
-hyperslab argument to the command, e.g.,
-     ncea -d time,0,2 -d lat,-23.5,23.5 85_??.nc 85.nc
-   In this case the output file would contain only three slices of data
-in the TIME dimension.  These three slices are the average of the first
-three slices from the input files.  Additionally, only data inside the
-tropics is included.
-
-4.5 `ncecat' netCDF Ensemble Concatenator
-=========================================
-
-SYNTAX
-     ncecat [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-M] [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-u ULM_NM] [-v VAR[,...]] [-X ...] [-x]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncecat' concatenates an arbitrary number of input files into a
-single output file.  The INPUT-FILES are stored consecutively as
-records in OUTPUT-FILE.  Each variable (except coordinate variables) in
-each input file becomes one record in the same variable in the output
-file.  Coordinate variables are not concatenated, they are instead
-simply copied from the first input file to the OUTPUT-FILE.  All
-INPUT-FILES must contain all extracted variables (or else there would
-be "gaps" in the output file).
-
-   A new record dimension is the glue which binds the input file data
-together.  The new record dimension name is, by default, "record".  Its
-name can be specified with the `-u ULM_NM' short option (or the
-`--ulm_nm' or `rcd_nm' long options).
-
-   Each extracted variable must be constant in size and rank across all
-INPUT-FILES.  The only exception is that `ncecat' allows files to
-differ in the record dimension size if the requested record hyperslab
-(*note Hyperslabs::) resolves to the same size for all files.  This
-allows easier gluing/averaging of unequal length timeseries from
-simulation ensembles (e.g., the IPCC AR4 archive).
-
-   Thus, the OUTPUT-FILE size is the sum of the sizes of the extracted
-variables in the input files.  *Note Averaging vs. Concatenating::, for
-a description of the distinctions between the various averagers and
-concatenators.  As a multi-file operator, `ncecat' will read the list of
-INPUT-FILES from `stdin' if they are not specified as positional
-arguments on the command line (*note Large Numbers of Files::).
-
-   Turn off global metadata copying.  By default all NCO operators copy
-the global metadata of the first input file into OUTPUT-FILE.  This
-helps preserve the provenance of the output data.  However, the use of
-metadata is burgeoning and is not uncommon to encounter files with
-excessive amounts of extraneous metadata.  Extracting small bits of
-data from such files leads to output files which are much larger than
-necessary due to the automatically copied metadata.  `ncecat' supports
-turning off the default copying of global metadata via the `-M' switch
-(or its long option equivalents, `--glb_mtd_spr' and
-`--global_metadata_suppress').
-
-   Consider five realizations, `85a.nc', `85b.nc', ... `85e.nc' of 1985
-predictions from the same climate model.  Then `ncecat 85?.nc
-85_ens.nc' glues the individual realizations together into the single
-file, `85_ens.nc'.  If an input variable was dimensioned [`lat',`lon'],
-it will by default have dimensions [`record',`lat',`lon'] in the output
-file.  A restriction of `ncecat' is that the hyperslabs of the
-processed variables must be the same from file to file.  Normally this
-means all the input files are the same size, and contain data on
-different realizations of the same variables.
-
-   Concatenating a variable packed with different scales across multiple
-datasets is beyond the capabilities of `ncecat' (and `ncrcat', the
-other concatenator (*note Concatenation::).  `ncecat' does not unpack
-data, it simply _copies_ the data from the INPUT-FILES, and the
-metadata from the _first_ INPUT-FILE, to the OUTPUT-FILE.  This means
-that data compressed with a packing convention must use the identical
-packing parameters (e.g., `scale_factor' and `add_offset') for a given
-variable across _all_ input files.  Otherwise the concatenated dataset
-will not unpack correctly.  The workaround for cases where the packing
-parameters differ across INPUT-FILES requires three steps: First,
-unpack the data using `ncpdq'.  Second, concatenate the unpacked data
-using `ncecat', Third, re-pack the result with `ncpdq'.
-
-EXAMPLES
-
-   Consider a model experiment which generated five realizations of one
-year of data, say 1985.  You can imagine that the experimenter slightly
-perturbs the initial conditions of the problem before generating each
-new solution.  Assume each file contains all twelve months (a seasonal
-cycle) of data and we want to produce a single file containing all the
-seasonal cycles.  Here the numeric filename suffix denotes the
-experiment number (_not_ the month):
-     ncecat 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-     ncecat 85_0[1-5].nc 85.nc
-     ncecat -n 5,2,1 85_01.nc 85.nc
-   These three commands produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.  The output file, `85.nc', is five times the size as a single
-INPUT-FILE.  It contains 60 months of data.
-
-   One often prefers that the (new) record dimension have a more
-descriptive, context-based name than simply "record".  This is easily
-accomplished with the `-u ULM_NM' switch:
-     ncecat -u realization 85_0[1-5].nc 85.nc
-   Users are more likely to understand the data processing history when
-such descriptive coordinates are used.
-
-   Consider a file with an existing record dimension named `time'.  and
-suppose the user wishes to convert `time' from a record dimension to a
-non-record dimension.  This may be useful, for example, when the user
-has another use for the record variable.  The procedure is to use
-`ncecat' followed by `ncwa': 
-     ncecat in.nc out.nc # Convert time to non-record dimension
-     ncwa -a record in.nc out.nc # Remove new degenerate record dimension
-   The second step removes the degenerate record dimension.  See *note
-ncpdq netCDF Permute Dimensions Quickly:: and *note ncks netCDF Kitchen
-Sink:: for other methods of of changing variable dimensionality,
-including the record dimension.
-
-4.6 `ncflint' netCDF File Interpolator
-======================================
-
-SYNTAX
-     ncflint [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-i VAR,VAL3]
-     [-L DFL_LVL] [-l PATH] [-O] [-o FILE_3] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-w WGT1[,WGT2]] [-X ...] [-x]
-     FILE_1 FILE_2 [FILE_3]
-
-DESCRIPTION
-
-   `ncflint' creates an output file that is a linear combination of the
-input files.  This linear combination is a weighted average, a
-normalized weighted average, or an interpolation of the input files.
-Coordinate variables are not acted upon in any case, they are simply
-copied from FILE_1.
-
-   There are two conceptually distinct methods of using `ncflint'.  The
-first method is to specify the weight each input file contributes to
-the output file.  In this method, the value VAL3 of a variable in the
-output file FILE_3 is determined from its values VAL1 and VAL2 in the
-two input files according to
-
-   VAL3 = WGT1*VAL1 + WGT2*VAL2
-
-   .  Here at least WGT1, and, optionally, WGT2, are specified on the
-command line with the `-w' (or `--weight' or `--wgt_var') switch.  If
-only WGT1 is specified then WGT2 is automatically computed as WGT2 = 1
-- WGT1.  Note that weights larger than 1 are allowed.  Thus it is
-possible to specify WGT1 = 2 and WGT2 = -3.  One can use this
-functionality to multiply all the values in a given file by a constant.
-
-   The second method of using `ncflint' is to specify the interpolation
-option with `-i' (or with the `--ntp' or `--interpolate' long options).
-This is really the inverse of the first method in the following sense.
-When the user specifies the weights directly, `ncflint' has no work to
-do besides multiplying the input values by their respective weights and
-adding the results together to produce the output values.  It makes
-sense to use this when the weights are known _a priori_.
-
-   Another class of problems has the "arrival value" (i.e., VAL3) of a
-particular variable VAR known _a priori_.  In this case, the implied
-weights can always be inferred by examining the values of VAR in the
-input files.  This results in one equation in two unknowns, WGT1 and
-WGT2:
-
-   VAL3 = WGT1*VAL1 + WGT2*VAL2
-
-   .  Unique determination of the weights requires imposing the
-additional constraint of normalization on the weights: WGT1 + WGT2 = 1.
-Thus, to use the interpolation option, the user specifies VAR and VAL3
-with the `-i' option.  `ncflint' then computes WGT1 and WGT2, and uses
-these weights on all variables to generate the output file.  Although
-VAR may have any number of dimensions in the input files, it must
-represent a single, scalar value.  Thus any dimensions associated with
-VAR must be "degenerate", i.e., of size one.
-
-   If neither `-i' nor `-w' is specified on the command line, `ncflint'
-defaults to weighting each input file equally in the output file.  This
-is equivalent to specifying `-w 0.5' or `-w 0.5,0.5'.  Attempting to
-specify both `-i' and `-w' methods in the same command is an error.
-
-   `ncflint' does not interpolate variables of type `NC_CHAR' and
-`NC_BYTE'.  This behavior is hardcoded.
-
-   Depending on your intuition, `ncflint' may treat missing values
-unexpectedly.  Consider a point where the value in one input file, say
-VAL1, equals the missing value MSS_VAL_1 and, at the same point, the
-corresponding value in the other input file VAL2 is not misssing (i.e.,
-does not equal MSS_VAL_2).  There are three plausible answers, and this
-creates ambiguity.
-
-   Option one is to set VAL3 = MSS_VAL_1.  The rationale is that
-`ncflint' is, at heart, an interpolator and interpolation involving a
-missing value is intrinsically undefined.  `ncflint' currently
-implements this behavior since it is the most conservative and least
-likely to lead to misinterpretation.
-
-   Option two is to output the weighted valid data point, i.e.,
-
-   VAL3 = WGT2*VAL2
-
-   .  The rationale for this behavior is that interpolation is really a
-weighted average of known points, so `ncflint' should weight the valid
-point.
-
-   Option three is to return the _unweighted_ valid point, i.e., VAL3 =
-VAL2.  This behavior would appeal to those who use `ncflint' to
-estimate data using the closest available data.  When a point is not
-bracketed by valid data on both sides, it is better to return the known
-datum than no datum at all.
-
-   The current implementation uses the first approach, Option one.  If
-you have strong opinions on this matter, let us know, since we are
-willing to implement the other approaches as options if there is enough
-interest.
-
-EXAMPLES
-
-   Although it has other uses, the interpolation feature was designed
-to interpolate FILE_3 to a time between existing files.  Consider input
-files `85.nc' and `87.nc' containing variables describing the state of
-a physical system at times `time' = 85 and `time' = 87.  Assume each
-file contains its timestamp in the scalar variable `time'.  Then, to
-linearly interpolate to a file `86.nc' which describes the state of the
-system at time at `time' = 86, we would use
-     ncflint -i time,86 85.nc 87.nc 86.nc
-
-   Say you have observational data covering January and April 1985 in
-two files named `85_01.nc' and `85_04.nc', respectively.  Then you can
-estimate the values for February and March by interpolating the
-existing data as follows.  Combine `85_01.nc' and `85_04.nc' in a 2:1
-ratio to make `85_02.nc':
-     ncflint -w 0.667 85_01.nc 85_04.nc 85_02.nc
-     ncflint -w 0.667,0.333 85_01.nc 85_04.nc 85_02.nc
-
-   Multiply `85.nc' by 3 and by -2 and add them together to make
-`tst.nc':
-     ncflint -w 3,-2 85.nc 85.nc tst.nc
-   This is an example of a null operation, so `tst.nc' should be
-identical (within machine precision) to `85.nc'.
-
-   Add `85.nc' to `86.nc' to obtain `85p86.nc', then subtract `86.nc'
-from `85.nc' to obtain `85m86.nc'
-     ncflint -w 1,1 85.nc 86.nc 85p86.nc
-     ncflint -w 1,-1 85.nc 86.nc 85m86.nc
-     ncdiff 85.nc 86.nc 85m86.nc
-   Thus `ncflint' can be used to mimic some `ncbo' operations.  However
-this is not a good idea in practice because `ncflint' does not
-broadcast (*note ncbo netCDF Binary Operator::) conforming variables
-during arithmetic.  Thus the final two commands would produce identical
-results except that `ncflint' would fail if any variables needed to be
-broadcast.
-
-   Rescale the dimensional units of the surface pressure `prs_sfc' from
-Pascals to hectopascals (millibars)
-     ncflint -C -v prs_sfc -w 0.01,0.0 in.nc in.nc out.nc
-     ncatted -a units,prs_sfc,o,c,millibar out.nc
-
-4.7 `ncks' netCDF Kitchen Sink
-==============================
-
-SYNTAX
-     ncks [-3] [-4] [-6] [-A] [-a] [-B] [-b BINARY-FILE] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [--fix_rec_dmn]
-     [-F] [-H] [-h] [--hdr_pad NBR] [-L DFL_LVL] [-l PATH] [-M] [-m] [--mk_rec_dmn DIM]
-     [-O] [-o OUTPUT-FILE] [-P] [-p PATH] [-Q] [-q] [-R] [-r]
-     [-s FORMAT] [-u] [-v VAR[,...]] [-X ...] [-x]
-     INPUT-FILE [[OUTPUT-FILE]]
-
-DESCRIPTION
-
-   `ncks' combines selected features of `ncdump', `ncextr', and the
-nccut and ncpaste specifications into one versatile utility.  `ncks'
-extracts a subset of the data from INPUT-FILE and prints it as ASCII
-text to `stdout', writes it in flat binary format to `binary-file', and
-writes (or pastes) it in netCDF format to OUTPUT-FILE.
-
-   `ncks' will print netCDF data in ASCII format to `stdout', like
-`ncdump', but with these differences: `ncks' prints data in a tabular
-format intended to be easy to search for the data you want, one datum
-per screen line, with all dimension subscripts and coordinate values
-(if any) preceding the datum.  Option `-s' (or long options `--sng_fmt'
-and `--string') lets the user format the data using C-style format
-strings.
-
-   Options `-a', `-F' , `-H', `-M', `-m', `-P', `-Q', `-q', `-s', and
-`-u' (and their long option counterparts) control the formatted
-appearance of the data.
-
-   `ncks' extracts (and optionally creates a new netCDF file comprised
-of) only selected variables from the input file (similar to the old
-`ncextr' specification).  Only variables and coordinates may be
-specifically included or excluded--all global attributes and any
-attribute associated with an extracted variable are copied to the
-screen and/or output netCDF file.  Options `-c', `-C', `-v', and `-x'
-(and their long option synonyms) control which variables are extracted.
-
-   `ncks' extracts hyperslabs from the specified variables (`ncks'
-implements the original `nccut' specification).  Option `-d' controls
-the hyperslab specification.  Input dimensions that are not associated
-with any output variable do not appear in the output netCDF.  This
-feature removes superfluous dimensions from netCDF files.
-
-   `ncks' will append variables and attributes from the INPUT-FILE to
-OUTPUT-FILE if OUTPUT-FILE is a pre-existing netCDF file whose relevant
-dimensions conform to dimension sizes of INPUT-FILE.  The append
-features of `ncks' are intended to provide a rudimentary means of
-adding data from one netCDF file to another, conforming, netCDF file.
-If naming conflicts exist between the two files, data in OUTPUT-FILE is
-usually overwritten by the corresponding data from INPUT-FILE.  Thus,
-when appending, the user should backup OUTPUT-FILE in case valuable
-data are inadvertantly overwritten.
-
-   If OUTPUT-FILE exists, the user will be queried whether to
-"overwrite", "append", or "exit" the `ncks' call completely.  Choosing
-"overwrite" destroys the existing OUTPUT-FILE and create an entirely
-new one from the output of the `ncks' call.  Append has differing
-effects depending on the uniqueness of the variables and attributes
-output by `ncks': If a variable or attribute extracted from INPUT-FILE
-does not have a name conflict with the members of OUTPUT-FILE then it
-will be added to OUTPUT-FILE without overwriting any of the existing
-contents of OUTPUT-FILE.  In this case the relevant dimensions must
-agree (conform) between the two files; new dimensions are created in
-OUTPUT-FILE as required.  When a name conflict occurs, a global
-attribute from INPUT-FILE will overwrite the corresponding global
-attribute from OUTPUT-FILE.  If the name conflict occurs for a
-non-record variable, then the dimensions and type of the variable (and
-of its coordinate dimensions, if any) must agree (conform) in both
-files.  Then the variable values (and any coordinate dimension values)
-from INPUT-FILE will overwrite the corresponding variable values (and
-coordinate dimension values, if any) in OUTPUT-FILE (1).
-
-   Since there can only be one record dimension in a file, the record
-dimension must have the same name (but not necessarily the same size) in
-both files if a record dimension variable is to be appended.  If the
-record dimensions are of differing sizes, the record dimension of
-OUTPUT-FILE will become the greater of the two record dimension sizes,
-the record variable from INPUT-FILE will overwrite any counterpart in
-OUTPUT-FILE and fill values will be written to any gaps left in the
-rest of the record variables (I think).  In all cases variable
-attributes in OUTPUT-FILE are superseded by attributes of the same name
-from INPUT-FILE, and left alone if there is no name conflict.
-
-   Some users may wish to avoid interactive `ncks' queries about
-whether to overwrite existing data.  For example, batch scripts will
-fail if `ncks' does not receive responses to its queries.  Options `-O'
-and `-A' are available to force overwriting existing files and
-variables, respectively.
-
-Options specific to `ncks'
---------------------------
-
-The following list provides a short summary of the features unique to
-`ncks'.  Features common to many operators are described in *note
-Common features::.
-
-`-a'
-     Do not alphabetize extracted fields.  By default, the specified
-     output variables are extracted, printed, and written to disk in
-     alphabetical order.  This tends to make long output lists easier
-     to search for particular variables.  Specifying `-a' results in
-     the variables being extracted, printed, and written to disk in the
-     order in which they were saved in the input file.  Thus `-a'
-     retains the original ordering of the variables.  Also `--abc' and
-     `--alphabetize'.
-
-`-B `file''
-     Activate native machine binary output writing to the default binary
-     file, `ncks.bnr'.  The `-B' switch is redundant when the
-     `-b' `file' option is specified, and native binary output will be
-     directed to the binary file `file'.  Also `--bnr' and `--binary'.
-     Writing packed variables in binary format is not supported.
-
-`-b `file''
-     Activate native machine binary output writing to binary file
-     `file'.  Also `--fl_bnr' and `--binary-file'.  Writing packed
-     variables in binary format is not supported.
-
-`-d DIM,[MIN][,[MAX][,[STRIDE]]]'
-     Add "stride" argument to hyperslabber.  For a complete description
-     of the STRIDE argument, *Note Stride::.
-
-`--fix_rec_dmn'
-     Change all record dimensions in the input file into fixed
-     dimensions in the output file.  Also `--no_rec_dmn'.
-
-`--mk_rec_dmn DIM'
-     Change existing dimension DIM to a record dimension in the output
-     file.  See *note ncecat netCDF Ensemble Concatenator:: and *note
-     ncpdq netCDF Permute Dimensions Quickly:: for other methods of
-     changing variable dimensionality, including the record dimension.
-
-`-H'
-     Print data to screen.  Also activated using `--print' or `--prn'.
-     By default `ncks' prints all metadata and data to screen if no
-     netCDF output file is specified.  Use `-H' to print data to screen
-     if a netCDF output is specified, or to restrict printing to data
-     (no metadata) when no netCDF output is specified.  Unless
-     otherwise specified (with `-s'), each element of the data
-     hyperslab prints on a separate line containing the names, indices,
-     and, values, if any, of all of the variables dimensions.  The
-     dimension and variable indices refer to the location of the
-     corresponding data element with respect to the variable as stored
-     on disk (i.e., not the hyperslab).
-          % ncks -C -v three_dmn_var in.nc
-          lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-          lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-          lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-          ...
-          lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-          lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-          lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     Printing the same variable with the `-F' option shows the same
-     variable indexed with Fortran conventions
-          % ncks -F -C -v three_dmn_var in.nc
-          lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
-          lon(2)=90 lev(1)=100 lat(1)=-90 three_dmn_var(2)=1
-          lon(3)=180 lev(1)=100 lat(1)=-90 three_dmn_var(3)=2
-          ...
-     Printing a hyperslab does not affect the variable or dimension
-     indices since these indices are relative to the full variable (as
-     stored in the input file), and the input file has not changed.
-     However, if the hyperslab is saved to an output file and those
-     values are printed, the indices will change:
-          % ncks -H -d lat,90.0 -d lev,1000.0 -v three_dmn_var in.nc out.nc
-          ...
-          lat[1]=90 lev[2]=1000 lon[0]=0 three_dmn_var[20]=20
-          lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-          lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-          lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-          % ncks -C -v three_dmn_var out.nc
-          lat[0]=90 lev[0]=1000 lon[0]=0 three_dmn_var[0]=20
-          lat[0]=90 lev[0]=1000 lon[1]=90 three_dmn_var[1]=21
-          lat[0]=90 lev[0]=1000 lon[2]=180 three_dmn_var[2]=22
-          lat[0]=90 lev[0]=1000 lon[3]=270 three_dmn_var[3]=23
-
-`-M'
-     Print to screen the global metadata describing the file.  This
-     includes file summary information and global attributes.  Also
-     `--Mtd' and `--Metadata'.  By default `ncks' prints global
-     metadata to screen if no netCDF output file and no variable
-     extraction list is specified (with `-v').  Use `-M' to print
-     global metadata to screen if a netCDF output is specified, or if a
-     variable extraction list is specified (with `-v').
-
-     The various combinations of printing switches can be confusing.
-     In an attempt to anticipate what most users want to do, `ncks'
-     uses context-sensitive defaults for printing.  Our goal is to
-     minimize the use of switches required to accomplish the common
-     operations.  We assume that users creating a new file or
-     overwriting (e.g., with `-O') an existing file usually wish to
-     copy all global and variable-specific attributes to the new file.
-     In contrast, we assume that users appending (e.g., with `-A' an
-     explicit variable list from one file to another usually wish to
-     copy only the variable-specific attributes to the output file.
-     The switches `-H', `-M', and `-m' switches are implemented as
-     toggles which reverse the default behavior.  The most confusing
-     aspect of this is that `-M' inhibits copying global metadata in
-     overwrite mode and causes copying of global metadata in append
-     mode.
-          ncks -O              in.nc out.nc # Copy   VAs and GAs
-          ncks -O       -v one in.nc out.nc # Copy   VAs and GAs
-          ncks -O -M    -v one in.nc out.nc # Copy   VAs not GAs
-          ncks -O    -m -v one in.nc out.nc # Copy   GAs not VAs
-          ncks -O -M -m -v one in.nc out.nc # Copy   only data (no atts)
-          ncks -A              in.nc out.nc # Append VAs and GAs
-          ncks -A       -v one in.nc out.nc # Append VAs not GAs
-          ncks -A -M    -v one in.nc out.nc # Append VAs and GAs
-          ncks -A    -m -v one in.nc out.nc # Append only data (no atts)
-          ncks -A -M -m -v one in.nc out.nc # Append GAs not VAs
-     where `VAs' and `GAs' denote variable and global attributes,
-     respectively.
-
-`-m'
-     Print variable metadata to screen (similar to `ncdump -h').  This
-     displays all metadata pertaining to each variable, one variable at
-     a time.  This includes information on the storage properties of
-     the variable, such as whether it employs chunking, compression, or
-     packing.  Also activated using `--mtd' and `--metadata'.  The
-     `ncks' default behavior is to print variable metadata to screen if
-     no netCDF output file is specified.  Use `-m' to print variable
-     metadata to screen if a netCDF output is specified.
-
-`-P'
-     Print data, metadata, and units to screen.  The `-P' switch is a
-     convenience abbreviation for `-C -H -M -m -u'.  Also activated
-     using `--print' or `--prn'.  This set of switches is useful for
-     exploring file contents.
-
-`-Q'
-     Toggle printing of dimension indices and coordinate values when
-     printing arrays.  Each variable's name appears flush left in the
-     output.  This helps locate specific variables in lists with many
-     variables and different dimensions.
-
-`-q'
-     Turn off all printing to screen.  This overrides the setting of
-     all print-related switches, equivalent to `-H -M -m' when in
-     single-file printing mode.  When invoked with `-R' (*note
-     Retaining Retrieved Files::), `ncks' automatically sets `-q'.
-     This allows `ncks' to retrieve remote files without automatically
-     trying to print them.  Also `--quiet'.
-
-`-s FORMAT'
-     String format for text output.  Accepts C language escape
-     sequences and `printf()' formats.  Also `--string'  and
-     `--sng_fmt'.
-
-`-u'
-     Toggle the printing of a variable's `units' attribute, if any,
-     with its values.  Also `--units'.
-
-EXAMPLES
-
-   View all data in netCDF `in.nc', printed with Fortran indexing
-conventions:
-     ncks -F in.nc
-
-   Copy the netCDF file `in.nc' to file `out.nc'.
-     ncks in.nc out.nc
-   Now the file `out.nc' contains all the data from `in.nc'.  There
-are, however, two differences between `in.nc' and `out.nc'.  First, the
-`history' global attribute (*note History Attribute::) will contain the
-command used to create `out.nc'.  Second, the variables in `out.nc'
-will be defined in alphabetical order.  Of course the internal storage
-of variable in a netCDF file should be transparent to the user, but
-there are cases when alphabetizing a file is useful (see description of
-`-a' switch).
-
-   Copy all global attributes (and no variables) from `in.nc' to
-`out.nc':
-     ncks -A -x ~/nco/data/in.nc ~/out.nc
-   The `-x' switch tells NCO to use the complement of the extraction
-list (*note Subsetting Variables::).  Since no extraction list is
-explicitly specified (with `-v'), the default is to extract all
-variables.  The complement of all variables is no variables.  Without
-any variables to extract, the append (`-A') command (*note Appending
-Variables::) has only to extract and copy (i.e., append) global
-attributes to the output file.
-
-   Print variable `three_dmn_var' from file `in.nc' with default
-notations.  Next print `three_dmn_var' as an un-annotated text column.
-Then print `three_dmn_var' signed with very high precision.  Finally,
-print `three_dmn_var' as a comma-separated list.
-     % ncks -C -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-     lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-     ...
-     lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     % ncks -s '%f\n' -C -v three_dmn_var in.nc
-     0.000000
-     1.000000
-     ...
-     23.000000
-     % ncks -s '%+16.10f\n' -C -v three_dmn_var in.nc
-        +0.0000000000
-        +1.0000000000
-     ...
-       +23.0000000000
-     % ncks -s '%f, ' -C -v three_dmn_var in.nc
-     0.000000, 1.000000, ..., 23.000000,
-   The second and third options are useful when pasting data into text
-files like reports or papers.  *Note ncatted netCDF Attribute Editor::,
-for more details on string formatting and special characters.
-
-   One dimensional arrays of characters stored as netCDF variables are
-automatically printed as strings, whether or not they are
-NUL-terminated, e.g.,
-     ncks -v fl_nm in.nc
-   The `%c' formatting code is useful for printing multidimensional
-arrays of characters representing fixed length strings
-     ncks -s '%c' -v fl_nm_arr in.nc
-   Using the `%s' format code on strings which are not NUL-terminated
-(and thus not technically strings) is likely to result in a core dump.
-
-   Create netCDF `out.nc' containing all variables, and any associated
-coordinates, except variable `time', from netCDF `in.nc':
-     ncks -x -v time in.nc out.nc
-
-   Extract variables `time' and `pressure' from netCDF `in.nc'.  If
-`out.nc' does not exist it will be created.  Otherwise the you will be
-prompted whether to append to or to overwrite `out.nc':
-     ncks -v time,pressure in.nc out.nc
-     ncks -C -v time,pressure in.nc out.nc
-   The first version of the command creates an `out.nc' which contains
-`time', `pressure', and any coordinate variables associated with
-PRESSURE.  The `out.nc' from the second version is guaranteed to
-contain only two variables `time' and `pressure'.
-
-   Create netCDF `out.nc' containing all variables from file `in.nc'.
-Restrict the dimensions of these variables to a hyperslab.  Print (with
-`-H') the hyperslabs to the screen for good measure.  The specified
-hyperslab is: the fifth value in dimension `time'; the half-open range
-LAT > 0. in coordinate `lat'; the half-open range LON < 330. in
-coordinate `lon'; the closed interval 0.3 < BAND < 0.5 in coordinate
-`band'; and cross-section closest to 1000. in coordinate `lev'.  Note
-that limits applied to coordinate values are specified with a decimal
-point, and limits applied to dimension indices do not have a decimal
-point *Note Hyperslabs::.
-     ncks -H -d time,5 -d lat,,0.0 -d lon,330.0, -d band,0.3,0.5
-     -d lev,1000.0 in.nc out.nc
-
-   Assume the domain of the monotonically increasing longitude
-coordinate `lon' is 0 < LON < 360.  Here, `lon' is an example of a
-wrapped coordinate.  `ncks' will extract a hyperslab which crosses the
-Greenwich meridian simply by specifying the westernmost longitude as
-MIN and the easternmost longitude as MAX, as follows:
-     ncks -d lon,260.0,45.0 in.nc out.nc
-   For more details *Note Wrapped Coordinates::.
-
-   ---------- Footnotes ----------
-
-   (1) Those familiar with netCDF mechanics might wish to know what is
-happening here: `ncks' does not attempt to redefine the variable in
-OUTPUT-FILE to match its definition in INPUT-FILE, `ncks' merely copies
-the values of the variable and its coordinate dimensions, if any, from
-INPUT-FILE to OUTPUT-FILE.
-
-4.8 `ncpdq' netCDF Permute Dimensions Quickly
-=============================================
-
-SYNTAX
-     ncpdq [-3] [-4] [-6] [-A] [-a [-]DIM[,...]] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-M PCK_MAP] [-O] [-o OUTPUT-FILE] [-P PCK_PLC] [-p PATH]
-     [-R] [-r] [-t THR_NBR] [-U] [-v VAR[,...]] [-X ...] [-x]
-     INPUT-FILE [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncpdq' performs one of two distinct functions, packing or dimension
-permutation, but not both, when invoked.  `ncpdq' is optimized to
-perform these actions in a parallel fashion with a minimum of time and
-memory.  The "pdq" may stand for "Permute Dimensions Quickly", "Pack
-Data Quietly", "Pillory Dan Quayle", or other silly uses.
-
-Packing and Unpacking Functions
--------------------------------
-
-The `ncpdq' packing (and unpacking) algorithms are described in *note
-Methods and functions::, and are also implemented in `ncap2'.  `ncpdq'
-extends the functionality of these algorithms by providing high level
-control of the "packing policy" so that users can consistently pack
-(and unpack) entire files with one command.  The user specifies the
-desired packing policy with the `-P' switch (or its long option
-equivalents, `--pck_plc' and `--pack_policy') and its PCK_PLC argument.
-Four packing policies are currently implemented:
-"Packing (and Re-Packing) Variables [_default_]"
-     Definition: Pack unpacked variables, re-pack packed variables
-     Alternate invocation: `ncpack'
-     PCK_PLC key values: `all_new', `pck_all_new_att'
-"Packing (and not Re-Packing) Variables"
-     Definition: Pack unpacked variables, copy packed variables
-     Alternate invocation: none
-     PCK_PLC key values: `all_xst', `pck_all_xst_att'
-"Re-Packing Variables"
-     Definition: Re-pack packed variables, copy unpacked variables
-     Alternate invocation: none
-     PCK_PLC key values: `xst_new', `pck_xst_new_att'
-"Unpacking"
-     Definition: Unpack packed variables, copy unpacked variables
-     Alternate invocation: `ncunpack'
-     PCK_PLC key values: `upk', `unpack', `pck_upk'
-Equivalent key values are fully interchangeable.  Multiple equivalent
-options are provided to satisfy disparate needs and tastes of NCO users
-working with scripts and from the command line.
-
-   Regardless of the packing policy selected, `ncpdq' no longer (as of
-NCO version 4.0.4 in October, 2010) packs coordinate variables, or the
-special variables, weights, and other grid properties described in
-*note CF Conventions::.  Prior `ncpdq' versions treated coordinate
-variables and grid properties no differently from other variables.
-However, coordinate variables are one-dimensional, so packing saves
-little space on large files, and the resulting files are difficult for
-humans to read.  Concurrently, Gaussian and area weights and other grid
-properties are often used to derive fields in re-inflated (unpacked)
-files, so packing such grid properties causes a considerable loss of
-precision in downstream data processing.  If users express strong
-wishes to pack grid properties, we will implement new packing policies.
-An immediate workaround for those needing to pack grid properties now,
-is to use the `ncap2' packing functions or to rename the grid
-properties prior to calling `ncpdq'.  We welcome your feedback.
-
-   To reduce required memorization of these complex policy switches,
-`ncpdq' may also be invoked via a synonym or with switches that imply a
-particular policy.  `ncpack' is a synonym for `ncpdq' and behaves the
-same in all respects.  Both `ncpdq' and `ncpack' assume a default
-packing policy request of `all_new'.  Hence `ncpack' may be invoked
-without any `-P' switch, unlike `ncpdq'.  Similarly, `ncunpack' is a
-synonym for `ncpdq' except that `ncpack' implicitly assumes a request
-to unpack, i.e., `-P pck_upk'.  Finally, the `ncpdq' `-U' switch (or
-its long option equivalents, `--upk' and `--unpack') requires no
-argument.  It simply requests unpacking.
-
-   Given the menagerie of synonyms, equivalent options, and implied
-options, a short list of some equivalent commands is appropriate.  The
-following commands are equivalent for packing: `ncpdq -P all_new',
-`ncpdq --pck_plc=all_new', and `ncpack'.  The following commands are
-equivalent for unpacking: `ncpdq -P upk', `ncpdq -U', `ncpdq
---pck_plc=unpack', and `ncunpack'.  Equivalent commands for other
-packing policies, e.g., `all_xst', follow by analogy.  Note that
-`ncpdq' synonyms are subject to the same constraints and
-recommendations discussed in the secion on `ncbo' synonyms (*note ncbo
-netCDF Binary Operator::).  That is, symbolic links must exist from the
-synonym to `ncpdq', or else the user must define an `alias'.
-
-   The `ncpdq' packing algorithms must know to which type particular
-types of input variables are to be packed.  The correspondence between
-the input variable type and the output, packed type, is called the
-"packing map".  The user specifies the desired packing map with the
-`-M' switch (or its long option equivalents, `--pck_map' and `--map')
-and its PCK_MAP argument.  Five packing maps are currently implemented:
-"Pack Floating Precisions to `NC_SHORT' [_default_]"
-     Definition: Pack floating precision types to `NC_SHORT'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT'] to `NC_SHORT'
-     Types copied instead of packed:
-     [`NC_INT',`NC_SHORT',`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `flt_sht', `pck_map_flt_sht'
-"Pack Floating Precisions to `NC_BYTE'"
-     Definition: Pack floating precision types to `NC_BYTE'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT'] to `NC_BYTE'
-     Types copied instead of packed:
-     [`NC_INT',`NC_SHORT',`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `flt_byt', `pck_map_flt_byt'
-"Pack Higher Precisions to `NC_SHORT'"
-     Definition: Pack higher precision types to `NC_SHORT'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT',`NC_INT'] to `NC_SHORT'
-     Types copied instead of packed: [`NC_SHORT',`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `hgh_sht', `pck_map_hgh_sht'
-"Pack Higher Precisions to `NC_BYTE'"
-     Definition: Pack higher precision types to `NC_BYTE'
-     Map: Pack [`NC_DOUBLE',`NC_FLOAT',`NC_INT',`NC_SHORT'] to `NC_BYTE'
-     Types copied instead of packed: [`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `hgh_byt', `pck_map_hgh_byt'
-"Pack to Next Lesser Precision"
-     Definition: Pack each type to type of next lesser size
-     Map: Pack `NC_DOUBLE' to `NC_INT'.  Pack [`NC_FLOAT',`NC_INT'] to
-     `NC_SHORT'.  Pack `NC_SHORT' to `NC_BYTE'.
-     Types copied instead of packed: [`NC_CHAR',`NC_BYTE']
-     PCK_MAP key values: `nxt_lsr', `pck_map_nxt_lsr'
-The default `all_new' packing policy with the default `flt_sht' packing
-map reduces the typical `NC_FLOAT'-dominated file size by about 50%.
-`flt_byt' packing reduces an `NC_DOUBLE'-dominated file by about 87%.
-
-   The netCDF packing algorithm (*note Methods and functions::) is
-lossy--once packed, the exact original data cannot be recovered without
-a full backup.  Hence users should be aware of some packing caveats:
-First, the interaction of packing and data equal to the _FILLVALUE is
-complex.  Test the `_FillValue' behavior by performing a pack/unpack
-cycle to ensure data that are missing _stay_ missing and data that are
-not misssing do not join the Air National Guard and go missing.  This
-may lead you to elect a new _FILLVALUE.  Second, `ncpdq' actually
-allows packing into `NC_CHAR' (with, e.g., `flt_chr').  However, the
-intrinsic conversion of `signed char' to higher precision types is
-tricky for values equal to zero, i.e., for `NUL'.  Hence packing to
-`NC_CHAR' is not documented or advertised.  Pack into `NC_BYTE' (with,
-e.g., `flt_byt') instead.
-
-Dimension Permutation
----------------------
-
-`ncpdq' re-shapes variables in INPUT-FILE by re-ordering and/or
-reversing dimensions specified in the dimension list.  The dimension
-list is a whitespace-free, comma separated list of dimension names,
-optionally prefixed by negative signs, that follows the `-a' (or long
-options `--arrange', `--permute', `--re-order', or `--rdr') switch.  To
-re-order variables by a subset of their dimensions, specify these
-dimensions in a comma-separated list following `-a', e.g., `-a lon,lat'.
-To reverse a dimension, prefix its name with a negative sign in the
-dimension list, e.g., `-a -lat'.  Re-ordering and reversal may be
-performed simultaneously, e.g., `-a lon,-lat,time,-lev'.
-
-   Users may specify any permutation of dimensions, including
-permutations which change the record dimension identity.  The record
-dimension is re-ordered like any other dimension.  This unique `ncpdq'
-capability makes it possible to concatenate files along any dimension.
-See *note Concatenation:: for a detailed example.  The record dimension
-is always the most slowly varying dimension in a record variable (*note
-C and Fortran Index Conventions::).  The specified re-ordering fails if
-it requires creating more than one record dimension amongst all the
-output variables (1).
-
-   Two special cases of dimension re-ordering and reversal deserve
-special mention.  First, it may be desirable to completely reverse the
-storage order of a variable.  To do this, include all the variable's
-dimensions in the dimension re-order list in their original order, and
-prefix each dimension name with the negative sign.  Second, it may
-useful to transpose a variable's storage order, e.g., from C to Fortran
-data storage order (*note C and Fortran Index Conventions::).  To do
-this, include all the variable's dimensions in the dimension re-order
-list in reversed order.  Explicit examples of these two techniques
-appear below.
-
-EXAMPLES
-
-   Pack and unpack all variables in file `in.nc' and store the results
-in `out.nc':
-     ncpdq in.nc out.nc # Same as ncpack in.nc out.nc
-     ncpdq -P all_new -M flt_sht in.nc out.nc # Defaults
-     ncpdq -P all_xst in.nc out.nc
-     ncpdq -P upk in.nc out.nc # Same as ncunpack in.nc out.nc
-     ncpdq -U in.nc out.nc # Same as ncunpack in.nc out.nc
-   The first two commands pack any unpacked variable in the input file.
-They also unpack and then re-pack every packed variable.  The third
-command only packs unpacked variables in the input file.  If a variable
-is already packed, the third command copies it unchanged to the output
-file.  The fourth and fifth commands unpack any packed variables.  If a
-variable is not packed, the third command copies it unchanged.
-
-   The previous examples all utilized the default packing map.  Suppose
-you wish to archive all data that are currently unpacked into a form
-which only preserves 256 distinct values.  Then you could specify the
-packing map PCK_MAP as `hgh_byt' and the packing policy PCK_PLC as
-`all_xst':
-     ncpdq -P all_xst -M hgh_byt in.nc out.nc
-   Many different packing maps may be used to construct a given file by
-performing the packing on subsets of variables (e.g., with `-v') and
-using the append feature with `-A' (*note Appending Variables::).
-
-   Re-order file `in.nc' so that the dimension `lon' always precedes
-the dimension `lat' and store the results in `out.nc':
-     ncpdq -a lon,lat in.nc out.nc
-     ncpdq -v three_dmn_var -a lon,lat in.nc out.nc
-   The first command re-orders every variable in the input file.  The
-second command extracts and re-orders only the variable `three_dmn_var'.
-
-   Suppose the dimension `lat' represents latitude and monotonically
-increases increases from south to north.  Reversing the `lat' dimension
-means re-ordering the data so that latitude values decrease
-monotonically from north to south.  Accomplish this with
-     % ncpdq -a -lat in.nc out.nc
-     % ncks -C -v lat in.nc
-     lat[0]=-90
-     lat[1]=90
-     % ncks -C -v lat out.nc
-     lat[0]=90
-     lat[1]=-90
-   This operation reversed the latitude dimension of all variables.
-Whitespace immediately preceding the negative sign that specifies
-dimension reversal may be dangerous.  Quotes and long options can help
-protect negative signs that should indicate dimension reversal from
-being interpreted by the shell as dashes that indicate new command line
-switches.
-     ncpdq -a -lat in.nc out.nc # Dangerous? Whitespace before "-lat"
-     ncpdq -a '-lat' in.nc out.nc # OK. Quotes protect "-" in "-lat"
-     ncpdq -a lon,-lat in.nc out.nc # OK. No whitespace before "-"
-     ncpdq --rdr=-lat in.nc out.nc # Preferred. Uses "=" not whitespace
-
-   To create the mathematical transpose of a variable, place all its
-dimensions in the dimension re-order list in reversed order.  This
-example creates the transpose of `three_dmn_var':
-     % ncpdq -a lon,lev,lat -v three_dmn_var in.nc out.nc
-     % ncks -C -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-     lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-     lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-     ...
-     lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-     lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-     lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     % ncks -C -v three_dmn_var out.nc
-     lon[0]=0 lev[0]=100 lat[0]=-90 three_dmn_var[0]=0
-     lon[0]=0 lev[0]=100 lat[1]=90 three_dmn_var[1]=12
-     lon[0]=0 lev[1]=500 lat[0]=-90 three_dmn_var[2]=4
-     ...
-     lon[3]=270 lev[1]=500 lat[1]=90 three_dmn_var[21]=19
-     lon[3]=270 lev[2]=1000 lat[0]=-90 three_dmn_var[22]=11
-     lon[3]=270 lev[2]=1000 lat[1]=90 three_dmn_var[23]=23
-
-   To completely reverse the storage order of a variable, include all
-its dimensions in the re-order list, each prefixed by a negative sign.
-This example reverses the storage order of `three_dmn_var':
-     % ncpdq -a -lat,-lev,-lon -v three_dmn_var in.nc out.nc
-     % ncks -C -v three_dmn_var in.nc
-     lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-     lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-     lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-     ...
-     lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-     lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-     lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-     % ncks -C -v three_dmn_var out.nc
-     lat[0]=90 lev[0]=1000 lon[0]=270 three_dmn_var[0]=23
-     lat[0]=90 lev[0]=1000 lon[1]=180 three_dmn_var[1]=22
-     lat[0]=90 lev[0]=1000 lon[2]=90 three_dmn_var[2]=21
-     ...
-     lat[1]=-90 lev[2]=100 lon[1]=180 three_dmn_var[21]=2
-     lat[1]=-90 lev[2]=100 lon[2]=90 three_dmn_var[22]=1
-     lat[1]=-90 lev[2]=100 lon[3]=0 three_dmn_var[23]=0
-
-   Creating a record dimension named, e.g., `time', in a file which has
-no existing record dimension is simple with `ncecat':
-     ncecat -O -u time in.nc out.nc # Create degenerate record dimension named "time"
-
-   Now consider a file with all dimensions, including `time', fixed
-(non-record).  Suppose the user wishes to convert `time' from a fixed
-dimension to a record dimension.  This may be useful, for example, when
-the user wishes to append additional time slices to the data.  As of
-NCO version 4.0.1 (April, 2010) the preferred method for doing this is
-with `ncks':
-     ncks -O --mk_rec_dmn time in.nc out.nc # Change "time" to record dimension
-
-   Prior to 4.0.1, the procedure to change an existing fixed dimension
-into a record dimension required three separate commands, `ncecat'
-followed by `ncpdq', and then `ncwa'.  It is still instructive to
-present the original procedure, as it shows how multiple operators can
-achieve the same ends by different means: 
-     ncecat -O in.nc out.nc # Add degenerate record dimension named "record"
-     ncpdq -O -a time,record out.nc out.nc # Switch "record" and "time"
-     ncwa -O -a record out.nc out.nc # Remove (degenerate) "record"
-   The first step creates a degenerate (size equals one) record
-dimension named (by default) `record'.  The second step swaps the
-ordering of the dimensions named `time' and `record'.  Since `time' now
-occupies the position of the first (least rapidly varying) dimension,
-it becomes the record dimension.  The dimension named `record' is no
-longer a record dimension.  The third step averages over this
-degenerate `record' dimension.  Averaging over a degenerate dimension
-does not alter the data.  The ordering of other dimensions in the file
-(`lat', `lon', etc.) is immaterial to this procedure.  See *note ncecat
-netCDF Ensemble Concatenator:: and *note ncks netCDF Kitchen Sink:: for
-other methods of changing variable dimensionality, including the record
-dimension.
-
-   ---------- Footnotes ----------
-
-   (1) This limitation, imposed by the netCDF storage layer, may be
-relaxed in the future with netCDF4.
-
-4.9 `ncra' netCDF Record Averager
-=================================
-
-SYNTAX
-     ncra [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x] [-y OP_TYP]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncra' averages record variables across an arbitrary number of
-INPUT-FILES.  The record dimension is, by default, retained as a
-degenerate (size 1) dimension in the output variables.  *Note Averaging
-vs. Concatenating::, for a description of the distinctions between the
-various averagers and concatenators.  As a multi-file operator, `ncra'
-will read the list of INPUT-FILES from `stdin' if they are not specified
-as positional arguments on the command line (*note Large Numbers of
-Files::).
-
-   Input files may vary in size, but each must have a record dimension.
-The record coordinate, if any, should be monotonic (or else non-fatal
-warnings may be generated).  Hyperslabs of the record dimension which
-include more than one file work correctly.  `ncra' supports the STRIDE
-argument to the `-d' hyperslab option (*note Hyperslabs::) for the
-record dimension only, STRIDE is not supported for non-record
-dimensions.
-
-   `ncra' weights each record (e.g., time slice) in the INPUT-FILES
-equally.  `ncra' does not attempt to see if, say, the `time' coordinate
-is irregularly spaced and thus would require a weighted average in
-order to be a true time average.  `ncra' _always averages_ coordinate
-variables regardless of the arithmetic operation type performed on the
-non-coordinate variables.  (*note Operation Types::).
-
-EXAMPLES
-
-   Average files `85.nc', `86.nc', ... `89.nc' along the record
-dimension, and store the results in `8589.nc': 
-     ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncra 8[56789].nc 8589.nc
-     ncra -n 5,2,1 85.nc 8589.nc
-   These three methods produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.
-
-   Assume the files `85.nc', `86.nc', ... `89.nc' each contain a record
-coordinate TIME of length 12 defined such that the third record in
-`86.nc' contains data from March 1986, etc.  NCO knows how to hyperslab
-the record dimension across files.  Thus, to average data from
-December, 1985 through February, 1986:
-     ncra -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-     ncra -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc
-   The file `87.nc' is superfluous, but does not cause an error.  The
-`-F' turns on the Fortran (1-based) indexing convention.  The following
-uses the STRIDE option to average all the March temperature data from
-multiple input files into a single output file
-     ncra -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc
-   *Note Stride::, for a description of the STRIDE argument.
-
-   Assume the TIME coordinate is incrementally numbered such that
-January, 1985 = 1 and December, 1989 = 60.  Assuming `??' only expands
-to the five desired files, the following averages June, 1985-June, 1989:
-     ncra -d time,6.,54. ??.nc 8506_8906.nc
-
-4.10 `ncrcat' netCDF Record Concatenator
-========================================
-
-SYNTAX
-     ncrcat [-3] [-4] [-6] [-A] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-L DFL_LVL] [-l PATH]
-     [-n LOOP] [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-t THR_NBR] [-v VAR[,...]] [-X ...] [-x]
-     [INPUT-FILES] [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncrcat' concatenates record variables across an arbitrary number of
-INPUT-FILES.  The final record dimension is by default the sum of the
-lengths of the record dimensions in the input files.  *Note Averaging
-vs. Concatenating::, for a description of the distinctions between the
-various averagers and concatenators.  As a multi-file operator,
-`ncrcat' will read the list of INPUT-FILES from `stdin' if they are not
-specified as positional arguments on the command line (*note Large
-Numbers of Files::).
-
-   Input files may vary in size, but each must have a record dimension.
-The record coordinate, if any, should be monotonic (or else non-fatal
-warnings may be generated).  Hyperslabs along the record dimension that
-span more than one file are handled correctly.  `ncra' supports the
-STRIDE argument to the `-d' hyperslab option for the record dimension
-only, STRIDE is not supported for non-record dimensions.
-
-   Concatenating a variable packed with different scales multiple
-datasets is beyond the capabilities of `ncrcat' (and `ncecat', the
-other concatenator (*note Concatenation::).  `ncrcat' does not unpack
-data, it simply _copies_ the data from the INPUT-FILES, and the
-metadata from the _first_ INPUT-FILE, to the OUTPUT-FILE.  This means
-that data compressed with a packing convention must use the identical
-packing parameters (e.g., `scale_factor' and `add_offset') for a given
-variable across _all_ input files.  Otherwise the concatenated dataset
-will not unpack correctly.  The workaround for cases where the packing
-parameters differ across INPUT-FILES requires three steps: First,
-unpack the data using `ncpdq'.  Second, concatenate the unpacked data
-using `ncrcat', Third, re-pack the result with `ncpdq'.
-
-   `ncrcat' applies special rules to ARM convention time fields (e.g.,
-`time_offset').  See *note ARM Conventions:: for a complete description.
-
-EXAMPLES
-
-   Concatenate files `85.nc', `86.nc', ... `89.nc' along the record
-dimension, and store the results in `8589.nc': 
-     ncrcat 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-     ncrcat 8[56789].nc 8589.nc
-     ncrcat -n 5,2,1 85.nc 8589.nc
-   These three methods produce identical answers.  *Note Specifying
-Input Files::, for an explanation of the distinctions between these
-methods.
-
-   Assume the files `85.nc', `86.nc', ... `89.nc' each contain a record
-coordinate TIME of length 12 defined such that the third record in
-`86.nc' contains data from March 1986, etc.  NCO knows how to hyperslab
-the record dimension across files.  Thus, to concatenate data from
-December, 1985-February, 1986:
-     ncrcat -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-     ncrcat -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc
-   The file `87.nc' is superfluous, but does not cause an error.  When
-`ncra' and `ncrcat' encounter a file which does contain any records
-that meet the specified hyperslab criteria, they disregard the file and
-proceed to the next file without failing.  The `-F' turns on the
-Fortran (1-based) indexing convention.  
-
-   The following uses the STRIDE option to concatenate all the March
-temperature data from multiple input files into a single output file
-     ncrcat -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc
-   *Note Stride::, for a description of the STRIDE argument.
-
-   Assume the TIME coordinate is incrementally numbered such that
-January, 1985 = 1 and December, 1989 = 60.  Assuming `??' only expands
-to the five desired files, the following concatenates June, 1985-June,
-1989:
-     ncrcat -d time,6.,54. ??.nc 8506_8906.nc
-
-4.11 `ncrename' netCDF Renamer
-==============================
-
-SYNTAX
-     ncrename [-a OLD_NAME,NEW_NAME] [-a ...] [-D DBG]
-     [-d OLD_NAME,NEW_NAME] [-d ...] [-h] [--hdr_pad NBR] [-l PATH]
-     [-O] [-o OUTPUT-FILE] [-p PATH] [-R] [-r]
-     [-v OLD_NAME,NEW_NAME] [-v ...]
-     INPUT-FILE [[OUTPUT-FILE]]
-
-DESCRIPTION
-
-   `ncrename' renames dimensions, variables, and attributes in a netCDF
-file.  Each object that has a name in the list of old names is renamed
-using the corresponding name in the list of new names.  All the new
-names must be unique.  Every old name must exist in the input file,
-unless the old name is preceded by the period (or "dot") character `.'.
-The validity of OLD_NAME is not checked prior to the renaming.  Thus,
-if OLD_NAME is specified without the the `.' prefix and is not present
-in INPUT-FILE, `ncrename' will abort.  The NEW_NAME should never be
-prefixed by a `.' (or else the period will be included as part of the
-new name).  The OPTIONS and EXAMPLES show how to select specific
-variables whose attributes are to be renamed.
-
-   `ncrename' is the exception to the normal rules that the user will
-be interactively prompted before an existing file is changed, and that a
-temporary copy of an output file is constructed during the operation.
-If only INPUT-FILE is specified, then `ncrename' will change the names
-of the INPUT-FILE in place without prompting and without creating a
-temporary copy of `input-file'.  This is because the renaming operation
-is considered reversible if the user makes a mistake.  The NEW_NAME can
-easily be changed back to OLD_NAME by using `ncrename' one more time.
-
-   Note that renaming a dimension to the name of a dependent variable
-can be used to invert the relationship between an independent coordinate
-variable and a dependent variable.  In this case, the named dependent
-variable must be one-dimensional and should have no missing values.
-Such a variable will become a coordinate variable.
-
-   According to the `netCDF User's Guide', renaming properties in
-netCDF files does not incur the penalty of recopying the entire file
-when the NEW_NAME is shorter than the OLD_NAME.
-
-OPTIONS
-
-`-a OLD_NAME,NEW_NAME'
-     Attribute renaming.  The old and new names of the attribute are
-     specified with `-a' (or `--attribute') by the associated OLD_NAME
-     and NEW_NAME values.  Global attributes are treated no differently
-     than variable attributes.  This option may be specified more than
-     once.  As mentioned above, all occurrences of the attribute of a
-     given name will be renamed unless the `.' form is used, with one
-     exception.  To change the attribute name for a particular
-     variable, specify the OLD_NAME in the format
-     OLD_VAR_NAME at OLD_ATT_NAME.  The `@' symbol delimits the variable
-     and attribute names.  If the attribute is uniquely named (no other
-     variables contain the attribute) then the
-     OLD_VAR_NAME at OLD_ATT_NAME syntax is redundant.  The
-     VAR_NAME at ATT_NAME syntax is accepted, but not required, for the
-     NEW_NAME.
-
-`-d OLD_NAME,NEW_NAME'
-     Dimension renaming.  The old and new names of the dimension are
-     specified with `-d' (or `--dmn', `--dimension') by the associated
-     OLD_NAME and NEW_NAME values.  This option may be specified more
-     than once.
-
-`-v OLD_NAME,NEW_NAME'
-     Variable renaming.  The old and new names of the variable are
-     specified with `-v' (or `--variable') by the associated OLD_NAME
-     and NEW_NAME values.  This option may be specified more than once.
-
-EXAMPLES
-
-   Rename the variable `p' to `pressure' and `t' to `temperature' in
-netCDF `in.nc'.  In this case `p' must exist in the input file (or
-`ncrename' will abort), but the presence of `t' is optional:
-     ncrename -v p,pressure -v .t,temperature in.nc
-
-   Rename the attribute `long_name' to `largo_nombre' in the variable
-`u', and no other variables in netCDF `in.nc'.
-     ncrename -a u:long_name,largo_nombre in.nc
-
-   `ncrename' does not automatically attach dimensions to variables of
-the same name.  If you want to rename a coordinate variable so that it
-remains a coordinate variable, you must separately rename both the
-dimension and the variable:
-     ncrename -d lon,longitude -v lon,longitude in.nc
-
-   Create netCDF `out.nc' identical to `in.nc' except the attribute
-`_FillValue' is changed to `missing_value', the attribute `units' is
-changed to `CGS_units' (but only in those variables which possess it),
-the attribute `hieght' is changed to `height' in the variable `tpt',
-and in the variable `prs_sfc', if it exists.
-     ncrename -a _FillValue,missing_value -a .units,CGS_units \
-       -a tpt at hieght,height -a prs_sfc at .hieght,height in.nc out.nc
-   The presence and absence of the `.' and `@' features cause this
-command to execute successfully only if a number of conditions are met.
-All variables _must_ have a `_FillValue' attribute _and_ `_FillValue'
-must also be a global attribute.  The `units' attribute, on the other
-hand, will be renamed to `CGS_units' wherever it is found but need not
-be present in the file at all (either as a global or a variable
-attribute).  The variable `tpt' must contain the `hieght' attribute.
-The variable `prs_sfc' need not exist, and need not contain the
-`hieght' attribute.
-
-4.12 `ncwa' netCDF Weighted Averager
-====================================
-
-SYNTAX
-     ncwa [-3] [-4] [-6] [-A] [-a DIM[,...]] [-B MASK_COND] [-b] [-C] [-c]
-     [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-     [-D DBG] [-d DIM,[MIN][,[MAX][,[STRIDE]]] [-F] [-h] [-I] [-L DFL_LVL] [-l PATH]
-     [-M MASK_VAL] [-m MASK_VAR] [-N] [-O]
-     [-o OUTPUT-FILE] [-p PATH] [-R] [-r] [-T MASK_COMP]
-     [-t THR_NBR] [-v VAR[,...]] [-w WEIGHT] [-X ...] [-x] [-y OP_TYP]
-     INPUT-FILE [OUTPUT-FILE]
-
-DESCRIPTION
-
-   `ncwa' averages variables in a single file over arbitrary
-dimensions, with options to specify weights, masks, and normalization.
-*Note Averaging vs. Concatenating::, for a description of the
-distinctions between the various averagers and concatenators.  The
-default behavior of `ncwa' is to arithmetically average every numerical
-variable over all dimensions and to produce a scalar result for each.
-
-   Averaged dimensions are, by default, eliminated as dimensions.
-Their corresponding coordinates, if any, are output as scalars.  The
-`-b' switch (and its long option equivalents `--rdd' and
-`--retain-degenerate-dimensions') causes `ncwa' to retain averaged
-dimensions as degenerate (size 1) dimensions.  This maintains the
-association between a dimension (or coordinate) and variables after
-averaging and simplifies, for instance, later concatenation along the
-degenerate dimension.
-
-   To average variables over only a subset of their dimensions, specify
-these dimensions in a comma-separated list following `-a', e.g., `-a
-time,lat,lon'.  As with all arithmetic operators, the operation may be
-restricted to an arbitrary hypserslab by employing the `-d' option
-(*note Hyperslabs::).  `ncwa' also handles values matching the
-variable's `_FillValue' attribute correctly.  Moreover, `ncwa'
-understands how to manipulate user-specified weights, masks, and
-normalization options.  With these options, `ncwa' can compute
-sophisticated averages (and integrals) from the command line.
-
-   MASK_VAR and WEIGHT, if specified, are broadcast to conform to the
-variables being averaged.  The rank of variables is reduced by the
-number of dimensions which they are averaged over.  Thus arrays which
-are one dimensional in the INPUT-FILE and are averaged by `ncwa' appear
-in the OUTPUT-FILE as scalars.  This allows the user to infer which
-dimensions may have been averaged.  Note that that it is impossible for
-`ncwa' to make make a WEIGHT or MASK_VAR of rank W conform to a VAR of
-rank V if W > V.  This situation often arises when coordinate variables
-(which, by definition, are one dimensional) are weighted and averaged.
-`ncwa' assumes you know this is impossible and so `ncwa' does not
-attempt to broadcast WEIGHT or MASK_VAR to conform to VAR in this case,
-nor does `ncwa' print a warning message telling you this, because it is
-so common.  Specifying DBG > 2 does cause `ncwa' to emit warnings in
-these situations, however.
-
-   Non-coordinate variables are always masked and weighted if specified.
-Coordinate variables, however, may be treated specially.  By default,
-an averaged coordinate variable, e.g., `latitude', appears in
-OUTPUT-FILE averaged the same way as any other variable containing an
-averaged dimension.  In other words, by default `ncwa' weights and masks
-coordinate variables like all other variables.  This design decision
-was intended to be helpful but for some applications it may be
-preferable not to weight or mask coordinate variables just like all
-other variables.  Consider the following arguments to `ncwa': `-a
-latitude -w lat_wgt -d latitude,0.,90.' where `lat_wgt' is a weight in
-the `latitude' dimension.  Since, by default `ncwa' weights coordinate
-variables, the value of `latitude' in the OUTPUT-FILE depends on the
-weights in LAT_WGT and is not likely to be 45.0, the midpoint latitude
-of the hyperslab.  Option `-I' overrides this default behavior and
-causes `ncwa' not to weight or mask coordinate variables (1).  In the
-above case, this causes the value of `latitude' in the OUTPUT-FILE to
-be 45.0, an appealing result.  Thus, `-I' specifies simple arithmetic
-averages for the coordinate variables.  In the case of latitude, `-I'
-specifies that you prefer to archive the arithmetic mean latitude of
-the averaged hyperslabs rather than the area-weighted mean latitude.
-(2).
-
-   As explained in *Note Operation Types::, `ncwa' _always averages_
-coordinate variables regardless of the arithmetic operation type
-performed on the non-coordinate variables.  This is independent of the
-setting of the `-I' option.  The mathematical definition of operations
-involving rank reduction is given above (*note Operation Types::).
-
-   ---------- Footnotes ----------
-
-   (1) The default behavior of (`-I') changed on 1998/12/01--before
-this date the default was not to weight or mask coordinate variables.
-
-   (2) If `lat_wgt' contains Gaussian weights then the value of
-`latitude' in the OUTPUT-FILE will be the area-weighted centroid of the
-hyperslab.  For the example given, this is about 30 degrees.
-
-4.12.1 Mask condition
----------------------
-
-The mask condition has the syntax MASK_VAR MASK_COMP MASK_VAL.  The
-preferred method to specify the mask condition is in one string with
-the `-B' or `--mask_condition' switches.  The older method is to use
-the three switches `-m', `-T', and `-M' to specify the MASK_VAR,
-MASK_COMP, and MASK_VAL, respectively.  (1).  The MASK_CONDITION string
-is automatically parsed into its three constituents MASK_VAR,
-MASK_COMP, and MASK_VAL.
-
-   Here MASK_VAR is the name of the masking variable (specified with
-`-m', `--mask-variable', `--mask_variable', `--msk_nm', or `--msk_var').
-The truth MASK_COMP argument (specified with `-T', `--mask_comparator',
-`--msk_cmp_typ', or `--op_rlt' may be any one of the six arithmetic
-comparators: `eq', `ne', `gt', `lt', `ge', `le'.
-
-   These are the Fortran-style character abbreviations for the logical
-comparisons ==, !=, >, <, >=, <=.
-
-   The mask comparator defaults to `eq' (equality).  The MASK_VAL
-argument to `-M' (or `--mask-value', or `--msk_val') is the right hand
-side of the "mask condition".  Thus for the I'th element of the
-hyperslab to be averaged, the mask condition is
-
-   mask(i) MASK_COMP MASK_VAL.
-
-   ---------- Footnotes ----------
-
-   (1) The three switches `-m', `-T', and `-M' are maintained for
-backward compatibility and may be deprecated in the future.  It is
-safest to write scripts using `--mask_condition'.
-
-4.12.2 Normalization and Integration
-------------------------------------
-
-`ncwa' has one switch which controls the normalization of the averages
-appearing in the OUTPUT-FILE.  Short option `-N' (or long options
-`--nmr' or `--numerator') prevents `ncwa' from dividing the weighted
-sum of the variable (the numerator in the averaging expression) by the
-weighted sum of the weights (the denominator in the averaging
-expression).  Thus `-N' tells `ncwa' to return just the numerator of the
-arithmetic expression defining the operation (*note Operation Types::).
-
-   With this normalization option, `ncwa' can integrate variables.
-Averages are first computed as sums, and then normalized to obtain the
-average.  The original sum (i.e., the numerator of the expression in
-*note Operation Types::) is output if default normalization is turned
-off (with `-N').  This sum is the integral (not the average) over the
-specified (with `-a', or all, if none are specified) dimensions.  The
-weighting variable, if specified (with `-w'), plays the role of the
-differential increment and thus permits more sophisticated integrals
-(i.e., weighted sums) to be output.  For example, consider the variable
-`lev' where LEV = [100,500,1000] weighted by the weight `lev_wgt' where
-LEV_WGT = [10,2,1].  The vertical integral of `lev', weighted by
-`lev_wgt', is the dot product of LEV and LEV_WGT.  That this is
-is 3000.0 can be seen by inspection and verified with the integration
-command
-     ncwa -N -a lev -v lev -w lev_wgt in.nc foo.nc;ncks foo.nc
-
-EXAMPLES
-
-   Given file `85_0112.nc':
-     netcdf 85_0112 {
-     dimensions:
-             lat = 64 ;
-             lev = 18 ;
-             lon = 128 ;
-             time = UNLIMITED ; // (12 currently)
-     variables:
-             float lat(lat) ;
-             float lev(lev) ;
-             float lon(lon) ;
-             float time(time) ;
-             float scalar_var ;
-             float three_dmn_var(lat, lev, lon) ;
-             float two_dmn_var(lat, lev) ;
-             float mask(lat, lon) ;
-             float gw(lat) ;
-     }
-
-   Average all variables in `in.nc' over all dimensions and store
-results in `out.nc':
-     ncwa in.nc out.nc
-   All variables in `in.nc' are reduced to scalars in `out.nc' since
-`ncwa' averages over all dimensions unless otherwise specified (with
-`-a').
-
-   Store the zonal (longitudinal) mean of `in.nc' in `out.nc':
-     ncwa -a lon in.nc out1.nc
-     ncwa -a lon -b in.nc out2.nc
-   The first command turns `lon' into a scalar and the second retains
-`lon' as a degenerate dimension in all variables.
-     % ncks -C -H -v lon out1.nc
-     lon = 135
-     % ncks -C -H -v lon out2.nc
-     lon[0] = 135
-   In either case the tally is simply the size of `lon', i.e., 180 for
-the `85_0112.nc' file described by the sample header above.
-
-   Compute the meridional (latitudinal) mean, with values weighted by
-the corresponding element of GW (1):
-     ncwa -w gw -a lat in.nc out.nc
-   Here the tally is simply the size of `lat', or 64.  The sum of the
-Gaussian weights is 2.0.
-
-   Compute the area mean over the tropical Pacific:
-     ncwa -w gw -a lat,lon -d lat,-20.,20. -d lon,120.,270. in.nc out.nc
-   Here the tally is
-
-   64 times 128 = 8192.
-
-   Compute the area-mean over the globe using only points for which
-
-   ORO < 0.5
-
-   (2):
-     ncwa -B 'ORO < 0.5'      -w gw -a lat,lon in.nc out.nc
-     ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon in.nc out.nc
-   It is considerably simpler to specify the complete MASK_COND with
-the single string argument to `-B' than with the three separate
-switches `-m', `-T', and `-M'.  If in doubt, enclose the MASK_COND
-within quotes since some of the comparators have special meanings to
-the shell.
-
-   Assuming 70% of the gridpoints are maritime, then here the tally is
-
-   0.70 times 8192 = 5734.
-
-   Compute the global annual mean over the maritime tropical Pacific:
-     ncwa -B 'ORO < 0.5'      -w gw -a lat,lon,time \
-       -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-     ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon,time \
-       -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-   Further examples will use the one-switch specification of MASK_COND.
-
-   Determine the total area of the maritime tropical Pacific, assuming
-the variable AREA contains the area of each gridcell
-     ncwa -N -v area -B 'ORO < 0.5' -a lat,lon \
-       -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-   Weighting AREA (e.g., by GW) is not appropriate because AREA is
-_already_ area-weighted by definition.  Thus the `-N' switch, or,
-equivalently, the `-y ttl' switch, correctly integrate the cell areas
-into a total regional area.
-
-   Mask a file to contain _FILLVALUE everywhere except where THR_MIN <=
-MSK_VAR <= THR_MAX:
-     # Set masking variable and its scalar thresholds
-     export msk_var='three_dmn_var_dbl' # Masking variable
-     export thr_max='20' # Maximum allowed value
-     export thr_min='10' # Minimum allowed value
-     ncecat -O in.nc out.nc # Wrap out.nc in degenerate "record" dimension
-     ncwa -O -a record -B "${msk_var} <= ${thr_max}" out.nc out.nc
-     ncecat -O out.nc out.nc # Wrap out.nc in degenerate "record" dimension
-     ncwa -O -a record -B "${msk_var} >= ${thr_min}" out.nc out.nc
-   After the first use of `ncwa', `out.nc' contains _FILLVALUE where
-`${msk_var} >= ${thr_max}'.  The process is then repeated on the
-remaining data to filter out points where `${msk_var} <= ${thr_min}'.
-The resulting `out.nc' contains valid data only where THR_MIN <=
-MSK_VAR <= THR_MAX.
-
-   ---------- Footnotes ----------
-
-   (1) `gw' stands for "Gaussian weight" in many climate models.
-
-   (2) `ORO' stands for "Orography" in some climate models and in those
-models ORO < 0.5 selects ocean gridpoints.
-
-5 Contributing
-**************
-
-We welcome contributions from anyone.  The project homepage at
-`https://sf.net/projects/nco' contains more information on how to
-contribute.
-
-   Financial contributions to NCO development may be made through
-PayPal
-(https://www.paypal.com/xclick/business=zender%40uci.edu&item_name=NCO+development&item_number=nco_dnt_dvl&no_note=1&tax=0&currency_code=USD).
-NCO has been shared for over 10 years yet only two users have
-contributed any money to the developers (1).  So you could be the third!
-
-   ---------- Footnotes ----------
-
-   (1) Happy users have sent me a few gifts, though.  This includes a
-box of imported chocolate.  Mmm.  Appreciation and gifts are definitely
-better than money.  Naturally, I'm too lazy to split and send gifts to
-the other developers.  However, unlike some NCO developers, I have a
-steady "real job".  My intent is to split monetary donations among the
-active developers and to send them their shares via PayPal.
-
-5.1 Contributors
-================
-
-The primary contributors to NCO development have been:
-Charlie Zender
-     Concept, design and implementation of operators from 1995-2000.
-     Since then autotools, bug-squashing, chunking, documentation,
-     packing, NCO library redesign, `ncap2' features, `ncbo', `ncpdq',
-     SMP threading and MPI parallelization, netCDF4 integration,
-     external funding, project management, science research, releases.  
-
-Henry Butowsky
-     Non-linear operations and `min()', `max()', `total()' support in
-     `ncra' and `ncwa'.  Type conversion for arithmetic.  Migration to
-     netCDF3 API.  `ncap' parser, lexer, and I/O.  Multislabbing
-     algorithm.  Variable wildcarding.  Various hacks.  `ncap2'
-     language.  
-
-Rorik Peterson
-     Original autotool build support.  Long command-line options.
-     Original UDUnits support.  Debianization.  Numerous bug-fixes.  
-
-Daniel Wang
-     Script Workflow Analysis for MultiProcessing (SWAMP).  RPM support.  
-
-Harry Mangalam
-     Benchmarking.  OPeNDAP configuration.  
-
-Brian Mays
-     Original packaging for Debian GNU/Linux, `nroff' man pages.  
-
-George Shapovalov
-     Packaging for Gentoo GNU/Linux.  
-
-Bill Kocik
-     Memory management.  
-
-Len Makin
-     NEC SX architecture support.  
-
-Jim Edwards
-     AIX architecture support.  
-
-Juliana Rew
-     Compatibility with large PIDs.  
-
-Karen Schuchardt
-     Auxiliary coordinate support.  
-
-Gayathri Venkitachalam
-     MPI implementation.  
-
-Scott Capps
-     Large work-load testing 
-
-Martin Dix, Mark Flanner, Keith Lindsay, Mike Page, Martin Schmidt, Michael Schulz, Remik Ziemlinski
-     Excellent bug reports and feature requests.  
-
-Markus Liebig
-     Proof-read the ncap documentation 
-
-Daniel Baumann, Barry deFreese, Francesco Lovergine, Matej Vela, Luk Claes
-     Debian packaging 
-
-Patrice Dumas, Ed Hill, Orion Poplawski
-     RedHat packaging 
-
-George Shapavalov, Patrick Kursawe
-     Gentoo packaging 
-
-Filipe Fernandes
-     OpenSuse packaging 
-
-Takeshi Enomoto, Alexander Hansen
-     Mac OS packaging 
-
-Eric Blake
-     Autoconf/M4 help 
-
-Gavin Burris, Kyle Wilcox
-     RHEL and CentOS build scripts and bug reports.
-   Please let me know if your name was omitted!
-
-5.2 Proposals for Institutional Funding
-=======================================
-
-NSF has funded a project (http://nco.sf.net#prp_sei) to improve
-Distributed Data Reduction & Analysis (DDRA) by evolving NCO into a
-suite of Scientific Data Operators called SDO.  The two main components
-of this project are NCO parallelism (OpenMP, MPI) and Server-Side DDRA
-(SSDDRA) implemented through extensions to OPeNDAP and netCDF4.  This
-project will dramatically reduce bandwidth usage for NCO DDRA.
-
-   With this first NCO proposal funded, the content of the next NCO
-proposal is clear.  We are interested in obtaining NASA support for
-HDF-specific enhancements to NCO.  We plan to submit a proposal to the
-next suitable NASA NRA or NSF opportunity.
-
-   We are considering a lot of interesting ideas for still more
-proposals.  Please contact us if you wish to be involved with any future
-NCO-related proposals.  Comments on the proposals and letters of
-support are also very welcome.
-
-6 CCSM Example
-**************
-
-This chapter illustrates how to use NCO to process and analyze the
-results of a CCSM climate simulation.
-     ************************************************************************
-     Task 0: Finding input files
-     ************************************************************************
-     The CCSM model outputs files to a local directory like:
-
-     /ptmp/zender/archive/T42x1_40
-
-     Each component model has its own subdirectory, e.g.,
-
-     /ptmp/zender/archive/T42x1_40/atm
-     /ptmp/zender/archive/T42x1_40/cpl
-     /ptmp/zender/archive/T42x1_40/ice
-     /ptmp/zender/archive/T42x1_40/lnd
-     /ptmp/zender/archive/T42x1_40/ocn
-
-     within which model output is tagged with the particular model name
-
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-01.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-02.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-03.nc
-     ...
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-12.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-01.nc
-     /ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-02.nc
-     ...
-
-     or
-
-     /ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-01.nc
-     /ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-02.nc
-     /ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-03.nc
-     ...
-
-     ************************************************************************
-     Task 1: Regional processing
-     ************************************************************************
-     The first task in data processing is often creating seasonal cycles.
-     Imagine a 100-year simulation with its 1200 monthly mean files.
-     Our goal is to create a single file containing 12 months of data.
-     Each month in the output file is the mean of 100 input files.
-
-     Normally, we store the "reduced" data in a smaller, local directory.
-
-     caseid='T42x1_40'
-     #drc_in="${DATA}/archive/${caseid}/atm"
-     drc_in="${DATA}/${caseid}"
-     drc_out="${DATA}/${caseid}"
-     mkdir -p ${drc_out}
-     cd ${drc_out}
-
-     Method 1: Assume all data in directory applies
-     for mth in {1..12}; do
-       mm=`printf "%02d" $mth`
-       ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-         ${drc_in}/${caseid}.cam2.h0.*-${mm}.nc
-     done # end loop over mth
-
-     Method 2: Use shell 'globbing' to construct input filenames
-     for mth in {1..12}; do
-       mm=`printf "%02d" $mth`
-       ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-         ${drc_in}/${caseid}.cam2.h0.00??-${mm}.nc \
-         ${drc_in}/${caseid}.cam2.h0.0100-${mm}.nc
-     done # end loop over mth
-
-     Method 3: Construct input filename list explicitly
-     for mth in {1..12}; do
-       mm=`printf "%02d" $mth`
-       fl_lst_in=''
-       for yr in {1..100}; do
-         yyyy=`printf "%04d" $yr`
-         fl_in=${caseid}.cam2.h0.${yyyy}-${mm}.nc
-         fl_lst_in="${fl_lst_in} ${caseid}.cam2.h0.${yyyy}-${mm}.nc"
-       done # end loop over yr
-       ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc -p ${drc_in} \
-         ${fl_lst_in}
-     done # end loop over mth
-
-     Make sure the output file averages correct input files!
-     ncks -M prints global metadata:
-
-       ncks -M ${drc_out}/${caseid}_clm01.nc
-
-     The input files ncra used to create the climatological monthly mean
-     will appear in the global attribute named 'history'.
-
-     Use ncrcat to aggregate the climatological monthly means
-
-       ncrcat -O -D 1 \
-         ${drc_out}/${caseid}_clm??.nc ${drc_out}/${caseid}_clm_0112.nc
-
-     Finally, create climatological means for reference.
-     The climatological time-mean:
-
-       ncra -O -D 1 \
-         ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm.nc
-
-     The climatological zonal-mean:
-
-       ncwa -O -D 1 -a lon \
-         ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_x.nc
-
-     The climatological time- and spatial-mean:
-
-       ncwa -O -D 1 -a lon,lat,time -w gw \
-         ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-     This file contains only scalars, e.g., "global mean temperature",
-     used for summarizing global results of a climate experiment.
-
-     Climatological monthly anomalies = Annual Cycle:
-     Subtract climatological mean from climatological monthly means.
-     Result is annual cycle, i.e., climate-mean has been removed.
-
-       ncbo -O -D 1 -o ${drc_out}/${caseid}_clm_0112_anm.nc \
-         ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-     ************************************************************************
-     Task 2: Correcting monthly averages
-     ************************************************************************
-     The previous step appoximates all months as being equal, so, e.g.,
-     February weighs slightly too much in the climatological mean.
-     This approximation can be removed by weighting months appropriately.
-     We must add the number of days per month to the monthly mean files.
-     First, create a shell variable dpm:
-
-     unset dpm # Days per month
-     declare -a dpm
-     dpm=(0 31 28.25 31 30 31 30 31 31 30 31 30 31) # Allows 1-based indexing
-
-     Method 1: Create dpm directly in climatological monthly means
-     for mth in {1..12}; do
-       mm=`printf "%02d" ${mth}`
-       ncap2 -O -s "dpm=0.0*date+${dpm[${mth}]}" \
-         ${drc_out}/${caseid}_clm${mm}.nc ${drc_out}/${caseid}_clm${mm}.nc
-     done # end loop over mth
-
-     Method 2: Create dpm by aggregating small files
-     for mth in {1..12}; do
-       mm=`printf "%02d" ${mth}`
-       ncap2 -O -v -s "dpm=${dpm[${mth}]}" ~/nco/data/in.nc \
-         ${drc_out}/foo_${mm}.nc
-     done # end loop over mth
-     ncecat -O -D 1 -p ${drc_out} -n 12,2,2 foo_${mm}.nc foo.nc
-     ncrename -O -D 1 -d record,time ${drc_out}/foo.nc
-     ncatted -O -h \
-       -a long_name,dpm,o,c,"Days per month" \
-       -a units,dpm,o,c,"days" \
-       ${drc_out}/${caseid}_clm_0112.nc
-     ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-     Method 3: Create small netCDF file using ncgen
-     cat > foo.cdl << 'EOF'
-     netcdf foo {
-     dimensions:
-     	time=unlimited;
-     variables:
-     	float dpm(time);
-     	dpm:long_name="Days per month";
-     	dpm:units="days";
-     data:
-     	dpm=31,28.25,31,30,31,30,31,31,30,31,30,31;
-     }
-     EOF
-     ncgen -b -o foo.nc foo.cdl
-     ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-     Another way to get correct monthly weighting is to average daily
-     output files, if available.
-
-     ************************************************************************
-     Task 3: Regional processing
-     ************************************************************************
-     Let's say you are interested in examining the California region.
-     Hyperslab your dataset to isolate the appropriate latitude/longitudes.
-
-       ncks -O -D 1 -d lat,30.0,37.0 -d lon,240.0,270.0 \
-         ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_0112_Cal.nc
-
-     The dataset is now much smaller!
-     To examine particular metrics.
-
-     ************************************************************************
-     Task 4: Accessing data stored remotely
-     ************************************************************************
-     OPeNDAP server examples:
-
-     UCI DAP servers:
-     ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
-     ncrcat -O -C -D 3 -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
-       -l /tmp in.nc in.nc ~/foo.nc
-
-     Unidata DAP servers:
-     ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-     ncrcat -O -C -D 3 -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-       -l /tmp in.nc in.nc ~/foo.nc
-
-     NOAA DAP servers:
-     ncwa -O -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-     http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-     pres.sfc.1969.nc ~/foo.nc
-
-     LLNL PCMDI IPCC OPeNDAP Data Portal:
-     ncks -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
-
-     Earth System Grid (ESG): http://www.earthsystemgrid.org
-
-     caseid='b30.025.ES01'
-     CCSM3.0 1% increasing CO2 run, T42_gx1v3, 200 years starting in year 400
-     Atmospheric post-processed data, monthly averages, e.g.,
-     /data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0449-12.nc
-     /data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0599-12.nc
-
-     ESG supports password-protected FTP access by registered users
-     NCO uses the .netrc file, if present, for password-protected FTP access
-     Syntax for accessing single file is, e.g.,
-     ncks -O -D 3 \
-       -p ftp://climate.llnl.gov/sresa1b/atm/mo/tas/ncar_ccsm3_0/run1 \
-       -l /tmp tas_A1.SRESA1B_1.CCSM.atmm.2000-01_cat_2099-12.nc ~/foo.nc
-
-     # Average surface air temperature tas for SRESA1B scenario
-     # This loop is illustrative and will not work until NCO correctly
-     # translates '*' to FTP 'mget' all remote files
-     for var in 'tas'; do
-     for scn in 'sresa1b'; do
-     for mdl in 'cccma_cgcm3_1 cccma_cgcm3_1_t63 cnrm_cm3 csiro_mk3_0 \
-     gfdl_cm2_0 gfdl_cm2_1 giss_aom giss_model_e_h giss_model_e_r \
-     iap_fgoals1_0_g inmcm3_0 ipsl_cm4 miroc3_2_hires miroc3_2_medres \
-     miub_echo_g mpi_echam5 mri_cgcm2_3_2a ncar_ccsm3_0 ncar_pcm1 \
-     ukmo_hadcm3 ukmo_hadgem1'; do
-     for run in '1'; do
-             ncks -R -O -D 3 -p ftp://climate.llnl.gov/${scn}/atm/mo/${var}/${mdl}/run${run} -l ${DATA}/${scn}/atm/mo/${var}/${mdl}/run${run} '*' ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-     done # end loop over run
-     done # end loop over mdl
-     done # end loop over scn
-     done # end loop over var
-
-     cd sresa1b/atm/mo/tas/ukmo_hadcm3/run1/
-     ncks -H -m -v lat,lon,lat_bnds,lon_bnds -M tas_A1.nc | m
-     bds -x 096 -y 073 -m 33 -o ${DATA}/data/dst_3.75x2.5.nc # ukmo_hadcm3
-     ncview ${DATA}/data/dst_3.75x2.5.nc
-
-     # msk_rgn is California mask on ukmo_hadcm3 grid
-     # area is correct area weight on ukmo_hadcm3 grid
-     ncks -A -v area,msk_rgn ${DATA}/data/dst_3.75x2.5.nc \
-     ${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/area_msk_ukmo_hadcm3.nc
-
-     Template for standardized data:
-     ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-     e.g., raw data
-     ${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/tas_A1.nc
-     becomes standardized data
-
-     Level 0: raw from IPCC site--no changes except for name
-              Make symbolic link name match raw data
-     Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-     ln -s -f tas_A1.nc sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc
-     area_msk_ukmo_hadcm3.nc
-
-     Level I: Add all variables (but not standardized in time)
-              to file containing msk_rgn and area
-     Template: ${scn}_${mdl}_${run}_${yyyymm}_${yyyymm}.nc
-
-     /bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-     ncks -A -v tas sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc \
-                    sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-     ncks -A -v pr  sresa1b_ukmo_hadcm3_run1_pr_200101_209911.nc \
-                    sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-     If already have file then:
-     mv sresa1b_ukmo_hadcm3_run1_200101_209911.nc foo.nc
-     /bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-     ncks -A -v tas,pr foo.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-     Level II: Correct # years, months
-     Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-     ncks -d time,....... file1.nc file2.nc
-     ncrcat file2.nc file3.nc sresa1b_ukmo_hadcm3_run1_200001_209912.nc
-
-     Level III: Many derived products from level II, e.g.,
-
-           A. Global mean timeseries
-           ncwa -w area -a lat,lon \
-                sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-     	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy.nc
-
-           B. Califoria average timeseries
-           ncwa -m msk_rgn -w area -a lat,lon \
-                sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-     	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy_Cal.nc
-
-7 References
-************
-
-     [ZeM07]  Zender, C. S., and H. J. Mangalam (2007), Scaling
-     Properties of Common Statistical Operators for Gridded Datasets,
-     Int. J. High Perform. Comput. Appl., 21(4), 485-498,
-     doi:10.1177/1094342007083802.
-
-     [Zen08]  Zender, C. S. (2008), Analysis of Self-describing Gridded
-     Geoscience Data with netCDF Operators (NCO), Environ. Modell.
-     Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
-
-     [WZJ07]  Wang, D. L., C. S. Zender, and S. F. Jenks (2007),
-     DAP-enabled Server-side Data Reduction and Analysis, Proceedings
-     of the 23rd AMS Conference on Interactive Information and
-     Processing Systems (IIPS) for Meteorology, Oceanography, and
-     Hydrology, Paper 3B.2, January 14-18, San Antonio, TX. American
-     Meteorological Society, AMS Press, Boston, MA.
-
-     [ZMW06]  Zender, C. S., H. Mangalam, and D. L. Wang (2006),
-     Improving Scaling Properties of Common Statistical Operators for
-     Gridded Geoscience Datasets, Eos Trans. AGU, 87(52), Fall Meet.
-     Suppl., Abstract IN53B-0827.
-
-     [ZeW07]  Zender, C. S., and D. L. Wang (2007), High performance
-     distributed data reduction and analysis with the netCDF Operators
-     (NCO), Proceedings of the 23rd AMS Conference on Interactive
-     Information and Processing Systems (IIPS) for Meteorology,
-     Oceanography, and Hydrology, Paper 3B.4, January 14-18, San
-     Antonio, TX. American Meteorological Society, AMS Press, Boston,
-     MA.
-
-     [WZJ06]  Wang, D. L., C. S. Zender, and S. F. Jenks (2006),
-     Server-side netCDF Data Reduction and Analysis, Eos Trans. AGU,
-     87(52), Fall Meet. Suppl., Abstract IN53B-0826.
-
-     [WZJ073]  Wang, D. L., C. S. Zender, and S. F. Jenks (2007),
-     Server-side parallel data reduction and analysis, in Advances in
-     Grid and Pervasive Computing, Second International Conference, GPC
-     2007, Paris, France, May 2-4, 2007, Proceedings. IEEE Lecture
-     Notes in Computer Science, vol. 4459, edited by C. Cerin and K.-C.
-     Li, pp. 744-750, Springer-Verlag, Berlin/Heidelberg,
-     doi:10.1007/978-3-540-72360-8_67.
-
-     [WZJ074]  Wang, D. L., C. S. Zender and S. F. Jenks (2007), A
-     System for Scripted Data Analysis at Remote Data Centers, Eos
-     Trans. AGU, 88(52), Fall Meet. Suppl., Abstract IN11B-0469.
-
-     [WZJ081]  Wang, D. L., C. S. Zender and S. F. Jenks (2008),
-     Cluster Workflow Execution of Retargeted Data Analysis Scripts,
-     Proceedings of the 8th IEEE Int'l Symposium on Cluster Computing
-     and the Grid (IEEE CCGRID '08), pp. 449-458, Lyon, France, May
-     2008.
-
-     [WZJ091]  Wang, D. L., C. S. Zender, and S. F. Jenks (2009),
-     Efficient Clustered Server-side Data Analysis Workflows using
-     SWAMP, Earth Sci. Inform., 2(3), 141-155,
-     doi:10.1007/s12145-009-0021-z.
-
-General Index
-*************
-
-" (double quote):                              Voir 4.2.    (ligne 6279)
-#include:                                      Voir 4.1.1.  (ligne 3482)
-$ (wildcard character):                        Voir 3.11.   (ligne 1852)
-% (modulus):                                   Voir 4.1.25. (ligne 5820)
-' (end quote):                                 Voir 4.2.    (ligne 6279)
-*:                                             Voir 4.3.    (ligne 6368)
-* (filename expansion):                        Voir 3.11.   (ligne 1852)
-* (multiplication):                            Voir 4.1.25. (ligne 5820)
-* (wildcard character):                        Voir 3.11.   (ligne 1861)
-+:                                             Voir 4.3.    (ligne 6368)
-+ (addition):                                  Voir 4.1.25. (ligne 5820)
-+ (wildcard character):                        Voir 3.11.   (ligne 1861)
--:                                             Voir 4.3.    (ligne 6368)
-- (subtraction):                               Voir 4.1.25. (ligne 5820)
---3:                                           Voir 3.9.    (ligne 1649)
---4:                                           Voir 3.9.    (ligne 1649)
---64bit:                                       Voir 3.9.    (ligne 1649)
---abc:                                         Voir 4.7.    (ligne 7011)
---alphabetize:                                 Voir 4.7.    (ligne 7011)
---apn <1>:                                     Voir 4.7.    (ligne 7190)
---apn <2>:                                     Voir 3.27.   (ligne 3164)
---apn:                                         Voir 2.3.    (ligne  612)
---append <1>:                                  Voir 4.7.    (ligne 7190)
---append <2>:                                  Voir 3.27.   (ligne 3164)
---append:                                      Voir 2.3.    (ligne  612)
---auxiliary:                                   Voir 3.18.   (ligne 2227)
---auxiliary LON_MIN,LON_MAX,LAT_MIN,LAT_MAX:   Voir 3.18.   (ligne 2227)
---binary:                                      Voir 4.7.    (ligne 7021)
---bnr:                                         Voir 4.7.    (ligne 7021)
---chunk_dimension:                             Voir 3.22.   (ligne 2628)
---chunk_map:                                   Voir 3.22.   (ligne 2628)
---chunk_policy:                                Voir 3.22.   (ligne 2628)
---chunk_scalar:                                Voir 3.22.   (ligne 2628)
---cnk_dmn:                                     Voir 3.22.   (ligne 2628)
---cnk_map:                                     Voir 3.22.   (ligne 2628)
---cnk_map CNK_MAP:                             Voir 3.22.   (ligne 2690)
---cnk_plc:                                     Voir 3.22.   (ligne 2628)
---cnk_scl:                                     Voir 3.22.   (ligne 2628)
---coords <1>:                                  Voir 3.30.   (ligne 3306)
---coords:                                      Voir 3.12.   (ligne 1922)
---crd <1>:                                     Voir 3.30.   (ligne 3306)
---crd:                                         Voir 3.12.   (ligne 1922)
---data:                                        Voir 4.7.    (ligne 7047)
---dbg_lvl DEBUG-LEVEL <1>:                     Voir 3.4.    (ligne 1191)
---dbg_lvl DEBUG-LEVEL <2>:                     Voir 2.8.    (ligne  941)
---dbg_lvl DEBUG-LEVEL:                         Voir 1.6.    (ligne  529)
---debug-level DEBUG-LEVEL <1>:                 Voir 2.8.    (ligne  941)
---debug-level DEBUG-LEVEL:                     Voir 1.6.    (ligne  529)
---deflate:                                     Voir 3.23.   (ligne 2769)
---dfl_lvl:                                     Voir 3.23.   (ligne 2769)
---dimension DIM,[MIN],[MAX],STRIDE:            Voir 3.15.   (ligne 2055)
---dimension DIM,[MIN][,[MAX][,[STRIDE]]] <1>:  Voir 3.19.   (ligne 2327)
---dimension DIM,[MIN][,[MAX][,[STRIDE]]] <2>:  Voir 3.17.   (ligne 2179)
---dimension DIM,[MIN][,[MAX][,[STRIDE]]] <3>:  Voir 3.16.   (ligne 2115)
---dimension DIM,[MIN][,[MAX][,[STRIDE]]]:      Voir 3.14.   (ligne 1982)
---dmn DIM,[MIN],[MAX],STRIDE:                  Voir 3.15.   (ligne 2055)
---dmn DIM,[MIN][,[MAX][,[STRIDE]]] <1>:        Voir 3.19.   (ligne 2327)
---dmn DIM,[MIN][,[MAX][,[STRIDE]]] <2>:        Voir 3.17.   (ligne 2179)
---dmn DIM,[MIN][,[MAX][,[STRIDE]]] <3>:        Voir 3.16.   (ligne 2115)
---dmn DIM,[MIN][,[MAX][,[STRIDE]]]:            Voir 3.14.   (ligne 1982)
---exclude <1>:                                 Voir 4.7.    (ligne 7184)
---exclude:                                     Voir 3.11.   (ligne 1808)
---file_format:                                 Voir 3.9.    (ligne 1649)
---file_list:                                   Voir 3.29.   (ligne 3210)
---fix_rec_dmn:                                 Voir 4.7.    (ligne 7037)
---fl_bnr:                                      Voir 4.7.    (ligne 7028)
---fl_fmt:                                      Voir 3.9.    (ligne 1649)
---fl_lst_in:                                   Voir 3.29.   (ligne 3210)
---fl_out FL_OUT:                               Voir 3.6.    (ligne 1350)
---fl_spt:                                      Voir 4.1.    (ligne 3417)
---fnc_tbl:                                     Voir 4.1.25. (ligne 5955)
---fortran:                                     Voir 3.13.   (ligne 1947)
---glb_mtd_spr:                                 Voir 4.5.    (ligne 6701)
---hdr_pad HDR_PAD:                             Voir 3.2.    (ligne 1102)
---header_pad HDR_PAD:                          Voir 3.2.    (ligne 1102)
---hieronymus:                                  Voir 4.7.    (ligne 7047)
---history:                                     Voir 3.28.   (ligne 3182)
---hst:                                         Voir 3.28.   (ligne 3182)
---lcl OUTPUT-PATH:                             Voir 3.7.    (ligne 1382)
---local OUTPUT-PATH:                           Voir 3.7.    (ligne 1382)
---map CNK_MAP:                                 Voir 3.22.   (ligne 2690)
---map PCK_MAP:                                 Voir 4.8.    (ligne 7362)
---mask-value MASK_VAL:                         Voir 4.12.1. (ligne 7949)
---mask-variable MASK_VAR:                      Voir 4.12.   (ligne 7877)
---mask_comparator MASK_COMP:                   Voir 4.12.1. (ligne 7932)
---mask_condition MASK_COND <1>:                Voir 4.12.1. (ligne 7932)
---mask_condition MASK_COND:                    Voir 4.12.   (ligne 7877)
---mask_value MASK_VAL:                         Voir 4.12.1. (ligne 7949)
---mask_variable MASK_VAR:                      Voir 4.12.   (ligne 7877)
---metadata:                                    Voir 4.7.    (ligne 7128)
---Metadata:                                    Voir 4.7.    (ligne 7091)
---mk_rec_dmn DIM:                              Voir 4.7.    (ligne 7041)
---msk_cmp_typ MASK_COMP:                       Voir 4.12.1. (ligne 7932)
---msk_cnd MASK_COND:                           Voir 4.12.   (ligne 7877)
---msk_cnd_sng MASK_COND:                       Voir 4.12.1. (ligne 7932)
---msk_nm MASK_VAR:                             Voir 4.12.   (ligne 7877)
---msk_val MASK_VAL:                            Voir 4.12.1. (ligne 7949)
---msk_var MASK_VAR:                            Voir 4.12.   (ligne 7877)
---mtd:                                         Voir 4.7.    (ligne 7128)
---Mtd:                                         Voir 4.7.    (ligne 7091)
---netcdf4:                                     Voir 3.9.    (ligne 1649)
---nintap LOOP:                                 Voir 3.5.    (ligne 1248)
---no-coords <1>:                               Voir 3.30.   (ligne 3306)
---no-coords:                                   Voir 3.12.   (ligne 1922)
---no-crd <1>:                                  Voir 3.30.   (ligne 3306)
---no-crd:                                      Voir 3.12.   (ligne 1922)
---no_rec_dmn:                                  Voir 4.7.    (ligne 7037)
---omp_num_threads THR_NBR:                     Voir 3.3.    (ligne 1123)
---op_rlt MASK_COMP:                            Voir 4.12.1. (ligne 7932)
---op_typ OP_TYP <1>:                           Voir 4.3.    (ligne 6368)
---op_typ OP_TYP:                               Voir 3.25.   (ligne 2897)
---operation OP_TYP <1>:                        Voir 4.3.    (ligne 6368)
---operation OP_TYP:                            Voir 3.25.   (ligne 2897)
---output FL_OUT:                               Voir 3.6.    (ligne 1350)
---overwrite <1>:                               Voir 3.27.   (ligne 3164)
---overwrite:                                   Voir 2.3.    (ligne  612)
---ovr <1>:                                     Voir 3.27.   (ligne 3164)
---ovr:                                         Voir 2.3.    (ligne  612)
---pack_policy PCK_PLC:                         Voir 4.8.    (ligne 7299)
---path INPUT-PATH <1>:                         Voir 3.7.    (ligne 1382)
---path INPUT-PATH:                             Voir 3.5.    (ligne 1248)
---pck_map PCK_MAP:                             Voir 4.8.    (ligne 7362)
---pck_plc PCK_PLC:                             Voir 4.8.    (ligne 7299)
---print:                                       Voir 4.7.    (ligne 7138)
---prn:                                         Voir 4.7.    (ligne 7138)
---prn_fnc_tbl:                                 Voir 4.1.25. (ligne 5955)
---pseudonym:                                   Voir 1.3.    (ligne  312)
---pth INPUT-PATH <1>:                          Voir 3.7.    (ligne 1382)
---pth INPUT-PATH:                              Voir 3.5.    (ligne 1248)
---quiet:                                       Voir 4.7.    (ligne 7150)
---rcd_nm ULM_NM:                               Voir 4.5.    (ligne 6683)
---retain:                                      Voir 3.8.    (ligne 1606)
---revision <1>:                                Voir 3.32.   (ligne 3369)
---revision:                                    Voir 1.6.    (ligne  529)
---rtn:                                         Voir 3.8.    (ligne 1606)
---script:                                      Voir 4.1.    (ligne 3417)
---script-file:                                 Voir 4.1.    (ligne 3417)
---sng_fmt:                                     Voir 4.7.    (ligne 7158)
---spt:                                         Voir 4.1.    (ligne 3417)
---string:                                      Voir 4.7.    (ligne 7158)
---thr_nbr THR_NBR:                             Voir 3.3.    (ligne 1123)
---threads THR_NBR:                             Voir 3.3.    (ligne 1123)
---ulm_nm ULM_NM:                               Voir 4.5.    (ligne 6683)
---units:                                       Voir 4.7.    (ligne 7163)
---unpack:                                      Voir 4.8.    (ligne 7346)
---upk:                                         Voir 4.8.    (ligne 7346)
---variable VAR <1>:                            Voir 4.7.    (ligne 7184)
---variable VAR:                                Voir 3.11.   (ligne 1808)
---version <1>:                                 Voir 3.32.   (ligne 3369)
---version:                                     Voir 1.6.    (ligne  529)
---vrs <1>:                                     Voir 3.32.   (ligne 3369)
---vrs:                                         Voir 1.6.    (ligne  529)
---weight WEIGHT:                               Voir 4.12.   (ligne 7877)
---weight WGT1[,WGT2]:                          Voir 4.6.    (ligne 6799)
---wgt_var WEIGHT:                              Voir 4.12.   (ligne 7877)
---wgt_var WGT1[,WGT2]:                         Voir 4.6.    (ligne 6799)
---xcl <1>:                                     Voir 4.7.    (ligne 7184)
---xcl:                                         Voir 3.11.   (ligne 1808)
--3 <1>:                                        Voir 3.9.    (ligne 1649)
--3:                                            Voir 1.5.    (ligne  434)
--4 <1>:                                        Voir 3.9.    (ligne 1649)
--4:                                            Voir 1.5.    (ligne  434)
--A <1>:                                        Voir 4.8.    (ligne 7471)
--A:                                            Voir 4.7.    (ligne 7190)
--a:                                            Voir 4.7.    (ligne 7011)
--A <1>:                                        Voir 3.27.   (ligne 3164)
--A:                                            Voir 2.3.    (ligne  612)
--b:                                            Voir 4.7.    (ligne 7028)
--B:                                            Voir 4.7.    (ligne 7021)
--b <1>:                                        Voir 4.3.    (ligne 6465)
--b:                                            Voir 4.1.24. (ligne 5798)
--B MASK_COND <1>:                              Voir 4.12.1. (ligne 7932)
--B MASK_COND:                                  Voir 4.12.   (ligne 7877)
--C:                                            Voir 4.1.24. (ligne 5810)
--c:                                            Voir 3.30.   (ligne 3306)
--C:                                            Voir 3.30.   (ligne 3306)
--c:                                            Voir 3.12.   (ligne 1922)
--C:                                            Voir 3.12.   (ligne 1922)
--D:                                            Voir 1.6.    (ligne  514)
--D DEBUG-LEVEL <1>:                            Voir 3.4.    (ligne 1191)
--D DEBUG-LEVEL <2>:                            Voir 2.8.    (ligne  941)
--D DEBUG-LEVEL:                                Voir 1.6.    (ligne  529)
--d DIM,[MIN],[MAX],STRIDE:                     Voir 3.15.   (ligne 2055)
--d DIM,[MIN][,[MAX][,[STRIDE]]] <1>:           Voir 3.19.   (ligne 2327)
--d DIM,[MIN][,[MAX][,[STRIDE]]] <2>:           Voir 3.17.   (ligne 2179)
--d DIM,[MIN][,[MAX][,[STRIDE]]] <3>:           Voir 3.16.   (ligne 2115)
--d DIM,[MIN][,[MAX][,[STRIDE]]]:               Voir 3.14.   (ligne 1982)
--d DIM,[MIN][,[MAX]]:                          Voir 4.12.   (ligne 7869)
--f:                                            Voir 4.1.25. (ligne 5955)
--F:                                            Voir 3.13.   (ligne 1947)
--H:                                            Voir 4.7.    (ligne 7047)
--h:                                            Voir 4.2.    (ligne 6102)
--H:                                            Voir 3.29.   (ligne 3210)
--h:                                            Voir 3.28.   (ligne 3182)
--I:                                            Voir 4.12.   (ligne 7905)
--L:                                            Voir 3.23.   (ligne 2769)
--l OUTPUT-PATH:                                Voir 3.7.    (ligne 1382)
--m:                                            Voir 4.7.    (ligne 7128)
--M <1>:                                        Voir 4.7.    (ligne 7091)
--M <2>:                                        Voir 4.5.    (ligne 6701)
--M:                                            Voir 3.9.    (ligne 1731)
--M CNK_MAP:                                    Voir 3.22.   (ligne 2690)
--m MASK_VAR:                                   Voir 4.12.   (ligne 7877)
--M PCK_MAP:                                    Voir 4.8.    (ligne 7362)
--N:                                            Voir 4.12.2. (ligne 7965)
--n LOOP <1>:                                   Voir 3.5.    (ligne 1248)
--n LOOP:                                       Voir 2.7.    (ligne  811)
--O <1>:                                        Voir 3.27.   (ligne 3164)
--O:                                            Voir 2.3.    (ligne  612)
--o FL_OUT <1>:                                 Voir 3.6.    (ligne 1350)
--o FL_OUT:                                     Voir 2.7.    (ligne  865)
--P:                                            Voir 4.7.    (ligne 7138)
--p INPUT-PATH <1>:                             Voir 3.7.    (ligne 1443)
--p INPUT-PATH:                                 Voir 3.5.    (ligne 1248)
--P PCK_PLC:                                    Voir 4.8.    (ligne 7299)
--q:                                            Voir 4.7.    (ligne 7150)
--Q:                                            Voir 4.7.    (ligne 7144)
--r:                                            Voir 3.32.   (ligne 3369)
--R:                                            Voir 3.8.    (ligne 1606)
--r:                                            Voir 1.6.    (ligne  514)
--s:                                            Voir 4.7.    (ligne 7158)
--t THR_NBR <1>:                                Voir 3.3.    (ligne 1123)
--t THR_NBR:                                    Voir 2.9.1.  (ligne 1013)
--U:                                            Voir 4.8.    (ligne 7346)
--u:                                            Voir 4.7.    (ligne 7163)
--u ULM_NM:                                     Voir 4.5.    (ligne 6683)
--v:                                            Voir 4.8.    (ligne 7471)
--v VAR <1>:                                    Voir 4.7.    (ligne 7184)
--v VAR:                                        Voir 3.11.   (ligne 1808)
--w WEIGHT:                                     Voir 4.12.   (ligne 7877)
--w WGT1[,WGT2]:                                Voir 4.6.    (ligne 6799)
--x:                                            Voir 4.7.    (ligne 7184)
--X:                                            Voir 3.18.   (ligne 2227)
--x:                                            Voir 3.11.   (ligne 1808)
--X LON_MIN,LON_MAX,LAT_MIN,LAT_MAX:            Voir 3.18.   (ligne 2227)
--y OP_TYP <1>:                                 Voir 4.3.    (ligne 6368)
--y OP_TYP:                                     Voir 3.25.   (ligne 2897)
-.:                                             Voir 4.11.   (ligne 7743)
-. (wildcard character):                        Voir 3.11.   (ligne 1852)
-.netrc:                                        Voir 3.7.    (ligne 1382)
-.rhosts:                                       Voir 3.7.    (ligne 1382)
-/:                                             Voir 4.3.    (ligne 6368)
-/ (division):                                  Voir 4.1.25. (ligne 5820)
-/*...*/ (comment):                             Voir 4.1.1.  (ligne 3478)
-// (comment):                                  Voir 4.1.1.  (ligne 3478)
-0 (NUL):                                       Voir 4.2.    (ligne 6288)
-32-bit offset file format:                     Voir 3.9.    (ligne 1731)
-64-bit offset file format:                     Voir 3.9.    (ligne 1731)
-64BIT files:                                   Voir 3.9.    (ligne 1649)
-; (end of statement):                          Voir 4.1.1.  (ligne 3475)
-<arpa/nameser.h>:                              Voir 1.2.1.  (ligne  281)
-<resolv.h>:                                    Voir 1.2.1.  (ligne  281)
-? (filename expansion):                        Voir 3.11.   (ligne 1852)
-? (question mark):                             Voir 4.2.    (ligne 6279)
-? (wildcard character):                        Voir 3.11.   (ligne 1861)
-@ (attribute):                                 Voir 4.1.1.  (ligne 3488)
-[] (array delimiters):                         Voir 4.1.1.  (ligne 3466)
-\ (backslash):                                 Voir 4.2.    (ligne 6279)
-\" (protected double quote):                   Voir 4.2.    (ligne 6279)
-\' (protected end quote):                      Voir 4.2.    (ligne 6279)
-\? (protected question mark):                  Voir 4.2.    (ligne 6279)
-\\ (ASCII \, backslash):                       Voir 4.2.    (ligne 6274)
-\\ (protected backslash):                      Voir 4.2.    (ligne 6279)
-\a (ASCII BEL, bell):                          Voir 4.2.    (ligne 6274)
-\b (ASCII BS, backspace):                      Voir 4.2.    (ligne 6274)
-\f (ASCII FF, formfeed):                       Voir 4.2.    (ligne 6274)
-\n (ASCII LF, linefeed):                       Voir 4.2.    (ligne 6264)
-\n (linefeed):                                 Voir 4.7.    (ligne 7195)
-\r (ASCII CR, carriage return):                Voir 4.2.    (ligne 6274)
-\t (ASCII HT, horizontal tab):                 Voir 4.2.    (ligne 6264)
-\t (horizontal tab):                           Voir 4.7.    (ligne 7195)
-\v (ASCII VT, vertical tab):                   Voir 4.2.    (ligne 6274)
-^ (power):                                     Voir 4.1.25. (ligne 5820)
-^ (wildcard character):                        Voir 3.11.   (ligne 1852)
-_FillValue <1>:                                Voir 4.11.   (ligne 7820)
-_FillValue:                                    Voir 4.8.    (ligne 7400)
-_FILLVALUE:                                    Voir 4.8.    (ligne 7400)
-_FillValue <1>:                                Voir 4.6.    (ligne 6838)
-_FillValue <2>:                                Voir 4.2.    (ligne 6107)
-_FillValue <3>:                                Voir 3.24.   (ligne 2806)
-_FillValue:                                    Voir 3.21.   (ligne 2513)
-`NCO User's Guide':                            Voir 1.1.    (ligne  136)
-`User's Guide':                                Voir 1.1.    (ligne  136)
-ABS:                                           Voir 4.1.25. (ligne 5823)
-absolute value:                                Voir 4.1.25. (ligne 5823)
-ACOS:                                          Voir 4.1.25. (ligne 5823)
-ACOSH:                                         Voir 4.1.25. (ligne 5823)
-add:                                           Voir 4.3.    (ligne 6368)
-add_offset <1>:                                Voir 4.10.   (ligne 7680)
-add_offset <2>:                                Voir 4.8.    (ligne 7292)
-add_offset <3>:                                Voir 4.5.    (ligne 6722)
-add_offset:                                    Voir 3.24.   (ligne 2806)
-ADD_OFFSET:                                    Voir 2.10.   (ligne 1068)
-adding data <1>:                               Voir 4.6.    (ligne 6774)
-adding data:                                   Voir 4.3.    (ligne 6352)
-addition <1>:                                  Voir 4.6.    (ligne 6774)
-addition <2>:                                  Voir 4.3.    (ligne 6352)
-addition:                                      Voir 4.1.25. (ligne 5820)
-Alexander Hansen:                              Voir 5.1.    (ligne 8190)
-alias <1>:                                     Voir 4.8.    (ligne 7356)
-alias:                                         Voir 4.3.    (ligne 6412)
-all:                                           Voir 3.22.   (ligne 2658)
-alphabetization:                               Voir 4.7.    (ligne 7011)
-alphabetize output:                            Voir 4.7.    (ligne 7178)
-alternate invocations:                         Voir 4.3.    (ligne 6368)
-anomalies:                                     Voir 4.3.    (ligne 6448)
-ANSI:                                          Voir 1.2.    (ligne  205)
-ANSI C:                                        Voir 4.1.25. (ligne 5954)
-appending data <1>:                            Voir 4.7.    (ligne 6958)
-appending data:                                Voir 4.1.24. (ligne 5798)
-appending to files <1>:                        Voir 4.7.    (ligne 7190)
-appending to files <2>:                        Voir 3.27.   (ligne 3164)
-appending to files:                            Voir 2.3.    (ligne  612)
-appending variables <1>:                       Voir 4.8.    (ligne 7471)
-appending variables:                           Voir 2.4.    (ligne  634)
-AR4:                                           Voir 4.4.    (ligne 6601)
-arccosine function:                            Voir 4.1.25. (ligne 5823)
-arcsine function:                              Voir 4.1.25. (ligne 5823)
-arctangent function:                           Voir 4.1.25. (ligne 5823)
-area:                                          Voir 3.30.   (ligne 3241)
-arithmetic operators <1>:                      Voir 4.12.   (ligne 7869)
-arithmetic operators:                          Voir 3.21.   (ligne 2519)
-arithmetic processor:                          Voir 4.1.    (ligne 3400)
-ARM conventions <1>:                           Voir 4.10.   (ligne 7693)
-ARM conventions:                               Voir 3.31.   (ligne 3338)
-array:                                         Voir 4.1.5.  (ligne 3774)
-array function:                                Voir 4.1.5.  (ligne 3774)
-array indexing:                                Voir 4.1.1.  (ligne 3469)
-array storage:                                 Voir 4.1.1.  (ligne 3472)
-array syntax:                                  Voir 4.1.1.  (ligne 3466)
-arrays:                                        Voir 4.1.5.  (ligne 3774)
-arrival value:                                 Voir 4.6.    (ligne 6813)
-ASCII:                                         Voir 4.2.    (ligne 6262)
-ASIN:                                          Voir 4.1.25. (ligne 5823)
-ASINH:                                         Voir 4.1.25. (ligne 5823)
-assignment statement:                          Voir 4.1.1.  (ligne 3475)
-asynchronous file access:                      Voir 3.7.    (ligne 1382)
-ATAN:                                          Voir 4.1.25. (ligne 5823)
-ATANH:                                         Voir 4.1.25. (ligne 5823)
-attribute inheritance:                         Voir 4.1.6.  (ligne 3939)
-attribute names <1>:                           Voir 4.11.   (ligne 7734)
-attribute names:                               Voir 4.2.    (ligne 6085)
-attribute propagation:                         Voir 4.1.6.  (ligne 3939)
-attribute syntax:                              Voir 4.1.1.  (ligne 3488)
-attribute, units:                              Voir 3.19.   (ligne 2327)
-attributes:                                    Voir 4.2.    (ligne 6085)
-attributes, appending:                         Voir 4.2.    (ligne 6167)
-attributes, creating:                          Voir 4.2.    (ligne 6167)
-attributes, deleting:                          Voir 4.2.    (ligne 6167)
-attributes, editing:                           Voir 4.2.    (ligne 6167)
-attributes, global <1>:                        Voir 4.11.   (ligne 7779)
-attributes, global <2>:                        Voir 4.7.    (ligne 6944)
-attributes, global <3>:                        Voir 4.2.    (ligne 6151)
-attributes, global <4>:                        Voir 3.31.   (ligne 3362)
-attributes, global <5>:                        Voir 3.29.   (ligne 3210)
-attributes, global <6>:                        Voir 3.28.   (ligne 3182)
-attributes, global:                            Voir 2.7.    (ligne  839)
-attributes, modifying:                         Voir 4.2.    (ligne 6167)
-attributes, overwriting:                       Voir 4.2.    (ligne 6167)
-attributesncap:                                Voir 4.1.6.  (ligne 3906)
-autoconf:                                      Voir 1.6.    (ligne  537)
-automagic <1>:                                 Voir 2.7.    (ligne  812)
-automagic:                                     Voir 1.2.    (ligne  244)
-automatic type conversion <1>:                 Voir 4.1.25. (ligne 5913)
-automatic type conversion:                     Voir 3.26.   (ligne 3054)
-auxiliary coordinates:                         Voir 3.30.   (ligne 3306)
-average <1>:                                   Voir 4.12.   (ligne 7914)
-average:                                       Voir 3.25.   (ligne 2897)
-averaging data <1>:                            Voir 4.12.   (ligne 7840)
-averaging data <2>:                            Voir 4.9.    (ligne 7587)
-averaging data <3>:                            Voir 4.4.    (ligne 6577)
-averaging data:                                Voir 3.21.   (ligne 2513)
-avg:                                           Voir 3.25.   (ligne 2897)
-avg():                                         Voir 4.1.11. (ligne 4206)
-avgsqr:                                        Voir 3.25.   (ligne 2897)
-Barry deFreese:                                Voir 5.1.    (ligne 8178)
-base_time:                                     Voir 3.31.   (ligne 3338)
-bash:                                          Voir 3.11.   (ligne 1904)
-Bash Shell:                                    Voir 4.3.    (ligne 6530)
-Bash shell:                                    Voir 4.3.    (ligne 6397)
-batch mode:                                    Voir 3.27.   (ligne 3164)
-benchmarks:                                    Voir 3.3.    (ligne 1168)
-Bessel function:                               Voir 4.1.19. (ligne 4991)
-Bill Kocik:                                    Voir 5.1.    (ligne 8151)
-binary format:                                 Voir 4.7.    (ligne 7021)
-binary operations <1>:                         Voir 4.3.    (ligne 6352)
-binary operations:                             Voir 2.9.2.  (ligne 1019)
-binary Operators:                              Voir 4.1.2.  (ligne 3580)
-bounds:                                        Voir 3.30.   (ligne 3295)
-bounds convention:                             Voir 3.30.   (ligne 3295)
-Bourne Shell <1>:                              Voir 4.3.    (ligne 6530)
-Bourne Shell:                                  Voir 3.15.   (ligne 2092)
-Brian Mays:                                    Voir 5.1.    (ligne 8145)
-broadcasting variables <1>:                    Voir 4.12.   (ligne 7840)
-broadcasting variables <2>:                    Voir 4.6.    (ligne 6900)
-broadcasting variables:                        Voir 4.3.    (ligne 6442)
-BSD:                                           Voir 3.4.    (ligne 1188)
-buffering:                                     Voir 2.10.   (ligne 1058)
-bugs, reporting:                               Voir 1.6.    (ligne  474)
-byte():                                        Voir 4.1.11. (ligne 4319)
-C index convention:                            Voir 3.13.   (ligne 1947)
-C language <1>:                                Voir 4.7.    (ligne 7158)
-C language <2>:                                Voir 4.2.    (ligne 6288)
-C language <3>:                                Voir 4.1.2.  (ligne 3495)
-C language <4>:                                Voir 4.1.1.  (ligne 3462)
-C language <5>:                                Voir 3.26.1. (ligne 3077)
-C language <6>:                                Voir 3.21.   (ligne 2561)
-C language:                                    Voir 1.2.    (ligne  226)
-C Shell <1>:                                   Voir 4.3.    (ligne 6530)
-C Shell:                                       Voir 3.15.   (ligne 2092)
-C++:                                           Voir 1.2.    (ligne  197)
-c++:                                           Voir 1.2.    (ligne  192)
-C89:                                           Voir 1.2.    (ligne  205)
-C99:                                           Voir 1.2.    (ligne  209)
-C_FORMAT:                                      Voir 2.10.   (ligne 1068)
-cc:                                            Voir 1.2.    (ligne  192)
-CC:                                            Voir 1.2.    (ligne  192)
-CCM Processor <1>:                             Voir 4.10.   (ligne 7699)
-CCM Processor <2>:                             Voir 4.9.    (ligne 7624)
-CCM Processor:                                 Voir 3.5.    (ligne 1248)
-CCSM <1>:                                      Voir 6.      (ligne 8225)
-CCSM:                                          Voir 5.2.    (ligne 8205)
-CCSM conventions:                              Voir 3.30.   (ligne 3241)
-CEIL:                                          Voir 4.1.25. (ligne 5823)
-ceiling function:                              Voir 4.1.25. (ligne 5823)
-cell-based grids:                              Voir 3.18.   (ligne 2244)
-CF conventions <1>:                            Voir 4.3.    (ligne 6474)
-CF conventions <2>:                            Voir 3.30.   (ligne 3241)
-CF conventions <3>:                            Voir 3.19.   (ligne 2422)
-CF conventions <4>:                            Voir 3.18.   (ligne 2227)
-CF conventions:                                Voir 3.12.   (ligne 1938)
-change_miss():                                 Voir 4.1.10. (ligne 4152)
-char():                                        Voir 4.1.11. (ligne 4322)
-characters, special:                           Voir 4.2.    (ligne 6264)
-Charlie Zender <1>:                            Voir 5.1.    (ligne 8123)
-Charlie Zender:
-          Voir ``Foreword''.                                (ligne   56)
-chocolate:                                     Voir 5.      (ligne 8112)
-chunking <1>:                                  Voir 4.7.    (ligne 7131)
-chunking <2>:                                  Voir 3.22.   (ligne 2628)
-chunking:                                      Voir 1.5.    (ligne  429)
-chunking map:                                  Voir 3.22.   (ligne 2643)
-chunking policy:                               Voir 3.22.   (ligne 2643)
-chunksize:                                     Voir 3.22.   (ligne 2643)
-CLASSIC files:                                 Voir 3.9.    (ligne 1649)
-client-server:                                 Voir 3.7.1.  (ligne 1493)
-Climate and Forecast Metadata Convention:      Voir 3.19.   (ligne 2422)
-climate model <1>:                             Voir 4.12.2. (ligne 8029)
-climate model <2>:                             Voir 4.5.    (ligne 6712)
-climate model <3>:                             Voir 3.5.    (ligne 1311)
-climate model <4>:                             Voir 2.6.1.  (ligne  734)
-climate model <5>:                             Voir 2.2.    (ligne  582)
-climate model:                                 Voir 2.1.    (ligne  556)
-clipping operators:                            Voir 4.1.2.  (ligne 3655)
-CMIP:                                          Voir 4.4.    (ligne 6601)
-cnk_all:                                       Voir 3.22.   (ligne 2658)
-cnk_dmn:                                       Voir 3.22.   (ligne 2696)
-cnk_g2d:                                       Voir 3.22.   (ligne 2658)
-cnk_g3d:                                       Voir 3.22.   (ligne 2658)
-CNK_MAP:                                       Voir 3.22.   (ligne 2690)
-cnk_prd:                                       Voir 3.22.   (ligne 2696)
-cnk_rd1:                                       Voir 3.22.   (ligne 2696)
-cnk_scl:                                       Voir 3.22.   (ligne 2696)
-cnk_xpl:                                       Voir 3.22.   (ligne 2658)
-Comeau:                                        Voir 1.2.    (ligne  176)
-command line options:                          Voir 3.4.    (ligne 1173)
-command line switches <1>:                     Voir 4.      (ligne 3390)
-command line switches <2>:                     Voir 3.6.    (ligne 1350)
-command line switches <3>:                     Voir 3.      (ligne 1086)
-command line switches:                         Voir 2.1.    (ligne  572)
-comments:                                      Voir 4.1.1.  (ligne 3478)
-como:                                          Voir 1.2.    (ligne  192)
-Compaq:                                        Voir 1.2.    (ligne  176)
-comparator:                                    Voir 4.12.1. (ligne 7940)
-compatability:                                 Voir 1.2.    (ligne  176)
-compilers:                                     Voir 3.6.    (ligne 1372)
-complementary error function:                  Voir 4.1.25. (ligne 5823)
-compression <1>:                               Voir 4.7.    (ligne 7131)
-compression:                                   Voir 3.23.   (ligne 2769)
-concatenation <1>:                             Voir 4.10.   (ligne 7654)
-concatenation <2>:                             Voir 4.8.    (ligne 7430)
-concatenation <3>:                             Voir 4.5.    (ligne 6663)
-concatenation:                                 Voir 2.4.    (ligne  634)
-conditional Operator:                          Voir 4.1.2.  (ligne 3645)
-config.guess:                                  Voir 1.6.    (ligne  537)
-configure.eg:                                  Voir 1.6.    (ligne  537)
-constraint expressions:                        Voir 3.7.1.  (ligne 1597)
-contributing:                                  Voir 5.      (ligne 8100)
-contributors:                                  Voir 5.1.    (ligne 8122)
-coordinate limits:                             Voir 3.14.   (ligne 1982)
-coordinate variable <1>:                       Voir 4.12.   (ligne 7905)
-coordinate variable <2>:                       Voir 4.3.    (ligne 6471)
-coordinate variable <3>:                       Voir 3.30.   (ligne 3306)
-coordinate variable <4>:                       Voir 3.25.   (ligne 2929)
-coordinate variable:                           Voir 3.19.   (ligne 2362)
-coordinate variables:                          Voir 4.11.   (ligne 7814)
-coordinates <1>:                               Voir 3.30.   (ligne 3306)
-coordinates:                                   Voir 3.18.   (ligne 2227)
-coordinates convention:                        Voir 3.30.   (ligne 3306)
-core dump <1>:                                 Voir 4.7.    (ligne 7227)
-core dump <2>:                                 Voir 2.8.    (ligne  931)
-core dump:                                     Voir 1.6.    (ligne  474)
-COS:                                           Voir 4.1.25. (ligne 5823)
-COSH:                                          Voir 4.1.25. (ligne 5823)
-cosine function:                               Voir 4.1.25. (ligne 5823)
-covariance:                                    Voir 4.1.24. (ligne 5747)
-Cray <1>:                                      Voir 2.8.    (ligne  927)
-Cray:                                          Voir 1.2.    (ligne  176)
-csh:                                           Voir 3.11.   (ligne 1904)
-cxx:                                           Voir 1.2.    (ligne  192)
-Cygwin <1>:                                    Voir 1.3.    (ligne  312)
-Cygwin:                                        Voir 1.2.1.  (ligne  276)
-Daniel Baumann:                                Voir 5.1.    (ligne 8178)
-Daniel Wang:                                   Voir 5.1.    (ligne 8139)
-DAP:                                           Voir 3.7.1.  (ligne 1493)
-data access protocol:                          Voir 3.7.1.  (ligne 1493)
-data safety <1>:                               Voir 4.11.   (ligne 7755)
-data safety:                                   Voir 2.3.    (ligne  593)
-data, missing <1>:                             Voir 4.2.    (ligne 6107)
-data, missing:                                 Voir 3.21.   (ligne 2513)
-date:                                          Voir 3.30.   (ligne 3241)
-datesec:                                       Voir 3.30.   (ligne 3241)
-DBG_LVL <1>:                                   Voir 3.3.    (ligne 1157)
-DBG_LVL <2>:                                   Voir 2.8.    (ligne  941)
-DBG_LVL:                                       Voir 1.6.    (ligne  529)
-DDRA:                                          Voir 5.2.    (ligne 8205)
-Debian:                                        Voir 1.5.    (ligne  441)
-DEBUG-LEVEL <1>:                               Voir 2.8.    (ligne  941)
-DEBUG-LEVEL:                                   Voir 1.6.    (ligne  529)
-debugging <1>:                                 Voir 3.3.    (ligne 1157)
-debugging <2>:                                 Voir 2.8.    (ligne  941)
-debugging:                                     Voir 1.6.    (ligne  514)
-DEC:                                           Voir 1.2.    (ligne  176)
-defdim():                                      Voir 4.1.3.  (ligne 3677)
-deflation <1>:                                 Voir 4.7.    (ligne 7131)
-deflation <2>:                                 Voir 3.23.   (ligne 2769)
-deflation:                                     Voir 1.5.    (ligne  425)
-degenerate dimension <1>:                      Voir 4.12.2. (ligne 8020)
-degenerate dimension <2>:                      Voir 4.12.   (ligne 7858)
-degenerate dimension <3>:                      Voir 4.9.    (ligne 7598)
-degenerate dimension <4>:                      Voir 4.8.    (ligne 7562)
-degenerate dimension <5>:                      Voir 4.6.    (ligne 6827)
-degenerate dimension <6>:                      Voir 4.5.    (ligne 6763)
-degenerate dimension <7>:                      Voir 4.3.    (ligne 6465)
-degenerate dimension <8>:                      Voir 4.1.24. (ligne 5798)
-degenerate dimension:                          Voir 3.25.   (ligne 2974)
-delete_miss():                                 Voir 4.1.10. (ligne 4162)
-demotion:                                      Voir 3.26.   (ligne 3054)
-derived fields:                                Voir 4.1.    (ligne 3424)
-Digital:                                       Voir 1.2.    (ligne  176)
-dimension limits:                              Voir 3.14.   (ligne 1982)
-dimension names:                               Voir 4.11.   (ligne 7734)
-dimensions, growing:                           Voir 4.1.24. (ligne 5717)
-dimensionsncap:                                Voir 4.1.3.  (ligne 3677)
-disjoint files:                                Voir 2.4.    (ligne  657)
-Distributed Data Reduction & Analysis:         Voir 5.2.    (ligne 8205)
-Distributed Oceanographic Data System:         Voir 3.7.1.  (ligne 1493)
-divide:                                        Voir 4.3.    (ligne 6368)
-dividing data:                                 Voir 4.3.    (ligne 6352)
-division:                                      Voir 4.1.25. (ligne 5820)
-dmn:                                           Voir 3.22.   (ligne 2696)
-documentation:                                 Voir 1.1.    (ligne  136)
-DODS <1>:                                      Voir 3.8.    (ligne 1635)
-DODS:                                          Voir 3.7.1.  (ligne 1493)
-DODS_ROOT:                                     Voir 3.7.1.  (ligne 1493)
-dot product:                                   Voir 4.12.2. (ligne 7965)
-double precision:                              Voir 4.1.25. (ligne 5954)
-double():                                      Voir 4.1.11. (ligne 4335)
-dynamic linking:                               Voir 1.4.    (ligne  338)
-Ed Hill:                                       Voir 5.1.    (ligne 8181)
-eddy covariance:                               Voir 4.1.24. (ligne 5756)
-editing attributes:                            Voir 4.2.    (ligne 6085)
-egrep:                                         Voir 3.11.   (ligne 1835)
-Elliptic integrals:                            Voir 4.1.19. (ligne 5011)
-ensemble <1>:                                  Voir 4.4.    (ligne 6589)
-ensemble:                                      Voir 2.6.1.  (ligne  734)
-ensemble average:                              Voir 4.4.    (ligne 6577)
-ensemble concatenation:                        Voir 4.5.    (ligne 6663)
-ERF:                                           Voir 4.1.25. (ligne 5823)
-ERFC:                                          Voir 4.1.25. (ligne 5823)
-Eric Blake:                                    Voir 5.1.    (ligne 8193)
-error function:                                Voir 4.1.25. (ligne 5823)
-error tolerance:                               Voir 2.3.    (ligne  593)
-exclusion <1>:                                 Voir 4.7.    (ligne 7184)
-exclusion:                                     Voir 3.11.   (ligne 1808)
-execution time <1>:                            Voir 4.11.   (ligne 7770)
-execution time <2>:                            Voir 3.21.   (ligne 2571)
-execution time <3>:                            Voir 3.2.    (ligne 1102)
-execution time <4>:                            Voir 2.10.   (ligne 1059)
-execution time <5>:                            Voir 2.3.    (ligne  606)
-execution time:                                Voir 1.4.    (ligne  339)
-EXP:                                           Voir 4.1.25. (ligne 5823)
-exponentiation:                                Voir 4.1.25. (ligne 5820)
-exponentiation function:                       Voir 4.1.25. (ligne 5823)
-expressions:                                   Voir 4.1.1.  (ligne 3491)
-extended regular expressions <1>:              Voir 4.2.    (ligne 6128)
-extended regular expressions <2>:              Voir 4.1.24. (ligne 5775)
-extended regular expressions <3>:              Voir 3.11.   (ligne 1835)
-extended regular expressions:                  Voir 2.7.    (ligne  847)
-extraction <1>:                                Voir 4.7.    (ligne 7184)
-extraction:                                    Voir 3.11.   (ligne 1808)
-f90:                                           Voir 1.2.1.  (ligne  276)
-features, requesting:                          Voir 1.6.    (ligne  474)
-file deletion:                                 Voir 3.8.    (ligne 1606)
-file removal:                                  Voir 3.8.    (ligne 1606)
-file retention:                                Voir 3.8.    (ligne 1606)
-files, multiple:                               Voir 3.5.    (ligne 1282)
-files, numerous input:                         Voir 2.7.    (ligne  811)
-Filipe Fernandes:                              Voir 5.1.    (ligne 8187)
-findgen-equivalent:                            Voir 4.1.5.  (ligne 3774)
-fixed dimension:                               Voir 4.7.    (ligne 7037)
-flags:                                         Voir 4.1.24. (ligne 5732)
-float:                                         Voir 4.1.25. (ligne 5954)
-float():                                       Voir 4.1.11. (ligne 4331)
-FLOOR:                                         Voir 4.1.25. (ligne 5823)
-floor:                                         Voir 3.26.1. (ligne 3124)
-floor function:                                Voir 4.1.25. (ligne 5823)
-flt_byt:                                       Voir 4.8.    (ligne 7368)
-flt_sht:                                       Voir 4.8.    (ligne 7368)
-for():                                         Voir 4.1.14. (ligne 4469)
-force append:                                  Voir 3.27.   (ligne 3164)
-force overwrite:                               Voir 3.27.   (ligne 3164)
-foreword:
-          Voir ``Foreword''.                                (ligne   56)
-Fortran <1>:                                   Voir 4.10.   (ligne 7707)
-Fortran <2>:                                   Voir 4.9.    (ligne 7632)
-Fortran:                                       Voir 3.26.1. (ligne 3077)
-Fortran index convention:                      Voir 3.13.   (ligne 1947)
-FORTRAN_FORMAT:                                Voir 2.10.   (ligne 1068)
-Francesco Lovergine:                           Voir 5.1.    (ligne 8178)
-FTP:                                           Voir 3.8.    (ligne 1624)
-ftp <1>:                                       Voir 3.7.    (ligne 1382)
-ftp:                                           Voir 1.2.1.  (ligne  283)
-funding:                                       Voir 5.2.    (ligne 8205)
-g++:                                           Voir 1.2.1.  (ligne  296)
-g2d:                                           Voir 3.22.   (ligne 2658)
-g3d:                                           Voir 3.22.   (ligne 2658)
-GAMMA <1>:                                     Voir 4.1.25. (ligne 5823)
-GAMMA:                                         Voir 1.2.    (ligne  242)
-gamma function <1>:                            Voir 4.1.25. (ligne 5823)
-gamma function:                                Voir 4.1.19. (ligne 4977)
-Gaussian weights:                              Voir 4.12.2. (ligne 8029)
-Gavin Burris:                                  Voir 5.1.    (ligne 8196)
-Gayathri Venkitachalam:                        Voir 5.1.    (ligne 8166)
-gcc <1>:                                       Voir 1.2.1.  (ligne  296)
-gcc:                                           Voir 1.2.    (ligne  192)
-GCM:                                           Voir 2.2.    (ligne  582)
-George Shapavalov:                             Voir 5.1.    (ligne 8184)
-George Shapovalov:                             Voir 5.1.    (ligne 8148)
-get_miss():                                    Voir 4.1.10. (ligne 4156)
-gethostname:                                   Voir 1.2.1.  (ligne  281)
-getopt:                                        Voir 3.4.    (ligne 1188)
-getopt.h:                                      Voir 3.4.    (ligne 1188)
-getopt_long:                                   Voir 3.4.    (ligne 1188)
-getuid:                                        Voir 1.2.1.  (ligne  281)
-global attributes <1>:                         Voir 4.11.   (ligne 7779)
-global attributes <2>:                         Voir 4.7.    (ligne 6944)
-global attributes <3>:                         Voir 4.2.    (ligne 6151)
-global attributes <4>:                         Voir 3.31.   (ligne 3362)
-global attributes <5>:                         Voir 3.29.   (ligne 3210)
-global attributes <6>:                         Voir 3.28.   (ligne 3182)
-global attributes:                             Voir 2.7.    (ligne  839)
-globbing <1>:                                  Voir 4.10.   (ligne 7699)
-globbing <2>:                                  Voir 4.9.    (ligne 7624)
-globbing <3>:                                  Voir 4.3.    (ligne 6398)
-globbing <4>:                                  Voir 4.1.24. (ligne 5775)
-globbing <5>:                                  Voir 3.11.   (ligne 1904)
-globbing <6>:                                  Voir 3.5.    (ligne 1248)
-globbing:                                      Voir 2.7.    (ligne  847)
-GNU <1>:                                       Voir 3.11.   (ligne 1835)
-GNU:                                           Voir 3.4.    (ligne 1174)
-gnu-win32:                                     Voir 1.2.1.  (ligne  276)
-GNU/Linux:                                     Voir 2.8.    (ligne  931)
-GNUmakefile:                                   Voir 1.2.1.  (ligne  276)
-God:                                           Voir 3.19.   (ligne 2460)
-growing dimensions:                            Voir 4.1.24. (ligne 5717)
-GSL <1>:                                       Voir 4.1.20. (ligne 5353)
-GSL <2>:                                       Voir 4.1.19. (ligne 4962)
-GSL:                                           Voir 1.2.    (ligne  235)
-GSL_SF_BESSEL_JN:                              Voir 4.1.19. (ligne 4991)
-GSL_SF_GAMMA:                                  Voir 4.1.19. (ligne 4977)
-gsl_sf_legendre_Pl:                            Voir 4.1.19. (ligne 5047)
-gw <1>:                                        Voir 4.12.2. (ligne 8029)
-gw:                                            Voir 3.30.   (ligne 3241)
-Harry Mangalam:                                Voir 5.1.    (ligne 8142)
-HDF <1>:                                       Voir 5.2.    (ligne 8212)
-HDF <2>:                                       Voir 3.9.    (ligne 1649)
-HDF:                                           Voir 1.5.    (ligne  373)
-HDF5:                                          Voir 1.5.    (ligne  395)
-help:                                          Voir 1.6.    (ligne  474)
-Henry Butowsky:                                Voir 5.1.    (ligne 8128)
-hgh_byt:                                       Voir 4.8.    (ligne 7368)
-hgh_sht:                                       Voir 4.8.    (ligne 7368)
-Hierarchical Data Format:                      Voir 1.5.    (ligne  373)
-history <1>:                                   Voir 4.7.    (ligne 7176)
-history <2>:                                   Voir 4.2.    (ligne 6102)
-history <3>:                                   Voir 3.31.   (ligne 3362)
-history <4>:                                   Voir 3.28.   (ligne 3182)
-history <5>:                                   Voir 3.7.    (ligne 1382)
-history:                                       Voir 2.7.    (ligne  892)
-HP:                                            Voir 1.2.    (ligne  176)
-HPSS:                                          Voir 3.7.    (ligne 1419)
-hsi:                                           Voir 3.7.    (ligne 1419)
-HTML:                                          Voir 1.1.    (ligne  136)
-HTTP protocol:                                 Voir 3.7.1.  (ligne 1493)
-hyai:                                          Voir 3.30.   (ligne 3241)
-hyam:                                          Voir 3.30.   (ligne 3241)
-hybi:                                          Voir 3.30.   (ligne 3241)
-hybm:                                          Voir 3.30.   (ligne 3241)
-hybrid coordinate system:                      Voir 4.1.4.  (ligne 3728)
-hyperbolic arccosine function:                 Voir 4.1.25. (ligne 5823)
-hyperbolic arcsine function:                   Voir 4.1.25. (ligne 5823)
-hyperbolic arctangent function:                Voir 4.1.25. (ligne 5823)
-hyperbolic cosine function:                    Voir 4.1.25. (ligne 5823)
-hyperbolic sine function:                      Voir 4.1.25. (ligne 5823)
-hyperbolic tangent:                            Voir 4.1.25. (ligne 5823)
-hyperslab <1>:                                 Voir 4.12.   (ligne 7869)
-hyperslab <2>:                                 Voir 4.10.   (ligne 7675)
-hyperslab <3>:                                 Voir 4.9.    (ligne 7608)
-hyperslab <4>:                                 Voir 4.5.    (ligne 6688)
-hyperslab <5>:                                 Voir 4.4.    (ligne 6595)
-hyperslab <6>:                                 Voir 3.22.   (ligne 2647)
-hyperslab:                                     Voir 3.14.   (ligne 1982)
-hyperslabs:                                    Voir 4.1.5.  (ligne 3791)
-I/O <1>:                                       Voir 3.16.   (ligne 2156)
-I/O <2>:                                       Voir 3.13.   (ligne 1951)
-I/O:                                           Voir 3.7.1.  (ligne 1564)
-I18N:                                          Voir 3.1.    (ligne 1094)
-IBM:                                           Voir 1.2.    (ligne  176)
-icc:                                           Voir 1.2.    (ligne  192)
-ID Quoting:                                    Voir 4.1.27. (ligne 6022)
-IDL:                                           Voir 2.1.    (ligne  565)
-if():                                          Voir 4.1.8.  (ligne 4025)
-ilimit:                                        Voir 2.8.    (ligne  930)
-include:                                       Voir 4.1.15. (ligne 4511)
-including files:                               Voir 4.1.1.  (ligne 3482)
-index convention:                              Voir 3.13.   (ligne 1947)
-indgen-equivalent:                             Voir 4.1.5.  (ligne 3774)
-inexact conversion:                            Voir 4.1.25. (ligne 5909)
-Info:                                          Voir 1.1.    (ligne  136)
-input files <1>:                               Voir 3.6.    (ligne 1350)
-input files <2>:                               Voir 3.5.    (ligne 1248)
-input files:                                   Voir 2.7.    (ligne  865)
-INPUT-PATH <1>:                                Voir 3.7.    (ligne 1443)
-INPUT-PATH:                                    Voir 3.5.    (ligne 1248)
-installation <1>:                              Voir 1.6.    (ligne  537)
-installation:                                  Voir 1.2.    (ligne  176)
-int():                                         Voir 4.1.11. (ligne 4328)
-int64():                                       Voir 4.1.11. (ligne 4353)
-integration:                                   Voir 4.12.2. (ligne 7965)
-Intel:                                         Voir 1.2.    (ligne  176)
-Internationalization:                          Voir 3.1.    (ligne 1094)
-interpolation:                                 Voir 4.6.    (ligne 6774)
-introduction:                                  Voir 1.      (ligne  125)
-IPCC <1>:                                      Voir 5.2.    (ligne 8205)
-IPCC <2>:                                      Voir 4.5.    (ligne 6690)
-IPCC:                                          Voir 4.4.    (ligne 6601)
-irregular grids:                               Voir 4.1.17. (ligne 4747)
-ISO:                                           Voir 1.2.    (ligne  197)
-Jim Edwards:                                   Voir 5.1.    (ligne 8157)
-Juliana Rew:                                   Voir 5.1.    (ligne 8160)
-Karen Schuchardt:                              Voir 5.1.    (ligne 8163)
-Keith Lindsay:                                 Voir 5.1.    (ligne 8172)
-kitchen sink:                                  Voir 4.7.    (ligne 6915)
-Kyle Wilcox:                                   Voir 5.1.    (ligne 8196)
-L10N:                                          Voir 3.1.    (ligne 1095)
-large datasets <1>:                            Voir 3.3.    (ligne 1135)
-large datasets:                                Voir 2.8.    (ligne  910)
-Large File Support <1>:                        Voir 3.10.   (ligne 1776)
-Large File Support:                            Voir 2.8.    (ligne  910)
-lat_bnds:                                      Voir 3.30.   (ligne 3241)
-LD_LIBRARY_PATH:                               Voir 1.4.    (ligne  338)
-left hand casting <1>:                         Voir 4.1.4.  (ligne 3728)
-left hand casting:                             Voir 2.9.2.  (ligne 1019)
-Legendre polynomial:                           Voir 4.1.19. (ligne 5047)
-Lempel-Ziv deflation:                          Voir 3.23.   (ligne 2769)
-Len Makin:                                     Voir 5.1.    (ligne 8154)
-lexer:                                         Voir 4.1.    (ligne 3400)
-LFS <1>:                                       Voir 3.10.   (ligne 1776)
-LFS:                                           Voir 2.8.    (ligne  910)
-LHS:                                           Voir 4.1.4.  (ligne 3728)
-libnco:                                        Voir 1.2.    (ligne  197)
-libraries:                                     Voir 1.4.    (ligne  338)
-linkers:                                       Voir 3.6.    (ligne 1372)
-Linux:                                         Voir 4.1.25. (ligne 5956)
-LN:                                            Voir 4.1.25. (ligne 5823)
-ln -s <1>:                                     Voir 4.8.    (ligne 7356)
-ln -s:                                         Voir 4.3.    (ligne 6412)
-LOG:                                           Voir 4.1.25. (ligne 5823)
-LOG10:                                         Voir 4.1.25. (ligne 5823)
-logarithm, base 10:                            Voir 4.1.25. (ligne 5823)
-logarithm, natural:                            Voir 4.1.25. (ligne 5823)
-lon_bnds:                                      Voir 3.30.   (ligne 3241)
-long double:                                   Voir 4.1.25. (ligne 5954)
-long options <1>:                              Voir 4.8.    (ligne 7495)
-long options:                                  Voir 3.4.    (ligne 1187)
-longitude:                                     Voir 3.17.   (ligne 2179)
-Luk Claes:                                     Voir 5.1.    (ligne 8178)
-Macintosh:                                     Voir 1.2.    (ligne  176)
-Makefile <1>:                                  Voir 3.7.1.  (ligne 1506)
-Makefile <2>:                                  Voir 1.5.    (ligne  388)
-Makefile <3>:                                  Voir 1.2.1.  (ligne  276)
-Makefile:                                      Voir 1.2.    (ligne  202)
-malloc():                                      Voir 2.9.2.  (ligne 1028)
-manual type conversion:                        Voir 3.26.   (ligne 3054)
-map_dmn:                                       Voir 3.22.   (ligne 2696)
-map_prd:                                       Voir 3.22.   (ligne 2696)
-map_rd1:                                       Voir 3.22.   (ligne 2696)
-map_scl:                                       Voir 3.22.   (ligne 2696)
-Mark Flanner:                                  Voir 5.1.    (ligne 8172)
-Markus Liebig:                                 Voir 5.1.    (ligne 8175)
-Martin Dix:                                    Voir 5.1.    (ligne 8172)
-Martin Schmidt:                                Voir 5.1.    (ligne 8172)
-mask <1>:                                      Voir 4.1.24. (ligne 5740)
-mask:                                          Voir 4.1.17. (ligne 4747)
-mask condition <1>:                            Voir 4.12.2. (ligne 8074)
-mask condition:                                Voir 4.12.1. (ligne 7932)
-masked average:                                Voir 4.12.   (ligne 7840)
-Mass Store System:                             Voir 3.7.    (ligne 1382)
-Matej Vela:                                    Voir 5.1.    (ligne 8178)
-mathematical functions:                        Voir 4.1.25. (ligne 5823)
-max:                                           Voir 3.25.   (ligne 2897)
-max():                                         Voir 4.1.11. (ligne 4215)
-maximum:                                       Voir 3.25.   (ligne 2897)
-mean:                                          Voir 3.25.   (ligne 2897)
-memory available:                              Voir 2.9.    (ligne  952)
-memory leaks:                                  Voir 2.9.2.  (ligne 1019)
-memory requirements <1>:                       Voir 3.11.   (ligne 1824)
-memory requirements:                           Voir 2.9.    (ligne  952)
-merging files <1>:                             Voir 4.7.    (ligne 6958)
-merging files:                                 Voir 2.4.    (ligne  634)
-metadata:                                      Voir 4.7.    (ligne 7128)
-metadata optimization:                         Voir 3.2.    (ligne 1102)
-metadata, global <1>:                          Voir 4.7.    (ligne 7091)
-metadata, global:                              Voir 4.5.    (ligne 6701)
-Michael Schulz:                                Voir 5.1.    (ligne 8172)
-Microsoft <1>:                                 Voir 1.2.1.  (ligne  271)
-Microsoft:                                     Voir 1.2.    (ligne  176)
-Mike Folk:                                     Voir 1.5.    (ligne  373)
-Mike Page:                                     Voir 5.1.    (ligne 8172)
-min:                                           Voir 3.25.   (ligne 2897)
-min():                                         Voir 4.1.11. (ligne 4218)
-minimum:                                       Voir 3.25.   (ligne 2897)
-missing values <1>:                            Voir 4.6.    (ligne 6838)
-missing values <2>:                            Voir 4.2.    (ligne 6107)
-missing values:                                Voir 3.21.   (ligne 2513)
-missing values ncap2:                          Voir 4.1.10. (ligne 4119)
-missing_value <1>:                             Voir 4.11.   (ligne 7820)
-missing_value <2>:                             Voir 3.24.   (ligne 2806)
-missing_value:                                 Voir 3.21.   (ligne 2513)
-MKS units:                                     Voir 3.19.   (ligne 2341)
-modulus:                                       Voir 4.1.25. (ligne 5820)
-monotonic coordinates:                         Voir 2.10.   (ligne 1063)
-MSA:                                           Voir 3.16.   (ligne 2115)
-msk_*:                                         Voir 3.30.   (ligne 3241)
-msrcp <1>:                                     Voir 3.8.    (ligne 1624)
-msrcp:                                         Voir 3.7.    (ligne 1419)
-msread:                                        Voir 3.7.    (ligne 1419)
-MSS:                                           Voir 3.7.    (ligne 1382)
-multi-file operators <1>:                      Voir 4.10.   (ligne 7668)
-multi-file operators <2>:                      Voir 4.9.    (ligne 7601)
-multi-file operators <3>:                      Voir 4.5.    (ligne 6697)
-multi-file operators <4>:                      Voir 4.4.    (ligne 6610)
-multi-file operators <5>:                      Voir 3.6.    (ligne 1362)
-multi-file operators <6>:                      Voir 3.5.    (ligne 1282)
-multi-file operators:                          Voir 2.9.1.  (ligne  970)
-multi-hyperslab:                               Voir 3.16.   (ligne 2115)
-multiplication <1>:                            Voir 4.3.    (ligne 6352)
-multiplication:                                Voir 4.1.25. (ligne 5820)
-multiply:                                      Voir 4.3.    (ligne 6368)
-multiplying data <1>:                          Voir 4.6.    (ligne 6774)
-multiplying data:                              Voir 4.3.    (ligne 6352)
-multislab:                                     Voir 3.16.   (ligne 2115)
-naked characters:                              Voir 4.3.    (ligne 6397)
-NASA:                                          Voir 5.2.    (ligne 8212)
-NASA EOSDIS:                                   Voir 2.7.    (ligne  812)
-National Virtual Ocean Data System:            Voir 3.7.1.  (ligne 1574)
-nc__enddef():                                  Voir 3.2.    (ligne 1102)
-NC_BYTE <1>:                                   Voir 4.8.    (ligne 7368)
-NC_BYTE <2>:                                   Voir 4.3.    (ligne 6471)
-NC_BYTE:                                       Voir 3.14.   (ligne 2022)
-NC_CHAR <1>:                                   Voir 4.8.    (ligne 7368)
-NC_CHAR <2>:                                   Voir 4.3.    (ligne 6471)
-NC_CHAR:                                       Voir 3.14.   (ligne 2022)
-NC_DOUBLE <1>:                                 Voir 4.8.    (ligne 7368)
-NC_DOUBLE:                                     Voir 4.1.25. (ligne 5954)
-NC_FLOAT:                                      Voir 4.8.    (ligne 7368)
-NC_INT:                                        Voir 4.8.    (ligne 7368)
-NC_INT64:                                      Voir 1.5.    (ligne  416)
-NC_SHORT:                                      Voir 4.8.    (ligne 7368)
-NC_UBYTE:                                      Voir 1.5.    (ligne  416)
-NC_UINT:                                       Voir 1.5.    (ligne  416)
-NC_UINT64:                                     Voir 1.5.    (ligne  416)
-NC_USHORT:                                     Voir 1.5.    (ligne  416)
-ncadd:                                         Voir 4.3.    (ligne 6352)
-ncap <1>:                                      Voir 4.1.    (ligne 3400)
-ncap:                                          Voir 3.3.    (ligne 1135)
-ncap2 <1>:                                     Voir 4.8.    (ligne 7292)
-ncap2 <2>:                                     Voir 4.1.    (ligne 3400)
-ncap2 <3>:                                     Voir 3.26.2. (ligne 3154)
-ncap2 <4>:                                     Voir 2.9.2.  (ligne 1019)
-ncap2:                                         Voir 1.2.    (ligne  235)
-NCAR:                                          Voir 2.2.    (ligne  582)
-NCAR MSS:                                      Voir 3.7.    (ligne 1382)
-ncatted <1>:                                   Voir 4.2.    (ligne 6085)
-ncatted <2>:                                   Voir 3.28.   (ligne 3200)
-ncatted <3>:                                   Voir 3.21.   (ligne 2540)
-ncatted:                                       Voir 3.11.   (ligne 1835)
-ncbo <1>:                                      Voir 4.3.    (ligne 6352)
-ncbo:                                          Voir 3.21.   (ligne 2588)
-ncdiff:                                        Voir 4.3.    (ligne 6352)
-ncdivide:                                      Voir 4.3.    (ligne 6352)
-ncdump <1>:                                    Voir 4.7.    (ligne 7128)
-ncdump:                                        Voir 3.9.    (ligne 1747)
-ncea <1>:                                      Voir 4.4.    (ligne 6577)
-ncea <2>:                                      Voir 3.21.   (ligne 2588)
-ncea:                                          Voir 2.6.2.  (ligne  779)
-ncecat <1>:                                    Voir 4.5.    (ligne 6663)
-ncecat:                                        Voir 2.6.1.  (ligne  721)
-ncextr:                                        Voir 4.7.    (ligne 6926)
-ncflint <1>:                                   Voir 4.6.    (ligne 6774)
-ncflint <2>:                                   Voir 3.21.   (ligne 2588)
-ncflint:                                       Voir 2.6.3.  (ligne  801)
-ncks <1>:                                      Voir 4.7.    (ligne 6915)
-ncks <2>:                                      Voir 4.1.24. (ligne 5798)
-ncks <3>:                                      Voir 3.23.   (ligne 2800)
-ncks:                                          Voir 3.9.    (ligne 1731)
-NCL:                                           Voir 2.1.    (ligne  565)
-ncmult:                                        Voir 4.3.    (ligne 6352)
-ncmultiply:                                    Voir 4.3.    (ligne 6352)
-NCO availability:                              Voir 1.1.    (ligne  128)
-NCO homepage:                                  Voir 1.1.    (ligne  152)
-nco.config.log.${GNU_TRP}.foo:                 Voir 1.6.    (ligne  537)
-nco.configure.${GNU_TRP}.foo:                  Voir 1.6.    (ligne  537)
-nco.make.${GNU_TRP}.foo:                       Voir 1.6.    (ligne  537)
-nco_input_file_list <1>:                       Voir 3.29.   (ligne 3210)
-nco_input_file_list:                           Voir 2.7.    (ligne  839)
-nco_input_file_number <1>:                     Voir 3.29.   (ligne 3210)
-nco_input_file_number:                         Voir 2.7.    (ligne  839)
-nco_openmp_thread_number:                      Voir 3.3.    (ligne 1123)
-ncpack:                                        Voir 4.8.    (ligne 7276)
-ncpdq <1>:                                     Voir 4.10.   (ligne 7680)
-ncpdq <2>:                                     Voir 4.8.    (ligne 7276)
-ncpdq <3>:                                     Voir 4.5.    (ligne 6722)
-ncpdq <4>:                                     Voir 3.22.   (ligne 2647)
-ncpdq <5>:                                     Voir 3.3.    (ligne 1135)
-ncpdq:                                         Voir 2.6.1.  (ligne  754)
-ncra <1>:                                      Voir 4.9.    (ligne 7587)
-ncra <2>:                                      Voir 4.1.24. (ligne 5798)
-ncra <3>:                                      Voir 3.21.   (ligne 2588)
-ncra:                                          Voir 2.6.2.  (ligne  779)
-ncrcat <1>:                                    Voir 4.10.   (ligne 7654)
-ncrcat <2>:                                    Voir 3.3.    (ligne 1135)
-ncrcat:                                        Voir 2.6.1.  (ligne  721)
-ncrename <1>:                                  Voir 4.11.   (ligne 7734)
-ncrename:                                      Voir 3.21.   (ligne 2540)
-NCSA:                                          Voir 1.5.    (ligne  395)
-ncsub:                                         Voir 4.3.    (ligne 6352)
-ncsubtract:                                    Voir 4.3.    (ligne 6352)
-ncunpack:                                      Voir 4.8.    (ligne 7276)
-ncwa <1>:                                      Voir 4.12.   (ligne 7840)
-ncwa <2>:                                      Voir 4.1.24. (ligne 5798)
-ncwa <3>:                                      Voir 3.21.   (ligne 2588)
-ncwa <4>:                                      Voir 3.3.    (ligne 1135)
-ncwa:                                          Voir 2.6.2.  (ligne  779)
-ndims():                                       Voir 4.1.11. (ligne 4260)
-NEARBYINT:                                     Voir 4.1.25. (ligne 5823)
-nearest integer function (exact):              Voir 4.1.25. (ligne 5823)
-nearest integer function (inexact):            Voir 4.1.25. (ligne 5823)
-NEC:                                           Voir 1.2.    (ligne  176)
-nesting:                                       Voir 4.1.1.  (ligne 3482)
-netCDF:                                        Voir 1.1.    (ligne  156)
-netCDF2 <1>:                                   Voir 3.9.    (ligne 1649)
-netCDF2:                                       Voir 1.5.    (ligne  363)
-NETCDF2_ONLY:                                  Voir 1.5.    (ligne  380)
-netCDF3 <1>:                                   Voir 3.9.    (ligne 1649)
-netCDF3:                                       Voir 1.5.    (ligne  363)
-netCDF3 classic file format:                   Voir 3.9.    (ligne 1731)
-netCDF4 <1>:                                   Voir 3.9.    (ligne 1649)
-netCDF4:                                       Voir 1.5.    (ligne  395)
-netCDF4 classic file format:                   Voir 3.9.    (ligne 1731)
-netCDF4 file format:                           Voir 3.9.    (ligne 1731)
-NETCDF4 files:                                 Voir 3.9.    (ligne 1649)
-NETCDF4_CLASSIC files:                         Voir 3.9.    (ligne 1649)
-NETCDF4_ROOT:                                  Voir 1.5.    (ligne  446)
-NINTAP <1>:                                    Voir 4.10.   (ligne 7699)
-NINTAP <2>:                                    Voir 4.9.    (ligne 7624)
-NINTAP:                                        Voir 3.5.    (ligne 1248)
-NO_NETCDF_2:                                   Voir 1.5.    (ligne  371)
-non-coordinate grid properties:                Voir 3.30.   (ligne 3271)
-non-rectangular grids:                         Voir 4.1.17. (ligne 4747)
-non-standard grids:                            Voir 4.1.17. (ligne 4747)
-normalization:                                 Voir 4.12.2. (ligne 7965)
-NRA:                                           Voir 5.2.    (ligne 8212)
-nrnet:                                         Voir 3.7.    (ligne 1419)
-NSF:                                           Voir 5.2.    (ligne 8205)
-NT (Microsoft operating system):               Voir 1.2.1.  (ligne  271)
-NUL <1>:                                       Voir 4.8.    (ligne 7400)
-NUL:                                           Voir 4.2.    (ligne 6288)
-NUL-termination:                               Voir 4.2.    (ligne 6288)
-null operation:                                Voir 4.6.    (ligne 6892)
-number literals ncap:                          Voir 4.1.7.  (ligne 3960)
-numerator:                                     Voir 4.12.2. (ligne 7965)
-NVODS:                                         Voir 3.7.1.  (ligne 1574)
-nxt_lsr:                                       Voir 4.8.    (ligne 7368)
-oceanography:                                  Voir 3.7.1.  (ligne 1493)
-octal dump:                                    Voir 3.9.    (ligne 1759)
-od:                                            Voir 3.9.    (ligne 1759)
-OMP_NUM_THREADS:                               Voir 3.3.    (ligne 1135)
-on-line documentation:                         Voir 1.1.    (ligne  136)
-open source <1>:                               Voir 3.7.1.  (ligne 1574)
-open source:
-          Voir ``Foreword''.                                (ligne   74)
-Open-source Project for a Network Data Access Protocol:Voir 3.7.1.
-                                                            (ligne 1493)
-OPeNDAP.:                                      Voir 3.7.1.  (ligne 1493)
-OpenMP <1>:                                    Voir 3.3.    (ligne 1123)
-OpenMP <2>:                                    Voir 2.9.1.  (ligne 1012)
-OpenMP:                                        Voir 2.9.    (ligne  959)
-operation types <1>:                           Voir 4.12.   (ligne 7914)
-operation types <2>:                           Voir 4.9.    (ligne 7617)
-operation types <3>:                           Voir 4.4.    (ligne 6604)
-operation types:                               Voir 3.25.   (ligne 2897)
-operator speed <1>:                            Voir 4.11.   (ligne 7770)
-operator speed <2>:                            Voir 3.21.   (ligne 2571)
-operator speed <3>:                            Voir 3.2.    (ligne 1102)
-operator speed <4>:                            Voir 2.10.   (ligne 1059)
-operator speed <5>:                            Voir 2.3.    (ligne  606)
-operator speed:                                Voir 1.4.    (ligne  339)
-operators:
-          Voir ``Summary''.                                 (ligne  111)
-OptIPuter:                                     Voir 5.2.    (ligne 8205)
-Orion Powlawski:                               Voir 5.1.    (ligne 8181)
-ORO <1>:                                       Voir 4.12.2. (ligne 8041)
-ORO:                                           Voir 3.30.   (ligne 3241)
-OS:                                            Voir 1.2.    (ligne  176)
-output file <1>:                               Voir 3.6.    (ligne 1350)
-output file:                                   Voir 2.7.    (ligne  865)
-OUTPUT-PATH:                                   Voir 3.7.    (ligne 1443)
-overview:                                      Voir 2.10.   (ligne 1043)
-overwriting files <1>:                         Voir 3.27.   (ligne 3164)
-overwriting files:                             Voir 2.3.    (ligne  612)
-pack():                                        Voir 4.1.11. (ligne 4237)
-pack(x):                                       Voir 3.24.   (ligne 2806)
-pack_byte():                                   Voir 4.1.11. (ligne 4241)
-pack_int():                                    Voir 4.1.11. (ligne 4247)
-pack_short():                                  Voir 4.1.11. (ligne 4244)
-packing <1>:                                   Voir 4.10.   (ligne 7680)
-packing <2>:                                   Voir 4.8.    (ligne 7276)
-packing <3>:                                   Voir 4.5.    (ligne 6722)
-packing <4>:                                   Voir 3.24.   (ligne 2806)
-packing <5>:                                   Voir 3.22.   (ligne 2647)
-packing:                                       Voir 3.7.1.  (ligne 1556)
-packing map:                                   Voir 4.8.    (ligne 7362)
-packing policy:                                Voir 4.8.    (ligne 7292)
-papers:                                        Voir 2.10.   (ligne 1043)
-parallelism <1>:                               Voir 5.2.    (ligne 8207)
-parallelism:                                   Voir 3.3.    (ligne 1123)
-parser:                                        Voir 4.1.    (ligne 3400)
-pasting variables:                             Voir 2.4.    (ligne  634)
-pathCC:                                        Voir 1.2.    (ligne  192)
-pathcc:                                        Voir 1.2.    (ligne  192)
-PathScale:                                     Voir 1.2.    (ligne  176)
-Patrice Dumas:                                 Voir 5.1.    (ligne 8181)
-Patrick Kursawe:                               Voir 5.1.    (ligne 8184)
-pattern matching <1>:                          Voir 4.2.    (ligne 6128)
-pattern matching <2>:                          Voir 3.11.   (ligne 1835)
-pattern matching:                              Voir 2.7.    (ligne  847)
-PayPal:                                        Voir 5.      (ligne 8104)
-PCK_MAP:                                       Voir 4.8.    (ligne 7362)
-PCK_PLC:                                       Voir 4.8.    (ligne 7299)
-peak memory usage:                             Voir 2.9.    (ligne  952)
-performance <1>:                               Voir 4.11.   (ligne 7770)
-performance <2>:                               Voir 3.21.   (ligne 2571)
-performance <3>:                               Voir 3.2.    (ligne 1102)
-performance <4>:                               Voir 2.10.   (ligne 1049)
-performance <5>:                               Voir 2.3.    (ligne  606)
-performance:                                   Voir 1.4.    (ligne  339)
-Perl <1>:                                      Voir 4.2.    (ligne 6262)
-Perl <2>:                                      Voir 2.7.    (ligne  879)
-Perl:                                          Voir 2.1.    (ligne  565)
-permute dimensions:                            Voir 4.8.    (ligne 7276)
-permute():                                     Voir 4.1.5.  (ligne 3883)
-pgCC:                                          Voir 1.2.    (ligne  192)
-pgcc:                                          Voir 1.2.    (ligne  192)
-PGI:                                           Voir 1.2.    (ligne  176)
-philosophy:                                    Voir 2.1.    (ligne  556)
-pipes:                                         Voir 2.7.    (ligne  860)
-plc_all:                                       Voir 3.22.   (ligne 2658)
-plc_g2d:                                       Voir 3.22.   (ligne 2658)
-plc_g3d:                                       Voir 3.22.   (ligne 2658)
-plc_xpl:                                       Voir 3.22.   (ligne 2658)
-portability:                                   Voir 1.2.    (ligne  176)
-positional arguments:                          Voir 3.6.    (ligne 1350)
-POSIX <1>:                                     Voir 3.11.   (ligne 1847)
-POSIX:                                         Voir 3.4.    (ligne 1174)
-POW:                                           Voir 4.1.25. (ligne 5823)
-power:                                         Voir 4.1.25. (ligne 5820)
-power function:                                Voir 4.1.25. (ligne 5823)
-prd:                                           Voir 3.22.   (ligne 2696)
-precision:                                     Voir 4.1.25. (ligne 5954)
-preprocessor tokens:                           Voir 1.2.1.  (ligne  276)
-presentations:                                 Voir 1.1.    (ligne  146)
-print()ncap:                                   Voir 4.1.9.  (ligne 4090)
-printf:                                        Voir 1.2.    (ligne  205)
-printf() <1>:                                  Voir 4.7.    (ligne 7158)
-printf():                                      Voir 4.2.    (ligne 6264)
-printing files contents:                       Voir 4.7.    (ligne 6915)
-printing variables:                            Voir 4.7.    (ligne 6915)
-Processor <1>:                                 Voir 4.10.   (ligne 7699)
-Processor:                                     Voir 4.9.    (ligne 7624)
-Processor, CCM:                                Voir 3.5.    (ligne 1248)
-promotion <1>:                                 Voir 4.1.25. (ligne 5913)
-promotion:                                     Voir 3.26.   (ligne 3054)
-proposals:                                     Voir 5.2.    (ligne 8205)
-pseudonym:                                     Voir 1.3.    (ligne  312)
-publications:                                  Voir 1.1.    (ligne  146)
-QLogic:                                        Voir 1.2.    (ligne  176)
-quadruple precision:                           Voir 4.1.25. (ligne 5954)
-quiet:                                         Voir 4.7.    (ligne 7150)
-quotes <1>:                                    Voir 4.8.    (ligne 7495)
-quotes <2>:                                    Voir 4.3.    (ligne 6398)
-quotes <3>:                                    Voir 4.1.24. (ligne 5775)
-quotes:                                        Voir 3.11.   (ligne 1904)
-RAM:                                           Voir 2.9.    (ligne  952)
-ram_delete():                                  Voir 4.1.12. (ligne 4384)
-ram_write():                                   Voir 4.1.12. (ligne 4384)
-rank <1>:                                      Voir 4.12.   (ligne 7878)
-rank:                                          Voir 4.3.    (ligne 6452)
-rcp <1>:                                       Voir 3.7.    (ligne 1382)
-rcp:                                           Voir 1.2.1.  (ligne  283)
-RCS:                                           Voir 3.32.   (ligne 3369)
-rd1:                                           Voir 3.22.   (ligne 2696)
-re-dimension:                                  Voir 4.8.    (ligne 7276)
-re-order dimensions:                           Voir 4.8.    (ligne 7276)
-record average:                                Voir 4.9.    (ligne 7587)
-record concatenation:                          Voir 4.10.   (ligne 7654)
-record dimension <1>:                          Voir 4.10.   (ligne 7665)
-record dimension <2>:                          Voir 4.9.    (ligne 7587)
-record dimension <3>:                          Voir 4.8.    (ligne 7428)
-record dimension <4>:                          Voir 4.7.    (ligne 7037)
-record dimension <5>:                          Voir 4.5.    (ligne 6683)
-record dimension <6>:                          Voir 4.4.    (ligne 6595)
-record dimension <7>:                          Voir 3.22.   (ligne 2754)
-record dimension <8>:                          Voir 3.13.   (ligne 1963)
-record dimension:                              Voir 2.4.    (ligne  637)
-record variable <1>:                           Voir 4.8.    (ligne 7432)
-record variable:                               Voir 3.13.   (ligne 1958)
-rectangular grids:                             Voir 4.1.17. (ligne 4747)
-regex:                                         Voir 3.11.   (ligne 1847)
-regressions archive:                           Voir 1.6.    (ligne  544)
-regular expressions <1>:                       Voir 4.2.    (ligne 6128)
-regular expressions <2>:                       Voir 4.1.24. (ligne 5775)
-regular expressions <3>:                       Voir 3.11.   (ligne 1835)
-regular expressions <4>:                       Voir 3.5.    (ligne 1248)
-regular expressions:                           Voir 2.7.    (ligne  847)
-Remik Ziemlinski:                              Voir 5.1.    (ligne 8172)
-remote files <1>:                              Voir 3.7.    (ligne 1382)
-remote files:                                  Voir 1.2.1.  (ligne  283)
-renaming attributes:                           Voir 4.11.   (ligne 7734)
-renaming dimensions:                           Voir 4.11.   (ligne 7734)
-renaming variables:                            Voir 4.11.   (ligne 7734)
-reporting bugs:                                Voir 1.6.    (ligne  474)
-reshape variables:                             Voir 4.8.    (ligne 7276)
-restrict:                                      Voir 1.2.    (ligne  228)
-reverse data:                                  Voir 4.8.    (ligne 7525)
-reverse dimensions:                            Voir 4.8.    (ligne 7276)
-reverse():                                     Voir 4.1.5.  (ligne 3876)
-RINT:                                          Voir 4.1.25. (ligne 5823)
-rms:                                           Voir 3.25.   (ligne 2897)
-rmssdn:                                        Voir 3.25.   (ligne 2897)
-rmssdn():                                      Voir 4.1.11. (ligne 4224)
-root-mean-square:                              Voir 3.25.   (ligne 2897)
-Rorik Peterson:                                Voir 5.1.    (ligne 8135)
-ROUND:                                         Voir 4.1.25. (ligne 5823)
-rounding functions:                            Voir 4.1.25. (ligne 5823)
-RPM:                                           Voir 1.5.    (ligne  441)
-running average:                               Voir 4.9.    (ligne 7587)
-safeguards <1>:                                Voir 4.11.   (ligne 7755)
-safeguards:                                    Voir 2.3.    (ligne  593)
-scale_factor <1>:                              Voir 4.10.   (ligne 7680)
-scale_factor <2>:                              Voir 4.8.    (ligne 7292)
-scale_factor <3>:                              Voir 4.5.    (ligne 6722)
-scale_factor:                                  Voir 3.24.   (ligne 2806)
-SCALE_FORMAT:                                  Voir 2.10.   (ligne 1068)
-scaling:                                       Voir 2.10.   (ligne 1049)
-Scientific Data Operators:                     Voir 5.2.    (ligne 8205)
-scl:                                           Voir 3.22.   (ligne 2696)
-Scott Capps:                                   Voir 5.1.    (ligne 8169)
-scp <1>:                                       Voir 3.7.    (ligne 1382)
-scp:                                           Voir 1.2.1.  (ligne  283)
-script file:                                   Voir 4.1.    (ligne 3417)
-SDO:                                           Voir 5.2.    (ligne 8205)
-SEIII:                                         Voir 5.2.    (ligne 8205)
-semi-colon:                                    Voir 4.1.1.  (ligne 3475)
-server <1>:                                    Voir 3.8.    (ligne 1627)
-server <2>:                                    Voir 3.7.1.  (ligne 1493)
-server:                                        Voir 2.8.    (ligne  927)
-Server-Side Distributed Data Reduction & Analysis:Voir 5.2. (ligne 8205)
-server-side processing <1>:                    Voir 5.2.    (ligne 8205)
-server-side processing:                        Voir 3.7.1.  (ligne 1597)
-set_miss():                                    Voir 4.1.10. (ligne 4147)
-sftp <1>:                                      Voir 3.7.    (ligne 1382)
-sftp:                                          Voir 1.2.1.  (ligne  283)
-SGI:                                           Voir 1.2.    (ligne  176)
-shared memory machines:                        Voir 2.9.    (ligne  959)
-shared memory parallelism:                     Voir 3.3.    (ligne 1123)
-shell <1>:                                     Voir 4.3.    (ligne 6398)
-shell <2>:                                     Voir 4.1.24. (ligne 5775)
-shell <3>:                                     Voir 3.19.   (ligne 2397)
-shell <4>:                                     Voir 3.11.   (ligne 1904)
-shell:                                         Voir 2.7.    (ligne  847)
-SIGNEDNESS:                                    Voir 2.10.   (ligne 1068)
-SIN:                                           Voir 4.1.25. (ligne 5823)
-sine function:                                 Voir 4.1.25. (ligne 5823)
-single precision:                              Voir 4.1.25. (ligne 5954)
-SINH:                                          Voir 4.1.25. (ligne 5823)
-size():                                        Voir 4.1.11. (ligne 4257)
-SMP:                                           Voir 3.3.    (ligne 1123)
-sort alphabetically:                           Voir 4.7.    (ligne 7011)
-source code:                                   Voir 1.1.    (ligne  128)
-special characters:                            Voir 4.2.    (ligne 6279)
-speed <1>:                                     Voir 4.11.   (ligne 7770)
-speed <2>:                                     Voir 3.21.   (ligne 2571)
-speed <3>:                                     Voir 3.2.    (ligne 1102)
-speed <4>:                                     Voir 2.10.   (ligne 1059)
-speed <5>:                                     Voir 2.8.    (ligne  936)
-speed <6>:                                     Voir 2.3.    (ligne  606)
-speed:                                         Voir 1.4.    (ligne  339)
-sqravg:                                        Voir 3.25.   (ligne 2897)
-sqravg():                                      Voir 4.1.11. (ligne 4209)
-SQRT:                                          Voir 4.1.25. (ligne 5823)
-sqrt:                                          Voir 3.25.   (ligne 2897)
-square root function:                          Voir 4.1.25. (ligne 5823)
-SSDDRA:                                        Voir 5.2.    (ligne 8205)
-SSH <1>:                                       Voir 3.8.    (ligne 1624)
-SSH:                                           Voir 1.2.1.  (ligne  283)
-sshort():                                      Voir 4.1.11. (ligne 4325)
-standard deviation:                            Voir 3.25.   (ligne 2897)
-standard input <1>:                            Voir 4.10.   (ligne 7668)
-standard input <2>:                            Voir 4.9.    (ligne 7601)
-standard input <3>:                            Voir 4.5.    (ligne 6697)
-standard input <4>:                            Voir 4.4.    (ligne 6610)
-standard input:                                Voir 2.7.    (ligne  830)
-standard_name:                                 Voir 3.18.   (ligne 2227)
-statement:                                     Voir 4.1.1.  (ligne 3460)
-static linking:                                Voir 1.4.    (ligne  338)
-stdin <1>:                                     Voir 4.10.   (ligne 7668)
-stdin <2>:                                     Voir 4.9.    (ligne 7601)
-stdin <3>:                                     Voir 4.5.    (ligne 6697)
-stdin <4>:                                     Voir 4.4.    (ligne 6610)
-stdin <5>:                                     Voir 3.29.   (ligne 3210)
-stdin:                                         Voir 2.7.    (ligne  830)
-stride <1>:                                    Voir 4.10.   (ligne 7676)
-stride <2>:                                    Voir 4.9.    (ligne 7609)
-stride <3>:                                    Voir 4.7.    (ligne 7033)
-stride <4>:                                    Voir 3.19.   (ligne 2388)
-stride <5>:                                    Voir 3.16.   (ligne 2145)
-stride <6>:                                    Voir 3.15.   (ligne 2055)
-stride:                                        Voir 3.14.   (ligne 2011)
-strings:                                       Voir 4.2.    (ligne 6288)
-stub:                                          Voir 3.7.    (ligne 1452)
-subsetting <1>:                                Voir 4.7.    (ligne 7184)
-subsetting <2>:                                Voir 3.30.   (ligne 3306)
-subsetting <3>:                                Voir 3.12.   (ligne 1922)
-subsetting:                                    Voir 3.11.   (ligne 1808)
-subtract:                                      Voir 4.3.    (ligne 6368)
-subtracting data:                              Voir 4.3.    (ligne 6352)
-subtraction <1>:                               Voir 4.3.    (ligne 6352)
-subtraction:                                   Voir 4.1.25. (ligne 5820)
-summary:
-          Voir ``Summary''.                                 (ligne  111)
-Sun:                                           Voir 1.2.    (ligne  176)
-swap space <1>:                                Voir 2.9.    (ligne  952)
-swap space:                                    Voir 2.8.    (ligne  915)
-switches:                                      Voir 3.4.    (ligne 1174)
-symbolic links <1>:                            Voir 4.8.    (ligne 7356)
-symbolic links <2>:                            Voir 4.3.    (ligne 6412)
-symbolic links <3>:                            Voir 2.7.    (ligne  873)
-symbolic links <4>:                            Voir 2.6.    (ligne  691)
-symbolic links:                                Voir 1.3.    (ligne  302)
-synchronous file access:                       Voir 3.7.    (ligne 1382)
-synonym:                                       Voir 1.3.    (ligne  312)
-syntax:                                        Voir 4.1.1.  (ligne 3460)
-Takeshi Enomoto:                               Voir 5.1.    (ligne 8190)
-TAN:                                           Voir 4.1.25. (ligne 5823)
-TANH:                                          Voir 4.1.25. (ligne 5823)
-temporary output files <1>:                    Voir 4.11.   (ligne 7755)
-temporary output files:                        Voir 2.3.    (ligne  593)
-TeXinfo:                                       Voir 1.1.    (ligne  136)
-THR_NBR:                                       Voir 3.3.    (ligne 1135)
-threads <1>:                                   Voir 3.3.    (ligne 1123)
-threads <2>:                                   Voir 2.9.1.  (ligne 1012)
-threads:                                       Voir 2.9.    (ligne  959)
-time <1>:                                      Voir 3.31.   (ligne 3338)
-time:                                          Voir 3.19.   (ligne 2380)
-time-averaging:                                Voir 4.1.24. (ligne 5798)
-time_offset:                                   Voir 3.31.   (ligne 3338)
-timestamp:                                     Voir 3.28.   (ligne 3182)
-total:                                         Voir 3.25.   (ligne 2897)
-transpose <1>:                                 Voir 4.8.    (ligne 7442)
-transpose:                                     Voir 3.13.   (ligne 1956)
-TRUNC:                                         Voir 4.1.25. (ligne 5823)
-truncation function:                           Voir 4.1.25. (ligne 5823)
-truth condition <1>:                           Voir 4.12.2. (ligne 8074)
-truth condition:                               Voir 4.12.1. (ligne 7932)
-ttl:                                           Voir 3.25.   (ligne 2897)
-ttl():                                         Voir 4.1.11. (ligne 4227)
-type conversion:                               Voir 3.26.   (ligne 3052)
-type():                                        Voir 4.1.11. (ligne 4263)
-ubyte():                                       Voir 4.1.11. (ligne 4344)
-UDUnits <1>:                                   Voir 3.30.   (ligne 3241)
-UDUnits <2>:                                   Voir 3.19.   (ligne 2327)
-UDUnits:                                       Voir 1.2.    (ligne  184)
-uint():                                        Voir 4.1.11. (ligne 4350)
-ulimit:                                        Voir 2.8.    (ligne  931)
-unary operations:                              Voir 2.9.2.  (ligne 1019)
-UNICOS:                                        Voir 2.8.    (ligne  927)
-Unidata <1>:                                   Voir 3.19.   (ligne 2327)
-Unidata <2>:                                   Voir 1.5.    (ligne  395)
-Unidata:                                       Voir 1.2.    (ligne  184)
-union of two files:                            Voir 2.4.    (ligne  657)
-unit64():                                      Voir 4.1.11. (ligne 4356)
-units <1>:                                     Voir 4.6.    (ligne 6907)
-units <2>:                                     Voir 4.2.    (ligne 6322)
-units:                                         Voir 3.19.   (ligne 2327)
-UNIX <1>:                                      Voir 3.5.    (ligne 1254)
-UNIX <2>:                                      Voir 3.4.    (ligne 1174)
-UNIX <3>:                                      Voir 2.7.    (ligne  847)
-UNIX <4>:                                      Voir 1.2.1.  (ligne  281)
-UNIX:                                          Voir 1.2.    (ligne  184)
-unlimited dimension:                           Voir 4.5.    (ligne 6683)
-unpack():                                      Voir 4.1.11. (ligne 4250)
-unpack(x):                                     Voir 3.24.   (ligne 2806)
-unpacking <1>:                                 Voir 4.10.   (ligne 7680)
-unpacking <2>:                                 Voir 4.8.    (ligne 7276)
-unpacking <3>:                                 Voir 4.5.    (ligne 6722)
-unpacking <4>:                                 Voir 3.24.   (ligne 2806)
-unpacking:                                     Voir 3.7.1.  (ligne 1556)
-URL:                                           Voir 3.7.    (ligne 1382)
-ushort():                                      Voir 4.1.11. (ligne 4347)
-value list:                                    Voir 4.1.6.  (ligne 3918)
-variable names:                                Voir 4.11.   (ligne 7734)
-variance:                                      Voir 3.25.   (ligne 2897)
-version:                                       Voir 3.32.   (ligne 3369)
-Vista (Microsoft operating system):            Voir 1.2.1.  (ligne  271)
-weighted average:                              Voir 4.12.   (ligne 7840)
-wget:                                          Voir 3.7.    (ligne 1382)
-where():                                       Voir 4.1.13. (ligne 4399)
-while():                                       Voir 4.1.14. (ligne 4469)
-whitespace:                                    Voir 3.19.   (ligne 2388)
-wildcards <1>:                                 Voir 4.2.    (ligne 6128)
-wildcards <2>:                                 Voir 3.11.   (ligne 1835)
-wildcards:                                     Voir 3.5.    (ligne 1248)
-WIN32:                                         Voir 1.2.1.  (ligne  276)
-Windows <1>:                                   Voir 1.2.1.  (ligne  271)
-Windows:                                       Voir 1.2.    (ligne  176)
-wrapped coordinates <1>:                       Voir 4.7.    (ligne 7257)
-wrapped coordinates <2>:                       Voir 4.1.17. (ligne 4774)
-wrapped coordinates <3>:                       Voir 3.17.   (ligne 2179)
-wrapped coordinates:                           Voir 3.14.   (ligne 2027)
-wrapped filenames:                             Voir 3.5.    (ligne 1311)
-WWW documentation:                             Voir 1.1.    (ligne  136)
-xargs <1>:                                     Voir 3.6.    (ligne 1367)
-xargs:                                         Voir 2.7.    (ligne  847)
-xlc:                                           Voir 1.2.    (ligne  192)
-xlC:                                           Voir 1.2.    (ligne  192)
-XP (Microsoft operating system):               Voir 1.2.1.  (ligne  271)
-xpl:                                           Voir 3.22.   (ligne 2658)
-Yorick <1>:                                    Voir 2.10.   (ligne 1071)
-Yorick:                                        Voir 2.1.    (ligne  565)
-| (wildcard character):                        Voir 3.11.   (ligne 1861)
-Table of Contents
-*****************
-
-NCO User's Guide
-Foreword
-Summary
-1 Introduction
-  1.1 Availability
-  1.2 Operating systems compatible with NCO
-    1.2.1 Compiling NCO for Microsoft Windows OS
-  1.3 Symbolic Links
-  1.4 Libraries
-  1.5 netCDF2/3/4 and HDF4/5 Support
-  1.6 Help Requests and Bug Reports
-2 Operator Strategies
-  2.1 Philosophy
-  2.2 Climate Model Paradigm
-  2.3 Temporary Output Files
-  2.4 Appending Variables
-  2.5 Simple Arithmetic and Interpolation
-  2.6 Averagers vs. Concatenators
-    2.6.1 Concatenators `ncrcat' and `ncecat'
-    2.6.2 Averagers `ncea', `ncra', and `ncwa'
-    2.6.3 Interpolator `ncflint'
-  2.7 Large Numbers of Files
-  2.8 Large Datasets
-  2.9 Memory Requirements
-    2.9.1 Single and Multi-file Operators
-    2.9.2 Memory for `ncap2'
-  2.10 Performance
-3 NCO Features
-  3.1 Internationalization
-  3.2 Metadata Optimization
-  3.3 OpenMP Threading
-  3.4 Command Line Options
-  3.5 Specifying Input Files
-  3.6 Specifying Output Files
-  3.7 Accessing Remote Files
-    3.7.1 OPeNDAP
-  3.8 Retaining Retrieved Files
-  3.9 Selecting Output File Format
-  3.10 Large File Support
-  3.11 Subsetting Variables
-  3.12 Subsetting Coordinate Variables
-  3.13 C and Fortran Index conventions
-  3.14 Hyperslabs
-  3.15 Stride
-  3.16 Multislabs
-  3.17 Wrapped Coordinates
-  3.18 Auxiliary Coordinates
-  3.19 UDUnits Support
-  3.20 Rebasing Time Coordinate
-  3.21 Missing values
-  3.22 Chunking
-  3.23 Deflation
-  3.24 Packed data
-    Packing Algorithm
-    Unpacking Algorithm
-    Default Handling of Packed Data
-  3.25 Operation Types
-  3.26 Type Conversion
-    3.26.1 Automatic type conversion
-    3.26.2 Manual type conversion
-  3.27 Batch Mode
-  3.28 History Attribute
-  3.29 File List Attributes
-  3.30 CF Conventions
-  3.31 ARM Conventions
-  3.32 Operator Version
-4 Operator Reference Manual
-  4.1 `ncap2' netCDF Arithmetic Processor
-    4.1.1 Syntax of `ncap2' statements
-    4.1.2 Expressions
-    4.1.3 Dimensions
-    4.1.4 Left hand casting
-    4.1.5 Arrays and hyperslabs
-    4.1.6 Attributes
-    4.1.7 Number literals
-    4.1.8 if statement
-    4.1.9 print statement
-    4.1.10 Missing values ncap2
-    4.1.11 Methods and functions
-    4.1.12 RAM variables
-    4.1.13 Where statement
-    4.1.14 Loops
-    4.1.15 Include files
-    4.1.16 `sort' methods
-    4.1.17 Irregular Grids
-    4.1.18 Bilinear interpolation
-    4.1.19 GSL special functions
-    4.1.20 GSL interpolation
-    4.1.21 GSL least-squares fitting
-    4.1.22 GSL statistics
-    4.1.23 GSL random number generation
-    4.1.24 Examples ncap2
-    4.1.25 Intrinsic mathematical methods
-    4.1.26 Operators precedence and associativity
-    4.1.27 ID Quoting
-  4.2 `ncatted' netCDF Attribute Editor
-  4.3 `ncbo' netCDF Binary Operator
-  4.4 `ncea' netCDF Ensemble Averager
-  4.5 `ncecat' netCDF Ensemble Concatenator
-  4.6 `ncflint' netCDF File Interpolator
-  4.7 `ncks' netCDF Kitchen Sink
-    Options specific to `ncks'
-  4.8 `ncpdq' netCDF Permute Dimensions Quickly
-    Packing and Unpacking Functions
-    Dimension Permutation
-  4.9 `ncra' netCDF Record Averager
-  4.10 `ncrcat' netCDF Record Concatenator
-  4.11 `ncrename' netCDF Renamer
-  4.12 `ncwa' netCDF Weighted Averager
-    4.12.1 Mask condition
-    4.12.2 Normalization and Integration
-5 Contributing
-  5.1 Contributors
-  5.2 Proposals for Institutional Funding
-6 CCSM Example
-7 References
-General Index
-
-
diff --git a/doc/nco.xml b/doc/nco.xml
deleted file mode 100644
index 0d45e13..0000000
--- a/doc/nco.xml
+++ /dev/null
@@ -1,7547 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE texinfo PUBLIC "-//GNU//DTD TexinfoML V4.13//EN" "http://www.gnu.org/software/texinfo/dtd/4.13/texinfo.dtd">
-<texinfo xml:lang="en">
-  <setfilename>nco.xml</setfilename><!-- Define edition, date, ... -->
-  <setvalue name="nco-edition">4.0.9</setvalue>
-  <setvalue name="doc-edition">4.0.9</setvalue>
-  <setvalue name="copyright-years">1995–2012</setvalue>
-  <setvalue name="update-year">2012</setvalue>
-  <setvalue name="update-date">13 February 2012</setvalue>
-  <setvalue name="update-month">February 2012</setvalue>
-  <settitle><acronym><acronymword>NCO</acronymword></acronym>4.0.9 User's Guide</settitle>
-<!-- Uncomment following line to produce guide in smallbook format -->
-<!-- @smallbook -->
-<!-- Merge function index into concept index -->
-<!-- end of header -->
-<!-- 20090226 Add bibliography capabilities -->
-<!-- % csz 20100313 remove next line to prevent "\input texinfo" from -->
-<!-- % appearing in printed output -->
-<!-- %% \input texinfo   @c -*-texinfo-*- -->
-<!-- %% my-bib-macros.texi - Texinfo macros providing a crude -->
-<!-- %% bibliography and citation capability. -->
-<!-- % Copyright (C) 2004  Aaron S. Hawley -->
-<!-- % Author: Aaron S. Hawley <ashawley at gnu.uvm.edu> -->
-<!-- % Keywords: docs, texinfo, extensions, bib -->
-<!-- % This file is free software; you can redistribute it and/or modify -->
-<!-- % it under the terms of the GNU General Public License as published by -->
-<!-- % the Free Software Foundation; either version 2, or (at your option) -->
-<!-- % any later version. -->
-<!-- % This file is distributed in the hope that it will be useful, -->
-<!-- % but WITHOUT ANY WARRANTY; without even the implied warranty of -->
-<!-- % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -->
-<!-- % GNU General Public License for more details. -->
-<!-- % You should have received a copy of the GNU General Public License -->
-<!-- % along with GNU Emacs; see the file COPYING.  If not, write to -->
-<!-- % the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -->
-<!-- % Boston, MA 02111-1307, USA. -->
-<!-- %% Commentary: -->
-<!-- %%% Introduction -->
-<!-- %% Creates references to a ``Bibliography'' or ``References'' -->
-<!-- %% section of a Texinfo document, using Texinfo's -->
-<!-- %% macro system.  Although not as terse a way to cite systems as is -->
-<!-- %% found in document systems like TeX, the format is simpler and -->
-<!-- %% the rendering  is easier for non-academic readers. -->
-<!-- % -->
-<!-- %%% Usage -->
-<!-- %% References to cited works can be put in any section of a document. -->
-<!-- %% The cited works must be put in either a Texinfo table (for -->
-<!-- %% instance with ``@table @asis ... @end table'') or within a -->
-<!-- %% Texinfo list (something like ``@enumerate ... @end enumerate'' -->
-<!-- %% or ``@itemize @bullet ... @end itemize'').  They are created -->
-<!-- %% with the command ``@mybibitem{REF-NAME}''.  To cite a reference -->
-<!-- %% with a @mybibitem use ``@mybibcite{REF-NAME}''. -->
-<!-- %% The beginning of a document must include (using the @include -->
-<!-- %% command) the file my-bib-macros.texi, which should be made -->
-<!-- %% available in the current directory of the parent file.  A single -->
-<!-- %% call should be made to choose to use a list or a table.  The -->
-<!-- %% command to chose is called @mybibuselist{NODE}, where NODE is -->
-<!-- %% the node containing the location where the references are listed. -->
-<!-- % -->
-<!-- %%% Example -->
-<!-- %% \input texinfo   @c -*-texinfo-*- -->
-<!-- %% @comment %**start of header -->
-<!-- %% @setfilename my-file-with-bib.info -->
-<!-- %% @settitle Texinfo with a Bibliography and References -->
-<!-- %% -->
-<!-- %% @include my-bib-macros.texi -->
-<!-- %% @mybibuselist{References} -->
-<!-- %% -->
-<!-- %% @comment %**end of header -->
-<!-- %% -->
-<!-- %% @node Top -->
-<!-- %% @top Top -->
-<!-- %% -->
-<!-- %% @menu -->
-<!-- %% * Introduction:: -->
-<!-- %% * @mybibnode{}:: -->
-<!-- %% -->
-<!-- %% @end menu -->
-<!-- %% -->
-<!-- %% @node Introduction -->
-<!-- %% @chapter Introduction -->
-<!-- %% -->
-<!-- %% The ability of a documentation format to make cross references to a -->
-<!-- %% bibliography, a feature of LaTeX @mybibcite{LaTeX2e}, isn't -->
-<!-- %% currently supported in Texinfo. -->
-<!-- %% -->
-<!-- %% @node @mybibnode{} -->
-<!-- %% @chapter References -->
-<!-- %% -->
-<!-- %% @itemize @asis -->
-<!-- %% -->
-<!-- %% @mybibitem{LaTeX2e} Leslie Lamport, LaTeX User's Guide and -->
-<!-- %% Reference Manual, 2nd edition, Addison-Wesley, Reading, -->
-<!-- %% Massachusetts, 1994. -->
-<!-- %% -->
-<!-- %% @end itemize -->
-<!-- %% -->
-<!-- %% @bye -->
-<!-- %% -->
-<!-- %% This example produces (in Info): -->
-<!-- %%       1 Introduction -->
-<!-- %%       ************** -->
-<!-- %% -->
-<!-- %%       The ability of a documentation format to make cross -->
-<!-- %%       references to a bibliography, a feature of LaTeX (See item -->
-<!-- %%       [LaTeX2e] in *Note LaTeX2e: References.), is not currently -->
-<!-- %%       supported in Texinfo. -->
-<!-- %% -->
-<!-- %% -->
-<!-- %%       2 References -->
-<!-- %%       ************ -->
-<!-- %% -->
-<!-- %%       [LaTeX2e] Leslie Lamport, LaTeX User's Guide and Reference -->
-<!-- %%       Manual, 2nd edition, Addison-Wesley, Reading, -->
-<!-- %%       Massachusetts, 1994. -->
-<!-- %% and (in printed output): -->
-<!-- %%       1 Introduction -->
-<!-- %%       ************** -->
-<!-- %% -->
-<!-- %%       The ability of a documentation format to make cross -->
-<!-- %%       references to a bibliography, a feature of LaTeX (See item -->
-<!-- %%       [LaTeX2e] in Chapter 2 [References], page 3.), is not -->
-<!-- %%       currently supported in Texinfo. -->
-<!-- %% -->
-<!-- %% -->
-<!-- %%       2 References -->
-<!-- %%       ************ -->
-<!-- %% -->
-<!-- %%       [LaTeX2e] Leslie Lamport, LaTeX User's Guide and Reference -->
-<!-- %%       Manual, 2nd edition, Addison-Wesley, Reading, -->
-<!-- %%       Massachusetts, 1994. -->
-<!-- % -->
-<!-- %%% Notes -->
-<!-- %% The pointers to references will be functional in hypertext -->
-<!-- %% documentation (info, HTML, XML and others) and properly rendered -->
-<!-- %% in print documents, because they are implemented with Texinfo's -->
-<!-- %% cross referencing capabilities (using @anchor and @ref).  Failures -->
-<!-- %% by an author to make proper references with ``my-bib-macros'' in -->
-<!-- %% their document will give cross referencing errors by Texinfo -->
-<!-- %% conversion tools. -->
-<!-- %% Only one ``Reference'' section is allowed per document. -->
-<!-- %% An improvement of this system would create cross references -->
-<!-- %% (with @xref) at each cited work to all the originating cross -->
-<!-- %% refererences. -->
-<!-- % -->
-<!-- %% Code: -->
-<!-- % Configuration Options -->
-<!-- %% @mybibsetrefnode : Defines the name of the node to contain -->
-<!-- %% references. -->
-<!-- %% @mybibnode{} : Macro to be placed at node containing references -->
-<!-- %% and calls to @mybibcite{} -->
-<!-- %% @mybibusetable : Whether each @mybibitem will be put in a -->
-<!-- %% table. -->
-<!-- %% @mybibuselist : Whether each @mybibitem will be put in a -->
-<!-- %% list. -->
-<!-- %% @mybibcite{REF} : Cites the cross reference REF. -->
-<!-- %% @mybibcite{REF} : Creates a cross referenced citation REF. -->
-<!-- %% my-bib-macros.texi ends here -->
-  <setvalue name="mybiblist">true</setvalue>
-  <setvalue name="mybibrefnode">References</setvalue>
-<!-- TeXInfo macros may not appear before TeXInfo @setfilename header -->
-<!-- [idx] Index -->
-<!-- [m s-1] Meridional wind speed -->
-<!-- [m s-1] Zonal wind speed -->
-<!-- TeX macros may appear anywhere after line 1 -->
-<!-- install-info installs NCO info into this category -->
-  <dircategory>netCDF</dircategory>
-<!-- Set smallbook if printing in smallbook format -->
-<!-- Example of smallbook font is actually written using smallbook -->
-<!-- In bigbook, a kludge is used for TeX output -->
-<!-- set smallbook -->
-  <clearvalue name="smallbook"></clearvalue>
-<!-- Experiment with smaller amounts of whitespace between paragraphs in the 8.5 by 11 inch format -->
-<!-- Uncomment next line to remove ugly TeX warning blocks from overfull hboxes -->
-  <titlepage>
-    <booktitle>NCO User's Guide</booktitle>
-    <booksubtitle>A suite of netCDF operators</booksubtitle>
-    <booksubtitle>Edition 4.0.9, for <acronym><acronymword>NCO</acronymword></acronym>Version 4.0.9</booksubtitle>
-    <booksubtitle>February 2012</booksubtitle>
-    <author>by Charlie Zender</author>
-    <author>Department of Earth System Science</author>
-    <author>University of California, Irvine</author>
-<!-- Include Distribution inside titlepage so that headings are turned off -->
-    <para>Copyright ©right; 1995–2012 Charlie Zender.</para>
-    <sp lines="2"></sp>
-    <para>This is the first edition of the <cite>NCO User's Guide</cite>,&linebreak; and is consistent with version 2<!-- /@w --> of <file>texinfo.tex</file>.</para>
-    <sp lines="2"></sp>
-    <para>Published by Charlie Zender&linebreak; Department of Earth System Science&linebreak; 3200 Croul Hall&linebreak; University of California, Irvine&linebreak; Irvine, CA 92697-3100 USA&linebreak;</para>
-    <para>Permission is granted to copy, distribute and/or modify this document under the terms of the <acronym><acronymword>GNU</acronymword></acronym> Free Documentation License, Version 1.3<!-- /@w --> or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. The license is available online at <uref><urefurl>http://www.gnu.org/copyleft/fdl.html</urefurl></uref></para>
-    <sp lines="2"></sp>
-    <para>The original author of this software, Charlie Zender, wants to improve it with the help of your suggestions, improvements, bug-reports, and patches.&linebreak; Charlie Zender <surname at uci dot edu> (yes, my surname is zender)&linebreak; Department of Earth System Science&linebreak; 3200 Croul Hall&linebreak; University of California, Irvine&linebreak; Irvine, CA 92697-3100&linebreak;</para>
-    <sp lines="2"></sp>
-<!-- Cover art by Robynn Rudel -->
-  </titlepage>
-  <node>
-    <nodename>Top</nodename>
-    <nodenext>Foreword</nodenext>
-    <nodeprev>(dir)</nodeprev>
-    <nodeup>(dir)</nodeup>
-    <menu>
-      <menuentry>
-        <menunode>Foreword</menunode>
-        <menutitle>Foreword</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>Summary</menunode>
-        <menutitle>Summary</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>Introduction</menunode>
-        <menutitle>Introduction</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>Strategies</menunode>
-        <menutitle>Strategies</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>Common features</menunode>
-        <menutitle>Common features</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>Operator Reference Manual</menunode>
-        <menutitle>Operator Reference Manual</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>Contributing</menunode>
-        <menutitle>Contributing</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>CCSM Example</menunode>
-        <menutitle>CCSM Example</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>mybibnode</menunode>
-        <menutitle>mybibnode</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-      <menuentry>
-        <menunode>General Index</menunode>
-        <menutitle>General Index</menutitle>
-        <menucomment></menucomment>
-      </menuentry>
-    </menu>
-  </node>
-  <node>
-    <nodename>Foreword</nodename>
-    <nodenext>Summary</nodenext>
-    <nodeprev>Top</nodeprev>
-    <nodeup>Top</nodeup>
-    <unnumbered>
-      <title>Foreword</title>
-      <para><indexterm index="cp">foreword</indexterm><indexterm index="cp">Charlie Zender</indexterm><acronym><acronymword>NCO</acronymword></acronym> is the result of software needs that arose while I worked on projects funded by <acronym><acronymword>NCAR</acronymword></acronym>, <acronym><acronymword>NASA</acronymword></acronym>, and <acronym><acronymword>ARM</acronymword></acronym>. Thinking they might prove useful as tools or templates to others, it is my pleasure to provide them f [...]
-      <sp lines="1"></sp>
-      <para role="continues">Charlie Zender&linebreak; May 1997&linebreak; Boulder, Colorado&linebreak;</para>
-      <sp lines="2"></sp>
-      <para>Major feature improvements entitle me to write another Foreword. In the last five years a lot of work has been done to refine <acronym><acronymword>NCO</acronymword></acronym>. <indexterm index="cp">open source</indexterm><acronym><acronymword>NCO</acronymword></acronym> is now an open source project and appears to be much healthier for it. The list of illustrious institutions that do not endorse <acronym><acronymword>NCO</acronymword></acronym> continues to grow, and now inc [...]
-      <sp lines="1"></sp>
-      <para role="continues">Charlie Zender&linebreak; October 2000&linebreak; Irvine, California&linebreak;</para>
-      <sp lines="2"></sp>
-      <para>The most remarkable advances in <acronym><acronymword>NCO</acronymword></acronym> capabilities in the last few years are due to contributions from the Open Source community. Especially noteworthy are the contributions of Henry Butowsky and Rorik Peterson.&linebreak;</para>
-      <sp lines="1"></sp>
-      <para role="continues">Charlie Zender&linebreak; January 2003&linebreak; Irvine, California&linebreak;</para>
-      <sp lines="2"></sp>
-      <para><acronym><acronymword>NCO</acronymword></acronym> was generously supported from 2004–2008 by US National Science Foundation (<acronym><acronymword>NSF</acronymword></acronym>) grant <uref><urefurl>http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0431203</urefurl><urefdesc>IIS-0431203</urefdesc></uref>. This support allowed me to maintain and extend core <acronym><acronymword>NCO</acronymword></acronym> code, and others to advance <acronym><acronymword>NCO</acrony [...]
-      <sp lines="1"></sp>
-      <para role="continues">Charlie Zender&linebreak; March 2008&linebreak; Grenoble, France&linebreak;</para>
-    </unnumbered>
-  </node>
-  <node>
-    <nodename>Summary</nodename>
-    <nodenext>Introduction</nodenext>
-    <nodeprev>Foreword</nodeprev>
-    <nodeup>Top</nodeup>
-    <unnumbered>
-      <title>Summary</title>
-      <para><indexterm index="cp">operators</indexterm><indexterm index="cp">summary</indexterm>This manual describes <acronym><acronymword>NCO</acronymword></acronym>, which stands for netCDF Operators. <acronym><acronymword>NCO</acronymword></acronym> is a suite of programs known as <dfn>operators</dfn>. Each operator is a standalone, command line program executed at the shell-level like, e.g., <command>ls</command> or <command>mkdir</command>. The operators take netCDF files (includin [...]
-    </unnumbered>
-  </node>
-  <node>
-    <nodename>Introduction</nodename>
-    <nodenext>Strategies</nodenext>
-    <nodeprev>Summary</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>Introduction</title>
-      <para><indexterm index="cp">introduction</indexterm></para>
-      <menu>
-        <menuentry>
-          <menunode>Availability</menunode>
-          <menutitle>Availability</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Compatability</menunode>
-          <menutitle>Compatability</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Symbolic Links</menunode>
-          <menutitle>Symbolic Links</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Libraries</menunode>
-          <menutitle>Libraries</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>netCDF2/3/4 and HDF4/5 Support</menunode>
-          <menutitle>netCDF2/3/4 and HDF4/5 Support</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Help Requests and Bug Reports</menunode>
-          <menutitle>Help Requests and Bug Reports</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </chapter>
-  </node>
-  <node>
-    <nodename>Availability</nodename>
-    <nodenext>Compatability</nodenext>
-    <nodeprev>Introduction</nodeprev>
-    <nodeup>Introduction</nodeup>
-    <section>
-      <title>Availability</title>
-      <para><indexterm index="cp"><acronym><acronymword>NCO</acronymword></acronym> availability</indexterm><indexterm index="cp">source code</indexterm>The complete <acronym><acronymword>NCO</acronymword></acronym> source distribution is currently distributed as a <dfn>compressed tarfile</dfn> from <uref><urefurl>http://sf.net/projects/nco</urefurl></uref> and from <uref><urefurl>http://dust.ess.uci.edu/nco/nco.tar.gz</urefurl></uref>. The compressed tarfile must be uncompressed and unt [...]
-      <para><indexterm index="cp">documentation</indexterm><indexterm index="cp">WWW documentation</indexterm><indexterm index="cp">on-line documentation</indexterm><indexterm index="cp"><acronym><acronymword>HTML</acronymword></acronym></indexterm><indexterm index="cp">&tex;info</indexterm><indexterm index="cp">Info</indexterm><indexterm index="cp"><cite>User's Guide</cite></indexterm><indexterm index="cp"><cite>NCO User's Guide</cite></indexterm>The documentation for <acronym><acronymw [...]
-      <para><indexterm index="cp">publications</indexterm><indexterm index="cp">presentations</indexterm>A complete list of papers and publications on/about <acronym><acronymword>NCO</acronymword></acronym> is available on the <acronym><acronymword>NCO</acronymword></acronym> homepage. Most of these are freely available. 
-<!-- fxm query replace mybibnode with @mybibnode{} -->
-<!-- The primary refereed publications are @mybibcite{ZeM06} and -->
-<!-- @mybibcite{Zen07}. -->The primary refereed publications are fxm ZeM06 and fxm Zen07. These contain copyright restrictions which limit their redistribution, but they are freely available in preprint form from the <acronym><acronymword>NCO</acronymword></acronym>.</para>
-      <para><indexterm index="cp"><acronym><acronymword>NCO</acronymword></acronym> homepage</indexterm>If you want to quickly see what the latest improvements in <acronym><acronymword>NCO</acronymword></acronym> are (without downloading the entire source distribution), visit the <acronym><acronymword>NCO</acronymword></acronym> homepage at <uref><urefurl>http://nco.sf.net</urefurl></uref>. The <acronym><acronymword>HTML</acronymword></acronym> version of the <cite>User's Guide</cite> is [...]
-      <para>New <acronym><acronymword>NCO</acronymword></acronym> releases are announced on the netCDF list and on the <code>nco-announce</code> mailing list <uref><urefurl>http://lists.sf.net/mailman/listinfo/nco-announce</urefurl></uref>.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Compatability</nodename>
-    <nodenext>Symbolic Links</nodenext>
-    <nodeprev>Availability</nodeprev>
-    <nodeup>Introduction</nodeup>
-    <section>
-      <title>Operating systems compatible with <acronym><acronymword>NCO</acronymword></acronym></title>
-      <para><indexterm index="cp"><acronym><acronymword>OS</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>IBM</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>NEC</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>SGI</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>HP</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>DEC</acronymword></acro [...]
-<!-- alphabetize by OS name --><acronym><acronymword>IBM AIX</acronymword></acronym> 4.x, 5.x, FreeBSD 4.x, <acronym><acronymword>GNU</acronymword></acronym>/Linux 2.x, LinuxPPC, LinuxAlpha, LinuxARM, LinuxSparc64, <acronym><acronymword>SGI IRIX</acronymword></acronym> 5.x and 6.x, MacOS X<!-- /@w --> 10.x, <acronym><acronymword>NEC</acronymword></acronym> Super-UX 10.x, <acronym><acronymword>DEC OSF</acronymword></acronym>, Sun SunOS 4.1.x, Solaris 2.x, <acronym><acronymword>Cray UNICOS [...]
-      <para><indexterm index="cp"><acronym><acronymword>UNIX</acronymword></acronym></indexterm><indexterm index="cp">Unidata</indexterm><indexterm index="cp">UDUnits</indexterm>The major prerequisite for installing <acronym><acronymword>NCO</acronymword></acronym> on a particular platform is the successful, prior installation of the netCDF library (and, as of 2003, the UDUnits library). Unidata has shown a commitment to maintaining netCDF and UDUnits on all popular <acronym><acronymword [...]
-      <para><indexterm index="cp"><acronym><acronymword>ANSI</acronymword></acronym></indexterm><indexterm index="cp">C89</indexterm><indexterm index="cp"><code>printf</code></indexterm>Until recently (and not even yet), <acronym><acronymword>ANSI</acronymword></acronym>-compliant has meant compliance with the 1989 <acronym><acronymword>ISO</acronymword></acronym> C-standard, usually called C89 (with minor revisions made in 1994 and 1995). C89 lacks variable-size arrays, restricted point [...]
-      <para>The most time-intensive portion of <acronym><acronymword>NCO</acronymword></acronym> execution is spent in arithmetic operations, e.g., multiplication, averaging, subtraction. These operations were performed in Fortran by default until August, 1999. This was a design decision based on the relative speed of Fortran-based object code vs. C-based object code in late 1994. C compiler<!-- /@w --> vectorization capabilities have dramatically improved since 1994. We have acco [...]
-      <para><indexterm index="cp"><acronym><acronymword>GSL</acronymword></acronym></indexterm><indexterm index="cp">ncap2</indexterm>In January 2009, <acronym><acronymword>NCO</acronymword></acronym> version 3.9.6 was the first to link to the GNU Scientific Library (<acronym><acronymword>GSL</acronymword></acronym>). <acronym><acronymword>GSL</acronymword></acronym> must be version 1.4<!-- /@w --> or later. <acronym><acronymword>NCO</acronymword></acronym>, in particular <command>ncap2< [...]
-      <para><indexterm index="cp"><var>gamma</var></indexterm>In June 2005, <acronym><acronymword>NCO</acronymword></acronym> version 3.0.1 began to take advantage of C99 mathematical special functions. These include the standarized gamma function (called <code>tgamma()</code> for “true gamma”). <indexterm index="cp">automagic</indexterm><acronym><acronymword>NCO</acronymword></acronym> automagically takes advantage of some <acronym><acronymword>GNU</acronymword></acronym> Co [...]
-      <para>As of July 2000 and <acronym><acronymword>NCO</acronymword></acronym> version 1.2<!-- /@w -->, <acronym><acronymword>NCO</acronymword></acronym> no longer performs arithmetic operations in Fortran. We decided to sacrifice executable speed for code maintainability. Since no objective statistics were ever performed to quantify the difference in speed between the Fortran and C code<!-- /@w -->, the performance penalty incurred by this decision is unknown. Supporting Fortran invo [...]
-<!-- Following section is obsolete -->
-      <menu>
-        <menuentry>
-          <menunode>Windows Operating System</menunode>
-          <menutitle>Windows Operating System</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>Windows Operating System</nodename>
-    <nodeprev>Compatability</nodeprev>
-    <nodeup>Compatability</nodeup>
-    <subsection>
-      <title>Compiling <acronym><acronymword>NCO</acronymword></acronym> for Microsoft Windows <acronym><acronymword>OS</acronymword></acronym></title>
-      <para><indexterm index="cp">Windows</indexterm><indexterm index="cp">Microsoft</indexterm><indexterm index="cp">XP (Microsoft operating system)</indexterm><indexterm index="cp">NT (Microsoft operating system)</indexterm><indexterm index="cp">Vista (Microsoft operating system)</indexterm> <acronym><acronymword>NCO</acronymword></acronym> has been successfully ported and tested on most Microsoft Windows operating systems including: 95/98/NT/2000/XP/Vista. The switches necessary to ac [...]
-      <para><indexterm index="cp"><acronym><acronymword>UNIX</acronymword></acronym></indexterm><indexterm index="cp"><code>getuid</code></indexterm><indexterm index="cp"><code>gethostname</code></indexterm><indexterm index="cp"><file><arpa/nameser.h></file></indexterm><indexterm index="cp"><file><resolv.h></file></indexterm>The least portable section of the code is the use of standard <acronym><acronymword>UNIX</acronymword></acronym> and Internet protocols (e.g., <code>ftp< [...]
-    </subsection>
-  </node>
-  <node>
-    <nodename>Symbolic Links</nodename>
-    <nodenext>Libraries</nodenext>
-    <nodeprev>Compatability</nodeprev>
-    <nodeup>Introduction</nodeup>
-    <section>
-      <title>Symbolic Links</title>
-      <para><indexterm index="cp">symbolic links</indexterm><acronym><acronymword>NCO</acronymword></acronym> relies on a common set of underlying algorithms. To minimize duplication of source code, multiple operators sometimes share the same underlying source. This is accomplished by symbolic links from a single underlying executable program to one or more invoked executable names. For example, <command>ncea</command> and <command>ncrcat</command> are symbolically linked to the <command [...]
-      <para><indexterm index="cp">Cygwin</indexterm><indexterm index="cp">synonym</indexterm><indexterm index="cp">pseudonym</indexterm><indexterm index="cp"><code>--pseudonym</code></indexterm>For historical reasons, and to be more user friendly, multiple synonyms (or pseudonyms) may refer to the same operator invoked with different switches. For example, <command>ncdiff</command> is the same as <command>ncbo</command> and <command>ncpack</command> is the same as <command>ncpdq</command [...]
-      <example xml:space="preserve">ln -s -f ncbo ncdiff    # ncbo --op_typ='+'
-ln -s -f ncra ncecat    # ncra --pseudonym='ncecat'
-ln -s -f ncra ncrcat    # ncra --pseudonym='ncrcat'
-ln -s -f ncbo ncadd     # ncbo --op_typ='+'
-ln -s -f ncbo ncsubtract # ncbo --op_typ='-'
-ln -s -f ncbo ncmultiply # ncbo --op_typ='*'
-ln -s -f ncbo ncdivide   # ncbo --op_typ='/'
-ln -s -f ncpdq ncpack    # ncpdq
-ln -s -f ncpdq ncunpack  # ncpdq --unpack
-# NB: Cygwin executable (and link) names have an '.exe' suffix, e.g.,
-ln -s -f ncbo.exe ncdiff.exe
-...</example>
-      <para>The imputed command called by the link is given after the comment. As can be seen, some these links impute the passing of a command line argument to further modify the behavior of the underlying executable. For example, <command>ncdivide</command> is a pseudonym for <command>ncbo --op_typ='/'</command>.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Libraries</nodename>
-    <nodenext>netCDF2/3/4 and HDF4/5 Support</nodenext>
-    <nodeprev>Symbolic Links</nodeprev>
-    <nodeup>Introduction</nodeup>
-    <section>
-      <title>Libraries</title>
-      <para><indexterm index="cp">libraries</indexterm><indexterm index="cp"><code>LD_LIBRARY_PATH</code></indexterm><indexterm index="cp">dynamic linking</indexterm><indexterm index="cp">static linking</indexterm>Like all executables, the <acronym><acronymword>NCO</acronymword></acronym> operators can be built using dynamic linking. <indexterm index="cp">performance</indexterm><indexterm index="cp">operator speed</indexterm><indexterm index="cp">speed</indexterm><indexterm index="cp">ex [...]
-    </section>
-  </node>
-  <node>
-    <nodename>netCDF2/3/4 and HDF4/5 Support</nodename>
-    <nodenext>Help Requests and Bug Reports</nodenext>
-    <nodeprev>Libraries</nodeprev>
-    <nodeup>Introduction</nodeup>
-    <section>
-      <title>netCDF2/3/4 and HDF4/5 Support</title>
-      <para><indexterm index="cp">netCDF2</indexterm><indexterm index="cp">netCDF3</indexterm>netCDF version 2<!-- /@w --> was released in 1993. <acronym><acronymword>NCO</acronymword></acronym> (specifically <command>ncks</command>) began soon after this in 1994. netCDF 3.0<!-- /@w --> was released in 1996, and we were eager to reap the performance advantages of the newer netCDF implementation. One netCDF3<!-- /@w --> interface call (<code>nc_inq_libvers</code>) was added to <acronym><a [...]
-      <para><indexterm index="cp">Unidata</indexterm><indexterm index="cp"><acronym><acronymword>NCSA</acronymword></acronym></indexterm><indexterm index="cp">netCDF4</indexterm><indexterm index="cp"><acronym><acronymword>HDF5</acronymword></acronym></indexterm><acronym><acronymword>HDF</acronymword></acronym> version 5<!-- /@w --> became available in 1999, but did not support netCDF (or, for that matter, Fortran) as of December 1999. By early 2001, <acronym><acronymword>HDF5</acronymwor [...]
-      <para>HDF support for netCDF was completed with HDF5 version version 1.8<!-- /@w --> in 2007. The netCDF front-end that uses this <acronym><acronymword>HDF5</acronymword></acronym> back-end was completed and released soon after as netCDF version 4<!-- /@w -->. Download it from the <uref><urefurl>http://my.unidata.ucar.edu/content/software/netcdf/netcdf-4</urefurl><urefdesc>netCDF4</urefdesc></uref> website.</para>
-      <para><acronym><acronymword>NCO</acronymword></acronym> version 3.9.0, released in May, 2007, added support for all netCDF4 atomic data types except <code>NC_STRING</code>. Support for <code>NC_STRING</code>, including ragged arrays of strings, was finally added in version 3.9.9, released in June, 2009. Support for additional netCDF4 features has been incremental. We add one netCDF4 feature at a time. You must build <acronym><acronymword>NCO</acronymword></acronym> with netCDF4 to  [...]
-      <para><indexterm index="cp"><code>NC_UBYTE</code></indexterm><indexterm index="cp"><code>NC_USHORT</code></indexterm><indexterm index="cp"><code>NC_UINT</code></indexterm><indexterm index="cp"><code>NC_INT64</code></indexterm><indexterm index="cp"><code>NC_UINT64</code></indexterm>The main netCDF4 features that NCO currently supports are the new atomic data types, Lempel-Ziv compression (deflation), and chunking. The new atomic data types are <code>NC_UBYTE</code>, <code>NC_USHORT< [...]
-      <para><indexterm index="cp">deflation</indexterm><acronym><acronymword>NCO</acronymword></acronym> version 3.9.1 (June, 2007) added support for netCDF4 Lempel-Ziv deflation. Lempel-Ziv deflation is a lossless compression technique. See <xref><xrefnodename>Deflation</xrefnodename></xref> for more details.</para>
-      <para><indexterm index="cp">chunking</indexterm><acronym><acronymword>NCO</acronymword></acronym> version 3.9.9 (June, 2009) added support for netCDF4 chunking in <command>ncks</command> and <command>ncecat</command>. <acronym><acronymword>NCO</acronymword></acronym> version 4.0.4 (September, 2010) completed support for netCDF4 chunking in the remaining operators. See <xref><xrefnodename>Chunking</xrefnodename></xref> for more details.</para>
-      <para><indexterm index="cp"><acronym><acronymword>HDF5</acronymword></acronym></indexterm><indexterm index="cp"><code>-4</code></indexterm><indexterm index="cp"><code>-3</code></indexterm>netCDF4-enabled <acronym><acronymword>NCO</acronymword></acronym> handles netCDF3 files without change. In addition, it automagically handles netCDF4 (<acronym><acronymword>HDF5</acronymword></acronym>) files: If you feed <acronym><acronymword>NCO</acronymword></acronym> netCDF3 files, it produces [...]
-      <para><indexterm index="cp"><acronym><acronymword>RPM</acronymword></acronym></indexterm><indexterm index="cp">Debian</indexterm>As of 2010, netCDF4 is still relatively new software. Problems with netCDF4 and <acronym><acronymword>HDF</acronymword></acronym> libraries are still being fixed. Binary <acronym><acronymword>NCO</acronymword></acronym> distributions shipped as <acronym><acronymword>RPM</acronymword></acronym>s use the netCDF4 library, while debs use the netCDF3 library,  [...]
-      <para><indexterm index="cp"><code>NETCDF4_ROOT</code></indexterm>One must often build <acronym><acronymword>NCO</acronymword></acronym> from source to obtain netCDF4 support. Typically, one specifies the root of the netCDF4 installation directory. Do this with the <code>NETCDF4_ROOT</code> variable. Then use your preferred <acronym><acronymword>NCO</acronymword></acronym> build mechanism, e.g.,</para>
-      <example xml:space="preserve">export NETCDF4_ROOT=/usr/local/netcdf4 # Set netCDF4 location
-cd ~/nco;./configure --enable-netcdf4  # Configure mechanism -or-
-cd ~/nco/bld;./make NETCDF4=Y allinone # Old Makefile mechanism</example>
-      <para>We carefully track the netCDF4 releases, and keep the netCDF4 atomic type support and other features working. Our long term goal is to utilize more of the extensive new netCDF4 feature set. The next major netCDF4 feature we are likely to utilize is parallel I/O. We will enable this in the <acronym><acronymword>MPI</acronymword></acronym> netCDF operators.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Help Requests and Bug Reports</nodename>
-    <nodeprev>netCDF2/3/4 and HDF4/5 Support</nodeprev>
-    <nodeup>Introduction</nodeup>
-    <section>
-      <title>Help Requests and Bug Reports</title>
-      <para><indexterm index="cp">reporting bugs</indexterm><indexterm index="cp">bugs, reporting</indexterm><indexterm index="cp">core dump</indexterm><indexterm index="cp">help</indexterm><indexterm index="cp">features, requesting</indexterm>We generally receive three categories of mail from users: help requests, bug reports, and feature requests. Notes saying the equivalent of "Hey, <acronym><acronymword>NCO</acronymword></acronym> continues to work great and it saves me more time eve [...]
-      <para>There is a different protocol for each type of request. The preferred etiquette for all communications is via <acronym><acronymword>NCO</acronymword></acronym> Project Forums. Do not contact project members via personal e-mail unless your request comes with money or you have damaging information about our personal lives. <emph>Please use the Forums</emph>—they preserve a record of the questions and answers so that others can learn from our exchange. Also, since <acronym [...]
-      <para>Before posting to the <acronym><acronymword>NCO</acronymword></acronym> forums described below, you might first <uref><urefurl>https://sf.net/account/register.php</urefurl><urefdesc>register</urefdesc></uref> your name and email address with SourceForge.net or else all of your postings will be attributed to "nobody". Once registered you may choose to "monitor" any forum and to receive (or not) email when there are any postings including responses to your questions. We usually [...]
-      <para>If you want us to include a new feature in <acronym><acronymword>NCO</acronymword></acronym>, check first to see if that feature is already on the <uref><urefurl>file:./TODO</urefurl><urefdesc>TODO</urefdesc></uref> list. If it is, why not implement that feature yourself and send us the patch? If the feature is not yet on the list, then send a note to the <uref><urefurl>http://sourceforge.net/projects/nco/forums/forum/9829</urefurl><urefdesc>NCO Discussion forum</urefdesc></u [...]
-      <para>Read the manual before reporting a bug or posting a help request. Sending questions whose answers are not in the manual is the best way to motivate us to write more documentation. We would also like to accentuate the contrapositive of this statement. If you think you have found a real bug <emph>the most helpful thing you can do is simplify the problem to a manageable size and then report it</emph>. The first thing to do is to make sure you are running the latest publicly rele [...]
-      <para>Once you have read the manual, if you are still unable to get <acronym><acronymword>NCO</acronymword></acronym> to perform a documented function, submit a help request. Follow the same procedure as described below for reporting bugs (after all, it might be a bug). <indexterm index="cp">debugging</indexterm><indexterm index="cp"><code>-r</code></indexterm><indexterm index="cp"><code>-D</code></indexterm>That is, describe what you are trying to do, and include the complete comm [...]
-      <para>If you think you used the right command when <acronym><acronymword>NCO</acronymword></acronym> misbehaves, then you might have found a bug. Incorrect numerical answers are the highest priority. We usually fix those within one or two days. Core dumps and sementation violations receive lower priority. They are always fixed, eventually.</para>
-      <para>How do you simplify a problem that reveal a bug? Cut out extraneous variables, dimensions, and metadata from the offending files and re-run the command until it no longer breaks. Then back up one step and report the problem. Usually the file(s) will be very small, i.e., one variable with one or two small dimensions ought to suffice. <indexterm index="cp"><code>-r</code></indexterm><indexterm index="cp"><code>--revision</code></indexterm><indexterm index="cp"><code>--version</ [...]
-      <para><indexterm index="cp">installation</indexterm><indexterm index="cp"><command>autoconf</command></indexterm><indexterm index="cp"><file>nco.configure.${GNU_TRP}.foo</file></indexterm><indexterm index="cp"><file>nco.config.log.${GNU_TRP}.foo</file></indexterm><indexterm index="cp"><file>nco.make.${GNU_TRP}.foo</file></indexterm><indexterm index="cp"><file>config.guess</file></indexterm><indexterm index="cp"><file>configure.eg</file></indexterm>Build failures count as bugs. Our  [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Strategies</nodename>
-    <nodenext>Common features</nodenext>
-    <nodeprev>Introduction</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>Operator Strategies</title>
-      <menu>
-        <menuentry>
-          <menunode>Philosophy</menunode>
-          <menutitle>Philosophy</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Climate Model Paradigm</menunode>
-          <menutitle>Climate Model Paradigm</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Temporary Output Files</menunode>
-          <menutitle>Temporary Output Files</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Appending Variables</menunode>
-          <menutitle>Appending Variables</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Simple Arithmetic and Interpolation</menunode>
-          <menutitle>Simple Arithmetic and Interpolation</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Averaging vs. Concatenating</menunode>
-          <menutitle>Averaging vs. Concatenating</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Large Numbers of Files</menunode>
-          <menutitle>Large Numbers of Files</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Large Datasets</menunode>
-          <menutitle>Large Datasets</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Memory Requirements</menunode>
-          <menutitle>Memory Requirements</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Performance</menunode>
-          <menutitle>Performance</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </chapter>
-  </node>
-  <node>
-    <nodename>Philosophy</nodename>
-    <nodenext>Climate Model Paradigm</nodenext>
-    <nodeprev>Strategies</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Philosophy</title>
-      <para><indexterm index="cp">philosophy</indexterm><indexterm index="cp">climate model</indexterm> The main design goal is command line operators which perform useful, scriptable operations on netCDF files. Many scientists work with models and observations which produce too much data to analyze in tabular format. Thus, it is often natural to reduce and massage this raw or primary level data into summary, or second level data, e.g., temporal or spatial averages. These second level da [...]
-      <para><indexterm index="cp">command line switches</indexterm>Another goal has been to implement enough command line switches so that frequently used sequences of these operators can be executed from a shell script or batch file. Finally, <acronym><acronymword>NCO</acronymword></acronym> was written to consume the absolute minimum amount of system memory required to perform a given job. The arithmetic operators are extremely efficient; their exact memory usage is detailed in <xref>< [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Climate Model Paradigm</nodename>
-    <nodenext>Temporary Output Files</nodenext>
-    <nodeprev>Philosophy</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Climate Model Paradigm</title>
-      <para><indexterm index="cp">climate model</indexterm><indexterm index="cp"><acronym><acronymword>NCAR</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>GCM</acronymword></acronym></indexterm> <acronym><acronymword>NCO</acronymword></acronym> was developed at <acronym><acronymword>NCAR</acronymword></acronym> to aid analysis and manipulation of datasets produced by General Circulation Models (<acronym><acronymword>GCM</acronymword></acronym>s). Datasets  [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Temporary Output Files</nodename>
-    <nodenext>Appending Variables</nodenext>
-    <nodeprev>Climate Model Paradigm</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Temporary Output Files</title>
-      <para><indexterm index="cp">data safety</indexterm><indexterm index="cp">error tolerance</indexterm><indexterm index="cp">safeguards</indexterm><indexterm index="cp">temporary output files</indexterm><acronym><acronymword>NCO</acronymword></acronym> operators are designed to be reasonably fault tolerant, so that if there is a system failure or the user aborts the operation (e.g., with <kbd>C-c</kbd>), then no data are lost. The user-specified <var>output-file</var> is only created  [...]
-      <para><indexterm index="cp"><code>-A</code></indexterm><indexterm index="cp"><code>-O</code></indexterm><indexterm index="cp"><code>--apn</code></indexterm><indexterm index="cp"><code>--append</code></indexterm><indexterm index="cp"><code>--ovr</code></indexterm><indexterm index="cp"><code>--overwrite</code></indexterm><indexterm index="cp">overwriting files</indexterm><indexterm index="cp">appending to files</indexterm>Other safeguards exist to protect the user from inadvertently  [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Appending Variables</nodename>
-    <nodenext>Simple Arithmetic and Interpolation</nodenext>
-    <nodeprev>Temporary Output Files</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Appending Variables</title>
-      <para>Adding variables from one file to another is often desirable. <indexterm index="cp">concatenation</indexterm><indexterm index="cp">appending variables</indexterm><indexterm index="cp">merging files</indexterm><indexterm index="cp">pasting variables</indexterm>This is referred to as <dfn>appending</dfn>, although some prefer the terminology <dfn>merging</dfn> <footnote><para>The terminology <dfn>merging</dfn> is reserved for an (unwritten) operator which replaces hyperslabs of [...]
-      <para>In this sense, <command>ncks</command> can append variables from one file to another file. This capability is invoked by naming two files on the command line, <var>input-file</var> and <var>output-file</var>. When <var>output-file</var> already exists, the user is prompted whether to <dfn>overwrite</dfn>, <dfn>append/replace</dfn>, or <dfn>exit</dfn> from the command. Selecting <dfn>overwrite</dfn> tells the operator to erase the existing <var>output-file</var> and replace it [...]
-      <para><indexterm index="cp">union of two files</indexterm><indexterm index="cp">disjoint files</indexterm>The simplest way to create the union of two files is</para>
-      <example xml:space="preserve">ncks -A fl_1.nc fl_2.nc</example>
-      <para>This puts the contents of <file>fl_1.nc</file> into <file>fl_2.nc</file>. The <samp>-A</samp> is optional. On output, <file>fl_2.nc</file> is the union of the input files, regardless of whether they share dimensions and variables, or are completely disjoint. The append fails if the input files have differently named record dimensions (since netCDF supports only one), or have dimensions of the same name but different sizes.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Simple Arithmetic and Interpolation</nodename>
-    <nodenext>Averaging vs. Concatenating</nodenext>
-    <nodeprev>Appending Variables</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Simple Arithmetic and Interpolation</title>
-      <para>Users comfortable with <acronym><acronymword>NCO</acronymword></acronym> semantics may find it easier to perform some simple mathematical operations in <acronym><acronymword>NCO</acronymword></acronym> rather than higher level languages. <command>ncbo</command> (see <xref><xrefnodename>ncbo netCDF Binary Operator</xrefnodename></xref>) does file addition, subtraction, multiplication, division, and broadcasting. <command>ncflint</command> (see <xref><xrefnodename>ncflint netCD [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Averaging vs. Concatenating</nodename>
-    <nodenext>Large Numbers of Files</nodenext>
-    <nodeprev>Simple Arithmetic and Interpolation</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Averagers vs. Concatenators</title>
-      <para><indexterm index="cp">symbolic links</indexterm>The most frequently used operators of <acronym><acronymword>NCO</acronymword></acronym> are probably the averagers and concatenators. Because there are so many permutations of averaging (e.g., across files, within a file, over the record dimension, over other dimensions, with or without weights and masks) and of concatenating (across files, along the record dimension, along other dimensions), there are currently no fewer than fi [...]
-      <menu>
-        <menuentry>
-          <menunode>Concatenation</menunode>
-          <menutitle>Concatenation</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Averaging</menunode>
-          <menutitle>Averaging</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Interpolating</menunode>
-          <menutitle>Interpolating</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>Concatenation</nodename>
-    <nodenext>Averaging</nodenext>
-    <nodeprev>Averaging vs. Concatenating</nodeprev>
-    <nodeup>Averaging vs. Concatenating</nodeup>
-    <subsection>
-      <title>Concatenators <command>ncrcat</command> and <command>ncecat</command></title>
-      <para><indexterm index="cp"><command>ncecat</command></indexterm><indexterm index="cp"><command>ncrcat</command></indexterm> Joining independent files together along a record dimension is called <dfn>concatenation</dfn>. <command>ncrcat</command> is designed for concatenating record variables, while <command>ncecat</command> is designed for concatenating fixed length variables. Consider five files, <file>85.nc</file>, <file>86.nc</file>, &dots; <file>89.nc</file><!-- /@w --> each c [...]
-      <para>However, suppose the annual files have no record variable, and thus their data are all fixed length. <indexterm index="cp">ensemble</indexterm><indexterm index="cp">climate model</indexterm>For example, the files may not be conceptually sequential, but rather members of the same group, or <dfn>ensemble</dfn>. Members of an ensemble may have no reason to contain a record dimension. <command>ncecat</command> will create a new record dimension (named <var>record</var> by default [...]
-      <para><indexterm index="cp"><command>ncpdq</command></indexterm><command>ncpdq</command> makes it possible to concatenate files along any dimension, not just the record dimension. First, use <command>ncpdq</command> to convert the dimension to be concatenated (i.e., extended with data from other files) into the record dimension. Second, use <command>ncrcat</command> to concatenate these files. Finally, if desirable, use <command>ncpdq</command> to revert to the original dimensional [...]
-      <example xml:space="preserve">for idx in 01 02 03 04 05 06 07 08 09 10; do # Bourne Shell
-  ncpdq -a x,time x_${idx}.nc foo_${idx}.nc # Make x record dimension
-done
-ncrcat foo_??.nc out.nc       # Concatenate along x
-ncpdq -a time,x out.nc out.nc # Revert to time as record dimension</example>
-      <para>Note that <command>ncrcat</command> will not concatenate fixed-length variables, whereas <command>ncecat</command> concatenates both fixed-length and record variables along a new record variable. To conserve system memory, use <command>ncrcat</command> where possible.</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Averaging</nodename>
-    <nodenext>Interpolating</nodenext>
-    <nodeprev>Concatenation</nodeprev>
-    <nodeup>Averaging vs. Concatenating</nodeup>
-    <subsection>
-      <title>Averagers <command>ncea</command>, <command>ncra</command>, and <command>ncwa</command></title>
-      <para><indexterm index="cp"><command>ncea</command></indexterm><indexterm index="cp"><command>ncra</command></indexterm><indexterm index="cp"><command>ncwa</command></indexterm> The differences between the averagers <command>ncra</command> and <command>ncea</command> are analogous to the differences between the concatenators. <command>ncra</command> is designed for averaging record variables from at least one file, while <command>ncea</command> is designed for averaging fixed lengt [...]
-    </subsection>
-  </node>
-  <node>
-    <nodename>Interpolating</nodename>
-    <nodeprev>Averaging</nodeprev>
-    <nodeup>Averaging vs. Concatenating</nodeup>
-    <subsection>
-      <title>Interpolator <command>ncflint</command></title>
-      <para><indexterm index="cp"><command>ncflint</command></indexterm> <command>ncflint</command> can interpolate data between or two files. Since no other operators have this ability, the description of interpolation is given fully on the <command>ncflint</command> reference page (see <xref><xrefnodename>ncflint netCDF File Interpolator</xrefnodename></xref>). Note that this capability also allows <command>ncflint</command> to linearly rescale any data in a netCDF file, e.g., to conve [...]
-    </subsection>
-  </node>
-  <node>
-    <nodename>Large Numbers of Files</nodename>
-    <nodenext>Large Datasets</nodenext>
-    <nodeprev>Averaging vs. Concatenating</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Large Numbers of Files</title>
-      <para><indexterm index="cp">files, numerous input</indexterm><indexterm index="cp"><code>-n <var>loop</var></code></indexterm> Occasionally one desires to digest (i.e., concatenate or average) hundreds or thousands of input files. <indexterm index="cp">automagic</indexterm><indexterm index="cp"><acronym><acronymword>NASA EOSDIS</acronymword></acronym></indexterm>Unfortunately, data archives (e.g., <acronym><acronymword>NASA EOSDIS</acronymword></acronym>) may not name netCDF files  [...]
-      <para><indexterm index="cp">standard input</indexterm><indexterm index="cp"><code>stdin</code></indexterm>The recommended method for sending very large numbers (hundreds or more, typically) of input filenames to the multi-file operators is to pass the filenames with the <acronym><acronymword>UNIX</acronymword></acronym> <dfn>standard input</dfn> feature, aka <code>stdin</code>:</para>
-      <example xml:space="preserve"># Pipe large numbers of filenames to stdin
-/bin/ls | grep ${CASEID}_'......'.nc | ncecat -o foo.nc</example>
-      <para>This method avoids all constraints on command line size imposed by the operating system. A drawback to this method is that the <code>history</code> attribute (see <xref><xrefnodename>History Attribute</xrefnodename></xref>) does not record the name of any input files since the names were not passed on the command line. This makes determining the data provenance at a later date difficult. <indexterm index="cp"><code>nco_input_file_number</code></indexterm><indexterm index="cp" [...]
-      <para><indexterm index="cp">globbing</indexterm><indexterm index="cp">shell</indexterm><indexterm index="cp">extended regular expressions</indexterm><indexterm index="cp">regular expressions</indexterm><indexterm index="cp">pattern matching</indexterm><indexterm index="cp"><command>xargs</command></indexterm><indexterm index="cp"><acronym><acronymword>UNIX</acronymword></acronym></indexterm>A second option is to use the <acronym><acronymword>UNIX</acronymword></acronym> <command>xa [...]
-      <example xml:space="preserve"># Use xargs to transfer filenames on the command line
-/bin/ls | grep ${CASEID}_'......'.nc | xargs -x ncecat -o foo.nc</example>
-      <para><indexterm index="cp">pipes</indexterm>The single quotes protect the only sensitive parts of the extended regular expression (the <command>grep</command> argument), and allow shell interpolation (the <code>${CASEID}</code> variable substitution) to proceed unhindered on the rest of the command. <command>xargs</command> uses the <acronym><acronymword>UNIX</acronymword></acronym> pipe feature to append the suitably filtered input file list to the end of the <command>ncecat</com [...]
-      <para><indexterm index="cp">symbolic links</indexterm>Even when its internal limits have not been reached, the <command>xargs</command> technique may not be sophisticated enough to handle all situations. A full scripting language like Perl can handle any level of complexity of filtering input filenames, and any number of filenames. The technique of last resort is to write a script that creates symbolic links between the irregular input filenames and a set of regular, arithmetic fil [...]
-      <example xml:space="preserve"># Create enumerated symbolic links
-/bin/ls | grep \.nc | perl -e \
-'$idx=1;while(<STDIN>){chop;symlink $_,sprintf("%06d.nc",$idx++);}'
-ncecat -n 999999,6,1 000001.nc foo.nc
-# Remove symbolic links when finished
-/bin/rm ??????.nc</example>
-      <para>The <samp>-n <var>loop</var></samp> option tells the <acronym><acronymword>NCO</acronymword></acronym> operator to automatically generate the filnames of the symbolic links. This circumvents any <acronym><acronymword>OS</acronymword></acronym> and shell limits on command line size. The symbolic links are easily removed once <acronym><acronymword>NCO</acronymword></acronym> is finished. <indexterm index="cp"><code>history</code></indexterm>One drawback to this method is that t [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Large Datasets</nodename>
-    <nodenext>Memory Requirements</nodenext>
-    <nodeprev>Large Numbers of Files</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Large Datasets</title>
-      <para><indexterm index="cp">large datasets</indexterm><indexterm index="cp">LFS</indexterm><indexterm index="cp">Large File Support</indexterm> <dfn>Large datasets</dfn> are those files that are comparable in size to the amount of random access memory (<acronym><acronymword>RAM</acronymword></acronym>) in your computer. Many users of <acronym><acronymword>NCO</acronymword></acronym> work with files larger than 100 MB<!-- /@w -->. Files this large not only push the current edge of s [...]
-      <para><indexterm index="cp">server</indexterm><indexterm index="cp"><acronym><acronymword>UNICOS</acronymword></acronym></indexterm><indexterm index="cp">Cray</indexterm>If your local machine has problems working with large files, try running <acronym><acronymword>NCO</acronymword></acronym> from a more powerful machine, such as a network server. Certain machine architectures, e.g., Cray <acronym><acronymword>UNICOS</acronymword></acronym>, have special commands which allow one to  [...]
-      <para><indexterm index="cp">speed</indexterm>The speed of the <acronym><acronymword>NCO</acronymword></acronym> operators also depends on file size. When processing large files the operators may appear to hang, or do nothing, for large periods of time. In order to see what the operator is actually doing, it is useful to activate a more verbose output mode. This is accomplished by supplying a number greater than 0<!-- /@w --> to the <samp>-D <var>debug-level</var></samp> (or <samp>- [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Memory Requirements</nodename>
-    <nodenext>Performance</nodenext>
-    <nodeprev>Large Datasets</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Memory Requirements</title>
-      <para><indexterm index="cp">memory requirements</indexterm><indexterm index="cp">memory available</indexterm><indexterm index="cp">RAM</indexterm><indexterm index="cp">swap space</indexterm><indexterm index="cp">peak memory usage</indexterm> Many people use <acronym><acronymword>NCO</acronymword></acronym> on gargantuan files which dwarf the memory available (free <acronym><acronymword>RAM</acronymword></acronym> plus swap space) even on today's powerful machines. These users want  [...]
-      <para><indexterm index="cp">threads</indexterm><indexterm index="cp">OpenMP</indexterm><indexterm index="cp">shared memory machines</indexterm>This section describes the memory <acronym><acronymword>NCO</acronymword></acronym> requires during operation. The required memory is based on the underlying algorithms. The description below is the memory usage per thread. Users with shared memory machines may use the threaded <acronym><acronymword>NCO</acronymword></acronym> operators (see [...]
-      <menu>
-        <menuentry>
-          <menunode>Single and Multi-file Operators</menunode>
-          <menutitle>Single and Multi-file Operators</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Memory for ncap2</menunode>
-          <menutitle>Memory for ncap2</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>Single and Multi-file Operators</nodename>
-    <nodenext>Memory for ncap2</nodenext>
-    <nodeprev>Memory Requirements</nodeprev>
-    <nodeup>Memory Requirements</nodeup>
-    <subsection>
-      <title>Single and Multi-file Operators</title>
-      <para><indexterm index="cp">multi-file operators</indexterm>The multi-file operators currently comprise the record operators, <command>ncra</command> and <command>ncrcat</command>, and the ensemble operators, <command>ncea</command> and <command>ncecat</command>. The record operators require <emph>much less</emph> memory than the ensemble operators. This is because the record operators operate on one single record (i.e., time-slice) at a time, wherease the ensemble operators retrie [...]
-      <para><command>ncwa</command> consumes between two and seven times the memory of a variable in order to process it. Peak consumption occurs when storing simultaneously in memory one input variable, one tally array, one input weight, one conformed/working weight, one weight tally, one input mask, one conformed/working mask, and one output variable. When invoked, the weighting and masking features contribute up to three-sevenths and two-sevenths of these requirements apiece. If weigh [...]
-      <para><indexterm index="cp">OpenMP</indexterm><indexterm index="cp">threads</indexterm>The above memory requirements must be multiplied by the number of threads <var>thr_nbr</var> (see <xref><xrefnodename>OpenMP Threading</xrefnodename></xref>). <indexterm index="cp"><code>-t <var>thr_nbr</var></code></indexterm>If this causes problems then reduce (with <samp>-t <var>thr_nbr</var></samp>) the number of threads.</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Memory for ncap2</nodename>
-    <nodeprev>Single and Multi-file Operators</nodeprev>
-    <nodeup>Memory Requirements</nodeup>
-    <subsection>
-      <title>Memory for <command>ncap2</command></title>
-      <para><indexterm index="cp"><command>ncap2</command></indexterm><indexterm index="cp">binary operations</indexterm><indexterm index="cp">unary operations</indexterm><indexterm index="cp">memory leaks</indexterm><indexterm index="cp">left hand casting</indexterm><command>ncap2</command> has unique memory requirements due its ability to process arbitrarily long scripts of any complexity. All scripts acceptable to <command>ncap2</command> are ultimately processed as a sequence of bina [...]
-      <para><indexterm index="cp">malloc()</indexterm><command>ncap2</command> scripts are complete dynamic and may be of arbitrary length. A script that contains many thousands of operations, may uncover a slow memory leak even though each single operation consumes little additional memory. Memory leaks are usually identifiable by their memory usage signature. Leaks cause peak memory usage to increase monotonically with time regardless of script complexity. Slow leaks are very difficult [...]
-    </subsection>
-  </node>
-  <node>
-    <nodename>Performance</nodename>
-    <nodeprev>Memory Requirements</nodeprev>
-    <nodeup>Strategies</nodeup>
-    <section>
-      <title>Performance</title>
-      <para><indexterm index="cp">papers</indexterm><indexterm index="cp">overview</indexterm>An overview of <acronym><acronymword>NCO</acronymword></acronym> capabilities as of about 2006 is in Zender, C. S. (2008), “Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO)”, Environ. Modell. Softw., doi:10.1016/j.envsoft.2008.03.004. This paper is also available at <uref><urefurl>http://dust.ess.uci.edu/ppr/ppr_Zen08_ems.pdf</urefurl></uref>.</para>
-      <para><indexterm index="cp">scaling</indexterm><indexterm index="cp">performance</indexterm><acronym><acronymword>NCO</acronymword></acronym> performance and scaling for arithmetic operations is described in Zender, C. S., and H. J. Mangalam (2007), “Scaling Properties of Common Statistical Operators for Gridded Datasets”, Int. J. High<!-- /@w --> Perform. Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802. This paper is also available at <uref><urefurl>http:// [...]
-      <para>It is helpful to be aware of the aspects of <acronym><acronymword>NCO</acronymword></acronym> design that can limit its performance:</para>
-      <enumerate first="1">
-        <item>
-          <para><indexterm index="cp">buffering</indexterm>No data buffering is performed during <command>nc_get_var</command> and <command>nc_put_var</command> operations. <indexterm index="cp">performance</indexterm><indexterm index="cp">operator speed</indexterm><indexterm index="cp">speed</indexterm><indexterm index="cp">execution time</indexterm>Hyperslabs too large too hold in core memory will suffer substantial performance penalties because of this.</para>
-        </item>
-        <item>
-          <para><indexterm index="cp">monotonic coordinates</indexterm>Since coordinate variables are assumed to be monotonic, the search for bracketing the user-specified limits should employ a quicker algorithm, like bisection, than the two-sided incremental search currently implemented.</para>
-        </item>
-        <item>
-          <para><indexterm index="cp"><var>C_format</var></indexterm><indexterm index="cp"><var>FORTRAN_format</var></indexterm><indexterm index="cp"><var>signedness</var></indexterm><indexterm index="cp"><var>scale_format</var></indexterm><indexterm index="cp"><var>add_offset</var></indexterm><var>C_format</var>, <var>FORTRAN_format</var>, <var>signedness</var>, <var>scale_format</var> and <var>add_offset</var> attributes are ignored by <command>ncks</command> when printing variables to [...]
-        </item>
-        <item>
-          <para><indexterm index="cp">Yorick</indexterm>In the late 1990s it was discovered that some random access operations on large files on certain architectures (e.g., <acronym><acronymword>UNICOS</acronymword></acronym>) were much slower with <acronym><acronymword>NCO</acronymword></acronym> than with similar operations performed using languages that bypass the netCDF interface (e.g., Yorick). This may have been a penalty of unnecessary byte-swapping in the netCDF interface. It is [...]
-        </item>
-      </enumerate>
-    </section>
-  </node>
-  <node>
-    <nodename>Common features</nodename>
-    <nodenext>Operator Reference Manual</nodenext>
-    <nodeprev>Strategies</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>NCO Features</title>
-      <para>Many features have been implemented in more than one operator and are described here for brevity. The description of each feature is preceded by a box listing the operators for which the feature is implemented. <indexterm index="cp">command line switches</indexterm>Command line switches for a given feature are consistent across all operators wherever possible. If no “key switches” are listed for a feature, then that particular feature is automatic and cannot be co [...]
-      <menu>
-        <menuentry>
-          <menunode>Internationalization</menunode>
-          <menutitle>Internationalization</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Metadata Optimization</menunode>
-          <menutitle>Metadata Optimization</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>OpenMP Threading</menunode>
-          <menutitle>OpenMP Threading</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Command Line Options</menunode>
-          <menutitle>Command Line Options</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Specifying Input Files</menunode>
-          <menutitle>Specifying Input Files</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Specifying Output Files</menunode>
-          <menutitle>Specifying Output Files</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Remote storage</menunode>
-          <menutitle>Remote storage</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Retaining Retrieved Files</menunode>
-          <menutitle>Retaining Retrieved Files</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Selecting Output File Format</menunode>
-          <menutitle>Selecting Output File Format</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Large File Support</menunode>
-          <menutitle>Large File Support</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Subsetting Variables</menunode>
-          <menutitle>Subsetting Variables</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Subsetting Coordinate Variables</menunode>
-          <menutitle>Subsetting Coordinate Variables</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>C and Fortran Index Conventions</menunode>
-          <menutitle>C and Fortran Index Conventions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Hyperslabs</menunode>
-          <menutitle>Hyperslabs</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Stride</menunode>
-          <menutitle>Stride</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Multislabs</menunode>
-          <menutitle>Multislabs</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Wrapped Coordinates</menunode>
-          <menutitle>Wrapped Coordinates</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Auxiliary Coordinates</menunode>
-          <menutitle>Auxiliary Coordinates</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>UDUnits Support</menunode>
-          <menutitle>UDUnits Support</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Rebasing Time Coordinate</menunode>
-          <menutitle>Rebasing Time Coordinate</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Missing Values</menunode>
-          <menutitle>Missing Values</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Chunking</menunode>
-          <menutitle>Chunking</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Deflation</menunode>
-          <menutitle>Deflation</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Packed data</menunode>
-          <menutitle>Packed data</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Operation Types</menunode>
-          <menutitle>Operation Types</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Type Conversion</menunode>
-          <menutitle>Type Conversion</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Batch Mode</menunode>
-          <menutitle>Batch Mode</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>History Attribute</menunode>
-          <menutitle>History Attribute</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>File List Attributes</menunode>
-          <menutitle>File List Attributes</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>CF Conventions</menunode>
-          <menutitle>CF Conventions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ARM Conventions</menunode>
-          <menutitle>ARM Conventions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Operator Version</menunode>
-          <menutitle>Operator Version</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </chapter>
-  </node>
-  <node>
-    <nodename>Internationalization</nodename>
-    <nodenext>Metadata Optimization</nodenext>
-    <nodeprev>Common features</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Internationalization</title>
-      <para><indexterm index="cp">Internationalization</indexterm><indexterm index="cp">I18N</indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak;</para>
-      </cartouche>
-      <para><indexterm index="cp">L10N</indexterm><acronym><acronymword>NCO</acronymword></acronym> support for <dfn>internationalization</dfn> of textual input and output (e.g., Warning messages) is nascent. We hope to produce foreign language string catalogues in 2004. 
-<!-- fxm: Work on this section --></para>
-    </section>
-  </node>
-  <node>
-    <nodename>Metadata Optimization</nodename>
-    <nodenext>OpenMP Threading</nodenext>
-    <nodeprev>Internationalization</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Metadata Optimization</title>
-      <para><indexterm index="cp">metadata optimization</indexterm><indexterm index="cp">performance</indexterm><indexterm index="cp">operator speed</indexterm><indexterm index="cp">speed</indexterm><indexterm index="cp">execution time</indexterm><indexterm index="cp"><code>nc__enddef()</code></indexterm><indexterm index="cp"><code>--hdr_pad <var>hdr_pad</var></code></indexterm><indexterm index="cp"><code>--header_pad <var>hdr_pad</var></code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncatted</command>, <command>ncks</command>, <command>ncrename</command>&linebreak; Short options: None&linebreak; Long options: <samp>--hdr_pad</samp>, <samp>--header_pad</samp>&linebreak;</para>
-      </cartouche>
-      <para><acronym><acronymword>NCO</acronymword></acronym> supports padding headers to improve the speed of future metadata operations. Use the <samp>--hdr_pad</samp> and <samp>--header_pad</samp> switches to request that <var>hdr_pad</var> bytes be inserted into the metadata section of the output file. Future metadata expansions will not incur the performance penalty of copying the entire output file unless the expansion exceeds the amount of header padding exceeded. This can be bene [...]
-      <para>This optimization exploits the netCDF library <code>nc__enddef()</code> function, which behaves differently with different versions of netCDF. It will improve speed of future metadata expansion with <code>CLASSIC</code> and <code>64bit</code> netCDF files, but not necessarily with <code>NETCDF4</code> files, i.e., those created by the netCDF interface to the <acronym><acronymword>HDF5</acronymword></acronym> library (see <xref><xrefnodename>Selecting Output File Format</xrefn [...]
-    </section>
-  </node>
-  <node>
-    <nodename>OpenMP Threading</nodename>
-    <nodenext>Command Line Options</nodenext>
-    <nodeprev>Metadata Optimization</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>OpenMP Threading</title>
-      <para><indexterm index="cp">OpenMP</indexterm><indexterm index="cp">threads</indexterm><indexterm index="cp"><acronym><acronymword>SMP</acronymword></acronym></indexterm><indexterm index="cp">shared memory parallelism</indexterm><indexterm index="cp">parallelism</indexterm><indexterm index="cp"><code>nco_openmp_thread_number</code></indexterm><indexterm index="cp"><code>--thr_nbr <var>thr_nbr</var></code></indexterm><indexterm index="cp"><code>--threads <var>thr_nbr</var></code></i [...]
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-t</samp>&linebreak; Long options: <samp>--thr_nbr</samp>, <samp>--threads</samp>, <samp>--omp_num_threads</samp>&linebreak;</para>
-      </cartouche>
-      <para><acronym><acronymword>NCO</acronymword></acronym> supports shared memory parallelism (<acronym><acronymword>SMP</acronymword></acronym>) when compiled with an OpenMP-enabled compiler. Threads requests and allocations occur in two stages. First, users may request a specific number of threads <var>thr_nbr</var> with the <samp>-t</samp> switch (or its long option equivalents, <samp>--thr_nbr</samp>, <samp>--threads</samp>, and <samp>--omp_num_threads</samp>). If not user-specifi [...]
-      <para><indexterm index="cp"><var>thr_nbr</var></indexterm><indexterm index="cp"><code>OMP_NUM_THREADS</code></indexterm><indexterm index="cp"><command>ncrcat</command></indexterm><indexterm index="cp"><command>ncwa</command></indexterm><indexterm index="cp"><command>ncap</command></indexterm><indexterm index="cp"><command>ncpdq</command></indexterm><indexterm index="cp">large datasets</indexterm><acronym><acronymword>NCO</acronymword></acronym> may modify <var>thr_nbr</var> accordi [...]
-      <para>Compute-intensive operators (<code>ncap</code>, <code>ncwa</code> and <code>ncpdq</code>) benefit most from threading. The greatest increases in throughput due to threading occur on large datasets where each thread performs millions, at least, of floating point operations. Otherwise, the system overhead of setting up threads probably outweighs the speed enhancements due to <acronym><acronymword>SMP</acronymword></acronym> parallelism. However, we have not yet demonstrated tha [...]
-      <para><indexterm index="cp">debugging</indexterm><indexterm index="cp"><var>dbg_lvl</var></indexterm>Once the initial <var>thr_nbr</var> has been modified for any operator-specific limits, <acronym><acronymword>NCO</acronymword></acronym> requests the system to allocate a team of <var>thr_nbr</var> threads for the body of the code. The operating system then decides how many threads to allocate based on this request. Users may keep track of this information by running the operator w [...]
-      <para>By default, threaded operators attach one global attribute, <code>nco_openmp_thread_number</code>, to any file they create or modify. This attribute contains the number of threads the operator used to process the input files. This information helps to verify that the answers with threaded and non-threaded operators are equal to within machine precision. <indexterm index="cp">benchmarks</indexterm>This information is also useful for benchmarking.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Command Line Options</nodename>
-    <nodenext>Specifying Input Files</nodenext>
-    <nodeprev>OpenMP Threading</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Command Line Options</title>
-      <para><indexterm index="cp">command line options</indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak;</para>
-      </cartouche>
-      <para><indexterm index="cp"><acronym><acronymword>POSIX</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>UNIX</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>GNU</acronymword></acronym></indexterm><indexterm index="cp">switches</indexterm><acronym><acronymword>NCO</acronymword></acronym> achieves flexibility by using <dfn>command line options</dfn>. These options are implemented in all traditional <acronym><acronymword>UN [...]
-      <para><indexterm index="cp">long options</indexterm>Extended options, also called long options, are implemented using the system-supplied <file>getopt.h</file> header file, if possible. <indexterm index="cp"><code>BSD</code></indexterm><indexterm index="cp"><code>getopt</code></indexterm><indexterm index="cp"><code>getopt_long</code></indexterm><indexterm index="cp"><file>getopt.h</file></indexterm>This provides the <command>getopt_long</command> function to <acronym><acronymword>N [...]
-      <para><indexterm index="cp"><code>-D <var>debug-level</var></code></indexterm><indexterm index="cp"><code>--dbg_lvl <var>debug-level</var></code></indexterm>The syntax of <dfn>short options</dfn> (single letter options) is <kbd>-<var>key</var> <var>value</var></kbd> (dash-key-space-value). Here, <var>key</var> is the single letter option name, e.g., <samp>-D 2</samp>.</para>
-      <para>The syntax of <dfn>long options</dfn> (multi-letter options) is <kbd>–<var>long_name</var> <var>value</var></kbd> (dash-dash-key-space-value), e.g., <samp>--dbg_lvl 2</samp> or <kbd>–<var>long_name</var>=<var>value</var></kbd> (dash-dash-key-equal-value), e.g., <samp>--dbg_lvl=2</samp>. Thus the following are all valid for the <samp>-D</samp> (short version) or <samp>--dbg_lvl</samp> (long version) command line option.</para>
-      <example xml:space="preserve">ncks -D 3 in.nc        # Short option
-ncks --dbg_lvl=3 in.nc # Long option, preferred form
-ncks --dbg_lvl 3 in.nc # Long option, alternate form</example>
-      <para role="continues">The last example is preferred for two reasons. First, <samp>--dbg_lvl</samp> is more specific and less ambiguous than <samp>-D</samp>. The long option form makes scripts more self documenting and less error prone. Often long options are named after the source code variable whose value they carry. Second, the equals sign <kbd>=</kbd> joins the key (i.e., <var>long_name</var>) to the value in an uninterruptible text block. Experience shows that users are less l [...]
-      <para><acronym><acronymword>GNU</acronymword></acronym> implements a superset of the <acronym><acronymword>POSIX</acronymword></acronym> standard which allows any unambiguous truncation of a valid option to be used.</para>
-      <example xml:space="preserve">ncks -D 3 in.nc        # Short option
-ncks --dbg_lvl=3 in.nc # Long option, full form
-ncks --dbg=3 in.nc     # Long option, unambiguous truncation
-ncks --db=3 in.nc      # Long option, unambiguous truncation
-ncks --d=3 in.nc       # Long option, ambiguous truncation</example>
-      <para role="continues">The first four examples are equivalent and will work as expected. The final example will exit with an error since <command>ncks</command> cannot disambiguate whether <samp>--d</samp> is intended as a truncation of <samp>--dbg_lvl</samp>, of <samp>--dimension</samp>, or of some other long option.</para>
-      <para><acronym><acronymword>NCO</acronymword></acronym> provides many long options for common switches. For example, the debugging level may be set in all operators with any of the switches <samp>-D</samp>, <samp>--debug-level</samp>, or <samp>--dbg_lvl</samp>. This flexibility allows users to choose their favorite mnemonic. For some, it will be <samp>--debug</samp> (an unambiguous truncation of <samp>--debug-level</samp>, and other will prefer <samp>--dbg</samp>. Interactive users [...]
-      <para>This manual generally uses the short option syntax. This is for historical reasons and to conserve space. The remainder of this manual specifies the full <var>long_name</var> of each option. Users are expected to pick the unambiguous truncation of each option name that most suits their taste.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Specifying Input Files</nodename>
-    <nodenext>Specifying Output Files</nodenext>
-    <nodeprev>Command Line Options</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Specifying Input Files</title>
-      <para><indexterm index="cp">input files</indexterm><indexterm index="cp">globbing</indexterm><indexterm index="cp">regular expressions</indexterm><indexterm index="cp">wildcards</indexterm><indexterm index="cp"><code>NINTAP</code></indexterm><indexterm index="cp">Processor, <acronym><acronymword>CCM</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>CCM</acronymword></acronym> Processor</indexterm><indexterm index="cp"><code>-n <var>loop</var></code></in [...]
-      <cartouche>
-        <para>Availability (<code>-n</code>): <command>ncea</command>, <command>ncecat</command>, <command>ncra</command>, <command>ncrcat</command>&linebreak; Availability (<code>-p</code>): All operators&linebreak; Short options: <samp>-n</samp>, <samp>-p</samp>&linebreak; Long options: <samp>--nintap</samp>, <samp>--pth</samp>, <samp>--path</samp>&linebreak;</para>
-      </cartouche>
-      <para>It is important that users be able to specify multiple input files without typing every filename in full, often a tedious task even by graduate student standards. <indexterm index="cp"><acronym><acronymword>UNIX</acronymword></acronym></indexterm>There are four different ways of specifying input files to <acronym><acronymword>NCO</acronymword></acronym>: explicitly typing each, using <acronym><acronymword>UNIX</acronymword></acronym> shell wildcards, and using the <acronym><a [...]
-      <para>To illustrate these methods, consider the simple problem of using <command>ncra</command> to average five input files, <file>85.nc</file>, <file>86.nc</file>, &dots; <file>89.nc</file><!-- /@w -->, and store the results in <file>8589.nc</file>. Here are the four methods in order. They produce identical answers.</para>
-      <example xml:space="preserve">ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncra 8[56789].nc 8589.nc
-ncra -p <var>input-path</var> 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncra -n 5,2,1 85.nc 8589.nc</example>
-      <para>The first method (explicitly specifying all filenames) works by brute force. The second method relies on the operating system shell to <dfn>glob</dfn> (expand) the <dfn>regular expression</dfn> <code>8[56789].nc</code>. The shell passes valid filenames which match the expansion to <command>ncra</command>. The third method uses the <samp>-p <var>input-path</var></samp> argument to specify the directory where all the input files reside. <acronym><acronymword>NCO</acronymword></ [...]
-      <para>The last method passes (with <samp>-n</samp>) syntax concisely describing the entire set of filenames <footnote><para>The <samp>-n</samp> option is a backward compatible superset of the <code>NINTAP</code> option from the <acronym><acronymword>NCAR</acronymword></acronym> <acronym><acronymword>CCM</acronymword></acronym> Processor.</para></footnote>. <indexterm index="cp">multi-file operators</indexterm><indexterm index="cp">files, multiple</indexterm>This option is only avai [...]
-      <para><acronym><acronymword>NCO</acronymword></acronym> is able to decode lists of such filenames encoded using the <samp>-n</samp> option. The simpler (3-argument) <samp>-n</samp> usage takes the form <code>-n <var>file_number</var>,<var>digit_number</var>,<var>numeric_increment</var></code> where <var>file_number</var> is the number of files, <var>digit_number</var> is the fixed number of numeric digits comprising the <var>numeric_suffix</var>, and <var>numeric_increment</var> is [...]
-      <para><indexterm index="cp">wrapped filenames</indexterm><indexterm index="cp">climate model</indexterm>Recently the <samp>-n</samp> option has been extended to allow convenient specification of filenames with “circular” characteristics. This means it is now possible for <acronym><acronymword>NCO</acronymword></acronym> to automatically generate filenames which increment regularly until a specified maximum value, and then wrap back to begin again at a specified minimum  [...]
-      <example xml:space="preserve">ncra -n 3,2,1 85_06.nc 85_0608.nc
-ncra -n 3,2,1,12 85_12.nc 85_1202.nc
-ncra -n 3,2,1,12,1 85_12.nc 85_1202.nc</example>
-      <para>The first example shows that three arguments to the <samp>-n</samp> option suffice to specify consecutive months (<code>06, 07, 08</code>) which do not “wrap” back to a minimum value. The second example shows how to use the optional fourth and fifth elements of the <samp>-n</samp> option to specify a wrap value to <acronym><acronymword>NCO</acronymword></acronym>. The fourth argument to <samp>-n</samp>, if present, specifies the maximum integer value of <var>numer [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Specifying Output Files</nodename>
-    <nodenext>Remote storage</nodenext>
-    <nodeprev>Specifying Input Files</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Specifying Output Files</title>
-      <para><indexterm index="cp">output file</indexterm><indexterm index="cp">input files</indexterm><indexterm index="cp">positional arguments</indexterm><indexterm index="cp">command line switches</indexterm><indexterm index="cp"><code>-o <var>fl_out</var></code></indexterm><indexterm index="cp"><code>--output <var>fl_out</var></code></indexterm><indexterm index="cp"><code>--fl_out <var>fl_out</var></code></indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: <samp>-o</samp>&linebreak; Long options: <samp>--fl_out</samp>, <samp>--output</samp>&linebreak;</para>
-      </cartouche>
-      <para><acronym><acronymword>NCO</acronymword></acronym> commands produce no more than one output file, <var>fl_out</var>. Traditionally, users specify <var>fl_out</var> as the final argument to the operator, following all input file names. This is the <dfn>positional argument</dfn> method of specifying input and ouput file names. The positional argument method works well in most applications. <acronym><acronymword>NCO</acronymword></acronym> also supports specifying <var>fl_out</va [...]
-      <para>Specifying <var>fl_out</var> with a switch, rather than as a positional argument, allows <var>fl_out</var> to precede input files in the argument list. <indexterm index="cp">multi-file operators</indexterm>This is particularly useful with multi-file operators for three reasons. Multi-file operators may be invoked with hundreds (or more) filenames. Visual or automatic location of <var>fl_out</var> in such a list is difficult when the only syntactic distinction between input an [...]
-      <para>Users should specify <var>fl_out</var> using either but not both methods. If <var>fl_out</var> is specified twice (once with the switch and once as the last positional argument), then the positional argument takes precedence.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Remote storage</nodename>
-    <nodenext>Retaining Retrieved Files</nodenext>
-    <nodeprev>Specifying Output Files</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Accessing Remote Files</title>
-      <para><indexterm index="cp"><code>rcp</code></indexterm><indexterm index="cp"><code>scp</code></indexterm><indexterm index="cp"><file>.rhosts</file></indexterm><indexterm index="cp"><acronym><acronymword>NCAR MSS</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>MSS</acronymword></acronym></indexterm><indexterm index="cp">Mass Store System</indexterm><indexterm index="cp"><acronym><acronymword>URL</acronymword></acronym></indexterm><indexterm index="cp" [...]
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: <samp>-p</samp>, <samp>-l</samp>&linebreak; Long options: <samp>--pth</samp>, <samp>--path</samp>, <samp>--lcl</samp>, <samp>--local</samp>&linebreak;</para>
-      </cartouche>
-      <para>All <acronym><acronymword>NCO</acronymword></acronym> operators can retrieve files from remote sites as well as from the local file system. A remote<!-- /@w --> site can be an anonymous <acronym><acronymword>FTP</acronymword></acronym> server, a machine on which the user has <command>rcp</command>, <command>scp</command>, or <command>sftp</command> privileges, or <acronym><acronymword>NCAR</acronymword></acronym>'s Mass Storage System (<acronym><acronymword>MSS</acronymword>< [...]
-      <para>To access a file via an anonymous <acronym><acronymword>FTP</acronymword></acronym> server, supply the remote file's <acronym><acronymword>URL</acronymword></acronym>. <acronym><acronymword>FTP</acronymword></acronym> is an intrinsically insecure protocol because it transfers passwords in plain text format. Users should access sites using anonymous <acronym><acronymword>FTP</acronymword></acronym> when possible. Some <acronym><acronymword>FTP</acronymword></acronym> servers r [...]
-      <example xml:space="preserve">machine dust.ess.uci.edu login zender password bushlied</example>
-      <para>Eschew using valuable passwords for <acronym><acronymword>FTP</acronymword></acronym> transactions, since <file>.netrc</file> passwords are potentially exposed to eavesdropping software <footnote><para><acronym><acronymword>NCO</acronymword></acronym> does not implement command line options to specify <acronym><acronymword>FTP</acronymword></acronym> logins and passwords because copying those data into the <code>history</code> global attribute in the output file (done by defa [...]
-      <para><acronym><acronymword>SFTP</acronymword></acronym>, i.e., secure <acronym><acronymword>FTP</acronymword></acronym>, uses <acronym><acronymword>SSH</acronymword></acronym>-based security protocols that solve the security issues associated with plain <acronym><acronymword>FTP</acronymword></acronym>. <acronym><acronymword>NCO</acronymword></acronym> supports <acronym><acronymword>SFTP</acronymword></acronym> protocol access to files specified with a homebrew syntax of the form</para>
-      <example xml:space="preserve">sftp://machine.domain.tld:/path/to/filename</example>
-      <para>Note the second colon following the top-level-domain (tld). This syntax is a hybrid between an <acronym><acronymword>FTP URL</acronymword></acronym> and a standard remote file syntax.</para>
-      <para>To access a file using <command>rcp</command> or <command>scp</command>, specify the Internet address of the remote file. Of course in this case you must have <command>rcp</command> or <command>scp</command> privileges which allow transparent (no password entry required) access to the remote machine. This means that <file>~/.rhosts</file> or <file>~/ssh/authorized_keys</file> must be set accordingly on both local and remote machines.</para>
-      <para><indexterm index="cp"><acronym><acronymword>HPSS</acronymword></acronym></indexterm><indexterm index="cp"><command>hsi</command></indexterm><indexterm index="cp"><command>msrcp</command></indexterm><indexterm index="cp"><command>msread</command></indexterm><indexterm index="cp"><command>nrnet</command></indexterm>To access a file on a High Performance Storage System (<acronym><acronymword>HPSS</acronymword></acronym>) (such as that at <acronym><acronymword>NCAR</acronymword>< [...]
-      <para>The following examples show how one might analyze files stored on remote systems. 
-<!-- HPSS syntax at http://www2.cisl.ucar.edu/docs/hpss/hsi --></para>
-      <example xml:space="preserve">ncks -l . ftp://dust.ess.uci.edu/pub/zender/nco/in.nc
-ncks -l . sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco/in.nc
-ncks -l . dust.ess.uci.edu:/home/zender/nco/data/in.nc
-ncks -l . /ZENDER/nco/in.nc
-ncks -l . /home/zender/nco/in.nc
-ncks -l . http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc</example>
-      <para role="continues">The first example works verbatim if your system is connected to the Internet and is not behind a firewall. The second example works if you have <command>sftp</command> access to the machine <code>dust.ess.uci.edu</code>. The third example works if you have <command>rcp</command> or <command>scp</command> access to the machine <code>dust.ess.uci.edu</code>. The fourth and fifth examples work on <acronym><acronymword>NCAR</acronymword></acronym> computers with  [...]
-      <example xml:space="preserve">ncks -p ftp://dust.ess.uci.edu/pub/zender/nco -l . in.nc
-ncks -p sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco -l . in.nc
-ncks -p dust.ess.uci.edu:/home/zender/nco -l . in.nc
-ncks -p /ZENDER/nco -l . in.nc
-ncks -p /home/zender/nco -l . in.nc # HPSS
-ncks -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-     -l . in.nc</example>
-      <para role="continues">Using <samp>-p</samp> is recommended because it clearly separates the <var>input-path</var> from the filename itself, sometimes called the <dfn>stub</dfn>. <indexterm index="cp">stub</indexterm>When <var>input-path</var> is not explicitly specified using <samp>-p</samp>, <acronym><acronymword>NCO</acronymword></acronym> internally generates an <var>input-path</var> from the first input filename. The automatically generated <var>input-path</var> is constructed [...]
-      <menu>
-        <menuentry>
-          <menunode>OPeNDAP</menunode>
-          <menutitle>OPeNDAP</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>OPeNDAP</nodename>
-    <nodeprev>Remote storage</nodeprev>
-    <nodeup>Remote storage</nodeup>
-    <subsection>
-      <title><acronym><acronymword>OPeNDAP</acronymword></acronym></title>
-      <para><indexterm index="cp"><acronym><acronymword>DAP</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>DODS</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>HTTP</acronymword></acronym> protocol</indexterm><indexterm index="cp"><env>DODS_ROOT</env></indexterm><indexterm index="cp">Distributed Oceanographic Data System</indexterm><indexterm index="cp">oceanography</indexterm><indexterm index="cp">data access protocol</index [...]
-      <para><acronym><acronymword>NCO</acronymword></acronym> may be <acronym><acronymword>DAP</acronymword></acronym>-enabled by linking <acronym><acronymword>NCO</acronymword></acronym> to the <acronym><acronymword>OPeNDAP</acronymword></acronym> libraries. <indexterm index="cp"><file>Makefile</file></indexterm>This is described in the <acronym><acronymword>OPeNDAP</acronymword></acronym> documentation and automagically implemented in <acronym><acronymword>NCO</acronymword></acronym> b [...]
-      <para>Once <acronym><acronymword>NCO</acronymword></acronym> is <acronym><acronymword>DAP</acronymword></acronym>-enabled the operators are <acronym><acronymword>OPeNDAP</acronymword></acronym> clients. All <acronym><acronymword>OPeNDAP</acronymword></acronym> clients have network transparent access to any files controlled by a <acronym><acronymword>OPeNDAP</acronymword></acronym> server. Simply specify the input file path(s) in <acronym><acronymword>URL</acronymword></acronym> not [...]
-      <example xml:space="preserve">% ncks -O -o ~/foo.nc -C -H -v one -l /tmp \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-% ncks -H -v one ~/foo.nc
-one = 1</example>
-      <para>The <code>one = 1</code> outputs confirm (first) that <command>ncks</command> correctly retrieved data via the  <acronym><acronymword>OPeNDAP</acronymword></acronym> protocol and (second) that <command>ncks</command> created a valid local copy of the subsetted remote file. With minor changes to the above command, netCDF4 can be used as both the input and output file format:</para>
-      <example xml:space="preserve">% ncks -4 -O -o ~/foo.nc -C -H -v one -l /tmp \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-% ncks -H -v one ~/foo.nc
-one = 1</example>
-      <para>And, of course, <acronym><acronymword>OPeNDAP</acronymword></acronym>-enabled <acronym><acronymword>NCO</acronymword></acronym> clients continue to support other, orthogonal features such as UDUnits (see <xref><xrefnodename>UDUnits Support</xrefnodename></xref>):</para>
-      <example xml:space="preserve">% ncks -u -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' \
-  -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc
-% wvl[0]=5e-07 meter</example>
-      <para>The next command is a more advanced example which demonstrates the real power of <acronym><acronymword>OPeNDAP</acronymword></acronym>-enabled <acronym><acronymword>NCO</acronymword></acronym> clients. The <command>ncwa</command> client requests an equatorial hyperslab from remotely stored <acronym><acronymword>NCEP reanalyses data</acronymword></acronym> of the year 1969<!-- /@w -->. The <acronym><acronymword>NOAA</acronymword></acronym> <acronym><acronymword>OPeNDAP</acrony [...]
-      <example xml:space="preserve">ncwa -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-  pres.sfc.1969.nc ~/foo.nc</example>
-      <para role="continues"><indexterm index="cp">packing</indexterm><indexterm index="cp">unpacking</indexterm>All with one command! The data in this particular input file also happen to be packed (see <xref><xrefnodename>Methods and functions</xrefnodename></xref>), although this is completely transparent to the user since <acronym><acronymword>NCO</acronymword></acronym> automatically unpacks data before attempting arithmetic.</para>
-      <para><acronym><acronymword>NCO</acronymword></acronym> obtains remote files from the <acronym><acronymword>OPeNDAP</acronymword></acronym> server (e.g., <file>www.cdc.noaa.gov</file>) rather than the local machine. Input files are first copied to the local machine, then processed. The <acronym><acronymword>OPeNDAP</acronymword></acronym> server performs data access, hyperslabbing, and transfer to the local machine. <indexterm index="cp">I/O</indexterm>This allows the I/O to appear [...]
-    </subsection>
-  </node>
-  <node>
-    <nodename>Retaining Retrieved Files</nodename>
-    <nodenext>Selecting Output File Format</nodenext>
-    <nodeprev>Remote storage</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Retaining Retrieved Files</title>
-      <para><indexterm index="cp">file deletion</indexterm><indexterm index="cp">file removal</indexterm><indexterm index="cp">file retention</indexterm><indexterm index="cp"><code>-R</code></indexterm><indexterm index="cp"><code>--rtn</code></indexterm><indexterm index="cp"><code>--retain</code></indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: <samp>-R</samp>&linebreak; Long options: <samp>--rtn</samp>, <samp>--retain</samp>&linebreak;</para>
-      </cartouche>
-      <para>In order to conserve local file system space, files retrieved from remote locations are automatically deleted from the local file system once they have been processed. Many <acronym><acronymword>NCO</acronymword></acronym> operators were constructed to work with numerous large (e.g., 200 MB<!-- /@w -->) files. Retrieval of multiple files from remote locations is done serially. Each file is retrieved, processed, then deleted before the cycle repeats. In cases where it is usefu [...]
-      <para>Invoking <code>-R</code> disables the default printing behavior of <command>ncks</command>. This allows <command>ncks</command> to retrieve remote files without automatically trying to print them. See <xref><xrefnodename>ncks netCDF Kitchen Sink</xrefnodename></xref>, for more details.</para>
-      <para><indexterm index="cp"><acronym><acronymword>FTP</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>SSH</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>msrcp</acronymword></acronym></indexterm>Note that the remote retrieval features of <acronym><acronymword>NCO</acronymword></acronym> can always be used to retrieve <emph>any</emph> file, including non-netCDF files, via <command>SSH</command>, anonymous <acronym><acrony [...]
-      <example xml:space="preserve">ncks -R -p ftp://weather.edu/pub/pix/jpeg -l . storm.jpg</example>
-      <para role="continues">In this example, <command>ncks</command> automatically performs an anonymous <acronym><acronymword>FTP</acronymword></acronym> login to the remote machine and retrieves the specified file. When <command>ncks</command> attempts to read the local copy of <file>storm.jpg</file> as a netCDF file, it fails and exits, leaving  <file>storm.jpg</file> in the current directory.</para>
-      <para><indexterm index="cp"><acronym><acronymword>DODS</acronymword></acronym></indexterm><indexterm index="cp">server</indexterm>If your <acronym><acronymword>NCO</acronymword></acronym> is <acronym><acronymword>DAP</acronymword></acronym>-enabled (see <xref><xrefnodename>OPeNDAP</xrefnodename></xref>), then you may use <acronym><acronymword>NCO</acronymword></acronym> to retrieve any files (including netCDF, <acronym><acronymword>HDF</acronymword></acronym>, etc.) served by an <a [...]
-      <example xml:space="preserve">ncks -R -l . -p \
-http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-  pres.sfc.1969.nc</example>
-      <para>Note that <acronym><acronymword>NCO</acronymword></acronym> is never the preffered way to transport files from remote machines. For large jobs, that is best handled by <acronym><acronymword>FTP</acronymword></acronym>, <acronym><acronymword>SSH</acronymword></acronym>, or <command>wget</command>. It may occasionally be useful to use <acronym><acronymword>NCO</acronymword></acronym> to transfer files when your other preferred methods are not available locally.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Selecting Output File Format</nodename>
-    <nodenext>Large File Support</nodenext>
-    <nodeprev>Retaining Retrieved Files</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Selecting Output File Format</title>
-      <para><indexterm index="cp"><acronym><acronymword>HDF</acronymword></acronym></indexterm><indexterm index="cp">netCDF2</indexterm><indexterm index="cp">netCDF3</indexterm><indexterm index="cp">netCDF4</indexterm><indexterm index="cp"><code>NETCDF4_CLASSIC</code> files</indexterm><indexterm index="cp"><code>NETCDF4</code> files</indexterm><indexterm index="cp"><code>CLASSIC</code> files</indexterm><indexterm index="cp"><code>64BIT</code> files</indexterm><indexterm index="cp"><code> [...]
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-3</samp>, <samp>-4</samp>&linebreak; Long options: <samp>--3</samp>, <samp>--4</samp>, <samp>--64bit</samp>, <samp>--fl_fmt</samp>, <samp>--netcdf4</samp>&linebreak;</para>
-      </cartouche>
-      <para>All <acronym><acronymword>NCO</acronymword></acronym> operators support (read and write) all three (or four, depending on how one counts) file formats supported by netCDF4. The default output file format for all operators is the input file format. The operators listed under “Availability” above allow the user to specify the output file format independent of the input file format. These operators allow the user to convert between the various file formats. (The oper [...]
-      <para>netCDF supports four types of files: <code>CLASSIC</code>, <code>64BIT</code>, <code>NETCDF4</code>, and <code>NETCDF4_CLASSIC</code>, The <code>CLASSIC</code> format is the traditional 32-bit offset written by netCDF2 and netCDF3. As of 2005, most netCDF datasets are in <code>CLASSIC</code> format. The <code>64BIT</code> format was added in Fall, 2004.</para>
-      <para>The <code>NETCDF4</code> format uses <acronym><acronymword>HDF5</acronymword></acronym> as the file storage layer. The files are (usually) created, accessed, and manipulated using the traditional netCDF3 <acronym><acronymword>API</acronymword></acronym> (with numerous extensions). The <code>NETCDF4_CLASSIC</code> format refers to netCDF4 files created with the <code>NC_CLASSIC_MODEL</code> mask. Such files use <acronym><acronymword>HDF5</acronymword></acronym> as the back-end [...]
-      <para>As mentioned above, all operators write use the input file format for output files unless told otherwise. Toggling the long option <samp>--64bit</samp> switch (or its <var>key</var>-<var>value</var> equivalent <samp>--fl_fmt=64bit</samp>) produces the netCDF3 64-bit offset format named <code>64BIT</code>. <acronym><acronymword>NCO</acronymword></acronym> must be built with netCDF 3.6<!-- /@w --> or higher to produce a <code>64BIT</code> file. Using the <samp>-4</samp> switch  [...]
-      <para>These examples demonstrate converting a file from any netCDF format into any other netCDF format (subject to limits of the format):</para>
-      <example xml:space="preserve">ncks --fl_fmt=classic in.nc foo_3c.nc # netCDF3 classic
-ncks --fl_fmt=64bit in.nc foo_364.nc # netCDF3 64bit
-ncks --fl_fmt=netcdf4_classic in.nc foo_4c.nc # netCDF4 classic
-ncks --fl_fmt=netcdf4 in.nc foo_4.nc # netCDF4
-ncks -3 in.nc foo_3c.nc # netCDF3 classic
-ncks --3 in.nc foo_3c.nc # netCDF3 classic
-ncks -4 in.nc foo_4.nc # netCDF4
-ncks --4 in.nc foo_4.nc # netCDF4
-ncks --64 in.nc foo364.nc # netCDF3 64bit</example>
-      <para>Of course since most operators support these switches, the “conversions” can be done at the output stage of arithmetic or metadata processing rather than requiring a separate step. Producing (netCDF3) <code>CLASSIC</code> or <code>64BIT</code> files from <code>NETCDF4_CLASSIC</code> files will always work. However, producing netCDF3 files from <code>NETCDF4</code> files will only work if the output files are not required to contain netCDF4-specific features.</para>
-      <para>Note that <code>NETCDF4</code> and <code>NETCDF4_CLASSIC</code> are the same binary format. The latter simply causes a writing application to fail if it attempts to write a <code>NETCDF4</code> file that cannot be completely read by the netCDF3 library. Conversely, <code>NETCDF4_CLASSIC</code> indicates to a reading application that all of the file contents are readable with the netCDF3 library. As of October, 2005, <acronym><acronymword>NCO</acronymword></acronym> writes no  [...]
-      <para>There are at least three ways to discover the format of a netCDF file, i.e., whether it is a classic (32-bit offset) or newer 64-bit offset netCDF3 format, or is netCDF4 format. Each method returns the information using slightly different terminology that becomes easier to understand with practice.</para>
-      <para>First, examine the end of the first line of global metadata output by <samp>ncks -M</samp>: <indexterm index="cp">netCDF3 classic file format</indexterm><indexterm index="cp">netCDF4 classic file format</indexterm><indexterm index="cp">netCDF4 file format</indexterm><indexterm index="cp">32-bit offset file format</indexterm><indexterm index="cp">64-bit offset file format</indexterm><indexterm index="cp"><command>ncks</command></indexterm><indexterm index="cp"><code>-M</code>< [...]
-      <example xml:space="preserve">% ncks -M foo_3c.nc
-Opened file foo_3c.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_CLASSIC
-% ncks -M foo_364.nc
-Opened file foo_364.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_64BIT
-% ncks -M foo_4c.nc
-Opened file foo_4c.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_NETCDF4_CLASSIC
-% ncks -M foo_4.nc
-Opened file foo_4.nc: dimensions = 19, variables = 261, global atts. = 4,
-  id = 65536, type = NC_FORMAT_NETCDF4</example>
-      <para>This method requires a netCDF4-enabled <acronym><acronymword>NCO</acronymword></acronym> version 3.9.0+ (i.e., from 2007 or later).</para>
-      <para>Second, query the file with <samp>ncdump -k</samp>: <indexterm index="cp"><command>ncdump</command></indexterm></para>
-      <example xml:space="preserve">% ncdump -k foo_3.nc
-classic
-% ncdump -k foo_364.nc
-64-bit-offset
-% ncdump -k foo_4c.nc
-netCDF-4 classic model
-% ncdump -k foo_4.nc
-netCDF-4</example>
-      <para>This method requires a netCDF4-enabled <acronym><acronymword>netCDF</acronymword></acronym> 3.6.2+ (i.e., from 2007 or later).</para>
-      <para>The third option uses the POSIX-standard <command>od</command> (octal dump) command: <indexterm index="cp"><command>od</command></indexterm><indexterm index="cp">octal dump</indexterm></para>
-      <example xml:space="preserve">% od -An -c -N4 foo_3c.nc
-   C   D   F 001
-% od -An -c -N4 foo_364.nc
-   C   D   F 002
-% od -An -c -N4 foo_4c.nc
- 211   H   D   F
-% od -An -c -N4 foo_4.nc
- 211   H   D   F</example>
-      <para>This option works without <acronym><acronymword>NCO</acronymword></acronym> and <command>ncdump</command>. Values of <samp>C D F 001</samp> and <samp>C D F 002</samp> indicate 32-bit (classic) and 64-bit netCDF3 formats, respectively, while values of <samp>211 H D F</samp> indicate the newer netCDF4 file format.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Large File Support</nodename>
-    <nodenext>Subsetting Variables</nodenext>
-    <nodeprev>Selecting Output File Format</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Large File Support</title>
-      <para><indexterm index="cp">LFS</indexterm><indexterm index="cp">Large File Support</indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: none&linebreak; Long options: none&linebreak;</para>
-      </cartouche>
-      <para><acronym><acronymword>NCO</acronymword></acronym> has Large File Support (<acronym><acronymword>LFS</acronymword></acronym>), meaning that <acronym><acronymword>NCO</acronymword></acronym> can write files larger than 2 GB<!-- /@w --> on some 32-bit operating systems with netCDF libraries earlier than version 3.6<!-- /@w -->. If desired, LFS support must be configured when both netCDF and <acronym><acronymword>NCO</acronymword></acronym> are installed. netCDF versions 3.6<!--  [...]
-      <para>If you are still interesting in explicit LFS support for netCDF versions prior to 3.6<!-- /@w -->, know that LFS support depends on a complex, interlocking set of operating system <footnote><para> Linux and <acronym><acronymword>AIX</acronymword></acronym> are known to support <acronym><acronymword>LFS</acronymword></acronym>.</para></footnote> and netCDF suppport issues. The netCDF LFS FAQ at <uref><urefurl>http://my.unidata.ucar.edu/content/software/netcdf/faq-lfs.html</ure [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Subsetting Variables</nodename>
-    <nodenext>Subsetting Coordinate Variables</nodenext>
-    <nodeprev>Large File Support</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Subsetting Variables</title>
-      <para><indexterm index="cp">subsetting</indexterm><indexterm index="cp">exclusion</indexterm><indexterm index="cp">extraction</indexterm><indexterm index="cp"><code>-v <var>var</var></code></indexterm><indexterm index="cp"><code>--variable <var>var</var></code></indexterm><indexterm index="cp"><code>-x</code></indexterm><indexterm index="cp"><code>--exclude</code></indexterm><indexterm index="cp"><code>--xcl</code></indexterm></para>
-      <cartouche>
-        <para>Availability: (<command>ncap2</command>), <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-v</samp>, <samp>-x</samp>&linebreak; Long options: <samp>--variable</samp>, <samp>--exclude</samp> or <samp>--xcl</samp>&linebreak;</para>
-      </cartouche>
-      <para>Subsetting variables refers to explicitly specifying variables to be included or excluded from operator actions. Subsetting is implemented with the <samp>-v <var>var</var>[,&dots;]</samp> and <samp>-x</samp> options. A list<!-- /@w --> of variables to extract is specified following the <samp>-v</samp> option, e.g., <samp>-v time,lat,lon</samp>. Not using the <samp>-v</samp> option is equivalent to specifying all variables. The <samp>-x</samp> option causes the list of variabl [...]
-      <para>Variables explicitly specified for extraction with <samp>-v <var>var</var>[,&dots;]</samp> <emph>must</emph> be present in the input file or an error will result. Variables explicitly specified for <emph>exclusion</emph> with <samp>-x -v <var>var</var>[,&dots;]</samp> need not be present in the input file. <indexterm index="cp">memory requirements</indexterm>Remember, if averaging or concatenating large files stresses your systems memory or disk resources, then the easiest so [...]
-      <para>Due to its special capabilities, <command>ncap2</command> interprets the <samp>-v</samp> switch differently (see <xref><xrefnodename>ncap2 netCDF Arithmetic Processor</xrefnodename></xref>). For <command>ncap2</command>, the <samp>-v</samp> switch takes no arguments and indicates that <emph>only</emph> user-defined variables should be output. <command>ncap2</command> neither accepts nor understands the <var>-x</var> switch.</para>
-      <para><indexterm index="cp">extended regular expressions</indexterm><indexterm index="cp">regular expressions</indexterm><indexterm index="cp">pattern matching</indexterm><indexterm index="cp">wildcards</indexterm><indexterm index="cp"><command>egrep</command></indexterm><indexterm index="cp"><command>ncatted</command></indexterm><indexterm index="cp"><acronym><acronymword>GNU</acronymword></acronym></indexterm>As of <acronym><acronymword>NCO</acronymword></acronym> 2.8.1 (August,  [...]
-      <para><indexterm index="cp"><acronym><acronymword>POSIX</acronymword></acronym></indexterm><indexterm index="cp"><code>regex</code></indexterm>Because of its wide availability, <acronym><acronymword>NCO</acronymword></acronym> uses the <acronym><acronymword>POSIX</acronymword></acronym> regular expression library <code>regex</code>. Regular expressions of arbitary complexity may be used. Since netCDF variable names are relatively simple constructs, only a few varieties of variable  [...]
-      <table>
-        <tableitem>
-          <tableterm><samp>^</samp></tableterm>
-          <item>
-            <para>Matches the beginning of a string</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>$</samp></tableterm>
-          <item>
-            <para>Matches the end of a string</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>.</samp></tableterm>
-          <item>
-            <para>Matches any single character</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">The most useful repetition and combination operators are <indexterm index="cp"><code>?</code> (wildcard character)</indexterm><indexterm index="cp"><code>*</code> (wildcard character)</indexterm><indexterm index="cp"><code>+</code> (wildcard character)</indexterm><indexterm index="cp"><code>|</code> (wildcard character)</indexterm></para>
-      <table>
-        <tableitem>
-          <tableterm><samp>?</samp></tableterm>
-          <item>
-            <para>The preceding regular expression is optional and matched at most once</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>*</samp></tableterm>
-          <item>
-            <para>The preceding regular expression will be matched zero or more times</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>+</samp></tableterm>
-          <item>
-            <para>The preceding regular expression will be matched one or more times</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>|</samp></tableterm>
-          <item>
-            <para>The preceding regular expression will be joined to the following regular expression. The resulting regular expression matches any string matching either subexpression.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">To illustrate the use of these operators in extracting variables, consider a file with variables <code>Q</code>, <code>Q01</code>–<code>Q99</code>, <code>Q100</code>, <code>QAA</code>–<code>QZZ</code>, <code>Q_H2O</code>, <code>X_H2O</code>, <code>Q_CO2</code>, <code>X_CO2</code>.</para>
-      <example xml:space="preserve">ncks -v 'Q.?' in.nc              # Variables that contain Q
-ncks -v '^Q.?' in.nc             # Variables that start with Q
-ncks -v '^Q+.?.' in.nc           # Q, Q0--Q9, Q01--Q99, QAA--QZZ, etc.
-ncks -v '^Q..' in.nc             # Q01--Q99, QAA--QZZ, etc.
-ncks -v '^Q[0-9][0-9]' in.nc     # Q01--Q99, Q100
-ncks -v '^Q[[:digit:]]{2}' in.nc # Q01--Q99
-ncks -v 'H2O$' in.nc             # Q_H2O, X_H2O
-ncks -v 'H2O$|CO2$' in.nc        # Q_H2O, X_H2O, Q_CO2, X_CO2
-ncks -v '^Q[0-9][0-9]$' in.nc    # Q01--Q99
-ncks -v '^Q[0-6][0-9]|7[0-3]' in.nc # Q01--Q73, Q100
-ncks -v '(Q[0-6][0-9]|7[0-3])$' in.nc # Q01--Q73
-ncks -v '^[a-z]_[a-z]{3}$' in.nc # Q_H2O, X_H2O, Q_CO2, X_CO2</example>
-      <para>Beware—two of the most frequently used repetition pattern matching operators, <samp>*</samp> and <samp>?</samp>, are also valid pattern matching operators for filename expansion (globbing) at the shell-level. Confusingly, their meanings in extended regular expressions and in shell-level filename expansion are significantly different. In an extended regular expression, <samp>*</samp> matches zero or more occurences of the preceding regular expression. Thus <samp>Q*</samp [...]
-      <para><indexterm index="cp">globbing</indexterm><indexterm index="cp">shell</indexterm><indexterm index="cp"><command>bash</command></indexterm><indexterm index="cp"><command>csh</command></indexterm><indexterm index="cp">quotes</indexterm>One must be careful to protect any special characters in the regular expression specification from being interpreted (globbed) by the shell. This is accomplish by enclosing special characters within single or double quotes</para>
-      <example xml:space="preserve">ncra -v Q?? in.nc out.nc   # Error: Shell attempts to glob wildcards
-ncra -v '^Q+..' in.nc out.nc # Correct: NCO interprets wildcards
-ncra -v '^Q+..' in*.nc out.nc # Correct: NCO interprets, Shell globs</example>
-      <para>The final example shows that commands may use a combination of variable wildcarding and shell filename expansion (globbing). For globbing, <samp>*</samp> and <samp>?</samp> <emph>have nothing to do</emph> with the preceding regular expression! In shell-level filename expansion, <samp>*</samp> matches any string, including the null string and <samp>?</samp> matches any single character. Documentation for <command>bash</command> and <command>csh</command> describe the rules of  [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Subsetting Coordinate Variables</nodename>
-    <nodenext>C and Fortran Index Conventions</nodenext>
-    <nodeprev>Subsetting Variables</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Subsetting Coordinate Variables</title>
-      <para><indexterm index="cp">subsetting</indexterm><indexterm index="cp"><code>-C</code></indexterm><indexterm index="cp"><code>-c</code></indexterm><indexterm index="cp"><code>--no-coords</code></indexterm><indexterm index="cp"><code>--no-crd</code></indexterm><indexterm index="cp"><code>--coords</code></indexterm><indexterm index="cp"><code>--crd</code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-C</samp>, <samp>-c</samp>&linebreak; Long options: <samp>--no-coords</samp>, <samp>--no-crd</samp>, <samp>--crd</samp>, <samp>--coords</samp>&linebreak;</para>
-      </cartouche>
-      <para>By default, coordinates variables associated with any variable appearing in the <var>input-file</var> will be placed in the <var>output-file</var>, even if they are not explicitly specified, e.g., with the <samp>-v</samp> switch. Thus variables with a latitude coordinate <code>lat</code> always carry the values of <code>lat</code> with them into the <var>output-file</var>. This feature can be disabled with <samp>-C</samp>, which causes <acronym><acronymword>NCO</acronymword>< [...]
-    </section>
-  </node>
-  <node>
-    <nodename>C and Fortran Index Conventions</nodename>
-    <nodenext>Hyperslabs</nodenext>
-    <nodeprev>Subsetting Coordinate Variables</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>C and Fortran Index conventions</title>
-      <para><indexterm index="cp">index convention</indexterm><indexterm index="cp">Fortran index convention</indexterm><indexterm index="cp">C index convention</indexterm><indexterm index="cp"><code>-F</code></indexterm><indexterm index="cp"><code>--fortran</code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-F</samp>&linebreak; Long options: <samp>--fortran</samp>&linebreak;</para>
-      </cartouche>
-      <para><indexterm index="cp">I/O</indexterm>The <samp>-F</samp> switch changes <acronym><acronymword>NCO</acronymword></acronym> to read and write with the Fortran index convention. By default, <acronym><acronymword>NCO</acronymword></acronym> uses C-style (0-based) indices for all I/O. In C<!-- /@w -->, indices count from 0<!-- /@w --> (rather than 1<!-- /@w -->), and dimensions are ordered from slowest (inner-most) to fastest (outer-most) varying. In Fortran, indices count from 1< [...]
-      <para><indexterm index="cp">record dimension</indexterm>Consider a file <file>85.nc</file> containing 12 months<!-- /@w --> of data in the record dimension <code>time</code>. The following hyperslab operations produce identical results, a June-July-August average of the data:</para>
-      <example xml:space="preserve">ncra -d time,5,7 85.nc 85_JJA.nc
-ncra -F -d time,6,8 85.nc 85_JJA.nc</example>
-      <para>Printing variable <var>three_dmn_var</var> in file <file>in.nc</file> first with the C indexing<!-- /@w --> convention, then with Fortran indexing convention results in the following output formats:</para>
-      <example xml:space="preserve">% ncks -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=1000 lon[0]=-180 three_dmn_var[0]=0
-...
-% ncks -F -v three_dmn_var in.nc
-lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
-...</example>
-    </section>
-  </node>
-  <node>
-    <nodename>Hyperslabs</nodename>
-    <nodenext>Stride</nodenext>
-    <nodeprev>C and Fortran Index Conventions</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Hyperslabs</title>
-      <para><indexterm index="cp">hyperslab</indexterm><indexterm index="cp">dimension limits</indexterm><indexterm index="cp">coordinate limits</indexterm><indexterm index="cp"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>] [...]
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>&linebreak; Long options: <samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</ [...]
-      </cartouche>
-      <para>A <dfn>hyperslab</dfn><!-- /@w --> is a subset of a variable's data. The coordinates of a hyperslab are specified with the <code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code> short option (or with the same arguments to the <samp>--dimension</samp> or <samp>--dmn</samp> long options). At least one hyperslab argument (<var>min</var>, <var>max</var>, or <var>stride</var>) must be present. The bounds of the hyperslab to be extracted are specif [...]
-      <para><indexterm index="cp">stride</indexterm>Coordinate values should be specified using real notation with a decimal point required in the value, whereas dimension indices are specified using integer notation without a decimal point. This convention serves only to differentiate coordinate values from dimension indices. It is independent of the type of any netCDF coordinate variables. For a given dimension, the specified limits must both be coordinate values (with decimal points)  [...]
-      <para><indexterm index="cp"><code>NC_BYTE</code></indexterm><indexterm index="cp"><code>NC_CHAR</code></indexterm>User-specified coordinate limits are promoted to double precision values while searching for the indices which bracket the range. Thus, hyperslabs on coordinates of type <code>NC_BYTE</code> and <code>NC_CHAR</code> are computed numerically rather than lexically, so the results are unpredictable.</para>
-      <para><indexterm index="cp">wrapped coordinates</indexterm>The relative magnitude of <var>min</var> and <var>max</var> indicate to the operator whether to expect a <dfn>wrapped coordinate</dfn> (see <xref><xrefnodename>Wrapped Coordinates</xrefnodename></xref>), such as longitude. If <math><var>min</var> > <var>max</var></math>, the <acronym><acronymword>NCO</acronymword></acronym> expects the coordinate to be wrapped, and a warning message will be printed. When this occurs, <ac [...]
-      <para>Because of the way wrapped coordinates are interpreted, it is very important to make sure you always specify hyperslabs in the monotonically increasing sense, i.e., <math><var>min</var> < <var>max</var></math> (even if the underlying coordinate variable is monotonically decreasing). The only exception to this is when you are indeed specifying a wrapped coordinate. The distinction is crucial to understand because the points selected by, e.g., <code>-d longitude,50.,340.</co [...]
-      <para>Not specifying any hyperslab option is equivalent to specifying full ranges of all dimensions. This option may be specified more than once in a single command (each hyperslabbed dimension requires its own <code>-d</code> option).</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Stride</nodename>
-    <nodenext>Multislabs</nodenext>
-    <nodeprev>Hyperslabs</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Stride</title>
-      <para><indexterm index="cp">stride</indexterm><indexterm index="cp"><code>-d <var>dim</var>,[<var>min</var>],[<var>max</var>],<var>stride</var></code></indexterm><indexterm index="cp"><code>--dimension <var>dim</var>,[<var>min</var>],[<var>max</var>],<var>stride</var></code></indexterm><indexterm index="cp"><code>--dmn <var>dim</var>,[<var>min</var>],[<var>max</var>],<var>stride</var></code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>&linebreak; Long options: <samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</ [...]
-      </cartouche>
-      <para>All data operators support specifying a <dfn>stride</dfn> for any and all dimensions at the same time. The <var>stride</var> is the spacing between consecutive points in a hyperslab. A <var>stride</var><!-- /@w --> of 1<!-- /@w --> picks all the elements of the hyperslab, and a <var>stride</var> of 2<!-- /@w --> skips every other element, etc.&eosperiod; <command>ncks</command> multislabs support strides, and are more powerful than the regular hyperslabs supported by the othe [...]
-      <para>The <var>stride</var> is specified as the optional fourth argument to the <samp>-d</samp> hyperslab specification: <code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code>. Specify <var>stride</var> as an integer (i.e., no decimal point) following the third comma in the <samp>-d</samp> argument. There is no default value for <var>stride</var>. Thus using <samp>-d time,,,2</samp> is valid but <samp>-d time,,,2.0</samp> and <samp>-d time,,,</samp [...]
-      <para>For example, consider a file <file>8501_8912.nc</file> which contains 60 consecutive months of data. Say you wish to obtain just the March data from this file. Using 0-based subscripts (see <xref><xrefnodename>C and Fortran Index Conventions</xrefnodename></xref>) these data are stored in records 2, 14, &dots; 50<!-- /@w --> so the desired <var>stride</var> is 12.<!-- /@w --> Without the <var>stride</var> option, the procedure is very awkward. One could use <command>ncks</com [...]
-      <example xml:space="preserve">for idx in 02 14 26 38 50; do # Bourne Shell
-  ncks -d time,${idx} 8501_8912.nc foo.${idx}
-done
-foreach idx (02 14 26 38 50) # C Shell
-  ncks -d time,${idx} 8501_8912.nc foo.${idx}
-end
-ncrcat foo.?? 8589_03.nc
-rm foo.??</example>
-      <para>With the <var>stride</var> option, <command>ncks</command> performs this hyperslab extraction in one operation:</para>
-      <example xml:space="preserve">ncks -d time,2,,12 8501_8912.nc 8589_03.nc</example>
-      <para>See <xref><xrefnodename>ncks netCDF Kitchen Sink</xrefnodename></xref>, for more information on <command>ncks</command>.</para>
-      <para>Applying the <var>stride</var> option to the record dimension in <command>ncra</command> and <command>ncrcat</command> makes it possible, for instance, to average or concatenate regular intervals across multi-file input data sets.</para>
-      <example xml:space="preserve">ncra -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8589_03.nc
-ncrcat -F -d time,3,,12 85.nc 86.nc 87.nc 88.nc 89.nc 8503_8903.nc</example>
-    </section>
-  </node>
-  <node>
-    <nodename>Multislabs</nodename>
-    <nodenext>Wrapped Coordinates</nodenext>
-    <nodeprev>Stride</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Multislabs</title>
-      <para><indexterm index="cp">multislab</indexterm><indexterm index="cp">multi-hyperslab</indexterm><indexterm index="cp"><acronym><acronymword>MSA</acronymword></acronym></indexterm><indexterm index="cp"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dmn <var>dim</var>,[<v [...]
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>&linebreak; Short options: <samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>&linebreak; Long options: <samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>,&linebreak; <samp>- [...]
-      </cartouche>
-      <para>A multislab<!-- /@w --> is a union of one or more hyperslabs. One defines multislabs by chaining together hyperslab commands, i.e., <kbd>-d</kbd> options (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref>). Support for specifying a <dfn>multi-hyperslab</dfn> or <dfn>multislab</dfn> for any variable was first added to <command>ncks</command> in late 2002. The other operators received <acronym><acronymword>MSA</acronymword></acronym> capabilities in April 2008. Sometimes [...]
-      <para>Multislabs overcome some restraints that limit hyperslabs. A single<!-- /@w --> <kbd>-d</kbd> option can only specify a contiguous and/or a regularly spaced multi-dimensional data array. Multislabs are constructed from multiple <kbd>-d</kbd> options and may therefore have non-regularly spaced arrays. For example, suppose it is desired to operate on all longitudes from 10.0 to 20.0 and from 80.0 to 90.0 degrees<!-- /@w -->. The combined range of longitudes is not selectable in [...]
-      <example xml:space="preserve">ncks -d lon,10.,20. -d lon,80.,90. in.nc out.nc
-ncks -d lon,10.,15. -d lon,15.,20. -d lon,80.,90. in.nc out.nc</example>
-      <para role="continues">Any number of hyperslabs specifications may be chained together to specify the multislab.</para>
-      <para><indexterm index="cp">stride</indexterm>Users may specify redundant ranges of indices in a multislab, e.g.,</para>
-      <example xml:space="preserve">ncks -d lon,0,4 -d lon,2,9,2 in.nc out.nc</example>
-      <para role="continues">This command retrieves the first five longitudes, and then every other longitude value up to the tenth. Elements 0, 2, and 4<!-- /@w --> are specified by both hyperslab arguments (hence this is redundant) but will count only once if an arithmetic operation is being performed. This example uses index-based (not coordinate-based) multislabs because the <var>stride</var> option only supports index-based hyper-slabbing. See <xref><xrefnodename>Stride</xrefnodenam [...]
-      <para>Multislabs are more efficient than the alternative of sequentially performing hyperslab operations and concatenating the results. <indexterm index="cp">I/O</indexterm>This is because <acronym><acronymword>NCO</acronymword></acronym> employs a novel multislab algorithm to minimize the number of I/O operations when retrieving irregularly spaced data from disk. The <acronym><acronymword>NCO</acronymword></acronym> multislab algorithm retrieves each element from disk once and onl [...]
-      <para>A final<!-- /@w --> example shows the real power of multislabs. Suppose the <var>Q</var> variable contains three dimensional arrays of distinct chemical constituents in no particular order. We are interested in the NOy species in a certain geographic range. Say that NO, NO2, and N2O5 are elements 0<!-- /@w -->, 1, and 5<!-- /@w --> of the <var>species</var> dimension of <var>Q</var>. The multislab specification might look something like</para>
-      <example xml:space="preserve">ncks -d species,0,1 -d species,5 -d lon,0,4 -d lon,2,9,2 in.nc out.nc</example>
-      <para role="continues">Multislabs are powerful because they may be specified for every dimension at the same time. Thus multislabs obsolete the need to execute multiple <command>ncks</command> commands to gather the desired range of data.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Wrapped Coordinates</nodename>
-    <nodenext>Auxiliary Coordinates</nodenext>
-    <nodeprev>Multislabs</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Wrapped Coordinates</title>
-      <para><indexterm index="cp">wrapped coordinates</indexterm><indexterm index="cp">longitude</indexterm><indexterm index="cp"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncks</command>&linebreak; Short options: <samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>&linebreak; Long options: <samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>,&linebreak; <samp>--dmn <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>&linebreak;</para>
-      </cartouche>
-      <para>A <dfn>wrapped coordinate</dfn><!-- /@w --> is a coordinate whose values increase or decrease monotonically (nothing unusual so far), but which represents a dimension that ends where it begins (i.e., wraps around on itself). Longitude (i.e., degrees on a circle) is a familiar example of a wrapped coordinate. Longitude increases to the East of Greenwich, England, where it is defined to be zero. Halfway around the globe, the longitude is 180 degrees<!-- /@w --> East (or West).  [...]
-      <para>Assume the domain of the monotonically increasing longitude coordinate <code>lon</code> is <math>0 < <var>lon</var> < 360</math>. <command>ncks</command> will extract a hyperslab which crosses the Greenwich meridian simply by specifying the westernmost longitude as <var>min</var> and the easternmost longitude as <var>max</var>. The following commands extract a hyperslab containing the Saharan desert:</para>
-      <example xml:space="preserve">ncks -d lon,340.,50. in.nc out.nc
-ncks -d lon,340.,50. -d lat,10.,35. in.nc out.nc</example>
-      <para role="continues">The first example selects data in the same longitude range as the Sahara. The second example further constrains the data to having the same latitude as the Sahara. The coordinate <code>lon</code> in the <var>output-file</var>, <file>out.nc</file>, will no longer be monotonic! The values of <code>lon</code> will be, e.g., <samp>340, 350, 0, 10, 20, 30, 40, 50</samp>. This can have serious implications should you run <file>out.nc</file> through another operatio [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Auxiliary Coordinates</nodename>
-    <nodenext>UDUnits Support</nodenext>
-    <nodeprev>Wrapped Coordinates</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Auxiliary Coordinates</title>
-      <para><indexterm index="cp"><code>-X</code></indexterm><indexterm index="cp"><code>--auxiliary</code></indexterm><indexterm index="cp"><code>standard_name</code></indexterm><indexterm index="cp"><code>coordinates</code></indexterm><indexterm index="cp"><acronym><acronymword>CF</acronymword></acronym> conventions</indexterm><indexterm index="cp"><code>-X <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></code></indexterm><indexterm index="cp"><code>--auxili [...]
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>&linebreak; Short options: <samp>-X <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></samp>&linebreak; Long options: <samp>--auxiliary <var>lon_min</var>,<var>lon_max</var>,<var>lat_min</var>,<var>lat_max</var></samp>&linebreak;</para>
-      </cartouche>
-      <para>Utilize auxiliary coordinates specified in values of the coordinate variable's <code>standard_name</code> attributes, if any, when interpreting hyperslab and multi-slab options. Also <samp>--auxiliary</samp>. This switch supports hyperslabbing cell-based grids over coordinate ranges. This works on datasets that associate coordinate variables to grid-mappings using the <acronym><acronymword>CF</acronymword></acronym>-convention (see <xref><xrefnodename>CF Conventions</xrefnode [...]
-      <para><indexterm index="cp">cell-based grids</indexterm>A cell-based grid collapses the horizontal spatial information (latitude and longitude) and stores it along a one-dimensional coordinate that has a one-to-one mapping to both latitude and longitude coordinates. Rectangular (in longitude and latitude) horizontal hyperslabs cannot be selected using the typical procedure (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref>) of separately specifying <samp>-d</samp> arguments  [...]
-      <para>Putting it all together, consider a variable <var>gds_3dvar</var> output from simulations on a cell-based geodesic grid. Although the variable contains three dimensions of data (time, latitude, and longitude), it is stored in the netCDF file with only two dimensions, <code>time</code> and <code>gds_crd</code>.</para>
-      <example xml:space="preserve">% ncks -m -C -v gds_3dvar ~/nco/data/in.nc
-gds_3dvar: type NC_FLOAT, 2 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 41
-gds_3dvar RAM size is 10*8*sizeof(NC_FLOAT) = 80*4 = 320 bytes
-gds_3dvar dimension 0: time, size = 10 NC_DOUBLE, dim. ID = 20 (CRD)(REC)
-gds_3dvar dimension 1: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-gds_3dvar attribute 0: long_name, size = 17 NC_CHAR, value = Geodesic variable
-gds_3dvar attribute 1: units, size = 5 NC_CHAR, value = meter
-gds_3dvar attribute 2: coordinates, size = 15 NC_CHAR, value = lat_gds lon_gds
-gds_3dvar attribute 3: purpose, size = 64 NC_CHAR, value = Test auxiliary coordinates like those that define geodesic grids</example>
-      <para>The <code>coordinates</code> attribute lists the names of the latitude and longitude coordinates, <code>lat_gds</code> and <code>lon_gds</code>, respectively. The <code>coordinates</code> attribute is recommended though optional. With it, the user can immediately identify which variables contain the latitude and longitude coordinates. Without a <code>coordinates</code> attribute it would be unclear at first glance whether a variable resides on a cell-based grid. In this examp [...]
-      <para>The cell-based grid file must contain two variables whose <code>standard_name</code> attributes are “latitude”, and “longitude”:</para>
-      <example xml:space="preserve">% ncks -m -C -v lat_gds,lon_gds ~/nco/data/in.nc
-lat_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 37
-lat_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-lat_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-lat_gds attribute 0: long_name, size = 8 NC_CHAR, value = Latitude
-lat_gds attribute 1: standard_name, size = 8 NC_CHAR, value = latitude
-lat_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-lat_gds attribute 3: purpose, size = 62 NC_CHAR, value = 1-D latitude coordinate referred to by geodesic grid variables
-
-lon_gds: type NC_DOUBLE, 1 dimensions, 4 attributes, chunked? no, compressed? no, packed? no, ID = 38
-lon_gds RAM size is 8*sizeof(NC_DOUBLE) = 8*8 = 64 bytes
-lon_gds dimension 0: gds_crd, size = 8 NC_FLOAT, dim. ID = 17 (CRD)
-lon_gds attribute 0: long_name, size = 9 NC_CHAR, value = Longitude
-lon_gds attribute 1: standard_name, size = 9 NC_CHAR, value = longitude
-lon_gds attribute 2: units, size = 6 NC_CHAR, value = degree
-lon_gds attribute 3: purpose, size = 63 NC_CHAR, value = 1-D longitude coordinate referred to by geodesic grid variables</example>
-      <para>In this example <code>lat_gds</code> and <code>lon_gds</code> represent the latitude or longitude, respectively, of cell-based variables. These coordinates (must) have the same single dimension (<code>gds_crd</code>, in this case) as the cell-based variables. And the coordinates must be one-dimensional—multidimensional coordinates will not work.</para>
-      <para>This infrastructure allows <acronym><acronymword>NCO</acronymword></acronym> to identify, interpret, and process (e.g., hyperslab) the variables on cell-based grids as easily as it works with regular grids. To time-average all the values between zero and 180 degrees<!-- /@w --> longitude and between plus and minus 30 degress<!-- /@w --> latitude, we use</para>
-      <example xml:space="preserve">ncra -O -X 0.,180.,-30.,30. -v gds_3dvar in.nc out.nc</example>
-      <para><acronym><acronymword>NCO</acronymword></acronym> accepts multiple <samp>-X</samp> arguments for cell-based grid multi-slabs, just as it accepts multiple <samp>-d</samp> arguments for multi-slabs of regular coordinates.</para>
-      <example xml:space="preserve">ncra -O -X 0.,180.,-30.,30. -X 270.,315.,45.,90. in.nc out.nc</example>
-      <para>The arguments to <samp>-X</samp> are always interpreted as floating point numbers, i.e., as coordinate values rather than dimension indices so that these two commands produce identical results</para>
-      <example xml:space="preserve">ncra -X 0.,180.,-30.,30. in.nc out.nc
-ncra -X 0,180,-30,30 in.nc out.nc</example>
-      <para>In contrast, arguments to <samp>-d</samp> require decimal places to be recognized as coordinates not indices (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref>). We recommend always using decimal points with <samp>-X</samp> arguments to avoid confusion.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>UDUnits Support</nodename>
-    <nodenext>Rebasing Time Coordinate</nodenext>
-    <nodeprev>Auxiliary Coordinates</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>UDUnits Support</title>
-      <para><indexterm index="cp">UDUnits</indexterm><indexterm index="cp">Unidata</indexterm><indexterm index="cp"><code>units</code></indexterm><indexterm index="cp">attribute, <code>units</code></indexterm><indexterm index="cp"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code></indexterm><indexterm index="cp"><code>-- [...]
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp>&linebreak; Long options: <samp>--dimension <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</ [...]
-      </cartouche>
-      <para>There is more than one way to hyperskin a cat. The <uref><urefurl>http://www.unidata.ucar.edu/packages/udunits</urefurl><urefdesc>UDUnits</urefdesc></uref> package provides a library which, if present, <acronym><acronymword>NCO</acronymword></acronym> uses to translate user-specified physical dimensions into the physical dimensions of data stored in netCDF files. Unidata provides UDUnits under the same terms as netCDF, so sites should install both. Compiling <acronym><acronym [...]
-      <para>Two examples suffice to demonstrate the power and convenience of UDUnits support. <indexterm index="cp">MKS units</indexterm>First, consider extraction of a variable containing non-record coordinates with physical dimensions stored in MKS units. In the following example, the user extracts all wavelengths in the visible portion of the spectrum in terms of the units very frequently used in visible spectroscopy, microns:</para>
-      <example xml:space="preserve">% ncks -C -H -v wvl -d wvl,"0.4 micron","0.7 micron" in.nc
-wvl[0]=5e-07 meter</example>
-      <para role="continues"><indexterm index="cp"><code>units</code></indexterm>The hyperslab returns the correct values because the <var>wvl</var> variable is stored on disk with a length dimension that UDUnits recognizes in the <code>units</code> attribute. The automagical algorithm that implements this functionality is worth describing since understanding it helps one avoid some potential pitfalls. First, the user includes the physical units of the hyperslab dimensions she supplies,  [...]
-      <para><indexterm index="cp"><code>units</code></indexterm><indexterm index="cp"><code>time</code></indexterm>The translation and dimensional innterpretation of time coordinates shows a more powerful, and probably more common, UDUnits application. In this example, the user prints all data between 4 PM<!-- /@w --> and 7 PM<!-- /@w --> on December 8<!-- /@w -->, 1999, from a variable whose time dimension is hours since the year 1900:</para>
-      <example xml:space="preserve">% ncks -u -H -C -v time_udunits -d time_udunits,"1999-12-08 \
-  16:00:0.0","1999-12-08 19:00:0.0" in.nc
-time_udunits[1]=876018 hours since 1900-01-01 00:00:0.0</example>
-      <para role="continues"><indexterm index="cp">stride</indexterm><indexterm index="cp">whitespace</indexterm>Here, the user invokes the stride (see <xref><xrefnodename>Stride</xrefnodename></xref>) capability to obtain every other timeslice. This is possible because the UDUnits feature is additive, not exclusive—it works in conjunction with all other hyperslabbing (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref>) options and in all operators which support hyperslabbing [...]
-      <example xml:space="preserve">ncra -d time,"1939-09-09 12:00:0.0","1945-05-08 00:00:0.0" \
-  in1.nc in2.nc in3.nc out.nc</example>
-      <para role="continues">Note that there is no excess whitespace before or after the individual elements of the <samp>-d</samp> argument. <indexterm index="cp">shell</indexterm>This is important since, as far as the shell knows, <samp>-d</samp> takes only <emph>one</emph> command-line argument. Parsing this argument into its component <code><var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</code> elements (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref [...]
-      <para><acronym><acronymword>NCO</acronymword></acronym> implemented support for the UDUnits2 library with version 3.9.2 (August, 2007). The <uref><urefurl>http://www.unidata.ucar.edu/software/udunits/udunits-2/udunits2.html</urefurl><urefdesc>UDUnits2</urefdesc></uref> package supports non-ASCII characters and logarithmic units. We are interested in user-feedback on these features.</para>
-      <para>One aspect that deserves mention is that UDUnits, and thus <acronym><acronymword>NCO</acronymword></acronym>, supports run-time definition of the location of the relevant UDUnits databases. With UDUnits version 1<!-- /@w -->, users may specify the directory which contains the UDUnits database, <file>udunits.dat</file>, via the <code>UDUNITS_PATH</code> environment variable. With UDUnits version 2<!-- /@w -->, users may specify the UDUnits database file itself, <file>udunits2. [...]
-      <example xml:space="preserve">export UDUNITS_PATH='/nonstandard/location/share/udunits' # UDUnits1
-export UDUNITS2_XML_PATH='/nonstandard/location/share/udunits/udunits2.xml' # UDUnits2</example>
-      <para>This run-time flexibility can enable the full functionality of pre-built binaries on machines with libraries in different locations.</para>
-      <para><indexterm index="cp">Climate and Forecast Metadata Convention</indexterm><indexterm index="cp">CF conventions</indexterm>The <uref><urefurl>http://www.unidata.ucar.edu/packages/udunits</urefurl><urefdesc>UDUnits</urefdesc></uref> package documentation describes the supported formats of time dimensions. Among the metadata conventions which adhere to these formats are the <uref><urefurl>http://cf-pcmdi.llnl.gov</urefurl><urefdesc>Climate and Forecast (CF) Conventions</urefdesc [...]
-<!-- fxm add more formats here --></para>
-      <example xml:space="preserve">-d time,"1918-11-11 11:00:0.0","1939-09-09 00:00:0.0"</example>
-      <para role="continues">All of these formats include at least one dash <kbd>-</kbd> in a non-leading character position (a dash in a leading character position is a negative sign). <acronym><acronymword>NCO</acronymword></acronym> assumes that a non-leading dash in a limit string indicates that a UDUnits date conversion is requested.</para>
-      <para role="continues">As of version 4.0.0 (January, 2010), <acronym><acronymword>NCO</acronymword></acronym> supports some calendar attributes specified by the CF conventions.</para>
-      <table>
-        <tableitem>
-          <tableterm><strong>Supported types:  </strong></tableterm>
-          <item>
- 
-            <para>"365_day"/"noleap", "360_day", "gregorian", "standard"</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><strong>Unsupported types:</strong></tableterm>
-          <item>
-            <para>"366_day"/"all_leap","proleptic_gregorian","julian","none"</para>
-          </item>
-        </tableitem>
-      </table>
-      <para>Unsupported types default to mixed Gregorian/Julian as defined by UDUnits.</para>
-      <para role="continues">An Example: Consider the following netCDF variable</para>
-      <example xml:space="preserve">variables:
-  double lon_cal(lon_cal) ;
-    lon_cal:long_name = "lon_cal" ;
-    lon_cal:units = "days since 1964-2-28 0:0:0" ;
-    lon_cal:calendar = "365_day" ;
-data:
-  lon_cal = 1,2,3,4,5,6,7,8,9,10;
-
-So the command
-"ncks -v lon_cal -d lon_cal,'1964-3-1 0:00:0.0','1964-3-4 00:00:0.0' in.nc out.nc"
-Results in the hyperslab lon_cal=1,2,3,4</example>
-      <para><indexterm index="cp">MKS units</indexterm><indexterm index="cp">God</indexterm>netCDF variables should always be stored with MKS (i.e., God's) units, so that application programs may assume MKS dimensions apply to all input variables. The UDUnits feature is intended to alleviate some of the <acronym><acronymword>NCO</acronymword></acronym> user's pain when handling MKS units. It connects users who think in human-friendly units (e.g., miles, millibars, days) to extract data w [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Rebasing Time Coordinate</nodename>
-    <nodenext>Missing Values</nodenext>
-    <nodeprev>UDUnits Support</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Rebasing Time Coordinate</title>
-      <cartouche>
-        <para>Availability: <command>ncra</command>, <command>ncrcat</command> Short options: None&linebreak;</para>
-      </cartouche>
-      <para>Time re-basing is performed automatically when UDUnits is installed. Time rebasing is invoked when numerous files share a common time-based record coordinate, and the record coordinate is in the same time units in each file, but the date offset differs among files. For example suppose the time coordinate is in hours and each day in January is stored in its own daily file. Each daily file records the temperature variable <code>tpt(time)</code> with an (unadjusted) <code>time</ [...]
-      <example xml:space="preserve">file01.nc time:units="hours since 1990-1-1"
-file02.nc time:units="hours since 1990-1-2"
-...
-file31.nc time:units="hours since 1990-1-31"</example>
-      <para role="continues"></para>
-      <example xml:space="preserve">// Find mean noontime temperature in January
-ncra -v tpt -d time,"1990-1-1 12:00:00","1990-1-31 23:59:59",24 \
-      file??.nc noon.nc
-
-// Concatenate day2 noon through day3 noon records
-ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-      file01.nc file02.nc file03.nc noon.nc
-
-// Results: time is "re-based" to the time units in "file01.nc"
-time=36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
-     53, 54, 55, 56, 57, 58, 59 ;
-
-// If we repeat the above command but with only two input files...
-ncrcat -v tpt -d time,"1990-1-2 12:00:00","1990-1-3 11:59:59" \
-      file02.nc file03 noon.nc
-
-// ...then the output time coordinate is based on the time units in "file02.nc"
-time = 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
-    29, 30, 31, 32, 33, 34, 35 ;</example>
-    </section>
-  </node>
-  <node>
-    <nodename>Missing Values</nodename>
-    <nodenext>Chunking</nodenext>
-    <nodeprev>Rebasing Time Coordinate</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Missing values</title>
-      <para><indexterm index="cp">missing values</indexterm><indexterm index="cp">data, missing</indexterm><indexterm index="cp">averaging data</indexterm><indexterm index="cp"><code>missing_value</code></indexterm><indexterm index="cp"><code>_FillValue</code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncflint</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncwa</command>&linebreak; Short options: None&linebreak;</para>
-      </cartouche>
-      <para>The phrase <dfn>missing data</dfn> refers to data points that are missing, invalid, or for any reason not intended to be arithmetically processed in the same fashion as valid data. <indexterm index="cp">arithmetic operators</indexterm>The <acronym><acronymword>NCO</acronymword></acronym> arithmetic operators attempt to handle missing data in an intelligent fashion. There are four steps in the <acronym><acronymword>NCO</acronymword></acronym> treatment of missing data:</para>
-      <enumerate first="1">
-        <item>
-          <para>Identifying variables that may contain missing data.</para>
-          <para><acronym><acronymword>NCO</acronymword></acronym> follows the convention that missing data should be stored with the <var>_FillValue</var> specified in the variable's <code>_FillValue</code> attributes. The <emph>only</emph> way <acronym><acronymword>NCO</acronymword></acronym> recognizes that a variable <emph>may</emph> contain missing data is if the variable has a <code>_FillValue</code> attribute. In this case, any elements of the variable which are numerically equal t [...]
-          <para><acronym><acronymword>NCO</acronymword></acronym> adopted the behavior that the default attribute name, if any, assumed to specify the value of data to ignore is <code>_FillValue</code> with version 3.9.2 (August, 2007). Prior to that, the <code>missing_value</code> attribute, if any, was assumed to specify the value of data to ignore. Supporting both of these attributes simultaneously is not practical. Hence the behavior <acronym><acronymword>NCO</acronymword></acronym>  [...]
-          <para><indexterm index="cp">ncrename</indexterm><indexterm index="cp">ncatted</indexterm>It has been and remains most advisable to create both <code>_FillValue</code> and <code>missing_value</code> attributes with identical values in datasets. Many legacy datasets contain only <code>missing_value</code> attributes. <acronym><acronymword>NCO</acronymword></acronym> can help migrating datasets between these conventions. One may use <command>ncrename</command> (see <xref><xrefnode [...]
-          <example xml:space="preserve">ncrename -a .missing_value,_FillValue inout.nc</example>
-          <para>Alternatively, one may use <command>ncatted</command> (see <xref><xrefnodename>ncatted netCDF Attribute Editor</xrefnodename></xref>) to add a <code>_FillValue</code> attribute to all variables</para>
-          <example xml:space="preserve">ncatted -O -a _FillValue,,o,f,1.0e36 inout.nc</example>
-        </item>
-        <item>
-          <para>Converting the <var>_FillValue</var> to the type of the variable, if neccessary.</para>
-          <para>Consider a variable <var>var</var> of type <var>var_type</var> with a <code>_FillValue</code> attribute of type <var>att_type</var> containing the value <var>_FillValue</var>. As a guideline, the type of the <code>_FillValue</code> attribute should be the same as the type of the variable it is attached to. If <var>var_type</var> equals <var>att_type</var> then <acronym><acronymword>NCO</acronymword></acronym> straightforwardly compares each value of <var>var</var> to <var [...]
-        </item>
-        <item>
-          <para>Identifying missing data during arithmetic operations.</para>
-          <para><indexterm index="cp">performance</indexterm><indexterm index="cp">operator speed</indexterm><indexterm index="cp">speed</indexterm><indexterm index="cp">execution time</indexterm><indexterm index="cp">arithmetic operators</indexterm>When an <acronym><acronymword>NCO</acronymword></acronym> arithmetic operator processes a variable <var>var</var> with a <code>_FillValue</code> attribute, it compares each value of <var>var</var> to <var>_FillValue</var> before performing an [...]
-        </item>
-        <item>
-          <para>Treatment of any data identified as missing in arithmetic operators.</para>
-          <para><indexterm index="cp"><command>ncea</command></indexterm><indexterm index="cp"><command>ncra</command></indexterm><indexterm index="cp"><command>ncwa</command></indexterm><indexterm index="cp"><command>ncbo</command></indexterm><indexterm index="cp"><command>ncflint</command></indexterm><acronym><acronymword>NCO</acronymword></acronym> averagers (<command>ncra</command>, <command>ncea</command>, <command>ncwa</command>) do not count any element with the value <var>_FillVa [...]
-          <para>It is impossible to determine and store the correct result of a binary operation in a single variable. One such corner case occurs when both operands have differing <var>_FillValue</var> attributes, i.e., attributes with different numerical values. Since the output (result) of the operation can only have one <var>_FillValue</var>, some information may be lost. In this case, <acronym><acronymword>NCO</acronymword></acronym> always defines the output variable to have the sa [...]
-        </item>
-      </enumerate>
-    </section>
-  </node>
-  <node>
-    <nodename>Chunking</nodename>
-    <nodenext>Deflation</nodenext>
-    <nodeprev>Missing Values</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Chunking</title>
-      <para><indexterm index="cp"><code>--cnk_dmn</code></indexterm><indexterm index="cp"><code>--cnk_map</code></indexterm><indexterm index="cp"><code>--cnk_plc</code></indexterm><indexterm index="cp"><code>--cnk_scl</code></indexterm><indexterm index="cp"><code>--chunk_dimension</code></indexterm><indexterm index="cp"><code>--chunk_map</code></indexterm><indexterm index="cp"><code>--chunk_policy</code></indexterm><indexterm index="cp"><code>--chunk_scalar</code></indexterm><indexterm i [...]
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: none&linebreak; Long options: <samp>--cnk_dmn <var>dmn_nm</var>,<var>cnk_sz</var></samp>, <samp>--chunk_dimension <var>dmn_nm</var>,<var>cnk_sz</var></samp>&linebreak;, <samp>--cnk [...]
-      </cartouche>
-      <para>All netCDF4-enabled <acronym><acronymword>NCO</acronymword></acronym> operators that define variables support a plethora of chunksize options. Chunking can significantly accelerate or degrade read/write access to large datasets. Dataset chunking issues are described in detail <uref><urefurl>http://www.hdfgroup.org/HDF5/doc/H5.user/Chunking.html</urefurl><urefdesc>here</urefdesc></uref>.</para>
-      <para><indexterm index="cp">chunking policy</indexterm><indexterm index="cp">chunking map</indexterm><indexterm index="cp">chunksize</indexterm>The <acronym><acronymword>NCO</acronymword></acronym> chunking implementation is designed to be flexible. Users control three aspects of the chunking implementation. These are known as the <dfn>chunking policy</dfn>, <dfn>chunking map</dfn>, and <dfn>chunksize</dfn>. The first two are high-level mechanisms that apply to an entire file, whil [...]
-      <para>The user specifies the desired chunking policy with the <samp>-P</samp> switch (or its long option equivalents, <samp>--cnk_plc</samp> and <samp>--chunk_policy</samp>) and its <var>cnk_plc</var> argument. Five chunking policies are currently implemented:&linebreak; <indexterm index="cp"><samp>all</samp></indexterm><indexterm index="cp"><samp>g2d</samp></indexterm><indexterm index="cp"><samp>g3d</samp></indexterm><indexterm index="cp"><samp>xpl</samp></indexterm><indexterm ind [...]
-      <table>
-        <tableitem>
-          <tableterm><dfn>Chunk All Variables [<emph>default</emph>]</dfn></tableterm>
-          <item>
-            <para>Definition: Chunk all variables possible&linebreak; Alternate invocation: <code>ncchunk</code>&linebreak; <var>cnk_plc</var> key values: <samp>all</samp>, <samp>cnk_all</samp>, <samp>plc_all</samp>&linebreak; Mnemonic: All&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Chunk Variables with at least Two Dimensions</dfn></tableterm>
-          <item>
-            <para>Definition: Chunk all variables possible with at least two dimensions&linebreak; Alternate invocation: none&linebreak; <var>cnk_plc</var> key values: <samp>g2d</samp>, <samp>cnk_g2d</samp>, <samp>plc_g2d</samp>&linebreak; Mnemonic: <emph>G</emph>reater than or equal to <emph>2</emph> <emph>D</emph>imensions&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Chunk Variables with at least Three Dimensions</dfn></tableterm>
-          <item>
-            <para>Definition: Chunk all variables possible with at least three dimensions&linebreak; Alternate invocation: none&linebreak; <var>cnk_plc</var> key values: <samp>g3d</samp>, <samp>cnk_g3d</samp>, <samp>plc_g3d</samp>&linebreak; Mnemonic: <emph>G</emph>reater than or equal to <emph>3</emph> <emph>D</emph>imensions&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Chunk Variables Containing Explicitly Chunked Dimensions</dfn></tableterm>
-          <item>
-            <para>Definition: Chunk all variables possible that contain at least one dimension whose chunksize was explicitly set with the <samp>--cnk_dmn</samp> option. Alternate invocation: none&linebreak; <var>cnk_plc</var> key values: <samp>xpl</samp>, <samp>cnk_xpl</samp>, <samp>plc_xpl</samp>&linebreak; Mnemonic: E<emph>XPL</emph>icitly specified dimensions&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Unchunking</dfn></tableterm>
-          <item>
-            <para>Definition: Unchunk all variables&linebreak; Alternate invocation: <code>ncunchunk</code>&linebreak; <var>cnk_plc</var> key values: <samp>uck</samp>, <samp>cnk_uck</samp>, <samp>plc_uck</samp>, <samp>unchunk</samp>&linebreak; Mnemonic: <emph>U</emph>n<emph>C</emph>hun<emph>K</emph>&linebreak;</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">Equivalent key values are fully interchangeable. Multiple equivalent options are provided to satisfy disparate needs and tastes of <acronym><acronymword>NCO</acronymword></acronym> users working with scripts and from the command line.</para>
-      <para><indexterm index="cp">chunking map</indexterm><indexterm index="cp"><var>cnk_map</var></indexterm><indexterm index="cp"><code>-M <var>cnk_map</var></code></indexterm><indexterm index="cp"><code>--cnk_map <var>cnk_map</var></code></indexterm><indexterm index="cp"><code>--map <var>cnk_map</var></code></indexterm>The chunking algorithms must know the chunksizes of each dimension of each variable to be chunked. The correspondence between the input variable shape and the chunksize [...]
-      <table>
-        <tableitem>
-          <tableterm><dfn>Chunksize Equals Dimension Size [<emph>default</emph>]</dfn></tableterm>
-          <item>
-            <para>Definition: Chunksize defaults to dimension size. Explicitly specify chunksizes for particular dimensions with <samp>--cnk_dmn</samp> option.&linebreak; <var>cnk_map</var> key values: <samp>dmn</samp>, <samp>cnk_dmn</samp>, <samp>map_dmn</samp>&linebreak; Mnemonic: <emph>D</emph>i<emph>M</emph>e<emph>N</emph>sion&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Chunksize Equals Dimension Size except Record Dimension</dfn></tableterm>
-          <item>
-            <para>Definition: Chunksize equals dimension size except record dimension has size one. Explicitly specify chunksizes for particular dimensions with <samp>--cnk_dmn</samp> option.&linebreak; <var>cnk_map</var> key values: <samp>rd1</samp>, <samp>cnk_rd1</samp>, <samp>map_rd1</samp>&linebreak; Mnemonic: <emph>R</emph>ecord <emph>D</emph>imension size <emph>1</emph>&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Chunksize Equals Scalar Size Specified</dfn></tableterm>
-          <item>
-            <para>Definition: Chunksize for all dimensions is set with the <samp>--cnk_scl</samp> option.&linebreak; <var>cnk_map</var> key values: <samp>xpl</samp>, <samp>cnk_xpl</samp>, <samp>map_xpl</samp>&linebreak; Mnemonic: E<emph>XPL</emph>icitly specified dimensions&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Chunksize Product Equals Scalar Size Specified</dfn></tableterm>
-          <item>
-            <para>Definition: The product of the chunksizes for each variable (approximately) equals the size specified with the <samp>--cnk_scl</samp> option. For a variable of rank <var>R</var> (i.e., with <var>R</var> non-degenerate dimensions), the chunksize in each non-degenerate dimension is the <var>R</var>th root of <var>cnk_scl</var>.&linebreak; <var>cnk_map</var> key values: <samp>prd</samp>, <samp>cnk_prd</samp>, <samp>map_prd</samp>&linebreak; Mnemonic: <emph>PR</emph>o<emph> [...]
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">It is possible to combine the above chunking map algorithms with user-specified per-dimension (but not per-variable) chunksizes that override specific chunksizes determined by the maps above. The user specifies the per-dimension chunksizes with the (equivalent) long options <samp>--cnk_dmn</samp> or <samp>--chunk_dimension</samp>). The option takes two comma-separated arguments, <var>dmn_nm</var>,<var>cnk_sz</var>, which are the dimension name and its chunksi [...]
-      <example xml:space="preserve"># Simple chunking and unchunking
-ncks -O -4 --cnk_plc=all     in.nc out.nc # Chunk in.nc
-ncks -O -4 --cnk_plc=unchunk in.nc out.nc # Unchunk in.nc
-
-# Chunk data then unchunk it, printing informative metadata
-ncks -O -4 -D 4 --cnk_plc=all ~/nco/data/in.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-
-# More complex chunking procedures, with informative metadata
-ncks -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_scl=8 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_dmn lat,64 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_plc=uck ~/foo.nc ~/foo.nc
-ncks -O -4 -D 4 --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc
-
-# Chunking works with all operators...
-ncap2 -O -4 -D 4 --cnk_scl=8 -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc
-ncbo -O -4 -D 4 --cnk_scl=8 -p ~/nco/data in.nc in.nc ~/foo.nc
-ncecat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-ncflint -O -4 -D 4 --cnk_scl=8 ~/nco/data/in.nc ~/foo.nc
-ncpdq -O -4 -D 4 -P all_new --cnk_scl=8 -L 5 ~/nco/data/in.nc ~/foo.nc
-ncrcat -O -4 -D 4 -n 12,2,1 --cnk_dmn lat,32 -p /data/zender/dstmch90 dstmch90_clm01.nc ~/foo.nc
-ncwa -O -4 -D 4 -a time --cnk_plc=g2d --cnk_map=rd1 --cnk_dmn lat,32 --cnk_dmn lon,128 /data/zender/dstmch90/dstmch90_clm_0112.nc ~/foo.nc</example>
-      <para><indexterm index="cp">record dimension</indexterm>It is appropriate to conclude by informing users about an aspect of chunking that may not be expected: Record dimensions are always chunked with a chunksize of one. Hence all variables that contain the record dimension are also stored as chunked (since data must be stored with chunking either in all dimensions, or in no dimensions). Unless otherwise specified by the user, the other (fixed, non-record) dimensions of such variab [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Deflation</nodename>
-    <nodenext>Packed data</nodenext>
-    <nodeprev>Chunking</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Deflation</title>
-      <para><indexterm index="cp"><code>-L</code></indexterm><indexterm index="cp"><code>--deflate</code></indexterm><indexterm index="cp"><code>--dfl_lvl</code></indexterm><indexterm index="cp">Lempel-Ziv deflation</indexterm><indexterm index="cp">compression</indexterm><indexterm index="cp">deflation</indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncks</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncrcat</command>, <command>ncwa</command>&linebreak; Short options: <samp>-L</samp>&linebreak; Long options: <samp>--dfl_lvl</samp>, <samp>--deflate</samp>&linebreak;</para>
-      </cartouche>
-      <para>All <acronym><acronymword>NCO</acronymword></acronym> operators that define variables support the netCDF4 feature of storing variables compressed with Lempel-Ziv deflation. The Lempel-Ziv algorithm is a lossless data compression technique. Activate this deflation with the <code>-L <var>dfl_lvl</var></code> short option (or with the same argument to the <samp>--dfl_lvl</samp> or <samp>--deflate</samp> long options). Specify the deflation level <var>dfl_lvl</var> on a scale fro [...]
-      <para>To compress an entire file using deflation, use</para>
-      <example xml:space="preserve">ncks -4 -L 0 in.nc out.nc # No deflation (fast, no time penalty)
-ncks -4 -L 1 in.nc out.nc # Minimal deflation (little time penalty)
-ncks -4 -L 9 in.nc out.nc # Maximal deflation (much slower)</example>
-      <para>Unscientific testing shows that deflation compresses typical climate datasets by 30-60%. Packing, a lossy compression technique available for all netCDF files (see <xref><xrefnodename>Packed data</xrefnodename></xref>), can easily compress files by 50%. Packed data may be deflated to squeeze datasets by about 80%:</para>
-      <example xml:space="preserve">ncks  -4 -L 1 in.nc out.nc # Minimal deflation (~30-60% compression)
-ncks  -4 -L 9 in.nc out.nc # Maximal deflation (~31-63% compression)
-ncpdq         in.nc out.nc # Standard packing  (~50% compression)
-ncpdq -4 -L 9 in.nc out.nc # Deflated packing  (~80% compression)</example>
-      <para><indexterm index="cp">ncks</indexterm><command>ncks</command> prints deflation parameters, if any, to screen (see <xref><xrefnodename>ncks netCDF Kitchen Sink</xrefnodename></xref>).</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Packed data</nodename>
-    <nodenext>Operation Types</nodenext>
-    <nodeprev>Deflation</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Packed data</title>
-      <para><indexterm index="cp">packing</indexterm><indexterm index="cp">unpacking</indexterm><indexterm index="cp"><code>add_offset</code></indexterm><indexterm index="cp"><code>scale_factor</code></indexterm><indexterm index="cp"><code>missing_value</code></indexterm><indexterm index="cp"><code>_FillValue</code></indexterm><indexterm index="cp"><command>pack(x)</command></indexterm><indexterm index="cp"><command>unpack(x)</command></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncflint</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncwa</command>&linebreak; Short options: None&linebreak;</para>
-      </cartouche>
-      <para>The phrase <dfn>packed data</dfn> refers to data which are stored in the standard netCDF3 packing format which employs a lossy algorithm. See <xref><xrefnodename>ncks netCDF Kitchen Sink</xrefnodename></xref> for a description of deflation, a lossless compression technique available with netCDF4 only. Packed data may be deflated to save additional space.</para>
-
-      <unnumberedsubsec>
-        <title>Packing Algorithm</title>
-        <para><dfn>Packing</dfn> The standard netCDF packing algorithm is lossy, and produces data with the same dynamic range as the original but which requires no more than half the space to store. The packed variable is stored (usually) as type <code>NC_SHORT</code> with the two attributes required to unpack the variable, <code>scale_factor</code> and <code>add_offset</code>, stored at the original (unpacked) precision of the variable <footnote><para>Although not a part of the standar [...]
-        <sp lines="1"></sp>
-        <para><var>scale_factor</var> = (<var>max</var>-<var>min</var>)/<var>ndrv</var>&linebreak; <var>add_offset</var> = 0.5*(<var>min</var>+<var>max</var>)&linebreak; <var>pck</var> = (<var>upk</var>-<var>add_offset</var>)/<var>scale_factor</var> = (<var>upk</var>-0.5*(<var>min</var>+<var>max</var>))*<var>ndrv</var>/(<var>max</var>-<var>min</var>)&linebreak;</para>
-        <sp lines="1"></sp>
-        <para>where <var>ndrv</var> is the number of discrete representable values for given type of packed variable. The theoretical maximum value for <var>ndrv</var> is two raised to the number of bits used to store the packed variable. Thus if the variable is packed into type <code>NC_SHORT</code>, a two-byte datatype, then there are at most <math>2^16 = 65536</math> distinct values representible. In practice, the number of discretely representible values is taken to be two less than  [...]
-      </unnumberedsubsec>
-
-      <unnumberedsubsec>
-        <title>Unpacking Algorithm</title>
-        <para><dfn>Unpacking</dfn> The unpacking algorithm depends on the presence of two attributes, <code>scale_factor</code> and <code>add_offset</code>. If <code>scale_factor</code> is present for a variable, the data are multiplied by the value <var>scale_factor</var> after the data are read. If <code>add_offset</code> is present for a variable, then the <var>add_offset</var> value is added to the data after the data are read. If both <code>scale_factor</code> and <code>add_offset</ [...]
-        <sp lines="1"></sp>
-        <para><var>upk</var> = <var>scale_factor</var>*<var>pck</var> + <var>add_offset</var> = (<var>max</var>-<var>min</var>)*<var>pck</var>/<var>ndrv</var> + 0.5*(<var>min</var>+<var>max</var>)&linebreak;</para>
-        <sp lines="1"></sp>
-        <para>When <code>scale_factor</code> and <code>add_offset</code> are used for packing, the associated variable (containing the packed data) is typically of type <code>byte</code> or <code>short</code>, whereas the unpacked values are intended to be of type <code>int</code>, <code>float</code>, or <code>double</code>. An attribute's <code>scale_factor</code> and <code>add_offset</code> and <code>_FillValue</code>, if any, should all be of the type intended for the unpacked data, i [...]
-      </unnumberedsubsec>
-
-      <unnumberedsubsec>
-        <title>Default Handling of Packed Data</title>
-        <para>All <acronym><acronymword>NCO</acronymword></acronym> arithmetic operators understand packed data. The operators automatically unpack any packed variable in the input file which will be arithmetically processed. For example, <command>ncra</command> unpacks all record variables, and <command>ncwa</command> unpacks all variable which contain a dimension to be averaged. These variables are stored unpacked in the output file.</para>
-        <para>On the other hand, arithmetic operators do not unpack non-processed variables. For example, <command>ncra</command> leaves all non-record variables packed, and <command>ncwa</command> leaves packed all variables lacking an averaged dimension. These variables (called fixed variables) are passed unaltered from the input to the output file. Hence fixed variables which are packed in input files remain packed in output files. Completely packing and unpacking files is easily acco [...]
-      </unnumberedsubsec>
-    </section>
-  </node>
-  <node>
-    <nodename>Operation Types</nodename>
-    <nodenext>Type Conversion</nodenext>
-    <nodeprev>Packed data</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Operation Types</title>
-      <para><indexterm index="cp">operation types</indexterm><indexterm index="cp"><code>avg</code></indexterm><indexterm index="cp"><code>sqravg</code></indexterm><indexterm index="cp"><code>avgsqr</code></indexterm><indexterm index="cp"><code>min</code></indexterm><indexterm index="cp"><code>max</code></indexterm><indexterm index="cp"><code>rmssdn</code></indexterm><indexterm index="cp"><code>rms</code></indexterm><indexterm index="cp"><code>ttl</code></indexterm><indexterm index="cp"> [...]
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncra</command>, <command>ncea</command>, <command>ncwa</command>&linebreak; Short options: <samp>-y</samp>&linebreak; Long options: <samp>--operation</samp>, <samp>--op_typ</samp>&linebreak;</para>
-      </cartouche>
-      <para role="continues">The <samp>-y <var>op_typ</var></samp> switch allows specification of many different types of operations Set <var>op_typ</var> to the abbreviated key for the corresponding operation:</para>
-      <table>
-        <tableitem>
-          <tableterm><code>avg</code></tableterm>
-          <item>
-            <para>Mean value</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sqravg</code></tableterm>
-          <item>
-            <para>Square of the mean</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>avgsqr</code></tableterm>
-          <item>
-            <para>Mean of sum of squares</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>max</code></tableterm>
-          <item>
-            <para>Maximium value</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>min</code></tableterm>
-          <item>
-            <para>Minimium value</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>rms</code></tableterm>
-          <item>
-            <para>Root-mean-square (normalized by <var>N</var>)</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>rmssdn</code></tableterm>
-          <item>
-            <para>Root-mean square (normalized by <var>N-1</var>)</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sqrt</code></tableterm>
-          <item>
-            <para>Square root of the mean</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ttl</code></tableterm>
-          <item>
-            <para>Sum of values</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues"><indexterm index="cp">coordinate variable</indexterm><acronym><acronymword>NCO</acronymword></acronym> assumes coordinate variables represent grid axes, e.g., longitude. The only rank-reduction which makes sense for coordinate variables is averaging. Hence <acronym><acronymword>NCO</acronymword></acronym> implements the operation type requested with <samp>-y</samp> on all non-coordinate variables, but not on coorniate variables. When an operation requires a c [...]
-      <para>The mathematical definition of each arithmetic operation is given below. See <xref><xrefnodename>ncwa netCDF Weighted Averager</xrefnodename></xref>, for additional information on masks and normalization. If an operation type is not specified with <samp>-y</samp> then the operator performs an arithmetic average by default. Averaging is described first so the terminology for the other operations is familiar.</para>
-      <para>The definitions of some of these operations are not universally useful. Mostly they were chosen to facilitate standard statistical computations within the <acronym><acronymword>NCO</acronymword></acronym> framework. We are open to redefining and or adding to the above. If you are interested in having other statistical quantities defined in <acronym><acronymword>NCO</acronymword></acronym> please contact the <acronym><acronymword>NCO</acronymword></acronym> project (see <xref> [...]
-      <para role="continues">EXAMPLES</para>
-      <para role="continues">Suppose you wish to examine the variable <code>prs_sfc(time,lat,lon)</code> which contains a time series of the surface pressure as a function of latitude and longitude. Find the minimium value of <code>prs_sfc</code> over all dimensions:</para>
-      <example xml:space="preserve">ncwa -y min -v prs_sfc in.nc foo.nc</example>
-      <para role="continues">Find the maximum value of <code>prs_sfc</code> at each time interval for each latitude:</para>
-      <example xml:space="preserve">ncwa -y max -v prs_sfc -a lon in.nc foo.nc</example>
-      <para role="continues">Find the root-mean-square value of the time-series of <code>prs_sfc</code> at every gridpoint:</para>
-      <example xml:space="preserve">ncra -y rms -v prs_sfc in.nc foo.nc
-ncwa -y rms -v prs_sfc -a time in.nc foo.nc</example>
-      <para role="continues">The previous two commands give the same answer but <command>ncra</command> is preferred because it has a smaller memory footprint. <indexterm index="cp">degenerate dimension</indexterm>Also, by default, <command>ncra</command> leaves the (degenerate) <code>time</code> dimension in the output file (which is usually useful) whereas <command>ncwa</command> removes the <code>time</code> dimension (unless <samp>-b</samp> is given).</para>
-      <para role="continues">These operations work as expected in multi-file operators. Suppose that <code>prs_sfc</code> is stored in multiple timesteps per file across multiple files, say <file>jan.nc</file>, <file>feb.nc</file>, <file>march.nc</file>. We can now find the three month maximium surface pressure at every point.</para>
-      <example xml:space="preserve">ncea -y max -v prs_sfc jan.nc feb.nc march.nc out.nc</example>
-      <para role="continues">It is possible to use a combination of these operations to compute the variance and standard deviation of a field stored in a single file or across multiple files. The procedure to compute the temporal standard deviation of the surface pressure at all points in a single file <file>in.nc</file> involves three steps.</para>
-      <example xml:space="preserve">ncwa -O -v prs_sfc -a time in.nc out.nc
-ncbo -O -v prs_sfc in.nc out.nc out.nc
-ncra -O -y rmssdn out.nc out.nc</example>
-      <para>First construct the temporal mean of <code>prs_sfc</code> in the file <file>out.nc</file>. Next overwrite <file>out.nc</file> with the anomaly (deviation from the mean). Finally overwrite <file>out.nc</file> with the root-mean-square of itself. Note the use of <samp>-y rmssdn</samp> (rather than <samp>-y rms</samp>) in the final step. This ensures the standard deviation is correctly normalized by one fewer than the number of time samples. The procedure to compute the variance [...]
-      <para><command>ncap2</command> can also compute statistics like standard deviations. Brute-force implementation of formulae is one option, e.g.,</para>
-      <example xml:space="preserve">ncap2 -s 'prs_sfc_sdn=sqrt((prs_sfc-prs_sfc.avg($time)^2).total($time))/($time.size-1)'
-      in.nc out.nc</example>
-      <para>The operation may, of course, be broken into multiple steps in order to archive intermediate quantities, such as the time-anomalies</para>
-      <example xml:space="preserve">ncap2 -s 'prs_sfc_anm=prs_sfc-prs_sfc.avg($time)' \
-      -s 'prs_sfc_sdn=sqrt((prs_sfc_anm^2).total($time))/($time.size-1)' \
-      in.nc out.nc</example>
-      <para><command>ncap2</command> supports intrinsic standard deviation functions (see <xref><xrefnodename>Operation Types</xrefnodename></xref>) which simplify the above expression to</para>
-      <example xml:space="preserve">ncap2 -s 'prs_sfc_sdn=(prs_sfc-prs_sfc.avg($time)).rmssdn($time)' in.nc out.nc</example>
-      <para>These instrinsic functions compute the answer quickly and concisely.</para>
-      <para>The procedure to compute the spatial standard deviation of a field in a single file <file>in.nc</file> involves three steps.</para>
-      <example xml:space="preserve">ncwa -O -v prs_sfc,gw -a lat,lon -w gw in.nc out.nc
-ncbo -O -v prs_sfc,gw in.nc out.nc out.nc
-ncwa -O -y rmssdn -v prs_sfc -a lat,lon -w gw out.nc out.nc</example>
-      <para>First the appropriately weighted (with <samp>-w gw</samp>) spatial mean values are written to the output file. This example includes the use of a weighted variable specified with <samp>-w gw</samp>. When using weights to compute standard deviations one must remember to include the weights in the initial output files so that they may be used again in the final step. The initial output file is then overwritten with the gridpoint deviations from the spatial mean. Finally the roo [...]
-      <para>The <command>ncap2</command> solution to the spatially-weighted standard deviation problem is</para>
-      <example xml:space="preserve">ncap2 -s 'prs_sfc_sdn=(prs_sfc*gw-prs_sfc*gw.avg($lat,$lon)).rmssdn($lat,$lon)' \
-      in.nc out.nc</example>
-      <para>Be sure to multiply the variable by the weight prior to computing the the anomalies and the standard deviation.</para>
-      <para>The procedure to compute the standard deviation of a time-series across multiple files involves one extra step since all the input must first be collected into one file.</para>
-      <example xml:space="preserve">ncrcat -O -v tpt in.nc in.nc foo1.nc
-ncwa -O -a time foo1.nc foo2.nc
-ncbo -O -v tpt foo1.nc foo2.nc foo3.nc
-ncra -O -y rmssdn foo3.nc out.nc</example>
-      <para>The first step assembles all the data into a single file. Though this may consume a lot of temporary disk space, it is more or less required by the <command>ncbo</command> operation in the third step.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Type Conversion</nodename>
-    <nodenext>Batch Mode</nodenext>
-    <nodeprev>Operation Types</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Type Conversion</title>
-      <para><indexterm index="cp">type conversion</indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncap2</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncra</command>, <command>ncwa</command>&linebreak; Short options: None&linebreak;</para>
-      </cartouche>
-      <para><indexterm index="cp">promotion</indexterm><indexterm index="cp">demotion</indexterm><indexterm index="cp">automatic type conversion</indexterm><indexterm index="cp">manual type conversion</indexterm>Type conversion (often called <dfn>promotion</dfn> or <dfn>demotion</dfn>) refers to the casting of one fundamental data type to another, e.g., converting <code>NC_SHORT</code> (two bytes) to <code>NC_DOUBLE</code> (eight bytes). Type conversion is automatic when the language car [...]
-      <menu>
-        <menuentry>
-          <menunode>Automatic type conversion</menunode>
-          <menutitle>Automatic type conversion</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Manual type conversion</menunode>
-          <menutitle>Manual type conversion</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>Automatic type conversion</nodename>
-    <nodenext>Manual type conversion</nodenext>
-    <nodeprev>Type Conversion</nodeprev>
-    <nodeup>Type Conversion</nodeup>
-    <subsection>
-      <title>Automatic type conversion</title>
-      <para>As a general rule, automatic type conversions should be avoided for at least two reasons. First, type conversions are expensive since they require creating (temporary) buffers and casting each element of a variable from the type it was stored at to some other type. Second, the dataset's creator probably had a good reason for storing data as, say, <code>NC_FLOAT</code> rather than <code>NC_DOUBLE</code>. In a scientific framework there is no reason to store data with more prec [...]
-      <para><indexterm index="cp">C language</indexterm><indexterm index="cp">Fortran</indexterm>Automatic type conversion during arithmetic in the languages C<!-- /@w --> and Fortran is performed only when necessary. All operands in an operation are converted to the most precise type before the operation takes place. However, following this parsimonious conversion rule dogmatically results in numerous headaches. For example, the average of the two <code>NC_SHORT</code>s <code>17000s</co [...]
-<!-- texi2html does not like @math{} -->32767 = 2^15−1 <clearvalue name="flg"></clearvalue> </para></footnote>. There are valid reasons for expecting this operation to succeed and the <acronym><acronymword>NCO</acronymword></acronym> philosophy is to make operators do what you want, not what is most pure. Thus, unlike C and Fortran, but like many other higher level interpreted languages, <acronym><acronymword>NCO</acronymword></acronym> arithmetic operators will perform automatic t [...]
-      <enumerate first="1">
-        <item>
-          <para>The operator is <command>ncea</command>, <command>ncra</command>, or <command>ncwa</command>. <command>ncbo</command> is not yet included in this list because subtraction did not benefit from type conversion. This will change in the future 
-<!-- fxm TODO #265 --></para>
-        </item>
-        <item>
-          <para>The arithmetic operation could benefit from type conversion. Operations that could benefit (e.g., from larger representable sums) include averaging, summation, or any "hard" arithmetic. Type conversion does not benefit searching for minima and maxima (<samp>-y min</samp>, or <samp>-y max</samp>).</para>
-        </item>
-        <item>
-          <para>The variable on disk is of type <code>NC_BYTE</code>, <code>NC_CHAR</code>, <code>NC_SHORT</code>, or <code>NC_INT</code>. Type <code>NC_DOUBLE</code> is not type converted because there is no type of higher precision to convert to. Type <code>NC_FLOAT</code> is not type converted because, in our judgement, the performance penalty of always doing so would outweigh the (extremely rare) potential benefits.</para>
-        </item>
-      </enumerate>
-      <para>When these criteria are all met, the operator promotes the variable in question to type <code>NC_DOUBLE</code>, performs all the arithmetic operations, casts the <code>NC_DOUBLE</code> type back to the original type, and finally writes the result to disk. The result written to disk may not be what you expect, because of incommensurate ranges represented by different types, and because of (lack of) rounding. First, continuing the above example, the average (e.g., <samp>-y avg< [...]
-      <para><indexterm index="cp"><code>floor</code></indexterm>Type conversions use the <code>floor</code> function to convert floating point number to integers. Type conversions do not attempt to round floating point numbers to the nearest integer. Thus the average of <code>1s</code> and <code>2s</code> is computed in double precisions arithmetic as <math>(<code>1.0d</code> + <code>1.5d</code>)/2) = <code>1.5d</code></math>. This result is converted to <code>NC_SHORT</code> and stored  [...]
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para><var>n</var> <= <var>x</var> < <var>n+1</var></para>
-      <clearvalue name="flg"></clearvalue>
-      <para>will have the value <var>n</var> when converted to an integer.</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Manual type conversion</nodename>
-    <nodeprev>Automatic type conversion</nodeprev>
-    <nodeup>Type Conversion</nodeup>
-    <subsection>
-      <title>Manual type conversion</title>
-      <para><indexterm index="cp"><command>ncap2</command></indexterm><command>ncap2</command> provides intrinsic functions for performing manual type conversions. This, for example, converts variable <code>tpt</code> to external type <code>NC_SHORT</code> (a C-type <code>short</code>), and variable <code>prs</code> to external type <code>NC_DOUBLE</code> (a C-type <code>double</code>).</para>
-      <example xml:space="preserve">ncap2 -s 'tpt=short(tpt);prs=double(prs)' in.nc out.nc</example>
-      <para>See <xref><xrefnodename>ncap2 netCDF Arithmetic Processor</xrefnodename></xref>, for more details.</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Batch Mode</nodename>
-    <nodenext>History Attribute</nodenext>
-    <nodeprev>Type Conversion</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Batch Mode</title>
-      <para><indexterm index="cp">batch mode</indexterm><indexterm index="cp">overwriting files</indexterm><indexterm index="cp">appending to files</indexterm><indexterm index="cp">force overwrite</indexterm><indexterm index="cp">force append</indexterm><indexterm index="cp"><code>-O</code></indexterm><indexterm index="cp"><code>-A</code></indexterm><indexterm index="cp"><code>--overwrite</code></indexterm><indexterm index="cp"><code>--ovr</code></indexterm><indexterm index="cp"><code>-- [...]
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: <samp>-O</samp>, <samp>-A</samp>&linebreak; Long options: <samp>--ovr</samp>, <samp>--overwrite</samp>, <samp>--apn</samp>, <samp>--append</samp>&linebreak;</para>
-      </cartouche>
-      <para>If the <var>output-file</var> specified for a command is a pre-existing file, then the operator will prompt the user whether to overwrite (erase) the existing <var>output-file</var>, attempt to append to it, or abort the operation. However, interactive questions reduce productivity when processing large amounts of data. Therefore <acronym><acronymword>NCO</acronymword></acronym> also implements two ways to override its own safety features, the <samp>-O</samp> and <samp>-A</sa [...]
-    </section>
-  </node>
-  <node>
-    <nodename>History Attribute</nodename>
-    <nodenext>File List Attributes</nodenext>
-    <nodeprev>Batch Mode</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>History Attribute</title>
-      <para><indexterm index="cp"><code>history</code></indexterm><indexterm index="cp">timestamp</indexterm><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm><indexterm index="cp"><code>-h</code></indexterm><indexterm index="cp"><code>--hst</code></indexterm><indexterm index="cp"><code>--history</code></indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: <samp>-h</samp>&linebreak; Long options: <samp>--hst</samp>, <samp>--history</samp>&linebreak;</para>
-      </cartouche>
-      <para>All operators automatically append a <code>history</code> global attribute to any file they create or modify. The <code>history</code> attribute consists of a timestamp and the full string of the invocation command to the operator, e.g., <samp>Mon May 26 20:10:24 1997: ncks in.nc foo.nc</samp>. The full contents of an existing <code>history</code> attribute are copied from the first <var>input-file</var> to the <var>output-file</var>. The timestamps appear in reverse chronolo [...]
-    </section>
-  </node>
-  <node>
-    <nodename>File List Attributes</nodename>
-    <nodenext>CF Conventions</nodenext>
-    <nodeprev>History Attribute</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>File List Attributes</title>
-      <para><indexterm index="cp"><code>nco_input_file_list</code></indexterm><indexterm index="cp"><code>nco_input_file_number</code></indexterm><indexterm index="cp"><code>stdin</code></indexterm><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm><indexterm index="cp"><code>-H</code></indexterm><indexterm index="cp"><code>--fl_lst_in</code></indexterm><indexterm index="cp"><code>--file_list</code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncea</command>, <command>ncecat</command>, <command>ncra</command>, <command>ncrcat</command>&linebreak; Short options: <samp>-H</samp>&linebreak; Long options: <samp>--fl_lst_in</samp>, <samp>--file_list</samp>&linebreak;</para>
-      </cartouche>
-      <para>Many methods of specifying large numbers of input file names pass these names via pipes, encodings, or argument transfer programs (see <xref><xrefnodename>Large Numbers of Files</xrefnodename></xref>). When these methods are used, the input file list is not explicitly passed on the command line. This results in a loss of information since the <code>history</code> attribute no longer contains the exact command by which the file was created.</para>
-      <para><acronym><acronymword>NCO</acronymword></acronym> solves this dilemma by archiving input file list attributes. When the input file list to a multi-file operator is specified via <code>stdin</code>, the operator, by default, attaches two global attributes to any file they create or modify. The <code>nco_input_file_number</code> global attribute contains the number of input files, and <code>nco_input_file_list</code> contains the file names, specified as standard input to the m [...]
-      <para>The <samp>-H</samp> switch overrides (turns off) the default behavior of writing the input file list global attributes when input is from <code>stdin</code>. The <samp>-h</samp> switch does this too, and turns off the <code>history</code> attribute as well (see <xref><xrefnodename>History Attribute</xrefnodename></xref>). Hence both switches allows space-conscious users to avoid storing what may amount to many thousands of filenames in a metadata attribute.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>CF Conventions</nodename>
-    <nodenext>ARM Conventions</nodenext>
-    <nodeprev>File List Attributes</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title><acronym><acronymword>CF</acronymword></acronym> Conventions</title>
-      <para><indexterm index="cp"><acronym><acronymword>CF</acronymword></acronym> conventions</indexterm><indexterm index="cp"><acronym><acronymword>CCSM</acronymword></acronym> conventions</indexterm><indexterm index="cp">UDUnits</indexterm><indexterm index="cp"><code>ORO</code></indexterm><indexterm index="cp"><code>area</code></indexterm><indexterm index="cp"><code>datesec</code></indexterm><indexterm index="cp"><code>date</code></indexterm><indexterm index="cp"><code>gw</code></inde [...]
-      <cartouche>
-        <para>Availability: <command>ncbo</command>, <command>ncea</command>, <command>ncecat</command>, <command>ncflint</command>, <command>ncpdq</command>, <command>ncra</command>, <command>ncwa</command>&linebreak; Short options: None&linebreak;</para>
-      </cartouche>
-      <para><acronym><acronymword>NCO</acronymword></acronym> recognizes the Climate and Forecast (<acronym><acronymword>CF</acronymword></acronym>) metadata conventions, and applies special rules to such data. <acronym><acronymword>NCO</acronymword></acronym> also handles older <acronym><acronymword>NCAR</acronymword></acronym> model datasets, such as <acronym><acronymword>CCM</acronymword></acronym> and early <acronym><acronymword>CCSM</acronymword></acronym> datasets, with its <acrony [...]
-      <para>The <acronym><acronymword>CF</acronymword></acronym> netCDF conventions are described <uref><urefurl>http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system</urefurl><urefdesc>here</urefdesc></uref>. Most <acronym><acronymword>CF</acronymword></acronym> netCDF conventions are transparent to <acronym><acronymword>NCO</acronymword></acronym> <footnote><para> The exception is appending/altering the attributes <code>x_op</code>, <code>y_op</cod [...]
-      <para>Currently, <acronym><acronymword>NCO</acronymword></acronym> determines whether a datafile is a <acronym><acronymword>CF</acronymword></acronym> output datafile simply by checking (case-insensitively) whether the value of the global attribute <code>Conventions</code> (if any) equals <samp>CF-1.0</samp> or <samp>NCAR-CSM</samp> Should <code>Conventions</code> equal either of these in the (first) <var>input-file</var>, <acronym><acronymword>NCO</acronymword></acronym> will appl [...]
-      <para><indexterm index="cp">non-coordinate grid properties</indexterm>Furthermore, the <dfn>size and rank-preserving arithmetic operators</dfn> try not to operate on certain grid properties. These operators are <command>ncap</command>, <command>ncbo</command>, <command>ncea</command>, <command>ncflint</command>, and <command>ncpdq</command> (when used for packing, not for permutation). These operators do not operate, by default, on (i.e., add, subtract, pack, etc.) the following va [...]
-      <para>Users usually want <emph>all</emph> grid properties to remain unaltered in the output file. To be treated as a grid property, the variable name must <emph>exactly</emph> match a name in the above list, or be a coordinate variable. The handling of <code>msk_*</code> is exceptional in that <emph>any</emph> variable name beginning with the string <code>msk_</code> is considered to be a “mask” and is thus preserved (not operated on arithmetically).</para>
-      <para>You must spoof <acronym><acronymword>NCO</acronymword></acronym> if you would like any grid properties or other special <acronym><acronymword>CF</acronymword></acronym> fields processed normally. For example rename the variables first with <command>ncrename</command>, or alter the <code>Conventions</code> attribute.</para>
-      <para><indexterm index="cp"><code>bounds</code></indexterm><indexterm index="cp">bounds convention</indexterm>As of <acronym><acronymword>NCO</acronymword></acronym> version 4.0.8 (April, 2011), <acronym><acronymword>NCO</acronymword></acronym> supports the <acronym><acronymword>CF</acronymword></acronym> <code>bounds</code> convention for cell boundaries described <uref><urefurl>http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries</urefurl><ure [...]
-      <para><indexterm index="cp"><code>coordinates</code></indexterm><indexterm index="cp">coordinates convention</indexterm><indexterm index="cp">coordinate variable</indexterm><indexterm index="cp">auxiliary coordinates</indexterm><indexterm index="cp">subsetting</indexterm><indexterm index="cp"><code>-C</code></indexterm><indexterm index="cp"><code>-c</code></indexterm><indexterm index="cp"><code>--no-coords</code></indexterm><indexterm index="cp"><code>--no-crd</code></indexterm><in [...]
-    </section>
-  </node>
-  <node>
-    <nodename>ARM Conventions</nodename>
-    <nodenext>Operator Version</nodenext>
-    <nodeprev>CF Conventions</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title><acronym><acronymword>ARM</acronymword></acronym> Conventions</title>
-      <para><indexterm index="cp"><acronym><acronymword>ARM</acronymword></acronym> conventions</indexterm><indexterm index="cp"><code>time_offset</code></indexterm><indexterm index="cp"><code>base_time</code></indexterm><indexterm index="cp"><code>time</code></indexterm></para>
-      <cartouche>
-        <para>Availability: <command>ncrcat</command>&linebreak; Short options: None&linebreak;</para>
-      </cartouche>
-      <para><command>ncrcat</command> has been programmed to correctly handle data files which utilize the Atmospheric Radiation Measurement (<acronym><acronymword>ARM</acronymword></acronym>) Program <uref><urefurl>http://www.arm.gov/data/time.stm</urefurl><urefdesc>convention</urefdesc></uref> for time and time offsets. If you do not work with <acronym><acronymword>ARM</acronymword></acronym> data then you may skip this section. <acronym><acronymword>ARM</acronymword></acronym> data fi [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Operator Version</nodename>
-    <nodeprev>ARM Conventions</nodeprev>
-    <nodeup>Common features</nodeup>
-    <section>
-      <title>Operator Version</title>
-      <para><indexterm index="cp">version</indexterm><indexterm index="cp"><acronym><acronymword>RCS</acronymword></acronym></indexterm><indexterm index="cp"><code>-r</code></indexterm><indexterm index="cp"><code>--revision</code></indexterm><indexterm index="cp"><code>--version</code></indexterm><indexterm index="cp"><code>--vrs</code></indexterm></para>
-      <cartouche>
-        <para>Availability: All operators&linebreak; Short options: <samp>-r</samp>&linebreak; Long options: <samp>--revision</samp>, <samp>--version</samp>, or <samp>--vrs</samp>&linebreak;</para>
-      </cartouche>
-      <para>All operators can be told to print their version information, library version, copyright notice, and compile-time configuration with the <samp>-r</samp> switch, or its long-option equivalent <samp>revision</samp>. The <samp>--version</samp> or <samp>--vrs</samp> switches print the operator version information only. The internal version number varies between operators, and indicates the most recent change to a particular operator's source code. This is useful in making sure yo [...]
-    </section>
-  </node>
-  <node>
-    <nodename>Operator Reference Manual</nodename>
-    <nodenext>Contributing</nodenext>
-    <nodeprev>Common features</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>Operator Reference Manual</title>
-      <para>This chapter presents reference pages for each of the operators individually. The operators are presented in alphabetical order. <indexterm index="cp">command line switches</indexterm>All valid command line switches are included in the syntax statement. Recall that descriptions of many of these command line switches are provided only in <xref><xrefnodename>Common features</xrefnodename></xref>, to avoid redundancy. Only options specific to, or most useful with, a particular o [...]
-      <menu>
-        <menuentry>
-          <menunode>ncap2 netCDF Arithmetic Processor</menunode>
-          <menutitle>ncap2 netCDF Arithmetic Processor</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncatted netCDF Attribute Editor</menunode>
-          <menutitle>ncatted netCDF Attribute Editor</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncbo netCDF Binary Operator</menunode>
-          <menutitle>ncbo netCDF Binary Operator</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncea netCDF Ensemble Averager</menunode>
-          <menutitle>ncea netCDF Ensemble Averager</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncecat netCDF Ensemble Concatenator</menunode>
-          <menutitle>ncecat netCDF Ensemble Concatenator</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncflint netCDF File Interpolator</menunode>
-          <menutitle>ncflint netCDF File Interpolator</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncks netCDF Kitchen Sink</menunode>
-          <menutitle>ncks netCDF Kitchen Sink</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncpdq netCDF Permute Dimensions Quickly</menunode>
-          <menutitle>ncpdq netCDF Permute Dimensions Quickly</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncra netCDF Record Averager</menunode>
-          <menutitle>ncra netCDF Record Averager</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncrcat netCDF Record Concatenator</menunode>
-          <menutitle>ncrcat netCDF Record Concatenator</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncrename netCDF Renamer</menunode>
-          <menutitle>ncrename netCDF Renamer</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ncwa netCDF Weighted Averager</menunode>
-          <menutitle>ncwa netCDF Weighted Averager</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </chapter>
-  </node>
-  <node>
-    <nodename>ncap2 netCDF Arithmetic Processor</nodename>
-    <nodenext>ncatted netCDF Attribute Editor</nodenext>
-    <nodeprev>Operator Reference Manual</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncap2</command> netCDF Arithmetic Processor</title>
-      <para><indexterm index="cp">parser</indexterm><indexterm index="cp">lexer</indexterm><indexterm index="cp">arithmetic processor</indexterm><indexterm index="cp">ncap</indexterm><indexterm index="cp">ncap2</indexterm></para>
-      <cartouche>
-        <para><command>ncap2</command> understands a relatively full-featured language of operations, including loops, conditionals, arrays, and math functions. <command>ncap2</command> is the most rapidly changing <acronym><acronymword>NCO</acronymword></acronym> operator and its documentation is incomplete. The distribution file <file>data/ncap2_tst.nco</file> contains an up-to-date overview of its syntax and capabilities. The <file>data/*.nco</file> distribution files (especially <fil [...]
-      </cartouche>
-<!-- fxm: TODO nco549 hyper-link all switches to explanatory sections? -->
-<!-- Problem is that only works well in HTML mode -->
-<!-- TeXInfo has no native mode for concise hyperlinks in text mode -->
-<!-- Currently in TeX/PDF mode, TeXInfo opens browser to find link, -->
-<!-- rather than jumping to internal link within document -->
-      <para role="continues">SYNTAX</para>
-      <example xml:space="preserve">ncap2 [-3] [-4] [-6] [<uref><urefurl>http://nco.sf.net/nco.html#-A</urefurl><urefreplacement>-A</urefreplacement></uref>] [-C] [-c] [-D <var>dbg</var>] [-F] [-f] [-L <var>dfl_lvl</var>]
-[-l <var>path</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-s <var>algebra</var>] [-S <var>fl.nco</var>] [-t <var>thr_nbr</var>] [-v]
-<var>input-file</var> [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncap2</command> arithmetically processes netCDF files <footnote><para><command>ncap2</command> is the successor to <command>ncap</command> which was put into maintenance mode in November, 2006. This documentation refers to <command>ncap2</command>, which has a superset of the <command>ncap</command> functionality. Eventually <command>ncap</command> will be deprecated in favor <command>ncap2</command>. <command>ncap2</command> may be renamed <command>ncap</command> in [...]
-      <para>Unlike the other operators, <command>ncap2</command> does not accept a list of variables to be operated on as an argument to <samp>-v</samp> (see <xref><xrefnodename>Subsetting Variables</xrefnodename></xref>). Rather, the <samp>-v</samp> switch takes no arguments and indicates that <command>ncap2</command> should output <emph>only</emph> user-defined variables. <command>ncap2</command> neither accepts nor understands the <var>-x</var> switch.</para>
-<!-- @subsection Scripting Mathematical Processing with @command{ncap2} -->
-      <menu>
-        <menuentry>
-          <menunode>Syntax of ncap2 statements</menunode>
-          <menutitle>Syntax of ncap2 statements</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Expressions</menunode>
-          <menutitle>Expressions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Dimensions</menunode>
-          <menutitle>Dimensions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Left hand casting</menunode>
-          <menutitle>Left hand casting</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Arrays and hyperslabs</menunode>
-          <menutitle>Arrays and hyperslabs</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Attributes</menunode>
-          <menutitle>Attributes</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Number literals</menunode>
-          <menutitle>Number literals</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>if statement</menunode>
-          <menutitle>if statement</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>print statement</menunode>
-          <menutitle>print statement</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Missing values ncap2</menunode>
-          <menutitle>Missing values ncap2</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Methods and functions</menunode>
-          <menutitle>Methods and functions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>RAM variables</menunode>
-          <menutitle>RAM variables</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Where statement</menunode>
-          <menutitle>Where statement</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Loops</menunode>
-          <menutitle>Loops</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Include files</menunode>
-          <menutitle>Include files</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Sort methods</menunode>
-          <menutitle>Sort methods</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Irregular grids</menunode>
-          <menutitle>Irregular grids</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Bilinear interpolation</menunode>
-          <menutitle>Bilinear interpolation</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>GSL special functions</menunode>
-          <menutitle>GSL special functions</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>GSL interpolation</menunode>
-          <menutitle>GSL interpolation</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>GSL least-squares fitting</menunode>
-          <menutitle>GSL least-squares fitting</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>GSL statistics</menunode>
-          <menutitle>GSL statistics</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>GSL random number generation</menunode>
-          <menutitle>GSL random number generation</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Examples ncap2</menunode>
-          <menutitle>Examples ncap2</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Intrinsic mathematical methods</menunode>
-          <menutitle>Intrinsic mathematical methods</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Operators precedence and associativity</menunode>
-          <menutitle>Operators precedence and associativity </menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>ID Quoting</menunode>
-          <menutitle>ID Quoting</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-      <para>Defining new variables in terms of existing variables is a powerful feature of <command>ncap2</command>. <indexterm index="cp">derived fields</indexterm>Derived fields inherit the metadata (i.e., attributes) of their ancestors, if any, in the script or input file. When the derived field is completely new (no identically-named ancestors exist), then it inherits the metadata (if any) of the left-most variable on the right hand side of the defining expression. This metadata inhe [...]
-      <para>The only exception to this rule of attribute propagation is in cases of left hand casting (see <xref><xrefnodename>Left hand casting</xrefnodename></xref>). The user must manually define the proper metadata for variables defined using left hand casting.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>Syntax of ncap2 statements</nodename>
-    <nodenext>Expressions</nodenext>
-    <nodeprev>ncap2 netCDF Arithmetic Processor</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Syntax of <command>ncap2</command> statements</title>
-      <para><indexterm index="cp">statement</indexterm><indexterm index="cp">syntax</indexterm>Mastering <command>ncap2</command> is relatively simple. Each valid statement <var>statement</var> consists of standard forward algebraic expression. The <file>fl.nco</file>, if present, is simply a list of such statements, whitespace, and comments. <indexterm index="cp">C language</indexterm>The syntax of statements is most like the computer language C<!-- /@w -->. The following characteristic [...]
-      <table>
-        <tableitem>
-          <tableterm>Array syntax</tableterm><indexterm index="cp">array syntax</indexterm><indexterm index="cp"><code>[]</code> (array delimiters)</indexterm>
-          <item>
-            <para>Arrays elements are placed within <code>[]</code> characters;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Array indexing</tableterm><indexterm index="cp">array indexing</indexterm>
-          <item>
-            <para>Arrays are 0-based;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Array storage</tableterm><indexterm index="cp">array storage</indexterm>
-          <item>
-            <para>Last dimension is most rapidly varying;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Assignment statements</tableterm><indexterm index="cp">assignment statement</indexterm><indexterm index="cp">semi-colon</indexterm><indexterm index="cp"><code>;</code> (end of statement)</indexterm>
-          <item>
-            <para>A semi<!-- /@w -->-colon <samp>;</samp> indicates the end of an assignment statement.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Comments</tableterm><indexterm index="cp">comments</indexterm><indexterm index="cp"><code>/*...*/</code> (comment)</indexterm><indexterm index="cp"><code>//</code> (comment)</indexterm>
-          <item>
-            <para>Multi-line comments are enclosed within <code>/* */</code> characters. Single line comments are preceded by <code>//</code> characters.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Nesting</tableterm><indexterm index="cp">including files</indexterm><indexterm index="cp">nesting</indexterm><indexterm index="cp"><code>#include</code></indexterm>
-          <item>
-            <para>Files may be nested in scripts using <code>#include <var>script</var></code>. Note that the <code>#include</code> command is not followed by a semi-colon because it is a pre-processor directive, not an assignment statement. The filename <file>script</file> is interpreted relative to the run directory.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Attribute syntax</tableterm><indexterm index="cp">attribute syntax</indexterm><indexterm index="cp"><code>@</code> (attribute)</indexterm>
-          <item>
-            <para>The at-sign <code>@</code> is used to delineate an attribute name from a variable name.</para>
-          </item>
-        </tableitem>
-      </table>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Expressions</nodename>
-    <nodenext>Dimensions</nodenext>
-    <nodeprev>Syntax of ncap2 statements</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <para><indexterm index="cp">expressions</indexterm></para>
-    <subsection>
-      <title>Expressions</title>
-      <para>Expressions are the fundamental building block of <command>ncap2</command>. Expressions are composed of variables, numbers, literals, and attributes. <indexterm index="cp">C language</indexterm>The following C operators<!-- /@w --> are “overloaded” and work with scalars and multi-dimensional arrays:</para>
-      <example xml:space="preserve">Arithmetic Operators: * / % + - ^
-Binary Operators:     > >= < <= == != == || && >> <<
-Unary Operators:      + - ++ -- !
-Conditional Operator: exp1 ? exp2 : exp3
-Assign Operators:     = += -= /= *=</example>
-      <para>In the following section a <dfn>variable</dfn> also refers to a number literal which is read in as a scalar variable:</para>
-      <para><strong>Arithmetic and Binary Operators </strong></para>
-      <para>Consider <emph>var1 'op' var2</emph></para>
-      <para><strong>Precision</strong></para>
-      <itemize>
-        <itemfunction>•</itemfunction>
-        <item>
-          <para>When both operands are variables, the result has the precision of the higher precision operand.</para>
-        </item>
-        <item>
-          <para>When one operand is a variable and the other an attribute, the result has the precision of the variable.</para>
-        </item>
-        <item>
-          <para>When both operands are attributes, the result has the precision of the more precise attribute.</para>
-        </item>
-        <item>
-          <para>The exponentiation operator “^” is an exception to the above rules. When both operands have type less than <code>NC_FLOAT</code>, the result is <code>NC_FLOAT</code>. When either type is <code>NC_DOUBLE</code>, the result is also <code>NC_DOUBLE</code>.</para>
-        </item>
-      </itemize>
-<!-- csz got to here editing -->
-      <para><strong>Rank</strong></para>
-      <itemize>
-        <itemfunction>•</itemfunction>
-        <item>
-          <para>The Rank of the result is generally equal to Rank of the operand that has the greatest number of dimensions.</para>
-        </item>
-        <item>
-          <para>If the dimensions in var2 are a subset of the dimensions in var1 then its possible to  make var2 conform to var1 through broadcasting and or dimension reordering.</para>
-        </item>
-        <item>
-          <para>Broadcasting a variable means creating data in non-existing dimensions from the data in existing dimensions.</para>
-        </item>
-        <item>
-          <para>More specifically: If the numbers of dimensions in var1 is greater than or equal to the number of dimensions in var2 then an attempt is made to make var2 conform to var1 ,else var1 is made to conform to var2. If conformance  is not possible then an error message will be emitted and script execution will cease.&linebreak;</para>
-        </item>
-      </itemize>
-      <para role="continues">Even though the logical operators return True(1) or False(0) they are treated in the same way as the arithmetic operators with regard to precision and rank.&linebreak; Examples:</para>
-      <example xml:space="preserve">dimensions: time=10, lat=2, lon=4
-Suppose we have the two variables:
-
-double  P(time,lat,lon);
-float   PZ0(lon,lat);  // PZ0=1,2,3,4,5,6,7,8;
-
-Consider now the expression:
- PZ=P-PZ0
-
-PZ0 is made to conform to P and the result is
-PZ0 =
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-   1,3,5,7,2,4,6,8,
-
-Once the expression is evaluated then PZ will be of type double;
-
-Consider now
- start=four-att_var at double_att;  // start =-69  and is of type intger;
- four_pow=four^3.0f               // four_pow=64 and is of type float
- three_nw=three_dmn_var_sht*1.0f; // type is now float
- start at n1=att_var at short_att*att_var at int_att;
-                                  // start at n1=5329 and is type int</example>
-      <para role="continues"><strong>Binary Operators</strong> &linebreak; <indexterm index="cp">binary Operators</indexterm>Unlike C the binary operators return an array of values. There is no such thing as short circuiting with the AND/OR operators. Missing values are carried into the result in the same way they are with the arithmetic operators. When an expression is evaluated in an if() the missing values are treated as true.&linebreak; The binary operators are, in order of precedenc [...]
-      <example xml:space="preserve">
-!   Logical Not
-----------------------------
-<<  Less Than Selection
->>  Greater Than Selection
-----------------------------
->   Greater than
->=  Greater than or equal to
-<   Less than
-<=  Less than or equal to
-----------------------------
-==  Equal to
-!=  Not equal to
-----------------------------
-&&  Logical AND
-----------------------------
-||  Logical OR
-----------------------------</example>
-      <para>To see all operators: see <xref><xrefnodename>Operators precedence and associativity</xrefnodename></xref> Examples:</para>
-      <example xml:space="preserve">tm1= time>2 && time <7;  // tm1 = 0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ; type double;
-tm2= time==3 || time>=6; // tm2 = 0, 0, 1, 0, 0, 1, 1, 1, 1, 1 ; type double
-tm3= int(!tm1);          // tm3=  1, 1, 0, 0, 0, 0, 1, 1, 1, 1 ; type int
-tm4= tm1 && tm2;         // tm4=  0, 0, 1, 0, 0, 1, 0, 0, 0, 0 ; type double;
-tm5= !tm4;               // tm5=  1, 1, 0, 1, 1, 0, 1, 1, 1, 1 ; type double;</example>
-      <para role="continues"><strong>Regular Assign Operator</strong> &linebreak; <emph>var1 '=' exp1</emph> &linebreak; If var1 doesn't already exist in Output then var1 is written to Output with the values and dimensions from expr1. If var1 already exists in Output, then the only requirement on expr1 is that the number of elements must match the number already on disk. The type of expr1 is converted if necessary to the disk type.</para>
-      <para role="continues"><strong> Other Assign Operators +=,-=,*=./= </strong> &linebreak;         <emph>var1 'ass_op' exp1 </emph>&linebreak; if exp1 is a variable and it doesn't conform to var1 then an attempt is made to make it conform to var1. If exp1 is an attribute it must have unity size or else have the same number of elements as var1. If expr1 has a different type to var1 the it is converted to the var1 type.</para>
-      <para role="continues">example:</para>
-      <example xml:space="preserve">z1=four+=one*=10 // z1=14 four=14 one=10;
-time-=2          // time= -1,0,1,2,3,4,5,6,7,8</example>
-      <para role="continues"><strong>Increment/ Decrement Operators &linebreak; </strong> These work in a similar fashion to their regular C counterparts. If say the variable "four" is input only then the statement "++four" effectively means -read four from input increment each element by one , then write the new values to Output;</para>
-      <para>Example:</para>
-      <example xml:space="preserve">n2=++four;   n2=5, four=5
-n3=one--+20; n3=21  one=0;
-n4=--time;   n4=time=0.,1.,2.,3.,4.,5.,6.,7.,8.,9.;</example>
-      <para role="continues"><strong>Conditional Operator ?: </strong> &linebreak; <indexterm index="cp">conditional Operator</indexterm><emph>exp1 ? exp2 : exp3 </emph> &linebreak; The conditional operator (or ternary Operator) is a succinct way of writing an if/then/else. If exp1 evaluates to true then exp2 is returned else exp3 is returned.</para>
-      <para role="continues">Example:</para>
-      <example xml:space="preserve">weight_avg= weight.avg();
-weight_avg at units= (weight_avg ==1 ? "kilo" : "kilos");
-PS_nw= PS - (PS.min() >100000 ? 100000 : 0 );</example>
-      <para role="continues"><strong>Clipping Operators</strong> <indexterm index="cp">clipping operators</indexterm></para>
-      <table>
-        <tableitem>
-          <tableterm><< Less-than Clipping&linebreak;</tableterm>
-          <item>
-            <para>For arrays, the less-than selection operator selects all values in the left operand that are less than the corresponding value in the right operand. If the value of the left side is greater than or equal to the corresponding value of the right side, then the right side value is placed in the result</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>>> Greater-than Clipping&linebreak;</tableterm>
-          <item>
-            <para>For arrays, the greater-than selection operator selects all values in the left operand that are greater than the corresponding value in the right operand. If the value of the left side is less than or equal to the corresponding value of the right side, then the right side value is placed in the result.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para>Example:</para>
-      <example xml:space="preserve">RDM2= RDM >>100.0; RDM2=100,100,100,100,126,126,100,100,100, 100; // type double
-RDM2= RDM << 90s ; RDM3=  1,  9, 36, 84, 90, 90, 84, 36,  9,   1; // type int</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Dimensions</nodename>
-    <nodenext>Left hand casting</nodenext>
-    <nodeprev>Expressions</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Dimensions</title>
-      <para><indexterm index="cp">dimensions<command>ncap</command></indexterm><indexterm index="cp">defdim()</indexterm>Dimensions are defined in Output using the <code>defdim()</code> function.</para>
-      <example xml:space="preserve">defdim("cnt",10);</example>
-      <para>This dimension name must then be prefixed with a dollar-sign <samp>$</samp> when referred to in method arguments or left-hand-casting, e.g.,</para>
-      <example xml:space="preserve">new_var[$cnt]=time;
-temperature[$time,$lat,$lon]=35.5;
-temp_avg=temperature.avg($time);</example>
-      <para>The <code>size</code> method allows the dimension size to be used in an arithmetic expression:</para>
-      <example xml:space="preserve">time_avg=time.total() / $time.size;</example>
-      <para>Increase the size of a new variable by one and set new member to zero:</para>
-      <example xml:space="preserve">defdim("cnt_new",$cnt.size+1);
-new_var[$cnt_new]=0.0;
-new_var(0:($cnt_new.size-2))=old_var;</example>
-      <para role="continues"><strong>Dimension Abbreviations &linebreak;</strong> It is possible to use dimension abbreviations as method arguments:&linebreak; <code>$0</code> is the first dimension of a variable&linebreak; <code>$1</code> is the second dimension of a variable&linebreak; <code>$n</code> is the n+1 dimension of a variable&linebreak;</para>
-      <example xml:space="preserve">float four_dmn_rec_var(time,lat,lev,lon);
-double three_dmn_var_dbl(time,lat,lon);
-
-four_nw=four_dmn_rev_var.reverse($time,$lon)
-four_nw=four_dmn_rec_var.reverse($0,$3);
-
-four_avg=four_dmn_rec_var.avg($lat,$lev);
-four_avg=four_dmn_rec_var.avg($1,$2);
-
-three_mw=three_dmn_var_dbl.permute($time,$lon,$lat);
-three_mw=three_dmn_var_dbl.permute($0,$2,$1);</example>
-      <para role="continues"><strong>ID Quoting &linebreak;</strong> If the dimension name contains non-regular characters use ID quoting. See see <xref><xrefnodename>ID Quoting</xrefnodename></xref></para>
-      <example xml:space="preserve">defdim("a--list.A",10);
-A1['$a--list.A']=30.0;</example>
-      <para role="continues"><strong>GOTCHA &linebreak;</strong> It is not possible to manually define in Output any dimensions that exist in Input. When a variable from Input appears in an expression or statement its  dimensions in Input are  automagically copied to Output (if they are not already present)</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Left hand casting</nodename>
-    <nodenext>Arrays and hyperslabs</nodenext>
-    <nodeprev>Dimensions</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Left hand casting</title>
-      <para role="continues"><indexterm index="cp">hybrid coordinate system</indexterm><indexterm index="cp">left hand casting</indexterm><indexterm index="cp"><acronym><acronymword>LHS</acronymword></acronym></indexterm>The following examples demonstrate the utility of the <dfn>left hand casting</dfn> ability of <command>ncap2</command>. Consider first this simple, artificial, example. If <var>lat</var> and <var>lon</var> are one dimensional coordinates of dimensions <var>lat</var> and  [...]
-      <para>The ambiguity may be resolved by enumerating the desired dimension ordering of the output expression inside square brackets on the left hand side (<acronym><acronymword>LHS</acronymword></acronym>) of the equals sign. This is called <dfn>left hand casting</dfn> because the user resolves the dimensional ordering of the <acronym><acronymword>RHS</acronymword></acronym> of the expression by specifying the desired ordering on the <acronym><acronymword>LHS</acronymword></acronym>.</para>
-      <example xml:space="preserve">ncap2 -s 'lat_lon[lat,lon]=lat+lon' in.nc out.nc
-ncap2 -s 'lon_lat[lon,lat]=lat+lon' in.nc out.nc</example>
-      <para>The explicit list of dimensions on the <acronym><acronymword>LHS</acronymword></acronym>, <code>[lat,lon]</code> resolves the otherwise ambiguous ordering of dimensions in <var>lat_lon</var>. In effect, the <acronym><acronymword>LHS</acronymword></acronym> <dfn>casts</dfn> its rank properties onto the <acronym><acronymword>RHS</acronymword></acronym>. Without <acronym><acronymword>LHS</acronymword></acronym> casting, the dimensional ordering of <var>lat_lon</var> would be und [...]
-      <para>Consider now a slightly more complex example. In geophysical models, a coordinate system based on a blend of terrain-following and density-following surfaces is called a <dfn>hybrid coordinate system</dfn>. In this coordinate system, four variables must be manipulated to obtain the pressure of the vertical coordinate: <var>PO</var> is the domain-mean surface pressure offset (a scalar), <var>PS</var> is the local (time-varying) surface pressure (usually two horizontal spatial  [...]
-      <example xml:space="preserve">ncap2 -s 'prs_mdp[time,lat,lon,lev]=P0*hyam+PS*hybm' in.nc out.nc</example>
-      <para>Manipulating the four fields which define the pressure in a hybrid coordinate system is easy with left hand casting.</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Arrays and hyperslabs</nodename>
-    <nodenext>Attributes</nodenext>
-    <nodeprev>Left hand casting</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Arrays and hyperslabs</title>
-      <para><indexterm index="cp">array</indexterm><indexterm index="cp"><code>array</code> function</indexterm><indexterm index="cp">arrays</indexterm><indexterm index="cp">findgen-equivalent</indexterm><indexterm index="cp">indgen-equivalent</indexterm>Generating a regularly spaced one-dimensional array with <command>ncap2</command> is simple with the <code>array()</code> function. The syntax is</para>
-      <example xml:space="preserve">output=array(val_srt,val_ncr,$dmn_nm); // One-dimensional output
-output=array(val_srt,val_ncr,var_tpl);  // Multi-dimensional output
-h</example>
-      <para role="continues">where the arguments are the starting value <var>val_srt</var>, incremental value <var>val_ncr</var>, and, for one-dimensional output, the single dimension <code>$dmn_nm</code>, or, for multi-dimensional output, a template variable <code>var_tpl</code>, i.e., a variable with the same shape as the desired output.</para>
-      <para>Once the associated dimensions have been defined, the start and increment arguments may be supplied as values, mathmatical expressions, or variables:</para>
-      <example xml:space="preserve">var_out=array(1,1,$time); // 1,2,3,4,5,6,7,8,9,10
-var_out=array(1+2-2,one,$time); // 1,2,3,4,5,6,7,8,9,10
-var_out=array(1,2,three_dmn_rec_var); // 1,3,5,...155,157,159</example>
-      <para><indexterm index="cp">hyperslabs</indexterm>Hyperslabs in <command>ncap2</command> are more limited than hyperslabs with the other <acronym><acronymword>NCO</acronymword></acronym> operators. <command>ncap2</command> does not understand the shell command-line syntax used to specify multi-slabs, wrapped co-ordinates, negative stride or coordinate value limits. However with a bit of syntactic magic they are all are possible. <command>ncap2</command> accepts (in fact, it require [...]
-      <example xml:space="preserve">var1(arg1,arg2 ... argN);</example>
-      <para>where each hyperslab argument is of the form</para>
-      <example xml:space="preserve">start:end:stride</example>
-      <para>and the arguments for different dimensions are separated by commas. If "start" is omitted, it defaults to 0. If "end" is omitted, it defaults to dimension size minus one. If "stride" is omitted, it defaults to 1.</para>
-      <sp lines="1"></sp>
-      <para role="continues">If a single value is present then it is assumed that that dimension collapses to a single value (i.e., a cross-section). The number of hyperslab arguments MUST equal the variable's rank.</para>
-      <sp lines="1"></sp>
-      <para role="continues"><strong>Hyperslabs on the Right Hand Side of an assign&linebreak;</strong></para>
-      <para>A simple 1D example:</para>
-      <example xml:space="preserve">($time.size=10)
-od[$time]={20,22,24,26,28,30,32,34,36,38};
-
-od(7);     // 34
-od(7:);    // 34,36,38
-od(:7);    // 20,22,24,26,28,30,32,34
-od(::4);   // 20,28,36
-od(1:6:2)  // 22,26,30
-od(:)      // 20,22,24,26,28,30,32,34,36,38</example>
-      <para>A more complex three dimensional example:</para>
-      <example xml:space="preserve">($lat.size=2,$lon.size=4)
-th[$time,$lat,$lon]=
-                          {1, 2, 3, 4, 5, 6, 7, 8,
-                          9,10,11,12,13,14,15,16,
-                          17,18,19,20,21,22,23,24,
-                          -99,-99,-99,-99,-99,-99,-99,-99,
-                          33,34,35,36,37,38,39,40,
-                          41,42,43,44,45,46,47,48,
-                          49,50,51,52,53,54,55,56,
-                          -99,58,59,60,61,62,63,64,
-                          65,66,67,68,69,70,71,72,
-                          -99,74,75,76,77,78,79,-99 };
-
-th(1,1,3);        // 16
-th(2,0,:);        // 17, 18, 19, 20
-th(:,1,3);        // 8, 16, 24, -99, 40, 48, 56, 64, 72, -99
-th(::5 ,:,0:3:2); // 1, 3, 5, 7, 41, 43, 45, 47</example>
-      <para>If hyperslab arguments collapse to a single value (a cross-section has been specified), then that dimension is removed from the returned variable. If all the values collapse then a scalar variable is returned. So, for example, the following is valid:</para>
-      <example xml:space="preserve">th_nw=th(0,:,:)+th(9,:,:);
-// th_nw has dimensions $lon,$lat
-// NB: the time dimension has become degenerate</example>
-      <para>The following is invalid:</para>
-      <example xml:space="preserve">th_nw=th(0,:,0:1)+th(9,:,0:1);</example>
-      <para>because the <code>$lon</code> dimension now only has two elements. The above can be calculated by using a LHS cast with <code>$lon_nw</code> as replacement dim for <code>$lon</code>:</para>
-      <example xml:space="preserve">defdim("lon_nw",2);
-th_nw[$lat,$lon_nw]=th(0,:,0:1) +th(9,:,0:1);</example>
-      <para role="continues"><strong>Hyperslabs on the Left Hand Side of an assign&linebreak;</strong> When hyperslabing on the LHS, the expression on the RHS must evaluate to a scalar or a variable/attribute with the same number of elements as the LHS hyperslab. Set all elements of the last record to zero:</para>
-      <example xml:space="preserve">th(9,:,:)=0.0;</example>
-      <para role="continues">Set first element of each lon element to 1.0:</para>
-      <example xml:space="preserve">th(:,:,0)=1.0;</example>
-      <para>One may hyperslab on both sides of an assign. For example, this sets the last record to the first record:</para>
-      <example xml:space="preserve">th(9,:,:)=th(0,:,:);</example>
-      <para>Say <var>th0</var> represents pressure at height=0 and <var>th1</var> represents pressure at height=1. Then it is possible to insert these hyperslabs into the records</para>
-      <example xml:space="preserve">prs[$time,$height,$lat,$lon]=0.0;
-prs(:,0,:,:)=th0;
-prs(:,1,:,:)=th1</example>
-      <para role="continues"><strong>Reverse method</strong> &linebreak; <indexterm index="cp">reverse()</indexterm>Use the <code>reverse()</code> method to reverse a dimension's elements in a variable with at least one dimension. This is equivalent to a negative stride, e.g.,</para>
-      <example xml:space="preserve">th_rv=th(1 ,:,:).reverse($lon); // {12,11,10,9 }, {16,15,14,13}
-od_rv=od.reverse($time);        // {38,36,34,32,30,28,26,24,22,20}</example>
-      <para role="continues"><strong>Permute method</strong> &linebreak; <indexterm index="cp">permute()</indexterm>Use the <code>permute()</code> method to swap the dimensions of a variable. The number and names of dimension arguments must match the dimensions in the variable. If the first dimension in the variable is of record type then this must remain the first dimension. If you want to change the record dimension then consider using <command>ncpdq</command>.</para>
-      <para>Consider the variable:</para>
-      <example xml:space="preserve">float three_dmn_var(lat,lev,lon);
-three_dmn_var_prm=three_dmn_var.permute($lon,$lat,$lev);
-// The permuted values are
-three_dmn_var_prm=
-  0,4,8,
-  12,16,20,
-  1,5,9,
-  13,17,21,
-  2,6,10,
-  14,18,22,
-  3,7,11,
-  15,19,23;</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Attributes</nodename>
-    <nodenext>Number literals</nodenext>
-    <nodeprev>Arrays and hyperslabs</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Attributes</title>
-      <para><indexterm index="cp">attributes<command>ncap</command></indexterm>Attributes are referred to by <emph>var_nm at att_nm</emph> &linebreak; All the following are valid statements:</para>
-      <example xml:space="preserve">global at text="Test Attributes"; /* Assign a global variable attribute */
-a1[$time]=time*20;
-a1 at long_name="Kelvin";
-a1 at min=a1.min();
-a1 at max=a1.max();
-a1 at min++;
---a1 at max; q
-a1(0)=a1 at min;
-a1($time.size-1)=a1 at max;</example>
-      <para role="continues">A <emph>value list</emph> can be used on the RHS of an assign... <indexterm index="cp">value list</indexterm></para>
-      <example xml:space="preserve">a1 at trip1={1,2,3} ;
-a1 at triplet={a1 at min,(a1 at min+a1@max)/2,a1 at max};</example>
-      <para>The netCDF specification allows all attribute types to have a size greater than one. The maximum is defined by <code>NC_MAX_ATTRS</code>. The following is an <command>ncdump</command> of the metadata for variable <var>a1</var></para>
-      <example xml:space="preserve">double a1(time) ;
-  a1:long_name = "Kelvin" ;
-  a1:max = 199. ;
-  a1:min = 21. ;
-  a1:trip1 = 1, 2, 3 ;
-  a1:triplet = 21., 110., 199. ;</example>
-      <para>The <code>size()</code> method can be used with attributes. For example, to save an attribute text string in a variable,</para>
-      <example xml:space="preserve">defdim("sng_len", a1 at long_name.size());
-sng_arr[$sng_len]=a1 at long_name; // sng_arr now contains "Kelvin"</example>
-      <para>Attributes defined in a script are stored in memory and are written to Output after script completion. To stop the attribute being written use the ram_delete() method or use a bogus variable name.</para>
-      <para role="continues"><strong>Attribute Propagation & Inheritance</strong> <indexterm index="cp">attribute propagation</indexterm><indexterm index="cp">attribute inheritance</indexterm></para>
-      <itemize>
-        <itemfunction>•</itemfunction>  
-        <item>
-          <para>Attribute propagation occurs in a regular  assign statement. The variable being defined on the LHS gets copies of the attributes from the leftermost variable on the RHS</para>
-  
-        </item>
-        <item>
-          <para>Attribute Inheritance: The LHS variable "inherits" attributes from an Input variable with the same name</para>
-  
-        </item>
-        <item>
-          <para>It is possible to have a regular assign statement for which both propagation and inheritance occur.</para>
-        </item>
-      </itemize>
-      <example xml:space="preserve">prs_mdp[time,lat,lon,lev]=P0*hyam+hybm*PS;   // prs_mdp gets attributes from PO
-th_min=1.0 + 2*three_dmn_var_dbl.min($time); // th_min  gets attributes from three_dmn_var_dbl</example>
-      <para>If the attribute name contains non-regular characters use ID quoting. See see <xref><xrefnodename>ID Quoting</xrefnodename></xref></para>
-      <example xml:space="preserve">'b..m1 at c--lost'=23;</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Number literals</nodename>
-    <nodenext>if statement</nodenext>
-    <nodeprev>Attributes</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Number literals</title>
-      <para><indexterm index="cp">number literals <command>ncap</command></indexterm>The table below lists the postfix character(s) to add to a number literal for type cohesion. To use the new netCDF4 types <acronym><acronymword>NCO</acronymword></acronym> must be compiled/linked to the netCDF4 library and the output file must be <acronym><acronymword>HDF5</acronymword></acronym>.</para>
-      <example xml:space="preserve">n1[$time]=1UL; // n1 will now by type <code>NC_UINT</code>
-n2[$lon]=4b;   // n2 will be of type <code>NC_BYTE</code>
-n3[$lat]=5ull; // n3 will be of type <code>NC_UINT64</code>
-n3 at a1=6.0d;   // attribute will be type <code>NC_DOUBLE</code>
-n3 at a2=-666L;  // attribute will be type <code>NC_INT</code></example>
-      <para>A floating point number without a postfix will default to <code>NC_DOUBLE</code>. An integer without a postfix will default to type <code>NC_INT</code>. There is no postfix for characters, use a quoted string instead.</para>
-      <example xml:space="preserve">n4[$rlev]=0.1      // n4 will be of type <code>NC_DOUBLE</code>
-n5[$lon_grd]=2.0   // n5 will be of type <code>NC_DOUBLE</code>
-n6[$gds_crd]=2e3;  // n6 will be of type <code>NC_DOUBLE</code>
-n7[$gds_crd]=2e3f;  // n7 will be of type <code>NC_FLOAT</code>
-n6 at a1=41;         // attribute will be type <code>NC_INT</code>
-n6 at a2=-21;        // attribute will be type <code>NC_INT</code>
-n6 at units="kelvin" // attribute will be type <code>NC_CHAR</code></example>
-      <table>
-        <tableitem>
-          <tableterm></tableterm>
-          <item>
-            <para><strong>netCDF3/4 Types</strong></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>b|B</tableterm>
-          <item>
-  
-            <para><code>NC_BYTE</code>, a signed 1-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>none</tableterm>
-          <item>
-  
-            <para><code>NC_CHAR</code>, an ISO/ASCII character</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>s|S</tableterm>
-          <item>
-  
-            <para><code>NC_SHORT</code>, a signed 2-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>l|L</tableterm>
-          <item>
-  
-            <para><code>NC_INT</code>, a signed 4-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>f|F</tableterm>
-          <item>
-  
-            <para><code>NC_FLOAT</code>, a single-precision (4-byte) floating point number</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>d|D</tableterm>
-          <item>
-  
-            <para><code>NC_DOUBLE</code>, a double-precision (8-byte) floating point number</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm></tableterm>
-          <tableterm></tableterm>
-          <item>
-            <para><strong>netCDF4 Types</strong></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>ub|UB</tableterm>
-          <item>
-  
-            <para><code>NC_UBYTE</code>, an unsigned 1-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>us|US</tableterm>
-          <item>
-  
-            <para><code>NC_USHORT</code>, an unsigned 2-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>u|U|ul|UL</tableterm>
-          <item>
-  
-            <para><code>NC_UINT</code>, an unsigned 4-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>ll|LL</tableterm>
-          <item>
-  
-            <para><code>NC_INT64</code>, a signed 8-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>ull|ULL</tableterm>
-          <item>
-  
-            <para><code>NC_UINT64</code>, an unsigned 8-byte integer</para>
-          </item>
-        </tableitem>
-      </table>
-    </subsection>
-  </node>
-  <node>
-    <nodename>if statement</nodename>
-    <nodenext>print statement</nodenext>
-    <nodeprev>Number literals</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>if statement</title>
-      <para><indexterm index="cp">if()</indexterm>The syntax of the if statement is similar to its C counterpart. The <emph>Conditional Operator (ternary operator)</emph> has also been implemented.</para>
-      <example xml:space="preserve">if(exp1)
-   stmt1;
-else if(exp2)
-   stmt2;
-else
-   stmt3;
-
-# Can use code blocks as well:
-if(exp1){
-   stmt1;
-   stmt1a;
-   stmt1b;
-} else if(exp2)
-   stmt2;
-else {
-   stmt3;
-   stmt3a;
-   stmt3b;
-}</example>
-<!-- Truth -->
-      <para role="continues">For a variable or attribute expression to be logically true all its non-missing value elements must be logically true, i.e., non-zero. The expression can be of any type. Unlike C there is no short-circuiting of an expression with the OR (||) AND (&&) operators. The whole expression is evaluated regardless if one of the AND/OR operands are true/false.</para>
-      <example xml:space="preserve"># Simple example
-if(time>0)
-  print("All values of time are greater than zero\n");
-else if( time<0)
-  print("All values of time are less than zero\n");
-else {
-  time_max=time.max();
-  time_min=time.min();
-  print("min value of time=");print(time_min,"%f");
-  print("max value of time=");print(time_max,"%f");
-}
-
-# Example from ddra.nco
-if(fl_typ==fl_typ_gcm){
-  var_nbr_apx=32;
-  lmn_nbr=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Variable size */
-  if(nco_op_typ==nco_op_typ_avg){
-    lmn_nbr_avg=1.0*var_nbr_apx*varsz_gcm_4D; /* [nbr] Averaging block size */
-    lmn_nbr_wgt=dmnsz_gcm_lat; /* [nbr] Weight size */
-  } // !nco_op_typ_avg
-}else if(fl_typ==fl_typ_stl){
-  var_nbr_apx=8;
-  lmn_nbr=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Variable size */
-  if(nco_op_typ==nco_op_typ_avg){
-    lmn_nbr_avg=1.0*var_nbr_apx*varsz_stl_2D; /* [nbr] Averaging block size */
-    lmn_nbr_wgt=dmnsz_stl_lat; /* [nbr] Weight size */
-  } // !nco_op_typ_avg
-} // !fl_typ</example>
-      <para role="continues"><strong>Conditional Operator &linebreak;</strong></para>
-      <example xml:space="preserve">// netCDF4 needed for this example
-th_nw=(three_dmn_var_sht >= 0 ? three_dmn_var_sht.uint() : three_dmn_var_sht.int() );</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>print statement</nodename>
-    <nodenext>Missing values ncap2</nodenext>
-    <nodeprev>if statement</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>print statement</title>
-      <para><indexterm index="cp">print()<command>ncap</command></indexterm></para>
-      <example xml:space="preserve">print(variable_name/attribute name/string, format string);</example>
-      <para role="continues">The print function takes a variable name or attribute name or a quoted string and prints the contents in a in a similar fashion to <code>ncks -H</code>. There is also an optional C style format string argument. Currently the print function cannot print RAM variables or expressions such as <code>'print(var_msk*3+4)'</code>. To print an expression, first evaluate it as a non-RAM variable (so it will be saved and can be printed), and then print the variable.</para>
-      <para role="continues">examples</para>
-      <example xml:space="preserve">print(lon);
-lon[0]=0
-lon[1]=90
-lon[2]=180
-lon[3]=270
-
-print(lon_2D_rrg,"%3.2f,");
-0.00,0.00,180.00,0.00,180.00,0.00,180.00,0.00,
-
-print(mss_val_fst at _FillValue);
-mss_val_fst at _FillValue, size = 1 NC_FLOAT, value = -999
-
-print("This function \t is monotonic\n");
-This function is 	  monotonic</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Missing values ncap2</nodename>
-    <nodenext>Methods and functions</nodenext>
-    <nodeprev>print statement</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Missing values ncap2</title>
-      <para><indexterm index="cp">missing values ncap2</indexterm>Missing values operate slightly differently in <command>ncap2</command> Consider the expression where op is any of the following operators (excluding '=')</para>
-      <example xml:space="preserve">Arithmetic operators ( * / % + - ^ )
-Binary Operators     ( >, >= <, <= ==, !=,==,||,&&, >>,<< )
-Assign Operators     ( +=,-=,/=, *= )
-
-var1 'op' var2</example>
-      <para role="continues">If var1 has a missing value then this is the value used in the operation, otherwise the missing value for var2 is used. If during the element-by-element operation an element from either operand is equal to the missing value then the missing value is carried through. In this way missing values 'percolate' or propagate through an expression.&linebreak; Missing values associated with Output variables are stored in memory and are written to disk after the script  [...]
-      <example xml:space="preserve"># Consider the variable:
-int rec_var_int_mss_val_int(time); =-999,2,3,4,5,6,7,8,-999,-999;
-rec_var_int_mss_val_int:_FillValue = -999;
-
-n2=rec_var_int_mss_val_int + rec_var_int_mss_val_int.reverse($time);
-
-n2=-999,-999,11,11,11,11,11,11,999,-999;</example>
-      <para>The following methods are used to edit the missing value associated with a variable. They only work on variables in Output.</para>
-      <table>
-        <tableitem>
-          <tableterm><code>set_miss(expr)</code></tableterm><indexterm index="cp">set_miss()</indexterm>
-          <item>
- 
-            <para>Takes one argument the missing value.  Sets or overwrites the existing missing value.  The argument given is converted if necessary to the variable type</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>change_miss(expr)</code></tableterm><indexterm index="cp">change_miss()</indexterm>
-          <item>
- 
-            <para>Changes the missing value elements of the variable to the new missing  value (nb an expensive function).</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>get_miss()</code></tableterm><indexterm index="cp">get_miss()</indexterm>
-          <item>
- 
-            <para>Returns the missing value of a variable.  If the variable exists in Input and Output then the missing value of  the variable in Output is returned.  If the variable has no missing value then an error is returned.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>delete_miss()</code></tableterm><indexterm index="cp">delete_miss()</indexterm>
-          <item>
- 
-            <para>Deletes the missing value associated with a variable.</para>
-          </item>
-        </tableitem>
-      </table>
-      <example xml:space="preserve">th=three_dmn_var_dbl;
-th.change_miss(-1e10d);
-/* Set values less than 0 or greater than 50 to missing value */
-where(th < 0.0 || th > 50.0) th=th.get_miss();
-
-# Another example:
-new[$time,$lat,$lon]=1.0;
-new.set_miss(-997.0);
-
-// Extract only elements divisible by 3
-where (three_dmn_var_dbl%3 == 0)
-     new=three_dmn_var_dbl;
-elsewhere
-     new=new.get_miss();</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Methods and functions</nodename>
-    <nodenext>RAM variables</nodenext>
-    <nodeprev>Missing values ncap2</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Methods and functions</title>
-      <para>The convention within this document is that methods can be used as functions. However, functions are not and cannot be used as methods. Methods can be daisy changed together and their syntax is cleaner than functions. Method names are reserved words and CANNOT be used as variable names. The command <code>ncap2 -f</code> shows the complete list of methods available on your build.</para>
-      <example xml:space="preserve">n2=sin(theta)
-n2=theta.sin()
-n2=sin(theta)^2 + cos(theta)^2
-n2=theta.sin().pow(2) + theta.cos()^2</example>
-      <para>This statement chains methods together to convert three_dmn_var_sht to type double, average it, then convert this back to type short:</para>
-      <example xml:space="preserve">three_avg=three_dmn_var_sht.double().avg().short();</example>
-      <sp lines="1"></sp>
-      <para role="continues"><strong>Aggregate Methods &linebreak;</strong> These methods mirror the averaging types available in <command>ncwa</command>. The arguments to the methods are the dimensions to average over. Specifying no dimensions is equivalent to specifying all dimensions i.e., averaging over all dimensions. A masking variable and a weighting variable can be manually created and applied as needed.</para>
-      <table>
-        <tableitem>
-          <tableterm><code>avg()</code></tableterm><indexterm index="cp">avg()</indexterm>
-          <item>
-            <para role="continues">Mean value</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sqravg()</code></tableterm><indexterm index="cp">sqravg()</indexterm>
-          <item>
-            <para>Square of the mean</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>avgsqr()</code></tableterm>
-          <item>
-            <para>Mean of sum of squares</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>max()</code></tableterm><indexterm index="cp">max()</indexterm>
-          <item>
-            <para>Maximum value</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>min()</code></tableterm><indexterm index="cp">min()</indexterm>
-          <item>
-            <para>Minimum value</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>rms()</code></tableterm>
-          <item>
-            <para>Root-mean-square (normalize by <var>N</var>)</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>rmssdn()</code></tableterm><indexterm index="cp">rmssdn()</indexterm>
-          <item>
-            <para>Root-mean square (normalize by <var>N-1</var>)</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ttl() or total()</code></tableterm><indexterm index="cp">ttl()</indexterm>
-          <item>
-            <para>Sum of values</para>
-          </item>
-        </tableitem>
-      </table>
-      <example xml:space="preserve">// Average a variable over time
-four_time_avg=four_dmn_rec_var($time);</example>
-      <sp lines="1"></sp>
-      <para role="continues"><strong> Packing Methods &linebreak; </strong> For more information see see <xref><xrefnodename>Packed data</xrefnodename></xref> and see <xref><xrefnodename>ncpdq netCDF Permute Dimensions Quickly</xrefnodename></xref>&linebreak;</para>
-      <table>
-        <tableitem>
-          <tableterm><code>pack() & pack_short()</code></tableterm><indexterm index="cp">pack()</indexterm>
-          <item>
-            <para>The default packing algorithm is applied and variable is packed to <code>NC_SHORT</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>pack_byte()</code></tableterm><indexterm index="cp">pack_byte()</indexterm>
-          <item>
-            <para>Variable is packed to <code>NC_BYTE</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>pack_short()</code></tableterm><indexterm index="cp">pack_short()</indexterm>
-          <item>
-            <para>Variable is packed to <code>NC_SHORT</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>pack_int()</code></tableterm><indexterm index="cp">pack_int()</indexterm>
-          <item>
-            <para>Variable is packed to <code>NC_INT</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>unpack()</code></tableterm><indexterm index="cp">unpack()</indexterm>
-          <item>
-            <para>The standard unpacking algorithm is applied.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues"><strong>Basic Methods &linebreak;</strong> These methods work with variables and attributes. They have no arguments</para>
-      <table>
-        <tableitem>
-          <tableterm><code>size()</code></tableterm><indexterm index="cp">size()</indexterm>
-          <item>
-            <para>Total number of elements</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ndims()</code></tableterm><indexterm index="cp">ndims()</indexterm>
-          <item>
-            <para>Number of dimensions in variable</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>type()</code></tableterm><indexterm index="cp">type()</indexterm>
-          <item>
-            <para>Returns the netcdf type (see previous section)</para>
-          </item>
-        </tableitem>
-      </table>
-      <sp lines="1"></sp>
-      <para role="continues"><strong>Utility Methods &linebreak;</strong> These functions are used to manipulate missing values and RAM variables. see <xref><xrefnodename>Missing values ncap2</xrefnodename></xref></para>
-      <table>
-        <tableitem>
-          <tableterm><code>set_miss(expr)</code></tableterm>
-          <item>
- 
-            <para>Takes one argument the missing value. Sets or overwrites the existing missing value. The argument given is converted if necessary to the variable type</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>change_miss(expr)</code></tableterm>
-          <item>
- 
-            <para>Changes the missing value elements of the variable to the new missing value (n.b. an expensive function).</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>get_miss()</code></tableterm>
-          <item>
- 
-            <para>Returns the missing value of a variable in Input or Output</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>delete_miss()</code></tableterm>
-          <item>
- 
-            <para>Deletes the missing value associated with a variable.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ram_write()</code></tableterm>
-          <item>
- 
-            <para>Writes a RAM variable to disk i.e., converts it to a regular disk type variable</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ram_delete()</code></tableterm>
-          <item>
- 
-            <para>Deletes a RAM variable or an attribute</para>
-          </item>
-        </tableitem>
-      </table>
-      <sp lines="1"></sp>
-      <para role="continues"><strong>PDQ Methods &linebreak;</strong> See see <xref><xrefnodename>ncpdq netCDF Permute Dimensions Quickly</xrefnodename></xref></para>
-      <table>
-        <tableitem>
-          <tableterm><code>reverse(dim args)</code></tableterm>
-          <item>
- 
-            <para>Reverses the dimension ordering of elements in a variable.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>permute(dim args)</code></tableterm>
-          <item>
- 
-            <para>Re-shapes variables by re-ordering the dimensions. All the dims of the variable must be specified in the arguments. A limitation of this permute (unlike ncpdq) is that the record dimension cannot be re-assigned.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para>// Swap dimensions about and reorder along lon</para>
-      <example xml:space="preserve">lat_2D_rrg_new=lat_2D_rrg.permute($lon,$lat).reverse($lon);
-lat_2D_rrg_new=0,90,-30,30,-30,30,-90,0</example>
-      <sp lines="1"></sp>
-      <para role="continues"><strong>Type Conversion Methods &linebreak;</strong> These methods allow <command>ncap2</command> to convert variables and attributes to the different netcdf types. For more details on automatic and manual type conversion see (see <xref><xrefnodename>Type Conversion</xrefnodename></xref>). You can only use the new netCDF4 types if you have compiled/links <acronym><acronymword>NCO</acronymword></acronym> with the netCDF4 library and the Output file is HDF5.</para>
-      <table>
-        <tableitem>
-          <tableterm><code></code></tableterm>
-          <item>
-            <para role="continues"><strong>netCDF3/4 Types</strong></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>byte()</code></tableterm><indexterm index="cp">byte()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_BYTE</code>,  a signed 1-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>char()</code></tableterm><indexterm index="cp">char()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_CHAR</code>,  an ISO/ASCII character</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>short()</code></tableterm><indexterm index="cp">sshort()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_SHORT</code>, a signed 2-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>int()</code></tableterm><indexterm index="cp">int()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_INT</code>,   a signed 4-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>float()</code></tableterm><indexterm index="cp">float()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_FLOAT</code>, a single-precision (4-byte) floating point number</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>double()</code></tableterm><indexterm index="cp">double()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_DOUBLE</code>, a double-precision (8-byte) floating point number</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code></code></tableterm>
-          <tableterm><code></code></tableterm>
-          <item>
-            <para><strong>netCDF4 Types</strong></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ubyte()</code></tableterm><indexterm index="cp">ubyte()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_UBYTE</code>, an unsigned 1-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ushort()</code></tableterm><indexterm index="cp">ushort()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_USHORT</code>, an unsigned 2-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>uint()</code></tableterm><indexterm index="cp">uint()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_UINT</code>, an unsigned 4-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>int64()</code></tableterm><indexterm index="cp">int64()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_INT64</code>, a signed 8-byte integer</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>uint64()</code></tableterm><indexterm index="cp">unit64()</indexterm>
-          <item>
- 
-            <para>convert to <code>NC_UINT64</code>, an unsigned 8-byte integer</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues"><strong>Intrinsic Mathematical Methods &linebreak;</strong> The list of mathematical methods is system dependant. For the full list see <xref><xrefnodename>Intrinsic mathematical methods</xrefnodename></xref></para>
-      <para>All the mathematical methods take a single operand ,with the exception of <code>atan2</code> and <code>pow</code> which take two. If the operand type is less than <emph>float</emph> then the result will be of type <emph>float</emph>. If the operand is type <emph>double</emph> then the result will be type <emph>double</emph>. Like the other methods, you are free to use the mathematical methods as functions.</para>
-      <example xml:space="preserve">n1=pow(2,3.0f)    // n1 type float
-n2=atan2(2,3.0)   // n2 type double
-n3=1/(three_dmn_var_dbl.cos().pow(2))-tan(three_dmn_var_dbl)^2; // n3 type double</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>RAM variables</nodename>
-    <nodenext>Where statement</nodenext>
-    <nodeprev>Methods and functions</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>RAM variables</title>
-      <para>Unlike regular variables, RAM variables are never written to disk. Hence using RAM variables in place of regular variables (especially within loops) significantly increases execution speed. Variables that are frequently accessed within <code>for</code> or <code>where</code> clauses provide the greatest opportunities for optimization. To declare and define a RAM variable simply prefix the variable name with an asterisk (<code>*</code>) when the variable is declared/initialized [...]
-      <example xml:space="preserve">*temp[$time,$lat,lon]=10.0;     // Cast
-*temp_avg=temp.avg($time);      // Regular assign
-temp.ram_delete();              // Delete RAM variable
-temp_avg.ram_write();           // Write Variable to output
-
-// Create and increment a RAM variable from "one" in Input
-*one++;
-// Create RAM variables from the variables three and four in Input.
-// Multiply three by 10 and add it to four.
-*four+=*three*=10; // three=30, four=34</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Where statement</nodename>
-    <nodenext>Loops</nodenext>
-    <nodeprev>RAM variables</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Where statement</title>
-      <para><indexterm index="cp">where()</indexterm>A <code>where()</code> combines the definition and application of a mask all in one go and can lead to succinct code. The full syntax of a <code>where()</code> statement is as follows:</para>
-      <example xml:space="preserve">// Single assign (the 'elsewhere' block is optional)
-where(mask)
-   var1=expr1;
-elsewhere
-   var1=expr2;
-
-// Multiple assigns
-where(mask){
-    var1=expr1;
-    var2=expr2;
-    ...
-}elsewhere{
-    var1=expr3
-    var2=expr4
-    var3=expr5;
-    ...
-}</example>
-      <itemize>
-        <itemfunction>•</itemfunction>
-        <item>
-          <para>The only expression allowed in the predicate of a where is assign, i.e., 'var=expr'. This assign differs from a regular <command>ncap2</command> assign. The LHS var must already exist in Input or Output. The RHS expression must evaluate to a scalar or a variable/attribute of the same size as the LHS variable.</para>
-        </item>
-        <item>
-          <para>Consider when both the LHS and RHS are variables: For every element where mask condition is True, the corresponding LHS variable element is re-assigned to its partner element on the RHS. In the elsewhere part the mask is logically inverted and the assign process proceeds as before.</para>
-        </item>
-        <item>
-          <para>If the mask dimensions are a subset of the LHS variable's dimensions, then it is made to conform; if it cannot be made to conform then script execution halts.</para>
-        </item>
-        <item>
-          <para>Missing values in the mask evaluate to False in the where code/block statement and to True in the elsewhere block/statement. LHS variable elements set to missing value are not re-assigned. For these reasons, do not explicitly reference missing values in the masking condition, e.g., <code>where(foo=foo.get_missing()) foo=1;</code> will not work as expected.</para>
-        </item>
-      </itemize>
-      <para>Example: Consider the variables <code>float lon_2D_rct(lat,lon);</code> and <code>float var_msk(lat,lon);</code>. Suppose we wish to multiply by two the elements for which <code>var_msk</code> equals 1<!-- /@w -->:</para>
-      <example xml:space="preserve">where(var_msk==1) lon_2D_rct=2*lon_2D_rct;</example>
-      <para>Suppose that we have the variable <code>int RDM(time)</code> and that we want to set its values less than 8 or greater than 80 to 0<!-- /@w -->:</para>
-      <example xml:space="preserve">where(RDM < 8 || RDM > 80) RDM=0;</example>
-      <para>Consider irregularly gridded data, described using rank 2<!-- /@w --> coordinates: <code>double lat(south_north,east_west)</code>, <code>double lon(south_north,east_west)</code>, <code>double temperature(south_north,east_west)</code>. To find the average temperature in a region bounded by [<var>lat_min</var>,<var>lat_max</var>] and [<var>lon_min</var>,<var>lon_max</var>]:</para>
-      <example xml:space="preserve">temperature_msk[$south_north,$east_west]=0.0;
-where(lat >= lat_min && lat <= lat_max) && (lon >= lon_min && lon <= lon_max)
-  temperature_msk=temperature;
-elsewhere
-  temperature_msk=temperature at _FillValue;
-
-temp_avg=temperature_msk.avg();
-temp_max=temperature.max();</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Loops</nodename>
-    <nodenext>Include files</nodenext>
-    <nodeprev>Where statement</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Loops</title>
-      <para><indexterm index="cp">while()</indexterm><indexterm index="cp">for()</indexterm><command>ncap</command> supplies <command>for()</command> loops and <command>while()</command> loops. They are completely unoptimized so use them only with RAM variables unless you want thrash your disk to death. To break out of a loop use the <command>break</command> command. To iterate to the next cycle use the <command>continue</command> command.</para>
-      <example xml:space="preserve">// Follwing sets elements in variable double temp(time,lat)
-// If element < 0 set to 0, if element > 100 set to 100
-*sz_idx=$time.size;
-*sz_jdx=$lat.size;
-
-for(*idx=0;idx<sz_idx;idx++)
-  for(*jdx=0;jdx<sz_jdx;jdx++)
-    if(temp(idx,jdx) > 100) temp(idx,jdx)=100.0;
-    else if(temp(idx,jdx) < 0) temp(idx,jdx)=0.0;
-
-// Are values of co-ordinate variable double lat(lat) monotonic?
-   *sz=$lat.size;
-
-   for(*idx=1;idx<sz;idx++)
-     if(lat(idx)-lat(idx-1) < 0.0)
-       break;
-
-   if(idx == sz)
-     print("lat co-ordinate is monotonic\n");
-   else
-     print("lat co-ordinate is NOT monotonic\n");
-
-// Sum odd elements
-*idx=0;
-*sz=$lat_nw.size;
-*sum=0.0;
-  while(idx<sz){
-   if(lat(idx)%2) sum+=lat(idx);
-   idx++;
-  }
-
-ram_write(sum);
-print("Total of odd elements ");print(sum);print("\n");</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Include files</nodename>
-    <nodenext>Sort methods</nodenext>
-    <nodeprev>Loops</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Include files</title>
-      <para><indexterm index="cp"><command>include</command></indexterm>The syntax of an <var>include-file</var> is:</para>
-      <example xml:space="preserve">#include "script.nco"</example>
-      <para>The script filename is searched relative to the run directory. It is possible to nest include files to an arbitrary depth. A handy use of inlcude files is to store often used constants. Use RAM variables if you do not want these constants written to <var>output-file</var>.</para>
-      <example xml:space="preserve">// script.nco
-// Sample file to #include in ncap2 script
-*pi=3.1415926535; // RAM variable, not written to output
-*h=6.62607095e-34; // RAM variable, not written to output
-e=2.71828; // Regular (disk) variable, written to output</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Sort methods</nodename>
-    <nodenext>Irregular grids</nodenext>
-    <nodeprev>Include files</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title><command>sort</command> methods</title>
-      <para>In <acronym><acronymword>ncap</acronymword></acronym> there are two ways to sort data. The first is a regular <command>sort</command>. This sorts ALL the elements of a variable or attribute without regard to any dimensions. The second method applies a sort map to a variable. To apply this sort map the size of the variable must be exactly divisible by the size of the sort map. The method <code>sort(var_in,&var_map)</code> is overloaded. The second optional argument is to s [...]
-      <example xml:space="preserve">a1[$time]={10,2,3,4,6,5,7,3,4,1};
-a1_sort=sort(a1);
-print(a1_sort);
-// 1, 2, 3, 3, 4, 4, 5, 6, 7, 10;
-
-a2[$lon]={2,1,4,3};
-a2_sort=sort(a2,&a2_map);
-print(a2);
-// 1, 2, 3, 4
-print(a2_map);
-// 1, 0, 3, 2;</example>
-      <para>If the map variable does not exist prior to the <command>sort()</command> call, then it will be created with the same shape as the input variable and be of type <code>NC_INT</code>. If the map variable already exists, then the only restriction is that it be of at least the same size as the input variable. To apply a map use <code>dsort(var_in,var_map)</code>.</para>
-      <example xml:space="preserve">defdim("nlat",5);
-
-a3[$lon]={2,5,3,7};
-a4[$nlat,$lon]={
- 1, 2, 3, 4,
- 5, 6, 7, 8,
- 9,10,11,12,
- 13,14,15,16,
- 17,18,19,20};
-
-a3_sort=sort(a3,&a3_map);
-print(a3_map);
-// 0, 2, 1, 3;
-
-a4_sort=dsort(a4,a3_map);
-print(a4_sort);
-// 1, 3, 2, 4,
-// 5, 7, 6, 8,
-// 9,11,10,12,
-// 13,15,14,16,
-// 17,19,18,20;
-
-a3_map2[$nlat]={4,3,0,2,1};
-
-a4_sort2=dsort(a4,a3_map2);
-print(a4_sort2);
-// 3, 5, 4, 2, 1
-// 8, 10, 9,7, 6,
-// 13,15,14,12,11,
-// 18,20,19,17,16</example>
-      <para>As in the above example you may create your own sort map. To sort in descending order, apply the <code>reverse()</code> method after the <command>sort()</command>.</para>
-      <para>Here is an extended example of how to use <command>ncap2</command> features to hyperslab an irregular region based on the values of a variable not a coordinate. The distinction is crucial: hyperslabbing based on dimensional indices or coordinate values is straightforward. Using the values of single or multi-dimensional variable to define a hyperslab is quite different.</para>
-      <example xml:space="preserve">cat > ~/ncap2_foo.nco << 'EOF'
-// Purpose: Save irregular 1-D regions based on variable values
-
-// Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-/* NB: Single quotes around EOF above turn off shell parameter
-    expansion in "here documents". This in turn prevents the
-    need for protecting dollarsign characters in NCO scripts with
-    backslashes when the script is cut-and-pasted (aka "moused")
-    from an editor or e-mail into a shell console window */
-
-/* Copy coordinates and variable(s) of interest into RAM variable(s)
-   Benefits:
-   1. ncap2 defines writes all variables on LHS of expression to disk
-      Only exception is RAM variables, which are stored in RAM only
-      Repeated operations on regular variables takes more time,
-      because changes are written to disk copy after every change.
-      RAM variables are only changed in RAM so script works faster
-      RAM variables can be written to disk at end with ram_write()
-   2. Script permutes variables of interest during processing
-      Safer to work with copies that have different names
-      This discourages accidental, mistaken use of permuted versions
-   3. Makes this script a more generic template:
-      var_in instead of specific variable names everywhere */
-*var_in=one_dmn_rec_var;
-*crd_in=time;
-*dmn_in_sz=$time.size; // [nbr] Size of input arrays
-
-/* Create all other "intermediate" variables as RAM variables
-   to prevent them from cluttering the output file.
-   Mask flag and sort map are same size as variable of interest */
-*msk_flg=var_in;
-*srt_map=var_in;
-
-/* In this example we mask for all values evenly divisible by 3
-   This is the key, problem-specific portion of the template
-   Replace this where() condition by that for your problem
-   Mask variable is Boolean: 1=Meets condition, 0=Fails condition */
-where(var_in % 3 == 0) msk_flg=1; elsewhere msk_flg=0;
-
-// print("msk_flg = ");print(msk_flg); // For debugging...
-
-/* The sort() routine is overloaded, and takes one or two arguments
-   The second argument (optional) is the "sort map" (srt_map below)
-   Pass the sort map by reference, i.e., prefix with an ampersand
-   If the sort map does not yet exist, then it will be created and
-   returned as an integer type the same shape as the input variable.
-   The output of sort(), on the LHS, is a sorted version of the input
-   msk_flg is not needed in its original order after sort()
-   Hence we use msk_flg as both input to and output from sort()
-   Doing this prevents the need to define a new, unneeded variable */
-msk_flg=sort(msk_flg,&srt_map);
-
-// Count number of valid points in mask by summing the one's
-*msk_nbr=msk_flg.total();
-
-// Define output dimension equal in size to number of valid points
-defdim("crd_out",msk_nbr);
-
-/* Now sort the variable of interest using the sort map and dsort()
-   The output, on the LHS, is the input re-arranged so that all points
-   meeting the mask condition are contiguous at the end of the array
-   Use same srt_map to hyperslab multiple variables of the same shape
-   Remember to apply srt_map to the coordinate variables */
-crd_in=dsort(crd_in,srt_map);
-var_in=dsort(var_in,srt_map);
-
-/* Hyperslab last msk_nbr values of variable(s) of interest */
-crd_out[crd_out]=crd_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-var_out[crd_out]=var_in((dmn_in_sz-msk_nbr):(dmn_in_sz-1));
-
-/* NB: Even though we created all variables possible as RAM variables,
-   the original coordinate of interest, time, is written to the ouput.
-   I'm not exactly sure why. For now, delete it from the output with:
-   ncks -O -x -v time ~/foo.nc ~/foo.nc
-   */
-EOF
-ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc
-ncks -O -x -v time ~/foo.nc ~/foo.nc
-ncks ~/foo.nc</example>
-      <para>Here is an extended example of how to use <command>ncap2</command> features to sort multi-dimensional arrays based on the coordinate values along a single dimension.</para>
-      <example xml:space="preserve">cat > ~/ncap2_foo.nco << 'EOF'
-/* Purpose: Sort multi-dimensional array based on coordinate values
-   This example sorts the variable three_dmn_rec_var(time,lat,lon)
-   based on the values of the time coordinate. */
-
-// Included in NCO User's Guide at http://nco.sf.net/nco.html#sort
-
-// Randomize the time coordinate
-time=10.0*gsl_rng_uniform(time);
-//print("original randomized time =\n");print(time);
-
-/* The sort() routine is overloaded, and takes one or two arguments
-   The first argument is a one dimensional array
-   The second argument (optional) is the "sort map" (srt_map below)
-   Pass the sort map by reference, i.e., prefix with an ampersand
-   If the sort map does not yet exist, then it will be created and
-   returned as an integer type the same shape as the input variable.
-   The output of sort(), on the LHS, is a sorted version of the input */
-
-time=sort(time,&srt_map);
-//print("sorted time (ascending order) and associated sort map =\n");print(time);print(srt_map);
-
-/* sort() always sorts in ascending order
-   The associated sort map therefore re-arranges the original,
-   randomized time array into ascending order.
-   There are two methods to obtain the descending order the user wants
-   1) We could solve the problem in ascending order (the default)
-   and then apply the reverse() method to re-arrange the results.
-   2) We could change the sort map to return things in descending
-   order of time and solve the problem directly in descending order. */
-
-// Following shows how to do method one:
-
-/* Expand the sort map to srt_map_3d, the size of the data array
-   1. Use data array to provide right shape for the expanded sort map
-   2. Coerce data array into an integer so srt_map_3d is an integer
-   3. Multiply data array by zero so 3-d map elements are all zero
-   4. Add the 1-d sort map to the 3-d sort map (NCO automatically resizes)
-   5. Add the spatial (lat,lon) offsets to each time index
-   6. de-sort using the srt_map_3d
-   7. Use reverse to obtain descending in time order
-   Loops could accomplish the same thing (exercise left for reader)
-   However, loops are slow for large datasets */
-
-/* Following index manipulation requires understanding correspondence
-   between 1-d (unrolled, memory order of storage) and access into that
-   memory as a multidimensional (3-d, in this case) rectangular array.
-   Key idea to understand is how dimensionality affects offsets */
-// Copy 1-d sort map into 3-d sort map
-srt_map_3d=(0*int(three_dmn_rec_var))+srt_map;
-// Multiply base offset by factorial of lesser dimensions
-srt_map_3d*=$lat.size*$lon.size;
-lon_idx=array(0,1,$lon);
-lat_idx=array(0,1,$lat)*$lon.size;
-lat_lon_idx[$lat,$lon]=lat_idx+lon_idx;
-srt_map_3d+=lat_lon_idx;
-
-print("sort map 3d =\n");print(srt_map_3d);
-
-// Use dsort() to "de-sort" the data using the sort map
-three_dmn_rec_var=dsort(three_dmn_rec_var,srt_map_3d);
-
-// Finally, reverse data so time coordinate is descending
-time=time.reverse($time);
-//print("sorted time (descending order) =\n");print(time);
-three_dmn_rec_var=three_dmn_rec_var.reverse($time);
-
-// Method two: Key difference is srt_map=$time.size-srt_map-1;
-EOF
-ncap2 -O -v -S ~/ncap2_foo.nco ~/nco/data/in.nc ~/foo.nc</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Irregular grids</nodename>
-    <nodenext>Bilinear interpolation</nodenext>
-    <nodeprev>Sort methods</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Irregular Grids</title>
-      <para><indexterm index="cp">irregular grids</indexterm><indexterm index="cp">rectangular grids</indexterm><indexterm index="cp">non-rectangular grids</indexterm><indexterm index="cp">non-standard grids</indexterm><indexterm index="cp">mask</indexterm>
-<!-- fxm need to edit rrg sxn beginning here --><acronym><acronymword>NCO</acronymword></acronym> is capable of analyzing datasets for many different underlying coordinate grid types. netCDF was developed for and initially used with grids comprised of orthogonal dimensions forming a rectangular coordinate system. We call such grids <emph>standard</emph> grids. It is increasingly common for datasets to use metadata to describe much more complex grids. Let us first define three important c [...]
-      <para>Grids are <emph>regular</emph> if the spacing between adjacent is constant. For example, a 4-by-5 degree latitude-longitude grid is regular because the spacings between adjacent latitudes (4 degrees<!-- /@w -->) are constant as are the (5 degrees<!-- /@w -->) spacings between adjacent longitudes. Spacing in <emph>irregular</emph> grids depends on the location along the coordinate. Grids such as Gaussian grids have uneven spacing in latitude (points cluster near the equator) a [...]
-      <para>Grids are <emph>rectangular</emph> if the number of elements in any dimension is not a function of any other dimension. For example, a T42 Gaussian latitude-longitude grid is rectangular because there are the same number of longitudes (128) for each of the (64) latitudes. Grids are <emph>non-rectangular</emph> if the elements in any dimension depend on another dimension. Non-rectangular grids present many special challenges to analysis software like <acronym><acronymword>NCO< [...]
-      <para>Wrapped coordinates (see <xref><xrefnodename>Wrapped Coordinates</xrefnodename></xref>), such as longitude, are independent of these grid properties (regularity, rectangularity).</para>
-      <para><indexterm index="cp">wrapped coordinates</indexterm>The preferred <acronym><acronymword>NCO</acronymword></acronym> technique to analyze data on non-standard coordinate grids is to create a region mask with <command>ncap2</command>, and then to use the mask within <command>ncap2</command> for variable-specific processing, and/or with other operators (e.g., <command>ncwa</command>, <command>ncdiff</command>) for entire file processing.</para>
-      <para>Before describing the construction of masks, let us review how irregularly gridded geoscience data are described. Say that latitude and longitude are stored as <var>R</var>-dimensional arrays and the product of the dimension sizes is the total number of elements N in the other variables. Geoscience applications tend to use <math><var>R</var>=1</math>, <math><var>R</var>=2</math>, and <math><var>R</var>=3</math>.</para>
-      <para>If the grid is has no simple representation (e.g., discontinuous) then it makes sense to store all coordinates as 1D arrays with the same size as the number of grid points. These gridpoints can be completely independent of all the other (own weight, area, etc.).</para>
-      <para><var>R</var>=1: lat(number_of_gridpoints) and lon(number_of_gridpoints)</para>
-      <para>If the horizontal grid is time-invariant then <var>R</var>=2 is common:</para>
-      <para><var>R</var>=2: lat(south_north,east_west) and lon(south_north,east_west)</para>
-      <para>The Weather and Research Forecast (<acronym><acronymword>WRF</acronymword></acronym>) model uses <var>R</var>=3:</para>
-      <para><var>R</var>=3: lat(time,south_north,east_west), lon(time,south_north,east_west)</para>
-      <para>and so supports grids that change with time.</para>
-      <para>Grids with <var>R</var> > 1 often use missing values to indicated empty points. For example, so-called "staggered grids" will use fewer east_west points near the poles and more near the equator. netCDF only accepts rectangular arrays so space must be allocated for the maximum number of east_west points at all latitudes. Then the application writes missing values into the unused points near the poles.</para>
-      <para>We demonstrate the <command>ncap2</command> analysis technique for irregular regions by constructing a mask for an <var>R</var>=2 grid. We wish to find, say, the mean temperature within [<var>lat_min</var>,<var>lat_max</var>] and [<var>lon_min</var>,<var>lon_max</var>]:</para>
-      <example xml:space="preserve">ncap2 -s 'mask_var= (lat >= lat_min && lat <= lat_max) && \
-                    (lon >= lon_min && lon <= lon_max);' in.nc out.nc</example>
-      <para>Arbitrarily shaped regions can be defined by more complex conditional statements. Once defined, masks can be applied to specific variables, and to entire files:</para>
-      <example xml:space="preserve">ncap2 -s 'temperature_avg=(temperature*mask_var).avg()' in.nc out.nc
-ncwa -a lat,lon -m mask_var -w area in.nc out.nc</example>
-      <para>Crafting such commands on the command line is possible though unwieldy. In such cases, a script is often cleaner and allows you to document the procedure:</para>
-      <example xml:space="preserve">cat > ncap2.in << 'EOF'
-mask_var = (lat >= lat_min && lat <= lat_max) && (lon >= lon_min && > lon <= lon_max);
-if(mask_var.total() > 0){ // Check that mask contains some valid values
-  temperature_avg=(temperature*mask_var).avg(); // Average temperature
-  temperature_max=(temperature*mask_var).max(); // Maximum temperature
-}
-EOF
-ncap2 -S ncap2.in in.nc out.nc</example>
-      <para>For <acronym><acronymword>WRF</acronymword></acronym> files creating regional masks looks like</para>
-      <example xml:space="preserve">mask_var = (XLAT >= lat_min && XLAT <= lat_max) && (XLONG >= lon_min && > XLONG <= lon_max);</example>
-      <para>In practice with WRF it's a bit more complicated because you must use the global metadata to determine the grid staggering and offsets to translate XLAT and XLONG into real latitudes and longitudes and missing points. The WRF grid documentation should describe this.</para>
-      <para>A few notes: Irregular regions are the union of arrays lat/lon_min/max's. The mask procedure is identical for all <var>R</var>. 
-<!-- fxm need to edit rrg sxn down to here --></para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Bilinear interpolation</nodename>
-    <nodenext>GSL special functions</nodenext>
-    <nodeprev>Irregular grids</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Bilinear interpolation</title>
-      <para role="continues">As of version 4.0.0 <acronym><acronymword>NCO</acronymword></acronym> has internal routines to perform bilinear interpolation on gridded data sets. In mathematics, bilinear interpolation is an extension of linear interpolation for interpolating functions of two variables on a regular grid. The idea is to perform linear interpolation first in one direction, and then again in the other direction.</para>
-      <para>Suppose we have an irregular grid of data <code>temperature[lat,lon]</code>, with co-ordinate vars <code>lat[lat], lon[lon]</code>. We wish to find the temperature at an arbitary point [<var>X</var>,<var>Y</var>] within the grid. If we can locate lat_min,lat_max and lon_min,lon_max such that <code>lat_min <= X <= lat_max</code> and <code>lon_min <=Y <=lon_max</code> then we can interpolate in two dimensions to find the temperature at [<var>X</var>,<var>Y</var>].</para>
-      <para>The general form of the <command>ncap2</command> interpolation function is</para>
-      <example xml:space="preserve">var_out=bilinear_interp(grid_in,grid_out,grid_out_x,grid_out_y,grid_in_x,grid_in_y)</example>
-      <para>where</para>
-      <table>
-        <tableitem>
-          <tableterm><code>grid_in</code></tableterm>
-          <item>
-            <para>Input function data. Usually a two dimensional variable. It must be of size <code>grid_in_x.size()*grid_in_y.size()</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>grid_out</code></tableterm>
-          <item>
-            <para>This variable is the shape of <code>var_out</code>. Usually a two dimensional variable. It must be of size <code>grid_out_x.size()*grid_out_y.size()</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>grid_out_x</code></tableterm>
-          <item>
-            <para><var>X</var> output values</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>grid_out_y</code></tableterm>
-          <item>
-            <para><var>Y</var> output values</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>grid_in_x</code></tableterm>
-          <item>
-            <para><var>X</var> input values values. Must be montonic (increasing or decreasing).</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>grid_in_y</code></tableterm>
-          <item>
-            <para><var>Y</var> input values values. Must be montonic (increasing or decreasing).</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">Prior to calculations all arguments are converted to type <code>NC_DOUBLE</code>. After calculations <code>var_out</code> is converted to the input type of <code>grid_in</code>.</para>
-      <para>Suppose the first part of an ncap2 script is</para>
-      <example xml:space="preserve">defdim("X",4);
-defdim("Y",5);
-
-// Temperature
-T_in[$X,$Y]=
- {100, 200, 300, 400, 500,
-  101, 202, 303, 404, 505,
-  102, 204, 306, 408, 510,
-  103, 206, 309, 412, 515.0 };
-
-// Coordinate variables
-x_in[$X]={0.0,1.0,2.0,3.01};
-y_in[$Y]={1.0,2.0,3.0,4.0,5};</example>
-      <para>Now we interpolate with the following variables:</para>
-      <example xml:space="preserve">defdim("Xn",3);
-defdim("Yn",4);
-T_out[$Xn,$Yn]=0.0;
-x_out[$Xn]={0.0,0.02,3.01};
-y_out[$Yn]={1.1,2.0,3,4};
-
-var_out=bilinear_interp(T_in,T_out,x_out,y_out,x_in,y_in);
-print(var_out);
-// 110, 200, 300, 400,
-// 110.022, 200.04, 300.06, 400.08,
-// 113.3, 206, 309, 412 ;</example>
-      <para>It is possible to interpolate a single point:</para>
-      <example xml:space="preserve">var_out=bilinear_interp(T_in,0.0,3.0,4.99,x_in,y_in);
-print(var_out);
-// 513.920594059406</example>
-      <para role="continues"><strong>Wrapping and Extrapolation</strong> &linebreak; The function <code>bilinear_interp_wrap()</code> takes the same arguments as <code>bilinear_interp()</code> but performs wrapping (<var>Y</var>) and extrapolation (<var>X</var>) for points off the edge of the grid. If the given range of longitude is say (25-335) and we have a point at 20 degrees, then the endpoints of the range are used for the interpolation. This is what wrapping means. For wrapping to  [...]
-      <example xml:space="preserve">defdim("lat_in",6);
-defdim("lon_in",5);
-
-// Coordinate input vars
-lat_in[$lat_in]={-80,-40,0,30,60.0,85.0};
-lon_in[$lon_in]={30, 110, 190, 270, 350.0};
-
-T_in[$lat_in,$lon_in]=
-  {10,40,50,30,15,
-    12,43,52,31,16,
-    14,46,54,32,17,
-    16,49,56,33,18,
-    18,52,58,34,19,
-    20,55,60,35,20.0 };
-
-defdim("lat_out",4);
-defdim("lon_out",3);
-
-// Coordinate variables
-lat_out[$lat_out]={-90,0,70,88.0};
-lon_out[$lon_out]={0,190,355.0};
-
-T_out[$lat_out,$lon_out]=0.0;
-
-T_out=bilinear_interp_wrap(T_in,T_out,lat_out,lon_out,lat_in,lon_in);
-print(T_out);
-// 13.4375, 49.5, 14.09375,
-// 16.25, 54, 16.625,
-// 19.25, 58.8, 19.325,
-// 20.15, 60.24, 20.135 ;</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>GSL special functions</nodename>
-    <nodenext>GSL interpolation</nodenext>
-    <nodeprev>Bilinear interpolation</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>GSL special functions</title>
-      <para role="continues"><indexterm index="cp"><acronym><acronymword>GSL</acronymword></acronym></indexterm>As of version 3.9.6 (released January, 2009), <acronym><acronymword>NCO</acronymword></acronym> can link to the GNU Scientific Library (<acronym><acronymword>GSL</acronymword></acronym>). <command>ncap</command> can access most <acronym><acronymword>GSL</acronymword></acronym> special functions including Airy, Bessel, error, gamma, beta, hypergeometric, and Legendre functions a [...]
-      <para role="continues">The function names used by <acronym><acronymword>ncap2</acronymword></acronym> mirror their <acronym><acronymword>GSL</acronymword></acronym> names. The <acronym><acronymword>NCO</acronymword></acronym> wrappers for <acronym><acronymword>GSL</acronymword></acronym> functions automatically call the error-handling version of the <acronym><acronymword>GSL</acronymword></acronym> function when available <footnote><para> These are the <acronym><acronymword>GSL</ac [...]
-      <para><indexterm index="cp">gamma function</indexterm><indexterm index="cp"><var>gsl_sf_gamma</var></indexterm>Consider the gamma function.&linebreak; The <acronym><acronymword>GSL</acronymword></acronym> function prototype is &linebreak; <code>int gsl_sf_gamma_e(const double x, gsl_sf_result * result)</code> The <command>ncap</command> script would be:</para>
-      <example xml:space="preserve">lon_in[lon]={-1,0.1,0,2,0.3};
-lon_out=gsl_sf_gamma(lon_in);
-lon_out= _, 9.5135, 4.5908, 2.9915</example>
-      <para role="continues">The first value is set to <code>_FillValue</code> since the gamma function is undefined for negative integers. If the input variable has a missing value then this value is used. Otherwise, the default double fill value is used (defined in the netCDF header <file>netcdf.h</file> as <code>NC_FILL_DOUBLE = 9.969e+36</code>).</para>
-      <para><indexterm index="cp">Bessel function</indexterm><indexterm index="cp"><var>gsl_sf_bessel_Jn</var></indexterm>Consider a call to a Bessel function with <acronym><acronymword>GSL</acronymword></acronym> prototype&linebreak; <code>int gsl_sf_bessel_Jn_e(int n, double x, gsl_sf_result * result)</code></para>
-      <para role="continues">An <command>ncap</command> script would be</para>
-      <example xml:space="preserve">lon_out=gsl_sf_bessel_Jn(2,lon_in);
-lon_out=0.11490, 0.0012, 0.00498, 0.011165</example>
-      <para>This computes the Bessel function of order <var>n=2</var> for every value in <code>lon_in</code>. The Bessel order argument, an integer, can also be a non-scalar variable, i.e., an array.</para>
-      <example xml:space="preserve">n_in[lon]={0,1,2,3};
-lon_out=gsl_sf_bessel_Jn(n_in,0.5);
-lon_out= 0.93846, 0.24226, 0.03060, 0.00256</example>
-      <para role="continues">Arguments to <acronym><acronymword>GSL</acronymword></acronym> wrapper functions in <command>ncap</command> must conform to one another, i.e., they must share the same sub-set of dimensions. For example: <code>three_out=gsl_sf_bessel_Jn(n_in,three_dmn_var_dbl)</code> is valid because the variable <code>three_dmn_var_dbl</code> has a <var>lon</var> dimension, so <code>n_in</code> in can be broadcast to conform to <code>three_dmn_var_dbl</code>. However <code>t [...]
-      <para><indexterm index="cp">Elliptic integrals</indexterm>Consider the elliptical integral with prototype <code>int gsl_sf_ellint_RD_e(double x, double y, double z, gsl_mode_t mode, gsl_sf_result * result)</code></para>
-      <example xml:space="preserve">three_out=gsl_sf_ellint_RD(0.5,time,three_dmn_var_dbl);</example>
-      <para role="continues">The three arguments are all conformable so the above <command>ncap</command> call is valid. The mode argument in the function prototype controls the convergence of the algorithm. It also appears  in the Airy Function prototypes. It can be set by defining the environment variable <code>GSL_PREC_MODE</code>. If unset it defaults to the value <code>GSL_PREC_DOUBLE</code>. See the <acronym><acronymword>GSL</acronymword></acronym> manual for more details.</para>
-      <example xml:space="preserve">export GSL_PREC_MODE=0 // GSL_PREC_DOUBLE
-export GSL_PREC_MODE=1 // GSL_PREC_SINGLE
-export GSL_PREC_MODE=2 // GSL_PREC_APPROX</example>
-      <para role="continues">The <command>ncap</command> wrappers to the array functions are slightly different. Consider the following <acronym><acronymword>GSL</acronymword></acronym> prototype &linebreak; <code>int gsl_sf_bessel_Jn_array(int nmin, int nmax, double x, double *result_array)</code></para>
-      <example xml:space="preserve">b1=lon.double();
-x=0.5;
-status=gsl_sf_bessel_Jn_array(1,4,x,&b1);
-print(status);
-b1=0.24226,0.0306,0.00256,0.00016;</example>
-      <para role="continues">This calculates the Bessel function of <var>x</var>=0.5 for <var>n</var>=1 to 4. The first three arguments are scalar values. If a non-scalar variable is supplied as an argument then only the first value is used. The final argument is the variable where the results are stored (NB: the <code>&</code> indicates this is a call by reference). This final argument must be of type <code>double</code> and must be of least size <var>nmax-nmin+1</var>. If either of [...]
-      <para role="continues">Consider another array function &linebreak; <code>int gsl_sf_legendre_Pl_array( int lmax, double x, double *result_array);</code> <indexterm index="cp">Legendre polynomial</indexterm><indexterm index="cp">gsl_sf_legendre_Pl</indexterm></para>
-      <example xml:space="preserve">a1=time.double();
-x=0.3;
-status=gsl_sf_legendre_Pl_array(a1.size()-1, x,&a1);
-print(status);</example>
-      <para role="continues">This call calculates <var>P_l</var>(0.3) for <var>l</var>=0..9. Note that <var>|x|<=1</var>, otherwise there will be a domain error. See the <acronym><acronymword>GSL</acronymword></acronym> documentation for more details.</para>
-      <para role="continues">The <acronym><acronymword>GSL</acronymword></acronym> functions implemented in <acronym><acronymword>NCO</acronymword></acronym> are listed in the table below. This table is correct for <acronym><acronymword>GSL</acronymword></acronym> version 1.10. To see what functions are available on your build run the command <command>ncap2 -f |grep ^gsl</command> . To see this table along with the <acronym><acronymword>GSL</acronymword></acronym> C-function<!-- /@w -->  [...]
-      <multitable>
-        <columnfraction>35</columnfraction>
-        <columnfraction>5</columnfraction>
-        <columnfraction>60</columnfraction>
-        <tbody>
-          <row>
-            <entry><strong>GSL NAME</strong></entry>
-            <entry><strong>I</strong></entry>
-            <entry><strong>NCAP FUNCTION CALL</strong></entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Ai_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Ai(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Bi_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Bi(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Ai_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Ai_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Bi_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Bi_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Ai_deriv_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Ai_deriv(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Bi_deriv_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Bi_deriv(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Ai_deriv_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Ai_deriv_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_Bi_deriv_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_Bi_deriv_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_zero_Ai_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_zero_Ai(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_zero_Bi_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_zero_Bi(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_zero_Ai_deriv_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_zero_Ai_deriv(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_airy_zero_Bi_deriv_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_airy_zero_Bi_deriv(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_J0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_J0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_J1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_J1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Jn_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Jn(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Jn_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_Jn_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Y0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Y0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Y1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Y1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Yn_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Yn(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Yn_array</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Yn_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_I0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_I0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_I1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_I1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_In_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_In(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_In_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_In_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_I0_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_I0_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_I1_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_I1_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_In_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_In_scaled(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_In_scaled_array</entry>
-            <entry>Y</entry>
-            <entry>staus=gsl_sf_bessel_In_scaled_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_K0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_K0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_K1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_K1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Kn_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Kn(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Kn_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_Kn_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_K0_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_K0_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_K1_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_K1_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Kn_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Kn_scaled(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Kn_scaled_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_Kn_scaled_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_j0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_J0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_j1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_J1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_j2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_j2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_jl_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_jl(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_jl_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_jl_array(int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_jl_steed_array</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_jl_steed_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_y0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Y0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_y1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Y1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_y2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_y2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_yl_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_yl(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_yl_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_yl_array(int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_i0_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_I0_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_i1_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_I1_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_i2_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_i2_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_il_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_il_scaled(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_il_scaled_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_il_scaled_array(int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_k0_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_K0_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_k1_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_K1_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_k2_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_k2_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_kl_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_kl_scaled(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_kl_scaled_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_bessel_kl_scaled_array(int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Jnu_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Jnu(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Ynu_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Ynu(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_sequence_Jnu_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_bessel_sequence_Jnu</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Inu_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Inu_scaled(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Inu_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Inu(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Knu_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Knu_scaled(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_Knu_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_Knu(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_lnKnu_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_lnKnu(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_zero_J0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_zero_J0(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_zero_J1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_bessel_zero_J1(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_bessel_zero_Jnu_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_bessel_zero_Jnu</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_clausen_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_clausen(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hydrogenicR_1_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_hydrogenicR_1</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hydrogenicR_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_hydrogenicR</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_wave_FG_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_wave_FG</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_wave_F_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_wave_F_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_wave_FG_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_wave_FG_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_wave_FGp_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_wave_FGp_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_wave_sphF_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_wave_sphF_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_CL_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_CL</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coulomb_CL_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coulomb_CL_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coupling_3j_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coupling_3j</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coupling_6j_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coupling_6j</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coupling_RacahW_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coupling_RacahW</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coupling_9j_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coupling_9j</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_coupling_6j_INCORRECT_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_coupling_6j_INCORRECT</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_dawson_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_dawson(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_debye_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_debye_1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_debye_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_debye_2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_debye_3_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_debye_3(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_debye_4_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_debye_4(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_debye_5_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_debye_5(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_debye_6_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_debye_6(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_dilog_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_dilog</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_dilog_xy_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_dilog_xy_e</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_dilog_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_dilog</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_spence_xy_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_spence_xy_e</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_multiply_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_multiply</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_multiply_err_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_multiply_err</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_Kcomp_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_Kcomp(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_Ecomp_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_Ecomp(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_Pcomp_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_Pcomp(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_Dcomp_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_Dcomp(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_F_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_F(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_E_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_E(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_P_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_P(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_D_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_D(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_RC_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_RC(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_RD_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_RD(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_RF_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_RF(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_ellint_RJ_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_ellint_RJ(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_elljac_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_elljac</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_erfc_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_erfc(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_log_erfc_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_log_erfc(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_erf_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_erf(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_erf_Z_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_erf_Z(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_erf_Q_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_erf_Q(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hazard_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hazard(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_exp(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_e10_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_exp_e10</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_mult_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_exp_mult(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_mult_e10_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_exp_mult_e10</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expm1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expm1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exprel_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_exprel(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exprel_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_exprel_2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exprel_n_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_exprel_n(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_err_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_exp_err(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_err_e10_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_exp_err_e10</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_mult_err_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_exp_mult_err</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_exp_mult_err_e10_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_exp_mult_err_e10</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_E1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_E1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_E2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_E2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_En_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_En(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_E1_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_E1_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_E2_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_E2_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_En_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_En_scaled(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_Ei_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_Ei(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_Ei_scaled_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_Ei_scaled(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_Shi_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_Shi(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_Chi_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_Chi(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_expint_3_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_expint_3(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_Si_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_Si(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_Ci_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_Ci(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_atanint_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_atanint(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_m1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_m1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_int(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_mhalf_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_mhalf(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_half_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_half(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_3half_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_3half(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fermi_dirac_inc_0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fermi_dirac_inc_0(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lngamma_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lngamma(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lngamma_sgn_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lngamma_sgn</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gamma_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gamma(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gammastar_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gammastar(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gammainv_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gammainv(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lngamma_complex_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lngamma_complex</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_taylorcoeff_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_taylorcoeff(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_fact_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_fact(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_doublefact_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_doublefact(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnfact_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lnfact(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lndoublefact_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lndoublefact(uint_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnchoose_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lnchoose</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_choose_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_choose</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnpoch_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lnpoch(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnpoch_sgn_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lnpoch_sgn</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_poch_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_poch(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_pochrel_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_pochrel(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gamma_inc_Q_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gamma_inc_Q(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gamma_inc_P_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gamma_inc_P(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gamma_inc_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gamma_inc(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnbeta_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lnbeta(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnbeta_sgn_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lnbeta_sgn</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_beta_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_beta(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_beta_inc_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_beta_inc</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gegenpoly_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gegenpoly_1(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gegenpoly_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gegenpoly_2(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gegenpoly_3_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gegenpoly_3(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gegenpoly_n_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_gegenpoly_n</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_gegenpoly_array</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_gegenpoly_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_0F1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_0F1(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_1F1_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_1F1_int(int_expr,int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_1F1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_1F1(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_U_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_U_int(int_expr,int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_U_int_e10_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_hyperg_U_int_e10</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_U_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_U(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_U_e10_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_hyperg_U_e10</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_2F1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_2F1(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_2F1_conj_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_2F1_conj(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_2F1_renorm_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_2F1_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_2F1_conj_renorm_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_2F1_conj_renorm(dbl_expr,dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hyperg_2F0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hyperg_2F0(dbl_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_laguerre_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_laguerre_1(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_laguerre_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_laguerre_2(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_laguerre_3_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_laguerre_3(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_laguerre_n_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_laguerre_n(int_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lambert_W0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lambert_W0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lambert_Wm1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_lambert_Wm1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Pl_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_Pl(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Pl_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_legendre_Pl_array(int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Pl_deriv_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_legendre_Pl_deriv_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_P1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_P1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_P2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_P2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_P3_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_P3(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Q0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_Q0(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Q1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_Q1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Ql_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_Ql(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Plm_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_Plm(int_expr,int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Plm_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_legendre_Plm_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_Plm_deriv_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_legendre_Plm_deriv_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_sphPlm_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_sphPlm(int_expr,int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_sphPlm_array</entry>
-            <entry>Y</entry>
-            <entry>status=gsl_sf_legendre_sphPlm_array(int,int,double,&var_out)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_sphPlm_deriv_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_legendre_sphPlm_deriv_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_array_size</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_legendre_array_size</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_conicalP_half_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_conicalP_half(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_conicalP_mhalf_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_conicalP_mhalf(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_conicalP_0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_conicalP_0(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_conicalP_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_conicalP_1(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_conicalP_sph_reg_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_conicalP_sph_reg(int_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_conicalP_cyl_reg_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_conicalP_cyl_reg(int_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_H3d_0_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_H3d_0(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_H3d_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_H3d_1(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_H3d_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_legendre_H3d(int_expr,dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_H3d_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_legendre_H3d_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_legendre_array_size</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_legendre_array_size</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_log_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_log(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_log_abs_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_log_abs(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_log_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_log</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_log_1plusx_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_log_1plusx(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_log_1plusx_mx_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_log_1plusx_mx(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_a_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_a_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_b_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_b_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_a</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_a</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_b</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_b</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_a_coeff</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_a_coeff</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_b_coeff</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_b_coeff</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_ce</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_ce</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_se</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_se</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_ce_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_ce_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_se_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_se_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_Mc</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_Mc</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_Ms</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_Ms</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_Mc_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_Mc_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_mathieu_Ms_array</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_mathieu_Ms_array</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_pow_int_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_pow_int</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_psi_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_psi_int(int_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_psi_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_psi(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_psi_1piy_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_psi_1piy(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_psi_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_psi</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_psi_1_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_psi_1_int(int_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_psi_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_psi_1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_psi_n_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_psi_n(int_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_synchrotron_1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_synchrotron_1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_synchrotron_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_synchrotron_2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_transport_2_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_transport_2(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_transport_3_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_transport_3(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_transport_4_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_transport_4(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_transport_5_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_transport_5(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_sin_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_sin</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_cos_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_cos</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hypot_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_hypot</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_sin_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_sin</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_cos_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_cos</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_complex_logsin_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_complex_logsin</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_sinc_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_sinc</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lnsinh_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lnsinh</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_lncosh_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_lncosh</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_polar_to_rect</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_polar_to_rect</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_rect_to_polar</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_rect_to_polar</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_sin_err_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_sin_err</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_cos_err_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_cos_err</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_angle_restrict_symm_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_angle_restrict_symm</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_angle_restrict_pos_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_angle_restrict_pos</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_angle_restrict_symm_err_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_angle_restrict_symm_err</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_angle_restrict_pos_err_e</entry>
-            <entry>N</entry>
-            <entry>gsl_sf_angle_restrict_pos_err</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_zeta_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_zeta_int(int_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_zeta_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_zeta(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_zetam1_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_zetam1(dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_zetam1_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_zetam1_int(int_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_hzeta_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_hzeta(dbl_expr,dbl_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_eta_int_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_eta_int(int_expr)</entry>
-          </row>
-          <row>
-            <entry>gsl_sf_eta_e</entry>
-            <entry>Y</entry>
-            <entry>gsl_sf_eta(dbl_expr)</entry>
-          </row>
-        </tbody>
-      </multitable>
-    </subsection>
-  </node>
-  <node>
-    <nodename>GSL interpolation</nodename>
-    <nodenext>GSL least-squares fitting</nodenext>
-    <nodeprev>GSL special functions</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>GSL interpolation</title>
-      <para><indexterm index="cp"><acronym><acronymword>GSL</acronymword></acronym></indexterm>As of version 3.9.9 (released July, 2009), <acronym><acronymword>NCO</acronymword></acronym> has wrappers to the <acronym><acronymword>GSL</acronymword></acronym> interpolation functions.</para>
-      <para role="continues">Given a set of data points (x1,y1)...(xn, yn) the <acronym><acronymword>GSL</acronymword></acronym> functions computes a continuous interpolating function <acronym><acronymword>Y(x)</acronymword></acronym> such that <acronym><acronymword>Y(xi) = yi</acronymword></acronym>. The interpolation is piecewise smooth, and its behavior at the end-points is determined by the type of interpolation used. For more information consult the <acronym><acronymword>GSL</acrony [...]
-      <para role="continues">Interpolation with <command>ncap2</command> is a two stage process. In the first stage, a ram variable is created from the chosen interpolating function and the data set. This ram variable holds in memory a <acronym><acronymword>GSL</acronymword></acronym> interpolation object. In the second stage, points along the interpolating function are calculated. If you have a very large data set or are interpolating many sets then consider deleting the ram variable wh [...]
-      <para role="continues">A simple example</para>
-      <example xml:space="preserve">x_in[$lon]={1.0,2.0,3.0,4.0};
-y_in[$lon]={1.1,1.2,1.5,1.8};
-
-// Ram variable is declared and defined here
-gsl_interp_cspline(&ram_sp,x_in,y_in);
-
-x_out[$lon_grd]={1.1,2.0,3.0,3.1,3.99};
-
-y_out=gsl_spline_eval(ram_sp,x_out);
-y2=gsl_spline_eval(ram_sp,1.3);
-y3=gsl_spline_eval(ram_sp,0.0);
-ram_delete(ram_sp);
-
-print(y_out);   // 1.10472, 1.2, 1.4, 1.42658, 1.69680002
-print(y2);      // 1.12454
-print(y3);      // '_'
-</example>
-      <para role="continues">Note in the above example y3 is set to 'missing value' because 0.0 isn't within the input X range.</para>
-      <para><strong> <acronym><acronymword>GSL</acronymword></acronym> Interpolation Types </strong> &linebreak; All the interpolation functions have been implemented. These are: &linebreak; gsl_interp_linear() &linebreak; gsl_interp_polynomial() &linebreak; gsl_interp_cspline()&linebreak; gsl_interp_cspline_periodic()&linebreak; gsl_interp_akima() &linebreak; gsl_interp_akima_periodic() &linebreak;</para>
-      <para role="continues">&linebreak; &linebreak; <strong> Evaluation of Interpolating Types </strong> &linebreak; <strong>Implemented</strong> &linebreak; gsl_spline_eval() &linebreak; <strong>Unimplemented</strong> &linebreak; gsl_spline_deriv() &linebreak; gsl_spline_deriv2() &linebreak; gsl_spline_integ() &linebreak;</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>GSL least-squares fitting</nodename>
-    <nodenext>GSL statistics</nodenext>
-    <nodeprev>GSL interpolation</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>GSL least-squares fitting</title>
-      <para role="continues">Least Squares fitting is a method of calculating a straight line through a set of experimental data points in the XY plane. The data maybe weighted or unweighted. For more information please refer to the <acronym><acronymword>GSL</acronymword></acronym> manual.</para>
-      <para role="continues">These <acronym><acronymword>GSL</acronymword></acronym> functions fall into three categories:&linebreak; <strong>A)</strong> Fitting data to Y=c0+c1*X&linebreak; <strong>B)</strong> Fitting data (through the origin) Y=c1*X&linebreak; <strong>C)</strong> Multi-parameter fitting (not yet implemented)&linebreak;</para>
-      <para><strong>Section A</strong> &linebreak; &linebreak; <code>status=<strong>gsl_fit_linear</strong> (data_x,stride_x,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&sumsq) </code></para>
-      <para role="continues"><strong>Input variables</strong>: data_x, stride_x, data_y, stride_y, n &linebreak; From the above variables an X and Y vector both of length 'n' are derived. If data_x or data_y is less than type double then it is converted to type <code>double</code>. It is up to you to do bounds checking on the input data. For example if stride_x=3 and n=8 then the size of data_x must be at least 24</para>
-      <para role="continues"><strong>Output variables</strong>: c0, c1, cov00, cov01, cov11,sumsq &linebreak; The '&' prefix indicates that these are call-by-reference variables. If any of the output variables don't exist prior to the call then they are created on the fly as scalar variables of type <code>double</code>. If they already exist then their existing value is overwritten. If the function call is successful then <code>status=0</code>.</para>
-      <para><code>status= <strong>gsl_fit_wlinear</strong>(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&chisq) </code></para>
-      <para role="continues">Similar to the above call except it creates an additional weighting vector from the variables data_w, stride_w, n</para>
-      <para><code> data_y_out=<strong>gsl_fit_linear_est</strong>(data_x,c0,c1,cov00,cov01,cov11) </code></para>
-      <para role="continues">This function calculates y values along the line Y=c0+c1*X &linebreak; &linebreak;</para>
-      <para><strong>Section B</strong> &linebreak; &linebreak; <code>status=<strong>gsl_fit_mul</strong>(data_x,stride_x,data_y,stride_y,n,&c1,&cov11,&sumsq) </code></para>
-      <para role="continues"><strong>Input variables</strong>: data_x, stride_x, data_y, stride_y, n &linebreak; From the above variables an X and Y vector both of length 'n' are derived. If data_x or data_y is less than type <code>double</code> then it is converted to type <code>double</code>. &linebreak;</para>
-      <para role="continues"><strong>Output variables</strong>: c1,cov11,sumsq &linebreak;</para>
-      <para><code>status= <strong>gsl_fit_wmul</strong>(data_x,stride_x,data_w,stride_w,data_y,stride_y,n,&c1,&cov11,&sumsq) </code></para>
-      <para role="continues">Similar to the above call except it creates an additional weighting vector from the variables data_w, stride_w, n</para>
-      <para><code> data_y_out=<strong>gsl_fit_mul_est</strong>(data_x,c0,c1,cov11) </code></para>
-      <para role="continues">This function calculates y values along the line Y=c1*X &linebreak; &linebreak;</para>
-      <para role="continues">The below example shows <strong>gsl_fit_linear()</strong> in action</para>
-      <example xml:space="preserve">defdim("d1",10);
-xin[d1]={1,2,3,4,5,6,7,8,9,10.0};
-yin[d1]={3.1,6.2,9.1,12.2,15.1,18.2,21.3,24.0,27.0,30.0};
-gsl_fit_linear(xin,1,yin,1,$d1.size,&c0,&c1,&cov00,&cov01,&cov11,&sumsq);
-print(c0);  // 0.2
-print(c1);  // 2.98545454545
-
-
-defdim("e1",4);
-xout[e1]={1.0,3.0,4.0,11};
-yout[e1]=0.0;
-
-yout=gsl_fit_linear_est(xout, c0,c1, cov00,cov01, cov11, sumsq);
-
-print(yout);  // 3.18545454545 ,9.15636363636, ,12.1418181818 ,33.04</example>
-      <para>&linebreak; &linebreak;</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>GSL statistics</nodename>
-    <nodenext>GSL random number generation</nodenext>
-    <nodeprev>GSL least-squares fitting</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>GSL statistics</title>
-      <para role="continues">Wrappers for most of the <acronym><acronymword>GSL</acronymword></acronym> Statistical functions have been implemented. The <acronym><acronymword>GSL</acronymword></acronym> function names include a type specifier (except for type double functions). To obtain the equivalent <acronym><acronymword>NCO</acronymword></acronym> name simply remove the type specifier; then depending on the data type the appropriate <acronym><acronymword>GSL</acronymword></acronym> f [...]
-      <para role="continues"><acronym><acronymword>GSL</acronymword></acronym> Functions</para>
-      <example xml:space="preserve">short gsl_stats_max (short data[], size_t stride, size_t n);
-double gsl_stats_int_mean (int data[], size_t stride, size_t n);
-double gsl_stats_short_sd_with_fixed_mean (short data[], size_t stride, size_t n, double mean);
-double gsl_stats_wmean (double w[], size_t wstride, double data[], size_t stride, size_t n);
-double gsl_stats_quantile_from_sorted_data (double sorted_data[], size_t stride, size_t n, double f) ;</example>
-      <para role="continues">Equivalent ncap2 wrapper functions</para>
-      <example xml:space="preserve">short gsl_stats_max (var_data, data_stride, n);
-double gsl_stats_mean (var_data, data_stride, n);
-double gsl_stats_sd_with_fixed_mean (var_data, data_stride, n, var_mean);
-double gsl_stats_wmean (var_weight, weight_stride, var_data, data_stride, n, var_mean);
-double gsl_stats_quantile_from_sorted_data (var_sorted_data, data_stride, n, var_f) ;</example>
-      <para role="continues"><acronym><acronymword>GSL</acronymword></acronym> has no notion of missing values or dimensionality beyond one. If your data has missing values which you want ignored in the calculations then use the <command>ncap2</command> built in aggregate functions( <xref><xrefnodename>Methods and functions</xrefnodename></xref> ). The <acronym><acronymword>GSL</acronymword></acronym> functions operate on a vector of values created from the var_data/stride/n arguments. T [...]
-      <para>Some examples</para>
-      <example xml:space="preserve">a1[time]={1,2,3,4,5,6,7,8,9,10 };
-
-a1_avg=gsl_stats_mean(a1,1,10);
-print(a1_avg); // 5.5
-
-a1_var=gsl_stats_variance(a1,4,3);
-print(a1_var); // 16.0
-
-// bounding error, vector attempts to access element a1(10)
-a1_sd=gsl_stats_sd(a1,5,3);
-</example>
-      <para role="continues">For functions with the signature <strong>func_nm(var_data,data_stride,n)</strong>, one may omit the second or third arguments. The default value for <var>stride</var> is <code>1</code>. The default value for <var>n</var> is <code>1+(data.size()-1)/stride</code>.</para>
-      <example xml:space="preserve">// Following statements are equvalent
-n2=gsl_stats_max(a1,1,10)
-n2=gsl_stats_max(a1,1);
-n2=gsl_stats_max(a1);
-
-// Following statements are equvalent
-n3=gsl_stats_median_from_sorted_data(a1,2,5);
-n3=gsl_stats_median_from_sorted_data(a1,2);
-
-// Following statements are NOT equvalent
-n4=gsl_stats_kurtosis(a1,3,2);
-n4=gsl_stats_kurtosis(a1,3); //default n=4</example>
-      <para>The following example illustrates some of the weighted functions. The data are randomly generated. In this case the value of the weight for each datum is either 0.0 or 1.0</para>
-      <example xml:space="preserve">defdim("r1",2000);
-data[r1]=1.0;
-
-// Fill with random numbers [0.0,10.0)
-data=10.0*gsl_rng_uniform(data);
-
-// Create a weighting variable
-weight=(data>4.0);
-
-wmean=gsl_stats_wmean(weight,1,data,1,$r1.size);
-print(wmean);
-
-wsd=gsl_stats_wsd(weight,1,data,1,$r1.size);
-print(wsd);
-
-// number of values in data that are greater than 4
-weight_size=weight.total();
-print(weight_size);
-
-// print min/max of data
-dmin=data.gsl_stats_min();
-dmax=data.gsl_stats_max();
-print(dmin);print(dmax);
-</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>GSL random number generation</nodename>
-    <nodenext>Examples ncap2</nodenext>
-    <nodeprev>GSL statistics</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>GSL random number generation</title>
-      <para>The <acronym><acronymword>GSL</acronymword></acronym> library has a large number of random number generators. In addition there are a large set of functions for turning uniform random numbers into discrete or continuous probabilty distributions. The random number generator algorithms vary in terms of quality numbers output, speed of execution and maximium number output. For more information see the <acronym><acronymword>GSL</acronymword></acronym> documentation. The algorithm [...]
-      <para role="continues"><strong>Setup</strong> &linebreak; The number algorithm is set by the environment variable <code>GSL_RNG_TYPE</code>. If this variable isn't set then the default rng algorithm is gsl_rng_19937. The seed is set with the environment variable <code>GSL_RNG_SEED</code>. The following wrapper functions in ncap2 provide information about the chosen algorithm. &linebreak;</para>
-      <table>
-        <tableitem>
-          <tableterm><code>gsl_rng_min()</code></tableterm>
-          <item>
-            <para>the minimium value returned by the rng algorithm.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>gsl_rng_max()</code></tableterm>
-          <item>
-            <para>the maximium value returned by the rng algorithm.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues"><strong>Uniformly Distributed Random Numbers</strong></para>
-      <table>
-        <tableitem>
-          <tableterm><code>gsl_rng_get(var_in)</code></tableterm>
-          <item>
-            <para>This function returns var_in with integers from the chosen rng algorithm. The min and max values depend uoon the chosen rng algorthm.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>gsl_rng_uniform_int(var_in)</code></tableterm>
-          <item>
-            <para>This function returns var_in with random integers from 0 to n-1. The value n must be less than or equal to the maximium value of the chosen rng algorithm.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>gsl_rng_uniform(var_in)</code></tableterm>
-          <item>
-            <para>This function returns var_in with double precision numbers in the range [0.0,1). The range includes 0.0 and excludes 1.0.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>gsl_rng_uniform_pos(var_in)</code></tableterm>
-          <item>
-            <para>This function returns var_in with double precision numbers in the range (0.0,1), excluding both 0.0 and 1.0.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">Below are examples of <code>gsl_rng_get()</code> and <code>gsl_rng_uniform_int()</code> in action.</para>
-      <example xml:space="preserve">export GSL_RNG_TYPE=ranlux
-export GSL_RNG_SEED=10
-ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc
-// 10 random numbers from the range 0 - 16777215
-// a2=9056646, 12776696, 1011656, 13354708, 5139066, 1388751, 11163902, 7730127, 15531355, 10387694 ;
-
-ncap2 -v -O -s 'a1[time]=21;a2=gsl_rng_uniform_int(a1).sort();' in.nc foo.nc
-// 10 random numbers from the range 0 - 20
-a2 = 1, 1, 6, 9, 11, 13, 13, 15, 16, 19 ;
-</example>
-      <para role="continues">The following example produces an <code>ncap2</code> runtime error. This is because the chose rng algorithm has a maximium value greater than <code> NC_MAX_INT=2147483647 </code>; the wrapper functions to <code>gsl_rng_get()</code> and <code>gsl_rng_uniform_int()</code> return variable of type <code>NC_INT</code>. Please be aware of this when using random number distribution functions functions from the <acronym><acronymword>GSL</acronymword></acronym> librar [...]
-      <example xml:space="preserve">export GSL_RNG_TYPE=mt19937
-ncap2 -v -O -s 'a1[time]=0;a2=gsl_rng_get(a1);' in.nc foo.nc</example>
-      <para role="continues">To find the maximium value of the chosen rng algorithm use the following code snippet.</para>
-      <example xml:space="preserve">ncap2 -v -O -s 'rng_max=gsl_rng_max();print(rng_max)' in.nc foo.nc</example>
-      <para role="continues"><strong>Random Number Distributions</strong> &linebreak; The <acronym><acronymword>GSL</acronymword></acronym> library has a rich set of random number disribution functions. The library also provides cumulative distribution functions and inverse cumulative distribution functions sometimes referred to a quantile functions. To see whats available on your build use the shell command <code>ncap2 -f|grep -e _ran -e _cdf</code>.</para>
-      <para role="continues">The following examples all return variables of type <code>NC_INT</code> &linebreak;</para>
-      <example xml:space="preserve">defdim("out",15);
-a1[$out]=0.5;
-a2=gsl_ran_binomial(a1,30).sort();
-//a2 = 10, 11, 12, 12, 13, 14, 14, 15, 15, 16, 16, 16, 16, 17, 22 ;
-a3=gsl_ran_geometric(a2).sort();
-//a2 = 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4, 5 ;
-a4=gsl_ran_pascal(a2,50);
-//a5 = 37, 40, 40, 42, 43, 45, 46, 49, 52, 58, 60, 62, 62, 65, 67 ;</example>
-      <para role="continues">The following all return variables of type <code>NC_DOUBLE</code>;</para>
-      <example xml:space="preserve">defdim("b1",1000);
-b1[$b1]=0.8;
-b2=gsl_ran_exponential(b1);
-b2_avg=b2.avg();
-print(b2_avg);
-// b2_avg = 0.756047976787
-
-b3=gsl_ran_gaussian(b1);
-b3_avg=b3.avg();
-b3_rms=b3.rms();
-print(b3_avg);
-// b3_avg = -0.00903446534258;
-print(b3_rms);
-// b3_rms = 0.81162979889;
-
-b4[$b1]=10.0;
-b5[$b1]=20.0;
-b6=gsl_ran_flat(b4,b5);
-b6_avg=b6.avg();
-print(b6_avg);
-// b6_avg=15.0588129413</example>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Examples ncap2</nodename>
-    <nodenext>Intrinsic mathematical methods</nodenext>
-    <nodeprev>GSL random number generation</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Examples ncap2</title>
-      <para>See the <file>ncap.in</file> and <file>ncap2.in</file> scripts released with <acronym><acronymword>NCO</acronymword></acronym> for more complete demonstrations of <command>ncap2</command> functionality (script available on-line at <uref><urefurl>http://nco.sf.net/ncap2.in</urefurl></uref>).</para>
-      <para>Define new attribute <var>new</var> for existing variable <var>one</var> as twice the existing attribute <var>double_att</var> of variable <var>att_var</var>:</para>
-      <example xml:space="preserve">ncap2 -s 'one at new=2*att_var at double_att' in.nc out.nc</example>
-      <para>Average variables of mixed types (result is of type <code>double</code>):</para>
-      <example xml:space="preserve">ncap2 -s 'average=(var_float+var_double+var_int)/3' in.nc out.nc</example>
-      <para>Multiple commands may be given to <command>ncap2</command> in three ways. First, the commands may be placed in a script which is executed, e.g., <file>tst.nco</file>. Second, the commands may be individually specified with multiple <samp>-s</samp> arguments to the same <command>ncap2</command> invocation. Third, the commands may be chained together into a single <samp>-s</samp> argument to <command>ncap2</command>. Assuming the file <file>tst.nco</file> contains the commands  [...]
-      <example xml:space="preserve">ncap2 -v -S tst.nco in.nc out.nc
-ncap2 -v -s 'a=3' -s 'b=4' -s 'c=sqrt(a^2+b^2)' in.nc out.nc
-ncap2 -v -s 'a=3;b=4;c=sqrt(a^2+b^2)' in.nc out.nc</example>
-      <para>The second and third examples show that <command>ncap2</command> does not require that a trailing semi-colon <samp>;</samp> be placed at the end of a <samp>-s</samp> argument, although a trailing semi-colon <samp>;</samp> is always allowed. However, semi-colons are required to separate individual assignment statements chained together as a single <samp>-s</samp> argument.</para>
-      <para><indexterm index="cp">growing dimensions</indexterm><indexterm index="cp">dimensions, growing</indexterm><command>ncap2</command> may be used to “grow” dimensions, i.e., to increase dimension sizes without altering existing data. Say <file>in.nc</file> has <code>ORO(lat,lon)</code> and the user wishes a new file with <code>new_ORO(new_lat,new_lon)</code> that contains zeros in the undefined portions of the new grid.</para>
-      <example xml:space="preserve">defdim("new_lat",$lat.size+1); // Define new dimension sizes
-defdim("new_lon",$lon.size+1);
-new_ORO[$new_lat,$new_lon]=0.0f; // Initialize to zero
-new_ORO(0:$lat.size-1,0:$lon.size-1)=ORO; // Fill valid data</example>
-      <para>The commands to define new coordinate variables <code>new_lat</code> and <code>new_lon</code> in the output file follow a similar pattern. One would might store these commands in a script <file>grow.nco</file> and then execute the script with</para>
-      <example xml:space="preserve">ncap2 -v -S grow.nco in.nc out.nc</example>
-      <para><indexterm index="cp">flags</indexterm>Imagine you wish to create a binary flag based on the value of an array. The flag should have value 1.0<!-- /@w --> where the array exceeds 1.0<!-- /@w -->, and value 0.0<!-- /@w --> elsewhere. This example creates the binary flag <code>ORO_flg</code> in <file>out.nc</file> from the continuous array named <code>ORO</code> in <file>in.nc</file>.</para>
-      <example xml:space="preserve">ncap2 -s 'ORO_flg=(ORO > 1.0)' in.nc out.nc</example>
-      <para>Suppose your task is to change all values of <code>ORO</code> which equal 2.0<!-- /@w --> to the new value 3.0<!-- /@w -->:</para>
-      <example xml:space="preserve">ncap2 -s 'ORO_msk=(ORO==2.0);ORO=ORO_msk*3.0+!ORO_msk*ORO' in.nc out.nc</example>
-      <para><indexterm index="cp">mask</indexterm>This creates and uses <code>ORO_msk</code> to mask the subsequent arithmetic operation. Values of <code>ORO</code> are only changed where <code>ORO_msk</code> is true, i.e., where <code>ORO</code> equals 2.0<!-- /@w --> &linebreak; Using the <code>where</code> statement the above code simplifies to :</para>
-      <example xml:space="preserve">ncap2 -s 'where(ORO==2.0) ORO=3.0;' in.nc foo.nc</example>
-      <para>This example uses <command>ncap2</command> to compute the covariance of two variables. Let the variables <var>u</var> and <var>v</var> be the horizontal wind components. <indexterm index="cp">covariance</indexterm>
-<!-- fxm 20030423: texi2html 1.64 has problems with this legal syntax but makeinfo -html does not -->The <dfn>covariance</dfn> of <var>u</var> and <var>v</var> is defined as the time mean product of the deviations of <var>u</var> and <var>v</var> from their respective time means. Symbolically, the covariance</para>
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para>[<var>u'v'</var>] = [<var>uv</var>]-[<var>u</var>][<var>v</var>] where [x] denotes the time-average of <var>x</var> and <var>x'</var></para>
-      <clearvalue name="flg"></clearvalue>
-      <para>denotes the deviation from the time-mean. The covariance tells us how much of the correlation of two signals arises from the signal fluctuations versus the mean signals. <indexterm index="cp">eddy covariance</indexterm>Sometimes this is called the <dfn>eddy covariance</dfn>. We will store the covariance in the variable <code>uprmvprm</code>.</para>
-      <example xml:space="preserve">ncwa -O -a time -v u,v in.nc foo.nc # Compute time mean of u,v
-ncrename -O -v u,uavg -v v,vavg foo.nc # Rename to avoid conflict
-ncks -A -v uavg,vavg foo.nc in.nc # Place time means with originals
-ncap2 -O -s 'uprmvprm=u*v-uavg*vavg' in.nc in.nc # Covariance
-ncra -O -v uprmvprm in.nc foo.nc # Time-mean covariance</example>
-      <para>The mathematically inclined will note that the same covariance would be obtained by replacing the step involving <command>ncap2</command> with</para>
-      <example xml:space="preserve">ncap2 -O -s 'uprmvprm=(u-uavg)*(v-vavg)' foo.nc foo.nc # Covariance</example>
-      <para>As of <acronym><acronymword>NCO</acronymword></acronym> version 3.1.8 (December, 2006), <command>ncap2</command> can compute averages, and thus covariances, by itself:</para>
-      <example xml:space="preserve">ncap2 -s 'uavg=u.avg($time);vavg=v.avg($time);uprmvprm=u*v-uavg*vavg' \
-      -s 'uprmvrpmavg=uprmvprm.avg($time)' in.nc foo.nc</example>
-      <para>We have not seen a simpler method to script and execute powerful arithmetic than <command>ncap2</command>.</para>
-      <para><indexterm index="cp">globbing</indexterm><indexterm index="cp">shell</indexterm><indexterm index="cp">quotes</indexterm><indexterm index="cp">extended regular expressions</indexterm><indexterm index="cp">regular expressions</indexterm><command>ncap2</command> utilizes many meta-characters (e.g., <samp>$</samp>, <samp>?</samp>, <samp>;</samp>, <samp>()</samp>, <samp>[]</samp>) that can confuse the command-line shell if not quoted properly. The issues are the same as those whi [...]
-      <example xml:space="preserve">ncap2 -s 'uavg=u.avg($time)'  in.nc foo.nc # Correct (recommended)
-ncap2 -s  uavg=u.avg('$time') in.nc foo.nc # Correct (and dangerous)
-ncap2 -s  uavg=u.avg($time)   in.nc foo.nc # Fails ($time = '')
-ncap2 -s "uavg=u.avg($time)"  in.nc foo.nc # Fails ($time = '')</example>
-      <para>Without the single quotes, the shell replaces <code>$time</code> with an empty string. The command <command>ncap2</command> receives from the shell is <code>uavg=u.avg()</code>. This causes <command>ncap2</command> to average over all dimensions rather than just the <var>time</var> dimension, and unintended consequence.</para>
-      <para>We recommend using single quotes to protect <command>ncap2</command> command-line scripts from the shell, even when such protection is not strictly necessary. Expert users may violate this rule to exploit the ability to use shell variables in <command>ncap2</command> command-line scripts (see <xref><xrefnodename>CCSM Example</xrefnodename></xref>). In such cases it may be necessary to use the shell backslash character <samp>\</samp> to protect the <command>ncap2</command> met [...]
-      <para><indexterm index="cp">appending data</indexterm><indexterm index="cp">time-averaging</indexterm><indexterm index="cp">ncks</indexterm><indexterm index="cp">ncwa</indexterm><indexterm index="cp">ncra</indexterm><indexterm index="cp">degenerate dimension</indexterm><indexterm index="cp"><samp>-b</samp></indexterm>Whether a degenerate record dimension is desirable or undesirable depends on the application. Often a degenerate <var>time</var> dimension is useful, e.g., for concate [...]
-    </subsection>
-  </node>
-  <node>
-    <nodename>Intrinsic mathematical methods</nodename>
-    <nodenext>Operators precedence and associativity</nodenext>
-    <nodeprev>Examples ncap2</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Intrinsic mathematical methods</title>
-      <para><command>ncap2</command> supports the standard mathematical functions supplied with most operating systems. <indexterm index="cp">addition</indexterm><indexterm index="cp">subtraction</indexterm><indexterm index="cp">multiplication</indexterm><indexterm index="cp">division</indexterm><indexterm index="cp">exponentiation</indexterm><indexterm index="cp">power</indexterm><indexterm index="cp">modulus</indexterm><indexterm index="cp"><code>+</code> (addition)</indexterm><indexte [...]
-      <table>
-        <tableitem>
-          <tableterm><code>abs(x)</code></tableterm>
-          <item>
-            <para><dfn>Absolute value</dfn> Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>acos(x)</code></tableterm>
-          <item>
-            <para><dfn>Arc-cosine</dfn> Arc-cosine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>acosh(x)</code></tableterm>
-          <item>
-            <para><dfn>Hyperbolic arc-cosine</dfn> Hyperbolic arc-cosine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>asin(x)</code></tableterm>
-          <item>
-            <para><dfn>Arc-sine</dfn> Arc-sine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>asinh(x)</code></tableterm>
-          <item>
-            <para><dfn>Hyperbolic arc-sine</dfn> Hyperbolic arc-sine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>atan(x)</code></tableterm>
-          <item>
-            <para><dfn>Arc-tangent</dfn> Arc-tangent of <var>x</var> where <var>x</var> is specified in radians between Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>atan2(y,x)</code></tableterm>
-          <item>
-            <para><dfn>Arc-tangent2</dfn> Arc-tangent of <var>y/x</var></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>atanh(x)</code></tableterm>
-          <item>
-            <para><dfn>Hyperbolic arc-tangent</dfn> Hyperbolic arc-tangent of <var>x</var> where <var>x</var> is specified in radians between Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ceil(x)</code></tableterm>
-          <item>
-            <para><dfn>Ceil</dfn> Ceiling of <var>x</var>. Smallest integral value not less than argument. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>cos(x)</code></tableterm>
-          <item>
-            <para><dfn>Cosine</dfn> Cosine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>cosh(x)</code></tableterm>
-          <item>
-            <para><dfn>Hyperbolic cosine</dfn> Hyperbolic cosine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>erf(x)</code></tableterm>
-          <item>
-            <para><dfn>Error function</dfn> Error function of <var>x</var> where <var>x</var> is specified between Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>erfc(x)</code></tableterm>
-          <item>
-            <para><dfn>Complementary error function</dfn> Complementary error function of <var>x</var> where <var>x</var> is specified between Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>exp(x)</code></tableterm>
-          <item>
-            <para><dfn>Exponential</dfn> Exponential of <var>x</var>, Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>floor(x)</code></tableterm>
-          <item>
-            <para><dfn>Floor</dfn> Floor of <var>x</var>. Largest integral value not greater than argument. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>gamma(x)</code></tableterm>
-          <item>
-            <para><dfn>Gamma function</dfn> Gamma function of <var>x</var>, The well-known and loved continuous factorial function. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>gamma_inc_P(x)</code></tableterm>
-          <item>
-            <para><dfn>Incomplete Gamma function</dfn> Incomplete Gamma function of parameter <var>a</var> and variable <var>x</var>, One of the four incomplete gamma functions. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ln(x)</code></tableterm>
-          <item>
-            <para><dfn>Natural Logarithm</dfn> Natural logarithm of <var>x</var>, Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>log(x)</code></tableterm>
-          <item>
-            <para><dfn>Natural Logarithm</dfn> Exact synonym for <code>ln(x)</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>log10(x)</code></tableterm>
-          <item>
-            <para><dfn>Base 10 Logarithm</dfn> Base 10<!-- /@w --> logarithm of <var>x</var>, Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>nearbyint(x)</code></tableterm>
-          <item>
-            <para><dfn>Round inexactly</dfn> Nearest integer to <var>x</var> is returned in floating point format. <indexterm index="cp">inexact conversion</indexterm>No exceptions are raised for <dfn>inexact conversions</dfn>. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>pow(x,y)</code></tableterm>
-          <item>
-            <para><dfn>Power</dfn> <indexterm index="cp">promotion</indexterm><indexterm index="cp">automatic type conversion</indexterm>Value of <var>x</var> is raised to the power of <var>y</var>. Exceptions are raised for <dfn>domain errors</dfn>. Due to type-limitations in the C language<!-- /@w --> <code>pow</code> function, integer arguments are promoted (see <xref><xrefnodename>Type Conversion</xrefnodename></xref>) to type <code>NC_FLOAT</code> before evaluation. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>rint(x)</code></tableterm>
-          <item>
-            <para><dfn>Round exactly</dfn> Nearest integer to <var>x</var> is returned in floating point format. Exceptions are raised for <dfn>inexact conversions</dfn>. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>round(x)</code></tableterm>
-          <item>
-            <para><dfn>Round</dfn> Nearest integer to <var>x</var> is returned in floating point format. Round halfway cases away from zero, regardless of current IEEE rounding direction. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sin(x)</code></tableterm>
-          <item>
-            <para><dfn>Sine</dfn> Sine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sinh(x)</code></tableterm>
-          <item>
-            <para><dfn>Hyperbolic sine</dfn> Hyperbolic sine of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sqrt(x)</code></tableterm>
-          <item>
-            <para><dfn>Square Root</dfn> Square Root of <var>x</var>, Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>tan(x)</code></tableterm>
-          <item>
-            <para><dfn>Tangent</dfn> Tangent of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>tanh(x)</code></tableterm>
-          <item>
-            <para><dfn>Hyperbolic tangent</dfn> Hyperbolic tangent of <var>x</var> where <var>x</var> is specified in radians. Example:</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>trunc(x)</code></tableterm>
-          <item>
-            <para><dfn>Truncate</dfn> Nearest integer to <var>x</var> is returned in floating point format. Round halfway cases toward zero, regardless of current IEEE rounding direction. Example:</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">The complete list of mathematical functions supported is platform-specific. Functions mandated by ANSI C<!-- /@w --> are <emph>guaranteed</emph> to be present and are indicated with an asterisk 
-<!-- fxm No they're not, not yet --><indexterm index="cp"><code>ANSI C</code></indexterm><indexterm index="cp"><code>float</code></indexterm><indexterm index="cp">precision</indexterm><indexterm index="cp">quadruple precision</indexterm><indexterm index="cp">single precision</indexterm><indexterm index="cp">double precision</indexterm><indexterm index="cp"><code>long double</code></indexterm><indexterm index="cp"><code>NC_DOUBLE</code></indexterm><footnote><para> ANSI C<!-- /@w --> compi [...]
-      <para role="continues"></para>
-<!-- Begin HMB documentation -->
-    </subsection>
-  </node>
-  <node>
-    <nodename>Operators precedence and associativity</nodename>
-    <nodenext>ID Quoting</nodenext>
-    <nodeprev>Intrinsic mathematical methods</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>Operators precedence and associativity</title>
-      <para>This page lists the <command>ncap</command> operators in order of precedence (highest to lowest). Their associativity indicates in what order operators of equal precedence in an expression are applied.</para>
-      <multitable>
-        <columnfraction>18</columnfraction>
-        <columnfraction>62</columnfraction>
-        <columnfraction>20</columnfraction>
-        <thead>
-          <row>
-            <entry>Operator</entry>
-            <entry>Description</entry>
-            <entry>Associativity</entry>
-          </row>
-        </thead>
-        <tbody>
-          <row>
-            <entry><code>++ --</code></entry>
-            <entry>Postfix Increment/Decrement</entry>
-            <entry>Right to Left</entry>
-          </row>
-          <row>
-            <entry><code>()</code></entry>
-            <entry>Parentheses (function call)</entry>
-          </row>
-          <row>
-            <entry><code>.</code></entry>
-            <entry>Method call</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>++ --</code></entry>
-            <entry>Prefix Increment/Decrement</entry>
-            <entry>Right to Left</entry>
-          </row>
-          <row>
-            <entry><code>+ -</code></entry>
-            <entry>Unary  Plus/Minus</entry>
-          </row>
-          <row>
-            <entry><code>!</code></entry>
-            <entry>Logical Not</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>^</code></entry>
-            <entry>Power of Operator</entry>
-            <entry>Right to Left</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>* / %</code></entry>
-            <entry>Multiply/Divide/Modulus</entry>
-            <entry>Left To Right</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>+ -</code></entry>
-            <entry>Addition/Subtraction</entry>
-            <entry>Left To Right</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>>> <<</code></entry>
-            <entry>Fortran style array clipping</entry>
-            <entry>Left to Right</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>< <=</code></entry>
-            <entry>Less than/Less than or equal to</entry>
-            <entry>Left to Right</entry>
-          </row>
-          <row>
-            <entry><code>> >=</code></entry>
-            <entry>Greater than/Greater than or equal to</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>== !=</code></entry>
-            <entry>Equal to/Not equal to</entry>
-            <entry>Left to Right</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>&&</code></entry>
-            <entry>Logical AND</entry>
-            <entry>Left to Right</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>||</code></entry>
-            <entry>Logical OR</entry>
-            <entry>Left to Right</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>?:</code></entry>
-            <entry>Ternary Operator</entry>
-            <entry>Right to Left</entry>
-          </row>
-          <row>
-            <entry></entry>
-          </row>
-          <row>
-            <entry><code>=</code></entry>
-            <entry>Assignment</entry>
-            <entry>Right to Left</entry>
-          </row>
-          <row>
-            <entry><code>+= -=</code></entry>
-            <entry>Addition/subtraction assignment</entry>
-          </row>
-          <row>
-            <entry><code>*= /=</code></entry>
-            <entry>Multiplication/division assignment</entry>
-          </row>
-        </tbody>
-      </multitable>
-    </subsection>
-  </node>
-  <node>
-    <nodename>ID Quoting</nodename>
-    <nodeprev>Operators precedence and associativity</nodeprev>
-    <nodeup>ncap2 netCDF Arithmetic Processor</nodeup>
-    <subsection>
-      <title>ID Quoting</title>
-      <para><indexterm index="cp">ID Quoting</indexterm>In this section when I refer to a name I mean a variable name, attribute name or a dimension name The allowed characters in a valid netCDF name vary from release to release. (See end section). If you want to use metacharacters in a name or use a method name as a variable name then the name has to be quoted wherever it occurs.</para>
-      <para role="continues">The default <acronym><acronymword>NCO</acronymword></acronym> name is specified by the regular expressions:</para>
-      <example xml:space="preserve">DGT:     ('0'..'9');
-LPH:     ( 'a'..'z' | 'A'..'Z' | '_' );
-name:    (LPH)(LPH|DGT)+</example>
-      <para role="continues">The first character of a valid name must be alphabetic or the underscore. Any subsequent characters must be alphanumeric or underscore. ( e.g a1,_23, hell_is_666 )</para>
-      <para role="continues">The valid characters in a quoted name are specified by the regular expressions:</para>
-      <example xml:space="preserve">LPHDGT:  ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9');
-name:    (LPHDGT|'-'|'+'|'.'|'('|')'|':' )+  ;</example>
-      <para role="continues">Quote a variable: &linebreak; 'avg' , '10_+10','set_miss' '+-90field' , '–test'=10.0d&linebreak; &linebreak; Quote a attribute: &linebreak; 'three at 10', 'set_mss at +10', '666 at hell', 't1 at +units'="kelvin" &linebreak; &linebreak; Quote a dimension: &linebreak; '$10', '$t1–', '$–odd', c1['$10','$t1–']=23.0d &linebreak;</para>
-      <sp lines="1"></sp>
-      <para>The following comments are from the netCDF library definitions and detail the naming conventions for each release. netcdf-3.5.1 &linebreak; netcdf-3.6.0-p1 &linebreak; netcdf-3.6.1 &linebreak; netcdf-3.6.2 &linebreak;</para>
-      <example xml:space="preserve">/*
- * ( [a-zA-Z]|[0-9]|'_'|'-'|'+'|'.'|'|':'|'@'|'('|')' )+
- * Verify that a name string is valid
- * CDL syntax, eg, all the characters are
- * alphanumeric, '-', '_', '+', or '.'.
- * Also permit ':', '@', '(', or ')' in names for chemists currently making
- * use of these characters, but don't document until ncgen and ncdump can
- * also handle these characters in names.
- */</example>
-      <para role="continues">netcdf-3.6.3 &linebreak; netcdf-4.0 Final  2008/08/28 &linebreak;</para>
-      <example xml:space="preserve">/*
- * Verify that a name string is valid syntax.  The allowed name
- * syntax (in RE form) is:
- *
- * ([a-zA-Z_]|{UTF8})([^\x00-\x1F\x7F/]|{UTF8})*
- *
- * where UTF8 represents a multibyte UTF-8 encoding.  Also, no
- * trailing spaces are permitted in names.  This definition
- * must be consistent with the one in ncgen.l.  We do not allow '/'
- * because HDF5 does not permit slashes in names as slash is used as a
- * group separator.  If UTF-8 is supported, then a multi-byte UTF-8
- * character can occur anywhere within an identifier.  We later
- * normalize UTF-8 strings to NFC to facilitate matching and queries.
- */</example>
-<!-- End HMB documentation -->
-    </subsection>
-  </node>
-  <node>
-    <nodename>ncatted netCDF Attribute Editor</nodename>
-    <nodenext>ncbo netCDF Binary Operator</nodenext>
-    <nodeprev>ncap2 netCDF Arithmetic Processor</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncatted</command> netCDF Attribute Editor</title>
-      <para><indexterm index="cp">attributes</indexterm><indexterm index="cp">attribute names</indexterm><indexterm index="cp">editing attributes</indexterm><indexterm index="cp">ncatted</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncatted [-a <var>att_dsc</var>] [-a &dots;] [-D <var>dbg</var>] [-h] [--hdr_pad <var>nbr</var>]
-[-l <var>path</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-<var>input-file</var> [[<var>output-file</var>]]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncatted</command> edits attributes in a netCDF file. If you are editing attributes then you are spending too much time in the world of metadata, and <command>ncatted</command> was written to get you back out as quickly and painlessly as possible. <command>ncatted</command> can <dfn>append</dfn>, <dfn>create</dfn>, <dfn>delete</dfn>, <dfn>modify</dfn>, and <dfn>overwrite</dfn> attributes (all explained below). Furthermore, <command>ncatted</command> allows each editin [...]
-      <para><indexterm index="cp"><code>history</code></indexterm><indexterm index="cp"><code>-h</code></indexterm>Because repeated use of <command>ncatted</command> can considerably increase the size of the <code>history</code> global attribute (see <xref><xrefnodename>History Attribute</xrefnodename></xref>), the <samp>-h</samp> switch is provided to override automatically appending the command to the <code>history</code> global attribute in the <var>output-file</var>.</para>
-      <para><indexterm index="cp">missing values</indexterm><indexterm index="cp">data, missing</indexterm><indexterm index="cp"><code>_FillValue</code></indexterm>When <command>ncatted</command> is used to change the <code>_FillValue</code> attribute, it changes the associated missing data self-consistently. If the internal floating point representation of a missing value, e.g., 1.0e36, differs between two machines then netCDF files produced on those machines will have incompatible miss [...]
-      <para>The key to mastering <command>ncatted</command> is understanding the meaning of the structure that describes the attribute modification, <var>att_dsc</var> specified by the required option <samp>-a</samp> or <samp>--attribute</samp>. Each <var>att_dsc</var> contains five elements, which makes using <command>ncatted</command> somewhat complicated, but powerful. The <var>att_dsc</var> argument structure contains five arguments in the following order:&linebreak;</para>
-      <para><var>att_dsc</var> = <var>att_nm</var>, <var>var_nm</var>, <var>mode</var>, <var>att_type</var>, <var>att_val</var>&linebreak;</para>
-      <table>
-        <tableitem>
-          <tableterm><var>att_nm</var></tableterm>
-          <item>
-            <para>Attribute name. Example: <code>units</code></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><var>var_nm</var></tableterm>
-          <item>
-            <para>Variable name. <indexterm index="cp">extended regular expressions</indexterm><indexterm index="cp">regular expressions</indexterm><indexterm index="cp">pattern matching</indexterm><indexterm index="cp">wildcards</indexterm>Regular expressions (see <xref><xrefnodename>Subsetting Variables</xrefnodename></xref>) are accepted and will select any matching variable names. Example: <code>pressure</code>, <code>'^H2O'</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><var>mode</var></tableterm>
-          <item>
-            <para>Edit mode abbreviation. Example: <code>a</code>. See below for complete listing of valid values of <var>mode</var>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><var>att_type</var></tableterm>
-          <item>
-            <para>Attribute type abbreviation. Example: <code>c</code>. See below for complete listing of valid values of <var>att_type</var>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><var>att_val</var></tableterm>
-          <item>
-            <para>Attribute value. Example: <code>pascal</code>.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">There should be no empty space between these five consecutive arguments. The description of these arguments follows in their order of appearance.</para>
-      <para>The value of <var>att_nm</var> is the name of the attribute you want to edit. This meaning of this should be clear to all users of the <command>ncatted</command> operator. If <var>att_nm</var> is omitted (i.e., left blank) and <dfn>Delete</dfn> mode is selected, then all attributes associated with the specified variable will be deleted.</para>
-      <para><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm>The value of <var>var_nm</var> is the name of the variable containing the attribute (named <var>att_nm</var>) that you want to edit. There are three very important and useful exceptions to this rule. The value of <var>var_nm</var> can also be used to direct <command>ncatted</command> to edit global attributes, or to repeat the editing operation for every variable in a file.  [...]
-      <para>The value of <var>mode</var> is a single character abbreviation (<code>a</code>, <code>c</code>, <code>d</code>, <code>m</code>, or <code>o</code>) standing for one of five editing modes:&linebreak; <indexterm index="cp">attributes, appending</indexterm><indexterm index="cp">attributes, creating</indexterm><indexterm index="cp">attributes, deleting</indexterm><indexterm index="cp">attributes, modifying</indexterm><indexterm index="cp">attributes, editing</indexterm><indexterm [...]
-      <table>
-        <tableitem>
-          <tableterm><code>a</code></tableterm>
-          <item>
-            <para><dfn>Append</dfn>. Append value <var>att_val</var> to current <var>var_nm</var> attribute <var>att_nm</var> value <var>att_val</var>, if any. If <var>var_nm</var> does not have an attribute <var>att_nm</var>, there is no effect.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>c</code></tableterm>
-          <item>
-            <para><dfn>Create</dfn>. Create variable <var>var_nm</var> attribute <var>att_nm</var> with <var>att_val</var> if <var>att_nm</var> does not yet exist. If <var>var_nm</var> already has an attribute <var>att_nm</var>, there is no effect.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>d</code></tableterm>
-          <item>
-            <para><dfn>Delete</dfn>. Delete current <var>var_nm</var> attribute <var>att_nm</var>. If <var>var_nm</var> does not have an attribute <var>att_nm</var>, there is no effect. If <var>att_nm</var> is omitted (left blank), then all attributes associated with the specified variable are automatically deleted. When <dfn>Delete</dfn> mode is selected, the <var>att_type</var> and <var>att_val</var> arguments are superfluous and may be left blank.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>m</code></tableterm>
-          <item>
-            <para><dfn>Modify</dfn>. Change value of current <var>var_nm</var> attribute <var>att_nm</var> to value <var>att_val</var>. If <var>var_nm</var> does not have an attribute <var>att_nm</var>, there is no effect.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>o</code></tableterm>
-          <item>
-            <para><dfn>Overwrite</dfn>. Write attribute <var>att_nm</var> with value <var>att_val</var> to variable <var>var_nm</var>, overwriting existing attribute <var>att_nm</var>, if any. This is the default mode.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para>The value of <var>att_type</var> is a single character abbreviation (<code>f</code>, <code>d</code>, <code>l</code>, <code>i</code>, <code>s</code>, <code>c</code>, <code>b</code>, <code>u</code>) or a short string standing for one of the twelve primitive netCDF data types:&linebreak;</para>
-      <table>
-        <tableitem>
-          <tableterm><code>f</code></tableterm>
-          <item>
-            <para><dfn>Float</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_FLOAT</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>d</code></tableterm>
-          <item>
-            <para><dfn>Double</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_DOUBLE</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>i, l</code></tableterm>
-          <item>
-            <para><dfn>Integer</dfn> or <dfn>Long</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_INT</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>s</code></tableterm>
-          <item>
-            <para><dfn>Short</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_SHORT</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>c</code></tableterm>
-          <item>
-            <para><dfn>Char</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_CHAR</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>b</code></tableterm>
-          <item>
-            <para><dfn>Byte</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_BYTE</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ub</code></tableterm>
-          <item>
-            <para><dfn>Unsigned Byte</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_UBYTE</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>us</code></tableterm>
-          <item>
-            <para><dfn>Unsigned Short</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_USHORT</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>u, ui, ul</code></tableterm>
-          <item>
-            <para><dfn>Unsigned Int</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_UINT</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ll, int64</code></tableterm>
-          <item>
-            <para><dfn>Int64</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_INT64</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>ull, uint64</code></tableterm>
-          <item>
-            <para><dfn>Uint64</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_UINT64</code>.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><code>sng</code></tableterm>
-          <item>
-            <para><dfn>String</dfn>. Value(s) specified in <var>att_val</var> will be stored as netCDF intrinsic type <code>NC_STRING</code>.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">The specification of <var>att_type</var> is optional (and is ignored) in <dfn>Delete</dfn> mode.</para>
-      <para>The value of <var>att_val</var> is what you want to change attribute <var>att_nm</var> to contain. The specification of <var>att_val</var> is optional in <dfn>Delete</dfn> (and is ignored) mode. Attribute values for all types besides <code>NC_CHAR</code> must have an attribute length of at least one. Thus <var>att_val</var> may be a single value or one-dimensional array of elements of type <code>att_type</code>. If the <var>att_val</var> is not set or is set to empty space, a [...]
-      <para><indexterm index="cp">Perl</indexterm><indexterm index="cp"><acronym><acronymword>ASCII</acronymword></acronym></indexterm><acronym><acronymword>NCO</acronymword></acronym> processing of <code>NC_CHAR</code> attributes is a bit like Perl in that it attempts to do what you want by default (but this sometimes causes unexpected results if you want unusual data storage). <indexterm index="cp"><code>printf()</code></indexterm><indexterm index="cp"><code>\n</code> (<acronym><acrony [...]
-      <para><indexterm index="cp"><code>\'</code> (protected end quote)</indexterm><indexterm index="cp"><code>\"</code> (protected double quote)</indexterm><indexterm index="cp"><code>\?</code> (protected question mark)</indexterm><indexterm index="cp"><code>\\</code> (protected backslash)</indexterm><indexterm index="cp"><code>'</code> (end quote)</indexterm><indexterm index="cp"><code>"</code> (double quote)</indexterm><indexterm index="cp"><code>?</code> (question mark)</indexterm><i [...]
-      <para><indexterm index="cp">strings</indexterm><indexterm index="cp">NUL-termination</indexterm><indexterm index="cp">NUL</indexterm><indexterm index="cp">C language</indexterm><indexterm index="cp"><code>0</code> (NUL)</indexterm>Note that the NUL character <code>\0</code> which terminates C language<!-- /@w --> strings is assumed and need not be explicitly specified. 
-<!-- If @code{\0} is input, it will not be translated (because it would -->
-<!-- terminate the string in an additional location). -->
-<!-- 20101007 Before today, \0 was not translated to NUL -->
-<!-- 20101007 As of today,  \0 is      translated to NUL -->If <code>\0</code> is input, it is translated to the NUL character. However, this will make the subsequent portion of the string, if any, invisible to C standard<!-- /@w --> library string functions. And that may cause unintended consequences. Because of these context-sensitive rules, one must use <command>ncatted</command> with care in order to store data, rather than text strings, in an attribute of type <code>NC_CHAR</code>.</para>
-      <para role="continues">EXAMPLES</para>
-      <para>Append the string "Data version 2.0.\n" to the global attribute <code>history</code>:</para>
-      <example xml:space="preserve">ncatted -a history,global,a,c,"Data version 2.0\n" in.nc</example>
-      <para>Note the use of embedded C language<!-- /@w --> <code>printf()</code>-style escape sequences.</para>
-      <para>Change the value of the <code>long_name</code> attribute for variable <code>T</code> from whatever it currently is to "temperature":</para>
-      <example xml:space="preserve">ncatted -a long_name,T,o,c,temperature in.nc</example>
-      <para>Delete all existing <code>units</code> attributes:</para>
-      <example xml:space="preserve">ncatted -a units,,d,, in.nc</example>
-      <para role="continues">The value of <var>var_nm</var> was left blank in order to select all variables in the file. The values of <var>att_type</var> and <var>att_val</var> were left blank because they are superfluous in <dfn>Delete</dfn> mode.</para>
-      <para><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm>Delete all attributes associated with the <code>tpt</code> variable, and delete all global attributes</para>
-      <example xml:space="preserve">ncatted -a ,tpt,d,, -a ,global,d,, in.nc</example>
-      <para role="continues">The value of <var>att_nm</var> was left blank in order to select all attributes associated with the variable. To delete all global attributes, simply replace <code>tpt</code> with <code>global</code> in the above.</para>
-      <para><indexterm index="cp"><code>units</code></indexterm>Modify all existing <code>units</code> attributes to "meter second-1":</para>
-      <example xml:space="preserve">ncatted -a units,,m,c,"meter second-1" in.nc</example>
-      <para><indexterm index="cp"><code>units</code></indexterm>Add a <code>units</code> attribute of "kilogram kilogram-1" to all variables whose first three characters are <samp>H2O</samp>:</para>
-      <example xml:space="preserve">ncatted -a units,'^H2O',c,c,"kilogram kilogram-1" in.nc</example>
-      <para>Overwrite the <code>quanta</code> attribute of variable <code>energy</code> to an array of four integers.</para>
-      <example xml:space="preserve">ncatted -O -a quanta,energy,o,s,"010,101,111,121" in.nc</example>
-      <para><indexterm index="cp">extended regular expressions</indexterm><indexterm index="cp">regular expressions</indexterm><indexterm index="cp">pattern matching</indexterm><indexterm index="cp">wildcards</indexterm>As of <acronym><acronymword>NCO</acronymword></acronym> 3.9.6 (January, 2009), variable names arguments to <command>ncatted</command> may contain <dfn>extended regular expressions</dfn>. Create <code>isotope</code> attributes for all variables containing <samp>H2O</samp>  [...]
-      <example xml:space="preserve">ncatted -O -a isotope,'^H2O*',c,s,"18" in.nc</example>
-      <para>See <xref><xrefnodename>Subsetting Variables</xrefnodename></xref> for more details.</para>
-      <para>Demonstrate input of C-language escape sequences (e.g., <code>\n</code>) and other special characters (e.g., <code>\"</code>)</para>
-      <example xml:space="preserve">ncatted -h -a special,global,o,c,
-'\nDouble quote: \"\nTwo consecutive double quotes: \"\"\n
-Single quote: Beyond my shell abilities!\nBackslash: \\\n
-Two consecutive backslashes: \\\\\nQuestion mark: \?\n' in.nc</example>
-      <para>Note that the entire attribute is protected from the shell by single quotes. These outer single quotes are necessary for interactive use, but may be omitted in batch scripts.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>ncbo netCDF Binary Operator</nodename>
-    <nodenext>ncea netCDF Ensemble Averager</nodenext>
-    <nodeprev>ncatted netCDF Attribute Editor</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncbo</command> netCDF Binary Operator</title>
-      <para><indexterm index="cp">ncbo</indexterm><indexterm index="cp">ncdiff</indexterm><indexterm index="cp">ncadd</indexterm><indexterm index="cp">ncsub</indexterm><indexterm index="cp">ncsubtract</indexterm><indexterm index="cp">ncmult</indexterm><indexterm index="cp">ncmultiply</indexterm><indexterm index="cp">ncdivide</indexterm><indexterm index="cp">binary operations</indexterm><indexterm index="cp">addition</indexterm><indexterm index="cp">subtraction</indexterm><indexterm index [...]
-      <example xml:space="preserve">ncbo [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h]
-[-L <var>dfl_lvl</var>] [-l <var>path</var>] [-O] [-o <var>file_3</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,&dots;]] [-X ...] [-x] [-y <var>op_typ</var>]
-<var>file_1</var> <var>file_2</var> [<var>file_3</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncbo</command> performs binary operations on variables in <var>file_1</var> and the corresponding variables (those with the same name) in <var>file_2</var> and stores the results in <var>file_3</var>. The binary operation operates on the entire files (modulo any excluded variables). See <xref><xrefnodename>Missing Values</xrefnodename></xref>, for treatment of missing values. One of the four standard arithmetic binary operations currently supported must be selected w [...]
-      <table>
-        <tableitem>
-          <tableterm><dfn>Addition</dfn></tableterm>
-<!-- Internal operation code: @{nco_op_add}@* -->
-          <item>
-            <para>Definition: <var>file_3</var> = <var>file_1</var> + <var>file_2</var>&linebreak; Alternate invocation: <command>ncadd</command>&linebreak; <var>op_typ</var> key values: <samp>add</samp>, <samp>+</samp>, <samp>addition</samp>&linebreak; Examples: <samp>ncbo --op_typ=add 1.nc 2.nc 3.nc</samp>, <samp>ncadd 1.nc 2.nc 3.nc</samp>&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Subtraction</dfn></tableterm>
-          <item>
-            <para>Definition: <var>file_3</var> = <var>file_1</var> - <var>file_2</var>&linebreak; Alternate invocations: <command>ncdiff</command>, <command>ncsub</command>, <command>ncsubtract</command>&linebreak; <var>op_typ</var> key values: <samp>sbt</samp>, <samp>-</samp>, <samp>dff</samp>, <samp>diff</samp>, <samp>sub</samp>, <samp>subtract</samp>, <samp>subtraction</samp>&linebreak; Examples: <samp>ncbo --op_typ=- 1.nc 2.nc 3.nc</samp>, <samp>ncdiff 1.nc 2.nc 3.nc</samp>&linebrea [...]
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Multiplication</dfn></tableterm>
-          <item>
-            <para>Definition: <var>file_3</var> = <var>file_1</var> * <var>file_2</var>&linebreak; Alternate invocations: <command>ncmult</command>, <command>ncmultiply</command>&linebreak; <var>op_typ</var> key values: <samp>mlt</samp>, <samp>*</samp>, <samp>mult</samp>, <samp>multiply</samp>, <samp>multiplication</samp>&linebreak; Examples: <samp>ncbo --op_typ=mlt 1.nc 2.nc 3.nc</samp>, <samp>ncmult 1.nc 2.nc 3.nc</samp>&linebreak;</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><dfn>Division</dfn></tableterm>
-          <item>
-            <para>Definition: <var>file_3</var> = <var>file_1</var> / <var>file_2</var>&linebreak; Alternate invocation: <command>ncdivide</command>&linebreak; <var>op_typ</var> key values: <samp>dvd</samp>, <samp>/</samp>, <samp>divide</samp>, <samp>division</samp>&linebreak; Examples: <samp>ncbo --op_typ=/ 1.nc 2.nc 3.nc</samp>, <samp>ncdivide 1.nc 2.nc 3.nc</samp>&linebreak;</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">Care should be taken when using the shortest form of key values, i.e., <samp>+</samp>, <samp>-</samp>, <samp>*</samp>, and <samp>/</samp><!-- /@w -->. Some of these single characters may have special meanings to the shell <indexterm index="cp">naked characters</indexterm><footnote><para>A naked<!-- /@w --> (i.e., unprotected or unquoted) <samp>*</samp> is a wildcard character. A naked<!-- /@w --> <samp>-</samp> may confuse the command line parser. A naked<!-- [...]
-      <example xml:space="preserve">ncbo --op_typ=* 1.nc 2.nc 3.nc # Dangerous (shell may try to glob)
-ncbo --op_typ='*' 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-ncbo --op_typ="*" 1.nc 2.nc 3.nc # Safe ('*' protected from shell)
-ncbo --op_typ=mlt 1.nc 2.nc 3.nc
-ncbo --op_typ=mult 1.nc 2.nc 3.nc
-ncbo --op_typ=multiply 1.nc 2.nc 3.nc
-ncbo --op_typ=multiplication 1.nc 2.nc 3.nc
-ncmult 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmult'
-ncmultiply 1.nc 2.nc 3.nc # First do 'ln -s ncbo ncmultiply'</example>
-      <para>No particular argument or invocation form is preferred. Users are encouraged to use the forms which are most intuitive to them.</para>
-      <para><indexterm index="cp"><command>alias</command></indexterm><indexterm index="cp"><command>ln -s</command></indexterm><indexterm index="cp">symbolic links</indexterm>Normally, <command>ncbo</command> will fail unless an operation type is specified with <samp>-y</samp> (equivalent to <samp>--op_typ</samp>). You may create exceptions to this rule to suit your particular tastes, in conformance with your site's policy on <dfn>symbolic links</dfn> to executables (files of a differen [...]
-      <para>It is important to maintain portability in <acronym><acronymword>NCO</acronymword></acronym> scripts. Therefore we recommend that site-specfic invocations (e.g., <samp>ncadd</samp>) be used only in interactive sessions from the command-line. For scripts, we recommend using the full invocation (e.g., <samp>ncbo --op_typ=add</samp>). This ensures portability of scripts between users and sites.</para>
-      <para><command>ncbo</command> operates (e.g., adds) variables in <var>file_2</var> with the corresponding variables (those with the same name) in <var>file_1</var> and stores the results in <var>file_3</var>. <indexterm index="cp">broadcasting variables</indexterm>Variables in <var>file_2</var> are <dfn>broadcast</dfn> to conform to the corresponding variable in <var>file_1</var> if necessary, but the reverse is not true. Broadcasting a variable means creating data in non-existing  [...]
-<!-- TODO #268 --><indexterm index="cp">rank</indexterm>Thus, presently, the number of dimensions, or <dfn>rank</dfn>, of any processed variable in <var>file_1</var> must be greater than or equal to the rank of the same variable in <var>file_2</var>. Furthermore, the size of all dimensions common to both <var>file_1</var> and <var>file_2</var> must be equal.</para>
-      <para>When computing anomalies from the mean it is often the case that <var>file_2</var> was created by applying an averaging operator to a file with initially the same dimensions as <var>file_1</var> (often <var>file_1</var> itself). In these cases, creating <var>file_2</var> with <command>ncra</command> rather than <command>ncwa</command> will cause the <command>ncbo</command> operation to fail. For concreteness say the record dimension in <code>file_1</code> is <code>time</code> [...]
-      <para><indexterm index="cp">coordinate variable</indexterm><indexterm index="cp"><code>NC_BYTE</code></indexterm><indexterm index="cp"><code>NC_CHAR</code></indexterm><command>ncbo</command> never operates on coordinate variables or variables of type <code>NC_CHAR</code> or <code>NC_BYTE</code>. This ensures that coordinates like (e.g., latitude and longitude) are physically meaningful in the output file, <var>file_3</var>. This behavior is hardcoded. <indexterm index="cp"><acronym [...]
-      <para role="continues">EXAMPLES</para>
-      <para>Say files <file>85_0112.nc</file> and <file>86_0112.nc</file> each contain 12 months of data. Compute the change in the monthly averages from 1985 to 1986:</para>
-      <example xml:space="preserve">ncbo -op_typ=sub 86_0112.nc 85_0112.nc 86m85_0112.nc
-ncdiff 86_0112.nc 85_0112.nc 86m85_0112.nc</example>
-      <para>The following examples demonstrate the broadcasting feature of <command>ncbo</command>. Say we wish to compute the monthly anomalies of <code>T</code> from the yearly average of <code>T</code> for the year 1985. First we create the 1985 average from the monthly data, which is stored with the record dimension <code>time</code>.</para>
-      <example xml:space="preserve">ncra 85_0112.nc 85.nc
-ncwa -O -a time 85.nc 85.nc</example>
-      <para role="continues">The second command, <command>ncwa</command>, gets rid of the <code>time</code> dimension of size 1<!-- /@w --> that <command>ncra</command> left in <file>85.nc</file>. Now none of the variables in <file>85.nc</file> has a <code>time</code> dimension. A quicker<!-- /@w --> way to accomplish this is to use <command>ncwa</command> from the beginning:</para>
-      <example xml:space="preserve">ncwa -a time 85_0112.nc 85.nc</example>
-      <para role="continues">We are now ready to use <command>ncbo</command> to compute the anomalies for 1985:</para>
-      <example xml:space="preserve">ncdiff -v T 85_0112.nc 85.nc t_anm_85_0112.nc</example>
-      <para role="continues">Each of the 12 records in <file>t_anm_85_0112.nc</file> now contains the monthly deviation of <code>T</code> from the annual mean of <code>T</code> for each gridpoint.</para>
-      <para>Say we wish to compute the monthly gridpoint anomalies from the zonal annual mean. A <dfn>zonal mean</dfn><!-- /@w --> is a quantity that has been averaged over the longitudinal (or <var>x</var>) direction. First we use <command>ncwa</command> to average over longitudinal direction <code>lon</code>, creating <file>85_x.nc</file>, the zonal mean of <file>85.nc</file>. Then we use <command>ncbo</command> to subtract the zonal annual means from the monthly gridpoint data:</para>
-      <example xml:space="preserve">ncwa -a lon 85.nc 85_x.nc
-ncdiff 85_0112.nc 85_x.nc tx_anm_85_0112.nc</example>
-      <para role="continues">This examples works assuming <file>85_0112.nc</file> has dimensions <code>time</code> and <code>lon</code>, and that <file>85_x.nc</file> has no <code>time</code> or <code>lon</code> dimension.</para>
-      <para>As a final example, say we have five years of monthly data (i.e., 60 months<!-- /@w -->) stored in <file>8501_8912.nc</file> and we wish to create a file which contains the twelve month seasonal cycle of the average monthly anomaly from the five-year mean of this data. The following method is just one permutation of many which will accomplish the same result. First use <command>ncwa</command> to create the five-year mean:</para>
-      <example xml:space="preserve">ncwa -a time 8501_8912.nc 8589.nc</example>
-      <para role="continues">Next use <command>ncbo</command> to create a file containing the difference of each month's data from the five-year mean:</para>
-      <example xml:space="preserve">ncbo 8501_8912.nc 8589.nc t_anm_8501_8912.nc</example>
-      <para role="continues">Now use <command>ncks</command> to group the five January anomalies together in one file, and use <command>ncra</command> to create the average anomaly for all five Januarys. These commands are embedded in a shell loop so they are repeated for all twelve months: <indexterm index="cp">Bash Shell</indexterm><indexterm index="cp">Bourne Shell</indexterm><indexterm index="cp">C Shell</indexterm></para>
-      <example xml:space="preserve">for idx in {1..12}; do # Bash Shell (version 3.0+)
-  idx=`printf "%02d" ${idx}` # Zero-pad to preserve order
-  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-  ncra foo.${idx} t_anm_8589_${idx}.nc
-done
-for idx in 01 02 03 04 05 06 07 08 09 10 11 12; do # Bourne Shell
-  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-  ncra foo.${idx} t_anm_8589_${idx}.nc
-done
-foreach idx (01 02 03 04 05 06 07 08 09 10 11 12) # C Shell
-  ncks -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}
-  ncra foo.${idx} t_anm_8589_${idx}.nc
-end</example>
-      <para role="continues">Note that <command>ncra</command> understands the <code>stride</code> argument so the two commands inside the loop may be combined into the single command</para>
-      <example xml:space="preserve">ncra -F -d time,${idx},,12 t_anm_8501_8912.nc foo.${idx}</example>
-      <para role="continues">Finally, use <command>ncrcat</command> to concatenate the 12 average<!-- /@w --> monthly anomaly files into one twelve-record file which contains the entire seasonal cycle of the monthly anomalies:</para>
-      <example xml:space="preserve">ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc</example>
-      <para role="continues"></para>
-    </section>
-  </node>
-  <node>
-    <nodename>ncea netCDF Ensemble Averager</nodename>
-    <nodenext>ncecat netCDF Ensemble Concatenator</nodenext>
-    <nodeprev>ncbo netCDF Binary Operator</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncea</command> netCDF Ensemble Averager</title>
-      <para><indexterm index="cp">averaging data</indexterm><indexterm index="cp">ensemble average</indexterm><indexterm index="cp">ncea</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncea [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>]
-[-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,&dots;]] [-X ...] [-x] [-y <var>op_typ</var>]
-[<var>input-files</var>] [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncea</command> performs gridpoint averages of variables across an arbitrary number (an <dfn>ensemble</dfn>) of <var>input-files</var>, with each file receiving an equal weight in the average. <indexterm index="cp">ensemble</indexterm><command>ncea</command> averages entire files, and weights each file evenly. This is distinct from <command>ncra</command>, which only averages over the record dimension (e.g., <var>time</var>), and weights each record in the record dime [...]
-      <para>Variables in the <var>output-file</var> are the same size as the variable in each of the <var>input-files</var>, and all <var>input-files</var> must be the same size. <indexterm index="cp">record dimension</indexterm><indexterm index="cp">hyperslab</indexterm>The only exception is that <command>ncea</command> allows files to differ in the record dimension size if the requested record hyperslab (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref>) resolves to the same siz [...]
-      <para><indexterm index="cp">operation types</indexterm><command>ncea</command> <emph>always averages</emph> coordinate variables regardless of the arithmetic operation type performed on the non-coordinate variables. (see <xref><xrefnodename>Operation Types</xrefnodename></xref>). <indexterm index="cp">record dimension</indexterm>All dimensions, including the record dimension, are treated identically and preserved in the <var>output-file</var>.</para>
-      <para>See <xref><xrefnodename>Averaging vs. Concatenating</xrefnodename></xref>, for a description of the distinctions between the various averagers and concatenators. <indexterm index="cp">multi-file operators</indexterm><indexterm index="cp">standard input</indexterm><indexterm index="cp"><code>stdin</code></indexterm>As a multi-file operator, <command>ncea</command> will read the list of <var>input-files</var> from <code>stdin</code> if they are not specified as positional argum [...]
-      <para>The file is the logical unit of organization for the results of many scientific studies. Often one wishes to generate a file which is the gridpoint average of many separate files. This may be to reduce statistical noise by combining the results of a large number of experiments, or it may simply be a step in a procedure whose goal is to compute anomalies from a mean state. In any case, when one desires to generate a file whose properties are the mean of all the input files, th [...]
-      <para><command>ncea</command> only allows coordinate variables to be processed by the linear average, minimum, and maximum operations. <command>ncea</command> will return the linear average of coordinates unless extrema are explicitly requested. Other requested operations (e.g., square-root, RMS) are applied only to non-coordinate variables. In these cases the linear average of the coordinate variable will be returned.</para>
-      <para role="continues">EXAMPLES</para>
-      <para>Consider a model experiment which generated five realizations of one year of data, say 1985. You can imagine that the experimenter slightly perturbs the initial conditions of the problem before generating each new solution. Assume each file contains all twelve months (a seasonal cycle) of data and we want to produce a single file containing the ensemble average (mean) seasonal cycle. Here the numeric filename suffix denotes the experiment number (<emph>not</emph> the month):</para>
-      <example xml:space="preserve">ncea 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-ncea 85_0[1-5].nc 85.nc
-ncea -n 5,2,1 85_01.nc 85.nc</example>
-      <para role="continues">These three commands produce identical answers. See <xref><xrefnodename>Specifying Input Files</xrefnodename></xref>, for an explanation of the distinctions between these methods. The output file, <file>85.nc</file>, is the same size as the inputs files. It contains 12 months of data (which might or might not be stored in the record dimension, depending on the input files), but each value in the output file is the average of the five values in the input files [...]
-      <para>In the previous example, the user could have obtained the ensemble average values in a particular spatio-temporal region by adding a hyperslab argument to the command, e.g.,</para>
-      <example xml:space="preserve">ncea -d time,0,2 -d lat,-23.5,23.5 85_??.nc 85.nc</example>
-      <para role="continues">In this case the output file would contain only three slices of data in the <var>time</var> dimension. These three slices are the average of the first three slices from the input files. Additionally, only data inside the tropics is included.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>ncecat netCDF Ensemble Concatenator</nodename>
-    <nodenext>ncflint netCDF File Interpolator</nodenext>
-    <nodeprev>ncea netCDF Ensemble Averager</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncecat</command> netCDF Ensemble Concatenator</title>
-      <para><indexterm index="cp">concatenation</indexterm><indexterm index="cp">ensemble concatenation</indexterm><indexterm index="cp">ncecat</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncecat [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>]
-[-M] [-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-u <var>ulm_nm</var>] [-v <var>var</var>[,&dots;]] [-X ...] [-x]
-[<var>input-files</var>] [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncecat</command> concatenates an arbitrary number of input files into a single output file. The <var>input-files</var> are stored consecutively as records in <var>output-file</var>. Each variable (except coordinate variables) in each input file becomes one record in the same variable in the output file. Coordinate variables are not concatenated, they are instead simply copied from the first input file to the <var>output-file</var>. All <var>input-files</var> must con [...]
-      <para>A new record dimension is the glue which binds the input file data together. The new record dimension name is, by default, “record”. <indexterm index="cp">unlimited dimension</indexterm><indexterm index="cp">record dimension</indexterm><indexterm index="cp"><samp>-u <var>ulm_nm</var></samp></indexterm><indexterm index="cp"><samp>--ulm_nm <var>ulm_nm</var></samp></indexterm><indexterm index="cp"><samp>--rcd_nm <var>ulm_nm</var></samp></indexterm>Its name can be spe [...]
-      <para>Each extracted variable must be constant in size and rank across all <var>input-files</var>. <indexterm index="cp">record dimension</indexterm><indexterm index="cp">hyperslab</indexterm>The only exception is that <command>ncecat</command> allows files to differ in the record dimension size if the requested record hyperslab (see <xref><xrefnodename>Hyperslabs</xrefnodename></xref>) resolves to the same size for all files. <indexterm index="cp">IPCC</indexterm>This allows easie [...]
-      <para>Thus, the <var>output-file</var> size is the sum of the sizes of the extracted variables in the input files. See <xref><xrefnodename>Averaging vs. Concatenating</xrefnodename></xref>, for a description of the distinctions between the various averagers and concatenators. <indexterm index="cp">multi-file operators</indexterm><indexterm index="cp">standard input</indexterm><indexterm index="cp"><code>stdin</code></indexterm>As a multi-file operator, <command>ncecat</command> wil [...]
-      <para><indexterm index="cp"><code>-M</code></indexterm><indexterm index="cp"><code>--glb_mtd_spr</code></indexterm><indexterm index="cp">metadata, global</indexterm>Turn off global metadata copying. By default all <acronym><acronymword>NCO</acronymword></acronym> operators copy the global metadata of the first input file into <var>output-file</var>. This helps preserve the provenance of the output data. However, the use of metadata is burgeoning and is not uncommon to encounter fil [...]
-      <para><indexterm index="cp">climate model</indexterm>Consider five realizations, <file>85a.nc</file>, <file>85b.nc</file>, &dots; <file>85e.nc</file><!-- /@w --> of 1985 predictions from the same climate model. Then <code>ncecat 85?.nc 85_ens.nc</code> glues the individual realizations together into the single file, <file>85_ens.nc</file>. If an input variable was dimensioned [<code>lat</code>,<code>lon</code>], it will by default have dimensions [<code>record</code>,<code>lat</cod [...]
-      <para><indexterm index="cp">ncpdq</indexterm><indexterm index="cp">packing</indexterm><indexterm index="cp">unpacking</indexterm><indexterm index="cp"><code>add_offset</code></indexterm><indexterm index="cp"><code>scale_factor</code></indexterm>Concatenating a variable packed with different scales across multiple datasets is beyond the capabilities of <command>ncecat</command> (and <command>ncrcat</command>, the other concatenator (<xref><xrefnodename>Concatenation</xrefnodename></ [...]
-      <para role="continues">EXAMPLES</para>
-      <para>Consider a model experiment which generated five realizations of one year of data, say 1985. You can imagine that the experimenter slightly perturbs the initial conditions of the problem before generating each new solution. Assume each file contains all twelve months (a seasonal cycle) of data and we want to produce a single file containing all the seasonal cycles. Here the numeric filename suffix denotes the experiment number (<emph>not</emph> the month):</para>
-      <example xml:space="preserve">ncecat 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
-ncecat 85_0[1-5].nc 85.nc
-ncecat -n 5,2,1 85_01.nc 85.nc</example>
-      <para role="continues">These three commands produce identical answers. See <xref><xrefnodename>Specifying Input Files</xrefnodename></xref>, for an explanation of the distinctions between these methods. The output file, <file>85.nc</file>, is five times the size as a single <var>input-file</var>. It contains 60 months<!-- /@w --> of data.</para>
-      <para>One often prefers that the (new) record dimension have a more descriptive, context-based name than simply “record”. This is easily accomplished with the <samp>-u <var>ulm_nm</var></samp> switch:</para>
-      <example xml:space="preserve">ncecat -u realization 85_0[1-5].nc 85.nc</example>
-      <para role="continues">Users are more likely to understand the data processing history when such descriptive coordinates are used.</para>
-      <para><indexterm index="cp">record dimension</indexterm>Consider a file with an existing record dimension named <code>time</code>. and suppose the user wishes to convert <code>time</code> from a record dimension to a non-record dimension. This may be useful, for example, when the user has another use for the record variable. The procedure is to use <command>ncecat</command> followed by <command>ncwa</command>: <indexterm index="cp">degenerate dimension</indexterm></para>
-      <example xml:space="preserve">ncecat in.nc out.nc # Convert time to non-record dimension
-ncwa -a record in.nc out.nc # Remove new degenerate record dimension</example>
-      <para role="continues">The second step removes the degenerate record dimension. See <xref><xrefnodename>ncpdq netCDF Permute Dimensions Quickly</xrefnodename></xref> and <xref><xrefnodename>ncks netCDF Kitchen Sink</xrefnodename></xref> for other methods of of changing variable dimensionality, including the record dimension.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>ncflint netCDF File Interpolator</nodename>
-    <nodenext>ncks netCDF Kitchen Sink</nodenext>
-    <nodeprev>ncecat netCDF Ensemble Concatenator</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncflint</command> netCDF File Interpolator</title>
-      <para><indexterm index="cp">interpolation</indexterm><indexterm index="cp">adding data</indexterm><indexterm index="cp">multiplying data</indexterm><indexterm index="cp">addition</indexterm><indexterm index="cp">ncflint</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncflint [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-i <var>var</var>,<var>val3</var>]
-[-L <var>dfl_lvl</var>] [-l <var>path</var>] [-O] [-o <var>file_3</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,&dots;]] [-w <var>wgt1</var>[,<var>wgt2</var>]] [-X ...] [-x]
-<var>file_1</var> <var>file_2</var> [<var>file_3</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncflint</command> creates an output file that is a linear combination of the input files. This linear combination is a weighted average, a normalized weighted average, or an interpolation of the input files. Coordinate variables are not acted upon in any case, they are simply copied from <var>file_1</var>.</para>
-      <para>There are two conceptually distinct methods of using <command>ncflint</command>. The first method is to specify the weight each input file contributes to the output file. In this method, the value <var>val3</var> of a variable in the output file <var>file_3</var> is determined from its values <var>val1</var> and <var>val2</var> in the two input files according to</para>
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para><var>val3</var> = <var>wgt1</var>*<var>val1</var> + <var>wgt2</var>*<var>val2</var></para>
-      <clearvalue name="flg"></clearvalue>
-      <para>. Here at least <var>wgt1</var>, and, optionally, <var>wgt2</var>, are specified on the command line with the <samp>-w</samp> (or <samp>--weight</samp> or <samp>--wgt_var</samp>) switch. <indexterm index="cp"><code>-w <var>wgt1</var>[,<var>wgt2</var>]</code></indexterm><indexterm index="cp"><code>--weight <var>wgt1</var>[,<var>wgt2</var>]</code></indexterm><indexterm index="cp"><code>--wgt_var <var>wgt1</var>[,<var>wgt2</var>]</code></indexterm>If only <var>wgt1</var> is spec [...]
-      <para>The second method of using <command>ncflint</command> is to specify the interpolation option with <samp>-i</samp><!-- /@w --> (or with the <samp>--ntp</samp> or <samp>--interpolate</samp> long options). This is really the inverse of the first method in the following sense. When the user specifies the weights directly, <command>ncflint</command> has no work to do besides multiplying the input values by their respective weights and adding the results together to produce the out [...]
-      <para><indexterm index="cp">arrival value</indexterm>Another class of problems has the <dfn>arrival value</dfn> (i.e., <var>val3</var>) of a particular variable <var>var</var> known <emph>a priori<!-- /@w --></emph>. In this case, the implied weights can always be inferred by examining the values of <var>var</var> in the input files. This results in one equation in two unknowns, <var>wgt1</var> and <var>wgt2</var>:</para>
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para><var>val3</var> = <var>wgt1</var>*<var>val1</var> + <var>wgt2</var>*<var>val2</var></para>
-      <clearvalue name="flg"></clearvalue>
-      <para>. Unique determination of the weights requires imposing the additional constraint of normalization on the weights: <math><var>wgt1</var> + <var>wgt2</var> = 1</math>. Thus, to use the interpolation option, the user specifies <var>var</var> and <var>val3</var> with the <samp>-i</samp> option. <command>ncflint</command> then computes <var>wgt1</var> and <var>wgt2</var>, and uses these weights on all variables to generate the output file. Although <var>var</var> may have any num [...]
-      <para>If neither <samp>-i</samp> nor <samp>-w</samp> is specified on the command line, <command>ncflint</command> defaults to weighting each input file equally in the output file. This is equivalent to specifying <samp>-w 0.5</samp> or <samp>-w 0.5,0.5</samp>. Attempting to specify both <samp>-i</samp> and <samp>-w</samp> methods in the same command is an error.</para>
-      <para><command>ncflint</command> does not interpolate variables of type <code>NC_CHAR</code> and <code>NC_BYTE</code>. This behavior is hardcoded.</para>
-      <para><indexterm index="cp">missing values</indexterm><indexterm index="cp"><code>_FillValue</code></indexterm>Depending on your intuition, <command>ncflint</command> may treat missing values unexpectedly. Consider a point where the value in one input file, say <var>val1</var>, equals the missing value <var>mss_val_1</var> and, at the same point, the corresponding value in the other input file <var>val2</var> is not misssing (i.e., does not equal <var>mss_val_2</var>). There are th [...]
-      <para>Option one<!-- /@w --> is to set <math><var>val3</var> = <var>mss_val_1</var></math>. The rationale is that <command>ncflint</command> is, at heart, an interpolator and interpolation involving a missing value is intrinsically undefined. <command>ncflint</command> currently implements this behavior since it is the most conservative and least likely to lead to misinterpretation.</para>
-      <para>Option two<!-- /@w --> is to output the weighted valid data point, i.e.,</para>
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para><var>val3</var> = <var>wgt2</var>*<var>val2</var></para>
-      <clearvalue name="flg"></clearvalue>
-      <para>. The rationale for this behavior is that interpolation is really a weighted average of known points, so <command>ncflint</command> should weight the valid point.</para>
-      <para>Option three<!-- /@w --> is to return the <emph>unweighted</emph> valid point, i.e., <math><var>val3</var> = <var>val2</var></math>. This behavior would appeal to those who use <command>ncflint</command> to estimate data using the closest available data. When a point is not bracketed by valid data on both sides, it is better to return the known datum than no datum at all.</para>
-      <para>The current implementation uses the first approach, Option one<!-- /@w -->. If you have strong opinions on this matter, let us know, since we are willing to implement the other approaches as options if there is enough interest.</para>
-      <para role="continues">EXAMPLES</para>
-      <para>Although it has other uses, the interpolation feature was designed to interpolate <var>file_3</var> to a time between existing files. Consider input files <file>85.nc</file> and <file>87.nc</file> containing variables describing the state of a physical system at times <math><code>time</code> = 85</math> and <math><code>time</code> = 87</math>. Assume each file contains its timestamp in the scalar variable <code>time</code>. Then, to linearly interpolate to a file <file>86.nc< [...]
-      <example xml:space="preserve">ncflint -i time,86 85.nc 87.nc 86.nc</example>
-      <para>Say you have observational data covering January and April 1985 in two files named <file>85_01.nc</file> and <file>85_04.nc</file>, respectively. Then you can estimate the values for February and March by interpolating the existing data as follows. Combine <file>85_01.nc</file> and <file>85_04.nc</file> in a 2:1 ratio to make <file>85_02.nc</file>:</para>
-      <example xml:space="preserve">ncflint -w 0.667 85_01.nc 85_04.nc 85_02.nc
-ncflint -w 0.667,0.333 85_01.nc 85_04.nc 85_02.nc</example>
-      <para>Multiply <file>85.nc</file> by 3<!-- /@w --> and by −2<!-- /@w --> and add them together to make <file>tst.nc</file>:</para>
-      <example xml:space="preserve">ncflint -w 3,-2 85.nc 85.nc tst.nc</example>
-      <para role="continues"><indexterm index="cp">null operation</indexterm>This is an example of a null operation, so <file>tst.nc</file> should be identical (within machine precision) to <file>85.nc</file>.</para>
-      <para>Add <file>85.nc</file> to <file>86.nc</file> to obtain <file>85p86.nc</file>, then subtract <file>86.nc</file> from <file>85.nc</file> to obtain <file>85m86.nc</file></para>
-      <example xml:space="preserve">ncflint -w 1,1 85.nc 86.nc 85p86.nc
-ncflint -w 1,-1 85.nc 86.nc 85m86.nc
-ncdiff 85.nc 86.nc 85m86.nc</example>
-      <para role="continues">Thus <command>ncflint</command> can be used to mimic some <command>ncbo</command> operations. <indexterm index="cp">broadcasting variables</indexterm>However this is not a good idea in practice because <command>ncflint</command> does not broadcast (see <xref><xrefnodename>ncbo netCDF Binary Operator</xrefnodename></xref>) conforming variables during arithmetic. Thus the final two commands would produce identical results except that <command>ncflint</command>  [...]
-      <para><indexterm index="cp"><code>units</code></indexterm>Rescale the dimensional units of the surface pressure <code>prs_sfc</code> from Pascals to hectopascals (millibars)</para>
-      <example xml:space="preserve">ncflint -C -v prs_sfc -w 0.01,0.0 in.nc in.nc out.nc
-ncatted -a units,prs_sfc,o,c,millibar out.nc</example>
-      <para role="continues"></para>
-    </section>
-  </node>
-  <node>
-    <nodename>ncks netCDF Kitchen Sink</nodename>
-    <nodenext>ncpdq netCDF Permute Dimensions Quickly</nodenext>
-    <nodeprev>ncflint netCDF File Interpolator</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncks</command> netCDF Kitchen Sink</title>
-      <para><indexterm index="cp">kitchen sink</indexterm><indexterm index="cp">printing files contents</indexterm><indexterm index="cp">printing variables</indexterm><indexterm index="cp">ncks</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncks [-3] [-4] [-6] [-A] [-a] [-B] [-b <var>binary-file</var>] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [--fix_rec_dmn]
-[-F] [-H] [-h] [--hdr_pad <var>nbr</var>] [-L <var>dfl_lvl</var>] [-l <var>path</var>] [-M] [-m] [--mk_rec_dmn <var>dim</var>]
-[-O] [-o <var>output-file</var>] [-P] [-p <var>path</var>] [-Q] [-q] [-R] [-r]
-[-s <var>format</var>] [-u] [-v <var>var</var>[,&dots;]] [-X ...] [-x]
-<var>input-file</var> [[<var>output-file</var>]]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><indexterm index="cp"><command>ncextr</command></indexterm><command>ncks</command> combines selected features of <command>ncdump</command>, <command>ncextr</command>, and the nccut and ncpaste specifications into one versatile utility. <command>ncks</command> extracts a subset of the data from <var>input-file</var> and prints it as <acronym><acronymword>ASCII</acronymword></acronym> text to <file>stdout</file>, writes it in flat binary format to <file>binary-file</file>, and  [...]
-      <para><command>ncks</command> will print netCDF data in <acronym><acronymword>ASCII</acronymword></acronym> format to <code>stdout</code>, like <command>ncdump</command>, but with these differences: <command>ncks</command> prints data in a tabular format intended to be easy to search for the data you want, one datum per screen line, with all dimension subscripts and coordinate values (if any) preceding the datum. Option <samp>-s</samp> (or long options <samp>--sng_fmt</samp> and <s [...]
-      <para>Options <samp>-a</samp>, <samp>-F</samp> , <samp>-H</samp>, <samp>-M</samp>, <samp>-m</samp>, <samp>-P</samp>, <samp>-Q</samp>, <samp>-q</samp>, <samp>-s</samp>, and <samp>-u</samp> (and their long option counterparts) control the formatted appearance of the data.</para>
-      <para><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm><command>ncks</command> extracts (and optionally creates a new netCDF file comprised of) only selected variables from the input file (similar to the old <command>ncextr</command> specification). Only variables and coordinates may be specifically included or excluded—all global attributes and any attribute associated with an extracted variable are copied to the screen a [...]
-      <para><command>ncks</command> extracts hyperslabs from the specified variables (<command>ncks</command> implements the original <command>nccut</command> specification). Option <samp>-d</samp> controls the hyperslab specification. Input dimensions that are not associated with any output variable do not appear in the output netCDF. This feature removes superfluous dimensions from netCDF files.</para>
-      <para><indexterm index="cp">appending data</indexterm><indexterm index="cp">merging files</indexterm><command>ncks</command> will append variables and attributes from the <var>input-file</var> to <var>output-file</var> if <var>output-file</var> is a pre-existing netCDF file whose relevant dimensions conform to dimension sizes of <var>input-file</var>. The append features of <command>ncks</command> are intended to provide a rudimentary means of adding data from one netCDF file to an [...]
-      <para>If <var>output-file</var> exists, the user will be queried whether to <dfn>overwrite</dfn>, <dfn>append</dfn>, or <dfn>exit</dfn> the <command>ncks</command> call completely. Choosing <dfn>overwrite</dfn> destroys the existing <var>output-file</var> and create an entirely new one from the output of the <command>ncks</command> call. Append has differing effects depending on the uniqueness of the variables and attributes output by <command>ncks</command>: If a variable or attri [...]
-      <para>Since there can only be one record dimension in a file, the record dimension must have the same name (but not necessarily the same size) in both files if a record dimension variable is to be appended. If the record dimensions are of differing sizes, the record dimension of <var>output-file</var> will become the greater of the two record dimension sizes, the record variable from <var>input-file</var> will overwrite any counterpart in <var>output-file</var> and fill values will [...]
-      <para>Some users may wish to avoid interactive <command>ncks</command> queries about whether to overwrite existing data. For example, batch scripts will fail if <command>ncks</command> does not receive responses to its queries. Options <samp>-O</samp> and <samp>-A</samp> are available to force overwriting existing files and variables, respectively.</para>
-
-      <unnumberedsubsec>
-        <title>Options specific to <command>ncks</command></title>
-        <para>The following list provides a short summary of the features unique to <command>ncks</command>. Features common to many operators are described in <xref><xrefnodename>Common features</xrefnodename></xref>.</para>
-        <table><indexterm index="cp">alphabetization</indexterm><indexterm index="cp">sort alphabetically</indexterm><indexterm index="cp"><code>-a</code></indexterm><indexterm index="cp"><code>--abc</code></indexterm><indexterm index="cp"><code>--alphabetize</code></indexterm>
-          <tableitem>
-            <tableterm><samp>-a</samp></tableterm>
-            <item>
-              <para>Do not alphabetize extracted fields. By default, the specified output variables are extracted, printed, and written to disk in alphabetical order. This tends to make long output lists easier to search for particular variables. Specifying <code>-a</code> results in the variables being extracted, printed, and written to disk in the order in which they were saved in the input file. Thus <code>-a</code> retains the original ordering of the variables. Also <samp>--abc</sam [...]
-              <para><indexterm index="cp">binary format</indexterm><indexterm index="cp"><code>-B</code></indexterm><indexterm index="cp"><code>--bnr</code></indexterm><indexterm index="cp"><code>--binary</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-B <file>file</file></samp></tableterm>
-            <item>
-              <para>Activate native machine binary output writing to the default binary file, <file>ncks.bnr</file>. The <code>-B</code> switch is redundant when the <code>-b</code> <file>file</file><!-- /@w --> option is specified, and native binary output will be directed to the binary file <file>file</file>. Also <samp>--bnr</samp> and <samp>--binary</samp>. Writing packed variables in binary format is not supported.</para>
-              <para><indexterm index="cp"><code>-b</code></indexterm><indexterm index="cp"><code>--fl_bnr</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-b <file>file</file></samp></tableterm>
-            <item>
-              <para>Activate native machine binary output writing to binary file <file>file</file>. Also <samp>--fl_bnr</samp> and <samp>--binary-file</samp>. Writing packed variables in binary format is not supported.</para>
-              <para><indexterm index="cp">stride</indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]]</samp></tableterm>
-            <item>
-              <para>Add <dfn>stride</dfn> argument to hyperslabber. For a complete description of the <var>stride</var> argument, See <xref><xrefnodename>Stride</xrefnodename></xref>.</para>
-              <para><indexterm index="cp">record dimension</indexterm><indexterm index="cp">fixed dimension</indexterm><indexterm index="cp"><code>--fix_rec_dmn</code></indexterm><indexterm index="cp"><code>--no_rec_dmn</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>--fix_rec_dmn</samp></tableterm>
-            <item>
-              <para>Change all record dimensions in the input file into fixed dimensions in the output file. Also <samp>--no_rec_dmn</samp>.</para>
-              <para><indexterm index="cp">record dimension</indexterm><indexterm index="cp">fixed dimension</indexterm><indexterm index="cp"><code>--mk_rec_dmn <var>dim</var></code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>--mk_rec_dmn <var>dim</var></samp></tableterm>
-            <item>
-              <para>Change existing dimension <var>dim</var> to a record dimension in the output file. See <xref><xrefnodename>ncecat netCDF Ensemble Concatenator</xrefnodename></xref> and <xref><xrefnodename>ncpdq netCDF Permute Dimensions Quickly</xrefnodename></xref> for other methods of changing variable dimensionality, including the record dimension.</para>
-              <para><indexterm index="cp"><code>-H</code></indexterm><indexterm index="cp"><code>--data</code></indexterm><indexterm index="cp"><code>--hieronymus</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-H</samp></tableterm>
-            <item>
-              <para>Print data to screen. Also activated using <samp>--print</samp> or <samp>--prn</samp>. By default <command>ncks</command> prints all metadata and data to screen if no netCDF output file is specified. Use <samp>-H</samp> to print data to screen if a netCDF output is specified, or to restrict printing to data (no metadata) when no netCDF output is specified. Unless otherwise specified (with <code>-s</code>), each element of the data hyperslab prints on a separate line c [...]
-              <example xml:space="preserve">% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-...
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23</example>
-              <para>Printing the same variable with the <samp>-F</samp> option shows the same variable indexed with Fortran conventions</para>
-              <example xml:space="preserve">% ncks -F -C -v three_dmn_var in.nc
-lon(1)=0 lev(1)=100 lat(1)=-90 three_dmn_var(1)=0
-lon(2)=90 lev(1)=100 lat(1)=-90 three_dmn_var(2)=1
-lon(3)=180 lev(1)=100 lat(1)=-90 three_dmn_var(3)=2
-...</example>
-              <para>Printing a hyperslab does not affect the variable or dimension indices since these indices are relative to the full variable (as stored in the input file), and the input file has not changed. However, if the hyperslab is saved to an output file and those values are printed, the indices will change: 
-<!-- fxm: replace with new MSA output style --></para>
-              <example xml:space="preserve">% ncks -H -d lat,90.0 -d lev,1000.0 -v three_dmn_var in.nc out.nc
-...
-lat[1]=90 lev[2]=1000 lon[0]=0 three_dmn_var[20]=20
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-% ncks -C -v three_dmn_var out.nc
-lat[0]=90 lev[0]=1000 lon[0]=0 three_dmn_var[0]=20
-lat[0]=90 lev[0]=1000 lon[1]=90 three_dmn_var[1]=21
-lat[0]=90 lev[0]=1000 lon[2]=180 three_dmn_var[2]=22
-lat[0]=90 lev[0]=1000 lon[3]=270 three_dmn_var[3]=23</example>
-              <para><indexterm index="cp"><code>-M</code></indexterm><indexterm index="cp"><code>--Mtd</code></indexterm><indexterm index="cp"><code>--Metadata</code></indexterm><indexterm index="cp">metadata, global</indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-M</samp></tableterm>
-            <item>
-              <para>Print to screen the global metadata describing the file. This includes file summary information and global attributes. Also <samp>--Mtd</samp> and <samp>--Metadata</samp>. By default <command>ncks</command> prints global metadata to screen if no netCDF output file and no variable extraction list is specified (with <samp>-v</samp>). Use <samp>-M</samp> to print global metadata to screen if a netCDF output is specified, or if a variable extraction list is specified (wit [...]
-              <para>The various combinations of printing switches can be confusing. In an attempt to anticipate what most users want to do, <command>ncks</command> uses context-sensitive defaults for printing. Our goal is to minimize the use of switches required to accomplish the common operations. We assume that users creating a new file or overwriting (e.g., with <samp>-O</samp>) an existing file usually wish to copy all global and variable-specific attributes to the new file. In contr [...]
-              <example xml:space="preserve">ncks -O              in.nc out.nc # Copy   VAs and GAs
-ncks -O       -v one in.nc out.nc # Copy   VAs and GAs
-ncks -O -M    -v one in.nc out.nc # Copy   VAs not GAs
-ncks -O    -m -v one in.nc out.nc # Copy   GAs not VAs
-ncks -O -M -m -v one in.nc out.nc # Copy   only data (no atts)
-ncks -A              in.nc out.nc # Append VAs and GAs
-ncks -A       -v one in.nc out.nc # Append VAs not GAs
-ncks -A -M    -v one in.nc out.nc # Append VAs and GAs
-ncks -A    -m -v one in.nc out.nc # Append only data (no atts)
-ncks -A -M -m -v one in.nc out.nc # Append GAs not VAs</example>
-              <para>where <code>VAs</code> and <code>GAs</code> denote variable and global attributes, respectively.</para>
-              <para><indexterm index="cp"><command>ncdump</command></indexterm><indexterm index="cp"><code>-m</code></indexterm><indexterm index="cp"><code>--mtd</code></indexterm><indexterm index="cp"><code>--metadata</code></indexterm><indexterm index="cp">metadata</indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-m</samp></tableterm>
-            <item>
-              <para>Print variable metadata to screen (similar to <kbd>ncdump -h</kbd>). This displays all metadata pertaining to each variable, one variable at a time. <indexterm index="cp">chunking</indexterm><indexterm index="cp">compression</indexterm><indexterm index="cp">deflation</indexterm>This includes information on the storage properties of the variable, such as whether it employs chunking, compression, or packing. Also activated using <samp>--mtd</samp> and <samp>--metadata</ [...]
-              <para><indexterm index="cp"><code>-P</code></indexterm><indexterm index="cp"><code>--print</code></indexterm><indexterm index="cp"><code>--prn</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-P</samp></tableterm>
-            <item>
-              <para>Print data, metadata, and units to screen. The <samp>-P</samp> switch is a convenience abbreviation for <samp>-C -H -M -m -u</samp>. Also activated using <samp>--print</samp> or <samp>--prn</samp>. This set of switches is useful for exploring file contents.</para>
-              <para><indexterm index="cp"><code>-Q</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-Q</samp></tableterm>
-            <item>
-              <para>Toggle printing of dimension indices and coordinate values when printing arrays. Each variable's name appears flush left in the output. This helps locate specific variables in lists with many variables and different dimensions.</para>
-              <para><indexterm index="cp"><code>-q</code></indexterm><indexterm index="cp"><code>--quiet</code></indexterm><indexterm index="cp">quiet</indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-q</samp></tableterm>
-            <item>
-              <para>Turn off all printing to screen. This overrides the setting of all print-related switches, equivalent to <kbd>-H -M -m</kbd> when in single-file printing mode. When invoked with <code>-R</code> (see <xref><xrefnodename>Retaining Retrieved Files</xrefnodename></xref>), <command>ncks</command> automatically sets <code>-q</code>. This allows <command>ncks</command> to retrieve remote files without automatically trying to print them. Also <samp>--quiet</samp>.</para>
-              <para><indexterm index="cp"><code>-s</code></indexterm><indexterm index="cp"><code>--string</code></indexterm><indexterm index="cp"><code>--sng_fmt</code></indexterm><indexterm index="cp"><code>printf()</code></indexterm><indexterm index="cp">C language</indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-s <var>format</var></samp></tableterm>
-            <item>
-              <para>String format for text output. Accepts C language<!-- /@w --> escape sequences and <code>printf()</code> formats. Also <samp>--string</samp>  and <samp>--sng_fmt</samp>.</para>
-              <para><indexterm index="cp"><code>-u</code></indexterm><indexterm index="cp"><code>--units</code></indexterm></para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><samp>-u</samp></tableterm>
-            <item>
-              <para>Toggle the printing of a variable's <code>units</code> attribute, if any, with its values. Also <samp>--units</samp>.</para>
-            </item>
-          </tableitem>
-        </table>
-        <para role="continues">EXAMPLES</para>
-        <para>View all data in netCDF <file>in.nc</file>, printed with Fortran indexing conventions:</para>
-        <example xml:space="preserve">ncks -F in.nc</example>
-        <para>Copy the netCDF file <file>in.nc</file> to file <file>out.nc</file>.</para>
-        <example xml:space="preserve">ncks in.nc out.nc</example>
-        <para>Now the file <file>out.nc</file> contains all the data from <file>in.nc</file>. There are, however, two differences between <file>in.nc</file> and <file>out.nc</file>. <indexterm index="cp"><code>history</code></indexterm>First, the <code>history</code> global attribute (see <xref><xrefnodename>History Attribute</xrefnodename></xref>) will contain the command used to create <file>out.nc</file>. <indexterm index="cp">alphabetize output</indexterm><indexterm index="cp">sort a [...]
-        <para><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm><indexterm index="cp">subsetting</indexterm><indexterm index="cp">exclusion</indexterm><indexterm index="cp">extraction</indexterm><indexterm index="cp"><code>-v <var>var</var></code></indexterm><indexterm index="cp"><code>--variable <var>var</var></code></indexterm><indexterm index="cp"><code>-x</code></indexterm><indexterm index="cp"><code>--exclude</code></indexterm><in [...]
-        <example xml:space="preserve">ncks -A -x ~/nco/data/in.nc ~/out.nc</example>
-        <para>The <samp>-x</samp> switch tells <acronym><acronymword>NCO</acronymword></acronym> to use the complement of the extraction list (see <xref><xrefnodename>Subsetting Variables</xrefnodename></xref>). Since no extraction list is explicitly specified (with <samp>-v</samp>), the default is to extract all variables. The complement of all variables is no variables. <indexterm index="cp"><code>-A</code></indexterm><indexterm index="cp"><code>--apn</code></indexterm><indexterm index [...]
-        <para><indexterm index="cp"><code>printf()</code></indexterm><indexterm index="cp"><code>\n</code> (linefeed)</indexterm><indexterm index="cp"><code>\t</code> (horizontal tab)</indexterm>Print variable <code>three_dmn_var</code> from file <file>in.nc</file> with default notations. Next print <code>three_dmn_var</code> as an un-annotated text column. Then print <code>three_dmn_var</code> signed with very high precision. Finally, print <code>three_dmn_var</code> as a comma-separate [...]
-        <example xml:space="preserve">% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-...
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-% ncks -s '%f\n' -C -v three_dmn_var in.nc
-0.000000
-1.000000
-...
-23.000000
-% ncks -s '%+16.10f\n' -C -v three_dmn_var in.nc
-   +0.0000000000
-   +1.0000000000
-...
-  +23.0000000000
-% ncks -s '%f, ' -C -v three_dmn_var in.nc
-0.000000, 1.000000, ..., 23.000000,</example>
-        <para role="continues">The second and third options are useful when pasting data into text files like reports or papers. See <xref><xrefnodename>ncatted netCDF Attribute Editor</xrefnodename></xref>, for more details on string formatting and special characters.</para>
-        <para>One dimensional arrays of characters stored as netCDF variables are automatically printed as strings, whether or not they are NUL-terminated, e.g.,</para>
-        <example xml:space="preserve">ncks -v fl_nm in.nc</example>
-        <para role="continues">The <code>%c</code> formatting code is useful for printing multidimensional arrays of characters representing fixed length strings</para>
-        <example xml:space="preserve">ncks -s '%c' -v fl_nm_arr in.nc</example>
-        <para role="continues"><indexterm index="cp"><code>core dump</code></indexterm>Using the <code>%s</code> format code on strings which are not NUL-terminated (and thus not technically strings) is likely to result in a core dump.</para>
-        <para><indexterm index="cp">subsetting</indexterm><indexterm index="cp">exclusion</indexterm><indexterm index="cp">extraction</indexterm>Create netCDF <file>out.nc</file> containing all variables, and any associated coordinates, except variable <code>time</code>, from netCDF <file>in.nc</file>:</para>
-        <example xml:space="preserve">ncks -x -v time in.nc out.nc</example>
-        <para>Extract variables <code>time</code> and <code>pressure</code> from netCDF <file>in.nc</file>. If <file>out.nc</file> does not exist it will be created. Otherwise the you will be prompted whether to append to or to overwrite <file>out.nc</file>:</para>
-        <example xml:space="preserve">ncks -v time,pressure in.nc out.nc
-ncks -C -v time,pressure in.nc out.nc</example>
-        <para role="continues">The first version of the command creates an <file>out.nc</file> which contains <code>time</code>, <code>pressure</code>, and any coordinate variables associated with <var>pressure</var>. The <file>out.nc</file> from the second version is guaranteed to contain only two variables <code>time</code> and <code>pressure</code>.</para>
-        <para>Create netCDF <file>out.nc</file> containing all variables from file <file>in.nc</file>. Restrict the dimensions of these variables to a hyperslab. Print (with <code>-H</code>) the hyperslabs to the screen for good measure. The specified hyperslab is: the fifth value in dimension <code>time</code>; the half-open range <math><var>lat</var> > 0.</math> in coordinate <code>lat</code>; the half-open range <math><var>lon</var> < 330.</math> in coordinate <code>lon</code>;  [...]
-        <example xml:space="preserve">ncks -H -d time,5 -d lat,,0.0 -d lon,330.0, -d band,0.3,0.5
--d lev,1000.0 in.nc out.nc</example>
-        <para><indexterm index="cp">wrapped coordinates</indexterm>Assume the domain of the monotonically increasing longitude coordinate <code>lon</code> is <math>0 < <var>lon</var> < 360</math>. Here, <code>lon</code> is an example of a wrapped coordinate. <command>ncks</command> will extract a hyperslab which crosses the Greenwich meridian simply by specifying the westernmost longitude as <var>min</var> and the easternmost longitude as <var>max</var>, as follows:</para>
-        <example xml:space="preserve">ncks -d lon,260.0,45.0 in.nc out.nc</example>
-        <para>For more details See <xref><xrefnodename>Wrapped Coordinates</xrefnodename></xref>.</para>
-      </unnumberedsubsec>
-    </section>
-  </node>
-  <node>
-    <nodename>ncpdq netCDF Permute Dimensions Quickly</nodename>
-    <nodenext>ncra netCDF Record Averager</nodenext>
-    <nodeprev>ncks netCDF Kitchen Sink</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncpdq</command> netCDF Permute Dimensions Quickly</title>
-      <para><indexterm index="cp">ncpdq</indexterm><indexterm index="cp">ncpack</indexterm><indexterm index="cp">ncunpack</indexterm><indexterm index="cp">reshape variables</indexterm><indexterm index="cp">permute dimensions</indexterm><indexterm index="cp">reverse dimensions</indexterm><indexterm index="cp">re-order dimensions</indexterm><indexterm index="cp">re-dimension</indexterm><indexterm index="cp">packing</indexterm><indexterm index="cp">unpacking</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncpdq [-3] [-4] [-6] [-A] [-a [-]<var>dim</var>[,&dots;]] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>]
-[-M <var>pck_map</var>] [-O] [-o <var>output-file</var>] [-P <var>pck_plc</var>] [-p <var>path</var>]
-[-R] [-r] [-t <var>thr_nbr</var>] [-U] [-v <var>var</var>[,&dots;]] [-X ...] [-x]
-<var>input-file</var> [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncpdq</command> performs one of two distinct functions, packing or dimension permutation, but not both, when invoked. <command>ncpdq</command> is optimized to perform these actions in a parallel fashion with a minimum of time and memory. The <dfn>pdq</dfn> may stand for “Permute Dimensions Quickly”, “Pack Data Quietly”, “Pillory Dan Quayle”, or other silly uses.</para>
-      <para><indexterm index="cp"><code>add_offset</code></indexterm><indexterm index="cp"><code>scale_factor</code></indexterm><indexterm index="cp"><command>ncap2</command></indexterm><indexterm index="cp">packing policy</indexterm></para>
-      <unnumberedsubsec>
-        <title>Packing and Unpacking Functions</title>
-        <para>The <command>ncpdq</command> packing (and unpacking) algorithms are described in <xref><xrefnodename>Methods and functions</xrefnodename></xref>, and are also implemented in <command>ncap2</command>. <command>ncpdq</command> extends the functionality of these algorithms by providing high level control of the <dfn>packing policy</dfn> so that users can consistently pack (and unpack) entire files with one command. <indexterm index="cp"><var>pck_plc</var></indexterm><indexterm [...]
-        <table>
-          <tableitem>
-            <tableterm><dfn>Packing (and Re-Packing) Variables [<emph>default</emph>]</dfn></tableterm>
-            <item>
-              <para>Definition: Pack unpacked variables, re-pack packed variables&linebreak; Alternate invocation: <code>ncpack</code>&linebreak; <var>pck_plc</var> key values: <samp>all_new</samp>, <samp>pck_all_new_att</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Packing (and not Re-Packing) Variables</dfn></tableterm>
-            <item>
-              <para>Definition: Pack unpacked variables, copy packed variables&linebreak; Alternate invocation: none&linebreak; <var>pck_plc</var> key values: <samp>all_xst</samp>, <samp>pck_all_xst_att</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Re-Packing Variables</dfn></tableterm>
-            <item>
-              <para>Definition: Re-pack packed variables, copy unpacked variables&linebreak; Alternate invocation: none&linebreak; <var>pck_plc</var> key values: <samp>xst_new</samp>, <samp>pck_xst_new_att</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Unpacking</dfn></tableterm>
-            <item>
-              <para>Definition: Unpack packed variables, copy unpacked variables&linebreak; Alternate invocation: <code>ncunpack</code>&linebreak; <var>pck_plc</var> key values: <samp>upk</samp>, <samp>unpack</samp>, <samp>pck_upk</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-        </table>
-        <para role="continues">Equivalent key values are fully interchangeable. Multiple equivalent options are provided to satisfy disparate needs and tastes of <acronym><acronymword>NCO</acronymword></acronym> users working with scripts and from the command line.</para>
-        <para>Regardless of the packing policy selected, <command>ncpdq</command> no longer (as of <acronym><acronymword>NCO</acronymword></acronym> version 4.0.4 in October, 2010) packs coordinate variables, or the special variables, weights, and other grid properties described in <xref><xrefnodename>CF Conventions</xrefnodename></xref>. Prior <command>ncpdq</command> versions treated coordinate variables and grid properties no differently from other variables. However, coordinate varia [...]
-        <para>To reduce required memorization of these complex policy switches, <command>ncpdq</command> may also be invoked via a synonym or with switches that imply a particular policy. <command>ncpack</command> is a synonym for <command>ncpdq</command> and behaves the same in all respects. Both <command>ncpdq</command> and <command>ncpack</command> assume a default packing policy request of <samp>all_new</samp>. Hence <command>ncpack</command> may be invoked without any <samp>-P</samp [...]
-        <para>Given the menagerie of synonyms, equivalent options, and implied options, a short list of some equivalent commands is appropriate. The following commands are equivalent for packing: <code>ncpdq -P all_new</code>, <code>ncpdq --pck_plc=all_new</code>, and <code>ncpack</code>. The following commands are equivalent for unpacking: <code>ncpdq -P upk</code>, <code>ncpdq -U</code>, <code>ncpdq --pck_plc=unpack</code>, and <code>ncunpack</code>. Equivalent commands for other packi [...]
-        <para><indexterm index="cp">packing map</indexterm><indexterm index="cp"><var>pck_map</var></indexterm><indexterm index="cp"><code>-M <var>pck_map</var></code></indexterm><indexterm index="cp"><code>--pck_map <var>pck_map</var></code></indexterm><indexterm index="cp"><code>--map <var>pck_map</var></code></indexterm>The <command>ncpdq</command> packing algorithms must know to which type particular types of input variables are to be packed. The correspondence between the input vari [...]
-        <table>
-          <tableitem>
-            <tableterm><dfn>Pack Floating Precisions to <code>NC_SHORT</code> [<emph>default</emph>]</dfn></tableterm>
-            <item>
-              <para>Definition: Pack floating precision types to <code>NC_SHORT</code>&linebreak; Map: Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>] to <code>NC_SHORT</code>&linebreak; Types copied instead of packed: [<code>NC_INT</code>,<code>NC_SHORT</code>,<code>NC_CHAR</code>,<code>NC_BYTE</code>]&linebreak; <var>pck_map</var> key values: <samp>flt_sht</samp>, <samp>pck_map_flt_sht</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Pack Floating Precisions to <code>NC_BYTE</code></dfn></tableterm>
-            <item>
-              <para>Definition: Pack floating precision types to <code>NC_BYTE</code>&linebreak; Map: Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>] to <code>NC_BYTE</code>&linebreak; Types copied instead of packed: [<code>NC_INT</code>,<code>NC_SHORT</code>,<code>NC_CHAR</code>,<code>NC_BYTE</code>]&linebreak; <var>pck_map</var> key values: <samp>flt_byt</samp>, <samp>pck_map_flt_byt</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Pack Higher Precisions to <code>NC_SHORT</code></dfn></tableterm>
-            <item>
-              <para>Definition: Pack higher precision types to <code>NC_SHORT</code>&linebreak; Map: Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>,<code>NC_INT</code>] to <code>NC_SHORT</code>&linebreak; Types copied instead of packed: [<code>NC_SHORT</code>,<code>NC_CHAR</code>,<code>NC_BYTE</code>]&linebreak; <var>pck_map</var> key values: <samp>hgh_sht</samp>, <samp>pck_map_hgh_sht</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Pack Higher Precisions to <code>NC_BYTE</code></dfn></tableterm>
-            <item>
-              <para>Definition: Pack higher precision types to <code>NC_BYTE</code>&linebreak; Map: Pack [<code>NC_DOUBLE</code>,<code>NC_FLOAT</code>,<code>NC_INT</code>,<code>NC_SHORT</code>] to <code>NC_BYTE</code>&linebreak; Types copied instead of packed: [<code>NC_CHAR</code>,<code>NC_BYTE</code>]&linebreak; <var>pck_map</var> key values: <samp>hgh_byt</samp>, <samp>pck_map_hgh_byt</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-          <tableitem>
-            <tableterm><dfn>Pack to Next Lesser Precision</dfn></tableterm>
-            <item>
-              <para>Definition: Pack each type to type of next lesser size&linebreak; Map: Pack <code>NC_DOUBLE</code> to <code>NC_INT</code>. Pack [<code>NC_FLOAT</code>,<code>NC_INT</code>] to <code>NC_SHORT</code>. Pack <code>NC_SHORT</code> to <code>NC_BYTE</code>.&linebreak; Types copied instead of packed: [<code>NC_CHAR</code>,<code>NC_BYTE</code>]&linebreak; <var>pck_map</var> key values: <samp>nxt_lsr</samp>, <samp>pck_map_nxt_lsr</samp>&linebreak;</para>
-            </item>
-          </tableitem>
-        </table>
-        <para role="continues">The default <samp>all_new</samp> packing policy with the default <samp>flt_sht</samp> packing map reduces the typical <code>NC_FLOAT</code>-dominated file size by about 50%.<!-- /@w --> <samp>flt_byt</samp> packing reduces an <code>NC_DOUBLE</code>-dominated file by about 87%.<!-- /@w --></para>
-        <para><indexterm index="cp"><var>_FillValue</var></indexterm><indexterm index="cp"><code>_FillValue</code></indexterm><indexterm index="cp"><code>NUL</code></indexterm>The netCDF packing algorithm (see <xref><xrefnodename>Methods and functions</xrefnodename></xref>) is lossy—once packed, the exact original data cannot be recovered without a full backup. Hence users should be aware of some packing caveats: First, the interaction of packing and data equal to the <var>_FillVal [...]
-      </unnumberedsubsec>
-
-      <unnumberedsubsec>
-        <title>Dimension Permutation</title>
-        <para><command>ncpdq</command> re-shapes variables in <var>input-file</var> by re-ordering and/or reversing dimensions specified in the dimension list. The dimension list is a whitespace-free, comma separated list of dimension names, optionally prefixed by negative signs, that follows the <samp>-a</samp> (or long options <samp>--arrange</samp>, <samp>--permute</samp>, <samp>--re-order</samp>, or <samp>--rdr</samp>) switch. To re-order variables by a subset of their dimensions, sp [...]
-        <para><indexterm index="cp">record dimension</indexterm>Users may specify any permutation of dimensions, including permutations which change the record dimension identity. The record dimension is re-ordered like any other dimension. <indexterm index="cp">concatenation</indexterm><indexterm index="cp">record dimension</indexterm>This unique <command>ncpdq</command> capability makes it possible to concatenate files along any dimension. See <xref><xrefnodename>Concatenation</xrefnod [...]
-        <para>Two special cases of dimension re-ordering and reversal deserve special mention. First, it may be desirable to completely reverse the storage order of a variable. To do this, include all the variable's dimensions in the dimension re-order list in their original order, and prefix each dimension name with the negative sign. <indexterm index="cp">transpose</indexterm>Second, it may useful to transpose a variable's storage order, e.g., from C<!-- /@w --> to Fortran data storage [...]
-<!-- fxm: discuss netCDF-imposed constraints here -->
-        <para role="continues">EXAMPLES</para>
-        <para>Pack and unpack all variables in file <file>in.nc</file> and store the results in <file>out.nc</file>:</para>
-        <example xml:space="preserve">ncpdq in.nc out.nc # Same as ncpack in.nc out.nc
-ncpdq -P all_new -M flt_sht in.nc out.nc # Defaults
-ncpdq -P all_xst in.nc out.nc
-ncpdq -P upk in.nc out.nc # Same as ncunpack in.nc out.nc
-ncpdq -U in.nc out.nc # Same as ncunpack in.nc out.nc</example>
-        <para>The first two commands pack any unpacked variable in the input file. They also unpack and then re-pack every packed variable. The third command only packs unpacked variables in the input file. If a variable is already packed, the third command copies it unchanged to the output file. The fourth and fifth commands unpack any packed variables. If a variable is not packed, the third command copies it unchanged.</para>
-        <para>The previous examples all utilized the default packing map. Suppose you wish to archive all data that are currently unpacked into a form which only preserves 256 distinct values. Then you could specify the packing map <var>pck_map</var> as <samp>hgh_byt</samp> and the packing policy <var>pck_plc</var> as <samp>all_xst</samp>:</para>
-        <example xml:space="preserve">ncpdq -P all_xst -M hgh_byt in.nc out.nc</example>
-        <para><indexterm index="cp">appending variables</indexterm><indexterm index="cp"><samp>-A</samp></indexterm><indexterm index="cp"><samp>-v</samp></indexterm>Many different packing maps may be used to construct a given file by performing the packing on subsets of variables (e.g., with <samp>-v</samp>) and using the append feature with <samp>-A</samp> (see <xref><xrefnodename>Appending Variables</xrefnodename></xref>).</para>
-        <para>Re-order file <file>in.nc</file> so that the dimension <code>lon</code> always precedes the dimension <code>lat</code> and store the results in <file>out.nc</file>:</para>
-        <example xml:space="preserve">ncpdq -a lon,lat in.nc out.nc
-ncpdq -v three_dmn_var -a lon,lat in.nc out.nc</example>
-        <para>The first command re-orders every variable in the input file. The second command extracts and re-orders only the variable <code>three_dmn_var</code>.</para>
-        <para><indexterm index="cp">reverse dimensions</indexterm>Suppose the dimension <code>lat</code> represents latitude and monotonically increases increases from south to north. Reversing the <code>lat</code> dimension means re-ordering the data so that latitude values decrease monotonically from north to south. Accomplish this with</para>
-        <example xml:space="preserve">% ncpdq -a -lat in.nc out.nc
-% ncks -C -v lat in.nc
-lat[0]=-90
-lat[1]=90
-% ncks -C -v lat out.nc
-lat[0]=90
-lat[1]=-90</example>
-        <para>This operation reversed the latitude dimension of all variables. Whitespace immediately preceding the negative sign that specifies dimension reversal may be dangerous. <indexterm index="cp">long options</indexterm><indexterm index="cp">quotes</indexterm>Quotes and long options can help protect negative signs that should indicate dimension reversal from being interpreted by the shell as dashes that indicate new command line switches.</para>
-        <example xml:space="preserve">ncpdq -a -lat in.nc out.nc # Dangerous? Whitespace before "-lat"
-ncpdq -a '-lat' in.nc out.nc # OK. Quotes protect "-" in "-lat"
-ncpdq -a lon,-lat in.nc out.nc # OK. No whitespace before "-"
-ncpdq --rdr=-lat in.nc out.nc # Preferred. Uses "=" not whitespace</example>
-        <para><indexterm index="cp">reverse dimensions</indexterm>To create the mathematical transpose of a variable, place all its dimensions in the dimension re-order list in reversed order. This example creates the transpose of <code>three_dmn_var</code>:</para>
-        <example xml:space="preserve">% ncpdq -a lon,lev,lat -v three_dmn_var in.nc out.nc
-% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-...
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-% ncks -C -v three_dmn_var out.nc
-lon[0]=0 lev[0]=100 lat[0]=-90 three_dmn_var[0]=0
-lon[0]=0 lev[0]=100 lat[1]=90 three_dmn_var[1]=12
-lon[0]=0 lev[1]=500 lat[0]=-90 three_dmn_var[2]=4
-...
-lon[3]=270 lev[1]=500 lat[1]=90 three_dmn_var[21]=19
-lon[3]=270 lev[2]=1000 lat[0]=-90 three_dmn_var[22]=11
-lon[3]=270 lev[2]=1000 lat[1]=90 three_dmn_var[23]=23</example>
-        <para><indexterm index="cp">reverse data</indexterm>To completely reverse the storage order of a variable, include all its dimensions in the re-order list, each prefixed by a negative sign. This example reverses the storage order of <code>three_dmn_var</code>:</para>
-        <example xml:space="preserve">% ncpdq -a -lat,-lev,-lon -v three_dmn_var in.nc out.nc
-% ncks -C -v three_dmn_var in.nc
-lat[0]=-90 lev[0]=100 lon[0]=0 three_dmn_var[0]=0
-lat[0]=-90 lev[0]=100 lon[1]=90 three_dmn_var[1]=1
-lat[0]=-90 lev[0]=100 lon[2]=180 three_dmn_var[2]=2
-...
-lat[1]=90 lev[2]=1000 lon[1]=90 three_dmn_var[21]=21
-lat[1]=90 lev[2]=1000 lon[2]=180 three_dmn_var[22]=22
-lat[1]=90 lev[2]=1000 lon[3]=270 three_dmn_var[23]=23
-% ncks -C -v three_dmn_var out.nc
-lat[0]=90 lev[0]=1000 lon[0]=270 three_dmn_var[0]=23
-lat[0]=90 lev[0]=1000 lon[1]=180 three_dmn_var[1]=22
-lat[0]=90 lev[0]=1000 lon[2]=90 three_dmn_var[2]=21
-...
-lat[1]=-90 lev[2]=100 lon[1]=180 three_dmn_var[21]=2
-lat[1]=-90 lev[2]=100 lon[2]=90 three_dmn_var[22]=1
-lat[1]=-90 lev[2]=100 lon[3]=0 three_dmn_var[23]=0</example>
-        <para>Creating a record dimension named, e.g., <code>time</code>, in a file which has no existing record dimension is simple with <command>ncecat</command>:</para>
-        <example xml:space="preserve">ncecat -O -u time in.nc out.nc # Create degenerate record dimension named "time"</example>
-        <para><indexterm index="cp">record dimension</indexterm>Now consider a file with all dimensions, including <code>time</code>, fixed (non-record). Suppose the user wishes to convert <code>time</code> from a fixed dimension to a record dimension. This may be useful, for example, when the user wishes to append additional time slices to the data. As of <acronym><acronymword>NCO</acronymword></acronym> version 4.0.1 (April, 2010) the preferred method for doing this is with <command>nc [...]
-        <example xml:space="preserve">ncks -O --mk_rec_dmn time in.nc out.nc # Change "time" to record dimension</example>
-        <para>Prior to 4.0.1, the procedure to change an existing fixed dimension into a record dimension required three separate commands, <command>ncecat</command> followed by <command>ncpdq</command>, and then <command>ncwa</command>. It is still instructive to present the original procedure, as it shows how multiple operators can achieve the same ends by different means: <indexterm index="cp">degenerate dimension</indexterm></para>
-        <example xml:space="preserve">ncecat -O in.nc out.nc # Add degenerate record dimension named "record"
-ncpdq -O -a time,record out.nc out.nc # Switch "record" and "time"
-ncwa -O -a record out.nc out.nc # Remove (degenerate) "record"</example>
-        <para role="continues">The first step creates a degenerate (size equals one) record dimension named (by default) <code>record</code>. The second step swaps the ordering of the dimensions named <code>time</code> and <code>record</code>. Since <code>time</code> now occupies the position of the first (least rapidly varying) dimension, it becomes the record dimension. The dimension named <code>record</code> is no longer a record dimension. The third step averages over this degenerate [...]
-      </unnumberedsubsec>
-    </section>
-  </node>
-  <node>
-    <nodename>ncra netCDF Record Averager</nodename>
-    <nodenext>ncrcat netCDF Record Concatenator</nodenext>
-    <nodeprev>ncpdq netCDF Permute Dimensions Quickly</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncra</command> netCDF Record Averager</title>
-      <para><indexterm index="cp">averaging data</indexterm><indexterm index="cp">record average</indexterm><indexterm index="cp">record dimension</indexterm><indexterm index="cp">running average</indexterm><indexterm index="cp">ncra</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncra [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>]
-[-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,&dots;]] [-X ...] [-x] [-y <var>op_typ</var>]
-[<var>input-files</var>] [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncra</command> averages record variables across an arbitrary number of <var>input-files</var>. <indexterm index="cp">degenerate dimension</indexterm><indexterm index="cp">record dimension</indexterm>The record dimension is, by default, retained as a degenerate (size 1)<!-- /@w --> dimension in the output variables. See <xref><xrefnodename>Averaging vs. Concatenating</xrefnodename></xref>, for a description of the distinctions between the various averagers and concate [...]
-      <para>Input files may vary in size, but each must have a record dimension. The record coordinate, if any, should be monotonic (or else non-fatal warnings may be generated). <indexterm index="cp">hyperslab</indexterm>Hyperslabs of the record dimension which include more than one file work correctly. <indexterm index="cp">stride</indexterm><command>ncra</command> supports the <var>stride</var> argument to the <samp>-d</samp> hyperslab option (see <xref><xrefnodename>Hyperslabs</xrefn [...]
-      <para><command>ncra</command> weights each record (e.g., time slice) in the <var>input-files</var> equally. <command>ncra</command> does not attempt to see if, say, the <code>time</code> coordinate is irregularly spaced and thus would require a weighted average in order to be a true time average. <indexterm index="cp">operation types</indexterm><command>ncra</command> <emph>always averages</emph> coordinate variables regardless of the arithmetic operation type performed on the non- [...]
-      <para role="continues">EXAMPLES</para>
-      <para>Average files <file>85.nc</file>, <file>86.nc</file>, &dots; <file>89.nc</file><!-- /@w --> along the record dimension, and store the results in <file>8589.nc</file>: <indexterm index="cp">globbing</indexterm><indexterm index="cp"><code>NINTAP</code></indexterm><indexterm index="cp">Processor</indexterm><indexterm index="cp"><acronym><acronymword>CCM</acronymword></acronym> Processor</indexterm></para>
-      <example xml:space="preserve">ncra 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncra 8[56789].nc 8589.nc
-ncra -n 5,2,1 85.nc 8589.nc</example>
-      <para>These three methods produce identical answers. See <xref><xrefnodename>Specifying Input Files</xrefnodename></xref>, for an explanation of the distinctions between these methods.</para>
-      <para><indexterm index="cp">Fortran</indexterm>Assume the files <file>85.nc</file>, <file>86.nc</file>, &dots; <file>89.nc</file><!-- /@w --> each contain a record coordinate <var>time</var> of length 12 defined such that the third record in <file>86.nc</file> contains data from March 1986, etc. <acronym><acronymword>NCO</acronymword></acronym> knows how to hyperslab the record dimension across files. Thus, to average data from December, 1985 through February, 1986:</para>
-      <example xml:space="preserve">ncra -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-ncra -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc</example>
-      <para role="continues">The file <file>87.nc</file> is superfluous, but does not cause an error. The <samp>-F</samp> turns on the Fortran (1-based) indexing convention. <indexterm index="cp">stride</indexterm>The following uses the <var>stride</var> option to average all the March temperature data from multiple input files into a single output file</para>
-      <example xml:space="preserve">ncra -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc</example>
-      <para>See <xref><xrefnodename>Stride</xrefnodename></xref>, for a description of the <var>stride</var> argument.</para>
-      <para>Assume the <var>time</var> coordinate is incrementally numbered such that January, <math>1985 = 1</math><!-- /@w --> and December, <math>1989 = 60</math><!-- /@w -->. Assuming <samp>??</samp> only expands to the five desired files, the following averages June, 1985–June, 1989:</para>
-      <example xml:space="preserve">ncra -d time,6.,54. ??.nc 8506_8906.nc</example>
-    </section>
-  </node>
-  <node>
-    <nodename>ncrcat netCDF Record Concatenator</nodename>
-    <nodenext>ncrename netCDF Renamer</nodenext>
-    <nodeprev>ncra netCDF Record Averager</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncrcat</command> netCDF Record Concatenator</title>
-      <para><indexterm index="cp">concatenation</indexterm><indexterm index="cp">record concatenation</indexterm><indexterm index="cp">ncrcat</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncrcat [-3] [-4] [-6] [-A] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-L <var>dfl_lvl</var>] [-l <var>path</var>]
-[-n <var>loop</var>] [-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,&dots;]] [-X ...] [-x]
-[<var>input-files</var>] [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncrcat</command> concatenates record variables across an arbitrary number of <var>input-files</var>. <indexterm index="cp">record dimension</indexterm>The final record dimension is by default the sum of the lengths of the record dimensions in the input files. See <xref><xrefnodename>Averaging vs. Concatenating</xrefnodename></xref>, for a description of the distinctions between the various averagers and concatenators. <indexterm index="cp">multi-file operators</index [...]
-      <para>Input files may vary in size, but each must have a record dimension. The record coordinate, if any, should be monotonic (or else non-fatal warnings may be generated). <indexterm index="cp">hyperslab</indexterm>Hyperslabs along the record dimension that span more than one file are handled correctly. <indexterm index="cp">stride</indexterm><command>ncra</command> supports the <var>stride</var> argument to the <samp>-d</samp> hyperslab option for the record dimension only, <var> [...]
-      <para><indexterm index="cp">ncpdq</indexterm><indexterm index="cp">packing</indexterm><indexterm index="cp">unpacking</indexterm><indexterm index="cp"><code>add_offset</code></indexterm><indexterm index="cp"><code>scale_factor</code></indexterm>Concatenating a variable packed with different scales multiple datasets is beyond the capabilities of <command>ncrcat</command> (and <command>ncecat</command>, the other concatenator (<xref><xrefnodename>Concatenation</xrefnodename></xref>). [...]
-      <para><indexterm index="cp">ARM conventions</indexterm><command>ncrcat</command> applies special rules to <acronym><acronymword>ARM</acronymword></acronym> convention time fields (e.g., <code>time_offset</code>). See <xref><xrefnodename>ARM Conventions</xrefnodename></xref> for a complete description.</para>
-      <para role="continues">EXAMPLES</para>
-      <para>Concatenate files <file>85.nc</file>, <file>86.nc</file>, &dots; <file>89.nc</file><!-- /@w --> along the record dimension, and store the results in <file>8589.nc</file>: <indexterm index="cp">globbing</indexterm><indexterm index="cp"><code>NINTAP</code></indexterm><indexterm index="cp">Processor</indexterm><indexterm index="cp"><acronym><acronymword>CCM</acronymword></acronym> Processor</indexterm></para>
-      <example xml:space="preserve">ncrcat 85.nc 86.nc 87.nc 88.nc 89.nc 8589.nc
-ncrcat 8[56789].nc 8589.nc
-ncrcat -n 5,2,1 85.nc 8589.nc</example>
-      <para role="continues">These three methods produce identical answers. See <xref><xrefnodename>Specifying Input Files</xrefnodename></xref>, for an explanation of the distinctions between these methods.</para>
-      <para><indexterm index="cp">Fortran</indexterm>Assume the files <file>85.nc</file>, <file>86.nc</file>, &dots; <file>89.nc</file><!-- /@w --> each contain a record coordinate <var>time</var> of length 12<!-- /@w --> defined such that the third record in <file>86.nc</file> contains data from March 1986, etc. <acronym><acronymword>NCO</acronymword></acronym> knows how to hyperslab the record dimension across files. Thus, to concatenate data from December, 1985–February, 1986:</para>
-      <example xml:space="preserve">ncrcat -d time,11,13 85.nc 86.nc 87.nc 8512_8602.nc
-ncrcat -F -d time,12,14 85.nc 86.nc 87.nc 8512_8602.nc</example>
-      <para role="continues">The file <file>87.nc</file> is superfluous, but does not cause an error. When <command>ncra</command> and <command>ncrcat</command> encounter a file which does contain any records that meet the specified hyperslab criteria, they disregard the file and proceed to the next file without failing. The <samp>-F</samp> turns on the Fortran (1-based) indexing convention. <indexterm index="cp">stride</indexterm> The following uses the <var>stride</var> option to conca [...]
-      <example xml:space="preserve">ncrcat -F -d time,3,,12 -v temperature 85.nc 86.nc 87.nc 858687_03.nc</example>
-      <para>See <xref><xrefnodename>Stride</xrefnodename></xref>, for a description of the <var>stride</var> argument.</para>
-      <para>Assume the <var>time</var> coordinate is incrementally numbered such that January, 1985 = 1<!-- /@w --> and December, 1989 = 60.<!-- /@w --> Assuming <code>??</code> only expands to the five desired files, the following concatenates June, 1985–June, 1989:</para>
-      <example xml:space="preserve">ncrcat -d time,6.,54. ??.nc 8506_8906.nc</example>
-    </section>
-  </node>
-  <node>
-    <nodename>ncrename netCDF Renamer</nodename>
-    <nodenext>ncwa netCDF Weighted Averager</nodenext>
-    <nodeprev>ncrcat netCDF Record Concatenator</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncrename</command> netCDF Renamer</title>
-      <para><indexterm index="cp">renaming variables</indexterm><indexterm index="cp">renaming dimensions</indexterm><indexterm index="cp">renaming attributes</indexterm><indexterm index="cp">variable names</indexterm><indexterm index="cp">dimension names</indexterm><indexterm index="cp">attribute names</indexterm><indexterm index="cp">ncrename</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncrename [-a <var>old_name</var>,<var>new_name</var>] [-a &dots;] [-D <var>dbg</var>]
-[-d <var>old_name</var>,<var>new_name</var>] [-d &dots;] [-h] [--hdr_pad <var>nbr</var>] [-l <var>path</var>]
-[-O] [-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r]
-[-v <var>old_name</var>,<var>new_name</var>] [-v &dots;]
-<var>input-file</var> [[<var>output-file</var>]]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><indexterm index="cp"><kbd>.</kbd></indexterm><command>ncrename</command> renames dimensions, variables, and attributes in a netCDF file. Each object that has a name in the list of old names is renamed using the corresponding name in the list of new names. All the new names must be unique. Every old name must exist in the input file, unless the old name is preceded by the period (or “dot”) character <samp>.</samp>. The validity of <var>old_name</var> is not checke [...]
-      <para><indexterm index="cp">data safety</indexterm><indexterm index="cp">safeguards</indexterm><indexterm index="cp">temporary output files</indexterm><command>ncrename</command> is the exception to the normal rules that the user will be interactively prompted before an existing file is changed, and that a temporary copy of an output file is constructed during the operation. If only <var>input-file</var> is specified, then <command>ncrename</command> will change the names of the <v [...]
-      <para>Note that renaming a dimension to the name of a dependent variable can be used to invert the relationship between an independent coordinate variable and a dependent variable. In this case, the named dependent variable must be one-dimensional and should have no missing values. Such a variable will become a coordinate variable.</para>
-      <para><indexterm index="cp">performance</indexterm><indexterm index="cp">operator speed</indexterm><indexterm index="cp">speed</indexterm><indexterm index="cp">execution time</indexterm>According to the <cite>netCDF User's Guide</cite>, renaming properties in netCDF files does not incur the penalty of recopying the entire file when the <var>new_name</var> is shorter than the <var>old_name</var>.</para>
-      <para role="continues">OPTIONS</para>
-      <table>
-        <tableitem>
-          <tableterm><samp>-a <var>old_name</var>,<var>new_name</var></samp></tableterm>
-          <item>
-            <para>Attribute renaming. The old and new names of the attribute are specified with <samp>-a</samp> (or <samp>--attribute</samp>) by the associated <var>old_name</var> and <var>new_name</var> values. <indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm>Global attributes are treated no differently than variable attributes. This option may be specified more than once. As mentioned above, all occurrences of the attribute of a giv [...]
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>-d <var>old_name</var>,<var>new_name</var></samp></tableterm>
-          <item>
-            <para>Dimension renaming. The old and new names of the dimension are specified with <samp>-d</samp> (or <samp>--dmn</samp>, <samp>--dimension</samp>) by the associated <var>old_name</var> and <var>new_name</var> values. This option may be specified more than once.</para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm><samp>-v <var>old_name</var>,<var>new_name</var></samp></tableterm>
-          <item>
-            <para>Variable renaming. The old and new names of the variable are specified with <samp>-v</samp> (or <samp>--variable</samp>) by the associated <var>old_name</var> and <var>new_name</var> values. This option may be specified more than once.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para role="continues">EXAMPLES</para>
-      <para>Rename the variable <code>p</code> to <code>pressure</code> and <code>t</code> to <code>temperature</code> in netCDF <file>in.nc</file>. In this case <code>p</code> must exist in the input file (or <command>ncrename</command> will abort), but the presence of <code>t</code> is optional:</para>
-      <example xml:space="preserve">ncrename -v p,pressure -v .t,temperature in.nc</example>
-      <para>Rename the attribute <code>long_name</code> to <code>largo_nombre</code> in the variable <code>u</code>, and no other variables in netCDF <file>in.nc</file>.</para>
-      <example xml:space="preserve">ncrename -a u:long_name,largo_nombre in.nc</example>
-      <para><indexterm index="cp">coordinate variables</indexterm><command>ncrename</command> does not automatically attach dimensions to variables of the same name. If you want to rename a coordinate variable so that it remains a coordinate variable, you must separately rename both the dimension and the variable:</para>
-      <example xml:space="preserve">ncrename -d lon,longitude -v lon,longitude in.nc</example>
-      <para><indexterm index="cp">global attributes</indexterm><indexterm index="cp">attributes, global</indexterm><indexterm index="cp"><code>_FillValue</code></indexterm><indexterm index="cp"><code>missing_value</code></indexterm>Create netCDF <file>out.nc</file> identical to <file>in.nc</file> except the attribute <code>_FillValue</code> is changed to <code>missing_value</code>, the attribute <code>units</code> is changed to <code>CGS_units</code> (but only in those variables which po [...]
-      <example xml:space="preserve">ncrename -a _FillValue,missing_value -a .units,CGS_units \
-  -a tpt at hieght,height -a prs_sfc at .hieght,height in.nc out.nc</example>
-      <para>The presence and absence of the <samp>.</samp> and <samp>@</samp> features cause this command to execute successfully only if a number of conditions are met. All variables <emph>must</emph> have a <code>_FillValue</code> attribute <emph>and</emph> <code>_FillValue</code> must also be a global attribute. The <code>units</code> attribute, on the other hand, will be renamed to <code>CGS_units</code> wherever it is found but need not be present in the file at all (either as a glo [...]
-    </section>
-  </node>
-  <node>
-    <nodename>ncwa netCDF Weighted Averager</nodename>
-    <nodeprev>ncrename netCDF Renamer</nodeprev>
-    <nodeup>Operator Reference Manual</nodeup>
-    <section>
-      <title><command>ncwa</command> netCDF Weighted Averager</title>
-      <para><indexterm index="cp">averaging data</indexterm><indexterm index="cp">weighted average</indexterm><indexterm index="cp">masked average</indexterm><indexterm index="cp">broadcasting variables</indexterm><indexterm index="cp">ncwa</indexterm> SYNTAX</para>
-      <example xml:space="preserve">ncwa [-3] [-4] [-6] [-A] [-a <var>dim</var>[,&dots;]] [-B <var>mask_cond</var>] [-b] [-C] [-c]
-[--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz]
-[-D <var>dbg</var>] [-d <var>dim</var>,[<var>min</var>][,[<var>max</var>][,[<var>stride</var>]]] [-F] [-h] [-I] [-L <var>dfl_lvl</var>] [-l <var>path</var>]
-[-M <var>mask_val</var>] [-m <var>mask_var</var>] [-N] [-O]
-[-o <var>output-file</var>] [-p <var>path</var>] [-R] [-r] [-T <var>mask_comp</var>]
-[-t <var>thr_nbr</var>] [-v <var>var</var>[,&dots;]] [-w <var>weight</var>] [-X ...] [-x] [-y <var>op_typ</var>]
-<var>input-file</var> [<var>output-file</var>]</example>
-      <para role="continues">DESCRIPTION</para>
-      <para><command>ncwa</command> averages variables in a single file over arbitrary dimensions, with options to specify weights, masks, and normalization. See <xref><xrefnodename>Averaging vs. Concatenating</xrefnodename></xref>, for a description of the distinctions between the various averagers and concatenators. The default behavior of <command>ncwa</command> is to arithmetically average every numerical variable over all dimensions and to produce a scalar result for each.</para>
-      <para><indexterm index="cp">degenerate dimension</indexterm>Averaged dimensions are, by default, eliminated as dimensions. Their corresponding coordinates, if any, are output as scalars. The <samp>-b</samp> switch (and its long option equivalents <samp>--rdd</samp> and <samp>--retain-degenerate-dimensions</samp>) causes <command>ncwa</command> to retain averaged dimensions as degenerate (size 1<!-- /@w -->) dimensions. This maintains the association between a dimension (or coordina [...]
-      <para>To average variables over only a subset of their dimensions, specify these dimensions in a comma-separated list following <samp>-a</samp>, e.g., <samp>-a time,lat,lon</samp>. <indexterm index="cp">arithmetic operators</indexterm><indexterm index="cp">hyperslab</indexterm><indexterm index="cp"><code>-d <var>dim</var>,[<var>min</var>][,[<var>max</var>]]</code></indexterm>As with all arithmetic operators, the operation may be restricted to an arbitrary hypserslab by employing th [...]
-      <para><indexterm index="cp"><code>-w <var>weight</var></code></indexterm><indexterm index="cp"><code>--weight <var>weight</var></code></indexterm><indexterm index="cp"><code>--wgt_var <var>weight</var></code></indexterm><indexterm index="cp"><code>-m <var>mask_var</var></code></indexterm><indexterm index="cp"><code>--mask-variable <var>mask_var</var></code></indexterm><indexterm index="cp"><code>--mask_variable <var>mask_var</var></code></indexterm><indexterm index="cp"><code>--msk [...]
-      <para>Non-coordinate variables are always masked and weighted if specified. Coordinate variables, however, may be treated specially. By default, an averaged coordinate variable, e.g., <code>latitude</code>, appears in <var>output-file</var> averaged the same way as any other variable containing an averaged dimension. In other words, by default <command>ncwa</command> weights and masks coordinate variables like all other variables. This design decision was intended to be helpful but [...]
-      <para><indexterm index="cp">average</indexterm><indexterm index="cp">operation types</indexterm>As explained in See <xref><xrefnodename>Operation Types</xrefnodename></xref>, <command>ncwa</command> <emph>always averages</emph> coordinate variables regardless of the arithmetic operation type performed on the non-coordinate variables. This is independent of the setting of the <samp>-I</samp> option. The mathematical definition of operations involving rank reduction is given above (s [...]
-      <menu>
-        <menuentry>
-          <menunode>Mask condition</menunode>
-          <menutitle>Mask condition</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Normalization and Integration</menunode>
-          <menutitle>Normalization and Integration</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>Mask condition</nodename>
-    <nodenext>Normalization and Integration</nodenext>
-    <nodeprev>ncwa netCDF Weighted Averager</nodeprev>
-    <nodeup>ncwa netCDF Weighted Averager</nodeup>
-    <subsection>
-      <title>Mask condition</title>
-      <para><indexterm index="cp">mask condition</indexterm><indexterm index="cp">truth condition</indexterm> <indexterm index="cp"><code>--op_rlt <var>mask_comp</var></code></indexterm><indexterm index="cp"><code>--mask_comparator <var>mask_comp</var></code></indexterm><indexterm index="cp"><code>--msk_cmp_typ <var>mask_comp</var></code></indexterm><indexterm index="cp"><code>--msk_cnd_sng <var>mask_cond</var></code></indexterm><indexterm index="cp"><code>--mask_condition <var>mask_cond [...]
-      <para><indexterm index="cp">comparator</indexterm>Here <var>mask_var</var> is the name of the masking variable (specified with <samp>-m</samp>, <samp>--mask-variable</samp>, <samp>--mask_variable</samp>, <samp>--msk_nm</samp>, or <samp>--msk_var</samp>). The truth <var>mask_comp</var> argument (specified with <samp>-T</samp>, <samp>--mask_comparator</samp>, <samp>--msk_cmp_typ</samp>, or <samp>--op_rlt</samp> may be any one of the six arithmetic comparators: <kbd>eq</kbd>, <kbd>ne< [...]
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para>These are the Fortran-style character abbreviations for the logical comparisons <kbd>==</kbd>, <kbd>!=</kbd>, <kbd>></kbd>, <kbd><</kbd>, <kbd>>=</kbd>,</para>
-      <clearvalue name="flg"></clearvalue>
-      <para>The mask comparator defaults to <kbd>eq</kbd> (equality). <indexterm index="cp"><code>--mask-value <var>mask_val</var></code></indexterm><indexterm index="cp"><code>--mask_value <var>mask_val</var></code></indexterm><indexterm index="cp"><code>--msk_val <var>mask_val</var></code></indexterm>The <var>mask_val</var> argument to <samp>-M</samp> (or <samp>--mask-value</samp>, or <samp>--msk_val</samp>) is the right hand side of the <dfn>mask condition</dfn>. Thus for the <var>i</ [...]
-      <setvalue name="flg"></setvalue>
-<!-- texi2html does not like @math{} -->
-      <para><var>mask</var>(<var>i</var>) <var>mask_comp</var> <var>mask_val</var>.</para>
-      <clearvalue name="flg"></clearvalue>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Normalization and Integration</nodename>
-    <nodeprev>Mask condition</nodeprev>
-    <nodeup>ncwa netCDF Weighted Averager</nodeup>
-    <subsection>
-      <title>Normalization and Integration</title>
-      <para><indexterm index="cp">normalization</indexterm><indexterm index="cp"><code>-N</code></indexterm><indexterm index="cp"><code>numerator</code></indexterm><indexterm index="cp">integration</indexterm><indexterm index="cp">dot product</indexterm><command>ncwa</command> has one switch which controls the normalization of the averages appearing in the <var>output-file</var>. Short option <samp>-N</samp> (or long options <samp>--nmr</samp> or <samp>--numerator</samp>) prevents <comma [...]
-      <para>With this normalization option, <command>ncwa</command> can integrate variables. Averages are first computed as sums, and then normalized to obtain the average. The original sum (i.e., the numerator of the expression in <xref><xrefnodename>Operation Types</xrefnodename></xref>) is output if default normalization is turned off (with <samp>-N</samp><!-- /@w -->). This sum is the integral (not the average) over the specified (with <samp>-a</samp><!-- /@w -->, or all, if none are [...]
-      <example xml:space="preserve">ncwa -N -a lev -v lev -w lev_wgt in.nc foo.nc;ncks foo.nc</example>
-      <para role="continues">EXAMPLES</para>
-      <para>Given file <file>85_0112.nc</file>:</para>
-      <example xml:space="preserve">netcdf 85_0112 {
-dimensions:
-        lat = 64 ;
-        lev = 18 ;
-        lon = 128 ;
-        time = UNLIMITED ; // (12 currently)
-variables:
-        float lat(lat) ;
-        float lev(lev) ;
-        float lon(lon) ;
-        float time(time) ;
-        float scalar_var ;
-        float three_dmn_var(lat, lev, lon) ;
-        float two_dmn_var(lat, lev) ;
-        float mask(lat, lon) ;
-        float gw(lat) ;
-}</example>
-      <para>Average all variables in <file>in.nc</file> over all dimensions and store results in <file>out.nc</file>:</para>
-      <example xml:space="preserve">ncwa in.nc out.nc</example>
-      <para role="continues">All variables in <file>in.nc</file> are reduced to scalars in <file>out.nc</file> since <command>ncwa</command> averages over all dimensions unless otherwise specified (with <samp>-a</samp>).</para>
-      <para>Store the zonal (longitudinal) mean of <file>in.nc</file> in <file>out.nc</file>:</para>
-      <example xml:space="preserve">ncwa -a lon in.nc out1.nc
-ncwa -a lon -b in.nc out2.nc</example>
-      <para role="continues"><indexterm index="cp">degenerate dimension</indexterm>The first command turns <code>lon</code> into a scalar and the second retains <code>lon</code> as a degenerate dimension in all variables.</para>
-      <example xml:space="preserve">% ncks -C -H -v lon out1.nc
-lon = 135
-% ncks -C -H -v lon out2.nc
-lon[0] = 135</example>
-      <para>In either case the tally is simply the size of <code>lon</code>, i.e., 180 for the <file>85_0112.nc</file> file described by the sample header above.</para>
-      <para><indexterm index="cp"><code>gw</code></indexterm><indexterm index="cp">Gaussian weights</indexterm><indexterm index="cp">climate model</indexterm>Compute the meridional (latitudinal) mean, with values weighted by the corresponding element of <var>gw</var> <footnote><para><code>gw</code> stands for <dfn>Gaussian weight</dfn> in many climate models.</para></footnote>:</para>
-      <example xml:space="preserve">ncwa -w gw -a lat in.nc out.nc</example>
-      <para role="continues">Here the tally is simply the size of <code>lat</code>, or 64.<!-- /@w --> The sum of the Gaussian weights is 2.0.<!-- /@w --></para>
-      <para>Compute the area mean over the tropical Pacific:</para>
-      <example xml:space="preserve">ncwa -w gw -a lat,lon -d lat,-20.,20. -d lon,120.,270. in.nc out.nc</example>
-      <para role="continues">Here the tally is</para>
-      <setvalue name="flg"></setvalue>
-      <para>64 times 128 = 8192.</para>
-      <clearvalue name="flg"></clearvalue>
-      <para><indexterm index="cp"><code>ORO</code></indexterm><indexterm index="cp">climate model</indexterm>Compute the area-mean over the globe using only points for which</para>
-      <setvalue name="flg"></setvalue>
-      <para><var>ORO</var> < 0.5</para>
-      <clearvalue name="flg"></clearvalue>
-      <para><footnote><para><code>ORO</code> stands for <dfn>Orography</dfn> in some climate models and in those models <math><var>ORO</var> < 0.5</math> selects ocean gridpoints.</para></footnote>:</para>
-      <example xml:space="preserve">ncwa -B 'ORO < 0.5'      -w gw -a lat,lon in.nc out.nc
-ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon in.nc out.nc</example>
-      <para role="continues">It is considerably simpler to specify the complete <var>mask_cond</var> with the single string argument to <samp>-B</samp> than with the three separate switches <samp>-m</samp>, <samp>-T</samp>, and <samp>-M</samp>. If in doubt, enclose the <var>mask_cond</var> within quotes since some of the comparators have special meanings to the shell.</para>
-      <para>Assuming 70% of the gridpoints are maritime, then here the tally is</para>
-      <setvalue name="flg"></setvalue>
-      <para>0.70 times 8192 = 5734.</para>
-      <clearvalue name="flg"></clearvalue>
-      <para>Compute the global annual mean over the maritime tropical Pacific:</para>
-      <example xml:space="preserve">ncwa -B 'ORO < 0.5'      -w gw -a lat,lon,time \
-  -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc
-ncwa -m ORO -M 0.5 -T lt -w gw -a lat,lon,time \
-  -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc</example>
-      <para>Further examples will use the one-switch specification of <var>mask_cond</var>.</para>
-      <para>Determine the total area of the maritime tropical Pacific, assuming the variable <var>area</var> contains the area of each gridcell</para>
-      <example xml:space="preserve">ncwa -N -v area -B 'ORO < 0.5' -a lat,lon \
-  -d lat,-20.0,20.0 -d lon,120.0,270.0 in.nc out.nc</example>
-      <para>Weighting <var>area</var> (e.g., by <var>gw</var>) is not appropriate because <var>area</var> is <emph>already</emph> area-weighted by definition. Thus the <samp>-N</samp> switch, or, equivalently, the <samp>-y ttl</samp> switch, correctly integrate the cell areas into a total regional area.</para>
-      <para><indexterm index="cp">mask condition</indexterm><indexterm index="cp">truth condition</indexterm>Mask a file to contain <var>_FillValue</var> everywhere except where <math><var>thr_min</var> <= <var>msk_var</var> <= <var>thr_max</var></math>:</para>
-      <example xml:space="preserve"># Set masking variable and its scalar thresholds
-export msk_var='three_dmn_var_dbl' # Masking variable
-export thr_max='20' # Maximum allowed value
-export thr_min='10' # Minimum allowed value
-ncecat -O in.nc out.nc # Wrap out.nc in degenerate "record" dimension
-ncwa -O -a record -B "${msk_var} <= ${thr_max}" out.nc out.nc
-ncecat -O out.nc out.nc # Wrap out.nc in degenerate "record" dimension
-ncwa -O -a record -B "${msk_var} >= ${thr_min}" out.nc out.nc</example>
-      <para>After the first use of <command>ncwa</command>, <file>out.nc</file> contains <var>_FillValue</var> where <code>${msk_var} >= ${thr_max}</code>. The process is then repeated on the remaining data to filter out points where <code>${msk_var} <= ${thr_min}</code>. The resulting <file>out.nc</file> contains valid data only where <math><var>thr_min</var> <= <var>msk_var</var> <= <var>thr_max</var></math>.</para>
-    </subsection>
-  </node>
-  <node>
-    <nodename>Contributing</nodename>
-    <nodenext>CCSM Example</nodenext>
-    <nodeprev>Operator Reference Manual</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>Contributing</title>
-      <para><indexterm index="cp">contributing</indexterm>We welcome contributions from anyone. The project homepage at <uref><urefurl>https://sf.net/projects/nco</urefurl></uref> contains more information on how to contribute.</para>
-      <para><indexterm index="cp">PayPal</indexterm>Financial contributions to <acronym><acronymword>NCO</acronymword></acronym> development may be made through <uref><urefurl>https://www.paypal.com/xclick/business=zender%40uci.edu&item_name=NCO+development&item_number=nco_dnt_dvl&no_note=1&tax=0&currency_code=USD</urefurl><urefdesc>PayPal</urefdesc></uref>. <acronym><acronymword>NCO</acronymword></acronym> has been shared for over 10 years<!-- /@w --> yet only two us [...]
-      <menu>
-        <menuentry>
-          <menunode>Contributors</menunode>
-          <menutitle>Contributors</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-        <menuentry>
-          <menunode>Proposals for Institutional Funding</menunode>
-          <menutitle>Proposals for Institutional Funding</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </chapter>
-  </node>
-  <node>
-    <nodename>Contributors</nodename>
-    <nodenext>Proposals for Institutional Funding</nodenext>
-    <nodeprev>Contributing</nodeprev>
-    <nodeup>Contributing</nodeup>
-    <section>
-      <title>Contributors</title>
-      <para><indexterm index="cp">contributors</indexterm>The primary contributors to <acronym><acronymword>NCO</acronymword></acronym> development have been:</para>
-      <table><indexterm index="cp">Charlie Zender</indexterm>
-        <tableitem>
-          <tableterm>Charlie Zender</tableterm>
-          <item>
-            <para>Concept, design and implementation of operators from 1995-2000. Since then autotools, bug-squashing, chunking, documentation, packing, <acronym><acronymword>NCO</acronymword></acronym> library redesign, <command>ncap2</command> features, <command>ncbo</command>, <command>ncpdq</command>, SMP threading and MPI parallelization, netCDF4 integration, external funding, project management, science research, releases. <indexterm index="cp">Henry Butowsky</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Henry Butowsky</tableterm>
-          <item>
-            <para>Non-linear operations and <code>min()</code>, <code>max()</code>, <code>total()</code> support in <command>ncra</command> and <command>ncwa</command>. Type conversion for arithmetic. Migration to netCDF3 API. <command>ncap</command> parser, lexer, and I/O<!-- /@w -->. Multislabbing algorithm. Variable wildcarding. Various hacks. <command>ncap2</command> language. <indexterm index="cp">Rorik Peterson</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Rorik Peterson</tableterm>
-          <item>
-            <para>Original autotool build support. Long command-line options. Original UDUnits support. Debianization. Numerous bug-fixes. <indexterm index="cp">Daniel Wang</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Daniel Wang</tableterm>
-          <item>
-            <para>Script Workflow Analysis for MultiProcessing (SWAMP). RPM support. <indexterm index="cp">Harry Mangalam</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Harry Mangalam</tableterm>
-          <item>
-            <para>Benchmarking. OPeNDAP configuration. <indexterm index="cp">Brian Mays</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Brian Mays</tableterm>
-          <item>
-            <para>Original packaging for Debian GNU/Linux, <command>nroff</command> man pages. <indexterm index="cp">George Shapovalov</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>George Shapovalov</tableterm>
-          <item>
-            <para>Packaging for Gentoo GNU/Linux. <indexterm index="cp">Bill Kocik</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Bill Kocik</tableterm>
-          <item>
-            <para>Memory management. <indexterm index="cp">Len Makin</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Len Makin</tableterm>
-          <item>
-            <para>NEC SX architecture support. <indexterm index="cp">Jim Edwards</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Jim Edwards</tableterm>
-          <item>
-            <para>AIX architecture support. <indexterm index="cp">Juliana Rew</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Juliana Rew</tableterm>
-          <item>
-            <para>Compatibility with large PIDs. <indexterm index="cp">Karen Schuchardt</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Karen Schuchardt</tableterm>
-          <item>
-            <para>Auxiliary coordinate support. <indexterm index="cp">Gayathri Venkitachalam</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Gayathri Venkitachalam</tableterm>
-          <item>
-            <para><acronym><acronymword>MPI</acronymword></acronym> implementation. <indexterm index="cp">Scott Capps</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Scott Capps</tableterm>
-          <item>
-            <para>Large work-load testing <indexterm index="cp">Mark Flanner</indexterm><indexterm index="cp">Keith Lindsay</indexterm><indexterm index="cp">Martin Dix</indexterm><indexterm index="cp">Mike Page</indexterm><indexterm index="cp">Martin Schmidt</indexterm><indexterm index="cp">Michael Schulz</indexterm><indexterm index="cp">Remik Ziemlinski</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Martin Dix, Mark Flanner, Keith Lindsay, Mike Page, Martin Schmidt, Michael Schulz, Remik Ziemlinski</tableterm>
-          <item>
-            <para>Excellent bug reports and feature requests. <indexterm index="cp">Markus Liebig</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Markus Liebig</tableterm>
-          <item>
-            <para>Proof-read the ncap documentation <indexterm index="cp">Daniel Baumann</indexterm><indexterm index="cp">Barry deFreese</indexterm><indexterm index="cp">Francesco Lovergine</indexterm><indexterm index="cp">Matej Vela</indexterm><indexterm index="cp">Luk Claes</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Daniel Baumann, Barry deFreese, Francesco Lovergine, Matej Vela, Luk Claes</tableterm>
-          <item>
-            <para>Debian packaging <indexterm index="cp">Patrice Dumas</indexterm><indexterm index="cp">Ed Hill</indexterm><indexterm index="cp">Orion Powlawski</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Patrice Dumas, Ed Hill, Orion Poplawski</tableterm>
-          <item>
-            <para>RedHat packaging <indexterm index="cp">George Shapavalov</indexterm><indexterm index="cp">Patrick Kursawe</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>George Shapavalov, Patrick Kursawe</tableterm>
-          <item>
-            <para>Gentoo packaging <indexterm index="cp">Filipe Fernandes</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Filipe Fernandes</tableterm>
-          <item>
-            <para>OpenSuse packaging <indexterm index="cp">Alexander Hansen</indexterm><indexterm index="cp">Takeshi Enomoto</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Takeshi Enomoto, Alexander Hansen</tableterm>
-          <item>
-            <para>Mac OS packaging <indexterm index="cp">Eric Blake</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Eric Blake</tableterm>
-          <item>
-            <para>Autoconf/M4 help <indexterm index="cp">Gavin Burris</indexterm><indexterm index="cp">Kyle Wilcox</indexterm></para>
-          </item>
-        </tableitem>
-        <tableitem>
-          <tableterm>Gavin Burris, Kyle Wilcox</tableterm>
-          <item>
-            <para>RHEL and CentOS build scripts and bug reports.</para>
-          </item>
-        </tableitem>
-      </table>
-      <para>Please let me know if your name was omitted!</para>
-      <menu>
-        <menuentry>
-          <menunode>Proposals for Institutional Funding</menunode>
-          <menutitle>Proposals for Institutional Funding</menutitle>
-          <menucomment></menucomment>
-        </menuentry>
-      </menu>
-    </section>
-  </node>
-  <node>
-    <nodename>Proposals for Institutional Funding</nodename>
-    <nodeprev>Contributors</nodeprev>
-    <nodeup>Contributing</nodeup>
-    <section>
-      <title>Proposals for Institutional Funding</title>
-      <para><indexterm index="cp">funding</indexterm><indexterm index="cp">proposals</indexterm><indexterm index="cp"><acronym><acronymword>NSF</acronymword></acronym></indexterm><indexterm index="cp">server-side processing</indexterm><indexterm index="cp">Distributed Data Reduction & Analysis</indexterm><indexterm index="cp">Scientific Data Operators</indexterm><indexterm index="cp"><acronym><acronymword>DDRA</acronymword></acronym></indexterm><indexterm index="cp">Server-Side Distr [...]
-      <para><indexterm index="cp"><acronym><acronymword>NASA</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>NRA</acronymword></acronym></indexterm><indexterm index="cp"><acronym><acronymword>HDF</acronymword></acronym></indexterm>With this first <acronym><acronymword>NCO</acronymword></acronym> proposal funded, the content of the next <acronym><acronymword>NCO</acronymword></acronym> proposal is clear. We are interested in obtaining <acronym><acronymword>N [...]
-      <para>We are considering a lot of interesting ideas for still more proposals. Please contact us if you wish to be involved with any future <acronym><acronymword>NCO</acronymword></acronym>-related proposals. Comments on the proposals and letters of support are also very welcome.</para>
-    </section>
-  </node>
-  <node>
-    <nodename>CCSM Example</nodename>
-    <nodenext>mybibnode</nodenext>
-    <nodeprev>Contributing</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>CCSM Example</title>
-      <para><indexterm index="cp">CCSM</indexterm> This chapter illustrates how to use <acronym><acronymword>NCO</acronymword></acronym> to process and analyze the results of a <acronym><acronymword>CCSM</acronymword></acronym> climate simulation.</para>
-      <example xml:space="preserve">************************************************************************
-Task 0: Finding input files
-************************************************************************
-The CCSM model outputs files to a local directory like:
-
-/ptmp/zender/archive/T42x1_40
-
-Each component model has its own subdirectory, e.g.,
-
-/ptmp/zender/archive/T42x1_40/atm
-/ptmp/zender/archive/T42x1_40/cpl
-/ptmp/zender/archive/T42x1_40/ice
-/ptmp/zender/archive/T42x1_40/lnd
-/ptmp/zender/archive/T42x1_40/ocn
-
-within which model output is tagged with the particular model name
-
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-01.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-02.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-03.nc
-...
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0001-12.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-01.nc
-/ptmp/zender/archive/T42x1_40/atm/T42x1_40.cam2.h0.0002-02.nc
-...
-
-or
-
-/ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-01.nc
-/ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-02.nc
-/ptmp/zender/archive/T42x1_40/lnd/T42x1_40.clm2.h0.0001-03.nc
-...
-
-************************************************************************
-Task 1: Regional processing
-************************************************************************
-The first task in data processing is often creating seasonal cycles.
-Imagine a 100-year simulation with its 1200 monthly mean files.
-Our goal is to create a single file containing 12 months of data.
-Each month in the output file is the mean of 100 input files.
-
-Normally, we store the "reduced" data in a smaller, local directory.
-
-caseid='T42x1_40'
-#drc_in="${DATA}/archive/${caseid}/atm"
-drc_in="${DATA}/${caseid}"
-drc_out="${DATA}/${caseid}"
-mkdir -p ${drc_out}
-cd ${drc_out}
-
-Method 1: Assume all data in directory applies
-for mth in {1..12}; do
-  mm=`printf "%02d" $mth`
-  ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-    ${drc_in}/${caseid}.cam2.h0.*-${mm}.nc
-done # end loop over mth
-
-Method 2: Use shell 'globbing' to construct input filenames
-for mth in {1..12}; do
-  mm=`printf "%02d" $mth`
-  ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc \
-    ${drc_in}/${caseid}.cam2.h0.00??-${mm}.nc \
-    ${drc_in}/${caseid}.cam2.h0.0100-${mm}.nc
-done # end loop over mth
-
-Method 3: Construct input filename list explicitly
-for mth in {1..12}; do
-  mm=`printf "%02d" $mth`
-  fl_lst_in=''
-  for yr in {1..100}; do
-    yyyy=`printf "%04d" $yr`
-    fl_in=${caseid}.cam2.h0.${yyyy}-${mm}.nc
-    fl_lst_in="${fl_lst_in} ${caseid}.cam2.h0.${yyyy}-${mm}.nc"
-  done # end loop over yr
-  ncra -O -D 1 -o ${drc_out}/${caseid}_clm${mm}.nc -p ${drc_in} \
-    ${fl_lst_in}
-done # end loop over mth
-
-Make sure the output file averages correct input files!
-ncks -M prints global metadata:
-
-  ncks -M ${drc_out}/${caseid}_clm01.nc
-
-The input files ncra used to create the climatological monthly mean
-will appear in the global attribute named 'history'.
-
-Use ncrcat to aggregate the climatological monthly means
-
-  ncrcat -O -D 1 \
-    ${drc_out}/${caseid}_clm??.nc ${drc_out}/${caseid}_clm_0112.nc
-
-Finally, create climatological means for reference.
-The climatological time-mean:
-
-  ncra -O -D 1 \
-    ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm.nc
-
-The climatological zonal-mean:
-
-  ncwa -O -D 1 -a lon \
-    ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_x.nc
-
-The climatological time- and spatial-mean:
-
-  ncwa -O -D 1 -a lon,lat,time -w gw \
-    ${drc_out}/${caseid}_clm.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-This file contains only scalars, e.g., "global mean temperature",
-used for summarizing global results of a climate experiment.
-
-Climatological monthly anomalies = Annual Cycle:
-Subtract climatological mean from climatological monthly means.
-Result is annual cycle, i.e., climate-mean has been removed.
-
-  ncbo -O -D 1 -o ${drc_out}/${caseid}_clm_0112_anm.nc \
-    ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_xyt.nc
-
-************************************************************************
-Task 2: Correcting monthly averages
-************************************************************************
-The previous step appoximates all months as being equal, so, e.g.,
-February weighs slightly too much in the climatological mean.
-This approximation can be removed by weighting months appropriately.
-We must add the number of days per month to the monthly mean files.
-First, create a shell variable dpm:
-
-unset dpm # Days per month
-declare -a dpm
-dpm=(0 31 28.25 31 30 31 30 31 31 30 31 30 31) # Allows 1-based indexing
-
-Method 1: Create dpm directly in climatological monthly means
-for mth in {1..12}; do
-  mm=`printf "%02d" ${mth}`
-  ncap2 -O -s "dpm=0.0*date+${dpm[${mth}]}" \
-    ${drc_out}/${caseid}_clm${mm}.nc ${drc_out}/${caseid}_clm${mm}.nc
-done # end loop over mth
-
-Method 2: Create dpm by aggregating small files
-for mth in {1..12}; do
-  mm=`printf "%02d" ${mth}`
-  ncap2 -O -v -s "dpm=${dpm[${mth}]}" ~/nco/data/in.nc \
-    ${drc_out}/foo_${mm}.nc
-done # end loop over mth
-ncecat -O -D 1 -p ${drc_out} -n 12,2,2 foo_${mm}.nc foo.nc
-ncrename -O -D 1 -d record,time ${drc_out}/foo.nc
-ncatted -O -h \
-  -a long_name,dpm,o,c,"Days per month" \
-  -a units,dpm,o,c,"days" \
-  ${drc_out}/${caseid}_clm_0112.nc
-ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-Method 3: Create small netCDF file using ncgen
-cat > foo.cdl << 'EOF'
-netcdf foo {
-dimensions:
-	time=unlimited;
-variables:
-	float dpm(time);
-	dpm:long_name="Days per month";
-	dpm:units="days";
-data:
-	dpm=31,28.25,31,30,31,30,31,31,30,31,30,31;
-}
-EOF
-ncgen -b -o foo.nc foo.cdl
-ncks -A -v dpm ${drc_out}/foo.nc ${drc_out}/${caseid}_clm_0112.nc
-
-Another way to get correct monthly weighting is to average daily
-output files, if available.
-
-************************************************************************
-Task 3: Regional processing
-************************************************************************
-Let's say you are interested in examining the California region.
-Hyperslab your dataset to isolate the appropriate latitude/longitudes.
-
-  ncks -O -D 1 -d lat,30.0,37.0 -d lon,240.0,270.0 \
-    ${drc_out}/${caseid}_clm_0112.nc ${drc_out}/${caseid}_clm_0112_Cal.nc
-
-The dataset is now much smaller!
-To examine particular metrics.
-
-************************************************************************
-Task 4: Accessing data stored remotely
-************************************************************************
-OPeNDAP server examples:
-
-UCI DAP servers:
-ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
-ncrcat -O -C -D 3 -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
-  -l /tmp in.nc in.nc ~/foo.nc
-
-Unidata DAP servers:
-ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc
-ncrcat -O -C -D 3 -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods \
-  -l /tmp in.nc in.nc ~/foo.nc
-
-NOAA DAP servers:
-ncwa -O -C -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p \
-http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/surface \
-pres.sfc.1969.nc ~/foo.nc
-
-LLNL PCMDI IPCC OPeNDAP Data Portal:
-ncks -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
-
-Earth System Grid (ESG): http://www.earthsystemgrid.org
-
-caseid='b30.025.ES01'
-CCSM3.0 1% increasing CO2 run, T42_gx1v3, 200 years starting in year 400
-Atmospheric post-processed data, monthly averages, e.g.,
-/data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0449-12.nc
-/data/zender/tmp/b30.025.ES01.cam2.h0.TREFHT.0400-01_cat_0599-12.nc
-
-ESG supports password-protected FTP access by registered users
-NCO uses the .netrc file, if present, for password-protected FTP access
-Syntax for accessing single file is, e.g.,
-ncks -O -D 3 \
-  -p ftp://climate.llnl.gov/sresa1b/atm/mo/tas/ncar_ccsm3_0/run1 \
-  -l /tmp tas_A1.SRESA1B_1.CCSM.atmm.2000-01_cat_2099-12.nc ~/foo.nc
-
-# Average surface air temperature tas for SRESA1B scenario
-# This loop is illustrative and will not work until NCO correctly
-# translates '*' to FTP 'mget' all remote files
-for var in 'tas'; do
-for scn in 'sresa1b'; do
-for mdl in 'cccma_cgcm3_1 cccma_cgcm3_1_t63 cnrm_cm3 csiro_mk3_0 \
-gfdl_cm2_0 gfdl_cm2_1 giss_aom giss_model_e_h giss_model_e_r \
-iap_fgoals1_0_g inmcm3_0 ipsl_cm4 miroc3_2_hires miroc3_2_medres \
-miub_echo_g mpi_echam5 mri_cgcm2_3_2a ncar_ccsm3_0 ncar_pcm1 \
-ukmo_hadcm3 ukmo_hadgem1'; do
-for run in '1'; do
-        ncks -R -O -D 3 -p ftp://climate.llnl.gov/${scn}/atm/mo/${var}/${mdl}/run${run} -l ${DATA}/${scn}/atm/mo/${var}/${mdl}/run${run} '*' ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-done # end loop over run
-done # end loop over mdl
-done # end loop over scn
-done # end loop over var
-
-cd sresa1b/atm/mo/tas/ukmo_hadcm3/run1/
-ncks -H -m -v lat,lon,lat_bnds,lon_bnds -M tas_A1.nc | m
-bds -x 096 -y 073 -m 33 -o ${DATA}/data/dst_3.75x2.5.nc # ukmo_hadcm3
-ncview ${DATA}/data/dst_3.75x2.5.nc
-
-# msk_rgn is California mask on ukmo_hadcm3 grid
-# area is correct area weight on ukmo_hadcm3 grid
-ncks -A -v area,msk_rgn ${DATA}/data/dst_3.75x2.5.nc \
-${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/area_msk_ukmo_hadcm3.nc
-
-Template for standardized data:
-${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-e.g., raw data
-${DATA}/sresa1b/atm/mo/tas/ukmo_hadcm3/run1/tas_A1.nc
-becomes standardized data
-
-Level 0: raw from IPCC site--no changes except for name
-         Make symbolic link name match raw data
-Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-ln -s -f tas_A1.nc sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc
-area_msk_ukmo_hadcm3.nc
-
-Level I: Add all variables (but not standardized in time)
-         to file containing msk_rgn and area
-Template: ${scn}_${mdl}_${run}_${yyyymm}_${yyyymm}.nc
-
-/bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-ncks -A -v tas sresa1b_ukmo_hadcm3_run1_tas_200101_209911.nc \
-               sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-ncks -A -v pr  sresa1b_ukmo_hadcm3_run1_pr_200101_209911.nc \
-               sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-If already have file then:
-mv sresa1b_ukmo_hadcm3_run1_200101_209911.nc foo.nc
-/bin/cp area_msk_ukmo_hadcm3.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-ncks -A -v tas,pr foo.nc sresa1b_ukmo_hadcm3_run1_200101_209911.nc
-
-Level II: Correct # years, months
-Template: ${scn}_${mdl}_${run}_${var}_${yyyymm}_${yyyymm}.nc
-
-ncks -d time,....... file1.nc file2.nc
-ncrcat file2.nc file3.nc sresa1b_ukmo_hadcm3_run1_200001_209912.nc
-
-Level III: Many derived products from level II, e.g.,
-
-      A. Global mean timeseries
-      ncwa -w area -a lat,lon \
-           sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy.nc
-
-      B. Califoria average timeseries
-      ncwa -m msk_rgn -w area -a lat,lon \
-           sresa1b_ukmo_hadcm3_run1_200001_209912.nc \
-	   sresa1b_ukmo_hadcm3_run1_200001_209912_xy_Cal.nc</example>
-    </chapter>
-  </node>
-  <node>
-    <nodename>mybibnode</nodename>
-    <nodenext>General Index</nodenext>
-    <nodeprev>CCSM Example</nodeprev>
-    <nodeup>Top</nodeup>
-    <chapter>
-      <title>References</title>
-      <itemize>
-        <itemfunction></itemfunction>
-        <item>
-          <para><anchor name="ZeM07"></anchor>[ZeM07] 
-<!-- %**else if --> Zender, C. S., and H. J. Mangalam (2007), Scaling Properties of Common Statistical Operators for Gridded Datasets, Int. J. High Perform. Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.</para>
-        </item>
-        <item>
-          <para><anchor name="Zen08"></anchor>[Zen08] 
-<!-- %**else if --> Zender, C. S. (2008), Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO), Environ. Modell. Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.</para>
-        </item>
-        <item>
-          <para><anchor name="WZJ07"></anchor>[WZJ07] 
-<!-- %**else if --> Wang, D. L., C. S. Zender, and S. F. Jenks (2007), DAP-enabled Server-side Data Reduction and Analysis, Proceedings of the 23rd AMS Conference on Interactive Information and Processing Systems (IIPS) for Meteorology, Oceanography, and Hydrology, Paper 3B.2, January 14-18, San Antonio, TX. American Meteorological Society, AMS Press, Boston, MA.</para>
-        </item>
-        <item>
-          <para><anchor name="ZMW06"></anchor>[ZMW06] 
-<!-- %**else if --> Zender, C. S., H. Mangalam, and D. L. Wang (2006), Improving Scaling Properties of Common Statistical Operators for Gridded Geoscience Datasets, Eos Trans. AGU, 87(52), Fall Meet. Suppl., Abstract IN53B-0827.</para>
-        </item>
-        <item>
-          <para><anchor name="ZeW07"></anchor>[ZeW07] 
-<!-- %**else if --> Zender, C. S., and D. L. Wang (2007), High performance distributed data reduction and analysis with the netCDF Operators (NCO), Proceedings of the 23rd AMS Conference on Interactive Information and Processing Systems (IIPS) for Meteorology, Oceanography, and Hydrology, Paper 3B.4, January 14-18, San Antonio, TX. American Meteorological Society, AMS Press, Boston, MA.</para>
-        </item>
-        <item>
-          <para><anchor name="WZJ06"></anchor>[WZJ06] 
-<!-- %**else if --> Wang, D. L., C. S. Zender, and S. F. Jenks (2006), Server-side netCDF Data Reduction and Analysis, Eos Trans. AGU, 87(52), Fall Meet. Suppl., Abstract IN53B-0826.</para>
-        </item>
-        <item>
-          <para><anchor name="WZJ073"></anchor>[WZJ073] 
-<!-- %**else if --> Wang, D. L., C. S. Zender, and S. F. Jenks (2007), Server-side parallel data reduction and analysis, in Advances in Grid and Pervasive Computing, Second International Conference, GPC 2007, Paris, France, May 2-4, 2007, Proceedings. IEEE Lecture Notes in Computer Science, vol. 4459, edited by C. Cerin and K.-C. Li, pp. 744-750, Springer-Verlag, Berlin/Heidelberg, doi:10.1007/978-3-540-72360-8_67.</para>
-        </item>
-        <item>
-          <para><anchor name="WZJ074"></anchor>[WZJ074] 
-<!-- %**else if --> Wang, D. L., C. S. Zender and S. F. Jenks (2007), A System for Scripted Data Analysis at Remote Data Centers, Eos Trans. AGU, 88(52), Fall Meet. Suppl., Abstract IN11B-0469.</para>
-        </item>
-        <item>
-          <para><anchor name="WZJ081"></anchor>[WZJ081] 
-<!-- %**else if --> Wang, D. L., C. S. Zender and S. F. Jenks (2008), Cluster Workflow Execution of Retargeted Data Analysis Scripts, Proceedings of the 8th IEEE Int'l Symposium on Cluster Computing and the Grid (IEEE CCGRID '08), pp. 449-458, Lyon, France, May 2008.</para>
-        </item>
-        <item>
-          <para><anchor name="WZJ091"></anchor>[WZJ091] 
-<!-- %**else if --> Wang, D. L., C. S. Zender, and S. F. Jenks (2009), Efficient Clustered Server-side Data Analysis Workflows using SWAMP, Earth Sci. Inform., 2(3), 141-155, doi:10.1007/s12145-009-0021-z.</para>
-        </item>
-      </itemize>
-<!-- @node Name Index, General Index, Operators, Top -->
-<!-- @unnumbered Function and Variable Index -->
-<!-- @printindex fn -->
-    </chapter>
-  </node>
-  <node>
-    <nodename>General Index</nodename>
-    <nodeprev>mybibnode</nodeprev>
-    <nodeup>Top</nodeup>
-    <unnumbered>
-      <title>General Index</title>
-      <printindex>cp</printindex>
-<!-- Print table of contents -->
-      <contents></contents>
-<!-- TTFN (Ta ta for now) -->
-    </unnumbered>
-  </node>
-</texinfo>
-<!-- Keep this comment at the end of the file
-Local variables:
-mode: sgml
-sgml-indent-step:1
-sgml-indent-data:nil
-End:
--->
diff --git a/doc/nco_news.shtml b/doc/nco_news.shtml
index 63d0639..d38c4dd 100644
--- a/doc/nco_news.shtml
+++ b/doc/nco_news.shtml
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/nco/nco/doc/nco_news.shtml,v 1.21 2011/02/12 13:58:03 zender Exp $
+<!-- $Header: /cvsroot/nco/nco/doc/nco_news.shtml,v 1.22 2012/06/14 20:20:14 zender Exp $
 
 Purpose: NCO news archive
 
@@ -181,7 +181,7 @@ future directions for NCO.</li>
 <li><a href="http://sf.net/forum/forum.php?forum_id=9830">Help
 Forum</a>: Installation problems, user's questions (e.g., "How do I
 average x and y...?")</li>
-<li><a href="https://sourceforge.net/projects/nco/forums/forum/9831">Developers
+<li><a href="https://sf.net/projects/nco/forums/forum/9831">Developers
 forum</a>: Discussion of patches, technical questions related to
 modifying NCO, and discussion of specific items on the 
 <a href="./TODO">TODO list</a> and how best to address them</li>  
diff --git a/doc/nco_qt_msvc.shtml b/doc/nco_qt_msvc.shtml
new file mode 100644
index 0000000..9118059
--- /dev/null
+++ b/doc/nco_qt_msvc.shtml
@@ -0,0 +1,129 @@
+<!--
+Usage:
+/usr/bin/scp ~/nco/doc/index.shtml ~/nco/doc/nco_qt_msvc.shtml ~/nco/doc/logo_vs2010.png ~/nco/doc/logo_qt.png pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
+scp -p ~/nco/doc/index.shtml ~/nco/doc/nco_qt_msvc.shtml ~/nco/doc/logo_vs2010.png ~/nco/doc/logo_qt.png  dust.ess.uci.edu:/var/www/html/nco
+-->
+
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=unicode">
+<meta http-equiv="cache-control" content="no-cache" />
+<title>NCO Qt/MSVC build</title>
+</head>
+
+<body>
+
+<h2>NCO Qt/MSVC build</h2>
+This page contains instructions regarding building NCO with the Qt system and with Microsoft Windows Visual Studio 2010 (MSVC). 
+This page is mostly important for developers that want to build NCO from source using Qt or MSVC.
+<br>
+<br>
+
+<table border="0" width="100%">
+  <tr>
+    <td width="100%" bgcolor="#C0C0C0"></td>
+  </tr>
+</table>
+
+<table border="0" width="25%">
+<tr>
+<td><h2>Build NCO with Qt</h2></td><td><img src="logo_qt.png" align=left></td>
+</tr>
+<tr>
+</table>
+
+
+
+<a target="_top" href="http://qt.nokia.com/products/">Qt</a> is a cross platform build system. As of NCO 4.2.1, it is possible to build NCO with Qt, in a Linux, Mac OSX or 
+Windows enviroment. NCO can be built either from the Qt IDE, QtCreator, or from the command line. To build NCO with QtCreator, just open the file /qt/nco.pro. 
+To build NCO from the command line, do:
+<br>
+<p><tt>$ cd qt</tt>
+<br><tt>$ qmake</tt>
+<br><tt>$ make</tt></p>
+
+<table border="0" width="100%">
+  <tr>
+    <td width="100%" bgcolor="#C0C0C0"></td>
+  </tr>
+</table>
+
+<table border="0" width="35%">
+<tr>
+<td><h2>Build NCO with MSVC</h2></td><td><img src="logo_vs2010.png" align=left></td>
+</tr>
+<tr>
+</table>
+
+
+As of NCO 4.2.0, it is possible to build NCO with <a target="_top" href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express">Visual Studio 2010</a>. 
+To build NCO with MSVC, open the file /qt/nco.sln with Visual Studio.
+
+<p>NCO depends on several pre-installed libraries, namely HDF5 (including HDF5 High-Level), netCDF, zlib. The NCO supplied Visual Studio projects assume static builds of these libraries. These are specified by means of the following Windows enviroments variables in the projects:</p>
+<tt>LIB_NETCDF</tt>
+<br><tt>LIB_DISPATCH</tt>
+<br><tt>LIB_NETCDF4</tt>
+<br><tt>LIB_HDF5</tt>
+<br><tt>LIB_HDF5_HL</tt>
+<br><tt>LIB_ZLIB</tt>
+<br><tt>LIB_SZIP</tt>
+<br><tt>LIB_ANTLR</tt>
+<br>
+<br>
+Additionnaly, the following environment variable must also be defined for the location of the netCDF header files:
+<br><br><tt>HEADER_NETCDF</tt>
+<br>
+<br>
+
+<table border="0" width="100%">
+  <tr>
+    <td width="100%" bgcolor="#C0C0C0"></td>
+  </tr>
+</table>
+
+
+<h2>netCDF 4.2.0 built with MSVC</h2>
+
+For convenience, we include Microsoft Visual Studio 2010 projects that allow to build all the NCO dependency libraries. The following files have MSVC build projects for:
+<br>
+<br>
+
+<table border="1" width="70%" >
+<tr>
+<td><b>Library</b></td><td><b>Description</b></td><td><b>File</b></td><td><b>Size</b></td><td><b>Date</b></td>
+</tr>
+<!-- netCDF -->
+<tr>
+<td><tt>netCDF 4.2.0</tt></td><td>Contains the projects:<br>/libsrc<br>/libdispatch<br>/libsrc4<br>/ncdump</td>
+<td><a href="http://glace.ess.uci.edu/libs/netcdf-4.2.tar.gz">netcdf-4.2.0.tar.gz</a></td><td>1.8MB<br></td><td>June 24, 2012<br></td>
+</tr>
+<!-- HDF5 -->
+<tr>
+<td><tt>HDF5 1.8.5 patch1</tt></td><td>Contains the projects:<br>/hdf5<br>/hdf5_hl<br>/h5tinit<br>/h5libsettings</td>
+<td><a href="http://glace.ess.uci.edu/libs/hdf5-1.8.5.patch1.tar.gz">hdf5-1.8.5.patch1.tar.gz</a></td><td>1.8MB<br></td><td>June 24, 2012<br></td>
+</tr>
+<!-- antlr -->
+<tr>
+<td><tt>antlr-2.7.7</tt></td><td>Contains the projects:<br>/antlr</td>
+<td><a href="http://glace.ess.uci.edu/libs/antlr-2.7.7.tar.gz">antlr-2.7.7.tar.gz</a></td><td>4.5MB<br></td><td>June 24, 2012<br></td>
+</tr>
+
+</table>
+<br>
+
+
+
+<table border="0" width="100%">
+  <tr>
+    <td width="100%" bgcolor="#C0C0C0"></td>
+  </tr>
+</table>
+
+<table width="100%"><tr><td align="left" valign="top">
+<a href="http://nco.sf.net">Homepage</a> 
+</td>
+</table>
+
+</body>
+</html>
diff --git a/doc/nco_src_frg.txt b/doc/nco_src_frg.txt
index da977da..1c80b4d 100644
--- a/doc/nco_src_frg.txt
+++ b/doc/nco_src_frg.txt
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/nco/nco/doc/nco_src_frg.txt,v 1.65 2011/03/01 23:11:27 zender Exp $ -*-text-*-
+# $Header: /cvsroot/nco/nco/doc/nco_src_frg.txt,v 1.66 2012/06/14 20:20:14 zender Exp $ -*-text-*-
 
 # Purpose: Potpurri of Sourceforge information for NCO netCDF Operators project
 
@@ -170,7 +170,7 @@ since they were released. Eventually, therefore, you must learn to
 use CVS so that you can make serious code changes and keep up with the
 development branch. NCO-specific instructions on how to check out the
 code with CVS are posted to the Developer's forum on Sourceforge 
-http://sourceforge.net/projects/nco/forums/forum/9831 
+http://sf.net/projects/nco/forums/forum/9831 
 in the message dated June 21, 2000.
 
 Once you have NCO, build it! If you must make non-trivial
diff --git a/doc/opendap.sh b/doc/opendap.sh
index 05495ee..29f6ccb 100755
--- a/doc/opendap.sh
+++ b/doc/opendap.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# $Header: /cvsroot/nco/nco/doc/opendap.sh,v 1.15 2010/10/08 19:02:18 zender Exp $
+# $Header: /cvsroot/nco/nco/doc/opendap.sh,v 1.16 2013/09/23 21:43:38 zender Exp $
 
 # Purpose: Install OPeNDAP prior to building NCO as DAP-enabled clients
 
@@ -31,9 +31,9 @@
 # ncks -M http://dust.ess.uci.edu/nco/in.nc # wget
 # ncks -M -p http://dust.ess.uci.edu/nco in.nc # wget
 # ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc # DAP (borken server)
-# ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc # DAP
-# ncks -M -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in_4.nc # DAP
-# ncra -O -C -D 3 -p http://motherlode.ucar.edu:8080/thredds/dodsC/testdods in.nc in.nc ~/foo.nc
+# ncks -M -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc # DAP
+# ncks -M -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in_4.nc # DAP
+# ncra -O -C -D 3 -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc in.nc ~/foo.nc
 # ncwa -O -C -D 3 -a lat,lon,time -d lon,-10.,10. -d lat,-10.,10. -l /tmp -p http://www.cdc.noaa.gov/cgi-bin/nph-nc/Datasets/ncep.reanalysis.dailyavgs/surface pres.sfc.1969.nc ~/foo.nc
 # ncks -D 3 http://eclipse.ncdc.noaa.gov:9090/thredds/dodsC/isccp-d1/2001/ISCCP.D1.1.GLOBAL.2001.01.01.0000.GPC -d lat,1,2 -d lon,1,2 ~/test.nc 
 # ncks -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
diff --git a/doc/surfit_2013.txt b/doc/surfit_2013.txt
new file mode 100644
index 0000000..222ec30
--- /dev/null
+++ b/doc/surfit_2013.txt
@@ -0,0 +1,88 @@
+# Purpose: Project description for 2013 UCI Calit2 Surf-IT program 
+# (Summer Undergraduate Research Fellowships in Information Technologies)
+# Submitted to Stu Ross 20130228
+
+(20130520: Notes on future SURFIT ads:
+1. Make first affiliation CS not ESS to get more CS applicants
+2. Format ads so Windows line-breaking won't create widows/orphans
+3. Prerequisites: Good programming skills at the level of third year
+computer science. Proficiency with C and a scripting language.)
+
+Optimized Storage Shapes for Multi-dimensional Gridded Datasets
+
+PI: Prof. Charlie Zender
+    Departments of Earth System Science and Computer Science
+
+Description:
+Many if not most geophysical datasets such as climate simulations
+are stored in a self-describing data format called netCDF. 
+Data access speeds vary by factors of thousands, and depends primarily
+upon how well their storage layout matches the hyperslab request.  
+This project will improve understanding and parameterization of the
+optimal layout (i.e., the "chunking") to maximize fast access and
+minimize slow access to netCDF datasets.
+
+Our netCDF Operators (NCO) are a widely used, opensource toolkit for
+manipulating and analyzing (statistics, trends, comparison with
+observations) netCDF data. NCO supports a range of chunking policies,
+but has no heuristic for guiding the user on optimal chunking.
+The student will first conduct sensitivity tests to benchmark access
+times for common hyperslab requests. Then the student will construct
+and implement new, optimal chunking policies. 
+
+The first few weeks would be devoted to literature review and to
+scripting benchmark tests to assess the dependence of wallclock time
+on data layout. The next few weeks would be analysis and hypothesis
+testing of generic chunking policies motivated by the benchmarking
+results. The last few weeks would be implementation and analysis of
+optimized chunking policies in NCO.
+
+Prerequisites: Proficiency with C and multi-dimensional data
+
+Outcomes: Skills and understanding of scientific data analysis,
+benchmarking, interpretation of results.
+
+Recommended Web sites and publications:
+1. Chunking Data: Why it Matters
+   http://www.unidata.ucar.edu/blogs/developer/en/entry/chunking_data_why_it_matters 
+2. Efficient Organization of Large Multidimensional Arrays
+   http://cs.brown.edu/courses/cs227/archives/2008/Papers/FileSystems/sarawagi94efficient.pdf
+3. Optimal Chunking of Large Multidimensional Arrays for Data Warehousing
+   http://www.escholarship.org/uc/item/35201092
+4. netCDF Operators http://nco.sf.net
+5. Zender, C. S., and H. J. Mangalam (2007), Scaling Properties of Common Statistical Operators for Gridded Datasets, Int. J. High Perform. Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.
+6. Zender, C. S. (2008), Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO), Environ. Modell. Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
+
+************************************************************************
+NB: Following project not "researchy" enough, maybe next year
+************************************************************************
+
+Next Generation Parser for Structured Data Analysis
+
+PI: Prof. Charlie Zender
+    Departments of Earth System Science and Computer Science
+
+Description:
+Many if not most geophysical datasets such as climate simulations
+are stored in a self-describing data format called netCDF. Our netCDF
+Operators (NCO) are a widely used, opensource toolkit for manipulating
+and analyzing (statistics, trends, comparison with observations)
+netCDF data. 
+
+This project will utilize ANTLR (ANother Tool for Language
+Recognition) to generate the NCO language parser in C++. Our goals are  
+two-fold: 1. To create and efficient, extensible parser for structured
+data analysis. 2. To enhance parallelism in geophysical data analysis
+involving structured data with storage constraints.
+
+Prerequisites: Familiarity with C/C++ and data
+
+Outcomes: Skills and understanding of scientific language construction, data
+analysis, open source software development and climate change. 
+
+Recommended Web sites and publications:
+1. ANother Tool for Language Recognition http://www.antlr.org
+2. netCDF Operators http://nco.sf.net
+3. Zender, C. S., and H. J. Mangalam (2007), Scaling Properties of Common Statistical Operators for Gridded Datasets, Int. J. High Perform. Comput. Appl., 21(4), 485-498, doi:10.1177/1094342007083802.
+4. Zender, C. S. (2008), Analysis of Self-describing Gridded Geoscience Data with netCDF Operators (NCO), Environ. Modell. Softw., 23(10), 1338-1342, doi:10.1016/j.envsoft.2008.03.004.
+
diff --git a/doc/xmp/add_crd.sh b/doc/xmp/add_crd.sh
new file mode 100755
index 0000000..1316e13
--- /dev/null
+++ b/doc/xmp/add_crd.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+#============================================================
+# Example for
+#	- regrid (using bi_interp.nco): the spatial resolution of MODIS data 
+#		is much finer than those of CMIP5 models. In order to compare
+#		the two, we can regrid MODIS data to comform to CMIP5.
+#	- add coordinates (using coor.nco): there is no coordinate information
+#		in MODIS data. We have to add it manually now.
+#
+# Input files:
+# /modis/mcd43c3/cesm-grid/MCD43C3.2000049.regrid.nc
+#
+# Output files:
+# /modis/mcd43c3/cesm-grid/MCD43C3.2000049.regrid.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Add-Coordinates-to-MODIS-Data
+#
+# Execute this script: bash add_crd.sh
+#============================================================
+
+var=( 'MOD10CM' )     # Variable
+fld_in=( 'snc/nc/' )  # Folder of input files
+drc_in='/media/grele_data/wenshan/modis/' # directory of input files
+
+for fn in $( ls ${drc_in}${fld_in}${var}*.nc ); do		# Loop over files
+  sfx=$( echo ${fn} | cut -d '/' -f 8 | cut -d '.' -f 2-4 )	# Part of file names
+  echo ${sfx} 
+  
+  # Rename dimension names
+  ncrename -d YDim_MOD_CMG_Snow_5km,lat -d XDim_MOD_CMG_Snow_5km,lon -O \
+    ${drc_in}${fld_in}${var}.${sfx}.nc ${drc_in}${fld_in}${var}.${sfx}.nc
+  # Add coordinates
+  ncap2 -O -S crd.nco ${drc_in}${fld_in}${var}.${sfx}.nc \
+    ${drc_in}${fld_in}${var}.${sfx}.nc
+done
diff --git a/doc/xmp/ann_avg.sh b/doc/xmp/ann_avg.sh
new file mode 100755
index 0000000..fa0acdc
--- /dev/null
+++ b/doc/xmp/ann_avg.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+# Includes gsl_rgr.nco
+
+#===========================================================================
+# After cmb_fl.sh
+# Example: Annual trend of each model over Greenland and Tibet 
+#   ( time- and spatial-average, standard deviation, 
+#   anomaly and linear regression)
+#
+# Input files:
+# /data/cmip5/snc_LImon_bcc-csm1-1_historical_r1i1p1_185001-200512.nc
+#
+# Output files:
+# /data/cmip5/outout/snc/snc_LImon_all-mdl_historical_all-nsm_annual.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Annual-Average-over-Regions
+#
+# Execute this script: bash ann_avg.sh
+#===========================================================================
+
+#---------------------------------------------------------------------------
+# Parameters
+drc_in='/home/wenshanw/data/cmip5/'		# Directory of input files
+drc_out='/home/wenshanw/data/cmip5/output/'	# Directory of output files
+
+var=( 'snc' 'snd' )		# Variables
+rlm='LImon'			# Realm
+xpt=( 'historical' )		# Experiment ( could be more )
+
+fld_out=( 'snc/' 'snd/' )		# Folders of output files
+#------------------------------------------------------------
+
+for var_id in {0..1}; do		# Loop over two variables
+  # Names of all models 
+  #   (ls [get file names]; cut [get the part for model names]; 
+  #   sort; uniq [remove duplicates]; awk [print])
+  mdl_set=$( ls ${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc | \
+    cut -d '_' -f 3 | sort | uniq -c | awk '{print $2}' )
+  
+  for mdl in ${mdl_set}; do		# Loop over models
+  	# Loop over ensemble members
+    for fn in $( ls ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc ); do
+      pfx=$( echo ${fn} | cut -d'/' -f6 | cut -d'_' -f1-5 )
+    
+      # Two regions
+      # Geographical weight
+      ncap2 -O -s 'gw = cos(lat*3.1415926/180.); gw at long_name="geographical weight"\
+        ;gw at units="ratio"' ${fn} ${drc_out}${fld_out[var_id]}${pfx}_gw.nc
+      # Greenland
+      ncwa -O -w gw -d lat,60.0,75.0 -d lon,300.0,340.0 -a lat,lon \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw_1.nc
+      # Tibet
+      ncwa -O -w gw -d lat,30.0,40.0 -d lon,80.0,100.0 -a lat,lon \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw_2.nc
+    
+      # Aggregate 2 regions together
+      ncecat -O -u rgn ${drc_out}${fld_out[var_id]}${pfx}_gw_?.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw_rgn4.nc
+
+      # Change dimensions order
+      ncpdq -O -a time,rgn ${drc_out}${fld_out[var_id]}${pfx}_gw_rgn4.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw_rgn4.nc
+
+      # Remove temporary files (optional)
+      rm ${drc_out}${fld_out[var_id]}${pfx}_gw_?.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw.nc
+    
+      # Annual average (use the feature of 'Duration')
+      ncra -O --mro -d time,"1956-01-01 00:00:0.0","2005-12-31 23:59:9.9",12,12 \
+        ${drc_out}${fld_out[var_id]}${pfx}_gw_rgn4.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_yrly.nc
+    
+      # Anomaly
+      # Long-term average
+      ncwa -O -a time ${drc_out}${fld_out[var_id]}${pfx}_yrly.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_clm.nc
+      # Subtract long-term average
+      ncbo -O --op_typ=- ${drc_out}${fld_out[var_id]}${pfx}_yrly.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_clm.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_anm.nc
+    done
+    
+    rm ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*_yrly.nc
+    
+    # Average over all the ensemble members
+    ncea -O -4 ${drc_out}${fld_out[var_id]}${var[var_id]}_\
+      ${rlm}_${mdl}_${xpt[0]}_*_anm.nc ${drc_out}${fld_out[var_id]}\
+      ${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_anm.nc
+    
+    # Standard deviation ------------------------------
+    for fn in $( ls ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_\
+      ${xpt[0]}_*_anm.nc ); do
+      pfx=$( echo ${fn} | cut -d'/' -f8 | cut -d'_' -f1-5 )
+    
+      # Difference between each ensemble member and the average of all members
+      ncbo -O --op_typ=- ${fn} \
+        ${drc_out}${fld_out[var_id]}${var[var_id]}_\
+        ${rlm}_${mdl}_${xpt[0]}_all-nsm_anm.nc \
+        ${drc_out}${fld_out[var_id]}${pfx}_dlt.nc
+    done
+    
+    # RMS
+    ncea -O -y rmssdn ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+      ${mdl}_${xpt[0]}_*_dlt.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+      ${mdl}_${xpt[0]}_all-nsm_sdv.nc
+    # Rename variables
+    ncrename -v ${var[var_id]},sdv \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+      ${mdl}_${xpt[0]}_all-nsm_sdv.nc
+    # Edit attributions
+    ncatted -a standard_name,sdv,a,c,"_standard_deviation_over_ensemble" \
+      -a long_name,sdv,a,c," Standard Deviation over Ensemble" \
+      -a original_name,sdv,a,c," sdv" \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+      ${mdl}_${xpt[0]}_all-nsm_sdv.nc
+    #------------------------------------------------------------
+  
+    # Linear regression -----------------------------------------
+    #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+    # Have to change the name of variable in the commands file 
+    #   of gsl_rgr.nco manually (gsl_rgr.nco is listed below)
+    ncap2 -O -S gsl_rgr.nco \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+      ${mdl}_${xpt[0]}_all-nsm_anm.nc ${drc_out}${fld_out[var_id]}${var[var_id]}\
+      _${rlm}_${mdl}_${xpt[0]}_all-nsm_anm_rgr.nc
+    #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+    # Get rid of temporary variables
+    ncks -O -v c0,c1,pval,${var[var_id]},gw \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_\
+      ${xpt[0]}_all-nsm_anm_rgr.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+    #------------------------------------------------------------
+    
+    # Move the variable 'sdv' into the anomaly files (i.e., *anm.nc files)
+    ncks -A -v sdv \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+      ${mdl}_${xpt[0]}_all-nsm_sdv.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+    rm ${drc_out}${fld_out[var_id]}${var[var_id]}_*historical*
+    
+    echo Model ${mdl} done!
+  done
+  
+  # Store models as groups in the output file
+  ncecat -O --gag ${drc_out}${fld_out[var_id]}${var[var_id]}_*.nc 
+  ${drc_out}${fld_out[var_id]}${var[var_id]}_\
+    ${rlm}_all-mdl_${xpt[0]}_all-nsm_annual.nc
+
+  echo Var ${var[var_id]} done!
+done
diff --git a/doc/xmp/ann_avg_grp.sh b/doc/xmp/ann_avg_grp.sh
new file mode 100644
index 0000000..231a018
--- /dev/null
+++ b/doc/xmp/ann_avg_grp.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+#============================================================
+# Group data output by cmb_fl_grp.sh
+# Annual trend of each model over Greenland and Tibet 
+# Time- and spatial-average, standard deviation and anomaly
+# No regression yet (needs the help of ncap2)
+# No standard deviation yet (ncap2 or ncea)
+# No ensemble member average (ncea)
+#
+# Input files:
+# sn_LImon_all-mdl_all-xpt_all-nsm_199001-200512.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Annual-Average-over-Regions
+#
+# Execute this script: bash ann_avg_grp.sh
+#===========================================================================
+
+# Input and output directory
+drc='/media/grele_data/wenshan/cesm/historical-exp/nco_grp/grp/'
+
+# Constants
+rlm='LImon'    # Realm: LandIce; Time frequency: monthly
+tms='199001-200512'     # Timeseris
+flt='nc'     # File Type
+var='sn'      # Variable
+lbl='all-mdl_all-xpt_all-nsm'     # Label
+
+## Greenland
+ncwa -O -w gw -d lat,60.0,75.0 -d lon,300.0,340.0 -a lat,lon \
+  ${drc}${var}_${rlm}_${lbl}_${tms}.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt}
+# Tibet
+ncwa -O -w gw -d lat,30.0,40.0 -d lon,80.0,100.0 -a lat,lon \
+  ${drc}${var}_${rlm}_${lbl}_${tms}.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_tbt.${flt}
+# Time is no longer the record dimension in the outputs
+ncks -O --mk_rec_dmn time \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_tbt.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_tbt.${flt}
+ncks -O --mk_rec_dmn time \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt}
+
+# Aggregate 2 regions together
+ncecat -O -u rgn ${drc}${var}_${rlm}_${lbl}_${tms}_???.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2.${flt}
+# Change dimensions order
+ncpdq -O -a time,rgn ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2.${flt}
+
+# Remove temporary files (optional)
+rm ${drc}${var}_${rlm}_${lbl}_${tms}_???.${flt}
+
+#Annual average
+ncra -O --mro -d time,,,12,12 ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2_ann.${flt}
+
+# Anomaly
+#------------------------------------------------------------
+# Long-term average
+ncwa -O -a time ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2_ann.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2_clm.${flt}
+# Subtract
+ncbo -O --op_typ=- ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2_ann.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2_clm.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_rgn2_anm.${flt}
+#------------------------------------------------------------
diff --git a/doc/xmp/bi_interp.nco b/doc/xmp/bi_interp.nco
new file mode 100755
index 0000000..d9494d8
--- /dev/null
+++ b/doc/xmp/bi_interp.nco
@@ -0,0 +1,83 @@
+// Bilinear interpolation
+// Included by rgr.sh
+// Online: http://nco.sourceforge.net/nco.html#Regrid-MODIS-Data
+
+defdim("latn",192);		// Define new dimension: latitude
+defdim("lonn",288);		// Define new dimension: longitude
+latn[$latn] = {90,89.0576 ,88.1152 ,87.1728 ,86.2304 ,85.288  ,\
+  84.3456 ,83.4031 ,82.4607 ,81.5183 ,80.5759 ,79.6335 ,78.6911 ,\
+  77.7487 ,76.8063 ,75.8639 ,74.9215 ,73.9791 ,73.0367 ,72.0942 ,\
+  71.1518 ,70.2094 ,69.267  ,68.3246 ,67.3822 ,66.4398 ,65.4974 ,\
+  64.555  ,63.6126 ,62.6702 ,61.7277 ,60.7853 ,59.8429 ,58.9005 ,\
+  57.9581 ,57.0157 ,56.0733 ,55.1309 ,54.1885 ,53.2461 ,52.3037 ,\
+  51.3613 ,50.4188 ,49.4764 ,48.534  ,47.5916 ,46.6492 ,45.7068 ,\
+  44.7644 ,43.822  ,42.8796 ,41.9372 ,40.9948 ,40.0524 ,39.11   ,\
+  38.1675 ,37.2251 ,36.2827 ,35.3403 ,34.3979 ,33.4555 ,32.5131 ,\
+  31.5707 ,30.6283 ,29.6859 ,28.7435 ,27.8011 ,26.8586 ,25.9162 ,\
+  24.9738 ,24.0314 ,23.089  ,22.1466 ,21.2042 ,20.2618 ,19.3194 ,\
+  18.377  ,17.4346 ,16.4921 ,15.5497 ,14.6073 ,13.6649 ,12.7225 ,\
+  11.7801 ,10.8377 ,9.89529 ,8.95288 ,8.01047 ,7.06806 ,6.12565 ,\
+  5.18325 ,4.24084 ,3.29843 ,2.35602 ,1.41361 ,0.471204,-0.471204,\
+  -1.41361,-2.35602,-3.29843,-4.24084,-5.18325,-6.12565,-7.06806,\
+  -8.01047,-8.95288,-9.89529,-10.8377,-11.7801,-12.7225,-13.6649,\
+  -14.6073,-15.5497,-16.4921,-17.4346,-18.377 ,-19.3194,-20.2618,\
+  -21.2042,-22.1466,-23.089 ,-24.0314,-24.9738,-25.9162,-26.8586,\
+  -27.8011,-28.7435,-29.6859,-30.6283,-31.5707,-32.5131,-33.4555,\
+  -34.3979,-35.3403,-36.2827,-37.2251,-38.1675,-39.11  ,-40.0524,\
+  -40.9948,-41.9372,-42.8796,-43.822 ,-44.7644,-45.7068,-46.6492,\
+  -47.5916,-48.534 ,-49.4764,-50.4188,-51.3613,-52.3037,-53.2461,\
+  -54.1885,-55.1309,-56.0733,-57.0157,-57.9581,-58.9005,-59.8429,\
+  -60.7853,-61.7277,-62.6702,-63.6126,-64.555 ,-65.4974,-66.4398,\
+  -67.3822,-68.3246,-69.267 ,-70.2094,-71.1518,-72.0942,-73.0367,\
+  -73.9791,-74.9215,-75.8639,-76.8063,-77.7487,-78.6911,-79.6335,\
+  -80.5759,-81.5183,-82.4607,-83.4031,-84.3456,-85.288,-86.2304,\
+  -87.1728,-88.1152,-89.0576,-90};		// Copy of CCSM4 latitude
+lonn[$lonn] = {-178.75,-177.5,-176.25,-175,-173.75,-172.5,-171.25,\
+  -170,-168.75,-167.5,-166.25,-165,-163.75,-162.5,-161.25,-160,\
+  -158.75,-157.5,-156.25,-155,-153.75,-152.5,-151.25,-150,-148.75,\
+  -147.5,-146.25,-145,-143.75,-142.5,-141.25,-140,-138.75,-137.5,\
+  -136.25,-135,-133.75,-132.5,-131.25,-130,-128.75,-127.5,-126.25,\
+  -125,-123.75,-122.5,-121.25,-120,-118.75,-117.5,-116.25,-115,\
+  -113.75,-112.5,-111.25,-110,-108.75,-107.5,-106.25,-105,-103.75,\
+  -102.5,-101.25,-100,-98.75,-97.5,-96.25,-95,-93.75,-92.5,-91.25,\
+  -90,-88.75,-87.5,-86.25,-85,-83.75,-82.5,-81.25,-80,-78.75,-77.5,\
+  -76.25,-75,-73.75,-72.5,-71.25,-70,-68.75,-67.5,-66.25,-65,-63.75,\
+  -62.5,-61.25,-60,-58.75,-57.5,-56.25,-55,-53.75,-52.5,-51.25,-50,\
+  -48.75,-47.5,-46.25,-45,-43.75,-42.5,-41.25,-40,-38.75,-37.5,\
+  -36.25,-35,-33.75,-32.5,-31.25,-30,-28.75,-27.5,-26.25,-25,-23.75,\
+  -22.5,-21.25,-20,-18.75,-17.5,-16.25,-15,-13.75,-12.5,-11.25,-10,\
+  -8.75,-7.5,-6.25,-5,-3.75,-2.5,-1.25,0,1.25,2.5,3.75,5,6.25,7.5,\
+  8.75,10,11.25,12.5,13.75,15,16.25,17.5,18.75,20,21.25,22.5,23.75,\
+  25,26.25,27.5,28.75,30,31.25,32.5,33.75,35,36.25,37.5,38.75,40,\
+  41.25,42.5,43.75,45,46.25,47.5,48.75,50,51.25,52.5,53.75,55,56.25,\
+  57.5,58.75,60,61.25,62.5,63.75,65,66.25,67.5,68.75,70,71.25,72.5,\
+  73.75,75,76.25,77.5,78.75,80,81.25,82.5,83.75,85,86.25,87.5,88.75,\
+  90,91.25,92.5,93.75,95,96.25,97.5,98.75,100,101.25,102.5,103.75,\
+  105,106.25,107.5,108.75,110,111.25,112.5,113.75,115,116.25,117.5,\
+  118.75,120,121.25,122.5,123.75,125,126.25,127.5,128.75,130,131.25,\
+  132.5,133.75,135,136.25,137.5,138.75,140,141.25,142.5,143.75,145,\
+  146.25,147.5,148.75,150,151.25,152.5,153.75,155,156.25,157.5,\
+  158.75,160,161.25,162.5,163.75,165,166.25,167.5,168.75,170,171.25,\
+  172.5,173.75,175,176.25,177.5,178.75,180};	// Copy of CCSM4 longitude
+
+*out[$time,$latn,$lonn]=0.0;		// Output structure
+
+// Bi-linear interpolation
+bsa_sw_less=bilinear_interp_wrap(bsa_sw,out,latn,lonn,lat,lon);
+wsa_sw_less=bilinear_interp_wrap(wsa_sw,out,latn,lonn,lat,lon);
+
+// Add attributions
+latn at units = "degree_north";
+lonn at units = "degree_east";
+latn at long_name = "latitude";
+lonn at long_name = "longitude";
+bsa_sw_less at hdf_name = "Albedo_BSA_shortwave";
+bsa_sw_less at calibrated_nt = 5;
+bsa_sw_less at missing_value = 32767.0;
+bsa_sw_less at units = "albedo, no units";
+bsa_sw_less at long_name = "Global_Albedo_BSA_shortwave";
+wsa_sw_less at hdf_name = "Albedo_WSA_shortwave";
+wsa_sw_less at calibrated_nt = 5;
+wsa_sw_less at missing_value = 32767.0;
+wsa_sw_less at units = "albedo, no units";
+wsa_sw_less at long_name = "Global_Albedo_WSA_shortwave";
diff --git a/doc/xmp/cmb_fl.sh b/doc/xmp/cmb_fl.sh
new file mode 100755
index 0000000..d7637ae
--- /dev/null
+++ b/doc/xmp/cmb_fl.sh
@@ -0,0 +1,88 @@
+#!/bin/bash     ## shell type
+shopt -s extglob  ## enable extended globbing
+
+#===========================================================================
+# Some of the models cut one ensemble member into several files, 
+#  which include data of different time periods.
+# We'd better concatenate them into one at the beginning so that 
+#  we won't have to think about which files we need if we want 
+#  to retrieve a specific time period later.
+#
+# Method:
+#	- Make sure 'time' is the record dimension (i.e., left-most)
+#	- ncrcat
+#
+# Input files like:
+# /data/cmip5/snc_LImon_bcc-csm1-1_historical_r1i1p1_185001-190012.nc
+# /data/cmip5/snc_LImon_bcc-csm1-1_historical_r1i1p1_190101-200512.nc
+# 
+# Output files like:
+# /data/cmip5/snc_LImon_bcc-csm1-1_historical_r1i1p1_185001-200512.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Combine-Files
+#
+# Execute this script: bash cmb_fl.sh
+#===========================================================================
+
+drc_in='/home/wenshanw/data/cmip5/'		# Directory of input files
+
+var=( 'snc' 'snd' ) 	# Variables
+rlm='LImon'           # Realm
+xpt=( 'historical' )  # Experiment ( could be more )
+
+for var_id in {0..1}; do	# Loop over two variables
+  # Names of all the models (ls [get file names]; 
+  #  cut [get model names]; 
+  #  sort; uniq [remove duplicates]; awk [print])
+  mdl_set=$( ls ${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc | \
+    cut -d '_' -f 3 | sort | uniq -c | awk '{print $2}' )
+  # Number of models (echo [print contents]; wc [count])
+  mdl_nbr=$( echo ${mdl_set} | wc -w )
+  echo "=============================="
+  echo "There are" ${mdl_nbr} "models for" ${var[var_id]}.
+  
+  for mdl in ${mdl_set}; do	# Loop over models
+    # Names of all the ensemble members
+    nsm_set=$( ls ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc | \
+      cut -d '_' -f 5 | sort | uniq -c | awk '{print $2}' )
+    # Number of ensemble members in each model
+    nsm_nbr=$( echo ${nsm_set} | wc -w )		
+    echo "------------------------------"
+    echo "Model" ${mdl} "includes" ${nsm_nbr} "ensemble member(s):"
+    echo ${nsm_set}"."
+    
+    for nsm in ${nsm_set}; do	# Loop over ensemble members
+      # Number of files in this ensemble member
+      fl_nbr=$( ls ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc \
+        | wc -w ) 
+      
+      # If there is only 1 file, continue to next loop
+      if [ ${fl_nbr} -le 1 ]			
+      then
+      	echo "There is only 1 file in" ${nsm}.
+      	continue
+      fi
+      
+      echo "There are" ${fl_nbr} "files in" ${nsm}.
+      
+      # Starting date of data 
+      #   (sed [the name of the first file includes the starting date])
+      yyyymm_str=$( ls ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc\
+        | sed -n '1p' | cut -d '_' -f 6 | cut -d '-' -f 1 )
+      # Ending date of data 
+      #   (sed [the name of the last file includes the ending date])
+      yyyymm_end=$( ls ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc\
+        | sed -n "${fl_nbr}p" | cut -d '_' -f 6 | cut -d '-' -f 2 )
+      
+      # Concatenate one ensemble member files 
+      #   into one along the record dimension (now is time)
+      ncrcat -O ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc \
+        ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_\
+        ${nsm}_${yyyymm_str}-${yyyymm_end}
+      
+      # Remove useless files
+      rm ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_\
+        !(${yyyymm_str}-${yyyymm_end})
+    done
+  done
+done
diff --git a/doc/xmp/cmb_fl_grp.sh b/doc/xmp/cmb_fl_grp.sh
new file mode 100644
index 0000000..6fab8f7
--- /dev/null
+++ b/doc/xmp/cmb_fl_grp.sh
@@ -0,0 +1,121 @@
+#!/bin/bash
+#
+#============================================================
+# Aggregate models to one group file
+#
+# Method:
+# - Create files with groups by ncecat --gag
+#	- Append groups level by level using ncks
+#
+# Input files like:
+# snc_LImon_CCSM4_historical_r1i1p1_199001-200512.nc
+# snd_LImon_CESM1-BGC_esmHistorical_r1i1p1_199001-200512.nc
+# 
+# Output files like:
+# sn_LImon_199001-200512.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Combine-Files
+#
+# Execute this script: bash cmb_fl_grp.sh
+##============================================================
+
+# Input Directory
+drc_in='/media/grele_data/wenshan/cesm/historical-exp/nco_grp/'
+drc_out='/media/grele_data/wenshan/cesm/historical-exp/nco_grp/grp/'
+
+# Constants
+rlm='LImon'    # Realm: LandIce; Time frequency: monthly
+tms='199001-200512'     # Timeseris
+flt='nc'     # File Type
+
+# Geographical weights
+# Can be skipped when ncap2 works on group data
+for fn in $( ls ${drc_in}snc_${rlm}_*_${tms}.${flt} ); do     # Loop over all snc files
+  ncap2 -O -s \
+    'gw = float(cos(lat*3.1415926/180.)); gw at long_name="geographical weight";\
+    gw at units="ratio"; gw at standard_name="Geographical Weight"' ${fn} ${fn}
+done
+
+var=( 'snc' 'snd' )
+xpt=( 'esmHistorical' 'historical' )
+mdl=( 'CCSM4' 'CESM1-BGC' 'CESM1-CAM5' )
+
+for i in {0..1}; do     # Loop over variables
+  for j in {0..1}; do     # Loop over experiments
+    for k in {0..2}; do     # Loop over models
+      ncecat -O --glb_mtd_spr -G ${xpt[j]}/${mdl[k]}/ \
+        ${drc_in}${var[i]}_${rlm}_${mdl[k]}_${xpt[j]}_*_${tms}.${flt} \
+        ${drc_out}${var[i]}_${rlm}_${mdl[k]}_${xpt[j]}_all-nsm_${tms}.${flt}
+      ncks -A \
+        ${drc_out}${var[i]}_${rlm}_${mdl[k]}_${xpt[j]}_all-nsm_${tms}.${flt} \
+        ${drc_out}${var[i]}_${rlm}_${mdl[0]}_${xpt[j]}_all-nsm_${tms}.${flt}
+    done
+    ncks -A \
+      ${drc_out}${var[i]}_${rlm}_${mdl[0]}_${xpt[j]}_all-nsm_${tms}.${flt} \
+      ${drc_out}${var[i]}_${rlm}_${mdl[0]}_${xpt[0]}_all-nsm_${tms}.${flt}
+  done
+  ncks -A \
+    ${drc_out}${var[i]}_${rlm}_${mdl[0]}_${xpt[0]}_all-nsm_${tms}.${flt} \
+    ${drc_out}${var[0]}_${rlm}_${mdl[0]}_${xpt[0]}_all-nsm_${tms}.${flt}
+done
+
+# Rename output file
+mv ${drc_out}${var[0]}_${rlm}_${mdl[0]}_${xpt[0]}_all-nsm_${tms}.${flt} \
+  ${drc_out}sn_${rlm}_all-mdl_all-xpt_all-nsm_${tms}.${flt}
+# Remove temporary files
+rm ${drc_out}sn?_${rlm}*.nc
+
+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# Coming soon!
+#- Group names: 
+#   E.g., file snc_LImon_CESM1-CAM5_historical_r1i1p1_199001-200512.nc
+#   will be group /historical/CESM1-CAM5/00
+#- You can rename groups on the last level to be more meaningful by
+#ncrename -g ${xpt}/${mdl}/02,${xpt}/${mdl}/r3i1p1 \
+#  ${drc_out}${var}_${rlm}_${mdl}_all-nsm_${tms}.${flt}
+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+#------------------------------------------------------------
+# Output file structure
+#------------------------------------------------------------
+# esmHistorical 
+# {
+#   CESM1-BGC 
+#   {
+#     00 
+#     {
+#       snc(time, lat, lon)
+#       snd(time, lat, lon)
+#     }
+#   }
+# }
+# historical
+# {
+#    CCSM4
+#    {
+#      00
+#      {
+#       snc(time, lat, lon)
+#       snd(time, lat, lon)
+#      }
+#      01
+#      {
+#       snc(time, lat, lon)
+#       snd(time, lat, lon)
+#      }
+#      02 { ... }
+#      03 { ... }
+#      04 { ... }
+#      05 { ... }
+#    }
+#    CESM1-BGC
+#    {
+#      00 { ... }
+#    }
+#    CESM1-CAM5
+#    {
+#      00 { ... }
+#      01 { ... }
+#      02 { ... }
+#    }
+# }
diff --git a/doc/xmp/crd.nco b/doc/xmp/crd.nco
new file mode 100755
index 0000000..439bd01
--- /dev/null
+++ b/doc/xmp/crd.nco
@@ -0,0 +1,6 @@
+// Add coordinates to MODIS HDF data
+// Included by add_crd.sh
+// Online: http://nco.sourceforge.net/nco.html#Add-Coordinates-to-MODIS-Data
+
+lon = array(0.f, 0.05, $lon) - 180;
+lat = 90.f- array(0.f, 0.05, $lat);
diff --git a/doc/xmp/fgr1.eps b/doc/xmp/fgr1.eps
new file mode 100755
index 0000000..835cf61
--- /dev/null
+++ b/doc/xmp/fgr1.eps
@@ -0,0 +1,21700 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 12 613 757
+%%HiResBoundingBox: 0.000000 12.960000 612.000023 756.000029
+%.......................................
+%%Creator: GPL Ghostscript 871 (epswrite)
+%%CreationDate: 2013/04/07 15:37:02
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+% This copyright applies to everything between here and the %%EndProlog:
+% Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
+%%BeginResource: procset GS_epswrite_2_0_1001 1.001 0
+/GS_epswrite_2_0_1001 80 dict dup begin
+/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
+4 index eq and{ pop pop pop}{ PageSize dup  1
+5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec}
+{ pop/setpagedevice where
+{ pop 1 dict dup /PageSize PageSize put setpagedevice}
+{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
+setpage}if}ifelse}ifelse}ifelse} bind def
+/!{bind def}bind def/#{load def}!/N/counttomark #
+/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
+/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
+/w/setlinewidth #/J/setlinecap #
+/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
+/m/moveto #/l/lineto #/c/rcurveto #
+/p{N 2 idiv{N -2 roll rlineto}repeat}!
+/P{N 0 gt{N -2 roll moveto p}if}!
+/h{p closepath}!/H{P closepath}!
+/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
+/re{4 -2 roll m exch dup lx exch ly neg lx h}!
+/^{3 index neg 3 index neg}!
+/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
+/q/gsave #/Q/grestore #/rf{re fill}!
+/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
+/|={pop exch 4 1 roll 1 array astore cvx 3 array astore cvx exch 1 index def exec}!
+/|{exch string readstring |=}!
+/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
+/@/currentfile #/${+ @ |}!
+/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
+3 1 roll}repeat pop pop true}!
+/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
+/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
+/Ic{exch Ix false 3 colorimage}!
+/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
+/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
+/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
+/@F{@ &2<<F}!/@C{@X &2 FX}!
+/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
+/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
+/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
+currentdict end image}!
+/~{@ read {pop} if}!
+end def
+%%EndResource
+/pagesave null def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+GS_epswrite_2_0_1001 begin
+/pagesave save store 197 dict begin
+0.18 0.18 scale
+%%EndPageSetup
+gsave mark
+Q q
+0 72 3400 0 0 4128 ^ Y
+255 G
+-361.109 72.2227 4122.22 4127.78 re
+f*
+Q q
+272.223 2266.67 1300 1305.55 re
+Y*
+255 G
+277.41 2879.43 -1.09 26.39 0 26.41 1.09 26.41 2.17 26.39 3.23 26.41 4.38 26.41 5.49 26.41 
+6.66 26.41 3.77 13.15 4.09 13.23 9.11 26.41 10.43 26.41 3.28 7.68 8.51 18.7 13.26 26.43 
+5.14 9.51 9.66 16.88 16.54 26.41 0.71 1.11 17.64 25.3 9.29 12.34 11.13 14.05 15.8 18.64 
+6.95 7.75 19.99 21.01 5.45 5.41 21.46 20.11 7.13 6.3 19.79 16.53 12.66 9.88 14.26 10.55 
+23.11 15.88 3.8 2.48 26.95 16.45 13.24 7.46 13.65 7.25 26.95 13.13 13.5 6.03 13.39 5.6 
+26.93 10.2 26.93 8.88 5.73 1.71 21.18 5.86 26.9 6.36 26.93 5.14 26.91 3.97 26.93 2.82 
+26.91 1.7 26.93 0.56 26.91 -0.56 26.9 -1.7 26.93 -2.82 26.91 -3.97 5.38 -1.02 0 -129.93 
+-8.48 -5.84 -1.73 -1.26 -13.74 4.41 -8.57 -8.14 -8.22 -8.59 -11.55 2.9 -11.82 2.41 -12.04 1.89 
+-3.89 0.5 -8.31 0.87 -2.75 -10.16 -10.94 0.7 -10.98 0.24 0 -10.59 -9.68 -0.2 -9.66 -0.61 
+-2.62 10.46 -10.85 -1.17 -0.81 -0.11 -9.91 -1.52 -10.53 -2.08 -4.92 6.97 -1.79 2.4 -11.54 -2.9 
+-8.25 8.59 -12.46 -3.89 -12.07 -4.36 -11.61 -4.86 -0.09 -0.04 -11 -5.25 3.36 -1.58 5.04 -2.47 
+4.32 -2.24 -9.62 -5.01 -3.64 -2.09 -5.49 -3.28 -8.62 -5.66 -8.09 -5.93 -7.55 -6.16 -4.32 0.76 
+-4.68 0.78 -4.71 0.72 -2.93 0.39 -4.8 -4.45 -2.73 -2.69 -2.39 0.19 -6.53 0.46 -6.56 0.33 
+-1.99 0.07 -7.32 -8.12 -18.16 -0.7 -6.88 -9.05 -18.64 -2.47 -6.27 -9.92 -5.41 -9.94 -18.94 -5.05 
+-18.97 -6.14 -18.95 -7.23 -18.86 -8.42 -4.1 -12.67 -18.49 -10.25 -2.75 -13 -17.86 -11.95 -1.34 -13.17 
+-17.05 -13.52 -16.56 -14.67 0.61 -13.41 -15.5 -16.04 2.11 -13.13 2.93 -12.61 -13.7 -17.27 4.27 -12.16 
+-12.39 -18.16 5.53 -11.61 6.21 -11.09 -10.54 -18.75 7.29 -10.46 7.86 -10 -8.79 -19.05 8.81 -9.36 
+9.27 -8.94 -7.14 -19.1 10.09 -8.31 -5.97 -19.25 10.81 -7.66 11.15 -7.33 -4.55 -19.01 -3.73 -19.27 
+-2.9 -19.5 -11.87 6.38 -2.21 -20.07 -1.33 -20.27 12.18 -5.62 -0.29 -20.01 0.63 -20.14 12.54 -4.58 
+1.54 -19.77 12.79 -3.99 2.41 -19.38 12.96 -3.45 3.16 -18.97 4.02 -18.9 4.88 -18.84 5.77 -18.68 
+-12.29 1.84 6.95 -18.96 7.9 -18.73 8.87 -18.51 9.84 -18.23 10.83 -17.9 11.83 -17.52 -9.62 -0.49 
+13.37 -17.43 14.41 -16.88 8.49 1.11 14.84 -16.06 8.16 1.21 8.47 1.11 -13.63 15.58 -12.68 16.06 
+9.88 0.5 -11.22 16.19 -10.33 16.58 -9.48 16.88 11.59 -0.45 -8.23 16.86 12.2 -0.8 12.37 -0.8 
+-6.68 16.52 12.91 -1.07 -5.66 16.43 13.39 -1.3 -4.75 16.36 13.84 -1.5 -3.91 16.27 -3.34 16.39 
+14.41 -1.87 14.58 -1.76 -2.48 16.11 14.87 -1.82 -1.87 16.01 -1.41 16.13 -1 16.21 15.28 -2.2 
+-0.54 16.13 15.45 -2.18 -0.15 16.06 0.2 16.1 -15.43 2.43 -15.28 2.64 -15.13 2.84 0.72 16.53 
+-14.91 3.2 -14.75 3.43 -14.56 3.62 1.46 17.04 1.97 16.99 -14.13 4.21 2.65 17.1 -13.74 4.64 
+-13.52 4.88 -13.26 5.16 3.82 17.51 -12.78 5.63 -12.5 5.92 -12.22 6.23 5.21 17.86 -11.61 6.73 
+-5.49 -18.04 -11.57 6.88 -11.25 7.21 -10.85 7.57 6.42 18.64 7.23 18.27 -9.79 8.33 -9.33 8.72 
+8.75 18.19 9.53 17.68 -8.01 9.38 -9.96 -17.78 -7.94 9.7 -7.4 10.16 10.87 17.95 11.64 17.32 
+12.36 16.62 P
+13.02 15.91 5.49 -10.18 6.1 -9.79 6.64 -9.37 7.18 -9.03 -11.18 -16.11 -10.5 -16.62 -9.81 -17.12 
+8.98 -8.57 9.42 -8.21 -8.29 -17.38 10.22 -7.72 10.59 -7.36 10.98 -7.01 7.18 17.08 -10.61 7.12 
+-10.25 7.46 -9.83 7.81 8.98 17 9.63 16.58 10.29 16.15 10.92 15.69 11.5 15.21 7.7 -7.81 
+11.65 14.84 7.68 -7.38 11.72 14.5 7.64 -6.95 11.79 14.2 7.55 -6.51 7.92 -6.23 11.33 14.08 
+7.77 -5.82 8.11 -5.54 8.42 -5.27 8.7 -5 8.16 11.92 1.67 2.36 -8.23 4.88 4.16 5.45 
+6.25 7.94 0.35 0.43 11.17 13.46 -4.12 2.79 -2.76 1.98 11.44 12.17 0.67 0.69 -0.5 0.39 
+-5.55 4.36 13.07 12.21 -5.28 4.69 7.75 6.42 6.27 5.03 14.39 10.96 14.78 10.44 -3.47 3.82 
+15.64 9.48 -2.73 3.54 -2.49 3.63 -2.26 3.71 4.49 2.04 12.76 5.47 0.48 0.21 9.27 3.69 
+7.79 2.95 1.11 -2.04 0.39 -0.7 0.28 -0.5 1.11 -1.73 0.29 -0.41 1.84 -2.58 2.04 -2.52 
+2.19 -2.43 2.37 -2.37 -14.84 -9.65 3.08 -2.67 -4.02 -2.96 -9.92 -7.59 -1.84 -1.45 -4.62 -3.71 
+-4.58 -3.75 -2.52 -2.11 2.11 -1.59 2.3 -1.65 -12.64 -11.79 0.33 -0.21 3.3 -2.2 1.56 -0.98 
+-11.68 -12.46 5.99 -3.47 -2.97 -3.54 -7.27 -8.89 -0.48 -0.61 1.28 -0.67 5.49 -2.8 6.97 -3.29 
+4.66 6.66 4.86 6.79 6.55 -2.89 2.73 3.99 6.51 9.33 6.1 -2.49 6.25 -2.35 8.29 13.43 
+5.71 -1.97 5.84 -1.82 5.94 -1.63 0.46 0.93 0 -16.45 -2.11 -5.49 -2.97 -7.9 -0.3 -0.83 
+7.48 -1.52 7.55 -1.3 7.64 -1.11 1.54 6.73 1.84 7.75 -1.04 0.13 -5.93 0.91 -6.9 1.22 
+-6.82 1.41 0 16.45 6.05 12.74 5.34 -1.34 5.99 13.61 4.69 -1.04 5.45 13.5 4 -0.79 
+0.87 2.46 3.99 10.98 5.01 13.17 -2.38 0.5 -2.34 0.57 -2.3 0.63 -2.25 0.72 -2.2 0.78 
+-2.15 0.84 -2.08 0.91 -2.02 0.98 -1.96 1.04 -1.86 1.11 -1.8 1.17 -1.71 1.24 -1.62 1.28 
+-1.52 1.32 -1.45 1.39 -1.33 1.43 -1.23 1.47 -1.12 1.52 -0.83 1.21 -0.22 0.35 -0.74 1.3 
+-0.17 0.29 -0.2 0.41 -0.59 1.22 -0.56 1.37 -0.11 0.3 -0.56 1.67 -0.43 1.71 -0.31 1.71 
+-0.19 1.73 -0.05 1.11 0 1.32 0.07 1.06 -6.53 -0.32 -12.67 -0.91 0.17 2.23 0.02 0.15 
+0.39 2.39 0.57 2.39 0.73 2.38 0.92 2.37 1.08 2.32 -0.04 0.02 -18.54 1.85 1.52 2.95 
+1.78 2.93 1.97 2.86 2.21 2.82 -16.02 3.43 -1.43 0.29 0.28 0.35 2.59 3.04 -10.31 2.28 
+-6.95 1.39 3.63 3.95 3.95 3.86 2.88 2.56 1.37 1.17 -5.34 1.73 -10.61 3.19 5.19 4.26 
+5.56 4.08 14.61 -6.21 5.14 3.3 5.41 3.11 0.91 0.5 4.73 2.43 5.9 2.71 6.13 2.49 
+6.31 2.26 6.51 2.04 6.68 1.78 -2.54 3.67 -4.58 6.46 7.97 1.83 -6.21 10.09 9.29 1.78 
+4.04 0.65 5.43 0.76 9.54 1 2.54 -10.74 8.38 0.5 0.85 -7.68 0.37 -3.43 0.52 0.02 
+6.68 0.11 7.18 -0.13 7.16 -0.43 7.12 -0.7 4.6 -0.65 0 -127 -3.14 -0.73 -3.19 -0.63 
+-3.22 -0.54 0.85 -2.78 2.84 -9.55 0.34 -1.21 0.98 0.15 3.06 0.5 3.99 0.79 3.91 0.91 
+-1.23 2.61 -5.19 10.5 0 127 2.43 -0.33 6.95 -1.25 6.81 -1.52 6.68 -1.78 6.51 -2.04 
+1.63 -0.54 p
+4.69 -1.72 6.12 -2.49 -6.9 -5.56 -4.01 -3.38 2.84 -1.24 2.13 -0.98 -5.27 -4.01 -6.23 -4.93 
+3.95 -1.91 3.76 -2.04 3.62 -2.17 3.41 -2.3 14.67 6.82 9.2 3.91 5.77 2.3 4.56 -3.6 
+4.25 -3.73 3.95 -3.86 -3.58 -0.85 -13.2 -3.45 3.14 -3.32 2.87 -3.38 2.6 -3.47 2.35 -3.52 
+2.06 -3.58 -18.23 -1.72 -0.26 -0.04 0.02 -0.06 1.5 -2.89 1.32 -3 1.09 -3.02 -7.53 -0.11 
+-11.46 -0.43 0.41 -1.21 0.33 -1.17 0.57 -2.32 0 -0.07 0.02 -0.11 0.37 -2.28 -19.2 0.61 
+0.04 -0.29 0.13 -1.21 0.02 -0.26 0.07 -1.04 0 -0.72 -0.05 -1.74 7.73 -0.91 11.02 -1.54 
+0.33 -0.04 13.56 -2.26 5.44 -1.02 -0.45 -2.95 18.67 -4.62 -0.91 -3.52 -1.15 -3.43 -1.39 -3.38 
+-1.62 -3.32 -1.87 -3.23 -2.06 -3.14 -5.17 2.49 -11.61 5.36 -0.21 -0.35 -1.63 -2.23 6.36 -3.15 
+9.96 -5.18 2.28 -1.24 13.72 -7.71 3.88 -2.28 11.74 -7.2 -3.45 -3.82 -3.71 -3.69 -14.65 10.31 
+-0.24 0.15 -10.3 6.79 -4.45 2.82 -5.34 3.3 -9.36 5.55 -0.67 0.39 0.37 0.39 1.82 2.04 
+-16.17 8.2 -0.93 -1.09 -0.78 -0.87 -1.84 -1.91 -1.97 -1.84 4.92 -3.15 9.7 -6.4 7.34 -5.08 
+6.94 -4.99 -3.25 -2.56 0.56 -0.43 12.8 -10.46 -1.52 -1.09 -2.5 -1.71 12.39 -11.66 -4.77 -2.95 
+-4.97 -2.8 -5.14 -2.63 -5.29 -2.47 -5.47 -2.32 -5.6 -2.15 -5.71 -1.97 -7.9 13.35 -5.14 -1.63 
+-5.25 -1.5 -5.34 -1.34 -5.41 -1.17 5.08 -13.93 -6.21 -1.13 -6.27 -0.98 2.84 -11.52 0.67 -2.78 
+-7.01 -0.85 2.71 -14.54 -7.74 -0.72 -0.79 -0.04 -6.99 -0.46 0.28 -3.1 1.02 -11.66 0.29 -3.34 
+0.95 -11.55 1.21 -15.04 1.15 -15.12 -10.26 -0.37 -10.25 -0.11 0 185.41 0.7 0.02 0.72 0.02 
+0.71 0.06 0.7 0.09 0.71 0.09 0.67 0.13 0.7 0.15 0.65 0.18 0.68 0.19 0.63 0.2 
+0.63 0.24 0.61 0.26 0.59 0.26 0.57 0.3 0.54 0.3 0.54 0.33 0.5 0.34 0.91 0.74 
+0.41 0.39 0.41 0.41 0.35 0.42 0.32 0.41 0.3 0.46 0.26 0.43 0.24 0.46 0.22 0.48 
+0.16 0.48 0.13 0.45 0.11 0.5 0.06 0.48 0.02 0.48 0 0.5 -0.04 0.47 -0.09 0.48 
+-0.11 0.5 -0.15 0.48 -0.19 0.46 -0.22 0.48 -0.26 0.46 -0.28 0.46 -0.33 0.43 -0.34 0.43 
+-0.37 0.41 -0.41 0.41 -0.45 0.39 -0.96 0.74 -0.54 0.35 -0.54 0.32 -0.57 0.3 -0.61 0.29 
+-0.61 0.26 -0.64 0.25 -0.65 0.22 -0.67 0.21 -0.7 0.18 -0.7 0.15 -0.69 0.13 -0.72 0.11 
+-0.74 0.09 -0.71 0.06 -0.74 0.04 -1.46 0 -0.74 -0.04 -0.72 -0.06 -0.74 -0.09 -0.71 -0.11 
+-0.69 -0.13 -0.7 -0.15 -0.7 -0.18 -0.66 -0.21 -0.67 -0.22 -0.63 -0.25 -0.61 -0.26 -0.61 -0.29 
+-0.56 -0.3 -0.54 -0.32 -0.55 -0.35 -0.49 -0.37 -0.46 -0.37 -0.46 -0.39 -0.41 -0.41 -0.37 -0.41 
+-0.37 -0.43 -0.3 -0.43 -0.29 -0.46 -0.26 -0.46 -0.22 -0.48 -0.2 -0.46 -0.15 -0.48 -0.11 -0.5 
+-0.09 -0.48 -0.04 -0.47 0 -0.5 0.02 -0.48 0.07 -0.48 0.09 -0.5 0.15 -0.45 0.16 -0.48 
+0.22 -0.48 0.21 -0.46 0.28 -0.43 0.29 -0.46 0.7 -0.83 0.39 -0.41 0.44 -0.39 0.91 -0.74 
+0.5 -0.34 0.52 -0.33 1.13 -0.61 0.59 -0.26 0.61 -0.26 0.64 -0.24 0.63 -0.2 0.67 -0.19 
+0.65 -0.18 p
+0.7 -0.15 0.67 -0.13 0.69 -0.09 0.72 -0.09 0.71 -0.06 1.43 -0.05 0 -170.27 -9.7 0.11 
+0.61 15.04 0.63 14.91 -8.46 0.32 -1.26 -14.89 -1.19 -15.04 -9.66 0.59 -9.59 0.8 -2.3 -15.08 
+10.18 -0.85 10.22 -0.58 -1.09 -15.25 10.79 -0.37 -0.52 -15.34 -0.48 -15.43 -11.83 0.37 -11.78 0.65 
+-1.41 -15.52 -1.32 -15.58 -1.26 -15.62 -1.17 -15.69 -13.48 0.91 -1.47 -15.75 -13.78 1.17 -1.69 -15.77 
+-1.58 -15.82 -14.37 1.41 -1.74 -15.87 -1.59 -15.86 -1.41 -15.88 -1.24 -15.89 15.39 -1.32 -0.91 -15.84 
+-0.76 -15.79 15.78 -1.02 -0.5 -15.73 15.95 -0.76 15.97 -0.54 15.99 -0.33 16.04 -0.11 0 -374.24 
+-7.36 -0.05 -7.32 -0.06 -7.31 -0.13 -7.3 -0.17 3.58 -10.94 -6.36 -0.21 -6.31 -0.3 -6.25 -0.32 
+-6.19 -0.39 7.55 -10.62 -5.19 -0.43 -5.1 -0.5 -5.03 -0.54 -4.93 -0.61 -4.84 -0.65 -4.73 -0.72 
+-3.69 -0.62 -0.91 -0.15 -4.46 -0.83 -4.34 -0.91 -4.18 -0.93 -4.04 -1.02 -3.86 -1.09 -3.69 -1.15 
+-18.91 10.07 -18.01 10.89 -5.05 -1.37 -17.84 11.61 -6.95 4.91 -9.98 7.45 6.53 1.32 -1.95 1.59 
+-4.41 3.63 -4.3 3.64 -4.25 3.73 -0.39 0.33 -7.25 -1.24 -7 -1.32 3.47 -2.85 3.84 -3.06 
+3.88 -3.02 3.93 -2.97 1.61 -1.2 12.88 -9.16 4.79 -3.23 -5.32 -1.54 -5.05 -1.67 -3.97 -1.48 
+-0.8 -0.3 1.43 -0.85 19.32 -10.68 -3.78 -1.84 -3.47 -1.93 22.98 -10.29 -2.54 -1.89 -2.28 -1.97 
+-1.93 -2.08 -1.65 -2.18 -1.3 -2.23 -0.96 -2.34 -26.26 9 -1 -2.73 -0.61 -2.82 27.02 -8.36 
+0.16 -2.59 0.52 -2.66 0.93 -2.72 1.35 -2.8 1.78 -2.84 2.19 -2.89 2.63 -2.93 3.08 -2.95 
+3.52 -3 3.99 -2.97 4.43 -2.97 4.88 -2.93 5.34 -2.91 5.77 -2.84 22.94 1.32 5.17 -2.11 
+5.49 -2 5.79 -1.91 6.08 -1.8 6.33 -1.65 6.6 -1.55 6.83 -1.37 7.04 -1.23 7.2 -1.05 
+7.36 -0.87 7.49 -0.69 7.59 -0.5 7.64 -0.29 7.68 -0.11 7.66 0.11 7.64 0.29 7.59 0.5 
+7.49 0.69 7.92 -6.73 8.62 -6.25 11.26 1.63 10.98 1.93 10.61 2.21 15.63 -3.93 12.04 3.23 
+11.48 3.52 10.85 3.78 10.2 3.97 9.55 4.17 8.83 4.28 8.16 4.36 7.42 4.43 27.09 4.55 
+7.25 5.29 3.66 3.02 0 -60.87 -28.21 -5.88 -21.05 -6.1 -21.05 -6.12 22.85 2.3 -51.95 -12.37 
+19.95 0.89 -31.91 -6.18 -16.47 -2.3 -16.45 -2.28 13.52 -1.04 19.55 3.21 19.57 3.21 18.73 4.32 
+18.75 4.32 -25.3 -3.25 29.86 8.27 29.88 8.25 -27.73 -5.03 23.75 7.89 23.71 7.9 0 60.87 
+2.73 2.24 5.62 5.16 4.8 5.06 4.06 4.9 -28.41 -8.29 3.39 4.19 2.73 4.08 2.15 3.95 
+27.97 9.9 1.26 4.25 0.65 4.08 0.07 3.88 -0.52 3.69 -1.04 3.49 -1.56 3.34 -2.04 3.15 
+-24.95 -11.94 -1.93 2.82 -2.35 2.68 -2.75 2.56 23.18 12.29 -3.78 2.47 -22.52 -12.37 -3.47 2.28 
+-3.84 2.15 -4.14 2 -4.47 1.91 -4.77 1.78 -5.05 1.67 -5.32 1.54 -5.55 1.45 -5.82 1.38 
+-6.04 1.25 15.45 12.26 -6.99 1.11 -7.2 1.04 -13.93 -12.15 -6.64 1.02 -6.81 0.91 -6.96 0.86 
+-7.14 0.79 -7.27 0.71 -7.4 0.65 -7.53 0.58 -7.64 0.52 -8.31 -11.35 -6.92 0.5 -6.99 0.43 
+-7.08 0.39 -7.14 0.32 -7.18 0.28 -7.25 0.22 -7.29 0.17 -7.31 0.13 -7.32 0.06 -7.34 0.05 
+0 389.91 p
+15.88 0.11 15.87 0.35 0.26 -15.69 15.97 0.54 0.3 -15.66 0.21 -15.61 16.11 0.71 0.17 -15.58 
+0.05 -15.48 16.14 0.83 -0.09 -15.45 -0.22 -15.37 -16.07 -0.72 -0.31 -15.21 -0.41 -15.08 15.88 0.63 
+-0.67 -15.02 -0.82 -14.89 -1 -14.73 -1.15 -14.58 15.13 0.5 -1.58 -14.5 -1.79 -14.33 14.5 0.46 
+14.45 0.52 14.37 0.57 14.28 0.65 2.96 14.71 14.5 0.83 2.89 15.04 14.64 1.04 2.75 15.32 
+2.37 15.45 1.98 15.61 1.61 15.71 15.25 1.74 15.12 1.88 1.43 16.13 15.09 2.19 1.04 16.39 
+-15.15 -2.37 0.58 16.27 0.16 16.35 -0.26 16.38 -0.67 16.4 15.08 2.97 -1.17 16.59 14.82 3.32 
+-1.7 16.71 14.52 3.71 -2.32 16.8 14.15 4.12 -2.97 16.88 -3.47 16.79 -3.97 16.71 13.29 4.73 
+-4.73 16.69 8.36 3.34 0 -194.33 -14.69 -2.87 -1.15 -16.75 -14.8 -2.5 -1.61 -16.49 -2.13 -16.39 
+-14.72 -1.97 -2.47 -16.11 14.56 1.76 14.43 1.87 2.78 16.51 2.23 16.63 14.54 2.41 1.78 16.93 
+1.23 16.97 0 194.33 4.43 1.78 12.5 5.43 -5.86 16.71 -6.38 16.52 11.57 5.88 11.24 6.18 
+10.94 6.51 10.59 6.86 7.82 -16.78 10.61 7.12 7.55 -17.18 6.88 -17.5 6.21 -17.77 11.26 7.07 
+5.79 -18.23 5.05 -18.51 11.52 6.97 11.16 7.33 -5.64 18.99 -10.86 -7.57 -6.12 18.44 -6.86 18.1 
+10.18 7.95 -7.97 17.9 9.39 8.47 -9.09 17.6 8.5 8.96 8.01 9.38 7.51 9.8 10.39 -17.88 
+9.61 -18.47 7.86 10 7.29 10.46 9.7 -19.42 8.81 -20.09 7.83 -20.71 -8.64 -9.7 6.45 -20.95 
+5.45 -21.44 9.4 8.9 4.73 -22.38 9.31 8.81 3.88 -23.42 9.22 8.64 2.93 -24.57 9.11 8.36 
+8.7 8.77 8.27 9.2 7.79 9.68 2.85 -28.52 7.74 9.16 7.29 9.66 6.8 10.22 -4.32 31.96 
+-6.25 30.82 4.89 13.37 4.12 14.29 3.23 15.3 8.88 -34.61 3.43 15.04 2.49 16.26 1.41 17.71 
+10.31 -42.06 7.18 -44.59 -4.08 -13.17 -4.73 -12.16 -5.32 -11.28 -5.84 -10.55 -6.34 -9.9 0.42 -35.39 
+-7.16 -7.72 -2.26 -34.36 -7.68 -5.82 -4.62 -33.12 -7.97 -4.23 -8.31 -4.18 -6.51 -30.43 -8.53 -30.32 
+-10.55 -30.01 -12.54 -29.54 -14.52 -28.84 6.05 -1.95 5.51 -2.47 4.93 -3.06 16.78 32.33 5.21 -2.38 
+4.57 -3.08 3.91 -3.86 3.13 -4.82 -21.25 -38.19 0.73 -7.62 -0.49 -9 -27.18 -38.3 -3.95 -11.8 
+-5.99 -13.57 -16.54 -17.79 -16.53 -17.82 -33.86 -30.68 -12.2 -15.11 35.5 30.16 17.6 17.84 17.6 17.86 
+16.97 20.72 16.99 20.75 -8.59 -17.16 17.42 24.48 17.41 24.46 31.32 55.62 26.24 61.45 10.76 32.49 
+8.96 33.38 7.08 33.98 5.1 34.31 -3.97 -3.19 -4.36 -3.52 4.56 57.23 -1 55.97 -3.88 -12.2 
+-4.67 49.96 -8.66 47.37 0.65 18.96 -0.82 21.16 -2.67 23.85 -19.79 51.91 5.77 -26.52 3.36 -23.72 
+-17.03 42.6 3.62 -23.09 1.74 -21.07 -15.17 36.18 1.82 -20.51 0.29 -18.97 -1.02 -17.6 -2.16 -16.41 
+-11.48 29.82 -2.14 -16.15 -3.15 -15.17 -4.05 -14.28 -4.84 -13.45 -9.46 25.54 -10.72 24.33 3.32 14.52 
+2.38 15.34 1.32 16.23 -14.36 24.02 -15.32 22.34 0.43 -16.62 -15.32 20.7 0.02 -15.84 14.56 -20.66 
+-1.8 -15.06 12.89 -21.86 11.88 -23.11 -4.21 -13.76 10.03 -23.87 -5.64 -12.61 8.18 -24.36 -6.89 -11.39 
+6.36 -24.64 -7.9 -10.22 -8.42 -9.7 -5.46 23.44 -6.62 22.79 -7.75 22.11 -8.79 21.38 6.49 11.54 
+5.82 12.15 p
+-10.89 21.14 -11.85 20.16 -12.74 19.23 -13.52 18.2 2.64 13.22 1.76 13.78 -15.43 16.97 0.18 14.2 
+-0.89 14.69 -17.14 15.24 -17.58 13.93 -17.95 12.68 -18.23 11.41 -18.49 10.25 -4.11 12.67 -5.18 12.89 
+18.96 -8.92 -6.14 13.8 19.12 -9.5 -7.23 14.75 -19.32 8.72 7.42 -13.97 -19.14 8.18 -19.12 6.92 
+-4.21 1.37 -14.82 4.36 -7.46 11.52 -8.53 11.5 -14.96 2.41 -3.62 0.48 -9.31 10.5 -10.28 10.33 
+9.57 -0.46 8.29 -0.63 -10.2 9.6 -1.63 1.43 -1.17 0.05 -14.52 0.13 -1.67 -0.05 -16.91 -0.84 
+-9.27 -0.87 -7.25 -0.92 -16.1 -2.6 9.48 -7.49 -10.48 -1.59 -5.91 -1.04 -16.01 -3.43 -8.09 5.93 
+-8.62 5.66 -9.14 5.36 -9.61 5.01 -10.09 4.64 11.72 6.95 12.11 6.38 12.54 5.75 -4.73 2.23 
+-9.09 3.97 -14.46 5.6 0 129.93 21.55 -4.13 26.91 -6.36 21.18 -5.86 5.73 -1.71 26.93 -8.88 
+26.93 -10.2 13.39 -5.62 13.5 -6.01 19.81 -9.66 0 -126.87 11.35 -13.17 19.16 -5.58 -11.53 14.15 
+-18.99 4.6 0 126.87 7.14 -3.47 13.65 -7.25 13.23 -7.46 26.96 -16.45 3.8 -2.48 23.11 -15.88 
+14.26 -10.55 12.65 -9.87 19.79 -16.53 7.12 -6.3 21.47 -20.11 5.44 -5.41 19.99 -21.01 6.94 -7.75 
+15.8 -18.64 11.13 -14.05 9.29 -12.34 17.64 -25.3 0.71 -1.08 16.54 -26.43 9.66 -16.88 5.14 -9.51 
+13.25 -26.43 8.51 -18.7 3.28 -7.68 3.69 -9.31 0 -3.12 16.19 -51.15 15.37 -59.72 9.85 -64.39 
+-1.71 27.34 -11.35 59.25 -15.85 54.88 -12.5 33.79 0 3.12 6.75 -17.1 9.12 -26.41 4.08 -13.23 
+3.78 -13.15 6.66 -26.41 5.49 -26.41 4.38 -26.41 3.25 -26.41 2.15 -26.39 1.08 -26.41 0 -26.41 
+-1.08 -26.39 -2.15 -26.41 -3.25 -26.41 -4.38 -26.41 -5.49 -26.41 -6.66 -26.41 -3.78 -13.15 -4.08 -13.24 
+-9.12 -26.41 -10.44 -26.41 -3.28 -7.68 -8.51 -18.71 -13.25 -26.43 -5.14 -9.5 -9.66 -16.88 -16.54 -26.41 
+-0.71 -1.11 -17.64 -25.3 -9.29 -12.35 -11.13 -14.04 -15.8 -18.64 -6.94 -7.75 -19.99 -21 -5.44 -5.41 
+-21.47 -20.12 -7.12 -6.29 -19.79 -16.54 -12.65 -9.88 -14.26 -10.54 -23.11 -15.89 -3.8 -2.45 -26.96 -16.47 
+-13.23 -7.46 -13.65 -7.25 -26.95 -13.13 -13.5 -6.01 -13.39 -5.59 -26.93 -10.22 -26.93 -8.88 -5.73 -1.71 
+-21.18 -5.86 -26.91 -6.36 -26.93 -5.14 -26.91 -3.97 -26.93 -2.82 -26.9 -1.7 -26.91 -0.56 -26.93 0.56 
+-26.91 1.7 -26.93 2.82 -26.91 3.97 -26.93 5.14 -26.9 6.36 -21.18 5.86 -5.73 1.71 -26.93 8.88 
+-26.93 10.22 -13.39 5.59 -13.5 6.01 -26.95 13.13 -13.65 7.25 -13.24 7.46 -26.95 16.47 -3.8 2.45 
+-23.11 15.89 -14.26 10.54 -12.66 9.88 -19.79 16.54 -7.12 6.29 -21.46 20.12 -5.45 5.41 -19.99 21 
+-6.95 7.75 -15.8 18.64 -11.13 14.04 -9.29 12.35 -17.64 25.3 -0.71 1.09 -16.54 26.43 -9.66 16.88 
+-5.14 9.5 -13.26 26.43 -8.51 18.71 -3.28 7.68 -10.43 26.41 -9.11 26.41 -4.09 13.24 -3.77 13.15 
+-6.66 26.41 -5.49 26.41 -4.38 26.41 -3.23 26.41 -2.17 26.41 p f*
+Q q
+274.133 2270.03 1296.25 1297.98 re
+Y*
+255 0 r6
+479.86 3088.2 -5.53 11.61 12.39 18.16 -4.27 12.16 13.7 17.27 -2.93 12.61 -2.11 13.13 15.5 16.04 
+-0.61 13.41 16.56 14.67 17.05 13.52 1.34 13.17 17.86 11.95 2.75 13 18.49 10.25 4.1 12.67 
+18.86 8.42 18.95 7.23 18.97 6.14 18.94 5.05 5.41 9.94 6.27 9.92 18.64 2.47 6.88 9.05 
+18.16 0.7 7.32 8.12 1.99 -0.07 -9.2 -8.05 -0.21 -0.11 -20.01 -9.13 -9.61 -7.4 -5.04 -2.78 
+-17.68 -11.96 -4.43 -3.82 -16.21 -10.7 -6.99 -5.12 -19.66 -9.59 -14.41 -11.03 -6.23 -4.91 -13.21 -15.73 
+-7.14 -15.34 -0.96 -3.41 -4.82 -11.96 4.91 -3.75 9.77 2.28 7.77 1.96 17.28 12.13 11.7 8.2 
+6.03 3.8 6.99 2.95 10.96 -1.96 0.45 -1.75 -0.39 -1.11 -4.43 -10.8 -4.45 -12.37 -5.12 -9.55 
+-2.74 -5.9 -7.5 -16.58 -0.79 -4.34 -1.78 -9.63 5.58 -7.66 1.73 -11.3 4.66 -8.99 5.21 -8.7 
+10.7 -3.06 6.77 0.02 5.23 -1.45 10.02 -3.45 10.61 -2.62 8.57 0.91 4.17 -0.85 9.25 -3.88 
+10.05 -2.82 10.33 -2.28 10.31 -2.19 -8.16 -11.92 -8.7 5 -8.42 5.27 -8.11 5.54 -7.77 5.82 
+-11.33 -14.08 -7.92 6.23 -7.55 6.51 -11.79 -14.2 -7.64 6.95 -11.72 -14.5 -7.68 7.38 -11.65 -14.84 
+-7.7 7.81 -11.5 -15.21 -10.92 -15.69 -10.29 -16.15 -9.63 -16.58 -8.98 -17 -9.42 8.21 -8.98 8.57 
+9.81 17.13 10.5 16.62 11.18 16.11 -7.18 9.03 -6.64 9.37 -6.1 9.79 -5.49 10.18 -13.02 -15.91 
+-12.36 -16.62 -11.64 -17.32 -10.87 -17.95 7.4 -10.16 7.94 -9.7 9.96 17.78 8.01 -9.38 -9.53 -17.68 
+-8.75 -18.19 9.33 -8.72 9.79 -8.33 -7.23 -18.27 -6.42 -18.64 10.85 -7.57 11.25 -7.21 11.57 -6.88 
+5.49 18.04 11.61 -6.73 -5.21 -17.86 12.22 -6.23 12.5 -5.92 12.78 -5.62 -3.82 -17.51 13.26 -5.16 
+13.52 -4.88 13.74 -4.64 -2.65 -17.1 14.13 -4.21 -1.97 -16.99 -1.46 -17.04 14.56 -3.62 14.75 -3.43 
+14.91 -3.2 -0.72 -16.53 15.13 -2.84 15.28 -2.64 15.43 -2.43 -0.2 -16.1 0.15 -16.06 -15.45 2.18 
+0.54 -16.13 -15.28 2.2 1 -16.21 1.41 -16.13 1.87 -16.01 -14.87 1.82 2.48 -16.11 -14.58 1.76 
+-14.41 1.87 3.34 -16.39 3.91 -16.27 -13.84 1.5 4.75 -16.36 -13.39 1.3 5.66 -16.43 -12.91 1.07 
+6.68 -16.52 -12.37 0.8 -12.2 0.8 8.23 -16.86 -11.59 0.45 9.48 -16.88 10.33 -16.58 11.22 -16.19 
+-9.88 -0.5 12.68 -16.06 13.63 -15.58 -8.47 -1.11 -8.16 -1.21 -14.84 16.06 -8.49 -1.11 -14.41 16.88 
+-13.37 17.43 9.62 0.49 -11.83 17.52 -10.83 17.9 -9.84 18.23 -8.87 18.51 -7.9 18.73 -6.95 18.96 
+12.29 -1.84 -5.77 18.68 -4.88 18.84 -4.02 18.9 -3.16 18.97 -12.96 3.45 -2.41 19.38 -12.79 3.99 
+-1.54 19.77 -12.54 4.58 -0.63 20.14 0.29 20.01 -12.18 5.62 1.33 20.27 2.21 20.07 11.88 -6.37 
+2.9 19.5 3.73 19.27 4.55 19.01 -11.15 7.33 -10.81 7.66 5.97 19.25 -10.09 8.31 7.14 19.1 
+-9.27 8.94 -8.81 9.36 8.79 19.05 -7.86 10 -7.29 10.46 10.54 18.75 -6.21 11.09 f*
+555.04 3004.21 -10.22 7.72 8.29 17.38 9.83 -7.81 10.25 -7.46 10.61 -7.12 -7.18 -17.08 -10.98 7.01 
+-10.59 7.36 f*
+0 155 255 rG
+573.63 3224 -4.91 3.75 4.82 11.96 0.96 3.41 7.14 15.34 13.21 15.73 6.23 4.91 14.41 11.03 
+19.66 9.59 6.99 5.13 16.21 10.7 4.43 3.82 17.68 11.96 5.04 2.78 9.61 7.4 20.01 9.13 
+0.21 0.11 9.2 8.05 6.56 -0.33 -11.05 -7.7 -8.66 -4.69 -8.66 -3.97 -14.47 -9.66 -6.38 -4.23 
+-11.79 -7.25 -13.63 -11.89 -1.65 -1.5 -19.73 -14.28 -2.78 -2.19 -19.23 -9.46 -19.94 -15.93 -1.37 -1.63 
+-8.29 -15.43 1.02 -10.39 6.27 0.41 17.75 12.83 2.34 2.14 16.38 13.74 19.08 11.67 3.3 1.65 
+15.71 6.55 8.07 1.65 9.29 -2.45 1.02 -2.21 -1.82 -2.21 -7.4 -8.86 -4.71 -10.05 -4.75 -10.57 
+-2.25 -4 -5.1 -8.53 -9.98 -14.39 -0.84 -1.23 -7.1 -14.76 -3.4 -10.3 -0.93 -3.67 3.66 -8.51 
+3.5 -8.87 3.99 -8.68 2.76 -10.16 7.03 -6.32 9.25 -4.08 7.36 -2.11 2.78 -0.93 10.3 -2.69 
+10.53 -2.24 8.22 -4.8 10.01 -0.07 2.3 0.35 11.09 -0.91 -4.16 -5.45 8.23 -4.88 -1.67 -2.36 
+-10.31 2.19 -10.33 2.28 -10.05 2.82 -9.25 3.88 -4.17 0.85 -8.57 -0.91 -10.61 2.62 -10.02 3.45 
+-5.23 1.45 -6.77 -0.02 -10.7 3.06 -5.21 8.7 -4.66 8.99 -1.73 11.3 -5.58 7.66 1.78 9.63 
+0.79 4.34 7.5 16.58 2.74 5.9 5.12 9.55 4.45 12.37 4.43 10.8 0.39 1.11 -0.45 1.75 
+-10.96 1.96 -6.99 -2.95 -6.03 -3.8 -11.7 -8.2 -17.28 -12.13 -7.77 -1.96 -9.77 -2.28 f*
+2 239 204 rG
+584.5 3238.26 -1.02 10.39 8.29 15.43 1.37 1.63 19.94 15.93 19.23 9.46 2.78 2.19 19.73 14.28 
+1.65 1.5 13.63 11.89 11.79 7.25 6.38 4.23 14.47 9.66 8.66 3.97 8.66 4.69 11.05 7.7 
+6.53 -0.46 -12.87 -7.29 -14.54 -8.16 -2.26 -1 -14.45 -8.44 -14.23 -9.55 -1.89 -1.15 -12.52 -11.13 
+-13.29 -12.31 -0.19 -0.12 -21.46 -16.69 -18.56 -8.07 -0.59 -0.46 -11.37 -15.91 9.94 3.8 4.1 3.47 
+16.36 16.71 18.67 6.96 18.64 5.47 5.01 2.48 15.7 8.05 12.39 -1.09 -0.02 -7.29 0.15 -7.21 
+-6.53 -9.24 -7.18 -10.07 -6.1 -8.36 -1.09 -2.39 -3.43 -9.77 -9.79 -13.65 -1.02 -1.84 -2.95 -9.61 
+-3.67 -12.02 1.95 -8.79 -1.4 -7.4 0 -4.23 2.66 -8.98 2.21 -9.74 4.28 -8.25 7.01 -5.86 
+7.59 -5.32 9.34 -3.45 6.03 -1.3 4.86 -0.3 7.86 -4.86 12.71 1 10.74 -1.02 -6.25 -7.94 
+-11.09 0.91 -2.3 -0.35 -10.01 0.07 -8.22 4.8 -10.53 2.24 -10.3 2.69 -2.78 0.93 -7.36 2.11 
+-9.25 4.08 -7.03 6.32 -2.76 10.16 -3.99 8.68 -3.5 8.87 -3.66 8.51 0.93 3.67 3.4 10.3 
+7.1 14.76 0.84 1.23 9.98 14.39 5.1 8.53 2.25 4 4.75 10.57 4.71 10.05 7.4 8.86 
+1.82 2.21 -1.02 2.21 -9.29 2.45 -8.07 -1.65 -15.71 -6.55 -3.3 -1.65 -19.08 -11.67 -16.38 -13.74 
+-2.34 -2.14 -17.75 -12.83 -6.27 -0.41 f*
+7 193 59 rG
+609.36 3261.52 -9.94 -3.8 11.37 15.91 0.59 0.46 18.56 8.07 21.46 16.69 0.19 0.13 13.29 12.31 
+12.52 11.13 1.89 1.15 14.23 9.55 14.45 8.44 2.26 1 14.54 8.16 12.87 7.29 2.39 -0.19 
+2.73 2.69 7.73 4.06 4.71 -0.72 -11.09 -6.4 -7.21 -2.87 -7.45 -3.97 -12.07 -7.75 -12.41 -5.49 
+-6.23 -3.65 -12.34 -9.7 -11.61 -9.35 -1.52 -1.39 -1.13 -4.67 19.08 4.43 15.37 6.31 6.42 2.52 
+19.07 2.25 4.54 -1.78 10.18 -4.45 2.84 -1.05 2.19 -5.75 -4.45 -6.27 -7.96 -7.12 -0.48 -0.33 
+-12.63 -8.57 -4.42 -7.61 0.63 -6.36 4.54 -5.08 -0.5 -6.71 -7.79 -6.21 -12.8 -9.46 -4.34 -2.04 
+1.43 -5.32 -0.37 -1.97 2.69 -6.53 -16.28 -9.44 3.19 -6.93 2.95 -5.54 -2.08 -3.12 3.55 0.61 
+3.3 -5.21 15.52 10.85 6.45 4.25 -1.52 -9.59 -0.66 -0.93 -13.39 -13.39 -11.24 -15.67 0 -0.04 
+0.76 -10.87 7.14 -5.14 8.5 -3.73 7.33 -2.39 2.98 0.71 15.49 4.43 4.47 -0.09 4.12 -2.79 
+-11.17 -13.46 -0.35 -0.43 -10.74 1.02 -12.71 -1 -7.86 4.86 -4.86 0.3 -6.03 1.3 -9.34 3.45 
+-7.59 5.32 -7.01 5.86 -4.28 8.25 -2.21 9.74 -2.66 8.98 0 4.23 1.4 7.4 -1.95 8.79 
+3.67 12.02 2.95 9.61 1.02 1.84 9.79 13.65 3.43 9.77 1.09 2.39 6.1 8.36 7.18 10.07 
+6.53 9.24 -0.15 7.21 0.02 7.29 -12.39 1.09 -15.7 -8.05 -5.01 -2.48 -18.64 -5.47 -18.67 -6.96 
+-16.36 -16.71 -4.1 -3.47 f*
+110 210 9 rG
+691.21 3313.04 -19.08 -4.43 1.13 4.67 1.52 1.39 11.61 9.35 12.34 9.7 6.23 3.65 12.41 5.49 
+12.07 7.75 7.45 3.97 7.21 2.87 11.09 6.4 4.68 -0.78 -9.37 -6.29 -14.32 -6.41 -5.54 -2.73 
+-6.14 -4.62 -13.3 -8.16 -11.31 -5.27 -4.08 -4.1 0.43 -2.21 8.94 3.41 13.61 5.04 20.62 4.14 
+0.29 0.04 22.57 4.96 3.67 0.29 17.23 3.88 5.01 2.43 5.05 1.65 9.46 3.69 10.63 2.73 
+10.16 2.15 0.37 -0.09 15.4 -1.45 4.47 -1.61 -0.91 -0.5 -5.41 -3.11 -5.14 -3.3 -14.61 6.21 
+-5.56 -4.08 -5.19 -4.26 10.61 -3.19 3.97 -2.91 -2.88 -2.56 -3.95 -3.86 -3.63 -3.95 6.95 -1.39 
+7.73 -5.32 -0.28 -0.35 1.43 -0.29 -3.78 -2.8 -1.71 -0.17 -18.02 -0.04 -7.37 -1.69 4.99 -2.39 
+6.54 -2.54 -2.07 -4.02 -8.29 -4.25 2.63 -4.04 -5.41 -2.17 -1.5 -0.48 -5.02 -1.61 -5.83 -1.86 
+-1.59 -4.88 -6.49 -2.56 -6.45 -4.95 -9.13 -7.68 -2.56 -6.33 5.79 -3.61 0.87 -5.25 4.21 -3.93 
+-5.14 -6.86 -1.15 -1.82 -4.91 -8.85 -1.25 -7.49 -1.5 -4.58 -1.41 -4.5 -0.45 -8.09 6.9 -2.97 
+2.91 -6.05 -7.75 -6.42 5.28 -4.69 -13.07 -12.21 5.55 -4.36 -0.17 -1.09 -11.44 -12.17 2.76 -1.98 
+-4.47 0.09 -15.49 -4.43 -2.98 -0.71 -7.33 2.39 -8.5 3.73 -7.14 5.14 -0.76 10.88 0 0.04 
+11.24 15.67 13.39 13.39 0.66 0.93 1.52 9.59 9.5 6.02 16.32 9.63 -2.82 5.34 -2.45 5.49 
+-2.08 5.6 -1.69 5.75 -1.28 5.86 -18.06 -7.29 -13.45 -6.01 12.8 9.46 7.79 6.21 0.5 6.71 
+-4.54 5.08 -0.62 6.36 4.42 7.61 12.63 8.57 0.48 0.33 7.96 7.12 4.45 6.27 -2.19 5.75 
+-2.84 1.05 -10.18 4.45 -4.54 1.78 -19.07 -2.25 -6.42 -2.52 -15.37 -6.31 f*
+255 G
+705.36 3231.54 -16.28 -9.44 3.19 -6.93 2.95 -5.54 0.7 -1.19 0.78 -1.33 3.3 -5.21 15.52 10.85 
+6.45 4.25 9.5 6.02 16.32 9.63 -2.82 5.34 -2.45 5.49 -2.08 5.6 -1.69 5.75 -1.28 5.86 
+-18.06 -7.29 -13.45 -6.01 -4.34 -2.04 1.43 -5.32 0.46 -1.54 2.36 -6.68 -0.5 -0.28 f*
+110 210 9 rG
+696.7 3207.12 -3.55 -0.61 2.08 3.12 0.7 -1.19 0.78 -1.33 f*
+0 255 r6
+696.25 3323.27 -0.43 2.21 4.08 4.1 11.31 5.27 13.3 8.16 6.14 4.62 5.54 2.73 14.32 6.41 
+9.37 6.29 4.32 -0.76 7.55 6.16 8.09 5.93 8.62 5.66 5.49 3.28 4.86 1.54 3.06 1.29 
+0 -12.13 -8.92 -3.88 -17.88 -2.5 -6.25 -6.23 -8.79 -2.82 -3.15 -2.63 -6.4 -6.57 -0.04 -0.42 
+1.24 0.3 18.9 4.56 3.93 -0.24 8.95 4.54 7.05 5.23 7.18 5.08 4.19 5.58 0 12.13 
+7.51 3.12 14.32 1.67 14.21 0.46 0.33 -0.05 14.13 -7.07 3.34 -8.71 -0.39 -2.54 6.36 -3.34 
+11.61 -3.21 4.16 5.42 2.54 -3.67 -6.68 -1.78 -6.51 -2.04 -6.31 -2.26 -6.12 -2.49 -5.9 -2.71 
+-4.73 -2.43 -4.47 1.61 -15.4 1.45 -0.37 0.09 -10.16 -2.15 -10.63 -2.73 -9.46 -3.69 -5.05 -1.65 
+-5.01 -2.43 -17.23 -3.88 -3.67 -0.29 -22.57 -4.96 -0.29 -0.04 -20.62 -4.14 -13.61 -5.04 -8.94 -3.41 f*
+110 210 9 rG
+705.36 3231.54 -2.69 6.53 0.37 1.97 0.46 -1.54 2.36 -6.68 -0.5 -0.28 f*
+0 255 r6
+723.72 2474.54 -3.47 2.85 7 1.32 7.25 1.24 0.39 -0.33 -6.18 -2.12 -4.99 -2.95 f*
+255 203 0 rG
+727.56 2471.48 -3.84 3.06 4.99 2.95 6.18 2.13 4.25 -3.73 -6.27 -1.89 -5.32 -2.52 f*
+255 135 0 rG
+731.45 2468.46 -3.88 3.02 5.32 2.52 6.27 1.89 4.3 -3.64 -6.34 -1.7 -5.66 -2.09 f*
+255 35 0 rG
+735.37 2465.5 -3.93 2.97 5.66 2.09 6.34 1.7 4.41 -3.62 -6.45 -1.48 -6.04 -1.65 f*
+189 0 54 rG
+736.98 2464.3 -1.61 1.2 6.04 1.65 6.45 1.48 1.95 -1.59 -6.53 -1.32 9.98 -7.45 -3.4 -3.12 
+-12.87 9.16 f*
+87 0 136 rG
+764.47 2403.73 -27.02 8.36 0.61 2.82 1 2.73 26.26 -9 0.96 2.34 1.3 2.23 1.65 2.18 
+1.93 2.08 2.28 1.97 2.54 1.89 -22.98 10.29 3.47 1.93 3.78 1.84 -19.32 10.68 -0.63 1.15 
+3.97 1.48 5.05 1.67 5.32 1.54 -4.79 3.23 3.4 3.12 6.95 -4.91 17.84 -11.61 5.05 1.37 
+18.01 -10.89 18.91 -10.07 3.69 1.15 3.86 1.09 4.04 1.02 4.18 0.93 4.34 0.91 4.46 0.83 
+0.91 0.15 0 -39.59 -5.29 -0.8 0.83 -1.39 7.29 -0.95 1.39 0.37 -0.24 1.22 -1.99 1.37 
+-0.61 0.11 -1.37 0.09 0 39.59 3.69 0.63 4.73 0.72 4.84 0.65 4.93 0.61 5.03 0.54 
+5.1 0.5 5.19 0.43 -7.55 10.62 6.19 0.39 6.25 0.32 6.31 0.3 6.36 0.21 -3.58 10.94 
+7.3 0.17 7.31 0.13 7.32 0.06 7.36 0.05 0 -61.09 -1.02 0 -1 -0.02 -2 -0.08 
+-0.98 -0.07 -0.97 -0.09 -0.98 -0.11 -1.86 -0.21 -0.91 -0.16 -1.74 -0.3 -1.65 -0.39 -0.78 -0.2 
+-0.74 -0.21 -0.72 -0.24 -0.67 -0.24 -0.65 -0.24 -0.61 -0.26 -0.56 -0.28 -0.52 -0.28 -0.48 -0.29 
+-0.43 -0.3 -0.39 -0.3 -0.35 -0.3 -0.3 -0.33 -0.24 -0.32 -0.2 -0.33 -0.17 -0.32 -0.08 -0.35 
+-0.07 -0.33 0 -0.34 0.04 -0.35 0.11 -0.32 0.16 -0.35 0.2 -0.34 0.26 -0.33 0.3 -0.34 
+0.35 -0.33 0.39 -0.32 0.45 -0.3 0.5 -0.33 0.52 -0.3 0.58 -0.3 1.3 -0.57 0.71 -0.26 
+0.76 -0.24 0.79 -0.25 0.82 -0.22 0.85 -0.22 0.89 -0.19 0.91 -0.18 0.93 -0.17 1.95 -0.3 
+1 -0.11 1.02 -0.11 2.08 -0.13 1.06 -0.07 1.06 -0.02 2.11 0 1.07 0.02 1.06 0.07 
+2.08 0.13 1.02 0.11 1 0.11 1.95 0.3 0.93 0.17 0.91 0.18 0.89 0.19 0.84 0.22 
+0.83 0.22 0.79 0.25 0.75 0.24 0.71 0.26 0.65 0.29 0.63 0.28 0.58 0.3 0.55 0.3 
+0.5 0.33 0.45 0.3 0.39 0.32 0.34 0.33 0.3 0.34 0.26 0.33 0.2 0.34 0.16 0.35 
+0.11 0.32 0.04 0.35 0 0.34 -0.07 0.33 -0.08 0.35 -0.16 0.32 -0.22 0.33 -0.24 0.32 
+-0.3 0.33 -0.34 0.3 -0.39 0.3 -0.43 0.3 -0.48 0.29 -0.52 0.28 -0.57 0.28 -0.61 0.26 
+-0.65 0.24 -0.67 0.24 -0.72 0.24 -0.74 0.21 -0.78 0.2 -1.65 0.39 -1.73 0.3 -0.91 0.16 
+-0.93 0.11 -1.91 0.21 -0.98 0.09 -0.97 0.07 -2 0.08 -1 0.02 -1 0 0 61.09 
+7.34 -0.05 7.32 -0.06 7.31 -0.13 7.29 -0.17 7.25 -0.22 7.18 -0.28 7.14 -0.32 7.08 -0.39 
+6.99 -0.43 6.92 -0.5 8.31 11.35 7.64 -0.52 7.53 -0.58 7.4 -0.65 7.27 -0.71 7.14 -0.79 
+6.96 -0.86 6.81 -0.91 6.64 -1.02 13.93 12.15 7.2 -1.04 6.99 -1.11 -15.45 -12.26 6.04 -1.25 
+5.82 -1.37 5.55 -1.45 5.32 -1.54 5.05 -1.67 4.77 -1.78 4.47 -1.91 4.14 -2 3.84 -2.15 
+3.47 -2.28 22.52 12.38 3.78 -2.47 -23.18 -12.29 2.75 -2.56 2.35 -2.68 1.93 -2.82 24.95 11.94 
+2.04 -3.15 1.56 -3.34 1.04 -3.49 0.52 -3.69 -0.07 -3.88 -0.65 -4.08 -1.26 -4.25 -27.97 -9.9 
+-2.15 -3.95 -2.73 -4.08 -3.39 -4.19 28.41 8.29 -4.06 -4.9 -4.8 -5.06 -5.62 -5.16 -2.73 -2.24 
+-3.66 -3.02 -7.25 -5.29 -27.09 -4.55 -7.42 -4.43 -8.16 -4.36 -8.83 -4.28 -9.55 -4.17 -10.2 -3.97 
+-10.85 -3.78 P
+-11.48 -3.52 -12.04 -3.23 -15.63 3.93 -10.61 -2.21 -10.98 -1.93 -11.26 -1.63 -8.62 6.25 -7.92 6.73 
+-7.49 -0.69 -7.59 -0.5 -7.64 -0.29 -7.66 -0.11 -7.68 0.11 -7.64 0.29 -7.59 0.5 -7.49 0.69 
+-7.36 0.87 -7.2 1.05 -7.04 1.23 -6.83 1.37 -6.6 1.55 -6.33 1.65 -6.08 1.8 -5.79 1.91 
+-5.49 2 -5.17 2.11 -22.94 -1.32 -5.77 2.84 -5.34 2.91 -4.88 2.93 -4.43 2.97 -3.99 2.97 
+-3.52 3 -3.08 2.95 -2.62 2.93 -2.19 2.89 -1.78 2.84 -1.35 2.8 -0.93 2.72 -0.52 2.66 
+-0.16 2.59 p f*
+189 0 54 rG
+740.93 2446.07 -1.43 0.85 0.8 0.3 0.63 -1.15 f*
+2 239 204 rG
+742.75 3360.5 4.8 4.45 2.93 -0.39 -7.73 -4.06 f*
+255 203 0 rG
+751.67 3349.28 -1.24 -0.3 0.04 0.42 6.4 6.57 3.15 2.63 8.79 2.82 6.25 6.23 17.88 2.5 
+8.92 3.88 -4.19 -5.58 -7.18 -5.08 -7.05 -5.23 -8.95 -4.54 -3.93 0.24 -18.9 -4.56 f*
+0 255 r6
+751.2 3175.15 -0.67 -0.69 0.17 1.09 0.5 -0.39 f*
+757.77 3209.29 -6.9 2.97 0.45 8.09 1.41 4.5 1.5 4.58 1.25 7.49 4.91 8.85 1.15 1.82 
+5.14 6.86 -4.21 3.93 -0.87 5.25 -5.79 3.61 2.56 6.33 9.13 7.68 6.45 4.95 6.49 2.56 
+1.59 4.88 5.83 1.86 0 -42.6 -7.31 -1.06 -4.28 -4.32 6.84 -0.59 4.75 5.97 0 42.6 
+5.02 1.61 0 -9.39 -4.86 -2.12 4.73 -0.41 3.95 1.96 -3.82 0.58 0 9.39 1.5 0.48 
+5.41 2.17 -2.63 4.04 8.29 4.25 2.07 4.02 -6.54 2.54 -4.99 2.39 7.38 1.69 18.02 0.04 
+1.71 0.17 3.78 2.8 16.02 -3.43 -2.21 -2.82 -1.97 -2.86 -1.78 -2.93 -1.52 -2.95 18.54 -1.85 
+0.04 -0.02 -1.08 -2.32 -0.92 -2.37 -0.73 -2.38 -0.57 -2.39 -0.39 -2.39 -0.02 -0.15 -5.88 -2.76 
+-2 -2.84 -0.98 -2.8 2.11 -2.28 -11.44 -4.43 -1.95 -1.63 -11.61 -6.9 -2.52 -3.59 -2.95 -2.23 
+-7.75 -7.51 -4.49 -2.04 2.26 -3.71 2.49 -3.62 2.73 -3.54 -15.64 -9.48 3.47 -3.82 -14.78 -10.44 
+-14.39 -10.96 -6.27 -5.03 -2.91 6.05 f*
+255 203 0 rG
+783.12 3246.94 -6.84 0.59 4.28 4.32 7.31 1.06 -4.75 -5.97 f*
+110 210 9 rG
+792.88 3287.71 -4.86 -2.12 4.73 -0.41 3.95 1.96 -3.82 0.58 f*
+255 135 0 rG
+789.78 3170.98 -1.28 0.67 0.48 0.61 0.8 -1.28 f*
+255 35 0 rG
+789.78 3170.98 -0.8 1.28 7.27 8.89 5.27 -4.7 5.38 -4.91 -4.66 -6.66 -6.97 3.29 -5.49 2.8 f*
+189 0 54 rG
+799.21 3184.7 -5.99 3.47 11.68 12.46 -1.56 0.98 12.26 11.96 6.05 10.44 -2 4.6 1.84 1.45 
+9.92 7.59 -7.33 -9.59 0.93 -1.2 -8.25 -14.08 -7.84 -8.04 -1.8 -5.51 -0.39 -5.82 4.55 -4.58 
+3.73 -6.05 6.01 -3.34 -2.73 -3.99 -6.55 2.89 -4.86 -6.79 -5.38 4.91 -5.27 4.7 2.97 3.54 f*
+2 239 204 rG
+797.85 3395.14 -3.36 1.58 11 5.25 -7.64 -6.83 f*
+110 210 9 rG
+793.95 3383.33 3.64 2.09 9.62 5.01 -4.32 2.24 10.19 4.99 10.75 4.58 12.89 2.7 9.57 0.58 
+5.36 -0.82 11.64 2.35 4.92 -6.97 10.53 2.08 9.91 1.52 -0.69 -10.94 -4.04 -0.65 -9.29 -1.78 
+6.21 -10.09 -7.97 -1.83 4.58 -6.46 -4.16 -5.42 -11.61 3.21 -6.36 3.34 0.39 2.54 -3.34 8.71 
+-14.13 7.07 -0.33 0.05 -14.21 -0.46 -14.32 -1.67 -7.51 -3.12 -3.06 -1.29 -4.86 -1.54 f*
+7 193 59 rG
+802.89 3392.67 -5.04 2.47 7.64 6.83 0.09 0.04 11.61 4.86 12.07 4.36 12.46 3.89 8.25 -8.59 
+11.54 2.9 1.79 -2.4 -11.64 -2.35 -5.36 0.82 -9.57 -0.58 -12.89 -2.7 -10.75 -4.58 -10.19 -4.99 f*
+255 135 0 rG
+800.04 3203.8 -0.33 0.21 12.64 11.79 -2.3 1.65 0.41 3.69 4.58 3.75 -0.02 -6.71 -1.73 -3.05 
+-13.24 -11.33 f*
+255 35 0 rG
+803.34 3201.61 -3.3 2.2 13.24 11.33 1.73 3.05 0.02 6.71 4.62 3.71 2 -4.6 -6.05 -10.44 
+-12.26 -11.96 f*
+255 203 0 rG
+818.05 3261.35 -12.76 -5.47 7.75 7.51 2.95 2.23 2.52 3.59 11.61 6.9 1.95 1.63 11.44 4.43 
+-2.11 2.28 0.98 2.8 2 2.84 5.88 2.76 -0.17 -2.23 12.67 0.91 6.46 -0.74 0 -1.32 
+-7.53 -2 -0.52 -2.11 -1.74 -2.41 -6.2 -3.67 -1.56 -0.57 -8.74 -2.13 -9.81 -2.47 -1.3 -0.71 
+-8.08 -6.05 -5.2 -5.77 -0.48 -0.21 f*
+87 0 136 rG
+811.3 3188.84 -4.55 4.58 0.39 5.82 1.8 5.51 7.84 8.04 8.25 14.08 -0.93 1.2 7.33 9.59 
+4.02 2.96 -3.08 2.67 14.84 9.65 -2.37 2.37 0.13 0.07 8.22 1.26 7.6 1.35 4.64 1.32 
+1.58 -0.46 1.93 -1.86 1.04 -1.15 -1.87 -3.02 -8.68 -9.18 -1.06 -3.82 1.39 -3.91 3.3 -2.15 
+7.5 4.02 3.76 8.44 2.56 5.47 2.3 -0.33 2.82 -1.13 3.28 -0.56 2.67 -1.29 2.69 -1.3 
+2.96 -0.98 2.08 -1.61 0.17 -0.76 0.71 -6.49 1.95 -5.23 -0.87 -2.46 -4 0.79 -5.45 -13.5 
+-4.69 1.04 -5.99 -13.61 -5.34 1.34 -6.05 -12.74 -0.46 -0.93 -5.94 1.63 -5.84 1.82 -5.71 1.97 
+-8.29 -13.43 -6.25 2.35 -6.1 2.49 -6.51 -9.33 -6.01 3.34 -3.73 6.05 f*
+255 203 0 rG
+810.05 3217.45 -2.11 1.59 2.52 2.11 -0.41 -3.69 f*
+0 255 r6
+821.5 3339.41 -3.97 2.91 5.34 -1.73 -1.37 -1.17 f*
+825.71 3322.33 -7.73 5.32 10.31 -2.28 -2.59 -3.04 f*
+255 135 0 rG
+827.8 3265.25 -9.27 -3.69 5.2 5.77 8.08 6.05 1.3 0.71 9.81 2.47 8.74 2.13 1.56 0.57 
+6.2 3.67 1.74 2.41 0.52 2.11 7.53 2 0.05 -1.11 0.19 -1.73 0.31 -1.71 0.43 -1.71 
+0.56 -1.67 0.11 -0.3 -7.51 -1.59 -11.07 -2.65 -18.27 -5.32 -2.04 -1.45 -4.19 -4.95 f*
+255 35 0 rG
+835.59 3268.21 -7.79 -2.95 4.19 4.95 2.04 1.45 18.27 5.32 11.07 2.65 7.51 1.59 0.56 -1.37 
+0.59 -1.22 -2.37 -1.23 2.73 0.54 0.74 -1.3 0.22 -0.35 -4.8 -1.32 -11.18 -1.73 -3.17 -0.43 
+-2.39 -1.59 -13.34 -7.96 -1.11 1.73 2.97 1.82 -3.65 -0.62 -1.11 2.04 f*
+255 0 r6
+844.71 2879.88 -15.39 1.32 1.24 15.89 1.41 15.88 1.59 15.86 1.74 15.87 14.37 -1.41 1.58 15.82 
+1.69 15.77 13.78 -1.17 1.47 15.75 13.48 -0.91 1.17 15.69 1.26 15.63 1.32 15.58 1.41 15.52 
+11.78 -0.65 11.83 -0.37 0.48 15.43 0.52 15.34 -10.79 0.38 1.09 15.25 -10.22 0.58 -10.18 0.85 
+2.3 15.08 9.59 -0.8 9.66 -0.59 1.19 15.04 1.26 14.89 8.46 -0.32 -0.63 -14.91 -0.61 -15.04 
+9.7 -0.11 0 -281.27 -16.04 0.11 -15.99 0.33 -15.97 0.54 -15.95 0.76 0.5 15.73 -15.78 1.02 
+0.76 15.79 0.91 15.84 f*
+255 135 0 rG
+837.09 3265.47 -0.39 0.7 3.65 0.63 -2.97 -1.82 -0.28 0.5 f*
+189 0 54 rG
+838.76 3262.83 -0.29 0.41 13.34 7.96 2.39 1.59 3.17 0.43 11.18 1.73 4.8 1.32 0.83 -1.21 
+1.13 -1.52 1.23 -1.47 1.33 -1.43 1.45 -1.39 1.52 -1.32 1.63 -1.28 1.71 -1.24 1.8 -1.17 
+1.86 -1.11 1.96 -1.04 2.02 -0.98 2.08 -0.91 2.15 -0.84 2.2 -0.78 2.25 -0.72 2.3 -0.63 
+2.34 -0.57 2.38 -0.5 -5.01 -13.17 -3.99 -10.98 -1.95 5.23 -0.71 6.49 -0.17 0.76 -2.08 1.61 
+-2.96 0.98 -2.69 1.3 -2.67 1.29 -3.28 0.56 -2.82 1.13 -2.3 0.33 -2.56 -5.47 -3.76 -8.44 
+-7.5 -4.02 -3.3 2.15 -1.39 3.91 1.06 3.82 8.68 9.18 1.87 3.02 -1.04 1.15 -1.93 1.86 
+-1.58 0.46 -4.64 -1.32 -7.6 -1.35 -8.22 -1.26 -0.13 -0.07 -2.19 2.43 -2.04 2.52 -1.84 2.58 f*
+845.5 2388.65 -5.29 -0.8 0.83 -1.39 7.29 -0.95 1.39 0.37 -0.24 1.22 -1.99 1.37 -0.61 0.11 
+-1.37 0.09 f*
+255 203 0 rG
+853.97 3304.84 -0.04 0.02 0.04 -0.02 f*
+2 239 204 rG
+868.25 3160.7 -7.48 1.52 0.3 0.83 8.25 1 7.64 -0.5 8.03 1.47 -1.54 -6.73 -7.64 1.11 
+-7.55 1.3 f*
+7 193 59 rG
+869.32 3164.04 -8.25 -1 2.97 7.9 7.6 0.11 7.16 -0.93 6.98 2.78 1.04 -0.13 -1.84 -7.75 
+-8.03 -1.47 -7.64 0.5 f*
+255 135 0 rG
+869.23 3290.78 -6.46 0.74 6.53 0.32 -0.07 -1.06 f*
+110 210 9 rG
+871.64 3171.05 -7.6 -0.11 2.11 5.49 6.82 -1.41 6.9 -1.22 5.93 -0.91 -6.98 -2.78 -7.16 0.93 f*
+255 135 0 rG
+872.03 3278.62 -2.37 -1.23 2.73 0.54 -0.17 0.29 -0.2 0.41 f*
+0 255 r6
+893.38 3393.49 -5.43 -0.76 0.69 10.94 0.81 0.11 10.85 1.17 2.62 -10.46 -9.54 -1 f*
+905.46 3383.75 -2.54 10.74 9.66 0.61 9.68 0.2 0 10.59 10.98 -0.24 10.94 -0.7 2.75 10.16 
+8.31 -0.87 1.65 -5.86 11.09 -2.15 11.05 -2.25 10.52 -3.02 12.43 -1.29 8.88 1.79 7.95 -0.57 
+3.19 -3.62 1.46 -4.58 9.59 -4.54 9.44 -4.73 9.01 -5.08 8.11 -5.52 5.97 -6.18 2.88 -6.77 
+0.89 -5.68 -2.02 -1.56 -9.66 -6.47 -9.96 -3.87 -3.34 -3.12 -5.58 1.08 -9.46 2.8 -4 4.23 
+-2.91 4.77 -4.64 4.19 -5.79 3.69 -2.15 4.13 -0.59 1.48 -5.46 4.29 -6.01 4.13 -8.04 -1.13 
+-10.41 -8.94 -1.63 0.54 -6.51 2.04 -6.68 1.78 -6.81 1.52 -6.95 1.25 -2.43 0.33 -4.6 0.65 
+-7.12 0.7 -7.16 0.43 -7.18 0.13 -6.68 -0.11 -0.89 3.41 -0.85 7.68 -8.38 -0.5 f*
+255 203 0 rG
+915.06 3373.13 -0.37 3.43 0.89 -3.41 -0.52 -0.02 f*
+255 0 r6
+938.15 2845.53 -15.88 -0.11 0 250.46 10.25 0.11 10.26 0.37 -1.15 15.12 -1.21 15.04 -0.95 11.55 
+9.52 -7.1 8.71 -2.84 0 -77.14 -11.79 -0.65 -11.83 -0.37 0.48 -15.52 0.45 -15.58 12.72 0.37 
+12.7 0.65 -1.32 15.58 -1.41 15.52 0 77.14 0.8 -0.25 0.18 0 9.27 -1.37 10.02 -3.02 
+10.16 -2.26 8.27 -3.21 4.51 -6.64 4.66 -7.36 10.18 -6.58 10.18 1.78 9.36 3.78 9.29 3.64 
+2.91 0.95 0 -75.82 -12.13 -2.48 -12.26 -2.23 -12.37 -1.95 -12.45 -1.69 -12.55 -1.43 -12.61 -1.17 
+1.67 -15.64 1.56 -15.7 13.41 1.17 13.37 1.43 13.28 1.71 13.17 1.97 13.09 2.24 12.96 2.5 
+-3.93 15.69 -4.21 15.59 0 75.82 6.54 2.17 9.55 2.8 8.72 4.25 7.4 6.23 7.03 6.36 
+8.86 3.38 9.64 2.32 10.2 1.76 10.87 1.13 6.95 0.7 4.77 -0.3 8.9 3.93 7.62 5.41 
+8.37 4.53 9.68 3.28 5.51 -1.95 0.41 -4.08 5.36 -16.41 -0.24 -3.71 4.55 -16.91 4.8 -11.78 
+1.54 -6.42 5.62 -3.71 14.45 -3.95 1.76 -0.04 13.89 -0.41 11.07 3.75 4.41 -0.95 13.04 -4.35 
+10.22 5.1 4.12 0.22 12.2 -3.82 8.25 7.93 6.25 10.39 5.19 11.35 4.38 11.87 -1.37 15.77 
+-0.39 2.58 3.63 11.55 2.3 12.52 -9 22.48 -1 2.15 -8.93 6.38 -7.44 5.54 -15.17 0 
+-3.62 -3.05 -7.12 -0.85 -10.88 -3.67 -4.27 -8.77 -2.89 -10.07 -2.23 -10.96 -4.51 -9.22 -5.66 -8.31 
+-7.95 -6.14 -2.45 -0.5 -15.54 4.82 -4.93 0 -1.56 6.49 4.08 9.14 6.14 7.05 6.13 6.99 
+6.48 6.67 3.67 3.6 8.61 -1.54 10.5 3.69 2.41 10.11 -6.91 16.36 -4.54 7.92 -4.19 8.38 
+-4.04 12.54 4.39 7.7 4.4 3.26 4.21 2.34 0.72 9.81 -6.1 12.87 -5.95 12.33 5.76 7.57 
+-5.14 11.83 -3.47 11.07 4.21 -1.37 19.12 -6.92 19.14 -8.18 6.14 -13.8 -18.96 8.92 5.18 -12.89 
+4.11 -12.67 18.49 -10.25 18.23 -11.41 17.95 -12.68 17.58 -13.93 17.14 -15.24 0.89 -14.69 -0.18 -14.2 
+15.43 -16.97 -1.76 -13.78 -2.64 -13.22 13.52 -18.2 12.74 -19.23 11.85 -20.16 10.89 -21.14 -5.82 -12.15 
+-6.49 -11.54 8.79 -21.38 7.75 -22.11 6.62 -22.79 5.46 -23.44 8.42 9.7 7.9 10.22 -6.36 24.64 
+6.89 11.39 -8.18 24.36 5.64 12.61 -10.03 23.87 4.21 13.76 10.72 -24.33 9.46 -25.54 4.84 13.45 
+4.05 14.28 3.15 15.17 2.14 16.15 11.48 -29.82 2.16 16.41 1.02 17.6 -0.29 18.97 -1.82 20.51 
+15.17 -36.18 -1.74 21.07 -3.62 23.09 17.03 -42.6 -3.36 23.72 -5.77 26.52 19.79 -51.91 2.67 -23.85 
+0.82 -21.16 -0.65 -18.96 8.66 -47.37 4.67 -49.96 3.88 12.2 1 -55.97 -4.56 -57.23 4.36 3.52 
+3.97 3.19 -5.1 -34.31 -7.08 -33.98 -8.96 -33.37 -10.76 -32.49 -26.24 -61.45 -31.32 -55.62 -17.41 -24.46 
+-17.42 -24.48 8.59 17.16 -16.99 -20.75 -16.97 -20.72 -17.6 -17.86 -17.6 -17.84 -35.5 -30.16 12.2 15.11 
+33.86 30.68 16.53 17.82 16.54 17.79 5.99 13.57 3.95 11.8 27.18 38.3 0.49 9 -0.73 7.63 
+21.25 38.19 -3.13 4.82 -3.91 3.86 -4.57 3.08 -5.21 2.38 -16.78 -32.33 -4.93 3.06 -5.51 2.47 
+-6.05 1.95 14.52 28.84 12.54 29.54 10.55 30.01 8.53 30.32 6.51 30.43 8.31 4.18 7.97 4.23 
+4.62 33.12 7.68 5.82 2.26 34.36 7.16 7.72 -0.42 35.39 6.34 9.9 5.84 10.55 5.32 11.28 
+4.73 12.16 P
+4.08 13.17 -7.18 44.59 -10.31 42.06 -1.41 -17.71 -2.49 -16.26 -3.43 -15.04 -8.87 34.61 -3.23 -15.3 
+-4.12 -14.29 -4.89 -13.37 6.25 -30.82 4.32 -31.96 -6.8 -10.22 -7.29 -9.66 -7.74 -9.16 -2.85 28.52 
+-7.79 -9.68 -8.27 -9.2 -8.7 -8.77 -9.11 -8.36 -2.93 24.57 -9.22 -8.64 -3.88 23.42 -9.31 -8.81 
+-4.73 22.38 -9.4 -8.9 -5.45 21.44 -6.45 20.95 8.64 9.7 -7.83 20.71 -8.81 20.09 -9.7 19.42 
+-7.29 -10.46 -7.86 -10 -9.61 18.47 -10.39 17.88 -7.51 -9.8 -8.01 -9.38 -8.5 -8.96 9.09 -17.6 
+-9.39 -8.47 7.97 -17.9 -10.18 -7.95 6.86 -18.1 6.12 -18.44 10.86 7.57 5.64 -18.99 -11.16 -7.33 
+-11.52 -6.97 -5.05 18.51 -5.79 18.23 -11.26 -7.07 -6.21 17.77 -6.88 17.5 -7.55 17.18 -10.61 -7.12 
+-7.82 16.78 -10.59 -6.86 -10.94 -6.51 -11.24 -6.18 -11.57 -5.88 6.38 -16.52 5.86 -16.71 -12.5 -5.43 
+-4.43 -1.78 -8.36 -3.34 4.73 -16.69 -13.29 -4.73 3.97 -16.71 3.47 -16.79 2.97 -16.88 -14.15 -4.12 
+2.32 -16.8 -14.52 -3.71 1.7 -16.71 -14.82 -3.32 1.17 -16.59 -15.08 -2.97 0.67 -16.4 0.26 -16.38 
+-0.16 -16.35 -0.58 -16.27 15.15 2.37 -1.04 -16.39 -15.09 -2.19 -1.43 -16.13 -15.12 -1.88 -15.25 -1.74 
+-1.61 -15.71 -1.98 -15.61 -2.37 -15.45 -2.75 -15.32 -14.64 -1.04 -2.89 -15.04 -14.5 -0.83 -2.96 -14.71 
+-14.28 -0.65 -14.37 -0.57 -14.45 -0.52 -14.5 -0.46 1.79 14.33 1.58 14.5 -15.13 -0.5 1.15 14.58 
+1 14.73 0.82 14.89 0.67 15.02 -15.88 -0.63 0.41 15.08 0.31 15.21 16.07 0.72 0.22 15.37 
+0.09 15.45 -16.14 -0.83 -0.05 15.48 -0.17 15.58 -16.11 -0.71 -0.21 15.61 -0.3 15.66 -15.97 -0.54 
+-0.26 15.69 -15.87 -0.35 p f*
+255 G
+945.9 3050.33 -11.83 -0.37 0.48 -15.52 0.45 -15.58 12.72 0.37 12.7 0.65 -1.32 15.58 -1.41 15.52 
+-11.79 -0.65 f*
+2 239 204 rG
+938.15 3153.06 -0.28 3.1 6.99 0.46 0.96 -1.17 9.05 -6.27 8.62 -1.62 7.59 3.1 8.14 0.74 
+8.12 0.91 7.27 3.19 9.01 -1.04 7.57 -1.02 2.06 -0.78 12.91 -7.49 9.36 0.26 7.01 4.49 
+8.81 1.46 1.71 0.5 6.42 2.11 7.4 3.64 7.71 3.17 8.66 2.11 6.91 4.23 10.69 0.13 
+0.29 10.98 0.74 3.75 1.96 4.12 5.01 5.47 4.82 1.57 4.02 0.75 8.53 2.76 5.14 5.52 
+6.97 4.21 9.2 0.2 3.56 0.17 16.56 -3.47 4.77 -1.87 13.87 -3.82 4.11 1.15 6.45 5.95 
+4.67 7.23 2.49 8.57 -1.08 10.61 -3.58 7.46 -6.06 7.25 -10.78 14 -0.16 0.39 -3.41 9.57 
+1.74 7.68 0.15 1.48 0.24 6.75 -2.67 4.93 -2.76 5.08 -3.79 6.9 -1.52 2.73 -5.55 9.39 
+-4.05 8.88 -0.98 8.38 0 1.08 3.19 6.95 4.04 6.99 0.43 1.24 -7.49 9.78 -6.42 5.02 
+-7.66 4.84 -2.08 5.04 -1.69 4.38 -8.99 5.21 -13.97 3.04 9.27 0.87 16.91 0.84 1.67 0.05 
+19.22 -10.57 -9.57 0.46 10.28 -10.33 9.31 -10.5 3.62 -0.48 15.2 -12.11 7.03 -11.07 -1.73 -8.92 
+-1.04 -1.39 -15.34 -2.19 -0.7 -1.17 2.17 -9.2 7.23 -10.79 0.63 -0.82 10.03 -11.72 1.48 -9.63 
+-3.02 -7.79 -0.3 -8.96 5.23 -11.84 6.7 -13.37 2.93 -8.37 2.06 -4.86 -0.02 -10.62 -3.88 -8.16 
+-4.52 -7.77 -4.9 -7.57 -5.52 -7.14 -1.69 -1.21 -11 0.17 -9.46 3.32 -16.12 6.55 -2.68 -0.35 
+-6.75 -2.64 -4.25 -7.21 -0.54 -4.23 -1.61 -5.19 -4.99 -7.14 -6.51 -5.8 -7.95 -4.32 -7.12 -2.17 
+-2.19 -0.56 -11.26 -0.18 -8.9 -2.82 -9.11 -2.41 -8.36 -3.38 -8.09 -3.85 -7.99 -4.08 -8.89 -2.69 
+-8.71 -3.02 -9.16 -2.2 -9.07 -2.39 -5.92 1.13 -5.08 1.24 -11.51 10.61 -3.08 2.3 -10.05 2.67 
+-8.46 -1.5 -8.99 0.45 -8.29 -2.25 -8.77 -0.09 -9.31 4.58 -0.19 0.18 -9.27 11.13 f*
+0 155 255 rG
+939.17 3141.41 -1.02 11.66 9.27 -11.13 0.19 -0.18 9.31 -4.58 8.77 0.09 8.29 2.25 8.99 -0.45 
+8.46 1.5 10.05 -2.67 3.08 -2.3 11.51 -10.61 5.08 -1.24 5.92 -1.13 9.07 2.39 9.16 2.2 
+8.71 3.02 8.89 2.69 7.99 4.08 8.09 3.85 8.36 3.38 9.11 2.41 8.9 2.82 11.26 0.18 
+2.19 0.56 7.12 2.17 7.95 4.32 6.51 5.8 4.99 7.14 1.61 5.19 0.54 4.23 4.25 7.21 
+6.75 2.64 2.68 0.35 16.12 -6.55 9.46 -3.32 11 -0.17 1.69 1.21 5.52 7.14 4.9 7.57 
+4.52 7.77 3.88 8.16 0.02 10.62 -2.06 4.86 -2.93 8.37 -6.7 13.38 -5.23 11.84 0.3 8.96 
+3.02 7.79 -1.48 9.63 -10.03 11.72 -0.63 0.82 -7.23 10.79 -2.17 9.2 0.7 1.17 15.34 2.19 
+1.04 1.39 1.73 8.92 -7.03 11.07 -15.2 12.11 14.96 -2.41 8.53 -11.5 7.46 -11.52 14.82 -4.36 
+3.47 -11.07 5.14 -11.83 -5.76 -7.57 5.95 -12.33 6.1 -12.87 -0.72 -9.81 -4.21 -2.34 -4.4 -3.26 
+-4.39 -7.7 4.04 -12.54 4.19 -8.38 4.54 -7.92 6.91 -16.36 -2.41 -10.11 -10.5 -3.69 -8.61 1.54 
+-3.67 -3.6 -6.48 -6.67 -6.12 -6.99 -6.14 -7.05 -4.08 -9.14 1.56 -6.49 4.93 0 15.54 -4.82 
+2.45 0.5 7.95 6.14 5.66 8.31 4.51 9.22 2.23 10.96 2.89 10.07 4.27 8.77 10.88 3.67 
+7.12 0.85 3.62 3.05 12.96 0 0 -13.37 -5.04 -1 -4.54 -0.91 -5.81 -8.05 -8.3 -4.79 
+-0.93 -0.24 -7.89 -6.16 -4.66 -9.16 -5.54 -8.53 -6.05 -8.18 -7.59 -6.71 -11.42 -2.56 -3.75 -0.3 
+-10.92 1.47 -8.57 -5.38 -0.84 -14.82 0.29 -1.09 7.9 -17.36 8.03 -2.84 13.37 -3.37 2.67 -0.13 
+12.78 1.21 10.86 -2.28 5.92 -1.93 11.7 2.93 9.84 0.61 4.55 -1.39 8.88 6.86 5.34 11.33 
+3.76 12.82 0.95 3.71 0.8 10.81 -1.97 17.73 3.47 11.24 -0.61 14.76 -0.35 0.87 -2.3 1.58 
+-14 9.25 0 13.37 2.21 0 7.44 -5.54 8.93 -6.37 1 -2.15 9 -22.48 -2.3 -12.52 
+-3.62 -11.55 0.39 -2.58 1.37 -15.77 -4.38 -11.87 -5.19 -11.35 -6.25 -10.39 -8.25 -7.93 -12.2 3.82 
+-4.12 -0.22 -10.22 -5.1 -13.04 4.35 -4.41 0.95 -11.07 -3.75 -13.89 0.41 -1.76 0.04 -14.45 3.95 
+-5.62 3.71 -1.54 6.42 -4.8 11.78 -4.55 16.91 0.24 3.71 -5.36 16.41 -0.41 4.08 -5.51 1.95 
+-9.68 -3.28 -8.37 -4.53 -7.62 -5.41 -8.9 -3.93 -4.77 0.3 -6.95 -0.7 -10.87 -1.13 -10.2 -1.76 
+-9.64 -2.32 -8.86 -3.38 -7.03 -6.36 -7.4 -6.23 -8.72 -4.25 -9.55 -2.8 -6.54 -2.17 -2.91 -0.95 
+-9.29 -3.64 -9.36 -3.78 -10.18 -1.78 -10.18 6.58 -4.66 7.36 -4.51 6.64 -8.27 3.21 -10.16 2.26 
+-10.02 3.02 -9.27 1.37 -0.18 0 -0.8 0.25 -8.71 2.84 -9.52 7.1 -0.29 3.34 f*
+255 35 0 rG
+939.63 3239.67 -0.85 2.78 3.22 0.54 3.19 0.63 3.14 0.73 5.19 -10.5 -5.58 3.41 -4.21 1.02 
+-4.1 1.39 f*
+255 135 0 rG
+942.47 3230.12 -2.84 9.55 4.1 -1.39 4.21 -1.02 5.58 -3.41 1.23 -2.61 -3.91 -0.91 -3.99 -0.79 
+-3.06 -0.5 -1.32 1.07 f*
+255 203 0 rG
+942.82 3228.91 -0.34 1.21 1.32 -1.07 -0.98 -0.15 f*
+7 193 59 rG
+945.81 3155.45 -0.96 1.17 0.79 0.04 7.74 0.72 -2.71 14.54 7.01 0.85 -0.67 2.78 1.34 -2.69 
+9.07 -8.87 8.77 -3.04 7.2 2.21 4.89 7.51 6.57 2.67 7.18 1.33 6.66 2.34 6.34 2.8 
+5.14 4.41 4.38 5.08 7.38 1.09 11.78 -6.51 1.96 0.39 8.42 0.8 7.14 2.38 6.54 3.15 
+4.43 5.13 6.58 3.08 4.47 4.93 5.45 4.1 5.03 4.38 7.47 2.78 5.12 4.5 4.62 4.84 
+4.77 4.82 0.84 0.24 7.34 2.73 6.99 3.91 2.38 6.41 3.28 5.92 0.2 7.29 2.5 6.27 
+3.02 6.12 3.34 1.54 4.58 3.01 6.14 5.43 -1.71 8.14 1.26 7.21 -1.17 7.92 -5.73 8.8 
+-4.34 8.32 -5.25 8.27 -4.47 8.07 -2.91 7.95 -6.88 8.09 -14.61 7.5 -13.28 6.45 -0.37 0.24 
+-0.11 0.2 -2.06 7.79 10.48 1.59 -9.48 7.49 16.1 2.6 7.25 0.92 13.97 -3.04 8.99 -5.21 
+1.69 -4.38 2.08 -5.04 7.66 -4.84 6.42 -5.02 7.49 -9.78 -0.43 -1.24 -4.04 -6.99 -3.19 -6.95 
+0 -1.08 0.98 -8.38 4.05 -8.88 5.55 -9.39 1.52 -2.73 0 -63.5 -11.42 -2.52 -0.04 0 
+0.02 -0.04 14.61 -17.14 8.07 4.3 0.72 8.91 -3.52 5.67 -8.44 0.82 0 63.5 3.79 -6.9 
+2.76 -5.08 2.67 -4.93 -0.24 -6.75 -0.15 -1.48 -1.74 -7.68 3.41 -9.57 0.16 -0.39 10.78 -14 
+6.06 -7.25 3.58 -7.46 1.08 -10.61 -2.49 -8.57 -4.67 -7.23 -6.45 -5.95 -4.11 -1.15 -13.87 3.82 
+-4.77 1.87 -16.56 3.47 -3.56 -0.17 -9.2 -0.2 -6.97 -4.21 -5.14 -5.52 -8.53 -2.76 -4.02 -0.75 
+-4.82 -1.57 -5.01 -5.47 -1.96 -4.12 -0.74 -3.75 -0.29 -10.98 -10.69 -0.13 -6.91 -4.23 -8.66 -2.11 
+-7.71 -3.17 -7.4 -3.64 -6.42 -2.11 -1.71 -0.5 -8.81 -1.46 -7.01 -4.49 -9.36 -0.26 -12.91 7.49 
+-2.06 0.78 -7.57 1.02 -9.01 1.04 -7.27 -3.19 -8.12 -0.91 -8.14 -0.74 -7.59 -3.1 -8.62 1.63 
+-9.05 6.27 f*
+110 210 9 rG
+957.01 3175.54 -2.84 11.52 6.27 0.98 6.21 1.13 -5.08 13.93 5.41 1.17 5.34 1.34 5.25 1.5 
+5.14 1.63 7.9 -13.35 5.71 1.97 5.6 2.15 5.47 2.32 5.29 2.47 5.14 2.63 4.97 2.8 
+4.77 2.95 -12.39 11.66 2.5 1.71 4.66 -1.63 1.39 5.06 0.2 1.3 2.02 2.82 3.86 2.82 
+0.24 -0.15 14.65 -10.31 3.71 3.69 3.45 3.82 -11.74 7.2 2.3 3.93 2.86 3.58 1.96 4.01 
+5.79 2.3 5.88 2.5 7.44 0.45 4.25 -0.04 15.32 -2.08 4.21 -0.22 4.03 4.34 4.38 4.36 
+-0.86 6.23 -3.36 6.77 -4.84 6.39 -0.58 0.56 -7.49 6.88 -8.09 6.36 -5.45 4.02 -14.62 2.49 
+-5.08 0.8 -11.52 3.71 -1.71 3.93 -2.28 3.9 -5.51 3.43 -6.32 3.02 1.71 4.49 3.73 5.34 
+3.58 0.85 -3.95 3.86 -4.25 3.73 -4.56 3.6 -5.77 -2.3 -12 -1.93 -3.49 -0.2 -9.27 -0.34 
+-3.38 2.82 -4.23 2.28 5.27 4.01 -2.13 0.98 1.18 4.62 6.9 5.56 -6.12 2.49 -4.69 1.72 
+10.41 8.94 8.04 1.13 6.01 -4.12 5.46 -4.29 0.59 -1.48 2.15 -4.12 5.79 -3.69 4.64 -4.19 
+2.91 -4.77 4 -4.23 9.46 -2.8 5.58 -1.08 3.34 3.12 9.96 3.87 9.66 6.47 2.02 1.56 
+-0.89 5.68 -2.88 6.77 -5.97 6.18 -8.11 5.52 -9.01 5.08 -9.44 4.73 -9.59 4.54 -1.46 4.58 
+-3.19 3.63 -7.95 0.57 -8.87 -1.79 -12.43 1.29 -10.52 3.02 -11.05 2.25 -11.09 2.15 -1.65 5.86 
+3.89 -0.5 12.04 -1.89 11.82 -2.41 11.55 -2.9 8.22 8.59 8.57 8.14 13.74 -4.41 1.73 1.26 
+13.82 -4.84 18.21 1.11 4.73 -2.23 -12.54 -5.75 -12.11 -6.38 -11.72 -6.95 10.09 -4.64 9.61 -5.01 
+9.14 -5.36 8.62 -5.66 8.09 -5.93 16.01 3.43 5.91 1.04 2.06 -7.79 0.11 -0.2 0.37 -0.24 
+13.28 -6.45 14.61 -7.5 6.88 -8.09 2.91 -7.95 4.47 -8.07 5.25 -8.27 4.34 -8.32 5.73 -8.8 
+1.17 -7.92 -1.26 -7.21 1.71 -8.14 -6.14 -5.43 -4.58 -3.01 -3.34 -1.54 -3.02 -6.12 -2.5 -6.27 
+-0.2 -7.29 -3.28 -5.92 -2.38 -6.41 -6.99 -3.91 -7.34 -2.73 -0.84 -0.24 -4.77 -4.82 -4.62 -4.84 
+-5.12 -4.5 -7.47 -2.78 -5.03 -4.38 -5.45 -4.1 -4.47 -4.93 -6.58 -3.08 -4.43 -5.12 -6.54 -3.15 
+-7.14 -2.38 -8.42 -0.8 -1.96 -0.39 -11.78 6.51 -7.38 -1.09 -4.38 -5.08 -5.14 -4.41 -6.34 -2.8 
+-6.66 -2.34 -7.18 -1.33 -6.57 -2.67 -4.89 -7.51 -7.2 -2.21 -8.77 3.04 -9.07 8.88 -1.34 2.69 f*
+0 255 r6
+976.65 3337.67 -3.95 1.91 6.23 4.93 4.23 -2.28 3.38 -2.82 9.27 0.34 3.49 0.2 12 1.93 
+-9.2 -3.91 -14.67 -6.82 -3.41 2.3 -3.62 2.17 -3.76 2.04 f*
+255 G
+985.7 3021.98 -12.61 -1.17 1.67 -15.64 1.56 -15.7 13.41 1.17 13.37 1.43 13.28 1.71 13.17 1.97 
+13.09 2.24 12.96 2.5 -3.93 15.69 -4.21 15.59 -12.13 -2.48 -12.26 -2.23 -12.37 -1.95 -12.45 -1.69 
+-12.55 -1.43 f*
+255 135 0 rG
+975.07 3293.32 -0.04 0.29 19.2 -0.61 -0.37 2.28 1.86 -2.36 0.11 -2.43 -1.12 -2.28 -0.26 -0.8 
+-0.46 -1.5 -11.02 1.54 1.26 1.89 2.08 1.91 -11.24 2.08 f*
+255 35 0 rG
+975.2 3292.1 -0.13 1.21 11.24 -2.08 -2.08 -1.91 -1.26 -1.89 -7.73 0.91 0.05 1.74 0 0.72 
+1.86 0.95 -1.95 0.35 f*
+189 0 54 rG
+975.21 3291.84 -0.02 0.26 1.95 -0.35 -1.86 -0.95 -0.07 1.04 f*
+0 255 r6
+982.07 3349.5 -2.84 1.24 4.01 3.38 -1.18 -4.62 f*
+255 35 0 rG
+985.09 3257.07 -4.92 3.15 1.97 1.84 1.84 1.91 0.78 0.87 15.28 -9.16 -0.37 -0.39 0.67 -0.39 
+-1.84 -2.71 -2.47 -0.44 -10.94 5.32 f*
+255 135 0 rG
+994.79 3250.67 -9.7 6.4 10.94 -5.32 2.47 0.44 1.84 2.71 9.36 -5.55 -1.93 -3.15 -5.64 -0.61 
+-7.34 5.08 f*
+984.77 3264.84 0.93 1.09 16.17 -8.2 -1.82 -2.04 -15.28 9.16 f*
+255 0 r6
+1003.43 2283.05 -13.52 1.04 16.45 2.28 16.47 2.3 31.91 6.18 25.3 3.25 -18.75 -4.32 -18.73 -4.32 
+-19.57 -3.21 -19.55 -3.21 f*
+255 203 0 rG
+992.95 3298.94 -0.41 1.21 11.46 0.43 2.99 -2.79 0.2 -2.84 2.08 -2.97 -1.06 -2.74 0.82 -2.97 
+-1.15 -2.67 -13.56 2.26 -0.33 0.04 0.46 1.5 0.26 0.8 1.13 2.28 -0.11 2.43 -1.86 2.36 
+-0.02 0.11 0 0.07 1.88 2.36 -2.78 1.13 f*
+255 135 0 rG
+993.27 3297.77 -0.33 1.17 2.78 -1.13 -1.88 -2.36 -0.57 2.32 f*
+255 203 0 rG
+1009.07 3240.61 -6.94 4.99 5.64 0.61 1.93 3.15 5.34 -3.3 4.45 -2.82 -2.56 -3.21 -5.86 -0.87 
+-4.69 -1.54 -0.56 0.43 3.25 2.56 f*
+255 135 0 rG
+1010.27 3257.09 -6.36 3.15 1.63 2.23 4.73 -5.38 f*
+255 203 0 rG
+1005.54 3262.48 0.21 0.35 11.61 -5.36 3.5 -4.78 1.65 -2.02 -2.28 1.24 -9.96 5.18 -4.73 5.38 f*
+0 255 r6
+1019.18 3227.15 -12.8 10.46 4.69 1.54 5.86 0.87 2.56 3.21 10.3 -6.79 -3.86 -2.82 -2.02 -2.82 
+-0.2 -1.3 -1.39 -5.06 -4.66 1.63 1.52 1.09 f*
+1004 3300.58 2.99 -2.79 0.2 -2.84 2.08 -2.97 -1.06 -2.74 0.82 -2.97 -1.15 -2.67 5.44 -1.02 
+-0.45 -2.95 18.67 -4.62 -0.91 -3.52 -1.15 -3.43 -1.39 -3.38 -1.62 -3.32 -1.87 -3.23 -2.06 -3.14 
+-5.17 2.49 3.5 -4.78 1.65 -2.02 13.72 -7.71 3.88 -2.28 2.3 3.93 2.86 3.58 1.96 4.01 
+5.79 2.3 5.88 2.5 7.44 0.45 4.25 -0.04 15.32 -2.08 4.21 -0.22 4.03 4.34 4.38 4.36 
+-0.86 6.23 -3.36 6.77 -4.84 6.39 -0.58 0.56 -7.49 6.88 -8.09 6.36 -5.45 4.02 -14.62 2.49 
+-5.08 0.8 -11.52 3.71 -1.71 3.93 -2.28 3.9 -5.51 3.43 -6.32 3.02 1.71 4.49 3.73 5.34 
+-13.2 -3.45 3.14 -3.32 2.87 -3.38 2.6 -3.47 2.35 -3.52 2.06 -3.58 -18.23 -1.72 -0.24 -0.11 
+1.5 -2.89 1.32 -3 1.09 -3.02 -7.53 -0.11 f*
+255 203 0 rG
+1007.62 3309.59 -0.02 0.06 0.26 0.04 -0.24 -0.11 f*
+255 0 r6
+1054.73 2294.86 -19.95 -0.89 51.95 12.38 27.73 5.03 -29.88 -8.25 -29.86 -8.27 f*
+7 193 59 rG
+1026.82 3420.12 8.48 5.84 14.46 -5.6 9.09 -3.97 -18.21 -1.11 -13.82 4.84 f*
+255 0 r6
+1086.74 2306.34 -22.85 -2.3 21.05 6.12 21.05 6.1 28.21 5.88 -23.71 -7.9 -23.75 -7.89 f*
+1166.88 2692.19 -14.56 -1.76 2.47 16.11 14.72 1.97 2.13 16.39 1.61 16.49 14.8 2.5 1.15 16.75 
+14.69 2.87 -1.23 -16.97 -1.78 -16.93 -14.54 -2.41 -2.23 -16.63 -2.78 -16.51 -14.43 -1.87 f*
+110 210 9 rG
+1160.35 3236.52 -0.02 0.04 0.04 0 11.42 2.52 8.44 -0.82 3.52 -5.67 -0.72 -8.91 -8.07 -4.3 
+-14.61 17.14 f*
+0 155 255 rG
+1146.88 3387.29 14.52 -0.13 2.8 -1.48 10.2 -9.6 -8.29 0.63 -19.22 10.57 f*
+255 0 r6
+1161.39 3387.16 1.17 -0.05 1.63 -1.43 -2.8 1.48 f*
+2 239 204 rG
+1193.34 3116.84 -0.29 1.09 0.84 14.82 8.57 5.38 10.92 -1.47 3.75 0.3 11.42 2.56 7.59 6.71 
+6.05 8.18 5.54 8.53 4.66 9.16 7.89 6.16 0.93 0.24 8.3 4.79 5.81 8.05 4.54 0.91 
+0 -17.42 -0.33 -0.5 -6.4 -3.64 -2.76 -1.58 -9.46 -4.91 -6.79 -7.45 -6.36 -7.95 -6.34 -8.14 
+-2.87 -3.06 -4.38 -4.25 -10.3 -3.95 -11.98 -1.91 -7.68 -6.9 3.86 -15.38 9.98 -2.2 10.3 -4.62 
+6.49 0.39 15.7 -2.64 1.63 -0.81 11.95 1.11 12.76 1.48 6.73 4.58 2.43 1.71 1.46 3.47 
+2.64 9.18 1.67 14.87 -2.09 17.14 -1.12 2.13 -8.59 22.89 -0.15 0.93 0 17.42 5.04 1 
+14 -9.25 2.3 -1.58 0.35 -0.87 0.61 -14.76 -3.47 -11.24 1.97 -17.73 -0.8 -10.81 -0.95 -3.71 
+-3.76 -12.82 -5.34 -11.33 -8.87 -6.86 -4.55 1.39 -9.84 -0.61 -11.7 -2.93 -5.92 1.93 -10.86 2.28 
+-12.78 -1.21 -2.67 0.13 -13.37 3.37 -8.03 2.84 -7.9 17.36 f*
+7 193 59 rG
+1208.09 3105.21 -3.86 15.38 7.68 6.9 11.98 1.91 10.3 3.95 4.38 4.25 2.87 3.06 6.34 8.14 
+6.36 7.95 6.79 7.45 9.46 4.91 2.76 1.58 0 -12.59 -4.32 -1.58 -2.17 -1.34 -6.75 -4.21 
+-7.18 -7.32 -6.47 -8.22 -6.46 -8.42 -7.14 -7.88 1.87 -14.88 9.61 0.48 11.7 -5.55 5.86 0.58 
+11.63 2.97 8.09 7.55 3.04 13.59 0.13 14.8 -2.28 3.8 -9.16 15.64 0 12.59 6.4 3.64 
+0.33 0.5 0.15 -0.93 8.59 -22.89 1.13 -2.13 2.09 -17.14 -1.67 -14.87 -2.64 -9.18 -1.46 -3.47 
+-2.43 -1.71 -6.73 -4.58 -12.76 -1.48 -11.95 -1.11 -1.63 0.81 -15.7 2.64 -6.49 -0.39 -10.3 4.62 
+-9.98 2.2 f*
+255 0 r6
+1222.59 3357.42 -11.35 13.17 18.99 -4.6 11.53 -14.15 -19.16 5.58 f*
+110 210 9 rG
+1234.53 3104.23 -1.87 14.88 7.14 7.88 6.46 8.42 6.47 8.22 7.18 7.32 6.75 4.21 0 -9.6 
+-1.06 -0.5 -7.99 -6.66 -6.57 -8.33 -5.75 -9.55 -1.5 -6.53 14.69 -9.98 1.04 -0.8 10.16 4.28 
+6.86 8.94 1.87 11.74 -7.21 10.87 -4.53 6.53 0 9.6 2.17 1.34 4.32 1.58 9.16 -15.64 
+2.28 -3.8 -0.13 -14.8 -3.04 -13.59 -8.09 -7.55 -11.63 -2.97 -5.86 -0.58 -11.7 5.55 -9.61 -0.48 f*
+0 255 r6
+1258.48 3104.02 -14.69 9.98 1.5 6.53 5.75 9.55 6.57 8.33 7.99 6.66 1.06 0.5 4.53 -6.53 
+7.21 -10.87 -1.87 -11.74 -6.86 -8.94 -10.16 -4.28 -1.04 0.8 f*
+255 0 r6
+1267.99 3309.59 -7.42 13.97 19.32 -8.72 7.23 -14.75 -19.12 9.5 f*
+1401.87 3161.89 -0.02 15.84 15.32 -20.7 -0.43 16.62 15.32 -22.34 14.36 -24.02 -1.32 -16.23 -2.38 -15.34 
+-3.32 -14.52 -11.87 23.11 -12.89 21.86 1.8 15.06 -14.56 20.66 f*
+1537.63 3106.29 -16.19 51.15 12.5 -33.79 15.85 -54.88 11.35 -59.25 1.71 -27.34 -9.85 64.39 -15.37 59.72 f*
+Q q
+0 72 3400 0 0 4128 ^ Y
+255 G
+274.39 2931.45 0 -24.84 0.26 -10.22 0.49 -11.31 0.7 -11.3 0.89 -11.29 1.09 -11.28 1.28 -11.25 
+1.48 -11.24 1.67 -11.2 1.87 -11.17 2.06 -11.13 2.25 -11.09 2.43 -11.05 2.65 -11.02 2.82 -10.96 
+3.04 -10.91 3.21 -10.85 3.38 -10.8 3.61 -10.75 3.77 -10.67 3.95 -10.62 4.14 -10.52 4.35 -10.46 
+4.51 -10.39 4.69 -10.31 4.86 -10.22 5.05 -10.14 5.21 -10.04 5.4 -9.94 5.55 -9.86 5.75 -9.76 
+5.91 -9.66 6.08 -9.55 6.25 -9.44 6.4 -9.33 6.58 -9.23 6.72 -9.09 6.88 -9 7.03 -8.86 
+3.61 -4.36 3.6 -4.38 7.34 -8.59 3.75 -4.26 3.75 -4.23 3.82 -4.18 3.82 -4.17 3.88 -4.11 
+3.89 -4.12 7.94 -8.07 4.04 -3.97 4.01 -3.95 8.21 -7.81 4.19 -3.82 4.17 -3.82 8.46 -7.51 
+4.3 -3.67 4.29 -3.69 8.73 -7.21 4.42 -3.52 4.43 -3.53 4.5 -3.45 4.49 -3.43 4.54 -3.39 
+4.55 -3.36 4.6 -3.28 4.6 -3.3 4.67 -3.21 4.64 -3.19 4.73 -3.15 4.7 -3.12 4.78 -3.04 
+4.75 -3.04 4.84 -2.95 4.82 -2.96 4.86 -2.88 4.88 -2.87 4.92 -2.8 4.91 -2.78 4.97 -2.71 
+4.97 -2.69 5.01 -2.63 5.04 -2.61 5.06 -2.54 5.05 -2.52 5.1 -2.45 5.1 -2.43 5.17 -2.34 
+5.14 -2.34 10.38 -4.52 5.21 -2.17 5.23 -2.17 5.25 -2.09 5.27 -2.06 5.29 -2 5.3 -1.97 
+5.34 -1.89 5.32 -1.89 10.72 -3.6 5.41 -1.7 5.38 -1.71 10.85 -3.21 5.45 -1.52 5.45 -1.5 
+5.49 -1.43 5.47 -1.41 10.98 -2.65 5.54 -1.22 5.51 -1.23 5.55 -1.12 5.53 -1.13 5.56 -1.02 
+5.55 -1.04 11.16 -1.87 5.6 -0.84 5.59 -0.82 11.2 -1.48 5.62 -0.65 5.62 -0.63 5.64 -0.57 
+5.62 -0.52 5.64 -0.45 5.64 -0.43 11.28 -0.7 5.64 -0.26 5.64 -0.24 5.66 -0.15 4.39 -0.11 
+25.15 0 4.38 0.11 5.66 0.15 5.64 0.24 5.64 0.26 11.29 0.7 5.64 0.43 5.64 0.45 
+5.62 0.55 5.64 0.54 5.62 0.63 5.6 0.65 5.62 0.74 5.6 0.74 5.6 0.82 5.57 0.84 
+11.16 1.87 5.58 1.04 5.55 1.02 5.54 1.13 5.55 1.13 5.51 1.23 5.51 1.22 5.51 1.32 
+5.49 1.33 5.49 1.41 5.47 1.43 5.45 1.5 5.45 1.52 10.85 3.21 5.39 1.71 5.38 1.7 
+5.38 1.8 5.36 1.8 5.32 1.89 5.34 1.89 5.3 1.97 5.29 2 5.27 2.06 5.25 2.09 
+5.23 2.17 5.21 2.17 10.37 4.52 5.17 2.34 5.14 2.34 5.1 2.45 5.1 2.43 5.05 2.52 
+5.06 2.54 5.01 2.61 5.04 2.63 4.97 2.69 4.97 2.71 4.9 2.78 4.93 2.8 4.88 2.87 
+4.86 2.88 4.84 2.96 4.82 2.95 4.75 3.04 4.77 3.04 4.71 3.14 4.73 3.13 4.67 3.19 
+4.64 3.21 4.6 3.3 4.6 3.28 4.56 3.36 4.53 3.39 4.5 3.43 4.49 3.45 4.43 3.53 
+4.43 3.52 8.72 7.21 4.3 3.69 4.29 3.67 8.47 7.51 4.19 3.82 4.17 3.82 8.2 7.81 
+4.04 3.95 4.01 3.97 7.95 8.07 3.88 4.12 3.89 4.11 3.82 4.17 3.82 4.18 3.75 4.23 
+3.75 4.26 7.34 8.59 3.61 4.38 3.6 4.36 7.04 8.86 6.88 9 6.73 9.09 6.58 9.23 
+6.4 9.33 6.25 9.44 6.08 9.55 5.9 9.66 5.73 9.76 5.58 9.86 5.4 9.94 5.21 10.04 
+5.06 10.14 4.86 10.22 4.69 10.31 4.51 10.39 4.34 10.46 4.14 10.52 3.95 10.62 3.78 10.67 
+3.61 10.75 P
+3.39 10.8 3.21 10.85 3.04 10.91 2.82 10.96 2.64 11.02 2.43 11.05 2.25 11.09 2.06 11.13 
+1.87 11.17 1.67 11.2 1.47 11.24 1.28 11.25 1.09 11.28 0.89 11.29 0.7 11.3 0.5 11.31 
+0.26 10.22 0 24.84 -0.26 10.22 -0.5 11.3 -0.7 11.3 -0.89 11.29 -1.09 11.29 -1.28 11.24 
+-1.47 11.24 -0.29 1.87 0 -133.57 -0.07 -2.09 -0.08 -2.12 -0.07 -2.15 -0.11 -2.16 -0.11 -2.2 
+-0.11 -2.23 -0.11 -2.28 -0.16 -2.32 -0.13 -2.34 -0.17 -2.37 -0.35 -4.02 -0.41 -4.03 -0.41 -4.06 
+-0.45 -4.1 -0.5 -4.14 -0.41 -3.3 -0.41 -3.32 -0.45 -3.36 -0.46 -3.38 -0.5 -3.41 -0.26 -1.99 
+-0.57 -4.08 -0.28 -2.09 -0.3 -2.12 -0.61 -3.61 -0.62 -3.62 -0.68 -3.66 -0.67 -3.69 -0.71 -3.71 
+-0.76 -3.75 -0.78 -3.8 -0.8 -3.82 -0.82 -3.84 -0.87 -3.86 0.22 1.43 0.21 1.39 0.09 0.7 
+0.85 3.91 0.8 3.88 0.76 3.82 0.74 3.77 0.7 3.73 0.49 2.84 0.5 2.8 0.48 2.78 
+0.43 2.75 0.45 2.71 0.42 2.63 0.39 2.61 0.39 2.58 0.39 2.56 0.34 2.54 0.35 2.55 
+0.32 2.54 0.61 4.99 0.28 2.45 0.48 3.99 0.43 3.93 0.42 3.88 0.39 3.87 0.34 3.82 
+0.61 6.49 0.5 6.45 0.46 6.36 0.36 6.3 0 133.57 -1.39 9.33 -1.87 11.18 -2.06 11.13 
+-2.25 11.09 -2.43 11.07 -2.64 11 -2.82 10.96 -3.04 10.91 -3.21 10.85 -2.61 8.27 0 -13 
+0.89 -2.65 0.89 -2.71 0.87 -2.78 0.89 -2.84 0.91 -2.93 0.54 -2.17 0.54 -2.14 0.52 -2.12 
+0.5 -2.11 0.48 -2.09 -1.34 5.05 -1.39 4.97 -1.41 4.91 -1.43 4.84 -1.46 4.78 0 13 
+-0.78 2.54 -3.61 10.74 -3.78 10.68 -3.95 10.61 -2.04 5.19 0 -12.48 1.22 -3.17 1.24 -3.21 
+1.21 -3.28 1.24 -3.29 1.21 -3.37 -0.93 2.73 -0.95 2.74 -0.96 2.71 -0.98 2.73 -1 2.73 
+1.39 -3.64 1.34 -3.69 1.37 -3.73 1.34 -3.8 1.32 -3.82 1.04 -3.28 1 -3.23 0.95 -3.19 
+0.93 -3.17 0.91 -3.15 -1.15 3.67 -1.15 3.65 -1.19 3.63 -1.2 3.58 -1.21 3.58 -1.37 3.93 
+-1.39 3.89 -1.41 3.86 -1.43 3.82 -1.41 3.78 0 12.48 -2.11 5.34 -4.34 10.46 -4.51 10.39 
+-4.69 10.3 -4.86 10.22 -5.06 10.13 -5.21 10.05 -0.76 1.37 0 -20.86 1.09 -1.82 1.09 -1.84 
+1.08 -1.89 0.93 -2.3 0.89 -2.28 0.87 -2.22 -1.07 1.7 -1.04 1.67 -1.02 1.63 -0.91 2.4 
+-0.93 2.46 -0.98 2.5 0 20.86 -0.7 1.3 0 -23.74 3.34 -7.08 1.61 -3.53 0.46 -1.29 
+0.43 -1.25 0.41 -1.24 1.48 -3.78 0.7 -1.85 -0.79 1.41 -0.8 1.39 -0.79 1.37 -1.06 2.24 
+-1.06 2.21 -1.09 2.23 -1.08 2.82 -1.13 2.89 -1.15 2.91 0.17 0.2 0.34 0.35 0 23.74 
+-3.95 7.27 -5.58 9.85 -3.82 6.53 0 -39.97 1.34 -1.82 1.37 -1.89 1.39 -1.93 0.66 -0.74 
+0.67 -0.75 0.67 -0.79 1.61 -3.52 1.56 -3.5 1.54 -3.49 -0.56 0.71 -0.57 0.7 -0.54 0.7 
+-1.09 1.65 -1.06 1.63 -1.09 1.58 -1.57 2.72 -1.58 2.69 -1.58 2.63 -0.39 1.15 -0.39 1.13 
+-0.39 1.15 0 39.97 -1.91 3.23 -3.23 5.29 0 -46.74 1.48 -2.21 1.48 -2.26 2.76 -5.29 
+2.73 -5.36 -2.41 3.88 -0.71 1.13 0 -1.84 1.84 -2.97 1.83 -3.02 2.04 -4.43 2.02 -4.43 
+2.54 -5.1 p
+2.54 -5.16 0.65 -2.17 0.65 -2.15 2.28 -5.54 2.21 -5.51 1.61 -4.56 1.56 -4.51 0.59 -2.41 
+0.56 -2.39 0.55 -2.36 0.54 -2.35 0.22 -1.65 0.19 -1.65 -0.83 1.19 -0.84 1.2 0.2 -1.62 
+0.18 -1.63 -0.76 1.63 -0.79 1.58 -0.26 1.99 -0.3 2.02 -0.61 2.71 -0.65 2.75 -0.93 3.37 
+-1 3.41 -0.52 2.02 -0.04 0.2 0 -27.11 0.67 -0.28 0.7 -0.3 1 -0.13 1.06 -1.69 
+1.08 -1.71 1.78 -4.32 1.76 -4.36 -0.07 1.45 -0.04 1.45 0.67 -0.17 0.67 -0.2 -0.67 3.19 
+-0.71 3.23 0.78 -0.89 0.78 -0.93 1.58 -4 1.59 -4.05 0.52 -2.39 0.5 -2.39 0.48 -2.41 
+0.45 -2.39 1.15 -2.69 1.15 -2.74 1.22 -2.08 1.21 -2.12 0.48 -0.07 0.5 -0.07 1.63 -4.66 
+1.63 -4.71 1.26 -3.06 1.26 -3.13 -0.48 3.43 -0.52 3.49 1.28 -4.51 1.24 -4.52 0.52 1.13 
+-0.34 3.47 1.06 -4.23 1.05 -4.23 0.3 0.22 0.28 0.2 0.02 1.52 0.02 1.56 1.24 -4.71 
+1.2 -4.73 0.41 -3.23 0.39 -3.17 -0.82 2.28 -0.31 0.87 0 -57.33 0.55 -0.87 0.54 -0.89 
+0.91 -4.69 0.89 -4.73 0.75 -3.82 0.72 -3.84 0.76 -3.64 0.74 -3.69 0.78 -4.43 0.78 -4.49 
+0.5 -4.45 0.48 -4.46 0.61 -4.8 0.59 -4.84 0.32 -0.78 0.35 -0.8 0.19 2.73 0.2 2.75 
+0.48 -2.34 0.48 -2.39 0.5 -2.17 0.5 -2.19 0.32 -4.78 0.29 -4.82 0.37 -4.46 0.33 -4.5 
+0.19 -5.66 0.15 -5.68 0.3 -3.52 0.3 -3.56 0.2 -2.84 0.2 -2.89 0.02 -4.88 0 -4.9 
+-0.19 -5.21 -0.24 -5.21 0.07 -3.11 0.04 -3.12 -0.22 -6.55 0.24 -2.72 0.24 -2.75 0.33 -0.39 
+0.34 -0.39 -0.08 -4.02 -0.09 -4.05 0.07 -3.21 0.05 -3.25 0.11 -2.32 0.09 -2.37 -0.5 -4.58 
+-0.52 -4.56 -0.06 -1.71 -0.07 -1.74 -0.09 -1.73 -0.26 -2.5 -0.26 -2.52 -0.28 -2.52 -0.48 -3.71 
+-0.48 -3.75 -0.54 -3.75 -0.5 -3.76 -0.54 -3.78 -0.57 -3.77 1.13 5.2 0.57 2.63 -0.26 -2.58 
+-0.29 -2.61 -0.29 -2.63 -0.39 -3.95 -0.22 -1.97 -0.76 -3.93 -0.8 -3.93 -0.83 -3.93 -0.63 -3.25 
+-0.65 -3.26 -0.67 -3.28 -0.52 -2.78 -0.52 -2.8 -0.54 -2.82 -0.18 -1.5 -0.34 -3.04 -0.96 -4.19 
+-0.98 -4.21 -1.02 -4.23 -1.04 -4.32 -1.08 -4.34 -1.13 -4.36 -1 -3.61 -1.02 -3.6 -1.06 -3.62 
+-1.5 -4.93 -1.54 -4.93 -1.61 -4.92 -1.2 -3.37 -1.2 -3.34 -1.21 -3.32 -1.74 -4.71 -1.75 -4.67 
+-1.81 -4.66 -1.58 -4.13 -1.63 -4.12 -1.65 -4.1 -2 -4.82 -2.04 -4.8 -2.08 -4.77 -1.8 -4.08 
+-1.82 -4.08 -1.87 -4.06 -1.13 -2.15 -1.11 -2.15 -1.13 -2.12 -1.8 -3.52 -1.8 -3.5 -1.82 -3.47 
+-1.84 -3.43 -1.85 -3.39 -1.86 -3.36 -2.09 -3.56 -2.08 -3.54 -2.08 -3.47 -1.65 -2.86 -3.34 -5.69 
+-3.78 -5.99 -1.88 -2.93 -1.57 -2.39 -1.56 -2.36 -1.56 -2.32 -1.45 -2.08 -1.46 -2.06 -1.45 -2.04 
+-1.52 -2.08 -1.49 -2.06 -1.5 -2.04 -1.26 -1.26 -0.63 -0.61 -1.43 -1.82 -1.41 -1.8 -1.41 -1.78 
+-1.52 -2.04 -3.04 -4 -1.82 -2.34 -1.82 -2.3 -1.82 -2.25 -3.28 -4.1 -3.3 -4.02 -1.64 -1.89 
+-1.67 -1.84 -2.58 -2.91 -2.59 -2.87 -2.99 -3.58 -3 -3.52 -2.87 -3.21 -2.84 -3.13 -2.65 -3.05 
+-2.66 -2.99 -2.46 -2.67 -2.45 -2.63 -0.65 -0.2 -0.65 -0.21 1.21 2 1.17 1.97 0.41 1.04 
+0.39 1.07 p
+-0.41 -0.13 -0.43 -0.12 -2.3 -1.35 -1.73 -1 -2.37 -2.15 -2.37 -2.1 2.11 2.69 4.12 5.38 
+2 2.69 2.54 2.95 2.54 2.97 -0.37 0.11 -0.36 0.13 3.54 4.3 3.51 4.36 -1.9 -1.82 
+-1.91 -1.8 -0.95 -0.65 -0.96 -0.63 -1.32 -0.98 -1.31 -0.93 2.61 3.95 1.74 2.54 1.73 2.52 
+0.85 1.49 0.82 1.5 0.82 1.58 0.8 1.59 -1.3 -0.83 1.95 2.71 1.93 2.69 0.74 1.52 
+0.71 1.52 1.91 2.97 1.89 2.95 1.87 2.84 1.82 2.87 1.71 2.49 1.67 2.5 1.15 1.34 
+1.15 1.37 2.12 3.28 2.09 3.28 2.04 3.39 2 3.38 1.67 3.17 1.65 3.15 -0.35 0.46 
+-0.32 0.43 1.08 1.3 1.11 1.32 1.87 2.63 1.87 2.67 1.46 2.54 1.45 2.56 1.83 3.45 
+1.75 3.45 -2.12 -3.28 -2.17 -3.26 -3.64 -5.29 -0.02 0.63 0 0.61 -0.37 0.07 -0.37 0.04 
+1.08 1.58 1.06 1.59 0.76 0.54 0.76 0.58 1.41 2.15 1.41 2.17 2.13 3.38 2.08 3.39 
+1.8 2.52 1.78 2.54 3.04 5.49 3 5.55 -1.43 -2.06 -1.43 -2.02 -2.06 -3.25 -2.08 -3.23 
+-1.11 -1.11 -1.13 -1.11 -1.41 -1.76 -1.43 -1.71 -1.43 -1.73 -1.43 -1.72 -1.78 -2.52 -1.75 -2.49 
+1.66 3.12 1.65 3.15 1.61 2.97 1.59 2.97 1.59 3.14 1.54 3.15 1.87 3.6 1.82 3.61 
+1.3 4.77 1.59 2.71 1.61 2.73 0.67 2.13 0.7 2.09 0.56 3.08 0.48 3.3 -0.36 0.43 
+-0.37 0.45 0.57 2 0.55 2 0.2 1.47 0.21 1.48 -0.37 0.33 -0.34 0.32 -0.37 0.31 
+-0.37 0.32 -0.52 0.39 -0.5 0.39 -0.74 -0.26 -0.74 -0.24 -0.89 -0.76 -0.89 -0.73 -1.24 -1.26 
+-1.22 -1.25 -0.7 -0.3 -0.67 -0.29 -0.74 -0.2 -0.71 -0.19 -0.7 1.65 -0.82 -0.79 -0.84 -0.78 
+-1.54 -1.78 -1.52 -1.76 -0.91 -0.71 -0.93 -0.72 -1.11 -0.69 -1.11 -0.67 -3.12 -5.77 -1.39 -1.7 
+-1.37 -1.7 -0.45 0.24 -0.35 0.22 0 -49.2 0.7 -0.7 -1.13 -2.69 -1.17 -2.71 -1.08 -0.89 
+-1.09 -0.87 0.09 2.3 1.11 2.02 1.09 2.02 0.76 0.76 0.74 0.76 0 49.2 -0.08 0.04 
+-0.46 0.24 -1.09 0.55 -0.62 0.3 -1.13 0.52 -1.13 0.48 -0.93 -0.24 -0.93 -0.21 -0.57 -0.33 
+-0.56 -0.3 -3.09 -4.3 -0.43 0.16 -0.41 0.17 -1.39 -1.61 -1.39 -1.58 -0.98 -1.24 -1 -1.22 
+-0.59 0.22 -0.61 0.24 -1.21 0.44 -0.52 0.17 -0.54 0.2 -0.15 1.09 -0.15 1.07 0.91 2.71 
+0.91 2.69 -0.13 0.96 -0.15 0.95 3.12 6.08 0.7 0.3 0.7 0.33 0.93 1.26 0.95 1.23 
+0.74 1.74 0.76 1.75 1.59 3.06 1.58 3.08 2.82 6.12 0.48 1.78 0.45 1.76 0.78 2.23 
+0.76 2.24 0.83 2.64 0.78 2.65 0.89 2.64 0.87 2.65 1.06 2.64 1.04 2.65 0.76 2.21 
+0.76 2.24 0.55 2.62 0.52 2.61 0.39 2.59 0.37 2.56 0.78 2.17 0.74 2.17 1.69 6.99 
+-0.08 3.23 1.15 5.17 0.11 -4.02 1.98 9.42 -0.57 -4.17 0.11 -3.34 1.93 6.29 0.55 4.19 
+0.54 4.25 1.15 5.99 1.13 5.23 2.37 4.91 1.06 4.47 0.5 4.19 1.47 4.67 1.69 4.82 
+-0.34 -5.04 1.67 4.73 2.06 3.39 0.83 1.21 0.8 1.21 1.87 5.07 1.74 3.39 0.91 1.25 
+0.89 1.29 0.74 0.37 1.48 0.78 0.71 0.39 1.07 2.3 1.04 2.32 0.71 0.41 0.74 0.42 
+0.91 2.23 p
+0.89 2.23 0.83 0.5 0.82 0.48 0.98 1.48 0.95 1.5 0.91 0.98 0.89 1 0.84 2.3 
+0.85 2.34 1.47 4.68 0.71 3.23 0.7 3.25 0.85 2.89 0.82 2.88 0.09 1.98 0.11 1.97 
+0.21 4.78 0.79 2.97 0.74 3.02 0.78 3.52 0.79 3.53 0.09 -3.23 0.09 -3.25 0.13 -2.28 
+0.13 -2.3 1.61 7.12 -0.32 1.65 -0.3 1.61 0.41 3.28 0.39 3.3 1.35 -1.65 0.47 2.93 
+0.44 2.93 0.26 3.21 0.22 3.23 0.71 3.3 0.71 3.32 0.26 5.34 1.7 1.95 0.2 2.37 
+0.21 2.38 0.61 1.26 0.61 1.28 0.28 2.48 0.28 2.49 0.72 0.41 0.7 0.43 0.52 -2.08 
+0.5 -2.08 0.41 -1.63 0.41 -1.65 -0.02 -3.27 -0.04 -3.3 0.63 2.91 0.61 2.95 0.48 0.61 
+0.48 0.63 0.68 -1.32 0.65 -1.32 0.22 3.08 0.2 3.09 -0.59 1.45 -0.58 1.43 0.43 3.48 
+0.43 3.51 0.13 3.04 0.11 3.04 0.52 1.45 0.52 1.47 -0.29 2.48 -0.3 2.45 0.13 3.28 
+0.11 3.28 0.43 3.91 0.39 3.93 0.68 1.28 1.35 2.61 0.65 1.32 -0.02 3.97 -0.09 3.95 
+-0.58 2.13 -0.61 2.11 1.47 0.61 1.39 -2.64 0.59 0.65 0.56 0.65 0.65 0.02 0.63 0.02 
+0.63 0.07 0.61 0.08 0.42 2.41 0.37 2.43 0.5 -2.49 0.5 -2.52 0 4.64 -0.05 4.67 
+0.67 -1.43 0.68 -1.46 0.04 -3.84 0 -3.82 0.24 -3.96 0.22 -3.97 -0.52 -1.2 -0.52 -1.17 
+0.48 -7.55 0.18 -3.17 0.13 -3.19 -0.13 -2.97 -0.16 -2.97 -0.07 -3.5 -0.08 -3.47 0.91 -3.61 
+0.43 -0.61 0.41 -0.61 0.2 -3.62 0.16 -3.64 0.74 1.21 0.71 1.22 0.42 -1.96 0.39 -1.98 
+0.3 -1.5 0.28 -1.52 0.54 -1.13 0.52 -1.15 0.45 -0.65 0.43 -0.65 0.15 -3.16 0.13 -3.17 
+0.43 -2.67 0.39 -2.69 0.5 1.37 0.5 1.39 1.09 5.81 0.11 4.41 0.08 4.39 0.26 4.08 
+0.24 4.1 0.2 4.82 0.18 4.82 -0.02 4.55 -0.07 4.51 -0.09 4.56 -0.11 4.53 -0.3 4.17 
+-0.32 4.14 -0.28 4.32 -0.33 4.29 -0.29 4.49 -0.32 4.47 -0.43 5.14 -0.48 5.12 -0.33 2.78 
+-0.34 2.78 -0.52 4.21 -0.57 4.19 -0.22 3.71 -0.24 3.71 -0.75 4.84 -0.8 4.79 -0.43 4.45 
+-0.48 4.43 0 57.33 -0.52 1.41 -0.06 -1.21 -0.09 -1.22 -0.17 -2.99 -0.26 -2.82 -0.13 -1.15 
+-0.13 -1.13 -0.76 2.37 -0.78 2.37 -0.78 1.43 -0.76 1.41 -0.93 1.69 -0.93 1.67 -0.99 2.63 
+-1 2.6 -1.22 3.23 -1.23 3.19 -0.11 -0.95 -0.13 -0.91 -0.5 -0.16 -0.54 -0.15 -0.37 0.13 
+-0.37 0.11 0.09 -1.84 0.07 -1.82 1.04 -4.52 0.98 -4.54 0.58 -2.84 0.55 -2.84 0.35 -2.7 
+0.3 -2.66 0.91 -2.78 0.91 -2.8 0.48 -2.54 0.5 -2.54 0.37 -3.93 0.35 -3.91 -0.45 -0.48 
+-0.46 -0.5 -0.13 -1.56 -0.16 -1.57 -0.3 -0.91 -0.3 -0.93 -0.71 1.26 -0.72 1.22 -0.71 1.56 
+-0.71 1.54 -0.7 1.7 -0.67 1.67 -0.05 -2.39 -0.04 -2.35 -0.22 -1.78 -0.21 -1.76 0.2 -3.53 
+0.18 -3.5 -0.26 -1.67 -0.28 -1.65 -0.79 5.08 -0.82 5.1 -0.63 3.71 -0.59 3.26 0 -89.47 
+0.33 -1.33 0.32 -1.34 -0.24 -3.84 -0.26 -3.8 -0.41 0.48 -0.43 0.5 -1.22 -2.3 -0.02 3.79 
+-0.04 3.8 0.52 -0.29 0.54 -0.3 0.46 2.3 0.45 2.32 0 89.47 -0.08 0.45 0.02 2.09 
+0.02 2.11 p
+-1 3.02 -1 2.97 -1.17 3.56 -1.21 3.51 -1.23 3.26 -1.28 3.21 -0.74 1.13 -0.76 1.13 
+-0.63 0.08 -0.61 0.04 -0.24 -0.32 0 -22.27 0.95 -2.71 0.96 -2.74 0.91 -4.25 0.87 -4.25 
+0.46 -3.91 0.41 -3.91 -0.93 3.86 -0.93 3.82 -0.73 3.71 -0.19 1.02 0 -27.54 0.65 -3.14 
+0.65 -3.19 0.11 -3.17 0.09 -3.16 -0.54 3.38 -0.56 3.37 -0.2 2.95 -0.19 2.97 0 27.54 
+-0.57 2.67 -0.59 3.34 -0.61 3.35 0 22.27 -0.24 -0.39 -0.5 -0.7 -1.3 -0.39 -0.48 -0.8 
+-0.35 -0.57 0 -94.68 -0.04 -2.76 -0.29 -2.54 -0.33 -2.54 -0.39 -2 -0.41 -1.97 -0.39 -2.02 
+-0.43 -2 -0.3 -2.95 -0.33 -2.93 -0.15 -3.76 -0.2 -3.73 -0.48 -1.95 -0.5 -1.91 -0.55 -1.39 
+-0.54 -1.36 -0.15 4.14 -0.19 4.14 0.09 2.45 0.06 2.45 0.37 1.71 0.35 1.74 0.86 3.95 
+0.05 4.86 0.5 2.21 0.48 2.2 0.54 1.69 0.52 1.67 0.44 1.61 0.41 1.58 0.5 1.07 
+0.5 1.08 0 91.93 -0.15 -0.24 -0.34 -1.22 -0.35 -1.2 -0.63 0.31 -0.63 0.28 -0.63 0.05 
+0 -82.54 0.18 -3.04 0.15 -3.02 -0.59 -1.26 -0.61 -1.26 -0.12 2.35 -0.16 2.37 0.59 1.93 
+0.56 1.93 0 82.54 -0.04 0 -0.65 0.04 -1.58 1.59 0.83 -4.3 0.78 -4.27 -0.34 -2.43 
+-0.63 1.76 0 -90.11 -0.76 -2.71 -0.76 -2.7 -0.09 2.32 -0.11 2.3 0.87 0.39 0.84 0.39 
+0 90.11 -0.2 0.56 -0.82 2.28 -0.67 1.76 -0.65 1.71 -0.8 0.74 -0.8 0.72 -0.3 -0.43 
+-0.33 -0.43 -0.2 1.67 -0.21 1.64 0.34 1.02 0.33 1 -0.35 2.69 -0.39 2.71 0.18 1.79 
+0.17 1.8 -0.63 2.13 0 -26.95 0.93 -1.5 0.92 -1.52 0.71 -2.41 0.71 -2.39 -0.7 0.08 
+-0.37 0.05 0 -85.83 -0.62 -2.3 -0.63 -2.28 -0.54 -2.08 -0.57 -2.06 -0.78 -3.39 -1.3 -0.99 
+-0.54 -1.37 -0.56 -1.37 -0.65 -0.48 -0.67 -0.48 -0.59 -0.87 0 -7.29 1.52 -1 0.73 -1.58 
+0.74 -1.63 -1.04 -4.51 -0.7 1.11 -0.67 1.11 -0.5 0.37 -0.52 0.37 -0.65 -0.84 -0.65 -0.87 
+-0.37 1.52 -0.37 1.49 0.58 1.34 0.61 1.37 0.65 0.88 0.63 0.89 0 7.29 -0.04 -0.04 
+-0.61 -0.91 -1.48 0.04 -0.56 -1.39 -0.59 -1.37 -0.61 -1.32 -0.59 -1.3 -1.02 -2.32 -0.91 -3.23 
+-1.26 -2.54 -1.97 -0.59 -1.37 -1.67 -0.29 5.45 0.96 3.19 1.54 -0.05 1.54 2.02 1.2 0.63 
+-1.15 3.55 1.93 0.59 1.48 2.11 0.84 -0.87 0.82 -0.89 0.48 2.26 0.45 2.28 0.52 1.8 
+0.5 1.8 0.71 0.07 0.72 0.04 0.71 0.02 0.72 0 1.08 2.78 0.67 -0.59 0.65 -0.61 
+0.24 3.77 0.2 3.8 0.98 0.59 0.95 0.56 0 85.83 -0.35 0.04 -1.52 -2.64 -0.46 -0.83 
+-0.48 -0.82 -0.11 -1.61 -0.12 -1.63 -0.79 -0.11 -0.8 -0.11 -0.33 2.78 -0.37 2.75 0.43 1.78 
+0.39 1.8 0.21 2.02 0.18 2.04 0.7 -0.29 0.65 -0.26 0.29 1.37 0.25 1.39 0 26.95 
+-0.39 1.32 -1.04 3.43 0.24 -2.8 0.21 -2.75 0.02 -2 0.02 -1.98 -0.35 -2.99 -0.65 0.21 
+-0.65 0.2 -0.85 2.39 -0.26 0.74 0 -42.86 1.52 -3.69 0.13 -2.26 0.11 -2.25 -0.62 -0.35 
+-0.61 -0.34 -1.78 3 0.13 2.16 0.11 2.2 0.52 0.78 0.5 0.76 0 42.86 -0.61 1.65 
+-0.31 -0.76 p
+-0.28 -0.76 -1.13 -1.56 -0.87 4.02 -0.91 4.03 -0.15 2.63 -0.2 2.65 -0.66 2.91 -0.34 1.5 
+0 -35.98 0.95 -0.26 0.96 -0.24 -0.5 -2.28 -0.5 -2.25 -0.91 5.04 0 35.98 -0.35 1.43 
+0.16 2.04 0.11 2.06 0.83 -0.59 0.84 -0.58 0.09 2.11 0.08 2.14 1.55 -2.97 1.54 -3.02 
+1.11 -3.43 1.09 -3.45 1.13 -2.41 1.13 -2.43 0.45 0.26 0.43 0.28 1.13 -2.48 1.11 -2.49 
+0.79 -0.72 0.8 -0.7 0.18 2.56 -0.85 3.32 -0.87 3.34 -1.47 5.77 -0.93 3.89 -0.96 3.89 
+-0.21 2.21 -0.22 2.24 -1.02 3.34 -1.04 3.32 -0.71 3.84 -0.76 3.84 0.56 0.23 0.54 0.24 
+1.48 0.09 0.32 0.71 0.33 0.74 0.3 0.82 0.28 0.8 -0.12 1.54 -0.15 1.56 0.5 0.57 
+0.48 0.54 0.29 0.78 0.26 0.8 0.26 0.78 0.29 0.81 0.26 0.54 0.25 0.56 0.87 1.17 
+0 1.37 -0.02 1.37 1.82 1.13 0 27.11 -0.5 1.84 -0.54 2.02 -0.56 2.02 -2.87 6.77 
+-2.95 6.73 -0.67 2.14 -0.7 2.18 -2.82 5.01 -0.5 0.87 0 -78.73 1.02 -1.29 1 -1.28 
+0.24 -1.93 0.24 -1.95 -1.21 1.26 -1.21 1.24 -0.02 1.97 -0.04 1.98 0 78.73 -2.32 4.06 
+-0.61 1.71 0 -109.55 0.22 -2.43 0.21 -2.41 -0.65 0.11 -0.67 0.13 -0.22 2.14 -0.24 2.17 
+0.67 0.15 0.67 0.13 0 109.55 -0.78 2.21 -1.43 3.97 0 1.84 -1.69 2.67 -2.24 3.28 
+-2.25 3.21 0.35 -1.17 0.32 -1.17 -0.63 0.02 -0.65 0 -0.63 -0.06 -0.61 -0.07 0.39 1.56 
+0.66 1.04 0.39 -0.07 0.41 -0.09 0.87 0.96 0 46.74 -2.67 4.36 -2.25 3.54 0 -176.2 
+0.84 -2.6 0.82 -2.61 1 -1.43 0.98 -1.41 -0.31 2.97 -0.34 3 1.08 -2.56 1.06 -2.58 
+0.37 -2.52 0.35 -2.49 0.78 -1 0.79 -1.02 -0.2 -1.43 -0.21 -1.41 1.91 -5.68 0.87 -2 
+0.85 -1.99 2.34 -3.04 -0.91 0.46 -0.89 0.43 -0.97 1.24 -0.96 1.21 -0.76 2.45 -0.78 2.45 
+-0.87 1.93 -0.89 1.93 -0.93 1.41 -0.95 1.41 -0.79 2.62 -0.8 2.63 -0.84 2.34 -0.87 2.37 
+-0.37 2.45 -0.39 2.47 0 176.2 -0.93 1.45 0 -198.65 1.25 -1.13 0.67 -2.76 0.65 -2.78 
+1.35 -7.25 -0.09 -2.32 -0.11 -2.3 -0.39 -3.47 -0.65 -0.41 -0.65 -0.43 -0.37 -1.26 -0.39 -1.25 
+-0.37 -1.24 -0.39 -1.26 -0.93 -2.84 -0.41 -2.82 -0.82 -0.83 -0.33 -2.41 1.11 -6.04 1.79 -5.79 
+1.67 -0.13 1.35 -3.67 0.93 2.32 -0.5 6.05 0.87 2.39 0.15 2.09 0.16 2.06 0.39 4.64 
+0.8 -0.91 0.82 -0.91 -0.45 -1.43 -0.48 -1.43 0.31 -3.12 0.28 -3.11 0.15 -2.73 0.13 -2.73 
+-0.15 -2.65 -0.17 -2.63 1.11 -1.58 1.06 -1.59 1.39 -2.25 0.8 -1.63 0.78 -1.61 0.14 -2.52 
+0.09 -2.5 0.82 -0.8 0.82 -0.78 0.96 -1.91 0.93 -1.93 0.85 -1.5 0.82 -1.52 0.7 -3.14 
+0.65 -3.15 -0.13 -2.95 -0.15 -2.93 -1.43 2.21 -0.83 4.04 -0.87 4.04 -0.04 -2.06 -0.07 -2.06 
+-0.61 -0.07 -0.63 -0.05 -0.57 3.32 -0.61 3.3 -0.83 0.21 -0.8 0.22 -0.76 1.58 -0.76 1.56 
+-0.35 2.52 -0.39 2.54 -0.42 1.7 -0.43 1.69 -0.41 -0.93 -0.39 -0.91 -0.02 -5.23 1.58 -4.38 
+1.17 -5.16 0.59 -2.61 0.54 -2.61 0.46 -2.8 0.41 -2.8 0.63 -2.45 0.58 -2.45 -0.48 -1.46 
+-0.5 -1.43 p
+-0.96 -1.69 -0.97 3.95 -0.85 6.77 -1.06 6.36 -1.52 4.41 -1.09 -2.15 -1.95 6.04 -0.29 5.58 
+-0.98 5.68 -1.58 5.86 -0.8 4.8 -0.37 4.86 -0.39 1.29 0 -88.42 -1.04 -4.68 -1.76 1.28 
+1.41 1.7 1.39 1.71 0 88.42 -1.11 3.6 -1.37 5.25 -0.91 3.56 1.15 3.23 -1.54 6.82 
+1.34 0.91 1.2 2.02 1.02 1.73 0.61 0.21 0.61 0.24 0.26 3 0.78 3.04 -0.13 2.56 
+-0.15 2.54 -0.41 2.52 -0.43 2.52 -0.69 3.82 0 198.65 -2.89 4.56 -6.25 9.44 -6.4 9.33 
+-6.58 9.22 -6.73 9.12 -6.87 8.98 -7.04 8.86 -3.6 4.38 -3.61 4.36 -3.67 4.3 -3.67 4.32 
+-7.5 8.46 -3.82 4.19 -3.82 4.16 -3.89 4.1 -3.88 4.13 -7.95 8.07 -3.71 3.64 2.24 -2.21 
+2.21 -2.21 2.2 -2.21 2.15 -2.2 2.1 -2.19 2.11 -2.17 2.06 -2.15 2.05 -2.17 1.99 -2.12 
+1.97 -2.13 1.96 -2.13 1.91 -2.11 1.89 -2.11 1.87 -2.08 1.84 -2.09 1.82 -2.04 1.78 -2.06 
+1.76 -2.04 1.74 -2.02 1.71 -2.02 0.95 -1.13 0.93 -1.11 0.91 -1.11 0.91 -1.09 0.89 -1.08 
+0.87 -1.04 0.87 -1.07 0.85 -1.04 0.82 -1.02 0.82 -1 1.61 -1.99 1.57 -1.95 0.76 -0.96 
+1.48 -1.87 0.72 -0.93 1.43 -1.82 0.7 -0.89 -1.04 1.33 0 -174.92 2.24 -0.06 2.62 -2.24 
+1.5 -2.47 1.47 -2.49 3 -3.56 1.07 -1.84 1.04 -1.84 1.02 -2.61 1 -2.62 1.2 -2.71 
+1.17 -2.71 -1.45 2.15 -1.48 2.15 -1.04 1.08 -1.04 1.06 0.76 -2.17 0.74 -2.2 1.13 -3.21 
+0.84 -0.74 0.84 -0.76 1.7 -2.08 1.11 -3.21 1.07 -3.23 -0.89 0.57 -0.89 0.58 -0.11 -0.93 
+-0.11 -0.96 -1.41 -0.11 -1.37 0.37 -2.69 5.14 -1.39 4.3 -1.32 0.75 -1.07 -0.91 1.35 -4.68 
+0.17 -2.63 -2 3.12 0.13 -2.49 1.71 -4.99 1.72 -4.59 -1.59 2.52 -2.54 5.42 -0.95 3.52 
+-0.46 4.21 -1.2 3.6 0 -44.05 1.35 -0.87 2.02 -0.34 1.95 -4.32 1.39 1.02 2 -0.41 
+1.67 0.3 -0.05 -3.99 -0.11 -3.97 2.02 -2.04 -0.41 -4.73 1.91 -5.62 0.89 -5.36 2.13 -3.36 
+1.99 -2.28 0.63 -4.23 2.13 -1.93 1.8 -1.13 1.65 -1.58 -0.78 -3.55 -0.96 -2.3 0.5 -4.23 
+1.11 -5.51 1.46 -5.88 0.61 -5.12 -0.07 -4.97 0.11 -5.82 1.95 -3.41 0.76 -7.92 0.7 -5.53 
+-0.71 -4.45 -0.74 -4.39 -0.76 -3.19 -1 3.67 -1.11 1.43 0 -40.26 1.23 -1.32 0.7 -3.86 
+1.87 0.28 1.3 2.59 1.49 0.78 0.55 -5.04 2.13 4.51 1.43 -1.13 -0.95 -5.96 -1.3 2.32 
+-1.3 0.26 0.41 -4.14 -1.28 -0.57 -1.35 0.33 -1.58 -0.02 -1.54 -3.45 -1.61 -0.02 -1.48 -1.59 
+-1.59 -0.71 -1.56 -0.79 -1.74 0.83 -1.34 -0.54 -1.78 -1.8 -1.24 -2.04 -1.87 -1.02 -1.54 1.05 
+-1.91 -0.92 -1.67 -0.75 0.04 2.52 -2.08 0.52 -1.67 -0.79 0.71 4.05 0.29 5.28 2.04 0.3 
+1.11 2.84 1.15 0.24 1.83 -0.7 1.63 0.84 1.21 -3.1 1.33 0.56 1.52 1.59 1.58 0.87 
+1.26 1.34 0.39 5.86 1.75 -0.74 1.91 0.34 1.52 0.89 0 40.26 -0.41 0.52 -1.11 -2.78 
+-2.15 1 -0.61 -3.95 -1.32 -1.87 -1.05 -3.45 -1.61 6.68 -0.56 -2.8 -1.22 -2.59 -1.78 -1.43 
+-1.33 5.1 -1.58 4.63 -1.04 4.51 -1.93 3.21 -0.22 0.11 0 -22.44 0.13 -5.36 -1.34 -0.61 
+-0.76 5.45 p
+1.97 0.52 0 22.44 -1.84 0.93 -1.11 4.41 -1.45 2.02 -1.56 4.75 -1.02 5.62 0 5.27 
+1.91 -0.15 1.65 1.63 1.45 1.24 -1.19 6.88 -1.24 5.75 0.89 2.89 1.07 3.17 0.08 5.03 
+-0.78 4.75 -0.2 4.71 -0.93 7.34 0.09 4.45 1.24 3.11 -1.45 3.54 -0.82 7.03 -1.29 4.38 
+-0.45 5.23 -1.15 5.16 0 44.05 -0.19 0.59 -0.61 3.79 0.99 0.43 2.09 -3.05 -1.5 4.77 
+-0.21 3.11 -2.46 5.16 0.96 0.54 -1.2 4.04 -3.47 5.12 0 174.92 -1.58 2.02 -2.63 3.3 
+-2.62 3.28 -2.65 3.21 -2.62 3.19 -2.61 3.11 0 -172.03 2.28 -1.76 2.21 -3.23 3.2 -3.67 
+0 -3.97 2.16 -3.29 2.24 -1.93 0.34 -3.59 -3.02 4.71 -0.45 -1.28 -1.37 2.09 0 -2.52 
+2.58 -4.01 2.09 -3.32 0.58 2.15 2.11 -3.39 0.3 -3.62 -1.8 1.37 1.61 -4.23 -0.98 -0.45 
+2.54 -3.23 1.04 -3.95 -1.78 0.91 -2.17 2.06 -1.02 4.34 -2.09 3.41 -0.95 -0.54 0.11 -3.89 
+-2.02 3.8 -2.47 4.43 -0.72 0.76 0 -16.17 3.69 -5.03 1.5 -6.01 0.41 -3.06 1.99 -5.34 
+1.05 -4.9 1.13 -3.97 0.56 -6.1 -1.8 5.36 -0.93 4.82 -1.28 5.99 -1.15 4.36 -1.91 6.2 
+-3.25 7.68 0 16.17 -1.43 1.57 0.63 2.6 1.3 -1.5 0.17 3.34 2.95 -5.12 0.59 1.67 
+2.06 -3.77 -1.17 4.38 -2.06 4.25 0 2.52 -1.73 2.62 0.5 1.67 -2.26 4.32 -1.32 -0.97 
+-2.7 2.91 0.42 1.82 -0.5 3.56 0 172.03 -0.02 0.04 -2.65 3.11 -2.64 3.06 -2.63 3.04 
+-2.64 2.99 -2.63 2.95 -2.65 2.9 -2.62 2.89 -2.63 2.84 -2.63 2.8 -2.62 2.75 -2.63 2.73 
+-2.61 2.69 -1.58 1.63 0 -182.53 3.37 -4.73 2.86 -3.36 1.87 -0.46 2.84 -4.4 2.32 -4.71 
+2.3 -5.29 2.69 -4.45 3.65 -3.47 2.69 -2.78 0.93 1.17 -1.3 3.71 0 1.93 0.93 1.08 
+1.32 1.54 0.46 -2.56 1.84 -1.59 2.21 -0.67 0.5 -2.64 -0.93 -1.07 -3.14 2.43 -1.37 -0.98 
+1.78 -1.96 2.21 -3.17 -1.64 0.85 0 -6.9 1.82 -0.67 2.56 -3.82 1.49 -4.8 -1.78 1.17 
+-2.61 2.87 -2.3 1.37 0.17 2.26 0.63 1.63 0 6.9 -1.54 0.76 -1.41 -0.48 1.65 -5.32 
+-1.08 -1.91 -2.2 3.11 -1.63 4.23 -1.41 0.02 1.72 -2.91 -1.91 -0.32 -2.64 3.19 -2.24 2.56 
+-3.12 3.6 1.04 1.52 -2.71 3.49 -3.21 5 -2.26 1.86 -2.32 3.76 -2.82 4.25 -0.48 2.75 
+1.34 0.67 0.39 1.81 -1.54 3.93 0 182.53 -1.52 1.54 -6.3 6.3 -3.19 3.11 -1.61 1.56 
+0 -243.36 1.63 -2.14 1.32 -3.76 2.25 -4.1 1.18 -3.71 0.57 -4 -0.57 -1.93 -1.85 -0.61 
+-2.08 2.43 -1.93 2.69 -0.67 3.5 -1.02 4.51 0.08 2.46 0.57 2.32 0.52 2.34 0 243.36 
+-1.61 1.54 -3.23 3.09 -3.25 3.04 -6.6 6.08 -3.32 3 -3.36 2.97 -3.36 2.95 -2 1.72 
+0 -182.23 3.08 -2.73 3.25 -4.1 3.67 -4.21 3.12 -3.78 2.68 -4.23 3.54 -4.36 -2.43 1.63 
+-0.85 -0.87 -3.45 2.63 -2.98 2.88 -3.17 4.58 -2.62 3.63 -2.78 4.05 -1.87 4 0.8 0.89 
+0 182.23 -1.41 1.21 -3.4 2.91 -3.45 2.89 -3.45 2.86 -3.47 2.82 -2.93 2.37 -2.97 2.37 
+-3 2.36 -3.06 2.37 -3.08 2.39 -3.15 2.37 -3.17 2.38 -3.21 2.37 -3.28 2.39 -3.3 2.38 
+-3.34 2.37 p
+-3.41 2.39 -3.43 2.39 -3.5 2.36 -3.53 2.39 -3.56 2.37 -3.62 2.37 -3.69 2.36 -3.71 2.34 
+-1.67 1.07 -3.43 2.13 -1.76 1.08 -1.78 1.08 -1.8 1.09 -1.82 1.11 -1.87 1.11 -1.89 1.13 
+-1.91 1.13 -1.93 1.13 -1.97 1.13 -1.99 1.15 -2.05 1.17 -2.06 1.15 -2.09 1.17 -2.13 1.2 
+-2.14 1.17 -2.19 1.2 -2.23 1.19 -2.25 1.22 -2.3 1.21 1.64 -0.84 1.63 -0.87 1.68 -0.89 
+1.67 -0.91 1.69 -0.92 1.71 -0.93 1.72 -0.95 1.73 -0.95 1.76 -0.98 1.78 -1 1.78 -1.02 
+1.83 -1.02 1.82 -1.04 1.84 -1.09 1.87 -1.09 1.5 -0.87 -4.88 2.88 -4.93 2.78 -4.9 2.78 
+-4.97 2.71 -4.97 2.7 -5.04 2.63 -5.01 2.6 -5.06 2.54 -5.05 2.52 -5.1 2.46 -5.1 2.43 
+-3.8 1.72 0 -130.04 4.3 -0.98 3.64 -1.82 2.8 -0.5 1.82 -1.91 2.37 -1.04 3.02 -0.33 
+4.25 -1.2 2.78 -1.58 4.32 -1.34 2.12 0.11 3.15 -2.06 2.64 -1.06 4.16 -3.39 -4.32 1.52 
+2.76 -1.72 2.06 -2.49 5.64 -2.64 -2.82 0.24 5.79 -4.06 3.17 -4.21 -1.06 -1.54 3.19 -2.04 
+1.46 0.43 4.95 -4.02 4.95 -3.52 0.57 -1.5 -1.84 -0.13 0 -2.34 2.06 -0.48 2.84 -2.48 
+3.11 -2.26 -0.71 -0.98 2.73 -3.1 2.24 -1.65 2.78 -1.87 0.26 -2.06 -2.98 0.7 -2.95 2.93 
+-2.75 1.82 -0.93 2.3 -3.06 2.24 -2.12 2.78 -0.5 2.11 0 2.34 -0.22 -0.02 -2.84 1.11 
+-4.04 2.78 1.96 -2.93 0.82 -1.91 3.61 -3.61 1.85 -2.34 2.95 -3.43 2.28 -3.21 3.21 -2.66 
+0.85 -2.3 2.11 -3.2 1.3 0 -1.34 2.56 2.64 -0.87 2.22 -0.09 3.53 -2.66 4.13 -3.02 
+3.69 -2.23 3.84 -4.34 0.29 -2.47 -2.89 1.56 -2.82 1.48 -2.54 2.61 -2.89 1.45 -1.65 -0.15 
+2.47 -1.54 1.02 -2.17 -2.82 0.46 -2.93 3.38 -3.32 3.21 -1.93 2.84 -2.82 1.29 -2.52 3.04 
+-2.87 2.8 -3.71 3.45 -4.12 3.23 -1.5 2.47 -2.88 3.93 -2.8 3.54 -2.47 3.06 0.28 1.47 
+-2.32 2.04 -2.82 0.93 -3.52 2.34 -4.04 2.52 -3.19 1.21 -3.23 2.47 3.5 -1.61 2.28 -0.67 
+-3.88 3.3 -3.41 3.12 -3.3 2.37 -3.78 1.87 -3.71 2.71 -4.05 1.52 -4.17 2.06 -3.5 1.3 
+-3.34 0.59 -2.73 0.45 -2.23 0.34 -4.64 1.89 0.24 1.21 -1.72 1.73 -1.62 0.22 1.37 -1.39 
+-2.5 0.61 -1.34 2.34 2.54 -0.65 2.37 0.04 1.25 1.05 2.54 0.28 0 130.04 -1.37 0.63 
+-5.14 2.34 -10.37 4.52 -5.21 2.16 -5.23 2.18 -5.25 2.08 -5.27 2.06 -5.29 1.99 -5.3 1.98 
+-5.34 1.89 -5.32 1.88 -5.36 1.8 -5.38 1.8 -5.38 1.7 -5.39 1.71 -10.85 3.21 -5.45 1.52 
+-5.45 1.49 -5.49 1.43 -5.47 1.41 -5.49 1.32 -5.51 1.33 -5.51 1.21 -5.51 1.24 -5.55 1.13 
+-5.54 1.13 -5.55 1.05 -5.58 1.02 -11.16 1.87 -5.57 0.85 -5.6 0.82 -5.6 0.74 -5.62 0.74 
+-5.6 0.65 -5.62 0.65 -5.64 0.52 -5.62 0.54 -5.64 0.45 -5.64 0.44 -11.29 0.7 -5.64 0.25 
+-5.64 0.24 -5.66 0.16 -2.04 0.04 0 -0.11 2.54 -0.07 2.52 -0.08 1.04 -0.02 1.21 -0.05 
+0.26 -0.02 2.5 -0.09 2.13 -0.08 6.09 -0.29 6.08 -0.34 6.08 -0.39 6.08 -0.46 6.04 -0.5 
+6.03 -0.58 6.03 -0.61 6 -0.68 5.99 -0.73 5.95 -0.79 5.95 -0.84 5.9 -0.89 5.9 -0.95 
+5.86 -1 p
+5.84 -1.05 5.79 -1.08 6.18 -1.24 6.21 -1.28 6.21 -1.34 6.23 -1.43 6.23 -1.5 6.25 -1.56 
+6.25 -1.63 6.25 -1.69 6.25 -1.76 6.25 -1.82 6.27 -1.91 6.25 -1.97 6.25 -2.04 6.23 -2.11 
+6.23 -2.18 6.23 -2.23 6.21 -2.3 6.18 -2.39 0.33 -0.12 0.3 -0.11 0.61 -0.26 0.3 -0.11 
+0.28 -0.13 0.31 -0.11 0.28 -0.13 0.84 -0.32 0.26 -0.13 0.29 -0.11 0.52 -0.22 0.28 -0.11 
+0.24 -0.11 -5.75 2.25 -5.62 2.15 0 -129.8 3.91 -1.89 4.23 -2.23 2.15 -2.23 4.34 -2.02 
+3.67 -1.45 2.45 -0.46 1.7 -2.91 0.76 -2.52 2.61 -2.06 2.8 -1.78 -0.09 -0.89 1.36 -1.39 
+1.96 -0.5 -0.59 1.58 -0.06 1.52 3.43 -2.54 3.67 -2.3 -3.8 0.5 -0.65 -0.82 -2.5 0.61 
+-4.53 2.61 -1.81 -0.16 -1.15 1.63 -2.04 1.98 -1.93 0.43 -1.8 -0.15 -2.93 1.37 -2.47 0.45 
+-3 0.41 -2.15 -0.82 -3.28 1.58 0.41 1.47 1.21 1.2 0.18 1.22 -0.43 2.13 -1.56 2.19 
+-1.74 1.86 -5.04 2.43 4.56 -1.17 -0.09 0.93 1.52 0 -3.28 2.19 0 129.8 -0.41 0.17 
+-6.07 2.23 -6.1 2.22 -6.14 2.12 -6.16 2.06 -1.89 0.63 0 -129.47 5.67 -1.96 5.16 -2.14 
+4.76 -1.91 -5.82 1.52 -4.34 1.55 -1.55 1.45 -3.88 1.5 0 129.47 -0.56 0.17 0 -146.57 
+0.86 -1.95 1.95 -1.59 2.8 -0.93 2.35 -0.15 3.52 -0.65 3.36 -0.13 1.35 0.65 0.2 1.17 
+1.69 0.35 -0.35 1.19 3.06 0.11 -0.31 -1.52 1.17 -1.48 2.87 -1.15 4.13 -0.89 -3.13 -0.87 
+-3.58 0.84 -3.58 -0.06 -3.26 0.49 -2.41 -0.7 -0.87 -0.62 -2.67 0.45 -2.86 0.11 -3.02 -0.22 
+-2.71 -0.5 -3.3 -0.02 -2.21 -0.48 -0.8 -1.2 -2.97 -0.32 -3.53 0.11 -3.15 -0.67 -3.19 1.17 
+-2.32 0.46 -1.58 -1.06 -1.89 1.04 1.04 1 2.61 0.7 2.28 0.93 2.91 0.43 3.23 0.15 
+2.02 1.13 4.55 1.74 1.98 1.08 1.95 1.09 1.83 0.76 0 146.57 -3.71 1.21 -6.23 1.95 
+-2.02 0.64 0 -128.65 6.14 -1.69 2.11 -1 -4.8 1.26 -3.45 1.43 0 128.65 -4.21 1.28 
+-6.25 1.82 -6.25 1.76 -6.29 1.71 -6.3 1.63 -6.32 1.58 -6.32 1.5 -4.95 1.13 0 -132.27 
+4.25 -1.2 -1.23 -0.52 -3.2 0.91 -3.55 0.29 1.11 0.52 2.63 0 0 132.27 -1.37 0.33 
+-7.25 1.56 -7.25 1.47 -3.6 0.7 -3.62 0.7 -3.61 0.66 -3.6 0.67 -2.56 0.43 0 -136.98 
+3.71 -1.37 4.23 -0.28 3.08 1.06 4.88 0.3 4.73 -0.3 4.75 -0.74 -0.57 -1.06 -1.82 -0.89 
+-1.75 -1.24 -0.87 -1.97 -2.13 -1.43 -1.74 -1.67 -1.04 -1.24 -1.39 -1.47 -1.43 -1.11 -2.82 -1.2 
+-3.14 -0.74 -3.13 -0.78 -3.49 0.74 -3.04 -0.52 -0.61 -1.13 -2.76 1.09 -4.04 0.5 -4.62 -0.02 
+-4.2 -0.2 -3.11 -0.67 -4.77 -0.12 -3.95 -0.43 -2.41 -0.66 -3.71 0.07 -3.71 0.39 -1.93 -0.84 
+-2.24 -1.71 -1.95 -1.5 -3.15 -0.21 0.79 -0.87 4.77 -0.55 2.41 1.05 1.17 1.32 2.78 -0.41 
+3.21 0.39 3.58 0.26 4.3 0.02 -0.18 -1.35 -0.78 -1.11 -3.76 -1.18 3.59 -0.5 1.87 -1.3 
+3.55 -0.93 4.19 -0.82 3.67 0.32 3.73 0.33 4.04 -0.24 3.54 0.3 3.29 0.73 -2.11 1.29 
+-0.26 1.2 4.8 -1.72 2.11 -1.37 2.25 -0.28 4.14 -1.26 2.43 -1.21 -0.26 -1.02 -3.25 0.5 
+0.06 -1.17 p
+2.13 -0.71 1.91 -1.39 1.5 -1.61 2.08 -0.75 1.47 0.37 1.13 0.17 1.84 -1.43 2.91 -1.3 
+2.14 -2.17 3.17 -0.72 0.24 -0.97 2.86 -1.87 3.11 -2.11 2.78 -1.63 0.67 -0.39 3.38 -1.11 
+2.84 -0.28 3.41 -1.2 3.2 -0.57 2.86 -0.39 3.17 -1.12 3.88 -1.33 3.47 -0.95 4.69 -1.09 
+4.38 -1.47 3.99 -1.61 4.38 -1.61 0.83 -0.46 2.8 -1.57 1.34 0.3 -0.79 1.95 -2.64 2.07 
+2.56 0.17 2.6 0.13 -3.8 1.02 -2.25 1.63 2.6 0.2 3.06 -0.84 -3.84 2.57 -4.86 1.38 
+-2.08 1.87 -0.7 1.19 0 -5.62 4.05 -1.15 -0.56 -1.02 -2.82 0.5 -0.67 1.67 0 5.62 
+-0.43 0.76 1.23 0.41 -0.15 1.57 -0.45 1.8 3.36 -0.41 2.46 0.28 0.63 0.87 2.91 -0.52 
+3.62 -0.78 3.43 -0.59 3.35 -0.07 2.79 0.41 3.56 0.15 3.23 -0.5 3.69 -0.48 1.15 -0.48 
+4.41 -1.8 4.95 -1.8 1.06 -0.46 3.39 -1.43 4.63 -1.11 3.86 -1.41 4.14 -1.78 4.73 -2.47 
+5.29 -2.7 4.97 -2.97 0.54 -0.17 2.73 -0.93 4.97 -2.58 3.79 -3.04 4.11 -2.86 3.1 -3.02 
+0.5 -2.71 -2.23 0.52 1.63 -2.39 2.38 -1.43 3.75 -2.08 0.91 -1.41 2.67 -1.29 2.71 -2.8 
+4.66 -3.12 1.47 -0.15 3.43 -1.07 2.12 -2.19 3.54 -2.97 2.89 -2.8 2.06 -2.24 1.71 -2.45 
+1.32 0.13 2.63 -1.63 0.61 1.59 1.3 1.02 2.3 0.02 1.48 0.63 2.06 0.43 3.04 -0.63 
+3.21 -1 3.43 -1.47 3.11 -1.7 3.41 -2.49 3.06 -3.64 2.28 -4 2.3 -3.38 3.49 -4.06 
+-2.89 0.52 -3.41 1.69 -3.69 3.43 -3.43 0.68 -3.37 0.3 -1.71 2.98 -2.5 0.48 -1.25 -1.3 
+1.99 -3.71 -1.71 -1.37 -3.3 2.39 -3.16 2.02 -3.89 2.54 -0.43 -1.06 0.16 -1.54 -0.04 -2.12 
+1.54 -2.78 1.95 -2.67 2 -3.04 2.78 -2.54 2.41 -2.99 1.08 -2.06 -3.49 3.54 -1.74 -0.43 
+-1.91 1.52 -2.3 2.59 -3.32 2.66 -2.26 -0.2 0.34 -2.58 2.87 -2.78 3.3 -3.02 1.75 -2.67 
+2.26 -2.93 2.39 -1.83 1.93 -1.91 1.21 -2.8 -0.71 -1.21 2.48 -2.56 2.32 -1.58 1.84 0.28 
+1.28 0.89 1.15 1.28 2.68 -1.13 1.21 0.91 -0.46 1.89 -1.91 2.02 -2.06 2.37 -1.74 2.82 
+1.24 0.65 -0.02 1.58 -0.7 2.26 -0.11 1.95 3.71 -2.86 -0.67 -0.91 2.34 -3.15 1.98 -3.66 
+2.91 -2.23 2.21 -3.22 2.78 -3.6 2.41 -2.43 2.97 -2.82 1.07 1.69 1.04 1.72 3.08 -1.22 
+2.5 -0.87 2.56 -0.98 2.65 -1.34 0.67 0.93 1.76 0.61 2.47 -0.97 0.65 -2.87 2.09 1.04 
+2.06 -1.02 1.02 -2.5 1.39 -2.37 1.84 -2.39 1.02 -2.88 0.74 0.89 -1.07 3.28 0.74 0.91 
+0.09 1.71 1.69 -1.56 3.82 -3.11 0.26 -1.28 3.36 -3.28 1.52 -0.78 1.73 -2.07 0.28 -1.73 
+2.34 -2.97 2.76 -3.37 2.8 -3.43 2.26 -3.43 -0.3 -1.26 2.54 -1.8 2.06 -2.19 2.67 -3.56 
+2.11 -3.08 1.61 -3.14 2.56 -3.17 0.11 -2.56 1.96 -1.87 1.49 -3.19 1.96 -3.99 1.46 -3.61 
+1.89 -4.54 1.32 -3.99 0.32 -3 0.29 -2.95 -0.22 -2.47 2.15 -4.17 -2.54 0.11 2.63 -3.86 
+-2.02 -0.02 2.63 -3.45 0.55 -3.45 0.04 -2.89 0.89 -3.93 -0.11 -3.23 0.39 -3.41 1.5 -2.87 
+2.37 -1.52 0.58 -2.26 -0.37 -1.52 -2.28 1.91 -1.33 1.22 -2.02 3.01 -0.37 -1.52 -1.72 -0.34 
+-0.57 -2.26 p
+0.24 -3.32 0.69 -3.47 0.55 -3.8 1 -3.9 1.61 -3.8 0.78 -4.32 1.67 -3.45 1.98 -4.02 
+3.17 -2.37 2.2 -0.47 1.61 -1.83 2.54 -1.04 2.36 -1.3 2.67 -0.68 2.11 -0.43 2.38 -1.41 
+2.48 -1.11 2.78 -3.34 2.43 -2.8 2.24 -3.26 2.09 -3.64 1.71 -3.08 2.54 -5.23 1.65 -3.12 
+0.98 -3.23 0.02 -4.1 0.11 -3.71 0.11 -3.67 0.02 -3.7 -1.24 -2.45 2.11 -4.47 0.67 -4.55 
+-0.84 -2.76 0.15 -4.21 0.09 -4.23 -1.76 2.45 -1.66 3.8 -1.29 4.47 -1.75 -0.76 -1.72 1.45 
+-1.39 -2.34 -2.17 0.85 -2.02 2.02 -1.86 2.39 -1.73 1.39 -1.39 -0.09 -2.49 1.37 -1 -1.63 
+-1.5 -1.36 -2.04 4.12 -1.84 -0.76 -0.43 -2.82 1.8 -4.43 2.28 -4.78 0.91 -3.6 1.2 -4.23 
+0.41 -3.41 1.37 -4.82 1.78 -4.25 1.93 -3.1 1.15 2.45 2.23 -4.66 1.89 -1.24 1.91 -3.14 
+2.09 -3.8 1.67 -0.67 1.87 1.45 2.06 -1.93 2.11 -1.06 2.06 -1.02 2.04 -1.06 2.29 -2.67 
+1.3 -3.99 1.26 -4.02 1.23 -4.02 1.2 -4.06 1.76 -1.56 2.28 -3.56 1.78 -4.19 -2.2 -2.67 
+-1.52 0.89 -1.8 0.56 -2.04 0.29 -1.71 1.5 -2.23 0.91 -1.41 3.67 -2.22 1.89 -2.19 2.73 
+-0.96 4.23 -1.56 1.69 -1.76 4.25 -1.06 3.14 -1.08 2.17 -1.22 1.46 -1.84 1.32 -1.84 1.3 
+-0.26 0.26 0 -22.48 2.11 -1.09 1.76 -2.39 1.98 -2.12 2.06 -1.13 2.13 -0.25 2.28 -0.87 
+2.11 -2.84 2.36 -2.56 1.37 2.36 2.61 -2.3 1.67 1.07 2.32 -2.63 1.43 0.7 0.76 -4.41 
+1.28 1.46 2.06 -2 0.57 -3.8 0.02 -4.38 1.61 -1.67 1.8 2 1.67 -5.17 1.47 -1 
+1.17 -3.02 1.52 1.7 1.58 -1.82 -0.45 3.95 -1.17 1.32 -1.65 -1.02 0.15 3.8 1.34 2.43 
+1.65 -3.49 1.22 -3.09 1.13 0.43 0.59 -4.69 -2.8 0.35 1.28 -2.04 0.02 -5.25 0.96 -5.92 
+0.65 -4.45 0.43 -5.45 0.33 -4.73 -1.63 0.93 -1.3 -1.26 -0.29 -2.73 -1.24 0.5 -1.91 3.11 
+-2.02 1.34 -2.78 2.28 -1.87 2.34 -1 2.28 -2.08 1.26 -2.19 3.64 -2.09 2.91 -0.91 3.11 
+-2.02 3.84 -0.93 3.11 -2.08 2.08 -1.13 2.13 -1.07 0.06 0 -10.8 2.56 -4.82 -1.02 -1.7 
+-1.21 1.26 -1.02 3.82 0.7 1.43 0 10.8 -1.26 0.09 -1.78 4.82 -1.76 3.17 -0.62 2.63 
+-2.3 1.04 -1.43 0.21 0 -8.16 2.58 -2.37 0.74 -3.34 -2.14 1.99 -1.7 1.56 0.52 2.15 
+0 8.16 -0.7 0.11 -1.52 3.39 -2.21 1.8 -1.98 2.15 -1.28 -0.5 -2.7 2.19 -2.28 1.85 
+-1.73 2.34 -1.43 3.45 1.91 1.96 2.08 -1.2 1.89 1.97 2.25 1.63 0 22.48 -2.11 2.28 
+-2.37 1.65 -0.26 -2.17 -1.67 2.52 -1.41 3.69 -0.98 5.16 -1.78 4.32 -1.54 3.63 -0.34 3.32 
+-1.33 3.02 -2.3 2.66 -1.23 5.06 -2.39 3.45 -1.06 1.08 0 -541.79 -1.93 -2.63 -1.96 -2.62 
+-3.1 -3.69 -3.17 -3.69 -1 -1.52 -1.04 -1.55 -0.02 -0.58 -0.02 -0.61 -0.47 -1.73 -1.71 -1.91 
+-1.74 -1.93 -3.14 -2.82 -3.14 -2.8 -3.15 -2.76 -3.14 -2.71 -0.71 -0.48 -0.72 -0.45 -2.21 -1.71 
+-2.19 -1.67 -2.95 -2.37 -2.95 -2.32 2.47 2.41 2.43 2.41 -1.41 -0.87 -1.41 -0.85 -1.82 -1.17 
+-1.82 -1.15 1.67 1.91 1.63 1.89 2.5 2.52 2.45 2.54 2.45 2.32 2.43 2.32 2.82 2.62 
+2.82 2.65 p
+2.11 1.97 2.13 1.98 2.9 2.93 2.89 2.93 3.71 3.67 3.69 3.73 2.93 2.86 2.93 2.93 
+0 541.79 -1.8 1.82 -2.45 3.38 -2.17 2.87 -2.3 3.62 -2.02 3.11 -2.25 2.75 -2.37 1.56 
+-1.46 -0.08 0.83 -2.91 -0.39 -3.54 -0.19 -3.23 0.28 -3.43 -1.13 -1.52 -1.17 -0.65 -2.23 -0.11 
+-1.29 3.93 -1.67 4.49 -2.32 3.56 -2.56 3.17 -2.28 2.66 -0.89 -1.21 -2.21 1.8 -0.5 2.23 
+-2.25 1.78 -0.85 -1.17 -1.91 1.2 -2.69 1.17 -2.43 1.43 -2.07 2.02 -1.82 2.34 -2.06 1.96 
+-0.63 0.34 0 -118.21 2.95 -0.65 2.34 -2.46 2.3 -2.49 1.96 -2.73 2.11 -1.98 1.11 -3.97 
+0.3 -3.87 -1.04 -3.38 -2.02 -2.67 -1.67 -1.08 -1.71 2.21 -1.87 4.05 -1.11 2.65 -1.08 3.93 
+-0.5 3.06 -0.65 3.61 0.11 3.49 -1.52 2.28 0 118.21 -1.87 1.09 0 -3.78 0.09 -2.73 
+0.41 -3.23 -1.04 -2.21 -1.09 -2.19 -1.04 -2.24 -0.89 -1.91 -2.6 3.08 0.74 -2.61 -0.59 -2.45 
+-0.87 -2.63 0.74 -2.64 1.4 -1.78 0.72 -3.45 0.42 -3.64 -0.96 -2.67 -1.04 -1.84 -0.2 -3.47 
+0.28 -2.87 0.31 -3.69 -0.33 -3.41 -0.82 -2.32 -0.37 -2.62 0.13 -3.62 -0.68 -2.87 -0.36 -1.82 
+0.95 -2.93 -0.15 -2.34 -1.55 -2 -0.93 -1.45 0.57 -3.21 -2.3 -1.13 0.2 -3.36 0.8 -2.97 
+1.83 -3.5 1.8 -3.62 1.73 -3.59 1.11 -4.02 0.23 -3.99 0.02 -3.45 1.15 -3.32 1.24 -2.56 
+1.26 -3.86 -1.93 -1.35 -0.24 -4.21 1 -3.34 -1.48 -1.63 -1.15 -2.73 0.46 -4.38 -1.24 -2.73 
+-1.97 0.11 -2 1.35 -2.12 1.95 -1.8 3.41 -1.8 3.5 -1.69 2.84 -1.71 2.84 -1.84 2.04 
+-2.21 1.89 -1.91 2.08 -1.93 3.32 -1.75 2.8 -1.8 2.78 -1.46 2.99 -2.52 2.32 -2.48 2.32 
+-2.19 2.52 -1.68 2.21 -1.75 3.43 -1.57 2.93 -2.12 3.17 -2.2 3.23 -0.22 2.47 -1.32 1.11 
+-1.93 2.67 -1.06 3.27 -1.33 3.73 -2.11 1.93 -1.49 2.35 -1.13 3.23 -1.15 -0.17 0.61 -2.95 
+1.3 -3.73 -0.63 -3.06 -1.41 -2.28 -2.26 -1.48 -2.61 0.29 -2.69 1.54 -2.21 1.15 -2.3 2.41 
+2.23 1.43 1.43 2.26 -0.83 3.4 -1.69 -2.45 -2.19 -1.43 -2.82 0.76 -2.47 1.69 -2.25 0.5 
+-2.39 -0.19 -1.48 2.21 -1.8 2.11 -1.99 0.67 -1.89 1.35 -0.3 -0.07 0 -299.69 1.08 -0.83 
+-0.34 -2.09 -2.08 -0.36 1.34 3.28 0 299.69 -1.84 -0.57 -1.68 -1.69 -1.34 -1.41 -1.71 -1.61 
+-1.84 -0.48 -2.07 0.06 0 -301.45 1 -1.35 -0.58 -1.04 -2.09 -0.37 -0.45 1.91 2.12 0.85 
+0 301.45 -0.04 0 -0.83 -1.73 -2.28 -1.28 -1.78 -1.56 -2.11 -1.8 -2.89 -0.89 -1.89 -0.43 
+-2.54 -0.74 -2.04 -1.05 -2.26 -0.49 -2.8 -0.29 -2.61 -0.63 -2.97 -0.87 -1.87 2.59 -1.41 2.25 
+-2.19 1.26 -2.04 -0.98 -1.65 -1.95 -1.34 -1.74 -1.83 -2.54 -2.36 0.67 -1.89 -1.45 -2.17 1.35 
+-2.3 -0.45 -2.73 1.66 -2.32 0.7 -3.19 -0.26 -2.02 1.96 -1.88 2.58 -2.89 2.13 -2.78 2.71 
+-2.17 1.37 -1.37 -1.67 -1.95 0.85 -1.96 0.87 -0.28 -3.39 -2.06 -0.82 1.96 -1.99 -2.11 -1.87 
+2.15 -0.29 1.8 -2.58 2.17 -2.45 1.97 -1.98 2.71 -1.65 2.71 -1.71 2.5 -1.2 1.63 -2.15 
+0.56 -2.56 2.3 -1.8 1.26 -1.15 0.58 2.95 -0.56 2.56 0.91 0.89 1.8 -1.45 1.45 -2.75 
+0.7 -3.06 p
+-0.41 -3.47 1.84 0.74 1.21 -1.19 2.78 0.58 0.92 2.04 2.16 0.91 2.7 0.54 1.63 1.3 
+0.17 2.84 1.37 2.93 0.63 2.54 0.68 2.56 1.11 2.23 -0.11 2.32 1.25 -0.04 0.29 -1.61 
+1.17 -2.91 1.37 -3.39 2.71 -1.65 2.54 -1.13 2.69 -0.48 2.28 0.54 2.82 0.15 2.04 -1.95 
+2.39 -1.74 2.3 -0.62 0.11 -3.47 0.07 -3.5 -0.84 -2.15 -0.35 -2.52 -0.18 -2.95 -1.82 -0.83 
+-0.22 -2.99 0.68 -3.14 1.61 -2.17 -1.54 -1.78 -1.67 -1.35 -0.68 -1.48 0 -41.25 -0.19 -0.22 
+0 -370.7 -0.37 -2.02 0.02 -1.55 1.48 0.39 2.37 0.39 -2.12 -1.98 -1.39 0.11 -1.74 -1.43 
+-0.32 1.09 -2.71 -0.85 2.75 2.39 0.74 2.54 1.31 0.91 0 370.7 -1.82 -2.14 -1.95 -0.71 
+-1.87 0.45 1.26 2.11 2.52 0.3 2.06 0.22 0 41.25 -0.3 -0.65 0.2 -3.32 -0.82 -1.43 
+-1.67 -1.3 -1.97 -1.87 0.13 -3.32 -1.48 -2.26 -2.02 -0.26 -2.17 -1.37 -1.89 -2.38 -1.11 -1 
+0 -179.23 1.57 -2.69 1.15 -2.78 0.24 -3.41 1.04 -3.34 0.45 -4.41 0.22 -2.93 -2.04 -3.36 
+-1.89 2.17 -0.07 -4.95 -0.67 -2.62 -1.45 -1.71 -0.29 -2.54 -0.87 -3.56 -0.78 -3.08 -1.73 -3.69 
+-1.28 -3.13 -1.24 -3.12 -1.23 -2.65 -0.79 -2.56 -1.25 -2.56 -1.29 -2.63 -1.21 -2.6 -0.89 -2.5 
+-0.82 -2.54 -0.87 -2.54 -1.21 -2.06 -1.43 -3.04 -1.28 -2.58 -2.32 -3.15 -1.98 0.29 -2.76 -1.3 
+-2.43 -1.72 -2.64 -0.76 -0.48 0.31 0 -358.03 -5.55 -2.18 -5.56 -2.12 -5.51 -2.04 -5.5 -1.97 
+-5.09 -1.87 -5.12 -1.82 -5.17 -1.79 -5.21 -1.75 -3.6 -1.13 -3.58 -1.09 -3.58 -1.06 -3.56 -1.04 
+-2.88 -0.82 -2.89 -0.79 -2.86 -0.78 -2.84 -0.76 -1 -0.21 -1 -0.2 -0.98 -0.22 -0.95 -0.19 
+-2.78 -0.7 -2.75 -0.7 -5.47 -1.3 -2.19 -0.43 -2.17 -0.43 -2.14 -0.41 -2.11 -0.39 -2.29 -0.57 
+-2.28 -0.54 -2.3 -0.56 -2.3 -0.52 -2.34 -0.5 -2.32 -0.45 -4.6 -0.91 2.06 0.3 2.11 0.32 
+2.15 0.33 2.17 0.34 -3.37 -0.73 -3.36 -0.7 -3.34 -0.7 -3.36 -0.67 -1.74 -0.24 -1.7 -0.24 
+-1.71 -0.22 -1.65 -0.22 -1.98 -0.3 -1.95 -0.26 -1.93 -0.29 -1.91 -0.26 -4.37 -0.74 -4.34 -0.71 
+-4.36 -0.67 -4.34 -0.65 -4.28 -0.61 -4.27 -0.59 -4.25 -0.54 -4.28 -0.5 -3.14 -0.45 -3.21 -0.43 
+-3.21 -0.41 -3.25 -0.42 -2.08 -0.29 -2.11 -0.25 -2.13 -0.26 -2.13 -0.24 -3.21 -0.26 -6.37 -0.43 
+-3.19 -0.2 0.84 0.18 0.82 0.17 0.8 0.17 0.82 0.18 -0.97 0.2 -0.31 0.08 4.17 0.39 
+2.08 0.22 2.06 0.21 0.24 0.09 0.24 0.11 0.22 0.09 0.24 0.11 2.73 0.24 2.73 0.28 
+2.73 0.26 2.74 0.29 3.36 0.43 3.34 0.43 3.32 0.45 0.96 0.2 0.93 0.22 0.91 0.19 
+-1.06 -0.06 -1.08 -0.05 -1.07 -0.04 1.24 0.3 2.38 0.65 1.91 0.39 1.87 0.41 1.84 0.39 
+2.65 0.61 1.3 0.31 1.78 0.41 1.74 0.43 1.71 0.41 3.91 0.67 3.86 0.72 3.82 0.71 
+3.54 0.54 3.56 0.56 3.55 0.59 -0.84 -0.33 -0.89 -0.32 -0.89 -0.3 0.09 -0.2 0.09 -0.21 
+0.07 -0.18 2.09 0.26 2.11 0.31 2.12 0.3 3.61 0.67 3.62 0.7 3.63 0.71 3.71 0.76 
+7.38 1.61 4.88 1.07 4.9 1.11 4.93 1.15 -1.78 -0.54 -1.79 -0.56 -1.8 -0.54 -3.49 -0.93 
+-3.54 -0.91 p
+-3.56 -0.91 0.57 0 0.56 0.02 0.57 0 0.59 0.02 -0.63 -0.26 -0.63 -0.24 -1.3 -0.52 
+1.56 0.26 3.17 0.57 1.61 0.28 1.87 0.37 1.89 0.39 3.82 0.83 -1.06 -0.33 -1.05 -0.34 
+-2.16 -0.65 7.29 1.82 3.62 0.93 3.63 0.97 2.88 0.7 2.89 0.72 2.93 0.74 2.93 0.76 
+3.62 0.98 3.62 1.02 3.67 1.05 3.67 1.06 3.64 1.09 3.64 1.11 3.67 1.15 3.71 1.18 
+3.49 1.15 3.5 1.17 3.54 1.21 3.53 1.24 2.15 0.72 4.38 1.48 2.24 0.78 3.41 1.24 
+3.45 1.28 3.47 1.33 3.47 1.35 0 358.03 -1.37 0.89 -1.74 1.67 -1.63 2.63 0.2 3.29 
+0.2 3.82 -0.91 2.28 0.04 2.84 0.37 2.38 2.23 3.65 2.13 2.62 1.17 2.56 2.19 3.17 
+0.74 2.52 -0.89 3.21 0.28 2.47 -0.91 3.21 -0.07 3.34 2.04 3.21 1.74 4.62 2.21 0.35 
+2.78 1.91 2.72 1.43 2.78 1.93 2.28 1.84 2.43 3.38 2.22 0.37 -0.29 2.45 1.89 1.82 
+-0.26 2.91 2.64 0.98 2.26 1.43 0.56 2.54 0.17 3.04 2.32 2.95 0 179.23 -0.93 -0.87 
+-1.93 -2.37 -0.26 -2.25 0.54 -2.04 -2.11 -1.8 -2.11 -1.85 -2.13 -1.84 -2.15 -1.75 -2.54 -1.96 
+-2.06 -2.28 -1.06 -3.04 -2.22 -1.73 -2.43 -0.76 -1.57 -2.63 -1.35 -2 -2.36 -1.21 -2.58 -0.26 
+-2.02 -0.58 -0.84 -2.32 -2.28 -1.71 -2.41 -1.17 -2.43 -1.15 -2.2 -0.11 -2.23 2.52 -0.17 3.06 
+-1.15 1.23 -1.5 3.2 -1.56 3.23 -1.04 2.84 -0.11 2.52 -0.96 2.34 -1.89 2.61 -2.32 2.46 
+-1.95 1.02 -1.8 2.11 -5.73 7.75 -2.62 1.82 -3.45 0.13 -1.28 1.69 -2.08 1.54 -1.24 3.26 
+-1 2.32 -0.09 2 -1.13 2.8 -1.93 2.56 -2.32 2.46 -2.5 1.37 -2.75 0.8 -1.93 2.56 
+-1.56 2.67 -2.32 2.45 -2.06 1.54 -2.37 2.45 -2.32 2.45 -1.8 2.04 -2.17 2.02 -2.32 -0.59 
+-0.02 3.02 0 3.06 -0.8 2.82 -0.61 -3.67 -0.24 -3.65 0.63 -2.34 -0.93 -1.24 -2.45 1.39 
+-2.04 1.56 -1.28 1.7 -1.65 1.58 -1.91 2.58 -1.41 2.19 -0.91 -1.23 1.79 -2.06 1.04 -2.28 
+1.78 -2.1 2.13 -1.98 2.06 -1.56 1.02 -2.24 1.39 -1.39 0.28 -0.25 0.97 -2.26 2.29 -2.47 
+1.4 -2.21 1.89 -2.56 1.8 -2.13 1.88 -2.58 2.06 -1.5 0.2 -2.52 0.84 -1.8 1.89 -2.58 
+1.99 -1.02 2.32 -0.96 1.89 -0.57 0.46 -1.99 0.33 -1.37 2.17 -2.02 0.43 -1.91 0.28 -2.99 
+1.13 -3.26 0.93 -2.32 1.95 -3.06 2.8 -0.84 3.02 -1.82 1.76 -2.12 1.87 -2.61 1.15 -3.28 
+0.98 -2.82 1.76 -2.13 1.76 -0.06 1.82 -2.61 3.26 -0.72 2.71 -0.34 2.65 -2.41 3 -1.73 
+2.16 -2.04 2.54 -1.93 2.59 -1.84 1.41 -2.74 -2.26 -2.14 1.93 -1.04 2.04 -1.56 2.14 -1.97 
+1.93 -1.04 2.63 0.15 2.34 1.7 2.26 2.2 2.99 0.34 2.43 1.2 2.56 2.82 2.89 0.84 
+2.28 1.78 2.56 0.26 2.66 1.84 2.7 1.96 1.45 3.17 3.11 -0.09 0.52 -4.66 0.3 -3.63 
+-0.71 -2.93 0.67 -3.49 -1.09 -3.54 -0.78 -2.91 -0.89 -2.39 -0.35 -3.25 -0.84 -2.91 -0.79 -3.41 
+-0.46 -2.78 -0.3 -3.73 -1.87 -2.59 -1.39 -2.52 -0.89 -3.37 -0.97 -2.8 -1.84 -3.1 -1.48 -2.43 
+-1.89 -3.08 -1.45 -2.96 -1.97 -2.49 -2 -2.52 -2.54 -1.62 -1.95 -2.47 -2 -3.02 -2.11 -2 
+-2.02 -2.43 p
+-1.12 -2.8 -2.5 -3.06 -1.61 -3.34 -1.65 -2.32 -1.17 -3.23 -2.15 -2.41 -2.08 -2.9 -2.28 0.04 
+0.13 -3.41 -1.65 -3.76 -1.71 -3.82 -1.3 -2.65 -1.28 -3.17 -0.82 -3.08 -0.87 -3.1 2.3 -2.54 
+2.23 -2.54 -1.34 -3.17 -0.02 -3.45 0.43 -3.77 1.3 -3.23 0.8 -2.8 1.8 -1.15 1.74 -1.65 
+-0.09 -2.93 -0.54 -3 0.3 -2.86 -0.11 -2.46 -0.61 -3.45 0.68 -3.25 -0.18 -2.93 0.68 -3.3 
+-0.63 -2.97 -1.52 -2.59 -2.04 -2.69 -1.91 -2.17 -2.91 -2.8 -1.95 -2.13 -3.65 -0.99 -2.35 -1.22 
+-2.78 -1.3 -2.02 -2.62 -2 -2.56 -2.56 -3.11 -2.37 -1.23 -2.02 -2.58 -1.93 -1.61 -2.47 -2.11 
+-0.74 -2.87 1.56 -1.67 0.5 -3.23 0.39 -3.63 0.61 -2.28 -0.45 -3.26 -0.76 -2.39 0.02 -2.76 
+-1.76 -2.93 -1.95 -1.54 -2.8 -1.2 -3.76 -1.7 -1.89 -1.04 -2.8 -1.17 -2.3 -3.34 1.65 -0.8 
+-0.3 -1.8 -0.37 -2.32 -1.36 -2.8 -1.43 -3.25 -1.32 -2.78 -2.45 -1.55 -2.96 -2.02 -1.71 -2.32 
+-2.12 -2.39 -1.8 -2.78 -1.74 -2.34 -2.59 -2.32 -2.54 -1.95 -2.04 -1.84 -2.61 -2.37 -2.04 -1.84 
+-2.4 -1.43 -3.32 -1.89 -2.5 -1.9 -2.65 -0.55 -2.97 -0.13 -1.54 -1.37 -3.43 -0.15 -1.93 -1.39 
+-2.5 0.3 -2.82 0.76 -2.3 -0.97 -2.91 0.34 -3.12 -0.58 -1.91 -1.34 -3.45 -0.13 -3.06 -0.52 
+-1.89 -1.34 -3.04 -0.11 -1.86 1.63 -1.93 1.67 -1.82 -0.93 0.28 2.17 -0.59 2.09 -1.8 2.97 
+1.3 0.05 1.48 1.32 -0.02 3 -1.39 2.95 -1.54 2.11 -1.09 2.13 -0.52 2.99 -1.11 2.15 
+-0.61 2.99 -1.56 2.13 -2.54 1.63 -1.15 2.15 -1.69 1.67 -0.22 2.61 -0.7 3.02 -0.67 2.61 
+-0.33 2.19 0.17 2.65 -1.15 3.02 -0.3 2.21 0.17 2.67 -0.26 3.06 0.59 2.25 -0.83 2.21 
+-2.17 2.09 -0.82 2.21 -1.76 2.17 -0.8 3.08 -1.73 2.61 -1.3 2.63 -1.32 2.21 -1.85 1.7 
+-1.3 3.08 -0.37 2.67 0.07 2.28 0.55 2.71 0.06 2.71 1.5 2.78 0.59 2.74 0.98 2.76 
+1.04 3.21 1.04 3.25 1.91 2.32 2.43 1.49 1.48 2.37 0.96 2.34 0.56 3.21 -0.48 3.17 
+-1.41 1.8 -1.39 2.19 -0.91 2.71 -0.95 1.32 2.43 2.89 -0.96 2.71 -1.43 2.25 -0.46 2.73 
+-1.43 2.71 -1.43 1.76 -0.52 2.3 -0.93 1.34 0 2.32 -1.45 2.21 -1.95 2.24 -1.46 2.28 
+-1.91 1.73 -1.91 1.76 -1.97 1.8 -2.89 1.72 -1.91 2.71 -1.93 2.25 -1 2.76 -1.47 2.73 
+2.84 1.96 0.44 2.82 -0.05 2.8 1.39 2.41 -1.91 0.8 1.39 2.43 0.93 2.39 0.39 3.28 
+0.89 3.3 -2 2.28 -1.45 2.3 -2.34 0.34 -0.59 2.78 -0.8 -0.02 0 -4.23 1.43 -0.89 
+-0.93 -1.89 -1.43 0.39 0.93 2.39 0 4.23 -1.52 -0.06 -2.37 -0.54 -2.84 -0.11 -2.82 -0.61 
+-2.84 -0.54 -2.85 -0.08 -3.32 1.75 -1.02 3.73 -1.48 3.73 -2.86 2.26 -2.84 0.89 -3.28 -0.06 
+-3.32 -0.5 -2.85 -0.05 -2.82 -0.52 -3.28 -0.93 -1.41 -1.91 -3.79 -0.02 -3.3 -1.87 -2.39 -1.39 
+-2.32 -0.43 -2.84 -0.93 -2.41 -1.39 -3.28 1.43 -2.84 0.5 -4.25 1.02 -2.82 0.07 -2.39 -0.39 
+-3.29 -0.43 -3.37 -0.34 -2.37 -1.81 -3.36 -0.39 -2.86 -1.76 -2.32 0.54 -2.82 1.07 -3.27 2.5 
+-2.8 2 -2.26 1.98 -2.73 2.95 -3.73 2.13 -2.28 2.45 -2.76 1.57 -2.73 1.58 -2.69 3.02 
+-0.78 2.43 p
+-0.41 2.43 -0.3 2.86 -1.71 2.45 -2.21 2.54 -2.23 1.61 -1.26 2.47 -1.67 2.47 -2.25 1.17 
+-0.2 3.84 -2.34 -0.33 -2.15 1.63 -2.19 1.63 0.24 3.37 0.65 2.79 -0.17 3.34 -1.12 2.97 
+-2.15 1.65 2.39 1.2 1.54 2.26 1.97 2.17 0.32 3.82 2.3 5.51 0.67 2.8 0.26 2.85 
+-0.65 2.93 -1.46 3.02 1.91 1.72 0.26 2.84 -1.89 2.6 -2 2.11 0.71 2.8 0.79 2.78 
+1.84 1.26 1.54 2.26 1.7 3.67 1.52 2.19 1.93 2.21 2.39 2.2 1.63 3.17 1.11 2.3 
+1.11 2.75 1.39 1.3 2.65 1.17 1.46 1.76 1.13 2.75 1.87 2.23 3.77 0.16 3.45 1.15 
+1.84 2.26 3.04 1.19 2.22 2.17 1.84 2.26 1.5 3.21 -1.06 1.99 0.37 4.67 1.71 1.3 
+1.39 2.3 0.15 1.85 2.15 1.73 1.73 2.28 2.48 1.26 2.8 0.82 2.91 1.71 1.32 2.3 
+1.3 2.25 0.89 2.32 1.3 2.75 2.35 0.35 1.07 -1.89 3.03 -1.98 1.98 0.39 3.06 -0.07 
+1.97 0.39 2.67 -1.45 2.34 0.47 3.14 1.37 1.17 1.84 2.32 0.43 2.32 0.5 2.3 1.85 
+2.28 1.43 3.45 0.48 3.06 0.55 2.25 0.95 2.28 0.05 1.86 0.54 2.7 0.09 2.67 -0.41 
+1.56 -0.85 2.26 0.54 1.85 1.48 3.47 -0.78 1.85 1.06 3.49 -0.75 2.23 0.63 1.73 1.52 
+2.24 0.61 2.3 -0.28 1.41 -2.71 2.91 1.63 -0.91 -2.43 -1.39 -1.09 1.04 -3.19 1.67 -0.83 
+0.61 -2.28 -0.93 -2.45 -1.78 -2 -1.41 -1.52 0.58 -2.32 2.06 -0.83 1.93 0.66 0.98 -2.3 
+2.95 -1.17 2.45 -0.76 3.15 0.26 3.6 -0.11 2.84 -0.2 2.91 -1.13 2.89 -0.67 0.05 -0.37 
+0.32 -2.43 1.37 -1.28 2.58 -1.15 2.89 -0.14 4.1 -0.5 3.5 -1.47 2.69 -1.61 2.46 -0.14 
+1.82 1.22 1.39 1.63 0.37 2.43 -0.76 2.32 -1.13 1.74 0.85 2.08 2.36 2.71 2.52 1.37 
+2.62 0.85 3.19 0.06 2.89 -0.52 0.87 -2.26 2.8 -0.04 2.89 -0.43 2.75 0.48 1.67 -2.16 
+2.6 0.95 2.78 0.04 2.84 0.07 2.13 -0.58 2.54 -0.5 2.73 0.56 3.02 -0.86 2.19 1 
+1.95 1.9 2.3 2 2.59 1.06 3.12 0.26 0.16 -2.02 2.16 -0.46 0.22 2.04 1.93 -1.04 
+2.52 1.09 3.26 1.37 0.95 2.23 0.7 3.21 -0.15 3.02 -0.11 3.02 0.22 3.11 0.04 3.56 
+0.67 2.73 -1.28 2.71 -1.26 3.73 0.11 2.06 -1.35 1.63 0.71 2.3 -0.82 1.28 -1.43 -2.5 
+-1.39 -0.39 -1 0.2 0 -6.56 -1.75 -2.95 1.13 -1.21 -1.78 -0.46 -0.35 -1.43 -1.97 -1.24 
+-2.69 -0.14 -1.3 1.67 2.06 1 0.79 1.22 1.67 0.91 1.99 1.06 2.21 1.56 0 6.56 
+-2.3 0.43 -1.17 -2.32 -1.54 -2.41 -1.73 -0.45 -1.52 -1.41 -2.43 0.39 -1.65 1.58 -3.64 0.61 
+-2.62 -0.16 -0.05 -2.47 -2.87 -2.15 -2.4 0.41 -3.59 1.7 -0.97 -0.22 0 -1.75 -0.18 -2.24 
+-1.15 -1.43 -0.78 1.57 2.11 2.11 0 1.75 -1.54 -0.33 0.37 1.55 -4.34 -0.91 0.93 2.14 
+-2.19 1 -0.11 1.98 -2.04 0.52 -0.5 0.11 0 -16.34 0.35 -1.39 1.99 1.39 0.02 -1.64 
+-2.95 -0.8 -2.95 -0.71 -1.72 0.74 -2.37 0.09 -2.23 -0.39 -0.16 2.37 2.74 0.02 0.56 -0.89 
+2.13 0.91 2.04 -0.33 2.54 0.65 0 16.34 -1.91 0.39 -0.13 1.91 1.82 -1.08 0.93 0.71 
+-1.11 1.23 p
+-1.22 3.17 0.3 1.52 -3.38 -1.17 -0.16 3.36 1.22 2.2 2.45 0.52 2.41 0.52 2.78 0.61 
+2.39 0.56 -0.76 1.3 1.91 0.98 -2.98 1.26 -2.71 -0.63 -2.95 -1.13 -1 -1.67 -1.61 -2.11 
+-1.22 -2.19 -0.32 1.16 1.21 2.17 -1.98 -0.86 -1.87 1.54 -2.54 0.02 -1.62 -0.84 -2.21 0.08 
+-0.67 -1.56 -2.11 -0.39 1.39 -1.2 -0.37 -1.52 -2.11 -0.39 -2.67 1.91 0.43 -3.28 1.95 -2.08 
+1.89 -1.58 1.11 -1.72 1.8 -1.13 1.99 -0.62 0.83 -1.76 2.02 -0.61 -2.76 0.48 0.79 -3.3 
+-2.61 1.52 -2.65 0 -1.89 1.58 -3.17 -1 2.39 -0.58 2.49 -1.02 2.13 -2.54 -2.32 0.14 
+1.23 -2.24 1.83 -3.04 -2.21 1.52 -1.13 -2.08 -1.5 1.65 -1.83 -0.28 -1.04 1.25 -0.13 2.41 
+-2.6 1.5 0.71 2.02 1.97 1.3 -3.36 -0.08 -2.29 2.06 -2.04 2.54 -1.45 1.67 -1.91 2.12 
+-2.09 1.11 -0.57 2.78 -0.28 3.27 -0.15 2.39 -2.37 1.07 -2.45 1.52 -2.69 1.04 -2.89 2 
+-3.54 1.89 -2.47 0.15 -1.26 1.24 -2.62 1.11 -0.3 1.82 -1.25 1.26 -0.76 2.25 -2.97 1.52 
+-0.07 -1.87 -1.17 -1.08 -1.24 1.28 -0.61 1.85 0.43 1.43 -2.09 0.24 -1.8 -1.58 -1.63 -0.17 
+-0.11 -1.84 1.2 -1.29 -0.39 -1.93 0.58 -1.8 1.98 -1.65 1.91 -1.22 2.26 -1.17 1.41 -2.21 
+0.72 -2.29 1.25 -1.28 2.32 -1.15 2.67 -1.11 3.51 0.43 -0.73 -1.96 2.28 -0.7 2.73 -1.06 
+4.77 -2.22 2.59 -1.97 -0.37 -2 -1.52 0.3 -0.73 1.78 -2.21 0.17 -1.93 0.72 -0.76 -1.98 
+-0.26 -2.88 2.4 -1.11 0.42 -2.34 -2.02 -1.21 0.38 -2.3 -1.22 -1.56 -0.54 -1.5 -1.45 -0.17 
+-0.24 1.41 0.35 2.36 0.89 1.52 -0.73 2.3 -0.57 0.84 0 -6.59 -1.15 -2.52 -0.28 -2.87 
+0.98 -1.78 -0.43 -1.91 -3.11 0.11 -1.73 1.7 -2.32 0.28 -3.26 1.54 -1.48 -0.13 -1.82 2.19 
+1.72 1.59 2.21 0.22 2 -0.79 2.58 0.29 3.28 0.8 2.82 1.28 0 6.59 -0.91 1.37 
+-0.63 1.81 -3.06 0.61 -1.43 2.15 -1.5 0.34 -2 1.2 -2.08 1.65 -2.82 -0.28 -2.32 1.17 
+-2.08 2.17 -2.41 2.08 -2.11 -0.18 -0.57 1.84 -2.36 2.11 -1.3 2.24 -0.7 2.76 -2.15 0.21 
+0 -5.96 0.28 -2.78 0.52 -1.81 -0.52 -1.95 -0.02 -0.13 0 -3.1 2.04 -2.21 0.59 -2.26 
+0.24 -2.34 -0.11 -2.37 -0.54 -2.34 -1.84 -0.13 -1.3 -1.97 -2.02 1.78 0.15 2.8 -0.24 2.8 
+-1.28 2.21 -0.17 1.89 1.13 -0.43 1.39 0.58 1.97 2 0 3.1 -0.39 -2.69 -2.37 2.19 
+-0.54 1.8 0.15 2.37 2.02 1.08 0.87 1.91 0 5.96 -0.3 0.04 -1.45 0.82 -2.11 0.3 
+-1.65 -1 -0.87 -1.95 -2.32 -1.02 -2.37 -1.52 -1.56 -1.98 -2.45 -0.57 -2.54 1.28 -2.82 0.34 
+-2.48 0.85 -1.71 -1.43 -2.39 -1.46 0.43 -2.75 0.48 -3.21 -0.72 -0.5 0 -10.66 2.26 -1.34 
+-1.43 -2.28 -1.58 1.25 -2.15 0.39 2.9 1.97 0 10.66 -1.36 -0.93 -2.5 -1.95 -2.5 -0.91 
+-2.15 -0.98 -2.17 -3.23 -2.17 -2.8 -1.48 -2.35 0.35 -2.34 2.23 -1.84 -2.61 -1.84 -1.54 -1.89 
+-0.74 -2.3 -2.25 0.02 -2.32 -2.78 -1.61 -2.32 -2.65 0.04 -2.64 0.07 -2.72 0.06 -2.66 -0.37 
+-2.32 -0.87 -2.43 -2.28 -2.24 1.06 -1.35 2.86 -0.69 1.43 -2.2 1.52 -1.91 0.08 -1.93 -0.84 
+-2.21 0.63 p
+-2.74 -0.32 0.98 2.3 0.24 2.8 0.61 2.78 -1.84 0.11 -0.93 1.91 0.61 2.78 1.63 1.8 
+0.7 3.2 0.96 2.75 0.61 2.3 -0.48 2.84 -0.18 1.84 0.56 2.32 -1.45 3.32 1.2 1.32 
+2.52 0.29 1.58 2.23 3 -1.56 2.8 -0.15 3.16 0.28 3.11 -0.57 2.71 -1.04 3.56 0.82 
+3.47 -0.52 2.41 -0.54 2.13 0.46 1.07 1.39 0.76 3.19 0.37 2.32 0.39 3.21 0.37 3.19 
+-0.97 2.34 -1.98 1.39 -0.98 1.39 0.37 1.39 -1.58 1.82 -0.66 0.95 -2.6 0.5 -2.22 1.43 
+-1.95 0.06 -1.59 1 -0.15 2.75 2.25 0.38 1.98 0.86 2.58 0.37 1.21 -1.84 2.61 0.39 
+2.24 -0.02 -0.57 3.23 -1.24 2.76 2.24 -0.02 0.93 -2.32 1.91 0.43 2.21 -0.45 0.63 2.32 
+1.54 0.87 1.89 0.5 1.57 0.89 0.25 2.32 0.59 1.8 2.13 0.96 2.41 1.43 2.11 0.98 
+1.43 1.84 1.11 1.84 0.79 1.87 0.48 2.25 1.13 0.55 0.2 -2.72 1.56 -0.87 1.41 1.43 
+-0.11 1.37 -1.52 0.35 -0.17 2.28 1.95 1.04 3.23 0.18 1.02 1.41 2.34 0.16 1.85 -0.78 
+0.07 1.8 1.28 1.46 -1.28 1.26 0.99 1.02 -1.32 1.7 -0.32 2.69 -1.84 1.22 -0.57 2.23 
+-0.3 2.7 0.35 1.8 1.2 1.46 2.34 0.67 1.06 1.87 2.06 0.63 0.28 -1.78 -0.48 -2.32 
+0.26 -1.76 1.89 0.18 0.28 -1.76 -1.34 -0.74 0 -2.6 1.74 -0.98 0.09 -1.74 -2.09 -0.19 
+-1.41 2.17 1.67 0.74 0 2.6 -0.7 -0.39 -0.99 -2.8 -0.76 -2.78 2.15 -1.17 0.2 -1.37 
+3.34 -1.06 -0.32 -1.82 2 0.2 1.5 1.52 1.3 1 2.19 0.74 1.16 1.5 1.5 -1.69 
+-1.28 -1.02 2.14 -0.7 1.81 -0.22 2.58 1.71 2.74 0.81 1.84 2.08 2.56 1.32 2.64 0.88 
+1.82 -2.5 1.96 0.33 1.41 1.19 0.2 2.39 2.08 1.78 0.29 2.86 -1.07 2.59 -0.93 3.08 
+0.5 1.93 0.21 2.84 2.13 0.93 1.97 -1 1.63 -1.57 1.93 -0.02 1.09 1.65 -1.91 5.21 
+-1.89 0.04 -1.52 2.02 -0.8 2.19 1.47 1.74 2.24 0.98 2.47 1.04 2.95 -0.17 3.11 0.82 
+0.58 1.59 1.59 2.34 3.19 -0.06 -2.17 1.8 -1.67 -0.93 -3.02 1.52 -3.19 -0.87 -2.19 -1.47 
+-2.24 -1.5 -2.21 -1.5 -2.47 -1 -1.2 0.13 0 -5.54 1.93 -1 -1.52 -0.93 -0.09 0.11 
+0 -0.7 2.71 -0.11 -1.13 -1.34 -1.15 -1.37 -1.43 1 1 1.82 0 0.7 -0.48 0.67 
+0.16 1.15 0 5.54 -1.74 0.17 -1.89 1 -2.56 0.87 -0.58 1.72 0.07 2.78 -1.41 1.63 
+0 -21.66 -0.95 -1.43 0.61 -2.22 -1.28 -1.32 -1.13 2.13 0.67 1.65 2.08 1.19 0 21.66 
+-0.63 0.74 -1.11 2.54 0.2 2.78 1.41 2.62 1.15 3.04 1.26 2.56 0.41 2.89 1.24 1.25 
+-1.09 2.5 -2.69 1.17 -1.43 -0.78 -1.56 -0.37 -1.95 0 -0.37 -1.88 -1.09 -1.18 0.68 -1.21 
+-0.63 -1.96 2.12 -0.91 -1.08 -2.04 -0.24 -1.91 -1.76 -1.71 -1.3 -1.61 -1.47 -2.08 -1.04 -2.89 
+-0.52 -1.46 0.48 -2.64 0.26 -2.67 0.83 -2.16 2.41 -1.41 2.39 -1.41 1.24 -1.65 -0.35 -1.43 
+-1.34 -1.61 1.21 -0.67 -1.89 -1.7 -1.8 -2.14 -0.07 -1.82 0.65 -2.65 0.02 -2.3 0.2 -3.14 
+-0.59 -3.28 -1.91 -0.28 -2.15 -0.29 -1.17 -2.45 0.61 -1.74 -1.91 -0.22 -2.23 -0.26 -0.33 1.76 
+-1.48 2.13 p
+0.48 1.87 -1.23 1.08 0 -3.41 0.91 -2.08 -1.15 -1.39 1.02 -0.93 -1.85 -1 -0.65 0.04 
+0 -1.26 1.75 -0.32 -0.69 -0.93 -1.63 -0.68 -1.32 1.24 1.89 0.7 0 1.26 -1.34 0.13 
+-1 2.63 2.04 1.3 2.02 1.3 0 3.41 -1.09 0.93 -1.52 2.56 -1.59 2.97 -1.52 2.56 
+-1.28 3 -1.74 1.2 -0.73 -1.85 -1.52 -0.15 -2 -2.41 -1.33 -1.89 -2.45 -1.52 -2.69 0.26 
+-2.74 1.17 -1.43 1.29 0.08 2.25 1.39 1.82 -2.25 -0.54 -0.68 1.74 0.85 1.87 -1.67 2.11 
+-0.41 2.21 -0.67 2.21 1.09 1.78 -1.09 1.72 1.98 1.88 1.69 1.84 1.61 2.32 2.71 0.63 
+1.13 1.82 0.82 2.3 1.74 -1.17 1.21 2.32 1.17 2.3 1.15 3.23 1.8 1.95 0.48 2.71 
+0.56 2.3 0.33 2.21 0.67 2.32 1.43 2.41 0.22 2.21 1.93 2.96 -2.52 -0.81 -2.14 -0.74 
+-2.04 -2.06 1.21 2.37 2.76 1.3 -1.63 1.09 1.65 1.56 1.34 1.95 0.2 -2.62 1.07 1.49 
+0.7 -1.62 1.46 2 -1.37 0.19 -0.54 1.71 2.02 1.2 0.89 2.84 2.54 0.5 2.37 1.43 
+0.79 2.43 1.41 1.7 2.34 -0.79 0.35 1.89 1.2 1.26 1.23 -2.91 1.09 2.17 1.52 -1.91 
+0.26 3.32 2.91 -0.02 2.71 -0.55 2.58 -0.58 -1.26 -2.34 -2.64 -0.33 3.32 -0.87 2.65 0.39 
+1.11 1.37 2.41 -0.13 1 -1.56 2.99 0.59 3.06 0.21 3.06 -0.26 3.06 -0.78 3.04 -0.7 
+2.8 -0.3 2.95 -0.7 2.17 -1.65 1.78 -2.3 -0.2 -2.17 -1.37 -2.15 -2.14 -1.5 -2.86 -0.13 
+-2.39 -0.48 -2.23 -0.33 -2.91 0.42 -2.98 -0.13 -2.95 0.95 2.7 -1.99 2.54 -0.57 3.43 -1.24 
+1.5 -2.4 1.26 -2.04 1.47 -2.43 0.31 -0.02 2.95 -0.28 1.43 -0.43 2.13 -0.65 2.9 1.15 
+-1.61 2.41 -1.71 -0.7 -2.97 1.3 -0.13 2.02 2.13 0.3 2.87 -0.34 2.36 0 2.87 0.71 
+-2.8 1.87 -2.49 1.52 0.63 2.34 1.2 2.11 0.13 2.23 2.34 0.57 2.08 0 -0.08 2.1 
+-1.93 2.26 -1.93 0.11 -1.25 2.61 -2.23 2.61 -3.3 1.02 2.91 0.41 2.11 1.13 2.04 -0.54 
+2.43 -1.43 -1.8 -1.52 0.56 -2.48 2.34 0.22 2.3 -1.02 1.87 1.06 0.52 2 -2.43 2.58 
+0.93 1.67 0.81 2.24 0.3 1.97 1.02 1.89 0.33 2.06 0.3 2.06 2.43 -1.97 2.84 -0.39 
+-1.02 1.74 1.15 1.47 1.99 0.98 -0.25 2.39 0.43 1.75 2.91 -2.25 1.52 0.59 -1.71 1.32 
+0.52 1.13 -0.48 1.67 -2.48 0.54 -2.19 0.89 -2.61 -0.24 -2.06 0.28 -1 1.83 3.56 -0.33 
+3.73 0.65 2 1.26 3.17 0.11 1.64 1 2.48 0.32 0.5 0.2 1.71 0.65 2.61 -0.24 
+2.37 0.29 -2.24 2.4 -2.25 -0.17 -3.36 1.04 -1.98 -0.63 -1.82 1.13 -1.91 1.96 -2.84 0.76 
+-2.19 1.61 -0.63 2.6 -1.93 1.96 -2.76 1.78 -1.93 1.98 -1.93 1.91 -0.16 1.73 2.37 -0.37 
+1.24 -1.13 2.69 1.07 2.04 -1 2.13 -1.71 2 -2 3.23 -0.2 2.97 -1.49 2.97 -1.54 
+3.32 -1.93 2.95 -1.59 3.45 0.11 1.99 -1.91 2.46 -1.37 1.75 -2.39 1.15 -2.12 0.35 -3.15 
+3.64 0.2 -0.37 2.3 -0.82 2.67 -1.91 2.15 -1.65 2.63 -3.77 1.33 -2.89 1.66 -0.68 2.11 
+-1.91 -2.04 -3.73 1.46 -2.84 1.75 -2.04 1.91 -2.96 0.56 -2.52 0.11 -2.54 2.21 -0.32 1.65 
+-1.65 1.57 p
+-2.17 0.82 -2.17 -0.43 -0.76 0.84 2.73 0.33 3.26 -1.07 2.28 -1.69 3.06 -1.41 4.34 3.38 
+-1.91 -0.02 -2.54 -1.21 -2.95 0.47 -0.41 1.52 2.13 0.43 -0.7 1.22 -2.93 -0.87 -1.08 1.61 
+2.04 0.32 0.61 1.3 2.22 0.8 3.16 0.37 -0.39 2.09 -3.04 0.06 -1.78 -1.37 -3.21 1.17 
+-3.97 0.74 0.28 2.23 0.15 2.39 -0.48 2.19 -0.07 2.36 -2.86 0.11 -2.24 0.71 -1.97 1.65 
+-1.96 1.91 -1.39 2.56 -0.98 2.04 -2.16 1.61 0.02 1.7 -1.78 2.73 2.3 -0.63 -1.43 3.23 
+-2.21 -0.29 -0.3 2.22 -3.43 0.21 -3.19 1.69 -2.64 1.63 1.69 2.02 2.87 -1.91 -0.52 1.84 
+0.04 1.58 3.8 -1.13 -0.52 1.54 -1.82 0.33 -0.57 1.52 -0.17 1.71 0.52 1.43 1.63 1.34 
+2.63 0.59 3.43 0.09 2.89 -1.25 3.64 -1.76 2.89 -1.65 3.5 -1.76 1.63 -1.58 3.08 -1.02 
+-0.43 1.48 -1.65 1.73 -1.8 1.82 -1.37 -0.89 -2.04 0.87 0.63 1.33 0.63 1.11 -0.58 1.32 
+-2.68 -0.32 -0.97 -1.65 -1.41 0.58 -0.18 1.58 2.56 -0.52 3.39 1.25 -1.89 1.48 -1.28 1.37 
+0.13 1.82 -1.11 1.84 2.82 0.07 -0.18 2.13 -1.34 2.73 -1.82 1.65 -1.61 -1 -2.32 -0.15 
+-1.8 2.28 -0.7 2.91 -0.87 2.3 1.48 2.32 3.41 0.37 3.5 -0.37 2.17 1.63 1.21 1.87 
+-0.28 1.54 -3.04 0.49 -2.84 -0.34 -2.91 -0.3 1.08 1.93 -0.41 1.52 -2.3 0.26 -1.78 0.89 
+-0.39 1.39 -3.55 2.17 -2.29 2.09 -1.32 -1.56 -1.17 -1.15 -2 -0.14 -2.34 1.59 -0.84 -1.37 
+-2.35 1.93 0 -46.89 1.56 -1.76 0.43 -2.08 1.98 -1.71 -0.78 0.17 0 -31.41 2.82 -1.63 
+0.37 -2.21 0.11 -2.41 -0.43 -2.06 0.52 -2.56 0.43 -2.52 1.37 -2.3 0.97 -2.56 1.26 -2.3 
+1.21 -2.34 1.11 -2.34 1.37 -2.17 2.37 -2 2.78 -1.67 2.82 -1.02 3.41 0.2 -0.16 -1.5 
+-2.6 -1.37 -2.87 -0.93 -1.34 0.15 0 -10.07 3.3 -0.22 0.91 -1.73 -1.34 -2.02 -2.56 1.88 
+-0.3 2.09 0 10.07 -1.65 0.19 -3.54 0.5 -2.3 2.02 0.28 2.02 -1.93 1.11 -1.43 2.64 
+0.11 1.98 -2.21 0.8 -0.8 2.56 -1.97 2.91 -1.67 1.2 0.5 2.43 -0.65 1.48 -0.78 2.11 
+-0.09 2.78 1.67 1.75 0.61 2.32 -1.28 1.73 -0.26 2.3 1.89 0.71 0 31.41 -2.13 0.48 
+-3.54 0.84 -3.02 0.7 -1.34 0.93 1.37 1.39 2.06 1 3.41 0.04 0 46.89 -0.15 0.13 
+-2.02 1.65 -1.82 1.5 0 -3.17 2.75 -2.14 0.33 -1.65 -2.32 -0.41 -0.87 0.34 0 -0.78 
+1.43 -0.46 -1.45 -0.99 -1.21 0.8 1.23 0.66 0 0.78 -1.52 0.63 0.05 2.34 1.58 0.89 
+0 3.17 -0.24 0.2 -1.73 2.25 -3.15 1.61 -1.89 1.72 1.76 1.67 -0.35 1.39 -1.89 0.85 
+-0.8 1.56 1.32 1.07 -2.71 0.72 -0.17 0.06 0 -21.09 2.93 -0.3 0.39 -1.21 3 -0.91 
+2.58 -0.79 1.22 -1.32 -1.43 -2.09 -3.04 -1 0 -38.78 2.99 -0.67 2.85 0.17 0.74 -1.41 
+-1.05 -1.34 -1.02 -1.74 -2.87 -0.43 -1.21 -1.54 -2.84 -0.17 -2.84 1.49 -2.89 0.67 -2.32 1.91 
+1.67 0.52 1.65 0.7 1.76 -0.46 2.24 0.32 0.99 1.3 2.15 0.67 0 38.78 -0.91 -0.32 
+-3.19 0.7 -0.5 2.82 -3.41 -0.32 -0.09 1.97 -1.04 0.61 -0.72 1.28 1.15 0.74 3.06 0.15 
+0 21.09 p
+-2.24 0.87 -3.75 0.68 -2.91 1.34 0 -17.77 2.08 -0.95 1.82 -2.59 -1.02 -2.13 -0.57 1.13 
+-2.62 1.74 -2.19 1.78 2.5 1.02 0 17.77 -0.24 0.11 -2.84 1.28 -0.91 1.11 0 -96.24 
+2.82 -0.74 0.28 -1.34 -1.32 -0.68 2.6 -1.28 0.31 -0.96 -1.85 -1.12 0.68 -1.89 -1.18 -1.06 
+-0.89 1.87 1.39 1.09 -1.75 1.34 0.7 2.02 -1.17 1.02 -0.61 1.74 0 96.24 -0.32 0.39 
+0.45 1.72 2.5 1.08 -2.21 1.76 -4.1 1.13 -1.3 0.22 0 -105.02 2.52 -1.09 1.15 -1.7 
+1.61 -0.15 -0.43 -1.8 -0.87 -0.24 0 -1.54 1.82 -0.16 -1.13 -1.17 -0.7 1.33 0 1.54 
+-1.39 -0.39 -0.85 1.08 1.07 0.93 -1.67 1 0 -5.12 0.45 -1.61 1.37 -1.02 -0.91 -1.11 
+-1.7 -0.33 -1.15 0.95 -1.06 -0.67 -1.52 -0.09 0.35 2.54 1.46 -0.04 0.93 -0.74 0.63 2.04 
+1.15 0.07 0 5.12 -0.43 0.25 -0.7 2.09 0 105.02 -3.49 0.58 -4.23 1.33 -3.23 1.3 
+-2.3 -0.61 -2.17 -0.98 -2.6 1.06 0 -127.66 0.84 -1.37 -0.2 -2.48 -1.41 -1.73 -3.69 -0.09 
+-3.21 1.21 1.32 -2.45 3.67 -0.95 1.71 -1.74 2.04 -1.28 2.89 -0.98 -1.61 -3.08 -2.82 0.21 
+0 2.63 -1.82 0.93 -1.46 2.02 -1.13 -1.32 0.67 -1.89 -0.11 -2.75 -0.11 -2.63 0.39 -2.5 
+-3.45 2.08 -2.34 2.09 -1.08 2.13 1.43 1.58 -2.46 -0.37 -2.54 2.08 -1.56 2.95 -0.48 2.04 
+3.11 0.83 2.12 -0.46 0.33 1.87 2.02 -0.17 -0.63 1.56 1.58 1.63 1.76 -1.3 1.5 1.67 
+2.28 -0.29 2.43 0.31 0 127.66 -0.22 0.09 1.08 0.84 2.5 -0.41 0.39 1.3 -2.5 1.11 
+-0.17 1.37 -2.52 0.04 -2.02 -0.73 0.59 -1.78 -0.84 -2.26 -3.71 0.79 -3.52 0.7 -3.58 0.67 
+-4.12 0.26 -3.34 1.15 -3.45 0.74 -0.72 0.23 0 -5.88 0.34 -1.17 -3.38 -1.63 -4.38 -0.07 
+-2.21 1.41 4.43 1.2 2.17 -0.39 3.04 0.65 0 5.88 -2.34 0.8 -0.7 0.35 -2.71 1.3 
+-2.76 1.24 -3.84 0.86 -0.61 0.2 0 -251.65 0.48 -1.34 -2.72 -1.7 -1.21 -2.21 2.43 0.41 
+2.15 -0.07 2.64 -0.04 0.24 -1.82 -0.86 -1.75 -1.18 -2.23 -1.43 -1.76 -1.71 -1.3 2.19 -0.04 
+2.21 -0.98 1.06 -1.78 0.5 -2.71 1.08 -2.28 2.3 -0.89 0.85 -2.28 0.61 -1.78 0.87 -1.37 
+0.57 -1.84 -1.15 -1.34 0.89 -0.87 1.17 1.36 1.48 0 2.09 -0.91 0.93 -1.78 -0.85 -2.3 
+-2.08 -1.37 -1.5 -2.3 3.08 -0.41 -1.8 -2.32 -3.12 -0.89 -2.78 0.02 -2.78 0.45 -2.5 -1.32 
+-2.76 0.98 -2.52 -0.41 -0.74 -2.24 -3.05 0.98 -2.29 -1.71 -1.84 0.52 2.3 1.76 1.95 1.73 
+1.7 2.23 2.13 -0.06 1.84 -0.04 1.28 2.19 -2.47 -1.3 -1.76 1.41 -1.8 0.57 -2.47 -0.39 
+-0.52 1.39 2.23 1.26 1.84 0.87 0.16 2.71 -2.11 0.09 1.32 1.73 -0.52 1.39 3.21 -0.54 
+2.07 0.37 0.11 2.28 1.21 2.24 -1.71 0.04 -1.35 1.84 1.24 2.21 -2.61 -0.82 -2.62 -0.83 
+-1 1.89 1.61 3.06 -1.26 1.85 -1.82 -2.13 0.13 1.78 -1.95 0.09 2.37 1.67 0.43 2.23 
+-1.98 -0.8 0.16 1.82 1.58 2.6 -2.15 0.11 -1.24 1.41 1.18 0.8 1.52 -0.93 0.41 1.76 
+1.48 1.69 1.21 2.19 2.87 -0.11 2.87 0.33 0 251.65 -2.91 0.96 -2.8 1.11 -1.93 1.5 
+-4.21 -0.37 p
+-4.95 0.09 -3.28 1.23 -3.91 1.09 2.08 1.3 1.2 1.45 3.69 0.48 -0.62 1.86 1.61 1.45 
+0.41 1.67 3.8 -0.29 4.16 -0.91 2.84 -0.78 0.87 -1.56 3.54 -0.44 2.24 0.71 2.91 -0.24 
+1.21 -1.58 0.63 -1.59 3.06 1.3 -2.3 1.26 1.41 1.93 1.17 0.48 1.47 0.47 3.3 0.92 
+4.17 -0.42 0.17 1.59 -3.04 0.11 -0.83 1.26 -0.82 1.91 -1.55 1.91 -1.61 1.24 2.72 1.54 
+3.23 -1 4.64 -0.17 3.1 0.78 3.82 0.39 3.29 0.98 3.13 0 3.45 0.93 3.54 0.82 
+3.93 0.74 3.89 0.39 2.28 1.52 1.56 -1.48 2.3 -1.32 3.67 -0.98 3.45 -0.04 3.32 0.26 
+3.76 0.8 -1.39 -1.93 3.84 -0.26 3.28 0.52 1.93 -1.15 3.93 -0.37 1.84 1.11 2.28 1.02 
+3.75 0.57 3.04 0.7 0.63 1.48 -2.71 0.13 -1.84 1.49 3.52 0.63 1.28 1.23 -1.37 1.02 
+0.72 1.69 2.49 -0.07 1.13 -1.3 2.84 -0.22 2.95 0.67 1.24 1.54 -0.59 1.78 2.82 0.07 
+2.15 -1.02 4.16 -0.78 3.64 0.04 2.28 1.13 1.09 1.19 0 136.98 -1.02 0.17 -3.6 0.61 
+-7.16 1.13 -7.14 1.04 -7.12 0.96 -7.07 0.89 -0.39 0.05 0 -151.78 -2.88 -1.15 -2.93 0.11 
+-0.05 0.98 5.86 0.07 0 151.78 -6.68 0.74 -7 0.71 -6.96 0.65 -6.95 0.54 -6.9 0.48 
+-3.08 0.18 0 -127.41 2.43 0 2.13 -0.87 -1.97 -0.02 -2.58 0.89 0 127.41 -3.78 0.22 
+-6.81 0.32 3.34 -0.12 3.43 -0.18 1.74 -0.09 1.75 -0.11 1.76 -0.08 1.8 -0.11 1.8 -0.12 
+1.82 -0.11 1.84 -0.12 1.87 -0.14 1.87 -0.15 3.82 -0.3 1.95 -0.15 -0.32 0.02 -2.32 0.2 
+-2.3 0.2 -2.34 0.18 -2.34 0.2 -2.37 0.15 -2.37 0.17 -2.38 0.16 -2.41 0.13 -2.43 0.15 
+-2.43 0.14 -2.45 0.1 -4.95 0.22 -2.5 0.09 -0.26 0.02 -2.25 0.07 -5.06 0.15 0 0.11 
+-2.34 0.06 -25.15 0 -4.39 -0.11 -1.47 -0.04 0 -122.92 -0.85 -0.89 -2.61 0.41 3.45 0.48 
+0 122.92 -4.19 -0.11 -5.64 -0.24 -3.06 -0.13 0 -165.23 0.48 -1.26 -4.6 -0.61 -2.89 0.52 
+-3.86 -0.28 3.28 1.52 4 -0.71 3.6 0.83 0 165.23 -2.59 -0.12 -11.28 -0.7 -5.64 -0.44 
+-5.64 -0.45 -0.71 -0.06 0 -154.82 3.04 -0.33 -2.61 -0.84 -2.59 -0.89 -2.58 -0.25 -0.63 0.8 
+2.39 1.22 2.97 0.3 0 154.82 -4.52 -0.43 0 -129.08 -2.02 -3.02 -2.52 -0.8 -0.57 0.78 
+1.41 0.85 3.69 2.19 0 129.08 -0.39 -0.04 -5.64 -0.52 -0.84 -0.11 0 -131.84 -1.85 -1.61 
+0.81 -1 -3.91 -0.89 -0.79 0.89 2.56 1.31 3.17 1.3 0 131.84 -4.77 -0.54 -5.62 -0.65 
+-2.23 -0.28 0 -136.98 1.58 -0.52 -3.75 -2.56 -4.1 -2.11 -1.48 -2.06 -3.43 -2.02 -3.97 -1.62 
+-0.85 -2.26 -2.86 -2.34 -1.32 -2.2 -1.52 -1.93 1.57 -1.82 1.89 -1.69 2.02 1.09 3 0.78 
+-0.17 1.3 4.46 -0.48 5.84 1.91 1.87 1.25 2.73 -0.82 0 -1.32 3.82 -1.17 2.13 2.23 
+3.43 0.93 3.19 -0.79 3.71 -1.02 2.58 -1.34 4 -0.71 -0.31 -2.7 -1.28 -2.28 0.26 -1.26 
+-2.06 -1.52 -3.97 -0.02 -1.47 -2.11 -4.11 -1.52 0.7 -1.89 2.96 -0.87 0.41 -1.58 2.54 1.41 
+1.8 1.52 3.8 0.35 4.04 1.3 5.23 0.45 1.87 -0.93 -0.42 -1.39 3.25 0.28 2.26 -0.21 
+-2.43 -2.15 p
+-2.91 -1.61 -2.8 -1.65 -2.61 -0.63 -1.32 1.41 -4.95 -1.29 -0.32 -1.52 3.43 -0.79 3.88 -0.43 
+2.75 -1.41 4.36 -0.28 3.43 -0.74 0.61 -1.93 -3.04 -1.02 -3.26 -1.43 -0.39 -1.66 0.37 -1.93 
+-1.65 -2.2 -2.62 -1.13 -2.17 -2.47 -3.21 -1.19 -1.3 -2.56 -1.06 -0.15 0 -74.74 2.97 -0.65 
+0.2 -1.52 1.43 0.24 1.54 -0.82 2.02 -1.13 2.59 -0.58 1.63 -1.91 0.11 -1.37 1.17 -0.84 
+0.82 -1.41 -0.13 -1.67 0.3 -1.7 -0.87 -1.41 0.02 -1.26 -1.26 -0.62 -2.08 0 -0.91 0.08 
+0 -0.91 3.21 -0.48 3.91 -1.61 0.17 -2.62 2.82 1.28 1.65 -1.52 2.45 1.15 3.19 0.43 
+3.63 -0.67 3.04 -0.11 2.58 -1.47 2.64 -1.11 0.89 -1.86 -0.11 -1.39 1.45 -1.06 0.7 -1.61 
+-2.34 -0.71 -3.06 0.33 -2.08 0.82 -1.82 -0.37 3.69 -1.19 -1.04 -1.76 1.63 -0.08 0.72 1.28 
+1.82 -0.22 -0.34 -1.37 -1 -0.62 -2.15 -0.81 -2.23 -1.75 2.63 0.13 2.19 0.71 1.74 0.93 
+1.02 -0.71 2.22 1.19 2.71 -1.06 1.02 -1.93 -3.46 -2.34 -2.08 -1.3 -0.74 -0.63 0 -92.34 
+-1.5 -1.5 0 -19.05 -1.04 -2.64 -2.87 -2.08 0.93 1.28 0.2 1.82 2.78 1.63 0 19.05 
+-0.37 -0.37 -1.37 0.52 0.61 1.13 2.63 0.22 0 92.34 -1.5 -1.26 -1.82 -1.89 -1.26 -1.8 
+-1.78 -1.2 -0.41 -2.02 -0.78 -1.07 0 -120.86 2.5 -0.59 2.21 -0.61 0.98 -1.84 0.37 -2.71 
+-2.45 -1.67 0.39 -2.3 0.07 -2.73 -0.78 -2.25 -0.76 -2.2 -3.36 -0.3 -2.89 -1.61 -2.82 -0.74 
+-3.06 -0.22 -1.65 1.52 -0.59 2.34 2.09 -0.17 1.23 2.64 2.11 2.56 -1.76 0.16 -1.52 1.93 
+1.91 1.2 -1.61 1.07 1.11 1.71 2.3 -0.2 2 -0.13 1.28 1.26 -1.61 1.04 1.69 2.11 
+2.63 0.73 0 120.86 -0.85 -1.2 0.43 -1.84 -0.07 -2.58 -0.95 -1.54 -2.34 1.39 -0.79 -0.34 
+0 -7.45 0.79 -1.99 -1.54 0.04 0.76 1.96 0 7.45 -1.26 -0.5 -0.91 -1.76 1.96 -0.95 
+-0.11 -2.61 -0.97 -2.41 -2.09 -2.36 2.02 -0.42 -1.48 -1.9 -4.21 -0.42 1.61 -1.25 -0.72 -1.76 
+-2.24 0.24 -1.39 -0.61 -1.86 -0.63 1.48 -1.04 -0.61 -2.54 -1.17 -1.56 -1.93 1.65 -1.78 1.54 
+0.87 -2.02 1.26 -2.15 0.69 -2.37 -0.87 -2.08 -1.17 -2.43 -2.64 0.17 -1.46 1.24 0.48 2.17 
+0.28 1.74 -2.25 -0.28 -0.72 -2.56 -2.7 -0.65 -0.61 -1.22 3.04 0.57 2.06 -1.89 2.3 -1.05 
+-2.04 -1.32 -2.93 -1.09 -2.82 -1.15 -0.83 -0.21 0 -14.24 1.58 -0.84 1.13 -2.06 -0.89 -3 
+2.93 0.28 1.09 2.5 0.95 -1.54 1.43 1.09 2.56 0.02 1.34 -1.15 2.06 0.56 1.89 1.46 
+1.04 -1.5 2.32 0.09 -0.56 -3.02 2.17 -1.63 -0.7 -3 -2.73 -2.3 -3.78 -0.81 -2.86 -1.39 
+-2.52 0 -3.34 -1.21 -3.02 1.43 -2.15 1.79 -4.49 0.95 2.71 1.73 -0.5 2.87 -3.49 0.8 
+3.54 1 2.49 1.32 -1.3 1.17 -2.32 -0.34 -1.65 0.82 2.08 1.34 0.89 1.67 1.58 -0.37 
+0.5 1.25 0 14.24 -1.84 -0.46 -3.21 -0.5 -3.02 -0.02 -2.58 -0.33 0 -220.03 -0.54 -1.39 
+-1.67 -0.35 -0.35 -3.27 -2.19 -0.78 0.15 1.41 2.39 2.64 0.93 1.33 1.28 0.41 0 220.03 
+-0.67 -0.08 -2.78 0.89 -2.43 -0.61 -2.95 -1.43 -2.13 -1.72 -0.73 -0.5 0 -221.16 1.41 -0.67 
+0.04 -1.43 p
+-1.73 -0.28 -0.48 1.49 0.76 0.89 0 221.16 -1.54 -1.08 -0.63 -0.22 0 -217.27 -1.08 -2.24 
+-1.34 -0.82 -1 2 1.67 0.11 1.75 0.96 0 217.27 -2.19 -0.76 -3 -0.85 -3.93 -0.45 
+-3.25 1.34 -3.08 0.26 -2.13 -1.67 -1.84 1.39 -1.06 -3.73 -1.87 -2.3 -2.26 -2.13 -3.43 -1.63 
+-3.25 -0.58 -1.34 -3.67 -2.91 -1.84 -2.32 -2.13 -1.91 -2.32 -2.75 -1.96 -2.26 -0.04 -1.87 3.13 
+0.11 2.67 -1.56 1.93 -2.78 2.02 0.02 4.02 0.87 2.95 1.09 3.39 0.83 1.82 1.21 4.54 
+1.61 1.95 0.11 2.3 2.54 2.61 1.74 3.04 0.26 3.46 2.25 2.13 1.82 2.41 2.78 2.35 
+3.25 2.06 3.09 0.87 2.55 -1.71 3.71 2.88 1.87 2.97 -3.45 -0.89 -3.1 0.91 0.02 2.78 
+3.12 2.06 3.21 1.96 1.87 -1.58 0.93 -2.82 1.8 2.37 -0.89 1.87 1.93 2.88 -2.47 -0.63 
+-1.67 1.28 0.61 1.52 2.95 1.45 1.39 2.06 3.34 1.93 1.82 1.7 1.17 2.34 2.56 1.82 
+1.37 2.61 1 1.97 1.84 1.24 -0.76 1.97 0.43 2.63 -1.45 1.56 -1.76 1.61 -2.17 0.54 
+-0.17 2.43 0.83 1.67 1.8 -0.09 0.24 1.93 0.78 1.43 2.11 -0.43 1.59 -1.13 0.41 2 
+1.89 1.2 -1.05 1.02 1.17 1.89 2.89 0.43 2.07 -1.21 2.54 -0.61 2.75 -1.78 3.93 0.71 
+1.65 1.26 -1.39 1.84 3.17 0.54 3.19 -0.08 2.18 -0.05 0.69 -1.28 1.97 0.5 1.52 1.37 
+0 0.91 -1.57 0.13 -1.5 -0.63 -3.97 0.24 -3.19 0.42 -2.89 -0.13 -3.64 -0.07 -2.47 1.39 
+-3.59 -0.3 -3.19 -1.12 -3.54 -0.39 -1.43 1.78 -2.06 -1.02 -2.75 0.8 -2.08 -2.34 -3.19 0.34 
+-2.45 1.56 1.95 1.26 -1.49 0.8 0.17 1.59 -1.48 0.93 -0.06 2.91 0.3 2.02 2.78 0.57 
+2.24 -0.98 1.04 -1 0.95 1.23 2.78 0.57 1.04 -2.2 1.32 2.26 4.19 -0.63 1.08 -1.09 
+2.43 1.06 3.04 0.65 0.91 1.43 3.84 0.05 -0.76 -1.89 1.7 -0.56 1.75 -1.87 2.43 -0.85 
+-1.57 1.91 -0.61 2.04 -1.21 1.29 -0.32 2.04 2.11 1.61 3.41 0.78 0 74.74 -2.97 -0.41 
+-2.06 0.43 -2.22 -0.91 0 -71.27 2.39 -0.75 3.08 0.15 0.02 -1.12 -3.09 -0.82 -2 -1.07 
+-0.37 -1.8 -1.61 -0.93 -2.9 -0.11 -0.57 -1.59 -2.56 -0.5 -1.91 0.8 -3.3 0.13 -2.61 0.64 
+-0.24 2.6 2.41 1.61 3.11 0.68 2.41 -0.16 2.67 0.85 1.95 1.15 3.1 0.25 0 71.27 
+-1.84 -0.74 -1.58 0.11 0 -67.27 1.78 -0.48 -3.02 -1.08 1.24 1.56 0 67.27 -2.18 0.16 
+-1.23 -0.57 0 -61.07 1.04 -0.61 -0.34 -1.24 -1.52 -1.06 -0.3 -1.39 -2.43 -1.33 -2.75 -0.12 
+-2.47 -0.55 -0.46 -0.98 2.71 -0.2 2.87 0.04 -2.56 -2.19 -1.74 -0.56 -2.04 0.2 -0.12 1.28 
+-0.2 1.59 -0.99 1.08 3.02 0.98 0.24 1.28 1.34 1.93 1.8 0.76 1.82 -0.78 1.63 1.54 
+1.48 0.33 0 61.07 -1.32 -0.61 -2.17 -1.02 0 -52.28 1.28 -0.87 -0.43 -2.11 -2.06 -1.58 
+-0.96 0.69 0.37 1.35 1.3 0.86 0.5 1.65 0 52.28 -0.74 -0.32 -0.54 -0.11 0 -49.91 
+0.39 -1.33 -2.26 0.11 0.07 0.76 1.8 0.46 0 49.91 -3.73 -0.8 -0.87 -0.46 0 -38.13 
+0.37 -1.8 1.54 -1.59 0.87 -1.5 0.33 -1.37 -1.26 -1.58 1.26 -1.2 -0.63 -0.26 0 -2.95 
+0.15 -1.37 p
+0.48 -1.19 -0.39 -1.04 -2.96 0.34 -0.97 1.71 1.32 1.45 2.37 0.09 0 2.95 -1.74 -0.73 
+-1.02 1.3 -0.96 -0.05 0 -11.24 0.28 -0.91 -1.88 -0.16 0 -7.62 1.02 -1.87 -0.18 -2.47 
+-1.56 -0.41 -1.55 0.63 0.81 2.13 1.45 2 0 7.62 -0.35 -0.02 -2.56 -0.65 1.07 1.41 
+3.45 0.33 0 11.24 -1.65 -0.07 -1.91 1.79 2.28 1.3 -1.71 0.96 -1.37 1.54 1.65 1.34 
+0.66 1.3 3.29 0.61 0 38.13 -1.91 -1.04 -3.28 -0.67 -1.8 -1.5 -1.04 -0.65 0 -38.46 
+1.63 -0.96 0.67 -1.49 -2.23 0.71 -1.46 0.72 1.39 1.02 0 38.46 -1.29 -0.78 -2.16 -0.44 
+0 -38.93 2.34 -1 2.54 -1.2 1.8 -1 -1.17 -1.47 -2.52 -1.58 -2.08 -0.74 -2.65 -0.52 
+-1.43 -2.32 2.54 0.7 1.71 -0.34 1.43 0.97 1.89 -0.91 1.15 -0.96 -1.37 -0.22 0 -13.52 
+-0.78 -2.04 -1.82 -1.69 0.13 -1.89 -1.84 -0.89 -1.21 -1.43 -1.37 0.29 -1.65 -2 -0.39 -2.45 
+2.13 -1.73 -0.11 -2.11 0.56 -1.65 -0.91 -2.43 -2.52 -0.87 -2.91 -0.22 -1.87 1.67 1.06 2.28 
+-2.56 0.63 -0.54 2.13 -0.11 2.11 0.02 2.34 1.21 2.76 3.38 0.86 2.89 0.15 2.78 0.89 
+1.62 1.47 -0.58 1.95 2.93 1.65 2.46 0.21 0 13.52 -1.61 -0.26 0 -3.99 0.06 -1.09 
+-2.04 -1.17 -2.78 -1.26 2.89 0.09 1.78 -0.63 -0.48 -1.91 -2.17 -1.83 -2.61 -0.28 -2.91 -0.52 
+-3.45 0.17 0.28 2.73 4.02 1.43 -1.11 1.67 3.09 1.3 2.39 0.37 3.04 0.91 0 3.99 
+-0.46 -0.06 -2.71 -1.74 -1.5 -1.54 -2.62 0.33 -2.8 0.13 0 -1.7 2.26 -0.5 -2.52 -0.91 
+0.26 1.41 0 1.7 -0.15 0 -0.09 1.52 1.24 2.54 -0.8 1.45 -1.3 1.31 -0.13 1.36 
+1.28 1.54 1.78 0.5 0.59 -1.61 2.8 1.04 -1.24 1.35 1.76 1.17 1.78 1.57 0 38.93 
+-1.05 -0.21 -2.71 -0.61 -3.06 -1.91 -3.58 -1.06 -3.06 -0.67 0 -21.86 2 -1.28 2.3 -1.41 
+3.04 -0.93 4.32 0.13 -0.61 -2.32 0.26 -2.06 -3.08 -1.89 -1.43 -2.28 -3.06 -0.86 0 -25.14 
+3.73 -0.56 0.02 -1.34 -2.39 -1.29 -3.6 -0.63 0.97 2.11 1.26 1.71 0 25.14 -0.46 -0.11 
+-3.25 -1.8 -0.98 2.04 -0.07 0.13 0 -47.16 1.15 -1.32 0.45 -1.82 -0.61 -1.8 -2.34 -1.45 
+-1.97 -0.59 -0.3 2.26 -1.54 0.89 0.22 2.06 2.66 1.43 2.28 0.35 0 47.16 -0.75 1.8 
+-1.02 2.17 -3.95 1.02 -2.41 1.65 0.59 1.78 -0.2 2.15 4.58 0.55 4.19 1.54 0 21.86 
+-0.54 -0.13 -3.84 -1.47 2.25 -0.87 0.57 -1.66 -1.21 -1.59 -2.54 -0.89 0.5 -1.58 -0.33 -2.54 
+-0.32 -2.34 -3.15 -0.04 -0.26 -1.59 2.91 -1.47 -3.5 -1 0 -13.11 2.67 -0.48 1.07 -1.35 
+1.84 -0.15 0.87 -1.5 0.3 -1.8 1.21 -1.37 -0.75 -1.54 -4.17 -0.43 1.61 -1.91 -2.17 -1.49 
+0.37 -1.72 -2.99 -2.28 3.16 -0.67 3.09 -1 -0.35 -2.08 -2.17 -1.26 -2.38 0.5 -1.39 0.43 
+0 -2.93 0.8 -1.17 -0.54 -2.11 3.38 1.63 2.23 0 0.98 -1.28 -0.71 -1.82 1.34 -1.2 
+-3.47 -1.39 -3.08 0.87 -1.37 -2.15 -3.84 -1.25 -4.01 -0.52 -1.07 1.89 -2.23 1.34 3.52 1.93 
+3.03 1.87 0.22 1.56 2.69 0.76 2.13 1.04 0 2.93 -1.57 0.5 -2.93 -0.67 -3.88 -1.22 
+-3.93 -0.12 p
+-2.91 -1.87 -2.21 -2.5 -1.56 -2.87 -3.19 -0.26 -0.33 1.84 -2.63 -1.25 -1.84 1.5 -0.56 2.02 
+2.32 2.41 2.71 1.84 -1.8 1.59 -0.54 2.2 -0.87 2.61 0.34 2.86 0.5 2.46 5.02 1.28 
+1.11 2.41 2.73 2.06 4.43 0.43 -0.72 -2 -1.15 -2.43 0.76 -2.11 2.82 2.11 0.87 2.21 
+1.88 2.58 2.74 1.41 1.95 -0.63 2.63 1.71 0 13.11 -1.37 -0.39 -3.78 -0.26 -2.11 -1.17 
+2.56 -1.96 -3.8 0.35 -1.33 -1.3 2.37 -1.13 -1.84 -2.64 -3.49 -1.57 -3.09 -2.26 -2.73 -2.19 
+-1.54 -2.54 -2.78 -2.3 -3.3 -1.11 -0.09 1.76 -2.08 0.39 -0.96 -2.08 -1.98 -2.19 0.11 -2.52 
+0.32 -2.34 -2.28 -1.95 -1.73 -2.13 2.71 -0.29 2.3 2.29 1.87 -1.11 0.56 -2.21 0.52 -2.04 
+-4.14 -2.43 -2.63 -3.16 -2.16 -2.59 -1.41 -3.43 0.52 -2.13 3.95 0.76 2.21 -0.67 2.95 3.29 
+2.17 -1.23 3.38 -0.39 -3.38 -3.21 -3.88 -2.35 -2.59 1.7 -3.78 -1.08 -2.08 -2.34 3.25 0.28 
+0.17 -0.54 3.5 -0.7 3.3 1.58 2.93 -0.39 2.59 3.38 3.97 2.61 3.76 0 3.6 0.11 
+1.74 -0.87 3.4 0.7 2.87 0.57 3.38 0.98 2.8 0.96 2.89 -0.04 1.23 -2.35 -0.78 -2.75 
+-1.11 -1.56 -1.78 0.24 -2.43 0.2 0 -2.95 3.02 -0.7 1.93 -0.82 0.5 -1.98 0.3 -1.84 
+-2.32 1.35 -2.04 0.21 -2.93 -0.26 -2.67 -0.93 -2.74 -0.95 -1.78 -2.11 2.54 1.35 2.8 0.74 
+3.32 0.91 3.21 -0.65 2.71 -1.09 1.07 -1.37 -1.37 -1.17 -3.05 -0.61 -2.63 -1.93 -3.38 -0.74 
+2.47 -0.59 0.67 -1.52 2.78 -0.65 0 -1.52 -0.5 -1.89 1.5 -1.56 -1.76 -1.32 -3.04 -1.43 
+0.81 -2.26 -0.48 -2.24 -2.04 -3.75 -0.48 -2.91 -1.96 -2.73 -2.82 -0.87 -0.95 -2.97 -2.48 1.19 
+-2.79 -1.71 -0.74 -3.32 1.99 -2.17 -1 -2.75 -0.32 -2.74 -0.29 -2.62 -0.58 -2.28 -3.97 -1.41 
+-2.48 -1.26 -2.64 1 -3.06 -1.45 -0.04 2.99 2.39 3 0.41 4.3 -3.95 -2.09 -1.89 -2.76 
+-0.67 -3.25 -0.74 -2.28 -2.47 -2.08 -0.98 -2.82 -3.5 -2.09 0 -681.32 4.06 -0.3 3.54 -1.13 
+2.28 -1.17 0.26 -1.65 -3.34 1.98 -3.23 1.15 -3.56 1.13 0 681.32 -0.25 -0.16 -2.02 1.98 
+0.04 3.04 0.35 2.75 -0.35 2.86 -1.61 -2.23 -0.7 -2.54 -0.89 -2.97 -0.57 -2.56 -1.06 -0.83 
+0 -712.19 4.62 -1.5 -4.47 0 -0.15 1.5 0 712.19 -1.07 -0.82 -1.19 1.99 -0.55 2.2 
+-0.07 2.52 0.85 1.52 -0.59 2.32 -0.11 1.91 0.67 2.65 2.34 1.54 0.35 2.3 -0.18 2.17 
+0.26 2.56 -0.76 2.13 -2.28 0.47 -1.58 2.65 1.91 2.39 2.8 0.71 1.09 -0.71 2.14 0.75 
+0.52 -3.07 1.43 -2.24 3.08 -0.49 1.91 3.14 2.82 -0.22 3.23 0.22 2.65 0.07 2.06 1.91 
+2.59 2.11 0.71 2.91 2.28 2.64 -3.02 0.71 4.29 1.48 1.7 3.86 2.17 2 -3.78 -0.02 
+-1.65 0.76 1.67 3.32 -1.11 1.28 -0.07 3.41 -0.7 2.13 1.56 3.14 2.39 2.23 3.08 2.08 
+2.54 2.22 3.89 1.04 2.9 0.16 2.93 0.04 0 2.95 -0.46 0.04 -2.93 0.16 -0.15 1.58 
+-1.24 1.04 -2.19 -1.19 -2.3 0.48 -3.32 -1.74 -2.71 -1.93 -2.09 -1.69 -3.23 -1.82 -3.04 0.95 
+-1.43 -2.21 -2.61 -1.89 -3.09 -2.28 4.76 -0.22 -2.93 -2.58 -2.74 -0.93 -3.34 -0.87 -3.34 -2.95 
+1.48 -0.87 p
+2.64 1 2.76 -0.96 3.73 1.41 3.71 1.5 3.23 1.17 0.63 -1.91 -0.3 -2.43 -2.06 -1.11 
+0.07 -2.52 -2.17 -0.91 0 -9.16 1.06 -1.78 -1.49 -1.78 -2.67 -1.07 -2.12 0.26 -1.59 1.58 
+2.65 2.2 4.17 0.59 0 9.16 -1.74 -0.74 -2.3 1.07 -3.14 -1.33 -0.7 -2.73 -3.8 -1.21 
+-3.53 0.93 -3.35 0.74 0.15 2.78 1.33 1.39 -1.22 2 -1.7 -2.17 -3.19 0.05 0 -1.37 
+3.23 -0.7 -2.95 -1.96 -1.87 -2.95 -1.24 -3.13 -1.41 -2.34 -2.12 -2.21 -0.59 -2.63 -3.36 0.43 
+1.28 2.59 0.83 2.32 -0.61 1.41 -2.52 0.15 -3.12 0.02 -1.17 1.59 3.08 1.59 -0.89 2.62 
+3.23 -0.8 3.58 2.08 3.8 1.26 2.82 0.66 0 1.37 -1.67 0.02 -3.21 -1.3 -3.62 0.09 
+-3.62 0.13 -0.78 2.95 -4.06 -0.13 -0.39 -0.17 0 -16.91 1.69 -0.93 0.61 -1.28 -0.48 -0.24 
+-0.26 0.02 0 -4.68 0.89 -1.59 -2.52 -1.23 -2.93 -0.61 1.02 1.67 3.53 1.76 0 4.68 
+-3.12 0.42 -1.24 1.43 2.8 0.59 0 16.91 -2.8 -1.3 -1.56 1.65 -1.5 1.5 -3.25 -1.28 
+-1.3 1.04 -2.93 0.02 -3.45 -0.16 -2.82 -0.52 -2.76 -0.5 -3.87 -1.37 -3.23 -1.35 -2.5 -1.91 
+0.8 -1.39 -0.17 -1.82 -2.34 -1.78 0 -36.63 3 -0.59 -1.05 -1.52 -3.6 -1.67 2.34 1.61 
+-1.87 -0.22 -0.8 1.3 3.21 0.09 -1.23 1 0 36.63 -1.2 -0.91 -2.61 -1.21 -2.45 -2.11 
+-2.06 -1 1.37 -0.93 1.56 -1.3 -1.3 -3.47 -0.26 -2.98 -1.21 -3.32 -2 -2.84 -0.37 -2.21 
+-0.11 -2.56 -1.37 -3.93 1.15 -2.39 1.24 -2.36 -0.39 -2.89 -4.6 -2.28 -2.04 -2.24 -2.3 -1.61 
+-2.12 -1.11 0 -0.96 1.78 -0.74 0.13 -1.37 -1.9 -2.25 -0.11 2.25 0.11 2.11 0 0.96 
+-0.91 -0.48 -1.39 -3.28 -1.7 -2.73 -1.04 -2.58 -1.76 -2.56 -0.7 -3.02 1.65 1.58 3.19 -0.58 
+3.64 0.71 2.02 3.04 2.69 2.06 3.02 2.56 1.93 2.28 1.78 2.39 2.49 -0.71 3 -0.35 
+3.39 -0.02 3.08 0.57 3.67 2.64 2.82 2.8 2.11 1.98 2.78 2.88 0.18 1.84 1.11 2.43 
+2.02 1.04 1.34 -1.04 3 0.5 2.39 1.52 2.66 2.13 0.83 1.87 2.82 0.84 2.66 0.95 
+0.79 1.97 2.45 1.46 2.21 -0.39 0.7 -2.12 0.15 -2.3 0.82 -1.22 2.48 -1.49 -0.41 -2.26 
+-0.96 -2.45 -0.3 -2.3 -2.15 -0.8 -0.26 -2.3 1.15 -1.37 0.74 -1.65 -2.5 -1.35 -1.8 -2.12 
+-2.75 -1.84 -1.72 -1.35 -1.34 -2.62 0.61 -1.41 -1.75 -3.65 3.08 -0.76 2.26 0.78 2.6 -0.28 
+2.87 1.04 1.04 1.96 1.97 0.34 2.54 0.52 -1.02 -1.96 -1.52 -2.97 -1.3 -3.12 -1.57 -2.89 
+-1.34 -3.04 -0.5 -2.3 -1.58 -1.52 -0.08 -1.98 -1.5 -0.46 0 -697.72 4.36 -1.62 -2.25 -0.76 
+-2.61 0.98 0.5 1.41 0 697.72 -0.91 -0.3 -2.28 -2.24 -0.57 -2.23 0.74 -2.59 -1.48 -2.23 
+2.15 -2.24 -0.67 -2.14 1.87 -1.95 0.15 -2.02 -3.41 -0.15 2.08 -2.12 -1.48 -2.08 1.89 -1.29 
+-0.28 -3.52 -0.08 -0.06 0 -672.25 3.04 -1.33 -1.74 -0.28 -0.82 -1.5 2.34 0.37 2.93 -2.76 
+-2.59 0.07 -3.06 1.32 1.91 -2.47 -2.59 0.5 -0.11 -1.93 -0.09 -1.91 0.89 -2.26 1.57 -1.56 
+1.61 -1.59 1.8 -2.06 -3.32 0.71 0.45 -1.39 3.32 -1.7 -2.11 -0.52 1.28 -2.16 2.91 -2.3 
+2.93 -0.72 p
+0.65 -1.35 3.71 -1.54 2.21 0.63 4.06 -0.89 4.43 -2.3 3.84 -1.91 3.56 -1.43 1.91 -1.48 
+2.82 -0.67 2.95 -1.56 1.32 -2.08 3.61 -0.89 1.95 -1.41 4.11 -0.71 1.63 -1.43 -1.48 -0.96 
+3.02 -1.02 4.43 -2.02 0.89 -1.71 2.87 -1.5 -1.17 -0.93 3.6 -1.78 2.13 -1.76 0.93 -2.3 
+1.82 -2.54 3.8 0.54 2.17 1.43 3 1.06 4.08 0.39 4.34 -0.47 5.2 -0.3 4.69 -0.43 
+4.58 -0.07 3.65 -0.35 5.32 0.81 4.1 0.8 3.12 0.91 1.21 2 -0.19 2.11 1.3 1.56 
+1.46 1.56 1.61 1.61 1.82 1.54 1.04 1.82 0.61 1.71 2.93 1.63 -0.97 2.26 1.93 1.47 
+2.74 1.55 2.19 1.45 3.04 1.5 2.43 1.48 3.63 0.78 2.64 0.46 2.43 1.09 1.99 1.37 
+-0.02 1.3 -2.41 0.93 -0.87 1.32 1.61 0.37 1.69 -1.26 0.89 1.34 1.65 1.05 2.13 -0.65 
+1.11 -0.95 0.83 -1.63 2.82 0.7 -1.09 0.98 0.59 1.37 -1.09 0.97 2.15 0.35 2.65 0.05 
+0.15 -0.98 -0.22 -1.32 3.88 0.04 3.85 0.35 -0.2 2.3 -0.95 1 2.17 0.7 2.3 -0.67 
+1.82 -0.98 -1.28 -1.32 2.19 -0.98 1.76 -1 3.45 0.98 3.58 1.3 2.31 1.34 3.25 0.96 
+4.47 -0.04 2.89 0.95 3.64 -0.06 3.5 -0.43 3.71 0.25 3.6 -0.08 4.32 -0.52 3.58 -0.11 
+3.54 -0.15 3.52 -0.15 4.08 -0.85 3.69 -0.54 3.47 -0.87 4.69 0.39 2.37 0.89 4.3 -0.28 
+4.14 0.78 4.55 0.05 4.23 0.75 1.98 0.2 3.84 -0.35 1.3 2.11 1.59 1.32 2.5 0.2 
+0.52 -1.56 1.04 -1.93 1.85 -0.95 2.97 -0.67 -1.21 -2.12 3.3 1.49 1.91 0.57 1.39 1.37 
+1.82 1.37 4.71 1.02 3.1 1.19 4.84 1.04 3.32 -0.02 3.75 -0.46 3.28 0.39 2.47 -0.78 
+2.02 0.96 2.04 -0.28 -0.82 -1.93 2.87 0.83 2.11 2.62 3.29 2.06 3.76 0.74 3.34 1.21 
+4.21 -0.17 3.23 -1 0.23 -1.8 1.85 -1.26 -1.41 -1.11 -2.39 0 0.61 -1.02 1.82 -0.8 
+1.26 -1.2 -1.2 -1.61 3.91 0.11 0.63 -1.58 1.52 -0.89 3.12 0.24 2.17 -1.06 1.52 -1.48 
+2.04 -1.11 1.87 -0.57 2.62 0.2 -3.45 -2.17 -1.97 -2.08 -2.11 -2.08 -2.89 -0.11 -2.36 -1.91 
+-3.56 -2.08 -1.72 -2.21 2.11 -0.31 1.46 1.81 4.49 0.54 3.06 -0.06 0.82 -1.02 0.24 -1.34 
+3.47 0.91 3.97 0.67 1.87 -0.21 4.95 2.21 2.91 0.57 4.05 -0.04 2.93 -0.2 5.1 1.52 
+2.82 -0.26 3.08 -0.37 3.04 -0.39 2.91 -0.5 0.26 -1.11 1.26 -1.09 2.04 -0.93 2.43 -0.24 
+0.22 -1.34 0.85 -1.04 1.52 -0.7 -0.76 -1.8 2.2 -0.35 -1.11 -1.48 2.04 -0.19 -0.29 -1.3 
+1.8 -0.09 0.33 -0.78 3.49 0.46 2.78 -0.35 -0.43 -2.04 -1.28 -1.98 -1.47 -2 -2.34 -2.34 
+-0.8 -1.65 -2.52 -2.32 2.37 0.3 -1.04 -1.49 2.37 0.49 3.34 1.35 1.32 -0.79 0.55 -1.11 
+0.39 -1.17 -2.89 -2.21 -3.86 -2.76 -2.34 -2.12 -3.41 -2.67 -1.93 -2.3 -0.65 -1.04 -0.63 -1.04 
+0.17 -0.67 0.2 -0.65 1.39 -0.83 -2.19 -1.19 -2.21 -1.19 -0.65 -0.83 -0.67 -0.8 1.87 -0.09 
+-1.12 -0.96 -1.15 -0.95 2.34 -0.17 -0.78 -0.87 -1.48 -0.74 0 -64 0.29 -0.18 0.29 -0.15 
+0.28 -0.17 0.06 -0.16 0.07 -0.17 0.04 -0.15 -1.17 -0.66 -1.2 -0.63 -1.19 -0.65 -0.48 -0.37 
+-0.47 -0.35 p
+-0.5 -0.37 -0.83 -0.5 -0.84 -0.48 -0.84 -0.5 -2.26 -0.91 -4.6 -1.78 -2.37 -1 -2.41 -1.05 
+-2.46 -0.99 -1.56 -0.72 -1.61 -0.71 -1.61 -0.7 -1.72 -0.71 -1.71 -0.74 -1.76 -0.71 -2.28 -0.89 
+-2.32 -0.89 -2.35 -0.89 -0.15 -0.21 -0.13 -0.24 -0.15 -0.22 0.32 -0.09 0.33 -0.07 0.35 -0.08 
+-2.65 -0.87 -2.67 -0.89 -2.69 -0.87 0 -0.12 -0.02 -0.16 0 -0.13 1.35 0.22 1.34 0.24 
+1.37 0.26 -1.95 -0.7 -1.95 -0.67 -2 -0.67 -4.28 -1.14 -4.25 -1.08 -4.25 -1.04 -1.87 -0.35 
+-1.84 -0.32 -1.82 -0.3 -3.61 -1.05 -1.84 -0.52 -1.58 -0.48 -1.63 -0.5 -1.65 -0.48 -3.08 -0.48 
+-1.52 -0.21 -3.08 -0.67 -6.21 -1.3 -1.23 -0.06 -2.43 -0.13 2.87 0.87 1.39 0.43 1.78 0.54 
+1.74 0.54 1.73 0.57 1.06 0.41 1.05 0.39 1.02 0.41 4.39 1.17 2.14 0.61 -0.37 0.04 
+-0.39 0.04 -0.37 0.05 -2.64 -0.52 -2.63 -0.52 -2.61 -0.5 3.95 0.93 3.95 0.95 3.93 0.95 
+1.58 0.55 1.57 0.54 1.56 0.56 2.63 0.8 2.6 0.8 2.59 0.8 -0.05 0.3 0 0.17 
+-0.21 0.11 -0.24 0.14 -0.22 0.13 -0.3 0.13 -0.3 0.11 -0.33 0.11 0.63 0.37 0.59 0.37 
+0.61 0.37 1.15 0.5 1.15 0.48 1.13 0.5 1.75 0.63 1.73 0.63 1.74 0.65 2.71 0.89 
+2.72 0.93 2.66 0.91 3.64 1.09 3.63 1.11 3.64 1.11 2.54 0.82 2.56 0.85 2.54 0.84 
+3.91 1.13 1.95 0.59 2.48 1 1.21 0.5 2.52 0.89 2.52 0.91 2.49 0.93 1.96 0.63 
+1.97 0.65 1.99 0.65 0 64 -0.34 -0.2 -1.84 -0.91 -2.69 -1.15 -2.7 -1.11 -1 -0.67 
+-0.97 -0.65 -1.33 -0.63 -1.3 -0.62 0.79 -0.13 0.8 -0.11 2.99 0.73 3 0.76 0.91 -0.82 
+-1.63 -1.17 -1.66 -1.15 -0.98 -1.09 -1 -1.08 -1.58 -1.02 -1.61 -0.99 -0.74 -0.83 -0.74 -0.8 
+-2.47 -1.17 -2.5 -1.15 -1.28 -0.91 -1.28 -0.89 -2.17 -1.07 -2.17 -1.04 -1.76 -0.96 -1 -0.54 
+0 -50.84 0.18 -0.31 0.19 -0.28 0.17 -0.3 -2.15 -0.57 -4.29 -1.08 1.99 0.84 3.91 1.7 
+0 50.84 -0.78 -0.41 -2.11 -1.11 -2.13 -1.11 -2.61 -1.37 -2.62 -1.37 -1.96 -0.56 -1.93 -0.59 
+-0.5 -0.61 -0.52 -0.63 -2.39 -0.93 -2.41 -0.93 -2.26 -0.21 -2.26 -0.18 -1.43 -0.58 -1.43 -0.57 
+-1.3 -0.78 -1.32 -0.79 -2.82 -0.74 -2.84 -0.73 -2.09 -0.2 -2.06 -0.2 -5.95 -1.99 -0.46 -0.48 
+-0.48 -0.48 -3.37 -0.95 -3.38 -0.93 -0.54 -0.5 -0.56 -0.5 -2.23 -0.28 -2.24 -0.31 -1.82 -0.8 
+-1.85 -0.8 -3.16 -1.11 -3.19 -1.09 -3.06 -0.24 -3.06 -0.21 -2.75 -0.5 -2.78 -0.47 0.11 -0.46 
+0.11 -0.44 -2.25 -0.54 -2.26 -0.52 -2.88 -0.57 -2.91 -0.54 -3.43 -0.54 -3.45 -0.52 -2.54 -0.34 
+-2.52 -0.37 -2.21 0.61 -1.45 0.24 -1.46 0.26 -1.82 0.04 -1.82 0.07 -0.7 -0.82 0.72 -0.41 
+0.71 -0.39 -1.82 -0.5 -1.83 -0.48 -0.89 0.48 -0.87 0.5 -2.99 -0.56 -3.04 -0.57 -2.54 -0.54 
+-2.56 -0.52 -3.38 -0.11 -3.37 -0.08 -3.32 -0.02 -3.3 -0.02 -3.19 0.05 -3.17 0.04 0.13 -0.39 
+0.13 -0.41 -2.47 0.48 -2.43 0.48 1.29 0.46 1.3 0.46 -2.6 0.99 1.08 0.55 1.06 0.54 
+1.61 0.63 1.58 0.63 4.95 0.88 -1.43 0.91 -0.17 0.54 -0.15 0.52 1.97 0.41 2 0.41 
+-0.63 0.37 p
+-0.61 0.34 0.89 0.61 0.87 0.58 1.29 0.7 1.25 0.67 -0.61 0.63 -0.59 0.61 -0.87 0.43 
+-0.84 0.46 -2.61 0.78 -2.52 0.82 -2.43 0.83 -0.8 0.48 -0.78 0.5 -1.63 0.13 -1.61 0.13 
+-2.21 0.33 -0.26 0.05 0 -1.91 0.37 -0.65 0.39 -0.67 -2.26 0.08 -2.25 0.11 -2 -0.09 
+-2 -0.06 3.04 1 2.34 0.13 2.37 0.15 0 1.91 -1.93 0.28 2.06 0.39 2.04 0.39 
+2.17 0.7 2.17 0.72 1.21 1.48 -2.17 1.17 -1.43 0.78 -2.69 1.09 -2.08 1.23 -3.06 1.09 
+-3.56 0.78 -4.08 1 -3.93 0.82 -4.26 0.87 -4.16 0.46 -5.42 -0.26 -4.86 0.93 -2.11 1.52 
+-3.99 0.61 -3.67 0.74 -3.14 1.05 -1.07 1.71 -3.88 0.54 -3.64 1.2 -5.54 0.37 -2.3 -1.3 
+1.39 -1.52 -0.33 -1.69 -3.06 -1.09 -1.46 -1.41 -1.34 -0.61 0 -8 2.08 -1.59 -0.91 -0.61 
+-0.89 -0.63 -1.12 -0.21 -1.15 -0.2 0.43 -0.57 0.41 -0.55 -2.43 0.38 -2.46 0.37 -0.32 0.57 
+-0.31 0.54 0.24 0.61 0.26 0.58 1.82 1 4.34 0.31 0 8 -1.21 -0.56 -2.59 -1.15 
+-1.89 -1.29 -3.91 -0.24 -5.29 0.72 -5.39 1.2 -3.04 0 1.35 -1.65 1 -1.45 2.16 -1.69 
+2.09 -1.89 0.8 -0.85 0.82 -0.84 0.18 -0.55 0.2 -0.56 -3.13 0.39 -3.91 1.13 -0.91 -0.32 
+-0.91 -0.31 1.98 -0.61 2 -0.59 0.8 -0.56 0.79 -0.54 -0.43 -0.43 -0.46 -0.41 -0.43 -0.41 
+-0.41 -0.43 -2.37 0.24 -2.39 0.26 -2.93 0.93 -2.91 0.98 0.26 1.25 -1.78 0.89 -1.76 0.91 
+-2.95 0.61 -2.97 0.61 -1.43 0.16 0 -72.48 3.13 -0.24 3.1 -0.22 3.08 -0.2 -0.84 -0.02 
+-0.85 0 -0.87 -0.02 1.95 -0.26 1.97 -0.28 1.98 -0.26 -4.23 0.48 -4.23 0.5 -4.19 0.52 
+0 72.48 -1.95 0.19 -3.39 0.37 -1.8 -0.3 -1.78 -0.28 0 -1.22 2.54 -0.26 2.54 -0.24 
+2.43 -1.34 -3.58 0.41 -3.56 0.41 -0.2 0.5 -0.17 0.52 0 1.22 -0.02 -0.02 -1.19 -0.35 
+-1.17 -0.35 -1.13 -0.35 -1.15 -0.34 -3.14 0.98 -3.13 0.99 -3.02 0.72 -3 0.74 -1.22 1.22 
+-1.99 0.19 -2 0.22 -2.3 0.7 -2.28 0.74 -2.6 0.71 -2.61 0.76 -2.15 0.54 -2.13 0.57 
+-2.14 1.21 -2.11 1.22 0.67 0.89 2.11 0.98 1.39 0.93 0.11 1.41 -1.25 0.89 -3.35 0.35 
+-5.38 0.82 -5.82 1.24 -4.51 1.37 -6.27 1.82 -5.3 0.43 -1.54 1.48 3.86 0.32 1.13 1.02 
+-4.16 0.67 -0.63 1.63 -1.37 1.75 1.32 0.05 4.45 -1.97 4.96 -0.8 3.91 0.52 -0.99 2.35 
+-3.26 1.69 -4.88 0.78 -4.91 0.85 -3.66 1.37 3.04 -0.22 4.75 -0.54 4.66 -0.37 1.02 1.16 
+-5.04 1.21 -1.3 -0.59 -4.99 1.11 -0.44 1.13 3.19 -0.43 3.54 -1.21 3.75 0.02 -0.41 1.35 
+-1.89 1.69 -3.36 0.81 -0.21 1.63 1.63 0.76 2.45 0.5 -2.41 1.06 -4.16 -0.49 -3.19 1.47 
+-2.47 -0.06 -2.43 0.7 0.88 1.15 -1.43 1.37 -3.41 0.06 1.54 -1.73 -4.88 0.32 -0.74 1.38 
+3.19 -1.13 -0.61 1.95 4.12 -0.13 -2.3 1.19 3.37 -0.59 3.17 -0.95 0.26 1.02 -3.06 1.25 
+-3.21 1.04 -1.93 -0.85 -4.25 0.39 -3.37 -0.09 -2.61 -0.52 -1.45 1.72 2.71 0.65 -1.24 1.8 
+2.82 0.42 3.19 -1.11 2.15 0.96 2.39 0.95 2.49 0.91 1.06 1.41 1.17 1.39 2.54 0.61 
+-0.48 1.43 p
+0.37 1.31 2.37 0.93 2.38 0.95 3.08 -0.24 -3.64 1.41 -2.65 1.98 3 0.39 3.75 0.04 
+2.54 0 3.38 -2.13 1.13 1.2 1.13 1.24 0.71 1.47 1.35 1.17 -0.43 1.52 -2.89 2.19 
+-3.58 1.93 -3.12 1.02 -4.1 2.32 -4.36 1.74 -3.78 1.46 -4.06 2.41 2.02 0.67 -1.15 1.8 
+-2.89 0.7 -1.3 1.69 -2.82 1.8 -1.13 0.35 0 -5.62 5.27 -2.08 4.69 -2.21 4.39 -1.76 
+4.1 -1.82 3.84 -1.89 2.8 -1.75 2.52 -1.78 0.22 -1.62 -1.35 -1.22 -2.62 -0.58 -3 1.06 
+-1.89 -0.35 -3.52 0.89 -2.52 -0.07 -3.32 1 -1.56 1.19 1.97 1 1.7 1.39 1.08 1.07 
+0.57 0.87 -1.34 1.21 -4.14 1.83 -4.43 1.75 -3.35 1.72 0 -4.35 2.5 -0.15 2.39 -1.41 
+1.52 -1.17 -0.78 -0.98 -1.59 -0.8 -1.89 1.67 -2.04 0.97 -0.11 1.86 0 4.35 -0.56 0.28 
+-0.33 1 0.78 0.89 0 5.62 -2.34 0.72 -2.2 1.46 0.31 -2.05 -1.39 -0.43 -2.99 1.8 
+-1.52 2.21 0 1.58 3.02 -1.73 0.78 0.73 3.49 -1.08 -3.25 2.23 0.11 1.57 -2.78 1.3 
+-0.33 1.93 -0.39 2.45 -2.56 1.91 2.82 0.08 -1.72 2.11 1.89 0.85 -2.02 2.04 -0.2 1.39 
+2.34 1.39 0.79 1.54 0.8 1.52 1.76 0.7 0 672.25 -2.04 -1.7 -1.76 -3.82 -2.32 -0.37 
+-0.52 -0.07 0 -1.43 1.34 -0.86 -2.49 -1.93 0 -656.36 -1.41 -1.59 -0.13 -0.07 0 -9.89 
+3.11 -1.3 -0.91 -1.65 0.32 -1.41 -2.86 0.32 -0.59 2.37 3.13 -1.28 -2.2 2.95 0 9.89 
+-1.21 -0.58 -0.37 -2.43 -2.17 0.09 0.8 1.11 1.73 1.24 -0.39 1.78 3.15 0.46 0 656.36 
+-0.14 -0.09 -3.08 -1.75 -2.19 -1.05 -2.84 -1.91 3.36 0.33 1.02 -1.8 -2.15 -0.52 0.42 -2.73 
+2.23 -0.67 1.93 -1.15 0.84 -1.69 -3 -1.29 -0.45 -2.1 2.54 -0.85 -4.04 -1.28 -1.69 -1.39 
+0.15 -1.3 2.52 1.57 1.28 -0.16 -2.52 -2.12 1.84 -0.39 -2.26 -2.28 -2.23 -2.3 -1.82 1.02 
+1.43 2.1 -2.41 -0.41 2.52 2.13 -1.2 1.32 -1.56 0.26 -3.32 -1.67 -1.43 1.52 2.41 0.39 
+1.19 1.67 -1.67 1.59 -2.19 1.34 -2.2 1.39 -2.08 2.02 -2.8 0.54 1.2 2.41 2.13 0.48 
+2.69 0.71 -0.61 1.02 2.58 1.46 3.34 1.58 2.96 2.41 3.12 1.71 2.32 1.61 2.2 1.04 
+2.8 0.08 0 1.43 -2.56 -0.41 -2.98 1.37 -3.21 0.3 -2.47 -0.91 -2.45 -0.85 -2.65 -0.67 
+-2.43 1.74 -2.32 1 -0.57 1.78 -1.67 1.28 -1.47 1.17 -1.09 1.52 -2.19 1.13 -1.04 0.84 
+0 -3.52 1.67 -1.34 1.37 -1.71 0.76 -1.96 0.63 -1.75 -0.56 -2.3 -1.52 1.13 -1.37 1.75 
+-0.8 1.93 0.43 1.71 -0.61 2.54 0 3.52 -0.58 0.5 -1.39 1.2 -2.56 0.76 -2.47 -0.68 
+-2.29 -1.64 -1.58 1.43 -3.45 -0.5 -2.93 -0.33 -2.87 -1.02 -2.32 -0.87 -2.52 -0.63 -2.28 -0.83 
+-2.56 -0.65 2.36 -0.74 2.52 0.63 2.52 0.71 2.87 1 2.93 0.35 2.73 -0.26 2.11 -0.5 
+2.73 -0.24 2.24 -1.12 2.21 -1.17 0.93 -2.19 -0.24 -1.89 -1.41 -1.61 -2.56 -0.02 -2.02 0.22 
+-2.52 2.11 -0.5 -3.82 2.89 -0.93 -1.28 -0.98 0 -4.82 -1.21 -1.84 0.96 -2.02 1.61 -1.2 
+2.41 -1.12 -2.41 -0.24 -1.32 -1.65 -1.3 2.95 -0.59 2.48 0.15 1.93 1.71 0.72 0 4.82 
+-0.93 -0.71 p
+-2.23 -3.02 -1.2 -3.19 0.89 -2.06 0.71 -3.21 1.56 -1.78 2.28 -0.39 1.11 -1.41 1.64 2.12 
+3.04 1.07 2.58 1.46 0.05 -1.35 -2.2 -2.34 0.68 -2.99 -3 -0.52 -2.34 0.3 -1.79 -1.34 
+-3.05 0.83 -3.87 0.78 -2.91 0.13 -1.41 1.06 -2.25 -0.98 -2.78 -0.63 -2.76 -0.61 -0.39 2.38 
+1.26 2.5 2.38 1.5 3.02 0.43 1.79 -0.07 3.23 0.29 -2.22 0.96 1.65 1.52 -3.45 -0.09 
+-2.47 0.65 -2 1.65 -1.43 -1.69 -2.41 -0.13 -2 0.32 -2.26 0.46 0.07 1.43 -2.69 -1.32 
+-2.26 0.5 -1.99 0.37 -0.74 -0.84 -2.28 -0.87 -2.12 -1.11 -0.87 -1.45 -1.73 -0.65 0.2 -1.61 
+-1.33 -2.54 1.24 -1.11 1.15 1.17 -1.36 -1.67 -2.54 0.74 0.71 0.87 -1.82 0.13 0.39 1.87 
+-1.87 -1.26 -2.04 0.37 -1.32 1.23 -1.3 1.26 -2.04 0.39 -2.19 0 0 -0.21 1.93 -1.02 
+1.65 -0.87 2.04 -0.36 0.16 -1.7 -2.84 0.39 -2.08 1.25 -2.13 1.24 1.28 1.06 0 0.21 
+-0.2 0 -2.3 -0.84 0.11 -1.71 -2.61 -2.13 -3.02 -1.71 -2.73 -0.39 0.78 2.34 -0.13 1.76 
+-1.75 -3 -1.39 -4.12 -1.74 -0.63 -2.64 -1.32 -2.58 -2.17 -1.02 0.24 ^ 1.85 1.3 
+-0.89 0.89 1.3 1.09 -0.34 1.97 2.21 1.69 1.48 1.76 1.89 1.24 -1.82 0.24 -1.84 -1.26 
+-2 -2.79 -1.21 -1.91 -0.96 1.75 0.11 -3.32 -2.06 -1.96 -1.41 -1.71 -0.3 -2.93 -0.93 -2.21 
+-1.52 -2.45 -0.67 -2.43 0.52 2.21 -0.16 1.37 -1.28 0.43 -1.82 0.29 1.37 -1.37 1.15 -1.13 
+-1.39 -1.82 -1.5 -0.89 -0.93 0.91 -2.73 -0.41 1.39 -1.37 -1.71 -0.67 -0.22 0.13 0 -143.77 
+0.26 -1.87 -1.09 0.52 -0.74 -0.7 0 -8.33 0.87 -1.65 0.02 -1.19 -0.89 2.84 0 8.33 
+-0.5 -0.5 0.29 2.19 0.95 -0.99 0.83 1.34 0 143.77 -1.76 1.06 -2.54 -0.69 -2.52 -0.61 
+-1.48 0.76 -2.41 0.06 -0.16 -0.08 0 -179.37 3.2 -0.8 -0.76 -3.11 -1.52 -1.06 -2.67 1.1 
+1.78 0.43 0.61 2.54 -0.63 0.89 0 179.37 -1.93 -1.07 -2.26 -0.84 -2.74 -0.37 -1.71 0.07 
+0 -116.99 2.41 -1.35 2.39 -1.32 0.79 -2.25 -1.61 -0.98 -1.7 0.93 -1.91 0.46 -1.54 1.46 
+1.17 3.06 0 116.99 -0.67 0.02 -3.08 -0.82 -2.76 -2.05 -2.71 -2.04 -1.83 -3.04 -1.75 -3.08 
+-0.57 -1.58 0 -27.37 0.09 -3.67 -2.36 -2.39 1.89 2.8 0.39 3.25 0 27.37 -0.71 -2 
+-1.52 -3.34 -0.93 -3.87 -1.28 -1.9 -0.65 -1.85 0 -11.33 0.21 -2.02 2.08 -0.37 0.95 -0.85 
+-0.3 -1.54 -0.17 1.32 -1.93 0.61 0 -45.4 0.95 -1.41 1.35 1.08 -1.8 -2.06 -1.84 1.31 
+1.34 1.08 0 45.4 -1.15 0.37 0.31 2.47 0 11.33 -0.83 -2.3 -0.61 -1.78 0 -64 
+2.21 -1.52 1.54 -3 1.69 0.15 2.56 -1.69 1.74 -1.71 2.04 -1.91 -0.2 -2.5 2.28 -1.41 
+-2.24 -0.54 2.89 -2.98 0.67 -3.55 -2.39 -1.78 -0.49 2.88 -2 1.2 -2.71 0.34 -2.2 0.72 
+0.63 1.57 -2.39 0.17 -0.63 -1.55 -2.37 -1.78 -0.37 4.13 -1.71 1.82 -0.05 0 0 -44.22 
+0.7 -1.48 0.17 -1.04 -0.87 2.52 0 44.22 -1.8 0.5 -1.39 1.63 -1.91 1.28 -1.06 -0.63 
+-1.65 3.8 1.91 0.7 1.67 -1.8 1.15 -2.15 1.91 -1.26 2.28 0.47 -0.52 3.67 0.89 2.02 
+-0.05 2.73 p
+-1.89 1.3 1.93 0.68 0 64 -0.81 -2.34 -0.78 -1.23 0 -14.84 0.8 -0.7 -0.87 -3.69 
+-1.15 -2.05 -0.26 -2.66 -1.65 -1.5 0.82 3.7 -0.26 3.88 1.66 0.78 0.89 2.24 0 14.84 
+-1.35 -2.15 -2.41 -3.21 -2.56 -2.22 -1.34 -0.21 -1.58 0.7 0.99 2.99 -0.07 3.21 1.11 3.71 
+0.82 3.22 0.3 2.93 1.09 2.23 2.39 2.41 -1.28 0.48 1.33 1.97 1.84 2.11 1.56 3.37 
+-0.32 1.28 1.21 4.58 0.26 3.17 -1.65 1.11 -2.11 -0.13 -1.62 1.15 1.3 2.84 -0.52 2.56 
+0.26 2.45 -1.57 1.17 -1.61 1.13 -1.17 1.62 1.11 2.46 -1.69 -0.57 -0.81 2.11 -0.95 1.41 
+-2.24 0.3 0.02 3.09 -2.45 -1.48 0.39 -1.61 1.26 -0.95 0.95 -1.41 -1.3 -1.12 -1.28 -0.07 
+-0.76 -0.96 -0.28 -3.54 -1.15 -0.39 0.52 2.26 -0.41 1.56 -1.48 0.26 -1.7 1.47 -0.72 2.24 
+1.33 2.14 0.46 3.58 -2.04 0.07 -0.61 2.28 -0.26 2.67 -1.52 1.63 -1.19 1.07 -2.15 0.43 
+1.96 2.28 -1.39 0.3 -1.52 -3.25 -0.48 -0.02 0 -75.98 2.41 -0.02 1.85 -1 1.82 -1.04 
+2.15 -0.48 1.58 -1.5 1 -2.52 1.61 -1.49 0.8 -2.26 0.8 -2.17 0.02 -3.06 1.65 -1.43 
+1.17 -2.38 0.91 -2.96 0.65 -2.67 0.93 -2.21 0.74 -3.41 1.52 -1.91 1.26 -1.63 -1.57 -2.34 
+1.5 -0.35 1.54 -1.89 0.28 -2.91 0.91 -0.67 -0.17 -1.24 -2.09 0.82 -1.7 -0.18 -1.82 1.35 
+-1.54 1.89 -1.82 1.37 -2.04 0.8 -2.38 1.87 1.63 0.84 1.93 0.61 0.42 2.55 -2.61 2.11 
+-0.72 3.45 1.02 2.8 -0.07 1.46 -1.96 0.95 -1.12 2.47 -1.13 1.72 -0.29 2.52 -2.43 2.21 
+-1.09 1.59 0 -33.04 2 -0.11 1.56 -1.87 1.58 -1.93 1.04 -2.12 -0.28 -2.59 -1.22 0.89 
+-1.02 1.47 -1.67 -0.15 -1.3 1.65 -0.24 3.06 -1.19 0.91 0.73 0.78 0 33.04 -0.25 0.39 
+-0.22 2.54 2.17 -0.48 -1.84 2.49 -1.26 2.09 -1.88 -0.52 -0.87 -0.21 0 -3.12 0.16 -1.65 
+-0.5 -2.23 -1.39 0.37 -0.55 0.93 0.74 0.5 0.21 1.41 1.32 0.67 0 3.13 -1.06 -0.26 
+-1.78 1.8 -1.72 -1.58 -2.02 2.08 2.13 -0.52 1.15 2.02 1.88 0.5 0 75.98 -1.37 -0.13 
+-1.8 -0.2 -1.32 1.41 -2.54 -0.07 -2.47 0.02 -2.17 -0.63 -2.52 -2.52 -2.04 -3.54 -2.32 -2.91 
+-1.78 -2.78 -2.41 -1.52 -2.58 -2.37 -2.59 -2.34 -2.23 -3.02 -2.22 -3.06 -2.19 -3.06 -2.13 -1.89 
+-1.78 -3.76 -0.37 -4.05 -1.76 -1.41 -1.37 -3.32 -0.78 -3.03 -0.58 -3.37 -1.41 -4.14 -1.04 -3.64 
+-0.8 -4 0.65 -2.89 0.63 -2.93 -0.37 -3.36 0.87 -1.2 2.13 -1.07 1.89 -1.47 2.47 -0.43 
+1.3 -2.65 -0.56 -1.04 2.19 -0.96 0.67 1.89 1.8 0.45 1.54 -0.04 1.5 2.69 1.67 1.52 
+1.78 2.38 2.39 3.34 1.54 -0.07 1.67 -1.2 1.69 -1.19 2.02 -0.61 1.71 -1.18 0.91 -1.89 
+1.46 -1.63 0.13 -1.87 -1.46 -2.56 -2.71 -1.26 -2.25 -2.61 -1.96 -2.88 -1.95 -2.93 -2.22 -3.43 
+-2.43 -2.39 0.61 3.45 -3 -5.1 -1.61 -3.25 -2.93 -3.56 -2.59 -0.54 0.79 -2.5 0.49 -2.97 
+2.65 -0.26 1.37 -2.89 1.89 -1.06 2.13 -0.45 1.39 -2.15 1.93 -0.95 0.83 -1.59 1.2 -1.8 
+0.24 -4.02 0.95 -2.28 0.11 -1.61 -2.04 -4.93 -2 -2.02 -1.54 -3.84 -1.28 -3.32 -2.09 -3.38 
+-1.24 -3.34 p
+-1.61 -2.37 -0.41 -3.29 -0.05 -3.5 -0.04 -3.56 0.82 -3.43 1.04 -2.87 -0.29 -3.3 1.59 -1.15 
+0.76 -2.61 2.63 -0.43 2.26 -0.26 2.3 -0.19 1.65 1.56 1.95 -1.34 1.29 -2.13 1.48 -1.69 
+1.04 -3.3 0.67 -3.04 0.71 -3.11 0.79 -4.38 1.39 4.99 2.8 1.55 1.82 2.14 1.87 -0.5 
+0.95 3.27 1.32 3.08 1.67 1.52 2.04 0.06 1.52 -1.54 1.67 1.54 2.59 -2.16 2.56 0.41 
+1.84 0.8 2.06 0.02 1.71 1.59 1.86 0.8 1.24 -1.39 0.17 -1.97 -1.87 -2.02 -2.41 0.09 
+0.09 -3.8 -0.09 -3.1 -1.65 -1.57 -1.98 -2.64 0.48 -2.71 -0.41 -2.91 2.82 -0.26 1.02 3.75 
+-0.42 4.54 1.11 3.8 2.06 0.04 2.11 0.11 2.19 0.66 0.13 3.05 2.21 0.63 -0.57 -4.64 
+1.8 -0.98 2 -1.63 1.3 -2.52 -0.36 -2.87 0.13 -2.45 2.7 -0.79 2.54 -1.25 2 -0.39 
+1.8 -0.89 0.35 -1.93 1.58 -1.91 2.46 -1.76 2.52 0.02 2.91 1.63 2.63 -1.2 3.02 -1.34 
+2.64 -1.15 -4.03 0.59 0.97 -2.72 0.93 -3.29 1.63 -0.16 1.7 -1.82 2.43 -2.17 0.08 -3.45 
+-1.58 -3.29 3.71 -0.42 2.3 -3.12 1.93 -2.95 1.95 -3.02 0.3 -2.86 -0.87 -2.47 2.06 -0.22 
+2.02 -2.91 1.37 -2.14 0.87 -2.48 2.71 -1.54 2.43 -0.83 2.54 -0.26 2.45 -0.83 2.36 -1.36 
+2.32 -1.78 1.55 -1.09 1.93 -1.63 2.26 -2.3 1.8 -2.73 2.21 -2.78 1.45 -1.99 2.13 -3.8 
+-0.45 -3.54 1.21 -4.55 0.41 -4.32 2.91 -1.29 -0.84 -4.46 -2.45 -2.46 -1.87 -1.58 -2.34 -1.5 
+-1.07 -2.84 -0.73 -3.43 3.14 0.74 1 -4.43 1.11 3.88 0.28 3.54 2.28 0.95 2.54 -1.15 
+2.63 -0.17 2.93 -1.73 -1.13 -3.84 -1.07 -2.32 1.24 -1.3 2.02 4.12 1.84 0.54 3.02 -0.74 
+2.89 -2.71 2.56 -1.62 3.45 -1.76 0.78 -2.26 2.7 0.43 0.7 -2.69 1.2 -2.73 -0.98 -2.8 
+3.1 0.28 2.74 0.93 2.64 -1.02 2.58 -2.04 2.69 -0.52 2.61 -2.02 2.69 -0.52 2.71 0.48 
+2.69 -0.5 2.63 -2.5 2.62 -2.43 2.65 -2.43 1.74 -2.3 1.8 -2.26 2.69 -1.91 1.76 -2.24 
+2.73 -0.95 2.73 0.09 3.17 -1.49 1.32 -3.59 0.89 -3.56 0.93 -3.49 0.43 -2.96 -0.41 -3.79 
+-2.7 -5.39 -1.32 -2.17 -2.25 -2.11 -1.3 -2.23 -2.69 -1.5 -1.3 -1.26 -1.71 -2.62 -1.24 -2.71 
+-2.14 -3.02 -2.15 -2.11 -2.61 -1.52 -0.22 -3.84 -0.24 -2.84 0.63 -2.96 0.21 -2.88 0.66 -2.95 
+-0.59 -3.24 -0.17 -3.34 0.26 -2.89 -1.57 -1.67 -0.13 -2.82 0.3 -2.89 -0.15 -2.82 -2.32 -2.54 
+-0.48 -2.78 -2.28 -2.54 -0.5 -2.78 0.41 -2.86 -2.41 -1.13 -2.41 -1.11 0.39 -2.43 -2.61 0.33 
+-2.54 -0.16 -2.61 0.33 -1.23 0.37 0 -157.18 2.76 -0.82 1.3 -1.79 -1.95 -1.04 -0.13 -1.41 
+-2 -0.56 -1.62 1.32 -1.5 0.37 -0.67 -1.47 -4.1 2.14 3.04 -0.78 0.11 1.43 -2.54 1.74 
+2.54 0.63 3.08 -0.8 1.7 1.04 0 157.18 -1.43 0.41 -3.39 -0.02 1.19 -2.04 -2.58 0.32 
+-1.64 -2.62 -1.87 1.13 -2.63 -1.54 -2.36 -0.68 -1.67 -2.12 -2.06 -2.15 -1.61 -2.19 -1.56 -2.17 
+0.63 -2.93 0.89 -3.95 1.11 -2.97 0.3 -2.87 -0.13 -2.84 -0.98 -0.84 -1.59 -1.71 -1.24 -2.71 
+-0.84 -2.76 0.04 -2.84 -0.8 -2.75 -0.71 -2.76 -1.8 -1.71 -1.75 -1.76 -1.37 -1.73 0.19 -2.86 
+-0.98 -2.78 p
+-1.67 -1.71 0.35 -1.98 -1.26 -1.78 -1.76 -1.28 -2.12 -0.29 -3.26 0.74 -2.47 -0.26 -2.99 1.2 
+-2.13 1.63 -3 0.26 -3.23 2.73 -0.02 -1.9 1.56 -2.13 4.52 -2.3 2.28 -2.11 0.06 -2.89 
+2.15 -2.6 2.06 -0.61 1.58 -2.99 -0.21 -2.84 -0.78 -2.36 0.39 -2.45 -1.91 -1.32 -1.73 -0.83 
+-2.39 -0.84 -2.64 -0.3 -1.89 -0.43 -2.96 -0.3 -3.19 0.17 -1.78 1.56 0.89 -2.52 2.39 -2.06 
+0.29 -1.96 0.47 -2.97 1.5 -1.54 0.74 -2.02 -1.96 -1.41 -3.38 0.11 -2.58 1.11 -2.85 1.59 
+-0.56 -1.48 2.37 -3.06 1.97 -3.52 2.85 -1.56 2.14 1.45 2.36 -3.02 0.5 -1.5 -1.97 0.05 
+-2.46 1.99 -0.82 -1.95 3.23 -1.06 -1.45 -1.93 0.24 -2.04 1.52 -1.98 1.85 -3 -0.93 -1.02 
+1.25 -1.98 -2.23 -0.02 -1.5 -1.52 -0.28 -1.52 0.78 -3.02 2.32 -2.97 2.87 -1.91 3.21 -1.95 
+2.73 0.08 1.63 -1.91 1.5 -2.95 -0.41 -2 -0.89 -2.08 -0.3 -2.02 1.63 -2.95 1.72 -2.93 
+-1.48 -1.15 -0.13 -2.04 1.8 -2.93 2.56 -2.36 2.52 -2.3 4.04 -2.67 -0.11 0 0 -1.56 
+3.64 -2.19 1.89 -1.83 2.21 -1.82 3.45 -1.62 3.32 -1.15 2.55 -1.21 2.38 -0.76 2.04 0.24 
+0.98 -1.39 -0.89 -0.59 -2.54 -0.28 -1.24 -1.67 -2.5 -0.35 2.7 -2.21 -3.28 1.09 -1.5 -0.72 
+-2.37 0.74 -2.26 1.74 -0.54 -1.15 -2.84 0.65 -4.19 1.47 -1.34 1.39 -1.46 -0.22 -2.32 1.85 
+-1.91 -0.28 -1.37 1.41 -2.8 1.22 -0.39 1.58 -1.89 0.24 -2.82 1.22 -1.84 1.39 3.3 -1.17 
+3.32 -1.15 4.21 -1.54 2.56 -1.24 3.11 -0.63 1.89 -0.83 -1.13 3.02 3.1 -2.75 1.41 -0.3 
+-2.84 2.75 1 1.69 -1.15 0.93 -1.41 -1.23 -1.62 0.84 -2.04 2.91 1.54 0.18 -0.48 1.52 
+1.5 -0.41 0.87 0.65 0 1.56 -2.41 0.24 -1.59 -0.17 0.98 -1.46 -1.3 -0.13 -1.07 -1.69 
+2.07 -2.93 2.6 -2.82 -0.56 -0.59 -3.06 0.61 -2.08 1.3 1.46 1.8 -1 2.04 -1.7 0.29 
+0.67 -2.59 -0.17 -1.65 -3.3 1.17 -2.32 1.3 -1.32 1.43 -1.95 0.33 -2.7 2.32 0.35 -1.61 
+-2.39 0.78 -2.66 2.95 2.43 -0.2 -1.24 2 -3.08 2.91 1.2 -2.02 -1.2 -1.82 -1.15 2.58 
+-2.09 3.04 1.43 -0.34 -2.21 1.91 -1.59 2.58 1.26 -4.82 -3 3.49 -0.24 1.63 -2.02 0.37 
+-1.82 2.52 -1.75 1.47 -2.41 3.67 -2 2.52 -1.35 2.13 0.96 0.61 4.14 -3.45 -2.38 3.05 
+-1.67 2.56 -1.32 3.73 -1.67 -0.11 -2.43 0.89 -0.49 -1.67 -1.59 2.13 0.63 2.73 -1.98 1.52 
+1.3 0.66 -1.7 1.54 -0.89 2.11 -0.5 1.61 -2.41 2.65 -0.86 2.63 0.07 2.19 2.61 -2.12 
+0.45 -1.61 1.37 -1.56 0.54 -2.11 1.3 -1.04 1.76 -2.06 -1.3 3.17 -1.74 2.06 0.45 1.61 
+-1.67 1.56 -0.49 2.67 -1.98 2.08 -0.78 2.67 -2.65 4.25 0.3 1.02 -1.59 1.08 -0.34 2.11 
+-2.52 1.11 0.63 -2.11 -1.85 0.52 -1.24 1.39 0 -1.89 2.82 -1.11 1.63 -2.13 0.11 -2.16 
+1.93 -2.11 0.83 -2.7 -2.47 0.54 -2.13 4.26 -1.37 2.16 -1.35 3.23 0 1.89 -0.67 0.76 
+-1.91 2.71 -0.98 2.71 -2.17 3.77 -0.2 3.21 -2.08 3.28 -1.82 2.78 -1.41 2.7 -2.43 2.82 
+-1.26 3.8 1.67 -0.11 -1.63 3.3 0.46 1.07 -0.91 3.25 -0.87 3.25 -0.13 3.2 -0.46 3.23 
+-1.04 3.28 p
+0.11 2.08 -1.75 3.36 -0.35 4.29 -1.58 2.29 -0.89 2.28 -1.61 3.38 -1.82 3.93 -0.83 3.32 
+0.85 1.47 -1.89 4.54 -1.5 2.34 0 3.19 -0.7 3.32 0.07 3.19 -1 3.36 0.21 4.25 
+-1.84 4.05 0.52 2.02 -0.74 2.84 -1.22 3.45 -0.47 3.3 -0.8 3.39 -0.76 3.41 0.39 3.12 
+-0.35 3.32 -0.26 3.3 -1.08 3.47 -0.63 3.38 -0.2 3.3 -1.54 4.75 -1 4.04 -0.52 3.39 
+-2.74 3.47 -1.71 1.52 -1.93 3.3 -2.52 2.36 -2.58 2.91 -1.61 1.06 -3.34 3.19 -2.61 3.63 
+-2.34 1.26 -3.34 3.91 -1.71 2.8 -1.72 2.82 -2.19 4.17 0.08 3.43 -1.8 5.28 -0.98 3.84 
+-1.61 2.87 -0.87 2.71 -1.61 4.12 -0.87 3.86 -2.32 5.6 -0.74 3.88 -0.76 3.89 -0.74 3.91 
+-1.39 4.21 -2.14 3.41 -0.61 4.51 -1.32 3.67 -1.32 3.06 -2.06 2.82 -1.35 2.52 1.59 1.67 
+-1.2 4.34 -0.41 3.95 0.24 3.04 2.38 1.96 2.37 1.26 1.52 0.5 1.09 3.19 0.93 2 
+-1.74 0.91 -0.78 -3.37 -1.35 4.47 -1.3 1.97 0.86 0.76 0.43 3.56 -0.08 5.16 1.93 0.24 
+0.52 3.54 2.11 1.37 1.06 4.52 3.2 0.73 2.38 0.59 -0.2 3.32 1.87 -0.44 0.13 3.13 
+2.08 2.65 2.43 -1.37 1.82 3.39 1.96 2.08 -0.91 3.04 1.43 3 0.39 3.62 0.76 3.38 
+0.75 4.73 1.02 2.56 -0.63 3.66 -0.95 3.88 0.04 4.54 1.63 1.56 -1.33 0.84 -0.2 3.47 
+-1.15 2.78 -1.3 0.85 -1.82 -2.15 -1.79 -0.82 -1.97 0.02 -0.33 -2.52 1.02 -3.34 -2.46 -0.39 
+-1.8 0.57 0.81 4.17 -1.96 1.34 -0.3 2.93 -1.59 2.52 -1.73 1.93 -1.29 -0.41 -0.43 2.41 
+-1.71 1.95 1.39 3.19 -0.5 3.22 -1.37 3.99 -0.16 2.98 -1.99 -1.26 -0.22 1.56 -1 1.61 
+0.41 3.3 1.31 2.63 1.02 2.86 -0.63 3.5 -0.56 3.49 -0.35 4.14 -0.22 3.26 0.02 3.91 
+1.13 -1.06 0.04 3.88 -1.24 -1.17 -1.95 1.87 -1.33 1.32 -0.91 3.3 -1.32 1.37 -0.07 2.52 
+-0.82 3.34 -1.55 1.65 -1.04 2.78 -0.74 3.38 0.11 3.43 -0.18 3.69 0.18 4.28 0.11 2.56 
+-0.3 3.12 -0.61 2.58 -0.82 2.11 -1.34 1.8 -2.24 0.13 -2.41 0.46 -0.93 3.21 -0.91 3.36 
+-1.15 2.74 -0.3 3.6 -0.26 3.6 -0.82 2.56 -0.18 3.65 -0.5 3.03 -0.43 3.15 0.48 5.14 
+0.48 3.9 -0.5 1.02 -0.82 2.93 -0.21 4.43 1.2 4.17 0.54 4.27 0.11 4.16 1.58 5.02 
+1.76 4.68 1.69 0.14 0.89 2.34 2.11 0.73 1.54 2.09 0.7 2.99 2.97 4.91 1.15 3.45 
+1.52 4.41 1.24 3.45 2.04 4.86 1.21 3.78 1.32 3.88 2.71 4.86 0.74 4.45 1 3.34 
+1.34 1.43 1.91 1.11 1.68 3.04 -0.18 1.13 1.65 2.97 2 4.95 2.8 2.74 0.18 3.1 
+2.64 4.97 2.73 4.93 2.87 3.73 2.41 3.65 1.95 2.04 2.95 3.62 2.52 2.06 0.97 2.71 
+1.55 2.69 -0.46 1.17 1.63 3.86 -2 -1.19 -2.59 -2.39 -2.58 -2.84 -2.48 -1.58 -2.06 -2.87 
+-1.52 -3.23 -2.41 -3.62 -2.43 -4.12 -2.39 -3.76 -2.87 -3.45 -1.75 -3.73 -2.71 -4.28 -2.58 -5.08 
+-2.7 -3.6 -2.56 -4.36 -1.8 -1.91 -1.63 -3.49 -0.97 -0.2 -2.07 -3.63 0.3 -1.88 -2.28 -4.91 
+-1.89 -4.02 -3.12 -0.39 3.19 5.58 1.37 4.3 1.93 4.45 1.52 3.88 1 4.56 2 0.8 
+2.78 2.84 p
+2.67 3.99 1.23 3.75 1.76 3.43 -0.11 1.93 1.34 3.37 0.96 2.5 1.91 2.58 1.91 4.14 
+-0.43 -3.19 1.5 -0.68 2.47 2.22 1.93 3.28 1.95 3.29 2.58 4.5 1.11 3.21 3.55 3.25 
+0.54 1.56 2.59 2.04 1.65 2.76 1.56 1.17 2.15 2.73 2.69 2.73 3.32 3.82 3.25 3.02 
+2.82 3 2.46 3.73 0.24 1.54 2.19 1.8 0.29 1.52 1.54 3.04 1.65 3.41 1.85 4.14 
+3.28 1.95 3.88 4.23 3.21 3.12 2.84 3.52 1.54 0.48 2.8 1.48 0.48 1.54 2.58 2.25 
+2.93 1.79 -2.3 -2.74 3.19 2.54 0.82 -0.2 1.11 1.78 -1.69 -0.83 1.3 2.52 2.11 0.69 
+2.32 2.63 2.87 2.56 2.91 1.58 2.3 1 2.67 2.04 2.25 2.15 1.71 0.67 2.93 0.3 
+3.26 0.98 3.71 2.02 2.69 1.87 3.54 1.54 3.55 0.37 3.65 0.65 3.23 0.79 3.41 1.08 
+2.56 0.22 1.52 0.63 1.43 0.56 2.3 0.68 -1.32 -2.82 2.41 3.15 2.45 0.95 2.39 0.91 
+3.86 1.8 3.3 1.63 2.02 1.04 1.56 0.11 -3.23 -3.43 -1.17 -2.37 -2.67 -2.58 -2.17 0.74 
+0.46 -1.2 -1.28 -0.63 2.99 0.05 3.38 1.95 0.83 -0.28 3.38 1.88 2.41 1.89 3.4 0.81 
+-0.69 1.61 2.73 2.39 3.32 2.47 1.49 1.06 1.91 1.37 2.93 2.61 0.26 0.21 2.61 2.67 
+3.86 2.82 2.22 0.3 3.12 1.65 3.87 1.17 3.34 2.54 4.29 1.74 0.93 0.39 2.98 1.86 
+4.27 1.43 0.29 -1.65 2.21 0.82 0.91 -0.32 1.59 -0.57 0.43 1.91 2.97 1.71 3.14 1.22 
+3.5 0.91 1.93 -0.26 1.2 1.39 2.3 1.33 -3.71 -1.09 -4.95 -1.34 -3.73 -0.02 3.66 1.21 
+3.06 1.61 2.46 0.91 2.78 0.63 2.6 -0.12 0.76 1.39 3.54 0.24 0.82 -1.45 -3.04 -2.13 
+0.74 0.24 2.37 0.76 2.88 0.72 -1.47 0.78 -0.3 1.41 2.63 -0.2 3.73 0.37 1.84 -0.41 
+3.41 0.54 -2.15 0.7 1.26 1.24 -3.73 -1.46 -3.11 0.31 -4.3 -0.35 -4.14 0.29 4.73 0.84 
+3.95 0.59 4.34 1.43 3.91 0.43 3.49 1.63 3.77 1.28 4.5 1.3 3.73 1.59 3.34 -0.24 
+0.18 1.58 2.78 1.71 4.03 1.61 1.2 0.87 1.72 1.22 2.97 2.06 4.36 1.59 4.77 1.34 
+3.34 0.78 2.58 1.52 3.47 1.15 -3.34 0.96 -0.8 1.97 2.78 1.52 0.67 1.97 1.06 2.11 
+3.21 2 -0.29 -1.67 2.54 0.5 0.5 -2.04 2.32 -1.52 -2.26 -1.95 -0.11 -1.61 2.45 1.26 
+1.82 2.45 0.48 1.8 -1.32 1.63 0.26 1.97 1.66 1.87 -0.52 1.26 -3.49 -0.89 0.06 1.89 
+0.52 1.67 2.17 2.43 2.04 2.6 0.39 1.91 2.93 2.54 2.3 1.91 -0.11 1.63 3.11 1.82 
+3.32 2.13 3.73 1.87 1.93 1.56 3.45 1.71 3.08 2.13 4.41 2.48 0 136.98 -3.37 -0.46 
+-5.6 -0.74 -5.59 -0.82 -5.6 -0.85 -11.16 -1.87 -3.38 -0.63 0 -155.23 -1.48 -2.82 -1.15 -2 
+-1.32 -2.14 -2.7 -0.2 2.37 2.25 -2.32 -0.71 -2.45 0.26 2.45 1.95 -0.13 1.39 1.54 1.82 
+5.19 0.2 0 155.23 -2.17 -0.39 -5.56 -1.05 -5.53 -1.12 -5.55 -1.13 -5.51 -1.24 -5.54 -1.21 
+-10.98 -2.65 -5.47 -1.41 -5.49 -1.43 -5.45 -1.49 -5.45 -1.52 -10.85 -3.21 -5.38 -1.71 -5.41 -1.7 
+-5.36 -1.8 -0.76 -0.26 0 -180.75 -2.47 -2.2 -1.62 -1.95 -2.43 0.89 -4.08 -1.13 -1.76 0.41 
+-2.89 -1.65 p
+-4.1 -1.26 4.82 2.78 3.76 1.43 3.88 0.87 2.91 1.55 3.99 0.26 0 180.75 -4.6 -1.54 
+-5.32 -1.88 -5.34 -1.89 -5.3 -1.98 -5.29 -1.99 -5.27 -2.06 -3.32 -1.32 0 -184.62 0.16 -1.21 
+-3.28 -2.78 -2.98 -3.28 -2.64 -2.73 -4.34 -2.36 -3.93 -2.63 -4.13 -3.28 -3.7 -2.47 -0.29 1.5 
+2.19 2.36 3.09 3.06 1.7 0.37 0.97 1.76 2.52 1.82 2.32 2.23 1.54 0.04 3.04 2.59 
+3.12 2.56 4.64 2.45 0 184.62 -1.93 -0.76 -5.23 -2.18 -5.21 -2.16 -5.19 -2.26 -1.65 -0.7 
+0 -56.83 -0.17 -0.3 -0.2 -0.32 -0.52 -0.09 0.45 0.37 0.43 0.35 0 56.83 -2.91 -1.28 
+0 -57.83 -0.61 -0.63 -0.58 -0.63 -1.41 -0.84 -1.43 -0.87 -0.65 0.06 -0.67 0.07 2.43 1.48 
+1.46 0.7 1.48 0.67 0 57.83 -0.63 -0.29 -5.16 -2.34 -5.14 -2.34 -5.1 -2.43 -2.49 -1.2 
+0 -59.44 -0.98 -0.85 -0.95 -0.87 -2.97 -1.32 -2.97 -1.35 2.17 1.45 2.2 1.48 1.75 0.74 
+1.76 0.72 0 59.44 -2.61 -1.26 -5.05 -2.52 -5.06 -2.54 -5.04 -2.6 -1.99 -1.04 0 -61.09 
+-1.15 -0.74 -1.15 -0.76 -0.63 -0.58 -0.63 -0.57 -2.23 -1.26 -2.23 -1.28 0.58 0.61 0.61 0.65 
+0.87 0.71 0.89 0.74 0.96 0.37 0.93 0.35 1.61 0.89 1.59 0.87 0 61.09 -3.02 -1.58 
+-4.97 -2.7 -4.34 -2.36 0 -61.39 -1.58 -1 -1.59 -1.02 -1.54 -1.04 -1.52 -1.04 -1.56 -1 
+-1.54 -1.02 -2.78 -1.43 -1.59 -1 -1.56 -1.02 0.31 0.91 1.11 1 1.11 1.02 0.45 0.58 
+0.46 0.61 -0.34 0.39 1.8 1.2 1.8 1.17 0.85 0.21 0.84 0.2 2.34 1.15 2.37 1.13 
+-0.3 -0.82 2.47 0.82 0 61.39 -0.63 -0.35 -4.91 -2.78 -4.92 -2.78 -4.88 -2.88 -4.86 -2.87 
+-4.84 -2.97 -4.82 -2.95 -4.75 -3.04 -4.78 -3.04 -4.7 -3.15 -4.73 -3.12 -4.67 -3.19 -4.64 -3.21 
+-4.6 -3.3 -4.6 -3.28 -4.55 -3.36 -4.54 -3.39 -4.49 -3.43 -4.5 -3.45 -4.43 -3.54 -4.42 -3.52 
+-8.73 -7.2 -4.29 -3.67 -4.3 -3.69 -8.46 -7.51 -4.19 -3.82 -4.17 -3.82 -4.1 -3.91 -4.11 -3.89 
+-4.03 -3.97 -4.02 -3.97 -3.97 -4.04 -1.3 -1.34 0 -448.89 0.7 -4.05 0.37 -3.89 -1.69 -1.58 
+-1.02 2.13 1.54 1 -0.89 2.82 1 3.58 0 448.89 -2.67 -2.69 -3.89 -4.13 -1.89 -1.97 
+0 -2.99 -3.62 -4 -3.58 -3.95 -3.47 -3.95 -3.41 -3.91 -3.32 -3.88 -3.28 -3.86 -3.17 -3.84 
+-1.63 -1.93 -1.62 -1.98 -1.63 -1.95 -1.61 -2 -1.63 -2 -1.61 -2.02 -2.39 -3.06 -2.35 -3.04 
+-2.3 -3.04 -2.28 -3.02 -2.21 -2.99 -2.19 -3 -2.15 -2.93 -2.11 -2.95 -2.11 -2.93 -2.06 -2.93 
+-4.04 -5.86 2.06 3.04 2.11 3.08 2.16 3.11 2.22 3.14 2.25 3.17 2.32 3.21 2.13 2.86 
+2.14 2.87 2.18 2.82 2.19 2.85 2.19 2.8 2.21 2.8 2.02 2.58 2.04 2.58 2.09 2.61 
+2.15 2.63 2.14 2.64 2.22 2.67 2.25 2.67 5.25 6.08 5.34 5.99 2.67 2.95 2.71 2.93 
+2.69 2.93 0 2.99 -1.99 -2.13 -3.82 -4.16 -3.82 -4.19 -7.5 -8.46 -3.67 -4.32 -3.67 -4.3 
+-3.6 -4.38 -3.61 -4.36 -7.03 -8.86 -6.88 -8.98 -6.72 -9.12 -6.58 -9.22 -6.4 -9.33 -6.25 -9.44 
+-6.08 -9.55 -5.91 -9.66 -5.75 -9.77 -5.55 -9.85 -5.4 -9.94 -5.21 -10.05 -5.05 -10.13 -4.86 -10.22 
+-4.69 -10.3 p
+-4.51 -10.39 -4.35 -10.46 -4.14 -10.53 -3.95 -10.61 -3.77 -10.68 -3.61 -10.74 -3.38 -10.81 -3.21 -10.85 
+-3.04 -10.91 -1.74 -6.71 0 -162.24 0.13 -0.74 0.22 -1.52 0.08 -3.6 0.13 -3.63 -0.15 1.13 
+-0.18 1.13 -0.15 1.13 -0.04 4.08 -0.05 2.02 0 162.24 -1.08 -4.25 -2.65 -11 -2.43 -11.07 
+-2.25 -11.09 -2.06 -11.13 -1.87 -11.18 -1.67 -11.2 -1.48 -11.24 -1.28 -11.24 -1.09 -11.29 -0.89 -11.29 
+-0.7 -11.3 -0.49 -11.3 -0.26 -10.22 p f*
+942.23 3567.43 -5.06 0.15 2.54 -0.07 2.52 -0.08 f*
+1255.32 3475.58 -1.91 1.15 2.58 -1.52 2.56 -1.56 -1.3 0.78 -1.93 1.15 f*
+1265.64 3469.29 -1.69 1.04 1.23 -0.78 1.7 -1.07 -1.24 0.8 f*
+1277.08 3461.96 -3.28 2.13 1.37 -0.86 1.91 -1.26 f*
+1286.02 3455.96 -3.23 2.2 1.82 -1.21 1.41 -0.98 f*
+1293.92 3450.54 -1.61 1.11 3.15 -2.21 -1.54 1.11 f*
+1303.12 3443.96 -1.84 1.32 3.22 -2.34 -1.37 1.02 f*
+1312.21 3437.21 -2.15 1.61 2.8 -2.11 1.91 -1.45 -2.56 1.95 f*
+1321.2 3430.34 -2.62 1.99 2.47 -1.91 2.39 -1.86 -2.24 1.78 f*
+1330.05 3423.29 -2.02 1.59 1.02 -0.8 3.47 -2.82 -2.47 2.04 f*
+1340.73 3414.41 -3.84 3.23 1.88 -1.56 1.96 -1.67 f*
+1348.29 3407.92 -3.75 3.23 2.84 -2.43 4.02 -3.55 -3.11 2.75 f*
+1355.64 3401.39 -3.67 3.25 3.87 -3.43 3.12 -2.86 -3.32 3.04 f*
+1364.2 3393.58 -4.19 3.82 2.8 -2.58 3.52 -3.27 3.47 -3.3 2.34 -2.25 2.32 -2.24 2.28 -2.26 
+-0.32 0.33 -4.02 3.97 -4.1 3.89 -4.1 3.91 f*
+2.77778 w
+1 J
+1 j
+K
+1570.36 2918.96 -0.13 11.35 -0.37 11.33 -0.37 11.35 -0.76 11.2 -0.89 11.35 -1.13 11.2 -1.26 11.35 
+-1.52 11.2 -1.63 11.21 -1.89 11.1 -2.02 11.21 -2.26 11.07 -2.39 11.09 -2.65 10.96 -2.88 10.96 
+-3.02 10.96 -3.15 10.83 -3.53 10.86 -3.52 10.69 -3.78 10.72 -4.02 10.57 -4.17 10.59 -4.27 10.46 
+-4.52 10.33 -4.66 10.33 -4.91 10.2 -5.03 10.2 -5.14 10.07 -5.43 9.96 -5.66 9.83 -5.64 9.7 
+-5.92 9.7 -6.17 9.57 -6.16 9.44 -6.42 9.34 -6.54 9.18 -6.79 9.07 -6.92 9.07 -6.92 8.84 
+-7.29 8.68 -7.29 8.71 -7.55 8.44 -7.55 8.31 -7.79 8.31 -7.95 8.06 -8.05 7.94 -8.29 7.81 
+-8.31 7.55 -8.42 7.57 S
+1347.44 3408.77 -8.68 7.3 -8.68 7.31 -8.81 7.05 -9.05 6.81 -9.07 6.8 -9.18 6.55 -9.31 6.43 
+-9.44 6.29 -9.55 6.05 -9.7 5.93 -9.68 5.66 -9.94 5.66 -9.94 5.43 -9.94 5.16 -10.2 5.04 
+-10.18 4.91 -10.31 4.66 -10.33 4.54 -10.44 4.41 -10.57 4.16 -10.57 3.91 -10.7 3.77 -10.68 3.64 
+-10.82 3.41 -10.81 3.14 -10.96 3.02 -10.94 2.91 -10.94 2.64 -11.09 2.39 -11.07 2.28 -11.2 1.99 
+-11.07 1.89 -11.2 1.78 -11.2 1.39 -11.3 1.26 -11.2 1.13 -11.33 0.89 -11.33 0.74 -11.2 0.52 
+-11.33 0.24 -11.3 0.13 -11.33 -0.13 -11.33 -0.24 -11.3 -0.52 -11.33 -0.74 -11.2 -0.89 -11.33 -1.13 
+-11.2 -1.26 -11.2 -1.39 S
+832.01 3561.7 -11.2 -1.78 -11.2 -1.89 -11.07 -1.99 -11.07 -2.28 -11.07 -2.39 -11.07 -2.64 -10.96 -2.91 
+-10.8 -3.02 -10.83 -3.14 -10.81 -3.41 -10.7 -3.64 -10.7 -3.77 -10.57 -3.91 -10.57 -4.16 -10.44 -4.41 
+-10.44 -4.54 -10.18 -4.66 -10.33 -4.91 -10.07 -5.04 -10.04 -5.16 -9.94 -5.43 -9.81 -5.66 -9.84 -5.66 
+-9.54 -5.93 -9.57 -6.05 -9.44 -6.29 -9.31 -6.43 -9.18 -6.55 -9.18 -6.8 -8.94 -6.81 -8.79 -7.05 
+-8.81 -7.31 -8.55 -7.3 -8.44 -7.57 -8.42 -7.55 -8.18 -7.81 -8.05 -7.94 -7.92 -8.06 -7.81 -8.31 
+-7.66 -8.31 -7.42 -8.44 -7.42 -8.71 -7.18 -8.68 -7.03 -8.84 -6.92 -9.07 -6.66 -9.07 -6.55 -9.18 
+-6.4 -9.34 -6.3 -9.44 S
+378.62 3272.46 -6.05 -9.57 -5.9 -9.7 -5.8 -9.7 -5.53 -9.83 -5.41 -9.96 -5.29 -10.07 -5.01 -10.2 
+-4.8 -10.2 -4.78 -10.33 -4.41 -10.33 -4.4 -10.46 -4.14 -10.59 -3.91 -10.57 -3.78 -10.72 -3.64 -10.69 
+-3.38 -10.86 -3.15 -10.83 -3.02 -10.96 -2.91 -10.96 -2.63 -10.96 -2.4 -11.09 -2.26 -11.07 -2.14 -11.21 
+-1.87 -11.1 -1.65 -11.21 -1.5 -11.2 -1.25 -11.35 -1.02 -11.2 -0.87 -11.35 -0.76 -11.2 -0.5 -11.35 
+-0.26 -11.33 -0.13 -11.35 0.13 -11.32 0.26 -11.35 0.5 -11.33 0.76 -11.22 0.87 -11.33 1.02 -11.33 
+1.25 -11.21 1.5 -11.22 1.65 -11.2 1.87 -11.22 2.14 -11.09 2.26 -11.09 2.4 -11.09 2.63 -10.96 
+2.91 -11.07 3.02 -10.85 S
+299.24 2740.08 3.15 -10.83 3.38 -10.83 3.64 -10.7 3.78 -10.72 3.91 -10.57 4.14 -10.59 8.81 -20.91 
+4.78 -10.2 4.8 -10.33 5.01 -10.07 5.29 -10.09 5.41 -9.94 5.53 -9.83 5.8 -9.83 5.9 -9.57 
+6.05 -9.57 6.3 -9.44 6.4 -9.33 6.55 -9.2 6.66 -9.2 6.92 -8.94 7.03 -8.81 7.18 -8.81 
+7.42 -8.57 7.42 -8.44 7.66 -8.45 7.81 -8.18 7.92 -8.07 8.05 -7.92 8.18 -7.81 8.42 -7.68 
+8.44 -7.45 8.55 -7.42 8.81 -7.18 8.79 -7.05 8.94 -6.95 9.18 -6.66 9.18 -6.55 9.31 -6.43 
+9.44 -6.29 9.57 -6.05 9.54 -5.93 9.84 -5.79 9.81 -5.54 9.94 -5.42 10.04 -5.17 10.07 -5.16 
+10.33 -4.8 S
+648.35 2330.79 10.18 -4.77 10.44 -4.41 10.44 -4.43 10.57 -4.14 10.57 -3.9 10.7 -3.78 10.7 -3.66 
+10.81 -3.39 10.83 -3.14 10.8 -3.04 10.96 -2.89 11.07 -2.64 11.07 -2.39 11.07 -2.28 11.07 -2.15 
+11.2 -1.88 11.2 -1.63 11.2 -1.52 11.2 -1.25 11.33 -1 11.2 -0.89 11.33 -0.76 11.3 -0.5 
+11.33 -0.26 11.33 -0.11 11.3 0.11 11.33 0.26 11.2 0.5 11.33 0.76 11.33 0.89 11.2 1 
+11.3 1.25 11.2 1.52 11.2 1.63 11.07 1.88 11.2 2.15 11.07 2.28 11.09 2.39 10.94 2.64 
+10.94 2.89 10.96 3.04 10.81 3.14 10.82 3.39 10.68 3.66 10.7 3.78 10.57 3.9 10.57 4.14 
+10.44 4.43 10.33 4.41 S
+1185.79 2326.02 10.31 4.77 10.18 4.8 10.2 5.16 9.94 5.17 9.94 5.42 9.94 5.54 9.68 5.79 
+9.7 5.93 9.55 6.05 9.44 6.29 9.31 6.43 9.18 6.55 9.07 6.66 9.05 6.95 8.81 7.05 
+8.68 7.18 8.68 7.42 8.42 7.45 8.31 7.68 8.29 7.81 8.05 7.92 7.95 8.07 7.79 8.18 
+15.11 16.88 7.29 8.57 7.29 8.81 6.92 8.81 6.92 8.94 6.79 9.2 6.54 9.2 6.42 9.33 
+6.16 9.44 6.17 9.57 5.92 9.57 5.64 9.83 5.66 9.83 5.43 9.94 5.14 10.09 5.03 10.07 
+4.91 10.33 4.66 10.2 4.52 10.46 4.27 10.45 4.17 10.59 4.02 10.57 3.78 10.72 3.52 10.7 
+3.53 10.83 S
+1542.05 2729.25 3.15 10.83 3.02 10.85 2.88 11.07 2.65 10.96 2.39 11.09 2.26 11.09 2.02 11.09 
+1.89 11.22 1.63 11.2 1.52 11.22 1.26 11.21 1.13 11.33 0.89 11.33 0.76 11.22 0.37 11.33 
+0.37 11.35 0.13 11.32 S
+922.22 2368.1 -2.15 1.49 -4.01 0.63 -3.65 0.76 -3.14 1.02 -1.02 1.63 -3.89 0.63 -3.66 1.13 
+-5.54 0.39 -2.25 -1.26 1.39 -1.52 -0.39 -1.76 -3.02 -1.02 -1.49 -1.39 -2.52 -1.26 -2.65 -1.13 
+-1.89 -1.26 -3.9 -0.24 -5.27 0.74 -5.41 1.15 -3.04 0 1.39 -1.65 1.02 -1.39 2.13 -1.76 
+2.15 -1.89 0.73 -0.76 0.89 -0.89 0.13 -0.62 0.24 -0.5 -1.63 0.26 -1.5 0.13 -2.02 0.63 
+-1.89 0.5 -1.02 -0.26 -0.87 -0.37 2.02 -0.62 1.99 -0.5 0.76 -0.63 0.76 -0.52 -0.37 -0.5 
+-0.52 -0.37 -0.37 -0.39 -0.37 -0.5 -2.41 0.26 -2.39 0.24 -2.88 1.02 -3.02 0.87 0.13 0.63 
+0.24 0.63 -1.89 1.02 S
+856.16 2358.9 -1.75 0.89 -2.89 0.63 -3.02 0.5 -3.41 0.37 -3.38 0.39 -1.78 -0.26 -1.76 -0.37 
+-1.25 -0.26 -1.13 -0.37 -1.13 -0.39 -1.13 -0.37 -3.14 1 -3.15 1.02 -3.02 0.73 -3.02 0.63 
+-0.63 0.63 -0.5 0.65 -2.02 0.24 -2.02 0.13 -2.26 0.75 -2.38 0.76 -2.52 0.74 -2.65 0.63 
+-2.15 0.63 -2.12 0.52 -2.15 1.26 -2.12 1.26 0.74 0.86 2.02 0.89 1.39 1 0.14 1.39 
+-1.26 0.89 -3.28 0.37 -5.41 0.76 -5.79 1.26 -4.54 1.39 -6.27 1.76 -5.29 0.52 -1.5 1.5 
+3.75 0.26 1.15 1 -4.17 0.76 -0.63 1.65 -1.37 1.63 1.37 0.13 4.41 -2.02 5.04 -0.76 
+3.9 0.5 -1.02 2.41 S
+781.05 2389.39 -3.25 1.63 -4.91 0.76 -4.91 0.89 -3.67 1.37 3.04 -0.24 4.77 -0.5 4.64 -0.39 
+1.02 1.13 -5.04 1.28 S
+772.77 2395.31 -1.26 -0.65 -5.03 1.15 -0.37 1.13 3.15 -0.5 3.52 -1.12 S
+772.77 2395.31 3.77 0 -0.39 1.26 -1.89 1.76 -3.38 0.76 -0.26 1.63 1.65 0.76 2.52 0.5 
+-2.52 1.13 -4.16 -0.5 -3.15 1.39 -2.52 0 -2.38 0.63 0.89 1.13 -1.39 1.39 -3.52 0.13 
+1.63 -1.76 -4.91 0.37 -0.76 1.26 3.15 -1 -0.63 1.89 4.17 -0.13 -2.28 1.13 3.41 -0.5 
+3.14 -1 0.24 1 -3.02 1.26 -3.28 1.13 -1.89 -0.87 -4.27 0.37 -3.39 -0.13 -2.64 -0.5 
+-1.39 1.75 2.64 0.63 S
+745.96 2412.17 -1.13 1.79 2.76 0.5 3.15 -1.13 2.28 0.87 2.39 1.02 2.38 0.87 2.26 2.78 
+2.52 0.63 -0.37 1.52 0.24 1.26 2.41 0.87 2.39 1.02 3.14 -0.26 -3.64 1.39 -2.65 2.02 
+2.89 0.37 6.42 0 3.28 -2.12 2.26 2.52 0.76 1.39 1.37 1.26 -0.5 1.5 -2.89 2.15 
+-3.51 2.02 -3.15 1 -4.16 2.28 -4.27 1.76 -3.78 1.39 -4.14 2.39 2.15 0.76 -1.26 1.75 
+-2.78 0.76 -1.39 1.65 -2.76 1.76 -3.54 1.13 -2.12 1.39 0.26 -2.02 -1.39 -0.37 -3.02 1.76 
+-1.52 2.26 0 1.52 3.02 -1.75 0.76 0.76 3.51 -1.02 -3.25 2.15 0.11 1.63 S
+741.43 2459.29 -2.76 1.25 -0.39 2.02 -0.37 2.41 -2.52 1.89 2.78 0.11 -1.65 2.02 1.89 0.89 
+-2.02 2.02 -0.24 1.39 2.39 1.39 0.76 1.63 0.76 1.52 1.75 0.63 3.02 -1.25 -1.62 -0.26 
+-0.89 -1.52 2.39 0.39 S
+744.71 2475.8 2.88 -2.78 -2.52 0 -3.12 1.39 2 -2.52 -2.62 0.5 -0.13 -1.89 -0.12 -2.02 
+0.89 -2.15 1.63 -1.63 1.63 -1.52 1.75 -2.13 -3.38 0.74 0.5 -1.37 3.41 -1.78 -2.15 -0.5 
+1.26 -2.15 2.88 -2.26 2.91 -0.76 0.73 -1.39 3.67 -1.5 2.26 0.63 4.02 -0.89 4.41 -2.26 
+3.91 -1.91 3.51 -1.5 1.89 -1.39 2.78 -0.76 3.02 -1.52 1.39 -2.12 3.52 -0.89 2.02 -1.39 S
+789.5 2436.11 4.02 -0.76 1.65 -1.37 -1.39 -1.02 2.88 -1 4.54 -2.02 0.89 -1.65 2.89 -1.5 
+-1.26 -1.02 3.64 -1.76 2.15 -1.76 0.87 -2.28 1.89 -2.52 3.78 0.49 2.14 1.52 3.02 1 
+4.02 0.39 4.41 -0.5 5.17 -0.26 4.64 -0.37 4.67 -0.13 3.64 -0.39 5.27 0.89 4.17 0.76 
+3.14 0.89 1.13 2 -0.13 2.15 1.26 1.52 1.49 1.62 1.52 1.52 1.88 1.63 1 1.78 
+0.63 1.76 2.91 1.63 -1.02 2.28 2.02 1.39 2.78 1.63 2.13 1.39 3.02 1.52 2.52 1.5 
+3.54 0.76 2.63 0.39 2.52 1.13 2.02 1.39 -0.12 1.26 -2.39 1 -0.89 1.26 1.65 0.39 
+1.63 -1.26 0.89 1.37 S
+894.92 2454.75 1.75 1.02 2.13 -0.63 1.02 -1.02 0.87 -1.62 2.78 0.76 -1 1 0.5 1.26 
+-1.02 1.02 2.14 0.36 2.65 0 0.11 -1 -0.24 -1.25 3.91 0 3.88 0.37 -0.24 2.39 
+-0.89 0.89 2.14 0.76 2.26 -0.63 1.88 -1.02 S
+919.57 2457.4 -1.39 -1.39 2.28 -1 1.76 -0.89 3.38 0.89 3.65 1.39 2.28 1.26 3.25 1 
+4.53 0 2.78 0.89 3.64 0 3.52 -0.5 3.78 0.24 3.52 0 4.41 -0.5 3.54 -0.13 
+3.52 -0.24 3.52 -0.13 4.04 -0.76 3.77 -0.63 3.52 -0.89 4.64 0.39 2.41 1 4.27 -0.36 
+4.14 0.75 4.54 0.13 4.14 0.74 2.02 0.13 3.88 -0.24 1.26 1.99 S
+1014.17 2460.54 1.65 1.39 2.52 0.13 0.5 -1.52 0.99 -1.88 1.89 -1 2.91 -0.62 -1.15 -2.15 
+3.27 1.52 1.89 0.5 1.39 1.39 1.89 1.39 4.64 1 3.14 1.13 4.78 1.15 3.28 0 
+3.77 -0.52 3.28 0.39 2.52 -0.76 2.02 0.89 2 -0.26 -0.76 -1.89 2.91 0.76 2.02 2.65 
+3.26 2.13 3.78 0.63 3.41 1.28 4.14 -0.13 3.28 -1.02 0.24 -1.89 1.89 -1.13 -1.5 -1.12 
+-2.39 0 0.63 -1.02 1.89 -0.87 1.25 -1.15 -1.25 -1.63 3.88 0.13 0.63 -1.65 1.52 -0.87 
+3.15 0.24 2.25 -1 1.52 -1.52 2 -1.12 1.89 -0.5 2.52 0.13 -3.39 -2.15 -2.02 -2.02 
+-2.02 -2.15 -2.89 -0.13 S
+1093.18 2445.68 -2.38 -1.89 -3.54 -2.12 -1.76 -2.15 2.14 -0.37 1.39 1.89 4.52 0.5 3.02 0 
+0.89 -1.13 0.26 -1.26 3.38 0.87 4.04 0.63 1.89 -0.13 4.9 2.15 2.89 0.63 4.04 -0.12 
+3.02 -0.11 5.03 1.5 2.88 -0.24 3.02 -0.39 3.02 -0.37 2.89 -0.5 S
+1138.71 2443.05 0.39 -1.15 1.26 -1.13 2.02 -0.89 2.39 -0.24 0.24 -1.39 0.89 -1 1.5 -0.63 
+-0.87 -1.91 2.26 -0.24 -1.13 -1.52 2.02 -0.24 -0.25 -1.26 1.88 -0.12 0.26 -0.76 3.52 0.5 
+2.78 -0.37 -0.52 -2.02 -1.25 -2.02 -1.5 -2.02 -2.26 -2.26 -0.76 -1.65 -2.64 -2.39 2.38 0.24 
+-1 -1.37 2.38 0.49 3.28 1.26 1.37 -0.76 S
+1157.33 2418.23 0.52 -1.12 0.37 -1.13 -2.88 -2.28 -3.78 -2.65 -2.38 -2.14 -3.41 -2.76 -1.89 -2.28 
+-0.63 -0.99 -0.76 -1.02 0.26 -0.74 0.13 -0.63 0.76 -0.39 0.63 -0.37 -2.15 -1.25 -2.15 -1.15 
+-0.74 -0.87 -0.63 -0.75 0.87 -0.13 1.02 0 -1.15 -1 -1.13 -0.89 1.13 -0.12 1.15 -0.14 
+-0.39 -0.36 -0.37 -0.37 -1.89 -1.02 -1.75 -0.87 -2.64 -1.15 -2.78 -1.13 -1 -0.63 -1 -0.76 
+-1.26 -0.63 -1.39 -0.62 0.89 0 0.74 -0.13 3.02 0.63 3.03 0.76 0.37 -0.37 0.5 -0.39 
+-1.63 -1.13 -1.65 -1.13 -1 -1.13 -1 -1.15 -1.52 -1 -1.63 -1 -0.76 -0.76 -0.76 -0.89 
+-2.52 -1.13 -2.38 -1.13 S
+1119.73 2375.91 -1.39 -0.89 -1.26 -0.89 -2.13 -1.13 -2.14 -1 -1.76 -1.02 -1.89 -0.87 -2.02 -1.15 
+-2.13 -1.12 -2.64 -1.39 -2.65 -1.26 -1.89 -0.62 -2 -0.63 -0.52 -0.63 -0.5 -0.5 -2.38 -1.02 
+-2.39 -0.87 -2.25 -0.26 -2.28 -0.13 -1.36 -0.63 -1.52 -0.63 -1.26 -0.76 -1.26 -0.74 -2.89 -0.75 
+-2.78 -0.76 -2.12 -0.13 -2.02 -0.24 -3.02 -1.02 -3.02 -1 -0.89 -0.89 -3.41 -1 -3.38 -0.89 
+-1 -0.99 -2.28 -0.26 -2.26 -0.37 -1.76 -0.76 -1.89 -0.89 -3.14 -0.99 -3.28 -1.15 -3.02 -0.24 
+-3.02 -0.26 -2.78 -0.37 -2.75 -0.5 0.13 -0.52 0 -0.37 -2.14 -0.62 -2.26 -0.5 -2.91 -0.52 S
+1022.22 2341.75 -2.89 -0.63 -3.51 -0.5 -3.41 -0.49 -2.52 -0.37 -2.52 -0.39 -1.13 0.39 -1.13 0.24 
+-1.52 0.26 -1.37 0.24 -1.89 0.13 -1.75 0 -0.39 -0.37 -0.37 -0.5 0.76 -0.39 0.74 -0.37 
+-1.89 -0.5 -1.75 -0.52 -0.87 0.52 -0.89 0.5 -3.02 -0.5 -3.02 -0.66 -2.52 -0.49 -2.64 -0.5 
+-3.28 -0.14 -3.39 -0.12 -9.81 0 -3.15 0.13 0.13 -0.49 0.11 -0.37 -2.52 0.5 -2.38 0.5 
+1.25 0.36 1.26 0.52 -1.26 0.5 -1.39 0.5 1.15 0.5 1.13 0.52 S
+960.59 2339.75 1.5 0.64 1.65 0.63 2.52 0.5 2.39 0.37 -0.76 0.5 -0.63 0.52 -0.25 0.49 
+-0.11 0.5 2 0.39 S
+968.88 2344.29 2.02 0.5 -0.63 0.24 -0.62 0.39 0.89 0.63 0.87 0.63 1.26 0.63 1.26 0.75 
+-0.63 0.5 -0.5 0.63 -0.87 0.5 -0.89 0.39 -1.25 0.49 -1.39 0.38 -1.26 0.39 -1.26 0.37 
+-1.12 0.37 -1.26 0.52 -0.76 0.5 -0.86 0.37 -1.52 0.26 -1.63 0.13 -2.25 0.24 -2.15 0.39 
+2.02 0.36 2 0.39 2.28 0.63 2.13 0.73 0.63 0.76 0.52 0.76 -1.02 0.5 -1.13 0.63 
+-1.39 0.76 -2.76 1.13 -2.02 1.25 -3.02 1.02 -3.64 0.89 -4.04 1 -3.91 0.76 -4.27 0.87 
+-4.15 0.52 -5.53 -0.26 -4.77 0.89 S
+956.18 2352.21 -2.38 -0.13 -2.29 -0.11 -1.49 -0.52 -1.63 -0.5 2 0.13 2.02 0 S
+952.41 2351.08 2.26 0 2.28 -0.12 -0.39 0.63 -0.37 0.63 S
+886.87 2355.88 -0.39 0.5 -0.37 0.5 1.13 0.26 1.13 0.24 0.89 0.63 0.88 0.64 -2 1.52 
+-4.41 -0.26 -1.76 -1 -0.52 -1.26 0.26 -0.5 0.36 -0.52 2.41 -0.37 2.39 -0.37 S
+845.72 2358 -1.26 0.64 -1.26 0.75 -2.52 0.26 -2.52 0.24 0.13 -0.5 0.26 -0.5 3.52 -0.5 
+3.64 -0.39 S
+755.54 2433.59 1.5 -1.13 3.27 -1 2.65 0 3.38 -0.89 2.02 0.37 2.89 -1 2.65 0.5 
+1.39 1.26 -0.26 1.65 -2.52 1.75 -2.75 1.76 -3.91 1.89 -4.04 1.88 -4.38 1.65 -4.67 2.26 
+-5.27 2.14 -0.76 -1.02 0.24 -0.87 3.91 -2.02 S
+750.87 2442.79 4.41 -1.75 4.14 -1.89 1.39 -1.15 -0.5 -0.87 -1.12 -1.15 -1.65 -1.37 -1.99 -1.02 S
+751.63 2435.61 1.49 0.76 0.89 1 -1.62 1.15 -2.28 1.49 -2.52 0.13 0 -1.89 2.15 -1 
+1.89 -1.65 S
+732.12 2468.62 2.91 -0.37 -0.26 1.37 S
+734.77 2469.62 0.89 1.78 -3.14 1.26 2.25 -3.04 S
+734.77 2469.62 -3.15 1.39 0.5 -2.38 S
+743.58 2478.69 2.64 -0.87 2.26 0.76 -4.28 1.63 -0.63 -1.52 S
+728.73 2479.58 2.25 0 0.39 2.39 S
+731.38 2481.96 1.26 0.63 1.36 1.65 -3.14 -0.5 0.52 -1.78 S
+731.38 2481.96 -1.78 -1.26 -0.87 -1.13 S
+761.2 2494.32 4.51 0 -4.64 1.39 0.13 -1.39 S
+503.41 2893.9 -2.13 -1.39 -0.49 -3.51 S
+500.79 2889 -1.89 -0.26 0 -5.16 -0.39 -3.52 -0.87 -0.76 1.26 -2.02 1.37 -4.41 0.76 3.28 
+1.75 -0.89 -0.87 -2.02 -1.12 -3.15 -1.52 -0.5 -2.38 -1.25 -2.39 -2.02 -0.26 -3.02 0.39 -3.91 
+1.26 -4.29 -1.65 -1.76 1.39 -2.52 2.02 -2.78 1.37 -3.02 1.26 -3.77 0.63 -4.4 2.15 -3.41 
+1.39 -4.3 0.74 -3.88 1.52 -7.81 2.39 -5.55 0.89 -3.91 1.5 -4.04 0.89 -2.75 1.63 -2.91 
+1.02 -3.77 1.76 -5.3 -0.13 -3.39 2.26 -4.17 1.65 -2.88 1.76 -2.78 3.38 -3.91 2.28 -1.26 
+2.65 -3.66 3.38 -3.15 1.52 -0.99 2.63 -3.02 2.52 -2.28 1.89 -3.41 1.76 -1.5 2.78 -3.4 
+0.5 -3.41 S
+547.57 2746 1 -4.03 1.52 -4.78 0.13 -3.28 0.63 -3.41 1.13 -3.52 0.26 -3.27 0.37 -3.28 
+-0.37 -3.15 0.74 -3.4 0.76 -3.41 0.5 -3.28 1.25 -3.39 0.76 -2.91 -0.63 -2.02 1.89 -4.04 
+-0.26 -4.27 1.02 -3.41 0 -3.14 0.63 -3.28 0 -3.28 1.5 -2.26 1.89 -4.53 -0.87 -1.52 
+0.87 -3.28 1.78 -3.91 1.63 -3.38 0.87 -2.28 1.65 -2.26 0.37 -4.4 1.75 -3.28 -0.11 -2.15 
+1 -3.28 0.5 -3.14 0.13 -3.28 0.89 -3.28 0.86 -3.28 -0.5 -1 1.63 -3.27 -1.63 0.13 
+1.26 -3.8 2.38 -2.88 1.39 -2.65 1.89 -2.78 2 -3.27 0.25 -3.28 2.15 -3.78 1 -2.65 
+1.89 -2.75 S
+587.33 2595.98 1.89 -2.14 1.89 -0.5 -0.63 2.13 2.52 -1.13 0.37 -2.12 1.52 -1.02 -0.26 -1 
+2.65 -4.29 0.76 -2.65 2 -2.12 0.52 -2.65 1.63 -1.52 -0.37 -1.63 1.63 -2.15 1.39 -3.15 
+-1.75 2.15 -1.39 1 -0.5 2.15 -1.39 1.49 -0.39 1.65 -2.63 2.13 -0.12 -2.26 0.89 -2.65 
+2.38 -2.65 0.5 -1.49 0.87 -2.15 1.79 -1.52 -1.26 -0.76 1.89 -1.5 -0.62 -2.64 1.63 -2.15 
+0.5 1.65 2.38 -0.89 1.65 0.13 1.37 -3.77 1.65 -2.54 2.39 -3.02 -4.14 3.4 -0.89 -0.62 
+1.26 -2.15 2.02 -2.52 2.39 -3.64 1.76 -1.39 1.89 -2.52 2.02 -0.39 0.24 -1.62 3.04 -3.54 
+-1.26 4.8 1.5 -2.52 S
+624.43 2539.67 2.26 -2.02 -1.5 0.38 2.13 -3.02 1.15 -2.52 1.26 1.76 -1.26 2.02 3.14 -2.88 
+1.13 -2.02 -2.39 0.24 2.63 -3.02 2.38 -0.76 -0.24 1.65 2.65 -2.41 1.89 -0.24 1.37 -1.52 
+2.28 -1.26 3.38 -1.12 0.13 1.63 -0.63 2.65 1.63 -0.37 1.02 -2.02 -1.39 -1.76 2.02 -1.39 
+3.02 -0.5 0.63 0.5 -2.64 2.89 -2.02 2.91 1.02 1.63 1.37 0.13 -0.99 1.52 1.52 0.13 
+2.52 -0.26 -4.03 2.78 -2.52 2.25 -2.52 2.39 -1.76 2.91 0.13 2.02 1.39 1.13 -1.64 2.91 
+-1.63 3.02 0.25 2.02 0.88 2.02 0.5 2.02 -1.5 3.02 -1.65 1.89 -2.75 -0.13 -3.14 2.02 
+-2.89 1.89 -2.41 2.91 S
+628.58 2567.64 -0.74 3.02 S
+627.84 2570.66 0.24 1.52 1.52 1.63 2.25 0 -1.25 1.89 0.89 1.02 -1.75 3.02 -1.52 2.02 
+-0.26 2.02 1.39 1.89 -3.14 1.13 0.76 1.89 2.52 -2.02 1.89 0 -0.5 1.52 -2.28 3.02 
+-2.12 -1.39 -2.89 1.52 -2.02 3.51 -2.39 3.04 0.63 1.5 2.76 -1.62 2.64 -1.02 3.39 -0.11 
+1.88 1.39 -0.62 2 -1.5 1.52 -0.5 3.02 -0.26 1.89 -2.39 2.02 -0.89 2.64 1.76 -1.63 
+3.15 -0.13 3.04 0.26 1.87 0.37 2.64 0.37 2.39 0.89 1.65 0.75 1.99 1.39 -0.36 2.39 
+0.75 2.39 0.13 2.91 -1.52 2.89 -2.12 0.63 -2.15 2.64 0 2.91 -2.26 2.02 -4.54 2.39 S
+630.73 2634.53 -1.62 2.02 0.11 2.02 3.14 -2.78 3.02 -0.26 2.15 -1.63 3.02 -1.13 2.52 0.24 
+3.14 -0.75 2.15 0.26 1.76 1.25 1.26 1.76 -0.26 2.02 1.63 1.78 1.02 2.76 -0.26 2.78 
+1.39 1.76 1.76 1.75 1.76 1.78 0.76 2.76 0.76 2.78 0 2.78 0.87 2.78 1.15 2.63 
+1.63 1.78 1 0.87 0.13 2.78 -0.37 2.91 -1.02 3.02 -0.87 3.91 -0.63 2.89 1.5 2.14 
+1.64 2.28 2.02 2.13 1.63 2.15 2.38 0.63 2.65 1.52 1.89 -1.15 1.63 2.64 2.64 -0.24 
+-1.25 2.02 3.38 0 2.65 -0.76 2.64 -0.39 2.52 0.13 2.65 -0.26 -0.39 2.41 4.77 2.26 
+-0.37 2.91 S
+696.4 2702.43 0.5 2.75 2.29 2.54 0.49 2.76 S
+699.67 2710.48 2.26 2.52 0.13 2.91 -0.26 2.78 0.13 2.89 1.52 1.65 -0.26 2.88 0.26 3.41 
+0.5 3.15 -0.63 3.02 -0.26 2.9 -0.63 2.89 0.25 2.91 0.24 3.78 2.65 1.52 2.15 2.13 
+2.13 3.04 1.26 2.63 1.65 2.64 1.37 1.26 2.65 1.52 1.26 2.28 2.25 2 1.39 2.28 
+1.26 2.65 1.39 2.64 0.37 3.91 -0.37 2.89 -0.89 3.53 -1 3.52 -1.26 3.54 -3.14 1.5 
+-2.76 0 -2.78 0.89 -1.75 2.28 -2.65 1.89 -1.75 2.25 -1.76 2.28 -2.64 2.39 -2.65 2.52 
+-2.63 2.52 -2.64 0.5 -2.78 -0.5 -2.63 0.5 -2.64 2.02 -2.65 0.5 S
+683.31 2813.65 -2.64 2.02 -2.63 1.02 -2.78 -0.89 -3.02 -0.24 1 2.75 -1.26 2.78 -0.74 2.64 
+-2.64 -0.39 -0.76 2.15 -3.52 1.75 -2.52 1.65 -2.91 2.78 -3.02 0.74 -1.89 -0.63 -2 -4.02 
+-1.15 1.26 1.02 2.25 1.13 3.91 -2.89 1.76 -2.65 0.13 -2.52 1.13 -2.26 -0.86 -0.39 -3.54 
+-1.12 -3.91 -0.87 4.41 -3.14 -0.74 0.63 3.39 1.13 2.91 2.26 1.52 1.89 1.5 2.52 2.52 
+0.89 4.41 -3.04 1.28 -0.37 4.41 -1.12 4.54 0.36 3.52 -2.12 3.77 -1.39 2.02 -2.25 2.78 
+-1.78 2.78 -2.26 2.26 -2.02 1.65 -1.49 1.13 -2.28 1.75 -2.39 1.26 -2.39 0.89 -2.64 0.24 
+-2.39 0.89 -2.75 1.52 S
+614.13 2886.48 -0.76 2.52 -1.39 2.12 -2.02 2.91 -2.13 0.13 0.87 2.52 S
+608.7 2896.68 -0.24 2.89 -2.02 3.04 -1.89 2.88 -2.25 3.15 -3.78 0.39 1.63 3.28 -0.12 3.52 
+-2.39 2.14 -1.75 1.76 -1.63 0.26 -0.89 3.28 -1 2.64 4.02 -0.52 -2.63 1.15 -3.04 1.37 
+-2.63 1.15 -2.9 -1.64 -2.52 0 -2.39 1.78 -1.63 1.89 -0.37 1.89 -1.78 0.87 -2 0.52 
+-2.52 1.25 -2.78 0.74 0 2.41 0.26 2.88 -1.26 2.52 -2.02 1.65 -1.75 1 0.5 4.66 
+-2.13 -0.76 -0.13 -3.02 -2.28 -0.62 -2 -0.14 -2.15 0 -1.13 -3.77 0.5 -4.54 -1 -3.78 
+-2.91 0.24 0.39 2.91 -0.39 2.78 1.89 2.62 S
+553.6 2943.4 1.65 1.52 0.13 3.14 -0.13 3.78 2.52 -0.11 1.76 2 -0.13 2.02 -1.25 1.39 
+-1.89 -0.87 -1.63 -1.52 -2.15 0 -1.76 -0.89 -2.65 -0.36 -2.52 2.15 -1.76 -1.52 -1.5 1.52 
+-2.02 0 -1.63 -1.52 -1.39 -3.14 -0.89 -3.28 -1.89 0.5 -1.76 -2.15 -2.89 -1.5 -1.39 -5.04 
+-0.76 4.41 -0.75 3.15 -0.63 3.02 -1 3.27 -1.52 1.65 -1.26 2.13 -2 1.39 -1.65 -1.52 
+-2.26 0.13 -2.25 0.26 -2.65 0.5 -0.75 2.52 -1.63 1.26 0.37 3.27 -1.13 2.78 -0.76 3.52 
+0 7.05 0.5 3.28 1.65 2.41 1.13 3.28 2.15 3.38 1.23 3.28 1.52 3.91 2.02 2.02 
+2.02 4.9 S
+520.03 3004.75 0 1.65 -1.02 2.26 -0.24 4.04 -1.15 1.76 -0.87 1.64 -1.89 0.89 -1.39 2.12 S
+513.48 3019.12 -2.12 0.5 -1.89 1.02 -1.39 2.88 -2.64 0.26 -0.5 3.02 -0.76 2.52 2.52 0.52 
+2.89 3.52 1.65 3.28 3.01 5.04 -0.63 -3.38 2.52 2.38 2.13 3.41 2.02 2.88 1.89 2.91 
+2.26 2.63 2.78 1.28 1.39 2.52 -0.13 1.89 -1.39 1.63 -1 1.88 -1.64 1.13 -2 0.65 
+-1.76 1.26 -1.65 1.13 -1.5 0.14 -2.41 -3.41 -1.76 -2.39 -1.75 -1.52 -1.5 -2.64 -1.52 0 
+-1.75 -0.37 -0.63 -1.89 -2.25 0.87 0.63 1.02 -1.39 2.64 -2.38 0.5 -1.89 1.49 -2.15 1.02 
+-0.87 1.26 0.37 3.27 S
+496.25 3065.86 -0.63 3.02 -0.63 2.78 0.76 4.04 1 3.64 1.39 4.14 0.63 3.41 0.76 3.04 
+1.37 3.25 1.78 1.39 0.37 4.04 1.75 3.78 2.15 1.89 2.25 3.14 2.15 3.04 2.25 3.02 
+2.52 2.28 2.65 2.39 2.39 1.5 1.76 2.78 2.39 2.91 2.02 3.51 2.52 2.52 2.13 0.63 
+2.52 0 2.52 0.13 1.39 -1.39 3.52 0.26 1.65 3.28 1.37 -0.26 -1.99 -2.25 2.12 -0.5 
+1.26 -1.02 1.52 -1.62 0.24 -2.64 0.63 -2.28 2.02 -0.14 -0.5 -3.52 -1.26 -2.14 0.63 -2.26 
+1.75 -1.52 1.52 -0.26 0.37 -1.49 -0.5 -2.29 1.13 0.39 0.26 3.52 0.74 1.02 1.26 0 
+1.39 1.13 S
+557.51 3116.12 -1 1.39 -1.26 1 -0.39 1.52 2.39 1.52 0 -3.04 2.28 -0.37 1 -1.39 
+0.76 -2.02 1.63 0.5 S
+562.91 3115.23 -0.99 -2.39 1.13 -1.62 1.65 -1.16 1.49 -1.25 -0.26 -2.39 0.52 -2.52 -1.26 -2.91 
+1.63 -1.13 2.15 0.13 1.63 -1.13 -0.26 -3.15 -1.25 -4.66 0.25 -1.26 -1.52 -3.28 -1.89 -2.14 
+-1.23 -2.02 1.23 -0.37 -2.39 -2.52 -1 -2.15 -0.37 -3.02 -0.89 -3.14 -1 -3.8 0 -3.14 
+-1.02 -3.02 1.65 -0.63 1.37 0.13 2.52 2.26 2.39 3.14 2.14 3.41 1.39 4.17 1.5 4.14 
+1.26 1.89 1.02 3.91 1.5 3.28 1.25 3.67 1.76 3.02 1.78 3.02 2.76 2.14 2.78 2.02 S
+586.33 3100.76 3.02 0.75 2.39 0 2.75 0.24 2.28 0.89 2.02 1.13 2.49 0 1.39 -0.76 
+2.52 0.63 2.64 0.63 1.89 -1.13 1.75 0.63 -1.39 1.39 2.78 0.36 0.87 -0.86 1.52 0.86 
+1.39 1.78 -2.52 2.52 1.75 -0.26 1.39 -0.37 0.11 -1.39 -0.5 -2.28 0.63 2.41 1.52 2.52 
+0.86 2.13 0.39 3.03 1.39 1.63 2 2.02 0 3.28 0.89 -1.76 1.25 1.89 2.02 2.89 
+1.76 1.25 1.89 -0.24 -1.89 -1.25 -1.52 -1.79 -2.12 -1.62 0.24 -2.02 -1.26 -1.12 0.89 -0.89 
+-1.88 -1.26 -2.52 -2.15 1 -0.24 2.52 2.15 2.78 1.26 1.63 0.63 1.39 4.14 1.76 3.04 
+0.13 -1.78 S
+632.62 3123.68 -0.76 -2.39 2.78 0.5 3.02 1.65 2.65 2.13 -0.13 1.78 2.26 0.74 2.38 0 
+2.02 -0.37 1.26 -1.25 1.39 -1.26 2 -0.39 S
+651.48 3124.8 1.88 1.39 -0.36 -1.89 1.75 -0.13 -0.63 -0.87 2.52 -0.75 1.39 1.63 -1.13 -1.13 
+-1.25 1.13 1.25 2.54 -0.12 1.5 1.75 0.76 0.89 1.39 2 1.13 2.4 0.89 0.64 0.87 
+1.99 -0.37 2.28 -0.5 2.76 1.26 -0.13 -1.39 2.28 -0.5 2.02 -0.26 2.39 0.13 1.37 1.63 
+2.02 -1.63 2.52 -0.63 3.41 0.13 -1.65 -1.52 2.28 -1 -3.28 -0.26 -1.75 0 -3.02 -0.37 
+-2.41 -1.52 -1.25 -2.52 0.39 -2.39 2.76 0.63 2.78 0.63 2.25 1 S
+684.44 3123.8 1.39 -1.13 3.02 -0.12 3.78 -0.76 3.14 -0.87 1.76 1.37 2.28 -0.24 3.02 0.5 
+-0.62 3.02 2.12 2.28 0 1.39 -2.64 -1.52 -3.02 -1 -1.63 -2.15 -1.13 1.39 -2.28 0.36 
+-1.5 1.76 -0.76 3.28 -0.86 2.02 1.13 3.28 2.26 3.02 2.26 1.65 -2.89 0.89 0.5 3.88 
+2.52 -2.13 2.02 -0.26 2.52 0.13 1.39 1.52 0.24 1.89 -0.87 2.25 -2.28 1.13 -2.13 1.15 
+-2.78 0.24 -2.13 0.52 -2.78 0.24 -2.88 -0.37 -2.89 -1.02 -2.52 -0.76 -2.52 -0.5 -2.41 0.63 
+2.64 0.75 2.28 0.76 2.52 0.63 2.26 0.89 2.88 0.99 2.91 0.38 3.51 0.39 1.5 -1.39 
+2.41 1.63 2.38 0.76 S
+701.56 3156.55 2.63 -0.76 1.39 -1.26 1.65 -1.37 2.13 -1.02 1.13 -1.62 1.39 -1.15 1.76 -1.26 
+0.5 -1.75 2.41 -1 2.38 -1.78 2.63 0.75 2.41 0.76 2.52 0.89 S
+726.48 3145.98 3.26 -0.26 2.91 -1.39 3.13 0.5 2.28 0.39 1.76 3.77 2.15 1.76 0.24 3.53 
+-1.89 1.26 1.52 2.15 -2.02 2.13 3.41 0.13 -0.26 2.02 -1.76 1.89 0.63 2.15 -2.14 2.26 
+1.52 2.28 -0.76 2.52 0.5 2.26 2.28 2.28 2.39 0.75 0.11 2 1.64 1.52 0.5 2.28 
+1.26 3.02 1.63 2.89 1.26 3.16 1.52 2.89 1 2.02 -2.52 -0.5 -2 -0.39 -1.02 -2.02 
+-2.88 -1 -2.52 0.26 -2.26 -0.76 -3.15 0.76 S
+738.17 3194.49 1.76 3.64 -0.63 1.39 1.39 2.65 1.76 1.39 2.76 1.88 1.75 2 2.52 1.39 
+-0.74 1.65 -1.15 1.39 0.26 2.26 2.15 0.89 0.24 2.26 1.02 2.41 0.37 2.25 -2.39 1.52 
+-0.89 1.25 -0.13 2.26 -0.74 2.15 -2.15 0.38 -2.52 -1.39 -0.76 -2 -2.62 -1.02 -2.91 -0.76 
+-0.76 -1.89 -2.62 -2.12 -2.39 -1.52 -3.04 -0.5 -1.37 1 -2.02 -1 -1.13 -2.41 -0.13 -1.88 
+-2.78 -2.89 -2.12 -2.02 -2.78 -2.78 -3.78 -2.65 -3.02 -0.5 -3.38 0 -3.02 0.39 -2.52 0.63 
+-1.75 -2.41 -1.89 -2.25 -3.04 -2.52 -2.62 -2.02 -2.02 -3.15 -3.64 -0.63 -3.28 0.5 -1.63 -1.52 
+0.76 3.04 1.76 2.52 S
+682.31 3195.75 1 2.65 1.63 2.63 1.39 3.27 3.02 1.65 2.41 1.63 2 2.15 4.67 2.25 
+0.37 2.91 -1.26 2.38 -1.13 2.41 1.39 3.88 0 2.65 0.37 2.14 2.02 2.91 1.26 3.28 S
+701.43 3234.55 0.24 3.02 1.26 3.41 -1.5 1.37 -1.39 0.89 2.02 1 2.52 2.15 2.65 1.13 
+3.52 2.78 0.13 1.75 -0.76 1.39 2.52 1.89 3.15 1.39 3.88 1.39 5.55 1 3.52 0.13 
+2.88 0 1.26 -1 3.28 1.26 1.49 -1.52 1.52 -1.62 3.28 1.49 4.01 0.13 0.76 -3.02 
+7.29 -0.26 3.15 1.39 4.91 -0.13 1.75 2.28 1.15 -2.02 -1.26 -1.39 -0.13 -2.78 3.28 -0.74 S
+767.36 3251.3 3.52 -1.02 3.78 1.25 0.75 2.78 3.13 1.26 2.28 -1.02 3.91 1.65 0 2.52 
+1.99 1.13 0.39 2.41 -0.63 1.89 -3.27 -1.15 -3.78 -1.5 -3.64 -1.39 -2.78 0.89 -2.62 -1.02 
+-1.52 0.89 3.41 3.02 3.26 0.89 2.78 0.87 2.88 2.52 -4.77 0.25 3.14 2.29 2.65 1.88 
+1.36 2.26 3.04 -1 3.26 1.89 2.02 1.63 2.78 1.89 3.26 1.78 2.39 -0.39 2.14 1.13 
+1.26 -1 0.13 -1.65 2.89 -0.11 2.88 -0.26 1.79 -0.26 1.13 1.65 0.87 2.64 -1.26 2.39 
+-2.89 0 -2.89 -0.89 -3.41 -1 -2.75 -0.63 -3.41 -0.62 -1.76 0.89 -3.64 -0.13 -3.77 0 
+-3.91 -2.64 -2.64 -3.28 S
+781.05 3276.87 -2.89 0.37 -3.28 -1.63 -3.51 0.63 -0.13 0.63 -3.26 -0.26 2 2.28 3.77 1.13 
+2.65 -1.76 3.91 2.39 3.38 3.14 -3.38 0.5 -2.28 1.15 -2.89 -3.28 -2.25 0.63 -3.91 -0.63 
+-0.5 2.02 1.37 3.52 S
+769.86 3287.7 2.15 2.52 2.65 3.15 4.14 2.52 -0.5 2.02 -0.5 2.15 -1.89 1.13 -2.39 -2.25 
+-2.64 0.24 1.75 2.14 2.26 2.02 -0.37 2.25 -0.13 2.54 2.02 2.25 1 2.02 2.02 -0.37 
+0.13 -1.78 3.28 1.13 2.76 2.28 1.52 2.52 2.76 2.28 3.14 2.26 3.41 1.52 1.89 2.65 
+-2.41 1.13 1.39 1.25 3.77 -0.26 -2.52 1.89 2.02 1.15 3.77 0.24 4.91 1.52 -2.89 1.39 S
+806.36 3333.18 0.24 1.63 3.14 0 0.39 2.38 0.24 2.54 -0.5 1.5 2.52 1.02 1.26 1.5 
+-0.5 1.65 -2.28 0.87 3.78 1.52 3.64 0.75 3.54 1.13 3.14 1.89 2.63 0.63 3.28 0.63 
+2.26 1.39 1.78 1.52 3.25 0.76 2.91 1.37 4.27 1.02 2.89 1.25 2.52 1.26 3.77 -0.26 
+4.02 1.65 2.02 -0.5 4.14 0.63 1.26 2.52 3.14 1.26 2.28 2.39 2.63 1.13 1.65 2.28 
+-0.39 1.89 0.39 1.63 3.28 1.39 3.02 1.13 -0.62 1.91 -3.41 0.73 -4.41 0.26 -2.76 1.39 
+-3.91 0.5 -3.38 0.76 0.37 1.52 4.91 1.26 1.39 -1.39 2.52 0.63 2.89 1.63 2.89 1.65 
+2.39 2.13 -2.25 0.26 S
+878.56 3391.75 -3.28 -0.37 0.39 1.37 -1.89 1.02 -5.16 -0.5 -4.02 -1.26 -3.78 -0.39 -1.89 -1.49 
+-2.52 -1.39 -0.39 1.5 -3.02 0.89 -0.62 1.89 4.16 1.52 1.37 2.12 4.04 0 2.02 1.52 
+-0.26 1.25 1.26 2.28 0.37 2.76 -4.02 0.63 S
+861.33 3405.1 -2.52 1.39 -3.78 1.02 -3.14 0.73 -3.52 -0.87 -2.15 -2.28 -3.77 1.26 0 1.26 
+-2.75 0.89 -1.89 -1.25 -5.79 -2.02 -4.41 0.5 0.13 -1.25 -3.02 -0.76 -2.02 -1.13 -1.89 1.65 
+-1.5 1.89 1.5 1.88 1.26 2.26 2.91 2.28 0.87 2.26 3.91 1.65 3.52 2.02 1.39 2 
+4.14 2.14 3.78 2.65 -1.63 0.5 -4.41 -2.52 -3.02 -2.13 -3.54 -1.65 S
+829.99 3419.47 -1.87 -1.63 -3.77 -1.89 -3.28 -2.15 -3.14 -1.76 0.13 -1.65 -2.28 -1.89 -3.02 -2.52 
+-0.37 -1.89 -2.02 -2.64 -2.12 -2.39 -0.52 -1.78 -0.11 -1.89 3.52 0.89 0.5 -1.26 -1.63 -1.75 
+-0.26 -2.02 1.25 -1.65 -0.37 -1.76 -1.89 -2.52 -2.39 -1.26 0 1.63 2.26 1.89 -2.26 1.64 
+-0.52 2.02 -2.5 -0.5 0.24 1.63 -3.28 -2.02 -1 -2.15 -0.62 -1.89 -2.78 -1.5 0.76 -2.02 
+3.41 -0.89 -3.54 -1.25 -2.63 -1.5 -3.28 -0.76 -4.77 -1.39 -4.41 -1.52 -2.91 -2.15 -3.02 -2 
+-4.02 -1.65 -2.78 -1.63 -0.11 -1.65 -3.41 0.26 -3.64 -1.65 -4.53 -1.26 -3.78 -1.25 -3.52 -1.63 
+-3.91 -0.5 -4.28 -1.39 S
+741.55 3359 -4.01 -0.62 -4.66 -0.76 4.14 -0.39 4.3 0.39 3.01 -0.26 3.78 1.39 -1.25 -1.13 
+2.12 -0.76 -3.38 -0.5 -1.89 0.37 -3.64 -0.37 -2.65 0.24 0.24 -1.5 1.52 -0.76 -2.89 -0.76 
+-3.14 -0.89 3.14 2.02 -0.89 1.52 -3.52 -0.26 -0.76 -1.36 -2.65 0.11 S
+728.47 3354.71 -2.76 -0.63 -2.39 -0.87 -3.14 -1.65 -3.64 -1.13 3.75 0 4.93 1.26 3.76 1.13 
+-2.39 -1.39 -1.12 -1.26 -2.02 0.13 -3.39 -0.87 -3.14 -1.15 -3.02 -1.76 -0.39 -1.89 -2.52 0.89 
+-2.26 -0.89 -0.24 1.76 -4.3 -1.5 -3.02 -1.89 -5.14 -2.15 -3.41 -2.52 -3.91 -1.15 -3.02 -1.63 
+-2.25 -0.26 -3.91 -2.88 -2.52 -2.65 -3.25 -2.91 S
+673.76 3326.87 -3.41 -2.39 -3.28 -2.38 -2.76 -2.39 0.76 -1.65 -3.4 -0.87 -2.52 -1.78 -3.38 -2.02 
+-0.76 0.39 -3.41 -2.02 -3.02 0 1.26 0.63 -0.37 1.13 2.13 -0.76 2.65 2.64 1.13 2.41 
+3.28 3.38 -1.52 -0.12 -2 -1 -3.41 -1.62 -3.77 -1.78 -2.39 -1 -2.52 -0.89 -2.39 -3.14 
+1.39 2.78 -2.38 -0.63 -2.91 -1.25 -2.52 -0.13 -3.39 -1.13 -3.28 -0.76 -3.64 -0.63 -3.52 -0.39 
+-3.67 -1.63 -2.62 -1.75 -3.64 -2.02 -3.28 -1.02 -3.02 -0.24 -1.65 -0.76 -2.25 -2.15 -2.65 -2.02 
+-2.38 -1 -2.89 -1.64 -2.89 -2.52 -2.28 -2.64 -2.13 -0.62 -1.25 -2.52 1.63 0.76 -1 -1.76 
+-0.89 0.26 -3.14 -2.54 S
+580.41 3283.66 2.25 2.64 -2.89 -1.75 -2.64 -2.26 -0.5 -1.52 -2.76 -1.52 -1.52 -0.5 -2.89 -3.41 
+-3.14 -3.14 -3.91 -4.27 -3.27 -1.89 -1.89 -4.17 -1.63 -3.41 -1.5 -3.02 -0.26 -1.52 -2.25 -1.89 
+-0.26 -1.5 -2.39 -3.78 -2.89 -2.91 -3.28 -3.02 -3.28 -3.91 -2.64 -2.64 -2.26 -2.78 -1.52 -1.13 S
+533.09 3230.38 -1.63 -2.78 -2.52 -2.02 -0.63 -1.62 -3.52 -3.27 -1.12 -3.15 -2.52 -4.54 -2.02 -3.28 
+-1.89 -3.28 -2.52 -2.26 -1.5 0.74 0.5 3.14 -2.02 -4.14 -1.88 -2.52 -0.89 -2.52 -1.37 -3.41 
+0.11 -1.89 -1.76 -3.41 -1.25 -3.77 -2.63 -4.04 -2.78 -2.88 -2.02 -0.76 -1 -4.54 -1.52 -3.91 
+-2 -4.41 -1.25 -4.29 S
+491.47 3161.59 -3.28 -5.54 3.14 0.39 1.89 4.02 2.26 4.79 -0.24 1.89 2 3.64 1.02 0.26 
+1.63 3.52 1.76 1.89 2.52 4.29 2.78 3.64 2.52 5.04 2.75 4.29 1.76 3.78 2.91 3.41 
+2.39 3.78 2.38 4.14 2.39 3.54 1.52 3.27 2.12 2.89 2.39 1.52 2.65 2.89 2.52 2.41 
+2.02 1.13 -1.65 -3.78 0.52 -1.26 -1.52 -2.64 -0.99 -2.65 -2.52 -2.14 -3.02 -3.65 -1.89 -2.02 
+-2.41 -3.64 -2.89 -3.66 -2.75 -5.04 -2.65 -4.9 -0.13 -3.15 -2.76 -2.64 -2.02 -5.04 -1.65 -2.91 
+0.13 -1.13 -1.62 -3.02 -1.89 -1.15 -1.39 -1.39 -1 -3.39 -0.76 -4.41 -2.78 -4.92 -1.26 -3.91 
+-1.26 -3.78 -1.99 -4.8 S
+495.12 3145.46 -1.26 -3.52 -1.52 -4.41 -1.13 -3.4 -3.02 -4.91 -0.63 -3.04 -1.52 -2.02 -2.12 -0.74 
+-0.89 -2.41 -1.75 -0.11 -1.76 -4.67 -1.52 -5.03 -0.11 -4.17 -0.52 -4.28 -1.26 -4.17 0.26 -4.4 
+0.76 -2.91 0.5 -1 -0.37 -3.91 -0.52 -5.17 0.39 -3.14 0.5 -3.02 0.26 -3.67 0.73 -2.52 
+0.26 -3.64 0.37 -3.67 S
+479.25 3061.57 1.13 -2.63 0.89 -3.41 0.89 -3.28 2.52 -0.39 2.13 -0.11 1.39 -1.88 0.87 -2.02 
+0.52 -2.64 0.37 -3.15 -0.13 -2.52 -0.12 -4.29 0.13 -3.64 -0.12 -3.41 0.75 -3.4 1.02 -2.76 
+1.63 -1.65 0.76 -3.38 0 -2.54 1.39 -1.37 0.87 -3.27 1.39 -1.26 1.89 -1.89 1.25 1.13 S
+500.65 3007.79 0 -3.91 -1.12 1.13 0 -3.91 0.24 -3.28 0.26 -4.14 0.63 -3.54 0.63 -3.52 
+-1.02 -2.78 -1.37 -2.65 -0.39 -3.28 1.02 -1.62 0.24 -1.64 1.89 1.39 0.26 -3.02 1.39 -4.04 
+0.37 -3.14 -1.26 -3.28 1.63 -1.89 0.52 -2.41 1.24 0.39 1.78 -1.89 1.5 -2.52 0.39 -3.04 
+1.89 -1.26 -0.76 -4.14 1.76 -0.63 2.52 0.37 -1.13 3.41 0.37 2.52 2.02 0 1.76 0.76 
+1.76 2.13 1.39 -0.86 1.13 -2.78 0.13 -3.41 1.39 -0.87 -1.65 -1.52 0 -4.53 0.89 -3.91 
+0.63 -3.64 -1.02 -2.52 -0.74 -4.79 -0.76 -3.41 -0.37 -3.64 -1.39 -2.88 0.87 -3.17 -2 -1.99 
+-1.79 -3.41 -2.52 1.39 S
+513.84 2908.4 -1.99 -2.65 -0.14 -3.14 -1.88 0.37 0.26 -3.28 -2.41 -0.5 -3.25 -0.76 -1.02 -4.54 S
+776.78 3330.9 -1.75 -2.88 -1.26 -3.04 -2.88 -1.89 -0.39 2.02 -0.11 1.52 -3.14 1.13 -2.02 -3.02 
+2.02 -0.39 1.13 -1.89 -2.52 -0.37 -2.65 1.13 1.65 -3.41 3.78 1.26 -2.78 -3.02 2.38 -0.62 
+1.76 -0.76 0.89 2.65 2.25 2.78 0.76 -1.52 0.76 -1.62 2.25 2.02 -0.63 2.65 0.5 2.52 
+0.13 2.25 -0.13 2.52 S
+733.9 3313.02 -3.28 -2.65 -0.76 -1.89 0.37 -1.76 -0.99 -1.39 2.14 0 0.5 -1.76 0.5 -1.65 
+3.02 -0.5 1.13 -1.65 0 -2.26 1.89 1 -0.62 -2.64 1.65 2.41 0.5 1.76 -0.63 1.65 S
+739.3 3301.7 -1.39 0.5 -2.02 0.87 0 1.39 1.75 1.89 2.02 1.02 1.02 2.65 -1.89 -0.76 
+-2.91 -1.65 0.26 1.79 -2.26 -0.13 -1.15 1 1.15 2.78 S
+711.87 3295.77 -1.26 -2.52 2.15 -0.26 0.63 -1.63 -0.52 -2.64 0.89 -1.78 1.39 1.78 0.24 1.5 
+2.02 1.79 0.26 1.25 -2.52 0.63 -1.39 0.87 -1.89 1.02 S
+693.12 3269.42 1.52 -1.75 2.89 1.02 2.78 1 1.63 -1 3.28 2.52 -2.78 0.13 -2.13 0 
+-2.78 -1.78 -2.26 -0.13 -2.14 0 S
+674 3250.67 -2.02 -1.91 -3.14 -2.26 -1.37 -2.28 -2.15 -1.12 0.39 -2.13 -3.04 -1.91 1.26 -0.87 
+-2.63 -1.13 -2.64 -1.26 -2.65 -1.39 1.39 -1.15 4.28 1.65 S
+661.68 3234.92 2.38 2.52 3.41 3.15 3.02 2.38 3.01 2.54 3.15 2.26 0.24 1.89 -0.11 1.52 
+-2.78 -0.5 S
+671.88 3255.45 -3.15 -2.52 1.63 -0.36 -1.39 -2.02 -1.75 0 -3.15 -1.52 -1.39 -2.52 S
+662.67 3246.5 -2.38 -3.28 -2.13 -1.12 -2.02 -2.15 -2.02 -0.89 0.89 -1.89 2.52 2.15 1.37 1.76 
+1.89 1.88 2.78 0.89 0.37 1.64 -1.26 1 S
+662.67 3246.5 3.67 2.26 1.63 0.13 2.13 1.02 2.02 2.89 -0.23 2.64 S
+638.29 3205.82 0.63 -1.52 2.13 -0.86 -1.89 -3.04 2.41 -1.13 2.39 -1.13 3.39 -0.37 0.63 -1.52 
+-2.75 0.5 -1.89 -1.39 1.37 -1.5 -1.63 -3.04 1 -1.89 2.64 -1.26 1.65 -2.02 -1.26 -1 S
+647.09 3184.66 0.73 -1.52 1.89 2.64 2.28 1.52 0.87 2.02 1.88 1.37 -1.13 2.15 1.26 2.52 
+2.26 2.91 -1.13 2.38 0.5 3.02 -2.39 -0.37 -2.25 0.89 -2.39 -0.39 -1.89 0.13 -1.76 1.26 
+-2.52 0.13 -2.52 0.37 -2.52 0.13 S
+631.99 3184.79 3.02 -0.76 -2.75 -1.13 -1.89 -1.15 -3.4 -2.13 -2.52 -1.39 -2.02 -2.28 -3.14 -2.65 
+-2 -3.28 0.74 -1.25 1.52 -0.5 2.25 0.89 3.28 2.13 2.52 2.54 1.89 2.39 2.14 1.89 
+2.63 1.13 2.52 1.39 2.65 -1 3.14 1.26 0.87 -1.39 -0.24 -1.89 0 -2.15 -1.25 -2.26 
+-3.02 -2.65 -3.54 -0.89 -1.62 -1.52 2.39 0.39 1.76 -0.63 -2 -3.04 -2.02 -3.15 S
+633.88 3161.71 2.52 -0.62 3.02 2.78 3.02 1.63 2.38 1.39 1.39 2.15 -0.99 -3.54 0.36 -3.52 
+2.39 0.76 1.89 4.04 1.63 3.64 -0.87 3.14 -0.75 2.26 -1.26 1.78 -0.76 2.25 -0.73 1.26 
+-1.52 -1.89 -1.39 2.28 -0.24 1.63 -1.26 1.02 -2.52 2.13 -0.39 0.76 -2.25 -0.5 -2.78 -0.89 
+-2.76 -0.87 S
+646.7 3176.34 0.39 -2.52 0 -2.15 2.52 1.39 -1.52 1.13 -1.39 2.15 S
+625.07 3158.57 0.13 -3.15 1.13 -1.62 1.63 -1.26 2.41 -0.52 2.13 -0.74 2.64 -0.65 2.39 -0.37 
+2.52 0.5 -1.39 1.78 -1.49 1.75 -1.89 -0.25 -0.39 1.64 -1.62 1.13 -2.39 -0.63 -2.52 0.63 
+-1.26 1.76 -2.02 0 S
+640.17 3155.17 0.63 -1.63 2.25 -1.13 1.26 -1.52 0.89 -1.89 1.75 -1.13 2.25 -0.89 2.15 2.65 
+1.99 1.13 -2.12 0.75 -1.89 -0.37 -1.13 2.13 -1.52 0.89 -1.75 1.39 -2.15 0.76 -2.62 -1.15 S
+458.75 2923.5 -1 -3.51 0.89 -2.91 -1.52 -1 1 -2.15 1.65 1.65 -0.39 3.91 -0.63 4.01 S
+587.96 2593.34 1.39 -3.15 1.37 -2.28 2.15 -4.14 2.52 -0.62 -0.89 2.75 -1.89 2.02 -0.11 2.28 
+-1.64 2.02 -2.89 1.13 S
+653.88 2529.08 -0.89 -0.63 -1.52 0.39 0.52 -1.52 -1.65 -0.12 2.02 -2.89 1.63 -0.89 1.52 1.25 
+1.13 -0.99 -1 -1.65 2.75 -2.75 -1.36 0.24 -3.04 2.78 1.15 -3.02 -1.89 0.87 -3.14 0.63 S
+650.11 2520.77 -2.65 1.26 -4.14 1.52 -3.28 1.13 -3.41 1.13 1.89 -1.39 2.78 -1.13 2.02 -0.24 
+0.37 -1.64 2.78 -1.13 1.37 -1.52 1.89 0.39 2.39 -1.89 1.39 0.24 1.39 -1.39 4.14 -1.5 
+2.91 -0.63 0.5 1.13 2.26 -1.76 2.38 -0.75 1.52 0.75 3.28 -1.15 -2.78 2.28 2.52 0.37 
+1.25 1.65 2.52 0.24 0.87 0.63 -1 1.39 -2.02 -0.24 -2.39 0.76 -2.52 1.25 -3.26 1.13 
+-3.54 1.63 -2.12 1.78 -1.89 1.89 -3.64 2.12 S
+675.39 2535.27 4.14 -2.15 0.63 1.52 1.52 -0.39 1.63 -1.39 2.02 0.63 0.13 1.39 2 1.02 
+-1.37 1.89 -2.78 0.76 -1.63 -1.02 -3.14 0.76 -2.52 -0.64 2.52 -1.75 S
+678.54 2535.89 0 -1.39 -3.15 0.76 S
+768.1 2527.32 3.54 -1.12 3.25 -1.13 3.41 -2.02 -0.26 1.63 -2.25 1.13 -3.65 1.15 -4.03 0.36 S
+596.89 2920.49 2.76 -1.13 1.52 1.13 0.74 3.14 -3.25 0.76 0.63 -0.89 -0.63 -2.52 -1.76 -0.5 S
+568.71 2950.72 0.89 -2.52 -0.26 1.02 -0.62 1.5 S
+546.31 3010.94 1.25 -1.02 0.26 -3.02 1.26 -1.62 1.63 0.11 1 -1.37 1.26 -1.02 0.26 2.65 
+-1 2.14 -1.65 1.89 -1.49 1.89 -2.02 0.13 -0.76 -0.76 S
+541.54 3047.22 -0.13 -1.39 -0.76 -0.5 0.5 -1.02 1.39 -0.37 0.5 2.25 -0.11 1.65 -1.39 -0.63 S
+536.37 3053.02 2.02 -2.02 1.63 1.5 1.76 -1.76 2.02 0.5 1.89 0.52 S
+545.68 3051.75 1.25 -2.14 1.76 -2.39 -2.13 0.37 0.24 -2.52 1.39 -2.02 2.38 -2.15 0.26 -2.52 
+1.13 -1.76 1.13 -2.39 2.02 -1.02 0 -1.39 -1 -2.88 0.74 -3.41 2.65 -2.12 -0.5 -2.54 
+-1.89 -0.63 -1.62 -0.87 2.39 -1.76 2 -0.89 1.89 -1.39 1.52 -1.89 1.76 -1.26 1.76 0.13 
+2.02 -0.89 0.26 1.26 -1.02 0.76 -0.24 2.88 -1.52 1.91 -1.5 0.37 1.5 2.26 -1.26 1.65 
+-1.39 1.89 -0.74 3.4 -1.02 2.26 -0.63 2.65 -0.87 2.91 -1.26 2.39 -1.65 1.52 0 3.02 
+-0.74 2.15 -0.89 2.25 -1.52 1.52 -1 2.52 -1.63 1.5 -2.15 0.52 -1.75 1 -1.89 1.02 
+-2.38 0 -1.89 -0.52 S
+539.65 3054.51 -1.12 -2.02 -2.15 0.52 S
+560.92 3001.5 1.63 -3.8 1 0.63 1.89 -1.25 1.39 -1.63 1.89 -0.5 1.76 -1.78 0.26 -4.15 
+2.39 1.76 0.63 1.52 2.39 -0.12 -0.63 -1.52 2.25 -0.75 2.65 -0.37 2.02 -1.12 0.5 -2.91 
+2.38 1.78 -0.62 3.52 -2.89 3.02 2.26 0.52 -2.26 1.37 0.13 2.54 -2.02 1.89 -1.76 1.76 
+-2.52 1.63 -1.76 -0.11 -1.52 3.02 -2.26 1.52 -1.89 -0.63 1.89 -1.39 0 -2.64 -0.89 -2.15 
+0.5 -3.64 -2.26 -0.39 -1.89 1.25 -1.13 2.15 -1.63 1.76 -1.89 -0.73 S
+588.84 2981.46 1.5 -1.39 2.02 -0.52 1.63 -0.87 1.65 0.87 -0.76 2.28 -2.39 1.39 -2.38 1.26 
+-1.26 -3.02 S
+607.71 2959.16 -0.24 -2.26 1.23 1.26 S
+608.7 2958.16 1.15 -0.52 -0.26 1.78 -0.89 -1.26 S
+608.7 2958.16 -0.99 1 S
+607.96 2949.09 0.87 -2.78 0 1.13 -0.87 1.65 S
+568.58 3053.52 -0.87 -2.28 -1.78 -0.74 0.39 -3.91 -0.89 -3.67 1.65 1.39 0.24 2.78 1.13 2.02 
+0.89 3.64 -0.75 0.76 S
+571.09 3015.34 1.76 -1.26 1.89 2.02 -1.37 -1.13 -1.02 1.37 -1.26 -1 S
+571.59 3064.61 0.13 -2.02 2.15 -0.39 1 -0.74 -0.37 -1.64 -0.13 1.39 -3.15 1 0.37 2.41 S
+576.63 3061.57 0.13 -3.64 -2.38 -2.39 1.89 2.78 0.37 3.25 S
+574.61 3051.13 0.76 -3.8 -1.5 -2.76 S
+575.5 3043.32 -0.37 -4.04 S
+573.48 3036.37 -0.87 -6.16 S
+574.24 3028.69 1 -2.88 -2.39 -1.26 S
+577.39 3023.03 1.25 -1.63 S
+577.65 3016.73 2 0.5 1.78 -3.02 S
+555.12 3060.3 2.02 -0.87 S
+612.74 3103.28 1.89 -0.13 1.75 1.26 S
+641.3 3126.82 2.12 -1.25 2.15 -1.26 2.89 -0.37 -0.24 1.76 -2.02 0.39 -1.63 0.74 -1.88 1.15 
+-1.39 -1.15 S
+706.08 3150.52 0.63 -2.52 -0.37 -1.78 0.75 -1.89 1.39 -1.75 1.5 -1.13 0.5 2.26 -0.63 1.76 
+-0.73 2.02 -1.26 1.78 -1.78 1.26 S
+693.12 3134.77 -0.13 -1.89 0.52 -2.52 1.37 -2.91 1.26 1.65 2.4 0.24 -2.4 1.15 -1.5 1.13 
+-1.02 2.02 1.26 1.89 -1.76 -0.76 S
+739.17 3240.08 1.26 -1.39 3.41 -0.5 0.49 0.24 -0.62 1.39 -1.65 0.89 S
+742.05 3240.71 -2.88 -0.63 S
+743.58 3233.66 -3.52 -1.76 -1.02 -1.78 2.91 0.63 2.5 1.26 -0.87 1.65 S
+708.36 3211.87 1.25 -1.02 -3.27 -0.13 0.89 -1.26 1.89 0.26 -2.41 -1.65 3.64 1.65 1.02 1.52 
+-3.02 0.63 S
+687.35 3203.8 -0.14 -2.02 0.14 -2.25 1.88 2.25 -0.13 1.39 -1.75 0.63 S
+711.74 3131.25 -1.25 -2.41 2.78 -0.63 2.13 -2.02 2.14 -1.26 2.25 -1.39 1.65 -1.62 -1.15 -1.63 
+-2.5 -0.39 1.5 -1.52 3.27 1.64 1.63 -0.25 1.13 -1.39 -2.52 -2 2.41 0.37 -1.39 -2.15 
+1.75 -1 4.54 4.54 -1.89 0.5 2.52 2.02 -1.25 0.26 -2.52 -1.65 -0.13 1.39 1.63 1.39 
+4.17 1.25 -2.65 0.76 S
+729.99 3124.07 0.5 2.13 3.02 1.25 -0.86 1.79 -1.89 1.13 -2.28 0.63 -0.37 2.78 2.12 0.5 
+-0.99 1.76 -3.39 -0.24 2.89 1.89 2.13 1 3.04 1.75 2.63 2.02 -1.26 0.89 -2.89 -0.13 
+-2.15 -1 -2.38 -1.65 -3.02 -1.63 -3.02 -2.41 -3.28 -1.63 -2.63 -1.52 0.63 -1 -2.65 -0.63 
+-2.15 -0.5 S
+745.96 3251.41 0.89 -2.52 -3.02 -1.63 1.13 -1.52 3.14 -0.13 2.52 -0.11 0.63 -1.39 -0.89 -2.41 
+-1.26 -2.52 3.28 -0.37 0.63 2.52 2.13 2.26 1.39 2.4 1.25 3.02 1.89 3.02 2.89 1.89 
+-3.15 0.76 -2.88 -0.63 -3.78 -1.25 -3.52 -2.13 -3.28 0.74 S
+778.43 3245.5 -2.64 -2.14 1.52 -1.65 2.13 -0.24 S
+779.43 3241.47 2.78 1.13 1.36 1.75 -1 1.79 -4.14 -0.64 S
+797.55 3274.71 -2.65 -2.12 -3.02 -2.14 -2.39 -2.28 -1.52 -3.02 0.63 -2.15 0.13 -3.39 1 -1.39 
+-1.63 -3.27 1.63 -0.76 3.78 0 -2.13 -2.02 -1.65 -3.78 -4.27 -1.52 3.02 -0.74 -2.39 -2.65 
+-0.63 -2.91 -2.63 -2.15 -2.02 -1.89 -2.65 0 -3.28 -0.24 -2.76 0.24 -2.02 -3.14 -3.02 0.5 
+-1.52 2.28 -0.5 3.02 -2.12 -0.76 -1.02 0.76 -2.88 -0.76 -1.89 -2.39 1.63 -2.64 2.28 -0.5 
+0.74 -2.15 -0.24 -2.52 0.13 -2.13 -0.26 -2.41 -2.39 -1.5 -0.76 -2.64 0.13 -1.89 0.63 -2.28 
+-0.89 -1.5 0.13 -2.54 0.5 -2.26 1.26 -2.02 2.02 1.65 S
+762.07 3208.72 0.63 2.63 0.89 2.9 0.74 2.52 1.52 2.28 0.37 -2.78 -0.37 -2.78 0 -3.02 
+2.02 -2.02 3.78 2.26 0.99 2.78 2.39 2.14 0.76 2.26 0.75 3.14 1.76 2.78 4.01 2.15 
+-0.37 -4.3 -2.39 -3.02 0 -3.02 3.02 1.5 2.65 -1 2.52 1.26 4.02 1.39 0.5 2.26 
+0.39 2.65 0.24 2.78 1.02 2.78 -2.02 2.13 0.76 3.28 2.75 1.78 2.52 -1.26 1.02 3.02 
+2.76 0.87 1.89 2.78 0.5 2.78 2.15 3.78 0.38 2.28 -0.76 2.25 3.04 1.39 1.75 1.39 
+-1.52 1.5 0.49 1.89 0 1.52 -2.75 0.63 -0.63 1.65 -2.52 0.5 3.38 0.76 2.65 1.89 
+3.02 0.63 1.39 1.26 S
+814.15 3267.93 -1 1.26 -2.78 1.13 -3.28 0.63 -3.25 -0.89 -2.78 -0.73 -2.52 -1.39 S
+798.54 3267.93 1.76 2.13 2.64 1.02 2.78 0.89 2.89 0.24 2.02 -0.12 2.39 -1.37 -0.39 1.75 
+-0.5 2.02 -1.89 0.87 -3.02 0.63 -2.89 0 -2.88 -0.11 -3.91 -1.15 S
+814.15 3266.28 -2.25 -0.37 -2.65 -1.39 -0.26 -2.14 1.52 -0.87 0.37 -2.28 2.02 0.63 2.26 1.52 
+0.63 1.76 -0.37 1.76 -1.26 1.39 S
+818.92 3288.08 -1.25 -1.78 -1 -2.13 3.64 0.64 2.39 1.25 0 1.39 -3.78 0.63 S
+832.9 3289.34 -2.52 -0.26 -2.89 -1.62 0.63 -1.91 -1.64 -1.49 -2.75 -0.89 -2.91 -0.13 -3.38 -0.87 
+-1.26 -2.78 0 -2.39 0.13 -2.02 S
+816.3 3274.98 0.49 -2.15 2.52 -0.63 -1.02 -2.25 1.89 -1.78 2.91 0.25 2.52 0.89 0.87 2.38 
+-0.5 1.63 0.13 2.15 -2.15 1.76 0.39 2.41 1.63 2.02 1.39 -0.26 1.13 1.39 1.89 1 
+-0.13 1.75 1.76 1.79 0.89 2.02 S
+853.28 3290.34 -2.02 -1.13 -2.65 -0.89 -2.39 0.13 -3.14 -0.63 -2.39 -1.63 0.26 -2.65 2.65 -0.63 
+3.25 -0.13 1.88 -0.75 2.65 0.49 0.5 1.52 2.9 0.13 1.63 1 0.37 1.76 2.02 1.02 
+3.02 0.86 0 1.15 -3.15 -0.13 -2.39 0.76 -3.02 -0.26 S
+863.58 3287.96 -3.38 -0.76 -2.15 -1.65 0.39 -1.99 1.25 -1.26 0.5 -2.02 1.63 -1.89 -2.39 0.74 
+-1.75 1.91 -1.76 0.63 S
+855.92 3281.66 0.74 1.89 -3.75 -0.13 -1.02 -1.39 -3.02 -0.64 -2.39 -1.12 -1.13 1.13 -4.17 0.64 
+-1.25 -2.29 -1.13 2.15 -2.76 -0.5 -1.02 -1.25 -1 1 -2.25 1.02 -2.78 -0.62 -0.24 -2.02 
+0.11 -2.91 1.39 -0.87 -0.13 -1.65 1.52 -0.76 -2.02 -1.25 2.52 -1.63 3.15 -0.26 2.14 2.28 
+2.75 -0.76 2.02 1 1.39 -1.75 3.51 0.39 3.28 1.13 3.52 0.24 2.52 -1.37 3.64 0.11 
+2.89 0.13 3.14 -0.37 4.04 -0.25 1.5 0.63 2.38 -0.24 2.15 0 1.26 0.63 0 1.26 
+0.89 1.37 -0.39 1.65 0.13 1.76 -0.76 1.39 -1.26 0.89 -0.13 1.39 -1.49 1.89 -2.65 0.5 
+-2.02 1.13 -1.5 0.89 S
+868.25 3286.07 -1.52 -0.26 -0.13 1.52 -3.02 0.63 S
+852.91 3293.88 -1.26 -1.52 3.02 1.13 -1.76 0.39 S
+849.5 3299.67 -1.52 -0.25 -1.5 -1.52 -1.89 0.76 -1.75 -0.76 -1.39 -2.02 -0.26 -1.26 -3.02 -0.87 
+1.02 -1.13 0.24 -1.65 0.13 -1.26 2.02 -0.13 1.76 0.5 2.52 2.15 -2.89 0 -2.64 0.25 
+0.37 1 2.52 0.5 2.78 0.13 2.39 1.26 0.37 1.39 1.52 1.13 0.37 1.26 -1.13 0.52 S
+837.3 3290.61 -1.39 -1.89 -0.89 -2.15 1.52 -0.63 1.63 0.37 0.13 2.52 -1 1.79 S
+838.93 3299.28 -3.52 -0.24 -1.02 -1.39 2.52 0.63 2.28 0.13 -0.26 0.86 S
+831.25 3298.66 -3.02 -1 -2.39 -0.39 -3.14 -1.26 1.13 -1.62 S
+823.83 3294.38 -4.02 -1.39 -0.26 -2.78 3.41 -0.24 2.88 0.63 2.65 0.24 2.13 1.78 0.52 1.89 
+-1.76 0.63 -2.91 0 2.78 1.26 2 1.13 0 1.13 S
+821.2 3298.03 -0.25 -1.39 2.52 0.89 -2.26 0.5 S
+805.6 3294.62 -2.15 -1 -2.75 -0.89 -0.13 -1.49 -3.02 -1.89 -3.52 -1.89 2.13 -1.39 1.13 -1.89 
+4.03 0.5 3.78 1.26 1.36 2.14 3.14 -0.75 3.41 1.25 -1.26 1.26 0.63 1.76 -1 1.39 
+-2.15 0 -3.41 -1.63 0.52 2 -0.76 1.26 S
+845.98 3306.86 -0.5 -1.64 -1.26 -0.89 -0.39 -1.25 1.02 -0.74 2 1.63 0.5 2.02 -1.37 0.89 S
+844.73 3308.86 -1.76 -0.5 -0.12 -0.76 2.25 -0.11 -0.37 1.37 S
+842.58 3307.09 -2.26 -0.12 -1.39 -1.39 1 -1.76 2.91 -0.37 0.37 1.13 -0.37 1.13 -0.26 1.39 S
+832.14 3315.17 -1.39 -1.02 1.39 -0.76 2.25 -0.74 -0.63 1.5 -1.62 1.02 S
+840.19 3319.32 -3.38 -0.63 -0.62 -1.25 -1.65 -1.39 1.39 -1.5 1.75 -1.02 -2.25 -1.26 1.89 -1.76 
+2.52 0.13 1 -1.25 2.39 0.99 -1.26 1.13 1.26 1.65 -0.24 1.26 -0.89 1.5 -1.52 1.65 
+-0.37 1.76 S
+828.62 3313.52 -1.75 -1.63 -1.78 -1.15 1.25 -1.37 -2.75 -1.02 -0.63 1.65 -1.76 -0.52 -1.25 -1.63 
+0.13 -1.39 1.24 -1.25 0.89 -1.39 -1.25 -2.52 0.13 -1.63 2.89 -0.13 2.65 -0.26 1.52 1.52 
+2.63 1.76 3.54 0.5 -1.26 1.02 S
+833.03 3304.08 -1.89 0.87 -1.39 -1 -1.75 0.37 -2.52 -0.73 1.5 2.38 2.65 0.5 2.02 0.76 
+2.52 1.52 1.26 1.5 -1.89 1.02 -2.52 1.26 -2.39 1 S
+805.73 3317.69 -2.64 -1.78 -1.89 0.63 -2.78 -1.37 -1.89 -2.64 -0.87 -2.15 -2.78 -2.15 -0.74 2.15 
+1.13 2.39 0.76 2.02 -4.54 -0.5 -2.64 -2.02 -1.13 -2.39 -5.04 -1.25 -0.5 -2.52 -0.39 -2.91 
+0.89 -2.52 0.5 -2.25 1.89 -1.52 -2.75 -1.88 -2.28 -2.39 0.5 -2.02 1.89 -1.52 2.64 1.26 
+0.26 -1.89 3.28 0.36 1.5 2.78 2.26 2.52 2.91 1.89 3.88 0.14 3.91 1.25 2.89 0.63 
+3.04 -0.87 2.39 -0.52 2.12 1.25 0.39 2.02 -3.15 1.02 S
+808.75 3300.93 -3.14 0.63 3.02 2.26 -0.37 1.76 2.13 1.52 -1.62 1.89 4.14 0.5 0.89 1.52 
+-1.25 1.39 -0.39 1.76 -0.74 1.52 -1.89 0.13 -1.02 1.39 -2.76 0.5 S
+815.15 3326 -4.15 -1.52 -4.54 -0.5 0.14 -2.14 -0.5 -1.76 2.38 -1.62 3.91 -1.02 1 -2.26 
+0.89 -1.88 1 -2.02 3.14 1.76 3.52 0.99 1.52 2.29 3.02 1.88 -0.24 2.02 0.63 2.38 
+-4.3 -0.13 -3.01 0.89 -2.39 1.39 -2.02 1.26 S
+995.45 3424.37 -2.65 2.78 S
+965 3438.24 -2.15 0.76 -2.52 0 2.65 -0.89 2.02 0.13 S
+911.79 3444.16 -2.52 0.38 1.37 0.63 S
+903.73 3444.66 -3.41 -0.5 2.64 -0.39 0.76 0.89 S
+891.78 3442.41 -2.89 -0.63 S
+888.89 3441.78 -0.63 -0.89 S
+860.44 3435.72 -3.64 -2.15 -1.39 -0.87 0.52 -0.76 2.52 0.76 1.99 3.02 S
+853.64 3432.31 -3.25 -1.26 -2.52 -1.26 0.74 -0.99 3.91 0.87 -0.76 1.02 1.89 1.63 S
+891.38 3400.57 -0.5 1.25 -3.64 -0.86 -4.02 0.76 -3.27 -1.52 3.91 0.26 2.88 -0.52 4.64 0.63 S
+867.99 3410.13 -3.02 0.26 -3.02 -0.26 -2.26 -1.13 0.63 -0.86 2.52 0.24 2.63 0.89 2.52 0.87 S
+806.23 3402.08 -5.16 -0.12 -1.5 -1.89 0.11 -1.39 -2.52 -1.89 2.52 -0.24 2.29 0.63 -2.29 -2.28 
+2.65 0.26 1.39 2.13 1.13 2.02 1.39 2.78 S
+715.78 3353.21 -3.91 -0.26 -2.89 -1.52 -3.91 -0.87 -3.78 -1.39 -4.77 -2.78 4.02 1.26 S
+700.54 3347.66 2.91 1.65 1.76 -0.39 4.01 1.15 2.52 -0.89 1.65 1.89 2.39 2.15 S
+681.42 3336.7 -4.64 -2.38 -3.14 -2.65 -3.02 -2.52 -1.52 0 -2.39 -2.28 -2.52 -1.89 -1 -1.75 
+-1.65 -0.37 -3.14 -3.04 -2.12 -2.38 0.24 -1.39 3.78 2.41 4.03 3.25 4.02 2.65 4.27 2.4 
+2.65 2.76 3.02 3.28 3.28 2.65 -0.13 1.26 S
+845.98 3268.79 -1.13 -1.89 1 -1 -1.89 -1.13 -0.36 -2.02 -1.65 1.13 -2.02 0.36 -0.87 -1.36 
+-0.13 -1.89 -1.89 0 -0.76 -1.64 0.13 -2.39 2.14 -0.63 1.76 -1.52 1.5 -1.63 -0.5 -2.64 
+0.76 -1.89 -1.76 -1.26 -1.02 -2.02 -1.37 -2.52 -2.52 -1.89 -1.26 -2.28 -1.76 -1.76 S
+832.4 3236.93 -3.4 -1.88 -1.39 -2.15 -2.89 -1.39 -0.62 -1.5 1.63 -1.28 2.52 0.65 -2 -2.91 
+0.87 -1.89 -1.76 -2.39 -0.89 2.76 -1.89 1.65 -3.25 -2.02 -3.02 -2.02 -0.13 -2.78 3.15 -0.87 
+3.38 0.87 -1.75 -3.01 -3.78 -2.89 -2.52 1.75 -3.15 -0.89 -3.25 -2.02 -2.78 -2.39 -1.75 -2.39 
+-2.25 -2.15 -0.26 -3.41 -1.76 -3.15 -2.52 -2.52 -0.13 -2.26 -1.63 -2.02 -1.12 -4.54 -0.89 -1.78 
+-1.13 -3.39 -0.89 -3.03 0 -4.02 2.78 -2.02 1.63 -1.89 -0.13 -2.65 1.89 -3.14 2.28 0 
+2.75 2.02 1.89 2.26 2.25 2.15 2.91 1.89 1.39 3.64 3.25 0.63 3.41 1.65 2.25 2.02 
+1.89 2.38 1 3.65 S
+822.57 3188.3 1.89 -1.39 2.15 1.78 3.14 -0.39 3.15 -1.26 4.02 0.37 2.9 0.89 2.89 1.02 
+2.25 1.63 2.14 1.63 2.89 1.39 2.52 0.63 2.78 -0.87 3.26 0.5 3.04 0 3.12 0.5 
+2.65 0.63 2.91 1.13 2.89 1.15 2.02 1.26 -2.28 1 -2 1.89 -3.15 -0.5 0.63 1.26 
+2.76 0.63 0.63 2.52 2.26 0.26 -0.24 -1.65 -0.5 -2.25 S
+873.29 3202.04 1.5 -1.13 2.65 -0.26 1.13 2.52 0.89 2.02 -0.76 2.38 -1.12 2.15 -0.89 2.02 
+1.76 -1.52 1.89 -1.63 1.13 1.5 0.63 2.52 -1.36 1.02 1.76 0.63 1.39 0.64 2.25 -0.26 
+0.76 1.78 -1.65 1.26 4.27 0.5 1.39 1.88 -1.99 0.37 S
+888.89 3220.42 2.13 2.41 1 2.39 0.13 2.52 -2.02 1 0.89 1.78 2.02 0.87 2.39 -1.37 
+1 1.5 0 2.52 -0.37 1.89 1.63 2.28 0.39 2.02 1.76 1.13 1.25 1.89 1.89 1.89 
+2.13 1.89 2.15 1.26 3.38 2.41 -1 1.89 -2.64 1 -2.25 -1.13 -1 0.75 -1.78 -1.02 
+-2.13 -0.63 -2.65 -0.13 2.25 1.78 2.15 0.74 1 0.63 0.26 1.39 -1.76 0.13 -0.75 -1.26 
+-1.63 0.13 1.13 1.76 -3.78 1.26 1.89 0.26 2.02 -0.76 3.15 -0.37 2.25 0.74 -0.62 1.65 
+-1.52 1 0.13 1.39 -0.87 1.89 -2.64 1.13 -2.65 1.52 -3.02 0 -3.64 0.76 -3.14 -0.5 
+-2.39 -1.13 -1.76 1.5 S
+883.22 3267.04 -2.78 -1.26 -0.13 2.64 -3.88 1.63 -3.28 0.39 -1.52 -1.39 -2 -0.5 -0.63 1.39 
+-2.15 0 -3.28 0.11 -3.14 -0.63 1.39 -1.75 -1.63 -1.26 -3.91 -0.76 -2.75 1.79 -2.52 0.63 
+-2.15 1.26 -2.89 -0.52 S
+861.59 3176.97 1.63 -0.76 2.26 0.24 1.26 -1.13 -2.39 -1.26 -3.52 -1 3.39 -0.89 0.5 -2.78 
+-2.62 -1.75 4.41 -1 2.25 -1.78 2.89 -1.37 3.4 1.13 2.52 0 2.88 1.39 3.78 0.87 
+2.78 2.28 0.63 3.02 -2.14 1.65 0.5 3.02 -2.26 -0.13 -1.02 1.52 -1.89 -1.52 -2.13 -0.5 
+-1.39 1.13 -2.52 0 -1.39 -1.13 -1 1.52 -1 -2.41 -3.02 -0.37 0.87 3.02 -1.13 2.02 S
+868.12 3179.99 -1.52 0.89 -0.5 -1.26 -1.63 0.37 -0.89 -1.63 -1.99 -1.39 S
+903.73 3198.27 2.25 1.63 S
+892.27 3223.57 -0.76 -2 1.52 0 -0.76 2 S
+975.67 2807.36 -0.37 -2.75 -2.89 -2.02 1.5 -2.65 1.02 -2.78 1.89 -2.26 1.89 -2.78 2.89 -1.65 
+2.02 -1.89 1.89 -1.62 1.89 -1.76 1.5 -2.28 2.02 -2.25 1.39 -2.29 0 -2.25 0.88 -1.39 
+0.63 -2.28 1.39 -1.75 1.39 -2.65 0.5 -2.78 1.39 -2.25 1 -2.78 -2.39 -2.89 0.89 -1.25 
+0.87 -2.78 1.52 -2.15 1.37 -1.75 0.52 -3.15 -0.63 -3.28 -1.02 -2.38 -1.37 -2.28 -2.4 -1.5 
+-2 -2.41 -1.02 -3.28 -1 -3.14 -1.02 -2.78 -0.61 -2.75 -1.52 -2.78 S
+989.65 2719.68 0 -2.65 -0.5 -2.78 -0.13 -2.25 0.38 -2.64 1.25 -3.02 1.89 -1.79 1.39 -2.12 
+1.26 -2.65 1.75 -2.65 0.76 -3.02 1.76 -2.28 0.89 -2.14 2.13 -2.13 0.76 -2.15 -0.5 -2.26 
+0.24 -3.17 -0.24 -2.62 0.37 -2.15 1.13 -3.02 -0.11 -2.64 0.24 -2.28 0.76 -2.52 0.63 -3.02 
+0.26 -2.64 1.63 -1.65 1.13 -2.13 2.65 -1.65 1.49 -2.13 0.63 -3.04 1.15 -2.12 0.49 -3.04 
+1 -2.13 1.63 -2.02 1.39 -3.04 0 -2.89 -1.5 -1.39 -1.26 0 1.76 -3.02 0.63 -2.02 
+-0.39 -2.28 1.89 1.02 1.89 -1.75 1.89 -1.52 3.02 0 1.89 1.39 3.14 0.5 3.41 0.13 
+1.89 1.39 3.15 0.63 S
+1040.61 2626.34 2.88 -0.39 2.39 1.02 2.78 -0.76 2.52 -0.39 1.89 1.39 3.38 0.13 1.65 1.39 
+2.89 0.13 2.64 0.64 2.52 1.88 3.25 1.89 2.52 1.39 2.02 1.89 S
+1073.94 2636.54 2.64 2.26 2 1.89 2.52 2.02 2.64 2.28 1.65 2.38 1.87 2.78 2.15 2.39 
+1.63 2.28 3.02 2 2.41 1.52 1.37 2.78 1.39 3.28 1.39 2.88 0.37 2.28 0.26 1.76 
+-1.63 0.89 2.26 3.28 2.88 1.13 1.89 1.13 3.65 1.63 2.91 1.29 1.89 1.5 1.76 2.91 
+0 2.75 0.76 2.41 0.5 3.28 -0.63 2.26 -0.39 3.65 -0.5 3.17 -1.63 1.75 0.76 2.78 
+2.52 2.13 1.87 1.65 2.02 2.52 2.39 1.26 S
+1124.5 2714.65 2.52 3.14 2.02 2.52 2.02 2.65 2.76 1.25 2.41 1.26 3.64 1 1.99 2.14 
+2.91 2.78 1.88 2.15 2 2.63 1.52 2.64 0.63 3.04 -0.63 3.28 0.13 2.89 -0.63 3.27 
+0.63 3.41 0.13 2.52 -0.39 2.78 0.5 3.02 0.13 2.88 -1.75 1.65 -1.76 1.26 -0.76 2.78 
+-1.39 3.14 -0.37 3.91 0 3.39 1.39 3.16 -2.28 2.52 -2.25 2.52 0.89 3.15 0.74 3.02 
+1.26 3.27 1.39 2.65 1.63 3.78 1.65 3.77 -0.12 3.41 2.25 0 2.15 2.9 2.12 2.39 
+1.16 3.14 1.62 2.39 1.63 3.28 2.52 3.14 1.13 2.78 2.02 2.39 2.15 2.02 2.02 3.04 
+1.87 2.52 2.52 1.63 S
+1174.07 2844.9 2.02 2.39 2.02 2.52 1.5 3.04 1.89 3.02 1.39 2.39 1.89 3.17 1.02 2.75 
+0.87 3.41 1.39 2.52 1.89 2.65 0.23 3.64 0.52 2.78 0.74 3.4 0.89 2.89 0.26 3.28 S
+1192.58 2888.74 1 2.38 0.75 2.91 1 3.52 -0.62 3.53 0.76 2.91 -0.37 3.64 -0.52 4.66 
+-3.14 0.11 -1.37 -3.14 -2.78 -2.02 -2.65 -1.76 -2.52 -0.37 -2.26 -1.76 -2.89 -0.75 -2.64 -2.91 
+-2.39 -1.13 -3.02 -0.37 -2.14 -2.15 -2.39 -1.76 -2.65 -0.13 -1.89 1 -2.26 2.02 -2.02 1.52 
+-1.89 1.13 2.28 2.14 -1.39 2.65 -2.64 1.89 -2.52 1.89 -2.13 2.02 -3.02 1.75 -2.65 2.39 
+-2.78 0.39 -3.25 0.74 S
+1135.59 2915.69 -1.78 2.54 -1.76 0.11 -1.76 2.15 -1 2.78 -1.12 3.27 -1.89 2.65 -1.78 2.13 
+-3.02 1.75 -2.76 0.89 -2.02 3.02 -0.89 2.41 -1.13 3.28 -0.24 2.88 -0.52 2.02 -2.13 2.02 
+-0.76 3.28 -1.89 0.63 -2.38 0.86 -1.89 1.02 -1.89 2.64 -0.87 1.76 -0.26 2.52 -2.02 1.52 
+-1.89 2.65 -1.76 2.02 -1.88 2.65 -1.5 2.13 -2.28 2.52 -0.87 2.28 -1.78 1.63 -1 2.28 
+-2.02 1.49 -2.12 2.02 -1.76 2.02 -1.15 2.39 -1.76 2.02 1.02 1.26 1.36 -2.26 1.89 -2.52 
+1.65 -1.65 1.26 -1.63 2.13 -1.65 2.39 -1.37 0.89 1.26 -0.63 2.39 0.26 3.64 0.63 3.66 
+0.74 -2.91 0 -3.02 S
+1091.67 2987.13 0.13 -3.04 2.26 0.63 2.14 -2 1.89 -2.02 2.25 -2.52 2.39 -2.4 2.02 -1.5 
+2.39 -2.52 1.52 -2.65 2.02 -2.52 2.63 -0.89 2.52 -1.39 2.4 -2.39 1.87 -2.52 1.15 -2.91 
+0.11 -2.02 1.02 -2.26 S
+1122.37 2952.23 1.26 -3.28 2.02 -1.52 1.26 -1.62 3.52 -0.13 2.64 -1.89 1.89 -2.52 1.87 -2.65 
+1.89 -2.52 1.78 -2.15 1.99 -1 2.29 -2.52 1.88 -2.54 1 -2.38 0.13 -2.52 1 -2.78 
+1.65 -3.28 1.37 -3.25 1.26 -1.15 0.13 -3.15 2.26 -2.52 2.15 0.13 2.39 1.13 2.52 1.25 
+2.25 1.65 0.76 2.39 2.15 0.5 2.52 0.26 2.38 1.25 1.39 2.02 1.5 2.64 2.39 0.74 S
+1177.84 2920.86 2.28 1.78 1 3.02 2.14 2.26 2.52 1.91 2.13 1.76 2.15 1.88 2.13 1.89 
+2.02 1.76 -0.5 2.02 0.24 2.28 2.02 2.39 2.02 1.89 1.89 2.25 2.13 1.39 2.02 0.26 
+1.52 2.25 -0.13 3.41 1.88 1.89 1.76 1.26 0.76 1.39 -0.13 3.41 0.89 2.02 1.76 1.39 
+1.5 1.76 -1.63 2.14 -0.63 3.15 0.26 3.02 1.75 0.89 0.24 2.88 0.26 2.52 0.87 2.14 
+-0.11 3.52 0 3.41 -2.39 0.76 -2.41 1.63 -2 2.02 -2.78 -0.11 -2.38 -0.65 -2.65 0.52 
+-2.52 1.13 -2.76 1.63 -1.26 3.41 -1.26 2.91 -0.26 1.63 -1.26 0 0.13 -2.25 -1.13 -2.28 
+-0.63 -2.52 -0.63 -2.65 S
+1188.67 2997.2 -1.39 -2.88 -0.24 -2.78 -1.52 -1.39 -2.78 -0.5 -2.13 -0.89 -0.89 -2.02 -2.76 -0.63 
+-1.26 1.15 -1.89 -0.63 0.37 3.38 -0.63 3.04 -1.49 2.76 -1.76 1.52 -0.89 -0.89 0.5 -2.64 
+-0.5 -2.89 -1.25 1.13 -2.39 1.89 -0.5 2.52 S
+1165.28 2996.44 -1.65 2.15 -2.52 1.13 -2.62 1.79 -2.78 1.62 -2.02 2.02 -2.12 2.38 -1.76 2.65 
+-2.15 0.26 2.02 1.89 -1.88 2.02 2.02 0.74 0.24 3.41 2.02 -0.87 2.02 -0.89 1.26 1.75 
+2.25 -1.39 2.78 -2.76 2.89 -2.15 1.89 -2.52 2.02 -2.02 3.14 0.26 2.25 -0.63 2.76 -1.64 
+2.41 0.37 2.13 -1.26 1.89 1.39 2.39 -0.63 1.75 2.52 1.39 1.79 S
+1187.29 3009.81 1.63 1.88 2.02 1 2.15 -1.26 1.49 -2.26 1.89 -2.52 2.91 0.74 2.63 0.76 
+2.78 0.26 2.26 0.5 2.02 1 2.64 0.76 1.89 0.39 2.76 0.87 2.15 1.89 1.76 1.52 
+2.25 1.26 0.89 1.76 2.13 -0.11 1.78 0.5 1.75 1.63 1.39 1.39 1.63 1.76 2.13 0.63 
+1.89 -1.37 2.02 -0.63 1.76 -2.14 1.52 -2.29 2.39 0.26 2.25 -0.5 2.52 -1.78 2.78 -0.74 
+2.13 1.5 1.78 2.41 0.74 -3.41 -1.36 -2.28 -2.28 -1.37 2.39 -2.41 2.14 -1.13 2.75 -1.63 
+2.52 -0.26 2.28 1.52 1.5 2.25 0.5 3.02 -1.26 3.8 -0.61 2.88 1.13 0.26 1.13 -3.28 
+1.5 -2.4 2.15 -1.89 S
+1270.45 3012.57 1.25 -3.78 1.13 -3.28 1.89 -2.64 1.39 -1 0.24 -2.52 2.15 -3.28 2.15 -3.15 
+1.5 -2.91 1.76 -3.38 1.76 -2.28 2.15 -2.52 2.52 -2.28 2.52 -2.38 1.39 -3.02 1.89 -2.78 
+1.75 -2.78 1.89 -3.26 1.89 -2.15 2.26 -1.89 1.76 -2.02 1.75 -2.78 S
+1307.42 2956.51 1.65 -2.89 1.89 -3.53 1.75 -3.41 2.13 -1.89 2.02 -1.39 2.02 -0.11 1.13 2.76 
+-0.37 4.43 1.13 2.63 1.5 1.64 -1 3.41 0.26 4.14 1.89 1.39 -1.26 3.78 -1.26 2.64 
+-1.15 3.28 0 3.54 -0.24 3.91 -1.13 4.01 -1.78 3.67 -1.76 3.51 -1.89 3.54 -0.74 3.02 
+-0.12 3.28 2.25 1.13 -0.63 3.28 1.02 1.39 S
+1314.73 3007.66 1.5 2.02 0.13 2.39 -0.89 2.91 0.39 1.89 0.64 2.76 -0.14 3.67 0.38 2.65 
+0.75 2.25 0.37 3.41 -0.24 3.77 -0.39 2.78 0.25 3.52 1 1.89 1.02 2.64 -0.5 3.67 
+-0.63 3.38 -1.39 1.78 -0.76 2.63 0.89 2.64 0.5 2.52 -0.76 2.54 2.65 -3.04 0.87 1.89 
+1.02 2.28 1.13 2.14 1 2.26 -0.37 3.14 -0.13 2.78 0 3.78 2.52 -1.39 2.02 -2.02 
+1.89 -2.26 2.02 -2.14 2.5 -1.39 2.65 -1.13 1.89 -1.25 0.89 1.25 2.25 -1.88 0.5 -2.15 
+2.28 -1.89 0.87 1.26 2.28 -2.65 2.5 -3.14 2.41 -3.52 1.63 -4.54 1.26 -3.9 2.26 0.13 
+1.13 0.63 1.15 1.5 S
+1359.89 3050.11 -0.26 3.41 0.13 3.28 0.37 3.51 -0.75 2.91 1.39 0.13 2.38 -1.65 2.28 -2.76 
+2 -3.04 2.4 -3.64 2.13 -2.9 2.39 -3.39 2.9 -2.91 2.39 -3.41 1.25 -5.04 2.26 -2.64 
+1.39 -3.02 0.24 -3.41 1.65 -3.65 1.76 -4.27 1 -5.16 1.39 -3.67 1.65 -2.52 0.24 2.15 S
+1392.47 3008.42 2.38 -1.65 2.39 -2.52 1.78 -1.39 1.89 -1.26 1.24 -1.5 1.02 -2.15 1.13 -3.15 
+1.76 -4.3 1.52 -1.62 1 -4.28 2.15 -2.64 2.25 -1.89 1.39 -3.67 2.25 -1 1.65 -1.52 
+2.13 -0.24 1.76 -0.52 1.52 -0.87 2.25 2.64 -1.89 4.14 -2.25 3.54 -1.76 1.63 -1.15 4.04 
+-1.23 4.03 -1.26 4.04 S
+1416.38 2996.33 -1.39 3.88 -2.28 2.78 -1.99 1.02 -2.02 1 -2.14 1.13 -2 1.89 -1.89 -1.49 
+-1.64 0.75 -2.13 3.78 -1.89 3.15 -1.89 1.26 -2.28 4.67 -1.13 -2.52 -1.89 3.14 -1.75 4.28 
+-1.39 4.8 -0.5 3.38 -1.13 4.3 -0.87 3.52 -2.28 4.79 -1.89 4.41 0.5 2.91 1.78 0.74 
+2 -4.14 1.52 1.39 1 1.63 2.52 -1.39 1.39 0.13 1.76 -1.52 1.88 -2.39 2.02 -2.02 
+2.12 -0.76 1.39 2.28 1.76 -1.39 1.76 0.75 1.26 -4.53 1.65 -3.78 1.75 -2.4 0 4.16 
+-0.26 4.27 0.89 2.78 -0.63 4.54 -2.15 4.4 1.26 2.52 0 3.67 -0.11 3.64 -0.12 3.78 
+0 4.03 -1.02 3.28 S
+1405.92 3076.82 -1.63 3.15 -2.52 5.16 -1.75 3.15 -2.15 3.64 -2.12 3.16 -2.52 2.89 -2.78 3.28 
+-2.38 1.13 -2.39 1.39 -2.13 0.5 -2.65 0.63 -2.38 1.25 -2.52 1.15 -1.65 1.76 -2.13 0.5 
+-3.28 2.38 -1.89 3.9 -1.75 3.54 -0.76 4.28 -1.63 3.77 -1.02 3.91 -0.5 3.91 -0.63 3.41 
+-0.24 3.28 0.5 2.26 S
+1361.02 3144.21 1.76 0.39 0.36 1.5 2.02 -3.02 1.26 -1.26 2.25 -1.88 0.39 1.52 -0.5 2.26 
+-2.39 1.52 -1.52 2.88 -0.37 3.41 0.11 3.28 -0.87 3.91 -0.13 2.89 -0.5 3.41 -2.64 3.54 
+2.02 0 -2.65 3.9 2.65 -0.12 -2.15 4.14 0.13 2.4 -0.26 3.02 -0.37 3.02 -1.25 3.91 S
+1358.38 3188.8 -1.89 4.54 -1.5 3.66 -1.88 4.02 -1.52 3.16 -2.02 1.89 -0.11 2.52 -2.52 3.14 
+-1.65 3.15 -2.02 3.14 -2.76 3.54 -2.02 2.13 -2.52 1.88 0.25 1.26 -2.28 3.41 -2.75 3.41 
+-2.78 3.41 -2.39 2.88 -0.24 1.76 -1.76 2.02 -1.52 0.89 -3.28 3.28 -0.24 1.26 -3.91 3.14 
+-1.63 1.52 -0.13 -1.78 -0.75 -0.87 1.13 -3.28 -0.76 -0.89 -1 2.91 -1.89 2.39 -1.39 2.39 
+-1 2.41 -2.02 1 -2.13 -1 -0.63 2.89 -2.52 1.02 -1.76 -0.63 -0.63 -0.89 -2.65 1.26 
+-2.64 0.99 -2.39 0.89 -3.15 1.13 -0.99 -1.63 -1.15 -1.76 -2.89 2.89 -2.52 2.38 -2.75 3.67 
+-2.15 3.14 -2.88 2.25 S
+1271.83 3274.71 -2.02 3.67 -2.38 3.15 0.75 0.86 -3.77 2.91 0.13 -2.02 0.74 -2.15 0 -1.63 
+-1.26 -0.63 1.76 -2.91 2.02 -2.25 1.89 -2.02 0.5 -1.89 -1.26 -0.89 -2.62 1.02 -1.15 -1.26 
+-1.24 -0.89 -1.89 -0.26 -2.28 1.65 -2.52 2.52 0.76 1.26 -1.26 2.78 -1.89 1.89 -2.39 1.75 
+-2.25 3.02 -1.78 2.65 -3.26 3.03 -2.91 2.76 S
+1242.25 3290.84 -0.37 2.52 2.26 0.26 3.28 -2.65 2.39 -2.65 1.89 -1.5 1.75 0.5 3.41 -3.67 
+-1 2.14 -2.41 3.02 -2.88 2.54 -1.89 3.02 -2.02 2.65 -1.5 2.76 0 2.15 -0.13 1.52 
+0.5 1.13 3.78 -2.64 3.14 -1.89 3.41 -2.52 1.63 1.39 -1.89 3.77 S
+1255.6 3302.69 1.13 1.26 2.52 -0.5 1.75 -2.91 3.41 -0.37 3.38 -0.63 3.64 -3.4 3.41 -1.76 
+2.88 -0.5 -3.38 4.15 -2.39 3.27 -2.28 4.04 -3.02 3.64 -3.38 2.52 -3.15 1.65 -3.41 1.5 
+-3.28 1.02 -3.02 0.63 -2.02 -0.5 -1.5 -0.63 -2.26 0 -1.39 -1.02 -0.5 -1.5 -2.64 1.5 
+-1.39 0 -1.76 2.39 -2.02 2.28 -2.89 2.78 -3.51 3.02 -2.15 2.14 -3.41 1 -1.5 0.14 
+-4.66 3.14 -2.62 2.9 -2.78 1.26 -0.87 1.37 -3.77 2.15 -2.39 1.39 -1.65 2.38 2.26 -0.49 
+-0.5 2.64 -3.14 3.02 -4.02 2.91 -3.77 3.02 -5.04 2.64 -3.28 1 -4.91 3.04 -5.27 2.64 
+-4.78 2.52 -4.17 1.76 S
+1166.14 3367.19 -3.91 1.39 -4.51 1.13 -4.54 1.89 -4.9 1.76 -5.54 2.28 -3.77 0.5 -3.15 0.5 
+-3.64 -0.11 -2.78 -0.39 -3.26 0 -3.54 0.63 -3.64 0.76 -2.88 0.5 -0.63 -0.87 -2.38 -0.26 
+-3.41 0.36 0.52 -1.75 0.11 -1.5 -1.26 -0.52 1.15 -1.89 2.13 -1.89 4.77 -1.39 3.91 -2.52 
+-3.14 0.75 -2.52 -0.13 2.28 -1.62 3.75 -1.02 -2.63 -0.11 -2.52 -0.26 S
+1116.21 3363.41 2.65 -2.02 0.73 -1.89 -1.37 -0.36 -3.53 1.99 -4.41 1.65 -4.02 1.63 -4.41 1.39 
+-4.67 1.13 -3.52 1.02 -3.91 1.26 -3.14 1.13 -2.89 0.39 -3.14 0.63 -3.39 1.13 -2.78 0.24 
+-3.38 1.15 -3.54 2.02 -3.02 2.13 -2.89 1.89 S
+1061.61 3379.91 -0.26 0.89 -3.14 0.76 -2.26 2.13 -2.88 1.39 -1.76 1.39 -1.15 -0.13 -1.49 -0.37 
+-2.15 0.75 -1.39 1.5 -2 1.39 -2.02 0.76 -0.13 1.13 3.28 -0.5 0.24 1.13 -2.39 1.15 
+-4.14 1.26 -2.26 0.36 -2.15 1.26 -4.77 1.76 0.24 -1.13 2.14 -1.39 -3.41 -0.76 -3.52 -0.24 
+-4.01 0.24 -3.65 -0.37 -3.67 -0.26 -4.27 0.76 -3.52 1.02 -1.89 1.26 -3.52 0.5 3.64 1.13 
+0.88 1.15 0.13 1.37 -4.27 0 -3.65 -0.24 -3.14 -0.5 -2.75 0.5 -1.26 -1.39 -2.41 -1.02 
+-4.78 0.52 -0.75 0.87 3.14 0.26 2.02 1.52 2.15 1.63 2 0.89 3.65 -0.39 3.77 -0.13 
+2.39 0.76 3.9 0.39 S
+1004.36 3404.86 4.78 0.11 3.14 0.65 4.16 0.24 4.64 0 4.04 -0.5 2.76 -1.02 0.63 1.15 
+3.02 0.5 3.53 -0.76 6.29 1.52 2.76 1.13 1.52 1.13 1.36 1.52 1.02 1.25 1.76 1.63 
+2.13 1.39 0.76 2.02 1.76 1.26 1.89 0.89 0.52 1 -4.66 0.76 -4.78 0.39 -4.91 -0.39 
+-3.02 -1 -4.29 0.24 -3.64 1.39 -1.13 -1.26 -2.26 -1.13 -3.64 0 -4.17 0.76 S
+1020.33 3419.73 -2.12 1 -2.89 0 0.63 -1.76 -1.25 -1.65 -2.91 -0.63 -2.89 0.26 -1.13 1.26 
+-2.52 0.13 -0.75 -1.76 1.39 -1.02 -1.26 -1.26 -3.54 -0.63 1.89 -1.52 2.65 -0.11 -0.63 -1.39 
+-3.02 -0.76 -3.77 -0.5 S
+998.2 3409.39 -2.25 -1.02 -1.76 -1.13 -3.91 0.37 -2.02 1.15 -3.28 -0.52 -3.76 0.26 1.37 1.89 
+-3.77 -0.76 -3.39 -0.24 -3.41 0 -3.64 1 -2.39 1.26 -1.5 1.52 -2.28 -1.52 -3.9 -0.37 
+-3.88 -0.76 -3.54 -0.89 -3.52 -0.87 -3.02 0 -3.41 -1.02 -3.75 -0.37 -3.14 -0.76 -4.67 0.13 
+-3.14 1 -2.75 -1.5 1.63 -1.28 1.52 -1.89 0.87 -1.89 0.76 -1.26 3.02 -0.11 -0.13 -1.65 
+-4.14 0.5 -3.27 -0.87 -1.5 -0.52 S
+922.22 3397.29 -1.13 -0.5 -1.52 -1.89 2.39 -1.26 -3.14 -1.39 -0.63 1.65 -1.13 1.63 -2.88 0.13 
+-2.28 -0.63 -3.52 0.37 -0.89 1.65 -2.89 0.75 -4.14 0.88 -3.78 0.26 -0.36 -1.65 S
+896.31 3397.29 -1.65 -1.5 0.63 -1.78 -3.77 -0.5 -1.12 -1.5 -2.13 -1.26 4.01 -1.15 3.28 -1.26 
+4.91 0 4.14 0.39 2.02 -1.52 2.76 -1.12 3.53 -1.13 3.78 -0.89 2.76 -1.26 2.78 -1.26 S
+922.22 3381.55 0.63 -0.39 3.15 -0.99 3.38 -0.76 3.41 -1.13 4.14 -0.26 3.52 -0.76 3.54 -0.62 
+3.64 -0.74 0.87 2.25 -0.5 1.76 1.89 0.76 2.65 -0.14 0.13 -1.36 2.52 -1.02 -0.39 -1.39 
+-2.52 0.5 -1.13 -0.86 2.89 -1.13 2.14 1 2.26 0.49 3.27 -1.25 4.14 -1.26 4.91 -0.89 
+4.04 -1.13 2.26 -1.76 -2.52 -1 -0.5 -1.78 1.26 -1.5 2.88 -1.25 3.15 -1.52 3.77 -0.62 
+2.39 -0.89 2.65 -0.76 S
+990.15 3361.13 -1.26 -1 0.76 -1.63 1.89 -0.89 0.37 -1.39 -1.76 -1.62 1.89 -1.78 3.15 -1.5 
+1.75 -2.28 2.02 -1.75 2.02 -1.65 2.52 -2 0.86 1.37 2.28 -1.63 2 0.13 1.25 1.13 
+1.26 1.63 2.28 -2.12 3.64 -2.14 0.37 -1.39 1.76 -0.87 2.28 -0.26 0.37 -1.52 -1 -2.02 
+2.88 0.39 2.76 0.37 3.14 -0.5 0.26 -1.62 -1.26 -1.79 -2.14 -1.63 -3.52 0.38 -3.39 -0.37 
+-1.52 -2.38 0.89 -2.28 0.74 -2.89 1.78 -2.28 2.39 0.13 1.5 1 1.89 -1.63 1.26 -2.78 
+0.26 -2.15 -2.91 0 1.15 -1.89 -0.12 -1.75 1.25 -1.39 1.89 -1.49 -3.28 -1.26 S
+1026.75 3308.12 -2.64 0.5 0.26 -1.52 S
+1024.37 3307.09 1.39 -0.63 0.99 1.65 S
+1026.75 3308.12 2.65 0.37 0.5 -1.39 -0.63 -1.13 -0.63 -1.25 2.15 -0.89 1.26 0.89 1.88 -1.76 
+1.63 -1.78 0.37 -1.5 -3.02 1 -1.63 1.65 -3.54 1.75 -2.88 1.63 -3.65 1.78 -2.88 1.26 
+-3.41 -0.13 -2.65 -0.63 -1.63 -1.26 -0.5 -1.52 0.13 -1.63 0.63 -1.52 1.75 -0.37 0.5 -1.52 
+-3.78 1.13 0 -1.63 0.5 -1.78 -2.88 1.89 -1.63 -2 2.62 -1.65 3.15 -1.76 3.54 -0.13 
+0.24 -2.25 2.25 0.24 1.39 -3.15 -2.26 0.63 1.76 -2.78 0 -1.63 2.15 -1.64 1 -2 
+1.39 -2.64 1.89 -1.89 2 -1.65 2.28 -0.76 2.88 -0.12 0 -2.26 0.5 -2.28 S
+1032.16 3270.05 -0.11 -2.38 -0.39 -2.13 4.04 -0.76 3.14 -1.25 1.89 1.37 3.02 0 0.37 -2.13 
+-3.14 -0.39 -2.26 -0.74 -0.63 -1.26 -2.02 -0.39 1.13 -1.63 2.91 0.87 0.63 -1.26 -2.02 -0.37 
+0.37 -1.52 2.91 -0.5 2.49 1.25 2.02 0 -2.25 -1.62 -2.15 -1.78 -3.02 1.39 -2.25 1.76 
+-3.28 1.02 -2.76 -0.26 0.74 -0.87 2.14 0.37 2.26 -0.75 1.65 -1.63 0.24 -1.65 2.52 -2.13 
+2.64 -0.13 2.89 -0.63 2.02 -1.88 2.89 -1.78 3.64 -1.37 2.02 2 0.63 -2.13 2.89 -1.65 
+3.78 -1.39 1.65 -2.52 1.88 -2.13 0.87 -2.78 0.39 -2.28 -3.64 -0.11 -0.39 3.15 -1.13 2.02 
+-1.76 2.39 -2.52 1.39 S
+1059.09 3240.84 -2.02 1.88 -3.38 -0.12 -2.9 1.63 -3.39 1.91 S
+1047.39 3246.14 -2.91 1.63 -3.02 1.52 -3.26 0.11 -2.02 2.02 -2.15 1.78 -2 0.87 -2.65 -0.99 
+-1.26 1.13 -2.38 0.37 0.11 -1.75 2.02 -1.89 1.88 -2.02 2.78 -1.76 1.89 -1.88 0.63 -2.65 
+2.26 -1.63 2.78 -0.76 2 -1.89 1.76 -1.15 2.02 0.63 3.41 -1.13 2.13 0.26 2.28 -2.38 
+-2.39 -0.39 -2.52 0.26 -2.28 -0.76 -2.52 -0.39 -1.63 -0.99 -3.14 -0.13 -2.02 -1.26 -3.64 -0.63 
+-3.64 0.39 0.99 -1.91 2.15 -0.24 2.52 0.24 2.26 -0.87 2.38 -0.5 0.52 -1.79 -0.52 -1.12 
+1.79 -1.26 -1.52 -0.63 -2.88 2.29 -0.52 -1.79 0.26 -2.38 S
+1037.33 3220.68 -2.02 -0.89 -1.12 -1.5 1 -1.78 -2.76 0.39 -2.52 2.02 -0.26 -2.14 -0.37 -2.02 
+-1 -1.89 -0.26 -2.02 -0.89 -2.13 -0.87 -1.78 2.38 -2.52 -0.5 -2.02 -1.88 -1 -2.26 1 
+-2.28 -0.24 -0.63 2.38 1.76 1.63 -2.39 1.39 -2.02 0.5 -2.12 -1.12 -2.89 -0.37 3.25 -1.02 
+2.28 -2.65 1.26 -2.52 1.88 -0.11 2 -2.28 0 -2.15 -2 0 -2.4 -0.5 -0.11 -2.25 
+-1.15 -2.15 -0.63 -2.25 2.41 -1.52 2.88 -1.88 -2.88 -0.76 -2.41 0 -2.88 0.37 -2.13 -0.37 
+0.11 -2.02 3.04 -1.26 1.76 0.63 1.5 -2.38 -2.89 -1.14 -3.52 1.14 -3.28 0.24 -1.52 2.54 
+-1.12 1.99 -1.5 2.41 S
+1005.38 3186.68 -3.54 1.26 -2.52 0.5 -2.63 2.02 2.89 -1.02 3.02 0.13 2.88 -0.37 S
+1005.49 3189.2 2.28 0.37 2.39 0.5 2.75 0.13 2.28 1.39 1.26 2.28 0.24 2.13 -1.75 2.28 
+-2.13 1.63 -3.04 0.76 -2.75 0.26 -3.02 0.74 -3.15 0.76 -3.02 0.26 -3.02 -0.26 -3.04 -0.63 
+-1 1.65 -2.39 0.13 -1.13 -1.39 -2.65 -0.39 -3.27 0.89 2.64 0.24 1.26 2.41 -2.65 0.63 
+-2.62 0.5 -2.91 0 -0.37 -3.28 -1.52 1.89 -0.99 -2.15 -1.26 2.91 -1.26 -1.26 -0.26 -1.89 
+-2.39 0.76 -1.39 -1.65 -0.74 -2.52 -2.39 -1.39 -2.52 -0.5 -0.89 -2.88 -2.02 -1.15 0.5 -1.76 
+1.39 -0.13 -1.5 -2.02 -0.63 1.65 S
+958.83 3191.08 -1.15 -1.52 -0.11 2.65 -1.39 -2.02 -1.63 -1.49 1.63 -1.15 -2.78 -1.26 -1.26 -2.39 
+2.02 2.14 2.15 0.63 2.52 0.87 -1.89 -3.02 -0.26 -2.15 -1.39 -2.39 -0.62 -2.38 -0.37 -2.15 
+-0.49 -2.39 -0.5 -2.64 -1.89 -2.02 -1.15 -3.14 -1.13 -2.39 -1.26 -2.28 -1.75 1.13 -0.76 -2.25 
+-1.13 -1.89 -2.75 -0.5 -1.52 -2.41 -1.75 -1.76 -1.89 -2.02 1 -1.63 -1 -1.78 0.63 -2.26 
+0.37 -2.15 1.65 -2.13 -0.76 -1.91 0.63 -1.75 2.26 0.63 -1.37 -1.89 -0.13 -2.26 1.5 -1.25 
+2.64 -1.15 2.78 -0.24 2.39 1.5 1.37 1.89 2.02 2.41 1.52 0.13 0.75 1.89 1.63 -1.26 
+1.39 -3.04 1.5 -2.52 S
+959.07 3132.12 1.52 -2.88 1.5 -2.65 2.41 -2.02 -0.52 -1.89 1.52 -2.02 0.26 -1.76 2.26 0.24 
+1.89 0.13 S
+969.9 3119.27 -0.62 1.75 1.25 2.52 2.13 0.26 1.89 0.26 0.63 3.28 -0.24 3.14 0 2.26 
+-0.63 2.64 0 1.89 1.89 2.15 1.89 1.63 -1.26 0.75 1.37 1.52 0.26 1.49 -1.13 1.65 
+-2.52 1.39 -2.39 1.39 -0.76 2.13 -0.26 2.78 -0.5 2.65 0.5 1.39 1.02 2.88 1.5 2.15 
+1.39 1.52 1.63 1.76 0.26 1.88 1.13 2.02 -2.12 1 0.63 1.89 -0.62 1.26 1 1.15 
+0.37 1.89 2.02 0 1.52 0.37 1.49 0.76 2.65 -1.13 1.13 -2.52 -1.26 -1.26 -0.36 -2.91 
+-1.26 -2.52 S
+983.48 3168.4 -1.26 -3.01 -1.39 -2.65 -0.13 -2.78 1.02 -2.52 2.13 -2.39 -0.13 -2.78 0.63 -1.75 
+2.52 -0.89 1.89 -1 2.91 -0.26 2.52 1 2.25 1.52 2.15 1.52 2.25 1.39 3.15 0.87 
+3.02 -1.5 1.63 1 2.28 -1.89 -3.28 0.13 -1.52 -2.41 -0.63 -1.5 -3.14 -0.89 -2.89 0.26 
+-2.52 -1.12 -2.12 -0.89 -1.52 -1.75 0.76 -2.29 1.5 -2.02 1.89 0 1.02 -2.64 0.87 -2.52 
+-1 -1.75 -1.89 0.13 -1.62 1.5 -2.02 1.02 -2.15 -0.89 -0.24 -2.88 -0.5 -1.89 1 -3.14 
+1 -2.54 -0.24 -2.89 -2.15 -1.75 -0.12 -2.41 -1.37 -1.12 -2.02 -0.37 -1.75 2.52 -2.78 -0.89 
+-2.52 -1.39 -1.89 -2.02 S
+977.06 3113.84 -2.63 -0.87 -2.64 -1.65 -1.76 0.26 -2.14 0.63 1.26 1 -1.52 1.78 -1.12 -1.52 
+-2.13 -0.76 -1.39 -1 -1.52 -1.52 S
+961.46 3110.2 -2 -0.24 0.37 1.89 -3.39 0.99 -0.13 1.39 -2.15 1.13 0.76 2.78 0.99 2.88 
+2.02 1.15 -0.26 1.76 -1.87 -0.26 -0.26 1.78 0.37 2.39 -0.24 1.76 -2.02 -0.63 -1.13 -1.89 
+-2.28 -0.76 -1.26 -1.39 -0.24 -1.75 0.24 -2.78 0.52 -2.12 1.89 -1.26 0.37 -2.78 1.26 -1.64 
+-1 -1 1.37 -1.26 -1.37 -1.52 0 -1.76 -1.89 0.76 -2.38 -0.13 -1.02 -1.39 -3.14 -0.13 
+-2.02 -1.12 0.13 -2.26 1.65 -0.39 0 -1.26 -1.39 -1.5 -1.52 0.87 -0.24 2.78 S
+940.21 3103.28 -1.13 -0.63 -0.39 -2.15 -0.87 -1.89 -1.15 -1.89 -1.37 -1.89 -2.14 -0.89 -2.39 -1.5 
+-2.15 -0.89 -0.5 -1.88 -0.23 -2.28 -1.65 -0.87 -1.89 -0.5 -1.5 -0.89 -0.63 -2.28 -2.28 0.39 
+-1.89 -0.39 -0.87 2.28 -2.28 0 1.26 -2.64 0.52 -3.28 -2.28 0 -2.52 -0.37 -1.26 1.89 
+-2.52 -0.39 -2 -0.87 -2.28 -0.39 0.13 -2.76 1.65 -1.02 1.87 0 2.28 -1.5 2.64 -0.52 
+0.63 -0.87 1.5 -1.89 -0.37 -1.39 1 -1.39 2.02 -1.39 1 -2.38 -0.37 -3.15 -0.39 -3.17 
+-0.37 -2.39 -0.75 -3.14 -1.13 -1.39 -2.12 -0.5 -2.41 0.5 -3.38 0.63 -3.65 -0.87 -2.64 1 
+-3.15 0.63 -3.14 -0.26 S
+894.66 3051.87 -2.75 0.13 -3.02 1.52 -1.65 -2.28 -2.52 -0.24 -1.13 -1.26 1.39 -3.41 -0.5 -2.25 
+0.11 -1.91 0.52 -2.76 -0.62 -2.41 -0.89 -2.62 -0.76 -3.28 S
+882.83 3031.1 -1.62 -1.79 -0.63 -2.75 1 -1.89 1.75 -0.13 -0.62 -2.78 -0.11 -2.78 -1.02 -2.39 
+2.64 0.39 2.25 -0.66 2.02 0.89 1.89 -0.13 2.14 -1.5 0.74 -1.52 1.26 -2.78 2.28 -1.13 
+2.38 2.28 2.39 0.87 2.65 0.39 2.75 0 2.64 -0.13 2.65 0 1.63 2.26 2.26 2.78 
+2.28 0 0.76 2.26 1.5 1.91 2.64 1.88 -2.26 1.89 -0.39 2.26 1.52 2.39 2.13 2.78 
+2.15 3.28 2.12 1.02 2.52 0.86 2.52 1.89 2.14 1.52 S
+935.8 3042.55 -0.5 3.15 -0.52 2.78 2.41 1.49 1.76 1.39 2.52 -0.87 2.75 -0.26 2.52 -1.39 
+2.52 0.63 1.52 1.89 2.38 1.65 2.39 1 0.76 1.88 1.75 1.02 2.02 -0.26 1.5 -0.89 
+2.39 -0.24 0.76 -2.78 1.26 -2.25 2.39 -2.02 0.5 -1.89 2.15 0.11 2.39 -1.99 2.15 -2.15 
+2.25 -1.25 2.89 0.37 2.02 -1.63 2.02 -1.26 1.49 -0.39 1.52 -2.13 3.02 -0.63 0.63 -1.78 
+1.52 -2.13 0.63 -2.41 -0.89 -1.5 -0.26 -2.41 0.13 -1.37 1.52 0.24 0.5 1.39 1.26 1.65 
+-0.37 2.25 1.99 1.26 -0.37 2.28 -2.39 1.13 0.24 2.89 0.76 2.02 1.88 -0.76 2.29 -0.11 
+0.73 -1.79 1.52 -0.37 S
+1002.11 3036.13 0.37 2.02 -2.62 2.02 -2.41 1.13 -2.39 0.99 -2.76 1.15 -2.28 0.63 0.76 2 
+-3.52 -0.5 -2.65 1.13 -2.25 1.15 -1.25 1.26 -0.76 2.39 -1.39 2.14 -2.25 1.13 S
+976.7 3054.77 -1.89 1.26 -2.02 1.63 -0.63 1.78 0.39 2.02 -1.15 1.26 0.13 1.89 1.65 0.13 
+1.75 1.5 2 -0.13 -0.37 -1.5 0.63 -1.78 1.25 -1.37 1.13 1.13 0.13 1.88 2.88 -1.52 
+0.76 -2.26 1.25 -1.26 0.38 -1.89 2.52 -1.02 1.39 -1.26 2.39 -0.13 3.54 -1.89 2.89 -2.02 
+2.76 -1 2.41 -1.63 2.38 -1.02 0.13 -2.38 0.24 -3.28 0.63 -2.78 2.02 -1.12 1.89 -2.15 
+1.5 -1.62 2.02 -2.52 2.28 -2.15 S
+1015.95 3029.58 3.38 0.13 3.15 1 1.89 -1.5 2.64 -0.13 2.63 -1.39 -0.74 3.28 2.75 -0.5 
+-2.02 0.64 -0.87 1.75 -2.02 0.63 -1.75 1.13 -1.13 1.65 -1.89 1.63 -1.89 2.02 -0.5 3.27 
+2.63 -1.88 2.15 0.37 0.37 1.52 -1.37 1.26 2.13 0.37 0.63 1.52 2.25 0 1.65 0.76 
+2.52 0 1.89 -1.52 1.89 0.89 -1.15 -2.14 0.26 -1.26 1.26 2.28 1.63 2 1.02 1.78 
+2.89 1.13 2.78 0.63 2.88 -1.26 -1.89 -1 0.76 -1.28 -2.39 -0.63 -2.78 -0.62 -2.39 -0.5 
+-2.52 -0.5 -1.13 -2.14 0.13 -3.39 3.38 1.13 -0.24 -1.52 1.13 -3.15 1.13 -1.25 -0.89 -0.63 
+-1.89 0.99 0.14 -1.89 S
+1038.46 3033.22 2.39 -0.5 2.02 -0.5 0.13 -2.02 2.26 -1 -1 -2.15 2.25 0.5 2.15 0.5 
+-0.39 -1.63 2.52 0.63 3.53 -1.76 2.52 -0.39 2.76 2.15 0.13 2.39 2.65 0.26 3.64 -0.63 
+1.63 -1.64 S
+1067.64 3027.43 2.38 -0.37 1.52 1.39 1.75 0.5 1.52 2.39 1.13 2.28 3.38 -0.5 1.39 0.37 
+1.39 2.52 0.87 -1.39 -0.74 -2.25 1.37 -1.65 -0.11 -2.02 1.26 -3.78 1.23 -2.64 -0.61 -2.75 
+-0.13 -3.54 -0.13 -3.14 0 -3.02 0.26 -3.04 -0.76 -3.15 -0.89 -2.25 -3.28 -1.39 -2.52 -1.12 
+-1.99 1.13 -0.26 -2.02 -2.13 0.37 -0.13 2.02 -3.15 -0.23 -2.52 -1.02 -2.38 -2.02 -1.89 -1.89 
+-2.15 -1 S
+1061.35 2994.18 -3.02 0.87 -2.75 -0.63 -2.52 0.52 -2.15 0.63 -2.88 -0.12 -2.78 0 -2.63 -1.02 
+-1.65 2.15 -2.76 -0.37 -2.91 0.37 -2.75 0.13 -0.89 2.15 -2.88 0.5 -3.15 0 -2.64 -0.89 
+-2.52 -1.39 -2.39 -2.65 -0.89 -2.13 1.15 -1.65 0.74 -2.38 -0.37 -2.39 -1.39 -1.65 -1.75 -1.26 
+-2.52 0.13 -2.65 1.63 -3.52 1.52 -4.01 0.5 -2.91 0.13 -2.62 1.13 -1.39 1.25 -0.39 2.78 
+-2.88 0.76 -2.89 1.13 -2.78 0.13 -3.64 0.13 -3.14 -0.26 -2.52 0.76 -2.88 1.13 -1 2.41 
+-1.89 -0.76 -2.02 0.87 -0.62 2.28 1.39 1.52 1.76 1.99 1 2.54 -0.63 2.26 -1.63 0.76 
+-1.13 3.28 1.37 1 S
+971.4 3013.96 0.89 2.52 -2.89 -1.63 -1.39 2.64 -2.26 0.24 -2.28 -0.49 -1.76 -1.52 -2.14 -0.63 
+-3.52 0.76 -1.89 -1.13 -3.38 0.76 -1.89 -1.39 -2.28 -0.62 -1.5 0.89 -2.78 0.37 -2.63 0 
+-1.88 -0.63 -2.29 0 -2.25 -1 S
+933.29 3013.08 -3.02 -0.52 -3.54 -0.5 -2.26 -1.39 -2.25 -1.89 -2.39 -0.5 -2.28 -0.37 -1.12 -1.91 
+-3.14 -1.37 -2.39 -0.39 -2.65 1.39 -2 -0.37 -3.04 0.11 -2 -0.37 -3.04 1.89 -1.13 1.89 
+-2.26 -0.37 -1.39 -2.78 -0.86 -2.26 -1.26 -2.28 -1.26 -2.25 -2.91 -1.78 -2.89 -0.74 -2.39 -1.28 
+-1.75 -2.26 -2.15 -1.75 -0.24 -1.89 -1.39 -2.28 -1.64 -1.26 -0.37 -4.66 1 -2.02 S
+875.29 2978.93 -1.5 -3.25 -1.76 -2.28 -2.28 -2.15 -3.02 -1.13 -1.89 -2.26 -3.39 -1.15 -3.77 -0.24 
+-1.89 -2.15 -1.12 -2.78 -1.39 -1.75 -2.65 -1.26 -1.5 -1.25 -1.02 -2.78 -1.12 -2.26 -1.63 -3.14 
+-2.39 -2.15 -1.88 -2.25 -1.65 -2.15 -1.63 -3.77 -1.52 -2.29 -1.89 -1.12 -0.73 -2.91 -0.76 -2.76 
+2.02 -2.15 1.89 -2.52 -0.26 -2.91 -1.89 -1.62 1.39 -3.02 0.76 -2.91 -0.26 -2.89 -0.76 -2.78 
+-1.13 -2.78 -1.13 -2.76 -0.39 -3.79 -1.89 -2.25 -1.63 -2.29 -2.39 -1.13 2.15 -1.62 1.13 -3.04 
+0.24 -3.27 -0.63 -2.89 -0.24 -3.28 2.13 -1.62 2.14 -1.65 2.39 0.39 0.14 -3.91 2.25 -1.15 
+1.75 -2.52 1.26 -2.52 S
+841.95 2866.82 2.15 -1.52 2.25 -2.52 1.75 -2.52 0.26 -2.89 0.37 -2.41 0.89 -2.39 2.64 -3.02 
+2.76 -1.65 2.78 -1.5 2.25 -2.52 3.65 -2.02 2.78 -3.04 2.25 -1.99 2.78 -1.91 3.26 -2.52 
+2.9 -1.13 2.26 -0.5 2.88 1.76 3.41 0.39 2.39 1.75 S
+888.63 2834.7 3.28 0.37 3.25 0.52 2.41 0.37 2.89 -0.13 4.28 -1 2.75 -0.52 3.28 -1.37 
+2.38 1.37 2.91 0.89 2.38 0.5 2.39 1.39 3.28 1.75 3.78 0.13 1.36 1.88 3.27 0.89 
+2.89 0.5 2.78 0.13 3.38 0.5 3.28 0 2.78 -0.87 2.89 -2.28 1.52 -3.64 1 -3.78 
+3.28 -1.78 2.88 0.13 2.78 0.49 2.89 0.63 2.75 0.13 S
+967.62 2831.92 2.41 0.5 2.39 0.13 0.5 -2.78 2.39 -0.37 1.52 -2.26 1.89 -2.28 -0.89 -3.41 
+-0.37 -3.28 -0.89 -2.38 -1.39 -2.39 1.89 -0.76 -1.39 -2.52 0 -2.78 S
+993.79 2888.11 1.52 -1.75 1.13 -2.39 1.89 -1.25 0.63 -1.91 1.39 -1.26 2.13 1.65 2.65 1.13 
+0.76 2.91 -2.65 -0.26 -3.28 0.26 -0.11 1.89 -1.52 1.76 -2.64 0.26 -1.89 -1.02 S
+1102.13 2807.36 0.99 -3.64 2.26 2.65 2.78 -0.5 3.64 0.5 2.13 2.26 -3.13 0.13 1.76 2.15 
+1.75 2.75 0.63 3.41 0.88 2.15 -1.5 2.65 -2.78 0.5 -2.75 -0.37 -3.14 -1.02 -3.15 -2.38 
+-0.76 -3.54 1 -2.25 -0.37 -2.39 -0.24 -3.04 S
+1089.15 2783.05 1.39 -2.64 1.89 -2.65 2.78 -2.02 1.36 -3.64 -0.5 -2.91 3.28 -0.5 -0.5 2.78 
+-1.39 2.65 -1.39 3.14 0.5 2.02 -2.25 1.62 -2.39 1.52 1.39 2.64 -1.02 3.15 -0.86 3.28 
+-1.52 3.14 -0.63 3.78 -1.25 -4.04 1.02 -2.76 -0.89 -2.91 1.39 -3.15 -0.39 -2.52 S
+1115.32 2751.17 0.39 -2.25 0.87 -2.28 -0.13 -2.39 1.78 -1.63 0.24 -2.41 1.89 0.76 1.13 -2.26 
+-0.13 3.77 -1.76 2.13 -0.24 3.28 0.13 3.41 1 3.41 -1.63 3.14 -0.39 2.89 -0.36 3.66 
+-2.28 1.63 -0.5 -1.5 1.26 -5.55 0 -1 0.76 -4.17 -2.02 -2.65 S
+1037.07 3057.79 2.41 -1.89 1.26 -2.12 2.63 -1.39 2.64 -0.26 S
+1046 3052.13 2.89 0.13 2.52 1.13 2.52 0.13 1.65 1.89 1.49 1.88 1.52 1.89 2.26 1.65 
+2.52 0.24 2.65 0.76 1.76 1 2.02 -1.5 2.63 0.76 2.15 -1.89 1.63 0.5 2.52 -0.76 
+1.52 1 2.26 -0.24 2.14 1.13 2 1.25 2.52 0.26 2.02 1.26 1.39 2.64 1.26 2.02 
+-0.5 1.89 -1.76 1.5 -1.64 2.02 -1.39 0.63 -3.13 0.39 -2.41 0.74 -1.89 0.89 -2.89 1.65 
+-2.39 0.63 -2.14 -0.13 -1.5 0.5 -2.02 0.37 -1.62 1.52 -1.26 -0.37 -2.02 -1.15 -2.02 -0.11 
+-1.26 -2.02 -1.75 -0.89 -0.63 -1.76 -1.5 -1.52 -1.89 1.02 -0.26 2.52 -1.63 0.5 -2.52 0.24 
+0.74 2.78 2.02 1.65 S
+1054.55 3082.75 -2.64 0.63 -1.76 -1.52 -3.38 0.63 0.24 2.02 -2.39 -0.62 -2.26 -0.63 0 -2.52 
+-0.89 -2.14 -2 -1.52 1.37 -2.63 0 -2.02 -1.63 -1.26 -0.76 -2.15 0.76 -2.28 0.5 -2.89 
+-2.12 -1.02 0.63 -2.76 -1.15 -2.28 S
+1057.07 3083.38 1.65 -0.52 1.63 -1.5 2.26 -0.39 1.76 1.65 2.15 0.63 2.64 0.37 0.24 3.14 
+0.76 2.91 -1.52 0.5 -1.5 1.02 1.75 0.63 1.13 2.39 1.89 1.26 -1.63 0.37 -1.75 -1.12 
+-2.78 -1.39 -1.89 -2.65 -2.52 -1.37 -1.76 -2.02 -0.76 -2.41 -1.76 -1.49 S
+1103.88 3093.18 0.87 -1.76 2.02 -0.24 2.64 -2.15 0.87 -1.75 1.25 -2.28 2.91 -2.02 2.75 -1.5 
+2.14 -0.76 S
+1119.36 3080.73 2.39 -1.65 1.89 -2.02 3.02 -1.37 2.52 0.11 -1.52 -1.37 -0.24 -2.28 0.76 -3.02 
+0.61 -2.02 -1.5 -0.62 1.89 -3.15 1.75 -2.52 1.63 -2.64 2.41 0 2.75 0.63 1.26 -1.15 
+3.51 -0.62 2.65 0 2.65 2.54 2.25 2.25 3.14 0.89 -0.75 2.02 -2.89 3.15 -2.02 3.64 
+-0.87 3.54 -1.76 -0.26 -1.89 2.02 -1.02 2.39 -2.65 -1.39 -1.26 1.65 -0.62 3.14 2.52 0.13 
+2.28 1.25 0.87 2.76 -2.39 1.02 -2.52 1.13 -2.25 1.65 -2.02 -1.52 0 -2.38 1.52 -2.15 
+-2.65 2.15 -1.63 1.99 -0.13 2.91 -1.39 1 -2.26 -1.25 -2.78 1.02 -2.13 2.39 -3.02 1.89 
+-2.41 -0.13 -0.63 1.52 S
+1116.45 3097.98 2.28 1.13 1.89 0.39 -2.39 2.25 0.74 2.65 2.15 1.75 2.75 -0.37 1.65 1.52 
+1.75 1 -1.89 0.76 -1.76 2.02 -2.15 2.25 -3.02 1.26 -3.02 0.76 -1.52 -0.89 -2.13 -1.13 
+-1.75 -0.37 -1.02 -3.4 -1.89 -1.52 -1.37 -1.76 1 -1.12 -1.39 -1.26 0.26 -2.15 -2.78 -0.12 
+0.49 -2.52 0.39 -3.15 0.13 -2.78 S
+1140.37 3114.23 1.88 -2.64 1.39 -0.89 2.13 -3.02 2.02 1.25 2.12 1.39 1.02 -0.63 1.5 2.26 
+-0.24 3.66 -1.89 2.65 1 1.26 0 1.88 -2.26 1 -3.14 1.13 -1 1.26 -0.62 2.78 
+-0.39 2.39 -0.87 -2.63 -1.39 0.37 -1.25 -2.14 1.25 -1.63 -1.52 0.13 0.75 -2.52 S
+1140.86 3121.55 -1.39 -1.02 -0.63 -1.13 1.26 -2.28 0.26 -2.89 S
+1179.1 3150.13 2.52 -0.63 2.15 -0.87 -3.14 4.02 -1.76 1.39 0.5 2.14 -0.26 2.26 1.02 2.78 
+2.52 1.39 0.24 1.89 S
+1182.88 3164.5 2.65 0.63 1 2.28 -0.74 2.88 -0.89 -1.39 0 -1.75 -1.52 -0.89 -0.5 -1.76 S
+1182.88 3164.5 -1.5 -0.76 -2.02 -1.5 -1.39 -2.41 -1.39 -0.87 0.26 -3.04 0.13 -2.38 2.13 -3.41 S
+1182.51 3258.22 1.63 2.02 -1.14 2.88 -1.25 2.52 -3.28 2.41 -2.39 3.14 -1.39 2.89 -2.38 2.28 
+-3.52 3.28 -3.64 2.39 -3.41 1.25 -3.88 1.76 -3.54 1.78 -0.99 -0.89 1.89 -1.26 2.25 -0.89 
+2.91 -1.89 3.02 -1.89 2.89 -1.89 S
+1166.28 3278.12 3.02 -2.78 3.02 -2.75 2.28 -2.02 1.75 -2.28 2.26 -2.02 2.26 -2.26 0.52 -2.52 
+1.13 -3.28 S
+1007.38 3158.57 2.39 -1.26 1.89 -1.89 1.52 -1.89 1.13 0.37 0 1.52 2.15 0.63 0 1.89 
+-0.89 1.65 -1.76 1.5 -2.26 0.26 -1.65 0.89 -1.75 -0.52 -1 -1.75 0.24 -1.39 S
+1017.32 3165.75 1.52 -1 2.25 -0.26 1.13 -2.02 1.39 0.5 0.5 1.15 -1 1.75 -1.75 0.76 
+-1.65 1.39 -1 2.13 -2.13 0.76 -2.28 0.13 1.52 -1.02 1.37 0.13 1.02 -1.62 -1.63 -0.63 
+0.74 -2.15 S
+1159.48 2701.41 -0.37 -2.39 0 -2.78 0.87 -2.26 -0.24 -3.91 -0.14 -3.28 1.63 -2.65 1.63 -1.63 
+1.89 -1.15 S
+1164.75 2681.38 2.65 0.76 2.52 1.65 2.64 1.39 2.02 -0.39 2.38 3.14 1.26 2.65 1.37 3.02 
+1.26 2.02 0.89 2.52 0.76 2.65 0.87 2.4 1.25 2.65 1.26 2.62 1.26 2.52 0.75 2.64 
+1.26 2.65 1.26 3.04 1.26 3.14 1.76 3.78 0.76 3.02 0.89 3.54 0.24 2.52 1.52 1.76 
+0.63 2.64 0.11 4.91 1.89 -2.13 2.02 3.39 -0.24 2.91 -0.39 4.4 -1.13 3.28 -0.26 3.41 
+-1.12 2.89 -1.5 2.64 -2.39 -3.02 -0.13 -3.01 -0.49 -2.55 -2.29 -1.37 -2.64 -1.02 0.26 -2.89 
+-1.89 -1.89 0.26 -2.41 -2.28 -0.37 -2.39 -3.41 -2.26 -1.89 -2.78 -1.89 -2.75 -1.39 -2.78 -1.89 
+-2.13 -0.37 -1.76 -4.67 S
+1168.42 2731.4 -2.14 -3.14 0.13 -3.4 0.87 -3.15 -0.24 -2.52 0.87 -3.14 -0.74 -2.52 -2.15 -3.28 
+-1.12 -2.52 -2.15 -2.65 -2.25 -3.67 S
+1221.38 2716.04 0.39 -1.89 2.13 0.37 0.5 1 -1 1.39 -2.02 -0.87 S
+1232.57 2721.07 2.15 0.37 0.24 2.02 -1 0.89 -1.39 -3.28 S
+1204.14 2919.86 1.75 -0.37 2.02 0.63 2.02 2.39 -2.02 -0.26 -2.52 -0.24 -1.26 -2.15 S
+1208.42 2550.76 -0.76 -2.65 -2.75 -2.39 2.75 0.87 0.39 -1 1.63 1.39 1.39 -0.13 2.13 2.02 
+-2.39 -0.39 -1.39 -0.37 0 1.5 0.26 2.02 -1.26 -0.87 S
+1360.53 3024.42 2 -5.43 1.78 -5.79 S
+1397 2957.4 2.52 -0.76 S
+1404.17 2950.58 1.65 -1.62 2.13 -1.88 S
+1407.95 2947.07 -0.76 3.27 -2.52 2.39 -0.5 -2.15 S
+1413.11 2936.74 1 -3.91 1.26 -1.25 1.02 1.75 -2.52 4.8 -0.76 -1.39 S
+1327.43 2948.83 1.13 -3.91 1.13 -2.65 1.89 -4.04 1.64 -2.25 1.76 1.13 2.02 2.64 1 3.41 
+-0.26 3.91 -1.13 3.9 -2.12 2.02 -2.02 2.75 -2.25 2.41 -2.28 2.52 -3.02 0.63 1.52 -2.28 
+-0.13 -3.52 0.76 -3.54 0.37 -3.14 S
+1372.09 3127.71 1.88 -2.64 2.13 -2.39 1.79 0.63 0.63 1.89 -0.62 3.91 -1.16 3.78 -2.26 4.04 
+-1.25 3.77 -1.63 2.15 -0.63 -2.28 -0.5 -2.39 -0.13 -2.39 1.13 -4.54 0.63 -3.54 S
+1354.47 3211.24 2.91 -2.91 3.52 -2.65 0.76 0.89 2.52 -1.65 -3.54 4.43 S
+1360.63 3209.36 -2.75 4.14 -3.02 3.91 -3.64 4.16 -3.28 4.15 -3.15 2.64 -0.75 -0.89 1.89 -4.01 
+2.78 -4.04 2.63 -3.64 3.15 -4.54 S
+1278.86 3304.71 2.78 -0.39 -1 2.15 -2.52 1.52 1.63 0.23 2.89 -1.5 2.65 -2.65 2.78 -1.39 
+2.88 -1.64 -0.26 2.54 -3.88 4.27 -3.66 2.25 -4.14 3.04 -3.52 2.65 -2.25 0.11 -2.65 0.89 
+1.39 -2.52 -1.25 -0.13 1.88 -2.78 3.25 -3.25 3.02 -3.41 S
+1270.45 3319.45 3.02 -0.76 -0.24 2.15 -2.78 1.89 -2.26 1.63 -2.78 3.04 0.76 0.99 -3.14 2.29 
+-2.89 2.38 -2.02 0.5 0.5 -2.02 2.15 -2.76 3.01 -2.28 1 -2.39 2.78 -1.76 2.89 -2.91 S
+1267.79 3315.54 2.91 -1.39 S
+1270.71 3314.15 -2.15 3.28 -0.89 2.28 -3.13 2.64 -2.41 3.25 -2.89 3.41 -1.89 2.38 -3.52 3.54 
+-0.89 1.89 -1.89 3.02 4.04 -2.75 2.75 -1.15 2.15 0.13 -0.62 1.52 -4.91 3.51 -4.91 4.04 
+-1.52 -0.5 -3.14 2.02 1.02 1.63 -3.15 4.16 -5.8 4.04 2.76 -0.26 -5.64 2.65 -2.02 2.52 
+-2.78 1.75 4.41 -1.49 -4.27 3.38 -2.65 1.02 -3.14 2.02 -2.13 -0.13 -4.27 1.39 -2.78 1.63 
+-4.28 1.13 -3.02 0.39 -2.39 1 -1.76 1.88 -2.78 0.52 -3.64 1.89 -4.28 1 -2.64 -0.37 
+-1.26 -1.02 -2.39 0 -2.52 0.63 1.39 -2.39 2.52 -0.63 -1.39 1.39 1.65 -0.13 1.76 -1.76 
+-0.26 -1.25 4.54 -1.89 S
+1193.71 3371.36 2.25 -0.39 2.78 -0.37 3.39 -0.63 3.41 -1.26 4.28 -2.02 4.01 -1.52 3.65 -2.78 
+3.77 -1.89 3.28 -2.39 3.52 -3.14 3.78 -3.28 -2.26 0.75 -3.41 1.52 3.14 -2.41 3.28 -1.26 
+4.04 -2.52 3.52 -2.26 2.75 -1.02 2.41 -2.02 -0.39 -1.49 2.52 -3.04 2.78 -3.52 2.89 -3.91 
+1.52 -2.52 4.14 -3.28 3.64 -3.41 2.89 -2.78 2.52 -3.02 S
+1181.88 3372.35 2.52 -0.5 0.63 0.75 3.77 -0.52 -3.64 2.28 -3.41 2.52 0 -1.39 0.63 -1.63 
+-2.02 0.5 -1.36 1.39 0.11 0.87 -2.76 1.78 -2.64 2.02 -0.76 2.52 -1.62 3.02 -2.52 0.37 
+-3.64 1.52 -4.28 2.02 -2.28 2.14 -4.14 2.26 -3.91 1.89 S
+1150.54 3396.16 3.28 -2.15 -1.5 0 0.11 -1 -4.64 1.26 5.03 -2.52 1.76 -1.76 1.5 -2.28 
+0.52 -2.12 -0.14 -1.15 -1.25 -1.25 -0.39 -1.5 3.28 -1.52 2.15 0.75 2.88 -0.39 2.52 -0.36 
+3.02 -1.39 1.76 0.13 1.89 -0.5 2.02 -1.89 1.25 -1.64 1.76 0.13 4.54 -2.65 S
+1331.08 3265.54 -2.39 2.13 -1.75 2.64 -1.76 1.65 S
+1313.98 3284.05 -2.52 3.02 S
+1149.54 3394.9 -3.02 1.13 -3.14 1.26 S
+1139.34 3399.93 -4.77 1.89 -5.17 2.15 -5.64 2.02 3.89 -1.52 1.52 -1.5 4.28 -1.52 5.9 -1.52 S
+1119.49 3408 -2.15 1 -6.16 1.78 3.52 -1.52 4.79 -1.26 S
+1101.73 3413.93 -3.91 0.87 S
+1067.41 3417.84 1.23 0.5 -4.27 1.13 S
+1064.37 3419.47 -2.63 0 -1.15 -0.5 3.54 -0.26 3.28 -0.87 S
+1112.93 3364.93 0.63 1.13 -4.01 1.13 0.63 -1.76 2.75 -0.49 S
+997.96 3411.42 -5.79 -0.13 0 -0.89 2.88 -0.13 2.91 1.15 S
+1107.77 3378.41 3.15 0.63 3.54 0 3.02 0.24 0.75 1.25 2.26 0.39 3.27 0.13 2.63 0.37 
+3.14 0.26 2.78 -0.13 2.65 -0.39 0.87 0.63 2.39 0.63 3.28 -0.5 3.64 0.13 3.52 -0.89 
+3.14 0.89 -4.14 0.89 -2.76 1.13 -1.26 1.52 0.37 1.5 -3.15 -0.13 0.38 -1.13 -1.63 -0.37 
+-0.26 -1.13 -1.37 -0.76 -3.28 0.11 -3.52 0.76 -2.41 0.14 -2.75 0.89 -2.02 1.63 -0.87 1.89 
+-1.78 -0.76 -2 -1 -1.88 -1.12 S
+1117.47 3386.09 -2.29 -0.89 -2.38 -0.87 -1.89 -1.15 -3.26 -0.13 -2.91 -0.37 -2.38 -1 -2.52 -0.63 
+-1.13 -1.02 2.02 -1 1.5 1 2.39 -0.5 3.14 -1.13 S
+922.22 3371.72 3.38 1.63 -0.37 1.15 -3.02 -0.63 S
+922.22 3373.87 -2.15 0.37 -4.53 -1.25 2.28 -1.39 4.41 0.13 S
+1000.21 3341.86 -0.26 1.65 -2.76 2.13 -1.65 -0.87 0 -2.29 2.41 -0.99 2.25 0.36 S
+997.07 3339.61 1.39 1 -1.39 0.39 -1.26 -0.63 1.26 -0.76 S
+981.34 3341.36 1.02 2.15 -1.89 2.52 -2.02 1 -2.52 -1 2.15 -1.75 2.63 -1.79 0.63 -1.13 S
+995.95 3334.18 1.49 2.15 -1.26 1.26 -2.52 0.75 -3.02 1 -0.37 1.13 -3.02 0.39 -3.02 -0.25 S
+984.25 3340.61 -1.13 -0.63 0.74 -1.26 1.02 -0.63 0.11 -2.02 3.41 0.39 0.5 -2.91 3.14 -0.63 
+3.91 1.25 S
+1005.12 3293.12 -2.02 1.76 -0.37 2.02 -1.52 1.76 -3.52 0 -2.02 -1 -1.39 -1.39 1.39 -1.02 
+3.02 -0.63 3.54 -0.87 2.89 -0.63 S
+990.54 3287.33 2.88 0.13 1.13 1.5 2.88 0.5 1.02 1.78 1 1.25 -0.63 1.39 -2.88 -0.13 
+-3.02 0.63 -2.15 -0.63 -1 -1.26 -2.15 -0.39 -1.76 0.52 -1.75 -0.76 -1.63 -0.5 2.38 -1.9 
+2.89 -0.64 2.78 -1.49 S
+1014.7 3226.97 3.51 -0.5 3.02 -0.26 2.89 0.89 2.52 1.39 0.26 1.52 -3.52 -0.26 -2.78 1 
+-2.78 1.78 -2.39 1.89 -1.36 2.26 -1.02 2.28 S
+1013.04 3238.96 -1.26 2.38 -1.26 2.26 -1 2.54 -1.39 2.38 -0.37 2.52 -0.49 2.52 0.37 2.02 
+-0.13 2.52 -0.37 2.15 -2.78 1.63 -1.89 -0.76 0.26 -2.25 1.26 -1.76 -0.64 -2.28 -1.64 -1.75 
+0.13 -2.78 0.76 -2.15 0.63 -1.49 -0.5 -2.41 1.63 -1.12 2.02 -2.89 0.76 -2.64 2.25 -0.76 
+-0.13 -2.02 1.39 -2.65 2.02 -1.13 -0.26 -2.02 2.29 -2.02 S
+1022.75 3212.24 1.36 2.02 -1 1.76 -3.28 0.26 0.39 -2.15 2.52 -1.89 S
+976.82 3262 1.13 1 -0.75 1.89 S
+977.2 3264.89 1.88 1.15 -0.26 1 -2.62 1.26 S
+976.2 3268.29 1.37 0.63 -0.37 1.39 -2.76 0.76 0.61 -1.76 1.15 -1.02 S
+976.2 3268.29 -0.63 -2.02 S
+975.57 3266.28 1.63 -1.39 S
+977.2 3264.89 -1.26 -1 0.89 -1.89 S
+972.03 3263.26 2.28 0.63 0.37 1.75 -1.63 0.13 -1.12 1.76 -2.52 1.02 0.74 -2.02 2.02 -1.26 
+-1 -1.02 0.87 -0.99 S
+974.04 3260.75 1.13 1.13 -1.75 0.26 0.63 -1.39 S
+966 3257.21 1.52 0.13 1.13 0.63 1.13 -0.87 1.75 0.24 0.89 1.13 -1.39 1.02 -0.5 1.63 
+-1.13 -0.11 -0.62 -2.02 -0.89 0.74 -1.52 0.13 -0.36 -2.64 S
+934.92 3242.96 0.5 -1.99 1.52 -3.04 2.52 -2.02 2.52 0.39 -1.52 -1.65 1.13 -2.13 2.41 -2.02 
+3.38 -2.15 -0.37 2.52 0.13 2.64 0.11 2.78 -0.74 1.89 1.13 1.26 1.5 -2.02 1.76 -0.89 
+0 -2.64 2.91 -0.24 S
+953.8 3233.66 1.49 3.14 -2.88 0.89 -2.02 1.37 -1.63 1.65 -3.64 1 -1.39 2.41 3.28 -1.15 
+3.64 0 1.39 1.79 0.24 2.52 -0.87 1.39 -2.41 -0.39 -2.38 0.39 -1.37 -1.78 -1.79 1.39 
+-1.62 -1.62 0.63 -1.65 -2.02 0.26 -0.37 -1.89 -2.15 0.5 -3.02 -0.89 S
+901.21 3152.65 1.37 -0.5 1.78 1.89 -2.52 -0.24 -0.63 -1.15 S
+917.55 3142.21 0.89 1 0 -2.26 S
+912.16 3136.66 1.52 -1.39 S
+899.07 3128.71 2.78 2.15 1 2.64 -2.78 -1.62 -0.11 -1.91 -0.89 -1.26 S
+954.93 3118.01 1.39 -2.15 2.13 0.14 -0.13 1.75 -1.76 1.02 -1.62 -0.76 S
+959.2 3119.64 1 -2.63 1.89 -0.13 1.89 1 -1 0.89 1.13 1.39 S
+964.11 3120.16 -0.87 2.13 -2.02 -1.37 -2.02 -1.28 S
+959.57 3115 1.39 -1.26 1.65 0.63 0.63 1 -1.78 0.25 -1.89 -0.62 S
+979.71 3132.12 1.13 -2.14 1.25 1.39 -0.63 2.28 0.89 1.39 -2.02 -1.15 -0.63 -1.76 S
+989.91 3138.67 1.37 -1 1.13 1.37 1.15 1.26 -2.78 0.13 -0.87 -1.75 S
+990.41 3141.82 0.5 -0.75 1.5 0.89 -1.87 1 -0.13 -1.13 S
+901.21 3087.91 1.89 -0.62 2.25 1.75 3.02 -1.02 0.76 2.28 2.52 0.37 2.75 -1 2.52 1.39 
+2.78 -0.5 2.75 0 3.14 0.86 1.76 2.39 -3.02 0.39 1.52 2.25 2.02 1.39 0.86 2.28 
+-0.86 1.89 -2.15 0.88 -1.52 0 -1.12 -1.37 -0.87 0.88 1.13 1.39 S
+923.35 3103.78 -0.5 1.75 -0.89 1.39 -0.63 1.76 -0.87 2.28 -2.28 0.89 -1.13 2.25 -0.5 2.78 
+-1.02 1.76 -2.25 1 -2.13 0 1.63 1.28 1.52 1.75 1.13 2.26 0.88 1.78 -0.24 1.89 
+-4.8 0 -2.38 -0.39 1.13 2.28 2.78 1.63 -0.5 1.39 -2.91 -0.36 -2.89 0.11 -1.13 -2.12 
+-1.52 -1.78 -0.37 -1.76 -1.52 1.02 -1.14 -0.89 1.14 -1.39 2.14 -0.12 -1.52 -2.52 -0.11 -1.89 
+1.89 0.89 -0.39 -2.28 -2.39 -1.62 2.02 -0.13 -0.26 -1.76 1.88 2.13 1.26 -1.89 -1.63 -3.02 
+1 -1.89 2.64 0.76 2.65 0.87 -1.26 -2.25 1.37 -1.76 1.65 -0.13 -1.25 -2.28 0 -2.25 
+-2.15 -0.37 S
+909.5 3104.79 -3.14 0.63 0.5 -1.39 -1.37 -1.79 2.13 -0.11 -0.13 -2.65 -1.87 -0.89 -2.15 -1.26 
+0.5 -1.39 2.39 0.39 1.89 -0.52 1.76 -1.5 2.41 1.39 -1.25 -2.28 -1.89 0 -2.15 0.13 
+-1.63 -2.28 -2.02 -1.63 -2.26 -1.76 S
+884.98 3100.37 0.63 -2.38 1.63 -1.52 3.02 0.26 2.91 0.76 2.88 1.63 3.28 0.26 0.74 2.14 
+0.89 2.26 -0.14 2.78 -0.36 2.26 2.52 1.78 -0.39 2.63 -1 1.91 -2.25 0.63 -2.52 0.5 
+-2.52 -0.76 -1.76 -2.02 1.63 -1.12 -1.25 -1.26 -2.02 0.24 -2.25 0.13 -1.13 -1.76 1.63 -1.02 
+-2.02 -1.26 1.52 -1.89 1.76 -0.11 -2.02 -2.54 -1.26 -2.63 -2.12 0.11 S
+958.94 3046.83 -0.11 -2.39 0.5 -1.76 2.38 -2.28 0.38 2.91 0.63 1.89 -0.5 1.75 -0.36 2.78 
+-0.89 -1.89 -2.02 -1.02 S
+957.68 3037.89 0.13 -1.89 1.26 -2.25 0.26 -2.78 -0.13 -2.78 2.02 -1.75 1.25 1.89 1.89 0.13 
+0.5 2.39 0.13 2.38 -0.26 2.28 -0.5 2.26 -2.14 2.28 -1.89 -2.02 -1.37 -0.63 -1.15 0.5 S
+977.69 3022.53 1.76 -2.15 1.52 0.13 3.28 -1.62 2.39 -0.26 1.63 -1.62 3.14 -0.14 0.5 1.89 
+-1 1.75 0.26 2.91 1.13 2.52 -2.78 -1.26 -3.28 -0.89 -2.62 -0.26 -2.02 0.76 -2.15 -0.12 
+-1.76 -1.63 S
+1016.69 3026.43 2.52 -1.52 0.26 -2.38 1 -1.26 1.76 0.24 1.52 -1.62 1.13 2.15 S
+1024.87 3022.03 2.26 -1.65 -1.87 3.14 -1.15 2.15 2.28 -0.13 -2.15 2.52 -2.52 1.15 -2.39 0.5 
+-2.02 -1.26 -0.63 -2.02 S
+1030.54 3013.71 2.25 0.5 2.39 -0.13 1.65 -0.76 3.02 0.76 2.88 0.76 0 1.63 -1.99 -1.39 
+-0.39 1.39 -2.52 -0.63 -2.02 0.39 -2.12 -1.02 -0.5 0.89 -2.78 0 0.13 -2.39 S
+1069.54 3020.88 1.39 -1.63 2.64 0.13 2 1.26 0.39 1.39 1.75 0.5 -1.13 1.26 1.76 2.89 
+-2.26 -1.5 -2.02 -1.13 -1.65 -0.89 -0.74 -1.26 -2.14 -1.02 S
+932.16 3029.45 2.13 -0.5 1.65 -1.26 1.37 2.26 -2.25 1.39 -2.89 -1.89 S
+1047.63 3022.89 0.89 -1.5 1.13 1.39 0.13 2.25 -2.15 -2.15 S
+1035.94 3038.39 1.02 0.63 0.37 -1.37 S
+1037.07 3034.38 0.39 -1.39 S
+796.03 3037.26 1.89 -1.52 S
+807.09 3030.34 2.78 -0.5 S
+838.67 2970.75 0.89 -2.02 1.39 0.89 1.13 2.15 -1.76 -0.89 -1.65 -0.13 S
+843.46 2968.36 0.5 -1.52 1.76 0.26 -0.13 1.5 -1.37 0.63 -0.76 -0.87 S
+851.13 2967.96 2.28 0.76 0.24 3.28 S
+853.64 2972 1.76 0.39 0.52 1.37 -1.25 -0.37 -1.02 -1.39 S
+853.64 2972 -2.25 -2.52 -0.26 -1.52 S
+970.66 2825.89 1.37 -0.39 1.02 1.89 -1.52 0.89 -0.87 -2.39 S
+1418.88 2648.27 0.26 -0.89 0.13 -0.99 -0.89 -2.65 -1 -2.78 0.13 -1 0.24 -1.15 0.52 -0.11 
+0.5 -0.26 0.63 -0.13 0.63 -0.26 0.63 -0.24 0.5 -0.26 S
+1421.16 2637.54 1 1.26 1.02 1.26 1.36 1.52 1.39 1.63 0.39 -0.11 0.5 -0.14 1.5 2.02 
+1.52 2.26 0.63 0.26 0.5 0.37 1 0.13 0.89 0.26 0.63 -0.26 0.5 -0.26 0.63 -0.24 
+0.5 -0.26 0.64 -0.24 0.63 -0.26 0.5 -0.26 0.39 -0.24 0.5 -0.26 0.37 -0.24 1.39 1.63 
+1.39 1.76 1.63 2.78 1.52 2.91 1.13 0.74 1.13 0.63 0.89 0.76 0.87 0.76 1.52 1.75 
+1.63 1.78 0.76 0.74 0.89 0.76 0.37 -0.76 0.26 -0.87 0.74 0.24 0.75 0.13 0.63 0.26 
+0.76 0.37 1.26 1.26 1.13 1.26 0.89 0.76 0.87 0.75 0.76 0.26 0.76 0.24 0.5 -0.37 
+0.5 -0.5 0.39 -0.26 S
+1463.43 2665.52 0.37 -0.37 0.37 -0.26 0.39 -0.37 -0.26 -1.39 -0.13 -1.52 -0.63 -2.02 -0.5 -2.02 
+0.39 -0.37 0.37 -0.5 -0.26 -1.65 -0.24 -1.62 -0.26 -1.52 -0.37 -1.62 -0.63 -2.02 -0.76 -2.15 
+-1.5 -2.78 -1.65 -2.65 -1.26 -4.77 -1.89 -3.67 -1.75 -3.52 -1.63 -3.15 -1.52 -3.14 -1.63 -3.04 
+-1.65 -2.88 -3.26 -6.29 1.76 2.52 1.76 2.39 1.39 1.75 1.5 1.78 2.78 3.52 1.13 1.02 
+1.13 1.13 2.15 3.28 2.02 3.28 1.37 2 1.52 2.02 -6.03 -11.07 -1.78 -2.54 -1.87 -2.52 
+-2.02 -3.38 -2.14 -3.41 -1.39 -2.14 -1.37 -2.12 -0.76 -0.52 -0.76 -0.63 S
+1443.92 2606.55 -1.13 -1.62 -1.12 -1.52 0.37 0 0.39 -0.13 0 -1.26 1.86 2.65 1.78 2.64 
+2.26 3.28 2.15 3.28 -1.78 -3.41 -1.89 -3.52 -1.37 -2.52 -1.52 -2.54 -1.89 -2.63 -1.89 -2.64 
+-1 -1.39 -1.12 -1.26 0.37 -0.39 0.26 -0.5 -1.65 -3.14 -1.63 -3.15 -4.03 -6.81 -2.13 -3.26 
+-2.15 -3.28 -1.13 -1.39 -1.13 -1.26 -1.62 -2.52 -1.78 -2.54 -1.76 -2.89 -1.89 -2.78 -1.89 -3.01 
+-1.88 -2.91 -0.74 -1.5 -0.76 -1.52 -1.89 -2.78 -2.02 -2.63 1.26 0.74 -0.76 -1.5 -0.74 -1.65 
+-0.89 -1.5 -0.89 -1.52 -1.62 -2.52 -1.76 -2.52 -1.39 -2.02 -1.25 -1.89 1.25 0.87 S
+1401.78 2532.23 1.39 1.02 0.87 0.63 1.02 0.63 1.89 1.76 1.89 1.89 -3.4 -4.4 -3.65 -4.27 
+0.37 -0.13 0.39 -0.13 -2.52 -2.89 -2.52 -3.04 -2.02 -2.64 -2.02 -2.76 -2.12 -2.65 -2.14 -2.64 
+2.41 2.02 2.39 2.13 0.87 0.52 0.89 0.5 1.13 0.76 1.13 0.63 0.5 0.13 0.39 0.11 
+-0.39 -1 -0.5 -1.13 -1.12 -1.88 -1.13 -2.02 0.63 0.24 0.63 0.13 2.39 2.64 2.52 2.65 
+2.64 3.02 2.63 3.04 2.91 3.14 2.75 3.28 3.02 3.52 3.02 3.54 2.65 2.89 2.52 2.9 S
+1424.04 2544.33 1.65 1.76 1.75 1.89 3.26 4.03 3.28 4.14 1.76 2.29 1.88 2.25 1.76 2.41 
+1.52 1.89 1.52 2.02 S
+1442.43 2567.01 1.63 2.13 1.39 1.76 1.37 1.78 1.39 1.75 1.89 1.89 1.52 2.02 1.5 2.14 
+1.52 2.02 1.5 1.99 1.39 2.15 1.52 2.02 1.5 2.39 1.64 2.4 1.5 2.26 1.89 3.02 
+1.89 2.91 1.88 3.02 1.63 2.91 1.79 2.75 1.63 2.91 2.02 3.52 2.13 3.54 2.15 3.54 
+1.75 3.38 3.78 6.82 1.76 3.38 1.89 3.54 1.76 3.54 1.13 2.13 1.15 2.14 1.13 2.15 
+1.75 4.02 1.89 4.16 1.75 4.04 2.15 4.78 1.99 4.79 2.02 4.77 1.63 4.17 1.64 4.16 
+1.63 4.02 3.52 9.34 1.78 4.77 1.13 3.28 1.25 3.4 1.13 3.28 S
+1520.29 2713.89 1.63 4.9 1.52 5.06 1.5 4.9 1.15 3.54 2 7.29 1.15 4.3 0.99 4.41 
+1.13 4.28 1 4.27 0.89 4.17 1 4.17 0.13 1.5 0.25 1.52 0.13 1.52 0.5 2.88 
+0.63 2.78 0.5 2.75 1.89 9.84 0.86 3.9 1.52 7.81 0.26 2.02 0.11 2.02 0.26 1.89 
+0.25 2.64 0.24 2.65 0.39 2.52 -0.63 -2.64 -0.52 -2.52 -0.63 -2.64 0.63 3.78 0.52 3.77 
+0.5 3.78 0.5 3.79 0.5 3.65 0.5 3.77 0.52 5.04 0.24 2.52 0.13 1.65 0 1.75 
+0.13 1.75 1 9.07 -0.12 2.41 -0.11 2.39 S
+1545.33 2854.73 0 10.45 0.11 4.02 -0.37 0.39 -0.26 0.37 -0.24 2.78 -0.26 2.78 0.26 6.55 
+-0.13 3.02 0 3.15 0.26 5.16 0.11 5.3 0 9.7 -0.24 2.89 -0.13 2.91 -0.37 3.52 
+-0.26 3.54 -0.13 5.66 -0.24 5.66 -0.26 4.54 -0.37 4.41 -0.26 4.8 -0.37 4.79 -0.52 2.25 
+-0.5 2.15 -1 4.78 -0.13 -2.76 -0.26 -2.78 -0.24 0.76 -0.39 0.87 -1.26 9.59 -0.37 4.53 
+-0.5 4.41 -0.76 4.54 -0.87 4.41 -0.76 3.64 -0.75 3.67 -0.63 3.78 -0.76 3.91 -0.87 4.64 
+-1.02 4.66 -0.5 1.02 -0.5 0.88 0.37 -4.54 S
+1529.97 3005.51 0.49 -4.41 0.76 -4.77 0.76 -4.79 0.26 -3.78 0.24 -3.67 0.5 -4.28 0.63 -4.14 
+0.26 -2.78 0.37 -2.78 0.52 -5.17 0.37 -5.16 0.37 -4.41 0.26 -4.54 0.37 -4.27 0.26 -4.3 
+0.26 -4.14 0.37 -4.17 0.13 -4.53 0 -4.54 0.13 -4.54 0 -4.53 -0.13 -4.91 -0.26 -4.8 
+-0.24 -4.04 -0.26 -4.14 0 -4.4 -0.13 -4.41 -0.63 -2.91 -0.5 -2.89 -0.99 -2.78 -0.39 2.78 
+-0.37 2.63 -0.13 3.17 -0.26 3.14 -0.37 0.63 -0.5 0.75 -0.5 1.13 -0.52 1.13 -0.37 1.52 
+-0.26 1.5 -0.36 1.89 -0.37 2.02 -1.52 -2.52 -0.13 3.67 -0.24 3.64 -0.39 0.63 -0.37 0.63 S
+1527.08 2908.9 -1 3.51 0.11 3.54 0.13 3.54 0.14 2.88 0.13 3.02 -0.12 3.15 -0.26 3.17 
+-0.11 3.78 -0.26 3.77 0.5 1.26 0.5 1.13 -0.24 4.04 -0.26 3.91 0 7.68 -0.62 1.52 
+-0.76 1.39 0.13 -4.66 0 -4.67 -1 5.04 -0.39 -2.52 -0.37 -2.38 -0.62 0 -0.63 -0.13 S
+1522.05 2950.84 -1.26 0 -1.25 -1.25 -0.64 1.25 -0.75 1.39 -0.74 -0.39 -0.63 -0.24 0.5 -2.15 
+0.63 -2.14 0.13 -3.91 0 -4.01 -0.63 -1.26 -0.76 -1.39 -1.25 -2.52 -0.39 -3.91 -0.5 -3.91 
+-0.13 -3.28 -0.11 -3.28 0.38 -2.52 0.26 -2.39 S
+1514.89 2914.95 -0.52 -1.52 -0.5 -1.52 -0.13 -3.02 -0.11 -3.02 -0.52 -3.54 -0.37 -3.41 0.5 -1.5 
+0.63 -1.39 -0.13 -3.14 -0.24 -3.04 -0.63 1.25 -0.76 1.39 -0.37 -0.63 -0.5 -0.63 -0.63 -2.89 
+-0.62 -2.91 0 6.55 -0.39 1.65 -0.37 1.63 -0.5 2.02 -0.52 2.14 -0.74 -0.52 -0.63 -0.37 
+-0.39 -2.52 -0.24 -2.39 -0.63 -1.39 -0.63 -1.26 -0.13 -2.28 -0.26 -2.39 -0.87 -1.02 -0.76 -1 
+-0.26 -5.29 -0.73 -3.41 -0.76 -3.26 -0.26 -3.16 -0.12 -3.28 -0.5 -2.89 -0.5 -2.91 -0.63 0.76 
+-0.76 0.89 -0.37 -3.28 -0.39 -3.28 0.39 -1.62 0.24 -1.64 -0.74 -3.65 -0.89 -3.53 -0.14 2.28 S
+1496.5 2847.05 -0.12 2.38 0 3.15 -0.11 3.28 -0.76 -3.52 -0.75 -3.54 -0.76 -3.02 -0.87 -3.04 
+0 -2.38 -0.13 -2.26 -0.26 -4.04 -0.73 -2.91 -0.89 -2.88 -0.76 -3.15 -0.63 -3.27 -0.75 -2.41 
+-0.74 -2.26 -0.89 -2.39 -0.87 -2.28 -0.89 -1 -0.89 -1.02 -0.87 -1.5 -1.02 -1.39 -0.87 -0.5 
+-0.76 -0.52 -0.89 -2.26 -1 -2.28 -0.63 -0.37 -0.75 -0.37 -1 -2.41 -1.13 -2.26 -0.76 -0.39 
+-0.76 -0.37 -0.63 -0.37 -0.76 -0.39 -0.87 -1.26 -0.89 -1.26 -0.87 -1.76 -0.89 -1.64 -0.99 -2.52 
+-0.89 -2.52 -0.87 -1.26 -0.76 -1.26 -2.02 -3.41 -1.76 -4.64 0.37 5.04 -1.62 -4.92 -1.52 -4.64 
+-0.5 -4.17 S
+1458.77 2764.91 -1.12 -4.41 -2.26 -4.93 -1.15 -5.27 -1.26 -5.93 -0.5 -4.3 -0.5 -4.14 -2.02 -6.29 
+0 3.28 0.52 4.14 -2.02 -9.31 0 3.89 -1.26 -5.16 0.13 -3.15 -1.65 -7.05 -0.76 -2.13 
+-0.74 -2.15 -0.39 -2.64 -0.5 -2.52 -1 -5.29 -0.75 -2.14 -0.76 -2.26 -1 -2.64 -1.13 -2.65 
+-1.78 -5.3 -0.74 -2.64 -0.76 -2.62 -0.76 -2.28 -0.86 -2.15 -0.39 -1.75 -0.5 -1.76 -1.39 -3.14 
+-1.49 -3.04 -1.52 -3.02 -1.63 -3.14 -0.76 -1.76 -0.76 -1.78 -0.87 -1.13 -1.02 -1.26 -0.63 -0.37 
+-0.76 -0.26 -1.5 -3.15 -1.65 -3.01 S
+1512.74 2936.98 0.63 1.15 0.63 1.26 0.37 -0.5 0.52 -0.52 S
+1514.89 2938.37 0.24 3.78 0.26 3.8 -0.39 1.37 -0.24 1.39 -0.5 -2.39 -0.52 -2.28 -0.5 0.26 
+-0.5 0.39 0 -7.71 S
+1435.87 2595.46 -1.12 -2 -1 -2.02 -0.13 -1.15 0 -1.26 0.99 0.89 1.14 0.89 1.13 2.76 
+1.15 2.64 -0.26 0.39 -0.37 0.37 -1.52 -1.52 S
+1376.24 2502.39 -3.02 -2.91 -2.89 -2.88 -3.64 -3.8 -3.78 -3.64 -2.91 -2.89 -2.89 -2.91 -2.13 -2.02 
+-2.02 -2.02 -2.91 -2.64 -2.75 -2.52 -2.52 -2.39 -2.38 -2.25 -2.52 -2.65 -2.39 -2.52 -1.65 -1.91 
+-1.76 -1.89 1.89 1.15 1.75 1.26 1.52 0.76 1.39 0.87 -2.52 -2.39 -2.38 -2.38 2.88 2.38 
+3.02 2.26 2.15 1.78 S
+1343.79 2466.23 2.26 1.63 0.63 0.5 0.76 0.52 3.14 2.63 6.3 5.56 3.13 2.89 1.78 1.88 
+1.76 1.91 0.13 0.86 0.24 0.89 0.13 0.63 0 0.5 1 1.65 1.02 1.49 3.14 3.64 
+3.14 3.67 1.89 2.64 2 2.65 S
+1078.84 2299.43 -9.8 -2.25 -4.91 -1.02 -3.64 -0.89 -3.78 -0.73 -7.29 -1.52 -3.67 -0.63 -3.51 -0.76 
+-2.13 -0.26 -2.15 -0.24 -2.02 -0.39 -0.13 0.26 -0.11 0.13 0 0.24 0.87 0.39 0.89 0.26 
+0.86 0.37 -3.64 -0.63 -3.52 -0.5 -3.51 -0.63 -3.91 -0.75 -3.77 -0.63 -3.9 -0.63 -1.76 -0.5 
+-1.76 -0.39 -1.76 -0.36 -1.26 -0.39 -1.39 -0.24 S
+1008.14 2286.71 -1.26 -0.39 -1.89 -0.37 -1.88 -0.39 -1.89 -0.37 -1.12 -0.37 -1.26 -0.26 -1.26 -0.37 
+1.13 0.11 2.14 0 -0.99 -0.11 -0.89 -0.26 -1 -0.12 -3.28 -0.5 -3.28 -0.37 -3.38 -0.52 
+-2.78 -0.24 -2.76 -0.26 -2.65 -0.24 -2.78 -0.26 -0.24 -0.13 -0.52 -0.26 -0.24 0 -2.02 -0.24 
+-2.02 -0.26 -2.13 -0.13 -2.15 -0.24 0.39 -0.13 0.24 0 0.39 -0.13 0.24 0 -0.76 -0.24 
+-0.74 -0.13 -0.89 -0.13 -0.87 -0.26 3.26 0.26 3.14 0.26 3.15 0.11 3.28 0.26 2.13 0.26 
+2.15 0.24 2.02 0.26 2.13 0.37 3.28 0.39 3.14 0.37 3.28 0.5 3.15 0.39 4.27 0.5 S
+1004.12 2283.31 4.28 0.63 4.27 0.5 8.55 1.26 4.41 0.76 4.28 0.63 4.41 0.75 1.89 0.26 
+2.02 0.24 1.89 0.26 2 0.37 1.65 0.13 1.63 0.26 1.75 0.24 1.76 0.26 3.28 0.63 
+3.41 0.76 3.38 0.63 3.41 0.76 -2.28 -0.39 -2.12 -0.24 -2.02 -0.39 -2.14 -0.26 2.28 0.52 
+2.38 0.37 2.26 0.5 2.38 0.52 2.29 0.5 2.25 0.5 2.25 0.63 2.41 0.5 S
+1072.31 2295.4 1.99 0.39 2.15 0.5 2.25 0.37 2.15 0.39 2.76 0.75 2.64 0.63 2.78 0.63 
+2.75 0.74 1.02 0.13 1 0.26 1 0.24 1.02 0.13 2.76 0.76 2.91 0.89 2.88 0.76 
+2.89 0.74 3.53 1.15 S
+1110.8 2304.86 3.65 1 3.51 1.13 3.65 1.15 5.16 1.63 5.14 1.89 5.17 1.75 5.16 1.89 
+5.41 2.02 5.53 2.02 11.07 4.3 -3.38 -1.39 -3.54 -1.26 -3.38 -1.26 -3.41 -1.26 -4.52 -1.52 
+-2.15 -0.76 -2.12 -0.76 -3.54 -1.26 -3.52 -1.13 -3.52 -1.26 -3.54 -1.13 -3.65 -1.15 -3.77 -1.12 
+-3.65 -1.13 -3.51 -1.13 -3.78 -1.02 -3.64 -1 -3.65 -1.02 -3.54 -1 -3.02 -0.76 -5.77 -1.52 
+-2.91 -0.62 -3.64 -1 -3.52 -0.89 -3.64 -1 -3.64 -0.89 S
+1072.31 2295.4 0.99 0.39 1.13 0.24 1.02 0.39 1.13 0.37 -2.02 -0.5 -1.89 -0.39 -3.78 -0.74 
+-1.49 -0.26 S
+1067.41 2294.9 -1.65 -0.26 -1.62 -0.37 -1.52 -0.26 1.26 0.52 0.63 0.24 0.63 0.25 -2.26 0 
+3.65 0.87 3.51 1.02 3.41 0.89 1.89 0.5 1.75 0.63 1.76 0.5 S
+1138.21 2327.91 -1.89 -0.76 -2 -0.63 -2.02 -0.62 -2.52 -0.89 -2.52 -0.87 -2.52 -0.89 -1.13 -0.5 
+-1.26 -0.5 -1.25 -0.52 -1.89 -0.63 -2.02 -0.5 -2.02 -0.63 -2.52 -0.86 -2.49 -0.76 -2.52 -0.89 
+-3.66 -1.13 -3.65 -1.02 -3.64 -1.13 -2.64 -0.87 -2.75 -1.02 -2.65 -0.89 -5.27 -1.89 -1.13 -0.5 
+-1.15 -0.5 -1.13 -0.5 -0.63 -0.25 -0.63 -0.37 -0.63 -0.39 0.39 -0.13 S
+1078.47 2306.86 0.24 -0.11 0.39 -0.13 0.24 -0.13 0.13 -0.13 0.26 -0.13 0 -0.5 -2.52 -0.75 
+-2.64 -0.87 -2.65 -0.76 -1.5 -0.5 -1.52 -0.63 -1.62 -0.52 -3.91 -1 -4.01 -0.89 -3.91 -1 
+2.65 0.5 2.63 0.5 2.52 0.63 0.39 -0.11 0.74 0 -2.13 -0.63 -2.15 -0.63 -2.12 -0.52 
+-1.13 -0.5 -1.02 -0.36 -1 -0.39 -1.75 -0.63 -1.76 -0.5 -1.78 -0.5 -1.37 -0.5 -1.39 -0.39 
+-1.52 -0.5 1.25 0.13 1.26 0 1.13 0.14 6.29 1.25 3.02 0.74 1.52 0.13 1.5 0.26 
+1.64 0.26 1.63 0.5 1.65 0.5 1.5 0.5 1.89 0.5 1.75 0.52 S
+1071.29 2299.7 1.89 0.5 1.75 0.37 1.89 0.26 1.89 0.37 4.17 1.02 8.55 2.26 2.02 0.63 
+2 0.63 1.89 0.76 -1.39 -0.26 -1.26 -0.24 -1.37 -0.26 0 0.39 2.75 0.87 5.3 1.78 
+-0.39 0.11 -0.37 0 -0.26 0.13 0.13 0.26 0.13 0.24 0.13 0.26 2.38 0.89 2.26 0.87 
+2.28 0.89 1.76 0.63 3.52 1.52 1.52 0.74 1.63 0.63 1.63 0.76 2.38 1.02 2.41 1 
+2.39 1.02 2.26 0.87 2.39 0.89 2.28 0.87 0.73 0.52 1.78 1 0.5 0.39 0.37 0.37 
+0.5 0.37 1.26 0.63 1.13 0.63 1.15 0.63 S
+1139.23 2326.89 0 0.26 -0.13 0.26 -0.26 0.11 -0.37 0.13 -0.26 0.26 S
+1110.05 2319.59 -2.02 -0.75 -1.89 -0.89 -2.02 -0.87 2.15 0.63 2.13 0.5 2.14 0.5 -0.12 0.39 
+-0.24 0.23 -0.13 0.26 S
+1388.82 2977.67 1.39 -3.51 1.76 -2.28 2.25 -1.89 2.78 -2.13 1.26 0.5 1.88 -2.15 2.26 -1.89 
+1.52 -3.28 2.13 -0.36 2.28 -1.02 0.63 -2.64 1.76 -3.15 1.89 -4.9 2.26 -0.13 1.13 -2.15 
+2.15 -1.99 0.87 -3.17 2.02 -3.78 0.89 -3.14 2.13 -2.89 2.15 -3.67 2.13 -1.26 1.02 -2.25 
+1.89 -2.41 2.76 -2.25 2.02 -1.25 1.89 -3.15 1.26 -0.5 0.24 2.76 1.25 1.25 1.65 -1 
+-0.26 4.78 S
+1442.04 2922.75 -0.5 5.42 -0.63 4.4 -1 5.93 0 5.29 -1.26 2.02 -1.65 1.89 -1.5 -1.75 
+-1.12 3.01 -1.52 1 -1.63 5.16 -1.78 -2.02 -1.63 1.64 0 4.41 -0.62 3.78 -2.02 2.02 
+-1.25 -1.39 -0.74 4.4 -1.52 -0.73 -2.26 2.62 -1.65 -1 -2.62 2.28 -1.39 -2.41 -2.39 2.52 
+-2.15 2.91 -2.25 0.87 -2.02 0.26 -2.15 1.13 -1.99 2.15 -1.76 2.38 -2.02 1.02 -2.28 -1.65 
+-1.89 -1.89 -2.13 1.13 -1.89 -1.89 S
+1442.43 2909.03 1.75 0.76 2 -0.52 0 -2.52 1.65 0.76 1.89 0.89 1.5 -1.02 1.89 1.02 
+1.25 2.02 1.76 1.75 1.39 0.5 1.75 -0.75 1.52 0.75 1.63 0.76 1.39 1.52 S
+1463.8 2914.95 1.63 0.11 1.52 3.4 1.63 0 1.39 -0.24 1.26 0.5 -0.37 4.14 -0.63 5.04 
+-1.39 -0.73 -1.39 -2.65 -1.89 -0.26 -0.63 3.91 -1.26 1.26 -1.5 -0.89 -1.88 -0.37 -1.76 0.76 
+-0.39 -5.79 -1.26 -1.39 -1.63 -0.89 -1.52 -1.63 -1.37 -0.5 -1.15 3.15 -1.62 -0.89 -1.89 0.76 
+-1.13 -0.26 -1.12 -2.88 -2.02 -0.26 -0.25 -5.3 -0.74 -4.02 S
+1470.86 2922.87 1.25 -0.24 1.26 -2.41 1 6.05 -1.39 1.13 -2.13 -4.54 S
+1475.89 2920.49 1.36 1.62 2.02 0.64 1.26 2.54 0.89 3.25 1 2.28 0.63 1.26 0.63 1.39 
+0.5 1.39 0.63 1.39 S
+1484.81 2936.24 0.75 0 0.76 -0.13 0.63 1 0.63 0.89 S
+1487.59 2938 0.63 0.5 0.63 0.39 0.63 1.36 0.5 1.39 0.63 0.5 0.63 0.52 0.37 1.63 
+0.39 1.76 S
+1492 2946.05 0.63 2.02 0.5 2.15 0.63 2.26 0.63 2.28 -0.89 -0.5 -1 -0.63 -0.25 -3.77 
+-0.24 -3.8 S
+1492 2946.05 -0.64 0.63 -0.62 0.52 -0.52 -1.39 -0.63 -1.39 -2.12 0 -0.63 -0.13 -1 -3.52 
+-0.52 -2.28 -0.49 -2.26 S
+1484.81 2936.24 -0.87 0.87 -0.75 0.89 -1.52 -2.15 -1.89 -0.63 1.13 -3.52 -1.25 -0.63 -1.5 -2.02 
+-1.52 0 -1 -3.14 0.26 -5.42 S
+1496 2956.38 0.76 2.65 0.76 2.78 -0.89 -0.37 -0.89 -0.39 0.13 -2.38 0.13 -2.28 S
+1498.27 2968.36 1.26 2.52 -0.11 3.02 -0.26 3.04 -0.5 -1.91 -0.63 -1.89 0.13 -2.39 0.11 -2.39 S
+1484.44 2925.39 0.38 -1.5 0.39 -1.52 0.63 0.76 0.63 0.89 0.61 -0.39 0.52 -0.37 0.63 -1.02 
+0.63 -1.13 0.63 2.28 0.5 2.25 -0.76 1.63 -0.76 1.52 -0.76 0.49 -0.74 0.52 -1.26 -1.78 
+-0.63 -1.39 -0.63 -1.26 S
+1496.64 2931.08 0.49 1.37 0.5 1.39 0.52 1.89 0.5 1.89 0.24 3.8 0.13 3.78 0.26 2.88 
+0.37 2.91 0.39 2.02 0.37 2.02 0.5 2 0.39 2.02 0.24 2.52 0.39 2.52 0 5.55 
+-0.52 -1.13 -0.5 -1.02 -0.37 -1.63 -0.5 -1.52 -0.52 -1.75 S
+1499.52 2962.57 -0.5 -1.65 -0.5 -2.26 -0.5 -2.15 0 -4.91 -0.5 -2.02 -0.39 -1.89 -0.37 -1.75 
+-0.39 -1.79 0 -2.38 -0.11 -2.39 0.11 -4.17 0.26 -4.14 S
+1508.09 2992.54 -0.13 3.15 -0.13 3.17 -0.62 3.28 -0.63 3.14 0.13 -3.04 0.24 -3.02 0.52 -3.27 
+0.63 -3.41 S
+1509.36 3020.38 -0.39 3.9 -0.5 3.91 -0.89 4.17 -0.86 4.28 -1.02 2.78 -0.87 2.64 0.63 -3.28 
+0.5 -3.41 0.76 -3.64 0.76 -3.66 1 -3.91 0.89 -3.78 S
+1435.37 2950.09 1.63 1.02 1.13 -1.25 0.52 -4.04 2.76 -0.39 -0.5 4.79 -1.13 -0.5 -1.25 3.15 
+-1.65 3.41 -1.37 -2.41 -0.13 -3.77 S
+1444.55 2948.2 1.39 0.63 -0.13 5.29 S
+1445.81 2954.12 -2.02 -0.5 0.76 -5.42 S
+1465.56 2929.82 1.39 1.63 1.39 1.76 -1.02 -4.78 -1.75 1.39 S
+1439.78 2988.76 1.63 -4.78 1.39 -2.02 1.13 -4.41 2.02 -1.02 2.02 -3.27 1 -4.54 1.63 -4.53 
+1.26 -5.17 1.76 1.39 1.26 2.65 0.52 2.78 1.63 -6.69 0.99 3.41 1.39 1.89 0.63 4.03 
+2.14 -1.02 1.13 2.78 1.5 -2.02 1.02 -3.64 0.76 3.14 0.74 4.41 0.63 4.54 -0.63 5.54 
+-0.74 7.81 -2.02 3.54 -0.13 5.8 0.13 4.9 -0.63 5.16 -1.52 5.93 -0.99 5.42 -0.5 4.28 
+0.87 2.28 0.89 3.52 -1.75 1.65 -1.76 1.13 -2.14 1.89 -0.63 4.27 -2.02 2.28 -2.12 3.39 
+-0.89 5.29 -1.89 5.66 S
+1449.46 3056.4 0.39 4.67 -2.02 2.02 0.13 4.04 0.11 4.04 -1.75 -0.39 -2.02 0.5 -1.37 -1 
+-1.89 4.28 -2.02 0.26 -1.39 0.89 1.13 -5.17 0.52 -5.16 1.26 -4.43 0.87 -7.05 1.39 -3.52 
+-1.25 -3.04 0 -4.52 0.89 -7.31 0.24 -4.66 0.75 -4.8 -0.13 -5.04 -1 -3.14 -0.89 -2.89 
+1.13 -5.8 1.26 -6.81 -1.5 -1.26 -1.65 -1.63 -1.88 0.11 0 -5.27 1.02 -5.55 S
+1472.75 2993.55 1.89 -6.05 1.13 2.15 1.49 -4.4 1.13 -6.43 0.76 -6.69 1.02 -4.03 0.99 1.75 
+0.5 1.39 0.39 1.52 -0.52 2.38 -0.64 2.52 -0.49 2.78 -0.37 2.78 -0.63 2.65 -0.5 2.52 
+-1.13 5.16 -1.65 4.41 0 5.29 S
+1476.13 3003.25 0.39 0.87 0.5 0.89 0.38 -1.63 0.39 -1.78 0.74 -5.04 0.76 -1.52 0.76 -1.63 
+0.86 -0.13 0.76 -0.24 0.63 -3.28 0.63 -3.41 0.5 0.13 0.63 0 0.13 2.13 0 2.02 
+0.89 -4.01 0.87 -4.04 0.63 -1.13 0.76 -1.15 0.13 3.04 0.13 2.88 -1.26 6.3 -0.89 1.52 
+-0.87 1.52 -0.89 1.89 -1 1.89 -0.76 0.86 -0.89 0.76 -0.14 2.52 0 2.52 -0.86 1.65 
+-0.76 1.52 -0.76 1.13 -0.62 1.13 -1.14 1.64 -0.99 1.5 0.13 2.65 0.11 2.64 -0.11 2.78 
+-0.13 2.75 -0.26 3.04 -0.37 3.15 0.5 1.39 0.5 1.5 -0.87 0.89 -0.76 0.89 -0.26 -2.28 S
+1474.24 3033.98 -0.13 -2.26 -0.24 -2.15 -0.13 -2.02 -0.37 -1.26 -0.52 -1.13 0.52 -6.05 -0.89 -2.38 
+-1.39 3.64 -1.63 0.13 -1.75 5.8 -1.13 6.05 0.37 2.39 0.76 0.89 0.37 2.76 1.02 2.91 
+0.73 2.52 0.39 1.25 0.37 1.26 0.63 0.37 0.63 0.39 0.25 1.76 0.11 1.75 0.13 2.29 
+0.13 2.38 -0.63 3.54 -0.76 3.64 -0.63 2.78 -0.63 2.75 -0.62 0.65 -0.63 0.5 0.26 -1.89 
+0.37 -1.88 0.5 -2.54 0.39 -2.52 0.13 -2.52 0.11 -2.64 -0.37 -1.5 -0.37 -1.52 -0.13 -1.52 
+-0.13 -1.5 -0.62 -0.13 -0.63 -0.25 -1 -1.76 -1.13 -2.02 -1.39 -0.87 1.5 -6.82 -1.13 -3.28 
+0.89 -3.52 S
+1465.82 3030.46 1.39 -5.29 1.5 -4.92 0.39 -4.78 0.73 -4.79 1.65 -5.93 1 -5.66 0.26 -5.54 S
+1473.48 3075.3 1.02 -1.5 0.87 -1.39 1.78 -3.78 0.74 -2.54 0.89 -2.39 0.87 -1.26 1.02 -1.26 
+0.87 -0.37 0.89 -0.52 -2.25 3.04 -0.89 2.02 -0.89 1.99 -0.99 2.91 -0.87 2.78 0.11 1.39 
+0.26 1.5 -0.76 1.02 -0.76 0.99 -0.37 2.39 -0.37 2.52 -1.15 2.65 -1 2.52 0.37 -2.89 
+0.26 -3.02 -1 1.37 -1.02 1.39 -0.76 2.65 -0.87 2.64 0.37 -2.52 0.39 -2.38 0.87 -2.41 
+0.89 -2.39 0.76 -2.64 0.74 -2.52 S
+1487.2 3022.27 0.89 -1.5 0.88 -1.52 0.63 0.37 0.63 0.39 S
+1490.21 3020.01 -0.11 2.14 -0.13 2.26 -1.52 3.77 -0.5 -0.75 -0.5 -0.87 -0.26 -4.3 S
+1489.84 3032.86 1.52 0.26 0.11 1.63 0.13 1.63 0.5 0.76 0.39 0.89 0.76 1.25 0.74 1.39 
+1.52 -0.26 -0.75 2.41 -0.76 2.52 -0.87 1.5 -0.89 1.52 -0.24 -1.39 -0.39 -1.39 -0.63 0.26 
+-0.63 0.24 -0.24 -2 -0.13 -2.02 -0.5 -1.89 -0.39 -1.78 0.39 -2.76 0.37 -2.78 S
+1480.27 3030.84 0.63 1.89 0.52 1.88 S
+1483.94 3046.33 0.5 2.28 0.5 2.26 -0.89 0.26 -1 0.24 0.5 -2.52 0.39 -2.52 S
+1481.04 3079.34 0.63 0 0.76 -0.13 -0.26 2.39 -0.24 2.4 -0.63 -0.12 S
+1481.29 3083.88 -0.76 -0.13 0.26 -2.14 0.24 -2.26 S
+1484.94 3105.17 1.13 -1.26 1.26 -1.26 -0.26 1.89 -0.24 2.02 -1 1.26 -1.02 1.26 0.13 -2.02 
+0 -1.89 S
+1486.2 3069.64 0.5 0.76 0.63 0.76 0.26 0.73 0.37 0.76 0.76 -2.39 0.87 -2.38 0.63 -0.26 
+0.76 -0.13 0.26 3.04 0 3.91 -0.26 2.76 -0.24 2.78 1.13 -3.41 1 -3.41 -0.24 -1.89 
+-0.13 -1.75 0.37 -2.65 0.39 -2.75 -0.39 -1.02 -0.37 -0.99 0.24 -1.65 0.26 -1.62 0.26 0.36 
+0.37 0.5 0.76 -0.74 0.76 -0.75 0.74 -1.65 0.63 -1.76 0.89 -2.28 0.76 -2.39 0.11 1.26 
+0.26 1.26 -0.76 4.16 -0.87 4.27 S
+1496.89 3061.07 0.74 -0.76 0.89 -0.73 0.63 0 0.63 -0.14 0.63 -0.26 0.63 -0.24 0.37 1.13 
+0.39 1.26 0.5 0.76 0.37 0.74 0.76 0.25 0.63 0.14 1 1.52 0.52 -0.13 0.63 0 
+0.74 -1.13 0.76 -1.15 2.52 -6.55 1.25 -3.38 1.13 -3.67 1.02 -2.89 1 -3.02 0 -4.17 
+0.63 -3.78 0.63 -3.66 0.89 -5.16 0.73 -5.04 0.26 1.65 0.26 1.63 -0.13 3.54 -0.26 3.52 
+0.26 1.78 0.24 1.75 0 4.78 0.75 -1.76 0.64 -1.63 0.75 -1.52 0.76 -1.63 0.63 -1.15 
+0.74 -1.26 0.39 0.89 0.24 0.89 0.14 1.63 0.13 1.52 0.5 0.5 S
+1523.8 3036.13 0.5 0.5 -0.74 7.81 -0.52 2.52 -0.49 2.52 -0.87 2.91 -0.89 2.75 -0.37 2.64 
+-0.39 2.65 -0.49 2.91 -0.64 2.76 -0.99 4.54 -1.02 4.53 0 1.89 -0.11 1.78 0.73 -0.26 
+0.52 0.13 0.5 0.26 0.13 0.87 0.11 1.02 1.25 -3.28 1.26 -3.15 1.02 -2.64 0.87 -2.65 
+1.02 -1.65 0.87 -1.75 0.76 -1.39 0.89 -1.39 0.73 -2.39 0.76 -2.38 0.26 2.25 0.13 1.39 
+0.11 1.52 0.13 1.5 0 1.52 0.13 1.13 0.13 1.26 0.74 -2.25 0.89 -2.28 -0.37 3.14 
+-0.52 3.17 -1.13 4.78 -1.26 4.67 0 -3.02 -0.37 -0.26 -0.26 -0.13 S
+1526.82 3076.56 -1 4.16 -1.13 4.28 0.24 -1.76 0.13 -1.76 -0.24 -0.52 -0.26 -0.62 -2.52 9.07 
+0.5 -3.52 0.49 -3.41 -1.25 3.14 -1.24 3.02 -1.65 4.8 -1.62 4.66 -0.5 0 -0.52 0.14 
+-1.26 2.02 -1.13 2.13 -1.13 2.78 -1.13 2.64 -1 4.78 -0.52 2.41 -0.5 2.39 -1.63 4.04 
+-1.52 4.04 -0.76 0.86 -0.87 0.89 0.76 -3.14 0.63 -3.28 -0.63 0.24 -0.63 0.13 0 -1.39 
+0.11 -1.5 -1.75 4.4 -1.76 4.28 -1.13 1.75 -1.12 1.65 -0.5 0.13 -0.39 0 -0.76 0.37 
+-0.63 0.26 -0.5 -0.26 -0.5 -0.37 -0.36 -0.26 -0.5 -0.25 0 -2.76 -0.39 -0.5 S
+1494.75 3126.71 -0.5 -0.63 -0.26 -0.52 -0.24 -0.63 -0.26 -0.76 -0.24 -0.87 -0.52 -1.52 -0.49 -0.5 
+-0.5 -0.63 0.13 -1.52 0.14 -1.5 -0.26 -0.89 -0.37 -0.76 -0.26 -0.76 -0.37 -0.76 S
+1490.73 3114.47 -1.39 0 -0.63 -0.24 -0.5 -0.26 0.74 -3.91 0.63 -3.77 1.15 -3.4 1 -3.26 
+0.26 -2.28 0.11 -2.26 1.02 -3.79 0.87 -3.91 0.76 -2.89 0.75 -2.9 0.88 -3.28 0.89 -3.39 
+-0.26 -2.52 -0.74 0.63 -0.76 0.76 -1.12 2.52 -1.13 2.39 -0.52 -0.26 -0.37 -0.24 -2.25 4.78 
+-1.15 3.54 -1 3.41 -1.63 3.01 -1.52 3.02 -0.13 -2.14 0 -2.13 -0.87 0.63 S
+1483.81 3092.32 -0.89 0.5 -0.13 -2.02 -0.11 -2.02 0.74 -3.01 0.63 -2.91 0.13 -2.63 0.26 -2.64 
+0.87 -4.04 0.89 -3.9 S
+1396.75 3162.24 3.14 -3.66 2.15 -2.52 2.75 -3.28 1.89 0.39 -1.75 2.89 1.39 0 1.63 -4.28 
+2.25 -3.04 1.02 1.89 -1.63 5.29 1.37 0.52 3.27 -1.65 -2.26 3.15 -1.78 2.02 1.39 0.89 
+3.14 -2.41 0.89 1.15 -0.49 2.64 -2.15 0.63 -1.89 1.5 -0.5 2.64 -1.26 -1.52 -1 -1.13 
+0 -1.89 1.37 -3.78 -1 -1.13 -2.64 2.76 -3.64 3.41 -2.65 4.54 -2.39 5.29 -2.25 4.67 
+-2.88 4.41 -1.89 0.5 -2.78 3.4 -3.39 4.67 1.5 -3.91 -0.37 -1.78 -1.39 -0.74 0.5 -2.78 S
+1384.42 3182.01 2.89 -4.17 2.28 -3.78 2.26 -1.89 3.28 -5.04 2.65 -3.41 -1.02 -1.5 S
+1432.23 3088.78 -0.5 6.19 -1.12 3.91 -1.15 4.91 -2 5.42 -0.39 3.02 -1.5 6.06 -3.65 5.03 
+3.25 -7.68 1.89 -6.31 1.13 -4.28 1.26 -6.06 1.02 -4.77 1.76 -5.43 S
+1411.71 3144.83 2.26 -1.37 2.64 -2.9 1.76 -1.13 -1.5 4.77 -2.52 3.9 -1.89 0.63 -0.5 -1.63 
+-0.26 -2.28 S
+1417.38 3159.83 2.76 -2.76 1.26 0.87 2.28 -4.28 -0.5 -1.65 3.14 -4.77 0.5 1.25 3.02 -4.66 
+-0.39 3.53 -2.25 2 -2.13 3.28 0 3.91 -3.28 3.77 -2.15 3.17 -2.26 1.75 0.5 -3.54 
+-0.5 -1.88 S
+1427.06 3130.49 -0.13 3.78 1.02 0.63 S
+1427.95 3134.89 2.13 -3.41 1.02 -4.41 2.12 -2.02 1.78 -0.89 -1.02 3.91 -2.52 3.28 0.89 0.39 
+-1.52 4.27 1.75 -1.39 -0.37 3.67 -2.02 3.38 -0.63 -2.25 -2.02 3.41 -2.63 4.02 2.13 -4.28 
+1.13 -4.41 -2.12 3.78 -0.5 -1.65 -3.02 5.16 -0.13 -3.39 -1.39 1.5 -0.5 -2.63 2.13 -2.28 
+2.41 -4.41 2 -3.78 S
+1442.79 3103.02 1.63 -2.52 -1.75 4.54 -1.76 5.03 -0.13 2.52 2.02 -3.15 -0.12 2.65 -1.39 4.66 
+1.15 0.89 1.25 -0.76 1.37 -4.29 2.65 -5.17 1.39 -0.37 1.49 0.13 0.13 1 0 0.89 
+0.89 -0.5 0.87 -0.63 -1 3.28 -1.13 3.14 -0.75 1.13 -0.89 1 -0.87 0.75 -0.89 0.76 S
+1446.94 3118.01 -1.12 3.15 -0.76 2.28 -0.76 2.13 1.15 -1 0.99 -1.13 1.52 -2.15 1.37 -2.15 
+-1.13 2.65 -1.26 2.78 -0.87 2.64 -1.15 2.52 -2 3.77 -1.52 1.76 -1.5 1.78 -1.52 2.52 
+-1.52 2.39 -2.62 2.26 -2.15 0.13 3.41 -5.16 1.26 -4.04 -1.02 -0.5 2.52 -5.16 0.13 -3.15 
+1.52 -4.77 -2.02 3.02 -1.02 -0.39 0.63 -3.78 1.39 -4.14 0.39 -4.3 1 -3.51 2.52 -5.43 S
+1501.3 3139.8 0.74 -1.63 0.76 -1.65 -0.13 1.65 -0.23 1.63 0.87 -1.26 0.89 -1.13 -0.26 1.63 
+-0.24 1.65 -0.5 2.39 -0.52 2.28 -1.26 4.77 -1.5 4.54 -1.64 4.53 -2.12 5.55 -2.26 5.54 S
+1493.88 3170.29 -0.76 2.15 -0.63 2.13 -5.03 10.33 -2.02 4.43 -2.02 4.41 -3.78 6.04 1.52 -4.02 
+1.39 -3.91 2.75 -4.92 2.91 -5.04 0.63 -2.14 0.74 -2.13 2.91 -6.82 2.89 -6.66 0.5 -2.02 
+0.63 -2.02 0.5 -2.02 0.52 -2.15 1 -3.38 1 -3.28 0.63 -2.78 0.52 -2.78 0.37 -2.02 
+0.26 -1.89 S
+1480.79 3175.09 -0.62 2.25 -0.63 2.28 S
+1471.72 3208.33 0.63 0 0.5 0.13 0.76 0 0.63 -0.13 -0.37 1.26 -0.39 1.13 S
+1473.48 3210.72 2.28 -3.15 2.25 -3.28 2.39 -3.9 2.38 -3.77 -2.62 5.29 -2.78 5.3 -1.5 2.25 
+-1.52 2.28 -0.37 -0.5 -0.52 -0.52 S
+1473.48 3210.72 -0.37 0.13 S
+1473.11 3210.85 -0.36 0 -0.39 -0.5 -0.24 -0.5 -0.25 -0.76 -0.13 -0.76 S
+1480.67 3206.58 1.62 -2.65 1.65 -2.78 1.5 -2.65 1.13 -1.62 1.02 -1.65 1.13 -1.62 0.5 -0.64 
+0.63 -0.75 0.5 -0.63 -1.5 3.41 -1.65 3.51 -1.5 3.54 -0.76 0.76 -0.62 0.76 -0.63 0.73 
+-2.78 3.78 -1.36 1.91 0.37 -1.15 0.37 -1.12 0.39 -1.13 S
+1484.05 3206.08 0.39 -0.26 0.38 -0.13 0.49 -0.13 0.39 0.39 S
+1493.88 3190.32 0.74 -0.89 0.76 -1 0.89 -0.89 S
+1481.92 3216.41 0.24 -0.13 0.26 -0.26 0.26 -0.13 0.24 0 0.26 0.13 0.24 0 0.26 -0.13 
+0.26 -0.11 0.24 -0.26 S
+1477.39 3229.88 1.75 -2.65 1.65 -2.91 1.76 -2.76 0.76 -1.26 0.87 -1.39 0.89 -1.25 1.13 -1.65 
+2.26 -3.52 S
+1495.75 3193.34 1.02 -2.26 1.13 -2.15 1 -2.26 0.89 -1.39 1.52 -2.78 -0.63 1.88 -1.52 3.78 
+-0.37 1.15 -0.52 1.26 -0.37 1.37 -1.63 3.54 -1.75 3.54 -1.65 3.52 -0.13 -0.26 -0.24 -0.11 
+-0.13 -0.13 1.13 -3.02 1.13 -2.78 1.13 -2.91 S
+1496.38 3196.75 1.02 -1.63 1.13 -1.65 1 -1.75 -0.87 2.25 -0.89 2.28 -0.87 2.25 -1.15 1.89 
+-1.13 1.89 -1 1.78 0.89 -2.41 0.99 -2.52 0.88 -2.39 S
+1525.07 3144.21 1.52 -3.78 1.39 -3.77 1.37 -3.91 1.39 -3.91 S
+1530.73 3128.84 1.39 -3.91 1.26 -3.52 1.13 -3.67 1.26 -3.64 1.13 -3.64 1.13 -3.67 -0.87 3.17 
+-1.02 3.14 -0.87 3.28 -1.02 3.15 -1 3.27 -1.39 3.91 -1.39 3.77 -1.23 3.78 -1.39 3.64 
+-1.39 3.67 0.99 -2.78 0.89 -2.78 1 -2.64 1.02 -2.78 0.87 -2.76 -1.25 3.41 -1.13 3.25 
+-2.52 6.56 -1.25 3.14 S
+1539.28 3103.91 1.39 -4.8 1.52 -4.78 1.37 -4.92 2.78 -10.07 -0.5 2.15 -0.5 2.13 -0.52 2.15 
+-0.63 2.14 -0.5 2.13 -0.87 2.91 -0.89 2.89 -0.89 2.78 -0.87 2.65 -0.89 2.64 S
+1563.56 2877.54 -0.37 -6.32 -0.39 -6.29 -0.5 -6.43 -0.63 -6.55 -0.37 -3.78 -0.39 -3.91 S
+1560.92 2844.27 -0.37 -3.91 -0.99 -7.82 -0.52 -5.04 -0.37 -2.52 -0.26 -2.52 -0.74 -5.04 -0.39 -2.65 
+-0.37 -2.52 -0.39 -2.65 -0.37 -2.64 -0.5 -2.65 -0.39 -2.78 -0.5 -2.78 -0.5 -2.76 -0.5 -2.91 
+-0.76 -3.65 -0.76 -3.91 -0.73 -3.77 -0.76 -3.9 -0.89 -3.91 0 -0.62 -0.14 -0.76 -0.11 -0.63 
+-0.26 -1.52 0.89 3.91 0.87 3.9 0.76 3.78 0.76 3.79 0.75 3.78 0.74 3.64 0.63 3.78 
+0.76 3.67 0.63 3.64 0.5 3.52 0.39 2.15 0.24 2.02 0.25 2.15 0.37 2.02 0.26 2 
+0.5 3.41 0.37 3.41 0.52 3.28 0.37 3.41 0.37 3.25 0.52 4.17 S
+1560.8 2839.11 0.5 4.04 0.37 4.14 0.5 4.03 0.26 3.91 0.26 2.39 0.11 2.41 0.13 2.26 
+0.13 2.28 0.13 2.25 0.13 2.29 0 2.12 0.11 2.15 0.13 2.15 0 2.02 S
+859.7 2287.09 -1.89 0.26 -2.02 0.36 -1.89 0.26 2.52 0 -3.14 0.24 -3.02 0.13 -3.15 0.26 
+4.15 -0.5 4.27 -0.52 4.16 -0.5 S
+1433.12 3317.93 -0.76 0.89 -0.63 0.89 -0.76 0.86 -0.75 0.89 -0.76 1 -0.63 0.89 -0.87 1 
+-0.75 1.02 -0.76 0.87 -0.74 1.02 -0.89 1 -0.76 1.02 -0.86 1 -0.76 1.13 -0.89 1.02 
+-0.87 1 -0.89 1.15 -1 1.13 -0.89 1 -0.87 1.15 -1.02 1.13 S
+1416 3338.98 -1.63 2.02 -1.76 2.02 -1.78 2 -1.76 2.14 -1.89 2.02 -1.75 2.02 -1.89 2.15 
+-1.89 2.12 -1.99 2.02 -1.89 2.14 -2.02 2.13 -4.04 4.3 -2 2.12 -2.14 2.28 -4.28 4.27 
+-2.15 2.28 -2.26 2.15 -2.25 2.25 -2.28 2.26 -2.26 2.28 -2.39 2.26 -3.41 3.28 -3.52 3.28 
+-3.64 3.27 -3.52 3.28 -3.66 3.28 -3.76 3.28 -3.78 3.28 -3.78 3.14 -3.77 3.28 -3.91 3.28 
+-4.02 3.14 -3.91 3.15 -4.04 3.14 -4.14 3.28 -4.02 3.04 -4.16 3.14 -4.27 3.15 -4.28 3.02 
+-4.27 3.14 -4.28 3.04 -8.81 6.04 -4.53 2.9 -4.51 3.02 -4.54 2.89 -2.02 1.28 S
+1267.17 3468.23 -2.02 1.26 -2 1.26 -2.02 1.26 -2.02 1.13 -1.89 1.26 -2 1.13 -1.88 1.13 
+-1.89 1.15 -1.89 1.13 -1.89 1 -1.76 1.15 -1.89 1 -1.79 1.02 -1.88 1 -1.76 1 
+-1.75 1.02 -1.63 1 -1.76 0.89 -1.78 1 -3.25 1.78 -1.76 0.87 -1.65 0.89 -1.63 0.89 
+2.39 -1.28 2.25 -1.13 2.15 -1.26 2.26 -1.12 2.15 -1.26 2.12 -1.13 2.02 -1.25 2.14 -1.15 
+2 -1.12 2.02 -1.13 1.89 -1.13 2.02 -1.15 5.67 -3.38 1.75 -1.02 1.89 -1.13 1.75 -1.13 
+1.76 -1.02 1.65 -1.13 1.75 -1 1.63 -1.15 3.78 -2.26 3.64 -2.39 3.64 -2.41 S
+1277.73 3461.29 3.54 -2.39 3.52 -2.39 3.52 -2.28 3.41 -2.39 3.38 -2.39 3.41 -2.41 3.25 -2.39 
+3.28 -2.39 3.28 -2.41 3.14 -2.39 3.15 -2.25 3.02 -2.41 3.14 -2.39 3.02 -2.39 2.89 -2.41 
+2.91 -2.26 3.52 -2.91 3.52 -2.89 3.41 -2.91 3.38 -2.89 3.41 -2.9 3.38 -2.89 3.28 -3.02 
+3.41 -3.04 3.25 -3.02 3.28 -3.02 3.28 -3.04 3.26 -3.14 3.14 -3.02 3.28 -3.14 6.29 -6.29 
+3.14 -3.17 2.52 -2.62 2.65 -2.78 2.63 -2.78 2.64 -2.78 2.65 -2.89 2.62 -2.91 2.65 -2.89 
+2.65 -2.91 2.64 -3.02 2.52 -3.02 2.63 -3.04 7.95 -9.44 2.62 -3.28 2.65 -3.28 S
+1427.82 3324.48 5.3 -6.55 S
+1162.13 3521.5 -0.26 0.14 -0.24 0 -0.26 0.13 -0.26 0.11 -0.24 0.13 -0.26 0.13 -0.24 0.13 
+-0.39 0.13 -0.24 0.11 -0.26 0.13 -0.26 0 -0.37 0.13 -0.26 0.13 -0.24 0.13 -0.39 0.11 
+-0.24 0.13 -0.39 0.13 -0.24 0.13 -6.16 2.39 -6.29 2.28 -6.16 2.26 -6.29 2.15 -6.16 2.15 
+-6.3 1.99 -6.29 2.02 -6.16 1.88 -6.3 1.89 -6.29 1.78 -6.27 1.63 -6.16 1.64 -6.29 1.5 
+-6.17 1.52 -6.29 1.39 -6.17 1.39 -6.29 1.37 -6.16 1.15 -5.8 1.14 -5.77 0.99 -5.92 1.02 
+-5.91 1 -5.92 0.89 -5.91 0.76 -5.92 0.87 -6.04 0.63 -5.92 0.76 -6.03 0.63 S
+985.75 3564.58 -6.04 0.5 -6.03 0.52 -6.17 0.5 -6.05 0.37 -6.03 0.39 -6.17 0.24 -6.04 0.26 
+-6.16 0.13 2.64 0 2.5 -0.13 2.52 -0.12 2.41 0 2.5 -0.13 2.52 -0.11 2.41 -0.14 
+2.52 -0.12 4.78 -0.26 2.38 -0.11 2.39 -0.26 2.39 -0.13 2.28 -0.13 2.39 -0.24 2.25 -0.13 
+2.39 -0.26 2.28 -0.24 -2.02 0.24 -3.78 0.26 -2.02 0.13 -1.89 0.24 -1.76 0.13 -3.77 0.26 
+-1.76 0.13 -1.75 0 -1.76 0.11 -1.78 0.13 -1.76 0.13 -1.76 0 -1.62 0.13 -1.65 0.14 
+-1.75 0 6.79 -0.26 6.92 -0.5 6.92 -0.39 13.85 -1.26 7.03 -0.62 S
+991.28 3563.96 7.05 -0.87 7.16 -0.89 7.05 -0.89 7.16 -1.13 7.18 -1.12 7.16 -1.13 7.18 -1.39 
+7.29 -1.39 7.16 -1.52 7.32 -1.49 6.27 -1.39 6.29 -1.52 6.42 -1.62 6.3 -1.64 6.16 -1.63 
+6.29 -1.78 6.3 -1.89 6.16 -1.88 6.29 -1.89 6.16 -2.02 6.17 -2.12 6.16 -2.15 6.04 -2.15 
+6.03 -2.26 6.16 -2.28 5.93 -2.39 S
+450.33 3360.63 -2.78 -2.88 -2.63 -3.04 -2.78 -2.89 -2.65 -3.02 -2.62 -3.04 -5.29 -6.03 -2.26 -2.64 
+-2.14 -2.65 -2.13 -2.64 -2.15 -2.65 -2.13 -2.64 -2.02 -2.52 -2.02 -2.64 S
+416.73 3321.33 -2.26 -2.78 -2.14 -2.75 -2.26 -2.91 -2.14 -2.78 -2.13 -2.88 -2.15 -2.91 -2.25 -3.14 S
+401.39 3301.17 -2.26 -3.14 -2.28 -3.15 -2.13 -3.14 -2.15 -3.02 -2.02 -3.17 2.02 3.04 2.02 2.89 
+2.02 2.91 2.12 3.02 2.15 2.91 2.13 2.88 2.15 3.02 2.25 3.04 2.28 3.02 2.26 3.02 
+2.39 3.04 2.39 3.02 S
+416.73 3321.33 1.65 2.02 1.5 2.02 1.63 2.02 1.65 1.89 1.63 2.02 1.65 1.89 3.12 3.91 
+3.28 3.91 3.41 3.78 3.39 3.91 3.41 4.01 3.64 3.91 3.65 4.03 S
+294.57 2917.96 0 -6.18 0.26 -1.12 0.13 -1 0.11 -1.13 -0.11 3.52 -0.13 3.64 -0.12 0.76 
+0 0.76 -0.14 0.75 S
+662.17 3456.51 -0.13 -0.39 -0.24 -0.24 -0.26 -0.13 -0.24 0 0.38 0.37 S
+661.68 3456.12 0.49 0.39 S
+659.29 3454.1 -1.52 -0.63 -1.37 -0.63 -1.25 -0.74 -1.26 -0.76 0.74 -0.13 0.63 0 1.39 0.89 
+1.39 0.74 1.26 1.26 S
+640.8 3444.04 -1.76 -0.76 -1.78 -0.76 -2.26 -1.5 -2.12 -1.39 3.02 1.25 2.88 1.39 1 0.87 
+1.02 0.89 S
+627.32 3436.35 -1.99 -1.39 -1.89 -1.39 S
+621.05 3432.31 -1.65 -0.87 -1.62 -0.89 -0.89 -0.26 -1 -0.36 -0.89 -0.76 -0.87 -0.76 -0.63 -0.63 
+-0.5 -0.63 2.13 1.26 2.25 1.26 0.63 0.63 0.63 0.52 1.15 0.74 1.26 0.76 S
+608.7 3425.39 -1.23 -0.39 -1.26 -0.37 0.11 0.37 0.13 0.39 -2.26 -1.13 -2.39 -1.15 -0.89 -0.11 
+-0.76 -0.26 -1.88 -1.26 S
+598.27 3421.48 -1.76 -1.13 0.39 -0.39 -0.52 -0.63 -0.5 -0.62 -1.13 -1 -1 -0.89 -0.26 -0.5 
+-0.13 -0.5 1.65 0.99 1.49 1.02 1.39 0.74 1.39 0.75 1.63 1.02 1.52 1 1.5 1.02 
+1.52 1 1.63 1 1.63 1.02 S
+707.92 3687.96 11.43 0 0 -21.12 1.54 1.82 1.52 1.48 1.52 1.13 1.5 0.87 1.54 0.59 
+1.57 0.39 3.29 0.29 2.87 -0.33 3.04 -0.99 3.04 -1.72 1.46 -1.13 1.41 -1.32 1.3 -1.52 
+1.21 -1.69 1.06 -1.91 0.93 -2.13 0.76 -2.32 0.56 -2.54 0.38 -2.78 0.11 -2.97 -11.29 0 
+-0.21 2.85 -0.61 2.62 -0.93 2.32 -1.22 2 -1.43 1.64 -1.61 1.22 -1.71 0.76 -1.78 0.26 
+-1.73 -0.21 -1.74 -0.7 -1.65 -1.13 -1.49 -1.57 -1.3 -1.95 -1 -2.34 -0.66 -2.71 -0.24 -3.06 
+0.18 -2.61 0.49 -2.52 0.8 -2.32 1.09 -2.11 1.41 -1.76 1.67 -1.35 1.96 -0.87 2.21 -0.32 
+1.69 0.24 1.67 0.67 1.61 1.13 1.45 1.54 1.26 1.96 0.98 2.38 0.63 2.76 0.21 3.16 
+11.29 0 -0.09 -2.67 -0.28 -2.52 -0.46 -2.38 -0.63 -2.26 -0.78 -2.08 -0.93 -1.93 -1.08 -1.76 
+-1.2 -1.61 -1.33 -1.43 -1.45 -1.25 -1.55 -1.09 -1.62 -0.89 -1.73 -0.72 -1.78 -0.49 -1.87 -0.31 
+-1.93 -0.11 -2.87 0.16 -1.52 0.34 -1.56 0.57 -1.57 0.82 -1.52 1.1 -1.48 1.43 -1.39 1.82 
+0 -4.32 -11.43 0 0 59.48 f*
+795.42 3656.29 -11 0 -0.54 2.13 -0.72 1.75 -0.85 1.39 -1 1.08 -1.09 0.79 -1.17 0.5 
+-1.23 0.3 -1.28 0.09 -1.93 -0.19 -1.8 -0.57 -1.61 -0.97 -1.41 -1.46 -1.15 -1.93 -0.87 -2.47 
+-0.54 -3.04 -0.2 -3.64 0.2 -3.64 0.54 -3.04 0.87 -2.48 1.15 -1.95 1.41 -1.43 1.61 -1 
+1.8 -0.56 1.93 -0.17 1.28 0.09 1.23 0.28 1.17 0.52 1.09 0.78 1 1.07 0.85 1.41 
+0.72 1.73 0.54 2.15 11 0 -0.65 -3.8 -1.26 -3.36 -1.8 -2.91 -2.28 -2.43 -2.72 -1.91 
+-3.07 -1.41 -3.41 -0.84 -3.69 -0.29 -2.64 0.11 -2.48 0.34 -2.26 0.57 -2.08 0.78 -1.91 0.98 
+-1.71 1.15 -1.54 1.32 -1.35 1.5 -1.19 1.63 -1.02 1.8 -0.84 1.91 -0.7 2.02 -0.92 4.38 
+-0.3 4.71 0.3 4.71 0.92 4.37 0.7 2.04 0.84 1.91 1.02 1.78 1.19 1.65 1.35 1.49 
+1.54 1.33 1.71 1.15 1.91 0.97 2.08 0.76 2.26 0.59 2.48 0.34 2.64 0.11 3.69 -0.29 
+3.41 -0.87 3.07 -1.39 2.72 -1.93 2.28 -2.41 1.8 -2.9 1.26 -3.37 0.65 -3.8 f*
+840.71 3656.29 -10.98 0 -0.55 2.13 -0.71 1.75 -0.87 1.39 -0.98 1.08 -1.11 0.79 -1.17 0.5 
+-1.24 0.3 -1.25 0.09 -1.96 -0.19 -1.8 -0.57 -1.61 -0.97 -1.41 -1.46 -1.15 -1.93 -0.85 -2.47 
+-0.54 -3.04 -0.19 -3.64 0.19 -3.64 0.54 -3.04 0.85 -2.48 1.15 -1.95 1.41 -1.43 1.61 -1 
+1.8 -0.56 1.96 -0.17 1.25 0.09 1.24 0.28 1.17 0.52 1.11 0.78 0.98 1.07 0.87 1.41 
+0.71 1.73 0.55 2.15 10.98 0 -0.65 -3.8 -1.26 -3.36 -1.78 -2.91 -2.28 -2.43 -2.71 -1.91 
+-3.11 -1.41 -3.41 -0.84 -3.67 -0.29 -2.67 0.11 -2.45 0.34 -2.28 0.57 -2.09 0.78 -1.89 0.98 
+-1.72 1.15 -1.54 1.32 -1.37 1.5 -1.19 1.63 -1 1.8 -0.87 1.91 -0.7 2.02 -0.91 4.38 
+-0.29 4.71 0.29 4.71 0.91 4.37 0.7 2.04 0.87 1.91 1 1.78 1.19 1.65 1.37 1.49 
+1.54 1.33 1.72 1.15 1.89 0.97 2.09 0.76 2.28 0.59 2.45 0.34 2.67 0.11 3.67 -0.29 
+3.41 -0.87 3.11 -1.39 2.71 -1.93 2.28 -2.41 1.78 -2.9 1.26 -3.37 0.65 -3.8 f*
+845.617 3645.73 22.1328 11 re
+f*
+913.04 3656.29 -10.98 0 -0.55 2.13 -0.71 1.75 -0.87 1.39 -0.98 1.08 -1.11 0.79 -1.18 0.5 
+-1.23 0.3 -1.26 0.09 -1.95 -0.19 -1.79 -0.57 -1.63 -0.97 -1.39 -1.46 -1.15 -1.93 -0.87 -2.47 
+-0.55 -3.04 -0.19 -3.64 0.19 -3.64 0.55 -3.04 0.87 -2.48 1.15 -1.95 1.39 -1.43 1.63 -1 
+1.79 -0.56 1.95 -0.17 1.26 0.09 1.23 0.28 1.18 0.52 1.11 0.78 0.98 1.07 0.87 1.41 
+0.71 1.73 0.55 2.15 10.98 0 -0.65 -3.8 -1.26 -3.36 -1.78 -2.91 -2.29 -2.43 -2.71 -1.91 
+-3.1 -1.41 -3.41 -0.84 -3.67 -0.29 -2.67 0.11 -2.45 0.34 -2.28 0.57 -2.09 0.78 -1.89 0.98 
+-1.71 1.15 -1.55 1.32 -1.37 1.5 -1.17 1.63 -1.02 1.8 -0.87 1.91 -0.7 2.02 -0.89 4.38 
+-0.3 4.71 0.3 4.71 0.89 4.37 0.7 2.04 0.87 1.91 1.02 1.78 1.17 1.65 1.37 1.49 
+1.55 1.33 1.71 1.15 1.89 0.97 2.09 0.76 2.28 0.59 2.45 0.34 2.67 0.11 3.67 -0.29 
+3.41 -0.87 3.1 -1.39 2.71 -1.93 2.29 -2.41 1.78 -2.9 1.26 -3.37 0.65 -3.8 f*
+957.01 3658.53 -10.98 0 -0.15 1.43 -0.43 1.24 -0.67 1.04 -0.93 0.83 -1.2 0.61 -1.39 0.46 
+-1.61 0.26 -1.8 0.08 -1.56 -0.11 -1.37 -0.26 -1.15 -0.43 -0.93 -0.54 -0.74 -0.67 -0.52 -0.76 
+-0.3 -0.82 -0.11 -0.87 0.05 -0.83 0.33 -0.71 0.67 -0.56 1.04 -0.41 15.61 -4.62 2.19 -0.74 
+1.91 -0.91 1.65 -1.11 1.32 -1.28 1.07 -1.48 0.76 -1.69 0.46 -1.93 0.15 -2.17 -0.3 -3.12 
+-0.89 -2.87 -1.49 -2.54 -2.09 -2.21 -2.69 -1.8 -3.26 -1.35 -3.86 -0.85 -4.43 -0.28 -3.12 0.09 
+-2.82 0.28 -2.52 0.41 -2.24 0.58 -1.97 0.7 -1.71 0.83 -1.47 0.93 -1.26 1.02 -1.06 1.09 
+-0.87 1.18 -1.21 2.43 -0.66 2.54 -0.17 2.52 11.13 0 0.41 -1.61 0.7 -1.28 0.91 -1 
+1.13 -0.71 1.29 -0.5 1.43 -0.28 3.21 -0.14 3.25 0.24 1.43 0.3 1.25 0.43 1.05 0.61 
+0.78 0.74 0.52 0.91 0.17 1.09 -0.26 1.19 -0.84 0.98 -1.61 0.91 -2.5 0.93 -15.15 4.75 
+-1.87 0.76 -1.52 1.02 -1.2 1.2 -0.89 1.34 -0.65 1.43 -0.42 1.45 -0.3 2.76 0.11 1.71 
+0.29 1.61 0.48 1.52 0.65 1.43 1.76 2.52 2.32 2.11 2.75 1.64 3.13 1.22 3.39 0.71 
+3.55 0.26 3.41 -0.21 3.37 -0.68 3.17 -1.11 2.89 -1.59 2.45 -2.09 1.04 -1.21 0.87 -1.35 
+0.71 -1.47 0.52 -1.59 0.32 -1.74 0.11 -1.84 f*
+965.93 3672.35 11.44 0 0 -5.51 2.69 2.91 1.39 1.13 1.45 0.91 1.54 0.71 1.63 0.5 
+1.74 0.28 1.89 0.11 1.54 -0.09 1.58 -0.28 1.58 -0.5 1.59 -0.67 1.5 -0.91 1.41 -1.13 
+1.28 -1.37 1.11 -1.61 2.76 2.84 1.47 1.13 1.54 0.93 1.61 0.71 1.69 0.52 1.8 0.3 
+1.88 0.11 2.41 -0.17 2.43 -0.52 2.37 -0.89 2.19 -1.29 1.89 -1.69 1.49 -2.11 0.98 -2.54 
+0.26 -1.43 0.08 -1.56 0 -32.73 -11.43 0 0 30.19 -0.17 1.13 -0.42 0.98 -0.61 0.87 
+-0.76 0.74 -1.89 1 -2.08 0.35 -1.37 -0.13 -1.37 -0.41 -1.32 -0.65 -1.21 -0.89 -1.06 -1.15 
+-0.83 -1.34 -0.52 -1.55 -0.2 -1.75 0 -27.37 -11.74 0 0 30.19 -0.13 1.13 -0.35 0.98 
+-0.58 0.87 -0.74 0.74 -0.89 0.59 -1 0.41 -2.25 0.35 -1.3 -0.19 -1.37 -0.46 -1.32 -0.71 
+-1.21 -0.96 -1.06 -1.13 -0.84 -1.33 -0.54 -1.47 -0.2 -1.62 0 -27.37 -11.44 0 0 44.03 
+0 -0.15 f*
+1056.82 3686.48 7.44 0 0 -58 -11.43 0 0 39.87 -13.67 0 0 7.57 3.23 0.09 
+2.88 0.32 2.59 0.59 2.3 0.93 2.05 1.37 1.75 1.84 1.54 2.41 1.33 3.02 f*
+1080.88 3645.73 22.1328 11 re
+f*
+1129.14 3686.48 7.45 0 0 -58 -11.44 0 0 39.87 -13.67 0 0 7.57 3.23 0.09 
+2.89 0.32 2.58 0.59 2.3 0.93 2.04 1.37 1.75 1.84 1.54 2.41 1.32 3.02 f*
+Q q
+1829.62 2270.03 1296.25 1297.98 re
+Y*
+255 G
+1829.88 2896.68 0 -30.99 1.06 -13.08 3.28 -26.58 4.41 -26.59 5.53 -26.56 6.71 -26.56 3.23 -11.42 
+4.69 -15.19 9.16 -26.56 10.48 -26.57 2.21 -5.21 9.66 -21.37 13.32 -26.56 3.56 -6.6 11.37 -19.98 
+7.57 -12.18 7.57 -12.15 1.48 -2.26 9.24 -13.28 9.22 -13.26 6.62 -8.87 13.95 -17.71 12.57 -14.95 
+10.35 -11.63 16.19 -17.19 9.4 -9.39 8.57 -8.09 8.57 -8.12 11.61 -10.35 14.93 -12.59 17.71 -13.98 
+8.85 -6.62 13.24 -9.24 13.26 -9.25 2.26 -1.5 12.13 -7.57 12.15 -7.6 19.97 -11.37 6.59 -3.56 
+13.26 -6.68 13.26 -6.66 10.68 -4.84 10.66 -4.84 5.23 -2.22 26.52 -10.5 13.26 -4.58 13.26 -4.61 
+15.19 -4.68 11.37 -3.23 13.29 -3.37 13.26 -3.36 13.26 -2.75 13.28 -2.78 26.52 -4.38 26.57 -3.3 
+8.12 -0.65 4.96 -0.42 30.77 0 -0.15 0 -11.3 0.5 -11.29 0.7 -11.28 0.89 -11.26 1.09 
+-11.25 1.28 -11.21 1.48 -11.18 1.68 -11.18 1.86 -11.11 2.08 -11.09 2.26 -11.04 2.45 -11 2.63 
+-10.96 2.84 -10.89 3.04 -10.85 3.21 -10.78 3.41 -10.75 3.6 -10.65 3.78 -10.61 3.97 -10.5 4.14 
+-10.46 4.34 -10.37 4.52 -10.3 4.68 -10.2 4.88 -10.13 5.05 -10.03 5.23 -9.96 5.4 -9.84 5.58 
+-9.74 5.75 -9.66 5.93 -9.55 6.1 -9.42 6.25 -9.33 6.4 -9.2 6.59 -9.09 6.73 -8.98 6.91 
+-8.86 7.05 -8.72 7.2 -8.62 7.36 -8.46 7.51 -8.36 7.66 -8.2 7.79 -8.08 7.95 -7.92 8.07 
+-7.79 8.22 -7.64 8.36 -7.5 8.49 -7.34 8.61 -7.2 8.75 -7.03 8.85 -6.9 8.98 -6.73 9.12 
+-6.58 9.22 -6.4 9.34 -6.25 9.44 -6.07 9.57 -5.9 9.66 -5.75 9.77 -5.57 9.85 -5.38 9.96 
+-5.23 10.05 -5.05 10.13 -4.86 10.22 -4.69 10.3 -4.51 10.4 -4.34 10.45 -4.14 10.55 -3.95 10.61 
+-3.78 10.68 -3.6 10.74 -3.41 10.81 -3.21 10.87 -3.02 10.92 -2.84 10.95 -2.62 11.03 -2.46 11.07 
+-2.25 11.09 -2.06 11.13 -1.87 11.18 -1.67 11.21 -1.47 11.22 -1.28 11.26 -1.09 11.29 -0.89 11.28 
+-0.7 11.31 -0.5 11.33 0 0.3 f*
+1829.88 2906.6 0 -10.22 0.5 -11.33 0.7 -11.31 0.89 -11.28 1.09 -11.29 1.28 -11.26 1.47 -11.22 
+1.67 -11.21 1.87 -11.18 2.06 -11.13 2.25 -11.09 2.46 -11.07 2.62 -11.03 2.84 -10.95 3.02 -10.92 
+3.21 -10.87 3.41 -10.81 3.6 -10.74 3.78 -10.68 3.95 -10.61 4.14 -10.55 4.34 -10.45 4.51 -10.4 
+4.69 -10.3 4.86 -10.22 5.05 -10.13 5.23 -10.05 5.38 -9.96 5.57 -9.85 5.75 -9.77 5.9 -9.66 
+6.07 -9.57 6.25 -9.44 6.4 -9.34 6.58 -9.22 6.73 -9.12 6.9 -8.98 7.03 -8.85 7.2 -8.75 
+7.34 -8.61 7.5 -8.49 7.64 -8.36 7.79 -8.22 7.92 -8.07 8.08 -7.95 8.2 -7.79 8.36 -7.66 
+8.46 -7.51 8.62 -7.36 8.72 -7.2 8.86 -7.05 8.98 -6.91 9.09 -6.73 9.2 -6.59 9.33 -6.4 
+9.42 -6.25 9.55 -6.1 9.66 -5.93 9.74 -5.75 9.84 -5.58 9.96 -5.4 10.03 -5.23 10.13 -5.05 
+10.2 -4.88 10.3 -4.68 10.38 -4.52 10.46 -4.34 10.5 -4.14 10.61 -3.97 10.65 -3.78 10.75 -3.6 
+10.78 -3.41 10.85 -3.21 10.89 -3.04 10.96 -2.84 11 -2.63 11.04 -2.45 11.09 -2.26 11.11 -2.08 
+11.18 -1.86 11.18 -1.68 11.21 -1.48 11.25 -1.28 11.26 -1.09 11.28 -0.89 11.29 -0.7 11.3 -0.5 
+10.05 0 -10.05 0.26 -11.28 0.5 -11.29 0.7 -11.29 0.89 -11.26 1.09 -11.22 1.28 -11.22 1.48 
+-11.18 1.67 -11.16 1.87 -11.13 2.06 -11.09 2.26 -11.02 2.45 -11 2.65 -10.96 2.84 -10.89 3.02 
+-10.85 3.21 -10.77 3.41 -10.74 3.6 -10.66 3.78 -10.59 3.97 -10.52 4.14 -10.44 4.34 -10.37 4.52 
+-10.31 4.68 -10.2 4.88 -10.11 5.05 -10.05 5.23 -9.94 5.4 -9.83 5.58 -9.74 5.75 -9.66 5.91 
+-9.53 6.08 -9.44 6.27 -9.31 6.4 -9.2 6.58 -9.09 6.75 -8.98 6.88 -8.86 7.05 -8.72 7.21 
+-8.59 7.36 -8.47 7.51 -8.36 7.64 -8.2 7.81 -8.05 7.92 -7.95 8.07 -7.77 8.23 -7.64 8.35 
+-7.5 8.49 -7.34 8.59 -7.2 8.75 -7.04 8.86 -6.87 9 -6.73 9.09 -6.58 9.23 -6.4 9.33 
+-6.25 9.44 -6.08 9.55 -5.9 9.66 -5.73 9.76 -5.58 9.86 -5.4 9.94 -5.21 10.04 -5.06 10.14 
+-4.86 10.22 -4.69 10.31 -4.51 10.39 -4.34 10.46 -4.14 10.52 -3.95 10.62 -3.78 10.67 -3.61 10.75 
+-3.39 10.8 -3.21 10.85 -3.04 10.91 -2.82 10.96 -2.64 11.02 -2.43 11.05 -2.25 11.09 -2.06 11.13 
+-1.87 11.17 -1.67 11.2 -1.47 11.24 -1.28 11.25 -1.09 11.28 -0.89 11.29 -0.7 11.3 -0.5 11.31 
+-0.26 10.22 f*
+1829.88 2931.45 0 -24.84 0.26 -10.22 0.5 -11.31 0.7 -11.3 0.89 -11.29 1.09 -11.28 1.28 -11.25 
+1.47 -11.24 1.67 -11.2 1.87 -11.17 2.06 -11.13 2.25 -11.09 2.43 -11.05 2.64 -11.02 2.82 -10.96 
+3.04 -10.91 3.21 -10.85 3.39 -10.8 3.61 -10.75 3.78 -10.67 3.95 -10.62 4.14 -10.52 4.34 -10.46 
+4.51 -10.39 4.69 -10.31 4.86 -10.22 5.06 -10.14 5.21 -10.04 5.4 -9.94 5.58 -9.86 5.73 -9.76 
+5.9 -9.66 6.08 -9.55 6.25 -9.44 6.4 -9.33 6.58 -9.23 6.73 -9.09 6.88 -9 7.04 -8.86 
+7.2 -8.75 7.34 -8.59 7.5 -8.49 7.64 -8.35 7.77 -8.23 7.95 -8.07 8.05 -7.92 8.2 -7.81 
+8.36 -7.64 8.47 -7.51 8.59 -7.36 8.72 -7.21 8.86 -7.05 8.98 -6.88 9.09 -6.75 9.2 -6.58 
+9.31 -6.4 9.44 -6.27 9.53 -6.08 9.66 -5.91 9.74 -5.75 9.83 -5.58 9.94 -5.4 10.05 -5.23 
+10.11 -5.05 10.2 -4.88 10.31 -4.68 10.37 -4.52 10.44 -4.34 10.52 -4.14 10.59 -3.97 10.66 -3.78 
+10.74 -3.6 10.77 -3.41 10.85 -3.21 10.89 -3.02 10.96 -2.84 11 -2.65 11.02 -2.45 11.09 -2.26 
+11.13 -2.06 11.16 -1.87 11.18 -1.67 11.22 -1.48 11.22 -1.28 11.26 -1.09 11.29 -0.89 11.29 -0.7 
+11.28 -0.5 10.05 -0.26 25.15 0 10.05 0.26 11.29 0.5 11.28 0.7 11.29 0.89 11.27 1.09 
+11.24 1.28 11.2 1.48 11.19 1.67 11.16 1.87 11.11 2.06 11.09 2.26 11.05 2.45 10.98 2.65 
+10.96 2.84 10.89 3.02 10.85 3.21 10.79 3.41 10.72 3.6 10.66 3.78 10.59 3.97 10.53 4.14 
+10.43 4.34 10.38 4.52 10.3 4.68 10.2 4.88 10.11 5.05 10.05 5.23 9.94 5.4 9.83 5.58 
+9.74 5.75 9.66 5.91 9.53 6.08 9.44 6.27 9.31 6.4 9.2 6.58 9.09 6.75 8.98 6.88 
+8.85 7.05 8.73 7.21 8.59 7.36 8.46 7.51 8.36 7.64 8.21 7.81 8.05 7.92 7.94 8.07 
+7.77 8.23 7.64 8.35 7.5 8.49 7.34 8.59 7.21 8.75 7.03 8.86 6.88 9 6.72 9.09 
+6.58 9.23 6.4 9.33 6.25 9.44 6.08 9.55 5.91 9.66 5.75 9.76 5.55 9.86 5.4 9.94 
+5.21 10.04 5.05 10.14 4.86 10.22 4.69 10.31 4.51 10.39 4.35 10.46 4.14 10.52 3.95 10.62 
+3.77 10.67 3.61 10.75 3.38 10.8 3.21 10.85 3.04 10.91 2.82 10.96 2.65 11.02 2.43 11.05 
+2.25 11.09 2.06 11.13 1.87 11.17 1.67 11.2 1.48 11.24 1.28 11.25 1.09 11.28 0.89 11.29 
+0.7 11.3 0.49 11.31 0.26 10.22 0 24.84 -0.26 10.22 -0.49 11.3 -0.7 11.3 -0.89 11.29 
+-1.09 11.29 -1.28 11.24 -1.48 11.24 -1.67 11.2 -1.87 11.18 -2.06 11.13 -2.25 11.09 -2.43 11.07 
+-2.65 11 -2.82 10.96 -3.04 10.91 -3.21 10.85 -3.38 10.81 -3.61 10.74 -3.77 10.68 -3.95 10.61 
+-4.14 10.53 -4.35 10.46 -4.51 10.39 -4.69 10.3 -4.86 10.22 -5.05 10.13 -5.21 10.05 -5.4 9.94 
+-5.55 9.85 -5.75 9.77 -5.91 9.66 -6.08 9.55 -6.25 9.44 -6.4 9.33 -6.58 9.22 -6.72 9.12 
+-6.88 8.98 -7.03 8.86 -7.21 8.74 -7.34 8.62 -7.5 8.46 -7.64 8.36 -7.77 8.23 -7.94 8.07 
+-8.05 7.94 -8.21 7.79 -3.47 3.17 2.41 -2.54 1.88 -1.63 11.33 -11.74 11.34 -11.72 11.33 -11.74 
+11.33 -11.72 3.9 -5.08 5.14 -5.41 13.15 -17.51 13.17 -17.52 13.13 -17.49 -12.12 15.76 -12.11 15.73 
+-12.13 15.76 P
+-8.22 10.68 -6.66 6.98 -35.42 37.18 -9.03 9.46 -8.99 7.9 -2.49 2.19 -5.06 4.17 -13.76 11.31 
+-11.59 9.52 -0.89 0.68 -12.08 8.77 -12.07 8.79 -9.81 7.14 -6.08 3.93 -12.5 8.12 -12.5 8.09 
+-6.03 3.93 -1.26 0.74 -9.14 5.46 -7.81 4.04 -11.74 6.05 -11.76 6.05 -11.74 6.06 13.39 -6.81 
+13.39 -6.84 13.41 -6.83 2.86 -1.72 3.8 -1.95 -6.27 3.54 -9.94 5.41 -10.05 5.23 -10.11 5.05 
+-10.2 4.88 -10.3 4.69 -10.38 4.52 -10.43 4.34 -10.53 4.14 -10.59 3.97 -10.66 3.77 -10.72 3.61 
+-10.79 3.41 -10.85 3.21 -10.89 3.02 -10.96 2.84 -10.98 2.65 -11.05 2.45 -11.09 2.25 -11.11 2.06 
+-11.16 1.87 -11.19 1.67 -11.2 1.48 -11.24 1.3 -11.27 1.06 -11.29 0.89 -11.28 0.7 -11.29 0.49 
+-10.05 0.26 -25.15 0 -0.61 -0.02 0 -1.9 26.37 0 13.19 -0.55 13.17 -0.54 13.2 -1.09 
+13.2 -1.06 13.17 -1.65 13.17 -1.62 13.2 -2.17 3.15 -0.52 10.05 -1.67 13.18 -2.75 13.2 -2.76 
+13.2 -3.34 13.2 -3.32 11.26 -3.21 7.53 -2.35 7.54 -2.32 13.2 -4.55 13.2 -4.58 5.6 -2.22 
+7.59 -2.99 13.2 -5.23 5.12 -2.17 10.61 -4.82 10.61 -4.79 26.39 -13.29 6.49 -3.52 9.94 -5.66 
+9.92 -5.67 12.11 -7.55 12.09 -7.55 2.17 -1.41 13.2 -9.2 13.19 -9.22 8.75 -6.54 8.81 -6.96 
+8.81 -6.95 7.42 -6.25 7.4 -6.25 11.54 -10.28 8.54 -8.07 8.53 -8.05 9.31 -9.33 1.15 -1.22 
+6.9 -7.33 8.05 -8.53 10.27 -11.54 12.5 -14.84 13.89 -17.67 6.53 -8.75 9.21 -13.21 9.18 -13.22 
+1.43 -2.17 3.88 -6.23 3.64 -5.88 2.96 -4.71 4.6 -7.4 1.5 -2.65 9.81 -17.23 3.49 -6.51 
+13.26 -26.43 9.62 -21.24 2.17 -5.12 10.43 -26.43 9.11 -26.41 4.64 -15.1 3.21 -11.29 6.66 -26.41 
+5.49 -26.41 4.38 -26.41 3.23 -26.39 2.17 -26.41 1.09 -26.41 0 -26.41 -1.09 -26.39 -2.17 -26.43 
+-3.23 -26.39 -4.38 -26.41 -5.49 -26.41 -6.66 -26.41 -3.21 -11.28 -4.64 -15.11 -9.11 -26.41 -10.43 -26.43 
+-2.17 -5.12 -9.62 -21.25 -13.26 -26.43 -3.49 -6.49 -11.31 -19.9 -7.55 -12.11 -7.53 -12.11 -1.43 -2.17 
+-9.2 -13.21 -9.18 -13.22 -6.53 -8.74 -13.89 -17.67 -12.5 -14.84 -10.27 -11.55 -8.05 -8.53 -8.05 -8.55 
+-9.31 -9.33 -8.53 -8.05 -8.54 -8.07 -11.54 -10.27 -7.4 -6.27 -7.42 -6.25 -8.81 -6.95 -8.81 -6.96 
+-8.75 -6.54 -13.19 -9.22 -13.2 -9.2 -2.17 -1.41 -12.09 -7.55 -12.11 -7.55 -9.92 -5.66 -9.94 -5.66 
+-6.49 -3.51 -26.39 -13.29 -10.61 -4.79 -10.61 -4.82 -5.12 -2.17 -13.2 -5.23 -13.19 -5.2 -13.2 -4.58 
+-13.2 -4.56 -15.06 -4.64 -11.26 -3.23 -13.2 -3.32 -13.2 -3.34 -13.2 -2.75 -13.18 -2.76 -13.2 -2.2 
+-13.2 -2.16 -26.34 -3.26 -26.39 -2.17 -13.17 -0.54 -13.19 -0.54 -26.37 0 -13.2 0.54 -13.17 0.54 
+-13.2 1.09 -13.17 1.08 -13.2 1.63 -13.17 1.63 -13.2 2.16 -13.2 2.2 -13.17 2.76 -13.19 2.75 
+-13.2 3.34 -13.2 3.32 -11.27 3.23 -15.06 4.64 -13.2 4.56 -13.19 4.58 -13.2 5.2 -13.2 5.23 
+-5.12 2.17 -10.62 4.82 -10.61 4.79 -26.39 13.29 -6.49 3.51 -9.94 5.66 -9.92 5.66 -12.11 7.55 
+-12.09 7.55 -2.17 1.41 -13.2 9.22 -13.19 9.2 -8.75 6.54 -8.81 6.96 -8.81 6.95 -7.42 6.27 
+-7.4 6.25 -11.54 10.27 -8.53 8.07 -8.51 8.05 -9.33 9.33 -8.05 8.55 -8.05 8.53 -10.26 11.55 
+-12.5 14.84 p
+-13.89 17.67 -6.54 8.74 -9.18 13.22 -9.2 13.21 -1.43 2.17 -7.53 12.11 -7.55 12.11 -11.31 19.9 
+-3.5 6.49 -13.25 26.43 -9.62 21.25 -2.17 5.12 -10.44 26.43 -9.12 26.41 -4.64 15.11 -3.21 11.28 
+-6.66 26.41 -5.49 26.41 -4.38 26.41 -3.24 26.39 -2.17 26.43 -1.08 26.39 0 26.41 1.08 26.41 
+2.17 26.41 3.24 26.39 4.38 26.41 5.49 26.41 6.66 26.41 3.21 11.29 4.64 15.1 9.12 26.41 
+10.44 26.43 2.17 5.13 9.62 21.24 13.25 26.43 3.5 6.51 11.31 19.88 7.55 12.11 7.53 12.11 
+1.43 2.17 9.2 13.22 9.18 13.21 6.54 8.75 13.89 17.67 12.5 14.84 10.26 11.54 8.05 8.53 
+8.05 8.55 9.33 9.33 8.51 8.05 8.53 8.07 6.45 5.73 5.1 4.55 7.4 6.25 7.42 6.25 
+8.81 6.95 8.81 6.96 8.75 6.54 13.19 9.22 13.2 9.2 2.17 1.41 12.11 7.58 12.09 7.53 
+9.92 5.67 9.48 5.4 0.45 0.26 6.49 3.52 26.39 13.29 10.61 4.79 10.62 4.82 5.12 2.17 
+13.2 5.23 13.2 5.21 13.19 4.58 13.2 4.55 7.54 2.32 7.53 2.35 11.27 3.21 13.22 3.34 
+13.17 3.32 13.19 2.76 13.17 2.75 13.2 2.19 13.2 2.17 2.41 0.3 10.77 1.35 13.2 1.63 
+13.17 1.06 13.2 1.09 13.2 0.54 13.17 0.55 0 1.9 -9.44 -0.24 -11.28 -0.49 -11.29 -0.7 
+-11.29 -0.89 -11.26 -1.06 -11.22 -1.3 -11.22 -1.48 -11.18 -1.67 -11.16 -1.87 -11.13 -2.06 -11.09 -2.25 
+-11.02 -2.45 -11 -2.65 -10.96 -2.84 -10.89 -3.02 -10.85 -3.21 -10.77 -3.41 -10.74 -3.61 -10.66 -3.77 
+-10.59 -3.97 -10.52 -4.14 -10.44 -4.34 -10.37 -4.52 -10.31 -4.69 -10.2 -4.88 -10.11 -5.05 -10.05 -5.23 
+-9.94 -5.41 -9.83 -5.56 -9.74 -5.75 -9.66 -5.92 -9.53 -6.07 -9.44 -6.27 -9.31 -6.4 -9.2 -6.58 
+-9.09 -6.75 -8.98 -6.87 -8.86 -7.05 -8.72 -7.2 -8.59 -7.36 -8.47 -7.51 -8.36 -7.64 -8.2 -7.79 
+-8.05 -7.94 -7.95 -8.07 -7.77 -8.23 -7.64 -8.36 -7.5 -8.46 -7.34 -8.62 -7.2 -8.74 -7.04 -8.86 
+-6.87 -8.98 -6.73 -9.12 -6.58 -9.22 -6.4 -9.33 -6.25 -9.44 -6.08 -9.55 -5.9 -9.66 -5.73 -9.77 
+-5.58 -9.85 -5.4 -9.94 -5.21 -10.05 -5.06 -10.13 -4.86 -10.22 -4.69 -10.3 -4.51 -10.39 -4.34 -10.46 
+-4.14 -10.53 -3.95 -10.61 -3.78 -10.68 -3.61 -10.74 -3.39 -10.81 -3.21 -10.85 -3.04 -10.91 -2.82 -10.96 
+-2.64 -11 -2.43 -11.07 -2.25 -11.09 -2.06 -11.13 -1.87 -11.18 -1.67 -11.2 -1.47 -11.24 -1.28 -11.24 
+-1.09 -11.29 -0.89 -11.29 -0.7 -11.3 -0.5 -11.3 -0.26 -10.22 p f*
+1829.88 2941.36 0 -9.91 0.26 10.22 0.5 11.3 0.7 11.3 0.89 11.29 1.09 11.29 1.28 11.24 
+1.47 11.24 1.67 11.2 1.87 11.18 2.06 11.13 2.25 11.09 2.43 11.07 2.64 11 2.82 10.96 
+3.04 10.91 3.21 10.85 3.39 10.81 3.61 10.74 3.78 10.68 3.95 10.61 4.14 10.53 4.34 10.46 
+4.51 10.39 4.69 10.3 4.86 10.22 5.06 10.13 5.21 10.05 5.4 9.94 5.58 9.85 5.73 9.77 
+5.9 9.66 6.08 9.55 6.25 9.44 6.4 9.33 6.58 9.22 6.73 9.12 6.88 8.98 7.04 8.86 
+7.2 8.74 7.34 8.62 7.5 8.46 7.64 8.36 7.77 8.23 7.95 8.07 8.05 7.94 8.2 7.79 
+8.36 7.64 8.47 7.51 8.59 7.36 8.72 7.2 8.86 7.05 8.98 6.88 9.09 6.75 9.2 6.58 
+9.31 6.4 9.44 6.27 9.53 6.07 9.66 5.92 9.74 5.75 9.83 5.56 9.94 5.41 10.05 5.23 
+10.11 5.05 10.2 4.88 10.31 4.69 10.37 4.52 10.44 4.34 10.52 4.14 10.59 3.97 10.66 3.77 
+10.74 3.61 10.77 3.41 10.85 3.21 10.89 3.02 10.96 2.84 11 2.65 11.02 2.45 11.09 2.25 
+11.13 2.06 11.16 1.87 11.18 1.67 11.22 1.48 11.22 1.3 11.26 1.06 11.29 0.89 11.29 0.7 
+11.28 0.49 9.44 0.24 0.61 0.02 -10.05 0 -11.3 -0.5 -11.29 -0.7 -11.28 -0.89 -11.26 -1.09 
+-11.25 -1.28 -11.21 -1.48 -11.18 -1.67 -11.18 -1.87 -11.11 -2.06 -11.09 -2.25 -11.04 -2.46 -11 -2.64 
+-10.96 -2.84 -10.89 -3.02 -10.85 -3.23 -10.78 -3.41 -10.75 -3.58 -10.65 -3.79 -10.61 -3.95 -10.5 -4.16 
+-10.46 -4.34 -10.37 -4.52 -10.3 -4.69 -10.2 -4.88 -10.13 -5.05 -10.03 -5.23 -9.96 -5.41 -9.84 -5.58 
+-9.74 -5.75 -9.66 -5.92 -9.55 -6.08 -9.42 -6.27 -9.33 -6.4 -9.2 -6.58 -9.09 -6.75 -8.98 -6.9 
+-8.86 -7.05 -8.72 -7.21 -8.62 -7.36 -8.46 -7.51 -8.36 -7.64 -8.2 -7.81 -8.08 -7.95 -7.92 -8.07 
+-7.79 -8.23 -7.64 -8.36 -7.5 -8.48 -7.34 -8.62 -7.2 -8.75 -7.03 -8.86 -6.9 -8.98 -6.73 -9.11 
+-6.58 -9.23 -6.4 -9.33 -6.25 -9.45 -6.07 -9.57 -5.9 -9.66 -5.75 -9.77 -5.57 -9.86 -5.38 -9.96 
+-5.23 -10.05 -5.05 -10.13 -4.86 -10.22 -4.69 -10.31 -4.51 -10.39 -4.34 -10.46 -4.14 -10.55 -3.95 -10.61 
+-3.78 -10.68 -3.6 -10.74 -3.41 -10.8 -3.21 -10.87 -3.02 -10.91 -2.84 -10.96 -2.62 -11.02 -2.46 -11.04 
+-2.25 -11.11 -2.06 -11.13 -1.87 -11.18 -1.67 -11.21 -1.47 -11.22 -1.28 -11.26 -1.09 -11.27 -0.89 -11.3 
+-0.7 -11.3 -0.5 -11.33 0 -0.31 f*
+1829.88 2972.35 0 -30.99 0 0.31 0.5 11.33 0.7 11.3 0.89 11.3 1.09 11.27 1.28 11.26 
+1.47 11.22 1.67 11.21 1.87 11.18 2.06 11.13 2.25 11.11 2.46 11.04 2.62 11.02 2.84 10.96 
+3.02 10.91 3.21 10.88 3.41 10.8 3.6 10.74 3.78 10.68 3.95 10.61 4.14 10.55 4.34 10.46 
+4.51 10.39 4.69 10.31 4.86 10.22 5.05 10.13 5.23 10.05 5.38 9.96 5.57 9.86 5.75 9.77 
+5.9 9.66 6.07 9.57 6.25 9.45 6.4 9.33 6.58 9.23 6.73 9.11 6.9 8.98 7.03 8.86 
+7.2 8.75 7.34 8.62 7.5 8.48 7.64 8.36 7.79 8.23 7.92 8.07 8.08 7.95 8.2 7.81 
+8.36 7.64 8.46 7.51 8.62 7.36 8.72 7.21 8.86 7.05 8.98 6.9 9.09 6.75 9.2 6.58 
+9.33 6.4 9.42 6.27 9.55 6.08 9.66 5.92 9.74 5.75 9.84 5.58 9.96 5.41 10.03 5.23 
+10.13 5.05 10.2 4.88 10.3 4.69 10.38 4.52 10.46 4.34 10.5 4.16 10.61 3.95 10.65 3.79 
+10.75 3.58 10.78 3.41 10.85 3.23 10.89 3.02 10.96 2.84 11 2.64 11.04 2.46 11.09 2.25 
+11.11 2.06 11.18 1.87 11.18 1.67 11.21 1.48 11.25 1.28 11.26 1.09 11.28 0.89 11.29 0.7 
+11.3 0.5 0.15 0 -30.8 0 -4.94 -0.39 -8.12 -0.67 -13.29 -1.65 -13.28 -1.63 -13.26 -2.21 
+-13.26 -2.2 -13.28 -2.78 -13.26 -2.75 -13.26 -3.36 -13.29 -3.36 -11.37 -3.23 -15.19 -4.69 -13.26 -4.57 
+-13.26 -4.6 -13.26 -5.25 -13.26 -5.23 -5.23 -2.23 -10.66 -4.84 -10.68 -4.82 -26.52 -13.37 -6.59 -3.55 
+-19.97 -11.37 -12.12 -7.59 -12.16 -7.58 -2.26 -1.5 -13.26 -9.24 -13.24 -9.25 -8.85 -6.62 -17.71 -13.97 
+-14.93 -12.59 -11.61 -10.35 -8.57 -8.1 -8.57 -8.12 -9.4 -9.4 -16.19 -17.18 -10.35 -11.63 -12.57 -14.96 
+-13.95 -17.7 -6.62 -8.86 -9.22 -13.28 -9.22 -13.26 -1.5 -2.28 -7.57 -12.16 -7.57 -12.17 -11.37 -19.99 
+-3.56 -6.6 -13.32 -26.57 -9.66 -21.35 -2.21 -5.23 -10.48 -26.56 -9.16 -26.56 -4.69 -15.2 -3.23 -11.41 
+-6.71 -26.57 -5.53 -26.56 -4.41 -26.56 -3.28 -26.58 -1.06 -13.11 f*
+1832.9 2879.43 -1.08 26.39 0 26.41 1.08 26.41 2.17 26.41 3.24 26.39 4.38 26.41 5.49 26.41 
+6.66 26.41 3.21 11.29 4.64 15.1 9.12 26.41 10.44 26.43 2.17 5.13 9.62 21.24 13.25 26.43 
+3.5 6.51 11.31 19.88 7.55 12.11 7.53 12.11 1.43 2.17 9.2 13.22 9.18 13.21 6.54 8.75 
+13.89 17.67 12.5 14.84 10.26 11.54 8.05 8.53 8.05 8.55 9.33 9.33 8.51 8.05 8.53 8.07 
+6.45 5.73 0 -233.89 -5.04 -5.64 1.06 -5.79 4.95 5.64 -0.98 5.79 0 233.89 5.1 4.55 
+7.4 6.25 7.42 6.25 8.81 6.95 8.81 6.96 8.75 6.54 13.19 9.22 13.2 9.2 2.17 1.41 
+12.11 7.58 12.09 7.53 9.92 5.67 9.48 5.4 0 -58.44 -7.03 -2.25 -11.32 -8.99 7.11 2.52 
+11.24 8.72 0 58.44 0.45 0.26 6.49 3.52 26.39 13.29 10.61 4.79 10.62 4.82 5.12 2.17 
+13.2 5.23 13.2 5.21 13.19 4.58 13.2 4.55 7.54 2.32 7.53 2.35 11.27 3.21 13.22 3.34 
+13.17 3.32 13.19 2.76 13.17 2.75 13.2 2.19 13.2 2.17 2.41 0.3 0 -139.3 -5.99 -1.87 
+-5.88 -2 1 -0.74 2.39 -1.8 -5.62 -1.99 -4.27 -1.63 -1.24 -0.5 0.61 -0.39 3.08 -2.02 
+-5.25 -2.13 -5.14 -2.21 -5.05 -2.3 -1.91 -0.89 -3.06 -1.48 0.96 -0.45 3.34 -1.65 2.45 1.2 
+2.34 1.08 2.95 -1.62 1.13 -0.63 2.32 -1.34 1.71 -0.98 -2.52 -1.15 -1.98 -0.96 -4.42 -2.16 
+-4.3 -2.24 -2.45 -1.32 -1.76 -0.98 0.76 -0.32 1.15 -0.52 2.3 -1 0.35 -0.17 -3.99 -2.26 
+-3.88 -2.34 -1.07 -0.65 -2.73 -1.74 -3.19 -2.11 -0.5 -0.34 -0.7 0.22 -0.76 0.26 -1.56 0.48 
+-0.78 0.25 -0.78 0.24 -0.5 0.16 -2 -1.41 -1.7 -1.22 -0.74 -0.52 -1.58 -1.17 -1.29 -0.96 
+-0.37 -0.28 -1.97 -1.52 -2.3 -1.82 -2.24 -1.84 -0.96 0.19 -2.3 0.43 -1.17 0.22 -1.11 0.21 
+-1 -0.87 -1.04 -0.89 -1.04 -0.91 -0.28 -0.24 -0.26 0.05 -5.1 0.76 -0.28 0.04 -3.32 -3.08 
+-0.3 -0.26 -2.91 -2.84 -3.69 0.35 -2.15 0.2 -1.61 -1.63 -1.56 -1.62 -2.62 0.13 -3.32 0.18 
+-3.08 -3.41 -6.04 0.09 -3.02 -3.56 -6.14 -0.13 -6.14 -0.24 -2.97 -3.82 -2.8 -3.84 -6.27 -0.59 
+-6.27 -0.71 -6.29 -0.8 -2.78 -4.21 -2.58 -4.23 -6.38 -1.15 -2.45 -4.34 -6.38 -1.41 -6.4 -1.49 
+-6.4 -1.65 -2.3 -4.67 -6.41 -1.87 -6.4 -2 -6.4 -2.12 -6.41 -2.23 -6.4 -2.39 -6.4 -2.49 
+-6.38 -2.63 -6.37 -2.75 -6.36 -2.91 -1.97 -5.61 -6.32 -3.13 -1.73 -5.66 -6.27 -3.37 -6.23 -3.5 
+-1.43 -5.81 -6.17 -3.71 -1.17 -5.82 -6.07 -3.93 -0.93 -5.84 -5.96 -4.14 -5.95 -4.28 -0.59 -5.9 
+-5.84 -4.47 -5.77 -4.58 -0.26 -5.95 -5.64 -4.78 0 -5.9 -5.51 -4.97 -5.46 -5.08 0.37 -5.9 
+-5.32 -5.25 0.61 -5.84 5.25 5.3 0.71 -5.71 0.89 -5.62 -5.08 -5.34 -5.01 -5.45 1.23 -5.58 
+-4.86 -5.58 1.45 -5.49 -4.69 -5.7 -4.6 -5.8 1.76 -5.41 -4.45 -5.92 -4.36 -6.01 -4.28 -6.12 
+2.2 -5.29 -4.11 -6.21 2.39 -5.19 2.52 -5.1 -3.84 -6.27 -3.75 -6.36 2.8 -4.95 2.95 -4.86 
+3.04 -4.77 -3.43 -6.38 3.26 -4.64 3.34 -4.55 3.47 -4.45 3.56 -4.39 -3.06 -6.33 3.73 -4.28 
+-2.91 -6.38 3.91 -4.15 3.99 -4.05 4.11 -3.97 -2.65 -6.36 -2.52 -6.41 4.28 -3.84 -2.39 -6.4 
+-2.28 -6.47 P
+4.46 -3.69 4.59 -3.62 -2.11 -6.42 -2 -6.46 4.75 -3.47 4.8 -3.39 4.9 -3.32 4.95 -3.25 
+-1.71 -6.36 5.05 -3.14 -1.58 -6.36 -1.52 -6.38 -1.41 -6.4 -1.32 -6.45 -1.23 -6.47 -5.26 2.96 
+-1.17 -6.54 -1.08 -6.58 -5.25 2.91 -1.02 -6.65 -0.91 -6.66 -0.8 -6.68 -0.71 -6.7 -0.61 -6.75 
+-5.34 2.69 -0.54 -6.82 -0.42 -6.82 5.36 -2.58 -0.3 -6.79 5.44 -2.46 -0.19 -6.74 -0.09 -6.77 
+0.02 -6.77 0.13 -6.79 5.53 -2.17 0.24 -6.73 0.32 -6.75 5.6 -1.99 0.43 -6.71 0.55 -6.68 
+5.64 -1.85 0.66 -6.64 5.68 -1.76 0.74 -6.57 5.73 -1.68 0.82 -6.5 5.75 -1.59 0.93 -6.46 
+5.8 -1.5 0.98 -6.38 1.11 -6.4 1.2 -6.38 1.28 -6.38 1.37 -6.38 1.5 -6.36 1.56 -6.34 
+1.7 -6.34 1.78 -6.34 1.87 -6.31 -5.55 0.91 2.02 -6.34 2.11 -6.34 2.23 -6.31 2.32 -6.32 
+2.43 -6.27 2.54 -6.25 2.64 -6.23 -5.2 0.48 2.8 -6.25 2.9 -6.23 -5.03 0.34 3.08 -6.25 
+3.19 -6.25 3.3 -6.18 3.41 -6.16 3.54 -6.14 3.64 -6.08 4.67 -0.02 3.69 -6.02 3.8 -5.95 
+3.91 -5.9 -4.45 -0.14 4.1 -5.92 -4.29 -0.19 4.29 -5.93 4.41 -5.86 4.54 -5.79 4.64 -5.76 
+4.78 -5.7 4.88 -5.62 5.01 -5.55 3.71 0.52 3.75 0.48 4.95 -5.43 5.06 -5.36 3.63 0.54 
+3.71 0.52 4.96 -5.23 3.67 0.52 3.73 0.48 3.78 0.48 -4.71 5.14 -3.86 -0.46 -3.82 -0.45 
+-4.78 5.25 -4.67 5.32 -4.53 5.38 -4.45 5.43 -4.34 5.47 4.25 0.28 -4.15 5.49 4.39 0.22 
+-3.95 5.49 -3.87 5.55 -3.73 5.58 -3.64 5.62 -3.55 5.67 4.82 0 -3.37 5.64 4.95 -0.07 
+-3.21 5.64 -3.11 5.69 5.1 -0.18 -2.95 5.67 -2.84 5.68 5.27 -0.26 5.34 -0.28 5.36 -0.3 
+-2.58 5.6 5.45 -0.32 -2.43 5.57 -2.36 5.6 -2.28 5.64 -2.19 5.64 11.45 -1 5.8 -0.5 
+-1.97 5.55 5.86 -0.52 -1.85 5.53 -1.76 5.54 5.99 -0.59 -1.67 5.54 6.08 -0.63 -1.54 5.52 
+6.12 -0.66 -1.43 5.52 -1.36 5.51 -1.31 5.51 -1.24 5.55 -1.16 5.56 6.31 -0.81 -1.06 5.54 
+6.38 -0.82 -0.99 5.51 6.44 -0.82 5.08 -0.65 0 -156.86 -4.43 -0.22 3.95 -5.12 4.32 0.24 
+-3.84 5.1 0 156.86 1.39 -0.18 6.51 -0.78 -0.85 5.42 6.55 -0.78 -0.78 5.4 6.6 -0.8 
+-0.69 5.42 -0.67 5.41 -0.59 5.45 6.68 -0.87 -0.54 5.43 -0.48 5.42 -0.43 5.45 -0.39 5.45 
+-0.35 5.47 -0.28 5.46 6.79 -0.98 -0.24 5.45 -0.2 5.46 6.81 -1 -0.13 5.45 6.84 -0.98 
+-0.09 5.45 -0.07 5.43 0 5.45 0.02 5.46 0.07 5.45 -6.86 1.09 -6.81 1.11 0.13 5.51 
+-6.8 1.17 0.18 5.53 -6.75 1.24 -6.73 1.28 -6.7 1.3 0.26 5.6 -6.67 1.39 -6.62 1.41 
+0.3 5.66 -6.58 1.48 0.39 5.66 -6.53 1.56 -6.49 1.61 -6.47 1.65 0.5 5.73 0.54 5.73 
+0.61 5.75 -6.38 1.75 0.69 5.76 0.74 5.75 -6.29 1.87 0.83 5.77 -6.23 1.93 0.92 5.77 
+-6.14 2.02 -6.12 2.06 -6.05 2.13 1.06 5.83 -2.3 0.85 -3.69 1.36 1.15 5.86 -2.06 0.78 
+-3.84 1.5 1.24 5.86 -5.82 2.37 1.34 5.88 -5.73 2.43 1.45 5.88 -5.64 2.54 -5.6 2.56 
+-5.54 2.64 -5.49 2.72 -5.41 2.75 1.72 5.99 -5.32 2.84 -5.25 2.93 -5.19 2.97 -1.84 -6.08 
+-5.16 3.02 p
+-5.12 3.09 -5.04 3.14 -1.89 -6.18 -1.82 -6.23 -5.05 3.14 -4.97 3.22 -4.93 3.29 -4.84 3.37 
+-4.78 3.43 2.06 6.38 -4.64 3.54 2.16 6.4 2.28 6.36 2.39 6.29 2.45 6.27 2.54 6.21 
+2.65 6.16 -4.23 3.8 2.78 6.14 -4.08 3.89 -2.84 -6.17 -4.05 3.95 -3.97 4.04 2.97 6.23 
+3.04 6.14 3.14 6.1 3.23 6.03 3.71 -4.1 3.26 5.95 3.34 5.9 -3.58 4.14 -3.5 4.23 
+-3.45 -5.92 -3.38 -5.99 -3.52 4.27 -3.36 -6.08 -3.47 4.37 -3.37 4.42 -3.25 4.52 -3.14 4.63 
+3.64 6.14 3.73 6.05 -2.89 4.73 3.89 5.97 3.99 5.92 4.06 5.82 4.14 5.75 4.23 5.64 
+4.32 5.58 4.38 5.49 4.47 5.41 4.54 5.34 2.24 -4.71 2.32 -4.62 4.5 5.27 0.32 -0.63 
+0 -76.11 -3.3 -5.75 3.88 -3.84 3.99 -3.75 4.08 -3.69 4.17 -3.61 -3 -5.77 4.32 -3.52 
+-2.84 -5.82 4.45 -3.43 4.51 -3.38 2.73 5.77 -4.46 3.38 -4.38 3.47 2.91 5.75 -4.23 3.54 
+3.06 5.73 -4.1 3.63 -4.02 3.69 -3.93 3.75 -3.84 3.84 0 76.11 2.06 -3.91 2.52 -4.45 
+2.63 -4.36 2.75 -4.3 2.86 -4.21 4.17 5.25 2.91 -4.12 3.02 -4.05 -4.06 -5.28 3.18 -3.99 
+3.27 -3.93 3.39 -3.84 -3.78 -5.38 -3.71 -5.42 -3.62 -5.47 3.67 -3.8 -3.47 -5.53 3.82 -3.69 
+3.41 5.54 3.5 5.46 1.04 1.59 0 -67.3 -2.54 -5.77 -2.47 -5.82 4.86 -3.14 4.92 -3.06 
+4.99 -3 2.3 5.77 -4.95 3.02 2.45 5.75 -4.82 3.11 -4.75 3.14 0 67.3 2.54 3.84 
+-3.62 3.71 3.71 5.38 3.77 5.32 3.85 5.25 3.9 5.21 3.36 -3.69 3.93 5.17 3.39 -3.61 
+3.47 -3.51 3.84 5.12 3.49 -3.45 3.86 5.08 3.52 -3.36 3.84 5.04 -3.45 3.37 3.96 4.99 
+4.04 4.93 3.32 -3.32 4.03 4.88 3.32 -3.25 4.02 4.88 4.1 4.79 3.25 -3.14 3.34 -3.08 
+4.02 4.8 4.05 4.75 3.28 -2.97 4.06 4.71 3.3 -2.89 3.21 3.73 0.82 0.96 1.54 -1.33 
+1.76 -1.5 3.34 -2.78 -3.88 -4.73 3.49 -2.73 3.59 -2.69 3.75 4.79 3.56 -2.61 3.63 -2.56 
+3.66 4.8 3.63 -2.48 3.64 4.78 -2.39 1.63 -1.17 0.82 -3.47 2.49 -3.43 2.56 -3.36 2.61 
+1.73 2.02 2.26 2.63 4.04 4.58 1.15 1.28 2.95 3.26 4.14 4.49 3.06 -2.5 3.13 -2.45 
+3.19 -2.41 3.23 -2.34 2.93 -2.04 0.39 -0.26 0.34 -0.24 3.02 -2.02 -1.24 -1.56 -2.45 -3.11 
+-3.64 -4.69 -3.52 2.3 -0.11 -0.15 -3.56 -4.55 3.6 -2.32 3.82 -2.39 3.54 -2.13 3.77 -2.17 
+-3.32 -4.82 3.88 -2.14 3.26 4.84 -3.82 2.13 1.09 1.59 2.28 3.21 3.41 4.77 -1.3 0.76 
+-2.3 1.37 -3.58 2.17 3.62 4.68 0.26 0.35 3.41 4.29 3.71 4.6 3.34 -2.1 2.13 2.67 
+1.54 1.91 -3.23 2.08 3.8 4.51 -3.11 2.11 3.93 4.45 -2.97 2.11 -2.93 2.15 4.14 4.34 
+-1.3 1 -1.47 1.17 4.25 4.23 4.34 4.21 -2.59 2.13 4.45 4.12 -0.7 0.58 -1.74 1.55 
+4.55 4.01 -2.3 2.13 -4.64 -3.97 -2.3 2.2 -4.68 -3.97 -0.15 0.15 -2.17 2.13 -2.26 2.34 
+4.82 3.89 -2.13 2.32 4.95 3.78 4.99 3.73 -0.95 1.11 -0.96 1.15 5.1 3.61 3.75 2.6 
+1.39 0.96 1.78 -2.15 1.84 -2.12 1.89 -2.06 -4.95 -3.71 2.05 -2.11 2.49 1.95 2.37 1.8 
+2.02 -2.02 p
+4.82 3.75 4.89 3.69 4.93 3.64 1.82 -1.84 1.91 -1.8 4.79 3.69 1.87 -1.71 4.77 3.69 
+-1.26 1.17 -0.52 0.48 -1.43 1.39 -0.31 0.3 0.93 0.67 4.04 2.84 -1.61 1.68 -1.56 1.69 
+3.79 2.45 1.37 0.87 -1.34 1.56 -0.09 0.11 5.28 3.21 -1.3 1.6 -1.28 1.63 5.46 3.04 
+-1.02 1.37 -0.16 0.21 -1.08 1.61 -1.06 1.65 5.68 2.73 -0.93 1.58 -0.91 1.58 4.12 1.79 
+1.74 0.74 -0.8 1.54 3.43 1.39 2.49 0.98 -0.7 1.47 6.01 2.21 -0.43 1.04 -0.15 0.37 
+6.08 2.06 6.12 1.95 0.52 -1.23 0.55 -1.24 6.05 2.06 0.52 -1.15 6.04 2.06 6.08 1.98 
+6.08 1.88 0.41 -0.89 6.08 1.91 0.39 -0.8 6.06 1.93 0.36 -0.71 0.39 -0.7 0.41 -0.7 
+0.43 -0.67 1.95 0.71 0 -3.38 -5.55 -2.54 -0.59 0.72 -0.57 0.73 -0.54 0.76 -1.39 -0.58 
+-4.34 -1.8 -0.59 0.83 -0.56 0.84 -5.82 -2.3 -0.59 0.93 -5.84 -2.32 -4.42 -1.8 -1.39 -0.57 
+0.71 -1.09 -5.73 -2.54 -3.58 -1.61 -2.11 -0.98 0.87 -1.23 0.91 -1.19 0.96 -1.2 0.98 -1.17 
+1.02 -1.17 1.05 -1.15 1.08 -1.11 1.13 -1.11 -1.45 -0.91 -1.57 -1 -2.06 -1.33 1.24 -1.15 
+1.26 -1.13 -4.06 -2.82 -0.8 -0.57 1.09 -0.93 0.28 -0.24 -0.3 -0.24 -4.43 -3.28 -4.71 -3.55 
+-4.67 -3.62 1.67 -1.32 -3.62 -2.97 -0.91 -0.74 -4.49 -3.78 1.89 -1.39 -4.36 -3.86 -2.91 -2.65 
+-1.43 -1.28 -4.28 -3.97 -3.84 -3.64 -0.39 -0.37 0.14 -0.08 2.15 -1.46 -3.82 -3.82 -0.3 -0.28 
+0.13 -0.09 1.8 -1.17 0.48 -0.3 -1.28 -1.33 -2.69 -2.86 -1.85 -1.98 -2.11 -2.25 0.7 -0.43 
+1.41 -0.84 0.52 -0.3 -0.71 -0.79 -1.93 -2.21 -1.15 -1.33 0.93 -0.54 1.61 -0.91 0.2 -0.13 
+-0.25 -0.3 -2.07 -2.46 -1.35 -1.62 1.48 -0.8 1.39 -0.76 0.96 -0.52 1.97 -1.02 0.85 -0.46 
+2.11 -1.04 -0.48 -0.65 -1.83 -2.43 -0.89 -1.21 -0.18 -0.24 3.09 -1.48 0.32 0.46 0.85 1.2 
+1.73 2.39 0.37 0.5 0.67 -0.3 1.54 -0.74 0.82 -0.37 0.7 0.95 1.3 1.83 1.23 1.75 
+0.13 0.15 1.8 2.52 1.34 1.84 0.57 -0.25 0.74 -0.35 1.52 -0.7 0.09 -0.02 0.11 0.17 
+2.3 3.2 0.81 1.13 0.95 1.32 2.3 3.15 0.63 -0.28 0.89 -0.42 1.24 -0.54 1.52 2.13 
+1.11 1.54 0.56 0.8 0.48 -0.22 0.91 -0.39 1.31 -0.56 0.86 -0.35 1.85 -0.76 2.21 -0.89 
+0.52 -0.2 0.17 0.24 1.7 2.61 1.11 1.67 1.43 -0.57 1.24 -0.48 1.21 -0.43 1.5 -0.54 
+0.8 1.33 1.09 1.75 0.89 1.46 0.74 -0.26 0.86 -0.3 1.04 -0.37 2.72 4.53 2.56 -0.87 
+2.58 -0.82 2.6 -0.8 2.63 -0.79 2.5 -0.7 0.16 -0.04 1.34 -0.34 0 -10.44 -0.16 -0.36 
+-1.08 -2.63 -0.74 -1.76 -0.34 -0.87 -1.09 -2.64 -0.5 -1.24 3.1 -0.71 -1.06 -2.8 -0.76 -2 
+3.23 -0.7 2.02 -0.41 1.24 -0.24 3.26 -0.61 3.28 -0.56 2.73 -0.43 0.57 -0.09 0.02 0.11 
+0.7 2.6 0.37 1.31 0.21 0.86 1.2 -0.19 1.82 -0.26 0.19 -0.02 1.56 -0.21 1.65 -0.24 
+0.7 3.04 0.43 1.85 0.87 3.73 0.28 1.13 -2.36 0.33 -0.66 0.08 -2.99 0.46 -3 0.5 
+-1.06 0.2 -1.67 0.28 -0.24 0.05 -0.02 -0.09 -1.52 -4.73 -3.06 0.59 -0.17 0.04 -2.89 0.59 
+1.24 3.34 p
+0.54 1.43 -2.93 0.63 -2.91 0.67 0 10.44 1.32 -0.35 0.89 1.98 1.24 2.66 2.3 -0.56 
+0.28 -0.09 2.6 -0.61 1.15 2.75 0.81 1.91 1.97 4.64 2.41 -0.54 1.58 3.91 0.3 0.74 
+0.05 0.09 0.69 1.69 1.19 2.82 2.2 -0.46 1.82 4.6 2.08 -0.43 1.07 2.8 0.67 1.8 
+1.76 4.58 1.78 4.56 1.8 4.53 1.19 2.93 0.63 1.57 0.5 -0.09 1.02 -0.21 1.74 4.51 
+1.23 -0.24 0.18 -0.04 1.61 4.49 1.3 -0.22 1.3 -0.2 1.33 -0.19 1.25 4.51 -1.19 0.18 
+-2.34 0.39 -1.17 0.21 -1.15 0.24 -1.15 0.26 2.02 4.36 -1.02 0.24 -2.04 0.52 -1 0.3 
+2.54 4.21 -0.87 0.26 -0.87 0.29 -0.84 0.28 -0.85 0.3 3.06 4.04 -0.72 0.26 -3.16 -4 
+-0.83 0.33 -0.82 0.34 -0.8 0.35 -0.78 0.34 -0.8 0.37 -1.52 0.78 -0.74 0.39 -0.74 0.42 
+-1.43 0.86 -0.7 0.43 -4.43 -3.43 -0.76 0.52 -0.78 0.52 -0.29 0.21 -0.45 0.33 -0.72 0.55 
+-0.52 0.41 -0.2 0.15 -0.7 0.57 -0.67 0.56 -0.65 0.59 -0.65 0.61 -0.61 0.61 -0.61 0.63 
+-0.59 0.61 -0.57 0.65 -0.54 0.63 0 3.38 3.91 1.43 -0.39 0.61 -0.7 1.22 -0.32 0.63 
+-0.57 1.26 -0.26 0.63 -0.24 0.63 -0.22 0.66 -6.29 -1.41 -0.24 0.74 -0.2 0.73 -0.2 0.76 
+-0.15 0.74 -0.15 0.76 -0.11 0.73 -0.09 0.76 -0.06 0.76 -6.47 -0.74 -0.04 0.85 -0.05 0.87 
+0.02 0.84 -6.49 -0.54 0.02 0.95 0.04 0.96 -6.49 -0.46 -6.49 -0.54 0.08 1.15 0.13 1.15 
+0.15 1.16 0.22 1.15 6.46 0.15 0.22 1.04 -6.47 -0.04 -0.21 -1.15 -6.49 -0.24 -4.3 -0.22 
+-2.19 -0.13 0.26 1.34 0.31 1.35 0.32 1.35 -2.6 -0.04 -3.85 -0.09 0.39 1.43 0.46 1.43 
+0.5 1.43 4.8 -0.13 1.61 -0.05 0.52 1.33 6.36 -0.35 0.24 0 6.13 -0.43 0.49 1.13 
+0.55 1.13 -4.14 0.43 -2.15 0.2 -0.56 -1.21 -6.34 0.45 -0.82 0.05 -5.53 0.3 0.65 1.41 
+0.7 1.43 0.73 1.39 2.87 -0.28 3.36 -0.37 6.23 -0.74 0.69 1.2 0.73 1.19 0.79 1.17 
+-5.55 0.96 -0.52 0.08 0.87 1.29 0.32 0.46 0.59 0.8 0.97 1.24 -2.19 0.48 -3.76 0.76 
+1.09 1.34 -5.9 1.25 1.17 1.41 -5.86 1.28 -1.17 0.26 -4.71 0.93 1.37 1.61 -5.84 1.19 
+-1.43 -1.69 -5.95 1.02 -3.15 0.5 -2.82 0.43 1.56 1.91 1.63 1.89 1.69 1.87 1.76 1.82 
+1.82 1.82 -5.64 1.37 1.81 1.74 0.15 0.15 2.04 1.89 0.71 0.63 1.41 1.2 2.17 1.82 
+2.23 1.78 2.32 1.76 2.37 1.71 1.08 0.76 1.34 0.93 4.88 -2.15 2.39 1.57 2.45 1.52 
+2.5 1.48 2.56 1.45 2.52 1.35 0.09 0.06 2.68 1.35 2.71 1.32 2.78 1.28 2.82 1.24 
+3.69 -2.95 2.6 1.09 0.11 0.02 2.75 1.09 2.8 1.02 2.82 0.98 2.88 0.93 2.91 0.89 
+-2.78 3.32 3.07 0.89 3.15 0.84 3.17 0.78 -2.32 3.46 3.37 0.78 -0.07 0.11 -2.11 3.34 
+3.56 0.76 -2.02 3.45 -2.04 3.43 3.95 0.79 -1.89 3.4 -4.14 -0.8 -1.91 3.04 -0.2 0.28 
+-4.27 -0.93 -2.32 3.25 -2.34 3.21 -0.24 0.33 -2.13 2.82 -2.41 3.13 -1.93 2.48 -0.5 0.61 
+-5.16 -1.3 -5.1 -1.41 -2.84 2.91 -5.23 -1.58 -1.13 -0.35 -2.67 -0.89 -1.35 -0.43 -4.32 -1.47 
+-0.76 -0.29 p
+-4.99 -1.84 -0.65 0.45 -2.95 2.09 -0.93 0.65 -2.7 1.82 5.34 2.02 5.43 1.93 -3.32 2.58 
+5.68 1.91 5.79 1.8 -1.84 1.67 -1.15 1.02 0 139.3 10.77 1.35 13.2 1.63 13.17 1.06 
+13.2 1.09 13.2 0.54 13.17 0.55 26.37 0 13.19 -0.55 13.17 -0.54 13.2 -1.09 13.2 -1.06 
+13.17 -1.65 13.17 -1.62 13.2 -2.17 3.15 -0.52 0 -135.26 -0.71 -0.5 -2.76 -1.93 -6.05 2.08 
+-2.06 -1.61 -1.18 -0.95 -3.19 -2.62 -3.28 1.04 -2.52 0.76 -2.95 -2.75 -2.91 -2.8 -2.88 -2.84 
+-1.37 0.39 -3.93 1.07 -2.64 -2.95 -2.06 0.52 -3.11 0.78 -5.23 1.22 -5.25 1.11 -1.11 -1.72 
+-0.96 -1.45 -5.12 0.96 -1.91 0.34 -3.23 0.52 0.2 0.41 0.96 1.89 0.5 0.98 -5.41 0.8 
+-0.3 -0.69 -0.84 -1.89 -0.31 -0.71 -0.24 0.02 -4.99 0.63 -1.56 0.2 -3.69 0.39 -1.02 -3.43 
+-5.07 0.46 -5.1 0.34 -5.1 0.24 -0.41 -3.49 -4.91 0.13 -0.2 -3.54 -0.19 -3.56 -4.52 0.04 
+0 -3.62 -4.1 -0.02 -0.22 0 -4.32 -0.12 -4.32 -0.2 -4.3 -0.29 -0.35 1.61 -0.43 1.95 
+-4.47 -0.37 -4.46 -0.46 -4.43 -0.54 1.34 -3.52 -4.23 -0.59 1.55 -3.49 4.03 0.54 1.32 -3.56 
+2.84 0.35 1.02 0.11 3.88 0.39 3.93 0.32 0.74 -3.66 3.73 0.24 3.73 0.17 3.75 0.09 
+0.18 -3.73 3.57 0.04 2.13 -0.02 1.43 -0.02 -0.09 -1.84 -0.11 -1.91 3.38 -0.09 3.36 -0.15 
+3.37 -0.21 3.36 -0.26 3.34 -0.32 3.32 -0.39 1.28 3.66 2.54 -0.34 0 -128.66 -1.24 -0.37 
+-1.23 -0.34 -1.26 -0.33 -1.25 -0.3 -0.72 -0.18 -0.54 -0.13 1.98 -4.43 -0.93 -0.2 -0.45 -0.11 
+-1.41 -0.26 -0.45 -0.11 -0.96 -0.18 -1.41 -0.24 -1.43 -0.21 -0.67 -0.11 -0.76 -0.08 -1.46 -0.2 
+1.14 -4.58 1.56 0.2 0.76 -2.84 0.46 -1.76 1.32 0.2 0.34 0.04 1.67 0.26 0.5 -1.52 
+0.96 -3.06 1.78 0.3 1.76 0.3 1.78 0.35 -0.78 1.93 -1.02 2.61 1.63 0.35 1.63 0.37 
+1.61 0.39 -1.8 3.69 -0.37 0.74 -2.19 4.41 1.37 0.35 1.34 0.37 1.35 0.39 -0.35 0.61 
+-2.21 3.69 0 128.66 0.8 -0.09 0.15 -0.02 0.21 -0.04 3.25 -0.5 -1.62 -3.61 3.28 -0.56 
+3.23 -0.63 3.23 -0.67 3.19 -0.72 3.16 -0.78 2.43 3.32 0 -106.58 -0.7 -0.67 -0.74 -0.67 
+-0.74 -0.65 5 -3.12 0.82 0.74 0.8 0.74 0.78 0.73 5.19 -2.97 0.82 0.83 -5.25 2.91 
+-0.76 -0.76 -5.23 2.91 0 106.58 0.07 0.08 1.95 -0.52 1.34 -0.36 3.25 -0.96 -2.8 -3.3 
+-1.47 -1.73 -1.32 -1.58 2.91 -0.89 2.88 -0.93 2.82 -0.98 2.8 -1.02 2.76 -1.09 2.71 -1.11 
+2.69 -1.15 -3.82 -2.93 2.5 -1.13 2.45 -1.17 2.41 -1.2 2.35 -1.25 2.32 -1.26 2.25 -1.32 
+2.21 -1.35 -4.67 -2.43 -4.6 -2.49 -1.95 -1.06 -2.63 -1.5 -1.87 1.11 -1.89 1.07 -1.93 1.04 
+-1.98 1 -2.02 1 -3.93 -3.02 1.89 -0.89 1.84 -0.95 1.82 -0.96 1.78 -1 1.74 -1 
+1.69 -1.04 1.67 -1.08 1.63 -1.09 1.58 -1.11 5 2.28 -3.43 2.39 -1.78 1.15 3.49 1.84 
+1.2 0.63 4.71 2.41 4.77 2.35 2.11 -1.41 2.06 -1.45 1.99 -1.46 1.96 -1.5 1.89 -1.54 
+1.85 -1.54 1.78 -1.58 1.74 -1.59 1.64 -1.62 -5.62 -1.5 1.54 -1.56 -5.68 -1.48 1.41 -1.47 
+1.34 -1.48 p
+1.3 -1.5 5.88 1.2 1.3 -1.61 1.26 -1.62 1.19 -1.64 1.13 -1.65 1.06 -1.67 -6.16 -0.7 
+0.97 -1.58 0.93 -1.58 0.87 -1.59 0.8 -1.61 -5.99 -0.37 -0.33 -0.02 -6.29 -0.45 0.69 -1.43 
+0.65 -1.41 -6.36 -0.35 0.57 -1.34 0.52 -1.33 0.48 -1.32 0.43 -1.34 -6.19 -0.05 -0.24 0 
+-6.45 -0.15 0.37 -1.15 0.2 -0.72 0.11 -0.41 0.13 -0.55 0.15 -0.61 -3.06 0.02 -3.41 0.02 
+0.22 -1.04 0.04 -0.26 0.15 -0.81 0.15 -1.04 -1.3 0.07 -5.18 0.2 0.11 -0.95 -6.49 0.26 
+0.09 -0.86 0.07 -0.85 0.02 -0.87 6.49 -0.54 0 -0.96 6.49 -0.73 0 1.04 1.81 -0.19 
+4.68 -0.52 -0.02 1.13 -0.04 1.15 -0.09 1.15 -0.12 1.15 -0.16 1.16 -0.2 1.15 4.75 -0.18 
+0 -33.48 -0.85 -1.15 -0.87 -1.12 -0.91 -1.09 5.4 -2.88 0.97 1.17 0.96 1.2 0.91 1.19 
+-5.62 2.69 0 33.48 1.71 -0.06 0.5 -0.02 5.99 -0.33 0.21 -1.34 6.46 -0.52 0.18 -1.43 
+0.11 -1.43 0.09 -1.43 -6.49 0.8 0.04 -1.32 -0.02 -1.34 6.47 -1 -0.07 -1.41 -0.13 -1.41 
+6.4 -1.28 -0.17 -1.5 -0.24 -1.5 -0.24 -1.26 -0.04 -0.21 -0.33 -1.48 6.27 -1.71 -0.41 -1.54 
+-0.45 -1.54 -0.5 -1.54 -0.57 -1.5 -0.58 -1.52 6.04 -2.2 -0.7 -1.58 -0.76 -1.56 5.91 -2.43 
+-0.85 -1.63 -0.91 -1.58 -0.93 -1.58 -5.73 2.67 -0.93 -1.5 -0.98 -1.48 -1.02 -1.45 -1.09 -1.43 
+5.49 -2.95 5.42 -3.02 -0.2 -0.24 -1.06 -1.31 -1.29 -1.54 5.26 -3.21 5.2 -3.28 -0.78 -0.87 
+-0.71 -0.76 -0.26 -0.29 -1.29 -1.32 -5.05 3.4 -1.5 -1.52 -1.57 -1.5 -1.58 -1.47 -1.63 -1.45 
+3.85 -2.93 0.89 -0.67 4.71 -3.67 -1.84 -1.54 -1.89 -1.5 -4.54 3.77 -1.84 -1.41 -1.45 1.24 
+-3.04 2.54 -4.54 3.71 1.67 1.32 -3.99 3.11 -0.67 0.52 -4.71 3.55 -4.73 3.52 1.37 1.17 
+1.37 1.2 -0.24 0.15 -4.73 3.17 1.24 1.15 1.2 1.17 1.17 1.2 1.13 1.21 -5.32 3.02 
+-1.05 -1.15 -5.27 3.04 -1 -1.07 -1.04 -1.04 5.1 -3.14 -1.15 -1.11 -1.17 -1.06 4.91 -3.34 
+-1.31 -1.11 -0.61 -0.5 -0.71 -0.61 4.69 -3.5 -1.45 -1.12 4.58 -3.62 -1.56 -1.17 -0.02 0 
+-1.58 -1.13 4.34 -3.77 4.32 -3.82 1.8 1.24 1.73 1.26 4.45 -3.78 1.41 -1.2 3 -2.63 
+-1.91 -1.37 -1.97 -1.32 -2 -1.3 4.1 -4.02 4.05 -4.06 -2.21 -1.34 -2.26 -1.32 -2.3 -1.3 
+-3.78 4.16 -2.23 -1.21 -2.29 -1.2 3.61 -4.25 0.74 -0.89 2.82 -3.41 -2.49 -1.21 -2.52 -1.21 
+-2.67 3.49 -0.7 0.89 -2.48 -1.15 -3.32 4.37 -2.39 -1.07 -2.43 -1.04 -3.15 4.41 -2.37 -0.98 
+-2.36 -0.93 -2.41 -0.91 -2.43 -0.86 -2.8 4.46 -2.34 -0.8 -2.39 -0.78 -2.61 4.49 -4.6 -1.43 
+-0.11 -0.02 -2.24 -0.63 -2.34 -0.63 -2.36 -0.61 1.47 -3.3 0.61 -1.32 -0.98 -0.24 -1.52 -0.37 
+-2.5 -0.57 -0.02 0 -2.52 -0.52 -1.75 -0.37 -0.76 -0.13 0.17 -0.52 0.85 -2.45 0.61 -1.76 
+-1.02 -0.19 -1.41 -0.24 -2.14 -0.39 -0.74 -0.11 -2.69 -0.41 1.3 -4.79 0.21 -0.8 0.61 -2.28 
+0.46 -1.71 -0.97 -0.15 -1.3 -0.17 -0.63 -0.09 0.34 -1.41 0.68 -2.88 0.13 -0.54 -0.24 -0.04 
+-1.26 -0.15 -1.28 -0.16 -0.24 -0.04 0.22 -1 0.83 -3.86 -1.76 -0.21 -1.37 -0.14 0.91 -4.9 
+-2.54 -0.26 p
+-0.69 -0.06 0.17 -1.11 0.63 -3.82 -3.23 -0.29 -0.13 0 0.02 -0.04 0.58 -4.17 0.11 -0.73 
+-1.19 -0.09 -2.19 -0.18 -0.09 0 -1.67 -0.11 -1.73 -0.11 -0.07 0 0.02 -0.04 0.13 -1.35 
+0.26 -2.74 0.09 -0.84 -0.55 -0.02 -0.89 -0.07 -1.73 -0.08 -0.39 -0.02 0.39 -4.97 0.37 -5.01 
+1 0.04 1.28 0.07 1.3 0.06 0.2 0.02 0.02 -0.34 0.43 -4.43 0.02 -0.24 0.46 -5.04 
+3.95 0.24 0.56 -5.06 4.04 0.3 0.63 -5.05 1.26 -10.16 0.61 -5.1 -4.41 -0.3 -4.38 -0.24 
+0.41 -5.12 -4.47 -0.21 -4.49 -0.15 -4.52 -0.13 -0.17 5.12 -4.41 -0.06 -4.41 -0.02 0 5.1 
+-4.34 0.02 0.08 5.1 -4.23 0.06 0.17 5.08 0.2 5.08 4.06 -0.06 0.09 5.05 -3.97 0.07 
+-3.97 0.11 -3.95 0.15 -3.95 0.2 -0.48 -5.06 4.06 -0.19 -0.37 -5.06 -0.35 -5.08 -4.23 0.2 
+-4.23 0.26 -4.21 0.29 -0.61 -5.08 -4.3 0.34 -0.71 -5.1 -0.67 -5.1 -0.67 -5.12 4.55 -0.35 
+0.59 5.13 4.47 -0.31 4.49 -0.26 4.47 -0.21 4.51 -0.15 -0.52 -10.29 4.66 -0.11 0.18 5.14 
+4.58 -0.09 4.6 -0.02 0 -10.28 -4.75 0.02 -0.09 -5.16 -4.84 0.06 -4.82 0.13 -4.82 0.15 
+-0.33 -5.16 4.91 -0.18 4.91 -0.13 -0.16 -5.19 4.99 -0.06 -0.09 -5.21 -0.07 -5.2 -0.08 -5.21 
+-5.21 0.07 -5.21 0.13 -5.21 0.17 -5.18 0.24 -5.21 0.26 -5.18 0.33 -0.5 -5.21 -1 -10.45 
+-0.48 -5.26 -0.48 -5.27 -0.46 -5.25 -0.45 -5.27 5.66 -0.33 5.68 -0.29 -0.33 -5.29 -0.3 -5.27 
+-0.61 -10.59 -5.92 0.28 -5.91 0.33 -0.41 -5.3 -0.39 -5.32 -6.03 0.39 -1.3 -15.95 -6.19 0.43 
+-6.14 0.5 -0.52 -5.34 -6.2 0.54 -0.57 -5.34 -0.54 -5.34 -0.52 -5.34 -6.34 0.58 -0.56 -5.34 
+-0.55 -5.36 -6.4 0.63 -0.59 -5.34 -1.08 -10.72 -1 -10.71 -0.96 -10.72 -0.43 -5.36 -6.73 0.65 
+-0.46 -5.38 6.75 -0.63 -0.41 -5.38 -0.39 -5.36 -0.37 -5.34 6.86 -0.59 -0.33 -5.36 6.9 -0.54 
+-0.28 -5.34 6.93 -0.48 -0.48 -10.68 -0.22 -5.34 7.04 -0.41 -0.2 -5.32 7.05 -0.37 -0.15 -5.32 
+7.08 -0.32 -0.13 -5.32 7.09 -0.29 0.11 5.32 7.09 -0.24 7.08 -0.2 7.09 -0.16 7.1 -0.12 
+7.1 -0.07 7.11 -0.02 0 -376.06 -6.79 0 -3.38 -0.04 -3.38 -0.02 -3.39 -0.04 -3.38 -0.06 
+-3.37 -0.04 -1.8 -0.05 -1.56 -0.04 1.02 -3.75 -6.46 -0.18 1.32 -3.73 -6.16 -0.22 -3.08 -0.12 
+-3.06 -0.13 -6.08 -0.3 2.15 -3.71 -2.89 -0.17 2.32 -3.68 -2.76 -0.17 -5.42 -0.39 2.78 -3.63 
+-2.54 -0.21 2.97 -3.58 -2.41 -0.22 -2.38 -0.24 -2.37 -0.24 3.47 -3.52 -2.22 -0.26 -2.19 -0.26 
+-2.17 -0.28 3.95 -3.46 -1.99 -0.25 -2 -0.3 4.32 -3.37 -1.82 -0.3 -3.61 -0.61 -4.73 3.34 
+-1.91 -0.33 -1.89 -0.34 -1.84 -0.35 -1.82 -0.37 -1.8 -0.39 -1.79 -0.37 -1.75 -0.41 -5.58 3.34 
+-1.84 -0.44 -1.82 -0.43 -5.73 3.39 -1.91 -0.45 -1.89 -0.48 -1.84 -0.5 -1.8 -0.5 -1.78 -0.5 
+-6.25 3.4 -1.86 -0.54 -1.83 -0.57 -6.36 3.5 -6.29 3.58 -6.16 3.67 -6.05 3.75 -5.97 3.84 
+-5.86 3.93 -5.75 4.02 -5.64 4.08 -5.55 4.16 -5.43 4.26 -5.36 4.29 3.08 0.57 3.11 0.54 
+-5.01 4.34 3.25 0.5 -4.82 4.41 -3.36 -0.48 4.93 -4.43 -3.21 -0.52 -3.2 -0.55 -3.12 -0.56 
+-3.08 -0.57 p
+-3.02 -0.61 5.56 -4.43 5.66 -4.34 -2.78 -0.65 -2.71 -0.67 5.99 -4.27 -2.54 -0.7 6.19 -4.21 
+6.31 -4.1 6.43 -4.02 -2.17 -0.71 -2.12 -0.76 -2.06 -0.76 -2.02 -0.8 6.96 -3.88 -1.87 -0.8 
+-1.78 -0.82 -1.74 -0.84 7.38 -3.75 7.46 -3.64 -1.48 -0.85 -1.41 -0.84 7.77 -3.47 -1.26 -0.84 
+7.97 -3.32 -1.13 -0.84 -1.04 -0.87 -1 -0.89 -0.93 -0.89 -8.31 3.19 -0.96 -0.95 -8.31 3.32 
+-0.98 -1 -0.89 -1.02 -0.85 -1.05 -0.75 -1.06 -0.7 -1.09 -0.63 -1.11 -0.54 -1.13 -0.48 -1.15 
+-8.83 3.21 -0.48 -1.22 -0.37 -1.23 -0.3 -1.26 9.03 -3.04 -0.16 -1.23 -0.06 -1.24 9.18 -2.78 
+9.2 -2.58 9.25 -2.39 0.13 -1.09 0.21 -1.11 0.26 -1.11 0.34 -1.13 0.43 -1.13 0.5 -1.16 
+-9.39 1.98 0.56 -1.22 0.66 -1.25 0.73 -1.24 0.81 -1.28 0.91 -1.29 0.98 -1.28 1.06 -1.29 
+1.17 -1.3 1.24 -1.31 1.34 -1.32 1.41 -1.3 1.52 -1.33 -9.2 1.2 1.65 -1.43 9.13 -1.08 
+1.7 -1.32 1.78 -1.32 1.87 -1.31 1.95 -1.32 2.04 -1.32 2.15 -1.3 8.55 -0.28 2.13 -1.2 
+2.19 -1.19 2.28 -1.17 2.34 -1.18 2.46 -1.15 2.52 -1.13 2.58 -1.12 2.67 -1.11 2.75 -1.08 
+2.82 -1.06 6.99 0.91 2.71 -0.95 2.78 -0.91 2.82 -0.91 6.3 1.3 2.69 -0.78 2.73 -0.76 
+2.8 -0.74 2.84 -0.71 2.91 -0.68 2.95 -0.67 4.82 1.89 2.76 -0.54 2.8 -0.55 2.82 -0.49 
+3.99 2.14 2.61 -0.41 2.65 -0.39 2.66 -0.37 2.7 -0.34 -2.99 -2.34 2.97 -0.37 6.04 -0.61 
+3.04 -0.24 3.06 -0.24 3.06 -0.18 3.08 -0.17 3.1 -0.11 3.08 -0.08 3.11 -0.07 6.23 0 
+3.1 0.07 3.11 0.08 3.08 0.11 3.08 0.17 3.06 0.18 3.06 0.24 1.99 -2.45 3.3 0.29 
+-2.25 2.41 6.03 0.61 2.97 0.37 2.95 0.37 0.41 0.07 0.64 0.09 1.23 0.17 0.63 0.11 
+0.8 -0.52 1.59 -0.96 0.78 -0.48 0.43 -0.26 3.69 -2.13 3.78 -2.06 -3.71 -0.59 3.6 -2.06 
+-4.03 -0.59 -4.09 -0.56 -4.14 -0.5 2.84 -2.17 -4.47 -0.5 2.61 -2.14 2.66 -2.11 5.1 0.61 
+5.04 0.67 3.41 -1.93 5.32 0.83 5.23 0.89 5.19 0.93 5.1 1.02 5.01 1.09 4.95 1.13 
+5.34 -1.3 5.14 1.3 5.01 1.37 4.93 1.41 4.82 1.46 6.55 -0.7 4.95 1.65 4.82 1.66 
+4.71 1.74 4.55 1.78 4.43 1.8 7.81 0.14 4.47 1.99 4.34 2 4.19 2.04 8.46 0.76 
+4.19 2.19 4.01 2.22 3.87 2.23 3.69 2.23 3.54 2.24 3.37 2.23 3.23 2.23 3.06 2.24 
+2.88 2.23 2.76 2.21 2.61 2.21 2.43 2.19 2.31 2.17 1.88 1.89 0 -65.58 -9.85 -2.28 
+-9.36 -1.91 -8.55 -2.93 -8.57 -2.93 -8.92 -2.72 -8.9 -2.71 7.99 0.93 -19.27 -5.43 7.64 0.74 
+8.14 0.98 -10.89 -2.91 -10.91 -2.91 7.66 0.71 -11.83 -2.8 -11.83 -2.82 7.05 0.43 -12.83 -2.62 
+-12.84 -2.63 -13.21 -2.08 -13.22 -2.11 4.8 -0.37 5.21 -0.22 -10.07 -1.26 -10.07 -1.28 -10.09 -1.28 
+3.86 -0.52 -10.87 -0.87 -10.89 -0.87 -10.89 -0.89 2.14 -0.74 11.59 0.98 11.59 1 11.57 0.98 
+11.35 1.61 11.33 1.61 11.35 1.61 6.82 0.33 7.55 0.58 12.33 2.78 12.35 2.76 12.32 2.78 
+10.68 2.02 12.35 3.79 12.37 3.82 12.35 3.8 -12.61 -3.3 -11.72 -3.39 -11.7 -3.36 -11.72 -3.38 
+-9.66 -1.54 p
+-8.79 -1.15 -8 -0.84 -7.36 -0.54 -6.77 -0.32 13.52 2.91 13.5 2.93 13 3.41 13.02 3.43 
+-8.81 -1.32 11.91 3.51 11.89 3.52 -9.22 -1.65 10.91 3.54 10.89 3.54 -9.52 -1.91 10.02 3.52 
+10 3.49 -9.72 -2.11 9.22 3.43 9.2 3.45 0 65.58 0.26 0.26 2 2.12 1.84 2.11 
+1.71 2.09 1.58 2.07 1.43 2.04 1.29 1.99 1.17 1.98 1.04 1.93 0.89 1.93 0.79 1.87 
+0.67 1.84 9.36 3.67 0.49 1.87 -9.33 -3.71 0.41 1.78 0.3 1.76 0.17 1.71 0.09 1.67 
+-0.05 1.65 -0.15 1.61 -0.26 1.59 8.87 4.02 -0.43 1.58 -0.55 1.54 -0.63 1.5 -0.74 1.47 
+-0.82 1.43 -0.93 1.39 -1.02 1.37 -8.29 -4.23 -1.02 1.32 -1.13 1.28 -1.19 1.24 -1.26 1.21 
+-1.37 1.17 -1.46 1.15 -1.52 1.13 -1.58 1.09 -1.68 1.04 -1.74 1.04 -1.82 1 -7.34 -4.19 
+-1.8 0.95 -1.85 0.96 -7.25 -4.11 -7.37 -3.97 -1.7 0.91 -1.78 0.87 -1.84 0.86 -1.89 0.83 
+-1.95 0.8 -2.02 0.8 -2.06 0.76 6.64 4.02 6.51 4.1 -2.32 0.76 -2.39 0.71 -2.45 0.71 
+-2.5 0.68 -2.54 0.67 -2.61 0.63 -2.64 0.63 -2.7 0.59 -2.73 0.59 -2.78 0.56 5.32 4.17 
+-2.93 0.52 -2.99 0.52 5.01 4.21 -3.12 0.48 -3.19 0.48 -1.02 -0.89 -3.75 -3.3 -3.11 0.48 
+-3.14 0.46 -3.17 0.42 -4.54 -4.09 -3.1 0.43 -3.15 0.39 -3.17 0.41 -3.19 0.36 -3.23 0.38 
+-4.06 -4 -3.14 0.37 -4.02 -3.95 -3.06 0.35 -3.08 0.35 -3.11 0.32 -3.14 0.31 -3.17 0.3 
+-3.19 0.28 -3.21 0.29 -3.23 0.26 -6.56 0.48 -2.86 -3.84 -3.17 0.24 -6.42 0.43 -3.23 0.2 
+-3.23 0.17 -3.28 0.17 -3.25 0.17 -3.3 0.16 -3.29 0.13 1.75 3.82 -3.45 0.13 -6.9 0.21 
+-3.47 0.11 -1.26 -3.8 -3.36 0.11 -3.37 0.06 -3.36 0.09 -3.37 0.04 -3.38 0.06 -3.38 0.04 
+-3.39 0.02 -3.38 0.04 -6.77 0 0 381.38 7.08 0 7.07 0.09 7.07 0.11 7.08 0.15 
+0.09 -5.3 7.1 0.2 0.09 -5.29 7.1 0.21 7.09 0.29 7.09 0.32 0.14 -5.29 0.21 -10.59 
+0.17 -10.55 -7.16 -0.3 0.07 -5.27 7.18 0.3 0.04 -5.25 7.18 0.32 0.09 -10.5 0.04 -10.46 
+7.18 0.35 0 -10.44 -0.09 -10.42 7.16 0.37 -0.04 -5.19 -0.09 -5.18 -0.09 -5.17 -7.14 -0.34 
+-0.21 -10.29 -7.14 -0.28 -0.11 -5.12 -0.13 -5.1 -0.15 -5.09 -0.16 -5.09 7.08 0.26 -0.2 -5.08 
+-0.21 -5.05 7 0.29 -0.24 -5.06 -0.26 -5.03 -0.56 -10.03 6.9 0.28 -0.34 -5.02 -0.74 -9.94 
+-0.41 -4.95 6.77 0.25 -0.45 -4.95 -0.48 -4.9 6.7 0.24 -0.54 -4.93 -0.57 -4.88 6.6 0.24 
+-0.63 -4.88 -0.65 -4.88 -0.67 -4.84 6.45 0.22 12.89 0.48 12.8 0.52 0.91 4.93 12.85 0.61 
+6.4 0.33 1 4.99 0.96 5.02 6.46 0.39 0.98 5.04 6.47 0.41 0.97 5.1 6.49 0.45 
+0.95 5.13 0.93 5.14 0.87 5.17 0.83 5.18 0.79 5.19 13.28 1.18 0.78 5.25 0.76 5.27 
+0.71 5.3 0.66 5.29 0.63 5.3 0.56 5.34 6.75 0.75 0.55 5.36 6.75 0.81 0.52 5.4 
+6.72 0.85 0.48 5.42 6.73 0.91 0.43 5.47 6.71 0.98 0.41 5.49 0.37 5.51 0.3 5.51 
+0.26 5.54 0.22 5.53 -6.75 -1.08 0.15 5.51 0.11 5.52 0.05 5.53 0.02 5.54 -6.79 -1.15 
+-0.02 5.51 p
+-0.09 5.54 -0.13 5.51 6.77 1.21 -0.2 5.55 -0.21 5.56 6.71 1.3 -0.28 5.58 6.68 1.35 
+-0.35 5.6 6.64 1.43 -0.42 5.62 -0.48 5.62 6.58 1.52 -0.52 5.62 6.51 1.59 -0.61 5.66 
+6.46 1.65 -0.67 5.69 -0.74 5.66 6.38 1.74 -0.8 5.71 -0.87 5.68 6.29 1.82 -0.93 5.71 
+-0.99 5.68 6.18 1.93 -1.09 5.68 -1.15 5.69 -1.2 5.68 -6.1 -1.97 1.17 -5.66 -6.18 -1.91 
+-6.21 -1.86 -6.25 -1.8 -6.27 -1.73 -6.34 -1.72 -1 5.58 -1.06 5.58 6.27 1.74 -1.13 5.57 
+6.18 1.8 6.14 1.84 -1.26 5.62 6.08 1.91 6.03 1.98 -1.39 5.62 5.95 2.04 5.9 2.1 
+-1.52 5.64 5.82 2.18 0.74 0.28 0 -183.64 -6.54 -1.26 -0.35 -5.68 -6.53 -1.22 -0.42 -5.64 
+-6.57 -1.15 -0.46 -5.62 -6.6 -1.09 -0.48 -5.58 -0.56 -5.55 -0.61 -5.55 -0.67 -5.55 -0.73 -5.54 
+-0.78 -5.53 -6.54 -0.87 -0.82 -5.49 -0.87 -5.47 -0.95 -5.45 6.46 0.79 -1.04 -5.47 6.41 0.76 
+6.36 0.8 1.06 5.54 1.02 5.55 0.96 5.55 0.89 5.58 6.45 0.96 0.85 5.62 0.78 5.62 
+0.71 5.66 6.47 1.07 0.67 5.68 0.61 5.69 0.54 5.71 0.5 5.7 0.41 5.71 0.37 5.73 
+0 183.64 5.01 1.95 -1.65 5.64 -1.73 5.64 5.64 2.32 5.58 2.37 -1.87 5.64 -1.93 5.62 
+5.42 2.46 -2.04 5.62 -2.11 5.59 5.27 2.54 -2.21 5.58 -5.23 -2.54 -2.21 5.54 -5.23 -2.5 
+-5.28 -2.45 -2.19 5.51 -5.27 -2.39 -5.34 -2.32 -5.38 -2.28 -2.08 5.47 -5.38 -2.21 -5.42 -2.15 
+-2.02 5.43 -2.06 5.42 -5.37 -2.1 -2.07 5.38 -2.1 5.38 5.25 2.11 5.21 2.17 5.16 2.23 
+2.28 -5.38 2.24 -5.4 2.16 -5.43 5.3 2.28 5.21 2.35 5.18 2.39 5.12 2.45 2.34 -5.45 
+5.12 2.5 2.35 -5.49 5.12 2.58 5.05 2.63 4.99 2.69 4.93 2.75 4.88 2.82 4.79 2.87 
+2.63 -5.56 4.79 2.95 4.73 2.99 2.67 -5.62 2.58 -5.64 2.52 -5.66 4.84 3.04 2.5 -5.73 
+4.82 3.11 4.75 3.14 2.54 -5.77 2.48 -5.82 4.77 3.19 2.45 -5.86 2.37 -5.93 2.28 -5.94 
+2.22 -5.97 4.92 3.19 2.17 -6.04 2.11 -6.05 2.02 -6.12 5 3.19 1.99 -6.16 1.89 -6.18 
+5.01 3.16 1.87 -6.25 4.97 3.22 -1.89 6.29 -2 6.27 4.82 3.35 -2.13 6.25 -2.22 6.23 
+-2.3 6.16 -2.38 6.14 -2.48 6.09 -2.56 6.04 4.45 3.61 4.34 3.67 -2.75 6.03 4.21 3.78 
+-2.88 6.01 4.05 3.86 -3.04 5.99 3.88 3.95 -3.19 5.95 3.75 4.04 -3.34 5.9 -3.41 5.86 
+3.52 4.14 3.4 4.23 3.3 4.32 3.62 -5.88 2.98 3.99 0 -115.6 -4.84 -3.37 1.84 -6.36 
+1.78 -6.41 1.67 -6.42 4.97 3.23 -1.72 6.46 -1.8 6.45 -1.91 6.41 0 115.6 0.3 0.39 
+3.61 -5.95 3.23 4.47 3.58 -6.03 3.5 -6.1 3.25 4.52 3.5 -6.18 3.38 -6.25 3.3 4.57 
+3.16 4.67 3.43 -6.38 3.13 4.75 2.91 -5.53 0 -557.62 -11.16 -10.62 -4.25 -6.36 -11.46 -10.05 
+-5.02 -6.57 11.7 9.96 11.67 10.52 4.52 6.73 4 6.38 0 557.62 0.49 -0.96 3.32 -6.55 
+3.21 -6.62 3.13 -6.73 2.99 -6.77 2.91 -6.86 2.78 -6.92 2.69 -7.01 3.58 4.55 -2.75 7.04 
+-2.87 6.99 -2.97 6.88 -3.06 6.83 -3.19 6.75 3.13 4.84 2.99 4.95 3.32 -6.82 3.23 -6.88 
+3.02 4.97 p
+3.2 -7.03 2.12 3.6 0 -34.66 -3.53 -4.6 2.52 -7.18 3.62 4.53 2.46 -7.33 2.36 -7.38 
+2.22 -7.46 -3.8 -4.36 -3.91 -4.25 -2.11 7.34 -2.21 7.27 -3.88 -4.27 -3.97 -4.19 2.11 -7.16 
+2 -7.21 4.08 4.08 1.93 -7.33 4.04 4.08 1.86 -7.44 4.02 4.1 1.78 -7.59 1.67 -7.64 
+4.04 4.04 1.56 -7.79 1.46 -7.86 1.3 -7.9 4.1 3.86 1.21 -8.05 1.09 -8.12 4.11 3.76 
+4.03 3.86 3.95 3.93 -1.22 8.43 -1.37 8.36 3.76 4.23 3.66 4.32 -1.65 8.48 -3.6 -4.43 
+-3.69 -4.32 -1.67 8.22 -3.73 -4.34 -3.82 -4.23 -1.7 7.96 -1.82 7.9 -1.97 7.81 -2.08 7.75 
+-2.24 7.68 -2.36 7.62 -3.54 -4.62 -2.41 7.46 -2.54 7.38 -3.5 -4.62 -2.61 7.25 0 34.66 
+0.88 1.46 3.14 -7.16 2.95 5.12 -3.26 7.21 2.74 5.25 -3.43 7.16 2.5 5.43 -3.62 7.09 
+2.28 5.58 -3.84 7.04 -3.93 6.92 -4.06 6.79 -2 -5.68 -4.05 6.68 -4.16 6.55 -1.98 -5.6 
+-4.16 6.44 -2.06 -5.49 -4.17 6.32 -4.27 6.23 -4.36 6.09 1.8 5.53 -4.54 6.01 1.56 5.62 
+1.39 5.71 4.69 -5.99 4.63 -6.12 -1.56 -5.73 4.45 -6.23 1.65 5.71 1.47 5.84 -4.6 6.25 
+-4.71 6.12 -4.8 5.99 -4.86 5.88 0.96 5.92 0.78 6.04 0.61 6.14 -5.23 5.7 0.32 6.23 
+-5.37 5.54 0.04 6.29 -0.2 6.4 -0.39 6.51 5.63 -5.4 5.58 -5.58 -0.44 6.68 -5.66 5.55 
+-0.76 6.75 -5.82 5.34 -5.86 5.18 0.93 -6.68 0.7 -6.55 -5.76 5.12 -5.79 5 -0.87 6.45 
+-5.92 4.79 -1.17 6.46 -6.04 4.58 -6.1 4.41 -6.12 4.26 1.39 -6.25 -6.1 4.19 -6.12 4.05 
+-6.16 3.91 -6.18 3.78 1.37 -5.88 -6.16 3.71 -6.18 3.6 -1.47 5.71 -6.27 3.37 1.52 -5.62 
+1.32 -5.58 -6.18 3.41 -6.23 3.28 -1.41 5.41 -1.61 5.42 -1.8 5.47 -6.34 2.86 -2.04 5.43 
+-2.23 5.45 6.4 -2.67 6.4 -2.8 -2.41 5.69 6.4 -2.82 6.43 -2.95 6.38 -3.12 6.4 -3.25 
+-2.52 6.14 -2.76 6.21 -6.44 3.04 -6.45 2.89 -3.04 6.01 -6.49 2.63 3.06 -5.88 -6.45 2.61 
+-6.45 2.45 -5.38 1.96 -1.06 0.37 -0.63 1.15 -2.48 4.38 -6.45 2.07 -2.17 0.67 -4.25 1.26 
+-3.3 5.29 -6.42 1.67 -3.5 5.19 -3.73 5.16 -3.28 0.67 -3.05 0.61 -3.91 5.01 -3.17 0.55 
+-3.12 0.48 -2.26 2.73 -1.8 2.15 -2.23 0.28 -4 0.48 -4.21 4.71 -4.17 0.35 -1.97 0.15 
+-2.25 2.39 -2.11 2.14 -3.47 0.18 -2.56 0.08 -2.02 2 -0.41 0.39 -2.06 1.97 -2.52 0.02 
+-3.38 0 -5.89 -0.11 -5.84 -0.2 -5.8 -0.33 -4.03 3.54 -0.31 0.26 -0.12 0.09 -4.38 3.64 
+5.62 0.57 5.66 0.48 5.71 0.34 0.98 0.07 4.77 0.2 5.79 0.16 -5.14 4.34 -5.71 -0.29 
+-5.66 -0.39 -0.35 -0.04 -5.25 -0.46 -5.58 -0.61 -5.51 -0.69 -5.47 -0.81 -5.42 -0.89 4.47 -3.43 
+4.32 -3.47 1.47 -1.24 2.7 -2.3 -5.67 -0.61 3.93 -3.47 3.78 -3.5 -5.8 -0.48 -5.75 -0.57 
+-4.84 -0.56 -0.89 -0.11 -3.54 3.15 -5.6 -0.89 -3.58 3 -2.15 1.74 -1.54 1.19 -2.5 -0.54 
+-2.86 -0.65 -2.17 1.63 -1.54 1.15 -1.65 -0.43 -3.58 -0.98 -3.69 2.63 -3.82 2.54 -3.93 2.5 
+-4.02 2.43 -4.12 2.39 -4.21 2.3 -4.29 2.24 4.32 2.14 -4.54 2.26 -4.66 2.19 -1.37 0.63 
+-3.37 1.48 p
+-2.95 -1.84 -0.93 -0.57 -2.52 -1.63 -1.31 -0.87 -2.99 1.24 -1.52 0.61 -4.58 1.78 -3.47 -2.71 
+-4.5 1.61 -4.55 1.55 3.12 2.86 -4.77 1.52 2.97 2.88 1.63 1.54 1.41 1.28 5.14 -1.68 
+5.08 -1.75 3.43 2.62 5.17 -1.93 3.62 2.47 5.25 -2.13 5.16 -2.21 4.02 2.23 3.86 2.06 
+0.2 0.11 4.1 2.08 4.16 2.04 -1.75 0.79 -4.05 1.82 4.03 2.06 0.96 0.48 3.14 1.52 
+-6.27 2.72 -1.78 -0.93 -2.14 -1.17 -4.17 1.69 -2.07 0.8 -0.61 -0.37 -2.93 -1.8 -0.16 -0.08 
+-0.26 0.08 -4.92 1.84 -0.96 0.35 0 135.26 10.05 -1.67 13.18 -2.75 13.2 -2.76 13.2 -3.34 
+13.2 -3.32 11.26 -3.21 7.53 -2.35 7.54 -2.32 13.2 -4.55 13.2 -4.58 5.6 -2.22 0 -130.44 
+5.62 -4.69 -0.02 0 -5.83 0.05 3.88 -3.32 1.46 -1.3 -5.91 0.09 5.03 -4.54 1.35 -0.04 
+4.62 -0.17 6.01 -0.35 5.54 -0.41 0.52 -0.05 5.04 -5.01 6.18 -0.72 5.6 -0.75 0.61 -0.11 
+6.23 -0.98 6.29 -1.13 6.34 -1.26 5.05 -5.77 6.4 -1.56 4.82 -5.95 6.46 -1.82 4.58 -6.1 
+4.3 -6.1 6.51 -2.28 4.05 -6.2 3.78 -6.21 6.51 -2.67 3.52 -6.31 6.49 -2.97 3.23 -6.39 
+6.46 -3.23 6.49 -3.38 -3.17 6.61 -3.43 6.66 -6.53 3.15 -3.73 6.59 -6.55 2.87 -4.04 6.49 
+-4.32 6.49 -6.55 2.45 -4.58 6.38 -4.88 6.36 -6.51 2.02 -5.14 6.21 -6.45 1.71 -5.4 6.04 
+-6.38 1.41 -6.31 1.26 -6.27 1.11 -5.53 5.55 -6.17 0.82 5.45 -5.4 -6.19 0.84 -3.1 0.37 
+-3.04 0.33 -5.34 5.12 -2.45 2.26 -3.11 2.8 -4.08 0.19 -1.89 0.09 -2.67 2.3 -3.04 2.54 
+-0.87 0.02 -4.95 0 0 130.44 7.59 -2.99 13.2 -5.23 5.12 -2.17 10.61 -4.82 10.61 -4.79 
+26.39 -13.29 6.49 -3.52 9.94 -5.66 9.92 -5.67 12.11 -7.55 12.09 -7.55 2.17 -1.41 13.2 -9.2 
+13.19 -9.22 8.75 -6.54 8.81 -6.96 8.81 -6.95 7.42 -6.25 7.4 -6.25 11.54 -10.28 8.54 -8.07 
+8.53 -8.05 9.31 -9.33 1.15 -1.22 0 -179.14 0.28 -6.94 5.32 -6.32 5.23 -6.49 -0.17 -6.83 
+5.03 -6.64 4.95 -6.8 0.39 6.86 4.95 -6.95 4.88 -7.11 0.39 6.96 4.88 -7.29 4.77 -7.44 
+4.66 -7.64 0.54 7.07 4.69 -7.83 2.47 -4.36 0 -44.82 -1.82 -6.14 3.61 -7.99 -2.11 -5.92 
+3.36 -8.03 -2.34 -5.73 3.15 -8.09 2.99 -8.2 -2.69 -5.43 2.78 -8.22 -2.89 -5.25 2.54 -8.22 
+-3.11 -5.04 -3.21 -4.91 2.24 -8.16 3.28 4.82 2.16 -8.33 2.02 -8.44 1.86 -8.5 3.41 4.62 
+1.78 -8.7 3.36 4.64 3.26 4.73 3.15 4.86 2.84 4.64 0 -46.16 -3.54 -4.23 -3.61 -4.14 
+-3.71 -4.04 -3.79 -3.95 -1.02 8.77 -3.82 -3.99 -3.93 -3.91 0.91 -8.55 3.97 3.8 0.78 -8.72 
+3.93 3.75 3.85 3.82 3.77 3.93 3.67 3.99 3.61 4.09 0.87 -9.45 3.56 4.02 -0.93 9.62 
+-3.49 -4.19 -1.06 9.39 0 46.16 0.22 0.32 -2.11 9.18 -2.26 9.07 2.76 5.34 -2.52 9.07 
+-2.69 8.96 2.43 5.71 -2.96 8.91 -2.32 -5.82 -2.99 8.71 -3.14 8.57 -3.3 8.44 2 6.08 
+-3.56 8.38 -3.69 8.25 -1.78 -6.23 -3.71 8.05 0 44.82 2.08 -3.63 4.43 -8.18 4.32 -8.33 
+0.84 7.03 -4.45 8.42 0.5 7.27 -4.71 8.27 -4.84 8.09 -4.95 7.88 -0.09 -7.4 -4.9 7.68 
+-5.04 7.48 p
+-5.12 7.32 -5.23 7.14 0.17 -7.3 -0.05 -7.14 -5.08 6.96 -5.16 6.8 -5.25 6.62 -5.34 6.46 
+-5.42 6.29 0 179.14 6.9 -7.33 8.05 -8.53 10.27 -11.54 12.5 -14.84 13.89 -17.67 6.53 -8.75 
+9.21 -13.21 9.18 -13.22 1.43 -2.17 3.88 -6.23 0 -214.28 -1.87 -6.27 3.17 -9.14 3 -9.29 
+-2.24 -5.91 2.73 -9.31 2.54 -9.44 -2.58 -5.49 2.25 -9.44 2.69 5.38 2.2 -9.7 2 -9.8 
+2.75 5.21 -2.11 9.98 2.54 5.51 -2.38 9.96 -2.58 9.86 -2.76 9.7 -2.95 9.55 -3.12 9.4 
+-3.28 9.25 0 214.28 3.64 -5.88 2.96 -4.71 0 -169.59 -0.93 -7.21 3.82 -9.68 1.08 7.07 
+-3.96 9.81 0 169.59 4.6 -7.4 1.5 -2.65 0 -45.05 4.64 -13.15 7.66 -14.78 3.52 -12.37 
+2.93 -11.79 2.41 -11.26 1.95 -10.74 1.5 -10.3 -5.66 13.71 -5.92 13.28 1.75 -10.29 1.35 -9.87 
+0.99 -9.51 -5.25 12.33 0.91 -9.33 0.61 -8.98 -4.97 11.63 0.52 -8.83 4.73 -11.48 0 -8.38 
+-0.26 -8.07 -0.5 -7.84 -4.1 11 -4.3 10.76 -0.37 -7.86 -0.61 -7.62 3.95 -10.5 0.76 7.48 
+0.75 -2.06 0 -127.61 -3.02 -4.7 -3.12 -4.6 -3.21 -4.52 1.04 -9.92 3.3 4.34 0.89 -10.18 
+3.28 4.26 3.17 4.36 -1.06 10.55 -1.26 10.41 0 127.61 3.18 -8.79 3.71 -11.09 0.91 7.4 
+0.71 7.66 1.43 -4.38 0 -114.46 -2.78 -4.92 1.19 -10.91 2.89 4.7 -1.3 11.13 0 114.46 
+2.41 -7.32 0.67 7.73 3.82 -12.15 0.65 7.77 3.77 -12.65 3.52 -12.93 3.21 -13.2 1.04 7.29 
+0.87 7.59 3.32 -14.08 0.87 7.57 0.65 7.88 3.45 -15.08 3.11 -15.41 2.69 -15.73 2.26 -16.02 
+-1.54 -6.29 1.65 -15.82 1.2 -16.06 0.74 -16.28 0.29 -16.45 -0.22 -16.61 -2.3 -3.69 -2.38 -3.58 
+0.37 15.62 -2.41 -3.95 -2.48 -3.82 0.07 14.64 -2.5 -4.12 -0.21 14.15 -0.61 14.02 -0.93 13.87 
+-1.28 13.7 -2.19 -5.38 -2.32 -5.21 -2.41 -5.05 -2.54 -4.88 0.87 -12.5 0.57 -12.61 0.26 -12.72 
+-2.88 -3.93 -2.95 -3.82 -0.13 12.16 -2.97 -4 0.07 -11.91 -3.11 -3.67 -3.19 -3.58 -0.3 -11.48 
+-0.54 -11.57 -3.34 -3.04 -0.85 -11.37 -1.11 -11.41 -1.37 -11.46 -3.45 -2.28 -1.63 -11.26 -3.49 -2.04 
+-3.56 -2.02 -3.64 -2.02 -1.85 -10.63 -3.67 -1.8 -3.75 -1.8 -2.04 -10.22 -3.77 -1.62 -2.24 -10.05 
+-2.47 -10.03 -2.67 -10.02 -2.89 -10 -3.12 -9.98 -3.35 -9.94 -3.58 -9.89 3.46 0.34 -3.87 -10.02 
+-4.08 -9.96 -4.32 -9.92 -4.54 -9.83 -4.75 -9.75 -4.97 -9.65 2.82 -0.72 -5.3 -9.72 2.62 -0.95 
+2.52 -1.05 5.54 10.03 2.52 -1 2.41 -1.11 2.3 -1.21 5.66 10.68 2.3 -1.15 2.2 -1.28 
+5.66 11.18 2.21 -1.19 2.09 -1.35 5.66 11.77 2.11 -1.26 1.97 -1.39 1.84 -1.56 1.72 -1.74 
+1.54 -1.91 -6.49 -13 1.22 -2.39 -7.03 -13.05 -7.32 -12.78 0.59 -3.11 -7.86 -12.74 -8.14 -12.43 
+-0.11 -3.8 8.38 12.66 -0.11 -3.87 -0.39 -4.14 -8.89 -13.02 -9.18 -12.65 -9.41 -12.24 -1.52 -4.97 
+-1.86 -5.27 -2.24 -5.6 -2.66 -5.95 -3.11 -6.32 -3.6 -6.68 -4.11 -7.07 -4.71 -7.51 12.02 13.04 
+11.87 13.72 11.72 14.45 -4.1 -7.77 11.91 15.3 11.66 16.06 -3.75 -7.96 11.87 17.08 11.5 17.88 
+-3.28 -8.01 11.68 19.1 11.16 19.96 10.61 20.77 9.96 21.55 9.22 22.27 8.44 22.89 7.6 23.48 
+-0.48 3.3 p
+6.29 22.98 -1.04 1.91 5.14 22.36 4.3 22.54 1.52 0.04 3.56 23.7 -1.65 -1.05 -1.73 -1.15 
+-1.8 -1.23 2.45 20.94 -1.93 -2.11 1.7 20.1 -2 -2.86 1.06 19.29 -2.04 -3.49 0.5 18.46 
+-0.07 18.32 -0.65 18.11 -1.21 17.89 -1.63 -5.8 -1.54 17.05 -2.02 16.8 -2.5 16.47 -2.91 16.17 
+-3.37 15.84 -3.73 15.45 -4.11 15.08 -0.17 8.98 -0.48 9.39 4.76 -15.82 4.34 -16.28 -0.11 9.05 
+-0.43 9.53 4.64 -17.64 -0.37 9.53 -5.05 18.14 0.78 -10.02 -5.08 17.14 0.81 -9.96 -5.1 16.19 
+-5.47 15.71 -5.82 15.19 -2 11 -2.52 11.54 -3.04 12.13 -7.42 15.43 -4.17 12.98 -8.14 14.95 
+0 45.05 9.81 -17.23 3.49 -6.51 13.26 -26.43 9.62 -21.24 2.17 -5.12 10.43 -26.43 9.11 -26.41 
+4.64 -15.1 3.21 -11.29 6.66 -26.41 5.49 -26.41 4.38 -26.41 3.23 -26.39 2.17 -26.41 1.09 -26.41 
+0 -26.41 -1.09 -26.39 -2.17 -26.43 -3.23 -26.39 -4.38 -26.41 -5.49 -26.41 -6.66 -26.41 -3.21 -11.28 
+-4.64 -15.11 -9.11 -26.41 -10.43 -26.43 -2.17 -5.12 -9.62 -21.25 -13.26 -26.43 -3.49 -6.49 -11.31 -19.9 
+-7.55 -12.11 -7.53 -12.11 -1.43 -2.17 -9.2 -13.21 -9.18 -13.22 -6.53 -8.74 -13.89 -17.67 -12.5 -14.84 
+-10.27 -11.55 -8.05 -8.53 -8.05 -8.55 -9.31 -9.33 -8.53 -8.05 -8.54 -8.07 -11.54 -10.27 -7.4 -6.27 
+-7.42 -6.25 -8.81 -6.95 -8.81 -6.96 -8.75 -6.54 -13.19 -9.22 -13.2 -9.2 -2.17 -1.41 -12.09 -7.55 
+-12.11 -7.55 -9.92 -5.66 -9.94 -5.66 -6.49 -3.51 -26.39 -13.29 -10.61 -4.79 -10.61 -4.82 -5.12 -2.17 
+-13.2 -5.23 -13.19 -5.2 -13.2 -4.58 -13.2 -4.56 -15.06 -4.64 -11.26 -3.23 -13.2 -3.32 -13.2 -3.34 
+-13.2 -2.75 -13.18 -2.76 -13.2 -2.2 -13.2 -2.16 -26.34 -3.26 -26.39 -2.17 -13.17 -0.54 -13.19 -0.54 
+-26.37 0 -13.2 0.54 -13.17 0.54 -13.2 1.09 -13.17 1.08 -13.2 1.63 -13.17 1.63 -13.2 2.16 
+-13.2 2.2 -13.17 2.76 -13.19 2.75 -13.2 3.34 -13.2 3.32 -11.27 3.23 -15.06 4.64 -13.2 4.56 
+-13.19 4.58 -13.2 5.2 -13.2 5.23 -5.12 2.17 -10.62 4.82 -10.61 4.79 -26.39 13.29 -6.49 3.51 
+-9.94 5.66 -9.92 5.66 -12.11 7.55 -12.09 7.55 -2.17 1.41 -13.2 9.22 -13.19 9.2 -8.75 6.54 
+-8.81 6.96 -8.81 6.95 -7.42 6.27 -7.4 6.25 -11.54 10.27 -8.53 8.07 -8.51 8.05 -9.33 9.33 
+-8.05 8.55 -8.05 8.53 -10.26 11.55 -12.5 14.84 -13.89 17.67 -6.54 8.74 -9.18 13.22 -9.2 13.21 
+-1.43 2.17 -7.53 12.11 -7.55 12.11 -11.31 19.9 -3.5 6.49 -13.25 26.43 -9.62 21.25 -2.17 5.12 
+-10.44 26.43 -9.12 26.41 -4.64 15.11 -3.21 11.28 -6.66 26.41 -5.49 26.41 -4.38 26.41 -3.24 26.39 
+-2.17 26.43 p f*
+255 0 r6
+2031.54 3072.2 -2.8 4.95 3.75 6.36 3.84 6.27 -2.52 5.1 -2.39 5.19 4.11 6.21 -2.2 5.29 
+4.28 6.12 4.36 6.01 4.45 5.92 -1.76 5.41 4.6 5.8 4.69 5.7 -1.45 5.49 4.86 5.58 
+-1.23 5.58 5.01 5.45 5.08 5.34 -0.89 5.62 -0.71 5.71 -5.25 -5.3 -0.61 5.84 5.32 5.25 
+-0.37 5.9 5.46 5.08 5.51 4.97 0 5.9 5.64 4.78 0.26 5.95 5.77 4.58 5.84 4.47 
+0.59 5.9 5.95 4.28 5.96 4.14 0.93 5.84 6.07 3.93 1.17 5.82 6.17 3.71 1.43 5.81 
+6.23 3.5 6.27 3.37 1.73 5.66 6.32 3.13 1.97 5.61 6.36 2.91 6.38 2.75 6.38 2.63 
+6.4 2.49 6.4 2.39 6.41 2.23 6.4 2.13 6.4 2 6.41 1.87 2.3 4.67 6.4 1.65 
+6.4 1.49 6.38 1.41 2.45 4.34 6.38 1.15 2.58 4.23 2.78 4.21 6.29 0.8 6.27 0.71 
+6.27 0.59 2.8 3.84 2.97 3.82 6.14 0.24 6.14 0.13 3.02 3.56 6.04 -0.09 3.08 3.41 
+3.32 -0.18 -6.32 -3.23 -0.17 -0.09 -8.64 -3.39 -0.52 -0.22 -8.31 -3.58 -0.74 -0.28 -8.62 -3.93 
+-0.28 -0.15 -7.6 -2.5 -5.42 -2.47 -2.43 -0.7 -8.22 -4.66 -0.91 -0.85 -6.2 -4.3 -3.37 -2.73 
+-3.67 -2.64 -4.43 -4.97 -2.26 -2.04 -7.44 -4.25 -0.74 -0.54 -4.66 -5.47 -1.34 -4.47 -2.85 -5.04 
+-1.95 -1.11 -6.42 -2.69 -2.56 -0.35 -1.43 3.64 2.73 5.23 -1.08 1.56 -1.29 1.78 -3.08 1.24 
+-4.04 0.41 -1.22 0.13 -3.41 -1.78 -0.8 -0.41 -2.62 -1.52 -7.47 -5.64 -2.84 -2.69 -4.51 -4.38 
+-0.5 -0.5 -4.12 -3.11 -2.8 -2.11 -0.26 -0.24 -7.16 -7.46 -1.67 -1.87 -3.25 -6.64 0.02 -4.86 
+-0.91 -5.44 -0.87 -5.47 -0.57 -5.36 2.3 -3.54 0.37 -1.15 0.39 -3.38 -0.43 -0.54 -5.8 -6.3 
+-5.64 -6.57 -0.04 -0.06 -5.36 -7.97 -1.11 -2.32 1.56 -2.13 0.91 -1.49 1.97 -4 4.41 -2.06 
+5.36 4.99 5.62 3.75 1.93 1.21 3.75 2.2 5.67 3.64 5.9 2.37 5.97 1.86 0.26 0.02 
+1 -4.27 0.28 -4.32 0 -0.48 0.24 -0.66 1.23 -3.36 1.24 -4.21 -0.21 -1.37 -0.24 -4.14 
+0.09 -5.23 2.19 -3.59 1.76 -3.99 1.86 -3.93 2.76 -3.19 1.39 -0.91 2.13 -1.65 5.64 0.72 
+1.37 -0.2 -0.22 -1.89 -2.06 -5.75 0.98 -4.88 4.21 -1.93 4.45 -1.65 1.82 -4.19 1.15 -4.93 
+0.65 -4.36 0.24 -0.96 2.61 -2.41 0.63 -0.56 3.47 -2.71 3.36 -2.84 4.78 -1.3 4.73 -1.32 
+5.64 -0.24 3.12 0.55 3.2 0.02 5.08 -0.78 -3.21 -3.73 -3.3 2.89 -4.06 -4.71 -3.28 2.97 
+-4.05 -4.75 -4.02 -4.8 -3.34 3.08 -3.25 3.14 -4.1 -4.79 -4.02 -4.88 -3.32 3.25 -4.03 -4.88 
+-3.32 3.32 -4.04 -4.93 -3.96 -4.99 3.45 -3.37 -3.84 -5.04 -3.52 3.36 -3.86 -5.08 -3.49 3.45 
+-3.84 -5.12 -3.47 3.51 -3.39 3.61 -3.93 -5.17 -3.36 3.69 -3.9 -5.21 -3.85 -5.25 -3.77 -5.32 
+-3.71 -5.38 3.62 -3.71 -2.54 -3.84 -1.04 -1.59 -3.5 -5.46 -3.41 -5.54 -3.82 3.69 3.47 5.53 
+-3.67 3.8 3.63 5.47 3.71 5.42 3.78 5.38 -3.39 3.84 -3.27 3.93 -3.18 3.99 4.06 5.28 
+-3.02 4.05 -2.91 4.12 -4.17 -5.25 -2.86 4.21 -2.75 4.3 -2.63 4.36 -2.52 4.45 -2.06 3.91 
+-0.32 0.63 -4.5 -5.27 -2.32 4.62 -2.24 4.71 -4.54 -5.34 -4.47 -5.41 -4.38 -5.49 -4.32 -5.58 
+-4.23 -5.64 P
+-4.14 -5.75 -4.06 -5.82 -3.99 -5.92 -3.89 -5.97 2.89 -4.73 -3.73 -6.05 -3.64 -6.14 3.14 -4.62 
+3.25 -4.52 3.37 -4.42 3.47 -4.37 3.36 6.08 3.52 -4.27 3.38 5.99 3.45 5.92 3.5 -4.23 
+3.58 -4.14 -3.34 -5.9 -3.26 -5.95 -3.71 4.1 -3.23 -6.03 -3.14 -6.1 -3.04 -6.14 -2.97 -6.23 
+3.97 -4.04 4.05 -3.95 2.84 6.17 4.08 -3.89 -2.78 -6.14 4.23 -3.8 -2.65 -6.16 -2.54 -6.21 
+-2.45 -6.27 -2.39 -6.29 -2.28 -6.36 -2.16 -6.4 -4.59 3.63 -4.46 3.69 2.28 6.47 2.39 6.4 
+-4.28 3.84 2.52 6.41 2.65 6.36 -4.11 3.97 -3.99 4.05 -3.91 4.15 2.91 6.38 -3.73 4.28 
+3.06 6.33 -3.56 4.39 -3.47 4.45 -3.34 4.55 -3.26 4.64 3.43 6.38 -3.04 4.77 -2.95 4.86 p f*
+2045.12 3157.64 -1.06 5.79 5.04 5.64 0.98 -5.79 -4.95 -5.64 f*
+2054.79 2850.11 -5.36 2.58 0.42 6.82 0.54 6.82 5.34 -2.69 0.61 6.75 0.71 6.7 0.8 6.68 
+0.91 6.66 1.02 6.65 5.25 -2.91 1.08 6.58 1.17 6.54 5.26 -2.96 1.23 6.47 1.32 6.45 
+1.41 6.4 1.52 6.38 1.58 6.36 -5.05 3.14 1.71 6.36 -4.95 3.25 -4.9 3.32 -4.8 3.39 
+-4.75 3.47 2 6.46 2.11 6.42 4.64 -3.54 -2.06 -6.37 4.78 -3.43 4.84 -3.37 4.93 -3.29 
+4.97 -3.22 5.05 -3.14 1.82 6.23 1.89 6.18 5.04 -3.14 5.12 -3.09 5.16 -3.02 1.84 6.08 
+5.19 -2.97 5.25 -2.93 5.32 -2.84 -1.72 -5.99 5.41 -2.75 5.49 -2.72 5.54 -2.64 5.6 -2.56 
+5.64 -2.54 -1.45 -5.88 5.73 -2.43 -1.34 -5.88 5.82 -2.37 -1.24 -5.86 3.84 -1.5 0 -315.62 
+0.22 -0.87 0.71 -0.62 0.08 0.61 -1.02 0.89 0 315.62 2.06 -0.78 -1.15 -5.86 3.69 -1.36 
+0 -328.56 1 -3.56 2.99 -5.86 3.04 -5.86 0.04 -0.13 2.59 -5.75 6.1 -5.52 1.17 -0.8 
+5.42 -1.34 0.09 2.82 -0.76 3.23 -0.5 2.61 -1.8 5.77 -6.25 5.54 -4.08 2.5 -1.89 1.47 
+-1.97 1.54 -5.19 3.34 0 328.56 2.3 -0.85 -1.06 -5.83 6.05 -2.13 6.12 -2.06 6.14 -2.02 
+-0.92 -5.77 6.23 -1.93 -0.83 -5.77 6.29 -1.87 -0.74 -5.75 -0.69 -5.76 6.38 -1.75 -0.61 -5.75 
+-0.54 -5.73 -0.5 -5.73 6.47 -1.65 6.49 -1.61 6.53 -1.56 -0.39 -5.66 6.58 -1.48 -0.3 -5.66 
+6.62 -1.41 6.67 -1.39 -0.26 -5.6 6.7 -1.3 6.73 -1.28 6.75 -1.24 -0.18 -5.53 6.8 -1.17 
+-0.13 -5.51 6.81 -1.11 6.86 -1.09 -0.07 -5.45 -0.02 -5.46 0 -5.45 0.07 -5.43 0.09 -5.45 
+-6.84 0.98 0.13 -5.45 -6.81 1 0.2 -5.46 0.24 -5.45 -6.79 0.98 0.28 -5.46 0.35 -5.47 
+0.39 -5.45 0.43 -5.45 0.48 -5.42 0.54 -5.43 -6.68 0.87 0.59 -5.45 0.67 -5.41 0.69 -5.42 
+-6.6 0.8 0.78 -5.4 -6.55 0.78 0.85 -5.42 -6.51 0.78 -1.39 0.18 -5.08 0.65 -6.44 0.82 
+0.99 -5.51 -6.37 0.82 1.06 -5.54 -6.31 0.81 1.16 -5.56 1.24 -5.55 1.31 -5.51 1.36 -5.51 
+1.43 -5.52 -6.12 0.66 1.54 -5.52 -6.08 0.63 1.67 -5.54 -5.99 0.59 1.76 -5.54 1.85 -5.53 
+-5.86 0.52 1.97 -5.55 -5.8 0.5 -11.45 1 2.19 -5.64 2.28 -5.64 2.36 -5.6 2.43 -5.57 
+-5.45 0.32 2.58 -5.6 -5.36 0.3 -5.34 0.28 -5.27 0.26 2.84 -5.68 2.95 -5.67 -5.1 0.18 
+3.11 -5.69 3.21 -5.64 -4.95 0.07 3.37 -5.64 -4.82 0 3.55 -5.67 3.64 -5.62 3.73 -5.58 
+3.87 -5.55 3.95 -5.49 -4.39 -0.22 4.15 -5.49 -4.25 -0.28 4.34 -5.47 4.45 -5.43 4.53 -5.38 
+4.67 -5.32 4.78 -5.25 3.82 0.45 3.86 0.46 4.71 -5.14 -3.78 -0.48 -3.73 -0.48 -3.67 -0.52 
+-4.96 5.23 -3.71 -0.52 -3.62 -0.54 -5.06 5.36 -4.95 5.43 -3.75 -0.48 -3.71 -0.52 -5.01 5.55 
+-4.88 5.63 -4.78 5.7 -4.64 5.76 -4.54 5.79 -4.41 5.86 -4.29 5.93 4.29 0.19 -4.1 5.92 
+4.45 0.14 -3.91 5.9 -3.8 5.95 -3.69 6.02 -4.67 0.02 -3.64 6.08 -3.54 6.14 -3.41 6.16 
+-3.3 6.18 -3.19 6.25 -3.08 6.25 5.03 -0.34 -2.9 6.23 -2.8 6.25 5.2 -0.48 -2.64 6.23 
+-2.54 6.25 -2.43 6.27 -2.32 6.32 -2.23 6.31 -2.11 6.34 -2.02 6.34 5.55 -0.91 -1.87 6.31 
+-1.78 6.34 P
+-1.7 6.34 -1.56 6.34 -1.5 6.36 -1.37 6.38 -1.28 6.38 -1.2 6.38 -1.11 6.4 -0.98 6.38 
+-5.8 1.5 -0.93 6.46 -5.75 1.59 -0.82 6.5 -5.73 1.68 -0.74 6.57 -5.68 1.76 -0.66 6.64 
+-5.64 1.85 -0.55 6.68 -0.43 6.71 -5.6 1.99 -0.32 6.75 -0.24 6.73 -5.53 2.17 -0.13 6.79 
+-0.02 6.77 0.09 6.77 0.19 6.74 -5.44 2.46 0.3 6.79 p f*
+2100.2 3047.83 -3.88 3.84 3.3 5.75 3.84 -3.84 3.93 -3.75 4.02 -3.69 4.1 -3.63 -3.06 -5.73 
+-4.17 3.61 -4.08 3.69 -3.99 3.75 f*
+2113.76 3027.5 -4.32 3.52 3 5.77 4.23 -3.54 -2.91 -5.75 f*
+2115.37 3018.25 -4.45 3.43 2.84 5.82 4.38 -3.47 4.46 -3.38 -2.73 -5.77 -4.51 3.38 f*
+0 155 255 rG
+2115.56 3208.7 -1.56 2.13 1.11 2.32 5.36 7.97 0.04 0.06 5.64 6.57 5.8 6.3 0.43 0.54 
+-0.39 3.38 -0.37 1.15 -2.3 3.54 0.57 5.36 0.87 5.47 0.91 5.44 -0.02 4.86 3.25 6.64 
+1.67 1.87 7.16 7.46 0.26 0.24 2.8 2.11 0 -14.78 -0.3 -0.09 -0.65 -0.41 -1.89 -5.75 
+1.54 0.33 5.88 1.61 2.45 3.34 -1.76 0.91 -5.27 0.07 0 14.78 4.12 3.11 0.5 0.5 
+0 -11.39 -3.45 -0.05 -0.57 -1.97 0.13 0 3.88 2.02 0 11.39 4.51 4.38 2.84 2.69 
+7.47 5.64 2.63 1.52 0.8 0.41 0 -7.62 -0.98 -1.61 0.42 -0.08 0.91 0.63 -0.35 1.06 
+0 7.62 3.41 1.78 1.22 -0.13 4.04 -0.41 3.08 -1.24 1.29 -1.78 1.08 -1.56 -2.73 -5.23 
+1.43 -3.64 2.56 0.35 6.42 2.69 1.95 1.11 2.85 5.04 1.34 4.47 4.66 5.47 0.74 0.54 
+7.44 4.25 2.26 2.04 4.43 4.97 3.67 2.64 3.37 2.73 6.2 4.3 0.91 0.85 8.22 4.66 
+2.43 0.7 5.42 2.47 7.6 2.5 0.28 0.15 8.62 3.93 0.74 0.28 8.31 3.58 0.52 0.22 
+8.64 3.39 0.17 0.09 6.32 3.23 2.63 -0.12 1.56 1.63 3.76 1.43 3.69 -0.35 2.91 2.84 
+0.37 0.26 3.54 3.04 1.02 -0.16 -3.62 -3 -4.05 -2.99 -0.3 -0.15 -8.05 -2.62 -1.15 -0.31 
+-7.42 -2.78 -2.34 -1.19 -5.64 -2.22 -3.55 -1.54 -5.1 -2.19 -3.67 -1.39 -6.09 -2.78 -2.78 -1.3 
+-7.68 -3.37 -0.61 -0.28 -7.05 -1.98 -6.01 -3.43 -4.08 -3.88 -1.21 -0.85 -6.8 -5.21 -1.71 -1.56 
+-3.89 -3.62 -5.92 -5.42 -0.11 -0.05 -5.97 -5.68 1.11 -3.61 0.37 -2.8 -0.15 -1.06 -0.31 -0.35 
+-6.14 -5.83 -1.56 -1.02 -5.95 -1.75 -0.24 -0.07 -5.84 -0.59 -5.82 -0.67 -6.21 -2.28 -6.94 -6.97 
+-0.63 -1.28 -3.63 -5.21 -0.7 -4.84 -4.01 -6.11 -0.48 -0.79 -5.88 -5.21 -4.99 -5.62 -1.26 -1.24 
+-5.66 -7.9 -0.46 -0.82 -5.82 -7.14 -1.93 -2.5 -3.73 -4.43 -5.49 -7.14 -0.34 -0.58 0.41 -0.28 
+6.04 0.13 0.63 0.05 5.38 0.63 5.68 3.77 5.7 4.04 5.86 2.78 5.75 4.23 4.36 6.42 
+1.24 2.39 5.93 5.01 1.25 2.08 4.76 2.97 6.14 5.55 3.28 3.26 3.1 3.88 4.23 3.8 
+2.24 1.86 6.36 3.64 3.61 -0.21 -1.2 -4.5 -1.07 -4.46 -0.34 -4.19 -2.17 -5.04 -0.07 -0.13 
+-2.84 -5.6 -2.78 -5.1 -0.98 -1.13 -4.17 -6.71 -0.07 -1.69 0.16 -2.69 0.17 -4.41 -4.17 -6.66 
+-0.5 -0.89 -1.43 -5.69 -0.15 -4.92 1.56 -3.75 0 -4.84 -0.02 -0.13 -0.02 -5.05 0.65 -4.64 
+2.93 -2.87 2.84 -1.56 0.87 -0.65 0.59 -2.09 0.59 -2.23 1.37 -4.21 2.19 -0.72 1.89 -1.17 
+3.19 -2.67 1.54 -4.15 1.75 -4.01 2.91 -2.99 3.14 -2.76 6.12 -5.73 2.82 -3.12 3.69 -2.28 
+2.85 -3.17 3.34 -2.64 4.27 -1.63 2.54 -0.48 2.91 0.21 4.64 -1.12 2.86 0.21 3.45 0.61 
+-1.73 -2.02 3.36 -2.61 3.43 -2.56 3.47 -2.49 1.17 -0.82 -1.61 0.26 -5.57 -0.07 -3.67 0.17 
+-1.61 0.17 -5.95 -0.43 -3.69 2.39 -3.39 2.71 -2.3 0.87 -1.54 1.33 -0.82 -0.96 -5.08 0.78 
+-3.2 -0.02 -3.12 -0.55 -5.64 0.24 -4.73 1.32 -4.78 1.3 -3.36 2.84 -3.47 2.71 -0.63 0.56 
+-2.61 2.41 -0.24 0.96 -0.65 4.36 -1.15 4.93 -1.82 4.19 -4.45 1.65 -4.21 1.93 -0.98 4.88 
+2.06 5.75 P
+0.22 1.89 -1.37 0.2 -5.64 -0.72 -2.13 1.65 -1.39 0.91 -2.76 3.19 -1.86 3.93 -1.76 3.99 
+-2.19 3.59 -0.09 5.23 0.24 4.14 0.21 1.37 -1.24 4.21 -1.23 3.36 -0.24 0.66 0 0.48 
+-0.28 4.32 -1 4.27 -0.26 -0.02 -5.97 -1.86 -5.9 -2.37 -5.67 -3.64 -3.75 -2.2 -1.93 -1.21 
+-5.62 -3.75 -5.36 -4.99 -4.41 2.06 -1.97 4 -0.91 1.49 p f*
+2 239 204 rG
+2120.9 3215.5 -0.41 0.28 0.34 0.58 5.49 7.14 3.73 4.43 1.93 2.5 5.82 7.14 0.46 0.82 
+5.66 7.9 1.26 1.24 4.99 5.62 5.88 5.21 0.48 0.79 4.01 6.11 0.7 4.84 3.63 5.21 
+0.63 1.28 6.94 6.97 6.21 2.28 5.82 0.67 5.84 0.59 0.24 0.07 5.95 1.75 1.56 1.02 
+6.14 5.83 0.31 0.35 0.15 1.06 -0.37 2.8 -1.11 3.61 5.97 5.68 0.11 0.05 5.92 5.42 
+3.89 3.63 1.71 1.56 6.8 5.21 1.21 0.85 4.08 3.88 6.01 3.43 7.05 1.98 0.61 0.28 
+7.68 3.37 2.78 1.3 6.09 2.78 3.67 1.39 5.1 2.19 3.55 1.54 5.64 2.22 2.34 1.19 
+7.42 2.78 1.15 0.31 8.05 2.63 0.3 0.15 4.05 2.99 3.62 3 1.02 -0.15 -3.71 -2.97 
+-3.99 -2.97 -2.21 -0.93 -5.57 -1.83 -3.39 -0.93 -5.58 -2.08 -4.52 -2.34 -2.66 -1.05 -6.58 -2.84 
+-1.87 -0.8 -6.62 -2.47 -3.58 -1.65 -5.23 -2.45 -4.79 -2.09 -3.52 -1.63 -6.97 -1.89 -3.82 -2.17 
+-4.64 -4.55 -2.3 -1.91 -4.25 -3.19 -5.54 -5.1 -1.74 -4.28 -1.39 -4.19 -1.22 -1.37 -2.73 -3.6 
+-2.78 -4.73 -4.29 -5.34 -0.76 -0.84 -6.88 -4.25 -6.44 -2.97 -5.52 0.67 -0.12 0.04 -4.93 -0.35 
+-0.7 -0.04 -6.51 -3.59 -2.09 -2.08 -3.73 -6.12 -0.47 -4.66 -1.83 -5.38 -1.04 -1.09 -6.3 -4.88 
+-5.46 -5.55 -0.83 -0.89 -6.12 -5.91 -2.71 -3.78 -3.27 -6.16 -1.59 -1.93 -4.18 -4.23 -5.58 -7.05 
+-1.04 -1.37 1.15 -0.07 6.01 0.3 4.04 2.5 1.71 1 1.84 1.45 3.87 3.08 5.8 4.02 
+5.73 7.18 0.41 0.76 5.51 5.47 5.99 3.62 6.04 3.21 3.91 4.13 2.34 2.4 4.45 5.21 
+2.43 5.04 0.67 0.58 5.84 4.04 6.53 4.26 1.58 1.61 5.36 4.08 6.36 2.43 5.95 3.64 
+0.87 0.45 0.89 0.11 3.53 -2.52 0.7 -0.74 1.74 -2.1 -0.61 -3.82 -0.52 -3.82 -0.8 -3.93 
+-2.3 -4.58 -0.09 -0.13 -5.04 -5.75 -1.32 -1.52 -3.41 -4.44 -2.56 -5.1 -0.04 -0.07 -2.61 -5.32 
+-1.24 -4.71 4.11 -1.91 -4.39 -5.77 -0.5 -1.08 -4.34 -6.71 -0.18 -0.24 -0.7 -4.82 -1.3 -5.34 
+-0.67 -2.97 -0.24 -2.24 -0.15 -4.77 0.04 -4.75 2.61 -2.89 1.39 -3.84 1.43 -3.84 1.65 -3.71 
+0.17 -4.08 -0.04 -0.93 0.91 -4.47 2.8 -2.88 3.02 -2.7 2.3 -3.36 1.84 -3.82 3.32 -1.54 
+0.61 -0.35 3.11 -2.67 3.04 -2.73 3.77 -2.04 2.63 -3.2 2.58 -3.27 4.75 -0.98 4.25 -1.48 
+0.82 -0.24 3.89 -0.7 4.96 1.24 2.11 0.5 -1.15 -1.28 -4.04 -4.58 -2.26 -2.63 -3.45 -0.61 
+-2.86 -0.21 -4.64 1.13 -2.91 -0.21 -2.54 0.48 -4.27 1.63 -3.34 2.64 -2.85 3.17 -3.69 2.28 
+-2.82 3.12 -6.12 5.73 -3.14 2.76 -2.91 2.99 -1.75 4.01 -1.54 4.15 -3.19 2.67 -1.89 1.17 
+-2.19 0.72 -1.37 4.21 -0.59 2.23 -0.59 2.09 -0.87 0.65 -2.84 1.56 -2.93 2.87 -0.65 4.64 
+0.02 5.05 0.02 0.13 0 4.84 -1.56 3.75 0.15 4.92 1.43 5.69 0.5 0.89 4.17 6.66 
+-0.17 4.41 -0.16 2.69 0.07 1.69 4.17 6.71 0.98 1.13 2.78 5.1 2.84 5.6 0.07 0.13 
+2.17 5.04 0.34 4.19 1.07 4.46 1.2 4.5 -3.61 0.21 -6.36 -3.64 -2.24 -1.86 -4.23 -3.8 
+-3.1 -3.88 -3.28 -3.26 -6.14 -5.55 -4.76 -2.97 -1.25 -2.08 -5.93 -5.01 -1.24 -2.39 -4.36 -6.42 
+-5.75 -4.23 P
+-5.86 -2.78 -5.7 -4.04 -5.68 -3.77 -5.38 -0.63 -0.63 -0.05 -6.04 -0.12 p f*
+255 0 r6
+2129 2993.6 -4.86 3.14 2.47 5.82 2.54 5.77 4.75 -3.14 4.82 -3.11 -2.45 -5.75 4.95 -3.02 
+-2.3 -5.77 -4.99 3 -4.92 3.06 f*
+7 193 59 rG
+2126.58 3219.38 -1.15 0.07 1.04 1.37 5.58 7.05 4.18 4.23 1.59 1.93 3.27 6.16 2.71 3.78 
+6.12 5.91 0.83 0.89 5.46 5.55 6.3 4.88 1.04 1.09 1.83 5.38 0.47 4.66 3.73 6.12 
+2.09 2.08 6.51 3.59 0.7 0.04 0 -1.67 -1.13 -0.11 -1.12 -0.7 -0.89 -0.54 -1.26 -1.06 
+-3.6 -3.02 -2.37 -3.5 -0.24 -4.49 -0.91 -4.88 -5.1 -5.28 -4.75 -3.75 -1.48 -1.2 -0.57 -0.57 
+-5.68 -6.12 -5.47 -5.12 -0.59 -1.07 -2.25 -5.6 -3.58 -4.69 -5.73 -5.01 -2.73 -3.49 2.95 0 
+5.75 3.6 5.71 5.73 1.25 1.24 3.76 7.23 0.76 0.87 4.19 2.11 1.75 0.91 0.74 0.57 
+5.27 3.8 6.01 3.23 4.04 1.5 1.99 0.87 0.29 0.33 6.04 6.23 1.67 1.95 0.93 4.71 
+4.73 5.7 3.41 2.04 -2.34 3.13 -0.13 0 -2.8 2.95 -2.23 0.26 -4.28 1.24 0 1.67 
+4.93 0.35 0.13 -0.04 5.52 -0.67 6.44 2.97 6.88 4.25 0.76 0.84 4.29 5.34 2.78 4.73 
+2.73 3.6 1.22 1.37 1.39 4.19 1.74 4.28 5.54 5.1 4.25 3.19 2.3 1.91 4.64 4.55 
+3.82 2.17 6.97 1.89 3.52 1.63 4.79 2.09 5.23 2.45 3.58 1.65 6.62 2.47 1.87 0.8 
+6.58 2.84 2.66 1.05 4.52 2.34 5.58 2.08 3.39 0.93 5.57 1.83 2.21 0.93 3.99 2.97 
+3.71 2.97 1.02 -0.15 -3.8 -2.93 -3.95 -2.97 -4.08 -1.73 -3.15 -1.02 -5.58 -1.56 -3.75 -1.39 
+-6.39 -3.35 -0.28 -0.11 -8.03 -3.47 -1.39 -0.74 -8.07 -2.82 -1.09 -0.5 -7.68 -3.6 -1.91 -0.83 
+-6.42 -2.97 -0.7 -0.17 -6.16 -1.58 -1.63 -0.93 -4.38 -4.47 -5.29 -4.45 -0.65 -0.48 -1.56 -3.86 
+7.12 2.82 6.82 2.04 2.3 1.78 5.25 4.43 3.32 2.67 5.1 -1.19 -0.11 -0.37 -0.61 -0.82 
+-2.48 -3.08 -2.06 -3.77 -0.56 -0.22 -5.75 -2.11 -6.55 -1.5 -6.38 -3.43 -1.28 -0.67 -6.38 -4.86 
+-2.21 -1.82 -3.69 -3.54 -4.75 -5.21 -0.74 -0.78 -3.93 -4.6 -4.69 -5.32 -1.95 -0.93 1.78 0.24 
+5.66 -0.45 6.38 2.32 6.64 3.19 4.1 2.86 3.13 2.04 7.05 3.8 1.22 0.89 4.25 4.52 
+3.41 2.8 6.34 1.15 4.43 -0.96 0.84 -0.57 1.7 1.04 -1.04 0.55 -1.91 2.21 4.04 4.02 
+0.89 0.56 6.29 0.76 6.49 1.02 1.46 -0.24 -3.17 -3.28 -0.2 -0.3 -0.02 -0.17 2.11 -2.63 
+-4.82 -3.88 2.15 -2.71 2.06 -2.06 0.99 -0.44 -1.73 -1.82 -2.71 -2.11 -4.82 -3.12 -1.8 -1.46 
+-5.66 -4.6 -0.02 -0.05 -4.71 -4.55 -1.7 -3.82 -1.41 -2.6 -0.91 -1.48 -2.8 -4.32 -0.98 -3.78 
+0.05 -3.41 -1.05 -3.88 -1 -2.87 -1.3 -1.61 -1.3 -4.14 -0.64 -3.91 -1.78 -2.67 -1.52 -2.61 
+-3.65 -4.58 -6.05 -2.25 -2.72 -3.54 -2.25 -3.3 -2.39 -3.45 3.13 -2.3 -1.26 -4.95 -1.04 -4.97 
+-0.09 -0.24 -0.07 -4.23 2.22 -0.95 3.32 0.28 3.41 0.54 2.14 -1.12 0.8 -3.82 0.76 -2.45 
+0.32 -1.21 0.67 -4.04 1.93 0.11 5.91 1.22 -4.56 -3.41 2 -3.09 1.3 -1.91 -3.02 -4.19 
+1.8 -3.36 -0.39 -1.12 -4.99 -3.43 -0.44 0.02 0.07 -0.32 -3.3 -5.86 -0.13 -2.39 2.34 -3.21 
+3.47 -1.11 1.02 -0.11 3.69 -1.96 3.21 -2.41 3.36 -2.25 3.54 -2.06 2 0.63 5.86 1.76 
+1.32 0.05 3.11 -1.07 3.43 -2.09 3.21 -2.3 3.6 -1.89 4.15 -1.23 3.41 -2.11 3.6 -1.84 
+3.71 -1.63 P
+0.09 0 6.62 2.64 1.34 0.89 4.54 -0.58 -2.13 -2.67 -3.34 2.1 -3.71 -4.6 -3.41 -4.29 
+-0.96 0.11 -3.97 0.2 1.24 1.56 -3.02 2.02 -0.28 0.3 -0.46 0.2 -2.93 2.04 -3.23 2.34 
+-3.19 2.41 -3.13 2.45 -3.06 2.5 -4.14 -4.49 -2.95 -3.26 -2.11 -0.5 -4.96 -1.24 -3.89 0.7 
+-0.82 0.24 -4.25 1.48 -4.75 0.98 -2.58 3.27 -2.63 3.2 -3.77 2.04 -3.04 2.73 -3.11 2.67 
+-0.61 0.35 -3.32 1.54 -1.84 3.82 -2.3 3.36 -3.02 2.7 -2.8 2.88 -0.91 4.47 0.04 0.93 
+-0.17 4.08 -1.65 3.71 -1.43 3.84 -1.39 3.84 -2.61 2.89 -0.04 4.75 0.15 4.77 0.24 2.24 
+0.67 2.97 1.3 5.34 0.7 4.82 0.18 0.24 4.34 6.71 0.5 1.08 4.39 5.77 -4.11 1.91 
+1.24 4.71 2.61 5.32 0.04 0.07 2.56 5.1 3.41 4.44 1.32 1.52 5.04 5.75 0.09 0.13 
+2.3 4.58 0.8 3.93 0.52 3.82 0.61 3.82 -1.74 2.1 -0.7 0.74 -3.53 2.52 -0.89 -0.11 
+-0.87 -0.45 -5.95 -3.64 -6.36 -2.43 -5.36 -4.08 -1.58 -1.61 -6.53 -4.26 -5.84 -4.04 -0.67 -0.58 
+-2.43 -5.04 -4.45 -5.21 -2.34 -2.4 -3.91 -4.13 -6.04 -3.21 -5.99 -3.62 -5.51 -5.47 -0.41 -0.76 
+-5.73 -7.18 -5.8 -4.02 -3.87 -3.08 -1.84 -1.45 -1.71 -1 -4.04 -2.5 -6.01 -0.3 p f*
+110 210 9 rG
+2132.38 3222.31 -2.95 0 2.73 3.49 5.73 5.01 3.58 4.69 2.25 5.6 0.59 1.07 5.47 5.12 
+5.68 6.12 0.57 0.57 1.48 1.2 0 -5.26 -1.8 -0.89 -0.56 -0.46 0.54 0.2 1.83 1.15 
+0 5.26 4.75 3.75 5.1 5.28 0.91 4.88 0.24 4.49 2.37 3.5 3.6 3.02 0 -15.64 
+-6.25 -3.8 -1.89 -1.39 1.61 -1.61 1.74 -1.13 4.17 1.61 1.49 1.28 -0.23 4.23 -0.63 0.8 
+0 15.64 1.26 1.06 0.89 0.54 0 -4.27 -0.61 -0.44 0.43 -0.39 0.45 0.79 -0.28 0.04 
+0 4.27 1.13 0.7 1.13 0.11 4.28 -1.24 2.23 -0.26 2.8 -2.95 0.13 0 2.34 -3.13 
+-3.41 -2.04 -4.73 -5.7 -0.93 -4.71 -1.67 -1.95 -6.04 -6.23 -0.29 -0.33 -1.99 -0.87 -4.04 -1.5 
+-6.01 -3.23 -5.27 -3.8 -0.74 -0.57 -1.75 -0.91 -4.19 -2.11 -0.76 -0.87 -3.76 -7.23 -1.25 -1.24 
+-5.71 -5.73 -5.75 -3.6 f*
+2 239 204 rG
+2145.49 3261.42 -1.54 -0.33 1.89 5.75 0.65 0.41 0.3 0.09 5.27 -0.07 1.76 -0.91 -2.45 -3.34 
+-5.88 -1.61 f*
+255 0 r6
+2147.96 3274.28 -0.57 -1.97 0.13 0 3.88 2.02 -3.45 -0.05 f*
+2156.29 3419.32 -7.11 -2.52 11.32 8.99 7.03 2.25 -11.24 -8.72 f*
+0 255 r6
+2155.68 3248.76 -0.54 -0.2 0.56 0.46 1.8 0.89 -1.83 -1.15 f*
+0 155 255 rG
+2162.29 2586.71 -0.22 0.88 1.02 -0.89 -0.08 -0.61 -0.71 0.63 f*
+0 255 r6
+2167.95 3257.64 -1.61 1.61 1.89 1.39 6.25 3.8 0.63 -0.8 0.23 -4.23 -1.49 -1.28 -4.17 -1.61 
+-1.74 1.13 f*
+0 155 255 rG
+2167.67 2563.08 -1 3.56 5.19 -3.34 1.97 -1.54 0 -4.93 2.63 -5.25 3.53 -5.75 3.46 -1.3 
+-0.29 1.58 -3.37 5.73 -5.96 4.99 0 4.93 1.89 -1.47 4.08 -2.5 6.25 -5.54 1.8 -5.77 
+0.5 -2.61 0.76 -3.23 -0.09 -2.82 -5.42 1.34 -1.17 0.8 -6.1 5.52 -2.59 5.75 -0.04 0.13 
+-3.04 5.86 -2.99 5.86 f*
+2 239 204 rG
+2169.1 3291.06 -0.42 0.08 0.98 1.61 0.35 -1.06 -0.91 -0.62 f*
+2176.46 2551.58 -2.63 5.25 5.96 -4.99 3.37 -5.73 0.29 -1.58 -3.46 1.3 -3.53 5.75 f*
+0 255 r6
+2176.46 3276.58 -0.43 0.39 0.61 0.44 0.28 -0.04 -0.45 -0.79 f*
+110 210 9 rG
+2201.67 3286.87 -1.78 -0.24 1.95 0.93 4.69 5.32 3.93 4.6 0.74 0.78 4.75 5.21 3.69 3.54 
+2.21 1.82 6.38 4.86 1.28 0.67 6.38 3.43 6.55 1.5 5.75 2.11 0 -2.21 -5.86 -2.19 
+-0.34 -0.14 -0.93 -0.39 -7.12 -2.84 -5.51 -3.17 -2.15 -1.21 -5.81 -4.51 -2.56 -2.29 -3.23 -3.12 
+-4.43 -5.21 3.47 -2.69 0.74 0.18 0.95 0.39 5.62 2.34 7.16 4.39 2.5 1.45 5.19 4 
+1.22 1.17 4.38 4.49 3.17 1.73 5.6 3.41 -0.21 3.39 -1.82 0.82 0 2.21 0.56 0.22 
+2.06 3.77 2.48 3.08 0.61 0.82 0.11 0.38 -5.1 1.19 -3.32 -2.67 -5.25 -4.43 -2.3 -1.78 
+-6.82 -2.04 -7.12 -2.82 1.56 3.86 0.65 0.48 5.29 4.45 4.38 4.47 1.63 0.93 6.16 1.58 
+0 -0.93 -4.25 -1.05 -3.02 -1.43 -3.08 -3.26 0.02 -2.06 6.91 2.04 2.02 1.5 3.67 4.14 
+-2.26 0.11 0 0.93 0.7 0.17 6.42 2.97 1.91 0.83 7.68 3.6 1.09 0.5 8.07 2.82 
+1.39 0.74 8.03 3.47 0.28 0.11 6.39 3.35 3.75 1.39 5.58 1.56 3.15 1.02 4.08 1.73 
+3.95 2.97 3.8 2.93 1.02 -0.16 -3.86 -2.91 -3.93 -2.93 -5.93 -2.56 -0.71 -0.23 -7.8 -2.15 
+-1.93 -0.72 -5.8 -3.3 -3.08 -1.39 -4.97 -2.13 -4.71 -2.49 -4.32 -1.39 -4.55 -2.67 -3.71 -1.5 
+2.19 -0.71 3.02 -2.32 -1.55 -3.57 -0.34 -1.61 -0.07 -1.85 3.56 -2.32 6.46 0.93 6.81 1.43 
+5.1 1.93 2.97 1.37 6.32 0.35 4.04 -1.11 1.06 -0.49 5.38 -1.22 1.58 -0.98 -1.48 -2.87 
+-4.05 -2.93 -0.11 -0.08 -2.35 -3 0.57 -0.56 2.52 -1.96 -0.61 -2.82 -5.26 -2.65 -2.38 -1 
+-1.26 -2.99 -0.75 -2.93 -4.15 -3.54 -1.75 -2.37 -0.82 -0.99 -6.49 -4.34 -0.02 -0.02 -4.06 -3.97 
+0.04 -3 -3.78 -3.95 -0.62 -0.37 -5.9 -3.95 -0.76 -1.28 0.61 -1.82 0.38 -1.02 -0.42 -0.54 
+-3.45 -4.06 0.18 -3.19 1.21 -2.82 -2.62 -4.36 -0.78 -1.48 -0.24 -2.34 1.02 -2.62 0.11 -0.28 
+-0.04 -0.11 -1.17 -3.88 1.86 -2.56 -1.69 -4.36 -2.04 -3.73 -0.69 -1.3 -1.26 -4.38 -0.96 -4.32 
+2.13 -2.58 1.11 -3.17 -0.87 -0.54 1.47 -3 1.57 -2.95 -5.38 -3.58 1.71 -2.97 -5.28 -3.73 
+-5.21 -3.78 -0.62 -0.45 -5.91 -1.22 -1.93 -0.11 -0.67 4.04 -0.32 1.21 -0.76 2.45 -0.8 3.82 
+-2.14 1.13 -3.41 -0.54 -3.32 -0.28 -2.22 0.95 0.07 4.23 0.09 0.24 1.04 4.97 1.26 4.95 
+-3.13 2.3 2.39 3.45 2.25 3.3 2.72 3.54 6.05 2.25 3.65 4.58 1.52 2.61 1.78 2.67 
+0.64 3.91 1.3 4.14 1.3 1.61 1 2.87 1.05 3.88 -0.05 3.41 0.98 3.78 2.8 4.32 
+0.91 1.48 1.41 2.6 1.7 3.82 4.71 4.55 0.02 0.05 5.66 4.6 1.8 1.46 4.82 3.12 
+2.71 2.11 1.73 1.82 -0.99 0.44 -2.06 2.06 -2.15 2.71 4.82 3.88 -2.11 2.63 0.02 0.17 
+0.2 0.3 3.17 3.28 -1.46 0.24 -6.49 -1.02 -6.29 -0.76 -0.89 -0.56 -4.04 -4.02 1.91 -2.21 
+1.04 -0.55 -1.7 -1.04 -0.84 0.57 -4.43 0.96 -6.34 -1.15 -3.41 -2.8 -4.25 -4.52 -1.22 -0.89 
+-7.05 -3.8 -3.12 -2.04 -4.1 -2.86 -6.64 -3.19 -6.38 -2.32 -5.66 0.45 f*
+0 255 r6
+2213.71 3291.43 -3.47 2.69 4.43 5.21 3.23 3.12 2.56 2.29 5.81 4.51 2.15 1.21 5.51 3.17 
+7.13 2.84 0.93 0.39 0 -3.43 -2.5 -0.3 -1.19 -0.46 -5.99 -2.78 -7.18 -3.54 -0.78 -0.59 
+-4.04 -4.82 2.28 -1.59 6.62 2.38 3.06 2.41 2.41 4.14 4.49 4.06 2.82 1.06 0 3.43 
+0.34 0.14 5.86 2.19 1.82 -0.82 0.21 -3.39 -5.6 -3.41 -3.17 -1.73 -4.38 -4.49 -1.22 -1.17 
+-5.19 -4 -2.5 -1.45 -7.16 -4.39 -5.62 -2.34 -0.95 -0.39 -0.74 -0.18 f*
+255 203 0 rG
+2222.59 3299.37 -2.28 1.59 4.04 4.82 0.78 0.59 7.18 3.54 5.99 2.78 1.19 0.46 2.5 0.3 
+-2.82 -1.06 -4.49 -4.06 -2.41 -4.14 -3.06 -2.41 -6.62 -2.38 f*
+110 210 9 rG
+2230.14 3166.58 -2.34 3.21 0.13 2.39 3.3 5.86 -0.07 0.32 0.44 -0.02 4.99 3.43 0.39 1.13 
+-1.8 3.36 3.02 4.19 0.78 -1.13 5.04 3.95 5.08 3.88 5.14 3.82 5.18 3.77 0.24 -0.37 
+-3.34 -6.16 2.06 -2.78 0.26 -0.66 0.75 -2.97 -1.56 -5.86 -0.02 -0.26 -2.93 -6.23 -0.02 -0.83 
+-1.62 -6.49 3.08 -2.28 4.08 -1.34 2.04 -3.28 2.82 -2.56 2.97 -2.43 4.73 -0.59 2.93 -0.07 
+2.78 0.57 4.62 -0.57 3.69 -0.95 0.46 -0.09 5.1 0.07 2.67 1.43 0.02 1.59 -1.61 3.64 
+-0.09 3.38 4.75 3.88 1.3 -1 -4.14 -4.34 2.93 -2.15 2.97 -2.11 -3.93 -4.45 3.11 -2.11 
+-3.8 -4.51 3.23 -2.08 -1.54 -1.91 -4.54 0.58 -1.34 -0.89 -6.62 -2.64 -0.09 0 -3.71 1.63 
+-3.6 1.84 -3.41 2.11 -4.15 1.23 -3.6 1.89 -3.21 2.3 -3.43 2.09 -3.11 1.07 -1.32 -0.05 
+-5.86 -1.76 -2 -0.63 -3.54 2.06 -3.36 2.25 -3.21 2.41 -3.69 1.96 -1.02 0.11 -3.47 1.11 f*
+255 0 r6
+2231.99 3132.42 -1.76 1.5 2.3 -0.87 3.39 -2.71 3.69 -2.39 5.95 0.43 1.61 -0.17 3.67 -0.17 
+5.57 0.07 1.61 -0.26 2.39 -1.63 -3.64 -4.78 -3.63 2.48 -3.66 -4.8 -3.62 2.56 -3.56 2.61 
+-3.75 -4.79 -3.59 2.69 -3.49 2.73 3.88 4.73 -3.34 2.78 f*
+2237.07 2533.03 -3.95 5.12 4.43 0.22 3.84 -5.1 -4.32 -0.24 f*
+0 255 r6
+2233.46 3324.18 -0.02 2.06 3.08 3.26 3.02 1.43 4.25 1.05 2.26 -0.11 -3.67 -4.14 -2.02 -1.5 
+-6.91 -2.04 f*
+255 G
+2239.46 3198.85 -4.56 -3.41 2 -3.09 1.3 -1.91 0.78 -1.13 5.04 3.95 5.08 3.88 5.14 3.82 
+5.18 3.77 0.24 -0.37 1.67 -2.43 5.17 3.73 5.2 3.67 5.27 3.6 5.3 3.54 5.36 3.45 
+5.41 3.41 4.62 2.82 0.83 0.5 5.49 3.26 1.43 -2.3 1.52 -2.29 5.41 3.3 5.45 3.25 
+-1.39 2.15 -1.32 2.17 -1.26 2.21 1.95 1.02 3.71 1.95 1.2 -2.15 1.26 -2.1 1.33 -2.11 
+1.39 -2.05 2.76 1.59 2.71 1.56 5.49 3.1 -1.26 1.93 -1.19 1.96 -1.13 1.97 5.7 2.82 
+5.77 2.73 2.11 0.98 3.69 1.7 -0.91 1.78 -0.82 1.78 -0.02 0.05 -5.91 -2.54 -0.84 1.91 
+-5.93 -2.54 -5.9 -2.58 -0.89 2.06 -5.91 -2.61 -5.88 -2.69 -2.67 -1.26 -3.17 -1.49 1.06 -2.28 
+1.11 -2.26 -5.69 -3 -1.17 2.34 -1.11 2.34 -5.77 -2.93 -1.08 2.45 5.81 2.84 -0.95 2.41 
+-0.89 2.43 5.95 2.63 -0.76 2.38 -0.7 2.39 -0.61 2.43 -6.1 -2.38 -0.59 2.52 -0.54 -0.21 
+-5.56 -2.2 -0.54 2.63 -6.12 -2.41 -0.5 2.73 -6.14 -2.43 -6.07 -2.5 -6.08 -2.58 0.63 -2.95 
+-5.99 -2.75 -5.94 -2.84 0.8 -3.08 0.91 -3.04 1 -3.02 1.08 -2.97 -5.71 -3.19 1.24 -3.02 
+1.32 -2.97 -4.69 -2.87 -0.87 -0.54 1.47 -3 1.57 -2.95 -5.38 -3.58 1.71 -2.97 -5.28 -3.73 
+-5.21 -3.78 -0.62 -0.45 f*
+0 255 r6
+2250.96 3223.03 -2.13 2.58 0.96 4.32 1.26 4.38 0.69 1.3 2.04 3.73 1.69 4.36 -1.86 2.56 
+1.17 3.88 0.04 0.11 -0.11 0.28 -1.02 2.63 0.24 2.34 0.78 1.48 2.62 4.36 -1.21 2.82 
+-0.18 3.19 3.45 4.06 0.42 0.54 -0.37 1.02 -0.61 1.82 0.76 1.28 5.9 3.95 0.63 0.37 
+3.78 3.95 -0.04 3 4.06 3.97 0.02 0.02 6.49 4.34 0.82 0.99 1.75 2.37 4.15 3.54 
+0.75 2.93 1.26 2.99 2.38 1 5.26 2.65 0.61 2.82 -2.52 1.96 -0.57 0.56 2.35 3 
+0.11 0.08 4.05 2.93 1.48 2.87 -1.58 0.98 -5.38 1.22 -1.06 0.49 -4.04 1.11 -6.32 -0.35 
+-2.97 -1.37 -5.1 -1.93 -6.81 -1.43 -6.46 -0.93 -3.56 2.32 0.07 1.85 0.34 1.61 1.55 3.57 
+-3.02 2.32 -2.19 0.71 3.71 1.5 4.55 2.67 4.32 1.39 4.71 2.49 4.97 2.13 3.08 1.39 
+5.8 3.3 1.93 0.72 7.8 2.15 0.71 0.23 5.93 2.56 3.93 2.93 3.86 2.91 1.02 -0.15 
+-3.97 -2.87 -3.86 -2.93 -5.19 -2.89 -2.97 -0.89 -7.92 -1.78 -0.09 -0.04 -5.18 -3.28 -5.9 -2.62 
+-1.91 -0.82 -4.14 -3.58 -1.16 -3.47 -2.69 -3.56 -0.48 -3.08 0.13 -0.3 3.06 -3.04 0.69 -0.04 
+0.85 0.19 6.04 1.29 5.94 2.69 2.82 3.23 2.62 3.21 1.93 1.34 7.42 1.59 -0.09 -3 
+-1.58 -3.02 0.85 -3.02 0.28 -0.11 5.84 -0.55 4.16 0.61 2.8 0.43 7.04 0.96 3.12 0.84 
+5.12 1.54 2.63 0.5 3.79 2.26 3.39 2.21 1.73 0.78 3 -1.49 -0.82 -2.47 -3.86 -2.06 
+-4.06 -2.13 -2.25 -2.39 -1.41 -2.45 -0.8 -2.48 -1.63 -2.43 -1.8 -2.46 -2.5 -1.54 -3.8 -1 
+-4.3 -2.54 -0.15 -0.15 0.04 -0.04 0.24 0.04 6.97 1.84 0.15 -1.58 -2.02 -2.52 -0.39 -0.41 
+-4.38 -2.34 -3.37 -2.8 -0.97 -0.89 -6.95 -2.13 -0.78 -0.5 -2.39 -2.95 -0.3 -2.7 1.21 -1.3 
+0.41 -1.04 -0.2 -2.62 -0.54 -2.7 -0.7 -2.73 -1.04 -5.46 -0.56 -2.41 -0.3 -0.45 -1.78 -3.12 
+-0.46 -2.82 0.8 -2.45 -1.2 -3.09 -3.05 -2.02 -2.11 -2.54 2.54 -0.91 3.3 0.22 0.87 -2.43 
+2.54 -1.8 -5.56 -2.2 -0.54 2.63 -6.12 -2.41 -0.5 2.73 -6.14 -2.43 -6.07 -2.5 -6.08 -2.58 
+0.63 -2.95 -5.99 -2.75 -5.94 -2.84 0.8 -3.08 0.91 -3.04 1 -3.02 1.08 -2.97 -5.71 -3.19 
+1.24 -3.02 1.32 -2.97 -4.69 -2.87 -1.11 3.17 f*
+2256.32 3169.88 -3.08 2.28 1.63 6.49 0.02 0.83 2.93 6.23 0.02 0.26 1.56 5.86 -0.75 2.97 
+-0.26 0.66 -2.06 2.78 3.34 6.16 1.67 -2.43 5.17 3.73 5.2 3.67 5.27 3.6 5.3 3.54 
+5.36 3.45 5.41 3.41 4.62 2.82 -3.73 -4.23 -0.99 -2.11 0.06 -3.47 0.83 -3.04 1.06 -2.93 
+3.56 -1.13 4.13 1.13 0.95 -1.11 -4.99 -3.73 -4.95 -3.78 2.13 -2.32 -4.82 -3.89 2.26 -2.34 
+2.17 -2.12 -0.61 -0.82 -2.26 -4.88 -0.7 -2.19 3.73 -1.17 0.54 0.15 5.91 2.91 4.64 3.93 
+0.7 -0.58 -4.45 -4.12 2.59 -2.13 -4.34 -4.21 -4.25 -4.23 1.47 -1.17 -4.75 -3.88 0.09 -3.38 
+1.61 -3.64 -0.02 -1.59 -2.67 -1.43 -5.1 -0.07 -0.46 0.09 -3.69 0.95 -4.62 0.57 -2.78 -0.57 
+-2.93 0.07 -4.73 0.59 -2.97 2.43 -2.82 2.56 -2.04 3.28 -4.08 1.34 f*
+255 203 0 rG
+2266.75 3330.64 -0.13 0.3 0.48 3.08 2.69 3.56 1.16 3.47 4.14 3.58 1.91 0.82 5.9 2.63 
+5.18 3.28 0.09 0.04 7.92 1.78 2.97 0.89 5.19 2.89 3.86 2.93 3.97 2.87 0.26 -0.05 
+0.28 0.24 6.51 2.02 1.15 -0.22 -5.54 -2.43 -5.42 -2.37 -0.28 -0.2 -3.82 -2.91 -3.36 -3.02 
+-7.16 -2.14 -2.41 -0.52 -6.31 -2.25 -1.33 -0.87 -5.3 -3.36 -1.89 -3.41 -2.02 -3.41 -0.76 -3.34 
+0.13 -0.2 1.11 0.26 6.08 1.41 2.73 2.13 2.75 3.25 -0.41 1.39 -1.22 1.91 3.43 3.25 
+2.75 0.82 5.13 2.13 4.34 1.34 4.56 1.2 4.51 1.48 2.84 0.91 5.62 2.37 0 -7.92 
+-3.17 -0.72 -1.17 -0.26 -4.88 -1.89 -1.43 -0.58 0.63 -0.31 2.39 -2.99 -4.45 -2.71 -2.86 -2.87 
+2.04 -2.71 7.01 0.96 6.32 -0.07 2.52 0.79 5.27 2.23 2.72 2.41 1.56 1.06 1.93 1.21 
+3.91 2.13 -0.48 2.14 -6.6 0.13 -6.4 0.26 -4.84 1.78 0 7.92 0.09 0.04 2.67 0.98 
+6.88 0.07 0.87 0.24 5.32 2.02 3.8 2.3 4.43 2.06 3.08 1.46 1.61 0.43 4.53 1.84 
+0.15 0.24 0 -3.36 -0.46 -0.16 -0.61 -0.59 1.22 0.37 -0.16 0.38 0 3.36 1.74 2.56 
+2.82 -0.52 0 -12.87 -2.06 -0.07 0.17 -1.34 2.82 0.35 -0.93 1.06 0 12.87 2.9 -0.56 
+2.26 0.76 0 -23.91 1.58 -1.24 0.85 0.5 -0.13 0.11 -2.3 0.63 0 23.91 0.78 0.26 
+3.67 1.93 3.45 2.02 3.32 2.08 0.58 0.76 -3.41 2.78 -2.08 -0.91 -7.98 0.13 -0.44 0.07 
+-7.68 -0.56 -3.87 -2.32 -1.62 -0.43 1.07 0.65 3.88 2.34 3.99 2.26 -0.35 0.17 1.2 0.3 
+6.7 -0.91 1.91 -0.05 0.07 1.06 -1.79 3.52 0.24 0.39 3 2.8 3.97 2.29 3.56 1.25 
+0 -1.67 -2.08 -0.48 -4.41 -1.97 -1.02 -1 2.24 -3.25 6.29 -0.13 3.04 2.52 0.37 2.09 
+-4.43 2.23 0 1.67 1.34 0.46 4.39 0.3 3.99 -2.48 -1.07 -2.75 -0.43 -2.02 -0.58 -1.84 
+-2.04 -2.99 -0.11 -0.65 -0.74 -2.93 -3.02 -2.16 -3.71 -1.78 -3.41 -1.95 -2.2 -2.54 -0.08 -0.09 
+0.89 -0.28 4.86 -1.24 0.22 0 0 -4.8 -5.21 -0.57 -2.98 -1.95 1.63 -1.67 2.63 -0.04 
+3.04 1.78 0.89 2.45 0 4.8 2.86 0.07 0 -2.63 -0.63 -0.89 1.24 0.58 0.05 0.16 
+-0.65 0.15 0 2.63 1.45 0.02 3.13 1.82 2.73 2.06 2.52 2.21 3.06 1.91 0.07 0.04 
+2.75 2.11 4.36 1 0.61 0.18 3.32 1.11 3.63 1.49 0.04 0.02 2.15 2.87 3 2.28 
+4.23 1.06 4.64 0.52 4.05 1.15 3.78 1.58 3.99 1.35 1.91 -3.04 4.14 0.8 1.89 -3.4 
+-3.95 -0.79 2.04 -3.43 2.02 -3.45 -3.56 -0.76 2.11 -3.34 -4.76 1.23 -2.73 0.83 -2.26 0.34 
+-4.82 0.61 -4.02 -0.52 -3.86 -0.78 -0.13 0.02 -5.4 0.72 -2.67 0.65 -2.67 -0.41 -2.67 -1.61 
+-0.3 -0.26 -2.73 -1.99 -2.74 -1.93 -1.28 -0.22 -3.23 -0.52 -2.78 -1.9 -1.76 -2.5 -1.43 -2.56 
+0 -0.15 -0.63 -2.76 -2.64 -1.75 -2.7 -1.76 -2.36 -1.91 -2.32 -1.91 0.56 -1.2 4.45 -2.39 
+-1.08 -0.76 -2.37 -1.71 -2.32 -1.76 -2.23 -1.78 -2.17 -1.82 -1.41 -1.2 -4.47 2.39 0.14 0.5 
+-2.87 3.34 -6.75 0.37 -3.58 -0.26 -2.15 -2.25 0.93 -1.85 1.46 -1.34 -2.15 -2.17 -2.47 -2.12 
+0.04 -2.52 P
+1.26 -0.85 1.69 0.37 6.25 1.3 0.46 0.11 4.96 1.17 4.35 1.15 -1.81 -1.74 5.64 -1.37 
+-1.82 -1.82 -1.76 -1.82 -1.69 -1.87 -1.63 -1.89 -1.56 -1.91 2.82 -0.43 -3.47 -0.39 -6.66 -0.05 
+-4.29 0.15 -3.23 -1.95 -1.37 -2.15 -1.57 -2.17 0.2 -2.21 3.73 -1.7 -0.32 -0.58 0.63 -0.02 
+-1.26 -1.17 -2 -0.89 -1.36 -2.12 -2.19 -2.17 -2.5 -2.23 -2.08 -1 -5.4 0.59 -0.59 0.07 
+-0.29 -0.13 -3.08 -2.5 2.19 -0.59 1.43 -1.37 2.17 -1.99 0.73 -2.09 -6.66 -2.97 -1.93 -0.37 
+-4.86 -2.36 -0.33 -0.79 0.15 -0.19 1.84 -1.76 0.18 -2.28 -2.43 -2.84 -0.5 -0.74 -1.39 -2.04 
+-1.54 -2.78 -2.63 -3.13 -0.87 -1.41 -0.67 -1.5 -2.08 -3.15 -1.74 -3.12 -0.39 -2.73 -0.12 -1.76 
+0.08 -0.89 0.2 -0.57 0.97 -1.63 1.89 -1.9 2.43 -1.67 -0.54 -2.87 1 -2.26 0.75 -2.37 
+1.89 -1.84 -3.17 -1.49 1.06 -2.28 1.11 -2.26 -5.69 -3 -1.17 2.34 -1.11 2.34 -5.77 -2.93 
+-1.08 2.45 5.81 2.84 -0.95 2.41 -0.89 2.43 5.95 2.63 -0.76 2.38 -0.7 2.39 -0.61 2.43 
+-6.1 -2.38 -0.59 2.52 -0.54 -0.21 -2.54 1.8 -0.87 2.43 -3.3 -0.22 -2.54 0.91 2.11 2.54 
+3.05 2.02 1.2 3.09 -0.8 2.45 0.46 2.82 1.78 3.13 0.3 0.45 0.56 2.41 1.04 5.46 
+0.7 2.73 0.54 2.7 0.2 2.62 -0.41 1.04 -1.21 1.3 0.3 2.7 2.39 2.95 0.78 0.5 
+6.95 2.13 0.97 0.89 3.37 2.8 4.38 2.34 0.39 0.41 2.02 2.52 -0.15 1.58 -6.97 -1.84 
+-0.24 -0.04 -0.04 0.04 0.15 0.15 4.3 2.54 3.8 1 2.5 1.54 1.8 2.46 1.63 2.43 
+0.8 2.48 1.41 2.45 2.25 2.39 4.06 2.13 3.86 2.06 0.82 2.47 -3 1.49 -1.73 -0.78 
+-3.39 -2.21 -3.79 -2.26 -2.63 -0.5 -5.12 -1.54 -3.12 -0.84 -7.04 -0.96 -2.8 -0.43 -4.16 -0.61 
+-5.84 0.55 -0.28 0.11 -0.85 3.02 1.58 3.02 0.09 3 -7.42 -1.59 -1.93 -1.34 -2.62 -3.21 
+-2.82 -3.23 -5.94 -2.69 -6.04 -1.29 -0.85 -0.19 -0.69 0.04 -3.06 3.04 p f*
+0 155 255 rG
+2271.22 3126.24 -3.6 2.32 3.56 4.55 3.02 -2.95 3.24 -0.87 1.43 0.05 5.04 -0.29 3.93 0.83 
+1.3 -0.76 -3.41 -4.77 -2.28 -3.21 -4.26 1.43 -4.14 1.29 -3.82 2.39 f*
+2 239 204 rG
+2274.2 3130.17 -3.02 2.95 0.11 0.15 3.52 -2.3 3.64 4.69 2.45 3.11 3.97 -0.2 0.96 -0.11 
+-0.26 -0.35 -3.62 -4.68 3.58 -2.17 2.3 -1.37 -3.93 -0.83 -5.04 0.29 -1.43 -0.05 -3.24 0.88 f*
+255 135 0 rG
+2274.83 3334.33 -0.13 0.2 0.76 3.34 2.02 3.41 1.89 3.41 5.3 3.36 1.33 0.88 6.31 2.25 
+2.41 0.52 7.16 2.14 3.36 3.02 3.82 2.91 0.28 0.2 5.42 2.37 5.54 2.43 0.96 -0.19 
+2.24 1.84 1.88 0.74 5.17 2.25 4.55 2.32 4.71 2.2 0.7 -0.22 0.5 0.34 0 -0.5 
+-0.79 -0.04 -4.36 -2 -4.21 -2.39 -4.43 -2.38 -5.16 -2.34 2.82 -2.52 6.09 0.59 2.76 0.98 
+2.37 1.08 5.14 1.93 4.21 2.11 3.14 2.41 -0.91 2.5 -2.3 0.02 -4.38 0.06 0 0.5 
+3.19 2.11 2.73 1.74 1.63 0.43 3.87 2.32 7.68 0.56 0.44 -0.07 7.98 -0.13 2.08 0.91 
+3.41 -2.78 -0.58 -0.76 -3.32 -2.08 -3.45 -2.02 -3.67 -1.93 -0.78 -0.26 -2.26 -0.76 -2.9 0.56 
+-2.82 0.52 -1.74 -2.56 -0.15 -0.24 -4.53 -1.84 -1.61 -0.43 -3.08 -1.46 -4.43 -2.06 -3.8 -2.3 
+-5.32 -2.02 -0.87 -0.24 -6.87 -0.07 -2.67 -0.98 -0.09 -0.04 -5.62 -2.37 -2.84 -0.91 -4.51 -1.48 
+-4.56 -1.2 -4.34 -1.34 -5.12 -2.13 -2.75 -0.82 -3.43 -3.25 1.22 -1.91 0.41 -1.39 -2.75 -3.25 
+-2.73 -2.13 -6.08 -1.41 -1.11 -0.26 f*
+255 0 r6
+2278.58 3121.72 -3.54 2.13 4.14 -1.29 4.26 -1.43 -1.09 -1.59 -3.77 2.17 f*
+2 239 204 rG
+2278.78 3142.58 -0.39 0.26 0.46 -0.2 0.28 -0.3 -0.34 0.24 f*
+255 0 r6
+2282.92 3112.59 -3.88 2.14 3.32 4.82 3.82 -2.12 -3.26 -4.84 f*
+87 0 136 rG
+2288.39 2469.49 -5.56 4.43 3.02 0.61 3.08 0.57 3.12 0.56 3.2 0.55 3.21 0.52 5.01 -4.34 
+-3.11 -0.54 -3.08 -0.57 5.36 -4.29 5.43 -4.26 5.55 -4.16 5.64 -4.08 5.75 -4.02 5.86 -3.93 
+5.97 -3.84 6.05 -3.75 6.16 -3.67 6.29 -3.58 6.36 -3.5 1.83 0.57 1.86 0.54 6.25 -3.4 
+1.78 0.5 1.8 0.5 1.84 0.5 1.89 0.48 1.91 0.45 5.73 -3.39 1.82 0.43 1.84 0.44 
+5.58 -3.34 1.75 0.41 1.79 0.38 1.8 0.39 1.82 0.37 1.84 0.35 1.89 0.34 1.91 0.33 
+4.73 -3.34 3.61 0.61 1.82 0.3 -4.32 3.37 2 0.3 1.99 0.25 -3.95 3.46 2.17 0.28 
+2.19 0.26 2.22 0.26 -3.47 3.52 2.37 0.24 2.38 0.24 2.41 0.22 -2.97 3.58 2.54 0.21 
+-2.78 3.63 5.42 0.39 2.76 0.17 -2.32 3.68 2.89 0.17 -2.15 3.71 6.08 0.3 3.06 0.13 
+3.08 0.13 6.16 0.22 -1.32 3.73 6.46 0.18 -1.02 3.75 1.56 0.04 0 -82.66 -2.36 -0.41 
+-0.91 -0.8 0.91 -0.24 1.17 -0.15 2.04 0.39 0.61 0.71 -0.61 0.3 -0.85 0.2 0 82.66 
+1.8 0.05 3.37 0.04 3.38 0.06 3.39 0.04 3.38 0.02 3.38 0.04 3.32 0 0 -87.65 
+-0.24 0 -0.93 -0.05 -1.36 -0.5 -1.78 -1.08 -0.11 -0.09 0.02 -0.11 0.83 -1.21 1.21 -0.59 
+1.43 -0.11 1.56 0.48 1.11 1.32 -0.68 1.37 -1.06 0.57 0 87.65 10.24 0 3.38 -0.04 
+3.39 -0.02 3.38 -0.04 3.38 -0.06 3.37 -0.04 3.36 -0.09 3.37 -0.06 3.36 -0.11 1.26 3.8 
+3.47 -0.11 6.9 -0.21 3.45 -0.13 -1.75 -3.82 3.29 -0.13 3.3 -0.16 3.25 -0.17 3.28 -0.17 
+3.23 -0.17 3.23 -0.2 6.42 -0.43 3.17 -0.24 2.86 3.84 6.56 -0.48 3.23 -0.26 3.21 -0.29 
+3.19 -0.28 3.17 -0.3 3.14 -0.31 3.11 -0.32 3.08 -0.35 3.06 -0.35 4.02 3.95 3.14 -0.37 
+4.06 4 3.23 -0.37 3.19 -0.36 3.17 -0.41 3.15 -0.39 3.1 -0.43 4.54 4.09 3.17 -0.42 
+3.14 -0.46 3.11 -0.48 3.75 3.3 0 -29.25 -2.63 -0.93 -1.45 -1.37 3.82 0.52 0.26 1.79 
+0 29.25 1.02 0.89 3.19 -0.48 3.13 -0.48 -5.01 -4.21 2.99 -0.52 2.93 -0.52 -5.32 -4.17 
+2.78 -0.56 2.73 -0.59 2.7 -0.59 2.64 -0.63 2.61 -0.62 2.54 -0.67 2.5 -0.68 2.45 -0.71 
+2.39 -0.71 2.32 -0.76 -6.51 -4.1 -6.64 -4.02 2.06 -0.76 2.02 -0.8 1.95 -0.8 1.89 -0.83 
+1.84 -0.86 1.78 -0.87 1.7 -0.91 7.38 3.97 7.25 4.11 1.85 -0.96 1.8 -0.95 7.34 4.19 
+1.82 -1 1.74 -1.04 1.68 -1.04 1.58 -1.09 1.52 -1.12 1.46 -1.15 1.37 -1.17 1.26 -1.21 
+1.19 -1.24 1.13 -1.28 1.02 -1.32 8.29 4.23 1.02 -1.37 0.93 -1.39 0.82 -1.43 0.74 -1.47 
+0.63 -1.5 0.55 -1.54 0.43 -1.58 -8.87 -4.02 0.26 -1.59 0.15 -1.61 0.05 -1.65 -0.09 -1.67 
+-0.17 -1.71 -0.3 -1.76 -0.41 -1.78 9.33 3.71 -0.49 -1.87 -9.36 -3.67 -0.67 -1.84 -0.79 -1.87 
+-0.89 -1.93 -1.04 -1.93 -1.17 -1.98 -1.29 -1.99 -1.43 -2.04 -1.58 -2.07 -1.71 -2.09 -1.84 -2.11 
+-2 -2.12 -2.14 -2.15 -2.31 -2.17 -2.43 -2.19 -2.61 -2.21 -2.76 -2.21 -2.88 -2.23 -3.06 -2.24 
+-3.23 -2.23 -3.37 -2.23 -3.54 -2.24 -3.69 -2.23 -3.87 -2.23 -4.01 -2.22 -4.19 -2.19 -8.46 -0.76 
+-4.19 -2.04 P
+-4.34 -2 -4.47 -1.99 -7.81 -0.14 -4.43 -1.8 -4.55 -1.78 -4.71 -1.74 -4.82 -1.66 -4.95 -1.65 
+-6.55 0.7 -4.82 -1.46 -4.93 -1.41 -5.01 -1.37 -5.14 -1.3 -5.34 1.3 -4.95 -1.12 -5.01 -1.09 
+-5.1 -1.02 -5.19 -0.93 -5.23 -0.89 -5.32 -0.83 -3.41 1.93 -5.04 -0.67 -5.1 -0.61 -2.66 2.11 
+-2.61 2.14 4.47 0.5 -2.84 2.17 4.14 0.5 4.09 0.56 4.03 0.59 -3.6 2.06 3.71 0.59 
+-3.78 2.06 -3.69 2.13 -0.43 0.26 2.82 0.67 1.28 1.41 -0.48 0.96 -2.52 0.61 -4.41 0.5 
+-2.66 -0.39 0.3 -2.17 -0.41 -0.07 -2.95 -0.37 -2.97 -0.37 -6.03 -0.61 2.25 -2.41 -3.3 -0.29 
+-1.99 2.45 -3.06 -0.24 -3.06 -0.18 -3.08 -0.17 -3.08 -0.11 -3.11 -0.08 -3.1 -0.07 -6.23 0 
+-3.11 0.07 -3.08 0.08 -3.1 0.11 -3.08 0.17 -3.06 0.18 -3.06 0.24 -3.04 0.24 -6.04 0.61 
+-2.97 0.37 2.99 2.34 -2.7 0.34 -2.66 0.38 -2.65 0.39 -2.61 0.41 -3.99 -2.14 -2.82 0.49 
+-2.8 0.55 -2.76 0.54 -4.82 -1.89 -2.95 0.67 -2.91 0.68 -2.84 0.71 -2.8 0.74 -2.73 0.76 
+-2.69 0.78 -6.3 -1.3 -2.82 0.91 -2.78 0.91 -2.71 0.95 -6.99 -0.91 -2.82 1.06 -2.75 1.08 
+-2.67 1.11 -2.58 1.13 -2.52 1.13 -2.46 1.15 -2.34 1.18 -2.28 1.17 -2.19 1.19 -2.12 1.2 
+-8.55 0.28 -2.15 1.3 -2.04 1.32 -1.95 1.32 -1.87 1.31 -1.78 1.32 -1.7 1.32 -9.13 1.08 
+-1.65 1.43 9.2 -1.2 -1.52 1.33 -1.41 1.3 -1.34 1.32 -1.24 1.31 -1.17 1.3 -1.06 1.29 
+-0.98 1.28 -0.91 1.29 -0.81 1.28 -0.73 1.24 -0.66 1.25 -0.56 1.22 9.39 -1.98 -0.5 1.16 
+-0.43 1.13 -0.34 1.13 -0.26 1.11 -0.21 1.11 -0.13 1.09 -9.25 2.39 -9.2 2.58 -9.18 2.78 
+0.06 1.24 0.16 1.23 -9.03 3.04 0.3 1.26 0.38 1.23 0.48 1.22 8.83 -3.21 0.48 1.15 
+0.54 1.13 0.63 1.11 0.7 1.09 0.75 1.06 0.85 1.05 0.89 1.02 0.98 1 8.31 -3.32 
+0.96 0.95 8.31 -3.19 0.93 0.89 1 0.89 1.04 0.87 1.13 0.84 -7.97 3.32 1.26 0.84 
+-7.77 3.47 1.41 0.84 1.48 0.85 -7.46 3.64 -7.38 3.75 1.74 0.84 1.78 0.82 1.87 0.8 
+-6.96 3.88 2.02 0.8 2.06 0.76 2.13 0.76 2.17 0.71 -6.43 4.02 -6.31 4.1 -6.19 4.21 
+2.54 0.7 -5.99 4.27 2.71 0.67 2.78 0.65 -5.66 4.34 p f*
+255 203 0 rG
+2295.49 3182.04 -3.73 1.17 0.7 2.19 2.26 4.88 0.61 0.82 0.15 -0.15 4.68 3.97 2.3 -2.2 
+4.64 3.97 2.3 -2.12 -4.55 -4.01 1.74 -1.55 -4.64 -3.93 -5.91 -2.91 -0.54 -0.15 f*
+2292.99 3216.36 -0.06 3.47 0.99 2.11 3.73 4.23 0.83 0.5 5.49 3.26 1.43 -2.3 1.52 -2.29 
+5.41 3.3 5.45 3.25 -1.39 2.15 -1.32 2.17 -1.26 2.21 1.95 1.02 1.35 -2.13 2.69 -1.37 
+2.07 -1.7 -0.66 -3.3 -1.49 -1.89 -1.63 -3.08 -2 -2.56 -5.64 -2.91 -3.11 -1.49 -3.93 0.75 
+-0.5 0.28 0.26 -0.43 1.5 -2.43 0.37 0.04 5.43 0.5 -3.75 -2.6 -5.1 -3.61 0.96 -1.15 
+-4.12 -1.13 -3.56 1.13 -1.06 2.93 -0.83 3.04 f*
+87 0 136 rG
+2298.46 2476.71 -4.93 4.43 3.36 0.48 4.82 -4.41 -3.25 -0.5 f*
+255 0 r6
+2292.73 3356.29 1.61 1.63 2.15 -0.2 -3.76 -1.43 f*
+255 135 0 rG
+2303.17 3219.64 -0.26 0.43 0.5 -0.28 3.93 -0.75 3.11 1.49 5.64 2.91 2 2.56 1.63 3.08 
+1.49 1.89 0.66 3.3 -2.07 1.7 -2.69 1.37 -1.35 2.13 3.71 1.95 1.2 -2.15 1.26 -2.1 
+1.33 -2.11 1.39 -2.05 2.76 1.59 0 -18.23 -4.73 -0.69 1.3 -1.87 0.44 0.04 3 2.52 
+0 18.23 2.71 1.56 5.49 3.1 -1.26 1.93 -1.19 1.96 -1.13 1.97 5.7 2.82 5.77 2.73 
+2.11 0.98 0.24 -2.17 -0.02 -2.34 -0.11 -0.32 -1.89 -3.09 -1.57 -3.12 -0.17 -0.33 -1.32 -3.34 
+0.18 -2.55 -0.56 -1.59 -4.86 -3.82 -1.78 -1.98 -0.52 -3.34 1.66 -1.93 1.48 -2.06 1.56 -2.04 
+6.32 2.06 2.78 1.63 2.87 1.25 1.26 -1.17 -4.77 -3.69 -1.87 1.71 -4.79 -3.69 -1.91 1.8 
+-1.82 1.84 -4.93 -3.64 -4.89 -3.69 -4.82 -3.75 -2.02 2.02 -2.37 -1.8 -2.2 1.91 2.61 1.95 
+-1.89 2.06 -1.84 2.12 -1.78 2.15 -1.39 -0.96 -5.43 -0.5 -0.37 -0.04 -1.5 2.43 f*
+255 0 r6
+2303.08 3360.22 0.3 0.26 3.32 3.08 0.28 -0.04 -3.54 -3.04 -0.37 -0.26 f*
+255 135 0 rG
+2306.14 3335.22 -2.04 2.71 2.86 2.87 4.45 2.71 -2.39 2.99 -0.63 0.31 1.43 0.58 4.88 1.89 
+1.17 0.26 0 -2.61 -4.17 -0.41 2.65 -1.24 1.3 0.85 0.21 0.8 0 2.61 3.17 0.72 
+4.84 -1.78 6.4 -0.26 6.6 -0.13 0.48 -2.14 -3.91 -2.13 -1.93 -1.21 -1.56 -1.06 -2.72 -2.41 
+-5.27 -2.23 -2.52 -0.79 -6.32 0.07 -7.01 -0.96 f*
+2305.01 3261.8 -0.08 0.89 0.13 1.76 0.39 2.73 1.74 3.13 2.08 3.15 0.67 1.5 0.87 1.41 
+2.63 3.13 1.54 2.78 1.39 2.04 0.5 0.74 2.43 2.84 -0.18 2.28 -1.84 1.76 -0.15 0.19 
+0.33 0.79 4.86 2.36 1.93 0.38 6.66 2.97 -0.73 2.09 -2.17 1.99 -1.43 1.37 -2.19 0.59 
+3.08 2.5 0.29 0.13 0.59 -0.07 5.4 -0.59 2.08 1 2.5 2.23 2.19 2.17 1.36 2.13 
+2 0.89 1.26 1.17 5.64 -0.21 6.27 -0.31 1.11 1.87 1.17 1.89 1.23 1.84 1.29 1.84 
+-6.08 0.74 -6.09 0.65 -1.41 -2.06 -1.33 -2.06 -1.23 -2.08 -0.87 -1.5 -3.73 1.7 -0.2 2.21 
+1.57 2.17 1.37 2.15 3.23 1.95 4.29 -0.15 6.66 0.05 3.47 0.39 3.15 -0.5 5.95 -1.02 
+1.43 1.69 5.84 -1.19 -1.37 -1.61 4.71 -0.93 -3.47 -0.66 -1.3 -0.26 -1.62 -0.25 -1.98 -0.96 
+-0.2 -1.8 -0.3 -0.63 -0.29 -1.11 -0.67 -0.3 -1.5 -1.23 -1.61 -1.62 -0.76 -1.74 -1.47 -1.15 
+-0.62 -0.5 -3.06 -1.67 -1.74 -1.78 -1.2 -0.59 -2.47 -1.24 -1.52 -1.87 0.97 -1.8 0.71 -1.43 
+0.37 -0.32 -0.52 -1.83 -0.63 -0.71 -0.78 -1.19 -0.79 -1.87 -5.55 -0.61 -6.47 -0.78 -0.32 -2.02 
+-0.26 -2.02 -6.45 -1.06 -6.42 -1.15 -0.18 -2.21 -0.11 -2.19 6.42 1.34 6.42 1.26 6.45 1.15 
+6.45 1.08 0.02 0.46 0.22 -0.41 -0.29 -0.54 -1.19 -1.52 -5.3 -2.05 -2.08 -1.25 -1.56 -2.28 
+1.32 -1.65 2.64 -1.28 0.04 0 -0.04 -0.02 -6.34 -1.61 0.26 -1.95 -6.27 -1.8 0.34 -2.02 
+0.41 -2.02 6.23 1.97 2.32 0.7 0.47 -1.86 -1.91 -2.41 -0.43 1.65 -6.19 -2.04 -6.16 -2.13 
+0.58 -2.06 0.66 -2.04 -0.02 -0.02 0.02 0 6.59 0.73 1.15 0 3.35 -0.89 1.84 -1.43 
+2.06 -1.21 0.06 -0.07 -0.02 -0.05 -0.02 0.05 -5.91 -2.54 -0.84 1.91 -5.93 -2.54 -5.9 -2.58 
+-0.89 2.06 -5.91 -2.61 -5.88 -2.69 -2.67 -1.26 -1.89 1.84 -0.75 2.37 -1 2.26 0.54 2.87 
+-2.43 1.67 -1.89 1.9 -0.97 1.63 -0.2 0.57 f*
+255 203 0 rG
+2315.88 3346.94 -4.17 -0.41 2.65 -1.24 1.3 0.85 0.21 0.8 f*
+2314.46 3206.55 -2.05 2.11 2.34 1.76 2.2 -1.91 -2.49 -1.95 f*
+0 255 r6
+2312.63 3362.96 1.04 0.91 4.32 1.32 1.15 -0.21 -6.51 -2.02 f*
+110 210 9 rG
+2313.67 3363.87 1.04 0.89 2.11 0.65 1.17 -0.22 -4.32 -1.32 f*
+7 193 59 rG
+2314.71 3364.75 1 0.87 1.11 -0.21 -2.11 -0.65 f*
+255 35 0 rG
+2324.87 3361.87 -2.82 2.52 5.16 2.34 4.43 2.38 4.21 2.39 4.36 2 0.79 0.04 4.38 -0.06 
+0 -1.41 -6.6 -0.2 -0.97 -0.02 -1.2 -0.57 -3.86 -2.45 -3.71 -2.54 -2.29 -2.84 5.54 2.04 
+5.23 0.86 1.82 0.64 4.1 2.19 2.15 2.82 -0.02 0.07 -0.2 0 0 1.41 2.3 -0.02 
+0.91 -2.5 -3.14 -2.41 -4.21 -2.11 -5.14 -1.93 -2.37 -1.08 -2.76 -0.98 -6.09 -0.59 f*
+2323.96 3213.8 -1.3 1.87 4.73 0.69 -3 -2.52 -0.44 -0.04 f*
+255 203 0 rG
+2323.48 3366.41 2.3 1.82 3.64 1.46 4.93 2.25 4.68 2.24 0.76 -0.26 -4.71 -2.2 -4.55 -2.32 
+-5.17 -2.25 -1.88 -0.74 f*
+189 0 54 rG
+2332.29 3365.5 -5.54 -2.04 2.29 2.84 3.71 2.54 3.86 2.45 1.2 0.57 0.97 0.02 0 -1.24 
+-3.82 -0.83 -1.67 -1.13 -3.34 -2.62 -0.13 -0.16 0.33 0.11 5.51 2.02 4.29 0.14 2.5 1.34 
+0.65 0.87 -4.32 0.26 0 1.24 6.6 0.2 0.2 0 0.02 -0.07 -2.15 -2.82 -4.1 -2.19 
+-1.82 -0.64 -5.23 -0.86 f*
+0 255 r6
+2325.79 3368.23 1.97 1.52 0.57 0.21 5.27 2.19 4.67 2.26 0.78 -0.24 -4.68 -2.24 -4.93 -2.25 
+-3.64 -1.46 f*
+110 210 9 rG
+2327.75 3369.75 0.37 0.28 1.29 0.96 3.43 1.39 4.64 2.29 0.79 -0.24 -4.67 -2.26 -5.27 -2.19 
+-0.57 -0.21 f*
+255 G
+2329.1 3285.35 -0.11 -2.19 6.42 1.34 6.42 1.26 6.45 1.15 6.45 1.08 0.02 0.46 0.11 1.34 
+0.22 1.82 0.26 1.84 6.46 0.68 -0.26 -1.71 6.47 0.69 6.49 0.61 6.46 0.52 0.26 1.43 
+0.33 1.43 0.34 1.46 -6.46 -0.24 -6.47 -0.3 -6.44 -0.42 -6.47 -0.5 -0.39 -1.82 -0.92 -0.08 
+-5.55 -0.61 -6.47 -0.78 -0.32 -2.02 -0.26 -2.02 -6.45 -1.06 -6.42 -1.15 -0.18 -2.21 f*
+87 0 136 rG
+2330.14 3366.02 -0.33 -0.11 0.13 0.16 3.34 2.62 1.67 1.13 3.82 0.83 4.32 -0.26 -0.65 -0.87 
+-2.5 -1.34 -4.29 -0.14 -5.51 -2.02 f*
+7 193 59 rG
+2329.41 3370.98 1.58 1.17 1.09 0.43 4.62 2.32 0.78 -0.25 -4.64 -2.29 -3.43 -1.39 f*
+255 G
+2337.43 3266.06 -6.16 -2.13 0.58 -2.06 0.66 -2.04 6.07 2.28 6.1 2.21 -0.57 1.89 -0.06 0.24 
+-0.43 1.65 -6.19 -2.04 f*
+2 239 204 rG
+2330.99 3372.16 0.74 0.52 1.7 1.22 2.5 1.25 0.78 -0.24 -4.62 -2.32 -1.09 -0.43 f*
+255 35 0 rG
+2332.51 3259.81 -0.02 0 0.02 0.02 6.07 2.28 6.1 2.21 -0.57 1.89 -0.06 0.24 1.91 2.41 
+-0.47 1.86 3.93 1.17 -0.35 1.84 6.29 1.72 -0.26 1.75 -0.22 1.79 -6.32 -1.52 -0.04 0 
+-2.64 1.28 -1.32 1.65 1.56 2.28 2.08 1.25 5.3 2.05 1.19 1.52 0.29 0.54 -0.22 0.41 
+0.11 1.34 0.22 1.82 0.26 1.84 6.46 0.68 -0.26 -1.71 6.47 0.69 6.49 0.61 6.46 0.52 
+0.26 1.43 0.33 1.43 0.34 1.46 3.85 0.09 -0.18 -1.39 -0.89 -1.41 -1.3 -1.46 -0.65 -1.43 
+0.5 -1.34 -1.13 -1.52 -1.3 -1.56 -0.39 -0.63 -4.76 -1.56 -1.71 -0.29 -6.45 -1.06 0.07 -1.62 
+0.11 -1.59 4.6 0.91 -1.02 -1.79 -1.41 -1.91 -1.69 -1.2 -0.98 -1.09 -1.24 -2 0.39 -1.61 
+-0.85 -1.97 -1.97 -1.91 -1.07 -0.83 -2.78 -2.78 1.87 -1.21 3.61 -0.52 -5.06 -3.56 -0.41 -0.48 
+-4.6 -3.82 -0.24 -0.24 -4.34 -4.12 -0.13 -0.29 0.35 -1.84 1.11 -1.71 1.07 -0.56 1.39 -0.46 
+1.23 -0.35 0 -3.6 -6.33 -1.2 -0.57 -2.75 2.58 0.08 4.32 3.87 0 3.6 1.59 -0.43 
+3.21 1.41 1.02 -1.37 -5.46 -3.04 1.28 -1.63 1.3 -1.6 -5.28 -3.21 0.09 -0.11 -0.02 -2.43 
+-3.79 -2.45 1.56 -1.69 1.61 -1.68 -4.04 -2.84 -1.08 2.13 -1.71 1.65 -2.06 -0.3 -1.58 -2.15 
+0.19 -2.82 3.5 -0.48 2.13 1 1.43 -1.39 0.52 -0.48 -2.87 -1.25 -2.78 -1.63 -6.32 -2.06 
+-1.56 2.04 -1.48 2.06 -1.66 1.93 0.52 3.34 1.78 1.98 4.86 3.82 0.56 1.59 -0.18 2.55 
+1.32 3.34 0.17 0.33 1.57 3.12 1.89 3.09 0.11 0.32 0.02 2.34 -0.24 2.17 3.69 1.7 
+-0.91 1.78 -0.82 1.78 0.02 0.05 -0.06 0.07 -2.06 1.21 -1.84 1.43 -3.35 0.89 -1.15 0 
+-6.59 -0.73 f*
+0 155 255 rG
+2333.42 3373.89 2 1.41 0.5 -0.16 -2.5 -1.25 f*
+255 G
+2342.45 3273.89 -6.27 -1.8 0.34 -2.02 0.41 -2.02 6.23 1.97 2.32 0.7 3.93 1.17 -0.35 1.84 
+6.29 1.72 -0.26 1.75 -0.22 1.79 -6.32 -1.52 -0.04 -0.02 -6.34 -1.61 0.26 -1.95 f*
+189 0 54 rG
+2342.29 3223.92 -0.19 2.82 1.58 2.15 2.06 0.3 1.71 -1.65 1.08 -2.13 -0.93 -0.67 0.31 -0.3 
+-2.13 -1 -3.5 0.48 f*
+0 255 r6
+2346.75 3341.52 -2.47 -2.12 0.04 -2.52 1.26 -0.85 1.69 0.37 6.25 1.3 0.46 0.11 4.96 1.17 
+4.35 1.15 0.15 0.15 2.04 1.89 0.71 0.63 -4.47 2.39 0.14 0.5 -2.87 3.34 -6.75 0.37 
+-3.58 -0.26 -2.15 -2.25 0.93 -1.85 1.46 -1.34 -2.15 -2.17 f*
+255 G
+2344.81 3316.82 -0.32 -0.58 0.63 -0.02 5.64 -0.21 6.27 -0.31 1.11 1.87 1.17 1.89 1.23 1.84 
+1.29 1.84 -6.08 0.74 -6.09 0.65 -1.41 -2.06 -1.33 -2.06 -1.23 -2.08 -0.87 -1.5 f*
+0 255 r6
+2346.31 3175.76 -1.48 0.8 1.35 1.63 0.13 -2.43 f*
+2346.7 3181.99 -0.93 0.54 1.15 1.33 -0.22 -1.87 f*
+255 203 0 rG
+2346.31 3175.76 -0.13 2.43 2.07 2.46 -0.05 -5.04 0.46 -1.13 -0.96 0.52 -1.39 0.76 f*
+2348.3 3181.08 -1.61 0.91 0.22 1.87 1.93 2.21 -0.55 -4.99 f*
+0 255 r6
+2347.63 3188 -0.7 0.43 2.11 2.25 -1.41 -2.69 f*
+255 203 0 rG
+2349.04 3187.16 -1.41 0.84 1.41 2.69 1.85 1.98 2.69 2.86 -1.95 -3.32 -2.59 -5.05 f*
+255 135 0 rG
+2348.66 3174.48 -0.46 1.13 0.05 5.04 0.25 0.3 -0.2 0.13 0.55 4.99 0.71 0.79 -0.52 0.3 
+2.59 5.05 1.95 3.32 1.28 1.33 -0.48 0.3 2.41 5.21 0.59 0.96 2.54 3.79 3.28 4.64 
+1.04 1.56 2.91 2.65 4.36 3.86 -1.89 1.39 4.49 3.78 0.91 0.74 0 -5.82 -2.76 -0.63 
+-4.73 -3.61 -1.15 -3.71 -0.15 -2.28 -0.3 -1.63 1.58 0.79 4.52 3.77 4.08 4.04 0.74 1.84 
+-1.82 1.41 0 5.82 3.62 2.97 -1.67 1.32 4.67 3.63 4.71 3.55 4.43 3.28 -2.73 -4.32 
+-0.15 -0.2 -4.12 -4 -2.95 -4.17 -0.17 -0.59 -0.5 -2.78 -0.02 -2.93 -0.07 -0.76 -1.52 -3.82 
+-0.76 -1.37 -4.04 -4.04 -3.88 -4.14 -4.54 -3.8 -0.67 -0.52 -4.38 -2.95 -3.47 -4.47 -3.84 -4.25 
+-0.89 -1.78 -1.76 -3.21 -0.52 -3.95 -0.2 -2.12 -0.09 -3.13 1.48 -3.32 0.5 -0.89 -0.85 0.46 
+-1.97 1.02 f*
+189 0 54 rG
+2351.17 3239.02 -2.58 -0.08 0.57 2.75 6.33 1.2 -4.32 -3.87 f*
+255 35 0 rG
+2350.98 3173.89 -1.48 3.32 0.09 3.13 0.2 2.13 0.52 3.95 1.76 3.21 0.89 1.78 3.84 4.25 
+3.47 4.47 4.38 2.95 0.67 0.52 4.54 3.8 3.88 4.14 4.04 4.04 0.76 1.37 1.52 3.82 
+0.07 0.76 0.02 2.93 0.5 2.78 0.17 0.59 2.95 4.17 4.13 4 0.15 0.2 2.73 4.32 
+0.3 0.24 -0.28 0.24 -0.29 1.5 4.06 2.82 -1.26 1.13 -1.24 1.15 2.06 1.33 1.3 -1.04 
+0.43 -1.67 -0.5 -1.59 -0.39 -1.04 -1.48 -3.23 -0.65 -1.02 -3.69 -4.32 -1.13 -1.24 -2.69 -2.95 
+-1.47 -3.11 -0.74 -2.23 -0.41 -1.59 -0.04 -2.99 -0.54 -1.46 -2.63 -4.77 -0.04 -0.11 -4.04 -4.04 
+-3.88 -4.14 -3.86 -4.16 -0.59 -0.37 -4.47 -3.12 -3.95 -4.19 -3.95 -4.17 -3.28 -4.6 -0.2 -1.57 
+-0.42 -4.51 -0.04 -0.85 1.78 -2.86 2.11 -2.54 3.13 -1.26 4.95 1.5 0.21 0.11 -0.13 -0.15 
+-1.23 -1.75 -4.36 -1.67 -0.67 0.3 -0.37 -0.5 -3.1 1.32 0.48 0.65 -2.11 1.04 -0.5 0.89 f*
+110 210 9 rG
+2353.3 3165.95 -3.09 1.48 0.18 0.24 3.23 -1.26 -0.32 -0.46 f*
+189 0 54 rG
+2350.7 3249.57 -0.35 1.84 0.13 0.29 4.34 4.12 0.24 0.24 4.6 3.82 0.41 0.48 5.06 3.56 
+-3.61 0.52 -1.87 1.21 2.78 2.78 1.07 0.83 1.97 1.91 0.85 1.97 -0.39 1.61 1.24 2 
+0.98 1.09 1.69 1.2 1.41 1.91 1.02 1.79 1.8 0.34 3.17 0.59 -0.24 -1.55 -0.09 -1.49 
+0.17 -1.48 -0.57 -1.65 -1.34 -1.75 -0.26 -0.22 -5.08 -3.04 -0.45 -0.24 -2.47 -2.34 -1.24 -2.17 
+2.26 -0.98 3.32 0.02 3.32 0.59 3.12 0.65 0.43 -1.04 -6.01 -2.21 0.7 -1.47 -2.49 -0.98 
+-4.01 -0.18 -2.37 -2.41 2.02 -1.08 -4.12 -1.79 0.91 -1.58 0.93 -1.58 -5.68 -2.73 1.06 -1.65 
+1.08 -1.61 0.16 -0.21 -3.21 -1.41 -1.59 0.43 -1.23 0.35 -1.39 0.46 -1.07 0.56 -1.11 1.71 f*
+0 255 r6
+2353.62 3166.41 -3.23 1.26 0.89 1.21 3.2 -1.28 -0.85 -1.2 f*
+189 0 54 rG
+2352.58 3175.96 -1.78 2.86 0.04 0.85 0.42 4.51 0.2 1.57 3.28 4.6 3.95 4.17 3.95 4.19 
+4.47 3.12 0.59 0.38 3.86 4.16 3.88 4.14 4.04 4.04 0.04 0.11 2.63 4.77 0.54 1.46 
+0.04 2.99 0.41 1.59 0.74 2.23 1.47 3.11 2.69 2.95 1.13 1.24 3.69 4.32 0.65 1.02 
+1.48 3.23 0.39 1.04 0.5 1.59 -0.43 1.67 -1.3 1.04 1.57 1 1.32 -1.02 0.7 -1.43 
+-0.11 -2.04 -1.19 -1.67 -0.89 -1.89 -1.97 -3.08 -1.71 -1.98 -1.82 -2.43 -4.03 -4.02 -0.68 -1.43 
+-1.02 -3.62 -0.22 -0.46 0.15 -2.5 -1.26 -3.43 -1.02 -1.82 -1.41 -3.17 -3.93 -4.1 -3.91 -4.13 
+-3.73 -4.25 -5.23 -3.23 -0.13 -0.09 -4.05 -4.1 -3.8 -4.28 -3.71 -4.32 -0.04 -0.39 0.07 -4.69 
+-0.13 -1.29 1.45 -2.08 2.48 -2.02 3.02 -1.32 2.41 0.72 3.49 1.93 -1.8 -2.52 -0.21 -0.11 
+-4.95 -1.5 -3.12 1.26 -2.11 2.54 f*
+255 203 0 rG
+2354.47 3167.6 -3.2 1.28 0.92 1.21 3.14 -1.3 -0.87 -1.19 f*
+2 239 204 rG
+2352.06 3384.83 -0.76 0.32 1.76 0.98 -1 -1.3 f*
+0 255 r6
+2352.02 3366.34 -0.61 -0.59 1.22 0.37 -0.16 0.38 -0.46 -0.16 f*
+255 0 r6
+2352.47 3397.92 -0.96 0.45 3.06 1.48 -2.11 -1.93 f*
+87 0 136 rG
+2353.38 3176.97 -1.45 2.08 0.13 1.29 -0.07 4.69 0.04 0.39 3.71 4.32 3.8 4.28 4.05 4.1 
+0.13 0.09 5.23 3.23 3.73 4.25 3.91 4.13 3.93 4.1 1.41 3.17 1.02 1.82 1.26 3.43 
+-0.15 2.5 0.22 0.46 1.02 3.62 0.68 1.43 4.03 4.02 1.82 2.43 1.71 1.98 1.97 3.08 
+0.89 1.89 1.19 1.67 0.11 2.04 -0.7 1.43 -1.32 1.02 1.45 0.91 -1.13 1.11 -1.08 1.11 
+-1.05 1.15 -1.02 1.17 -0.98 1.17 -0.96 1.2 -0.91 1.19 -0.87 1.23 2.11 0.98 2.64 -0.34 
+2.02 0.43 5.33 1.54 1.16 -0.04 0.15 0.65 0.32 1.55 0.11 1.41 -1.75 0.61 4.42 1.8 
+5.84 2.32 0.59 -0.93 5.82 2.3 0.56 -0.84 0.59 -0.83 4.34 1.8 0 -5.28 -1.5 -0.06 
+-0.67 -1.09 1.74 -0.04 0.43 1.19 0 5.28 1.39 0.58 0.54 -0.76 0.57 -0.73 0.59 -0.72 
+5.55 2.54 0.54 -0.63 0.57 -0.65 0.59 -0.61 0.61 -0.63 0.61 -0.61 0.65 -0.61 0.65 -0.59 
+0.67 -0.56 0.7 -0.57 0.2 -0.15 -0.44 -0.02 -1.85 -0.13 -2.54 -0.54 -0.06 -0.02 -2.09 -0.71 
+-0.71 -1.02 -0.46 -1.46 0.17 -1.09 0.82 -0.69 1.17 -0.44 1.57 -0.11 1.8 0.09 1.3 0.41 
+3.15 3.02 -0.35 0.84 0.19 0.58 0.29 -0.21 0.78 -0.52 0.76 -0.52 4.43 3.43 0.7 -0.43 
+1.43 -0.86 0 -9.03 -2.08 -1.24 -0.98 -0.74 -3.4 -2.82 -0.65 -1.97 0.84 -0.91 1.34 -0.33 
+1.59 0.07 2.13 0.82 0.32 0.11 3.02 4.14 -0.02 0.41 -0.24 1.48 -0.67 0.8 -1.2 0.18 
+0 9.03 0.74 -0.42 0.74 -0.39 1.52 -0.78 0.8 -0.37 0.78 -0.34 0.8 -0.35 0.82 -0.34 
+0.83 -0.33 3.16 4 0.72 -0.26 -3.06 -4.04 0.85 -0.3 0.84 -0.28 0.87 -0.29 0.87 -0.26 
+-2.54 -4.21 1 -0.3 2.04 -0.52 1.02 -0.24 -2.02 -4.36 1.15 -0.26 1.15 -0.24 1.17 -0.21 
+2.34 -0.39 1.19 -0.18 -1.25 -4.51 -1.33 0.19 -1.3 0.2 -1.3 0.22 -1.61 -4.49 -0.18 0.04 
+-0.48 2.2 -1.17 0.72 -1.39 0.17 -1.64 -0.39 -2.02 -1.02 -0.26 -0.17 -3.27 -3.58 -0.35 -0.44 
+-3.73 -3.93 -0.07 -0.06 -2.71 -4.32 -0.12 -0.99 0.58 -2.74 1.02 -1.71 -0.02 -0.43 -0.17 -4.52 
+-2.2 -0.61 -2.06 0.31 -2.17 0.08 -3.36 -2.37 -0.33 -0.3 -3.97 -2.91 -0.63 -0.54 -3.08 -4.32 
+-0.98 -3.73 0.29 -1.3 0.43 -2.54 0.24 -2.87 -1.3 -4.84 -3.34 -1.18 -3.76 -1.61 -2.06 1.8 
+-2.13 1.61 -2.3 1.21 -2.56 0.71 -3.06 -2.02 -3.12 -4.38 -0.74 0.26 -0.89 -1.46 -3.82 -0.87 
+-1.56 2.62 -3.06 0.38 -2.84 -1.59 -2.09 -0.61 -4.54 -2.37 -0.48 0.22 -0.56 -0.8 -4.75 -2.71 
+-0.63 0.28 -2.3 -3.15 -1.61 -1.02 -4.91 -3.73 -0.57 0.25 -1.34 -1.84 -3.49 -1.93 -2.41 -0.72 
+-3.02 1.32 -2.48 2.02 f*
+7 193 59 rG
+2353.21 3384.31 -1.15 0.52 1 1.3 2.45 1.32 4.3 2.24 4.42 2.16 1.98 0.96 -1.5 -1.21 
+-4.17 -2.26 -4.6 -2.08 -2.73 -2.95 f*
+255 135 0 rG
+2355.34 3168.79 -3.14 1.3 0.91 1.22 3.1 -1.32 -0.87 -1.2 f*
+0 255 r6
+2352.58 3198.33 -0.13 0.09 0.3 0.28 -0.17 -0.37 f*
+0 155 255 rG
+2355.82 3396.27 -3.34 1.65 2.11 1.93 1.91 0.89 5.05 2.3 5.14 2.21 5.25 2.13 2.7 -1.82 
+-6.41 -1.26 -5.34 -2.02 -3.62 -3 -1 -1.82 -2.45 -1.2 f*
+255 203 0 rG
+2354.38 3197.16 -1.8 1.17 0.17 0.37 3.82 3.82 -2.15 1.46 0.26 0.46 3.84 3.64 4.28 3.97 
+1.43 1.28 -1.04 -1.56 -3.28 -4.64 -2.54 -3.79 -0.59 -0.96 -2.41 -5.21 f*
+110 210 9 rG
+2354.36 3383.81 -1.15 0.5 2.73 2.95 4.6 2.08 4.17 2.26 1.5 1.21 2.52 1.15 -1.71 0.98 
+1.8 3.19 0.11 0.57 1.2 0 5.64 0.72 6.01 1.04 2.82 3.43 0.32 0.61 4.32 1.47 
+1.35 0.43 0 -1.56 -1.69 -2.82 6.14 -1.08 0.52 3.3 -4.97 0.61 0 1.56 2.67 0.89 
+1.76 -0.23 5.33 -1.37 4.52 -1.91 5.25 1 3.11 3.65 1.93 -2.48 2.41 -3.12 2.13 -2.82 
+-0.87 -0.61 -2.32 -2.3 -4.47 -1.21 -2.19 1.17 -6.4 1.87 -0.48 -0.05 -6.18 0.48 -5.64 -0.76 
+-0.69 0.07 -5.34 -0.67 -7.05 -0.13 -0.65 -0.18 -4.52 -1.43 -0.52 -0.68 -3.02 -1.97 -3.55 -2.59 
+-3.58 -2.54 -1.78 -2.89 0.3 -0.61 -1.2 0.15 -5.17 -1.32 f*
+255 135 0 rG
+2354.58 3234.94 -1.37 -0.87 0.02 2.43 1.34 -1.56 f*
+0 255 r6
+2354.43 3203.97 -0.14 0.08 0.39 0.38 -0.26 -0.46 f*
+2355.51 3383.31 -1.15 0.5 5.17 1.32 1.2 -0.15 -0.3 0.61 1.78 2.89 3.58 2.54 3.55 2.59 
+3.02 1.97 0.52 0.68 4.52 1.43 0.65 0.18 7.05 0.13 5.34 0.67 0.69 -0.07 5.64 0.76 
+6.18 -0.48 0.48 0.05 6.4 -1.87 2.19 -1.17 4.47 1.21 2.32 2.3 0.87 0.61 0.24 -0.33 
+2.34 -3.21 2.32 -3.25 4.27 0.93 0.2 -0.28 -3.99 -1.35 -3.78 -1.58 -4.05 -1.15 -4.64 -0.52 
+-4.23 -1.06 -3 -2.28 -2.15 -2.87 -0.04 -0.02 -3.62 -1.49 -3.32 -1.11 -0.61 -0.18 -4.36 -1 
+-2.75 -2.11 -0.07 -0.04 -3.06 -1.91 -2.52 -2.21 -2.73 -2.06 -3.12 -1.82 -1.45 -0.02 -2.86 -0.07 
+-0.22 0 -4.86 1.24 -0.89 0.28 0.08 0.09 2.2 2.54 3.41 1.95 3.71 1.78 3.02 2.16 
+0.74 2.93 0.11 0.65 2.04 2.99 0.58 1.84 0.43 2.02 1.07 2.75 -3.99 2.48 -4.39 -0.3 
+-1.34 -0.46 -3.56 -1.25 -3.97 -2.29 -3 -2.8 -0.24 -0.39 1.79 -3.52 -0.07 -1.06 -1.91 0.05 
+-6.7 0.91 -1.2 -0.3 f*
+255 35 0 rG
+2355.67 3295.29 -0.92 -0.08 0.79 1.87 0.78 1.19 0.63 0.71 0.52 1.83 -0.37 0.32 -0.71 1.43 
+-0.97 1.8 1.52 1.87 2.47 1.24 1.2 0.59 1.74 1.78 3.06 1.67 0.63 0.5 0 -4.04 
+-0.74 -1.71 -0.67 -1.71 -0.61 -1.73 -0.57 -1.72 6.45 0.2 6.45 0.13 0.52 1.52 0.57 1.52 
+0.61 1.54 0.67 1.5 -6.34 0.28 -6.34 0.2 0 4.04 1.47 1.15 0.76 1.74 1.61 1.63 
+1.5 1.23 0.67 0.3 0.29 1.11 0.3 0.63 0.2 1.8 1.98 0.96 1.63 0.25 1.3 0.26 
+0 -5.75 -1.02 -1.56 -0.98 -1.58 6.18 -0.67 6.17 -0.79 0.89 1.39 0.93 1.37 -6.08 0.98 
+-6.1 0.87 0 5.75 3.47 0.66 1.17 -0.26 5.86 -1.28 -1.17 -1.41 5.9 -1.25 -1.09 -1.34 
+3.76 -0.76 0.52 -1.58 0.11 -0.93 -0.32 -0.46 -0.87 -1.29 0.52 -0.08 -1.02 -1.24 -0.5 -0.22 
+-2.26 -0.82 -2.47 -1.13 -2.87 0.28 -0.73 -1.39 -0.7 -1.43 -0.65 -1.41 5.53 -0.3 0.02 -1.37 
+-1.89 -1.3 -4.8 0.13 -0.5 -1.43 -0.46 -1.43 -0.39 -1.43 -6.46 -0.24 -6.47 -0.3 -6.44 -0.42 
+-6.47 -0.5 -0.39 -1.82 f*
+255 135 0 rG
+2355.14 3357.62 -0.17 1.34 2.06 0.07 0.93 -1.06 -2.82 -0.35 f*
+2358.79 3169.45 -1.54 0.74 4.36 1.67 -1.3 -1.83 -1.52 -0.58 f*
+2 239 204 rG
+2360.61 3398.54 -2.34 -1.08 1 1.82 3.63 3 5.34 2.02 6.41 1.26 0.93 -0.65 2.95 -2.09 
+-7.05 -0.59 -2.71 -0.09 -3.71 -1.11 -0.93 -0.91 -0.54 -3.21 -2.95 1.63 f*
+255 203 0 rG
+2359.61 3169.08 -0.82 0.37 1.52 0.58 -0.7 -0.95 f*
+0 255 r6
+2364.5 3347.55 -2.3 0.63 1.58 -1.24 0.85 0.5 -0.13 0.11 f*
+255 G
+2364 3302.8 -0.57 -1.72 6.45 0.2 6.45 0.13 0.52 1.52 0.57 1.52 0.61 1.54 0.67 1.5 
+-6.34 0.28 -6.34 0.2 -0.74 -1.71 -0.67 -1.71 -0.61 -1.73 f*
+7 193 59 rG
+2364.7 3396.29 -1.13 0.63 0.54 3.21 0.93 0.91 3.71 1.11 2.71 0.09 7.05 0.59 0.65 -0.45 
+4.99 1.84 0.76 0.29 -0.32 -0.61 -2.82 -3.43 -6.01 -1.04 -5.64 -0.72 -1.2 0 -0.11 -0.57 
+-1.8 -3.19 -2.32 1.34 f*
+87 0 136 rG
+2365.95 3258.62 -2.02 1.08 2.37 2.41 4.01 0.18 -3.43 -1.39 0.8 -1.54 -1.74 -0.74 f*
+0 255 r6
+2367.47 3363.65 -2.98 -1.95 1.63 -1.67 2.63 -0.04 3.04 1.78 0.89 2.45 -5.21 -0.57 f*
+87 0 136 rG
+2367.93 3266.73 -2.26 0.98 1.24 2.17 2.47 2.34 0.45 0.24 5.08 3.04 0.26 0.22 1.34 1.75 
+0.57 1.65 -0.17 1.48 0.09 1.49 0.24 1.55 3.25 0.58 -0.08 1.41 0 0.67 3.77 1.3 
+0.69 1.45 2.06 1.11 1.52 0.63 0.8 1.37 -0.71 1.25 1.11 1.37 4.3 0.22 6.49 0.24 
+-0.22 -1.15 -0.15 -1.16 -0.13 -1.15 -0.08 -1.15 6.49 0.54 6.49 0.46 -0.04 -0.96 -0.02 -0.95 
+6.49 0.54 -0.02 -0.84 0.05 -0.87 0.04 -0.85 6.47 0.74 0.06 -0.76 0.09 -0.76 0.11 -0.73 
+0.15 -0.76 0.15 -0.74 0.2 -0.76 0.2 -0.73 0.24 -0.74 6.29 1.41 0.22 -0.66 0.24 -0.63 
+0.26 -0.62 0.57 -1.26 0.32 -0.63 0.7 -1.22 0.39 -0.61 -5.86 -2.15 -0.43 0.67 -0.41 0.7 
+-0.39 0.7 -0.36 0.71 -6.06 -1.93 -0.39 0.8 -6.08 -1.91 -0.41 0.89 -6.08 -1.88 -6.08 -1.98 
+-6.04 -2.06 -0.52 1.15 -6.05 -2.06 -0.55 1.24 -0.52 1.23 -6.12 -1.95 -6.08 -2.06 0.15 -0.37 
+-3.12 -0.65 -3.32 -0.59 -3.32 -0.02 f*
+255 203 0 rG
+2366.23 3209.7 -0.3 -1.63 1.58 0.79 4.52 3.77 4.08 4.04 0.74 1.84 -1.82 1.41 -2.76 -0.63 
+-4.73 -3.61 -1.15 -3.71 -0.15 -2.28 f*
+189 0 54 rG
+2367.43 3177.52 -0.74 0.35 4.91 3.73 1.61 1.02 -0.95 -1.32 -0.81 -1.12 -4.01 -2.65 f*
+255 135 0 rG
+2369.1 3385.59 -2.24 3.25 1.02 1 4.41 1.97 2.08 0.48 4.43 -2.23 -0.37 -2.09 -3.04 -2.52 
+-6.29 0.13 f*
+255 35 0 rG
+2368.95 3176.82 -1.52 0.7 4.01 2.65 -2.3 -3.2 -0.2 -0.15 f*
+255 G
+2373.94 3286.07 -6.45 -1.06 0.07 -1.62 0.11 -1.59 4.6 0.91 1.8 0.34 3.17 0.59 3.25 0.58 
+-0.08 1.41 0 0.67 -0.02 0.76 -4.73 -0.71 -1.71 -0.29 f*
+255 0 r6
+2368.86 3409.39 -0.61 0.39 1.24 0.5 -0.63 -0.89 f*
+0 155 255 rG
+2371.94 3407.38 -3.08 2.02 0.63 0.89 4.27 1.63 5.62 1.99 3.32 -2.58 -5.43 -1.93 -5.34 -2.02 f*
+255 135 0 rG
+2369.04 3176.8 -0.09 0.02 0.2 0.15 -0.11 -0.17 f*
+2373.33 3354.21 -0.56 1.2 2.32 1.91 2.36 1.91 2.7 1.76 2.64 1.75 0.63 2.76 0 0.15 
+1.43 2.56 1.76 2.5 2.78 1.9 3.23 0.52 0 -12.33 -0.65 -0.04 -4.86 -0.35 -2.99 -1.46 
+-1.22 -2.32 0.29 -1.26 1.75 0.26 3.39 1.15 2.67 1.47 1.39 2.26 0.24 0.28 0 12.33 
+1.28 0.22 2.74 1.93 2.73 1.99 0.3 0.26 2.67 1.61 2.67 0.41 2.67 -0.65 5.4 -0.72 
+0.13 -0.02 3.86 0.78 4.02 0.52 4.82 -0.61 2.26 -0.34 2.73 -0.83 4.76 -1.23 0.07 -0.11 
+-3.37 -0.78 2.32 -3.46 -3.17 -0.78 -3.15 -0.84 -3.07 -0.89 2.78 -3.32 -2.91 -0.89 -2.88 -0.93 
+-2.82 -0.98 -2.8 -1.02 -2.75 -1.09 -0.11 -0.02 0.07 0.07 2.22 1.58 1.19 2.62 0.24 1.46 
+-1.61 -0.15 -4.46 0.24 -3.11 -1.09 -3.1 -1.11 -2.78 -1.37 -2.32 -1.67 -2.21 -1.71 -1.39 -2.2 
+-0.09 -0.06 -2.52 -1.35 -2.56 -1.45 -2.5 -1.48 -2.45 -1.52 -2.39 -1.57 -4.88 2.15 -1.34 -0.93 
+-4.45 2.39 f*
+0 255 r6
+2375.54 3366.45 -0.63 -0.89 1.24 0.58 0.05 0.16 -0.65 0.15 f*
+189 0 54 rG
+2380.38 3287.07 -4.73 -0.71 4.76 1.56 0.39 0.63 1.3 1.56 1.13 1.52 -0.5 1.34 0.65 1.43 
+1.3 1.46 0.89 1.41 0.18 1.39 2.6 0.04 -0.32 -1.35 -0.31 -1.35 -0.26 -1.34 2.19 0.13 
+-1.11 -1.37 0.71 -1.25 -0.8 -1.37 -1.52 -0.63 -2.06 -1.11 -0.69 -1.45 -3.77 -1.3 -0.02 0.76 f*
+255 G
+2376.7 3315.75 -0.98 -1.58 6.18 -0.67 6.17 -0.79 0.89 1.39 0.93 1.37 -6.08 0.98 -6.1 0.87 
+-1.02 -1.56 f*
+255 0 r6
+2377 3415.71 -1 0.74 5.88 2 5.99 1.87 1.15 -1.02 -6.49 -1.37 -5.53 -2.21 f*
+189 0 54 rG
+2377.02 3185.07 -0.89 0.42 4.75 2.71 -1.11 -1.54 -2.76 -1.59 f*
+0 155 255 rG
+2379.38 3413.91 -2.39 1.8 5.53 2.21 6.49 1.37 1.84 -1.67 -5.79 -1.8 -5.68 -1.91 f*
+255 35 0 rG
+2378.25 3184.53 -1.24 0.54 2.76 1.59 -1.52 -2.13 f*
+189 0 54 rG
+2382.83 3188.39 -0.91 0.39 4.54 2.37 2.09 0.61 2.84 1.59 3.06 -0.37 1.56 -2.62 3.82 0.87 
+-1.09 -1.75 -2.3 -0.79 -1.21 0.43 -1.24 0.48 -0.65 1.76 -3.17 -0.26 -0.35 0 -4.32 -1.3 
+-2.67 -1.39 f*
+255 0 r6
+2389.08 2892.55 -6.75 0.63 0.46 5.38 6.73 -0.65 0.43 5.36 0.96 10.72 1 10.71 1.08 10.72 
+0.59 5.34 6.4 -0.63 0.55 5.36 0.56 5.34 6.34 -0.58 0.52 5.34 0.54 5.34 0.57 5.34 
+6.2 -0.54 0.52 5.34 6.14 -0.5 6.19 -0.43 1.3 15.95 6.03 -0.39 0.39 5.32 0.41 5.3 
+5.91 -0.33 5.92 -0.28 0.61 10.59 0.3 5.27 0.33 5.29 -5.68 0.29 -5.66 0.33 0.45 5.27 
+0.46 5.25 0.48 5.27 0.48 5.26 1 10.45 0.5 5.21 5.18 -0.33 5.21 -0.26 5.18 -0.24 
+5.21 -0.17 5.21 -0.12 5.21 -0.07 0.08 5.21 0.07 5.2 0.09 5.21 -4.99 0.06 0.16 5.19 
+-4.91 0.13 -4.91 0.18 0.33 5.16 4.82 -0.15 4.82 -0.13 4.84 -0.06 0.09 5.16 4.75 -0.02 
+0 -62.66 -5.64 0.02 -0.06 -5.27 -5.69 0.09 -0.12 -5.3 -0.13 -5.27 5.82 -0.08 5.84 -0.02 
+0 -170.32 -7.11 0.02 -7.1 0.07 -7.1 0.13 -7.09 0.16 -7.08 0.2 -7.09 0.24 -0.11 -5.32 
+-7.09 0.29 0.13 5.32 -7.08 0.32 0.15 5.32 -7.05 0.38 0.2 5.32 -7.04 0.41 0.22 5.34 
+0.48 10.68 -6.93 0.48 0.28 5.34 -6.9 0.54 0.33 5.36 -6.86 0.59 0.38 5.34 0.39 5.36 
+0.41 5.38 f*
+255 35 0 rG
+2384.14 3187.83 -1.31 0.56 2.67 1.39 4.32 1.3 0.35 0 3.17 0.26 0.65 -1.76 -1.43 0.57 
+-1.11 -1.67 -3.49 -0.13 -2.95 -0.87 -0.86 0.35 f*
+2383.18 3355.38 -0.29 1.26 1.22 2.32 2.99 1.46 4.86 0.35 0.65 0.04 -0.24 -0.28 -1.39 -2.26 
+-2.67 -1.47 -3.39 -1.15 -1.75 -0.26 f*
+255 135 0 rG
+2386.85 3186.71 -1.85 0.76 2.95 0.87 3.49 0.13 -1.7 -2.61 -0.69 -0.04 -2.21 0.89 f*
+189 0 54 rG
+2389.65 3302.69 -1.61 0.05 1.89 1.3 -0.02 1.37 0.82 -0.05 6.34 -0.45 0.56 1.21 2.15 -0.2 
+0.24 -1.25 -3.26 -1 -0.24 0 -6.36 0.35 -0.52 -1.33 f*
+0 255 r6
+2395.03 3400.93 -6.14 1.08 1.69 2.82 4.97 -0.61 -0.52 -3.3 f*
+255 203 0 rG
+2389.58 3185.63 -0.52 0.2 0.69 0.04 -0.17 -0.24 f*
+189 0 54 rG
+2392.69 3309.29 -3.36 0.37 2.47 1.13 2.26 0.82 0.5 0.22 1.02 1.24 5.55 -0.96 -0.79 -1.17 
+-0.73 -1.19 -0.69 -1.2 -6.23 0.74 f*
+255 135 0 rG
+2390.8 3240.97 -1.09 0.93 0.8 0.57 0.29 -1.5 f*
+189 0 54 rG
+2391.28 3261.11 2.64 -0.34 2.02 0.43 5.33 1.54 1.16 -0.04 0.15 0.65 0.32 1.55 0.11 1.41 
+-1.75 0.61 -1.39 -0.57 0.71 -1.09 -5.73 -2.54 -3.58 -1.61 f*
+7 193 59 rG
+2393.25 3407.29 1.13 0.35 5.23 1.58 2.84 -2.91 5.1 1.41 5.16 1.3 0.5 -0.61 -3.11 -3.65 
+-5.25 -1 -4.52 1.91 -5.33 1.37 -1.76 0.23 f*
+189 0 54 rG
+2396.14 3315.82 -0.52 1.58 2.19 -0.48 -0.97 -1.24 -0.59 -0.8 -0.11 0.93 f*
+255 203 0 rG
+2396.5 3358.03 -0.09 -0.06 0.09 0.06 1.39 2.2 2.21 1.71 2.32 1.67 2.78 1.37 3.1 1.11 
+3.11 1.09 4.46 -0.24 1.61 0.15 -0.24 -1.46 -1.19 -2.62 -2.22 -1.58 -0.07 -0.07 -2.6 -1.09 
+-3.69 2.95 -2.82 -1.24 -2.78 -1.28 -2.71 -1.32 -2.68 -1.35 f*
+255 35 0 rG
+2397.94 3188.13 -1.5 0.54 2.3 0.79 -0.8 -1.33 f*
+87 0 136 rG
+2402.89 3303.23 -6.12 0.43 3.26 1 -0.24 1.25 4.14 -0.43 -0.55 -1.13 -0.49 -1.12 f*
+2406.9 3295.4 -6.46 -0.15 0.21 1.15 6.47 0.04 -0.22 -1.04 f*
+189 0 54 rG
+2402.32 3192.1 -0.86 0.3 3.12 4.38 3.06 2.02 2.56 -0.71 2.3 -1.21 2.13 -1.61 2.06 -1.8 
+3.76 1.61 3.34 1.18 1.3 4.84 -0.24 2.87 -0.43 2.54 -0.29 1.3 0.98 3.73 3.08 4.32 
+0.63 0.54 3.97 2.91 0.33 0.3 3.36 2.37 2.17 -0.08 2.06 -0.31 2.2 0.61 0.17 4.52 
+0.02 0.43 -1.02 1.71 -0.58 2.74 0.13 0.99 2.71 4.32 0.07 0.06 3.73 3.93 0.35 0.44 
+3.27 3.58 0.26 0.17 2.02 1.02 1.64 0.39 1.39 -0.17 1.17 -0.72 0.48 -2.2 -1.23 0.24 
+-1.74 -4.51 -1.02 0.21 0.99 3.73 -1.11 1 -2.25 -1.52 -2.46 -2.15 -0.43 -0.46 -3.41 -3.23 
+-0.21 -0.24 -2.69 -4.34 0.11 -0.96 1.02 -1.91 1.06 -2.07 1.32 -0.91 0 -0.78 0.39 0.69 
+2.54 4.41 2.04 4.47 1.95 2.78 -1.19 -2.93 -1.8 -4.53 -1.78 -4.56 -1.76 -4.58 -0.67 -1.8 
+-1.57 1.56 -2.56 -0.91 -2.34 -0.24 -2.13 0.24 -2.52 -0.46 -0.68 -0.48 -3.75 -3.52 -0.57 -0.43 
+-0.24 -1.11 1.55 -1.87 1.9 -1.17 2.11 -0.87 2.43 -0.09 -0.69 -1.69 -0.48 0 0.13 -0.83 
+-1.58 -3.91 -2.41 0.54 -1.97 -4.64 -0.81 -1.91 -3.21 -0.93 -0.82 -1.12 -2.3 0.56 -1.24 -2.66 
+-3.5 -1.15 -0.21 -0.09 -2.5 0.7 -2.62 0.79 -2.6 0.8 -2.11 1.63 -2.72 0.61 -0.65 -0.43 
+-3.43 -4.28 f*
+255 35 0 rG
+2403.36 3191.73 -1.04 0.37 3.43 4.28 0.65 0.43 2.72 -0.61 2.11 -1.62 -2.58 0.82 -2.56 0.87 
+-2.72 -4.53 f*
+2 239 204 rG
+2419.64 3171.25 -3.1 0.71 0.5 1.24 2.75 -1.54 0.29 -0.5 1.93 -2.7 2.8 -1.84 2.95 -1.45 
+3.3 -0.47 3.45 0.13 -0.35 -1.3 -0.59 -0.02 -2.73 0.43 -3.28 0.56 -3.26 0.61 -1.24 0.24 
+-1.75 1.13 -2.73 1.97 1.06 2.8 f*
+7 193 59 rG
+2419.79 3171.66 -2.75 1.54 1.09 2.64 2.59 -1.84 1.88 -3.38 0.13 -0.17 2.73 -1.89 2.75 -1.93 
+3.21 -0.69 3.43 0.19 -0.35 -1.3 -3.45 -0.13 -3.3 0.47 -2.95 1.45 -2.8 1.84 -1.93 2.7 
+-0.29 0.5 f*
+0 155 255 rG
+2421.05 3165.75 -3.23 0.7 0.76 2 2.73 -1.97 1.75 -1.13 -2.02 0.41 f*
+110 210 9 rG
+2420.71 3174 -2.59 1.84 0.34 0.87 0.74 1.76 2.45 -1.97 0.52 -0.63 1.76 -2.04 2.32 -2.84 
+0.43 -1.2 1.97 -1.69 3.11 -0.91 3.45 0.24 -0.37 -1.31 -3.43 -0.19 -3.21 0.69 -2.75 1.93 
+-2.73 1.89 -0.13 0.17 -1.88 3.38 f*
+255 35 0 rG
+2419.1 3192.25 -0.16 0.04 0.21 0.09 3.5 1.15 -0.89 -1.98 -1.32 0.35 -1.34 0.34 f*
+0 255 r6
+2421.66 3176.5 -2.45 1.97 1.08 2.63 2.7 -1.24 2.75 -1.12 -1.24 -3.34 2.89 -0.59 0.13 -0.17 
+1.76 -4.67 0.76 -0.78 2.11 -0.76 1.61 0.13 2 0.87 3.99 2.69 0.45 0.52 0.02 1.32 
+-2.08 4.02 2.99 -0.46 0.66 -0.08 -0.44 -4.97 -2.12 -2.39 -2.58 -1.97 -1.2 0.19 -0.21 -0.86 
+-3.45 -0.24 -3.11 0.91 -1.97 1.69 -0.43 1.2 -2.32 2.84 -1.76 2.04 -0.52 0.63 f*
+255 203 0 rG
+2422.98 3179.86 -2.7 1.24 0.16 0.36 2.91 -0.67 2.93 -0.62 -0.54 -1.43 -2.75 1.13 f*
+189 0 54 rG
+2421.92 3267.19 -0.67 -1.09 1.74 -0.04 0.43 1.19 -1.5 -0.06 f*
+255 35 0 rG
+2426.48 3195.55 -0.28 0.09 0.82 1.13 3.21 0.93 -1.15 -2.75 -2.6 0.61 f*
+255 203 0 rG
+2427.52 3174.63 -0.12 0.17 0.17 -0.04 3.06 -0.59 1.52 4.73 0.26 0.04 1.67 -0.28 0 -3.76 
+-3.06 -0.8 2.25 -1.89 3.39 0.45 0.61 0.39 -0.33 0.67 -2.86 1.17 0 3.76 1.06 -0.2 
+3 -0.5 2.08 -4.02 -0.02 -1.32 -0.45 -0.52 -3.99 -2.69 -2 -0.87 -1.61 -0.13 -2.11 0.76 
+-0.76 0.78 -1.76 4.67 f*
+189 0 54 rG
+2430.14 3265.39 -0.46 -1.46 0.17 -1.09 0.82 -0.69 1.17 -0.44 1.57 -0.11 1.8 0.09 1.3 0.41 
+3.15 3.02 -0.35 0.84 0.19 0.58 -0.45 0.33 -0.72 0.55 -0.52 0.41 -0.44 -0.02 -1.85 -0.13 
+-2.54 -0.54 0 -2.2 0.79 -0.63 0.04 -0.34 -0.35 0.13 -0.84 0.61 0.02 0.18 0.34 0.06 
+0 2.2 -0.06 -0.02 -2.09 -0.71 -0.71 -1.02 f*
+255 35 0 rG
+2430.29 3215.23 -0.24 -1.11 1.55 -1.87 1.9 -1.17 2.11 -0.87 2.43 -0.09 1.19 2.82 2.2 -0.46 
+1.82 4.6 2.08 -0.43 1.07 2.8 -1.57 1.56 -2.56 -0.91 -2.34 -0.24 -2.13 0.24 -2.52 -0.46 
+-0.68 -0.48 -3.75 -3.52 -0.57 -0.43 f*
+255 135 0 rG
+2433.27 3172.22 -2.25 1.89 3.06 0.8 2.86 -1.17 0.33 -0.67 -0.61 -0.39 -3.39 -0.45 f*
+0 255 r6
+2432.14 3178.91 0.02 0.09 0.24 -0.05 -0.26 -0.04 f*
+255 35 0 rG
+2432.66 3264.89 -0.02 -0.18 0.84 -0.61 0.35 -0.13 -0.04 0.34 -0.79 0.63 -0.34 -0.06 f*
+0 155 255 rG
+2434.14 3163.41 -0.57 0.09 0.59 0.02 -0.02 -0.11 f*
+110 210 9 rG
+2438.46 3167.84 -1.82 0.26 2.58 1.97 2.13 2.39 0.44 4.97 2.36 -0.33 -0.28 -1.13 -1.37 -3.66 
+-3.79 -4.3 -0.24 -0.17 f*
+87 0 136 rG
+2437 3207.62 -0.13 0.83 0.48 0 -0.05 -0.09 -0.3 -0.74 f*
+7 193 59 rG
+2438.65 3167.82 -0.19 0.02 0.24 0.17 3.79 4.3 1.37 3.66 -0.87 -3.73 -0.43 -1.85 -2.34 -2.8 
+-1.56 0.21 f*
+2 239 204 rG
+2441.86 3167.36 -1.65 0.24 2.34 2.8 -0.7 -3.04 f*
+189 0 54 rG
+2441.43 3253.6 -0.65 -1.97 0.84 -0.91 1.34 -0.33 1.59 0.07 2.13 0.82 0.32 0.11 3.02 4.14 
+-0.02 0.41 -0.24 1.48 -0.67 0.8 -1.2 0.18 -2.08 -1.24 -0.98 -0.74 -3.4 -2.82 f*
+255 0 r6
+2445.72 3095.59 -4.55 0.35 0.67 5.12 0.67 5.1 0.71 5.1 4.3 -0.34 0.61 5.08 4.21 -0.29 
+4.23 -0.26 4.23 -0.2 0.35 5.08 0.37 5.06 -4.06 0.19 0.48 5.06 3.95 -0.2 3.95 -0.15 
+3.97 -0.11 3.97 -0.07 -0.09 -5.05 -4.06 0.06 -0.2 -5.08 -0.17 -5.08 4.23 -0.06 -0.08 -5.1 
+4.34 -0.02 0 -15.37 -4.6 0.02 -4.58 0.09 -0.18 -5.14 -4.66 0.11 0.52 10.29 -4.51 0.15 
+-4.47 0.21 -4.49 0.26 -4.47 0.31 -0.59 -5.12 f*
+255 35 0 rG
+2445.86 3236.48 -2.69 -4.34 0.11 -0.96 1.02 -1.91 1.06 -2.07 1.32 -0.91 0 -0.78 0.39 0.69 
+2.54 4.41 2.04 4.47 1.95 2.78 0.63 1.57 0.5 -0.09 0.99 3.73 -1.11 1 -2.25 -1.52 
+-2.46 -2.15 -0.43 -0.46 -3.41 -3.23 -0.21 -0.24 f*
+255 203 0 rG
+2445.01 3389.56 -1.55 3.49 4.23 0.59 -1.34 3.52 4.43 0.54 4.46 0.46 4.47 0.37 0.43 -1.95 
+-4.26 -0.8 -3.58 -1.56 -0.17 -0.65 0.13 -3.04 0.93 -3.62 -2.84 -0.35 -1.32 3.56 -4.03 -0.54 f*
+189 0 54 rG
+2449.89 2375.93 -0.91 -0.8 0.91 -0.24 1.17 -0.15 2.04 0.39 0.61 0.71 -0.61 0.3 -0.85 0.2 
+-2.36 -0.41 f*
+255 135 0 rG
+2452.28 3390.52 -0.13 3.04 0.17 0.65 3.58 1.56 4.26 0.8 0.35 -1.61 4.3 0.29 4.32 0.2 
+4.32 0.13 0.22 0 4.1 -0.12 4.32 0.13 0.02 0 2.22 3.54 2.75 2.69 0.91 0.78 
+4.36 2.59 1.32 0.67 3.73 0.54 0 -18.86 -1.25 -0.02 1.11 -0.54 1.97 0.26 -1.82 0.31 
+0 18.86 0.16 0.02 5.59 1.89 0.39 0.29 4.43 3.06 1.56 -0.2 4.99 -0.63 0 -21.85 
+-0.08 -0.02 -4.69 -1.13 -4.56 -1.09 -2.24 0.09 2.09 -0.54 3.45 -1.41 4.04 -0.06 3.08 0.15 
+-0.96 3.95 -0.13 0.07 0 21.85 0.24 -0.02 0.31 0.71 5.1 -1.08 -0.2 -0.41 3.23 -0.52 
+1.3 -1.43 0.16 -2.43 0.47 -3.73 0.09 -0.05 0 -9.91 -2.23 -0.81 1.21 -0.84 1.65 0.26 
+-0.63 1.39 0 9.91 0.89 -0.37 0.54 0.11 4.82 -0.04 4.86 -0.84 4.19 -1.74 4.69 -1.11 
+4.96 -0.85 4.95 -0.98 4.64 -1.37 4.88 -1.17 2.93 0.24 0.78 0.11 0 -7.23 -2.41 -0.45 
+-3.52 -2.78 -5.08 -0.7 -3.95 1.32 -4.55 0.68 -1.24 -0.05 -3.9 -2.78 -0.41 -2.64 4.17 1.41 
+2.82 0.56 4.05 -1.02 4.12 -1.02 1.7 -2.88 3.62 -1.37 4.93 1.48 0.43 0.11 0 -29.45 
+-0.35 -0.09 -0.13 -0.11 0.26 0.02 0.22 0.17 0 29.45 4.49 0.91 -1.54 -2.61 -0.91 -2.69 
+5.45 0.41 1.91 3.6 0.13 0.37 -1.82 2.86 0.98 1.61 -1.58 2.15 -4.91 1.11 -2.97 2.41 
+0 7.23 4.19 0.56 2.82 0.33 2.99 -1.24 1.31 0.87 0.37 -0.13 0 -52.69 -3.23 -0.63 
+-1.39 -0.89 3.56 -1.11 0.41 -0.21 0.43 0.5 0.22 2.34 0 52.69 1.34 -0.43 0 -56.9 
+0.2 -1.63 2.64 -1.48 0.37 -0.02 0.04 0.13 1.43 2.56 -4.69 0.44 0 56.9 3.28 -1.08 
+0.33 -0.18 0 -34.85 0.26 -0.37 0 -17.36 -2.52 -2.16 4.66 0.19 1.32 1.43 -3.47 0.54 
+0 17.36 0.54 -0.67 0.65 0.02 0.82 0.55 -2.28 0.48 0 34.85 3.97 -1.95 3.95 -2.3 
+3.84 -2.35 0.89 -0.57 0 -37.3 0.59 -1.15 2.67 -1.93 -2.71 -3.2 -0.26 -0.39 -3.5 -2.93 
+6.55 -0.11 6.14 0.3 0.41 -0.02 1.22 0.33 2.04 2.93 -2.93 2.04 -6.62 1.13 -1.98 2.13 
+-1.63 0.87 0 37.3 2.91 -1.82 3.36 -2.56 4.93 -1.95 4.91 -2.04 3.34 -2.62 3.75 -2.52 
+3.95 -2.5 3.02 -2.75 2.02 -2.97 0 -1.09 -5.46 -1.21 -5.21 -1.48 -5.36 -1.39 -4.34 -2.28 
+-3.84 -1.67 1.39 -2.21 0.2 -0.26 0.43 -0.29 2.84 -1.78 1.82 -2.39 0.02 -0.04 0.39 -2.63 
+2.25 -2.28 2.26 0.04 4.92 -1.61 2.74 -2.34 2.02 -2.45 -2.39 -1.91 -2.45 -1.17 -2.37 -0.98 
+-5.19 -1.71 -5.9 -0.87 -2.87 -0.7 -1.47 -2.25 0.02 -0.16 0.3 -2.14 2.3 -1.41 1.15 -0.46 
+5.84 -1.82 1.5 -0.93 1.97 -1.17 2.71 -1.89 0 -37.59 -0.52 -0.76 -1.57 -1.69 -1.52 -1.67 
+2.93 -2.54 6.53 -0.13 0.02 0 0 0.23 -0.52 2.13 -4.27 3.28 -1.09 1.15 0 37.59 
+0.44 -0.3 4.12 -1.95 0.48 -0.35 2.73 -2.37 5.18 -1.97 2.3 -0.78 0.7 -2.43 0.93 -2.45 
+-1.5 -0.87 -2.45 -1.09 -0.07 -2.28 0.48 -2.34 1.17 -2.46 1.15 -2.49 0.04 -2.3 -0.71 -2.17 
+0.21 -2.34 3.91 -2.45 1.26 -1.02 1.95 -2.88 2.97 -3.23 0.21 -0.84 0.85 -1.93 -1.02 -0.93 
+-0.52 -1.08 P
+-1.97 -1.87 -4.45 -1.02 1.13 -2.8 2.71 -3.45 -5.1 -0.02 -1.93 0.11 -4.64 0.39 -3.3 0.11 
+-3.49 -0.3 -1.8 -0.07 -2.91 -1.17 -2.21 -1.39 -1.39 -1.65 -0.02 -0.02 -1.54 -1.61 -2.17 -1.3 
+-1.95 -1.37 -2.19 -1.26 -2.39 -1.11 -0.02 -0.02 -3.21 -0.65 -3.73 1.29 -2.76 -0.3 -1.25 -1.5 
+1.41 -2.21 1.65 -1.54 -1.3 -1.57 -2.64 -0.78 -0.59 -0.02 0.2 0.24 -5.42 3.02 -5.49 2.95 
+1.09 1.43 1.02 1.45 0.98 1.48 0.93 1.5 5.73 -2.67 0.93 1.58 0.91 1.58 0.85 1.63 
+-5.91 2.43 0.76 1.56 0.7 1.58 -6.04 2.2 0.58 1.52 0.57 1.5 0.5 1.54 0.45 1.54 
+0.41 1.54 -6.27 1.71 0.33 1.48 0.04 0.21 2.88 0.65 1.78 1.18 1.48 1.28 0.8 1.45 
+0.2 1.59 -0.09 1.63 -0.84 1.75 -1.26 1.76 -0.8 1.69 -0.2 1.59 -0.48 1.61 0.49 1.52 
+-0.41 1.61 -0.04 1.59 1.13 1.54 -0.11 1.61 -0.74 1.61 -1.23 1.63 -2.17 1.57 -3.47 1.43 
+-1.17 1.5 5.99 0.37 -0.8 1.61 -0.87 1.59 -0.93 1.58 -0.97 1.58 6.16 0.7 -1.06 1.67 
+-1.13 1.65 -1.19 1.64 -1.26 1.63 -1.3 1.61 -5.88 -1.2 -1.3 1.5 -1.34 1.48 -1.41 1.47 
+5.68 1.48 -1.54 1.56 5.62 1.5 -1.64 1.63 -1.74 1.59 -1.78 1.58 -1.85 1.54 -1.89 1.54 
+-1.96 1.5 -1.99 1.46 -2.06 1.45 -2.11 1.41 -4.77 -2.35 -4.71 -2.41 -1.2 -0.63 -2.69 0.76 
+1.95 1.06 4.6 2.49 4.67 2.43 -2.21 1.35 -2.25 1.32 -2.32 1.26 -2.35 1.25 -2.41 1.2 
+-2.45 1.17 -2.5 1.13 3.82 2.93 -2.69 1.15 -2.71 1.11 -2.76 1.09 -2.8 1.02 -2.82 0.98 
+-2.88 0.93 -2.91 0.89 1.32 1.58 2.97 -0.91 3.36 1.13 0.8 3.43 0.11 0.48 1.84 3.56 
+-1.02 1.65 -2.41 -0.61 -2.93 -0.61 -3.06 -1.76 -1.95 0.52 -0.07 -0.08 -2.43 -3.32 -3.16 0.78 
+-3.19 0.72 -3.23 0.67 -3.23 0.63 -3.28 0.56 1.63 3.61 -3.25 0.5 -0.17 0.13 -0.2 -0.07 
+-0.8 0.09 -2.54 0.34 -1.28 -3.66 -3.32 0.39 -3.34 0.32 -3.36 0.26 -3.37 0.21 -3.36 0.15 
+-3.38 0.09 0.11 1.91 3.45 -0.17 3.56 0.52 3.6 0.37 1.71 0.54 -0.87 3.67 -0.04 0.15 
+0.48 3.69 -3.28 2.13 -3.88 1.58 -2.82 0.46 -1.26 0.09 -1.47 -0.05 -2.65 -0.57 -3.99 -2.21 
+-1.2 -0.93 1.33 -1.54 2.37 -2.1 1.49 -0.76 2.13 -2.99 -2.13 0.02 -3.57 -0.04 -0.18 3.73 
+-3.75 -0.09 -3.73 -0.17 -3.73 -0.24 -0.74 3.66 -3.93 -0.32 -3.88 -0.39 -1.02 -0.11 -0.93 3.62 p f*
+255 G
+2466.23 3011.02 -0.13 -5.27 5.82 -0.08 5.84 -0.02 0 15.84 -5.64 0.02 -0.06 -5.27 -5.69 0.09 
+-0.12 -5.3 f*
+189 0 54 rG
+2469.96 2369.99 -0.11 -0.09 0.02 -0.11 0.83 -1.21 1.21 -0.59 1.43 -0.11 1.56 0.48 1.11 1.32 
+-0.68 1.37 -1.06 0.57 -0.24 0 0 -0.98 0.98 -0.93 -1.41 -0.87 -1.34 0.17 -0.76 0.8 
+1.29 0.74 1.25 0.09 0 0.98 -0.93 -0.05 -1.36 -0.5 -1.78 -1.08 f*
+255 35 0 rG
+2472.79 2370.55 -1.29 -0.74 0.76 -0.8 1.34 -0.17 1.41 0.87 -0.98 0.93 -1.25 -0.09 f*
+2473.89 3386.7 -1.33 1.54 1.2 0.93 3.99 2.21 2.65 0.57 1.47 0.05 1.26 -0.09 2.82 -0.46 
+3.88 -1.58 3.28 -2.13 -0.48 -3.69 0.04 -0.15 0.87 -3.67 -1.71 -0.54 -3.6 -0.37 -3.56 -0.52 
+-3.45 0.17 0.09 1.84 -1.43 0.02 -2.13 2.99 -1.49 0.76 -2.37 2.1 f*
+255 0 r6
+2484.83 2840.64 -7.08 0 0 170.29 5.75 0.02 5.75 0.06 -0.12 5.3 5.68 0.13 5.69 0.17 
+5.68 0.24 5.69 0.29 5.66 0.33 5.66 0.39 5.64 0.43 0.59 -5.27 0.56 -5.3 0.55 -5.29 
+0.52 -5.3 5.9 0.5 5.86 0.55 0.65 -5.3 5.93 0.58 5.9 0.65 0.74 -5.32 5.94 0.7 
+0.79 -5.32 5.99 0.76 5.99 0.81 -0.89 5.32 -0.93 5.32 5.86 0.84 5.82 0.91 5.8 0.96 
+1.08 -5.32 5.84 1.02 5.81 1.07 5.8 1.13 5.78 1.17 5.73 1.24 5.71 1.25 5.69 1.35 
+5.64 1.39 5.62 1.43 -1.61 5.32 -1.63 5.32 5.45 1.5 -1.73 5.27 -1.78 5.27 -1.8 5.27 
+-5.29 -1.49 -5.3 -1.43 1.67 -5.27 -5.41 -1.39 -1.62 5.27 -1.65 5.25 -5.32 -1.32 -5.34 -1.28 
+1.52 -5.26 -5.43 -1.23 -5.47 -1.17 -1.39 5.27 -5.43 -1.13 -1.37 5.25 -1.39 5.25 -1.41 5.23 
+-1.45 5.21 -5.19 -1.06 -5.19 -1 1.3 -5.21 1.28 -5.23 1.26 -5.25 1.21 -5.25 -5.49 -0.96 
+-5.51 -0.91 -1.11 5.25 -1.13 5.25 -5.41 -0.84 -1.06 5.25 -1.11 5.23 -2.25 10.42 -5.14 -0.78 
+-5.16 -0.74 -5.19 -0.67 -0.93 5.21 -5.12 -0.62 -5.14 -0.59 0.8 -5.21 0.79 -5.23 5.27 0.59 
+5.27 0.63 0.91 -5.23 5.32 0.7 0.96 -5.23 0.96 -5.25 0.91 -5.26 -5.51 -0.69 -1.74 10.5 
+-3.8 -0.46 -1.61 -0.17 -0.82 5.23 -5.34 -0.59 -5.38 -0.54 -0.7 5.25 -5.3 -0.5 -5.32 -0.41 
+-0.58 5.21 -0.57 5.23 -5.18 -0.39 -5.19 -0.33 0.43 -5.2 -5.27 -0.29 -0.34 5.23 -5.21 -0.24 
+-5.21 -0.17 0.22 -5.23 -5.28 -0.11 0.13 -5.25 0.15 -5.23 -5.42 -0.09 0.06 -5.25 -5.49 -0.02 
+0 52.13 4.73 0.02 -0.07 5.14 -0.09 5.14 -4.58 -0.02 0 10.27 4.41 0.02 4.41 0.06 
+0.17 -5.12 4.52 0.13 4.49 0.15 4.47 0.21 -0.41 5.13 4.38 0.24 4.41 0.3 -0.61 5.1 
+-1.26 10.16 -0.62 5.05 4.03 0.33 4.02 0.36 -0.84 5.04 -0.83 5.02 -3.84 -0.37 -1.5 -0.13 
+1.34 1.13 3.82 0.39 3.06 -0.72 1.11 -0.89 0.52 -0.29 0 -61.17 -4.8 -1.33 -4.86 -0.71 
+-2.82 -3.47 1.8 -5.12 1.91 -1.41 1.96 1.63 2.78 1.82 5.03 0.19 4.84 1.63 4.37 3 
+-5.17 3.04 -4.52 0.65 -0.52 0.09 0 61.17 3.93 -2.21 3.77 -0.61 0.35 -0.04 0.07 0.11 
+3.08 3.47 0.89 2.26 1.7 2.97 1.89 2.76 0.59 2.15 3.69 0.41 4.11 -0.89 0.54 -0.02 
+-0.5 -0.09 -3.62 -0.7 -3.64 -0.65 1.41 -4.97 -3.76 -0.61 1.3 -4.96 1.3 -5 -3.97 -0.61 
+1.19 -5.02 -4.08 -0.56 -4.05 -0.52 0.98 -5.03 0.98 -5.08 4.25 0.54 4.23 0.57 -1.15 5.05 
+4.14 0.61 4.12 0.68 4.1 0.7 4.08 0.75 -1.52 5 -1.54 4.96 3.88 0.79 -1.65 4.95 
+3.78 0.8 -0.07 0.21 0.13 -0.2 0.06 -0.39 0.24 -4.86 0.83 -5.14 2.47 -4.82 2.73 -3.34 
+0.85 -1.24 5.36 -4.01 0.28 -0.13 4.99 -1.95 3.71 -0.33 0 -25.07 -0.21 -3.32 1.67 -1.46 
+0.2 1.84 -1.65 2.93 0 25.07 1.02 -0.09 3.06 -0.02 1.7 -0.35 4.93 -0.7 4.94 -0.67 
+3.04 0.15 1.61 0.07 5.32 -1.24 4.95 -0.46 0 -23.11 -4.6 -1.26 -4.64 -1.24 1.84 -5.1 
+-4.75 -1.17 1.74 -5.12 1.69 -5.14 1.67 -5.16 1.65 -5.19 1.61 -5.18 5.1 1.21 5.08 1.26 
+-1.75 5.17 P
+4.96 1.3 4.95 1.37 4.9 1.41 4.88 1.48 2.04 -5.16 4.91 1.52 4.88 1.59 4.84 1.63 
+0.93 0.3 0.3 -3.21 -4.1 -3.54 -1.69 -0.95 -2.78 -1.8 -4.08 -3.93 -0.62 -2.37 1.84 -0.86 
+5.99 -0.89 4.58 2.8 2.87 3.73 0.73 1.32 0.8 -0.8 4.21 -4.49 2.45 -0.35 0 -68.95 
+-5.86 -1.49 -5.88 -1.43 1.32 -5.36 1.31 -5.41 5.99 1.43 1.32 -5.4 1.28 -5.41 6.06 1.46 
+1.28 -5.43 1.26 -5.42 1.21 -5.45 6.17 1.5 1.19 -5.45 1.2 -5.47 6.2 1.54 1.18 -5.49 
+1.13 -5.49 1.09 -5.5 6.29 1.57 1.09 -5.54 6.29 1.61 1.08 -5.54 6.3 1.65 6.27 1.7 
+-1.15 5.55 -1.2 5.56 -1.24 5.53 -6.16 -1.73 -1.24 5.54 -1.3 5.51 -6.1 -1.7 -1.3 5.49 
+-1.35 5.47 -6.05 -1.65 -1.34 5.46 -6.05 -1.63 -1.33 5.45 -1.39 5.44 -1.43 5.43 -5.95 -1.58 
+-1.39 5.42 -1.45 5.41 -5.88 -1.54 -1.46 5.38 0 68.95 0.59 -0.08 5.99 -0.63 5.25 1.19 
+1.98 -0.3 4.56 -1.39 5.1 -1.02 1.48 -0.71 5.14 1.54 0.48 2.06 -1.82 5.45 -3.41 2.61 
+-2.78 1.04 -4.32 1.82 -1.8 1.85 -6.14 2.93 -0.74 0.46 -3.69 4.62 -3.59 4.69 1.5 3.45 
+3.23 4.38 0.04 0.28 -0.21 0.04 -5.19 -0.52 -4.03 -2.78 -5.08 -0.72 -0.22 -1.95 -0.24 -6.08 
+-0.46 -1.64 -0.58 1.28 -2.34 5.1 -4.67 -1.67 -2.32 5.1 -4.62 -1.61 -2.3 5.08 -4.58 -1.54 
+-4.62 -1.5 -4.66 -1.43 -4.69 -1.39 -2.02 5.1 -4.67 -1.33 -1.97 5.08 0 23.11 0.06 0 
+2.91 0.54 1.54 0.24 4.82 0.13 4.54 0.73 4.3 1.18 4.43 0.93 4.13 1.55 4.25 1.28 
+3.91 1.84 3.61 2.34 3.17 2.95 3.34 2.61 3.69 2.02 3.58 2.13 4.45 0.91 2 0.07 
+0 -2.87 -3.73 -2.04 -3.77 -1.97 -3.8 -1.93 3.11 -4.84 -3.95 -1.91 2.97 -4.88 -4.06 -1.87 
+2.86 -4.93 2.8 -4.97 2.78 -4.99 2.73 -5.02 4.36 1.91 2.75 -5.01 4.41 1.97 2.78 -5.05 
+2.73 -5.05 4.49 2.06 2.76 -5.1 -4.56 -2.06 2.64 -5.14 2.61 -5.14 2.54 -5.18 4.78 2.11 
+4.7 2.14 2.63 -5.18 4.73 2.21 4.67 2.28 -2.76 5.17 -2.82 5.14 -2.86 5.12 -2.93 5.1 
+-2.97 5.05 -3.02 5.04 -3.06 4.99 -4.18 -2.19 -3.06 4.97 -4.17 -2.12 -4.23 -2.09 -2.95 4.97 
+4.16 2.06 4.1 2.13 4.04 2.17 3.99 2.23 -3.29 4.88 -3.35 4.86 -3.38 4.79 -3.78 -2.17 
+-3.36 4.8 -3.73 -2.11 -3.34 4.79 0 2.87 3.04 0.08 1.63 -0.3 4.97 -1.62 2.36 -0.83 
+4.32 -1.09 4.45 -0.43 1.46 -0.33 4.54 1.11 3.88 1.97 3.16 2.89 3.73 2.14 4.82 0.83 
+1.11 -0.13 5 -0.52 4.66 1.11 1.13 0.17 4.17 0.29 4.1 1.82 3.45 2.56 3.47 2.56 
+2.8 3.23 0.87 5.18 3.11 2.82 2.39 3.52 1.39 3.58 0.3 0.52 0.63 0.61 4.42 -4.64 
+1 -1.82 1.09 -5.55 -0.32 -1.26 -2.12 -4.02 -2.91 -3.19 -3.34 -2.78 -2.71 -3.54 -2.71 -3.56 
+0.22 -4.3 3.99 -4.75 4.54 -4.28 4.32 -4.49 -1.43 -3.78 -3.17 -3.62 -0.15 -4.32 5.62 -3.14 
+0.37 -0.04 5.27 0.46 3.97 -1.06 2.86 -5.64 -0.58 -2.15 -3.71 -3.32 -3.97 -3 -3.91 -3.13 
+-0.74 -5.32 5.1 -3.93 2.56 -1.76 4.86 -0.61 1.56 -0.06 3.13 3.34 0.46 0.59 2.23 5.9 
+3.64 3.63 p
+0.33 2.64 1.05 4.19 4.2 2.61 4.47 2.21 0.79 -0.12 6.51 -1.56 0.84 -0.29 4.69 -4.28 
+4.55 -1.13 3.06 -0.41 4.01 -0.98 3.84 -0.3 2.97 -0.71 5.21 1.32 1.84 0.43 4.75 -1.08 
+4.27 2.66 1.13 -0.09 5.77 -1.04 3.64 3.58 3.45 3.82 1.63 0.8 3.99 -0.08 2.54 4.99 
+3.08 4.13 1.8 5.79 0 1.09 1.04 5.55 1.5 5.86 -0.2 5.17 0.56 1.96 0.74 0.5 
+4.71 0.43 3.36 3.43 1.52 1.3 3.78 -0.2 2.87 3.95 -1.93 7.71 -3.19 5.21 -0.52 3.04 
+-1.76 6.2 -1.82 3.11 -4.3 7.55 -4.1 6.04 -0.48 0.91 -4.43 8.42 -5.23 5.03 -5.32 4.82 
+-3.89 3.8 -1.39 1.65 -1.02 0.32 -4.82 1.76 -5.6 3.84 -4.08 0.21 -2.36 -1.54 -2.22 -0.33 
+-4.01 0.76 -3.97 -0.09 -0.93 -4.58 -2.34 -3.54 -1.17 -0.22 -3.23 3.61 0.68 4.71 3.36 2.71 
+1.43 4.14 -0.58 5.51 2.8 3.13 0.06 0.06 1.93 3.63 4.47 2.04 0.08 0.05 0.22 -0.26 
+5.47 -4.95 5.77 -3.23 0.29 0.13 -0.26 0.37 -5.6 6.25 -2.11 4.12 -0.61 5.43 2.86 0.43 
+5.84 -2.12 0.91 0.43 -0.98 2.15 -2.84 5.42 -3.39 3.54 -6.16 5.6 -2.2 2.91 -4.6 6.14 
+-1.39 1.97 -4.88 7.21 -1.39 2.41 -1.64 3.67 -1.95 5.46 -6.04 6.71 -1.58 1.17 0.89 1.04 
+3.34 1.59 -1.52 5.1 0.5 1.97 0.07 2.26 2.17 3.6 0.71 -0.02 2.08 3.43 -2.75 5.62 
+-6.1 6.75 5.38 -1.96 6.45 -2.45 6.45 -2.61 -3.06 5.88 6.49 -2.63 3.04 -6.01 6.45 -2.89 
+6.44 -3.04 2.76 -6.21 2.52 -6.14 -6.4 3.25 -6.38 3.13 -6.43 2.95 -6.4 2.82 2.41 -5.69 
+-6.4 2.8 -6.4 2.67 2.23 -5.45 2.04 -5.43 6.34 -2.86 1.8 -5.47 1.61 -5.42 1.41 -5.41 
+6.23 -3.28 6.18 -3.41 -1.32 5.58 -1.52 5.63 6.27 -3.37 1.47 -5.71 6.18 -3.6 6.16 -3.71 
+-1.37 5.88 6.18 -3.78 6.16 -3.91 6.12 -4.05 6.1 -4.19 -1.39 6.25 6.12 -4.26 6.1 -4.41 
+6.04 -4.58 1.17 -6.46 5.92 -4.79 0.87 -6.45 5.79 -5 5.76 -5.12 -0.7 6.55 -0.93 6.68 
+5.86 -5.18 5.82 -5.34 0.76 -6.75 5.66 -5.55 0.44 -6.68 -5.58 5.58 -5.62 5.4 0.39 -6.51 
+0.2 -6.4 -0.04 -6.29 5.38 -5.54 -0.32 -6.23 5.23 -5.7 -0.61 -6.14 -0.78 -6.04 -0.96 -5.92 
+4.86 -5.88 4.8 -5.99 4.71 -6.12 4.6 -6.25 -1.47 -5.84 -1.65 -5.71 -4.45 6.23 1.56 5.73 
+-4.62 6.12 -4.69 5.99 -1.39 -5.71 -1.56 -5.62 4.54 -6.01 -1.8 -5.53 4.36 -6.09 4.27 -6.23 
+4.17 -6.32 2.06 5.49 4.16 -6.44 1.98 5.6 4.16 -6.55 4.05 -6.68 2 5.68 4.06 -6.79 
+3.93 -6.92 3.84 -7.04 -2.28 -5.58 3.63 -7.09 -2.5 -5.43 3.43 -7.16 -2.74 -5.25 3.26 -7.21 
+-2.95 -5.12 -3.14 7.16 -0.87 -1.46 -2.12 -3.6 -3.2 7.03 -3.02 -4.97 -3.23 6.88 -3.32 6.82 
+-2.99 -4.95 -3.13 -4.84 3.19 -6.75 3.06 -6.83 2.97 -6.88 2.87 -6.99 2.75 -7.04 -3.58 -4.55 
+-2.69 7.01 -2.78 6.92 -2.91 6.86 -2.99 6.77 -3.13 6.73 -3.21 6.62 -3.32 6.55 -0.49 0.96 
+-2.91 5.53 -3.12 -4.75 -3.43 6.38 -3.16 -4.67 -3.3 -4.57 -3.38 6.25 -3.5 6.18 -3.25 -4.52 
+-3.5 6.1 -3.58 6.03 -3.23 -4.47 -3.61 5.95 -0.3 -0.39 -2.98 -3.99 -3.62 5.88 -3.3 -4.32 
+-3.4 -4.23 p
+-3.52 -4.14 3.41 -5.86 3.34 -5.9 -3.75 -4.04 3.19 -5.95 -3.88 -3.95 3.04 -5.99 -4.05 -3.86 
+2.88 -6.01 -4.21 -3.78 2.75 -6.03 -4.34 -3.67 -4.45 -3.61 2.56 -6.04 2.48 -6.09 2.38 -6.14 
+2.3 -6.16 2.22 -6.23 2.13 -6.25 -4.82 -3.35 2 -6.27 1.89 -6.29 -4.97 -3.22 -1.87 6.25 
+-5.01 -3.16 -1.89 6.18 -1.99 6.16 -5 -3.19 -2.02 6.12 -2.11 6.05 -2.17 6.04 -4.92 -3.19 
+-2.22 5.97 -2.28 5.94 -2.37 5.93 -2.45 5.86 -4.77 -3.19 -2.48 5.82 -2.54 5.77 -4.75 -3.14 
+-4.82 -3.11 -2.5 5.73 -4.84 -3.04 -2.52 5.66 -2.58 5.64 -2.67 5.62 -4.73 -2.99 -4.79 -2.95 
+-2.63 5.56 -4.79 -2.87 -4.88 -2.82 -4.93 -2.75 -4.99 -2.69 -5.05 -2.62 -5.12 -2.58 -2.35 5.49 
+-5.12 -2.5 -2.34 5.45 -5.12 -2.45 -5.18 -2.39 -5.21 -2.35 -5.3 -2.28 -2.16 5.43 -2.24 5.4 
+-2.28 5.38 -5.16 -2.23 -5.21 -2.17 -5.25 -2.11 2.1 -5.38 2.07 -5.37 5.38 2.1 2.06 -5.42 
+2.02 -5.43 5.42 2.15 5.38 2.21 2.08 -5.47 5.38 2.28 5.34 2.32 5.27 2.39 2.19 -5.51 
+5.28 2.45 5.23 2.5 2.21 -5.54 5.23 2.54 2.21 -5.58 -5.27 -2.54 2.11 -5.59 2.04 -5.62 
+-5.42 -2.46 1.93 -5.62 1.87 -5.64 -5.58 -2.37 -5.64 -2.32 1.73 -5.64 1.65 -5.64 -5.01 -1.95 
+-0.74 -0.28 -5.82 -2.18 1.52 -5.64 -5.9 -2.1 -5.95 -2.04 1.39 -5.62 -6.03 -1.98 -6.08 -1.91 
+1.26 -5.62 -6.14 -1.84 -6.18 -1.8 1.13 -5.57 -6.27 -1.74 1.06 -5.58 1 -5.58 6.34 1.72 
+6.27 1.73 6.25 1.8 6.21 1.86 6.18 1.91 -1.17 5.66 6.1 1.97 1.2 -5.68 1.15 -5.69 
+1.09 -5.68 -6.18 -1.93 0.99 -5.68 0.93 -5.71 -6.29 -1.82 0.87 -5.68 0.8 -5.71 -6.38 -1.74 
+0.74 -5.66 0.67 -5.69 -6.46 -1.65 0.61 -5.66 -6.51 -1.59 0.52 -5.62 -6.58 -1.52 0.48 -5.62 
+0.42 -5.62 -6.64 -1.43 0.35 -5.6 -6.68 -1.35 0.28 -5.58 -6.71 -1.3 0.21 -5.56 0.2 -5.55 
+-6.77 -1.21 0.13 -5.51 0.09 -5.54 0.02 -5.51 6.79 1.15 -0.02 -5.54 -0.05 -5.53 -0.11 -5.52 
+-0.15 -5.51 6.75 1.08 -0.22 -5.53 -0.26 -5.54 -0.3 -5.51 -0.37 -5.51 -0.41 -5.49 -6.71 -0.98 
+-0.43 -5.47 -6.73 -0.91 -0.48 -5.42 -6.72 -0.85 -0.52 -5.4 -6.75 -0.81 -0.55 -5.36 -6.75 -0.75 
+-0.56 -5.34 -0.63 -5.3 -0.66 -5.29 -0.71 -5.3 -0.76 -5.27 -0.78 -5.25 -13.28 -1.18 -0.79 -5.19 
+-0.83 -5.18 -0.87 -5.17 -0.93 -5.14 -0.95 -5.12 -6.49 -0.45 -0.97 -5.1 -6.47 -0.41 -0.98 -5.04 
+-6.46 -0.39 -0.96 -5.02 -1 -4.99 -6.4 -0.33 -12.85 -0.61 -0.91 -4.93 -12.8 -0.52 -12.89 -0.48 
+-6.45 -0.22 0.67 4.84 0.65 4.88 0.63 4.88 -6.6 -0.24 0.57 4.88 0.54 4.93 -6.7 -0.24 
+0.48 4.9 0.45 4.95 -6.77 -0.25 0.41 4.95 0.74 9.94 0.34 5.02 -6.9 -0.28 0.56 10.03 
+0.26 5.03 0.24 5.06 -7 -0.29 0.21 5.05 0.2 5.08 -7.08 -0.26 0.16 5.09 0.15 5.09 
+0.13 5.1 0.11 5.13 7.14 0.28 0.21 10.29 7.14 0.34 0.09 5.17 0.09 5.18 0.04 5.19 
+-7.16 -0.37 0.09 10.42 0 10.44 -7.18 -0.35 -0.04 10.46 -0.09 10.5 -7.18 -0.32 -0.04 5.25 
+-7.18 -0.3 -0.07 5.27 7.16 0.3 -0.17 10.55 -0.21 10.59 -0.14 5.29 -7.09 -0.32 -7.09 -0.29 
+-7.1 -0.21 p
+-0.09 5.29 -7.1 -0.2 -0.09 5.3 -7.08 -0.15 -7.07 -0.11 -7.07 -0.09 p f*
+255 G
+2477.75 3010.94 0 21.07 5.49 0.02 -0.06 5.25 5.42 0.09 -0.15 5.23 -0.13 5.25 5.28 0.11 
+-0.22 5.23 5.21 0.17 5.21 0.24 0.34 -5.23 5.27 0.29 -0.43 5.2 5.19 0.33 5.18 0.39 
+0.57 -5.23 0.58 -5.21 -5.34 -0.39 0.5 -5.23 0.48 -5.26 0.48 -5.27 5.54 0.39 -1.09 10.51 
+-0.57 5.25 5.32 0.41 5.3 0.5 0.7 -5.25 5.38 0.54 5.34 0.59 0.82 -5.23 1.61 0.17 
+0 -10.68 -5.55 -0.61 0.72 -5.27 5.62 0.61 -0.78 5.27 0 10.68 3.8 0.46 1.74 -10.5 
+5.51 0.69 -0.91 5.26 -0.96 5.25 -0.96 5.23 -5.32 -0.7 -0.91 5.23 -5.27 -0.63 -5.27 -0.59 
+-0.79 5.23 -0.8 5.21 5.14 0.59 5.12 0.63 0.93 -5.21 5.19 0.67 5.16 0.74 5.14 0.78 
+2.25 -10.42 1.11 -5.23 1.06 -5.25 5.41 0.84 1.13 -5.25 1.11 -5.25 5.51 0.91 5.49 0.96 
+-1.21 5.25 -1.26 5.25 -1.28 5.23 -1.3 5.21 5.19 1 5.19 1.06 1.45 -5.21 1.41 -5.23 
+1.39 -5.25 1.37 -5.25 5.43 1.13 1.39 -5.27 5.47 1.17 5.43 1.23 -1.52 5.26 5.34 1.28 
+5.32 1.32 1.65 -5.25 1.63 -5.27 5.41 1.39 -1.67 5.27 5.3 1.43 5.29 1.49 1.8 -5.27 
+1.78 -5.27 1.73 -5.27 -5.45 -1.5 1.63 -5.32 1.61 -5.32 -5.62 -1.43 -5.64 -1.39 -5.69 -1.35 
+-5.71 -1.25 -5.73 -1.24 -5.78 -1.17 -5.8 -1.13 -5.81 -1.07 -5.84 -1.02 -1.08 5.32 -5.8 -0.96 
+-5.82 -0.91 -5.86 -0.84 0.93 -5.32 0.89 -5.32 -5.99 -0.81 -5.99 -0.76 -0.79 5.32 -5.94 -0.7 
+-0.74 5.32 -5.9 -0.65 -5.93 -0.58 -0.65 5.3 -5.86 -0.55 -5.9 -0.5 -0.52 5.3 -0.55 5.29 
+-0.56 5.3 -0.59 5.27 -5.64 -0.43 -5.66 -0.39 -5.66 -0.33 -5.69 -0.29 -5.68 -0.24 -5.69 -0.17 
+-5.68 -0.13 0.13 -5.3 -5.75 -0.06 -5.75 -0.02 f*
+2477.75 3084.14 0 10.28 4.58 0.02 0.09 -5.14 0.07 -5.14 -4.73 -0.02 f*
+255 203 0 rG
+2473.66 3395.57 4.1 -0.12 4.32 0.13 0.02 0 2.22 3.54 2.75 2.69 0.91 0.78 4.36 2.59 
+1.32 0.67 3.73 0.54 0.16 0.02 5.59 1.89 0.39 0.29 4.43 3.06 -3.69 0.39 -1.02 -3.43 
+-5.07 0.46 -5.1 0.34 -5.1 0.24 -0.41 -3.49 -4.91 0.13 -0.2 -3.54 -0.19 -3.56 -4.52 0.04 
+0 -3.62 -4.1 -0.02 f*
+255 G
+2499.59 3567.75 -9.27 0 10.05 -0.26 11.29 -0.49 11.28 -0.7 11.29 -0.89 11.27 -1.06 11.24 -1.3 
+11.2 -1.48 11.19 -1.67 11.16 -1.87 11.11 -2.06 11.09 -2.25 11.05 -2.45 10.98 -2.65 10.96 -2.84 
+10.89 -3.02 10.85 -3.21 10.79 -3.41 10.72 -3.61 10.66 -3.77 10.59 -3.97 10.53 -4.14 10.43 -4.34 
+10.38 -4.52 10.3 -4.69 10.2 -4.88 10.11 -5.05 10.05 -5.23 9.94 -5.41 6.27 -3.54 0.13 -0.09 
+0.11 -0.07 3.32 -1.87 9.74 -5.75 9.66 -5.92 9.53 -6.07 9.44 -6.27 9.31 -6.4 9.2 -6.58 
+1.56 -1.15 0.65 -0.41 0.74 -0.61 6.14 -4.58 8.98 -6.87 8.85 -7.05 8.73 -7.2 8.59 -7.36 
+8.46 -7.51 3.99 -3.65 0.52 -0.43 0.37 -0.39 3.47 -3.17 8.21 -7.79 8.05 -7.94 7.94 -8.07 
+7.77 -8.23 7.64 -8.36 7.5 -8.46 7.34 -8.62 7.21 -8.74 7.03 -8.86 6.88 -8.98 6.72 -9.12 
+6.58 -9.22 6.4 -9.33 6.25 -9.44 6.08 -9.55 5.91 -9.66 5.75 -9.77 5.55 -9.85 5.4 -9.94 
+5.21 -10.05 5.05 -10.13 4.86 -10.22 4.69 -10.3 4.51 -10.39 4.35 -10.46 4.14 -10.53 3.95 -10.61 
+3.77 -10.68 3.61 -10.74 3.38 -10.81 3.21 -10.85 3.04 -10.91 2.82 -10.96 2.65 -11 2.43 -11.07 
+2.25 -11.09 2.06 -11.13 1.87 -11.18 1.67 -11.2 1.48 -11.24 1.28 -11.24 1.09 -11.29 0.89 -11.29 
+0.7 -11.3 0.49 -11.3 0.26 -10.22 0 10.22 -0.5 11.33 -0.69 11.3 -0.89 11.3 -1.09 11.27 
+-1.28 11.26 -1.48 11.22 -1.67 11.21 -1.87 11.18 -2.06 11.13 -2.25 11.11 -2.45 11.04 -2.63 11.02 
+-2.84 10.96 -3.02 10.91 -3.21 10.88 -3.4 10.8 -3.61 10.74 -3.77 10.68 -3.95 10.61 -4.14 10.55 
+-4.34 10.46 -4.51 10.39 -4.69 10.31 -4.86 10.22 -5.05 10.13 -5.23 10.05 -5.38 9.96 -5.58 9.86 
+-5.75 9.77 -5.9 9.66 -6.08 9.57 -6.25 9.45 -6.4 9.33 -6.57 9.23 -6.73 9.11 -6.9 8.98 
+-7.03 8.86 -7.21 8.75 -7.33 8.62 -7.51 8.48 -7.64 8.36 -7.79 8.23 -7.92 8.07 -8.07 7.95 
+-8.21 7.81 -8.36 7.64 -8.46 7.51 -8.59 7.36 -8.75 7.21 -8.86 7.05 -8.98 6.9 -9.09 6.75 
+-9.2 6.58 -9.33 6.4 -9.42 6.27 -9.55 6.08 -9.66 5.92 -9.74 5.75 -9.83 5.58 -9.96 5.41 
+-10.02 5.23 -10.13 5.05 -10.2 4.88 -10.31 4.69 -10.37 4.52 -10.44 4.34 -10.53 4.16 -10.61 3.95 
+-10.66 3.79 -10.74 3.58 -10.79 3.41 -10.85 3.23 -10.89 3.02 -10.96 2.84 -11 2.64 -11.04 2.46 
+-11.09 2.25 -11.11 2.06 -11.18 1.87 -11.18 1.67 -11.21 1.48 -11.25 1.28 -11.26 1.09 -11.29 0.89 
+-11.28 0.7 -11.31 0.5 -0.78 0 f*
+255 35 0 rG
+2492 3237.93 -1.14 4.58 1.46 0.2 0.76 0.08 1 -0.98 2.06 -3.32 0.78 -0.74 2.41 -2.17 
+1.34 -1.13 0.91 -0.24 1.5 0.71 1.02 -2.61 -1.63 -0.54 -1.91 0.22 -1.96 0.5 -0.5 1.52 
+-1.67 -0.26 -0.34 -0.04 -1.78 1.57 -0.76 2.84 -1.56 -0.2 f*
+255 0 r6
+2492.47 3145.5 -0.39 4.97 0.39 0.02 0.54 -4.97 0.83 -4.99 -1 -0.04 -0.37 5.01 f*
+0 155 255 rG
+2493.01 3145.53 -0.54 4.97 0.87 0.04 0.63 -4.97 1.15 -4.96 -1.28 -0.07 -0.83 4.99 f*
+189 0 54 rG
+2494.08 3241.82 -1 0.98 0.67 0.11 1.43 0.21 1.41 0.24 0.96 0.18 0.84 -4.64 1.73 -0.82 
+0.37 1.21 -0.41 3.04 -0.22 1.7 0.93 0.2 -1.98 4.43 0.54 0.13 1.63 -1.73 1.54 -0.11 
+1.3 0.37 1.39 0.2 2.06 -0.89 0.35 -0.61 -1.35 -0.39 -1.34 -0.37 -1.37 -0.35 2.19 -4.41 
+0.37 -0.74 -1.69 0 -1.48 -0.41 0.11 -4.38 -1.5 -0.71 -0.91 0.24 -1.34 1.13 -2.41 2.17 
+-0.78 0.74 -2.06 3.32 f*
+2 239 204 rG
+2493.96 3145.57 -0.62 4.97 0.87 0.04 0.74 -4.96 1.47 -4.95 -1.3 -0.06 -1.15 4.96 f*
+7 193 59 rG
+2494.95 3145.62 -0.74 4.96 0.89 0.07 0.8 -4.99 0.35 -1.11 1.67 -3.8 2.75 -2.47 3.52 2.49 
+0.41 0.46 2.78 3.54 3.54 1.11 3.23 1.34 0.17 0.3 2.93 3.62 1.11 1.67 0.39 5.13 
+0.24 1.23 2.84 2.5 2.88 2.02 0.16 0.28 1.88 4.27 1.65 1.48 0.91 1.02 1.74 4.45 
+0.29 0.26 2.02 2.23 2.93 0.83 3.45 -0.45 0.93 -0.43 3.63 -4.36 1.97 -2.37 2.47 -1.78 
+2.41 -1.26 3.95 -0.76 3.8 -0.32 0.39 -0.04 3.43 -0.22 3.56 0.26 2.86 1.61 3.19 0.95 
+4.66 -1.45 1.35 -0.26 3.34 -1.08 4.54 -1.61 0.61 -0.35 3.71 0.46 3.78 0.43 4.32 -1.17 
+0.61 -0.05 3.91 0.35 2.8 1.93 4.28 -0.07 4.45 -0.52 0.22 0.05 3.73 0.76 5.23 -2.24 
+1.26 -0.34 3.8 0.84 3.11 1.74 3.19 1.59 4.88 -0.31 0.67 0.02 3.41 0.67 5.58 -0.91 
+1.07 0.02 3.95 -0.22 2.24 2.5 0 -10.35 0.24 -1.82 1.89 -0.61 -0.44 1.61 -1.69 0.83 
+0 10.35 0.15 0.17 -0.68 1.71 -3.14 5.13 -1.04 2.95 -0.78 3.25 -1.11 3.11 4.52 -0.2 
+0.78 -0.21 4.11 0.76 3.38 1.41 3.43 1.43 0.65 -0.2 2.48 -2.52 1.71 -1.98 0.57 -0.02 
+3.63 1.37 3.19 1.78 2.39 2.47 2.71 2.19 2.45 2.37 3.52 1.58 3.95 5.52 0.71 0.3 
+2.97 1.19 5.27 0.41 0.98 0.83 1.89 1.36 3.34 1.87 2.5 2.47 2.67 -0.48 3.28 0.67 
+2.93 0.7 0 -20.55 -3.69 -1.78 -0.28 -0.05 -5.49 -0.04 -3.21 -2.08 -2.46 -2.69 2.96 -5.73 
+3.71 0.07 4.79 0.83 0.39 -0.02 6.58 -1.93 1.43 -0.24 3.86 1.75 1.25 4 -0.69 2.56 
+-4.66 4.6 -4.49 0.76 0 20.55 1.73 0.41 0.16 0 0.02 -0.11 0.43 -4.58 1.23 -5.28 
+0.24 -0.46 3.52 -6.77 5.25 -3.75 5.25 0.34 2.97 0.87 3.19 -0.8 4.14 0.76 0.54 0.54 
+0.72 1.86 0.74 1.89 0.17 0 5.01 0.98 2.86 0.59 4.13 -0.93 2.56 0.09 2.8 0.86 
+0.96 4.23 -0.61 3 -4.25 5.23 0.72 4.19 6.23 0.54 0.43 0.04 3.47 2.06 -1.52 5.64 
+-0.07 0.34 -5.1 7.18 -0.83 0.67 -4.9 3.45 -5.67 4.97 -5.9 3.45 -5.88 4.02 -1.04 1.06 
+-4.8 4.36 -4.95 4.14 -0.54 4.02 1 3.34 3.88 2.12 0.61 0.26 6.23 -3.02 0.2 -0.24 
+5.99 -3.88 0.02 -0.02 0 -4.64 -2.69 -0.87 1.54 -4.79 0.89 -0.61 5.81 -5.25 5.64 -4.86 
+0.11 -0.09 0.09 -0.02 2.26 3.06 -1.26 4.97 -0.37 0.5 -5.93 6.45 -6.1 1.52 0 4.64 
+6.1 -2.69 4.28 -1 1.76 1.52 0.48 1.56 -0.61 1.28 -2.28 4.21 -4.42 5.05 -1.22 1.46 
+-4.45 5.79 -1.52 1.73 -3.89 4.21 -3.41 3.13 -4.73 3.49 -3 4.05 -0.91 0.89 0.3 1.26 
+2.84 1.49 -0.7 3.95 1.22 1.82 0.52 1.43 3.65 2.63 6.98 -3.39 4.95 0.02 -6.68 4.37 
+-4.45 2.79 -4.58 5.02 -0.13 0.13 -7.38 5.41 -1.49 1 -7.97 4.12 -1.32 0.67 -2.63 2.47 
+-2.06 1.96 0.5 3.62 0.17 0.09 4.75 1.47 1.54 1.3 -0.52 3.95 0.93 0.22 -0.08 3.58 
+-3.28 4.34 -3.26 4.29 -3.93 4.32 1.87 1.52 5.62 0.13 7.2 -1.8 0.39 2.99 -5.47 4.73 
+4.17 -0.35 4.21 -4.71 4 -0.48 4.03 -2.43 2.26 -2.73 3.12 -0.48 3.8 -4.95 0.2 -3.77 
+-2.8 0.02 P
+2.28 -4.62 4.58 -1.15 9.47 -6.2 0.36 -0.56 2.93 -4.54 8.62 -6.01 3.43 -1.8 -2.34 -0.22 
+-2.84 1.8 -6.84 5.88 -4.99 -0.74 -7.14 2.87 -4.43 -1.81 0 -0.02 -2.84 -3.36 -0.54 -0.41 
+-4.34 -2.26 -0.21 -0.11 0.48 -4.02 3.84 -4.04 1.17 -1.12 7.27 -5.23 1.85 -1.17 0 -16.02 
+5.38 -4.23 -0.22 2.38 -0.65 0.88 -4.51 0.97 0 16.02 0.37 -0.24 5.19 -3.06 7.33 -4.69 
+0.7 -0.67 4.5 -5.82 3.84 -4.14 6.64 -3.73 2.52 -1.67 4.96 -5.95 0.5 -0.91 1.7 -5.23 
+-0.65 -1.52 -5.49 0.05 -0.22 0.02 -0.61 0.37 -5.9 4.14 -6.07 1.89 -1 -0.15 -4.75 0.15 
+-5.02 3.93 -2.37 3.86 -2.17 -2.09 -2.12 -3.14 2.3 -4.95 4.43 -3.12 2.02 -3.73 2.08 -5.12 
+2.76 -5.55 0.3 -0.72 2 -4.73 0 -4.32 1.11 -4.99 0.89 -4.95 1.23 -2.06 1.46 -4.04 
+2.02 -5.86 0.89 -2.71 1.2 -3.36 2.21 -6.32 -2.78 -2.95 -3.5 0.93 -2.69 -1.48 -1.56 -3.75 
+-0.02 -4.93 -0.37 -3.16 -0.19 -1.41 -1.65 -3.84 -0.48 -0.13 -2.28 0.76 -3.88 1.28 -3.91 1.2 
+-2.82 -0.3 -1.91 -1.04 -0.98 -4.21 0.04 -0.3 3.38 -7.14 0.09 -0.57 -1.2 -1.32 -2.39 -0.93 
+-1.15 -4.34 -6.49 1.54 -4.32 2.48 -1.43 0.48 -3.49 -1.45 -2.84 -2.73 -2.37 -3.2 -0.83 -4.6 
+-1.34 -2.14 -0.98 -1.2 -2.71 -2.97 -1.91 -3.8 -2.08 -0.41 -5.95 2.88 -0.41 0.26 -6.01 2.13 
+-2.24 0.45 -3.77 -1.78 -0.91 -4.71 -6.27 0.84 -1.04 0.43 -5.58 0.88 -3.43 -2.04 -2.93 -2.56 
+-2.82 -2.74 -2.8 -2.8 -3.58 -1.91 -3.47 -2.06 -4.3 -0.76 -0.2 -0.02 -6.42 2.78 -1.32 0.63 
+-4.67 -0.39 -4.3 -0.82 -2.08 -0.05 -3.14 0.54 -5.49 1.22 -0.26 0.07 -4.52 -0.3 -1.17 -2.88 
+-0.41 -1.55 -3.21 -0.26 -1.62 0.46 -1 -1.71 -1.67 -1.29 -0.89 0.09 -5.29 3.71 -1.28 0.57 
+-4.59 0.09 -4.23 -0.41 -3.63 -0.11 -0.67 -0.11 -4.95 0.91 -4.69 0.59 -2.56 -3.15 -4.47 0.31 
+-0.65 0.54 -4.99 2.17 -1.61 1.26 -3.97 4.32 -2.41 1.99 -3.36 1.72 -1.67 0.37 -4.47 1.17 
+-3.6 -0.63 -4.04 0.46 -0.37 0.02 -3.45 0.02 -4.6 2.06 -2.26 0.67 -2.21 1.32 -2.78 2.8 
+-2.04 4.78 -2.54 2.43 -3.06 -1.02 -2.69 -2.14 -0.93 -1.15 -2.02 -0.39 0.41 -1.3 -1.89 -4.08 
+-0.39 -0.07 0.13 -0.5 -1.98 -4.91 -0.12 -0.58 -2.52 -4.76 -0.11 -0.17 -3.1 -2.11 -3.52 -1.2 
+-3.58 -0.93 -3.58 -1.15 -1.04 -1.34 -2.21 -2.5 -3.56 -2.3 -4.23 3.73 -0.02 0.34 -0.2 -0.02 
+-1.47 4.95 p f*
+255 135 0 rG
+2494.77 3233.53 -0.46 1.76 1.78 -1.57 -1.32 -0.2 f*
+110 210 9 rG
+2495.9 3145.66 -0.8 4.99 0.55 0.02 -0.09 0.84 3.25 2.87 2.09 1.65 1.19 0.09 -0.11 0.73 
+3.3 1.2 2.39 3.61 0.3 0.67 1.59 4.53 0.48 1.91 0.74 3.25 0.34 5.04 0.24 0.04 
+-0.13 0.54 0.91 4.56 0.97 0.15 -0.46 1.71 0.7 3.32 0.63 2.36 2.02 2.7 0.11 0.41 
+1.41 0.24 -0.82 -2.82 -2.15 -2.47 -0.04 -0.24 -0.95 -5.14 -0.2 -0.98 -0.7 -4.17 -0.62 -3.04 
+-0.15 -2.08 -0.28 -5.05 -0.43 -3.8 -0.13 -1.28 -2.09 -5.05 -3.4 -0.55 -0.05 0 -3.17 -1.95 
+-3.19 -1.46 -0.18 -0.07 -2.58 -2.23 1.19 -4.95 1.89 -4.91 1.02 -0.93 1.52 1.11 1.74 3.12 
+2.54 2.26 0.61 1.52 2.21 3.8 0.09 3.97 3.49 0.19 0.39 1.33 -0.93 4.93 2.14 2.36 
+2.96 1.74 2.93 1.61 0.37 0.5 1.57 4.34 1.06 1.17 1.48 1.09 2.1 3.32 0.41 1.46 
+1.06 3.12 2.39 1.82 2.54 1.32 3.14 -0.11 3.23 -0.21 3.39 -0.41 2.97 0.41 3.16 0.13 
+2.02 2.24 2.21 1.78 3 0.41 3.21 0.13 1.74 -0.89 2.47 -0.47 2.91 0.71 4.3 -2.08 
+0.96 -0.5 0.06 0.95 -0.39 4.35 0.3 1.45 -1.15 4.19 2.67 -3.49 2.52 1.21 2.49 1.21 
+-2.82 3.41 5.23 -2.14 0.09 -0.02 3.41 0.17 3.54 0.08 3.99 -0.43 0.11 -0.02 2.37 1.46 
+0 0.04 0.82 3.02 2.32 1.43 2.99 0.8 2.91 0.93 0.43 0.16 3.64 -0.26 4.39 -1 
+2.95 -1.97 2.21 -1.41 3.77 -0.2 2.24 1.8 -0.5 2.86 0.34 0.98 0.39 3.23 3.21 0.93 
+2.02 0.28 2.25 -0.13 -0.22 2.17 0 1.43 1.37 0 2.96 0.22 5.21 -0.41 0.13 -0.02 
+6.81 -1.43 0.02 -0.02 4.69 0.21 1.17 2.71 2.67 1.68 3.02 1.48 1.24 0.24 2.52 0.78 
+2.08 2.15 5.01 0.32 -1.41 4.3 -1.73 2.99 -0.39 1.57 1.37 0.3 5.23 -0.74 2.24 1.35 
+1.15 0.13 3.75 1.3 3.13 1.7 1.23 2.73 -0.63 3.65 2.46 1.37 0.63 0.41 2.26 2.23 
+3.08 1.87 1.75 2.52 1.02 2.84 -0.98 3.69 1.99 1.95 0.46 0.3 -0.24 1.98 -0.2 1.45 
+0.35 0.39 1.84 2.02 4.6 1 1 0.15 5.27 -0.21 2 0.82 4.21 -0.08 4.06 0.34 
+2.06 1.3 0 -8.53 -0.71 -0.44 -3.06 -2.26 3.38 -3.08 2.52 0.47 -1.08 4.13 -1.04 1.17 
+0 8.53 1.5 0.87 -1.61 4.14 0.93 3.19 4.58 0.39 5.71 -0.52 0.34 0 0.8 -0.07 
+0 -21.42 -0.3 0 -2.52 -0.02 -3.49 -0.45 -1.29 -1.09 -5.23 -0.95 -2.28 0.71 -3.32 -2.08 
+-0.69 -3.26 -1.26 -2.6 -0.26 -0.28 0.07 -0.72 5.36 -5.46 2.98 -1.82 2.73 -1.84 2.54 -4.95 
+0.06 -4.04 -2.1 -2.8 1.43 -3.27 0.76 -2.17 1.39 -5.14 0.57 -2.82 -0.02 -1.87 0.95 -5.1 
+1.09 -3.39 6.05 -2.36 0.52 0.18 6.01 0.24 1.11 0.22 2.9 1.56 5 -0.09 1.28 0.26 
+3.73 2.06 -2.21 4.19 -5.88 2.65 -5.56 3.51 -5.43 3.93 -2.86 2.09 -2.56 1.86 -3.23 4.52 
+1.22 3.36 2.38 2.67 3.19 1.52 0 -7.48 0.61 -4.58 1.95 -2.09 5.28 -4.34 5.9 -2.66 
+1.56 -0.5 4.88 -0.65 2.63 0.15 -1.29 3.71 -5.21 4.82 -4.84 1.95 -1.15 0.46 -5.73 3.23 
+-4.61 0.5 0 7.48 0.13 0.07 1.73 -0.39 4.3 -1.98 5.9 -2.73 5.99 -2.34 5.95 -2.61 
+1.41 -0.15 P
+5.2 0.39 1.09 0.16 -0.76 1.34 -5.36 5.32 -3.02 3.34 -2.28 3.05 -5.84 3.47 -5.73 4.63 
+-0.43 0.85 -5.25 5.05 -2.3 2.61 -3.55 3 0 21.42 5.25 -0.55 3.78 -3.27 2.75 -1.59 
+6.47 -5.42 1.87 -1.56 4.38 -2.71 0.8 0.35 -0.91 1.65 -3.67 4.43 -3.17 4.84 -0.43 0.63 
+-5.25 5.92 -1.5 1.69 -5.99 1.07 -0.09 -0.05 -2.21 0.84 -4.14 1.56 -2.56 4.34 -5 5.08 
+-0.71 0.7 -5.1 4.42 1.35 3.15 -4.02 4.47 -3.4 3.47 -0.55 0.84 -2.56 3.93 -2.9 3.97 
+-1.07 3.6 -2.26 3.78 -3.04 3.84 -2.41 3.73 -2.45 3.71 -1.97 3.64 -1.54 3.63 -0.63 1.45 
+5.34 0.8 2.97 0.98 1.61 0.68 5.36 0.63 2.78 1.82 -4.71 4.19 -0.04 3.28 -0.43 0.65 
+-0.72 0.61 -7.29 3.54 -2.87 1 -7.61 2.82 0.8 3.86 0.02 0.15 -0.5 0.3 -7.25 1 
+-4.21 1.95 -0.58 0.18 -5.95 1.75 -1.47 1.24 -4.32 3.47 -4.47 3.43 5.42 0.89 5.47 0.81 
+5.51 0.69 5.58 0.61 5.25 0.46 2.43 -1.63 3.86 -2.34 -0.98 -0.07 -5.71 -0.34 -5.66 -0.48 
+-5.62 -0.57 4.38 -3.64 -0.02 -0.11 0.46 -0.24 4.03 -3.54 5.8 0.33 5.84 0.2 5.89 0.11 
+3.38 0 4.58 -1.99 0.41 -0.39 0 -5.84 -0.07 -0.26 0.48 -0.17 0.3 0.13 -0.71 0.3 
+0 5.84 2.02 -2 2.56 -0.08 5.58 -2.32 2.25 -2.39 1.97 -0.15 5.47 -4.73 -0.39 -2.99 
+-7.2 1.8 -5.62 -0.13 -1.87 -1.52 3.93 -4.32 3.26 -4.29 3.28 -4.34 0.08 -3.58 -0.93 -0.22 
+0.52 -3.95 -1.54 -1.3 -4.75 -1.47 -0.17 -0.09 -0.5 -3.62 2.06 -1.96 0 -6.4 -5.25 -0.98 
+-1.04 -0.8 2.86 -2.78 6.16 -0.79 0.92 1.73 -3.65 3.61 0 6.4 2.63 -2.47 1.32 -0.67 
+7.97 -4.12 1.49 -1 7.38 -5.41 0.13 -0.13 4.58 -5.02 4.45 -2.79 6.68 -4.37 -4.95 -0.02 
+-6.98 3.39 -3.65 -2.63 -0.52 -1.43 -1.22 -1.82 0.7 -3.95 -2.84 -1.49 -0.3 -1.26 0.91 -0.89 
+3 -4.05 4.73 -3.49 3.41 -3.13 3.89 -4.21 1.52 -1.73 4.45 -5.79 1.22 -1.46 4.42 -5.05 
+2.28 -4.21 0.61 -1.28 -0.48 -1.56 -1.76 -1.52 -4.28 1 -6.1 2.69 -0.02 0.02 -5.99 3.88 
+-0.2 0.24 -6.23 3.02 -0.61 -0.26 -3.88 -2.12 -1 -3.34 0.54 -4.02 4.95 -4.14 4.8 -4.36 
+1.04 -1.06 5.88 -4.02 5.9 -3.45 5.67 -4.97 4.9 -3.45 0.83 -0.67 5.1 -7.18 0.07 -0.34 
+1.52 -5.64 -3.47 -2.06 -0.43 -0.04 -6.23 -0.54 -0.72 -4.19 4.25 -5.23 0.61 -3 -0.96 -4.23 
+-2.8 -0.86 -2.56 -0.09 -4.12 0.93 -2.86 -0.59 -5.01 -0.98 -0.17 0 -0.74 -1.89 -0.72 -1.86 
+-0.54 -0.54 -4.14 -0.76 -3.19 0.8 -2.97 -0.87 -5.25 -0.34 -5.25 3.75 -3.52 6.77 -0.24 0.46 
+-1.23 5.28 -0.43 4.58 -0.02 0.11 -0.16 0 -1.73 -0.41 -2.93 -0.7 -3.28 -0.67 -2.67 0.48 
+-2.5 -2.47 -3.34 -1.87 -1.89 -1.36 -0.98 -0.83 -5.27 -0.41 -2.97 -1.19 -0.71 -0.3 -3.95 -5.52 
+-3.52 -1.58 -2.45 -2.37 -2.71 -2.19 -2.39 -2.47 -3.19 -1.78 -3.62 -1.37 -0.57 0.02 -1.71 1.98 
+-2.48 2.52 -0.65 0.2 -3.43 -1.43 -3.38 -1.41 -4.11 -0.76 -0.78 0.21 -4.52 0.2 1.11 -3.11 
+0.78 -3.25 1.04 -2.95 3.14 -5.12 0.68 -1.71 -0.15 -0.17 -2.24 -2.5 -3.95 0.22 -1.07 -0.02 
+-5.58 0.91 p
+-3.41 -0.67 -0.67 -0.02 -4.88 0.31 -3.19 -1.59 -3.11 -1.74 -3.8 -0.84 -1.26 0.34 -5.23 2.24 
+-3.73 -0.76 -0.22 -0.05 -4.45 0.52 -4.28 0.07 -2.8 -1.93 -3.91 -0.35 -0.61 0.05 -4.32 1.17 
+-3.78 -0.43 -3.71 -0.46 -0.61 0.35 -4.54 1.61 -3.34 1.08 -1.35 0.26 -4.66 1.45 -3.19 -0.95 
+-2.86 -1.61 -3.56 -0.26 -3.43 0.22 -0.39 0.04 -3.8 0.32 -3.95 0.76 -2.41 1.26 -2.47 1.78 
+-1.97 2.37 -3.62 4.36 -0.93 0.43 -3.45 0.45 -2.93 -0.83 -2.02 -2.23 -0.29 -0.26 -1.74 -4.45 
+-0.91 -1.02 -1.65 -1.48 -1.88 -4.27 -0.16 -0.28 -2.88 -2.02 -2.84 -2.5 -0.24 -1.23 -0.39 -5.12 
+-1.11 -1.67 -2.93 -3.62 -0.17 -0.3 -3.23 -1.34 -3.54 -1.11 -2.78 -3.54 -0.41 -0.46 -3.52 -2.49 
+-2.75 2.47 -1.67 3.8 -0.35 1.11 p f*
+255 0 r6
+2495.16 3155.6 -0.02 0.04 0.07 0 -0.05 -0.04 f*
+0 155 255 rG
+2495.29 3154.25 -0.13 1.35 0.05 0.04 1.73 0.11 -1.65 -1.5 f*
+2 239 204 rG
+2495.42 3152.89 -0.13 1.36 1.65 1.5 1.67 0.11 0.09 0 -0.07 -0.07 -3.21 -2.9 f*
+7 193 59 rG
+2495.55 3151.52 -0.13 1.38 3.21 2.9 0.07 0.07 2.19 0.18 -2.09 -1.65 -3.25 -2.87 f*
+255 35 0 rG
+2497.25 3386.96 -1.11 0.54 1.25 0.02 1.82 -0.31 -1.97 -0.26 f*
+0 255 r6
+2497.57 3145.77 -1.19 4.95 2.58 2.23 0.18 0.07 0 -1.5 -0.76 -0.67 1.13 -4.95 0.46 -1.32 
+0.74 1.41 1.54 5.12 -3.1 0.41 0 1.5 3.19 1.46 3.17 1.95 0.05 0 3.4 0.55 
+2.09 5.05 0.13 1.28 0.43 3.8 0.28 5.05 0.15 2.08 0.63 3.04 0.7 4.17 0.2 0.98 
+0.95 5.14 0.04 0.24 2.15 2.47 0.82 2.82 1.02 0.19 -0.61 1.76 1.99 2.17 2.02 1.82 
+0.02 0 2.5 0.57 1.52 0.37 0 -3.97 -2.67 -0.39 -2.45 -0.93 -1.13 -1.15 0.24 -4.45 
+-2.61 -1 -0.02 -0.04 -1.8 -3.66 -0.29 -1.7 -0.95 -4.88 -0.07 -0.3 0.95 -3.14 2.61 2.13 
+2.67 1.63 0.54 0.48 1.26 3.67 0.22 1.67 0.67 4.45 2.75 0.54 1.32 1.09 0.48 1.82 
+0.67 3.58 -2.41 0.61 0 3.97 0.98 0.24 -0.61 1.32 2 1.61 1.93 1.57 1.54 2 
+0.11 0.02 4.6 1.43 2.61 -4.49 2.39 0.78 2.34 0.8 2.8 -4.46 2.43 0.86 2.41 0.91 
+2.36 0.93 2.37 0.98 3.15 -4.41 2.43 1.04 2.39 1.07 3.32 -4.37 2.48 1.15 0.7 -0.89 
+1.15 -4.19 -0.3 -1.45 0.39 -4.35 -0.06 -0.95 -0.96 0.5 -4.3 2.08 -2.91 -0.71 -2.47 0.47 
+-1.74 0.89 -3.21 -0.13 -3 -0.41 -2.21 -1.78 -2.02 -2.24 -3.16 -0.12 -2.97 -0.41 -3.39 0.41 
+-3.23 0.21 -3.14 0.11 -2.54 -1.32 -2.39 -1.82 -1.06 -3.12 -0.41 -1.46 -2.1 -3.32 -1.48 -1.09 
+-1.06 -1.17 -1.57 -4.34 -0.37 -0.5 -2.93 -1.61 -2.96 -1.74 -2.14 -2.36 0.93 -4.93 -0.39 -1.33 
+-3.49 -0.19 -0.09 -3.97 -2.21 -3.8 -0.61 -1.52 -2.54 -2.26 -1.74 -3.12 -1.52 -1.11 -1.02 0.93 
+-1.89 4.91 f*
+2 239 204 rG
+2496.86 3138.13 -0.21 2.21 4.23 -3.73 3.56 2.3 2.21 2.5 1.04 1.34 3.58 1.15 3.58 0.93 
+3.52 1.2 3.1 2.11 0.11 0.17 2.52 4.76 0.13 0.58 1.98 4.91 1.21 -4.27 -0.07 -0.13 
+-0.48 -5.21 -1.06 -2.58 -3.12 -2.71 -3.64 -0.76 -3.69 -0.57 -3.73 -0.39 -0.26 -0.09 -3.3 -1.45 
+-3.36 -3.35 -1.62 -1 -1.98 -1.36 -1.45 1.13 -2.78 2.32 f*
+0 155 255 rG
+2497.07 3135.92 -0.21 2.21 2.78 -2.32 1.45 -1.12 1.98 1.36 1.63 1 3.36 3.35 3.3 1.45 
+0.26 0.09 3.73 0.39 3.69 0.57 3.64 0.76 3.13 2.71 1.06 2.58 0.48 5.21 0.07 0.13 
+0.02 -0.11 1.37 -4.93 3.55 0.59 3.56 0.65 3.54 0.7 -1.65 4.88 -0.83 2.39 1.61 -2.24 
+3.67 -4.47 0.92 -0.39 4.2 -1.11 3.87 -0.02 2.47 -1.17 2.73 -4.69 1.95 -2.25 3.1 -1.85 
+3.47 -4.32 0.18 -0.17 5.71 -3.78 0.17 -0.13 5.82 -3.88 0.07 -0.02 5.86 -3.29 0.83 -0.3 
+4.25 -0.96 4.61 -0.17 4.43 0.34 1.25 -0.3 4.19 -1.37 4.56 0.24 3.61 2.04 3.93 1.43 
+4.8 -0.13 0.84 0.02 3.71 0.34 5.02 -0.32 4.64 0.34 3.05 2.87 3.06 2.8 3.54 2.02 
+3.73 1.71 4.01 1.32 4.3 0.93 3.34 0.48 1.24 0.13 5.55 -0.63 2.28 -0.87 4.84 -1.67 
+4.06 0.3 1 -0.13 4.82 0.61 4.17 1.43 2.08 3.95 3.1 2.65 4.34 1.21 4.27 0.02 
+1.52 -0.42 4.75 -2.34 2.82 0.04 4.03 1.74 3.21 2.62 4.43 1.35 1.04 -0.33 4.77 0.24 
+2.71 3.19 0.26 4.34 0.18 1.11 1.32 4.41 3.19 2.56 2.75 2.95 2.61 3.08 2.78 1.23 
+1.41 0.43 5.86 -1.32 -0.24 -3.78 -1.8 -3.96 1.3 -3.8 3.23 -6.12 0.11 -0.5 -1.26 -4.82 
+-1.45 -4.77 -3.12 -3.02 -3.65 -2.5 -2.08 -4.28 -0.91 -2 3.45 -0.95 3.17 -1.46 5.62 -3.32 
+4.11 -4.75 -2.24 -3.32 -2.76 -4.01 -1.61 -5.62 -2.63 -3.02 4.54 0.48 3.13 -2.3 5.55 -1.43 
+1.28 -0.99 3.52 -5.17 1.73 -2.93 -3.28 -3.95 -2.62 -1.59 -1.63 -0.97 -4.02 -2.96 -3.69 -3.53 
+-0.26 -1.89 2.45 -1.56 4.97 1.63 4.12 2.87 3.39 3.99 2.93 4.54 3.21 4.04 5.01 1.43 
+4.88 1.61 2.41 -0.42 4.79 -1.15 2.41 -0.8 5.36 -3.62 1.78 -0.44 6.14 -0.82 0.66 -0.15 
+6.66 -0.78 0.59 -0.22 5.86 -0.24 3.67 0.84 2.21 -0.49 4.9 1.78 2.63 -0.17 4.13 -0.74 
+3.88 3.23 3.2 4.17 4.49 2.28 2.02 5.62 2.76 4.51 1.73 5.77 1.8 5.53 0.7 3.45 
+0.46 2.8 2.08 5 2.65 1.82 1.89 0.19 4.29 2.3 3.37 2.93 0.39 -0.02 2.71 4.08 
+-0.52 2.19 -3.73 7.96 -4.86 5.05 -1.26 3.13 -0.39 6.99 -1.07 2.02 -4.46 7.14 -4.78 6.42 
+-1.75 2.22 -3.23 3.64 -2.73 1.65 -3 0.99 -4.62 -0.25 -1.96 -4.19 -0.82 0.15 -0.87 1.34 
+-3.86 5.47 -1.54 0.76 -4.19 2.06 -0.18 -0.15 -4.56 -1.87 -2.04 0.71 -5.6 3.45 -0.95 -0.52 
+-1.67 -0.93 -4.56 -0.8 -2.43 0.91 -0.18 -5.25 -2.3 -3.61 1.5 -2.16 -0.09 -4.59 2.2 -7.12 
+1.39 -1.78 -1.04 -4.99 -3.84 -2.41 -1.2 -4.93 1.07 -6.57 -0.04 -0.68 -1.17 -5.18 -0.72 -5.82 
+0.37 -2.43 0.2 -4.92 0.2 -5.3 -0.28 -1.63 -3.21 -3.43 -2.7 -4.07 -3.54 -3.14 -0.76 -0.05 
+-6.75 1.76 -0.3 -0.02 -6.14 0.46 -2.11 0.15 -5.41 3.54 0.98 4.06 0.93 5.86 -0.07 1.3 
+-2.97 6.29 -0.08 2.43 1.69 4.56 1.54 4.66 1.71 4.4 2.48 3.61 3.03 3.04 0.66 3.26 
+0.26 1.71 -2.19 7.59 -0.04 0.16 -2.64 7.55 0.06 1.54 0.43 3.34 0.68 4.64 1.54 3.93 
+2.91 0.98 3.58 -1.07 0 -4.92 -0.21 -2.91 2.47 -4.23 -3.64 1.55 -2.24 -2.09 -0.11 -2.86 
+1.3 -3.58 P
+1.3 -5.38 0.28 -1.63 -0.32 -5.47 -1.89 -4.15 -2.78 -3.34 -2.47 -3.64 -2.08 -4.08 -2.11 -4.14 
+-0.78 -2.73 0.95 -3.88 1.46 -3.13 0.26 -5.51 -1.79 -4.93 -0.2 -0.84 2.41 -1.78 3.55 -1.17 
+3.13 0.45 4.79 1.54 2.25 -0.32 6.19 -2.41 1.11 5.9 3.71 2.8 0.56 6.32 -0.06 1.65 
+-0.89 6.08 1.5 4.92 0.48 2.05 -0.91 4.73 -0.46 5.53 -1.04 2.04 0.11 5.86 2.21 3.84 
+1.02 4.86 -0.37 1.69 -4.78 5.19 -4.27 2.47 -1.35 0.76 -5.4 3.78 -0.91 0.21 0 4.92 
+0.58 -0.17 2 -0.62 5.56 -3.45 4.7 -0.22 -2.3 7.07 0.09 0.5 0.61 4.14 -4.16 6.77 
+-1.32 2.19 -3.19 6.53 -0.24 0.65 -1.18 5.51 -3.17 4.64 -0.71 2.41 0.91 4.02 0.73 3.86 
+0.11 0.17 -0.09 0.17 -1.88 5.43 -1.24 5.08 -2.65 5.73 3.5 2.59 1.91 0.32 5.97 -1.39 
+4.08 -5.14 2.3 -2.43 6.03 -3.84 2.86 0 2.91 1.56 1.63 0.54 2.3 3.43 -3.47 6.64 
+-1.81 2.55 -3.62 4.95 -2.43 5.77 -2.65 5.77 -0.17 0.24 -7.18 6.29 -4.52 3.11 -2.56 2.06 
+-7.46 5.88 -0.37 0.43 -6.05 6.32 -2.69 2.82 -7.49 4.53 0 0.02 5.26 0.63 5.9 -0.89 
+1.98 0.26 2.23 2.48 6.59 -2.56 1.48 0.87 3.71 -0.48 5.73 -0.86 5.17 0.28 0.04 0.09 
+-1.93 3.84 -0.91 1.74 -8.92 7.12 -1.24 0.85 -6.95 4.23 -5.66 3.95 -4.21 3.52 -3.73 2.87 
+-4.71 5.38 -3.56 5.08 3.28 -0.67 3.73 -5.16 3.5 -5.19 6.42 -1.67 3.3 -5.29 4.25 -1.26 
+2.82 -1.78 8.27 -5.34 0.63 -1.15 1.06 -0.37 6.1 -6.75 2.75 -5.62 -2.08 -3.43 -0.71 0.02 
+-2.17 -3.6 -0.07 -2.26 -0.5 -1.97 1.52 -5.1 -3.34 -1.59 -0.89 -1.04 1.58 -1.17 6.04 -6.71 
+1.95 -5.46 1.64 -3.67 1.39 -2.41 4.88 -7.21 1.39 -1.97 4.6 -6.14 2.2 -2.91 6.16 -5.6 
+3.39 -3.54 2.84 -5.42 0.98 -2.15 -0.91 -0.43 -5.84 2.13 -2.86 -0.43 0.61 -5.43 2.11 -4.12 
+5.6 -6.25 0.26 -0.37 -0.29 -0.13 -5.77 3.23 -5.47 4.95 -0.22 0.26 -0.08 -0.05 -4.47 -2.04 
+-1.93 -3.63 -0.06 -0.06 -2.8 -3.13 0.58 -5.51 -1.43 -4.14 -3.36 -2.71 -0.68 -4.71 3.23 -3.61 
+1.17 0.22 2.34 3.54 0.93 4.58 3.97 0.09 4.01 -0.76 2.22 0.33 2.36 1.54 4.08 -0.21 
+5.6 -3.84 4.82 -1.76 1.02 -0.32 1.39 -1.65 3.89 -3.8 5.32 -4.82 5.23 -5.03 4.43 -8.42 
+0.48 -0.91 4.1 -6.04 4.3 -7.55 1.82 -3.11 1.76 -6.2 0.52 -3.04 3.19 -5.21 1.93 -7.71 
+-2.87 -3.95 -3.78 0.2 -1.52 -1.3 -3.36 -3.43 -4.71 -0.43 -0.74 -0.5 -0.56 -1.96 0.2 -5.17 
+-1.5 -5.86 -1.04 -5.55 0 -1.09 -1.8 -5.79 -3.08 -4.12 -2.54 -4.99 -3.99 0.08 -1.63 -0.8 
+-3.45 -3.82 -3.64 -3.58 -5.77 1.04 -1.13 0.09 -4.27 -2.66 -4.75 1.08 -1.84 -0.43 -5.21 -1.32 
+-2.97 0.71 -3.84 0.3 -4.01 0.98 -3.06 0.41 -4.55 1.13 -4.69 4.28 -0.84 0.29 -6.51 1.56 
+-0.79 0.13 -4.47 -2.21 -4.2 -2.61 -1.05 -4.19 -0.33 -2.64 -3.64 -3.63 -2.23 -5.9 -0.46 -0.59 
+-3.13 -3.34 -1.56 0.06 -4.86 0.61 -2.56 1.76 -5.1 3.93 0.74 5.32 3.91 3.13 3.97 3 
+3.71 3.32 0.58 2.15 -2.86 5.64 -3.97 1.06 -5.27 -0.46 -0.37 0.04 -5.62 3.14 0.15 4.32 
+3.17 3.62 p
+1.43 3.78 -4.32 4.49 -4.54 4.28 -3.99 4.75 -0.22 4.3 2.71 3.56 2.71 3.54 3.34 2.78 
+2.91 3.19 2.13 4.02 0.32 1.26 -1.09 5.55 -1 1.82 -4.42 4.64 -0.63 -0.61 -0.3 -0.52 
+-1.39 -3.58 -2.39 -3.52 -3.11 -2.82 -0.87 -5.18 -2.8 -3.23 -3.47 -2.56 -3.45 -2.56 -4.1 -1.82 
+-4.17 -0.29 -1.13 -0.17 -4.66 -1.11 -5 0.52 -1.11 0.13 -4.82 -0.83 -3.73 -2.14 -3.16 -2.89 
+-3.88 -1.97 -4.54 -1.11 -1.46 0.33 -4.45 0.43 -4.32 1.09 -2.36 0.83 -4.97 1.63 -1.62 0.3 
+-3.04 -0.08 -2 -0.07 -4.45 -0.91 -3.58 -2.12 -3.69 -2.02 -3.34 -2.61 -3.17 -2.95 -3.61 -2.34 
+-3.91 -1.84 -4.25 -1.28 -4.12 -1.55 -4.43 -0.93 -4.3 -1.18 -4.54 -0.73 -4.82 -0.13 -1.54 -0.24 
+-2.91 -0.54 -0.06 0 -4.95 0.46 -5.32 1.24 -1.61 -0.07 -3.04 -0.15 -4.94 0.67 -4.93 0.7 
+-1.7 0.35 -3.06 0.02 -1.02 0.09 -3.71 0.33 -4.99 1.95 -0.28 0.13 -5.36 4.01 -0.85 1.24 
+-2.73 3.34 -2.47 4.82 -0.83 5.14 -0.24 4.86 -0.06 0.39 -0.13 0.2 -1.69 4.71 -1.8 4.91 
+-3.58 -0.79 -3.13 -0.65 -0.54 0.02 -4.11 0.89 -3.69 -0.41 -0.59 -2.15 -1.89 -2.76 -1.7 -2.97 
+-0.89 -2.26 -3.08 -3.47 -0.07 -0.11 -0.35 0.04 -3.77 0.61 -3.93 2.21 -0.52 0.29 -1.11 0.89 
+-3.06 0.72 -3.82 -0.39 -1.34 -1.13 -2.35 -0.19 0.26 -2.06 -3.73 -1.57 -3.99 3.13 -0.26 0.24 p f*
+255 0 r6
+2497.09 3135.68 -0.02 0.24 0.26 -0.24 3.99 -3.13 3.73 1.57 0.39 -2.96 0.66 -5.03 -4.04 -0.3 
+-0.56 5.06 -3.95 -0.24 -0.46 5.04 f*
+87 0 136 rG
+2498.39 3238.89 -0.84 4.64 0.45 0.11 1.41 0.26 0.45 0.11 0.22 -1.7 0.41 -3.04 -0.37 -1.21 
+-1.73 0.82 f*
+255 203 0 rG
+2499.5 3145.9 -1.13 4.95 0.76 0.67 3.1 -0.41 -1.54 -5.12 -0.74 -1.41 -0.46 1.32 f*
+255 135 0 rG
+2499.57 3229.45 -0.96 3.06 1.96 -0.5 1.91 -0.22 1.63 0.54 0.78 -1.93 -1.78 -0.35 -1.76 -0.3 
+-1.78 -0.3 f*
+87 0 136 rG
+2501 3247.03 -1.63 1.73 0.72 0.18 1.25 0.3 1.26 0.33 1.23 0.34 1.24 0.38 2.21 -3.69 
+-2.06 0.89 -1.39 -0.2 -1.3 -0.37 -1.54 0.11 f*
+255 G
+2490.32 2270.29 10.05 0 11.31 0.5 11.28 0.7 11.29 0.89 11.26 1.09 11.25 1.28 11.21 1.48 
+11.18 1.68 11.18 1.86 11.11 2.08 11.09 2.26 11.04 2.45 11 2.63 10.96 2.84 10.89 3.04 
+10.85 3.21 10.79 3.41 10.74 3.6 10.66 3.78 10.61 3.97 10.53 4.14 10.44 4.34 10.37 4.52 
+10.31 4.68 10.2 4.88 10.13 5.05 10.02 5.23 9.96 5.4 9.83 5.58 9.74 5.75 9.66 5.93 
+9.55 6.1 9.42 6.25 9.33 6.4 9.2 6.59 9.09 6.73 8.98 6.91 8.86 7.05 8.75 7.2 
+8.59 7.36 8.46 7.51 8.36 7.66 8.21 7.79 8.07 7.95 7.92 8.07 7.79 8.22 7.64 8.36 
+7.51 8.49 7.33 8.61 7.21 8.75 7.03 8.85 6.9 8.98 6.73 9.12 6.57 9.22 6.4 9.34 
+6.25 9.44 6.08 9.57 5.9 9.66 5.75 9.77 5.58 9.85 5.38 9.96 5.23 10.05 5.05 10.13 
+4.86 10.22 4.69 10.3 4.51 10.4 4.34 10.45 4.14 10.55 3.95 10.61 3.77 10.68 3.61 10.74 
+3.4 10.81 3.21 10.87 3.02 10.92 2.84 10.95 2.63 11.03 2.45 11.07 2.25 11.09 2.06 11.13 
+1.87 11.18 1.67 11.21 1.48 11.22 1.28 11.26 1.09 11.29 0.89 11.28 0.69 11.31 0.5 11.33 
+0 10.22 -0.26 -10.22 -0.49 -11.31 -0.7 -11.3 -0.89 -11.29 -1.09 -11.28 -1.28 -11.25 -1.48 -11.24 
+-1.67 -11.2 -1.87 -11.17 -2.06 -11.13 -2.25 -11.09 -2.43 -11.05 -2.65 -11.02 -2.82 -10.96 -3.04 -10.91 
+-3.21 -10.85 -3.38 -10.8 -3.61 -10.75 -3.77 -10.67 -3.95 -10.62 -4.14 -10.52 -4.35 -10.46 -4.51 -10.39 
+-4.69 -10.31 -4.86 -10.22 -5.05 -10.14 -5.21 -10.04 -5.4 -9.94 -5.55 -9.86 -5.75 -9.76 -5.91 -9.66 
+-6.08 -9.55 -6.25 -9.44 -6.4 -9.33 -6.58 -9.23 -6.72 -9.09 -6.88 -9 -7.03 -8.86 -7.21 -8.75 
+-7.34 -8.59 -7.5 -8.49 -7.64 -8.35 -7.77 -8.23 -7.94 -8.07 -8.05 -7.92 -8.21 -7.81 -8.36 -7.64 
+-8.46 -7.51 -8.59 -7.36 -8.73 -7.21 -8.85 -7.05 -8.98 -6.88 -9.09 -6.75 -9.2 -6.58 -9.31 -6.4 
+-9.44 -6.27 -9.53 -6.08 -9.66 -5.91 -9.74 -5.75 -9.83 -5.58 -9.94 -5.4 -10.05 -5.23 -10.11 -5.05 
+-10.2 -4.88 -10.3 -4.68 -10.38 -4.52 -10.43 -4.34 -10.53 -4.14 -10.59 -3.97 -10.66 -3.78 -10.72 -3.6 
+-10.79 -3.41 -10.85 -3.21 -10.89 -3.02 -10.96 -2.84 -10.98 -2.65 -11.05 -2.45 -11.09 -2.26 -11.11 -2.06 
+-11.16 -1.87 -11.19 -1.67 -11.2 -1.48 -11.24 -1.28 -11.27 -1.09 -11.29 -0.89 -11.28 -0.7 -11.29 -0.5 
+-10.05 -0.26 f*
+2514.15 3567.75 -13.93 0 0.15 0 11.31 -0.5 11.28 -0.7 11.29 -0.89 11.26 -1.09 11.25 -1.28 
+11.21 -1.48 11.18 -1.67 11.18 -1.87 11.11 -2.06 11.09 -2.25 11.04 -2.46 11 -2.64 10.96 -2.84 
+10.89 -3.02 10.85 -3.23 10.79 -3.41 10.74 -3.58 10.66 -3.79 10.61 -3.95 10.53 -4.16 10.44 -4.34 
+10.37 -4.52 10.31 -4.69 10.2 -4.88 10.13 -5.05 10.02 -5.23 9.96 -5.41 9.83 -5.58 9.74 -5.75 
+9.66 -5.92 9.55 -6.08 9.42 -6.27 9.33 -6.4 9.2 -6.58 9.09 -6.75 8.98 -6.9 8.86 -7.05 
+8.75 -7.21 8.59 -7.36 8.46 -7.51 8.36 -7.64 8.21 -7.81 8.07 -7.95 7.92 -8.07 7.79 -8.23 
+7.64 -8.36 7.51 -8.48 7.33 -8.62 7.21 -8.75 7.03 -8.86 6.9 -8.98 6.73 -9.11 6.57 -9.23 
+6.4 -9.33 6.25 -9.45 6.08 -9.57 5.9 -9.66 5.75 -9.77 5.58 -9.86 5.38 -9.96 5.23 -10.05 
+5.05 -10.13 4.86 -10.22 4.69 -10.31 4.51 -10.39 4.34 -10.46 4.14 -10.55 3.95 -10.61 3.77 -10.68 
+3.61 -10.74 3.4 -10.8 3.21 -10.87 3.02 -10.91 2.84 -10.96 2.63 -11.02 2.45 -11.04 2.25 -11.11 
+2.06 -11.13 1.87 -11.18 1.67 -11.21 1.48 -11.22 1.28 -11.26 1.09 -11.27 0.89 -11.3 0.69 -11.3 
+0.5 -11.33 0 -0.31 0 30.99 -1.06 13.11 -3.28 26.58 -4.41 26.56 -5.53 26.56 -6.71 26.57 
+-3.23 11.41 -4.69 15.2 -9.16 26.56 -10.48 26.56 -2.21 5.23 -9.66 21.35 -13.32 26.57 -3.56 6.6 
+-11.37 19.99 -7.57 12.17 -7.57 12.16 -1.48 2.28 -9.25 13.26 -9.22 13.28 -6.62 8.86 -13.95 17.7 
+-12.57 14.96 -10.33 11.63 -8.12 8.59 -8.09 8.59 -9.4 9.4 -8.57 8.12 -8.57 8.1 -11.61 10.35 
+-14.93 12.59 -17.7 13.97 -8.86 6.62 -13.24 9.25 -13.26 9.24 -2.26 1.5 -12.15 7.58 -12.13 7.59 
+-19.97 11.37 -6.59 3.55 -26.52 13.38 -10.68 4.82 -10.66 4.84 -5.23 2.23 -13.26 5.23 -13.26 5.25 
+-13.26 4.58 -13.26 4.6 -15.19 4.69 -11.37 3.23 -13.26 3.36 -13.28 3.36 -13.26 2.75 -13.26 2.78 
+-13.28 2.2 -13.26 2.21 -13.29 1.63 -13.25 1.65 -8.14 0.65 -4.97 0.41 -16.84 0 f*
+2500.21 2270.29 0.15 0 11.31 0.5 11.28 0.7 11.29 0.89 11.26 1.09 11.25 1.28 11.21 1.48 
+11.18 1.68 11.18 1.86 11.11 2.08 11.09 2.26 11.04 2.45 11 2.63 10.96 2.84 10.89 3.04 
+10.85 3.21 10.79 3.41 10.74 3.6 10.66 3.78 10.61 3.97 10.53 4.14 10.44 4.34 10.37 4.52 
+10.31 4.68 10.2 4.88 10.13 5.05 10.02 5.23 9.96 5.4 9.83 5.58 9.74 5.75 9.66 5.93 
+9.55 6.1 9.42 6.25 9.33 6.4 9.2 6.59 9.09 6.73 8.98 6.91 8.86 7.05 8.75 7.2 
+8.59 7.36 8.46 7.51 8.36 7.66 8.21 7.79 8.07 7.95 7.92 8.07 7.79 8.22 7.64 8.36 
+7.51 8.49 7.33 8.61 7.21 8.75 7.03 8.85 6.9 8.98 6.73 9.12 6.57 9.22 6.4 9.34 
+6.25 9.44 6.08 9.57 5.9 9.66 5.75 9.77 5.58 9.85 5.38 9.96 5.23 10.05 5.05 10.13 
+4.86 10.22 4.69 10.3 4.51 10.4 4.34 10.45 4.14 10.55 3.95 10.61 3.77 10.68 3.61 10.74 
+3.4 10.81 3.21 10.87 3.02 10.92 2.84 10.95 2.63 11.03 2.45 11.07 2.25 11.09 2.06 11.13 
+1.87 11.18 1.67 11.21 1.48 11.22 1.28 11.26 1.09 11.29 0.89 11.28 0.69 11.31 0.5 11.33 
+0 0.3 0 -30.99 -1.06 -13.08 -3.28 -26.58 -4.41 -26.59 -5.53 -26.56 -6.71 -26.56 -3.23 -11.42 
+-4.69 -15.19 -9.16 -26.56 -10.48 -26.57 -2.21 -5.21 -9.66 -21.37 -13.32 -26.56 -3.56 -6.6 -11.37 -19.98 
+-7.57 -12.18 -7.57 -12.15 -1.48 -2.26 -9.25 -13.28 -9.22 -13.26 -6.62 -8.87 -13.95 -17.71 -12.57 -14.95 
+-10.33 -11.63 -8.12 -8.59 -8.09 -8.59 -9.4 -9.39 -8.57 -8.12 -8.57 -8.09 -11.61 -10.35 -14.93 -12.59 
+-17.7 -13.98 -8.86 -6.62 -13.24 -9.24 -13.26 -9.25 -2.26 -1.5 -12.15 -7.57 -12.13 -7.6 -19.97 -11.37 
+-6.59 -3.56 -13.26 -6.68 -13.26 -6.66 -10.68 -4.84 -10.66 -4.84 -5.23 -2.22 -26.52 -10.5 -13.26 -4.58 
+-13.26 -4.61 -15.19 -4.68 -11.37 -3.23 -13.26 -3.37 -13.28 -3.36 -13.26 -2.75 -13.26 -2.78 -13.28 -2.2 
+-13.26 -2.19 -13.29 -1.65 -13.25 -1.65 -8.14 -0.65 -4.95 -0.42 -30.8 0 f*
+255 0 r6
+2501.39 3161.02 -0.02 0.04 0.13 0 -0.11 -0.04 f*
+0 155 255 rG
+2501.58 3159.63 -0.19 1.39 0.11 0.04 3.23 0.29 -0.63 3.82 0.52 1.17 2.54 0.26 -0.91 4.9 
+1.37 0.14 -0.43 -5.04 0 -0.05 -2.39 -5.18 -0.04 -0.09 -3.17 -1.65 f*
+2 239 204 rG
+2501.78 3158.25 -0.2 1.39 3.17 1.65 0.04 0.09 2.39 5.18 0 0.05 0.43 5.04 1.76 0.21 
+-0.83 3.86 0.02 1.04 1.28 0.16 -0.22 -5.02 -0.13 -0.63 -1.12 -4.53 -0.8 -2.28 -1.35 -2.96 
+-1.21 -1.82 -3.23 -1.43 f*
+7 193 59 rG
+2501.97 3156.86 -0.2 1.39 3.23 1.43 1.21 1.82 1.35 2.96 0.8 2.28 1.13 4.53 0.13 0.63 
+0.22 5.02 1.26 0.15 -0.34 -5.04 -0.74 -3.25 -0.48 -1.91 -1.59 -4.53 -0.3 -0.67 -2.39 -3.61 
+-3.3 -1.2 f*
+255 35 0 rG
+2505.04 3386.26 -2.09 0.54 2.24 -0.09 4.56 1.09 4.69 1.13 0.08 0.02 0.13 -0.07 0.96 -3.95 
+-3.08 -0.15 -4.04 0.06 -3.45 1.41 f*
+2504.45 3239.73 -1.48 -0.41 0.11 -4.38 1.63 0.35 1.63 0.37 1.61 0.39 -1.8 3.69 -1.69 0 f*
+255 0 r6
+2504.1 3165.17 -0.17 1.11 0.69 0.06 -0.52 -1.17 f*
+0 155 255 rG
+2506.32 3064.2 -1.8 5.12 2.82 3.47 4.86 0.71 4.8 1.33 0.52 -0.09 0 -4.36 -4.92 -0.57 
+-5.02 0.37 -0.59 -0.74 0.76 -1.43 4.84 1.78 4.96 0.24 0.38 0.18 -0.42 0.17 0 4.36 
+4.52 -0.65 5.17 -3.04 -4.37 -3 -4.84 -1.63 -5.03 -0.19 -2.78 -1.82 -1.96 -1.62 -1.91 1.41 f*
+255 G
+2507.14 3136.37 -2.35 -0.19 0.26 -2.06 0.39 -2.96 0.66 -5.03 4.03 0.33 4.02 0.36 -0.84 5.04 
+-0.83 5.02 -3.84 -0.37 -1.5 -0.13 f*
+255 203 0 rG
+2506.04 3378.84 -0.15 0.02 0.2 0.07 0.17 -0.12 -0.21 0.04 f*
+2 239 204 rG
+2507.75 3068.01 -0.76 1.43 0.59 0.74 5.02 -0.37 4.92 0.57 0.42 -0.17 -0.37 -0.18 -4.96 -0.24 
+-4.84 -1.78 f*
+0 155 255 rG
+2508.55 3175.72 -0.22 1 0.24 0.04 -0.02 -1.04 f*
+2 239 204 rG
+2510.54 3180.53 -0.34 1.41 0.63 0.09 -0.29 -1.5 f*
+2511.83 3187.16 -1.3 4.79 2.69 0.41 0.74 0.11 -0.57 -0.74 -1.18 -4.52 -0.17 -0.86 -0.21 0.8 f*
+7 193 59 rG
+2511.22 3177.65 -0.68 2.88 0.29 1.5 1.3 0.17 -0.91 -4.56 f*
+255 0 r6
+2512.89 2279.17 -2.14 0.74 10.89 0.89 10.89 0.87 10.87 0.87 -3.86 0.52 10.09 1.28 10.07 1.28 
+10.07 1.26 -5.21 0.22 -4.8 0.37 13.22 2.11 13.21 2.08 12.84 2.63 12.83 2.62 -7.05 -0.43 
+11.83 2.82 11.83 2.8 -7.66 -0.71 10.91 2.91 10.89 2.91 -8.14 -0.98 -7.64 -0.74 19.27 5.43 
+-7.99 -0.93 8.9 2.71 8.92 2.72 8.57 2.93 8.55 2.93 9.36 1.91 9.85 2.28 -9.2 -3.45 
+-9.22 -3.43 9.72 2.11 -10 -3.49 -10.02 -3.52 9.52 1.91 -10.89 -3.54 -10.91 -3.54 9.22 1.65 
+-11.89 -3.52 -11.91 -3.51 8.81 1.32 -13.02 -3.43 -13 -3.41 -13.5 -2.93 -13.52 -2.91 6.77 0.32 
+7.36 0.54 8 0.84 8.79 1.15 9.66 1.54 -12.32 -2.78 -12.35 -2.76 -12.33 -2.78 -7.55 -0.58 
+-6.82 -0.33 -11.35 -1.61 -11.33 -1.61 -11.35 -1.61 -11.57 -0.98 -11.59 -1 -11.59 -0.98 f*
+7 193 59 rG
+2512.65 3184.07 -0.61 2.28 0.17 0.86 1.18 4.52 0.57 0.74 2.14 0.39 -0.11 -0.41 -2.02 -2.7 
+-0.63 -2.36 -0.7 -3.32 f*
+255 203 0 rG
+2515.19 3174.35 -0.95 3.14 0.07 0.3 0.95 4.88 0.29 1.7 1.8 3.66 0.02 0.04 2.61 1 
+-0.24 4.45 1.13 1.15 2.45 0.93 2.67 0.39 2.41 -0.61 -0.67 -3.58 -0.48 -1.82 -1.32 -1.09 
+-2.75 -0.54 -0.67 -4.45 -0.22 -1.67 -1.26 -3.67 -0.54 -0.48 -2.67 -1.63 -2.61 -2.12 f*
+189 0 54 rG
+2517.12 2355.77 -2.66 -0.39 0.3 -2.17 0.64 0.09 -0.26 1.63 2.73 0.41 4.8 -0.91 -0.2 -1.72 
+-2.82 -0.61 0.78 -0.48 2.82 0.67 1.28 1.41 -0.48 0.96 -2.52 0.61 -4.41 0.5 f*
+255 35 0 rG
+2517.86 2355.34 -2.73 -0.41 0.26 -1.63 1.23 0.17 -0.08 0.57 2.82 0.43 1.67 -0.3 -0.08 -0.61 
+-2.89 -0.5 1.59 -0.96 2.82 0.61 0.2 1.72 -4.8 0.91 f*
+255 0 r6
+2515.67 3038.52 -0.5 5.23 5.34 0.39 0.57 -5.25 1.09 -10.51 -5.54 -0.39 -0.48 5.27 -0.48 5.26 f*
+255 203 0 rG
+2515.06 3411.5 0.84 1.89 5.21 -1.09 -0.96 -1.89 -5.1 1.08 f*
+0 255 r6
+2515.91 3413.39 0.3 0.69 5.41 -0.8 -0.5 -0.98 -5.21 1.09 f*
+255 135 0 rG
+2519.36 2354.47 -2.82 -0.43 0.08 -0.57 0.63 0.11 0.8 -0.52 2.89 0.5 0.08 0.61 -1.67 0.3 f*
+7 193 59 rG
+2517.08 3197.5 -0.17 0.52 0.76 0.13 -0.59 -0.65 f*
+110 210 9 rG
+2517.93 3195.05 -0.85 2.45 0.59 0.65 1.75 0.37 2.52 0.52 -2.02 -1.82 -1.99 -2.17 f*
+255 35 0 rG
+2524.2 3390.28 -1.21 0.84 2.23 0.81 0.63 -1.39 -1.65 -0.26 f*
+255 G
+2527.21 3123.2 -4.05 -0.52 0.98 -5.03 0.98 -5.08 4.25 0.54 4.23 0.57 -1.15 5.05 4.14 0.61 
+4.12 0.68 4.1 0.7 4.08 0.75 -1.52 5 -1.54 4.96 3.88 0.79 -1.65 4.95 3.78 0.8 
+-0.07 0.21 -1.69 4.71 -1.8 4.91 -3.58 -0.79 -3.13 -0.65 -0.5 -0.09 -3.62 -0.7 -3.64 -0.65 
+1.41 -4.97 -3.76 -0.61 1.3 -4.96 1.3 -5 -3.97 -0.61 1.19 -5.02 -4.08 -0.56 f*
+87 0 136 rG
+2529.23 3262.96 -5 3.13 0.74 0.65 0.74 0.67 0.7 0.67 5.23 -2.91 -0.78 -0.73 -0.8 -0.74 
+-0.82 -0.74 f*
+255 203 0 rG
+2523.2 3409.48 1.3 -1.43 0.16 -2.43 0.47 -3.73 0.09 -0.05 0.89 -0.37 0.54 0.11 4.82 -0.04 
+4.86 -0.84 4.19 -1.74 4.69 -1.11 4.96 -0.85 4.95 -0.98 4.64 -1.37 4.88 -1.17 2.93 0.24 
+0.78 0.11 4.19 0.56 2.82 0.33 -1.52 0.61 -4.58 1.78 -3.47 -2.71 -4.5 1.61 -4.55 1.55 
+3.12 2.86 -4.77 1.52 2.97 2.88 1.63 1.54 -3.97 2.69 -1.21 0.56 -3.93 1.07 -2.64 -2.95 
+-2.06 0.52 -4.45 -0.91 -6.01 -0.24 -0.11 0 -0.06 0.02 -4.06 2.52 -0.96 -1.45 -5.12 0.96 
+-1.91 0.34 f*
+110 210 9 rG
+2526.34 3201.54 -1.47 3.3 2.36 0.61 2.34 0.63 2.24 0.63 -1.54 -2 -1.93 -1.57 -2 -1.61 f*
+255 G
+2526.46 3159.12 -0.39 -0.07 0.13 -0.5 1.21 -4.27 0.02 -0.11 1.37 -4.93 3.55 0.59 3.56 0.65 
+3.54 0.7 -1.65 4.88 -0.83 2.39 -0.84 2.47 -1.7 4.84 -3.25 -0.65 -1.23 -0.21 -2.02 -0.39 
+0.41 -1.3 1.09 -3.56 -2.97 -0.52 f*
+2 239 204 rG
+2529.43 3159.63 -2.97 -0.52 1.89 4.08 1.09 -3.56 f*
+255 203 0 rG
+2529.77 3373.85 -1.34 0.36 3.06 1.76 2.93 0.61 2.41 0.61 1.02 -1.65 -1.84 -3.56 -0.11 -0.48 
+-0.8 -3.43 -3.36 -1.13 -2.97 0.91 1.47 1.73 2.8 3.3 -3.25 0.96 f*
+2 239 204 rG
+2531.18 3165.11 -1.23 -0.21 0.93 1.15 2.69 2.14 3.06 1.02 2.54 -2.43 2.04 -4.78 2.78 -2.8 
+2.21 -1.32 2.26 -0.67 4.6 -2.06 3.45 -0.02 0.37 -0.02 4.04 -0.46 3.6 0.63 4.47 -1.17 
+1.67 -0.37 3.36 -1.72 2.41 -1.99 3.97 -4.32 1.61 -1.26 4.99 -2.17 0.65 -0.54 4.47 -0.31 
+2.56 3.15 4.69 -0.59 4.95 -0.91 0.67 0.11 3.63 0.11 4.23 0.41 4.59 -0.09 1.28 -0.57 
+5.29 -3.71 0.89 -0.09 1.67 1.29 1 1.71 1.63 -0.46 3.21 0.26 0.41 1.55 1.17 2.88 
+4.52 0.3 0.26 -0.07 5.49 -1.22 3.14 -0.54 2.08 0.05 4.3 0.82 4.67 0.39 1.32 -0.63 
+6.42 -2.78 0.2 0.02 4.3 0.76 3.47 2.06 3.58 1.91 2.8 2.8 2.82 2.74 2.93 2.56 
+3.43 2.04 5.58 -0.87 1.04 -0.43 6.27 -0.84 0.91 4.71 3.77 1.78 2.24 -0.45 6.01 -2.13 
+0.41 -0.26 5.95 -2.88 2.08 0.41 1.91 3.8 2.71 2.97 0.98 1.2 1.34 2.14 0.83 4.6 
+2.37 3.2 2.84 2.73 3.49 1.45 1.43 -0.48 4.32 -2.48 6.49 -1.54 1.15 4.34 2.39 0.93 
+1.2 1.32 -0.09 0.57 -3.38 7.14 -0.04 0.3 0.98 4.21 1.91 1.04 2.82 0.3 3.91 -1.2 
+3.88 -1.28 0 -5.49 -3.82 -0.22 -2.54 -3.12 0.55 -5.75 -3.11 -2.72 -0.3 -0.21 -3.11 -2.25 
+-3.34 -2.5 2.76 -4.43 5.23 -3.69 1.73 -0.85 2.61 3.34 0.24 4.1 -1.22 2.41 -0.12 5.62 
+5.79 -0.83 1.04 0.37 2.5 0 0 -2.17 -4.36 -1.71 -1.18 -4.56 -0.61 -5.19 -0.98 -3.99 
+3.82 1.28 3.41 2.7 2.95 3.05 0.79 5.04 -0.98 3.34 -1.78 0.02 -1.08 0.02 0 2.17 
+3.88 0 -3.17 7.44 -5.6 3.28 0 5.49 2.28 -0.76 0.48 0.13 1.65 3.84 0.19 1.41 
+0.37 3.16 0.02 4.93 1.56 3.75 2.69 1.48 3.5 -0.93 2.78 2.95 -2.21 6.32 -1.2 3.36 
+-0.89 2.71 -2.02 5.86 -1.46 4.04 -1.23 2.06 -0.89 4.95 -1.11 4.99 0 4.32 -2 4.73 
+-0.3 0.72 -2.76 5.55 -2.08 5.12 -2.02 3.73 -4.43 3.12 -2.3 4.95 2.13 3.14 2.17 2.09 
+2.37 -3.86 5.02 -3.93 4.75 -0.15 1 0.15 6.07 -1.89 5.9 -4.14 0.61 -0.37 0.22 -0.02 
+5.49 -0.05 0.65 1.52 -1.7 5.23 -0.5 0.91 -4.96 5.95 -2.52 1.67 -6.64 3.73 -3.84 4.14 
+-4.5 5.82 -0.7 0.67 -7.33 4.69 -5.19 3.06 -0.37 0.24 -1.85 1.17 -7.27 5.23 -1.17 1.13 
+-3.84 4.04 -0.48 4.02 0.21 0.11 4.34 2.26 0.54 0.41 2.84 3.36 0 0.02 4.43 1.81 
+7.14 -2.87 4.99 0.74 6.84 -5.88 2.84 -1.8 2.34 0.22 -3.43 1.8 -8.62 6.01 -2.93 4.54 
+-0.36 0.56 -9.47 6.2 -4.58 1.15 -2.28 4.62 2.8 -0.02 -0.2 3.77 -3.8 4.95 3.17 -0.55 
+3.91 -5.01 3.05 -0.61 3.56 -5.08 4.71 -5.38 3.73 -2.87 4.21 -3.52 5.66 -3.95 6.95 -4.23 
+1.24 -0.85 8.92 -7.12 0.91 -1.74 1.93 -3.84 -0.04 -0.09 -5.17 -0.28 -5.73 0.86 -3.71 0.48 
+-1.48 -0.87 -6.59 2.56 -2.23 -2.48 -1.98 -0.26 -5.9 0.89 -5.26 -0.63 0 -0.02 7.49 -4.53 
+2.69 -2.82 6.05 -6.32 0.37 -0.43 7.46 -5.87 2.56 -2.06 4.52 -3.11 7.18 -6.29 0.17 -0.24 
+2.65 -5.77 2.43 -5.77 3.62 -4.95 1.81 -2.55 3.47 -6.64 -2.3 -3.43 -1.63 -0.54 -2.91 -1.56 
+-2.86 0 P
+-6.03 3.84 -2.3 2.43 -4.08 5.14 -5.97 1.39 -1.91 -0.32 -3.5 -2.59 2.65 -5.73 1.24 -5.08 
+1.88 -5.43 0.09 -0.17 -0.11 -0.17 -0.73 -3.86 -0.91 -4.02 0.71 -2.41 3.17 -4.64 1.18 -5.51 
+0.24 -0.65 3.19 -6.53 1.32 -2.19 4.16 -6.77 -0.61 -4.14 -0.09 -0.5 2.3 -7.07 -4.7 0.22 
+-5.56 3.45 -2 0.63 -0.58 0.17 -3.58 1.07 -2.91 -0.98 -1.54 -3.93 -0.68 -4.64 -0.43 -3.34 
+-0.06 -1.54 2.64 -7.55 0.04 -0.16 2.19 -7.59 -0.26 -1.71 -0.66 -3.26 -3.03 -3.04 -2.48 -3.61 
+-1.71 -4.4 -1.54 -4.66 -1.69 -4.56 0.08 -2.43 2.97 -6.29 0.07 -1.3 -0.93 -5.86 -0.98 -4.06 
+5.41 -3.54 2.11 -0.15 6.14 -0.46 0.3 0.02 6.75 -1.76 0.76 0.05 3.54 3.14 2.7 4.07 
+3.21 3.43 0.28 1.63 -0.2 5.3 -0.2 4.92 -0.37 2.43 0.72 5.82 1.17 5.18 0.04 0.68 
+-1.07 6.57 1.2 4.93 3.84 2.41 1.04 4.99 -1.39 1.78 -2.2 7.12 0.09 4.59 -1.5 2.16 
+2.3 3.61 0.18 5.25 2.43 -0.91 4.56 0.8 1.67 0.93 0 -2.93 -0.54 -0.09 -4.62 -0.59 
+-1.12 -4.53 -1.22 -4.54 0.41 -6.01 0.7 -2.28 4.04 -1.87 3.27 2.93 0.07 0.05 3.69 2.45 
+2.89 0.71 0 -3.86 -3.76 -1.91 -1.99 -4.14 -1.76 -4.38 1.61 -3.23 1.39 0.41 5.86 -0.12 
+0.46 0.3 2.41 3.86 1.39 4.82 -0.02 1.17 -3.93 2.39 -1.65 0.84 0 3.86 1.52 0.37 
+3.73 -2.37 -3.08 4.25 -4.41 7.14 -5.32 4.36 0 2.93 0.95 0.52 5.6 -3.45 2.04 -0.71 
+4.56 1.87 0.18 0.15 4.19 -2.06 0 -6.79 -0.72 0 -0.15 -2.96 -0.3 -2.47 -1.67 -4.45 
+0 -6.01 -1.61 -4.62 -2.37 -3.95 -3.21 -2 -1.24 0.04 -5.12 -1.28 -1.43 0.07 -5.6 3.19 
+-2.23 -0.54 -2.11 -4.11 0.41 -2.47 -0.29 -3.95 -1.28 -5.12 -0.16 -5.55 0.16 -1.04 0.24 -7.1 
+0.09 -2.13 -0.72 -4.2 -3.25 -3.39 -2.8 -4.01 -3.45 -3.23 -2.43 -0.11 -4.56 1.2 -3.1 -0.02 
+-3.14 0.24 -5.12 0.39 -2.5 1.54 -2.97 1.93 -0.09 1.74 1.56 5.23 0.46 4.19 -3 5.43 
+-0.24 0.48 -0.26 6.53 2.15 4.06 0.65 2.52 -3.56 5.9 -5.68 3.13 -3.54 2.28 -1.84 1.2 
+-1.73 0.3 -1.59 -4.21 0.09 -0.29 3.06 -6.36 0.82 -3.23 -1.47 -4.66 -0.7 -3.28 0.17 -2.54 
+-3.11 -3.13 -3.86 -1.3 -0.57 -0.33 -0.15 -0.37 0.79 -0.36 4.64 -3.13 4.12 -4.73 4.1 -4.77 
+-0.43 -1.99 -2.76 -3.93 -1.87 -5.21 -0.57 -2.15 5.1 -3.86 0.04 0 5.04 -3.88 3.67 -5.01 
+4.88 -1.52 4.34 1.11 0.74 0.2 5.34 1 3.99 -0.7 3.11 -0.72 3.97 -1.32 5.08 -2.82 
+0.8 -0.34 6.34 -1.13 1.65 0.02 4.94 -0.69 2.43 -0.95 4.49 -0.18 5.21 1.33 0.26 -0.02 
+5.21 0.98 4.11 -0.26 2.52 -0.46 4.1 2.88 2.93 4.5 3.28 3.95 1.72 5.95 1.3 3.34 
+-2.73 -1.45 -4.97 -1.59 -2.89 -0.61 -4.38 2.06 -1.82 0.38 -0.11 2.11 1.24 6.23 0.96 5.58 
+0.19 0.61 2.59 4.34 2.41 4.49 0.82 0.11 6.21 -2.08 0.79 0.18 1.41 -0.72 0 -8.31 
+-0.11 -0.02 -0.09 -0.31 0.21 0.15 -0.02 0.18 0 8.31 3.79 -1.93 2.71 0.67 3.65 3.09 
+3.79 2.88 0.57 -0.02 4.49 1.43 2.98 3.82 2.06 4.82 -2.58 6.23 -5.02 4.6 -3.08 7.54 
+-0.26 2.17 p
+-2.54 7.12 -1.26 2.04 -2.88 2.11 -0.8 0.61 -1.87 0.48 -5.86 2.15 -1.84 0.11 -4.5 -1.95 
+-0.78 -5.43 -0.65 -5.62 -3.58 -1 0.59 3.86 1.34 4.91 -3.02 7.21 -1.11 1.39 -2.75 3.54 
+-0.84 1.35 0 6.79 1.54 -0.76 3.86 -5.47 0.88 -1.34 0.82 -0.15 1.96 4.19 4.62 0.25 
+3 -0.99 2.73 -1.65 3.23 -3.64 1.75 -2.22 4.78 -6.42 4.46 -7.14 1.07 -2.02 0.39 -6.99 
+1.26 -3.13 4.86 -5.05 3.73 -7.96 0.52 -2.19 -2.71 -4.08 -0.39 0.02 -3.37 -2.93 -4.29 -2.3 
+-1.89 -0.19 -2.65 -1.82 -2.08 -5 -0.46 -2.8 -0.7 -3.45 -1.8 -5.53 -1.73 -5.77 -2.76 -4.51 
+-2.02 -5.62 -4.49 -2.28 -3.2 -4.17 -3.88 -3.23 -4.12 0.74 -2.62 0.17 -4.9 -1.78 -2.21 0.49 
+-3.67 -0.84 -5.86 0.24 -0.59 0.22 -6.66 0.78 -0.66 0.15 -6.14 0.82 -1.78 0.44 -5.36 3.63 
+-2.41 0.8 -4.79 1.15 -2.41 0.42 -4.88 -1.61 -5.01 -1.43 -3.21 -4.04 -2.93 -4.54 -3.39 -3.99 
+-4.12 -2.87 -4.97 -1.62 -2.45 1.56 0.26 1.89 3.69 3.53 4.02 2.96 1.63 0.97 0 -2.58 
+-0.43 -0.2 -4.06 -2.91 -0.43 -0.46 0.63 0.15 4.04 2.97 0.26 0.44 0 2.58 2.62 1.59 
+3.28 3.95 -1.73 2.93 -3.52 5.17 -1.28 0.99 -5.55 1.43 -3.12 2.3 -4.54 -0.48 2.63 3.02 
+1.61 5.62 2.76 4.01 2.24 3.32 -4.11 4.75 -5.62 3.32 -3.17 1.46 -3.45 0.95 0.91 2 
+2.08 4.28 3.65 2.5 3.12 3.02 1.45 4.77 1.26 4.82 -0.11 0.5 -3.23 6.12 -1.3 3.8 
+1.8 3.96 0.24 3.78 -5.86 1.32 -1.41 -0.43 -2.78 -1.23 -2.61 -3.08 -2.75 -2.95 -3.19 -2.56 
+-1.32 -4.41 -0.18 -1.11 -0.26 -4.34 -2.71 -3.19 -4.77 -0.24 -1.04 0.33 -4.43 -1.35 -3.21 -2.62 
+-4.03 -1.74 -2.82 -0.04 -4.75 2.34 -1.52 0.42 -4.27 -0.02 -4.34 -1.21 -3.1 -2.65 -2.08 -3.95 
+-4.17 -1.43 -4.82 -0.61 -1 0.13 -4.06 -0.3 -4.84 1.67 -2.28 0.87 -5.55 0.63 -1.24 -0.13 
+-3.34 -0.48 -4.3 -0.93 -4.01 -1.32 -3.73 -1.71 -3.54 -2.02 -3.06 -2.8 -3.05 -2.87 -4.64 -0.34 
+-5.02 0.32 -3.71 -0.34 -0.84 -0.02 -4.8 0.13 -3.93 -1.43 -3.61 -2.04 -4.56 -0.24 -4.19 1.37 
+-1.25 0.3 -4.43 -0.34 -4.61 0.17 -4.25 0.96 -0.83 0.3 -5.86 3.29 -0.07 0.02 -5.82 3.88 
+-0.17 0.13 -5.71 3.78 -0.18 0.17 -3.47 4.32 -3.1 1.85 -1.95 2.25 -2.73 4.69 -2.47 1.17 
+-3.87 0.02 -4.2 1.11 -0.92 0.39 -3.67 4.47 -1.61 2.24 -0.84 2.47 -1.7 4.84 -3.25 -0.65 p f*
+87 0 136 rG
+2536.83 3262.2 -5.19 2.97 0.76 0.76 5.25 -2.91 -0.82 -0.83 f*
+255 35 0 rG
+2534.12 3341.32 -1.89 0.89 3.93 3.02 2.02 -1 1.98 -1 1.93 -1.04 1.89 -1.07 1.87 -1.11 
+2.63 1.5 2.69 -0.76 -3.49 -1.84 1.78 -1.15 3.43 -2.39 -5 -2.28 -1.58 1.11 -1.63 1.09 
+-1.67 1.08 -1.69 1.04 -1.74 1 -1.78 1 -1.82 0.96 -1.84 0.95 f*
+0 255 r6
+2531.18 3409.63 1.11 1.72 5.25 -1.11 5.23 -1.22 3.11 -0.78 -4.45 -0.91 -6.01 -0.24 -0.11 0 
+-0.06 0.02 -4.06 2.52 f*
+87 0 136 rG
+2536.16 3292 -0.09 0.86 6.49 -0.26 -0.11 0.95 5.18 -0.2 1.34 -0.3 3.06 -1 1.17 -1.2 
+-0.76 -1.02 -1.43 -0.95 -1.81 0.19 0 -1.04 -6.49 0.73 0 0.96 -6.49 0.54 -0.02 0.87 
+-0.07 0.85 f*
+255 0 r6
+2540.13 3019.32 -0.72 5.27 5.55 0.61 0.78 -5.27 -5.62 -0.61 f*
+255 203 0 rG
+2543.71 3381.86 -0.41 -2.64 4.17 1.41 2.82 0.56 4.05 -1.02 4.12 -1.02 1.7 -2.88 3.62 -1.37 
+4.93 1.48 0.43 0.11 4.49 0.91 -1.54 -2.61 -0.91 -2.69 5.45 0.41 1.91 3.6 0.13 0.37 
+-1.82 2.86 0.98 1.61 -1.58 2.15 -4.91 1.11 -2.97 2.41 -2.41 -0.45 -3.52 -2.78 -5.08 -0.7 
+-3.95 1.32 -4.55 0.68 -1.24 -0.05 -3.9 -2.78 f*
+87 0 136 rG
+2548.59 3295.4 -0.22 1.04 3.41 -0.02 -2.54 -1.02 -0.61 -0.26 -0.04 0.26 f*
+189 0 54 rG
+2548.79 3294.33 -0.15 0.81 0.61 0.26 2.54 1.02 3.06 -0.02 -0.15 0.61 1.21 0.52 -1.45 0.43 
+-0.2 0.72 -0.37 1.15 6.45 0.15 0.24 0 -0.21 -0.12 -2.02 -1.13 1.35 -1.22 -1.02 -1.19 
+2.84 -1.05 0.54 -0.28 -0.5 0.02 -1.71 0.06 -4.75 0.18 0.2 -1.15 0.16 -1.16 0.13 -1.15 
+0.09 -1.15 0.04 -1.15 0.02 -1.13 -4.68 0.52 1.43 0.95 0.76 1.02 -1.17 1.2 -3.06 1 
+-1.34 0.3 1.3 -0.07 -0.15 1.04 f*
+255 35 0 rG
+2558.33 3250.8 -5.1 3.14 1.04 1.04 1 1.07 5.27 -3.04 1.05 1.15 5.32 -3.02 -1.13 -1.21 
+-1.17 -1.2 -1.2 -1.17 -1.24 -1.15 4.73 -3.17 -1.52 -1.06 -2.76 -0.18 -3.62 1.67 0.61 0.5 
+1.31 1.11 -4.91 3.34 1.17 1.06 1.15 1.11 f*
+87 0 136 rG
+2554.55 3297.55 -0.11 0.41 1.45 -0.43 -1.21 -0.52 -0.13 0.55 f*
+0 255 r6
+2554.51 3409.61 1.21 -0.56 3.97 -2.69 1.41 1.28 5.14 -1.68 5.08 -1.75 3.43 2.62 5.17 -1.93 
+3.62 2.47 5.25 -2.13 5.16 -2.21 4.02 2.23 3.86 2.06 0.13 0.13 2.71 2.73 3.86 2.15 
+-4.05 1.82 4.03 2.06 0.96 0.48 -4.91 3.3 -2.14 -1.17 -4.17 1.69 -2.67 0.43 -2.93 -1.8 
+7.57 -1.54 1.96 -2.45 -3.97 -2.17 -3.37 -2.43 -4.96 -1.84 -4.23 0.04 -6.14 0.15 -2.41 -0.34 
+-5.38 -0.68 -3.82 -0.54 -6.1 0.93 -0.02 2.87 2.17 3.04 3.19 2.66 -2.52 0.76 -2.95 -2.75 
+-2.91 -2.8 -2.88 -2.84 -1.37 0.39 f*
+255 35 0 rG
+2562.61 3255.34 -5.4 2.88 0.91 1.09 0.87 1.13 0.85 1.15 5.62 -2.69 -0.91 -1.19 -0.96 -1.2 
+-0.97 -1.17 f*
+255 135 0 rG
+2562.98 3239.58 -4.69 3.5 0.71 0.61 3.63 -1.67 2.76 0.18 1.52 1.06 0.24 -0.15 -1.37 -1.2 
+-1.37 -1.17 4.73 -3.52 4.71 -3.55 0.67 -0.52 -0.34 -2.28 -2.74 -0.37 -1.25 0.33 -5.64 2.84 
+1.56 1.17 -4.58 3.63 1.45 1.13 f*
+255 35 0 rG
+2560.35 3299.85 -2.02 -1.13 1.35 -1.22 -1.02 -1.19 2.84 -1.05 0.54 -0.28 5.99 -0.33 0.21 -1.34 
+6.46 -0.52 0.18 -1.43 0.11 -1.43 0.09 -1.43 -6.49 0.8 0.04 -1.32 -0.02 -1.34 6.47 -1 
+-0.07 -1.41 -0.13 -1.41 6.4 -1.28 -0.17 -1.5 -0.24 -1.5 -0.24 -1.26 2.88 0.65 1.78 1.18 
+1.48 1.28 0.8 1.45 0.2 1.59 -0.09 1.63 -0.84 1.75 -1.26 1.76 -0.8 1.69 -0.2 1.59 
+-0.48 1.61 0.49 1.52 -0.41 1.61 -0.04 1.59 1.13 1.54 -0.11 1.61 -0.74 1.61 -1.23 1.63 
+-2.17 1.57 -3.47 1.43 -1.17 1.5 -0.33 -0.02 -6.29 -0.45 0.69 -1.43 0.65 -1.41 -6.36 -0.35 
+0.57 -1.34 0.52 -1.33 0.48 -1.32 0.43 -1.34 -6.19 -0.05 -0.21 -0.12 f*
+255 203 0 rG
+2561.8 3408.29 -0.02 2.87 2.17 3.04 3.19 2.66 3.28 -1.04 3.19 2.62 1.18 0.95 6.83 -1.39 
+3.69 0.07 6.95 1.08 0.26 -0.08 0.16 0.08 7.57 -1.54 1.96 -2.45 -3.97 -2.17 -3.37 -2.43 
+-4.96 -1.84 -4.23 0.04 -6.14 0.15 -2.41 -0.34 -5.38 -0.68 -3.82 -0.54 -6.1 0.93 f*
+2567.27 3228.75 -4.34 3.77 1.58 1.13 0.02 0 5.64 -2.84 1.25 -0.33 2.74 0.37 0.34 2.28 
+3.99 -3.11 -1.67 -1.32 4.54 -3.71 3.04 -2.54 -3.43 0 -1.41 1.2 -4.45 3.78 -1.73 -1.26 
+-1.8 -1.24 -4.32 3.82 f*
+2568.79 3346.94 -0.13 -0.11 0.26 0.02 0.22 0.17 -0.35 -0.09 f*
+0 255 r6
+2574.8 3201.3 -3.61 4.25 2.29 1.2 2.23 1.21 3.78 -4.16 2.3 1.3 2.26 1.32 2.21 1.34 
+-4.05 4.06 -4.1 4.02 2 1.3 1.97 1.32 1.91 1.37 -3 2.63 3.43 0 1.45 -1.24 
+1.84 1.41 4.54 -3.77 1.89 1.5 1.84 1.54 -4.71 3.67 -0.89 0.67 0.04 2.73 3.11 -1.43 
+5.27 -3.19 2.8 -0.87 4.19 -0.16 0.57 -0.06 4.56 -0.7 2.28 1.37 0.58 2.52 -1.02 3.49 
+-0.26 0.22 0.46 2.47 1.5 -0.7 6.5 -1.78 0.52 -0.09 -0.26 0.43 -3.95 4.93 -0.02 0.07 
+-1 3.17 2.11 1.43 1.91 -0.28 2.02 -1.89 2.52 -2.64 3.58 -0.85 3.11 1.05 1.56 0.82 
+1.41 0.35 2.71 1.34 4.28 -0.02 0.87 0.11 0.48 2.43 0 0.2 0.09 -0.02 3.17 1.2 
+1.45 2.13 1.43 2.15 1.78 1.97 2.47 1.67 0.76 0.34 1.54 1.48 3.11 1.48 3.09 0.13 
+2.4 0.43 0.52 2.67 1.28 2.36 0.67 2.61 0.72 2.59 0.8 2.56 -1.96 3.47 -0.26 2.84 
+1.98 2.17 0.15 2.75 -0.63 2.93 -0.24 2.82 -3.11 2.43 -4.05 2 0 2.65 -0.43 2.73 
+2.8 2.11 0.02 0.02 0.93 2.54 -1.2 2.91 -1.98 2.45 -0.41 0.63 -3.21 3.08 -4.99 3 
+-0.46 0.24 -6.29 3.08 -1.67 2.64 -1.37 2.61 -1 2.61 -0.78 2.6 3.34 2.06 6.75 -0.85 
+2.56 1.39 -4.32 1.41 -6.19 -0.11 -2.52 1.39 -0.09 2.43 0 0.29 -0.65 0.63 -1.76 2 
+-2.21 2.61 -1.56 2.46 -0.02 0.19 -0.32 2.8 -2 2.62 -1.04 2.8 -2.06 2.65 0.65 1.04 
+1.61 2.41 -0.13 2.49 5.68 0.96 7.4 -0.71 5.67 -0.02 1.45 -0.56 6.66 -0.26 2.32 -1.57 
+-0.17 -0.67 -2.56 -2.86 4.02 -3.06 4.38 -3.11 -3.08 -1.21 -0.3 -2.08 1.11 -3.13 2.06 -3.12 
+2.25 -3.13 2.28 -3.17 2.11 -3.17 4.12 -3.38 0.96 -0.5 6.4 -3.36 -0.93 -2.97 -1.71 -1.22 
+-0.58 -1.54 0.13 -3.04 -3.38 -0.52 -1.43 -1.74 2.54 -3.34 1 -0.65 6.75 -2.26 4.62 -2.47 
+2.65 -1.73 2.56 -2.58 1.54 -3.54 4.04 -3 6.54 -2.78 5.92 0.52 1.08 0.3 -1.67 2.63 
+-1.17 1.61 -3.69 4.34 -3.54 4.19 -1.15 3.56 2.61 2.73 -2.32 3.82 -4.45 4.14 -0.13 0.06 
+-7.81 4.11 -1.8 0.58 -3.16 3.59 -3.85 3.6 -1.65 3.32 -0.15 3.23 1.17 2.15 0.15 1.04 
+-1.41 3.38 -2 3.41 2.2 2.02 0.97 1.32 -2.06 3.49 -1.32 3.52 -2.3 3.54 -8.03 2.73 
+-6.29 0.02 -3.09 3.23 -2.73 3.28 4.84 0.56 5.75 0.57 5.8 0.48 -3.78 3.5 -3.93 3.47 
+5.67 0.61 -2.7 2.3 5.95 -1.75 0 -3.43 -1.24 -0.84 3.67 -3.6 2.52 -0.18 2.54 0.45 
+-4.45 3.65 -3.04 0.52 0 3.43 0.58 -0.18 4.21 -1.95 7.25 -1 0.5 -0.3 -0.02 -0.15 
+-0.8 -3.86 7.61 -2.82 2.87 -1 7.29 -3.54 0.72 -0.61 0.43 -0.65 0.04 -3.28 4.71 -4.19 
+-2.78 -1.82 -5.36 -0.62 -1.61 -0.68 -2.97 -0.98 -5.34 -0.8 0.63 -1.45 1.54 -3.63 1.97 -3.64 
+2.45 -3.71 2.41 -3.73 3.04 -3.84 2.26 -3.78 1.07 -3.6 2.9 -3.97 2.56 -3.93 0.55 -0.84 
+3.4 -3.47 4.02 -4.47 -1.35 -3.15 5.1 -4.42 0.71 -0.7 5 -5.08 2.56 -4.34 4.14 -1.56 
+2.21 -0.84 0.09 0.05 5.99 -1.07 1.5 -1.69 5.25 -5.92 0.43 -0.63 3.17 -4.84 3.67 -4.43 
+0.91 -1.65 P
+-0.8 -0.35 -4.38 2.71 -1.87 1.56 -6.47 5.42 -2.75 1.59 -3.78 3.27 -5.25 0.55 -0.8 0.07 
+-0.34 0 -5.71 0.52 -4.58 -0.39 -0.93 -3.19 1.61 -4.14 -1.5 -0.87 -2.06 -1.3 -4.06 -0.34 
+-4.21 0.08 -2 -0.82 -5.27 0.21 -1 -0.15 -4.6 -1 -1.84 -2.02 -0.35 -0.39 0.2 -1.45 
+0.24 -1.98 -0.46 -0.3 -1.99 -1.95 0.98 -3.69 -1.02 -2.84 -1.75 -2.52 -3.08 -1.87 -2.26 -2.23 
+-0.62 -0.41 -2.46 -1.37 0.63 -3.65 -1.23 -2.73 -3.13 -1.7 -3.75 -1.3 -1.15 -0.12 -2.24 -1.35 
+-5.23 0.74 -1.37 -0.3 0.39 -1.57 1.73 -2.99 1.41 -4.3 -5.01 -0.32 -2.08 -2.15 -2.52 -0.78 
+-1.24 -0.24 -3.02 -1.48 -2.67 -1.68 -1.17 -2.71 -4.69 -0.21 -0.02 0.02 -6.81 1.43 -0.13 0.02 
+-5.21 0.41 -2.96 -0.22 -1.37 0 0 -1.43 0.22 -2.17 -2.25 0.13 -2.02 -0.28 -3.21 -0.93 
+-0.39 -3.23 -0.34 -0.98 0.5 -2.86 -2.24 -1.8 -3.77 0.2 -2.21 1.41 -2.95 1.97 -4.39 1 
+-3.64 0.26 -0.43 -0.16 -2.91 -0.93 -2.99 -0.8 -2.32 -1.43 -0.82 -3.02 0 -0.04 -2.37 -1.46 
+-0.11 0.02 -3.99 0.43 -3.54 -0.08 -3.41 -0.17 -0.09 0.02 -5.23 2.14 -0.74 0.89 p f*
+0 155 255 rG
+2574.89 3081.92 -1.67 1.46 0.21 3.32 1.65 -2.93 -0.2 -1.84 f*
+255 203 0 rG
+2576.8 3340.91 -1.39 -0.89 3.56 -1.11 0.41 -0.21 0.43 0.5 0.22 2.34 -3.23 -0.63 f*
+0 255 r6
+2574.79 3419.4 2.06 1.61 6.05 -2.08 2.76 1.93 1.67 0.15 4.92 -1.84 -6.95 -1.08 -3.69 -0.07 
+-6.83 1.39 f*
+255 203 0 rG
+2579.67 3394.36 0.37 -0.13 1.34 -0.43 3.28 -1.08 0.33 -0.18 3.97 -1.95 3.95 -2.3 3.84 -2.35 
+0.89 -0.57 2.91 -1.82 3.36 -2.56 4.93 -1.95 4.91 -2.04 3.34 -2.62 3.75 -2.52 3.95 -2.5 
+3.02 -2.75 2.02 -2.97 0 -1.09 -5.46 -1.21 -5.21 -1.48 -5.36 -1.39 -4.34 -2.28 -3.84 -1.67 
+1.39 -2.21 0.2 -0.26 0.43 -0.29 2.84 -1.78 1.82 -2.39 0.02 -0.04 0.39 -2.63 2.25 -2.28 
+2.26 0.04 4.92 -1.61 2.74 -2.34 2.02 -2.45 -2.39 -1.91 -2.45 -1.17 -2.37 -0.98 -5.19 -1.71 
+-5.9 -0.87 -2.87 -0.7 -1.47 -2.25 0.02 -0.16 0.3 -2.14 2.3 -1.41 1.15 -0.46 5.84 -1.82 
+1.5 -0.93 1.97 -1.17 2.71 -1.89 0.44 -0.3 4.12 -1.95 0.48 -0.35 2.73 -2.37 5.18 -1.97 
+2.3 -0.78 0.7 -2.43 0.93 -2.45 -1.5 -0.87 -2.45 -1.09 -0.07 -2.28 0.48 -2.34 1.17 -2.46 
+1.15 -2.49 0.04 -2.3 -0.71 -2.17 0.21 -2.34 3.91 -2.45 1.26 -1.02 1.95 -2.88 2.97 -3.23 
+0.21 -0.84 0.85 -1.93 -1.02 -0.93 -0.52 -1.08 -1.97 -1.87 -4.45 -1.02 1.13 -2.8 2.71 -3.45 
+-5.1 -0.02 -1.93 0.11 -4.64 0.39 -3.3 0.11 -3.49 -0.3 -1.8 -0.07 -2.91 -1.17 -2.21 -1.39 
+-1.39 -1.65 -0.02 -0.02 -1.54 -1.61 -2.17 -1.3 -1.95 -1.37 -2.19 -1.26 -2.39 -1.11 -0.02 -0.02 
+-3.21 -0.65 -3.73 1.29 -2.76 -0.3 -1.25 -1.5 1.41 -2.21 1.65 -1.54 -1.3 -1.57 -2.64 -0.78 
+-0.59 -0.02 -1.06 -1.31 -1.29 -1.54 5.26 -3.21 5.2 -3.28 -0.78 -0.87 0.13 -1.3 -1.11 0.26 
+-1.29 -1.32 -5.05 3.4 -1.5 -1.52 -1.57 -1.5 -1.58 -1.47 -1.63 -1.45 3.85 -2.93 0.04 2.73 
+3.11 -1.43 5.27 -3.19 2.8 -0.87 4.19 -0.16 0.57 -0.06 4.56 -0.7 2.28 1.37 0.58 2.52 
+-1.02 3.49 -0.26 0.22 0.46 2.47 1.5 -0.7 6.5 -1.78 0.52 -0.09 -0.26 0.43 -3.95 4.93 
+-0.02 0.07 -1 3.17 2.11 1.43 1.91 -0.28 2.02 -1.89 2.52 -2.64 3.58 -0.85 3.11 1.05 
+1.56 0.82 1.41 0.35 2.71 1.34 4.28 -0.02 0.87 0.11 0.48 2.43 0 0.2 0.09 -0.02 
+3.17 1.2 1.45 2.13 1.43 2.15 1.78 1.97 2.47 1.67 0.76 0.34 1.54 1.48 3.11 1.48 
+3.09 0.13 2.4 0.43 0.52 2.67 1.28 2.36 0.67 2.61 0.72 2.59 0.8 2.56 -1.96 3.47 
+-0.26 2.84 1.98 2.17 0.15 2.75 -0.63 2.93 -0.24 2.82 -3.11 2.43 -4.05 2 0 2.65 
+-0.43 2.73 2.8 2.11 0.02 0.02 0.93 2.54 -1.2 2.91 -1.98 2.45 -0.41 0.63 -3.21 3.08 
+-4.99 3 -0.46 0.24 -6.29 3.08 -1.67 2.64 -1.37 2.61 -1 2.61 -0.78 2.6 3.34 2.06 
+6.75 -0.85 2.56 1.39 -4.32 1.41 -6.19 -0.11 -2.52 1.39 -0.09 2.43 0 0.29 -0.65 0.63 
+-1.76 2 -2.21 2.61 -1.56 2.46 -0.02 0.19 -0.32 2.8 -2 2.62 -1.04 2.8 -2.06 2.65 
+0.65 1.04 1.61 2.41 -0.13 2.49 5.68 0.96 7.4 -0.71 5.67 -0.02 1.45 -0.56 6.66 -0.26 
+2.32 -1.57 -0.17 -0.67 -2.56 -2.86 4.02 -3.06 4.38 -3.11 -3.08 -1.21 -0.3 -2.08 1.11 -3.13 
+2.06 -3.12 2.25 -3.13 2.28 -3.17 2.11 -3.17 4.12 -3.38 0.96 -0.5 6.4 -3.36 -0.93 -2.97 
+-1.71 -1.22 -0.58 -1.54 0.13 -3.04 -3.38 -0.52 -1.43 -1.74 2.54 -3.34 1 -0.65 6.75 -2.26 
+4.62 -2.47 P
+2.65 -1.73 2.56 -2.58 1.54 -3.54 4.04 -3 6.54 -2.78 5.92 0.52 1.08 0.3 -1.67 2.63 
+-1.17 1.61 -3.69 4.34 -3.54 4.19 -1.15 3.56 2.61 2.73 -2.32 3.82 -4.45 4.14 -0.13 0.06 
+-7.81 4.11 -1.8 0.58 -3.16 3.59 -3.85 3.6 -1.65 3.32 -0.15 3.23 1.17 2.15 0.15 1.04 
+-1.41 3.38 -2 3.41 2.2 2.02 0.97 1.32 -2.06 3.49 -1.32 3.52 -2.3 3.54 -8.03 2.73 
+-6.29 0.02 -3.09 3.23 -2.73 3.28 -0.89 -0.11 -3.54 3.15 -5.6 -0.89 -3.58 3 -2.15 1.74 
+-4.04 0.65 -2.86 -0.65 -2.17 1.63 -3.19 0.72 -3.58 -0.98 -3.69 2.63 -3.82 2.54 -3.93 2.5 
+-4.02 2.43 -4.12 2.39 -4.21 2.3 -4.29 2.24 4.32 2.14 -4.54 2.26 -4.66 2.19 -1.37 0.63 
+-6.32 -0.37 -0.93 -0.57 -2.52 -1.63 p f*
+2586.07 3336.46 -4.69 0.44 0.2 -1.63 2.64 -1.48 0.37 -0.02 0.04 0.13 1.43 2.56 f*
+2585.25 3339.95 -2.52 -2.16 4.66 0.19 1.32 1.43 -3.47 0.54 f*
+2587.26 3357.21 -2.28 0.48 0.26 -0.37 0.54 -0.67 0.65 0.02 0.82 0.55 f*
+0 255 r6
+2583.12 3396.55 2.95 1.84 3.37 -1.48 -6.32 -0.37 f*
+110 210 9 rG
+2585.66 3420.86 0.71 0.5 0.96 -0.35 -1.67 -0.15 f*
+255 G
+2596.59 3077.75 -4.75 -1.17 1.74 -5.12 1.69 -5.14 1.67 -5.16 1.65 -5.19 1.61 -5.18 5.1 1.21 
+5.08 1.26 -1.75 5.17 4.96 1.3 4.95 1.37 4.9 1.41 4.88 1.48 2.04 -5.16 4.91 1.52 
+4.88 1.59 4.84 1.63 0.93 0.3 2.36 0.85 1.5 0.52 -0.68 1.5 -1.07 2.37 -0.58 1.28 
+-2.34 5.1 -4.67 -1.67 -2.32 5.1 -4.62 -1.61 -2.3 5.08 -4.58 -1.54 -4.62 -1.5 -4.66 -1.43 
+-4.69 -1.39 -2.02 5.1 -4.67 -1.33 -1.97 5.08 -4.6 -1.26 -4.64 -1.24 1.84 -5.1 f*
+255 203 0 rG
+2597.92 3341.41 -3.5 -2.93 6.55 -0.11 6.14 0.3 0.41 -0.02 1.22 0.33 2.04 2.93 -2.93 2.04 
+-6.62 1.13 -1.98 2.13 -1.63 0.87 0.59 -1.15 2.67 -1.93 -2.71 -3.2 -0.26 -0.39 f*
+110 210 9 rG
+2595.59 3420.96 0.61 0.37 2.07 -0.8 -2.67 0.43 f*
+0 255 r6
+2599.16 3233.03 0.26 0.29 0.71 0.76 0.13 -1.3 -1.11 0.26 f*
+110 210 9 rG
+2602.04 3407.45 -0.2 -0.11 0.13 0.13 2.71 2.73 3.86 2.15 1.75 -0.79 -4.16 -2.04 -4.1 -2.08 f*
+2604.58 3420.01 1.78 0.93 6.27 -2.72 -3.14 -1.52 -4.91 3.3 f*
+255 35 0 rG
+2619.38 3272.46 -2.93 2.54 1.52 1.67 1.57 1.69 0.52 0.76 1.09 -1.15 4.27 -3.28 0.52 -2.13 
+0 -0.23 -0.02 0 -6.53 0.13 f*
+0 255 r6
+2627.34 3373.66 1.65 0.43 1.54 -1.15 -3.19 0.72 f*
+189 0 54 rG
+2630.79 2439 -1.45 -1.37 3.82 0.52 0.26 1.79 -2.63 -0.93 f*
+0 155 255 rG
+2634.79 3047.18 -1.84 0.86 0.63 2.37 4.08 3.93 2.78 1.8 1.69 0.95 4.1 3.54 -0.3 3.21 
+2.36 0.85 1.15 -5.54 4.3 -3 1.43 -0.95 3.21 -4.84 3.88 -0.82 4.52 2.78 1.8 1.8 
+-1.74 5.41 -4.84 4.21 -0.96 1.2 -2.43 3.55 -3.97 4.54 -2.13 1.02 -1.69 0.83 -0.41 -3.45 
+-1.3 -4.71 -1.07 2.37 0.46 1.64 0.24 6.08 0.22 1.95 5.08 0.72 4.03 2.78 5.19 0.52 
+0.21 -0.04 -0.04 -0.28 -3.23 -4.38 -1.5 -3.45 3.59 -4.69 3.69 -4.62 0.74 -0.46 6.14 -2.93 
+1.8 -1.85 4.32 -1.82 2.78 -1.04 3.41 -2.61 1.82 -5.45 -0.48 -2.06 -5.14 -1.54 -1.48 0.71 
+-5.1 1.02 -4.56 1.39 -1.98 0.3 -5.25 -1.19 -5.99 0.63 -0.59 0.08 -2.45 0.35 -4.21 4.49 
+-0.8 0.8 -0.73 -1.32 -2.87 -3.73 -4.58 -2.8 -5.99 0.89 f*
+255 0 r6
+2643.71 2298.18 -10.68 -2.02 11.72 3.38 11.7 3.36 11.72 3.39 12.61 3.3 -12.35 -3.8 -12.37 -3.82 
+-12.35 -3.79 f*
+0 255 r6
+2635.57 3371.96 2.5 0.54 1.54 -1.19 -4.04 0.65 f*
+255 G
+2650.57 2978.06 -5.88 -1.43 1.32 -5.36 1.31 -5.41 5.99 1.43 1.32 -5.4 1.28 -5.41 6.06 1.46 
+1.28 -5.43 1.26 -5.42 1.21 -5.45 6.17 1.5 1.19 -5.45 1.2 -5.47 6.2 1.54 1.18 -5.49 
+1.13 -5.49 1.09 -5.5 6.29 1.57 1.09 -5.54 6.29 1.61 1.08 -5.54 6.3 1.65 6.27 1.7 
+-1.15 5.55 -1.2 5.56 -1.24 5.53 -6.16 -1.73 -1.24 5.54 -1.3 5.51 -6.1 -1.7 -1.3 5.49 
+-1.35 5.47 -6.05 -1.65 -1.34 5.46 -6.05 -1.63 -1.33 5.45 -1.39 5.44 -1.43 5.43 -5.95 -1.58 
+-1.39 5.42 -1.45 5.41 -5.88 -1.54 -1.46 5.38 -5.86 -1.49 f*
+2 239 204 rG
+2649.43 3059.16 -1.15 5.54 1.5 0.52 -0.68 1.5 1.3 4.71 0.41 3.45 1.69 -0.83 0 -2.73 
+-0.7 -5.36 1.65 -5.38 5.01 -4.19 2.7 -5.01 0.32 -0.07 0.5 0.37 -1.65 5.4 -1.87 5.34 
+-2.59 5.06 -3.38 3.84 0 2.73 2.13 -1.02 3.97 -4.54 2.43 -3.55 0.96 -1.2 4.84 -4.21 
+1.74 -5.41 -1.8 -1.8 -4.52 -2.78 -3.88 0.82 -3.21 4.84 -1.43 0.95 -4.3 3 f*
+255 G
+2653.52 3109.46 -4.06 -1.87 2.86 -4.93 2.8 -4.97 2.78 -4.99 2.73 -5.02 4.36 1.91 2.75 -5.01 
+4.41 1.97 2.78 -5.05 2.73 -5.05 4.49 2.06 2.76 -5.1 -4.56 -2.06 2.64 -5.14 2.61 -5.14 
+2.54 -5.18 4.78 2.11 4.7 2.14 2.63 -5.18 4.73 2.21 4.67 2.28 -2.76 5.17 -2.82 5.14 
+-2.86 5.12 -2.93 5.1 -2.97 5.05 -3.02 5.04 -3.06 4.99 -4.18 -2.19 -3.06 4.97 -4.17 -2.12 
+-4.23 -2.09 -2.95 4.97 4.16 2.06 4.1 2.13 4.04 2.17 3.99 2.23 -3.29 4.88 -3.35 4.86 
+-3.38 4.79 -3.78 -2.17 -3.36 4.8 -3.73 -2.11 -3.34 4.79 -3.73 -2.04 -3.77 -1.97 -3.8 -1.93 
+3.11 -4.84 -3.95 -1.91 2.97 -4.88 f*
+7 193 59 rG
+2653.47 3060.57 -1.65 5.38 0.7 5.36 3.38 -3.84 2.59 -5.06 1.87 -5.34 1.65 -5.4 -0.5 -0.37 
+-0.32 0.07 -2.7 5.01 -5.01 4.19 f*
+110 210 9 rG
+2657.23 3157.95 -0.24 1.82 1.69 -0.83 0.44 -1.61 -1.89 0.61 f*
+2672.96 3370.72 -1.24 -0.84 3.67 -3.6 2.52 -0.18 2.54 0.45 -4.45 3.65 -3.04 0.52 f*
+0 255 r6
+2677.13 3378.08 -0.46 0.24 0.02 0.11 0.13 -0.09 0.31 -0.26 f*
+7 193 59 rG
+2683.98 3387.5 0.35 0.04 5.66 0.39 5.71 0.29 5.14 -4.34 -5.79 -0.16 -4.77 -0.2 -3.86 2.34 
+-2.43 1.63 f*
+2702.06 3375.17 2.52 -0.02 2.06 -1.97 -4.58 1.99 f*
+2 239 204 rG
+2707.71 3187.02 -2.46 -2.69 2.96 -5.73 3.71 0.07 4.79 0.83 0.39 -0.02 6.58 -1.93 1.43 -0.24 
+3.86 1.75 1.25 4 -0.69 2.56 -4.66 4.6 -4.49 0.76 -3.69 -1.78 -0.28 -0.05 -5.49 -0.04 
+-3.21 -2.08 f*
+7 193 59 rG
+2711.71 3379.38 -5.03 4.54 5.91 -0.09 -1.46 1.3 3.1 -1.34 0.57 -1.96 -1.73 -2.49 -1.35 0.04 f*
+0 255 r6
+2707.46 3366.52 -0.48 0.17 0.07 0.26 0.71 -0.3 -0.3 -0.13 f*
+2 239 204 rG
+2711.13 3385.13 -3.88 3.32 5.83 -0.05 0.05 -0.02 9.27 -4.95 6.84 -5.04 -5.54 0.41 -6.01 0.35 
+-4.62 0.17 1.73 2.49 -0.57 1.96 -3.1 1.34 f*
+0 155 255 rG
+2713.11 3388.41 -5.62 4.69 4.95 0 3.91 -2.56 2.67 -2.3 1.89 -0.09 7.18 -2.99 2.45 -2.26 
+5.34 -5.12 3.04 -0.33 7.66 -5.57 -5.6 0.75 -6.18 0.72 -5.04 5.01 -0.52 0.05 -6.84 5.04 
+-9.27 4.95 -0.05 0.02 0.02 0 f*
+0 255 r6
+2713.63 3318.17 -2.86 2.78 1.04 0.8 5.25 0.98 3.65 -3.61 -0.92 -1.73 -6.16 0.79 f*
+2712.61 3243.96 -0.07 0.72 0.26 0.28 1.26 2.6 0.69 3.26 3.32 2.08 2.28 -0.71 5.23 0.95 
+1.29 1.09 3.49 0.45 2.52 0.02 0 -4.19 -1.34 -0.16 -1.35 -3.14 1.87 -3.3 3.58 0.59 
+-1.54 4.64 -1.21 1.37 0 4.19 0.3 0 3.55 -3 2.3 -2.61 5.25 -5.05 0.43 -0.85 
+5.73 -4.62 5.84 -3.47 2.28 -3.05 3.02 -3.34 5.36 -5.32 0.76 -1.34 -1.09 -0.16 -5.2 -0.39 
+-1.41 0.15 -5.95 2.61 -5.99 2.34 -5.9 2.73 -4.3 1.98 -1.73 0.39 -0.13 -0.07 -3.19 -1.52 
+-2.38 -2.67 -1.22 -3.36 3.23 -4.52 2.56 -1.86 0 -9.03 -0.98 -0.43 -1.24 -3.58 0.11 -0.46 
+1.24 -0.52 3.96 1.76 -3.1 3.23 0 9.03 2.86 -2.09 5.43 -3.93 5.56 -3.51 5.88 -2.65 
+2.21 -4.19 -3.73 -2.06 -1.28 -0.26 -5 0.09 -2.9 -1.56 -1.11 -0.22 -6.01 -0.24 -0.52 -0.18 
+-6.05 2.36 -1.09 3.39 -0.95 5.1 0.02 1.87 -0.57 2.82 -1.39 5.14 -0.76 2.17 -1.43 3.27 
+2.1 2.8 -0.06 4.04 -2.54 4.95 -2.73 1.84 -2.98 1.82 -5.36 5.46 f*
+255 0 r6
+2712.43 3393.1 0.87 -0.02 3.04 -2.54 -3.91 2.56 f*
+7 193 59 rG
+2711.63 3370.71 3.47 -0.18 2.11 -2.14 -5.58 2.32 f*
+255 0 r6
+2722.07 2690.39 -6.46 -0.79 0.95 5.45 0.88 5.47 0.82 5.49 6.54 0.87 0.78 5.53 0.73 5.54 
+0.67 5.55 0.61 5.55 0.56 5.55 0.48 5.58 6.6 1.09 0.46 5.62 6.57 1.15 0.42 5.64 
+6.53 1.22 0.35 5.68 6.54 1.26 -0.37 -5.73 -0.41 -5.71 -0.5 -5.7 -0.54 -5.71 -0.61 -5.69 
+-0.67 -5.68 -6.47 -1.07 -0.71 -5.66 -0.78 -5.62 -0.85 -5.62 -6.45 -0.96 -0.89 -5.58 -0.96 -5.55 
+-1.02 -5.55 -1.06 -5.54 -6.36 -0.8 -6.41 -0.76 1.04 5.47 f*
+7 193 59 rG
+2720.21 3259.16 -3.06 -2.26 3.38 -3.08 2.52 0.47 -1.08 4.13 -1.04 1.17 -0.71 -0.44 f*
+255 0 r6
+2720.9 3388.15 4.08 -0.19 3.11 -2.8 -7.18 2.99 f*
+255 203 0 rG
+2732.05 3243.92 -1.87 3.3 1.35 3.14 1.34 0.16 1.21 -1.37 1.54 -4.64 -3.58 -0.59 f*
+2732.9 3204.21 -0.11 0.46 1.24 3.58 0.98 0.43 3.1 -3.23 -3.96 -1.76 -1.24 0.52 f*
+7 193 59 rG
+2740.61 3223.66 -4.61 0.5 0.61 -4.58 1.95 -2.09 5.28 -4.34 5.9 -2.66 1.56 -0.5 4.88 -0.65 
+2.63 0.15 -1.29 3.71 -5.21 4.82 -4.84 1.95 0 -2.97 4.21 -0.98 2.6 -3.47 -3.69 0.3 
+-3.12 4.15 0 2.97 -1.15 0.46 -5.73 3.23 f*
+2 239 204 rG
+2733.81 3360.3 2.23 -0.28 1.8 -2.15 -4.03 2.43 f*
+255 0 r6
+2738.91 3377.45 3.1 -0.37 6.19 -0.84 -5.45 5.4 6.17 -0.82 5.53 -5.55 6.27 -1.11 6.31 -1.26 
+6.38 -1.41 5.4 -6.04 6.45 -1.71 5.14 -6.21 6.51 -2.02 4.88 -6.36 4.58 -6.38 6.55 -2.45 
+4.32 -6.49 4.04 -6.49 6.55 -2.87 3.73 -6.59 6.53 -3.15 3.43 -6.66 3.17 -6.61 -6.49 3.38 
+-6.46 3.23 -3.23 6.39 -6.49 2.97 -3.52 6.31 -6.51 2.67 -3.78 6.21 -4.05 6.2 -6.51 2.28 
+-4.3 6.1 -4.58 6.1 -6.46 1.82 -4.82 5.95 -6.4 1.56 -5.05 5.77 -6.34 1.26 -6.29 1.13 
+-6.23 0.98 -0.61 0.11 -7.66 5.57 f*
+7 193 59 rG
+2745.21 3134.14 -0.79 0.36 0.15 0.37 0.57 0.33 3.86 1.3 3.11 3.13 -0.17 2.54 0.7 3.28 
+1.47 4.66 -0.82 3.23 -3.06 6.36 -0.09 0.29 1.59 4.21 1.73 -0.3 1.84 -1.2 0 -1.87 
+-2.49 -3.43 1.39 -2.95 1.54 -5.99 -1.3 -3.54 5.7 -1.06 2.15 4.06 -0.24 6.12 -0.12 0.39 
+-4 4.75 -2.63 1.65 0 1.87 3.54 -2.28 5.68 -3.13 3.56 -5.9 -0.65 -2.52 -2.15 -4.06 
+0.26 -6.53 0.24 -0.48 3 -5.43 -0.46 -4.19 -1.56 -5.23 0.09 -1.74 2.97 -1.93 2.5 -1.54 
+5.12 -0.39 3.14 -0.24 3.1 0.02 4.56 -1.2 2.43 0.11 3.45 3.23 2.8 4.01 3.25 3.39 
+0.72 4.2 -0.09 2.13 -0.24 7.1 -0.16 1.04 0.16 5.55 1.28 5.12 0.29 3.95 -0.41 2.47 
+2.11 4.11 2.23 0.54 5.6 -3.19 1.43 -0.07 5.13 1.28 1.24 -0.04 3.21 2 2.37 3.95 
+1.61 4.62 0 6.01 1.67 4.45 0.3 2.47 0.15 2.96 0.72 0 0.84 -1.35 2.75 -3.54 
+0 -4.84 -2.71 -1.82 -1.08 -0.71 -1.13 -5.04 -1.84 -4.43 -2.32 -4.01 -2.73 -3.64 -3.54 -0.52 
+-1.96 -0.41 -3.93 0.19 -1.48 0.06 -2.23 0.96 -3.95 -2.36 -1.22 -5.14 -1.41 -5.03 -0.06 -3 
+0.56 -4.17 0.16 -5.93 0.08 -1.24 -1.28 -5.62 -3.32 -3.37 -2.87 -3.93 -3.38 -3.34 -4.12 -0.18 
+-2.34 0.63 -5.91 -0.02 -0.2 0.02 -6.42 0.48 -2.08 -0.24 -4.88 4.05 -0.24 4.88 1.98 4.71 
+0.15 1.37 -2.89 1.71 -3.08 1.2 -0.16 0.09 -4.96 3.69 -1.56 -0.76 -1.78 -2.69 -0.54 -1.36 
+2.9 -5.14 4.14 -4.73 -0.91 -4.41 -2.88 -3.82 -1.15 -4.69 4.36 -4.45 4.77 -4.14 3.84 -4.9 
+2.47 -0.76 5.29 1.02 2.21 0.05 3.39 0.57 5.58 -0.96 1.43 -0.35 5.52 -1.82 3.13 -1.71 
+2.97 -1.24 4.6 -0.8 3.7 0.02 2.67 -0.36 4.28 -1.7 3.12 -0.11 4.77 1.91 2.54 -0.11 
+3.25 0.63 5.6 -0.37 0.89 -0.15 4.34 2.54 2.67 4.84 1.96 4.86 -5.21 -0.44 -4.47 -1.5 
+-0.7 0.15 -5.99 1.82 -3.84 5.45 -0.09 5.6 2.73 4.27 2.56 4.45 1.84 5.21 1.54 3.46 
+-0.95 3.04 0.17 6.82 0.11 1.65 -2.97 8.07 0 0.07 2.19 4.32 1.06 5.41 0.68 5.64 
+0.97 5.27 -0.41 6.45 0 4.84 1.11 -1.39 3.02 -7.21 -1.34 -4.91 -0.59 -3.86 3.58 1 
+0.65 5.62 0.78 5.43 4.5 1.95 1.84 -0.11 5.86 -2.15 1.87 -0.48 0.8 -0.61 0 -6.49 
+-3.17 -3.28 -3.34 -3.13 -0.21 -6.33 0.5 -7.23 -0.07 -1.04 -1.3 -4.37 1.34 -8.55 0.3 -0.8 
+0.76 -0.41 4.21 -3.89 3.95 1.67 3.47 3.28 2.25 -0.02 3.15 1 2.28 4.62 1.45 5.46 
+-1.06 2.54 -4.71 3.8 -0.54 0.11 -0.65 1.15 -3.5 5.89 -2.91 7.36 -0.67 1.89 -0.43 0.09 
+-1.11 0.2 0 6.49 2.88 -2.11 1.26 -2.04 2.54 -7.12 0.26 -2.17 3.08 -7.54 5.02 -4.6 
+2.58 -6.23 -2.06 -4.82 -2.98 -3.82 -4.49 -1.43 -0.57 0.02 -3.79 -2.88 -3.65 -3.09 -2.71 -0.67 
+-3.79 1.93 -1.41 0.72 -0.79 -0.18 -6.21 2.08 -0.82 -0.11 -2.41 -4.49 -2.59 -4.34 -0.19 -0.61 
+-0.96 -5.58 -1.24 -6.23 0.11 -2.11 1.82 -0.37 4.38 -2.06 2.89 0.61 4.97 1.59 2.73 1.45 
+-1.3 -3.34 -1.72 -5.95 -3.28 -3.95 -2.93 -4.5 -4.1 -2.88 -2.52 0.46 -4.11 0.26 -5.21 -0.98 
+-0.26 0.02 P
+-5.21 -1.33 -4.49 0.18 -2.43 0.95 -4.94 0.69 -1.65 -0.02 -6.34 1.13 -0.8 0.34 -5.08 2.82 
+-3.97 1.32 -3.11 0.72 -3.99 0.7 -5.34 -1 -0.74 -0.2 -4.34 -1.11 -4.88 1.52 -3.67 5.01 
+-5.04 3.88 -0.04 0 -5.1 3.86 0.57 2.15 1.87 5.21 2.76 3.93 0.43 1.99 -4.1 4.77 
+-4.12 4.73 -4.64 3.13 p f*
+2 239 204 rG
+2751.7 3216.02 -4.21 0.98 3.12 -4.15 3.69 -0.3 -2.6 3.47 f*
+2751.73 3254.58 -2.69 -0.87 1.54 -4.79 0.89 -0.61 5.81 -5.25 5.64 -4.86 0.11 -0.09 0.09 -0.02 
+2.26 3.06 -1.26 4.97 -0.37 0.5 -5.93 6.45 -6.1 1.52 f*
+255 G
+2764.71 3500.33 -13.39 6.81 11.74 -6.06 11.76 -6.05 11.74 -6.05 7.81 -4.04 -2.86 1.72 -13.41 6.83 
+-13.39 6.84 f*
+0 155 255 rG
+2755.08 3172.25 -3.34 -2.5 2.76 -4.43 5.23 -3.69 1.73 -0.85 2.61 3.34 0.24 4.1 -1.22 2.41 
+-0.12 5.62 5.79 -0.83 1.04 0.37 6.38 0 -3.17 7.44 -5.6 3.28 -3.82 -0.22 -2.54 -3.12 
+0.55 -5.75 -3.11 -2.72 -0.3 -0.21 0 -3.86 1.32 -2.35 -2.9 0.02 0.73 1.93 0.85 0.39 
+0 3.86 -3.11 -2.25 f*
+110 210 9 rG
+2755.29 3127.56 -2.9 5.14 0.54 1.36 1.78 2.69 1.56 0.76 4.96 -3.69 0 -4.43 1.46 -3.41 
+1 0.54 0.48 0.96 -2.93 1.91 0 4.43 0.16 -0.09 3.08 -1.2 2.89 -1.71 -0.15 -1.37 
+-1.98 -4.71 0.24 -4.88 4.88 -4.05 2.08 0.24 6.42 -0.48 0.2 -0.02 5.91 0.02 2.34 -0.63 
+4.13 0.18 3.38 3.34 2.87 3.93 3.32 3.37 1.28 5.62 -0.08 1.24 -0.16 5.93 -0.56 4.17 
+0.06 3 1.41 5.03 1.22 5.14 3.95 2.36 2.23 -0.96 1.48 -0.06 0 -2.65 -3.93 -1.67 
+-0.59 -0.2 -1.88 -1.78 -1.39 -1.3 -1.52 -4.95 0 -0.41 0.98 -7.34 0.09 -2.43 0.39 -5.03 
+-2.15 -4.69 -3.36 -3.3 -2.96 -3.86 -3.34 -3.43 -5.8 -0.22 -0.15 0.02 -5.41 -0.83 -3.37 0.79 
+-3.53 0.26 -5.34 -0.85 -0.59 0.21 -3.97 4.88 -4.6 -1.12 -3 -3.71 -0.63 -2.61 4.34 -4.47 
+4.47 -4.38 4.04 -4.78 0.09 -0.04 5.49 0.71 4.84 0.09 1.02 0.17 6.73 -0.91 0.67 -0.11 
+6.6 -2.48 1.17 -0.65 5.09 -2.11 2.87 -0.5 5.75 0.04 0.39 -0.07 6.12 -2.38 1.74 -0.07 
+4.38 2.5 4.77 -0.2 1.3 0.26 3.17 4.14 4.41 -4.04 3.36 1.78 2.41 5.17 0.05 0.11 
+-0.11 -0.02 -2.21 -0.32 -3.32 -0.5 -4.73 -1.67 -0.28 0.09 -6.23 2.19 -3.09 2.11 -2.8 0.89 
+-0.15 -0.02 -3.69 -0.22 -5.08 -0.08 -0.29 7.07 0.32 2.54 0.69 3.95 2.48 4.51 2.78 4.13 
+0.37 5.9 -0.17 1.09 0.98 5.93 3.32 3.23 3.87 2.67 -0.59 7.32 0 4.34 -2.87 -1.41 
+-4.16 1.84 -4.27 0.22 0 2.65 3.93 -0.19 1.96 0.41 3.54 0.52 2.73 3.64 2.32 4.01 
+1.84 4.43 1.13 5.04 1.08 0.71 0 -5.78 -2.78 -5.64 -2.25 -4.09 -1.04 -4.1 3.23 1.91 
+1.24 5.14 1.22 5.08 0.39 1.69 0 5.78 2.71 1.82 0.41 -6.45 -0.97 -5.27 -0.68 -5.64 
+-1.06 -5.41 -2.19 -4.32 0 -0.07 2.97 -8.07 -0.11 -1.65 -0.17 -6.82 0.95 -3.04 -1.54 -3.46 
+-1.84 -5.21 -2.56 -4.45 -2.73 -4.27 0.09 -5.6 3.84 -5.45 5.99 -1.82 0.7 -0.15 4.47 1.5 
+5.21 0.44 -1.96 -4.86 -2.67 -4.84 -4.34 -2.54 -0.89 0.15 -5.6 0.37 -3.25 -0.62 -2.54 0.11 
+-4.77 -1.91 -3.12 0.11 -4.28 1.7 -2.67 0.36 -3.7 -0.02 -4.6 0.8 -2.97 1.24 -3.12 1.71 
+-5.52 1.82 -1.43 0.35 -5.58 0.96 -3.39 -0.57 -2.21 -0.05 -5.29 -1.02 -2.47 0.76 -3.84 4.9 
+-4.77 4.14 -4.36 4.45 1.15 4.69 2.88 3.82 0.91 4.41 -4.14 4.73 f*
+2754.19 3154.45 -1.39 2.95 2.49 3.43 2.63 -1.65 4 -4.75 0.13 -0.39 0.24 -6.12 -2.15 -4.06 
+-5.7 1.06 1.3 3.54 -1.54 5.99 f*
+2 239 204 rG
+2758.68 3290.13 -4.51 0.97 5.38 -4.23 -0.22 2.38 -0.65 0.88 f*
+0 255 r6
+2760.13 3106.55 -4.34 4.47 0.63 2.61 3 3.71 4.6 1.13 3.97 -4.88 0.59 -0.21 5.34 0.85 
+3.53 -0.26 3.37 -0.79 5.41 0.83 0.15 -0.02 5.8 0.22 3.34 3.43 2.96 3.86 3.36 3.3 
+2.15 4.69 -0.39 5.03 -0.09 2.43 -0.98 7.34 0 0.41 1.52 4.95 1.39 1.3 0 -2.15 
+-0.33 -0.24 -0.13 -0.48 2.49 -2.11 0 -17.01 -1.82 -1.41 -3.02 -3.71 -2.24 -2.15 -1.18 -1.11 
+-3.02 -3.78 -3.27 -3.53 -1.79 -0.65 -2.93 -1.09 -4.97 -0.74 -0.48 -0.06 -5.83 1.34 -1.13 0.26 
+-0.41 0.04 -2.52 -2.82 -0.61 -0.87 -0.37 -0.06 -6.49 2.58 -3.3 5.49 -1.82 -0.43 -3.11 -3.61 
+-0.11 -0.49 2.54 -2.61 3.04 -0.83 4.39 -4.47 3.63 -5.14 2.56 0.32 5.23 1.11 2.89 -0.33 
+3.47 -0.11 4.92 -0.68 2.93 -1.71 3.21 -1.15 5.38 -3.62 1.13 -0.2 4.03 2.84 -0.15 2.39 
+-4.38 4.6 -0.39 7.62 0.47 1.89 1.67 3.1 1.65 5.5 1.93 5.04 0.24 3.23 0 17.01 
+0.68 -0.56 -2.71 3.39 0 2.15 1.88 1.78 0.59 0.2 3.93 1.67 4.27 -0.22 4.16 -1.84 
+2.87 1.41 0 -4.34 0.59 -7.32 -3.87 -2.67 -3.32 -3.23 -0.98 -5.93 0.17 -1.09 -0.37 -5.9 
+-2.78 -4.13 -2.48 -4.51 -0.69 -3.95 -0.32 -2.54 0.29 -7.07 5.08 0.08 3.69 0.22 0 -5.18 
+-4.06 -2.87 2.17 -3.54 0.37 -0.02 3.93 3.08 0.91 2.5 -3.32 0.85 0 5.18 0.15 0.02 
+2.8 -0.89 3.09 -2.11 6.23 -2.19 0.28 -0.09 4.73 1.67 3.32 0.5 0 -2.56 -1.67 -0.21 
+-0.04 -1.85 0.98 0.54 0.74 1.52 0 2.56 2.21 0.32 0.11 0.02 -0.05 -0.11 -2.41 -5.17 
+-3.36 -1.78 -4.41 4.04 -3.17 -4.14 -1.3 -0.26 -4.77 0.2 -4.38 -2.5 -1.74 0.07 -6.12 2.38 
+-0.39 0.07 -5.75 -0.04 -2.87 0.5 -5.09 2.11 -1.17 0.65 -6.6 2.48 -0.67 0.11 -6.73 0.91 
+-1.02 -0.17 -4.84 -0.09 -5.49 -0.71 -0.09 0.04 -4.04 4.78 -4.47 4.38 f*
+7 193 59 rG
+2756.66 3080.04 -0.62 -0.15 0.43 0.46 4.06 2.91 0.43 0.2 -0.26 -0.44 -4.04 -2.97 f*
+255 0 r6
+2757.33 3170.25 -0.73 -1.93 2.9 -0.02 -1.32 2.35 -0.85 -0.39 f*
+255 203 0 rG
+2759.61 3109.55 -2.54 2.61 0.11 0.49 3.11 3.61 1.82 0.43 3.3 -5.49 6.49 -2.58 0.37 0.06 
+0.61 0.87 2.52 2.82 0.41 -0.04 1.13 -0.26 0 -7.36 -1.24 -0.52 -0.93 -1.45 1.39 0.85 
+0.79 1.13 0 7.36 5.83 -1.34 0.48 0.06 4.97 0.74 2.93 1.09 0 -2.84 -0.91 -0.83 
+-4 -2.66 -0.75 -2.15 2.3 0.13 6.27 -0.59 0.39 -0.2 -0.09 0.52 -3.21 5.77 0 2.84 
+1.79 0.65 3.27 3.53 3.02 3.78 1.18 1.11 0 -1.65 -0.41 -0.37 -2.3 -2.78 2.56 2.47 
+0.15 0.67 0 1.65 2.24 2.15 3.02 3.71 1.82 1.41 -0.24 -3.23 -1.93 -5.04 -1.65 -5.5 
+-1.67 -3.1 -0.47 -1.89 0.39 -7.62 4.38 -4.6 0.15 -2.39 -4.03 -2.84 -1.13 0.2 -5.38 3.63 
+-3.21 1.15 -2.93 1.71 -4.92 0.68 -3.47 0.11 -2.89 0.33 -5.23 -1.11 -2.56 -0.32 -3.62 5.14 
+-4.39 4.47 -3.04 0.83 f*
+0 255 r6
+2762.7 3126 -1.46 3.41 2.93 -1.91 -0.48 -0.96 -1 -0.54 f*
+7 193 59 rG
+2768.99 3159.46 -3.82 -1.28 0.98 3.99 0.61 5.19 1.18 4.56 4.36 1.71 1.08 -0.02 0 -3.06 
+-2.49 -1.26 -1.7 -4.16 -0.22 -1.52 1.15 0.65 2.8 3.2 0.45 3.1 0 3.06 1.78 -0.02 
+0.98 -3.34 -0.79 -5.04 -2.95 -3.05 -3.41 -2.7 f*
+110 210 9 rG
+2770.12 3164.25 -1.15 -0.65 0.22 1.52 1.7 4.16 2.49 1.26 -0.45 -3.1 -2.8 -3.2 f*
+255 0 r6
+2770.42 3145.79 -0.78 -2.73 0.95 -3.88 1.46 -3.13 0.26 -5.51 -1.79 -4.93 -0.2 -0.84 2.41 -1.78 
+3.55 -1.17 3.13 0.45 4.79 1.54 2.25 -0.32 6.19 -2.41 1.11 5.9 3.71 2.8 0.56 6.32 
+-0.06 1.65 -0.89 6.08 1.5 4.92 0.48 2.05 -0.91 4.73 -0.46 5.53 -1.04 2.04 0.11 5.86 
+2.21 3.84 1.02 4.86 -0.37 1.69 -4.78 5.19 -4.27 2.47 0 -11.89 0.09 -0.71 -1.11 -1.29 
+0.39 1.91 0.63 0.09 0 11.89 -1.35 0.76 -5.4 3.78 -0.91 0.21 -0.21 -2.91 2.47 -4.23 
+-3.64 1.55 -2.24 -2.09 -0.11 -2.86 1.3 -3.58 1.3 -5.38 0.28 -1.63 -0.32 -5.47 -1.89 -4.15 
+-2.78 -3.34 -2.47 -3.64 -2.08 -4.08 -2.11 -4.14 f*
+255 135 0 rG
+2776.15 3103.58 -1.39 -0.85 0.93 1.45 1.24 0.52 -0.79 -1.13 f*
+255 0 r6
+2777.84 3329.25 2.17 -0.67 6.45 -2.07 2.48 -4.38 -8.27 5.34 -2.82 1.78 f*
+255 135 0 rG
+2787.79 3104.25 -2.3 -0.13 0.75 2.15 4 2.66 0.91 0.83 3.21 -5.77 0.09 -0.52 -0.39 0.2 
+-6.27 0.59 f*
+0 155 255 rG
+2790.67 3174.39 -1.11 -1.29 0.39 1.91 0.63 0.09 0.09 -0.71 f*
+255 0 r6
+2803.52 3479.47 -9.14 5.46 3.8 -1.95 0.24 -0.16 6.36 -4.1 -1.26 0.74 f*
+255 135 0 rG
+2800.24 3119.36 -2.56 -2.47 2.3 2.78 0.41 0.37 -0.15 -0.67 f*
+255 0 r6
+2798.42 3482.83 -0.24 0.16 0.13 -0.09 0.11 -0.07 f*
+255 G
+2801.73 3480.96 -3.32 1.87 6.36 -4.1 10.74 -6.45 12.02 -7.18 12.07 -8.79 2.28 -1.65 6.45 -4.17 
+11.85 -7.68 -1.56 1.15 -9.2 6.58 -9.31 6.4 -9.44 6.27 -9.53 6.07 -9.66 5.92 -9.74 5.75 f*
+7 193 59 rG
+2804.86 3179.14 -0.41 6.01 1.22 4.54 1.13 4.53 4.63 0.59 0 -1.78 -0.57 -0.07 -2.15 -0.25 
+-1.19 -4.54 -1.02 -4.75 0.39 -3.39 2.87 0.61 3.36 2.84 2.41 1.54 1.65 0.7 -0.87 1.65 
+-4.88 5.66 0 1.78 0.54 0.09 5.32 -4.36 4.41 -7.14 3.08 -4.25 -3.73 2.37 -1.52 -0.37 
+-2.89 -0.71 -3.69 -2.45 -0.07 -0.05 -3.27 -2.93 -4.04 1.87 -0.7 2.28 f*
+255 G
+2815.52 3472.29 -10.74 6.45 6.03 -3.93 12.5 -8.09 12.5 -8.12 6.08 -3.93 -2.28 1.65 -12.07 8.79 
+-12.02 7.18 f*
+255 203 0 rG
+2807.46 3145.96 -2.49 2.11 0.13 0.48 0.33 0.24 2.71 -3.39 -0.68 0.56 f*
+110 210 9 rG
+2806.88 3180.04 -0.39 3.39 1.02 4.75 1.19 4.54 2.15 0.25 0 -1.78 -0.24 -0.02 -1.12 -4.12 
+1.91 3.5 -0.54 0.65 0 1.78 0.57 0.07 4.88 -5.66 0.87 -1.65 -1.65 -0.7 -2.41 -1.54 
+-3.36 -2.84 -2.87 -0.61 f*
+0 255 r6
+2811.39 3190.54 -1.91 -3.5 1.13 4.13 0.24 0.02 0.54 -0.65 f*
+0 155 255 rG
+2813.76 3171.22 -1.76 -4.38 1.61 -3.23 1.39 0.41 5.86 -0.12 0.46 0.3 2.41 3.86 1.39 4.82 
+-0.02 1.17 -3.93 2.39 -1.65 0.84 -3.76 -1.91 -1.99 -4.14 f*
+255 203 0 rG
+2816.25 3089.97 -2.17 3.54 4.06 2.87 3.32 -0.85 -0.91 -2.5 -3.93 -3.08 -0.37 0.02 f*
+0 255 r6
+2827.52 3158.12 -3.23 -1.91 1.04 4.1 2.25 4.09 2.78 5.64 -0.39 -1.69 -1.22 -5.08 -1.24 -5.14 f*
+255 203 0 rG
+2838 3094.4 -0.98 -0.54 0.04 1.85 1.67 0.21 -0.74 -1.52 f*
+255 0 r6
+2851.7 3447.53 -9.81 7.14 6.45 -4.17 11.85 -7.68 1.39 -1.02 13.02 -10.71 2.14 -1.79 -0.89 0.68 
+-12.08 8.77 -12.07 8.79 f*
+110 210 9 rG
+2848.89 3135.35 -1.34 8.55 1.3 4.37 0.07 1.04 -0.5 7.23 0.21 6.33 3.34 3.13 3.17 3.28 
+1.11 -0.2 0 -19.8 -0.41 -0.56 -3.78 -2.8 -1.65 -5.17 0.55 -2.86 4.03 -6.1 2.37 1.02 
+3.13 3.66 3.97 -0.02 1.8 0.59 1.59 5.41 0.54 3.08 -4.32 1.15 -1.65 0.93 -1.87 0.5 
+-4.29 1.17 0 19.8 0.43 -0.09 0.67 -1.89 2.91 -7.36 3.5 -5.89 0.65 -1.15 0.54 -0.11 
+4.71 -3.8 1.06 -2.54 -1.45 -5.46 -2.28 -4.62 -3.15 -1 -2.25 0.02 -3.47 -3.28 -3.95 -1.67 
+-4.21 3.89 -0.76 0.41 -0.3 0.8 f*
+0 155 255 rG
+2848.61 3120.88 -0.09 -0.31 0.21 0.15 -0.02 0.18 -0.11 -0.02 f*
+0 255 r6
+2850.96 3137.89 -0.55 2.86 1.65 5.17 3.78 2.8 0.41 0.56 4.29 -1.17 0 -4.57 -5.14 -1.3 
+-1.33 -5.62 1.74 -3.25 0.79 0.34 2.75 4.06 5.68 -0.02 0.48 0.17 0.48 1.96 -5.32 3.64 
+-0.14 0.02 0 4.57 1.87 -0.5 1.65 -0.93 4.32 -1.15 -0.54 -3.08 -1.59 -5.41 -1.8 -0.59 
+-3.97 0.02 -3.13 -3.66 -2.37 -1.02 -4.03 6.1 f*
+255 203 0 rG
+2855.82 3133.36 -1.74 3.25 1.33 5.63 5.14 1.3 0.14 -0.02 5.32 -3.64 -0.48 -1.96 -0.48 -0.17 
+-5.68 0.02 -2.75 -4.06 -0.79 -0.34 f*
+255 0 r6
+2861.57 3441.79 -1.39 1.02 0.65 -0.41 0.74 -0.61 f*
+255 G
+2867.71 3437.21 -6.14 4.58 13.02 -10.71 2.14 -1.79 11.18 -8.11 10.88 -9.55 8.36 -7.34 8.18 -6.73 
+-3.99 3.65 -8.46 7.51 -8.59 7.36 -8.73 7.2 -8.85 7.05 -8.98 6.88 f*
+2887.91 3421.18 -11.18 8.11 11.59 -9.52 13.76 -11.31 5.06 -4.17 -8.36 7.34 -10.87 9.55 f*
+255 0 r6
+2884.16 2949.13 -1.84 6.36 4.84 3.37 1.91 -6.41 1.8 -6.45 1.72 -6.46 -4.97 -3.23 -1.67 6.42 
+-1.78 6.41 f*
+2907.25 2474.16 -11.7 -9.96 5.02 6.57 11.46 10.05 4.25 6.36 11.16 10.62 -4 -6.38 -4.52 -6.73 
+-11.67 -10.52 f*
+2909.63 3402.11 -2.49 2.19 8.18 -6.73 0.89 -0.82 2.41 -2.54 -8.99 7.9 f*
+2916.21 3396.75 -0.89 0.82 0.52 -0.43 0.37 -0.39 f*
+255 G
+2920.5 3392.58 -1.88 1.63 9.03 -9.46 35.42 -37.18 6.66 -6.98 -3.9 5.08 -11.33 11.72 -11.33 11.74 
+-11.34 11.72 -11.33 11.74 f*
+255 0 r6
+2940.64 3184.48 -0.28 6.94 5.42 -6.29 5.34 -6.46 5.25 -6.62 5.16 -6.8 5.08 -6.96 0.05 7.14 
+-0.17 7.3 5.23 -7.14 5.12 -7.32 5.04 -7.48 4.9 -7.68 0.09 7.4 4.95 -7.88 4.84 -8.09 
+4.71 -8.27 -0.5 -7.27 4.45 -8.42 -0.84 -7.03 -4.32 8.33 -4.43 8.18 -2.08 3.63 -2.47 4.36 
+-4.69 7.83 -0.54 -7.07 -4.66 7.64 -4.77 7.44 -4.88 7.29 -0.39 -6.96 -4.88 7.11 -4.95 6.95 
+-0.39 -6.86 -4.95 6.8 -5.03 6.64 0.17 6.83 -5.23 6.49 -5.32 6.32 f*
+2956.75 2518.32 -12.02 -13.04 4.71 7.51 4.11 7.07 3.6 6.68 3.11 6.32 2.66 5.95 2.24 5.6 
+1.86 5.27 1.52 4.97 9.41 12.24 9.18 12.65 8.89 13.02 0.39 4.14 0.11 3.87 -8.38 -12.66 
+0.11 3.8 8.14 12.43 7.86 12.74 -0.59 3.11 7.32 12.78 7.03 13.05 -1.22 2.39 6.49 13 
+-1.54 1.91 -1.72 1.74 -1.84 1.56 -1.97 1.39 -2.11 1.26 -5.66 -11.77 -2.09 1.35 -2.21 1.19 
+-5.66 -11.18 -2.2 1.28 -2.3 1.15 -5.66 -10.68 -2.3 1.21 -2.41 1.11 -2.52 1 -5.54 -10.03 
+-2.52 1.05 -2.62 0.95 5.3 9.72 -2.82 0.72 4.97 9.65 4.75 9.75 4.54 9.83 4.32 9.92 
+4.08 9.96 3.87 10.02 -3.46 -0.34 3.58 9.89 3.35 9.94 3.12 9.98 2.89 10 2.67 10.02 
+2.47 10.03 2.24 10.05 3.77 1.63 2.04 10.22 3.75 1.8 3.67 1.8 1.85 10.63 3.64 2.02 
+3.56 2.02 3.49 2.04 1.63 11.26 3.45 2.28 1.37 11.46 1.11 11.41 0.85 11.37 3.34 3.04 
+0.54 11.57 0.3 11.48 3.19 3.58 3.11 3.67 -0.07 11.91 2.97 4 0.13 -12.16 2.95 3.82 
+2.88 3.93 -0.26 12.72 -0.57 12.61 -0.87 12.5 2.54 4.88 2.41 5.05 2.32 5.21 2.19 5.38 
+1.28 -13.7 0.93 -13.87 0.61 -14.02 0.21 -14.15 2.5 4.13 -0.07 -14.64 2.48 3.82 2.41 3.95 
+-0.37 -15.62 2.38 3.58 2.3 3.69 0.22 16.61 -0.29 16.45 -0.74 16.28 -1.2 16.06 -1.65 15.82 
+1.54 6.29 -2.26 16.02 -2.69 15.73 -3.11 15.41 -3.45 15.08 -0.65 -7.88 -0.87 -7.57 -3.32 14.08 
+-0.87 -7.59 -1.04 -7.29 -3.21 13.2 -3.52 12.93 -3.77 12.65 -0.65 -7.77 -3.82 12.15 -0.67 -7.73 
+-2.41 7.32 -1.43 4.38 -0.71 -7.66 -0.91 -7.4 -3.71 11.09 -3.18 8.79 -0.75 2.06 -0.76 -7.48 
+-3.95 10.5 0.61 7.62 0.37 7.86 4.3 -10.76 4.1 -11 0.5 7.84 0.26 8.07 0 8.38 
+-4.73 11.48 -0.52 8.83 4.97 -11.63 -0.61 8.98 -0.91 9.33 5.25 -12.33 -0.99 9.51 -1.35 9.87 
+-1.75 10.29 5.92 -13.28 5.66 -13.71 -1.5 10.3 -1.95 10.74 -2.41 11.26 -2.93 11.79 -3.52 12.37 
+7.42 -15.43 3.04 -12.13 2.52 -11.54 2 -11 5.82 -15.19 5.47 -15.71 5.1 -16.19 -0.81 9.96 
+5.08 -17.14 0.43 -9.53 0.11 -9.05 -4.34 16.28 -4.76 15.82 0.48 -9.39 0.17 -8.98 4.11 -15.08 
+3.73 -15.45 3.37 -15.84 2.91 -16.17 2.5 -16.47 2.02 -16.8 1.54 -17.05 1.63 5.8 1.21 -17.89 
+0.65 -18.11 0.07 -18.32 -0.5 -18.46 2.04 3.49 -1.06 -19.29 2 2.86 -1.7 -20.1 1.93 2.11 
+-2.45 -20.94 1.8 1.23 1.73 1.15 1.65 1.05 -3.56 -23.7 -1.52 -0.04 -4.3 -22.54 -5.14 -22.36 
+1.04 -1.91 -6.29 -22.98 0.48 -3.3 -7.6 -23.48 -8.44 -22.89 -9.22 -22.27 -9.96 -21.55 -10.61 -20.77 
+-11.16 -19.96 -11.68 -19.1 3.28 8.01 -11.5 -17.88 -11.87 -17.08 3.75 7.96 -11.66 -16.06 -11.91 -15.3 
+4.1 7.77 -11.72 -14.45 -11.87 -13.72 f*
+2950.57 2969.95 -2.11 7.16 3.97 4.19 3.88 4.27 2.21 -7.27 2.11 -7.34 3.91 4.25 3.8 4.36 
+-2.22 7.46 -2.36 7.38 -2.46 7.33 3.5 4.63 2.54 -7.38 2.41 -7.46 3.54 4.62 2.36 -7.62 
+2.24 -7.68 2.08 -7.75 1.97 -7.81 1.82 -7.9 1.7 -7.96 3.82 4.23 3.73 4.34 1.67 -8.22 
+3.69 4.32 3.6 4.43 1.65 -8.48 -3.66 -4.32 -3.76 -4.23 1.37 -8.36 1.22 -8.43 -3.95 -3.93 
+-4.03 -3.86 -4.11 -3.76 -1.09 8.12 -1.21 8.05 -4.1 -3.86 -1.3 7.9 -1.46 7.86 -1.56 7.79 
+-4.04 -4.04 -1.67 7.64 -1.78 7.59 -4.02 -4.1 -1.86 7.44 -4.04 -4.08 -1.93 7.33 -4.08 -4.08 
+-2 7.21 f*
+2957.68 2997.22 -2.52 7.18 3.53 4.6 2.61 -7.25 -3.62 -4.53 f*
+2977.95 3329.91 -8.22 10.68 5.14 -5.41 13.15 -17.51 13.17 -17.52 13.13 -17.49 -12.12 15.76 -12.11 15.73 
+-12.13 15.76 f*
+2995.42 3064.73 -3.61 7.99 1.82 6.14 3.71 -8.05 1.78 6.23 3.69 -8.25 3.56 -8.37 -2 -6.08 
+3.3 -8.44 3.14 -8.57 2.99 -8.71 2.32 5.82 2.96 -8.91 -2.43 -5.71 2.69 -8.96 2.52 -9.07 
+-2.76 -5.34 2.26 -9.07 2.11 -9.18 -0.22 -0.32 -2.84 -4.64 -3.15 -4.86 -3.26 -4.73 -3.36 -4.64 
+-1.78 8.7 -3.41 -4.62 -1.86 8.5 -2.02 8.44 -2.16 8.33 -3.28 -4.82 -2.24 8.16 3.21 4.91 
+3.11 5.04 -2.54 8.22 2.89 5.25 -2.78 8.22 2.69 5.43 -2.99 8.2 -3.15 8.09 2.34 5.73 
+-3.36 8.03 2.11 5.92 f*
+3000.76 2907.66 -0.91 8.55 3.93 3.91 3.82 3.99 1.02 -8.77 3.79 3.95 3.71 4.04 3.61 4.14 
+3.54 4.23 1.06 -9.39 -3.61 -4.09 -3.67 -3.99 -3.77 -3.93 -3.85 -3.82 -3.93 -3.75 -0.78 8.72 
+-3.97 -3.8 f*
+3023.5 3037.39 -3.17 9.14 1.87 6.27 3.28 -9.25 3.13 -9.4 2.95 -9.55 2.76 -9.7 2.58 -9.86 
+2.38 -9.96 -2.54 -5.51 2.11 -9.98 -2.75 -5.21 -2 9.8 -2.2 9.7 -2.69 -5.37 -2.25 9.44 
+2.58 5.49 -2.54 9.44 -2.73 9.31 2.24 5.91 -3 9.29 f*
+3025.2 2912.87 -0.87 9.45 3.49 4.19 0.93 -9.62 -3.56 -4.02 f*
+3031.68 3070.01 -3.82 9.68 0.93 7.21 3.96 -9.81 -1.08 -7.07 f*
+3035.59 2925.24 -1.04 9.92 3.21 4.52 3.12 4.6 3.02 4.7 1.26 -10.41 1.06 -10.55 -3.17 -4.36 
+-3.28 -4.26 -0.89 10.18 -3.3 -4.34 f*
+3039.54 3188.24 -4.64 13.15 8.14 -14.95 4.17 -12.98 -7.66 14.78 f*
+3052.25 2937.09 -1.19 10.91 2.78 4.92 1.3 -11.13 -2.89 -4.7 f*
+3082.83 3069.08 -0.78 10.02 5.05 -18.14 0.37 -9.53 -4.64 17.64 f*
+Q q
+0 72 3400 0 0 4128 ^ Y
+255 G
+1829.88 2931.45 0 -24.84 0.26 -10.22 0.5 -11.31 0.7 -11.3 0.89 -11.29 1.09 -11.28 1.28 -11.25 
+1.47 -11.24 1.67 -11.2 1.87 -11.17 2.06 -11.13 2.25 -11.09 2.43 -11.05 2.64 -11.02 2.82 -10.96 
+3.04 -10.91 3.21 -10.85 3.39 -10.8 3.61 -10.75 3.78 -10.67 3.95 -10.62 4.14 -10.52 4.34 -10.46 
+4.51 -10.39 4.69 -10.31 4.86 -10.22 5.06 -10.14 5.21 -10.04 5.4 -9.94 5.58 -9.86 5.73 -9.76 
+5.9 -9.66 6.08 -9.55 6.25 -9.44 6.4 -9.33 6.58 -9.23 6.73 -9.09 6.88 -9 7.04 -8.86 
+7.2 -8.75 7.34 -8.59 7.5 -8.49 3.82 -4.18 3.82 -4.17 3.89 -4.11 3.88 -4.12 7.95 -8.07 
+4.04 -3.97 4.02 -3.95 8.2 -7.81 4.19 -3.82 4.16 -3.82 8.47 -7.51 4.29 -3.67 4.3 -3.69 
+8.72 -7.21 4.43 -3.52 4.43 -3.53 4.49 -3.45 4.5 -3.43 4.53 -3.39 4.56 -3.36 4.6 -3.28 
+4.6 -3.3 4.67 -3.21 4.64 -3.19 4.73 -3.15 4.71 -3.12 4.77 -3.04 4.75 -3.04 4.84 -2.95 
+4.82 -2.96 4.86 -2.88 4.88 -2.87 4.93 -2.8 4.9 -2.78 4.97 -2.71 4.97 -2.69 5.04 -2.63 
+5.01 -2.61 5.06 -2.54 5.05 -2.52 5.1 -2.45 5.1 -2.43 5.17 -2.34 5.14 -2.34 10.37 -4.52 
+5.21 -2.17 5.23 -2.17 5.25 -2.09 5.27 -2.06 5.3 -2 5.3 -1.97 5.34 -1.89 5.32 -1.89 
+5.36 -1.8 5.38 -1.8 5.38 -1.7 5.39 -1.71 10.85 -3.21 5.45 -1.52 5.45 -1.5 5.49 -1.43 
+5.47 -1.41 5.49 -1.33 5.51 -1.32 5.51 -1.22 5.51 -1.23 5.55 -1.12 5.54 -1.13 5.55 -1.02 
+5.58 -1.04 11.16 -1.87 5.57 -0.84 5.6 -0.82 5.6 -0.74 5.62 -0.74 5.6 -0.65 5.62 -0.63 
+5.64 -0.57 5.62 -0.52 5.64 -0.45 5.64 -0.43 11.29 -0.7 5.64 -0.26 5.64 -0.24 5.66 -0.15 
+4.38 -0.11 25.15 0 4.39 0.11 5.66 0.15 5.64 0.24 5.64 0.26 11.28 0.7 5.64 0.43 
+5.64 0.45 5.62 0.55 5.64 0.54 5.62 0.63 5.62 0.65 11.2 1.48 5.59 0.82 5.6 0.84 
+11.16 1.87 5.55 1.04 5.56 1.02 5.53 1.13 5.55 1.13 5.51 1.23 5.54 1.22 10.98 2.65 
+5.47 1.41 5.49 1.43 5.45 1.5 5.45 1.52 10.85 3.21 5.38 1.71 5.41 1.7 10.72 3.6 
+5.32 1.89 5.34 1.89 5.3 1.97 5.29 2 5.27 2.06 5.25 2.09 5.23 2.17 5.21 2.17 
+10.38 4.52 5.16 2.34 5.14 2.34 5.1 2.45 5.1 2.43 5.05 2.52 5.06 2.54 5.04 2.61 
+5.01 2.63 4.97 2.69 4.97 2.71 4.91 2.78 4.92 2.8 4.88 2.87 4.86 2.88 4.84 2.96 
+4.82 2.95 4.75 3.04 4.78 3.04 4.7 3.14 4.73 3.13 4.67 3.19 4.64 3.21 4.6 3.3 
+4.6 3.28 4.55 3.36 4.54 3.39 4.49 3.43 4.5 3.45 4.43 3.53 4.42 3.52 8.73 7.21 
+4.29 3.69 4.3 3.67 8.46 7.51 4.19 3.82 4.17 3.82 8.21 7.81 4.03 3.95 4.02 3.97 
+7.94 8.07 3.89 4.12 3.88 4.11 3.82 4.17 3.82 4.18 7.5 8.49 7.34 8.59 7.21 8.75 
+7.03 8.86 6.88 9 6.72 9.09 6.58 9.23 6.4 9.33 6.25 9.44 6.08 9.55 5.91 9.66 
+5.75 9.76 5.55 9.86 5.4 9.94 5.21 10.04 5.05 10.14 4.86 10.22 4.69 10.31 4.51 10.39 
+4.35 10.46 4.14 10.52 3.95 10.62 3.77 10.67 3.61 10.75 3.38 10.8 3.21 10.85 3.04 10.91 
+2.82 10.96 P
+2.65 11.02 2.43 11.05 2.25 11.09 2.06 11.13 1.87 11.17 1.67 11.2 1.48 11.24 1.28 11.25 
+1.09 11.28 0.89 11.29 0.7 11.3 0.49 11.31 0.26 10.22 0 24.84 -0.26 10.22 -0.49 11.3 
+-0.7 11.3 -0.89 11.29 -1.09 11.29 -1.28 11.24 -1.48 11.24 -0.28 1.87 0 -133.57 -0.06 -2.09 
+-0.07 -2.12 -0.09 -2.15 -0.11 -2.16 -0.11 -2.2 -0.11 -2.23 -0.11 -2.28 -0.13 -2.32 -0.15 -2.34 
+-0.18 -2.37 -0.34 -4.02 -0.41 -4.03 -0.41 -4.06 -0.45 -4.1 -0.5 -4.14 -0.41 -3.3 -0.41 -3.32 
+-0.45 -3.36 -0.46 -3.38 -0.5 -3.41 -0.26 -1.99 -0.28 -2.04 -0.26 -2.04 -0.3 -2.09 -0.3 -2.12 
+-0.61 -3.61 -0.63 -3.62 -0.67 -3.66 -0.67 -3.69 -0.72 -3.71 -0.75 -3.75 -0.76 -3.8 -0.8 -3.82 
+-0.85 -3.84 -0.86 -3.86 0.21 1.43 0.21 1.39 0.09 0.7 0.85 3.91 0.8 3.88 0.76 3.82 
+0.74 3.77 0.7 3.73 0.5 2.84 0.5 2.8 0.48 2.78 0.46 2.75 0.43 2.71 0.41 2.63 
+0.39 2.61 0.39 2.58 0.39 2.56 0.34 2.54 0.35 2.55 0.32 2.54 0.61 4.99 0.28 2.45 
+0.47 3.99 0.44 3.93 0.41 3.88 0.39 3.87 0.35 3.82 0.61 6.49 0.5 6.45 0.46 6.36 
+0.37 6.3 0 133.57 -1.39 9.33 -1.87 11.18 -2.06 11.13 -2.25 11.09 -2.43 11.07 -2.65 11 
+-2.82 10.96 -3.04 10.91 -3.21 10.85 -2.61 8.27 0 -13 0.89 -2.65 0.89 -2.71 0.87 -2.78 
+0.89 -2.84 0.91 -2.93 0.54 -2.17 0.54 -2.14 0.52 -2.12 0.5 -2.11 0.5 -2.09 -1.37 5.05 
+-1.39 4.97 -1.41 4.91 -1.41 4.84 -1.48 4.78 0 13 -0.78 2.54 -3.61 10.74 -3.77 10.68 
+-3.95 10.61 -2.04 5.19 0 -12.48 1.21 -3.17 1.24 -3.21 1.21 -3.28 1.23 -3.29 1.21 -3.37 
+-0.93 2.73 -0.96 2.74 -0.96 2.71 -0.97 2.73 -1 2.73 1.39 -3.64 1.37 -3.69 1.34 -3.73 
+1.34 -3.8 1.35 -3.82 1.02 -3.28 1 -3.23 0.96 -3.19 0.93 -3.17 0.91 -3.15 -1.13 3.67 
+-1.17 3.65 -1.2 3.63 -1.19 3.58 -1.22 3.58 -1.37 3.93 -1.39 3.89 -1.41 3.86 -1.41 3.82 
+-1.43 3.78 0 12.48 -2.11 5.34 -4.35 10.46 -4.51 10.39 -4.69 10.3 -4.86 10.22 -5.05 10.13 
+-5.21 10.05 -0.76 1.37 0 -20.86 1.08 -1.82 1.09 -1.84 1.11 -1.89 0.91 -2.3 0.89 -2.28 
+0.87 -2.22 -1.04 1.7 -1.07 1.67 -1.02 1.63 -0.91 2.4 -0.93 2.46 -0.98 2.5 0 20.86 
+-0.7 1.3 0 -23.74 3.34 -7.08 1.61 -3.53 0.46 -1.29 0.44 -1.25 0.41 -1.24 1.47 -3.78 
+0.7 -1.85 -0.78 1.41 -0.8 1.39 -0.78 1.37 -1.07 2.24 -1.06 2.21 -1.09 2.23 -1.08 2.82 
+-1.13 2.89 -1.15 2.91 0.17 0.2 0.35 0.35 0 23.74 -3.95 7.27 -5.55 9.85 -3.84 6.53 
+0 -39.97 1.35 -1.82 1.37 -1.89 1.39 -1.93 0.65 -0.74 0.67 -0.75 0.67 -0.79 1.61 -3.52 
+1.56 -3.5 1.54 -3.49 -0.57 0.71 -0.56 0.7 -0.55 0.7 -1.08 1.65 -1.07 1.63 -1.08 1.58 
+-1.56 2.72 -1.59 2.69 -1.58 2.63 -0.39 1.15 -0.39 1.13 -0.39 1.15 0 39.97 -1.91 3.23 
+-3.23 5.29 0 -46.74 1.47 -2.21 1.48 -2.26 2.76 -5.29 2.73 -5.36 -2.41 3.88 -0.72 1.13 
+0 -1.84 1.84 -2.97 1.82 -3.02 2.04 -4.43 2.02 -4.43 2.54 -5.1 2.54 -5.16 0.66 -2.17 
+0.65 -2.15 p
+2.28 -5.54 2.21 -5.51 1.61 -4.56 1.57 -4.51 0.58 -2.41 0.57 -2.39 0.54 -2.36 0.54 -2.35 
+0.43 -3.3 -1.7 2.39 0.2 -1.62 0.17 -1.63 -0.76 1.63 -0.79 1.58 -0.25 1.99 -0.3 2.02 
+-0.61 2.71 -0.66 2.75 -0.93 3.37 -1 3.41 -0.52 2.02 -0.05 0.2 0 -27.11 0.7 -0.28 
+0.67 -0.3 1 -0.13 1.06 -1.69 1.09 -1.71 1.78 -4.32 1.75 -4.36 -0.04 1.45 -0.09 1.45 
+0.7 -0.17 0.67 -0.2 -0.67 3.19 -0.71 3.23 0.78 -0.89 0.78 -0.93 1.59 -4 1.59 -4.05 
+0.52 -2.39 0.5 -2.39 0.48 -2.41 0.46 -2.39 1.15 -2.69 1.15 -2.74 1.22 -2.08 1.21 -2.12 
+0.48 -0.07 0.49 -0.07 1.63 -4.66 1.63 -4.71 1.26 -3.06 1.26 -3.13 -0.48 3.43 -0.52 3.49 
+1.28 -4.51 1.24 -4.52 0.52 1.13 -0.35 3.47 1.07 -4.23 1.04 -4.23 0.3 0.22 0.28 0.2 
+0.02 1.52 0.02 1.56 1.24 -4.71 1.19 -4.73 0.41 -3.23 0.39 -3.17 -0.82 2.28 -0.31 0.87 
+0 -57.33 0.55 -0.87 0.54 -0.89 0.91 -4.69 0.89 -4.73 0.76 -3.82 0.71 -3.84 0.76 -3.64 
+0.74 -3.69 0.8 -4.43 0.76 -4.49 0.5 -4.45 0.48 -4.46 0.61 -4.8 0.59 -4.84 0.34 -0.78 
+0.33 -0.8 0.19 2.73 0.2 2.75 0.48 -2.34 0.48 -2.39 0.5 -2.17 0.5 -2.19 0.32 -4.78 
+0.31 -4.82 0.35 -4.46 0.32 -4.5 0.19 -5.66 0.16 -5.68 0.3 -3.52 0.3 -3.56 0.2 -2.84 
+0.2 -2.89 0.02 -4.88 0 -4.9 -0.2 -5.21 -0.24 -5.21 0.07 -3.11 0.04 -3.12 -0.21 -6.55 
+0.24 -2.72 0.24 -2.75 0.32 -0.39 0.35 -0.39 -0.09 -4.02 -0.09 -4.05 0.07 -3.21 0.04 -3.25 
+0.11 -2.32 0.09 -2.37 -0.5 -4.58 -0.52 -4.56 -0.07 -1.71 -0.13 -3.47 -0.25 -2.5 -0.57 -5.04 
+-0.48 -3.71 -0.48 -3.75 -1.04 -7.51 -0.54 -3.78 -0.57 -3.77 1.13 5.2 0.57 2.63 -0.26 -2.58 
+-0.29 -2.61 -0.28 -2.63 -0.39 -3.95 -0.21 -1.97 -0.76 -3.93 -0.8 -3.93 -0.82 -3.93 -0.63 -3.25 
+-0.65 -3.26 -0.67 -3.28 -0.52 -2.78 -0.52 -2.8 -0.54 -2.82 -0.17 -1.5 -0.35 -3.04 -0.96 -4.19 
+-0.98 -4.21 -1.02 -4.23 -1.05 -4.32 -1.08 -4.34 -1.13 -4.36 -1 -3.61 -1.02 -3.6 -1.05 -3.62 
+-1.52 -4.93 -1.54 -4.93 -1.61 -4.92 -1.2 -3.37 -1.19 -3.34 -1.22 -3.32 -1.74 -4.71 -1.75 -4.67 
+-1.78 -4.66 -1.61 -4.13 -1.63 -4.12 -1.65 -4.1 -2 -4.82 -2.04 -4.8 -2.06 -4.77 -3.64 -8.16 
+-1.87 -4.06 -1.13 -2.15 -1.11 -2.15 -1.13 -2.12 -1.8 -3.52 -1.8 -3.5 -1.82 -3.47 -1.84 -3.43 
+-1.84 -3.39 -1.87 -3.36 -2.09 -3.56 -2.08 -3.54 -2.08 -3.47 -1.65 -2.86 -3.34 -5.69 -3.77 -5.99 
+-1.89 -2.93 -1.56 -2.39 -1.57 -2.36 -1.56 -2.32 -1.46 -2.08 -1.45 -2.06 -1.46 -2.04 -1.52 -2.08 
+-1.5 -2.06 -1.5 -2.04 -1.25 -1.26 -0.63 -0.61 -1.43 -1.82 -1.41 -1.8 -1.41 -1.78 -1.52 -2.04 
+-3.04 -4 -1.82 -2.34 -1.83 -2.3 -1.82 -2.25 -3.28 -4.1 -3.29 -4.02 -1.65 -1.89 -1.67 -1.84 
+-2.58 -2.91 -2.58 -2.87 -3 -3.58 -3 -3.52 -2.86 -3.21 -2.84 -3.13 -2.65 -3.05 -2.66 -2.99 
+-2.46 -2.67 -2.45 -2.63 -0.65 -0.2 -0.65 -0.21 1.21 2 1.17 1.97 0.42 1.04 0.39 1.07 
+-0.41 -0.13 -0.43 -0.12 -2.3 -1.35 -1.73 -1 -2.36 -2.15 -2.37 -2.1 2.11 2.69 2.08 2.69 
+2.04 2.7 p
+2 2.69 2.54 2.95 2.54 2.97 -0.37 0.11 -0.37 0.13 3.54 4.3 3.54 4.36 -1.93 -1.82 
+-1.91 -1.8 -0.95 -0.65 -0.96 -0.63 -1.32 -0.98 -1.3 -0.93 2.6 3.95 1.74 2.54 1.74 2.52 
+0.84 1.49 0.82 1.5 0.83 1.58 0.8 1.59 -0.65 -0.41 -0.67 -0.42 1.97 2.71 1.93 2.69 
+0.74 1.52 0.71 1.52 1.91 2.97 1.89 2.95 1.86 2.84 1.82 2.87 1.71 2.49 1.67 2.5 
+1.15 1.34 1.15 1.37 2.13 3.28 2.08 3.28 2.04 3.39 2 3.38 1.67 3.17 1.65 3.15 
+-0.35 0.46 -0.32 0.43 1.09 1.3 1.11 1.32 1.86 2.63 1.87 2.67 1.48 2.54 1.43 2.56 
+1.82 3.45 1.75 3.45 -2.12 -3.28 -2.17 -3.26 -3.64 -5.29 -0.02 0.63 0 0.61 -0.37 0.07 
+-0.37 0.04 1.09 1.58 1.07 1.59 0.75 0.54 0.76 0.58 1.41 2.15 1.41 2.17 2.13 3.38 
+2.08 3.39 1.8 2.52 1.78 2.54 3.04 5.49 3 5.55 -1.43 -2.06 -1.43 -2.02 -2.06 -3.25 
+-2.08 -3.23 -1.11 -1.11 -1.13 -1.11 -1.41 -1.76 -1.43 -1.71 -1.43 -1.73 -1.43 -1.72 -1.76 -2.52 
+-1.78 -2.49 1.67 3.12 1.65 3.15 1.61 2.97 1.59 2.97 1.58 3.14 1.54 3.15 1.87 3.6 
+1.82 3.61 1.3 4.77 1.61 2.71 1.59 2.73 0.7 2.13 0.67 2.09 0.57 3.08 0.48 3.3 
+-0.37 0.43 -0.34 0.45 1.08 4 0.21 1.47 0.2 1.48 -0.37 0.33 -0.35 0.32 -0.37 0.31 
+-0.37 0.32 -0.52 0.39 -0.5 0.39 -0.74 -0.26 -0.74 -0.24 -0.89 -0.76 -0.89 -0.73 -1.24 -1.26 
+-1.21 -1.25 -0.7 -0.3 -0.68 -0.29 -0.73 -0.2 -0.72 -0.19 -0.7 1.65 -0.83 -0.79 -0.84 -0.78 
+-1.52 -1.78 -1.54 -1.76 -0.91 -0.71 -0.93 -0.72 -1.1 -0.69 -1.11 -0.67 -3.12 -5.77 -1.39 -1.7 
+-1.37 -1.7 -0.45 0.24 -0.35 0.22 0 -49.2 0.35 -0.35 0.37 -0.35 -1.15 -2.69 -1.17 -2.71 
+-1.09 -0.89 -1.09 -0.87 0.09 2.3 1.11 2.02 1.08 2.02 0.76 0.76 0.74 0.76 0 49.2 
+-0.09 0.04 -0.91 0.48 -0.63 0.3 -0.61 0.3 -0.56 0.26 -0.59 0.26 -1.13 0.48 -0.93 -0.24 
+-0.93 -0.21 -0.56 -0.33 -0.57 -0.3 -3.09 -4.3 -0.43 0.16 -0.41 0.17 -1.39 -1.61 -1.39 -1.58 
+-0.98 -1.24 -1 -1.22 -0.59 0.22 -0.61 0.24 -1.21 0.44 -0.52 0.17 -0.54 0.2 -0.16 1.09 
+-0.15 1.07 0.91 2.71 0.91 2.69 -0.13 0.96 -0.16 0.95 1.58 3.04 1.55 3.04 0.7 0.3 
+0.69 0.33 0.93 1.26 0.95 1.23 0.76 1.74 0.74 1.75 1.59 3.06 1.58 3.08 2.82 6.12 
+0.48 1.78 0.45 1.76 0.79 2.23 0.75 2.24 0.83 2.64 0.8 2.65 1.74 5.3 1.06 2.64 
+1.04 2.65 0.76 2.21 0.76 2.24 0.54 2.62 0.52 2.61 0.39 2.59 0.37 2.56 0.79 2.17 
+0.74 2.17 1.7 6.99 -0.09 3.23 1.15 5.17 0.11 -4.02 1.98 9.42 -0.57 -4.17 0.11 -3.34 
+1.93 6.29 0.54 4.19 0.54 4.25 1.15 5.99 1.13 5.23 2.37 4.91 1.06 4.47 0.52 4.19 
+1.45 4.67 1.69 4.82 -0.34 -5.04 1.67 4.73 2.06 3.39 0.82 1.21 0.8 1.21 1.87 5.07 
+1.73 3.39 0.91 1.25 0.89 1.29 0.74 0.37 1.48 0.78 0.71 0.39 1.06 2.3 1.04 2.32 
+0.72 0.41 0.73 0.42 0.91 2.23 0.89 2.23 0.82 0.5 0.82 0.48 0.98 1.48 0.95 1.5 
+0.91 0.98 p
+0.89 1 0.85 2.3 0.84 2.34 1.48 4.68 0.72 3.23 0.7 3.25 0.84 2.89 0.82 2.88 
+0.09 1.98 0.11 1.97 0.22 4.78 0.78 2.97 0.74 3.02 0.79 3.52 0.78 3.53 0.09 -3.23 
+0.08 -3.25 0.13 -2.28 0.13 -2.3 1.61 7.12 -0.32 1.65 -0.3 1.61 0.41 3.28 0.39 3.3 
+1.34 -1.65 0.48 2.93 0.43 2.93 0.26 3.21 0.21 3.23 0.74 3.3 0.7 3.32 0.13 2.67 
+0.15 2.67 0.83 0.98 0.84 0.98 0.2 2.37 0.21 2.38 0.61 1.26 0.61 1.28 0.28 2.48 
+0.29 2.49 0.71 0.41 0.7 0.43 0.52 -2.08 0.5 -2.08 0.41 -1.63 0.41 -1.65 -0.02 -3.27 
+-0.05 -3.3 0.63 2.91 0.61 2.95 0.48 0.61 0.48 0.63 1.34 -2.64 0.39 6.16 -0.59 1.45 
+-0.59 1.43 0.43 3.48 0.43 3.51 0.13 3.04 0.11 3.04 0.52 1.45 0.52 1.47 -0.28 2.48 
+-0.31 2.45 0.13 3.28 0.11 3.28 0.43 3.91 0.39 3.93 0.7 1.28 0.67 1.31 0.65 1.3 
+0.65 1.32 -0.02 3.97 -0.08 3.95 -0.59 2.13 -0.61 2.11 1.47 0.61 1.39 -2.64 0.59 0.65 
+0.56 0.65 1.3 0.04 0.61 0.07 0.63 0.08 0.39 2.41 0.37 2.43 0.5 -2.49 0.5 -2.52 
+0 4.64 -0.05 4.67 0.68 -1.43 0.67 -1.46 0.04 -3.84 0 -3.82 0.24 -3.96 0.22 -3.97 
+-0.52 -1.2 -0.52 -1.17 0.26 -3.78 0.21 -3.77 0.17 -3.17 0.13 -3.19 -0.13 -2.97 -0.16 -2.97 
+-0.06 -3.5 -0.09 -3.47 0.91 -3.61 0.43 -0.61 0.42 -0.61 0.2 -3.62 0.15 -3.64 0.74 1.21 
+0.72 1.22 0.41 -1.96 0.39 -1.98 0.31 -1.5 0.28 -1.52 0.54 -1.13 0.52 -1.15 0.45 -0.65 
+0.43 -0.65 0.16 -3.16 0.13 -3.17 0.43 -2.67 0.39 -2.69 0.49 1.37 0.5 1.39 1.09 5.81 
+0.11 4.41 0.09 4.39 0.26 4.08 0.24 4.1 0.2 4.82 0.17 4.82 -0.02 4.55 -0.07 4.51 
+-0.08 4.56 -0.11 4.53 -0.3 4.17 -0.32 4.14 -0.29 4.32 -0.32 4.29 -0.28 4.49 -0.33 4.47 
+-0.43 5.14 -0.48 5.12 -0.33 2.78 -0.34 2.78 -0.52 4.21 -0.56 4.19 -0.21 3.71 -0.24 3.71 
+-0.76 4.84 -0.79 4.79 -0.45 4.45 -0.48 4.43 0 57.33 -0.52 1.41 -0.07 -1.21 -0.09 -1.22 
+-0.17 -2.99 -0.11 -1.41 -0.15 -1.41 -0.11 -1.15 -0.15 -1.13 -0.76 2.37 -0.78 2.37 -0.76 1.43 
+-0.78 1.41 -0.93 1.69 -0.93 1.67 -1 2.63 -1 2.6 -1.22 3.23 -1.23 3.19 -0.11 -0.95 
+-0.11 -0.91 -0.52 -0.16 -0.54 -0.15 -0.37 0.13 -0.37 0.11 0.09 -1.84 0.07 -1.82 1.04 -4.52 
+0.98 -4.54 0.59 -2.84 0.54 -2.84 0.35 -2.7 0.3 -2.66 0.92 -2.78 0.91 -2.8 0.48 -2.54 
+0.5 -2.54 0.39 -3.93 0.32 -3.91 -0.45 -0.48 -0.46 -0.5 -0.13 -1.56 -0.15 -1.57 -0.28 -0.91 
+-0.33 -0.93 -0.72 1.26 -0.71 1.22 -0.72 1.56 -0.71 1.54 -0.7 1.7 -0.67 1.67 -0.04 -2.39 
+-0.04 -2.35 -0.2 -1.78 -0.24 -1.76 0.19 -3.53 0.17 -3.5 -0.26 -1.67 -0.29 -1.65 -0.78 5.08 
+-0.83 5.1 -0.63 3.71 -0.58 3.26 0 -89.47 0.32 -1.33 0.33 -1.34 -0.24 -3.84 -0.26 -3.8 
+-0.41 0.48 -0.43 0.5 -1.21 -2.3 -0.02 3.79 -0.04 3.8 0.54 -0.29 0.52 -0.3 0.46 2.3 
+0.46 2.32 0 89.47 -0.09 0.45 0.05 2.09 0 2.11 -1 3.02 -1 2.97 -1.17 3.56 
+-1.19 3.51 p
+-1.26 3.26 -1.28 3.21 -0.74 1.13 -0.76 1.13 -0.62 0.08 -0.61 0.04 -0.24 -0.32 0 -22.27 
+0.96 -2.71 0.95 -2.74 0.91 -4.25 0.87 -4.25 0.46 -3.91 0.42 -3.91 -0.91 3.86 -0.95 3.82 
+-0.74 3.71 -0.2 1.02 0 -27.54 0.65 -3.14 0.65 -3.19 0.11 -3.17 0.08 -3.16 -0.54 3.38 
+-0.57 3.37 -0.19 2.95 -0.2 2.97 0 27.54 -0.57 2.67 -0.59 3.34 -0.61 3.35 0 22.27 
+-0.24 -0.39 -0.5 -0.7 -1.3 -0.39 -0.48 -0.8 -0.35 -0.57 0 -94.68 -0.04 -2.76 -0.28 -2.54 
+-0.32 -2.54 -0.39 -2 -0.41 -1.97 -0.39 -2.02 -0.43 -2 -0.3 -2.95 -0.33 -2.93 -0.15 -3.76 
+-0.2 -3.73 -0.48 -1.95 -0.5 -1.91 -0.55 -1.39 -0.54 -1.36 -0.15 4.14 -0.2 4.14 0.09 2.45 
+0.07 2.45 0.37 1.71 0.34 1.74 0.87 3.95 0.04 4.86 0.5 2.21 0.48 2.2 0.55 1.69 
+0.52 1.67 0.43 1.61 0.43 1.58 0.5 1.07 0.48 1.08 0 91.93 -0.15 -0.24 -0.34 -1.22 
+-0.35 -1.2 -0.63 0.31 -0.63 0.28 -0.62 0.05 0 -82.54 0.17 -3.04 0.15 -3.02 -1.17 -2.52 
+-0.15 2.35 -0.15 2.37 0.59 1.93 0.57 1.93 0 82.54 -0.05 0 -0.65 0.04 -1.59 1.59 
+0.83 -4.3 0.78 -4.27 -0.34 -2.43 -0.63 1.76 0 -90.11 -0.76 -2.71 -0.76 -2.7 -0.09 2.32 
+-0.11 2.3 0.87 0.39 0.85 0.39 0 90.11 -0.19 0.56 -0.83 2.28 -0.65 1.76 -0.67 1.71 
+-0.8 0.74 -0.8 0.72 -0.3 -0.43 -0.33 -0.43 -0.2 1.67 -0.21 1.64 0.35 1.02 0.35 1 
+-0.37 2.69 -0.37 2.71 0.18 1.79 0.15 1.8 -0.62 2.13 0 -26.95 0.93 -1.5 0.91 -1.52 
+0.71 -2.41 0.72 -2.39 -0.7 0.08 -0.37 0.05 0 -85.83 -0.63 -2.3 -0.63 -2.28 -0.54 -2.08 
+-0.57 -2.06 -0.37 -1.7 -0.39 -1.7 -0.67 -0.49 -0.66 -0.5 -0.54 -1.37 -0.57 -1.37 -0.65 -0.48 
+-0.67 -0.48 -0.59 -0.87 0 -7.29 1.52 -1 0.74 -1.58 0.74 -1.63 -1.04 -4.51 -0.67 1.11 
+-0.7 1.11 -0.5 0.37 -0.52 0.37 -0.65 -0.84 -0.65 -0.87 -0.36 1.52 -0.37 1.49 0.59 1.34 
+0.61 1.37 0.65 0.88 0.63 0.89 0 7.29 -0.02 -0.04 -0.63 -0.91 -1.47 0.04 -0.57 -1.39 
+-0.59 -1.37 -0.61 -1.32 -0.58 -1.3 -1.02 -2.32 -0.91 -3.23 -1.26 -2.54 -1.95 -0.59 -1.39 -1.67 
+-0.26 5.45 0.93 3.19 1.54 -0.05 1.55 2.02 1.19 0.63 -1.15 3.55 1.93 0.59 1.48 2.11 
+0.84 -0.87 0.83 -0.89 0.48 2.26 0.48 2.28 1 3.6 0.71 0.07 0.72 0.04 0.72 0.02 
+0.71 0 1.08 2.78 0.67 -0.59 0.65 -0.61 0.24 3.77 0.2 3.8 0.97 0.59 0.96 0.56 
+0 85.83 -0.35 0.04 -1.52 -2.64 -0.46 -0.83 -0.48 -0.82 -0.11 -1.61 -0.13 -1.63 -0.78 -0.11 
+-0.81 -0.11 -0.32 2.78 -0.37 2.75 0.43 1.78 0.39 1.8 0.22 2.02 0.17 2.04 0.7 -0.29 
+0.67 -0.26 0.26 1.37 0.26 1.39 0 26.95 -0.39 1.32 -1.04 3.43 0.24 -2.8 0.21 -2.75 
+0.02 -2 0.02 -1.98 -0.17 -1.49 -0.16 -1.5 -0.65 0.21 -0.67 0.2 -0.84 2.39 -0.26 0.74 
+0 -42.86 1.52 -3.69 0.14 -2.26 0.11 -2.25 -0.63 -0.35 -0.61 -0.34 -1.78 3 0.13 2.16 
+0.11 2.2 0.52 0.78 0.5 0.76 0 42.86 -0.61 1.65 -0.3 -0.76 -0.29 -0.76 -1.12 -1.56 
+-0.87 4.02 p
+-0.91 4.03 -0.15 2.63 -0.2 2.65 -0.65 2.91 -0.35 1.5 0 -35.98 0.96 -0.26 0.95 -0.24 
+-0.5 -2.28 -0.5 -2.25 -0.91 5.04 0 35.98 -0.32 1.43 0.13 2.04 0.11 2.06 0.82 -0.59 
+0.84 -0.58 0.09 2.11 0.09 2.14 1.54 -2.97 1.54 -3.02 1.11 -3.43 1.09 -3.45 1.13 -2.41 
+1.13 -2.43 0.46 0.26 0.43 0.28 1.13 -2.48 1.11 -2.49 0.8 -0.72 0.79 -0.7 0.17 2.56 
+-0.84 3.32 -0.87 3.34 -1.47 5.77 -0.93 3.89 -0.96 3.89 -0.21 2.21 -0.22 2.24 -1.02 3.34 
+-1.04 3.32 -0.72 3.84 -0.76 3.84 0.57 0.23 0.54 0.24 1.48 0.09 0.33 0.71 0.32 0.74 
+0.3 0.82 0.29 0.8 -0.13 1.54 -0.15 1.56 0.5 0.57 0.48 0.54 0.28 0.78 0.26 0.8 
+0.26 0.78 0.29 0.81 0.26 0.54 0.26 0.56 0.87 1.17 0 1.37 -0.02 1.37 1.82 1.13 
+0 27.11 -0.5 1.84 -1.08 4.04 -2.89 6.77 -2.95 6.73 -0.67 2.14 -0.7 2.18 -2.82 5.01 
+-0.48 0.87 0 -78.73 2 -2.56 0.24 -1.93 0.24 -1.95 -1.22 1.26 -1.21 1.24 -0.05 3.95 
+0 78.73 -2.34 4.06 -0.61 1.71 0 -109.55 0.24 -2.43 0.2 -2.41 -0.65 0.11 -0.67 0.13 
+-0.22 2.14 -0.24 2.17 0.67 0.15 0.67 0.13 0 109.55 -0.76 2.21 -1.45 3.97 0 1.84 
+-1.69 2.67 -2.23 3.28 -2.26 3.21 0.35 -1.17 0.32 -1.17 -0.63 0.02 -0.65 0 -0.61 -0.06 
+-0.63 -0.07 0.39 1.56 0.65 1.04 0.41 -0.07 0.39 -0.09 0.87 0.96 0 46.74 -2.67 4.36 
+-2.25 3.54 0 -176.2 1.69 -5.21 0.97 -1.43 0.98 -1.41 -0.31 2.97 -0.34 3 1.09 -2.56 
+1.07 -2.58 0.36 -2.52 0.35 -2.49 0.78 -1 0.79 -1.02 -0.2 -1.43 -0.21 -1.41 1.9 -5.68 
+0.88 -2 0.84 -1.99 2.34 -3.04 -0.91 0.46 -0.89 0.43 -0.95 1.24 -0.98 1.21 -0.76 2.45 
+-0.78 2.45 -0.87 1.93 -0.89 1.93 -0.93 1.41 -0.96 1.41 -0.78 2.62 -0.8 2.63 -0.85 2.34 
+-0.84 2.37 -0.39 2.45 -0.39 2.47 0 176.2 -0.93 1.45 0 -198.65 1.25 -1.13 0.68 -2.76 
+0.65 -2.78 0.7 -3.62 0.65 -3.62 -0.09 -2.32 -0.11 -2.3 -0.39 -3.47 -0.66 -0.41 -0.65 -0.43 
+-0.74 -2.52 -0.39 -1.24 -0.39 -1.26 -0.93 -2.84 -0.41 -2.82 -0.83 -0.83 -0.33 -2.41 1.11 -6.04 
+1.78 -5.79 1.67 -0.13 1.37 -3.67 0.91 2.32 -0.5 6.05 0.87 2.39 0.16 2.09 0.15 2.06 
+0.39 4.64 0.8 -0.91 0.82 -0.91 -0.46 -1.43 -0.48 -1.43 0.3 -3.12 0.28 -3.11 0.15 -2.73 
+0.13 -2.73 -0.16 -2.65 -0.17 -2.63 1.11 -1.58 1.09 -1.59 0.67 -1.12 0.7 -1.13 0.8 -1.63 
+0.79 -1.61 0.13 -2.52 0.09 -2.5 0.82 -0.8 0.83 -0.78 0.95 -1.91 0.93 -1.93 0.85 -1.5 
+0.82 -1.52 0.7 -3.14 0.66 -3.15 -0.14 -2.95 -0.15 -2.93 -1.43 2.21 -0.83 4.04 -0.87 4.04 
+-0.04 -2.06 -0.06 -2.06 -0.61 -0.07 -0.63 -0.05 -0.57 3.32 -0.61 3.3 -0.82 0.21 -0.81 0.22 
+-0.76 1.58 -0.76 1.56 -0.35 2.52 -0.39 2.54 -0.41 1.7 -0.43 1.69 -0.42 -0.93 -0.39 -0.91 
+-0.02 -5.23 1.58 -4.38 1.17 -5.16 0.59 -2.61 0.54 -2.61 0.46 -2.8 0.41 -2.8 0.63 -2.45 
+0.58 -2.45 -0.48 -1.46 -0.5 -1.43 -0.95 -1.69 -0.98 3.95 -0.85 6.77 -1.07 6.36 -1.52 4.41 
+-1.09 -2.15 p
+-1.95 6.04 -0.28 5.58 -0.96 5.68 -1.61 5.86 -0.8 4.8 -0.37 4.86 -0.39 1.29 0 -88.42 
+-1.02 -4.68 -1.78 1.28 1.41 1.7 1.39 1.71 0 88.42 -1.08 3.6 -1.39 5.25 -0.91 3.56 
+1.15 3.23 -1.55 6.82 1.34 0.91 1.2 2.02 1.02 1.73 0.61 0.21 0.61 0.24 0.13 1.5 
+0.11 1.49 0.41 1.52 0.39 1.52 -0.12 2.56 -0.16 2.54 -0.41 2.52 -0.43 2.52 -0.7 3.82 
+0 198.65 -2.89 4.56 -6.25 9.44 -6.4 9.33 -6.58 9.22 -6.72 9.12 -6.88 8.98 -7.03 8.86 
+-7.21 8.74 -7.34 8.62 -7.5 8.46 -3.82 4.19 -3.82 4.16 -3.88 4.1 -3.89 4.13 -7.94 8.07 
+-4.04 3.97 -4.01 3.97 -4.11 3.89 -4.1 3.91 -4.19 3.82 2.8 -2.58 3.52 -3.27 3.47 -3.3 
+2.34 -2.25 2.32 -2.24 2.26 -2.26 2.25 -2.21 2.21 -2.21 2.19 -2.21 2.15 -2.2 2.11 -2.19 
+2.11 -2.17 2.06 -2.15 2.04 -2.17 1.99 -2.12 1.98 -2.13 1.95 -2.13 1.91 -2.11 1.89 -2.11 
+1.87 -2.08 1.84 -2.09 1.82 -2.04 1.78 -2.06 1.76 -2.04 1.73 -2.02 1.71 -2.02 0.96 -1.13 
+0.93 -1.11 0.91 -1.11 0.91 -1.09 0.89 -1.08 0.87 -1.04 0.87 -1.07 0.85 -1.04 0.82 -1.02 
+0.83 -1 1.61 -1.99 1.56 -1.95 0.76 -0.96 1.47 -1.87 0.72 -0.93 0.74 -0.91 0.7 -0.91 
+0.69 -0.89 -1.04 1.33 0 -174.92 2.23 -0.06 2.63 -2.24 1.49 -2.47 1.48 -2.49 2.99 -3.56 
+1.06 -1.84 1.04 -1.84 1.02 -2.61 1 -2.62 1.19 -2.71 1.18 -2.71 -2.91 4.3 -1.06 1.08 
+-1.05 1.06 0.76 -2.17 0.76 -2.2 1.11 -3.21 0.84 -0.74 0.85 -0.76 0.84 -1.04 0.87 -1.04 
+1.09 -3.21 1.06 -3.23 -0.89 0.57 -0.89 0.58 -0.11 -0.93 -0.09 -0.96 -1.43 -0.11 -1.36 0.37 
+-2.7 5.14 -1.39 4.3 -1.32 0.75 -1.06 -0.91 1.34 -4.68 0.17 -2.63 -1.99 3.12 0.13 -2.49 
+1.72 -4.99 1.71 -4.59 -1.58 2.52 -2.54 5.42 -0.96 3.52 -0.46 4.21 -1.19 3.58 0 -44.03 
+1.35 -0.87 2.02 -0.34 1.95 -4.32 1.39 1.02 2 -0.41 1.67 0.3 -0.04 -3.99 -0.11 -3.97 
+2.02 -2.04 -0.41 -4.73 1.91 -5.62 0.89 -5.36 2.15 -3.36 1.97 -2.28 0.63 -4.23 2.12 -1.93 
+1.8 -1.13 1.65 -1.58 -0.79 -3.55 -0.96 -2.3 0.5 -4.23 1.1 -5.51 1.46 -5.88 0.61 -5.12 
+-0.07 -4.97 0.11 -5.82 1.97 -3.41 0.74 -7.92 0.69 -5.53 -0.71 -4.45 -0.73 -4.39 -0.76 -3.19 
+-1 3.67 -1.11 1.43 0 -40.26 1.24 -1.32 0.7 -3.86 1.87 0.28 1.32 2.59 1.47 0.78 
+0.54 -5.04 2.13 4.51 1.43 -1.13 -0.96 -5.96 -1.29 2.32 -1.32 0.26 0.41 -4.14 -1.28 -0.57 
+-1.34 0.33 -1.59 -0.02 -1.54 -3.45 -1.61 -0.02 -1.48 -1.59 -1.59 -0.71 -1.56 -0.79 -1.73 0.83 
+-1.35 -0.54 -1.78 -1.8 -1.24 -2.04 -1.87 -1.02 -1.54 1.05 -1.91 -0.92 -1.67 -0.75 0.04 2.52 
+-2.08 0.52 -1.67 -0.79 0.73 4.05 0.26 5.28 2.04 0.3 1.11 2.84 1.15 0.24 1.82 -0.7 
+1.63 0.84 1.21 -3.1 1.32 0.56 1.52 1.59 1.59 0.87 1.26 1.34 0.39 5.86 1.76 -0.74 
+1.91 0.34 1.52 0.89 0 40.26 -0.41 0.52 -1.11 -2.78 -2.15 1 -0.61 -3.95 -1.32 -1.87 
+-1.04 -3.45 -1.61 6.68 -0.57 -2.8 -1.22 -2.59 -1.75 -1.43 -1.32 5.1 -1.61 4.63 -1.02 4.51 
+-1.96 3.21 p
+-0.22 0.11 0 -22.44 0.14 -5.36 -1.35 -0.61 -0.76 5.45 1.97 0.52 0 22.44 -1.84 0.93 
+-1.11 4.41 -1.45 2.02 -1.56 4.75 -1.02 5.62 0 5.27 1.91 -0.15 1.65 1.63 1.46 1.24 
+-1.2 6.88 -1.24 5.75 0.89 2.89 1.07 3.17 0.09 5.03 -0.78 4.75 -0.18 4.71 -0.95 7.34 
+0.08 4.45 1.24 3.11 -1.45 3.54 -0.8 7.03 -1.3 4.38 -0.46 5.23 -1.15 5.16 0 44.03 
+-0.22 0.61 -0.56 3.79 0.97 0.43 2.09 -3.05 -1.5 4.77 -0.21 3.11 -2.45 5.16 0.95 0.54 
+-1.19 4.04 -3.47 5.12 0 174.92 -1.59 2.02 -2.62 3.3 -2.62 3.28 -2.65 3.21 -2.62 3.19 
+-2.61 3.11 0 -172.03 2.28 -1.76 2.24 -3.23 3.17 -3.67 0.02 -3.97 2.15 -3.29 2.23 -1.93 
+0.34 -3.59 -3.02 4.71 -0.46 -1.28 -1.37 2.09 0 -2.52 2.58 -4.01 2.09 -3.32 0.59 2.15 
+2.1 -3.39 0.3 -3.62 -1.8 1.37 1.61 -4.23 -0.98 -0.45 2.54 -3.23 1.05 -3.95 -1.79 0.91 
+-2.17 2.06 -1.02 4.34 -2.09 3.41 -0.95 -0.54 0.11 -3.89 -2.02 3.8 -2.48 4.43 -0.72 0.76 
+0 -16.17 3.69 -5.03 1.5 -6.01 0.41 -3.06 2 -5.34 1.04 -4.9 1.13 -3.97 0.57 -6.1 
+-1.8 5.36 -0.93 4.82 -1.29 5.99 -1.15 4.36 -1.91 6.2 -3.26 7.68 0 16.17 -1.43 1.57 
+0.63 2.6 1.3 -1.5 0.17 3.34 2.96 -5.12 0.58 1.67 2.06 -3.77 -1.15 4.38 -2.08 4.25 
+0 2.52 -1.73 2.62 0.5 1.67 -2.26 4.32 -1.32 -0.97 -2.69 2.91 0.41 1.82 -0.5 3.56 
+0 172.03 -0.02 0.04 -2.64 3.11 -2.65 3.06 -2.63 3.04 -2.64 2.99 -2.62 2.95 -2.62 2.9 
+-2.65 2.89 -2.63 2.84 -2.62 2.8 -2.63 2.75 -2.61 2.73 -2.62 2.69 -1.59 1.63 0 -182.53 
+3.37 -4.73 2.87 -3.36 1.86 -0.46 2.84 -4.4 2.32 -4.71 2.3 -5.29 2.69 -4.45 3.64 -3.47 
+2.69 -2.78 0.93 1.17 -1.3 3.71 0 1.93 0.93 1.08 1.32 1.54 0.48 -2.56 1.82 -1.59 
+2.22 -0.67 0.49 -2.64 -0.93 -1.07 -3.12 2.43 -1.39 -0.98 1.78 -1.96 2.24 -3.17 -1.67 0.85 
+0 -6.9 1.8 -0.67 2.59 -3.82 1.49 -4.8 -1.78 1.17 -2.61 2.87 -2.3 1.37 0.18 2.26 
+0.63 1.63 0 6.9 -1.55 0.76 -1.41 -0.48 1.64 -5.32 -1.08 -1.91 -2.19 3.11 -1.63 4.23 
+-1.41 0.02 1.71 -2.91 -1.91 -0.32 -2.65 3.19 -2.23 2.56 -3.13 3.6 1.05 1.52 -2.72 3.49 
+-3.21 5 -2.25 1.86 -2.32 3.76 -2.82 4.25 -0.48 2.75 1.34 0.67 0.39 1.81 -1.54 3.93 
+0 182.53 -1.52 1.54 -6.3 6.3 -3.19 3.11 -1.61 1.56 0 -243.36 1.65 -2.14 1.3 -3.76 
+2.26 -4.1 1.19 -3.71 0.55 -4 -0.55 -1.93 -1.86 -0.61 -2.09 2.43 -1.93 2.69 -0.67 3.5 
+-1.02 4.51 0.09 2.46 0.56 2.32 0.52 2.34 0 243.36 -1.61 1.54 -3.23 3.09 -3.25 3.04 
+-6.6 6.08 -3.32 3 -3.37 2.97 -3.36 2.95 -2 1.72 0 -182.23 3.11 -2.73 3.23 -4.1 
+3.66 -4.21 3.13 -3.78 2.67 -4.23 3.54 -4.36 -2.43 1.63 -0.82 -0.87 -3.47 2.63 -2.97 2.88 
+-3.17 4.58 -2.62 3.63 -2.78 4.05 -1.87 4 0.8 0.89 0 182.23 -1.41 1.21 -3.41 2.91 
+-3.45 2.89 -3.45 2.86 -3.47 2.82 -2.93 2.37 -2.97 2.37 -3 2.36 -3.05 2.37 -3.08 2.39 
+-3.14 2.37 p
+-3.18 2.38 -3.21 2.37 -3.28 2.39 -3.29 2.38 -3.34 2.37 -3.41 2.39 -3.43 2.39 -3.49 2.36 
+-3.54 2.39 -3.56 2.37 -3.64 2.37 -3.66 2.36 -3.71 2.34 -1.68 1.07 -3.43 2.13 -1.75 1.08 
+-1.79 1.08 -1.8 1.09 -1.82 1.11 -1.87 1.11 -1.87 1.13 -3.86 2.25 -1.98 1.13 -1.99 1.15 
+-2.02 1.17 -2.07 1.15 -2.1 1.17 -2.13 1.2 -2.15 1.17 -2.19 1.2 -2.24 1.19 -2.25 1.22 
+-2.28 1.21 1.63 -0.84 1.63 -0.87 1.67 -0.89 1.67 -0.91 1.7 -0.92 1.71 -0.93 1.71 -0.95 
+1.74 -0.95 1.76 -0.98 1.78 -1 3.61 -2.04 1.82 -1.04 1.84 -1.09 1.87 -1.09 1.5 -0.87 
+-4.88 2.88 -4.92 2.78 -4.91 2.78 -4.97 2.71 -4.97 2.7 -5.01 2.63 -5.04 2.6 -5.06 2.54 
+-5.05 2.52 -5.1 2.46 -5.1 2.43 -3.78 1.72 0 -130.04 4.28 -0.98 3.64 -1.82 2.8 -0.5 
+1.82 -1.91 2.37 -1.04 3.02 -0.33 4.26 -1.2 2.78 -1.58 4.32 -1.34 2.13 0.11 3.14 -2.06 
+2.65 -1.06 4.17 -3.39 -4.32 1.52 2.76 -1.72 2.07 -2.49 5.64 -2.64 -2.82 0.24 5.79 -4.06 
+3.17 -4.21 -1.07 -1.54 3.19 -2.04 1.45 0.43 4.95 -4.02 4.95 -3.52 0.57 -1.5 -1.84 -0.13 
+0 -2.34 2.06 -0.48 2.84 -2.48 3.1 -2.26 -0.72 -0.98 2.74 -3.1 2.23 -1.65 2.78 -1.87 
+0.26 -2.06 -2.97 0.7 -2.93 2.93 -2.78 1.82 -0.93 2.3 -3.05 2.24 -2.13 2.78 -0.5 2.11 
+0 2.34 -0.21 -0.02 -2.85 1.11 -4.03 2.78 1.95 -2.93 0.83 -1.91 3.6 -3.61 1.84 -2.34 
+2.95 -3.43 2.28 -3.21 3.22 -2.66 0.84 -2.3 2.11 -3.2 1.3 0 -1.35 2.56 2.65 -0.87 
+2.21 -0.09 3.54 -2.66 4.12 -3.02 3.69 -2.23 3.84 -4.34 0.29 -2.47 -2.88 1.56 -2.82 1.48 
+-2.54 2.61 -2.89 1.45 -1.65 -0.15 2.48 -1.54 1.02 -2.17 -2.82 0.46 -2.93 3.38 -3.32 3.21 
+-1.93 2.84 -2.82 1.29 -2.52 3.04 -2.87 2.8 -3.71 3.45 -4.12 3.23 -1.5 2.47 -2.89 3.93 
+-2.8 3.54 -2.47 3.06 0.29 1.47 -2.32 2.04 -2.82 0.93 -3.52 2.34 -4.04 2.52 -3.16 1.21 
+-3.26 2.47 3.5 -1.61 2.28 -0.67 -3.88 3.3 -3.41 3.12 -3.3 2.37 -3.78 1.87 -3.71 2.71 
+-4.05 1.52 -4.17 2.06 -3.49 1.3 -3.35 0.59 -2.73 0.45 -2.23 0.34 -4.64 1.89 0.24 1.21 
+-1.7 1.73 -1.65 0.22 1.37 -1.39 -2.5 0.61 -1.34 2.34 2.54 -0.65 2.37 0.04 1.25 1.05 
+2.56 0.28 0 130.04 -1.39 0.63 -5.14 2.34 -10.38 4.52 -5.21 2.16 -5.23 2.18 -5.25 2.08 
+-5.27 2.06 -5.29 1.99 -5.3 1.98 -5.34 1.89 -5.32 1.88 -10.72 3.61 -5.41 1.7 -5.38 1.71 
+-10.85 3.21 -5.45 1.52 -5.45 1.49 -5.49 1.43 -5.47 1.41 -10.98 2.65 -5.54 1.21 -5.51 1.24 
+-5.55 1.13 -5.53 1.13 -5.56 1.05 -5.55 1.02 -11.16 1.87 -5.6 0.85 -5.59 0.82 -11.2 1.48 
+-11.24 1.3 -5.64 0.52 -5.62 0.54 -5.64 0.45 -5.64 0.44 -11.28 0.7 -5.64 0.25 -5.64 0.24 
+-5.66 0.16 -2.04 0.04 0 -0.11 2.54 -0.07 2.52 -0.08 1.04 -0.02 1.21 -0.05 0.26 -0.02 
+2.5 -0.09 2.13 -0.08 6.1 -0.29 6.07 -0.34 6.07 -0.39 6.08 -0.46 6.06 -0.5 6.01 -0.58 
+6.04 -0.61 5.99 -0.68 5.99 -0.73 5.95 -0.79 5.95 -0.84 5.92 -0.89 5.88 -0.95 5.86 -1 
+5.84 -1.05 p
+5.8 -1.08 6.18 -1.24 6.2 -1.28 6.21 -1.34 6.23 -1.43 6.23 -1.5 6.25 -1.56 6.25 -1.63 
+6.25 -1.69 6.25 -1.76 6.25 -1.82 6.27 -1.91 6.25 -1.97 6.25 -2.04 6.23 -2.11 6.23 -2.18 
+6.23 -2.23 6.21 -2.3 6.19 -2.39 0.32 -0.12 0.3 -0.11 0.61 -0.26 0.3 -0.11 0.29 -0.13 
+0.3 -0.11 0.28 -0.13 0.84 -0.32 0.29 -0.13 1.3 -0.54 -5.75 2.25 -5.62 2.15 0 -129.8 
+3.91 -1.89 4.23 -2.23 2.14 -2.23 4.35 -2.02 3.66 -1.45 2.45 -0.46 1.72 -2.91 0.74 -2.52 
+2.6 -2.06 2.8 -1.78 -0.09 -0.89 1.37 -1.39 1.95 -0.5 -0.58 1.58 -0.07 1.52 3.43 -2.54 
+3.67 -2.3 -3.82 0.5 -0.63 -0.82 -2.5 0.61 -4.53 2.61 -1.8 -0.16 -1.15 1.63 -2.04 1.98 
+-1.93 0.43 -1.8 -0.15 -2.93 1.37 -2.47 0.45 -3 0.41 -2.15 -0.82 -3.28 1.58 0.42 1.47 
+1.21 1.2 0.18 1.22 -0.44 2.13 -1.56 2.19 -1.73 1.86 -5.04 2.43 4.59 -1.17 -0.11 0.93 
+1.52 0 -3.28 2.19 0 129.8 -0.41 0.17 -6.08 2.23 -6.1 2.22 -6.14 2.12 -6.14 2.06 
+-1.91 0.63 0 -129.47 5.67 -1.96 5.17 -2.14 4.75 -1.91 -5.82 1.52 -4.34 1.55 -1.54 1.45 
+-3.89 1.5 0 129.47 -0.56 0.17 0 -146.57 0.87 -1.95 1.95 -1.59 2.8 -0.93 2.34 -0.15 
+3.52 -0.65 3.37 -0.13 1.34 0.65 0.22 1.17 1.67 0.35 -0.35 1.19 3.06 0.11 -0.29 -1.52 
+1.15 -1.48 2.89 -1.15 4.1 -0.89 -3.12 -0.87 -3.58 0.84 -3.58 -0.06 -3.25 0.49 -2.41 -0.7 
+-0.87 -0.62 -2.67 0.45 -2.84 0.11 -3.04 -0.22 -2.72 -0.5 -3.29 -0.02 -2.21 -0.48 -0.78 -1.2 
+-2.99 -0.32 -3.54 0.11 -3.15 -0.67 -3.19 1.17 -2.32 0.46 -1.59 -1.06 -1.89 1.04 1.04 1 
+2.61 0.7 2.28 0.93 2.91 0.43 3.26 0.15 1.99 1.13 2.29 0.87 2.3 0.87 3.91 2.17 
+1.82 0.76 0 146.57 -3.71 1.21 -6.21 1.95 -2.04 0.64 0 -128.65 6.14 -1.69 2.11 -1 
+-4.8 1.26 -3.45 1.43 0 128.65 -4.19 1.28 -6.25 1.82 -6.27 1.76 -6.29 1.71 -6.3 1.63 
+-6.32 1.58 -6.31 1.5 -4.95 1.13 0 -132.27 4.26 -1.2 -1.24 -0.52 -3.19 0.91 -3.56 0.29 
+1.11 0.52 2.63 0 0 132.27 -1.36 0.33 -7.25 1.56 -7.25 1.47 -7.23 1.39 -7.21 1.33 
+-2.56 0.43 0 -136.98 3.71 -1.37 4.23 -0.28 3.08 1.06 4.88 0.3 4.73 -0.3 4.75 -0.74 
+-0.56 -1.06 -1.82 -0.89 -1.76 -1.24 -0.87 -1.97 -2.13 -1.43 -1.73 -1.67 -1.05 -1.24 -1.39 -1.47 
+-1.43 -1.11 -2.82 -1.2 -3.15 -0.74 -3.12 -0.78 -3.5 0.74 -3.04 -0.52 -0.59 -1.13 -2.78 1.09 
+-4.04 0.5 -4.62 -0.02 -4.21 -0.2 -3.11 -0.67 -4.77 -0.12 -3.95 -0.43 -2.41 -0.66 -3.69 0.07 
+-3.73 0.39 -1.93 -0.84 -2.24 -1.71 -1.93 -1.5 -3.16 -0.21 0.78 -0.87 4.78 -0.55 2.41 1.05 
+1.17 1.32 2.8 -0.41 3.19 0.39 3.58 0.26 4.3 0.02 -0.17 -1.35 -0.79 -1.11 -3.75 -1.18 
+3.58 -0.5 1.89 -1.3 3.54 -0.93 4.18 -0.82 3.67 0.32 3.73 0.33 4.04 -0.24 3.54 0.3 
+3.3 0.73 -2.11 1.29 -0.26 1.2 4.79 -1.72 2.11 -1.37 2.25 -0.28 4.14 -1.26 2.43 -1.21 
+-0.26 -1.02 -3.26 0.5 0.07 -1.17 2.13 -0.71 1.91 -1.39 1.5 -1.61 2.08 -0.75 1.47 0.37 
+1.13 0.17 p
+1.84 -1.43 2.91 -1.3 2.15 -2.17 3.17 -0.72 0.24 -0.97 2.87 -1.87 3.1 -2.11 2.78 -1.63 
+0.67 -0.39 3.39 -1.11 2.84 -0.28 3.41 -1.2 3.19 -0.57 2.87 -0.39 3.16 -1.12 3.89 -1.33 
+3.47 -0.95 4.69 -1.09 4.41 -1.47 3.97 -1.61 4.39 -1.61 0.82 -0.46 2.8 -1.57 1.34 0.3 
+-0.78 1.95 -2.63 2.07 2.54 0.17 2.63 0.13 -3.82 1.02 -2.25 1.63 2.61 0.2 3.05 -0.84 
+-3.84 2.57 -4.86 1.38 -2.08 1.87 -0.7 1.19 0 -5.62 4.06 -1.15 -0.57 -1.02 -2.82 0.5 
+-0.67 1.67 0 5.62 -0.43 0.76 1.24 0.41 -0.16 1.57 -0.45 1.8 3.37 -0.41 2.45 0.28 
+0.63 0.87 2.91 -0.52 3.62 -0.78 3.43 -0.59 3.34 -0.07 2.8 0.41 3.57 0.15 3.21 -0.5 
+3.69 -0.48 1.15 -0.48 4.4 -1.8 4.95 -1.8 1.07 -0.46 3.38 -1.43 4.63 -1.11 3.86 -1.41 
+4.14 -1.78 4.73 -2.47 5.29 -2.7 4.97 -2.97 0.54 -0.17 2.73 -0.93 4.97 -2.58 3.8 -3.04 
+4.1 -2.86 3.1 -3.02 0.5 -2.71 -2.23 0.52 1.63 -2.39 2.39 -1.43 3.75 -2.08 0.91 -1.41 
+2.67 -1.29 2.71 -2.8 4.66 -3.12 1.48 -0.15 3.43 -1.07 2.13 -2.19 3.53 -2.97 2.89 -2.8 
+2.06 -2.24 1.71 -2.45 1.34 0.13 2.63 -1.63 0.59 1.59 1.3 1.02 2.3 0.02 1.48 0.63 
+2.06 0.43 3.04 -0.63 3.21 -1 3.43 -1.47 3.11 -1.7 3.41 -2.49 3.06 -3.64 2.28 -4 
+2.3 -3.38 3.49 -4.06 -2.89 0.52 -3.41 1.69 -3.69 3.43 -3.43 0.68 -3.37 0.3 -1.71 2.98 
+-2.49 0.48 -1.26 -1.3 1.99 -3.71 -1.71 -1.37 -3.3 2.39 -3.16 2.02 -3.88 2.54 -0.44 -1.06 
+0.16 -1.54 -0.04 -2.12 1.54 -2.78 1.95 -2.67 2 -3.04 2.78 -2.54 2.41 -2.99 1.09 -2.06 
+-3.5 3.54 -1.73 -0.43 -1.91 1.52 -2.3 2.59 -3.32 2.66 -2.26 -0.2 0.35 -2.58 2.86 -2.78 
+3.3 -3.02 1.76 -2.67 2.26 -2.93 2.39 -1.83 1.93 -1.91 1.21 -2.8 -0.71 -1.21 2.47 -2.56 
+2.32 -1.58 1.87 0.28 1.26 0.89 1.15 1.28 2.67 -1.13 1.21 0.91 -0.45 1.89 -1.93 2.02 
+-2.04 2.37 -1.74 2.82 1.24 0.65 -0.02 1.58 -0.7 2.26 -0.11 1.95 3.71 -2.86 -0.67 -0.91 
+2.34 -3.15 1.98 -3.66 2.91 -2.23 2.21 -3.22 2.78 -3.6 2.4 -2.43 2.97 -2.82 1.07 1.69 
+1.04 1.72 3.09 -1.22 2.49 -0.87 2.56 -0.98 2.65 -1.34 0.67 0.93 1.76 0.61 2.5 -0.97 
+0.63 -2.87 2.09 1.04 2.06 -1.02 1.04 -2.5 1.37 -2.37 1.85 -2.39 1.04 -2.88 0.71 0.89 
+-1.06 3.28 0.75 0.91 0.07 1.71 1.7 -1.56 3.82 -3.11 0.26 -1.28 3.36 -3.28 1.52 -0.78 
+1.73 -2.07 0.28 -1.73 2.34 -2.97 2.76 -3.37 2.8 -3.43 2.25 -3.43 -0.3 -1.26 2.54 -1.8 
+2.06 -2.19 2.67 -3.56 2.11 -3.08 1.61 -3.14 2.56 -3.17 0.11 -2.56 1.95 -1.87 1.52 -3.19 
+1.93 -3.99 1.43 -3.61 1.91 -4.54 1.32 -3.99 0.3 -3 0.3 -2.95 -0.22 -2.47 2.15 -4.17 
+-2.54 0.11 2.63 -3.86 -2.02 -0.02 2.62 -3.45 0.55 -3.45 0.04 -2.89 0.89 -3.93 -0.11 -3.23 
+0.39 -3.41 1.5 -2.87 2.37 -1.52 0.58 -2.26 -0.37 -1.52 -2.28 1.91 -1.32 1.22 -2.02 3.01 
+-0.37 -1.52 -1.71 -0.34 -0.56 -2.26 0.24 -3.32 0.7 -3.47 0.54 -3.8 1 -3.9 1.63 -3.8 
+0.76 -4.32 p
+1.67 -3.45 1.98 -4.02 3.17 -2.37 2.2 -0.47 1.61 -1.83 2.54 -1.04 2.37 -1.3 2.66 -0.68 
+2.11 -0.43 2.39 -1.41 2.47 -1.11 2.8 -3.34 2.41 -2.8 2.23 -3.26 2.08 -3.64 1.73 -3.08 
+2.52 -5.23 1.64 -3.12 1 -3.23 0 -4.1 0.11 -3.71 0.11 -3.67 0.02 -3.7 -1.24 -2.45 
+2.11 -4.47 0.67 -4.55 -0.84 -2.76 0.15 -4.21 0.09 -4.23 -1.75 2.45 -1.65 3.8 -1.31 4.47 
+-1.75 -0.76 -1.72 1.45 -1.39 -2.34 -2.17 0.85 -2 2.02 -1.88 2.39 -1.74 1.39 -1.39 -0.09 
+-2.49 1.37 -1 -1.63 -1.5 -1.36 -2.04 4.12 -1.82 -0.76 -0.45 -2.82 1.8 -4.43 2.28 -4.78 
+0.91 -3.6 1.2 -4.23 0.41 -3.41 1.37 -4.82 1.78 -4.25 1.93 -3.1 1.17 2.45 2.21 -4.66 
+1.89 -1.24 1.91 -3.14 2.11 -3.8 1.65 -0.67 1.86 1.45 2.07 -1.93 2.1 -1.06 2.07 -1.02 
+2.04 -1.06 2.25 -2.67 1.32 -3.99 1.26 -4.02 1.24 -4.02 1.19 -4.06 1.76 -1.56 2.28 -3.56 
+1.78 -4.19 -2.19 -2.67 -1.52 0.89 -1.8 0.56 -2.04 0.29 -1.71 1.5 -2.23 0.91 -1.41 3.67 
+-2.21 1.89 -2.2 2.73 -0.96 4.23 -1.56 1.69 -1.76 4.25 -1.07 3.14 -1.08 2.17 -1.2 1.46 
+-1.87 1.32 -1.84 1.3 -0.24 0.26 0 -22.48 2.08 -1.09 1.76 -2.39 2 -2.12 2.04 -1.13 
+2.13 -0.25 2.28 -0.87 2.11 -2.84 2.36 -2.56 1.37 2.36 2.61 -2.3 1.67 1.07 2.32 -2.63 
+1.43 0.7 0.76 -4.41 1.28 1.46 2.06 -2 0.57 -3.8 0.02 -4.38 1.61 -1.67 1.8 2 
+1.68 -5.17 1.48 -1 1.17 -3.02 1.52 1.7 1.59 -1.82 -0.46 3.95 -1.17 1.32 -1.65 -1.02 
+0.15 3.8 1.35 2.43 1.65 -3.49 1.21 -3.09 1.13 0.43 0.59 -4.69 -2.8 0.35 1.28 -2.04 
+0.02 -5.25 0.96 -5.92 0.65 -4.45 0.44 -5.45 0.32 -4.73 -1.61 0.93 -1.32 -1.26 -0.29 -2.73 
+-1.24 0.5 -1.91 3.11 -2.02 1.34 -2.78 2.28 -1.86 2.34 -1 2.28 -2.08 1.26 -2.2 3.64 
+-2.08 2.91 -0.91 3.11 -2.02 3.84 -0.93 3.11 -2.08 2.08 -1.13 2.13 -1.07 0.06 0 -10.8 
+2.56 -4.82 -1.02 -1.7 -1.21 1.26 -1.02 3.82 0.7 1.43 0 10.8 -1.25 0.09 -1.78 4.82 
+-1.76 3.17 -0.63 2.63 -2.3 1.04 -1.43 0.21 0 -8.16 2.59 -2.37 0.74 -3.34 -2.13 1.99 
+-1.71 1.56 0.52 2.15 0 8.16 -0.7 0.11 -1.52 3.39 -2.21 1.8 -1.97 2.15 -1.29 -0.5 
+-2.69 2.19 -2.28 1.85 -1.74 2.34 -1.43 3.45 1.91 1.96 2.08 -1.2 1.89 1.97 2.28 1.63 
+0 22.48 -2.13 2.28 -2.37 1.65 -0.25 -2.17 -1.67 2.52 -1.41 3.69 -0.98 5.16 -1.78 4.32 
+-1.54 3.63 -0.32 3.32 -1.34 3.02 -2.28 2.66 -1.23 5.06 -2.41 3.45 -1.06 1.08 0 -541.79 
+-1.93 -2.63 -1.95 -2.62 -3.11 -3.69 -3.17 -3.69 -1 -1.52 -1.04 -1.55 -0.02 -0.58 -0.02 -0.61 
+-0.48 -1.73 -1.72 -1.91 -1.73 -1.93 -3.15 -2.82 -3.14 -2.8 -3.15 -2.76 -3.14 -2.71 -0.72 -0.48 
+-0.71 -0.45 -2.21 -1.71 -2.2 -1.67 -2.95 -2.37 -2.95 -2.32 2.47 2.41 2.45 2.41 -1.43 -0.87 
+-1.41 -0.85 -1.82 -1.17 -1.82 -1.15 1.66 1.91 1.63 1.89 2.5 2.52 2.45 2.54 2.45 2.32 
+2.43 2.32 2.82 2.62 2.82 2.65 2.11 1.97 2.13 1.98 2.91 2.93 2.88 2.93 3.71 3.67 
+3.69 3.73 p
+2.93 2.86 2.93 2.93 0 541.79 -1.8 1.82 -2.45 3.38 -2.17 2.87 -2.3 3.62 -2 3.11 
+-2.28 2.75 -2.37 1.56 -1.45 -0.08 0.82 -2.91 -0.39 -3.54 -0.2 -3.23 0.28 -3.43 -1.13 -1.52 
+-1.17 -0.65 -2.23 -0.11 -1.29 3.93 -1.67 4.49 -2.32 3.56 -2.56 3.17 -2.28 2.66 -0.89 -1.21 
+-2.21 1.8 -0.5 2.23 -2.25 1.78 -0.84 -1.17 -1.91 1.2 -2.69 1.17 -2.43 1.43 -2.06 2.02 
+-1.82 2.34 -2.06 1.96 -0.63 0.34 0 -118.21 2.96 -0.65 2.34 -2.46 2.3 -2.49 1.96 -2.73 
+2.11 -1.98 1.11 -3.97 0.3 -3.87 -1.04 -3.38 -2 -2.67 -1.7 -1.08 -1.71 2.21 -1.86 4.05 
+-1.11 2.65 -1.09 3.93 -0.5 3.06 -0.65 3.61 0.11 3.49 -1.52 2.28 0 118.21 -1.87 1.09 
+0 -3.78 0.09 -2.73 0.41 -3.23 -1.04 -2.21 -1.09 -2.19 -1.04 -2.24 -0.89 -1.91 -2.61 3.08 
+0.74 -2.61 -0.59 -2.45 -0.86 -2.63 0.74 -2.64 1.41 -1.78 0.71 -3.45 0.41 -3.64 -0.96 -2.67 
+-1.04 -1.84 -0.2 -3.47 0.28 -2.87 0.31 -3.69 -0.33 -3.41 -0.82 -2.32 -0.37 -2.62 0.13 -3.62 
+-0.67 -2.87 -0.37 -1.82 0.95 -2.93 -0.15 -2.34 -1.54 -2 -0.93 -1.45 0.56 -3.21 -2.3 -1.13 
+0.21 -3.36 0.79 -2.97 1.82 -3.5 1.8 -3.62 1.74 -3.59 1.11 -4.02 0.24 -3.99 0.04 -3.45 
+1.13 -3.32 1.23 -2.56 1.26 -3.86 -1.93 -1.35 -0.24 -4.21 1.02 -3.34 -1.5 -1.63 -1.15 -2.73 
+0.46 -4.38 -1.23 -2.73 -1.98 0.11 -1.97 1.35 -2.15 1.95 -1.8 3.41 -1.8 3.5 -1.7 2.84 
+-1.71 2.84 -1.84 2.04 -2.21 1.89 -1.89 2.08 -1.96 3.32 -1.75 2.8 -1.8 2.78 -1.45 2.99 
+-2.52 2.32 -2.47 2.32 -2.19 2.52 -1.67 2.21 -1.76 3.43 -1.56 2.93 -2.13 3.17 -2.2 3.23 
+-0.21 2.47 -1.32 1.11 -1.93 2.67 -1.06 3.27 -1.32 3.73 -2.11 1.93 -1.48 2.35 -1.15 3.23 
+-1.15 -0.17 0.61 -2.95 1.3 -3.73 -0.61 -3.06 -1.43 -2.28 -2.26 -1.48 -2.6 0.29 -2.7 1.54 
+-2.21 1.15 -2.3 2.41 2.23 1.43 1.43 2.26 -0.82 3.4 -1.7 -2.45 -2.19 -1.43 -2.82 0.76 
+-2.47 1.69 -2.25 0.5 -2.39 -0.19 -1.47 2.21 -1.8 2.11 -1.99 0.67 -1.89 1.35 -0.28 -0.07 
+0 -299.69 1.07 -0.83 -0.35 -2.09 -2.08 -0.36 1.37 3.28 0 299.69 -1.87 -0.57 -1.67 -1.69 
+-1.35 -1.41 -1.71 -1.61 -1.84 -0.48 -2.04 0.06 0 -301.45 0.97 -1.35 -0.58 -1.04 -2.09 -0.37 
+-0.45 1.91 2.15 0.85 0 301.45 -0.07 0 -0.83 -1.73 -2.28 -1.28 -1.75 -1.56 -2.13 -1.8 
+-2.88 -0.89 -1.89 -0.43 -2.54 -0.74 -2.04 -1.05 -2.26 -0.49 -2.8 -0.29 -2.6 -0.63 -2.98 -0.87 
+-1.86 2.59 -1.41 2.25 -2.2 1.26 -2.04 -0.98 -1.65 -1.95 -1.34 -1.74 -1.82 -2.54 -2.36 0.67 
+-1.89 -1.45 -2.17 1.35 -2.3 -0.45 -2.73 1.66 -2.32 0.7 -3.19 -0.26 -2.02 1.96 -1.89 2.58 
+-2.89 2.13 -2.78 2.71 -2.17 1.37 -1.34 -1.67 -1.98 0.85 -1.95 0.87 -0.29 -3.39 -2.06 -0.82 
+1.95 -1.99 -2.11 -1.87 2.15 -0.29 1.8 -2.58 2.17 -2.45 1.97 -1.98 2.71 -1.65 2.71 -1.71 
+2.5 -1.2 1.65 -2.15 0.55 -2.56 2.3 -1.8 1.25 -1.15 0.59 2.95 -0.57 2.56 0.91 0.89 
+1.8 -1.45 1.45 -2.75 0.7 -3.06 -0.41 -3.47 1.84 0.74 1.24 -1.19 2.76 0.58 0.91 2.04 
+2.17 0.91 p
+2.69 0.54 1.63 1.3 0.17 2.84 1.37 2.93 0.63 2.54 0.68 2.56 1.11 2.23 -0.11 2.32 
+1.26 -0.04 0.28 -1.61 1.19 -2.91 1.35 -3.39 2.71 -1.65 2.54 -1.13 2.69 -0.48 2.28 0.54 
+2.82 0.15 2.04 -1.95 2.39 -1.74 2.3 -0.62 0.11 -3.47 0.06 -3.5 -0.84 -2.15 -0.33 -2.52 
+-0.19 -2.95 -1.82 -0.83 -0.21 -2.99 0.67 -3.14 1.61 -2.17 -1.54 -1.78 -1.67 -1.35 -0.67 -1.48 
+0 -41.25 -0.2 -0.24 0 -370.68 -0.37 -2.02 0.02 -1.55 1.48 0.39 2.36 0.39 -2.12 -1.98 
+-1.39 0.11 -1.73 -1.43 -0.3 1.09 -2.73 -0.85 2.76 2.39 0.74 2.54 1.3 0.91 0 370.68 
+-1.82 -2.12 -1.95 -0.71 -1.87 0.45 1.26 2.11 2.52 0.3 2.06 0.22 0 41.25 -0.31 -0.65 
+0.2 -3.32 -0.83 -1.43 -1.67 -1.3 -1.97 -1.87 0.13 -3.32 -1.47 -2.26 -2.02 -0.26 -2.17 -1.37 
+-1.89 -2.38 -1.11 -1 0 -179.23 1.58 -2.69 1.11 -2.78 0.26 -3.41 1.04 -3.34 0.48 -4.41 
+0.2 -2.93 -2.04 -3.36 -1.89 2.17 -0.06 -4.95 -0.67 -2.62 -1.46 -1.71 -0.29 -2.54 -0.86 -3.56 
+-0.79 -3.08 -1.73 -3.69 -1.28 -3.13 -1.23 -3.12 -1.24 -2.65 -0.79 -2.56 -1.25 -2.56 -1.29 -2.63 
+-1.21 -2.6 -0.89 -2.5 -0.82 -2.54 -0.87 -2.54 -1.21 -2.06 -1.43 -3.04 -1.28 -2.58 -2.32 -3.15 
+-1.98 0.29 -2.73 -1.3 -2.45 -1.72 -2.65 -0.76 -0.48 0.31 0 -358.03 -5.55 -2.18 -5.55 -2.12 
+-5.51 -2.04 -5.49 -1.97 -5.1 -1.87 -5.12 -1.82 -5.17 -1.79 -5.21 -1.75 -3.61 -1.13 -3.58 -1.09 
+-3.58 -1.06 -3.55 -1.04 -2.89 -0.82 -2.88 -0.79 -2.87 -0.78 -2.84 -0.76 -1 -0.21 -0.97 -0.2 
+-1 -0.22 -0.95 -0.19 -2.78 -0.7 -2.76 -0.7 -5.46 -1.3 -2.2 -0.43 -2.17 -0.43 -2.12 -0.41 
+-2.13 -0.39 -2.28 -0.57 -2.28 -0.54 -2.3 -0.56 -2.3 -0.52 -2.34 -0.5 -2.32 -0.45 -4.6 -0.91 
+2.06 0.3 2.11 0.32 2.14 0.33 2.17 0.34 -3.36 -0.73 -3.36 -0.7 -3.34 -0.7 -3.36 -0.67 
+-1.74 -0.24 -1.69 -0.24 -1.7 -0.22 -1.67 -0.22 -1.97 -0.3 -1.95 -0.26 -1.93 -0.29 -1.91 -0.26 
+-4.36 -0.74 -4.34 -0.71 -4.36 -0.67 -4.34 -0.65 -4.28 -0.61 -4.27 -0.59 -4.25 -0.54 -4.27 -0.5 
+-3.15 -0.45 -3.21 -0.43 -3.21 -0.41 -3.26 -0.42 -2.08 -0.29 -2.11 -0.25 -2.13 -0.26 -2.12 -0.24 
+-3.22 -0.26 -6.37 -0.43 -3.17 -0.2 2.47 0.52 0.8 0.18 -0.98 0.2 -0.3 0.08 4.16 0.39 
+2.09 0.22 2.06 0.21 0.24 0.09 0.24 0.11 0.21 0.09 0.24 0.11 2.73 0.24 2.74 0.28 
+2.75 0.26 2.71 0.29 6.73 0.87 3.3 0.45 0.95 0.2 0.93 0.22 0.91 0.19 -1.07 -0.06 
+-1.08 -0.05 -1.07 -0.04 1.24 0.3 2.39 0.65 1.91 0.39 1.86 0.41 1.85 0.39 2.65 0.61 
+1.3 0.31 1.78 0.41 1.73 0.43 1.71 0.41 3.91 0.67 3.86 0.72 3.82 0.71 3.54 0.54 
+3.56 0.56 3.56 0.59 -0.85 -0.33 -0.89 -0.32 -0.89 -0.3 0.09 -0.2 0.08 -0.21 0.09 -0.18 
+2.06 0.26 2.11 0.31 2.13 0.3 3.62 0.67 3.61 0.7 3.62 0.71 3.71 0.76 7.38 1.61 
+4.88 1.07 4.91 1.11 4.92 1.15 -1.78 -0.54 -1.78 -0.56 -1.8 -0.54 -3.5 -0.93 -3.54 -0.91 
+-3.56 -0.91 0.57 0 0.56 0.02 0.57 0 0.58 0.02 -0.63 -0.26 -0.63 -0.24 -0.62 -0.26 
+-0.66 -0.26 p
+1.54 0.26 3.17 0.57 1.61 0.28 1.87 0.37 1.89 0.39 3.82 0.83 -1.06 -0.33 -1.04 -0.34 
+-2.17 -0.65 3.66 0.91 3.63 0.91 3.63 0.93 3.63 0.97 2.89 0.7 2.88 0.72 2.93 0.74 
+2.93 0.76 3.62 0.98 3.63 1.02 3.67 1.05 3.66 1.06 3.64 1.09 3.64 1.11 3.67 1.15 
+3.71 1.18 3.49 1.15 3.52 1.17 3.52 1.21 3.54 1.24 2.14 0.72 4.39 1.48 2.23 0.78 
+3.41 1.24 3.45 1.28 3.47 1.33 3.47 1.35 0 358.03 -1.37 0.89 -1.73 1.67 -1.62 2.63 
+0.19 3.29 0.2 3.82 -0.91 2.28 0.07 2.84 0.34 2.38 2.23 3.65 2.13 2.62 1.19 2.56 
+2.18 3.17 0.74 2.52 -0.89 3.21 0.3 2.47 -0.93 3.21 -0.07 3.34 2.04 3.21 1.73 4.62 
+2.22 0.35 2.78 1.91 2.71 1.43 2.78 1.93 2.28 1.84 2.43 3.38 2.22 0.37 -0.29 2.45 
+1.89 1.82 -0.26 2.91 2.65 0.98 2.26 1.43 0.56 2.54 0.18 3.04 2.32 2.95 0 179.23 
+-0.93 -0.87 -1.91 -2.37 -0.28 -2.25 0.54 -2.04 -2.11 -1.8 -2.11 -1.85 -2.13 -1.84 -2.14 -1.75 
+-2.54 -1.96 -2.06 -2.28 -1.06 -3.04 -2.21 -1.73 -2.43 -0.76 -1.56 -2.63 -1.34 -2 -2.37 -1.21 
+-2.58 -0.26 -2.02 -0.58 -0.85 -2.32 -2.28 -1.71 -2.41 -1.17 -2.41 -1.15 -2.21 -0.11 -2.24 2.52 
+-0.18 3.06 -1.15 1.23 -1.5 3.2 -1.56 3.23 -1.02 2.84 -0.13 2.52 -0.96 2.34 -1.89 2.61 
+-2.32 2.46 -1.95 1.02 -1.8 2.11 -5.73 7.75 -2.62 1.82 -3.43 0.13 -1.3 1.69 -2.06 1.54 
+-1.25 3.26 -1 2.32 -0.09 2 -1.13 2.8 -1.93 2.56 -2.32 2.46 -2.5 1.37 -2.75 0.8 
+-1.93 2.56 -1.56 2.67 -2.32 2.45 -2.06 1.54 -2.37 2.45 -2.3 2.45 -1.8 2.04 -2.19 2.02 
+-2.32 -0.59 -0.02 3.02 0 3.06 -0.8 2.82 -0.61 -3.67 -0.24 -3.65 0.63 -2.34 -0.91 -1.24 
+-2.47 1.39 -2.04 1.56 -1.28 1.7 -1.65 1.58 -1.91 2.58 -1.41 2.19 -0.91 -1.23 1.78 -2.06 
+1.04 -2.28 1.79 -2.1 2.14 -1.98 2.04 -1.56 1.02 -2.24 1.39 -1.39 0.28 -0.25 0.98 -2.26 
+2.28 -2.47 1.41 -2.21 1.89 -2.56 1.8 -2.13 1.89 -2.58 2.06 -1.5 0.2 -2.52 0.84 -1.8 
+1.89 -2.58 2 -1.02 2.32 -0.96 1.89 -0.57 0.45 -1.99 0.33 -1.37 2.17 -2.02 0.43 -1.91 
+0.28 -2.99 1.13 -3.26 0.93 -2.32 1.95 -3.06 2.8 -0.84 3.02 -1.82 1.75 -2.12 1.87 -2.61 
+1.15 -3.28 0.98 -2.82 1.76 -2.13 1.76 -0.06 1.82 -2.61 3.26 -0.72 2.71 -0.34 2.65 -2.41 
+3 -1.73 2.19 -2.04 2.54 -1.93 2.56 -1.84 1.41 -2.74 -2.25 -2.14 1.93 -1.04 2.04 -1.56 
+2.15 -1.97 1.93 -1.04 2.63 0.15 2.34 1.7 2.26 2.2 2.99 0.34 2.43 1.2 2.56 2.82 
+2.88 0.84 2.28 1.78 2.56 0.26 2.67 1.84 2.69 1.96 1.46 3.17 3.1 -0.09 0.52 -4.66 
+0.3 -3.63 -0.71 -2.93 0.67 -3.49 -1.08 -3.54 -0.79 -2.91 -0.89 -2.39 -0.35 -3.25 -0.84 -2.91 
+-0.79 -3.41 -0.45 -2.78 -0.3 -3.73 -1.87 -2.59 -1.39 -2.52 -0.89 -3.37 -0.98 -2.8 -1.84 -3.1 
+-1.48 -2.43 -1.89 -3.08 -1.45 -2.96 -1.98 -2.49 -2 -2.52 -2.54 -1.62 -1.95 -2.47 -2 -3.02 
+-2.11 -2 -2.02 -2.43 -1.13 -2.8 -2.5 -3.06 -1.61 -3.34 -1.65 -2.32 -1.17 -3.23 -2.14 -2.41 
+-2.09 -2.9 p
+-2.28 0.04 0.16 -3.41 -1.67 -3.76 -1.72 -3.82 -1.3 -2.65 -1.28 -3.17 -0.83 -3.08 -0.87 -3.1 
+2.3 -2.54 2.23 -2.54 -1.34 -3.17 -0.02 -3.45 0.43 -3.77 1.3 -3.23 0.8 -2.8 1.8 -1.15 
+1.74 -1.65 -0.09 -2.93 -0.54 -3 0.3 -2.86 -0.11 -2.46 -0.61 -3.45 0.67 -3.25 -0.18 -2.93 
+0.69 -3.3 -0.65 -2.97 -1.52 -2.59 -2.02 -2.69 -1.93 -2.17 -2.91 -2.8 -1.95 -2.13 -3.64 -0.99 
+-2.34 -1.22 -2.78 -1.3 -2.02 -2.62 -1.99 -2.56 -2.56 -3.11 -2.37 -1.23 -2.02 -2.58 -1.93 -1.61 
+-2.47 -2.11 -0.74 -2.87 1.56 -1.67 0.5 -3.23 0.39 -3.63 0.61 -2.28 -0.45 -3.26 -0.76 -2.39 
+0.02 -2.76 -1.76 -2.93 -1.95 -1.54 -2.8 -1.2 -3.75 -1.7 -1.89 -1.04 -2.8 -1.17 -2.3 -3.34 
+1.65 -0.8 -0.3 -1.8 -0.37 -2.32 -1.37 -2.8 -1.43 -3.25 -1.33 -2.78 -2.45 -1.55 -2.95 -2.02 
+-1.7 -2.32 -2.15 -2.39 -1.8 -2.78 -1.74 -2.34 -2.58 -2.32 -2.54 -1.95 -2.04 -1.84 -2.6 -2.37 
+-2.04 -1.84 -2.41 -1.43 -3.32 -1.89 -2.49 -1.9 -2.65 -0.55 -2.97 -0.13 -1.54 -1.37 -3.43 -0.15 
+-1.93 -1.39 -2.5 0.3 -2.82 0.76 -2.3 -0.97 -2.91 0.34 -3.12 -0.58 -1.91 -1.34 -3.45 -0.13 
+-3.06 -0.52 -1.88 -1.34 -3.04 -0.11 -1.87 1.63 -1.93 1.67 -1.82 -0.93 0.3 2.17 -0.61 2.09 
+-1.8 2.97 1.3 0.05 1.47 1.32 -0.02 3 -1.39 2.95 -1.54 2.11 -1.08 2.13 -0.52 2.99 
+-1.11 2.15 -0.61 2.99 -1.56 2.13 -2.54 1.63 -1.15 2.15 -1.69 1.67 -0.22 2.61 -0.7 3.02 
+-0.67 2.61 -0.33 2.19 0.18 2.65 -1.15 3.02 -0.31 2.21 0.17 2.67 -0.26 3.06 0.59 2.25 
+-0.83 2.21 -2.16 2.09 -0.83 2.21 -1.73 2.17 -0.83 3.08 -1.73 2.61 -1.28 2.63 -1.32 2.21 
+-1.86 1.7 -1.3 3.08 -0.37 2.67 0.07 2.28 0.54 2.71 0.07 2.71 1.5 2.78 0.59 2.74 
+0.97 2.76 1.05 3.21 1.04 3.25 1.91 2.32 2.43 1.49 1.47 2.37 0.95 2.34 0.57 3.21 
+-0.48 3.17 -1.41 1.8 -1.39 2.19 -0.91 2.71 -0.96 1.32 2.43 2.89 -0.96 2.71 -1.43 2.25 
+-0.46 2.73 -1.43 2.71 -1.43 1.76 -0.52 2.3 -0.93 1.34 0 2.32 -1.45 2.21 -1.95 2.24 
+-1.46 2.28 -1.91 1.73 -1.91 1.76 -1.98 1.8 -2.88 1.72 -1.91 2.71 -1.93 2.25 -0.99 2.76 
+-1.46 2.73 2.82 1.96 0.43 2.82 -0.05 2.8 1.39 2.41 -1.91 0.8 1.39 2.43 0.93 2.39 
+0.39 3.28 0.89 3.3 -2 2.28 -1.45 2.3 -2.34 0.34 -0.59 2.78 -0.8 -0.02 0 -4.23 
+1.43 -0.89 -0.93 -1.89 -1.43 0.39 0.93 2.39 0 4.23 -1.52 -0.06 -2.36 -0.54 -2.85 -0.11 
+-2.82 -0.61 -2.84 -0.54 -2.84 -0.08 -3.32 1.75 -1.02 3.73 -1.47 3.73 -2.87 2.26 -2.84 0.89 
+-3.27 -0.06 -3.32 -0.5 -2.84 -0.05 -2.82 -0.52 -3.27 -0.93 -1.41 -1.91 -3.8 -0.02 -3.3 -1.87 
+-2.39 -1.39 -2.32 -0.43 -2.84 -0.93 -2.39 -1.39 -3.3 1.43 -2.84 0.5 -4.26 1.02 -2.82 0.07 
+-2.38 -0.39 -3.3 -0.43 -3.37 -0.34 -2.36 -1.81 -3.34 -0.39 -2.88 -1.76 -2.32 0.54 -2.82 1.07 
+-3.28 2.5 -2.8 2 -2.25 1.98 -2.73 2.95 -3.71 2.13 -2.3 2.45 -2.76 1.57 -2.73 1.58 
+-2.69 3.02 -0.78 2.43 -0.39 2.43 -0.33 2.86 -1.71 2.45 -2.21 2.54 -2.23 1.61 -1.26 2.47 
+-1.66 2.47 p
+-2.26 1.17 -0.2 3.84 -2.34 -0.33 -2.14 1.63 -2.2 1.63 0.24 3.37 0.65 2.79 -0.18 3.34 
+-1.12 2.97 -2.15 1.65 2.39 1.2 1.54 2.26 1.98 2.17 0.32 3.82 2.3 5.51 0.68 2.8 
+0.26 2.85 -0.65 2.93 -1.46 3.02 1.91 1.72 0.28 2.84 -1.91 2.6 -2 2.11 0.72 2.8 
+0.78 2.78 1.84 1.26 1.54 2.26 1.69 3.67 1.52 2.19 1.95 2.21 2.39 2.2 1.61 3.17 
+1.11 2.3 1.11 2.75 1.39 1.3 2.67 1.17 1.43 1.76 1.13 2.75 1.86 2.23 3.78 0.16 
+3.45 1.15 1.84 2.26 3.04 1.19 2.21 2.17 1.84 2.26 1.5 3.21 -1.07 1.99 0.37 4.67 
+1.71 1.3 1.39 2.3 0.16 1.85 2.14 1.73 1.74 2.28 2.47 1.26 2.8 0.82 2.9 1.71 
+1.33 2.3 1.3 2.25 0.89 2.32 1.3 2.75 2.34 0.35 1.07 -1.89 3.04 -1.98 1.97 0.39 
+3.06 -0.07 1.97 0.39 2.67 -1.45 2.34 0.47 3.14 1.37 1.17 1.84 2.32 0.43 2.32 0.5 
+2.3 1.85 2.28 1.43 3.45 0.48 3.06 0.55 2.26 0.95 2.28 0.05 1.87 0.54 2.69 0.09 
+2.67 -0.41 1.57 -0.85 2.26 0.54 1.84 1.48 3.47 -0.78 1.84 1.06 3.49 -0.75 2.23 0.63 
+1.74 1.52 2.23 0.61 2.3 -0.28 1.41 -2.71 2.91 1.63 -0.89 -2.43 -1.41 -1.09 1.04 -3.19 
+1.67 -0.83 0.61 -2.28 -0.93 -2.45 -1.78 -2 -1.41 -1.52 0.59 -2.32 2.06 -0.83 1.93 0.66 
+1 -2.3 2.93 -1.17 2.45 -0.76 3.14 0.26 3.6 -0.11 2.84 -0.2 2.91 -1.13 2.88 -0.67 
+0.05 -0.37 0.32 -2.43 1.38 -1.28 2.57 -1.15 2.89 -0.14 4.1 -0.5 3.49 -1.47 2.69 -1.61 
+2.45 -0.14 1.82 1.22 1.39 1.63 0.39 2.43 -0.78 2.32 -1.13 1.74 0.84 2.08 2.37 2.71 
+2.52 1.37 2.63 0.85 3.19 0.06 2.88 -0.52 0.87 -2.26 2.8 -0.04 2.89 -0.43 2.75 0.48 
+1.67 -2.16 2.61 0.95 2.78 0.04 2.84 0.07 2.13 -0.58 2.54 -0.5 2.73 0.56 3.04 -0.86 
+2.18 1 1.95 1.9 2.3 2 2.58 1.06 3.13 0.26 0.15 -2.02 2.17 -0.46 0.22 2.04 
+1.93 -1.04 2.52 1.09 3.25 1.37 0.95 2.23 0.7 3.21 -0.15 3.02 -0.11 3.02 0.22 3.11 
+0.06 3.56 0.65 2.73 -1.28 2.71 -1.26 3.73 0.11 2.06 -1.34 1.63 0.71 2.3 -0.83 1.28 
+-1.43 -2.5 -1.39 -0.39 -1 0.2 0 -6.56 -1.76 -2.95 1.13 -1.21 -1.76 -0.46 -0.36 -1.43 
+-1.98 -1.24 -2.69 -0.14 -1.3 1.67 2.07 1 0.78 1.22 3.67 1.97 2.21 1.56 0 6.56 
+-2.3 0.43 -1.17 -2.32 -1.52 -2.41 -1.75 -0.45 -1.52 -1.41 -2.43 0.39 -1.65 1.58 -3.64 0.61 
+-2.62 -0.16 -0.05 -2.47 -2.84 -2.15 -2.43 0.41 -3.56 1.7 -0.98 -0.22 0 -1.75 -0.2 -2.24 
+-1.15 -1.43 -0.79 1.57 2.13 2.11 0 1.75 -1.56 -0.33 0.37 1.55 -4.34 -0.91 0.93 2.14 
+-2.2 1 -0.11 1.98 -2.05 0.52 -0.48 0.11 0 -16.34 0.33 -1.39 2 1.39 0.02 -1.64 
+-2.93 -0.8 -2.97 -0.71 -1.72 0.74 -2.36 0.09 -2.23 -0.39 -0.15 2.37 2.73 0.02 0.56 -0.89 
+2.13 0.91 2.04 -0.33 2.56 0.65 0 16.34 -1.93 0.39 -0.14 1.91 1.82 -1.08 0.93 0.71 
+-1.11 1.23 -1.22 3.17 0.31 1.52 -3.39 -1.17 -0.15 3.36 1.21 2.2 2.46 0.52 2.41 0.52 
+2.78 0.61 p
+2.39 0.56 -0.76 1.3 1.91 0.98 -2.97 1.26 -2.72 -0.63 -2.95 -1.13 -1 -1.67 -1.61 -2.11 
+-1.21 -2.19 -0.33 1.16 1.22 2.17 -1.98 -0.86 -1.87 1.54 -2.54 0.02 -1.62 -0.84 -2.21 0.08 
+-0.67 -1.56 -2.11 -0.39 1.39 -1.2 -0.37 -1.52 -2.11 -0.39 -2.67 1.91 0.43 -3.28 1.96 -2.08 
+1.89 -1.58 1.11 -1.72 1.8 -1.13 2 -0.62 0.82 -1.76 2.02 -0.61 -2.76 0.48 0.79 -3.3 
+-2.61 1.52 -2.64 0 -1.89 1.58 -3.17 -1 2.39 -0.58 2.49 -1.02 2.13 -2.54 -2.3 0.14 
+1.22 -2.24 1.82 -3.04 -2.21 1.52 -1.13 -2.08 -1.5 1.65 -1.82 -0.28 -1.04 1.25 -0.13 2.41 
+-2.58 1.5 0.69 2.02 1.97 1.3 -3.36 -0.08 -2.28 2.06 -2.04 2.54 -1.46 1.67 -1.91 2.12 
+-2.08 1.11 -0.56 2.78 -0.29 3.27 -0.15 2.39 -2.36 1.07 -2.46 1.52 -2.69 1.04 -2.89 2 
+-3.54 1.89 -2.48 0.15 -1.26 1.24 -2.62 1.11 -0.31 1.82 -1.25 1.26 -0.76 2.25 -2.95 1.52 
+-0.07 -1.87 -1.2 -1.08 -1.23 1.28 -0.61 1.85 0.43 1.43 -2.09 0.24 -1.8 -1.58 -1.63 -0.17 
+-0.11 -1.84 1.19 -1.29 -0.39 -1.93 0.59 -1.8 2 -1.65 1.89 -1.22 2.25 -1.17 1.41 -2.21 
+0.72 -2.29 1.25 -1.28 2.32 -1.15 2.67 -1.11 3.52 0.43 -0.74 -1.96 2.28 -0.7 2.75 -1.06 
+2.37 -1.11 2.39 -1.11 2.58 -1.97 -0.37 -2 -1.52 0.3 -0.74 1.78 -2.21 0.17 -1.93 0.72 
+-0.76 -1.98 -0.26 -2.88 2.43 -1.11 0.39 -2.34 -2.02 -1.21 0.37 -2.3 -1.22 -1.56 -0.54 -1.5 
+-1.45 -0.17 -0.22 1.41 0.35 2.36 0.87 1.52 -0.74 2.3 -0.57 0.84 0 -6.59 -1.15 -2.52 
+-0.28 -2.87 0.98 -1.78 -0.43 -1.91 -3.1 0.11 -1.74 1.7 -2.32 0.28 -3.26 1.54 -1.48 -0.13 
+-1.82 2.19 1.71 1.59 2.21 0.22 2 -0.79 2.58 0.29 3.27 0.8 2.82 1.28 0 6.59 
+-0.91 1.37 -0.62 1.81 -3.06 0.61 -1.43 2.15 -1.5 0.34 -2 1.2 -2.09 1.65 -2.79 -0.28 
+-2.34 1.17 -2.09 2.17 -2.41 2.08 -2.11 -0.18 -0.56 1.84 -2.37 2.11 -1.3 2.24 -0.69 2.76 
+-2.14 0.21 0 -5.96 0.28 -2.78 0.54 -1.81 -0.54 -1.95 -0.02 -0.13 0 -3.1 2.04 -2.21 
+0.59 -2.26 0.24 -2.34 -0.11 -2.37 -0.55 -2.34 -1.84 -0.13 -1.3 -1.97 -2.02 1.78 0.16 2.8 
+-0.24 2.8 -1.28 2.21 -0.17 1.89 1.13 -0.43 1.39 0.58 1.98 2 0 3.1 -0.39 -2.69 
+-2.36 2.19 -0.54 1.8 0.15 2.37 2.02 1.08 0.88 1.91 0 5.96 -0.31 0.04 -1.45 0.82 
+-2.11 0.3 -1.64 -1 -0.87 -1.95 -2.32 -1.02 -2.36 -1.52 -1.57 -1.98 -2.45 -0.57 -2.54 1.28 
+-2.82 0.34 -2.47 0.85 -1.72 -1.43 -2.39 -1.46 0.44 -2.75 0.5 -3.21 -0.73 -0.5 0 -10.66 
+2.25 -1.34 -1.43 -2.28 -1.59 1.25 -2.15 0.39 2.91 1.97 0 10.66 -1.37 -0.93 -2.5 -1.95 
+-2.49 -0.91 -2.15 -0.98 -2.16 -3.23 -2.18 -2.8 -1.48 -2.35 0.35 -2.34 2.23 -1.84 -2.6 -1.84 
+-1.55 -1.89 -0.74 -2.3 -2.25 0.02 -2.32 -2.78 -1.61 -2.32 -2.64 0.04 -2.65 0.07 -2.71 0.06 
+-2.67 -0.37 -2.32 -0.87 -2.43 -2.28 -2.24 1.06 -1.34 2.86 -0.7 1.43 -2.19 1.52 -1.91 0.08 
+-1.93 -0.84 -2.21 0.63 -2.73 -0.32 0.97 2.3 0.24 2.8 0.61 2.78 -1.82 0.11 -0.95 1.91 
+0.61 2.78 p
+1.65 1.8 0.67 3.2 0.96 2.75 0.61 2.3 -0.48 2.84 -0.17 1.84 0.57 2.32 -1.46 3.32 
+1.2 1.32 2.52 0.29 1.58 2.23 3 -1.56 2.8 -0.15 3.16 0.28 3.11 -0.57 2.71 -1.04 
+3.56 0.82 3.47 -0.52 2.41 -0.54 2.13 0.46 1.07 1.39 0.75 3.19 0.37 2.32 0.39 3.21 
+0.37 3.19 -0.98 2.34 -1.98 1.39 -0.97 1.39 0.37 1.39 -1.59 1.82 -0.65 0.95 -2.61 0.5 
+-2.22 1.43 -1.95 0.06 -1.58 1 -0.16 2.75 2.26 0.38 1.97 0.86 2.58 0.37 1.22 -1.84 
+2.6 0.39 2.24 -0.02 -0.57 3.23 -1.21 2.76 2.23 -0.02 0.91 -2.32 1.91 0.43 2.21 -0.45 
+0.63 2.32 1.55 0.87 1.89 0.5 1.56 0.89 0.26 2.32 0.58 1.8 2.13 0.96 2.43 1.43 
+2.08 0.98 1.43 1.84 1.11 1.84 0.79 1.87 0.48 2.25 1.13 0.55 0.2 -2.72 1.57 -0.87 
+1.41 1.43 -0.11 1.37 -1.52 0.35 -0.18 2.28 1.98 1.04 3.21 0.18 1.02 1.41 2.35 0.16 
+1.84 -0.78 0.07 1.8 1.28 1.46 -1.28 1.26 1.02 1.02 -1.35 1.7 -0.32 2.69 -1.84 1.22 
+-0.57 2.23 -0.3 2.7 0.35 1.8 1.19 1.46 2.35 0.67 1.06 1.87 2.06 0.63 0.28 -1.78 
+-0.48 -2.32 0.26 -1.76 1.89 0.18 0.29 -1.76 -1.34 -0.74 0 -2.6 1.73 -0.98 0.09 -1.74 
+-2.08 -0.19 -1.41 2.17 1.67 0.74 0 2.6 -0.7 -0.39 -1 -2.8 -0.76 -2.78 2.15 -1.17 
+0.19 -1.37 3.35 -1.06 -0.33 -1.82 1.99 0.2 1.5 1.52 1.3 1 2.2 0.74 1.15 1.5 
+1.5 -1.69 -1.28 -1.02 2.15 -0.7 1.8 -0.22 2.58 1.71 2.73 0.81 1.84 2.08 2.56 1.32 
+2.64 0.88 1.82 -2.5 1.96 0.33 1.41 1.19 0.2 2.39 2.08 1.78 0.29 2.86 -1.07 2.59 
+-0.93 3.08 0.5 1.93 0.21 2.84 2.13 0.93 1.98 -1 1.63 -1.57 1.93 -0.02 1.09 1.65 
+-1.91 5.21 -1.89 0.04 -1.52 2.02 -0.78 2.19 1.45 1.74 2.23 0.98 2.47 1.04 2.95 -0.17 
+3.1 0.82 0.59 1.59 1.58 2.34 3.19 -0.06 -2.18 1.8 -1.66 -0.93 -3.02 1.52 -3.19 -0.87 
+-2.19 -1.47 -2.21 -1.5 -2.23 -1.5 -2.47 -1 -1.2 0.13 0 -5.54 1.93 -1 -1.52 -0.93 
+-0.09 0.11 0 -0.7 2.71 -0.11 -1.12 -1.34 -1.15 -1.37 -1.43 1 1 1.82 0 0.7 
+-0.48 0.67 0.15 1.15 0 5.54 -1.74 0.17 -1.88 1 -2.56 0.87 -0.59 1.72 0.07 2.78 
+-1.41 1.63 0 -21.66 -0.96 -1.43 0.61 -2.22 -1.28 -1.32 -1.11 2.13 0.65 1.65 2.09 1.19 
+0 21.66 -0.63 0.74 -1.11 2.54 0.2 2.78 1.41 2.62 1.15 3.04 1.26 2.56 0.41 2.89 
+1.24 1.25 -1.08 2.5 -2.7 1.17 -1.43 -0.78 -1.57 -0.37 -1.95 0 -0.37 -1.88 -1.08 -1.18 
+0.67 -1.21 -0.63 -1.96 2.13 -0.91 -1.09 -2.04 -0.24 -1.91 -1.76 -1.71 -1.3 -1.61 -1.48 -2.08 
+-1.04 -2.89 -0.52 -1.46 0.48 -2.64 0.26 -2.67 0.82 -2.16 2.41 -1.41 2.38 -1.41 1.24 -1.65 
+-0.35 -1.43 -1.34 -1.61 1.21 -0.67 -1.89 -1.7 -1.8 -2.14 -0.07 -1.82 0.65 -2.65 0.02 -2.3 
+0.2 -3.14 -0.58 -3.28 -1.91 -0.28 -2.14 -0.29 -1.17 -2.45 0.61 -1.74 -1.91 -0.22 -2.23 -0.26 
+-0.33 1.76 -1.47 2.13 0.48 1.87 -1.24 1.08 0 -3.41 0.91 -2.08 -1.15 -1.39 1.02 -0.93 
+-1.84 -1 p
+-0.66 0.04 0 -1.26 1.76 -0.32 -0.7 -0.93 -1.61 -0.68 -1.35 1.24 1.89 0.7 0 1.26 
+-1.34 0.13 -1 2.63 2.04 1.3 2.02 1.3 0 3.41 -1.09 0.93 -1.52 2.56 -1.59 2.97 
+-1.5 2.56 -1.3 3 -1.73 1.2 -0.74 -1.85 -1.52 -0.15 -2 -2.41 -1.32 -1.89 -2.46 -1.52 
+-2.69 0.26 -2.73 1.17 -1.43 1.29 0.09 2.25 1.39 1.82 -2.26 -0.54 -0.67 1.74 0.85 1.87 
+-1.67 2.11 -0.41 2.21 -0.66 2.21 1.07 1.78 -1.09 1.72 1.98 1.88 1.69 1.84 1.61 2.32 
+2.71 0.63 1.13 1.82 0.82 2.3 1.74 -1.17 1.21 2.32 1.17 2.3 1.15 3.23 1.8 1.95 
+0.48 2.71 0.56 2.3 0.33 2.21 0.67 2.32 1.43 2.41 0.21 2.21 1.93 2.96 -2.52 -0.81 
+-2.13 -0.74 -2.04 -2.06 1.19 2.37 2.76 1.3 -1.63 1.09 1.65 1.56 1.35 1.95 0.2 -2.62 
+1.06 1.49 0.7 -1.62 1.46 2 -1.37 0.19 -0.54 1.71 2.02 1.2 0.89 2.84 2.54 0.5 
+2.36 1.43 0.79 2.43 1.41 1.7 2.34 -0.79 0.34 1.89 1.2 1.26 1.24 -2.91 1.09 2.17 
+1.52 -1.91 0.26 3.32 2.91 -0.02 2.71 -0.55 2.58 -0.58 -1.26 -2.34 -2.64 -0.33 3.32 -0.87 
+2.65 0.39 1.11 1.37 2.41 -0.13 1 -1.56 3 0.59 3.05 0.21 3.06 -0.26 3.06 -0.78 
+3.04 -0.7 2.8 -0.3 2.95 -0.7 2.17 -1.65 1.78 -2.3 -0.2 -2.17 -1.37 -2.15 -2.15 -1.5 
+-2.87 -0.13 -2.38 -0.48 -2.24 -0.33 -2.9 0.42 -2.97 -0.13 -2.96 0.95 2.7 -1.99 2.54 -0.57 
+3.43 -1.24 1.52 -2.4 1.24 -2.04 1.48 -2.43 0.3 -0.02 2.95 -0.28 1.43 -0.43 2.13 -0.65 
+2.91 1.15 -1.61 2.41 -1.72 -0.7 -2.97 1.3 -0.14 2.02 2.13 0.3 2.87 -0.34 2.37 0 
+2.86 0.71 -2.8 1.87 -2.5 1.52 0.63 2.34 1.19 2.11 0.14 2.23 2.34 0.57 2.08 0 
+-0.09 2.1 -1.93 2.26 -1.93 0.11 -1.26 2.61 -2.23 2.61 -3.3 1.02 2.93 0.41 2.08 1.13 
+2.05 -0.54 2.45 -1.43 -1.82 -1.52 0.56 -2.48 2.34 0.22 2.3 -1.02 1.87 1.06 0.52 2 
+-2.43 2.58 0.93 1.67 0.8 2.24 0.3 1.97 1.02 1.89 0.33 2.06 0.3 2.06 2.43 -1.97 
+2.84 -0.39 -1.02 1.74 1.15 1.47 2.02 0.98 -0.29 2.39 0.43 1.75 2.91 -2.25 1.52 0.59 
+-1.71 1.32 0.52 1.13 -0.48 1.67 -2.47 0.54 -2.19 0.89 -2.61 -0.24 -2.06 0.28 -1 1.83 
+3.56 -0.33 3.73 0.65 2 1.26 3.17 0.11 1.65 1 2.47 0.32 0.52 0.2 1.69 0.65 
+2.61 -0.24 2.37 0.29 -2.23 2.4 -2.26 -0.17 -3.36 1.04 -1.98 -0.63 -1.82 1.13 -1.9 1.96 
+-2.85 0.76 -2.19 1.61 -0.63 2.6 -1.93 1.96 -2.75 1.78 -1.93 1.98 -1.93 1.91 -0.15 1.73 
+2.36 -0.37 1.24 -1.13 2.69 1.07 2.04 -1 2.12 -1.71 2 -2 3.23 -0.2 2.97 -1.49 
+2.97 -1.54 3.32 -1.93 2.95 -1.59 3.45 0.11 2 -1.91 2.45 -1.37 1.75 -2.39 1.15 -2.12 
+0.35 -3.15 3.64 0.2 -0.36 2.3 -0.81 2.67 -1.93 2.15 -1.65 2.63 -3.78 1.33 -2.89 1.66 
+-0.67 2.11 -1.91 -2.04 -3.73 1.46 -2.84 1.75 -2.04 1.91 -2.95 0.56 -2.52 0.11 -2.54 2.21 
+-0.32 1.65 -1.65 1.57 -2.17 0.82 -2.17 -0.43 -0.76 0.84 2.73 0.33 3.26 -1.07 2.28 -1.69 
+3.06 -1.41 p
+4.34 3.38 -1.91 -0.02 -2.54 -1.21 -2.95 0.47 -0.41 1.52 2.13 0.43 -0.69 1.22 -2.93 -0.87 
+-1.09 1.61 2.04 0.32 0.61 1.3 2.21 0.8 3.17 0.37 -0.39 2.09 -3.04 0.06 -1.78 -1.37 
+-3.21 1.17 -3.97 0.74 0.28 2.23 0.15 2.39 -0.48 2.19 -0.06 2.36 -2.87 0.11 -2.23 0.71 
+-1.98 1.65 -1.96 1.91 -1.39 2.56 -0.97 2.04 -2.17 1.61 0.04 1.7 -1.8 2.73 2.3 -0.63 
+-1.43 3.23 -2.21 -0.29 -0.3 2.22 -3.43 0.21 -3.19 1.69 -2.64 1.63 1.69 2.02 2.86 -1.91 
+-0.52 1.84 0.05 1.58 3.8 -1.13 -0.5 1.54 -1.84 0.33 -0.57 1.52 -0.17 1.71 0.54 1.43 
+1.63 1.34 2.61 0.59 3.43 0.09 2.88 -1.25 3.64 -1.76 2.89 -1.65 3.5 -1.76 1.65 -1.58 
+3.06 -1.02 -0.44 1.48 -1.64 1.73 -1.81 1.82 -1.36 -0.89 -2.04 0.87 0.63 1.33 0.63 1.11 
+-0.59 1.32 -2.67 -0.32 -0.98 -1.65 -1.41 0.58 -0.17 1.58 2.56 -0.52 3.38 1.25 -1.89 1.48 
+-1.28 1.37 0.13 1.82 -1.11 1.84 2.82 0.07 -0.17 2.13 -1.35 2.73 -1.82 1.65 -1.58 -1 
+-2.34 -0.15 -1.8 2.28 -0.7 2.91 -0.86 2.3 1.47 2.32 3.41 0.37 3.49 -0.37 2.17 1.63 
+1.21 1.87 -0.28 1.54 -3.04 0.49 -2.84 -0.34 -2.91 -0.3 1.08 1.93 -0.41 1.52 -2.3 0.26 
+-1.78 0.89 -0.39 1.39 -3.55 2.17 -2.28 2.09 -1.33 -1.56 -1.17 -1.15 -2 -0.14 -2.32 1.59 
+-0.87 -1.37 -2.34 1.93 0 -46.89 1.56 -1.76 0.43 -2.08 1.98 -1.71 -0.79 0.17 0 -31.41 
+2.82 -1.63 0.37 -2.21 0.13 -2.41 -0.45 -2.06 0.54 -2.56 0.41 -2.52 1.37 -2.3 0.98 -2.56 
+1.25 -2.3 1.24 -2.34 1.09 -2.34 1.36 -2.17 2.37 -2 2.78 -1.67 2.82 -1.02 3.43 0.2 
+-0.17 -1.5 -2.61 -1.37 -2.87 -0.93 -1.34 0.15 0 -10.07 3.3 -0.22 0.91 -1.73 -1.34 -2.02 
+-2.56 1.88 -0.3 2.09 0 10.07 -1.65 0.19 -3.54 0.5 -2.3 2.02 0.28 2.02 -1.93 1.11 
+-1.43 2.64 0.11 1.98 -2.21 0.8 -0.8 2.56 -1.97 2.91 -1.67 1.2 0.5 2.43 -0.65 1.48 
+-0.79 2.11 -0.08 2.78 1.66 1.75 0.61 2.32 -1.29 1.73 -0.26 2.3 1.89 0.71 0 31.41 
+-2.11 0.48 -3.55 0.84 -3 0.7 -1.37 0.93 1.37 1.39 2.06 1 3.41 0.04 0 46.89 
+-0.13 0.13 -2.04 1.65 -1.82 1.5 0 -3.17 2.75 -2.14 0.33 -1.65 -2.32 -0.41 -0.84 0.34 
+0 -0.78 1.41 -0.46 -1.46 -0.99 -1.21 0.8 1.26 0.66 0 0.78 -1.55 0.63 0.05 2.34 
+1.58 0.89 0 3.17 -0.24 0.2 -1.73 2.25 -3.15 1.61 -1.88 1.72 1.75 1.67 -0.35 1.39 
+-1.88 0.85 -0.8 1.56 1.32 1.07 -2.71 0.72 -0.18 0.06 0 -21.09 2.93 -0.3 0.39 -1.21 
+3 -0.91 2.57 -0.79 1.22 -1.32 -1.43 -2.09 -3.04 -1 0 -38.78 3 -0.67 2.84 0.17 
+0.74 -1.41 -1.04 -1.34 -1.02 -1.74 -2.87 -0.43 -1.21 -1.54 -2.84 -0.17 -2.84 1.49 -2.88 0.67 
+-2.32 1.91 1.67 0.52 1.65 0.7 1.76 -0.46 2.23 0.32 1 1.3 2.14 0.67 0 38.78 
+-0.91 -0.32 -3.19 0.7 -0.5 2.82 -3.4 -0.32 -0.09 1.97 -1.04 0.61 -0.72 1.28 1.15 0.74 
+3.06 0.15 0 21.09 -2.24 0.87 -3.75 0.68 -2.91 1.34 0 -17.77 2.08 -0.95 1.82 -2.59 
+-1.02 -2.13 p
+-0.57 1.13 -2.62 1.74 -2.2 1.78 2.5 1.02 0 17.77 -0.24 0.11 -2.84 1.28 -0.91 1.11 
+0 -96.24 2.82 -0.74 0.28 -1.34 -1.32 -0.68 2.61 -1.28 0.3 -0.96 -1.84 -1.12 0.69 -1.89 
+-1.19 -1.06 -0.89 1.87 1.39 1.09 -1.76 1.34 0.7 2.02 -1.17 1.02 -0.61 1.74 0 96.24 
+-0.33 0.39 0.46 1.72 2.52 1.08 -2.23 1.76 -4.11 1.13 -1.3 0.22 0 -105.02 2.52 -1.09 
+1.15 -1.7 1.61 -0.15 -0.43 -1.8 -0.87 -0.24 0 -1.54 1.84 -0.16 -1.15 -1.17 -0.7 1.33 
+0 1.54 -1.39 -0.39 -0.85 1.08 1.06 0.93 -1.67 1 0 -5.12 0.46 -1.61 1.37 -1.02 
+-0.89 -1.11 -1.71 -0.33 -1.15 0.95 -1.07 -0.67 -1.52 -0.09 0.34 2.54 1.46 -0.04 0.93 -0.74 
+0.63 2.04 1.15 0.07 0 5.12 -0.43 0.25 -0.7 2.09 0 105.02 -3.49 0.58 -4.21 1.33 
+-3.26 1.3 -2.3 -0.61 -2.16 -0.98 -2.61 1.06 0 -127.66 0.84 -1.37 -0.2 -2.48 -1.41 -1.73 
+-3.69 -0.09 -3.21 1.21 1.32 -2.45 3.67 -0.95 1.71 -1.74 2.04 -1.28 2.89 -0.98 -1.61 -3.08 
+-2.82 0.21 0 2.63 -1.82 0.93 -1.46 2.02 -1.13 -1.32 0.67 -1.89 -0.11 -2.75 -0.11 -2.63 
+0.39 -2.5 -3.45 2.08 -2.34 2.09 -1.08 2.13 1.43 1.58 -2.46 -0.37 -2.54 2.08 -1.56 2.95 
+-0.48 2.04 3.11 0.83 2.13 -0.46 0.32 1.87 2.02 -0.17 -0.63 1.56 1.58 1.63 1.76 -1.3 
+1.5 1.67 2.28 -0.29 2.43 0.31 0 127.66 -0.22 0.09 1.09 0.84 2.49 -0.41 0.39 1.3 
+-2.49 1.11 -0.18 1.37 -2.52 0.04 -2.02 -0.73 0.58 -1.78 -0.84 -2.26 -3.71 0.79 -3.52 0.7 
+-3.57 0.67 -4.12 0.26 -3.34 1.15 -3.45 0.74 -0.72 0.23 0 -5.88 0.37 -1.17 -3.41 -1.63 
+-4.38 -0.07 -2.21 1.41 4.42 1.2 2.17 -0.39 3.04 0.65 0 5.88 -2.34 0.8 -0.7 0.35 
+-2.71 1.3 -2.75 1.24 -3.84 0.86 -0.61 0.2 0 -251.65 0.48 -1.34 -2.71 -1.7 -1.21 -2.21 
+2.43 0.41 2.15 -0.07 2.65 -0.04 0.24 -1.82 -0.87 -1.75 -1.17 -2.23 -1.43 -1.76 -1.71 -1.3 
+2.19 -0.04 2.21 -0.98 1.06 -1.78 0.5 -2.71 1.09 -2.28 2.3 -0.89 0.87 -2.28 0.58 -1.78 
+0.87 -1.37 0.56 -1.84 -1.15 -1.34 0.89 -0.87 1.17 1.36 1.48 0 2.09 -0.91 0.93 -1.78 
+-0.85 -2.3 -2.08 -1.37 -1.5 -2.3 3.08 -0.41 -1.8 -2.32 -3.12 -0.89 -2.78 0.02 -2.78 0.45 
+-2.5 -1.32 -2.75 0.98 -2.52 -0.41 -0.73 -2.24 -3.06 0.98 -2.28 -1.71 -1.85 0.52 2.3 1.76 
+1.95 1.73 1.7 2.23 2.13 -0.06 1.84 -0.04 1.28 2.19 -2.47 -1.3 -1.75 1.41 -1.8 0.57 
+-2.45 -0.39 -0.54 1.39 2.24 1.26 1.84 0.87 0.15 2.71 -2.11 0.09 1.32 1.73 -0.52 1.39 
+3.21 -0.54 2.06 0.37 0.11 2.28 1.21 2.24 -1.71 0.04 -1.35 1.84 1.24 2.21 -5.21 -1.65 
+-1.02 1.89 1.61 3.06 -1.24 1.85 -1.84 -2.13 0.13 1.78 -1.95 0.09 2.36 1.67 0.43 2.23 
+-1.97 -0.8 0.15 1.82 1.58 2.6 -2.15 0.11 -1.23 1.41 1.17 0.8 1.52 -0.93 0.41 1.76 
+1.48 1.69 1.21 2.19 2.86 -0.11 2.87 0.33 0 251.65 -2.91 0.96 -2.8 1.11 -1.93 1.5 
+-4.21 -0.37 -4.95 0.09 -3.28 1.23 -3.91 1.09 2.09 1.3 1.19 1.45 3.69 0.48 -0.65 1.86 
+1.63 1.45 p
+0.41 1.67 3.8 -0.29 4.17 -0.91 2.84 -0.78 0.87 -1.56 3.54 -0.44 2.23 0.71 2.91 -0.24 
+1.22 -1.58 0.65 -1.59 3.04 1.3 -2.3 1.26 1.41 1.93 1.17 0.48 1.48 0.47 3.29 0.92 
+4.17 -0.42 0.18 1.59 -3.04 0.11 -0.83 1.26 -0.82 1.91 -1.52 1.91 -1.63 1.24 2.71 1.54 
+3.23 -1 4.64 -0.17 3.1 0.78 3.82 0.39 3.32 0.98 3.13 0 3.45 0.93 3.52 0.82 
+3.93 0.74 3.88 0.39 2.28 1.52 1.57 -1.48 2.3 -1.32 3.66 -0.98 3.45 -0.04 3.32 0.26 
+3.75 0.8 -1.39 -1.93 3.85 -0.26 3.28 0.52 1.93 -1.15 3.93 -0.37 1.84 1.11 2.28 1.02 
+3.75 0.57 3.04 0.7 0.63 1.48 -2.71 0.13 -1.84 1.49 3.52 0.63 1.28 1.23 -1.37 1.02 
+0.72 1.69 2.5 -0.07 1.13 -1.3 2.86 -0.22 2.93 0.67 1.23 1.54 -0.59 1.78 2.82 0.07 
+2.14 -1.02 4.17 -0.78 3.64 0.04 2.28 1.13 1.08 1.19 0 136.98 -4.62 0.78 -7.16 1.13 
+-7.14 1.04 -7.12 0.96 -7.07 0.89 -0.39 0.05 0 -151.78 -2.89 -1.15 -2.93 0.11 -0.04 0.98 
+5.86 0.07 0 151.78 -6.66 0.74 -7.04 0.71 -6.96 0.65 -6.95 0.54 -6.9 0.48 -3.09 0.18 
+0 -127.41 2.43 0 2.12 -0.87 -1.97 -0.02 -2.59 0.89 0 127.41 -3.78 0.22 -6.81 0.32 
+3.34 -0.12 3.43 -0.18 1.73 -0.09 1.75 -0.11 1.76 -0.08 1.8 -0.11 1.8 -0.12 1.82 -0.11 
+1.85 -0.12 1.86 -0.14 1.87 -0.15 3.82 -0.3 1.95 -0.15 -0.32 0.02 -2.3 0.2 -2.32 0.2 
+-2.34 0.18 -2.34 0.2 -2.37 0.15 -2.37 0.17 -2.38 0.16 -2.41 0.13 -2.43 0.15 -2.43 0.14 
+-2.45 0.1 -4.95 0.22 -2.5 0.09 -0.26 0.02 -2.25 0.07 -5.05 0.15 0 0.11 -2.35 0.06 
+-25.15 0 -4.38 -0.11 -1.47 -0.04 0 -122.92 -0.85 -0.89 -2.6 0.41 3.45 0.48 0 122.92 
+-4.19 -0.11 -5.64 -0.24 -3.06 -0.13 0 -165.23 0.48 -1.26 -4.6 -0.61 -2.88 0.52 -3.87 -0.28 
+3.28 1.52 3.99 -0.71 3.6 0.83 0 165.23 -2.58 -0.12 -11.29 -0.7 -5.64 -0.44 -5.64 -0.45 
+-0.71 -0.06 0 -154.82 3.04 -0.33 -2.61 -0.84 -2.59 -0.89 -2.58 -0.25 -0.63 0.8 2.39 1.22 
+2.97 0.3 0 154.82 -4.51 -0.43 0 -129.08 -2.02 -3.02 -2.52 -0.8 -0.56 0.78 1.41 0.85 
+3.69 2.19 0 129.08 -0.39 -0.04 -5.64 -0.52 -0.85 -0.11 0 -131.84 -1.84 -1.61 0.8 -1 
+-3.91 -0.89 -0.78 0.89 2.56 1.31 3.17 1.3 0 131.84 -4.77 -0.54 -5.6 -0.65 -2.26 -0.28 
+0 -136.98 1.58 -0.52 -3.75 -2.56 -4.1 -2.11 -1.48 -2.06 -3.43 -2.02 -3.97 -1.62 -0.84 -2.26 
+-2.87 -2.34 -1.32 -2.2 -1.52 -1.93 1.56 -1.82 1.89 -1.69 2.02 1.09 3 0.78 -0.17 1.3 
+4.47 -0.48 5.83 1.91 1.87 1.25 2.74 -0.82 0 -1.32 3.82 -1.17 2.13 2.23 3.43 0.93 
+3.19 -0.79 3.71 -1.02 2.61 -1.34 3.97 -0.71 -0.3 -2.7 -1.28 -2.28 0.26 -1.26 -2.07 -1.52 
+-3.99 -0.02 -1.46 -2.11 -4.1 -1.52 0.7 -1.89 2.95 -0.87 0.41 -1.58 2.54 1.41 1.8 1.52 
+3.8 0.35 4.04 1.3 5.2 0.45 1.89 -0.93 -0.41 -1.39 3.26 0.28 2.25 -0.21 -2.43 -2.15 
+-2.9 -1.61 -2.8 -1.65 -2.61 -0.63 -1.32 1.41 -4.93 -1.29 -0.32 -1.52 3.41 -0.79 3.88 -0.43 
+2.76 -1.41 p
+4.36 -0.28 3.43 -0.74 0.61 -1.93 -3.04 -1.02 -3.25 -1.43 -0.39 -1.66 0.37 -1.93 -1.65 -2.2 
+-2.6 -1.13 -2.2 -2.47 -3.21 -1.19 -1.3 -2.56 -1.07 -0.15 0 -74.74 2.97 -0.65 0.2 -1.52 
+1.43 0.24 1.54 -0.82 2.02 -1.13 2.59 -0.58 1.63 -1.91 0.11 -1.37 1.17 -0.84 0.83 -1.41 
+-0.16 -1.67 0.33 -1.7 -0.87 -1.41 0.02 -1.26 -1.26 -0.62 -2.09 0 -0.91 0.08 0 -0.91 
+3.21 -0.48 3.91 -1.61 0.17 -2.62 2.82 1.28 1.65 -1.52 2.46 1.15 3.19 0.43 3.62 -0.67 
+3.04 -0.11 2.58 -1.47 2.64 -1.11 0.89 -1.86 -0.11 -1.39 1.46 -1.06 0.69 -1.61 -2.34 -0.71 
+-3.06 0.33 -2.09 0.82 -1.82 -0.37 3.69 -1.19 -1.04 -1.76 1.62 -0.08 0.72 1.28 1.83 -0.22 
+-0.35 -1.37 -1 -0.62 -2.14 -0.81 -2.24 -1.75 2.63 0.13 2.19 0.71 1.74 0.93 1.02 -0.71 
+2.21 1.19 2.71 -1.06 1.02 -1.93 -3.45 -2.34 -2.09 -1.3 -0.74 -0.63 0 -92.34 -1.5 -1.5 
+0 -19.05 -1.04 -2.64 -2.87 -2.08 0.93 1.28 0.2 1.82 2.78 1.63 0 19.05 -0.37 -0.37 
+-1.37 0.52 0.61 1.13 2.63 0.22 0 92.34 -1.5 -1.26 -1.82 -1.89 -1.26 -1.8 -1.78 -1.2 
+-0.41 -2.02 -0.78 -1.07 0 -120.86 2.5 -0.59 2.21 -0.61 0.98 -1.84 0.37 -2.71 -2.45 -1.67 
+0.39 -2.3 0.07 -2.73 -0.78 -2.25 -0.75 -2.2 -3.37 -0.3 -2.88 -1.61 -2.82 -0.74 -3.06 -0.22 
+-1.65 1.52 -0.58 2.34 2.08 -0.17 1.23 2.64 2.11 2.56 -1.76 0.16 -1.52 1.93 1.91 1.2 
+-1.61 1.07 1.11 1.71 2.3 -0.2 2 -0.13 1.28 1.26 -1.61 1.04 1.7 2.11 2.63 0.73 
+0 120.86 -0.85 -1.2 0.43 -1.84 -0.06 -2.58 -0.96 -1.54 -2.34 1.39 -0.78 -0.34 0 -7.45 
+0.78 -1.99 -1.54 0.04 0.76 1.96 0 7.45 -1.26 -0.5 -0.91 -1.76 1.95 -0.95 -0.11 -2.61 
+-0.98 -2.41 -2.09 -2.36 2.02 -0.42 -1.47 -1.9 -4.21 -0.42 1.61 -1.25 -0.72 -1.76 -2.23 0.24 
+-1.37 -0.61 -1.88 -0.63 1.47 -1.04 -0.61 -2.54 -1.17 -1.56 -1.93 1.65 -1.78 1.54 0.87 -2.02 
+1.26 -2.15 0.69 -2.37 -0.86 -2.08 -1.18 -2.43 -2.65 0.17 -1.46 1.24 0.48 2.17 0.28 1.74 
+-2.25 -0.28 -0.72 -2.56 -2.69 -0.65 -0.61 -1.22 3.04 0.57 2.06 -1.89 2.3 -1.05 -2.04 -1.32 
+-2.93 -1.09 -2.82 -1.15 -0.83 -0.21 0 -14.24 1.59 -0.84 1.13 -2.06 -0.89 -3 2.93 0.28 
+1.08 2.5 0.96 -1.54 1.45 1.09 2.54 0.02 1.34 -1.15 2.09 0.56 1.86 1.46 1.04 -1.5 
+2.32 0.09 -0.54 -3.02 2.14 -1.63 -0.67 -3 -2.76 -2.3 -3.77 -0.81 -2.87 -1.39 -2.52 0 
+-3.35 -1.21 -3.02 1.43 -2.14 1.79 -4.49 0.95 2.71 1.73 -0.5 2.87 -3.49 0.8 3.54 1 
+2.5 1.32 -1.3 1.17 -2.32 -0.34 -1.65 0.82 2.08 1.34 0.89 1.67 1.59 -0.37 0.49 1.25 
+0 14.24 -1.84 -0.46 -3.21 -0.5 -3.02 -0.02 -2.59 -0.33 0 -220.03 -0.54 -1.39 -1.67 -0.35 
+-0.35 -3.27 -2.19 -0.78 0.17 1.41 2.37 2.64 0.93 1.33 1.28 0.41 0 220.03 -0.67 -0.08 
+-2.75 0.89 -2.45 -0.61 -2.95 -1.43 -2.12 -1.72 -0.74 -0.5 0 -221.16 1.41 -0.67 0.04 -1.43 
+-1.74 -0.28 -0.48 1.49 0.76 0.89 0 221.16 -1.54 -1.08 -0.64 -0.22 0 -217.27 -1.08 -2.24 
+-1.34 -0.82 p
+-1 2 1.67 0.11 1.75 0.96 0 217.27 -2.19 -0.76 -2.99 -0.85 -3.93 -0.45 -3.25 1.34 
+-3.09 0.26 -2.12 -1.67 -1.85 1.39 -1.06 -3.73 -1.87 -2.3 -2.26 -2.13 -3.43 -1.63 -3.25 -0.58 
+-1.35 -3.67 -2.91 -1.84 -2.32 -2.13 -1.91 -2.32 -2.75 -1.96 -2.23 -0.04 -1.89 3.13 0.11 2.67 
+-1.56 1.93 -2.78 2.02 0.02 4.02 0.86 2.95 1.09 3.39 0.82 1.82 1.21 4.54 1.61 1.95 
+0.11 2.3 2.54 2.61 1.74 3.04 0.26 3.46 2.26 2.13 1.82 2.41 2.78 2.35 3.26 2.06 
+3.08 0.87 2.56 -1.71 3.73 2.88 1.84 2.97 -3.45 -0.89 -3.08 0.91 0 2.78 3.12 2.06 
+3.21 1.96 1.87 -1.58 0.93 -2.82 1.8 2.37 -0.89 1.87 1.93 2.88 -2.47 -0.63 -1.67 1.28 
+0.61 1.52 2.96 1.45 1.39 2.06 3.34 1.93 1.84 1.7 1.15 2.34 2.56 1.82 1.37 2.61 
+1 1.97 1.85 1.24 -0.76 1.97 0.43 2.63 -1.45 1.56 -1.76 1.61 -2.17 0.54 -0.18 2.43 
+0.83 1.67 1.82 -0.09 0.21 1.93 0.79 1.43 2.11 -0.43 1.58 -1.13 0.41 2 1.89 1.2 
+-1.04 1.02 1.17 1.89 2.89 0.43 2.06 -1.21 2.54 -0.61 2.75 -1.78 3.93 0.71 1.65 1.26 
+-1.39 1.84 3.16 0.54 3.19 -0.08 2.17 -0.05 0.69 -1.28 1.98 0.5 1.52 1.37 0 0.91 
+-1.54 0.13 -1.52 -0.63 -3.97 0.24 -3.19 0.42 -2.88 -0.13 -3.65 -0.07 -2.47 1.39 -3.59 -0.3 
+-3.19 -1.12 -3.53 -0.39 -1.43 1.78 -2.06 -1.02 -2.75 0.8 -2.09 -2.34 -3.2 0.34 -2.45 1.56 
+1.96 1.26 -1.5 0.8 0.17 1.59 -1.47 0.93 -0.07 2.91 0.3 2.02 2.78 0.57 2.23 -0.98 
+1.02 -1 0.98 1.23 2.78 0.57 1.04 -2.2 1.32 2.26 4.19 -0.63 1.08 -1.09 2.43 1.06 
+3.04 0.65 0.91 1.43 3.84 0.05 -0.76 -1.89 1.7 -0.56 1.76 -1.87 2.43 -0.85 -1.56 1.91 
+-0.61 2.04 -1.21 1.29 -0.33 2.04 2.11 1.61 3.41 0.78 0 74.74 -2.97 -0.41 -2.06 0.43 
+-2.21 -0.91 0 -71.27 2.38 -0.75 3.08 0.15 0.02 -1.12 -3.08 -0.82 -2 -1.07 -0.37 -1.8 
+-1.61 -0.93 -2.91 -0.11 -0.57 -1.59 -2.56 -0.5 -1.91 0.8 -3.3 0.13 -2.61 0.64 -0.24 2.6 
+2.43 1.61 3.08 0.68 2.41 -0.16 2.67 0.85 1.96 1.15 3.11 0.25 0 71.27 -1.85 -0.74 
+-1.58 0.11 0 -67.27 1.78 -0.48 -3.02 -1.08 1.23 1.56 0 67.27 -2.17 0.16 -1.24 -0.57 
+0 -61.07 1.04 -0.61 -0.35 -1.24 -1.52 -1.06 -0.3 -1.39 -2.43 -1.33 -2.75 -0.12 -2.45 -0.55 
+-0.48 -0.98 2.71 -0.2 2.87 0.04 -2.56 -2.19 -1.74 -0.56 -2.04 0.2 -0.13 1.28 -0.17 1.59 
+-1.02 1.08 3.02 0.98 0.24 1.28 1.35 1.93 1.8 0.76 1.82 -0.78 1.63 1.54 1.48 0.33 
+0 61.07 -1.32 -0.61 -2.17 -1.02 0 -52.28 1.31 -0.87 -0.46 -2.11 -2.07 -1.58 -0.95 0.69 
+0.37 1.35 1.3 0.86 0.5 1.65 0 52.28 -0.74 -0.32 -0.54 -0.11 0 -49.91 0.39 -1.33 
+-2.26 0.11 0.06 0.76 1.8 0.46 0 49.91 -3.73 -0.8 -0.86 -0.46 0 -38.13 0.36 -1.8 
+1.56 -1.59 0.85 -1.5 0.32 -1.37 -1.25 -1.58 1.25 -1.2 -0.62 -0.26 0 -2.95 0.15 -1.37 
+0.48 -1.19 -0.39 -1.04 -2.95 0.34 -0.98 1.71 1.32 1.45 2.37 0.09 0 2.95 -1.74 -0.73 
+-1.02 1.3 p
+-0.96 -0.05 0 -11.24 0.29 -0.91 -1.89 -0.16 0 -7.62 1.02 -1.87 -0.17 -2.47 -1.56 -0.41 
+-1.54 0.63 0.8 2.13 1.45 2 0 7.62 -0.35 -0.02 -2.56 -0.65 1.07 1.41 3.45 0.33 
+0 11.24 -1.65 -0.07 -1.91 1.79 2.28 1.3 -1.71 0.96 -1.37 1.54 1.65 1.34 0.65 1.3 
+3.3 0.61 0 38.13 -1.91 -1.04 -3.28 -0.67 -1.8 -1.5 -1.04 -0.65 0 -38.46 1.63 -0.96 
+0.67 -1.49 -2.23 0.71 -1.45 0.72 1.39 1.02 0 38.46 -1.28 -0.78 -2.17 -0.44 0 -38.93 
+2.34 -1 2.54 -1.2 1.8 -1 -1.15 -1.47 -2.54 -1.58 -2.08 -0.74 -2.64 -0.52 -1.43 -2.32 
+2.54 0.7 1.71 -0.34 1.43 0.97 1.89 -0.91 1.15 -0.96 -1.37 -0.22 0 -13.52 -0.78 -2.04 
+-1.8 -1.69 0.11 -1.89 -1.84 -0.89 -1.21 -1.43 -1.37 0.29 -1.65 -2 -0.39 -2.45 2.13 -1.73 
+-0.11 -2.11 0.57 -1.65 -0.91 -2.43 -2.52 -0.87 -2.91 -0.22 -1.86 1.67 1.06 2.28 -2.56 0.63 
+-0.54 2.13 -0.11 2.11 0.02 2.34 1.21 2.76 3.39 0.86 2.89 0.15 2.78 0.89 1.63 1.47 
+-0.59 1.95 2.93 1.65 2.45 0.21 0 13.52 -1.61 -0.26 0 -3.99 0.07 -1.09 -2.04 -1.17 
+-2.78 -1.26 2.88 0.09 1.78 -0.63 -0.48 -1.91 -2.17 -1.83 -2.61 -0.28 -2.9 -0.52 -3.45 0.17 
+0.28 2.73 4.04 1.43 -1.13 1.67 3.08 1.3 2.39 0.37 3.04 0.91 0 3.99 -0.45 -0.06 
+-2.71 -1.74 -1.5 -1.54 -2.63 0.33 -2.8 0.13 0 -1.7 2.26 -0.5 -2.52 -0.91 0.26 1.41 
+0 1.7 -0.15 0 -0.09 1.52 1.23 2.54 -0.8 1.45 -1.3 1.31 -0.13 1.36 1.28 1.54 
+1.79 0.5 0.58 -1.61 2.8 1.04 -1.24 1.35 1.78 1.17 1.76 1.57 0 38.93 -1.04 -0.21 
+-2.7 -0.61 -3.08 -1.91 -3.58 -1.06 -3.06 -0.67 0 -21.86 2 -1.28 2.3 -1.41 3.04 -0.93 
+4.32 0.13 -0.61 -2.32 0.26 -2.06 -3.08 -1.89 -1.43 -2.28 -3.06 -0.86 0 -25.14 3.73 -0.56 
+0.02 -1.34 -2.39 -1.29 -3.6 -0.63 0.98 2.11 1.25 1.71 0 25.14 -0.46 -0.11 -3.25 -1.8 
+-0.98 2.04 -0.06 0.13 0 -47.16 1.15 -1.32 0.48 -1.82 -0.63 -1.8 -2.35 -1.45 -1.97 -0.59 
+-0.31 2.26 -1.54 0.89 0.24 2.06 2.65 1.43 2.28 0.35 0 47.16 -0.76 1.8 -1.02 2.17 
+-3.95 1.02 -2.41 1.65 0.59 1.78 -0.2 2.15 4.58 0.55 4.19 1.54 0 21.86 -0.54 -0.13 
+-3.84 -1.47 2.26 -0.87 0.57 -1.66 -1.22 -1.59 -2.54 -0.89 0.5 -1.58 -0.33 -2.54 -0.32 -2.34 
+-3.14 -0.04 -0.26 -1.59 2.91 -1.47 -3.5 -1 0 -13.11 2.67 -0.48 1.09 -1.35 1.82 -0.15 
+0.87 -1.5 0.3 -1.8 1.22 -1.37 -0.76 -1.54 -4.17 -0.43 1.61 -1.91 -2.17 -1.49 0.37 -1.72 
+-2.99 -2.28 3.17 -0.67 3.08 -1 -0.35 -2.08 -2.16 -1.26 -2.39 0.5 -1.39 0.43 0 -2.93 
+0.82 -1.17 -0.56 -2.11 3.38 1.63 2.24 0 0.97 -1.28 -0.71 -1.82 1.35 -1.2 -3.47 -1.39 
+-3.09 0.87 -1.36 -2.15 -3.85 -1.25 -4.01 -0.52 -1.07 1.89 -2.23 1.34 3.52 1.93 3.04 1.87 
+0.21 1.56 2.69 0.76 2.13 1.04 0 2.93 -1.56 0.5 -2.93 -0.67 -3.88 -1.22 -3.93 -0.12 
+-2.91 -1.87 -2.21 -2.5 -1.56 -2.87 -3.19 -0.26 -0.33 1.84 -2.62 -1.25 -1.84 1.5 -0.57 2.02 
+2.32 2.41 p
+2.73 1.84 -1.82 1.59 -0.54 2.2 -0.87 2.61 0.35 2.86 0.49 2.46 5.04 1.28 1.08 2.41 
+2.73 2.06 4.43 0.43 -0.72 -2 -1.15 -2.43 0.76 -2.11 2.82 2.11 0.87 2.21 1.89 2.58 
+2.73 1.41 1.95 -0.63 2.63 1.71 0 13.11 -1.37 -0.39 -3.78 -0.26 -2.11 -1.17 2.56 -1.96 
+-3.8 0.35 -1.32 -1.3 2.36 -1.13 -1.84 -2.64 -3.49 -1.57 -3.08 -2.26 -2.73 -2.19 -1.54 -2.54 
+-2.78 -2.3 -3.3 -1.11 -0.09 1.76 -2.08 0.39 -0.93 -2.08 -2 -2.19 0.11 -2.52 0.33 -2.34 
+-2.29 -1.95 -1.73 -2.13 2.71 -0.29 2.3 2.29 1.89 -1.11 0.54 -2.21 0.52 -2.04 -4.15 -2.43 
+-2.62 -3.16 -2.17 -2.59 -1.41 -3.43 0.52 -2.13 3.95 0.76 2.21 -0.67 2.95 3.29 2.17 -1.23 
+3.39 -0.39 -3.39 -3.21 -3.88 -2.35 -2.59 1.7 -3.78 -1.08 -2.08 -2.34 3.25 0.28 0.18 -0.54 
+3.5 -0.7 3.29 1.58 2.93 -0.39 2.58 3.38 3.97 2.61 3.75 0 3.61 0.11 1.73 -0.87 
+3.41 0.7 2.86 0.57 3.39 0.98 2.8 0.96 2.89 -0.04 1.23 -2.35 -0.78 -2.75 -1.11 -1.56 
+-1.79 0.24 -2.43 0.2 0 -2.95 3.02 -0.7 1.93 -0.82 0.5 -1.98 0.31 -1.84 -2.32 1.35 
+-2.04 0.21 -2.93 -0.26 -2.67 -0.93 -2.73 -0.95 -1.79 -2.11 2.56 1.35 2.78 0.74 3.32 0.91 
+3.21 -0.65 2.71 -1.09 1.07 -1.37 -1.37 -1.17 -3.06 -0.61 -2.63 -1.93 -3.38 -0.74 2.47 -0.59 
+0.67 -1.52 2.78 -0.65 0 -1.52 -0.49 -1.89 1.49 -1.56 -1.75 -1.32 -3.04 -1.43 0.8 -2.26 
+-0.48 -2.24 -2.04 -3.75 -0.48 -2.91 -1.95 -2.73 -2.82 -0.87 -0.96 -2.97 -2.47 1.19 -2.8 -1.71 
+-0.74 -3.32 1.97 -2.17 -0.97 -2.75 -0.33 -2.74 -0.28 -2.62 -0.59 -2.28 -3.97 -1.41 -2.47 -1.26 
+-2.65 1 -3.06 -1.45 -0.04 2.99 2.39 3 0.41 4.3 -3.95 -2.09 -1.88 -2.76 -0.68 -3.25 
+-0.74 -2.28 -2.48 -2.08 -0.97 -2.82 -3.49 -2.09 0 -681.32 4.05 -0.3 3.54 -1.13 2.28 -1.17 
+0.26 -1.65 -3.35 1.98 -3.23 1.15 -3.55 1.13 0 681.32 -0.26 -0.16 -2.02 1.98 0.04 3.04 
+0.35 2.75 -0.35 2.86 -1.61 -2.23 -0.69 -2.54 -0.89 -2.97 -0.56 -2.56 -1.04 -0.83 0 -712.19 
+4.6 -1.5 -4.47 0 -0.13 1.5 0 712.19 -1.08 -0.82 -1.2 1.99 -0.54 2.2 -0.06 2.52 
+0.84 1.52 -0.59 2.32 -0.11 1.91 0.7 2.65 2.32 1.54 0.34 2.3 -0.17 2.17 0.26 2.56 
+-0.76 2.13 -2.28 0.47 -1.59 2.65 1.93 2.39 2.78 0.71 1.09 -0.71 2.15 0.75 0.52 -3.07 
+1.43 -2.24 3.08 -0.49 1.91 3.14 2.82 -0.22 3.23 0.22 2.65 0.07 2.06 1.91 2.58 2.11 
+0.71 2.91 2.28 2.64 -3.02 0.71 4.3 1.48 1.69 3.86 2.17 2 -3.78 -0.02 -1.65 0.76 
+1.67 3.32 -1.11 1.28 -0.07 3.41 -0.7 2.13 1.56 3.14 2.39 2.23 3.09 2.08 2.54 2.22 
+3.88 1.04 2.91 0.16 2.93 0.04 0 2.95 -0.46 0.04 -2.93 0.16 -0.15 1.58 -1.24 1.04 
+-2.19 -1.19 -2.3 0.48 -3.32 -1.74 -2.71 -1.93 -2.09 -1.69 -3.23 -1.82 -3.04 0.95 -1.43 -2.21 
+-2.61 -1.89 -3.08 -2.28 4.75 -0.22 -2.93 -2.58 -2.73 -0.93 -3.35 -0.87 -3.34 -2.95 1.47 -0.87 
+2.65 1 2.75 -0.96 3.73 1.41 3.71 1.5 3.26 1.17 0.61 -1.91 -0.31 -2.43 -2.06 -1.11 
+0.07 -2.52 p
+-2.17 -0.91 0 -9.16 1.07 -1.78 -1.5 -1.78 -2.67 -1.07 -2.13 0.26 -1.56 1.58 2.62 2.2 
+4.17 0.59 0 9.16 -1.73 -0.74 -2.3 1.07 -3.15 -1.33 -0.7 -2.73 -3.79 -1.21 -3.54 0.93 
+-3.34 0.74 0.15 2.78 1.32 1.39 -1.22 2 -1.69 -2.17 -3.2 0.05 0 -1.37 3.23 -0.7 
+-2.95 -1.96 -1.87 -2.95 -1.23 -3.13 -1.41 -2.34 -2.13 -2.21 -0.59 -2.63 -3.36 0.43 1.28 2.59 
+0.83 2.32 -0.61 1.41 -2.52 0.15 -3.12 0.02 -1.17 1.59 3.08 1.59 -0.89 2.62 3.23 -0.8 
+3.58 2.08 3.8 1.26 2.82 0.66 0 1.37 -1.66 0.02 -3.2 -1.3 -3.64 0.09 -3.62 0.13 
+-0.78 2.95 -4.05 -0.13 -0.39 -0.17 0 -16.91 1.7 -0.93 0.61 -1.28 -0.47 -0.24 -0.24 0.02 
+0 -4.68 0.86 -1.59 -2.52 -1.23 -2.93 -0.61 1.02 1.67 3.56 1.76 0 4.68 -3.15 0.42 
+-1.24 1.43 2.8 0.59 0 16.91 -2.8 -1.3 -1.56 1.65 -1.49 1.5 -3.26 -1.28 -1.3 1.04 
+-2.93 0.02 -3.45 -0.16 -2.82 -0.52 -2.76 -0.5 -3.86 -1.37 -3.23 -1.35 -2.5 -1.91 0.81 -1.39 
+-0.18 -1.82 -2.34 -1.78 0 -36.63 3 -0.59 -1.05 -1.52 -3.6 -1.67 2.34 1.61 -1.87 -0.22 
+-0.8 1.3 3.21 0.09 -1.24 1 0 36.63 -1.2 -0.91 -2.61 -1.21 -2.45 -2.11 -2.06 -1 
+1.36 -0.93 1.59 -1.3 -1.32 -3.47 -0.26 -2.98 -1.21 -3.32 -2 -2.84 -0.37 -2.21 -0.11 -2.56 
+-1.37 -3.93 1.15 -2.39 1.23 -2.36 -0.39 -2.89 -4.6 -2.28 -2.04 -2.24 -2.3 -1.61 -2.12 -1.11 
+0 -0.96 1.78 -0.74 0.13 -1.37 -1.91 -2.25 -0.11 2.25 0.11 2.11 0 0.96 -0.91 -0.48 
+-1.39 -3.28 -1.7 -2.73 -1.04 -2.58 -1.76 -2.56 -0.69 -3.02 1.65 1.58 3.19 -0.58 3.65 0.71 
+2.02 3.04 2.69 2.06 3.04 2.56 1.91 2.28 1.78 2.39 2.49 -0.71 3 -0.35 3.38 -0.02 
+3.09 0.57 3.66 2.64 2.82 2.8 2.1 1.98 2.78 2.88 0.18 1.84 1.11 2.43 2.02 1.04 
+1.35 -1.04 2.99 0.5 2.39 1.52 2.67 2.13 0.82 1.87 2.82 0.84 2.66 0.95 0.79 1.97 
+2.45 1.46 2.22 -0.39 0.69 -2.12 0.15 -2.3 0.84 -1.22 2.46 -1.49 -0.41 -2.26 -0.95 -2.45 
+-0.3 -2.3 -2.15 -0.8 -0.26 -2.3 1.16 -1.37 0.73 -1.65 -2.5 -1.35 -1.8 -2.12 -2.75 -1.84 
+-1.71 -1.35 -1.35 -2.62 0.61 -1.41 -1.75 -3.65 3.08 -0.76 2.26 0.78 2.61 -0.28 2.86 1.04 
+1.05 1.96 1.97 0.34 2.54 0.52 -1.02 -1.96 -1.52 -2.97 -1.3 -3.12 -1.56 -2.89 -1.35 -3.04 
+-0.49 -2.3 -1.59 -1.52 -0.08 -1.98 -1.5 -0.46 0 -697.72 4.36 -1.62 -2.25 -0.76 -2.61 0.98 
+0.5 1.41 0 697.72 -0.91 -0.3 -2.28 -2.24 -0.56 -2.23 0.73 -2.59 -1.47 -2.23 2.16 -2.24 
+-0.69 -2.14 1.86 -1.95 0.16 -2.02 -3.41 -0.15 2.08 -2.12 -1.47 -2.08 1.89 -1.29 -0.29 -3.52 
+-0.09 -0.06 0 -672.25 3.04 -1.33 -1.73 -0.28 -0.83 -1.5 2.34 0.37 2.95 -2.76 -2.61 0.07 
+-3.05 1.32 1.91 -2.47 -2.58 0.5 -0.11 -1.93 -0.09 -1.91 0.89 -2.26 1.56 -1.56 1.63 -1.59 
+1.78 -2.06 -3.32 0.71 0.46 -1.39 3.32 -1.7 -2.08 -0.52 1.26 -2.16 2.89 -2.3 2.95 -0.72 
+0.65 -1.35 3.71 -1.54 2.21 0.63 4.06 -0.89 4.42 -2.3 3.85 -1.91 3.55 -1.43 1.91 -1.48 
+2.82 -0.67 p
+2.95 -1.56 1.33 -2.08 3.6 -0.89 1.96 -1.41 4.1 -0.71 1.63 -1.43 -1.48 -0.96 3.02 -1.02 
+4.43 -2.02 0.89 -1.71 2.87 -1.5 -1.17 -0.93 3.6 -1.78 2.13 -1.76 0.93 -2.3 1.82 -2.54 
+3.8 0.54 2.17 1.43 3 1.06 4.08 0.39 4.34 -0.47 5.21 -0.3 4.68 -0.43 4.58 -0.07 
+3.64 -0.35 5.32 0.81 4.1 0.8 3.13 0.91 1.21 2 -0.2 2.11 1.3 1.56 1.45 1.56 
+1.61 1.61 1.83 1.54 1.04 1.82 0.61 1.71 2.93 1.63 -0.98 2.26 1.93 1.47 2.73 1.55 
+2.19 1.45 3.04 1.5 2.45 1.48 3.63 0.78 2.63 0.46 2.43 1.09 2 1.37 -0.02 1.3 
+-2.41 0.93 -0.87 1.32 1.61 0.37 1.7 -1.26 0.89 1.34 1.65 1.05 2.12 -0.65 1.11 -0.95 
+0.82 -1.63 2.82 0.7 -1.08 0.98 0.58 1.37 -1.08 0.97 2.14 0.35 2.65 0.05 0.15 -0.98 
+-0.22 -1.32 3.89 0.04 3.84 0.35 -0.17 2.3 -0.98 1 2.19 0.7 2.28 -0.67 1.82 -0.98 
+-1.29 -1.32 2.2 -0.98 1.75 -1 3.45 0.98 3.58 1.3 2.3 1.34 3.25 0.96 4.47 -0.04 
+2.89 0.95 3.64 -0.06 3.5 -0.43 3.71 0.25 3.61 -0.08 4.32 -0.52 3.58 -0.11 3.54 -0.15 
+3.52 -0.15 4.08 -0.85 3.69 -0.54 3.47 -0.87 4.69 0.39 2.36 0.89 4.3 -0.28 4.14 0.78 
+4.56 0.05 4.23 0.75 1.98 0.2 3.84 -0.35 1.3 2.11 1.58 1.32 2.5 0.2 0.52 -1.56 
+1.04 -1.93 1.84 -0.95 2.98 -0.67 -1.21 -2.12 3.29 1.49 1.91 0.57 1.39 1.37 1.82 1.37 
+4.71 1.02 3.11 1.19 4.84 1.04 3.32 -0.02 3.76 -0.46 3.28 0.39 2.47 -0.78 2.02 0.96 
+2.04 -0.28 -0.83 -1.93 2.87 0.83 2.11 2.62 3.3 2.06 3.75 0.74 3.34 1.21 4.21 -0.17 
+3.23 -1 0.24 -1.8 1.84 -1.26 -1.41 -1.11 -2.39 0 0.61 -1.02 1.82 -0.8 1.26 -1.2 
+-1.2 -1.61 3.91 0.11 0.63 -1.58 1.52 -0.89 3.13 0.24 2.19 -1.06 1.5 -1.48 2.04 -1.11 
+1.87 -0.57 2.63 0.2 -3.45 -2.17 -1.98 -2.08 -2.11 -2.08 -2.88 -0.11 -2.37 -1.91 -3.56 -2.08 
+-1.71 -2.21 2.11 -0.31 1.45 1.81 4.49 0.54 3.06 -0.06 0.82 -1.02 0.24 -1.34 3.47 0.91 
+3.97 0.67 1.86 -0.21 4.95 2.21 2.91 0.57 4.06 -0.04 2.93 -0.2 5.1 1.52 2.82 -0.26 
+3.09 -0.37 3.04 -0.39 2.9 -0.5 0.26 -1.11 1.26 -1.09 2.04 -0.93 2.43 -0.24 0.21 -1.34 
+0.85 -1.04 1.52 -0.7 -0.76 -1.8 2.19 -0.35 -1.11 -1.48 2.04 -0.19 -0.29 -1.3 1.83 -0.09 
+0.3 -0.78 3.49 0.46 2.78 -0.35 -0.43 -2.04 -1.28 -1.98 -1.48 -2 -2.34 -2.34 -0.8 -1.65 
+-2.52 -2.32 2.36 0.3 -1.04 -1.49 2.36 0.49 3.34 1.35 1.32 -0.79 0.54 -1.11 0.39 -1.17 
+-2.89 -2.21 -3.86 -2.76 -2.34 -2.12 -3.41 -2.67 -1.93 -2.3 -0.66 -1.04 -0.63 -1.04 0.18 -0.67 
+0.2 -0.65 1.39 -0.83 -4.38 -2.38 -0.68 -0.83 -0.65 -0.8 0.91 -0.05 0.93 -0.04 -1.12 -0.96 
+-1.15 -0.95 2.34 -0.17 -0.78 -0.87 -1.47 -0.74 0 -64 0.29 -0.18 0.28 -0.15 0.28 -0.17 
+0.07 -0.16 0.06 -0.17 0.04 -0.15 -1.17 -0.66 -1.19 -0.63 -1.2 -0.65 -0.48 -0.37 -0.48 -0.35 
+-0.5 -0.37 -0.82 -0.5 -0.83 -0.48 -0.87 -0.5 -2.25 -0.91 -4.61 -1.78 -2.36 -1 -2.41 -1.05 
+-2.45 -0.99 p
+-1.57 -0.72 -1.61 -0.71 -1.61 -0.7 -1.69 -0.71 -1.74 -0.74 -1.75 -0.71 -2.28 -0.89 -2.32 -0.89 
+-2.34 -0.89 -0.16 -0.21 -0.12 -0.24 -0.15 -0.22 0.32 -0.09 0.33 -0.07 0.34 -0.08 -2.64 -0.87 
+-2.65 -0.89 -2.71 -0.87 0 -0.28 -0.02 -0.13 1.34 0.22 1.34 0.24 1.37 0.26 -1.95 -0.7 
+-1.96 -0.67 -2 -0.67 -4.28 -1.14 -4.25 -1.08 -4.25 -1.04 -1.87 -0.35 -1.84 -0.32 -1.82 -0.3 
+-3.6 -1.05 -1.82 -0.52 -1.61 -0.48 -1.63 -0.5 -1.64 -0.48 -3.08 -0.48 -1.52 -0.21 -3.08 -0.67 
+-6.2 -1.3 -1.24 -0.06 -2.43 -0.13 2.86 0.87 1.39 0.43 1.78 0.54 1.74 0.54 1.73 0.57 
+1.07 0.41 1.04 0.39 1.02 0.41 4.38 1.17 2.15 0.61 -0.37 0.04 -0.39 0.04 -0.37 0.05 
+-2.65 -0.52 -2.63 -0.52 -2.6 -0.5 3.95 0.93 3.95 0.95 3.93 0.95 3.17 1.09 1.54 0.56 
+2.63 0.8 2.61 0.8 2.58 0.8 -0.04 0.3 0 0.17 -0.22 0.11 -0.23 0.14 -0.22 0.13 
+-0.3 0.13 -0.61 0.22 0.61 0.37 0.58 0.37 0.61 0.37 1.15 0.5 1.15 0.48 1.13 0.5 
+1.75 0.63 1.74 0.63 1.73 0.65 2.72 0.89 2.71 0.93 2.66 0.91 3.64 1.09 3.63 1.11 
+3.64 1.11 2.54 0.82 2.56 0.85 2.54 0.84 3.9 1.13 1.96 0.59 3.71 1.5 2.5 0.89 
+2.52 0.91 2.5 0.93 1.95 0.63 1.97 0.65 2 0.65 0 64 -0.35 -0.2 -1.84 -0.91 
+-2.69 -1.15 -2.7 -1.11 -0.99 -0.67 -0.98 -0.65 -1.32 -0.63 -1.3 -0.62 0.8 -0.13 0.78 -0.11 
+3 0.73 2.99 0.76 0.91 -0.82 -1.63 -1.17 -1.67 -1.15 -0.98 -1.09 -1 -1.08 -1.59 -1.02 
+-1.58 -0.99 -0.74 -0.83 -0.76 -0.8 -2.48 -1.17 -2.5 -1.15 -1.28 -0.91 -1.28 -0.89 -2.17 -1.07 
+-2.17 -1.04 -1.76 -0.96 -0.99 -0.54 0 -50.84 0.17 -0.31 0.2 -0.28 0.17 -0.3 -2.14 -0.57 
+-4.3 -1.08 2 0.84 3.91 1.7 0 50.84 -0.79 -0.41 -2.11 -1.11 -2.13 -1.11 -2.6 -1.37 
+-2.63 -1.37 -1.93 -0.56 -1.95 -0.59 -0.5 -0.61 -0.52 -0.63 -2.38 -0.93 -2.41 -0.93 -2.26 -0.21 
+-2.26 -0.18 -1.43 -0.58 -1.43 -0.57 -1.3 -0.78 -1.32 -0.79 -2.82 -0.74 -2.84 -0.73 -2.08 -0.2 
+-2.06 -0.2 -5.95 -1.99 -0.46 -0.48 -0.48 -0.48 -3.36 -0.95 -3.39 -0.93 -0.54 -0.5 -0.57 -0.5 
+-2.23 -0.28 -2.23 -0.31 -1.83 -0.8 -1.84 -0.8 -3.17 -1.11 -3.19 -1.09 -3.06 -0.24 -3.06 -0.21 
+-2.75 -0.5 -2.78 -0.47 0.11 -0.46 0.11 -0.44 -2.25 -0.54 -2.26 -0.52 -2.89 -0.57 -2.91 -0.54 
+-3.43 -0.54 -3.45 -0.52 -2.52 -0.34 -2.54 -0.37 -2.21 0.61 -1.46 0.24 -1.46 0.26 -1.82 0.04 
+-1.82 0.07 -0.69 -0.82 0.71 -0.41 0.71 -0.39 -1.82 -0.5 -1.82 -0.48 -0.89 0.48 -0.87 0.5 
+-3 -0.56 -3.02 -0.57 -2.56 -0.54 -2.56 -0.52 -3.39 -0.11 -3.36 -0.08 -3.32 -0.02 -3.3 -0.02 
+-3.19 0.05 -3.16 0.04 0.13 -0.39 0.13 -0.41 -2.48 0.48 -2.43 0.48 1.28 0.46 1.3 0.46 
+-2.61 0.99 1.08 0.55 1.07 0.54 1.61 0.63 1.59 0.63 4.94 0.88 -1.43 0.91 -0.18 0.54 
+-0.15 0.52 1.97 0.41 2 0.41 -0.63 0.37 -0.61 0.34 0.89 0.61 0.88 0.58 1.28 0.7 
+1.26 0.67 -0.61 0.63 -0.58 0.61 -0.87 0.43 -0.85 0.46 -2.61 0.78 -2.52 0.82 -2.43 0.83 
+-0.81 0.48 p
+-0.78 0.5 -1.63 0.13 -1.61 0.13 -2.21 0.33 -0.26 0.05 0 -1.91 0.37 -0.65 0.39 -0.67 
+-2.25 0.08 -2.26 0.11 -2 -0.09 -1.99 -0.06 3.04 1 2.34 0.13 2.36 0.15 0 1.91 
+-1.93 0.28 2.06 0.39 2.04 0.39 2.17 0.7 2.17 0.72 1.21 1.48 -2.17 1.17 -1.43 0.78 
+-2.69 1.09 -2.08 1.23 -3.06 1.09 -3.55 0.78 -4.08 1 -3.93 0.82 -4.25 0.87 -4.17 0.46 
+-5.43 -0.26 -4.86 0.93 -2.11 1.52 -3.99 0.61 -3.67 0.74 -3.14 1.05 -1.07 1.71 -3.88 0.54 
+-3.64 1.2 -5.54 0.37 -2.3 -1.3 1.39 -1.52 -0.33 -1.69 -3.06 -1.09 -1.45 -1.41 -1.34 -0.61 
+0 -8 2.09 -1.59 -0.89 -0.61 -0.91 -0.63 -1.12 -0.21 -1.15 -0.2 0.43 -0.57 0.42 -0.55 
+-2.43 0.38 -2.45 0.37 -0.33 0.57 -0.3 0.54 0.24 0.61 0.26 0.58 1.82 1 4.34 0.31 
+0 8 -1.21 -0.56 -2.59 -1.15 -1.89 -1.29 -3.91 -0.24 -5.29 0.72 -5.38 1.2 -3.04 0 
+1.34 -1.65 1 -1.45 2.17 -1.69 2.08 -1.89 0.8 -0.85 0.83 -0.84 0.17 -0.55 0.2 -0.56 
+-3.12 0.39 -3.91 1.13 -0.92 -0.32 -0.91 -0.31 1.98 -0.61 2.02 -0.59 0.79 -0.56 0.78 -0.54 
+-0.43 -0.43 -0.46 -0.41 -0.84 -0.85 -2.37 0.24 -2.39 0.26 -2.93 0.93 -2.9 0.98 0.26 1.25 
+-1.78 0.89 -1.76 0.91 -2.95 0.61 -2.98 0.61 -1.43 0.16 0 -72.48 3.13 -0.24 3.11 -0.22 
+3.08 -0.2 -0.85 -0.02 -0.84 0 -0.87 -0.02 1.96 -0.26 1.97 -0.28 1.98 -0.26 -4.23 0.48 
+-4.23 0.5 -4.18 0.52 0 72.48 -1.95 0.19 -3.38 0.37 -1.81 -0.3 -1.78 -0.28 0 -1.22 
+2.54 -0.26 2.54 -0.24 2.43 -1.34 -3.58 0.41 -3.55 0.41 -0.2 0.5 -0.17 0.52 0 1.22 
+-0.02 -0.02 -1.2 -0.35 -1.17 -0.35 -1.13 -0.35 -1.15 -0.34 -3.14 0.98 -3.13 0.99 -3.02 0.72 
+-3 0.74 -1.21 1.22 -2 0.19 -2 0.22 -2.3 0.7 -2.28 0.74 -2.61 0.71 -2.61 0.76 
+-2.15 0.54 -2.12 0.57 -2.15 1.21 -2.11 1.22 0.68 0.89 2.11 0.98 1.39 0.93 0.11 1.41 
+-1.25 0.89 -3.34 0.35 -5.38 0.82 -5.82 1.24 -4.52 1.37 -6.27 1.82 -5.3 0.43 -1.54 1.48 
+3.86 0.32 1.13 1.02 -4.17 0.67 -0.63 1.63 -1.37 1.75 1.32 0.05 4.45 -1.97 4.97 -0.8 
+3.91 0.52 -1 2.35 -3.26 1.69 -4.88 0.78 -4.91 0.85 -3.66 1.37 3.04 -0.22 4.75 -0.54 
+4.66 -0.37 1.02 1.16 -5.04 1.21 -1.3 -0.59 -4.99 1.11 -0.43 1.13 3.19 -0.43 3.54 -1.21 
+3.75 0.02 -0.41 1.35 -1.89 1.69 -3.36 0.81 -0.21 1.63 1.63 0.76 2.45 0.5 -2.41 1.06 
+-4.17 -0.49 -3.2 1.47 -2.45 -0.06 -2.45 0.7 0.87 1.15 -1.43 1.37 -3.41 0.06 1.54 -1.73 
+-4.88 0.32 -0.74 1.38 3.2 -1.13 -0.61 1.95 4.12 -0.13 -2.3 1.19 3.36 -0.59 3.17 -0.95 
+0.26 1.02 -3.06 1.25 -3.21 1.04 -1.93 -0.85 -4.23 0.39 -3.39 -0.09 -2.6 -0.52 -1.46 1.72 
+2.69 0.65 -1.22 1.8 2.82 0.42 3.19 -1.11 2.14 0.96 2.39 0.95 2.5 0.91 1.07 1.41 
+1.16 1.39 2.55 0.61 -0.48 1.43 0.37 1.31 2.37 0.93 2.38 0.95 3.09 -0.24 -3.64 1.41 
+-2.65 1.98 3 0.39 3.75 0.04 2.54 0 3.39 -2.13 1.13 1.2 1.15 1.24 0.7 1.47 
+1.34 1.17 p
+-0.43 1.52 -2.89 2.19 -3.58 1.93 -3.12 1.02 -4.1 2.32 -4.34 1.74 -3.8 1.46 -4.06 2.41 
+2.02 0.67 -1.15 1.8 -2.89 0.7 -1.3 1.69 -2.82 1.8 -1.12 0.35 0 -5.62 5.29 -2.08 
+4.67 -2.21 4.38 -1.76 4.1 -1.82 3.85 -1.89 2.8 -1.75 2.52 -1.78 0.21 -1.62 -1.34 -1.22 
+-2.63 -0.58 -2.99 1.06 -1.89 -0.35 -3.52 0.89 -2.52 -0.07 -3.32 1 -1.57 1.19 2 1 
+1.67 1.39 1.09 1.07 0.56 0.87 -1.34 1.21 -4.14 1.83 -4.43 1.75 -3.34 1.72 0 -4.35 
+2.5 -0.15 2.39 -1.41 1.52 -1.17 -0.78 -0.98 -1.58 -0.8 -1.89 1.67 -2.04 0.97 -0.11 1.86 
+0 4.35 -0.57 0.28 -0.33 1 0.79 0.89 0 5.62 -2.35 0.72 -2.19 1.46 0.3 -2.05 
+-1.39 -0.43 -2.99 1.8 -1.52 2.21 0 1.58 3.02 -1.73 0.78 0.73 3.49 -1.08 -3.25 2.23 
+0.11 1.57 -2.78 1.3 -0.33 1.93 -0.39 2.45 -2.54 1.91 2.8 0.08 -1.72 2.11 1.89 0.85 
+-2.02 2.04 -0.2 1.39 2.37 1.39 0.75 1.54 0.8 1.52 1.76 0.7 0 672.25 -2.04 -1.7 
+-1.76 -3.82 -2.32 -0.37 -0.52 -0.07 0 -1.43 1.34 -0.86 -2.49 -1.93 0 -656.36 -1.41 -1.59 
+-0.13 -0.07 0 -9.89 3.11 -1.3 -0.91 -1.65 0.33 -1.41 -2.87 0.32 -0.58 2.37 3.12 -1.28 
+-2.2 2.95 0 9.89 -1.21 -0.58 -0.37 -2.43 -2.17 0.09 0.8 1.11 1.74 1.24 -0.39 1.78 
+3.15 0.46 0 656.36 -0.13 -0.09 -3.08 -1.75 -2.2 -1.05 -2.84 -1.91 3.37 0.33 1.02 -1.8 
+-2.15 -0.52 0.41 -2.73 2.23 -0.67 1.93 -1.15 0.84 -1.69 -3 -1.29 -0.45 -2.1 2.54 -0.85 
+-4.04 -1.28 -1.7 -1.39 0.15 -1.3 2.52 1.57 1.29 -0.16 -2.52 -2.12 1.85 -0.39 -2.26 -2.28 
+-2.24 -2.3 -1.82 1.02 1.43 2.1 -2.41 -0.41 2.52 2.13 -1.19 1.32 -1.57 0.26 -3.32 -1.67 
+-1.43 1.52 2.41 0.39 1.19 1.67 -1.67 1.59 -2.2 1.34 -2.19 1.39 -2.09 2.02 -2.8 0.54 
+1.19 2.41 2.13 0.48 2.69 0.71 -0.61 1.02 2.58 1.46 3.35 1.58 2.95 2.41 3.12 1.71 
+2.32 1.61 2.19 1.04 2.8 0.08 0 1.43 -2.56 -0.41 -2.97 1.37 -3.21 0.3 -2.48 -0.91 
+-2.45 -0.85 -2.67 -0.67 -2.41 1.74 -2.3 1 -0.59 1.78 -1.67 1.28 -1.48 1.17 -1.09 1.52 
+-2.2 1.13 -1.04 0.84 0 -3.52 1.66 -1.34 1.37 -1.71 0.76 -1.96 0.63 -1.75 -0.56 -2.3 
+-1.52 1.13 -1.37 1.75 -0.8 1.93 0.43 1.71 -0.61 2.54 0 3.52 -0.59 0.5 -1.39 1.2 
+-2.56 0.76 -2.47 -0.68 -2.28 -1.64 -1.59 1.43 -3.45 -0.5 -2.93 -0.33 -2.87 -1.02 -2.32 -0.87 
+-2.52 -0.63 -2.28 -0.83 -2.56 -0.65 2.37 -0.74 2.52 0.63 2.52 0.71 2.87 1 2.93 0.35 
+2.73 -0.26 2.11 -0.5 2.74 -0.24 2.23 -1.12 2.21 -1.17 0.93 -2.19 -0.24 -1.89 -1.41 -1.61 
+-2.56 -0.02 -2.02 0.22 -2.52 2.11 -0.5 -3.82 2.89 -0.93 -1.28 -0.98 0 -4.82 -1.2 -1.84 
+0.93 -2.02 1.61 -1.2 2.41 -1.12 -2.39 -0.24 -1.34 -1.65 -1.28 2.95 -0.61 2.48 0.16 1.93 
+1.71 0.72 0 4.82 -0.93 -0.71 -2.23 -3.02 -1.2 -3.19 0.89 -2.06 0.71 -3.21 1.56 -1.78 
+2.28 -0.39 1.11 -1.41 1.65 2.12 3.04 1.07 2.6 1.46 0.02 -1.35 -2.17 -2.34 0.65 -2.99 
+-3 -0.52 p
+-2.34 0.3 -1.78 -1.34 -3.06 0.83 -3.87 0.78 -2.9 0.13 -1.41 1.06 -2.25 -0.98 -2.78 -0.63 
+-2.76 -0.61 -0.39 2.38 1.26 2.5 2.39 1.5 3.02 0.43 1.78 -0.07 3.26 0.29 -2.21 0.96 
+1.64 1.52 -3.45 -0.09 -2.49 0.65 -2 1.65 -1.43 -1.69 -2.41 -0.13 -2 0.32 -2.25 0.46 
+0.06 1.43 -2.69 -1.32 -2.25 0.5 -2 0.37 -0.73 -0.84 -2.28 -0.87 -2.12 -1.11 -0.87 -1.45 
+-1.73 -0.65 0.2 -1.61 -1.32 -2.54 1.23 -1.11 1.17 1.17 -1.39 -1.67 -2.54 0.74 0.71 0.87 
+-1.82 0.13 0.39 1.87 -1.86 -1.26 -2.04 0.37 -1.32 1.23 -1.3 1.26 -2.04 0.39 -2.19 0 
+0 -0.21 1.93 -1.02 1.64 -0.87 2.07 -0.36 0.13 -1.7 -2.84 0.39 -2.08 1.25 -2.13 1.24 
+1.29 1.06 0 0.21 -0.2 0 -2.3 -0.84 0.11 -1.71 -2.61 -2.13 -3.02 -1.71 -2.73 -0.39 
+0.78 2.34 -0.13 1.76 -1.75 -3 -1.39 -4.12 -1.71 -0.63 -2.67 -1.32 -2.58 -2.17 -1.02 0.24 
+2.58 2.17 1.84 1.3 -0.89 0.89 1.3 1.09 -0.35 1.97 2.21 1.69 1.47 1.76 1.89 1.24 
+-1.82 0.24 -1.84 -1.26 -2 -2.79 -1.24 -1.91 -0.93 1.75 0.11 -3.32 -2.06 -1.96 -1.39 -1.71 
+-0.32 -2.93 -0.91 -2.21 -1.54 -2.45 -0.67 -2.43 0.5 2.21 -0.13 1.37 -1.28 0.43 -1.82 0.29 
+1.37 -1.37 1.15 -1.13 -1.39 -1.82 -1.5 -0.89 -0.91 0.91 -2.76 -0.41 1.39 -1.37 -1.71 -0.67 
+-0.22 0.13 0 -143.77 0.26 -1.87 -1.09 0.52 -0.73 -0.7 0 -8.33 0.87 -1.65 0.02 -1.19 
+-0.89 2.84 0 8.33 -0.5 -0.5 0.28 2.19 0.95 -0.99 0.83 1.34 0 143.77 -1.76 1.06 
+-2.54 -0.69 -2.52 -0.61 -1.47 0.76 -2.41 0.06 -0.15 -0.08 0 -179.37 3.19 -0.8 -0.76 -3.11 
+-1.52 -1.06 -2.67 1.1 1.78 0.43 0.61 2.54 -0.62 0.89 0 179.37 -1.93 -1.07 -2.26 -0.84 
+-2.73 -0.37 -1.72 0.07 0 -116.99 2.41 -1.35 2.39 -1.32 0.78 -2.25 -1.61 -0.98 -1.7 0.93 
+-1.91 0.46 -1.54 1.46 1.17 3.06 0 116.99 -0.67 0.02 -3.08 -0.82 -2.76 -2.05 -2.71 -2.04 
+-1.82 -3.04 -1.76 -3.08 -0.56 -1.58 0 -27.37 0.09 -3.67 -2.36 -2.39 1.88 2.8 0.39 3.25 
+0 27.37 -0.71 -2 -1.52 -3.34 -0.93 -3.87 -1.28 -1.9 -0.65 -1.85 0 -11.33 0.21 -2.02 
+2.09 -0.37 0.95 -0.85 -0.3 -1.54 -0.17 1.32 -1.93 0.61 0 -45.4 0.96 -1.41 1.34 1.08 
+-1.8 -2.06 -1.84 1.31 1.34 1.08 0 45.4 -1.15 0.37 0.3 2.47 0 11.33 -0.83 -2.3 
+-0.61 -1.78 0 -64 2.21 -1.52 1.54 -3 1.69 0.15 2.56 -1.69 1.74 -1.71 2.04 -1.91 
+-0.19 -2.5 2.28 -1.41 -2.23 -0.54 2.88 -2.98 0.67 -3.55 -2.36 -1.78 -0.52 2.88 -2 1.2 
+-2.71 0.34 -2.19 0.72 0.63 1.57 -2.39 0.17 -0.63 -1.55 -2.37 -1.78 -0.37 4.13 -1.71 1.82 
+-0.05 0 0 -44.22 0.7 -1.48 0.18 -1.04 -0.87 2.52 0 44.22 -1.8 0.5 -1.39 1.63 
+-1.91 1.28 -1.04 -0.63 -1.67 3.8 1.91 0.7 1.67 -1.8 1.15 -2.15 1.9 -1.26 2.29 0.47 
+-0.52 3.67 0.87 2.02 -0.02 2.73 -1.89 1.3 1.93 0.68 0 64 -0.8 -2.34 -0.78 -1.23 
+0 -14.84 0.8 -0.7 -0.87 -3.69 -1.15 -2.05 -0.26 -2.66 -1.65 -1.5 0.83 3.7 -0.26 3.88 
+1.67 0.78 p
+0.89 2.24 0 14.84 -1.34 -2.15 -2.41 -3.21 -2.56 -2.22 -1.34 -0.21 -1.58 0.7 0.99 2.99 
+-0.06 3.21 1.11 3.71 0.82 3.22 0.31 2.93 1.08 2.23 2.39 2.41 -1.28 0.48 1.32 1.97 
+1.84 2.11 1.54 3.37 -0.3 1.28 1.21 4.58 0.26 3.17 -1.65 1.11 -2.11 -0.13 -1.63 1.15 
+1.3 2.84 -0.52 2.56 0.26 2.45 -1.56 1.17 -1.61 1.13 -1.17 1.62 1.11 2.46 -1.7 -0.57 
+-0.8 2.11 -0.96 1.41 -2.24 0.3 0.02 3.09 -2.45 -1.48 0.39 -1.61 1.26 -0.95 0.96 -1.41 
+-1.31 -1.12 -1.28 -0.07 -0.76 -0.96 -0.29 -3.54 -1.15 -0.39 0.52 2.26 -0.41 1.56 -1.48 0.26 
+-1.69 1.47 -0.71 2.24 1.32 2.14 0.46 3.58 -2.04 0.07 -0.61 2.28 -0.26 2.67 -1.52 1.63 
+-1.2 1.07 -2.14 0.43 1.95 2.28 -1.39 0.3 -1.52 -3.25 -0.48 -0.02 0 -75.98 2.41 -0.02 
+1.84 -1 1.82 -1.04 2.17 -0.48 1.56 -1.5 1 -2.52 1.61 -1.49 0.8 -2.26 0.8 -2.17 
+0.02 -3.06 1.67 -1.43 1.15 -2.38 0.91 -2.96 0.65 -2.67 0.93 -2.21 0.74 -3.41 1.52 -1.91 
+1.26 -1.63 -1.56 -2.34 1.5 -0.35 1.54 -1.89 0.28 -2.91 0.91 -0.67 -0.17 -1.24 -2.09 0.82 
+-1.67 -0.18 -1.84 1.35 -1.54 1.89 -1.82 1.37 -2.04 0.8 -2.39 1.87 1.63 0.84 1.93 0.61 
+0.41 2.55 -2.61 2.11 -0.71 3.45 1.02 2.8 -0.07 1.46 -1.95 0.95 -1.13 2.47 -1.13 1.72 
+-0.28 2.52 -2.43 2.21 -1.08 1.59 0 -33.04 1.99 -0.11 1.56 -1.87 1.58 -1.93 1.05 -2.12 
+-0.29 -2.59 -1.21 0.89 -1.02 1.47 -1.67 -0.15 -1.3 1.65 -0.24 3.06 -1.19 0.91 0.74 0.78 
+0 33.04 -0.26 0.39 -0.22 2.54 2.17 -0.48 -1.84 2.49 -1.26 2.09 -1.89 -0.52 -0.87 -0.21 
+0 -3.12 0.15 -1.65 -0.5 -2.23 -1.36 0.37 -0.57 0.93 0.74 0.5 0.21 1.41 1.33 0.67 
+0 3.13 -1.07 -0.26 -1.78 1.8 -1.72 -1.58 -1.99 2.08 2.11 -0.52 1.15 2.02 1.89 0.5 
+0 75.98 -1.37 -0.13 -1.8 -0.2 -1.3 1.41 -2.56 -0.07 -2.47 0.02 -2.17 -0.63 -2.52 -2.52 
+-2.04 -3.54 -2.32 -2.91 -1.78 -2.78 -2.41 -1.52 -2.58 -2.37 -2.58 -2.34 -2.23 -3.02 -2.21 -3.06 
+-2.2 -3.06 -2.13 -1.89 -1.78 -3.76 -0.37 -4.05 -1.76 -1.41 -1.36 -3.32 -0.79 -3.03 -0.58 -3.37 
+-1.41 -4.14 -1.04 -3.64 -0.8 -4 0.65 -2.89 0.63 -2.93 -0.36 -3.36 0.86 -1.2 2.15 -1.07 
+1.87 -1.47 2.49 -0.43 1.29 -2.65 -0.57 -1.04 2.2 -0.96 0.67 1.89 1.8 0.45 1.54 -0.04 
+1.52 2.69 1.65 1.52 1.78 2.38 2.39 3.34 1.54 -0.07 1.67 -1.2 1.69 -1.19 2.02 -0.61 
+1.71 -1.18 0.91 -1.89 1.45 -1.63 0.13 -1.87 -1.45 -2.56 -2.72 -1.26 -2.25 -2.61 -1.95 -2.88 
+-1.96 -2.93 -2.21 -3.43 -2.43 -2.39 0.61 3.45 -3 -5.1 -1.61 -3.25 -2.9 -3.56 -2.61 -0.54 
+0.78 -2.5 0.5 -2.97 2.64 -0.26 1.39 -2.89 1.86 -1.06 2.13 -0.45 1.39 -2.15 1.93 -0.95 
+0.82 -1.59 1.2 -1.8 0.24 -4.02 0.96 -2.28 0.11 -1.61 -2.04 -4.93 -2 -2.02 -1.54 -3.84 
+-1.28 -3.32 -2.09 -3.38 -1.24 -3.34 -1.61 -2.37 -0.41 -3.29 -0.04 -3.5 -0.05 -3.56 0.85 -3.43 
+1.02 -2.87 -0.28 -3.3 1.58 -1.15 0.76 -2.61 2.63 -0.43 2.26 -0.26 2.3 -0.19 1.65 1.56 
+1.96 -1.34 p
+1.28 -2.13 1.5 -1.69 1.02 -3.3 0.7 -3.04 0.67 -3.11 0.8 -4.38 1.39 4.99 2.8 1.55 
+1.82 2.14 1.87 -0.5 0.95 3.27 1.32 3.08 1.67 1.52 2.04 0.06 1.52 -1.54 1.66 1.54 
+2.59 -2.16 2.56 0.41 1.85 0.8 2.06 0.02 1.72 1.59 1.86 0.8 1.23 -1.39 0.18 -1.97 
+-1.87 -2.02 -2.41 0.09 0.09 -3.8 -0.09 -3.1 -1.65 -1.57 -1.97 -2.64 0.48 -2.71 -0.42 -2.91 
+2.82 -0.26 1.02 3.75 -0.41 4.54 1.11 3.8 2.06 0.04 2.11 0.11 2.19 0.66 0.16 3.05 
+2.19 0.63 -0.54 -4.64 1.78 -0.98 2 -1.63 1.3 -2.52 -0.37 -2.87 0.13 -2.45 2.69 -0.79 
+2.56 -1.25 1.98 -0.39 1.8 -0.89 0.34 -1.93 1.61 -1.91 2.43 -1.76 2.52 0.02 2.91 1.63 
+2.63 -1.2 3.02 -1.34 2.65 -1.15 -4.04 0.59 0.98 -2.72 0.93 -3.29 1.63 -0.16 1.69 -1.82 
+2.43 -2.17 0.09 -3.45 -1.59 -3.29 3.71 -0.42 2.3 -3.12 1.93 -2.95 1.95 -3.02 0.3 -2.86 
+-0.87 -2.47 2.06 -0.22 2.02 -2.91 1.37 -2.14 0.87 -2.48 2.71 -1.54 2.43 -0.83 2.54 -0.26 
+2.45 -0.83 2.37 -1.36 2.32 -1.78 1.54 -1.09 1.93 -1.63 2.25 -2.3 1.8 -2.73 2.21 -2.78 
+1.45 -1.99 2.13 -3.8 -0.43 -3.54 1.2 -4.55 0.41 -4.32 2.91 -1.29 -0.85 -4.46 -2.45 -2.46 
+-1.87 -1.58 -2.32 -1.5 -1.08 -2.84 -0.74 -3.43 3.14 0.74 1 -4.43 1.11 3.88 0.29 3.54 
+2.28 0.95 2.54 -1.15 2.63 -0.17 2.93 -1.73 -1.13 -3.84 -1.06 -2.32 1.23 -1.3 2.02 4.12 
+1.85 0.54 3.02 -0.74 2.89 -2.71 2.56 -1.62 3.45 -1.76 0.79 -2.26 2.69 0.43 0.7 -2.69 
+1.2 -2.73 -0.98 -2.8 3.11 0.28 2.73 0.93 2.64 -1.02 2.59 -2.04 2.69 -0.52 2.6 -2.02 
+2.7 -0.52 2.73 0.48 2.69 -0.5 2.61 -2.5 2.65 -2.43 2.62 -2.43 1.74 -2.3 1.8 -2.26 
+2.69 -1.91 1.76 -2.24 2.73 -0.95 2.73 0.09 3.17 -1.49 1.33 -3.59 0.89 -3.56 0.93 -3.49 
+0.43 -2.96 -0.41 -3.79 -2.7 -5.39 -1.32 -2.17 -2.26 -2.11 -1.3 -2.23 -2.69 -1.5 -1.3 -1.26 
+-1.72 -2.62 -1.23 -2.71 -2.15 -3.02 -2.15 -2.11 -2.61 -1.52 -0.22 -3.84 -0.24 -2.84 0.63 -2.96 
+0.22 -2.88 0.65 -2.95 -0.59 -3.24 -0.17 -3.34 0.26 -2.89 -1.56 -1.67 -0.13 -2.82 0.31 -2.89 
+-0.15 -2.82 -2.32 -2.54 -0.48 -2.78 -2.28 -2.54 -0.5 -2.78 0.41 -2.86 -2.41 -1.13 -2.41 -1.11 
+0.39 -2.43 -2.61 0.33 -2.54 -0.16 -2.6 0.33 -1.24 0.37 0 -157.18 2.76 -0.82 1.3 -1.79 
+-1.95 -1.04 -0.13 -1.41 -1.99 -0.56 -1.63 1.32 -1.5 0.37 -0.68 -1.47 -4.1 2.14 3.04 -0.78 
+0.11 1.43 -2.54 1.74 2.54 0.63 3.07 -0.8 1.7 1.04 0 157.18 -1.43 0.41 -3.38 -0.02 
+1.2 -2.04 -2.58 0.32 -1.65 -2.62 -1.87 1.13 -2.62 -1.54 -2.37 -0.68 -1.67 -2.12 -2.06 -2.15 
+-1.61 -2.19 -1.57 -2.17 0.65 -2.93 0.89 -3.95 1.08 -2.97 0.3 -2.87 -0.13 -2.84 -0.98 -0.84 
+-1.58 -1.71 -1.23 -2.71 -0.85 -2.76 0.05 -2.84 -0.8 -2.75 -0.72 -2.76 -1.8 -1.71 -1.75 -1.76 
+-1.37 -1.73 0.2 -2.86 -0.98 -2.78 -1.66 -1.71 0.34 -1.98 -1.26 -1.78 -1.75 -1.28 -2.13 -0.29 
+-3.26 0.74 -2.47 -0.26 -2.99 1.2 -2.13 1.63 -2.99 0.26 -3.23 2.73 -0.02 -1.9 1.56 -2.13 
+4.54 -2.3 p
+2.25 -2.11 0.07 -2.89 2.14 -2.6 2.07 -0.61 1.59 -2.99 -0.22 -2.84 -0.78 -2.36 0.39 -2.45 
+-1.91 -1.32 -1.74 -0.83 -2.39 -0.84 -2.64 -0.3 -1.89 -0.43 -2.95 -0.3 -3.19 0.17 -1.79 1.56 
+0.89 -2.52 2.39 -2.06 0.29 -1.96 0.48 -2.97 1.5 -1.54 0.74 -2.02 -1.95 -1.41 -3.39 0.11 
+-2.58 1.11 -2.84 1.59 -0.57 -1.48 2.37 -3.06 1.97 -3.52 2.84 -1.56 2.15 1.45 2.36 -3.02 
+0.5 -1.5 -1.97 0.05 -2.46 1.99 -0.82 -1.95 3.23 -1.06 -1.45 -1.93 0.24 -2.04 1.52 -1.98 
+1.84 -3 -0.93 -1.02 1.25 -1.98 -2.23 -0.02 -1.5 -1.52 -0.28 -1.52 0.78 -3.02 2.32 -2.97 
+2.89 -1.91 3.19 -1.95 2.73 0.08 1.63 -1.91 1.5 -2.95 -0.41 -2 -0.89 -2.08 -0.3 -2.02 
+1.63 -2.95 1.71 -2.93 -1.47 -1.15 -0.13 -2.04 1.8 -2.93 2.56 -2.36 2.54 -2.3 4.02 -2.67 
+-0.11 0 0 -1.56 3.64 -2.19 1.89 -1.83 2.21 -1.82 3.45 -1.62 3.32 -1.15 2.54 -1.21 
+2.39 -0.76 2.04 0.24 0.97 -1.39 -0.89 -0.59 -2.54 -0.28 -1.23 -1.67 -2.5 -0.35 2.7 -2.21 
+-3.28 1.09 -1.5 -0.72 -2.36 0.74 -2.26 1.74 -0.54 -1.15 -2.85 0.65 -4.19 1.47 -1.34 1.39 
+-1.43 -0.22 -2.34 1.85 -1.91 -0.28 -1.36 1.41 -2.8 1.22 -0.39 1.58 -1.89 0.24 -2.82 1.22 
+-1.85 1.39 3.3 -1.17 3.32 -1.15 4.21 -1.54 2.56 -1.24 3.1 -0.63 1.89 -0.83 -1.13 3.02 
+3.11 -2.75 1.41 -0.3 -2.84 2.75 0.99 1.69 -1.13 0.93 -1.43 -1.23 -1.62 0.84 -2.04 2.91 
+1.54 0.18 -0.48 1.52 1.49 -0.41 0.88 0.65 0 1.56 -2.41 0.24 -1.58 -0.17 1 -1.46 
+-1.32 -0.13 -1.06 -1.69 2.06 -2.93 2.61 -2.82 -0.57 -0.59 -3.06 0.61 -2.09 1.3 1.46 1.8 
+-1 2.04 -1.69 0.29 0.68 -2.59 -0.18 -1.65 -3.29 1.17 -2.3 1.3 -1.35 1.43 -1.95 0.33 
+-2.7 2.32 0.35 -1.61 -2.39 0.78 -2.64 2.95 2.41 -0.2 -1.23 2 -3.06 2.91 1.17 -2.02 
+-1.17 -1.82 -1.17 2.58 -2.09 3.04 1.43 -0.34 -2.21 1.91 -1.58 2.58 1.26 -4.82 -2.99 3.49 
+-0.24 1.63 -2.02 0.37 -1.82 2.52 -1.75 1.47 -2.41 3.67 -2 2.52 -1.34 2.13 0.96 0.61 
+4.14 -3.45 -2.39 3.05 -1.67 2.56 -1.32 3.73 -1.67 -0.11 -2.43 0.89 -0.5 -1.67 -1.58 2.13 
+0.65 2.73 -2 1.52 1.3 0.66 -1.7 1.54 -0.89 2.11 -0.5 1.61 -2.41 2.65 -0.87 2.63 
+0.07 2.19 2.61 -2.12 0.45 -1.61 1.37 -1.56 0.55 -2.11 1.3 -1.04 1.76 -2.06 -1.3 3.17 
+-1.71 2.06 0.44 1.61 -1.67 1.56 -0.5 2.67 -1.98 2.08 -0.78 2.67 -2.65 4.25 0.3 1.02 
+-1.58 1.08 -0.35 2.11 -2.52 1.11 0.63 -2.11 -1.84 0.52 -1.23 1.39 0 -1.89 2.82 -1.11 
+1.63 -2.13 0.11 -2.16 1.96 -2.11 0.8 -2.7 -2.47 0.54 -2.13 4.26 -1.37 2.16 -1.34 3.23 
+0 1.89 -0.67 0.76 -1.91 2.71 -0.98 2.71 -2.15 3.77 -0.22 3.21 -2.08 3.28 -1.82 2.78 
+-1.41 2.7 -2.43 2.82 -1.26 3.8 1.67 -0.11 -1.63 3.3 0.48 1.07 -0.93 3.25 -0.87 3.25 
+-0.13 3.2 -0.46 3.23 -1.04 3.28 0.11 2.08 -1.75 3.36 -0.35 4.29 -1.58 2.29 -0.89 2.28 
+-1.61 3.38 -1.82 3.93 -0.83 3.32 0.85 1.47 -1.89 4.54 -1.5 2.34 0 3.19 -0.7 3.32 
+0.07 3.19 p
+-1 3.36 0.22 4.25 -1.84 4.05 0.52 2.02 -0.74 2.84 -1.21 3.45 -0.48 3.3 -0.81 3.39 
+-0.75 3.41 0.39 3.12 -0.35 3.32 -0.26 3.3 -1.08 3.47 -0.63 3.38 -0.2 3.3 -1.54 4.75 
+-1 4.04 -0.52 3.39 -2.73 3.47 -1.72 1.52 -1.93 3.3 -2.52 2.36 -2.58 2.91 -1.61 1.06 
+-3.34 3.19 -2.61 3.63 -2.34 1.26 -3.34 3.91 -1.71 2.8 -1.71 2.82 -2.2 4.17 0.09 3.43 
+-1.81 5.28 -0.97 3.84 -1.61 2.87 -0.87 2.71 -1.61 4.12 -0.87 3.86 -2.32 5.6 -0.74 3.88 
+-0.76 3.89 -0.74 3.91 -1.39 4.21 -2.15 3.41 -0.61 4.51 -1.33 3.67 -1.32 3.06 -2.06 2.82 
+-1.34 2.52 1.58 1.67 -1.2 4.34 -0.41 3.95 0.24 3.04 2.39 1.96 2.36 1.26 1.52 0.5 
+1.08 3.19 0.93 2 -1.73 0.91 -0.79 -3.37 -1.34 4.47 -1.3 1.97 0.87 0.76 0.43 3.56 
+-0.09 5.16 1.93 0.24 0.52 3.54 2.11 1.37 1.07 4.52 3.19 0.73 2.39 0.59 -0.19 3.32 
+1.86 -0.44 0.13 3.13 2.08 2.65 2.43 -1.37 1.83 3.39 1.95 2.08 -0.91 3.04 1.43 3 
+0.39 3.62 0.76 3.38 0.76 4.73 1.02 2.56 -0.62 3.66 -0.96 3.88 0.04 4.54 1.63 1.56 
+-1.32 0.84 -0.2 3.47 -1.15 2.78 -1.3 0.85 -1.82 -2.15 -1.78 -0.82 -1.96 0.02 -0.35 -2.52 
+1.02 -3.34 -2.45 -0.39 -1.8 0.57 0.8 4.17 -1.96 1.34 -0.3 2.93 -1.58 2.52 -1.74 1.93 
+-1.28 -0.41 -0.44 2.41 -1.71 1.95 1.39 3.19 -0.5 3.22 -1.37 3.99 -0.15 2.98 -2 -1.26 
+-0.2 1.56 -1.02 1.61 0.42 3.3 1.3 2.63 1.02 2.86 -0.63 3.5 -0.56 3.49 -0.35 4.14 
+-0.21 3.26 0.02 3.91 1.13 -1.06 0.04 3.88 -1.24 -1.17 -1.95 1.87 -1.32 1.32 -0.91 3.3 
+-1.35 1.37 -0.04 2.52 -0.83 3.34 -1.54 1.65 -1.05 2.78 -0.74 3.38 0.11 3.43 -0.17 3.69 
+0.17 4.28 0.11 2.56 -0.3 3.12 -0.61 2.58 -0.82 2.11 -1.34 1.8 -2.24 0.13 -2.41 0.46 
+-0.93 3.21 -0.91 3.36 -1.15 2.74 -0.3 3.6 -0.26 3.6 -0.82 2.56 -0.17 3.65 -0.5 3.03 
+-0.43 3.15 0.48 5.14 0.47 3.9 -0.5 1.02 -0.83 2.93 -0.21 4.43 1.2 4.17 0.54 4.27 
+0.11 4.16 1.58 5.02 1.76 4.68 1.69 0.14 0.89 2.34 2.1 0.73 1.55 2.09 0.69 2.99 
+2.97 4.91 1.17 3.45 1.5 4.41 1.24 3.45 2.04 4.86 1.22 3.78 1.32 3.88 2.71 4.86 
+0.73 4.45 1 3.34 1.34 1.43 1.91 1.11 1.67 3.04 -0.17 1.13 1.64 2.97 2 4.95 
+2.8 2.74 0.17 3.1 2.65 4.97 2.75 4.93 2.84 3.73 2.43 3.65 1.93 2.04 2.98 3.62 
+2.49 2.06 0.98 2.71 1.54 2.69 -0.46 1.17 1.63 3.86 -2 -1.19 -2.58 -2.39 -2.58 -2.84 
+-2.47 -1.58 -2.07 -2.87 -1.52 -3.23 -2.41 -3.62 -2.43 -4.12 -2.39 -3.76 -2.86 -3.45 -1.76 -3.73 
+-2.71 -4.28 -2.61 -5.08 -2.67 -3.6 -2.56 -4.36 -1.8 -1.91 -1.63 -3.49 -0.98 -0.2 -2.06 -3.63 
+0.3 -1.88 -2.28 -4.91 -1.89 -4.02 -3.12 -0.39 3.19 5.58 1.37 4.3 1.93 4.45 1.52 3.88 
+1 4.56 2 0.8 2.78 2.84 2.7 3.99 1.21 3.75 1.76 3.43 -0.11 1.93 1.35 3.37 
+0.95 2.5 1.91 2.58 1.91 4.14 -0.43 -3.19 1.5 -0.68 2.48 2.22 1.93 3.28 1.95 3.29 
+2.59 4.5 p
+1.11 3.21 3.56 3.25 0.54 1.56 2.59 2.04 1.65 2.76 1.56 1.17 2.15 2.73 2.69 2.73 
+3.32 3.82 3.25 3.02 2.82 3 2.45 3.73 0.24 1.54 2.2 1.8 0.28 1.52 1.55 3.04 
+1.65 3.41 1.84 4.14 3.27 1.95 3.89 4.23 3.21 3.12 2.85 3.52 1.54 0.48 2.8 1.48 
+0.48 1.54 2.58 2.25 2.93 1.79 -2.3 -2.74 3.19 2.54 0.83 -0.2 1.11 1.78 -1.7 -0.83 
+1.3 2.52 2.11 0.69 2.32 2.63 2.86 2.56 2.91 1.58 2.3 1 2.67 2.04 2.26 2.15 
+1.71 0.67 2.93 0.3 3.26 0.98 3.71 2.02 2.69 1.87 3.54 1.54 3.56 0.37 3.64 0.65 
+3.23 0.79 3.4 1.08 2.56 0.22 1.52 0.63 1.43 0.56 2.3 0.68 -1.32 -2.82 2.41 3.15 
+2.45 0.95 2.39 0.91 3.86 1.8 3.3 1.63 2.02 1.04 1.56 0.11 -3.23 -3.43 -1.17 -2.37 
+-2.67 -2.58 -2.17 0.74 0.46 -1.2 -1.28 -0.63 2.99 0.05 3.38 1.95 0.83 -0.28 3.38 1.88 
+2.41 1.89 3.41 0.81 -0.7 1.61 2.73 2.39 3.32 2.47 1.5 1.06 1.91 1.37 2.93 2.61 
+0.25 0.21 2.61 2.67 3.87 2.82 2.21 0.3 3.12 1.65 3.89 1.17 3.32 2.54 4.32 1.74 
+0.91 0.39 2.97 1.86 4.27 1.43 0.29 -1.65 2.21 0.82 0.91 -0.32 1.58 -0.57 0.43 1.91 
+2.97 1.71 3.15 1.22 3.49 0.91 1.91 -0.26 1.22 1.39 2.3 1.33 -3.71 -1.09 -4.95 -1.34 
+-3.73 -0.02 3.67 1.21 3.06 1.61 2.45 0.91 2.78 0.63 2.61 -0.12 0.75 1.39 3.54 0.24 
+0.83 -1.45 -3.04 -2.13 0.73 0.24 2.37 0.76 2.89 0.72 -1.45 0.78 -0.33 1.41 2.63 -0.2 
+3.73 0.37 1.84 -0.41 3.41 0.54 -2.14 0.7 1.26 1.24 -3.73 -1.46 -3.1 0.31 -4.3 -0.35 
+-4.14 0.29 4.73 0.84 3.95 0.59 4.34 1.43 3.91 0.43 3.5 1.63 3.78 1.28 4.49 1.3 
+3.73 1.59 3.34 -0.24 0.17 1.58 2.78 1.71 4.04 1.61 1.19 0.87 1.72 1.22 2.97 2.06 
+4.36 1.59 4.78 1.34 3.34 0.78 2.61 1.52 3.45 1.15 -3.34 0.96 -0.8 1.97 2.78 1.52 
+0.67 1.97 1.06 2.11 3.22 2 -0.29 -1.67 2.54 0.5 0.5 -2.04 2.32 -1.52 -2.26 -1.95 
+-0.11 -1.61 2.45 1.26 1.82 2.45 0.48 1.8 -1.32 1.63 0.29 1.97 1.65 1.87 -0.52 1.26 
+-3.49 -0.89 0.07 1.89 0.5 1.67 2.21 2.43 2.02 2.6 0.39 1.91 2.93 2.54 2.3 1.91 
+-0.11 1.63 3.11 1.82 3.32 2.13 3.73 1.87 1.93 1.56 3.45 1.71 3.08 2.13 4.41 2.48 
+0 136.98 -3.36 -0.46 -5.6 -0.74 -5.6 -0.82 -5.57 -0.85 -11.16 -1.87 -3.41 -0.63 0 -155.23 
+-1.46 -2.82 -1.15 -2 -1.34 -2.14 -2.69 -0.2 2.36 2.25 -2.32 -0.71 -2.45 0.26 2.45 1.95 
+-0.12 1.39 1.54 1.82 5.19 0.2 0 155.23 -2.17 -0.39 -5.55 -1.05 -5.54 -1.12 -5.55 -1.13 
+-5.51 -1.24 -5.51 -1.21 -5.51 -1.33 -5.49 -1.32 -5.47 -1.41 -5.49 -1.43 -5.45 -1.49 -5.45 -1.52 
+-10.85 -3.21 -5.39 -1.71 -5.38 -1.7 -5.38 -1.8 -0.75 -0.26 0 -180.75 -2.48 -2.2 -1.62 -1.95 
+-2.43 0.89 -4.08 -1.13 -1.76 0.41 -2.88 -1.65 -4.11 -1.26 4.82 2.78 3.76 1.43 3.88 0.87 
+2.91 1.55 4 0.26 0 180.75 -4.6 -1.54 -5.32 -1.88 -5.34 -1.89 -5.3 -1.98 -5.3 -1.99 
+-5.27 -2.06 p
+-3.32 -1.32 0 -184.62 0.16 -1.21 -3.28 -2.78 -2.97 -3.28 -2.63 -2.73 -4.36 -2.36 -3.93 -2.63 
+-4.12 -3.28 -3.71 -2.47 -0.29 1.5 2.2 2.36 3.08 3.06 1.7 0.37 0.98 1.76 2.52 1.82 
+2.32 2.23 1.54 0.04 3.06 2.59 3.1 2.56 4.64 2.45 0 184.62 -1.93 -0.76 -5.23 -2.18 
+-5.21 -2.16 -5.19 -2.26 -1.65 -0.7 0 -56.83 -0.17 -0.3 -0.2 -0.32 -0.52 -0.09 0.45 0.37 
+0.43 0.35 0 56.83 -2.91 -1.28 0 -57.83 -0.61 -0.63 -0.59 -0.63 -1.41 -0.84 -1.41 -0.87 
+-1.34 0.13 2.43 1.48 1.45 0.7 1.48 0.67 0 57.83 -0.62 -0.29 -5.17 -2.34 -5.14 -2.34 
+-5.1 -2.43 -2.5 -1.2 0 -59.44 -0.98 -0.85 -0.96 -0.87 -2.97 -1.32 -2.97 -1.35 2.17 1.45 
+2.19 1.48 1.78 0.74 1.73 0.72 0 59.44 -2.61 -1.26 -5.05 -2.52 -5.06 -2.54 -5.01 -2.6 
+-2.02 -1.04 0 -61.09 -1.15 -0.74 -1.15 -0.76 -0.63 -0.58 -0.62 -0.57 -2.24 -1.26 -2.23 -1.28 
+0.59 0.61 0.61 0.65 0.87 0.71 0.89 0.74 0.96 0.37 0.93 0.35 1.61 0.89 1.58 0.87 
+0 61.09 -3.02 -1.58 -4.97 -2.7 -4.34 -2.36 0 -61.39 -1.59 -1 -1.59 -1.02 -1.54 -1.04 
+-1.52 -1.04 -1.57 -1 -1.54 -1.02 -2.78 -1.43 -1.58 -1 -1.57 -1.02 0.3 0.91 1.11 1 
+1.11 1.02 0.46 0.58 0.46 0.61 -0.35 0.39 1.8 1.2 1.83 1.17 0.82 0.21 0.84 0.2 
+2.35 1.15 2.36 1.13 -0.3 -0.82 2.48 0.82 0 61.39 -0.63 -0.35 -4.9 -2.78 -4.93 -2.78 
+-4.88 -2.88 -4.86 -2.87 -4.84 -2.97 -4.82 -2.95 -4.75 -3.04 -4.77 -3.04 -4.71 -3.15 -4.73 -3.12 
+-4.67 -3.19 -4.64 -3.21 -4.6 -3.3 -4.6 -3.28 -4.56 -3.36 -4.53 -3.39 -4.5 -3.43 -4.49 -3.45 
+-4.43 -3.54 -4.43 -3.52 -8.72 -7.2 -4.3 -3.67 -4.29 -3.69 -8.47 -7.51 -4.19 -3.82 -4.17 -3.82 
+-4.1 -3.91 -4.1 -3.89 -4.04 -3.97 -4.01 -3.97 -3.97 -4.04 -1.3 -1.34 0 -448.89 0.7 -4.05 
+0.37 -3.89 -1.7 -1.58 -1.02 2.13 1.54 1 -0.89 2.82 0.99 3.58 0 448.89 -2.67 -2.69 
+-3.88 -4.13 -1.89 -1.97 0 -2.99 -3.63 -4 -3.58 -3.95 -3.47 -3.95 -3.41 -3.91 -3.32 -3.88 
+-3.28 -3.86 -3.17 -3.84 -1.63 -1.93 -1.62 -1.98 -1.61 -1.95 -3.26 -4 -1.61 -2.02 -2.39 -3.06 
+-2.34 -3.04 -2.3 -3.04 -2.28 -3.02 -2.21 -2.99 -2.2 -3 -2.15 -2.93 -2.11 -2.95 -2.1 -2.93 
+-2.07 -2.93 -4.04 -5.86 2.06 3.04 2.11 3.08 2.17 3.11 2.21 3.14 2.25 3.17 2.32 3.21 
+2.13 2.86 2.15 2.87 2.17 2.82 2.19 2.85 2.19 2.8 2.21 2.8 2.02 2.58 2.04 2.58 
+2.11 2.61 2.13 2.63 2.15 2.64 2.21 2.67 2.25 2.67 5.25 6.08 5.34 5.99 2.67 2.95 
+2.71 2.93 2.7 2.93 0 2.99 -2 -2.13 -3.82 -4.16 -3.82 -4.19 -7.5 -8.46 -7.34 -8.62 
+-7.2 -8.74 -7.04 -8.86 -6.87 -8.98 -6.73 -9.12 -6.58 -9.22 -6.4 -9.33 -6.25 -9.44 -6.08 -9.55 
+-5.9 -9.66 -5.73 -9.77 -5.58 -9.85 -5.4 -9.94 -5.21 -10.05 -5.06 -10.13 -4.86 -10.22 -4.69 -10.3 
+-4.51 -10.39 -4.34 -10.46 -4.14 -10.53 -3.95 -10.61 -3.78 -10.68 -3.61 -10.74 -3.39 -10.81 -3.21 -10.85 
+-3.04 -10.91 -1.71 -6.71 0 -162.24 0.09 -0.74 0.13 -0.76 0.11 -0.76 0.09 -3.6 0.13 -3.63 
+-0.45 3.39 p
+-0.05 2.04 -0.02 2.04 -0.02 2.02 0 162.24 -1.11 -4.25 -2.64 -11 -2.43 -11.07 -2.25 -11.09 
+-2.06 -11.13 -1.87 -11.18 -1.67 -11.2 -1.47 -11.24 -1.28 -11.24 -1.09 -11.29 -0.89 -11.29 -0.7 -11.3 
+-0.5 -11.3 -0.26 -10.22 p f*
+2497.72 3567.43 -5.05 0.15 2.54 -0.07 2.52 -0.08 f*
+2810.8 3475.58 -1.91 1.15 2.58 -1.52 2.56 -1.56 -1.3 0.78 -1.93 1.15 f*
+2821.14 3469.29 -1.7 1.04 1.24 -0.78 1.69 -1.07 -1.23 0.8 f*
+2832.57 3461.96 -3.28 2.13 1.38 -0.86 1.91 -1.26 f*
+2841.54 3455.96 -3.25 2.2 1.82 -1.21 1.43 -0.98 f*
+2849.42 3450.54 -1.61 1.11 3.15 -2.21 -1.54 1.11 f*
+2858.62 3443.96 -1.84 1.32 3.21 -2.34 -1.37 1.02 f*
+2867.71 3437.21 -2.15 1.61 2.8 -2.11 1.91 -1.45 -2.55 1.95 f*
+2876.7 3430.34 -2.63 1.99 2.47 -1.91 2.39 -1.86 -2.23 1.78 f*
+2885.54 3423.29 -2.02 1.59 1.02 -0.8 3.47 -2.82 -2.48 2.04 f*
+2896.22 3414.41 -3.84 3.23 1.89 -1.56 1.95 -1.67 f*
+2903.78 3407.92 -3.75 3.23 2.84 -2.43 4.01 -3.55 -3.1 2.75 f*
+2911.13 3401.39 -3.67 3.25 3.86 -3.43 3.13 -2.86 -3.32 3.04 f*
+2.77778 w
+1 J
+1 j
+K
+3125.8 2918.96 -0.13 11.35 -0.26 11.33 -0.5 11.35 -0.73 11.2 -0.89 11.35 -1 11.2 -1.26 11.35 
+-1.52 11.2 -1.63 11.21 -1.89 11.1 -2.15 11.21 -2.25 11.07 -2.39 11.09 -2.64 10.96 -2.89 10.96 
+-3.04 10.96 -3.12 10.83 -3.4 10.86 -3.65 10.69 -3.77 10.72 -3.91 10.57 -4.14 10.59 -4.41 10.46 
+-4.4 10.33 -4.77 10.33 -4.77 10.2 -5.04 10.2 -5.29 10.07 -5.4 9.96 -5.54 9.83 -5.79 9.7 
+-5.91 9.7 -6.04 9.57 -6.29 9.44 -6.42 9.34 -6.54 9.18 -6.68 9.07 -6.9 9.07 -7.05 8.84 
+-7.18 8.68 -7.42 8.71 -7.42 8.44 -7.66 8.31 -7.82 8.31 -7.92 8.06 -8.05 7.94 -8.18 7.81 
+-8.42 7.55 -8.41 7.57 S
+2902.89 3408.77 -8.57 7.3 -8.79 7.31 -8.81 7.05 -8.94 6.81 -9.18 6.8 -9.18 6.55 -9.31 6.43 
+-9.44 6.29 -9.57 6.05 -9.55 5.93 -19.61 11.32 -9.94 5.43 -10.07 5.16 -10.07 5.04 -10.31 4.91 
+-10.2 4.66 -10.44 4.54 -10.43 4.41 -10.57 4.16 -10.57 3.91 -10.7 3.77 -10.7 3.64 -10.81 3.41 
+-10.83 3.14 -10.8 3.02 -10.96 2.91 -11.07 2.64 -11.07 2.39 -11.07 2.28 -11.07 1.99 -11.2 1.89 
+-11.2 1.78 -11.2 1.39 -11.2 1.26 -11.32 1.13 -11.2 0.89 -11.3 0.74 -11.33 0.52 -11.33 0.24 
+-11.33 0.13 -11.31 -0.13 -11.33 -0.24 -11.2 -0.52 -11.33 -0.74 -11.31 -0.89 -11.2 -1.13 -11.33 -1.26 
+-11.2 -1.39 S
+2387.46 3561.7 -11.2 -1.78 -11.07 -1.89 -11.19 -1.99 -11.07 -2.28 -11.07 -2.39 -10.96 -2.64 -10.94 -2.91 
+-10.94 -3.02 -10.83 -3.14 -10.8 -3.41 -10.7 -3.64 -10.7 -3.77 -10.57 -3.91 -10.57 -4.16 -10.43 -4.41 
+-10.31 -4.54 -10.33 -4.66 -10.18 -4.91 -10.2 -5.04 -9.94 -5.16 -9.94 -5.43 -9.94 -5.66 -9.68 -5.66 
+-9.68 -5.93 -9.57 -6.05 -9.45 -6.29 -9.31 -6.43 -9.18 -6.55 -9.05 -6.8 -9.07 -6.81 -8.81 -7.05 
+-8.68 -7.31 -8.68 -7.3 -8.42 -7.57 -8.31 -7.55 -8.29 -7.81 -8.05 -7.94 -7.92 -8.06 -7.82 -8.31 
+-7.55 -8.31 -7.53 -8.44 -7.32 -8.71 -7.29 -8.68 -7.05 -8.84 -13.58 -18.14 -6.54 -9.18 -6.42 -9.34 
+-6.16 -9.44 S
+1934.18 3272.46 -6.16 -9.57 -5.91 -9.7 -5.66 -9.7 -5.66 -9.83 -5.4 -9.96 -5.17 -10.07 -5.03 -10.2 
+-4.91 -10.2 -4.64 -10.33 -4.53 -10.33 -4.28 -10.46 -4.16 -10.59 -4.02 -10.57 -3.77 -10.72 -3.52 -10.69 
+-3.54 -10.86 -3.14 -10.83 -3.02 -10.96 -2.89 -10.96 -2.64 -10.96 -2.39 -11.09 -2.25 -11.07 -2.02 -11.21 
+-1.89 -11.1 -1.63 -11.21 -1.52 -11.2 -1.26 -11.35 -1.12 -11.2 -0.89 -11.35 -0.73 -11.2 -0.39 -11.35 
+-0.37 -11.33 -0.13 -11.35 0.13 -11.32 0.37 -11.35 0.39 -11.33 0.73 -11.22 0.89 -11.33 1.13 -11.33 
+1.26 -11.21 1.52 -11.22 1.63 -11.2 1.89 -11.22 2.02 -11.09 2.25 -11.09 2.39 -11.09 2.64 -10.96 
+2.89 -11.07 3.02 -10.85 S
+1854.67 2740.08 3.14 -10.83 3.54 -10.83 3.52 -10.7 3.77 -10.72 4.02 -10.57 4.16 -10.59 4.28 -10.45 
+4.53 -10.46 4.64 -10.2 4.91 -10.33 5.03 -10.07 5.17 -10.09 5.4 -9.94 11.32 -19.66 5.91 -9.57 
+6.16 -9.57 6.16 -9.44 6.42 -9.33 6.54 -9.2 6.79 -9.2 6.79 -8.94 7.05 -8.81 7.29 -8.81 
+7.32 -8.57 7.53 -8.44 7.55 -8.45 7.82 -8.18 7.92 -8.07 8.05 -7.92 8.29 -7.81 8.31 -7.68 
+8.42 -7.45 8.68 -7.42 8.68 -7.18 8.81 -7.05 9.07 -6.95 9.05 -6.66 9.18 -6.55 9.31 -6.43 
+9.45 -6.29 9.57 -6.05 9.68 -5.93 9.68 -5.79 9.94 -5.54 9.94 -5.42 9.94 -5.17 10.2 -5.16 
+10.18 -4.8 S
+2203.78 2330.79 10.33 -4.77 10.31 -4.41 10.43 -4.43 10.57 -4.14 10.57 -3.9 10.7 -3.78 10.7 -3.66 
+10.8 -3.39 10.83 -3.14 10.94 -3.04 10.94 -2.89 10.96 -2.64 11.07 -2.39 11.07 -2.28 11.19 -2.15 
+11.07 -1.88 11.2 -1.63 11.2 -1.52 11.33 -1.25 11.2 -1 11.31 -0.89 11.33 -0.76 11.2 -0.5 
+11.33 -0.26 11.31 -0.11 11.33 0.11 11.33 0.26 11.33 0.5 11.3 0.76 11.2 0.89 11.32 1 
+11.2 1.25 11.2 1.52 11.2 1.63 11.2 1.88 11.07 2.15 11.07 2.28 11.07 2.39 11.07 2.64 
+10.96 2.89 10.8 3.04 10.83 3.14 10.81 3.39 10.7 3.66 10.7 3.78 10.57 3.9 10.57 4.14 
+10.43 4.43 10.44 4.41 S
+2741.34 2326.02 10.2 4.77 10.31 4.8 20.14 10.33 9.94 5.42 9.8 5.54 9.81 5.79 9.55 5.93 
+9.57 6.05 9.44 6.29 9.31 6.43 9.18 6.55 9.18 6.66 8.94 6.95 8.81 7.05 8.79 7.18 
+8.57 7.42 8.41 7.45 8.42 7.68 8.18 7.81 8.05 7.92 7.92 8.07 7.82 8.18 7.66 8.45 
+7.42 8.44 7.42 8.57 7.18 8.81 7.05 8.81 6.9 8.94 6.68 9.2 6.54 9.2 6.42 9.33 
+6.29 9.44 6.04 9.57 5.91 9.57 5.79 9.83 5.54 9.83 5.4 9.94 5.29 10.09 5.04 10.07 
+4.77 10.33 4.77 10.2 8.81 20.91 4.14 10.59 3.91 10.57 3.77 10.72 3.65 10.7 3.4 10.83 S
+3097.5 2729.25 3.13 10.83 3.04 10.85 2.89 11.07 2.64 10.96 2.39 11.09 2.25 11.09 2.15 11.09 
+1.89 11.22 1.63 11.2 1.52 11.22 1.26 11.21 1 11.33 0.89 11.33 0.73 11.22 0.5 11.33 
+0.26 11.35 0.13 11.32 S
+2477.65 2368.1 -2 1.49 -4.03 0.63 -3.65 0.76 -3.14 1.02 -1.12 1.63 -3.91 0.63 -3.65 1.13 
+-5.54 0.39 -2.25 -1.26 1.39 -1.52 -0.26 -1.76 -3.14 -1.02 -1.39 -1.39 -2.63 -1.26 -2.52 -1.13 
+-1.89 -1.26 -3.91 -0.24 -5.29 0.74 -5.41 1.15 -3.02 0 1.26 -1.65 1 -1.39 2.28 -1.76 
+2 -1.89 0.89 -0.76 0.76 -0.89 0.13 -0.62 0.24 -0.5 -1.5 0.26 -1.65 0.13 -1.89 0.63 
+-1.99 0.5 -0.89 -0.26 -0.89 -0.37 1.89 -0.62 2.02 -0.5 0.89 -0.63 0.74 -0.52 -0.87 -0.87 
+-0.5 -0.39 -0.39 -0.5 -2.39 0.26 -2.38 0.24 -2.89 1.02 -2.91 0.87 0.26 1.26 -1.76 1.02 S
+2411.74 2358.9 -1.75 0.89 -3.02 0.63 -2.91 0.5 -3.38 0.37 -3.41 0.39 -1.76 -0.26 -1.88 -0.37 
+-1.13 -0.26 -1.25 -0.37 -1.13 -0.39 -1.13 -0.37 -3.15 1 -3.14 1.02 -2.91 0.73 -3.02 0.63 
+-0.62 0.63 -0.63 0.65 -2 0.24 -2.02 0.13 -2.28 0.75 -2.26 0.76 -2.65 0.74 -2.62 0.63 
+-2.15 0.63 -2.15 0.52 -2.13 1.26 -2.02 1.26 0.63 0.86 2.15 0.89 1.37 1 0.13 1.39 
+-1.26 0.89 -3.38 0.37 -5.41 0.76 -5.79 1.26 -4.54 1.39 -6.29 1.76 -5.27 0.52 -1.52 1.5 
+3.91 0.26 1.13 1 -4.14 0.76 -0.75 1.65 -1.26 1.63 1.26 0.13 4.53 -2.02 4.91 -0.76 
+3.91 0.5 -1.02 2.41 S
+2336.5 2389.39 -3.28 1.63 -4.9 0.76 -4.9 0.89 -3.64 1.37 3.14 -0.24 4.66 -0.5 4.64 -0.39 
+1 1.13 -5.01 1.28 S
+2328.21 2395.31 -1.25 -0.65 -5.04 1.15 -0.39 1.13 3.14 -0.5 3.54 -1.12 S
+2328.21 2395.31 3.75 0 -0.36 1.26 -1.89 1.76 -3.39 0.76 -0.13 1.63 1.49 0.76 2.52 0.5 
+-2.39 1.13 -4.14 -0.5 -3.28 1.39 -2.39 0 -2.52 0.63 0.89 1.13 -1.39 1.39 -3.41 0.13 
+1.52 -1.76 -4.9 0.37 -0.76 1.26 3.28 -1 -0.63 1.89 4.14 -0.13 -2.38 1.13 3.38 -0.5 
+3.15 -1 0.26 1 -3.02 1.26 -3.27 1.13 -1.89 -0.87 -4.28 0.37 -3.28 -0.13 -2.62 -0.5 
+-1.52 1.75 2.78 0.63 S
+2301.54 2412.17 -1.25 1.79 2.75 0.5 3.28 -1.13 2.13 0.87 2.41 1.02 2.52 0.87 1 1.39 
+1.25 1.39 2.52 0.63 -0.5 1.52 0.37 1.26 2.39 0.87 2.39 1.02 3.02 -0.26 -3.65 1.39 
+-2.62 2.02 3.02 0.37 6.29 0 3.39 -2.12 2.26 2.52 0.76 1.39 1.25 1.26 -0.37 1.5 
+-2.91 2.15 -3.64 2.02 -3.02 1 -4.14 2.28 -4.41 1.76 -3.78 1.39 -4.01 2.39 1.99 0.76 
+-1.12 1.75 -2.88 0.76 -1.39 1.65 -2.76 1.76 -3.41 1.13 -2.25 1.39 0.37 -2.02 -1.39 -0.37 
+-3.02 1.76 -1.5 2.26 0 1.52 3.02 -1.75 0.76 0.76 3.51 -1.02 -3.27 2.15 0.13 1.63 S
+2297 2459.29 -2.89 1.25 -0.26 2.02 -0.37 2.41 -2.64 1.89 2.88 0.11 -1.75 2.02 1.89 0.89 
+-2.02 2.02 -0.13 1.39 2.28 1.39 0.76 1.63 0.87 1.52 1.75 0.63 3.02 -1.25 -1.76 -0.26 
+-0.76 -1.52 2.28 0.39 S
+2300.15 2475.8 3.02 -2.78 -2.64 0 -3.02 1.39 1.89 -2.52 -2.65 0.5 -0.11 -1.89 0 -2.02 
+0.86 -2.15 1.52 -1.63 1.63 -1.52 1.76 -2.13 -3.28 0.74 0.52 -1.37 3.25 -1.78 -2.12 -0.5 
+1.25 -2.15 2.89 -2.26 3.02 -0.76 0.63 -1.39 3.64 -1.5 2.28 0.63 4.02 -0.89 4.53 -2.26 
+3.78 -1.91 3.52 -1.5 1.89 -1.39 2.88 -0.76 2.91 -1.52 1.39 -2.12 3.52 -0.89 2.02 -1.39 S
+2344.95 2436.11 4.14 -0.76 1.63 -1.37 -1.5 -1.02 3.02 -1 4.41 -2.02 0.87 -1.65 2.91 -1.5 
+-1.15 -1.02 3.54 -1.76 2.13 -1.76 1.02 -2.28 1.76 -2.52 3.77 0.49 2.13 1.52 3.02 1 
+4.16 0.39 4.27 -0.5 5.28 -0.26 4.67 -0.37 4.53 -0.13 3.64 -0.39 5.41 0.89 4.02 0.76 
+3.14 0.89 1.26 2 -0.23 2.15 1.26 1.52 1.5 1.62 1.64 1.52 1.76 1.63 1.13 1.78 
+0.5 1.76 3.02 1.63 -1 2.28 1.89 1.39 2.75 1.63 2.15 1.39 3.14 1.52 2.39 1.5 
+3.64 0.76 2.65 0.39 2.38 1.13 2.02 1.39 0 1.26 -2.39 1 -0.89 1.26 1.52 0.39 
+1.76 -1.26 0.87 1.37 S
+2450.48 2454.75 1.65 1.02 2.13 -0.63 1.13 -1.02 0.76 -1.62 2.91 0.76 -1.15 1 0.63 1.26 
+-1.13 1.02 2.15 0.36 2.62 0 0.26 -1 -0.26 -1.25 3.91 0 3.77 0.37 -0.13 2.39 
+-1 0.89 2.13 0.76 2.28 -0.63 1.89 -1.02 S
+2475.02 2457.4 -1.26 -1.39 2.13 -1 1.76 -0.89 3.54 0.89 3.52 1.39 2.39 1.26 3.14 1 
+4.54 0 2.88 0.89 3.64 0 3.54 -0.5 3.64 0.24 3.65 0 4.27 -0.5 3.52 -0.13 
+3.64 -0.24 3.54 -0.13 4.02 -0.76 3.64 -0.63 3.54 -0.89 4.64 0.39 2.39 1 4.28 -0.36 
+4.17 0.75 4.51 0.13 4.28 0.74 2.02 0.13 3.78 -0.24 1.39 1.99 S
+2569.75 2460.54 1.5 1.39 2.52 0.13 0.52 -1.52 1 -1.88 1.89 -1 3.02 -0.62 -1.26 -2.15 
+3.28 1.52 1.89 0.5 1.39 1.39 1.89 1.39 4.64 1 3.15 1.13 4.91 1.15 3.28 0 
+3.77 -0.52 3.25 0.39 2.41 -0.76 1.99 0.89 2.15 -0.26 -0.89 -1.89 2.91 0.76 2.13 2.65 
+3.28 2.13 3.77 0.63 3.26 1.28 4.3 -0.13 3.14 -1.02 0.24 -1.89 1.89 -1.13 -1.39 -1.12 
+-2.39 0 0.63 -1.02 1.76 -0.87 1.26 -1.15 -1.12 -1.63 3.91 0.13 0.63 -1.65 1.5 -0.87 
+3.15 0.24 2.15 -1 1.49 -1.52 2.02 -1.12 1.89 -0.5 2.65 0.13 -3.52 -2.15 -1.89 -2.02 
+-2.15 -2.15 -2.88 -0.13 S
+2648.63 2445.68 -2.39 -1.89 -3.54 -2.12 -1.76 -2.15 2.15 -0.37 1.49 1.89 4.41 0.5 3.15 0 
+0.76 -1.13 0.24 -1.26 3.54 0.87 3.88 0.63 1.89 -0.13 5.03 2.15 2.91 0.63 4.02 -0.12 
+2.88 -0.11 5.16 1.5 2.78 -0.24 3.14 -0.39 3.02 -0.37 2.89 -0.5 S
+2694.29 2443.05 0.26 -1.15 1.26 -1.13 1.99 -0.89 2.39 -0.24 0.26 -1.39 0.89 -1 1.5 -0.63 
+-0.76 -1.91 2.15 -0.24 -1 -1.52 1.99 -0.24 -0.24 -1.26 1.76 -0.12 0.26 -0.76 3.52 0.5 
+2.76 -0.37 -0.37 -2.02 -1.25 -2.02 -1.52 -2.02 -2.38 -2.26 -0.74 -1.65 -2.52 -2.39 2.38 0.24 
+-1.13 -1.37 2.39 0.49 3.38 1.26 1.26 -0.76 S
+2712.79 2418.23 0.63 -1.12 0.39 -1.13 -2.91 -2.28 -3.88 -2.65 -2.41 -2.14 -3.39 -2.76 -1.89 -2.28 
+-0.63 -0.99 -0.63 -1.02 0.13 -0.74 0.24 -0.63 0.63 -0.39 0.76 -0.37 -2.26 -1.25 -2.14 -1.15 
+-0.63 -0.87 -0.75 -0.75 1.02 -0.13 0.87 0 -1.13 -1 -1.13 -0.89 1.13 -0.12 1.26 -0.14 
+-0.37 -0.36 -0.5 -0.37 -1.79 -1.02 -1.88 -0.87 -2.62 -1.15 -2.65 -1.13 -0.99 -0.63 -1.02 -0.76 
+-1.39 -0.63 -1.25 -0.62 0.75 0 0.89 -0.13 2.89 0.63 3.02 0.76 0.52 -0.37 0.37 -0.39 
+-1.62 -1.13 -1.65 -1.13 -0.99 -1.13 -0.89 -1.15 -1.63 -1 -1.64 -1 -0.74 -0.76 -0.76 -0.89 
+-2.39 -1.13 -2.52 -1.13 S
+2675.17 2375.91 -1.25 -0.89 -1.39 -0.89 -2.13 -1.13 -2.15 -1 -1.75 -1.02 -1.76 -0.87 -2.14 -1.15 
+-2.13 -1.12 -2.52 -1.39 -2.65 -1.26 -2.02 -0.62 -1.89 -0.63 -0.5 -0.63 -0.5 -0.5 -2.39 -1.02 
+-2.39 -0.87 -2.28 -0.26 -2.26 -0.13 -1.52 -0.63 -1.37 -0.63 -1.26 -0.76 -1.39 -0.74 -2.78 -0.75 
+-2.88 -0.76 -2.02 -0.13 -2.13 -0.24 -3.04 -1.02 -2.89 -1 -0.5 -0.39 -0.5 -0.5 -3.28 -1 
+-3.38 -0.89 -0.63 -0.5 -0.52 -0.49 -2.25 -0.26 -2.26 -0.37 -1.78 -0.76 -1.87 -0.89 -3.15 -0.99 
+-3.14 -1.15 -3.15 -0.24 -3.01 -0.26 -2.78 -0.37 -2.76 -0.5 0.11 -0.52 0.13 -0.37 -2.26 -0.62 
+-2.28 -0.5 -2.89 -0.52 S
+2577.67 2341.75 -2.88 -0.63 -3.41 -0.5 -3.52 -0.49 -2.52 -0.37 -2.52 -0.39 -1.13 0.39 -1.13 0.24 
+-1.39 0.26 -1.52 0.24 -1.76 0.13 -1.88 0 -0.24 -0.37 -0.39 -0.5 0.63 -0.39 0.76 -0.37 
+-1.76 -0.5 -1.89 -0.52 -0.89 0.52 -0.87 0.5 -3.02 -0.5 -3.02 -0.66 -5.04 -0.99 -3.41 -0.14 
+-3.38 -0.12 -9.83 0 -3.12 0.13 0.11 -0.49 0.13 -0.37 -2.52 0.5 -2.39 0.5 1.26 0.36 
+1.26 0.52 -2.52 1 1 0.5 1.15 0.52 S
+2516.04 2339.75 1.63 0.64 1.52 0.63 2.5 0.5 2.52 0.37 -0.73 0.5 -0.76 0.52 -0.26 0.99 
+1.89 0.39 S
+2524.33 2344.29 2.02 0.5 -0.63 0.24 -0.62 0.39 0.89 0.63 0.87 0.63 1.26 0.63 1.25 0.75 
+-1.12 1.13 -0.89 0.5 -0.87 0.39 -1.26 0.49 -1.26 0.38 -1.26 0.39 -2.52 0.74 -1.26 0.52 
+-0.75 0.5 -0.76 0.37 -1.63 0.26 -1.63 0.13 -2.15 0.24 -2.25 0.39 1.99 0.36 2.15 0.39 
+2.15 0.63 2.13 0.73 1.25 1.52 -1.13 0.5 -1 0.63 -1.52 0.76 -2.65 1.13 -2.13 1.25 
+-3.01 1.02 -3.54 0.89 -4.14 1 -3.91 0.76 -4.28 0.87 -4.14 0.52 -5.4 -0.26 -4.93 0.89 S
+2511.63 2352.21 -2.28 -0.13 -2.39 -0.11 -1.5 -0.52 -1.52 -0.5 2.02 0.13 2.02 0 S
+2507.99 2351.08 2.12 0 2.26 -0.12 -0.74 1.25 S
+2442.43 2355.88 -0.5 0.5 -0.37 0.5 1.13 0.26 1.13 0.24 0.89 0.63 0.87 0.64 -2.02 1.52 
+-4.38 -0.26 -1.78 -1 -0.23 -0.63 -0.26 -0.62 0.26 -0.5 0.37 -0.52 2.39 -0.37 2.52 -0.37 S
+2401.17 2358 -1.26 0.64 -1.12 0.75 -2.52 0.26 -2.64 0.24 0.26 -0.5 0.11 -0.5 3.67 -0.5 
+3.52 -0.39 S
+2310.96 2433.59 1.65 -1.13 3.25 -1 2.52 0 3.54 -0.89 1.89 0.37 3.02 -1 2.65 0.5 
+1.25 1.26 -0.12 1.65 -2.52 1.75 -2.91 1.76 -3.75 1.89 -4.17 1.88 -4.41 1.65 -4.64 2.26 
+-5.3 2.14 -0.73 -1.02 0.37 -0.87 3.78 -2.02 S
+2306.32 2442.79 4.54 -1.75 4.14 -1.89 1.26 -1.15 -0.5 -0.87 -1.15 -1.15 -1.63 -1.37 -2.02 -1.02 S
+2307.07 2435.61 1.63 0.76 0.76 1 -1.52 1.15 -2.39 1.49 -2.52 0.13 0.13 -1.89 2.02 -1 
+1.89 -1.65 S
+2287.7 2468.62 2.89 -0.37 -0.37 1.37 S
+2290.21 2469.62 0.87 1.78 -3.02 1.26 2.14 -3.04 S
+2290.21 2469.62 -3.14 1.39 0.63 -2.38 S
+2299.13 2478.69 2.64 -0.87 2.28 0.76 -4.4 1.63 -0.52 -1.52 S
+2284.29 2479.58 2.15 0 0.37 2.39 S
+2286.8 2481.96 1.39 0.63 1.39 1.65 -3.14 -0.5 0.37 -1.78 S
+2286.8 2481.96 -1.75 -1.26 -0.76 -1.13 S
+2316.75 2494.32 4.41 0 -4.54 1.39 0.13 -1.39 S
+2058.86 2893.9 -2.13 -1.39 -0.52 -3.51 S
+2056.21 2889 -1.89 -0.26 0.13 -5.16 -0.5 -3.52 -0.89 -0.76 1.39 -2.02 1.26 -4.41 0.89 3.28 
+1.62 -0.89 -0.87 -2.02 -1.15 -3.15 -1.5 -0.5 -2.39 -1.25 -2.41 -2.02 -0.24 -3.02 0.5 -3.91 
+1.13 -4.29 -1.5 -1.76 1.26 -2.52 2.13 -2.78 1.26 -3.02 1.39 -3.77 0.63 -4.4 2.15 -3.41 
+1.37 -4.3 0.76 -3.88 1.52 -7.81 2.25 -5.55 0.89 -3.91 1.63 -4.04 0.87 -2.75 1.52 -2.91 
+1 -3.77 1.78 -5.3 0 -3.39 2.13 -4.17 1.75 -2.88 1.65 -2.78 3.39 -3.91 2.38 -1.26 
+2.52 -3.66 3.41 -3.15 1.63 -0.99 2.52 -3.02 2.52 -2.28 1.89 -3.41 1.75 -1.5 2.78 -3.4 
+0.5 -3.41 S
+2103.02 2746 1 -4.03 1.52 -4.78 0.24 -3.28 0.63 -3.41 1.02 -3.52 0.37 -3.27 0.26 -3.28 
+-0.39 -3.15 0.76 -3.4 0.89 -3.41 0.37 -3.28 1.26 -3.39 0.76 -2.91 -0.5 -2.02 1.76 -4.04 
+-0.13 -4.27 1 -3.41 -0.11 -3.14 0.74 -3.28 0 -3.28 1.52 -2.26 1.89 -4.53 -0.89 -1.52 
+0.75 -3.28 1.89 -3.91 1.63 -3.38 0.89 -2.28 1.52 -2.26 0.37 -4.4 1.76 -3.28 -0.14 -2.15 
+1.13 -3.28 0.39 -3.14 0.13 -3.28 0.87 -3.28 0.89 -3.28 -0.39 -1 1.65 -3.27 -1.75 0.13 
+1.25 -3.8 2.52 -2.88 1.37 -2.65 1.76 -2.78 2.15 -3.27 0.13 -3.28 2.26 -3.78 0.89 -2.65 
+2.02 -2.75 S
+2142.91 2595.98 1.87 -2.14 1.78 -0.5 -0.63 2.13 2.62 -1.13 0.26 -2.12 1.63 -1.02 -0.37 -1 
+2.64 -4.29 0.87 -2.65 1.88 -2.12 0.5 -2.65 1.79 -1.52 -0.52 -1.63 1.78 -2.15 1.26 -3.15 
+-1.78 2.15 -1.26 1 -0.5 2.15 -1.39 1.49 -0.5 1.65 -2.63 2.13 0 -2.26 0.87 -2.65 
+2.38 -2.65 0.5 -1.49 0.89 -2.15 1.63 -1.52 -1.26 -0.76 2.02 -1.5 -0.63 -2.64 1.52 -2.15 
+0.5 1.65 2.39 -0.89 1.75 0.13 1.26 -3.77 1.75 -2.54 2.39 -3.02 -4.14 3.4 -1 -0.62 
+1.39 -2.15 1.99 -2.52 2.39 -3.64 1.78 -1.39 1.76 -2.52 2.02 -0.39 0.24 -1.62 3.02 -3.54 
+-1.26 4.8 1.65 -2.52 S
+2180.01 2539.67 2.13 -2.02 -1.39 0.38 2.02 -3.02 1.26 -2.52 1.13 1.76 -1.13 2.02 3.02 -2.88 
+1.26 -2.02 -2.39 0.24 2.64 -3.02 2.39 -0.76 -0.37 1.65 2.63 -2.41 2.02 -0.24 1.26 -1.52 
+2.39 -1.26 3.28 -1.12 0.13 1.63 -0.63 2.65 1.63 -0.37 1 -2.02 -1.37 -1.76 2 -1.39 
+3.14 -0.5 0.52 0.5 -2.52 2.89 -2.15 2.91 1.13 1.63 1.26 0.13 -1 1.52 1.63 0.13 
+2.52 -0.26 -4.01 2.78 -2.52 2.25 -2.64 2.39 -1.76 2.91 0.13 2.02 1.5 1.13 -1.76 2.91 
+-1.62 3.02 0.36 2.02 0.89 2.02 0.37 2.02 -1.52 3.02 -1.63 1.89 -2.75 -0.13 -3.15 2.02 
+-2.91 1.89 -2.26 2.91 S
+2184.16 2567.64 -0.89 3.02 S
+2183.27 2570.66 0.39 1.52 1.5 1.63 2.15 0 -1.26 1.89 1 1.02 -1.89 3.02 -1.5 2.02 
+-0.26 2.02 1.52 1.89 -3.28 1.13 0.89 1.89 2.39 -2.02 2 0 -0.5 1.52 -2.39 3.02 
+-2.13 -1.39 -2.9 1.52 -1.89 3.51 -2.39 3.04 0.5 1.5 2.91 -1.62 2.52 -1.02 3.38 -0.11 
+2.02 1.39 -0.75 2 -1.5 1.52 -0.52 3.02 -0.24 1.89 -2.38 2.02 -0.89 2.64 1.76 -1.63 
+3.14 -0.13 3.02 0.26 1.89 0.37 2.65 0.37 2.38 0.89 1.76 0.75 1.89 1.39 -0.37 2.39 
+0.76 2.39 0.24 2.91 -1.62 2.89 -2.02 0.63 -2.12 2.64 -0.14 2.91 -2.28 2.02 -4.51 2.39 S
+2186.18 2634.53 -1.52 2.02 0 2.02 3.28 -2.78 3.02 -0.26 2.02 -1.63 3.02 -1.13 2.52 0.24 
+3.28 -0.75 2.13 0.26 1.76 1.25 1.25 1.76 -0.37 2.02 1.63 1.78 1.02 2.76 -0.26 2.78 
+1.39 1.76 1.76 1.75 1.89 1.78 0.63 2.76 0.87 2.78 -0.11 2.78 0.87 2.78 1.25 2.63 
+1.52 1.78 1 0.87 0.13 2.78 -0.26 2.91 -1.13 3.02 -0.87 3.91 -0.63 2.89 1.5 2.14 
+1.65 2.28 2 2.13 1.76 2.15 2.41 0.63 2.52 1.52 1.87 -1.15 1.65 2.64 2.65 -0.24 
+-1.26 2.02 3.39 0 2.78 -0.76 2.52 -0.39 2.52 0.13 2.62 -0.26 -0.37 2.41 4.77 2.26 
+-0.37 2.91 S
+2251.84 2702.43 0.5 2.75 2.26 2.54 0.5 2.76 S
+2255.1 2710.48 2.28 2.52 0.24 2.91 -0.37 2.78 0.13 2.89 1.63 1.65 -0.24 2.88 0.11 3.41 
+0.63 3.15 -0.74 3.02 -0.12 2.9 -0.64 2.89 0.24 2.91 0.13 3.78 2.64 1.52 2.15 2.13 
+2.13 3.04 1.25 2.63 1.76 2.64 1.26 1.26 2.65 1.52 1.39 2.28 2.26 2 1.26 2.28 
+2.78 5.29 0.37 3.91 -0.5 2.89 -0.89 3.53 -0.87 3.52 -1.39 3.54 -3.14 1.5 -2.78 0 
+-2.63 0.89 -1.78 2.28 -2.76 1.89 -1.76 2.25 -1.76 2.28 -2.65 2.39 -2.64 2.52 -2.52 2.52 
+-2.75 0.5 -2.78 -0.5 -2.64 0.5 -2.63 2.02 -2.64 0.5 S
+2238.76 2813.65 -2.65 2.02 -2.65 1.02 -2.62 -0.89 -3.15 -0.24 1 2.75 -1.25 2.78 -0.63 2.64 
+-2.76 -0.39 -0.76 2.15 -3.41 1.75 -2.52 1.65 -2.89 2.78 -3.14 0.74 -1.76 -0.63 -2.02 -4.02 
+-1.26 1.26 1.02 2.25 1.13 3.91 -2.91 1.76 -2.63 0.13 -2.52 1.13 -2.28 -0.86 -0.24 -3.54 
+-1.12 -3.91 -1.02 4.41 -3.14 -0.74 0.76 3.39 1.02 2.91 2.39 1.52 1.89 1.5 2.39 2.52 
+0.87 4.41 -2.89 1.28 -0.37 4.41 -1.26 4.54 0.38 3.52 -2.02 3.77 -1.5 2.02 -2.28 2.78 
+-1.76 2.78 -2.25 2.26 -1.89 1.65 -1.52 1.13 -2.39 1.75 -2.39 1.26 -2.38 0.89 -2.52 0.24 
+-2.52 0.89 -2.65 1.52 S
+2169.68 2886.48 -0.87 2.52 -1.39 2.12 -2.02 2.91 -2.02 0.13 0.89 2.52 S
+2164.28 2896.68 -0.37 2.89 -1.89 3.04 -2.02 2.88 -2.25 3.15 -3.78 0.39 1.63 3.28 -0.14 3.52 
+-2.38 2.14 -1.62 1.76 -1.65 0.26 -1 3.28 -1 2.64 4.02 -0.52 -2.52 1.15 -3.14 1.37 
+-2.52 1.15 -3.02 -1.64 -2.38 0 -2.52 1.78 -1.63 1.89 -0.26 1.89 -1.89 0.87 -1.89 0.52 
+-2.64 1.25 -2.62 0.74 -0.13 2.41 0.37 2.88 -1.37 2.52 -1.89 1.65 -1.89 1 0.63 4.66 
+-2.28 -0.76 -0.11 -3.02 -2.15 -0.62 -2.15 -0.14 -2 0 -1.15 -3.77 0.39 -4.54 -1.02 -3.78 
+-2.76 0.24 0.37 2.91 -0.5 2.78 2.02 2.62 S
+2109.18 2943.4 1.63 1.52 0 6.92 2.39 -0.11 1.89 2 -0.24 2.02 -1.13 1.39 -1.89 -0.87 
+-1.78 -1.52 -2 0 -1.89 -0.89 -2.52 -0.36 -2.64 2.15 -1.63 -1.52 -1.52 1.52 -2.02 0 
+-1.75 -1.52 -1.26 -3.14 -1 -3.28 -1.88 0.5 -1.76 -2.15 -2.78 -1.5 -1.37 -5.04 -0.89 4.41 
+-0.63 3.15 -0.76 3.02 -1 3.27 -1.52 1.65 -1.26 2.13 -1.89 1.39 -1.75 -1.52 -2.26 0.13 
+-2.28 0.26 -2.62 0.5 -0.76 2.52 -1.52 1.26 0.26 3.27 -1 2.78 -0.89 3.52 0.13 3.54 
+0 3.52 0.37 3.28 1.64 2.41 1.26 3.28 1.99 3.38 1.39 3.28 1.52 3.91 2 2.02 
+2.02 4.9 S
+2075.58 3004.75 -0.12 1.65 -1 2.26 -0.26 4.04 -1.13 1.76 -0.87 1.64 -1.89 0.89 -1.39 2.12 S
+2068.92 3019.12 -2.14 0.5 -1.89 1.02 -1.37 2.88 -2.65 0.26 -0.5 3.02 -0.76 2.52 2.65 0.52 
+2.89 3.52 1.63 3.28 2.91 5.04 -0.52 -3.38 2.41 2.38 2.26 3.41 1.89 2.88 2.02 2.91 
+2.13 2.63 2.78 1.28 1.5 2.52 -0.11 1.89 -1.52 1.63 -0.89 1.88 -1.76 1.13 -2.02 0.65 
+-1.63 1.26 -1.76 1.13 -1.52 0.14 -2.39 -3.41 -1.76 -2.39 -1.62 -1.52 -1.52 -2.64 -1.5 0 
+-1.89 -0.37 -0.63 -1.89 -2.28 0.87 0.63 1.02 -1.26 2.64 -2.52 0.5 -1.89 1.49 -2.12 1.02 
+-0.89 1.26 0.39 3.27 S
+2051.7 3065.86 -0.63 3.02 -0.63 2.78 0.74 4.04 1.15 3.64 1.37 4.14 0.52 3.41 0.87 3.04 
+1.39 3.25 1.76 1.39 0.26 4.04 1.89 3.78 2.13 1.89 2.15 3.14 2.13 3.04 2.28 3.02 
+2.63 2.28 2.52 2.39 2.39 1.5 1.89 2.78 2.28 2.91 2.02 3.51 2.5 2.52 2.28 0.63 
+2.39 0 2.52 0.13 1.39 -1.39 1.75 0.13 1.89 0.13 1.49 3.28 1.39 -0.26 -2.02 -2.25 
+2.15 -0.5 1.25 -1.02 1.5 -1.62 0.26 -2.64 0.63 -2.28 2.02 -0.14 -0.39 -3.52 -1.37 -2.14 
+0.74 -2.26 1.65 -1.52 1.5 -0.26 0.39 -1.49 -0.5 -2.29 1.13 0.39 0.37 3.52 0.76 1.02 
+1.26 0 1.26 1.13 S
+2112.96 3116.12 -0.89 1.39 -1.39 1 -0.37 1.52 2.52 1.52 0 -3.04 2.14 -0.37 1 -1.39 
+0.76 -2.02 1.75 0.5 S
+2118.49 3115.23 -1.13 -2.39 1.13 -1.62 1.63 -1.16 1.65 -1.25 -0.39 -2.39 0.63 -2.52 -1.39 -2.91 
+1.65 -1.13 2.13 0.13 1.65 -1.13 -0.26 -3.15 -1.26 -4.66 0.39 -1.26 -1.52 -3.28 -1.89 -2.14 
+-1.39 -2.02 1.39 -0.37 -2.52 -2.52 -1 -2.15 -0.26 -3.02 -0.87 -3.14 -1.15 -3.8 0.13 -3.14 
+-1 -3.02 1.5 -0.63 1.39 0.13 2.52 2.26 2.52 3.14 2.02 3.41 1.49 4.17 1.39 4.14 
+1.26 1.89 1 3.91 1.52 3.28 1.26 3.67 1.75 3.02 1.89 3.02 2.65 2.14 2.75 2.02 S
+2141.75 3100.76 3.14 0.75 2.39 0 2.64 0.24 2.28 0.89 2.13 1.13 2.39 0 1.52 -0.76 
+5.04 1.26 1.99 -1.13 1.65 0.63 -1.39 1.39 2.78 0.36 0.87 -0.86 1.52 0.86 1.36 1.78 
+-2.52 2.52 1.88 -0.26 1.26 -0.37 0.13 -1.39 -0.5 -2.28 0.63 2.41 1.63 2.52 0.89 2.13 
+0.26 3.03 1.5 1.63 2.02 2.02 -0.13 3.28 1 -1.76 1.15 1.89 1.99 2.89 1.89 1.25 
+1.76 -0.24 -1.87 -1.25 -1.52 -1.79 -2.15 -1.62 0.39 -2.02 -1.39 -1.12 0.89 -0.89 -1.78 -1.26 
+-2.63 -2.15 1 -0.24 2.64 2.15 2.65 1.26 1.76 0.63 1.37 4.14 1.78 3.04 0.11 -1.78 S
+2188.17 3123.68 -0.74 -2.39 2.63 0.5 3.04 1.65 2.62 2.13 -0.13 1.78 2.28 0.74 2.39 0 
+2.02 -0.37 1.39 -1.25 1.24 -1.26 2.15 -0.39 S
+2207.05 3124.8 1.88 1.39 -0.49 -1.89 1.88 -0.13 -0.76 -0.87 2.52 -0.75 1.39 1.63 -1.15 -1.13 
+-1.24 1.13 1.37 2.54 -0.24 1.5 1.76 0.76 0.87 1.39 2.15 1.13 2.25 0.89 0.76 0.87 
+2.02 -0.37 2.26 -0.5 2.65 1.26 -0.13 -1.39 2.28 -0.5 2 -0.26 2.38 0.13 1.52 1.63 
+2.02 -1.63 2.39 -0.63 3.52 0.13 -1.63 -1.52 2.12 -1 -3.14 -0.26 -1.89 0 -3.02 -0.37 
+-2.39 -1.52 -1.13 -2.52 0.38 -2.39 2.64 0.63 2.91 0.63 2.25 1 S
+2240.02 3123.8 1.39 -1.13 2.89 -0.12 3.91 -0.76 3.02 -0.87 1.76 1.37 2.39 -0.24 2.89 0.5 
+-0.63 3.02 2.28 2.28 -0.13 1.39 -2.52 -1.52 -3.02 -1 -1.76 -2.15 -1.02 1.39 -2.39 0.36 
+-1.5 1.76 -0.75 3.28 -0.89 2.02 1.26 3.28 2.28 3.02 2.13 1.65 -2.88 0.89 0.5 3.88 
+2.52 -2.13 2.02 -0.26 2.63 0.13 1.39 1.52 0.25 1.89 -1.02 2.25 -2.13 1.13 -2.25 1.15 
+-2.78 0.24 -2.15 0.52 -2.63 0.24 -3.02 -0.37 -2.78 -1.02 -2.52 -0.76 -2.52 -0.5 -2.39 0.63 
+2.52 0.75 2.25 0.76 2.52 0.63 2.39 0.89 2.91 0.99 2.89 0.38 3.4 0.39 1.63 -1.39 
+2.26 1.63 2.52 0.76 S
+2257.12 3156.55 2.52 -0.76 1.39 -1.26 1.63 -1.37 2.15 -1.02 1.13 -1.62 1.52 -1.15 1.63 -1.26 
+0.63 -1.75 2.25 -1 2.39 -1.78 2.64 0.75 2.52 0.76 2.39 0.89 S
+2281.9 3145.98 3.28 -0.26 3.02 -1.39 3.02 0.5 2.39 0.39 1.78 3.77 1.99 1.76 0.39 3.53 
+-1.89 1.26 1.49 2.15 -2.12 2.13 3.38 0.13 -0.13 2.02 -1.86 1.89 0.63 2.15 -2.15 2.26 
+1.52 2.28 -0.76 2.52 0.63 2.26 2.26 2.28 2.39 0.75 0.13 2 1.52 1.52 0.5 2.28 
+1.39 3.02 1.5 2.89 1.39 3.16 1.5 2.89 1.02 2.02 -2.52 -0.5 -2.02 -0.39 -1 -2.02 
+-2.91 -1 -2.62 0.26 -2.28 -0.76 -3.02 0.76 S
+2293.73 3194.49 1.76 3.64 -0.63 1.39 1.26 2.65 1.75 1.39 2.78 1.88 1.76 2 2.52 1.39 
+-0.76 1.65 -1.13 1.39 0.26 2.26 2.13 0.89 0.39 2.26 0.87 2.41 0.5 2.25 -2.5 1.52 
+-0.89 1.25 -0.13 2.26 -0.63 2.15 -2.25 0.38 -2.39 -1.39 -0.89 -2 -2.65 -1.02 -2.75 -0.76 
+-0.89 -1.89 -2.63 -2.12 -2.4 -1.52 -3.02 -0.5 -1.39 1 -2 -1 -1.02 -2.41 -0.24 -1.88 
+-2.78 -2.89 -2.13 -2.02 -2.78 -2.78 -3.64 -2.65 -3.15 -0.5 -3.38 0 -2.91 0.39 -2.52 0.63 
+-1.75 -2.41 -2.02 -2.25 -3.02 -2.52 -2.62 -2.02 -2.02 -3.15 -3.64 -0.63 -3.15 0.5 -1.65 -1.52 
+0.63 3.04 1.78 2.52 S
+2237.76 3195.75 1 2.65 1.75 2.63 1.39 3.27 3.02 1.65 2.26 1.63 2.02 2.15 4.66 2.25 
+0.38 2.91 -1.26 2.38 -1.13 2.41 1.39 3.88 0.11 2.65 0.39 2.14 1.99 2.91 1.15 3.28 S
+2256.88 3234.55 0.24 3.02 1.39 3.41 -1.62 1.37 -1.39 0.89 2.13 1 2.41 2.15 2.62 1.13 
+3.54 2.78 0.24 1.75 -0.87 1.39 2.52 1.89 3.25 1.39 3.78 1.39 2.78 0.5 2.88 0.5 
+3.41 0.13 2.89 0 1.39 -1 3.25 1.26 1.39 -1.52 1.65 -1.62 3.12 1.49 4.17 0.13 
+0.76 -3.02 3.64 -0.13 3.52 -0.13 3.28 1.39 4.91 -0.13 1.63 2.28 1.25 -2.02 -1.39 -1.39 
+-0.11 -2.78 3.25 -0.74 S
+2322.79 3251.3 3.64 -1.02 3.78 1.25 0.63 2.78 3.14 1.26 2.39 -1.02 3.91 1.65 -0.13 2.52 
+2.14 1.13 0.24 2.41 -0.63 1.89 -3.26 -1.15 -3.64 -1.5 -3.78 -1.39 -2.78 0.89 -2.64 -1.02 
+-1.5 0.89 3.38 3.02 3.28 0.89 2.78 0.87 3.02 2.52 -4.8 0.25 3.04 2.29 2.63 1.88 
+1.39 2.26 3.15 -1 3.14 1.89 2.15 1.63 2.63 1.89 3.41 1.78 2.25 -0.39 2.15 1.13 
+1.26 -1 0.24 -1.65 2.91 -0.11 2.88 -0.26 1.76 -0.26 1.13 1.65 0.76 2.64 -1.26 2.39 
+-2.88 0 -2.78 -0.89 -3.39 -1 -2.91 -0.63 -3.39 -0.62 -1.76 0.89 -3.54 -0.13 -3.77 0 
+-4.02 -2.64 -2.52 -3.28 S
+2336.63 3276.87 -3.02 0.37 -3.28 -1.63 -3.52 0.63 -0.13 0.63 -3.28 -0.26 2.15 2.28 3.77 1.13 
+2.52 -1.76 3.89 2.39 3.4 3.14 -3.4 0.5 -2.13 1.15 -3.02 -3.28 -2.15 0.63 -3.91 -0.63 
+-0.62 2.02 1.39 3.52 S
+2325.3 3287.7 2.28 2.52 2.63 3.15 4.17 2.52 -0.63 2.02 -0.52 2.15 -1.86 1.13 -2.28 -2.25 
+-2.75 0.24 1.76 2.14 2.26 2.02 -0.24 2.25 -0.13 2.54 1.88 2.25 1 2.02 2.15 -0.37 
+0 -1.78 3.26 1.13 2.91 2.28 1.5 2.52 2.64 2.28 3.15 2.26 3.51 1.52 1.89 2.65 
+-2.38 1.13 1.26 1.25 3.78 -0.26 -2.52 1.89 2.14 1.15 3.75 0.24 4.8 1.52 -2.91 1.39 S
+2361.79 3333.18 0.26 1.63 3.14 0 0.38 2.38 0.39 2.54 -0.5 1.5 2.5 1.02 1.26 1.5 
+-0.63 1.65 -2.26 0.87 3.77 1.52 3.64 0.75 3.65 1.13 3.02 1.89 2.64 0.63 3.28 0.63 
+2.25 1.39 1.89 1.52 3.28 0.76 2.75 1.37 4.28 1.02 2.9 1.25 2.52 1.26 3.78 -0.26 
+4.02 1.65 2.14 -0.5 4.02 0.63 1.26 2.52 3.28 1.26 2.13 2.39 2.65 1.13 1.65 2.28 
+-0.39 1.89 0.39 1.63 3.26 1.39 3.01 1.13 -0.5 1.91 -3.52 0.73 -4.41 0.26 -2.65 1.39 
+-3.89 0.5 -3.4 0.76 0.26 1.52 4.9 1.26 1.37 -1.39 2.64 0.63 2.78 1.63 2.89 1.65 
+2.38 2.13 -2.26 0.26 S
+2434 3391.75 -3.14 -0.37 0.37 1.37 -1.89 1.02 -5.27 -0.5 -4.04 -1.26 -3.75 -0.39 -1.78 -1.49 
+-2.52 -1.39 -0.5 1.5 -2.88 0.89 -0.76 1.89 4.14 1.52 1.52 2.12 3.91 0 2.13 1.52 
+-0.24 1.25 1.26 2.28 0.24 2.76 -3.91 0.63 S
+2416.88 3405.1 -2.63 1.39 -3.77 1.02 -3.15 0.73 -3.4 -0.87 -2.13 -2.28 -3.77 1.26 -0.13 1.26 
+-2.64 0.89 -1.89 -1.25 -5.77 -2.02 -4.54 0.5 0.13 -1.25 -2.89 -0.76 -2.02 -1.13 -2.02 1.65 
+-1.52 1.89 1.52 1.88 1.39 2.26 2.76 2.28 0.89 2.26 4.01 1.65 3.41 2.02 1.52 2 
+4.02 2.14 3.78 2.65 -1.52 0.5 -4.4 -2.52 -3.12 -2.13 -3.41 -1.65 S
+2385.57 3419.47 -2.02 -1.63 -3.64 -1.89 -3.39 -2.15 -3.02 -1.76 0 -1.65 -2.28 -1.89 -2.88 -2.52 
+-0.39 -1.89 -2 -2.64 -2.28 -2.39 -0.5 -1.78 0 -1.89 3.41 0.89 0.63 -1.26 -1.76 -1.75 
+-0.26 -2.02 1.39 -1.65 -0.52 -1.76 -1.87 -2.52 -2.41 -1.26 0.13 1.63 2.28 1.89 -2.41 1.64 
+-0.5 2.02 -2.52 -0.5 0.26 1.63 -3.14 -2.02 -1.13 -2.15 -0.63 -1.89 -2.78 -1.5 0.76 -2.02 
+3.41 -0.89 -3.54 -1.25 -2.52 -1.5 -3.39 -0.76 -4.79 -1.39 -4.28 -1.52 -3.02 -2.15 -2.88 -2 
+-4.04 -1.65 -2.76 -1.63 -0.26 -1.65 -3.25 0.26 -3.78 -1.65 -4.54 -1.26 -3.78 -1.25 -3.38 -1.63 
+-3.91 -0.5 -4.41 -1.39 S
+2297 3359 -3.9 -0.62 -4.78 -0.76 4.15 -0.39 4.27 0.39 3.14 -0.26 3.65 1.39 -1.26 -1.13 
+2.28 -0.76 -3.53 -0.5 -1.76 0.37 -3.77 -0.37 -2.63 0.24 0.37 -1.5 1.39 -0.76 -2.91 -0.76 
+-3.02 -0.89 3.02 2.02 -0.87 1.52 -3.52 -0.26 -0.76 -1.36 -2.52 0.11 S
+2284.05 3354.71 -2.91 -0.63 -2.39 -0.87 -3.02 -1.65 -3.78 -1.13 3.78 0 4.91 1.26 3.77 1.13 
+-2.26 -1.39 -1.26 -1.26 -1.88 0.13 -3.52 -0.87 -3.15 -1.15 -3.02 -1.76 -0.39 -1.89 -2.52 0.89 
+-2.13 -0.89 -0.39 1.76 -4.28 -1.5 -2.88 -1.89 -5.29 -2.15 -3.26 -2.52 -3.91 -1.15 -3.15 -1.63 
+-2.25 -0.26 -3.78 -2.88 -2.64 -2.65 -3.15 -2.91 S
+2229.32 3326.87 -3.38 -2.39 -3.41 -2.38 -2.75 -2.39 0.73 -1.65 -3.38 -0.87 -2.39 -1.78 -3.41 -2.02 
+-0.87 0.39 -3.41 -2.02 -2.89 0 1.26 0.63 -0.52 1.13 2.15 -0.76 2.78 2.64 1.13 2.41 
+3.25 3.38 -1.62 -0.12 -2.02 -1 -3.25 -1.62 -3.91 -1.78 -2.38 -1 -2.39 -0.89 -2.41 -3.14 
+1.26 2.78 -2.26 -0.63 -3.02 -1.25 -2.52 -0.13 -3.41 -1.13 -3.26 -0.76 -3.64 -0.63 -3.54 -0.39 
+-3.51 -1.63 -2.78 -1.75 -3.65 -2.02 -3.26 -1.02 -2.9 -0.24 -1.76 -0.76 -2.26 -2.15 -2.64 -2.02 
+-2.26 -1 -2.91 -1.64 -2.89 -2.52 -2.38 -2.64 -2.02 -0.62 -1.39 -2.52 1.78 0.76 -1.15 -1.76 
+-0.87 0.26 -3.15 -2.54 S
+2135.85 3283.66 2.25 2.64 -2.88 -1.75 -2.52 -2.26 -0.5 -1.52 -2.78 -1.52 -1.63 -0.5 -2.78 -3.41 
+-3.26 -3.14 -3.91 -4.27 -3.28 -1.89 -1.75 -4.17 -1.76 -3.41 -1.52 -3.02 -0.24 -1.52 -2.15 -1.89 
+-0.24 -1.5 -2.52 -3.78 -2.78 -2.91 -3.28 -3.02 -3.39 -3.91 -2.65 -2.64 -2.13 -2.78 -1.52 -1.13 S
+2088.67 3230.38 -1.75 -2.78 -2.52 -2.02 -0.63 -1.62 -3.52 -3.27 -1.15 -3.15 -2.52 -4.54 -1.99 -3.28 
+-1.89 -3.28 -2.52 -2.26 -1.52 0.74 0.5 3.14 -1.89 -4.14 -1.87 -2.52 -1.02 -2.52 -1.39 -3.41 
+0.13 -1.89 -1.76 -3.41 -1.26 -3.77 -2.64 -4.04 -2.75 -2.88 -2.02 -0.76 -0.99 -4.54 -1.52 -3.91 
+-1.89 -4.41 -1.39 -4.29 S
+2046.89 3161.59 -3.14 -5.54 3.04 0.39 1.89 4.02 2.38 4.79 -0.39 1.89 2.15 3.64 0.87 0.26 
+1.65 3.52 1.75 1.89 2.65 4.29 2.63 3.64 2.64 5.04 2.65 4.29 1.75 3.78 2.89 3.41 
+2.4 3.78 2.39 4.14 2.52 3.54 1.5 3.27 2.02 2.89 2.52 1.52 2.52 2.89 2.65 2.41 
+2 1.13 -1.63 -3.78 0.37 -1.26 -1.49 -2.64 -1.02 -2.65 -2.52 -2.14 -2.88 -3.65 -2.02 -2.02 
+-2.38 -3.64 -2.89 -3.66 -2.64 -5.04 -2.65 -4.9 -0.24 -3.15 -2.78 -2.64 -2 -5.04 -1.65 -2.91 
+0.13 -1.13 -1.62 -3.02 -1.89 -1.15 -1.39 -1.39 -0.99 -3.39 -0.76 -4.41 -2.64 -4.92 -1.39 -3.91 
+-1.13 -3.78 -2.14 -4.8 S
+2050.54 3145.46 -1.12 -3.52 -1.5 -4.41 -1.26 -3.4 -2.91 -4.91 -0.74 -3.04 -1.52 -2.02 -2.13 -0.74 
+-0.89 -2.41 -1.62 -0.11 -1.79 -4.67 -1.62 -5.03 -0.13 -4.17 -0.5 -4.28 -1.26 -4.17 0.26 -4.4 
+0.87 -2.91 0.5 -1 -0.5 -3.91 -0.5 -5.17 0.5 -3.14 0.5 -3.02 0.13 -3.67 0.89 -2.52 
+0.24 -3.64 0.26 -3.67 S
+2034.7 3061.57 1.13 -2.63 0.89 -3.41 1 -3.28 2.39 -0.39 2.28 -0.11 1.26 -1.88 0.87 -2.02 
+0.63 -2.64 0.26 -3.15 -0.13 -2.52 -0.12 -4.29 0.13 -3.64 0 -3.41 0.63 -3.4 1.13 -2.76 
+1.52 -1.65 0.76 -3.38 0.11 -2.54 1.39 -1.37 0.89 -3.27 1.25 -1.26 2 -1.89 1.26 1.13 S
+2056.21 3007.79 -0.11 -3.91 -1.15 1.13 0 -3.91 0.26 -3.28 0.37 -4.14 0.52 -3.54 0.63 -3.52 
+-1.02 -2.78 -1.26 -2.65 -0.5 -3.28 1 -1.62 0.26 -1.64 2.02 1.39 0.13 -3.02 1.37 -4.04 
+0.5 -3.14 -1.37 -3.28 1.75 -1.89 0.38 -2.41 1.25 0.39 1.76 -1.89 1.52 -2.52 0.38 -3.04 
+1.89 -1.26 -0.74 -4.14 1.75 -0.63 2.52 0.37 -1.02 3.41 0.26 2.52 2.02 0 1.76 0.76 
+1.89 2.13 1.26 -0.86 1.13 -2.78 0.24 -3.41 1.26 -0.87 -1.63 -1.52 0 -4.53 1 -3.91 
+0.63 -3.64 -1 -2.52 -0.76 -4.79 -0.87 -3.41 -0.39 -3.64 -1.37 -2.88 0.87 -3.17 -1.88 -1.99 
+-1.89 -3.41 -2.39 1.39 S
+2069.42 2908.4 -2.15 -2.65 -0.11 -3.14 -1.89 0.37 0.24 -3.28 -2.39 -0.5 -3.14 -0.76 -1.13 -4.54 S
+2332.23 3330.9 -1.62 -2.88 -1.26 -3.04 -2.91 -1.89 -0.5 2.02 -0.13 1.52 -3.12 1.13 -1.89 -3.02 
+1.89 -0.39 1.13 -1.89 -2.39 -0.37 -2.78 1.13 1.63 -3.41 3.78 1.26 -2.75 -3.02 2.39 -0.62 
+1.89 -0.76 0.87 2.65 2.15 2.78 0.89 -1.52 0.74 -1.62 2.14 2.02 -0.63 2.65 0.5 2.52 
+0.26 2.25 -0.26 2.52 S
+2289.46 3313.02 -3.39 -2.65 -0.76 -1.89 0.38 -1.76 -0.87 -1.39 1.99 0 0.52 -1.76 0.5 -1.65 
+3.14 -0.5 1.13 -1.65 -0.13 -2.26 1.89 1 -0.63 -2.64 1.63 2.41 0.52 1.76 -0.52 1.65 S
+2294.86 3301.7 -1.5 0.5 -1.89 0.87 -0.13 1.39 1.89 1.89 1.89 1.02 1.13 2.65 -2.02 -0.76 
+-2.75 -1.65 0.13 1.79 -2.14 -0.13 -1.26 1 1.26 2.78 S
+2267.32 3295.77 -1.13 -2.52 2.13 -0.26 0.63 -1.63 -0.5 -2.64 0.76 -1.78 1.39 1.78 0.24 1.5 
+2.02 1.79 0.37 1.25 -2.63 0.63 -1.39 0.87 -1.89 1.02 S
+2248.57 3269.42 1.63 -1.75 2.78 1.02 2.75 1 1.65 -1 3.39 2.52 -2.76 0.13 -2.28 0 
+-2.75 -1.78 -2.15 -0.13 -2.26 0 S
+2229.45 3250.67 -2.02 -1.91 -3.15 -2.26 -1.39 -2.28 -2 -1.12 0.37 -2.13 -3.14 -1.91 1.26 -0.87 
+-2.64 -1.13 -2.63 -1.26 -2.65 -1.39 1.5 -1.15 4.29 1.65 S
+2217.25 3234.92 2.26 2.52 3.52 3.15 3.02 2.38 3.04 2.54 3.02 2.26 0.24 1.89 -0.12 1.52 
+-2.76 -0.5 S
+2227.3 3255.45 -3.14 -2.52 1.78 -0.36 -1.52 -2.02 -1.63 0 -3.28 -1.52 -1.39 -2.52 S
+2218.12 3246.5 -2.39 -3.28 -2.15 -1.12 -1.87 -2.15 -2.14 -0.89 0.89 -1.89 2.5 2.15 1.39 1.76 
+2.02 1.88 2.78 0.89 0.24 1.64 -1.26 1 S
+2218.12 3246.5 3.64 2.26 1.76 0.13 2.15 1.02 1.89 2.89 -0.26 2.64 S
+2193.73 3205.82 0.63 -1.52 2.26 -0.86 -1.89 -3.04 2.26 -1.13 2.39 -1.13 3.41 -0.37 0.76 -1.52 
+-2.91 0.5 -1.89 -1.39 1.39 -1.5 -1.63 -3.04 1 -1.89 2.65 -1.26 1.76 -2.02 -1.39 -1 S
+2202.52 3184.66 0.76 -1.52 1.89 2.64 2.38 1.52 0.89 2.02 1.75 1.37 -1.13 2.15 1.26 2.52 
+2.26 2.91 -1.13 2.38 0.5 3.02 -2.26 -0.37 -2.28 0.89 -2.39 -0.39 -2 0.13 -1.65 1.26 
+-2.52 0.13 -2.65 0.37 -2.5 0.13 S
+2187.43 3184.79 3.02 -0.76 -2.64 -1.13 -1.89 -1.15 -3.52 -2.13 -2.39 -1.39 -2.14 -2.28 -3.02 -2.65 
+-2.15 -3.28 0.76 -1.25 1.52 -0.5 2.26 0.89 3.28 2.13 2.52 2.54 1.89 2.39 2.25 1.89 
+2.65 1.13 2.52 1.39 2.52 -1 3.25 1.26 0.76 -1.39 -0.13 -1.89 0 -2.15 -1.25 -2.26 
+-3.02 -2.65 -3.52 -0.89 -1.75 -1.52 2.52 0.39 1.75 -0.63 -2.14 -3.04 -2 -3.15 S
+2189.32 3161.71 2.63 -0.62 2.91 2.78 3.02 1.63 2.39 1.39 1.39 2.15 -1.02 -3.54 0.52 -3.52 
+2.26 0.76 2.02 4.04 1.49 3.64 -0.87 3.14 -0.76 2.26 -1.12 1.78 -0.76 2.25 -0.89 1.26 
+-1.37 -1.89 -1.52 2.28 -0.26 1.63 -1.12 1.02 -2.52 2.13 -0.37 0.76 -2.25 -0.5 -2.91 -0.89 
+-2.75 -0.87 S
+2202.15 3176.34 0.37 -2.52 0.13 -2.15 2.39 1.39 -1.5 1.13 -1.39 2.15 S
+2180.51 3158.57 0.13 -3.15 1.25 -1.62 1.5 -1.26 2.52 -0.52 2.02 -0.74 2.65 -0.65 2.52 -0.37 
+2.49 0.5 -1.49 1.78 -1.39 1.75 -1.89 -0.25 -0.5 1.64 -1.62 1.13 -2.28 -0.63 -2.63 0.63 
+-1.15 1.76 -2.13 0 S
+2195.59 3155.17 0.63 -1.63 2.28 -1.13 1.26 -1.52 0.87 -1.89 1.78 -1.13 2.26 -0.89 2.25 2.65 
+1.89 1.13 -2.02 0.75 -2 -0.37 -1.12 2.13 -1.39 0.89 -1.89 1.39 -2.02 0.76 -2.78 -1.15 S
+2014.2 2923.5 -1 -3.51 0.87 -2.91 -1.5 -1 1 -2.15 1.76 1.65 -0.37 3.91 -0.75 4.01 S
+2143.54 2593.34 1.36 -3.15 1.39 -2.28 2.02 -4.14 2.52 -0.62 -0.76 2.75 -2.02 2.02 -0.12 2.28 
+-1.63 2.02 -2.75 1.13 S
+2209.31 2529.08 -0.87 -0.63 -1.52 0.39 0.5 -1.52 -1.5 -0.12 2.02 -2.89 1.63 -0.89 1.39 1.25 
+1.13 -0.99 -1 -1.65 2.89 -2.75 -1.39 0.24 -3.15 2.78 1.13 -3.02 -1.89 0.87 -3.14 0.63 S
+2205.54 2520.77 -2.5 1.26 -4.3 1.52 -3.25 1.13 -3.28 1.13 1.89 -1.39 2.75 -1.13 1.88 -0.24 
+0.39 -1.64 2.76 -1.13 1.39 -1.52 1.89 0.39 2.38 -1.89 1.39 0.24 1.39 -1.39 4.14 -1.5 
+2.89 -0.63 0.52 1.13 2.26 -1.76 2.39 -0.75 1.52 0.75 3.26 -1.15 -2.63 2.28 2.39 0.37 
+1.26 1.65 2.52 0.24 0.99 0.63 -0.99 1.39 -2.15 -0.24 -2.25 0.76 -2.65 1.25 -3.28 1.13 
+-3.38 1.63 -2.28 1.78 -1.89 1.89 -3.64 2.12 S
+2230.95 2535.27 4.04 -2.15 0.76 1.52 1.49 -0.39 1.65 -1.39 1.89 0.63 0.11 1.39 2.02 1.02 
+-1.26 1.89 -2.75 0.76 -1.76 -1.02 -3.04 0.76 -2.52 -0.64 2.52 -1.75 S
+2234.09 2535.89 -0.11 -1.39 -3.04 0.76 S
+2323.54 2527.32 3.65 -1.12 3.27 -1.13 3.28 -2.02 -0.26 1.63 -2.26 1.13 -3.54 1.15 -4.14 0.36 S
+2152.45 2920.49 2.65 -1.13 1.5 1.13 0.75 3.14 -3.14 0.76 0.63 -0.89 -0.63 -2.52 -1.76 -0.5 S
+2124.16 2950.72 0.87 -2.52 -0.11 1.02 -0.75 1.5 S
+2101.89 3010.94 1.13 -1.02 0.24 -3.02 1.26 -1.62 1.78 0.11 1 -1.37 1.13 -1.02 0.39 2.65 
+-1.15 2.14 -1.5 1.89 -1.65 1.89 -2 0.13 -0.62 -0.76 S
+2097.09 3047.22 -0.24 -1.39 -0.76 -0.5 0.63 -1.02 1.39 -0.37 0.5 2.25 -0.26 1.65 -1.26 -0.63 S
+2091.82 3053.02 2.02 -2.02 1.75 1.5 1.76 -1.76 1.89 0.5 1.89 0.52 S
+2101.13 3051.75 1.26 -2.14 1.89 -2.39 -2.15 0.37 0.13 -2.52 1.39 -2.02 2.39 -2.15 0.36 -2.52 
+1.15 -1.76 1.13 -2.39 1.89 -1.02 0.11 -1.39 -1.13 -2.88 0.75 -3.41 2.65 -2.12 -0.39 -2.54 
+-2 -0.63 -1.65 -0.87 2.39 -1.76 2.15 -0.89 1.75 -1.39 1.52 -1.89 1.89 -1.26 1.63 0.13 
+2.14 -0.89 0.11 1.26 -0.86 0.76 -0.26 2.88 -1.63 1.91 -1.39 0.37 1.52 2.26 -1.26 1.65 
+-1.52 1.89 -0.76 3.4 -1 2.26 -0.63 2.65 -0.89 2.91 -1.13 2.39 -1.63 1.52 0 3.02 
+-0.89 2.15 -0.74 2.25 -1.65 1.52 -1 2.52 -1.52 1.5 -2.26 0.52 -1.75 1 -1.89 1.02 
+-2.39 0 -1.89 -0.52 S
+2095.09 3054.51 -1.15 -2.02 -2.13 0.52 S
+2116.34 3001.5 1.65 -3.8 1.13 0.63 1.89 -1.25 1.39 -1.63 1.76 -0.5 1.75 -1.78 0.37 -4.15 
+2.39 1.76 0.63 1.52 2.41 -0.12 -0.63 -1.52 2.13 -0.75 2.78 -0.37 1.99 -1.12 0.52 -2.91 
+2.38 1.78 -0.75 3.52 -2.89 3.02 2.26 0.52 -2.26 1.37 0.11 2.54 -2 1.89 -1.76 1.76 
+-2.52 1.63 -1.65 -0.11 -1.63 3.02 -2.15 1.52 -1.89 -0.63 1.78 -1.39 0.11 -2.64 -0.86 -2.15 
+0.5 -3.64 -2.26 -0.39 -1.89 1.25 -1.26 2.15 -1.65 1.76 -1.89 -0.73 S
+2144.4 2981.46 1.52 -1.39 1.88 -0.52 1.76 -0.87 1.5 0.87 -0.73 2.28 -2.41 1.39 -2.39 1.26 
+-1.13 -3.02 S
+2163.29 2959.16 -0.39 -2.26 1.26 1.26 S
+2164.15 2958.16 1.13 -0.52 -0.24 1.78 -0.89 -1.26 S
+2164.15 2958.16 -0.86 1 S
+2163.39 2949.09 0.89 -2.78 0 1.13 -0.89 1.65 S
+2124.02 3053.52 -0.89 -2.28 -1.63 -0.74 0.26 -3.91 -0.89 -3.67 1.75 1.39 0.26 2.78 1.13 2.02 
+0.89 3.64 -0.89 0.76 S
+2126.54 3015.34 1.89 -1.26 1.76 2.02 -1.39 -1.13 -0.87 1.37 -1.39 -1 S
+2127.04 3064.61 0.26 -2.02 1.99 -0.39 1.02 -0.74 -0.26 -1.64 -0.24 1.39 -3.04 1 0.26 2.41 S
+2132.21 3061.57 0 -3.64 -2.28 -2.39 1.89 2.78 0.39 3.25 S
+2130.19 3051.13 0.76 -3.8 -1.52 -2.76 S
+2130.95 3043.32 -0.39 -4.04 S
+2128.93 3036.37 -0.76 -6.16 S
+2129.82 3028.69 1 -2.88 -2.39 -1.26 S
+2132.83 3023.03 1.26 -1.63 S
+2133.07 3016.73 2.15 0.5 1.63 -3.02 S
+2110.68 3060.3 2.02 -0.87 S
+2168.18 3103.28 1.89 -0.13 1.76 1.26 S
+2196.86 3126.82 2.14 -1.25 2.02 -1.26 2.88 -0.37 -0.13 1.76 -2.13 0.39 -1.65 0.74 -1.89 1.15 
+-1.25 -1.15 S
+2261.66 3150.52 0.5 -2.52 -0.37 -1.78 0.76 -1.89 1.37 -1.75 1.52 -1.13 0.63 2.26 -0.63 1.76 
+-0.76 2.02 -1.39 1.78 -1.63 1.26 S
+2248.57 3134.77 -0.13 -1.89 0.63 -2.52 1.26 -2.91 1.39 1.65 2.39 0.24 -2.39 1.15 -1.62 1.13 
+-1.02 2.02 1.26 1.89 -1.76 -0.76 S
+2294.75 3240.08 1.25 -1.39 3.39 -0.5 0.37 0.24 -0.5 1.39 -1.76 0.89 S
+2297.5 3240.71 -2.75 -0.63 S
+2299.13 3233.66 -3.52 -1.76 -1.13 -1.78 3.02 0.63 2.52 1.26 -0.89 1.65 S
+2263.78 3211.87 1.26 -1.02 -3.12 -0.13 0.73 -1.26 1.89 0.26 -2.38 -1.65 3.64 1.65 1.02 1.52 
+-3.04 0.63 S
+2242.77 3203.8 -0.11 -2.02 0.11 -2.25 1.89 2.25 -0.11 1.39 -1.78 0.63 S
+2267.19 3131.25 -1.12 -2.41 2.75 -0.63 2.02 -2.02 2.26 -1.26 2.15 -1.39 1.63 -1.62 -1.13 -1.63 
+-2.39 -0.39 1.39 -1.52 3.38 1.64 1.52 -0.25 1.25 -1.39 -2.64 -2 2.52 0.37 -1.5 -2.15 
+1.86 -1 2.15 2.25 2.25 2.29 -1.75 0.5 2.52 2.02 -1.25 0.26 -2.52 -1.65 -0.24 1.39 
+1.76 1.39 4.02 1.25 -2.52 0.76 S
+2285.54 3124.07 0.39 2.13 3.02 1.25 -0.76 1.79 -2.02 1.13 -2.26 0.63 -0.37 2.78 2.13 0.5 
+-1 1.76 -3.41 -0.24 2.91 1.89 2.13 1 3.15 1.75 2.64 2.02 -1.39 0.89 -2.75 -0.13 
+-2.28 -1 -2.26 -1.65 -3.15 -1.63 -2.88 -2.41 -3.41 -1.63 -2.52 -1.52 0.5 -1 -2.63 -0.63 
+-2.14 -0.5 S
+2301.41 3251.41 0.87 -2.52 -3.02 -1.63 1.13 -1.52 3.15 -0.13 2.52 -0.11 0.63 -1.39 -0.87 -2.41 
+-1.26 -2.52 3.39 -0.37 0.63 2.52 2.15 2.26 1.39 2.4 1.26 3.02 1.76 3.02 3.02 1.89 
+-3.28 0.76 -2.76 -0.63 -3.78 -1.25 -3.64 -2.13 -3.28 0.74 S
+2333.86 3245.5 -2.63 -2.14 1.63 -1.65 2.15 -0.24 S
+2335 3241.47 2.63 1.13 1.52 1.75 -1.12 1.79 -4.17 -0.64 S
+2353 3274.71 -2.52 -2.12 -3.14 -2.14 -2.28 -2.28 -1.63 -3.02 0.63 -2.15 0.13 -3.39 1.13 -1.39 
+-1.63 -3.27 1.63 -0.76 3.78 0 -2.26 -2.02 -1.65 -3.78 -4.28 -1.52 3.02 -0.74 -2.25 -2.65 
+-0.76 -2.91 -2.64 -2.15 -2 -1.89 -2.64 0 -3.28 -0.24 -2.76 0.24 -1.89 -3.14 -3.14 0.5 
+-1.39 2.28 -0.5 3.02 -2.15 -0.76 -1.13 0.76 -2.78 -0.76 -1.87 -2.39 1.5 -2.64 2.26 -0.5 
+0.75 -2.15 -0.24 -2.52 0.24 -2.13 -0.37 -2.41 -2.39 -1.5 -0.63 -2.64 0.13 -1.89 0.5 -2.28 
+-0.76 -1.5 0 -2.54 0.63 -2.26 1.13 -2.02 2.15 1.65 S
+2317.64 3208.72 0.5 2.63 0.87 2.9 0.76 2.52 1.64 2.28 0.37 -2.78 -0.37 -2.78 -0.13 -3.02 
+2 -2.02 3.78 2.26 1.02 2.78 2.52 2.14 0.76 2.26 0.61 3.14 1.89 2.78 3.91 2.15 
+-0.37 -4.3 -2.39 -3.02 0 -3.02 3.14 1.5 2.63 -1 2.39 1.26 4.03 1.39 0.63 2.26 
+0.26 2.65 0.37 2.78 0.87 2.78 -1.87 2.13 0.63 3.28 2.89 1.78 2.38 -1.26 1 3.02 
+2.78 0.87 2.02 2.78 0.5 2.78 2.02 3.78 0.49 2.28 -0.89 2.25 3.02 1.39 1.76 1.39 
+-1.37 1.5 0.49 1.89 0 1.52 -2.88 0.63 -0.62 1.65 -2.52 0.5 3.39 0.76 2.64 1.89 
+3.02 0.63 1.39 1.26 S
+2369.59 3267.93 -1.02 1.26 -2.76 1.13 -3.15 0.63 -3.41 -0.89 -2.75 -0.73 -2.52 -1.39 S
+2354 3267.93 1.75 2.13 2.78 1.02 2.63 0.89 2.91 0.24 2.13 -0.12 2.28 -1.37 -0.26 1.75 
+-0.5 2.02 -2.02 0.87 -3.02 0.63 -2.88 0 -2.91 -0.11 -3.88 -1.15 S
+2369.73 3266.28 -2.28 -0.37 -2.75 -1.39 -0.13 -2.14 1.5 -0.87 0.26 -2.28 2.02 0.63 2.38 1.52 
+0.63 1.76 -0.5 1.76 -1.13 1.39 S
+2374.37 3288.08 -1.26 -1.78 -0.86 -2.13 3.52 0.64 2.38 1.25 0 1.39 -3.77 0.63 S
+2388.34 3289.34 -2.41 -0.26 -3.02 -1.62 0.63 -1.91 -1.63 -1.49 -2.78 -0.89 -2.88 -0.13 -3.39 -0.87 
+-1.15 -2.78 -0.11 -2.39 0.11 -2.02 S
+2371.72 3274.98 0.52 -2.15 2.63 -0.63 -1.13 -2.25 1.89 -1.78 2.89 0.25 2.52 0.89 1.02 2.38 
+-0.63 1.63 0.13 2.15 -2.15 1.76 0.37 2.41 1.65 2.02 1.39 -0.26 1.24 1.39 1.78 1 
+-0.13 1.75 1.89 1.79 0.75 2.02 S
+2408.72 3290.34 -1.89 -1.13 -2.78 -0.89 -2.38 0.13 -3.02 -0.63 -2.39 -1.63 0.13 -2.65 2.63 -0.63 
+3.28 -0.13 2.02 -0.75 2.52 0.49 0.5 1.52 3.02 0.13 1.52 1 0.37 1.76 2.02 1.02 
+3.15 0.86 -0.13 1.15 -3.02 -0.13 -2.38 0.76 -3.15 -0.26 S
+2419.16 3287.96 -3.52 -0.76 -2.02 -1.65 0.24 -1.99 1.26 -1.26 0.63 -2.02 1.52 -1.89 -2.38 0.74 
+-1.76 1.91 -1.78 0.63 S
+2411.35 3281.66 0.89 1.89 -3.91 -0.13 -0.87 -1.39 -3.02 -0.64 -2.52 -1.12 -1.02 1.13 -4.27 0.64 
+-1.26 -2.29 -1.13 2.15 -2.78 -0.5 -0.87 -1.25 -1 1 -2.28 1.02 -2.76 -0.62 -0.39 -2.02 
+0.13 -2.91 1.52 -0.87 -0.26 -1.65 1.52 -0.76 -1.89 -1.25 2.39 -1.63 3.14 -0.26 2.13 2.28 
+2.78 -0.76 2.02 1 1.5 -1.75 3.51 0.39 3.15 1.13 3.64 0.24 2.41 -1.37 3.64 0.11 
+2.88 0.13 3.28 -0.37 3.89 -0.25 1.52 0.63 2.52 -0.24 2.02 0 1.26 0.63 0 1.26 
+0.87 1.37 -0.37 1.65 0.26 1.76 -0.89 1.39 -1.13 0.89 -0.13 1.39 -1.63 1.89 -2.65 0.5 
+-2.02 1.13 -1.5 0.89 S
+2423.7 3286.07 -1.39 -0.26 -0.26 1.52 -2.89 0.63 S
+2408.46 3293.88 -1.25 -1.52 3.02 1.13 -1.76 0.39 S
+2405.08 3299.67 -1.52 -0.25 -1.63 -1.52 -1.89 0.76 -1.76 -0.76 -1.39 -2.02 -0.25 -1.26 -3.02 -0.87 
+1.13 -1.13 0.13 -1.65 0.13 -1.26 2.02 -0.13 1.76 0.5 2.63 2.15 -2.89 0 -2.76 0.25 
+0.5 1 2.39 0.5 2.75 0.13 2.52 1.26 0.26 1.39 1.52 1.13 0.37 1.26 -1 0.52 S
+2392.86 3290.61 -1.5 -1.89 -0.89 -2.15 1.63 -0.63 1.52 0.37 0.26 2.52 -1.02 1.79 S
+2394.38 3299.28 -3.41 -0.24 -1.13 -1.39 2.64 0.63 2.13 0.13 -0.24 0.86 S
+2386.7 3298.66 -3.02 -1 -2.39 -0.39 -3.02 -1.26 1.13 -1.62 S
+2379.41 3294.38 -4.04 -1.39 -0.37 -2.78 3.52 -0.24 2.91 0.63 2.63 0.24 2.15 1.78 0.5 1.89 
+-1.88 0.63 -2.76 0 2.76 1.26 2.02 1.13 -0.13 1.13 S
+2376.63 3298.03 -0.24 -1.39 2.52 0.89 -2.28 0.5 S
+2361.04 3294.62 -2.14 -1 -2.65 -0.89 -0.24 -1.49 -3.02 -1.89 -3.54 -1.89 2.28 -1.39 1 -1.89 
+4.04 0.5 3.88 1.26 1.26 2.14 3.14 -0.75 3.52 1.25 -1.37 1.26 0.73 1.76 -1 1.39 
+-2.25 0 -3.41 -1.63 0.63 2 -0.87 1.26 S
+2401.54 3306.86 -0.5 -1.64 -1.39 -0.89 -0.37 -1.25 1 -0.74 2.15 1.63 0.37 2.02 -1.26 0.89 S
+2400.29 3308.86 -1.89 -0.5 0 -0.76 2.28 -0.11 -0.39 1.37 S
+2398.16 3307.09 -2.39 -0.12 -1.39 -1.39 1 -1.76 3.02 -0.37 0.39 1.13 -0.5 1.13 -0.13 1.39 S
+2387.59 3315.17 -1.39 -1.02 1.52 -0.76 2.26 -0.74 -0.76 1.5 -1.62 1.02 S
+2395.64 3319.32 -3.28 -0.63 -0.62 -1.25 -1.63 -1.39 1.25 -1.5 1.76 -1.02 -2.26 -1.26 1.87 -1.76 
+2.65 0.13 1.02 -1.25 2.39 0.99 -1.26 1.13 1.26 1.65 -0.39 1.26 -0.87 1.5 -1.52 1.65 
+-0.36 1.76 S
+2384.18 3313.52 -1.76 -1.63 -1.75 -1.15 1.13 -1.37 -2.75 -1.02 -0.52 1.65 -1.89 -0.52 -1.26 -1.63 
+0.13 -1.39 1.39 -1.25 0.76 -1.39 -1.26 -2.52 0.13 -1.63 2.89 -0.13 2.65 -0.26 1.5 1.52 
+2.78 1.76 3.38 0.5 -1.13 1.02 S
+2388.58 3304.08 -1.89 0.87 -1.5 -1 -1.65 0.37 -2.52 -0.73 1.39 2.38 2.64 0.5 2.13 0.76 
+2.52 1.52 1.15 1.5 -1.78 1.02 -2.52 1.26 -2.39 1 S
+2361.29 3317.69 -2.64 -1.78 -2 0.63 -2.64 -1.37 -1.89 -2.64 -0.89 -2.15 -2.89 -2.15 -0.76 2.15 
+1.16 2.39 0.73 2.02 -4.41 -0.5 -2.76 -2.02 -1.12 -2.39 -5.04 -1.25 -0.5 -2.52 -0.26 -2.91 
+0.89 -2.52 0.5 -2.25 1.76 -1.52 -2.65 -1.88 -2.39 -2.39 0.63 -2.02 1.75 -1.52 2.65 1.26 
+0.37 -1.89 3.14 0.36 1.52 2.78 2.26 2.52 2.91 1.89 3.88 0.14 3.91 1.25 3.02 0.63 
+2.88 -0.87 2.41 -0.52 2.13 1.25 0.37 2.02 -3.02 1.02 S
+2364.3 3300.93 -3.26 0.63 3.02 2.26 -0.39 1.76 2.28 1.52 -1.65 1.89 4.16 0.5 0.74 1.52 
+-1.26 1.39 -0.23 1.76 -0.89 1.52 -1.88 0.13 -1 1.39 -2.65 0.5 S
+2370.72 3326 -4.14 -1.52 -4.66 -0.5 0.25 -2.14 -0.63 -1.76 2.39 -1.62 4.01 -1.02 1.02 -2.26 
+0.76 -1.88 1 -2.02 3.28 1.76 3.52 0.99 1.39 2.29 3.15 1.88 -0.26 2.02 0.5 2.38 
+-4.27 -0.13 -3.02 0.89 -2.25 1.39 -2.02 1.26 S
+2551 3424.37 -2.75 2.78 S
+2520.42 3438.24 -2.13 0.76 -2.39 0 2.52 -0.89 2 0.13 S
+2467.34 3444.16 -2.64 0.38 1.52 0.63 S
+2459.29 3444.66 -3.52 -0.5 2.65 -0.39 0.87 0.89 S
+2447.22 3442.41 -2.78 -0.63 S
+2444.45 3441.78 -0.63 -0.89 S
+2416.02 3435.72 -3.78 -2.15 -1.39 -0.87 0.63 -0.76 2.52 0.76 2.02 3.02 S
+2409.09 3432.31 -3.15 -1.26 -2.64 -1.26 0.89 -0.99 3.91 0.87 -0.89 1.02 1.89 1.63 S
+2446.83 3400.57 -0.5 1.25 -3.52 -0.86 -4.04 0.76 -3.27 -1.52 3.77 0.26 2.91 -0.52 4.64 0.63 S
+2423.57 3410.13 -3.02 0.26 -3.04 -0.26 -2.38 -1.13 0.63 -0.86 2.52 0.24 2.65 0.89 2.64 0.87 S
+2361.79 3402.08 -5.14 -0.12 -1.65 -1.89 0.13 -1.39 -2.39 -1.89 2.39 -0.24 2.39 0.63 -2.39 -2.28 
+2.64 0.26 1.39 2.13 1.13 2.02 1.5 2.78 S
+2271.33 3353.21 -4.02 -0.26 -2.91 -1.52 -3.88 -0.87 -3.78 -1.39 -4.78 -2.78 4.15 1.26 S
+2256.12 3347.66 2.76 1.65 1.78 -0.39 4.14 1.15 2.39 -0.89 1.63 1.89 2.52 2.15 S
+2236.87 3336.7 -4.66 -2.38 -3.13 -2.65 -3.04 -2.52 -1.5 0 -2.39 -2.28 -2.52 -1.89 -0.89 -1.75 
+-1.75 -0.37 -3.02 -3.04 -2.26 -2.38 0.24 -1.39 3.78 2.41 4.14 3.25 3.91 2.65 4.4 2.4 
+2.65 2.76 2.88 3.28 3.28 2.65 -0.13 1.26 S
+2401.54 3268.79 -1.25 -1.89 1.13 -1 -1.87 -1.13 -0.52 -2.02 -1.5 1.13 -2.15 0.36 -0.76 -1.36 
+-0.24 -1.89 -1.89 0 -0.75 -1.64 0.13 -2.39 2.26 -0.63 1.76 -1.52 1.39 -1.63 -0.37 -2.64 
+0.76 -1.89 -1.89 -1.26 -1.02 -2.02 -1.39 -2.52 -2.5 -1.89 -1.15 -2.28 -1.88 -1.76 S
+2387.83 3236.93 -3.26 -1.88 -1.52 -2.15 -2.88 -1.39 -0.63 -1.5 1.76 -1.28 2.39 0.65 -1.89 -2.91 
+0.89 -1.89 -1.76 -2.39 -1.02 2.76 -1.89 1.65 -6.29 -4.04 0 -2.78 3.02 -0.87 3.54 0.87 
+-1.89 -3.01 -3.64 -2.89 -2.65 1.75 -3.02 -0.89 -3.28 -2.02 -2.76 -2.39 -1.89 -2.39 -2.28 -2.15 
+-0.24 -3.41 -1.76 -3.15 -2.52 -2.52 -0.13 -2.26 -1.52 -2.02 -1.26 -4.54 -0.87 -1.78 -1.02 -3.39 
+-0.87 -3.03 0 -4.02 2.76 -2.02 1.52 -1.89 -0.13 -2.65 1.89 -3.14 2.25 0 2.78 2.02 
+1.89 2.26 2.39 2.15 2.89 1.89 1.25 3.64 3.28 0.63 3.52 1.65 2.28 2.02 1.75 2.38 
+1.13 3.65 S
+2378.14 3188.3 1.76 -1.39 2.15 1.78 3.14 -0.39 3.26 -1.26 3.9 0.37 3.02 0.89 2.78 1.02 
+2.25 1.63 2.15 1.63 3.02 1.39 2.39 0.63 2.76 -0.87 3.28 0.5 3.01 0 3.28 0.5 
+2.65 0.63 2.76 1.13 2.91 1.15 2.13 1.26 -2.38 1 -2.02 1.89 -3.02 -0.5 0.63 1.26 
+2.64 0.63 0.76 2.52 2.26 0.26 -0.37 -1.65 -0.39 -2.25 S
+2428.84 3202.04 1.39 -1.13 2.65 -0.26 1.26 2.52 0.73 2.02 -0.62 2.38 -1.24 2.15 -0.89 2.02 
+1.76 -1.52 2.02 -1.63 1.13 1.5 0.63 2.52 -1.52 1.02 1.89 0.63 1.39 0.64 2.28 -0.26 
+0.63 1.78 -1.65 1.26 4.28 0.5 1.52 1.88 -2.02 0.37 S
+2444.45 3220.42 2.02 2.41 1 2.39 0.13 2.52 -2.02 1 1.02 1.78 2 0.87 2.28 -1.37 
+1 1.5 0 2.52 -0.37 1.89 1.62 2.28 0.38 2.02 1.78 1.13 1.26 1.89 1.89 1.89 
+2.26 1.89 2.02 1.26 3.52 2.41 -1 1.89 -2.78 1 -2.25 -1.13 -1.02 0.75 -1.63 -1.02 
+-2.25 -0.63 -2.64 -0.13 2.25 1.78 2.15 0.74 0.99 0.63 0.39 1.39 -1.89 0.13 -0.64 -1.26 
+-1.64 0.13 1.02 1.76 -3.67 1.26 1.78 0.26 2.13 -0.76 3.02 -0.37 2.39 0.74 -0.74 1.65 
+-1.39 1 0 1.39 -0.89 1.89 -2.62 1.13 -2.52 1.52 -3.02 0 -3.67 0.76 -3.25 -0.5 
+-2.39 -1.13 -1.65 1.5 S
+2438.78 3267.04 -2.88 -1.26 -0.13 2.64 -3.91 1.63 -3.25 0.39 -1.52 -1.39 -1.89 -0.5 -0.76 1.39 
+-2.12 0 -3.15 0.11 -3.28 -0.63 1.39 -1.75 -1.63 -1.26 -3.91 -0.76 -2.78 1.79 -2.52 0.63 
+-2 1.26 -2.91 -0.52 S
+2417.01 3176.97 1.65 -0.76 2.26 0.24 1.39 -1.13 -2.52 -1.26 -3.51 -1 3.51 -0.89 0.5 -2.78 
+-2.78 -1.75 4.54 -1 2.14 -1.78 3.02 -1.37 3.28 1.13 2.52 0 2.89 1.39 3.78 0.87 
+2.76 2.28 0.75 3.02 -2.25 1.65 0.63 3.02 -2.38 -0.13 -1.02 1.52 -1.89 -1.52 -2.02 -0.5 
+-1.37 1.13 -2.52 0 -1.52 -1.13 -0.87 1.52 -1.15 -2.41 -2.89 -0.37 0.89 3.02 -1.13 2.02 S
+2423.7 3179.99 -1.65 0.89 -0.5 -1.26 -1.52 0.37 -0.87 -1.63 -2.15 -1.39 S
+2459.29 3198.27 2.25 1.63 S
+2447.85 3223.57 -0.76 -2 1.5 0 -0.74 2 S
+2531.25 2807.36 -0.5 -2.75 -2.78 -2.02 1.39 -2.65 1 -2.78 2.02 -2.26 1.89 -2.78 2.89 -1.65 
+1.88 -1.89 2.02 -1.62 1.88 -1.76 1.39 -2.28 2.02 -2.25 1.37 -2.29 0.13 -2.25 0.89 -1.39 
+0.5 -2.28 1.39 -1.75 1.5 -2.65 0.39 -2.78 1.5 -2.25 0.89 -2.78 -2.39 -2.89 1 -1.25 
+0.89 -2.78 1.37 -2.15 1.39 -1.75 0.5 -3.15 -0.62 -3.28 -0.87 -2.38 -1.52 -2.28 -2.39 -1.5 
+-1.89 -2.41 -1.13 -3.28 -0.99 -3.14 -1.02 -2.78 -0.5 -2.75 -1.52 -2.78 S
+2545.21 2719.68 -0.11 -2.65 -0.5 -2.78 -0.13 -2.25 0.37 -2.64 1.39 -3.02 1.76 -1.79 1.39 -2.12 
+1.26 -2.65 1.76 -2.65 0.89 -3.02 1.63 -2.28 0.87 -2.14 2.15 -2.13 0.89 -2.15 -0.63 -2.26 
+0.24 -3.17 -0.13 -2.62 0.26 -2.15 1.13 -3.02 -0.13 -2.64 0.39 -2.28 0.63 -2.52 0.63 -3.02 
+0.24 -2.64 1.76 -1.65 1.15 -2.13 2.52 -1.65 1.5 -2.13 0.63 -3.04 1.13 -2.12 0.5 -3.04 
+1.15 -2.13 1.5 -2.02 1.39 -3.04 0 -2.89 -1.39 -1.39 -1.39 0 1.78 -3.02 0.63 -2.02 
+-0.26 -2.28 1.76 1.02 2.02 -1.75 1.75 -1.52 3.15 0 1.89 1.39 3.02 0.5 3.41 0.13 
+2 1.39 3.02 0.63 S
+2596.03 2626.34 3.04 -0.39 2.26 1.02 2.78 -0.76 2.5 -0.39 1.88 1.39 3.54 0.13 1.5 1.39 
+3.02 0.13 2.64 0.64 2.39 1.88 3.41 1.89 2.39 1.39 2.02 1.89 S
+2629.38 2636.54 2.63 2.26 2.02 1.89 2.52 2.02 2.65 2.28 1.75 2.38 1.76 2.78 2.14 2.39 
+1.76 2.28 2.88 2 2.39 1.52 1.39 2.78 1.39 3.28 1.39 2.88 0.37 2.28 0.37 1.76 
+-1.76 0.89 2.39 3.28 2.78 1.13 1.89 1.13 3.77 1.63 2.76 1.29 2.02 1.5 1.75 2.91 
+-0.11 2.75 0.87 2.41 0.37 3.28 -0.61 2.26 -0.39 3.65 -0.5 3.17 -1.52 1.75 0.76 2.78 
+2.39 2.13 2.02 1.65 2.02 2.52 2.39 1.26 S
+2680.08 2714.65 2.52 3.14 2.02 2.52 2 2.65 2.78 1.25 2.39 1.26 3.64 1 1.89 2.14 
+2.88 2.78 1.89 2.15 2.02 2.63 1.65 2.64 0.63 3.04 -0.76 3.28 0.24 2.89 -0.74 3.27 
+0.63 3.41 0.11 2.52 -0.24 2.78 0.5 3.02 0.13 2.88 -1.75 1.65 -1.89 1.26 -0.76 2.78 
+-1.26 3.14 -0.49 3.91 0 3.39 1.37 3.16 -4.52 5.04 0.87 3.15 0.89 3.02 1.26 3.27 
+1.26 2.65 1.76 3.78 1.63 3.77 -0.11 3.41 2.25 0 2.02 2.9 2.13 2.39 1.26 3.14 
+1.64 2.39 1.63 3.28 2.39 3.14 1.26 2.78 2.02 2.39 2.02 2.02 2 3.04 2.02 2.52 
+2.52 1.63 S
+2729.64 2844.9 2.02 2.39 1.89 2.52 1.5 3.04 1.88 3.02 1.52 2.39 1.75 3.17 1 2.75 
+0.89 3.41 1.39 2.52 1.89 2.65 0.24 3.64 0.5 2.78 0.76 3.4 0.89 2.89 0.37 3.28 S
+2748.13 2888.74 0.89 2.38 0.74 2.91 1.15 3.52 -0.76 3.53 0.76 2.91 -0.26 3.64 -0.62 4.66 
+-3.02 0.11 -1.52 -3.14 -2.63 -2.02 -2.65 -1.76 -2.64 -0.37 -2.26 -1.76 -2.88 -0.75 -2.52 -2.91 
+-2.41 -1.13 -3.02 -0.37 -2.25 -2.15 -2.39 -1.76 -2.64 -0.13 -1.89 1 -2.13 2.02 -2.02 1.52 
+-2.02 1.13 2.25 2.14 -1.37 2.65 -2.52 1.89 -2.65 1.89 -2.15 2.02 -3.02 1.75 -2.62 2.39 
+-2.65 0.39 -3.28 0.74 S
+2691.14 2915.69 -1.89 2.54 -1.75 0.11 -1.75 2.15 -0.89 2.78 -1.26 3.27 -1.76 2.65 -1.75 2.13 
+-3.02 1.75 -2.78 0.89 -2 3.02 -0.89 2.41 -1.26 3.28 -0.26 2.88 -0.37 2.02 -2.15 2.02 
+-0.86 3.28 -1.89 0.63 -2.25 0.86 -2.02 1.02 -1.88 2.64 -0.89 1.76 -0.13 2.52 -2.13 1.52 
+-1.89 2.65 -1.76 2.02 -1.89 2.65 -1.39 2.13 -2.25 2.52 -1.02 2.28 -1.63 1.63 -0.99 2.28 
+-2.15 1.49 -2.12 2.02 -1.78 2.02 -1 2.39 -1.76 2.02 0.87 1.26 1.39 -2.26 1.89 -2.52 
+1.63 -1.65 1.39 -1.63 2.02 -1.65 2.39 -1.37 1.02 1.26 -0.63 2.39 0.24 3.64 0.5 3.66 
+0.89 -2.91 0 -3.02 S
+2647.25 2987.13 0 -3.04 2.25 0.63 2.28 -2 1.76 -2.02 2.38 -2.52 2.26 -2.4 2.14 -1.5 
+2.26 -2.52 1.64 -2.65 1.87 -2.52 2.78 -0.89 2.52 -1.39 2.26 -2.39 2.02 -2.52 1 -2.91 
+0.13 -2.02 1.02 -2.26 S
+2677.82 2952.23 1.26 -3.28 2.13 -1.52 1.26 -1.62 3.41 -0.13 2.63 -1.89 1.89 -2.52 1.88 -2.65 
+1.89 -2.52 1.89 -2.15 1.89 -1 2.39 -2.52 1.88 -2.54 0.89 -2.38 0.13 -2.52 1 -2.78 
+1.63 -3.28 1.52 -3.25 1.13 -1.15 0.14 -3.15 2.25 -2.52 2.28 0.13 2.39 1.13 2.38 1.25 
+2.26 1.65 0.89 2.39 2.02 0.5 2.5 0.26 2.41 1.25 1.37 2.02 1.52 2.64 2.52 0.74 S
+2733.42 2920.86 2.12 1.78 1.15 3.02 2 2.26 2.52 1.91 2.15 1.76 2.13 1.88 2.14 1.89 
+2.13 1.76 -0.5 2.02 0.26 2.28 1.89 2.39 2.02 1.89 1.89 2.25 2.13 1.39 2.02 0.26 
+1.5 2.25 -0.11 3.41 1.99 1.89 1.65 1.26 0.87 1.39 -0.24 3.41 0.99 2.02 1.63 1.39 
+1.52 1.76 -1.52 2.14 -0.74 3.15 0.24 3.02 1.76 0.89 0.26 2.88 0.37 2.52 0.76 2.14 
+0 3.52 -0.13 3.41 -2.25 0.76 -2.39 1.63 -2.02 2.02 -2.88 -0.11 -2.28 -0.65 -2.63 0.52 
+-2.65 1.13 -2.64 1.63 -1.37 3.41 -1.15 2.91 -0.37 1.63 -1.25 0 0.13 -2.25 -1.12 -2.28 
+-0.63 -2.52 -0.63 -2.65 S
+2744.12 2997.2 -1.39 -2.88 -0.12 -2.78 -1.63 -1.39 -2.78 -0.5 -2.13 -0.89 -0.89 -2.02 -2.76 -0.63 
+-1.26 1.15 -1.78 -0.63 0.39 3.38 -0.76 3.04 -1.39 2.76 -1.89 1.52 -0.87 -0.89 0.63 -2.64 
+-0.63 -2.89 -1.26 1.13 -2.28 1.89 -0.62 2.52 S
+2720.71 2996.44 -1.63 2.15 -2.39 1.13 -2.78 1.79 -2.75 1.62 -1.89 2.02 -2.25 2.38 -1.79 2.65 
+-2.12 0.26 2.12 1.89 -1.99 2.02 2.13 0.74 0.26 3.41 1.89 -0.87 1.99 -0.89 1.39 1.75 
+2.15 -1.39 2.76 -2.76 2.91 -2.15 1.89 -2.52 2 -2.02 3.28 0.26 2.25 -0.63 2.78 -1.64 
+2.26 0.37 2.14 -1.26 1.89 1.39 2.39 -0.63 1.76 2.52 1.39 1.79 S
+2742.73 3009.81 1.63 1.88 2.15 1 2.13 -1.26 1.39 -2.26 1.89 -2.52 3.02 0.74 2.52 0.76 
+2.88 0.26 2.28 0.5 2.02 1 2.49 0.76 1.89 0.39 2.91 0.87 2.13 1.89 1.76 1.52 
+2.28 1.26 0.76 1.76 2.13 -0.11 1.89 0.5 3.02 3.02 1.65 1.76 2.13 0.63 1.89 -1.37 
+2.02 -0.63 1.89 -2.14 1.49 -2.29 2.28 0.26 2.26 -0.5 2.52 -1.78 2.78 -0.74 2.25 1.5 
+1.63 2.41 0.89 -3.41 -1.39 -2.28 -2.26 -1.37 2.26 -2.41 2.25 -1.13 2.65 -1.63 2.65 -0.26 
+2.25 1.52 1.39 2.25 0.63 3.02 -1.26 3.8 -0.63 2.88 1.13 0.26 1.13 -3.28 1.52 -2.4 
+2.02 -1.89 S
+2825.89 3012.57 1.36 -3.78 1.02 -3.28 2.02 -2.64 1.26 -1 0.24 -2.52 2.14 -3.28 2.13 -3.15 
+1.65 -2.91 1.76 -3.38 1.63 -2.28 2.15 -2.52 2.52 -2.28 2.52 -2.38 1.5 -3.02 3.52 -5.55 
+1.89 -3.26 1.89 -2.15 2.28 -1.89 1.88 -2.02 1.63 -2.78 S
+2862.87 2956.51 1.76 -2.89 1.75 -3.53 1.89 -3.41 2.02 -1.89 2.02 -1.39 2.02 -0.11 1.25 2.76 
+-0.52 4.43 1.15 2.63 1.5 1.64 -1 3.41 0.24 4.14 1.88 1.39 -1.26 3.78 -1.26 2.64 
+-1.12 3.28 0 3.54 -0.24 3.91 -1.15 4.01 -1.62 3.67 -1.89 3.51 -1.75 3.54 -0.76 3.02 
+-0.24 3.28 2.25 1.13 -0.5 3.28 0.87 1.39 S
+2870.16 3007.66 1.52 2.02 0.24 2.39 -1 2.91 0.37 1.89 0.63 2.76 -0.11 3.67 0.37 2.65 
+0.89 2.25 0.24 3.41 -0.24 3.77 -0.26 2.78 0.13 3.52 1 1.89 1.02 2.64 -0.39 3.67 
+-0.76 3.38 -1.37 1.78 -0.76 2.63 0.88 2.64 0.63 2.52 -0.74 2.54 2.52 -3.04 0.87 1.89 
+1.13 2.28 1.02 2.14 1.13 2.26 -0.5 3.14 0 6.56 2.52 -1.39 2 -2.02 1.89 -2.26 
+2.02 -2.14 2.39 -1.39 2.78 -1.13 1.89 -1.25 0.87 1.25 2.15 -1.88 0.5 -2.15 2.26 -1.89 
+0.89 1.26 2.26 -2.65 2.65 -3.14 2.25 -3.52 1.65 -4.54 1.25 -3.9 2.26 0.13 1.13 0.63 
+1.13 1.5 S
+2915.32 3050.11 -0.24 3.41 0.24 3.28 0.39 3.51 -0.89 2.91 1.52 0.13 2.39 -1.65 2.26 -2.76 
+2.02 -3.04 2.26 -3.64 2.15 -2.9 2.52 -3.39 2.75 -2.91 2.52 -3.41 1.15 -5.04 2.39 -2.64 
+1.26 -3.02 0.37 -3.41 1.52 -3.65 1.76 -4.27 1 -5.16 1.39 -3.67 1.76 -2.52 0.25 2.15 S
+2948.04 3008.42 2.26 -1.65 2.38 -2.52 1.89 -1.39 1.89 -1.26 1.13 -1.5 1.13 -2.15 1.02 -3.15 
+1.75 -4.3 1.63 -1.62 0.89 -4.28 2.26 -2.64 2.14 -1.89 1.39 -3.67 2.26 -1 1.75 -1.52 
+2.02 -0.24 1.76 -0.52 1.52 -0.87 2.26 2.64 -1.76 4.14 -2.28 3.54 -1.76 1.63 -3.77 12.11 S
+2971.81 2996.33 -1.26 3.88 -2.26 2.78 -2.02 1.02 -2.13 1 -2.02 1.13 -2.15 1.89 -1.89 -1.49 
+-1.63 0.75 -2.02 3.78 -2 3.15 -1.88 1.26 -2.15 4.67 -1.26 -2.52 -1.89 3.14 -1.75 4.28 
+-1.39 4.8 -0.37 3.38 -1.26 4.3 -0.89 3.52 -2.25 4.79 -1.76 4.41 0.37 2.91 1.88 0.74 
+2.02 -4.14 1.49 1.39 1.02 1.63 2.52 -1.39 1.37 0.13 1.65 -1.52 1.89 -2.39 2.02 -2.02 
+2.26 -0.76 1.26 2.28 1.75 -1.39 1.76 0.75 1.25 -4.53 1.76 -3.78 1.76 -2.4 -0.11 4.16 
+-0.13 4.27 0.76 2.78 -0.62 4.54 -2.15 4.4 1.26 2.52 0 3.67 -0.13 3.64 -0.11 3.78 
+0 4.03 -1.02 3.28 S
+2961.37 3076.82 -1.62 3.15 -2.52 5.16 -1.76 3.15 -2.02 3.64 -2.25 3.16 -2.41 2.89 -2.76 3.28 
+-2.52 1.13 -2.39 1.39 -2.14 0.5 -2.62 0.63 -2.41 1.25 -2.52 1.15 -1.63 1.76 -2.12 0.5 
+-3.14 2.38 -2.02 3.9 -1.65 3.54 -0.74 4.28 -1.65 3.77 -0.99 3.91 -0.63 3.91 -0.63 3.41 
+-0.26 3.28 0.63 2.26 S
+2916.58 3144.21 1.65 0.39 0.38 1.5 2.02 -3.02 1.39 -1.26 2.26 -1.88 0.37 1.52 -0.63 2.26 
+-2.38 1.52 -1.5 2.88 -0.39 3.41 0.13 3.28 -0.87 3.91 0 2.89 -0.63 3.41 -2.65 3.54 
+2.13 0 -2.63 3.9 2.52 -0.12 -2.14 4.14 0.13 2.4 -0.26 3.02 -0.24 3.02 -1.39 3.91 S
+2913.82 3188.8 -1.89 4.54 -1.39 3.66 -2.02 4.02 -1.49 3.16 -1.89 1.89 -0.13 2.52 -2.52 3.14 
+-1.63 3.15 -2.14 3.14 -2.65 3.54 -2.13 2.13 -2.52 1.88 0.37 1.26 -2.25 3.41 -2.88 3.41 
+-2.65 3.41 -2.39 2.88 -0.26 1.76 -1.76 2.02 -1.52 0.89 -3.39 3.28 -0.26 1.26 -3.77 3.14 
+-1.76 1.52 0 -1.78 -0.73 -0.87 0.99 -3.28 -0.76 -0.89 -0.99 2.91 -1.89 2.39 -1.39 2.39 
+-1 2.41 -2.02 1 -2.15 -1 -0.63 2.89 -2.52 1.02 -1.63 -0.63 -0.76 -0.89 -2.62 1.26 
+-2.52 0.99 -2.52 0.89 -3.14 1.13 -1.02 -1.63 -1 -1.76 -3.02 2.89 -2.39 2.38 -2.78 3.67 
+-2.25 3.14 -2.91 2.25 S
+2827.25 3274.71 -1.99 3.67 -2.28 3.15 0.63 0.86 -3.64 2.91 0.13 -2.02 0.63 -2.15 0 -1.63 
+-1.26 -0.63 1.76 -2.91 2.02 -2.25 2.02 -2.02 0.37 -1.89 -1.13 -0.89 -2.78 1.02 -1.13 -1.26 
+-1.26 -0.89 -1.88 -0.26 -2.26 1.65 -2.52 2.52 0.76 1.26 -1.26 2.78 -1.88 1.89 -2.39 1.75 
+-2.28 3.02 -1.76 2.65 -3.25 3.03 -2.91 2.76 S
+2797.7 3290.84 -0.37 2.52 2.26 0.26 3.41 -2.65 2.25 -2.65 1.89 -1.5 1.76 0.5 3.51 -3.67 
+-1.12 2.14 -2.39 3.02 -2.76 2.54 -2.02 3.02 -2.02 2.65 -1.5 2.76 0.11 2.15 -0.24 1.52 
+0.5 1.13 3.91 -2.64 3.14 -1.89 3.26 -2.52 1.76 1.39 -2 3.77 S
+2811.04 3302.69 1.26 1.26 2.52 -0.5 1.63 -2.91 3.38 -0.37 3.41 -0.63 3.77 -3.4 3.39 -1.76 
+2.91 -0.5 -3.54 4.15 -2.26 3.27 -2.25 4.04 -3.15 3.64 -3.4 2.52 -3.02 1.65 -3.52 1.5 
+-3.14 1.02 -3.02 0.63 -2.15 -0.5 -1.49 -0.63 -2.28 0 -1.26 -1.02 -0.63 -1.5 -2.63 1.5 
+-1.25 0 -1.76 2.39 -2.02 2.28 -2.91 2.78 -3.51 3.02 -2.13 2.14 -3.54 1 -1.39 0.14 
+-4.77 3.14 -2.65 2.9 -2.63 1.26 -1.02 1.37 -3.64 2.15 -2.39 1.39 -1.63 2.38 2.13 -0.49 
+-0.5 2.64 -3.02 3.02 -4.14 2.91 -3.78 3.02 -4.91 2.64 -3.41 1 -4.91 3.04 -5.27 2.64 
+-4.8 2.52 -4.14 1.76 S
+2721.59 3367.19 -3.78 1.39 -4.64 1.13 -4.41 1.89 -5.03 1.76 -5.54 2.28 -3.64 0.5 -3.28 0.5 
+-3.52 -0.11 -2.78 -0.39 -3.41 0 -3.39 0.63 -3.64 0.76 -2.89 0.5 -0.63 -0.87 -2.52 -0.26 
+-3.28 0.36 0.37 -1.75 0.13 -1.5 -1.13 -0.52 1 -1.89 2.14 -1.89 4.91 -1.39 3.78 -2.52 
+-3.02 0.75 -2.65 -0.13 2.26 -1.62 3.77 -1.02 -2.52 -0.11 -2.63 -0.26 S
+2671.66 3363.41 2.63 -2.02 0.89 -1.89 -1.39 -0.36 -3.64 1.99 -4.41 1.65 -3.91 1.63 -4.41 1.39 
+-4.77 1.13 -3.39 1.02 -3.91 1.26 -3.14 1.13 -2.89 0.39 -3.28 0.63 -3.4 1.13 -2.76 0.24 
+-3.41 1.15 -3.52 2.02 -3.02 2.13 -2.89 1.89 S
+2617.05 3379.91 -0.26 0.89 -3.14 0.76 -2.12 2.13 -2.91 1.39 -1.89 1.39 -1.12 -0.13 -1.5 -0.37 
+-2.02 0.75 -1.52 1.5 -1.89 1.39 -2.13 0.76 -0.13 1.13 3.28 -0.5 0.24 1.13 -2.38 1.15 
+-4.15 1.26 -2.28 0.36 -2.12 1.26 -4.78 1.76 0.24 -1.13 2.15 -1.39 -3.28 -0.76 -3.52 -0.24 
+-4.03 0.24 -3.78 -0.37 -3.64 -0.26 -4.14 0.76 -3.65 1.02 -1.89 1.26 -3.54 0.5 3.77 1.13 
+0.76 1.15 0.13 1.37 -4.28 0 -3.52 -0.24 -3.28 -0.5 -2.78 0.5 -1.13 -1.39 -2.38 -1.02 
+-4.78 0.52 -0.75 0.87 3.14 0.26 1.89 1.52 2.26 1.63 1.89 0.89 3.78 -0.39 3.64 -0.13 
+2.38 0.76 4.04 0.39 S
+2559.94 3404.86 4.77 0.11 3.02 0.65 4.28 0.24 4.67 0 4.01 -0.5 2.78 -1.02 0.5 1.15 
+3.15 0.5 3.39 -0.76 6.29 1.52 2.91 1.13 1.37 1.13 1.39 1.52 1.02 1.25 1.75 1.63 
+2.13 1.39 0.89 2.02 1.76 1.26 1.76 0.89 0.63 1 -4.77 0.76 -4.77 0.39 -4.8 -0.39 
+-3.14 -1 -4.28 0.24 -3.64 1.39 -1.12 -1.26 -2.26 -1.13 -3.66 0 -4.14 0.76 S
+2575.79 3419.73 -2.13 1 -2.78 0 0.5 -1.76 -1.26 -1.65 -2.88 -0.63 -2.89 0.26 -1.15 1.26 
+-2.39 0.13 -0.74 -1.76 1.37 -1.02 -1.26 -1.26 -3.52 -0.63 1.76 -1.52 2.78 -0.11 -0.63 -1.39 
+-3.02 -0.76 -3.77 -0.5 S
+2553.78 3409.39 -2.28 -1.02 -1.89 -1.13 -3.89 0.37 -1.88 1.15 -3.28 -0.52 -3.91 0.26 1.39 1.89 
+-3.78 -0.76 -3.28 -0.24 -3.52 0 -3.64 1 -2.26 1.26 -1.52 1.52 -2.38 -1.52 -3.91 -0.37 
+-3.89 -0.76 -3.53 -0.89 -3.39 -0.87 -3.14 0 -3.28 -1.02 -3.91 -0.37 -3.02 -0.76 -4.64 0.13 
+-3.28 1 -2.64 -1.5 1.52 -1.28 1.5 -1.89 0.89 -1.89 0.89 -1.26 3.02 -0.11 -0.26 -1.65 
+-4.14 0.5 -3.28 -0.87 -1.52 -0.52 S
+2477.65 3397.29 -1.13 -0.5 -1.37 -1.89 2.26 -1.26 -3.02 -1.39 -0.63 1.65 -1.26 1.63 -2.91 0.13 
+-2.25 -0.63 -3.52 0.37 -0.89 1.65 -2.88 0.75 -4.15 0.88 -3.77 0.26 -0.39 -1.65 S
+2451.73 3397.29 -1.62 -1.5 0.63 -1.78 -3.64 -0.5 -1.26 -1.5 -2.02 -1.26 3.91 -1.15 3.25 -1.26 
+4.92 0 4.28 0.39 1.89 -1.52 2.75 -1.12 3.52 -1.13 3.91 -0.89 2.78 -1.26 2.63 -1.26 S
+2477.65 3381.55 0.76 -0.39 3.02 -0.99 3.54 -0.76 3.25 -1.13 4.17 -0.26 3.52 -0.76 3.52 -0.62 
+3.77 -0.74 0.76 2.25 -0.5 1.76 2.02 0.76 2.52 -0.14 0.11 -1.36 2.52 -1.02 -0.36 -1.39 
+-2.52 0.5 -1 -0.86 2.76 -1.13 2.15 1 2.26 0.49 3.28 -1.25 4.27 -1.26 4.78 -0.89 
+4.14 -1.13 2.15 -1.76 -2.52 -1 -0.37 -1.78 1.26 -1.5 2.76 -1.25 3.14 -1.52 3.78 -0.62 
+2.38 -0.89 2.78 -0.76 S
+2545.72 3361.13 -1.39 -1 0.88 -1.63 1.89 -0.89 0.26 -1.39 -1.76 -1.62 1.89 -1.78 3.14 -1.5 
+1.76 -2.28 2.12 -1.75 2.02 -1.65 2.38 -2 0.89 1.37 2.38 -1.63 2.02 0.13 1.13 1.13 
+1.39 1.63 2.25 -2.12 3.52 -2.14 0.39 -1.39 1.76 -0.87 2.38 -0.26 0.39 -1.52 -1.16 -2.02 
+2.91 0.39 2.89 0.37 3.02 -0.5 0.26 -1.62 -1.13 -1.79 -2.28 -1.63 -3.38 0.38 -3.54 -0.37 
+-1.37 -2.38 0.87 -2.28 0.63 -2.89 1.89 -2.28 2.25 0.13 1.65 1 1.76 -1.63 1.39 -2.78 
+0.13 -2.15 -2.78 0 1.13 -1.89 -0.13 -1.75 1.25 -1.39 1.89 -1.49 -3.38 -1.26 S
+2582.21 3308.12 -2.65 0.5 0.26 -1.52 S
+2579.82 3307.09 1.37 -0.63 1.02 1.65 S
+2582.21 3308.12 2.64 0.37 0.63 -1.39 -0.63 -1.13 -0.63 -1.25 2 -0.89 1.39 0.89 1.76 -1.76 
+1.65 -1.78 0.5 -1.5 -3.15 1 -1.63 1.65 -3.41 1.75 -2.89 1.63 -3.64 1.78 -2.91 1.26 
+-3.52 -0.13 -2.52 -0.63 -1.62 -1.26 -0.63 -1.52 0.24 -1.63 0.5 -1.52 1.89 -0.37 0.52 -1.52 
+-3.78 1.13 -0.13 -1.63 0.63 -1.78 -2.91 1.89 -1.76 -2 2.65 -1.65 3.28 -1.76 3.38 -0.13 
+0.26 -2.25 2.25 0.24 1.39 -3.15 -2.26 0.63 1.76 -2.78 0 -1.63 2.13 -1.64 1.02 -2 
+1.39 -2.64 1.99 -1.89 1.89 -1.65 2.28 -0.76 2.89 -0.12 0 -2.26 0.5 -2.28 S
+2587.61 3270.05 -0.13 -2.38 -0.24 -2.13 3.88 -0.76 3.28 -1.25 1.76 1.37 3.02 0 0.39 -2.13 
+-3.15 -0.39 -2.26 -0.74 -0.52 -1.26 -2.12 -0.39 1.13 -1.63 2.88 0.87 0.76 -1.26 -2.13 -0.37 
+0.38 -1.52 3.02 -0.5 2.52 1.25 1.89 0 -2.15 -1.62 -2.12 -1.78 -3.14 1.39 -2.26 1.76 
+-3.27 1.02 -2.65 -0.26 0.63 -0.87 2.26 0.37 2.15 -0.75 1.63 -1.63 0.39 -1.65 2.52 -2.13 
+2.52 -0.13 2.89 -0.63 2.15 -1.88 2.75 -1.78 3.78 -1.37 1.89 2 0.63 -2.13 2.88 -1.65 
+3.78 -1.39 1.65 -2.52 2 -2.13 0.76 -2.78 0.37 -2.28 -3.64 -0.11 -0.37 3.15 -1.13 2.02 
+-1.76 2.39 -2.41 1.39 S
+2614.65 3240.84 -2 1.88 -3.53 -0.12 -2.89 1.63 -3.28 1.91 S
+2602.95 3246.14 -3.02 1.63 -3.02 1.52 -3.14 0.11 -2.02 2.02 -2.12 1.78 -2.02 0.87 -2.76 -0.99 
+-1.15 1.13 -2.38 0.37 0.13 -1.75 3.91 -3.91 2.63 -1.76 2.02 -1.88 0.63 -2.65 2.15 -1.63 
+2.89 -0.76 1.89 -1.89 1.88 -1.15 1.89 0.63 3.39 -1.13 2.28 0.26 2.26 -2.38 -2.39 -0.39 
+-2.64 0.26 -2.25 -0.76 -2.39 -0.39 -1.65 -0.99 -3.13 -0.13 -2.02 -1.26 -3.77 -0.63 -3.52 0.39 
+0.99 -1.91 2.02 -0.24 2.62 0.24 2.15 -0.87 2.52 -0.5 0.5 -1.79 -0.5 -1.12 1.63 -1.26 
+-1.5 -0.63 -2.91 2.29 -0.5 -1.79 0.39 -2.38 S
+2592.91 3220.68 -2.02 -0.89 -1.13 -1.5 1 -1.78 -2.89 0.39 -2.38 2.02 -0.39 -2.14 -0.24 -2.02 
+-1.02 -1.89 -0.37 -2.02 -0.75 -2.13 -1 -1.78 2.52 -2.52 -0.52 -2.02 -1.88 -1 -2.26 1 
+-2.38 -0.24 -0.63 2.38 1.89 1.63 -2.52 1.39 -2.02 0.5 -2.02 -1.12 -3.02 -0.37 3.27 -1.02 
+2.26 -2.65 1.25 -2.52 2.02 -0.11 1.89 -2.28 0.13 -2.15 -2.15 0 -2.25 -0.5 -0.26 -2.25 
+-1.13 -2.15 -0.63 -2.25 2.52 -1.52 2.78 -1.88 -2.91 -0.76 -2.38 0 -2.76 0.37 -2.14 -0.37 
+0.13 -2.02 3.02 -1.26 1.63 0.63 1.65 -2.38 -2.91 -1.14 -3.65 1.14 -3.14 0.24 -1.5 2.54 
+-1.25 1.99 -1.52 2.41 S
+2560.8 3186.68 -3.38 1.26 -2.65 0.5 -2.64 2.02 3.02 -1.02 2.91 0.13 2.89 -0.37 S
+2560.94 3189.2 2.26 0.37 2.41 0.5 2.88 0.13 2.13 1.39 1.39 2.28 0.13 2.13 -1.75 2.28 
+-2.15 1.63 -2.88 0.76 -2.89 0.26 -3.02 0.74 -3.04 0.76 -3.12 0.26 -3.04 -0.26 -3.02 -0.63 
+-1 1.65 -2.38 0.13 -1.13 -1.39 -2.65 -0.39 -3.28 0.89 2.65 0.24 1.25 2.41 -2.52 0.63 
+-2.78 0.5 -2.88 0 -0.26 -3.28 -1.5 1.89 -1.13 -2.15 -1.26 2.91 -1.12 -1.26 -0.39 -1.89 
+-2.39 0.76 -1.39 -1.65 -0.75 -2.52 -2.39 -1.39 -2.52 -0.5 -0.87 -2.88 -2.02 -1.15 0.5 -1.76 
+1.39 -0.13 -1.52 -2.02 -0.64 1.65 S
+2514.25 3191.08 -1.12 -1.52 -0.13 2.65 -1.37 -2.02 -1.65 -1.49 1.65 -1.15 -2.78 -1.26 -1.13 -2.39 
+2.02 2.14 2.13 0.63 2.52 0.87 -2.02 -3.02 -0.11 -2.15 -1.52 -2.39 -0.64 -2.38 -0.36 -2.15 
+-0.5 -2.39 -0.52 -2.64 -1.76 -2.02 -1.12 -3.14 -1.26 -2.39 -1.13 -2.28 -1.75 1.13 -0.89 -2.25 
+-1.13 -1.89 -2.64 -0.5 -1.63 -2.41 -1.62 -1.76 -2.02 -2.02 1.13 -1.63 -1.13 -1.78 0.63 -2.26 
+0.5 -2.15 1.63 -2.13 -0.87 -1.91 0.63 -1.75 2.25 0.63 -1.39 -1.89 0 -2.26 1.39 -1.25 
+2.78 -1.15 2.63 -0.24 2.52 1.5 1.26 1.89 2.02 2.41 1.52 0.13 0.74 1.89 1.75 -1.26 
+1.26 -3.04 1.52 -2.52 S
+2514.52 3132.12 1.63 -2.88 1.52 -2.65 2.25 -2.02 -0.5 -1.89 1.52 -2.02 0.37 -1.76 2.15 0.24 
+2 0.13 S
+2525.46 3119.27 -0.63 1.75 1.15 2.52 2.13 0.26 1.88 0.26 0.63 3.28 -0.26 3.14 0 2.26 
+-0.62 2.64 0.13 1.89 1.76 2.15 1.89 1.63 -1.25 0.75 1.39 1.52 0.39 1.49 -1.26 1.65 
+-2.41 1.39 -2.39 1.39 -0.87 2.13 -0.26 2.78 -0.5 2.65 0.63 1.39 1 2.88 1.52 2.15 
+1.25 1.52 1.76 1.76 0.25 1.88 1 2.02 -2.15 1 0.63 1.89 -0.63 1.26 1.15 1.15 
+0.38 1.89 1.89 0 1.63 0.37 1.39 0.76 2.64 -1.13 1.13 -2.52 -1.25 -1.26 -0.37 -2.91 
+-1.25 -2.52 S
+2538.93 3168.4 -1.15 -3.01 -1.37 -2.65 -0.26 -2.78 1.13 -2.52 2.02 -2.39 0 -2.78 0.5 -1.75 
+2.65 -0.89 1.76 -1 3.02 -0.26 2.39 1 2.28 1.52 2.25 1.52 2.15 1.39 3.26 0.87 
+3.02 -1.5 1.65 1 2.13 -1.89 -3.14 0.13 -1.63 -2.41 -0.63 -1.5 -3.02 -0.89 -3.02 0.26 
+-2.39 -1.12 -2.28 -0.89 -1.5 -1.75 0.87 -2.29 1.52 -2.02 1.89 0 0.87 -2.64 1.02 -2.52 
+-1.13 -1.75 -1.89 0.13 -1.65 1.5 -1.99 1.02 -2.15 -0.89 -0.13 -2.88 -0.5 -1.89 0.89 -3.14 
+1.13 -2.54 -0.39 -2.89 -2 -1.75 -0.26 -2.41 -1.39 -1.12 -2 -0.37 -1.78 2.52 -2.63 -0.89 
+-2.52 -1.39 -1.89 -2.02 S
+2532.64 3113.84 -2.78 -0.87 -2.52 -1.65 -1.89 0.26 -2.13 0.63 1.26 1 -1.52 1.78 -1.13 -1.52 
+-2.15 -0.76 -1.23 -1 -1.52 -1.52 S
+2517.04 3110.2 -2.02 -0.24 0.26 1.89 -3.28 0.99 -0.26 1.39 -2.13 1.13 0.76 2.78 1 2.88 
+2.02 1.15 -0.26 1.76 -1.89 -0.26 -0.24 1.78 0.5 2.39 -0.26 1.76 -2.12 -0.63 -1.02 -1.89 
+-2.39 -0.76 -1.13 -1.39 -0.37 -1.75 0.24 -2.78 0.63 -2.12 1.75 -1.26 0.39 -2.78 1.39 -1.64 
+-1.02 -1 1.26 -1.26 -1.26 -1.52 -0.13 -1.76 -1.89 0.76 -2.26 -0.13 -1 -1.39 -3.28 -0.13 
+-2.02 -1.12 0.26 -2.26 1.5 -0.39 0.13 -1.26 -1.39 -1.5 -1.63 0.87 -0.13 2.78 S
+2495.77 3103.28 -1.12 -0.63 -0.5 -2.15 -0.76 -1.89 -1.13 -1.89 -1.52 -1.89 -2 -0.89 -2.41 -1.5 
+-2.13 -0.89 -0.63 -1.88 -0.26 -2.28 -1.5 -0.87 -1.89 -0.5 -1.65 -0.89 -0.63 -2.28 -2.12 0.39 
+-2.02 -0.39 -0.87 2.28 -2.28 0 1.26 -2.64 0.63 -3.28 -2.26 0 -2.65 -0.37 -1.13 1.89 
+-2.65 -0.39 -2.02 -0.87 -2.25 -0.39 0.13 -2.76 1.63 -1.02 2.02 0 2.14 -1.5 2.63 -0.52 
+0.63 -0.87 1.65 -1.89 -0.39 -1.39 1.02 -1.39 1.89 -1.39 1 -2.38 -0.37 -3.15 -0.39 -3.17 
+-0.37 -2.39 -0.76 -3.14 -1 -1.39 -2.14 -0.5 -2.39 0.5 -3.52 0.63 -3.54 -0.87 -2.76 1 
+-3.14 0.63 -3.14 -0.26 S
+2450.11 3051.87 -2.78 0.13 -3.02 1.52 -1.63 -2.28 -2.39 -0.24 -1.26 -1.26 1.5 -3.41 -0.63 -2.25 
+0.26 -1.91 0.37 -2.76 -0.5 -2.41 -1 -2.62 -0.75 -3.28 S
+2438.29 3031.1 -1.52 -1.79 -0.63 -2.75 0.89 -1.89 1.89 -0.13 -0.62 -2.78 -0.26 -2.78 -1 -2.39 
+2.78 0.39 2.25 -0.66 1.89 0.89 1.89 -0.13 2.13 -1.5 2.15 -4.3 2.26 -1.13 2.38 2.28 
+2.29 0.87 2.75 0.39 2.64 0 2.65 -0.13 2.64 0 1.63 2.26 2.26 2.78 2.28 0 
+0.74 2.26 1.52 1.91 2.65 1.88 -2.29 1.89 -0.24 2.26 1.37 2.39 2.28 2.78 2.13 3.28 
+2.14 1.02 2.52 0.86 2.39 1.89 2.15 1.52 S
+2491.25 3042.55 -0.52 3.15 -0.37 2.78 2.38 1.49 1.63 1.39 2.52 -0.87 2.91 -0.26 2.52 -1.39 
+2.39 0.63 1.63 1.89 2.28 1.65 2.38 1 0.87 1.88 1.65 1.02 2.12 -0.26 1.39 -0.89 
+2.52 -0.24 0.63 -2.78 1.39 -2.25 2.26 -2.02 0.63 -1.89 2.15 0.11 2.39 -1.99 1.99 -2.15 
+2.41 -1.25 2.76 0.37 2.15 -1.63 2 -1.26 1.52 -0.39 1.39 -2.13 3.02 -0.63 0.63 -1.78 
+1.5 -2.13 0.76 -2.41 -0.86 -1.5 -0.39 -2.41 0.26 -1.37 1.39 0.24 0.63 1.39 1.13 1.65 
+-0.39 2.25 2.15 1.26 -0.5 2.28 -2.39 1.13 0.24 2.89 0.76 2.02 2.02 -0.76 2.13 -0.11 
+0.76 -1.79 1.52 -0.37 S
+2557.55 3036.13 0.37 2.02 -2.52 2.02 -2.39 1.13 -2.39 0.99 -2.78 1.15 -2.26 0.63 0.76 2 
+-3.54 -0.5 -2.75 1.13 -2.28 1.15 -1.26 1.26 -0.74 2.39 -1.39 2.14 -2.25 1.13 S
+2532.14 3054.77 -1.89 1.26 -2.02 1.63 -0.5 1.78 0.37 2.02 -1.26 1.26 0.13 1.89 1.63 0.13 
+1.76 1.5 2.15 -0.13 -0.5 -1.5 0.63 -1.78 1.26 -1.37 1.13 1.13 0.13 1.88 3.02 -1.52 
+0.76 -2.26 1.25 -1.26 0.24 -1.89 2.65 -1.02 1.25 -1.26 2.52 -0.13 3.51 -1.89 2.91 -2.02 
+2.62 -1 2.39 -1.63 2.41 -1.02 0.24 -2.38 0.26 -3.28 0.5 -2.78 2.13 -1.12 1.89 -2.15 
+1.39 -1.62 2.15 -2.52 2.25 -2.15 S
+2571.5 3029.58 3.41 0.13 3.15 1 1.87 -1.5 2.64 -0.13 2.65 -1.39 -0.89 3.28 2.78 -0.5 
+-2.02 0.64 -0.76 1.75 -2 0.63 -1.89 1.13 -1.02 1.65 -1.89 1.63 -2 2.02 -0.39 3.27 
+2.65 -1.88 2.13 0.37 0.39 1.52 -1.52 1.26 2.14 0.37 0.76 1.52 2.13 0 1.65 0.76 
+2.49 0 1.89 -1.52 2.02 0.89 -1.26 -2.14 0.39 -1.26 1.13 2.28 1.63 2 1.02 1.78 
+3.02 1.13 2.63 0.63 3.04 -1.26 -1.89 -1 0.74 -1.28 -2.39 -0.63 -2.75 -0.62 -2.52 -0.5 
+-2.39 -0.5 -1.26 -2.14 0.11 -3.39 3.41 1.13 -0.26 -1.52 1.25 -3.15 1.02 -1.25 -0.89 -0.63 
+-1.89 0.99 0.26 -1.89 S
+2594.04 3033.22 2.38 -0.5 2.02 -0.5 0.11 -2.02 2.15 -1 -0.89 -2.15 4.3 1 -0.39 -1.63 
+2.52 0.63 3.64 -1.76 2.39 -0.39 2.91 2.15 0 2.39 2.63 0.26 3.67 -0.63 1.63 -1.64 S
+2623.09 3027.43 2.39 -0.37 1.52 1.39 1.76 0.5 1.5 2.39 1.26 2.28 3.28 -0.5 1.39 0.37 
+1.39 2.52 0.87 -1.39 -0.76 -2.25 1.39 -1.65 -0.13 -2.02 1.25 -3.78 1.26 -2.64 -0.63 -2.75 
+0 -3.54 -0.24 -3.14 0.11 -3.02 0.13 -3.04 -0.76 -3.15 -0.87 -2.25 -3.28 -1.39 -2.52 -1.12 
+-1.89 1.13 -0.24 -2.02 -2.15 0.37 -0.24 2.02 -3.04 -0.23 -2.62 -1.02 -2.28 -2.02 -2 -1.89 
+-2.15 -1 S
+2616.79 2994.18 -3.02 0.87 -2.78 -0.63 -2.52 0.52 -2.12 0.63 -2.78 -0.12 -2.89 0 -2.52 -1.02 
+-1.76 2.15 -2.64 -0.37 -2.89 0.37 -2.91 0.13 -0.87 2.15 -2.89 0.5 -3.14 0 -2.65 -0.89 
+-2.52 -1.39 -2.39 -2.65 -0.76 -2.13 1.13 -1.65 0.76 -2.38 -0.37 -2.39 -1.39 -1.65 -1.89 -1.26 
+-2.38 0.13 -2.78 1.63 -3.39 1.52 -4.17 0.5 -2.88 0.13 -2.52 1.13 -1.39 1.25 -0.37 2.78 
+-2.88 0.76 -2.91 1.13 -2.88 0.13 -3.65 0.13 -3.14 -0.26 -2.39 0.76 -2.91 1.13 -1 2.41 
+-2.02 -0.76 -2 0.87 -0.63 2.28 1.5 1.52 1.76 1.99 0.89 2.54 -0.62 2.26 -1.63 0.76 
+-1.02 3.28 1.39 1 S
+2526.97 3013.96 0.89 2.52 -2.91 -1.63 -1.39 2.64 -2.39 0.24 -2.12 -0.49 -1.76 -1.52 -2.28 -0.63 
+-3.52 0.76 -1.75 -1.13 -3.54 0.76 -1.89 -1.39 -2.25 -0.62 -1.5 0.89 -2.65 0.37 -2.78 0 
+-1.76 -0.63 -2.39 0 -2.26 -1 S
+2488.74 3013.08 -3.04 -0.52 -3.39 -0.5 -2.26 -1.39 -2.41 -1.89 -2.26 -0.5 -2.39 -0.37 -1.12 -1.91 
+-3.15 -1.37 -2.39 -0.39 -2.64 1.39 -1.89 -0.37 -3.14 0.11 -2.02 -0.37 -3.02 1.89 -0.99 1.89 
+-2.39 -0.37 -1.26 -2.78 -0.89 -2.26 -1.39 -2.28 -1.25 -2.25 -2.89 -1.78 -2.75 -0.74 -2.52 -1.28 
+-1.78 -2.26 -2.12 -1.75 -0.13 -1.89 -1.39 -2.28 -1.75 -1.26 -0.37 -4.66 1.13 -2.02 S
+2430.86 2978.93 -1.52 -3.25 -1.89 -2.28 -2.25 -2.15 -3.02 -1.13 -1.76 -2.26 -3.54 -1.15 -3.75 -0.24 
+-1.89 -2.15 -1.15 -2.78 -1.37 -1.75 -2.64 -1.26 -1.39 -1.25 -1.12 -2.78 -1.13 -2.26 -1.65 -3.14 
+-2.39 -2.15 -1.89 -2.25 -1.49 -2.15 -1.76 -3.77 -1.52 -2.29 -1.89 -1.12 -0.76 -2.91 -0.62 -2.76 
+1.89 -2.15 2.02 -2.52 -0.36 -2.91 -1.89 -1.62 1.5 -3.02 0.63 -2.91 -0.24 -2.89 -0.64 -2.78 
+-1.25 -2.78 -1.13 -2.76 -0.26 -3.79 -2.02 -2.25 -1.5 -2.29 -2.39 -1.13 2.13 -1.62 1.13 -3.04 
+0.13 -3.27 -0.63 -2.89 -0.26 -3.28 2.29 -1.62 2.12 -1.65 2.29 0.39 0.24 -3.91 2.28 -1.15 
+1.63 -2.52 1.25 -2.52 S
+2397.39 2866.82 2.26 -1.52 2.14 -2.52 1.76 -2.52 0.37 -2.89 0.39 -2.41 0.76 -2.39 2.63 -3.02 
+2.78 -1.65 2.75 -1.5 2.28 -2.52 3.78 -2.02 2.63 -3.04 2.28 -1.99 2.89 -1.91 3.28 -2.52 
+2.76 -1.13 2.39 -0.5 2.78 1.76 3.4 0.39 2.39 1.75 S
+2444.08 2834.7 3.38 0.37 3.28 0.52 2.38 0.37 2.78 -0.13 4.28 -1 2.89 -0.52 3.27 -1.37 
+2.39 1.37 2.76 0.89 2.41 0.5 2.38 1.39 3.26 1.75 3.78 0.13 1.39 1.88 3.41 0.89 
+2.75 0.5 2.91 0.13 3.25 0.5 3.28 0 2.88 -0.87 2.78 -2.28 1.5 -3.64 1.02 -3.78 
+3.39 -1.78 2.78 0.13 2.89 0.49 2.78 0.63 2.89 0.13 S
+2523.2 2831.92 2.38 0.5 2.29 0.13 0.61 -2.78 2.28 -0.37 1.5 -2.26 2.02 -2.28 -0.87 -3.41 
+-0.39 -3.28 -0.99 -2.38 -1.39 -2.39 1.89 -0.76 -1.39 -2.52 0.13 -2.78 S
+2549.37 2888.11 1.5 -1.75 1.02 -2.39 1.89 -1.25 0.63 -1.91 1.49 -1.26 2.15 1.65 2.65 1.13 
+0.74 2.91 -2.76 -0.26 -3.14 0.26 -0.13 1.89 -1.52 1.76 -2.75 0.26 -1.76 -1.02 S
+2657.55 2807.36 1.02 -3.64 2.26 2.65 2.78 -0.5 3.64 0.5 2.26 2.26 -3.28 0.13 1.75 2.15 
+1.79 2.75 0.73 3.41 0.76 2.15 -1.49 2.65 -2.78 0.5 -2.76 -0.37 -3.14 -1.02 -3.14 -2.38 
+-0.63 -3.54 0.87 -2.25 -0.24 -2.39 -0.39 -3.04 S
+2644.59 2783.05 1.39 -2.64 1.89 -2.65 2.76 -2.02 1.39 -3.64 -0.5 -2.91 3.28 -0.5 -0.39 2.78 
+-1.37 2.65 -1.39 3.14 0.37 2.02 -2.25 1.62 -2.39 1.52 1.37 2.64 -0.99 3.15 -0.87 3.28 
+-1.52 3.14 -0.5 3.78 -1.39 -4.04 1 -2.76 -0.86 -2.91 1.49 -3.15 -0.5 -2.52 S
+2670.9 2751.17 0.37 -2.25 0.76 -2.28 -0.13 -2.39 1.76 -1.63 0.39 -2.41 1.76 0.76 1.26 -2.26 
+-0.26 3.77 -1.63 2.13 -0.39 3.28 0.13 3.41 1.13 3.41 -1.76 3.14 -0.37 2.89 -0.39 3.66 
+-2.26 1.63 -0.5 -1.5 1.26 -5.55 0 -1 0.76 -4.17 -1.89 -2.65 S
+2592.51 3057.79 2.39 -1.89 1.39 -2.12 2.52 -1.39 2.78 -0.26 S
+2601.58 3052.13 2.76 0.13 2.65 1.13 2.52 0.13 1.5 1.89 1.52 1.88 1.49 1.89 2.41 1.65 
+2.39 0.24 2.64 0.76 1.76 1 1.99 -1.5 2.65 0.76 2.14 -1.89 1.76 0.5 2.38 -0.76 
+1.52 1 2.25 -0.24 2.13 1.13 2.02 1.25 2.52 0.26 2.02 1.26 1.39 2.64 1.26 2.02 
+-0.39 1.89 -1.76 1.5 -1.75 2.02 -1.39 0.63 -3.02 0.39 -2.52 0.74 -1.89 0.89 -2.75 1.65 
+-2.52 0.63 -2.02 -0.13 -1.62 0.5 -1.89 0.37 -1.78 1.52 -1.26 -0.37 -1.87 -1.15 -2.15 -0.11 
+-1.25 -2.02 -1.63 -0.89 -0.76 -1.76 -1.52 -1.52 -1.76 1.02 -0.37 2.52 -1.52 0.5 -2.52 0.24 
+0.63 2.78 2.14 1.65 S
+2610.13 3082.75 -2.78 0.63 -1.75 -1.52 -3.28 0.63 0.26 2.02 -2.52 -0.62 -2.15 -0.63 -0.11 -2.52 
+-0.89 -2.14 -1.89 -1.52 1.26 -2.63 0 -2.02 -1.63 -1.26 -0.62 -2.15 0.75 -2.28 0.5 -2.89 
+-2.14 -1.02 0.5 -2.76 -1.13 -2.28 S
+2612.52 3083.38 1.63 -0.52 1.65 -1.5 2.25 -0.39 1.76 1.65 2.15 0.63 2.63 0.37 0.39 3.14 
+0.76 2.91 -1.65 0.5 -1.5 1.02 1.76 0.63 1.25 2.39 1.76 1.26 -1.52 0.37 -1.89 -1.12 
+-2.76 -1.39 -1.75 -2.65 -2.52 -1.37 -1.89 -2.02 -0.76 -2.41 -1.75 -1.49 S
+2659.31 3093.18 1.02 -1.76 1.89 -0.24 2.63 -2.15 1.02 -1.75 1.26 -2.28 2.89 -2.02 2.64 -1.5 
+2.25 -0.76 S
+2674.91 3080.73 2.39 -1.65 1.78 -2.02 3.02 -1.37 2.63 0.11 -1.63 -1.37 -0.26 -2.28 0.89 -3.02 
+0.63 -2.02 -1.63 -0.62 2 -3.15 1.65 -2.52 1.76 -2.64 2.26 0 2.78 0.63 1.39 -1.15 
+3.38 -0.62 2.64 0 2.76 2.54 2.28 2.25 3.02 0.89 -0.76 2.02 -2.89 3.15 -2.02 3.64 
+-0.89 3.54 -1.75 -0.26 -1.76 2.02 -1 2.39 -2.64 -1.39 -1.39 1.65 -0.63 3.14 2.52 0.13 
+2.28 1.25 1 2.76 -2.52 1.02 -2.52 1.13 -2.14 1.65 -2 -1.52 -0.12 -2.38 1.63 -2.15 
+-2.75 2.15 -1.65 1.99 -0.11 2.91 -1.39 1 -2.28 -1.25 -2.75 1.02 -2.15 2.39 -3.02 1.89 
+-2.38 -0.13 -0.5 1.52 S
+2672.03 3097.98 2.26 1.13 1.89 0.39 -2.52 2.25 0.89 2.65 2.13 1.75 2.64 -0.37 1.65 1.52 
+1.87 1 -1.87 0.76 -1.78 2.02 -2.25 2.25 -3.02 1.26 -2.89 0.76 -1.65 -0.89 -2.02 -1.13 
+-1.89 -0.37 -1 -3.4 -1.88 -1.52 -1.39 -1.76 1.15 -1.12 -1.39 -1.26 0.13 -2.15 -2.64 -0.12 
+0.37 -2.52 0.39 -3.15 0.11 -2.78 S
+2695.92 3114.23 1.78 -2.64 1.37 -0.89 2.15 -3.02 2.13 1.25 2.02 1.39 1.13 -0.63 1.39 2.26 
+-0.13 3.66 -1.89 2.65 0.89 1.26 0 1.88 -2.25 1 -3.04 1.13 -1 1.26 -0.76 2.78 
+-0.37 2.39 -0.89 -2.63 -1.37 0.37 -1.26 -2.14 1.37 -1.63 -1.63 0.13 0.89 -2.52 S
+2696.44 3121.55 -1.52 -1.02 -0.63 -1.13 1.26 -2.28 0.37 -2.89 S
+2734.55 3150.13 2.52 -0.63 2.15 -0.87 -3.15 4.02 -1.78 1.39 0.52 2.14 -0.26 2.26 0.99 2.78 
+2.52 1.39 0.26 1.89 S
+2738.32 3164.5 2.65 0.63 1 2.28 -0.63 2.88 -1 -1.39 0 -1.75 -1.39 -0.89 -0.63 -1.76 S
+2738.32 3164.5 -1.52 -0.76 -1.89 -1.5 -1.37 -2.41 -1.52 -0.87 0.39 -3.04 0 -2.38 2.13 -3.41 S
+2737.96 3258.22 1.63 2.02 -1.12 2.88 -1.13 2.52 -3.41 2.41 -2.26 3.14 -1.39 2.89 -2.38 2.28 
+-3.65 3.28 -3.53 2.39 -3.39 1.25 -4.03 1.76 -3.52 1.78 -0.89 -0.89 1.78 -1.26 2.25 -0.89 
+3.02 -1.89 2.89 -1.89 2.91 -1.89 S
+2721.72 3278.12 3.02 -2.78 3.02 -2.75 2.26 -2.02 1.78 -2.28 2.26 -2.02 2.25 -2.26 0.63 -2.52 
+1.02 -3.28 S
+2562.83 3158.57 2.38 -1.26 2.02 -1.89 1.39 -1.89 1.13 0.37 0.13 1.52 2 0.63 0 1.89 
+-0.87 1.65 -1.75 1.5 -2.15 0.26 -1.76 0.89 -1.76 -0.52 -0.89 -1.75 0.13 -1.39 S
+2572.77 3165.75 1.63 -1 2.14 -0.26 1.26 -2.02 1.25 0.5 0.63 1.15 -1 1.75 -1.89 0.76 
+-1.52 1.39 -1.13 2.13 -2.15 0.76 -2.25 0.13 1.5 -1.02 1.52 0.13 0.89 -1.62 -1.65 -0.63 
+0.76 -2.15 S
+2714.93 2701.41 -0.39 -2.39 0 -2.78 0.89 -2.26 -0.13 -3.91 -0.24 -3.28 1.63 -2.65 1.76 -1.63 
+1.89 -1.15 S
+2720.33 2681.38 2.65 0.76 2.38 1.65 2.75 1.39 2.02 -0.39 2.28 3.14 1.24 2.65 1.39 3.02 
+1.25 2.02 0.89 2.52 0.87 2.65 0.89 2.4 1.13 2.65 1.39 2.62 1.13 2.52 0.89 2.64 
+1.26 2.65 1.13 3.04 1.39 3.14 1.63 3.78 0.87 3.02 0.89 3.54 0.26 2.52 1.37 1.76 
+0.76 2.64 0 4.91 1.89 -2.13 2.02 3.39 -0.13 2.91 -0.5 4.4 -1 3.28 -0.26 3.41 
+-1.12 2.89 -1.65 2.64 -2.25 -3.02 -0.13 -3.01 -0.63 -2.55 -2.26 -1.37 -2.65 -1.02 0.26 -2.89 
+-1.89 -1.89 0.24 -2.41 -2.12 -0.37 -2.52 -3.41 -2.26 -1.89 -2.78 -1.89 -2.64 -1.39 -2.75 -1.89 
+-2.29 -0.37 -1.75 -4.67 S
+2723.85 2731.4 -2 -3.14 0 -3.4 1 -3.15 -0.37 -2.52 0.87 -3.14 -0.63 -2.52 -2.26 -3.28 
+-1.13 -2.52 -2.14 -2.65 -2.25 -3.67 S
+2776.82 2716.04 0.5 -1.89 2.02 0.37 0.63 1 -1.02 1.39 -2.13 -0.87 S
+2788.02 2721.07 2.13 0.37 0.39 2.02 -1.13 0.89 -1.39 -3.28 S
+2759.59 2919.86 1.88 -0.37 1.89 0.63 2 2.39 -2 -0.26 -2.52 -0.24 -1.26 -2.15 S
+2764 2550.76 -0.76 -2.65 -2.78 -2.39 2.64 0.87 0.37 -1 1.78 1.39 1.37 -0.13 2.15 2.02 
+-2.39 -0.39 -1.52 -0.37 0 1.5 0.39 2.02 -1.25 -0.87 S
+2916.08 3024.42 2.02 -5.43 1.63 -5.79 S
+2952.45 2957.4 2.63 -0.76 S
+2959.61 2950.58 1.76 -1.62 2.15 -1.88 S
+2963.52 2947.07 -0.76 3.27 -2.65 2.39 -0.5 -2.15 S
+2968.55 2936.74 1.13 -3.91 1.13 -1.25 1 1.75 -2.52 4.8 -0.74 -1.39 S
+2883 2948.83 1.14 -3.91 0.99 -2.65 1.89 -4.04 1.75 -2.25 1.65 1.13 2 2.64 1.02 3.41 
+-0.26 3.91 -1.13 3.9 -2.02 2.02 -2.02 2.75 -2.26 2.41 -2.39 2.52 -2.89 0.63 1.5 -2.28 
+-0.13 -3.52 0.63 -3.54 0.52 -3.14 S
+2927.54 3127.71 2 -2.64 2.02 -2.39 1.89 0.63 0.49 1.89 -0.49 3.91 -1.26 3.78 -2.13 4.04 
+-1.39 3.77 -1.63 2.15 -0.52 -2.28 -0.62 -2.39 0 -2.39 1.02 -4.54 0.63 -3.54 S
+2909.92 3211.24 3.02 -2.91 3.41 -2.65 0.87 0.89 2.41 -1.65 -3.54 4.43 S
+2916.08 3209.36 -2.65 4.14 -3.13 3.91 -3.66 4.16 -3.26 4.15 -3.02 2.64 -0.89 -0.89 1.89 -4.01 
+2.75 -4.04 2.65 -3.64 3.14 -4.54 S
+2834.31 3304.71 2.78 -0.39 -1.02 2.15 -2.39 1.52 1.63 0.23 2.91 -1.5 2.52 -2.65 2.75 -1.39 
+2.91 -1.64 -0.26 2.54 -3.78 4.27 -3.78 2.25 -4.14 3.04 -3.52 2.65 -2.14 0.11 -2.65 0.89 
+1.26 -2.52 -1.26 -0.13 1.89 -2.78 3.41 -3.25 2.89 -3.41 S
+2825.89 3319.45 3.02 -0.76 -0.26 2.15 -2.75 1.89 -2.28 1.63 -2.75 3.04 0.76 0.99 -3.15 2.29 
+-2.78 2.38 -2.12 0.5 0.5 -2.02 2.13 -2.76 3.14 -2.28 0.89 -2.39 2.76 -1.76 2.91 -2.91 S
+2823.37 3315.54 2.76 -1.39 S
+2826.13 3314.15 -2.13 3.28 -0.75 2.28 -3.28 2.64 -2.25 3.25 -3.02 3.41 -1.76 2.38 -3.64 3.54 
+-0.76 1.89 -2.02 3.02 4.02 -2.75 2.91 -1.15 2.02 0.13 -0.52 1.52 -5.04 3.51 -4.91 4.04 
+-1.49 -0.5 -3.15 2.02 1 1.63 -3.14 4.16 -5.77 4.04 2.88 -0.26 -5.66 2.65 -2.02 2.52 
+-2.76 1.75 4.28 -1.49 -4.14 3.38 -2.65 1.02 -3.14 2.02 -2.15 -0.13 -4.38 1.39 -2.78 1.63 
+-4.14 1.13 -3.02 0.39 -2.41 1 -1.88 1.88 -2.76 0.52 -3.64 1.89 -4.27 1 -2.52 -0.37 
+-1.26 -1.02 -2.39 0 -2.52 0.63 1.26 -2.39 2.52 -0.63 -1.39 1.39 1.63 -0.13 1.75 -1.76 
+-0.24 -1.25 4.64 -1.89 S
+2749.26 3371.36 2.28 -0.39 2.63 -0.37 3.41 -0.63 3.52 -1.26 4.16 -2.02 4.02 -1.52 3.77 -2.78 
+3.78 -1.89 3.28 -2.39 3.38 -3.14 3.91 -3.28 -2.28 0.75 -3.51 1.52 3.27 -2.41 3.15 -1.26 
+4.01 -2.52 3.54 -2.26 2.89 -1.02 2.25 -2.02 -0.24 -1.49 2.39 -3.04 2.88 -3.52 2.91 -3.91 
+1.5 -2.52 4.04 -3.28 3.77 -3.41 2.89 -2.78 2.52 -3.02 S
+2737.33 3372.35 2.52 -0.5 0.63 0.75 3.88 -0.52 -3.77 2.28 -3.39 2.52 0.13 -1.39 0.5 -1.63 
+-1.89 0.5 -1.39 1.39 0.13 0.87 -2.89 1.78 -2.52 2.02 -0.76 2.52 -1.76 3.02 -2.4 0.37 
+-3.76 1.52 -4.29 2.02 -2.13 2.14 -4.28 2.26 -3.91 1.89 S
+2705.99 3396.16 3.28 -2.15 -1.52 0 0.13 -1 -4.54 1.26 5.04 -2.52 1.65 -1.76 1.63 -2.28 
+0.37 -2.12 -0.11 -1.15 -1.26 -1.25 -0.39 -1.5 3.28 -1.52 2.13 0.75 3.04 -0.39 2.52 -0.36 
+2.89 -1.39 1.76 0.13 2.02 -0.5 2.02 -1.89 1.13 -1.64 1.75 0.13 4.54 -2.65 S
+2886.52 3265.54 -2.38 2.13 -1.65 2.64 -1.89 1.65 S
+2869.4 3284.05 -2.49 3.02 S
+2705.12 3394.9 -3.15 1.13 -3.04 1.26 S
+2694.79 3399.93 -4.77 1.89 -5.16 2.15 -5.66 2.02 3.91 -1.52 1.52 -1.5 4.41 -1.52 5.77 -1.52 S
+2674.91 3408 -1.99 1 -6.18 1.78 3.41 -1.52 4.77 -1.26 S
+2657.18 3413.93 -3.91 0.87 S
+2622.83 3417.84 1.26 0.5 -4.28 1.13 S
+2619.81 3419.47 -2.64 0 -1 -0.5 3.52 -0.26 3.14 -0.87 S
+2668.51 3364.93 0.5 1.13 -4.04 1.13 0.63 -1.76 2.91 -0.49 S
+2553.52 3411.42 -5.91 -0.13 0 -0.89 3.02 -0.13 2.89 1.15 S
+2663.21 3378.41 3.14 0.63 3.52 0 3.04 0.24 0.74 1.25 2.28 0.39 3.25 0.13 2.78 0.37 
+3.02 0.26 2.88 -0.13 2.65 -0.39 0.89 0.63 2.39 0.63 3.28 -0.5 3.51 0.13 3.65 -0.89 
+3.14 0.89 -4.14 0.89 -2.91 1.13 -1.13 1.52 0.26 1.5 -3.02 -0.13 0.38 -1.13 -1.76 -0.37 
+-0.13 -1.13 -1.39 -0.76 -3.39 0.11 -3.54 0.76 -2.39 0.14 -2.76 0.89 -1.89 1.63 -0.89 1.89 
+-1.89 -0.76 -1.89 -1 -1.99 -1.12 S
+2672.92 3386.09 -2.28 -0.89 -2.26 -0.87 -2.02 -1.15 -3.28 -0.13 -2.88 -0.37 -2.25 -1 -2.65 -0.63 
+-1 -1.02 1.87 -1 1.65 1 2.25 -0.5 3.15 -1.13 S
+2477.65 3371.72 3.41 1.63 -0.37 1.15 -3.04 -0.63 S
+2477.65 3373.87 -2.12 0.37 -4.41 -1.25 2.15 -1.39 4.38 0.13 S
+2555.77 3341.86 -0.37 1.65 -2.76 2.13 -1.65 -0.87 0 -2.29 2.38 -0.99 2.39 0.36 S
+2552.52 3339.61 1.5 1 -1.5 0.39 -1.25 -0.63 1.25 -0.76 S
+2536.79 3341.36 1 2.15 -1.76 2.52 -2.12 1 -2.52 -1 2.26 -1.75 2.52 -1.79 0.63 -1.13 S
+2551.5 3334.18 1.39 2.15 -1.14 1.26 -2.64 0.75 -3.02 1 -0.37 1.13 -2.91 0.39 -3.14 -0.25 S
+2539.67 3340.61 -1.13 -0.63 0.76 -1.26 1 -0.63 0.13 -2.02 3.41 0.39 0.49 -2.91 3.15 -0.63 
+4.02 1.25 S
+2560.57 3293.12 -1.89 1.76 -0.5 2.02 -1.52 1.76 -3.38 0 -2.15 -1 -1.39 -1.39 1.39 -1.02 
+3.02 -0.63 3.52 -0.87 2.91 -0.63 S
+2546.09 3287.33 2.78 0.13 1.26 1.5 2.89 0.5 1 1.78 1.02 1.25 -0.76 1.39 -2.89 -0.13 
+-2.91 0.63 -2.13 -0.63 -1.02 -1.26 -2.25 -0.39 -1.76 0.52 -1.65 -0.76 -1.63 -0.5 2.26 -1.9 
+2.91 -0.64 2.89 -1.49 S
+2570.12 3226.97 3.54 -0.5 3.02 -0.26 2.88 0.89 2.65 1.39 0.13 1.52 -3.4 -0.26 -2.89 1 
+-2.78 1.78 -2.26 1.89 -1.39 2.26 -1.13 2.28 S
+2568.49 3238.96 -1.25 2.38 -1.26 2.26 -1 2.54 -1.26 2.38 -0.52 2.52 -0.5 2.52 0.5 2.02 
+-0.11 2.52 -0.39 2.15 -2.88 1.63 -1.89 -0.76 0.26 -2.25 1.25 -1.76 -0.52 -2.28 -1.76 -1.75 
+0.13 -2.78 0.76 -2.15 0.63 -1.49 -0.5 -2.41 1.75 -1.12 1.89 -2.89 0.87 -2.64 2.15 -0.76 
+0 -2.02 1.39 -2.65 1.89 -1.13 -0.26 -2.02 2.26 -2.02 S
+2578.17 3212.24 1.39 2.02 -0.87 1.76 -3.4 0.26 0.36 -2.15 2.52 -1.89 S
+2532.25 3262 1.15 1 -0.63 1.89 S
+2532.77 3264.89 1.89 1.15 -0.39 1 -2.65 1.26 S
+2531.62 3268.29 1.39 0.63 -0.24 1.39 -2.91 0.76 0.63 -1.76 1.13 -1.02 S
+2531.62 3268.29 -0.63 -2.02 S
+2530.99 3266.28 1.78 -1.39 S
+2532.77 3264.89 -1.39 -1 0.87 -1.89 S
+2527.47 3263.26 2.26 0.63 0.52 1.75 -1.65 0.13 -1.13 1.76 -2.52 1.02 0.63 -2.02 2.15 -1.26 
+-1.02 -1.02 0.76 -0.99 S
+2529.62 3260.75 1.13 1.13 -1.89 0.26 0.76 -1.39 S
+2521.57 3257.21 1.5 0.13 1.02 0.63 1.13 -0.87 1.76 0.24 0.89 1.13 -1.39 1.02 -0.39 1.63 
+-1.25 -0.11 -0.5 -2.02 -1 0.74 -1.52 0.13 -0.24 -2.64 S
+2490.37 3242.96 0.49 -1.99 1.52 -3.04 2.63 -2.02 2.41 0.39 -1.39 -1.65 1 -2.13 2.39 -2.02 
+3.4 -2.15 -0.39 2.52 0.13 2.64 0.13 2.78 -0.62 1.89 1.13 1.26 1.39 -2.02 1.89 -0.89 
+0 -2.64 2.78 -0.24 S
+2509.25 3233.66 1.63 3.14 -2.88 0.89 -2.02 1.37 -1.75 1.65 -3.64 1 -1.39 2.41 3.25 -1.15 
+3.67 0 1.36 1.79 0.26 2.52 -0.89 1.39 -2.38 -0.39 -2.25 0.39 -1.52 -1.78 -1.75 1.39 
+-1.63 -1.62 0.63 -1.65 -2.02 0.26 -0.26 -1.89 -2.13 0.5 -3.14 -0.89 S
+2456.64 3152.65 1.39 -0.5 1.89 1.89 -2.64 -0.24 -0.63 -1.15 S
+2473 3142.21 1 1 -0.11 -2.26 S
+2467.73 3136.66 1.5 -1.39 S
+2454.51 3128.71 2.89 2.15 1.02 2.64 -2.78 -1.62 -0.26 -1.91 -0.87 -1.26 S
+2510.37 3118.01 1.5 -2.15 2.02 0.14 0 1.75 -1.76 1.02 -1.76 -0.76 S
+2514.65 3119.64 1 -2.63 2.02 -0.13 1.75 1 -1 0.89 1.26 1.39 S
+2519.68 3120.16 -1.02 2.13 -1.99 -1.37 -2.02 -1.28 S
+2515.15 3115 1.26 -1.26 1.63 0.63 0.76 1 -1.76 0.25 -1.89 -0.62 S
+2535.16 3132.12 1.13 -2.14 1.26 1.39 -0.62 2.28 0.99 1.39 -2.12 -1.15 -0.63 -1.76 S
+2545.33 3138.67 1.39 -1 1.13 1.37 1.13 1.26 -2.62 0.13 -1.02 -1.75 S
+2545.83 3141.82 0.63 -0.75 1.52 0.89 -2.02 1 -0.13 -1.13 S
+2456.77 3087.91 1.75 -0.62 2.28 1.75 3.15 -1.02 0.74 2.28 2.52 0.37 2.78 -1 2.38 1.39 
+2.78 -0.5 2.89 0 3.02 0.86 1.89 2.39 -3.15 0.39 1.52 2.25 2.13 1.39 0.75 2.28 
+-0.89 1.89 -2.13 0.88 -1.39 0 -1.25 -1.37 -0.89 0.88 1.15 1.39 S
+2478.8 3103.78 -0.52 1.75 -0.87 1.39 -0.63 1.76 -0.75 2.28 -2.39 0.89 -1 2.25 -0.52 2.78 
+-1.12 1.76 -2.12 1 -2.28 0 1.76 1.28 1.39 1.75 2.02 4.04 -0.26 1.89 -4.77 0 
+-2.39 -0.39 1.26 2.28 2.64 1.63 -0.39 1.39 -2.89 -0.36 -2.88 0.11 -1.26 -2.12 -1.39 -1.78 
+-0.5 -1.76 -1.52 1.02 -1.12 -0.89 1.25 -1.39 2.13 -0.12 -1.63 -2.52 -0.13 -1.89 2.02 0.89 
+-0.5 -2.28 -2.38 -1.62 2.02 -0.13 -0.13 -1.76 1.76 2.13 1.25 -1.89 -1.52 -3.02 1.02 -1.89 
+2.52 0.76 2.62 0.87 -1.26 -2.25 1.39 -1.76 1.75 -0.13 -1.25 -2.28 -0.11 -2.25 -2.02 -0.37 S
+2465.08 3104.79 -3.28 0.63 0.5 -1.39 -1.26 -1.79 2.15 -0.11 -0.26 -2.65 -1.75 -0.89 -2.26 -1.26 
+0.5 -1.39 2.52 0.39 1.76 -0.52 1.75 -1.5 2.52 1.39 -1.39 -2.28 -1.76 0 -2.12 0.13 
+-1.65 -2.28 -1.99 -1.63 -2.28 -1.76 S
+2440.54 3100.37 0.52 -2.38 1.63 -1.52 3.14 0.26 2.76 0.76 2.91 1.63 3.38 0.26 0.76 2.14 
+0.75 2.26 0 2.78 -0.5 2.26 2.52 1.78 -0.39 2.63 -0.99 1.91 -2.15 0.63 -2.52 0.5 
+-2.63 -0.76 -1.65 -2.02 1.52 -1.12 -1.26 -1.26 -2.02 0.24 -2.25 0.13 -1.15 -1.76 1.64 -1.02 
+-1.89 -1.26 1.5 -1.89 1.78 -0.11 -2.14 -2.54 -1.26 -2.63 -2.02 0.11 S
+2514.52 3046.83 -0.26 -2.39 0.64 -1.76 2.4 -2.28 0.38 2.91 0.5 1.89 -0.5 1.75 -0.26 2.78 
+-0.87 -1.89 -2.02 -1.02 S
+2513.13 3037.89 0.13 -1.89 1.39 -2.25 0.13 -2.78 -0.13 -2.78 2.02 -1.75 1.37 1.89 1.75 0.13 
+0.63 2.39 0 2.38 -0.11 2.28 -0.63 2.26 -2.02 2.28 -2.02 -2.02 -1.39 -0.63 -1.12 0.5 S
+2533.14 3022.53 1.89 -2.15 1.5 0.13 3.15 -1.62 2.41 -0.26 1.76 -1.62 3.02 -0.14 0.5 1.89 
+-1 1.75 0.24 2.91 1.26 2.52 -2.89 -1.26 -3.28 -0.89 -2.52 -0.26 -2.02 0.76 -2.26 -0.12 
+-1.75 -1.63 S
+2572.13 3026.43 2.65 -1.52 0.13 -2.38 1 -1.26 1.89 0.24 1.49 -1.62 1.02 2.15 S
+2580.32 3022.03 2.26 -1.65 -1.76 3.14 -1.26 2.15 2.26 -0.13 -2.13 2.52 -2.39 1.15 -2.39 0.5 
+-2.02 -1.26 -0.76 -2.02 S
+2585.98 3013.71 2.25 0.5 2.38 -0.13 1.76 -0.76 2.91 0.76 3.02 0.76 -0.12 1.63 -2.02 -1.39 
+-0.24 1.39 -2.52 -0.63 -2.14 0.39 -2.02 -1.02 -0.63 0.89 -2.75 0 0.13 -2.39 S
+2625.11 3020.88 1.26 -1.63 2.63 0.13 2.02 1.26 0.37 1.39 1.78 0.5 -1.15 1.26 1.78 2.89 
+-2.15 -1.5 -2.02 -1.13 -1.75 -0.89 -0.76 -1.26 -2 -1.02 S
+2487.59 3029.45 2.14 -0.5 1.63 -1.26 1.39 2.26 -2.25 1.39 -2.91 -1.89 S
+2603.21 3022.89 0.76 -1.5 1.13 1.39 0.24 2.25 -2.13 -2.15 S
+2591.52 3038.39 0.87 0.63 0.39 -1.37 S
+2592.51 3034.38 0.39 -1.39 S
+2351.61 3037.26 1.75 -1.52 S
+2362.54 3030.34 2.91 -0.5 S
+2394.12 2970.75 1.02 -2.02 1.36 0.89 1.02 2.15 -1.76 -0.89 -1.65 -0.13 S
+2398.92 2968.36 0.5 -1.52 1.75 0.26 0 1.5 -1.52 0.63 -0.74 -0.87 S
+2406.71 2967.96 2.13 0.76 0.39 3.28 S
+2409.22 2972 1.63 0.39 0.63 1.37 -1.39 -0.37 -0.87 -1.39 S
+2409.22 2972 -2.39 -2.52 -0.12 -1.52 S
+2526.08 2825.89 1.52 -0.39 0.87 1.89 -1.37 0.89 -1.02 -2.39 S
+2974.46 2648.27 0.13 -0.89 0.13 -0.99 -0.89 -2.65 -0.89 -2.78 0.13 -1 0.13 -1.15 0.5 -0.11 
+0.63 -0.26 0.5 -0.13 0.63 -0.26 0.63 -0.24 0.63 -0.26 S
+2976.71 2637.54 0.89 1.26 1 1.26 1.39 1.52 1.39 1.63 0.5 -0.11 0.37 -0.14 1.52 2.02 
+1.63 2.26 0.52 0.26 0.63 0.37 0.87 0.13 0.89 0.26 0.63 -0.26 0.5 -0.26 0.63 -0.24 
+0.5 -0.26 0.63 -0.24 0.63 -0.26 0.5 -0.26 0.5 -0.24 0.39 -0.26 0.5 -0.24 1.39 1.63 
+1.39 1.76 1.5 2.78 1.52 2.91 1.13 0.74 1.13 0.63 0.89 0.76 1 0.76 1.52 1.75 
+1.49 1.78 0.89 0.74 0.74 0.76 0.39 -0.76 0.37 -0.87 0.76 0.24 0.63 0.13 0.76 0.26 
+0.63 0.37 2.52 2.52 0.87 0.76 0.89 0.75 0.76 0.26 0.74 0.24 0.52 -0.37 0.5 -0.5 
+0.37 -0.26 S
+3018.99 2665.52 0.39 -0.37 0.24 -0.26 0.39 -0.37 -0.13 -1.39 -0.26 -1.52 -0.5 -2.02 -0.63 -2.02 
+0.37 -0.37 0.39 -0.5 -0.26 -1.65 -0.24 -1.62 -0.26 -1.52 -0.26 -1.62 -0.74 -2.02 -0.63 -2.15 
+-1.65 -2.78 -1.63 -2.65 -1.25 -4.77 -1.76 -3.67 -1.89 -3.52 -1.52 -3.15 -1.63 -3.14 -1.62 -3.04 
+-1.52 -2.88 -1.63 -3.15 -1.79 -3.14 1.79 2.52 1.75 2.39 1.5 1.75 1.39 1.78 1.39 1.76 
+1.5 1.76 1.15 1.02 1.13 1.13 2.02 3.28 1.99 3.28 1.52 2 1.39 2.02 -3.03 -5.54 
+-3.02 -5.53 -1.76 -2.54 -1.76 -2.52 -2.15 -3.38 -2.13 -3.41 -1.39 -2.14 -1.39 -2.12 -0.74 -0.52 
+-0.76 -0.63 S
+2999.37 2606.55 -1.12 -1.62 -1.02 -1.52 0.39 0 0.38 -0.13 0 -1.26 1.75 2.65 1.89 2.64 
+2.15 3.28 2.12 3.28 -1.75 -3.41 -1.75 -3.52 -1.52 -2.52 -1.5 -2.54 -1.76 -2.63 -1.89 -2.64 
+-1.13 -1.39 -1.15 -1.26 0.39 -0.39 0.37 -0.5 -1.63 -3.14 -1.75 -3.15 -4.04 -6.81 -2.02 -3.26 
+-2.12 -3.28 -1.13 -1.39 -1.26 -1.26 -1.65 -2.52 -1.63 -2.54 -1.88 -2.89 -1.89 -2.78 -1.89 -3.01 
+-1.89 -2.91 -0.76 -1.5 -0.73 -1.52 -1.89 -2.78 -2.02 -2.63 0.76 0.37 0.63 0.37 -0.89 -1.5 
+-0.75 -1.65 -0.87 -1.5 -0.76 -1.52 -3.52 -5.04 -1.26 -2.02 -1.39 -1.89 1.39 0.87 S
+2957.36 2532.23 1.26 1.02 0.99 0.63 0.89 0.63 2 1.76 1.89 1.89 -3.52 -4.4 -3.52 -4.27 
+0.74 -0.26 -2.63 -2.89 -2.52 -3.04 -2.02 -2.64 -2.02 -2.76 -2.02 -2.65 -2.12 -2.64 2.38 2.02 
+2.39 2.13 0.76 0.52 0.89 0.5 1.13 0.76 1.26 0.63 0.37 0.13 0.39 0.11 -0.39 -1 
+-0.37 -1.13 -1.13 -1.88 -1.25 -2.02 0.63 0.24 0.63 0.13 2.5 2.64 2.41 2.65 2.63 3.02 
+2.78 3.04 2.75 3.14 2.91 3.28 3.02 3.52 3.02 3.54 2.52 2.89 2.65 2.9 S
+2979.62 2544.33 1.63 1.76 1.63 1.89 3.28 4.03 3.28 4.14 1.89 2.29 1.76 2.25 1.89 2.41 
+1.52 1.89 1.5 2.02 S
+2997.98 2567.01 1.52 2.13 1.37 1.76 1.39 1.78 1.52 1.75 1.89 1.89 1.49 2.02 1.52 2.14 
+1.5 2.02 1.39 1.99 1.52 2.15 1.38 2.02 1.64 2.39 1.5 2.4 1.65 2.26 1.89 3.02 
+1.89 2.91 1.88 3.02 1.63 2.91 1.63 2.75 1.65 2.91 2.13 3.52 2.02 3.54 2.15 3.54 
+1.89 3.38 1.75 3.41 1.89 3.41 1.89 3.38 3.52 7.08 1.13 2.13 2.25 4.29 1.89 4.02 
+1.78 4.16 1.89 4.04 2 4.78 2.02 4.79 2.02 4.77 1.63 4.17 1.65 4.16 1.63 4.02 
+3.52 9.34 1.75 4.77 1.26 3.28 1.13 3.4 1.25 3.28 S
+3075.84 2713.89 1.52 4.9 1.63 5.06 1.52 4.9 1 3.54 1.02 3.65 1 3.64 1.13 4.3 
+1.13 4.41 1.02 4.28 1 4.27 1.02 4.17 0.88 4.17 0.25 1.5 0.13 1.52 0.11 1.52 
+0.64 2.88 0.5 2.78 0.52 2.75 0.63 3.28 0.73 3.28 0.63 3.28 0.75 3.9 0.89 3.91 
+0.76 3.91 0.11 2.02 0.26 2.02 0.13 1.89 0.36 2.64 0.26 2.65 0.24 2.52 -0.5 -2.64 
+-0.62 -2.52 -0.63 -2.64 0.63 3.78 0.5 3.77 0.52 3.78 0.63 3.79 0.37 3.65 0.5 3.77 
+0.26 2.52 0.37 2.52 0.26 2.52 0 1.65 0.11 1.75 0 1.75 0.52 4.54 0.5 4.54 
+0 2.41 -0.13 2.39 S
+3100.89 2854.73 -0.13 3.14 0 3.28 0.13 4.03 0 4.02 -0.26 0.39 -0.37 0.37 -0.26 2.78 
+-0.24 2.78 0.13 3.28 0.11 3.27 0 3.02 -0.11 3.15 0.24 5.16 0.26 5.3 0 4.9 
+-0.13 4.8 -0.13 2.89 -0.24 2.91 -0.26 3.52 -0.37 3.54 -0.26 11.32 -0.37 4.54 -0.39 4.41 
+-0.24 4.8 -0.39 4.79 -0.5 2.25 -0.49 2.15 -0.37 2.39 -0.52 2.39 -0.23 -2.76 -0.13 -2.78 
+-0.37 0.76 -0.39 0.87 -0.49 4.8 -0.64 4.79 -0.5 4.53 -0.49 4.41 -0.76 4.54 -0.76 4.41 
+-0.76 3.64 -0.73 3.67 -0.76 3.78 -0.76 3.91 -0.89 4.64 -0.86 4.66 -0.64 1.02 -0.49 0.88 
+0.49 -4.54 S
+3085.54 3005.51 0.38 -4.41 0.89 -4.77 0.76 -4.79 0.24 -3.78 0.13 -3.67 0.63 -4.28 0.5 -4.14 
+0.39 -2.78 0.24 -2.78 0.49 -5.17 0.52 -5.16 0.24 -4.41 0.26 -4.54 0.37 -4.27 0.26 -4.3 
+0.37 -4.14 0.26 -4.17 0.11 -4.53 0.13 -4.54 0 -9.07 -0.13 -4.91 -0.11 -4.8 -0.26 -4.04 
+-0.26 -4.14 -0.11 -4.4 -0.13 -4.41 -0.5 -2.91 -0.63 -2.89 -0.39 -1.39 -0.49 -1.39 -0.5 2.78 
+-0.37 2.63 -0.12 3.17 -0.13 3.14 -0.5 0.63 -0.39 0.75 -0.63 1.13 -0.5 1.13 -0.24 1.52 
+-0.39 1.5 -0.37 1.89 -0.39 2.02 -0.74 -1.26 -0.63 -1.25 -0.26 3.67 -0.13 3.64 -0.5 0.63 
+-0.37 0.63 S
+3082.53 2908.9 -0.49 1.76 -0.39 1.75 0.13 3.54 0 3.54 0.13 2.88 0.14 3.02 -0.14 3.15 
+-0.12 3.17 -0.26 3.78 -0.24 3.77 0.5 1.26 0.5 1.13 -0.13 4.04 -0.24 3.91 0 3.91 
+-0.12 3.78 -0.63 1.52 -0.63 1.39 0 -9.33 -1 5.04 -0.39 -2.52 -0.37 -2.38 -0.63 0 
+-0.62 -0.13 S
+3077.5 2950.84 -1.26 0 -0.63 -0.63 -0.5 -0.62 -0.76 1.25 -0.63 1.39 -0.76 -0.39 -0.76 -0.24 
+0.63 -2.15 0.52 -2.14 0.11 -3.91 0 -4.01 -0.63 -1.26 -0.63 -1.39 -0.63 -1.25 -0.74 -1.26 
+-0.39 -3.91 -0.5 -3.91 0 -3.28 -0.13 -3.28 0.26 -2.52 0.24 -2.39 S
+3070.31 2914.95 -1 -3.03 -0.26 -6.04 -0.37 -3.54 -0.5 -3.41 0.63 -1.5 0.5 -1.39 -0.13 -3.14 
+-0.24 -3.04 -0.63 1.25 -0.63 1.39 -0.52 -0.63 -0.5 -0.63 -0.63 -2.89 -0.63 -2.91 0.13 3.28 
+0 3.27 -0.37 1.65 -0.5 1.63 -0.52 2.02 -0.5 2.14 -0.62 -0.52 -0.76 -0.37 -0.24 -2.52 
+-0.39 -2.39 -0.5 -1.39 -0.63 -1.26 -0.24 -2.28 -0.26 -2.39 -0.76 -1.02 -0.87 -1 -0.26 -5.29 
+-0.76 -3.41 -0.63 -3.26 -0.24 -3.16 -0.26 -3.28 -0.5 -2.89 -0.37 -2.91 -0.76 0.76 -0.63 0.89 
+-0.39 -3.28 -0.5 -3.28 0.39 -1.62 0.24 -1.64 -0.76 -3.65 -0.74 -3.53 -0.13 2.28 S
+3052.08 2847.05 -0.12 2.38 -0.14 3.15 -0.12 3.28 -0.74 -3.52 -0.76 -3.54 -0.76 -3.02 -0.75 -3.04 
+-0.14 -2.38 -0.11 -2.26 -0.26 -4.04 -0.76 -2.91 -0.87 -2.88 -0.63 -3.15 -0.76 -3.27 -0.76 -2.41 
+-0.76 -2.26 -0.73 -2.39 -0.89 -2.28 -0.89 -1 -0.87 -1.02 -1 -1.5 -1.02 -1.39 -0.76 -0.5 
+-0.87 -0.52 -0.89 -2.26 -0.87 -2.28 -1.52 -0.74 -1 -2.41 -1.02 -2.26 -0.74 -0.39 -1.52 -0.74 
+-0.75 -0.39 -0.87 -1.26 -0.89 -1.26 -0.89 -1.76 -0.86 -1.64 -0.89 -2.52 -1 -2.52 -0.76 -1.26 
+-0.87 -1.26 -2.02 -3.41 -1.65 -4.64 0.26 5.04 -1.62 -4.92 -1.52 -4.64 -0.5 -4.17 S
+3014.21 2764.91 -1 -4.41 -2.41 -4.93 -1.12 -5.27 -1.13 -5.93 -0.5 -4.3 -0.63 -4.14 -1.89 -6.29 
+-0.12 3.28 0.63 4.14 -2.02 -9.31 -0.11 3.89 -1.15 -5.16 0 -3.15 -1.62 -7.05 -0.76 -2.13 
+-0.76 -2.15 -0.37 -2.64 -0.37 -2.52 -0.52 -2.64 -0.63 -2.65 -0.74 -2.14 -0.76 -2.26 -1 -2.64 
+-1.02 -2.65 -0.87 -2.64 -1.79 -5.3 -0.73 -2.62 -0.76 -2.28 -0.76 -2.15 -1 -3.52 -1.39 -3.14 
+-1.39 -3.04 -1.63 -3.02 -1.52 -3.14 -0.76 -1.76 -0.73 -1.78 -1.02 -1.13 -0.86 -1.26 -0.76 -0.37 
+-0.63 -0.26 -1.63 -3.15 -1.52 -3.01 S
+3068.32 2936.98 0.63 1.15 0.5 1.26 0.5 -0.5 0.37 -0.52 S
+3070.31 2938.37 0.26 3.78 0.26 3.8 -0.26 1.37 -0.36 1.39 -0.52 -2.39 -0.37 -2.28 -0.63 0.26 
+-0.5 0.39 0.13 -3.91 0 -3.8 S
+2991.32 2595.46 -1.02 -2 -1.13 -2.02 0 -1.15 -0.13 -1.26 1.15 0.89 1 0.89 1.26 2.76 
+1.13 2.64 -0.37 0.39 -0.39 0.37 -0.74 -0.76 -0.76 -0.76 S
+2931.68 2502.39 -2.88 -2.91 -3.02 -2.88 -3.68 -3.8 -6.53 -6.53 -3.02 -2.91 -2.02 -2.02 -2.12 -2.02 
+-2.78 -2.64 -2.89 -2.52 -2.39 -2.39 -2.52 -2.25 -2.41 -2.65 -2.5 -2.52 -1.64 -1.91 -1.63 -1.89 
+1.75 1.15 1.89 1.26 1.39 0.76 1.37 0.87 -2.39 -2.39 -2.52 -2.38 3.04 2.38 2.89 2.26 
+2.12 1.78 S
+2899.21 2466.23 2.29 1.63 0.75 0.5 0.64 0.52 3.12 2.63 6.29 5.56 3.14 2.89 1.76 1.88 
+1.78 1.91 0.24 0.86 0.26 0.89 0 1.13 1 1.65 1 1.49 3.15 3.64 3.14 3.67 
+2.02 2.64 1.89 2.65 S
+2634.29 2299.43 -9.81 -2.25 -4.79 -1.02 -3.78 -0.89 -3.64 -0.73 -3.78 -0.76 -3.51 -0.76 -3.65 -0.63 
+-3.64 -0.76 -2.15 -0.26 -2.13 -0.24 -2.02 -0.39 -0.13 0.26 0 0.13 -0.13 0.24 0.89 0.39 
+0.89 0.26 0.87 0.37 -3.52 -0.63 -3.64 -0.5 -3.54 -0.63 -3.78 -0.75 -3.88 -0.63 -3.91 -0.63 
+-1.75 -0.5 -1.76 -0.39 -1.75 -0.36 -1.26 -0.39 -1.26 -0.24 S
+2563.71 2286.71 -1.39 -0.39 -1.89 -0.37 -1.89 -0.39 -1.89 -0.37 -1.12 -0.37 -1.26 -0.26 -1.13 -0.37 
+1 0.11 2.15 0 -0.89 -0.11 -1 -0.26 -0.89 -0.12 -3.28 -0.5 -3.38 -0.37 -3.41 -0.52 
+-2.76 -0.24 -2.64 -0.26 -2.75 -0.24 -2.78 -0.26 -0.26 -0.13 -0.11 -0.13 -0.26 -0.12 -0.26 0 
+-2.12 -0.24 -2.02 -0.26 -2.13 -0.13 -2.02 -0.24 0.24 -0.13 0.39 0 0.24 -0.13 0.39 0 
+-0.89 -0.24 -0.76 -0.13 -0.87 -0.13 -0.76 -0.26 6.29 0.52 3.28 0.11 3.14 0.26 2.13 0.26 
+2.15 0.24 2.13 0.26 2.02 0.37 3.27 0.39 3.25 0.37 3.15 0.5 3.14 0.39 4.28 0.5 S
+2559.55 2283.31 4.27 0.63 4.3 0.5 4.27 0.63 4.41 0.63 4.28 0.76 4.41 0.63 4.27 0.75 
+2 0.26 1.89 0.24 1.89 0.26 2.02 0.37 1.63 0.13 1.78 0.26 1.63 0.24 1.76 0.26 
+3.41 0.63 3.38 0.76 3.28 0.63 3.38 0.76 -2.12 -0.39 -2.14 -0.24 -2.13 -0.39 -2.15 -0.26 
+2.39 0.52 2.28 0.37 2.39 0.5 2.25 0.52 2.28 0.5 2.39 0.5 2.25 0.63 2.26 0.5 S
+2627.73 2295.4 2.15 0.39 2.13 0.5 2.14 0.37 2.15 0.39 2.76 0.75 2.78 0.63 2.75 0.63 
+2.78 0.74 1 0.13 0.89 0.26 1 0.24 1 0.13 2.91 0.76 2.75 0.89 2.91 0.76 
+2.88 0.74 3.64 1.15 S
+2666.36 2304.86 3.52 1 3.64 1.13 3.54 1.15 5.27 1.63 5.17 1.89 5.04 1.75 5.16 1.89 
+5.54 2.02 5.41 2.02 5.53 2.15 5.66 2.15 -3.53 -1.39 -3.52 -1.26 -3.39 -1.26 -3.41 -1.26 
+-2.25 -0.75 -2.15 -0.76 -2.25 -0.76 -2.15 -0.76 -3.52 -1.26 -3.51 -1.13 -3.54 -1.26 -3.52 -1.13 
+-3.64 -1.15 -10.94 -3.38 -3.67 -1.02 -3.64 -1 -3.65 -1.02 -3.64 -1 -2.88 -0.76 -3.02 -0.76 
+-2.91 -0.76 -2.75 -0.62 -3.64 -1 -3.64 -0.89 -3.67 -1 -3.64 -0.89 S
+2627.73 2295.4 1.15 0.39 1 0.24 1.13 0.39 1 0.37 -1.87 -0.5 -1.89 -0.39 -3.78 -0.74 
+-1.65 -0.26 S
+2622.83 2294.9 -1.63 -0.26 -1.52 -0.37 -1.63 -0.26 0.76 0.26 0.63 0.26 0.63 0.24 0.63 0.25 
+-2.29 0 3.54 0.87 3.52 1.02 3.52 0.89 1.75 0.5 1.78 0.63 1.76 0.5 S
+2693.79 2327.91 -2.02 -0.76 -2.02 -0.63 -1.89 -0.62 -2.52 -0.89 -2.52 -0.87 -2.49 -0.89 -2.52 -1 
+-1.26 -0.52 -1.89 -0.63 -2.02 -0.5 -1.89 -0.63 -2.52 -0.86 -2.64 -0.76 -2.52 -0.89 -3.64 -1.13 
+-3.64 -1.02 -3.64 -1.13 -2.65 -0.87 -2.62 -1.02 -2.78 -0.89 -5.28 -1.89 -1.15 -0.5 -2.25 -1 
+-0.63 -0.25 -0.5 -0.37 -0.63 -0.39 0.24 -0.13 S
+2633.9 2306.86 0.39 -0.11 0.24 -0.13 0.52 -0.26 0.11 -0.13 0.13 -0.11 0 -0.39 -2.65 -0.75 
+-2.5 -0.87 -2.65 -0.76 -1.65 -0.5 -1.49 -0.63 -1.65 -0.52 -3.88 -1 -3.91 -0.89 -4.02 -1 
+2.63 0.5 2.64 0.5 2.65 0.63 0.37 -0.11 0.76 0 -2.15 -0.63 -2.25 -0.63 -2.15 -0.52 
+-1 -0.5 -1 -0.36 -1.13 -0.39 -1.78 -0.63 -3.51 -1 -1.39 -0.5 -1.37 -0.39 -1.39 -0.5 
+1.13 0.13 1.25 0 1.26 0.14 3.02 0.63 3.14 0.63 3.14 0.74 1.5 0.13 3.04 0.52 
+3.25 1 1.65 0.5 1.75 0.5 1.89 0.52 S
+2626.87 2299.7 1.75 0.5 1.89 0.37 1.76 0.26 1.88 0.37 4.28 1.02 8.55 2.26 1.89 0.63 
+2.02 0.63 2.02 0.76 -1.39 -0.26 -1.39 -0.24 -1.39 -0.26 0 0.26 0.13 0.13 2.64 0.87 
+2.65 0.89 2.63 0.89 -0.37 0.11 -0.26 0 -0.37 0.13 0.13 0.26 0.13 0.24 0.24 0.26 
+2.28 0.89 2.39 0.87 2.25 0.89 1.76 0.63 1.76 0.76 1.65 0.76 1.63 0.74 1.64 0.63 
+1.5 0.76 2.39 1.02 2.52 1 2.28 1.02 2.39 0.87 2.26 0.89 2.25 0.87 0.89 0.52 
+0.76 0.5 0.86 0.5 0.5 0.39 0.52 0.37 0.37 0.37 2.52 1.26 1.13 0.63 S
+2694.79 2326.89 -0.13 0.13 0 0.13 -0.11 0.26 -0.26 0.11 -0.26 0.13 -0.24 0.26 S
+2665.47 2319.59 -1.87 -0.75 -2.02 -0.89 -2.02 -0.87 2.14 0.63 2.13 0.5 2.26 0.5 -0.24 0.39 
+-0.12 0.23 -0.26 0.26 S
+2944.27 2977.67 1.49 -3.51 1.76 -2.28 2.28 -1.89 2.64 -2.13 1.26 0.5 2 -2.15 2.15 -1.89 
+1.63 -3.28 2.15 -0.36 2.26 -1.02 0.63 -2.64 1.76 -3.15 1.75 -4.9 2.28 -0.13 1.13 -2.15 
+2.13 -1.99 0.89 -3.17 2.02 -3.78 1 -3.14 2.02 -2.89 2.25 -3.67 2.02 -1.26 1 -2.25 
+1.89 -2.41 2.78 -2.25 2.02 -1.25 1.89 -3.15 1.25 -0.5 0.24 2.76 1.39 1.25 1.63 -1 
+-0.37 4.78 S
+2997.48 2922.75 -0.37 5.42 -0.75 4.4 -0.89 5.93 0 5.29 -1.39 2.02 -1.5 1.89 -1.52 -1.75 
+-1.26 3.01 -1.37 1 -1.78 5.16 -1.76 -2.02 -1.63 1.64 0 4.41 -0.5 3.78 -2.14 2.02 
+-1.26 -1.39 -0.76 4.4 -1.37 -0.73 -2.41 2.62 -1.63 -1 -2.65 2.28 -1.37 -2.41 -2.28 2.52 
+-2.13 2.91 -2.28 0.87 -2.13 0.26 -2.02 1.13 -2.02 2.15 -1.76 2.38 -2.13 1.02 -2.28 -1.65 
+-1.89 -1.89 -2.12 1.13 -1.89 -1.89 S
+2997.98 2909.03 1.63 0.76 2.14 -0.52 -0.12 -2.52 1.65 0.76 2 0.89 1.52 -1.02 1.89 1.02 
+1.26 2.02 1.76 1.75 1.26 0.5 1.75 -0.75 1.63 0.75 1.52 0.76 1.52 1.52 S
+3019.38 2914.95 1.63 0.11 1.52 3.4 1.5 0 1.39 -0.24 1.26 0.5 -0.39 4.14 -0.49 5.04 
+-1.5 -0.73 -1.25 -2.65 -1.89 -0.26 -0.76 3.91 -1.26 1.26 -1.52 -0.89 -1.89 -0.37 -1.75 0.76 
+-0.37 -5.79 -1.25 -1.39 -1.63 -0.89 -1.52 -1.63 -1.25 -0.5 -1.26 3.15 -1.62 -0.89 -1.76 0.76 
+-1.15 -0.26 -1.13 -2.88 -2.02 -0.26 -0.37 -5.3 -0.62 -4.02 S
+3026.28 2922.87 1.39 -0.24 1.26 -2.41 0.89 6.05 -1.39 1.13 -2.15 -4.54 S
+3031.45 2920.49 1.39 1.62 1.89 0.64 1.26 2.54 0.99 3.25 1.02 2.28 0.5 1.26 1.25 2.78 
+0.5 1.39 S
+3040.25 2936.24 0.76 0 0.74 -0.13 0.63 1 0.63 0.89 S
+3043.01 2938 0.63 0.5 0.76 0.39 0.5 1.36 0.52 1.39 0.74 0.5 0.63 0.52 0.39 1.63 
+0.37 1.76 S
+3047.55 2946.05 0.49 2.02 0.64 2.15 0.63 2.26 0.63 2.28 -1 -0.5 -1 -0.63 -0.13 -3.77 
+-0.25 -3.8 S
+3047.55 2946.05 -0.63 0.63 -0.76 0.52 -1 -2.78 -2.15 0 -0.74 -0.13 -0.52 -1.76 -0.5 -1.76 
+-0.5 -2.28 -0.5 -2.26 S
+3040.25 2936.24 -0.76 0.87 -0.87 0.89 -1.52 -2.15 -1.89 -0.63 1.13 -3.52 -1.13 -0.63 -1.63 -2.02 
+-1.52 0 -0.87 -3.14 0.24 -5.42 S
+3051.46 2956.38 0.87 2.65 0.63 2.78 -0.74 -0.37 -0.89 -0.39 0.14 -2.38 0 -2.28 S
+3053.84 2968.36 0.63 1.26 0.5 1.26 -0.13 3.02 -0.11 3.04 -0.63 -1.91 -0.63 -1.89 0.24 -2.39 
+0.13 -2.39 S
+3040 2925.39 0.39 -1.5 0.36 -1.52 0.63 0.76 0.63 0.89 0.5 -0.39 0.5 -0.37 0.63 -1.02 
+0.76 -1.13 0.5 2.28 0.52 2.25 -0.76 1.63 -0.76 1.52 -0.75 0.49 -0.76 0.52 -1.26 -1.78 
+-0.62 -1.39 -0.5 -1.26 S
+3052.08 2931.08 0.5 1.37 0.63 1.39 0.5 1.89 0.39 1.89 0.24 3.8 0.13 3.78 0.37 2.88 
+0.26 2.91 0.5 2.02 0.39 2.02 0.37 2 0.37 2.02 0.39 2.52 0.24 2.52 0 5.55 
+-0.5 -1.13 -0.5 -1.02 -0.37 -1.63 -0.39 -1.52 -0.5 -1.75 S
+3055.1 2962.57 -0.63 -1.65 -0.5 -2.26 -0.5 -2.15 0 -4.91 -0.39 -2.02 -0.5 -1.89 -0.37 -1.75 
+-0.25 -1.79 -0.26 -4.77 0.26 -4.17 0.13 -4.14 S
+3063.52 2992.54 -0.11 3.15 -0.12 3.17 -0.64 3.28 -0.62 3.14 0.24 -3.04 0.13 -3.02 0.63 -3.27 
+0.5 -3.41 S
+3064.78 3020.38 -0.37 3.9 -0.5 3.91 -0.89 4.17 -0.87 4.28 -0.89 2.78 -1 2.64 0.63 -3.28 
+0.63 -3.41 0.74 -3.64 0.63 -3.66 1.02 -3.91 0.87 -3.78 S
+2990.82 2950.09 1.63 1.02 1.26 -1.25 0.37 -4.04 2.91 -0.39 -0.63 4.79 -1.13 -0.5 -1.26 3.15 
+-1.65 3.41 -1.25 -2.41 -0.24 -3.77 S
+3000 2948.2 1.39 0.63 -0.13 5.29 S
+3001.26 2954.12 -2.02 -0.5 0.76 -5.42 S
+3021 2929.82 1.39 1.63 1.37 1.76 -1 -4.78 -1.76 1.39 S
+2995.33 2988.76 1.52 -4.78 1.5 -2.02 1.02 -4.41 2.13 -1.02 1.88 -3.27 1.02 -4.54 1.63 -4.53 
+1.39 -5.17 1.75 1.39 1.13 2.65 0.63 2.78 1.65 -6.69 0.99 3.41 1.26 1.89 0.63 4.03 
+2.13 -1.02 1.15 2.78 1.5 -2.02 1.02 -3.64 0.74 3.14 0.76 4.41 0.76 4.54 -0.76 5.54 
+-0.76 7.81 -1.89 3.54 -0.11 5.8 0 4.9 -0.63 5.16 -1.39 5.93 -1.13 5.42 -0.52 4.28 
+1.02 2.28 0.76 3.52 -1.65 1.65 -1.89 1.13 -1.99 1.89 -0.63 4.27 -2.02 2.28 -2.15 3.39 
+-0.87 5.29 -1.89 5.66 S
+3005.04 3056.4 0.37 4.67 -2.02 2.02 0.13 4.04 0 4.04 -1.62 -0.39 -2.02 0.5 -1.39 -1 
+-2 4.28 -2.02 0.26 -1.39 0.89 1.25 -5.17 0.38 -5.16 1.39 -4.43 0.76 -7.05 1.5 -3.52 
+-1.24 -3.04 -0.12 -4.52 1 -7.31 0.13 -4.66 0.76 -4.8 -0.13 -5.04 -1.02 -3.14 -0.87 -2.89 
+1.25 -5.8 1.13 -6.81 -1.39 -1.26 -1.63 -1.63 -1.89 0.11 0 -5.27 1 -5.55 S
+3028.17 2993.55 2.02 -6.05 1.02 2.15 1.63 -4.4 1 -6.43 0.89 -6.69 0.87 -4.03 1.02 1.75 
+0.5 1.39 0.5 1.52 -0.63 2.38 -0.62 2.52 -0.37 2.78 -0.5 2.78 -0.52 2.65 -0.63 2.52 
+-1.12 5.16 -1.63 4.41 0 5.29 S
+3031.58 3003.25 0.5 0.87 0.37 0.89 0.39 -1.63 0.5 -1.78 0.37 -2.52 0.39 -2.52 0.76 -1.52 
+0.74 -1.63 0.76 -0.13 0.76 -0.24 0.63 -3.28 0.63 -3.41 0.63 0.13 0.63 0 0 2.13 
+0.13 2.02 0.74 -4.01 0.89 -4.04 0.76 -1.13 0.63 -1.15 0.24 3.04 0.13 2.88 -0.76 3.15 
+-0.63 3.14 -0.87 1.52 -0.75 1.52 -1 1.89 -0.89 1.89 -1.63 1.63 -0.26 5.04 -0.76 1.65 
+-0.87 1.52 -0.63 1.13 -0.76 1.13 -1 1.64 -1.12 1.5 0.11 2.65 0.26 2.64 -0.26 2.78 
+-0.11 2.75 -0.26 3.04 -0.26 3.15 0.39 1.39 0.5 1.5 -0.76 0.89 -0.87 0.89 -0.13 -2.28 S
+3029.82 3033.98 -0.26 -2.26 -0.12 -2.15 -0.11 -2.02 -0.52 -1.26 -0.37 -1.13 0.5 -6.05 -1 -2.38 
+-1.39 3.64 -1.63 0.13 -1.78 5.8 -1.13 6.05 0.39 2.39 0.74 0.89 0.52 2.76 0.87 2.91 
+0.39 1.25 0.74 2.52 0.39 1.26 0.63 0.37 0.76 0.39 0.11 1.76 0.26 1.75 0 2.29 
+0.13 2.38 -0.62 3.54 -0.63 3.64 -0.76 2.78 -0.62 2.75 -0.63 0.65 -0.63 0.5 0.37 -1.89 
+0.26 -1.88 0.49 -2.54 0.39 -2.52 0.11 -2.52 0.26 -2.64 -0.5 -1.5 -0.39 -1.52 -0.11 -1.52 
+-0.12 -1.5 -0.63 -0.13 -0.5 -0.25 -1.13 -1.76 -1.15 -2.02 -1.37 -0.87 1.49 -6.82 -1.12 -3.28 
+1 -3.52 S
+3021.38 3030.46 1.39 -5.29 1.39 -4.92 0.37 -4.78 0.89 -4.79 1.5 -5.93 1.02 -5.66 0.24 -5.54 S
+3029.05 3075.3 0.89 -1.5 1 -1.39 0.87 -1.89 0.89 -1.89 0.75 -2.54 0.76 -2.39 1 -1.26 
+0.89 -1.26 0.87 -0.37 1.02 -0.52 -1.26 1.52 -1.15 1.52 -0.87 2.02 -0.89 1.99 -0.87 2.91 
+-1.02 2.78 0.26 1.39 0.13 1.5 -0.75 1.02 -0.76 0.99 -0.37 2.39 -0.39 2.52 -1 2.65 
+-1.13 2.52 0.38 -2.89 0.26 -3.02 -0.89 1.37 -1 1.39 -0.89 2.65 -0.87 2.64 0.5 -2.52 
+0.38 -2.38 0.75 -2.41 0.89 -2.39 0.73 -2.64 0.89 -2.52 S
+3042.77 3022.27 0.87 -1.5 0.89 -1.52 0.63 0.37 0.63 0.39 S
+3045.79 3020.01 -0.13 2.14 -0.13 2.26 -0.74 1.88 -0.75 1.89 -0.5 -0.75 -0.52 -0.87 -0.11 -2.14 
+-0.13 -2.15 S
+3045.29 3032.86 0.76 0.13 0.87 0.13 0.13 1.63 0 1.63 0.5 0.76 0.49 0.89 0.76 1.25 
+0.76 1.39 0.63 -0.13 0.76 -0.13 -0.76 2.41 -0.63 2.52 -1.02 1.5 -0.87 1.52 -0.26 -1.39 
+-0.24 -1.39 -0.76 0.26 -0.63 0.24 -0.13 -2 -0.24 -2.02 -0.39 -1.89 -0.49 -1.78 0.36 -2.76 
+0.39 -2.78 S
+3035.72 3030.84 0.63 1.89 0.5 1.88 S
+3039.5 3046.33 0.5 2.28 0.5 2.26 -1 0.26 -1 0.24 1 -5.04 S
+3036.48 3079.34 0.76 0 0.63 -0.13 -0.26 2.39 -0.24 2.4 -0.63 -0.12 S
+3036.74 3083.88 -0.63 -0.13 0.24 -2.14 0.13 -2.26 S
+3040.39 3105.17 1.25 -1.26 1.13 -1.26 -0.13 1.89 -0.26 2.02 -1.99 2.52 0 -3.9 S
+3041.64 3069.64 0.63 0.76 0.5 0.76 0.37 0.73 0.25 0.76 0.88 -2.39 0.89 -2.38 0.63 -0.26 
+0.63 -0.13 0.13 1.52 0.24 1.52 -0.11 1.89 0 2.02 -0.12 2.76 -0.26 2.78 1.02 -3.41 
+0.99 -3.41 -0.12 -1.89 -0.24 -1.75 0.37 -2.65 0.38 -2.75 -0.24 -1.02 -0.39 -0.99 0.14 -1.65 
+0.26 -1.62 0.37 0.36 0.26 0.5 0.74 -0.74 0.89 -0.75 0.63 -1.65 0.64 -1.76 0.89 -2.28 
+0.74 -2.39 0.26 1.26 0.13 1.26 -0.76 4.16 -0.89 4.27 S
+3052.32 3061.07 0.89 -0.76 0.76 -0.73 0.63 0 0.76 -0.14 0.63 -0.26 0.63 -0.24 0.24 1.13 
+0.37 1.26 0.52 0.76 0.5 0.74 0.63 0.25 0.63 0.14 1 1.52 0.63 -0.13 0.63 0 
+0.76 -1.13 0.76 -1.15 2.52 -6.55 1.13 -3.38 1.25 -3.67 1 -2.89 1.02 -3.02 -0.14 -2.15 
+0 -2.02 0.76 -3.78 0.63 -3.66 0.74 -5.16 0.76 -5.04 0.39 1.65 0.24 1.63 -0.24 3.54 
+-0.13 3.52 0.24 1.78 0.13 1.75 0.13 2.39 0 2.39 0.63 -1.76 0.76 -1.63 0.63 -1.52 
+0.74 -1.63 0.76 -1.15 0.76 -1.26 0.26 0.89 0.24 0.89 0.13 1.63 0.26 1.52 0.37 0.5 S
+3079.25 3036.13 0.5 0.5 -0.37 3.91 -0.39 3.91 -1 5.03 -0.89 2.91 -0.87 2.75 -0.39 2.64 
+-0.24 2.65 -0.63 2.91 -0.5 2.76 -1.02 4.54 -1 4.53 -0.13 1.89 0 1.78 0.26 -0.13 
+0.37 -0.13 0.63 0.13 0.5 0.26 0.13 0.87 0.14 1.02 1.13 -3.28 1.26 -3.15 1 -2.64 
+1.02 -2.65 0.87 -1.65 1.02 -1.75 0.75 -1.39 0.74 -1.39 1.52 -4.77 0.13 1.13 0.11 1.13 
+0.13 1.39 0.13 1.52 0.13 1.5 0.13 1.52 0 1.13 0.11 1.26 0.89 -2.25 0.76 -2.28 
+-0.39 3.14 -0.37 3.17 -1.26 4.78 -1.26 4.67 0 -3.02 -0.24 -0.26 -0.39 -0.13 S
+3082.27 3076.56 -1 4.16 -1.02 4.28 0.26 -3.52 -0.26 -0.52 -0.24 -0.62 -2.52 9.07 0.5 -3.52 
+0.5 -3.41 -1.26 3.14 -1.26 3.02 -1.62 4.8 -1.63 4.66 -0.52 0 -0.5 0.14 -1.13 2.02 
+-1.25 2.13 -1.13 2.78 -1.13 2.64 -0.52 2.39 -0.5 2.39 -0.5 2.41 -0.5 2.39 -1.52 4.04 
+-1.63 4.04 -0.76 0.86 -0.76 0.89 0.63 -3.14 0.76 -3.28 -0.76 0.24 -0.63 0.13 0.13 -1.39 
+0 -1.5 -1.76 4.4 -1.76 4.28 -1.13 1.75 -1.02 1.65 -0.5 0.13 -0.5 0 -0.76 0.37 
+-0.63 0.26 -0.49 -0.26 -0.37 -0.37 -0.52 -0.26 -0.37 -0.25 0 -2.76 -0.5 -0.5 S
+3050.2 3126.71 -0.39 -0.63 -0.24 -0.52 -0.26 -0.63 -0.37 -0.76 -0.26 -0.87 -0.24 -0.75 -0.26 -0.76 
+-0.5 -0.5 -0.5 -0.63 0.13 -1.52 0.11 -1.5 -0.24 -0.89 -0.26 -0.76 -0.37 -0.76 -0.26 -0.76 S
+3046.29 3114.47 -1.5 0 -0.52 -0.24 -0.63 -0.26 0.76 -3.91 0.76 -3.77 1 -3.4 1.02 -3.26 
+0.24 -2.28 0.26 -2.26 0.87 -3.79 1.02 -3.91 0.76 -2.89 0.63 -2.9 0.86 -3.28 0.89 -3.39 
+-0.13 -1.25 0 -1.26 -0.89 0.63 -0.74 0.76 -1.15 2.52 -1.12 2.39 -0.37 -0.26 -0.5 -0.24 
+-1.13 2.39 -1.15 2.39 -0.99 3.54 -1.14 3.41 -1.52 3.01 -1.63 3.02 0 -2.14 -0.12 -2.13 
+-0.87 0.63 S
+3039.25 3092.32 -0.75 0.5 -0.26 -4.04 0.63 -3.01 0.63 -2.91 0.26 -2.63 0.11 -2.64 0.89 -4.04 
+0.89 -3.9 S
+2952.2 3162.24 3.14 -3.66 2.25 -2.52 2.65 -3.28 1.89 0.39 -1.76 2.89 1.5 0 1.65 -4.28 
+2.12 -3.04 1.13 1.89 -1.76 5.29 1.52 0.52 3.14 -1.65 -2.28 3.15 -1.76 2.02 1.39 0.89 
+3.15 -2.41 1 1.15 -0.5 2.64 -2.26 0.63 -1.88 1.5 -0.39 2.64 -1.37 -1.52 -0.89 -1.13 
+0 -1.89 1.26 -3.78 -0.89 -1.13 -2.75 2.76 -3.64 3.41 -2.64 4.54 -2.26 5.29 -2.38 4.67 
+-2.78 4.41 -1.89 0.5 -2.89 3.4 -3.41 4.67 1.65 -3.91 -0.39 -1.78 -1.39 -0.74 0.52 -2.78 S
+2940 3182.01 2.75 -4.17 2.28 -3.78 2.26 -1.89 3.28 -5.04 2.62 -3.41 -0.99 -1.5 S
+2987.67 3088.78 -0.5 6.19 -1.15 3.91 -1 4.91 -2.02 5.42 -0.36 3.02 -1.52 6.06 -3.78 5.03 
+3.28 -7.68 1.89 -6.31 1.13 -4.28 1.39 -6.06 0.89 -4.77 1.75 -5.43 S
+2967.29 3144.83 2.26 -1.37 2.64 -2.9 1.76 -1.13 -1.52 4.77 -2.62 3.9 -1.78 0.63 -0.62 -1.63 
+-0.11 -2.28 S
+2972.94 3159.83 2.64 -2.76 1.39 0.87 2.26 -4.28 -0.5 -1.65 3.02 -4.77 0.5 1.25 3.04 -4.66 
+-0.39 3.53 -2.25 2 -2.15 3.28 0 3.91 -3.14 3.77 -2.25 3.17 -2.26 1.75 0.5 -3.54 
+-0.39 -1.88 S
+2982.64 3130.49 -0.13 3.78 0.89 0.63 S
+2983.4 3134.89 2.13 -3.41 1.02 -4.41 2.13 -2.02 1.75 -0.89 -0.99 3.91 -2.52 3.28 0.99 0.39 
+-1.62 4.27 1.76 -1.39 -0.24 3.67 -2.15 3.38 -0.5 -2.25 -2.15 3.41 -2.64 4.02 2.15 -4.28 
+1.13 -4.41 -2.02 3.78 -0.63 -1.65 -2.88 5.16 -0.24 -3.39 -1.26 1.5 -0.63 -2.63 2.13 -2.28 
+2.52 -4.41 2.02 -3.78 S
+2998.25 3103.02 1.63 -2.52 -1.76 4.54 -1.62 5.03 -0.13 2.52 2 -3.15 -0.24 2.65 -1.25 4.66 
+1 0.89 1.26 -0.76 1.52 -4.29 2.65 -5.17 1.37 -0.37 1.39 0.13 0.13 1 0.13 0.89 
+0.87 -0.5 0.89 -0.63 -1.13 3.28 -1.02 3.14 -0.86 1.13 -0.89 1 -0.76 0.75 -0.87 0.76 S
+3002.52 3118.01 -1.12 3.15 -0.76 2.28 -0.76 2.13 1 -1 1.02 -1.13 1.49 -2.15 1.52 -2.15 
+-1.26 2.65 -1.13 2.78 -1.02 2.64 -1 2.52 -1 1.88 -1.15 1.89 -1.5 1.76 -1.52 1.78 
+-1.37 2.52 -1.52 2.39 -2.65 2.26 -2.26 0.13 3.52 -5.16 1.13 -4.04 -0.87 -0.5 2.39 -5.16 
+0.26 -3.15 1.5 -4.77 -2.12 3.02 -1.02 -0.39 0.63 -3.78 1.39 -4.14 0.5 -4.3 0.89 -3.51 
+2.52 -5.43 S
+3056.73 3139.8 0.89 -1.63 0.76 -1.65 -0.26 1.65 -0.13 1.63 0.76 -1.26 0.89 -1.13 -0.25 1.63 
+-0.13 1.65 -0.63 2.39 -0.5 2.28 -0.5 2.39 -0.63 2.38 -1.63 4.54 -1.52 4.53 -2.26 5.55 
+-2.28 5.54 S
+3049.3 3170.29 -0.62 2.15 -0.64 2.13 -2.52 5.17 -2.62 5.16 -2.02 4.43 -2.02 4.41 -1.89 3.02 
+-1.75 3.02 1.39 -4.02 1.39 -3.91 2.88 -4.92 2.76 -5.04 0.76 -2.14 0.63 -2.13 2.91 -6.82 
+2.89 -6.66 0.63 -2.02 0.99 -4.04 0.63 -2.15 0.89 -3.38 1 -3.28 1.25 -5.55 0.26 -2.02 
+0.24 -1.89 S
+3036.22 3175.09 -0.63 2.25 -0.63 2.28 S
+3027.17 3208.33 0.63 0 0.63 0.13 0.63 0 0.63 -0.13 -0.37 1.26 -0.26 1.13 S
+3029.05 3210.72 2.26 -3.15 2.14 -3.28 2.52 -3.9 2.38 -3.77 -2.78 5.29 -2.76 5.3 -1.52 2.25 
+-1.37 2.28 -0.52 -0.5 -0.37 -0.52 S
+3029.05 3210.72 -0.49 0.13 S
+3028.56 3210.85 -0.39 0 -0.24 -0.5 -0.39 -0.5 -0.11 -0.76 -0.26 -0.76 S
+3036.22 3206.58 1.52 -2.65 1.63 -2.78 1.52 -2.65 1.13 -1.62 1 -1.65 1.15 -1.62 0.5 -0.64 
+0.63 -0.75 0.5 -0.63 -1.52 3.41 -1.5 3.51 -1.65 3.54 -0.62 0.76 -0.74 0.76 -0.62 0.73 
+-2.78 3.78 -1.39 1.91 0.52 -1.15 0.74 -2.25 S
+3039.5 3206.08 0.37 -0.26 0.52 -0.13 0.36 -0.13 0.13 0.13 0.24 0.13 0.13 0.13 S
+3049.3 3190.32 0.76 -0.89 0.89 -1 0.74 -0.89 S
+3037.37 3216.41 0.24 -0.13 0.26 -0.26 0.37 -0.13 0.13 0 0.26 0.13 0.24 0 0.26 -0.13 
+0.24 -0.11 0.26 -0.26 S
+3032.96 3229.88 1.63 -2.65 1.76 -2.91 1.65 -2.76 0.87 -1.26 0.89 -1.39 0.74 -1.25 1.15 -1.65 
+1.13 -1.76 1.26 -1.75 S
+3051.2 3193.34 1.13 -2.26 1.02 -2.15 1.13 -2.26 1.52 -2.78 0.87 -1.39 -0.75 1.88 -0.74 1.89 
+-0.76 1.89 -0.39 1.15 -0.5 1.26 -0.37 1.37 -1.65 3.54 -1.63 3.54 -1.63 3.52 -0.26 -0.26 
+-0.14 -0.11 -0.24 -0.13 1.26 -3.02 1.13 -2.78 1 -2.91 S
+3051.82 3196.75 1.13 -1.63 1.02 -1.65 1 -1.75 -0.87 2.25 -0.89 2.28 -0.89 2.25 -1.13 1.89 
+-1 1.89 -1.13 1.78 1 -2.41 0.89 -2.52 0.86 -2.39 S
+3080.64 3144.21 1.39 -3.78 1.36 -3.77 1.52 -3.91 1.39 -3.91 S
+3086.3 3128.84 1.37 -3.91 1.15 -3.52 1.26 -3.67 2.26 -7.29 1.13 -3.67 -0.89 3.17 -0.87 3.14 
+-1 3.28 -1.02 3.15 -1 3.27 -1.39 3.91 -1.26 3.77 -1.39 3.78 -1.39 3.64 -1.37 3.67 
+2 -5.55 0.89 -2.64 1 -2.78 0.89 -2.76 -1.13 3.41 -1.25 3.25 -2.52 6.56 -1.13 3.14 S
+3094.73 3103.91 1.52 -4.8 1.36 -4.78 1.39 -4.92 2.78 -10.07 -0.52 2.15 -0.5 2.13 -1 4.29 
+-0.5 2.13 -1.02 2.91 -0.87 2.89 -0.89 2.78 -0.87 2.65 -0.89 2.64 S
+3119.14 2877.54 -0.39 -6.32 -0.5 -6.29 -0.5 -6.43 -0.63 -6.55 -0.37 -3.78 -0.39 -3.91 S
+3116.36 2844.27 -0.36 -3.91 -0.39 -3.91 -0.5 -3.91 -0.24 -2.52 -0.39 -2.52 -0.24 -2.52 -0.39 -2.52 
+-0.37 -2.52 -0.26 -2.52 -0.37 -2.65 -0.39 -2.52 -0.5 -2.65 -0.37 -2.64 -0.39 -2.65 -1 -5.55 
+-0.5 -2.76 -0.5 -2.91 -0.62 -3.65 -0.76 -3.91 -0.76 -3.77 -0.87 -3.9 -0.76 -3.91 -0.13 -0.62 
+-0.12 -0.76 -0.13 -0.63 -0.11 -0.76 0 -0.75 0.74 3.91 0.89 3.9 0.89 3.78 0.74 3.79 
+0.75 3.78 0.64 3.64 0.75 3.78 0.63 3.67 0.63 3.64 0.63 3.52 0.24 2.15 0.39 2.02 
+0.24 2.15 0.26 2.02 0.26 2 1 6.82 0.37 3.28 0.52 3.41 0.36 3.25 0.5 4.17 S
+3116.36 2839.11 0.39 4.04 0.5 4.14 0.37 4.03 0.37 3.91 0.13 2.39 0.13 2.41 0.13 2.26 
+0.13 2.28 0.11 2.25 0.13 2.29 0.13 2.12 0 2.15 0.13 2.15 0.13 2.02 S
+2415.25 2287.09 -2.02 0.26 -2 0.36 -1.88 0.26 2.52 0 -3.04 0.24 -3.12 0.13 -3.14 0.26 
+4.27 -0.5 4.15 -0.52 4.27 -0.5 S
+2988.54 3317.93 -0.63 0.89 -0.74 0.89 -0.75 0.86 -0.63 0.89 -0.76 1 -0.76 0.89 -0.76 1 
+-0.74 1.02 -0.75 0.87 -0.89 1.02 -0.76 1 -0.86 1.02 -0.76 1 -0.87 1.13 -0.89 1.02 
+-0.89 1 -0.87 1.15 -0.89 1.13 -0.87 1 -1.02 1.15 -0.87 1.13 S
+2971.57 3338.98 -1.76 2.02 -1.78 2.02 -1.75 2 -1.76 2.14 -1.75 2.02 -1.89 2.02 -1.89 2.15 
+-1.89 2.12 -1.88 2.02 -2.02 2.14 -1.89 2.13 -2 2.15 -2.02 2.15 -2.15 2.12 -2.13 2.28 
+-2.02 2.14 -2.15 2.13 -2.25 2.28 -2.13 2.15 -2.28 2.25 -2.25 2.26 -2.39 2.28 -2.28 2.26 
+-7.04 6.55 -3.53 3.27 -10.94 9.84 -3.78 3.28 -3.78 3.14 -3.88 3.28 -3.91 3.28 -3.91 3.14 
+-4.02 3.15 -4.03 3.14 -4.02 3.28 -4.16 3.04 -8.29 6.3 -4.28 3.02 -4.27 3.14 -4.41 3.04 
+-8.81 6.04 -4.4 2.9 -4.54 3.02 -4.52 2.89 -2.15 1.28 S
+2822.61 3468.23 -4.03 2.52 -2 1.26 -1.88 1.13 -2.02 1.26 -1.89 1.13 -2.02 1.13 -1.89 1.15 
+-1.89 1.13 -1.75 1 -1.89 1.15 -1.89 1 -1.76 1.02 -3.52 2 -1.75 1.02 -1.76 1 
+-1.78 0.89 -1.63 1 -1.76 0.89 -1.62 0.89 -1.65 0.87 -1.62 0.89 -1.65 0.89 2.28 -1.28 
+2.26 -1.13 2.26 -1.26 2.14 -1.12 2.15 -1.26 2.13 -1.13 2.15 -1.25 2 -1.15 6.05 -3.39 
+1.89 -1.15 3.77 -2.25 1.87 -1.13 1.89 -1.02 1.78 -1.13 1.76 -1.13 1.76 -1.02 1.76 -1.13 
+1.63 -1 1.78 -1.15 3.64 -2.26 3.64 -2.39 3.65 -2.41 S
+2833.18 3461.29 3.64 -2.39 3.52 -2.39 3.41 -2.28 3.52 -2.39 3.41 -2.39 3.25 -2.41 3.41 -2.39 
+3.15 -2.39 3.28 -2.41 3.14 -2.39 3.12 -2.25 3.15 -2.41 3.04 -2.39 3.02 -2.39 3.02 -2.41 
+2.88 -2.26 3.41 -2.91 3.51 -2.89 3.39 -2.91 3.41 -2.89 3.4 -2.9 3.39 -2.89 3.41 -3.02 
+3.25 -3.04 3.41 -3.02 3.28 -3.02 3.26 -3.04 3.14 -3.14 3.28 -3.02 9.44 -9.44 3.15 -3.17 
+2.63 -2.62 2.65 -2.78 2.52 -2.78 2.65 -2.78 2.64 -2.89 2.63 -2.91 2.64 -2.89 2.65 -2.91 
+2.63 -3.02 2.64 -3.02 2.65 -3.04 2.64 -3.14 2.63 -3.15 2.65 -3.14 5.29 -6.56 S
+2983.4 3324.48 2.52 -3.28 2.63 -3.27 S
+2717.69 3521.5 -0.24 0.14 -0.26 0 -0.37 0.13 -0.26 0.11 -0.25 0.13 -0.24 0.13 -0.26 0.13 
+-0.24 0.13 -0.26 0.11 -0.37 0.13 -0.26 0 -0.24 0.13 -0.39 0.13 -0.24 0.13 -0.26 0.11 
+-0.37 0.13 -0.26 0.13 -0.37 0.13 -6.16 2.39 -6.18 2.28 -6.27 2.26 -6.16 2.15 -6.3 2.15 
+-6.29 1.99 -6.16 2.02 -12.59 3.77 -6.29 1.78 -6.16 1.63 -6.29 1.64 -6.29 1.5 -6.16 1.52 
+-6.27 1.39 -6.16 1.39 -6.18 1.37 -6.17 1.15 -5.77 1.14 -5.92 0.99 -5.77 1.02 -5.93 1 
+-5.9 0.89 -5.93 0.76 -6.03 0.87 -5.9 0.63 -6.05 0.76 -6.04 0.63 S
+2541.19 3564.58 -6.03 0.5 -6.05 0.52 -6.04 0.5 -6.03 0.37 -6.16 0.39 -6.03 0.24 -6.16 0.26 
+-6.06 0.13 2.52 0 5.03 -0.25 2.52 0 2.52 -0.13 2.38 -0.11 2.52 -0.14 4.78 -0.26 
+2.4 -0.13 2.39 -0.11 2.39 -0.26 4.77 -0.26 2.26 -0.24 2.41 -0.13 2.25 -0.26 2.26 -0.24 
+-1.88 0.24 -2 0.13 -3.78 0.26 -1.88 0.24 -3.78 0.26 -3.52 0.26 -1.89 0 -1.78 0.11 
+-1.75 0.13 -1.63 0.13 -1.76 0 -1.75 0.13 -1.65 0.14 -1.62 0 6.79 -0.26 6.79 -0.5 
+6.92 -0.39 6.92 -0.63 7.04 -0.63 7.05 -0.62 S
+2546.86 3563.96 7.03 -0.87 7.05 -0.89 7.18 -0.89 7.03 -1.13 7.18 -1.12 7.16 -1.13 7.29 -1.39 
+7.18 -1.39 7.29 -1.52 7.16 -1.49 6.43 -1.39 6.29 -1.52 6.29 -1.62 6.29 -1.64 6.27 -1.63 
+6.29 -1.78 6.16 -1.89 6.29 -1.88 6.16 -1.89 6.17 -2.02 6.16 -2.12 12.33 -4.3 6.05 -2.26 
+6.04 -2.28 6.03 -2.39 S
+2005.77 3360.63 -2.65 -2.88 -2.78 -3.04 -2.62 -2.89 -2.65 -3.02 -2.64 -3.04 -2.62 -3.02 -2.64 -3.02 
+-2.29 -2.64 -2.25 -2.65 -2.13 -2.64 -2.14 -2.65 -2.02 -2.64 -2.12 -2.52 -2.02 -2.64 S
+1972.18 3321.33 -2.15 -2.78 -2.25 -2.75 -2.15 -2.91 -2.12 -2.78 -2.26 -2.88 -2.02 -2.91 -2.39 -3.14 S
+1956.83 3301.17 -2.28 -3.14 -2.12 -3.15 -2.29 -3.14 -1.99 -3.02 -2.15 -3.17 2.02 3.04 2.02 2.89 
+2.13 2.91 2.02 3.02 2.13 2.91 2.14 2.88 2.26 3.02 2.14 3.04 2.26 3.02 2.38 3.02 
+2.28 3.04 2.39 3.02 S
+1972.18 3321.33 1.63 2.02 1.65 2.02 1.63 2.02 1.63 1.89 1.65 2.02 1.5 1.89 6.55 7.81 
+3.26 3.78 3.4 3.91 3.52 4.01 3.54 3.91 3.64 4.03 S
+1850.02 2917.96 0 -2.02 0.13 -2.02 0 -2.15 0.14 -1.12 0.11 -1 0.13 -1.13 0 3.52 
+-0.13 3.64 -0.11 0.76 -0.26 1.52 S
+2217.62 3456.51 -0.13 -0.39 -0.13 -0.24 -0.36 -0.13 -0.26 0 0.52 0.37 S
+2217.25 3456.12 0.37 0.39 S
+2214.73 3454.1 -1.39 -0.63 -1.52 -0.63 -1.26 -0.74 -1.13 -0.76 0.63 -0.13 0.63 0 1.39 0.89 
+1.49 0.74 0.52 0.63 0.63 0.63 S
+2196.22 3444.04 -3.51 -1.52 -2.13 -1.5 -2.28 -1.39 3.02 1.25 3.04 1.39 0.87 0.87 1 0.89 S
+2182.9 3436.35 -4.04 -2.78 S
+2176.48 3432.31 -1.62 -0.87 -1.52 -0.89 -1 -0.26 -0.89 -0.36 -0.86 -0.76 -0.89 -0.76 -1.26 -1.26 
+2.29 1.26 2.25 1.26 0.63 0.63 0.63 0.52 1.13 0.74 1.13 0.76 S
+2164.15 3425.39 -1.26 -0.39 -1.26 -0.37 0.13 0.37 0.26 0.39 -2.39 -1.13 -2.41 -1.15 -0.74 -0.11 
+-0.89 -0.26 -1.76 -1.26 S
+2153.84 3421.48 -1.88 -1.13 0.25 -0.13 0.11 -0.26 -0.5 -0.63 -0.37 -0.62 -1.13 -1 -1.15 -0.89 
+-0.11 -0.5 -0.13 -0.5 1.5 0.99 1.65 1.02 1.37 0.74 1.39 0.75 1.52 1.02 1.5 1 
+1.65 1.02 1.5 1 1.52 1 1.63 1.02 S
+2378.38 3648.39 11.87 0 -0.3 -3.64 -0.97 -3.78 -0.76 -1.89 -0.95 -1.87 -1.15 -1.78 -1.39 -1.69 
+-1.61 -1.61 -1.82 -1.46 -2.11 -1.3 -2.34 -1.13 -2.61 -0.91 -2.88 -0.67 -3.17 -0.43 -3.47 -0.16 
+-3.64 0.2 -3.32 0.59 -3.02 0.89 -2.74 1.24 -2.43 1.49 -2.15 1.76 -1.91 2 -1.64 2.17 
+-1.39 2.34 -1.2 2.47 -0.96 2.58 -0.78 2.67 -0.96 5.45 -0.3 5.4 0.17 4.26 0.5 3.91 
+0.78 3.54 1.09 3.19 1.3 2.87 1.54 2.54 1.72 2.23 1.91 1.93 2.04 1.67 2.15 1.39 
+2.23 1.15 2.3 0.89 2.34 0.7 2.34 0.45 4.6 0.37 3.6 -0.19 3.87 -0.65 3.91 -1.24 
+1.91 -0.89 1.85 -1.06 1.75 -1.26 1.65 -1.5 1.52 -1.71 1.34 -1.98 1.17 -2.23 0.93 -2.5 
+0.71 -2.8 0.46 -3.11 -11.59 0 -0.71 2.72 -1.02 2.25 -1.28 1.82 -1.54 1.43 -1.76 1.06 
+-1.98 0.74 -2.16 0.39 -2.32 0.13 -2.87 -0.28 -2.75 -0.87 -2.56 -1.5 -2.3 -2.17 -1.02 -1.35 
+-0.93 -1.52 -0.8 -1.71 -0.7 -1.89 -0.98 -4.36 -0.39 -5.16 0.2 -3.93 0.58 -3.75 1.05 -3.5 
+1.54 -3.13 0.98 -1.37 1.11 -1.25 1.24 -1.09 1.41 -0.91 1.54 -0.73 1.74 -0.57 1.86 -0.33 
+2.06 -0.12 2.47 0.21 2.28 0.5 2.06 0.84 1.8 1.24 1.55 1.63 1.21 2.06 0.89 2.54 
+0.52 3.02 f*
+2437.35 3648.39 11.86 0 -0.3 -3.64 -0.96 -3.78 -0.76 -1.89 -0.95 -1.87 -1.17 -1.78 -1.39 -1.69 
+-1.58 -1.61 -1.85 -1.46 -2.08 -1.3 -2.34 -1.13 -2.62 -0.91 -2.89 -0.67 -3.17 -0.43 -3.47 -0.16 
+-3.65 0.2 -3.32 0.59 -3.02 0.89 -2.73 1.24 -2.43 1.49 -2.15 1.76 -1.91 2 -1.65 2.17 
+-1.39 2.34 -1.2 2.47 -0.95 2.58 -0.79 2.67 -0.95 5.45 -0.3 5.4 0.17 4.26 0.5 3.91 
+0.78 3.54 1.09 3.19 1.3 2.87 1.55 2.54 1.73 2.23 1.89 1.93 2.04 1.67 2.15 1.39 
+2.23 1.15 2.3 0.89 2.34 0.7 2.34 0.45 4.63 0.37 3.58 -0.19 3.86 -0.65 3.91 -1.24 
+1.91 -0.89 1.85 -1.06 1.75 -1.26 1.65 -1.5 1.52 -1.71 1.34 -1.98 1.17 -2.23 0.93 -2.5 
+0.72 -2.8 0.45 -3.11 -11.59 0 -0.72 2.72 -1.02 2.25 -1.28 1.82 -1.54 1.43 -1.75 1.06 
+-1.98 0.74 -2.16 0.39 -2.32 0.13 -2.87 -0.28 -2.75 -0.87 -2.56 -1.5 -2.3 -2.17 -1.02 -1.35 
+-0.91 -1.52 -0.83 -1.71 -0.7 -1.89 -0.98 -4.36 -0.39 -5.16 0.2 -3.93 0.59 -3.75 1.04 -3.5 
+1.54 -3.13 0.98 -1.37 1.11 -1.25 1.24 -1.09 1.41 -0.91 1.56 -0.73 1.72 -0.57 1.89 -0.33 
+2.04 -0.12 2.47 0.21 2.28 0.5 2.06 0.84 1.8 1.24 1.54 1.63 1.21 2.06 0.89 2.54 
+0.52 3.02 f*
+2502.11 3669.38 -11.74 0 -0.42 2.43 -0.91 1.99 -1.28 1.59 -1.61 1.19 -1.84 0.87 -2.02 0.59 
+-2.12 0.3 -2.13 0.11 -1.89 -0.12 -1.84 -0.35 -1.71 -0.56 -1.56 -0.8 -1.32 -1.02 -1.02 -1.21 
+-0.65 -1.43 -0.24 -1.62 0.24 -1.87 0.69 -1.52 1.17 -1.21 1.65 -0.98 2.13 -0.82 2.64 -0.71 
+6.77 -1.37 4.3 -0.74 3.97 -0.96 3.54 -1.24 3.04 -1.65 1.32 -1.02 1.17 -1.12 1.02 -1.31 
+0.84 -1.43 0.7 -1.62 0.48 -1.8 0.3 -2 0.11 -2.21 -0.08 -2.17 -0.29 -2.08 -0.45 -1.98 
+-0.65 -1.87 -0.83 -1.73 -1.04 -1.61 -1.24 -1.5 -1.41 -1.34 -1.63 -1.22 -1.82 -1.06 -2.04 -0.91 
+-2.24 -0.76 -2.45 -0.61 -2.66 -0.43 -2.87 -0.26 -3.11 -0.11 -3.05 0.13 -2.8 0.32 -2.61 0.54 
+-2.34 0.72 -2.15 0.91 -1.93 1.06 -1.74 1.19 -1.54 1.35 -1.32 1.43 -1.17 1.56 -0.96 1.63 
+-0.82 1.71 -1.11 3.56 -0.52 3.67 11.89 0 0.39 -2.22 0.74 -1.97 1.11 -1.71 1.45 -1.43 
+1.84 -1.13 2.26 -0.82 2.65 -0.5 3.09 -0.17 2.25 0.11 2.15 0.35 1.97 0.61 1.76 0.85 
+1.48 1.13 1.13 1.41 0.74 1.71 0.24 2.02 -0.24 2.16 -0.79 1.74 -1.28 1.41 -1.84 1.15 
+-2.41 0.93 -2.95 0.82 -7.73 1.58 -5.01 0.98 -4.12 1.32 -3.28 1.67 -2.52 1.97 -1.82 2.26 
+-1.21 2.52 -0.67 2.71 -0.22 2.93 0.11 2.13 0.35 2.02 0.52 1.88 0.73 1.74 0.91 1.61 
+1.11 1.48 1.28 1.34 1.41 1.21 1.59 1.07 1.71 0.93 3.82 1.43 4.26 0.87 4.64 0.29 
+4.1 -0.2 4.06 -0.66 3.88 -1.21 1.82 -0.8 1.72 -1 1.63 -1.17 1.45 -1.34 1.33 -1.54 
+1.15 -1.74 0.95 -1.95 0.74 -2.19 0.52 -2.41 0.26 -2.67 f*
+2512.35 3687.52 18.27 0 10.55 -47.16 10.55 47.16 18.55 0 0 -59.48 -11.57 0 0 50.41 
+-11.43 -50.41 -12.2 0 -11.57 50.41 0 -50.41 -11.15 0 0 59.48 f*
+2597.89 3686.02 13.09 0 0 -35.55 -11.29 0 0 24.39 -15.02 -24.39 32.53 0 0 -9.81 
+-6.23 0 0 -12.63 -11.29 0 ^ -23.33 0 0 9.68 21.53 35.68 f*
+Q q
+274.133 653.578 1296.25 1297.98 re
+Y*
+255 G
+274.39 1280.23 0 -32.46 2.78 -26.59 3.99 -27.12 5.17 -27.12 6.38 -27.13 5.9 -21.34 1.73 -5.82 
+8.92 -27.11 10.25 -27.1 5.64 -13.52 6.06 -13.63 13.17 -27.11 7.32 -13.78 7.48 -13.37 8.27 -13.56 
+8.25 -13.54 2.54 -3.91 7.96 -11.61 7.94 -11.63 10.61 -14.37 9.96 -12.76 16.58 -19.92 6.36 -7.23 
+20.18 -21.57 5.49 -5.55 10.53 -10.02 10.53 -10.05 7.83 -7.04 9.35 -7.96 9.36 -7.95 7.05 -5.6 
+7.06 -5.62 12.43 -9.38 12.69 -8.88 12.68 -8.87 1.19 -0.78 13.24 -8.29 13.26 -8.34 16.97 -9.72 
+9.59 -5.21 13.26 -6.68 13.26 -6.66 9.39 -4.29 9.39 -4.28 7.77 -3.32 26.52 -10.5 13.26 -4.58 
+13.29 -4.61 13.3 -4.12 13.24 -3.79 13.26 -3.37 13.28 -3.36 13.26 -2.75 13.26 -2.78 13.28 -2.2 
+13.26 -2.21 13.29 -1.63 13.25 -1.65 8.14 -0.65 4.97 -0.41 30.77 0 -0.15 0 -11.31 0.5 
+-11.28 0.7 -11.29 0.89 -11.26 1.09 -11.25 1.28 -11.21 1.48 -11.18 1.67 -11.18 1.87 -11.11 2.09 
+-11.09 2.25 -11.04 2.45 -11 2.63 -10.96 2.84 -10.89 3.04 -10.85 3.21 -10.79 3.41 -10.74 3.6 
+-10.66 3.78 -10.61 3.97 -10.53 4.14 -10.44 4.34 -10.37 4.52 -10.31 4.68 -10.2 4.89 -10.13 5.05 
+-10.02 5.23 -9.94 5.4 -9.86 5.57 -9.74 5.75 -9.66 5.92 -9.55 6.1 -9.42 6.25 -9.33 6.4 
+-9.2 6.6 -9.09 6.72 -8.98 6.91 -8.86 7.05 -8.75 7.21 -8.59 7.36 -8.46 7.51 -8.36 7.66 
+-8.21 7.79 -8.07 7.95 -7.92 8.07 -7.79 8.22 -7.64 8.36 -7.51 8.49 -7.33 8.61 -7.21 8.73 
+-7.03 8.87 -6.9 8.99 -6.73 9.11 -6.57 9.22 -6.4 9.33 -6.25 9.44 -6.08 9.57 -5.9 9.66 
+-5.75 9.77 -5.58 9.85 -5.38 9.96 -5.23 10.05 -5.05 10.13 -4.86 10.22 -4.69 10.31 -4.51 10.39 
+-4.34 10.46 -4.14 10.55 -3.95 10.61 -3.77 10.68 -3.61 10.74 -3.41 10.81 -3.21 10.87 -3.02 10.92 
+-2.84 10.95 -2.63 11.03 -2.45 11.05 -2.25 11.11 -2.06 11.13 -1.87 11.18 -1.67 11.21 -1.48 11.22 
+-1.28 11.26 -1.09 11.28 -0.89 11.29 -0.69 11.31 -0.5 11.33 0 0.3 f*
+274.39 1290.15 0 -10.22 0.5 -11.33 0.69 -11.31 0.89 -11.29 1.09 -11.28 1.28 -11.26 1.48 -11.22 
+1.67 -11.21 1.87 -11.18 2.06 -11.13 2.25 -11.11 2.45 -11.05 2.63 -11.03 2.84 -10.95 3.02 -10.92 
+3.21 -10.87 3.41 -10.81 3.61 -10.74 3.77 -10.68 3.95 -10.61 4.14 -10.55 4.34 -10.46 4.51 -10.39 
+4.69 -10.31 4.86 -10.22 5.05 -10.13 5.23 -10.05 5.38 -9.96 5.58 -9.85 5.75 -9.77 5.9 -9.66 
+6.08 -9.57 6.25 -9.44 6.4 -9.33 6.57 -9.22 6.73 -9.11 6.9 -8.99 7.03 -8.87 7.21 -8.73 
+7.33 -8.61 7.51 -8.49 7.64 -8.36 7.79 -8.22 7.92 -8.07 8.07 -7.95 8.21 -7.79 8.36 -7.66 
+8.46 -7.51 8.59 -7.36 8.75 -7.21 8.86 -7.05 8.98 -6.91 9.09 -6.72 9.2 -6.6 9.33 -6.4 
+9.42 -6.25 9.55 -6.1 9.66 -5.92 9.74 -5.75 9.86 -5.57 9.94 -5.4 10.02 -5.23 10.13 -5.05 
+10.2 -4.89 10.31 -4.68 10.37 -4.52 10.44 -4.34 10.53 -4.14 10.61 -3.97 10.66 -3.78 10.74 -3.6 
+10.79 -3.41 10.85 -3.21 10.89 -3.04 10.96 -2.84 11 -2.63 11.04 -2.45 11.09 -2.25 11.11 -2.09 
+11.18 -1.87 11.18 -1.67 11.21 -1.48 11.25 -1.28 11.26 -1.09 11.29 -0.89 11.28 -0.7 11.31 -0.5 
+10.05 0 -10.05 0.26 -11.29 0.5 -11.28 0.69 -11.29 0.89 -11.27 1.09 -11.24 1.28 -11.2 1.48 
+-11.19 1.67 -11.16 1.87 -11.11 2.06 -11.09 2.26 -11.05 2.45 -10.98 2.65 -10.96 2.84 -10.89 3.02 
+-10.85 3.21 -10.79 3.41 -10.72 3.6 -10.66 3.78 -10.59 3.97 -10.53 4.14 -10.43 4.34 -10.38 4.52 
+-10.3 4.68 -10.2 4.88 -10.11 5.05 -10.05 5.23 -9.94 5.4 -9.83 5.58 -9.74 5.75 -9.66 5.9 
+-9.53 6.08 -9.44 6.27 -9.31 6.4 -9.2 6.58 -9.09 6.75 -8.98 6.88 -8.85 7.05 -8.73 7.21 
+-8.59 7.36 -8.46 7.51 -8.36 7.64 -8.21 7.79 -8.05 7.95 -7.94 8.07 -7.77 8.23 -7.64 8.35 
+-7.5 8.49 -7.34 8.59 -7.21 8.74 -7.03 8.86 -6.88 8.98 -6.72 9.11 -6.58 9.23 -6.4 9.33 
+-6.25 9.45 -6.08 9.54 -5.91 9.66 -5.75 9.76 -5.55 9.86 -5.4 9.94 -5.21 10.05 -5.05 10.13 
+-4.86 10.22 -4.69 10.3 -4.51 10.39 -4.35 10.46 -4.14 10.52 -3.95 10.62 -3.77 10.68 -3.61 10.74 
+-3.38 10.8 -3.21 10.86 -3.04 10.91 -2.82 10.96 -2.65 11.02 -2.43 11.05 -2.25 11.09 -2.06 11.14 
+-1.87 11.17 -1.67 11.2 -1.48 11.24 -1.28 11.25 -1.09 11.26 -0.89 11.31 -0.7 11.31 -0.49 11.31 
+-0.26 10.22 f*
+274.39 1315 0 -24.85 0.26 -10.22 0.49 -11.31 0.7 -11.31 0.89 -11.31 1.09 -11.26 1.28 -11.25 
+1.48 -11.24 1.67 -11.2 1.87 -11.17 2.06 -11.14 2.25 -11.09 2.43 -11.05 2.65 -11.02 2.82 -10.96 
+3.04 -10.91 3.21 -10.86 3.38 -10.8 3.61 -10.74 3.77 -10.68 3.95 -10.62 4.14 -10.52 4.35 -10.46 
+4.51 -10.39 4.69 -10.3 4.86 -10.22 5.05 -10.13 5.21 -10.05 5.4 -9.94 5.55 -9.86 5.75 -9.76 
+5.91 -9.66 6.08 -9.54 6.25 -9.45 6.4 -9.33 6.58 -9.23 6.72 -9.11 6.88 -8.98 7.03 -8.86 
+7.21 -8.74 7.34 -8.59 7.5 -8.49 7.64 -8.35 7.77 -8.23 7.94 -8.07 8.05 -7.95 8.21 -7.79 
+8.36 -7.64 8.46 -7.51 8.59 -7.36 8.73 -7.21 8.85 -7.05 8.98 -6.87 9.09 -6.75 9.2 -6.58 
+9.31 -6.4 9.44 -6.27 9.53 -6.08 9.66 -5.9 9.74 -5.75 9.83 -5.58 9.94 -5.4 10.05 -5.23 
+10.11 -5.05 10.2 -4.88 10.3 -4.68 10.38 -4.52 10.43 -4.34 10.53 -4.14 10.59 -3.97 10.66 -3.78 
+10.72 -3.6 10.79 -3.41 10.85 -3.21 10.89 -3.02 10.96 -2.84 10.98 -2.65 11.05 -2.45 11.09 -2.26 
+11.11 -2.06 11.16 -1.87 11.19 -1.67 11.2 -1.48 11.24 -1.28 11.27 -1.09 11.29 -0.89 11.28 -0.69 
+11.29 -0.5 10.05 -0.26 25.15 0 10.05 0.26 11.28 0.5 11.29 0.69 11.29 0.89 11.26 1.09 
+11.22 1.28 11.22 1.48 11.18 1.67 11.16 1.87 11.13 2.06 11.09 2.26 11.02 2.45 11 2.65 
+10.96 2.84 10.89 3.02 10.85 3.21 10.77 3.41 10.74 3.6 10.66 3.78 10.59 3.97 10.52 4.14 
+10.44 4.34 10.37 4.52 10.31 4.68 10.2 4.88 10.11 5.05 10.05 5.23 9.94 5.4 9.83 5.58 
+9.74 5.75 9.66 5.9 9.53 6.08 9.44 6.27 9.31 6.4 9.2 6.58 9.09 6.75 8.98 6.88 
+8.86 7.05 8.72 7.21 8.59 7.36 8.47 7.51 8.36 7.64 8.2 7.79 8.05 7.95 7.95 8.07 
+7.77 8.23 7.64 8.35 7.5 8.49 7.34 8.59 7.2 8.74 7.04 8.86 6.88 8.98 6.73 9.11 
+6.58 9.23 6.4 9.33 6.25 9.45 6.08 9.54 5.9 9.66 5.73 9.76 5.58 9.86 5.4 9.94 
+5.21 10.05 5.06 10.13 4.86 10.22 4.69 10.3 4.51 10.39 4.34 10.46 4.14 10.52 3.95 10.62 
+3.78 10.68 3.61 10.74 3.39 10.8 3.21 10.86 3.04 10.91 2.82 10.96 2.64 11.02 2.43 11.05 
+2.25 11.09 2.06 11.14 1.87 11.17 1.67 11.2 1.47 11.24 1.28 11.25 1.09 11.26 0.89 11.31 
+0.7 11.31 0.5 11.31 0.26 10.2 0 24.89 -0.26 10.2 -0.5 11.31 -0.7 11.3 -0.89 11.29 
+-1.09 11.28 -1.28 11.24 -1.47 11.24 -1.67 11.2 -1.87 11.16 -2.06 11.16 -2.25 11.09 -2.43 11.05 
+-2.64 11.03 -2.82 10.95 -3.04 10.92 -3.21 10.85 -3.39 10.81 -3.61 10.74 -3.78 10.68 -3.95 10.61 
+-4.14 10.53 -4.34 10.46 -4.51 10.39 -4.69 10.3 -4.86 10.22 -5.06 10.13 -5.21 10.05 -5.4 9.94 
+-5.58 9.85 -5.73 9.77 -5.9 9.66 -6.08 9.55 -6.25 9.44 -6.4 9.33 -6.58 9.22 -6.73 9.12 
+-6.87 8.98 -7.04 8.86 -7.2 8.74 -7.34 8.59 -7.5 8.48 -7.64 8.36 -7.77 8.23 -7.95 8.07 
+-8.05 7.92 -8.2 7.81 -3.47 3.16 2.43 -2.54 1.87 -1.62 11.33 -11.74 11.33 -11.72 11.33 -11.74 
+11.33 -11.72 3.91 -5.08 5.14 -5.41 26.3 -35.03 13.15 -17.49 -12.13 15.75 -12.11 15.73 -12.13 15.76 
+-8.23 10.68 P
+-6.66 6.99 -35.42 37.17 -9.01 9.46 -9 7.9 -2.54 2.21 -2.25 1.87 -22.01 18.1 -6.12 5.04 
+-0.87 0.63 -12.09 8.79 -12.07 8.79 -9.8 7.14 -6.08 3.93 -12.5 8.12 -12.5 8.09 -6.05 3.93 
+-1.23 0.74 -9.14 5.46 -7.81 4.04 -11.76 6.05 -23.48 12.11 13.39 -6.81 13.39 -6.84 13.41 -6.83 
+2.87 -1.72 3.75 -1.95 -6.23 3.53 -9.94 5.41 -10.05 5.23 -10.11 5.06 -10.2 4.88 -10.31 4.69 
+-10.37 4.52 -10.44 4.34 -10.52 4.14 -10.59 3.97 -10.66 3.78 -10.74 3.6 -10.77 3.41 -10.85 3.21 
+-10.89 3.02 -10.96 2.84 -11 2.65 -11.02 2.45 -11.09 2.25 -11.13 2.06 -11.16 1.87 -11.18 1.67 
+-11.22 1.48 -11.22 1.28 -11.26 1.09 -11.29 0.89 -11.29 0.69 -11.28 0.5 -10.05 0.26 -25.15 0 
+-0.61 -0.02 0 -1.91 26.37 0 13.2 -0.54 13.17 -0.54 13.2 -1.09 13.17 -1.08 13.2 -1.63 
+13.17 -1.63 13.2 -2.17 3.15 -0.52 10.05 -1.67 13.17 -2.75 13.19 -2.76 13.17 -3.34 13.2 -3.32 
+13.16 -3.77 13.2 -4.11 13.2 -4.55 13.19 -4.58 6.31 -2.5 6.88 -2.71 13.2 -5.23 7.66 -3.28 
+9.33 -4.25 9.36 -4.25 26.39 -13.29 9.5 -5.16 16.84 -9.68 13.2 -8.27 13.21 -8.27 1.08 -0.74 
+25.26 -17.66 12.35 -9.29 14.02 -11.15 9.29 -7.9 9.31 -7.92 7.74 -6.97 10.48 -9.98 10.48 -10.01 
+5.42 -5.46 1.15 -1.24 8.9 -9.51 10.05 -10.74 6.27 -7.14 8.25 -9.92 8.24 -9.89 9.88 -12.67 
+10.55 -14.28 15.84 -23.13 2.48 -3.8 1.37 -2.28 6.62 -10.83 0.24 -0.39 5.86 -9.61 2.37 -3.88 
+7.44 -13.26 7.25 -13.67 13.11 -26.98 6.01 -13.54 5.58 -13.39 10.2 -26.98 8.88 -26.97 1.71 -5.71 
+5.86 -21.23 6.34 -26.95 5.14 -26.96 3.95 -26.95 2.82 -26.96 1.69 -26.95 0.57 -26.95 -0.57 -26.98 
+-1.69 -26.95 -2.82 -26.96 -3.95 -26.95 -5.14 -26.96 -6.34 -26.95 -5.86 -21.23 -1.71 -5.71 -8.87 -26.98 
+-10.2 -26.97 -5.58 -13.39 -6.01 -13.54 -13.11 -26.97 -7.25 -13.67 -7.44 -13.26 -16.45 -26.99 -2.48 -3.8 
+-15.84 -23.13 -10.55 -14.28 -9.87 -12.67 -8.24 -9.9 -8.25 -9.91 -6.27 -7.14 -10.07 -10.75 -10.03 -10.74 
+-5.42 -5.47 -10.48 -10 -10.48 -9.98 -7.74 -6.97 -9.31 -7.92 -9.29 -7.9 -14.02 -11.16 -12.35 -9.29 
+-25.26 -17.66 -1.08 -0.74 -13.21 -8.27 -13.2 -8.27 -16.84 -9.68 -9.5 -5.16 -26.39 -13.29 -9.36 -4.25 
+-9.33 -4.25 -7.66 -3.28 -26.39 -10.46 -26.39 -9.12 -13.2 -4.1 -13.16 -3.77 -13.2 -3.32 -13.17 -3.34 
+-13.19 -2.76 -13.17 -2.75 -13.2 -2.19 -13.2 -2.17 -13.17 -1.63 -13.2 -1.63 -13.17 -1.08 -13.2 -1.09 
+-13.2 -0.54 -13.17 -0.54 -26.37 0 -13.19 0.54 -13.17 0.54 -13.2 1.09 -13.17 1.08 -13.2 1.63 
+-13.17 1.63 -13.2 2.17 -13.2 2.19 -13.18 2.75 -13.2 2.76 -13.2 3.34 -13.17 3.32 -13.13 3.77 
+-13.21 4.1 -26.39 9.12 -26.39 10.46 -7.66 3.28 -9.35 4.25 -9.33 4.25 -26.39 13.29 -9.5 5.16 
+-16.84 9.68 -13.2 8.27 -13.21 8.27 -1.09 0.74 -25.26 17.66 -12.35 9.29 -14.02 11.16 -9.29 7.9 
+-9.31 7.92 -7.75 6.97 -10.5 9.98 -10.46 10 -5.43 5.47 -20.1 21.48 -6.27 7.14 -8.25 9.91 
+-8.24 9.9 -9.88 12.67 -10.55 14.28 -15.84 23.13 -2.47 3.8 -16.45 26.99 -7.45 13.26 -7.25 13.67 
+-13.11 26.97 -6.01 13.54 -5.58 13.39 -10.2 26.97 -8.87 26.98 -1.71 5.71 -5.86 21.23 -6.33 26.95 
+-5.12 26.96 p
+-3.97 26.95 -2.82 26.96 -1.7 26.95 -0.56 26.98 0.56 26.95 1.7 26.95 2.82 26.96 3.97 26.95 
+5.12 26.96 6.33 26.95 5.86 21.23 1.71 5.73 8.87 26.95 10.2 26.98 5.58 13.39 6.01 13.54 
+13.11 26.98 7.27 13.67 7.42 13.26 16.45 26.99 2.47 3.8 15.84 23.13 10.55 14.28 9.88 12.67 
+8.24 9.89 8.25 9.92 6.27 7.14 20.1 21.48 5.43 5.46 10.48 10.01 10.48 9.98 6.43 5.77 
+1.32 1.2 9.31 7.92 9.29 7.9 14.02 11.15 12.35 9.29 25.26 17.66 1.09 0.74 13.21 8.27 
+13.2 8.27 16.84 9.68 2.56 1.39 6.95 3.78 26.39 13.29 9.33 4.25 9.35 4.25 7.66 3.28 
+13.2 5.23 13.19 5.21 13.2 4.58 13.2 4.55 13.21 4.11 13.13 3.77 13.2 3.35 13.17 3.32 
+13.2 2.76 13.18 2.75 13.2 2.19 13.2 2.17 2.38 0.31 10.79 1.32 13.2 1.63 13.17 1.08 
+13.2 1.09 13.17 0.54 13.19 0.54 0 1.91 -9.44 -0.23 -11.29 -0.5 -11.28 -0.69 -11.29 -0.89 
+-11.27 -1.09 -11.24 -1.28 -11.2 -1.48 -11.19 -1.67 -11.16 -1.87 -11.11 -2.06 -11.09 -2.25 -11.05 -2.45 
+-10.98 -2.65 -10.96 -2.84 -10.89 -3.02 -10.85 -3.21 -10.79 -3.41 -10.72 -3.6 -10.66 -3.78 -10.59 -3.97 
+-10.53 -4.14 -10.43 -4.34 -10.38 -4.52 -10.3 -4.69 -10.2 -4.88 -10.11 -5.06 -10.05 -5.23 -9.94 -5.41 
+-9.83 -5.55 -9.74 -5.75 -9.66 -5.92 -9.53 -6.1 -9.44 -6.25 -9.31 -6.4 -9.2 -6.58 -9.09 -6.75 
+-8.98 -6.87 -8.85 -7.06 -8.73 -7.2 -8.59 -7.36 -8.46 -7.51 -8.36 -7.64 -8.21 -7.81 -8.05 -7.92 
+-7.94 -8.07 -7.77 -8.23 -7.64 -8.36 -7.5 -8.48 -7.34 -8.59 -7.21 -8.74 -7.03 -8.86 -6.88 -8.98 
+-6.72 -9.12 -6.58 -9.22 -6.4 -9.33 -6.25 -9.44 -6.08 -9.55 -5.91 -9.66 -5.75 -9.77 -5.55 -9.85 
+-5.4 -9.94 -5.21 -10.05 -5.05 -10.13 -4.86 -10.22 -4.69 -10.3 -4.51 -10.39 -4.35 -10.46 -4.14 -10.53 
+-3.95 -10.61 -3.77 -10.68 -3.61 -10.74 -3.38 -10.81 -3.21 -10.85 -3.04 -10.92 -2.82 -10.95 -2.65 -11.03 
+-2.43 -11.05 -2.25 -11.09 -2.06 -11.16 -1.87 -11.16 -1.67 -11.2 -1.48 -11.24 -1.28 -11.24 -1.09 -11.28 
+-0.89 -11.29 -0.7 -11.3 -0.49 -11.31 -0.26 -10.22 p f*
+274.39 1324.91 0 -9.91 0.26 10.22 0.49 11.31 0.7 11.3 0.89 11.29 1.09 11.28 1.28 11.24 
+1.48 11.24 1.67 11.2 1.87 11.16 2.06 11.16 2.25 11.09 2.43 11.05 2.65 11.03 2.82 10.95 
+3.04 10.92 3.21 10.85 3.38 10.81 3.61 10.74 3.77 10.68 3.95 10.61 4.14 10.53 4.35 10.46 
+4.51 10.39 4.69 10.3 4.86 10.22 5.05 10.13 5.21 10.05 5.4 9.94 5.55 9.85 5.75 9.77 
+5.91 9.66 6.08 9.55 6.25 9.44 6.4 9.33 6.58 9.22 6.72 9.12 6.88 8.98 7.03 8.86 
+7.21 8.74 7.34 8.59 7.5 8.48 7.64 8.36 7.77 8.23 7.94 8.07 8.05 7.92 8.21 7.81 
+8.36 7.64 8.46 7.51 8.59 7.36 8.73 7.2 8.85 7.06 8.98 6.88 9.09 6.75 9.2 6.58 
+9.31 6.4 9.44 6.25 9.53 6.1 9.66 5.92 9.74 5.75 9.83 5.55 9.94 5.41 10.05 5.23 
+10.11 5.06 10.2 4.88 10.3 4.69 10.38 4.52 10.43 4.34 10.53 4.14 10.59 3.97 10.66 3.78 
+10.72 3.6 10.79 3.41 10.85 3.21 10.89 3.02 10.96 2.84 10.98 2.65 11.05 2.45 11.09 2.25 
+11.11 2.06 11.16 1.87 11.19 1.67 11.2 1.48 11.24 1.28 11.27 1.09 11.29 0.89 11.28 0.69 
+11.29 0.5 9.44 0.23 0.61 0.02 -10.05 0 -11.31 -0.5 -11.28 -0.7 -11.29 -0.89 -11.26 -1.08 
+-11.25 -1.28 -11.21 -1.48 -11.18 -1.67 -11.18 -1.87 -11.11 -2.06 -11.09 -2.25 -11.04 -2.46 -11 -2.64 
+-10.96 -2.84 -10.89 -3.02 -10.85 -3.23 -10.79 -3.41 -10.74 -3.58 -10.66 -3.8 -10.61 -3.95 -10.53 -4.16 
+-10.44 -4.34 -10.37 -4.52 -10.31 -4.69 -10.2 -4.88 -10.13 -5.05 -10.02 -5.23 -9.94 -5.4 -9.86 -5.58 
+-9.74 -5.75 -9.66 -5.92 -9.55 -6.08 -9.42 -6.27 -9.33 -6.4 -9.2 -6.58 -9.09 -6.75 -8.98 -6.9 
+-8.86 -7.05 -8.75 -7.21 -8.59 -7.36 -8.46 -7.51 -8.36 -7.64 -8.21 -7.81 -8.07 -7.95 -7.92 -8.07 
+-7.79 -8.23 -7.64 -8.35 -7.51 -8.49 -7.33 -8.62 -7.21 -8.75 -7.03 -8.86 -6.9 -8.98 -6.73 -9.11 
+-6.57 -9.23 -6.4 -9.33 -6.25 -9.44 -6.08 -9.57 -5.9 -9.66 -5.75 -9.77 -5.58 -9.86 -5.38 -9.96 
+-5.23 -10.05 -5.05 -10.13 -4.86 -10.22 -4.69 -10.31 -4.51 -10.39 -4.34 -10.46 -4.14 -10.55 -3.95 -10.61 
+-3.77 -10.68 -3.61 -10.74 -3.41 -10.81 -3.21 -10.87 -3.02 -10.92 -2.84 -10.96 -2.63 -11.02 -2.45 -11.05 
+-2.25 -11.11 -2.06 -11.13 -1.87 -11.18 -1.67 -11.21 -1.48 -11.22 -1.28 -11.26 -1.09 -11.27 -0.89 -11.3 
+-0.69 -11.31 -0.5 -11.33 0 -0.3 f*
+274.39 1357.38 0 -32.47 0 0.3 0.5 11.33 0.69 11.31 0.89 11.3 1.09 11.27 1.28 11.26 
+1.48 11.22 1.67 11.21 1.87 11.18 2.06 11.13 2.25 11.11 2.45 11.05 2.63 11.02 2.84 10.96 
+3.02 10.92 3.21 10.87 3.41 10.81 3.61 10.74 3.77 10.68 3.95 10.61 4.14 10.55 4.34 10.46 
+4.51 10.39 4.69 10.31 4.86 10.22 5.05 10.13 5.23 10.05 5.38 9.96 5.58 9.86 5.75 9.77 
+5.9 9.66 6.08 9.57 6.25 9.44 6.4 9.33 6.57 9.23 6.73 9.11 6.9 8.98 7.03 8.86 
+7.21 8.75 7.33 8.62 7.51 8.49 7.64 8.35 7.79 8.23 7.92 8.07 8.07 7.95 8.21 7.81 
+8.36 7.64 8.46 7.51 8.59 7.36 8.75 7.21 8.86 7.05 8.98 6.9 9.09 6.75 9.2 6.58 
+9.33 6.4 9.42 6.27 9.55 6.08 9.66 5.92 9.74 5.75 9.86 5.58 9.94 5.4 10.02 5.23 
+10.13 5.05 10.2 4.88 10.31 4.69 10.37 4.52 10.44 4.34 10.53 4.16 10.61 3.95 10.66 3.8 
+10.74 3.58 10.79 3.41 10.85 3.23 10.89 3.02 10.96 2.84 11 2.64 11.04 2.46 11.09 2.25 
+11.11 2.06 11.18 1.87 11.18 1.67 11.21 1.48 11.25 1.28 11.26 1.08 11.29 0.89 11.28 0.7 
+11.31 0.5 0.15 0 -30.8 0 -4.95 -0.39 -8.14 -0.67 -13.25 -1.65 -13.29 -1.63 -13.26 -2.21 
+-13.28 -2.2 -13.26 -2.78 -13.26 -2.75 -13.28 -3.36 -13.26 -3.37 -13.24 -3.79 -13.3 -4.13 -13.29 -4.6 
+-13.26 -4.58 -26.52 -10.51 -7.77 -3.32 -9.39 -4.28 -9.39 -4.29 -13.26 -6.66 -13.26 -6.69 -9.59 -5.2 
+-16.97 -9.72 -13.26 -8.31 -13.24 -8.33 -1.19 -0.76 -12.68 -8.88 -12.69 -8.87 -12.43 -9.38 -7.06 -5.6 
+-7.05 -5.62 -9.36 -7.95 -9.35 -7.97 -7.83 -7.03 -10.53 -10.05 -10.53 -10.02 -5.49 -5.55 -20.18 -21.57 
+-6.36 -7.23 -16.58 -19.92 -9.96 -12.76 -10.61 -14.37 -7.94 -11.63 -7.96 -11.61 -2.54 -3.91 -8.25 -13.54 
+-8.27 -13.56 -7.48 -13.37 -7.32 -13.78 -13.17 -27.11 -6.06 -13.63 -5.64 -13.52 -10.25 -27.11 -8.92 -27.12 
+-1.73 -5.8 -5.9 -21.33 -6.38 -27.13 -5.17 -27.12 -3.99 -27.13 -2.78 -26.58 f*
+276.75 1275.61 -0.56 26.98 0.56 26.95 1.7 26.95 2.82 26.96 3.97 26.95 5.12 26.96 6.33 26.95 
+5.86 21.23 1.71 5.73 8.87 26.95 10.2 26.98 5.58 13.39 6.01 13.54 13.11 26.98 7.27 13.67 
+7.42 13.26 16.45 26.99 2.47 3.8 15.84 23.13 10.55 14.28 9.88 12.67 8.24 9.89 8.25 9.92 
+6.27 7.14 20.1 21.48 5.43 5.46 10.48 10.01 10.48 9.98 6.43 5.77 0 -233.94 -5.04 -5.64 
+1.07 -5.8 4.93 5.64 -0.95 5.8 0 233.94 1.32 1.2 9.31 7.92 9.29 7.9 14.02 11.15 
+12.35 9.29 25.26 17.66 1.09 0.74 13.21 8.27 13.2 8.27 16.84 9.68 2.56 1.39 0 -58.44 
+-7.03 -2.26 -11.33 -8.99 7.12 2.52 11.24 8.72 0 58.44 6.95 3.78 26.39 13.29 9.33 4.25 
+9.35 4.25 7.66 3.28 13.2 5.23 13.19 5.21 13.2 4.58 13.2 4.55 13.21 4.11 13.13 3.77 
+13.2 3.35 13.17 3.32 13.2 2.76 13.18 2.75 13.2 2.19 13.2 2.17 2.38 0.31 0 -139.31 
+-5.96 -1.86 -0.98 -0.32 -4.91 -1.67 0.46 -0.33 2.48 -1.87 0.46 -0.34 -1.41 -0.48 -4.21 -1.52 
+-5.45 -2.11 -0.07 -0.02 0.02 0 3.66 -2.41 -5.25 -2.13 -5.16 -2.21 -5.04 -2.3 -3.73 -1.76 
+-1.24 -0.61 0.43 -0.21 3.87 -1.89 0.28 0.13 2.41 1.17 2.11 0.97 1.24 -0.67 2.84 -1.58 
+2.59 -1.5 1.45 -0.85 -2.89 -1.32 -1.63 -0.76 -4.41 -2.16 -1.06 -0.55 -3.23 -1.7 -0.98 -0.52 
+-2.43 -1.33 -0.8 -0.45 0.52 -0.22 1.5 -0.67 1.52 -0.67 1.02 -0.46 -3.99 -2.25 -3.89 -2.34 
+-0.84 -0.52 -2.95 -1.87 -3.69 -2.45 -0.41 0.13 -0.24 0.09 -0.79 0.24 -0.8 0.26 -0.8 0.24 
+-0.8 0.25 -0.78 0.24 -0.45 0.16 -0.96 -0.67 -1.72 -1.22 -1.02 -0.74 -0.57 -0.39 -1.39 -1.02 
+-1.37 -1.02 -0.31 -0.22 -3.47 -2.71 -0.26 -0.2 -3.12 -2.56 -1.21 0.24 -1.54 0.3 -1.52 0.28 
+-1.25 0.24 -1.02 -0.89 -1.28 -1.09 -1.07 -0.93 -0.78 0.11 -1.87 0.3 -1.87 0.26 -0.93 0.16 
+-0.2 0.02 -0.91 -0.82 -2.41 -2.25 -0.71 -0.65 -1.61 -1.57 -0.89 -0.89 -1.17 0.13 -2.04 0.17 
+-2.06 0.2 -0.59 0.04 -0.45 -0.48 -1.61 -1.65 -1.08 -1.13 -1.85 0.09 -2.69 0.15 -1.41 0.07 
+-1.22 -1.33 -1.87 -2.09 -3.32 0.07 -2.73 0.02 -1.78 -2.11 -1.21 -1.45 -2.45 -0.04 -3.69 -0.09 
+-6.14 -0.24 -2.97 -3.82 -1.3 -1.75 -1.52 -2.09 -3.3 -0.3 -2.95 -0.28 -6.27 -0.71 -6.29 -0.81 
+-2.78 -4.21 -1.65 -2.66 -0.95 -1.56 -2.15 -0.37 -4.21 -0.78 -2.45 -4.35 -6.38 -1.41 -6.4 -1.49 
+-6.4 -1.65 -2.3 -4.66 -6.4 -1.87 -6.4 -2 -6.41 -2.13 -6.4 -2.23 -6.4 -2.39 -6.41 -2.49 
+-6.38 -2.63 -6.38 -2.76 -6.36 -2.9 -1.97 -5.62 -6.32 -3.12 -1.74 -5.66 -6.27 -3.36 -6.23 -3.5 
+-1.43 -5.81 -6.16 -3.71 -1.2 -5.82 -6.07 -3.93 -0.91 -5.84 -5.97 -4.14 -5.94 -4.28 -0.59 -5.9 
+-5.84 -4.47 -5.77 -4.58 -0.26 -5.95 -5.64 -4.78 0 -5.9 -5.51 -4.97 -5.46 -5.07 0.36 -5.9 
+-5.32 -5.25 0.61 -5.84 5.26 5.3 0.71 -5.71 0.89 -5.62 -5.08 -5.34 -5.02 -5.45 1.24 -5.58 
+-4.86 -5.58 1.46 -5.49 -4.69 -5.71 -4.62 -5.79 1.78 -5.41 -4.45 -5.92 -4.36 -6.01 -4.27 -6.12 
+2.19 -5.3 -4.1 -6.2 2.39 -5.19 2.52 -5.1 -3.84 -6.27 -3.75 -6.36 2.8 -4.95 2.93 -4.86 
+3.06 -4.77 P
+-3.43 -6.38 3.23 -4.64 3.37 -4.55 3.47 -4.45 3.56 -4.38 -3.06 -6.33 3.73 -4.28 -2.91 -6.38 
+3.9 -4.14 4 -4.06 4.1 -3.97 -2.64 -6.36 -2.52 -6.41 4.27 -3.84 -2.38 -6.4 -2.29 -6.47 
+4.47 -3.69 4.58 -3.63 -2.11 -6.42 -1.99 -6.47 4.73 -3.47 4.82 -3.39 4.91 -3.32 4.95 -3.25 
+-1.71 -6.36 5.05 -3.14 -1.58 -6.36 -1.52 -6.38 -1.41 -6.4 -1.32 -6.45 -1.24 -6.46 -5.25 2.96 
+-1.17 -6.56 -1.08 -6.55 -5.26 2.91 -1.02 -6.64 -0.91 -6.66 -0.8 -6.68 -0.72 -6.7 -0.63 -6.75 
+-5.32 2.69 -0.54 -6.82 -0.41 -6.82 5.36 -2.58 -0.3 -6.79 5.45 -2.45 -0.2 -6.75 -0.09 -6.77 
+0.02 -6.77 0.13 -6.79 5.54 -2.17 0.24 -6.73 0.33 -6.75 5.6 -2 0.43 -6.7 0.55 -6.68 
+5.64 -1.84 0.65 -6.64 5.69 -1.76 0.74 -6.58 5.73 -1.67 0.82 -6.5 5.75 -1.59 0.93 -6.46 
+5.79 -1.5 0.98 -6.38 1.11 -6.4 1.18 -6.37 1.3 -6.38 1.37 -6.38 1.49 -6.36 1.57 -6.33 
+1.69 -6.34 1.76 -6.34 1.89 -6.31 -5.55 0.91 2.02 -6.34 2.11 -6.34 2.23 -6.31 2.32 -6.32 
+2.43 -6.27 2.54 -6.25 2.64 -6.23 -5.2 0.48 2.8 -6.25 2.91 -6.25 -5.03 0.37 3.08 -6.25 
+3.19 -6.25 3.3 -6.18 3.41 -6.16 3.54 -6.14 3.65 -6.08 4.67 -0.02 3.66 -6.01 3.82 -5.95 
+3.85 -5.8 0.06 -0.11 -0.06 0 -4.39 -0.13 4.1 -5.92 -4.3 -0.2 4.3 -5.93 4.41 -5.86 
+4.53 -5.8 4.64 -5.75 4.77 -5.71 4.88 -5.62 5 -5.55 3.73 0.52 3.5 0.45 0.25 0.02 
+0.76 -0.84 4.19 -4.58 5.05 -5.36 2.58 0.39 1.05 0.15 3.71 0.52 4.9 -5.17 0.07 -0.06 
+0.07 0 3.6 0.52 3.47 0.46 0.26 0.02 3.78 0.48 -4.71 5.14 -3.86 -0.46 -1.65 -0.2 
+-2.17 -0.26 -2.67 2.91 -2.11 2.34 -4.67 5.32 -4.53 5.39 -4.45 5.43 -4.34 5.47 4.25 0.28 
+-4.14 5.49 4.38 0.22 -3.95 5.49 -3.86 5.55 -3.73 5.58 -3.64 5.62 -3.56 5.67 4.82 0 
+-3.36 5.64 4.95 -0.06 -3.22 5.64 -3.1 5.69 5.1 -0.18 -2.93 5.67 -2.87 5.68 5.27 -0.26 
+5.34 -0.28 5.36 -0.3 -2.59 5.6 5.45 -0.33 -2.43 5.58 -2.37 5.6 -2.28 5.64 -2.17 5.64 
+5.71 -0.5 5.73 -0.5 5.79 -0.49 -1.97 5.55 5.86 -0.52 -1.85 5.54 -1.75 5.53 5.99 -0.58 
+-1.65 5.54 6.05 -0.64 -1.54 5.52 6.12 -0.66 -1.43 5.52 -1.37 5.51 -1.3 5.51 -1.24 5.55 
+-1.17 5.55 6.32 -0.8 -1.08 5.54 6.4 -0.83 -1 5.51 6.45 -0.82 5.06 -0.65 0 -156.86 
+-4.41 -0.22 3.93 -5.12 4.34 0.24 -3.86 5.1 0 156.86 1.41 -0.18 6.5 -0.78 -0.84 5.43 
+6.55 -0.78 -0.78 5.4 6.6 -0.8 -0.71 5.42 -0.65 5.41 -0.59 5.45 6.68 -0.87 -0.54 5.43 
+-0.48 5.42 -0.44 5.45 -0.39 5.44 -0.34 5.47 -0.28 5.47 6.77 -0.98 -0.24 5.45 -0.18 5.46 
+6.82 -0.99 -0.15 5.44 6.86 -0.98 -0.09 5.45 -0.06 5.42 0 5.45 0.02 5.46 0.06 5.45 
+-6.86 1.09 -6.82 1.11 0.13 5.51 -6.79 1.18 0.17 5.53 -6.74 1.24 -6.73 1.28 -6.7 1.31 
+0.24 5.6 -6.64 1.39 -6.62 1.41 0.3 5.64 -6.58 1.5 0.39 5.66 -6.54 1.56 -6.49 1.61 
+-6.46 1.65 0.5 5.73 0.54 5.73 0.61 5.73 -6.38 1.78 0.7 5.76 0.74 5.75 -6.29 1.87 
+0.82 5.77 p
+-6.23 1.93 0.91 5.77 -6.14 2.02 -6.12 2.06 -6.05 2.13 1.07 5.83 -5.99 2.21 1.15 5.86 
+-5.91 2.28 1.24 5.86 -5.82 2.37 1.34 5.88 -5.73 2.43 1.45 5.89 -5.66 2.54 -5.58 2.56 
+-5.54 2.64 -5.49 2.72 -5.41 2.75 1.72 5.99 -5.32 2.84 -0.05 0.04 -5.21 2.89 -5.18 2.97 
+-1.84 -6.08 -5.19 3.02 -5.1 3.08 -5.03 3.14 -1.89 -6.18 -1.04 -3.6 -0.78 -2.63 -5.06 3.14 
+-4.97 3.22 -4.92 3.29 -4.84 3.37 -4.75 3.43 2.04 6.38 -4.64 3.54 2.17 6.41 2.28 6.36 
+2.39 6.29 2.45 6.27 2.54 6.21 2.65 6.16 -4.23 3.8 2.78 6.14 -4.1 3.89 -2.82 -6.17 
+-4.08 3.95 -3.95 4.04 2.97 6.21 3.04 6.16 3.14 6.1 3.23 6.03 3.71 -4.1 3.26 5.94 
+3.34 5.9 -3.58 4.15 -3.5 4.23 -3.47 -5.92 -3.36 -5.99 -3.52 4.27 -3.37 -6.08 -3.47 4.34 
+-3.36 4.45 -3.25 4.52 -3.14 4.63 3.64 6.14 3.73 6.05 -2.89 4.73 3.88 5.96 4 5.93 
+4.06 5.81 4.14 5.75 4.23 5.64 4.32 5.58 4.38 5.49 4.47 5.41 4.54 5.34 2.23 -4.71 
+2.32 -4.62 4.49 5.28 0.32 -0.63 0 -76.11 -3.3 -5.75 3.89 -3.84 3.99 -3.75 4.08 -3.69 
+4.17 -3.61 -3 -5.77 4.32 -3.52 -2.84 -5.82 4.44 -3.43 4.52 -3.38 2.73 5.77 -4.47 3.39 
+-4.38 3.47 2.91 5.75 -4.23 3.54 3.06 5.73 -4.11 3.63 -4.01 3.69 -3.93 3.75 -3.84 3.84 
+0 76.11 2.06 -3.91 2.52 -4.45 2.62 -4.36 2.76 -4.29 2.84 -4.21 4.19 5.25 2.91 -4.12 
+3 -4.06 -4.04 -5.28 3.17 -3.99 3.28 -3.93 3.38 -3.84 -3.77 -5.39 -3.71 -5.42 -3.62 -5.47 
+3.67 -3.79 -3.47 -5.53 3.82 -3.69 3.41 5.51 3.49 5.49 1.05 1.59 0 -67.3 -2.54 -5.77 
+-2.48 -5.82 4.86 -3.14 4.93 -3.06 4.99 -3 2.3 5.77 -4.93 3.02 2.43 5.75 -4.82 3.11 
+-4.75 3.14 0 67.3 2.54 3.84 -3.63 3.71 3.71 5.38 3.78 5.32 3.84 5.25 3.91 5.21 
+3.36 -3.69 3.93 5.17 3.39 -3.6 3.47 -3.52 3.84 5.12 3.5 -3.45 3.86 5.08 3.5 -3.37 
+3.86 5.04 -3.45 3.37 3.97 4.99 4.04 4.93 3.32 -3.32 4.04 4.88 3.32 -3.26 4.01 4.86 
+4.11 4.82 3.25 -3.14 3.35 -3.08 4.02 4.8 3.93 4.6 0.13 0.15 0.13 -0.11 3.14 -2.86 
+3 3.49 1.06 1.22 1.72 -1.52 1.58 -1.37 0.61 0.71 3.43 3.97 3.28 -2.82 3.36 -2.78 
+-2.88 -3.5 -1 -1.24 3.49 -2.73 3.58 -2.69 3.17 4.05 0.59 0.74 1.04 -0.78 2.52 -1.83 
+3.62 -2.56 3.67 4.8 0.48 -0.32 3.15 -2.15 1.71 2.26 1.93 2.52 -3.56 2.45 -3.41 2.46 
+-0.07 0.04 -3.43 2.56 -3.36 2.61 0.56 0.67 3.43 3.97 4.04 4.58 2.17 2.41 1.93 2.13 
+4.14 4.49 3.06 -2.5 3.13 -2.45 3.19 -2.41 3.23 -2.34 3.32 -2.3 3.36 -2.26 -2.69 -3.41 
+-1 -1.26 -3.64 -4.69 -1.84 1.2 -1.67 1.11 -3.28 -4.19 -0.39 -0.52 3.6 -2.32 3.64 -2.28 
+3.71 -2.24 3.78 -2.17 -0.37 -0.52 -2.96 -4.32 3.89 -2.12 3.25 4.84 -1.86 1.04 -1.95 1.09 
+3.04 4.34 0.32 0.45 3.41 4.77 -3.26 1.91 -0.35 0.22 -3.58 2.17 3.62 4.68 0.35 0.44 
+3.32 4.21 3.71 4.6 2.95 -1.86 0.39 -0.24 0.43 0.54 3.23 4.04 -3.25 2.08 3.82 4.51 
+-2.06 1.39 p
+-1.04 0.72 3.43 3.88 0.5 0.57 -2.97 2.11 -0.24 0.17 -2.7 1.98 4.15 4.34 -2.78 2.17 
+4.25 4.23 4.32 4.21 -2.23 1.87 -0.32 0.26 4.45 4.13 -2.43 2.13 4.55 4.01 -2.3 2.13 
+-4.64 -3.97 -2.32 2.2 -4.67 -3.97 -0.72 0.7 -1.61 1.58 -2.25 2.34 4.82 3.88 -2.13 2.32 
+4.95 3.78 4.99 3.73 -0.44 0.5 -1.47 1.75 5.1 3.61 3.45 2.38 1.69 1.17 1.78 -2.14 
+1.84 -2.12 1.89 -2.09 -2.52 -1.86 -2.43 -1.85 2.04 -2.08 2.26 1.75 2.6 2 2 -2.02 
+4.84 3.75 4.88 3.69 4.92 3.64 1.82 -1.85 1.67 -1.56 0.24 -0.24 1.09 0.84 3.71 2.84 
+1.86 -1.71 4.78 3.69 -1.18 1.09 -0.61 0.57 -1.02 0.97 -0.72 0.72 0.43 0.33 1.82 1.28 
+2.71 1.91 -1.61 1.67 -1.57 1.69 4.36 2.8 0.8 0.52 -0.63 0.74 -0.8 0.93 5.27 3.21 
+-1.3 1.61 -0.5 0.63 -0.79 1 2.93 1.65 2.54 1.37 -0.33 0.43 -0.58 0.8 -0.26 0.37 
+-1.08 1.61 -1.07 1.65 5.69 2.73 -0.93 1.59 -0.83 1.43 -0.08 0.16 0.41 0.19 5.42 2.32 
+-0.78 1.54 5.92 2.37 -0.7 1.47 2.71 1.02 3.3 1.2 -0.26 0.61 -0.32 0.8 6.07 2.06 
+6.13 1.95 0.52 -1.23 0.54 -1.24 6.05 2.04 0.52 -1.13 6.04 2.06 6.08 1.98 6.07 1.89 
+0.42 -0.89 6.07 1.91 0.39 -0.8 6.05 1.91 0.37 -0.7 0.39 -0.69 0.42 -0.7 0.43 -0.67 
+1.95 0.71 0 -3.38 -5.56 -2.54 -0.58 0.72 -0.57 0.73 -0.54 0.76 -5.73 -2.38 -0.58 0.82 
+-0.57 0.84 -5.82 -2.3 -0.58 0.93 -5.84 -2.32 -5.82 -2.36 0.71 -1.09 -4.25 -1.87 -1.48 -0.67 
+-3.91 -1.78 -1.78 -0.8 0.26 -0.37 0.61 -0.87 0.13 -0.18 0.78 -1.02 0.96 -1.19 0.97 -1.17 
+1.02 -1.18 1.05 -1.15 1.08 -1.13 1.13 -1.08 -1.09 -0.7 -1.35 -0.85 -2.64 -1.69 1.24 -1.15 
+1.25 -1.13 -3.38 -2.34 -1.48 -1.04 1.04 -0.91 0.32 -0.26 -0.63 -0.48 -4.1 -3.04 -4.71 -3.55 
+-4.66 -3.63 1.67 -1.32 -4.12 -3.36 -0.41 -0.35 -4.49 -3.78 1.89 -1.39 -4.36 -3.86 -4.34 -3.93 
+-1.17 -1.08 -3.1 -2.89 -4.23 -4.01 1.7 -1.15 0.58 -0.39 -1.15 -1.15 -2.97 -2.95 1.43 -0.93 
+0.98 -0.63 -2.62 -2.74 -1.35 -1.45 -2.69 -2.89 -1.26 -1.34 0.46 -0.29 1.26 -0.75 0.91 -0.55 
+-1.22 -1.36 -1.69 -1.91 -0.91 -1.04 0.79 -0.44 1.41 -0.82 0.56 -0.32 -0.65 -0.76 -1.65 -1.95 
+-1.37 -1.68 1.39 -0.75 1.48 -0.8 0.26 -0.15 2.28 -1.19 0.39 -0.2 2.21 -1.13 0.74 -0.37 
+-0.17 -0.26 -0.67 -0.89 -0.65 -0.86 -0.67 -0.89 -0.66 -0.89 -0.54 -0.74 2.97 -1.43 0.11 -0.04 
+0.66 0.89 0.63 0.89 0.63 0.87 0.65 0.89 0.63 0.89 0.08 0.11 0.18 -0.07 1.17 -0.57 
+1.19 -0.54 0.5 -0.24 0.48 0.65 1.11 1.56 1.11 1.54 0.54 0.78 3.28 4.52 0.89 -0.44 
+0.91 -0.41 1.11 -0.48 1.28 1.8 1.06 1.49 0.87 1.2 3.26 4.47 1.47 -0.68 1.28 -0.56 
+1.47 2.06 1.72 2.41 1.63 -0.72 1.06 -0.45 0.37 -0.16 2.19 -0.89 0.15 -0.07 2.73 -1.11 
+0.87 1.33 1.11 1.69 0.54 0.85 0.46 0.67 2.67 -1.04 2.71 -0.98 2.78 4.54 2.06 -0.74 
+0.58 -0.19 0.59 0.99 2.12 3.54 2.56 -0.87 2.58 -0.84 2.61 -0.79 2.63 -0.78 2.64 -0.73 
+1.34 -0.35 p
+0 -10.44 -0.11 -0.26 -1 -2.4 -0.87 -2.09 -0.11 -0.28 -1.82 -4.47 0.02 -0.02 3.08 -0.7 
+-0.8 -2.11 -0.97 -2.62 -0.04 -0.07 0.34 -0.09 2.89 -0.61 2.66 -0.54 0.59 -0.11 3.25 -0.61 
+3.27 -0.56 0.66 -0.11 2.62 -0.41 0.18 0.61 0.25 0.93 0.24 0.93 0.26 0.93 0.24 0.93 
+0.16 0.54 0.78 -0.13 1.41 -0.21 1.02 -0.13 0.3 -0.05 1.13 -0.17 1.13 -0.15 0.65 -0.09 
+0.39 1.67 0.67 2.95 0.07 0.26 1.15 4.86 -1.75 0.24 -1.26 0.17 -0.74 0.11 -2.25 0.34 
+-3 0.5 -0.29 0.04 -2.69 0.48 -0.3 -0.95 -1.13 -3.5 -0.11 -0.37 -0.54 0.11 -2.52 0.48 
+-3.06 0.61 1.75 4.8 -2.91 0.63 -2.91 0.67 0 10.44 0.55 -0.15 0.76 -0.2 0.5 1.09 
+1.64 3.55 2.59 -0.65 2.61 -0.61 1.95 4.66 1.97 4.64 2.41 -0.54 1.89 4.64 1.91 4.6 
+2.21 -0.45 1.82 4.6 2.08 -0.43 1.73 4.6 1.76 4.58 1.78 4.56 1.8 4.53 1.82 4.5 
+1.52 -0.3 1.73 4.49 1.41 -0.26 1.63 4.49 1.28 -0.21 1.3 -0.22 1.32 -0.17 1.26 4.51 
+-1.2 0.18 -2.34 0.39 -1.17 0.22 -1.15 0.24 -1.17 0.26 2.04 4.36 -1.02 0.24 -2.04 0.52 
+-1 0.3 2.54 4.21 -0.87 0.26 -0.86 0.28 -0.85 0.29 -0.84 0.3 3.06 4.04 -0.74 0.26 
+-3.15 -3.99 -0.82 0.33 -0.82 0.34 -1.61 0.7 -0.78 0.37 -1.52 0.78 -0.73 0.39 -0.74 0.41 
+-1.43 0.87 -0.7 0.43 -4.43 -3.43 -0.76 0.52 -0.78 0.52 -0.74 0.54 -0.71 0.54 -0.71 0.56 
+-0.7 0.57 -0.67 0.56 -0.65 0.59 -0.65 0.61 -1.22 1.22 -0.59 0.63 -0.56 0.65 -0.54 0.63 
+0 3.38 3.9 1.43 -0.73 1.22 -0.35 0.61 -0.33 0.63 -0.28 0.61 -0.28 0.65 -0.26 0.63 
+-0.24 0.63 -0.22 0.65 -6.29 -1.41 -0.24 0.74 -0.2 0.73 -0.2 0.76 -0.15 0.74 -0.16 0.76 
+-0.11 0.74 -0.09 0.76 -0.07 0.76 -6.47 -0.74 -0.04 0.84 -0.04 0.88 0.02 0.84 -6.49 -0.54 
+0.02 0.95 0.04 0.96 -6.49 -0.46 -6.49 -0.54 0.09 1.15 0.13 1.16 0.16 1.15 0.2 1.15 
+6.49 0.15 0.22 1.04 -6.47 -0.04 -0.24 -1.15 -6.46 -0.24 -6.49 -0.35 0.26 1.34 0.06 0.38 
+0.22 0.97 0.34 1.35 -2.47 -0.04 -3.97 -0.09 0.39 1.43 0.45 1.43 0.5 1.43 6.4 -0.18 
+0.52 1.33 2.45 -0.11 3.91 -0.24 2.08 -0.12 4.25 -0.3 0.52 1.13 0.54 1.13 -3.82 0.39 
+-2.47 0.24 -0.57 -1.21 -2.52 0.19 -3.82 0.24 -6.36 0.36 0.65 1.41 0.69 1.43 0.74 1.39 
+6.23 -0.65 2.24 -0.26 3.99 -0.48 0.7 1.19 0.74 1.2 0.79 1.17 -2.04 0.37 -4.04 0.67 
+0.87 1.29 0.91 1.25 0.98 1.24 -5.95 1.24 1.06 1.35 -5.88 1.25 1.17 1.41 -3.49 0.79 
+-2.37 0.5 -5.88 1.2 1.37 1.61 -5.84 1.19 -1.43 -1.69 -5.94 1.02 -1.05 0.18 -4.93 0.76 
+1.57 1.91 1.63 1.89 1.69 1.87 1.76 1.82 1.82 1.82 -5.64 1.37 1.96 1.89 2.04 1.89 
+2.11 1.82 2.19 1.82 2.24 1.78 2.32 1.76 2.36 1.71 0.7 0.48 1.74 1.21 4.88 -2.15 
+2.38 1.57 1.59 0.97 0.87 0.54 2.5 1.48 2.56 1.45 2.61 1.41 2.67 1.35 2.71 1.32 
+2.78 1.28 2.79 1.24 3.71 -2.95 0.26 0.11 2.45 1 2.76 1.08 2.8 1.02 2.82 0.98 
+2.88 0.93 p
+2.91 0.89 -1.23 1.47 -1.56 1.84 2.71 0.79 0.39 0.11 3.15 0.84 0.99 0.26 2.17 0.52 
+-2.32 3.45 3.36 0.75 -2.16 3.47 3.55 0.76 -2.02 3.45 -1.8 3.02 -0.24 0.41 0.52 0.11 
+3.43 0.67 -1.89 3.41 -4.14 -0.8 -1.26 2 -0.84 1.32 -4.27 -0.93 -2.32 3.26 -2.34 3.21 
+-2.37 3.15 -2.41 3.13 -2.43 3.08 -0.04 0 -5.12 -1.3 -4.51 -1.24 -0.59 -0.17 -0.17 0.2 
+-2.67 2.69 -3.26 -0.96 -1.97 -0.61 -4.34 -1.39 -0.8 -0.29 -1.09 -0.37 -3.99 -1.39 -3.58 -1.32 
+-1.41 -0.52 -2.82 1.99 -0.79 0.55 -2.82 1.93 -0.8 0.54 5.27 2 0.07 0.02 0.11 0.04 
+5.32 1.89 -1.5 1.17 -1.82 1.41 5.68 1.91 1.11 0.34 4.69 1.46 -3.02 2.69 0 139.31 
+10.79 1.32 13.2 1.63 13.17 1.08 13.2 1.09 13.17 0.54 13.19 0.54 26.37 0 13.2 -0.54 
+13.17 -0.54 13.2 -1.09 13.17 -1.08 13.2 -1.63 13.17 -1.63 13.2 -2.17 3.15 -0.52 0 -135.26 
+-1.74 -1.2 -1.73 -1.24 -4.04 1.41 -2.04 0.67 -0.45 -0.37 -2.67 -2.12 -0.09 -0.07 -3.19 -2.62 
+-0.7 0.22 -5.09 1.58 -2.96 -2.75 -2.91 -2.8 -2.89 -2.87 -5.3 1.48 -2.64 -2.95 -5.16 1.3 
+-5.23 1.21 -5.25 1.11 -2.06 -3.16 -0.32 0.04 -4.8 0.91 -5.16 0.87 1.3 2.56 0.37 0.71 
+-4.03 0.61 -1.37 0.2 -1.04 -2.37 -0.41 -0.93 -5.23 0.66 -5.25 0.58 -1.02 -3.43 -5.08 0.46 
+-0.2 0 -4.9 0.34 -5.1 0.24 -0.35 -2.97 -0.07 -0.52 -2.4 0.08 -2.5 0.04 -0.16 -2.69 
+-0.04 -0.85 -0.2 -3.56 -4.51 0.04 0 -3.62 -4.32 -0.04 -0.02 0 -4.3 -0.11 -4.32 -0.2 
+-4.3 -0.29 -0.13 0.56 -0.65 3 -4.47 -0.37 -4.47 -0.46 -4.43 -0.54 1.35 -3.51 -4.23 -0.59 
+1.54 -3.5 3.82 0.52 0.21 0.02 1.32 -3.56 3.86 0.46 3.89 0.39 3.91 0.32 0.75 -3.66 
+3.73 0.24 3.73 0.17 3.76 0.09 0.17 -3.73 3.58 0.04 3.55 -0.04 -0.19 -3.76 3.39 -0.08 
+3.36 -0.16 3.37 -0.21 3.36 -0.26 3.34 -0.32 3.32 -0.39 1.29 3.66 1.97 -0.25 0.57 -0.07 
+0 -128.69 -1.24 -0.37 -1.24 -0.34 -1.25 -0.33 -2.52 -0.61 0.87 -1.93 1.11 -2.5 -0.3 -0.07 
+-1.09 -0.24 -1.41 -0.28 -1.41 -0.26 -1.41 -0.24 -1.43 -0.21 -0.55 -0.09 -0.89 -0.11 -1.46 -0.2 
+1 -4.06 0.13 -0.52 0.13 0.02 1.43 0.18 0.46 -1.76 0.75 -2.84 1.5 0.21 0.17 0.02 
+1.67 0.26 0.37 -1.15 0.8 -2.52 0.29 -0.91 1.78 0.29 1.75 0.32 1.79 0.35 -0.18 0.43 
+-1.36 3.45 -0.26 0.65 0.85 0.17 0.78 0.18 1.11 0.24 0.52 0.13 1.61 0.39 -0.67 1.39 
+-1.49 3.04 -2.2 4.41 0.04 0 1.32 0.35 1.35 0.37 1.34 0.39 -2.56 4.3 0 128.69 
+0.95 -0.13 1.97 -0.3 1.5 -0.24 -1.62 -3.61 3.28 -0.56 3.23 -0.63 3.23 -0.68 3.19 -0.71 
+3.17 -0.79 2.43 3.32 0 -106.58 -0.7 -0.67 -0.74 -0.67 -0.74 -0.65 4.99 -3.13 0.83 0.74 
+0.8 0.74 0.78 0.74 5.19 -2.98 0.82 0.82 -5.25 2.91 -0.76 -0.75 -5.23 2.91 0 106.58 
+0.06 0.08 0.87 -0.24 2.43 -0.65 3.25 -0.95 -2.82 -3.3 -2.78 -3.32 2.91 -0.89 2.88 -0.93 
+2.82 -0.98 2.8 -1.02 0.34 -0.12 2.41 -0.96 2.71 -1.11 0.89 -0.37 1.8 -0.78 -0.48 -0.37 
+-3.34 -2.56 p
+2.49 -1.13 2.46 -1.17 2.41 -1.2 2.34 -1.23 0 -0.02 2.32 -1.26 0.52 -0.3 1.73 -1.02 
+2.2 -1.34 -4.64 -2.43 -4.6 -2.49 -4.1 -2.28 -0.48 -0.29 -1.17 0.7 -0.7 0.41 -1.89 1.07 
+-1.96 1.04 -1.95 1 -1.02 0.5 -0.99 0.5 -3.93 -3.02 1.89 -0.91 1.84 -0.93 1.82 -0.96 
+1.78 -1 1.73 -1 1.7 -1.04 1.67 -1.08 1.63 -1.09 1.58 -1.11 2.06 0.96 2.91 1.32 
+-1.69 1.2 -1.61 1.11 -0.13 0.09 -1.75 1.13 2.25 1.22 2.43 1.28 4.71 2.41 4.78 2.34 
+2.11 -1.43 2.06 -1.43 2 -1.45 1.96 -1.5 1.39 -1.12 0.5 -0.41 0.52 -0.41 1.32 -1.13 
+1.78 -1.58 1.73 -1.59 1.41 -1.39 0.24 -0.24 -2.02 -0.55 -3.61 -0.95 1.38 -1.39 0.17 -0.17 
+-0.11 -0.02 -5.58 -1.45 1.41 -1.47 1.34 -1.48 1.3 -1.49 5.88 1.2 1.3 -1.61 1.25 -1.63 
+1.2 -1.65 1.13 -1.65 1.07 -1.67 -6.17 -0.7 0.98 -1.58 0.93 -1.58 0.87 -1.59 0.81 -1.61 
+-2.46 -0.15 -3.86 -0.24 -6.29 -0.45 0.7 -1.43 0.65 -1.41 -6.36 -0.36 0.57 -1.32 0.52 -1.33 
+0.48 -1.32 0.43 -1.35 -6.45 -0.04 -2.52 -0.04 -3.91 -0.11 0.37 -1.15 0.3 -1.12 0.29 -1.15 
+-1.91 0.02 -4.55 0.02 0.22 -1.04 0.19 -1.06 0.15 -1.05 -6.49 0.26 0.11 -0.96 -6.49 0.26 
+0.09 -0.87 0.06 -0.85 0.02 -0.87 6.49 -0.54 0 -0.95 6.49 -0.74 0 1.04 2.95 -0.32 
+3.54 -0.39 -0.02 1.13 -0.05 1.15 -0.08 1.15 -0.13 1.16 -0.15 1.15 -0.22 1.15 4.77 -0.18 
+0 -33.48 -0.17 -0.24 -0.67 -0.91 -0.87 -1.13 -0.91 -1.08 1 -0.54 4.41 -2.34 0.98 1.17 
+0.96 1.19 0.91 1.2 -5.62 2.69 0 33.48 1.71 -0.06 6.49 -0.35 0.22 -1.34 6.46 -0.52 
+0.17 -1.43 0.11 -1.43 0.08 -1.43 -6.49 0.8 0.04 -1.32 -0.02 -1.34 6.46 -1 -0.08 -1.41 
+-0.11 -1.41 6.41 -1.28 -0.18 -1.5 -0.24 -1.49 -0.28 -1.48 -0.32 -1.47 3.12 -0.85 3.15 -0.87 
+-0.41 -1.54 -0.46 -1.54 -0.2 -0.59 -0.3 -0.95 -0.57 -1.52 -0.58 -1.49 6.04 -2.2 -0.7 -1.59 
+-0.76 -1.56 5.9 -2.43 -0.84 -1.62 -0.91 -1.59 -0.93 -1.59 -5.73 2.68 -0.93 -1.5 -0.98 -1.47 
+-1.02 -1.46 -1.09 -1.43 5.49 -2.95 5.43 -3.02 -1.26 -1.56 -1.28 -1.52 5.25 -3.21 1.76 -1.08 
+3.45 -2.2 -1.5 -1.63 -1.54 -1.61 -3.73 2.52 -1.32 0.89 -1.5 -1.52 -1.56 -1.5 -0.15 -0.15 
+-1.43 -1.32 -1.63 -1.46 4.73 -3.6 4.71 -3.69 -1.85 -1.52 -1.86 -1.47 -0.02 -0.02 -0.05 0.04 
+-1.99 1.67 -2.5 2.06 -1.84 -1.41 -4.49 3.78 -2.71 2.23 -1.82 1.48 1.67 1.32 -4.67 3.63 
+-4.71 3.55 -0.95 0.72 -3.78 2.8 1.37 1.17 1.37 1.19 -4.97 3.32 1.24 1.15 1.2 1.17 
+1.17 1.2 1.13 1.21 -5.32 3.02 -1.05 -1.15 -3.64 2.11 -1.62 0.93 -1 -1.06 -1.04 -1.04 
+2.52 -1.56 2.58 -1.58 -0.93 -0.91 -0.21 -0.2 -1.17 -1.06 4.91 -3.34 -1.74 -1.47 -0.89 -0.74 
+4.69 -3.5 -1.45 -1.13 4.57 -3.62 -0.54 -0.42 -1.02 -0.75 -1.61 -1.13 4.34 -3.78 2.45 -2.17 
+1.87 -1.65 0.98 0.67 0.8 0.57 1.76 1.26 1.41 -1.2 3.04 -2.58 4.41 -3.82 -1.2 -0.84 
+-0.74 -0.52 -1.95 -1.32 -2 -1.3 4.11 -4.02 4.06 -4.06 -0.89 -0.54 -1.32 -0.8 -2.26 -1.32 
+-2.3 -1.3 p
+-3.77 4.16 -2.24 -1.21 -2.28 -1.2 3.61 -4.25 3.55 -4.3 -2.49 -1.21 -2.52 -1.22 -3.36 4.37 
+-2.47 -1.13 -3.32 4.36 -2.38 -1.07 -1.63 -0.7 -0.8 -0.34 -0.43 0.63 -2.71 3.78 -2.37 -0.98 
+-2.37 -0.93 -2.4 -0.91 -2.43 -0.87 -2.8 4.47 -2.34 -0.8 -1.34 -0.46 -1.04 -0.33 -1.37 2.37 
+-1.24 2.13 -4.6 -1.43 -2.34 -0.65 -2.34 -0.63 -0.85 -0.24 -1.52 -0.37 0.52 -1.18 1.15 -2.54 
+0.41 -0.91 -2.5 -0.61 -2.49 -0.57 -0.54 -0.11 -2 -0.41 -1.34 -0.28 -1.17 -0.21 0.32 -0.96 
+0.67 -1.93 0.63 -1.84 -1.48 -0.28 -1.2 -0.2 -0.3 -0.07 -2.34 -0.39 -0.54 -0.09 -2.15 -0.32 
+0.85 -3.11 0.46 -1.69 0.28 -1.11 0.52 -1.93 0.48 -1.76 -0.93 -0.13 -1 -0.16 -0.97 -0.12 
+0.46 -1.89 0.45 -1.91 0.24 -1.04 -0.48 -0.07 -0.89 -0.11 -0.89 -0.13 -0.76 -0.09 0.5 -2.32 
+0.54 -2.54 -1.25 -0.16 -1.39 -0.15 -0.48 -0.05 0.26 -1.41 0.65 -3.5 -1.43 -0.15 -1.58 -0.15 
+-0.22 -0.02 0.05 -0.29 0.32 -1.98 0.33 -2 0.11 -0.67 -0.58 -0.04 -1.76 -0.15 -1.02 -0.09 
+0.11 -0.67 0.18 -1.2 0.15 -1.17 0.17 -1.17 0.11 -0.73 -1.54 -0.13 -1.93 -0.13 -0.26 -0.02 
+-1.11 -0.07 -1.09 -0.07 -1.02 -0.06 0.11 -0.93 0.09 -1.05 0.11 -1.02 0.11 -1.04 0.09 -0.93 
+-0.61 -0.04 -0.67 -0.02 -0.67 -0.04 -0.67 -0.02 -0.67 -0.04 -0.29 -0.02 0.41 -4.99 0.38 -5 
+0.69 0.02 1.78 0.09 0.89 0.06 0.41 0.02 0.07 -0.74 0.15 -1.54 0.16 -1.56 0.11 -1.17 
+0.09 -1.11 0.37 -3.93 3.95 0.24 0.57 -5.05 4.04 0.3 0.63 -5.06 0.63 -5.08 0.61 -5.08 
+0.63 -5.1 -4.41 -0.3 -4.38 -0.24 0.41 -5.12 -4.47 -0.21 -4.51 -0.15 -4.5 -0.12 -0.17 5.12 
+-4.41 -0.06 -4.41 -0.02 0 5.1 -4.34 0.02 0.08 5.1 -4.23 0.06 0.18 5.08 0.19 5.08 
+4.04 -0.06 0.11 5.05 -3.97 0.07 -3.97 0.11 -3.95 0.16 -3.95 0.2 -0.48 -5.05 4.06 -0.2 
+-0.37 -5.05 -0.35 -5.08 -4.23 0.2 -4.23 0.26 -4.21 0.28 -0.63 -5.08 -4.27 0.35 -0.71 -5.1 
+-0.67 -5.1 -0.67 -5.11 4.53 -0.35 0.61 5.12 4.47 -0.3 4.5 -0.26 4.47 -0.21 4.49 -0.15 
+-0.24 -5.14 -0.26 -5.14 4.66 -0.11 0.17 5.14 4.59 -0.09 4.6 -0.02 0 -10.29 -4.75 0.02 
+-0.08 -5.17 -4.84 0.07 -4.82 0.13 -4.82 0.15 -0.32 -5.16 4.9 -0.18 4.91 -0.13 -0.15 -5.19 
+4.99 -0.06 -0.09 -5.21 -0.07 -5.21 -0.09 -5.21 -5.21 0.07 -5.21 0.13 -5.21 0.18 -5.21 0.24 
+-5.18 0.25 -5.19 0.33 -0.5 -5.21 -0.5 -5.23 -0.5 -5.25 -0.48 -5.23 -0.48 -5.27 -0.46 -5.25 
+-0.46 -5.27 5.66 -0.33 5.69 -0.29 -0.33 -5.29 -0.3 -5.27 -0.61 -10.59 -5.92 0.28 -5.91 0.32 
+-0.41 -5.29 -0.39 -5.32 -6.03 0.39 -1.31 -15.95 -6.18 0.43 -6.16 0.48 -0.5 -5.32 -6.2 0.54 
+-0.57 -5.34 -0.55 -5.34 -0.52 -5.34 -6.34 0.58 -0.57 -5.34 -0.54 -5.36 -6.41 0.63 -0.58 -5.34 
+-1.08 -10.72 -1 -10.71 -0.96 -10.72 -0.43 -5.38 -6.73 0.67 -0.46 -5.38 6.75 -0.63 -0.41 -5.38 
+-0.39 -5.36 -0.37 -5.36 6.86 -0.59 -0.32 -5.34 6.9 -0.54 -0.29 -5.34 6.93 -0.48 -0.48 -10.68 
+-0.21 -5.34 7.03 -0.41 -0.19 -5.32 7.05 -0.37 -0.15 -5.32 7.07 -0.32 -0.12 -5.32 7.09 -0.28 
+0.11 5.32 p
+7.07 -0.24 7.1 -0.2 7.1 -0.15 7.09 -0.14 7.1 -0.07 7.12 -0.02 0 -376.06 -6.79 0 
+-3.38 -0.04 -3.39 -0.02 -3.38 -0.04 -3.38 -0.07 -3.37 -0.04 -3.36 -0.09 1.02 -3.75 -6.47 -0.18 
+1.33 -3.73 -3.11 -0.11 -3.06 -0.11 -3.09 -0.13 -3.05 -0.12 -6.08 -0.31 2.15 -3.71 -2.89 -0.17 
+2.32 -3.67 -2.76 -0.17 -5.43 -0.39 2.78 -3.62 -2.56 -0.22 3 -3.57 -2.41 -0.22 -2.39 -0.24 
+-2.36 -0.24 3.46 -3.52 -2.21 -0.26 -2.19 -0.26 -2.17 -0.28 3.95 -3.46 -2 -0.25 -2 -0.31 
+4.32 -3.36 -3.64 -0.61 -1.78 -0.31 -4.73 3.34 -1.91 -0.32 -1.89 -0.35 -1.84 -0.35 -1.82 -0.37 
+-1.81 -0.39 -1.78 -0.39 -1.75 -0.39 -5.58 3.34 -1.84 -0.44 -1.82 -0.43 -5.73 3.39 -1.91 -0.45 
+-1.89 -0.48 -1.84 -0.5 -1.82 -0.5 -1.76 -0.5 -6.25 3.41 -1.87 -0.54 -1.82 -0.57 -6.36 3.5 
+-6.29 3.58 -6.17 3.67 -6.05 3.75 -5.97 3.84 -5.86 3.93 -5.76 4.02 -5.64 4.08 -5.56 4.16 
+-5.43 4.26 -5.36 4.29 3.09 0.57 3.11 0.54 -0.61 0.52 -4.41 3.82 1.05 0.17 2.21 0.33 
+-2.67 2.43 -2.15 1.97 -2.37 -0.32 -1 -0.15 3.93 -3.54 0.99 -0.89 -1.23 -0.2 -2 -0.32 
+-3.17 -0.55 -3.12 -0.56 -3.09 -0.57 -1.84 -0.36 -1.17 -0.24 1.82 -1.48 3.73 -2.95 5.66 -4.34 
+-2.78 -0.66 -2.71 -0.67 5.99 -4.27 -2.54 -0.7 6.19 -4.21 6.31 -4.1 6.42 -4.02 -2.17 -0.72 
+-2.13 -0.76 -2.06 -0.76 -2.02 -0.8 6.97 -3.88 -1.87 -0.8 -1.78 -0.82 -1.73 -0.84 7.38 -3.75 
+7.46 -3.64 -1.48 -0.85 -1.41 -0.84 7.77 -3.47 -1.26 -0.84 7.97 -3.32 -1.13 -0.84 -1.04 -0.87 
+-1 -0.89 -0.93 -0.89 -8.31 3.19 -0.96 -0.96 -8.31 3.32 -0.97 -1 -0.89 -1.02 -0.84 -1.05 
+-0.76 -1.06 -0.7 -1.09 -0.63 -1.11 -0.54 -1.13 -0.48 -1.15 -8.83 3.19 -0.46 -1.19 -0.39 -1.24 
+-0.3 -1.26 9.03 -3.06 -0.16 -1.21 -0.07 -1.26 9.18 -2.75 9.2 -2.59 9.24 -2.38 0.14 -1.09 
+0.21 -1.11 0.26 -1.11 0.34 -1.12 0.43 -1.13 0.5 -1.15 -9.39 1.97 0.56 -1.22 0.65 -1.25 
+0.74 -1.24 0.8 -1.28 0.91 -1.28 0.97 -1.28 1.07 -1.29 1.17 -1.3 1.24 -1.3 1.34 -1.32 
+1.41 -1.3 1.52 -1.32 -9.2 1.19 1.65 -1.43 9.13 -1.09 1.7 -1.32 1.78 -1.32 1.87 -1.3 
+1.95 -1.32 2.04 -1.32 2.15 -1.3 8.55 -0.28 2.13 -1.2 2.19 -1.2 2.28 -1.17 2.34 -1.17 
+2.45 -1.15 2.52 -1.13 2.58 -1.13 2.67 -1.11 2.75 -1.08 2.82 -1.06 6.99 0.89 2.71 -0.93 
+2.78 -0.91 2.82 -0.91 6.3 1.3 2.69 -0.78 2.73 -0.76 2.8 -0.74 2.84 -0.72 2.91 -0.67 
+2.95 -0.67 4.82 1.89 2.76 -0.55 2.8 -0.54 2.82 -0.5 3.99 2.14 2.61 -0.41 2.64 -0.39 
+2.67 -0.37 2.69 -0.34 -3 -2.34 2.97 -0.37 6.03 -0.61 3.04 -0.24 3.06 -0.24 3.06 -0.19 
+3.08 -0.15 3.08 -0.11 3.11 -0.09 3.1 -0.07 6.23 0 3.11 0.07 3.08 0.09 3.1 0.11 
+3.08 0.15 3.06 0.19 3.06 0.24 1.97 -2.45 3.32 0.29 -2.26 2.41 3.04 0.3 2.99 0.3 
+2.97 0.37 2.96 0.37 2.91 0.44 3.61 -2.21 3.69 -2.13 3.77 -2.06 -3.71 -0.58 3.61 -2.06 
+-4.04 -0.59 -4.08 -0.56 -4.14 -0.5 2.84 -2.17 -4.47 -0.5 2.61 -2.14 2.67 -2.11 5.1 0.61 
+5.03 0.67 p
+3.41 -1.93 5.32 0.82 5.23 0.89 5.19 0.93 5.1 1.02 5.01 1.08 4.95 1.13 5.33 -1.3 
+5.14 1.3 5.02 1.37 4.92 1.41 4.82 1.46 6.55 -0.7 4.95 1.65 4.82 1.67 4.71 1.73 
+4.55 1.78 4.43 1.81 7.81 0.13 4.47 2 4.34 2 4.19 2.04 8.46 0.76 4.19 2.19 
+4.02 2.22 3.84 2.23 3.71 2.23 3.54 2.24 3.36 2.23 3.24 2.23 3.06 2.24 2.89 2.23 
+2.76 2.21 2.61 2.21 2.43 2.19 2.3 2.18 1.89 1.89 0 -65.58 -9.85 -2.28 -9.36 -1.91 
+-8.55 -2.93 -8.57 -2.93 -8.92 -2.71 -8.9 -2.71 7.98 0.93 -19.27 -5.43 7.64 0.72 8.14 1 
+-10.92 -2.91 -10.89 -2.91 7.66 0.71 -11.83 -2.8 -11.83 -2.82 7.05 0.43 -12.82 -2.62 -12.85 -2.62 
+-13.22 -2.09 -13.21 -2.11 4.79 -0.36 5.21 -0.22 -10.07 -1.26 -10.07 -1.28 -10.09 -1.28 3.86 -0.52 
+-10.89 -0.87 -10.87 -0.87 -10.89 -0.89 2.15 -0.74 11.59 0.98 11.59 1 11.57 0.97 11.35 1.61 
+11.32 1.61 11.35 1.61 6.82 0.32 7.55 0.59 12.33 2.78 12.34 2.75 12.33 2.78 10.68 2.02 
+12.35 3.8 12.37 3.82 12.35 3.8 -12.61 -3.3 -11.71 -3.39 -11.7 -3.36 -11.71 -3.38 -9.66 -1.54 
+-8.79 -1.15 -8.01 -0.84 -7.36 -0.54 -6.77 -0.32 9 1.95 9.01 1.93 9 1.95 13 3.41 
+13.02 3.43 -8.81 -1.32 11.92 3.51 11.89 3.52 -9.22 -1.65 10.89 3.54 10.92 3.54 -9.53 -1.91 
+10.03 3.52 10 3.5 -9.72 -2.11 9.22 3.43 9.2 3.45 0 65.58 0.26 0.26 2 2.13 
+1.84 2.1 1.72 2.09 1.56 2.07 1.46 2.04 1.28 1.99 1.17 1.98 1.04 1.93 0.89 1.93 
+0.79 1.87 0.67 1.84 9.35 3.64 0.5 1.89 -9.33 -3.71 0.42 1.78 0.3 1.76 0.18 1.71 
+0.08 1.68 -0.04 1.65 -0.15 1.61 -0.26 1.58 8.88 4.02 -0.43 1.58 -0.54 1.54 -0.63 1.5 
+-0.74 1.48 -0.84 1.43 -0.91 1.39 -1.02 1.37 -8.29 -4.23 -1.02 1.32 -1.12 1.28 -1.2 1.24 
+-1.28 1.19 -1.34 1.2 -1.46 1.15 -1.52 1.11 -1.58 1.11 -1.67 1.04 -1.74 1.04 -1.82 1 
+-7.34 -4.19 -1.8 0.95 -1.84 0.96 -7.25 -4.11 -7.37 -3.97 -1.7 0.91 -1.79 0.86 -1.84 0.85 
+-1.88 0.85 -1.96 0.8 -2.02 0.8 -2.06 0.76 6.64 4.02 6.51 4.1 -2.32 0.76 -2.39 0.72 
+-1.69 0.5 -0.76 0.21 -2.5 0.67 -1.07 0.29 -1.47 0.39 -2.61 0.63 -2.65 0.63 -1.26 0.28 
+-1.43 0.31 -2.73 0.59 -2.78 0.56 5.32 4.14 -2.93 0.54 -3 0.52 5.02 4.21 -3.15 0.48 
+-3.17 0.48 -4.77 -4.19 -0.52 0.09 -2.59 0.39 -3.14 0.43 -3.18 0.44 -3.53 -3.2 -1 -0.89 
+-3.11 0.43 -3.14 0.39 -3.17 0.41 -3.2 0.37 -3.23 0.38 -4.06 -4 -3.15 0.37 -4.01 -3.95 
+-3.06 0.35 -3.09 0.34 -3.1 0.33 -3.15 0.31 -3.16 0.3 -3.19 0.29 -3.21 0.28 -3.25 0.26 
+-3.26 0.24 -3.28 0.24 -2.87 -3.85 -3.16 0.24 -6.42 0.43 -3.23 0.2 -3.23 0.17 -3.28 0.17 
+-3.25 0.17 -3.3 0.16 -3.3 0.13 1.74 3.82 -3.43 0.13 -6.9 0.21 -3.48 0.11 -1.25 -3.8 
+-10.09 0.26 -3.37 0.04 -3.38 0.07 -3.39 0.04 -3.38 0.02 -3.38 0.04 -6.77 0 0 381.36 
+7.07 0.02 7.08 0.07 7.07 0.13 7.08 0.15 0.08 -5.29 7.08 0.2 0.09 -5.3 7.12 0.22 
+7.09 0.28 p
+7.09 0.32 0.11 -5.29 0.13 -5.3 0.11 -5.29 0.17 -10.55 -7.16 -0.3 0.07 -5.27 7.16 0.3 
+0.06 -5.25 7.16 0.33 0.07 -5.25 0.04 -5.25 0.05 -10.46 7.18 0.35 0 -5.23 -0.05 -10.42 
+-0.04 -5.21 7.16 0.37 -0.04 -5.18 -0.09 -5.19 -0.09 -5.17 -7.14 -0.34 -0.21 -10.29 -7.14 -0.28 
+-0.11 -5.12 -0.13 -5.1 -0.16 -5.1 -0.15 -5.07 7.08 0.25 -0.2 -5.08 -0.21 -5.05 7.01 0.28 
+-0.24 -5.05 -0.26 -5.03 -0.29 -5.02 -0.3 -5.01 6.93 0.28 -0.35 -5.02 -0.37 -4.97 -0.39 -4.97 
+-0.39 -4.94 6.77 0.26 -0.45 -4.95 -0.48 -4.93 6.71 0.26 -0.54 -4.93 -0.56 -4.88 6.59 0.24 
+-0.63 -4.88 -0.65 -4.88 -0.7 -4.84 6.47 0.22 12.89 0.47 12.8 0.52 0.91 4.93 12.85 0.61 
+6.4 0.33 1 4.99 0.95 5.02 6.46 0.39 0.98 5.04 6.46 0.41 0.98 5.1 6.49 0.46 
+0.95 5.12 0.93 5.14 0.87 5.17 0.83 5.18 0.78 5.19 13.29 1.17 0.78 5.25 0.76 5.27 
+0.71 5.3 0.65 5.29 0.64 5.3 0.56 5.34 6.75 0.76 0.55 5.36 6.75 0.8 0.49 5.41 
+6.75 0.84 0.48 5.42 6.73 0.91 0.43 5.47 6.7 0.98 0.41 5.49 0.37 5.51 0.3 5.51 
+0.26 5.53 0.2 5.54 -6.73 -1.09 0.15 5.51 0.11 5.52 0.04 5.53 0.02 5.54 -6.79 -1.15 
+-0.02 5.51 -0.09 5.54 -0.13 5.51 6.77 1.21 -0.2 5.55 -0.21 5.55 6.7 1.3 -0.28 5.55 
+6.69 1.37 -0.35 5.6 6.62 1.43 -0.41 5.62 -0.45 5.62 6.58 1.52 -0.55 5.62 6.54 1.58 
+-0.61 5.66 6.47 1.65 -0.68 5.69 -0.73 5.66 6.38 1.74 -0.8 5.7 -0.87 5.68 6.29 1.83 
+-0.93 5.71 -1.02 5.68 6.2 1.91 -1.09 5.71 -1.15 5.69 -1.19 5.68 -6.1 -1.97 1.17 -5.67 
+-6.18 -1.9 -6.21 -1.87 -6.25 -1.81 -6.29 -1.73 -6.32 -1.72 -1 5.58 -1.06 5.58 6.27 1.74 
+-1.12 5.58 6.18 1.8 6.14 1.84 -1.25 5.62 6.07 1.91 6.04 1.98 -1.39 5.61 5.95 2.05 
+5.9 2.11 -1.52 5.64 5.82 2.17 0.73 0.29 0 -183.64 -6.53 -1.26 -0.35 -5.71 -6.55 -1.2 
+-0.39 -5.64 -6.57 -1.16 -0.45 -5.62 -6.6 -1.09 -0.5 -5.57 -0.54 -5.56 -0.63 -5.55 -0.65 -5.55 
+-0.74 -5.54 -0.78 -5.53 -6.53 -0.87 -0.83 -5.49 -0.87 -5.47 -0.96 -5.45 6.45 0.78 -1.02 -5.47 
+6.4 0.76 6.36 0.8 1.06 5.54 1.02 5.55 0.96 5.56 0.89 5.57 6.45 0.96 0.84 5.62 
+0.79 5.62 0.71 5.64 6.47 1.09 0.67 5.68 0.61 5.69 0.54 5.7 0.5 5.71 0.41 5.71 
+0.37 5.73 0 183.64 5.02 1.95 -1.65 5.64 -1.74 5.64 5.64 2.32 5.58 2.37 -1.87 5.64 
+-1.96 5.62 5.45 2.46 -2.04 5.62 -2.11 5.59 5.27 2.54 -2.21 5.58 -5.23 -2.56 -2.21 5.55 
+-5.23 -2.49 -5.27 -2.45 -2.19 5.51 -5.28 -2.39 -5.34 -2.32 -5.38 -2.28 -2.08 5.47 -5.38 -2.21 
+-5.43 -2.15 -2.02 5.43 -2.06 5.43 -5.38 -2.11 -2.06 5.38 -2.11 5.38 5.25 2.11 5.21 2.17 
+5.16 2.23 2.28 -5.38 2.23 -5.4 2.17 -5.43 5.3 2.28 5.23 2.34 5.16 2.39 5.13 2.45 
+2.34 -5.45 5.12 2.5 2.34 -5.49 5.13 2.58 5.05 2.63 4.99 2.69 4.93 2.76 4.88 2.82 
+4.79 2.86 2.63 -5.55 4.79 2.93 4.73 3.02 2.67 -5.62 2.58 -5.64 2.52 -5.67 4.84 3.04 
+2.5 -5.73 p
+4.82 3.11 4.75 3.14 2.54 -5.77 2.47 -5.82 4.78 3.19 2.45 -5.86 2.37 -5.93 2.28 -5.95 
+2.21 -5.96 4.93 3.19 2.17 -6.03 2.11 -6.05 2.02 -6.12 4.99 3.19 2 -6.17 1.89 -6.18 
+5.01 3.17 1.87 -6.25 4.96 3.22 -1.88 6.29 -2 6.27 4.82 3.34 -2.12 6.25 -2.22 6.23 
+-2.3 6.16 -2.39 6.14 -2.47 6.08 -2.56 6.05 4.45 3.61 4.34 3.66 -2.75 6.04 4.21 3.78 
+-2.89 6.01 4.04 3.86 -3.04 5.99 3.91 3.95 -3.19 5.94 3.75 4.04 -3.34 5.9 -3.43 5.86 
+3.52 4.14 3.43 4.23 3.3 4.32 3.62 -5.88 2.97 3.99 0 -115.6 -4.84 -3.37 1.85 -6.36 
+1.78 -6.41 1.67 -6.42 4.97 3.23 -1.72 6.46 -1.8 6.45 -1.91 6.41 0 115.6 0.3 0.39 
+3.6 -5.95 3.21 4.47 3.61 -6.03 3.5 -6.1 3.25 4.52 3.5 -6.18 3.38 -6.25 3.28 4.58 
+3.19 4.67 3.43 -6.38 3.13 4.75 2.9 -5.53 0 -557.62 -11.15 -10.62 -4.25 -6.38 -11.46 -10.03 
+-5.01 -6.57 11.69 9.94 11.68 10.54 4.51 6.73 3.99 6.38 0 557.62 0.5 -0.96 3.32 -6.55 
+3.21 -6.62 3.12 -6.73 3 -6.77 2.91 -6.86 2.78 -6.92 2.69 -7.01 3.59 4.54 -2.76 7.05 
+-2.86 6.99 -2.97 6.88 -3.06 6.83 -3.19 6.73 3.12 4.86 2.99 4.95 3.32 -6.82 3.23 -6.9 
+3.02 5 3.19 -7.04 2.13 3.6 0 -34.66 -3.54 -4.6 2.52 -7.18 3.62 4.53 2.45 -7.33 
+2.37 -7.38 2.21 -7.46 -3.79 -4.36 -3.91 -4.25 -2.11 7.34 -2.22 7.27 -3.88 -4.27 -3.97 -4.19 
+2.11 -7.16 2 -7.21 4.07 4.08 1.93 -7.33 4.04 4.07 1.87 -7.44 4.02 4.1 1.78 -7.59 
+1.67 -7.64 4.04 4.04 1.56 -7.79 1.45 -7.86 1.3 -7.9 4.1 3.86 1.21 -8.05 1.09 -8.12 
+4.12 3.75 4.02 3.86 3.95 3.93 -1.21 8.42 -1.37 8.36 3.75 4.23 3.67 4.32 -1.65 8.48 
+-3.6 -4.43 -3.69 -4.32 -1.67 8.21 -3.73 -4.32 -3.82 -4.23 -1.7 7.96 -1.82 7.9 -1.98 7.81 
+-2.08 7.75 -2.23 7.68 -2.37 7.59 -3.54 -4.6 -2.4 7.46 -2.54 7.38 -3.5 -4.63 -2.61 7.25 
+0 34.66 0.87 1.46 3.15 -7.16 2.95 5.1 -3.26 7.23 2.73 5.25 -3.43 7.16 2.5 5.43 
+-3.62 7.09 2.28 5.58 -3.84 7.04 -3.93 6.92 -4.06 6.79 -2 -5.68 -4.08 6.68 -4.14 6.55 
+-2 -5.6 -4.14 6.45 -2.06 -5.51 -4.17 6.34 -4.28 6.23 -4.36 6.1 1.8 5.53 -4.53 6.01 
+1.56 5.62 1.39 5.71 4.69 -5.99 4.63 -6.12 -1.56 -5.73 4.45 -6.25 1.65 5.73 1.48 5.84 
+-4.6 6.25 -4.71 6.11 -4.8 5.99 -4.86 5.88 0.96 5.92 0.78 6.03 0.59 6.14 -5.21 5.71 
+0.33 6.23 -5.38 5.54 0.02 6.29 -0.17 6.4 -0.39 6.51 5.62 -5.42 5.58 -5.55 -0.43 6.68 
+-5.66 5.54 -0.76 6.77 -5.82 5.34 -5.86 5.18 0.93 -6.68 0.7 -6.55 -5.75 5.12 -5.79 5 
+-0.87 6.44 -5.93 4.8 -1.16 6.46 -6.05 4.58 -6.08 4.41 -6.12 4.25 1.37 -6.25 -6.07 4.19 
+-6.14 4.05 -6.14 3.91 -6.18 3.77 1.37 -5.88 -6.17 3.71 -6.18 3.6 -1.48 5.71 -6.27 3.36 
+1.52 -5.62 1.32 -5.58 -6.18 3.41 -6.23 3.28 -1.41 5.41 -1.61 5.43 -1.8 5.47 -6.34 2.87 
+-2.04 5.42 -1.07 2.63 -1.17 2.82 2.15 -0.89 4.25 -1.78 6.4 -2.8 -2.41 5.69 6.4 -2.82 
+6.42 -2.97 p
+6.39 -3.11 6.4 -3.25 -2.52 6.14 -2.76 6.2 -6.45 3.04 -6.45 2.88 -3.05 6.01 -6.47 2.63 
+3.06 -5.88 -6.45 2.61 -6.45 2.45 -1.99 0.74 -4.45 1.59 -2.71 4.84 -0.39 0.69 -1.84 0.61 
+-4.6 1.45 -6.27 1.88 -0.15 0.05 -0.29 0.45 -3.02 4.84 -2.91 0.79 -3.52 0.89 -2.91 4.32 
+-0.58 0.87 -3.73 5.16 -1 0.2 -4.66 0.95 -0.68 0.13 -3.91 5.01 -6.3 1.02 -2.1 2.54 
+-1.96 2.34 -5.84 0.71 -0.39 0.04 -0.67 0.79 -3.54 3.93 -1.73 0.15 -4.41 0.35 -4.37 4.54 
+-6.03 0.26 -4.49 4.36 -5.92 0.02 -5.86 -0.11 -1.02 -0.02 -4.82 -0.17 -2.39 -0.13 -3.41 -0.2 
+-4.34 3.8 -4.52 3.73 5.62 0.57 1.72 0.15 3.95 0.33 5.71 0.34 5.75 0.26 5.79 0.16 
+-5.14 4.34 -5.71 -0.28 -5.66 -0.39 -5.62 -0.5 -0.11 -0.02 -5.44 -0.58 -5.51 -0.7 -2.56 -0.37 
+-2.91 -0.43 -2.88 -0.45 -2.54 -0.43 4.46 -3.43 4.32 -3.47 4.16 -3.54 -5.69 -0.61 3.95 -3.47 
+3.78 -3.49 -3.06 -0.26 -2.73 -0.22 -5.75 -0.57 -5.73 -0.67 -2.3 2.06 -1.23 1.09 -5.6 -0.89 
+-3.58 2.99 -0.76 0.63 -2.93 2.3 -5.36 -1.2 -3.71 2.78 -5.23 -1.41 -3.69 2.63 -3.82 2.54 
+-3.93 2.5 -4.01 2.43 -4.12 2.39 -4.21 2.3 -0.04 0.02 -4.26 2.22 2.43 1.21 1.89 0.93 
+-2.7 1.34 -1.87 0.91 -4.64 2.19 -1.19 0.54 -3.54 1.56 -2.78 -1.73 -1.11 -0.7 -2.93 -1.88 
+-0.89 -0.59 -1.89 0.78 -2.62 1.06 -4.58 1.79 -3.47 -2.72 -4.49 1.61 -4.55 1.55 3.12 2.86 
+-0.56 0.18 -4.23 1.34 2.99 2.88 3.04 2.82 5.14 -1.67 5.08 -1.75 3.43 2.63 5.16 -1.93 
+3.63 2.47 5.25 -2.13 5.16 -2.21 4.01 2.23 4.06 2.18 4.1 2.08 1.63 0.8 2.54 1.24 
+-0.24 0.09 -5.18 2.34 -0.39 0.17 0.7 0.34 3.34 1.72 4.1 1.99 -6.27 2.7 -3.41 -1.8 
+-0.52 -0.28 -1.62 0.65 -4.6 1.84 -1.04 -0.65 -2.65 -1.61 -4.12 1.54 -2.02 0.74 0 135.26 
+10.05 -1.67 13.17 -2.75 13.19 -2.76 13.17 -3.34 13.2 -3.32 13.16 -3.77 13.2 -4.11 13.2 -4.55 
+13.19 -4.58 6.31 -2.5 0 -130.17 -0.71 0 5.62 -4.69 -5.86 0.04 5.34 -4.62 -5.9 0.09 
+5.03 -4.54 5.97 -0.22 6.01 -0.34 6.05 -0.45 0.13 -0.11 4.9 -4.91 4.89 -0.56 1.3 -0.16 
+6.18 -0.87 6.25 -0.98 6.29 -1.13 6.33 -1.25 5.06 -5.78 6.4 -1.56 4.8 -5.92 0.02 -0.02 
+0.05 0 6.42 -1.82 3.28 -4.36 1.28 -1.74 4.32 -6.09 6.51 -2.29 4.05 -6.2 3.78 -6.21 
+6.51 -2.69 3.52 -6.3 6.49 -2.97 3.23 -6.38 6.46 -3.23 6.49 -3.39 -3.17 6.62 -3.43 6.66 
+-6.54 3.15 -3.73 6.59 -6.55 2.87 -4.04 6.49 -4.32 6.49 -6.55 2.45 -4.58 6.39 -4.88 6.36 
+-6.51 2.02 -5.14 6.21 -6.45 1.71 -5.4 6.04 -6.39 1.41 -6.32 1.24 -6.27 1.13 -5.54 5.55 
+-6.16 0.82 3.58 -3.53 1.87 -1.87 -6.19 0.84 -4.64 0.55 -1.5 0.15 -5.34 5.12 -0.85 0.79 
+-4.71 4.27 -2.25 0.11 -3.71 0.17 -5.71 4.84 -5.1 0.02 0 130.17 6.88 -2.71 13.2 -5.23 
+7.66 -3.28 9.33 -4.25 9.36 -4.25 26.39 -13.29 9.5 -5.16 16.84 -9.68 13.2 -8.27 13.21 -8.27 
+1.08 -0.74 25.26 -17.66 12.35 -9.29 14.02 -11.15 9.29 -7.9 9.31 -7.92 7.74 -6.97 10.48 -9.98 
+10.48 -10.01 p
+5.42 -5.46 1.15 -1.24 0 -179.12 0.29 -6.94 5.32 -6.32 5.23 -6.49 -0.18 -6.83 5.04 -6.64 
+4.95 -6.79 0.39 6.86 4.95 -6.96 4.88 -7.1 0.39 6.97 4.88 -7.29 4.78 -7.45 4.66 -7.64 
+0.54 7.07 4.69 -7.83 2.47 -4.36 0 -44.82 -1.82 -6.14 3.61 -7.99 -2.11 -5.93 3.36 -8.03 
+-2.34 -5.73 3.15 -8.1 2.99 -8.2 -2.7 -5.43 2.78 -8.22 -2.9 -5.26 2.54 -8.22 -3.09 -5.04 
+-3.21 -4.91 2.23 -8.16 3.28 4.82 2.17 -8.33 2.02 -8.44 1.87 -8.5 3.41 4.62 1.79 -8.7 
+3.36 4.64 3.26 4.73 3.15 4.86 2.84 4.64 0 -46.18 -3.54 -4.21 -3.62 -4.14 -3.69 -4.04 
+-3.8 -3.97 -1.02 8.79 -3.82 -3.99 -3.93 -3.91 0.91 -8.55 3.97 3.8 0.79 -8.73 3.93 3.75 
+3.84 3.82 3.78 3.93 3.67 3.99 3.58 4.08 0.89 -9.46 3.56 4.04 -0.93 9.62 -3.52 -4.19 
+-1.04 9.38 0 46.18 0.21 0.32 -2.11 9.18 -2.25 9.07 2.75 5.34 -2.52 9.07 -2.69 8.96 
+2.43 5.71 -2.95 8.92 -2.32 -5.82 -2.99 8.71 -3.14 8.57 -3.3 8.44 2 6.07 -3.56 8.38 
+-3.69 8.25 -1.78 -6.23 -3.71 8.05 0 44.82 2.09 -3.62 4.43 -8.18 4.32 -8.33 0.85 7.03 
+-4.45 8.42 0.5 7.27 -4.71 8.27 -4.84 8.09 -4.95 7.88 -0.09 -7.4 -4.9 7.68 -5.04 7.48 
+-5.12 7.32 -5.23 7.14 0.18 -7.3 -0.05 -7.14 -5.08 6.96 -5.16 6.8 -5.25 6.61 -5.34 6.47 
+-5.43 6.29 0 179.13 8.9 -9.51 10.05 -10.74 6.27 -7.14 8.25 -9.92 8.24 -9.89 9.88 -12.67 
+10.55 -14.28 15.84 -23.13 2.48 -3.8 1.37 -2.28 0 -214.39 -1.84 -6.27 3.17 -9.13 2.99 -9.29 
+-2.23 -5.91 2.73 -9.31 2.54 -9.44 -2.61 -5.49 2.29 -9.44 2.69 5.38 2.19 -9.7 2 -9.8 
+2.75 5.2 -2.11 9.96 2.54 5.54 -2.39 9.96 -2.58 9.86 -2.76 9.7 -2.95 9.55 -3.12 9.39 
+-3.3 9.25 0 214.39 6.62 -10.83 0 -169.46 -0.93 -7.21 3.82 -9.68 1.08 7.07 -3.97 9.81 
+0 169.46 0.24 -0.39 5.86 -9.61 0 -44.97 4.64 -13.15 7.66 -14.78 3.52 -12.37 2.93 -11.79 
+2.41 -11.26 1.95 -10.77 1.5 -10.29 -5.66 13.71 -5.92 13.29 1.75 -10.29 1.34 -9.87 1 -9.51 
+-5.25 12.33 0.91 -9.33 0.59 -8.98 -4.95 11.63 0.52 -8.83 4.73 -11.48 0 -8.38 -0.26 -8.09 
+-0.5 -7.82 -4.1 11 -4.3 10.76 -0.37 -7.86 -0.61 -7.62 3.95 -10.5 0.75 7.48 0.76 -2.06 
+0 -127.61 -3.02 -4.71 -3.12 -4.6 -3.22 -4.52 1.05 -9.92 3.3 4.34 0.89 -10.18 3.28 4.26 
+3.17 4.36 -1.06 10.54 -1.26 10.42 0 127.61 3.17 -8.79 3.71 -11.09 0.91 7.4 0.7 7.66 
+1.46 -4.38 0 -114.46 -2.78 -4.92 1.2 -10.91 2.89 4.7 -1.3 11.13 0 114.46 2.41 -7.31 
+0.67 7.72 3.82 -12.15 0.65 7.77 3.78 -12.65 3.52 -12.93 3.21 -13.2 1.04 7.29 0.84 7.59 
+3.35 -14.08 0.86 7.57 0.63 7.88 3.47 -15.08 3.11 -15.41 2.69 -15.73 2.26 -16.02 -1.54 -6.3 
+1.65 -15.82 1.2 -16.08 0.73 -16.25 0.28 -16.45 -0.21 -16.63 -2.3 -3.67 -2.39 -3.57 0.37 15.62 
+-2.41 -3.95 -2.47 -3.84 0.07 14.67 -2.5 -4.13 -0.22 14.15 -0.61 14.02 -0.93 13.87 -1.28 13.7 
+-2.2 -5.38 -2.32 -5.21 -2.41 -5.05 -2.54 -4.89 0.87 -12.5 0.56 -12.61 0.26 -12.71 -2.88 -3.93 
+-2.95 -3.82 p
+-0.13 12.16 -2.97 -4 0.06 -11.91 -3.1 -3.67 -3.19 -3.58 -0.3 -11.48 -0.55 -11.57 -3.34 -3.04 
+-0.85 -11.37 -1.11 -11.41 -1.37 -11.46 -3.45 -2.28 -1.63 -11.26 -3.5 -2.04 -3.57 -2.02 -3.63 -2.04 
+-1.84 -10.61 -3.67 -1.8 -3.75 -1.8 -2.04 -10.22 -3.78 -1.63 -2.23 -10.05 -2.45 -10.03 -2.7 -10.02 
+-2.88 -10.01 -3.13 -9.98 -3.36 -9.94 -3.56 -9.89 3.45 0.35 -3.86 -10.02 -4.08 -9.96 -4.32 -9.92 
+-4.53 -9.83 -4.76 -9.75 -4.96 -9.66 2.82 -0.71 -5.29 -9.72 2.62 -0.96 2.52 -1.04 5.53 10.03 
+2.52 -1 2.41 -1.11 2.3 -1.21 5.67 10.68 2.3 -1.17 2.19 -1.25 5.67 11.18 2.21 -1.2 
+2.08 -1.34 5.67 11.76 2.11 -1.26 1.97 -1.39 1.84 -1.56 1.71 -1.74 1.54 -1.91 -6.49 -13 
+1.22 -2.39 -7.04 -13.04 -7.33 -12.78 0.61 -3.11 -7.86 -12.74 -8.14 -12.43 -0.11 -3.8 8.38 12.66 
+-0.11 -3.87 -0.39 -4.14 -8.9 -13.02 -9.18 -12.65 -9.42 -12.24 -1.52 -4.97 -1.87 -5.27 -2.23 -5.6 
+-2.67 -5.95 -3.1 -6.32 -3.61 -6.68 -4.1 -7.07 -4.71 -7.51 12.03 13.05 11.87 13.71 11.72 14.45 
+-4.11 -7.77 11.91 15.3 11.66 16.05 -3.75 -7.96 11.87 17.08 11.5 17.88 -3.28 -8.01 11.68 19.1 
+11.17 19.97 10.6 20.77 9.95 21.55 9.23 22.27 8.44 22.89 7.59 23.48 -0.48 3.3 6.29 22.96 
+-1.04 1.93 5.14 22.36 4.3 22.54 1.52 0.04 3.56 23.7 -1.65 -1.04 -1.71 -1.15 -1.83 -1.23 
+2.46 20.94 -1.93 -2.11 1.7 20.1 -2 -2.87 1.07 19.29 -2.04 -3.49 0.5 18.46 -0.07 18.32 
+-0.65 18.12 -1.21 17.88 -1.63 -5.79 -1.54 17.06 -2.02 16.79 -2.49 16.47 -2.93 16.17 -3.34 15.84 
+-3.73 15.45 -4.1 15.08 -0.17 8.98 -0.48 9.39 4.75 -15.82 4.35 -16.28 -0.11 9.05 -0.43 9.53 
+4.64 -17.64 -0.37 9.53 -5.05 18.14 0.78 -10.02 -5.08 17.12 0.8 -9.94 -5.1 16.19 -5.46 15.71 
+-5.82 15.19 -2 11.01 -2.52 11.54 -3.06 12.13 -7.4 15.43 -4.17 12.98 -8.14 14.95 0 44.97 
+2.37 -3.88 7.44 -13.26 7.25 -13.67 13.11 -26.98 6.01 -13.54 5.58 -13.39 10.2 -26.98 8.88 -26.97 
+1.71 -5.71 5.86 -21.23 6.34 -26.95 5.14 -26.96 3.95 -26.95 2.82 -26.96 1.69 -26.95 0.57 -26.95 
+-0.57 -26.98 -1.69 -26.95 -2.82 -26.96 -3.95 -26.95 -5.14 -26.96 -6.34 -26.95 -5.86 -21.23 -1.71 -5.71 
+-8.87 -26.98 -10.2 -26.97 -5.58 -13.39 -6.01 -13.54 -13.11 -26.97 -7.25 -13.67 -7.44 -13.26 -16.45 -26.99 
+-2.48 -3.8 -15.84 -23.13 -10.55 -14.28 -9.87 -12.67 -8.24 -9.9 -8.25 -9.91 -6.27 -7.14 -10.07 -10.75 
+-10.03 -10.74 -5.42 -5.47 -10.48 -10 -10.48 -9.98 -7.74 -6.97 -9.31 -7.92 -9.29 -7.9 -14.02 -11.16 
+-12.35 -9.29 -25.26 -17.66 -1.08 -0.74 -13.21 -8.27 -13.2 -8.27 -16.84 -9.68 -9.5 -5.16 -26.39 -13.29 
+-9.36 -4.25 -9.33 -4.25 -7.66 -3.28 -26.39 -10.46 -26.39 -9.12 -13.2 -4.1 -13.16 -3.77 -13.2 -3.32 
+-13.17 -3.34 -13.19 -2.76 -13.17 -2.75 -13.2 -2.19 -13.2 -2.17 -13.17 -1.63 -13.2 -1.63 -13.17 -1.08 
+-13.2 -1.09 -13.2 -0.54 -13.17 -0.54 -26.37 0 -13.19 0.54 -13.17 0.54 -13.2 1.09 -13.17 1.08 
+-13.2 1.63 -13.17 1.63 -13.2 2.17 -13.2 2.19 -13.18 2.75 -13.2 2.76 -13.2 3.34 -13.17 3.32 
+-13.13 3.77 -13.21 4.1 -26.39 9.12 -26.39 10.46 -7.66 3.28 -9.35 4.25 -9.33 4.25 -26.39 13.29 
+-9.5 5.16 p
+-16.84 9.68 -13.2 8.27 -13.21 8.27 -1.09 0.74 -25.26 17.66 -12.35 9.29 -14.02 11.16 -9.29 7.9 
+-9.31 7.92 -7.75 6.97 -10.5 9.98 -10.46 10 -5.43 5.47 -20.1 21.48 -6.27 7.14 -8.25 9.91 
+-8.24 9.9 -9.88 12.67 -10.55 14.28 -15.84 23.13 -2.47 3.8 -16.45 26.99 -7.45 13.26 -7.25 13.67 
+-13.11 26.97 -6.01 13.54 -5.58 13.39 -10.2 26.97 -8.87 26.98 -1.71 5.71 -5.86 21.23 -6.33 26.95 
+-5.12 26.96 -3.97 26.95 -2.82 26.96 -1.7 26.95 p f*
+255 0 r6
+476.04 1455.75 -2.8 4.95 3.75 6.36 3.84 6.27 -2.52 5.1 -2.39 5.19 4.1 6.2 -2.19 5.3 
+4.27 6.12 4.36 6.01 4.45 5.92 -1.78 5.41 4.63 5.79 4.69 5.71 -1.46 5.49 4.86 5.58 
+-1.24 5.58 5.02 5.45 5.08 5.34 -0.89 5.62 -0.71 5.71 -5.26 -5.3 -0.61 5.84 5.32 5.25 
+-0.36 5.9 5.46 5.07 5.51 4.97 0 5.9 5.64 4.78 0.26 5.95 5.77 4.58 5.84 4.47 
+0.59 5.9 5.94 4.28 5.97 4.14 0.91 5.84 6.07 3.93 1.2 5.82 6.16 3.71 1.43 5.81 
+6.23 3.5 6.27 3.36 1.74 5.66 6.32 3.13 1.97 5.63 6.36 2.9 6.38 2.76 6.38 2.63 
+6.41 2.49 6.4 2.39 6.4 2.23 6.41 2.13 6.4 2 6.4 1.87 2.3 4.66 6.4 1.65 
+6.4 1.49 6.38 1.41 2.45 4.35 4.21 0.78 -6.01 -4.99 -0.96 -0.7 -6.82 -4.91 -3.14 -4.69 
+-0.8 -0.7 -6.86 -2.78 -5.25 -4.17 -3.06 -5.01 -1.8 -4.66 -1.71 -2.69 -3.86 -3.41 -3.25 -1.52 
+-1 -0.13 -1.78 3.49 2.88 5.28 -2 2.52 -0.52 0.75 -3.8 2.28 -0.57 0.39 -4.32 1.02 
+-0.87 -0.37 -5.64 -2.36 -7.14 -4.49 -1.63 -1.45 -6.21 -5.51 -3.15 -3.21 -0.13 -0.11 -4.4 -3.9 
+-6.51 -6.08 -0.93 -1.3 -6.04 -7.23 -1.8 -5.88 1.7 -3.91 -1.02 -5.51 -0.52 -5.27 2.56 -3.37 
+0.11 0.07 3.93 -2.52 -1.84 -6.14 -2.56 -2.98 -5.73 -7.2 -1.37 -1.52 -4.27 -4.38 -3.73 -6.88 
+4.49 -1.76 1.59 0.95 -1.5 -1.71 -1.61 -6.21 2.76 -1.54 5.21 6.1 5.79 2.71 5.82 2.54 
+5.6 4.36 3.36 1.63 2.47 1.02 5.93 2.21 5.53 1.15 -0.18 -4.96 -0.2 -5.06 0.93 -4.34 
+0.41 -4.75 -1.47 -5.08 -0.26 -1.37 -0.76 -5.88 1.21 -4.38 1.17 -4.49 1.5 -4.28 1.57 -4.28 
+1.15 -4.68 0.24 -0.98 1.28 -3.43 1.13 -4.88 2 -4.1 2.69 -3.49 2.84 -3.37 1.58 -4.67 
+-0.83 -3.75 -1.11 -4.82 5.14 -1.06 2.11 -1.48 1.59 -1.15 5.49 -0.62 3.61 -0.43 1.61 -0.46 
+5.49 -0.52 3.13 -0.39 2.11 -0.43 6.44 0.67 -3.93 -4.6 -4.02 -4.8 -3.35 3.08 -3.25 3.14 
+-4.11 -4.82 -4.01 -4.86 -3.32 3.26 -4.04 -4.88 -3.32 3.32 -4.04 -4.93 -3.97 -4.99 3.45 -3.37 
+-3.86 -5.04 -3.5 3.37 -3.86 -5.08 -3.5 3.45 -3.84 -5.12 -3.47 3.52 -3.39 3.6 -3.93 -5.17 
+-3.36 3.69 -3.91 -5.21 -3.84 -5.25 -3.78 -5.32 -3.71 -5.37 3.63 -3.71 -2.54 -3.84 -1.05 -1.59 
+-3.49 -5.49 -3.41 -5.51 -3.82 3.69 3.47 5.53 -3.67 3.79 3.63 5.47 3.71 5.42 3.77 5.39 
+-3.38 3.84 -3.28 3.93 -3.17 3.99 4.04 5.28 -3 4.06 -2.91 4.12 -4.19 -5.25 -2.84 4.21 
+-2.76 4.29 -2.62 4.36 -2.52 4.45 -2.06 3.91 -0.32 0.63 -4.49 -5.28 -2.32 4.62 -2.23 4.71 
+-4.54 -5.34 -4.47 -5.41 -4.38 -5.49 -4.32 -5.58 -4.23 -5.64 -4.14 -5.75 -4.06 -5.81 -4 -5.93 
+-3.88 -5.96 2.89 -4.73 -3.73 -6.05 -3.64 -6.14 3.14 -4.62 3.25 -4.52 3.36 -4.45 3.47 -4.34 
+3.37 6.08 3.52 -4.27 3.36 5.99 3.47 5.92 3.5 -4.23 3.58 -4.15 -3.34 -5.9 -3.26 -5.94 
+-3.71 4.1 -3.23 -6.03 -3.14 -6.1 -3.04 -6.16 -2.97 -6.21 3.95 -4.04 4.08 -3.95 2.82 6.17 
+4.1 -3.89 -2.78 -6.14 4.23 -3.8 -2.65 -6.16 -2.54 -6.21 -2.45 -6.27 -2.39 -6.29 -2.28 -6.36 
+-2.17 -6.41 P
+-4.58 3.63 -4.47 3.69 2.29 6.47 2.38 6.4 -4.27 3.84 2.52 6.41 2.64 6.36 -4.1 3.97 
+-4 4.06 -3.9 4.14 2.91 6.38 -3.73 4.28 3.06 6.33 -3.56 4.38 -3.47 4.45 -3.37 4.55 
+-3.23 4.64 3.43 6.38 -3.06 4.77 -2.93 4.86 p f*
+489.63 1541.19 -1.07 5.8 5.04 5.64 0.95 -5.8 -4.93 -5.64 f*
+499.3 1233.66 -5.36 2.58 0.41 6.82 0.54 6.82 5.32 -2.69 0.63 6.75 0.72 6.7 0.8 6.68 
+0.91 6.66 1.02 6.64 5.26 -2.91 1.08 6.55 1.17 6.56 5.25 -2.96 1.24 6.46 1.32 6.45 
+1.41 6.4 1.52 6.38 1.58 6.36 -5.05 3.14 1.71 6.36 -4.95 3.25 -4.91 3.32 -4.82 3.39 
+-4.73 3.47 1.99 6.47 2.11 6.42 4.64 -3.54 -2.04 -6.38 4.75 -3.43 4.84 -3.37 4.92 -3.29 
+4.97 -3.22 5.06 -3.14 0.78 2.63 0 -162.89 -1.48 -1.26 1.37 -6.79 0.84 -1.08 6.08 -4.8 
+4.49 -3.78 1.78 -2.2 1.02 1.41 -0.78 6.43 -1.15 1.45 -5.75 3.87 -0.28 0.2 -4.32 4.25 
+-1.82 2.3 0 162.89 1.04 3.6 1.89 6.18 5.03 -3.14 5.1 -3.08 5.19 -3.02 1.84 6.08 
+5.18 -2.97 5.21 -2.89 0 -267.34 -1.56 -3.14 4.7 -6.54 0.16 1.15 0 -1.58 0.08 -5.73 
+1.7 -6.19 2.11 -6.2 2.39 -6.23 2.14 -6.14 2.65 -6.19 3.04 -6.18 4.47 -2.85 0.63 2.48 
+-0.98 5.95 -2.61 6.1 -3.19 6.21 -2.63 6.16 -2.66 6.23 -1.91 4.19 -0.93 2.11 -4.29 6.29 
+0 1.58 0.58 4.54 -3.88 3.99 0 267.34 0.05 -0.04 5.32 -2.84 -1.72 -5.99 5.41 -2.75 
+5.49 -2.72 5.54 -2.64 5.58 -2.56 5.66 -2.54 -1.45 -5.89 5.73 -2.43 -1.34 -5.88 5.82 -2.37 
+-1.24 -5.86 5.91 -2.28 -1.15 -5.86 5.99 -2.21 -1.07 -5.83 6.05 -2.13 6.13 -2.06 6.14 -2.02 
+-0.91 -5.77 6.23 -1.93 -0.82 -5.77 6.29 -1.87 -0.74 -5.75 -0.7 -5.76 6.38 -1.78 -0.61 -5.73 
+-0.54 -5.73 -0.5 -5.73 6.46 -1.65 6.49 -1.61 6.54 -1.56 -0.39 -5.66 6.58 -1.5 -0.3 -5.64 
+6.62 -1.41 6.64 -1.39 -0.24 -5.6 6.7 -1.31 6.73 -1.28 6.74 -1.24 -0.17 -5.53 6.79 -1.18 
+-0.13 -5.51 6.82 -1.11 6.86 -1.09 -0.06 -5.45 -0.02 -5.46 0 -5.45 0.06 -5.42 0.09 -5.45 
+-6.86 0.98 0.15 -5.44 -6.82 0.99 0.18 -5.46 0.24 -5.45 -6.77 0.98 0.28 -5.47 0.34 -5.47 
+0.39 -5.44 0.44 -5.45 0.48 -5.42 0.54 -5.43 -6.68 0.87 0.59 -5.45 0.65 -5.41 0.71 -5.42 
+-6.6 0.8 0.78 -5.4 -6.55 0.78 0.84 -5.43 -6.5 0.78 -1.41 0.18 -5.06 0.65 -6.45 0.82 
+1 -5.51 -6.4 0.83 1.08 -5.54 -6.32 0.8 1.17 -5.55 1.24 -5.55 1.3 -5.51 1.37 -5.51 
+1.43 -5.52 -6.12 0.66 1.54 -5.52 -6.05 0.64 1.65 -5.54 -5.99 0.58 1.75 -5.53 1.85 -5.54 
+-5.86 0.52 1.97 -5.55 -5.79 0.49 -5.73 0.5 -5.71 0.5 2.17 -5.64 2.28 -5.64 2.37 -5.6 
+2.43 -5.58 -5.45 0.33 2.59 -5.6 -5.36 0.3 -5.34 0.28 -5.27 0.26 2.87 -5.68 2.93 -5.67 
+-5.1 0.18 3.1 -5.69 3.22 -5.64 -4.95 0.06 3.36 -5.64 -4.82 0 3.56 -5.67 3.64 -5.62 
+3.73 -5.58 3.86 -5.55 3.95 -5.49 -4.38 -0.22 4.14 -5.49 -4.25 -0.28 4.34 -5.47 4.45 -5.43 
+4.53 -5.39 4.67 -5.32 2.11 -2.34 -5 2.02 -1.95 0.98 -5.62 1.54 -4.67 1.95 -2.32 5.76 
+0.04 0.24 -2.04 5.51 -0.41 2.71 -0.13 3.11 -0.32 3.14 -0.35 2.61 -5.54 5.32 -0.21 0.2 
+-5.64 5.55 -6.68 5.55 -3.69 -1.28 -1.28 1.19 -4.1 2.98 -3.76 2.73 1.91 3.84 2.93 2.17 
+0.24 0.13 0.3 5.71 -5.99 5.88 -3.19 2.99 -1.71 -2.93 -0.63 -1.11 1.59 -4.82 3.95 -5.92 
+0.42 -5.84 P
+-3.85 5.8 -3.82 5.95 -3.66 6.01 -4.67 0.02 -3.65 6.08 -3.54 6.14 -3.41 6.16 -3.3 6.18 
+-3.19 6.25 -3.08 6.25 5.03 -0.37 -2.91 6.25 -2.8 6.25 5.2 -0.48 -2.64 6.23 -2.54 6.25 
+-2.43 6.27 -2.32 6.32 -2.23 6.31 -2.11 6.34 -2.02 6.34 5.55 -0.91 -1.89 6.31 -1.76 6.34 
+-1.69 6.34 -1.57 6.33 -1.49 6.36 -1.37 6.38 -1.3 6.38 -1.18 6.38 -1.11 6.4 -0.98 6.38 
+-5.79 1.5 -0.93 6.46 -5.75 1.59 -0.82 6.5 -5.73 1.67 -0.74 6.58 -5.69 1.76 -0.65 6.64 
+-5.64 1.84 -0.55 6.68 -0.43 6.7 -5.6 2 -0.33 6.75 -0.24 6.73 -5.54 2.17 -0.13 6.79 
+-0.02 6.77 0.09 6.77 0.2 6.75 -5.45 2.45 0.3 6.79 p f*
+0 155 255 rG
+533.31 1161.07 -1.37 6.79 1.48 1.26 1.82 -2.3 4.32 -4.25 0.28 -0.2 0 -3.15 -0.26 -0.04 
+0.29 -0.26 0.3 0.09 -0.32 0.22 0 3.15 5.75 -3.87 1.15 -1.45 0.78 -6.43 -1.02 -1.41 
+-1.78 2.2 -4.49 3.78 -6.08 4.8 -0.84 1.08 f*
+2 239 204 rG
+539.87 1158.92 -0.29 0.26 0.26 0.04 0.32 -0.22 -0.3 -0.09 f*
+255 0 r6
+544.71 1431.38 -3.89 3.84 3.3 5.75 3.84 -3.84 3.93 -3.75 4.01 -3.69 4.11 -3.62 -3.06 -5.73 
+-4.17 3.61 -4.08 3.69 -3.99 3.75 f*
+558.27 1411.04 -4.32 3.52 3 5.77 4.23 -3.54 -2.91 -5.75 f*
+559.87 1401.8 -4.44 3.43 2.84 5.82 4.38 -3.47 4.47 -3.39 -2.73 -5.77 -4.52 3.38 f*
+0 155 255 rG
+565.84 1594.81 -4.49 1.76 3.73 6.88 4.27 4.38 1.37 1.52 5.73 7.2 2.56 2.98 1.84 6.14 
+-3.93 2.52 -0.11 -0.07 -2.56 3.37 0.52 5.27 1.02 5.51 -1.7 3.91 1.8 5.88 6.04 7.23 
+0.93 1.3 6.51 6.08 4.4 3.9 0 -4.53 -5.16 -2.02 -1.22 -1.11 0.29 -2.32 6.1 5.45 
+0 4.53 0.13 0.11 3.15 3.21 6.21 5.51 1.63 1.45 7.14 4.49 5.64 2.36 0 -1.75 
+-6.62 -3.08 -1.06 -0.72 -6.73 -5.84 -3.3 -2.86 0.31 -0.09 0 -6.53 -6.66 -4.45 -2 -2.04 
+-3.43 -6.42 1.17 0.13 0 -13.61 -0.07 -0.06 -5.58 -8.06 4.93 1 4.73 4.63 -3.95 2.49 
+-0.07 0 0 13.61 2.32 0.26 4.91 2.41 0 -5.82 -3.54 -3.75 2.87 -0.3 2.69 3.21 
+-2.02 0.84 0 5.82 1.3 0.63 4.32 3.58 1.37 5.14 -3.3 0.76 0 6.53 1.86 -0.39 
+5.92 1.45 1.93 -1.08 3.08 -0.39 6.47 2.97 3.14 2.56 0.48 4.43 -0.98 0.56 -3.16 2.17 
+-1.35 0.3 0 1.75 0.87 0.37 4.32 -1.02 0.57 -0.39 3.8 -2.28 0.52 -0.75 2 -2.52 
+-2.88 -5.28 1.78 -3.49 1 0.13 3.25 1.52 3.86 3.41 1.71 2.69 1.8 4.66 3.06 5.01 
+5.25 4.17 6.86 2.78 0.8 0.7 3.14 4.69 6.82 4.91 0.96 0.7 6.01 4.99 2.15 0.37 
+0.95 1.56 7.9 3.45 0.54 0.21 7.81 3.67 3.69 1.34 3.3 0.3 1.52 2.09 5.23 1.99 
+3.38 1.52 5.49 2.39 2.45 0.04 1.21 1.45 4.51 2.09 3.32 -0.07 1.87 2.09 2.63 1.26 
+2.69 -0.15 -6.96 -3.21 -0.37 -0.15 -8.1 -3.3 -1.23 -0.52 -7.66 -3.28 -1.34 -0.57 -8.45 -3.64 
+-0.26 -0.15 -7.84 -2.87 -4.23 -1.98 -3.75 -1.37 -7.51 -4.06 -1.32 -1.04 -5.75 -4.08 -3.75 -2.78 
+-3.73 -2.71 -3.69 -4.78 -3.17 -2.73 -7.16 -4.03 -0.33 -0.33 -4.04 -5.04 -0.46 -4.14 0.29 -2.3 
+1.11 -1.21 -2.23 -2.43 -6.45 -2.62 -6.18 -1.89 -5.69 -0.76 -0.11 0.16 -5.77 -0.68 -2.78 -3.1 
+-4.95 -5.23 -1.91 -2.25 -2.84 -5.84 0.52 -4.23 -4.12 -6.68 -0.65 -0.52 -6.32 -5.93 -3.84 -4.3 
+-2.39 -2.32 -4.99 -7.05 -1.11 -2.09 -5.81 -6.59 -1.43 -1.84 -4.23 -5.08 -4.73 -6.6 5.16 0.64 
+5.25 1.66 0.68 -0.13 5.73 3.56 5.79 3.32 5.86 2.7 5.77 4.45 2.96 3.84 2.75 3.71 
+5.51 5.75 0.41 0.3 5.34 3.17 0 -75.67 -3.17 -6.68 5.63 2.28 1.52 4.1 -3.97 0.3 
+0 75.67 0.67 0.39 6.12 5.63 3.36 3.3 3.02 3.64 5.55 4.56 0.88 0.74 6.23 2.84 
+0.75 -0.16 -1.06 -2.49 -2.09 -2.91 0.65 -3.78 -0.52 -4.34 -1.87 -5.05 -1.62 -5.02 -1.04 -2.3 
+-2.59 -3.93 -2.62 -5.86 -0.04 -0.24 -0.66 -4.62 -0.47 -4.82 -2.48 -5.92 -0.2 -0.37 -1.32 -5.6 
+-0.41 -5.1 1.45 -3.84 -0.34 -4.32 -0.41 -1.22 -1.2 -5.99 0.43 -4.84 2.52 -2.99 0 -28.3 
+-0.09 -0.15 0.19 -0.02 -0.06 0.15 -0.05 0.02 0 28.3 0.11 -0.13 3.04 -2.82 -0.12 -5.5 
+0.43 -1.5 0.79 -2.95 1.95 -1.52 1.37 -1.11 2.93 -2.95 0.06 -2.49 -0.22 -3.41 3.15 -2.84 
+1.69 0 2.91 -1.43 1.04 -3.47 -2.11 -3.63 -0.87 -2.71 1.3 -3.08 3.36 -2.8 1.06 -0.39 
+3.28 -1.35 4.43 -1.61 4.52 -1.48 1.02 0.16 5.14 0.24 4.43 -0.52 0.79 -0.11 4.27 -1.67 
+3.28 -2.82 P
+3.99 -2 4.95 0.41 1.54 0.67 6.29 0.93 0.13 0.02 3.41 -2.46 3.56 -2.45 -1.93 -2.52 
+-4.86 -0.11 -0.48 0.32 -0.28 -0.37 -5.86 -0.39 -3.67 0.35 -1.04 0.78 -0.59 -0.74 -5.43 0.29 
+-3.82 2.32 2.88 3.5 -3.36 2.78 -3.28 2.82 -3.43 -3.97 -2.2 0.65 -1.72 1.52 -1.06 -1.22 
+-6.14 -0.63 -0.13 0.11 -0.13 -0.15 -6.44 -0.67 -2.11 0.43 -3.13 0.39 -5.49 0.52 -1.61 0.46 
+-3.61 0.43 -5.49 0.63 -1.59 1.15 -2.11 1.48 -5.14 1.06 1.11 4.82 0.83 3.75 -1.58 4.67 
+-2.84 3.37 -2.69 3.49 -2 4.1 -1.12 4.88 -1.28 3.43 -0.24 0.98 -1.15 4.68 -1.57 4.28 
+-1.5 4.28 -1.17 4.49 -1.21 4.38 0.76 5.88 0.26 1.37 1.47 5.08 -0.41 4.75 -0.93 4.34 
+0.2 5.06 0.18 4.96 -5.53 -1.15 -5.93 -2.21 -2.47 -1.02 -3.36 -1.63 -5.6 -4.36 -5.82 -2.54 
+-5.79 -2.71 -5.21 -6.1 -2.76 1.54 1.61 6.21 1.5 1.71 -1.59 -0.95 p f*
+567.05 1055.75 -4.7 6.54 1.56 3.14 3.88 -3.99 -0.58 -4.54 -0.16 -1.15 f*
+2 239 204 rG
+571.27 1600.79 -5.16 -0.64 4.73 6.6 4.23 5.08 1.43 1.84 5.81 6.59 1.11 2.09 4.99 7.05 
+2.39 2.32 3.84 4.3 6.32 5.93 0.65 0.52 4.12 6.68 -0.52 4.23 2.84 5.84 1.91 2.25 
+4.95 5.23 2.78 3.1 5.77 0.68 0.11 -0.16 5.69 0.76 6.18 1.89 6.45 2.62 2.23 2.43 
+-1.11 1.21 -0.29 2.3 0.46 4.14 4.04 5.04 0.33 0.33 7.16 4.03 3.17 2.73 3.69 4.78 
+3.73 2.71 3.75 2.78 5.75 4.08 1.32 1.04 7.51 4.06 3.75 1.37 4.23 1.98 7.84 2.87 
+0.26 0.15 8.45 3.64 1.34 0.57 7.66 3.28 1.23 0.52 8.1 3.3 0.37 0.15 6.96 3.21 
+1.85 -0.09 1.08 1.13 4.71 1.89 2.04 -0.17 -7.25 -2.89 -0.82 -0.24 -7.29 -2.87 -2.47 -1.08 
+-5.73 -2.32 -3.59 -1.54 -5.16 -2.19 -3.73 -1.54 -6.01 -2.63 -2.72 -1.28 -8 -3.19 -0.65 -0.3 
+-6.96 -2.54 -5.55 -2.99 -3.71 -2.93 -2.89 -2.07 -6.53 -4.84 -0.7 -0.5 -4.23 -4.87 -5.49 -4.76 
+-2.06 -1.15 -5.12 -5.47 3.67 -2.28 0.58 -0.35 -0.37 -4.02 -2.75 -3.36 -2.3 -2.28 -5.02 -3.39 
+-6.04 -1.28 -0.54 0.41 -5.19 -0.65 -5.9 -0.96 -6.45 -3.25 -4.04 -4.21 -2.75 -5.66 0.45 -4.23 
+-1.78 -5.36 -1.41 -1.36 -6.3 -5.01 -4.82 -4.95 -1.48 -1.61 -6.12 -5.79 -2.34 -3.32 -3.63 -6.92 
+-0.75 -0.87 -5.02 -4.69 -5.58 -6.96 -1.21 -1.64 1.32 0.13 5.9 1.45 5.73 3.95 5.71 4.82 
+5.14 5.73 0.56 1.54 5.9 4.75 5.99 5.21 6.01 3.15 5.99 1.97 4.23 4.25 2 1.97 
+4.79 5.63 2.07 4.52 1.64 1.37 4.84 3.32 6.36 3.2 3.43 3.6 3.65 2.95 6.18 1.61 
+3.19 0.22 -4 -4.18 -2.02 -1.8 0.93 -3.47 -1.43 -4.45 -1.5 -4.52 -0.66 -4.19 -1.23 -4.53 
+-2.24 -4.17 -0.35 -1.09 -1.45 -4.8 -1.22 -4.77 -0.67 -4.56 -0.08 -4.3 -0.41 -1.08 -1.29 -4.21 
+-1.32 -5.21 0.75 -3.96 -0.91 -2.5 -0.95 -3.28 -0.44 -4.92 -0.41 -5.03 -0.04 -1.02 -0.78 -4.43 
+1.32 -3.93 2 -3.47 1.04 -4.23 2.34 -3.23 -0.28 -5.47 0.11 -0.62 1.06 -3.73 2.13 -3.56 
+2.11 -3.62 2.28 -3.5 2.04 -3.8 3.21 -2.67 2.85 -3.06 2.63 -3.3 2.89 -3.1 2.47 -3.56 
+3.32 -2.69 4.14 -1.76 3.3 -1.04 1.61 0.17 4.29 -1.56 5.02 0.32 1.06 0.26 -0.56 -0.67 
+3.36 -2.61 3.43 -2.56 0.07 -0.04 -0.13 -0.02 -6.29 -0.93 -1.54 -0.67 -4.95 -0.41 -3.99 2 
+-3.28 2.82 -4.27 1.67 -0.79 0.11 -4.43 0.52 -5.14 -0.24 -1.02 -0.16 -4.52 1.48 -4.43 1.61 
+-3.28 1.35 -1.06 0.39 -3.36 2.8 -1.3 3.08 0.87 2.71 2.11 3.63 -1.04 3.47 -2.91 1.43 
+-1.69 0 -3.15 2.84 0.22 3.41 -0.06 2.49 -2.93 2.95 -1.37 1.11 -1.95 1.52 -0.79 2.95 
+-0.43 1.5 0.13 5.5 -3.04 2.82 -0.11 0.13 -2.52 2.99 -0.43 4.84 1.2 5.99 0.41 1.22 
+0.34 4.32 -1.45 3.84 0.41 5.1 1.32 5.6 0.2 0.37 2.48 5.92 0.47 4.82 0.66 4.62 
+0.04 0.24 2.63 5.86 2.59 3.93 1.04 2.3 1.63 5.02 1.87 5.05 0.52 4.34 -0.65 3.78 
+2.09 2.91 1.06 2.49 -0.75 0.16 -6.23 -2.84 -0.87 -0.74 -5.55 -4.56 -3.02 -3.64 -3.36 -3.3 
+-6.12 -5.62 -0.67 -0.39 -5.34 -3.17 -0.41 -0.3 -5.51 -5.75 -2.75 -3.71 -2.96 -3.84 -5.77 -4.45 
+-5.86 -2.7 P
+-5.79 -3.32 -5.73 -3.56 -0.68 0.13 -5.25 -1.66 p f*
+0 155 255 rG
+567.29 1049.59 -0.08 5.73 4.29 -6.29 0.93 -2.11 0 -6.14 1.15 -3.86 2.23 -6.19 1.68 -6.09 
+2.75 -6.17 3.02 -3.52 0.07 3.26 -2.58 6.12 -3.62 6.27 -2.76 6.2 -1.93 3.97 0 6.14 
+1.91 -4.19 2.66 -6.23 2.63 -6.16 3.19 -6.21 2.61 -6.1 0.98 -5.95 -0.63 -2.48 -4.47 2.85 
+-3.04 6.18 -2.65 6.19 -2.14 6.14 -2.39 6.23 -2.11 6.2 -1.7 6.19 f*
+255 0 r6
+573.5 1377.15 -4.86 3.14 2.48 5.82 2.54 5.77 4.75 -3.14 4.82 -3.11 -2.43 -5.75 4.93 -3.02 
+-2.3 -5.77 -4.99 3 -4.93 3.06 f*
+7 193 59 rG
+571.09 1603 -1.32 -0.13 1.21 1.64 5.58 6.96 5.02 4.69 0.75 0.87 3.63 6.92 2.34 3.32 
+6.12 5.79 1.48 1.61 4.82 4.95 6.3 5.01 1.41 1.36 1.78 5.36 -0.45 4.23 2.75 5.66 
+4.04 4.21 6.45 3.25 5.9 0.96 5.19 0.65 0.54 -0.41 6.04 1.28 5.02 3.39 2.3 2.28 
+2.75 3.36 0.37 4.02 -0.58 0.35 -3.67 2.28 5.13 5.47 2.06 1.15 5.49 4.76 4.23 4.88 
+0.7 0.5 6.53 4.84 2.89 2.07 3.71 2.93 5.55 2.99 6.96 2.54 0.65 0.3 8 3.19 
+2.72 1.28 6.01 2.63 3.73 1.54 5.16 2.19 3.59 1.54 5.73 2.32 2.47 1.08 7.29 2.87 
+0.82 0.24 7.25 2.89 1.17 -0.13 0.89 0.89 3.78 2.04 3.93 2.95 0.93 -0.13 -3.82 -2.95 
+-5.12 -2.84 -1.16 -0.54 -6 -2.3 -3.47 -0.95 -5.2 -2.06 -4.58 -2 -3.37 -1.37 -5.92 -2.52 
+-2.67 -1.15 -6.1 -2.52 -3.62 -1.58 -5.12 -2.41 -5.46 -2.21 -2.87 -1.55 -7.09 -2.11 -3.6 -1.93 
+-6.1 -4.82 -0.07 -0.05 -6.01 -5.01 -3.82 -3.02 -1.91 -2.15 -0.65 -3.34 3.23 0.15 -1.34 -4.12 
+-3.87 -4.88 -2.84 -3.43 -0.89 -1.52 -4.34 -5.27 -3.86 -4.38 -6.51 -3.06 -2.61 -1.24 -4.12 -2.99 
+-0.82 1.02 -3.39 2.78 -0.59 -0.07 -5.95 -1.15 -0.28 -0.2 -5.91 -3.93 -0.58 -0.63 -3.52 -5.6 
+1.13 -3.86 -0.76 -4.77 -5.87 -5.73 -6.25 -5.12 -0.11 -0.09 -6.14 -6.57 -5.27 -4.82 -0.79 -1.93 
+-1.19 -4.19 -4.62 -5.56 -5.75 -4.58 -3.23 -4.11 3.43 0.74 5.75 4.02 4.04 4.27 1.61 4.04 
+1.3 2.75 4.6 5.38 5.97 3.08 6.03 4.23 6.03 2.91 5.82 0.71 0.13 0.02 0.06 0.09 
+6.25 6.25 1.78 2.11 0.65 4.56 4.88 5.64 2.82 1.93 4.3 5.42 0.37 0.57 6.79 5.64 
+5.95 0.63 6.12 1.37 6.8 3.75 3.86 2.7 3.36 2.11 6.75 2.91 1.37 0.8 0 -20.03 
+-0.04 -0.02 0.02 0 0.02 0.02 0 20.03 2.65 1.61 2.65 4.1 2.23 1.95 1.28 -0.02 
+0 -13.87 -0.67 -1.05 0.28 -0.41 0.61 0.65 -0.21 0.8 0 13.87 4.54 -0.09 0.39 -0.02 
+-0.61 -0.56 -2.21 -3.41 0.11 -2.36 6.55 3.79 0.85 0.38 7.36 3.66 3.04 -1.87 1.49 -1.78 
+1 -0.89 1.15 -2.88 -4.62 -3.75 -0.54 -0.41 -4.45 -4.19 -2.82 -2.47 -3.37 -2.37 -3.91 -3.82 
+-0.52 -0.74 -2.07 -3.99 -2.21 -4.11 -2.76 -3.71 -1.19 -1.11 -0.33 -3.58 0.15 -3.43 -4.12 -3.37 
+-0.89 -0.71 -1.84 -2.34 -0.82 -4.01 -2.8 -4.71 -0.13 -0.37 0.13 -3.69 0.59 -0.09 3.51 -1.65 
+-2.23 -2.62 -0.41 -0.48 -6.1 -2.16 -5.36 -5.34 -1.54 -1.65 -3.49 -4.64 -1.32 -2.37 -1.24 -5.06 
+-1.34 -1.8 -0.87 -4.02 0.2 -4.36 1.82 -3.32 0.31 -4.4 -0.52 -2.97 -0.65 -2.6 0.17 -4.71 
+0.43 -4.6 0 -1.32 0.15 -3.62 2.21 -3.3 2.78 -2.82 1.25 -4.21 1.09 -4.45 3.1 -2.63 
+2.67 -3.05 2.67 -3.08 3.63 -2.13 2.43 -3.36 2.28 -3.59 4.84 -0.89 3.89 -1.87 0.97 -0.48 
+3.23 -1.05 5.06 2.07 3.49 1.32 -2.17 -2.41 -4.04 -4.58 -3.43 -3.97 -1.06 -0.26 -5.02 -0.32 
+-4.29 1.56 -1.61 -0.17 -3.3 1.04 -4.14 1.76 -3.32 2.69 -2.47 3.56 -2.89 3.1 -2.62 3.3 
+-2.85 3.06 -3.21 2.67 -2.04 3.8 -2.28 3.5 -2.11 3.62 -2.12 3.56 -1.06 3.73 -0.11 0.63 
+0.28 5.47 P
+-2.34 3.23 -1.04 4.23 -2 3.47 -1.32 3.93 0.78 4.43 0.04 1.02 0.41 5.03 0.44 4.92 
+0.95 3.28 0.91 2.5 -0.75 3.96 1.32 5.21 1.29 4.21 0.41 1.08 0.08 4.3 0.67 4.56 
+1.22 4.77 1.45 4.8 0.35 1.09 2.24 4.17 1.23 4.53 0.66 4.19 1.5 4.52 1.43 4.45 
+-0.93 3.47 2.02 1.8 4 4.18 -3.19 -0.22 -6.18 -1.61 -3.65 -2.95 -3.43 -3.6 -6.36 -3.2 
+-4.84 -3.32 -1.64 -1.37 -2.07 -4.52 -4.79 -5.62 -2 -1.97 -4.23 -4.25 -5.99 -1.97 -6.01 -3.15 
+-5.99 -5.21 -5.9 -4.75 -0.56 -1.54 -5.14 -5.73 -5.71 -4.82 -5.73 -3.95 -5.9 -1.45 p f*
+2 239 204 rG
+573.59 1036.92 -1.15 3.86 1.93 -3.97 2.76 -6.2 3.62 -6.27 2.58 -6.12 -0.07 -3.26 -3.02 3.52 
+-2.75 6.17 -1.68 6.09 -2.23 6.19 f*
+110 210 9 rG
+576.84 1606.21 -3.43 -0.74 3.23 4.11 5.75 4.58 4.63 5.56 1.19 4.19 0.79 1.93 5.27 4.82 
+6.14 6.57 0.11 0.09 6.25 5.13 5.88 5.73 0.76 4.77 -1.12 3.86 3.52 5.6 0.58 0.63 
+5.91 3.93 0 -1.39 -0.11 -0.02 -0.11 -0.07 -7.23 -7.48 -0.02 -0.02 0.02 -0.02 4.04 1.06 
+0 -11.87 -1.32 -0.97 0.89 -3.32 0.83 4.16 -0.39 0.13 0 11.87 1.95 0.52 3 2.45 
+-1.54 3.59 0 1.39 0.28 0.2 5.95 1.15 0.59 0.07 3.39 -2.78 0.82 -1.02 4.12 2.99 
+2.61 1.24 6.51 3.06 3.86 4.38 4.34 5.27 0.89 1.52 2.84 3.43 3.87 4.88 1.34 4.13 
+-3.23 -0.15 0.65 3.34 1.91 2.15 3.82 3.02 6.01 5.01 0.07 0.05 6.1 4.82 3.6 1.93 
+7.09 2.11 2.87 1.55 5.46 2.21 5.13 2.41 3.63 1.58 6.1 2.52 2.67 1.15 5.92 2.52 
+3.37 1.37 4.58 2 5.2 2.06 3.47 0.95 6 2.3 1.16 0.54 5.13 2.84 3.82 2.95 
+0.93 -0.15 -3.73 -2.93 -4.75 -2.87 -3.91 -1.73 -2.8 -1.09 -6.12 -1.69 -3.12 -1.24 -6.66 -2.91 
+-1.02 -0.41 -8.25 -3.52 -0.21 -0.08 -8.44 -3.5 -1.24 -0.54 -7.53 -3.54 -2.3 -0.93 -6.36 -3.41 
+-6.58 -1.32 -1.65 -0.89 -0.24 -0.24 -4.34 -4.28 -5.04 -4.34 -0.65 -0.54 0 -0.71 1.61 1.04 
+5.88 2.35 7.08 3.73 1.32 0.93 5.05 3.6 1.91 1 0 -2.67 -2.62 -2.02 -4.14 -4.23 
+-0.74 -3.69 1.93 0.05 2.09 0.65 2.69 3.34 0 -6.1 -1.32 -0.5 -5.84 -2.28 -6.92 -2.5 
+-2.23 -1.24 -1.78 -1 -3.47 -1.78 -5.62 -4.21 -2.69 -2.43 -3.19 -3.02 -0.5 -3.93 1.28 -0.29 
+6.4 1.96 3.89 1.75 2.82 1.09 7.34 4.32 1.11 1.11 1.65 3.88 6.55 3.63 3.25 1.84 
+-0.15 3.41 -0.57 0.17 0 6.1 0.54 0.67 3.11 3.95 -2.84 1.28 0 2.67 2.5 1.28 
+7.03 1.8 5.9 -0.02 -0.54 -2.26 -1.17 -3.51 0.54 -3.3 0.78 -1 0.29 -0.02 0 -10.85 
+-5.6 -2 4.17 -1.21 4.88 2.65 -3.45 0.56 0 10.85 5.32 -0.58 6.64 1.13 6.23 2.11 
+1.48 0.63 6.23 0.24 1.43 -0.46 3.04 -2.17 4.04 -0.52 1.52 -0.48 0.63 -2.3 -3.45 -2.98 
+-0.46 -0.45 -1.95 -2.54 0.35 -0.59 2.45 -1.98 0.14 -2.73 -6.01 -2.93 -1.26 -0.65 -1.15 -2.95 
+0 -2.8 -4.38 -3.54 -1.65 -3.15 -2.32 -1.69 -1.58 -1.02 -2.32 -1.5 -3.47 -3.75 -0.02 -0.02 
+-1.96 -3.47 -4.03 -4.16 -1.29 -1.15 -6.49 -4.16 -0.23 -0.29 0.2 -0.48 0.89 -2.34 -1 -1.23 
+-3.36 -3.52 -0.07 -3.3 1.41 -2.73 -3.61 -4.49 -0.22 -0.39 -1.08 -3.86 0.3 -3.28 -0.35 -3.64 
+2.06 -2.48 -1.91 -4.49 -1.15 -2.13 -1.65 -2.97 -1.39 -4.49 -0.59 -1.89 -1.43 -3.1 -2.12 -5.21 
+-0.02 -0.02 0.13 -0.24 1.8 -2.54 2.41 -2.47 1.24 -3.26 -0.96 -0.62 1.71 -2.97 -5.27 -3.73 
+-5.21 -3.78 -5.19 -3.86 1.99 -3.09 2.09 -3.04 5.04 3.95 5.08 3.89 4.58 3.41 -1.07 -5.17 
+2 -2.91 0 -2.86 -4.14 -4.95 -0.26 -0.39 -4.43 -3.88 -1.5 -6.17 0.39 -2.21 0.34 -2.3 
+0.67 -4.69 2.26 -3.26 2.91 -2.64 4.38 2.14 2.89 -0.34 3.53 -1.93 3.26 -2.23 3.17 -2.32 
+3.32 -2.17 4.16 -1.22 3.13 -2.4 3.77 -1.41 0.2 0 6.4 1.54 1.02 0.43 5.18 3.65 
+3.19 4.94 P
+2.06 -1.39 -3.82 -4.51 3.25 -2.08 -3.23 -4.04 -0.83 -0.3 -2.95 1.86 -3.71 -4.6 -3.32 -4.21 
+-0.72 -0.2 -5.75 -1.43 2.69 3.41 -3.36 2.26 -3.32 2.3 -3.23 2.34 -3.19 2.41 -3.12 2.45 
+-3.06 2.5 -4.14 -4.49 -1.93 -2.13 -3.49 -1.32 -5.06 -2.07 -3.23 1.05 -0.97 0.48 -3.89 1.87 
+-4.84 0.89 -2.28 3.59 -2.43 3.36 -3.63 2.13 -2.67 3.08 -2.67 3.05 -3.1 2.63 -1.09 4.45 
+-1.25 4.21 -2.78 2.82 -2.21 3.3 -0.15 3.63 0 1.32 -0.43 4.6 -0.17 4.71 0.65 2.6 
+0.52 2.97 -0.31 4.4 -1.82 3.32 -0.2 4.36 0.87 4.02 1.34 1.8 1.24 5.06 1.32 2.37 
+3.49 4.64 1.54 1.65 5.36 5.34 6.1 2.16 0.41 0.48 0 -48.5 -1.32 -0.65 0.08 -0.3 
+0.11 0 1.13 0.96 0 48.5 2.23 2.63 -3.51 1.65 -0.59 0.09 -0.13 3.69 0.13 0.37 
+2.8 4.71 0.82 4.01 1.84 2.34 0.89 0.71 0 -11.41 -4.16 -3.36 4.44 1.34 1 1.29 
+-1.28 0.73 0 11.41 4.12 3.37 -0.15 3.43 0.33 3.58 1.19 1.11 2.76 3.71 2.21 4.11 
+2.07 3.99 0.52 0.74 3.91 3.82 3.37 2.37 2.82 2.47 4.45 4.19 0.54 0.41 4.63 3.75 
+-1.15 2.88 -1 0.89 -1.49 1.78 -3.04 1.87 -7.36 -3.66 -0.85 -0.37 -6.55 -3.79 -0.11 2.36 
+2.21 3.41 0.61 0.56 -0.39 0.02 -4.54 0.09 -1.28 0.02 -2.23 -1.95 -2.65 -4.1 -2.65 -1.61 
+-1.37 -0.8 -6.75 -2.91 -3.36 -2.11 -3.86 -2.7 -6.8 -3.75 -6.12 -1.37 -5.95 -0.63 -6.79 -5.64 
+-0.37 -0.57 -4.3 -5.42 -2.82 -1.93 -4.88 -5.64 -0.65 -4.56 -1.78 -2.11 -6.25 -6.25 -0.06 -0.09 
+-0.13 -0.02 -5.82 -0.71 -6.03 -2.91 -6.03 -4.23 -5.97 -3.08 -4.6 -5.38 -1.3 -2.75 -1.61 -4.04 
+-4.04 -4.27 -5.75 -4.02 p f*
+255 0 r6
+589.3 1640.39 -5.58 -8.06 4.93 1 4.73 4.63 -3.95 2.49 -0.07 0 -0.07 -0.06 f*
+2 239 204 rG
+587.7 1660.59 -0.29 2.32 1.22 1.11 5.16 2.02 -6.1 -5.45 f*
+255 0 r6
+591.62 1660.35 -3.43 -6.42 1.17 0.13 2.32 0.26 4.91 2.41 1.3 0.63 4.32 3.58 1.37 5.14 
+-3.3 0.76 -6.66 -4.45 -2 -2.04 f*
+2 239 204 rG
+595.92 1646.86 -2.87 0.3 3.54 3.75 2.02 -0.84 -2.69 -3.21 f*
+255 0 r6
+600.8 1802.87 -7.12 -2.52 11.33 8.99 7.03 2.26 -11.24 -8.72 f*
+0 155 255 rG
+601.06 970.27 -1.59 4.82 0.63 1.11 1.71 2.93 3.19 -2.99 5.99 -5.88 -0.3 -5.71 -0.24 -0.13 
+-2.93 -2.17 -1.91 -3.84 3.76 -2.73 0 -2.96 0.06 -0.17 1.72 -5.95 3.6 -5.84 0.5 -2.11 
+1.43 -3.86 3.64 -5.82 5.8 -5.55 3.3 -2.24 5.2 -1.11 -0.04 4.21 -1.67 3.06 -0.61 2.69 
+-0.32 4.06 -0.24 1.8 -5.14 5.55 -0.34 0.29 -4.26 -0.33 -5.66 5.45 -2.19 1.87 -4.52 3.82 
+-0.25 0.17 0 2.96 4.1 -2.98 1.28 -1.19 3.69 1.28 6.68 -5.55 5.64 -5.55 0.21 -0.2 
+5.54 -5.32 0.35 -2.61 0.32 -3.14 0.13 -3.11 0.41 -2.71 2.04 -5.51 -0.04 -0.24 2.32 -5.76 
+4.67 -1.95 5.62 -1.54 1.95 -0.98 5 -2.02 2.67 -2.91 2.17 0.26 6.18 -4.99 -3.47 -0.46 
+-3.6 -0.52 -0.13 0.06 -4.9 5.17 -3.71 -0.52 -1.05 -0.15 -5.25 5.29 -6.58 4.26 -0.76 0.84 
+-0.25 -0.02 -7.29 5.21 -1.59 0.39 -7.01 4.75 -5.23 5.62 -4.12 5.8 -2.89 5.9 -4.21 5.84 
+-0.06 1.67 -1.02 4.36 -1.75 5.95 0.06 0 -0.06 0.11 -0.42 5.84 -3.95 5.92 f*
+2 239 204 rG
+600.29 1673.37 -0.31 0.09 3.3 2.86 6.73 5.84 1.06 0.72 6.62 3.08 1.35 -0.3 3.16 -2.17 
+0.98 -0.56 -0.48 -4.43 -3.14 -2.56 -6.47 -2.97 -3.08 0.39 -1.93 1.08 -5.92 -1.45 -1.86 0.39 f*
+255 0 r6
+605.14 946.22 -4.3 5.93 4.3 0.2 -4.1 5.92 4.39 0.13 1.75 -5.95 1.02 -4.36 0.06 -1.67 
+4.21 -5.84 2.89 -5.9 4.12 -5.8 5.23 -5.62 7.01 -4.75 1.59 -0.39 7.29 -5.21 -3.5 -0.45 
+-3.73 -0.52 -5 5.55 -4.88 5.62 -4.77 5.71 -4.64 5.75 -4.53 5.8 -4.41 5.86 f*
+2 239 204 rG
+609.44 952.54 -0.06 0.17 0.25 -0.17 4.52 -3.82 0 -2.7 2.45 -5.17 1.33 -5.66 0.11 -0.28 
+3.13 -5.86 5.97 -5.16 1.58 -0.2 3.21 -0.43 0 0.78 -3.47 5.69 -3.6 5.7 -3.93 4.27 
+-1.24 1.35 -5.54 4.96 0 2.7 2.19 -1.87 5.66 -5.45 4.26 0.33 0.34 -0.29 5.14 -5.55 
+0.24 -1.8 0.32 -4.06 0.61 -2.69 1.67 -3.06 0.04 -4.21 -5.2 1.11 -3.3 2.24 -5.8 5.55 
+-3.64 5.82 -1.43 3.86 -0.5 2.11 -3.6 5.84 -1.72 5.95 f*
+7 193 59 rG
+616.6 940.86 -2.45 5.17 5.54 -4.96 1.24 -1.35 0 -2.73 0.84 -1.78 -1.24 -3.28 1.48 -2.78 
+2.69 -2.37 0.61 2.67 -2.08 4.55 -0.67 1.26 -1.63 1.71 0 2.73 3.93 -4.27 3.6 -5.7 
+3.47 -5.69 0 -0.78 -3.21 0.43 -1.58 0.2 -5.97 5.16 -3.12 5.86 -0.11 0.28 -1.33 5.66 f*
+255 0 r6
+617.32 1557.45 -3.17 -6.68 5.63 2.28 1.52 4.1 -3.97 0.3 f*
+0 255 r6
+614.84 1657.95 -0.02 0.02 0.02 0.02 7.23 7.48 0.11 0.07 0.11 0.02 1.54 -3.59 -3 -2.45 
+-1.95 -0.52 -4.04 -1.06 f*
+618.45 1642.84 -0.89 3.32 1.32 0.97 0.39 -0.13 -0.83 -4.16 f*
+110 210 9 rG
+622 929.14 -1.48 2.78 1.24 3.28 -0.84 1.78 1.63 -1.71 0.67 -1.26 2.08 -4.55 -0.61 -2.67 
+-2.69 2.37 f*
+255 0 r6
+628.02 1540.21 -0.09 -0.15 0.19 -0.02 -0.06 0.15 -0.05 0.02 f*
+645.81 907.51 -4.19 4.58 6.58 -4.26 5.25 -5.29 -2.58 -0.39 -5.05 5.36 f*
+661.8 1512.29 -3.14 2.86 6.14 0.63 -3 -3.49 f*
+0 255 r6
+659.96 1678.64 -1.28 0.29 0.5 3.93 3.19 3.02 2.69 2.43 5.62 4.21 3.47 1.78 1.78 1 
+0 -4.04 -2.5 -0.76 1.97 -0.56 0.63 1.19 -0.11 0.13 0 4.04 2.23 1.24 6.92 2.5 
+5.84 2.28 1.32 0.5 0.57 -0.17 0.15 -3.41 -3.25 -1.84 -6.55 -3.63 -1.65 -3.88 -1.11 -1.11 
+-7.34 -4.32 -2.82 -1.09 -3.89 -1.75 -6.4 -1.96 f*
+255 0 r6
+663.17 897.98 -0.07 0.06 0.13 -0.06 -0.07 0 f*
+664.13 903.95 1.65 0.2 3.86 0.46 4.71 -5.14 -3.78 -0.48 -0.26 -0.02 -6.18 4.99 f*
+669.16 1514.11 -1.58 1.37 2.2 -0.65 -0.61 -0.71 f*
+0 255 r6
+671.81 1704.86 -1.61 -1.04 0 0.71 0.65 0.54 5.04 4.34 4.34 4.28 0 -2.02 -1.3 -1.71 
+0.17 -0.21 0.69 0.36 0.43 1.57 0 2.02 0.24 0.24 1.65 0.89 6.58 1.32 6.36 3.41 
+2.3 0.93 7.53 3.54 1.24 0.54 8.44 3.5 0.21 0.08 8.25 3.52 1.02 0.41 6.66 2.91 
+3.13 1.24 6.12 1.69 2.8 1.09 3.91 1.73 4.75 2.87 3.73 2.93 0.93 -0.15 -3.64 -2.91 
+-4.41 -2.88 -5.88 -2.82 -0.8 -0.22 -8.29 -2.17 -1.06 -0.43 -6.53 -3.28 -3.02 -1.52 -4.29 -2 
+0.52 -2.78 0.48 -0.63 -1 -3.41 -1.39 -3.41 1.54 -1.59 2.17 -1.45 2.34 -0.89 2.65 1.17 
+0.24 3.19 4.52 3.34 3.97 3.21 4.64 2.7 1.26 0.39 6.81 1.75 3 -2.25 -1.15 -3 
+-3.29 -2.91 -1.96 -2.97 0.22 -0.83 5.58 -0.89 6.75 0.67 6.46 0.15 0.79 0.2 7.16 2.17 
+0.52 0.22 4 2 2.39 2.4 3.84 2.13 2.91 0.74 0.32 -1.28 0.11 -2.67 -1.3 -2.39 
+-3.88 -2.09 -4.43 -1.97 -0.28 -0.13 -0.35 -0.67 -0.63 -1.82 -1.02 -2.47 -0.61 -2.48 -1.24 -2.43 
+-1.46 -2.43 -3.03 -2.47 0.15 -2.43 -1.48 -2.5 -1.97 -2.52 -1.61 -2.54 -1.61 -2.56 -0.8 -1.09 
+-2.62 -1.73 -4.54 -1.22 -5.44 -2.65 0.32 -2.52 -0.26 -2.63 -0.8 -2.71 -0.93 -2.76 -0.61 -2.73 
+-0.64 -2.73 -0.95 -2.87 -0.41 -2.73 -0.43 -2.06 -0.59 -0.89 -0.48 -2.82 -2.15 -3.39 -2.71 -1.52 
+-3.11 -3.3 3.66 -1.08 1.93 0.33 0.56 -2.59 0.66 -2.54 -2.09 -0.85 -0.54 2.63 -6.12 -2.41 
+-0.5 2.74 -6.14 -2.43 -6.1 -2.49 -6.05 -2.59 0.63 -2.95 -5.99 -2.75 -5.97 -2.84 0.83 -3.09 
+0.91 -3.04 1 -3.02 1.09 -2.97 -5.71 -3.19 1.23 -3.02 1.33 -2.97 -5.55 -3.41 1.47 -3 
+1.56 -2.95 -4.42 -2.95 -1.24 3.26 -2.41 2.47 -1.8 2.54 -0.13 0.24 0.02 0.02 2.12 5.21 
+1.43 3.1 0.59 1.89 1.39 4.49 1.65 2.97 1.15 2.13 1.91 4.49 -2.06 2.48 0.35 3.64 
+-0.3 3.28 1.08 3.86 0.22 0.39 3.61 4.49 -1.41 2.73 0.07 3.3 3.36 3.52 1 1.23 
+-0.89 2.34 -0.2 0.48 0.23 0.29 6.49 4.16 1.29 1.15 4.03 4.16 1.96 3.47 0.02 0.02 
+3.47 3.75 2.32 1.5 0 -30.04 -0.39 -0.02 -1.22 -0.57 1.26 0.22 0.35 0.36 0 30.04 
+1.58 1.02 2.32 1.69 1.65 3.15 4.38 3.54 0 2.8 1.15 2.95 1.26 0.65 6.01 2.93 
+-0.14 2.73 -2.45 1.98 -0.35 0.59 1.95 2.54 0.46 0.45 3.45 2.98 -0.63 2.3 -1.52 0.48 
+-4.04 0.52 -3.04 2.17 -1.43 0.46 -6.23 -0.24 -1.48 -0.62 -6.23 -2.11 -6.64 -1.13 -5.32 0.58 
+-0.29 0.02 -0.78 1 -0.54 3.3 1.17 3.51 0.54 2.26 -5.9 0.02 -7.03 -1.8 -2.5 -1.28 
+-1.91 -1 -5.05 -3.6 -1.32 -0.93 -7.08 -3.73 -5.87 -2.35 f*
+255 203 0 rG
+675.41 1689.93 -1.97 0.56 2.5 0.76 0.11 -0.13 -0.63 -1.19 f*
+7 193 59 rG
+675.46 1575.96 -1.32 -0.65 0.08 -0.3 0.11 0 1.13 0.96 f*
+679.95 1633.25 -4.16 -3.36 4.44 1.34 1 1.29 -1.28 0.73 f*
+255 0 r6
+679.45 1505.73 -3.49 2.73 1 1.24 3.82 -2.32 5.43 -0.29 -3.17 -4.05 -3.58 2.69 f*
+681.55 916.58 -3.93 5.12 4.41 0.22 3.86 -5.1 -4.34 -0.24 f*
+676.28 1714.63 1.65 2.66 2.78 4.21 6.29 0.81 6.27 0.71 2.95 0.28 -3.69 -1.34 -7.81 -3.67 
+-0.54 -0.21 -7.9 -3.45 f*
+255 203 0 rG
+679.1 1709.75 -0.17 0.21 1.3 1.71 -0.43 -1.57 -0.69 -0.36 f*
+255 G
+684.59 1582.86 -5.19 -3.86 1.99 -3.09 2.09 -3.04 5.04 3.95 5.08 3.89 4.58 3.41 0.56 0.41 
+5.19 3.78 1.91 -2.8 5.16 3.73 5.21 3.67 5.27 3.6 5.29 3.54 5.36 3.45 5.4 3.4 
+2.41 1.48 3.04 1.84 5.5 3.25 1.43 -2.3 1.52 -2.28 5.4 3.3 5.45 3.25 -1.37 2.09 
+-0.02 0.07 -1.32 2.17 -1.26 2.21 5.66 2.97 1.19 -2.15 1.26 -2.1 1.32 -2.11 1.39 -2.05 
+5.45 3.15 5.51 3.1 -1.26 1.93 -1.19 1.96 -1.13 1.97 5.71 2.82 5.77 2.73 3.21 1.5 
+2.58 1.17 -0.69 1.34 -0.22 0.43 -0.85 1.82 -5.9 -2.54 -0.84 1.91 -5.93 -2.54 -5.9 -2.58 
+-0.89 2.06 -5.9 -2.61 -5.88 -2.69 -3.82 -1.8 -2.02 -0.96 1.06 -2.28 1.11 -2.26 -5.68 -2.99 
+-1.17 2.32 -1.11 2.37 -5.77 -2.93 -1.09 2.45 5.82 2.84 -0.95 2.41 -0.89 2.43 5.95 2.63 
+-0.75 2.38 -0.67 2.32 -0.02 0.07 -0.61 2.43 -0.67 -0.26 -5.42 -2.12 -0.59 2.52 -4.01 -1.56 
+-2.09 -0.85 -0.54 2.63 -6.12 -2.41 -0.5 2.74 -6.14 -2.43 -6.1 -2.49 -6.05 -2.59 0.63 -2.95 
+-5.99 -2.75 -5.97 -2.84 0.83 -3.09 0.91 -3.04 1 -3.02 1.09 -2.97 -5.71 -3.19 1.23 -3.02 
+1.33 -2.97 -5.55 -3.41 1.47 -3 1.56 -2.95 -4.42 -2.95 -0.96 -0.62 1.71 -2.97 -5.27 -3.73 
+-5.21 -3.78 f*
+110 210 9 rG
+680.21 1664.04 -0.02 0 0.04 0.02 -0.02 -0.02 f*
+7 193 59 rG
+686.29 1707.55 -0.74 -3.69 1.93 0.05 2.09 0.65 2.69 3.34 0.54 0.67 3.11 3.95 -2.84 1.28 
+-2.62 -2.02 -4.14 -4.23 f*
+255 0 r6
+690.34 1505.23 -2.52 1.83 3.67 -0.35 5.86 0.39 -3.39 -4.43 -3.62 2.56 f*
+110 210 9 rG
+688.65 1676.41 -0.28 0.41 0.67 1.05 0.21 -0.8 -0.61 -0.65 f*
+0 255 r6
+689.17 1555.58 -0.39 2.21 1.5 6.17 4.43 3.88 0.26 0.39 4.14 4.95 0 2.86 -2 2.91 
+1.07 5.17 0.56 0.41 5.19 3.78 1.91 -2.8 5.16 3.73 5.21 3.67 5.27 3.6 5.29 3.54 
+5.36 3.45 5.4 3.4 2.41 1.48 -1.84 -2.37 -1.91 -3.43 0.54 -3.19 1.09 -2.87 0.41 -1.63 
+0.22 -1.61 2.49 -1.74 0.13 -0.11 6.51 1.89 0.44 -0.5 -4.99 -3.73 -4.95 -3.78 2.13 -2.32 
+-4.82 -3.88 2.25 -2.34 1.61 -1.58 -1.9 -3 0.17 -3.78 -5.04 -0.52 -2.17 -1.11 -1.06 -1.82 
+2.28 0.67 5.88 2.15 0.67 0.13 4.67 0.22 2.3 -2.43 2.61 1.89 2.23 -1.87 -4.32 -4.21 
+-4.25 -4.23 2.78 -2.17 -4.15 -4.34 2.7 -1.98 0.08 -0.32 2.63 -2.52 -3.43 -3.88 1.04 -0.72 
+-3.19 -4.94 -5.18 -3.65 -1.02 -0.43 -6.4 -1.54 -0.2 0 -3.77 1.41 -3.13 2.4 -4.16 1.22 
+-3.32 2.17 -3.17 2.32 -3.26 2.23 -3.53 1.93 -2.89 0.34 -4.38 -2.14 -2.91 2.64 -2.26 3.26 
+-0.67 4.69 -0.34 2.3 f*
+255 0 r6
+701.26 1504.99 -3.15 2.15 4.86 0.11 -1.71 -2.26 f*
+701.04 1725.7 1.3 1.75 2.97 3.82 6.14 0.24 3.69 0.09 -5.49 -2.39 -3.38 -1.52 -5.23 -1.99 f*
+7 193 59 rG
+708.38 1698.59 -5.6 -2 4.17 -1.21 4.88 2.65 -3.45 0.56 f*
+0 155 255 rG
+715.73 1509.79 -3.6 2.32 0.39 0.52 3.47 -2.5 4.47 -1.15 4.64 -0.89 4.8 -0.65 -3.04 -4.34 
+-3.78 2.17 -3.71 2.24 -3.64 2.28 f*
+2 239 204 rG
+716 1510.13 -3.47 2.5 3.28 4.19 1.67 -1.11 1.23 -2.02 4.02 -1.7 0.78 -0.11 5.93 2.08 
+0.95 0.61 3.26 -1.91 -3.41 -4.77 -0.32 -0.45 -4.8 0.65 -4.64 0.89 -4.47 1.15 f*
+255 203 0 rG
+718.29 1716.34 -1.54 1.59 1.39 3.41 1 3.41 -0.48 0.63 -0.52 2.78 4.29 2 3.02 1.52 
+6.53 3.28 1.06 0.43 8.29 2.17 0.8 0.22 5.88 2.82 4.41 2.88 3.64 2.91 0.78 -0.11 
+1.07 0.93 5.08 1.46 1.54 -0.3 -6.62 -2.26 -2.71 -1.32 -1.74 -1.46 -4.08 -2.89 -2.39 -3.1 
+-7.86 -2.15 -2.52 -0.46 -5.6 -1.65 -2.47 -1.45 -1.07 -2.76 4.02 2.7 3.71 1.37 0 -2.17 
+-3.11 -2.54 -0.08 -1.32 6.31 1.17 -3.12 2.69 0 2.17 2.84 1.06 1.58 0.59 7.62 2.5 
+0.65 0.17 6.1 2.65 4.71 2.04 1.28 0.43 5.77 2.35 3.04 0.24 7.4 0.89 1.82 1 
+2.41 1.28 4.78 2.04 4.75 1.93 3.41 2.35 -0.71 2.9 -1.7 1.55 5.55 0.89 1.22 0.26 
+2.78 0.63 0 -8.27 -0.98 -0.22 -5.66 -1.37 -5.18 -1.35 -0.46 -0.22 -4.36 -2.06 -3.04 -2.47 
+-3.32 -2.41 -6.59 -1.47 -1.74 -0.02 -5.55 -0.5 -2.97 -1.32 -6.54 -1.5 -1.62 -0.69 -7.51 -2.13 
+-1.15 -0.37 -5.82 -2.97 1.8 -2.5 5.04 2.14 3.54 0.46 6.73 1.87 3.32 2 1.21 0.63 
+7.45 1.39 4.45 -0.54 0 -8.33 -0.63 -0.05 -0.63 -1.3 1.37 1.2 -0.11 0.15 0 8.33 
+1.49 -0.2 1.52 0.11 5.27 -0.11 1.04 -1.13 2.41 -2.02 4.95 -1.8 0.56 -0.72 3.95 -1.56 
+4.47 -0.34 2.69 0.5 2.17 0.91 -0.11 0.89 -4.79 2.04 -1.87 1.61 -0.48 2.43 0.07 0.54 
+0.91 0.26 7.42 0.15 -2.91 3.34 -5.38 1.52 0.04 0.76 1.78 0.61 3.21 0.89 1.32 2.32 
+0.28 0.3 -0.62 3.56 -0.43 0.76 0 8.27 3.04 0.67 -0.7 2.15 -5.76 0.65 -2.25 -2.95 
+-3.21 0.39 0.84 0.52 3.89 2.34 3.99 2.25 -1.02 0.46 3.14 0.71 4.71 -2 3.38 -0.02 
+-0.13 1.71 -3.54 2.63 0.54 1.46 3.14 2.73 4.14 2.23 2.61 0.52 0 -1.96 -0.19 -0.02 
+-5.01 -1.62 -1.17 -1.32 5.2 -1.82 1.13 0.17 0.85 0.76 -0.59 3.58 -0.22 0.28 0 1.96 
+3.19 0.63 3.41 0.24 2.69 -3 -0.5 -1 -0.89 -3.77 -0.07 -0.16 -0.78 -0.21 -3.76 -1.3 
+-1.45 -1.08 3.34 -2.8 -0.42 -1.17 -2.54 -2.5 -3.69 -1.82 -3.62 -1.89 -3.11 -2.14 -2.84 -2.25 
+0.39 -1.57 0.61 -2.21 -5.42 -1.15 2.47 -2.2 0 -7.81 4.06 -1.46 0.13 0.04 -0.02 0.05 
+-4.17 1.37 0 7.81 0.74 -0.65 2.76 -2.52 -0.37 -1.2 1.8 0.67 5.46 0.85 3.15 1.67 
+3.75 1.37 2 2.2 1.06 2.78 1.29 1.84 0.41 0.67 2.23 2.3 2.61 2.11 3.54 1.54 
+2.69 2.15 3.71 1.41 3.38 1.65 3.67 1.46 1.21 1.15 1.31 1.39 3.27 1.93 3.82 1.41 
+4.32 0.85 7.9 2.52 4.12 1.06 1.26 -2 4.14 0.8 1.89 -3.41 -3.43 -0.67 -0.83 0.39 
+-4.4 -0.2 -4.23 -0.54 -3.93 -1.02 -0.02 -1.84 2.02 -0.67 4.67 -0.24 4.21 0.24 2.23 3.36 
+1.8 -3.02 2.02 -3.45 -3.55 -0.76 2.16 -3.47 -3.36 -0.75 2.32 -3.45 -2.17 -0.52 -1.99 1.11 
+-2.28 1.82 -3.63 0.7 -3.95 -0.26 -3.1 -1.28 -3.06 -1.3 -4.86 0.44 -0.29 0.18 -6.36 1.58 
+-0.19 -0.07 -0.02 -0.02 0.7 -4.05 -0.07 -0.37 -2.28 -1.95 -3 0.05 -2.3 0.13 -4.04 -0.84 
+-0.08 -2.34 -0.46 -0.7 -2.5 -1.76 -2.34 -0.32 -1.71 -0.59 -3.19 -1.43 -2.84 -1.63 -2.56 -1.78 
+-2.04 -2.02 P
+0.04 -0.11 3.27 -3.21 -0.7 -0.48 -2.36 -1.71 -2.32 -1.76 -2.24 -1.78 -2.19 -1.82 -2.11 -1.82 
+-2.04 -1.89 -1.96 -1.89 5.64 -1.37 -1.82 -1.82 -1.76 -1.82 -1.69 -1.87 -1.62 -1.89 -1.57 -1.91 
+4.93 -0.76 -6.29 -1 -1.73 0.07 -5.12 -0.41 -0.79 -0.24 -2.02 -0.65 -1.96 -2.06 -3.27 -2 
+-1.2 -2.17 3.12 -2.25 -3.6 -2.06 -0.18 -2.15 -0.41 -2.12 0.21 -2.11 -5.46 -2.36 -2.21 -2.32 
+-0.26 -0.26 -1.76 -2.11 0.61 -1.78 0.34 -0.29 -0.48 -0.28 -6.33 -2.76 -0.63 -0.19 -3.62 -2.73 
+-0.61 -2.41 -1.24 -2.54 -2.25 -2.39 -0.46 -0.52 -1.65 -2.73 -1.39 -2.73 -3.02 -3.25 -0.04 -0.09 
+-1.5 -2.84 -2.26 -3.23 -1.47 -3.06 -0.24 -1.43 0.09 -1.22 0.02 -2.62 0.43 -2.5 -5.42 -2.12 
+-0.59 2.52 -4.01 -1.56 -0.66 2.54 -0.56 2.59 -1.93 -0.33 -3.66 1.08 3.11 3.3 2.71 1.52 
+2.15 3.39 0.48 2.82 0.59 0.89 0.43 2.06 0.41 2.73 0.95 2.87 0.64 2.73 0.61 2.73 
+0.93 2.76 0.8 2.71 0.26 2.63 -0.32 2.52 5.44 2.65 4.54 1.22 2.63 1.73 0.8 1.09 
+1.61 2.56 1.61 2.54 1.97 2.52 1.48 2.5 -0.15 2.43 3.03 2.47 1.46 2.43 1.24 2.43 
+0.61 2.48 1.02 2.47 0.63 1.82 0.35 0.67 0.28 0.13 4.43 1.97 3.88 2.09 1.3 2.39 
+-0.11 2.67 -0.32 1.28 -2.91 -0.74 -3.84 -2.13 -2.39 -2.4 -4 -2 -0.52 -0.22 -7.16 -2.17 
+-0.79 -0.2 -6.46 -0.15 -6.75 -0.67 -5.58 0.89 -0.22 0.83 1.96 2.97 3.29 2.91 1.15 3 
+-3 2.25 -6.81 -1.75 -1.26 -0.39 -4.64 -2.7 -3.97 -3.21 -4.52 -3.34 -0.24 -3.19 -2.65 -1.17 
+-2.34 0.89 -2.17 1.45 p f*
+7 193 59 rG
+718.71 1513.7 -1.23 2.02 1.84 -1.2 3.64 4.69 1 1.26 5.75 1.43 0.72 0.2 -0.35 -0.44 
+-3.62 -4.68 3.58 -2.17 0.35 -0.22 -0.95 -0.61 -5.93 -2.08 -0.78 0.11 -4.02 1.7 f*
+255 0 r6
+718.82 1733.09 1.78 2.11 2.73 -0.02 -4.51 -2.09 f*
+255 203 0 rG
+723.29 1646.64 -1.26 -0.22 1.22 0.57 0.39 0.02 -0.35 -0.36 f*
+255 0 r6
+727.43 1496.14 -3.89 2.13 2.96 4.32 2.32 -0.57 1.86 -1.04 -3.25 -4.84 f*
+0 155 255 rG
+728.82 1502.02 -2.32 0.57 0.37 0.52 1.95 -1.09 f*
+189 0 54 rG
+729.17 855.99 -1.82 1.48 1.17 0.24 0.65 -1.72 f*
+255 135 0 rG
+731.51 1731.55 -4.02 -2.7 1.07 2.76 2.47 1.45 5.6 1.65 2.52 0.46 7.86 2.15 2.39 3.1 
+4.08 2.89 1.74 1.46 2.71 1.32 6.62 2.26 1.21 -0.24 3.13 2.56 0.39 0.17 4.55 2.43 
+5.38 2.13 5.14 2.06 0.24 -0.09 0 -0.41 -2.13 -0.84 -2.39 -0.98 -4.73 -2.25 -3.96 -2.55 
+-3.69 -2.62 2.86 -1.32 2.08 0.26 5.32 2.08 4.36 2.24 2.28 0.82 2.97 1.07 2.32 2.62 
+-5.3 1.48 0 0.41 0.41 -0.13 3.69 2.45 2.95 1.87 3.21 -0.39 2.25 2.95 5.76 -0.65 
+0.7 -2.15 -3.04 -0.67 -2.78 -0.63 -1.22 -0.26 -5.55 -0.89 1.7 -1.55 0.71 -2.9 -3.41 -2.35 
+-4.75 -1.93 -4.78 -2.04 -2.41 -1.28 -1.82 -1 -7.4 -0.89 -3.04 -0.24 -5.77 -2.35 -1.28 -0.43 
+-4.71 -2.04 -6.1 -2.65 -0.65 -0.17 -7.62 -2.5 -1.58 -0.59 -2.84 -1.06 -3.71 -1.37 f*
+87 0 136 rG
+729.17 855.99 -0.65 1.72 1.84 0.36 3.09 0.57 3.12 0.56 3.17 0.55 2 0.32 5.64 -3.62 
+0.61 -0.52 -3.11 -0.54 -3.09 -0.57 5.36 -4.29 5.43 -4.26 5.56 -4.16 5.64 -4.08 5.76 -4.02 
+5.86 -3.93 5.97 -3.84 6.05 -3.75 6.17 -3.67 6.29 -3.58 6.36 -3.5 1.82 0.57 1.87 0.54 
+6.25 -3.41 1.76 0.5 1.82 0.5 1.84 0.5 1.89 0.48 1.91 0.45 5.73 -3.39 1.82 0.43 
+1.84 0.44 5.58 -3.34 1.75 0.39 1.78 0.39 1.81 0.39 1.82 0.37 1.84 0.35 1.89 0.35 
+1.91 0.32 4.73 -3.34 1.78 0.31 3.64 0.61 -4.32 3.36 2 0.31 2 0.25 -3.95 3.46 
+2.17 0.28 2.19 0.26 2.21 0.26 -3.46 3.52 2.36 0.24 2.39 0.24 2.41 0.22 -3 3.57 
+2.56 0.22 -2.78 3.63 5.43 0.39 2.76 0.17 -2.32 3.67 2.89 0.17 -2.15 3.71 6.08 0.31 
+3.05 0.13 3.09 0.13 3.06 0.11 3.11 0.11 -1.33 3.73 6.47 0.18 -1.02 3.75 3.36 0.09 
+3.37 0.04 3.38 0.07 3.38 0.04 3.39 0.02 3.38 0.04 13.57 0 3.38 -0.04 3.38 -0.02 
+3.39 -0.04 3.38 -0.07 3.37 -0.04 10.09 -0.26 1.25 3.8 3.48 -0.11 6.9 -0.21 3.43 -0.13 
+-1.74 -3.82 3.3 -0.12 3.3 -0.16 3.25 -0.17 3.28 -0.17 3.23 -0.17 3.23 -0.2 6.42 -0.43 
+3.16 -0.24 2.87 3.85 3.28 -0.24 3.26 -0.24 3.25 -0.26 3.21 -0.28 3.19 -0.29 3.16 -0.3 
+3.15 -0.31 3.1 -0.33 3.09 -0.34 3.06 -0.35 4.01 3.95 3.15 -0.37 4.06 4 3.23 -0.37 
+3.2 -0.37 3.17 -0.41 3.14 -0.39 3.11 -0.43 1 0.89 0 -28.17 -2.15 -0.76 -3.54 -1.25 
+-3.78 -3.15 1.68 -0.69 6.42 2.37 3.63 3.02 -2.25 0.48 0 28.17 3.53 3.2 3.18 -0.44 
+3.14 -0.43 2.59 -0.39 0 -26.63 -2.84 -1.11 -5.04 -1.96 -3.15 -3.04 6.19 1.96 4.84 4.14 
+0 26.63 0.52 -0.09 4.77 4.19 3.17 -0.48 3.15 -0.48 -5.02 -4.21 3 -0.52 2.93 -0.54 
+-5.32 -4.14 2.78 -0.56 2.73 -0.59 1.43 -0.31 0 -14.49 -3.8 -1.34 -0.43 -0.15 -3.14 -0.89 
+-6.43 -1.91 -3.34 -3.58 2.84 -0.17 5.58 1.91 6.49 3.93 2.24 2.21 0 14.49 1.26 -0.28 
+2.65 -0.63 2.61 -0.63 1.47 -0.39 -0.63 -1.43 2.54 -0.65 2.41 0.91 1.69 -0.5 2.39 -0.72 
+2.32 -0.76 -6.51 -4.1 -6.64 -4.02 2.06 -0.76 2.02 -0.8 1.96 -0.8 1.88 -0.85 1.84 -0.85 
+1.79 -0.86 1.7 -0.91 7.38 3.97 7.25 4.11 1.84 -0.96 1.8 -0.95 7.34 4.19 1.82 -1 
+1.74 -1.04 1.67 -1.04 1.58 -1.11 1.52 -1.11 1.46 -1.15 1.34 -1.2 1.28 -1.19 1.2 -1.24 
+1.13 -1.28 1.02 -1.32 8.29 4.23 1.02 -1.37 0.91 -1.39 0.84 -1.43 0.74 -1.48 0.63 -1.5 
+0.54 -1.54 0.43 -1.58 -8.87 -4.02 0.26 -1.58 0.15 -1.61 0.04 -1.65 -0.08 -1.68 -0.18 -1.71 
+-0.3 -1.76 -0.42 -1.78 9.33 3.71 -0.5 -1.89 -9.35 -3.64 -0.67 -1.84 -0.79 -1.87 -0.89 -1.93 
+-1.04 -1.93 -1.17 -1.98 -1.28 -1.99 -1.46 -2.04 -1.56 -2.07 -1.72 -2.09 -1.84 -2.1 -2 -2.13 
+-2.15 -2.15 -2.3 -2.18 -2.43 -2.19 -2.61 -2.21 -2.76 -2.21 -2.89 -2.23 -3.06 -2.24 -3.24 -2.23 
+-3.36 -2.23 -3.54 -2.24 -3.71 -2.23 -3.84 -2.23 -4.02 -2.22 -4.19 -2.19 -8.46 -0.76 -4.19 -2.04 
+-4.34 -2 P
+-4.47 -2 -7.81 -0.12 -4.43 -1.81 -4.55 -1.78 -4.71 -1.73 -4.82 -1.67 -4.95 -1.65 -6.55 0.7 
+-4.82 -1.46 -4.92 -1.41 -5.02 -1.37 -5.14 -1.3 -5.33 1.3 -4.95 -1.13 -5.01 -1.08 -5.1 -1.02 
+-5.19 -0.93 -5.23 -0.89 -5.32 -0.82 -3.41 1.93 -5.03 -0.67 -5.1 -0.61 -2.67 2.11 -2.61 2.14 
+4.47 0.5 -2.84 2.17 4.14 0.5 4.08 0.56 4.04 0.59 -3.61 2.06 3.71 0.58 -3.77 2.06 
+-3.69 2.13 -3.61 2.21 -2.91 -0.44 -2.96 -0.37 -2.97 -0.37 -2.99 -0.3 -3.04 -0.3 2.26 -2.41 
+-3.32 -0.29 -1.97 2.45 -3.06 -0.24 -3.06 -0.19 -3.08 -0.15 -3.1 -0.11 -3.08 -0.09 -3.11 -0.07 
+-6.23 0 -3.1 0.07 -3.11 0.09 -3.08 0.11 -3.08 0.15 -3.06 0.19 -3.06 0.24 -3.04 0.24 
+-6.03 0.61 -2.97 0.37 3 2.34 -2.69 0.34 -2.67 0.38 -2.64 0.39 -2.61 0.41 -3.99 -2.14 
+-2.82 0.5 -2.8 0.54 -2.76 0.55 -4.82 -1.89 -2.95 0.67 -2.91 0.67 -2.84 0.72 -2.8 0.74 
+-2.73 0.76 -2.69 0.78 -6.3 -1.3 -2.82 0.91 -2.78 0.91 -2.71 0.93 -6.99 -0.89 -2.82 1.06 
+-2.75 1.08 -2.67 1.11 -2.58 1.13 -2.52 1.13 -2.45 1.15 -2.34 1.17 -2.28 1.17 -2.19 1.2 
+-2.12 1.2 -8.55 0.28 -2.15 1.3 -2.04 1.32 -1.95 1.32 -1.87 1.3 -1.78 1.32 -1.7 1.32 
+-9.13 1.09 -1.65 1.43 9.2 -1.19 -1.52 1.32 -1.41 1.3 -1.34 1.32 -1.24 1.3 -1.17 1.3 
+-1.07 1.29 -0.97 1.28 -0.91 1.28 -0.8 1.28 -0.74 1.24 -0.65 1.25 -0.56 1.22 9.39 -1.97 
+-0.5 1.15 -0.43 1.13 -0.34 1.13 -0.26 1.11 -0.21 1.11 -0.14 1.09 -9.24 2.38 -9.2 2.59 
+-9.18 2.75 0.07 1.26 0.16 1.21 -9.03 3.06 0.3 1.26 0.39 1.24 0.46 1.19 8.83 -3.19 
+0.48 1.15 0.54 1.13 0.63 1.11 0.7 1.09 0.76 1.06 0.84 1.05 0.89 1.02 0.97 1 
+8.31 -3.32 0.96 0.96 8.31 -3.19 0.93 0.89 1 0.89 1.04 0.87 1.13 0.84 -7.97 3.32 
+1.26 0.84 -7.77 3.47 1.41 0.84 1.48 0.85 -7.46 3.64 -7.38 3.75 1.73 0.84 1.78 0.82 
+1.87 0.8 -6.97 3.88 2.02 0.8 2.06 0.76 2.13 0.76 2.17 0.72 -6.42 4.02 -6.31 4.1 
+-6.19 4.21 2.54 0.7 -5.99 4.27 2.71 0.67 2.78 0.66 -5.66 4.34 -3.73 2.95 p f*
+255 203 0 rG
+731.54 1565.64 -2.28 -0.67 1.06 1.82 2.17 1.11 5.04 0.52 -0.17 3.78 1.9 3 0.72 -0.7 
+4.67 3.97 2.32 -2.2 4.64 3.97 2.3 -2.13 -4.55 -4.01 2.43 -2.12 -4.45 -4.12 0.32 -0.26 
+-2.61 -1.89 -2.3 2.43 -4.67 -0.22 -0.67 -0.13 -5.87 -2.15 f*
+255 0 r6
+728.52 1737.2 1.22 1.33 1.41 -0.07 -2.62 -1.26 f*
+0 255 r6
+732.12 1728.21 -0.08 -1.32 6.31 1.17 -3.12 2.69 -3.11 -2.54 f*
+255 203 0 rG
+736.74 1599.39 -0.54 3.19 1.91 3.43 1.84 2.37 3.04 1.84 5.5 3.25 1.43 -2.3 1.52 -2.28 
+5.4 3.3 5.45 3.25 -1.37 2.09 4.66 -0.18 -2.17 -3.58 -2.54 -2.19 -1.49 -3 -5.95 -2.52 
+-1.8 -0.3 -5.3 -0.09 -1.54 2.37 -0.32 -0.15 -0.09 -0.11 1.52 -2.36 1.32 -2.54 0.82 -2.89 
+1.91 0.29 4.71 0.8 -3.45 -2.38 -5.1 -3.61 1.47 -1.75 -6.51 -1.89 -0.13 0.11 -2.49 1.74 
+-0.22 1.61 -0.41 1.63 -1.09 2.87 f*
+0 255 r6
+743.84 1734.29 -5.82 -2.97 1.8 -2.5 5.04 2.14 3.54 0.46 6.73 1.87 3.32 2 1.21 0.63 
+7.45 1.39 4.45 -0.54 1.49 -0.2 1.52 0.11 5.27 -0.11 1.04 -1.13 2.41 -2.02 4.95 -1.8 
+0.56 -0.72 3.95 -1.56 4.47 -0.34 2.69 0.5 2.17 0.91 -0.11 0.89 -4.79 2.04 -1.87 1.61 
+-0.48 2.43 0.07 0.54 0.91 0.26 7.42 0.15 -2.91 3.34 -5.38 1.52 0.04 0.76 1.78 0.61 
+3.21 0.89 1.32 2.32 0.28 0.3 -0.62 3.56 -0.43 0.76 -0.98 -0.22 -5.66 -1.37 -5.18 -1.35 
+-0.46 -0.22 -4.36 -2.06 -3.04 -2.47 -3.32 -2.41 -6.59 -1.47 -1.74 -0.02 -5.55 -0.5 -2.97 -1.32 
+-6.54 -1.5 -1.62 -0.69 -7.51 -2.13 -1.15 -0.37 f*
+255 35 0 rG
+741.97 861.16 -3.93 3.54 1 0.15 4.52 -1.65 2.67 -2.43 -2.21 -0.33 -2.04 0.72 f*
+0 155 255 rG
+736.76 1739.34 1.61 1.65 1.04 0.43 2.06 -0.2 -4.71 -1.89 f*
+255 0 r6
+738.37 1741 0.45 0.48 0.59 -0.04 -1.04 -0.43 f*
+7 193 59 rG
+740.8 1528.8 -0.39 0.24 0.83 0.3 -0.43 -0.54 f*
+255 135 0 rG
+739.04 864.84 2.37 0.32 2.15 -1.97 -4.52 1.65 f*
+189 0 54 rG
+742.96 860.27 -0.99 0.89 2.04 -0.72 -1.05 -0.17 f*
+255 203 0 rG
+743.38 1622.98 -1.09 2.45 5.82 2.84 -0.95 2.41 -0.89 2.43 5.95 2.63 1.41 -2.11 -0.04 -1.63 
+0.2 -1.05 0.28 -0.12 2.91 -1.13 -2.02 -0.96 1.06 -2.28 1.11 -2.26 -5.68 -2.99 -1.17 2.32 
+-1.11 2.37 -5.77 -2.93 f*
+110 210 9 rG
+742.64 1548.8 0.08 -0.32 2.63 -2.52 0.5 0.57 -2.97 2.11 -0.24 0.17 f*
+189 0 54 rG
+741.73 860.07 1.23 0.2 4.41 -3.82 -5.64 3.62 f*
+255 135 0 rG
+745.9 1605.43 -1.52 2.36 0.09 0.11 0.32 0.15 1.54 -2.37 5.3 0.09 1.8 0.3 5.95 2.52 
+1.49 3 2.54 2.19 2.17 3.58 -4.66 0.18 -0.02 0.07 -1.32 2.17 -1.26 2.21 5.66 2.97 
+1.19 -2.15 1.26 -2.1 1.32 -2.11 1.39 -2.05 5.45 3.15 5.51 3.1 -1.26 1.93 -1.19 1.96 
+-1.13 1.97 5.71 2.82 5.77 2.73 3.21 1.5 -0.37 -2.46 0.22 -2.21 -0.33 -1.52 -1.02 -1.54 
+-1.82 -3.45 -0.72 -0.98 -1.39 -2.78 0.39 -2.43 -0.85 -2.58 -2.36 -2.17 -1.82 -2.43 -0.5 -2 
+0.71 -2.52 0.85 -2.47 0.65 -2.67 1.11 -1.99 -1.67 1.56 -1.82 1.85 -4.92 -3.64 -4.88 -3.69 
+-4.84 -3.75 -2 2.02 -2.6 -2 -1.87 2.18 2.52 1.86 -1.89 2.09 -1.84 2.13 -1.78 2.14 
+-1.69 -1.17 -4.71 -0.8 -1.91 -0.29 -0.82 2.89 -1.32 2.54 f*
+2 239 204 rG
+745.57 1741.82 1.61 1.57 1.15 0.61 4.02 2.95 0.93 -0.12 -3.93 -2.95 -3.78 -2.04 f*
+0 155 255 rG
+747.18 1743.38 0.71 0.65 2.41 2.25 1.11 0.8 0.93 -0.16 -4.02 -2.95 -1.15 -0.61 f*
+255 135 0 rG
+749.02 1647.8 -0.09 1.22 0.24 1.43 1.47 3.06 2.26 3.23 1.5 2.84 0.04 0.09 3.02 3.25 
+1.39 2.73 1.65 2.73 0.46 0.52 2.25 2.39 1.24 2.54 0.61 2.41 3.62 2.73 0.63 0.19 
+6.33 2.76 0.48 0.28 -0.34 0.29 -0.61 1.78 1.76 2.11 0.26 0.26 2.21 2.32 5.46 2.36 
+-0.21 2.11 0.41 2.13 0.18 2.15 3.6 2.06 -3.12 2.25 1.2 2.17 3.27 2 1.96 2.06 
+2.02 0.65 0 -0.85 -1.41 -2.06 -1.32 -2.06 -1.24 -2.08 -1.19 -2.08 6.27 -0.24 6.27 -0.3 
+1.11 1.87 1.15 1.87 1.23 1.87 1.3 1.84 -6.08 0.74 -6.1 0.65 0 0.85 0.79 0.24 
+5.12 0.41 1.73 -0.07 6.29 1 1.05 -0.18 5.94 -1.02 1.43 1.69 5.84 -1.19 -1.37 -1.61 
+5.88 -1.2 2.37 -0.5 -2.17 -1.29 -1 -1.54 0.37 -1.75 -1.11 -1.5 -3.11 0.43 -1.02 -1.56 
+-0.65 -1.02 -1.2 -0.48 -1.63 -1.54 -1.88 -1.56 -1.67 -1.61 -1.84 -1.63 -1.8 0.04 -0.74 -1.71 
+-0.67 -1.72 -0.29 -0.8 -1.12 -0.96 -0.87 -1.73 -0.73 -1.78 -1.87 -1.85 -3.67 -0.3 -0.39 -1.83 
+-6.46 -0.7 -6.47 -0.78 -0.32 -2.02 -0.26 -2.02 -6.45 -1.06 -6.45 -1.15 -0.15 -2.22 -0.11 -2.19 
+6.43 1.34 6.42 1.26 6.44 1.15 6.45 1.09 0.13 1.8 0.22 1.82 0.26 1.82 2.88 0.32 
+-1.34 -1.91 -0.46 -1.82 1.15 -1.61 0.17 -1.72 -3.12 -1.56 -5.21 -1.8 -1.21 -0.72 -1.28 -1.71 
+1.28 -1.63 0.17 -0.17 1.34 -1.37 -1.19 -0.3 -6.34 -1.61 0.26 -1.95 -6.27 -1.8 0.35 -2.02 
+0.41 -2.02 6.23 1.96 0.46 0.15 0 -2.06 -6.18 -2.04 -6.16 -2.12 0.58 -2.06 0.52 -1.65 
+-0.07 -0.48 0.24 -0.02 6.18 1.89 3.02 1.67 2.93 1.04 -0.57 1.89 -0.5 1.89 0 2.06 
+2.19 0.67 1.43 -1.56 2.43 -1.21 0.67 0 1.37 -1.3 -0.76 -0.76 -3.45 -2.73 -1.39 -2.63 
+1.26 -1.63 2.39 -1.15 -0.16 -2.19 -1.02 -0.98 -0.22 0.43 -0.85 1.82 -5.9 -2.54 -0.84 1.91 
+-5.93 -2.54 -5.9 -2.58 -0.89 2.06 -5.9 -2.61 -5.88 -2.69 -3.82 -1.8 -2.91 1.13 -0.28 0.13 
+-0.2 1.05 0.04 1.63 -1.41 2.11 2.02 3.51 -3.45 1.2 -0.02 0.07 -0.61 2.43 -0.67 -0.26 
+-0.43 2.5 -0.02 2.62 f*
+255 203 0 rG
+751.46 1638.13 -0.67 2.32 3.45 -1.2 -2.02 -3.51 -0.75 2.38 f*
+255 0 r6
+750.3 1746.29 0.91 0.82 0.2 -0.02 -1.11 -0.8 f*
+255 203 0 rG
+758.96 1590.11 -2.04 2.08 2.43 1.85 1.87 -2.18 -2.26 -1.75 f*
+0 255 r6
+757.92 1747.2 1.28 1.09 2.28 0.65 1.52 -0.28 -5.08 -1.46 f*
+110 210 9 rG
+759.2 1748.29 1.02 0.89 1.25 -0.24 -2.28 -0.65 f*
+255 35 0 rG
+770.55 1746.4 -2.86 1.32 3.69 2.62 3.96 2.55 4.73 2.25 2.39 0.98 0 -0.61 -1.04 -0.43 
+-0.46 -0.2 -4.1 -2.41 -3.41 -2.62 -0.43 -1.43 2.64 0.91 4.04 2.39 4.12 2.32 -1.37 1.47 
+0 0.61 2.13 0.84 5.3 -1.48 -2.32 -2.62 -2.97 -1.07 -2.28 -0.82 -4.36 -2.24 -5.32 -2.08 
+-2.08 -0.26 f*
+255 203 0 rG
+768.88 1750.67 0.26 0.2 3.47 2.71 0.31 0.22 5.4 1.84 5.25 2.06 0.79 -0.24 -5.14 -2.06 
+-5.38 -2.13 -4.55 -2.43 -0.39 -0.17 f*
+255 135 0 rG
+771.66 1728.28 -1.37 -1.2 0.63 1.3 0.63 0.05 0.11 -0.15 f*
+189 0 54 rG
+775.67 1749.33 -2.64 -0.91 0.43 1.43 3.41 2.62 4.1 2.41 0.46 0.2 0 -0.3 -0.02 -0.02 
+-3.77 -2.47 -3.11 -2.67 3.88 2.45 3.06 2.67 -0.04 0.04 0 0.3 1.04 0.43 1.37 -1.47 
+-4.12 -2.32 -4.04 -2.39 f*
+255 G
+773.61 1668.9 -0.11 -2.19 6.43 1.34 6.42 1.26 6.44 1.15 6.45 1.09 0.13 1.8 0.22 1.82 
+0.26 1.82 2.88 0.32 3.58 0.37 -0.26 -1.71 6.47 0.7 6.49 0.61 6.46 0.52 0.26 1.43 
+0.3 1.43 0.37 1.45 -6.46 -0.24 -6.47 -0.3 -6.46 -0.42 -2.78 -0.2 -3.67 -0.3 -0.39 -1.83 
+-6.46 -0.7 -6.47 -0.78 -0.32 -2.02 -0.26 -2.02 -6.45 -1.06 -6.45 -1.15 -0.15 -2.22 f*
+0 255 r6
+772.92 1753.8 1.37 1.02 3.16 1.08 5.32 2.07 0.8 -0.26 -5.25 -2.06 -5.4 -1.84 f*
+87 0 136 rG
+774.52 1749.61 3.11 2.67 3.77 2.47 0.02 0.02 0.04 -0.04 -3.06 -2.67 -3.88 -2.45 f*
+110 210 9 rG
+774.29 1754.82 1.39 1.02 0.89 0.3 5.4 2.07 0.8 -0.24 -5.32 -2.07 -3.16 -1.08 f*
+255 G
+781.95 1649.61 -6.16 -2.12 0.58 -2.06 0.65 -2.06 6.08 2.3 3.17 1.17 2.93 1.04 -0.57 1.89 
+-0.5 1.89 -6.18 -2.04 f*
+7 193 59 rG
+775.67 1755.84 0.57 0.39 1.02 0.74 3.91 1.5 0.8 -0.25 -5.4 -2.07 -0.89 -0.3 f*
+255 35 0 rG
+777.06 1643.27 -0.24 0.02 0.07 0.48 0.13 -0.41 6.08 2.3 3.17 1.17 -3.02 -1.67 -6.18 -1.89 f*
+2 239 204 rG
+777.25 1756.96 1.72 1.22 1.41 0.52 0.78 -0.24 -3.91 -1.5 f*
+0 155 255 rG
+778.97 1758.18 0.96 0.67 0.45 -0.16 -1.41 -0.52 f*
+255 35 0 rG
+781.36 1606.66 -0.71 2.52 0.5 2 1.82 2.43 2.36 2.17 0.85 2.58 -0.39 2.43 1.39 2.78 
+0.72 0.98 1.82 3.45 1.02 1.54 0.33 1.52 -0.22 2.21 0.37 2.46 2.58 1.17 -0.69 1.34 
+1.02 0.98 0.16 2.19 -2.39 1.15 -1.26 1.63 1.39 2.63 3.45 2.73 0.76 0.76 -1.37 1.3 
+-0.67 0 -2.43 1.21 -1.43 1.56 3.6 1.06 -0.34 1.84 6.29 1.71 -0.26 1.76 -0.21 1.78 
+-5.17 -1.24 -1.34 1.37 -0.17 0.17 -1.28 1.63 1.28 1.71 1.21 0.72 5.21 1.8 3.12 1.56 
+-0.17 1.72 -1.15 1.61 0.46 1.82 1.34 1.91 3.58 0.37 -0.26 -1.71 6.47 0.7 6.49 0.61 
+6.46 0.52 0.26 1.43 0.3 1.43 0.37 1.45 3.97 0.09 -0.43 -1.39 -2 -1.46 -1.17 -1.47 
+-0.34 -1.43 0.02 -1.41 -0.16 -1.41 -0.54 -1.48 -0.87 -1.3 -1.11 -0.39 -5.34 -0.85 -6.45 -1.06 
+0.07 -1.62 0.11 -1.59 3.56 0.7 -1.13 -1.8 -0.93 -1.82 -1 -1.15 -1.08 -1 -1.46 -2.06 
+0.83 -1.48 -0.91 -1.99 -1.8 -2.32 -0.06 -0.11 -2.82 -2.69 3.86 -0.26 0.35 -0.09 1.71 -1.2 
+-1.18 -0.87 -4.12 -3.04 -0.82 -1.47 -2.06 -1.69 -2.82 -2.73 -1.09 -1.07 -2.34 -3.28 0.8 -1.84 
+1.76 -1.35 0.69 -1.93 -0.59 -1.09 -4.56 -4.17 -0.02 -0.04 0.37 -2.23 1.15 0.3 2.13 1.63 
+2.54 2.41 0.5 -0.63 1.3 -1.61 -5.27 -3.21 0.8 -0.93 -0.18 -1.26 -4.36 -2.8 1.57 -1.69 
+1.61 -1.67 -2.71 -1.91 -2.86 0.87 -1.91 0.13 -0.21 -1.61 -0.37 -3.23 3.82 1.52 1.02 -0.97 
+0.61 -0.57 -4.45 -2.3 -1.12 -0.65 -3.6 -2.95 -1.09 -0.84 -0.24 0.24 -1.11 1.99 -0.65 2.67 
+-0.85 2.47 f*
+255 G
+786.96 1657.45 -6.27 -1.8 0.35 -2.02 0.41 -2.02 6.23 1.96 0.46 0.15 2.19 0.67 3.6 1.06 
+-0.34 1.84 6.29 1.71 -0.26 1.76 -0.21 1.78 -5.17 -1.24 -1.19 -0.3 -6.34 -1.61 0.26 -1.95 f*
+255 135 0 rG
+789 1602.97 -3.71 -2.84 3.6 2.95 1.13 0.65 4.45 2.3 1.18 -1.09 -4.78 -3.69 -1.86 1.71 f*
+255 G
+790.19 1701.87 -1.19 -2.08 6.27 -0.24 6.27 -0.3 1.11 1.87 1.15 1.87 1.23 1.87 1.3 1.84 
+-6.08 0.74 -6.1 0.65 -1.41 -2.06 -1.32 -2.06 -1.24 -2.08 f*
+189 0 54 rG
+792.84 1607.57 -3.82 -1.52 0.38 3.23 0.21 1.61 1.91 -0.13 2.86 -0.87 -1.82 -1.28 -0.87 0.11 
+-0.17 -0.87 0.73 0.3 0.59 -0.59 f*
+0 255 r6
+790.73 1559.36 -1.39 0.75 1.37 1.68 0.02 -2.43 f*
+791.04 1565.64 -0.79 0.44 0.91 1.04 -0.13 -1.48 f*
+255 203 0 rG
+790.73 1559.36 -0.02 2.43 1.65 1.95 -0.02 -5.04 0.13 -0.3 -0.26 0.15 -1.48 0.8 f*
+792.45 1564.82 -1.41 0.82 0.13 1.48 1.69 1.91 -0.41 -4.21 f*
+0 255 r6
+791.91 1571.7 -0.46 0.29 1.26 1.34 -0.8 -1.63 f*
+87 0 136 rG
+792.25 1608.16 -0.73 -0.3 0.17 0.87 0.87 -0.11 -0.43 -0.33 0.13 -0.13 f*
+255 203 0 rG
+793.17 1570.95 -1.26 0.75 0.8 1.63 2.69 2.89 1.35 1.45 -1.04 -1.64 -2.54 -5.08 f*
+255 135 0 rG
+792.47 1558.4 -0.13 0.3 0.02 5.04 0.65 0.76 -0.56 0.32 0.41 4.21 1.22 1.36 -0.91 0.55 
+2.54 5.08 1.04 1.64 2.63 2.74 -0.98 0.63 1.54 3.88 1.15 1.15 -0.58 0.39 3.47 4.52 
+2.17 3.54 1.17 1.08 4.34 3.93 4.36 3.86 -1.89 1.39 4.49 3.78 0.41 0.35 0 -5.88 
+-1.93 -0.41 -4.99 -3.43 -1.48 -3.89 -0.61 -1.56 -1.5 -3.99 4.38 2.13 3.8 4.21 3.78 4.23 
+0.63 1.52 -2.08 1.2 0 5.88 4.12 3.36 -1.67 1.32 4.66 3.63 4.71 3.55 4.1 3.04 
+-2.89 -4.02 -0.99 -1.23 -2.97 -2.91 -2.82 -4.32 -0.11 -0.56 -0.84 -3.04 0.15 -2.8 0 -0.55 
+-1.75 -4.19 -0.61 -0.93 -3.94 -4.1 -3.7 -4.3 -4.14 -4.01 -4.38 -3.56 -0.28 -0.15 -1.2 -1.41 
+-2.61 -2.87 -0.29 -0.19 -4.55 -3.45 -1.84 -3.57 -0.79 -1.43 -0.52 -4.69 -0.22 -1.39 -0.15 -4 
+1.24 -2.93 -2.28 1.19 f*
+255 35 0 rG
+794.75 1557.21 -1.24 2.93 0.15 4 0.22 1.39 0.52 4.69 0.79 1.43 1.84 3.57 4.55 3.45 
+0.29 0.19 2.61 2.87 1.2 1.41 0.28 0.15 4.38 3.56 4.14 4.01 3.7 4.3 3.94 4.1 
+0.61 0.93 1.75 4.19 0 0.55 -0.15 2.8 0.84 3.04 0.11 0.56 2.82 4.32 2.97 2.91 
+0.99 1.23 2.89 4.02 0.63 0.48 -0.32 0.26 0.43 1.96 3.38 2.34 -1.25 1.13 -1.24 1.15 
+2.64 1.69 1.2 -1.11 0.15 -1.85 -0.95 -1.5 -1.15 -2.02 -1.84 -2.93 -0.87 -1.24 -2.7 -3.19 
+-3.69 -4.25 -0.02 -0.04 -1.21 -3.65 -0.87 -1.78 -0.74 -2.47 0.28 -2.69 -0.41 -0.98 -3.14 -4.6 
+-3.91 -4.12 -3.69 -4.25 -3.75 -4.25 -4.93 -3.56 -3.91 -4.21 -4.54 -3.84 -2.97 -4.75 -0.26 -2.35 
+-0.56 -3.64 -0.07 -1.95 2.04 -2.56 0.63 -3.14 -2.21 1.13 -0.39 0.2 f*
+189 0 54 rG
+796.72 1559.03 -2.04 2.56 0.07 1.95 0.56 3.64 0.26 2.35 2.97 4.75 4.54 3.84 3.91 4.21 
+4.93 3.56 3.75 4.25 3.69 4.25 3.91 4.13 3.14 4.6 0.41 0.98 -0.28 2.69 0.74 2.47 
+0.87 1.78 1.21 3.65 0.02 0.04 3.69 4.25 2.7 3.19 0.87 1.24 1.84 2.93 1.15 2.02 
+0.95 1.5 -0.15 1.85 -1.2 1.11 1.35 0.85 1.21 -1.07 0.48 -1.56 -2.04 -3.19 -0.22 -0.37 
+-1.78 -3.43 -0.85 -1.21 -3.89 -4.14 -1.82 -2.08 -1.5 -2.52 -0.61 -1.82 -1.69 -3.43 -0.33 -1.11 
+0.95 -2.04 -1.32 -3.05 -3.37 -4.45 -2.67 -2.87 -1.09 -1.35 -3.34 -4.47 -3.63 -4.3 -3.12 -1.56 
+-2.34 -1.7 -3.93 -4.19 -4.17 -4.03 -3.38 -4.54 -0.13 -1.15 -0.74 -4.8 -0.02 -0.93 2.41 -2.06 
+1.45 -3.37 3.34 -0.93 4.88 1.21 -0.54 -0.78 -5.55 -2.41 -0.18 0.07 -0.08 -0.11 -3.08 1.32 
+0.17 0.26 -0.74 0.37 -0.63 3.14 f*
+110 210 9 rG
+797.7 1549.54 -2.97 1.43 0.54 0.74 3.2 -1.32 -0.66 -0.89 -0.11 0.04 f*
+189 0 54 rG
+795.31 1621.27 -0.37 2.23 0.02 0.04 4.56 4.17 0.59 1.09 -0.69 1.93 -1.76 1.35 -0.8 1.84 
+2.34 3.28 1.09 1.07 2.82 2.73 2.06 1.69 0.82 1.47 4.12 3.04 1.18 0.87 -1.71 1.2 
+-0.35 0.09 -3.86 0.26 2.82 2.69 0.06 0.11 1.8 2.32 0.91 1.99 -0.83 1.48 1.46 2.06 
+1.08 1 1 1.15 0.93 1.82 1.13 1.8 2.84 0.56 3.62 0.67 -2.61 -2 -0.84 -0.65 
+-0.87 -1.26 -1.17 -1.84 -1.2 -1.89 -0.07 -1.64 -1.82 -1.24 -1.04 -1.26 -1.3 -2.11 -1.2 -2.14 
+2.39 -0.95 1.63 -1.18 -3.62 -2.73 -1.3 -0.93 -1.18 -2.39 -1.25 -2.47 -0.41 -0.19 0.08 -0.16 
+-5.05 -3.88 -0.39 -0.46 -0.41 -2.37 1.06 -1.67 1.61 -1.39 1.67 0.39 0.58 -0.8 -2.21 -1.8 
+-2.93 -1.65 0.79 -1 -2.54 -2.41 -2.13 -1.63 -1.15 -0.3 f*
+0 255 r6
+798.46 1550.39 -3.2 1.32 0.66 0.89 3.17 -1.33 -0.63 -0.89 f*
+87 0 136 rG
+797.68 1560.25 -2.41 2.06 0.02 0.93 0.74 4.8 0.13 1.15 3.38 4.54 4.17 4.03 3.93 4.19 
+2.34 1.7 3.12 1.56 3.63 4.3 3.34 4.47 1.09 1.35 2.67 2.87 3.37 4.45 1.32 3.05 
+-0.95 2.04 0.33 1.11 1.69 3.43 0.61 1.82 1.5 2.52 1.82 2.08 3.89 4.14 0.85 1.21 
+1.78 3.43 0.22 0.37 2.04 3.19 -0.48 1.56 -1.21 1.07 1.09 0.7 -1.13 1.08 -1.08 1.13 
+-1.05 1.15 -1.02 1.18 -0.97 1.17 -0.96 1.19 -0.78 1.02 1.02 0.74 3.91 2.93 1.24 0.99 
+4.25 1.87 -0.71 1.09 5.82 2.36 5.84 2.32 0.58 -0.93 5.82 2.3 0.57 -0.84 0.58 -0.82 
+5.73 2.38 0.54 -0.76 0.57 -0.73 0.58 -0.72 5.56 2.54 0.54 -0.63 0.56 -0.65 0.59 -0.63 
+1.22 -1.22 0.65 -0.61 0.65 -0.59 0.67 -0.56 0.7 -0.57 0.71 -0.56 0.71 -0.54 0.74 -0.54 
+0.78 -0.52 0.76 -0.52 4.43 3.43 0.7 -0.43 1.43 -0.87 0.74 -0.41 0.73 -0.39 1.52 -0.78 
+0.78 -0.37 1.61 -0.7 0.82 -0.34 0.82 -0.33 3.15 3.99 0.74 -0.26 -3.06 -4.04 0.84 -0.3 
+0.85 -0.29 0.86 -0.28 0.87 -0.26 -2.54 -4.21 1 -0.3 2.04 -0.52 1.02 -0.24 -2.04 -4.36 
+1.17 -0.26 1.15 -0.24 1.17 -0.22 2.34 -0.39 1.2 -0.18 -1.26 -4.51 -1.32 0.17 -1.3 0.22 
+-1.28 0.21 -1.63 -4.49 -1.41 0.26 -1.73 -4.49 -1.52 0.3 -1.82 -4.5 -1.8 -4.53 -1.78 -4.56 
+-1.76 -4.58 -1.73 -4.6 -2.08 0.43 -1.82 -4.6 -2.21 0.45 -1.91 -4.6 -1.89 -4.64 -2.41 0.54 
+-1.97 -4.64 -1.95 -4.66 -2.61 0.61 -2.59 0.65 -1.64 -3.55 -1.26 -0.89 -0.55 0.15 -1.34 0.35 
+-2.64 0.73 -2.63 0.78 -2.61 0.79 -2.58 0.84 -2.56 0.87 -2.12 -3.54 -1.17 -0.8 -2.06 0.74 
+-2.78 -4.54 -2.71 0.98 -2.67 1.04 -0.46 -0.67 -2.93 0.65 -3.8 -0.52 -2.3 -1.32 -1.62 0.72 
+-1.72 -2.41 -2.75 -1.5 -1.47 0.68 -3.26 -4.47 -0.87 -1.2 -4.36 -2.41 -0.89 0.44 -3.28 -4.52 
+-4.88 -1.21 -3.34 0.93 -1.45 3.37 f*
+7 193 59 rG
+796.33 1768.49 -0.52 0.22 0.8 0.45 -0.29 -0.67 f*
+255 203 0 rG
+799.09 1551.28 -3.17 1.33 0.67 0.89 3.12 -1.35 -0.62 -0.87 f*
+255 0 r6
+796.46 1781.71 -0.43 0.21 1.24 0.61 -0.8 -0.82 f*
+110 210 9 rG
+797.83 1767.82 -1.5 0.67 0.29 0.67 2.43 1.33 -1.21 -2.67 f*
+0 155 255 rG
+800.33 1779.82 -3.87 1.89 0.8 0.82 3.73 1.76 5.04 2.3 5.16 2.21 5.25 2.13 0.8 -0.54 
+-5.57 -1.87 -5.26 -2.15 -4.29 -2.67 -1.52 -3.75 -0.28 -0.13 f*
+255 135 0 rG
+799.71 1552.15 -3.12 1.35 0.65 0.86 3.12 -1.32 -0.65 -0.89 f*
+255 203 0 rG
+798.39 1581.04 -1.43 0.93 2.97 2.95 -1.54 -3.88 f*
+255 35 0 rG
+800.37 1553.04 -3.12 1.32 0.67 0.89 3.08 -1.32 -0.63 -0.89 f*
+7 193 59 rG
+797.8 1549.5 -0.11 0.04 0.11 -0.04 f*
+0 255 r6
+799.35 1767.14 -1.52 0.67 1.21 2.67 0.98 0.52 3.23 1.7 1.46 0.37 4.34 2.17 1.3 0.93 
+2.89 1.32 -1.45 0.85 3.75 2.62 5.84 1.24 4.7 0.67 1.82 -0.07 1.7 1.39 1.76 1.43 
+1.3 3.52 1.09 0.37 0.8 0.29 7.07 -1.15 0.74 -0.15 0.41 -0.96 -2.76 -3.49 -4.69 -1.65 
+0.04 -0.07 0.02 0 4.84 1.52 5.71 0.61 6.55 -0.52 0.57 0.11 5.32 -0.2 6.05 -0.63 
+2.34 -3.21 2.32 -3.26 4.27 0.93 0.84 -1.32 -4.12 -1.06 -7.9 -2.52 -4.32 -0.85 -3.82 -1.41 
+-3.27 -1.93 -1.31 -1.39 -1.21 -1.15 -3.67 -1.46 -3.38 -1.65 -3.71 -1.41 -2.69 -2.15 -3.54 -1.54 
+-2.61 -2.11 -2.23 -2.3 -0.41 -0.67 -1.29 -1.84 -1.06 -2.78 -2 -2.2 -3.75 -1.37 -3.15 -1.67 
+-5.46 -0.85 -1.8 -0.67 0.37 1.2 -2.76 2.52 -0.74 0.65 -2.47 2.2 5.42 1.15 -0.61 2.21 
+-0.39 1.57 2.84 2.25 3.11 2.14 3.62 1.89 3.69 1.82 2.54 2.5 0.42 1.17 -3.34 2.8 
+1.45 1.08 3.76 1.3 0.78 0.21 0.07 0.16 0.89 3.77 0.5 1 -2.69 3 -3.41 -0.24 
+-3.19 -0.62 -2.61 -0.52 -4.14 -2.23 -3.14 -2.73 -0.54 -1.46 3.54 -2.63 0.13 -1.71 -3.38 0.02 
+-4.71 2 -3.14 -0.71 f*
+255 135 0 rG
+799.09 1618.49 -0.8 -0.52 0.18 1.26 0.63 -0.74 f*
+255 203 0 rG
+800.5 1586.46 -1.7 1.15 4.23 4.01 3.1 2.89 -2.17 -3.54 -3.47 -4.52 f*
+87 0 136 rG
+801.63 1631.86 -1.06 1.67 0.41 2.37 0.39 0.46 5.05 3.88 0.83 -1.43 0.93 -1.59 -5.69 -2.73 
+1.07 -1.65 1.08 -1.61 0.26 -0.37 -1.67 -0.39 -1.61 1.39 f*
+2 239 204 rG
+803.02 1781.12 -2.41 -1.17 1.52 3.75 4.29 2.67 5.26 2.15 5.57 1.87 2.82 -1.93 0.79 -0.55 
+-1.89 0.11 -5.44 -0.67 -5.58 -1.85 -4.21 -2.67 -0.72 -1.71 f*
+255 35 0 rG
+802.43 1553.41 -1.17 0.57 5.55 2.41 -1.11 -1.54 -3.27 -1.43 f*
+255 135 0 rG
+803.62 1552.87 -1.19 0.54 3.27 1.43 -1.11 -1.56 -0.98 -0.41 f*
+7 193 59 rG
+805.12 1782.09 -2.11 -0.97 0.72 1.71 4.21 2.67 5.58 1.85 5.44 0.67 1.89 -0.11 2.82 -1.99 
+1.41 0.52 -0.83 -0.95 -5.34 -1.63 -0.58 -0.07 -5.1 1.89 -3.78 -1.05 -2.95 -1.91 -0.15 -1.3 
+-1.24 0.67 f*
+255 35 0 rG
+805.82 1629.62 -2.54 -1.37 2.21 1.8 0.33 -0.43 f*
+255 203 0 rG
+804.12 1552.63 -0.5 0.24 0.98 0.41 -0.48 -0.65 f*
+255 35 0 rG
+807.01 1681.16 -2.78 -0.2 1.87 1.85 0.73 1.78 0.88 1.73 1.13 0.96 -0.33 -0.93 -0.56 -1.74 
+6.45 0.22 6.44 0.13 0.52 1.52 0.56 1.52 0.61 1.54 0.67 1.5 -6.34 0.28 -4.53 0.15 
+1.84 1.63 1.67 1.61 1.88 1.56 1.63 1.54 1.2 0.48 -0.32 -0.56 6.18 -0.67 6.16 -0.79 
+0.89 1.39 0.93 1.37 -6.07 0.98 -2.99 0.43 1.11 1.5 -0.37 1.75 1 1.54 2.17 1.29 
+3.49 -0.79 -1.17 -1.41 5.88 -1.25 -1.06 -1.35 5.95 -1.24 -0.98 -1.24 -0.91 -1.25 -0.87 -1.29 
+4.04 -0.67 -0.87 -1.21 -0.67 -1.23 -2.62 -1 -2.24 0.26 -6.23 0.65 -0.74 -1.39 -0.69 -1.43 
+-0.65 -1.41 6.36 -0.36 3.82 -0.24 -1.93 -1.19 -2.45 0.11 -0.52 -1.33 -6.4 0.18 -0.5 -1.43 
+-0.45 -1.43 -0.39 -1.43 -6.46 -0.24 -6.47 -0.3 -6.46 -0.42 f*
+110 210 9 rG
+803.25 1772.7 1.06 0.55 4.41 2.16 1.63 0.76 -1.3 -0.93 -4.34 -2.17 -1.46 -0.37 f*
+0 255 r6
+808.55 1736.59 -4.17 1.37 4.06 -1.46 0.13 0.04 -0.02 0.05 f*
+110 210 9 rG
+809.2 1779.84 -2.84 1.58 0.15 1.3 2.95 1.91 3.78 1.05 5.1 -1.89 0.58 0.07 5.34 1.63 
+0.83 0.95 3.58 1.32 3.99 1.39 -1.3 -3.52 -1.76 -1.43 -1.7 -1.39 -1.82 0.07 -4.7 -0.67 
+-5.84 -1.24 -3.75 -2.62 -2.59 1.5 f*
+87 0 136 rG
+812.17 1642.91 -5.42 -2.32 1.25 2.47 1.18 2.39 1.3 0.93 3.62 2.73 -1.63 1.18 -2.39 0.95 
+1.2 2.14 1.3 2.11 1.04 1.26 1.82 1.24 0.07 1.64 1.2 1.89 1.17 1.84 0.87 1.26 
+0.84 0.65 2.61 2 2.78 0.5 -0.02 0.63 2.19 1.16 0.96 1.52 0.63 1.46 0.52 1.43 
+0.18 1.37 -0.05 1.37 0.43 1.39 1.74 1.45 0.73 0.39 -0.06 -0.37 -0.26 -1.34 6.49 0.35 
+6.46 0.24 -0.2 -1.15 -0.16 -1.15 -0.12 -1.16 -0.09 -1.15 6.49 0.54 6.49 0.46 -0.04 -0.96 
+-0.02 -0.95 6.49 0.54 -0.02 -0.84 0.04 -0.87 0.04 -0.84 6.47 0.74 0.07 -0.76 0.09 -0.76 
+0.11 -0.74 0.16 -0.76 0.15 -0.74 0.2 -0.76 0.2 -0.73 0.24 -0.74 6.29 1.41 0.22 -0.65 
+0.24 -0.63 0.26 -0.63 0.28 -0.65 0.28 -0.61 0.33 -0.62 0.35 -0.61 0.73 -1.22 -5.86 -2.15 
+-0.43 0.67 -0.42 0.7 -0.39 0.69 -0.37 0.7 -6.05 -1.91 -0.39 0.8 -6.07 -1.91 -0.42 0.89 
+-6.07 -1.89 -6.08 -1.98 -6.04 -2.06 -0.52 1.13 -6.05 -2.04 -0.54 1.24 -0.52 1.23 -6.12 -1.95 
+-6.07 -2.06 0.32 -0.8 -3.04 -1.8 -2.71 -1.02 0.7 -1.47 -5.92 -2.37 0.78 -1.54 f*
+255 G
+808.5 1686.35 -0.56 -1.74 6.45 0.22 6.44 0.13 0.52 1.52 0.56 1.52 0.61 1.54 0.67 1.5 
+-6.34 0.28 -4.53 0.15 -1.8 0.04 -0.74 -1.71 -0.67 -1.72 -0.29 -0.8 -0.33 -0.93 f*
+255 203 0 rG
+810.03 1593.73 -1.5 -3.99 4.38 2.13 3.8 4.21 3.78 4.23 0.63 1.52 -2.08 1.2 -1.93 -0.41 
+-4.99 -3.43 -1.48 -3.89 -0.61 -1.56 f*
+255 135 0 rG
+816.19 1770.38 -5.2 1.82 1.17 1.32 5.01 1.63 0.19 0.02 0.22 -0.28 0.59 -3.58 -0.85 -0.76 
+-1.13 -0.17 f*
+189 0 54 rG
+812.43 1560.83 -0.91 0.41 4.36 2.41 -1.06 -1.49 -2.39 -1.33 f*
+255 G
+818.45 1669.62 -6.45 -1.06 0.07 -1.62 0.11 -1.59 3.56 0.7 2.84 0.56 3.62 0.67 2.78 0.5 
+-0.02 0.63 -0.05 0.79 -0.02 1.43 -1.11 -0.15 -5.34 -0.85 f*
+255 35 0 rG
+813.54 1560.35 -1.11 0.48 2.39 1.33 -1.28 -1.8 f*
+255 0 r6
+812.79 1793.34 -0.02 0 0.07 0.02 -0.04 -0.02 f*
+0 155 255 rG
+816.45 1790.93 -3.66 2.41 0.04 0.02 5.45 2.11 4.21 1.52 -0.72 -4.02 -0.04 -0.04 -5.27 -2 f*
+255 135 0 rG
+818.62 1738.3 -0.04 0.11 2.04 2.02 2.56 1.78 2.84 1.63 3.19 1.43 1.71 0.59 2.34 0.32 
+2.5 1.76 0.46 0.7 0.08 2.34 4.04 0.84 2.3 -0.12 3 -0.05 2.28 1.95 0.07 0.37 
+-0.7 4.05 0.02 0.02 0.19 0.07 6.36 -1.58 0.29 -0.18 4.86 -0.44 3.06 1.3 3.1 1.28 
+3.95 0.26 3.63 -0.7 2.28 -1.82 1.99 -1.11 -0.99 -0.26 -3.15 -0.84 -0.39 -0.11 -4.55 1.41 
+-0.42 -2.87 3.82 -1.17 1.23 -1.47 -2.91 -0.89 -2.88 -0.93 -2.82 -0.98 -2.8 -1.02 -2.76 -1.08 
+-2.45 -1 1.26 2.04 2.71 1.15 1.39 2.48 0.85 1.11 -2.15 0.13 -4.75 0.48 -3.14 -1.09 
+-3.06 -1.17 -2.8 -1.39 -2.54 -1.56 -2.67 -1.45 -2.15 -1.78 -1.87 -1.91 -2.69 -1.41 -2.06 -1.75 
+0.21 -1.09 -1.59 -0.97 -2.38 -1.57 -4.88 2.15 -1.74 -1.21 -3.27 3.21 f*
+189 0 54 rG
+822.63 1650.5 -3.3 -1.2 3.04 1.8 0.26 -0.61 f*
+255 G
+820.55 1698.29 -0.32 -0.56 6.18 -0.67 6.16 -0.79 0.89 1.39 0.93 1.37 -6.07 0.98 -2.99 0.43 
+-3.11 0.43 -1.02 -1.56 -0.65 -1.02 f*
+255 0 r6
+820.96 1799.67 -0.46 0.33 4.91 1.67 -4.45 -2 f*
+0 155 255 rG
+823.44 1797.8 -2.48 1.87 4.45 2 0.98 0.32 5.96 1.86 3.02 -2.69 -4.69 -1.46 -1.47 -0.04 
+-5.77 -1.87 f*
+189 0 54 rG
+822.77 1568.08 -1.28 0.56 2.75 1.5 -1.47 -2.06 f*
+2 239 204 rG
+821.79 1792.95 -0.07 -0.02 0.04 0.04 0.72 4.02 1.41 0.48 1.82 -1.41 -3.82 -3.06 -0.11 -0.04 f*
+0 155 255 rG
+827.21 1794.88 -5.32 -1.89 3.82 3.06 1.5 -1.17 f*
+2 239 204 rG
+823.89 1797.46 -0.46 0.34 5.77 1.87 1.47 0.04 -1.11 -0.34 -5.68 -1.91 f*
+189 0 54 rG
+824.89 1670.62 -1.11 -0.15 1.11 0.39 0.87 1.3 0.54 1.48 0.16 1.41 -0.02 1.41 0.34 1.43 
+1.17 1.47 2 1.46 0.43 1.39 2.47 0.04 -0.34 -1.35 -0.22 -0.97 -0.73 -0.39 -1.74 -1.45 
+-0.43 -1.39 0.05 -1.37 -0.18 -1.37 -0.52 -1.43 -0.63 -1.46 -0.96 -1.52 -2.19 -1.16 -0.05 0.79 
+-0.02 1.43 f*
+255 0 r6
+833.59 1276.11 -6.75 0.63 0.46 5.38 6.73 -0.67 0.43 5.38 0.96 10.72 1 10.71 1.08 10.72 
+0.58 5.34 6.41 -0.63 0.54 5.36 0.57 5.34 6.34 -0.58 0.52 5.34 0.55 5.34 0.57 5.34 
+6.2 -0.54 0.5 5.32 6.16 -0.48 6.18 -0.43 1.31 15.95 6.03 -0.39 0.39 5.32 0.41 5.29 
+5.91 -0.32 5.92 -0.28 0.61 10.59 0.3 5.27 0.33 5.29 -5.69 0.29 -5.66 0.33 0.46 5.27 
+0.46 5.25 0.48 5.27 0.48 5.23 0.5 5.25 0.5 5.23 0.5 5.21 5.19 -0.33 5.18 -0.25 
+5.21 -0.24 5.21 -0.18 5.21 -0.13 5.21 -0.07 0.09 5.21 0.07 5.21 0.09 5.21 -4.99 0.06 
+0.15 5.19 -4.91 0.13 -4.9 0.18 0.32 5.16 4.82 -0.15 4.82 -0.13 4.84 -0.07 0.08 5.17 
+4.75 -0.02 0 -62.65 -5.64 0.02 -0.07 -5.27 -5.68 0.09 -0.12 -5.3 -0.14 -5.27 5.82 -0.09 
+5.84 -0.02 0 -170.32 -7.12 0.02 -7.1 0.07 -7.09 0.14 -7.1 0.15 -7.1 0.2 -7.07 0.24 
+-0.11 -5.32 -7.09 0.28 0.13 5.32 -7.07 0.32 0.15 5.32 -7.05 0.37 0.19 5.32 -7.03 0.41 
+0.21 5.34 0.48 10.68 -6.93 0.48 0.29 5.34 -6.9 0.54 0.32 5.34 -6.86 0.59 0.37 5.36 
+0.39 5.36 0.41 5.38 f*
+189 0 54 rG
+828.64 1571.38 -1.06 0.45 2.3 1.32 3.8 0.52 2.93 -0.65 -0.54 -0.85 -3.12 0.41 -3.93 -1.37 
+-0.37 0.16 f*
+255 35 0 rG
+831.21 1570.33 -2.19 0.89 3.93 1.37 3.12 -0.41 -1.11 -1.69 -3.5 -0.07 -0.26 -0.09 f*
+255 135 0 rG
+831.36 1570.27 -0.15 0.07 0.26 0.09 3.5 0.07 -0.87 -1.33 -2.73 1.11 f*
+255 203 0 rG
+834.33 1739.54 -2.06 -1.75 0.21 -1.09 0.87 0.54 2.5 1.48 2.56 1.45 2.61 1.41 2.67 1.35 
+2.71 1.32 2.78 1.28 2.79 1.24 3.71 -2.95 0.26 0.11 1.26 2.04 2.71 1.15 1.39 2.48 
+0.85 1.11 -2.15 0.13 -4.75 0.48 -3.14 -1.09 -3.06 -1.17 -2.8 -1.39 -2.54 -1.56 -2.67 -1.45 
+-2.15 -1.78 -1.87 -1.91 -2.69 -1.41 f*
+255 35 0 rG
+833.94 1643.32 -0.26 0.37 1.78 0.8 -1.52 -1.17 f*
+189 0 54 rG
+834.55 1642.45 -0.61 0.87 1.52 1.17 3.91 1.78 1.48 0.67 -1.24 -0.99 -3.91 -2.93 -1.02 -0.74 
+-0.13 0.18 f*
+255 135 0 rG
+835.27 1624.54 -1.04 0.91 1.48 1.04 -0.43 -1.96 f*
+110 210 9 rG
+840.02 1784.05 -4.69 -1.65 0.04 -0.07 0.02 0 4.84 1.52 5.71 0.61 6.55 -0.52 0.57 0.11 
+5.32 -0.2 6.05 -0.63 -2.37 3.15 -2.41 3.13 -2.43 3.08 -0.04 0 -4.5 -2.02 -5.14 -0.52 
+-0.59 -0.17 -0.17 0.2 -5.93 1.73 -1.97 -0.61 -4.34 -1.39 7.07 -1.15 0.74 -0.15 0.41 -0.96 
+-2.76 -3.49 f*
+189 0 54 rG
+841.04 1687.21 -3.91 0.24 1.93 1.19 2.52 -0.19 0.57 1.21 2.47 -0.24 -0.26 -1.22 -1.23 -1.12 
+-2.08 0.13 f*
+843.42 1692.1 -3.99 0.48 2.62 1 0.67 1.23 0.88 1.21 2.04 -0.37 -0.79 -1.17 -0.74 -1.2 
+-0.7 -1.19 f*
+87 0 136 rG
+847.37 1686.79 -4.25 0.3 1.23 1.13 0.26 1.22 3.82 -0.39 -0.54 -1.13 -0.52 -1.12 f*
+7 193 59 rG
+840.86 1791.79 3.26 0.96 2.67 -2.69 -5.93 1.73 f*
+87 0 136 rG
+851.41 1678.95 -6.49 -0.15 0.24 1.15 6.47 0.04 -0.22 -1.04 f*
+189 0 54 rG
+847.87 1575.29 -0.58 0.19 1.17 0.8 -0.59 -0.99 f*
+7 193 59 rG
+847.55 1790.04 4.51 1.24 5.12 1.3 -4.5 -2.02 -5.14 -0.52 f*
+0 155 255 rG
+861.07 1555.49 -0.02 0.02 0.02 -0.02 f*
+2 239 204 rG
+861.07 1555.49 -0.02 0.02 0.91 2.24 2.34 -2.58 0.13 -0.43 1.93 -3.15 2.82 -1.8 2.95 -1.5 
+3.45 0.07 3.47 0.15 -0.25 -0.93 -2.8 -0.2 -0.66 0.11 -3.27 0.56 -3.25 0.61 -0.59 0.11 
+-2.32 1.54 -2.56 2.38 0.8 2.11 -3.08 0.7 f*
+7 193 59 rG
+864.3 1555.17 -2.34 2.58 0.91 2.23 2.17 -2.89 0.82 -2.66 0.96 -1.54 2.8 -1.79 2.93 -1.52 
+3.34 -0.22 3.4 0.06 -0.24 -0.93 -3.47 -0.15 -3.45 -0.07 -2.95 1.5 -2.82 1.8 -1.93 3.15 
+-0.13 0.43 f*
+255 0 r6
+862.67 1549.91 -0.34 0.09 0.04 0.07 0.3 -0.16 f*
+0 155 255 rG
+862.67 1549.91 -0.3 0.16 0.97 2.62 2.56 -2.38 2.32 -1.54 -2.66 0.54 -2.89 0.61 f*
+110 210 9 rG
+865.04 1557.09 -2.17 2.89 0.11 0.28 0.87 2.09 1.39 -2.61 0.54 -0.72 1.54 -4.79 0.07 -0.13 
+2.69 -1.65 2.89 -1.56 3.23 -0.48 3.36 -0.04 -0.26 -0.93 -3.4 -0.06 -3.34 0.22 -2.93 1.52 
+-2.8 1.79 -0.96 1.54 -0.82 2.66 f*
+0 255 r6
+865.23 1559.75 -1.39 2.61 1 2.4 2.37 -2.06 1.67 -3.73 0.09 -0.17 1.96 -3.84 0.39 -1.63 
+2.04 -1.12 3.15 -0.76 3.29 -0.13 -0.24 -0.93 -3.36 0.04 -3.23 0.48 -2.89 1.56 -2.69 1.65 
+-0.07 0.13 -1.54 4.79 -0.54 0.72 f*
+864.7 1769.73 -0.02 -1.84 2.02 -0.67 4.67 -0.24 4.21 0.24 2.23 3.36 -0.24 0.41 0.52 0.11 
+-0.83 0.39 -4.4 -0.2 -4.23 -0.54 -3.93 -1.02 f*
+255 203 0 rG
+867.21 1562.7 -2.37 2.06 0.11 0.26 2.91 -0.67 2.91 -0.63 -1.75 -4.8 3.06 -0.61 2.52 -0.48 
+0.24 -1 2.32 -3.14 3.54 0.82 2.52 1.89 -1.61 1.43 -3.09 0.41 -3.28 -0.15 1.13 3.5 
+2.99 0.48 0.29 -0.04 0.52 -0.09 2.34 -0.87 2.34 -3.02 0.2 -1.93 -1.05 -1.41 -3.28 -3 
+-0.78 0.13 -0.16 -0.54 -3.29 0.13 -3.15 0.76 -2.04 1.13 -0.39 1.63 -1.96 3.84 -0.09 0.17 
+-1.67 3.73 f*
+189 0 54 rG
+866.25 1575.11 -0.76 0.2 1.26 0.89 -0.5 -1.09 f*
+255 203 0 rG
+867.93 1755.34 -0.42 -2.87 3.82 -1.17 -1.56 1.84 2.71 0.79 -4.55 1.41 f*
+255 135 0 rG
+874.83 1556.83 -0.24 1 0.54 -0.11 0.11 0.37 3.28 0.15 3.09 -0.41 1.61 -1.43 -2.52 -1.89 
+-3.54 -0.82 -2.32 3.14 f*
+0 155 255 rG
+878.62 1546.96 -2.62 0.41 2.8 0.2 -0.18 -0.61 f*
+0 255 r6
+876.37 1561.59 0.3 0.95 2.69 -0.48 -2.99 -0.48 f*
+882.14 1551.5 -1.41 0.21 3.28 3 1.05 1.41 -0.2 1.93 -2.34 3.02 -2.34 0.87 2.47 -0.41 
+2.25 -0.34 0.57 -0.76 0.43 -4.41 -2.39 -3.23 -1.36 -1.28 f*
+110 210 9 rG
+883.16 1551.37 -1.02 0.13 1.36 1.28 2.39 3.23 -0.43 4.41 -0.57 0.76 0.74 -0.11 1.26 -0.17 
+-0.18 -5 -3.25 -4.58 -0.3 0.05 f*
+7 193 59 rG
+884.59 1551.15 -1.13 0.17 3.25 4.58 0.18 5 1.75 -0.24 -1.15 -4.86 -0.07 -0.26 -2.84 -4.39 f*
+2 239 204 rG
+885.72 1551 -1.13 0.15 2.84 4.39 -0.67 -2.95 -1.04 -1.58 f*
+255 0 r6
+890.21 1479.14 -4.53 0.35 0.67 5.11 0.67 5.1 0.71 5.1 4.27 -0.35 0.63 5.08 4.21 -0.28 
+4.23 -0.26 4.23 -0.2 0.35 5.08 0.37 5.05 -4.06 0.2 0.48 5.05 3.95 -0.2 3.95 -0.16 
+3.97 -0.11 3.97 -0.07 -0.11 -5.05 -4.04 0.06 -0.19 -5.08 -0.18 -5.08 4.23 -0.06 -0.08 -5.1 
+4.34 -0.02 0 -15.37 -4.6 0.02 -4.59 0.09 -0.17 -5.14 -4.66 0.11 0.26 5.14 0.24 5.14 
+-4.49 0.15 -4.47 0.21 -4.5 0.26 -4.47 0.3 -0.61 -5.12 f*
+0 155 255 rG
+886.37 1550.91 -0.65 0.09 1.04 1.58 -0.39 -1.67 f*
+255 203 0 rG
+889.52 1773.11 -1.54 3.5 4.23 0.59 -1.35 3.51 4.43 0.54 4.47 0.46 4.47 0.37 0.65 -3 
+-4.25 -0.56 -4.51 0.29 -1.3 -1.29 -1.41 -3.47 -0.06 -0.41 -3.82 -0.52 f*
+255 135 0 rG
+893.55 1773.66 -0.21 -0.02 0.06 0.41 1.41 3.47 1.3 1.29 4.51 -0.29 4.25 0.56 0.13 -0.56 
+4.3 0.29 4.32 0.2 4.3 0.11 0.02 0 4.32 -0.5 4.27 -0.15 4.28 -0.2 4.25 -0.3 
+4.32 0.02 4.32 -0.07 3.36 -0.09 1.26 0.76 1.76 2.56 -0.59 0.93 -4.58 0.24 -4.47 0.59 
+-4.46 -0.52 -0.2 -0.05 -4.64 -1.04 -4.41 0.78 -4.47 0.59 0 0.11 4.51 -0.04 0.2 3.56 
+0.04 0.85 2.65 2.64 2.4 -0.08 0.07 0.52 4.95 -0.08 5.4 2.47 0.2 0 5.08 -0.46 
+1.02 3.43 5.25 -0.58 5.23 -0.66 0.41 0.93 3.54 -1.52 0.55 -1.63 1.34 -2.25 -3.34 -1.84 
+-4 -0.63 -0.75 -3.51 2.49 -0.67 4.02 -1.79 4.49 -0.75 4.62 0.15 0 -14.56 -1.54 -0.07 
+0.58 -1.25 4.23 -0.16 0.7 0.02 -0.52 0.21 -3.45 1.24 0 14.56 0.52 0.02 0.7 0.04 
+5.2 0.97 4.19 -1.56 4.99 -0.54 3.45 0.42 2.35 -0.31 5.03 -0.84 4.34 -1.54 4.12 -1.73 
+6.77 0.7 0.91 0.2 5.77 1.19 1.89 -0.78 0.89 0.59 1.24 -1.5 -5.6 -1.41 -1.62 0.33 
+-2.37 0.61 -1.15 0.29 -6.33 -1.13 -2.71 -1 -3.95 -0.62 -3.06 -0.39 -4.86 -0.98 -1.74 -0.11 
+-5.6 -1.61 -3.49 -2.95 0.41 -4.14 -3.87 0.21 -3.77 -2.06 -3.43 -3.11 -0.87 0.24 -0.06 -0.08 
+-2.43 -3.32 -3.17 0.79 -3.19 0.71 -3.23 0.68 -3.23 0.63 -3.28 0.56 1.63 3.61 -1.5 0.24 
+-1.47 1.54 -2.02 -1.04 -1.97 0.25 -1.29 -3.66 -3.32 0.39 -3.34 0.32 -3.36 0.26 -3.37 0.21 
+-3.36 0.16 -3.39 0.08 0.19 3.76 -3.55 0.04 -3.58 -0.04 -0.17 3.73 -3.76 -0.09 -3.73 -0.17 
+-3.73 -0.24 -0.75 3.66 -3.91 -0.32 -3.89 -0.39 -3.86 -0.46 -1.32 3.56 f*
+255 G
+910.75 1394.57 -0.14 -5.27 5.82 -0.09 5.84 -0.02 0 15.84 -5.64 0.02 -0.07 -5.27 -5.68 0.09 
+-0.12 -5.3 f*
+255 0 r6
+929.34 1224.2 -7.07 -0.02 0 170.31 5.75 0.02 5.75 0.06 -0.12 5.3 5.68 0.13 5.69 0.17 
+5.68 0.24 5.68 0.29 5.66 0.33 5.67 0.39 5.64 0.43 0.59 -5.27 0.54 -5.29 0.57 -5.29 
+0.52 -5.3 5.9 0.5 5.86 0.54 0.65 -5.29 5.92 0.58 5.91 0.65 0.74 -5.32 5.95 0.69 
+0.79 -5.32 5.99 0.76 5.99 0.8 -0.89 5.32 -0.93 5.32 5.86 0.84 5.82 0.91 5.79 0.96 
+1.09 -5.32 5.83 1.02 5.82 1.06 5.8 1.13 5.77 1.17 5.73 1.24 5.71 1.25 5.68 1.34 
+5.64 1.39 5.63 1.43 -1.61 5.32 -1.65 5.32 5.47 1.5 -1.73 5.27 -1.78 5.27 -1.8 5.28 
+-5.3 -1.5 -5.29 -1.43 1.67 -5.27 -5.41 -1.39 -1.62 5.27 -1.65 5.25 -5.32 -1.32 -5.34 -1.28 
+1.52 -5.25 -5.43 -1.23 -5.46 -1.17 -1.39 5.27 -5.43 -1.13 -1.37 5.25 -1.39 5.26 -1.43 5.23 
+-1.43 5.21 -5.18 -1.06 -5.21 -1 1.32 -5.21 1.29 -5.23 1.26 -5.25 1.21 -5.25 -5.49 -0.95 
+-5.51 -0.91 -1.11 5.25 -1.14 5.25 -5.4 -0.85 -1.07 5.25 -1.11 5.23 -2.25 10.42 -5.14 -0.79 
+-5.17 -0.74 -5.18 -0.67 -0.93 5.21 -5.12 -0.63 -5.14 -0.59 0.8 -5.21 0.78 -5.23 5.28 0.59 
+5.27 0.63 0.91 -5.23 5.32 0.7 0.96 -5.23 0.95 -5.25 0.91 -5.25 -5.51 -0.69 -1.74 10.5 
+-3.8 -0.46 -1.61 -0.17 -0.82 5.23 -5.36 -0.58 -5.36 -0.54 -0.69 5.25 -5.3 -0.5 -5.32 -0.42 
+-0.58 5.21 -0.57 5.23 -5.19 -0.39 -5.18 -0.33 0.43 -5.2 -5.27 -0.29 -0.37 5.23 -5.18 -0.24 
+-5.21 -0.18 0.21 -5.23 -5.27 -0.11 0.13 -5.25 0.15 -5.23 -5.43 -0.09 0.07 -5.25 -5.49 -0.02 
+0 52.13 4.73 0.02 -0.06 5.14 -0.09 5.14 -4.58 -0.02 0 10.27 4.41 0.02 4.41 0.06 
+0.17 -5.12 4.5 0.13 4.51 0.15 4.47 0.21 -0.41 5.12 4.38 0.24 4.41 0.3 -0.63 5.1 
+-0.61 5.08 -0.63 5.08 -0.63 5.06 4.02 0.32 4.02 0.37 -0.83 5.04 -0.82 5.02 -3.84 -0.37 
+-0.41 -0.02 0.37 0.35 3.84 0.26 1.2 -0.11 3.02 -1.61 0.07 -0.04 0 -58.2 -4.56 -2.13 
+-0.11 -0.05 -4.82 -1.04 -3.93 -4.66 0.26 -5.21 4.86 -3.54 4.43 4.08 0.26 0.24 0.54 -0.17 
+4.77 -2 5 1 2.79 2.04 1.71 2.04 3.73 3.78 -2.73 4.97 -2.37 0.32 -4.86 -0.35 
+-4.55 0.63 -0.43 0.05 0 58.2 4.12 -2.64 0.41 -0.48 4.06 -0.28 0.63 1.43 2.41 2.71 
+1.21 2.97 1.28 2.65 1.67 3 0.13 4.19 3.99 -0.7 4.32 -1.54 1.75 -0.04 -1.62 -0.33 
+-3.62 -0.7 -3.64 -0.67 1.41 -4.95 -3.76 -0.61 1.3 -4.99 1.3 -4.97 -3.97 -0.61 1.18 -5.02 
+-4.06 -0.56 -4.05 -0.52 0.97 -5.03 0.98 -5.08 4.25 0.54 4.23 0.57 -1.15 5.05 4.14 0.61 
+4.12 0.67 4.1 0.69 4.08 0.76 -1.52 4.99 -1.54 4.97 3.88 0.78 -1.65 4.95 2.95 0.63 
+-0.91 -5.49 0.07 -1.43 0.52 -3.75 1.25 -5.05 1.72 -4.97 1.32 -1.28 4.14 -2.95 1.61 -1.04 
+4.11 -3.12 1.82 -1 4.73 -1.3 0 -13.22 -3.52 -4.36 -0.2 -1.13 0.61 -5.29 1.39 -5.14 
+2.14 -2.02 5.14 -0.21 4.06 3.41 0.22 1.24 -1.67 3.34 -0.74 1.58 -2.15 4.99 -5.29 3.61 
+0 13.22 0.37 -0.09 2.45 -0.93 2.43 -4.88 2.19 -0.84 4.64 0.46 3.21 2.9 0.33 0.35 
+0.82 -0.04 P
+4.14 -0.35 4.97 -0.34 4.99 -0.87 0.29 -0.09 1.75 0.13 0 -16.43 -4.6 -1.25 -4.64 -1.24 
+1.85 -5.1 -4.75 -1.17 1.73 -5.12 1.7 -5.14 1.67 -5.16 1.65 -5.19 1.61 -5.18 5.1 1.21 
+5.08 1.26 -1.76 5.17 4.97 1.3 4.95 1.37 0.24 0.07 0 -5.69 -3.59 -0.28 -0.93 -0.93 
+1.59 -0.93 2.93 2.14 0 5.69 4.66 1.34 4.88 1.45 2.04 -5.14 4.9 1.52 4.88 1.59 
+2.93 0.97 -2.06 -3.08 -4.63 -2.3 -4.44 -2.85 -2.22 -1.82 0.42 -5.62 3.34 -4.8 3.28 -0.67 
+5.53 0.48 4.99 1.95 4.85 2.21 4.29 0.56 0 -67.41 -5.86 -1.5 -5.88 -1.43 1.32 -5.36 
+1.3 -5.4 5.99 1.43 1.33 -5.4 1.28 -5.43 6.05 1.48 1.29 -5.43 1.25 -5.42 1.22 -5.45 
+6.16 1.5 1.2 -5.45 1.2 -5.47 6.2 1.54 1.17 -5.49 1.13 -5.49 1.08 -5.5 6.3 1.57 
+1.09 -5.53 6.29 1.61 1.09 -5.54 6.3 1.65 6.27 1.7 -1.15 5.55 -1.19 5.55 -1.24 5.54 
+-6.16 -1.73 -1.24 5.54 -1.31 5.51 -6.09 -1.7 -1.3 5.49 -1.34 5.47 -6.05 -1.65 -1.35 5.47 
+-6.05 -1.63 -1.34 5.45 -1.37 5.45 -1.43 5.43 -5.95 -1.59 -1.41 5.42 -1.43 5.41 -5.87 -1.54 
+-1.46 5.38 0 67.41 1.13 0.16 5.55 0.45 5.05 0.32 0.65 -0.22 5.84 -0.15 1.52 3.43 
+-4.75 4.26 -0.07 6.09 -3.86 1.87 -2.73 1.63 -3.32 4.79 -1.28 5.6 1.08 0.82 4.14 2.69 
+1.24 5.36 -4.64 1.13 -0.52 -0.13 -4.32 -1.02 -4.38 -2.02 -5.23 -0.35 -1.02 -5.71 1.09 -5.58 
+-0.05 -0.24 -0.08 0.2 -2.34 5.1 -4.67 -1.67 -2.32 5.1 -4.62 -1.61 -2.3 5.08 -4.57 -1.54 
+-4.62 -1.5 -4.66 -1.43 -4.69 -1.39 -2.02 5.1 -4.67 -1.33 -1.98 5.08 0 16.43 3.02 0.2 
+4.91 0.06 4.69 0.61 4.73 0.54 2.55 0.07 2.41 0 4.75 0.59 4.01 2 3.63 2.62 
+0.69 0.91 2.76 1.93 3.55 2.61 3.17 3.12 3.26 2.91 2.36 -3.69 -3.95 -1.91 2.98 -4.88 
+-4.06 -1.87 2.85 -4.92 2.82 -4.97 2.78 -4.99 2.73 -5.02 4.36 1.91 2.76 -5.01 4.41 1.97 
+2.78 -5.05 2.73 -5.06 4.49 2.06 2.76 -5.1 -4.56 -2.06 2.64 -5.14 2.61 -5.14 2.28 -4.62 
+-6.27 2.91 -1.8 1.82 -0.8 -2.91 3.93 -3.58 1.57 -0.35 4.14 0.57 -0.04 1.17 4.29 1.91 
+4.73 2.14 2.63 -5.18 4.73 2.21 4.67 2.28 -2.76 5.17 -2.82 5.14 -2.87 5.12 -2.93 5.1 
+-2.97 5.05 -3.02 5.03 -3.06 4.99 -4.19 -2.19 -3.05 4.97 -4.17 -2.12 -4.23 -2.08 -2.95 4.97 
+4.17 2.06 4.08 2.13 4.05 2.17 4 2.23 -3.3 4.88 -3.34 4.84 -0.59 0.86 1.37 -0.39 
+5.69 -3.5 1.54 -0.71 4.78 0.98 0.8 4.1 0.71 1.39 2.82 3.54 4.93 0.72 0.04 0 
+6.08 -0.67 3.64 2.45 3.8 2.28 3.21 0.87 1.52 0.24 4.25 1.73 3.13 3.06 2.36 3.86 
+2.84 3.26 0.3 0.43 2.37 2.97 2.36 3.69 2.15 0.28 2.73 0.76 1.63 4.04 0.09 0.26 
+1.04 4.84 2 -1.4 0.61 -1.14 1.34 -6.37 -0.13 -0.87 -2.08 -4.04 -2.82 -3.32 -3.52 -2.59 
+-2.71 -3.54 -3.14 -3.06 0.15 -5.47 4.21 -4.56 4.38 -4.4 4.1 -4.66 -0.71 -3.04 -3.28 -3.47 
+-0.15 -4.69 5.41 -3.62 1 -0.26 5.38 0.78 3.19 -0.89 3.17 -5.4 -0.57 -1.91 -3.58 -3.49 
+-3.93 -3.04 p
+-3.93 -3.12 -0.71 -5.23 5.18 -3.84 2.34 -1.79 5.73 0.48 3.78 3.58 2.61 5.32 3.39 4 
+0.26 1.56 1.5 4.69 4.25 2.56 4.69 1.89 0.37 -0.07 6.96 -1.67 0.39 -0.15 4.95 -4.02 
+4.45 -1.11 3.23 -0.39 3.8 -0.93 4.05 -0.35 2.75 -0.65 5.23 1.3 2.19 0.57 4.17 -0.91 
+4.6 2.23 1.26 0.02 5.43 -0.85 3.82 3.32 3.43 3.82 2.36 1.58 2.61 0.07 2.28 5.32 
+3.28 3.86 1.56 4.25 0.52 1.15 1.86 5.53 2.65 4.47 0.74 6.73 4.23 2.39 2.95 3.9 
+0.8 0.5 5.12 -0.12 2.58 4.27 -2.36 8.71 -1.54 2.95 0.89 5.95 -1.54 4.17 -4.43 6.92 
+-4.76 6.08 -0.71 1.17 -3.61 7.2 -3.3 5.47 -1.06 3.64 -5.47 4.04 -5.41 4.51 -5.47 4.28 
+-1.97 0.04 -4 1.32 -5.75 2.78 -2.32 -0.15 -4.02 -2.32 -0.43 -0.37 -5.42 -0.52 -1.02 0.04 
+-3.47 -1.95 -2.34 -3.54 -2.23 -0.7 -5.77 1.54 0.96 -6.07 -3.71 -2.43 3.79 -6.92 -0.06 -1.67 
+1.41 -6.92 -1.43 -4.56 -3.26 -2.91 0.74 -4.6 -0.28 -1.85 0.21 -6.37 0.7 -3.45 -0.71 -2.86 
+-1.65 -4.8 0.91 -5.99 0.21 -1.93 -0.74 -6.1 -3.51 -3.06 -2.37 -4.43 -4.49 1.93 -3.56 0.38 
+-4.34 -2.09 -2.21 0.07 -5.84 2.26 -0.48 0.3 0 0.28 0.96 5.86 -0.32 3.95 -3.08 6.18 
+0.02 0.26 1.43 4.86 1.91 4.32 1.76 4.38 2.38 3.71 3.22 2.89 1.73 4.25 -0.02 4.19 
+-0.26 1.82 -2.45 6.71 -1.52 2.23 -1.82 5.58 0.13 1.15 0.99 4.4 1.72 3.82 1.26 0.18 
+6.44 -1.13 0.89 -0.48 4.75 -2.78 6.29 -0.63 -3.84 7.7 -1.63 1.8 2.19 0.02 5.12 -0.32 
+-3.55 5.92 -5.16 5.41 -0.11 0.22 -1.15 5.68 1.35 3.97 1.69 3.71 0.93 1.45 1.28 1.91 
+0.26 4.62 5.27 1.39 0.08 0.04 0.29 4.6 3.75 2.5 1.97 0.71 5.91 -1.11 0.28 0.24 
+4.47 2.15 0.95 0.55 5.84 -1.87 3.08 0.08 -3.34 3.8 -4.36 5.88 -2.02 1.59 -5.02 7.24 
+-2.08 3.15 -3.55 4.55 -2.87 6.05 -1.84 5.45 -2.23 5.28 -0.48 0.5 -3.61 6.07 -0.82 4.82 
+0.93 0.39 1.61 3.04 2 1.35 1.07 -2.63 2.04 -5.42 6.34 -2.87 1.8 -5.47 1.61 -5.43 
+1.41 -5.41 6.23 -3.28 6.18 -3.41 -1.32 5.58 -1.52 5.62 6.27 -3.36 1.48 -5.71 6.18 -3.6 
+6.17 -3.71 -1.37 5.88 6.18 -3.77 6.14 -3.91 6.14 -4.05 6.07 -4.19 -1.37 6.25 6.13 -4.25 
+6.08 -4.41 6.05 -4.58 1.16 -6.46 5.93 -4.8 0.87 -6.44 5.79 -5 5.75 -5.12 -0.7 6.55 
+-0.93 6.68 5.86 -5.18 5.82 -5.34 0.76 -6.77 5.66 -5.54 0.43 -6.68 -5.58 5.55 -5.62 5.42 
+0.39 -6.51 0.17 -6.4 -0.02 -6.29 5.38 -5.54 -0.33 -6.23 5.21 -5.71 -0.59 -6.14 -0.78 -6.03 
+-0.96 -5.92 4.86 -5.88 4.8 -5.99 4.71 -6.11 4.6 -6.25 -1.48 -5.84 -1.65 -5.73 -4.45 6.25 
+1.56 5.73 -4.62 6.12 -4.69 5.99 -1.39 -5.71 -1.56 -5.62 4.53 -6.01 -1.8 -5.53 4.36 -6.1 
+4.28 -6.23 4.17 -6.34 2.06 5.51 4.14 -6.45 2 5.6 4.14 -6.55 4.08 -6.68 2 5.68 
+4.06 -6.79 3.93 -6.92 3.84 -7.04 -2.28 -5.58 3.62 -7.09 -2.5 -5.43 3.43 -7.16 -2.73 -5.25 
+3.26 -7.23 -2.95 -5.1 -3.15 7.16 -0.87 -1.46 -2.13 -3.6 -3.19 7.04 -3.02 -5 -3.23 6.9 
+-3.32 6.82 p
+-2.99 -4.95 -3.12 -4.86 3.19 -6.73 3.06 -6.83 2.97 -6.88 2.86 -6.99 2.76 -7.05 -3.59 -4.54 
+-2.69 7.01 -2.78 6.92 -2.91 6.86 -3 6.77 -3.12 6.73 -3.21 6.62 -3.32 6.55 -0.5 0.96 
+-2.9 5.53 -3.13 -4.75 -3.43 6.38 -3.19 -4.67 -3.28 -4.58 -3.38 6.25 -3.5 6.18 -3.25 -4.52 
+-3.5 6.1 -3.61 6.03 -3.21 -4.47 -3.6 5.95 -0.3 -0.39 -2.97 -3.99 -3.62 5.88 -3.3 -4.32 
+-3.43 -4.23 -3.52 -4.14 3.43 -5.86 3.34 -5.9 -3.75 -4.04 3.19 -5.94 -3.91 -3.95 3.04 -5.99 
+-4.04 -3.86 2.89 -6.01 -4.21 -3.78 2.75 -6.04 -4.34 -3.66 -4.45 -3.61 2.56 -6.05 2.47 -6.08 
+2.39 -6.14 2.3 -6.16 2.22 -6.23 2.12 -6.25 -4.82 -3.34 2 -6.27 1.88 -6.29 -4.96 -3.22 
+-1.87 6.25 -5.01 -3.17 -1.89 6.18 -2 6.17 -4.99 -3.19 -2.02 6.12 -2.11 6.05 -2.17 6.03 
+-4.93 -3.19 -2.21 5.96 -2.28 5.95 -2.37 5.93 -2.45 5.86 -4.78 -3.19 -2.47 5.82 -2.54 5.77 
+-4.75 -3.14 -4.82 -3.11 -2.5 5.73 -4.84 -3.04 -2.52 5.67 -2.58 5.64 -2.67 5.62 -4.73 -3.02 
+-4.79 -2.93 -2.63 5.55 -4.79 -2.86 -4.88 -2.82 -4.93 -2.76 -4.99 -2.69 -5.05 -2.62 -5.12 -2.58 
+-2.34 5.49 -5.12 -2.5 -2.34 5.45 -5.12 -2.45 -5.16 -2.39 -5.23 -2.34 -5.3 -2.28 -2.17 5.43 
+-2.23 5.4 -2.28 5.38 -5.16 -2.23 -5.21 -2.17 -5.25 -2.11 2.11 -5.38 2.06 -5.38 5.38 2.11 
+2.06 -5.43 2.02 -5.43 5.43 2.15 5.38 2.21 2.08 -5.47 5.38 2.28 5.34 2.32 5.28 2.39 
+2.19 -5.51 5.27 2.45 5.23 2.49 2.21 -5.55 5.23 2.56 2.21 -5.58 -5.27 -2.54 2.11 -5.59 
+2.04 -5.62 -5.45 -2.46 1.96 -5.62 1.87 -5.64 -5.58 -2.37 -5.64 -2.32 1.74 -5.64 1.65 -5.64 
+-5.02 -1.95 -0.73 -0.29 -5.82 -2.17 1.52 -5.64 -5.9 -2.11 -5.95 -2.05 1.39 -5.61 -6.04 -1.98 
+-6.07 -1.91 1.25 -5.62 -6.14 -1.84 -6.18 -1.8 1.13 -5.58 -6.27 -1.74 1.06 -5.58 1 -5.58 
+6.32 1.72 6.29 1.73 6.25 1.81 6.21 1.87 6.18 1.9 -1.17 5.67 6.1 1.97 1.19 -5.68 
+1.15 -5.69 1.09 -5.71 -6.2 -1.91 1.02 -5.68 0.93 -5.71 -6.29 -1.83 0.87 -5.68 0.8 -5.7 
+-6.38 -1.74 0.73 -5.66 0.68 -5.69 -6.47 -1.65 0.61 -5.66 -6.54 -1.58 0.55 -5.62 -6.58 -1.52 
+0.45 -5.62 0.41 -5.62 -6.62 -1.43 0.35 -5.6 -6.69 -1.37 0.28 -5.55 -6.7 -1.3 0.21 -5.55 
+0.2 -5.55 -6.77 -1.21 0.13 -5.51 0.09 -5.54 0.02 -5.51 6.79 1.15 -0.02 -5.54 -0.04 -5.53 
+-0.11 -5.52 -0.15 -5.51 6.73 1.09 -0.2 -5.54 -0.26 -5.53 -0.3 -5.51 -0.37 -5.51 -0.41 -5.49 
+-6.7 -0.98 -0.43 -5.47 -6.73 -0.91 -0.48 -5.42 -6.75 -0.84 -0.49 -5.41 -6.75 -0.8 -0.55 -5.36 
+-6.75 -0.76 -0.56 -5.34 -0.64 -5.3 -0.65 -5.29 -0.71 -5.3 -0.76 -5.27 -0.78 -5.25 -13.29 -1.17 
+-0.78 -5.19 -0.83 -5.18 -0.87 -5.17 -0.93 -5.14 -0.95 -5.12 -6.49 -0.46 -0.98 -5.1 -6.46 -0.41 
+-0.98 -5.04 -6.46 -0.39 -0.95 -5.02 -1 -4.99 -6.4 -0.33 -12.85 -0.61 -0.91 -4.93 -12.8 -0.52 
+-12.89 -0.47 -6.47 -0.22 0.7 4.84 0.65 4.88 0.63 4.88 -6.59 -0.24 0.56 4.88 0.54 4.93 
+-6.71 -0.26 0.48 4.93 0.45 4.95 -6.77 -0.26 0.39 4.94 0.39 4.97 0.37 4.97 0.35 5.02 
+-6.93 -0.28 p
+0.3 5.01 0.29 5.02 0.26 5.03 0.24 5.05 -7.01 -0.28 0.21 5.05 0.2 5.08 -7.08 -0.25 
+0.15 5.07 0.16 5.1 0.13 5.1 0.11 5.12 7.14 0.28 0.21 10.29 7.14 0.34 0.09 5.17 
+0.09 5.19 0.04 5.18 -7.16 -0.37 0.04 5.21 0.05 10.42 0 5.23 -7.18 -0.35 -0.05 10.46 
+-0.04 5.25 -0.07 5.25 -7.16 -0.33 -0.06 5.25 -7.16 -0.3 -0.07 5.27 7.16 0.3 -0.17 10.55 
+-0.11 5.29 -0.12 5.3 -0.11 5.29 -7.09 -0.32 -7.09 -0.28 -7.12 -0.22 -0.09 5.3 -7.08 -0.2 
+-0.08 5.29 -7.08 -0.15 -7.07 -0.13 -7.08 -0.07 p f*
+255 G
+922.27 1394.49 0 21.07 5.49 0.02 -0.07 5.25 5.43 0.09 -0.15 5.23 -0.13 5.25 5.27 0.11 
+-0.21 5.23 5.21 0.18 5.18 0.24 0.37 -5.23 5.27 0.29 -0.43 5.2 5.18 0.33 5.19 0.39 
+0.57 -5.23 0.58 -5.21 -5.34 -0.39 0.5 -5.25 0.48 -5.23 0.48 -5.27 5.54 0.39 -1.09 10.5 
+-0.57 5.25 5.32 0.42 5.3 0.5 0.69 -5.25 5.36 0.54 5.36 0.58 0.82 -5.23 1.61 0.17 
+0 -10.7 -5.55 -0.58 0.71 -5.27 5.6 0.61 -0.76 5.25 0 10.7 3.8 0.46 1.74 -10.5 
+5.51 0.69 -0.91 5.25 -0.95 5.25 -0.96 5.23 -5.32 -0.7 -0.91 5.23 -5.27 -0.63 -5.28 -0.59 
+-0.78 5.23 -0.8 5.21 5.14 0.59 5.12 0.63 0.93 -5.21 5.18 0.67 5.17 0.74 5.14 0.79 
+2.25 -10.42 1.11 -5.23 1.07 -5.25 5.4 0.85 1.14 -5.25 1.11 -5.25 5.51 0.91 5.49 0.95 
+-1.21 5.25 -1.26 5.25 -1.29 5.23 -1.32 5.21 5.21 1 5.18 1.06 1.43 -5.21 1.43 -5.23 
+1.39 -5.26 1.37 -5.25 5.43 1.13 1.39 -5.27 5.46 1.17 5.43 1.23 -1.52 5.25 5.34 1.28 
+5.32 1.32 1.65 -5.25 1.63 -5.27 5.41 1.39 -1.67 5.27 5.29 1.43 5.3 1.5 1.8 -5.28 
+1.78 -5.27 1.73 -5.27 -5.47 -1.5 1.65 -5.32 1.61 -5.32 -5.62 -1.43 -5.64 -1.39 -5.68 -1.34 
+-5.71 -1.25 -5.73 -1.24 -5.77 -1.17 -5.8 -1.13 -5.82 -1.06 -5.83 -1.02 -1.09 5.32 -5.79 -0.96 
+-5.82 -0.91 -5.86 -0.84 0.93 -5.32 0.89 -5.32 -5.99 -0.8 -5.99 -0.76 -0.79 5.32 -5.95 -0.69 
+-0.74 5.32 -5.91 -0.65 -5.92 -0.58 -0.65 5.29 -5.86 -0.54 -5.9 -0.5 -0.52 5.3 -0.57 5.29 
+-0.54 5.29 -0.59 5.27 -5.64 -0.43 -5.67 -0.39 -5.66 -0.33 -5.68 -0.29 -5.68 -0.24 -5.69 -0.17 
+-5.68 -0.13 0.13 -5.3 -5.75 -0.06 -5.75 -0.02 f*
+922.27 1467.69 0 10.29 4.58 0.02 0.09 -5.14 0.06 -5.14 -4.73 -0.02 f*
+255 203 0 rG
+917.95 1779.1 4.32 -0.5 4.27 -0.15 4.28 -0.2 4.25 -0.3 4.32 0.02 4.32 -0.07 3.36 -0.09 
+1.26 0.76 1.76 2.56 -0.59 0.93 -4.58 0.24 -4.47 0.59 -4.46 -0.52 -0.2 -0.05 -4.64 -1.04 
+-4.41 0.78 -4.47 0.59 0 -3.52 -4.32 -0.04 f*
+927.02 1787.13 0.16 2.69 2.5 -0.04 -2.65 -2.64 f*
+932.14 1790.21 0.35 2.97 5.1 -0.24 4.9 -0.34 -5.4 -2.47 -4.95 0.08 f*
+255 G
+942.29 1951.3 -7.46 0 10.05 -0.26 11.28 -0.5 11.29 -0.69 11.29 -0.89 11.26 -1.09 11.22 -1.28 
+11.22 -1.48 11.18 -1.67 11.16 -1.87 11.13 -2.06 11.09 -2.25 11.02 -2.45 11 -2.65 10.96 -2.84 
+10.89 -3.02 10.85 -3.21 10.77 -3.41 10.74 -3.6 10.66 -3.78 10.59 -3.97 10.52 -4.14 10.44 -4.34 
+10.37 -4.52 10.31 -4.69 10.2 -4.88 10.11 -5.06 10.05 -5.23 9.94 -5.41 6.23 -3.53 0.17 -0.09 
+0.11 -0.07 3.32 -1.87 9.74 -5.75 9.66 -5.92 9.53 -6.1 9.44 -6.25 9.31 -6.4 9.2 -6.58 
+1.57 -1.15 0.65 -0.41 0.71 -0.61 6.16 -4.58 8.98 -6.87 8.86 -7.06 8.72 -7.2 8.59 -7.36 
+8.47 -7.51 3.97 -3.64 0.54 -0.44 0.37 -0.39 3.47 -3.16 8.2 -7.81 8.05 -7.92 7.95 -8.07 
+7.77 -8.23 7.64 -8.36 7.5 -8.48 7.34 -8.59 7.2 -8.74 7.04 -8.86 6.88 -8.98 6.73 -9.12 
+6.58 -9.22 6.4 -9.33 6.25 -9.44 6.08 -9.55 5.9 -9.66 5.73 -9.77 5.58 -9.85 5.4 -9.94 
+5.21 -10.05 5.06 -10.13 4.86 -10.22 4.69 -10.3 4.51 -10.39 4.34 -10.46 4.14 -10.53 3.95 -10.61 
+3.78 -10.68 3.61 -10.74 3.39 -10.81 3.21 -10.85 3.04 -10.92 2.82 -10.95 2.64 -11.03 2.43 -11.05 
+2.25 -11.09 2.06 -11.16 1.87 -11.16 1.67 -11.2 1.47 -11.24 1.28 -11.24 1.09 -11.28 0.89 -11.29 
+0.7 -11.3 0.5 -11.31 0.26 -10.2 0 10.2 -0.5 11.33 -0.7 11.31 -0.89 11.3 -1.09 11.27 
+-1.28 11.26 -1.47 11.22 -1.67 11.21 -1.87 11.18 -2.06 11.13 -2.25 11.11 -2.46 11.05 -2.62 11.02 
+-2.84 10.96 -3.02 10.92 -3.21 10.87 -3.41 10.81 -3.58 10.74 -3.8 10.68 -3.95 10.61 -4.14 10.55 
+-4.34 10.46 -4.51 10.39 -4.69 10.31 -4.86 10.22 -5.05 10.13 -5.23 10.05 -5.38 9.96 -5.57 9.86 
+-5.75 9.77 -5.9 9.66 -6.07 9.57 -6.25 9.44 -6.4 9.33 -6.58 9.23 -6.73 9.11 -6.9 8.98 
+-7.03 8.86 -7.2 8.75 -7.34 8.62 -7.5 8.49 -7.64 8.35 -7.79 8.23 -7.92 8.07 -8.08 7.95 
+-8.2 7.81 -8.36 7.64 -8.46 7.51 -8.62 7.36 -8.72 7.21 -8.86 7.05 -8.96 6.9 -9.11 6.75 
+-9.2 6.58 -9.33 6.4 -9.42 6.27 -9.55 6.08 -9.66 5.92 -9.74 5.75 -9.84 5.58 -9.96 5.4 
+-10.03 5.23 -10.13 5.05 -10.2 4.88 -10.3 4.69 -10.37 4.52 -10.46 4.34 -10.53 4.16 -10.59 3.95 
+-10.65 3.8 -10.75 3.58 -10.78 3.41 -10.85 3.23 -10.89 3.02 -10.96 2.84 -11 2.64 -11.04 2.46 
+-11.09 2.25 -11.11 2.06 -11.18 1.87 -11.18 1.67 -11.21 1.48 -11.25 1.28 -11.26 1.08 -11.28 0.89 
+-11.29 0.7 -11.3 0.5 -2.59 0 f*
+189 0 54 rG
+936.37 1622 -1 4.06 1.46 0.2 0.89 0.11 0.81 -4.62 1.37 -0.79 2.49 -2.6 0.55 -0.74 
+1.52 -0.24 1.8 -0.07 1.61 0.52 0.45 -1.15 -1.63 -0.52 -1.82 0 -1.87 0.26 -0.37 1.15 
+-1.67 -0.26 -0.17 -0.02 -2.25 2.63 -0.46 1.76 -1.43 -0.18 -0.26 0.5 f*
+255 35 0 rG
+936.5 1621.48 -0.13 0.52 0.26 -0.5 -0.13 -0.02 f*
+255 0 r6
+936.98 1529.04 -0.41 4.99 0.29 0.02 0.45 -5 0.74 -4.99 -0.69 -0.02 -0.37 5 f*
+0 155 255 rG
+937.3 1529.05 -0.45 5 0.67 0.04 0.5 -4.99 0.91 -4.99 -0.89 -0.04 -0.74 4.99 f*
+2 239 204 rG
+938.02 1529.1 -0.5 4.99 0.67 0.02 0.54 -5 1.08 -4.96 -0.89 -0.05 -0.91 4.99 f*
+87 0 136 rG
+938.52 1621.75 -0.81 4.62 0.55 0.09 1.43 0.21 1.41 0.24 1.41 0.26 1.41 0.28 1.09 0.24 
+1.58 -4.53 1.84 -4.5 -0.85 -0.17 0.26 -0.65 -1.61 -0.52 -1.8 0.07 -1.52 0.24 -0.55 0.74 
+-2.49 2.6 -1.37 0.79 f*
+7 193 59 rG
+938.74 1529.12 -0.54 5 0.67 0.04 0.57 -4.99 1.28 -4.95 -0.89 -0.06 -1.08 4.96 f*
+255 35 0 rG
+939.28 1617.08 -0.75 2.84 2.25 -2.63 -1.5 -0.21 f*
+110 210 9 rG
+939.43 1529.17 -0.57 4.99 0.67 0.02 0.61 -4.97 0.76 -2.82 1.24 -2.11 3.08 -2.89 3.43 3.17 
+0.2 0.2 2.88 4.49 3.54 1.06 0.19 0.11 0.76 5.14 1.59 0.74 1.07 4.63 0.3 5.07 
+0.07 0.09 2.84 2.34 3.06 1.22 1.91 2.58 0.42 1.07 2.45 2.75 2.21 2.19 0.22 0.3 
+1.33 5.14 0.04 0.07 2.43 1.84 2.76 1 2.82 0.78 3.32 -0.35 1.08 -0.35 3.1 -1.62 
+3.13 0.33 3.26 0.11 2.95 0.71 1.96 2.5 2.6 1.21 3.24 0.24 3.1 0.48 2.52 1.34 
+2.39 -1.24 3.17 -1.76 0.18 3.19 -0.26 1.89 0.43 4.04 3.45 0.02 3.93 -0.49 2.8 0.97 
+2.75 -0.09 2.82 -2.17 2.78 -1.08 2.84 -1.09 3.63 -1.67 2 -0.32 3.99 -0.02 2.88 1.24 
+1.57 2.63 2.3 1.82 3.58 0.56 2.61 -0.61 3.43 -1.2 3.43 -1.02 5.3 -3.38 3.19 -4.93 
+2.82 -0.91 4.29 0.29 0.43 4.08 -0.76 1.74 -3.14 5.12 -4.29 4.14 -1.71 2.13 0.07 3.75 
+6.14 -1.91 2.65 -1.63 0.5 3.41 -0.55 0.67 0.29 3.26 2.58 -0.39 5.19 -3.43 3.14 -0.98 
+3.78 0.89 1.93 0.5 2.02 0.32 3.67 1.09 0.07 3.76 5.96 -0.87 0.26 0.18 -0.02 0.15 
+-3.84 5.38 0.26 0.68 0.37 0.19 2.61 1.41 3.88 1.04 3.37 1.46 1.36 1.67 0.7 0.63 
+4.17 1.02 3.49 1.47 0.89 3.06 1.97 2.41 1.02 2.95 1.19 1.36 1.35 0.74 -0.33 2.06 
+0.11 1.52 0.96 1.63 0.65 0.96 3.36 1.76 2.89 2.02 1.34 2.8 0.98 2.97 -2.61 4.51 
+-2.65 3.23 -0.67 1.43 -1.8 3.93 0.48 3.02 -0.15 3.23 2.82 -0.28 2.74 -1.72 3.45 -2.67 
+2.47 0.46 3.8 0.2 1.45 1.17 4.78 0.28 2.64 0.33 2.52 2.54 -2.84 4.53 2.54 2.59 
+0.54 0.39 0.66 0.24 0 -19.21 -2.54 -2.06 2.25 -1.93 1.28 0.37 -0.99 3.62 0 19.21 
+3.45 1.28 1.69 0.13 4.76 1.24 -4.95 5.27 -1.43 3.99 -0.54 0.74 -5.34 4.49 -2.41 2.31 
+-1.63 2.23 0.59 1.15 2.37 1.58 -3.97 3.02 -1.37 1.7 -2.41 3.93 -1.56 3.75 -2.78 3.91 
+-1.54 3.69 -2.28 3.76 -2.75 3.79 -2.23 3.71 -2.62 3.71 -2.04 3.64 -1.5 3.63 -1.17 2.86 
+6.45 -0.65 2.25 1.02 2.11 0.91 5.38 0.58 3.88 1.52 -5.99 4.27 2.02 1.34 -1.39 2.54 
+-4.38 4.11 -0.61 0.37 -8.87 3.64 0.76 4.04 0.2 0.26 3.36 -0.19 3.09 -0.24 5.88 -3.91 
+5.67 -1.84 5.03 0.8 0.83 0.57 -2.34 1 -7.7 3.61 -2.82 1.13 -5.75 -0.18 -4.43 3.17 
+1.02 0.02 5.86 0.11 5.92 -0.02 4.49 -4.36 6.03 -0.26 4.37 -4.54 4.41 -0.35 5.27 -4.08 
+0.67 -0.79 0.39 -0.04 6.77 -5.12 -2.21 -0.67 -6.75 1.41 -1.02 0.54 -7.4 2.7 -6.23 0.56 
+-2.23 -1.85 4.17 -4.32 3.49 -4.32 2.86 -4.27 -0.52 -1.93 -4.92 -1.08 -3.28 0.15 -2.02 -0.8 
+-2.91 -2.41 1.7 -3.86 3.04 -4.06 3.93 -2.88 0 -5.08 -4.14 -2.8 7.14 -3.02 1.02 1.52 
+-4.01 4.3 0 5.08 2.4 -1.76 2.06 -0.99 7.77 -3.8 2.11 -1.23 6.46 -4.52 1.17 -1.04 
+0.78 -3.17 -0.12 -0.84 -4.41 -1.82 -1.11 -0.54 -1.61 -3.3 -0.3 -3.19 -0.18 -0.37 -1.09 -3.37 
+0.3 -3.73 4.58 -4.32 0.91 -1.08 5.82 -4.23 0 -5.29 -2.91 -2.69 5.47 -4.95 3.8 -2.56 
+2.66 -2.34 P
+5.63 -5.25 0.78 -0.48 0.15 0.04 -0.17 0.3 -5.55 6.25 -1.09 1.8 -2.32 3.54 -4.36 5.55 
+-0.65 0.79 -1.43 0 0 5.29 0.46 -0.35 2.7 -2.28 4.66 -5.51 0.15 -0.19 3.99 -5.56 
+3.02 -3.88 1.73 -2.19 3.13 -5.54 -4.28 -1.67 -6.14 3.15 -5.82 5.8 -0.57 0.54 -6.27 3.13 
+-2.49 0.15 -3.47 -0.89 -1.63 -0.8 0 -3.69 1.84 -3.54 0 -5.86 -3.1 -0.13 -2.26 -0.07 
+-0.91 -0.07 -2.5 -2.11 -4.08 -1.11 -1.59 0.45 -2.66 0.79 -2.17 -1.5 -1.5 -0.41 0.7 -3.88 
+-2.61 -2.35 -1.15 -3.02 -4 -1.13 -3.95 1.5 -1.37 -2.82 3.88 -3.8 3.04 0.22 4.08 1.17 
+0.37 0.15 6.05 -1.13 5.9 -2.86 2.2 -3.71 0.11 -4.06 -3.7 -1.82 -1.73 -0.31 -5.96 0.91 
+4.1 -5.62 5.49 -3.67 0.35 -0.91 1.87 -5.51 0.78 -2.5 0.79 -2.97 2.13 -5.34 6.77 -1.11 
+5.34 0.74 2.74 0.82 1.34 0.91 6.25 0 0.17 0.05 2.06 3.28 -0.5 0.65 -5.12 3.3 
+-0.43 0.21 -0.28 0.28 -5.08 3.69 -5.3 4.19 -3.49 2.67 -1.89 1.43 -2.89 4.36 0.87 3.55 
+1.79 3.02 -0.02 4.04 4.32 -1.3 5.93 -2.84 5.9 -2.75 6.1 -2.02 0.95 -0.33 5.64 0.61 
+0.59 -0.02 -0.5 0.42 -5.39 5.4 -5.57 4.84 -5.9 3.21 -0.43 0.54 -0.7 4.41 -4.08 4.36 
+-1.37 2.26 -4.41 4.73 0 5.86 0.11 -0.2 3.45 -2.32 2.67 -2 1.98 -0.09 4.17 -1.02 
+0.43 -1.13 -0.5 -1.48 -2.67 -0.96 2.52 -2.38 2.93 -4.3 2.69 -2.99 5.82 -4.08 1.22 -2.3 
+2.63 -5.82 1.09 -1.13 5.66 -4.02 5.08 -6.47 0.16 -0.32 -0.29 -0.24 -5.2 -0.85 -1.55 0.17 
+-6.45 0.61 -1.37 0.71 -4.6 1.71 -4 -0.71 -2.64 0.87 -0.02 0.02 -5.84 2.86 -6.29 1.07 
+0.95 -4.78 3.08 -3.17 5.25 -4.38 5.49 -3.66 5.93 -2.61 2.14 -0.65 3.89 2 1.37 0.07 
+3.66 -3.61 0.84 -2.73 -0.45 -2.43 -0.65 -0.35 -5.21 -0.24 -1.71 0.43 -4.3 -0.84 -3.55 -0.76 
+-1.89 0 -2.17 -3.19 -5.21 -0.69 -0.2 -0.02 -4.02 -1.73 -4.86 -1.02 -6.03 2.47 -5.01 4.13 
+-5.71 3 -1.8 -0.18 -5.08 -0.67 -1.19 0.09 -4.43 -0.29 -4.19 -1.02 -0.17 -0.07 -2.95 -2.08 
+-2.43 -2.5 -2.69 -2.3 -1.41 -1.37 -1.11 -1.06 -2.76 -2.23 -1.91 -2.97 -2.11 -2.84 -2.23 -2.78 
+-3.58 -1.52 -3.47 -1.61 -1.65 -3.38 -4.41 0.76 -2.75 1.35 0.43 -3.23 -0.22 -2.06 2.2 -3.99 
+3.19 -5.08 0.3 -2.5 -1.65 -3.89 -0.29 -2.12 -0.74 -2.67 -3.43 -1.99 -1.73 0.76 -6.03 3.1 
+-1.2 1.04 -4.45 2.3 -5.23 3.58 -0.07 -0.02 -3.88 -0.97 -4.5 -0.26 -3.84 -1.07 -2.7 0.3 
+-2.36 0.28 -4.89 0.48 -2.32 0.61 -3.17 0.8 -4.84 0.61 -2.02 -0.11 -2.11 -0.2 -4.12 -0.24 
+-3.73 -0.78 -4.23 0.02 -2.32 -0.04 -1.88 0.11 -4.32 0.33 -3.77 1.49 -1.87 1.24 -4.43 0.8 
+-1.11 0.95 -4.97 3.89 -0.58 0.15 -3.23 -1.02 -3.39 -0.73 -4.14 0.82 -3.45 -0.54 -3.43 -0.47 
+-2.06 1.11 -2.74 1.52 -3.97 2.06 -2.34 4.71 -0.18 0.19 -4.66 3.14 -2.91 -0.97 -2.78 -1.43 
+-1.47 -3.61 -0.35 -0.67 -2.35 -3.27 -0.78 -1.83 -1.39 -2.41 -1.98 -3.25 -0.34 -1.15 -1.7 -4.25 
+-0.57 -1.06 -2.84 -3.71 -0.43 -0.83 -2.8 -1.56 -3.47 -1.46 -3.52 -1.41 -1.15 -1.8 -2.06 -2.23 
+-3.23 -3.23 p
+-0.22 -0.15 -0.15 0.13 -4.12 4.05 -0.07 0.74 -0.41 -0.02 -1.28 4.95 p f*
+0 255 r6
+940.15 1529.21 -0.61 4.97 0.61 0.04 -0.09 0.93 3.23 2.91 0.2 0.17 0 -1.93 -3.06 -2.06 
+1.31 -4.95 2.34 -4.87 0.91 -0.85 1.08 0.98 0.93 5.13 0.29 4.94 0.02 0.11 -0.05 0.04 
+-3.56 1.47 -0.22 0.07 0 1.93 1.56 1.3 1.54 0.13 -0.11 0.73 3.37 0.83 2.25 3.95 
+0.37 0.63 1.67 4.62 0.39 1.93 0.63 3.19 0.21 5.04 0.48 0.07 -0.24 1.04 1.06 4.08 
+0.93 0.13 -0.48 1.76 0.69 3.28 0.7 2.23 1.54 3.12 0.3 0.07 1.2 0.2 -0.46 -2.5 
+-0.98 -1.11 -1.17 -1.3 -0.17 -0.56 -0.98 -5.16 -0.09 -0.46 -0.87 -4.69 -0.48 -2.34 -0.02 -2.74 
+1.69 -4.45 2.67 2.58 0.78 2.58 1.11 2.46 2.58 2.06 1.85 1.47 0.45 1.15 0.55 4.11 
+0.54 1.71 2.47 1.45 2.23 1.93 2 1.61 0.13 0.41 0 4.79 0.24 1.15 2.41 0.91 
+1.82 2.04 1.78 2 2.84 0 0.18 1.86 1.34 0.46 2.34 0.8 2.8 -4.47 2.43 0.87 
+2.4 0.91 2.37 0.93 2.37 0.98 2.71 -3.78 -2.8 -0.48 -0.62 -1.69 2.28 -0.7 2.49 0.98 
+-0.11 1.61 1.63 0.7 2.38 1.07 3.32 -4.36 2.47 1.13 3.36 -4.37 2.52 1.22 2.49 1.21 
+-3.55 4.3 -3.61 4.25 2.28 1.2 2.24 1.21 3.77 -4.16 2.3 1.3 2.26 1.32 1.32 0.8 
+2.11 -0.67 1.76 1.82 2.19 1.39 3.58 0.13 3.41 0.33 2.34 1.32 2.3 1.05 0.24 0.13 
+6.32 -1.99 0.29 -0.13 5.7 -1.45 -1.32 4.51 -0.13 0.59 -0.35 3.05 1.67 1.91 2.19 1.52 
+2.04 1.64 2.21 -0.52 3.23 -0.18 4.43 -0.45 1.56 -0.52 1.05 2.45 5.51 -1.91 1.99 0.11 
+0 2.45 -0.08 0.8 0.82 0.15 2.54 0.89 1.7 2.11 2.3 1.74 2.21 1.8 3.34 1.2 
+0.93 2.56 -0.41 3.25 0.56 2.67 0.91 2.49 1.63 2.13 1.85 2.04 1.63 2.17 1.22 0.58 
+2.39 0.74 3.51 1.41 0.26 2.82 0.91 2.54 1.26 2.41 0.29 2.78 0.17 2.82 -3.45 3.99 
+-1.13 3.13 2.19 2.1 -0.11 2.8 -1.02 3.04 -0.48 2.87 -1.49 1.08 -6.62 3.19 -0.26 0.35 
+-0.49 2.71 -0.66 2.73 -0.61 2.72 -0.07 1.73 0.54 0.79 -0.28 2.67 -0.3 2.67 -2.26 2.91 
+-0.78 0.48 -5.25 2.71 -2.59 1.35 -2.6 1.56 -1.82 2.61 -3.11 2.6 -2.87 2.52 0.02 2.52 
+1.74 2.6 0.13 1.05 0.39 1.61 -0.54 2.64 -0.69 2.65 -1.65 2.63 -2.15 2.56 -2.06 2.56 
+-2.32 2.54 -1.09 2.71 -0.24 0.52 -1.37 2.12 2.85 2.96 0.56 0.67 -0.8 2.97 1.41 1.45 
+5.78 0.91 5.21 -0.18 2.08 -0.41 1.89 1.02 2.34 1.18 3.34 -0.07 0 -33.68 -1.73 -0.3 
+2.15 -0.37 0.54 0.35 -0.95 0.33 0 33.68 2.13 -0.04 1.46 -0.26 0.11 0.46 -3.25 3.08 
+2.8 2.73 2.3 -2.06 5.73 0.67 5.75 0.57 2.73 0.22 0 -9.14 -5.41 -0.89 -0.87 -1.22 
+-1.39 -3.08 -0.76 -0.45 3.19 -3.17 1.56 -0.91 6.32 -2.23 -3.37 -1.37 -5.55 -0.76 -0.09 -1.23 
+1.52 -3.15 2.71 -3.14 3.06 -3.21 2.58 -3.04 0.2 0.26 0 -0.57 0.91 -3.04 2.78 -3.3 
+0.05 0 0.95 3.02 -4.69 3.32 0 0.57 1.89 2.58 1.89 0.41 0.28 2.69 -0.93 3.3 
+-3.25 3.34 1.21 2.76 0.41 0.59 0 3.39 1.93 0.61 -0.21 2.91 -1.72 3.49 -5.2 1.54 
+0 9.14 P
+3.06 0.26 -3.78 3.49 -3.95 3.47 5.69 0.61 -4.16 3.54 -4.32 3.47 -4.46 3.43 2.54 0.43 
+3.66 -3.6 7.79 -3.13 1.11 -0.54 -0.41 0.61 -2.93 3.8 -3.43 3.75 2.56 0.37 5.51 0.7 
+5.44 0.58 1.05 -4.23 -1.72 -0.15 -5.62 -0.57 4.52 -3.73 4.34 -3.8 3.41 0.2 0 -57.42 
+-1.67 -2.11 -2.43 -1.95 -0.3 -0.76 1.04 -0.91 4.27 -2.95 0.55 -3.17 -1.91 -1.41 -2.8 2.23 
+-4.66 1.73 -1.24 -0.8 1.28 -3.15 1.8 -1.23 6.43 -1.17 6.73 -3.52 0.41 -0.29 3.25 -3.69 
+0.39 -3.26 4.84 -3.52 6.36 -1.69 5.68 0.5 -5.12 4.82 -2.45 3.25 -2.87 1.43 -4.12 4.18 
+-0.98 3.43 0.88 3.05 -1.46 3.52 -4.19 3.69 -0.55 0.33 -7.16 3.38 0 57.42 2.39 0.13 
+4.82 0.17 4.43 -3.17 5.75 0.18 2.82 -1.13 7.7 -3.61 2.34 -1 -0.83 -0.57 -5.03 -0.8 
+-5.67 1.84 -5.87 3.91 -3.09 0.24 -3.36 0.19 -0.2 -0.26 -0.76 -4.04 8.87 -3.64 0.61 -0.37 
+4.38 -4.11 1.39 -2.54 -2.02 -1.34 5.99 -4.27 -3.88 -1.52 -5.38 -0.58 -2.11 -0.91 -2.25 -1.02 
+-6.45 0.65 1.17 -2.86 1.5 -3.63 2.04 -3.64 2.63 -3.71 2.23 -3.71 2.75 -3.79 2.28 -3.76 
+1.54 -3.69 2.78 -3.91 1.56 -3.75 2.41 -3.93 1.37 -1.7 3.97 -3.02 -2.37 -1.58 -0.59 -1.15 
+1.63 -2.23 2.41 -2.31 5.34 -4.49 0.54 -0.74 1.43 -3.99 4.95 -5.27 -4.76 -1.24 -1.69 -0.13 
+-3.45 -1.28 -0.66 -0.24 -0.54 -0.39 -2.54 -2.59 2.84 -4.53 -2.52 -2.54 -2.64 -0.33 -4.78 -0.28 
+-1.45 -1.17 -3.8 -0.2 -2.47 -0.46 -3.45 2.67 -2.74 1.72 -2.82 0.28 0.15 -3.23 -0.48 -3.02 
+1.8 -3.93 0.67 -1.43 2.65 -3.23 2.61 -4.51 -0.98 -2.97 -1.34 -2.8 -2.89 -2.02 -3.36 -1.76 
+-0.65 -0.96 -0.96 -1.62 -0.11 -1.52 0.33 -2.06 -1.35 -0.74 -1.19 -1.36 -1.02 -2.95 -1.97 -2.41 
+-0.89 -3.06 -3.49 -1.47 -4.17 -1.02 -0.7 -0.63 -1.36 -1.67 -3.37 -1.46 -3.88 -1.04 -2.61 -1.41 
+-0.37 -0.19 -0.26 -0.68 3.84 -5.38 0.02 -0.15 -0.26 -0.18 -5.96 0.88 -0.07 -3.76 -3.67 -1.09 
+-2.02 -0.32 -1.93 -0.5 -3.78 -0.89 -3.14 0.98 -5.19 3.43 -2.58 0.39 -0.29 -3.26 0.55 -0.67 
+-0.5 -3.41 -2.65 1.63 -6.14 1.91 -0.07 -3.75 1.71 -2.13 4.29 -4.14 3.14 -5.12 0.76 -1.74 
+-0.43 -4.08 -4.29 -0.29 -2.82 0.91 -3.19 4.93 -5.3 3.38 -3.43 1.02 -3.43 1.2 -2.61 0.61 
+-3.58 -0.56 -2.3 -1.82 -1.57 -2.63 -2.88 -1.24 -3.99 0.02 -2 0.32 -3.63 1.67 -2.84 1.09 
+-2.78 1.08 -2.82 2.17 -2.75 0.09 -2.8 -0.97 -3.93 0.49 -3.45 -0.02 -0.43 -4.04 0.26 -1.89 
+-0.18 -3.19 -3.17 1.76 -2.39 1.24 -2.52 -1.34 -3.1 -0.48 -3.24 -0.24 -2.6 -1.21 -1.96 -2.5 
+-2.95 -0.71 -3.26 -0.11 -3.12 -0.33 -3.1 1.63 -1.08 0.35 -3.32 0.35 -2.82 -0.78 -2.76 -1 
+-2.43 -1.84 -0.04 -0.07 -1.33 -5.14 -0.22 -0.3 -2.21 -2.19 -2.45 -2.75 -0.42 -1.07 -1.91 -2.58 
+-3.06 -1.22 -2.84 -2.34 -0.07 -0.09 -0.3 -5.07 -1.07 -4.62 -1.59 -0.74 -0.76 -5.14 -0.19 -0.11 
+-3.54 -1.06 -2.88 -4.49 -0.2 -0.2 -3.43 -3.17 -3.08 2.89 -1.24 2.11 -0.76 2.82 p f*
+0 155 255 rG
+939.75 1538.26 -0.11 0.93 1.02 0.06 -0.91 -0.99 f*
+2 239 204 rG
+939.84 1537.21 -0.09 1.05 0.91 0.99 1.09 0.07 -1.91 -2.11 f*
+7 193 59 rG
+939.95 1536.2 -0.11 1.02 1.91 2.11 1.11 0.07 -2.91 -3.19 f*
+110 210 9 rG
+940.06 1535.16 -0.11 1.04 2.91 3.19 0.26 0.02 1.93 0.13 -1.56 -1.3 -0.2 -0.17 -3.23 -2.91 f*
+255 203 0 rG
+941.73 1529.29 -1.31 4.95 3.06 2.06 0.22 -0.07 0 -1.67 -0.2 -0.13 0.3 -0.84 0.13 0.87 
+-0.24 0.11 0 1.67 3.56 -1.47 0.05 -0.04 -0.02 -0.11 -0.29 -4.94 -0.93 -5.12 -1.08 -0.98 
+-0.91 0.85 -2.34 4.88 f*
+7 193 59 rG
+941.34 1521.96 -0.15 1.54 4.13 -4.05 0.15 -0.13 0.22 0.15 3.23 3.23 2.06 2.23 1.15 1.8 
+3.52 1.41 3.47 1.46 2.8 1.56 0.43 0.83 2.84 3.71 0.57 1.06 1.7 4.25 0.34 1.15 
+1.98 3.25 1.39 2.41 0.78 1.83 2.35 3.27 0.35 0.67 1.47 3.61 2.78 1.43 2.91 0.97 
+4.66 -3.14 0.18 -0.19 2.34 -4.71 3.97 -2.06 2.74 -1.52 2.06 -1.11 3.43 0.47 3.45 0.54 
+4.14 -0.82 3.39 0.73 3.23 1.02 0.58 -0.15 4.97 -3.89 1.11 -0.95 4.43 -0.8 1.87 -1.24 
+3.77 -1.49 4.32 -0.33 1.88 -0.11 2.32 0.04 4.23 -0.02 3.73 0.78 4.13 0.24 2.11 0.2 
+2.02 0.11 4.84 -0.61 3.17 -0.8 2.32 -0.61 4.89 -0.48 2.36 -0.28 2.7 -0.3 3.84 1.07 
+4.5 0.26 3.88 0.97 0.07 0.02 5.23 -3.58 4.45 -2.3 1.2 -1.04 6.03 -3.1 1.73 -0.76 
+3.43 1.99 0.74 2.67 0.29 2.13 1.65 3.89 -0.3 2.5 -3.19 5.08 -2.2 3.99 0.22 2.06 
+-0.43 3.23 2.75 -1.35 4.41 -0.76 1.65 3.38 3.47 1.61 3.58 1.52 2.23 2.78 2.11 2.84 
+1.91 2.97 2.76 2.23 1.11 1.06 0 -21.42 0.09 -0.12 0.07 -0.02 0.02 0.13 -0.17 0.02 
+0 21.42 1.41 1.37 2.69 2.3 2.43 2.5 2.95 2.08 0.17 0.07 4.19 1.02 4.43 0.29 
+1.19 -0.09 5.08 0.67 1.8 0.18 5.71 -3 5.01 -4.13 6.03 -2.47 4.86 1.02 4.02 1.73 
+0.2 0.02 5.21 0.69 2.17 3.19 1.89 0 3.55 0.76 4.3 0.84 1.71 -0.43 5.21 0.24 
+0.65 0.35 0.45 2.43 -0.84 2.73 -3.66 3.61 -1.37 -0.07 -3.89 -2 -2.14 0.65 -5.93 2.61 
+-5.49 3.66 -5.25 4.38 -3.08 3.17 -0.95 4.78 6.29 -1.07 5.84 -2.86 0 -3.59 -1.63 -1.49 
+-2.11 -0.48 1.47 -1.28 5.6 -3.43 0.11 -0.04 6.46 -0.76 1 0.29 -0.46 1.24 -5.08 5.14 
+-1.34 0.21 -4.03 0.61 0 3.59 0.02 -0.02 2.64 -0.87 4 0.71 4.6 -1.71 1.37 -0.71 
+6.45 -0.61 1.55 -0.17 5.2 0.85 0.29 0.24 -0.16 0.32 -5.08 6.47 -5.66 4.02 -1.09 1.13 
+-2.62 5.82 -1.22 2.3 -5.82 4.08 -2.69 2.99 -2.93 4.3 -2.52 2.38 2.67 0.96 0.5 1.48 
+-0.43 1.13 -4.17 1.02 -1.98 0.09 -2.67 2 -3.45 2.32 -0.11 0.2 -1.84 3.54 0 3.69 
+1.63 0.8 3.47 0.89 2.49 -0.15 6.27 -3.12 0.57 -0.54 5.82 -5.8 6.14 -3.15 4.28 1.67 
+-3.13 5.54 -1.73 2.19 -3.02 3.88 -3.99 5.56 -0.15 0.19 -4.66 5.51 -2.7 2.28 -0.46 0.35 
+-5.82 4.23 -0.91 1.08 -4.58 4.32 -0.3 3.73 1.09 3.37 0.18 0.37 0.3 3.19 1.61 3.3 
+1.11 0.54 4.41 1.82 0.13 0.84 -0.78 3.17 -1.17 1.04 -6.46 4.52 -2.11 1.23 -7.77 3.8 
+-2.06 0.99 -2.4 1.76 -3.93 2.88 -3.04 4.06 -1.7 3.86 2.91 2.41 2.02 0.8 3.28 -0.15 
+4.92 1.08 0.52 1.93 -2.86 4.27 -3.49 4.32 -4.17 4.32 2.23 1.85 6.23 -0.56 7.4 -2.7 
+1.02 -0.54 6.75 -1.41 2.21 0.67 -6.77 5.12 5.84 -0.71 1.96 -2.34 0 -14.22 -0.02 -0.5 
+0.7 -0.45 6.27 -1.09 0.17 0.24 -1.41 1.52 -5.7 0.28 0 14.22 2.1 -2.54 6.3 -1.02 
+3.91 -5.01 0.68 -0.13 1.15 -2.34 -2.37 -1.69 3.88 -5.06 5.45 -3.32 4.39 -3.28 6.01 -4.82 
+5.73 -2.8 P
+1.71 -0.89 7.71 -4.43 4.12 -3.56 0.88 -4.75 -0.85 0.11 -6.29 2.02 -4.3 1.87 -2.75 1.54 
+-8.09 5.16 -3.11 1.85 -4.82 2.63 -7.86 4.05 -5.57 0.13 -0.96 -1.99 -2.41 -1.72 -2.75 -1.15 
+-1.22 -1.69 -1.7 -1.58 3.17 -4.61 3.13 -2.71 3.41 -2.84 0.59 -0.46 0 -5.7 -1.09 -1.52 
+2.32 -1.65 3.76 -0.17 -4.99 3.34 0 5.7 4.73 -3.58 4.25 -2.71 3.38 -2.26 7.56 -5.29 
+0.21 -0.21 3.84 -5.56 5.1 -5.38 6.49 -3.23 1.13 -0.75 4 -6.14 3.43 -5.96 0.02 -0.07 
+0 -0.02 -5.75 0.45 -6.51 4.21 -6.16 2.3 -1.93 -1.99 -3.15 -1.48 -3.58 4.28 -2.67 5.12 
+0.18 3.99 -3.88 4.38 -6.54 2.72 -1.36 -2.91 1.75 -4.51 1.96 -4.64 -0.68 -3.69 2.63 -5.02 
+0.78 -1.19 6.25 -5.86 0.54 -1.48 0.98 -3.32 3.23 -5.73 -0.19 -4.12 -0.22 -0.17 -3.17 -2.32 
+-6.05 4.1 -3.71 0.71 -2.43 -2.34 -0.17 -0.43 0.15 -0.28 4.86 -6.36 0.91 -1.2 3.27 -5.25 
+1.7 -5.27 0.09 -0.16 5.73 -4.03 5.43 -2.5 0.49 -0.15 0.07 -0.19 0.33 -4.82 2.54 -6.36 
+-3.17 -2.62 -3.23 -1.05 -2.69 0.33 -4.23 -1.02 -0.69 -0.35 0.41 -0.54 5.23 -4.58 1.15 -4.47 
+-0.63 -4.47 -3.04 -2.71 -1.93 0.46 -6.29 1.74 -1 -0.18 -4.06 -1.82 -1.41 -3.84 0.85 -5.08 
+0.63 -1.15 -2.43 -1.93 -0.93 -0.43 0 -1.08 -0.54 -3.7 -3.23 -2.5 -0.24 0.02 -7.04 1.15 
+-0.08 -0.07 -0.24 -0.39 -2 -2.93 -2.34 -3.23 -2.26 -3.37 -2.69 -2.97 -2.58 -3.1 -1.24 -4.52 
+-2.56 -3.23 -4.08 0.59 -3.08 0.93 -3.76 -1.93 0.35 -4.97 -0.52 -0.87 -2.63 -1.87 -0.86 -0.43 
+-6.68 2.13 -1.67 1.06 -5.16 -0.32 -3.84 -1.43 -0.21 -0.07 -3.38 -2.28 -0.18 -0.45 -1.65 -3.76 
+-3.78 -1.87 -3.75 -1.93 -3.91 -1.71 -0.48 0.13 -6.08 1.65 -2.11 0.24 -3.55 0.5 -5.05 0 
+-2.89 -0.43 -1.75 -0.07 -4.47 -0.72 -4.17 -1.08 -4.12 -1.13 -3.3 -2.41 -3.36 -2.34 -5.04 0.33 
+-1.15 0.3 -5.14 2.23 -2.7 0.48 -2.52 0.39 -5.32 1.15 -4.23 -0.61 -0.56 -0.02 -4.84 4.04 
+-1.55 5.23 -3.43 1.32 -0.84 -2.91 3.52 -4.5 -1.52 -2.86 -4.69 0.43 -0.41 0.13 -5.1 2.08 
+-4.55 0.43 -4.08 4.32 -1.54 5.1 -4.91 4.04 -0.15 0.04 -4.77 3.97 -1.41 0.61 -3.56 -0.78 
+-3.91 0.06 -4.34 1.11 -1.32 0.45 -3.37 1.8 -3.19 -1.45 -2.11 2.9 -3.11 4.56 -1.47 4.91 
+-2.2 1.58 -3.45 0.05 -2.52 -2.61 -0.48 -0.83 -2.56 -0.48 0.65 -2.1 -1.56 -3.17 -0.96 -0.17 
+0.35 -1.28 -1.35 -3.99 -0.34 -3.17 -1.17 -2.17 -1.61 -1.71 -3.38 -1.63 -3.46 -1.52 -3.57 -1.17 
+-1.5 -0.7 -2.04 -0.87 -3.34 -3.56 -1.2 -1.19 -2.34 -1.63 -1.65 1.34 -2.62 2.61 p f*
+2 239 204 rG
+941.5 1520.4 -0.16 1.56 2.63 -2.61 1.65 -1.34 2.34 1.63 1.2 1.19 3.34 3.56 2.04 0.87 
+1.5 0.7 3.57 1.17 3.46 1.52 3.38 1.63 1.61 1.71 1.17 2.17 0.34 3.17 1.35 3.99 
+1 -3.54 -0.02 -0.09 0.07 -5.12 -1.21 -4.38 -1.8 -1.21 -1.43 -1.23 -3.73 -0.45 -3.58 -1.31 
+-3.73 -0.61 -3.66 -0.98 -2.5 -2.58 -1 -0.09 0.13 -0.98 -3.67 -2.06 -3.14 2.59 -1.12 1.13 f*
+0 155 255 rG
+941.6 1519.23 -0.11 1.17 1.13 -1.12 3.14 -2.59 3.67 2.06 0.3 -2.34 -3.82 -1.02 -4.23 2.73 
+-0.09 1.11 f*
+255 0 r6
+942.05 1514.2 -0.37 3.93 4.23 -2.73 3.82 1.02 0.22 -1.7 0.65 -5.03 -4.04 -0.3 -0.57 5.05 
+-3.95 -0.24 f*
+255 G
+934.83 653.84 10.05 0 11.3 0.5 11.29 0.7 11.28 0.89 11.26 1.09 11.25 1.28 11.21 1.48 
+11.18 1.67 11.18 1.87 11.11 2.09 11.09 2.25 11.04 2.45 11 2.63 10.96 2.84 10.89 3.04 
+10.85 3.21 10.78 3.41 10.75 3.6 10.65 3.78 10.59 3.97 10.53 4.14 10.46 4.34 10.38 4.52 
+10.3 4.68 10.2 4.89 10.13 5.05 10.03 5.23 9.96 5.4 9.84 5.57 9.74 5.75 9.66 5.92 
+9.55 6.1 9.42 6.25 9.33 6.4 9.2 6.6 9.11 6.72 8.96 6.91 8.86 7.05 8.72 7.21 
+8.62 7.36 8.46 7.51 8.36 7.66 8.2 7.79 8.08 7.95 7.92 8.07 7.79 8.22 7.64 8.36 
+7.5 8.49 7.34 8.61 7.2 8.73 7.03 8.87 6.9 8.99 6.73 9.11 6.58 9.22 6.4 9.33 
+6.25 9.44 6.07 9.57 5.9 9.66 5.75 9.77 5.57 9.85 5.38 9.96 5.23 10.05 5.05 10.13 
+4.86 10.22 4.69 10.31 4.51 10.39 4.34 10.46 4.14 10.55 3.95 10.61 3.8 10.68 3.58 10.74 
+3.41 10.81 3.21 10.87 3.02 10.92 2.84 10.95 2.62 11.03 2.46 11.05 2.25 11.11 2.06 11.13 
+1.87 11.18 1.67 11.21 1.47 11.22 1.28 11.26 1.09 11.28 0.89 11.29 0.7 11.31 0.5 11.33 
+0 10.2 -0.26 -10.2 -0.5 -11.31 -0.7 -11.31 -0.89 -11.31 -1.09 -11.26 -1.28 -11.25 -1.47 -11.24 
+-1.67 -11.2 -1.87 -11.17 -2.06 -11.14 -2.25 -11.09 -2.43 -11.05 -2.64 -11.02 -2.82 -10.96 -3.04 -10.91 
+-3.21 -10.86 -3.39 -10.8 -3.61 -10.74 -3.78 -10.68 -3.95 -10.62 -4.14 -10.52 -4.34 -10.46 -4.51 -10.39 
+-4.69 -10.3 -4.86 -10.22 -5.06 -10.13 -5.21 -10.05 -5.4 -9.94 -5.58 -9.86 -5.73 -9.76 -5.9 -9.66 
+-6.08 -9.54 -6.25 -9.45 -6.4 -9.33 -6.58 -9.23 -6.73 -9.11 -6.87 -8.98 -7.04 -8.86 -7.2 -8.74 
+-7.34 -8.59 -7.5 -8.49 -7.64 -8.35 -7.77 -8.23 -7.95 -8.07 -8.05 -7.95 -8.2 -7.79 -8.36 -7.64 
+-8.47 -7.51 -8.59 -7.36 -8.72 -7.21 -8.86 -7.05 -8.98 -6.87 -9.09 -6.75 -9.2 -6.58 -9.31 -6.4 
+-9.44 -6.27 -9.53 -6.08 -9.66 -5.9 -9.74 -5.75 -9.83 -5.58 -9.94 -5.4 -10.05 -5.23 -10.11 -5.05 
+-10.2 -4.88 -10.31 -4.68 -10.37 -4.52 -10.44 -4.34 -10.52 -4.14 -10.59 -3.97 -10.66 -3.78 -10.74 -3.6 
+-10.77 -3.41 -10.85 -3.21 -10.89 -3.02 -10.96 -2.84 -11 -2.65 -11.02 -2.45 -11.09 -2.26 -11.13 -2.06 
+-11.16 -1.87 -11.18 -1.67 -11.22 -1.48 -11.22 -1.28 -11.26 -1.09 -11.29 -0.89 -11.29 -0.69 -11.28 -0.5 
+-10.05 -0.26 f*
+255 35 0 rG
+943.79 1613.91 -0.8 2.52 1.87 -0.26 1.82 0 1.63 0.52 0.91 -2.3 -1.69 -0.5 -1.84 -0.11 
+-1.89 0.13 f*
+87 0 136 rG
+944.21 1630.25 -0.87 1.93 2.52 0.61 1.25 0.33 1.24 0.34 1.24 0.37 2.56 -4.3 -1.34 -0.39 
+-1.35 -0.37 -1.32 -0.35 -0.04 0 -1.93 0.82 -1.95 1 f*
+255 135 0 rG
+943.82 1533.59 -0.3 0.84 0.2 0.13 0.24 -0.11 -0.13 -0.87 f*
+944.08 1613 -0.29 0.91 1.89 -0.13 1.84 0.11 1.69 0.5 0.18 -0.43 -1.79 -0.35 -1.75 -0.32 
+-1.78 -0.29 f*
+189 0 54 rG
+945.31 1627.75 -1.11 2.5 1.95 -1 1.93 -0.82 0.04 0 -0.04 0 2.2 -4.41 1.49 -3.04 
+-1.45 -0.67 0 -1.23 -1.11 -0.24 -0.78 -0.18 -1.84 4.5 -1.58 4.53 0.3 0.07 f*
+255 G
+955.64 1951.3 -10.92 0 0.15 0 11.3 -0.5 11.29 -0.7 11.28 -0.89 11.26 -1.08 11.25 -1.28 
+11.21 -1.48 11.18 -1.67 11.18 -1.87 11.11 -2.06 11.09 -2.25 11.04 -2.46 11 -2.64 10.96 -2.84 
+10.89 -3.02 10.85 -3.23 10.78 -3.41 10.75 -3.58 10.65 -3.8 10.59 -3.95 10.53 -4.16 10.46 -4.34 
+10.38 -4.52 10.3 -4.69 10.2 -4.88 10.13 -5.05 10.03 -5.23 9.96 -5.4 9.84 -5.58 9.74 -5.75 
+9.66 -5.92 9.55 -6.08 9.42 -6.27 9.33 -6.4 9.2 -6.58 9.11 -6.75 8.96 -6.9 8.86 -7.05 
+8.72 -7.21 8.62 -7.36 8.46 -7.51 8.36 -7.64 8.2 -7.81 8.08 -7.95 7.92 -8.07 7.79 -8.23 
+7.64 -8.35 7.5 -8.49 7.34 -8.62 7.2 -8.75 7.03 -8.86 6.9 -8.98 6.73 -9.11 6.58 -9.23 
+6.4 -9.33 6.25 -9.44 6.07 -9.57 5.9 -9.66 5.75 -9.77 5.57 -9.86 5.38 -9.96 5.23 -10.05 
+5.05 -10.13 4.86 -10.22 4.69 -10.31 4.51 -10.39 4.34 -10.46 4.14 -10.55 3.95 -10.61 3.8 -10.68 
+3.58 -10.74 3.41 -10.81 3.21 -10.87 3.02 -10.92 2.84 -10.96 2.62 -11.02 2.46 -11.05 2.25 -11.11 
+2.06 -11.13 1.87 -11.18 1.67 -11.21 1.47 -11.22 1.28 -11.26 1.09 -11.27 0.89 -11.3 0.7 -11.31 
+0.5 -11.33 0 -0.3 0 32.47 -2.78 26.58 -4 27.13 -5.16 27.13 -6.38 27.11 -5.9 21.36 
+-1.74 5.81 -8.91 27.11 -10.25 27.11 -5.64 13.52 -6.05 13.63 -13.18 27.11 -7.31 13.78 -7.49 13.37 
+-8.27 13.56 -8.25 13.54 -2.54 3.91 -7.96 11.61 -7.95 11.63 -10.61 14.37 -9.96 12.76 -16.58 19.92 
+-6.36 7.23 -20.18 21.57 -5.5 5.55 -10.52 10.02 -10.53 10.05 -7.83 7.05 -18.71 15.89 -7.05 5.62 
+-7.05 5.6 -12.43 9.38 -12.7 8.87 -12.67 8.88 -1.2 0.78 -13.25 8.31 -13.24 8.31 -16.97 9.72 
+-9.59 5.2 -13.26 6.69 -13.26 6.66 -9.39 4.29 -9.4 4.28 -7.77 3.32 -26.52 10.51 -13.25 4.58 
+-13.26 4.6 -13.32 4.13 -13.24 3.79 -13.29 3.37 -13.26 3.36 -13.26 2.75 -13.28 2.78 -13.26 2.2 
+-13.26 2.21 -13.28 1.63 -13.26 1.65 -8.14 0.65 -4.96 0.41 -19.86 0 f*
+944.73 653.84 0.15 0 11.3 0.5 11.29 0.7 11.28 0.89 11.26 1.09 11.25 1.28 11.21 1.48 
+11.18 1.67 11.18 1.87 11.11 2.09 11.09 2.25 11.04 2.45 11 2.63 10.96 2.84 10.89 3.04 
+10.85 3.21 10.78 3.41 10.75 3.6 10.65 3.78 10.59 3.97 10.53 4.14 10.46 4.34 10.38 4.52 
+10.3 4.68 10.2 4.89 10.13 5.05 10.03 5.23 9.96 5.4 9.84 5.57 9.74 5.75 9.66 5.92 
+9.55 6.1 9.42 6.25 9.33 6.4 9.2 6.6 9.11 6.72 8.96 6.91 8.86 7.05 8.72 7.21 
+8.62 7.36 8.46 7.51 8.36 7.66 8.2 7.79 8.08 7.95 7.92 8.07 7.79 8.22 7.64 8.36 
+7.5 8.49 7.34 8.61 7.2 8.73 7.03 8.87 6.9 8.99 6.73 9.11 6.58 9.22 6.4 9.33 
+6.25 9.44 6.07 9.57 5.9 9.66 5.75 9.77 5.57 9.85 5.38 9.96 5.23 10.05 5.05 10.13 
+4.86 10.22 4.69 10.31 4.51 10.39 4.34 10.46 4.14 10.55 3.95 10.61 3.8 10.68 3.58 10.74 
+3.41 10.81 3.21 10.87 3.02 10.92 2.84 10.95 2.62 11.03 2.46 11.05 2.25 11.11 2.06 11.13 
+1.87 11.18 1.67 11.21 1.47 11.22 1.28 11.26 1.09 11.28 0.89 11.29 0.7 11.31 0.5 11.33 
+0 0.3 0 -32.46 -2.78 -26.59 -4 -27.12 -5.16 -27.12 -6.38 -27.11 -5.9 -21.36 -1.74 -5.82 
+-8.91 -27.11 -10.25 -27.1 -5.64 -13.52 -6.05 -13.63 -13.18 -27.11 -7.31 -13.78 -7.49 -13.37 -8.27 -13.56 
+-8.27 -13.54 -2.52 -3.91 -7.96 -11.61 -7.95 -11.63 -10.61 -14.37 -9.96 -12.76 -16.58 -19.92 -6.36 -7.23 
+-20.18 -21.57 -5.5 -5.55 -10.52 -10.02 -10.53 -10.05 -7.83 -7.04 -9.36 -7.96 -9.35 -7.95 -7.05 -5.6 
+-7.05 -5.62 -12.43 -9.38 -25.39 -17.75 -1.17 -0.78 -13.25 -8.31 -13.24 -8.31 -16.97 -9.72 -9.59 -5.21 
+-13.26 -6.68 -13.26 -6.66 -9.39 -4.29 -9.4 -4.28 -7.77 -3.32 -26.52 -10.5 -13.25 -4.58 -13.26 -4.61 
+-13.32 -4.12 -13.24 -3.79 -13.29 -3.37 -13.26 -3.36 -13.26 -2.75 -13.28 -2.78 -13.26 -2.2 -13.26 -2.21 
+-13.28 -1.63 -13.26 -1.65 -8.14 -0.65 -4.94 -0.41 -30.8 0 f*
+0 155 255 rG
+945.98 1543.95 -0.11 0.67 1.02 0.09 -0.91 -0.76 f*
+2 239 204 rG
+946.16 1542.75 -0.18 1.2 0.91 0.76 1.76 0.15 -2.5 -2.11 f*
+7 193 59 rG
+946.31 1541.58 -0.15 1.17 2.5 2.11 0.58 0.04 -0.11 0.67 2.58 4.36 0.09 0.24 0.83 5.08 
+1.25 0.16 -0.54 2.54 0.26 2.41 0.89 0.13 -0.5 -5.06 -0.07 -0.26 -0.96 -4.88 -0.87 -2.41 
+-1.71 -2.86 -0.91 -1.57 -3.16 -1.87 f*
+110 210 9 rG
+946.48 1540.41 -0.17 1.17 3.16 1.87 0.91 1.57 1.71 2.86 0.87 2.41 0.96 4.88 0.07 0.26 
+0.5 5.06 0.89 0.11 -0.21 -5.04 -0.63 -3.19 -0.39 -1.93 -1.67 -4.62 -0.37 -0.63 -2.25 -3.95 
+-3.37 -0.83 f*
+0 155 255 rG
+948.07 1447.59 -0.26 5.21 3.93 4.66 4.82 1.04 0.11 0.05 4.56 2.13 0.43 -0.05 0 -3.47 
+-4.84 -1.11 -4.82 -0.02 -0.13 0 -2.65 -3.17 1.85 -5.12 1.65 -1.2 1.5 1.39 3.17 2.82 
+5.19 -1.43 4.77 2.3 2.3 2.75 -2.89 1.54 -5.1 1.24 0 3.47 4.55 -0.63 4.86 0.35 
+2.37 -0.32 2.73 -4.97 -3.73 -3.78 -1.71 -2.04 -2.79 -2.04 -5 -1 -4.77 2 -0.54 0.17 
+-0.26 -0.24 -4.43 -4.08 -4.86 3.54 f*
+255 0 r6
+948.48 1549.54 -0.05 0.29 0.22 0.02 -0.17 -0.31 f*
+0 155 255 rG
+948.8 1547.57 -0.32 1.98 0.17 0.31 1.58 0.15 -1.43 -2.43 f*
+2 239 204 rG
+949.13 1545.57 -0.33 2 1.43 2.43 1.43 0.15 -0.65 3.5 0.21 1.46 1.39 0.15 -0.83 -5.08 
+-0.09 -0.24 -2.58 -4.36 f*
+255 203 0 rG
+949.59 1762.52 -0.57 0.07 2.02 1.04 1.47 -1.54 -1.97 0.3 -0.95 0.13 f*
+2 239 204 rG
+951.06 1447.75 -1.85 5.12 2.65 3.17 0.13 0 0 -1.43 -1.39 -1.65 1.84 -3.49 4.67 3.66 
+5.04 -0.21 1.41 0.93 -1.59 0.52 -4.91 -0.78 -4.94 1 -0.13 0.02 0 1.43 4.82 0.02 
+4.84 1.11 5.1 -1.24 2.89 -1.54 -2.3 -2.75 -4.77 -2.3 -5.19 1.43 -3.17 -2.82 -1.5 -1.39 
+-1.65 1.2 f*
+255 G
+950.3 1519.81 -1 -0.09 0.13 -0.98 0.3 -2.34 0.22 -1.7 0.65 -5.03 4.02 0.32 4.02 0.37 
+-0.83 5.04 -0.82 5.02 -3.84 -0.37 -0.41 -0.02 -2.43 -0.21 f*
+0 155 255 rG
+952.73 1520.03 -2.43 -0.21 2.5 2.58 3.66 0.98 3.73 0.61 3.58 1.31 3.73 0.45 1.43 1.23 
+1.8 1.21 1.21 4.38 -0.07 5.13 0.02 0.09 0.02 -0.07 1.37 -4.93 3.56 0.59 3.56 0.65 
+3.53 0.7 -1.65 4.88 -0.97 2.84 1.93 -2.65 2.73 -4.67 1.96 -1.04 4.12 -0.83 3.87 -0.02 
+1.84 -0.76 1.61 -4.95 3.23 -4.58 2.82 -4.69 0.61 -0.67 3.8 -3.64 2.95 -4.69 1.11 -0.8 
+5.45 -2.64 0.48 -0.21 4.52 -1.02 5.18 -1.52 0.5 -0.16 4.78 -1.41 4.46 -1.46 0.93 -0.24 
+5.79 -2.3 2.09 -0.32 2.78 0.11 4.62 0.32 4.32 0.98 4.19 1.26 5.21 -0.61 1.65 0.39 
+2.64 0.73 4.39 0.93 3.96 1.7 3.67 2.13 2.67 2.11 0.65 0.54 3.64 2.05 2.91 0.99 
+1.17 0.43 4.19 1.24 5.01 0.11 4.1 -0.5 1.59 -0.24 6.03 -2.09 0.98 -0.37 5.93 -0.89 
+2.47 0.07 2.82 -0.02 3.63 2.37 3.78 2.08 2.78 3.34 2.58 2.8 0.28 0.35 0.18 -0.02 
+5.27 0.09 4.86 0.04 0.61 0.02 1.5 1.65 1.46 1.43 0.73 0.37 3.59 1.09 3.99 1.84 
+4.05 1.82 3.82 0.76 0.89 0.35 0.58 1.08 1.26 3.08 -0.41 6.36 -0.07 0.34 1.13 4.32 
+3.97 1.83 1.23 1.08 2.02 1.43 2.76 3 3.45 2.34 4.64 -0.55 -0.11 -3.58 -2.41 -3.38 
+1.66 -4.69 2.96 -5.66 0.13 -0.61 -0.74 -4.88 -1.32 -4.9 -3.1 -3.06 -3.91 -2.22 -2.16 -4.16 
+-3.11 -3.17 0.02 -1.13 3.8 -4.93 4.58 -4.08 -1.43 6.86 -0.43 2.45 1.97 -1.04 6.73 -2.25 
+0.02 -0.02 0 -0.02 1.43 -7.16 -0.54 -1.11 -2.93 -3.78 -1.32 -5.97 -3.43 -3.32 -0.02 -0.78 
+1.09 -0.66 6.51 -1.23 0.28 0.02 7.18 -1.98 1.28 -1.45 2.71 -3.32 2.93 -0.83 0 -4.77 
+-4.62 -1.04 -4.12 -2.78 -3.95 -3.06 -3.69 -3.5 -0.26 -1.82 2.34 -1.48 4.9 1.7 4.32 2.61 
+3.41 3.95 1.67 5.43 0 4.77 4.14 -1.17 0.41 0.11 4.67 1.26 5.14 1.26 2.25 -0.37 
+4.93 -1.2 2.23 -0.83 5.6 -3.41 1.52 -0.37 6.47 -0.8 0.24 -0.06 6.71 -0.83 0.89 -0.32 
+5.54 -0.09 4.45 1.17 1.02 -0.21 5.38 1.06 3.12 0.09 3.32 -0.52 4.23 2.71 3.19 4.14 
+3.64 3.45 2.34 5.14 2.73 4.54 2.63 4.62 2.5 4.68 3.08 3.87 -0.2 6.46 0.13 1.2 
+0.72 0.39 4.36 1 3.32 3.45 2.19 1.37 2.93 -0.05 1.98 4.99 -1.13 4.08 -3.84 7.75 
+-5.05 4.49 -0.3 2.04 1.19 0.59 4.3 0.34 -2.63 5.05 -4.58 6.6 -3.25 5.36 -1.17 2.3 
+-4.64 7.33 -5.36 4.43 -5.46 3.93 -0.59 0.2 -4.95 1.56 -0.39 -0.04 -6.04 -0.35 -0.35 -0.04 
+-3.32 3.04 -1.99 1.82 -0.17 -0.08 -1.85 -4.06 -5.32 -0.07 -1.61 0.07 -4.82 0.26 -0.78 -0.62 
+-0.41 -0.33 -5.36 -1.17 -1.04 -4.62 -1.28 -4.47 0.09 -5.7 1.3 -4.38 4.43 -0.61 2.38 3.71 
+1.91 1.39 2.25 0.76 4.06 1.67 0 -3.76 -1.15 -0.45 -3.67 -2.62 -0.67 -5.32 1.15 -2.28 
+1.37 -0.04 4.41 1.95 0.02 5.99 -1.46 2.78 0 3.76 0.46 0.19 -0.79 6.41 3.56 -0.41 
+1.91 -4.23 -2.17 -3.93 2.63 -5 -0.26 -3.1 -1.56 -4.64 -2.74 -3.56 -0.11 -0.04 -6.71 0.35 
+-0.24 -0.07 -6.42 1.52 -0.98 -0.35 -5.17 -1.2 -1.21 -4.94 0.8 -5.54 -0.11 -1.39 -1.28 -5.1 
+-0.95 -5.56 P
+0.41 -2.62 0.63 -5.27 0.02 -4.62 -0.39 -1.98 -3.17 -3.47 -2.84 -3.93 -3.62 -3.02 -0.63 -0.15 
+-5.47 3.45 -2.13 -0.72 -6.29 0.26 -0.82 -0.04 -5.34 3.6 0.02 3.71 0.2 5.75 -4.23 4.82 
+0.05 0.7 0.71 5.7 2 4.23 0.97 3.95 -0.67 1.89 2.15 3.93 2.73 3.32 3.19 2.89 
+1.36 4.51 -1.58 6.25 -1.43 -0.17 -3.39 -0.41 -3.95 -2.09 -1.71 -4.04 -1.13 -4.66 -1.71 -4.21 
+-3.15 1.78 -5.2 3.76 -2.59 4.6 2.76 3.02 2.19 3.5 2.63 2.97 0 -6.82 -2.3 -1.87 
+-1.8 -3.95 0.07 -0.13 0.3 -0.21 4.45 1.56 -0.71 4.6 0 6.82 0.04 0.08 0.5 4.84 
+2.32 3.27 0.54 4.25 0.02 0.41 0.15 -0.06 6.05 -2.3 1.2 0.41 0 -9.21 0.54 -2.04 
+1 0.74 -0.02 1.11 -1.52 0.2 0 9.21 1.13 0.39 0.7 4.55 0 1.5 0.34 3.28 
+0.21 4.77 3.02 2.73 0.37 0.21 5.82 0.33 1.17 4.05 -1.37 5.77 -1.35 5.62 -0.26 0.7 
+-1.47 5.05 -0.85 5.06 0.66 4.14 -0.79 4.9 -0.48 4.69 0.48 4.12 -1.19 4.97 2.25 3.19 
+2.8 1.06 3.75 0.04 2.13 -0.48 6.14 -3.58 0.54 -0.13 0 -17.77 -0.46 -0.76 0.31 -2.54 
+5.34 -0.89 -5.19 4.19 0 17.77 5.38 -1.32 3.36 0.83 -0.68 4.99 -3.04 6.16 -0.43 4.75 
+-1.41 5.21 -2.25 3.21 -6.77 4.58 -2.64 1.87 -4.56 3.67 -7.25 5.2 -0.11 0.11 -5.34 6.09 
+-3.78 3.52 -7.03 4.09 4.21 2.38 1.56 -0.04 2.71 2.66 0.41 0.52 5.32 -1.15 2.8 -1.43 
+4.6 -2.82 5.73 -0.8 0.13 0 5.82 -1.32 5.6 -0.65 1.06 1.7 -2.73 5.58 -4.1 4.55 
+-2.84 2.43 -5.96 4.05 -7.95 4.75 6.27 -1.88 4.6 -1.45 2.24 -1.3 2.71 -4.84 4.45 -1.59 
+4.25 -6.14 2.52 -5.54 -1.11 -4.11 -2.15 0.89 1.17 -2.82 -2 -1.35 -1.61 -3.04 -0.93 -0.39 
+0.82 -4.82 3.61 -6.07 0.48 -0.5 2.23 -5.28 1.84 -5.45 2.87 -6.05 3.55 -4.55 2.08 -3.15 
+5.02 -7.24 2.02 -1.59 4.36 -5.88 3.34 -3.8 -3.08 -0.08 -5.84 1.87 -0.95 -0.55 -4.47 -2.15 
+-0.28 -0.24 -5.91 1.11 -1.97 -0.71 -3.75 -2.5 -0.29 -4.6 -0.08 -0.04 -5.27 -1.39 -0.26 -4.62 
+-1.28 -1.91 -0.93 -1.45 -1.69 -3.71 -1.35 -3.97 1.15 -5.68 0.11 -0.22 5.16 -5.41 3.55 -5.92 
+-5.12 0.32 -2.19 -0.02 1.63 -1.8 3.84 -7.7 -6.29 0.63 -4.75 2.78 -0.89 0.48 -6.44 1.13 
+-1.26 -0.18 -1.72 -3.82 -0.99 -4.4 -0.13 -1.15 1.82 -5.58 1.52 -2.23 2.45 -6.71 0.26 -1.82 
+0.02 -4.19 -1.73 -4.25 -3.22 -2.89 -2.38 -3.71 -1.76 -4.38 -1.91 -4.32 -1.43 -4.86 -0.02 -0.26 
+3.08 -6.18 0.32 -3.95 -0.96 -5.86 0 -0.28 0.48 -0.3 5.84 -2.26 2.21 -0.07 4.34 2.09 
+3.56 -0.37 4.49 -1.93 2.37 4.43 3.51 3.06 0.74 6.1 -0.21 1.93 -0.91 5.99 1.65 4.8 
+0.71 2.86 -0.7 3.45 -0.21 6.38 0.28 1.85 -0.74 4.6 3.26 2.91 1.43 4.56 -1.41 6.92 
+0.06 1.67 -3.79 6.92 3.71 2.43 -0.96 6.07 5.77 -1.54 2.23 0.7 2.34 3.54 3.47 1.95 
+1.02 -0.04 5.42 0.52 0.43 0.37 4.02 2.32 2.32 0.15 5.75 -2.78 4 -1.32 1.97 -0.04 
+5.47 -4.28 5.41 -4.51 5.47 -4.04 1.06 -3.64 3.3 -5.47 3.61 -7.2 0.71 -1.17 4.76 -6.08 
+4.43 -6.92 p
+1.54 -4.17 -0.89 -5.95 1.54 -2.95 2.36 -8.71 -2.58 -4.27 -5.12 0.13 -0.8 -0.5 -2.95 -3.9 
+-4.23 -2.39 -0.74 -6.73 -2.65 -4.47 -1.86 -5.53 -0.52 -1.15 -1.56 -4.25 -3.28 -3.86 -2.28 -5.32 
+-2.61 -0.07 -2.36 -1.58 -3.43 -3.82 -3.82 -3.32 -5.43 0.85 -1.26 -0.02 -4.6 -2.23 -4.17 0.91 
+-2.19 -0.57 -5.23 -1.3 -2.75 0.65 -4.05 0.35 -3.8 0.93 -3.23 0.39 -4.45 1.11 -4.95 4.02 
+-0.39 0.15 -6.96 1.67 -0.37 0.07 -4.69 -1.89 -4.25 -2.56 -1.5 -4.69 -0.26 -1.56 -3.39 -4 
+-2.61 -5.32 -3.78 -3.58 -5.73 -0.48 -2.34 1.79 -5.18 3.84 0.71 5.23 3.93 3.13 3.93 3.04 
+3.58 3.49 0.57 1.91 -3.17 5.4 -3.19 0.89 -5.38 -0.78 -1 0.26 -5.41 3.63 0.15 4.69 
+3.28 3.47 0.71 3.04 -4.1 4.66 -4.38 4.4 -4.21 4.56 -0.15 5.47 3.14 3.06 2.71 3.54 
+3.52 2.59 2.82 3.32 2.08 4.04 0.13 0.87 -1.34 6.38 -0.61 1.14 -2 1.4 -1.04 -4.84 
+-0.09 -0.26 -1.63 -4.04 -2.73 -0.76 -2.15 -0.28 -2.36 -3.69 -2.37 -2.97 -0.3 -0.43 -2.84 -3.26 
+-2.36 -3.86 -3.13 -3.06 -4.25 -1.73 -1.52 -0.24 -3.21 -0.87 -3.8 -2.28 -3.64 -2.45 -6.08 0.67 
+-0.04 0 -4.93 -0.72 -2.82 -3.54 -0.71 -1.39 -0.8 -4.1 -4.78 -0.98 -1.54 0.71 -5.69 3.5 
+-1.37 0.39 -2.8 3.95 -2.41 -1.39 -2.63 1.05 -2.11 2.97 -3.38 -1.91 -0.54 0.09 -3.14 4.51 
+-3.73 -2.04 -3.76 -1.97 -3.82 -1.93 0.74 -1.15 -3.26 -2.91 -3.17 -3.12 -3.55 -2.61 -2.76 -1.93 
+-0.69 -0.91 -3.63 -2.62 -4.01 -2 -4.75 -0.59 -2.41 0 -2.55 -0.07 -4.73 -0.54 -4.69 -0.61 
+-4.91 -0.06 -3.02 -0.2 -1.75 -0.13 -0.29 0.09 -4.99 0.87 -4.97 0.34 -4.14 0.35 -0.82 0.04 
+-0.33 -0.35 -3.21 -2.9 -4.64 -0.46 -2.19 0.84 -2.43 4.88 -2.45 0.93 -0.37 0.09 -4.73 1.3 
+-1.82 1 -4.11 3.12 -1.61 1.04 -4.14 2.95 -1.32 1.28 -1.72 4.97 -1.25 5.05 -0.52 3.75 
+-0.07 1.43 0.91 5.49 0.83 0.17 -1.76 4.93 -1.8 4.91 -3.58 -0.79 -2 -0.41 -1.75 0.04 
+-4.32 1.54 -3.99 0.7 -0.13 -4.19 -1.67 -3 -1.28 -2.65 -1.21 -2.97 -2.41 -2.71 -0.63 -1.43 
+-4.06 0.28 -0.41 0.48 -4.12 2.64 -0.07 0.04 -3.02 1.61 -1.2 0.11 -3.84 -0.26 -0.37 -0.35 p f*
+255 35 0 rG
+950.84 1619.21 -0.52 -0.13 0 1.23 1.45 0.67 0.67 -1.39 -1.61 -0.39 f*
+7 193 59 rG
+952.45 1449.46 -1.84 3.49 1.39 1.65 0.13 -0.02 0 -1.43 -0.11 -0.13 0.16 -0.26 0.39 0.31 
+-0.43 0.08 0 1.43 4.94 -1 4.91 0.78 1.59 -0.52 -1.41 -0.93 -5.04 0.21 -4.67 -3.66 f*
+0 155 255 rG
+951.02 1553.64 -0.26 1.41 0.48 0.05 -0.21 -1.46 f*
+110 210 9 rG
+952.17 1452.75 -0.16 0.26 0.11 0.13 0.43 -0.08 -0.39 -0.31 f*
+2 239 204 rG
+953.34 1557.95 -0.5 2.32 0.76 0.09 -0.26 -2.41 f*
+7 193 59 rG
+955.17 1563.61 -0.46 1.89 0.97 0.13 -0.52 -2.02 f*
+2 239 204 rG
+955.88 1572.39 -0.85 3.11 2.15 0.32 -1.3 -3.43 f*
+110 210 9 rG
+955.62 1561.7 -0.45 1.91 0.52 2.02 1 0.16 -1.06 -4.08 f*
+255 0 r6
+957.4 662.71 -2.15 0.74 10.89 0.89 10.87 0.87 10.89 0.87 -3.86 0.52 10.09 1.28 10.07 1.28 
+10.07 1.26 -5.21 0.22 -4.79 0.36 13.21 2.11 13.22 2.09 12.85 2.63 12.82 2.63 -7.05 -0.43 
+11.83 2.82 11.83 2.8 -7.66 -0.71 10.89 2.91 10.92 2.91 -8.14 -1 -7.64 -0.72 19.27 5.43 
+-7.98 -0.93 8.9 2.71 8.92 2.71 8.57 2.93 8.55 2.93 9.36 1.91 9.85 2.28 -9.2 -3.45 
+-9.22 -3.43 9.72 2.11 -10 -3.5 -10.03 -3.52 9.53 1.91 -10.92 -3.54 -10.89 -3.54 9.22 1.65 
+-11.89 -3.52 -11.92 -3.51 8.81 1.32 -13.02 -3.43 -13 -3.41 -9 -1.95 -9.01 -1.93 -9 -1.95 
+6.77 0.32 7.36 0.54 8.01 0.84 8.79 1.15 9.66 1.54 -12.33 -2.78 -12.34 -2.75 -12.33 -2.78 
+-7.55 -0.59 -6.82 -0.32 -11.35 -1.61 -11.32 -1.61 -11.35 -1.61 -11.57 -0.97 -11.59 -1 -11.59 -0.98 f*
+7 193 59 rG
+956.34 1570.71 -0.46 1.69 1.3 3.43 0.54 0.09 1.04 0.17 -0.7 -1.39 -1.19 -3.91 -0.26 -1.2 
+-0.28 1.11 f*
+255 203 0 rG
+958.05 1551.26 -1.69 4.45 0.02 2.74 0.48 2.34 0.87 4.69 0.09 0.46 0.98 5.16 0.17 0.56 
+1.17 1.3 0 -5.32 -0.15 -1.39 1.02 -1.65 1.39 2.04 -2.26 1 0 5.32 0.98 1.11 
+0.46 2.5 1.48 0.28 -0.63 1.84 2.05 2 1.15 1.41 0 -4.53 -1.5 -0.52 1.74 -0.11 
+0.43 0.54 -0.67 0.09 0 4.53 0.32 0.39 0.54 0.11 2.49 0.57 2.5 0.61 -0.41 0.91 
+2.23 1.07 2.06 1.39 2.13 1.17 3.08 -0.59 1.72 1.87 1.37 -2.37 1.04 0.33 -0.18 -1.86 
+-2.84 0 -1.78 -2 -1.82 -2.04 -2.41 -0.91 -0.24 -1.15 0 -4.79 -0.12 -0.41 -2 -1.61 
+-2.23 -1.93 -2.47 -1.45 -0.54 -1.71 -0.55 -4.11 -0.45 -1.15 -1.85 -1.47 -2.58 -2.06 -1.11 -2.46 
+-0.78 -2.58 -2.67 -2.58 f*
+110 210 9 rG
+957.14 1567.67 -0.52 1.93 0.26 1.2 1.19 3.91 0.7 1.39 1.3 0.22 -1.54 -3.12 -0.7 -2.23 
+-0.69 -3.28 f*
+255 203 0 rG
+957.77 1787.39 -0.75 -3.51 2.49 -0.67 4.02 -1.79 4.49 -0.75 4.62 0.15 0.52 0.02 0.7 0.04 
+5.2 0.97 4.19 -1.56 4.99 -0.54 3.45 0.42 2.35 -0.31 5.03 -0.84 4.34 -1.54 4.12 -1.73 
+6.77 0.7 0.91 0.2 5.77 1.19 -2.62 1.06 -4.58 1.79 -3.47 -2.72 -4.49 1.61 -4.55 1.55 
+3.12 2.86 -0.56 0.18 -6.36 -0.79 -1.2 3.1 2.82 2.95 3.41 2.73 4.25 0.09 6.04 -1.02 
+3.07 0.37 6.32 0.96 1.26 0.15 6.23 -0.69 5.82 -0.16 4.45 0.91 1.8 0.35 3.62 2.34 
+4.04 2.11 -0.39 0.17 0.7 0.34 -1.41 3.75 -0.82 0.85 -0.52 -0.28 -1.62 0.65 -5.64 1.2 
+-2.65 -1.61 -4.12 1.54 -3.75 -0.46 -1.73 -1.24 -4.04 1.41 -2.49 0.3 -2.67 -2.12 0.26 -0.2 
+-2.84 -2.71 -2.6 -1.39 1.21 1.82 -5.09 1.58 -2.96 -2.75 -2.91 -2.8 -2.89 -2.87 -5.3 1.48 
+-2.64 -2.95 -5.16 1.3 -5.23 1.21 -5.25 1.11 -2.06 -3.16 -0.32 0.04 0 -0.57 -1.02 -2.84 
+-0.87 -0.2 -0.26 0.41 2.15 2.63 0 0.57 -4.8 0.91 -5.16 0.87 1.3 2.56 -3.66 1.32 
+-1.37 0.2 -1.04 -2.37 3.54 -1.52 0.55 -1.63 1.34 -2.25 -3.34 -1.84 -4 -0.63 f*
+255 0 r6
+960.18 1422.05 -0.5 5.25 5.34 0.39 0.57 -5.25 1.09 -10.5 -5.54 -0.39 -0.48 5.27 -0.48 5.23 f*
+255 135 0 rG
+961 1564.61 -1.02 1.65 0.15 1.39 2.26 -1 -1.39 -2.04 f*
+110 210 9 rG
+961.74 1580.62 -0.32 0.96 1.17 0.21 -0.85 -1.17 f*
+0 255 r6
+962.41 1578.69 -0.67 1.93 0.85 1.17 1.34 0.28 2 0.41 -0.32 -0.39 -1.15 -1.41 -2.05 -2 f*
+255 135 0 rG
+965.84 1576.93 -1.74 0.11 1.5 0.52 0.67 -0.09 -0.43 -0.54 f*
+0 255 r6
+962.09 1797.44 3.66 -1.32 0.37 0.71 -4.03 0.61 f*
+255 G
+971.72 1506.75 -4.05 -0.52 0.97 -5.03 0.98 -5.08 4.25 0.54 4.23 0.57 -1.15 5.05 4.14 0.61 
+4.12 0.67 4.1 0.69 4.08 0.76 -1.52 4.99 -1.54 4.97 3.88 0.78 -1.65 4.95 2.95 0.63 
+0.83 0.17 -1.76 4.93 -1.8 4.91 -3.58 -0.79 -2 -0.41 -1.62 -0.33 -3.62 -0.7 -3.64 -0.67 
+1.41 -4.95 -3.76 -0.61 1.3 -4.99 1.3 -4.97 -3.97 -0.61 1.18 -5.02 -4.06 -0.56 f*
+87 0 136 rG
+973.74 1646.5 -4.99 3.13 0.74 0.65 0.74 0.67 0.7 0.67 5.23 -2.91 -0.78 -0.74 -0.8 -0.74 
+-0.83 -0.74 f*
+110 210 9 rG
+969.9 1587.21 -0.52 1.18 1.52 0.37 -1 -1.55 f*
+0 255 r6
+971.05 1584.68 -1.15 2.54 1 1.55 0.85 0.24 2.34 0.63 2.34 0.65 4.6 1.43 1.24 -2.13 
+-1.72 -1.87 -3.08 0.59 -2.13 -1.17 -2.06 -1.39 -2.23 -1.07 f*
+255 G
+971.53 1542.77 -0.96 -0.17 0.35 -1.28 1 -3.54 0.02 -0.07 1.37 -4.93 3.56 0.59 3.56 0.65 
+3.53 0.7 -1.65 4.88 -0.97 2.84 -0.7 2.02 -1.7 4.84 -3.25 -0.65 -0.7 -0.13 -2.56 -0.48 
+0.65 -2.1 0.85 -2.76 -2.41 -0.41 f*
+255 203 0 rG
+972.63 1766.25 -1.54 -0.07 0.58 -1.25 4.23 -0.16 0.7 0.02 -0.52 0.21 -3.45 1.24 f*
+2 239 204 rG
+973.94 1543.18 -2.41 -0.41 1.56 3.17 0.85 -2.76 f*
+255 203 0 rG
+974.29 1757.4 -2.43 0.65 3.43 3.11 3.77 2.06 3.87 -0.21 -0.41 4.14 3.49 2.95 5.6 1.61 
+1.74 0.11 4.86 0.98 3.06 0.39 3.95 0.63 2.71 1 6.33 1.13 1.15 -0.29 0 -16.43 
+-0.56 -0.07 -4.62 -2.3 -0.89 -1.54 -0.35 -2.41 -4.67 -2.34 -0.56 -2.48 4.77 0.41 4.14 2.61 
+-0.89 2.15 0.63 2.56 2.87 3.14 0.13 0.26 0 16.43 2.37 -0.61 1.63 -0.33 5.6 1.41 
+-1.24 1.5 2.93 1.88 1.11 0.7 6.32 0.17 1.19 -0.54 4.64 -2.19 1.87 -0.91 0.8 -2.28 
+-2.43 -1.21 4.26 -2.22 0.04 -0.02 4.04 -2.38 3.3 -2.69 4.19 -2.35 4.38 -2.32 3.08 -2.76 
+4.06 -2.47 1.91 -0.63 6.6 -0.83 2.06 -0.41 7.4 -0.41 0.76 -0.63 3.58 -2.99 5.6 0.89 
+1.23 -1.09 -2.8 -2.73 3.25 -3.08 -0.11 -0.46 -1.46 0.26 -2.12 0.04 -3.34 0.07 -2.34 -1.18 
+-1.89 -1.02 -2.08 0.41 -5.21 0.18 -5.78 -0.91 -1.41 -1.45 0.8 -2.97 -0.56 -0.67 -2.85 -2.96 
+1.37 -2.12 0.24 -0.52 1.09 -2.71 2.32 -2.54 2.06 -2.56 2.15 -2.56 1.65 -2.63 0.69 -2.65 
+0.54 -2.64 -0.39 -1.61 -0.13 -1.05 -1.74 -2.6 -0.02 -2.52 2.87 -2.52 3.11 -2.6 1.82 -2.61 
+2.6 -1.56 2.59 -1.35 5.25 -2.71 0.78 -0.48 2.26 -2.91 0.3 -2.67 0.28 -2.67 -0.54 -0.79 
+0.07 -1.73 0.61 -2.72 0.66 -2.73 0.49 -2.71 0.26 -0.35 6.63 -3.19 1.49 -1.08 0.48 -2.87 
+1.02 -3.04 0.11 -2.8 -2.19 -2.1 1.13 -3.13 3.45 -3.99 -0.17 -2.82 -0.29 -2.78 -1.26 -2.41 
+-0.91 -2.54 -0.26 -2.82 -3.51 -1.41 -2.39 -0.74 -1.22 -0.58 -1.62 -2.17 -1.85 -2.04 -1.62 -2.13 
+-0.91 -2.49 -0.56 -2.67 0.41 -3.25 -0.93 -2.56 -3.34 -1.2 -2.21 -1.8 -2.3 -1.74 -1.7 -2.11 
+-2.54 -0.89 -0.82 -0.15 0.08 -0.8 0 -2.45 -1.99 -0.11 -5.51 1.91 -1.05 -2.45 -1.56 0.52 
+-4.43 0.45 -3.23 0.18 -2.21 0.52 -2.04 -1.64 -2.19 -1.52 -1.67 -1.91 0.35 -3.05 0.13 -0.59 
+1.32 -4.51 -5.7 1.45 -0.29 0.13 -6.32 1.99 -0.24 -0.12 -2.3 -1.05 -2.34 -1.32 -3.41 -0.33 
+-3.58 -0.13 -2.19 -1.39 -1.76 -1.82 -2.11 0.67 0.89 0.54 -4.06 4.06 -4.11 4.02 2 1.3 
+1.95 1.32 0.74 0.52 0 -4.36 -0.05 -2.46 3.59 -0.95 -0.63 2.88 -2.91 0.52 0 4.36 
+1.2 0.84 -4.41 3.82 -3.04 2.58 2.13 1 2.71 -2.23 4.49 -3.78 1.84 1.41 2.5 -2.06 
+0 -3.25 -2.71 -0.58 -0.39 -1.65 2.54 -0.28 0.57 2.52 0 3.25 1.99 -1.67 -0.67 -0.58 
+0.76 0.5 -0.02 0.07 1.86 1.47 1.85 1.52 -4.71 3.69 -4.73 3.6 1.63 1.46 1.43 1.32 
+5.05 -3.36 0.11 -0.07 5 -0.83 2.93 0.35 0.41 0.09 -0.15 0.18 -0.2 0.07 -5.96 2.25 
+-2.65 3.6 3.73 -2.52 1.54 1.61 1.5 1.63 -3.45 2.2 1.45 1.56 4.8 -0.46 0.11 0 
+1.91 -0.17 0 -6.23 0.17 -0.44 0.52 -0.02 -0.24 0.34 -0.46 0.11 0 6.23 3.09 -0.26 
+1.49 1.67 -1.61 3.38 -0.76 1.11 -5.12 3.63 -3.19 2.28 3.8 -1.35 6.12 -2.09 1.76 -0.11 
+5.17 -0.67 3.49 -1.28 0.42 2.28 2.16 1.43 1.59 1.71 1.86 1.63 0.83 0.37 1.65 1 
+4.73 0.43 1.43 0.69 1.02 0.81 0.73 2.21 1.11 2.06 5.53 0.41 0.15 0.02 4.36 0.85 
+-3.41 3.36 P
+-0.93 0.76 -2.62 3.38 2.78 1.56 0.71 2.26 -0.41 2.58 -1.02 2.73 -1.2 2.71 -1.04 2.65 
+-1.22 0.82 -4.75 2.82 -0.57 2.39 -0.02 2.28 -0.73 2.41 -0.87 2.39 -0.52 2.34 -0.48 2.32 
+2.95 1.97 0.5 2.28 -1.39 2.45 -4.16 2.61 -2.63 0.97 -5.51 1.59 -1.04 0.63 -1.06 0.65 
+-5.68 -1.2 -0.07 0 -1.28 2.11 -1.45 2.08 0.28 0.57 0.46 1.61 -1.76 2.06 -1.15 0.43 
+-3.49 1.39 -2.11 1.93 -2.34 1.86 -2.56 1.81 0.68 2.28 1.71 1.71 5.7 -0.61 1.52 -0.07 
+6.46 0.18 5.54 1.28 1.04 0.39 3.55 2 1.26 1.08 -2.8 0.8 -5.54 -1.24 -6.38 -0.3 
+-5.4 -1.47 -5.88 0.91 -1.95 0.24 -6.88 0.21 -0.21 -0.02 -0.07 -0.07 1.5 -1.89 -4.84 -1.76 
+-5.71 -1.37 -3.95 -2.12 0.82 -1.74 0.26 -0.7 -0.67 0.61 -1.61 1.54 -1.26 1.61 0.11 0.02 
+-0.17 0.17 2.23 2.34 2.02 0.55 -0.24 0.24 1.5 2.19 -0.71 1.96 -3.3 1.19 -3.73 0.35 
+-0.52 0.41 -0.5 0.41 4.27 2.66 0.67 0.74 2.48 2.78 5.62 0 2.72 -1.63 1.88 -1.89 
+2.58 -1.11 2.41 2.47 -4.34 1.29 -1.89 1.95 0.96 2.91 -5.3 0.8 1.78 1.89 4.77 2.11 
+3.41 2.37 -5.38 -0.93 -4.37 0.17 -4.86 0.74 -0.54 -0.15 0 0.5 2.86 3.37 5.93 -0.13 
+1.87 0.26 0.26 0.61 2.14 3.02 3.95 2.56 4.91 1.88 2 0.83 1.97 1.63 -1.65 1.99 
+1.67 2.93 5.21 -0.35 3.91 -0.56 -1.29 1.49 -1.97 0.61 -5.69 0.31 -4.34 2.02 -4.43 1.95 
+-0.96 0.09 -7.01 -0.8 -4.77 -2.06 -2.59 -3.25 -1.23 -2.34 -0.7 -1.26 -5.06 -2.02 -0.62 -3.69 
+0.17 -0.82 -2.73 -3.34 -0.11 -0.06 -4.08 -2.5 -4.64 0.18 -1.82 1.97 -2.45 1.63 -2.67 1.5 
+-2.76 1.43 -3.75 0.63 -3.43 0.84 -2.82 1.32 -5.04 -0.89 -0.17 -0.13 -0.28 -0.33 2.21 -1.78 
+2.19 -1.71 -1.22 -1.54 -0.34 0.13 -2.8 1.02 -2.82 0.98 -2.88 0.93 -2.91 0.89 2.78 3.32 
+2.82 3.3 -3.25 0.95 p f*
+0 255 r6
+974.42 1791.21 -2.15 -2.63 0.26 -0.41 0.87 0.2 1.02 2.84 f*
+2 239 204 rG
+975.7 1548.66 -0.7 -0.13 0.48 0.83 2.52 2.61 3.45 -0.05 2.2 -1.58 1.47 -4.91 3.11 -4.56 
+2.11 -2.9 3.19 1.45 3.37 -1.8 1.32 -0.45 4.34 -1.11 3.91 -0.06 3.56 0.78 1.41 -0.61 
+4.77 -3.97 0.15 -0.04 4.91 -4.04 1.54 -5.1 4.08 -4.32 4.55 -0.43 5.1 -2.08 0.41 -0.13 
+4.69 -0.43 1.52 2.86 -3.52 4.5 0.84 2.91 3.43 -1.32 1.55 -5.23 4.84 -4.04 0.56 0.02 
+4.23 0.61 5.32 -1.15 2.52 -0.39 2.7 -0.48 5.14 -2.23 1.15 -0.3 5.04 -0.33 3.36 2.34 
+3.3 2.41 4.12 1.13 4.17 1.08 4.47 0.72 1.75 0.07 2.89 0.43 5.05 0 3.55 -0.5 
+2.11 -0.24 6.08 -1.65 0.48 -0.13 3.91 1.71 3.75 1.93 3.78 1.87 1.65 3.76 0.18 0.45 
+3.38 2.28 0.21 0.07 3.84 1.43 5.16 0.32 1.67 -1.06 6.68 -2.13 0.86 0.43 2.63 1.87 
+0.52 0.87 -0.35 4.97 3.76 1.93 3.08 -0.93 4.08 -0.59 2.56 3.23 1.24 4.52 2.58 3.1 
+2.69 2.97 2.26 3.37 2.34 3.23 2 2.93 0.24 0.39 0.08 0.07 7.04 -1.15 0.24 -0.02 
+3.23 2.5 0.54 3.7 0 1.08 0.93 0.43 2.43 1.93 -0.63 1.15 -0.85 5.08 1.41 3.84 
+4.06 1.82 1 0.18 6.29 -1.74 1.93 -0.46 3.04 2.71 0.63 4.47 -1.15 4.47 -5.23 4.58 
+-0.41 0.54 0.69 0.35 4.23 1.02 2.69 -0.33 3.23 1.05 3.17 2.62 -2.54 6.36 -0.33 4.82 
+-0.07 0.19 -0.49 0.15 -5.43 2.5 -5.73 4.03 -0.09 0.16 -1.7 5.27 -3.27 5.25 -0.91 1.2 
+-4.86 6.36 -0.15 0.28 0.17 0.43 2.43 2.34 3.71 -0.71 6.05 -4.1 3.17 2.32 0 -8.25 
+-0.39 -4.13 2.54 -3.41 1.28 1.29 -0.05 4.41 -0.65 1.75 -2.73 0.09 0 8.25 0.22 0.17 
+0.19 4.12 -3.23 5.73 -0.98 3.32 -0.54 1.48 -6.25 5.86 -0.78 1.19 -2.63 5.02 0.68 3.69 
+-1.96 4.64 -1.75 4.51 1.36 2.91 6.54 -2.72 3.88 -4.38 -0.18 -3.99 2.67 -5.12 3.58 -4.28 
+3.15 1.48 1.93 1.99 6.16 -2.3 6.51 -4.21 5.75 -0.45 0 0.02 -0.02 0.07 -3.43 5.96 
+-4 6.14 -1.13 0.75 -6.49 3.23 -5.1 5.38 -3.84 5.56 -0.21 0.21 -7.56 5.29 -3.38 2.26 
+-4.25 2.71 -4.73 3.58 -0.59 0.46 -3.41 2.84 -3.13 2.71 -3.17 4.61 1.7 1.58 1.22 1.69 
+2.75 1.15 2.41 1.72 0.96 1.99 5.57 -0.13 7.86 -4.05 4.82 -2.62 3.11 -1.85 8.09 -5.16 
+2.75 -1.54 4.3 -1.87 6.29 -2.02 0.85 -0.11 -0.87 4.75 -4.12 3.56 -7.71 4.43 -1.71 0.89 
+-5.73 2.8 -6.01 4.82 -4.39 3.28 -5.45 3.32 -3.88 5.06 2.37 1.69 -1.15 2.34 4.66 -0.95 
+4.36 -5.3 0.95 -0.93 2.91 -4.32 3.52 -0.89 5.92 -5.62 0.29 -0.45 0.15 -0.05 7.95 -4.75 
+5.96 -4.05 2.84 -2.43 4.1 -4.55 2.73 -5.58 -1.06 -1.7 -5.6 0.65 -5.82 1.32 -0.12 0 
+-5.73 0.8 -4.6 2.82 -2.8 1.43 -5.32 1.15 -0.41 -0.52 -2.71 -2.66 -1.56 0.04 -4.21 -2.38 
+7.03 -4.09 3.78 -3.52 5.34 -6.09 0.11 -0.11 7.25 -5.2 4.56 -3.67 2.64 -1.87 6.77 -4.58 
+2.25 -3.21 1.41 -5.21 0.43 -4.75 3.04 -6.16 0.68 -4.99 -3.36 -0.83 -5.38 1.32 -0.54 0.13 
+-6.14 3.58 -2.13 0.48 -3.75 -0.04 -2.8 -1.06 -2.25 -3.19 1.19 -4.97 -0.48 -4.12 0.48 -4.69 
+0.79 -4.9 P
+-0.66 -4.14 0.85 -5.06 1.47 -5.05 0.26 -0.7 1.35 -5.62 1.37 -5.77 -1.17 -4.05 -5.82 -0.33 
+-0.37 -0.21 -3.02 -2.73 -0.21 -4.77 -0.34 -3.28 0 -1.5 -0.7 -4.55 -1.13 -0.39 -1.2 -0.41 
+-6.05 2.3 -0.15 0.06 -0.02 -0.41 -0.54 -4.25 -2.32 -3.27 -0.5 -4.84 -0.04 -0.08 -2.62 -2.97 
+-2.19 -3.5 -2.76 -3.02 2.59 -4.6 5.2 -3.76 3.15 -1.78 1.71 4.21 1.13 4.66 1.71 4.04 
+3.95 2.09 3.39 0.41 0 -2.37 -1.02 -0.13 -3.69 -2.32 -1.68 -4.17 -1.17 -4.69 -0.11 -0.67 
+0.59 0.24 3.37 2.66 3.01 3 1.02 4.77 -0.32 1.3 0 2.37 1.43 0.17 1.58 -6.25 
+-1.36 -4.51 -3.19 -2.89 -2.73 -3.32 -2.15 -3.93 0.67 -1.89 -0.97 -3.95 -2 -4.23 -0.71 -5.7 
+-0.05 -0.7 4.23 -4.82 -0.2 -5.75 -0.02 -3.71 5.34 -3.6 0.82 0.04 6.29 -0.26 2.13 0.72 
+5.47 -3.45 0.63 0.15 3.62 3.02 2.84 3.93 3.17 3.47 0.39 1.98 -0.02 4.62 -0.63 5.27 
+-0.41 2.62 0.95 5.56 1.28 5.1 0.11 1.39 -0.8 5.54 1.21 4.94 5.17 1.2 0.98 0.35 
+6.42 -1.52 0.24 0.07 6.71 -0.35 0.11 0.04 2.74 3.56 1.56 4.64 0.26 3.1 -2.63 5 
+2.17 3.93 -1.91 4.23 -3.56 0.41 0.79 -6.41 -0.46 -0.19 -4.06 -1.67 -2.25 -0.76 -1.91 -1.39 
+-2.38 -3.71 -4.43 0.61 -1.3 4.38 -0.09 5.7 1.28 4.47 1.04 4.63 5.36 1.17 0.41 0.33 
+0 -2.2 -0.52 -0.09 -3.54 -0.57 -1.15 -4.58 -1.09 -4.66 0.63 -6.12 3.97 2.2 3.34 2.84 
+1.89 1.17 2.3 0.97 -0.91 3.26 -4.93 5.58 0 2.2 0.78 0.63 4.82 -0.26 1.61 -0.07 
+5.32 0.07 1.85 4.06 0.17 0.08 1.99 -1.82 3.32 -3.04 0.35 0.04 6.04 0.35 0.39 0.04 
+4.95 -1.56 0 -3.14 -1.02 -0.09 -4.64 -0.36 -1.02 -1.05 -3.66 -0.74 -2.89 0.18 -2.97 -0.96 
+1.66 -3.71 0.38 -3.88 -1.76 -4.37 -0.74 -5.36 -1.67 -4.56 -2.61 -3.71 -2.37 -1.02 -3.25 0.2 
+-4.43 -1.24 -0.89 0.15 -5.68 1.16 -1.68 -0.29 -2.06 -4.14 0.26 -1.84 -0.26 -4.45 -1.39 -5.05 
+-0.33 -5.58 0.09 -0.76 0.93 -7.86 0.02 -0.91 -0.98 -5.06 -3.28 -3.39 -2.82 -3.95 -3.58 -3.1 
+-3.17 -0.8 -3.32 1.26 -3.62 0.67 -3.12 0.15 -5.82 -0.28 -0.11 -0.02 -4.04 4.9 0 0.16 
+0.07 6.99 0.07 2.11 -3.61 1.91 -2.15 1.24 -2.45 3.86 1.95 4.38 0.48 1.24 1.26 3.26 
+1.5 4.67 -1.31 4.01 -4.71 4.41 -2.14 1.52 -3.11 2.17 -1.61 0.35 -2.39 -3.45 0.5 -1.43 
+3.28 -6.1 0.84 -2.95 -1.25 -4.88 -0.55 -2.88 0.24 -3.2 -3.19 -3.02 -4.08 -1.02 -0.66 -0.31 
+-0.24 -0.56 1.59 -0.96 3.58 -2.78 4.78 -4.12 2.71 -6.08 -0.02 -0.02 -2.25 -4.53 -2 -5.02 
+-0.61 -2.97 4.58 -4.3 1.93 -0.52 3.82 -2.78 4.08 -4.71 4.45 -1.23 5.06 1.34 0.3 0 
+5.28 0.65 4.17 -0.67 2.88 -0.67 4.06 -1.5 4.92 -2.56 1.15 -0.41 5.95 -0.98 2.21 0.04 
+4.28 -0.57 3.08 -1.11 3.86 -0.06 4.9 1.73 1.59 -0.11 4.27 0.52 4.95 0.14 1.21 -0.18 
+4.66 2.08 2.93 4.47 2.76 4.67 2.16 5.32 1.24 2.78 -1.91 -1.89 -3.77 -3.17 -4.28 -2.52 
+-4.16 -2.7 -1.93 -0.26 -5.12 1.48 -1.8 0.24 -5.95 1.87 -0.82 0.11 -5.97 0.75 -1.65 0.3 
+-0.84 2.95 p
+-0.7 4.97 0.37 3.26 2.84 4.08 3.71 2.99 3.61 3.11 0.02 0.02 3.88 2.69 3.26 3.45 
+4.96 0.39 0.61 0.42 3.51 3.17 5.41 0.36 0 -6.59 -4.08 -0.78 -1.02 -0.59 -4.07 -2.56 
+-3.47 -3.3 -3.78 -2.95 -3.09 -1.67 -1.17 -0.72 -3.82 -2.93 -3.39 -3.54 0.37 -2.69 1.87 -0.18 
+6.01 -0.46 0.74 -0.3 4.88 -2.95 4.86 -1.78 1.95 -0.02 2.78 1.96 3.95 2.93 3.56 3.41 
+3.08 4 2.84 4.21 0.96 6.46 -0.57 1.15 -2.3 2.3 -1.28 0.35 -1.98 0.54 -3.84 0.11 
+0 6.59 0.29 0.02 0.26 -0.02 5.32 -3.12 4.25 -5.55 3.02 -6.23 -1.13 -3.15 1.8 2.32 
+3.54 3.28 -0.09 3.39 0.37 3.8 2.26 1.21 2.47 0.59 3.71 2.97 3.61 2.29 0.71 0 
+1.06 4.25 0.24 1.48 -3.38 7.84 -5.77 2.49 -1.17 7.8 4.23 2.25 -4.19 6.77 -4.54 7 
+-2.91 3.97 -1.82 2.73 -5.21 4.93 -4.66 2.8 -0.98 0.3 0 3.14 0.59 -0.2 5.46 -3.93 
+5.36 -4.43 4.64 -7.33 1.17 -2.3 3.25 -5.36 4.58 -6.6 2.63 -5.05 -4.3 -0.34 -1.19 -0.59 
+0.3 -2.04 5.05 -4.49 3.84 -7.75 1.13 -4.08 -1.98 -4.99 -2.93 0.05 -2.19 -1.37 -3.32 -3.45 
+-4.36 -1 -0.72 -0.39 -0.13 -1.2 0.2 -6.46 -3.08 -3.87 -2.5 -4.68 -2.62 -4.62 -2.73 -4.54 
+-2.34 -5.14 -3.64 -3.45 -3.19 -4.14 -4.23 -2.71 -3.32 0.52 -3.12 -0.09 -5.38 -1.06 -1.02 0.21 
+-4.45 -1.17 -5.54 0.09 -0.89 0.32 -6.71 0.83 -0.24 0.06 -6.47 0.8 -1.52 0.37 -5.6 3.41 
+-2.23 0.83 -4.93 1.2 -2.25 0.37 -5.14 -1.26 -4.67 -1.26 -0.41 -0.11 -4.14 1.17 -2.93 0.83 
+-2.71 3.32 -1.28 1.45 -7.18 1.98 -0.28 -0.02 -6.51 1.23 -1.09 0.66 0.02 0.78 3.43 3.32 
+1.32 5.97 2.93 3.78 0.54 1.11 -1.43 7.16 0 0.02 -0.02 0.02 -6.73 2.25 -1.97 1.04 
+0.43 -2.45 1.43 -6.86 -4.58 4.08 -3.8 4.93 -0.02 1.13 3.11 3.17 2.16 4.16 3.91 2.22 
+3.1 3.06 1.32 4.9 0.74 4.88 -0.13 0.61 -2.96 5.66 -1.66 4.69 2.41 3.38 0.11 3.58 
+-4.64 0.55 -3.45 -2.34 -2.76 -3 -2.02 -1.43 -1.23 -1.08 -3.97 -1.83 -1.13 -4.32 0.07 -0.34 
+0.41 -6.36 -1.26 -3.08 -0.58 -1.08 -0.89 -0.35 -3.82 -0.76 -4.05 -1.82 -3.99 -1.84 -3.59 -1.09 
+-0.73 -0.37 -1.46 -1.43 -1.5 -1.65 -0.61 -0.02 -4.86 -0.04 -5.27 -0.09 -0.18 0.02 -0.28 -0.35 
+-2.58 -2.8 -2.78 -3.34 -3.78 -2.08 -3.62 -2.37 -2.82 0.02 -2.47 -0.07 -5.93 0.89 -0.98 0.37 
+-6.03 2.09 -1.59 0.24 -4.1 0.5 -5.01 -0.11 -4.19 -1.24 -1.17 -0.43 -2.91 -0.99 -3.64 -2.05 
+-0.65 -0.54 -2.67 -2.11 -3.67 -2.12 -3.96 -1.7 -4.39 -0.93 -2.64 -0.73 -1.65 -0.39 -5.21 0.61 
+-4.19 -1.26 -4.32 -0.98 -4.62 -0.32 -2.78 -0.11 -2.09 0.32 -5.79 2.3 -0.93 0.24 -4.46 1.46 
+-4.78 1.41 -0.5 0.16 -5.18 1.52 -4.52 1.02 -0.48 0.21 -5.45 2.64 -1.11 0.8 -2.95 4.69 
+-3.8 3.64 -0.61 0.67 -2.82 4.69 -3.23 4.58 -1.61 4.95 -1.84 0.76 -3.87 0.02 -4.12 0.83 
+-1.96 1.04 -2.73 4.67 -1.93 2.65 -0.7 2.02 -1.7 4.84 -3.25 -0.65 p f*
+87 0 136 rG
+981.34 1645.75 -5.19 2.98 0.76 0.75 5.25 -2.91 -0.82 -0.82 f*
+255 35 0 rG
+978.62 1724.85 -1.89 0.91 3.93 3.02 0.99 -0.5 0.5 -0.87 1.78 -1.11 1.41 -1.34 2.75 -0.52 
+1.07 -0.17 1.17 -0.7 0.48 0.29 3.6 -0.2 -2.25 -1.22 1.75 -1.12 0.13 -0.09 -2.75 -3.21 
+3.14 -0.41 -2.06 -0.96 -1.58 1.11 -1.63 1.09 -1.67 1.08 -1.7 1.04 -1.73 1 -1.78 1 
+-1.82 0.96 -1.84 0.93 f*
+255 135 0 rG
+982.73 1749.13 -2.21 1.78 0.28 0.33 0.17 0.13 5.04 0.89 2.82 -1.32 3.43 -0.84 3.75 -0.63 
+2.76 -1.43 2.67 -1.5 2.45 -1.63 1.82 -1.97 4.64 -0.18 4.08 2.5 0 -10.07 -0.83 -2.09 
+-1.52 -1.78 -3.47 -2.97 6.23 1.06 5.27 1.89 0.59 2.26 -2.85 1.43 -3.43 0.2 0 10.07 
+0.11 0.06 2.73 3.34 -0.17 0.82 0.63 3.69 5.06 2.02 0.7 1.26 1.23 2.34 2.59 3.25 
+4.77 2.06 7.01 0.8 0.96 -0.09 4.43 -1.95 4.34 -2.02 5.69 -0.31 1.97 -0.61 1.29 -1.49 
+-3.91 0.56 -5.21 0.35 -1.67 -2.93 1.65 -1.99 -1.97 -1.63 -2 -0.83 -4.91 -1.88 -3.95 -2.56 
+-2.14 -3.02 -0.26 -0.61 -1.87 -0.26 -5.93 0.13 -2.86 -3.37 0 -0.5 0.54 0.15 4.86 -0.74 
+4.37 -0.17 5.38 0.93 -3.41 -2.37 -4.77 -2.11 -1.78 -1.89 5.3 -0.8 -0.96 -2.91 1.89 -1.95 
+4.34 -1.29 -2.41 -2.47 -2.58 1.11 -1.88 1.89 -2.72 1.63 -5.62 0 -2.48 -2.78 -0.67 -0.74 
+-4.27 -2.66 -1.39 1.13 -1.96 1.5 -2 1.45 -2.06 1.43 -2.11 1.43 -4.78 -2.34 -4.71 -2.41 
+-2.43 -1.28 -3.6 0.2 4.1 2.28 4.6 2.49 4.64 2.43 -2.2 1.34 -1.73 1.02 1.15 1.26 
+-3.95 0.32 -0.04 0 -2.34 1.23 -2.41 1.2 -2.46 1.17 -2.49 1.13 3.34 2.56 2.32 -1.39 
+1.87 0.02 0.82 1.89 -3.09 0.96 -3.25 -0.33 -0.89 0.37 -2.71 1.11 -2.41 0.96 1.22 1.54 
+-2.19 1.71 f*
+87 0 136 rG
+980.67 1675.54 -0.09 0.87 6.49 -0.26 -0.11 0.96 6.49 -0.26 -0.15 1.05 -0.19 1.06 -0.22 1.04 
+4.55 -0.02 0.41 -1.13 1.21 -1.17 0.11 -1.13 -1.46 -1.02 1.93 -1.29 -1.3 -0.99 -1.68 -0.93 
+-2.95 0.32 0 -1.04 -6.49 0.74 0 0.95 -6.49 0.54 -0.02 0.87 -0.06 0.85 f*
+255 135 0 rG
+981.66 1728.28 0.5 -0.87 1.78 -1.11 1.41 -1.34 2.75 -0.52 1.07 -0.17 -0.7 0.41 -1.89 1.07 
+-1.96 1.04 -1.95 1 -1.02 0.5 f*
+255 0 r6
+984.63 1402.87 -0.71 5.27 5.55 0.58 0.76 -5.25 -5.6 -0.61 f*
+255 203 0 rG
+991.52 1742.67 -1.8 0.78 3.25 0.33 3.09 -0.96 -0.82 -1.89 -1.87 -0.02 -2.32 1.39 0.48 0.38 f*
+255 135 0 rG
+994.05 1721.22 -2.75 -3.21 3.14 -0.41 2.91 1.32 -1.69 1.2 -1.61 1.11 f*
+0 255 r6
+999.09 1789.41 -2.82 -2.95 1.2 -3.1 6.36 0.79 -4.23 1.34 2.99 2.88 3.04 2.82 5.14 -1.67 
+5.08 -1.75 3.43 2.63 5.16 -1.93 3.63 2.47 5.25 -2.13 5.16 -2.21 4.01 2.23 4.06 2.18 
+4.1 2.08 1.63 0.8 2.3 1.33 -5.18 2.34 -4.04 -2.11 -3.62 -2.34 -1.8 -0.35 -4.45 -0.91 
+-5.82 0.16 -6.23 0.69 -1.26 -0.15 -6.32 -0.96 -3.07 -0.37 -6.04 1.02 -4.25 -0.09 -3.41 -2.73 f*
+189 0 54 rG
+1000.21 1671.92 -3.54 0.39 1.68 0.93 1.3 0.99 -1.93 1.29 1.46 1.02 -0.11 1.13 -1.21 1.17 
+-0.41 1.13 1.91 -0.02 -0.29 1.15 -0.3 1.13 -0.37 1.15 3.91 0.11 -0.48 -1.21 0.83 -1.2 
+0.02 -1.2 3.39 -1.32 -1.71 0.06 -4.77 0.18 0.22 -1.15 0.15 -1.15 0.13 -1.16 0.08 -1.15 
+0.05 -1.15 0.02 -1.12 f*
+255 203 0 rG
+997.39 1734.98 0 0.02 0.04 0 3.95 -0.32 -1.15 -1.26 -0.52 0.3 -2.32 1.26 f*
+189 0 54 rG
+1000.26 1635.94 -2.52 1.56 1.04 1.04 1 1.06 1.63 -0.93 -0.65 -1.3 -0.5 -1.43 f*
+255 203 0 rG
+1002.3 1581.38 -2.28 0.7 0.63 1.69 2.8 0.48 0.43 -0.63 0.8 0.34 0.11 -1.61 -2.49 -0.98 f*
+255 35 0 rG
+1002.84 1634.36 -2.58 1.58 0.5 1.43 0.65 1.3 3.64 -2.11 1.05 1.15 5.32 -3.02 -1.13 -1.21 
+-1.17 -1.2 -1.2 -1.17 -1.24 -1.15 4.97 -3.32 -1.37 -1.19 -1.37 -1.17 3.78 -2.8 0.39 -1.2 
+0.76 -2.04 -1.34 -1.39 -2.43 1.11 0.54 0.42 -4.57 3.62 1.45 1.13 -4.69 3.5 0.89 0.74 
+1.87 -0.65 1.78 0.8 -0.93 2.2 -3.28 2.6 -1.21 1.13 0.93 0.91 f*
+189 0 54 rG
+1005.43 1628.84 -4.91 3.34 1.17 1.06 0.21 0.2 1.21 -1.13 3.28 -2.6 0.93 -2.2 -1.78 -0.8 
+-1.87 0.65 1.74 1.47 f*
+1002.71 1641.23 -1 0.54 0.91 1.08 0.87 1.13 0.67 0.91 0.91 -1.69 -0.79 -1.2 -1.58 -0.78 f*
+255 35 0 rG
+1002.3 1683.48 -0.48 -1.21 0.83 -1.2 0.02 -1.2 3.39 -1.32 6.49 -0.35 0.22 -1.34 6.46 -0.52 
+0.17 -1.43 0.11 -1.43 0.08 -1.43 -6.49 0.8 0.04 -1.32 -0.02 -1.34 6.46 -1 -0.08 -1.41 
+-0.11 -1.41 6.41 -1.28 -0.18 -1.5 -0.24 -1.49 -0.28 -1.48 -0.32 -1.47 3.12 -0.85 0.63 1.46 
+2 1.11 1 1.39 0.63 1.5 0.05 0.06 0.74 1.41 0.02 1.63 -0.13 1.65 -1.3 1.82 
+-1.61 1.82 -0.74 1.67 0.46 1.52 -0.15 1.58 -0.42 1.61 -0.87 1.63 -0.21 1.58 1.41 1.52 
+0.63 1.59 -1 1.63 -0.39 1.63 -1.67 1.59 -2.08 1.54 -0.46 1.58 -3.86 -0.24 -6.29 -0.45 
+0.7 -1.43 0.65 -1.41 -6.36 -0.36 0.57 -1.32 0.52 -1.33 0.48 -1.32 0.43 -1.35 -6.45 -0.04 
+-2.52 -0.04 f*
+1007.12 1638.89 -4.41 2.34 1.58 0.78 0.79 1.2 -0.91 1.69 0.17 0.24 5.62 -2.69 -0.91 -1.2 
+-0.96 -1.19 -0.98 -1.17 f*
+255 135 0 rG
+1008.53 1748.5 -4.77 -0.41 0.56 2.48 4.67 2.34 0.35 2.41 0.89 1.54 4.62 2.3 0.56 0.07 
+-0.13 -0.26 -2.87 -3.14 -0.62 -2.56 0.89 -2.15 -4.14 -2.61 f*
+1011.79 1612.3 -4.34 3.78 1.61 1.13 1.02 0.75 2.43 -1.11 1.34 1.39 -0.76 2.04 -0.39 1.2 
+0.95 -0.72 4.71 -3.55 4.67 -3.63 -1.67 -1.32 1.82 -1.48 -2.13 -1 -1.41 1.2 -1.76 -1.26 
+-0.8 -0.57 -2.84 0.98 -2.45 2.17 f*
+255 203 0 rG
+1012.09 1731.32 -3.47 -2.97 6.23 1.06 5.27 1.89 0.59 2.26 -2.85 1.43 -3.43 0.2 -0.83 -2.09 
+-1.52 -1.78 f*
+0 155 255 rG
+1012.8 1465.93 -0.61 5.29 0.2 1.13 3.52 4.36 5.29 -3.61 2.15 -4.99 0.74 -1.58 1.67 -3.34 
+-0.22 -1.24 -4.06 -3.41 -5.14 0.21 -2.14 2.02 -1.39 5.14 f*
+255 135 0 rG
+1015.62 1799.16 -2.6 -1.39 1.21 1.82 0.7 -0.22 3.19 2.63 0.09 0.07 0.26 -0.2 -2.84 -2.71 f*
+1015 1709.98 -1.41 1.47 5.58 1.45 1.26 -1.61 1.61 -1.54 0.67 -0.61 -0.26 0.7 -0.82 1.74 
+3.95 2.13 5.71 1.37 4.84 1.76 -1.5 1.89 0.07 0.07 0.21 0.02 6.88 -0.21 1.95 -0.24 
+5.88 -0.91 5.4 1.47 6.38 0.3 5.54 1.24 2.8 -0.8 -1.26 -1.08 -3.55 -2 -1.04 -0.39 
+-5.54 -1.28 -6.46 -0.18 -1.52 0.07 -5.7 0.61 -1.71 -1.71 -0.68 -2.28 2.56 -1.81 2.34 -1.86 
+2.11 -1.93 3.49 -1.39 1.15 -0.43 1.76 -2.06 -0.46 -1.61 -0.28 -0.57 1.45 -2.08 1.28 -2.11 
+0.07 0 5.68 1.2 1.06 -0.65 0 -34.86 -1.02 -1.28 -2.82 -1.34 -3.06 -0.96 -0.39 -0.13 
+0.33 -0.28 6.25 -2.02 2.49 -0.32 4.14 0.78 0.15 0.15 -0.11 0.24 -3.91 3.05 -2.07 2.11 
+0 34.86 1.04 -0.63 5.51 -1.59 2.63 -0.97 4.16 -2.61 1.39 -2.45 -0.5 -2.28 -2.95 -1.97 
+0.48 -2.32 0.52 -2.34 0.88 -2.39 0.73 -2.41 0.02 -2.28 0.57 -2.39 4.75 -2.82 1.22 -0.82 
+1.04 -2.65 1.2 -2.71 1.02 -2.73 0.41 -2.58 -0.71 -2.26 -2.78 -1.56 2.63 -3.38 0.93 -0.76 
+3.41 -3.36 -4.36 -0.85 -0.15 -0.02 -5.53 -0.41 -1.11 -2.06 -0.73 -2.21 -1.02 -0.81 -1.43 -0.69 
+-4.73 -0.43 -1.65 -1 -0.83 -0.37 -1.86 -1.63 -1.59 -1.71 -2.16 -1.43 -0.42 -2.28 -3.49 1.28 
+-5.17 0.67 -1.76 0.11 -6.12 2.09 -3.8 1.35 3.19 -2.28 5.12 -3.62 0.76 -1.11 1.61 -3.38 
+-1.49 -1.67 -3.09 0.26 -1.91 0.17 -0.11 0 -4.8 0.46 -1.45 -1.56 -1.76 1.08 -5.25 3.21 
+1.28 1.52 1.26 1.56 -5.43 3.02 -5.49 2.95 1.09 1.43 1.02 1.46 0.98 1.47 0.93 1.5 
+5.73 -2.68 0.93 1.59 0.91 1.59 0.84 1.62 -5.9 2.43 0.76 1.56 0.7 1.59 -6.04 2.2 
+0.58 1.49 0.29 0.76 1.13 0.5 -0.55 1.21 0.2 0.59 0.46 1.54 0.41 1.54 -3.15 0.87 
+0.63 1.46 2 1.11 1 1.39 0.63 1.5 0.05 0.06 0.74 1.41 0.02 1.63 -0.13 1.65 
+-1.3 1.82 -1.61 1.82 -0.74 1.67 0.46 1.52 -0.15 1.58 -0.42 1.61 -0.87 1.63 -0.21 1.58 
+1.41 1.52 0.63 1.59 -1 1.63 -0.39 1.63 -1.67 1.59 -2.08 1.54 -0.46 1.58 2.46 0.15 
+-0.81 1.61 -0.87 1.59 -0.93 1.58 -0.98 1.58 6.17 0.7 -1.07 1.67 -1.13 1.65 -1.2 1.65 
+-1.25 1.63 -1.3 1.61 -5.88 -1.2 -1.3 1.49 -1.34 1.48 f*
+255 203 0 rG
+1016.1 1608.48 -1.87 1.65 2.84 -0.98 -0.98 -0.67 f*
+255 135 0 rG
+1018.18 1720.79 -1.32 1.13 3.73 -0.35 3.3 -1.19 0.71 -1.96 -1.5 -2.19 -1.41 1.39 -1.73 1.59 
+-1.78 1.58 f*
+1019.1 1713.11 -1.37 1.39 3.61 0.95 -2.23 -2.34 f*
+0 255 r6
+1020.88 1804.19 0.45 0.37 2.04 -0.67 -2.49 0.3 f*
+1027.3 1598.18 -0.05 -2.46 3.59 -0.95 -0.63 2.88 -2.91 0.52 f*
+255 35 0 rG
+1030.54 1652.54 -1.13 -0.5 0.28 0.76 0.3 0.95 0.55 -1.21 f*
+0 255 r6
+1027.8 1780.21 2.78 1.73 3.54 -1.56 -6.32 -0.17 f*
+1029.14 1803.71 1.74 1.2 2.02 -0.74 -3.75 -0.46 f*
+1032.01 1600.29 -0.39 -1.65 2.54 -0.28 0.57 2.52 -2.71 -0.58 f*
+255 135 0 rG
+1039.17 1612.13 -5.05 3.36 0.15 0.15 1.56 1.5 1.5 1.52 1.32 -0.89 2.65 -3.6 5.96 -2.25 
+0.2 -0.07 0.15 -0.18 -0.41 -0.09 -2.93 -0.35 -5 0.83 -0.11 0.07 f*
+0 255 r6
+1036.71 1602.45 -0.67 -0.58 0.76 0.5 -0.02 0.07 -0.02 -0.02 -0.05 0.04 f*
+255 G
+1041.1 1461.3 -4.75 -1.17 1.73 -5.12 1.7 -5.14 1.67 -5.16 1.65 -5.19 1.61 -5.18 5.1 1.21 
+5.08 1.26 -1.76 5.17 4.97 1.3 4.95 1.37 0.24 0.07 4.66 1.34 4.88 1.45 2.04 -5.14 
+4.9 1.52 4.88 1.59 2.93 0.97 1.91 0.66 1.48 0.5 2.3 0.8 1.02 0.37 -0.41 0.91 
+-1.82 4.04 -0.08 0.2 -2.34 5.1 -4.67 -1.67 -2.32 5.1 -4.62 -1.61 -2.3 5.08 -4.57 -1.54 
+-4.62 -1.5 -4.66 -1.43 -4.69 -1.39 -2.02 5.1 -4.67 -1.33 -1.98 5.08 -4.6 -1.25 -4.64 -1.24 
+1.85 -5.1 f*
+0 255 r6
+1039.67 1804.23 1.04 0.65 4.6 -1.84 -5.64 1.2 f*
+1041.82 1776.73 0.8 -2.28 1.89 0.93 -2.7 1.34 f*
+1044.45 1771.03 0.04 -0.02 4.04 -2.38 3.3 -2.69 4.19 -2.35 4.38 -2.32 3.08 -2.76 4.06 -2.47 
+1.91 -0.63 6.6 -0.83 2.06 -0.41 7.4 -0.41 -2.93 2.3 -5.36 -1.2 -3.71 2.78 -5.23 -1.41 
+-3.69 2.63 -3.82 2.54 -3.93 2.5 -4.01 2.43 -4.12 2.39 -4.21 2.3 -0.04 0.02 f*
+1047.46 1802.67 0.82 -0.85 1.41 -3.75 3.34 1.72 4.1 1.99 -6.27 2.7 -3.41 -1.8 f*
+255 135 0 rG
+1050.41 1614.95 -0.17 0.44 0.46 -0.11 0.24 -0.34 -0.52 0.02 f*
+189 0 54 rG
+1055.54 817.41 -3.78 -3.15 1.68 -0.69 6.42 2.37 3.63 3.02 -2.25 0.48 -2.15 -0.76 0 -0.43 
+1.54 -0.84 -1.45 -1.21 -2.55 -0.96 -2.37 0.37 1.93 1.63 2.91 1.02 0 0.43 -3.54 -1.25 f*
+110 210 9 rG
+1054.82 1795.12 -2.54 -1.24 2.3 1.33 0.24 -0.09 f*
+255 35 0 rG
+1056.16 817.21 -1.93 -1.63 2.37 -0.37 2.55 0.96 1.45 1.21 -1.54 0.84 -2.91 -1.02 f*
+1057.51 1657.27 -0.33 0.28 0.39 0.13 3.06 0.96 2.82 1.34 1.02 1.28 2.07 -2.11 3.91 -3.05 
+0.11 -0.24 -0.15 -0.15 -4.14 -0.78 -2.49 0.32 -6.25 2.02 f*
+0 155 255 rG
+1060.35 1436.87 -1.59 0.93 0.93 0.93 3.59 0.28 -2.93 -2.14 f*
+189 0 54 rG
+1065.78 819.83 -3.15 -3.04 6.19 1.96 4.84 4.14 -2.84 -1.11 0 -0.5 -2.69 -2.3 -3.41 -1.08 
+1.74 1.69 4.36 1.7 0 0.5 -5.04 -1.96 f*
+255 35 0 rG
+1066.45 819.59 -1.74 -1.69 3.41 1.08 2.69 2.3 -4.36 -1.7 f*
+189 0 54 rG
+1074 823 -3.34 -3.58 2.84 -0.17 5.58 1.91 6.49 3.93 2.24 2.21 -3.8 -1.34 0 -0.87 
+-5.6 -3.67 -2.45 -0.85 -2.52 0.39 1.59 1.7 3.02 0.89 5.96 1.55 0 0.87 -0.43 -0.15 
+-3.14 -0.89 -6.43 -1.91 f*
+255 35 0 rG
+1075.02 822.66 -1.59 -1.7 2.52 -0.39 2.45 0.85 5.6 3.67 -5.96 -1.55 -3.02 -0.89 f*
+0 155 255 rG
+1074.66 1430.77 -0.42 5.62 2.22 1.82 4.44 2.85 4.63 2.3 2.06 3.08 1.91 0.66 1.48 0.5 
+1.74 -5.32 5.59 -2.69 1.55 -0.76 1.54 -5.42 5.43 -0.41 3.64 3.69 -3.58 4.68 -2.28 5.04 
+-0.05 0.15 -2.25 5.18 -2.21 5.19 -2.3 5.17 -4.64 0.89 -0.52 -2.87 0.98 -5.61 -0.64 -2.8 
+-0.91 2.02 0.05 0.24 -1.09 5.58 1.02 5.71 5.23 0.35 4.38 2.02 4.32 1.02 0 -3.21 
+-3.02 -0.32 -1.93 -1.69 2.88 -0.18 2.06 2.19 0 3.21 0.52 0.13 4.64 -1.13 -1.24 -5.36 
+-4.14 -2.69 -1.08 -0.82 1.28 -5.6 3.32 -4.79 2.73 -1.63 3.86 -1.87 0.07 -6.09 4.75 -4.26 
+-1.52 -3.43 -5.84 0.15 -0.65 0.22 -5.05 -0.32 -5.55 -0.45 -1.13 -0.16 -4.29 -0.56 -4.85 -2.21 
+-4.99 -1.95 -5.53 -0.48 -3.28 0.67 -3.34 4.8 f*
+255 0 r6
+1088.21 681.73 -10.68 -2.02 11.71 3.38 11.7 3.36 11.71 3.39 12.61 3.3 -12.35 -3.8 -12.37 -3.82 
+-12.35 -3.8 f*
+255 G
+1095.07 1361.61 -5.88 -1.43 1.32 -5.36 1.3 -5.4 5.99 1.43 1.33 -5.4 1.28 -5.43 6.05 1.48 
+1.29 -5.43 1.25 -5.42 1.22 -5.45 6.16 1.5 1.2 -5.45 1.2 -5.47 6.2 1.54 1.17 -5.49 
+1.13 -5.49 1.08 -5.5 6.3 1.57 1.09 -5.53 6.29 1.61 1.09 -5.54 6.3 1.65 6.27 1.7 
+-1.15 5.55 -1.19 5.55 -1.24 5.54 -6.16 -1.73 -1.24 5.54 -1.31 5.51 -6.09 -1.7 -1.3 5.49 
+-1.34 5.47 -6.05 -1.65 -1.35 5.47 -6.05 -1.63 -1.34 5.45 -1.37 5.45 -1.43 5.43 -5.95 -1.59 
+-1.41 5.42 -1.43 5.41 -5.87 -1.54 -1.46 5.38 -5.86 -1.5 f*
+2 239 204 rG
+1092.71 1442.27 -1.74 5.32 2.3 0.8 2.97 -4.04 1.39 -0.34 5.67 -2.93 -1.26 4.51 -1.8 5.36 
+-1.8 5.34 -1.93 2.04 -2.25 2.39 -0.02 0 0.85 -5.69 -1.2 -5.36 -0.91 2.02 0.64 2.8 
+-0.98 5.61 0.52 2.87 4.64 -0.89 2.3 -5.17 2.21 -5.19 2.25 -5.18 0.05 -0.15 0 -8.32 
+1.02 -3.19 0.39 -0.02 0.26 0.26 -1.67 2.95 0 8.32 2.28 -5.04 3.58 -4.68 -3.64 -3.69 
+-5.43 0.41 -1.54 5.42 -1.55 0.76 -5.59 2.69 f*
+255 203 0 rG
+1093.86 1709.61 -2.15 0.38 1.73 0.3 0.95 -0.33 -0.54 -0.35 f*
+7 193 59 rG
+1096.25 1444.36 -2.97 4.04 1.02 0.37 -0.41 0.91 1.2 5.36 -0.85 5.69 0.02 0 2.25 -2.39 
+0 -2.39 0.05 -0.37 0.45 -0.67 -0.24 0.76 -0.26 0.28 0 2.39 1.93 -2.04 1.8 -5.34 
+1.8 -5.36 1.26 -4.51 -5.67 2.93 -1.39 0.34 f*
+255 G
+1098.03 1493.01 -4.06 -1.87 2.85 -4.92 2.82 -4.97 2.78 -4.99 2.73 -5.02 4.36 1.91 2.76 -5.01 
+4.41 1.97 2.78 -5.05 2.73 -5.06 4.49 2.06 2.76 -5.1 -4.56 -2.06 2.64 -5.14 2.61 -5.14 
+2.28 -4.62 0.26 -0.56 0.46 0.2 4.29 1.91 4.73 2.14 2.63 -5.18 4.73 2.21 4.67 2.28 
+-2.76 5.17 -2.82 5.14 -2.87 5.12 -2.93 5.1 -2.97 5.05 -3.02 5.03 -3.06 4.99 -4.19 -2.19 
+-3.05 4.97 -4.17 -2.12 -4.23 -2.08 -2.95 4.97 4.17 2.06 4.08 2.13 4.05 2.17 4 2.23 
+-3.3 4.88 -3.34 4.84 -0.59 0.86 -2.8 3.95 -2.41 -1.39 -1.37 -0.78 -1.26 1.82 -2.11 2.97 
+-3.38 -1.91 -0.35 -0.2 -0.19 0.29 -3.14 4.51 -3.73 -2.04 -3.76 -1.97 -3.82 -1.93 0.74 -1.15 
+2.36 -3.69 -3.95 -1.91 2.98 -4.88 f*
+189 0 54 rG
+1095.79 839.87 -0.63 -1.43 2.54 -0.65 2.41 0.91 -0.76 0.21 -2.5 0.67 -1.07 0.29 f*
+110 210 9 rG
+1096.55 1455.58 -0.05 0.37 0.26 -0.28 0.24 -0.76 -0.45 0.67 f*
+2 239 204 rG
+1103.91 1463.21 -2.88 0.18 1.93 1.69 3.02 0.32 -2.06 -2.19 f*
+7 193 59 rG
+1105.62 1434.89 -1.02 3.19 1.67 -2.95 -0.26 -0.26 -0.39 0.02 f*
+255 203 0 rG
+1107.96 1731.38 -3.19 3.17 0.76 0.45 1.39 3.08 0.87 1.22 5.41 0.89 5.2 -1.54 1.72 -3.49 
+0.21 -2.91 -1.93 -0.61 0 -3.39 -0.41 -0.59 -1.21 -2.76 3.25 -3.34 0.93 -3.3 -0.28 -2.69 
+-1.89 -0.41 -1.89 -2.58 -0.2 -0.26 -2.58 3.04 -3.06 3.21 -2.71 3.14 -1.52 3.15 0.09 1.23 
+5.55 0.76 3.37 1.37 -6.32 2.23 -1.56 0.91 f*
+110 210 9 rG
+1103.8 1768.04 2.88 0.45 2.91 0.43 3.43 -3.75 2.93 -3.8 0.41 -0.61 -1.11 0.54 -7.79 3.13 
+-3.66 3.6 f*
+255 0 r6
+1110.54 1505.79 -0.19 0.29 0.54 -0.09 -0.35 -0.2 f*
+1117.64 1503.11 -1.26 1.82 2.63 -1.05 -1.37 -0.78 f*
+255 203 0 rG
+1117.82 1708.98 -0.91 3.04 4.69 -3.32 -0.95 -3.02 -0.05 0 -2.78 3.3 f*
+1121.2 1687.63 -1.28 3.15 1.24 0.8 4.66 -1.73 2.8 -2.23 1.91 1.41 -0.55 3.17 -4.27 2.95 
+-1.04 0.91 0.3 0.76 2.43 1.95 1.67 2.11 7.16 -3.38 0.55 -0.33 4.19 -3.69 1.46 -3.52 
+-0.87 -3.05 0.98 -3.43 4.12 -4.18 2.87 -1.43 2.45 -3.25 5.12 -4.82 -5.68 -0.5 -6.36 1.69 
+-4.84 3.52 -0.39 3.26 -3.25 3.69 -0.41 0.29 -6.73 3.52 -6.43 1.17 -1.8 1.23 f*
+110 210 9 rG
+1123.11 1770.57 0.11 0.02 5.62 0.5 5.66 0.39 5.71 0.28 5.14 -4.34 -5.79 -0.16 -5.75 -0.26 
+-5.71 -0.34 -3.95 -0.33 -1.05 4.23 f*
+0 155 255 rG
+1127.45 1438.24 -3.93 3.58 0.8 2.91 1.8 -1.82 6.27 -2.91 0.26 -0.56 0.46 0.2 0.04 -1.17 
+-4.14 -0.57 -1.57 0.35 f*
+110 210 9 rG
+1134.31 1551.96 -0.09 0.13 0.17 -0.02 -0.02 -0.13 -0.07 0.02 f*
+0 255 r6
+1148.5 1619.92 -3.88 3.8 1.37 2.82 3.95 -1.5 4 1.13 1.15 3.02 2.61 2.35 -0.7 3.88 
+1.5 0.41 2.17 1.5 2.66 -0.79 0 -10.63 -0.48 -0.57 0.29 -0.39 1.07 -0.3 -0.87 1.25 
+0 10.63 1.59 -0.45 4.08 1.11 2.5 2.11 0.91 0.07 2.26 0.07 0 -4.86 0.58 -4.08 
+1.2 -3.84 2.23 2.15 -0.55 4.12 -0.71 1.43 -2.75 0.21 0 4.86 3.1 0.13 4.41 -4.73 
+1.37 -2.26 4.08 -4.36 0.7 -4.41 0.43 -0.54 5.9 -3.21 5.57 -4.84 5.39 -5.4 0.5 -0.42 
+-0.59 0.02 -5.64 -0.61 -0.95 0.33 -6.1 2.02 -5.9 2.75 -5.93 2.84 -4.32 1.3 0.02 -4.04 
+-1.79 -3.02 -0.87 -3.55 2.89 -4.36 1.89 -1.43 0 -10.96 -2.02 -2.14 0.41 -1.19 1.76 -0.33 
+-0.15 3.66 0 10.96 3.49 -2.67 5.3 -4.19 5.08 -3.69 0.28 -0.28 0.43 -0.21 5.13 -3.3 
+0.5 -0.65 -2.06 -3.28 -0.17 -0.05 -6.25 0 -1.34 -0.91 -2.74 -0.82 -5.34 -0.74 -6.77 1.11 
+-2.13 5.34 -0.79 2.97 -0.78 2.5 -1.87 5.51 -0.35 0.91 -5.49 3.67 -4.1 5.62 5.96 -0.91 
+1.73 0.31 3.7 1.82 -0.11 4.06 -2.2 3.71 -5.9 2.86 -6.05 1.13 -0.37 -0.15 -4.08 -1.17 
+-3.04 -0.22 f*
+7 193 59 rG
+1156.23 1762.93 -5.03 4.54 5.9 -0.09 -5.34 4.62 5.86 -0.04 -5.62 4.69 0.71 0 7.79 -4.75 
+7.36 -3.97 1.78 -1.09 4.75 -4.92 0 -0.11 -0.13 0.11 -6.05 0.45 -6.01 0.34 -5.97 0.22 f*
+0 255 r6
+1164.17 1701.17 -7.14 3.02 4.14 2.8 4.01 -4.3 -1.02 -1.52 f*
+2 239 204 rG
+1152.71 1776.65 5.1 -0.02 5.71 -4.84 3.71 -0.17 6.96 -4.38 0.85 -0.79 5.34 -5.12 1.5 -0.15 
+1.87 -3.23 0.43 -1.61 -4.89 0.56 -4.9 4.91 0 0.11 -4.75 4.92 -1.78 1.09 -7.36 3.97 
+-7.79 4.75 f*
+255 0 r6
+1166.55 1073.94 -6.45 -0.78 0.96 5.45 0.87 5.47 0.83 5.49 6.53 0.87 0.78 5.53 0.74 5.54 
+0.65 5.55 0.63 5.55 0.54 5.56 0.5 5.57 6.6 1.09 0.45 5.62 6.57 1.16 0.39 5.64 
+6.55 1.2 0.35 5.71 6.53 1.26 -0.37 -5.73 -0.41 -5.71 -0.5 -5.71 -0.54 -5.7 -0.61 -5.69 
+-0.67 -5.68 -6.47 -1.09 -0.71 -5.64 -0.79 -5.62 -0.84 -5.62 -6.45 -0.96 -0.89 -5.57 -0.96 -5.56 
+-1.02 -5.55 -1.06 -5.54 -6.36 -0.8 -6.4 -0.76 1.02 5.47 f*
+7 193 59 rG
+1165.37 1642.01 -2.54 -2.06 2.25 -1.93 1.28 0.37 -0.99 3.62 f*
+255 203 0 rG
+1163.13 1624.96 -0.29 0.39 0.48 0.57 0.88 -1.25 -1.07 0.3 f*
+0 155 255 rG
+1167.23 1771.62 2.25 -0.11 4.71 -4.27 -6.96 4.38 f*
+7 193 59 rG
+1168.38 1749.2 1.73 -0.15 3.54 -3.93 -5.27 4.08 f*
+255 203 0 rG
+1175.24 1630.49 -0.58 4.08 2.75 -0.21 0.71 -1.43 0.55 -4.12 -2.23 -2.15 -1.2 3.84 f*
+1177.21 1587.35 -0.41 1.19 2.02 2.14 0.15 -3.66 -1.76 0.33 f*
+2 239 204 rG
+1182.51 1727.02 -0.02 -0.5 0.7 -0.45 6.27 -1.09 0.17 0.24 -1.41 1.52 -5.7 0.28 f*
+0 155 255 rG
+1181.88 1761.18 1.87 -3.23 0.43 -1.61 1.3 -0.16 6.18 -0.87 6.25 -0.98 6.29 -1.13 6.33 -1.25 
+5.06 -5.78 6.4 -1.56 4.8 -5.92 0.07 -0.02 6.42 -1.82 3.28 -4.36 1.11 3.02 -8.81 7.29 
+-0.84 0.63 -8.81 6.58 -3.84 2.28 -7.55 2.67 -6.25 1.13 -6.64 3.38 -4.08 2.2 1.87 -1.87 
+-6.19 0.84 -4.64 0.55 f*
+0 255 r6
+1189.3 1655.82 -5.47 4.95 2.91 2.69 1.43 0 0.65 -0.79 4.36 -5.55 2.32 -3.54 1.09 -1.8 
+5.55 -6.25 0.17 -0.3 -0.15 -0.04 -0.78 0.48 -5.62 5.25 -2.66 2.34 -3.8 2.56 f*
+255 0 r6
+1190.84 1761.66 -3.58 3.53 6.16 -0.82 5.54 -5.55 6.27 -1.13 6.32 -1.24 6.39 -1.41 5.4 -6.04 
+6.45 -1.71 5.14 -6.21 6.51 -2.02 4.88 -6.36 4.58 -6.39 6.55 -2.45 4.32 -6.49 4.04 -6.49 
+6.55 -2.87 3.73 -6.59 6.54 -3.15 3.43 -6.66 3.17 -6.62 -6.49 3.39 -6.46 3.23 -3.23 6.38 
+-6.49 2.97 -3.52 6.3 -6.51 2.69 -3.78 6.21 -4.05 6.2 -6.51 2.29 -4.32 6.09 -1.28 1.74 
+1.11 3.02 -8.81 7.29 -0.84 0.63 -8.81 6.58 -3.84 2.28 -7.55 2.67 -6.25 1.13 -6.64 3.38 
+-4.08 2.2 f*
+2 239 204 rG
+1189.43 1599.66 -2.11 -0.48 1.47 -1.28 5.6 -3.43 0.11 -0.04 6.46 -0.76 1 0.29 -0.46 1.24 
+-5.08 5.14 -1.34 0.21 0 -2 0.72 -0.11 0.8 -0.91 -1.07 0.11 -0.46 0.91 0 2 
+-4.03 0.61 -1.63 -1.49 f*
+7 193 59 rG
+1190.37 1516.95 -1.59 0.96 0.24 0.56 0.66 0.31 4.08 1.02 3.19 3.02 -0.24 3.2 0.55 2.88 
+1.25 4.88 -0.84 2.95 -3.28 6.1 -0.5 1.43 2.39 3.45 1.61 -0.35 3.11 -2.17 0 -1.91 
+-4.1 -1.91 1.82 -3.36 1.8 -6.27 -0.84 -2.47 2.71 0.54 1.32 4.23 0.05 0.54 -0.72 6.73 
+-0.84 1.11 -1.2 0.87 0 1.91 2.14 -1.52 4.71 -4.41 1.31 -4.01 -1.5 -4.67 -1.26 -3.26 
+-0.48 -1.24 -1.95 -4.38 2.45 -3.86 2.15 -1.24 3.61 -1.91 -0.07 -2.11 -0.07 -6.99 0 -0.16 
+4.04 -4.9 0.11 0.02 5.82 0.28 3.13 -0.15 3.63 -0.67 3.32 -1.26 3.17 0.8 3.58 3.1 
+2.82 3.95 3.28 3.39 0.98 5.06 -0.02 0.91 -0.93 7.86 -0.09 0.76 0.33 5.58 1.39 5.05 
+0.26 4.45 -0.26 1.84 2.06 4.14 1.68 0.29 5.68 -1.16 0.89 -0.15 4.43 1.24 3.25 -0.2 
+2.37 1.02 2.61 3.71 1.67 4.56 0.74 5.36 1.76 4.37 -0.37 3.88 -1.66 3.71 2.97 0.96 
+2.89 -0.18 3.66 0.74 1.02 1.05 4.64 0.36 0 -4.38 -2.56 -3.66 -4.1 -2.3 -1.35 0.2 
+-2.02 -1.67 -0.84 -0.72 -2.23 -3.99 -1.33 -4.84 -1.78 -4.49 -2.47 -3.86 -4.38 -2.02 -0.3 0 
+-4.82 -1.28 -3.32 -0.52 -3.21 0.63 -0.41 -0.52 -2.39 -2.98 -1.75 -4.62 -1.43 -4.99 -0.17 -2.99 
+0.54 -4.06 0.65 -5.38 0.37 -2.62 -1.65 -5.23 -3.38 -3.28 -2.82 -3.99 -3.54 -3.19 -4.95 -1.41 
+-0.78 -0.02 -6.27 1.22 -1.19 0.24 -5.23 0.24 -4.02 -0.45 -3.73 5.16 -0.17 4.88 0.3 4.19 
+-5.16 3.78 -5.25 3.58 -2.87 -3.47 3.21 -5.05 3.84 -5.05 -1.32 -3.62 -2.49 -4.3 -1.2 -4.99 
+4.23 -4.6 5.01 -3.91 4.23 -4.61 1.78 -0.49 5.27 1.02 3.17 0.02 2.62 0.33 6.06 -0.96 
+0.85 -0.2 5.9 -2.15 2.8 -1.46 3.54 -1.25 3.93 -0.66 4.6 0.11 1.59 -0.21 5.29 -1.89 
+2.2 -0.02 4.55 2.24 3.93 -0.24 2.19 0.25 4.54 2.26 2.41 -1.87 4.04 1.43 2.69 4.79 
+1.57 3.95 -2.78 -1.37 -0.5 -0.26 -4.32 -2.48 -4.43 -0.59 -1.65 0.48 -5.73 0.78 -1.3 0.41 
+-6.16 0.8 -0.65 0.09 -6.79 1.28 -2.65 6.54 0.33 4.06 0.82 6.59 0.98 1.72 1.58 2.64 
+3.02 3.73 -1.47 8.55 0 0.22 2.56 4.11 0.59 0.43 5.14 0.15 2.34 -0.37 3.55 0.82 
+4.95 0.89 0.52 0.02 4.7 1.78 3.63 1.07 1.56 0.17 4.86 -1.67 2.56 -6.57 0.65 -1.13 
+3.63 -6.71 5.1 -4.06 0.39 0.37 0 0.32 0.67 6.39 3.76 2.04 0.61 0.15 4.1 2.52 
+3.28 3.47 0.59 6.51 -1.54 3.54 -2.69 1.15 -4.28 -1.65 -3.6 8.21 0.09 1.73 1.89 4.67 
+0.33 0.34 2.84 3 -1.3 2.07 -4.67 6.4 -5.14 4.82 -4.49 1.67 -1.34 0.52 -1.48 1.54 
+-3.6 3.69 -0.02 0 0 4.38 1.02 0.09 0.98 -0.3 4.66 -2.8 5.21 -4.93 1.82 -2.73 
+2.91 -3.97 4.54 -7 4.19 -6.77 -4.23 -2.25 1.17 -7.8 5.77 -2.49 3.38 -7.84 -0.24 -1.48 
+-1.06 -4.25 -0.71 0 -3.61 -2.29 -3.71 -2.97 -2.47 -0.59 -2.26 -1.21 -0.37 -3.8 0.09 -3.39 
+-3.54 -3.28 -1.8 -2.32 1.13 3.15 -3.02 6.23 -4.25 5.55 -5.32 3.12 -0.26 0.02 -0.29 -0.02 
+-5.41 -0.36 -3.51 -3.17 -0.61 -0.42 -4.96 -0.39 -3.26 -3.45 -3.88 -2.69 -0.02 -0.02 -3.61 -3.11 
+-3.71 -2.99 P
+-2.84 -4.08 -0.37 -3.26 0.7 -4.97 0.84 -2.95 1.65 -0.3 5.97 -0.75 0.82 -0.11 5.95 -1.87 
+1.8 -0.24 5.13 -1.48 1.93 0.26 4.16 2.7 4.28 2.52 3.77 3.17 1.91 1.89 -1.24 -2.78 
+-2.16 -5.32 -2.76 -4.67 -2.93 -4.47 -4.66 -2.08 -1.21 0.18 -4.95 -0.14 -4.27 -0.52 -1.59 0.11 
+-4.9 -1.73 -3.86 0.06 -3.08 1.11 -4.28 0.57 -2.21 -0.04 -5.95 0.98 -1.15 0.41 -4.92 2.56 
+-4.06 1.5 -2.88 0.67 -4.17 0.67 -5.28 -0.65 -0.3 0 -5.06 -1.34 -4.45 1.23 -4.08 4.71 
+-3.82 2.78 -1.93 0.52 -4.58 4.3 0.61 2.97 2 5.02 2.25 4.53 0.02 0.02 -2.71 6.08 
+-4.78 4.12 -3.58 2.78 p f*
+110 210 9 rG
+1192.99 1687.33 -2.32 1.65 1.09 1.52 4.99 -3.34 -3.76 0.17 f*
+0 155 255 rG
+1195.81 1598.44 -0.72 0.11 0.46 -0.91 1.07 -0.11 -0.8 0.91 f*
+255 G
+1209.22 1883.88 -13.39 6.81 23.48 -12.11 11.76 -6.05 7.81 -4.04 -2.87 1.72 -13.41 6.83 -13.39 6.84 f*
+2 239 204 rG
+1198.27 1458.77 -2.34 1.48 0.26 1.82 3.69 3.5 3.95 3.06 2.06 1.39 0 -2.72 -0.89 -0.43 
+-3.96 -3.06 -0.09 -0.09 0.13 0.02 4.21 2.71 0.61 0.84 0 2.72 2.06 1.39 4.62 1.04 
+-1.67 -5.43 -3.41 -3.95 -4.32 -2.61 -4.9 -1.7 f*
+110 210 9 rG
+1200 1511.3 -3.21 5.05 2.87 3.47 5.25 -3.58 5.16 -3.78 -0.3 -4.19 0.17 -4.88 3.73 -5.16 
+4.02 0.45 5.23 -0.24 1.19 -0.24 6.27 -1.22 0.78 0.02 4.95 1.41 3.54 3.19 2.82 3.99 
+3.38 3.28 1.65 5.23 -0.37 2.63 -0.65 5.38 -0.54 4.06 0.17 2.99 1.43 4.99 1.75 4.62 
+2.39 2.98 0 -6.53 -3.13 -2.09 -1.49 -4.95 -0.02 -0.37 0.99 -7.4 0.24 -2.11 0.89 -6.12 
+-2.37 -4.43 -0.05 -0.04 -3.45 -3.15 -2.82 -4 -3.47 -3.27 -4.45 -2.08 -3.93 -0.02 -2.54 0.5 
+-4.91 1.02 -2.02 0.09 -4.32 -2.17 -3.23 1.65 -3.58 5.27 -4.45 -0.3 -2.71 -4.05 -0.63 -2.67 
+4.25 -4.58 4.73 -4.17 1.65 -1.69 3.06 -2.48 4.29 0.63 5.99 0.06 0.05 0 6.2 -0.26 
+2.52 -0.26 5.76 -3.28 0.65 -0.33 5.95 -2.11 1.89 -0.3 4.79 1.84 4.45 0.63 4.19 -4.86 
+0.52 0 4.19 2.73 6.25 -0.34 0.13 0 0.31 0.47 -0.68 0.04 -5.08 3.13 -3.73 0.56 
+-5.04 -0.63 -0.73 0.13 -5.67 2.39 -4.49 4.52 -0.06 6.59 0.97 3.87 0.76 1.64 1.26 5.97 
+2.8 4.01 0.75 5.58 -0.25 0.98 0.47 6.4 2.56 4.02 0.85 5.68 -5.08 4.09 0 6.53 
+0.41 0.52 3.21 -0.62 3.32 0.52 4.82 1.28 0.3 0 4.38 2.02 2.47 3.86 1.78 4.49 
+1.33 4.84 2.23 3.99 0.84 0.72 0 -4.54 -1.28 -1.82 -1.91 -4.32 -1.86 -4.43 -2.37 -3.99 
+-2.45 -3.95 -5.19 -0.28 -0.74 -0.2 -5.1 -1.3 0.92 -7.34 6.21 -2.12 2.43 -0.32 4.02 2.45 
+1.5 5.06 2.89 3.58 1.28 5.12 1.17 5.16 0.8 5.43 -0.3 3.28 0 4.54 2.02 1.67 
+1.35 -0.2 4.1 2.3 2.56 3.66 0.02 0 3.6 -3.69 0 -5.55 -3.12 -3.26 -1.07 -5.21 
+-0.89 -5.44 -2.61 -3.82 -1.88 -4.61 0.37 -3.16 3.91 -1.24 2.99 3.54 2.37 2.91 0.57 0.67 
+5.99 -1.37 1.19 0.63 0.23 3.21 -2.67 5.75 3.88 -2.26 1.72 1.7 0 -18.55 -1.48 -0.11 
+-4.84 0.09 -1.84 -4.93 1.69 -5.62 1.93 -5.64 1.15 -2.22 1.72 -1.17 3.06 3.78 3.86 2.8 
+1.34 0.02 3.3 1.87 2.13 4.77 0.04 5.93 -3.95 -1.52 -3.26 0.55 -1.67 0.48 -3.19 0.93 
+0 18.55 0.74 0.71 0.63 5.8 -0.41 0.52 -0.46 0.3 -5.79 0.43 -5.32 4.1 -0.37 0.09 
+0 5.55 1.48 -1.54 1.34 -0.52 4.49 -1.67 5.14 -4.82 4.67 -6.4 1.3 -2.07 -2.84 -3 
+-0.33 -0.34 -1.89 -4.67 -0.09 -1.73 3.6 -8.21 4.28 1.65 2.69 -1.15 1.54 -3.54 -0.59 -6.51 
+-3.28 -3.47 -4.1 -2.52 -0.61 -0.15 -3.76 -2.04 -0.67 -6.39 0 -0.32 -0.39 -0.37 -5.1 4.06 
+-3.62 6.71 -0.65 1.13 -2.56 6.57 -4.86 1.67 -1.56 -0.17 -3.63 -1.07 -4.7 -1.78 -0.52 -0.02 
+-4.95 -0.89 -3.55 -0.82 -2.34 0.37 -5.14 -0.15 -0.59 -0.43 -2.56 -4.11 0 -0.22 1.47 -8.55 
+-3.02 -3.73 -1.58 -2.64 -0.98 -1.72 -0.82 -6.59 -0.33 -4.06 2.65 -6.54 6.79 -1.28 0.65 -0.09 
+6.16 -0.8 1.3 -0.41 5.73 -0.78 1.65 -0.48 4.43 0.59 4.32 2.48 0.5 0.26 0 -2.2 
+-3.78 -1.97 -0.35 -3.04 2 0.74 2.13 4.27 0 2.2 2.78 1.37 -1.57 -3.95 -2.69 -4.79 
+-4.04 -1.43 -2.41 1.87 -4.54 -2.26 -2.19 -0.25 -3.93 0.24 -4.55 -2.24 -2.2 0.02 -5.29 1.89 
+-1.59 0.21 P
+-4.6 -0.11 -3.93 0.66 -3.54 1.25 -2.8 1.46 -5.9 2.15 -0.85 0.2 -6.06 0.96 -2.62 -0.33 
+-3.17 -0.02 -5.27 -1.02 -1.78 0.49 -4.23 4.61 -5.01 3.91 -4.23 4.6 1.2 4.99 2.49 4.3 
+1.32 3.62 -3.84 5.05 p f*
+1198.7 1538 -1.82 3.36 4.1 1.91 1.2 -0.87 0.84 -1.11 0.72 -6.73 -0.05 -0.54 -1.32 -4.23 
+-2.71 -0.54 0.84 2.47 -1.8 6.27 f*
+255 0 r6
+1201.54 1554.08 -1.8 -3.95 0.07 -0.13 0.3 -0.21 4.45 1.56 -0.71 4.6 -2.3 -1.87 f*
+0 255 r6
+1204.51 1489.97 -4.25 4.58 0.63 2.67 2.71 4.05 4.45 0.3 3.58 -5.27 3.23 -1.65 4.32 2.17 
+2.02 -0.09 4.91 -1.02 2.54 -0.5 3.93 0.02 4.45 2.08 3.47 3.27 2.82 4 3.45 3.15 
+0 -1.91 -2.61 -2.24 -2.82 -4.04 -3.43 -3.37 -3.93 -2.71 -5.23 -1.11 -3.49 -0.5 -2.52 0.43 
+-3.91 -2.75 -4.88 0.37 -4.17 4.71 -3.39 5.4 -1.71 -0.11 -2.93 -3.79 -0.08 -0.37 2.06 -2.19 
+3.28 -1.43 5.51 -3.47 3.78 -5.01 0.84 0.13 4.36 2.23 5.43 -1.26 1.61 -0.07 6.45 -0.48 
+0.58 0.02 6.55 -1.43 -0.8 7.23 -0.59 2.61 0.91 6.53 4.06 2.56 1.06 4.11 0 1.91 
+0.05 0.04 2.37 4.43 -0.89 6.13 -0.24 2.11 -0.99 7.4 0.02 0.37 1.49 4.95 1.37 0.91 
+0 -1.71 -0.34 -0.24 -0.2 -0.65 1.43 -0.62 -0.89 1.52 0 1.71 1.76 1.18 5.08 -4.09 
+-0.85 -5.68 -2.56 -4.02 -0.47 -6.4 0.25 -0.98 -0.75 -5.58 -2.8 -4.01 -1.26 -5.97 -0.76 -1.64 
+-0.97 -3.87 0.06 -6.59 4.49 -4.52 5.67 -2.39 0.73 -0.13 5.04 0.63 3.73 -0.56 5.08 -3.13 
+0.68 -0.04 -0.31 -0.47 -0.12 0 -6.25 0.34 -4.19 -2.73 -0.52 0 -4.19 4.86 -4.45 -0.63 
+-4.79 -1.84 -1.89 0.3 -5.95 2.11 -0.65 0.33 -5.76 3.28 -2.52 0.26 -6.2 0.26 -0.05 0 
+-5.99 -0.06 -4.29 -0.63 -3.06 2.48 -1.65 1.69 -4.73 4.17 f*
+7 193 59 rG
+1201.06 1463.74 -0.13 -0.02 0.09 0.09 3.96 3.06 0.89 0.43 -0.61 -0.84 -4.21 -2.71 f*
+0 155 255 rG
+1200.15 1731.58 1 -0.2 3.73 -5.16 0.58 -0.87 -0.95 0.93 -4.36 5.3 f*
+255 203 0 rG
+1203.73 1493.58 -2.06 2.19 0.08 0.38 2.93 3.79 1.71 0.11 3.39 -5.4 4.17 -4.71 4.88 -0.37 
+3.91 2.75 2.52 -0.43 3.49 0.5 5.23 1.11 3.93 2.71 3.43 3.37 2.82 4.04 2.61 2.24 
+-1.06 -4.11 -4.06 -2.56 -0.91 -6.53 0.59 -2.61 0.8 -7.23 -6.55 1.43 -0.58 -0.02 -6.45 0.48 
+-1.61 0.07 -5.43 1.26 -4.36 -2.23 -0.84 -0.13 -3.78 5.01 -5.51 3.47 -3.28 1.43 f*
+7 193 59 rG
+1213.71 1620.57 -2.54 3.41 0.39 4.13 2.73 -0.09 0.65 -1.75 0.05 -4.41 -1.28 -1.29 f*
+1212.02 1544.45 -0.59 -0.24 0.11 0.67 1.17 4.69 1.68 4.17 3.69 2.32 1.02 0.13 0.32 -1.3 
+-1.02 -4.77 -3.01 -3 -3.37 -2.66 f*
+255 0 r6
+1216.19 1564.28 -1.52 0.2 0.54 -2.04 1 0.74 -0.02 1.11 f*
+0 155 255 rG
+1211.89 1720.14 2.91 -0.79 3.02 -4.84 -5.92 5.63 f*
+2 239 204 rG
+1226.82 1738.67 -0.02 0.02 0.07 -0.02 -0.05 0 f*
+255 0 r6
+1229.12 1710.68 1.84 -0.61 0.39 -0.69 -2.24 1.3 f*
+1238.43 1622.87 -0.46 -0.76 0.31 -2.54 5.34 -0.89 -5.19 4.19 f*
+1248.03 1863.02 -9.14 5.46 3.75 -1.95 0.29 -0.16 6.33 -4.1 -1.23 0.74 f*
+1238.52 1702.95 1.99 -0.74 6.45 -2.45 6.45 -2.61 -3.06 5.88 6.47 -2.63 3.05 -6.01 6.45 -2.88 
+6.45 -3.04 2.76 -6.2 2.52 -6.14 -6.4 3.25 -6.39 3.11 -6.42 2.97 -6.4 2.82 2.41 -5.69 
+-6.4 2.8 -4.25 1.78 1.11 4.11 -2.52 5.54 -4.25 6.14 f*
+1242.93 1866.38 -0.29 0.16 0.17 -0.09 0.11 -0.07 f*
+255 G
+1246.25 1864.52 -3.32 1.87 6.33 -4.1 10.77 -6.45 12.02 -7.18 12.07 -8.79 2.28 -1.65 6.42 -4.16 
+11.87 -7.68 -1.57 1.15 -9.2 6.58 -9.31 6.4 -9.44 6.25 -9.53 6.1 -9.66 5.92 -9.74 5.75 f*
+1260.03 1855.84 -10.77 6.45 6.05 -3.93 12.5 -8.09 12.5 -8.12 6.08 -3.93 -2.28 1.65 -12.07 8.79 
+-12.02 7.18 f*
+255 203 0 rG
+1250.82 1530.84 -1.43 0.63 0.2 0.65 0.34 0.24 0.89 -1.52 f*
+7 193 59 rG
+1250.61 1561.71 -0.63 6.13 1.09 4.66 1.15 4.58 3.54 0.57 0 -1.65 -1.87 -0.29 -1.21 -4.54 
+-0.89 -4.88 0.16 -1.33 0.84 0.5 2.82 3.25 3.06 3.06 -2.91 4.21 0 1.65 0.52 0.09 
+4.93 -5.58 0.91 -3.26 -2.3 -0.97 -1.89 -1.17 -3.34 -2.84 -3.97 -2.2 f*
+110 210 9 rG
+1251.93 1564.97 -0.16 1.33 0.89 4.88 1.21 4.54 1.87 0.29 2.91 -4.21 -3.06 -3.06 -2.82 -3.25 
+-0.84 -0.5 f*
+0 255 r6
+1256.82 1531.23 -0.92 7.34 5.1 1.3 0.74 0.2 5.19 0.28 2.45 3.95 2.37 3.99 1.86 4.43 
+1.91 4.32 1.28 1.82 0.3 -3.28 -0.8 -5.43 -1.17 -5.16 -1.28 -5.12 -2.89 -3.58 -1.5 -5.06 
+-4.02 -2.45 -2.43 0.32 -6.21 2.13 f*
+0 155 255 rG
+1262.07 1496.81 -3.39 -3.54 0.37 -2.69 1.87 -0.18 6.01 -0.46 0.74 -0.3 4.88 -2.95 4.86 -1.78 
+1.95 -0.02 2.78 1.96 3.95 2.93 3.56 3.41 3.08 4 2.84 4.21 0.96 6.46 -0.57 1.15 
+-2.3 2.3 -1.28 0.35 0 -6.34 1.22 -0.26 -0.11 -1.06 -3.02 -3.97 -2.56 -4.62 -2.82 -3.04 
+-1.26 8.18 6.27 -0.07 2.28 4.84 0 6.34 -1.98 0.54 -3.84 0.11 -4.08 -0.78 -1.02 -0.59 
+-4.07 -2.56 -3.47 -3.3 -3.78 -2.95 -3.09 -1.67 -1.17 -0.72 -3.82 -2.93 f*
+255 0 r6
+1259.79 1559.33 -0.67 -5.32 1.15 -2.28 1.37 -0.04 4.41 1.95 0.02 5.99 -1.46 2.78 -1.15 -0.45 
+-3.67 -2.62 f*
+0 255 r6
+1281.25 1536.09 -0.37 3.16 1.88 4.61 2.61 3.82 0.89 5.44 1.07 5.21 3.12 3.26 0.38 -0.09 
+5.32 -4.1 5.79 -0.43 0.46 -0.3 0.41 -0.52 -0.63 -5.8 -0.74 -0.71 -1.72 -1.7 -3.88 2.26 
+2.67 -5.75 -0.23 -3.21 -1.19 -0.63 -5.99 1.37 -0.57 -0.67 -2.37 -2.91 -2.99 -3.54 -3.91 1.24 f*
+1282.9 1477.41 -2 -0.74 0.35 3.04 3.78 1.97 -2.13 -4.27 f*
+255 0 r6
+1290.11 1500.48 -6.27 0.07 1.26 -8.18 2.82 3.04 2.56 4.63 3.02 3.97 0.11 1.06 -1.22 0.26 
+-2.28 -4.84 f*
+1296.2 1831.08 -9.8 7.14 6.42 -4.16 11.87 -7.68 1.37 -1.02 10.29 -8.46 4.88 -4.02 -0.87 0.63 
+-12.09 8.79 -12.07 8.79 f*
+0 255 r6
+1294.96 1520.5 -1.69 5.63 1.84 4.93 4.84 -0.09 1.48 0.11 3.19 -0.93 0 -2.58 -0.5 -0.02 
+-5.49 -0.33 -2.3 -4.05 -0.17 -0.24 0.02 -0.05 2.69 -8.7 3.26 1.89 3.3 3.47 3.34 0.06 
+1.91 1.11 1.02 5.46 -6.38 1.2 -0.7 0.2 0 2.58 1.67 -0.48 3.26 -0.55 3.95 1.52 
+-0.04 -5.93 -2.13 -4.77 -3.3 -1.87 -1.34 -0.02 -3.86 -2.8 -3.06 -3.78 -1.72 1.17 -1.15 2.22 
+-1.93 5.64 f*
+255 203 0 rG
+1296.18 1522.87 -0.02 0.05 0.17 0.24 2.3 4.05 5.49 0.33 0 -2.84 -3.1 -0.09 -0.07 0 
+-2.52 -4.28 1.37 -4.43 1.63 0.98 2.71 4.12 5.34 0.16 0.54 0.3 0.28 1.54 -2.02 0.43 
+-4.17 1.26 0 2.84 0.5 0.02 0.7 -0.2 6.38 -1.2 -1.02 -5.46 -1.91 -1.11 -3.34 -0.06 
+-3.3 -3.47 -3.26 -1.89 -2.69 8.7 f*
+255 135 0 rG
+1299.8 1515.91 -1.37 4.43 2.52 4.28 0.07 0 0 -6.36 -0.33 -0.5 0.02 -0.08 0.02 0.02 
+0.29 0.56 0 6.36 3.1 0.09 4.17 -1.26 2.02 -0.43 -0.28 -1.54 -0.54 -0.3 -5.34 -0.16 
+-2.71 -4.12 -1.63 -0.98 f*
+255 35 0 rG
+1300.71 1517.67 -0.02 0.08 0.33 0.5 -0.29 -0.56 -0.02 -0.02 f*
+255 0 r6
+1306.05 1825.34 -1.37 1.02 0.65 -0.41 0.71 -0.61 f*
+255 G
+1312.21 1820.77 -6.16 4.58 10.29 -8.46 4.88 -4.02 11.2 -8.13 10.87 -9.55 8.31 -7.32 8.21 -6.75 
+-3.97 3.64 -8.47 7.51 -8.59 7.36 -8.72 7.2 -8.86 7.06 -8.98 6.88 f*
+1332.42 1804.73 -11.2 8.13 6.12 -5.04 22.01 -18.1 2.25 -1.87 -8.31 7.32 -10.87 9.55 f*
+255 0 r6
+1328.67 1332.68 -1.85 6.36 4.84 3.37 1.91 -6.41 1.8 -6.45 1.72 -6.46 -4.97 -3.23 -1.67 6.42 
+-1.78 6.41 f*
+1351.75 857.68 -11.69 -9.94 5.01 6.57 11.46 10.03 4.25 6.38 11.15 10.62 -3.99 -6.38 -4.51 -6.73 
+-11.68 -10.54 f*
+1354.14 1785.66 -2.54 2.21 8.21 -6.75 0.91 -0.83 2.43 -2.54 -9 7.9 f*
+1360.72 1780.29 -0.91 0.83 0.54 -0.44 0.37 -0.39 f*
+255 G
+1365.02 1776.13 -1.87 1.63 9.01 -9.46 35.42 -37.17 6.66 -6.99 -3.91 5.08 -11.33 11.72 -11.33 11.74 
+-11.33 11.72 -11.33 11.74 f*
+255 0 r6
+1385.16 1568.04 -0.29 6.94 5.43 -6.29 5.34 -6.47 5.25 -6.61 5.16 -6.8 5.08 -6.96 0.05 7.14 
+-0.18 7.3 5.23 -7.14 5.12 -7.32 5.04 -7.48 4.9 -7.68 0.09 7.4 4.95 -7.88 4.84 -8.09 
+4.71 -8.27 -0.5 -7.27 4.45 -8.42 -0.85 -7.03 -4.32 8.33 -4.43 8.18 -2.09 3.63 -2.47 4.36 
+-4.69 7.83 -0.54 -7.07 -4.66 7.64 -4.78 7.45 -4.88 7.29 -0.39 -6.97 -4.88 7.1 -4.95 6.96 
+-0.39 -6.86 -4.95 6.79 -5.04 6.64 0.18 6.83 -5.23 6.49 -5.32 6.32 f*
+1401.26 901.87 -12.03 -13.05 4.71 7.51 4.1 7.07 3.61 6.68 3.1 6.32 2.67 5.95 2.23 5.6 
+1.87 5.27 1.52 4.97 9.42 12.24 9.18 12.65 8.9 13.02 0.39 4.14 0.11 3.87 -8.38 -12.66 
+0.11 3.8 8.14 12.43 7.86 12.74 -0.61 3.11 7.33 12.78 7.04 13.04 -1.22 2.39 6.49 13 
+-1.54 1.91 -1.71 1.74 -1.84 1.56 -1.97 1.39 -2.11 1.26 -5.67 -11.76 -2.08 1.34 -2.21 1.2 
+-5.67 -11.18 -2.19 1.25 -2.3 1.17 -5.67 -10.68 -2.3 1.21 -2.41 1.11 -2.52 1 -5.53 -10.03 
+-2.52 1.04 -2.62 0.96 5.29 9.72 -2.82 0.71 4.96 9.66 4.76 9.75 4.53 9.83 4.32 9.92 
+4.08 9.96 3.86 10.02 -3.45 -0.35 3.56 9.89 3.36 9.94 3.13 9.98 2.88 10.01 2.7 10.02 
+2.45 10.03 2.23 10.05 3.78 1.63 2.04 10.22 3.75 1.8 3.67 1.8 1.84 10.61 3.63 2.04 
+3.57 2.02 3.5 2.04 1.63 11.26 3.45 2.28 1.37 11.46 1.11 11.41 0.85 11.37 3.34 3.04 
+0.55 11.57 0.3 11.48 3.19 3.58 3.1 3.67 -0.06 11.91 2.97 4 0.13 -12.16 2.95 3.82 
+2.88 3.93 -0.26 12.71 -0.56 12.61 -0.87 12.5 2.54 4.89 2.41 5.05 2.32 5.21 2.2 5.38 
+1.28 -13.7 0.93 -13.87 0.61 -14.02 0.22 -14.15 2.5 4.13 -0.07 -14.67 2.47 3.84 2.41 3.95 
+-0.37 -15.62 2.39 3.57 2.3 3.67 0.21 16.63 -0.28 16.45 -0.73 16.25 -1.2 16.08 -1.65 15.82 
+1.54 6.3 -2.26 16.02 -2.69 15.73 -3.11 15.41 -3.47 15.08 -0.63 -7.88 -0.86 -7.57 -3.35 14.08 
+-0.84 -7.59 -1.04 -7.29 -3.21 13.2 -3.52 12.93 -3.78 12.65 -0.65 -7.77 -3.82 12.15 -0.67 -7.72 
+-2.41 7.31 -1.46 4.38 -0.7 -7.66 -0.91 -7.4 -3.71 11.09 -3.17 8.79 -0.76 2.06 -0.75 -7.48 
+-3.95 10.5 0.61 7.62 0.37 7.86 4.3 -10.76 4.1 -11 0.5 7.82 0.26 8.09 0 8.38 
+-4.73 11.48 -0.52 8.83 4.95 -11.63 -0.59 8.98 -0.91 9.33 5.25 -12.33 -1 9.51 -1.34 9.87 
+-1.75 10.29 5.92 -13.29 5.66 -13.71 -1.5 10.29 -1.95 10.77 -2.41 11.26 -2.93 11.79 -3.52 12.37 
+7.4 -15.43 3.06 -12.13 2.52 -11.54 2 -11.01 5.82 -15.19 5.46 -15.71 5.1 -16.19 -0.8 9.94 
+5.08 -17.12 0.43 -9.53 0.11 -9.05 -4.35 16.28 -4.75 15.82 0.48 -9.39 0.17 -8.98 4.1 -15.08 
+3.73 -15.45 3.34 -15.84 2.93 -16.17 2.49 -16.47 2.02 -16.79 1.54 -17.06 1.63 5.79 1.21 -17.88 
+0.65 -18.12 0.07 -18.32 -0.5 -18.46 2.04 3.49 -1.07 -19.29 2 2.87 -1.7 -20.1 1.93 2.11 
+-2.46 -20.94 1.83 1.23 1.71 1.15 1.65 1.04 -3.56 -23.7 -1.52 -0.04 -4.3 -22.54 -5.14 -22.36 
+1.04 -1.93 -6.29 -22.96 0.48 -3.3 -7.59 -23.48 -8.44 -22.89 -9.23 -22.27 -9.95 -21.55 -10.6 -20.77 
+-11.17 -19.97 -11.68 -19.1 3.28 8.01 -11.5 -17.88 -11.87 -17.08 3.75 7.96 -11.66 -16.05 -11.91 -15.3 
+4.11 7.77 -11.72 -14.45 -11.87 -13.71 f*
+1395.07 1353.5 -2.11 7.16 3.97 4.19 3.88 4.27 2.22 -7.27 2.11 -7.34 3.91 4.25 3.79 4.36 
+-2.21 7.46 -2.37 7.38 -2.45 7.33 3.5 4.63 2.54 -7.38 2.4 -7.46 3.54 4.6 2.37 -7.59 
+2.23 -7.68 2.08 -7.75 1.98 -7.81 1.82 -7.9 1.7 -7.96 3.82 4.23 3.73 4.32 1.67 -8.21 
+3.69 4.32 3.6 4.43 1.65 -8.48 -3.67 -4.32 -3.75 -4.23 1.37 -8.36 1.21 -8.42 -3.95 -3.93 
+-4.02 -3.86 -4.12 -3.75 -1.09 8.12 -1.21 8.05 -4.1 -3.86 -1.3 7.9 -1.45 7.86 -1.56 7.79 
+-4.04 -4.04 -1.67 7.64 -1.78 7.59 -4.02 -4.1 -1.87 7.44 -4.04 -4.07 -1.93 7.33 -4.07 -4.08 
+-2 7.21 f*
+1402.2 1380.77 -2.52 7.18 3.54 4.6 2.61 -7.25 -3.62 -4.53 f*
+1422.46 1713.46 -8.23 10.68 5.14 -5.41 26.3 -35.03 13.15 -17.49 -12.13 15.75 -12.11 15.73 -12.13 15.76 f*
+1439.93 1448.29 -3.61 7.99 1.82 6.14 3.71 -8.05 1.78 6.23 3.69 -8.25 3.56 -8.38 -2 -6.07 
+3.3 -8.44 3.14 -8.57 2.99 -8.71 2.32 5.82 2.95 -8.92 -2.43 -5.71 2.69 -8.96 2.52 -9.07 
+-2.75 -5.34 2.25 -9.07 2.11 -9.18 -0.21 -0.32 -2.84 -4.64 -3.15 -4.86 -3.26 -4.73 -3.36 -4.64 
+-1.79 8.7 -3.41 -4.62 -1.87 8.5 -2.02 8.44 -2.17 8.33 -3.28 -4.82 -2.23 8.16 3.21 4.91 
+3.09 5.04 -2.54 8.22 2.9 5.26 -2.78 8.22 2.7 5.43 -2.99 8.2 -3.15 8.1 2.34 5.73 
+-3.36 8.03 2.11 5.93 f*
+1445.27 1291.21 -0.91 8.55 3.93 3.91 3.82 3.99 1.02 -8.79 3.8 3.97 3.69 4.04 3.63 4.14 
+3.54 4.21 1.04 -9.37 -3.58 -4.08 -3.67 -3.99 -3.78 -3.93 -3.84 -3.82 -3.93 -3.75 -0.79 8.73 
+-3.97 -3.8 f*
+1468.01 1420.95 -3.17 9.13 1.84 6.27 3.3 -9.25 3.12 -9.39 2.95 -9.55 2.76 -9.7 2.58 -9.86 
+2.39 -9.96 -2.54 -5.54 2.11 -9.96 -2.75 -5.2 -2 9.8 -2.19 9.7 -2.69 -5.37 -2.29 9.44 
+2.61 5.49 -2.54 9.44 -2.73 9.31 2.23 5.91 -2.99 9.29 f*
+1469.71 1296.4 -0.89 9.46 3.52 4.19 0.93 -9.62 -3.56 -4.04 f*
+1476.2 1453.56 -3.82 9.68 0.93 7.21 3.97 -9.81 -1.08 -7.07 f*
+1480.1 1308.79 -1.05 9.92 3.22 4.52 3.12 4.6 3.02 4.71 1.26 -10.42 1.06 -10.54 -3.17 -4.36 
+-3.28 -4.26 -0.89 10.18 -3.3 -4.34 f*
+1484.05 1571.79 -4.64 13.15 8.14 -14.95 4.17 -12.98 -7.66 14.78 f*
+1496.77 1320.64 -1.2 10.91 2.78 4.92 1.3 -11.13 -2.89 -4.7 f*
+1527.34 1452.63 -0.78 10.02 5.05 -18.14 0.37 -9.53 -4.64 17.64 f*
+Q q
+0 72 3400 0 0 4128 ^ Y
+255 G
+274.39 1315 0 -24.85 0.26 -10.22 0.49 -11.31 0.7 -11.31 0.89 -11.31 1.09 -11.26 1.28 -11.25 
+1.48 -11.24 1.67 -11.2 1.87 -11.17 2.06 -11.14 2.25 -11.09 2.43 -11.05 2.65 -11.02 2.82 -10.96 
+3.04 -10.91 3.21 -10.86 3.38 -10.8 3.61 -10.74 3.77 -10.68 3.95 -10.62 4.14 -10.52 4.35 -10.46 
+4.51 -10.39 4.69 -10.3 4.86 -10.22 5.05 -10.13 5.21 -10.05 5.4 -9.94 5.55 -9.86 5.75 -9.76 
+5.91 -9.66 6.08 -9.54 6.25 -9.45 6.4 -9.33 6.58 -9.23 6.72 -9.11 6.88 -8.98 7.03 -8.86 
+3.61 -4.36 3.6 -4.38 7.34 -8.59 3.75 -4.26 3.75 -4.23 3.82 -4.18 3.82 -4.16 3.88 -4.11 
+3.89 -4.12 7.94 -8.07 4.04 -3.97 4.01 -3.97 4.11 -3.88 4.1 -3.91 4.19 -3.82 4.17 -3.82 
+8.46 -7.51 4.3 -3.67 4.29 -3.69 8.73 -7.21 4.42 -3.52 4.43 -3.54 4.5 -3.45 4.49 -3.43 
+4.54 -3.39 4.55 -3.36 4.6 -3.28 4.6 -3.3 4.67 -3.21 4.64 -3.19 4.73 -3.15 4.7 -3.12 
+4.78 -3.04 4.75 -3.04 4.84 -2.95 4.82 -2.95 4.86 -2.89 4.88 -2.87 4.92 -2.8 4.91 -2.78 
+4.97 -2.71 4.97 -2.69 5.01 -2.63 5.04 -2.61 5.06 -2.54 5.05 -2.52 5.1 -2.45 5.1 -2.43 
+5.17 -2.34 5.14 -2.34 10.38 -4.52 5.21 -2.17 5.23 -2.16 5.25 -2.09 5.27 -2.06 5.29 -2 
+5.3 -1.97 5.34 -1.89 5.32 -1.89 10.72 -3.6 5.41 -1.7 5.38 -1.71 10.85 -3.21 5.45 -1.52 
+5.45 -1.5 5.49 -1.43 5.47 -1.41 10.98 -2.65 5.54 -1.21 5.51 -1.23 5.55 -1.13 5.53 -1.13 
+5.56 -1.02 5.55 -1.04 11.16 -1.87 5.6 -0.84 5.59 -0.82 11.2 -1.48 5.62 -0.65 5.62 -0.62 
+5.64 -0.57 5.62 -0.52 5.64 -0.46 5.64 -0.43 11.28 -0.69 5.64 -0.26 5.64 -0.24 5.66 -0.15 
+4.39 -0.11 25.15 0 4.38 0.11 5.66 0.15 5.64 0.24 5.64 0.26 11.29 0.69 5.64 0.43 
+5.64 0.46 5.62 0.54 5.64 0.55 5.62 0.63 5.6 0.65 5.62 0.74 5.6 0.74 5.6 0.82 
+5.57 0.84 11.16 1.87 5.58 1.04 5.55 1.02 5.54 1.13 5.55 1.13 5.51 1.23 5.51 1.21 
+5.51 1.32 5.49 1.33 5.49 1.41 5.47 1.43 5.45 1.5 5.45 1.52 10.85 3.21 5.39 1.71 
+5.38 1.7 5.38 1.8 5.36 1.8 5.32 1.89 5.34 1.89 5.3 1.97 5.29 2 5.27 2.06 
+5.25 2.09 5.23 2.16 5.21 2.17 10.37 4.52 5.17 2.34 5.14 2.34 5.1 2.45 5.1 2.43 
+5.05 2.52 5.06 2.54 5.01 2.61 5.04 2.63 4.97 2.69 4.97 2.71 4.9 2.78 4.93 2.8 
+4.88 2.87 4.86 2.89 4.84 2.95 4.82 2.95 4.75 3.04 4.77 3.04 4.71 3.14 4.73 3.13 
+4.67 3.19 4.64 3.21 4.6 3.3 4.6 3.28 4.56 3.36 4.53 3.39 4.5 3.43 4.49 3.45 
+4.43 3.54 4.43 3.52 8.72 7.21 4.3 3.69 4.29 3.67 8.47 7.51 4.19 3.82 4.17 3.82 
+4.1 3.91 4.1 3.88 4.04 3.97 4.01 3.97 7.95 8.07 3.88 4.13 3.89 4.11 3.82 4.16 
+3.82 4.18 3.75 4.23 3.75 4.26 7.34 8.59 3.61 4.38 3.6 4.36 7.04 8.86 6.88 8.98 
+6.73 9.11 6.58 9.23 6.4 9.33 6.25 9.45 6.08 9.54 5.9 9.66 5.73 9.76 5.58 9.86 
+5.4 9.94 5.21 10.05 5.06 10.13 4.86 10.22 4.69 10.3 4.51 10.39 4.34 10.46 4.14 10.52 
+3.95 10.62 P
+3.78 10.68 3.61 10.74 3.39 10.8 3.21 10.86 3.04 10.91 2.82 10.96 2.64 11.02 2.43 11.05 
+2.25 11.09 2.06 11.14 1.87 11.17 1.67 11.2 1.47 11.24 1.28 11.25 1.09 11.26 0.89 11.31 
+0.7 11.31 0.5 11.31 0.26 10.2 0 24.89 -0.26 10.2 -0.5 11.31 -0.7 11.3 -0.89 11.29 
+-1.09 11.28 -1.28 11.24 -1.47 11.24 -0.29 1.87 0 -133.57 -0.07 -2.09 -0.08 -2.13 -0.07 -2.15 
+-0.11 -2.17 -0.11 -2.19 -0.21 -4.51 -0.16 -2.32 -0.13 -2.34 -0.17 -2.37 -0.35 -4.02 -0.41 -4.04 
+-0.41 -4.06 -0.45 -4.1 -0.5 -4.14 -0.41 -3.3 -0.41 -3.32 -0.45 -3.36 -0.46 -3.38 -0.5 -3.41 
+-0.26 -1.99 -0.28 -2.04 -0.57 -4.12 -0.3 -2.12 -0.61 -3.61 -0.62 -3.62 -0.68 -3.66 -0.67 -3.69 
+-0.71 -3.71 -0.76 -3.75 -0.78 -3.8 -0.8 -3.82 -0.82 -3.84 -0.87 -3.87 0.22 1.43 0.21 1.39 
+0.09 0.7 0.85 3.9 0.8 3.86 0.76 3.84 0.74 3.78 0.7 3.73 0.49 2.85 0.5 2.8 
+0.48 2.78 0.43 2.75 0.45 2.71 0.42 2.63 0.39 2.61 0.39 2.58 0.39 2.56 0.34 2.54 
+0.35 2.56 0.32 2.54 0.61 4.99 0.28 2.45 0.48 3.97 0.43 3.95 0.42 3.88 0.39 3.87 
+0.34 3.82 0.61 6.49 0.5 6.45 0.46 6.36 0.36 6.3 0 133.57 -1.39 9.33 -1.87 11.16 
+-2.06 11.16 -2.25 11.09 -2.43 11.05 -2.64 11.03 -2.82 10.95 -3.04 10.92 -3.21 10.85 -2.61 8.27 
+0 -13 0.89 -2.65 0.89 -2.71 0.87 -2.78 0.89 -2.84 0.91 -2.93 0.54 -2.17 0.54 -2.14 
+0.52 -2.13 0.5 -2.11 0.48 -2.08 -1.34 5.05 -1.39 4.97 -1.41 4.9 -1.43 4.84 -1.46 4.78 
+0 13 -0.78 2.54 -3.61 10.74 -3.78 10.68 -3.95 10.61 -2.04 5.19 0 -12.48 1.22 -3.16 
+1.24 -3.22 1.21 -3.27 1.24 -3.3 1.21 -3.37 -0.93 2.73 -0.95 2.74 -0.96 2.71 -0.98 2.73 
+-1 2.73 1.39 -3.64 1.37 -3.69 1.34 -3.73 1.34 -3.79 1.32 -3.82 1.04 -3.28 1 -3.23 
+0.95 -3.19 0.93 -3.16 0.91 -3.15 -1.15 3.67 -1.15 3.65 -1.19 3.63 -1.2 3.58 -1.21 3.58 
+-1.37 3.93 -1.39 3.88 -1.41 3.87 -1.43 3.82 -1.41 3.78 0 12.48 -2.11 5.34 -4.34 10.46 
+-4.51 10.39 -4.69 10.3 -4.86 10.22 -5.06 10.13 -5.21 10.05 -0.76 1.36 0 -20.86 1.09 -1.82 
+1.09 -1.84 1.08 -1.89 0.93 -2.3 0.89 -2.28 0.87 -2.21 -1.07 1.7 -1.04 1.67 -1.02 1.63 
+-0.91 2.41 -0.93 2.46 -0.98 2.49 0 20.86 -0.7 1.3 0 -23.74 1.67 -3.56 1.67 -3.53 
+1.61 -3.52 0.46 -1.29 0.43 -1.25 0.41 -1.24 1.48 -3.78 0.7 -1.84 -0.79 1.41 -0.8 1.39 
+-0.79 1.37 -1.06 2.24 -1.06 2.21 -1.09 2.23 -1.08 2.82 -1.13 2.89 -1.15 2.91 0.17 0.2 
+0.34 0.35 0 23.74 -3.95 7.27 -5.58 9.85 -3.82 6.53 0 -39.97 1.34 -1.82 1.37 -1.89 
+1.39 -1.93 0.66 -0.74 0.67 -0.75 0.67 -0.79 1.61 -3.52 1.56 -3.5 1.54 -3.49 -0.56 0.71 
+-0.57 0.7 -0.54 0.7 -1.09 1.65 -1.06 1.63 -1.09 1.58 -1.57 2.72 -1.58 2.69 -1.58 2.63 
+-0.39 1.15 -0.39 1.13 -0.39 1.15 0 39.97 -1.91 3.23 -3.23 5.29 0 -46.74 1.48 -2.21 
+1.48 -2.26 2.76 -5.32 2.73 -5.34 -2.41 3.88 -0.71 1.13 0 -1.84 1.84 -2.97 1.83 -3.04 
+2.04 -4.41 p
+2.02 -4.45 2.54 -5.08 2.54 -5.16 0.65 -2.17 0.65 -2.15 2.28 -5.54 2.21 -5.54 1.61 -4.54 
+1.56 -4.51 0.59 -2.41 0.56 -2.38 0.55 -2.37 0.54 -2.34 0.22 -1.67 0.19 -1.63 -0.83 1.2 
+-0.84 1.2 0.2 -1.63 0.18 -1.62 -0.76 1.63 -0.79 1.59 -0.26 1.99 -0.3 2.02 -0.61 2.71 
+-0.65 2.75 -0.93 3.37 -1 3.41 -0.52 2.02 -0.04 0.2 0 -27.11 0.67 -0.28 0.7 -0.3 
+1 -0.13 1.06 -1.7 1.08 -1.71 1.78 -4.32 1.76 -4.36 -0.07 1.45 -0.04 1.46 0.67 -0.17 
+0.67 -0.2 -0.67 3.19 -0.71 3.23 0.78 -0.89 0.78 -0.93 1.58 -4 1.59 -4.05 0.52 -2.39 
+0.5 -2.39 0.48 -2.41 0.45 -2.39 1.15 -2.69 1.15 -2.74 1.22 -2.08 1.21 -2.12 0.48 -0.07 
+0.5 -0.07 1.63 -4.66 1.63 -4.71 1.26 -3.06 1.26 -3.12 -0.48 3.43 -0.52 3.49 1.28 -4.52 
+1.24 -4.51 0.26 0.54 0.26 0.59 -0.34 3.47 1.06 -4.23 1.05 -4.23 0.3 0.2 0.28 0.21 
+0.02 1.52 0.02 1.56 1.24 -4.71 1.2 -4.73 0.41 -3.23 0.39 -3.19 -0.82 2.3 -0.31 0.87 
+0 -57.33 0.55 -0.87 0.54 -0.89 0.91 -4.68 0.89 -4.76 0.75 -3.8 0.72 -3.84 0.76 -3.64 
+0.74 -3.69 0.78 -4.43 0.78 -4.5 0.5 -4.45 0.48 -4.46 0.61 -4.8 0.59 -4.84 0.32 -0.78 
+0.35 -0.8 0.19 2.73 0.2 2.76 0.48 -2.34 0.48 -2.39 0.5 -2.17 0.5 -2.19 0.32 -4.78 
+0.29 -4.82 0.37 -4.46 0.33 -4.5 0.19 -5.67 0.15 -5.68 0.3 -3.52 0.3 -3.55 0.2 -2.84 
+0.2 -2.89 0.02 -4.88 0 -4.9 -0.19 -5.21 -0.24 -5.21 0.07 -3.11 0.04 -3.13 -0.22 -6.55 
+0.24 -2.71 0.24 -2.76 0.33 -0.39 0.34 -0.39 -0.08 -4.02 -0.09 -4.05 0.07 -3.21 0.05 -3.25 
+0.11 -2.32 0.09 -2.37 -0.5 -4.58 -0.52 -4.56 -0.06 -1.71 -0.07 -1.74 -0.09 -1.73 -0.26 -2.5 
+-0.26 -2.52 -0.28 -2.52 -0.48 -3.71 -0.48 -3.75 -0.54 -3.75 -0.5 -3.76 -0.54 -3.78 -0.57 -3.77 
+1.13 5.21 0.57 2.63 -0.26 -2.59 -0.29 -2.61 -0.29 -2.62 -0.39 -3.95 -0.22 -1.98 -0.76 -3.93 
+-0.8 -3.93 -0.83 -3.93 -0.63 -3.25 -0.65 -3.26 -0.67 -3.28 -0.52 -2.78 -0.52 -2.8 -0.54 -2.82 
+-0.18 -1.5 -0.34 -3.04 -0.96 -4.19 -0.98 -4.21 -1.02 -4.23 -1.04 -4.32 -1.08 -4.34 -1.13 -4.36 
+-1 -3.6 -1.02 -3.61 -1.06 -3.62 -1.5 -4.93 -1.54 -4.93 -1.61 -4.92 -1.2 -3.37 -1.2 -3.34 
+-1.21 -3.32 -1.74 -4.71 -1.75 -4.67 -1.81 -4.66 -1.58 -4.13 -1.63 -4.12 -1.65 -4.1 -2 -4.82 
+-2.04 -4.8 -2.08 -4.77 -1.8 -4.08 -1.82 -4.09 -1.87 -4.05 -1.13 -2.15 -1.11 -2.15 -1.13 -2.12 
+-3.6 -7.04 -1.82 -3.45 -1.84 -3.43 -1.85 -3.39 -1.86 -3.36 -2.09 -3.56 -2.08 -3.54 -2.08 -3.46 
+-1.65 -2.87 -1.67 -2.87 -1.67 -2.82 -3.78 -5.99 -1.88 -2.93 -1.57 -2.39 -1.56 -2.36 -1.56 -2.32 
+-1.45 -2.08 -1.46 -2.07 -1.45 -2.04 -1.52 -2.08 -1.49 -2.06 -1.5 -2.04 -1.26 -1.26 -0.63 -0.61 
+-1.43 -1.82 -1.41 -1.8 -1.41 -1.79 -1.52 -2.04 -3.04 -3.99 -1.82 -2.34 -1.82 -2.3 -1.82 -2.26 
+-3.28 -4.1 -3.3 -4.02 -1.64 -1.89 -1.67 -1.84 -2.58 -2.91 -2.59 -2.87 -2.99 -3.58 -3 -3.52 
+-2.87 -3.21 -2.84 -3.13 -2.65 -3.05 -2.66 -3 -2.46 -2.67 -2.45 -2.62 -0.65 -0.22 -0.65 -0.2 
+1.21 2 p
+1.17 1.97 0.41 1.05 0.39 1.06 -0.41 -0.12 -0.43 -0.14 -2.3 -1.34 -1.73 -1 -2.37 -2.14 
+-2.37 -2.11 2.11 2.69 4.12 5.38 2 2.69 5.08 5.91 -0.74 0.25 3.54 4.3 3.51 4.36 
+-1.9 -1.82 -1.91 -1.8 -0.95 -0.65 -0.96 -0.63 -1.32 -0.98 -1.31 -0.93 2.61 3.95 1.74 2.54 
+1.73 2.52 0.85 1.5 0.82 1.5 0.82 1.58 0.8 1.59 -1.3 -0.82 1.95 2.71 1.93 2.69 
+0.74 1.52 0.71 1.52 1.91 2.97 1.89 2.95 1.87 2.84 1.82 2.87 1.71 2.49 1.67 2.5 
+1.15 1.34 1.15 1.37 2.12 3.27 2.09 3.28 2.04 3.39 2 3.38 1.67 3.16 1.65 3.15 
+-0.35 0.45 -0.32 0.43 1.11 1.3 1.08 1.33 1.87 2.62 1.87 2.67 1.46 2.54 1.45 2.56 
+1.83 3.45 1.75 3.45 -2.12 -3.28 -2.17 -3.25 -3.64 -5.29 -0.02 0.63 0 0.61 -0.37 0.06 
+-0.37 0.05 1.08 1.58 1.06 1.58 0.76 0.55 0.76 0.59 1.41 2.14 1.41 2.18 2.13 3.38 
+2.08 3.39 1.8 2.52 1.78 2.54 3.04 5.49 3 5.55 -1.43 -2.06 -1.43 -2.02 -2.06 -3.26 
+-2.08 -3.23 -1.11 -1.11 -1.13 -1.11 -1.41 -1.75 -1.43 -1.72 -1.43 -1.75 -1.43 -1.7 -1.78 -2.52 
+-1.75 -2.5 1.66 3.13 1.65 3.15 1.61 2.97 1.59 2.97 1.59 3.14 1.54 3.15 1.87 3.6 
+1.82 3.61 1.3 4.77 1.59 2.71 1.61 2.74 0.67 2.12 0.7 2.08 0.56 3.09 0.48 3.3 
+-0.36 0.43 -0.37 0.46 0.57 2 0.55 2 0.2 1.47 0.21 1.48 -0.37 0.33 -0.34 0.32 
+-0.37 0.3 -0.37 0.32 -0.52 0.39 -0.5 0.39 -0.74 -0.26 -0.74 -0.24 -0.89 -0.76 -0.89 -0.73 
+-1.24 -1.26 -1.22 -1.25 -0.7 -0.31 -0.67 -0.28 -0.74 -0.2 -0.71 -0.2 -0.7 1.65 -0.82 -0.79 
+-0.84 -0.78 -1.54 -1.78 -1.52 -1.76 -0.91 -0.71 -0.93 -0.72 -1.11 -0.7 -1.11 -0.67 -3.12 -5.77 
+-1.39 -1.7 -1.37 -1.7 -0.45 0.24 -0.35 0.22 0 -49.2 0.7 -0.7 -1.13 -2.69 -1.17 -2.72 
+-1.08 -0.89 -1.09 -0.87 0.09 2.3 1.11 2.02 1.09 2.02 0.76 0.76 0.74 0.76 0 49.2 
+-0.08 0.04 -0.46 0.24 -1.09 0.55 -0.62 0.3 -1.13 0.52 -1.13 0.48 -0.93 -0.24 -0.93 -0.21 
+-0.57 -0.32 -0.56 -0.3 -3.09 -4.3 -0.43 0.16 -0.41 0.17 -1.39 -1.61 -1.39 -1.58 -0.98 -1.24 
+-1 -1.22 -0.59 0.22 -0.61 0.24 -1.21 0.44 -0.52 0.17 -0.54 0.2 -0.15 1.08 -0.15 1.07 
+0.91 2.71 0.91 2.69 -0.13 0.95 -0.15 0.96 3.12 6.08 0.7 0.3 0.7 0.32 0.93 1.26 
+0.95 1.23 0.74 1.74 0.76 1.73 3.17 6.17 2.82 6.12 0.48 1.78 0.45 1.76 0.78 2.23 
+0.76 2.24 0.83 2.64 0.78 2.65 0.89 2.64 0.87 2.63 1.06 2.66 1.04 2.65 0.76 2.21 
+0.76 2.23 0.55 2.62 0.52 2.61 0.39 2.59 0.37 2.56 0.78 2.17 0.74 2.17 1.69 6.99 
+-0.08 3.23 1.15 5.16 0.11 -4.02 1.98 9.42 -0.57 -4.17 0.11 -3.34 1.93 6.3 0.55 4.19 
+0.54 4.25 1.15 5.99 1.13 5.23 2.37 4.91 1.06 4.46 0.5 4.19 1.47 4.66 1.69 4.82 
+-0.34 -5.03 1.67 4.73 2.06 3.38 0.83 1.21 0.8 1.21 1.87 5.08 1.74 3.39 0.91 1.25 
+0.89 1.29 0.74 0.37 1.48 0.78 0.71 0.37 1.07 2.32 1.04 2.32 0.71 0.41 0.74 0.42 
+0.91 2.23 p
+0.89 2.23 0.83 0.5 0.82 0.48 0.98 1.48 0.95 1.5 0.91 0.98 0.89 1 0.84 2.3 
+0.85 2.34 1.47 4.68 0.71 3.23 0.7 3.25 0.85 2.89 0.82 2.89 0.09 1.97 0.11 1.97 
+0.21 4.78 0.79 2.97 0.74 3.02 0.78 3.52 0.79 3.54 0.09 -3.23 0.09 -3.25 0.13 -2.28 
+0.13 -2.3 1.61 7.12 -0.32 1.64 -0.3 1.61 0.41 3.28 0.39 3.3 1.35 -1.65 0.47 2.93 
+0.44 2.93 0.26 3.21 0.22 3.23 0.71 3.3 0.71 3.32 0.26 5.34 1.7 1.96 0.2 2.37 
+0.21 2.38 0.61 1.26 0.61 1.28 0.28 2.48 0.28 2.5 0.72 0.41 0.7 0.43 0.52 -2.08 
+0.5 -2.09 0.41 -1.62 0.41 -1.65 -0.02 -3.27 -0.04 -3.3 0.63 2.91 0.61 2.95 0.48 0.61 
+0.48 0.63 0.68 -1.32 0.65 -1.32 0.22 3.08 0.2 3.08 -0.59 1.46 -0.58 1.43 0.43 3.47 
+0.43 3.51 0.13 3.04 0.11 3.04 0.52 1.46 0.52 1.47 -0.29 2.48 -0.3 2.45 0.13 3.28 
+0.11 3.28 0.43 3.91 0.39 3.93 0.7 1.29 0.68 1.3 0.65 1.3 0.65 1.33 -0.02 3.97 
+-0.09 3.95 -0.58 2.13 -0.61 2.11 1.47 0.61 1.39 -2.64 0.59 0.65 0.56 0.65 0.65 0.02 
+0.63 0.02 0.63 0.07 0.61 0.08 0.42 2.41 0.37 2.43 0.5 -2.5 0.5 -2.52 0 4.64 
+-0.05 4.67 0.67 -1.43 0.68 -1.46 0.04 -3.84 0 -3.82 0.24 -3.97 0.22 -3.99 -1.05 -2.34 
+0.48 -7.55 0.18 -3.17 0.13 -3.19 -0.13 -2.97 -0.16 -2.97 -0.07 -3.5 -0.08 -3.47 0.91 -3.61 
+0.43 -0.61 0.41 -0.61 0.2 -3.63 0.16 -3.64 0.74 1.22 0.71 1.21 0.42 -1.95 0.39 -1.97 
+0.3 -1.5 0.28 -1.52 0.54 -1.14 0.52 -1.15 0.45 -0.65 0.43 -0.65 0.15 -3.16 0.13 -3.18 
+0.43 -2.66 0.39 -2.69 0.5 1.37 0.5 1.39 1.09 5.82 0.11 4.41 0.08 4.38 0.26 4.08 
+0.24 4.1 0.2 4.82 0.18 4.82 -0.02 4.54 -0.07 4.53 -0.09 4.56 -0.11 4.53 -0.3 4.17 
+-0.32 4.14 -0.28 4.32 -0.33 4.3 -0.29 4.49 -0.32 4.47 -0.43 5.14 -0.48 5.12 -0.33 2.78 
+-0.34 2.78 -0.52 4.21 -0.57 4.19 -0.22 3.71 -0.24 3.71 -0.75 4.84 -0.8 4.79 -0.43 4.45 
+-0.48 4.43 0 57.33 -0.52 1.41 -0.06 -1.21 -0.09 -1.22 -0.17 -2.99 -0.13 -1.43 -0.13 -1.39 
+-0.13 -1.16 -0.13 -1.13 -0.76 2.37 -0.78 2.37 -0.78 1.43 -0.76 1.41 -0.93 1.69 -0.93 1.67 
+-0.99 2.63 -1 2.61 -1.22 3.23 -1.23 3.19 -0.11 -0.95 -0.13 -0.91 -0.5 -0.15 -0.54 -0.15 
+-0.37 0.11 -0.37 0.13 0.09 -1.84 0.07 -1.82 1.04 -4.52 0.98 -4.53 0.58 -2.84 0.55 -2.86 
+0.35 -2.67 0.32 -2.67 0.89 -2.78 0.91 -2.8 0.48 -2.54 0.5 -2.54 0.37 -3.93 0.35 -3.91 
+-0.45 -0.48 -0.46 -0.5 -0.13 -1.56 -0.16 -1.57 -0.3 -0.91 -0.3 -0.93 -0.71 1.26 -0.72 1.21 
+-0.71 1.56 -0.71 1.54 -0.7 1.7 -0.67 1.67 -0.05 -2.39 -0.04 -2.34 -0.22 -1.78 -0.21 -1.76 
+0.2 -3.53 0.18 -3.5 -0.26 -1.67 -0.28 -1.65 -0.79 5.08 -0.82 5.1 -0.63 3.71 -0.59 3.26 
+0 -89.47 0.33 -1.33 0.32 -1.34 -0.24 -3.84 -0.26 -3.8 -0.41 0.48 -0.43 0.5 -1.22 -2.3 
+-0.02 3.79 -0.04 3.8 0.52 -0.29 0.54 -0.3 0.46 2.3 0.45 2.32 0 89.47 -0.08 0.45 
+0.02 2.09 p
+0.02 2.11 -1 3.02 -1 2.97 -1.17 3.56 -1.21 3.52 -1.23 3.25 -1.28 3.21 -0.74 1.13 
+-0.76 1.13 -0.63 0.07 -0.61 0.06 -0.24 -0.32 0 -22.27 0.95 -2.71 0.96 -2.74 0.91 -4.25 
+0.87 -4.25 0.46 -3.91 0.41 -3.91 -0.93 3.86 -0.93 3.82 -0.73 3.71 -0.19 1.02 0 -27.54 
+0.65 -3.14 0.65 -3.19 0.11 -3.17 0.09 -3.17 -0.54 3.39 -0.56 3.36 -0.2 2.95 -0.19 2.97 
+0 27.54 -0.57 2.68 -0.59 3.34 -0.61 3.34 0 22.27 -0.24 -0.39 -0.5 -0.7 -1.3 -0.39 
+-0.48 -0.8 -0.35 -0.57 0 -94.68 -0.04 -2.76 -0.29 -2.54 -0.33 -2.54 -0.39 -2 -0.41 -1.97 
+-0.39 -2.02 -0.43 -2 -0.3 -2.95 -0.33 -2.93 -0.15 -3.75 -0.2 -3.75 -0.48 -1.93 -0.5 -1.91 
+-0.55 -1.39 -0.54 -1.37 -0.15 4.14 -0.19 4.14 0.09 2.45 0.06 2.45 0.37 1.71 0.35 1.74 
+0.86 3.95 0.05 4.86 0.5 2.19 0.48 2.22 0.54 1.67 0.52 1.69 0.44 1.59 0.43 1.61 
+0.48 1.07 0.5 1.08 0 91.93 -0.15 -0.24 -0.34 -1.21 -0.35 -1.2 -0.63 0.3 -0.63 0.29 
+-0.63 0.04 0 -82.53 0.18 -3.04 0.15 -3.02 -0.59 -1.26 -0.61 -1.26 -0.12 2.34 -0.16 2.37 
+0.59 1.93 0.56 1.93 0 82.53 -0.04 0 -0.65 0.05 -0.8 0.8 -0.79 0.76 0.83 -4.28 
+0.78 -4.27 -0.34 -2.43 -0.63 1.76 0 -90.11 -0.76 -2.71 -0.76 -2.69 -0.09 2.3 -0.11 2.32 
+0.87 0.39 0.84 0.39 0 90.11 -0.2 0.54 -0.82 2.3 -0.67 1.76 -0.65 1.71 -0.8 0.74 
+-0.8 0.72 -0.3 -0.43 -0.33 -0.43 -0.2 1.67 -0.21 1.64 0.34 1.02 0.33 1 -0.35 2.69 
+-0.39 2.71 0.18 1.79 0.17 1.8 -0.63 2.13 0 -26.96 0.93 -1.49 0.92 -1.52 0.71 -2.41 
+0.71 -2.39 -0.7 0.09 -0.37 0.04 0 -85.82 -0.62 -2.3 -0.63 -2.28 -0.54 -2.09 -0.57 -2.06 
+-0.78 -3.39 -1.3 -0.99 -0.54 -1.37 -0.56 -1.37 -0.65 -0.48 -0.67 -0.48 -0.59 -0.87 0 -7.29 
+1.52 -1 0.73 -1.58 0.74 -1.63 -1.04 -4.51 -0.7 1.11 -0.67 1.11 -0.5 0.37 -0.52 0.37 
+-0.65 -0.84 -0.65 -0.87 -0.37 1.52 -0.37 1.5 0.58 1.34 0.61 1.38 0.65 0.86 0.63 0.89 
+0 7.29 -0.04 -0.04 -0.61 -0.91 -1.48 0.04 -0.56 -1.39 -0.59 -1.37 -0.61 -1.32 -0.59 -1.3 
+-1.02 -2.32 -0.91 -3.23 -1.26 -2.54 -1.97 -0.59 -1.37 -1.67 -0.29 5.45 0.96 3.19 1.54 -0.04 
+1.54 2.02 1.2 0.63 -1.15 3.56 1.93 0.59 1.48 2.09 0.84 -0.84 0.82 -0.89 0.48 2.26 
+0.45 2.28 0.52 1.8 0.5 1.8 0.71 0.07 0.72 0.05 0.71 0.02 0.72 0 1.08 2.78 
+0.67 -0.59 0.65 -0.61 0.24 3.78 0.2 3.79 0.98 0.59 0.95 0.56 0 85.82 -0.35 0.05 
+-1.52 -2.64 -0.46 -0.83 -0.48 -0.82 -0.11 -1.62 -0.12 -1.61 -0.79 -0.11 -0.8 -0.11 -0.33 2.76 
+-0.37 2.78 0.43 1.78 0.39 1.8 0.21 2.02 0.18 2.04 0.7 -0.28 0.65 -0.26 0.29 1.37 
+0.25 1.39 0 26.96 -0.39 1.3 -1.04 3.45 0.24 -2.8 0.21 -2.75 0.02 -2 0.02 -1.98 
+-0.35 -3 -1.3 0.39 -0.85 2.41 -0.26 0.74 0 -42.86 1.52 -3.69 0.13 -2.25 0.11 -2.25 
+-0.62 -0.35 -0.61 -0.34 -1.78 2.99 0.13 2.17 0.11 2.2 0.52 0.78 0.5 0.76 0 42.86 
+-0.61 1.65 p
+-0.31 -0.76 -0.28 -0.76 -1.13 -1.56 -0.87 4.02 -0.91 4.03 -0.15 2.63 -0.2 2.65 -0.66 2.91 
+-0.34 1.5 0 -35.98 0.95 -0.26 0.96 -0.24 -0.5 -2.28 -0.5 -2.25 -0.91 5.03 0 35.98 
+-0.35 1.43 0.16 2.04 0.11 2.06 0.83 -0.59 0.84 -0.58 0.09 2.11 0.08 2.14 1.55 -2.97 
+1.54 -3.02 1.11 -3.43 1.09 -3.47 1.13 -2.39 1.13 -2.43 0.45 0.26 0.43 0.28 1.13 -2.48 
+1.11 -2.5 0.79 -0.71 0.8 -0.7 0.18 2.56 -0.85 3.32 -0.87 3.34 -1.47 5.77 -0.93 3.89 
+-0.96 3.88 -0.21 2.21 -0.22 2.24 -1.02 3.34 -1.04 3.32 -0.71 3.84 -0.76 3.84 0.56 0.24 
+0.54 0.24 0.74 0.04 0.74 0.02 0.65 1.48 0.3 0.82 0.28 0.8 -0.12 1.54 -0.15 1.56 
+0.5 0.55 0.48 0.57 0.29 0.78 0.26 0.8 0.26 0.78 0.29 0.8 0.26 0.55 0.25 0.56 
+0.87 1.17 0 1.36 -0.02 1.37 1.82 1.13 0 27.11 -0.5 1.84 -0.54 2.02 -0.56 2.02 
+-2.87 6.77 -2.95 6.73 -0.67 2.14 -0.7 2.17 -2.82 5.01 -0.5 0.87 0 -78.73 1.02 -1.29 
+1 -1.28 0.24 -1.96 0.24 -1.93 -1.21 1.25 -1.21 1.24 -0.02 1.97 -0.04 1.98 0 78.73 
+-2.32 4.06 -0.61 1.71 0 -109.55 0.22 -2.43 0.21 -2.4 -0.65 0.11 -0.67 0.13 -0.22 2.14 
+-0.24 2.17 0.67 0.15 0.67 0.13 0 109.55 -0.78 2.21 -1.43 3.97 0 1.84 -1.69 2.67 
+-2.24 3.28 -2.25 3.21 0.35 -1.17 0.32 -1.17 -0.63 0 -0.65 0.02 -0.63 -0.06 -0.61 -0.07 
+0.39 1.56 0.66 1.05 0.39 -0.07 0.41 -0.09 0.87 0.96 0 46.74 -2.67 4.36 -2.25 3.54 
+0 -176.2 0.84 -2.6 0.82 -2.61 1 -1.43 0.98 -1.41 -0.31 2.97 -0.34 3 1.08 -2.56 
+1.06 -2.58 0.37 -2.52 0.35 -2.49 0.78 -1 0.79 -1.02 -0.2 -1.43 -0.21 -1.41 1.91 -5.68 
+0.87 -2 0.85 -1.99 2.34 -3.04 -0.91 0.45 -0.89 0.41 -0.97 1.26 -0.96 1.22 -0.76 2.45 
+-0.78 2.46 -0.87 1.93 -0.89 1.93 -0.93 1.41 -0.95 1.41 -0.79 2.62 -0.8 2.63 -0.84 2.34 
+-0.87 2.37 -0.37 2.45 -0.39 2.47 0 176.2 -0.93 1.45 0 -198.66 1.25 -1.12 0.67 -2.76 
+0.65 -2.78 1.35 -7.25 -0.09 -2.32 -0.11 -2.3 -0.39 -3.47 -0.65 -0.43 -0.65 -0.41 -0.37 -1.26 
+-0.39 -1.25 -0.37 -1.24 -0.39 -1.26 -0.93 -2.84 -0.41 -2.82 -0.82 -0.83 -0.33 -2.4 1.11 -6.04 
+1.79 -5.79 1.67 -0.13 1.35 -3.67 0.93 2.32 -0.5 6.06 0.87 2.39 0.15 2.08 0.16 2.06 
+0.39 4.64 0.8 -0.91 0.82 -0.91 -0.45 -1.43 -0.48 -1.43 0.31 -3.12 0.28 -3.11 0.15 -2.73 
+0.13 -2.73 -0.15 -2.65 -0.17 -2.62 1.11 -1.59 1.06 -1.59 1.39 -2.25 0.8 -1.63 0.78 -1.61 
+0.14 -2.52 0.09 -2.5 0.82 -0.8 0.82 -0.79 0.96 -1.9 0.93 -1.93 0.85 -1.5 0.82 -1.52 
+0.7 -3.14 0.65 -3.15 -0.13 -2.95 -0.15 -2.95 -0.71 1.13 -0.71 1.11 -0.83 4.04 -0.87 4.04 
+-0.04 -2.06 -0.07 -2.06 -0.61 -0.07 -0.63 -0.05 -0.57 3.32 -0.61 3.3 -0.83 0.22 -0.8 0.21 
+-0.76 1.59 -0.76 1.56 -0.35 2.52 -0.39 2.54 -0.42 1.69 -0.43 1.7 -0.41 -0.93 -0.39 -0.91 
+-0.02 -5.25 1.58 -4.37 1.17 -5.16 0.59 -2.61 0.54 -2.61 0.46 -2.8 0.41 -2.8 0.63 -2.45 
+0.58 -2.45 p
+-0.48 -1.46 -0.5 -1.43 -0.96 -1.7 -0.97 3.95 -0.85 6.77 -1.06 6.36 -1.52 4.41 -1.09 -2.15 
+-1.95 6.04 -0.29 5.58 -0.98 5.68 -1.58 5.84 -0.8 4.82 -0.37 4.86 -0.39 1.26 0 -88.39 
+-1.04 -4.69 -1.76 1.28 1.41 1.7 1.39 1.71 0 88.39 -1.11 3.62 -1.37 5.25 -0.91 3.56 
+1.15 3.23 -1.54 6.82 1.34 0.91 1.2 2.02 1.02 1.73 0.61 0.21 0.61 0.24 0.26 3 
+0.78 3.04 -0.13 2.56 -0.15 2.54 -0.41 2.52 -0.43 2.52 -0.69 3.82 0 198.66 -2.89 4.55 
+-6.25 9.44 -6.4 9.33 -6.58 9.22 -6.73 9.12 -6.87 8.98 -7.04 8.86 -3.6 4.36 -3.61 4.38 
+-7.34 8.59 -3.75 4.26 -3.75 4.23 -3.82 4.19 -3.82 4.16 -3.89 4.1 -3.88 4.13 -7.95 8.07 
+-3.71 3.64 2.24 -2.21 2.21 -2.22 2.2 -2.21 2.15 -2.19 2.1 -2.19 2.11 -2.17 2.06 -2.17 
+2.05 -2.14 1.99 -2.13 1.97 -2.12 1.96 -2.13 1.91 -2.11 1.89 -2.11 1.87 -2.08 1.84 -2.09 
+1.82 -2.06 1.78 -2.04 1.76 -2.04 1.74 -2.02 1.71 -2.02 0.95 -1.13 0.93 -1.11 0.91 -1.11 
+0.91 -1.08 0.89 -1.09 0.87 -1.04 0.87 -1.07 0.85 -1.04 0.82 -1.02 0.82 -0.99 0.8 -1.02 
+0.8 -0.98 1.57 -1.95 0.76 -0.95 1.48 -1.87 0.72 -0.93 1.43 -1.82 0.7 -0.89 -1.04 1.32 
+0 -174.91 2.24 -0.06 2.62 -2.26 1.5 -2.45 1.47 -2.49 3 -3.56 1.07 -1.84 1.04 -1.84 
+1.02 -2.61 1 -2.62 1.2 -2.71 1.17 -2.71 -1.45 2.15 -1.48 2.15 -1.04 1.08 -1.04 1.06 
+0.76 -2.17 0.74 -2.2 1.13 -3.21 0.84 -0.74 0.84 -0.76 1.7 -2.08 1.11 -3.21 1.07 -3.23 
+-0.89 0.57 -0.89 0.58 -0.11 -0.95 -0.11 -0.93 -1.41 -0.11 -1.37 0.37 -2.69 5.14 -1.39 4.3 
+-1.32 0.76 -1.07 -0.91 1.35 -4.68 0.17 -2.63 -2 3.12 0.13 -2.49 1.71 -4.99 1.72 -4.57 
+-1.59 2.52 -2.54 5.42 -0.95 3.52 -0.46 4.21 -1.2 3.6 0 -44.05 1.35 -0.87 2.02 -0.34 
+1.95 -4.32 1.39 1 2 -0.39 1.67 0.3 -0.05 -4 -0.11 -3.97 2.02 -2.04 -0.41 -4.73 
+1.91 -5.62 0.89 -5.36 2.13 -3.37 1.99 -2.28 0.63 -4.23 2.13 -1.93 1.8 -1.13 1.65 -1.59 
+-0.78 -3.56 -0.96 -2.3 0.5 -4.23 1.11 -5.51 1.46 -5.88 0.61 -5.12 -0.07 -4.97 0.11 -5.82 
+1.95 -3.41 0.76 -7.92 0.7 -5.55 -0.71 -4.43 -0.74 -4.38 -0.76 -3.19 -1 3.67 -1.11 1.43 
+0 -40.26 1.23 -1.33 0.7 -3.86 1.87 0.28 1.3 2.59 1.49 0.78 0.55 -5.04 2.13 4.51 
+1.43 -1.13 -0.95 -5.96 -1.3 2.32 -1.3 0.26 0.41 -4.14 -1.28 -0.57 -1.35 0.33 -1.58 -0.02 
+-1.54 -3.45 -1.61 -0.02 -1.48 -1.58 -1.59 -0.71 -1.56 -0.81 -1.74 0.85 -1.34 -0.57 -1.78 -1.78 
+-1.24 -2.04 -1.87 -1.02 -1.54 1.05 -1.91 -0.91 -1.67 -0.76 0.04 2.52 -2.08 0.52 -1.67 -0.78 
+0.71 4.06 0.29 5.27 2.04 0.3 1.11 2.84 1.15 0.24 1.83 -0.69 1.63 0.84 1.21 -3.1 
+1.33 0.56 1.52 1.59 1.58 0.86 1.26 1.35 0.39 5.86 1.75 -0.74 1.91 0.34 1.52 0.89 
+0 40.26 -0.41 0.52 -1.11 -2.78 -2.15 1 -0.61 -3.95 -1.32 -1.86 -1.05 -3.45 -1.61 6.68 
+-0.56 -2.8 -1.22 -2.58 -1.78 -1.43 -1.33 5.1 -1.58 4.63 -1.04 4.51 -1.93 3.21 -0.22 0.11 
+0 -22.44 p
+0.13 -5.36 -1.34 -0.61 -0.76 5.45 1.97 0.52 0 22.44 -1.84 0.93 -1.11 4.41 -1.45 2.02 
+-1.56 4.73 -1.02 5.64 0 5.27 1.91 -0.15 1.65 1.63 1.45 1.24 -1.19 6.88 -1.24 5.75 
+0.89 2.89 1.07 3.16 0.08 5.04 -0.78 4.73 -0.18 4.73 -0.96 7.34 0.09 4.44 1.24 3.11 
+-1.45 3.54 -0.82 7.03 -1.29 4.38 -0.45 5.23 -1.15 5.17 0 44.05 -0.19 0.59 -0.61 3.79 
+0.99 0.43 2.09 -3.05 -1.5 4.77 -0.21 3.11 -2.46 5.16 0.96 0.54 -1.2 4.04 -3.47 5.12 
+0 174.91 -1.58 2.02 -2.63 3.3 -2.62 3.25 -2.65 3.23 -2.62 3.19 -2.61 3.11 0 -172.03 
+2.28 -1.76 2.21 -3.23 3.2 -3.66 0 -3.97 2.16 -3.3 2.24 -1.93 0.34 -3.59 -3.02 4.71 
+-0.45 -1.28 -1.37 2.08 0 -2.52 2.58 -4.01 2.09 -3.32 0.58 2.15 2.11 -3.38 0.3 -3.63 
+-1.8 1.37 1.61 -4.23 -0.98 -0.46 2.54 -3.24 1.04 -3.95 -1.78 0.91 -2.17 2.06 -1.02 4.34 
+-2.09 3.4 -0.95 -0.56 0.11 -3.87 -2.02 3.8 -2.47 4.43 -0.72 0.76 0 -16.17 3.69 -5.04 
+1.5 -6.01 0.41 -3.06 1.99 -5.36 1.05 -4.88 1.13 -3.97 0.56 -6.1 -1.8 5.36 -0.93 4.82 
+-1.28 5.99 -1.15 4.36 -1.91 6.21 -3.25 7.68 0 16.17 -1.43 1.56 0.63 2.61 1.3 -1.5 
+0.17 3.34 2.95 -5.12 0.59 1.66 2.06 -3.77 -1.17 4.36 -2.06 4.27 0 2.52 -1.73 2.63 
+0.5 1.67 -2.26 4.32 -1.32 -0.97 -2.7 2.91 0.42 1.82 -0.5 3.56 0 172.03 -0.02 0.04 
+-2.65 3.11 -2.64 3.06 -2.63 3.04 -2.64 2.99 -2.63 2.95 -2.65 2.91 -2.62 2.89 -5.26 5.64 
+-2.62 2.75 -2.63 2.73 -2.61 2.69 -1.58 1.63 0 -182.53 3.37 -4.73 2.86 -3.36 1.87 -0.46 
+2.84 -4.41 2.32 -4.71 2.3 -5.29 2.69 -4.45 3.65 -3.47 2.69 -2.78 0.93 1.17 -1.3 3.71 
+0 1.93 0.93 1.08 1.32 1.54 0.46 -2.56 1.84 -1.58 2.21 -0.67 0.5 -2.64 -0.93 -1.07 
+-3.14 2.43 -1.37 -0.98 1.78 -1.96 2.21 -3.17 -1.64 0.84 0 -6.9 1.82 -0.67 2.56 -3.82 
+1.49 -4.8 -1.78 1.17 -2.61 2.87 -2.3 1.37 0.17 2.25 0.63 1.63 0 6.9 -1.54 0.76 
+-1.41 -0.48 1.65 -5.32 -1.08 -1.91 -2.2 3.11 -1.63 4.23 -1.41 0.02 1.72 -2.91 -1.91 -0.32 
+-2.64 3.19 -2.24 2.56 -3.12 3.6 1.04 1.52 -2.71 3.49 -3.21 4.99 -2.26 1.87 -2.32 3.76 
+-2.82 4.25 -0.48 2.75 1.34 0.68 0.39 1.8 -1.54 3.93 0 182.53 -1.52 1.54 -6.3 6.29 
+-3.19 3.11 -1.61 1.54 0 -243.33 1.63 -2.15 1.32 -3.76 2.25 -4.1 1.18 -3.71 0.57 -4 
+-0.57 -1.93 -1.85 -0.61 -2.08 2.43 -1.93 2.69 -0.67 3.5 -1.02 4.51 0.08 2.45 0.57 2.32 
+0.52 2.34 0 243.33 -1.61 1.57 -3.23 3.06 -3.25 3.06 -3.3 3.04 -3.3 3.02 -3.32 3.02 
+-3.36 2.97 -3.36 2.95 -2 1.71 0 -182.23 3.08 -2.73 3.25 -4.1 3.67 -4.21 3.12 -3.8 
+2.68 -4.21 3.54 -4.36 -2.43 1.63 -0.85 -0.87 -3.45 2.63 -2.98 2.88 -3.17 4.58 -2.62 3.63 
+-2.78 4.05 -1.87 3.99 0.8 0.89 0 182.23 -1.41 1.22 -3.4 2.91 -3.45 2.89 -3.45 2.86 
+-3.47 2.82 -2.93 2.37 -2.97 2.37 -3 2.36 -3.06 2.37 -3.08 2.39 -3.15 2.37 -3.17 2.38 
+-3.21 2.37 p
+-3.28 2.39 -3.3 2.39 -3.34 2.36 -3.41 2.39 -3.43 2.39 -3.5 2.36 -3.53 2.39 -3.56 2.37 
+-3.62 2.37 -3.69 2.37 -3.71 2.34 -1.67 1.07 -3.43 2.13 -1.76 1.09 -1.78 1.08 -1.8 1.09 
+-1.82 1.11 -1.87 1.11 -1.89 1.13 -1.91 1.13 -1.93 1.13 -1.97 1.13 -1.99 1.15 -2.05 1.17 
+-2.06 1.15 -2.09 1.17 -2.13 1.19 -2.14 1.18 -2.19 1.19 -2.23 1.2 -2.25 1.22 -2.3 1.21 
+1.64 -0.85 1.63 -0.86 1.68 -0.89 1.67 -0.91 1.69 -0.92 1.71 -0.93 1.72 -0.96 1.73 -0.96 
+1.76 -0.98 1.78 -1 1.78 -1.02 1.83 -1.02 1.82 -1.04 1.84 -1.09 1.87 -1.08 1.5 -0.87 
+-4.88 2.88 -4.93 2.78 -4.9 2.78 -4.97 2.72 -4.97 2.69 -5.04 2.63 -5.01 2.6 -5.06 2.54 
+-5.05 2.52 -5.1 2.45 -5.1 2.43 -3.8 1.71 0 -130.03 4.3 -0.98 3.64 -1.82 2.8 -0.5 
+1.82 -1.91 2.37 -1.04 3.02 -0.33 4.25 -1.2 2.78 -1.58 4.32 -1.34 2.12 0.11 3.15 -2.06 
+2.64 -1.06 4.16 -3.38 -4.32 1.52 2.76 -1.72 2.06 -2.49 5.64 -2.64 -2.82 0.24 5.79 -4.06 
+3.17 -4.21 -1.06 -1.54 3.19 -2.06 1.46 0.46 4.95 -4.02 4.95 -3.52 0.57 -1.5 -1.84 -0.13 
+0 -2.34 2.06 -0.5 2.84 -2.46 3.11 -2.25 -0.69 -0.98 2.71 -3.1 2.24 -1.65 2.78 -1.87 
+0.26 -2.06 -2.98 0.7 -2.95 2.93 -2.75 1.8 -0.93 2.32 -3.06 2.24 -2.12 2.78 -0.5 2.11 
+0 2.34 -0.22 -0.02 -2.84 1.11 -4.04 2.78 1.96 -2.93 0.82 -1.91 3.61 -3.61 1.85 -2.34 
+2.95 -3.43 2.28 -3.21 3.21 -2.69 0.85 -2.28 2.11 -3.2 1.3 0 -1.34 2.56 2.64 -0.87 
+2.22 -0.09 3.53 -2.67 4.13 -3.02 3.69 -2.23 3.84 -4.34 0.29 -2.47 -2.89 1.56 -2.82 1.48 
+-2.54 2.61 -2.89 1.45 -1.65 -0.15 2.47 -1.54 1.02 -2.17 -2.82 0.46 -2.93 3.39 -3.32 3.21 
+-1.93 2.84 -2.82 1.28 -2.52 3.04 -2.87 2.8 -3.71 3.45 -4.12 3.23 -1.5 2.47 -2.88 3.93 
+-2.8 3.54 -2.47 3.06 0.28 1.47 -2.32 2.04 -2.82 0.93 -3.52 2.34 -4.04 2.52 -3.19 1.22 
+-3.23 2.47 3.5 -1.61 2.28 -0.67 -3.88 3.28 -3.41 3.15 -3.3 2.36 -3.78 1.86 -3.71 2.72 
+-4.05 1.52 -4.17 2.06 -3.5 1.3 -3.34 0.59 -2.71 0.46 -2.25 0.34 -4.64 1.89 0.24 1.21 
+-1.72 1.74 -1.62 0.22 1.37 -1.39 -2.5 0.61 -1.34 2.34 2.54 -0.65 2.37 0.04 1.25 1.04 
+2.54 0.29 0 130.03 -1.37 0.63 -5.14 2.34 -10.37 4.52 -5.21 2.16 -5.23 2.17 -5.25 2.09 
+-5.27 2.06 -5.29 2 -5.3 1.98 -5.34 1.89 -5.32 1.89 -5.36 1.8 -5.38 1.8 -5.38 1.7 
+-5.39 1.71 -10.85 3.21 -5.45 1.52 -5.45 1.5 -5.49 1.43 -5.47 1.41 -5.49 1.32 -5.51 1.33 
+-5.51 1.21 -5.51 1.24 -5.55 1.13 -5.54 1.13 -5.55 1.02 -5.58 1.04 -11.16 1.87 -5.57 0.85 
+-5.6 0.82 -5.6 0.74 -5.62 0.74 -5.6 0.65 -5.62 0.63 -5.64 0.55 -5.62 0.54 -5.64 0.46 
+-5.64 0.43 -11.29 0.69 -5.64 0.26 -5.64 0.24 -5.66 0.15 -2.04 0.04 0 -0.11 2.54 -0.07 
+2.52 -0.09 1.04 -0.02 1.21 -0.05 0.26 -0.02 2.5 -0.09 2.13 -0.09 6.09 -0.28 6.08 -0.34 
+6.08 -0.39 6.08 -0.46 6.04 -0.5 6.03 -0.58 6.03 -0.61 6 -0.67 5.99 -0.74 5.95 -0.79 
+5.95 -0.84 p
+5.9 -0.89 5.9 -0.95 5.86 -1 5.84 -1.05 5.79 -1.08 6.18 -1.23 6.21 -1.28 6.21 -1.34 
+6.23 -1.43 6.23 -1.5 6.25 -1.57 6.25 -1.63 6.25 -1.69 6.25 -1.76 6.25 -1.82 6.27 -1.91 
+6.25 -1.97 6.25 -2.04 6.23 -2.11 6.23 -2.17 6.23 -2.23 6.21 -2.3 6.18 -2.39 0.33 -0.12 
+0.3 -0.11 0.61 -0.26 0.3 -0.11 0.28 -0.13 0.31 -0.11 0.28 -0.13 0.56 -0.22 0.28 -0.12 
+0.26 -0.11 0.29 -0.11 0.52 -0.21 0.28 -0.11 0.24 -0.11 0.26 -0.11 -6.01 2.37 -5.62 2.15 
+0 -129.8 3.91 -1.89 4.23 -2.23 2.15 -2.23 4.34 -2.02 3.67 -1.45 2.45 -0.45 1.7 -2.91 
+0.76 -2.52 2.61 -2.06 2.8 -1.78 -0.09 -0.89 1.36 -1.39 1.96 -0.5 -0.59 1.59 -0.06 1.49 
+3.43 -2.52 3.67 -2.3 -3.8 0.5 -0.65 -0.82 -2.5 0.61 -4.53 2.61 -1.81 -0.16 -1.15 1.63 
+-2.04 1.98 -1.93 0.43 -1.8 -0.15 -2.93 1.36 -2.47 0.46 -3 0.41 -2.15 -0.82 -3.28 1.58 
+0.41 1.47 1.21 1.2 0.18 1.21 -0.43 2.13 -1.56 2.19 -1.74 1.87 -5.04 2.43 4.56 -1.2 
+-0.09 0.96 1.52 0 -3.28 2.19 0 129.8 -0.41 0.17 -6.07 2.23 -6.1 2.21 -6.14 2.13 
+-6.16 2.06 -1.89 0.64 0 -129.47 5.67 -1.95 5.16 -2.15 4.76 -1.91 -5.82 1.52 -4.34 1.54 
+-1.55 1.46 -3.88 1.5 0 129.47 -0.56 0.17 0 -146.57 0.86 -1.95 1.95 -1.58 2.8 -0.93 
+2.35 -0.16 3.52 -0.65 3.36 -0.12 1.35 0.65 0.2 1.17 1.69 0.34 -0.35 1.2 3.06 0.11 
+-0.31 -1.52 1.17 -1.47 2.87 -1.16 4.13 -0.89 -3.13 -0.87 -3.58 0.84 -3.58 -0.06 -3.26 0.5 
+-2.41 -0.69 -0.87 -0.64 -2.67 0.46 -2.86 0.11 -3.02 -0.21 -2.71 -0.5 -3.3 -0.02 -2.21 -0.48 
+-0.8 -1.2 -2.97 -0.32 -3.53 0.11 -3.15 -0.67 -3.19 1.17 -2.32 0.45 -1.58 -1.06 -1.89 1.04 
+1.04 1 2.61 0.69 2.28 0.93 2.91 0.43 3.23 0.15 2.02 1.13 2.28 0.88 2.28 0.84 
+1.98 1.11 1.95 1.09 1.83 0.75 0 146.57 -3.71 1.21 -6.23 1.95 -2.02 0.63 0 -128.67 
+6.14 -1.66 2.11 -1 -4.8 1.26 -3.45 1.41 0 128.67 -4.21 1.28 -6.25 1.82 -6.25 1.76 
+-6.29 1.71 -6.3 1.63 -6.32 1.58 -6.32 1.5 -4.95 1.13 0 -132.27 4.25 -1.19 -1.23 -0.52 
+-3.2 0.91 -3.55 0.29 1.11 0.49 2.63 0.02 0 132.27 -1.37 0.33 -7.25 1.56 -7.25 1.47 
+-3.6 0.7 -3.62 0.7 -3.61 0.65 -3.6 0.68 -2.56 0.43 0 -136.98 3.71 -1.37 4.23 -0.28 
+3.08 1.06 4.88 0.31 4.73 -0.31 4.75 -0.74 -0.57 -1.06 -1.82 -0.89 -1.75 -1.24 -0.87 -1.97 
+-2.13 -1.43 -1.74 -1.67 -1.04 -1.24 -1.39 -1.47 -1.43 -1.11 -2.82 -1.2 -3.14 -0.74 -3.13 -0.79 
+-3.49 0.74 -3.04 -0.52 -0.61 -1.13 -2.76 1.09 -4.04 0.5 -4.62 -0.02 -4.2 -0.2 -3.11 -0.67 
+-4.77 -0.15 -3.95 -0.41 -2.41 -0.65 -3.71 0.07 -3.71 0.39 -1.93 -0.84 -2.24 -1.71 -1.95 -1.5 
+-3.15 -0.22 0.79 -0.86 4.77 -0.55 2.41 1.05 1.17 1.32 2.78 -0.41 3.21 0.39 3.58 0.26 
+4.3 0.02 -0.18 -1.34 -0.78 -1.11 -3.76 -1.17 3.59 -0.49 1.89 -1.31 3.54 -0.93 4.19 -0.82 
+3.67 0.32 3.73 0.32 4.04 -0.24 3.54 0.3 3.29 0.73 -2.11 1.29 -0.26 1.2 4.8 -1.72 
+2.11 -1.37 p
+2.25 -0.3 4.14 -1.23 2.43 -1.21 -0.26 -1.02 -3.25 0.5 0.06 -1.17 2.13 -0.71 1.91 -1.39 
+1.5 -1.61 2.08 -0.75 1.47 0.36 1.13 0.17 1.84 -1.43 2.91 -1.3 2.14 -2.17 3.17 -0.71 
+0.24 -0.98 2.86 -1.87 3.11 -2.11 2.78 -1.62 0.67 -0.39 3.38 -1.11 2.84 -0.28 3.41 -1.2 
+3.2 -0.57 2.86 -0.39 3.17 -1.13 3.88 -1.32 3.47 -0.96 4.69 -1.09 4.38 -1.47 3.99 -1.61 
+4.38 -1.61 0.83 -0.46 2.8 -1.57 1.34 0.3 -0.79 1.96 -2.64 2.06 2.56 0.18 2.6 0.13 
+-3.8 1.02 -2.25 1.63 2.6 0.19 3.06 -0.84 -3.84 2.59 -4.86 1.36 -2.08 1.87 -0.7 1.19 
+0 -5.62 4.05 -1.15 -0.56 -1.02 -2.82 0.5 -0.67 1.67 0 5.62 -0.43 0.76 1.23 0.41 
+-0.15 1.57 -0.45 1.8 3.36 -0.41 2.46 0.28 0.63 0.87 2.91 -0.52 3.62 -0.78 3.43 -0.59 
+3.35 -0.07 2.79 0.41 3.56 0.16 3.23 -0.5 3.69 -0.48 1.15 -0.48 4.41 -1.8 4.95 -1.8 
+1.06 -0.46 3.39 -1.43 4.63 -1.11 3.86 -1.41 4.14 -1.78 4.73 -2.47 5.29 -2.69 4.97 -2.98 
+0.54 -0.17 2.73 -0.93 4.97 -2.58 3.79 -3.04 4.11 -2.86 3.1 -3.02 0.5 -2.71 -2.23 0.52 
+1.63 -2.38 2.38 -1.43 3.75 -2.08 0.91 -1.41 2.67 -1.29 2.71 -2.79 4.66 -3.13 1.47 -0.15 
+3.43 -1.07 2.12 -2.19 3.54 -2.97 2.89 -2.8 2.06 -2.24 1.71 -2.45 1.32 0.13 2.63 -1.63 
+0.61 1.59 1.3 1.02 2.3 0.02 1.48 0.63 2.06 0.43 3.04 -0.63 3.21 -1.02 3.43 -1.46 
+3.11 -1.72 3.41 -2.47 3.06 -3.64 2.28 -4 2.3 -3.38 3.49 -4.06 -2.89 0.5 -3.41 1.72 
+-3.69 3.43 -3.43 0.67 -3.37 0.31 -1.71 2.97 -2.5 0.48 -1.25 -1.3 1.99 -3.71 -1.71 -1.36 
+-3.3 2.39 -3.16 2.02 -3.89 2.54 -0.43 -1.06 0.16 -1.55 -0.04 -2.12 1.54 -2.78 1.95 -2.67 
+2 -3.04 2.78 -2.54 2.41 -3 1.08 -2.06 -3.49 3.54 -1.74 -0.43 -1.91 1.52 -2.3 2.58 
+-3.32 2.67 -2.26 -0.21 0.34 -2.56 2.87 -2.78 3.3 -3.02 1.75 -2.67 2.26 -2.93 2.39 -1.82 
+1.93 -1.91 1.21 -2.8 -0.71 -1.22 2.48 -2.56 2.32 -1.59 1.84 0.29 1.28 0.89 1.15 1.28 
+2.68 -1.13 1.21 0.91 -0.46 1.89 -1.91 2.02 -2.06 2.37 -1.74 2.82 1.24 0.65 -0.02 1.57 
+-0.7 2.28 -0.11 1.95 3.71 -2.86 -0.67 -0.91 2.34 -3.15 1.98 -3.67 2.91 -2.23 2.21 -3.21 
+2.78 -3.61 2.41 -2.43 2.97 -2.82 1.07 1.69 1.04 1.71 3.08 -1.21 2.5 -0.87 2.56 -0.98 
+2.65 -1.34 0.67 0.93 1.76 0.61 2.47 -0.97 0.65 -2.87 2.09 1.04 2.06 -1.02 1.02 -2.49 
+1.39 -2.37 1.84 -2.39 1.02 -2.88 0.74 0.89 -1.07 3.28 0.74 0.91 0.09 1.71 1.69 -1.56 
+3.82 -3.1 0.26 -1.29 3.36 -3.28 1.52 -0.78 1.73 -2.07 0.28 -1.73 2.34 -2.97 2.76 -3.37 
+2.8 -3.43 2.26 -3.43 -0.3 -1.26 2.54 -1.8 2.06 -2.19 2.67 -3.56 2.11 -3.08 1.61 -3.14 
+2.56 -3.17 0.11 -2.56 1.96 -1.86 1.52 -3.19 1.93 -3.99 1.46 -3.61 1.89 -4.54 1.32 -4 
+0.32 -2.99 0.29 -2.95 -0.22 -2.47 2.15 -4.17 -2.54 0.11 2.63 -3.86 -2.02 -0.02 2.63 -3.45 
+0.55 -3.45 0.04 -2.89 0.89 -3.93 -0.11 -3.23 0.39 -3.41 1.5 -2.87 2.37 -1.52 0.58 -2.26 
+-0.37 -1.52 p
+-2.28 1.91 -1.33 1.21 -2.02 3.02 -0.37 -1.52 -1.72 -0.34 -0.57 -2.29 0.24 -3.29 0.69 -3.47 
+0.55 -3.8 1 -3.91 1.61 -3.8 0.78 -4.32 1.67 -3.45 1.98 -4.02 3.17 -2.36 2.2 -0.48 
+1.61 -1.83 2.54 -1.04 2.36 -1.3 2.67 -0.68 2.11 -0.45 2.38 -1.39 2.48 -1.11 2.78 -3.34 
+2.43 -2.8 2.24 -3.25 2.09 -3.64 1.71 -3.08 2.54 -5.23 1.65 -3.12 0.98 -3.23 0.02 -4.1 
+0.11 -3.71 0.11 -3.66 0.02 -3.7 -1.24 -2.45 2.11 -4.47 0.67 -4.55 -0.84 -2.76 0.15 -4.21 
+0.09 -4.23 -1.76 2.46 -1.66 3.79 -1.29 4.47 -1.75 -0.76 -1.72 1.46 -1.39 -2.34 -2.17 0.85 
+-2.02 2.02 -1.86 2.39 -1.73 1.39 -1.39 -0.09 -2.49 1.37 -1 -1.63 -1.5 -1.37 -2.04 4.13 
+-1.84 -0.76 -0.43 -2.82 1.8 -4.43 2.28 -4.78 0.91 -3.6 1.2 -4.25 0.41 -3.38 1.37 -4.82 
+1.78 -4.26 1.93 -3.1 1.15 2.45 2.23 -4.67 1.89 -1.24 1.91 -3.14 2.09 -3.8 1.67 -0.67 
+1.87 1.46 2.06 -1.93 2.11 -1.06 2.06 -1.02 2.04 -1.06 2.29 -2.67 1.3 -3.99 1.26 -4.02 
+1.23 -4.01 1.2 -4.06 1.76 -1.56 2.28 -3.56 1.78 -4.19 -2.2 -2.66 -1.52 0.89 -1.8 0.56 
+-2.04 0.29 -1.71 1.5 -2.23 0.91 -1.41 3.66 -2.22 1.89 -2.19 2.73 -0.96 4.23 -1.56 1.69 
+-1.76 4.25 -1.06 3.15 -1.08 2.16 -1.22 1.46 -1.84 1.32 -1.84 1.3 -0.26 0.26 0 -22.48 
+2.11 -1.08 1.76 -2.38 1.98 -2.13 2.06 -1.13 2.13 -0.26 2.28 -0.87 2.11 -2.84 2.36 -2.56 
+1.37 2.37 2.61 -2.32 1.67 1.09 2.32 -2.63 1.43 0.7 0.76 -4.41 1.28 1.45 2.06 -2.02 
+0.57 -3.8 0.02 -4.38 1.61 -1.65 1.8 2 1.67 -5.17 1.47 -1 1.17 -3.02 1.52 1.7 
+1.58 -1.82 -0.45 3.95 -1.17 1.32 -1.65 -1.02 0.15 3.8 1.34 2.43 1.65 -3.5 1.22 -3.08 
+1.13 0.43 0.59 -4.69 -2.8 0.35 1.28 -2.04 0.02 -5.25 0.96 -5.92 0.65 -4.45 0.43 -5.45 
+0.33 -4.73 -1.63 0.93 -1.3 -1.26 -0.29 -2.73 -1.24 0.5 -1.91 3.11 -2.02 1.35 -2.78 2.28 
+-1.87 2.34 -1 2.28 -2.08 1.26 -2.19 3.64 -2.09 2.91 -0.91 3.11 -2.02 3.84 -0.93 3.11 
+-2.08 2.09 -1.13 2.13 -1.07 0.06 0 -10.8 2.56 -4.82 -1.02 -1.7 -1.21 1.26 -1.02 3.82 
+0.7 1.43 0 10.8 -1.26 0.09 -1.78 4.82 -1.76 3.17 -0.62 2.62 -2.3 1.05 -1.43 0.21 
+0 -8.18 2.58 -2.34 0.74 -3.34 -2.14 2 -1.7 1.56 0.52 2.13 0 8.18 -0.7 0.11 
+-1.52 3.39 -2.21 1.8 -1.98 2.15 -1.28 -0.5 -2.7 2.19 -2.28 1.84 -1.73 2.35 -1.43 3.45 
+1.91 1.95 2.08 -1.19 1.89 1.98 2.25 1.62 0 22.48 -2.11 2.29 -2.37 1.64 -0.26 -2.17 
+-1.67 2.52 -1.41 3.69 -0.98 5.17 -1.78 4.32 -1.54 3.63 -0.34 3.32 -1.33 3.02 -2.3 2.67 
+-1.23 5.06 -2.39 3.45 -1.06 1.08 0 -541.79 -1.93 -2.63 -1.96 -2.63 -3.1 -3.69 -3.17 -3.69 
+-1 -1.52 -1.04 -1.54 -0.02 -0.58 -0.02 -0.61 -0.47 -1.74 -1.71 -1.91 -1.74 -1.93 -3.14 -2.82 
+-3.14 -2.8 -3.15 -2.75 -3.14 -2.71 -0.71 -0.48 -0.72 -0.46 -2.21 -1.71 -2.19 -1.68 -2.95 -2.36 
+-2.95 -2.32 2.47 2.41 2.43 2.41 -1.41 -0.87 -1.41 -0.84 -1.82 -1.17 -1.82 -1.15 1.67 1.91 
+1.63 1.89 p
+2.5 2.52 2.45 2.54 2.45 2.32 2.43 2.32 2.82 2.62 2.82 2.65 2.11 1.97 2.13 1.98 
+2.9 2.93 2.89 2.93 3.71 3.67 3.69 3.73 2.93 2.86 2.93 2.93 0 541.79 -1.8 1.82 
+-2.45 3.39 -2.17 2.86 -2.3 3.62 -2.02 3.11 -2.25 2.75 -2.37 1.56 -1.46 -0.08 0.83 -2.93 
+-0.39 -3.51 -0.19 -3.23 0.28 -3.43 -1.13 -1.52 -1.17 -0.65 -2.23 -0.11 -1.29 3.93 -1.67 4.49 
+-2.32 3.54 -2.56 3.19 -2.28 2.67 -0.89 -1.21 -2.21 1.8 -0.5 2.23 -2.25 1.78 -0.85 -1.17 
+-1.91 1.19 -2.69 1.18 -2.43 1.41 -2.07 2.04 -1.82 2.34 -2.06 1.96 -0.63 0.34 0 -118.21 
+2.95 -0.65 2.34 -2.46 2.3 -2.5 1.96 -2.73 2.11 -1.98 1.11 -3.96 0.3 -3.87 -1.04 -3.38 
+-2.02 -2.67 -1.67 -1.08 -1.71 2.21 -1.87 4.05 -1.11 2.65 -1.08 3.93 -0.5 3.05 -0.65 3.61 
+0.11 3.5 -1.52 2.28 0 118.21 -1.87 1.09 0 -3.78 0.09 -2.73 0.41 -3.23 -1.04 -2.22 
+-1.09 -2.19 -1.04 -2.24 -0.89 -1.91 -2.6 3.08 0.74 -2.6 -0.59 -2.45 -0.87 -2.62 0.74 -2.65 
+1.4 -1.78 0.72 -3.45 0.42 -3.65 -0.96 -2.66 -1.04 -1.84 -0.2 -3.47 0.28 -2.87 0.31 -3.69 
+-0.33 -3.4 -0.82 -2.32 -0.37 -2.65 0.13 -3.6 -0.68 -2.87 -0.36 -1.82 0.95 -2.93 -0.15 -2.37 
+-1.55 -1.97 -0.93 -1.45 0.57 -3.21 -2.3 -1.13 0.2 -3.37 0.8 -2.97 1.83 -3.49 1.8 -3.62 
+1.73 -3.59 1.11 -4.02 0.23 -3.99 0.02 -3.45 1.15 -3.32 1.24 -2.56 1.26 -3.86 -1.93 -1.34 
+-0.24 -4.21 1 -3.34 -1.48 -1.63 -1.15 -2.73 0.46 -4.38 -1.24 -2.73 -1.97 0.11 -2 1.34 
+-2.12 1.96 -1.8 3.41 -1.8 3.49 -1.69 2.85 -1.71 2.84 -1.84 2.04 -2.21 1.89 -1.91 2.09 
+-1.93 3.32 -1.75 2.8 -1.8 2.78 -1.46 2.99 -2.52 2.32 -2.48 2.32 -2.19 2.52 -1.68 2.22 
+-1.75 3.43 -1.57 2.93 -2.12 3.17 -2.2 3.23 -0.22 2.47 -1.32 1.11 -1.93 2.67 -1.06 3.28 
+-1.33 3.73 -2.11 1.93 -1.49 2.34 -1.13 3.23 -1.15 -0.17 0.61 -2.96 1.3 -3.73 -0.63 -3.06 
+-1.41 -2.28 -2.26 -1.48 -2.61 0.28 -2.69 1.54 -2.21 1.15 -2.3 2.41 2.23 1.43 1.43 2.25 
+-0.83 3.41 -1.69 -2.45 -2.19 -1.43 -2.82 0.76 -2.47 1.69 -2.25 0.5 -2.39 -0.19 -1.48 2.21 
+-1.8 2.11 -1.99 0.67 -1.89 1.35 -0.3 -0.09 0 -299.68 1.08 -0.82 -0.34 -2.09 -2.08 -0.37 
+1.34 3.28 0 299.68 -1.84 -0.55 -1.68 -1.69 -1.34 -1.41 -1.71 -1.61 -1.84 -0.48 -2.07 0.06 
+0 -301.45 1 -1.34 -0.58 -1.05 -2.09 -0.37 -0.45 1.89 2.12 0.87 0 301.45 -0.04 0 
+-0.83 -1.73 -2.28 -1.28 -1.78 -1.56 -2.11 -1.8 -2.89 -0.89 -1.89 -0.43 -2.54 -0.74 -2.04 -1.05 
+-2.26 -0.49 -2.8 -0.29 -2.61 -0.63 -2.97 -0.87 -1.87 2.58 -1.41 2.26 -2.19 1.26 -2.04 -0.98 
+-1.65 -1.95 -1.34 -1.74 -1.83 -2.54 -2.36 0.65 -1.89 -1.43 -2.17 1.35 -2.3 -0.46 -2.73 1.67 
+-2.32 0.7 -3.19 -0.26 -2.02 1.95 -1.88 2.56 -2.89 2.15 -2.78 2.71 -2.17 1.37 -1.37 -1.67 
+-1.95 0.85 -1.96 0.87 -0.28 -3.41 -2.06 -0.8 1.96 -2 -2.11 -1.86 2.15 -0.29 1.8 -2.58 
+2.17 -2.45 1.97 -1.98 2.71 -1.65 2.71 -1.71 2.5 -1.2 1.63 -2.15 0.56 -2.56 2.3 -1.8 
+1.26 -1.15 p
+0.58 2.93 -0.56 2.59 0.91 0.89 1.8 -1.45 1.45 -2.76 0.7 -3.06 -0.41 -3.47 1.84 0.74 
+1.21 -1.2 2.78 0.59 0.92 2.04 2.16 0.91 2.7 0.54 1.63 1.29 0.17 2.86 1.37 2.93 
+0.63 2.54 0.68 2.56 1.11 2.23 -0.11 2.3 1.25 -0.02 0.29 -1.61 1.17 -2.91 1.37 -3.39 
+2.71 -1.65 2.54 -1.13 2.69 -0.48 2.28 0.54 2.82 0.15 2.04 -1.95 2.39 -1.74 2.3 -0.63 
+0.11 -3.49 0.07 -3.47 -0.84 -2.15 -0.35 -2.52 -0.18 -2.95 -1.82 -0.83 -0.22 -2.99 0.68 -3.14 
+1.61 -2.17 -1.54 -1.78 -1.67 -1.34 -0.68 -1.48 0 -41.25 -0.19 -0.22 0 -370.7 -0.37 -2.02 
+0.02 -1.55 1.48 0.39 2.37 0.39 -2.12 -1.98 -1.39 0.11 -1.74 -1.43 -0.32 1.08 -2.71 -0.84 
+2.75 2.39 0.74 2.54 1.31 0.91 0 370.7 -1.82 -2.14 -1.95 -0.71 -1.87 0.45 1.26 2.11 
+2.52 0.3 2.06 0.22 0 41.25 -0.3 -0.65 0.2 -3.32 -0.82 -1.43 -1.67 -1.31 -1.97 -1.86 
+0.13 -3.32 -1.48 -2.26 -2.02 -0.26 -2.17 -1.37 -1.89 -2.38 -1.11 -1.02 0 -179.21 1.57 -2.69 
+1.15 -2.78 0.24 -3.41 1.04 -3.34 0.45 -4.41 0.22 -2.93 -2.04 -3.37 -1.89 2.15 -0.07 -4.93 
+-0.67 -2.62 -1.45 -1.72 -0.29 -2.54 -0.87 -3.56 -0.78 -3.08 -1.73 -3.69 -1.28 -3.13 -1.24 -3.12 
+-1.23 -2.65 -0.79 -2.56 -1.25 -2.56 -1.29 -2.62 -1.21 -2.61 -0.89 -2.5 -0.82 -2.54 -0.87 -2.54 
+-1.21 -2.07 -1.43 -3.03 -1.28 -2.59 -2.32 -3.15 -1.98 0.28 -2.76 -1.3 -2.43 -1.72 -2.62 -0.76 
+-0.5 0.3 0 -358.03 -5.55 -2.17 -5.56 -2.12 -5.51 -2.04 -5.5 -1.97 -5.09 -1.87 -5.12 -1.82 
+-5.17 -1.78 -5.21 -1.76 -3.6 -1.12 -3.58 -1.09 -3.58 -1.06 -3.56 -1.04 -2.88 -0.83 -2.89 -0.78 
+-2.86 -0.78 -2.84 -0.76 -1 -0.22 -1 -0.19 -0.98 -0.22 -0.95 -0.2 -2.78 -0.69 -2.75 -0.7 
+-5.47 -1.3 -2.19 -0.43 -2.17 -0.43 -2.14 -0.41 -2.11 -0.39 -2.29 -0.57 -2.28 -0.54 -2.3 -0.56 
+-2.3 -0.52 -2.34 -0.5 -2.32 -0.45 -4.6 -0.91 2.06 0.31 2.11 0.32 2.15 0.33 2.17 0.34 
+-3.37 -0.73 -3.36 -0.69 -3.34 -0.7 -3.36 -0.67 -1.74 -0.24 -1.7 -0.24 -1.71 -0.21 -1.65 -0.22 
+-1.98 -0.3 -1.95 -0.26 -1.93 -0.28 -1.91 -0.26 -4.37 -0.74 -4.34 -0.71 -4.36 -0.68 -4.34 -0.65 
+-4.28 -0.61 -4.27 -0.59 -4.25 -0.54 -4.28 -0.5 -3.14 -0.45 -3.21 -0.43 -3.21 -0.41 -3.25 -0.41 
+-2.08 -0.28 -2.11 -0.26 -2.13 -0.26 -2.13 -0.24 -3.21 -0.26 -6.37 -0.43 -3.19 -0.2 0.84 0.17 
+0.82 0.17 0.8 0.17 0.82 0.18 -0.97 0.2 -0.31 0.08 4.17 0.39 2.08 0.22 2.06 0.21 
+0.24 0.09 0.24 0.11 0.22 0.09 0.24 0.11 2.73 0.24 2.73 0.28 2.73 0.26 2.74 0.29 
+3.36 0.43 3.34 0.43 3.32 0.45 0.96 0.2 0.93 0.21 0.91 0.2 -1.06 -0.06 -1.08 -0.05 
+-1.07 -0.04 1.24 0.3 2.38 0.65 1.91 0.39 1.87 0.41 1.84 0.39 2.65 0.61 1.3 0.3 
+1.78 0.41 1.74 0.43 1.71 0.41 3.91 0.67 3.86 0.71 3.82 0.72 3.54 0.54 3.56 0.56 
+3.55 0.59 -0.84 -0.33 -0.89 -0.32 -0.89 -0.3 0.09 -0.2 0.09 -0.21 0.07 -0.2 2.09 0.28 
+2.11 0.3 2.12 0.31 3.61 0.67 3.62 0.69 3.63 0.72 3.71 0.75 3.69 0.79 3.69 0.83 
+4.88 1.06 p
+4.9 1.11 4.93 1.15 -1.78 -0.56 -1.79 -0.54 -1.8 -0.55 -3.49 -0.93 -3.54 -0.91 -3.56 -0.91 
+0.57 0 0.56 0.02 0.57 0 0.59 0.02 -0.63 -0.26 -0.63 -0.24 -1.3 -0.52 1.56 0.26 
+3.17 0.57 1.61 0.28 1.87 0.37 1.89 0.39 3.82 0.82 -1.06 -0.32 -1.05 -0.35 -2.16 -0.65 
+7.29 1.82 3.62 0.93 3.63 0.97 2.88 0.7 2.89 0.72 2.93 0.74 2.93 0.76 3.62 0.98 
+3.62 1.02 3.67 1.04 3.67 1.06 3.64 1.08 3.64 1.11 3.67 1.15 3.71 1.17 3.49 1.15 
+3.5 1.17 3.54 1.21 3.53 1.24 2.15 0.72 4.38 1.48 2.24 0.78 3.41 1.24 3.45 1.28 
+3.47 1.33 3.47 1.34 0 358.03 -1.37 0.89 -1.74 1.67 -1.63 2.63 0.2 3.29 0.2 3.82 
+-0.91 2.28 0.04 2.84 0.37 2.38 2.23 3.65 2.13 2.63 1.17 2.56 2.19 3.18 0.74 2.52 
+-0.89 3.21 0.28 2.47 -0.91 3.21 -0.07 3.34 2.04 3.21 1.74 4.62 2.21 0.35 2.78 1.91 
+2.72 1.43 2.78 1.93 2.28 1.84 2.43 3.38 2.22 0.37 -0.29 2.45 1.89 1.82 -0.26 2.91 
+2.64 0.95 2.26 1.43 0.56 2.56 0.17 3.04 2.32 2.95 0 179.21 -0.93 -0.84 -1.93 -2.37 
+-0.26 -2.25 0.54 -2.04 -2.11 -1.81 -2.11 -1.84 -2.13 -1.84 -2.15 -1.75 -2.54 -1.96 -2.06 -2.28 
+-1.06 -3.04 -2.22 -1.73 -2.43 -0.76 -1.57 -2.62 -1.35 -2 -2.36 -1.21 -2.58 -0.26 -2.02 -0.59 
+-0.84 -2.32 -2.28 -1.72 -2.41 -1.17 -2.43 -1.15 -2.2 -0.11 -2.23 2.52 -0.17 3.04 -1.15 1.26 
+-1.5 3.19 -1.56 3.23 -1.04 2.84 -0.11 2.52 -0.96 2.34 -1.89 2.61 -2.32 2.46 -1.95 1.02 
+-1.8 2.11 -5.73 7.75 -2.62 1.82 -3.45 0.13 -1.28 1.7 -2.08 1.54 -1.24 3.26 -1 2.32 
+-0.09 2 -1.13 2.8 -1.93 2.56 -2.32 2.46 -2.5 1.37 -2.75 0.8 -1.93 2.56 -1.56 2.67 
+-2.32 2.45 -2.06 1.55 -2.37 2.45 -2.32 2.45 -1.8 2.04 -2.17 2.02 -2.32 -0.59 -0.02 3.02 
+0 3.06 -0.8 2.82 -0.61 -3.66 -0.24 -3.65 0.63 -2.34 -0.93 -1.26 -2.45 1.41 -2.04 1.56 
+-1.28 1.69 -1.65 1.59 -1.91 2.58 -1.41 2.19 -0.91 -1.23 1.79 -2.06 1.04 -2.28 1.78 -2.1 
+2.13 -1.98 2.06 -1.56 1.02 -2.23 1.39 -1.39 0.28 -0.26 0.97 -2.26 2.29 -2.47 1.4 -2.21 
+1.89 -2.58 1.8 -2.11 1.88 -2.59 2.06 -1.49 0.2 -2.52 0.84 -1.8 1.89 -2.58 1.99 -1.02 
+2.32 -0.96 1.89 -0.57 0.46 -2 0.33 -1.36 2.17 -2.02 0.43 -1.91 0.28 -3 1.13 -3.25 
+0.93 -2.32 1.95 -3.06 2.8 -0.84 3.02 -1.82 1.76 -2.12 1.87 -2.61 1.15 -3.28 0.98 -2.82 
+1.76 -2.12 1.76 -0.07 1.82 -2.61 3.26 -0.72 2.71 -0.34 2.65 -2.41 3 -1.73 2.16 -2.04 
+2.54 -1.93 2.59 -1.84 1.41 -2.73 -2.26 -2.15 1.93 -1.05 2.04 -1.56 2.14 -1.97 1.93 -1.05 
+2.63 0.15 2.34 1.7 2.26 2.19 2.99 0.35 2.43 1.19 2.56 2.82 2.89 0.84 2.28 1.76 
+2.56 0.28 2.66 1.84 2.7 1.96 1.45 3.16 3.11 -0.08 0.52 -4.67 0.3 -3.62 -0.71 -2.93 
+0.67 -3.49 -1.09 -3.54 -0.78 -2.91 -0.89 -2.39 -0.35 -3.25 -0.84 -2.91 -0.79 -3.41 -0.46 -2.78 
+-0.3 -3.73 -1.87 -2.58 -1.39 -2.52 -0.89 -3.37 -0.97 -2.8 -1.84 -3.1 -1.48 -2.43 -1.89 -3.08 
+-1.45 -2.96 p
+-1.97 -2.5 -2 -2.52 -2.54 -1.63 -1.95 -2.47 -2 -3.02 -2.11 -2 -2.02 -2.43 -1.12 -2.8 
+-2.5 -3.06 -1.61 -3.34 -1.65 -2.32 -1.17 -3.23 -2.15 -2.41 -2.08 -2.91 -2.28 0.05 0.13 -3.43 
+-1.65 -3.73 -1.71 -3.82 -1.3 -2.65 -1.28 -3.17 -0.82 -3.08 -0.87 -3.1 2.3 -2.54 2.23 -2.54 
+-1.34 -3.17 -0.02 -3.45 0.43 -3.77 1.3 -3.23 0.8 -2.8 1.8 -1.15 1.74 -1.65 -0.09 -2.93 
+-0.54 -3 0.3 -2.86 -0.11 -2.46 -0.61 -3.45 0.68 -3.25 -0.18 -2.93 0.68 -3.3 -0.63 -2.97 
+-1.52 -2.58 -2.04 -2.69 -1.91 -2.17 -2.91 -2.8 -1.95 -2.13 -3.65 -1 -2.35 -1.21 -2.78 -1.3 
+-2.02 -2.62 -2 -2.56 -2.56 -3.1 -2.37 -1.24 -2.02 -2.58 -1.93 -1.61 -2.47 -2.11 -0.74 -2.87 
+1.56 -1.67 0.5 -3.23 0.39 -3.62 0.61 -2.28 -0.45 -3.26 -0.76 -2.39 0.02 -2.76 -1.76 -2.93 
+-1.95 -1.54 -2.8 -1.2 -3.76 -1.71 -1.89 -1.02 -2.8 -1.17 -2.3 -3.34 1.65 -0.8 -0.3 -1.8 
+-0.37 -2.32 -1.36 -2.79 -1.43 -3.25 -1.32 -2.78 -2.45 -1.55 -2.96 -2.02 -1.71 -2.32 -2.12 -2.39 
+-1.8 -2.78 -1.74 -2.34 -2.59 -2.32 -2.54 -1.95 -2.04 -1.84 -2.61 -2.37 -2.04 -1.84 -2.4 -1.43 
+-3.32 -1.89 -2.5 -1.91 -2.65 -0.54 -2.97 -0.13 -1.54 -1.37 -3.43 -0.15 -1.93 -1.39 -2.5 0.3 
+-2.82 0.76 -2.3 -0.98 -2.91 0.34 -3.12 -0.58 -1.91 -1.35 -3.45 -0.13 -3.06 -0.52 -1.89 -1.35 
+-3.04 -0.11 -1.86 1.63 -1.93 1.67 -1.82 -0.93 0.28 2.17 -0.59 2.08 -1.8 2.95 1.3 0.07 
+1.48 1.32 -0.02 3 -1.39 2.95 -1.54 2.11 -1.09 2.13 -0.52 2.99 -1.11 2.15 -0.61 2.99 
+-1.56 2.13 -2.54 1.63 -1.15 2.15 -1.69 1.67 -0.22 2.6 -0.7 3.02 -0.67 2.61 -0.33 2.19 
+0.17 2.65 -1.15 3.02 -0.3 2.21 0.17 2.67 -0.26 3.06 0.59 2.25 -0.83 2.21 -2.17 2.09 
+-0.82 2.21 -1.76 2.17 -0.8 3.08 -1.73 2.61 -1.3 2.63 -1.32 2.21 -1.85 1.7 -1.3 3.07 
+-0.37 2.68 0.07 2.28 0.55 2.71 0.06 2.71 1.5 2.78 0.59 2.73 0.98 2.75 1.04 3.21 
+1.04 3.26 1.91 2.32 2.43 1.5 1.48 2.37 0.96 2.34 0.56 3.21 -0.48 3.17 -1.41 1.8 
+-1.39 2.19 -0.91 2.72 -0.95 1.32 2.43 2.88 -0.96 2.72 -1.43 2.25 -0.46 2.73 -1.43 2.71 
+-1.43 1.76 -0.52 2.3 -0.93 1.34 0 2.32 -1.45 2.21 -1.95 2.24 -1.46 2.28 -1.91 1.73 
+-1.91 1.76 -1.97 1.8 -2.89 1.72 -1.91 2.71 -1.93 2.25 -1 2.75 -1.47 2.73 2.84 1.96 
+0.44 2.82 -0.05 2.8 1.39 2.41 -1.91 0.8 1.39 2.43 0.93 2.39 0.39 3.28 0.89 3.3 
+-2 2.28 -1.45 2.3 -2.34 0.34 -0.59 2.78 -0.8 -0.02 0 -4.23 1.43 -0.89 -0.93 -1.89 
+-1.43 0.39 0.93 2.39 0 4.23 -1.52 -0.06 -2.37 -0.54 -2.84 -0.11 -2.82 -0.61 -2.84 -0.54 
+-2.85 -0.09 -3.32 1.76 -1.02 3.73 -1.48 3.73 -2.86 2.26 -2.84 0.89 -3.28 -0.06 -3.32 -0.5 
+-2.85 -0.05 -2.82 -0.52 -3.28 -0.93 -1.41 -1.91 -3.79 -0.02 -3.3 -1.87 -2.39 -1.39 -2.32 -0.43 
+-2.84 -0.93 -2.41 -1.39 -3.28 1.43 -2.84 0.5 -4.25 1.02 -2.82 0.07 -2.39 -0.42 -3.29 -0.41 
+-3.37 -0.35 -2.37 -1.8 -3.36 -0.39 -2.86 -1.76 -2.32 0.54 -2.82 1.07 -3.27 2.5 -2.8 1.99 
+-2.26 1.98 p
+-2.73 2.95 -3.71 2.13 -2.3 2.43 -2.76 1.59 -2.73 1.58 -2.69 3.02 -0.78 2.43 -0.41 2.43 
+-0.3 2.86 -1.71 2.46 -2.21 2.54 -2.23 1.58 -1.26 2.5 -1.67 2.47 -2.25 1.17 -0.2 3.84 
+-2.34 -0.33 -2.15 1.63 -2.19 1.63 0.24 3.36 0.65 2.8 -0.17 3.34 -1.12 2.97 -2.15 1.65 
+2.39 1.2 1.54 2.25 1.97 2.18 0.32 3.82 2.3 5.52 0.67 2.79 0.26 2.84 -0.65 2.93 
+-1.46 3.01 1.91 1.72 0.26 2.84 -1.89 2.61 -2 2.1 0.71 2.8 0.79 2.78 1.84 1.26 
+1.54 2.23 1.7 3.69 1.52 2.2 1.93 2.21 2.39 2.2 1.63 3.17 1.11 2.3 1.11 2.76 
+1.39 1.3 2.65 1.17 1.46 1.76 1.13 2.75 1.87 2.23 3.77 0.16 3.45 1.15 1.84 2.25 
+3.04 1.2 2.22 2.17 1.84 2.26 1.5 3.19 -1.06 2.02 0.37 4.67 1.71 1.3 1.39 2.3 
+0.15 1.84 2.15 1.73 1.73 2.28 2.48 1.26 2.8 0.82 2.91 1.7 1.32 2.32 1.3 2.23 
+0.89 2.34 1.3 2.76 2.35 0.35 1.07 -1.89 3.03 -1.98 1.98 0.39 3.06 -0.07 1.97 0.39 
+2.67 -1.45 2.34 0.48 3.14 1.37 1.17 1.84 2.32 0.43 2.32 0.5 2.3 1.84 2.28 1.43 
+3.45 0.48 3.06 0.55 2.25 0.95 2.28 0.05 1.86 0.54 2.7 0.09 2.67 -0.41 1.56 -0.85 
+2.26 0.55 1.85 1.48 3.47 -0.78 1.85 1.07 3.49 -0.76 2.23 0.63 1.73 1.52 2.24 0.61 
+2.3 -0.28 1.41 -2.71 2.91 1.63 -0.91 -2.43 -1.39 -1.08 1.04 -3.19 1.67 -0.83 0.61 -2.28 
+-0.93 -2.45 -1.78 -2 -1.41 -1.52 0.58 -2.32 2.06 -0.82 1.93 0.65 0.98 -2.3 2.95 -1.17 
+2.45 -0.76 3.15 0.26 3.6 -0.11 2.84 -0.19 2.91 -1.13 2.89 -0.67 0.05 -0.37 0.32 -2.43 
+1.37 -1.3 2.58 -1.13 2.89 -0.13 4.1 -0.5 3.5 -1.47 2.69 -1.61 2.46 -0.13 1.82 1.22 
+1.39 1.63 0.37 2.43 -0.76 2.32 -1.13 1.74 0.85 2.08 2.36 2.71 2.52 1.37 2.62 0.85 
+3.19 0.06 2.89 -0.52 0.87 -2.26 2.8 -0.04 2.89 -0.44 2.75 0.48 1.67 -2.17 2.6 0.96 
+2.78 0.04 2.84 0.07 2.13 -0.58 2.54 -0.5 2.73 0.56 3.04 -0.87 2.17 1 1.95 1.91 
+2.3 1.99 2.59 1.06 3.12 0.24 0.16 -2 2.16 -0.45 0.22 2.04 1.93 -1.04 2.52 1.08 
+3.26 1.37 0.95 2.23 0.7 3.21 -0.15 3.02 -0.11 3.02 0.22 3.11 0.04 3.54 0.67 2.76 
+-1.28 2.71 -1.26 3.73 0.11 2.06 -1.35 1.63 0.71 2.28 -0.82 1.3 -1.43 -2.5 -1.39 -0.39 
+-1 0.19 0 -6.55 -1.75 -2.95 1.13 -1.21 -1.78 -0.46 -0.35 -1.43 -1.97 -1.24 -2.69 -0.12 
+-1.3 1.66 2.06 1 0.79 1.22 1.67 0.91 1.99 1.06 2.21 1.56 0 6.55 -2.3 0.41 
+-1.17 -2.3 -1.54 -2.41 -1.73 -0.46 -1.52 -1.41 -2.43 0.39 -1.65 1.58 -3.64 0.61 -2.62 -0.16 
+-0.05 -2.47 -2.87 -2.15 -2.4 0.41 -3.59 1.69 -0.95 -0.21 0 -1.75 -0.2 -2.24 -1.15 -1.43 
+-0.78 1.56 2.13 2.11 0 1.75 -1.56 -0.33 0.37 1.54 -4.34 -0.91 0.93 2.14 -2.19 1 
+-0.11 1.98 -2.04 0.52 -0.5 0.11 0 -16.34 0.35 -1.39 1.99 1.39 0.02 -1.65 -2.95 -0.8 
+-2.95 -0.72 -1.72 0.74 -2.37 0.09 -2.23 -0.39 -0.16 2.37 2.74 0.02 0.56 -0.89 2.13 0.91 
+2.04 -0.33 p
+2.54 0.65 0 16.34 -1.91 0.39 -0.13 1.91 1.82 -1.08 0.93 0.71 -1.11 1.23 -1.22 3.17 
+0.3 1.52 -3.38 -1.17 -0.16 3.37 1.22 2.19 2.45 0.52 2.41 0.52 2.78 0.61 2.39 0.56 
+-0.76 1.31 1.91 0.98 -2.98 1.25 -2.71 -0.62 -2.95 -1.13 -1 -1.67 -1.61 -2.11 -1.22 -2.19 
+-0.32 1.18 1.21 2.16 -1.98 -0.87 -1.87 1.54 -2.54 0.02 -1.62 -0.84 -2.21 0.08 -0.67 -1.56 
+-2.11 -0.39 1.39 -1.2 -0.37 -1.52 -2.11 -0.39 -2.67 1.91 0.43 -3.28 1.95 -2.08 1.89 -1.59 
+1.11 -1.71 1.8 -1.13 1.99 -0.62 0.83 -1.76 2.02 -0.61 -2.76 0.48 0.79 -3.3 -2.61 1.52 
+-2.65 0 -1.89 1.58 -3.17 -1 2.39 -0.58 2.49 -1.02 2.13 -2.54 -2.32 0.13 1.23 -2.24 
+1.83 -3.04 -2.21 1.52 -1.13 -2.08 -1.5 1.65 -1.83 -0.29 -1.04 1.26 -0.13 2.41 -2.6 1.5 
+0.71 2.02 1.97 1.3 -3.36 -0.08 -2.29 2.04 -2.04 2.56 -1.45 1.68 -1.91 2.12 -2.09 1.11 
+-0.57 2.78 -0.28 3.28 -0.15 2.39 -2.37 1.07 -2.45 1.52 -2.69 1.04 -2.89 1.97 -3.54 1.91 
+-2.47 0.15 -1.26 1.24 -2.62 1.11 -0.3 1.82 -1.25 1.26 -0.76 2.26 -2.97 1.52 -0.07 -1.87 
+-1.17 -1.08 -1.24 1.28 -0.61 1.85 0.43 1.43 -2.09 0.24 -1.8 -1.58 -1.63 -0.17 -0.11 -1.84 
+1.2 -1.29 -0.39 -1.93 0.58 -1.8 1.98 -1.65 1.91 -1.21 2.26 -1.17 1.41 -2.21 0.72 -2.29 
+1.25 -1.28 2.32 -1.15 2.67 -1.11 3.51 0.43 -0.73 -1.96 2.28 -0.7 2.73 -1.06 4.77 -2.22 
+2.59 -1.97 -0.37 -1.99 -1.52 0.3 -0.73 1.78 -2.21 0.17 -1.93 0.7 -0.76 -1.96 -0.26 -2.88 
+2.4 -1.11 0.42 -2.34 -2.02 -1.24 0.38 -2.28 -1.22 -1.56 -0.54 -1.5 -1.45 -0.17 -0.24 1.41 
+0.35 2.36 0.89 1.52 -0.73 2.3 -0.57 0.84 0 -6.59 -1.15 -2.52 -0.28 -2.87 0.98 -1.78 
+-0.43 -1.91 -3.11 0.11 -1.73 1.69 -2.32 0.29 -3.26 1.54 -1.48 -0.13 -1.82 2.19 1.72 1.59 
+2.21 0.22 2 -0.79 2.58 0.29 3.28 0.8 2.82 1.28 0 6.59 -0.91 1.37 -0.63 1.8 
+-3.06 0.61 -1.43 2.15 -1.5 0.34 -2 1.2 -2.08 1.65 -2.82 -0.28 -2.32 1.17 -2.08 2.17 
+-2.41 2.08 -2.11 -0.17 -0.57 1.84 -2.36 2.1 -1.3 2.24 -0.7 2.75 -2.15 0.22 0 -5.97 
+0.28 -2.78 0.52 -1.8 -0.52 -1.95 -0.02 -0.13 0 -3.1 2.04 -2.21 0.59 -2.26 0.24 -2.34 
+-0.11 -2.36 -0.54 -2.35 -1.84 -0.13 -1.3 -1.97 -2.02 1.76 0.15 2.82 -0.24 2.8 -1.28 2.21 
+-0.17 1.89 1.13 -0.43 1.39 0.59 1.97 1.99 0 3.1 -0.39 -2.69 -2.37 2.2 -0.54 1.8 
+0.15 2.37 2.02 1.08 0.87 1.91 0 5.97 -0.3 0.04 -1.45 0.82 -2.11 0.3 -1.65 -1 
+-0.87 -1.95 -2.32 -1.02 -2.37 -1.52 -1.56 -1.98 -2.45 -0.56 -2.54 1.28 -2.82 0.35 -2.48 0.84 
+-1.71 -1.43 -2.39 -1.46 0.43 -2.75 0.48 -3.21 -0.72 -0.5 0 -10.66 2.26 -1.34 -1.43 -2.28 
+-1.58 1.26 -2.15 0.39 2.9 1.97 0 10.66 -1.36 -0.93 -2.5 -1.95 -2.5 -0.91 -2.15 -0.98 
+-2.17 -3.23 -2.17 -2.8 -1.48 -2.34 0.35 -2.34 2.23 -1.84 -2.61 -1.84 -1.54 -1.89 -0.74 -2.3 
+-2.25 0.02 -2.32 -2.78 -1.61 -2.32 -2.65 0.04 -2.64 0.07 -2.72 0.06 -2.66 -0.37 -2.32 -0.87 
+-2.43 -2.28 p
+-2.24 1.06 -1.35 2.87 -0.69 1.43 -2.2 1.52 -1.91 0.09 -1.93 -0.85 -2.21 0.63 -2.74 -0.32 
+0.98 2.3 0.24 2.8 0.61 2.78 -1.84 0.11 -0.93 1.91 0.61 2.78 1.63 1.8 0.7 3.2 
+0.96 2.75 0.61 2.3 -0.48 2.84 -0.18 1.84 0.56 2.3 -1.45 3.34 1.2 1.32 2.52 0.29 
+1.58 2.24 3 -1.57 2.8 -0.15 3.16 0.29 3.11 -0.57 2.71 -1.04 3.56 0.82 3.47 -0.52 
+2.41 -0.54 2.13 0.45 1.07 1.39 0.76 3.19 0.37 2.32 0.39 3.21 0.37 3.19 -0.97 2.32 
+-1.98 1.41 -0.98 1.39 0.37 1.39 -1.58 1.82 -0.66 0.96 -2.6 0.5 -2.22 1.43 -1.95 0.06 
+-1.59 1 -0.15 2.75 2.25 0.37 1.98 0.87 2.58 0.37 1.21 -1.84 2.61 0.39 2.24 -0.02 
+-0.57 3.23 -1.24 2.75 2.24 -0.02 0.93 -2.32 1.91 0.43 2.21 -0.45 0.63 2.32 1.54 0.87 
+1.89 0.5 1.57 0.89 0.25 2.3 0.59 1.82 2.13 0.95 2.41 1.43 2.11 0.98 1.43 1.84 
+1.11 1.84 0.79 1.87 0.48 2.25 1.13 0.55 0.2 -2.71 1.56 -0.87 1.41 1.43 -0.11 1.37 
+-1.52 0.35 -0.17 2.28 1.95 1.04 3.23 0.18 1.02 1.41 2.34 0.15 1.85 -0.79 0.07 1.8 
+1.28 1.46 -1.28 1.26 0.99 1.02 -1.32 1.7 -0.32 2.69 -1.84 1.21 -0.57 2.23 -0.3 2.7 
+0.35 1.8 1.2 1.43 2.34 0.67 1.06 1.89 2.06 0.63 0.28 -1.78 -0.48 -2.32 0.26 -1.76 
+1.89 0.18 0.28 -1.76 -1.34 -0.74 0 -2.6 1.74 -0.98 0.09 -1.74 -2.09 -0.2 -1.41 2.17 
+1.67 0.74 0 2.6 -0.7 -0.39 -0.99 -2.8 -0.76 -2.78 2.15 -1.17 0.2 -1.37 3.34 -1.06 
+-0.32 -1.82 2 0.19 1.5 1.52 1.3 1 2.19 0.74 1.16 1.49 1.5 -1.69 -1.28 -1.02 
+2.14 -0.69 1.81 -0.22 2.58 1.72 2.74 0.8 1.84 2.09 2.56 1.32 2.64 0.87 1.82 -2.5 
+1.96 0.33 1.41 1.2 0.2 2.38 2.08 1.79 0.29 2.86 -1.07 2.59 -0.93 3.08 0.5 1.93 
+0.21 2.84 2.13 0.93 1.97 -1 1.63 -1.57 1.93 -0.02 1.09 1.65 -1.91 5.21 -1.89 0.04 
+-1.52 2.02 -0.8 2.19 1.47 1.74 2.24 0.98 2.47 1.04 2.95 -0.17 3.11 0.82 0.58 1.59 
+1.59 2.34 3.19 -0.06 -2.17 1.8 -1.67 -0.93 -3.02 1.52 -3.19 -0.87 -2.19 -1.47 -2.24 -1.5 
+-2.21 -1.5 -2.47 -1 -1.2 0.13 0 -5.54 1.93 -1 -1.52 -0.93 -0.09 0.11 0 -0.7 
+2.71 -0.11 -1.13 -1.35 -1.15 -1.36 -1.43 1 1 1.82 0 0.7 -0.48 0.67 0.16 1.15 
+0 5.54 -1.74 0.17 -1.89 1 -2.56 0.87 -0.58 1.71 0.07 2.78 -1.41 1.63 0 -21.66 
+-0.95 -1.43 0.61 -2.24 -1.28 -1.3 -1.13 2.13 0.67 1.65 2.08 1.19 0 21.66 -0.63 0.74 
+-1.11 2.54 0.2 2.78 1.41 2.63 1.15 3.02 1.26 2.58 0.41 2.89 1.24 1.25 -1.09 2.5 
+-2.69 1.17 -1.43 -0.78 -1.56 -0.37 -1.95 0 -0.37 -1.89 -1.09 -1.17 0.68 -1.21 -0.63 -1.96 
+2.12 -0.91 -1.08 -2.04 -0.24 -1.91 -1.76 -1.71 -1.3 -1.61 -1.47 -2.09 -1.02 -2.89 -0.54 -1.45 
+0.48 -2.65 0.26 -2.67 0.83 -2.17 2.41 -1.41 2.39 -1.41 1.24 -1.65 -0.35 -1.43 -1.34 -1.61 
+1.21 -0.68 -1.89 -1.69 -1.8 -2.15 -0.07 -1.82 0.65 -2.65 0.02 -2.3 0.2 -3.14 -0.59 -3.28 
+-1.91 -0.29 p
+-2.15 -0.28 -1.17 -2.45 0.61 -1.74 -1.91 -0.22 -2.23 -0.26 -0.33 1.76 -1.48 2.13 0.48 1.87 
+-1.23 1.08 0 -3.41 0.91 -2.08 -1.15 -1.39 1.02 -0.93 -1.85 -1.02 -0.65 0.07 0 -1.26 
+1.75 -0.32 -0.69 -0.93 -1.63 -0.67 -1.32 1.23 1.89 0.7 0 1.26 -1.34 0.13 -1 2.63 
+2.04 1.3 2.02 1.3 0 3.41 -1.09 0.93 -1.52 2.56 -1.59 2.97 -1.52 2.56 -1.28 3 
+-1.74 1.19 -0.73 -1.84 -1.52 -0.16 -2 -2.43 -1.33 -1.87 -2.45 -1.52 -2.69 0.25 -2.74 1.17 
+-1.43 1.29 0.08 2.25 1.39 1.82 -2.25 -0.54 -0.68 1.73 0.85 1.86 -1.67 2.11 -0.41 2.21 
+-0.67 2.22 1.09 1.78 -1.09 1.71 1.98 1.89 1.69 1.85 1.61 2.32 2.71 0.63 1.13 1.82 
+0.82 2.3 1.74 -1.17 1.21 2.32 1.17 2.3 1.15 3.23 1.8 1.95 0.48 2.71 0.56 2.3 
+0.33 2.21 0.67 2.32 1.43 2.41 0.22 2.21 1.93 2.96 -2.52 -0.81 -2.14 -0.74 -2.04 -2.06 
+1.21 2.36 2.76 1.3 -1.63 1.09 1.65 1.56 1.34 1.95 0.2 -2.62 1.07 1.49 0.7 -1.63 
+1.46 2 -1.37 0.2 -0.54 1.72 2.02 1.19 0.89 2.84 2.54 0.5 2.37 1.43 0.79 2.43 
+1.41 1.69 2.34 -0.78 0.35 1.89 1.2 1.26 1.23 -2.91 1.09 2.17 1.52 -1.91 0.26 3.32 
+2.91 -0.02 2.71 -0.55 2.58 -0.58 -1.26 -2.34 -2.64 -0.33 3.32 -0.87 2.65 0.39 1.11 1.37 
+2.41 -0.13 1 -1.56 2.99 0.58 3.06 0.22 3.06 -0.26 3.06 -0.78 3.04 -0.7 2.8 -0.3 
+2.95 -0.7 2.17 -1.65 1.78 -2.3 -0.2 -2.17 -1.37 -2.17 -2.14 -1.48 -2.86 -0.13 -2.39 -0.48 
+-2.23 -0.33 -2.91 0.42 -2.98 -0.14 -2.95 0.96 2.7 -2 2.54 -0.57 3.43 -1.24 1.5 -2.41 
+1.26 -2.04 1.47 -2.43 0.31 -0.02 2.95 -0.29 1.43 -0.43 2.13 -0.65 2.9 1.15 -1.61 2.41 
+-1.71 -0.7 -2.97 1.3 -0.13 2.02 2.13 0.3 2.87 -0.34 2.36 0 2.87 0.71 -2.8 1.86 
+-2.49 1.52 0.63 2.34 1.2 2.11 0.13 2.23 2.34 0.57 2.08 0 -0.08 2.11 -1.93 2.25 
+-1.93 0.11 -1.25 2.61 -2.23 2.61 -3.3 1.02 2.91 0.42 2.11 1.13 2.04 -0.55 2.43 -1.43 
+-1.8 -1.52 0.56 -2.47 2.34 0.22 2.3 -1.02 1.87 1.06 0.52 2 -2.43 2.58 0.93 1.67 
+0.81 2.24 0.3 1.97 1.02 1.89 0.33 2.06 0.3 2.04 2.43 -1.95 2.84 -0.41 -1.02 1.76 
+1.15 1.48 1.99 0.97 -0.25 2.39 0.43 1.75 2.91 -2.25 1.52 0.59 -1.71 1.32 0.52 1.13 
+-0.48 1.67 -2.48 0.54 -2.19 0.89 -2.61 -0.24 -2.06 0.28 -1 1.8 3.56 -0.3 3.73 0.65 
+2 1.26 3.17 0.11 1.64 1 2.48 0.33 0.5 0.2 1.71 0.65 2.61 -0.24 2.37 0.28 
+-2.24 2.41 -2.25 -0.17 -3.36 1.04 -1.98 -0.63 -1.82 1.13 -1.91 1.96 -2.84 0.76 -2.19 1.61 
+-0.63 2.61 -1.93 1.95 -2.76 1.78 -1.93 1.98 -1.93 1.91 -0.16 1.73 2.37 -0.37 1.24 -1.13 
+2.69 1.06 2.04 -1 2.13 -1.71 2 -2 3.23 -0.2 2.97 -1.49 2.97 -1.55 3.32 -1.93 
+2.95 -1.59 3.45 0.11 1.99 -1.91 2.46 -1.37 1.75 -2.39 1.15 -2.12 0.35 -3.15 3.64 0.2 
+-0.37 2.3 -0.82 2.67 -1.91 2.15 -1.65 2.63 -3.77 1.32 -2.89 1.67 -0.68 2.11 -1.91 -2.04 
+-3.73 1.46 p
+-2.84 1.75 -2.04 1.91 -2.96 0.57 -2.52 0.11 -2.54 2.21 -0.32 1.65 -1.65 1.57 -2.17 0.82 
+-2.17 -0.43 -0.76 0.84 2.73 0.33 3.26 -1.07 2.28 -1.69 3.06 -1.41 4.34 3.38 -1.91 -0.02 
+-2.54 -1.21 -2.95 0.48 -0.41 1.52 2.13 0.43 -0.7 1.21 -2.93 -0.86 -1.08 1.61 2.04 0.32 
+0.61 1.3 2.22 0.8 3.16 0.37 -0.39 2.09 -3.04 0.06 -1.78 -1.36 -3.21 1.17 -3.97 0.74 
+0.28 2.23 0.15 2.39 -0.48 2.19 -0.07 2.37 -2.86 0.11 -2.24 0.71 -1.97 1.65 -1.96 1.9 
+-1.39 2.56 -0.98 2.04 -2.16 1.61 0.02 1.69 -1.78 2.73 2.3 -0.65 -1.43 3.26 -2.21 -0.29 
+-0.3 2.21 -3.43 0.2 -3.19 1.72 -2.64 1.63 1.69 2.02 2.87 -1.91 -0.52 1.85 0.04 1.58 
+3.8 -1.13 -0.52 1.54 -1.82 0.33 -0.57 1.52 -0.17 1.71 0.52 1.43 1.63 1.34 2.63 0.59 
+3.43 0.08 2.89 -1.28 3.64 -1.74 2.89 -1.65 3.5 -1.75 1.63 -1.58 3.08 -1.02 -0.43 1.48 
+-1.65 1.73 -1.8 1.82 -1.37 -0.89 -2.04 0.87 0.63 1.32 0.63 1.11 -0.58 1.32 -2.68 -0.32 
+-0.97 -1.65 -1.41 0.59 -0.18 1.58 2.56 -0.52 3.39 1.25 -1.89 1.48 -1.28 1.37 0.13 1.82 
+-1.11 1.84 2.82 0.07 -0.18 2.13 -1.34 2.73 -1.82 1.65 -1.61 -1 -2.32 -0.15 -1.8 2.28 
+-0.7 2.9 -0.87 2.3 1.48 2.32 3.41 0.37 3.5 -0.37 2.17 1.63 1.21 1.87 -0.28 1.55 
+-3.04 0.49 -2.84 -0.34 -2.91 -0.3 1.08 1.93 -0.41 1.52 -2.3 0.26 -1.78 0.87 -0.39 1.41 
+-3.55 2.17 -2.29 2.08 -1.32 -1.56 -1.17 -1.15 -2 -0.13 -2.34 1.59 -0.84 -1.37 -2.35 1.93 
+0 -46.89 1.56 -1.76 0.43 -2.08 1.98 -1.71 -0.78 0.18 0 -31.4 2.82 -1.63 0.37 -2.21 
+0.11 -2.41 -0.43 -2.06 0.52 -2.58 0.43 -2.5 1.37 -2.3 0.97 -2.56 1.26 -2.3 1.21 -2.34 
+1.11 -2.34 1.37 -2.17 2.37 -2 2.78 -1.67 2.82 -1.02 3.41 0.19 -0.16 -1.49 -2.6 -1.37 
+-2.87 -0.93 -1.34 0.15 0 -10.07 3.3 -0.21 0.91 -1.74 -1.34 -2.02 -2.56 1.89 -0.3 2.08 
+0 10.07 -1.65 0.2 -3.54 0.5 -2.3 2.02 0.28 2.02 -1.93 1.11 -1.43 2.64 0.11 1.98 
+-2.21 0.8 -0.8 2.56 -1.97 2.91 -1.67 1.2 0.5 2.43 -0.65 1.48 -0.78 2.11 -0.09 2.78 
+1.67 1.75 0.61 2.32 -1.28 1.74 -0.26 2.3 1.89 0.71 0 31.4 -2.13 0.48 -3.54 0.84 
+-3.02 0.7 -1.34 0.93 1.37 1.39 2.06 1 3.41 0.05 0 46.89 -0.15 0.13 -2.02 1.65 
+-1.82 1.5 0 -3.17 2.75 -2.15 0.33 -1.65 -2.32 -0.41 -0.87 0.34 0 -0.78 1.43 -0.46 
+-1.45 -1 -1.21 0.8 1.23 0.66 0 0.78 -1.52 0.63 0.05 2.34 1.58 0.89 0 3.17 
+-0.24 0.2 -1.73 2.25 -3.15 1.61 -1.89 1.71 1.76 1.68 -0.35 1.39 -1.89 0.84 -0.8 1.56 
+1.32 1.07 -2.71 0.71 -0.17 0.06 0 -21.09 2.93 -0.3 0.39 -1.21 3 -0.91 2.58 -0.78 
+1.22 -1.32 -1.43 -2.08 -3.04 -1.02 0 -38.75 2.99 -0.67 2.85 0.17 0.74 -1.41 -1.05 -1.34 
+-1.02 -1.74 -2.87 -0.43 -1.21 -1.54 -2.84 -0.17 -2.84 1.5 -2.89 0.67 -2.32 1.91 1.67 0.5 
+1.65 0.72 1.76 -0.46 2.24 0.32 0.99 1.3 2.15 0.67 0 38.75 -0.91 -0.3 -3.19 0.69 
+-0.5 2.82 p
+-3.41 -0.33 -0.09 1.97 -1.04 0.61 -0.72 1.28 1.15 0.74 3.06 0.15 0 21.09 -2.24 0.87 
+-3.75 0.67 -2.91 1.35 0 -17.77 2.08 -0.96 1.82 -2.58 -1.02 -2.13 -0.57 1.13 -2.62 1.74 
+-2.19 1.78 2.5 1.02 0 17.77 -0.24 0.11 -2.84 1.28 -0.91 1.11 0 -96.24 2.82 -0.74 
+0.28 -1.35 -1.32 -0.67 2.6 -1.3 0.31 -0.93 -1.85 -1.13 0.68 -1.89 -1.18 -1.06 -0.89 1.87 
+1.39 1.08 -1.75 1.35 0.7 2.02 -1.17 1.02 -0.61 1.74 0 96.24 -0.32 0.39 0.45 1.71 
+2.5 1.09 -2.21 1.76 -4.1 1.13 -1.3 0.22 0 -105.01 2.52 -1.09 1.15 -1.69 1.61 -0.16 
+-0.43 -1.8 -0.87 -0.24 0 -1.54 1.82 -0.16 -1.13 -1.17 -0.7 1.33 0 1.54 -1.39 -0.39 
+-0.85 1.09 1.07 0.93 -1.67 1 0 -5.14 0.45 -1.59 1.37 -1.02 -0.91 -1.11 -1.7 -0.33 
+-1.15 0.95 -1.06 -0.67 -1.52 -0.09 0.35 2.54 1.46 -0.04 0.93 -0.74 0.63 2.04 1.15 0.05 
+0 5.14 -0.43 0.26 -0.7 2.09 0 105.01 -3.49 0.58 -4.23 1.33 -3.23 1.3 -2.3 -0.61 
+-2.17 -0.98 -2.6 1.06 0 -127.67 0.84 -1.37 -0.2 -2.48 -1.41 -1.73 -3.69 -0.09 -3.21 1.21 
+1.32 -2.45 3.67 -0.96 1.71 -1.74 2.04 -1.28 2.89 -0.98 -1.61 -3.09 -2.82 0.22 0 2.63 
+-1.82 0.93 -1.46 2.02 -1.13 -1.32 0.67 -1.89 -0.11 -2.76 -0.11 -2.62 0.39 -2.5 -3.45 2.08 
+-2.34 2.09 -1.08 2.13 1.43 1.59 -2.46 -0.37 -2.54 2.08 -1.56 2.95 -0.48 2.04 3.11 0.83 
+2.12 -0.45 0.33 1.86 2.02 -0.18 -0.63 1.57 1.58 1.62 1.76 -1.3 1.5 1.67 2.28 -0.29 
+2.43 0.3 0 127.67 -0.22 0.09 1.08 0.84 2.5 -0.41 0.39 1.3 -2.5 1.11 -0.17 1.37 
+-2.52 0.04 -2.02 -0.73 0.59 -1.79 -0.84 -2.25 -3.71 0.79 -3.52 0.69 -3.58 0.67 -4.12 0.26 
+-3.34 1.15 -3.45 0.74 -0.72 0.24 0 -5.88 0.34 -1.17 -3.38 -1.63 -4.38 -0.07 -2.21 1.41 
+4.43 1.2 2.17 -0.39 3.04 0.65 0 5.88 -2.34 0.8 -0.7 0.35 -2.71 1.3 -2.76 1.24 
+-3.84 0.87 -0.61 0.2 0 -251.65 0.48 -1.35 -2.72 -1.69 -1.21 -2.21 2.43 0.41 2.15 -0.07 
+2.64 -0.04 0.24 -1.83 -0.86 -1.78 -1.18 -2.21 -1.43 -1.76 -1.71 -1.3 2.19 -0.04 2.21 -0.98 
+1.06 -1.8 0.5 -2.69 1.08 -2.28 2.3 -0.89 0.85 -2.28 0.61 -1.78 0.87 -1.37 0.57 -1.84 
+-1.15 -1.34 0.89 -0.87 1.17 1.35 1.48 0.02 2.09 -0.91 0.93 -1.78 -0.85 -2.3 -2.08 -1.37 
+-1.5 -2.3 3.08 -0.41 -1.8 -2.32 -3.12 -0.89 -2.78 0.02 -2.78 0.46 -2.5 -1.32 -2.76 0.98 
+-2.52 -0.41 -0.74 -2.24 -3.05 0.98 -2.29 -1.71 -1.84 0.52 2.3 1.76 1.95 1.73 1.7 2.24 
+2.13 -0.07 1.84 -0.05 1.28 2.2 -2.47 -1.3 -1.76 1.41 -1.8 0.57 -2.47 -0.39 -0.52 1.39 
+2.23 1.26 1.84 0.86 0.16 2.71 -2.11 0.09 1.32 1.74 -0.52 1.39 3.21 -0.54 2.07 0.36 
+0.11 2.28 1.21 2.24 -1.71 0.04 -1.35 1.84 1.24 2.21 -2.61 -0.82 -2.62 -0.83 -1 1.89 
+1.61 3.06 -1.26 1.84 -1.82 -2.12 0.13 1.78 -1.95 0.09 2.37 1.68 0.43 2.23 -1.98 -0.8 
+0.16 1.82 1.58 2.6 -2.15 0.11 -1.24 1.41 1.18 0.8 1.52 -0.93 0.41 1.76 1.48 1.7 
+1.21 2.19 p
+2.87 -0.11 2.87 0.32 0 251.65 -2.91 0.96 -2.8 1.11 -1.93 1.5 -4.21 -0.37 -4.95 0.09 
+-3.28 1.24 -3.91 1.09 2.08 1.3 1.2 1.46 3.69 0.48 -0.62 1.87 1.61 1.45 0.41 1.67 
+3.8 -0.28 4.16 -0.91 2.84 -0.78 0.87 -1.56 3.54 -0.44 2.24 0.71 2.91 -0.24 1.21 -1.58 
+0.63 -1.59 3.06 1.3 -2.3 1.26 1.41 1.93 1.17 0.48 1.47 0.48 3.3 0.91 4.17 -0.42 
+0.17 1.59 -3.04 0.11 -0.83 1.26 -0.82 1.9 -1.55 1.91 -1.61 1.24 2.72 1.54 3.23 -1 
+4.64 -0.17 3.1 0.78 3.82 0.39 3.29 0.98 3.13 0 3.47 0.93 3.52 0.82 3.93 0.74 
+3.89 0.39 2.28 1.52 1.56 -1.48 2.3 -1.32 3.67 -0.98 3.45 -0.05 3.34 0.26 3.73 0.81 
+-1.39 -1.93 3.84 -0.26 3.28 0.52 1.93 -1.15 3.93 -0.37 1.84 1.11 2.28 1.02 3.75 0.57 
+3.04 0.69 0.63 1.48 -2.71 0.13 -1.84 1.5 3.52 0.63 1.28 1.23 -1.37 1.02 0.72 1.7 
+2.49 -0.07 1.13 -1.3 2.84 -0.21 2.95 0.67 1.24 1.54 -0.59 1.78 2.82 0.07 2.15 -1.02 
+4.16 -0.78 3.64 0.05 2.28 1.13 1.09 1.2 0 136.98 -1.02 0.17 -3.6 0.61 -7.16 1.13 
+-7.14 1.04 -7.12 0.95 -7.07 0.89 -0.39 0.04 0 -151.78 -2.88 -1.15 -2.93 0.11 -0.05 0.98 
+5.86 0.07 0 151.78 -6.68 0.74 -7 0.72 -6.96 0.65 -6.95 0.55 -6.9 0.47 -3.08 0.18 
+0 -127.41 2.43 0 2.13 -0.87 -1.97 -0.02 -2.58 0.89 0 127.41 -3.78 0.22 -6.81 0.32 
+3.34 -0.13 3.43 -0.17 1.74 -0.09 1.75 -0.11 1.76 -0.09 1.8 -0.11 1.8 -0.12 1.82 -0.11 
+1.84 -0.13 1.87 -0.12 1.87 -0.16 3.82 -0.3 1.95 -0.17 1.95 -0.15 -2.28 0.2 -2.32 0.2 
+-2.3 0.19 -4.69 0.35 -4.73 0.34 -2.38 0.16 -2.41 0.13 -2.43 0.15 -2.43 0.13 -2.45 0.11 
+-4.95 0.22 -2.5 0.09 -0.26 0.02 -2.25 0.07 -5.06 0.15 0 0.11 -2.34 0.06 -25.15 0 
+-4.39 -0.11 -1.47 -0.05 0 -122.91 -0.85 -0.89 -2.61 0.41 3.45 0.48 0 122.91 -4.19 -0.11 
+-5.64 -0.24 -3.06 -0.13 0 -165.23 0.48 -1.26 -4.6 -0.61 -2.89 0.52 -3.86 -0.28 3.28 1.52 
+4 -0.72 3.6 0.83 0 165.23 -2.59 -0.13 -11.28 -0.69 -5.64 -0.43 -5.64 -0.46 -0.71 -0.06 
+0 -154.82 3.04 -0.33 -2.61 -0.84 -2.59 -0.89 -2.58 -0.26 -0.63 0.8 2.39 1.22 2.97 0.3 
+0 154.82 -4.52 -0.43 0 -129.08 -2.02 -3.02 -2.52 -0.8 -0.57 0.78 1.41 0.85 3.69 2.19 
+0 129.08 -0.39 -0.04 -5.64 -0.55 -0.84 -0.08 0 -131.84 -1.85 -1.61 0.81 -1.02 -3.91 -0.89 
+-0.79 0.91 2.56 1.3 3.17 1.3 0 131.84 -4.77 -0.54 -5.62 -0.65 -2.23 -0.28 0 -136.98 
+1.58 -0.52 -3.75 -2.56 -4.1 -2.11 -1.48 -2.06 -3.43 -2.02 -3.97 -1.63 -0.85 -2.26 -2.86 -2.34 
+-1.32 -2.2 -1.52 -1.93 1.57 -1.84 1.89 -1.67 2.02 1.09 3 0.78 -0.17 1.3 4.46 -0.48 
+5.84 1.91 1.87 1.25 2.73 -0.82 0 -1.32 3.82 -1.17 2.13 2.23 3.43 0.93 3.19 -0.79 
+3.71 -1.02 2.58 -1.34 4 -0.72 -0.31 -2.69 -1.28 -2.28 0.26 -1.25 -2.06 -1.52 -3.97 -0.02 
+-1.47 -2.11 -4.11 -1.52 0.7 -1.89 2.96 -0.87 0.41 -1.58 2.54 1.41 1.8 1.52 3.8 0.34 
+4.04 1.31 p
+5.23 0.45 1.87 -0.93 -0.42 -1.39 3.25 0.28 2.26 -0.21 -2.43 -2.15 -2.91 -1.61 -2.8 -1.65 
+-2.61 -0.63 -1.32 1.41 -4.95 -1.28 -0.32 -1.52 3.43 -0.79 3.88 -0.43 2.75 -1.41 4.36 -0.29 
+3.43 -0.74 0.61 -1.93 -3.04 -1.02 -3.26 -1.43 -0.39 -1.67 0.37 -1.93 -1.65 -2.2 -2.62 -1.13 
+-2.17 -2.47 -3.21 -1.2 -1.3 -2.56 -1.06 -0.15 0 -74.74 2.97 -0.65 0.2 -1.52 1.43 0.24 
+1.54 -0.82 2.02 -1.13 2.59 -0.59 1.63 -1.91 0.11 -1.37 1.17 -0.87 0.82 -1.39 -0.13 -1.67 
+0.3 -1.7 -0.87 -1.41 0.02 -1.26 -1.26 -0.62 -2.08 0 -0.91 0.08 0 -0.91 3.21 -0.48 
+3.91 -1.61 0.17 -2.62 2.82 1.28 1.65 -1.52 2.45 1.15 3.19 0.43 3.63 -0.67 3.04 -0.11 
+2.58 -1.47 2.64 -1.11 0.89 -1.87 -0.11 -1.39 1.45 -1.06 0.7 -1.61 -2.34 -0.71 -3.06 0.33 
+-2.08 0.82 -1.82 -0.37 3.69 -1.2 -1.04 -1.76 1.63 -0.09 0.72 1.26 1.82 -0.2 -0.34 -1.37 
+-1 -0.63 -2.15 -0.8 -2.23 -1.75 2.63 0.13 2.19 0.72 1.74 0.93 1.02 -0.72 2.22 1.2 
+2.71 -1.06 1.02 -1.93 -3.46 -2.35 -2.08 -1.3 -0.74 -0.63 0 -92.34 -1.5 -1.5 0 -19.05 
+-1.04 -2.64 -2.87 -2.08 0.93 1.28 0.2 1.82 2.78 1.63 0 19.05 -0.37 -0.37 -1.37 0.52 
+0.61 1.13 2.63 0.22 0 92.34 -1.5 -1.26 -1.82 -1.89 -1.26 -1.8 -1.78 -1.2 -0.41 -2.02 
+-0.78 -1.07 0 -120.86 2.5 -0.59 2.21 -0.61 0.98 -1.84 0.37 -2.71 -2.45 -1.67 0.39 -2.3 
+0.07 -2.73 -0.78 -2.25 -0.76 -2.19 -3.36 -0.3 -2.89 -1.61 -2.82 -0.74 -3.06 -0.22 -1.65 1.52 
+-0.59 2.34 2.09 -0.17 1.23 2.64 2.11 2.56 -1.76 0.16 -1.52 1.93 1.91 1.19 -1.61 1.07 
+1.11 1.71 2.3 -0.19 2 -0.15 1.28 1.28 -1.61 1.05 1.69 2.11 2.63 0.73 0 120.86 
+-0.85 -1.19 0.43 -1.84 -0.07 -2.58 -0.95 -1.55 -2.34 1.39 -0.79 -0.34 0 -7.45 0.79 -2 
+-1.54 0.04 0.76 1.96 0 7.45 -1.26 -0.52 -0.91 -1.73 1.96 -0.95 -0.11 -2.61 -0.97 -2.41 
+-2.09 -2.36 2.02 -0.42 -1.48 -1.91 -4.21 -0.41 1.61 -1.26 -0.72 -1.76 -2.24 0.21 -1.39 -0.58 
+-1.86 -0.63 1.48 -1.04 -0.61 -2.54 -1.17 -1.56 -1.93 1.65 -1.78 1.54 0.87 -2.02 1.26 -2.15 
+0.69 -2.37 -0.87 -2.09 -1.17 -2.43 -2.64 0.17 -1.46 1.24 0.48 2.17 0.28 1.74 -2.25 -0.29 
+-0.72 -2.56 -2.7 -0.65 -0.61 -1.21 3.04 0.57 2.06 -1.89 2.3 -1.04 -2.04 -1.32 -2.93 -1.09 
+-2.82 -1.15 -0.83 -0.22 0 -14.24 1.58 -0.84 1.13 -2.06 -0.89 -2.99 2.93 0.28 1.09 2.5 
+0.95 -1.54 1.43 1.09 2.56 0.02 1.34 -1.15 2.06 0.56 1.89 1.46 1.04 -1.5 2.32 0.09 
+-0.56 -3.02 2.17 -1.62 -0.7 -3 -2.73 -2.3 -3.78 -0.8 -2.86 -1.39 -2.52 -0.02 -3.34 -1.2 
+-3.02 1.43 -2.15 1.79 -4.49 0.95 2.71 1.73 -0.5 2.87 -3.49 0.8 3.54 1 2.49 1.32 
+-1.3 1.17 -2.32 -0.34 -1.65 0.82 2.08 1.35 0.89 1.65 1.58 -0.34 0.5 1.25 0 14.24 
+-1.84 -0.45 -3.21 -0.5 -3.02 -0.02 -2.58 -0.33 0 -220.03 -0.54 -1.39 -1.67 -0.35 -0.35 -3.27 
+-2.19 -0.78 0.15 1.41 2.39 2.64 0.93 1.33 1.28 0.41 0 220.03 -0.67 -0.08 -2.78 0.89 
+-2.43 -0.61 p
+-2.95 -1.43 -2.13 -1.71 -0.73 -0.52 0 -221.13 1.41 -0.67 0.04 -1.43 -1.73 -0.28 -0.48 1.5 
+0.76 0.89 0 221.13 -1.54 -1.06 -0.63 -0.22 0 -217.27 -1.08 -2.24 -1.34 -0.82 -1 1.99 
+1.67 0.11 1.75 0.96 0 217.27 -2.19 -0.76 -3 -0.84 -3.93 -0.45 -3.25 1.34 -3.08 0.26 
+-2.13 -1.68 -1.84 1.39 -1.06 -3.73 -1.87 -2.3 -2.26 -2.13 -3.43 -1.63 -3.25 -0.58 -1.34 -3.67 
+-2.91 -1.84 -2.32 -2.13 -1.91 -2.32 -2.75 -1.96 -2.26 -0.04 -1.87 3.12 0.11 2.67 -1.56 1.93 
+-2.78 2.02 0.02 4.01 0.87 2.95 1.09 3.39 0.83 1.82 1.21 4.53 1.61 1.96 0.11 2.3 
+2.54 2.61 1.74 3.04 0.26 3.47 2.25 2.12 1.82 2.41 2.78 2.34 3.25 2.06 3.09 0.87 
+2.55 -1.71 3.71 2.88 1.87 2.97 -3.45 -0.89 -3.1 0.91 0.02 2.78 3.12 2.06 3.21 1.96 
+1.87 -1.58 0.93 -2.82 1.8 2.37 -0.89 1.87 1.93 2.88 -2.47 -0.63 -1.67 1.28 0.61 1.52 
+2.95 1.45 1.39 2.07 3.34 1.93 1.82 1.7 1.17 2.34 2.56 1.82 1.37 2.61 1 1.97 
+1.84 1.24 -0.76 1.97 0.43 2.63 -1.45 1.56 -1.76 1.61 -2.17 0.54 -0.17 2.43 0.83 1.68 
+1.8 -0.09 0.24 1.93 0.78 1.43 2.11 -0.43 1.59 -1.13 0.41 2 1.89 1.19 -1.05 1.02 
+1.17 1.88 2.89 0.44 2.07 -1.22 2.54 -0.61 2.75 -1.78 3.93 0.71 1.65 1.26 -1.39 1.84 
+3.17 0.54 3.19 -0.08 2.18 -0.05 0.69 -1.3 1.97 0.52 1.52 1.37 0 0.91 -1.57 0.13 
+-1.5 -0.63 -3.97 0.24 -3.19 0.42 -2.89 -0.13 -3.64 -0.06 -2.47 1.39 -3.59 -0.3 -3.19 -1.12 
+-3.54 -0.39 -1.43 1.78 -2.06 -1.02 -2.75 0.81 -2.08 -2.37 -3.19 0.37 -2.45 1.57 1.95 1.25 
+-1.49 0.8 0.17 1.59 -1.48 0.93 -0.06 2.9 0.3 2.02 2.78 0.57 2.24 -0.98 1.04 -0.99 
+0.95 1.23 2.78 0.57 1.04 -2.2 1.32 2.25 4.19 -0.62 1.08 -1.09 2.43 1.06 3.04 0.65 
+0.91 1.43 3.84 0.05 -0.76 -1.89 1.7 -0.56 1.75 -1.86 2.43 -0.85 -1.57 1.91 -0.61 2.04 
+-1.21 1.29 -0.32 2.04 2.11 1.61 3.41 0.78 0 74.74 -2.97 -0.41 -2.06 0.43 -2.22 -0.91 
+0 -71.27 2.39 -0.76 3.08 0.15 0.02 -1.13 -3.09 -0.82 -2 -1.07 -0.37 -1.8 -1.61 -0.93 
+-2.9 -0.11 -0.57 -1.59 -2.56 -0.5 -1.91 0.81 -3.3 0.13 -2.61 0.63 -0.24 2.6 2.41 1.61 
+3.11 0.67 2.41 -0.15 2.67 0.85 1.95 1.15 3.1 0.26 0 71.27 -1.84 -0.74 -1.58 0.11 
+0 -67.27 1.78 -0.48 -3.02 -1.09 1.24 1.56 0 67.27 -2.18 0.15 -1.23 -0.57 0 -61.07 
+1.04 -0.61 -0.34 -1.24 -1.52 -1.06 -0.3 -1.39 -2.43 -1.35 -2.75 -0.11 -2.47 -0.54 -0.46 -0.98 
+2.71 -0.2 2.87 0.04 -2.56 -2.19 -1.74 -0.57 -2.04 0.2 -0.12 1.28 -0.2 1.58 -0.99 1.09 
+3.02 0.98 0.24 1.28 1.34 1.91 1.8 0.79 1.82 -0.79 1.63 1.54 1.48 0.33 0 61.07 
+-1.32 -0.61 -2.17 -1.02 0 -52.28 1.28 -0.87 -0.43 -2.11 -2.06 -1.59 -0.96 0.7 0.37 1.34 
+1.3 0.87 0.5 1.65 0 52.28 -0.74 -0.32 -0.54 -0.11 0 -49.91 0.39 -1.33 -2.26 0.11 
+0.07 0.76 1.8 0.46 0 49.91 -3.73 -0.8 -0.87 -0.46 0 -38.13 0.37 -1.8 1.54 -1.58 
+0.87 -1.5 p
+0.33 -1.37 -1.26 -1.58 1.26 -1.2 -0.63 -0.26 0 -2.95 0.15 -1.37 0.48 -1.21 -0.39 -1.02 
+-2.96 0.35 -0.97 1.71 1.32 1.45 2.37 0.09 0 2.95 -1.74 -0.73 -1.02 1.3 -0.96 -0.04 
+0 -11.24 0.28 -0.91 -1.88 -0.16 0 -7.62 1.02 -1.87 -0.18 -2.47 -1.56 -0.41 -1.55 0.63 
+0.81 2.13 1.45 2 0 7.62 -0.35 -0.02 -2.56 -0.65 1.07 1.41 3.45 0.33 0 11.24 
+-1.65 -0.07 -1.91 1.78 2.28 1.3 -1.71 0.96 -1.37 1.54 1.65 1.35 0.66 1.3 3.29 0.61 
+0 38.13 -1.91 -1.04 -3.28 -0.67 -1.8 -1.5 -1.04 -0.65 0 -38.45 1.63 -0.96 0.67 -1.49 
+-2.23 0.71 -1.46 0.72 1.39 1.02 0 38.45 -1.29 -0.78 -2.16 -0.44 0 -38.93 2.34 -1 
+2.54 -1.19 1.8 -1 -1.17 -1.47 -2.52 -1.59 -2.08 -0.74 -2.65 -0.52 -1.43 -2.32 2.54 0.7 
+1.71 -0.34 1.43 0.97 1.89 -0.91 1.15 -0.95 -1.37 -0.22 0 -13.52 -0.78 -2.04 -1.82 -1.7 
+0.13 -1.89 -1.84 -0.89 -1.21 -1.43 -1.37 0.29 -1.65 -2 -0.39 -2.45 2.13 -1.73 -0.11 -2.11 
+0.56 -1.65 -0.91 -2.43 -2.52 -0.87 -2.91 -0.22 -1.87 1.67 1.06 2.28 -2.56 0.63 -0.54 2.13 
+-0.11 2.11 0.02 2.34 1.21 2.75 3.38 0.87 2.89 0.16 2.78 0.89 1.62 1.47 -0.58 1.95 
+2.93 1.65 2.46 0.21 0 13.52 -1.61 -0.25 0 -4 0.06 -1.09 -2.04 -1.17 -2.78 -1.26 
+2.89 0.09 1.78 -0.63 -0.48 -1.91 -2.17 -1.83 -2.61 -0.28 -2.91 -0.52 -3.45 0.17 0.28 2.73 
+4.02 1.43 -1.11 1.67 3.09 1.3 2.39 0.37 3.04 0.91 0 4 -0.46 -0.07 -2.71 -1.74 
+-1.5 -1.54 -2.62 0.33 -2.8 0.13 0 -1.69 2.26 -0.5 -2.52 -0.91 0.26 1.41 0 1.69 
+-0.15 0 -0.09 1.52 1.24 2.54 -0.8 1.45 -1.3 1.3 -0.13 1.37 1.28 1.54 1.78 0.5 
+0.59 -1.61 2.8 1.04 -1.24 1.34 1.76 1.17 1.78 1.57 0 38.93 -1.05 -0.23 -2.71 -0.59 
+-3.06 -1.91 -3.58 -1.06 -3.06 -0.67 0 -21.86 2 -1.28 2.3 -1.41 3.04 -0.93 4.32 0.13 
+-0.61 -2.32 0.26 -2.06 -3.08 -1.89 -1.43 -2.28 -3.06 -0.87 0 -25.12 3.75 -0.57 0 -1.36 
+-2.39 -1.26 -3.6 -0.63 0.97 2.11 1.26 1.72 0 25.13 -0.46 -0.11 -3.25 -1.8 -0.98 2.04 
+-0.07 0.13 0 -47.16 1.15 -1.33 0.45 -1.82 -0.61 -1.8 -2.34 -1.46 -1.97 -0.58 -0.3 2.26 
+-1.54 0.89 0.22 2.04 2.66 1.46 2.28 0.35 0 47.16 -0.75 1.8 -1.02 2.15 -3.95 1.04 
+-2.41 1.65 0.59 1.78 -0.2 2.15 4.58 0.55 4.19 1.54 0 21.86 -0.54 -0.14 -3.84 -1.47 
+2.25 -0.87 0.57 -1.66 -1.21 -1.59 -2.54 -0.91 0.5 -1.56 -0.33 -2.54 -0.32 -2.34 -3.15 -0.05 
+-0.26 -1.61 2.91 -1.45 -3.5 -1 0 -13.11 2.67 -0.48 1.07 -1.34 1.84 -0.16 0.87 -1.52 
+0.3 -1.79 1.21 -1.37 -0.75 -1.54 -4.17 -0.45 1.61 -1.89 -2.17 -1.5 0.37 -1.71 -2.99 -2.28 
+3.16 -0.67 3.09 -1 -0.35 -2.09 -2.17 -1.25 -2.38 0.5 -1.39 0.43 0 -2.93 0.8 -1.17 
+-0.54 -2.11 3.38 1.63 2.23 0 0.98 -1.28 -0.71 -1.82 1.34 -1.2 -3.47 -1.39 -3.08 0.87 
+-1.37 -2.15 -3.84 -1.25 -4.01 -0.52 -1.07 1.89 -2.23 1.34 3.52 1.93 3.03 1.87 0.22 1.56 
+2.69 0.76 p
+2.13 1.04 0 2.93 -1.57 0.5 -2.93 -0.68 -3.88 -1.21 -3.93 -0.13 -2.91 -1.87 -2.21 -2.49 
+-1.56 -2.87 -3.19 -0.26 -0.33 1.84 -2.63 -1.25 -1.84 1.49 -0.56 2.02 2.32 2.41 2.71 1.84 
+-1.8 1.59 -0.54 2.19 -0.87 2.61 0.34 2.86 0.5 2.45 5.02 1.28 1.11 2.41 2.73 2.06 
+4.43 0.43 -0.72 -1.99 -1.15 -2.43 0.76 -2.11 2.82 2.11 0.87 2.21 1.88 2.58 2.74 1.41 
+1.95 -0.62 2.63 1.71 0 13.11 -1.37 -0.39 -3.78 -0.26 -2.11 -1.17 2.56 -1.96 -3.8 0.35 
+-1.33 -1.31 2.37 -1.12 -1.84 -2.64 -3.49 -1.56 -3.09 -2.26 -2.73 -2.19 -1.54 -2.54 -2.78 -2.3 
+-3.3 -1.11 -0.09 1.76 -2.08 0.39 -0.96 -2.08 -1.98 -2.19 0.11 -2.52 0.32 -2.34 -2.28 -1.96 
+-1.73 -2.12 2.71 -0.29 2.3 2.29 1.87 -1.11 0.56 -2.21 0.52 -2.04 -4.14 -2.43 -2.63 -3.16 
+-2.16 -2.59 -1.41 -3.43 0.52 -2.13 3.95 0.74 2.21 -0.65 2.95 3.3 2.17 -1.24 3.38 -0.39 
+-3.38 -3.22 -3.88 -2.34 -2.59 1.69 -3.78 -1.08 -2.08 -2.34 3.25 0.28 0.17 -0.57 3.5 -0.67 
+3.3 1.58 2.93 -0.39 2.59 3.38 3.97 2.61 3.76 0 3.6 0.11 1.74 -0.89 3.4 0.72 
+2.87 0.57 3.38 0.98 2.8 0.96 2.89 -0.05 1.23 -2.34 -0.78 -2.75 -1.11 -1.56 -1.78 0.24 
+-2.43 0.2 0 -2.96 3.02 -0.69 1.93 -0.82 0.5 -1.97 0.3 -1.84 -2.32 1.34 -2.04 0.22 
+-2.93 -0.26 -2.67 -0.93 -2.74 -0.96 -1.78 -2.11 2.54 1.35 2.8 0.74 3.32 0.91 3.21 -0.65 
+2.71 -1.09 1.07 -1.37 -1.37 -1.17 -3.05 -0.61 -2.63 -1.93 -3.38 -0.74 2.47 -0.59 0.67 -1.52 
+2.78 -0.65 0 -1.52 -0.5 -1.89 1.5 -1.56 -1.76 -1.32 -3.04 -1.43 0.81 -2.25 -0.48 -2.23 
+-2.04 -3.75 -0.48 -2.91 -1.96 -2.73 -2.82 -0.87 -0.95 -2.97 -2.48 1.2 -2.79 -1.72 -0.74 -3.32 
+1.99 -2.17 -1 -2.75 -0.32 -2.74 -0.29 -2.62 -0.58 -2.3 -3.97 -1.39 -2.48 -1.26 -2.64 1 
+-3.06 -1.48 -0.04 3.02 2.39 2.97 0.41 4.32 -3.95 -2.08 -1.89 -2.75 -0.67 -3.26 -0.74 -2.28 
+-2.47 -2.09 -0.98 -2.82 -3.5 -2.08 0 -681.32 4.06 -0.3 3.54 -1.13 2.28 -1.17 0.26 -1.65 
+-3.34 1.98 -3.23 1.15 -3.56 1.13 0 681.32 -0.25 -0.16 -2.02 1.98 0.04 3.04 0.35 2.76 
+-0.35 2.86 -1.61 -2.23 -0.7 -2.54 -0.89 -2.97 -0.57 -2.56 -1.06 -0.83 0 -712.2 4.62 -1.49 
+-4.47 0 -0.15 1.49 0 712.2 -1.07 -0.82 -1.19 1.99 -0.55 2.2 -0.07 2.52 0.85 1.52 
+-0.59 2.32 -0.11 1.91 0.67 2.65 2.34 1.54 0.35 2.3 -0.18 2.17 0.26 2.56 -0.76 2.13 
+-2.28 0.47 -1.58 2.65 1.91 2.39 2.8 0.71 1.09 -0.71 2.14 0.75 0.52 -3.08 1.43 -2.24 
+3.08 -0.49 1.91 3.14 2.82 -0.22 3.23 0.22 2.65 0.07 2.06 1.9 2.59 2.11 0.71 2.91 
+2.28 2.64 -3.02 0.71 4.29 1.48 1.7 3.86 2.17 2 -3.78 -0.02 -1.65 0.76 1.67 3.32 
+-1.11 1.29 -0.07 3.4 -0.7 2.13 1.56 3.14 2.39 2.23 3.08 2.08 2.54 2.22 3.89 1.04 
+2.9 0.13 2.93 0.06 0 2.96 -0.46 0.04 -2.93 0.15 -0.15 1.58 -1.24 1.05 -2.19 -1.2 
+-2.3 0.48 -3.32 -1.74 -2.71 -1.93 -2.09 -1.69 -3.23 -1.82 -3.04 0.96 -1.43 -2.22 -2.61 -1.89 
+-3.09 -2.28 p
+4.76 -0.22 -2.93 -2.58 -2.74 -0.93 -3.34 -0.87 -3.34 -2.95 1.48 -0.87 2.64 1 2.76 -0.96 
+3.73 1.41 3.71 1.5 3.23 1.15 0.63 -1.89 -0.3 -2.43 -2.06 -1.11 0.07 -2.52 -2.17 -0.91 
+0 -9.16 1.06 -1.79 -1.49 -1.78 -2.67 -1.06 -2.12 0.26 -1.59 1.59 2.65 2.19 4.17 0.59 
+0 9.16 -1.74 -0.74 -2.3 1.07 -3.14 -1.32 -0.7 -2.73 -3.8 -1.22 -3.53 0.93 -3.35 0.74 
+0.15 2.78 1.33 1.39 -1.22 2 -1.7 -2.17 -3.19 0.04 0 -1.36 3.23 -0.7 -2.95 -1.96 
+-1.87 -2.95 -1.24 -3.13 -1.41 -2.34 -2.12 -2.21 -0.59 -2.63 -3.36 0.43 1.28 2.59 0.83 2.32 
+-0.61 1.41 -2.52 0.16 -3.12 0.02 -1.17 1.59 3.08 1.58 -0.89 2.63 3.23 -0.8 3.58 2.08 
+3.8 1.26 2.82 0.66 0 1.36 -1.67 0.02 -3.21 -1.3 -3.62 0.09 -3.62 0.13 -0.78 2.96 
+-4.06 -0.13 -0.39 -0.17 0 -16.91 1.69 -0.93 0.61 -1.29 -0.48 -0.23 -0.26 0.02 0 -4.68 
+0.89 -1.59 -2.52 -1.23 -2.93 -0.61 1.02 1.67 3.53 1.76 0 4.68 -3.12 0.42 -1.24 1.43 
+2.8 0.59 0 16.91 -2.8 -1.3 -1.56 1.64 -1.5 1.5 -3.25 -1.29 -1.3 1.05 -2.93 0.02 
+-3.45 -0.17 -2.82 -0.5 -2.76 -0.5 -3.87 -1.37 -3.23 -1.34 -2.5 -1.91 0.8 -1.39 -0.17 -1.82 
+-2.34 -1.78 0 -36.63 3 -0.59 -1.05 -1.52 -3.6 -1.67 2.34 1.61 -1.87 -0.22 -0.8 1.3 
+3.21 0.09 -1.23 1 0 36.63 -1.2 -0.91 -2.61 -1.21 -2.45 -2.11 -2.06 -1 1.37 -0.93 
+1.56 -1.3 -1.3 -3.47 -0.26 -2.97 -1.21 -3.32 -2 -2.84 -0.37 -2.21 -0.11 -2.56 -1.37 -3.93 
+1.15 -2.39 1.24 -2.37 -0.39 -2.88 -4.6 -2.28 -2.04 -2.24 -2.3 -1.61 -2.12 -1.11 0 -0.96 
+1.78 -0.74 0.13 -1.37 -1.9 -2.25 -0.11 2.25 0.11 2.11 0 0.96 -0.91 -0.48 -1.39 -3.28 
+-1.7 -2.73 -1.04 -2.59 -1.76 -2.56 -0.7 -3.02 1.65 1.58 3.19 -0.58 3.64 0.71 2.02 3.04 
+2.69 2.06 3.02 2.56 1.93 2.28 1.78 2.39 2.49 -0.72 3 -0.35 3.39 -0.02 3.08 0.57 
+3.67 2.64 2.82 2.8 2.11 1.98 2.78 2.88 0.18 1.85 1.11 2.43 2.02 1.04 1.34 -1.04 
+3 0.5 2.39 1.52 2.66 2.13 0.83 1.86 2.82 0.85 2.66 0.95 0.79 1.98 2.45 1.45 
+2.21 -0.39 0.7 -2.13 0.15 -2.3 0.82 -1.22 2.48 -1.49 -0.41 -2.26 -0.96 -2.48 -0.3 -2.28 
+-2.15 -0.8 -0.26 -2.3 1.15 -1.37 0.74 -1.64 -2.5 -1.35 -1.8 -2.12 -2.75 -1.84 -1.72 -1.35 
+-1.34 -2.62 0.61 -1.41 -1.75 -3.65 3.08 -0.75 2.26 0.78 2.6 -0.28 2.87 1.04 1.04 1.95 
+1.97 0.35 2.54 0.52 -1.02 -1.95 -1.52 -2.97 -1.3 -3.12 -1.57 -2.89 -1.34 -3.04 -0.5 -2.3 
+-1.58 -1.52 -0.08 -1.98 -1.5 -0.46 0 -697.72 4.36 -1.62 -2.25 -0.76 -2.61 0.98 0.5 1.41 
+0 697.72 -0.91 -0.3 -2.28 -2.24 -0.57 -2.23 0.74 -2.58 -1.48 -2.23 2.15 -2.24 -0.67 -2.14 
+1.87 -1.96 0.15 -2.02 -3.41 -0.16 2.08 -2.12 -1.48 -2.08 1.89 -1.29 -0.28 -3.52 -0.08 -0.06 
+0 -672.24 3.04 -1.32 -1.74 -0.28 -0.82 -1.5 2.34 0.37 2.93 -2.75 -2.59 0.06 -3.06 1.33 
+1.91 -2.48 -2.59 0.5 -0.11 -1.96 -0.09 -1.88 0.89 -2.26 1.57 -1.58 1.61 -1.56 1.8 -2.06 
+-3.32 0.71 p
+0.45 -1.39 3.32 -1.7 -2.11 -0.52 1.28 -2.17 2.91 -2.3 2.93 -0.72 0.65 -1.34 3.71 -1.54 
+2.21 0.63 4.06 -0.89 4.43 -2.3 3.84 -1.91 3.56 -1.43 1.91 -1.48 2.82 -0.67 2.95 -1.56 
+1.32 -2.08 3.61 -0.89 1.95 -1.41 4.11 -0.71 1.63 -1.43 -1.48 -0.96 3.02 -1.02 4.43 -2.02 
+0.89 -1.71 2.87 -1.5 -1.17 -0.93 3.6 -1.78 2.13 -1.76 0.93 -2.3 1.82 -2.54 3.8 0.55 
+2.17 1.43 3 1.06 4.08 0.39 4.34 -0.47 5.2 -0.3 4.69 -0.43 4.58 -0.07 3.65 -0.34 
+5.32 0.8 4.1 0.81 3.12 0.91 1.21 1.99 -0.19 2.11 1.3 1.56 1.46 1.56 1.61 1.61 
+1.82 1.54 1.04 1.82 0.61 1.71 2.93 1.63 -0.97 2.25 1.93 1.47 2.74 1.54 2.19 1.45 
+3.04 1.5 2.43 1.45 3.63 0.8 2.64 0.46 2.43 1.09 1.99 1.37 -0.02 1.3 -2.41 0.93 
+-0.87 1.32 1.61 0.37 1.69 -1.26 0.89 1.34 1.65 1.05 2.13 -0.65 1.11 -0.95 0.83 -1.63 
+2.82 0.7 -1.09 0.98 0.59 1.37 -1.09 0.97 2.15 0.35 2.65 0.05 0.15 -1 -0.22 -1.3 
+3.88 0.04 3.85 0.34 -0.2 2.3 -0.95 1 2.17 0.7 2.3 -0.67 1.82 -0.98 -1.28 -1.32 
+2.19 -0.98 1.76 -1 3.45 0.98 3.58 1.3 2.31 1.35 3.25 0.95 4.47 -0.04 2.89 0.95 
+3.64 -0.06 3.5 -0.43 3.71 0.26 3.6 -0.09 4.32 -0.52 3.58 -0.11 3.54 -0.16 3.52 -0.15 
+4.08 -0.85 3.69 -0.54 3.47 -0.87 4.69 0.39 2.37 0.89 4.3 -0.28 4.14 0.78 4.55 0.05 
+4.23 0.75 1.98 0.18 3.84 -0.33 1.3 2.11 1.59 1.32 2.5 0.2 0.52 -1.56 1.04 -1.93 
+1.85 -0.96 2.97 -0.67 -1.21 -2.13 3.3 1.5 1.91 0.57 1.39 1.37 1.82 1.37 4.71 1.02 
+3.1 1.2 4.84 1.04 3.32 -0.02 3.75 -0.45 3.28 0.39 2.47 -0.78 2.02 0.96 2.04 -0.29 
+-0.82 -1.93 2.87 0.83 2.11 2.63 3.29 2.06 3.76 0.74 3.34 1.22 4.21 -0.17 3.23 -1 
+0.23 -1.8 1.85 -1.26 -1.41 -1.11 -2.39 0 0.61 -1.02 1.82 -0.8 1.26 -1.2 -1.2 -1.61 
+3.91 0.11 0.63 -1.58 1.52 -0.89 3.12 0.24 2.17 -1.06 1.52 -1.48 2.04 -1.11 1.87 -0.57 
+2.62 0.2 -3.45 -2.17 -1.97 -2.08 -2.11 -2.08 -2.89 -0.11 -2.36 -1.91 -3.56 -2.08 -1.72 -2.22 
+2.11 -0.3 1.46 1.8 4.49 0.54 3.06 -0.06 0.82 -1.02 0.24 -1.34 3.47 0.91 3.97 0.67 
+1.87 -0.21 4.95 2.21 2.91 0.57 4.05 -0.05 2.93 -0.19 5.1 1.52 2.82 -0.25 3.08 -0.37 
+3.04 -0.39 2.91 -0.5 0.26 -1.11 1.26 -1.09 2.04 -0.93 2.43 -0.23 0.22 -1.35 0.85 -1.04 
+1.52 -0.7 -0.76 -1.8 2.2 -0.35 -1.11 -1.48 2.04 -0.2 -0.29 -1.3 1.8 -0.09 0.33 -0.78 
+3.49 0.45 2.78 -0.35 -0.43 -2.06 -1.28 -1.95 -1.47 -2 -2.34 -2.34 -0.8 -1.65 -2.52 -2.32 
+2.37 0.3 -1.04 -1.49 2.37 0.49 3.34 1.35 1.32 -0.79 0.55 -1.11 0.39 -1.17 -2.89 -2.21 
+-3.86 -2.76 -2.34 -2.12 -3.41 -2.67 -1.93 -2.3 -0.65 -1.04 -0.63 -1.04 0.17 -0.67 0.2 -0.65 
+1.39 -0.83 -2.19 -1.2 -2.21 -1.19 -0.65 -0.83 -0.65 -0.8 0.91 -0.04 0.93 -0.04 -1.12 -0.96 
+-1.15 -0.96 2.34 -0.17 -0.78 -0.87 -1.48 -0.74 0 -64 0.29 -0.17 0.29 -0.15 0.28 -0.17 
+0.06 -0.16 p
+0.07 -0.17 0.04 -0.15 -1.17 -0.65 -1.2 -0.63 -1.19 -0.65 -0.48 -0.36 -0.47 -0.35 -0.5 -0.37 
+-0.83 -0.5 -0.84 -0.48 -0.84 -0.5 -2.26 -0.91 -4.6 -1.78 -2.37 -1.02 -2.41 -1.02 -2.46 -0.99 
+-1.56 -0.72 -1.61 -0.71 -1.61 -0.7 -1.72 -0.74 -1.71 -0.72 -1.76 -0.71 -2.28 -0.89 -2.32 -0.89 
+-2.35 -0.89 -0.15 -0.21 -0.13 -0.24 -0.15 -0.21 0.32 -0.09 0.33 -0.07 0.35 -0.08 -2.65 -0.87 
+-2.67 -0.89 -2.69 -0.87 0 -0.13 -0.02 -0.15 0 -0.13 1.35 0.21 1.34 0.24 1.37 0.26 
+-1.95 -0.69 -1.95 -0.68 -2 -0.67 -4.28 -1.12 -4.25 -1.09 -4.25 -1.06 -1.87 -0.33 -1.84 -0.32 
+-1.82 -0.3 -3.61 -1.05 -1.84 -0.52 -1.58 -0.48 -1.63 -0.5 -1.65 -0.48 -3.08 -0.48 -1.52 -0.21 
+-3.08 -0.67 -6.21 -1.31 -1.23 -0.06 -2.43 -0.13 2.87 0.87 1.39 0.43 1.78 0.54 1.74 0.54 
+1.73 0.57 1.06 0.41 1.05 0.39 1.02 0.41 4.39 1.17 2.14 0.61 -0.37 0.04 -0.39 0.04 
+-0.37 0.04 -2.64 -0.52 -2.63 -0.52 -2.61 -0.5 3.95 0.93 3.95 0.96 3.93 0.95 1.58 0.55 
+1.57 0.54 1.56 0.56 2.63 0.8 2.6 0.8 2.59 0.8 -0.05 0.3 0 0.15 -0.21 0.13 
+-0.24 0.13 -0.22 0.13 -0.3 0.13 -0.3 0.11 -0.33 0.11 0.63 0.37 0.59 0.37 0.61 0.37 
+1.15 0.5 1.15 0.48 1.13 0.5 1.75 0.63 1.73 0.63 1.74 0.65 2.71 0.89 2.72 0.93 
+2.66 0.91 3.64 1.08 3.63 1.11 3.64 1.11 2.54 0.83 2.56 0.84 2.54 0.85 3.91 1.13 
+1.95 0.58 2.48 1 1.21 0.5 2.52 0.89 2.52 0.91 2.49 0.93 1.96 0.63 1.97 0.65 
+1.99 0.65 0 64 -0.34 -0.19 -1.84 -0.91 -2.69 -1.15 -2.7 -1.11 -1 -0.67 -0.97 -0.65 
+-1.33 -0.63 -1.3 -0.62 0.79 -0.14 0.8 -0.11 2.99 0.73 3 0.76 0.91 -0.82 -1.63 -1.17 
+-1.66 -1.15 -0.98 -1.09 -1 -1.11 -1.58 -0.99 -1.61 -1 -0.74 -0.83 -0.74 -0.8 -2.47 -1.17 
+-2.5 -1.15 -1.28 -0.91 -1.28 -0.89 -2.17 -1.07 -2.17 -1.04 -1.76 -0.96 -1 -0.54 0 -50.85 
+0.18 -0.3 0.19 -0.28 0.17 -0.3 -2.15 -0.57 -4.29 -1.09 1.99 0.85 3.91 1.69 0 50.85 
+-0.78 -0.41 -2.11 -1.11 -2.13 -1.11 -2.61 -1.37 -2.62 -1.37 -1.96 -0.56 -1.93 -0.59 -0.5 -0.61 
+-0.52 -0.63 -2.39 -0.93 -2.41 -0.93 -2.26 -0.21 -2.26 -0.17 -1.43 -0.59 -1.43 -0.57 -1.3 -0.78 
+-1.32 -0.79 -2.82 -0.74 -2.84 -0.73 -2.09 -0.2 -2.06 -0.2 -5.95 -1.99 -0.46 -0.48 -0.48 -0.48 
+-3.37 -0.96 -3.38 -0.93 -0.54 -0.5 -0.56 -0.5 -2.23 -0.28 -2.24 -0.3 -1.82 -0.8 -1.85 -0.8 
+-3.16 -1.11 -3.19 -1.09 -3.06 -0.24 -3.06 -0.21 -2.75 -0.5 -2.78 -0.48 0.11 -0.46 0.11 -0.44 
+-2.25 -0.54 -2.26 -0.52 -2.88 -0.57 -2.91 -0.54 -3.43 -0.54 -3.45 -0.52 -2.54 -0.34 -2.52 -0.37 
+-2.21 0.61 -1.45 0.24 -1.46 0.26 -1.82 0.05 -1.82 0.06 -0.7 -0.82 0.72 -0.41 0.71 -0.39 
+-1.82 -0.5 -1.83 -0.47 -0.89 0.47 -0.87 0.5 -2.99 -0.56 -3.04 -0.57 -2.54 -0.54 -2.56 -0.52 
+-3.38 -0.11 -3.37 -0.09 -3.32 -0.02 -3.3 -0.02 -3.19 0.04 -3.17 0.04 0.13 -0.39 0.13 -0.41 
+-2.47 0.48 -2.43 0.48 1.29 0.46 1.3 0.45 -2.6 1 1.08 0.54 1.06 0.55 1.61 0.63 
+1.58 0.63 p
+4.95 0.87 -1.43 0.91 -0.17 0.54 -0.15 0.52 1.97 0.41 2 0.41 -0.63 0.34 -0.61 0.37 
+0.89 0.61 0.87 0.58 1.29 0.7 1.25 0.67 -0.61 0.61 -0.59 0.63 -0.87 0.43 -0.84 0.46 
+-2.61 0.78 -2.52 0.82 -2.43 0.83 -0.8 0.48 -0.78 0.5 -1.63 0.13 -1.61 0.13 -2.21 0.33 
+-0.26 0.05 0 -1.91 0.37 -0.65 0.39 -0.67 -2.26 0.08 -2.25 0.11 -2 -0.09 -2 -0.06 
+3.04 1 2.34 0.13 2.37 0.15 0 1.91 -1.93 0.28 2.06 0.39 2.04 0.39 2.17 0.7 
+2.17 0.71 1.21 1.48 -2.17 1.17 -1.43 0.78 -2.69 1.09 -2.08 1.23 -3.06 1.07 -3.56 0.8 
+-4.08 1 -3.93 0.82 -4.26 0.87 -4.16 0.46 -5.42 -0.26 -4.86 0.93 -2.11 1.52 -3.99 0.61 
+-3.67 0.73 -3.14 1.05 -1.07 1.71 -3.88 0.54 -3.64 1.2 -5.54 0.37 -2.3 -1.3 1.39 -1.52 
+-0.33 -1.7 -3.06 -1.09 -1.46 -1.41 -1.34 -0.61 0 -8.01 2.08 -1.58 -0.91 -0.61 -0.89 -0.63 
+-1.12 -0.22 -1.15 -0.19 0.43 -0.57 0.41 -0.54 -2.43 0.36 -2.46 0.37 -0.32 0.57 -0.31 0.55 
+0.24 0.61 0.26 0.58 1.82 1 4.34 0.3 0 8.01 -1.21 -0.56 -2.59 -1.15 -1.89 -1.29 
+-3.91 -0.24 -5.29 0.7 -5.39 1.21 -3.04 0 1.35 -1.65 1 -1.46 2.16 -1.69 2.09 -1.89 
+0.8 -0.85 0.82 -0.84 0.18 -0.55 0.2 -0.56 -3.13 0.39 -3.91 1.13 -0.91 -0.32 -0.91 -0.3 
+1.98 -0.61 2 -0.59 0.8 -0.56 0.79 -0.55 -0.43 -0.43 -0.46 -0.41 -0.43 -0.42 -0.41 -0.43 
+-2.37 0.24 -2.39 0.26 -2.93 0.93 -2.91 0.98 0.26 1.25 -1.78 0.89 -1.76 0.91 -2.95 0.61 
+-2.97 0.61 -1.43 0.16 0 -72.48 3.13 -0.24 3.1 -0.21 3.08 -0.2 -0.84 -0.02 -0.85 0 
+-0.87 -0.02 1.95 -0.26 1.97 -0.29 1.98 -0.26 -4.23 0.48 -4.23 0.5 -4.19 0.52 0 72.48 
+-1.95 0.2 -3.39 0.37 -1.8 -0.3 -1.78 -0.28 0 -1.22 2.54 -0.26 2.54 -0.24 2.43 -1.34 
+-3.58 0.41 -3.56 0.42 -0.2 0.49 -0.17 0.52 0 1.22 -0.02 -0.02 -1.19 -0.35 -1.17 -0.34 
+-1.13 -0.37 -1.15 -0.35 -3.14 1 -3.13 0.99 -3.02 0.72 -3 0.74 -1.22 1.21 -1.99 0.2 
+-2 0.22 -2.3 0.69 -2.28 0.74 -2.6 0.71 -2.61 0.76 -2.15 0.54 -2.13 0.57 -2.14 1.21 
+-2.11 1.21 0.67 0.89 2.11 0.98 1.39 0.93 0.11 1.41 -1.25 0.89 -3.35 0.35 -5.38 0.82 
+-5.82 1.24 -4.51 1.37 -6.27 1.82 -5.3 0.43 -1.54 1.48 3.86 0.32 1.13 1.02 -4.16 0.67 
+-0.63 1.63 -1.37 1.74 1.32 0.06 4.45 -1.97 4.96 -0.81 3.91 0.52 -0.99 2.34 -3.26 1.7 
+-4.88 0.78 -4.91 0.83 -3.66 1.39 3.04 -0.22 4.75 -0.54 4.66 -0.37 1.02 1.15 -5.04 1.21 
+-1.3 -0.58 -4.99 1.11 -0.44 1.13 3.19 -0.43 3.54 -1.22 3.75 0.02 -0.41 1.34 -1.89 1.7 
+-3.36 0.8 -0.21 1.63 1.63 0.73 2.45 0.52 -2.41 1.07 -4.16 -0.5 -3.19 1.47 -2.47 -0.06 
+-2.43 0.7 0.88 1.15 -1.43 1.37 -3.41 0.06 1.54 -1.73 -4.88 0.33 -0.74 1.36 3.19 -1.12 
+-0.61 1.95 4.12 -0.13 -2.3 1.2 3.37 -0.59 3.17 -0.95 0.26 1.02 -3.06 1.26 -3.21 1.04 
+-1.93 -0.85 -4.25 0.39 -3.37 -0.09 -2.61 -0.52 -1.45 1.72 2.71 0.65 -1.24 1.8 2.82 0.41 
+3.19 -1.11 p
+2.15 0.96 2.39 0.95 2.49 0.91 1.06 1.41 1.17 1.39 2.54 0.61 -0.48 1.43 0.37 1.3 
+2.37 0.93 2.38 0.96 3.08 -0.24 -3.64 1.41 -2.65 1.98 3 0.39 3.75 0.04 2.54 0 
+3.38 -2.13 1.13 1.2 1.13 1.24 0.71 1.47 1.35 1.17 -0.43 1.5 -2.89 2.19 -3.58 1.96 
+-3.12 1.02 -4.1 2.32 -4.36 1.73 -3.78 1.46 -4.06 2.4 2.02 0.68 -1.15 1.8 -2.89 0.7 
+-1.3 1.69 -2.82 1.8 -1.13 0.34 0 -5.62 5.27 -2.08 4.69 -2.21 4.39 -1.76 4.1 -1.82 
+3.84 -1.88 2.8 -1.76 2.52 -1.78 0.22 -1.63 -1.35 -1.21 -2.62 -0.58 -3 1.06 -1.89 -0.35 
+-3.52 0.87 -2.52 -0.04 -3.32 1 -1.56 1.19 1.97 1 1.7 1.39 1.08 1.07 0.57 0.86 
+-1.34 1.22 -4.14 1.82 -4.43 1.76 -3.35 1.71 0 -4.34 2.5 -0.15 2.39 -1.41 1.52 -1.18 
+-0.78 -0.98 -1.59 -0.8 -1.89 1.67 -2.04 0.96 -0.11 1.88 0 4.34 -0.56 0.28 -0.33 1 
+0.78 0.89 0 5.62 -2.34 0.72 -2.2 1.45 0.31 -2.04 -1.39 -0.43 -2.99 1.8 -1.52 2.19 
+0 1.61 3.02 -1.73 0.78 0.73 3.49 -1.09 -3.25 2.24 0.11 1.56 -2.78 1.3 -0.33 1.93 
+-0.39 2.45 -2.56 1.91 2.82 0.09 -1.72 2.1 1.89 0.85 -2.02 2.04 -0.2 1.39 2.34 1.39 
+0.79 1.54 0.8 1.52 1.76 0.7 0 672.24 -2.04 -1.69 -1.76 -3.82 -2.32 -0.37 -0.52 -0.09 
+0 -1.43 1.34 -0.85 -2.49 -1.93 0 -656.36 -1.41 -1.58 -0.13 -0.07 0 -9.89 3.11 -1.3 
+-0.91 -1.65 0.32 -1.41 -2.86 0.32 -0.59 2.37 3.13 -1.28 -2.2 2.95 0 9.89 -1.21 -0.58 
+-0.37 -2.43 -2.17 0.09 0.8 1.11 1.73 1.24 -0.39 1.78 3.15 0.45 0 656.36 -0.14 -0.09 
+-3.08 -1.75 -2.19 -1.05 -2.84 -1.91 3.36 0.33 1.02 -1.8 -2.15 -0.52 0.42 -2.73 2.23 -0.67 
+1.93 -1.15 0.84 -1.7 -3 -1.28 -0.45 -2.11 2.54 -0.85 -4.04 -1.28 -1.69 -1.39 0.15 -1.3 
+2.52 1.57 1.28 -0.16 -2.52 -2.12 1.84 -0.39 -2.26 -2.28 -2.23 -2.3 -1.82 1.02 1.43 2.1 
+-2.41 -0.41 2.52 2.13 -1.2 1.32 -1.56 0.26 -3.32 -1.67 -1.43 1.52 2.41 0.39 1.19 1.67 
+-1.67 1.59 -2.19 1.34 -2.2 1.39 -2.08 2.02 -2.8 0.54 1.2 2.41 2.13 0.48 2.69 0.72 
+-0.61 1.02 2.58 1.46 3.34 1.58 2.96 2.41 3.12 1.71 2.32 1.61 2.2 1.04 2.8 0.07 
+0 1.43 -2.56 -0.39 -2.98 1.37 -3.21 0.3 -2.47 -0.91 -2.45 -0.84 -2.65 -0.68 -2.43 1.74 
+-2.32 1 -0.57 1.78 -1.67 1.28 -1.47 1.18 -1.09 1.52 -2.19 1.13 -1.04 0.84 0 -3.52 
+1.67 -1.34 1.37 -1.71 0.76 -1.98 0.63 -1.73 -0.56 -2.3 -1.52 1.13 -1.37 1.76 -0.8 1.93 
+0.43 1.71 -0.61 2.54 0 3.52 -0.58 0.5 -1.39 1.2 -2.56 0.76 -2.47 -0.67 -2.29 -1.65 
+-1.58 1.43 -3.45 -0.5 -2.93 -0.33 -2.87 -1.02 -2.32 -0.87 -2.52 -0.63 -2.28 -0.83 -2.56 -0.65 
+2.36 -0.74 2.52 0.63 2.52 0.71 2.87 1 2.93 0.35 2.73 -0.26 2.11 -0.5 2.73 -0.24 
+2.24 -1.12 2.21 -1.18 0.93 -2.19 -0.24 -1.89 -1.41 -1.61 -2.56 -0.02 -2.02 0.21 -2.52 2.11 
+-0.5 -3.82 2.89 -0.93 -1.28 -0.98 0 -4.82 -1.21 -1.85 0.96 -2.02 1.61 -1.2 2.41 -1.12 
+-2.41 -0.24 p
+-1.32 -1.65 -1.3 2.95 -0.59 2.48 0.15 1.93 1.71 0.72 0 4.82 -0.93 -0.71 -2.23 -3.02 
+-1.2 -3.19 0.89 -2.09 0.71 -3.19 1.56 -1.78 2.28 -0.39 1.11 -1.41 1.64 2.12 3.04 1.07 
+2.58 1.46 0.05 -1.35 -2.2 -2.34 0.68 -3 -3 -0.52 -2.34 0.3 -1.79 -1.34 -3.05 0.83 
+-3.87 0.78 -2.91 0.13 -1.41 1.06 -2.25 -0.98 -2.78 -0.62 -2.76 -0.61 -0.39 2.38 1.26 2.5 
+2.38 1.49 3.02 0.43 1.79 -0.06 3.23 0.25 -2.22 0.98 1.65 1.52 -3.45 -0.09 -2.47 0.65 
+-2 1.65 -1.43 -1.7 -2.41 -0.15 -2 0.35 -2.26 0.45 0.07 1.43 -2.69 -1.32 -2.26 0.5 
+-1.99 0.37 -0.74 -0.84 -2.28 -0.87 -2.12 -1.11 -0.87 -1.46 -1.73 -0.65 0.2 -1.61 -1.33 -2.54 
+1.24 -1.11 1.15 1.17 -1.36 -1.67 -2.54 0.74 0.71 0.87 -1.82 0.13 0.39 1.87 -1.87 -1.26 
+-2.04 0.37 -1.32 1.23 -1.3 1.24 -2.04 0.41 -2.19 0 0 -0.21 1.93 -1.02 1.65 -0.87 
+2.04 -0.37 0.16 -1.7 -2.84 0.39 -2.08 1.26 -2.13 1.24 1.28 1.06 0 0.21 -0.2 0 
+-2.3 -0.84 0.11 -1.71 -2.61 -2.12 -3.02 -1.71 -2.73 -0.39 0.78 2.34 -0.13 1.76 -1.75 -3 
+-1.39 -4.12 -1.74 -0.63 -2.64 -1.32 -2.58 -2.17 -1.02 0.24 ^ 1.85 1.3 -0.89 0.89 
+1.3 1.09 -0.34 1.97 2.21 1.7 1.48 1.76 1.89 1.24 -1.82 0.24 -1.84 -1.25 -2 -2.8 
+-1.21 -1.91 -0.96 1.75 0.11 -3.32 -2.06 -1.96 -1.41 -1.71 -0.3 -2.93 -0.93 -2.21 -1.52 -2.45 
+-0.67 -2.43 0.52 2.21 -0.16 1.37 -1.28 0.43 -1.82 0.28 1.37 -1.36 1.15 -1.13 -1.39 -1.82 
+-1.5 -0.89 -0.93 0.91 -2.73 -0.41 1.39 -1.37 -1.71 -0.68 -0.22 0.14 0 -143.77 0.26 -1.87 
+-1.09 0.52 -0.74 -0.7 0 -8.33 0.87 -1.65 0.02 -1.2 -0.89 2.85 0 8.33 -0.5 -0.5 
+0.29 2.19 0.95 -0.99 0.83 1.34 0 143.77 -1.76 1.06 -2.54 -0.7 -2.52 -0.61 -1.48 0.76 
+-2.41 0.06 -0.16 -0.08 0 -179.36 3.2 -0.8 -0.76 -3.11 -1.52 -1.06 -2.67 1.11 1.78 0.43 
+0.61 2.54 -0.63 0.89 0 179.36 -1.93 -1.07 -2.26 -0.85 -2.74 -0.37 -1.71 0.07 0 -116.99 
+2.41 -1.35 2.39 -1.32 0.79 -2.26 -1.61 -0.98 -1.7 0.93 -1.91 0.46 -1.54 1.45 1.17 3.06 
+0 116.99 -0.67 0.02 -3.08 -0.82 -2.76 -2.04 -2.71 -2.04 -1.83 -3.04 -1.75 -3.08 -0.57 -1.58 
+0 -27.37 0.09 -3.67 -2.36 -2.39 1.89 2.8 0.39 3.25 0 27.37 -0.71 -2 -1.52 -3.34 
+-0.93 -3.87 -1.28 -1.91 -0.65 -1.87 0 -11.3 0.21 -2.02 2.08 -0.37 0.95 -0.85 -0.3 -1.54 
+-0.17 1.32 -1.93 0.61 0 -45.4 0.95 -1.41 1.35 1.09 -1.8 -2.06 -1.84 1.3 1.34 1.09 
+0 45.4 -1.15 0.37 0.31 2.48 0 11.3 -0.83 -2.28 -0.61 -1.78 0 -64 2.21 -1.52 
+1.54 -3 1.69 0.16 2.56 -1.7 1.74 -1.71 2.04 -1.91 -0.2 -2.49 2.28 -1.41 -2.24 -0.54 
+2.89 -2.97 0.67 -3.56 -2.39 -1.78 -0.49 2.88 -2 1.2 -2.71 0.34 -2.2 0.71 0.63 1.55 
+-2.39 0.2 -0.63 -1.54 -2.37 -1.79 -0.37 4.12 -1.71 1.83 -0.05 0 0 -44.23 0.7 -1.48 
+0.17 -1.05 -0.87 2.52 0 44.23 -1.8 0.5 -1.39 1.63 -1.91 1.28 -1.06 -0.63 -1.65 3.8 
+1.91 0.7 p
+1.67 -1.8 1.15 -2.15 1.91 -1.25 2.28 0.48 -0.52 3.67 0.89 2.02 -0.05 2.73 -1.89 1.3 
+1.93 0.67 0 64 -0.81 -2.34 -0.78 -1.23 0 -14.84 0.8 -0.7 -0.87 -3.69 -1.15 -2.04 
+-0.26 -2.67 -1.65 -1.5 0.82 3.69 -0.26 3.88 1.66 0.78 0.89 2.24 0 14.84 -1.35 -2.15 
+-2.41 -3.21 -2.56 -2.21 -1.34 -0.21 -1.58 0.69 0.99 3 -0.07 3.21 1.11 3.71 0.82 3.21 
+0.3 2.93 1.09 2.23 2.39 2.41 -1.28 0.48 1.33 1.97 1.84 2.11 1.54 3.37 -0.3 1.28 
+1.21 4.58 0.26 3.17 -1.65 1.11 -2.11 -0.13 -1.62 1.15 1.3 2.85 -0.52 2.56 0.26 2.46 
+-1.57 1.17 -1.61 1.13 -1.17 1.63 1.11 2.45 -1.69 -0.57 -0.81 2.11 -0.95 1.41 -2.24 0.3 
+0.02 3.08 -2.45 -1.48 0.39 -1.61 1.26 -0.96 0.95 -1.41 -1.3 -1.13 -1.28 -0.07 -0.76 -0.95 
+-0.28 -3.54 -1.15 -0.39 0.52 2.26 -0.41 1.56 -1.48 0.26 -1.7 1.47 -0.72 2.24 1.33 2.14 
+0.46 3.58 -2.04 0.07 -0.61 2.28 -0.26 2.67 -1.52 1.63 -1.19 1.07 -2.15 0.43 1.96 2.28 
+-1.39 0.3 -1.52 -3.26 -0.48 -0.02 0 -75.98 2.41 -0.02 1.85 -1 1.82 -1.04 2.15 -0.48 
+1.58 -1.5 1 -2.52 1.61 -1.49 0.8 -2.26 0.8 -2.17 0.02 -3.06 1.65 -1.43 1.17 -2.41 
+0.91 -2.93 0.65 -2.67 0.93 -2.21 0.74 -3.41 1.52 -1.91 1.26 -1.63 -1.57 -2.34 1.5 -0.35 
+1.54 -1.89 0.28 -2.91 0.91 -0.67 -0.17 -1.24 -2.09 0.83 -1.7 -0.18 -1.82 1.33 -1.54 1.91 
+-1.82 1.37 -2.04 0.8 -2.38 1.87 1.63 0.84 1.93 0.61 0.42 2.56 -2.61 2.1 -0.72 3.45 
+1.02 2.8 -0.07 1.45 -1.96 0.96 -1.12 2.47 -1.13 1.71 -0.29 2.5 -2.43 2.23 -1.09 1.59 
+0 -33.03 2 -0.11 1.56 -1.87 1.58 -1.93 1.04 -2.13 -0.28 -2.57 -1.22 0.89 -1.02 1.47 
+-1.67 -0.15 -1.3 1.65 -0.24 3.06 -1.19 0.91 0.73 0.78 0 33.03 -0.25 0.39 -0.22 2.54 
+2.17 -0.48 -1.84 2.49 -1.26 2.09 -1.88 -0.52 -0.87 -0.22 0 -3.12 0.16 -1.65 -0.5 -2.23 
+-1.39 0.37 -0.55 0.93 0.74 0.5 0.21 1.41 1.32 0.67 0 3.12 -1.06 -0.25 -1.78 1.78 
+-1.72 -1.56 -2.02 2.09 2.13 -0.52 1.15 2.02 1.88 0.5 0 75.98 -1.37 -0.13 -1.8 -0.2 
+-1.32 1.41 -2.54 -0.07 -2.47 0.02 -2.17 -0.63 -2.52 -2.52 -2.04 -3.54 -2.32 -2.91 -1.78 -2.78 
+-2.41 -1.52 -2.58 -2.36 -2.59 -2.35 -2.23 -3.02 -2.22 -3.06 -2.19 -3.06 -2.13 -1.89 -1.78 -3.75 
+-0.37 -4.05 -1.76 -1.41 -1.37 -3.32 -0.78 -3.04 -0.58 -3.36 -1.41 -4.14 -1.04 -3.64 -0.8 -4 
+0.65 -2.88 0.63 -2.93 -0.37 -3.36 0.87 -1.2 2.13 -1.07 1.89 -1.47 2.47 -0.43 1.3 -2.65 
+-0.56 -1.04 2.19 -0.98 0.67 1.91 1.8 0.46 1.54 -0.04 1.5 2.69 1.67 1.52 1.78 2.38 
+2.39 3.34 1.54 -0.07 1.67 -1.2 1.69 -1.2 2.02 -0.61 1.71 -1.17 0.91 -1.89 1.46 -1.63 
+0.13 -1.87 -1.46 -2.56 -2.71 -1.26 -2.25 -2.61 -3.91 -5.82 -2.22 -3.43 -2.43 -2.41 0.61 3.46 
+-3 -5.09 -1.61 -3.25 -2.93 -3.56 -2.59 -0.54 0.79 -2.5 0.49 -2.97 2.65 -0.26 1.37 -2.91 
+1.89 -1.04 2.13 -0.46 1.39 -2.15 1.93 -0.95 0.83 -1.59 1.2 -1.8 0.24 -4.02 0.95 -2.28 
+0.11 -1.61 p
+-2.04 -4.92 -2 -2.02 -1.54 -3.84 -1.28 -3.32 -2.09 -3.38 -1.24 -3.34 -1.61 -2.37 -0.41 -3.3 
+-0.05 -3.49 -0.04 -3.56 0.82 -3.43 1.04 -2.87 -0.29 -3.3 1.59 -1.15 0.76 -2.61 2.63 -0.43 
+2.26 -0.26 2.3 -0.2 1.65 1.54 1.95 -1.32 1.29 -2.13 1.48 -1.7 1.04 -3.3 0.67 -3.04 
+0.71 -3.11 0.79 -4.38 1.39 4.99 2.8 1.54 1.82 2.14 1.87 -0.49 0.95 3.27 1.32 3.09 
+1.67 1.52 2.04 0.06 1.52 -1.54 1.67 1.54 2.59 -2.17 2.56 0.41 1.84 0.8 2.06 0.02 
+1.71 1.59 1.86 0.8 1.24 -1.39 0.17 -1.97 -1.87 -2.02 -2.41 0.09 0.09 -3.82 -0.09 -3.08 
+-1.65 -1.57 -1.98 -2.64 0.48 -2.71 -0.41 -2.91 2.82 -0.26 1.02 3.75 -0.42 4.54 1.11 3.8 
+2.06 0.04 2.11 0.11 2.19 0.66 0.13 3.05 2.21 0.63 -0.57 -4.64 1.8 -0.98 2 -1.63 
+1.3 -2.52 -0.36 -2.87 0.13 -2.45 2.7 -0.79 2.54 -1.25 2 -0.39 1.8 -0.89 0.35 -1.93 
+1.58 -1.91 2.46 -1.76 2.52 0.02 2.91 1.63 2.63 -1.2 3.02 -1.34 2.64 -1.15 -4.03 0.59 
+0.97 -2.72 0.93 -3.29 1.63 -0.16 1.7 -1.82 2.43 -2.16 0.08 -3.46 -1.58 -3.29 3.71 -0.42 
+2.3 -3.12 1.93 -2.95 1.95 -3.02 0.3 -2.87 -0.87 -2.47 2.06 -0.21 2.02 -2.93 1.37 -2.12 
+0.87 -2.48 2.71 -1.54 2.43 -0.82 2.54 -0.28 2.45 -0.81 2.36 -1.37 2.32 -1.78 1.55 -1.09 
+1.93 -1.62 2.26 -2.3 1.8 -2.73 2.21 -2.78 1.45 -1.99 2.13 -3.8 -0.45 -3.54 1.21 -4.56 
+0.41 -4.32 2.91 -1.29 -0.84 -4.46 -2.45 -2.46 -1.87 -1.58 -2.34 -1.5 -1.07 -2.84 -0.73 -3.43 
+3.14 0.74 1 -4.43 1.11 3.88 0.28 3.54 2.28 0.96 2.54 -1.16 2.63 -0.17 2.93 -1.73 
+-1.13 -3.84 -1.07 -2.34 1.24 -1.28 2.02 4.12 1.84 0.54 3.02 -0.74 2.89 -2.71 2.56 -1.63 
+3.45 -1.76 0.78 -2.26 2.7 0.43 0.7 -2.69 1.2 -2.73 -0.98 -2.8 3.1 0.29 2.74 0.93 
+2.64 -1.02 2.58 -2.04 2.69 -0.52 2.61 -2.02 2.69 -0.52 2.71 0.48 2.69 -0.5 2.63 -2.5 
+2.62 -2.43 2.65 -2.43 1.74 -2.3 1.8 -2.26 2.69 -1.91 1.76 -2.24 2.73 -0.95 2.73 0.08 
+3.17 -1.49 1.32 -3.59 0.89 -3.56 0.93 -3.49 0.43 -2.95 -0.41 -3.8 -2.7 -5.38 -1.32 -2.17 
+-2.25 -2.11 -1.3 -2.23 -2.69 -1.49 -1.3 -1.26 -1.71 -2.63 -1.24 -2.71 -2.14 -3.02 -2.15 -2.11 
+-2.61 -1.54 -0.22 -3.82 -0.24 -2.84 0.63 -2.96 0.21 -2.88 0.66 -2.95 -0.59 -3.23 -0.17 -3.34 
+0.26 -2.89 -1.57 -1.66 -0.13 -2.82 0.3 -2.89 -0.15 -2.82 -2.32 -2.54 -0.48 -2.78 -2.28 -2.54 
+-0.5 -2.78 0.41 -2.86 -2.41 -1.13 -2.41 -1.11 0.39 -2.43 -2.61 0.33 -2.54 -0.16 -2.61 0.33 
+-1.23 0.37 0 -157.18 2.76 -0.82 1.3 -1.78 -1.95 -1.04 -0.13 -1.41 -2 -0.56 -1.62 1.32 
+-1.5 0.37 -0.67 -1.47 -4.1 2.14 3.04 -0.78 0.11 1.43 -2.54 1.73 2.54 0.63 3.08 -0.8 
+1.7 1.04 0 157.18 -1.43 0.41 -3.39 -0.02 1.19 -2.05 -2.58 0.33 -1.64 -2.65 -1.87 1.15 
+-2.63 -1.54 -2.36 -0.67 -1.67 -2.12 -2.06 -2.15 -1.61 -2.19 -1.56 -2.17 0.63 -2.93 0.89 -3.95 
+1.11 -2.97 0.3 -2.87 -0.13 -2.84 -0.98 -0.85 -1.59 -1.71 -1.24 -2.72 -0.84 -2.75 0.04 -2.84 
+-0.8 -2.76 p
+-0.71 -2.75 -1.8 -1.71 -1.75 -1.76 -1.37 -1.75 0.19 -2.87 -0.98 -2.76 -1.67 -1.71 0.35 -1.98 
+-1.26 -1.78 -1.76 -1.29 -2.12 -0.28 -3.26 0.73 -2.47 -0.26 -2.99 1.19 -2.13 1.63 -3 0.26 
+-3.23 2.73 -0.02 -1.91 1.56 -2.12 4.52 -2.32 2.28 -2.08 0.06 -2.91 2.15 -2.58 2.06 -0.61 
+1.58 -2.99 -0.21 -2.85 -0.78 -2.36 0.39 -2.46 -1.91 -1.32 -1.73 -0.83 -2.39 -0.84 -2.64 -0.3 
+-1.89 -0.43 -2.96 -0.3 -3.19 0.17 -1.78 1.56 0.89 -2.52 2.39 -2.06 0.29 -1.96 0.47 -2.97 
+1.5 -1.54 0.74 -2.02 -1.96 -1.41 -3.38 0.11 -2.58 1.11 -2.85 1.59 -0.56 -1.48 2.37 -3.06 
+1.97 -3.52 2.85 -1.56 2.14 1.45 2.36 -3.02 0.5 -1.5 -1.97 0.04 -2.46 2 -0.82 -1.95 
+3.23 -1.06 -1.45 -1.93 0.24 -2.04 1.52 -1.98 1.85 -3 -0.93 -1.02 1.25 -1.98 -2.23 -0.02 
+-1.5 -1.52 -0.28 -1.52 0.78 -3.02 2.32 -2.97 2.87 -1.91 3.21 -1.95 2.73 0.09 1.63 -1.91 
+1.5 -2.95 -0.41 -2 -0.89 -2.09 -0.3 -2.02 1.63 -2.95 1.72 -2.93 -1.48 -1.15 -0.13 -2.04 
+1.8 -2.93 2.56 -2.37 2.52 -2.3 4.04 -2.68 -0.11 0 0 -1.56 3.64 -2.19 1.89 -1.82 
+2.21 -1.85 3.45 -1.61 3.32 -1.15 2.55 -1.21 2.38 -0.76 2.04 0.24 0.98 -1.39 -0.89 -0.59 
+-2.54 -0.28 -1.24 -1.67 -2.5 -0.35 2.7 -2.21 -3.28 1.08 -1.5 -0.71 -2.37 0.74 -2.26 1.74 
+-0.54 -1.15 -2.84 0.65 -4.19 1.47 -1.34 1.39 -1.46 -0.22 -2.32 1.84 -1.91 -0.28 -1.37 1.41 
+-2.8 1.21 -0.39 1.58 -1.89 0.24 -2.82 1.21 -1.84 1.39 3.3 -1.17 3.32 -1.15 4.21 -1.54 
+2.56 -1.24 3.11 -0.62 1.89 -0.83 -1.13 2.99 3.1 -2.73 1.41 -0.3 -2.84 2.75 1 1.69 
+-1.15 0.93 -1.41 -1.23 -1.62 0.84 -2.04 2.91 1.54 0.17 -0.48 1.52 1.5 -0.41 0.87 0.65 
+0 1.56 -2.41 0.24 -1.59 -0.18 0.98 -1.45 -1.3 -0.13 -1.07 -1.7 2.07 -2.93 2.6 -2.82 
+-0.56 -0.58 -3.06 0.61 -2.08 1.3 1.46 1.8 -1 2.04 -1.7 0.29 0.67 -2.59 -0.17 -1.65 
+-3.3 1.17 -2.32 1.3 -1.32 1.43 -1.95 0.33 -2.7 2.32 0.35 -1.61 -2.39 0.78 -2.66 2.95 
+2.43 -0.19 -1.24 2 -3.08 2.9 1.2 -2.02 -1.2 -1.82 -1.15 2.58 -2.09 3.04 1.43 -0.34 
+-2.21 1.91 -1.59 2.57 1.26 -4.82 -3 3.5 -0.24 1.63 -2.02 0.37 -1.82 2.52 -1.75 1.47 
+-2.41 3.67 -2 2.52 -1.35 2.12 0.96 0.61 4.14 -3.45 -2.38 3.05 -1.67 2.56 -1.32 3.73 
+-1.67 -0.11 -2.43 0.89 -0.49 -1.67 -1.59 2.13 0.63 2.73 -1.98 1.52 1.3 0.65 -1.7 1.54 
+-0.89 2.11 -0.5 1.61 -2.41 2.65 -0.86 2.62 0.07 2.2 2.61 -2.13 0.45 -1.61 1.37 -1.56 
+0.54 -2.11 1.3 -1.05 1.76 -2.06 -1.3 3.16 -1.74 2.07 0.45 1.61 -1.67 1.56 -0.49 2.67 
+-1.98 2.08 -0.78 2.67 -2.65 4.25 0.3 1.02 -1.59 1.08 -0.34 2.11 -2.52 1.11 0.63 -2.1 
+-1.85 0.52 -1.24 1.39 0 -1.89 2.82 -1.11 1.63 -2.13 0.11 -2.17 1.93 -2.11 0.83 -2.69 
+-2.47 0.54 -2.13 4.25 -1.37 2.17 -1.35 3.23 0 1.89 -0.67 0.74 -1.91 2.73 -0.98 2.72 
+-2.17 3.77 -0.2 3.21 -2.08 3.28 -1.82 2.78 -1.41 2.7 -2.43 2.82 -1.26 3.8 1.67 -0.11 
+-1.63 3.3 p
+0.46 1.07 -0.91 3.25 -0.87 3.26 -0.13 3.19 -0.46 3.23 -1.04 3.28 0.11 2.08 -1.75 3.36 
+-0.35 4.3 -1.58 2.28 -0.89 2.28 -1.61 3.38 -1.82 3.93 -0.83 3.3 0.85 1.5 -1.89 4.54 
+-1.5 2.34 0 3.19 -0.7 3.32 0.07 3.19 -1 3.36 0.21 4.26 -1.84 4.05 0.52 2.02 
+-0.74 2.84 -1.22 3.45 -0.47 3.3 -0.8 3.39 -0.76 3.38 0.39 3.14 -0.35 3.32 -0.26 3.3 
+-1.08 3.47 -0.63 3.39 -0.2 3.3 -1.54 4.75 -1 4.02 -0.52 3.4 -2.74 3.47 -1.71 1.52 
+-1.93 3.3 -2.52 2.36 -2.58 2.91 -1.61 1.06 -3.34 3.19 -2.61 3.63 -2.34 1.26 -3.34 3.89 
+-3.43 5.64 -2.19 4.16 0.08 3.43 -1.8 5.28 -0.98 3.84 -1.61 2.87 -0.87 2.71 -1.61 4.12 
+-0.87 3.86 -2.32 5.6 -0.74 3.88 -0.76 3.89 -0.74 3.91 -1.39 4.21 -2.14 3.4 -0.61 4.51 
+-1.32 3.67 -1.32 3.06 -2.06 2.82 -1.35 2.52 1.59 1.67 -1.2 4.34 -0.41 3.95 0.24 3.04 
+2.38 1.93 2.37 1.28 1.52 0.5 1.09 3.19 0.93 2 -1.74 0.91 -0.78 -3.37 -1.35 4.47 
+-1.3 1.97 0.86 0.76 0.43 3.56 -0.08 5.16 1.93 0.24 0.52 3.54 2.11 1.37 1.06 4.52 
+3.2 0.74 2.38 0.58 -0.2 3.32 1.87 -0.43 0.13 3.12 2.08 2.65 2.43 -1.37 1.82 3.39 
+1.96 2.08 -0.91 3.04 1.43 3 0.39 3.62 0.76 3.39 0.75 4.73 1.02 2.56 -0.63 3.66 
+-0.95 3.88 0.04 4.54 1.63 1.56 -1.33 0.84 -0.2 3.47 -1.15 2.76 -1.3 0.87 -1.82 -2.15 
+-1.79 -0.82 -1.97 0.02 -0.33 -2.52 1.02 -3.34 -2.46 -0.39 -1.8 0.56 0.81 4.17 -1.96 1.34 
+-0.3 2.93 -1.59 2.52 -1.73 1.93 -1.29 -0.41 -0.43 2.41 -1.71 1.95 1.39 3.2 -0.5 3.21 
+-1.37 3.99 -0.16 2.98 -1.99 -1.28 -0.22 1.58 -1 1.61 0.41 3.3 1.31 2.63 1.02 2.86 
+-0.63 3.5 -0.56 3.49 -0.35 4.14 -0.22 3.26 0.02 3.9 1.13 -1.06 0.04 3.88 -1.24 -1.17 
+-1.95 1.87 -1.33 1.32 -0.91 3.3 -1.32 1.37 -0.07 2.52 -0.82 3.34 -1.55 1.65 -1.04 2.78 
+-0.74 3.38 0.11 3.43 -0.18 3.69 0.18 4.28 0.11 2.56 -0.3 3.13 -0.61 2.58 -0.82 2.11 
+-1.34 1.8 -2.24 0.13 -2.41 0.46 -0.93 3.21 -0.91 3.36 -1.15 2.74 -0.3 3.6 -0.26 3.61 
+-0.82 2.55 -0.18 3.65 -0.5 3.04 -0.43 3.14 0.48 5.14 0.48 3.91 -0.5 1.02 -0.82 2.93 
+-0.21 4.43 1.2 4.17 0.54 4.27 0.11 4.17 1.58 5.02 1.76 4.68 1.69 0.13 0.89 2.35 
+2.11 0.73 1.54 2.09 0.7 2.99 2.97 4.91 1.15 3.45 1.52 4.41 1.24 3.45 2.04 4.86 
+1.21 3.78 1.32 3.88 2.71 4.86 0.74 4.45 1 3.34 1.34 1.43 1.91 1.11 1.68 3.04 
+-0.18 1.13 1.65 2.97 2 4.95 2.8 2.73 0.18 3.1 2.64 4.97 2.73 4.93 2.87 3.73 
+2.41 3.65 1.95 2.04 2.95 3.62 2.52 2.06 0.97 2.7 1.55 2.71 -0.46 1.17 1.63 3.86 
+-2 -1.2 -2.59 -2.38 -2.58 -2.84 -2.48 -1.58 -2.06 -2.87 -1.52 -3.23 -2.41 -3.62 -2.43 -4.12 
+-2.39 -3.76 -2.87 -3.45 -1.75 -3.73 -2.71 -4.28 -2.58 -5.08 -2.7 -3.6 -2.56 -4.36 -1.8 -1.91 
+-1.63 -3.5 -0.97 -0.19 -2.07 -3.62 0.3 -1.89 -2.28 -4.91 -1.89 -4.02 -3.12 -0.39 3.19 5.58 
+1.37 4.29 p
+1.93 4.45 1.52 3.88 1 4.56 2 0.8 2.78 2.84 2.67 4 1.23 3.75 1.76 3.43 
+-0.11 1.93 1.34 3.37 0.96 2.5 1.91 2.58 1.91 4.14 -0.43 -3.19 1.5 -0.68 2.47 2.22 
+1.93 3.28 1.95 3.3 2.58 4.49 1.11 3.21 3.55 3.25 0.54 1.56 2.59 2.04 1.65 2.76 
+1.56 1.17 2.15 2.73 2.69 2.73 3.32 3.82 3.25 3.02 2.82 2.99 2.46 3.73 0.24 1.54 
+2.19 1.8 0.29 1.52 1.54 3.04 1.65 3.41 1.85 4.14 3.28 1.95 3.88 4.23 3.21 3.13 
+2.84 3.49 1.54 0.5 2.8 1.48 0.48 1.54 2.58 2.25 2.93 1.78 -2.3 -2.73 3.19 2.54 
+0.82 -0.2 1.11 1.78 -1.69 -0.83 1.3 2.52 2.11 0.7 2.32 2.63 2.87 2.56 2.91 1.58 
+2.3 1 2.67 2.04 2.25 2.15 1.71 0.67 2.93 0.3 3.26 0.97 3.71 2 2.69 1.89 
+3.54 1.54 3.55 0.37 3.65 0.66 3.23 0.78 3.41 1.08 2.56 0.22 1.52 0.63 1.43 0.56 
+2.3 0.67 -1.32 -2.82 2.41 3.14 2.45 0.96 2.39 0.91 3.86 1.8 3.3 1.63 2.02 1.04 
+1.56 0.11 -3.23 -3.43 -1.17 -2.37 -2.67 -2.59 -2.17 0.74 0.46 -1.2 -1.28 -0.63 2.99 0.04 
+3.38 1.95 0.83 -0.28 3.38 1.89 2.41 1.89 3.4 0.8 -0.69 1.61 2.73 2.39 3.32 2.47 
+1.49 1.06 1.91 1.36 2.93 2.61 0.26 0.22 2.61 2.67 3.86 2.82 2.22 0.3 3.12 1.65 
+3.87 1.17 3.34 2.54 4.29 1.74 0.93 0.39 2.98 1.87 4.27 1.43 0.29 -1.65 2.21 0.8 
+0.91 -0.3 1.59 -0.57 0.43 1.91 2.97 1.71 3.14 1.21 3.5 0.91 1.93 -0.26 1.2 1.39 
+2.3 1.33 -3.71 -1.09 -4.95 -1.35 -3.73 -0.02 3.66 1.21 3.06 1.61 2.46 0.91 2.78 0.63 
+2.6 -0.13 0.76 1.39 3.54 0.24 0.82 -1.45 -3.04 -2.13 0.74 0.24 2.37 0.76 2.88 0.71 
+-1.47 0.79 -0.3 1.41 2.63 -0.2 3.73 0.35 1.84 -0.39 3.41 0.54 -2.15 0.7 1.26 1.24 
+-3.73 -1.46 -3.11 0.3 -4.3 -0.35 -4.14 0.28 4.73 0.85 3.95 0.59 4.34 1.43 3.91 0.43 
+3.49 1.63 3.77 1.28 4.5 1.3 3.73 1.59 3.34 -0.24 0.18 1.59 2.78 1.71 4.03 1.61 
+1.2 0.87 1.72 1.22 2.97 2.06 4.36 1.59 4.77 1.34 3.34 0.78 2.58 1.52 3.47 1.15 
+-3.34 0.96 -0.8 1.97 2.78 1.52 0.67 1.97 1.06 2.11 3.21 1.98 -0.29 -1.65 2.54 0.5 
+0.5 -2.04 2.32 -1.52 -2.26 -1.95 -0.11 -1.61 2.45 1.25 1.82 2.45 0.48 1.78 -1.32 1.65 
+0.26 1.97 1.66 1.87 -0.52 1.26 -3.49 -0.89 0.06 1.89 0.52 1.67 2.17 2.43 2.04 2.6 
+0.39 1.91 2.93 2.54 2.3 1.91 -0.11 1.63 3.11 1.82 3.32 2.13 3.73 1.87 1.93 1.56 
+3.45 1.72 3.08 2.12 4.41 2.48 0 136.98 -3.37 -0.46 -5.6 -0.74 -5.59 -0.82 -5.6 -0.85 
+-11.16 -1.87 -3.38 -0.63 0 -155.23 -1.48 -2.82 -1.15 -2 -1.32 -2.14 -2.7 -0.19 2.37 2.25 
+-2.32 -0.71 -2.45 0.26 2.45 1.95 -0.13 1.39 1.54 1.83 5.19 0.2 0 155.23 -2.17 -0.41 
+-5.56 -1.02 -5.53 -1.12 -5.55 -1.13 -5.51 -1.24 -5.54 -1.21 -10.98 -2.65 -5.47 -1.41 -5.49 -1.43 
+-5.45 -1.5 -5.45 -1.52 -10.85 -3.21 -5.38 -1.71 -5.41 -1.7 -5.36 -1.8 -0.76 -0.26 0 -180.75 
+-2.47 -2.19 p
+-1.62 -1.95 -2.43 0.89 -4.08 -1.13 -1.76 0.41 -2.89 -1.65 -4.1 -1.26 4.82 2.78 3.76 1.43 
+3.88 0.87 2.91 1.54 3.99 0.26 0 180.75 -4.6 -1.54 -5.32 -1.89 -5.34 -1.89 -5.3 -1.98 
+-5.29 -2 -5.27 -2.06 -3.32 -1.32 0 -184.62 0.16 -1.21 -3.28 -2.78 -2.98 -3.27 -2.64 -2.74 
+-4.34 -2.38 -3.93 -2.61 -4.13 -3.28 -3.7 -2.47 -0.29 1.49 2.19 2.37 3.09 3.06 1.7 0.37 
+0.97 1.76 2.52 1.82 2.32 2.23 1.54 0.04 3.04 2.58 3.12 2.56 4.64 2.45 0 184.62 
+-1.93 -0.76 -5.23 -2.17 -5.21 -2.16 -5.19 -2.26 -1.65 -0.71 0 -56.82 -0.17 -0.31 -0.2 -0.32 
+-0.52 -0.09 0.45 0.37 0.43 0.35 0 56.82 -2.91 -1.26 0 -57.83 -0.61 -0.63 -0.58 -0.63 
+-1.41 -0.84 -1.43 -0.87 -0.65 0.06 -0.67 0.07 2.43 1.48 1.46 0.69 1.48 0.68 0 57.83 
+-0.63 -0.29 -5.16 -2.34 -5.14 -2.34 -5.1 -2.45 -2.49 -1.17 0 -59.44 -0.98 -0.85 -0.95 -0.87 
+-2.97 -1.32 -2.97 -1.34 2.17 1.46 2.2 1.47 1.75 0.74 1.76 0.71 0 59.44 -2.61 -1.26 
+-5.05 -2.52 -5.06 -2.54 -5.04 -2.6 -1.99 -1.04 0 -61.09 -1.15 -0.74 -1.15 -0.76 -0.63 -0.58 
+-0.63 -0.57 -2.23 -1.26 -2.23 -1.3 0.58 0.63 0.61 0.65 0.87 0.72 0.89 0.74 0.96 0.37 
+0.93 0.35 1.61 0.89 1.59 0.87 0 61.09 -3.02 -1.59 -4.97 -2.69 -4.34 -2.37 0 -61.39 
+-1.58 -1 -1.59 -1.02 -1.54 -1.05 -1.52 -1.04 -1.56 -1 -1.54 -1.02 -2.78 -1.43 -1.59 -1 
+-1.56 -1.02 0.31 0.91 2.21 2 0.91 1.21 -0.34 0.39 1.8 1.2 1.8 1.17 0.85 0.21 
+0.84 0.2 2.34 1.15 2.37 1.13 -0.3 -0.82 2.47 0.82 0 61.39 -0.63 -0.35 -4.91 -2.78 
+-4.92 -2.78 -4.88 -2.88 -4.86 -2.87 -4.84 -2.97 -4.82 -2.95 -4.75 -3.04 -4.78 -3.06 -4.7 -3.12 
+-4.73 -3.12 -4.67 -3.19 -4.64 -3.21 -4.6 -3.3 -4.6 -3.28 -4.55 -3.36 -4.54 -3.39 -4.49 -3.43 
+-4.5 -3.45 -4.43 -3.54 -4.42 -3.52 -8.73 -7.2 -4.29 -3.67 -4.3 -3.69 -8.46 -7.51 -4.19 -3.82 
+-4.17 -3.82 -8.21 -7.81 -4.03 -3.95 -4.02 -3.97 -3.97 -4.04 -1.3 -1.34 0 -448.89 0.7 -4.05 
+0.37 -3.88 -1.69 -1.59 -1.02 2.13 1.54 1 -0.89 2.82 1 3.58 0 448.89 -2.67 -2.69 
+-3.89 -4.12 -1.89 -1.97 0 -3 -3.62 -3.99 -3.58 -3.95 -3.47 -3.95 -3.41 -3.9 -3.32 -3.89 
+-3.28 -3.86 -3.17 -3.84 -1.63 -1.93 -1.62 -1.98 -1.63 -1.95 -1.61 -2 -1.63 -2 -1.61 -2.02 
+-2.39 -3.06 -2.35 -3.04 -2.3 -3.04 -2.28 -3.02 -2.21 -3 -2.19 -2.99 -2.15 -2.93 -2.11 -2.95 
+-2.11 -2.93 -2.06 -2.93 -4.04 -5.86 2.06 3.04 2.11 3.08 2.16 3.11 2.22 3.15 2.25 3.16 
+2.32 3.21 2.13 2.87 2.14 2.86 2.18 2.82 2.19 2.84 2.19 2.8 2.21 2.8 2.02 2.58 
+2.04 2.58 2.09 2.61 2.15 2.63 2.14 2.64 2.22 2.67 2.25 2.67 5.25 6.08 2.67 2.99 
+5.34 5.95 2.71 2.93 2.69 2.93 0 3 -1.99 -2.13 -3.82 -4.16 -3.82 -4.19 -3.75 -4.23 
+-3.75 -4.26 -7.34 -8.59 -3.6 -4.38 -3.61 -4.36 -7.03 -8.86 -6.88 -8.98 -6.72 -9.12 -6.58 -9.22 
+-6.4 -9.33 -6.25 -9.44 -6.08 -9.55 -5.91 -9.66 -5.75 -9.77 -5.55 -9.85 -5.4 -9.94 -5.21 -10.05 
+-5.05 -10.13 p
+-4.86 -10.22 -4.69 -10.3 -4.51 -10.39 -4.35 -10.46 -4.14 -10.53 -3.95 -10.61 -3.77 -10.68 -3.61 -10.74 
+-3.38 -10.81 -3.21 -10.85 -3.04 -10.92 -1.74 -6.73 0 -162.21 0.13 -0.74 0.11 -0.75 0.09 -0.76 
+0.11 -3.6 0.13 -3.63 -0.15 1.13 -0.18 1.13 -0.15 1.13 -0.04 4.08 -0.05 2.02 0 162.21 
+-1.08 -4.23 -2.65 -11.03 -2.43 -11.05 -2.25 -11.09 -2.06 -11.16 -1.87 -11.16 -1.67 -11.2 -1.48 -11.24 
+-1.28 -11.24 -1.09 -11.28 -0.89 -11.29 -0.7 -11.3 -0.49 -11.31 -0.26 -10.22 p f*
+942.23 1950.98 -5.06 0.15 2.54 -0.07 2.52 -0.09 f*
+1255.32 1859.14 -1.91 1.15 2.58 -1.52 2.56 -1.56 -1.3 0.78 -1.93 1.15 f*
+1265.64 1852.84 -1.69 1.04 1.23 -0.78 1.7 -1.07 -1.24 0.8 f*
+1276.7 1845.75 -2.89 1.89 1.37 -0.89 1.52 -1 f*
+1284.61 1840.5 -1.34 0.91 2.73 -1.87 -1.39 0.96 f*
+1293.92 1834.09 -1.61 1.11 3.15 -2.21 -1.54 1.11 f*
+1303.12 1827.52 -1.84 1.32 3.22 -2.34 -1.37 1.02 f*
+1312.21 1820.77 -2.15 1.61 2.8 -2.11 1.91 -1.45 -2.56 1.95 f*
+1321.2 1813.89 -2.62 1.99 2.47 -1.91 2.39 -1.87 -2.24 1.78 f*
+1330.05 1806.83 -2.02 1.59 1.02 -0.8 3.47 -2.82 -2.47 2.04 f*
+1340.73 1797.96 -3.84 3.23 1.88 -1.56 1.96 -1.67 f*
+1348.29 1791.47 -3.75 3.23 2.84 -2.43 4.02 -3.56 -3.11 2.76 f*
+1355.64 1784.94 -3.67 3.26 3.87 -3.43 3.12 -2.87 -3.32 3.04 f*
+1364.2 1777.13 -4.19 3.82 2.8 -2.59 3.52 -3.27 3.47 -3.3 2.34 -2.25 2.32 -2.24 2.28 -2.25 
+-0.32 0.33 -4.02 3.95 -8.2 7.81 f*
+2.77778 w
+1 J
+1 j
+K
+1570.36 1302.47 -0.13 11.35 -0.37 11.32 -0.37 11.35 -0.76 11.33 -0.89 11.22 -1.13 11.33 -1.26 11.22 
+-1.52 11.19 -1.63 11.22 -1.89 11.22 -2.02 11.07 -2.26 11.09 -2.39 11.09 -2.65 11.09 -2.88 10.96 
+-3.02 10.83 -3.15 10.83 -3.53 10.85 -3.52 10.7 -3.78 10.7 -4.02 10.59 -4.17 10.59 -4.27 10.46 
+-4.52 10.44 -4.66 10.2 -4.91 10.33 -5.03 10.09 -5.14 10.07 -5.43 9.96 -5.66 9.83 -5.64 9.81 
+-5.92 9.59 -6.17 9.57 -6.16 9.44 -6.42 9.33 -6.54 9.18 -6.79 9.2 -6.79 8.94 -7.05 8.83 
+-7.29 8.81 -7.29 8.57 -15.11 16.88 -7.79 8.18 -7.95 8.05 -8.05 7.94 -8.29 7.82 -8.31 7.68 
+-8.42 7.44 S
+1347.44 1792.27 -8.68 7.42 -8.68 7.18 -8.81 7.05 -9.05 6.92 -9.07 6.68 -9.18 6.55 -9.31 6.42 
+-9.44 6.3 -9.55 6.05 -9.7 5.92 -9.68 5.79 -9.94 5.54 -9.94 5.43 -9.94 5.27 -10.2 5.05 
+-10.18 4.77 -10.31 4.8 -10.33 4.53 -10.44 4.28 -10.57 4.17 -10.57 3.91 -10.7 3.77 -10.68 3.65 
+-10.82 3.41 -10.81 3.14 -10.96 3.15 -10.94 2.78 -10.94 2.64 -11.09 2.39 -11.07 2.28 -11.2 2.13 
+-11.07 1.89 -11.2 1.65 -11.2 1.49 -11.3 1.26 -11.2 1.02 -11.33 1 -11.33 0.63 -11.2 0.52 
+-11.33 0.24 -11.3 0.13 -11.33 -0.13 -11.33 -0.24 -11.3 -0.52 -11.33 -0.63 -11.2 -1 -11.33 -1.02 
+-11.2 -1.26 -11.2 -1.49 S
+832.01 1945.21 -11.2 -1.65 -11.2 -1.89 -11.07 -2.13 -11.07 -2.28 -11.07 -2.39 -11.07 -2.64 -10.96 -2.78 
+-10.8 -3.15 -10.83 -3.14 -10.81 -3.41 -10.7 -3.65 -10.7 -3.77 -10.57 -3.91 -10.57 -4.17 -10.44 -4.28 
+-10.44 -4.53 -10.18 -4.8 -10.33 -4.77 -10.07 -5.05 -10.04 -5.27 -9.94 -5.43 -9.81 -5.54 -9.84 -5.79 
+-9.54 -5.92 -9.57 -6.05 -9.44 -6.3 -9.31 -6.42 -9.18 -6.55 -9.18 -6.68 -8.94 -6.92 -8.79 -7.05 
+-8.81 -7.18 -8.55 -7.42 -8.44 -7.44 -8.42 -7.68 -8.18 -7.82 -8.05 -7.94 -7.92 -8.05 -7.81 -8.18 
+-7.66 -8.45 -7.42 -8.44 -7.42 -8.57 -7.18 -8.81 -7.03 -8.83 -6.92 -8.94 -6.66 -9.2 -6.55 -9.18 
+-6.4 -9.33 -6.3 -9.44 S
+378.62 1655.96 -6.05 -9.57 -5.9 -9.59 -5.8 -9.81 -5.53 -9.83 -5.41 -9.96 -5.29 -10.07 -5.01 -10.09 
+-4.8 -10.33 -4.78 -10.2 -4.41 -10.44 -4.4 -10.46 -4.14 -10.59 -3.91 -10.59 -3.78 -10.7 -3.64 -10.7 
+-3.38 -10.85 -3.15 -10.83 -3.02 -10.83 -2.91 -10.96 -2.63 -11.09 -2.4 -11.09 -2.26 -11.09 -2.14 -11.07 
+-1.87 -11.22 -1.65 -11.22 -1.5 -11.19 -1.25 -11.22 -1.02 -11.33 -0.87 -11.22 -0.76 -11.33 -0.5 -11.35 
+-0.26 -11.32 -0.13 -11.35 0.13 -11.33 0.26 -11.35 0.5 -11.19 0.76 -11.35 0.87 -11.33 1.02 -11.22 
+1.25 -11.33 1.5 -11.21 1.65 -11.2 1.87 -11.09 2.14 -11.22 2.26 -11.09 2.4 -11.09 2.63 -10.96 
+2.91 -10.95 3.02 -10.96 S
+299.24 1123.59 3.15 -10.83 3.38 -10.83 3.64 -10.7 3.78 -10.72 3.91 -10.57 4.14 -10.59 4.4 -10.46 
+4.41 -10.33 4.78 -10.33 4.8 -10.2 5.01 -10.2 5.29 -9.96 5.41 -9.94 5.53 -9.96 5.8 -9.7 
+5.9 -9.7 6.05 -9.57 6.3 -9.46 6.4 -9.31 6.55 -9.2 6.66 -9.07 6.92 -9.07 7.03 -8.81 
+7.18 -8.71 7.42 -8.68 7.42 -8.45 7.66 -8.31 7.81 -8.31 7.92 -8.07 8.05 -7.95 8.18 -7.79 
+8.42 -7.57 8.44 -7.55 8.55 -7.31 8.81 -7.18 8.79 -7.05 8.94 -6.92 9.18 -6.79 9.18 -6.55 
+9.31 -6.42 9.44 -6.19 9.57 -6.16 9.54 -5.93 9.84 -5.66 9.81 -5.66 9.94 -5.42 10.04 -5.17 
+10.07 -5.04 10.33 -4.93 S
+648.35 714.3 10.18 -4.64 10.44 -4.54 10.44 -4.3 10.57 -4.14 10.57 -4.04 10.7 -3.78 10.7 -3.54 
+10.81 -3.38 10.83 -3.28 10.8 -3.04 10.96 -2.88 11.07 -2.65 11.07 -2.38 11.07 -2.28 11.07 -2.02 
+11.2 -1.89 11.2 -1.63 11.2 -1.52 11.2 -1.26 11.33 -1.13 11.2 -0.89 11.33 -0.76 11.3 -0.37 
+11.33 -0.39 11.33 -0.11 11.3 0.11 11.33 0.39 11.2 0.37 11.33 0.76 11.33 0.89 11.2 1.13 
+11.3 1.26 11.2 1.52 11.2 1.63 11.07 1.89 11.2 2.02 11.07 2.28 11.09 2.38 10.94 2.65 
+10.94 2.88 10.96 3.04 10.81 3.28 10.82 3.38 10.68 3.54 10.7 3.78 10.57 4.04 10.57 4.14 
+10.44 4.3 10.33 4.54 S
+1185.79 709.66 10.31 4.64 10.18 4.93 10.2 5.04 9.94 5.17 9.94 5.42 9.94 5.66 9.68 5.66 
+9.7 5.93 9.55 6.16 9.44 6.19 9.31 6.42 9.18 6.55 9.07 6.79 9.05 6.92 8.81 7.05 
+8.68 7.18 8.68 7.31 8.42 7.55 8.31 7.57 8.29 7.79 8.05 7.95 7.95 8.07 7.79 8.31 
+7.55 8.31 7.55 8.45 7.29 8.68 7.29 8.71 7.05 8.81 13.58 18.14 6.54 9.2 6.42 9.31 
+6.16 9.46 6.17 9.57 5.92 9.7 5.64 9.7 5.66 9.96 5.43 9.94 5.14 9.96 5.03 10.2 
+4.91 10.2 4.66 10.33 4.52 10.33 4.27 10.46 4.17 10.59 4.02 10.57 3.78 10.72 3.52 10.7 
+3.53 10.83 S
+1542.05 1112.76 3.15 10.83 3.02 10.96 2.88 10.95 2.65 10.96 2.39 11.09 2.26 11.09 2.02 11.22 
+1.89 11.09 1.63 11.2 1.52 11.21 1.26 11.33 1.13 11.22 0.89 11.33 0.76 11.35 0.37 11.19 
+0.37 11.35 0.13 11.33 S
+922.22 751.61 -2.15 1.5 -4.01 0.63 -3.65 0.76 -3.14 1.02 -1.02 1.76 -3.89 0.49 -3.66 1.26 
+-5.54 0.39 -2.25 -1.39 1.39 -1.52 -0.39 -1.63 -3.02 -1.15 -1.49 -1.39 -2.52 -1.13 -2.65 -1.12 
+-1.89 -1.39 -3.9 -0.24 -5.27 0.73 -5.41 1.26 -3.04 0 1.39 -1.76 1.02 -1.39 2.13 -1.63 
+2.15 -1.89 0.73 -0.89 0.89 -0.89 0.13 -0.5 0.24 -0.63 -1.63 0.26 -1.5 0.13 -2.02 0.63 
+-1.89 0.5 -1.02 -0.26 -0.87 -0.37 2.02 -0.5 1.99 -0.63 0.76 -0.63 0.76 -0.52 -0.37 -0.37 
+-0.52 -0.5 -0.37 -0.39 -0.37 -0.37 -2.41 0.26 -2.39 0.24 -2.88 0.89 -3.02 1 0.13 0.63 
+0.24 0.63 -1.89 0.89 S
+856.16 742.41 -1.75 0.89 -2.89 0.63 -3.02 0.63 -3.41 0.23 -3.38 0.39 -1.78 -0.26 -1.76 -0.26 
+-1.25 -0.37 -1.13 -0.37 -1.13 -0.39 -1.13 -0.24 -3.14 0.87 -3.15 1.02 -3.02 0.74 -3.02 0.76 
+-1.13 1.13 -4.03 0.52 -2.26 0.63 -2.38 0.76 -2.52 0.74 -2.65 0.76 -2.15 0.5 -2.12 0.63 
+-2.15 1.15 -2.12 1.25 0.74 0.87 2.02 1.02 1.39 0.87 0.14 1.39 -1.26 0.89 -3.28 0.37 
+-5.41 0.89 -5.79 1.13 -4.54 1.39 -6.27 1.89 -5.29 0.39 -1.5 1.5 3.75 0.39 1.15 1 
+-4.17 0.63 -0.63 1.65 -1.37 1.76 1.37 0 4.41 -1.89 5.04 -0.89 3.9 0.5 -1.02 2.41 S
+781.05 772.89 -3.25 1.63 -4.91 0.89 -4.91 0.76 -3.67 1.37 3.04 -0.24 4.77 -0.5 4.64 -0.39 
+1.02 1.13 -5.04 1.26 S
+772.77 778.8 -1.26 -0.63 -5.03 1.15 -0.37 1.13 3.15 -0.37 3.52 -1.28 S
+772.77 778.8 3.77 0 -0.39 1.39 -1.89 1.64 -3.38 0.88 -0.26 1.65 1.65 0.63 2.52 0.5 
+-2.52 1.13 -4.16 -0.5 -3.15 1.52 -2.52 -0.13 -2.38 0.76 0.89 1.13 -1.39 1.39 -3.52 0 
+1.63 -1.76 -4.91 0.38 -0.76 1.39 3.15 -1.13 -0.63 1.89 4.17 -0.13 -2.28 1.26 3.41 -0.63 
+3.14 -0.89 0.24 1.02 -3.02 1.25 -3.28 1 -1.89 -0.87 -4.27 0.37 -3.39 0 -2.64 -0.5 
+-1.39 1.63 2.64 0.63 S
+745.96 795.68 -1.13 1.88 2.76 0.39 3.15 -1.13 2.28 1 2.39 0.89 2.38 0.87 1.13 1.52 
+1.13 1.39 2.52 0.5 -0.37 1.52 0.24 1.26 2.41 1 2.39 0.89 3.14 -0.26 -3.64 1.52 
+-2.65 1.89 2.89 0.38 3.77 0.13 2.65 0 3.28 -2.15 1.13 1.15 1.13 1.26 0.76 1.5 
+1.37 1.15 -0.5 1.5 -2.89 2.15 -3.51 2.02 -3.15 1 -4.16 2.28 -4.27 1.75 -3.78 1.52 
+-4.14 2.39 2.15 0.63 -1.26 1.76 -2.78 0.76 -1.39 1.65 -2.76 1.89 -3.54 1 -2.12 1.52 
+0.26 -2.02 -1.39 -0.5 -3.02 1.76 -1.52 2.25 0 1.65 3.02 -1.76 0.76 0.74 3.51 -1.13 
+-3.25 2.29 0.11 1.49 S
+741.43 842.79 -2.76 1.26 -0.39 2.02 -0.37 2.41 -2.52 1.88 2.78 0.11 -1.65 2.15 1.89 0.89 
+-2.02 2.02 -0.24 1.39 2.39 1.37 1.52 3.04 1.75 0.76 3.02 -1.39 -1.62 -0.26 -0.89 -1.52 
+2.39 0.39 S
+744.71 859.31 2.88 -2.78 -2.52 0.13 -3.12 1.26 2 -2.52 -2.62 0.49 -0.26 -3.77 0.89 -2.28 
+1.63 -1.63 1.63 -1.52 1.75 -2.02 -3.38 0.63 0.5 -1.37 3.41 -1.65 -2.15 -0.5 1.26 -2.28 
+2.88 -2.25 2.91 -0.63 0.73 -1.39 3.67 -1.52 2.26 0.63 4.02 -0.87 4.41 -2.38 3.91 -1.91 
+3.51 -1.37 1.89 -1.52 2.78 -0.63 3.02 -1.65 1.39 -2 3.52 -0.89 2.02 -1.39 S
+789.5 819.75 4.02 -0.76 1.65 -1.39 -1.39 -1 2.88 -1 4.54 -2.02 0.89 -1.78 2.89 -1.5 
+-1.26 -0.89 3.64 -1.76 2.15 -1.76 0.87 -2.28 1.89 -2.64 3.78 0.63 2.14 1.39 3.02 1 
+4.02 0.39 4.41 -0.39 5.17 -0.37 4.64 -0.37 4.67 -0.13 3.64 -0.25 5.27 0.75 4.17 0.76 
+3.14 1 1.13 1.89 -0.13 2.14 1.26 1.65 1.49 1.5 1.52 1.65 1.88 1.5 1 1.78 
+0.63 1.76 2.91 1.63 -1.02 2.28 2.02 1.5 2.78 1.52 2.13 1.39 3.02 1.52 2.52 1.5 
+3.54 0.76 2.63 0.49 2.52 1.02 2.02 1.39 -0.12 1.36 -2.39 0.89 -0.89 1.39 1.65 0.26 
+1.63 -1.25 0.89 1.37 S
+894.92 838.26 1.75 1.02 2.13 -0.63 1.02 -0.89 0.87 -1.63 2.78 0.63 -1 1 0.5 1.39 
+-1.02 1 2.14 0.26 2.65 0.13 0.11 -1.02 -0.24 -1.37 3.91 0.11 3.88 0.39 -0.24 2.26 
+-0.89 1.02 2.14 0.63 2.26 -0.62 1.88 -1.02 S
+919.57 840.91 -1.39 -1.26 2.28 -1 1.76 -1.02 3.38 1.02 3.65 1.26 2.28 1.39 3.25 0.87 
+4.53 0 2.78 0.89 3.64 0 3.52 -0.5 3.78 0.38 3.52 -0.14 4.41 -0.5 3.54 -0.12 
+3.52 -0.11 3.52 -0.12 4.04 -0.89 3.77 -0.63 3.52 -0.76 4.64 0.39 2.41 0.87 4.27 -0.24 
+4.14 0.76 4.54 0 4.14 0.74 2.02 0.26 3.88 -0.37 1.26 2.13 S
+1014.17 844.18 1.65 1.26 2.52 0.26 0.5 -1.65 0.99 -1.89 1.89 -1 2.91 -0.63 -1.15 -2.15 
+3.27 1.52 1.89 0.63 1.39 1.25 1.89 1.39 4.64 1 3.14 1.26 4.78 1.02 3.28 0 
+3.77 -0.52 3.28 0.39 2.52 -0.76 2.02 1.02 2 -0.26 -0.76 -2.02 2.91 0.89 2.02 2.64 
+3.26 2 3.78 0.75 3.41 1.15 4.14 -0.12 3.28 -1.02 0.24 -1.75 1.89 -1.26 -1.5 -1.13 
+-2.39 0 0.63 -1.02 1.89 -0.76 1.25 -1.26 -1.25 -1.63 3.88 0.14 0.63 -1.52 1.52 -0.89 
+3.15 0.13 2.25 -1 1.52 -1.52 2 -1 1.89 -0.63 2.52 0.24 -3.39 -2.26 -2.02 -2.02 
+-2.02 -2.15 -2.89 -0.13 S
+1093.18 829.19 -2.38 -1.89 -3.54 -2.02 -1.76 -2.26 2.14 -0.26 1.39 1.78 4.52 0.5 3.02 0 
+0.89 -1.02 0.26 -1.37 3.38 0.87 4.04 0.76 1.89 -0.26 4.9 2.15 2.89 0.63 4.04 0 
+3.02 -0.24 5.03 1.5 2.88 -0.24 3.02 -0.39 3.02 -0.37 2.89 -0.5 S
+1138.71 826.56 0.39 -1.15 1.26 -0.99 2.02 -1.02 2.39 -0.24 0.24 -1.26 0.89 -1.02 1.5 -0.76 
+-0.87 -1.76 2.26 -0.37 -1.13 -1.52 2.02 -0.13 -0.25 -1.39 1.88 0 0.26 -0.87 3.52 0.5 
+2.78 -0.37 -0.52 -2.02 -1.25 -2.02 -1.5 -1.89 -2.26 -2.39 -0.76 -1.64 -2.64 -2.39 2.38 0.37 
+-1 -1.5 2.38 0.5 3.28 1.39 1.37 -0.89 S
+1157.33 801.73 0.52 -1 0.37 -1.28 -2.88 -2.12 -3.78 -2.78 -2.38 -2.15 -3.41 -2.63 -1.89 -2.41 
+-0.63 -1 -0.76 -1.02 0.26 -0.63 0.13 -0.76 0.76 -0.37 0.63 -0.37 -2.15 -1.26 -2.15 -1.15 
+-0.74 -0.87 -0.63 -0.76 0.87 0 1.02 -0.13 -1.15 -0.89 -1.13 -1 1.13 -0.13 1.15 0 
+-0.39 -0.5 -0.37 -0.37 -1.89 -0.89 -1.75 -1 -2.64 -1.15 -2.78 -1.13 -2 -1.26 -1.26 -0.63 
+-1.39 -0.63 0.89 -0.13 0.74 -0.13 3.02 0.76 3.03 0.76 0.37 -0.37 0.5 -0.52 -1.63 -1.13 
+-1.65 -1.12 -1 -1.13 -1 -1.02 -1.52 -0.99 -1.63 -1.02 -0.76 -0.87 -0.76 -0.76 -2.52 -1.26 
+-2.38 -1.12 S
+1119.73 759.42 -1.39 -0.89 -1.26 -0.89 -2.13 -1 -2.14 -1.13 -1.76 -0.89 -1.89 -1 -2.02 -1.15 
+-2.13 -1 -5.3 -2.78 -1.89 -0.63 -2 -0.5 -0.52 -0.63 -0.5 -0.62 -2.38 -1.02 -2.39 -0.87 
+-2.25 -0.26 -2.28 -0.12 -1.36 -0.64 -1.52 -0.49 -1.26 -0.76 -1.26 -0.87 -2.89 -0.63 -2.78 -0.75 
+-2.12 -0.26 -2.02 -0.13 -3.02 -1 -3.02 -1.02 -0.39 -0.5 -0.5 -0.5 -3.41 -0.89 -3.38 -1 
+-1 -1 -2.28 -0.26 -2.26 -0.26 -1.76 -0.86 -1.89 -0.76 -3.14 -1.13 -3.28 -1.02 -3.02 -0.24 
+-3.02 -0.25 -2.78 -0.5 -2.75 -0.5 0.13 -0.39 0 -0.5 -2.14 -0.5 -2.26 -0.52 -2.91 -0.63 S
+1022.22 725.26 -2.89 -0.5 -3.51 -0.5 -3.41 -0.63 -2.52 -0.26 -2.52 -0.37 -1.13 0.26 -1.13 0.37 
+-1.52 0.13 -1.37 0.24 -1.89 0.13 -1.75 0 -0.39 -0.37 -0.37 -0.39 0.76 -0.37 0.74 -0.5 
+-1.89 -0.52 -1.75 -0.37 -0.87 0.37 -0.89 0.52 -3.02 -0.52 -3.02 -0.63 -2.52 -0.5 -2.64 -0.5 
+-3.28 -0.13 -3.39 -0.13 -9.81 0 -3.15 0.13 0.13 -0.37 0.11 -0.5 -2.52 0.5 -2.38 0.5 
+1.25 0.5 1.26 0.39 -1.26 0.5 -1.39 0.5 1.15 0.63 1.13 0.5 S
+960.59 723.37 1.5 0.63 1.65 0.63 2.52 0.39 2.39 0.5 -0.76 0.37 -0.63 0.52 -0.25 0.5 
+-0.11 0.5 2 0.5 S
+968.88 727.91 2.02 0.39 -0.63 0.37 -0.62 0.39 0.89 0.5 0.87 0.63 1.26 0.63 1.26 0.76 
+-0.63 0.63 -0.5 0.63 -0.87 0.38 -0.89 0.49 -1.25 0.39 -1.39 0.37 -1.26 0.39 -1.26 0.37 
+-1.12 0.5 -1.26 0.39 -0.76 0.5 -0.86 0.5 -1.52 0.13 -1.63 0.13 -2.25 0.24 -2.15 0.39 
+2.02 0.37 2 0.39 2.28 0.73 2.13 0.63 0.63 0.75 0.52 0.76 -1.02 0.63 -1.13 0.5 
+-1.39 0.89 -2.76 1 -2.02 1.26 -3.02 1.15 -3.64 0.73 -4.04 1.02 -3.91 0.76 -4.27 0.87 
+-4.15 0.52 -5.53 -0.26 -4.77 0.89 S
+956.18 735.85 -2.38 -0.13 -2.29 -0.24 -1.49 -0.52 -1.63 -0.5 2 0.13 2.02 0.13 S
+952.41 734.72 2.26 -0.13 2.28 -0.13 -0.39 0.63 -0.37 0.76 S
+886.87 739.39 -0.39 0.5 -0.37 0.63 1.13 0.13 1.13 0.24 0.89 0.63 0.88 0.63 -2 1.65 
+-4.41 -0.39 -1.76 -0.99 -0.26 -0.63 -0.26 -0.5 0.26 -0.63 0.36 -0.52 2.41 -0.37 2.39 -0.36 S
+845.72 741.64 -2.52 1.26 -2.52 0.26 -2.52 0.23 0.13 -0.49 0.26 -0.5 3.52 -0.39 3.64 -0.37 S
+755.54 817.23 1.5 -1.26 3.27 -1.02 2.65 0.13 3.38 -0.87 2.02 0.24 2.89 -1 2.65 0.63 
+1.39 1.13 -0.26 1.65 -2.52 1.76 -2.75 1.76 -3.91 1.89 -4.04 1.89 -4.38 1.78 -4.67 2.13 
+-5.27 2.15 -0.76 -0.89 0.24 -1 3.91 -2.02 S
+750.87 826.3 4.41 -1.76 4.14 -1.78 1.39 -1.26 -0.5 -0.86 -1.12 -1.02 -1.65 -1.39 -1.99 -0.99 S
+751.63 819.12 1.49 0.89 0.89 0.87 -1.62 1.25 -2.28 1.39 -2.52 0.13 0 -1.89 2.15 -0.89 
+1.89 -1.76 S
+732.12 852.13 2.91 -0.26 -0.26 1.39 S
+734.77 853.25 0.89 1.65 -3.14 1.25 2.25 -2.91 S
+734.77 853.25 -3.15 1.26 0.5 -2.38 S
+743.58 862.33 2.64 -1 2.26 0.76 -4.28 1.63 -0.63 -1.39 S
+728.73 863.21 2.25 -0.13 0.39 2.39 S
+731.38 865.47 1.26 0.63 1.36 1.65 -3.14 -0.52 0.52 -1.76 S
+731.38 865.47 -1.78 -1.26 -0.87 -1 S
+761.2 877.82 4.51 0 -4.64 1.52 0.13 -1.52 S
+503.41 1277.41 -2.13 -1.39 -0.49 -3.52 S
+500.79 1272.5 -1.89 -0.26 0 -5.17 -0.39 -3.52 -0.87 -0.76 1.26 -2.02 1.37 -4.41 0.76 3.39 
+1.75 -1 -0.87 -1.89 -1.12 -3.28 -1.52 -0.5 -2.38 -1.26 -2.39 -1.89 -0.26 -3.04 0.39 -4.01 
+1.26 -4.3 -1.65 -1.63 1.39 -2.52 2.02 -2.91 1.37 -3.02 1.26 -3.65 0.63 -4.54 2.15 -3.41 
+1.39 -4.3 0.74 -3.9 0.75 -3.77 0.76 -3.91 2.39 -5.66 0.89 -3.78 1.5 -4.16 0.89 -2.76 
+1.63 -2.78 1.02 -3.91 1.76 -5.29 -0.13 -3.39 2.26 -4.16 1.65 -2.78 1.76 -2.89 3.38 -3.9 
+2.28 -1.26 2.65 -3.54 3.38 -3.28 1.52 -1 2.63 -2.91 2.52 -2.39 1.89 -3.28 1.76 -1.52 
+2.78 -3.52 0.5 -3.41 S
+547.57 1129.51 1 -4.04 1.52 -4.64 0.13 -3.4 0.63 -3.41 1.13 -3.38 0.26 -3.28 0.37 -3.41 
+-0.37 -3.14 0.74 -3.28 0.76 -3.41 0.5 -3.41 1.25 -3.38 0.76 -2.78 -0.63 -2.15 1.89 -4.04 
+-0.26 -4.14 1.02 -3.4 0 -3.28 0.63 -3.28 0 -3.14 1.5 -2.39 1.89 -4.54 -0.87 -1.52 
+0.87 -3.27 1.78 -3.91 1.63 -3.39 0.87 -2.28 1.65 -2.25 0.37 -4.3 1.75 -3.38 -0.11 -2.02 
+1 -3.41 0.5 -3.14 0.13 -3.14 0.89 -3.28 0.86 -3.28 -0.5 -1.12 1.63 -3.28 -1.63 0.13 
+1.26 -3.79 2.38 -2.75 1.39 -2.78 1.89 -2.78 2 -3.28 0.25 -3.15 2.15 -3.77 1 -2.78 
+1.89 -2.65 S
+587.33 979.6 1.89 -2.13 1.89 -0.63 -0.63 2.13 2.52 -1.13 0.37 -2.02 1.52 -1.12 -0.26 -1 
+2.65 -4.3 0.76 -2.64 2 -2.12 0.52 -2.65 1.63 -1.52 -0.37 -1.63 1.63 -2.02 1.39 -3.15 
+-1.75 2.02 -1.39 1 -0.5 2.15 -1.39 1.5 -0.39 1.65 -2.63 2.13 -0.12 -2.25 0.89 -2.52 
+2.38 -2.65 0.5 -1.65 0.87 -2.13 1.79 -1.52 -1.26 -0.63 1.89 -1.52 -0.62 -2.75 1.63 -2.15 
+0.5 1.76 2.38 -1 1.65 0.13 1.37 -3.67 1.65 -2.64 2.39 -3.02 -4.14 3.41 -0.89 -0.5 
+1.26 -2.14 2.02 -2.52 2.39 -3.65 1.76 -1.52 1.89 -2.52 2.02 -0.39 0.24 -1.63 3.04 -3.54 
+-1.26 4.8 1.5 -2.52 S
+624.43 923.18 2.26 -1.89 -1.5 0.37 2.13 -3.14 1.15 -2.52 1.26 1.75 -1.26 2.02 3.14 -2.89 
+1.13 -1.89 -2.39 0.11 2.63 -2.89 2.38 -0.76 -0.24 1.52 2.65 -2.28 1.89 -0.37 1.37 -1.39 
+2.28 -1.39 3.38 -1.13 0.13 1.63 -0.63 2.65 1.63 -0.24 1.02 -2.15 -1.39 -1.76 2.02 -1.26 
+3.02 -0.62 0.63 0.63 -2.64 2.76 -2.02 2.91 1.02 1.75 1.37 0.13 -0.99 1.39 1.52 0.24 
+2.52 -0.24 -4.03 2.65 -2.52 2.26 -2.52 2.39 -1.76 2.91 0.13 2.02 1.39 1.25 -1.64 2.89 
+-1.63 2.9 0.25 2.02 0.88 2.12 0.5 2.02 -1.5 2.91 -1.65 1.89 -2.75 0 -3.14 1.89 
+-2.89 1.89 -2.41 3.02 S
+628.58 951.26 -0.74 3.03 S
+627.84 954.29 0.24 1.5 1.52 1.52 2.25 0 -1.25 2.02 0.89 1 -1.75 2.91 -1.52 2.02 
+-0.26 2.02 1.39 2 -3.14 1.02 0.76 2.02 2.52 -2.02 1.89 0 -0.5 1.39 -2.28 3.02 
+-2.12 -1.39 -2.89 1.52 -2.02 3.52 -2.39 3.04 0.63 1.5 2.76 -1.5 2.64 -1.15 3.39 -0.11 
+1.88 1.39 -0.62 1.99 -1.5 1.52 -0.5 3.02 -0.26 1.89 -2.39 2.14 -0.89 2.52 1.76 -1.63 
+3.15 -0.12 3.04 0.26 1.87 0.5 2.64 0.24 2.39 0.89 1.65 0.89 1.99 1.26 -0.36 2.38 
+0.75 2.39 0.13 2.91 -1.52 3.02 -2.12 0.64 -2.15 2.52 0 2.91 -2.26 2.13 -4.54 2.28 S
+630.73 1018.04 -1.62 2.15 0.11 1.89 3.14 -2.78 3.02 -0.26 2.15 -1.63 3.02 -1.13 2.52 0.24 
+3.14 -0.76 2.15 0.26 1.76 1.39 1.26 1.75 -0.26 1.89 1.63 1.78 1.02 2.75 -0.26 2.91 
+1.39 1.75 1.76 1.76 1.76 1.65 0.76 2.76 0.76 2.78 0 2.78 0.87 2.78 1.15 2.75 
+1.63 1.65 1 0.87 0.13 2.91 -0.37 2.78 -1.02 3.02 -0.87 3.91 -0.63 3.02 1.5 2.15 
+1.64 2.15 2.02 2.13 1.63 2.14 2.38 0.76 2.65 1.5 1.89 -1.13 1.63 2.65 2.64 -0.37 
+-1.25 2.02 3.38 0 2.65 -0.76 2.64 -0.26 2.52 0.13 2.65 -0.39 -0.39 2.54 2.38 1 
+2.39 1.13 -0.37 2.91 S
+696.4 1085.94 0.5 2.76 2.29 2.54 0.49 2.75 S
+699.67 1093.99 2.26 2.65 0.13 2.78 -0.26 2.88 0.13 2.78 1.52 1.65 -0.26 2.88 0.26 3.41 
+0.5 3.28 -0.63 2.88 -0.26 2.91 -0.63 2.88 0.25 2.91 0.24 3.77 2.65 1.52 2.15 2.12 
+2.13 3.04 1.26 2.76 1.65 2.52 1.37 1.26 2.65 1.52 1.26 2.28 2.25 2.13 1.39 2.14 
+1.26 2.65 1.39 2.78 0.37 3.78 -0.37 2.88 -0.89 3.54 -1 3.52 -1.26 3.67 -3.14 1.49 
+-2.76 -0.12 -2.78 1.02 -1.75 2.15 -2.65 1.89 -1.75 2.25 -1.76 2.39 -2.64 2.41 -2.65 2.39 
+-2.63 2.52 -2.64 0.5 -2.78 -0.5 -2.63 0.5 -2.64 2.02 -2.65 0.63 S
+683.31 1197.29 -2.64 2.02 -2.63 1.02 -2.78 -1.02 -3.02 -0.24 1 2.75 -1.26 2.78 -0.74 2.65 
+-2.64 -0.39 -0.76 2.29 -3.52 1.75 -2.52 1.65 -2.91 2.64 -3.02 0.74 -1.89 -0.5 -2 -4.14 
+-1.15 1.26 1.02 2.39 1.13 3.77 -2.89 1.76 -2.65 0.13 -2.52 1.26 -2.26 -1 -0.39 -3.54 
+-1.12 -3.91 -0.87 4.41 -3.14 -0.74 0.63 3.52 1.13 2.78 2.26 1.52 1.89 1.63 2.52 2.39 
+0.89 4.54 -3.04 1.25 -0.37 4.3 -1.12 4.54 0.36 3.52 -2.12 3.77 -1.39 2.02 -2.25 2.78 
+-1.78 2.78 -2.26 2.26 -2.02 1.65 -1.49 1.13 -2.28 1.75 -2.39 1.39 -2.39 0.76 -2.64 0.24 
+-2.39 0.89 -2.75 1.52 S
+614.13 1269.99 -0.76 2.52 -1.39 2.13 -2.02 2.91 -2.13 0.26 0.87 2.39 S
+608.7 1280.19 -0.24 2.88 -2.02 3.04 -1.89 3.02 -2.25 3.02 -3.78 0.52 1.63 3.25 -0.12 3.41 
+-2.39 2.15 -1.75 1.88 -1.63 0.14 -0.89 3.28 -1 2.75 4.02 -0.63 -2.63 1.15 -3.04 1.37 
+-2.63 1.15 -2.9 -1.52 -2.52 -0.12 -2.39 1.78 -1.63 1.89 -0.37 2 -1.78 0.89 -2 0.39 
+-2.52 1.26 -2.78 0.74 0 2.52 0.26 2.78 -1.26 2.52 -2.02 1.65 -1.75 1 0.5 4.67 
+-2.13 -0.63 -0.13 -3.02 -2.28 -0.76 -2 0 -2.15 -0.13 -1.13 -3.77 0.5 -4.54 -1 -3.77 
+-2.91 0.24 0.39 2.9 -0.39 2.78 1.89 2.63 S
+553.6 1326.91 1.65 1.52 0.13 3.15 -0.13 3.77 2.52 -0.11 1.76 2.13 -0.13 1.88 -1.25 1.39 
+-1.89 -0.75 -1.63 -1.63 -2.15 0 -1.76 -0.76 -2.65 -0.5 -2.52 2.25 -1.76 -1.62 -1.5 1.63 
+-2.02 -0.11 -1.63 -1.52 -1.39 -3.02 -0.89 -3.4 -1.89 0.63 -1.76 -2.14 -2.89 -1.62 -1.39 -4.93 
+-0.76 4.3 -0.75 3.14 -0.63 3.02 -1 3.28 -1.52 1.76 -1.26 2.15 -2 1.26 -1.65 -1.52 
+-2.26 0.13 -2.25 0.39 -2.65 0.37 -0.75 2.65 -1.63 1.13 0.37 3.28 -1.13 2.91 -0.76 3.38 
+0 7.05 0.5 3.28 1.65 2.41 1.13 3.28 2.15 3.39 1.23 3.41 1.52 3.78 2.02 2.02 
+2.02 4.91 S
+520.03 1388.26 0 1.65 -1.02 2.26 -0.24 4.03 -1.15 1.76 -0.87 1.65 -1.89 0.87 -1.39 2.28 S
+513.48 1402.75 -2.12 0.37 -1.89 1.02 -1.39 3.02 -2.64 0.13 -0.5 3.02 -0.76 2.52 2.52 0.52 
+2.89 3.65 1.65 3.14 3.01 5.16 -0.63 -3.52 2.52 2.39 2.13 3.51 2.02 2.91 1.89 2.88 
+2.26 2.52 2.78 1.29 1.39 2.63 -0.13 1.88 -1.39 1.65 -1 1.76 -1.64 1.25 -2 0.63 
+-1.76 1.15 -1.65 1.25 -1.5 0 -2.41 -3.28 -1.76 -2.41 -1.75 -1.5 -1.5 -2.78 -1.52 0.13 
+-1.75 -0.5 -0.63 -1.89 -2.25 1 0.63 0.99 -1.39 2.65 -2.38 0.39 -1.89 1.5 -2.15 1.02 
+-0.87 1.26 0.37 3.41 S
+496.25 1449.5 -0.63 2.89 -0.63 2.9 0.76 3.91 1 3.64 1.39 4.15 0.63 3.4 0.76 3.04 
+1.37 3.26 1.78 1.52 0.37 4.04 1.75 3.77 2.15 1.89 2.13 3.02 2.28 3.04 2.25 3.02 
+2.52 2.39 2.65 2.41 2.39 1.5 1.76 2.78 2.39 2.88 2.02 3.54 2.52 2.52 2.13 0.63 
+5.04 0 1.39 -1.39 1.76 0.26 1.76 0.13 1.65 3.28 1.37 -0.39 -1.99 -2.26 2.12 -0.39 
+1.26 -1.13 1.52 -1.63 0.24 -2.65 0.63 -2.28 2.02 -0.13 -0.5 -3.52 -1.26 -2.15 0.63 -2.26 
+1.75 -1.39 1.52 -0.39 0.37 -1.5 -0.5 -2.28 1.13 0.39 0.26 3.52 0.74 1.02 1.26 0 
+1.39 1.13 S
+557.51 1499.63 -1 1.52 -1.26 0.87 -0.39 1.65 2.39 1.5 0 -3.15 2.28 -0.24 1 -1.39 
+0.76 -2.14 1.63 0.49 S
+562.91 1498.74 -0.99 -2.38 1.13 -1.63 1.65 -1.15 1.49 -1.13 -0.26 -2.52 0.52 -2.52 -1.26 -2.91 
+1.63 -1.12 2.15 0.13 1.63 -1.12 -0.26 -3.14 -1.25 -4.54 0.25 -1.26 -1.52 -3.41 -1.89 -2.14 
+-1.23 -1.89 1.23 -0.5 -2.39 -2.39 -1 -2.28 -0.37 -2.88 -0.89 -3.28 -1 -3.67 0 -3.28 
+-1.02 -3.02 1.65 -0.63 1.37 0.25 2.52 2.13 2.39 3.28 2.14 3.41 1.39 4.04 1.5 4.14 
+1.26 1.89 1.02 3.91 1.5 3.41 1.25 3.54 1.76 3.14 1.78 3.02 2.76 2.02 2.78 2.02 S
+586.33 1484.27 3.02 0.87 2.39 -0.11 2.75 0.37 2.28 0.89 2.02 1.13 2.49 -0.12 1.39 -0.76 
+2.52 0.63 2.64 0.75 1.89 -1.25 1.75 0.63 -1.39 1.39 2.78 0.37 0.87 -0.87 1.52 0.87 
+1.39 1.89 -1.13 1.15 -1.39 1.37 1.75 -0.37 1.39 -0.37 0.11 -1.39 -0.5 -2.28 0.63 2.52 
+1.52 2.41 0.86 2.26 0.39 2.91 1.39 1.76 2 1.89 0 3.41 0.89 -1.89 1.25 2.02 
+2.02 2.75 1.76 1.26 1.89 -0.24 -1.89 -1.26 -1.52 -1.78 -2.12 -1.63 0.24 -2.02 -1.26 -1 
+0.89 -0.89 -1.88 -1.39 -2.52 -2.14 1 -0.24 2.52 2.14 2.78 1.37 1.63 0.63 1.39 4.03 
+1.76 3.02 0.13 -1.75 S
+632.62 1507.18 -0.76 -2.25 2.78 0.36 3.02 1.76 2.65 2.02 -0.13 1.78 2.26 0.86 2.38 0 
+2.02 -0.49 1.26 -1.13 1.39 -1.26 2 -0.39 S
+651.48 1508.45 1.88 1.25 -0.36 -1.89 1.75 -0.13 -0.63 -0.87 2.52 -0.76 1.39 1.76 -1.13 -1.26 
+-1.25 1.13 1.25 2.54 -0.12 1.63 1.75 0.63 0.89 1.52 2 1 2.4 0.89 0.64 0.87 
+1.99 -0.37 2.28 -0.5 2.76 1.26 -0.13 -1.39 2.28 -0.36 2.02 -0.39 2.39 0.13 1.37 1.63 
+2.02 -1.62 2.52 -0.63 3.41 0.13 -1.65 -1.52 2.28 -1 -3.28 -0.26 -1.75 0.13 -3.02 -0.5 
+-2.41 -1.52 -1.25 -2.52 0.39 -2.28 2.76 0.52 2.78 0.63 2.25 1 S
+684.44 1507.31 1.39 -1 3.02 -0.13 3.78 -0.89 3.14 -0.76 1.76 1.26 2.28 -0.24 3.02 0.5 
+-0.62 3.02 2.12 2.41 0 1.26 -2.64 -1.39 -3.02 -1.13 -1.63 -2.15 -1.13 1.52 -2.28 0.37 
+-1.5 1.75 -0.76 3.15 -0.86 2.14 1.13 3.15 2.26 3.02 2.26 1.65 -2.89 1 0.5 3.78 
+2.52 -2.13 2.02 -0.13 2.52 0 1.39 1.63 0.24 1.91 -0.87 2.12 -2.28 1.14 -2.13 1.15 
+-2.78 0.24 -2.13 0.52 -2.78 0.24 -2.88 -0.37 -2.89 -1.02 -5.03 -1.25 -2.41 0.75 2.64 0.63 
+2.28 0.76 2.52 0.63 2.26 0.89 2.88 1 2.91 0.37 3.51 0.52 1.5 -1.52 2.41 1.76 
+2.38 0.63 S
+701.56 1540.06 2.63 -0.76 1.39 -1.13 1.65 -1.39 2.13 -1.13 1.13 -1.52 1.39 -1.26 1.76 -1.26 
+0.5 -1.76 2.41 -1 2.38 -1.78 2.63 0.76 2.41 0.76 2.52 1 S
+726.48 1529.6 3.26 -0.37 2.91 -1.26 3.13 0.37 2.28 0.39 1.76 3.91 2.15 1.63 0.24 3.54 
+-1.89 1.26 1.52 2.15 -2.02 2.13 3.41 0.13 -0.26 2.02 -1.76 2.02 0.63 2.13 -2.14 2.14 
+1.52 2.28 -0.76 2.65 0.5 2.13 2.28 2.28 2.39 0.76 0.11 2 1.64 1.52 0.5 2.28 
+1.26 3.02 1.63 2.88 1.26 3.15 1.52 3.04 1 1.89 -2.52 -0.5 -2 -0.39 -1.02 -1.89 
+-2.88 -0.99 -2.52 0.24 -2.26 -0.74 -3.15 0.74 S
+738.17 1578.11 1.76 3.67 -0.63 1.39 1.39 2.63 1.76 1.26 2.76 1.91 1.75 2.13 2.52 1.39 
+-0.74 1.64 -1.15 1.26 0.26 2.39 2.15 0.76 0.24 2.26 1.02 2.52 0.37 2.28 -2.39 1.5 
+-0.89 1.15 -0.13 2.26 -0.74 2.14 -2.15 0.37 -2.52 -1.39 -0.76 -2 -2.62 -0.89 -2.91 -0.89 
+-0.76 -1.89 -2.62 -2.12 -2.39 -1.52 -3.04 -0.5 -1.37 1 -2.02 -1 -1.13 -2.41 -0.13 -1.89 
+-2.78 -2.89 -2.12 -1.89 -2.78 -2.78 -3.78 -2.64 -3.02 -0.63 -3.38 0 -3.02 0.37 -2.52 0.76 
+-1.75 -2.39 -1.89 -2.26 -3.04 -2.65 -2.62 -2.02 -2.02 -3.04 -3.64 -0.74 -3.28 0.63 -1.63 -1.64 
+0.76 3.02 1.76 2.54 S
+682.31 1579.25 1 2.64 1.63 2.76 1.39 3.28 3.02 1.52 2.41 1.63 2 2.28 4.67 2.26 
+0.37 2.91 -1.26 2.39 -1.13 2.39 1.39 3.91 0 2.52 0.37 2.28 2.02 2.78 1.26 3.26 S
+701.43 1618.04 0.24 3.04 1.26 3.52 -1.5 1.25 -1.39 0.89 2.02 1 2.52 2.15 2.65 1.26 
+3.52 2.65 0.13 1.89 -0.76 1.25 2.52 2.02 3.15 1.25 3.88 1.39 5.55 1 3.52 0.13 
+2.88 0 1.26 -0.99 3.28 1.25 1.49 -1.52 1.52 -1.63 3.28 1.5 4.01 0.13 0.76 -2.89 
+7.29 -0.26 3.15 1.26 4.91 0 1.75 2.15 1.15 -2.02 -1.26 -1.39 -0.13 -2.78 3.28 -0.73 S
+767.36 1634.81 3.52 -0.89 3.78 1.13 0.75 2.78 3.13 1.39 2.28 -1.15 3.91 1.64 0 2.52 
+1.99 1.13 0.39 2.41 -0.63 1.89 -3.27 -1.15 -3.78 -1.49 -3.64 -1.39 -2.78 1 -2.62 -1 
+-1.52 0.89 3.41 2.88 3.26 0.89 2.78 0.87 2.88 2.64 -4.77 0.26 3.14 2.25 2.65 1.89 
+1.36 2.15 3.04 -0.89 3.26 1.78 2.02 1.75 2.78 1.89 3.26 1.76 2.39 -0.5 2.14 1.13 
+1.26 -1 0.13 -1.65 2.89 -0.11 2.88 -0.26 1.79 -0.26 1.13 1.65 0.87 2.78 -1.26 2.25 
+-2.89 0.13 -2.89 -1.02 -3.41 -1 -2.75 -0.49 -3.41 -0.76 -1.76 0.89 -3.64 -0.13 -3.77 0 
+-3.91 -2.52 -2.64 -3.41 S
+781.05 1660.37 -2.89 0.38 -3.28 -1.63 -3.51 0.75 -0.13 0.5 -3.26 -0.26 2 2.41 3.77 1 
+2.65 -1.63 3.91 2.25 3.38 3.28 -3.38 0.36 -2.28 1.26 -2.89 -3.39 -2.25 0.76 -3.91 -0.76 
+-0.5 2.13 1.37 3.41 S
+769.86 1671.2 2.15 2.65 2.65 3.14 4.14 2.39 -0.5 2.02 -0.5 2.28 -1.89 1 -2.39 -2.26 
+-2.64 0.37 1.75 2.02 2.26 2.02 -0.37 2.39 -0.13 2.52 2.02 2.14 1 2.15 2.02 -0.52 
+0.13 -1.75 3.28 1.13 2.76 2.28 1.52 2.65 2.76 2.15 3.14 2.25 3.41 1.52 1.89 2.65 
+-2.41 1.13 1.39 1.39 3.77 -0.39 -2.52 1.89 2.02 1.26 3.77 0.26 4.91 1.39 -2.89 1.39 S
+806.36 1716.69 0.24 1.63 3.14 0.13 0.39 2.26 0.24 2.54 -0.5 1.63 2.52 0.89 1.26 1.63 
+-0.5 1.65 -2.28 0.87 3.78 1.39 3.64 0.89 3.54 1 3.14 1.88 2.63 0.63 3.28 0.63 
+2.26 1.52 1.78 1.39 3.25 0.76 2.91 1.5 4.27 0.89 2.89 1.39 2.52 1.13 3.77 -0.26 
+4.02 1.65 2.02 -0.39 4.14 0.52 1.26 2.52 3.14 1.26 2.28 2.52 2.63 1 1.65 2.28 
+-0.39 1.89 0.39 1.63 3.28 1.52 3.02 1 -0.62 1.91 -3.41 0.74 -4.41 0.26 -2.76 1.52 
+-3.91 0.37 -3.38 0.76 0.37 1.52 4.91 1.25 1.39 -1.39 2.52 0.63 2.89 1.63 2.89 1.65 
+2.39 2.13 -2.25 0.26 S
+878.56 1775.26 -3.28 -0.26 0.39 1.39 -1.89 0.89 -5.16 -0.5 -4.02 -1.25 -3.78 -0.39 -1.89 -1.5 
+-2.52 -1.39 -0.39 1.63 -3.02 0.89 -0.62 1.75 4.16 1.63 1.37 2.02 4.04 0.13 2.02 1.52 
+-0.26 1.13 1.26 2.38 0.37 2.65 -4.02 0.76 S
+861.33 1788.74 -2.52 1.26 -3.78 1.02 -3.14 0.87 -3.52 -1 -2.15 -2.14 -3.77 1.13 0 1.25 
+-2.75 0.89 -1.89 -1.26 -5.79 -1.89 -4.41 0.37 0.13 -1.26 -3.02 -0.76 -2.02 -1.12 -1.89 1.75 
+-1.5 1.79 1.5 2.02 1.26 2.13 2.91 2.41 0.87 2.26 3.91 1.52 3.52 2.02 1.39 2.13 
+4.14 2.02 3.78 2.64 -1.63 0.5 -4.41 -2.52 -3.02 -2.15 -3.54 -1.63 S
+829.99 1802.97 -1.87 -1.63 -3.77 -1.78 -3.28 -2.13 -3.14 -1.89 0.13 -1.65 -2.28 -1.89 -3.02 -2.52 
+-0.37 -1.89 -2.02 -2.65 -2.12 -2.39 -0.52 -1.65 -0.11 -1.88 3.52 0.89 0.5 -1.26 -1.63 -1.89 
+-0.26 -2.02 1.25 -1.65 -0.37 -1.75 -1.89 -2.39 -2.39 -1.25 0 1.5 2.26 2.02 -2.26 1.52 
+-0.52 2.02 -2.5 -0.5 0.24 1.63 -3.28 -2.02 -1 -2.02 -0.62 -2.02 -2.78 -1.49 0.76 -2.02 
+3.41 -0.89 -3.54 -1.13 -2.63 -1.52 -3.28 -0.87 -4.77 -1.26 -4.41 -1.65 -2.91 -2.02 -3.02 -2.13 
+-4.02 -1.65 -2.78 -1.63 -0.11 -1.65 -3.41 0.26 -3.64 -1.52 -4.53 -1.39 -3.78 -1.26 -3.52 -1.63 
+-3.91 -0.39 -4.28 -1.5 S
+741.55 1742.51 -4.01 -0.52 -4.66 -0.87 4.14 -0.26 4.3 0.39 3.01 -0.39 3.78 1.52 -1.25 -1.26 
+2.12 -0.75 -3.38 -0.5 -1.89 0.37 -3.64 -0.37 -2.65 0.24 0.24 -1.37 1.52 -0.89 -2.89 -0.63 
+-3.14 -1.02 3.14 2.14 -0.89 1.39 -3.52 -0.26 -0.76 -1.26 -2.65 0 S
+728.47 1738.21 -2.76 -0.5 -2.39 -1 -3.14 -1.65 -3.64 -1.13 3.75 0 4.93 1.39 3.76 1 
+-2.39 -1.26 -1.12 -1.39 -2.02 0.26 -3.39 -0.89 -3.14 -1.26 -3.02 -1.76 -0.39 -1.89 -2.52 0.89 
+-2.26 -0.76 -0.24 1.63 -4.3 -1.5 -3.02 -1.78 -5.14 -2.13 -3.41 -2.52 -3.91 -1.28 -3.02 -1.63 
+-2.25 -0.26 -3.91 -2.89 -2.52 -2.64 -3.25 -2.78 S
+673.76 1710.5 -3.41 -2.39 -3.28 -2.52 -2.76 -2.39 0.76 -1.65 -3.4 -0.76 -2.52 -1.89 -3.38 -1.89 
+-0.76 0.26 -3.41 -1.89 -3.02 -0.13 1.26 0.63 -0.37 1.26 2.13 -0.76 2.65 2.52 1.13 2.4 
+3.28 3.39 -1.52 -0.13 -2 -1 -3.41 -1.62 -3.77 -1.79 -2.39 -0.87 -2.52 -1.02 -2.39 -3.14 
+1.39 2.9 -2.38 -0.75 -2.91 -1.13 -2.52 -0.26 -3.39 -1.12 -3.28 -0.76 -3.64 -0.63 -3.52 -0.39 
+-3.67 -1.49 -2.62 -1.89 -3.64 -2.02 -3.28 -1.02 -3.02 -0.24 -1.65 -0.76 -2.25 -2.02 -2.65 -2.15 
+-2.38 -0.99 -2.89 -1.52 -2.89 -2.64 -2.28 -2.52 -2.13 -0.76 -1.25 -2.52 1.63 0.89 -1 -1.76 
+-0.89 0.11 -3.14 -2.52 S
+580.41 1667.17 2.25 2.78 -2.89 -1.76 -2.64 -2.28 -0.5 -1.63 -2.76 -1.39 -1.52 -0.5 -2.89 -3.54 
+-3.14 -3.15 -3.91 -4.14 -3.27 -2.02 -1.89 -4.16 -1.63 -3.41 -1.5 -3.02 -0.26 -1.52 -2.25 -1.75 
+-0.26 -1.63 -2.39 -3.67 -2.89 -3.02 -3.28 -3.02 -3.28 -3.78 -2.64 -2.78 -2.26 -2.78 -1.52 -1.12 S
+533.09 1613.89 -1.63 -2.78 -2.52 -2.02 -0.63 -1.5 -3.52 -3.28 -1.12 -3.27 -2.52 -4.4 -2.02 -3.41 
+-1.89 -3.28 -2.52 -2.14 -1.5 0.63 0.5 3.14 -2.02 -4.01 -1.88 -2.65 -0.89 -2.52 -1.37 -3.28 
+0.11 -2.02 -1.76 -3.41 -1.25 -3.78 -2.63 -3.91 -2.78 -2.89 -2.02 -0.76 -1 -4.66 -1.52 -3.91 
+-2 -4.41 -1.25 -4.3 S
+491.47 1545.09 -3.28 -5.53 3.14 0.37 1.89 4.03 2.26 4.93 -0.24 1.89 2 3.64 1.02 0.13 
+1.63 3.52 1.76 1.89 2.52 4.43 2.78 3.52 2.52 5.16 2.75 4.17 1.76 3.78 2.91 3.41 
+2.39 3.78 2.38 4.14 2.39 3.66 1.52 3.15 2.12 2.88 2.39 1.65 2.65 2.76 2.52 2.41 
+2.02 1.25 -1.65 -3.9 0.52 -1.13 -1.52 -2.78 -0.99 -2.64 -2.52 -2.02 -3.02 -3.64 -1.89 -2.02 
+-2.41 -3.65 -2.89 -3.8 -2.75 -4.91 -2.65 -5.03 -0.13 -3.04 -2.76 -2.76 -2.02 -4.93 -1.65 -3.02 
+0.13 -1.13 -1.62 -3.02 -1.89 -1.15 -1.39 -1.39 -1 -3.38 -0.76 -4.41 -2.78 -4.8 -1.26 -3.91 
+-1.26 -3.77 -1.99 -4.93 S
+495.12 1528.97 -1.26 -3.39 -1.52 -4.4 -1.13 -3.54 -3.02 -4.91 -0.63 -2.91 -1.52 -2.15 -2.12 -0.74 
+-0.89 -2.28 -1.75 -0.13 -1.76 -4.77 -1.52 -4.93 -0.11 -4.14 -0.52 -4.29 -1.26 -4.14 0.26 -4.54 
+0.76 -2.91 0.5 -1 -0.37 -3.91 -0.52 -5.16 0.39 -3.14 0.5 -3.02 0.26 -3.66 0.73 -2.52 
+0.26 -3.65 0.37 -3.53 S
+479.25 1445.21 1.13 -2.76 0.89 -3.41 0.89 -3.14 2.52 -0.52 2.13 -0.11 1.39 -1.78 0.87 -2.12 
+0.52 -2.52 0.37 -3.17 -0.13 -2.63 -0.12 -4.29 0.13 -3.64 -0.12 -3.41 0.75 -3.41 1.02 -2.75 
+1.63 -1.65 0.76 -3.41 0 -2.52 1.39 -1.26 0.87 -3.38 1.39 -1.26 1.89 -1.91 1.25 1.15 S
+500.65 1391.3 0 -3.78 -1.12 1 0 -3.91 0.24 -3.27 0.26 -4.14 0.63 -3.41 0.63 -3.54 
+-1.02 -2.89 -1.37 -2.65 -0.39 -3.27 1.02 -1.62 0.24 -1.52 1.89 1.26 0.26 -3.02 1.39 -4.04 
+0.37 -3.14 -1.26 -3.15 1.63 -2.02 0.52 -2.41 1.24 0.39 1.78 -1.89 1.5 -2.52 0.39 -2.91 
+1.89 -1.39 -0.76 -4.14 1.76 -0.5 2.52 0.37 -1.13 3.28 0.37 2.52 2.02 0 1.76 0.89 
+1.76 2.13 1.39 -0.87 1.13 -2.78 0.13 -3.54 1.39 -0.74 -1.65 -1.65 0 -4.54 0.89 -3.91 
+0.63 -3.65 -1.02 -2.52 -0.74 -4.8 -0.76 -3.41 -0.37 -3.52 -1.39 -3.02 0.87 -3.04 -2 -2.13 
+-1.79 -3.41 -2.52 1.39 S
+513.84 1291.91 -1.99 -2.65 -0.14 -3.14 -1.88 0.5 0.26 -3.4 -2.41 -0.5 -3.25 -0.76 -1.02 -4.54 S
+776.78 1714.41 -1.75 -2.89 -1.26 -3.04 -2.88 -1.88 -0.39 2.02 -0.11 1.52 -3.14 1.13 -2.02 -3.02 
+2.02 -0.39 1.13 -1.89 -2.52 -0.24 -2.65 1 1.65 -3.41 3.78 1.39 -2.78 -3.15 2.38 -0.63 
+1.76 -0.76 0.89 2.65 2.25 2.78 0.76 -1.52 0.76 -1.5 2.25 2 -0.63 2.54 0.5 2.52 
+0.13 2.26 -0.13 2.52 S
+733.9 1696.53 -3.28 -2.65 -0.76 -1.76 0.37 -1.89 -0.99 -1.26 2.14 -0.13 0.5 -1.75 0.5 -1.65 
+3.02 -0.37 1.13 -1.64 0 -2.39 1.89 1 -0.62 -2.65 1.65 2.54 0.5 1.63 -0.63 1.75 S
+739.3 1685.3 -1.39 0.52 -2.02 0.74 0 1.52 1.75 1.89 2.02 1.02 1.02 2.63 -1.89 -0.74 
+-2.91 -1.65 0.26 1.65 -2.26 -0.13 -1.15 1 1.15 2.78 S
+711.87 1679.38 -1.26 -2.52 2.15 -0.37 0.63 -1.65 -0.52 -2.52 0.89 -1.89 1.39 1.78 0.24 1.5 
+2.02 1.88 0.26 1.26 -2.52 0.63 -1.39 0.89 -1.89 1 S
+693.12 1652.93 1.52 -1.76 2.89 1.02 2.78 0.99 1.63 -0.89 3.28 2.41 -2.78 0.13 -2.13 0.11 
+-2.78 -1.89 -2.26 -0.13 -2.14 0 S
+674 1634.18 -2.02 -1.91 -3.14 -2.26 -1.37 -2.28 -2.15 -1 0.39 -2.14 -3.04 -2.02 1.26 -0.87 
+-2.63 -1.13 -2.64 -1.15 -2.65 -1.5 1.39 -1.15 4.28 1.64 S
+661.68 1618.42 2.38 2.52 3.41 3.27 3.02 2.26 3.01 2.54 3.15 2.26 0.24 1.89 -0.11 1.65 
+-2.78 -0.63 S
+671.88 1638.96 -3.15 -2.39 1.63 -0.5 -1.39 -2.02 -1.75 0 -3.15 -1.52 -1.39 -2.52 S
+662.67 1630.01 -2.38 -3.28 -2.13 -1.13 -2.02 -2.02 -2.02 -0.89 0.89 -2.02 2.52 2.14 1.37 1.76 
+1.89 1.89 2.78 0.89 0.37 1.75 -1.26 0.89 S
+662.67 1630.01 3.67 2.39 1.63 0 2.13 1.02 2.02 2.88 -0.23 2.65 S
+638.29 1589.46 0.63 -1.52 2.13 -1 -1.89 -2.91 2.41 -1.26 2.39 -1.12 3.39 -0.39 0.63 -1.37 
+-2.75 0.5 -1.89 -1.39 1.37 -1.63 -1.63 -3.04 1 -1.89 2.64 -1.26 1.65 -1.89 -1.26 -1.12 S
+647.09 1568.17 0.73 -1.39 1.89 2.52 2.28 1.52 0.87 2.02 1.88 1.5 -1.13 2.02 1.26 2.52 
+2.26 3.04 -1.13 2.26 0.5 3.15 -2.39 -0.37 -2.25 0.76 -2.39 -0.39 -1.89 0.13 -1.76 1.39 
+-2.52 0 -2.52 0.38 -2.52 0.26 S
+631.99 1568.29 3.02 -0.62 -2.75 -1.15 -1.89 -1.26 -3.4 -2.12 -2.52 -1.39 -2.02 -2.14 -3.14 -2.65 
+-2 -3.41 0.74 -1.26 1.52 -0.5 2.25 0.89 3.28 2.13 2.52 2.65 1.89 2.41 2.14 1.76 
+2.63 1.26 2.52 1.39 2.65 -1.02 3.14 1.26 0.87 -1.37 -0.24 -2.02 0 -2.15 -1.25 -2.14 
+-3.02 -2.65 -3.54 -0.87 -1.62 -1.65 2.39 0.39 1.76 -0.63 -2 -3.04 -2.02 -3.02 S
+633.88 1545.36 2.52 -0.76 3.02 2.78 3.02 1.63 2.38 1.52 1.39 2.02 -0.99 -3.54 0.36 -3.38 
+2.39 0.63 1.89 4.02 1.63 3.67 -0.87 3.28 -0.75 2.13 -1.26 1.78 -0.76 2.26 -0.73 1.39 
+-1.52 -2.02 -1.39 2.39 -0.24 1.52 -1.26 1.02 -2.52 2.12 -0.39 0.76 -2.25 -0.5 -2.78 -0.89 
+-2.76 -0.87 S
+646.7 1559.85 0.39 -2.52 0 -2.14 2.52 1.52 -1.52 1.13 -1.39 2.02 S
+625.07 1542.08 0.13 -3.14 1.13 -1.63 1.63 -1.26 2.41 -0.52 2.13 -0.76 2.64 -0.62 2.39 -0.37 
+2.52 0.5 -1.39 1.78 -1.49 1.89 -1.89 -0.39 -0.39 1.65 -1.62 1.13 -2.39 -0.62 -2.52 0.75 
+-1.26 1.63 -2.02 0 S
+640.17 1538.8 0.63 -1.76 2.25 -1 1.26 -1.52 0.89 -2.02 1.75 -1.13 2.25 -0.89 2.15 2.65 
+1.99 1.13 -2.12 0.76 -1.89 -0.37 -1.13 2.13 -1.52 1.02 -1.75 1.26 -2.15 0.87 -2.62 -1.13 S
+458.75 1307.01 -1 -3.52 0.89 -2.91 -1.52 -0.87 1 -2.15 1.65 1.52 -0.39 3.91 -0.63 4.02 S
+587.96 976.97 1.39 -3.27 1.37 -2.15 2.15 -4.28 2.52 -0.52 -0.89 2.64 -1.89 2.15 -0.11 2.15 
+-1.64 2.12 -2.89 1.15 S
+653.88 912.59 -0.89 -0.63 -1.52 0.39 0.52 -1.52 -1.65 -0.13 2.02 -2.89 1.63 -0.89 1.52 1.26 
+1.13 -0.89 -1 -1.75 2.75 -2.78 -1.36 0.39 -3.04 2.65 1.15 -2.9 -1.89 0.75 -3.14 0.63 S
+650.11 904.28 -2.65 1.26 -4.14 1.52 -3.28 1.13 -3.41 1.25 1.89 -1.39 2.78 -1.26 2.02 -0.24 
+0.37 -1.65 2.78 -1.13 1.37 -1.39 1.89 0.26 2.39 -1.89 1.39 0.24 1.39 -1.39 4.14 -1.5 
+2.91 -0.62 0.5 1.13 2.26 -1.75 2.38 -0.63 1.52 0.63 3.28 -1.02 -2.78 2.15 2.52 0.37 
+1.25 1.65 2.52 0.37 0.87 0.5 -1 1.39 -2.02 -0.24 -2.39 0.74 -2.52 1.29 -3.26 1.13 
+-3.54 1.63 -2.12 1.76 -1.89 1.91 -3.64 2.13 S
+675.39 918.88 4.14 -2.12 0.63 1.39 1.52 -0.39 1.63 -1.25 2.02 0.5 0.13 1.39 2 1.15 
+-1.37 1.75 -2.78 0.76 -1.63 -1.02 -3.14 0.89 -2.52 -0.76 2.52 -1.62 S
+678.54 919.54 0 -1.52 -3.15 0.87 S
+768.1 910.83 3.54 -1.13 3.25 -1.15 3.41 -2 -0.26 1.63 -2.25 1.25 -3.65 1.13 -4.03 0.26 S
+596.89 1304.12 2.76 -1.12 1.52 1 0.74 3.14 -3.25 0.76 0.63 -0.89 -0.63 -2.52 -1.76 -0.37 S
+568.71 1334.36 0.89 -2.52 -0.26 1 -0.62 1.52 S
+546.31 1394.45 1.25 -0.89 0.26 -3.02 1.26 -1.76 1.63 0.24 1 -1.49 1.26 -0.89 0.26 2.52 
+-1 2.15 -1.65 2.02 -1.49 1.76 -2.02 0.13 -0.76 -0.76 S
+541.54 1430.73 -0.13 -1.39 -0.76 -0.5 0.5 -0.89 1.39 -0.37 0.5 2.13 -0.11 1.75 -1.39 -0.74 S
+536.37 1436.63 2.02 -2.13 1.63 1.63 1.76 -1.89 2.02 0.5 1.89 0.52 S
+545.68 1435.27 1.25 -2.02 1.76 -2.52 -2.13 0.5 0.24 -2.52 1.39 -2.02 2.38 -2.28 0.26 -2.52 
+1.13 -1.63 1.13 -2.52 2.02 -0.89 0 -1.52 -1 -2.75 0.74 -3.54 2.65 -2.02 -0.5 -2.65 
+-1.89 -0.5 -1.62 -0.87 2.39 -1.89 2 -0.76 1.89 -1.39 1.52 -1.88 1.76 -1.39 1.76 0.13 
+2.02 -0.76 0.26 1.26 -1.02 0.63 -0.24 2.89 -1.52 1.9 -1.5 0.38 1.5 2.25 -1.26 1.65 
+-1.39 2.02 -0.74 3.41 -1.02 2.13 -0.63 2.65 -0.87 3.02 -1.26 2.41 -1.65 1.39 0 3.02 
+-0.74 2.26 -0.89 2.28 -1.52 1.39 -1 2.52 -1.63 1.5 -2.15 0.52 -1.75 1 -1.89 1.02 
+-2.38 0 -1.89 -0.52 S
+539.65 1438.02 -1.12 -2.02 -2.15 0.63 S
+560.92 1385.11 1.63 -3.77 1 0.63 1.89 -1.39 1.39 -1.5 1.89 -0.52 1.76 -1.89 0.26 -4.14 
+2.39 1.76 0.63 1.65 2.39 -0.26 -0.63 -1.52 2.25 -0.76 2.65 -0.37 2.02 -1.13 0.5 -2.91 
+2.38 1.78 -0.62 3.65 -2.89 2.88 2.26 0.52 -2.26 1.5 0.13 2.41 -2.02 2 -1.76 1.65 
+-2.52 1.76 -1.76 -0.24 -1.52 3.02 -2.26 1.52 -1.89 -0.63 1.89 -1.29 0 -2.75 -0.89 -2.02 
+0.5 -3.64 -2.26 -0.52 -1.89 1.25 -1.13 2.15 -1.63 1.76 -1.89 -0.64 S
+588.84 1364.97 1.5 -1.39 2.02 -0.52 1.63 -0.87 1.65 1 -0.76 2.28 -2.39 1.26 -2.38 1.39 
+-1.26 -3.15 S
+607.71 1342.67 -0.24 -2.15 1.23 1.15 S
+608.7 1341.67 1.15 -0.52 -0.26 1.89 -0.89 -1.37 S
+608.7 1341.67 -0.99 1 S
+607.96 1332.59 0.87 -2.78 0 1.13 -0.87 1.65 S
+568.58 1437.02 -0.87 -2.28 -1.78 -0.74 0.39 -3.9 -0.89 -3.67 1.65 1.52 0.24 2.65 1.13 2.02 
+0.89 3.64 -0.75 0.76 S
+571.09 1398.85 1.76 -1.26 1.89 2.02 -1.37 -1.02 -1.02 1.39 -1.26 -1.12 S
+571.59 1448.25 0.13 -2.02 2.15 -0.39 1 -0.87 -0.37 -1.52 -0.13 1.26 -3.15 1 0.37 2.54 S
+576.63 1445.07 0.13 -3.64 -2.38 -2.39 1.89 2.75 0.37 3.28 S
+574.61 1434.75 0.76 -3.91 -1.5 -2.76 S
+575.5 1426.82 -0.37 -3.9 S
+573.48 1419.88 -0.87 -6.04 S
+574.24 1412.2 1 -2.88 -2.39 -1.26 S
+577.39 1406.54 1.25 -1.52 S
+577.65 1400.37 2 0.37 1.78 -2.89 S
+555.12 1443.82 2.02 -0.87 S
+612.74 1486.92 1.89 -0.26 1.75 1.39 S
+641.3 1510.46 2.12 -1.26 2.15 -1.25 2.89 -0.37 -0.24 1.63 -2.02 0.39 -1.63 0.87 -1.88 1.02 
+-1.39 -1.02 S
+706.08 1534.14 0.63 -2.63 -0.37 -1.65 0.75 -2.02 1.39 -1.63 1.5 -1.12 0.5 2.25 -0.63 1.76 
+-0.73 1.89 -1.26 1.78 -1.78 1.38 S
+693.12 1518.4 -0.13 -2.02 0.52 -2.38 1.37 -3.04 1.26 1.65 2.4 0.23 -2.4 1.16 -1.5 1.25 
+-1.02 2.02 1.26 1.76 -1.76 -0.64 S
+739.17 1623.72 1.26 -1.52 3.41 -0.37 0.49 0.24 -0.62 1.26 -1.65 0.89 S
+742.05 1624.21 -2.88 -0.49 S
+743.58 1617.17 -3.52 -1.76 -1.02 -1.64 2.91 0.63 2.5 1.13 -0.87 1.65 S
+708.36 1595.38 1.25 -1.02 -3.27 -0.13 0.89 -1.26 1.89 0.26 -2.41 -1.65 3.64 1.65 1.02 1.52 
+-3.02 0.63 S
+687.35 1587.43 -0.14 -2.14 0.14 -2.26 1.88 2.26 -0.13 1.39 -1.75 0.76 S
+711.74 1514.75 -1.25 -2.4 2.78 -0.5 2.13 -2.02 2.14 -1.39 2.25 -1.39 1.65 -1.5 -1.15 -1.78 
+-2.5 -0.37 1.5 -1.52 3.27 1.65 1.63 -0.26 1.13 -1.26 -2.52 -2.12 2.41 0.37 -1.39 -2.15 
+1.75 -1 2.26 2.39 2.28 2.28 -1.89 0.37 2.52 2.14 -1.25 0.14 -2.52 -1.52 -0.13 1.26 
+1.63 1.39 4.17 1.26 -2.65 0.87 S
+729.99 1507.68 0.5 2.02 3.02 1.39 -0.86 1.65 -1.89 1.13 -2.28 0.76 -0.37 2.64 2.12 0.5 
+-0.99 1.89 -3.39 -0.39 2.89 1.91 2.13 1.13 3.04 1.63 2.63 2.14 -1.26 0.76 -2.89 0 
+-2.15 -1.02 -2.38 -1.63 -3.02 -1.76 -3.02 -2.41 -3.28 -1.63 -2.63 -1.39 0.63 -1 -2.65 -0.76 
+-2.15 -0.5 S
+745.96 1635.05 0.89 -2.65 -3.02 -1.62 1.13 -1.52 3.14 0 2.52 -0.24 0.63 -1.39 -0.89 -2.29 
+-1.26 -2.64 3.28 -0.37 0.63 2.64 2.13 2.13 1.39 2.41 1.25 3.15 1.89 2.88 2.89 2.02 
+-3.15 0.63 -2.88 -0.63 -3.78 -1.26 -3.52 -2.12 -3.28 0.87 S
+778.43 1629.12 -2.64 -2.25 1.52 -1.52 2.13 -0.23 S
+779.43 1625.11 2.78 1 1.36 1.76 -1 1.78 -4.14 -0.52 S
+797.55 1658.36 -2.65 -2.25 -3.02 -2.15 -2.39 -2.15 -1.52 -3.14 0.63 -2.15 0.13 -3.38 1 -1.26 
+-1.63 -3.4 1.63 -0.76 3.78 0.13 -2.13 -2.02 -1.65 -3.91 -4.27 -1.52 3.02 -0.63 -2.39 -2.64 
+-0.63 -2.89 -2.63 -2.14 -2.02 -1.89 -2.65 -0.13 -3.28 -0.24 -2.76 0.24 -2.02 -3.14 -3.02 0.5 
+-1.52 2.28 -0.5 3.02 -2.12 -0.76 -1.02 0.76 -2.88 -0.76 -1.89 -2.38 1.63 -2.65 2.28 -0.37 
+0.74 -2.15 -0.24 -2.65 0.13 -2.13 -0.26 -2.28 -2.39 -1.52 -0.76 -2.63 0.13 -2.02 0.63 -2.28 
+-0.89 -1.52 0.13 -2.52 0.5 -2.25 1.26 -1.89 2.02 1.63 S
+762.07 1592.34 0.63 2.52 0.89 3.04 0.74 2.52 1.52 2.26 0.37 -2.88 -0.37 -2.78 0 -3.02 
+2.02 -2.02 3.78 2.25 0.99 2.78 2.39 2.15 0.76 2.25 0.75 3.28 1.76 2.78 4.01 2.02 
+-0.37 -4.3 -2.39 -3.02 0 -3.02 3.02 1.49 2.65 -0.99 2.52 1.25 4.02 1.39 0.5 2.39 
+0.39 2.52 0.24 2.78 1.02 2.78 -2.02 2.13 0.76 3.28 2.75 1.78 2.52 -1.15 1.02 2.91 
+2.76 0.87 1.89 2.78 0.5 2.91 2.15 3.78 0.38 2.14 -0.76 2.26 3.04 1.52 1.75 1.26 
+-1.52 1.63 0.49 1.88 0 1.52 -2.75 0.63 -0.63 1.52 -2.52 0.63 3.38 0.63 2.65 2.02 
+3.02 0.63 1.39 1.13 S
+814.15 1651.43 -1 1.39 -2.78 1 -3.28 0.76 -3.25 -1.02 -2.78 -0.74 -2.52 -1.26 S
+798.54 1651.56 1.76 2 2.64 1.02 2.78 0.89 2.89 0.24 2.02 -0.13 2.39 -1.39 -0.39 1.91 
+-0.5 1.89 -1.89 0.87 -3.02 0.75 -5.77 -0.25 -3.91 -1 S
+814.15 1649.79 -2.25 -0.37 -2.65 -1.39 -0.26 -2.02 1.52 -0.86 0.37 -2.28 2.02 0.5 2.26 1.52 
+0.63 1.76 -0.37 1.88 -1.26 1.26 S
+818.92 1671.59 -1.25 -1.78 -1 -2.02 3.64 0.63 2.39 1.26 0 1.39 -3.78 0.52 S
+832.9 1672.85 -2.52 -0.13 -2.89 -1.65 0.63 -2.02 -1.64 -1.5 -2.75 -0.89 -2.91 -0.13 -3.38 -0.87 
+-1.26 -2.78 0 -2.26 0.13 -2.15 S
+816.3 1658.48 0.49 -2.14 2.52 -0.63 -1.02 -2.26 1.89 -1.65 2.91 0.26 2.52 0.76 0.87 2.52 
+-0.5 1.63 0.13 2.15 -2.15 1.63 0.39 2.52 1.63 2.02 1.39 -0.37 1.13 1.52 1.89 0.86 
+-0.13 1.89 1.76 1.65 0.89 2.02 S
+853.28 1673.85 -2.02 -1.13 -2.65 -0.89 -2.39 0.13 -3.14 -0.63 -2.39 -1.65 0.26 -2.52 2.65 -0.63 
+3.25 -0.11 1.88 -0.89 2.65 0.5 0.5 1.65 2.9 0.11 1.63 0.89 0.37 1.76 2.02 1.15 
+3.02 0.74 0 1.15 -3.15 -0.13 -2.39 0.76 -3.02 -0.26 S
+863.58 1671.59 -3.38 -0.89 -2.15 -1.52 0.39 -2.13 1.25 -1.25 0.5 -2.02 1.63 -1.88 -2.39 0.87 
+-1.75 1.89 -1.76 0.52 S
+855.92 1665.17 0.74 1.89 -3.75 0 -1.02 -1.52 -3.02 -0.63 -2.39 -1.02 -1.13 1.02 -4.17 0.63 
+-1.25 -2.28 -1.13 2.28 -2.76 -0.63 -1.02 -1.26 -1 1 -2.25 1.02 -2.78 -0.5 -0.24 -2.02 
+0.11 -3.04 1.39 -0.86 -0.13 -1.52 1.52 -0.89 -2.02 -1.25 2.52 -1.5 3.15 -0.39 2.14 2.41 
+2.75 -0.89 2.02 1 1.39 -1.76 3.51 0.39 3.28 1.13 3.52 0.38 2.52 -1.39 3.64 0 
+2.89 0.13 3.14 -0.37 4.04 -0.26 1.5 0.63 2.38 -0.24 2.15 0 1.26 0.63 0 1.26 
+0.89 1.37 -0.39 1.78 0.13 1.63 -0.76 1.39 -1.26 0.89 -0.13 1.39 -1.49 1.89 -2.65 0.63 
+-2.02 1.13 -1.5 0.76 S
+868.25 1669.57 -1.52 -0.26 -0.13 1.52 -3.02 0.76 S
+852.91 1677.5 -1.26 -1.63 3.02 1.13 -1.76 0.5 S
+849.5 1683.29 -1.52 -0.37 -1.5 -1.52 -1.89 0.76 -1.75 -0.76 -1.39 -1.89 -0.26 -1.26 -3.02 -1 
+1.02 -1.12 0.24 -1.52 0.13 -1.39 2.02 -0.13 1.76 0.5 2.52 2.28 -2.89 -0.13 -2.64 0.26 
+0.37 1 2.52 0.5 2.78 0.13 2.39 1.39 0.37 1.39 1.52 0.99 0.37 1.26 -1.13 0.63 S
+837.3 1674.21 -1.39 -1.99 -0.89 -2.15 1.52 -0.62 1.63 0.37 0.13 2.52 -1 1.88 S
+838.93 1682.92 -3.52 -0.37 -1.02 -1.39 2.52 0.63 2.28 0.13 -0.26 1 S
+831.25 1682.16 -3.02 -0.87 -2.39 -0.39 -3.14 -1.39 1.13 -1.62 S
+823.83 1677.89 -4.02 -1.39 -0.26 -2.78 3.41 -0.13 2.88 0.52 2.65 0.24 2.13 1.89 0.52 1.88 
+-1.76 0.63 -2.91 -0.11 2.78 1.26 2 1.13 0 1.13 S
+821.2 1681.54 -0.25 -1.39 2.52 0.89 -2.26 0.5 S
+805.6 1678.12 -2.15 -0.99 -2.75 -0.76 -0.13 -1.63 -3.02 -1.78 -3.52 -2 2.13 -1.28 1.13 -1.89 
+4.03 0.52 3.78 1.26 1.36 2.13 3.14 -0.87 3.41 1.39 -1.26 1.13 0.63 1.89 -1 1.26 
+-2.15 0 -3.41 -1.65 0.52 2.14 -0.76 1.13 S
+845.98 1690.47 -0.5 -1.63 -1.26 -0.89 -0.39 -1.39 1.02 -0.74 2 1.63 0.5 2.15 -1.37 0.87 S
+844.73 1692.36 -1.76 -0.5 -0.12 -0.76 2.25 -0.11 -0.37 1.36 S
+842.58 1690.61 -2.26 0 -1.39 -1.52 1 -1.62 2.91 -0.37 0.37 0.99 -0.37 1.26 -0.26 1.26 S
+832.14 1698.68 -1.39 -1.02 1.39 -0.76 2.25 -0.63 -0.63 1.52 -1.62 0.89 S
+840.19 1702.82 -3.38 -0.5 -0.62 -1.39 -1.65 -1.26 1.39 -1.63 1.75 -0.89 -2.25 -1.39 1.89 -1.75 
+2.52 0.13 1 -1.26 2.39 1 -1.26 1.13 1.26 1.64 -0.24 1.39 -0.89 1.5 -1.52 1.52 
+-0.37 1.76 S
+828.62 1697.03 -1.75 -1.63 -1.78 -1.15 1.25 -1.37 -2.75 -1.02 -0.63 1.65 -1.76 -0.52 -1.25 -1.49 
+0.13 -1.39 1.24 -1.26 0.89 -1.52 -1.25 -2.52 0.13 -1.52 2.89 -0.11 2.65 -0.39 1.52 1.52 
+2.63 1.75 3.54 0.5 -1.26 1.02 S
+833.03 1687.59 -1.89 0.87 -1.39 -0.87 -1.75 0.24 -2.52 -0.63 1.5 2.28 2.65 0.5 2.02 0.76 
+2.52 1.63 1.26 1.39 -1.89 1.02 -2.52 1.25 -2.39 1 S
+805.73 1701.2 -2.64 -1.78 -1.89 0.63 -2.78 -1.36 -1.89 -2.52 -0.87 -2.28 -2.78 -2.14 -0.74 2.14 
+1.13 2.39 0.76 2.02 -4.54 -0.37 -2.64 -2.15 -1.13 -2.38 -5.04 -1.26 -0.5 -2.41 -0.39 -2.88 
+0.89 -2.65 0.5 -2.14 1.89 -1.63 -2.75 -1.76 -2.28 -2.52 0.5 -2.02 1.89 -1.39 2.64 1.13 
+0.26 -1.76 3.28 0.24 1.5 2.91 2.26 2.52 2.91 1.76 3.88 0.13 3.91 1.25 2.89 0.64 
+3.04 -0.87 2.39 -0.52 2.12 1.25 0.39 2.15 -3.15 0.89 S
+808.75 1684.44 -3.14 0.74 3.02 2.28 -0.37 1.76 2.13 1.39 -1.62 1.88 4.14 0.5 0.89 1.52 
+-1.25 1.39 -0.39 1.76 -0.74 1.52 -1.89 0.13 -1.02 1.37 -2.76 0.52 S
+815.15 1709.63 -4.15 -1.52 -4.54 -0.63 0.14 -2.15 -0.5 -1.76 2.38 -1.62 3.91 -1.02 1 -2.15 
+0.89 -2 1 -2.02 3.14 1.75 3.52 1 1.52 2.28 3.02 1.89 -0.24 2.14 0.63 2.26 
+-4.3 -0.14 -3.01 0.89 -2.39 1.52 -2.02 1.25 S
+995.45 1807.88 -2.65 2.78 S
+965 1821.75 -2.15 0.89 -2.52 0 2.65 -0.89 2.02 0 S
+911.79 1827.67 -2.52 0.37 1.37 0.76 S
+903.73 1828.17 -3.41 -0.5 2.64 -0.39 0.76 0.89 S
+891.78 1825.91 -2.89 -0.52 S
+888.89 1825.39 -0.63 -0.87 S
+860.44 1819.36 -3.64 -2.28 -1.39 -0.76 0.52 -0.87 2.52 0.87 1.99 3.04 S
+853.64 1815.95 -3.25 -1.39 -2.52 -1.26 0.74 -0.89 3.91 0.89 -0.76 1 1.89 1.65 S
+891.38 1784.07 -0.5 1.26 -3.64 -0.73 -4.02 0.63 -3.27 -1.52 3.91 0.37 2.88 -0.62 4.64 0.63 S
+867.99 1793.64 -3.02 0.39 -3.02 -0.39 -2.26 -1.13 0.63 -0.87 2.52 0.37 2.63 0.76 2.52 0.87 S
+806.23 1785.72 -5.16 -0.26 -1.5 -1.76 0.11 -1.39 -2.52 -2.02 2.52 -0.24 2.29 0.74 -2.29 -2.25 
+2.65 0.13 1.39 2.13 1.13 2.02 1.39 2.91 S
+715.78 1736.83 -3.91 -0.24 -2.89 -1.52 -3.91 -0.87 -3.78 -1.52 -4.77 -2.78 4.02 1.25 S
+700.54 1731.16 2.91 1.65 1.76 -0.39 4.01 1.15 2.52 -0.89 1.65 1.89 2.39 2.26 S
+681.42 1720.21 -4.64 -2.39 -3.14 -2.52 -3.02 -2.65 -1.52 0 -2.39 -2.28 -2.52 -1.75 -1 -1.76 
+-1.65 -0.37 -3.14 -3.17 -2.12 -2.26 0.24 -1.52 3.78 2.52 4.03 3.15 4.02 2.64 4.27 2.41 
+2.65 2.76 3.02 3.28 3.28 2.78 -0.13 1.13 S
+845.98 1652.43 -1.13 -1.89 1 -1.12 -1.89 -1.13 -0.36 -2.02 -1.65 1.13 -2.02 0.5 -0.87 -1.5 
+-0.13 -1.89 -1.89 0.11 -0.76 -1.76 0.13 -2.39 2.14 -0.5 1.76 -1.65 1.5 -1.52 -0.5 -2.62 
+0.76 -2.02 -1.76 -1.26 -1.02 -1.88 -1.37 -2.65 -2.52 -1.89 -1.26 -2.28 -1.76 -1.75 S
+832.4 1620.45 -3.4 -1.89 -1.39 -2.02 -2.89 -1.52 -0.62 -1.49 1.63 -1.29 2.52 0.63 -2 -2.88 
+0.87 -1.89 -1.76 -2.39 -0.89 2.89 -1.89 1.52 -3.25 -1.89 -3.02 -2.02 -0.13 -2.78 3.15 -1 
+3.38 0.87 -1.75 -2.89 -3.78 -2.91 -2.52 1.65 -3.15 -0.76 -3.25 -2.15 -2.78 -2.26 -1.75 -2.52 
+-2.25 -2.15 -0.26 -3.4 -1.76 -3.02 -2.52 -2.65 -0.13 -2.25 -1.63 -2.02 -1.12 -4.54 -0.89 -1.78 
+-1.13 -3.38 -0.89 -2.91 0 -4.04 2.78 -2 1.63 -2.02 -0.13 -2.65 1.89 -3.14 2.28 0.11 
+2.75 1.91 1.89 2.39 2.25 2.15 2.91 1.75 1.39 3.64 3.25 0.63 3.41 1.65 2.25 2.12 
+1.89 2.29 1 3.77 S
+822.57 1571.94 1.89 -1.39 2.15 1.65 3.14 -0.26 3.15 -1.39 4.02 0.5 2.9 0.76 2.89 1.02 
+2.25 1.63 2.14 1.63 2.89 1.52 2.52 0.63 2.78 -0.87 3.26 0.37 3.04 0 3.12 0.5 
+2.65 0.63 2.91 1.13 2.89 1.15 2.02 1.39 -2.28 1 -2 1.89 -3.15 -0.63 0.63 1.25 
+2.76 0.63 0.63 2.64 2.26 0.26 -0.24 -1.78 -0.5 -2.12 S
+873.29 1585.68 1.5 -1.26 2.65 -0.13 1.13 2.39 0.89 2.02 -0.76 2.39 -1.12 2.14 -0.89 2.02 
+1.76 -1.52 1.89 -1.62 1.13 1.5 0.63 2.52 -1.36 1.15 1.76 0.63 1.39 0.5 2.25 -0.13 
+0.76 1.76 -1.65 1.25 4.27 0.39 1.39 1.89 -1.99 0.37 S
+888.89 1603.93 2.13 2.41 1 2.38 0.13 2.65 -2.02 1 0.89 1.64 2.02 0.88 2.39 -1.37 
+1 1.49 0 2.65 -0.37 1.75 1.63 2.28 0.39 2.02 1.76 1.25 1.25 1.76 1.89 1.89 
+2.13 1.89 2.15 1.39 3.38 2.28 -1 1.89 -2.64 1.13 -2.25 -1.26 -1 0.76 -1.78 -0.89 
+-2.13 -0.75 -2.65 -0.13 2.25 1.78 2.15 0.74 1 0.63 0.26 1.39 -1.76 0.25 -0.75 -1.25 
+-1.63 0 1.13 1.75 -3.78 1.26 1.89 0.39 2.02 -0.89 3.15 -0.26 2.25 0.63 -0.62 1.65 
+-1.52 1 0.13 1.39 -0.87 1.89 -2.64 1.13 -2.65 1.52 -3.02 0.13 -3.64 0.63 -3.14 -0.37 
+-2.39 -1.28 -1.76 1.65 S
+883.22 1650.67 -2.78 -1.39 -0.13 2.65 -3.88 1.63 -3.28 0.52 -1.52 -1.39 -2 -0.49 -0.63 1.25 
+-2.15 0 -3.28 0.11 -3.14 -0.5 1.39 -1.89 -1.63 -1.26 -3.91 -0.75 -2.75 1.89 -2.52 0.52 
+-2.15 1.26 -2.89 -0.39 S
+861.59 1560.59 1.63 -0.87 2.26 0.37 1.26 -1.13 -2.39 -1.39 -3.52 -0.99 3.39 -0.76 0.5 -2.91 
+-2.62 -1.76 4.41 -0.89 2.25 -1.89 2.89 -1.37 3.4 1.26 2.52 0 2.88 1.37 3.78 0.76 
+2.78 2.28 0.63 3.02 -2.14 1.65 0.5 3.02 -2.26 -0.13 -1.02 1.52 -1.89 -1.39 -2.13 -0.63 
+-1.39 1.13 -2.52 0 -1.39 -1 -1 1.5 -1 -2.52 -3.02 -0.24 0.87 2.88 -1.13 2.15 S
+868.12 1563.63 -1.52 0.87 -0.5 -1.26 -1.63 0.26 -0.89 -1.63 -1.99 -1.28 S
+903.73 1581.9 2.25 1.5 S
+892.27 1607.07 -0.76 -1.89 1.52 0 -0.76 1.89 S
+975.67 1191 -0.37 -2.91 -2.89 -1.88 1.5 -2.75 1.02 -2.78 1.89 -2.26 1.89 -2.64 2.89 -1.79 
+2.02 -1.75 3.77 -3.52 1.5 -2.28 2.02 -2.26 1.39 -2.15 0 -2.39 0.88 -1.25 0.63 -2.41 
+1.39 -1.75 1.39 -2.65 0.5 -2.78 1.39 -2.26 1 -2.65 -2.39 -2.91 0.89 -1.37 0.87 -2.65 
+1.52 -2.28 1.37 -1.76 0.52 -3.15 -0.63 -3.27 -1.02 -2.29 -1.37 -2.38 -2.4 -1.52 -2 -2.26 
+-1.02 -3.28 -1 -3.28 -1.02 -2.78 -0.61 -2.62 -1.52 -2.78 S
+989.65 1103.32 0 -2.78 -0.5 -2.65 -0.13 -2.25 0.38 -2.78 1.25 -3.02 1.89 -1.78 1.39 -2.13 
+1.26 -2.65 1.75 -2.64 0.76 -3.02 1.76 -2.15 0.89 -2.28 2.13 -2.13 0.76 -2.15 -0.5 -2.25 
+0.24 -3.04 -0.24 -2.64 0.37 -2.26 1.13 -3.02 -0.11 -2.64 0.24 -2.15 0.76 -2.64 0.63 -3.02 
+0.26 -2.65 1.63 -1.65 1.13 -2.12 2.65 -1.65 1.49 -2.12 0.63 -3.04 1.15 -2.13 0.49 -2.91 
+1 -2.14 1.63 -2.13 1.39 -2.91 0 -3.01 -1.5 -1.39 -1.26 0 1.76 -3.02 0.63 -2.02 
+-0.39 -2.14 1.89 0.89 1.89 -1.65 1.89 -1.63 3.02 0.13 1.89 1.26 3.14 0.63 3.41 0.13 
+1.89 1.26 3.15 0.63 S
+1040.61 1009.85 2.88 -0.39 2.39 1.02 2.78 -0.76 2.52 -0.39 1.89 1.39 3.38 0.26 1.65 1.39 
+2.89 0.13 2.64 0.5 2.52 1.89 3.25 1.89 2.52 1.39 2.02 1.88 S
+1073.94 1020.05 2.64 2.39 2 1.89 2.52 1.89 2.64 2.28 1.65 2.39 1.87 2.78 2.15 2.38 
+1.63 2.28 3.02 2.13 2.41 1.52 1.37 2.78 1.39 3.25 1.39 2.78 0.37 2.28 0.26 1.89 
+-1.63 0.76 2.26 3.28 2.88 1.26 1.89 0.99 3.65 1.63 2.91 1.28 1.89 1.5 1.76 2.91 
+0 2.76 0.76 2.41 0.5 3.27 -0.63 2.26 -0.39 3.64 -0.5 3.28 -1.63 1.65 0.76 2.88 
+2.52 2.02 1.87 1.65 2.02 2.65 2.39 1.13 S
+1124.5 1098.16 2.52 3.14 2.02 2.52 2.02 2.64 2.76 1.39 2.41 1.13 3.64 1 1.99 2.15 
+2.91 2.78 1.88 2.14 2 2.76 1.52 2.52 0.63 3.04 -0.63 3.28 0.13 2.89 -0.63 3.28 
+0.63 3.53 0.13 2.39 -0.39 2.89 0.5 3.04 0.13 2.89 -1.75 1.65 -1.76 1.13 -0.76 2.78 
+-1.39 3.28 -0.37 3.78 0 3.38 1.39 3.17 -2.28 2.63 -2.25 2.54 0.89 3.02 0.74 3.14 
+1.26 3.15 1.39 2.64 1.63 3.78 1.65 3.78 -0.12 3.41 2.25 0 2.15 2.91 2.12 2.39 
+1.16 3.28 1.62 2.26 1.63 3.41 2.52 3.02 1.13 2.78 2.02 2.52 2.15 1.89 2.02 3.02 
+1.87 2.54 2.52 1.63 S
+1174.07 1228.41 4.04 5.04 1.5 2.91 1.89 3.14 1.39 2.39 1.89 3.02 1.02 2.91 0.87 3.28 
+1.39 2.52 1.89 2.65 0.23 3.78 0.52 2.78 0.74 3.41 0.89 2.89 0.26 3.27 S
+1192.58 1272.37 1 2.26 0.75 3.04 1 3.52 -0.62 3.41 0.76 3.02 -0.37 3.54 -0.52 4.67 
+-3.14 0.11 -1.37 -3.15 -2.78 -1.89 -2.65 -1.88 -2.52 -0.24 -2.26 -1.79 -2.89 -0.87 -2.64 -2.9 
+-2.39 -1.14 -3.02 -0.36 -2.14 -2.15 -2.39 -1.75 -2.65 -0.13 -1.89 1 -2.26 2.02 -2.02 1.65 
+-1.89 1 2.28 2.15 -1.39 2.75 -2.64 1.78 -2.52 2.02 -2.13 2 -3.02 1.78 -2.65 2.39 
+-2.78 0.26 -3.25 0.73 S
+1135.59 1299.2 -1.78 2.65 -1.76 0 -1.76 2.15 -1 2.88 -1.12 3.28 -1.89 2.54 -1.78 2.13 
+-3.02 1.89 -2.76 0.76 -2.02 3.14 -0.89 2.28 -1.13 3.28 -0.24 3.02 -0.52 1.89 -2.13 2.02 
+-0.76 3.28 -1.89 0.63 -2.38 1 -1.89 1.02 -1.89 2.52 -0.87 1.88 -0.26 2.39 -2.02 1.52 
+-1.89 2.64 -1.76 2.13 -1.88 2.54 -1.5 2.25 -2.28 2.39 -0.87 2.28 -1.78 1.63 -1 2.28 
+-2.02 1.5 -2.12 2.02 -1.76 2.15 -1.15 2.25 -1.76 2.02 1.02 1.26 1.36 -2.13 1.89 -2.65 
+1.65 -1.52 1.26 -1.76 2.13 -1.52 2.39 -1.39 0.89 1.26 -0.63 2.28 0.26 3.64 0.63 3.67 
+0.74 -2.78 0 -3.02 S
+1091.67 1370.77 0.13 -3.04 2.26 0.5 2.14 -1.99 1.89 -2.02 2.25 -2.41 2.39 -2.52 2.02 -1.5 
+2.39 -2.52 1.52 -2.64 2.02 -2.52 2.63 -0.76 2.52 -1.39 2.4 -2.52 1.87 -2.52 1.15 -2.78 
+0.11 -2.02 1.02 -2.38 S
+1122.37 1335.75 1.26 -3.15 2.02 -1.65 1.26 -1.63 3.52 -0.13 2.64 -1.89 1.89 -2.52 1.87 -2.65 
+1.89 -2.52 1.78 -2.14 1.99 -1 2.29 -2.41 1.88 -2.64 1 -2.39 0.13 -2.52 1 -2.78 
+1.65 -3.28 1.37 -3.14 1.26 -1.26 0.13 -3.02 2.26 -2.52 2.15 0.13 2.39 1.13 2.52 1.13 
+2.25 1.75 0.76 2.28 2.15 0.63 2.52 0.26 2.38 1.13 1.39 2.02 1.5 2.64 2.39 0.74 S
+1177.84 1304.36 2.28 1.78 1 3.02 2.14 2.26 2.52 2.02 2.13 1.78 2.15 1.76 2.13 1.89 
+2.02 1.76 -0.5 2.02 0.24 2.28 2.02 2.39 2.02 1.89 1.89 2.39 2.13 1.39 2.02 0.26 
+1.52 2.26 -0.13 3.28 1.88 1.88 1.76 1.26 0.76 1.52 -0.13 3.28 0.89 2.13 1.76 1.28 
+1.5 1.89 -1.63 2.13 -0.63 3.15 0.26 3.03 1.75 0.76 0.24 2.89 0.26 2.52 0.87 2.28 
+-0.11 3.38 0 3.54 -2.39 0.63 -2.41 1.76 -2 1.89 -2.78 -0.13 -2.38 -0.5 -2.65 0.5 
+-2.52 1.02 -2.76 1.63 -1.26 3.41 -1.26 2.91 -0.26 1.63 -1.26 0 0.13 -2.26 -1.13 -2.28 
+-1.26 -5.03 S
+1188.67 1380.84 -1.39 -2.91 -0.24 -2.89 -1.52 -1.26 -2.78 -0.63 -2.13 -0.89 -0.89 -2.02 -2.76 -0.63 
+-1.26 1.26 -1.89 -0.74 0.37 3.52 -0.63 3.02 -1.49 2.78 -1.76 1.39 -0.89 -0.89 0.5 -2.52 
+-0.5 -3.02 -1.25 1.25 -2.39 1.76 -0.5 2.52 S
+1165.28 1379.95 -1.65 2.14 -2.52 1.26 -2.62 1.63 -2.78 1.65 -2.02 2.02 -2.12 2.52 -1.76 2.52 
+-2.15 0.26 2.02 1.89 -1.88 2.02 2.02 0.74 0.24 3.41 2.02 -0.76 2.02 -0.87 1.26 1.63 
+2.25 -1.39 2.78 -2.64 2.89 -2.13 1.89 -2.65 2.02 -1.88 3.14 0.24 2.25 -0.74 2.76 -1.65 
+2.41 0.5 2.13 -1.39 1.89 1.39 2.39 -0.63 1.75 2.52 1.39 1.78 S
+1187.29 1393.32 1.63 2 2.02 0.89 2.15 -1.25 1.49 -2.26 1.89 -2.54 2.91 0.89 2.63 0.63 
+2.78 0.26 2.26 0.5 2.02 0.99 2.64 0.76 1.89 0.5 2.76 0.89 2.15 1.76 1.76 1.52 
+2.25 1.26 0.89 1.76 2.13 0 1.78 0.52 1.75 1.49 1.39 1.52 1.63 1.63 2.13 0.63 
+1.89 -1.37 2.02 -0.65 1.76 -2.13 1.52 -2.15 2.39 0.13 2.25 -0.5 2.52 -1.65 2.78 -0.76 
+2.13 1.39 1.78 2.52 0.74 -3.39 -1.36 -2.28 -2.28 -1.52 2.39 -2.38 2.14 -1.14 2.75 -1.52 
+2.52 -0.24 2.28 1.39 1.5 2.25 0.5 3.15 -1.26 3.64 -0.61 3.04 1.13 0.13 1.13 -3.28 
+1.5 -2.28 2.15 -1.89 S
+1270.45 1396.2 1.25 -3.77 1.13 -3.28 1.89 -2.65 1.39 -1.13 0.24 -2.52 2.15 -3.14 2.15 -3.28 
+1.5 -2.91 1.76 -3.38 1.76 -2.28 2.15 -2.52 2.52 -2.28 2.52 -2.26 1.39 -3.02 1.89 -2.78 
+1.75 -2.91 1.89 -3.28 1.89 -2 2.26 -1.89 1.76 -2.15 1.75 -2.78 S
+1307.42 1340.02 1.65 -2.88 1.89 -3.41 1.75 -3.54 2.13 -1.89 2.02 -1.39 2.02 -0.11 1.13 2.75 
+-0.37 4.43 1.13 2.75 1.5 1.65 -1 3.28 0.26 4.14 1.89 1.39 -1.26 3.91 -1.26 2.52 
+-1.15 3.28 0 3.54 -0.24 4.02 -1.13 4.03 -1.78 3.54 -1.76 3.64 -1.89 3.41 -0.74 3.02 
+-0.12 3.41 2.25 1.13 -0.63 3.14 1.02 1.52 S
+1314.73 1391.3 1.5 1.88 0.13 2.39 -0.89 2.91 0.39 1.88 0.64 2.89 -0.14 3.54 0.38 2.64 
+0.75 2.39 0.37 3.41 -0.24 3.64 -0.39 2.91 0.25 3.38 1 1.89 1.02 2.65 -0.5 3.67 
+-0.63 3.38 -1.39 1.89 -0.76 2.65 0.89 2.64 0.5 2.39 -0.76 2.64 2.65 -3.14 0.87 1.89 
+1.02 2.28 1.13 2.13 1 2.28 -0.37 3.28 -0.13 2.64 0 3.78 2.52 -1.39 2.02 -2.02 
+1.89 -2.25 2.02 -2.02 2.5 -1.39 2.65 -1.26 1.89 -1.13 0.89 1.13 2.25 -1.76 0.5 -2.28 
+2.28 -1.75 0.87 1.25 2.28 -2.78 2.5 -3.14 2.41 -3.52 1.63 -4.54 1.26 -3.91 2.26 0.11 
+1.13 0.65 1.15 1.5 S
+1359.89 1433.62 -0.26 3.41 0.13 3.28 0.37 3.52 -0.75 2.91 1.39 0.13 2.38 -1.65 2.28 -2.65 
+2 -3.14 2.4 -3.64 2.13 -2.78 2.39 -3.41 2.9 -2.88 2.39 -3.54 1.25 -5.04 2.26 -2.65 
+1.39 -3.02 0.24 -3.28 1.65 -3.64 1.76 -4.3 1 -5.28 1.39 -3.67 1.65 -2.52 0.24 2.15 S
+1392.47 1391.93 2.38 -1.65 2.39 -2.52 1.78 -1.26 1.89 -1.39 1.24 -1.39 1.02 -2.12 1.13 -3.15 
+1.76 -4.29 1.52 -1.76 1 -4.17 2.15 -2.75 2.25 -1.89 1.39 -3.66 2.25 -0.87 1.65 -1.52 
+2.13 -0.25 1.76 -0.63 1.52 -0.87 2.25 2.65 -1.89 4.14 -2.25 3.67 -1.76 1.49 -1.15 4.04 
+-1.23 4.04 -1.26 4.01 S
+1416.38 1379.82 -1.39 4.04 -2.28 2.64 -1.99 1.02 -2.02 1 -2.14 1.13 -2 1.89 -1.89 -1.39 
+-1.64 0.65 -2.13 3.77 -1.89 3.15 -1.89 1.25 -2.28 4.67 -1.13 -2.41 -1.89 3.04 -1.75 4.27 
+-1.39 4.79 -0.5 3.39 -1.13 4.29 -0.87 3.52 -2.28 4.8 -1.89 4.54 0.5 2.75 1.78 0.76 
+2 -4.14 1.52 1.39 1 1.63 2.52 -1.39 1.39 0.13 1.76 -1.39 1.88 -2.39 2.02 -2.02 
+2.12 -0.89 1.39 2.41 1.76 -1.52 1.76 0.76 1.26 -4.41 1.65 -3.78 1.75 -2.54 0 4.29 
+-0.26 4.14 0.89 2.78 -0.63 4.54 -2.15 4.54 1.26 2.39 0 3.66 -0.11 3.78 -0.12 3.64 
+0 4.04 -1.02 3.27 S
+1405.92 1460.33 -1.63 3.15 -2.52 5.3 -1.75 3.02 -2.15 3.64 -2.12 3.28 -2.52 2.78 -2.78 3.41 
+-2.38 1 -2.39 1.39 -2.13 0.5 -2.65 0.63 -2.38 1.39 -2.52 1.02 -1.65 1.76 -2.13 0.5 
+-3.28 2.39 -1.89 4.04 -1.75 3.41 -0.76 4.41 -1.63 3.78 -1.02 3.91 -0.5 3.78 -0.63 3.41 
+-0.24 3.4 0.5 2.26 S
+1361.02 1527.84 1.76 0.26 0.36 1.5 2.02 -3.02 1.26 -1.12 2.25 -1.89 0.39 1.52 -0.5 2.25 
+-2.39 1.52 -1.52 2.89 -0.37 3.41 0.11 3.15 -0.87 3.91 -0.13 2.88 -0.5 3.54 -2.64 3.41 
+2.02 0 -2.65 3.91 2.65 -0.13 -2.15 4.14 0.13 2.54 -0.26 2.89 -0.37 3.01 -1.25 4.04 S
+1358.38 1572.44 -1.89 4.54 -1.5 3.54 -1.88 4.02 -1.52 3.17 -2.02 1.89 -0.11 2.52 -2.52 3.28 
+-1.65 3.02 -2.02 3.14 -2.76 3.54 -2.02 2.25 -2.52 1.76 0.25 1.26 -2.28 3.41 -2.75 3.41 
+-2.78 3.4 -2.39 3.02 -0.24 1.75 -1.76 2.02 -1.52 0.75 -3.28 3.28 -0.24 1.26 -3.91 3.14 
+-1.63 1.52 -0.13 -1.65 -0.75 -1 1.13 -3.28 -0.76 -0.89 -1 2.91 -1.89 2.38 -1.39 2.39 
+-1 2.52 -2.02 1.02 -2.13 -1.02 -0.63 2.78 -2.52 1.02 -1.76 -0.65 -0.63 -0.87 -2.65 1.26 
+-2.64 1 -2.39 0.89 -3.15 1.25 -0.99 -1.75 -1.15 -1.65 -2.89 2.78 -2.52 2.52 -2.75 3.54 
+-2.15 3.28 -2.88 2.12 S
+1271.83 1658.22 -2.02 3.67 -2.38 3.14 0.75 1 -3.77 2.78 0.13 -1.89 0.74 -2.28 0 -1.62 
+-1.26 -0.63 1.76 -2.78 2.02 -2.38 1.89 -2.02 0.5 -1.89 -1.26 -0.89 -2.62 1.13 -1.15 -1.26 
+-1.24 -0.87 -1.89 -0.39 -2.28 1.64 -2.52 2.52 0.76 1.25 -1.26 2.78 -1.89 1.89 -2.39 1.89 
+-2.25 2.88 -1.78 2.65 -3.26 3.04 -2.91 2.76 S
+1242.25 1674.35 -0.37 2.64 2.26 0.13 3.28 -2.65 2.39 -2.52 1.89 -1.52 1.75 0.39 3.41 -3.54 
+-1 2.02 -2.41 3.02 -2.88 2.52 -1.89 3.04 -2.02 2.64 -1.5 2.75 0 2.15 -0.13 1.65 
+0.5 0.99 3.78 -2.52 3.14 -2.02 3.41 -2.39 1.63 1.39 -1.89 3.65 S
+1255.6 1686.2 1.13 1.39 2.52 -0.5 1.75 -3.04 3.41 -0.24 3.38 -0.76 3.64 -3.41 3.41 -1.63 
+2.88 -0.52 -3.38 4.04 -2.39 3.4 -2.28 3.91 -3.02 3.64 -3.38 2.52 -3.15 1.78 -3.41 1.37 
+-3.28 1.02 -3.02 0.63 -2.02 -0.39 -1.5 -0.63 -2.26 0 -1.39 -1.13 -0.5 -1.5 -2.64 1.63 
+-1.39 -0.13 -1.76 2.39 -2.02 2.28 -2.89 2.78 -3.51 3.02 -2.15 2.15 -3.41 1.13 -1.5 0.13 
+-4.66 3.15 -2.62 2.78 -2.78 1.26 -0.87 1.36 -3.77 2.15 -2.39 1.39 -1.65 2.39 2.26 -0.5 
+-0.5 2.78 -3.14 3.02 -4.02 2.78 -3.77 3.02 -5.04 2.64 -3.28 1.13 -4.91 2.91 -5.27 2.75 
+-4.78 2.41 -4.17 1.76 S
+1166.14 1750.7 -3.91 1.52 -4.51 1 -4.54 1.89 -4.9 1.89 -5.54 2.28 -3.77 0.5 -3.15 0.37 
+-3.64 -0.11 -2.78 -0.39 -3.26 0.13 -3.54 0.5 -3.64 0.76 -2.88 0.63 -0.63 -0.89 -2.38 -0.37 
+-3.41 0.5 0.52 -1.89 0.11 -1.52 -1.26 -0.37 1.15 -2.02 2.13 -1.89 4.77 -1.39 3.91 -2.52 
+-3.14 0.89 -2.52 -0.26 2.28 -1.63 3.75 -1.02 -2.63 -0.13 -2.52 -0.11 S
+1116.21 1747.05 2.65 -2.15 0.73 -1.89 -1.37 -0.26 -3.53 1.89 -4.41 1.65 -4.02 1.63 -4.41 1.52 
+-4.67 1 -3.52 1.02 -3.91 1.25 -3.14 1.13 -2.89 0.5 -3.14 0.52 -3.39 1.13 -2.78 0.37 
+-3.38 1.02 -3.54 2.02 -3.02 2.13 -2.89 1.89 S
+1061.61 1763.41 -0.26 1.02 -3.14 0.63 -2.26 2.25 -2.88 1.26 -1.76 1.39 -1.15 -0.13 -1.49 -0.37 
+-2.15 0.76 -1.39 1.63 -2 1.39 -2.02 0.63 -0.13 1.26 3.28 -0.5 0.24 1 -2.39 1.26 
+-4.14 1.15 -2.26 0.37 -2.15 1.39 -4.77 1.63 0.24 -1.13 2.14 -1.25 -3.41 -0.76 -3.52 -0.37 
+-4.01 0.24 -3.65 -0.24 -3.67 -0.39 -4.27 0.89 -3.52 0.89 -1.89 1.26 -3.52 0.5 3.64 1.26 
+0.88 1.13 0.13 1.25 -4.27 0 -3.65 -0.24 -3.14 -0.39 -2.75 0.39 -1.26 -1.25 -2.41 -1.15 
+-4.78 0.63 -0.75 0.76 3.14 0.25 2.02 1.52 2.15 1.75 2 0.76 3.65 -0.39 3.77 0 
+2.39 0.63 3.9 0.39 S
+1004.36 1788.37 4.78 0.24 3.14 0.63 4.16 0.13 4.64 0.13 4.04 -0.5 2.76 -1.16 0.63 1.16 
+3.02 0.5 3.53 -0.76 6.29 1.52 2.76 1.26 1.52 1.13 1.36 1.39 1.02 1.25 1.76 1.63 
+2.13 1.52 0.76 1.89 1.76 1.25 1.89 0.89 0.52 1.13 -4.66 0.76 -4.78 0.24 -4.91 -0.37 
+-3.02 -1 -4.29 0.24 -3.64 1.39 -1.13 -1.12 -2.26 -1.13 -3.64 -0.13 -4.17 0.87 S
+1020.33 1803.34 -2.12 1.02 -2.89 -0.12 0.63 -1.76 -1.25 -1.52 -2.91 -0.63 -2.89 0.13 -1.13 1.39 
+-2.52 0 -0.75 -1.65 1.39 -1.13 -1.26 -1.13 -3.54 -0.62 1.89 -1.52 2.65 -0.13 -0.63 -1.5 
+-3.02 -0.62 -3.77 -0.63 S
+998.2 1792.91 -2.25 -1.02 -1.76 -1.13 -3.91 0.37 -2.02 1.15 -3.28 -0.52 -3.76 0.26 1.37 1.89 
+-3.77 -0.75 -3.39 -0.24 -3.41 0 -3.64 0.99 -2.39 1.39 -1.5 1.39 -2.28 -1.52 -3.9 -0.37 
+-3.88 -0.75 -3.54 -0.76 -3.52 -0.89 -3.02 -0.11 -3.41 -0.89 -3.75 -0.37 -3.14 -0.89 -4.67 0.26 
+-3.14 0.99 -2.75 -1.52 1.63 -1.26 1.52 -2.02 0.87 -1.89 0.76 -1.25 3.02 -0.13 -0.13 -1.5 
+-4.14 0.37 -3.27 -0.87 -1.5 -0.52 S
+922.22 1780.79 -1.13 -0.5 -1.52 -1.89 2.39 -1.26 -3.14 -1.26 -0.63 1.52 -1.13 1.63 -2.88 0.25 
+-2.28 -0.75 -3.52 0.37 -0.89 1.65 -2.89 0.76 -4.14 0.87 -3.78 0.39 -0.36 -1.78 S
+896.31 1780.79 -1.65 -1.36 0.63 -1.91 -3.77 -0.5 -1.12 -1.39 -2.13 -1.37 4.01 -1.02 3.28 -1.26 
+4.91 -0.13 4.14 0.39 2.02 -1.52 2.76 -1.13 3.53 -1.13 3.78 -0.89 2.76 -1.26 2.78 -1.26 S
+922.22 1765.06 0.63 -0.39 3.15 -1 3.38 -0.76 3.41 -1.12 4.14 -0.26 3.52 -0.63 3.54 -0.76 
+3.64 -0.74 0.87 2.26 -0.5 1.75 1.89 0.76 2.65 0 0.13 -1.39 2.52 -1.13 -0.39 -1.26 
+-2.52 0.37 -1.13 -0.87 2.89 -1.13 2.14 1 2.26 0.63 3.27 -1.39 4.14 -1.25 4.91 -0.89 
+4.04 -1 2.26 -1.76 -2.52 -1.13 -0.5 -1.78 1.26 -1.5 2.88 -1.26 3.15 -1.39 3.77 -0.76 
+2.39 -0.89 2.65 -0.76 S
+990.15 1744.64 -1.26 -1 0.76 -1.52 1.89 -0.87 0.37 -1.39 -1.76 -1.76 1.89 -1.65 3.15 -1.62 
+1.75 -2.28 2.02 -1.63 2.02 -1.64 2.52 -2.13 0.86 1.37 2.28 -1.5 2 0.13 1.25 1.13 
+1.26 1.5 2.28 -2 3.64 -2.28 0.37 -1.39 1.76 -0.86 2.28 -0.26 0.37 -1.52 -1 -1.89 
+2.88 0.26 2.76 0.38 3.14 -0.5 0.26 -1.52 -1.26 -1.88 -2.14 -1.63 -3.52 0.37 -3.39 -0.37 
+-1.52 -2.28 0.89 -2.39 0.74 -2.89 1.78 -2.28 2.39 0.13 1.5 0.99 1.89 -1.62 1.26 -2.64 
+0.26 -2.15 -2.91 -0.12 1.15 -1.76 -0.12 -1.89 1.25 -1.39 1.89 -1.5 -3.28 -1.26 S
+1026.75 1691.62 -2.64 0.63 0.26 -1.64 S
+1024.37 1690.61 1.39 -0.63 0.99 1.65 S
+1026.75 1691.62 2.65 0.38 0.5 -1.26 -0.63 -1.13 -0.63 -1.39 2.15 -0.89 1.26 0.89 1.88 -1.76 
+1.63 -1.78 0.37 -1.5 -3.02 1.13 -1.63 1.52 -3.54 1.76 -2.88 1.63 -3.65 1.78 -2.88 1.25 
+-3.41 -0.13 -2.65 -0.5 -1.63 -1.39 -0.5 -1.39 0.13 -1.75 0.63 -1.52 1.75 -0.39 0.5 -1.5 
+-3.78 1.13 0 -1.52 0.5 -1.89 -2.88 1.89 -1.63 -2 2.62 -1.65 3.15 -1.63 3.54 -0.26 
+0.24 -2.15 2.25 0.26 1.39 -3.28 -2.26 0.63 1.76 -2.78 0 -1.63 2.15 -1.65 1 -2 
+1.39 -2.54 1.89 -2 2 -1.65 2.28 -0.63 2.88 -0.13 0 -2.38 0.5 -2.15 S
+1032.16 1653.69 -0.11 -2.39 -0.39 -2.28 4.04 -0.74 3.14 -1.15 1.89 1.39 3.02 -0.13 0.37 -2 
+-3.14 -0.39 -2.26 -0.86 -0.63 -1.28 -2.02 -0.37 1.13 -1.52 2.91 0.75 0.63 -1.12 -2.02 -0.5 
+0.37 -1.52 2.91 -0.5 2.49 1.26 2.02 0 -2.25 -1.65 -2.15 -1.63 -3.02 1.39 -2.25 1.63 
+-3.28 1.02 -2.76 -0.26 0.74 -0.87 2.14 0.5 2.26 -0.89 1.65 -1.52 0.24 -1.63 2.52 -2.26 
+2.64 -0.13 2.89 -0.52 2.02 -1.89 2.89 -1.76 3.64 -1.52 2.02 2.02 0.63 -2.02 2.89 -1.75 
+3.78 -1.26 1.65 -2.64 1.88 -2.13 0.87 -2.64 0.39 -2.28 -3.64 -0.24 -0.39 3.15 -1.13 2.13 
+-1.76 2.41 -2.52 1.39 S
+1059.09 1624.48 -2.02 1.89 -3.38 -0.13 -2.9 1.5 -3.39 2.02 S
+1047.39 1629.75 -2.91 1.52 -3.02 1.52 -3.26 0.11 -2.02 2.02 -2.15 1.78 -2 1 -2.65 -1.13 
+-1.26 1.13 -2.38 0.37 0.11 -1.76 2.02 -1.89 1.88 -1.89 2.78 -1.75 1.89 -2.02 0.63 -2.65 
+2.26 -1.52 2.78 -0.74 2 -2.02 1.76 -1.15 2.02 0.63 3.41 -1 2.13 0.13 2.28 -2.41 
+-2.39 -0.24 -2.52 0.24 -2.28 -0.87 -2.52 -0.39 -1.63 -0.87 -3.14 -0.13 -2.02 -1.26 -3.64 -0.75 
+-3.64 0.39 0.99 -1.78 2.15 -0.37 2.52 0.24 2.26 -0.87 2.38 -0.5 0.52 -1.65 -0.52 -1.13 
+1.79 -1.39 -1.52 -0.5 -2.88 2.15 -0.52 -1.65 0.26 -2.52 S
+1037.33 1604.19 -2.02 -0.89 -1.12 -1.5 1 -1.78 -2.76 0.39 -2.52 2.02 -0.26 -2.02 -0.37 -2.14 
+-1 -1.89 -0.26 -1.89 -0.89 -2.28 -0.87 -1.63 2.38 -2.65 -0.5 -2.02 -1.88 -1 -2.26 1 
+-2.28 -0.24 -0.63 2.52 1.76 1.5 -2.39 1.39 -2.02 0.63 -2.12 -1.13 -2.89 -0.5 3.25 -1.02 
+2.28 -2.52 1.26 -2.64 1.88 -0.11 2 -2.28 0 -2.02 -2 -0.14 -2.4 -0.5 -0.11 -2.25 
+-1.15 -2.15 -0.63 -2.26 2.41 -1.52 2.88 -1.89 -2.88 -0.76 -2.41 0 -2.88 0.36 -2.13 -0.23 
+0.11 -2.02 3.04 -1.39 1.76 0.76 1.5 -2.39 -2.89 -1.15 -3.52 1.02 -3.28 0.37 -1.52 2.39 
+-1.12 2.02 -1.5 2.41 S
+1005.38 1570.18 -3.54 1.25 -2.52 0.63 -2.63 1.89 2.89 -0.89 3.02 0.13 2.88 -0.37 S
+1005.49 1572.83 2.28 0.24 2.39 0.5 2.75 0.13 2.28 1.52 1.26 2.15 0.24 2.13 -1.75 2.28 
+-2.13 1.63 -3.04 0.76 -2.75 0.26 -3.02 0.74 -3.15 0.76 -3.02 0.26 -3.02 -0.26 -3.04 -0.5 
+-1 1.52 -2.39 0.11 -1.13 -1.26 -2.65 -0.5 -3.27 0.89 2.64 0.36 1.26 2.28 -2.65 0.64 
+-2.62 0.49 -2.91 0 -0.37 -3.27 -1.52 1.89 -0.99 -2.14 -1.26 2.9 -1.26 -1.25 -0.26 -1.89 
+-2.39 0.75 -1.39 -1.64 -0.74 -2.39 -2.39 -1.52 -2.52 -0.5 -0.89 -2.78 -2.02 -1.26 0.5 -1.63 
+1.39 -0.26 -1.5 -2.02 -0.63 1.65 S
+958.83 1574.59 -1.15 -1.52 -0.11 2.65 -1.39 -1.89 -1.63 -1.63 1.63 -1.02 -2.78 -1.39 -1.26 -2.25 
+2.02 2.02 2.15 0.73 2.52 0.76 -1.89 -2.88 -0.26 -2.29 -1.39 -2.38 -0.62 -2.28 -0.37 -2.26 
+-0.49 -2.25 -0.5 -2.78 -1.89 -1.89 -1.15 -3.28 -1.13 -2.28 -1.26 -2.38 -1.75 1.25 -0.76 -2.39 
+-1.13 -1.75 -2.75 -0.63 -1.52 -2.28 -1.75 -1.89 -1.89 -1.89 1 -1.76 -1 -1.78 0.63 -2.13 
+0.37 -2.28 1.65 -2.15 -0.76 -1.88 0.63 -1.63 2.26 0.5 -1.37 -1.88 -0.13 -2.15 1.5 -1.37 
+2.64 -1.15 2.78 -0.24 2.39 1.49 1.37 1.89 2.02 2.41 1.52 0.13 0.75 1.89 1.63 -1.15 
+1.39 -3.02 1.5 -2.52 S
+959.07 1515.75 1.52 -3.02 1.5 -2.52 2.41 -2.02 -0.52 -1.89 1.52 -2.15 0.26 -1.76 2.26 0.24 
+1.89 0.26 S
+969.9 1502.91 -0.62 1.76 1.25 2.39 2.13 0.26 1.89 0.26 0.63 3.28 -0.24 3.15 0 2.38 
+-0.63 2.65 0 1.75 1.89 2.15 1.89 1.76 -1.26 0.63 1.37 1.64 0.26 1.37 -1.13 1.64 
+-2.52 1.39 -2.39 1.5 -0.76 2.15 -0.26 2.64 -0.5 2.65 0.5 1.52 1.02 2.89 1.5 2.02 
+1.39 1.63 1.63 1.65 0.26 1.89 1.13 2.14 -2.12 0.88 0.63 1.89 -0.62 1.25 1 1.15 
+0.37 1.89 2.02 0 1.52 0.37 1.49 0.89 2.65 -1.26 1.13 -2.52 -1.26 -1.26 -0.36 -2.78 
+-1.26 -2.64 S
+983.48 1551.91 -1.26 -3.02 -1.39 -2.65 -0.13 -2.78 1.02 -2.52 2.13 -2.39 -0.13 -2.78 0.63 -1.64 
+2.52 -0.87 1.89 -1.02 2.91 -0.37 2.52 1 2.25 1.52 2.15 1.52 2.25 1.49 3.15 0.89 
+3.02 -1.52 1.63 0.89 2.28 -1.75 -3.28 0 -1.52 -2.28 -0.63 -1.63 -3.14 -0.76 -2.89 0.13 
+-2.52 -1.02 -2.12 -1 -1.52 -1.75 0.76 -2.15 1.5 -2.02 1.89 -0.13 1.02 -2.52 0.87 -2.64 
+-1 -1.63 -1.89 0 -1.62 1.63 -2.02 0.89 -2.15 -0.89 -0.24 -2.89 -0.5 -1.89 1 -3.04 
+1 -2.64 -0.24 -2.89 -2.15 -1.75 -0.12 -2.41 -1.37 -1.13 -2.02 -0.37 -1.75 2.52 -2.78 -0.89 
+-2.52 -1.26 -1.89 -2.15 S
+977.06 1497.35 -2.63 -0.73 -2.64 -1.79 -1.76 0.26 -2.14 0.63 1.26 1 -1.52 1.78 -1.12 -1.52 
+-2.13 -0.76 -1.39 -1 -1.52 -1.52 S
+961.46 1493.71 -2 -0.13 0.37 1.78 -3.39 1.13 -0.13 1.26 -2.15 1.25 0.76 2.78 0.99 2.76 
+2.02 1.15 -0.26 1.76 -1.87 -0.26 -0.26 1.89 0.37 2.28 -0.24 1.75 -2.02 -0.63 -1.13 -1.89 
+-2.28 -0.63 -1.26 -1.52 -0.24 -1.76 0.24 -2.64 0.52 -2.26 1.89 -1.25 0.37 -2.65 1.26 -1.78 
+-1 -1 1.37 -1.25 -1.37 -1.39 0 -1.89 -1.89 0.89 -2.38 -0.13 -1.02 -1.52 -3.14 -0.13 
+-2.02 -1 0.13 -2.28 1.65 -0.37 0 -1.39 -1.39 -1.39 -1.52 0.76 -0.24 2.78 S
+940.21 1486.79 -1.13 -0.5 -0.39 -2.28 -0.87 -1.89 -1.15 -1.89 -1.37 -1.75 -2.14 -1.02 -2.39 -1.39 
+-2.15 -1 -0.5 -1.76 -0.23 -2.41 -1.65 -0.87 -1.89 -0.49 -1.5 -0.89 -0.63 -2.28 -2.28 0.52 
+-1.89 -0.52 -0.87 2.28 -2.28 0.13 1.26 -2.78 0.52 -3.28 -2.28 0 -2.52 -0.36 -1.26 1.88 
+-2.52 -0.39 -2 -0.87 -2.28 -0.39 0.13 -2.76 1.65 -1.02 1.87 0 2.28 -1.52 2.64 -0.37 
+0.63 -1 1.5 -1.88 -0.37 -1.39 1 -1.39 2.02 -1.39 1 -2.26 -0.37 -3.28 -0.39 -3.16 
+-0.37 -2.26 -0.75 -3.28 -1.13 -1.39 -2.12 -0.5 -2.41 0.63 -3.38 0.49 -3.65 -0.87 -2.64 1.13 
+-3.15 0.5 -3.14 -0.26 S
+894.66 1435.37 -2.75 0.13 -3.02 1.65 -1.65 -2.29 -2.52 -0.24 -1.13 -1.39 1.39 -3.27 -0.5 -2.39 
+0.11 -1.78 0.52 -2.89 -0.62 -2.28 -0.89 -2.76 -0.76 -3.17 S
+882.83 1414.71 -1.62 -1.88 -0.63 -2.76 1 -1.88 1.75 -0.13 -0.62 -2.78 -0.11 -2.78 -1.02 -2.26 
+2.64 0.24 2.25 -0.62 2.02 0.89 1.89 -0.13 2.14 -1.5 0.74 -1.39 1.26 -2.91 2.28 -1 
+2.38 2.25 2.39 0.89 2.65 0.37 2.75 -0.11 2.64 0 2.65 -0.13 1.63 2.38 2.26 2.78 
+2.28 0 0.76 2.26 1.5 1.89 2.64 1.79 -2.26 1.88 -0.39 2.39 1.52 2.25 2.13 2.78 
+2.15 3.28 2.12 1.02 2.52 0.87 2.52 2.02 2.14 1.39 S
+935.8 1426.06 -0.5 3.28 -0.52 2.65 2.41 1.5 1.76 1.39 2.52 -0.75 2.75 -0.37 2.52 -1.26 
+2.52 0.5 1.52 2.02 2.38 1.52 2.39 1 0.76 1.89 1.75 1.02 2.02 -0.26 1.5 -0.89 
+2.39 -0.24 0.76 -2.64 1.26 -2.28 2.39 -2.13 0.5 -1.89 2.15 0.24 2.39 -2.13 2.15 -2.15 
+2.25 -1.13 2.89 0.24 2.02 -1.63 2.02 -1.25 1.49 -0.26 1.52 -2.15 3.02 -0.63 0.63 -1.89 
+1.52 -2.12 0.63 -2.28 -0.89 -1.5 -0.26 -2.41 0.13 -1.39 1.52 0.13 0.5 1.52 1.26 1.49 
+-0.37 2.28 1.99 1.26 -0.37 2.39 -2.39 1.15 0.24 2.76 0.76 2.02 1.88 -0.76 2.29 -0.11 
+0.73 -1.78 1.52 -0.24 S
+1002.11 1419.77 0.37 1.88 -2.62 2.02 -2.41 1.13 -2.39 1.13 -2.76 1.02 -2.28 0.73 0.76 1.89 
+-3.52 -0.37 -2.65 1 -2.25 1.25 -1.25 1.29 -0.76 2.25 -1.39 2.15 -2.25 1.25 S
+976.7 1438.41 -1.89 1.13 -2.02 1.63 -0.63 1.91 0.39 1.89 -1.15 1.26 0.13 1.89 1.65 0.14 
+1.75 1.63 2 -0.26 -0.37 -1.36 0.63 -1.91 1.25 -1.26 1.13 1.02 0.13 1.89 2.88 -1.52 
+0.76 -2.25 1.25 -1.26 0.38 -1.78 2.52 -1.13 1.39 -1.26 2.39 -0.13 3.54 -1.89 2.89 -2.02 
+2.76 -1 2.41 -1.52 2.38 -1.12 0.13 -2.39 0.24 -3.28 0.63 -2.78 2.02 -1 1.89 -2.14 
+1.5 -1.76 2.02 -2.52 2.28 -2.02 S
+1015.95 1413.21 3.38 0.13 3.15 0.87 1.89 -1.5 2.64 0 2.63 -1.52 -0.74 3.27 2.75 -0.5 
+-2.02 0.63 -0.87 1.75 -2.02 0.64 -1.75 1.13 -1.13 1.76 -1.89 1.52 -1.89 2.14 -0.5 3.28 
+2.63 -1.89 2.15 0.37 0.37 1.52 -1.37 1.13 2.13 0.37 0.63 1.65 2.25 -0.13 1.65 0.89 
+2.52 0 1.89 -1.65 1.89 0.89 -1.15 -2.15 0.26 -1.12 1.26 2.14 1.63 2.13 1.02 1.65 
+2.89 1.13 2.78 0.63 2.88 -1.26 -1.89 -1 0.76 -1.28 -2.39 -0.5 -2.78 -0.63 -2.39 -0.63 
+-2.52 -0.5 -1.13 -2.15 0.13 -3.39 3.38 1.26 -0.24 -1.65 1.13 -3.14 1.13 -1.13 -0.89 -0.76 
+-1.89 1.13 0.14 -2.02 S
+1038.46 1416.73 2.39 -0.5 2.02 -0.5 0.13 -1.89 2.26 -1.02 -1 -2.13 2.25 0.37 2.15 0.5 
+-0.39 -1.5 2.52 0.5 3.53 -1.75 2.52 -0.39 2.76 2.14 0.13 2.52 2.65 0.13 3.64 -0.62 
+1.63 -1.52 S
+1067.64 1411.07 2.38 -0.5 1.52 1.52 1.75 0.37 1.52 2.39 1.13 2.41 3.38 -0.63 1.39 0.38 
+1.39 2.52 0.87 -1.26 -0.74 -2.39 1.37 -1.64 -0.11 -2.02 1.26 -3.77 1.23 -2.65 -0.61 -2.76 
+-0.13 -3.54 -0.13 -3.14 0 -3.02 0.26 -2.91 -0.76 -3.27 -0.89 -2.26 -3.28 -1.39 -2.52 -1.02 
+-1.99 1.02 -0.26 -2.02 -2.13 0.37 -0.13 2.02 -3.15 -0.24 -2.52 -1.02 -2.38 -2.02 -1.89 -1.89 
+-2.15 -1 S
+1061.35 1377.69 -3.02 0.88 -2.75 -0.5 -2.52 0.39 -2.15 0.63 -2.88 0 -2.78 -0.13 -2.63 -0.89 
+-1.65 2.15 -2.76 -0.5 -2.91 0.37 -2.75 0.13 -0.89 2.25 -2.88 0.52 -3.15 -0.13 -2.64 -0.76 
+-2.52 -1.39 -2.39 -2.78 -0.89 -2 1.15 -1.78 0.74 -2.26 -0.37 -2.52 -1.39 -1.65 -1.75 -1.12 
+-2.52 0.13 -2.65 1.63 -3.52 1.39 -4.01 0.5 -2.91 0.13 -2.62 1.13 -1.39 1.26 -0.39 2.91 
+-2.88 0.63 -2.89 1.13 -2.78 0.13 -3.64 0.13 -3.14 -0.25 -2.52 0.75 -2.88 1.26 -1 2.28 
+-1.89 -0.62 -2.02 0.73 -0.62 2.41 1.39 1.5 1.76 2.02 1 2.39 -0.63 2.28 -1.63 0.89 
+-1.13 3.14 1.37 1.13 S
+971.4 1397.59 0.89 2.39 -2.89 -1.62 -1.39 2.78 -2.26 0.24 -2.28 -0.63 -1.76 -1.52 -2.14 -0.62 
+-3.52 0.76 -1.89 -1 -3.38 0.76 -1.89 -1.52 -2.28 -0.5 -1.5 0.76 -2.78 0.5 -2.63 -0.13 
+-1.88 -0.5 -2.29 -0.13 -2.25 -0.89 S
+933.29 1396.7 -3.02 -0.63 -3.54 -0.36 -2.26 -1.52 -2.25 -1.75 -2.39 -0.5 -2.28 -0.5 -1.12 -1.78 
+-3.14 -1.39 -2.39 -0.5 -2.65 1.52 -2 -0.5 -3.04 0.11 -2 -0.37 -3.04 1.88 -1.13 1.89 
+-2.26 -0.24 -1.39 -2.78 -0.86 -2.38 -1.26 -2.29 -1.26 -2.25 -2.91 -1.65 -2.89 -0.89 -2.39 -1.25 
+-1.75 -2.26 -2.15 -1.76 -0.24 -1.78 -1.39 -2.39 -1.64 -1.26 -0.37 -4.66 1 -2.02 S
+875.29 1362.43 -1.5 -3.14 -1.76 -2.25 -2.28 -2.29 -3.02 -1.13 -1.89 -2.25 -3.39 -1.15 -3.77 -0.11 
+-1.89 -2.28 -1.12 -2.78 -1.39 -1.76 -2.65 -1.12 -1.5 -1.39 -1.02 -2.65 -1.12 -2.38 -1.63 -3.15 
+-2.39 -2.15 -1.88 -2.26 -1.65 -2.14 -1.63 -3.67 -1.52 -2.25 -1.89 -1.26 -0.73 -2.78 -0.76 -2.76 
+2.02 -2.14 1.89 -2.65 -0.26 -2.78 -1.89 -1.75 1.39 -3.02 0.76 -2.91 -0.26 -2.88 -0.76 -2.78 
+-1.13 -2.78 -1.13 -2.76 -0.39 -3.8 -1.89 -2.12 -1.63 -2.28 -2.39 -1.26 2.15 -1.62 1.13 -2.91 
+0.24 -3.41 -0.63 -2.75 -0.24 -3.41 2.13 -1.62 2.14 -1.65 2.39 0.37 0.14 -3.88 2.25 -1.15 
+1.75 -2.39 1.26 -2.52 S
+841.95 1250.46 2.15 -1.65 2.25 -2.52 1.75 -2.52 0.26 -2.76 0.37 -2.41 0.89 -2.52 2.64 -3.02 
+2.76 -1.52 2.78 -1.62 2.25 -2.41 3.65 -2.12 2.78 -3.04 2.25 -1.89 2.78 -2.02 3.26 -2.52 
+2.9 -1 2.26 -0.63 2.88 1.76 3.41 0.39 2.39 1.89 S
+888.63 1218.34 3.28 0.24 3.25 0.5 2.41 0.39 2.89 0 4.28 -1.12 2.75 -0.39 3.28 -1.5 
+2.38 1.37 2.91 0.89 2.38 0.5 2.39 1.39 3.28 1.89 3.78 0 1.36 1.89 3.27 0.89 
+2.89 0.63 2.78 0 3.38 0.5 3.28 0 2.78 -0.87 2.89 -2.15 1.52 -3.78 1 -3.77 
+3.28 -1.79 2.88 0.13 2.78 0.5 2.89 0.63 2.75 0.13 S
+967.62 1215.43 2.41 0.5 2.39 0.13 0.5 -2.78 2.39 -0.37 1.52 -2.25 1.89 -2.28 -0.89 -3.28 
+-0.37 -3.28 -0.89 -2.39 -1.39 -2.52 1.89 -0.76 -1.39 -2.39 0 -2.78 S
+993.79 1271.62 1.52 -1.76 1.13 -2.38 1.89 -1.26 0.63 -1.78 1.39 -1.39 2.13 1.65 2.65 1.13 
+0.76 3.02 -2.65 -0.24 -3.28 0.13 -0.11 1.89 -1.52 1.89 -2.64 0.24 -1.89 -1.13 S
+1102.13 1191 0.99 -3.78 2.26 2.78 2.78 -0.63 3.64 0.63 2.13 2.25 -3.13 0 1.76 2.15 
+1.75 2.76 0.63 3.54 0.88 2.02 -1.5 2.65 -2.78 0.63 -2.75 -0.5 -3.14 -0.89 -3.15 -2.52 
+-0.76 -3.54 1 -2.25 -0.37 -2.39 -0.24 -2.9 S
+1089.15 1166.69 1.39 -2.78 1.89 -2.65 2.78 -2.02 1.36 -3.52 -0.5 -2.91 3.28 -0.62 -0.5 2.78 
+-1.39 2.78 -1.39 3.02 0.5 2.02 -2.25 1.63 -2.39 1.65 1.39 2.52 -1.02 3.14 -0.86 3.28 
+-1.52 3.14 -0.63 3.78 -1.25 -4.03 1.02 -2.65 -0.89 -3.02 1.39 -3.14 -0.39 -2.39 S
+1115.32 1134.81 0.39 -2.39 0.87 -2.28 -0.13 -2.39 1.78 -1.65 0.24 -2.25 1.89 0.63 1.13 -2.14 
+-0.13 3.77 -1.76 2.15 -0.24 3.28 0.13 3.28 1 3.53 -1.63 3.15 -0.39 2.75 -0.36 3.79 
+-2.28 1.63 -0.5 -1.52 1.26 -5.54 0 -1.02 0.76 -4.14 -2.02 -2.64 S
+1037.07 1441.43 2.41 -2.02 1.26 -2.02 2.63 -1.39 2.64 -0.37 S
+1046 1435.63 2.89 0.13 2.52 1.13 2.52 0.13 1.65 1.89 1.49 1.89 1.52 1.89 2.26 1.64 
+2.52 0.24 2.65 0.76 1.76 1 2.02 -1.37 2.63 0.74 2.15 -1.89 1.63 0.52 2.52 -0.75 
+1.52 0.87 2.26 -0.24 2.14 1.26 2 1.13 2.52 0.37 2.02 1.15 1.39 2.65 1.26 2.13 
+-0.5 1.88 -1.76 1.39 -1.64 2.02 -1.39 0.63 -3.13 0.5 -2.41 0.63 -1.89 1.02 -2.89 1.5 
+-2.39 0.76 -2.14 -0.11 -1.5 0.37 -2.02 0.5 -1.62 1.39 -1.26 -0.37 -2.02 -1.15 -2.02 -0.11 
+-1.26 -1.91 -1.75 -1 -0.63 -1.76 -1.5 -1.39 -1.89 0.89 -0.26 2.52 -1.63 0.5 -2.52 0.24 
+0.74 2.78 2.02 1.65 S
+1054.55 1466.25 -2.64 0.74 -1.76 -1.63 -3.38 0.63 0.24 2.02 -2.39 -0.63 -2.26 -0.63 0 -2.39 
+-0.89 -2.28 -2 -1.39 1.37 -2.65 0 -2.02 -1.63 -1.37 -0.76 -2.15 0.76 -2.28 0.5 -2.75 
+-2.12 -1.02 0.63 -2.88 -1.15 -2.15 S
+1057.07 1467 1.65 -0.64 1.63 -1.49 2.26 -0.26 1.76 1.52 2.15 0.76 2.64 0.24 0.24 3.14 
+0.76 2.91 -1.52 0.5 -1.5 1.02 1.75 0.63 1.13 2.52 1.89 1.13 -1.63 0.5 -1.75 -1.13 
+-2.78 -1.52 -1.89 -2.64 -2.52 -1.26 -1.76 -2.13 -0.76 -2.28 -1.76 -1.52 S
+1103.88 1476.7 0.87 -1.63 2.02 -0.37 2.64 -2.14 0.87 -1.76 1.25 -2.15 2.91 -2.14 2.75 -1.5 
+2.14 -0.63 S
+1119.36 1464.37 2.39 -1.78 1.89 -1.89 3.02 -1.5 2.52 0.11 -1.52 -1.37 -0.24 -2.28 0.76 -3.02 
+0.61 -1.89 -1.5 -0.76 1.89 -3.04 1.75 -2.63 1.63 -2.54 2.41 -0.11 2.75 0.63 1.26 -1.15 
+3.51 -0.63 2.65 0.13 2.65 2.41 2.25 2.25 3.14 0.89 -0.75 2.02 -2.89 3.14 -2.02 3.64 
+-0.87 3.64 -1.76 -0.23 -1.89 1.88 -1.02 2.39 -2.65 -1.39 -1.26 1.65 -0.62 3.14 2.52 0.24 
+2.28 1.15 0.87 2.89 -2.39 1.02 -2.52 1 -2.25 1.76 -2.02 -1.62 0 -2.39 1.52 -2.02 
+-2.65 2.02 -1.63 2.13 -0.13 2.78 -1.39 1 -2.26 -1.13 -2.78 0.89 -2.13 2.39 -3.02 2.02 
+-2.41 -0.12 -0.63 1.39 S
+1116.45 1481.49 2.28 1.13 1.89 0.39 -2.39 2.26 0.74 2.64 2.15 1.76 2.75 -0.24 1.65 1.39 
+1.75 1 -1.89 0.76 -1.76 2.02 -2.15 2.26 -3.02 1.25 -3.02 0.76 -1.52 -0.89 -2.13 -1 
+-1.75 -0.37 -1.02 -3.41 -1.89 -1.52 -1.37 -1.75 1 -1.26 -1.39 -1.13 0.26 -2.15 -2.78 -0.26 
+0.49 -2.52 0.39 -3.14 0.13 -2.78 S
+1140.37 1497.75 1.88 -2.52 1.39 -1.02 2.13 -3.02 2.02 1.26 2.12 1.39 1.02 -0.63 1.5 2.26 
+-0.24 3.8 -1.89 2.52 1 1.26 0 2.02 -2.26 1 -3.14 1 -1 1.26 -0.62 2.91 
+-0.39 2.25 -0.87 -2.62 -1.39 0.37 -1.25 -2.15 1.25 -1.62 -1.52 0.13 0.75 -2.52 S
+1140.86 1505.05 -1.39 -1.02 -0.63 -1 1.26 -2.28 0.26 -3.02 S
+1179.1 1533.64 2.52 -0.5 2.15 -1 -3.14 4.02 -1.76 1.39 0.5 2.28 -0.26 2.13 1.02 2.78 
+2.52 1.39 0.24 2.02 S
+1182.88 1548.13 2.65 0.5 1 2.39 -0.74 2.78 -0.89 -1.26 0 -1.89 -1.52 -0.89 -0.5 -1.63 S
+1182.88 1548.13 -1.5 -0.89 -2.02 -1.5 -1.39 -2.41 -1.39 -0.87 0.26 -2.91 0.13 -2.39 2.13 -3.53 S
+1182.51 1641.73 1.63 2.13 -1.14 2.78 -1.25 2.52 -3.28 2.41 -2.39 3.15 -1.39 2.88 -2.38 2.41 
+-3.52 3.14 -3.64 2.39 -3.41 1.39 -3.88 1.63 -3.54 1.78 -0.99 -0.89 1.89 -1.13 2.25 -1.02 
+2.91 -1.89 3.02 -1.88 2.89 -1.89 S
+1166.28 1661.63 3.02 -2.65 3.02 -2.78 2.28 -2.13 1.75 -2.14 2.26 -2.15 2.26 -2.26 0.52 -2.52 
+1.13 -3.28 S
+1007.38 1542.08 2.39 -1.26 1.89 -1.76 1.52 -2.02 1.13 0.37 0 1.52 2.15 0.63 0 1.89 
+-0.89 1.76 -1.76 1.39 -2.26 0.26 -1.65 0.89 -1.75 -0.52 -1 -1.76 0.24 -1.39 S
+1017.32 1549.26 1.52 -1 2.25 -0.13 1.13 -2.15 1.39 0.5 0.5 1.26 -1 1.65 -1.75 0.87 
+-1.65 1.39 -1 2.15 -2.13 0.63 -2.28 0.13 1.52 -0.89 1.37 0 1.02 -1.63 -1.63 -0.5 
+0.74 -2.28 S
+1159.48 1085.05 -0.37 -2.39 0 -2.91 0.87 -2.25 -0.24 -3.77 -0.14 -3.28 1.63 -2.65 1.63 -1.75 
+1.89 -1.15 S
+1164.75 1064.89 2.65 0.75 2.52 1.76 2.64 1.25 2.02 -0.24 2.38 3.15 1.26 2.52 1.37 3.02 
+1.26 2.15 0.89 2.52 0.76 2.52 0.87 2.52 1.25 2.52 2.52 5.3 0.75 2.52 1.26 2.65 
+1.26 3.14 1.26 3.17 1.76 3.64 0.76 3.02 0.89 3.67 0.24 2.52 1.52 1.63 0.63 2.65 
+0.11 4.9 1.89 -2.12 2.02 3.38 -0.24 2.91 -0.39 4.41 -1.13 3.41 -0.26 3.41 -1.12 2.75 
+-1.5 2.65 -2.39 -2.89 -0.13 -3.04 -0.49 -2.64 -2.29 -1.37 -2.64 -1.02 0.26 -2.89 -1.89 -1.78 
+0.26 -2.52 -2.28 -0.37 -2.39 -3.28 -2.26 -1.89 -2.78 -1.89 -2.75 -1.52 -2.78 -1.89 -2.13 -0.37 
+-1.76 -4.66 S
+1168.42 1114.91 -2.14 -3.15 0.13 -3.28 0.87 -3.27 -0.24 -2.52 0.87 -3.14 -0.74 -2.52 -2.15 -3.17 
+-1.12 -2.62 -2.15 -2.54 -2.25 -3.64 S
+1221.38 1099.66 0.39 -2 2.13 0.37 0.5 1.13 -1 1.25 -2.02 -0.75 S
+1232.57 1104.58 2.15 0.37 0.24 2.14 -1 0.76 -1.39 -3.28 S
+1204.14 1303.5 1.75 -0.5 2.02 0.74 2.02 2.41 -2.02 -0.26 -2.52 -0.37 -1.26 -2.02 S
+1208.42 934.27 -0.76 -2.52 -2.75 -2.41 2.75 0.89 0.39 -1.12 1.63 1.39 1.39 -0.13 2.13 2.02 
+-2.39 -0.39 -1.39 -0.37 0 1.5 0.26 2.02 -1.26 -0.87 S
+1360.53 1408.05 2 -5.55 1.78 -5.66 S
+1397 1340.91 2.52 -0.63 S
+1404.17 1334.09 1.65 -1.5 2.13 -2.02 S
+1407.95 1330.58 -0.76 3.28 -2.52 2.38 -0.5 -2.14 S
+1413.11 1320.25 1 -3.78 1.26 -1.26 1.02 1.63 -2.52 4.8 -0.76 -1.39 S
+1327.43 1332.46 1.13 -3.9 1.13 -2.65 1.89 -4.16 1.64 -2.13 1.76 1 2.02 2.78 1 3.28 
+-0.26 3.91 -1.13 4.03 -2.12 1.89 -2.02 2.75 -2.25 2.52 -2.28 2.41 -3.02 0.63 1.52 -2.28 
+-0.13 -3.39 0.76 -3.66 0.37 -3.02 S
+1372.09 1511.35 1.88 -2.78 2.13 -2.39 1.79 0.63 0.63 1.88 -0.52 4.04 -1.26 3.64 -2.26 4.17 
+-1.25 3.78 -1.63 2.13 -0.63 -2.39 -0.5 -2.25 -0.13 -2.54 1.13 -4.41 0.63 -3.52 S
+1354.47 1594.75 2.91 -2.91 3.52 -2.52 0.76 0.89 2.52 -1.65 -3.54 4.3 S
+1360.63 1592.86 -2.75 4.27 -3.02 3.78 -3.64 4.17 -3.28 4.14 -3.15 2.78 -0.75 -1.02 1.89 -3.91 
+2.78 -4.14 2.63 -3.54 3.15 -4.64 S
+1278.86 1688.34 2.78 -0.52 -1 2.14 -2.52 1.65 1.63 0.11 2.89 -1.5 2.65 -2.52 2.78 -1.52 
+2.88 -1.52 -0.26 2.41 -3.88 4.41 -3.66 2.13 -4.14 3.04 -3.52 2.76 -2.25 0 -2.65 0.89 
+1.39 -2.52 -1.25 0 1.88 -2.91 3.25 -3.14 3.02 -3.39 S
+1270.45 1702.95 3.02 -0.63 -0.24 2.02 -2.78 1.89 -2.26 1.63 -2.78 3.14 0.76 0.89 -3.14 2.28 
+-2.89 2.52 -2.02 0.5 0.5 -2.15 2.15 -2.75 3.01 -2.28 1 -2.25 2.78 -1.91 2.89 -2.89 S
+1267.79 1699.04 2.91 -1.25 S
+1270.71 1697.79 -2.15 3.14 -0.89 2.28 -3.13 2.75 -2.41 3.15 -2.89 3.41 -1.89 2.39 -3.52 3.54 
+-0.89 2.02 -1.89 2.89 4.04 -2.76 2.75 -1.15 2.15 0.13 -0.62 1.52 -4.91 3.52 -4.91 4.04 
+-1.52 -0.5 -3.14 2.15 1.02 1.5 -3.15 4.17 -5.8 4.14 2.76 -0.24 -5.64 2.64 -2.02 2.52 
+-2.78 1.63 4.41 -1.5 -4.27 3.38 -2.65 1.02 -3.14 2.13 -2.13 -0.11 -4.27 1.39 -2.78 1.5 
+-4.28 1.25 -3.02 0.26 -2.39 1 -1.76 2.02 -2.78 0.5 -3.64 1.78 -4.28 1 -2.64 -0.26 
+-1.26 -1.13 -2.39 0 -2.52 0.63 1.39 -2.26 2.52 -0.62 -1.39 1.39 1.65 -0.26 1.76 -1.76 
+-0.26 -1.15 4.54 -1.88 S
+1193.71 1754.97 2.25 -0.37 2.78 -0.5 3.39 -0.5 3.41 -1.39 4.28 -2.02 4.01 -1.52 3.65 -2.78 
+3.77 -1.76 3.28 -2.39 3.52 -3.15 3.78 -3.28 -2.26 0.63 -3.41 1.63 3.14 -2.52 3.28 -1.25 
+4.04 -2.39 3.52 -2.38 2.75 -1.02 2.41 -2.02 -0.39 -1.39 2.52 -3.15 2.78 -3.52 2.89 -3.91 
+1.52 -2.52 4.14 -3.14 3.64 -3.54 2.89 -2.78 2.52 -3.02 S
+1181.88 1755.99 2.52 -0.63 0.63 0.76 3.77 -0.52 -3.64 2.4 -3.41 2.52 0 -1.52 0.63 -1.62 
+-2.02 0.5 -1.36 1.39 0.11 0.87 -2.76 1.79 -2.64 2.12 -0.76 2.52 -1.62 2.91 -2.52 0.37 
+-3.64 1.52 -4.28 2.02 -2.28 2.26 -4.14 2.28 -3.91 1.76 S
+1150.54 1779.67 3.28 -2.15 -1.5 0 0.11 -0.87 -4.64 1.13 5.03 -2.39 1.76 -1.89 1.5 -2.28 
+0.52 -2.02 -0.14 -1.26 -1.25 -1.26 -0.39 -1.39 3.28 -1.63 2.15 0.89 2.88 -0.52 2.52 -0.37 
+3.02 -1.39 1.76 0.13 1.89 -0.39 2.02 -2 1.25 -1.65 1.76 0.13 4.54 -2.52 S
+1331.08 1649.02 -2.39 2.15 -1.75 2.65 -1.76 1.64 S
+1313.98 1667.69 -2.52 2.88 S
+1149.54 1778.41 -3.02 1.26 -3.14 1.13 S
+1139.34 1783.45 -4.77 2.02 -5.17 2.15 -5.64 1.89 3.89 -1.52 1.52 -1.39 4.28 -1.63 5.9 -1.52 S
+1119.49 1791.64 -2.15 1 -6.16 1.63 3.52 -1.37 4.79 -1.26 S
+1101.73 1797.44 -3.91 0.87 S
+1067.41 1801.34 1.23 0.5 -4.27 1.26 S
+1064.37 1803.11 -2.63 0 -1.15 -0.5 3.54 -0.39 3.28 -0.87 S
+1112.93 1748.54 0.63 1.02 -4.01 1.13 0.63 -1.63 2.75 -0.52 S
+997.96 1794.92 -5.79 0 0 -1.02 2.88 -0.12 2.91 1.15 S
+1107.77 1761.92 3.15 0.73 3.54 -0.11 3.02 0.37 0.75 1.13 2.26 0.52 3.27 0 2.63 0.5 
+3.14 0.24 2.78 -0.11 2.65 -0.52 0.87 0.63 2.39 0.76 3.28 -0.5 3.64 0 3.52 -0.89 
+3.14 0.89 -4.14 0.89 -2.76 1.26 -1.26 1.39 0.37 1.49 -3.15 0 0.38 -1.26 -1.63 -0.37 
+-0.26 -1.15 -1.37 -0.63 -3.28 0.13 -3.52 0.63 -2.41 0.13 -2.75 1.02 -2.02 1.49 -0.87 2.02 
+-1.78 -0.75 -2 -1.13 -1.88 -1.13 S
+1117.47 1769.59 -2.29 -0.89 -2.38 -0.76 -1.89 -1.13 -3.26 -0.26 -2.91 -0.37 -2.38 -0.89 -2.52 -0.74 
+-1.13 -1.02 2.02 -1 1.5 1 2.39 -0.37 3.14 -1.25 S
+922.22 1755.23 3.38 1.63 -0.37 1.15 -3.02 -0.62 S
+922.22 1757.38 -2.15 0.37 -4.53 -1.13 2.28 -1.39 4.41 0 S
+1000.21 1725.37 -0.26 1.65 -2.76 2.13 -1.65 -0.87 0 -2.28 2.41 -1 2.25 0.37 S
+997.07 1723.11 1.39 1 -1.39 0.5 -1.26 -0.74 1.26 -0.76 S
+981.34 1724.87 1.02 2.14 -1.89 2.65 -2.02 0.87 -2.52 -1 2.15 -1.76 2.63 -1.78 0.63 -1.13 S
+995.95 1717.82 1.49 2.02 -1.26 1.39 -2.52 0.76 -3.02 0.87 -0.37 1.26 -3.02 0.26 -3.02 -0.13 S
+984.25 1724.24 -1.13 -0.75 0.74 -1.26 1.02 -0.63 0.11 -2.02 3.41 0.39 0.5 -2.91 3.14 -0.62 
+3.91 1.39 S
+1005.12 1676.63 -2.02 1.75 -0.37 2.02 -1.52 1.75 -3.52 0 -2.02 -1 -1.39 -1.39 1.39 -0.89 
+3.02 -0.76 3.54 -0.87 2.89 -0.62 S
+990.54 1670.83 2.88 0.13 1.13 1.63 2.88 0.37 1.02 1.78 1 1.39 -0.63 1.37 -2.88 -0.24 
+-3.02 0.76 -2.15 -0.76 -1 -1.25 -2.15 -0.39 -1.76 0.52 -1.75 -0.76 -1.63 -0.52 2.38 -1.89 
+2.89 -0.63 2.78 -1.5 S
+1014.7 1610.61 3.51 -0.5 3.02 -0.39 2.89 0.89 2.52 1.39 0.26 1.52 -3.52 -0.13 -2.78 1 
+-2.78 1.65 -2.39 2 -1.36 2.15 -1.02 2.38 S
+1013.04 1622.57 -1.26 2.29 -1.26 2.38 -1 2.52 -1.39 2.29 -0.37 2.52 -0.49 2.52 0.37 2.15 
+-0.13 2.39 -0.37 2.15 -2.78 1.63 -1.89 -0.63 0.26 -2.39 1.26 -1.65 -0.64 -2.39 -1.64 -1.76 
+0.13 -2.78 0.76 -2.15 0.63 -1.37 -0.5 -2.54 1.63 -1.13 2.02 -2.88 0.76 -2.65 2.25 -0.76 
+-0.13 -1.89 1.39 -2.78 2.02 -1 -0.26 -2.02 2.29 -2.02 S
+1022.75 1595.88 1.36 2.02 -1 1.76 -3.28 0.13 0.39 -2.02 2.52 -1.89 S
+976.82 1645.5 1.13 1.14 -0.75 1.88 S
+977.2 1648.52 1.88 1.15 -0.26 0.87 -2.62 1.26 S
+976.2 1651.8 1.37 0.76 -0.37 1.26 -2.76 0.76 0.61 -1.76 1.15 -1.02 S
+976.2 1651.8 -0.63 -2.02 S
+975.57 1649.79 1.63 -1.26 S
+977.2 1648.52 -1.26 -1.13 0.89 -1.89 S
+972.03 1646.77 2.28 0.63 0.37 1.76 -1.63 0.26 -1.12 1.63 -2.52 1.15 0.74 -2.15 2.02 -1.26 
+-1 -0.89 0.87 -1.13 S
+974.04 1644.25 1.13 1.25 -1.75 0.14 0.63 -1.39 S
+966 1640.84 1.52 0 1.13 0.76 1.13 -1 1.75 0.37 0.89 1.13 -1.39 1.02 -0.5 1.5 
+-1.13 0 -0.62 -2.02 -0.89 0.63 -1.52 0.13 -0.36 -2.52 S
+934.92 1626.48 0.5 -2 1.52 -2.91 2.52 -2.15 2.52 0.39 -1.52 -1.64 1.13 -2.02 2.41 -2.13 
+3.38 -2.14 -0.37 2.52 0.13 2.64 0.11 2.78 -0.74 1.89 1.13 1.39 1.5 -2.02 1.76 -1.02 
+0 -2.64 2.91 -0.24 S
+953.8 1617.17 1.49 3.14 -2.88 1 -2.02 1.25 -1.63 1.79 -3.64 0.86 -1.39 2.52 3.28 -1.26 
+3.64 0.13 1.39 1.75 0.24 2.41 -0.87 1.39 -2.41 -0.26 -2.38 0.26 -1.37 -1.65 -1.79 1.26 
+-1.62 -1.63 0.63 -1.52 -2.02 0.13 -0.37 -1.89 -2.15 0.5 -3.02 -0.89 S
+901.21 1536.16 1.37 -0.5 1.78 1.89 -2.52 -0.24 -0.63 -1.15 S
+917.55 1525.71 0.89 1 0 -2.28 S
+912.16 1520.16 1.52 -1.26 S
+899.07 1512.21 2.78 2.15 1 2.64 -2.78 -1.62 -0.11 -1.79 -0.89 -1.39 S
+954.93 1501.52 1.39 -2.14 2.13 0.26 -0.13 1.76 -1.76 0.89 -1.62 -0.76 S
+959.2 1503.14 1 -2.52 1.89 -0.24 1.89 1 -1 1.02 1.13 1.37 S
+964.11 1503.78 -0.87 2.02 -2.02 -1.26 -2.02 -1.39 S
+959.57 1498.5 1.39 -1.25 1.65 0.74 0.63 0.89 -1.78 0.39 -1.89 -0.76 S
+979.71 1515.75 1.13 -2.15 1.25 1.26 -0.63 2.28 0.89 1.39 -2.02 -1.15 -0.63 -1.63 S
+989.91 1522.18 1.37 -1 1.13 1.37 1.15 1.39 -2.78 0 -0.87 -1.76 S
+990.41 1525.33 0.5 -0.76 1.5 1.02 -1.87 0.88 -0.13 -1.13 S
+901.21 1471.42 1.89 -0.52 2.25 1.65 3.02 -0.89 0.76 2.15 2.52 0.5 2.75 -1 2.52 1.26 
+2.78 -0.39 2.75 0 3.14 0.89 1.76 2.25 -3.02 0.39 1.52 2.39 2.02 1.39 0.86 2.28 
+-0.86 1.76 -2.15 0.87 -1.52 0 -1.12 -1.37 -0.87 0.87 1.13 1.39 S
+923.35 1487.29 -0.5 1.89 -0.89 1.26 -0.63 1.76 -0.87 2.41 -2.28 0.87 -1.13 2.28 -0.5 2.64 
+-1.02 1.76 -2.25 1 -2.13 0 1.63 1.39 1.52 1.78 1.13 2.13 0.88 1.78 -0.24 1.89 
+-2.65 0 -2.15 0.11 -2.38 -0.36 1.13 2.15 2.78 1.75 -0.5 1.26 -2.91 -0.26 -2.89 0 
+-1.13 -2.12 -1.52 -1.65 -0.37 -1.75 -1.52 0.89 -1.14 -0.76 1.14 -1.39 2.14 -0.13 -1.52 -2.65 
+-0.11 -1.89 1.89 0.89 -0.39 -2.28 -2.39 -1.63 2.02 -0.13 -0.26 -1.76 1.88 2.13 1.26 -1.89 
+-1.63 -3.02 1 -1.89 2.64 0.89 2.65 0.73 -1.26 -2.26 1.37 -1.75 1.65 0 -1.25 -2.28 
+0 -2.26 -2.15 -0.39 S
+909.5 1488.41 -3.14 0.52 0.5 -1.39 -1.37 -1.78 2.13 0 -0.13 -2.76 -1.87 -0.89 -2.15 -1.26 
+0.5 -1.39 2.39 0.39 1.89 -0.52 1.76 -1.39 2.41 1.29 -1.25 -2.28 -1.89 0.13 -2.15 0 
+-1.63 -2.15 -2.02 -1.75 -2.26 -1.76 S
+884.98 1483.88 0.63 -2.26 1.63 -1.52 3.02 0.13 2.91 0.76 2.88 1.63 3.28 0.26 0.74 2.25 
+0.89 2.28 -0.14 2.65 -0.36 2.39 2.52 1.65 -0.39 2.75 -1 1.75 -2.25 0.65 -2.52 0.63 
+-2.52 -0.76 -1.76 -2.15 1.63 -1 -1.25 -1.26 -2.02 0.11 -2.25 0.13 -1.13 -1.62 1.63 -1.15 
+-2.02 -1.12 1.52 -2.02 1.76 -0.11 -2.02 -2.54 -1.26 -2.63 -2.12 0.11 S
+958.94 1430.34 -0.11 -2.39 0.5 -1.75 2.38 -2.15 0.38 2.78 0.63 1.89 -0.5 1.89 -0.36 2.78 
+-0.89 -1.91 -2.02 -1.12 S
+957.68 1421.4 0.13 -1.89 1.26 -2.15 0.26 -2.89 -0.13 -2.78 2.02 -1.76 1.25 2.02 1.89 0.13 
+0.5 2.25 0.13 2.39 -0.26 2.41 -0.5 2.26 -2.14 2.14 -1.89 -2.02 -1.37 -0.5 -1.15 0.37 S
+977.69 1406.04 1.76 -2.15 1.52 0.13 3.28 -1.52 2.39 -0.24 1.63 -1.78 3.14 -0.11 0.5 1.89 
+-1 1.76 0.26 2.91 1.13 2.52 -2.78 -1.25 -3.28 -0.76 -2.62 -0.26 -2.02 0.76 -2.15 -0.26 
+-1.76 -1.62 S
+1016.69 1409.94 2.52 -1.52 0.26 -2.39 1 -1.26 1.76 0.24 1.52 -1.63 1.13 2.15 S
+1024.87 1405.54 2.26 -1.52 -1.87 3.02 -1.15 2.28 2.28 -0.13 -2.15 2.52 -2.52 1.02 -2.39 0.63 
+-2.02 -1.39 -0.63 -2.02 S
+1030.54 1397.33 2.25 0.39 2.39 -0.13 1.65 -0.76 3.02 0.76 2.88 0.76 0 1.63 -1.99 -1.39 
+-0.39 1.52 -2.52 -0.76 -2.02 0.39 -2.12 -0.89 -0.5 0.89 -2.78 0 0.13 -2.41 S
+1069.54 1404.51 1.39 -1.62 2.64 0.13 2 1.13 0.39 1.5 1.75 0.39 -1.13 1.25 1.76 3.02 
+-2.26 -1.62 -2.02 -1.02 -1.65 -1 -0.74 -1.12 -2.14 -1.02 S
+932.16 1412.96 2.13 -0.37 1.65 -1.26 1.37 2.25 -2.25 1.26 -2.89 -1.89 S
+1047.63 1406.4 0.89 -1.49 1.13 1.39 0.13 2.26 -2.15 -2.15 S
+1035.94 1421.89 1.02 0.76 0.37 -1.39 S
+1037.07 1417.99 0.39 -1.37 S
+796.03 1420.77 1.89 -1.39 S
+807.09 1413.98 2.78 -0.63 S
+838.67 1354.25 0.89 -2.02 1.39 0.89 1.13 2.26 -1.76 -1 -1.65 -0.13 S
+843.46 1351.87 0.5 -1.52 1.76 0.39 -0.13 1.37 -1.37 0.63 -0.76 -0.87 S
+851.13 1351.61 2.28 0.76 0.24 3.28 S
+853.64 1355.64 1.76 0.37 0.52 1.39 -1.25 -0.5 -1.02 -1.25 S
+853.64 1355.64 -2.25 -2.65 -0.26 -1.39 S
+970.66 1209.39 1.37 -0.39 1.02 1.89 -1.52 0.89 -0.87 -2.39 S
+1418.88 1031.88 0.26 -1 0.13 -0.89 -0.89 -2.75 -1 -2.64 0.13 -1.13 0.24 -1.02 0.52 -0.26 
+0.5 -0.11 1.25 -0.52 0.63 -0.24 0.5 -0.13 S
+1421.16 1021.18 1 1.13 1.02 1.25 1.36 1.65 1.39 1.5 0.39 -0.11 0.5 -0.13 1.5 2.14 
+1.52 2.13 0.63 0.26 0.5 0.37 1 0.26 0.89 0.24 0.63 -0.24 0.5 -0.26 0.63 -0.24 
+0.5 -0.26 0.64 -0.37 0.63 -0.26 0.5 -0.26 0.39 -0.24 0.5 -0.25 0.37 -0.24 1.39 1.63 
+1.39 1.76 1.63 2.9 1.52 2.89 1.13 0.63 1.13 0.76 0.89 0.63 0.87 0.76 1.52 1.75 
+1.63 1.79 0.76 0.74 0.89 0.76 0.37 -0.76 0.26 -0.87 0.74 0.24 0.75 0.13 0.63 0.39 
+0.76 0.24 1.26 1.26 1.13 1.25 0.89 0.76 0.87 0.76 0.76 0.25 0.76 0.24 0.5 -0.36 
+0.5 -0.39 0.39 -0.37 S
+1463.43 1049.02 0.37 -0.26 0.37 -0.37 0.39 -0.26 -0.26 -1.49 -0.13 -1.52 -0.63 -2.02 -0.5 -1.89 
+0.39 -0.5 0.37 -0.5 -0.26 -1.65 -0.24 -1.63 -0.26 -1.52 -0.37 -1.52 -0.63 -2.12 -0.76 -2.15 
+-1.5 -2.65 -1.65 -2.78 -1.26 -4.77 -1.89 -3.54 -1.75 -3.64 -1.63 -3.14 -1.52 -3.15 -1.63 -3.04 
+-1.65 -2.88 -3.26 -6.3 3.52 5.04 1.39 1.63 1.5 1.78 2.78 3.51 1.13 1.13 1.13 1.02 
+2.15 3.28 2.02 3.28 1.37 1.99 1.52 2.02 -3.02 -5.53 -3.02 -5.42 -1.78 -2.65 -1.87 -2.38 
+-2.02 -3.41 -2.14 -3.38 -1.39 -2.15 -1.37 -2.28 -0.76 -0.5 -0.76 -0.62 S
+1443.92 990.06 -1.13 -1.5 -1.12 -1.64 0.76 0 0 -1.26 1.86 2.65 1.78 2.64 2.26 3.15 
+2.15 3.4 -1.78 -3.54 -1.89 -3.4 -1.37 -2.52 -1.52 -2.65 -1.89 -2.63 -1.89 -2.64 -1 -1.26 
+-1.12 -1.39 0.37 -0.39 0.26 -0.5 -1.65 -3.14 -1.63 -3.15 -4.03 -6.81 -2.13 -3.28 -2.15 -3.25 
+-1.13 -1.26 -1.13 -1.39 -1.62 -2.52 -1.78 -2.54 -1.76 -2.75 -1.89 -2.91 -1.89 -2.89 -1.88 -3.04 
+-0.74 -1.49 -0.76 -1.52 -1.89 -2.78 -2.02 -2.64 0.63 0.39 0.63 0.37 -0.76 -1.5 -0.74 -1.65 
+-0.89 -1.49 -0.89 -1.39 -1.62 -2.52 -1.76 -2.64 -1.39 -1.89 -1.25 -2.02 1.25 0.99 S
+1401.78 915.86 1.39 0.89 0.87 0.63 1.02 0.63 1.89 1.89 1.89 1.76 -3.4 -4.27 -3.65 -4.41 
+0.37 -0.13 0.39 -0.13 -2.52 -2.88 -2.52 -2.91 -2.02 -2.78 -2.02 -2.64 -2.12 -2.76 -2.14 -2.64 
+2.41 2.13 2.39 2.14 0.87 0.5 0.89 0.52 2.26 1.26 0.5 0.11 0.39 0.14 -0.39 -1 
+-0.5 -1.02 -1.12 -2 -1.13 -2.02 0.63 0.24 0.63 0.26 2.39 2.52 2.52 2.64 2.64 3.02 
+2.63 3.14 2.91 3.15 2.75 3.17 3.02 3.52 3.02 3.54 2.65 2.88 2.52 2.91 S
+1424.04 927.84 1.65 1.89 1.75 1.88 3.26 4.04 3.28 4.02 1.76 2.28 1.88 2.26 1.76 2.41 
+1.52 1.99 1.52 2.02 S
+1442.43 950.63 1.63 2.02 1.39 1.76 1.37 1.78 1.39 1.89 1.89 1.89 1.52 2.02 1.5 2.02 
+1.52 2.12 1.5 2.02 1.39 2.02 1.52 2.15 1.5 2.25 1.64 2.41 1.5 2.39 1.89 2.89 
+1.89 3.04 1.88 3.02 1.63 2.78 1.79 2.88 1.63 2.78 2.02 3.52 2.13 3.54 2.15 3.53 
+1.75 3.39 3.78 6.81 1.76 3.52 1.89 3.41 1.76 3.54 1.13 2.13 1.15 2.15 1.13 2.14 
+1.75 4.14 1.89 4.04 1.75 4.04 2.15 4.77 1.99 4.8 2.02 4.9 1.63 4.04 1.64 4.17 
+1.63 4.14 3.52 9.33 1.78 4.64 1.13 3.41 1.25 3.27 1.13 3.41 S
+1520.29 1097.53 1.63 4.91 1.52 4.92 1.5 4.91 1.15 3.64 1 3.54 1 3.64 1.15 4.41 
+0.99 4.3 1.13 4.27 1 4.28 0.89 4.17 1 4.27 0.13 1.52 0.25 1.52 0.13 1.5 
+0.5 2.78 0.63 2.78 0.5 2.75 1.89 9.83 0.86 3.91 1.52 7.82 0.26 2.02 0.11 2.02 
+0.26 1.89 0.25 2.65 0.24 2.64 0.39 2.65 -0.63 -2.65 -0.52 -2.64 -0.63 -2.65 0.63 3.78 
+0.52 3.77 0.5 3.78 0.5 3.8 0.5 3.77 0.5 3.65 0.52 5.03 0.24 2.52 0.13 1.78 
+0 1.76 0.13 1.63 0.5 4.54 0.5 4.66 -0.12 2.28 -0.11 2.39 S
+1545.33 1238.24 0 10.46 0.11 4.01 -0.37 0.39 -0.26 0.37 -0.24 2.78 -0.26 2.78 0.13 3.28 
+0.13 3.26 -0.13 3.16 0 3.02 0.26 5.29 0.11 5.17 0 9.83 -0.24 2.89 -0.13 2.78 
+-0.37 3.64 -0.26 3.41 -0.13 5.79 -0.24 5.54 -0.26 4.54 -0.37 4.53 -0.26 4.8 -0.37 4.77 
+-0.52 2.15 -0.5 2.14 -1 4.78 -0.13 -2.75 -0.26 -2.78 -0.24 0.89 -0.39 0.74 -0.62 4.79 
+-0.63 4.91 -0.37 4.41 -0.5 4.43 -0.76 4.54 -0.87 4.4 -1.52 7.3 -0.63 3.91 -0.76 3.79 
+-0.87 4.78 -1.02 4.66 -0.5 0.89 -0.5 0.87 0.37 -4.41 S
+1529.97 1389.15 0.49 -4.54 0.76 -4.79 0.76 -4.77 0.26 -3.78 0.24 -3.66 0.5 -4.14 0.63 -4.3 
+0.26 -2.76 0.37 -2.78 0.52 -5.16 0.37 -5.04 0.37 -4.53 0.26 -4.41 0.37 -4.41 0.26 -4.29 
+0.26 -4.14 0.37 -4.17 0.13 -4.54 0 -4.54 0.13 -4.54 0 -4.53 -0.13 -4.77 -0.26 -4.93 
+-0.24 -4.04 -0.26 -4.14 0 -4.27 -0.13 -4.43 -0.63 -2.89 -0.5 -2.91 -0.5 -1.39 -0.49 -1.37 
+-0.39 2.64 -0.37 2.63 -0.13 3.28 -0.26 3.14 -0.37 0.65 -0.5 0.63 -0.5 1.13 -0.52 1.13 
+-0.37 1.52 -0.26 1.5 -0.36 2.02 -0.37 1.89 -0.76 -1.26 -0.76 -1.13 -0.13 3.65 -0.24 3.67 
+-0.39 0.5 -0.37 0.63 S
+1527.08 1292.41 -0.5 1.89 -0.5 1.76 0.11 3.41 0.13 3.54 0.14 3.02 0.13 2.89 -0.12 3.27 
+-0.26 3.15 -0.11 3.8 -0.26 3.78 1 2.25 -0.24 4.04 -0.26 4.04 0 7.55 -0.62 1.52 
+-0.76 1.37 0.13 -4.64 0 -4.66 -1 5.04 -0.39 -2.39 -0.37 -2.39 -0.62 -0.12 -0.63 0 S
+1522.05 1334.48 -0.63 -0.13 -0.63 0 -1.25 -1.26 -0.64 1.26 -0.75 1.39 -0.74 -0.26 -0.63 -0.37 
+0.5 -2.14 0.63 -2.02 0.13 -4.04 0 -3.91 -0.63 -1.36 -0.76 -1.26 -0.63 -1.39 -0.62 -1.26 
+-0.39 -3.9 -0.5 -3.91 -0.13 -3.28 -0.11 -3.28 0.38 -2.38 0.26 -2.52 S
+1514.89 1298.46 -0.52 -1.52 -0.5 -1.39 -0.13 -3.14 -0.11 -3.02 -0.52 -3.41 -0.37 -3.54 0.5 -1.39 
+0.63 -1.5 -0.13 -3.02 -0.24 -3.17 -0.63 1.39 -0.76 1.26 -0.37 -0.63 -0.5 -0.63 -0.63 -2.88 
+-0.62 -2.91 0 6.56 -0.39 1.65 -0.37 1.63 -0.5 2.14 -0.52 2.02 -0.74 -0.39 -0.63 -0.5 
+-0.39 -2.38 -0.24 -2.52 -0.63 -1.28 -0.63 -1.26 -0.13 -2.39 -0.26 -2.39 -0.87 -1.02 -0.76 -0.87 
+-0.13 -2.78 -0.13 -2.64 -0.73 -3.28 -0.76 -3.28 -0.26 -3.28 -0.12 -3.28 -0.5 -2.88 -0.5 -2.91 
+-0.63 0.76 -0.76 0.89 -0.37 -3.28 -0.39 -3.27 0.39 -1.63 0.24 -1.65 -0.74 -3.52 -0.89 -3.67 
+-0.14 2.41 S
+1496.5 1230.68 -0.12 2.26 0 3.28 -0.11 3.14 -0.76 -3.52 -0.75 -3.54 -0.76 -3.02 -0.87 -2.9 
+0 -2.39 -0.13 -2.38 -0.13 -2.02 -0.13 -1.88 -0.73 -2.91 -0.89 -2.88 -0.76 -3.28 -0.63 -3.28 
+-0.75 -2.28 -0.74 -2.39 -0.89 -2.39 -0.87 -2.28 -0.89 -1 -0.89 -1.02 -0.87 -1.39 -1.02 -1.5 
+-0.87 -0.5 -0.76 -0.52 -0.89 -2.26 -1 -2.14 -0.63 -0.5 -0.75 -0.37 -1 -2.28 -1.13 -2.38 
+-0.76 -0.39 -0.76 -0.37 -0.63 -0.37 -0.76 -0.39 -0.87 -1.25 -0.89 -1.26 -0.87 -1.63 -0.89 -1.78 
+-0.99 -2.52 -0.89 -2.52 -0.87 -1.26 -0.76 -1.13 -2.02 -3.41 -1.76 -4.8 0.37 5.06 -1.62 -4.8 
+-1.52 -4.67 -0.5 -4.14 S
+1458.77 1148.54 -1.12 -4.53 -2.26 -4.93 -1.15 -5.16 -1.26 -6.03 -0.5 -4.3 -0.5 -4.14 -2.02 -6.3 
+0 3.39 0.52 4.17 -2.02 -9.45 0 4.02 -1.26 -5.17 0.13 -3.28 -1.65 -6.92 -0.76 -2.25 
+-0.74 -2.15 -0.39 -2.52 -0.5 -2.64 -0.5 -2.52 -0.5 -2.65 -0.75 -2.28 -0.76 -2.12 -1 -2.78 
+-1.13 -2.65 -1.78 -5.29 -0.74 -2.64 -0.76 -2.63 -0.76 -2.15 -0.86 -2.28 -0.39 -1.76 -0.5 -1.76 
+-1.39 -3.01 -1.49 -3.17 -1.52 -3.02 -1.63 -3.14 -0.76 -1.65 -0.76 -1.76 -0.87 -1.26 -1.02 -1.26 
+-0.63 -0.37 -0.76 -0.26 -1.5 -3.02 -1.65 -3.04 S
+1512.74 1320.62 0.63 1.13 0.63 1.15 0.37 -0.52 0.52 -0.49 S
+1514.89 1321.88 0.24 3.77 0.26 3.91 -0.39 1.26 -0.24 1.39 -0.5 -2.26 -0.52 -2.41 -0.5 0.39 
+-0.5 0.26 0 -7.57 S
+1435.87 978.97 -1.12 -2 -1 -2.02 -0.13 -1.15 0 -1.12 0.99 0.89 1.14 0.87 1.13 2.65 
+1.15 2.78 -0.63 0.63 -1.52 -1.52 S
+1376.24 885.89 -3.02 -2.91 -2.89 -2.89 -3.64 -3.67 -3.78 -3.64 -2.91 -3.02 -2.89 -2.91 -2.13 -2.02 
+-2.02 -1.89 -2.91 -2.65 -2.75 -2.64 -2.52 -2.39 -2.38 -2.26 -2.52 -2.54 -2.39 -2.52 -1.65 -1.89 
+-1.76 -1.89 1.89 1.13 1.75 1.15 1.52 0.87 1.39 0.89 -2.52 -2.39 -2.38 -2.52 2.88 2.39 
+3.02 2.38 2.15 1.65 S
+1343.79 849.74 2.26 1.76 0.63 0.37 0.76 0.52 3.14 2.62 6.3 5.55 3.13 2.89 1.78 1.89 
+1.76 1.89 0.13 0.89 0.24 0.89 0.13 0.63 0 0.63 1 1.5 1.02 1.52 3.14 3.65 
+3.14 3.79 1.89 2.52 2 2.65 S
+1078.84 682.95 -4.9 -1.13 -4.9 -1.15 -4.91 -1 -3.64 -0.76 -3.78 -0.87 -3.64 -0.76 -3.64 -0.63 
+-3.67 -0.76 -3.51 -0.63 -2.13 -0.39 -2.15 -0.24 -2.02 -0.26 -0.13 0.13 -0.11 0.26 0 0.11 
+0.87 0.39 0.89 0.24 0.86 0.39 -3.64 -0.63 -3.52 -0.5 -3.51 -0.52 -3.91 -0.74 -3.77 -0.75 
+-3.9 -0.64 -1.76 -0.39 -1.76 -0.5 -1.76 -0.37 -1.26 -0.26 -1.39 -0.37 S
+1008.14 670.23 -1.26 -0.26 -1.89 -0.5 -1.88 -0.39 -1.89 -0.37 -1.12 -0.26 -1.26 -0.37 -1.26 -0.26 
+2.15 0 1.13 0.13 -0.99 -0.23 -0.89 -0.13 -1 -0.26 -3.28 -0.5 -3.28 -0.37 -3.38 -0.39 
+-2.78 -0.37 -2.76 -0.26 -2.65 -0.26 -2.78 -0.23 -0.24 -0.13 -0.26 -0.13 -0.26 0 -0.24 -0.13 
+-2.02 -0.24 -2.02 -0.13 -2.13 -0.26 -2.15 -0.24 0.39 0 0.24 -0.13 0.39 0 0.24 -0.13 
+-0.76 -0.12 -0.74 -0.24 -0.89 -0.13 -0.87 -0.12 3.26 0.13 3.14 0.26 3.15 0.24 3.28 0.26 
+2.13 0.24 2.15 0.26 2.02 0.26 2.13 0.24 3.28 0.39 3.14 0.5 3.28 0.37 3.15 0.52 
+4.27 0.5 S
+1004.12 666.95 8.55 1 8.55 1.26 4.41 0.76 4.28 0.76 4.41 0.63 1.89 0.26 2.02 0.37 
+1.89 0.26 2 0.24 1.65 0.26 1.63 0.24 1.75 0.26 1.76 0.13 3.28 0.76 3.41 0.63 
+3.38 0.74 3.41 0.76 -2.28 -0.37 -2.12 -0.39 -2.02 -0.24 -2.14 -0.39 2.28 0.52 2.38 0.5 
+2.26 0.37 2.38 0.52 2.29 0.5 2.25 0.63 2.25 0.5 2.41 0.63 S
+1072.31 679.04 1.99 0.37 2.15 0.39 2.25 0.38 2.15 0.5 2.76 0.65 2.64 0.63 2.78 0.74 
+2.75 0.63 1.02 0.26 1 0.13 1 0.24 1.02 0.26 2.76 0.76 2.91 0.76 2.88 0.75 
+2.89 0.88 3.53 1.02 S
+1110.8 688.37 3.65 1 3.51 1.13 3.65 1.15 5.16 1.75 5.14 1.76 5.17 1.89 5.16 1.75 
+5.41 2.02 5.53 2.02 11.07 4.3 -3.38 -1.28 -3.54 -1.36 -3.38 -1.26 -3.41 -1.26 -4.52 -1.52 
+-2.15 -0.76 -2.12 -0.76 -3.54 -1.13 -3.52 -1.25 -3.52 -1.13 -3.54 -1.15 -3.65 -1.26 -3.77 -1.13 
+-3.65 -1.13 -3.51 -1.02 -3.78 -1.13 -3.64 -1 -3.65 -1.02 -3.54 -1 -3.02 -0.76 -2.89 -0.76 
+-2.88 -0.62 -2.91 -0.76 -3.64 -1 -3.52 -0.89 -3.64 -0.86 -3.64 -0.89 S
+1072.31 679.04 0.99 0.25 1.13 0.38 1.02 0.26 1.13 0.36 -2.02 -0.36 -1.89 -0.39 -1.89 -0.5 
+-1.89 -0.37 -1.49 -0.26 S
+1067.41 678.41 -1.65 -0.26 -1.62 -0.24 -1.52 -0.26 0.63 0.26 0.63 0.24 1.26 0.52 -1.13 0 
+-0.5 -0.13 -0.63 0 3.65 1 3.51 0.89 3.41 0.89 1.89 0.63 3.51 1 S
+1138.21 711.42 -1.89 -0.63 -2 -0.63 -2.02 -0.63 -2.52 -1.02 -2.52 -0.86 -2.52 -0.89 -1.13 -0.5 
+-1.26 -0.5 -1.25 -0.52 -1.89 -0.49 -2.02 -0.63 -2.02 -0.5 -2.52 -0.89 -2.49 -0.87 -2.52 -0.76 
+-3.66 -1.12 -3.65 -1.15 -3.64 -1.12 -2.64 -0.87 -2.75 -0.89 -2.65 -0.89 -1.75 -0.75 -3.52 -1.26 
+-1.13 -0.37 -1.15 -0.5 -1.13 -0.5 -0.63 -0.39 -0.63 -0.37 -0.63 -0.39 0.39 -0.13 S
+1078.47 690.37 0.24 -0.11 0.39 -0.12 0.24 -0.13 0.13 -0.13 0.26 -0.13 0 -0.37 -2.52 -0.89 
+-2.64 -0.74 -2.65 -0.89 -1.5 -0.5 -1.52 -0.52 -1.62 -0.63 -3.91 -0.87 -4.01 -1.02 -3.91 -0.87 
+2.65 0.5 2.63 0.5 2.52 0.49 0.39 0 0.37 -0.11 0.37 0 -2.13 -0.62 -2.15 -0.64 
+-2.12 -0.52 -1.13 -0.37 -1.02 -0.5 -1 -0.39 -1.75 -0.5 -1.76 -0.62 -1.78 -0.5 -1.37 -0.39 
+-1.39 -0.5 -1.52 -0.37 1.25 0 1.26 0.13 1.13 0 3.14 0.63 3.15 0.74 3.02 0.63 
+1.52 0.26 1.5 0.26 1.64 0.11 1.63 0.52 1.65 0.5 1.5 0.5 1.89 0.5 1.75 0.52 S
+1071.29 683.21 1.89 0.49 1.75 0.37 1.89 0.26 1.89 0.37 4.17 1.02 8.55 2.25 2.02 0.63 
+2 0.76 1.89 0.63 -1.39 -0.26 -1.26 -0.24 -1.37 -0.26 0 0.5 2.75 0.89 2.65 0.89 
+2.64 0.87 -0.39 0 -0.37 0.13 -0.26 0 0.13 0.26 0.13 0.24 0.13 0.26 2.38 0.89 
+2.26 0.87 2.28 0.89 1.76 0.76 1.76 0.63 1.75 0.75 1.52 0.74 1.63 0.63 1.63 0.76 
+2.38 1.02 2.41 1 2.39 1.02 2.26 0.87 2.39 0.89 2.28 1 0.73 0.5 0.89 0.39 
+0.89 0.5 0.5 0.39 0.37 0.38 0.5 0.36 1.26 0.64 1.13 0.63 1.15 0.63 S
+1139.23 710.39 0 0.39 -0.13 0.13 -0.26 0.11 -0.37 0.26 -0.26 0.13 S
+1110.05 703.23 -2.02 -0.89 -1.89 -0.89 -2.02 -0.76 2.15 0.52 2.13 0.5 2.14 0.63 -0.12 0.26 
+-0.24 0.24 -0.13 0.39 S
+1388.82 1361.18 1.39 -3.39 1.76 -2.41 2.25 -1.89 2.78 -2.13 1.26 0.5 1.88 -2.15 2.26 -1.75 
+1.52 -3.41 2.13 -0.37 2.28 -1.02 0.63 -2.65 1.76 -3.14 1.89 -4.78 2.26 -0.13 1.13 -2.15 
+2.15 -2.13 0.87 -3.16 2.02 -3.78 0.89 -3.14 2.13 -2.89 2.15 -3.67 2.13 -1.25 1.02 -2.26 
+1.89 -2.28 2.76 -2.25 2.02 -1.39 1.89 -3.15 1.26 -0.5 0.24 2.75 1.25 1.26 1.65 -0.87 
+-0.26 4.64 S
+1442.04 1306.25 -0.5 5.43 -0.63 4.53 -1 5.92 0 5.17 -1.26 2.15 -1.65 1.76 -1.5 -1.65 
+-1.12 3.04 -1.52 0.87 -1.63 5.3 -1.78 -2.02 -1.63 1.65 0 4.4 -0.62 3.78 -2.02 2.02 
+-1.25 -1.52 -0.74 4.4 -1.52 -0.63 -2.26 2.65 -1.65 -1.13 -2.62 2.28 -1.39 -2.28 -2.39 2.52 
+-2.15 2.78 -2.25 0.87 -2.02 0.26 -2.15 1.13 -1.99 2.15 -1.76 2.39 -2.02 1.15 -2.28 -1.65 
+-1.89 -2.02 -2.13 1.26 -1.89 -2.02 S
+1442.43 1292.54 1.75 0.76 2 -0.52 0 -2.52 1.65 0.76 1.89 0.89 1.5 -1.02 1.89 1.02 
+1.25 2.02 1.76 1.76 1.39 0.63 1.75 -0.89 1.52 0.89 1.63 0.63 1.39 1.63 S
+1463.8 1298.57 1.63 0 1.52 3.41 1.63 0.13 1.39 -0.39 1.26 0.52 -0.37 4.14 -0.52 5.04 
+-1.49 -0.74 -1.39 -2.52 -1.89 -0.39 -0.63 3.91 -1.26 1.39 -1.5 -1.02 -1.88 -0.24 -1.76 0.63 
+-0.39 -5.79 -1.26 -1.39 -1.63 -0.75 -1.52 -1.63 -1.37 -0.63 -1.15 3.15 -1.62 -0.89 -1.89 0.75 
+-1.13 -0.26 -1.12 -2.88 -2.02 -0.26 -0.25 -5.29 -0.74 -4.02 S
+1470.86 1306.38 1.25 -0.24 1.26 -2.28 1 5.93 -1.39 1.13 -2.13 -4.54 S
+1475.89 1304 1.36 1.63 2.02 0.63 1.26 2.54 0.89 3.25 1 2.28 0.63 1.39 0.63 1.26 
+0.5 1.39 0.63 1.39 S
+1484.81 1319.75 1.52 0 0.63 0.87 0.63 0.89 S
+1487.59 1321.5 1.25 1 0.63 1.39 0.5 1.39 0.63 0.36 0.63 0.52 0.37 1.76 0.39 1.63 S
+1492 1329.55 0.63 2.15 0.5 2.02 0.63 2.26 0.63 2.41 -0.89 -0.63 -1 -0.63 -0.25 -3.78 
+-0.24 -3.8 S
+1492 1329.55 -1.26 1.26 -0.52 -1.37 -0.63 -1.39 -1.37 0 -0.76 -0.13 -0.63 0 -0.5 -1.89 
+-0.5 -1.76 -0.52 -2.28 -0.49 -2.25 S
+1484.81 1319.75 -0.87 0.87 -0.75 0.89 -1.52 -2.15 -1.89 -0.5 1.13 -3.65 -1.25 -0.63 -1.5 -2.02 
+-1.52 0.13 -1 -3.28 0.26 -5.42 S
+1496 1339.89 0.76 2.78 0.76 2.64 -0.89 -0.37 -0.89 -0.39 0.13 -2.26 0.13 -2.4 S
+1498.27 1352 1.26 2.52 -0.11 3.02 -0.26 3.02 -0.5 -2.02 -0.63 -1.89 0.13 -2.39 0.11 -2.26 S
+1484.44 1308.9 0.38 -1.5 0.39 -1.52 0.63 0.89 0.63 0.87 0.61 -0.37 0.52 -0.39 1.25 -2.26 
+0.63 2.26 0.5 2.28 -0.76 1.63 -0.76 1.65 -0.76 0.37 -0.74 0.52 -1.26 -1.78 -0.63 -1.25 
+-0.63 -1.39 S
+1496.64 1314.58 0.49 1.37 0.5 1.39 0.52 1.89 0.5 2.02 0.24 3.66 0.13 3.78 0.26 2.89 
+0.37 3.03 0.39 2 0.37 2.02 0.5 1.89 0.39 2.02 0.24 2.52 0.39 2.52 0 5.55 
+-0.52 -1.02 -0.5 -1.13 -0.37 -1.62 -0.5 -1.52 -0.52 -1.76 S
+1499.52 1346.07 -0.5 -1.65 -0.5 -2.13 -0.5 -2.28 0 -4.77 -0.5 -2.02 -0.39 -2.02 -0.37 -1.76 
+-0.39 -1.65 0 -2.52 -0.11 -2.39 0.11 -4.17 0.26 -4.14 S
+1508.09 1376.04 -0.13 3.14 -0.13 3.28 -0.62 3.17 -0.63 3.14 0.13 -3.03 0.24 -2.89 0.52 -3.41 
+0.63 -3.41 S
+1509.36 1403.88 -0.39 3.91 -0.5 3.91 -0.89 4.28 -0.86 4.29 -1.02 2.65 -0.87 2.75 0.63 -3.38 
+0.5 -3.28 0.76 -3.78 0.76 -3.67 1 -3.78 0.89 -3.91 S
+1435.37 1333.59 1.63 1.02 1.13 -1.25 0.52 -3.91 2.76 -0.39 -0.5 4.67 -1.13 -0.37 -1.25 3.02 
+-1.65 3.52 -1.37 -2.39 -0.13 -3.91 S
+1444.55 1331.71 1.39 0.63 -0.13 5.43 S
+1445.81 1337.76 -2.02 -0.52 0.76 -5.53 S
+1465.56 1313.32 1.39 1.63 1.39 1.76 -1.02 -4.67 -1.75 1.28 S
+1439.78 1372.27 1.63 -4.78 1.39 -2.02 1.13 -4.41 2.02 -1.02 2.02 -3.28 1 -4.41 1.63 -4.67 
+1.26 -5.03 1.76 1.39 1.26 2.52 0.52 2.91 1.63 -6.81 0.99 3.53 1.39 1.89 0.63 3.91 
+2.14 -1.02 1.13 2.78 1.5 -1.89 1.02 -3.67 0.76 3.17 0.74 4.41 0.63 4.41 -0.63 5.53 
+-0.74 7.95 -2.02 3.41 -0.13 5.79 0.13 5.04 -0.63 5.04 -1.52 5.92 -0.99 5.53 -0.5 4.17 
+0.87 2.39 0.89 3.54 -1.75 1.5 -1.76 1.15 -2.14 2.02 -0.63 4.14 -2.02 2.28 -2.12 3.38 
+-0.89 5.3 -1.89 5.66 S
+1449.46 1439.91 0.39 4.8 -2.02 2.02 0.13 3.91 0.11 4.04 -1.75 -0.26 -2.02 0.37 -1.37 -1 
+-1.89 4.27 -2.02 0.39 -1.39 0.87 1.13 -5.17 0.52 -5.27 1.26 -4.43 0.87 -6.92 1.39 -3.52 
+-1.25 -3.16 0 -4.41 0.89 -7.42 0.24 -4.67 0.75 -4.79 -0.13 -5.04 -1 -3.14 -0.89 -2.88 
+1.13 -5.69 1.26 -6.92 -1.5 -1.26 -1.65 -1.62 -1.88 0.23 0 -5.29 1.02 -5.66 S
+1472.75 1377.06 1.89 -6.06 1.13 2.15 1.49 -4.41 1.13 -6.32 0.76 -6.79 1.02 -3.91 0.99 1.63 
+0.5 1.52 0.39 1.39 -0.52 2.39 -0.64 2.52 -0.49 2.78 -0.37 2.78 -0.63 2.64 -0.5 2.65 
+-1.13 5.17 -1.65 4.27 0 5.3 S
+1476.13 1386.76 0.39 0.87 0.5 1.02 0.38 -1.75 0.39 -1.65 0.74 -5.04 0.76 -1.65 0.76 -1.5 
+0.86 -0.26 0.76 -0.24 1.26 -6.55 0.5 0 0.63 0.13 0.13 1.99 0 2.02 0.89 -4.02 
+0.87 -4.04 0.63 -1.13 0.76 -1.02 0.13 2.9 0.13 2.89 -1.26 6.29 -0.89 1.52 -0.87 1.52 
+-0.89 2.02 -1 1.89 -0.76 0.73 -0.89 0.76 -0.14 2.52 0 2.52 -0.86 1.65 -0.76 1.63 
+-0.76 1.15 -0.62 1.13 -1.14 1.52 -0.99 1.63 0.13 2.64 0.11 2.65 -0.11 2.64 -0.13 2.76 
+-0.26 3.17 -0.37 3.14 0.5 1.39 0.5 1.37 -0.87 1.02 -0.76 0.87 -0.26 -2.39 S
+1474.24 1417.49 -0.13 -2.25 -0.24 -2.15 -0.13 -2.02 -0.37 -1.13 -0.52 -1.26 0.52 -6.05 -0.89 -2.39 
+-1.39 3.78 -1.63 0.13 -1.75 5.79 -1.13 6.04 0.37 2.41 0.76 0.76 0.37 2.89 1.02 2.78 
+0.73 2.52 0.39 1.26 0.37 1.26 0.63 0.37 0.63 0.52 0.25 1.63 0.11 1.76 0.13 2.41 
+0.13 2.25 -0.63 3.67 -0.76 3.64 -0.63 2.78 -0.63 2.76 -0.62 0.5 -0.63 0.52 0.26 -1.89 
+0.37 -1.89 0.5 -2.54 0.39 -2.52 0.13 -2.52 0.11 -2.52 -0.37 -1.49 -0.37 -1.65 -0.13 -1.39 
+-0.13 -1.5 -1.25 -0.52 -1 -1.76 -1.13 -2.02 -1.39 -0.87 1.5 -6.82 -1.13 -3.28 0.89 -3.51 S
+1465.82 1413.98 1.39 -5.3 1.5 -4.8 0.39 -4.91 0.73 -4.79 1.65 -5.79 1 -5.8 0.26 -5.53 S
+1473.48 1458.81 1.02 -1.39 0.87 -1.39 0.89 -2 0.89 -1.91 0.74 -2.39 0.89 -2.52 0.87 -1.26 
+1.02 -1.25 0.87 -0.37 0.89 -0.39 -1.13 1.52 -1.12 1.5 -0.89 1.91 -0.89 2 -0.99 2.91 
+-0.87 2.78 0.11 1.5 0.26 1.39 -0.76 1.02 -0.76 1 -0.73 5.04 -1.15 2.52 -1 2.64 
+0.37 -3.02 0.26 -3.02 -1 1.5 -1.02 1.39 -0.76 2.65 -0.87 2.52 0.37 -2.39 0.39 -2.52 
+0.87 -2.41 0.89 -2.25 0.76 -2.65 0.74 -2.64 S
+1487.2 1405.77 0.89 -1.5 0.88 -1.52 0.63 0.37 0.63 0.39 S
+1490.21 1403.52 -0.11 2.26 -0.13 2.28 -0.76 1.76 -0.76 1.88 -1 -1.52 -0.13 -2.26 -0.13 -2.15 S
+1489.84 1416.5 0.76 0.13 0.75 0 0.11 1.63 0.13 1.63 0.5 0.89 0.39 0.76 0.76 1.39 
+0.74 1.26 0.76 0 0.75 -0.13 -0.75 2.39 -0.76 2.41 -0.87 1.5 -0.89 1.52 -0.24 -1.39 
+-0.39 -1.39 -0.63 0.26 -0.63 0.24 -0.24 -2 -0.13 -2.02 -0.5 -1.78 -0.39 -1.76 0.39 -2.78 
+0.37 -2.75 S
+1480.27 1414.34 0.63 1.89 0.52 1.89 S
+1483.94 1429.84 0.5 2.28 0.5 2.26 -0.89 0.25 -1 0.24 0.5 -2.52 0.39 -2.52 S
+1481.04 1462.98 0.63 -0.13 0.76 -0.13 -0.26 2.39 -0.24 2.41 -0.63 -0.13 S
+1481.29 1467.38 -0.76 -0.13 0.26 -2.14 0.24 -2.13 S
+1484.94 1488.67 1.13 -1.26 1.26 -1.25 -0.26 1.89 -0.24 2.02 -1 1.26 -1.02 1.26 0.13 -1.89 
+0 -2.02 S
+1486.2 1453.14 0.5 0.76 0.63 0.76 0.26 0.74 0.37 0.75 0.76 -2.38 0.87 -2.39 0.63 -0.13 
+0.76 -0.26 0.26 3.04 0 3.91 -0.26 2.75 -0.24 2.91 1.13 -3.54 1 -3.41 -0.24 -1.75 
+-0.13 -1.89 0.37 -2.65 0.39 -2.64 -0.39 -1 -0.37 -1.02 0.24 -1.76 0.26 -1.63 0.26 0.5 
+0.37 0.37 0.76 -0.73 0.76 -0.66 0.74 -1.75 0.63 -1.75 0.89 -2.29 0.76 -2.25 0.11 1.13 
+0.26 1.26 -0.76 4.3 -0.87 4.28 S
+1496.89 1444.71 0.74 -0.76 0.89 -0.87 1.26 0 0.63 -0.39 0.63 -0.24 0.37 1.13 0.39 1.25 
+0.5 0.76 0.37 0.87 0.76 0.13 0.63 0.26 0.5 0.63 0.5 0.76 0.52 0 0.63 -0.14 
+0.74 -1.15 0.76 -1.13 1.25 -3.14 1.26 -3.28 1.25 -3.52 1.13 -3.54 1.02 -3.02 1 -3.04 
+0 -4.14 0.63 -3.77 0.63 -3.67 0.89 -5.03 0.73 -5.17 0.26 1.65 0.26 1.76 -0.13 3.41 
+-0.26 3.52 0.26 1.78 0.24 1.76 0 4.77 0.75 -1.63 0.64 -1.75 2.14 -4.3 0.74 -1.26 
+0.39 0.89 0.24 1 0.26 3.04 0.5 0.5 S
+1523.8 1419.64 0.5 0.5 -0.74 7.81 -0.52 2.52 -0.49 2.65 -0.87 2.78 -0.89 2.75 -0.37 2.65 
+-0.39 2.64 -0.49 2.91 -0.64 2.88 -0.99 4.54 -1.02 4.54 0 1.75 -0.11 1.89 0.37 -0.11 
+0.37 -0.14 0.52 0.14 0.5 0.11 0.13 0.89 0.11 1.02 1.25 -3.17 1.26 -3.25 1.02 -2.65 
+0.99 -2.64 0.89 -1.65 0.87 -1.63 0.76 -1.39 0.89 -1.52 0.73 -2.38 0.76 -2.29 0.13 1.15 
+0.13 1.13 0.13 1.39 0.11 1.39 0.13 1.5 0 1.52 0.13 1.13 0.13 1.25 0.74 -2.25 
+0.89 -2.28 -0.37 3.14 -0.52 3.28 -1.13 4.67 -1.26 4.79 0 -3.14 -0.37 -0.13 -0.26 -0.26 S
+1526.82 1460.07 -1 4.3 -1.13 4.14 0.24 -1.76 0.13 -1.65 -0.24 -0.63 -0.26 -0.5 -1.26 4.54 
+-1.25 4.41 0.5 -3.38 0.49 -3.54 -1.25 3.14 -1.24 3.02 -1.65 4.8 -1.62 4.66 -0.5 0 
+-0.52 0.13 -1.26 2.13 -1.13 2.02 -1.13 2.78 -1.13 2.65 -1 4.77 -0.52 2.41 -0.5 2.39 
+-1.63 4.16 -1.52 3.88 -0.76 1.02 -0.87 0.89 0.76 -3.28 0.63 -3.14 -0.63 0.11 -0.63 0.26 
+0 -1.52 0.11 -1.39 -1.75 4.29 -1.76 4.28 -1.13 1.75 -1.12 1.79 -0.5 0 -0.39 0.11 
+-0.76 0.26 -0.63 0.26 -1 -0.52 -0.36 -0.24 -0.5 -0.39 0 -2.62 -0.39 -0.63 S
+1494.75 1510.22 -0.5 -0.63 -0.26 -0.52 -0.24 -0.62 -0.26 -0.76 -0.24 -0.74 -0.26 -0.76 -0.26 -0.89 
+-0.99 -1 0.13 -1.64 0.14 -1.5 -0.26 -0.89 -0.37 -0.76 -0.26 -0.76 -0.37 -0.75 S
+1490.73 1497.98 -1.39 0 -0.63 -0.24 -0.5 -0.26 0.74 -3.91 0.63 -3.78 1.15 -3.28 1 -3.41 
+0.26 -2.26 0.11 -2.15 1.02 -3.91 0.87 -3.91 0.76 -2.89 0.75 -2.91 0.88 -3.28 0.89 -3.38 
+-0.26 -2.52 -0.74 0.74 -0.76 0.63 -1.12 2.54 -1.13 2.52 -0.52 -0.26 -0.37 -0.37 -1.12 2.52 
+-1.13 2.39 -1.15 3.41 -1 3.52 -1.63 2.91 -1.52 3.02 -0.13 -2.15 0 -2.12 -0.87 0.63 S
+1483.81 1475.82 -0.89 0.63 -0.13 -2.15 -0.11 -2.02 0.74 -2.89 0.63 -2.9 0.13 -2.65 0.26 -2.64 
+0.87 -4.02 0.89 -4.04 S
+1396.75 1545.75 3.14 -3.67 2.15 -2.52 2.75 -3.14 1.89 0.26 -1.75 2.89 1.39 0 1.63 -4.14 
+2.25 -3.17 1.02 1.89 -1.63 5.29 1.37 0.5 3.27 -1.63 -2.26 3.14 -1.78 2.02 1.39 1 
+3.14 -2.52 0.89 1.15 -0.49 2.64 -2.15 0.63 -1.89 1.63 -0.5 2.52 -1.26 -1.52 -1 -1.13 
+0 -1.89 1.37 -3.64 -1 -1.26 -2.64 2.76 -3.64 3.53 -2.65 4.41 -2.39 5.3 -2.25 4.8 
+-2.88 4.27 -1.89 0.5 -2.78 3.41 -3.39 4.66 1.5 -3.9 -0.37 -1.78 -1.39 -0.64 0.5 -2.75 S
+1384.42 1565.64 2.89 -4.29 2.28 -3.78 2.26 -1.89 3.28 -4.9 2.65 -3.54 -1.02 -1.5 S
+1432.23 1472.42 -0.5 6.05 -1.12 4.02 -1.15 4.8 -2 5.43 -0.39 3.01 -1.5 6.05 -3.65 5.04 
+3.25 -7.68 1.89 -6.19 1.13 -4.4 1.26 -5.93 1.02 -4.91 1.76 -5.29 S
+1411.71 1528.47 2.26 -1.39 2.64 -2.89 1.76 -1.13 -1.5 4.78 -2.52 3.77 -1.89 0.63 -0.5 -1.63 
+-0.26 -2.15 S
+1417.38 1543.46 2.76 -2.88 1.26 1 2.28 -4.41 -0.5 -1.64 3.14 -4.64 0.5 1.26 3.02 -4.8 
+-0.39 3.64 -2.25 1.89 -2.13 3.28 0 4.03 -3.28 3.65 -2.15 3.27 -2.26 1.79 0.5 -3.67 
+-0.5 -1.76 S
+1427.06 1514 -0.13 3.91 1.02 0.49 S
+1427.95 1518.4 2.13 -3.4 1.02 -4.27 2.12 -2.15 1.78 -0.89 -1.02 3.91 -2.52 3.28 0.89 0.52 
+-1.52 4.14 1.75 -1.39 -0.37 3.67 -2.02 3.38 -0.63 -2.13 -2.02 3.28 -2.63 4.02 2.13 -4.28 
+1.13 -4.27 -2.12 3.64 -0.5 -1.65 -3.02 5.17 -0.13 -3.39 -1.39 1.5 -0.5 -2.52 2.13 -2.39 
+2.41 -4.41 2 -3.77 S
+1442.79 1486.52 1.63 -2.52 -1.75 4.67 -1.76 4.91 -0.13 2.52 2.02 -3.02 -0.12 2.52 -1.39 4.8 
+1.15 0.87 1.25 -0.74 1.37 -4.3 2.65 -5.16 1.39 -0.37 1.49 0.13 0.13 0.87 0 1.02 
+0.89 -0.63 0.87 -0.52 -1 3.17 -1.13 3.26 -0.75 1.02 -0.89 1 -0.87 0.76 -0.89 0.75 S
+1446.94 1501.52 -1.12 3.28 -0.76 2.15 -0.76 2.13 1.15 -1 0.99 -1.12 1.52 -2.15 1.37 -2.14 
+-1.13 2.78 -1.26 2.64 -0.87 2.65 -1.15 2.64 -1 1.76 -1 1.88 -1.52 1.76 -1.5 1.78 
+-3.04 5.03 -2.62 2.26 -2.15 0 3.41 -5.16 1.26 -4.04 -1.02 -0.5 2.52 -5.17 0.13 -3.14 
+1.52 -4.78 -2.02 3.15 -1.02 -0.52 0.63 -3.78 1.39 -4.14 0.39 -4.3 1 -3.39 2.52 -5.55 S
+1501.3 1523.3 0.74 -1.62 0.76 -1.65 -0.13 1.65 -0.23 1.63 0.87 -1.12 0.89 -1.26 -0.26 1.63 
+-0.24 1.64 -0.5 2.39 -0.52 2.39 -0.63 2.41 -0.63 2.39 -1.5 4.54 -1.64 4.54 -2.12 5.53 
+-2.26 5.56 S
+1493.88 1553.93 -0.76 2.15 -0.63 2.13 -2.52 5.16 -2.52 5.03 -2.02 4.43 -2.02 4.41 -3.78 6.03 
+1.52 -3.91 1.39 -4.02 2.75 -4.92 2.91 -5.03 0.63 -2.15 0.74 -2.13 2.91 -6.68 2.89 -6.8 
+0.5 -2.02 0.63 -2.02 0.5 -2.02 0.52 -2.02 1 -3.41 1 -3.39 0.63 -2.78 0.52 -2.64 
+0.37 -2.02 0.26 -2.02 S
+1480.79 1558.7 -0.62 2.29 -0.63 2.25 S
+1471.72 1591.84 0.63 0.13 1.89 0 -0.37 1.13 -0.39 1.13 S
+1473.48 1594.23 2.28 -3.14 2.25 -3.28 2.39 -3.78 2.38 -3.91 -2.62 5.3 -2.78 5.43 -1.5 2.12 
+-1.52 2.29 -0.37 -0.5 -0.52 -0.52 S
+1473.48 1594.23 -0.37 0.13 S
+1473.11 1594.36 -0.36 0.13 -0.39 -0.5 -0.24 -0.63 -0.25 -0.76 -0.13 -0.76 S
+1480.67 1590.08 1.62 -2.65 1.65 -2.64 1.5 -2.78 1.13 -1.63 1.02 -1.52 1.13 -1.62 0.5 -0.76 
+0.63 -0.63 0.5 -0.75 -1.5 3.53 -1.65 3.39 -1.5 3.53 -0.76 0.76 -0.62 0.74 -0.63 0.76 
+-1.39 2.02 -1.39 1.89 -1.36 1.78 0.37 -1.15 0.37 -1.13 0.39 -1.13 S
+1484.05 1589.58 0.39 -0.12 0.38 -0.14 0.49 -0.26 0.13 0.26 0.26 0.26 S
+1493.88 1573.96 0.74 -1.02 0.76 -0.87 0.89 -1.02 S
+1481.92 1599.91 0.24 -0.12 0.26 -0.13 0.26 -0.26 0.24 0.13 0.5 0 0.26 -0.13 0.26 -0.11 
+0.24 -0.13 S
+1477.39 1613.52 1.75 -2.78 1.65 -2.78 1.76 -2.89 0.76 -1.26 0.87 -1.28 0.89 -1.37 1.13 -1.65 
+2.26 -3.52 S
+1495.75 1576.84 1.02 -2.13 1.13 -2.28 1 -2.25 0.89 -1.39 1.52 -2.78 -0.63 1.89 -1.52 3.77 
+-0.37 1.26 -0.52 1.26 -0.37 1.26 -1.63 3.54 -1.75 3.53 -1.65 3.52 -0.5 -0.5 1.13 -2.9 
+1.13 -2.89 1.13 -2.91 S
+1496.38 1580.25 1.02 -1.63 1.13 -1.65 1 -1.63 -0.87 2.13 -0.89 2.28 -0.87 2.39 -1.15 1.89 
+-1.13 1.76 -1 1.91 0.89 -2.54 0.99 -2.52 0.88 -2.39 S
+1525.07 1527.71 1.52 -3.77 1.39 -3.78 1.37 -3.91 1.39 -3.9 S
+1530.73 1512.35 1.39 -3.91 1.26 -3.52 1.13 -3.67 1.26 -3.52 1.13 -3.64 1.13 -3.67 -0.87 3.15 
+-1.02 3.14 -0.87 3.17 -1.02 3.25 -1 3.28 -1.39 3.8 -1.39 3.78 -1.23 3.77 -1.39 3.64 
+-1.39 3.67 0.99 -2.78 0.89 -2.65 1 -2.78 1.02 -2.78 0.87 -2.63 -1.25 3.28 -1.13 3.39 
+-1.26 3.27 -2.52 6.29 S
+1539.28 1487.54 1.39 -4.79 1.52 -4.91 1.37 -4.93 1.39 -4.91 1.39 -5.04 -0.5 2.02 -0.5 2.13 
+-0.52 2.15 -0.63 2.14 -0.5 2.13 -0.87 2.91 -0.89 2.88 -0.89 2.78 -0.87 2.78 -0.89 2.65 S
+1563.56 1261.16 -0.37 -6.3 -0.39 -6.42 -0.5 -6.43 -0.63 -6.42 -0.37 -3.91 -0.39 -3.78 S
+1560.92 1227.91 -0.37 -3.91 -0.49 -4.04 -0.5 -3.9 -0.26 -2.52 -0.26 -2.39 -0.37 -2.52 -0.26 -2.52 
+-0.37 -2.65 -0.37 -2.52 -0.39 -2.54 -0.37 -2.63 -0.39 -2.54 -0.37 -2.63 -0.5 -2.78 -0.39 -2.78 
+-0.5 -2.78 -0.5 -2.75 -0.5 -2.78 -1.52 -7.55 -0.73 -3.91 -0.76 -3.78 -0.89 -3.91 0 -0.76 
+-0.14 -0.63 -0.11 -0.76 -0.13 -0.62 -0.12 -0.76 0.89 3.91 0.87 3.77 0.76 3.78 0.76 3.79 
+0.75 3.78 0.74 3.78 0.63 3.64 0.76 3.66 0.63 3.64 0.5 3.65 0.39 2.02 0.24 2.15 
+0.25 2.02 0.37 2.02 0.26 2 0.5 3.41 0.37 3.4 0.52 3.41 0.37 3.27 0.37 3.26 
+0.52 4.16 S
+1560.8 1222.61 0.5 4.17 0.37 4.02 0.5 4.04 0.26 4.04 0.26 2.39 0.11 2.28 0.13 2.39 
+0.13 2.26 0.13 2.15 0.13 2.28 0 2.13 0.11 2.14 0.13 2.15 0 2.13 S
+859.7 670.72 -1.89 0.26 -2.02 0.24 -1.89 0.26 2.52 0 -3.14 0.24 -3.02 0.26 -3.15 0.26 
+4.15 -0.63 4.27 -0.52 4.16 -0.37 S
+1433.12 1701.43 -0.76 0.89 -0.63 0.89 -0.76 0.87 -0.75 1.02 -0.76 0.86 -0.63 1.02 -0.87 0.87 
+-0.75 1.02 -0.76 0.99 -0.74 1.02 -0.89 1 -0.76 1.02 -0.86 1 -0.76 1 -0.89 1.02 
+-0.87 1.13 -0.89 1.02 -1 1.13 -0.89 1.13 -0.87 1 -1.02 1.15 S
+1416 1722.48 -1.63 2.02 -1.76 2 -1.78 2.14 -1.76 2.02 -1.89 2.02 -1.75 2.15 -1.89 2 
+-1.89 2.15 -1.99 2.14 -1.89 2.02 -2.02 2.12 -4.04 4.3 -2 2.25 -4.29 4.3 -2.13 2.26 
+-4.41 4.41 -2.25 2.15 -2.28 2.25 -2.26 2.28 -2.39 2.26 -3.41 3.28 -3.52 3.28 -3.64 3.28 
+-3.52 3.28 -3.66 3.27 -3.76 3.28 -7.55 6.55 -3.77 3.14 -3.91 3.28 -4.02 3.15 -3.91 3.27 
+-4.04 3.15 -4.14 3.14 -4.02 3.15 -4.16 3.14 -4.27 3.04 -4.28 3.14 -8.55 6.04 -4.41 3.04 
+-4.41 3.02 -4.53 3.02 -4.51 2.91 -4.54 2.89 -2.02 1.28 S
+1267.17 1851.73 -2.02 1.26 -2 1.26 -4.03 2.52 -1.89 1.13 -2 1.13 -1.88 1.13 -1.89 1.15 
+-3.78 2.26 -1.76 1.02 -1.89 1.13 -1.79 1 -1.88 1.02 -1.76 1 -1.75 0.89 -1.63 1 
+-1.76 1.02 -1.78 0.86 -3.25 1.78 -1.76 0.86 -1.65 0.89 -1.63 0.87 2.39 -1.26 2.25 -1.12 
+2.15 -1.26 2.26 -1.13 2.15 -1.25 2.12 -1.13 2.02 -1.15 2.14 -1.13 2 -1.26 2.02 -1.13 
+1.89 -1.12 2.02 -1.15 3.78 -2.26 1.89 -1.02 1.75 -1.13 1.89 -1.12 1.75 -1.02 1.76 -1.13 
+1.65 -1 1.75 -1.12 1.63 -1.02 3.78 -2.38 3.64 -2.39 3.64 -2.41 S
+1277.73 1844.79 3.54 -2.25 3.52 -2.41 3.52 -2.39 3.41 -2.39 3.38 -2.39 3.41 -2.41 3.25 -2.39 
+3.28 -2.38 3.28 -2.29 6.29 -4.77 3.02 -2.41 3.14 -2.39 3.02 -2.39 2.89 -2.28 2.91 -2.39 
+3.52 -2.91 3.52 -2.76 3.41 -2.91 3.38 -2.88 3.41 -3.04 3.38 -2.89 3.28 -3.02 3.41 -2.91 
+3.25 -3.02 3.28 -3.14 3.28 -3.04 3.26 -3.02 3.14 -3.15 3.28 -3.02 3.14 -3.16 6.29 -6.3 
+2.52 -2.75 2.65 -2.78 2.63 -2.78 2.64 -2.78 2.65 -2.76 2.62 -2.91 2.65 -2.89 2.65 -3.04 
+2.64 -3.02 2.52 -3.02 2.63 -3.04 7.95 -9.44 2.62 -3.14 2.65 -3.28 S
+1427.82 1708.12 2.64 -3.41 2.65 -3.28 S
+1162.13 1905.01 -0.26 0.13 -0.24 0.13 -0.26 0.11 -0.26 0 -0.24 0.13 -0.26 0.13 -0.24 0.13 
+-0.39 0.13 -0.24 0.11 -0.52 0.26 -0.37 0.13 -0.26 0.14 -0.24 0.11 -0.39 0.13 -0.24 0.13 
+-0.39 0.14 -0.24 0.13 -6.16 2.26 -6.29 2.39 -6.16 2.28 -6.29 2.15 -6.16 2.13 -6.3 2.02 
+-6.29 1.89 -6.16 1.89 -6.3 1.89 -6.29 1.78 -6.27 1.63 -6.16 1.65 -6.29 1.63 -6.17 1.52 
+-6.29 1.39 -6.17 1.37 -6.29 1.26 -6.16 1.28 -5.8 1 -5.77 1.13 -5.92 0.89 -5.91 1 
+-5.92 0.89 -5.91 0.89 -5.92 0.74 -6.04 0.76 -5.92 0.63 -6.03 0.63 S
+985.75 1948.09 -6.04 0.63 -6.03 0.49 -6.17 0.39 -6.05 0.37 -6.03 0.39 -6.17 0.24 -6.04 0.26 
+-6.16 0.26 2.64 -0.13 2.5 -0.13 2.52 0 2.41 -0.13 2.5 -0.13 2.52 -0.11 2.41 -0.13 
+2.52 -0.13 4.78 -0.26 2.38 -0.11 2.39 -0.13 2.39 -0.26 2.28 -0.12 2.39 -0.24 2.25 -0.13 
+2.39 -0.25 2.28 -0.13 -2.02 0.13 -1.89 0.13 -1.89 0.26 -2.02 0.11 -1.89 0.14 -1.76 0.13 
+-3.77 0.26 -1.76 0.13 -1.75 0.11 -1.76 0.13 -1.78 0 -3.52 0.26 -1.62 0 -1.65 0.13 
+-1.75 0 6.79 -0.26 6.92 -0.37 6.92 -0.52 6.92 -0.5 6.93 -0.63 7.03 -0.76 S
+991.28 1947.46 7.05 -0.76 7.16 -0.87 7.05 -1.02 7.16 -1 7.18 -1.13 7.16 -1.26 7.18 -1.26 
+7.29 -1.39 7.16 -1.52 7.32 -1.63 6.27 -1.39 6.29 -1.52 6.42 -1.62 6.3 -1.65 6.16 -1.63 
+6.29 -1.78 6.3 -1.89 6.16 -1.89 6.29 -1.89 6.16 -2.02 6.17 -2.12 6.16 -2.15 6.04 -2.15 
+6.03 -2.25 6.16 -2.28 5.93 -2.39 S
+450.33 1744.14 -2.78 -2.89 -2.63 -2.91 -2.78 -3.02 -2.65 -3.02 -2.62 -2.91 -2.65 -3.02 -2.64 -3.14 
+-2.26 -2.65 -2.14 -2.65 -2.13 -2.64 -2.15 -2.65 -2.13 -2.52 -2.02 -2.64 -2.02 -2.52 S
+416.73 1704.97 -2.26 -2.91 -2.14 -2.76 -2.26 -2.78 -2.14 -2.91 -2.13 -2.89 -2.15 -2.78 -2.25 -3.28 S
+401.39 1684.68 -2.26 -3.14 -2.28 -3.15 -2.13 -3.14 -2.15 -3.02 -2.02 -3.04 2.02 2.91 2.02 2.88 
+2.02 3.04 2.12 2.88 2.15 2.91 2.13 3.02 2.15 2.88 2.25 3.04 2.28 3.02 2.26 3.02 
+2.39 3.04 2.39 3.15 S
+416.73 1704.97 1.65 2.02 1.5 1.89 1.63 2.02 1.65 2.02 1.63 1.89 1.65 2.02 3.12 3.78 
+3.28 3.91 3.41 3.91 3.39 3.91 3.41 3.89 3.64 3.91 3.65 4.04 S
+294.57 1301.48 0 -6.05 0.26 -1.13 0.13 -1.12 0.11 -1.13 -0.11 3.65 -0.13 3.51 -0.12 0.76 
+0 0.76 -0.14 0.76 S
+662.17 1840.02 -0.13 -0.39 -0.24 -0.24 -0.26 0 -0.24 -0.14 0.38 0.38 S
+661.68 1839.63 0.49 0.39 S
+659.29 1837.74 -1.52 -0.76 -1.37 -0.62 -1.25 -0.76 -1.26 -0.74 0.74 0 0.63 -0.13 1.39 0.87 
+1.39 0.89 1.26 1.26 S
+640.8 1827.54 -1.76 -0.76 -1.78 -0.75 -2.26 -1.39 -2.12 -1.5 3.02 1.39 2.88 1.26 1 0.86 
+1.02 0.89 S
+627.32 1819.86 -1.99 -1.39 -1.89 -1.39 S
+621.05 1815.95 -1.65 -0.89 -1.62 -0.87 -0.89 -0.39 -1 -0.37 -0.89 -0.76 -0.87 -0.75 -0.63 -0.63 
+-0.5 -0.63 2.13 1.39 2.25 1.26 0.63 0.5 0.63 0.63 1.15 0.75 1.26 0.76 S
+608.7 1809.03 -1.23 -0.52 -1.26 -0.36 0.11 0.36 0.13 0.52 -2.26 -1.15 -2.39 -1.13 -0.89 -0.24 
+-0.76 -0.26 -1.88 -1.13 S
+598.27 1805.12 -1.76 -1.26 0.39 -0.39 -0.52 -0.5 -0.5 -0.63 -1.13 -1 -1 -1.02 -0.26 -0.5 
+-0.13 -0.39 1.65 1.02 1.49 1 1.39 0.63 1.39 0.76 1.63 1.02 1.52 1 1.5 1.02 
+1.52 1 1.63 1.13 1.63 1.02 S
+696.48 2031.95 11.89 0 -0.31 -3.64 -0.98 -3.78 -0.75 -1.89 -0.96 -1.87 -1.17 -1.78 -1.37 -1.7 
+-1.61 -1.61 -1.84 -1.45 -2.08 -1.3 -2.35 -1.13 -2.61 -0.91 -2.89 -0.67 -3.17 -0.43 -3.47 -0.16 
+-3.66 0.2 -3.32 0.59 -3.02 0.89 -2.71 1.24 -2.43 1.5 -2.17 1.76 -1.89 1.99 -1.65 2.17 
+-1.41 2.35 -1.17 2.47 -0.97 2.58 -0.76 2.67 -0.98 5.45 -0.3 5.4 0.18 4.26 0.5 3.9 
+0.8 3.54 1.06 3.19 1.33 2.87 1.52 2.54 1.74 2.23 1.89 1.93 2.04 1.67 2.14 1.39 
+2.26 1.16 2.3 0.89 2.32 0.7 2.34 0.45 4.62 0.37 3.6 -0.2 3.84 -0.65 3.91 -1.24 
+1.91 -0.89 1.84 -1.06 1.78 -1.26 1.65 -1.5 1.49 -1.71 1.37 -1.98 1.15 -2.23 0.96 -2.5 
+0.72 -2.8 0.43 -3.11 -11.59 0 -0.72 2.72 -0.99 2.25 -1.29 1.82 -1.54 1.43 -1.78 1.06 
+-1.97 0.72 -2.15 0.41 -2.32 0.13 -2.86 -0.29 -2.78 -0.86 -2.56 -1.5 -2.3 -2.17 -1.02 -1.35 
+-0.91 -1.52 -0.8 -1.71 -0.7 -1.89 -1 -4.36 -0.37 -5.16 0.18 -3.93 0.61 -3.76 1.04 -3.49 
+1.54 -3.13 0.96 -1.37 1.11 -1.25 1.26 -1.09 1.39 -0.91 1.56 -0.73 1.71 -0.57 1.89 -0.33 
+2.06 -0.13 2.48 0.22 2.28 0.5 2.06 0.84 1.8 1.24 1.52 1.63 1.21 2.06 0.89 2.54 
+0.52 3.02 f*
+718.04 2071.07 43.07 0 0 -10.41 -30.9 0 0 -13.09 28.67 0 0 -10.41 ^ 
+0 -15.17 32.22 0 0 -10.39 -44.4 0 0 59.48 f*
+815.61 2052.93 -11.72 0 -0.43 2.43 -0.89 2 -1.3 1.58 -1.61 1.2 -1.85 0.87 -2.02 0.59 
+-2.11 0.3 -2.13 0.11 -1.88 -0.13 -1.84 -0.35 -1.74 -0.56 -1.56 -0.8 -1.32 -1.02 -1.02 -1.22 
+-0.65 -1.43 -0.24 -1.63 0.24 -1.86 0.69 -1.52 1.17 -1.21 1.65 -0.98 2.14 -0.82 2.63 -0.71 
+6.77 -1.37 4.32 -0.74 3.95 -0.96 3.54 -1.24 3.06 -1.65 1.33 -1.02 1.17 -1.13 1.02 -1.3 
+0.85 -1.43 0.68 -1.63 0.5 -1.8 0.3 -2 0.09 -2.21 -0.09 -2.17 -0.26 -2.08 -0.48 -1.98 
+-0.62 -1.86 -0.85 -1.73 -1.04 -1.61 -1.21 -1.5 -1.43 -1.34 -1.63 -1.22 -1.82 -1.06 -2.05 -0.91 
+-2.23 -0.76 -2.45 -0.61 -2.65 -0.43 -2.88 -0.26 -3.08 -0.11 -3.06 0.13 -2.82 0.32 -2.57 0.54 
+-2.37 0.72 -2.15 0.91 -1.93 1.06 -1.73 1.2 -1.52 1.34 -1.34 1.43 -1.15 1.57 -0.98 1.63 
+-0.8 1.71 -1.12 3.56 -0.5 3.67 11.87 0 0.39 -2.22 0.74 -1.97 1.11 -1.71 1.48 -1.43 
+1.84 -1.13 2.23 -0.82 2.66 -0.5 3.06 -0.18 2.26 0.11 2.15 0.35 2 0.61 1.75 0.85 
+1.48 1.13 1.13 1.41 0.72 1.71 0.26 2.02 -0.26 2.17 -0.76 1.74 -1.3 1.41 -1.84 1.15 
+-2.39 0.93 -2.97 0.82 -7.71 1.59 -5.04 0.98 -4.12 1.32 -3.28 1.68 -2.52 1.97 -1.83 2.26 
+-1.21 2.5 -0.67 2.73 -0.2 2.93 0.11 2.13 0.33 2.02 0.54 1.87 0.71 1.76 0.93 1.61 
+1.09 1.48 1.28 1.34 1.43 1.22 1.56 1.06 1.71 0.93 3.82 1.43 4.28 0.87 4.63 0.29 
+4.1 -0.2 4.05 -0.66 3.89 -1.21 1.82 -0.8 1.73 -1 1.61 -1.17 1.48 -1.35 1.3 -1.54 
+1.15 -1.73 0.95 -1.96 0.74 -2.2 0.52 -2.4 0.26 -2.67 f*
+825.87 2071.07 18.25 0 10.55 -47.15 10.54 47.15 18.58 0 0 -59.48 -11.59 0 0 50.41 
+-11.43 -50.41 -12.18 0 -11.59 50.41 0 -50.41 -11.13 0 0 59.48 f*
+911.42 2069.57 7.42 0 0 -57.98 -11.44 0 0 39.84 -13.67 0 0 7.59 3.23 0.09 
+2.91 0.3 2.58 0.59 2.3 0.96 2.02 1.37 1.78 1.84 1.54 2.38 1.33 3.02 f*
+935.484 2028.84 22.1094 11 re
+f*
+1004.23 2031.95 11.89 0 -0.3 -3.64 -0.98 -3.78 -0.76 -1.89 -0.95 -1.87 -1.15 -1.78 -1.39 -1.7 
+-1.61 -1.61 -1.84 -1.45 -2.09 -1.3 -2.34 -1.13 -2.6 -0.91 -2.89 -0.67 -3.17 -0.43 -3.47 -0.16 
+-3.65 0.2 -3.34 0.59 -3.02 0.89 -2.71 1.24 -2.43 1.5 -2.17 1.76 -1.89 1.99 -1.65 2.17 
+-1.41 2.35 -1.17 2.47 -0.98 2.58 -0.76 2.67 -0.97 5.45 -0.29 5.4 0.15 4.26 0.5 3.9 
+0.8 3.54 1.06 3.19 1.32 2.87 1.52 2.54 1.73 2.23 1.89 1.93 2.04 1.67 2.15 1.39 
+2.26 1.16 2.3 0.89 2.32 0.7 2.34 0.45 4.63 0.37 3.61 -0.2 3.84 -0.65 3.91 -1.24 
+1.91 -0.89 1.86 -1.06 1.76 -1.26 1.65 -1.5 1.52 -1.71 1.34 -1.98 1.15 -2.23 0.96 -2.5 
+0.72 -2.8 0.43 -3.11 -11.59 0 -0.7 2.72 -1.02 2.25 -1.28 1.82 -1.54 1.43 -1.78 1.06 
+-1.97 0.72 -2.15 0.41 -2.32 0.13 -2.87 -0.29 -2.75 -0.86 -2.59 -1.5 -2.3 -2.17 -0.99 -1.35 
+-0.93 -1.52 -0.8 -1.71 -0.7 -1.89 -0.98 -4.36 -0.39 -5.16 0.2 -3.93 0.59 -3.76 1.04 -3.49 
+1.54 -3.13 0.95 -1.37 1.11 -1.25 1.25 -1.09 1.39 -0.91 1.56 -0.73 1.72 -0.57 1.89 -0.33 
+2.06 -0.13 2.47 0.22 2.28 0.5 2.06 0.84 1.8 1.24 1.52 1.63 1.21 2.06 0.89 2.54 
+0.52 3.02 f*
+1042.12 2071.07 13.96 0 20.5 -59.48 -12.35 0 -4.3 11.89 -9.05 0 0 10.41 5.77 0 
+-7.57 22.89 -7.57 -22.89 9.38 0 0 -10.41 -12.93 0 -4.17 -11.89 -12.33 0 20.66 59.48 f*
+1083.7 2071.07 18.27 0 10.55 -47.15 10.54 47.15 18.55 0 0 -59.48 -11.59 0 0 50.41 
+-11.43 -50.41 -12.18 0 -11.59 50.41 0 -50.41 -11.13 0 0 59.48 f*
+1154.99 2069.57 30.76 0 0 -10.39 -23.92 0 -1.78 -11.76 2.66 1.61 2.28 1.07 2.39 0.58 
+2.91 0.17 3.21 -0.3 3.15 -0.87 3.02 -1.49 2.71 -2.15 1.21 -1.32 1.13 -1.48 0.98 -1.67 
+0.82 -1.82 0.67 -2 0.5 -2.2 0.33 -2.36 0.11 -2.56 -0.34 -4.28 -1.02 -3.97 -0.76 -1.82 
+-0.91 -1.73 -1.09 -1.61 -1.25 -1.48 -1.41 -1.34 -1.57 -1.22 -1.73 -1.02 -1.89 -0.89 -2.04 -0.7 
+-2.21 -0.5 -2.36 -0.32 -2.5 -0.11 -4.01 0.3 -3.64 0.89 -3.22 1.43 -2.75 1.95 -2.26 2.45 
+-1.67 2.89 -1.06 3.32 -0.39 3.73 11.13 0 0.16 -1.63 0.43 -1.41 0.69 -1.21 0.96 -0.97 
+1.15 -0.76 1.37 -0.57 1.56 -0.32 1.7 -0.11 1.87 0.13 1.75 0.41 1.61 0.74 1.43 1.11 
+1.17 1.5 0.91 1.96 0.57 2.39 0.22 2.93 -0.24 2.61 -0.57 2.23 -0.85 1.91 -1.12 1.54 
+-1.35 1.19 -1.54 0.85 -1.71 0.5 -1.84 0.18 -2.32 -0.3 -1.95 -0.85 -1.72 -1.37 -1.58 -1.8 
+-10.09 0 5.18 32.12 f*
+Q q
+1829.62 653.578 1296.25 1297.98 re
+Y*
+255 0 r6
+1832.25 1275.61 -0.57 26.98 0.57 26.95 1.69 26.95 2.82 26.96 3.97 26.95 5.12 26.96 6.34 26.95 
+5.86 21.23 1.71 5.73 8.88 26.95 10.2 26.98 5.58 13.41 6.01 13.52 13.11 26.98 7.25 13.67 
+7.44 13.26 16.45 26.99 2.48 3.8 15.84 23.13 10.55 14.28 9.88 12.67 16.49 19.82 6.27 7.14 
+10.07 10.74 10.03 10.75 5.42 5.46 10.48 10.01 10.48 9.98 7.74 6.97 9.31 7.92 9.29 7.9 
+14.02 11.15 12.35 9.29 25.26 17.66 1.11 0.74 26.39 16.54 16.84 9.68 9.5 5.16 26.39 13.29 
+9.36 4.25 9.33 4.25 7.66 3.3 26.39 10.42 13.19 4.58 13.2 4.55 13.2 4.11 13.16 3.77 
+13.2 3.35 13.17 3.32 13.19 2.76 13.17 2.75 13.2 2.19 13.2 2.17 13.17 1.63 13.2 1.63 
+13.17 1.08 13.2 1.09 13.2 0.54 13.17 0.54 26.37 0 13.19 -0.54 13.17 -0.54 13.2 -1.09 
+13.17 -1.08 13.2 -1.63 13.17 -1.63 13.2 -2.17 13.2 -2.19 3.63 -0.76 0 -130.62 -1.36 0 
+-15.54 -0.13 -3.35 -0.16 -15.78 -1.41 -6.03 -5.88 -3.17 -0.76 -12.93 -2.76 -3.08 -0.54 -11.02 1.84 
+-10.74 2.14 -11.26 0.89 -9.92 -4.9 -2.5 -0.95 -10.41 0.2 -8.31 -6.08 0.43 -7.57 -1.7 -1.13 
+-2.47 1.04 -7.32 5.21 -9.59 -0.07 -9.27 -1.36 -8.96 -1.96 -9.27 -1.43 -3.46 1.26 0.57 3.08 
+3.39 5.54 -9.29 2.88 -11.22 -1.64 -3.99 0.71 -12.65 2.11 -5.93 0.07 0.8 4.3 2.54 4.53 
+-9.16 0.8 -2.41 -4.58 -3.06 -4.16 -8.87 -5.66 -10.77 -4.49 -0.41 -3.58 -0.83 -5.36 0.18 -4.08 
+-3.28 -3.23 -8.23 -4.96 -7.94 -5.14 -7.9 -5.27 -3.23 -1.28 -13.57 -2.64 -7.94 -3.63 -6.58 -1.78 
+-14.13 -6.4 -1.52 -0.85 -14.2 -6.49 -6.27 -2.8 -10.83 -5.82 -7.44 -2.5 -15.37 -8.55 -6.07 -7.37 
+-3.47 -2.47 -12.48 -5.86 -15.56 -8.96 -11.11 1.26 -1.02 -0.54 -13.39 -6.97 -10.13 -9.7 2.64 -7.9 
+-12.31 -10.8 -8.11 0.28 -3.2 0.8 -4.36 -5.08 2.78 -2.28 3.78 -3.71 -6.12 -12.83 -0.73 -1.3 
+-12.16 -12.8 -6.55 -10.76 -1.91 -12.66 5.14 -7.18 5.23 -0.3 12.55 3.73 11.76 9.05 6.84 4.34 
+-4.34 -13.59 3.56 -7.98 -1.17 -4.55 -2.17 -9.36 3.64 -8.4 3.9 -8.34 0.46 -0.56 0 -564.35 
+0.22 -2.39 4.46 -12.7 7.8 -12.57 0.3 -6.77 0.74 -6.05 7.62 -12.5 11.71 -11.92 13.18 -11.39 
+2.06 -1.2 14.5 -9.3 5.91 -3.23 10.98 -2.78 3.11 5.36 -0.7 3.28 -4.93 2.8 -9.77 4.25 
+-4.27 1.85 -2.3 0.87 -15.34 10.89 -8.01 11.88 -7.29 12.07 -7.71 12.17 -2.97 4.67 -4.84 7.66 
+-10.79 12.58 -3.67 2.48 0 564.35 5.02 -6.45 4.38 -8.21 3.45 -9.41 -2.2 -9.48 0.57 -6.08 
+4.12 0.3 9.88 1.69 6.03 0.71 6.55 -0.2 11.33 0.93 1.26 -0.24 10.16 -1.97 6.86 3.23 
+7.7 0.21 7.27 -5.06 7.66 -4.64 8.38 -3.75 4.95 1.71 9.5 8.92 5.36 1.02 1.37 -5.4 
+0.04 -7.34 7.57 -4.71 7.64 3.14 7.88 9.72 -0.07 9.12 0.83 4.67 7.94 9.66 1.2 10.74 
+0.48 2.93 2.08 10.61 0.37 3.04 2.74 9.61 1.69 3.02 4.08 10.66 -5.25 3.54 -3.91 4.57 
+1.61 2.46 2.58 0.7 3.78 -4.5 12.11 3.38 2.86 1.17 10.98 3.37 3.69 1.46 9.94 3.29 
+4.64 7.9 -1.89 4.25 -2.8 3.5 0.87 1.28 10.66 7.42 6.17 6.51 -0.35 3.91 -1.5 3.23 
+1.19 1.2 P
+9.01 6.82 -0.66 3.08 1.24 0.87 2.04 0.3 11.94 1.67 1.45 0.11 2.63 -1.8 -2.28 -1.71 
+-7.68 -5.49 -0.17 -3.45 1.8 -2.56 1.97 -2.5 2.24 -2.36 -0.57 -1.21 -6.25 -7.3 -1.67 -2.21 
+-5.36 -7.71 -1.81 -2.23 -9.35 -8.18 -9.7 -7.97 -3.95 -9.35 -0.85 -2.2 -7.48 -9.57 -1.82 -7.01 
+-1.96 -4.88 -1.5 -9.03 5.4 -4.02 5.69 -3.8 11.41 6.04 2.22 1.78 9.83 5.53 2.7 1.59 
+9.41 5.73 1.89 0.5 5.95 -1.54 9.46 6.59 1.41 0.72 5.45 -1.67 5.59 -1.37 3.78 -0.95 
+0 -4.73 -7.12 -6.01 1.39 -8.12 6.14 -2.23 5.86 -3.49 7.01 0.11 7.5 2.7 4.63 5.05 
+-2.09 5.88 -5.08 4.47 -5.96 0.79 -0.48 0.04 -5.64 0.32 -6.17 0.5 0 4.73 1.8 -0.46 
+8.38 7.64 3.91 9.94 1.3 1.37 7.16 7.53 3.91 9.74 0.98 1.32 6.21 7.7 3.32 9.66 
+0.92 0.98 2.99 -0.32 4.73 8.07 0.17 3.43 0 -117.95 -6.25 -9.25 5.34 -7.29 4.35 6.95 
+-3.43 9.59 0 117.95 0.24 5.17 -1.97 0.49 -1.96 0.5 0.13 1 2.32 8.07 -1.3 0.61 
+-1.64 0.07 -0.96 1.04 -1.35 0.5 -1.3 0.52 -1.26 0.57 -1.26 0.58 -3.54 -1.45 0.96 2.56 
+-1.04 0.76 -9.55 -5.45 -1.15 -0.59 -1.41 1.05 -1.35 1.08 -1.26 1.11 -1.22 1.15 -1.34 1.09 
+1.24 0.82 9.48 5.46 -0.61 0.98 -0.89 0.88 -0.32 1.06 -0.74 0.91 -0.28 1.06 -0.39 1.02 
+-0.2 1.04 -12.15 -1.06 -1.41 -0.07 -0.3 1.43 -0.28 1.43 -0.54 1.41 0.28 1.48 -0.5 1.45 
+-11.35 1.02 -13.78 -0.68 -2.19 0.29 2.28 0.43 12.09 2.08 -0.09 1.88 -10.65 2 -13.67 0.13 
+-2.78 0.54 3.1 0.57 11.39 1.56 3.04 0.24 11.61 0.61 -9.96 2.93 -2.82 0.8 1.28 2.23 
+2.13 2.08 1.07 2.29 -8.4 4.03 -12.59 2.61 -1.67 1.15 -8.18 4.62 -12.96 1.82 -1.24 1.59 
+3.08 3.69 3.73 3.54 3.52 3.54 3.71 3.5 4.49 3.19 5.04 2.88 4.71 3 4.73 2.95 
+4.79 2.95 3.45 -0.52 9.36 -2.64 5.54 1.61 5.16 1.84 5.23 1.75 -0.22 6.88 0.37 1.59 
+5.97 1.86 5.95 1.96 1.97 6.27 -3.95 7.44 1.34 2.67 2.99 -1.93 8.01 -4.93 7.4 0.56 
+7.42 0.09 1.8 -1.18 1.06 -7.98 5.21 -6.06 2.8 3.76 0 -75.52 -0.3 -0.02 -0.3 0 
+-0.3 -0.05 -0.3 -0.02 -0.31 -0.04 -0.84 -0.2 -0.57 -0.17 -0.25 -0.09 -0.79 -0.32 -0.24 -0.13 
+-0.43 -0.26 -0.43 -0.3 -0.2 -0.16 -0.18 -0.17 -0.17 -0.15 -0.3 -0.35 -0.15 -0.2 -0.11 -0.17 
+-0.13 -0.19 -0.26 -0.59 -0.07 -0.2 -0.08 -0.39 -0.02 -0.22 -0.02 -0.2 0 -0.2 0.02 -0.2 
+0.04 -0.21 0.02 -0.2 0.13 -0.39 0.17 -0.39 0.11 -0.2 0.11 -0.17 0.13 -0.2 0.13 -0.17 
+0.16 -0.18 0.17 -0.17 0.17 -0.15 0.17 -0.17 0.2 -0.16 0.22 -0.15 0.2 -0.13 0.24 -0.12 
+0.21 -0.13 0.24 -0.13 0.26 -0.11 0.24 -0.11 0.25 -0.11 0.28 -0.08 0.26 -0.09 1.13 -0.26 
+0.3 -0.04 0.29 -0.02 0.3 -0.04 0.3 0 0.3 -0.02 0.29 0 0.3 -9.37 0.29 -9.51 
+0.28 -9.59 0.29 -9.72 0.25 -9.81 0.26 -9.89 0.26 -10.01 0.24 -10.09 0.24 -10.18 0.24 -10.27 
+0.21 -10.35 0.24 -10.41 0.2 -10.51 0.21 -10.57 0.22 -10.66 0.2 -10.7 0.17 -10.78 0.2 -10.83 
+0.17 -10.87 p
+0.17 -10.96 0.18 -10.98 0.17 -11.05 0.15 -11.07 0.16 -11.11 0.13 -11.16 0.15 -11.2 0.13 -11.22 
+0.11 -11.24 0.13 -11.26 0.11 -11.29 0.33 -33.92 0.17 -22.66 0.07 -11.33 0.09 -11.32 0.06 -11.31 
+0.04 -11.3 0.07 -11.28 0.05 -11.27 0.04 -11.24 0.02 -11.22 0.05 -11.17 0.02 -11.16 0 -11.13 
+0.02 -11.07 0 -22.03 -0.02 -10.96 0 -10.87 -0.04 -10.85 -0.02 -10.77 -0.04 -10.72 -0.04 -10.63 
+-0.04 -10.57 -0.07 -10.5 -0.07 -10.44 -0.06 -10.35 -0.09 -10.27 -0.08 -10.18 -0.11 -10.09 -0.09 -10 
+-0.13 -9.92 -0.11 -9.79 -0.12 -9.72 -0.13 -9.62 -0.15 -9.5 -0.15 -9.37 -0.17 -9.29 -0.18 -9.16 
+-0.17 -9.05 -0.2 -8.92 -0.2 -8.81 -0.21 -8.68 -0.21 -8.55 -0.24 -8.42 -0.24 -8.27 -0.26 -8.16 
+-0.04 -1.18 -7.04 0.38 -7.05 -0.07 -7.04 -0.07 -7.01 -0.13 -7 -0.16 -3.64 -7.36 -0.37 -0.82 
+-6.38 -0.24 -6.34 -0.33 -6.27 -0.34 -0.86 -7.36 -0.09 -0.82 -5.58 -0.48 0.98 -7.31 0.16 -0.8 
+-4.82 -0.58 -4.84 -0.55 3.54 -7.16 0.43 -0.8 -4.08 -0.61 -4 -0.67 -3.88 -0.72 -3.8 -0.76 
+-1.61 0.61 -13.34 5.64 -4.17 -0.85 -4.21 -0.78 -3.84 -1.02 -1.74 0.61 -14.91 5.64 -1.97 0.82 
+-12.8 7.9 -12.3 8.27 -11.84 8.66 -0.83 1.24 -4.49 8.79 -10.53 9.22 -14.78 7.42 3.47 -9.23 
+0.26 -1.11 -6.17 -1.2 5.56 -9.59 0.69 -1.07 -5.14 -1.54 7.5 -9.37 0.89 -1.09 9.05 -9.22 
+1.11 -1 -3.64 -1.75 11.04 -8.79 1.35 -1 -2.39 -2.02 -2.91 -1.76 -2.28 -2 -2.12 -2.04 
+-1.76 -2.15 -1.52 -2.23 -1.21 -2.32 -0.82 -2.45 -0.5 -2.52 -0.07 -2.65 17.77 -7.54 2.26 -0.84 
+0.63 -2.5 0.86 -2.52 1.37 -2.63 1.72 -2.66 2.08 -2.72 2.45 -2.75 2.82 -2.78 -1.65 0 
+-14.73 0.11 20.83 -5.21 2.32 -0.5 3.95 -2.82 4.36 -2.8 4.73 -2.75 5.1 -2.74 5.51 -2.69 
+5.82 -2.61 6.27 -2.54 9.38 -0.24 9.39 -0.24 2.06 0 6.08 -1.88 6.27 -1.8 6.53 -1.67 
+6.81 -1.5 14.26 2.47 1.54 0.33 6.05 -1 6.16 -0.84 6.29 -0.74 6.38 -0.57 6.45 -0.46 
+6.51 -0.3 6.53 -0.13 6.54 0 0.98 -0.54 7.36 -4.41 7.71 0.37 7.64 0.54 7.72 0.56 
+7.47 0.93 1.65 -0.32 -0.26 -0.59 -7.7 -0.98 -2.73 -5.03 -0.37 -0.61 -4.93 -4.91 13.98 -3.11 
+11.67 1.35 11.37 1.73 11.09 2.02 10.77 2.3 2.19 -0.04 20.66 0.48 11.11 3.32 10.63 3.56 
+10.05 3.75 9.46 3.91 2.71 0.52 11.94 2.56 11.91 2.56 9.07 4.8 8.14 4.82 7.57 4.86 
+2.35 1.67 0 -53.39 -16.35 -4.92 -5.36 -2.65 16.84 4.9 4.86 2.67 0 53.39 4.47 3.16 
+6.11 4.8 5.45 4.73 4.77 4.64 4.19 4.56 3.38 4.38 3.08 4.36 2.37 4.17 1.87 4.04 
+1.34 3.93 0.8 3.73 0.28 3.58 -0.08 3.45 1.82 1.3 15.64 11.02 -1.3 3.28 -17.23 -5.64 
+-1.97 -0.54 1.61 1.21 13.84 11.07 -17.49 -6.12 -2.34 -0.82 -2.32 2.67 -2.8 2.45 -3.15 2.32 
+-3.64 2.11 -3.91 1.98 -16.95 -6.38 -1.95 -0.67 -4.04 1.74 -4.6 1.45 -4.14 1.78 -4.43 1.68 
+-4.86 1.43 -5.1 1.35 0.61 1.04 5.69 8.96 -5.79 1.28 -5.99 1.15 -6.3 1 -6.46 0.91 
+-6.62 0.84 -6.88 0.67 -13.67 -7.05 -1.61 -0.78 -6.55 0.71 -6.81 0.5 -6.64 0.74 -6.88 0.56 
+-7.03 0.43 p
+-7.08 0.43 -11.13 -6.95 -1.43 -0.96 -6.59 0.55 -6.88 0.17 -6.73 0.52 -6.92 0.15 -7.05 -0.13 
+-6.84 0.52 -7.2 -0.76 -6.88 0.52 -6.99 0.11 -7.01 0.28 0.04 1.18 0.26 8.16 0.24 8.27 
+0.24 8.42 0.21 8.55 0.21 8.68 0.2 8.81 0.2 8.92 0.17 9.05 0.18 9.16 0.17 9.29 
+0.15 9.37 0.15 9.5 0.13 9.62 0.13 9.72 0.11 9.79 0.13 9.92 0.09 10 0.11 10.09 
+0.08 10.18 0.09 10.27 0.06 10.35 0.07 10.44 0.07 10.5 0.04 10.57 0.04 10.63 0.04 10.72 
+0.02 10.77 0.04 10.85 0 10.87 0.02 10.96 0 22.03 -0.02 11.07 0 11.13 -0.02 11.16 
+-0.05 11.17 -0.02 11.22 -0.04 11.24 -0.05 11.27 -0.07 11.28 -0.04 11.3 -0.06 11.31 -0.09 11.32 
+-0.07 11.33 -0.17 22.66 -0.33 33.92 -0.11 11.29 -0.13 11.26 -0.11 11.24 -0.13 11.22 -0.15 11.2 
+-0.13 11.16 -0.16 11.11 -0.15 11.07 -0.17 11.05 -0.18 10.98 -0.17 10.96 -0.17 10.88 -0.2 10.83 
+-0.17 10.78 -0.2 10.7 -0.22 10.66 -0.21 10.57 -0.2 10.51 -0.24 10.41 -0.21 10.35 -0.24 10.27 
+-0.24 10.18 -0.24 10.09 -0.26 10.01 -0.26 9.89 -0.25 9.81 -0.29 9.72 -0.28 9.59 -0.29 9.51 
+-0.3 9.38 0.3 0.02 0.31 0 0.3 0.04 0.28 0.02 0.3 0.04 1.13 0.26 0.26 0.09 
+0.28 0.08 0.26 0.11 0.24 0.11 0.26 0.11 0.24 0.13 0.22 0.13 0.24 0.13 0.2 0.13 
+0.21 0.15 0.2 0.16 0.17 0.17 0.17 0.15 0.18 0.17 0.15 0.18 0.13 0.17 0.13 0.2 
+0.11 0.17 0.11 0.2 0.17 0.39 0.13 0.39 0.04 0.2 0.02 0.21 0.02 0.2 0 0.2 
+-0.02 0.2 -0.02 0.22 -0.08 0.39 -0.07 0.2 -0.26 0.59 -0.13 0.19 -0.11 0.17 -0.15 0.2 
+-0.31 0.35 -0.17 0.15 -0.17 0.17 -0.2 0.16 -0.21 0.15 -0.2 0.15 -0.24 0.13 -0.22 0.13 
+-0.24 0.13 -0.78 0.32 -0.26 0.09 -0.57 0.17 -0.84 0.2 -0.3 0.04 -0.3 0.02 -0.3 0.05 
+-0.29 0 -0.32 0.02 -0.29 0 0 75.52 1.84 2.47 1.59 1.43 6.57 -0.39 6.55 -0.34 
+6.55 -0.57 4 -0.54 0 -122.62 -2.56 -0.46 -2.54 -0.48 -2.5 -0.54 -2.52 -0.48 -2.54 -0.41 
+-2.41 -1.02 -0.57 -8.34 4.47 -7.83 1.15 -1.58 4.99 -7.36 4.16 -0.17 0.2 9.05 0.07 1.06 
+3.39 0.79 1.04 -0.87 6.7 -7.1 -1.15 8.55 -0.17 1.52 -2.17 8.64 -6.25 6.25 -0.8 0.78 
+0 122.62 2.47 -0.35 6.25 -1.37 6.25 -1.39 0.33 -0.07 0 -98.78 -1.26 -1.15 7.71 -6.47 
+10.24 -4.34 1.76 1.67 -7.99 6.47 -8.57 3.12 -1.88 0.7 0 98.78 5.88 -1.41 0.24 -1.58 
+-0.22 -7.01 5.23 -1.76 5.12 -1.89 4.71 -2.23 4.62 -2.32 -0.11 -1.54 -3.32 -6 -1.56 -2.02 
+-4.38 -6.23 3.32 -1.91 3.06 -2.06 10.8 2.13 5.6 5.73 1.56 1.43 2.32 0.28 4.19 -2.69 
+3.54 -3.02 4.38 -2.78 -2.43 -1.59 -6.96 -4.9 1.91 -3.02 2.65 -2.82 2.73 -2.85 1.58 -3.06 
+1.46 -3.05 -1.52 -1.02 -8.54 -2.93 -3.38 -0.91 -9.5 -2.84 0.63 -2.3 1.15 -2.3 -2.88 -0.39 
+-11.29 -2.12 1.3 -1.87 -0.46 -1.89 -1.89 -0.2 -11.72 -1.04 0.11 -1.47 11.85 -2.46 9.63 -1.13 
+0 -21 -2.69 -1.39 8.66 -6.88 11.7 -3.34 0.69 3.11 -7.92 6.1 -7.59 1.76 -2.84 0.65 
+0 21 p
+4.11 -0.48 11.17 0.39 0.59 2.5 -0.15 2.56 1.86 0.34 2 -0.67 0.17 -2.69 -0.08 -2.67 
+-0.14 -2.67 0.2 -2.75 0.39 -2.84 9.61 -4.8 1.61 -1.21 -0.56 -3.06 -0.44 -3.14 8.64 -6.12 
+1.39 -1.43 -1.48 -3.23 -2.34 0.39 -11.46 2.32 -1.34 -2.91 7.36 -6.94 11.13 -6.8 1.65 -1.66 
+-3.04 -2.91 -3.11 -2.88 -2.71 -3.17 -2.64 0.83 -10.03 7.62 -0.74 1.23 2.49 2.69 -7.37 7.96 
+-11.46 3.68 -2.37 -1.93 -1.04 -2.82 5.86 -7.18 0.76 -1.56 5.64 -8.53 9.38 -7.94 1.37 -2.28 
+3.82 -8.48 0.48 -1.98 -3.99 -2.84 -4.49 -2.34 -4.26 -2.68 -2.79 1.7 -8.99 5.47 -4.71 -1.5 
+-4.38 -1.89 -4.84 -1.29 -1.8 1.24 -8.09 6.51 -4.23 -1.39 -4.43 -1.08 -0.26 -8.77 -0.39 -1.61 
+-4.86 -1.25 -4.54 -2.39 -1.65 -7.49 -1.21 -2.3 -2.73 -8.72 -0.65 -3.04 -3.16 -7.9 -1.5 -2.3 
+-6.27 -2.75 -3.34 -6.23 -1.04 -10.66 1.5 -10.59 6.27 -7.46 6.88 -2.54 2.54 -10.66 0.46 -1.41 
+9.68 -7.01 1.96 -1.45 -1.39 -2.22 -6.27 -9.44 8.12 -3.09 9.61 -1.23 0.93 0.02 0 -5.36 
+-8.94 -1.43 -0.46 -0.09 -9.16 -4.32 -5.77 -6.92 -2.67 -2.95 -0.5 -0.54 -6.1 -8.01 7.08 -5.62 
+5.45 6.23 3.8 5.55 10.38 -1.93 9.53 4.32 5.03 5.82 -7.66 9.89 0 5.36 8.51 0.24 
+2.99 -3.78 8.36 -3.88 9.09 2.86 9.01 -5.92 3.84 -4.56 9.37 2.71 4.6 5.64 2.74 2.73 
+9.39 1.82 8.33 4.36 9.53 1.39 8.62 3.32 9.52 1.5 1.33 0.07 9 -0.05 7.57 5.17 
+2.04 1.78 0 -25.5 -1.5 -0.3 -8.9 -0.63 0.24 -2.64 3.16 -11.48 -5.32 -6.38 -9.33 -4.58 
+-8.73 3.54 -4.23 1.57 -2.11 -3.32 4.1 -2.21 8.62 -6.36 5.95 -2.85 10.7 1.76 10.61 2.09 
+11.24 0.58 8.48 1.71 2.39 -0.19 13.11 -6.67 1.93 -0.63 0.54 1.67 -2 1.5 -12.91 5.53 
+-2.11 1.72 -5.3 8.38 -8.36 9.65 -4.47 3.71 -5.84 4.84 0 25.5 2.21 1.96 -7.75 9.72 
+-0.43 9.52 9.39 -5.1 8.21 -6.03 6.96 0.2 3.71 -0.35 10.03 1.09 2.58 8.98 0.8 1.15 
+3.11 9.77 7.81 3.67 7.4 -0.8 7.72 -3.89 7.17 4.8 3.93 8.2 4.66 7.14 3.71 7.81 
+12.66 -0.68 1.45 -0.76 0.07 -0.7 4.91 -14.45 -0.76 -1.76 -5.51 -5.04 -1.39 -0.32 0.28 -0.79 
+5.9 -12.89 -2.32 -4.47 -6.07 -7.12 0.06 -12.68 11.98 -3.45 3.19 -1.37 2.54 -6.77 -9.27 -3.95 
+-2 -11.75 13.3 -6.66 0.48 -0.09 0.24 0.57 5.25 9.92 2.97 12.72 0.26 0.35 0.16 -0.02 
+13.32 -1.95 4.1 -0.63 10.61 -3.02 5.71 -0.17 8.2 -2.28 8.88 4.9 8.24 4.19 1.33 -0.32 
+6.57 7.92 6.29 8.05 9.53 3.66 4.77 9.68 7.45 6.1 6.7 6.9 3 11.07 -6.05 17.51 
+-10.59 10.89 -1.32 3.75 -7.4 17.54 -9.16 8.96 -2 3.43 -3.3 11.74 -2.19 12.24 -5.77 7.6 
+-13.11 13.71 -0.67 1.26 -0.24 0.41 -8.38 13.87 -0.97 9.79 -9.42 12 -1.91 2.34 0.8 1 
+2.2 6.7 3.95 6.36 2.08 0.24 -3.73 3.38 -7.55 10.12 -14.64 10.71 -8.96 5.64 -5.21 10.11 
+-14.28 8.83 -6.03 3.95 -16.61 8.73 -6.12 2.63 1.37 2.32 12.98 -1.2 11.3 0.2 13.34 -2.32 
+12.44 -7.01 11.54 -8.62 0.84 5.41 -11.52 7.55 -11.03 7.25 -13.84 7.4 -13.02 1.56 -8.55 5.12 
+-17.97 7.64 p
+-11.45 -0.8 -0.83 -6.34 -1.2 -2.37 -5.86 2.04 -16.37 5.13 -11.98 -1.32 -10.87 -2.39 -1.54 -6.64 
+8.46 -6.6 7.45 -6.84 -0.11 -2.41 -5.16 1.82 -14.91 3.54 -4.12 0.91 -8.86 5.6 -7.64 5.8 
+-9.27 5.16 -9.41 4.95 -8.88 5.1 -1.06 2.39 9.68 4.12 8.79 4.32 9.12 3.93 -2.68 7.49 
+-16.57 1.13 -4.39 0.43 0 130.62 9.55 -1.99 13.2 -2.76 13.2 -3.34 13.17 -3.32 13.15 -3.77 
+10.5 -3.26 0 -123.27 1.09 -7.5 17.92 -5.47 -0.43 7.45 -9.29 2.75 -6.23 1.87 -3.06 0.91 
+0 123.27 2.7 -0.85 13.2 -4.55 13.2 -4.58 26.39 -10.42 7.66 -3.3 9.35 -4.25 9.33 -4.25 
+26.39 -13.29 9.5 -5.16 16.84 -9.68 13.2 -8.27 13.21 -8.27 1.09 -0.74 25.26 -17.66 12.35 -9.29 
+14.02 -11.15 9.29 -7.9 9.31 -7.92 7.75 -6.97 10.5 -9.98 10.46 -10.01 5.43 -5.46 20.1 -21.48 
+6.27 -7.14 16.49 -19.82 9.88 -12.67 10.55 -14.28 15.84 -23.13 2.47 -3.8 16.45 -26.99 7.45 -13.26 
+7.25 -13.67 13.11 -26.98 6.01 -13.52 5.57 -13.41 10.22 -26.98 8.85 -26.95 1.71 -5.73 5.86 -21.23 
+6.33 -26.95 5.12 -26.96 3.97 -26.95 2.82 -26.96 1.7 -26.95 0.56 -26.95 -0.56 -26.98 -1.7 -26.95 
+-2.82 -26.96 -3.97 -26.95 -5.12 -26.96 -6.33 -26.95 -5.86 -21.23 -1.71 -5.71 -8.85 -26.98 -10.22 -26.97 
+-5.57 -13.41 -6.01 -13.52 -13.11 -26.97 -7.25 -13.67 -7.45 -13.26 -16.45 -26.99 -2.47 -3.8 -15.84 -23.13 
+-10.55 -14.28 -9.87 -12.67 -16.49 -19.82 -6.29 -7.14 -10.03 -10.75 -10.05 -10.74 -5.43 -5.47 -10.48 -10 
+-10.48 -9.98 -7.75 -6.97 -9.31 -7.92 -9.29 -7.9 -14.02 -11.16 -12.35 -9.29 -25.26 -17.66 -1.11 -0.74 
+-26.39 -16.54 -16.84 -9.68 -9.5 -5.16 -26.39 -13.29 -9.33 -4.25 -9.35 -4.25 -7.66 -3.28 -26.39 -10.46 
+-26.39 -9.12 -13.2 -4.1 -13.15 -3.77 -13.2 -3.32 -13.17 -3.34 -13.2 -2.76 -13.18 -2.75 -13.2 -2.19 
+-13.2 -2.17 -13.17 -1.63 -13.2 -1.63 -13.17 -1.08 -13.2 -1.09 -13.17 -0.54 -13.19 -0.54 -26.37 0 
+-13.2 0.54 -13.17 0.54 -13.2 1.09 -13.17 1.08 -13.2 1.63 -13.17 1.63 -13.2 2.17 -13.2 2.19 
+-13.17 2.75 -13.19 2.76 -13.17 3.34 -13.2 3.32 -13.16 3.77 -13.2 4.1 -26.39 9.12 -26.39 10.46 
+-7.66 3.28 -9.33 4.25 -9.36 4.25 -26.39 13.29 -9.5 5.16 -16.84 9.68 -26.39 16.54 -1.11 0.74 
+-25.26 17.66 -12.35 9.29 -14.02 11.16 -9.29 7.9 -9.31 7.92 -7.74 6.97 -10.48 9.98 -10.48 10 
+-5.42 5.47 -10.03 10.74 -10.05 10.75 -6.29 7.14 -16.49 19.82 -9.87 12.67 -10.55 14.28 -15.84 23.13 
+-2.48 3.8 -16.45 26.99 -7.44 13.26 -7.25 13.67 -13.11 26.97 -6.01 13.52 -5.58 13.41 -10.2 26.97 
+-8.87 26.98 -1.71 5.71 -5.86 21.23 -6.34 26.95 -5.12 26.96 -3.97 26.95 -2.82 26.96 -1.69 26.95 p f*
+0 155 255 rG
+2109.18 1584.87 -5.14 7.18 1.91 12.66 6.55 10.76 12.16 12.8 0.73 1.3 6.12 12.83 -3.78 3.71 
+-2.78 2.28 4.36 5.08 3.2 -0.8 8.11 -0.28 12.31 10.8 -2.64 7.9 10.13 9.7 13.39 6.97 
+0 -2 -1 -0.63 -14.11 -9.07 -2.28 -2.17 0.91 -1.96 11.61 -0.08 12.71 12.15 -7.86 1.76 
+0 2 1.02 0.54 11.11 -1.26 15.56 8.96 12.48 5.86 3.47 2.47 6.07 7.38 15.37 8.55 
+7.44 2.5 10.83 5.82 6.27 2.8 14.2 6.49 1.52 0.85 14.13 6.4 6.58 1.78 7.94 3.63 
+13.57 2.64 3.23 1.28 7.9 5.27 7.94 5.14 8.23 4.96 3.28 3.23 -0.18 4.08 0.83 5.36 
+0.41 3.58 10.77 4.49 8.87 5.66 3.06 4.16 2.41 4.58 9.16 -0.8 -2.54 -4.53 -0.8 -4.3 
+5.93 -0.07 12.65 -2.11 3.99 -0.71 11.22 1.64 9.29 -2.88 -3.39 -5.54 -0.57 -3.08 3.46 -1.26 
+9.27 1.43 8.96 1.96 9.27 1.36 9.59 0.07 7.32 -5.21 2.47 -1.04 1.7 1.13 -0.43 7.57 
+8.31 6.08 10.41 -0.2 2.5 0.95 9.92 4.9 11.26 -0.89 10.74 -2.14 11.02 -1.84 3.08 0.54 
+12.93 2.76 3.17 0.76 6.03 5.88 15.78 1.41 3.35 0.16 15.54 0.13 0 -0.78 -1.35 0 
+-12.04 -0.11 -6.67 -0.28 -12.56 -1.11 -6.17 -5.84 -6.29 -1.52 -9.42 -2 -6.18 -1.07 -11.07 1.46 
+-10.39 2.52 -11.27 0.41 -7.09 -3.52 -5.01 -1.89 -10.29 -0.02 -6.54 -4.75 0.43 -7.57 -3.34 -2.23 
+-4.97 2.06 -4.53 3.23 -9.53 0.63 -9.01 -1.65 -8.5 -2.47 -9.25 -1.02 -6.86 2.49 1.09 6.14 
+1.37 2.26 -3.76 1.15 -11.7 -0.63 -7.96 1.41 -8.31 1.37 -11.8 0.11 -4.21 0.33 -4.32 -3.54 
+-3.1 -2.73 -8.05 -5.54 -1.87 -6.14 -1.3 -1.56 -6.73 -5.51 -8.07 -4.93 -7.94 -5.03 -8.31 -5.1 
+-6.45 -2.56 -8.27 -1.61 -12.41 -5.4 -2.56 -1.23 -12.66 -4.76 -10.35 -5.87 -2.36 -1.11 -16.93 -7.54 
+-1.26 -0.7 -14.82 -4.86 -11.2 -6.21 -7.94 -9.33 -3.28 -2.86 -15.3 -7.44 -8.31 -5.17 4.55 -0.63 
+0 -3.75 -8.83 -5.36 7.23 0.59 3.73 3.26 -2.13 1.52 0 3.75 1.32 -0.2 5.02 -3.69 
+-8.92 -7.77 -12.3 -1.24 -14.52 -13.21 -1.17 -1.48 -1.32 0.3 -10.29 0.65 -13.58 -12.76 -1.13 -1.76 
+-6.84 -12.52 -6.62 -14.29 4.04 -7.53 -4.99 -5.55 -7.42 -3.32 -0.11 10.59 -5.02 -3 -0.67 -1.11 
+-1.28 -11.85 2.58 -1.63 3.69 -4.55 9.74 0.26 11.96 8.18 12.11 7.96 12.02 11.11 4.99 6.86 
+7.54 12.09 1.45 1.76 11.85 9.16 5.23 -0.89 -2.62 -9.55 -3.21 -4.45 -11.31 -12.04 2.36 -7.66 
+-1.87 -5.23 -5.42 -8.83 -4.8 -7.16 -4.9 -9.83 -0.24 -10.81 3.17 -8.35 3.41 -8.33 4.84 -7.21 
+5.14 -7.01 11.29 -1.06 -6.34 -9.86 0.93 -8.29 6.23 -0.29 8.4 3.04 6.05 -6.46 7.31 0.15 
+4.6 0.02 11.3 -0.3 7.64 -4.45 4.97 -2.48 5.25 1.21 9.16 -2.43 4.34 3.4 10.71 2 
+2.74 -10.61 1.41 -1 5.81 -3.91 0.57 0.21 8.94 9.16 -0.04 4.04 1.64 9.38 8.33 9.44 
+0.85 7.79 0.98 5.88 1.52 7.77 0.74 6.13 1.73 6.12 3.37 6.05 3.3 8.64 -6.12 2.87 
+-3.71 4.86 3.19 4.94 5.14 1.35 3.47 -4.64 9.89 2.73 5.75 2.34 7.86 2.36 7.4 2.93 
+6.04 1.97 2.82 4.82 -0.54 5.34 -2.52 3.76 1.74 2.54 10.25 7.95 3.32 3.54 1.39 4.95 
+-1.06 3.52 P
+2.39 2.34 7.24 5.54 0 3.38 2.48 1.72 4.06 0.63 9.89 1.34 2.93 0.24 3.99 -1.26 
+-4.54 -3.41 -4.6 -3.25 -2.22 -4.3 1.63 -2.61 1.83 -2.54 2.19 -2.32 -1.11 -2.41 -4.43 -5.14 
+-3.36 -4.43 -3.71 -5.32 -3.58 -4.46 -8.96 -8.45 -9.88 -7.83 -3.03 -7.18 -1.68 -4.36 -6.16 -10.39 
+-0.46 -1.74 -3.91 -9.7 -0.89 -5.43 4.66 -4.77 5.08 -4.51 9.84 5.16 4.42 3.59 7.08 3.95 
+5.4 3.16 6.77 4.08 3.73 1.02 6.23 -1 7.7 5.34 2.82 1.43 5.4 -1.65 5.67 -1.15 
+5.51 -1.41 7.2 6.55 3.89 9.96 2.58 2.69 5.88 6.17 4.14 9.7 1.95 2.62 5.14 6.41 
+3.32 9.66 1.8 1.96 3 -0.16 4.04 6.88 0.34 7.33 -1.97 0.67 -1.98 0.61 0.24 2 
+1.91 6.62 -1.26 0.85 -1.93 -0.26 -0.63 1.64 -1.39 0.52 -1.34 0.54 -1.3 0.58 -1.34 0.57 
+-5.95 -3.52 3.02 4.47 -1.04 0.84 -8.18 -4.69 -2.3 -1.15 -1.46 1.07 -1.37 1.11 -1.3 1.15 
+-1.24 1.17 -1.61 1 2.47 1.64 8.04 4.67 -0.59 1.04 -1.15 0.82 -0.08 1.19 -0.98 0.91 
+-0.15 1.15 -0.44 1.07 -0.06 1.13 -10.5 -0.93 -2.84 -0.18 -0.3 1.48 -0.39 1.45 -1.02 1.41 
+0.56 1.56 -1.08 1.5 -9.12 0.78 -13.8 -0.78 -4.36 0.54 4.55 0.91 10.07 1.76 -0.61 1.95 
+-8.29 1.52 -13.71 0 -5.51 1.08 6.21 1.13 8.33 1.15 6.08 0.5 8.94 0.48 -7.66 2.23 
+-5.69 1.58 1.32 2.32 2.89 2.06 0.57 2.46 -6.05 2.88 -12.72 2.45 -3.36 2.3 -6.43 3.6 
+-13.43 1.2 -2.52 3.16 2.95 3.8 4.04 3.56 3.32 3.69 3.47 3.67 4.8 3.21 5.66 2.73 
+4.77 3.06 4.58 3.13 4.51 3.23 6.95 -1.02 5.38 -1.52 6.27 1.22 5.36 1.89 5.34 1.82 
+-0.18 4.91 0.74 3.21 5.9 2.17 5.77 2.58 1.17 3.73 -4.36 7.36 2.64 5.34 6.03 -3.87 
+5.41 -3.32 7.64 0.37 7.66 -0.35 3.62 -2.37 0.96 -7.99 3.6 -4.19 3.21 4.32 3.17 2.82 
+6.68 -0.54 6.73 -0.22 6.7 -0.48 6.64 -0.84 6.27 -1.65 6.34 -1.43 6.38 -1.43 0.5 -3.16 
+-0.17 -5.21 5.34 -1.82 5.25 -1.93 4.62 -2.47 4.55 -2.47 -0.26 -3.11 -2.12 -3.79 -3.15 -4.04 
+-3.23 -4.55 3.47 -1.96 3.11 -2.16 7.96 1.54 4.11 4.23 3.12 2.88 4.64 0.57 4.63 -2.62 
+3.52 -3.12 5.42 -2.58 -4.88 -3.15 -5.02 -3.5 1.24 -3.27 2.86 -2.86 3.28 -2.85 1.19 -3.19 
+1.09 -3.17 -3.05 -2.04 -5.28 -1.78 -6.79 -1.82 -6.82 -1.99 0.31 -2.43 1.49 -2.34 -5.79 -0.78 
+-9.54 -1.76 2.19 -1.95 -1.23 -1.93 -3.8 -0.37 -9.85 -0.87 0.13 -1.54 9.94 -2.06 13.74 -1.46 
+8.59 0.33 1.17 2.37 -0.09 2.5 3.73 0.69 4 -1.34 0.15 -2.75 -0.21 -2.7 -0.13 -2.71 
+0.71 -2.93 1.29 -3.15 6.61 -3.32 3.23 -2.48 -0.2 -3.23 0.29 -3.5 6.09 -4.32 2.76 -2.91 
+-1.2 -3.41 -4.69 0.8 -8.98 1.82 -0.91 -3.21 5.29 -5.02 10.98 -6.97 3.28 -3.34 -3.32 -2.8 
+-3.26 -2.85 -2.34 -3.53 -5.32 1.67 -9.75 7.82 -1.48 2.47 2.21 2.8 -6.21 6.71 -9.65 3.1 
+-2.62 -1.82 0.09 -3.67 4.1 -5.05 1.55 -3.12 4.7 -7.14 9.57 -7.81 2.73 -4.55 2.71 -6.1 
+0.95 -3.95 -3.77 -3.19 -4.6 -2.34 -4.02 -3.12 -5.58 3.43 -6.36 3.86 -5.09 -1.11 -4.38 -2.06 
+-5.12 -0.93 p
+-3.61 2.47 -6.18 4.99 -4.25 -1.57 -4.58 -0.99 -0.2 -6.67 -0.76 -3.23 -4.84 -1.47 -4.17 -3.95 
+-0.89 -4.04 -2.41 -4.64 -2.04 -6.51 -1.3 -6.09 -1.93 -4.79 -2.97 -4.61 -6.14 -5.08 -0.87 -1.65 
+-2.73 -10.71 2.39 -10.57 3.88 -4.6 8.14 -1.54 7.21 4.91 0.67 -0.7 0 -3.32 -5.93 -4.62 
+8.03 -8.44 1.54 9.35 -3.64 3.71 0 3.32 6.62 -6.71 2.61 -2.49 0.78 0.41 0 -4.38 
+-6.31 -4.78 8.88 -8.68 3.61 10.16 -6.17 3.3 0 4.38 5.91 3.28 0.57 0.76 5.75 8.88 
+1.15 -1.04 0 -3.08 -2.93 -4.82 5.82 -5.75 1.11 6.9 -3.99 3.67 0 3.08 6.81 -6.23 
+2.21 -10.79 0.46 -11.11 7.18 -3.47 9.66 -1.46 7.77 -1.58 2.26 -0.41 11.74 -6.1 7.88 4.8 
+9.33 0.99 9.54 0.65 8.62 2.71 2 0.41 6.81 1.87 7.01 3.54 0.84 0.46 5.99 6.92 
+-0.75 8.48 1.88 5.19 6.34 -1.04 7.16 -4.04 4.84 7.46 2.95 -1.21 0 -2.8 -1.73 -6.21 
+10.85 -6.66 -3.82 10.68 -5.3 2.19 0 2.8 8.09 -3.3 5.78 -4.12 6.07 6.01 2.41 7.5 
+0.5 2.06 -2.34 12.54 -0.2 2.34 2.45 -0.52 8.03 -10.09 10.98 -1 -0.33 10.05 -0.13 2.3 
+2.11 -0.46 11.76 -2.2 5.34 6.13 -0.39 11.26 3.56 7.21 0.11 0.57 2.02 7.64 3.45 0.41 
+6.03 -3.63 0 -4.6 0.46 -6.49 6.6 0.43 -3.25 4.37 -3.8 1.69 0 4.6 5.71 -3.38 
+5.54 -0.29 -0.22 9.34 0.04 1 1.7 2.28 4.05 3.17 -0.28 4.97 -10.25 11.24 -4.99 3.86 
+-0.78 9.07 4.62 -1.35 0 -1.45 2.47 -6.38 8.21 -0.41 -6.58 5.58 -4.1 1.21 0 1.45 
+4.49 -1.3 11.61 -8.77 4.71 -1.39 0 -23.75 -9.27 -2.49 -1.58 -9.14 0.3 -6.55 6.59 0.52 
+4.8 6.77 -0.84 10.89 0 23.75 8.31 -2.43 2.76 0.74 -1.61 3.3 -1.06 7.96 3.75 4.79 
+3.91 -0.3 5.38 -0.71 0 -19.14 -2.58 -1.41 -4.93 -6.49 -4.43 -6.86 -8.74 -3.43 4.82 -5.71 
+0 -9.03 -4.43 -7.29 -2.11 -6.05 4.47 3.89 4.71 7.14 -0.65 2.3 -1.99 0.02 0 9.03 
+4.21 -5.02 3.02 -10.45 -4.78 -7.27 -5.8 -6.4 1.7 -9.27 1.84 -7.12 -2.23 -11.17 0.28 -2.15 
+4.3 -3.28 9.24 -2.02 3.97 0.76 8.05 5.01 5.45 7.92 -2.15 4.77 -2.93 13.93 6.55 6.08 
+1.08 11.15 0.24 4.04 -4.53 11.26 -1.8 9.38 -6.32 7.81 -3.54 5.93 0 19.14 3.87 -0.5 
+6.07 0.93 -5.08 9.38 -4.03 5.68 -0.09 9.18 4.21 1 12.79 -8.75 5.05 4.51 -3.93 11.75 
+-2.99 4.88 -3.88 7.94 -12.87 14.32 -10.37 2.37 -2.3 0.52 -3.28 4.06 -3.21 9.48 1.41 1.22 
+9.94 -5.32 6.16 -6.92 -0.46 4.71 2.24 7.88 4.9 0.3 3.37 5.41 -7.66 11.79 -6.71 4.88 
+-17.79 11.16 -3.15 9.44 -7.05 4.36 -11.93 7.88 -11.24 5.91 -12.2 5.21 2.64 4.69 12.87 -1 
+9.27 2.32 13.25 -2.04 0.29 0.61 -1.8 0.96 -13.11 1.84 -16.88 10.22 -11.72 4.99 -10.89 -1.21 
+-0.5 -3.37 -2.47 -4.69 -11.66 4.04 -10.39 3.28 -12.63 -0.8 -10.63 -2.52 -1.08 -4.43 8.53 -6.73 
+7.05 -7.01 -0.29 -4.82 -10.26 3.64 -10.39 2.45 -8.23 1.87 -9.72 5.23 -6.86 5.86 -9.59 4.86 
+-9.46 4.73 -7.96 5.38 -2.17 4.75 10.46 3.82 8.42 4.5 8.88 4.1 -1.91 5.19 -11.48 0.8 
+-8.77 0.89 p
+0 0.78 1.36 0 4.39 -0.43 16.57 -1.13 2.68 -7.49 -9.12 -3.93 -8.79 -4.32 -9.68 -4.12 
+1.06 -2.39 8.88 -5.1 9.41 -4.95 9.27 -5.16 7.64 -5.8 8.86 -5.6 4.12 -0.91 14.91 -3.54 
+5.16 -1.82 0.11 2.41 -7.45 6.84 -8.46 6.6 1.54 6.64 10.88 2.39 11.98 1.32 16.37 -5.12 
+5.86 -2.04 1.2 2.37 0.83 6.34 11.45 0.8 17.97 -7.64 8.55 -5.12 13.02 -1.56 13.84 -7.4 
+11.03 -7.25 11.52 -7.55 -0.84 -5.41 -11.54 8.62 -12.44 7.01 -13.34 2.32 -11.3 -0.2 -12.98 1.2 
+-1.37 -2.32 6.12 -2.62 16.61 -8.73 6.03 -3.95 14.28 -8.83 5.21 -10.11 8.96 -5.64 14.64 -10.71 
+7.55 -10.12 3.73 -3.38 -2.08 -0.24 -3.95 -6.36 -2.2 -6.7 -0.8 -1 1.91 -2.34 9.42 -12 
+0.97 -9.79 8.38 -13.87 0 -29.97 -7.16 -5.23 -5.12 0.37 -7.55 -1.67 -2.23 -8.45 5.2 -10.39 
+7.27 1.08 5.55 1.41 0 -6.6 -0.59 -0.02 -11.76 -0.2 3.56 -13.98 1.91 -4.77 -0.41 -8.23 
+3.25 -15.58 -9.68 -3 1.97 -9.42 5.45 -12.26 -6.75 -6.62 -9.12 -3.82 -10.24 -1.84 -0.55 0.11 
+-10.33 7.98 -0.67 5.21 -0.78 13.13 -10.57 1.26 -1.81 0.21 1.11 -13.59 0.2 -1.19 -4.69 -8.64 
+-5.58 -7.86 0.05 -8.62 8.14 -2.32 6.6 -2.78 3.36 -1.39 0 -12.65 -9.05 -1.76 -0.91 -5.4 
+6.3 -3.02 3.66 10.18 0 12.65 7.05 -2.87 4.34 -0.67 9.16 -1.3 8.18 -1.22 6.04 -1.69 
+11.37 -0.31 1.32 -0.37 10.48 2.52 0.71 11.26 -6.14 12.28 10.8 2 7.9 5.53 6.32 6.14 
+8.98 -11.39 1.06 0.37 1.76 4.19 1.58 6.99 1.87 -0.98 8.72 3.23 7.88 5.43 1.78 12.39 
+-4.21 12.13 -10.92 9.53 -3.82 10.92 -4.47 10.59 -10.86 3.04 -1.86 -0.33 -9.45 -1.67 -4.46 0.2 
+-10.75 1.08 -2.47 1.17 0 6.6 1.82 0.45 5.4 -1.02 8.29 1.87 2 1.02 -1.15 3.93 
+-9.89 14.93 -1.18 1.3 -1.26 0.39 0 29.97 0.24 -0.41 0.67 -1.26 13.11 -13.71 5.77 -7.6 
+2.19 -12.24 3.3 -11.74 2 -3.43 9.16 -8.96 7.4 -17.54 1.32 -3.75 10.59 -10.89 6.05 -17.51 
+-3 -11.07 -6.7 -6.9 -7.45 -6.1 -4.77 -9.68 -9.53 -3.66 -6.29 -8.05 -6.57 -7.92 -1.33 0.32 
+-8.24 -4.19 -8.88 -4.9 -8.2 2.28 -5.71 0.17 -10.61 3.02 -4.1 0.63 -13.32 1.95 -0.16 0.02 
+-0.26 -0.35 -2.97 -12.72 -5.25 -9.92 -0.24 -0.57 -0.48 0.09 -13.3 6.66 2 11.75 9.27 3.95 
+-2.54 6.77 -3.19 1.37 -11.98 3.45 -0.06 12.68 6.07 7.12 2.32 4.47 -5.9 12.89 -0.28 0.79 
+1.39 0.32 5.51 5.04 0.76 1.76 -4.91 14.45 -0.07 0.7 -1.45 0.76 -12.66 0.68 -3.71 -7.81 
+-4.66 -7.14 -3.93 -8.2 -7.17 -4.8 -7.72 3.89 -7.4 0.8 -7.81 -3.67 -3.11 -9.77 -0.8 -1.15 
+-2.58 -8.98 -10.03 -1.09 -3.71 0.35 -6.96 -0.2 -8.21 6.03 -9.39 5.1 0.43 -9.52 7.75 -9.72 
+-2.21 -1.96 -2.04 -1.78 -7.57 -5.17 -9 0.05 -1.33 -0.07 -9.52 -1.5 -8.62 -3.32 -9.53 -1.39 
+-8.33 -4.36 -9.39 -1.82 -2.74 -2.73 -4.6 -5.64 -9.37 -2.71 -3.84 4.56 -9.01 5.92 -9.09 -2.86 
+-8.36 3.88 -2.99 3.78 -8.51 -0.24 -0.93 -0.02 -9.61 1.23 -8.12 3.09 6.27 9.44 1.39 2.22 
+-1.96 1.45 -9.68 7.01 -0.46 1.41 -2.54 10.66 -6.87 2.54 -6.27 7.46 -1.5 10.59 1.04 10.66 
+3.34 6.23 p
+6.27 2.75 1.5 2.3 3.16 7.9 0.65 3.04 2.73 8.72 1.21 2.3 1.65 7.49 4.54 2.39 
+4.86 1.25 0.39 1.61 0.26 8.77 4.43 1.08 4.23 1.39 8.09 -6.51 1.8 -1.24 4.84 1.29 
+4.38 1.89 4.71 1.5 8.99 -5.47 2.79 -1.7 4.26 2.68 4.49 2.34 3.99 2.84 -0.48 1.98 
+-3.82 8.48 -1.37 2.28 -9.37 7.94 -5.64 8.53 -0.76 1.56 -5.86 7.18 1.04 2.82 2.37 1.93 
+11.46 -3.68 7.38 -7.96 -2.49 -2.69 0.74 -1.23 10.03 -7.62 2.64 -0.83 2.71 3.17 3.11 2.88 
+3.04 2.91 -1.65 1.66 -11.13 6.8 -7.36 6.94 1.34 2.91 11.46 -2.32 2.34 -0.39 1.48 3.23 
+-1.39 1.43 -8.64 6.12 0.44 3.14 0.56 3.06 -1.61 1.21 -9.61 4.8 -0.39 2.84 -0.2 2.75 
+0.14 2.67 0.08 2.67 -0.17 2.69 -2 0.67 -1.86 -0.34 0.15 -2.56 -0.59 -2.5 -11.17 -0.39 
+-4.11 0.48 -9.63 1.13 -11.85 2.46 -0.11 1.47 11.72 1.04 1.89 0.2 0.46 1.89 -1.3 1.87 
+11.29 2.12 2.88 0.39 -1.15 2.3 -0.62 2.3 9.5 2.84 3.38 0.91 8.54 2.93 1.52 1.02 
+-1.46 3.05 -1.58 3.06 -2.73 2.85 -2.65 2.82 -1.91 3.02 6.96 4.9 2.43 1.59 -4.38 2.78 
+-3.54 3.02 -4.19 2.69 -2.32 -0.28 -1.56 -1.43 -5.6 -5.73 -10.8 -2.13 -3.06 2.06 -3.32 1.91 
+4.38 6.23 1.56 2.02 3.32 6 0.11 1.54 -4.62 2.32 -4.71 2.23 -5.12 1.89 -5.23 1.76 
+0.22 7.01 -0.24 1.58 -5.88 1.41 -0.33 0.07 -6.25 1.39 -6.25 1.37 -2.47 0.35 -4 0.54 
+-6.55 0.57 -6.55 0.34 -6.57 0.39 -1.59 -1.43 -1.84 -2.47 -2.8 -3.76 -5.21 6.06 -1.06 7.98 
+-1.8 1.18 -7.42 -0.09 -7.4 -0.56 -8.01 4.93 -2.99 1.93 -1.34 -2.67 3.95 -7.44 -1.97 -6.27 
+-5.95 -1.96 -5.97 -1.86 -0.37 -1.59 0.22 -6.88 -5.23 -1.75 -5.16 -1.84 -5.54 -1.61 -9.36 2.64 
+-3.45 0.52 -4.79 -2.95 -4.73 -2.95 -4.71 -3 -5.04 -2.88 -4.49 -3.19 -3.71 -3.5 -3.52 -3.54 
+-3.73 -3.54 -3.08 -3.69 1.24 -1.59 12.96 -1.82 8.18 -4.62 1.67 -1.15 12.59 -2.61 8.4 -4.03 
+-1.07 -2.29 -2.12 -2.08 -1.28 -2.23 2.82 -0.8 9.96 -2.93 -11.61 -0.61 -3.04 -0.24 -11.39 -1.56 
+-3.1 -0.57 2.78 -0.54 13.67 -0.13 10.65 -2 0.09 -1.88 -12.09 -2.08 -2.28 -0.43 2.19 -0.29 
+13.78 0.68 11.35 -1.02 0.5 -1.45 -0.28 -1.48 0.54 -1.41 0.28 -1.43 0.3 -1.43 1.41 0.07 
+12.15 1.06 0.2 -1.04 0.39 -1.02 0.28 -1.06 0.74 -0.91 0.32 -1.06 0.89 -0.87 0.61 -0.98 
+-9.48 -5.46 -1.24 -0.82 1.34 -1.09 1.22 -1.15 1.26 -1.11 1.35 -1.08 1.41 -1.05 1.15 0.59 
+9.55 5.45 1.04 -0.76 -0.96 -2.56 3.54 1.45 1.26 -0.58 1.26 -0.57 1.3 -0.52 1.35 -0.5 
+0.96 -1.04 1.64 -0.07 1.3 -0.61 -2.32 -8.07 -0.13 -1 1.96 -0.5 1.97 -0.49 -0.24 -5.17 
+-0.17 -3.43 -4.73 -8.07 -2.99 0.32 -0.92 -0.98 -3.32 -9.66 -6.21 -7.7 -0.98 -1.32 -3.91 -9.74 
+-7.16 -7.53 -1.3 -1.37 -3.91 -9.94 -8.38 -7.64 -1.8 0.46 -3.78 0.95 -5.59 1.37 -5.45 1.67 
+-1.41 -0.72 -9.46 -6.59 -5.95 1.54 -1.89 -0.5 -9.41 -5.73 -2.7 -1.59 -9.83 -5.53 -2.22 -1.78 
+-11.41 -6.04 -5.69 3.8 -5.4 4.02 1.5 9.03 1.96 4.88 1.82 7.01 7.48 9.57 0.85 2.2 
+3.95 9.35 p
+9.7 7.97 9.35 8.18 1.81 2.23 5.36 7.71 1.67 2.21 6.25 7.3 0.57 1.21 -2.24 2.36 
+-1.97 2.5 -1.8 2.56 0.17 3.45 7.68 5.49 2.28 1.71 -2.63 1.8 -1.45 -0.11 -11.94 -1.67 
+-2.04 -0.3 -1.24 -0.87 0.66 -3.08 -9.01 -6.82 -1.19 -1.2 1.5 -3.23 0.35 -3.91 -6.17 -6.51 
+-10.66 -7.42 -0.87 -1.28 2.8 -3.5 1.89 -4.25 -4.64 -7.9 -9.94 -3.29 -3.69 -1.46 -10.98 -3.37 
+-2.86 -1.17 -12.11 -3.38 -3.78 4.5 -2.58 -0.7 -1.61 -2.46 3.91 -4.57 5.25 -3.54 -4.08 -10.66 
+-1.69 -3.02 -2.74 -9.61 -0.37 -3.04 -2.08 -10.61 -0.48 -2.93 -1.2 -10.74 -7.94 -9.66 -0.83 -4.67 
+0.07 -9.12 -7.88 -9.72 -7.64 -3.14 -7.57 4.71 -0.04 7.34 -1.37 5.4 -5.36 -1.02 -9.5 -8.92 
+-4.95 -1.71 -8.38 3.75 -7.66 4.64 -7.27 5.06 -7.7 -0.21 -6.86 -3.23 -10.16 1.97 -1.26 0.24 
+-11.33 -0.93 -6.55 0.2 -6.03 -0.71 -9.88 -1.69 -4.12 -0.3 -0.57 6.08 2.2 9.48 -3.45 9.41 
+-4.38 8.21 -5.02 6.45 -0.46 0.56 -3.9 8.34 -3.64 8.4 2.17 9.36 1.17 4.55 -3.56 7.98 
+4.34 13.59 -6.84 -4.34 -11.76 -9.05 -12.55 -3.73 -5.23 0.3 p f*
+2 239 204 rG
+2113.04 1595.53 -2.58 1.63 1.28 11.85 0.67 1.11 5.02 3 0.11 -10.59 7.42 3.32 4.99 5.55 
+-4.04 7.53 6.62 14.29 6.84 12.52 1.13 1.76 13.58 12.76 10.29 -0.65 1.32 -0.3 1.17 1.48 
+14.52 13.21 12.3 1.24 8.92 7.77 -5.02 3.69 -1.32 0.2 -4.55 0.63 8.31 5.17 15.3 7.44 
+3.28 2.86 7.94 9.33 11.2 6.21 14.82 4.86 1.26 0.7 16.93 7.54 2.36 1.11 10.35 5.88 
+12.66 4.76 2.56 1.23 12.41 5.4 8.27 1.61 6.45 2.56 8.31 5.1 7.94 5.03 8.07 4.93 
+6.73 5.51 1.3 1.56 1.87 6.14 8.05 5.54 3.1 2.73 4.32 3.54 4.21 -0.33 11.8 -0.11 
+8.31 -1.37 7.96 -1.41 11.7 0.63 3.76 -1.15 -1.37 -2.26 -1.09 -6.14 6.86 -2.49 9.25 1.02 
+8.5 2.47 9.01 1.65 9.53 -0.63 4.53 -3.23 4.97 -2.06 3.34 2.23 -0.43 7.57 6.54 4.75 
+10.29 0.02 5.01 1.89 7.09 3.52 11.27 -0.41 10.39 -2.52 11.07 -1.46 6.18 1.07 9.42 2 
+6.29 1.52 6.17 5.84 12.56 1.11 6.67 0.28 12.04 0.11 0 -0.8 -1.37 0 -8.55 -0.07 
+-9.94 -0.41 -9.39 -0.82 -6.27 -5.8 -9.44 -2.26 -5.91 -1.26 -9.25 -1.58 -11.13 1.06 -10.02 2.91 
+-11.27 -0.07 -4.32 -2.13 -7.51 -2.82 -10.18 -0.21 -4.71 -3.45 0.43 -7.57 -5.02 -3.37 -7.44 3.09 
+-1.79 1.26 -9.48 1.32 -8.74 -1.91 -8.03 -3.02 -9.22 -0.63 -10.27 3.75 0.21 7.94 -6.05 0.02 
+-3.62 0.02 -11.89 2.11 -4.01 0.65 -12.83 -1.62 -9.16 -4.68 -3.3 -5.14 -2 -1.7 -3.93 -6.99 
+-10.37 -3.58 -7.9 -4.88 -7.94 -4.95 -8.73 -4.91 -9.59 -3.84 -3.06 -0.58 -13.22 -5.1 -7.92 -3.84 
+-5.46 -2.08 -13.09 -6.73 -4.1 -2.08 -13.18 -5.77 -5.32 -2.23 -15.47 -4.82 -7.03 -3.91 -8.36 -9.28 
+-7.31 -6.41 -13.67 -6.95 6.58 -5.88 -14.02 -12.24 -9.94 -1.21 -2.47 -0.31 -8.16 -7.4 -7.68 -9.77 
+-8.98 1.95 -2.54 0.13 -3.34 -3.1 2.17 0.3 0 -3.36 -0.57 -0.59 -9.18 -9.89 8.36 0.5 
+7.29 8.03 -5.91 1.96 0 3.36 0.63 0.11 9.53 -3.28 -11.8 -12.93 -12.43 -3.19 -4.88 -9.91 
+4.25 -4.56 12.54 7.79 4.73 0.28 -4.67 -4.36 -0.11 -0.08 -12.46 -7.21 -11.96 -13.2 -4.47 -8.05 
+5.32 0.08 12.11 7.32 12.11 8.44 8.57 10.27 3.41 7.11 4.97 6.95 8.13 8.09 10.87 10.03 
+3.13 3.71 13.54 6.9 8.05 7.25 6.86 4.1 0.58 0.36 0 -1.95 -1.04 -0.26 -0.32 -0.19 
+0.13 -0.61 1.23 1.07 0 1.95 14.74 9.66 0.04 0.02 0.28 0.04 2.32 -6.4 -5.81 -4.84 
+-7.97 -6.62 -5.14 -9.33 -2.9 -6.05 -5.58 -5.12 -7.73 -6.49 -4.99 -7.68 -3.62 -10.44 -2.91 -4.71 
+-1.39 -6.64 -3.45 -11.41 -2.65 -8.86 -2.11 -4.14 -2.3 -11.94 6.14 -5.58 7.05 0.8 2.97 0.22 
+0 -30.21 2.07 -5.23 2.26 -0.17 -0.83 1.63 -3.5 3.78 0 30.21 4.52 0.35 -0.67 -11.09 
+7.59 -4.18 -1.15 -6.34 -0.87 -6.87 7.05 -0.93 3.89 -0.09 6.9 -4.88 0.02 -6.77 0.56 -4.96 
+5.14 -0.48 6.34 0.46 7.98 -3.82 7.33 2.07 6.54 11.41 8.5 1.09 0 -1.63 -1.64 -0.22 
+-5.14 -0.67 -3.97 -11.5 7.14 -4.62 10.96 5.49 -0.76 6.82 -6.58 4.71 0 1.63 1.65 0.19 
+6.6 -4.58 1.15 -10.2 -0.09 -1.33 4 -8.66 9.74 1.43 3.14 12.61 8.73 9.2 0.52 4.82 
+1.45 8.86 P
+0.96 4.91 1.13 9.22 0.74 2.63 5.03 9.09 2.52 6.62 -7.01 2.19 -3.49 5.14 4.77 7.44 
+7.73 2 3.12 -4.82 7.68 2.11 8.64 3.49 4.73 1.41 11.11 4.34 2.13 0.7 1 1.72 
+0.82 6.42 -2.25 4.02 2.58 3.82 9.85 8.47 0.5 0.54 3.08 5.99 -0.61 3.8 3.56 3.54 
+5.49 4.19 0.67 3.71 3.71 2.6 6.1 0.91 7.84 1.07 4.4 0.32 5.36 -0.71 -6.79 -5.08 
+-1.52 -1.07 -4.25 -5.1 1.45 -2.64 1.68 -2.56 2.16 -2.32 -1.66 -3.58 -2.61 -3.02 -5.03 -6.62 
+-2.07 -2.93 -5.38 -6.68 -8.55 -8.74 -10.05 -7.71 -2.13 -5.01 -2.52 -6.51 -4.51 -8.4 -1.24 -2.21 
+-4.02 -11.57 -0.3 -1.84 3.93 -5.54 4.45 -5.25 8.27 4.34 6.64 5.34 4.32 2.4 8.12 4.71 
+4.13 2.47 5.57 1.5 6.54 -0.45 5.93 4.12 4.25 2.11 5.36 -1.61 5.7 -0.93 5.47 -1.41 
+6.01 5.46 3.84 9.96 3.88 4.04 4.61 4.8 4.38 9.65 2.93 3.95 4.1 5.08 3.3 9.68 
+2.69 2.91 3 0 3.37 5.71 0.28 6.1 -2 0.82 -1.97 0.72 0.32 2.99 1.5 5.17 
+-1.22 1.11 -2.23 -0.61 -0.29 2.28 -1.43 0.52 -1.39 0.56 -1.37 0.61 -1.41 0.56 -7.12 -4.66 
+-0.48 -0.3 0.29 0.41 4.05 5.36 -1.04 0.93 -6.84 -3.93 -3.45 -1.76 -1.47 1.09 -1.43 1.13 
+-1.32 1.19 -1.29 1.21 -1.86 0.92 3.73 2.5 6.56 3.82 -0.52 1.11 -1.43 0.8 0.13 1.32 
+-1.21 0.89 0 1.24 -0.46 1.11 0.04 1.22 -8.86 -0.81 -4.25 -0.23 -0.32 1.49 -0.5 1.5 
+-1.5 1.39 0.85 1.64 -1.67 1.5 -6.88 0.58 -13.78 -0.89 -6.56 0.8 6.82 1.39 8.07 1.41 
+-1.15 2.02 -5.93 1.08 -13.74 -0.15 -8.29 1.58 9.31 1.72 5.27 0.75 9.13 0.76 6.25 0.35 
+-5.36 1.56 -8.53 2.3 1.37 2.45 3.65 2.02 0.08 2.62 -3.75 1.79 -12.83 2.25 -5.05 3.45 
+-4.67 2.59 -13.89 0.58 -3.82 4.73 2.82 3.93 4.32 3.56 3.14 3.84 3.21 3.86 5.1 3.21 
+6.29 2.61 4.84 3.11 4.47 3.32 4.23 3.52 10.42 -1.54 1.41 -0.39 7.01 0.84 5.53 1.89 
+5.49 1.9 -0.12 2.96 1.08 4.82 5.82 2.5 5.62 3.19 0.37 1.22 -4.77 7.27 3.97 8.01 
+9.03 -5.8 2.82 -1.73 7.88 0.17 7.89 -0.79 5.45 -3.53 0.84 -8.01 2 -2.3 1.76 2.37 
+4.79 4.27 6.79 -0.69 6.86 -0.13 6.9 -0.37 6.79 -0.83 6.27 -1.91 6.45 -1.47 6.57 -1.39 
+0.74 -4.76 -0.13 -3.43 5.47 -1.87 5.38 -1.97 4.52 -2.72 4.49 -2.64 -0.41 -4.64 -0.93 -1.65 
+-4.73 -6.01 -2.08 -2.91 3.62 -2 3.14 -2.28 5.12 0.98 2.63 2.73 4.62 4.32 7.01 0.88 
+5.08 -2.56 3.47 -3.23 6.49 -2.41 -7.38 -4.69 -3.04 -2.13 0.54 -3.51 3.13 -2.89 3.82 -2.85 
+0.76 -3.34 0.76 -3.28 -4.62 -3.04 -2.04 -0.68 -10.18 -2.66 -4.15 -1.22 0 -2.52 1.85 -2.43 
+-8.7 -1.11 -7.79 -1.43 3.06 -2.02 -2.02 -1.98 -5.68 -0.56 -8.01 -0.7 0.16 -1.58 8.05 -1.67 
+13.74 -1.29 5.99 0.24 1.78 2.22 -0.02 2.45 5.58 1.04 5.99 -2.04 0.11 -2.8 -0.3 -2.74 
+-0.15 -2.78 1.26 -3.08 2.13 -3.43 3.63 -1.84 4.88 -3.71 0.18 -3.43 1 -3.84 3.54 -2.54 
+4.14 -4.36 -0.91 -3.61 -7.05 1.24 -6.5 1.34 -0.44 -3.55 3.2 -3.04 10.88 -7.16 4.9 -5.04 
+-3.62 -2.67 p
+-3.41 -2.8 -1.98 -3.91 -7.96 2.52 -9.48 8.03 -2.24 3.69 1.98 2.91 -5.05 5.45 -7.86 2.54 
+-2.89 -1.71 1.22 -4.54 2.36 -2.91 2.3 -4.71 3.77 -5.73 9.77 -7.68 4.08 -6.86 1.63 -3.67 
+1.43 -5.97 -3.54 -3.53 -4.73 -2.32 -3.75 -3.56 -8.37 5.14 -3.73 2.28 -5.45 -0.76 -4.36 -2.23 
+-5.43 -0.58 -5.4 3.73 -4.28 3.45 -4.29 -1.71 -4.71 -0.91 -0.13 -4.55 -1.13 -4.87 -4.82 -1.71 
+-3.79 -5.49 -0.13 -0.59 -3.62 -7.01 -1.32 -4.25 -1.96 -9.16 -0.7 -1.71 -4.46 -6.92 -4.54 -4.41 
+-1.56 -2.06 -2.69 -8.79 3.25 -10.5 1.48 -1.76 7.77 0.47 3.75 2.2 3.25 2.71 4.63 -1.91 
+4.43 -4.64 6.68 5.47 0.8 0.76 -1.7 10.66 2.89 8.61 0.78 -0.63 0 -1.95 -1.91 -5.75 
+5.84 -7.62 1.57 8.92 -4.71 3.84 -0.79 0.61 0 1.95 7.47 -6.01 1.69 -1.45 0.96 -0.59 
+0 -2.32 -3.93 -6.92 8.27 -6.49 2.86 8.66 -6.25 4.12 -0.95 0.63 0 2.32 8.85 -5.43 
+2.3 -0.78 0.07 -5.75 -1.75 -5.88 6.77 -9.87 0.79 -1.04 11.07 -6.27 4.06 -0.5 5.51 -0.78 
+9.07 0.46 9.87 -1.2 9.01 1.04 6.99 5.08 8.68 1.67 6.96 0.04 2.61 0.24 0.7 1.17 
+4.75 5.88 3.86 8.81 9.53 0.43 7.74 2.97 9.21 1.2 1.23 -0.02 10.57 -1.78 4.01 7.79 
+-0.7 3.67 -0.78 9.5 10.02 -2.04 8.29 -6.01 0.71 10.54 12.42 -2.54 1.61 -0.29 7.44 3.87 
+-0.57 5.58 -8.7 3.02 0.37 -11.03 -13.93 3.8 -1.58 0.48 -12.52 4.23 -2.67 9.98 -1.11 4.67 
+-2.36 7.4 3.02 -0.48 0 -1.99 0.99 -3.17 2.11 -8.83 1.63 -6.08 7.59 -2.52 6.64 -1.98 
+9.01 -2.41 -1.98 9.81 -9.27 9.7 -10 3.7 -3.37 1.23 -3.36 0.55 0 1.99 4.91 -0.75 
+7.77 -2.67 7.12 -0.3 5.34 -0.65 7.27 3.52 0.61 0.33 0 -8.16 -1.91 -0.61 -0.11 -1.95 
+6.23 -3.28 -4.21 5.84 0 8.16 6.25 3.6 1.59 -0.52 12.09 -0.54 3.19 -0.57 10.44 -0.21 
+5.02 5.92 -7.14 11.8 -11.45 8.51 -12.2 6.64 -2.7 3.45 3.56 -0.79 12.15 -0.21 1.96 -0.24 
+12.95 -4.23 12.31 -6.49 6.55 -1.21 2.69 7.5 0.59 8.75 -5.51 9.46 -9.01 -1.21 -4.32 0.61 
+-2.52 3.04 -0.42 8.36 -3.9 9.77 7.57 -2.76 3.52 -2.34 9.36 -10.39 8.89 1.15 -1.78 9.61 
+0.57 8.29 -1.65 9.22 -4.32 10.16 -2.95 9.37 -6.7 10.46 6.57 5.97 0.46 0.02 -1.37 2 
+-6.19 8.55 0.78 2.06 12.13 -1.2 6.49 1.96 -10.57 5.18 -15.71 10.37 3.04 7.9 -3.38 2.3 
+-13.83 9.36 -5.92 3.11 -9.12 3.86 -9.09 3.88 3.84 7.09 12.79 -0.82 3.47 1.11 -12.89 10.18 
+-5.54 2.37 -10.37 -1.63 -0.06 -0.43 -3.82 -6.99 -13.37 4.64 -4.02 1.41 -4.53 1.41 -13.22 -0.26 
+-10.41 -2.65 -0.57 -2.23 8.62 -6.86 6.64 -7.16 -0.52 -7.25 -15.32 5.49 -5.9 1.39 -12.29 2.78 
+-10.59 4.84 -6.08 5.95 -9.94 4.58 -9.48 4.49 -7.07 5.67 -3.32 7.12 11.26 3.52 8.05 4.69 
+8.61 4.23 -1.09 2.91 -6.42 0.46 -13.11 1.37 0 0.8 1.35 0 8.77 -0.89 11.48 -0.8 
+1.91 -5.19 -8.87 -4.1 -8.42 -4.5 -10.46 -3.82 2.17 -4.75 7.96 -5.38 9.46 -4.73 9.59 -4.86 
+6.86 -5.86 9.72 -5.23 8.23 -1.87 10.39 -2.45 10.26 -3.64 0.29 4.82 -7.05 7.01 -8.53 6.73 
+1.08 4.43 p
+10.63 2.52 12.63 0.8 10.39 -3.28 11.66 -4.04 2.47 4.69 0.5 3.37 10.89 1.21 11.72 -4.99 
+16.88 -10.22 13.11 -1.84 1.8 -0.96 -0.29 -0.61 -13.25 2.04 -9.27 -2.32 -12.87 1 -2.64 -4.69 
+12.2 -5.21 11.24 -5.91 11.93 -7.88 7.05 -4.36 3.15 -9.44 17.79 -11.16 6.71 -4.88 7.66 -11.79 
+-3.37 -5.41 -4.9 -0.3 -2.24 -7.87 0.46 -4.71 -6.16 6.92 -9.94 5.32 -1.41 -1.22 3.21 -9.48 
+3.28 -4.06 2.3 -0.52 0 -6.05 14 -11.87 3.34 4.11 -5.58 6.23 -11.76 1.54 0 6.05 
+10.37 -2.37 12.88 -14.32 3.88 -7.94 2.99 -4.88 3.93 -11.75 -5.05 -4.51 -12.79 8.75 -4.21 -1 
+0.09 -9.18 4.03 -5.68 5.08 -9.38 -6.07 -0.93 -3.87 0.5 -5.38 0.71 -3.91 0.3 -3.75 -4.79 
+1.06 -7.96 1.61 -3.3 -2.76 -0.74 -8.31 2.43 -4.71 1.39 -11.61 8.77 -4.49 1.3 -4.62 1.35 
+0.78 -9.07 4.99 -3.86 10.25 -11.24 0.28 -4.97 -4.05 -3.17 -1.7 -2.28 -0.04 -1 0.22 -9.34 
+-5.54 0.29 -5.71 3.38 -6.03 3.63 -3.45 -0.41 -2.02 -7.64 -0.11 -0.57 -3.56 -7.21 0.39 -11.26 
+-5.34 -6.12 -11.76 2.2 -2.11 0.46 0.13 -2.3 0.33 -10.05 -10.98 1 -8.03 10.09 -2.45 0.52 
+0.2 -2.34 2.34 -12.54 -0.5 -2.06 -2.41 -7.5 -6.07 -6.01 -5.78 4.12 -8.09 3.3 -2.95 1.21 
+-4.84 -7.46 -7.16 4.04 -6.34 1.04 -1.88 -5.19 0.75 -8.48 -5.99 -6.92 -0.84 -0.46 -7.01 -3.54 
+-6.81 -1.87 -2 -0.41 -8.62 -2.71 -9.54 -0.65 -9.33 -0.99 -7.88 -4.8 -11.74 6.1 -2.26 0.41 
+-7.77 1.58 -9.66 1.46 -7.18 3.47 -0.46 11.11 -2.21 10.79 -6.81 6.23 -1.15 1.04 -5.75 -8.87 
+-0.57 -0.76 -5.91 -3.28 -0.78 -0.41 -2.61 2.49 -6.62 6.71 -0.67 0.7 -7.21 -4.91 -8.14 1.54 
+-3.88 4.6 -2.39 10.57 2.73 10.71 0.87 1.65 6.14 5.08 2.97 4.61 1.93 4.79 1.3 6.09 
+2.04 6.51 2.41 4.64 0.89 4.04 4.17 3.95 4.84 1.47 0.76 3.23 0.2 6.67 4.58 0.99 
+4.25 1.57 6.18 -4.99 3.61 -2.47 5.12 0.93 4.38 2.06 5.09 1.11 6.36 -3.86 5.58 -3.43 
+4.02 3.13 4.6 2.34 3.77 3.19 -0.95 3.95 -2.71 6.1 -2.73 4.55 -9.57 7.81 -4.7 7.14 
+-1.55 3.12 -4.1 5.05 -0.09 3.67 2.63 1.82 9.65 -3.1 6.21 -6.71 -2.21 -2.8 1.48 -2.47 
+9.75 -7.82 5.32 -1.67 2.34 3.53 3.26 2.85 3.32 2.8 -3.28 3.34 -10.98 6.97 -5.29 5.02 
+0.91 3.21 8.98 -1.82 4.69 -0.8 1.2 3.41 -2.76 2.91 -6.09 4.32 -0.29 3.5 0.2 3.23 
+-3.23 2.48 -6.61 3.32 -1.29 3.15 -0.71 2.93 0.13 2.71 0.21 2.7 -0.15 2.75 -4 1.34 
+-3.73 -0.69 0.09 -2.5 -1.17 -2.37 -8.59 -0.33 -13.74 1.46 -9.94 2.06 -0.12 1.54 9.85 0.87 
+3.8 0.37 1.23 1.93 -2.19 1.95 9.54 1.76 5.79 0.78 -1.49 2.34 -0.31 2.43 6.82 1.99 
+6.79 1.82 5.28 1.78 3.05 2.04 -1.09 3.17 -1.19 3.19 -3.28 2.85 -2.86 2.86 -1.24 3.27 
+5.02 3.5 4.88 3.15 -5.42 2.58 -3.52 3.13 -4.62 2.63 -4.64 -0.57 -3.12 -2.88 -4.11 -4.23 
+-7.96 -1.54 -3.11 2.16 -3.47 1.96 3.23 4.55 3.15 4.04 2.13 3.79 0.26 3.11 -4.55 2.47 
+-4.62 2.47 -5.25 1.93 -5.34 1.82 0.17 5.21 -0.5 3.16 -6.38 1.43 -6.34 1.43 -6.27 1.65 
+-6.64 0.84 p
+-6.7 0.48 -6.73 0.22 -6.68 0.54 -3.17 -2.82 -3.21 -4.32 -3.6 4.19 -0.96 7.99 -3.62 2.37 
+-7.66 0.35 -7.64 -0.37 -5.41 3.32 -6.03 3.87 -2.64 -5.34 4.36 -7.36 -1.17 -3.73 -5.77 -2.58 
+-5.9 -2.17 -0.74 -3.21 0.18 -4.91 -5.34 -1.82 -5.36 -1.89 -6.27 -1.22 -5.38 1.52 -6.95 1.02 
+-4.51 -3.23 -4.58 -3.13 -4.77 -3.06 -5.66 -2.73 -4.8 -3.21 -3.47 -3.67 -3.32 -3.69 -4.04 -3.56 
+-2.95 -3.8 2.52 -3.16 13.43 -1.2 6.43 -3.6 3.36 -2.3 12.72 -2.45 6.05 -2.88 -0.57 -2.46 
+-2.89 -2.06 -1.32 -2.32 5.69 -1.58 7.66 -2.23 -8.94 -0.48 -6.08 -0.5 -8.33 -1.15 -6.21 -1.13 
+5.51 -1.08 13.71 0 8.29 -1.52 0.61 -1.95 -10.07 -1.76 -4.55 -0.91 4.36 -0.54 13.8 0.78 
+9.12 -0.78 1.08 -1.5 -0.56 -1.56 1.02 -1.41 0.39 -1.45 0.3 -1.48 2.84 0.18 10.5 0.93 
+0.06 -1.13 0.44 -1.07 0.15 -1.15 0.98 -0.91 0.08 -1.19 1.15 -0.82 0.59 -1.04 -8.04 -4.67 
+-2.47 -1.64 1.61 -1 1.24 -1.17 1.3 -1.15 1.37 -1.11 1.46 -1.07 2.3 1.15 8.18 4.69 
+1.04 -0.84 -3.02 -4.47 5.95 3.52 1.34 -0.57 1.3 -0.58 1.34 -0.54 1.39 -0.52 0.63 -1.64 
+1.93 0.26 1.26 -0.85 -1.91 -6.62 -0.24 -2 1.98 -0.61 1.97 -0.67 -0.34 -7.33 -4.04 -6.88 
+-3 0.16 -1.8 -1.96 -3.32 -9.66 -5.14 -6.41 -1.95 -2.62 -4.14 -9.7 -5.88 -6.17 -2.58 -2.69 
+-3.89 -9.96 -7.2 -6.55 -5.51 1.41 -5.67 1.15 -5.4 1.65 -2.82 -1.43 -7.7 -5.34 -6.23 1 
+-3.73 -1.02 -6.77 -4.08 -5.4 -3.16 -7.08 -3.95 -4.42 -3.59 -9.84 -5.16 -5.08 4.51 -4.66 4.77 
+0.89 5.43 3.91 9.7 0.46 1.74 6.16 10.39 1.68 4.36 3.03 7.18 9.88 7.83 8.96 8.45 
+3.58 4.46 3.71 5.32 3.36 4.43 4.43 5.14 1.11 2.41 -2.19 2.32 -1.83 2.54 -1.63 2.61 
+2.22 4.3 4.6 3.25 4.54 3.41 -3.99 1.26 -2.93 -0.24 -9.89 -1.34 -4.06 -0.62 -2.48 -1.72 
+0 -3.38 -7.24 -5.54 -2.39 -2.34 1.06 -3.52 -1.39 -4.95 -3.32 -3.54 -10.25 -7.95 -1.74 -2.54 
+2.52 -3.76 0.54 -5.34 -2.82 -4.82 -6.04 -1.97 -7.4 -2.93 -7.86 -2.36 -5.75 -2.34 -9.89 -2.73 
+-3.47 4.64 -5.14 -1.35 -3.19 -4.94 3.71 -4.86 6.13 -2.87 -3.3 -8.64 -3.37 -6.05 -1.73 -6.12 
+-0.74 -6.12 -1.52 -7.77 -0.98 -5.88 -0.85 -7.79 -8.33 -9.44 -1.64 -9.38 0.04 -4.04 -8.94 -9.16 
+-0.57 -0.21 -5.81 3.91 -1.41 1 -2.74 10.61 -10.71 -2 -4.34 -3.4 -9.16 2.43 -5.25 -1.21 
+-4.97 2.48 -7.64 4.45 -11.3 0.3 -4.6 -0.02 -7.31 -0.15 -6.05 6.46 -8.4 -3.04 -6.23 0.29 
+-0.93 8.29 6.34 9.86 -11.29 1.06 -5.14 7.01 -4.84 7.21 -3.41 8.33 -3.17 8.35 0.24 10.81 
+4.9 9.83 4.8 7.16 5.42 8.83 1.87 5.23 -2.36 7.66 11.31 12.04 3.21 4.45 2.63 9.55 
+-5.23 0.89 -11.85 -9.16 -1.45 -1.76 -7.54 -12.09 -4.99 -6.86 -12.02 -11.11 -12.11 -7.96 -11.96 -8.18 
+-9.74 -0.26 -3.69 4.55 p f*
+7 193 59 rG
+2126.06 1594.18 -5.32 -0.08 4.47 8.05 11.96 13.2 12.46 7.21 0.11 0.08 0 -4.46 -3.95 -2.11 
+-8.48 -4.52 -11.76 -13.02 -0.74 -1.37 0.89 0.02 12.24 6.4 12.13 8.92 3.86 4.67 -4.19 1 
+0 4.46 4.67 4.36 -4.73 -0.28 -12.54 -7.79 -4.25 4.56 4.88 9.91 12.43 3.19 11.8 12.93 
+-9.53 3.28 -0.63 -0.11 -2.17 -0.3 3.34 3.1 2.54 -0.13 8.98 -1.95 7.68 9.77 8.16 7.4 
+2.47 0.31 0 -3.21 -3.36 -0.48 -1.52 -1.37 -0.37 -0.32 -10.18 -13.29 -4 -6.01 -13.17 -12.17 
+12.2 1.22 13.3 11.24 2.21 2.08 11.44 13.48 -6.55 5.63 0 3.21 9.94 1.21 14.02 12.24 
+-6.58 5.88 13.67 6.95 7.31 6.41 8.36 9.28 7.03 3.91 15.47 4.82 5.32 2.23 13.18 5.77 
+4.1 2.08 13.09 6.73 5.46 2.08 7.92 3.84 13.22 5.1 3.06 0.58 9.59 3.84 8.73 4.91 
+7.94 4.95 7.9 4.88 10.38 3.58 3.93 6.99 2 1.7 3.3 5.14 9.16 4.68 12.83 1.63 
+4.01 -0.65 11.89 -2.11 3.63 -0.02 0 -1.45 -2.34 -0.02 -6.84 -0.11 -2.41 -0.04 -3.17 -0.05 
+-8.36 -1.15 -3.45 -0.47 -1.84 -0.33 -4.12 -0.74 -3.5 -0.65 -2.39 -0.54 -0.37 -0.56 -6.36 -5.21 
+-1.67 -7.27 1.72 -1.74 -3.59 0.83 -2.73 -0.52 -8.22 -1.54 -7.75 -4.84 -7.96 -4.86 -9.12 -4.71 
+-10.89 -4.67 -2 -0.62 -11.74 -4.23 -11.46 -5.86 -1.58 -0.5 -12.83 -5.99 -9.16 -4.64 -6.58 -2.88 
+-11.42 -4.73 -15.08 -4.43 -2.91 -1.61 -8.74 -9.22 -11.26 -9.96 -1.89 -0.93 0.78 -1.7 12.11 0.07 
+0.13 -2.47 -1.5 -1.07 -14.54 -6.72 -7.83 -7.23 -3.37 -9.24 7.25 2.14 1.17 1.04 13.41 8.12 
+10.8 7.09 4.86 3.41 10.24 7.25 6.32 5.21 0 -2.11 -2.89 -2.41 0.3 -3.8 6.04 4.99 
+-3.45 1.22 0 2.11 1.59 1.32 9.29 -3.37 0.84 -1.93 14 4.03 0.99 1.07 14.87 3.95 
+-0.02 -3.37 -2.02 -5.88 -3.64 -3.02 -9.96 -4.73 -2.78 -6.46 -4.43 -2.43 -13.52 -2.98 -7.21 -0.63 
+8.34 5.08 10.79 5.79 -9.05 -0.07 -6.84 -3.38 -6.79 -5.12 -1.84 -1.39 -3.75 -3.52 2.21 -3.69 
+0.91 -2.19 -2.06 -7.51 -0.24 -0.68 -1.13 0.2 -11.5 1.72 -2.08 -6.77 1.23 -4.53 3.95 -0.68 
+4.04 -5.53 0.04 -7.23 -6.58 -7.71 -7.42 -6.9 -3.95 -5.32 -5.64 -8.44 -3.87 -7.77 -0.82 -4.02 
+2.63 -0.89 6.42 -2 -2.32 -7.45 -1.15 -4.25 -1.91 -11.24 0.8 -8.05 0.5 -1.16 1.45 -1.69 
+4.56 -3.67 1.28 -4.08 2.11 -3.73 5.55 -5.95 1.48 -0.82 10.07 0.89 3.04 -8.59 8.5 5.05 
+6.08 -1.32 10.83 0.02 6.62 -4.47 6.31 -1.52 1.54 0.26 0 -14.88 -0.93 -0.85 0.13 -0.21 
+0.17 0.02 0.63 1.05 0 14.88 1.76 0.3 7.03 -3.91 6.9 6.88 0.2 1.8 1.93 11.84 
+0.41 2.06 0.68 10.81 0.71 1.63 6.55 11.13 1.73 4.6 -7.9 1.5 -3.28 5.43 6.36 9.96 
+10.28 2.62 2.82 -4.96 5.45 1.5 11.52 4.63 1.63 0.47 13.02 5.17 1.34 6.12 -1.98 4.25 
+3.45 5.1 7.84 6.88 1.61 2.17 2.5 4.52 -0.2 4.08 4.75 4.73 3.73 2.86 1.32 4.04 
+4.95 3.47 8.14 1.17 5.79 0.78 5.86 0.42 6.75 -0.16 -7.81 -5.77 -1.3 -0.87 -4.67 -4.91 
+1.26 -2.66 1.52 -2.61 2.13 -2.28 -2.22 -4.78 -0.78 -0.91 -6.7 -8.79 -0.39 -0.56 -7.21 -8.88 
+-8.05 -8.92 P
+-0.08 -0.11 -10.22 -7.57 -1.21 -2.84 -3.35 -8.68 -2.71 -5.02 -3.12 -5.51 -3.28 -10.72 1.15 -1.87 
+2.43 -3.99 3.82 -5.95 6.66 3.47 8.88 7.13 1.56 0.86 10.83 6.25 1.48 0.87 7.42 1.98 
+6.81 0.11 4.17 2.87 5.66 2.82 5.32 -1.59 5.77 -0.73 5.41 -1.39 4.82 4.38 3.84 9.96 
+5.16 5.36 3.32 3.47 4.63 9.59 3.91 5.25 3.05 3.8 3.28 9.68 3.61 3.84 2.97 0.2 
+2.67 4.51 0.21 4.84 -1.99 1 -2 0.82 0.46 3.99 1.06 3.71 -1.17 1.34 -2.52 -0.95 
+0.04 2.91 -1.48 0.54 -1.45 0.59 -1.41 0.63 -1.48 0.55 -6.05 -3.95 -1.84 -1.26 1.13 1.65 
+3.17 4.23 -1.02 1 -5.49 -3.17 -4.6 -2.34 -1.52 1.13 -1.46 1.15 -1.39 1.21 -1.3 1.24 
+-2.11 0.85 4.95 3.32 5.12 3 -0.48 1.19 -1.72 0.74 0.37 1.47 -1.47 0.88 0.13 1.34 
+-0.48 1.15 0.16 1.28 -7.18 -0.67 -5.67 -0.32 -0.37 1.54 -0.59 1.52 -1.97 1.39 1.15 1.74 
+-2.28 1.52 -4.62 0.37 -13.8 -0.98 -8.74 1.04 9.12 1.86 6.03 1.07 -1.67 2.08 -3.54 0.63 
+-13.75 -0.29 -0.22 0.05 -10.87 2.04 12.46 2.32 2.17 0.33 12.22 1.04 3.54 0.22 -3.04 0.87 
+-4.97 1.32 -6.42 1.72 1.41 2.54 4.39 1.99 -0.39 2.82 -1.41 0.65 -12.93 2.11 -0.07 0.05 
+-6.7 4.51 -2.91 1.61 -8.77 0.39 -4.93 -3.28 -2.3 -3.69 -2.99 -0.52 -13.26 0.67 -1.65 0.89 
+2.35 0.3 12.76 2.88 -1.06 4.3 0.39 4.29 2.69 4.04 4.61 3.6 2.95 3.97 2.97 4.04 
+5.41 3.23 6.92 2.45 4.91 3.17 4.32 3.49 3.97 3.82 3.86 3.1 0 1 1.93 -0.11 
+10.35 -5.12 2.93 0.28 5.73 1.91 5.59 1.98 -0.04 0.99 1.43 6.43 5.76 2.8 3.27 2.13 
+-5.66 1.35 -10.74 2.93 3.61 6.96 2.21 1.34 0 -4.34 -1.47 -2.78 4.34 -1.2 4.46 3.28 
+-7.33 0.7 0 4.34 3.88 2.35 -12.8 5.03 -3.58 7.08 0 1.45 6.05 -0.02 -0.21 -7.94 
+10.27 -3.75 9.22 0.63 8.03 3.02 8.74 1.91 9.48 -1.32 1.79 -1.26 7.44 -3.09 5.02 3.37 
+-0.43 7.57 4.71 3.45 10.18 0.21 7.51 2.82 4.32 2.13 11.27 0.07 10.02 -2.91 11.13 -1.06 
+9.25 1.58 5.91 1.26 9.44 2.26 6.27 5.8 9.39 0.82 9.94 0.41 8.55 0.07 0 -0.8 
+-1.32 0 -5.1 -0.05 -13.21 -0.54 -6.23 -0.52 -6.38 -5.75 -12.57 -3.02 -2.43 -0.52 -12.29 -2.08 
+-11.2 0.68 -9.66 3.27 -11.29 -0.54 -1.52 -0.76 -10 -3.71 -10.07 -0.45 -2.89 -2.11 0.43 -7.57 
+-6.68 -4.47 -8.89 3.09 -1.98 0.91 -7.53 1.39 -8.47 -2.19 -3.08 -1.19 6.05 -7.05 0.2 -0.13 
+8.13 -0.02 8.14 -1.2 7.29 -4.75 0.74 -8.01 0.36 -0.43 0.33 0.46 6.38 5.7 6.9 -0.86 
+7.04 0 7.05 -0.29 6.96 -0.82 6.3 -2.15 6.55 -1.54 6.75 -1.33 0.95 -6.36 -0.06 -1.61 
+5.58 -1.95 5.54 -2.02 4.41 -2.93 4.43 -2.82 0.02 -5.49 -0.02 -1.02 -6.64 -7.16 -0.89 -1.28 
+3.78 -2.02 3.16 -2.4 2.28 0.43 1.15 1.21 6.14 5.77 9.35 1.15 5.52 -2.5 3.47 -3.34 
+6.16 -1.93 2.41 -0.04 -1.5 -0.84 -9.42 -5.64 -1.07 -0.74 -0.12 -3.75 3.36 -2.93 4.34 -2.86 
+0.37 -3.47 0.39 -3.36 -4.64 -3.6 -1.45 -0.61 -12.46 -2.91 -1.43 -0.41 -0.33 -2.62 2.17 -2.52 
+-11.59 -1.45 p
+-6.03 -1.11 3.91 -2.08 -2.8 -2 -7.57 -0.74 -6.14 -0.52 0.18 -1.65 6.14 -1.3 13.76 -1.11 
+3.38 0.15 2.39 2.09 0.02 2.39 7.44 1.41 7.97 -2.71 0.11 -2.86 -0.43 -2.78 -0.13 -2.82 
+1.75 -3.28 2.97 -3.73 0.66 -0.32 6.51 -4.97 0.56 -3.62 1.69 -4.19 0.98 -0.71 5.55 -5.84 
+-0.66 -3.8 -9.39 1.67 -4.04 0.85 0.02 -3.89 1.11 -1.06 10.72 -7.33 6.55 -6.73 -3.93 -2.58 
+-3.56 -2.76 -1.61 -4.25 -10.61 3.37 -9.22 8.24 -2.95 4.91 1.69 3.02 -3.91 4.19 -6.04 1.97 
+-3.16 -1.62 2.34 -5.38 0.63 -0.76 3.09 -6.29 2.84 -4.32 9.96 -7.55 5.4 -9.18 0.57 -1.21 
+1.89 -7.96 -3.3 -3.91 -4.84 -2.32 -3.54 -4.01 -11.15 6.9 -1.09 0.67 -5.82 -0.39 -4.36 -2.41 
+-5.73 -0.24 -7.21 4.97 -2.34 1.93 -4.32 -1.84 -4.84 -0.85 -0.08 -2.45 -1.5 -6.49 -4.82 -1.98 
+-2.67 -4.08 -0.93 -2.37 -3.99 -7.05 -0.63 -2.02 -2.04 -10.83 -0.3 -2.87 -5.69 -6.4 -2.11 -2.08 
+-3.99 -5.25 -1.76 -5.71 3.15 -8.68 7.62 0.68 6.33 7.83 8.27 -3.91 6.09 6.23 -0.08 0.98 
+3.84 11.45 0.3 0.11 5.12 4.62 3.36 -2.95 4.34 -10.18 5.23 -2.43 8.03 -0.78 6.12 -3.47 
+-0.44 -10.74 0 -0.83 0.61 -0.75 2.45 1.52 4.08 2.97 3.91 -0.82 8.66 -8.25 0.63 -0.82 
+9.27 -1.34 7.75 2.54 7.36 3.21 7.14 3.45 10.05 -1.26 6.14 -1.19 3.62 0.74 0.7 1.3 
+-1.93 12.46 0.54 0.89 0.96 -0.11 9.31 -0.98 7.42 2.87 8.41 -1.41 2.32 0.32 10.03 0.11 
+-0.37 7.79 -4.97 9.31 10.33 -0.13 5.27 5.09 -0.91 10.54 -0.13 0.52 -3.64 11.59 12.41 -1.89 
+1.32 -0.43 8.2 2.36 6.81 3.59 5.08 0.93 3.13 1.78 11.68 -3.8 6.04 -0.21 8.74 -1.48 
+5.95 -0.11 5.64 5.38 -5.14 8.45 -11.52 8.18 -7.44 1.63 -4.6 1 3.86 -10.91 -7.46 -3.52 
+-6.18 -2.04 -2.08 7.68 1.34 7.27 6.6 3.75 0 -7.5 -0.43 -0.17 0.04 -0.66 0.55 0.26 
+-0.15 0.57 0 7.5 0.13 0.09 -7.9 10.37 -4.58 4.12 -0.39 0.38 6.01 -1.07 13.39 -2.95 
+2.13 0 11.61 -1.21 12.32 -6.77 10.7 -4.06 2.28 0.13 5.4 4.1 -2.91 9.13 -13.17 2.02 
+-9.76 11.74 -1.87 5.86 -2.48 -3.75 -10.92 1.73 -0.25 0.2 -10.59 7.88 3.3 5.75 5.6 4.97 
+-10.89 9.77 -1.11 1 -1.07 0.8 0.96 -0.06 13.04 -2.11 1.43 -0.48 0 -15.2 -1.8 -1.2 
+-0.97 -6.92 2.56 -1.9 2.56 -0.39 1.11 7.01 -3.45 3.41 0 15.2 11.87 -3.91 3.08 -4.34 
+10.88 -8.61 10.33 -0.59 -10.79 11.28 -0.74 0.79 -4.17 2.67 -10.48 9.05 -7.84 4.88 -1.64 7.77 
+-7.86 4.43 -4.9 5.92 -0.26 6.55 16.71 -10.5 13.43 -3.45 1.41 -0.71 0 -3.36 -6.37 -2.48 
+9.61 -8.79 11.48 1.52 -13.52 8.96 -1.2 0.78 0 3.36 0.63 -0.33 12.35 -5.9 0.71 1.61 
+-2.38 3.32 -8.38 8.13 -9.64 6.63 -10.55 6.2 4.67 5.19 3.1 0.85 -6.16 4.36 -11.21 -1.08 
+-0.18 -0.02 -10.5 -2.89 -1.59 1.04 -6.75 4.49 2.11 4.34 3.21 2.3 -6.99 3.04 -7.01 5.34 
+2.37 0.7 13.41 -1.24 2.73 7.04 -12.89 5.03 -12.83 3.52 -0.12 0.02 4.96 4.75 14.07 -1.48 
+2.91 -0.95 0 -2.11 -5.04 -0.33 7.4 -2.25 -0.48 1.97 -1.89 0.61 0 2.11 9.63 -3.22 
+7.32 -4.27 p
+10.94 1.08 -0.85 1.39 -0.67 0.37 -16.26 4.82 -9.07 5.46 -10.48 3.59 -2.95 1.02 -10.05 -2.6 
+-17.91 4.58 5.25 6.27 5.9 3.38 -10.33 0.07 -10.2 -2.8 0 -0.02 8.65 -6.99 6.23 -7.31 
+7.03 -7.29 -4.23 -6.14 -10 5.32 -13.89 5.75 -1.46 0.34 -16.3 3.7 -6.45 2.79 -5.3 1.55 
+-3.08 4.19 -1.95 1.95 -4.08 1.82 -6.51 2.3 -9.05 4.47 -3.21 3.36 -3.11 2.54 -2.23 -0.07 
+-14.48 -0.61 -3.73 -0.43 -11.02 -0.67 -6.01 5.97 -0.39 0.69 1.15 0.07 13.52 3.3 5.71 1.34 
+11.77 0.35 2.25 0.28 0 -2.1 -2.39 -0.11 -14.56 -0.67 -0.11 -0.02 -2.3 -0.54 -12.11 -2.8 
+4.43 -4.9 8.29 0.52 7.04 0.8 10.89 0.46 0.82 7.27 0 2.1 4.41 0.57 6.62 1.91 
+7.68 4.86 8.36 4.4 -0.24 0.63 -1.41 0.11 -17.43 1.84 0 0.8 1.37 0 13.11 -1.37 
+6.42 -0.46 1.09 -2.91 -8.61 -4.23 -8.05 -4.69 -11.26 -3.52 3.32 -7.12 7.07 -5.67 9.48 -4.49 
+9.94 -4.58 6.08 -5.95 10.59 -4.84 12.29 -2.78 5.9 -1.39 15.32 -5.49 0.52 7.25 -6.64 7.16 
+-8.62 6.86 0.57 2.23 10.41 2.65 13.22 0.26 4.53 -1.41 4.02 -1.41 0 -4.12 -11.03 -1.78 
+-1.78 -2.02 5.93 -1.52 11.29 1.49 2.58 1.2 -6.99 2.63 0 4.12 13.37 -4.64 3.82 6.99 
+0.06 0.43 10.37 1.63 5.54 -2.37 12.89 -10.18 -3.47 -1.11 -12.79 0.82 -3.84 -7.09 9.09 -3.88 
+9.12 -3.86 5.92 -3.11 13.83 -9.36 0 -33.57 -3.65 -0.2 5.23 -3.12 9.83 -1.17 -11.41 4.49 
+0 33.57 3.38 -2.3 -3.04 -7.9 15.71 -10.37 10.57 -5.18 -6.49 -1.96 -12.13 1.2 -0.78 -2.06 
+6.19 -8.55 1.37 -2 -0.46 -0.02 -6.57 -5.97 6.7 -10.46 2.95 -9.37 4.32 -10.16 1.65 -9.22 
+-0.57 -8.29 1.78 -9.61 -8.89 -1.15 -9.36 10.39 -3.52 2.34 -7.57 2.76 3.9 -9.77 0.42 -8.36 
+2.52 -3.04 4.32 -0.61 9.01 1.21 5.51 -9.46 -0.59 -8.75 -2.69 -7.5 -6.55 1.21 -12.31 6.49 
+-12.95 4.23 -1.96 0.24 -12.15 0.21 -3.56 0.79 2.7 -3.45 12.2 -6.64 11.45 -8.51 7.14 -11.8 
+-5.02 -5.92 -10.44 0.21 -3.19 0.57 -12.09 0.54 -1.59 0.52 -6.25 -3.6 -0.61 -0.33 -7.27 -3.52 
+-5.34 0.65 -7.12 0.3 -7.77 2.67 -4.91 0.75 -3.02 0.48 2.36 -7.4 1.11 -4.67 2.67 -9.98 
+12.52 -4.23 1.58 -0.48 13.93 -3.8 -0.37 11.03 8.7 -3.02 0.57 -5.58 -7.44 -3.87 -1.61 0.29 
+-12.42 2.54 -0.71 -10.54 -8.29 6.01 -10.02 2.04 0.78 -9.5 0.7 -3.67 -4.01 -7.79 -10.57 1.78 
+-1.23 0.02 -9.21 -1.2 -7.74 -2.97 -9.53 -0.43 -3.86 -8.81 -4.75 -5.88 -0.7 -1.17 -2.61 -0.24 
+-6.96 -0.04 -8.68 -1.67 -6.99 -5.08 -9.01 -1.04 -9.87 1.2 -9.07 -0.46 -5.51 0.78 -4.06 0.5 
+-11.07 6.27 -0.79 1.04 -6.77 9.88 1.75 5.88 -0.07 5.75 -2.3 0.78 -8.85 5.43 -0.96 0.59 
+-1.69 1.45 -7.47 6.01 -0.78 0.63 -2.89 -8.61 1.7 -10.66 -0.8 -0.76 -6.68 -5.47 -4.43 4.64 
+-4.62 1.91 -3.25 -2.71 -3.75 -2.2 -7.77 -0.47 -1.48 1.76 -3.25 10.5 2.69 8.79 1.56 2.06 
+4.54 4.41 4.46 6.92 0.7 1.71 1.96 9.16 1.32 4.25 3.63 7.01 0.13 0.59 3.79 5.49 
+4.82 1.71 1.13 4.87 0.13 4.55 4.71 0.91 4.29 1.71 4.28 -3.45 5.4 -3.73 5.43 0.58 
+4.36 2.23 p
+5.45 0.76 3.73 -2.28 8.37 -5.14 3.75 3.56 4.73 2.32 3.54 3.53 -1.43 5.97 -1.63 3.67 
+-4.08 6.86 -9.77 7.68 -3.77 5.73 -2.3 4.71 -2.36 2.91 -1.22 4.54 2.89 1.71 7.86 -2.54 
+5.05 -5.45 -1.98 -2.91 2.24 -3.69 9.48 -8.03 7.96 -2.52 1.98 3.91 3.41 2.8 3.63 2.67 
+-4.9 5.04 -10.87 7.16 -3.2 3.04 0.44 3.55 6.5 -1.34 7.05 -1.24 0.91 3.61 -4.14 4.36 
+-3.54 2.54 -1 3.84 -0.18 3.43 -4.88 3.71 -3.62 1.84 -2.12 3.43 -1.26 3.08 0.15 2.78 
+0.3 2.74 -0.11 2.8 -5.99 2.04 -5.58 -1.04 0.02 -2.45 -1.78 -2.22 -5.99 -0.24 -13.74 1.29 
+-8.05 1.67 -0.16 1.58 8.01 0.7 5.68 0.56 2.02 1.98 -3.06 2.02 7.79 1.43 8.7 1.11 
+-1.85 2.43 0 2.52 4.15 1.22 10.18 2.66 2.04 0.68 4.62 3.04 -0.76 3.28 -0.76 3.34 
+-3.82 2.85 -3.13 2.89 -0.54 3.51 3.04 2.13 7.38 4.69 -6.49 2.41 -3.47 3.23 -5.08 2.56 
+-7.01 -0.87 -4.62 -4.32 -2.63 -2.73 -5.12 -0.98 -3.14 2.28 -3.62 2 2.08 2.91 4.73 6.01 
+0.93 1.65 0.41 4.64 -4.49 2.64 -4.52 2.72 -5.38 1.97 -5.47 1.87 0.13 3.43 -0.74 4.76 
+-6.57 1.39 -6.45 1.47 -6.27 1.91 -6.79 0.83 -6.9 0.37 -6.86 0.13 -6.79 0.69 -4.79 -4.27 
+-1.76 -2.37 -2 2.3 -0.84 8.01 -5.45 3.53 -7.89 0.79 -7.88 -0.17 -2.82 1.73 -9.03 5.8 
+-3.97 -8.01 4.77 -7.27 -0.37 -1.22 -5.62 -3.19 -5.82 -2.5 -1.08 -4.82 0.13 -2.96 -5.49 -1.9 
+-5.53 -1.89 -7.01 -0.84 -1.41 0.39 -10.42 1.54 -4.23 -3.52 -4.47 -3.32 -4.84 -3.11 -6.29 -2.61 
+-5.1 -3.21 -3.21 -3.86 -3.14 -3.84 -4.32 -3.56 -2.82 -3.93 3.82 -4.73 13.89 -0.58 4.67 -2.59 
+5.05 -3.45 12.83 -2.25 3.75 -1.79 -0.08 -2.62 -3.65 -2.02 -1.37 -2.45 8.53 -2.3 5.36 -1.56 
+-6.25 -0.35 -9.13 -0.76 -5.27 -0.75 -9.31 -1.72 8.29 -1.58 13.74 0.15 5.93 -1.08 1.15 -2.02 
+-8.07 -1.41 -6.82 -1.39 6.56 -0.8 13.78 0.89 6.88 -0.58 1.67 -1.5 -0.85 -1.64 1.5 -1.39 
+0.5 -1.5 0.32 -1.49 4.25 0.23 8.86 0.81 -0.04 -1.22 0.46 -1.11 0 -1.24 1.21 -0.89 
+-0.13 -1.32 1.43 -0.8 0.52 -1.11 -6.56 -3.82 -3.73 -2.5 1.86 -0.92 1.29 -1.21 1.32 -1.19 
+1.43 -1.13 1.47 -1.09 3.45 1.76 6.84 3.93 1.04 -0.93 -4.05 -5.36 -0.29 -0.41 0.48 0.3 
+7.12 4.66 1.41 -0.56 1.37 -0.61 1.39 -0.56 1.43 -0.52 0.29 -2.28 2.23 0.61 1.22 -1.11 
+-1.5 -5.17 -0.32 -2.99 1.97 -0.72 2 -0.82 -0.28 -6.1 -3.37 -5.71 -3 0 -2.69 -2.91 
+-3.3 -9.68 -4.1 -5.08 -2.93 -3.95 -4.38 -9.65 -4.61 -4.8 -3.88 -4.04 -3.84 -9.96 -6.01 -5.46 
+-5.47 1.41 -5.7 0.93 -5.36 1.61 -4.25 -2.11 -5.93 -4.12 -6.54 0.45 -5.57 -1.5 -4.13 -2.47 
+-8.12 -4.71 -4.32 -2.4 -6.64 -5.34 -8.27 -4.34 -4.45 5.25 -3.93 5.54 0.3 1.84 4.02 11.57 
+1.24 2.21 4.51 8.4 2.52 6.51 2.13 5.01 10.05 7.71 8.55 8.74 5.38 6.68 2.07 2.93 
+5.03 6.62 2.61 3.02 1.66 3.58 -2.16 2.32 -1.68 2.56 -1.45 2.64 4.25 5.1 1.52 1.07 
+6.79 5.08 -5.36 0.71 -4.4 -0.32 -7.84 -1.07 -6.1 -0.91 -3.71 -2.6 -0.67 -3.71 -5.49 -4.19 
+-3.56 -3.54 p
+0.61 -3.8 -3.08 -5.99 -0.5 -0.54 -9.85 -8.47 -2.58 -3.82 2.25 -4.02 -0.82 -6.42 -1 -1.72 
+-2.13 -0.7 -11.11 -4.34 -4.73 -1.41 -8.64 -3.49 -7.68 -2.11 -3.12 4.82 -7.73 -2 -4.77 -7.44 
+3.49 -5.14 7.01 -2.19 -2.52 -6.62 -5.03 -9.09 -0.74 -2.63 -1.13 -9.22 -0.96 -4.91 -1.45 -8.86 
+-0.52 -4.82 -8.73 -9.2 -3.14 -12.61 -9.74 -1.43 -4 8.66 0.09 1.33 -1.15 10.2 -6.6 4.58 
+-1.65 -0.19 -8.5 -1.09 -6.54 -11.41 -7.33 -2.07 -7.98 3.82 -6.34 -0.46 -5.14 0.48 -0.56 4.96 
+-0.02 6.77 -6.9 4.88 -3.89 0.09 -7.05 0.93 0.87 6.88 1.15 6.34 -7.59 4.18 0.67 11.09 
+-4.52 -0.35 -2.97 -0.22 -7.05 -0.8 -6.14 5.58 2.3 11.94 2.11 4.14 2.65 8.86 3.45 11.41 
+1.39 6.64 2.91 4.71 3.63 10.44 4.99 7.68 7.73 6.49 5.58 5.13 2.9 6.05 5.14 9.33 
+7.97 6.62 5.81 4.84 -2.32 6.4 -0.28 -0.04 -0.04 -0.02 -14.74 -9.66 -0.58 -0.36 -6.86 -4.1 
+-8.05 -7.25 -13.54 -6.9 -3.13 -3.71 -10.87 -10.03 -8.13 -8.09 -4.97 -6.95 -3.41 -7.11 -8.57 -10.27 
+-12.11 -8.44 -12.11 -7.32 p f*
+110 210 9 rG
+2125.7 1597.18 -0.89 -0.02 0.74 1.37 11.76 13.02 8.48 4.52 0 -4.13 -8.25 -4.14 -3.66 -4.01 
+3.84 1.91 8.07 6.25 0 4.13 3.95 2.11 4.19 -1 -3.86 -4.67 -12.13 -8.92 -12.24 -6.4 f*
+0 255 r6
+2137.71 1605.68 -3.84 -1.91 3.66 4.01 8.25 4.14 -8.07 -6.25 f*
+0 155 255 rG
+2151.28 1648.74 -9.18 -9.89 8.36 0.5 7.29 8.03 -5.91 1.96 -0.57 -0.59 0 -2.86 2.26 -0.72 
+-2.75 -3.04 -3.15 -0.15 3.64 3.91 0 2.86 f*
+255 0 r6
+2151.28 1645.88 -3.64 -3.91 3.15 0.15 2.75 3.04 -2.26 0.72 f*
+0 155 255 rG
+2149.66 982.18 -0.22 2.39 3.67 -2.48 10.79 -12.58 4.84 -7.66 0 -20.57 4.67 -9.42 10.98 -10.04 
+-4.45 10.63 -11.2 8.83 0 20.57 2.97 -4.67 7.71 -12.17 7.29 -12.07 8.01 -11.87 15.34 -10.89 
+2.3 -0.87 4.27 -1.85 0 -2.89 -0.04 -6.08 8.92 -3.27 1.04 4.63 -5.55 2.64 -4.36 2.08 
+0 2.89 9.77 -4.25 4.93 -2.8 0.7 -3.28 -3.11 -5.36 -10.98 2.78 -5.91 3.23 -14.5 9.3 
+-2.06 1.2 -13.18 11.39 -11.71 11.92 -7.62 12.5 -0.74 6.05 -0.3 6.77 -7.8 12.57 -4.46 12.7 f*
+110 210 9 rG
+2162.46 1635.25 -12.2 -1.22 13.17 12.17 4 6.01 10.18 13.29 0.37 0.32 0 -5.16 -3.97 -5.34 
+2.61 -2.21 4.62 5.46 -3.25 2.09 0 5.16 1.52 1.37 3.36 0.48 6.55 -5.62 -11.44 -13.48 
+-2.21 -2.08 -13.3 -11.24 f*
+2 239 204 rG
+2157.33 1671.94 -0.91 1.96 2.28 2.17 14.11 9.07 0 -1.89 -0.93 -0.63 -8.59 -5.77 6.88 -1.13 
+6.92 6.62 -4.28 0.91 0 1.89 1 0.63 7.86 -1.76 -12.71 -12.15 -11.61 0.08 f*
+7 193 59 rG
+2170.16 1675.71 -6.87 1.13 8.59 5.77 0 -1.91 -1.43 -0.93 1.04 -0.2 1.04 1 -0.65 0.13 
+0 1.91 0.93 0.63 4.28 -0.91 -6.92 -6.62 f*
+2 239 204 rG
+2173.39 931.86 -4.67 9.42 11.2 -8.83 4.45 -10.63 -10.98 10.04 f*
+110 210 9 rG
+2171.48 1679.58 -1.04 0.2 1.43 0.93 0.65 -0.13 -1.04 -1 f*
+0 255 r6
+2176.61 1653.11 -2.61 2.21 3.97 5.34 3.25 -2.09 -4.62 -5.46 f*
+255 0 r6
+2196.27 1683.12 -8.83 -5.36 7.23 0.59 3.73 3.26 -2.13 1.52 f*
+0 155 255 rG
+2196.89 1535.22 -3.5 3.78 2.07 -5.23 2.26 -0.17 -0.83 1.63 f*
+110 210 9 rG
+2203.73 1667.04 -7.25 -2.14 3.37 9.24 7.83 7.23 14.54 6.72 1.5 1.07 -0.13 2.47 -12.11 -0.07 
+-0.78 1.7 1.89 0.93 11.26 9.96 8.74 9.22 2.91 1.61 15.08 4.43 11.42 4.73 6.58 2.88 
+9.16 4.64 12.83 5.99 1.58 0.5 11.46 5.86 11.74 4.23 2 0.63 10.89 4.67 9.12 4.71 
+7.96 4.86 7.75 4.84 8.22 1.54 0 -0.89 -2.69 -0.52 -4.08 -0.79 -7.59 -4.79 -7.94 -4.75 
+-9.53 -4.52 -9.59 -4.84 -6.81 -2.15 -6.99 -2.54 -9.14 -5.9 -8.63 -2.62 -7.49 -3.52 -14.17 -7.24 
+-0.02 0 -17.45 -7.21 -10.48 -2.87 -4.82 -2.08 -2.87 -2.95 -4.49 -4.6 0.56 -5.23 8.23 6.95 
+2.75 1.72 0 -11.37 -1.45 -1 -7.66 -5.29 -7.88 -5.55 -12.52 -7.81 10.33 0.93 6.25 4.14 
+9.72 6.83 5.97 4.21 -2.76 3.54 0 11.38 8.94 5.6 9.57 2.88 1.67 1.29 0 -6.12 
+-12.89 -0.8 -1.56 -0.98 -4.6 -2.89 0.46 -6.9 16.25 7.51 2.64 2.23 -0.3 1.82 0 6.12 
+8.33 6.42 -1.25 -6.9 0.09 -6.71 3.49 -2.24 5.23 3.04 2.04 1.17 0 -7.31 -9.29 -0.57 
+-2.84 -0.82 1.35 -2.11 10.78 3.49 0 7.31 9.89 5.69 0 -2.76 -7.03 -3.73 1.23 -5.79 
+16.56 6.57 -10.77 2.95 0 2.76 0.26 0.15 0.79 6.4 6.08 2.8 0 -2.34 -1.09 -0.5 
+0 -0.89 2.61 0.83 -1.52 0.56 0 2.34 3.1 1.43 11.07 -2.71 -0.26 -2.11 -4.77 -4.26 
+-5.47 -1.47 4.01 -0.48 10.34 -1.61 0 -2.54 -13.52 -1.3 10.5 -3.32 9.22 3.21 -6.2 1.41 
+0 2.54 1.63 -0.24 5.23 1.66 7.44 4.91 6.88 2.43 0 -1.67 -3.23 -1.17 -6.42 -4.79 
+1.93 -3.67 7.59 2.86 6.57 4.36 -6.45 2.41 0 1.67 2.25 0.8 6.73 -0.04 -0.26 5.52 
+11.48 0.3 0 -2.38 -1.8 -0.02 0.5 -1.2 2.28 0.52 -0.98 0.7 0 2.38 2.78 0.09 
+7.5 -5.53 -10.74 -2.43 1.24 -5.1 -5.69 -0.5 -6.27 -0.54 -3.79 -1.54 -6.84 -4.39 3.17 -4.14 
+0.13 -0.89 -1.13 -0.69 -13.41 -3.95 -3.41 -2.16 -3.62 -2.46 -1.11 -0.75 -10.96 -6.17 -2.3 -2.15 
+-5.14 -4.25 -11.11 -7.38 -0.87 -0.46 -7.23 -7.55 -6.95 -4.53 -6.68 -5.6 2.76 -5.38 -6.16 -8.75 
+-2.97 -4.95 -1.07 -3.43 1.59 -0.3 12.97 5.08 13.04 5.16 0.38 -0.04 0 -2.62 -12.92 -5.62 
+-5.9 -4.29 -5.34 -8.18 -1.02 -1.7 -1.34 -7.88 -3.28 -9.35 0.61 -6.25 -1.65 -2.26 -8.05 -8.71 
+-4.41 -8.48 8.77 -2.37 2.02 0.65 10.57 8.62 14.41 2.91 8.64 11.46 12.98 4.79 12.07 6.21 
+11.63 6.86 11.91 6.36 11.93 6.32 6.41 6.18 -9.31 0.46 -0.33 -0.04 -2.82 -1.3 -9.54 -4.51 
+-0.85 -0.09 -12.98 -2.54 -12.74 -5.05 -2.1 -0.17 0.24 4.79 1.13 1.7 4.82 7.66 -9.12 1.37 
+-1.21 0 -9.55 2.02 -3.28 0.41 -0.39 0.04 0 2.63 8.7 -1.17 5.19 -1.39 4.75 -0.41 
+6.9 -2.71 1.61 -4.71 -5.1 -7.92 9.86 3.69 13.52 3.23 12.48 5.6 4.95 0.61 7.14 -1.32 
+-7.98 -7.68 -11.72 -6.41 -0.11 -0.06 -11.89 -6.41 -3.8 -2.23 3 -1.84 0 -2.37 -1.96 -0.21 
+-8.36 -0.93 -4.12 -7.96 9.25 0.8 5.19 8.31 0 2.37 1.95 -1.2 -6.45 -10.33 -11.59 -1.07 
+3.9 9.05 -9.2 -4.62 -1.52 -0.76 -12.03 -6.32 -5.16 -6.36 -3.11 -5.32 -8.16 -2.78 -5.34 -1.59 
+-7.25 -8.03 P
+3.78 -6.1 -0.5 -2.54 -9.86 -9.01 1.13 -6.55 6.14 -4.79 6.12 -4.84 7.05 -3.93 5.77 -3.8 
+8.64 9.46 1.76 0.54 -0.22 -1.71 2.84 -6.73 6.23 0.25 1.86 8.9 1.09 4.41 -0.93 6.27 
+3.49 7.83 7.66 10.27 0.98 2.56 -2.48 0.43 -2.21 0.37 -7.77 -3.12 -2.38 6.44 2.64 4.3 
+8.27 10.59 12.87 3.25 2.5 -5.12 3.23 0.87 3.13 3.93 4.51 6.83 4.32 0.59 0 -1.02 
+-1.79 -0.24 -1.69 -0.24 -2.59 -3.89 6.36 -0.02 -0.3 4.38 0 1.02 1.78 0.24 1.65 -5.12 
+10.33 4.19 0.89 4.03 -1.71 4.5 4.32 6.42 5.47 4.82 3.58 4.8 1.36 2.49 0.24 4.34 
+5.96 5.97 1.93 1.48 2 4.38 6.21 4.34 10.15 1.48 3.73 0.48 7.33 0.52 7.25 0.2 
+0.78 0.15 -0.61 -0.45 -6.93 -5.05 -3.84 -2.59 -3.53 -3.69 1.11 -2.71 1.34 -2.63 2.11 -2.25 
+-2 -4.95 -0.73 -1.02 -6.14 -8.01 -1.17 -1.78 -7.81 -9.24 -4.67 -5.12 5.1 -1.43 -3.97 -5.57 
+-7.31 -5.08 -4.69 2.41 -2.59 -1.93 -0.3 -0.74 -4.16 -10.8 -0.91 -1.65 -5.02 -8.79 -2.61 -8.53 
+3.56 -5.62 0.02 -0.06 3.23 -6.67 5.06 2.65 10 8.16 1.13 0.71 11.13 6.41 1.08 0.56 
+8.21 1.87 7.09 0.65 2.39 1.64 7.07 3.52 5.29 -1.56 5.82 -0.52 5.36 -1.41 3.63 3.32 
+3.79 9.98 6.49 6.68 2.04 2.11 4.84 9.57 4.88 6.55 2.02 2.48 3.23 9.7 4.54 4.79 
+2.95 0.37 1.98 3.32 0.15 3.58 -2 1.17 -2.02 0.93 0.59 4.99 0.63 2.26 -1.11 1.61 
+-2.82 -1.3 0.37 3.52 -1.52 0.56 -1.49 0.61 -1.46 0.65 -1.56 0.52 -4.97 -3.25 -3.25 -2.2 
+2 2.89 2.3 3.08 -1 1.09 -4.17 -2.39 -5.75 -2.95 -1.57 1.15 -1.47 1.19 -1.43 1.24 
+-1.32 1.26 -2.39 0.76 6.21 4.16 3.66 2.18 -0.45 1.26 -1.95 0.7 0.58 1.61 -1.71 0.84 
+0.26 1.46 -0.5 1.2 0.26 1.37 -5.54 -0.52 -7.1 -0.43 -0.36 1.58 -0.7 1.54 -2.43 1.39 
+1.41 1.82 -2.86 1.52 -2.39 0.17 -13.78 -1.08 -10.93 1.28 11.37 2.34 4.03 0.74 -2.21 2.13 
+-1.15 0.2 -0.24 0 -10.09 -0.26 5.86 -2.28 -10.16 -2.59 -13.52 0.7 -1.43 0.35 -9.27 -0.42 
+-2.86 -0.11 -12.24 1.47 13.3 3.82 11.83 1.41 1.98 0.78 0 -1.17 -0.18 -0.02 -13.75 -1.5 
+-10.61 -3.04 9.76 -1.22 13.65 0.63 11.83 3.02 -10.7 2.13 0 1.17 0.39 0.16 10.66 1.99 
+0.78 2.76 1.65 2.69 -2.69 3.14 8.42 0.33 2.39 1 -0.46 1.84 -2.64 -1.32 -13.07 -0.98 
+-8.05 3.89 7.59 2.38 -4.86 4.34 -1.13 0.61 -0.98 0.07 -2.43 0.11 -6.32 -2.91 -1.91 -3.58 
+-7.53 -1.28 -14.15 -1.02 -0.85 0.43 -6.69 3.43 10.59 1.52 8.09 1.85 -3.75 4.6 -1.13 0.24 
+1.41 0.13 4.36 3.61 2.56 4.14 4.9 3.62 2.76 4.13 0.5 0.76 -2.05 4.76 -3.58 3.49 
+-1.52 3.63 9.16 2.08 6.47 -7.12 7.01 2.19 4.97 3.23 4.19 3.67 2.3 2.46 -2.67 4.12 
+0.37 4.64 -3.28 -0.7 -2.82 -0.59 -0.39 -2.02 0.82 -4.86 -7.57 -2.43 -8.38 -1.89 -1.66 0.11 
+-11.63 1.95 -3.47 -0.7 -4.3 -0.89 -0.91 -5.28 1.28 -0.78 -4.36 -1.93 -3.71 -1.97 -14.39 -1.67 
+-3.52 0.61 -8.42 1.43 -0.73 3.95 9.11 4.32 1.52 0.54 12.78 3.78 6.47 4.86 7.72 2.8 
+0 -1.24 p
+-2.93 -1 -3.12 -1.06 -5.88 -4.93 -7.18 -4.7 -0.07 -3.67 6.99 2.19 5.45 4.84 11.22 2.91 
+-4.47 5.43 0 1.24 2.17 0.78 6.64 4.52 1.39 -0.04 11.29 1.52 2.97 6.19 -12.67 3.02 
+0 0.89 2.73 0.52 3.59 -0.83 -1.72 1.74 1.67 7.27 6.36 5.21 0.37 0.56 2.39 0.54 
+3.5 0.65 0 -7.79 -2.46 -0.02 -8.5 -0.13 -1.26 -5.27 12.13 -1.47 0.09 6.9 0 7.79 
+4.12 0.74 0 -24.79 -2.69 0 -7.58 -3.32 -3.14 -3.6 7.62 1.17 5.57 4.21 0.22 1.54 
+0 24.79 1.84 0.33 3.45 0.47 0 -3.27 -1.58 -3.02 6.04 -0.72 1.25 3.28 -5.71 0.46 
+0 3.27 8.36 1.15 3.17 0.05 0 -11.31 -3.1 -0.34 -2.04 -1.43 3.23 0.34 1.91 1.43 
+0 11.31 2.41 0.04 0 -16.73 -1.04 -2.69 1.11 -6.86 -7.66 -2.28 -1.35 -3 5.08 0.16 
+8.03 1.52 6.42 -3.12 7.4 -1.96 4.28 4.34 4.51 2.43 -8 1.86 -7.01 -2 -8.74 1.55 
+1.84 5.4 -0.29 3.84 -4.58 0.8 0 16.73 6.84 0.11 2.34 0.02 3.58 -7.08 12.8 -5.03 
+-3.88 -2.35 -2.21 -1.34 -3.61 -6.96 10.74 -2.93 5.66 -1.35 -3.27 -2.12 -5.76 -2.8 -1.43 -6.43 
+0.04 -0.99 -5.59 -1.98 -5.73 -1.91 -2.93 -0.28 -10.35 5.12 -1.93 0.11 0 -1 -3.86 -3.1 
+-3.97 -3.82 -4.32 -3.49 -4.91 -3.17 -6.92 -2.45 -5.41 -3.23 -2.97 -4.04 -2.95 -3.97 -4.61 -3.6 
+-2.69 -4.04 -0.39 -4.29 1.06 -4.3 -12.76 -2.88 -2.35 -0.3 1.65 -0.89 13.26 -0.67 2.99 0.52 
+2.3 3.69 4.93 3.28 8.77 -0.39 2.91 -1.61 6.7 -4.51 0 -0.14 -0.52 -0.11 -9.22 -1.78 
+6.45 -3.12 10.46 0.8 -7.17 4.21 0 0.14 0.07 -0.05 12.93 -2.11 1.41 -0.65 0.39 -2.82 
+-4.39 -1.99 -1.41 -2.54 6.42 -1.72 0 -1.43 4.64 -0.56 0.84 0.04 -0.71 0.21 -4.77 0.3 
+0 1.43 4.97 -1.32 3.04 -0.87 -3.54 -0.22 -12.22 -1.04 -2.17 -0.33 -12.46 -2.32 10.88 -2.04 
+0 -0.98 -0.13 -0.02 -11.7 -2.93 11.11 -0.93 8.13 2.09 -7.42 1.8 0 0.98 0.22 -0.05 
+13.75 0.29 3.54 -0.63 1.67 -2.08 -6.03 -1.07 -9.12 -1.86 8.74 -1.04 13.8 0.98 4.63 -0.37 
+2.28 -1.52 -1.15 -1.74 1.97 -1.39 0.59 -1.52 0.37 -1.54 5.67 0.32 7.18 0.67 -0.16 -1.28 
+0.48 -1.15 -0.13 -1.34 1.47 -0.87 -0.37 -1.47 1.72 -0.74 0.48 -1.19 -5.12 -3 -4.95 -3.32 
+2.11 -0.85 1.3 -1.24 1.39 -1.21 1.46 -1.15 1.52 -1.13 4.6 2.34 5.49 3.17 1.02 -1 
+-3.17 -4.23 -1.13 -1.65 1.84 1.26 6.05 3.95 1.48 -0.55 1.41 -0.62 1.45 -0.59 1.48 -0.54 
+-0.04 -2.91 2.52 0.95 1.17 -1.34 -1.06 -3.71 -0.46 -3.99 2 -0.82 1.99 -1 -0.21 -4.84 
+-2.67 -4.51 -2.97 -0.2 -3.61 -3.84 -3.28 -9.68 -3.05 -3.8 -3.91 -5.25 -4.63 -9.59 -3.32 -3.47 
+-5.16 -5.36 -3.84 -9.96 -4.82 -4.38 -5.41 1.39 -5.77 0.73 -5.32 1.59 -5.66 -2.82 -4.17 -2.87 
+-6.81 -0.11 -7.42 -1.98 -1.48 -0.87 -10.83 -6.25 -1.56 -0.86 -8.87 -7.12 -6.66 -3.47 -3.82 5.95 
+-2.43 3.99 -1.15 1.87 3.28 10.72 3.12 5.51 2.71 5.02 3.35 8.68 1.21 2.84 10.22 7.57 
+0.08 0.11 0 -0.18 0.79 -5.59 3.69 2.54 1.97 2.82 -2.62 0.11 -3.82 0.13 0 0.18 
+8.05 8.92 p
+7.21 8.88 0.39 0.56 6.7 8.79 0.78 0.91 2.22 4.78 -2.13 2.28 -1.52 2.61 -1.26 2.66 
+4.67 4.91 1.3 0.87 7.81 5.77 -6.75 0.16 -5.86 -0.42 -5.79 -0.78 -8.14 -1.17 -4.95 -3.47 
+-1.32 -4.04 -3.73 -2.86 -4.75 -4.73 0.2 -4.08 -2.5 -4.52 -1.61 -2.17 -7.84 -6.88 -3.45 -5.1 
+1.98 -4.25 -1.34 -6.12 -13.02 -5.17 -1.63 -0.47 -11.52 -4.62 -5.45 -1.5 -2.82 4.96 -10.28 -2.62 
+-6.36 -9.96 3.28 -5.43 7.9 -1.5 -1.73 -4.6 -6.55 -11.13 -0.71 -1.62 -0.68 -10.81 -0.41 -2.06 
+-1.93 -11.84 -0.2 -1.8 -6.9 -6.88 -7.03 3.91 -1.76 -0.3 -1.54 -0.26 -6.31 1.52 -6.62 4.47 
+-10.83 -0.02 -6.08 1.32 -8.5 -5.05 -3.04 8.59 -10.07 -0.89 -1.48 0.82 -5.55 5.95 -2.11 3.73 
+-1.28 4.08 -4.56 3.67 -1.45 1.69 -0.5 1.16 -0.8 8.05 1.91 11.24 1.15 4.25 2.32 7.45 
+-6.42 2 -2.63 0.89 0.82 4.02 3.87 7.77 5.64 8.44 3.95 5.32 7.42 6.9 6.58 7.71 
+-0.04 7.23 -4.04 5.53 -3.95 0.68 -1.23 4.53 2.08 6.77 11.5 -1.72 1.13 -0.2 0.24 0.68 
+2.06 7.51 -0.91 2.19 -2.21 3.69 3.75 3.52 1.84 1.39 0 -60.94 -2.45 -6.79 -5.58 -10.48 
+-1.13 -1.73 1.8 0.24 1.65 2.02 8.29 9.61 0.24 3.41 -2.82 3.73 0 60.94 6.79 5.12 
+6.84 3.38 9.05 0.07 -10.79 -5.79 -8.34 -5.08 7.21 0.63 13.52 2.98 4.43 2.43 2.78 6.46 
+9.96 4.73 3.64 3.02 2.02 5.88 0.02 3.37 -14.87 -3.95 -0.99 -1.07 -14 -4.03 -0.84 1.93 
+-9.29 3.37 -1.59 -1.32 -6.32 -5.21 -10.24 -7.25 -4.86 -3.41 -10.8 -7.09 -13.41 -8.12 -1.17 -1.04 p f*
+0 255 r6
+2218.86 1678.04 -10.33 -0.93 12.52 7.81 7.88 5.55 7.66 5.29 0 -2.34 -2.45 -1.69 -14.15 -9.98 
+-3.37 -2.06 2.78 0.22 1.72 1.13 14.63 10.29 1.61 1.15 -0.76 0.95 0 2.34 1.45 1 
+2.76 -3.54 -5.97 -4.21 -9.72 -6.83 -6.25 -4.14 f*
+2 239 204 rG
+2225.5 895.23 -8.92 3.27 0.04 6.08 4.36 -2.08 0 -3.36 1.17 -0.43 0.13 0.61 -1.3 0.61 
+0 2.59 5.55 -2.64 -1.04 -4.62 f*
+255 203 0 rG
+2219.4 1679.91 -2.78 -0.22 3.37 2.06 14.15 9.98 2.45 1.69 0.76 -0.95 -1.61 -1.15 -14.63 -10.29 
+-1.72 -1.13 f*
+0 155 255 rG
+2217.36 1672.5 -0.32 -0.19 0.13 -0.61 1.23 1.07 -1.04 -0.26 f*
+7 193 59 rG
+2222.16 898.7 -1.17 0.43 0 0.78 1.3 -0.61 -0.13 -0.61 f*
+0 255 r6
+2227.06 1699.48 -0.56 5.23 4.49 4.6 0 -2.11 -1.87 -1.96 0.11 -1.37 2.16 1.8 -0.41 1.52 
+0 2.11 2.87 2.95 4.82 2.08 10.48 2.87 17.45 7.21 0.02 0 14.17 7.24 7.49 3.52 
+8.63 2.63 9.14 5.9 6.99 2.54 6.81 2.15 9.59 4.84 9.53 4.52 7.94 4.75 7.59 4.79 
+4.08 0.79 0 -0.91 -2.63 -0.52 -7.44 -4.75 -7.81 -4.58 -0.13 -0.09 -9.91 -4.3 -8.32 -5.06 
+-11.55 -3.64 -2.32 -0.84 -6.81 -5.97 -15.61 -4.73 -2.23 -1.07 -8.25 -6.83 -1.37 -6.75 -0.36 -1.43 
+1.75 1.52 6.45 6.79 9.16 6.51 9.75 3.04 5.03 2.52 8.05 5.63 9.45 0.28 9.57 2.62 
+7.05 4.82 5.55 5.21 5.77 5.21 12.76 -0.26 3.73 0.48 0.93 2.04 -10.27 4.17 0 0.91 
+2.69 0.52 12.67 -3.02 -2.97 -6.19 -11.29 -1.52 -1.39 0.04 -6.64 -4.52 -2.17 -0.78 -7.72 -2.8 
+-6.47 -4.86 -12.78 -3.78 -1.52 -0.54 -9.11 -4.32 0.73 -3.95 8.42 -1.43 0 -4.41 -8.03 -2.58 
+1.84 -4.88 6.96 4.17 -0.78 3.29 0 4.41 3.52 -0.61 14.39 1.67 3.71 1.97 4.36 1.93 
+-1.28 0.78 0.91 5.28 4.3 0.89 0 -1.93 -0.41 -0.09 -0.07 -0.28 0.65 0.11 -0.17 0.26 
+0 1.93 3.47 0.7 11.63 -1.95 1.66 -0.11 8.38 1.89 7.57 2.43 -0.82 4.86 0.39 2.02 
+2.82 0.59 0 -11.18 -5.45 -0.82 -6.7 -2.78 2.21 -2.71 2.47 0.74 5.04 3.3 2.43 2.28 
+0 11.18 3.28 0.7 -0.37 -4.64 2.67 -4.12 -2.3 -2.46 -4.19 -3.67 -4.97 -3.23 -7.01 -2.19 
+-6.47 7.12 -9.16 -2.08 1.52 -3.63 3.58 -3.49 2.05 -4.76 -0.5 -0.76 -2.76 -4.12 -4.9 -3.62 
+-2.56 -4.14 -4.36 -3.61 -1.41 -0.13 1.13 -0.24 3.75 -4.6 -8.09 -1.85 -10.59 -1.52 6.69 -3.43 
+0 -2.12 -8.25 -3.45 2.93 -4.21 1.76 -0.78 1.45 0.96 4.84 4.32 -2.73 3.17 0 2.13 
+0.85 -0.43 14.15 1.02 7.53 1.28 1.91 3.58 6.32 2.91 2.43 -0.11 0 -1.3 -5.23 -1.93 
+-1.55 -3.52 -12.02 -2 -3.88 -0.37 -3.66 -0.33 1.52 -4.05 -0.32 -0.3 -3.99 -3.78 -4.77 -4.32 
+-4.38 -1.97 -13.28 -2.84 -0.76 -0.17 -13.15 0.21 -2.84 -4.28 -0.25 -5.05 -4.17 -6.05 -3.46 -6.14 
+-3.84 -6.55 2.23 -4.69 9.79 -1.8 1.98 -4.51 1.45 -1.55 10.46 1.15 -7.96 -8.34 -0.24 -0.39 
+0.32 0.13 13.2 3.97 12.67 5.23 9.55 1.17 4.97 -2.19 -6.62 -7.38 -1.39 -4.36 -0.26 -1.21 
+-8.07 -9.36 -0.29 -0.34 -13.52 -4 -1.34 -5.45 -0.18 -6.51 -1.86 -4.71 1.19 -2.59 1.02 0.29 
+0.98 1.24 6.46 9.83 8.7 1.15 4.14 -3.16 4.97 1.99 0.43 1.93 -1.45 4.75 5.21 7.7 
+3.08 2.75 5.58 7.47 0.24 0.43 0.65 4.64 7.17 7.16 0.17 0.13 2.64 4.7 7.45 5.23 
+12.2 1.73 1.69 0.21 8.79 0.61 5.75 0.13 3.37 0.61 -2.63 -1.97 -4.4 -3.19 -6.4 -4.28 
+-2.39 -2.49 0.91 -2.73 1.21 -2.67 2.06 -2.23 -1.2 -4.36 -2.02 -2.82 -4.43 -5.73 -2.71 -4.12 
+-8.07 -9.03 -1.09 -1.17 3.56 -2.61 -5.95 -8.33 -10.48 -7.4 -8.18 -8.98 -6.14 -10.29 -1.93 -6.33 
+3.63 -5.5 0.34 -2.8 2.23 -4.6 3.47 1.82 9.66 8.31 3.71 2.32 8.44 4.82 3.52 1.8 
+7.62 1.09 7.38 1.2 0.61 0.41 8.48 4.21 5.27 -1.54 5.86 -0.3 5.3 -1.39 2.45 2.23 
+3.78 9.98 P
+7.77 8.03 0.76 0.76 5.08 9.5 5.86 7.86 0.98 1.2 2.4 7.25 0.64 2.47 0.63 0.63 
+4.97 5.1 2.98 0.52 1.26 2.15 0.11 2.3 -2.02 1.37 -2.04 1.04 0.7 5.99 0.24 0.8 
+-1.06 1.84 -3.02 -1.58 -0.19 -0.22 0.13 0.24 0.67 4.05 -1.58 0.59 -1.54 0.63 -1.52 0.65 
+-1.62 0.54 -3.91 -2.56 -4.62 -3.14 2.82 4.13 1.43 1.93 -0.98 1.17 -2.82 -1.62 -6.88 -3.54 
+-1.61 1.17 -1.52 1.21 -1.45 1.26 -1.39 1.3 -2.63 0.67 7.45 5.04 2.21 1.3 -0.41 1.34 
+-2.23 0.65 0.82 1.74 -1.97 0.85 0.41 1.52 -0.54 1.26 0.39 1.43 -3.89 -0.37 -8.5 -0.52 
+-0.39 1.61 -0.8 1.58 -2.91 1.37 1.71 1.91 -3.45 1.52 -0.15 0.02 -0.04 -0.02 -1.41 -0.08 
+-12.37 -1.96 -3.89 -1.63 -8.09 -3.64 5.8 -1.5 -6.81 -3.1 -7.54 -2.71 -5.34 -2.78 -12.98 -4.62 
+-9.26 -0.41 8.11 4.84 9.14 3.47 -9.48 -1.67 -13.26 -4.08 -1.08 -0.02 -12.7 -0.3 12.82 6.88 
+13.57 2.71 5.66 2 -5.4 -0.13 -0.37 0 -13.58 -2.43 -12.81 -3.61 -0.67 -0.2 -10.83 0.41 
+3.56 5.36 -3.32 3.75 1.06 4.69 10.7 4.3 13.15 0.54 0 -1.71 -0.11 -0.02 -13.65 -2.23 
+-4.88 -4.34 4.21 -2.02 0.84 -1.26 -0.95 -1.69 -4.17 -3.73 4.26 -0.2 13.54 3.32 13.63 1.99 
+11.13 0.2 0 -3.12 -5.08 -0.33 -5.84 -0.34 -13.59 -2.43 -10.7 -5.71 11.48 0.24 13.23 4.36 
+10.48 4.21 0 3.12 0.05 0 2.61 -0.93 0.98 0.18 0 -6.97 -13.33 -3.61 -3.19 -1.87 
+3.64 0.13 13.11 4.36 0.97 0.5 -1.21 0.48 0 6.97 12.67 2.12 0.13 0.09 0 -1.89 
+-10.29 -4.41 10.76 1.07 4.76 2.19 -5.12 1.13 -0.11 0.02 0 1.89 2.8 1.61 0.19 2.54 
+-3.12 -0.07 -13.71 -0.87 -5.86 -0.82 -7.83 -1.11 -4.05 1.37 1.65 3.75 -10.33 2.13 0 1.71 
+0.35 0 14.15 3.04 5.14 0.65 -4.79 0.63 -9.27 2.22 5.66 3.82 -2.48 3.71 10.36 2.8 
+0 -1.74 -4.54 -1.21 2.13 -2 0 -2.14 -0.84 -0.39 -5.82 -2.64 5.14 -1.26 8.82 1.56 
+-7.31 2.74 0 2.14 0.63 -0.61 4.71 2.32 -2.93 1.5 0 1.74 1.06 0.28 7.29 -3.8 
+-1.39 -3.14 3.6 -2.04 3.28 1.8 3.28 2.78 -3.43 2.14 -11.89 2.26 2.67 3.28 5.16 2.84 
+-2.58 3.04 0 1.3 0.98 -0.07 1.13 -0.61 4.86 -4.34 -7.59 -2.38 8.05 -3.89 13.07 0.98 
+2.64 1.32 0.46 -1.84 -2.39 -1 -8.42 -0.33 2.69 -3.14 -1.65 -2.69 -0.78 -2.76 -10.66 -1.99 
+-0.39 -0.16 -1.98 -0.78 -11.83 -1.41 -13.3 -3.82 12.24 -1.47 2.86 0.11 0 -0.5 -2.95 -0.15 
+-0.32 -0.13 -0.39 -0.13 -1.91 -3.71 2.19 -0.76 12.72 2.76 -9.34 2.12 0 0.5 9.27 0.42 
+1.43 -0.35 13.52 -0.7 10.16 2.59 -5.86 2.28 10.09 0.26 0 -0.96 -2.26 -1.52 -12.17 -3.06 
+-8.92 -0.93 8.86 0.48 0.46 0.39 13.67 2.87 2 0.37 -1.63 1.41 0 0.96 0.24 0 
+1.15 -0.2 2.21 -2.13 -4.03 -0.74 -11.37 -2.34 10.93 -1.28 13.78 1.08 2.39 -0.17 2.86 -1.52 
+-1.41 -1.82 2.43 -1.39 0.7 -1.54 0.36 -1.58 7.1 0.43 5.54 0.52 -0.26 -1.37 0.5 -1.2 
+-0.26 -1.46 1.71 -0.84 -0.58 -1.61 1.95 -0.7 0.45 -1.26 -3.66 -2.18 -6.21 -4.16 2.39 -0.76 
+1.32 -1.26 p
+1.43 -1.24 1.47 -1.19 1.57 -1.15 5.75 2.95 4.17 2.39 1 -1.09 -2.3 -3.08 -2 -2.89 
+3.25 2.2 4.97 3.25 1.56 -0.52 1.46 -0.65 1.49 -0.61 1.52 -0.56 -0.37 -3.52 2.82 1.3 
+1.11 -1.61 -0.63 -2.26 -0.59 -4.99 2.02 -0.93 2 -1.17 -0.15 -3.58 -1.98 -3.32 -2.95 -0.37 
+-4.54 -4.79 -3.23 -9.7 -2.02 -2.48 -4.88 -6.55 -4.84 -9.57 -2.04 -2.11 -6.49 -6.68 -3.79 -9.98 
+-3.63 -3.32 -5.36 1.41 -5.82 0.52 -5.29 1.56 -7.07 -3.52 -2.39 -1.64 -7.09 -0.65 -8.21 -1.87 
+-1.08 -0.56 -11.13 -6.41 -1.13 -0.71 -10 -8.16 -5.06 -2.65 -3.23 6.67 -0.02 0.06 -3.56 5.62 
+2.61 8.53 5.02 8.79 0.91 1.65 4.16 10.8 0.3 0.74 2.59 1.93 4.69 -2.41 7.31 5.08 
+3.97 5.57 -5.1 1.43 4.67 5.13 7.81 9.24 1.17 1.78 6.14 8.01 0.73 1.02 2 4.95 
+-2.11 2.25 -1.34 2.63 -1.11 2.71 3.53 3.69 3.84 2.59 6.93 5.05 0.61 0.45 -0.78 -0.15 
+-7.25 -0.2 -7.33 -0.52 -3.73 -0.48 -10.15 -1.48 -6.21 -4.34 -2 -4.38 -1.93 -1.48 -5.96 -5.97 
+-0.24 -4.34 -1.36 -2.49 -3.58 -4.8 -5.47 -4.82 -4.32 -6.42 1.71 -4.5 -0.89 -4.03 -10.33 -4.19 
+-1.65 5.13 -1.78 -0.24 -4.32 -0.59 -4.51 -6.83 -3.12 -3.93 -3.23 -0.87 -2.5 5.12 -12.87 -3.25 
+-8.27 -10.59 -2.64 -4.3 2.38 -6.44 7.77 3.12 2.21 -0.37 0 -1.65 -11.98 -6.54 -8.7 -4.12 
+-6.88 1 1.22 -6.25 3.63 -6.54 7.07 2.09 7.62 10.33 8.74 9.38 0.2 0.5 -0.91 0.15 
+0 1.65 2.48 -0.43 -0.98 -2.56 -7.66 -10.27 -3.49 -7.83 0.93 -6.27 -1.09 -4.41 -1.86 -8.9 
+-6.23 -0.25 -2.84 6.73 0.22 1.71 -1.76 -0.54 -8.64 -9.46 -5.77 3.8 -7.05 3.93 -6.12 4.84 
+-6.14 4.79 -1.13 6.55 9.86 9.01 0.5 2.54 -3.78 6.1 7.25 8.03 5.34 1.59 8.16 2.78 
+3.11 5.32 5.16 6.36 12.03 6.32 1.52 0.76 0 -1.04 -1 -0.5 -4.73 -3.17 -0.93 -7.88 
+1.67 -5.88 -0.22 -0.7 0.52 0.33 0.96 0.78 9.22 7.71 -1.84 4.84 -3.64 4.47 0 1.04 
+9.2 4.62 -3.9 -9.05 11.59 1.07 6.45 10.33 -1.95 1.2 -3 1.84 3.8 2.23 11.89 6.41 
+0.11 0.06 0 -0.25 -3.08 -6.91 6.59 1.52 3.62 4.23 -7.14 1.15 0 0.25 11.72 6.41 
+7.98 7.68 -7.14 1.32 -4.95 -0.61 -12.48 -5.6 -13.52 -3.23 -9.86 -3.69 5.1 7.92 -1.61 4.71 
+-6.9 2.71 -4.75 0.41 -5.19 1.39 -8.7 1.17 -0.37 0.04 -13.04 -5.16 -12.97 -5.08 -1.59 0.3 
+1.07 3.43 2.97 4.95 6.16 8.75 -2.76 5.38 6.68 5.6 6.95 4.53 7.23 7.55 0.87 0.46 
+11.11 7.38 5.14 4.25 2.3 2.15 10.96 6.17 1.11 0.75 0 -5.6 -0.28 -0.13 0.07 -0.43 
+1.2 0.54 -0.98 0.02 0 5.6 3.63 2.46 3.41 2.16 13.41 3.95 1.13 0.69 -0.13 0.89 
+-3.17 4.14 6.84 4.39 3.79 1.54 6.27 0.54 0 -10.57 -6.32 -1.32 4.52 -1.34 3.38 0.75 
+-1.58 1.91 0 10.57 5.69 0.5 -1.24 5.1 10.74 2.43 -7.5 5.53 -2.78 -0.09 -11.48 -0.3 
+0.26 -5.52 -6.73 0.04 -2.25 -0.8 -6.88 -2.43 -7.44 -4.91 -5.23 -1.66 -1.62 0.24 -10.34 1.61 
+-4.01 0.48 5.47 1.47 4.77 4.26 0.26 2.11 -11.07 2.71 -3.1 -1.43 -6.08 -2.8 -0.79 -6.4 
+-0.26 -0.15 p
+-9.89 -5.69 -2.04 -1.17 -5.23 -3.04 -3.49 2.24 -0.09 6.71 1.25 6.9 -8.33 -6.42 -1.67 -1.29 
+-9.57 -2.88 -8.94 -5.6 -2.75 -1.72 -8.23 -6.95 p f*
+255 203 0 rG
+2229.23 1703.88 -0.11 1.37 1.87 1.96 0.41 -1.52 -2.16 -1.8 f*
+0 255 r6
+2237.63 1597.33 -1.8 -0.24 1.13 1.73 5.58 10.48 2.45 6.79 2.82 -3.73 -0.24 -3.41 -8.29 -9.61 
+-1.65 -2.02 f*
+7 193 59 rG
+2241.78 1589.32 -4.41 -8.48 8.77 -2.37 2.02 0.65 10.57 8.62 14.41 2.91 8.64 11.46 12.98 4.79 
+12.07 6.21 11.63 6.86 11.91 6.36 11.93 6.32 6.41 6.18 -9.31 0.46 -0.33 -0.04 -2.82 -1.3 
+-9.54 -4.51 -0.85 -0.09 -12.98 -2.54 -12.74 -5.05 -2.1 -0.17 0.24 4.79 1.13 1.7 4.82 7.66 
+-9.12 1.37 -1.21 0 -9.55 2.02 -3.28 0.41 0 -2.3 0.32 -0.04 9.55 -1.26 4.43 0 
+6.88 -1.02 -4.71 -6.45 -2.32 -2.32 0.19 -5.88 5.18 0.46 12.61 5.36 9.74 1.93 4.21 0.46 
+12.35 5.79 7.23 -0.28 -4.79 -4.64 -12.02 -6.21 -11.98 -6.29 -11.7 -6.75 -11.98 -6.36 -11.07 -3.5 
+-2.5 -0.35 -1.41 -2.12 -6.99 -9.87 -10.83 -2.12 -3.67 -0.54 -13.39 -3.2 8.23 12.04 1.91 3.02 
+-1.15 6.99 5.52 9.81 0.87 1.09 -0.09 6.92 8.53 9.66 12.85 5.68 0 2.3 -0.39 0.04 
+-12.92 -5.62 -5.9 -4.29 -5.34 -8.18 -1.02 -1.7 -1.34 -7.88 -3.28 -9.35 0.61 -6.25 -1.65 -2.26 
+-8.05 -8.71 f*
+2243.77 1710 -4.6 -2.89 0.46 -6.9 16.25 7.51 2.64 2.23 -0.3 1.82 -12.89 -0.8 -1.56 -0.98 
+0 -1.78 1.78 -0.06 -2.5 -1.21 -0.02 0.82 0.74 0.46 0 1.78 f*
+2 239 204 rG
+2243.77 1708.22 -0.74 -0.46 0.02 -0.82 2.5 1.21 -1.78 0.06 f*
+2252.63 1598.04 -8.23 -12.04 13.39 3.2 3.67 0.54 10.83 2.13 6.99 9.88 1.41 2.13 2.5 0.35 
+11.07 3.5 11.98 6.36 11.7 6.75 11.98 6.29 12.02 6.21 4.79 4.64 -7.23 0.28 -12.35 -5.79 
+-4.21 -0.46 -9.74 -1.93 -12.61 -5.36 -5.18 -0.46 -0.19 5.88 2.32 2.32 4.71 6.45 -6.88 1.02 
+-4.43 0 -9.55 1.26 0 -1.63 0.35 -0.04 6.25 -0.8 7.68 0.04 4.58 -0.67 -3.14 -4.3 
+-5.16 -5.18 0.84 -5.66 8.29 0.76 12.48 5.61 6.47 1.31 7.59 0.86 12.33 5.8 4.84 -0.17 
+-3.2 -3.11 -12.13 -6.08 -12 -6.23 -11.8 -6.68 -11.89 -6.49 -7.38 -2.3 -6.53 -0.89 -3.73 -5.62 
+-4.64 -6.62 -7.23 -1.39 -7.36 -1.08 -8.92 -2.08 5.47 8 4.12 6.42 -1.65 6.58 3.65 6.54 
+3.97 4.86 -0.63 6.51 5.69 6.42 12.8 5.68 0 1.63 -0.32 0.04 -12.85 -5.68 -8.53 -9.66 
+0.09 -6.92 -0.87 -1.09 -5.52 -9.81 1.15 -6.99 -1.91 -3.02 f*
+2250.54 1697.05 -2.89 -2.41 0.3 -3.8 6.04 4.99 -3.45 1.22 f*
+0 155 255 rG
+2253.43 1596.53 -5.47 -8 8.92 2.08 7.36 1.08 7.23 1.39 4.64 6.62 3.73 5.62 6.53 0.89 
+7.38 2.3 11.89 6.49 11.8 6.68 12 6.23 12.13 6.08 3.2 3.11 -4.84 0.17 -12.33 -5.8 
+-7.59 -0.86 -6.47 -1.31 -12.48 -5.61 -8.29 -0.76 -0.84 5.66 5.16 5.18 3.14 4.3 -4.58 0.67 
+-7.68 -0.04 -6.25 0.8 0 -1.63 3.32 -0.41 10.91 0.11 2.3 -0.33 -1.59 -2.17 -8.01 -8.05 
+1.5 -5.45 11.37 1.06 12.33 5.93 3.25 0.65 10.98 1.28 12.29 5.82 2.43 -0.08 -1.61 -1.57 
+-12.2 -5.95 -12.07 -6.18 -11.87 -6.58 -11.8 -6.64 -3.71 -1.15 -10.57 -1.39 -6.01 -9.14 -2.32 -3.34 
+-3.62 -0.67 -11.02 -1.57 -4.47 -1.02 2.74 3.97 6.29 9.8 -2.12 6.18 1.82 3.23 7.03 8.62 
+-1.17 6.14 2.84 3.19 12.76 5.68 0 1.63 -0.35 0.04 -12.8 -5.68 -5.69 -6.42 0.63 -6.51 
+-3.97 -4.86 -3.65 -6.54 1.65 -6.58 -4.12 -6.42 f*
+255 0 r6
+2254.28 1595.01 -2.74 -3.97 4.47 1.02 11.02 1.57 3.63 0.67 2.32 3.34 6.01 9.14 10.57 1.39 
+3.71 1.15 11.8 6.64 11.87 6.58 12.07 6.18 12.2 5.95 1.61 1.57 -2.43 0.08 -12.29 -5.82 
+-10.98 -1.28 -3.25 -0.65 -12.33 -5.93 -11.37 -1.06 -1.5 5.45 8.01 8.05 1.59 2.17 -2.3 0.33 
+-10.91 -0.11 -3.32 0.41 -12.76 -5.68 -2.84 -3.19 1.17 -6.14 -7.03 -8.62 -1.82 -3.23 2.12 -6.18 
+-6.29 -9.8 f*
+0 155 255 rG
+2256.29 1531.62 -3.97 -11.5 7.14 -4.62 10.96 5.49 -0.76 6.82 -6.58 4.71 -1.64 -0.22 0 -1.62 
+6.55 -4.82 0.37 -3.43 -5.49 -2.71 -6.83 4.77 1.99 5.73 3.41 0.46 0 1.62 -5.14 -0.67 f*
+255 0 r6
+2258.03 1530.21 -1.99 -5.73 6.83 -4.77 5.49 2.71 -0.37 3.43 -6.55 4.82 -3.41 -0.46 f*
+7 193 59 rG
+2266.86 1704.82 -2.84 -0.82 1.35 -2.11 10.78 3.49 -9.29 -0.57 f*
+255 203 0 rG
+2275.61 1718.12 -1.75 -1.52 0.36 1.43 1.37 6.75 8.25 6.83 2.23 1.07 15.61 4.73 6.81 5.97 
+2.32 0.84 11.55 3.64 8.32 5.06 9.91 4.3 0.13 0.09 0 -1.06 -2.73 -1.13 -6.12 -2.52 
+-7 -5.25 0.61 -2.78 5.34 1.48 7.64 4.75 2.28 5.45 0 1.06 7.81 4.58 7.44 4.75 
+2.63 0.52 10.27 -4.17 -0.93 -2.04 -3.73 -0.48 -12.76 0.26 -5.77 -5.21 -5.55 -5.21 -7.05 -4.82 
+-9.57 -2.62 -9.45 -0.28 -8.05 -5.62 -5.03 -2.52 -9.75 -3.04 -9.16 -6.51 -6.45 -6.79 f*
+2278.43 1559.12 -1.22 6.25 6.88 -1 8.7 4.12 11.98 6.54 0.91 -0.15 -0.2 -0.5 -8.74 -9.37 
+-7.62 -10.33 -7.07 -2.09 -3.62 6.54 f*
+7 193 59 rG
+2286.04 1715.62 -7.03 -3.73 1.23 -5.79 16.56 6.57 -10.77 2.95 f*
+110 210 9 rG
+2280.08 1514.5 -0.13 0.21 0.93 0.85 -0.63 -1.05 -0.17 -0.02 f*
+0 155 255 rG
+2286.02 849.8 -5.56 9.59 6.17 1.2 -0.26 1.11 -3.47 9.23 14.78 -7.42 10.53 -9.22 4.49 -8.79 
+0.83 -1.24 11.84 -8.66 12.3 -8.27 12.8 -7.9 1.97 -0.82 14.91 -5.64 1.74 -0.61 3.84 1.02 
+4.21 0.78 4.17 0.85 13.34 -5.64 1.61 -0.61 3.8 0.76 3.88 0.72 4 0.67 4.08 0.61 
+-0.43 0.8 -3.54 7.16 4.84 0.55 4.82 0.58 -0.16 0.8 -0.98 7.31 5.58 0.48 0.09 0.82 
+0.86 7.36 6.27 0.34 6.34 0.33 6.38 0.24 0.37 0.82 3.64 7.36 7 0.16 7.01 0.13 
+7.04 0.07 7.05 0.07 7.04 -0.37 -0.02 -1.17 -6.99 0.72 -6.99 -0.09 -6.98 -0.04 -6.95 -0.16 
+-6.94 -0.12 -3.23 -6.51 -0.74 -1.63 -6.34 -0.24 -6.25 -0.37 -6.18 -0.39 -0.76 -6.45 -0.17 -1.65 
+-5.49 -0.52 0.89 -6.43 0.3 -1.63 -4.7 -0.65 -4.73 -0.56 3.08 -6.25 0.87 -1.59 -4.01 -0.63 
+-3.93 -0.65 -3.84 -0.71 -3.73 -0.76 -3.21 1.24 -11.39 4.77 -4.19 -0.78 -4.42 -0.63 -3.78 -1 
+-3.49 1.21 -12.89 4.84 -3.95 1.61 -12.87 7.9 -12.41 8.27 -11.89 8.66 -1.65 2.48 -3.82 7.55 
+-10.63 9.22 -12.52 6.25 2.93 -7.79 0.57 -2.2 -6.1 -1.23 4.93 -8.44 1.39 -2.15 -4.93 -1.66 
+6.55 -8.14 1.8 -2.17 8.03 -8.14 2.2 -2.02 -3.5 -1.8 9.72 -7.7 2.71 -2 -1.91 -2.21 
+-3.21 -1.59 -2.21 -1.99 -2.17 -2 -1.73 -2.12 -1.54 -2.21 -1.22 -2.28 -0.8 -2.43 -0.48 -2.5 
+0.07 -2.64 15.67 -6.62 4.49 -1.67 0.59 -2.45 0.71 -2.45 1.37 -2.61 1.71 -2.63 2.09 -2.69 
+2.43 -2.71 2.82 -2.74 -3.32 -0.02 -13 0.06 9.2 -2.28 9.22 -2.3 4.6 -1 3.93 -2.76 
+4.34 -2.75 4.71 -2.71 5.04 -2.69 5.49 -2.63 5.73 -2.56 6.29 -2.47 16.43 -0.41 4.1 0.02 
+6.05 -1.84 6.18 -1.75 6.43 -1.63 6.79 -1.46 12.42 2.2 3.1 0.63 5.95 -0.96 6.05 -0.84 
+6.19 -0.7 6.25 -0.59 6.33 -0.41 6.38 -0.3 6.42 -0.13 6.4 0 1.98 -1.06 6.16 -3.71 
+7.51 0.39 7.48 0.5 7.77 0.37 7.33 0.89 3.3 -0.65 -0.52 -1.17 -7.81 -0.99 -2.43 -4.47 
+-0.73 -1.22 -4.3 -4.29 12.24 -2.72 11.57 1.29 11.22 1.7 10.98 1.97 10.64 2.25 4.34 -0.06 
+9.15 0.2 9.14 0.2 10.98 3.28 10.57 3.5 9.94 3.69 9.39 3.86 5.43 1.02 10.37 2.21 
+10.39 2.23 9.2 4.73 8.03 4.75 7.63 4.82 6.79 4.77 6.1 4.75 5.42 4.66 4.73 4.6 
+4.23 4.52 3.23 4.3 3.19 4.36 2.34 4.13 1.91 4.01 1.43 3.93 0.83 3.71 0.24 3.54 
+0 3.45 3.69 2.59 13.39 9.41 -1.2 3.3 -14.84 -4.82 -3.97 -1.11 3.21 2.45 12.17 9.68 
+-15.36 -5.34 -4.71 -1.67 -2.04 2.8 -2.69 2.5 -3.04 2.34 -3.71 2.04 -3.97 1.91 -14.78 -5.54 
+-3.91 -1.34 -4.12 1.67 -4.97 1.2 -3.79 1.95 -4.14 1.82 -4.82 1.43 -5.04 1.35 1.2 2.08 
+4.9 7.68 -5.6 1.39 -5.84 1.26 -6.23 1 -6.42 0.93 -6.6 0.83 -6.93 0.58 -11.93 -6.14 
+-3.23 -1.54 -6.51 0.69 -6.87 0.37 -6.49 0.84 -6.82 0.59 -7.05 0.34 -7.01 0.46 -9.72 -6.07 
+-2.87 -1.89 -6.45 0.7 -6.92 0 -6.55 0.71 -6.92 0.04 -7.12 -0.47 -6.66 0.82 -7.34 -1.65 
+-6.7 0.96 -6.91 0.11 -6.88 0.54 0.02 1.17 7.01 -0.28 6.99 -0.11 6.88 -0.52 7.2 0.76 
+6.84 -0.52 P
+7.05 0.13 6.92 -0.15 6.73 -0.52 6.88 -0.17 6.59 -0.55 1.43 0.96 11.13 6.95 7.08 -0.43 
+7.03 -0.43 6.88 -0.56 6.64 -0.74 6.81 -0.5 6.55 -0.71 1.61 0.78 13.67 7.05 6.88 -0.67 
+6.62 -0.84 6.46 -0.91 6.3 -1 5.99 -1.15 5.79 -1.28 -5.69 -8.96 -0.61 -1.04 5.1 -1.35 
+4.86 -1.43 4.43 -1.68 4.14 -1.78 4.6 -1.45 4.04 -1.74 1.95 0.67 16.95 6.38 3.91 -1.98 
+3.64 -2.11 3.15 -2.32 2.8 -2.45 2.32 -2.67 2.34 0.82 17.49 6.12 -13.84 -11.07 -1.61 -1.21 
+1.97 0.54 17.23 5.64 1.3 -3.28 -15.64 -11.02 -1.82 -1.3 0.08 -3.45 -0.28 -3.58 -0.8 -3.73 
+-1.34 -3.93 -1.87 -4.04 -2.37 -4.17 -3.08 -4.36 -3.38 -4.38 -4.19 -4.56 -4.77 -4.64 -5.45 -4.73 
+-6.11 -4.8 -4.47 -3.16 -2.35 -1.67 -7.57 -4.86 -8.14 -4.82 -9.07 -4.8 -11.91 -2.56 -11.94 -2.56 
+-2.71 -0.52 -9.46 -3.91 -10.05 -3.75 -10.63 -3.56 -11.11 -3.32 -20.66 -0.48 -2.19 0.04 -10.77 -2.3 
+-11.09 -2.02 -11.37 -1.73 -11.67 -1.35 -13.98 3.11 4.93 4.91 0.37 0.61 2.73 5.03 7.7 0.98 
+0.26 0.59 -1.65 0.32 -7.47 -0.93 -7.72 -0.56 -7.64 -0.54 -7.71 -0.37 -7.36 4.41 -0.98 0.54 
+-6.54 0 -6.53 0.13 -6.51 0.3 -6.45 0.46 -6.38 0.57 -6.29 0.74 -6.16 0.84 -6.05 1 
+-1.54 -0.33 -14.26 -2.47 -6.81 1.5 -6.53 1.67 -6.27 1.8 -6.08 1.88 -2.06 0 -9.39 0.24 
+-9.37 0.24 -6.27 2.54 -5.82 2.61 -5.51 2.69 -5.1 2.74 -4.73 2.75 -4.36 2.8 -3.95 2.82 
+-2.32 0.5 -20.83 5.21 14.73 -0.11 1.65 0 -2.82 2.78 -2.45 2.75 -2.08 2.72 -1.72 2.66 
+-1.37 2.63 -0.86 2.52 -0.63 2.5 -2.26 0.84 -17.77 7.54 0.07 2.65 0.5 2.52 0.82 2.45 
+1.21 2.32 1.52 2.23 1.76 2.15 2.12 2.04 2.28 2 2.91 1.76 2.39 2.02 -1.35 1 
+-11.04 8.79 3.64 1.75 -1.11 1 -9.05 9.22 -0.89 1.09 -7.5 9.37 5.14 1.54 -0.69 1.07 p f*
+2 239 204 rG
+2286.59 849.96 -4.93 8.44 6.1 1.23 -0.57 2.2 -2.93 7.79 12.52 -6.25 10.63 -9.22 3.82 -7.55 
+1.65 -2.48 11.89 -8.66 12.41 -8.27 12.87 -7.9 3.95 -1.61 12.89 -4.84 3.49 -1.21 3.78 1 
+4.42 0.63 4.19 0.78 11.39 -4.77 3.21 -1.24 3.73 0.76 3.84 0.71 3.93 0.65 4.01 0.63 
+-0.87 1.59 -3.08 6.25 4.73 0.56 4.7 0.65 -0.3 1.63 -0.89 6.43 5.49 0.52 0.17 1.65 
+0.76 6.45 6.18 0.39 6.25 0.37 6.34 0.24 0.74 1.63 3.23 6.51 6.94 0.13 6.95 0.16 
+6.98 0.04 6.99 0.09 6.99 -0.72 -0.04 -1.17 -6.92 1.07 -6.92 -0.11 -6.95 -0.02 -6.88 -0.15 
+-6.9 -0.16 -2.8 -5.64 -1.11 -2.45 -6.27 -0.24 -6.19 -0.39 -6.12 -0.43 -0.63 -5.53 -0.23 -2.47 
+-5.41 -0.57 0.76 -5.56 0.48 -2.43 -4.56 -0.74 -4.69 -0.55 2.67 -5.36 1.3 -2.38 -3.97 -0.61 
+-3.86 -0.65 -3.78 -0.72 -3.67 -0.74 -4.86 1.82 -9.39 3.93 -4.23 -0.71 -4.62 -0.48 -3.73 -1 
+-5.25 1.82 -10.85 4.06 -5.97 2.41 -12.94 7.88 -12.48 8.27 -11.93 8.66 -2.47 3.73 -3.17 6.29 
+-10.72 9.22 -10.29 5.1 2.43 -6.36 0.82 -3.3 -6.04 -1.26 4.32 -7.33 2.06 -3.2 -4.66 -1.8 
+5.58 -6.9 2.69 -3.26 7.01 -7.07 3.27 -3.04 -3.34 -1.84 8.4 -6.64 4.05 -2.97 -1.41 -2.38 
+-3.5 -1.43 -2.16 -2 -2.2 -1.93 -1.73 -2.12 -1.54 -2.18 -1.26 -2.23 -0.78 -2.41 -0.46 -2.47 
+0.22 -2.69 13.57 -5.66 6.74 -2.52 0.52 -2.41 0.57 -2.38 1.37 -2.56 1.71 -2.61 2.08 -2.65 
+2.43 -2.67 2.78 -2.71 -4.95 -0.02 -11.3 0.02 16.02 -3.95 6.9 -1.48 3.88 -2.73 4.32 -2.69 
+4.71 -2.7 4.97 -2.62 5.46 -2.59 5.64 -2.52 6.3 -2.43 14.11 -0.32 6.16 0.04 6.01 -1.8 
+6.08 -1.72 6.34 -1.58 6.77 -1.39 10.59 1.87 4.64 0.98 5.84 -0.95 5.95 -0.8 6.05 -0.7 
+6.14 -0.54 6.23 -0.43 6.25 -0.29 6.3 -0.12 6.31 0 2.93 -1.59 4.99 -3.01 7.34 0.39 
+7.31 0.45 7.81 0.17 7.23 0.87 4.93 -0.97 -0.76 -1.76 -7.97 -1 -2.08 -3.93 -1.11 -1.82 
+-3.67 -3.69 10.48 -2.32 11.45 1.21 11.07 1.67 10.88 1.91 10.5 2.21 6.51 -0.09 15.93 0.33 
+10.85 3.23 10.48 3.43 9.85 3.63 9.31 3.79 8.09 1.52 17.76 3.77 9.3 4.69 7.9 4.66 
+7.66 4.77 6.79 4.73 6.08 4.69 5.4 4.62 4.69 4.54 4.25 4.5 3.1 4.2 3.3 4.34 
+2.32 4.1 1.95 4 1.5 3.9 0.87 3.69 0.21 3.49 0.07 3.47 5.53 3.84 11.16 7.81 
+-1.06 3.32 -12.48 -4.02 -5.99 -1.63 4.86 3.65 10.48 8.31 -13.26 -4.55 -7.05 -2.5 -1.76 2.91 
+-2.6 2.52 -2.93 2.41 -3.76 1.96 -4.03 1.87 -12.61 -4.71 -5.88 -2.02 -4.19 1.61 -5.34 0.96 
+-3.47 2.13 -3.84 1.97 -4.8 1.43 -4.99 1.34 1.82 3.11 4.1 6.42 -5.38 1.5 -5.66 1.37 
+-6.2 0.99 -6.38 0.91 -6.55 0.85 -6.99 0.48 -10.18 -5.23 -4.84 -2.32 -6.46 0.72 -6.99 0.2 
+-6.32 1 -6.77 0.59 -7.05 0.26 -6.95 0.45 -8.31 -5.16 -4.3 -2.84 -6.29 0.84 -6.96 -0.17 
+-6.39 0.93 -6.92 -0.07 -7.2 -0.84 -6.47 1.15 -7.5 -2.54 -6.49 1.34 -6.8 0.13 -6.79 0.8 
+0.04 1.17 6.88 -0.54 6.91 -0.11 6.7 -0.96 7.34 1.65 6.66 -0.82 7.12 0.47 6.92 -0.04 
+6.55 -0.71 P
+6.92 0 6.45 -0.7 2.87 1.89 9.72 6.07 7.01 -0.46 7.05 -0.34 6.82 -0.59 6.49 -0.84 
+6.88 -0.37 6.51 -0.69 3.23 1.54 11.93 6.14 6.93 -0.58 6.6 -0.83 6.42 -0.93 6.23 -1 
+5.84 -1.26 5.6 -1.39 -4.9 -7.68 -1.2 -2.08 5.04 -1.35 4.82 -1.43 4.14 -1.82 3.79 -1.95 
+4.97 -1.2 4.12 -1.67 3.91 1.34 14.78 5.54 3.97 -1.91 3.71 -2.04 3.04 -2.34 2.69 -2.5 
+2.04 -2.8 4.71 1.67 15.36 5.34 -12.17 -9.68 -3.21 -2.45 3.97 1.11 14.84 4.82 1.2 -3.3 
+-13.39 -9.41 -3.69 -2.59 0 -3.45 -0.24 -3.54 -0.83 -3.71 -1.43 -3.93 -1.91 -4.01 -2.34 -4.13 
+-3.19 -4.36 -3.23 -4.3 -4.23 -4.52 -4.73 -4.6 -5.42 -4.66 -6.1 -4.75 -6.79 -4.77 -7.62 -4.82 
+-8.03 -4.75 -9.2 -4.73 -10.39 -2.23 -10.37 -2.21 -5.43 -1.02 -9.39 -3.86 -9.94 -3.69 -10.57 -3.5 
+-10.98 -3.28 -9.14 -0.2 -9.15 -0.2 -4.34 0.06 -10.64 -2.25 -10.98 -1.97 -11.22 -1.7 -11.57 -1.29 
+-12.24 2.72 4.3 4.29 0.73 1.22 2.43 4.47 7.81 0.99 0.52 1.17 -3.3 0.65 -7.33 -0.89 
+-7.77 -0.37 -7.48 -0.5 -7.51 -0.39 -6.16 3.71 -1.98 1.06 -6.4 0 -6.42 0.13 -6.38 0.3 
+-6.33 0.41 -6.25 0.59 -6.19 0.7 -6.05 0.84 -5.95 0.96 -3.1 -0.63 -12.42 -2.2 -6.79 1.46 
+-6.43 1.63 -6.18 1.75 -6.05 1.84 -4.1 -0.02 -16.43 0.41 -6.29 2.47 -5.73 2.56 -5.49 2.63 
+-5.04 2.69 -4.71 2.71 -4.34 2.75 -3.93 2.76 -4.6 1 -9.22 2.3 -9.2 2.28 13 -0.06 
+3.32 0.02 -2.82 2.74 -2.43 2.71 -2.09 2.69 -1.71 2.63 -1.37 2.61 -0.71 2.45 -0.59 2.45 
+-4.49 1.67 -15.67 6.62 -0.07 2.64 0.48 2.5 0.8 2.43 1.22 2.28 1.54 2.21 1.73 2.13 
+2.17 2 2.21 1.99 3.21 1.59 1.91 2.21 -2.71 2 -9.72 7.7 3.5 1.8 -2.2 2.02 
+-8.03 8.14 -1.8 2.17 -6.55 8.14 4.93 1.66 -1.39 2.15 p f*
+7 193 59 rG
+2287.17 850.09 -4.32 7.33 6.04 1.26 -0.82 3.3 -2.43 6.36 10.29 -5.1 10.72 -9.22 3.17 -6.29 
+2.47 -3.73 11.93 -8.66 12.48 -8.27 12.94 -7.88 5.97 -2.41 10.85 -4.06 5.25 -1.82 3.73 1 
+4.62 0.48 4.23 0.71 9.39 -3.93 4.86 -1.82 3.67 0.74 3.78 0.72 3.86 0.65 3.97 0.61 
+-1.3 2.38 -2.67 5.36 4.69 0.55 4.56 0.74 -0.48 2.43 -0.76 5.56 5.41 0.57 0.23 2.47 
+0.63 5.53 6.12 0.43 6.19 0.39 6.27 0.24 1.11 2.45 2.8 5.64 6.9 0.16 6.88 0.15 
+6.95 0.02 6.92 0.11 6.92 -1.07 -0.04 -1.17 -6.84 1.43 -6.87 -0.15 -6.89 0.02 -6.86 -0.19 
+-6.81 -0.14 -2.39 -4.79 -1.45 -3.25 -6.23 -0.24 -6.1 -0.46 -6.05 -0.46 -0.52 -4.64 -0.33 -3.28 
+-5.29 -0.61 0.65 -4.69 0.63 -3.23 -4.42 -0.8 -4.62 -0.56 2.23 -4.45 1.76 -3.17 -3.91 -0.61 
+-3.82 -0.67 -3.71 -0.7 -3.63 -0.74 -6.46 2.43 -7.44 3.11 -4.23 -0.68 -4.86 -0.3 -3.67 -1 
+-7.01 2.41 -8.84 3.27 -7.95 3.22 -13.02 7.86 -12.54 8.27 -12 8.66 -3.28 4.99 -2.52 5.03 
+-10.83 9.22 -8 3.97 1.89 -4.95 1.11 -4.38 -5.95 -1.3 3.67 -6.23 2.78 -4.25 -4.45 -1.93 
+4.6 -5.67 3.61 -4.34 5.99 -6.01 4.38 -4.02 -3.21 -1.91 7.07 -5.55 5.45 -3.95 -0.96 -2.59 
+-3.8 -1.26 -2.08 -2 -2.26 -1.91 -1.69 -2.09 -1.56 -2.15 -1.28 -2.21 -0.76 -2.37 -0.43 -2.47 
+0.34 -2.67 11.46 -4.77 9.01 -3.34 0.45 -2.34 0.41 -2.32 1.37 -2.54 1.71 -2.56 2.08 -2.62 
+2.41 -2.63 2.76 -2.67 -6.57 -0.04 -9.62 -0.02 13.63 -3.34 9.18 -1.96 3.86 -2.67 4.3 -2.67 
+4.68 -2.63 4.91 -2.57 5.45 -2.54 5.55 -2.48 6.29 -2.37 11.8 -0.25 8.18 0.06 5.99 -1.73 
+5.96 -1.7 6.25 -1.54 6.73 -1.33 8.79 1.57 6.19 1.28 5.73 -0.91 5.84 -0.78 5.94 -0.67 
+6.04 -0.54 6.1 -0.41 6.14 -0.28 6.17 -0.13 6.18 0 3.91 -2.11 3.82 -2.3 7.16 0.37 
+7.17 0.43 7.83 -0.04 7.09 0.87 6.58 -1.3 -1.02 -2.37 -8.07 -1.02 -1.78 -3.37 -1.46 -2.41 
+-3.06 -3.1 8.75 -1.93 11.35 1.15 10.94 1.63 10.75 1.89 10.39 2.17 8.63 -0.13 13.59 0.28 
+10.72 3.14 10.42 3.39 9.77 3.55 9.2 3.73 10.79 2.02 14.71 3.13 9.42 4.64 7.81 4.6 
+7.68 4.71 6.77 4.67 6.05 4.64 5.38 4.58 4.67 4.47 4.27 4.44 2.95 4.13 3.41 4.36 
+2.32 4.03 1.97 3.97 1.59 3.91 0.87 3.67 0.2 3.43 0.15 3.47 7.36 5.12 8.91 6.23 
+-0.93 3.34 -10.11 -3.21 -7.96 -2.17 6.46 4.84 8.79 6.97 -11.11 -3.82 -9.44 -3.3 -1.45 3.04 
+-2.5 2.54 -2.82 2.43 -3.84 1.91 -4.09 1.78 -10.43 -3.87 -7.86 -2.66 -4.27 1.54 -5.68 0.71 
+-3.15 2.28 -3.56 2.11 -4.73 1.43 -4.95 1.34 2.43 4.14 3.3 5.17 -5.17 1.63 -5.51 1.43 
+-6.14 1.02 -6.33 0.91 -6.54 0.83 -7.03 0.39 -8.44 -4.32 -6.46 -3.08 -6.43 0.7 -7.07 0.07 
+-6.14 1.13 -6.71 0.58 -7.07 0.2 -6.9 0.44 -6.86 -4.25 -5.75 -3.78 -6.14 1 -7.01 -0.37 
+-6.21 1.15 -6.92 -0.2 -7.27 -1.19 -6.29 1.47 -7.66 -3.45 -6.29 1.78 -6.71 0.16 -6.69 1.04 
+0.04 1.17 6.79 -0.8 6.8 -0.13 6.49 -1.34 7.5 2.54 6.47 -1.15 7.2 0.84 6.92 0.07 
+6.39 -0.93 P
+6.96 0.17 6.29 -0.84 4.3 2.84 8.31 5.16 6.95 -0.45 7.05 -0.26 6.77 -0.59 6.32 -1 
+6.99 -0.2 6.46 -0.72 4.84 2.32 10.18 5.23 6.99 -0.48 6.55 -0.85 6.38 -0.91 6.2 -0.99 
+5.66 -1.37 5.38 -1.5 -4.1 -6.42 -1.82 -3.11 4.99 -1.34 4.8 -1.43 3.84 -1.97 3.47 -2.13 
+5.34 -0.96 4.19 -1.61 5.88 2.02 12.61 4.71 4.03 -1.87 3.76 -1.96 2.93 -2.41 2.6 -2.52 
+1.76 -2.91 7.05 2.5 13.26 4.55 -10.48 -8.31 -4.86 -3.65 5.99 1.63 12.48 4.02 1.06 -3.32 
+-11.16 -7.81 -5.53 -3.84 -0.07 -3.47 -0.21 -3.49 -0.87 -3.69 -1.5 -3.9 -1.95 -4 -2.32 -4.1 
+-3.3 -4.34 -3.1 -4.2 -4.25 -4.5 -4.69 -4.54 -5.4 -4.62 -6.08 -4.69 -6.79 -4.73 -7.66 -4.77 
+-7.9 -4.66 -9.3 -4.69 -17.76 -3.77 -8.09 -1.52 -9.31 -3.79 -9.85 -3.63 -10.48 -3.43 -10.85 -3.23 
+-15.93 -0.33 -6.51 0.09 -10.5 -2.21 -10.87 -1.91 -11.07 -1.67 -11.45 -1.21 -10.48 2.32 3.67 3.69 
+1.11 1.82 2.08 3.93 7.97 1 0.76 1.76 -4.93 0.97 -7.23 -0.87 -7.81 -0.17 -7.31 -0.45 
+-7.34 -0.39 -4.99 3.01 -2.93 1.59 -6.31 0 -6.3 0.13 -6.25 0.29 -6.23 0.43 -6.14 0.54 
+-6.05 0.7 -5.95 0.8 -5.84 0.95 -4.64 -0.98 -10.59 -1.87 -6.77 1.39 -6.34 1.58 -6.08 1.72 
+-6.01 1.8 -6.16 -0.04 -14.11 0.32 -6.3 2.43 -5.64 2.52 -5.46 2.59 -4.97 2.62 -4.71 2.7 
+-4.32 2.69 -3.88 2.73 -6.9 1.48 -16.02 3.95 11.3 -0.02 4.95 0.02 -2.78 2.71 -2.43 2.67 
+-2.08 2.65 -1.71 2.61 -1.37 2.56 -0.57 2.38 -0.52 2.41 -6.74 2.52 -13.57 5.66 -0.22 2.69 
+0.46 2.47 0.78 2.41 1.26 2.23 1.54 2.18 1.73 2.13 2.2 1.93 2.16 2 3.5 1.43 
+1.41 2.38 -4.05 2.97 -8.4 6.64 3.34 1.84 -3.27 3.04 -7.01 7.07 -2.69 3.26 -5.58 6.9 
+4.66 1.8 -2.06 3.2 p f*
+110 210 9 rG
+2287.74 850.21 -3.67 6.23 5.95 1.3 -1.11 4.38 -1.89 4.95 8 -3.97 10.83 -9.22 2.52 -5.03 
+3.28 -4.99 12 -8.66 12.54 -8.27 13.02 -7.86 7.95 -3.22 8.84 -3.27 7.01 -2.41 3.67 1 
+4.86 0.3 4.23 0.68 7.44 -3.11 6.46 -2.43 3.63 0.74 3.71 0.7 3.82 0.67 3.91 0.61 
+-1.76 3.17 -2.23 4.45 4.62 0.56 4.42 0.8 -0.63 3.23 -0.65 4.69 5.29 0.61 0.33 3.28 
+0.52 4.64 6.05 0.46 6.1 0.46 6.23 0.24 1.45 3.25 2.39 4.79 6.81 0.14 6.86 0.19 
+6.89 -0.02 6.88 0.15 6.84 -1.43 -0.04 -1.17 -6.77 1.8 -6.82 -0.18 -6.83 0.02 -6.77 -0.19 
+-6.8 -0.13 -1.95 -3.95 -1.82 -4.09 -6.18 -0.24 -6.02 -0.48 -5.97 -0.5 -0.41 -3.73 -0.39 -4.11 
+-5.21 -0.65 0.52 -3.79 0.8 -4.04 -4.3 -0.89 -4.53 -0.57 1.8 -3.55 2.19 -3.95 -3.84 -0.61 
+-3.75 -0.65 -3.67 -0.7 -3.56 -0.74 -8.1 3.02 -5.46 2.26 -4.27 -0.59 -5.04 -0.17 -3.62 -0.98 
+-8.79 3 -6.79 2.52 -9.94 3.97 -13.08 7.88 -12.63 8.25 -12.05 8.66 -4.08 6.25 -1.89 3.76 
+-10.92 9.24 -5.75 2.82 1.37 -3.54 1.39 -5.47 -5.88 -1.3 3.04 -5.14 3.47 -5.29 -4.2 -2.06 
+3.62 -4.45 4.51 -5.4 4.95 -4.95 5.47 -5.01 -3.04 -1.96 5.75 -4.51 6.79 -4.91 -0.46 -2.75 
+-4.1 -1.13 -2.02 -1.98 -2.3 -1.87 -1.7 -2.06 -1.58 -2.11 -1.3 -2.16 -0.72 -2.37 -0.41 -2.45 
+0.48 -2.7 9.36 -3.86 11.24 -4.14 0.42 -2.3 0.25 -2.26 1.38 -2.5 1.71 -2.54 2.06 -2.58 
+2.41 -2.6 2.76 -2.61 -8.23 -0.11 -7.92 -0.04 11.24 -2.74 11.46 -2.41 3.82 -2.63 4.28 -2.61 
+4.67 -2.6 4.86 -2.54 5.41 -2.48 5.47 -2.43 6.31 -2.3 9.51 -0.2 10.2 0.06 5.96 -1.67 
+5.86 -1.64 6.14 -1.52 6.7 -1.25 6.98 1.25 7.71 1.61 5.62 -0.89 5.73 -0.78 5.84 -0.65 
+5.92 -0.52 5.97 -0.39 6.03 -0.28 6.05 -0.13 6.06 0 4.91 -2.63 2.63 -1.61 6.96 0.39 
+7.01 0.39 7.88 -0.24 6.99 0.82 8.2 -1.63 -1.25 -2.93 -8.18 -1.04 -1.47 -2.82 -1.82 -3.02 
+-2.43 -2.48 6.99 -1.56 11.26 1.09 10.79 1.61 10.64 1.84 10.24 2.13 10.79 -0.18 11.26 0.22 
+10.57 3.11 10.35 3.32 9.65 3.52 9.14 3.67 13.43 2.5 11.7 2.47 9.55 4.58 7.68 4.54 
+7.72 4.66 6.75 4.62 6.04 4.59 5.38 4.53 4.62 4.43 4.3 4.4 2.8 4.06 3.54 4.32 
+2.28 3.99 2.04 3.97 1.63 3.89 0.91 3.64 0.16 3.41 0.24 3.47 9.18 6.36 6.68 4.64 
+-0.82 3.36 -7.73 -2.43 -9.96 -2.7 8.07 6.05 7.14 5.6 -9 -3.06 -11.79 -4.1 -1.2 3.14 
+-2.38 2.58 -2.71 2.45 -3.88 1.84 -4.17 1.74 -8.27 -3.06 -9.79 -3.32 -4.36 1.48 -6.08 0.45 
+-2.8 2.46 -3.28 2.25 -4.68 1.43 -4.89 1.34 3.04 5.18 2.5 3.87 -4.97 1.76 -5.34 1.54 
+-6.09 1.02 -6.29 0.91 -6.49 0.83 -7.1 0.28 -6.69 -3.41 -8.07 -3.84 -6.4 0.7 -7.16 -0.09 
+-5.99 1.24 -6.64 0.61 -7.07 0.11 -6.86 0.45 -5.43 -3.37 -7.21 -4.73 -5.96 1.15 -7.07 -0.54 
+-6.03 1.34 -6.92 -0.28 -7.34 -1.54 -6.09 1.78 -6.45 -3.1 -1.3 -0.93 -3.35 1.02 -2.82 0.87 
+-6.6 0.17 -6.59 1.28 0.04 1.17 6.69 -1.04 6.71 -0.16 6.29 -1.78 7.66 3.45 6.29 -1.47 
+7.27 1.19 P
+6.92 0.2 6.21 -1.15 7.01 0.37 6.14 -1 5.75 3.78 6.86 4.25 6.9 -0.44 7.07 -0.2 
+6.71 -0.58 6.14 -1.13 7.07 -0.07 6.43 -0.7 6.46 3.08 8.44 4.32 7.03 -0.39 6.54 -0.83 
+6.33 -0.91 6.14 -1.02 5.51 -1.43 5.17 -1.63 -3.3 -5.17 -2.43 -4.14 4.95 -1.34 4.73 -1.43 
+3.56 -2.11 3.15 -2.28 5.68 -0.71 4.27 -1.54 7.86 2.66 10.43 3.87 4.09 -1.78 3.84 -1.91 
+2.82 -2.43 2.5 -2.54 1.45 -3.04 9.44 3.3 11.11 3.82 -8.79 -6.97 -6.46 -4.84 7.96 2.17 
+10.11 3.21 0.93 -3.34 -8.91 -6.23 -7.36 -5.12 -0.15 -3.47 -0.2 -3.43 -0.87 -3.67 -1.59 -3.91 
+-1.97 -3.97 -2.32 -4.03 -3.41 -4.36 -2.95 -4.13 -4.27 -4.44 -4.67 -4.47 -5.38 -4.58 -6.05 -4.64 
+-6.77 -4.67 -7.68 -4.71 -7.81 -4.6 -9.42 -4.64 -14.71 -3.12 -10.79 -2.02 -9.2 -3.73 -9.77 -3.55 
+-10.42 -3.39 -10.72 -3.14 -13.59 -0.28 -8.63 0.13 -10.39 -2.17 -10.75 -1.89 -10.94 -1.63 -11.35 -1.15 
+-8.75 1.93 3.06 3.1 1.46 2.41 1.78 3.37 8.07 1.02 1.02 2.37 -6.58 1.3 -7.09 -0.87 
+-7.83 0.04 -7.17 -0.43 -7.16 -0.37 -3.82 2.3 -3.91 2.11 -6.18 0 -6.17 0.13 -6.14 0.28 
+-6.1 0.41 -6.04 0.54 -5.94 0.67 -5.84 0.78 -5.73 0.91 -6.19 -1.28 -8.79 -1.57 -6.73 1.33 
+-6.25 1.54 -5.96 1.7 -5.99 1.73 -8.18 -0.06 -11.8 0.25 -6.29 2.37 -5.55 2.48 -5.45 2.54 
+-4.91 2.57 -4.68 2.63 -4.3 2.67 -3.86 2.67 -9.18 1.96 -13.63 3.34 9.62 0.02 6.57 0.04 
+-2.76 2.67 -2.41 2.63 -2.08 2.63 -1.71 2.56 -1.37 2.54 -0.41 2.32 -0.45 2.34 -9.01 3.34 
+-11.46 4.77 -0.34 2.67 0.43 2.47 0.76 2.37 1.28 2.21 1.56 2.15 1.69 2.09 2.26 1.91 
+2.08 2 3.8 1.26 0.96 2.59 -5.45 3.95 -7.07 5.55 3.21 1.91 -4.38 4.02 -5.99 6.01 
+-3.61 4.34 -4.6 5.67 4.45 1.93 -2.78 4.25 p f*
+0 255 r6
+2288.32 850.34 -3.04 5.14 5.88 1.3 -1.39 5.47 -1.37 3.54 5.75 -2.82 10.92 -9.24 1.89 -3.76 
+4.08 -6.25 12.05 -8.66 12.63 -8.25 13.08 -7.87 9.94 -3.97 6.79 -2.52 8.79 -3 3.62 0.98 
+5.04 0.17 4.27 0.59 5.46 -2.26 8.1 -3.02 3.56 0.74 3.67 0.7 3.75 0.65 3.84 0.61 
+-2.19 3.95 -1.8 3.55 4.53 0.57 4.3 0.89 -0.8 4.04 -0.52 3.79 5.21 0.65 0.39 4.11 
+0.41 3.73 5.97 0.5 6.02 0.48 6.18 0.24 1.82 4.09 1.95 3.95 6.8 0.13 6.77 0.19 
+6.83 -0.02 6.82 0.18 6.77 -1.8 -0.05 -1.17 -6.7 2.15 -6.75 -0.19 -6.8 0.04 -6.73 -0.21 
+-6.73 -0.11 -1.52 -3.1 -2.19 -4.88 -6.12 -0.24 -5.95 -0.52 -5.88 -0.54 -0.3 -2.82 -0.48 -4.91 
+-5.1 -0.7 0.41 -2.95 0.95 -4.84 -4.14 -0.96 -4.47 -0.56 1.34 -2.67 2.64 -4.75 -3.79 -0.59 
+-3.69 -0.65 -3.61 -0.7 -3.49 -0.72 -9.72 3.61 -3.47 1.43 -4.32 -0.54 -5.25 0 -3.58 -0.98 
+-10.52 3.58 -4.75 1.75 -11.93 4.76 -13.2 7.86 -12.67 8.24 -12.13 8.66 -4.86 7.5 -1.24 2.5 
+-11.04 9.23 -3.47 1.71 0.82 -2.13 1.67 -6.55 -5.79 -1.35 2.39 -4.01 4.19 -6.36 -3.97 -2.19 
+2.65 -3.23 5.4 -6.46 3.93 -3.89 6.58 -6.01 -2.89 -2 4.41 -3.45 8.16 -5.88 0.04 -2.93 
+-4.38 -0.98 -1.96 -1.97 -2.36 -1.8 -1.64 -2.07 -1.63 -2.06 -1.33 -2.14 -0.7 -2.34 -0.39 -2.41 
+0.61 -2.71 7.27 -2.97 13.48 -4.93 0.34 -2.26 0.11 -2.21 1.37 -2.45 1.72 -2.52 2.06 -2.54 
+2.38 -2.56 2.73 -2.59 -9.85 -0.12 -6.23 -0.05 8.86 -2.15 13.73 -2.87 3.78 -2.58 4.25 -2.58 
+4.64 -2.54 4.8 -2.5 5.38 -2.43 5.38 -2.39 6.32 -2.26 7.23 -0.12 12.22 0.11 5.93 -1.63 
+5.77 -1.61 6.03 -1.5 6.68 -1.17 5.18 0.93 9.25 1.93 5.52 -0.87 5.62 -0.76 5.71 -0.63 
+5.81 -0.52 5.86 -0.39 5.91 -0.24 5.92 -0.13 5.96 0 5.86 -3.17 1.45 -0.89 6.81 0.37 
+6.84 0.38 7.91 -0.43 6.86 0.8 9.8 -1.95 -1.47 -3.54 -8.31 -1.06 -1.18 -2.24 -2.17 -3.62 
+-1.82 -1.87 5.25 -1.17 11.18 1.02 10.64 1.56 10.53 1.8 10.11 2.09 12.91 -0.22 8.92 0.17 
+10.46 3.06 10.26 3.25 9.57 3.45 9.05 3.62 16.08 2.98 8.7 1.82 9.63 4.53 7.59 4.45 
+7.77 4.63 6.73 4.55 5.99 4.54 5.38 4.46 4.59 4.39 4.29 4.38 2.67 3.95 3.64 4.32 
+2.26 3.97 2.08 3.93 1.71 3.86 0.91 3.62 0.15 3.37 0.3 3.47 11 7.62 4.47 3.08 
+-0.71 3.39 -5.36 -1.68 -11.93 -3.19 9.68 7.23 5.45 4.25 -6.88 -2.32 -14.15 -4.86 -0.91 3.23 
+-2.28 2.61 -2.61 2.5 -3.97 1.78 -4.2 1.67 -6.1 -2.23 -11.76 -3.95 -4.43 1.39 -6.45 0.24 
+-2.48 2.58 -2.97 2.41 -4.64 1.43 -4.84 1.37 3.65 6.19 1.71 2.62 -4.75 1.85 -5.19 1.65 
+-6.05 1.02 -6.25 0.91 -6.45 0.82 -7.18 0.18 -4.91 -2.5 -9.72 -4.6 -6.31 0.7 -7.3 -0.24 
+-5.79 1.37 -6.59 0.61 -7.08 0.05 -6.8 0.45 -4.03 -2.5 -8.64 -5.64 -5.82 1.28 -7.09 -0.7 
+-5.86 1.54 -6.92 -0.41 -7.42 -1.88 -5.93 2.12 -4.54 -2.19 -3.25 -2.3 -6.1 1.69 -6.49 0.2 
+-1.91 0.67 -4.55 1 0.05 1.17 6.59 -1.28 6.6 -0.17 2.82 -0.87 3.35 -1.02 1.3 0.93 
+6.45 3.1 P
+6.09 -1.78 7.34 1.54 6.92 0.28 6.03 -1.34 7.07 0.54 5.96 -1.15 7.21 4.73 5.43 3.37 
+6.86 -0.45 7.07 -0.11 6.64 -0.61 5.99 -1.24 7.16 0.09 6.4 -0.7 8.07 3.84 6.69 3.41 
+7.1 -0.28 6.49 -0.83 6.29 -0.91 6.09 -1.02 5.34 -1.54 4.97 -1.76 -2.5 -3.87 -3.04 -5.18 
+4.89 -1.34 4.68 -1.43 3.28 -2.25 2.8 -2.46 6.08 -0.45 4.36 -1.48 9.79 3.32 8.27 3.06 
+4.17 -1.74 3.88 -1.84 2.71 -2.45 2.38 -2.58 1.2 -3.14 11.79 4.1 9 3.06 -7.14 -5.6 
+-8.07 -6.05 9.96 2.7 7.73 2.43 0.82 -3.36 -6.68 -4.64 -9.18 -6.36 -0.24 -3.47 -0.16 -3.41 
+-0.91 -3.64 -1.62 -3.89 -2.04 -3.97 -2.28 -3.99 -3.54 -4.32 -2.8 -4.06 -4.3 -4.4 -4.62 -4.43 
+-5.38 -4.53 -6.04 -4.59 -6.75 -4.62 -7.72 -4.66 -7.68 -4.54 -9.55 -4.58 -11.7 -2.47 -13.43 -2.5 
+-9.14 -3.67 -9.65 -3.52 -10.35 -3.32 -10.57 -3.11 -11.26 -0.22 -10.79 0.18 -10.24 -2.12 -10.64 -1.84 
+-10.79 -1.61 -11.26 -1.09 -6.99 1.56 2.43 2.48 1.82 3.02 1.47 2.82 8.18 1.04 1.25 2.93 
+-8.2 1.63 -6.99 -0.82 -7.88 0.24 -7.01 -0.39 -6.96 -0.39 -2.62 1.61 -4.91 2.63 -6.06 0 
+-6.05 0.13 -6.03 0.28 -5.97 0.39 -5.92 0.52 -5.84 0.65 -5.73 0.78 -5.62 0.89 -7.71 -1.61 
+-6.98 -1.25 -6.7 1.25 -6.14 1.52 -5.86 1.64 -5.96 1.67 -10.2 -0.06 -9.51 0.2 -6.31 2.3 
+-5.47 2.43 -5.41 2.48 -4.86 2.54 -4.67 2.6 -4.28 2.61 -3.82 2.63 -11.46 2.41 -11.24 2.74 
+7.92 0.04 8.23 0.11 -2.76 2.61 -2.41 2.6 -2.06 2.58 -1.71 2.54 -1.37 2.5 -0.25 2.26 
+-0.42 2.3 -11.24 4.14 -9.36 3.86 -0.48 2.7 0.41 2.45 0.72 2.37 1.3 2.16 1.58 2.11 
+1.7 2.06 2.3 1.87 2.02 1.98 4.1 1.13 0.46 2.75 -6.79 4.91 -5.75 4.51 3.04 1.96 
+-5.47 5.01 -4.95 4.95 -4.51 5.4 -3.62 4.45 4.2 2.06 -3.47 5.29 p f*
+255 203 0 rG
+2288.89 850.5 -2.39 4.01 5.79 1.35 -1.67 6.55 -0.82 2.13 3.47 -1.71 11.04 -9.23 1.24 -2.5 
+4.86 -7.5 12.13 -8.66 12.67 -8.24 13.2 -7.86 11.93 -4.76 4.75 -1.75 10.52 -3.58 3.58 0.98 
+5.25 0 4.32 0.54 3.47 -1.43 9.72 -3.61 3.49 0.72 3.61 0.7 3.69 0.65 3.79 0.59 
+-2.64 4.75 -1.34 2.67 4.47 0.56 4.14 0.96 -0.95 4.84 -0.41 2.95 5.1 0.7 0.48 4.91 
+0.3 2.82 5.88 0.54 5.95 0.52 6.12 0.24 2.19 4.88 1.52 3.1 6.73 0.11 6.73 0.21 
+6.8 -0.04 6.75 0.19 6.7 -2.15 -0.02 -0.97 -0.02 -0.39 -0.3 0.39 -6.31 2.32 -6.71 -0.24 
+-6.73 0.09 -6.67 -0.24 -6.68 -0.11 -1.12 -2.26 -2.54 -5.68 -6.05 -0.24 -5.86 -0.56 -5.8 -0.59 
+-0.21 -1.91 -0.55 -5.73 -5.01 -0.74 0.3 -2.09 1.13 -5.62 -4.01 -1.02 -4.41 -0.59 0.91 -1.78 
+3.08 -5.51 -3.71 -0.61 -3.65 -0.66 -3.53 -0.67 -3.46 -0.74 -11.34 4.21 -1.5 0.63 -4.32 -0.48 
+-5.5 0.13 -3.51 -0.98 -12.31 4.17 -2.71 0.98 -13.93 5.54 -13.26 7.86 -12.76 8.25 -12.17 8.63 
+-5.67 8.81 -0.61 1.22 -11.13 9.22 -1.2 0.59 0.29 -0.74 1.95 -7.61 -5.71 -1.37 1.73 -2.93 
+4.91 -7.4 -3.76 -2.32 1.7 -2.02 6.29 -7.51 2.89 -2.86 7.68 -6.99 -2.73 -2.04 3.08 -2.39 
+9.53 -6.86 0.52 -3.09 -4.68 -0.82 -1.89 -1.98 -2.39 -1.78 -1.65 -2.02 -1.63 -2.04 -1.37 -2.11 
+-0.67 -2.32 -0.36 -2.39 0.75 -2.71 5.14 -2.11 15.73 -5.71 0.28 -2.21 -0.04 -2.15 1.37 -2.43 
+1.71 -2.48 2.04 -2.5 2.37 -2.52 2.71 -2.56 -11.43 -0.2 -4.58 -0.04 6.49 -1.56 15.99 -3.3 
+3.76 -2.54 4.23 -2.54 4.62 -2.5 4.73 -2.46 5.36 -2.38 5.29 -2.34 6.32 -2.2 4.95 -0.08 
+14.21 0.15 5.91 -1.58 5.66 -1.56 5.95 -1.45 6.64 -1.13 3.41 0.63 10.77 2.25 5.4 -0.84 
+5.51 -0.74 5.6 -0.61 5.69 -0.5 5.75 -0.39 5.8 -0.24 5.82 -0.13 5.84 0 6.83 -3.69 
+0.3 -0.17 6.62 0.36 6.71 0.35 7.92 -0.67 6.75 0.8 11.43 -2.28 -1.69 -4.12 -8.44 -1.08 
+-0.89 -1.7 -2.52 -4.23 -1.22 -1.24 3.54 -0.8 11.07 0.95 10.51 1.54 10.39 1.76 10 2.04 
+15.02 -0.26 6.6 0.13 10.33 3.02 10.2 3.2 9.48 3.38 8.97 3.56 9.33 1.73 9.36 1.72 
+5.73 1.19 9.75 4.5 7.49 4.38 7.81 4.55 6.7 4.52 5.97 4.47 5.34 4.42 4.56 4.32 
+4.32 4.34 2.52 3.88 3.76 4.32 2.25 3.91 2.11 3.91 1.78 3.86 0.93 3.61 0.13 3.32 
+0.37 3.47 12.85 8.86 2.23 1.54 -0.61 3.41 -2.98 -0.93 -13.93 -3.69 11.28 8.39 3.78 2.93 
+-4.75 -1.58 -16.54 -5.64 -0.61 3.34 -2.17 2.63 -2.5 2.54 -4.03 1.7 -4.28 1.63 -3.93 -1.43 
+-13.71 -4.6 -4.51 1.32 -6.84 0 -2.12 2.75 -2.67 2.56 -4.6 1.43 -4.79 1.34 4.25 7.21 
+0.91 1.36 -4.55 1.98 -5.01 1.73 -5.99 1.02 -6.23 0.91 -6.4 0.82 -7.23 0.07 -3.14 -1.58 
+-11.35 -5.36 -6.3 0.7 -7.36 -0.39 -5.64 1.5 -6.53 0.63 -7.1 -0.04 -6.73 0.43 -2.6 -1.59 
+-10.09 -6.6 -5.64 1.45 -7.16 -0.89 -5.69 1.75 -6.92 -0.52 -5.29 -1.41 -2.43 -1.43 -1.56 1.56 
+-3.93 1.47 -2.67 -1.28 -5.19 -3.64 -6.05 1.3 -6.38 0.16 -6.32 2.12 0.02 0.39 0.02 0.97 
+4.55 -1 P
+1.91 -0.67 6.49 -0.2 6.1 -1.69 3.25 2.3 4.54 2.19 5.93 -2.12 7.42 1.88 6.92 0.41 
+5.86 -1.54 7.09 0.7 5.82 -1.28 8.64 5.64 4.03 2.5 6.8 -0.45 7.08 -0.05 6.59 -0.61 
+5.79 -1.37 7.3 0.24 6.31 -0.7 9.72 4.6 4.91 2.5 7.18 -0.18 6.45 -0.82 6.25 -0.91 
+6.05 -1.02 5.19 -1.65 4.75 -1.85 -1.71 -2.62 -3.65 -6.19 4.84 -1.37 4.64 -1.43 2.97 -2.41 
+2.48 -2.58 6.45 -0.24 4.43 -1.39 11.76 3.95 6.1 2.23 4.2 -1.67 3.97 -1.78 2.61 -2.5 
+2.28 -2.61 0.91 -3.23 14.15 4.86 6.88 2.32 -5.45 -4.25 -9.68 -7.23 11.93 3.19 5.36 1.68 
+0.71 -3.39 -4.47 -3.08 -11 -7.62 -0.3 -3.47 -0.15 -3.37 -0.91 -3.62 -1.71 -3.86 -2.08 -3.93 
+-2.26 -3.97 -3.64 -4.32 -2.67 -3.95 -4.29 -4.38 -4.59 -4.39 -5.37 -4.46 -5.99 -4.54 -6.73 -4.55 
+-7.77 -4.62 -7.59 -4.45 -9.63 -4.53 -8.7 -1.82 -16.08 -2.98 -9.05 -3.62 -9.57 -3.45 -10.26 -3.25 
+-10.46 -3.06 -8.92 -0.17 -12.91 0.22 -10.11 -2.09 -10.53 -1.8 -10.64 -1.56 -11.18 -1.02 -5.25 1.17 
+1.82 1.87 2.17 3.63 1.18 2.24 8.31 1.06 1.47 3.54 -9.8 1.95 -6.86 -0.8 -7.91 0.43 
+-6.84 -0.37 -6.81 -0.37 -1.45 0.89 -5.86 3.17 -5.96 0 -5.92 0.13 -5.91 0.24 -5.86 0.39 
+-5.81 0.52 -5.71 0.63 -5.62 0.76 -5.52 0.87 -9.25 -1.93 -5.18 -0.93 -6.68 1.17 -6.03 1.5 
+-5.77 1.61 -5.93 1.63 -12.22 -0.11 -7.23 0.13 -6.32 2.26 -5.38 2.39 -5.38 2.43 -4.8 2.5 
+-4.64 2.54 -4.25 2.58 -3.78 2.58 -13.73 2.87 -8.86 2.15 6.23 0.05 9.85 0.13 -2.73 2.59 
+-2.38 2.56 -2.06 2.54 -1.72 2.52 -1.37 2.45 -0.11 2.21 -0.34 2.26 -13.48 4.93 -7.27 2.97 
+-0.61 2.71 0.39 2.41 0.7 2.34 1.33 2.14 1.63 2.06 1.64 2.07 2.36 1.8 1.96 1.97 
+4.38 0.98 -0.04 2.93 -8.16 5.88 -4.41 3.45 2.89 2 -6.58 6.01 -3.93 3.89 -5.4 6.46 
+-2.65 3.23 3.97 2.19 -4.19 6.36 p f*
+255 135 0 rG
+2289.47 850.63 -1.73 2.93 5.71 1.37 -1.95 7.61 -0.29 0.74 1.2 -0.59 11.13 -9.22 0.61 -1.22 
+5.67 -8.81 12.17 -8.63 12.76 -8.25 13.26 -7.86 13.93 -5.54 2.71 -0.98 12.31 -4.17 3.51 0.98 
+5.5 -0.12 4.32 0.48 1.5 -0.63 11.34 -4.21 3.46 0.74 3.53 0.67 3.65 0.66 3.71 0.61 
+-3.08 5.51 -0.91 1.78 4.41 0.59 4.01 1.02 -1.13 5.62 -0.3 2.09 5.01 0.74 0.55 5.73 
+0.21 1.91 5.8 0.59 5.86 0.56 6.05 0.24 2.54 5.68 1.13 2.26 6.68 0.11 6.67 0.24 
+6.73 -0.09 6.71 0.24 6.31 -2.32 0.3 -0.39 -0.09 -2.49 -2.38 2.89 -4.12 1.52 -6.64 -0.26 
+-6.68 0.09 -6.59 -0.24 -6.62 -0.11 -0.71 -1.43 -2.88 -6.47 -6.01 -0.25 -5.8 -0.59 -5.71 -0.61 
+-0.11 -1.02 -0.61 -6.53 -4.93 -0.8 0.2 -1.21 1.28 -6.43 -3.86 -1.09 -4.34 -0.59 0.48 -0.89 
+3.53 -6.3 -3.66 -0.61 -3.58 -0.63 -3.5 -0.67 -3.38 -0.73 -11.55 4.04 -3.16 0.37 -2.13 -0.22 
+-5.68 0.29 -3.47 -0.96 -14.06 4.73 -0.65 0.24 -15.97 6.3 -13.32 7.83 -12.85 8.25 -12.22 8.64 
+-6.55 9.98 -8.05 0.7 -5.64 -1.39 1.11 -1.84 5.6 -8.45 -3.49 -2.43 0.69 -0.83 7.23 -8.57 
+1.82 -1.8 8.81 -7.96 -2.61 -2.1 1.75 -1.35 10.88 -7.79 0.74 -2.69 1.89 -1.21 -2.78 0.54 
+-3.8 -0.57 -1.82 -1.97 -2.45 -1.71 -1.63 -2.02 -1.65 -2 -1.39 -2.06 -0.65 -2.3 -0.33 -2.39 
+0.87 -2.71 3.05 -1.26 17.95 -6.46 0.24 -2.17 -0.22 -2.09 1.39 -2.39 1.71 -2.43 2.02 -2.48 
+2.36 -2.47 2.7 -2.52 -13.05 -0.26 -2.91 -0.05 4.13 -0.98 9.11 -1.86 9.14 -1.89 3.71 -2.49 
+4.19 -2.5 4.62 -2.45 4.67 -2.41 5.32 -2.32 5.21 -2.3 6.32 -2.13 2.69 -0.04 16.21 0.17 
+5.86 -1.54 5.58 -1.52 5.86 -1.41 6.59 -1.06 1.65 0.3 12.26 2.61 5.3 -0.85 5.41 -0.69 
+5.49 -0.61 5.58 -0.49 5.64 -0.37 5.66 -0.24 5.71 -0.13 5.71 0 6.64 -2.75 6.23 0.41 
+6.41 0.17 2.69 -1.15 5.94 -0.54 6.64 0.78 2.43 1.48 -0.54 2.26 2.26 -0.52 0 -0.87 
+0.15 -0.61 2.99 -1.28 -1.52 1.52 -1.63 0.37 0 0.87 3.91 -0.89 5.68 -4.82 -0.21 -0.48 
+-2.41 -4.34 -8.57 -1.11 -0.57 -1.13 -2.87 -4.84 -0.62 -0.65 1.82 -0.39 10.98 0.89 10.33 1.52 
+10.29 1.7 9.87 2.02 17.14 -0.3 4.29 0.06 10.18 2.98 10.14 3.12 9.37 3.34 8.88 3.5 
+21.31 3.9 2.78 0.59 9.85 4.43 7.36 4.32 7.86 4.52 6.68 4.45 5.95 4.43 5.32 4.39 
+4.52 4.25 4.36 4.32 2.34 3.79 3.86 4.3 2.23 3.86 2.15 3.88 1.84 3.86 0.98 3.56 
+0.08 3.3 0.46 3.47 14.65 10.04 0 0.04 -0.48 3.41 -0.61 -0.2 -15.91 -4.19 12.89 9.57 
+2.11 1.61 -2.65 -0.86 -9.44 -3.19 -9.44 -3.21 -0.35 3.45 -2.04 2.67 -2.39 2.54 -4.12 1.65 
+-4.32 1.56 -1.76 -0.63 -15.69 -5.23 -4.58 1.25 -4.53 -0.04 -5.09 -1.52 1.52 2.99 -0.91 1.24 
+-2.37 2.69 -4.55 1.43 -4.76 1.34 4.88 8.22 0.07 0.11 -4.32 2.11 -4.84 1.82 -5.96 1.02 
+-6.16 0.93 -6.38 0.8 -7.29 -0.02 -1.39 -0.7 -12.96 -6.12 -6.25 0.7 -7.46 -0.55 -5.45 1.63 
+-6.49 0.63 -7.12 -0.11 -6.69 0.43 -1.15 -0.7 -11.54 -7.54 -5.47 1.59 -6.99 -1 -0.33 -0.2 
+-0.04 0.2 P
+-5.38 1.91 -6.9 -0.63 -2.26 -0.61 -5.9 -3.47 -3.8 3.8 -1.17 0.44 -0.78 -0.37 -7.12 -4.99 
+-6.04 0.91 -6.23 0.13 -6.23 1.43 0.09 2.49 6.32 -2.12 6.38 -0.16 6.05 -1.3 5.19 3.64 
+2.67 1.28 3.93 -1.47 1.56 -1.56 2.43 1.43 5.29 1.41 6.92 0.52 5.69 -1.75 7.16 0.89 
+5.64 -1.45 10.09 6.6 2.6 1.59 6.73 -0.43 7.1 0.04 6.53 -0.63 5.64 -1.5 7.36 0.39 
+6.3 -0.7 11.35 5.36 3.14 1.58 7.23 -0.07 6.4 -0.82 6.23 -0.91 5.99 -1.02 5.01 -1.73 
+4.55 -1.98 -0.91 -1.36 -4.25 -7.21 4.79 -1.34 4.6 -1.43 2.67 -2.56 2.12 -2.75 6.84 0 
+4.51 -1.32 13.71 4.6 3.93 1.43 4.28 -1.63 4.03 -1.7 2.5 -2.54 2.17 -2.62 0.61 -3.34 
+16.54 5.64 4.75 1.58 -3.78 -2.93 -11.28 -8.39 13.93 3.69 2.98 0.93 0.61 -3.41 -2.23 -1.54 
+-12.85 -8.86 -0.37 -3.47 -0.13 -3.32 -0.93 -3.61 -1.78 -3.86 -2.11 -3.91 -2.25 -3.91 -3.76 -4.32 
+-2.52 -3.88 -4.32 -4.34 -4.56 -4.32 -5.34 -4.42 -5.97 -4.47 -6.7 -4.52 -7.81 -4.55 -7.49 -4.38 
+-9.75 -4.5 -5.73 -1.19 -9.36 -1.72 -9.33 -1.73 -8.97 -3.56 -9.48 -3.38 -10.2 -3.2 -10.33 -3.02 
+-6.6 -0.13 -15.02 0.26 -10 -2.04 -10.39 -1.76 -10.51 -1.54 -11.07 -0.95 -3.54 0.8 1.22 1.24 
+2.52 4.23 0.89 1.7 8.44 1.08 1.69 4.13 -11.43 2.28 -6.75 -0.8 -7.92 0.67 -6.71 -0.35 
+-6.62 -0.36 -0.3 0.17 -6.83 3.69 -5.84 0 -5.82 0.13 -5.8 0.24 -5.75 0.39 -5.69 0.5 
+-5.6 0.61 -5.51 0.74 -5.4 0.84 -10.77 -2.25 -3.41 -0.63 -6.64 1.13 -5.95 1.45 -5.66 1.56 
+-5.91 1.58 -14.21 -0.15 -4.95 0.08 -6.32 2.2 -5.29 2.34 -5.36 2.38 -4.73 2.46 -4.62 2.5 
+-4.23 2.54 -3.76 2.54 -15.99 3.3 -6.49 1.56 4.58 0.04 11.43 0.2 -2.71 2.56 -2.37 2.52 
+-2.04 2.5 -1.71 2.48 -1.37 2.43 0.04 2.15 -0.28 2.21 -15.73 5.71 -5.14 2.11 -0.75 2.71 
+0.36 2.39 0.67 2.32 1.37 2.11 1.63 2.04 1.65 2.02 2.39 1.78 1.89 1.98 4.68 0.82 
+-0.52 3.09 -9.53 6.86 -3.08 2.39 2.73 2.04 -7.68 6.99 -2.89 2.86 -6.29 7.51 -1.7 2.02 
+3.76 2.32 -4.91 7.4 p f*
+255 35 0 rG
+2290.06 850.76 -1.11 1.84 5.64 1.39 8.05 -0.7 6.55 -9.98 12.22 -8.64 12.85 -8.25 13.32 -7.83 
+15.97 -6.3 0.65 -0.24 14.06 -4.73 3.47 0.96 5.68 -0.29 2.13 0.22 3.16 -0.37 11.55 -4.04 
+3.38 0.73 3.5 0.67 3.58 0.63 3.66 0.61 -3.53 6.3 -0.48 0.89 4.34 0.59 3.86 1.09 
+-1.28 6.43 -0.2 1.21 4.93 0.8 0.61 6.53 0.11 1.02 5.71 0.61 5.8 0.59 6.01 0.25 
+2.88 6.47 0.71 1.43 6.63 0.11 6.59 0.24 6.68 -0.09 6.64 0.26 4.12 -1.52 2.38 -2.89 
+-0.08 -2.5 -4.47 5.38 -1.93 0.72 -6.57 -0.29 -6.64 0.11 -6.54 -0.28 -6.58 -0.09 -0.28 -0.59 
+-3.25 -7.29 -5.95 -0.24 -5.71 -0.62 -5.64 -0.66 0 -0.11 -0.67 -7.34 -4.82 -0.85 0.04 -0.37 
+1.47 -7.21 -3.73 -1.15 -4.25 -0.59 0 -0.02 4 -7.08 -3.61 -0.58 -3.52 -0.63 -3.43 -0.68 
+-3.34 -0.71 -7.4 1.61 -4.86 0.02 -6.88 2.63 -3.26 0.2 -3.41 -0.98 -10.09 2.48 -6.93 2.47 
+-15.43 6.9 -13.39 7.84 -11.7 7.42 -1.39 0.76 -12.37 8.64 -0.28 0.5 -8.44 9.11 -3.84 0.33 
+-5.58 -1.43 0.46 -0.74 6.32 -9.46 -2.54 -1.91 5.17 -2.73 0 -1.73 5.96 -5.04 5.32 -1.93 
+-2.73 2.82 -8.55 4.15 0 1.73 10.16 -5.39 6.2 -6.27 -12.07 4.3 -2.34 0.19 0.8 -0.78 
+9.89 -8.92 -2.43 -2.15 0.41 -0.3 12.26 -8.75 0.24 -1.04 8.07 -5.1 -11.78 2.23 -0.3 -0.04 
+-1.41 -1.54 0.02 -0.59 -0.54 0.06 -2.32 -1.58 -1.63 -2 -1.67 -1.95 -1.41 -2.02 -0.61 -2.3 
+-0.33 -2.34 1 -2.71 0.97 -0.41 9.92 -2.97 9.91 -2.95 0.67 -1.36 -0.33 -0.07 0.18 -2 
+-0.37 -2.02 1.39 -2.37 1.7 -2.39 2.02 -2.43 2.37 -2.46 2.67 -2.47 -14.67 -0.35 -1.24 -0.02 
+1.75 -0.41 20.49 -4.17 3.69 -2.45 4.19 -2.46 4.58 -2.41 4.6 -2.36 5.32 -2.28 5.12 -2.25 
+6.32 -2.06 0.41 -0.02 9.12 0.11 9.09 0.11 5.84 -1.48 5.47 -1.5 5.75 -1.37 5.83 -0.89 
+1.35 0.16 13.02 2.64 5.21 -0.8 5.29 -0.69 5.38 -0.59 5.47 -0.48 5.51 -0.35 5.55 -0.24 
+5.6 -0.13 5.58 0 6.05 -1.32 5.84 0.3 5.9 0.26 6.68 -2.91 2.95 -0.26 6.51 0.76 
+1.24 0.74 -0.89 3.95 10.64 -2.46 8.31 -4.34 -1.3 -3.3 -5.47 -2.82 -8.7 -1.13 -0.28 -0.57 
+-3.19 -5.45 -0.04 -0.02 0.11 -0.02 10.87 0.8 10.2 1.5 10.18 1.67 9.74 1.98 9.61 -0.17 
+9.61 -0.19 2 0.04 10.07 2.91 10.05 3.06 9.29 3.3 8.81 3.43 11.41 2.14 11.41 2.13 
+1.61 0.37 9.25 4.06 7.25 4.25 7.88 4.47 6.66 4.41 5.93 4.36 5.3 4.34 4.46 4.21 
+4.38 4.25 2.2 3.73 4 4.29 2.21 3.82 2.17 3.86 1.91 3.84 1 3.54 0.04 3.23 
+0.55 3.49 7.2 6.49 0.5 3.73 -9.96 -1.15 14.52 10.72 0.41 0.3 -0.52 -0.17 -9.35 -3.73 
+-9.37 -3.73 -8.6 -2.56 6.13 5.58 -0.09 0.85 -1.95 2.69 -2.26 2.58 -4.19 1.59 -2.78 0.98 
+-3.86 -0.74 -15 -4.43 -4.66 1.2 -0.96 0 -12.63 -3.73 0.76 4.12 3.25 3.15 -1.54 1.89 
+-4.51 1.43 -4.71 1.35 0.37 4.95 0.55 5.23 -0.26 0.13 -4.67 1.91 -5.9 1.04 -6.14 0.91 
+-6.34 0.8 -5.79 -0.09 -3 -1.39 -12.76 -5.29 -6.21 0.67 -4.56 -0.34 -5.46 -2.82 -0.07 3.39 
+-2.76 0.85 P
+-6.42 0.65 -5.84 -0.15 -2.04 -0.98 -6.73 0.21 -8.57 -6.53 -5.32 -3.34 -0.84 3.78 -2.46 0.71 
+-2.75 -0.39 -6.32 -3.87 -0.86 4.25 -2.67 0.93 -5.47 -0.57 -2.06 -1.58 -7.96 -3.88 -5.14 3.06 
+-7.23 -3.43 -6.01 0.5 -6.1 0.11 -6.12 0.74 0.08 2.5 6.23 -1.43 6.23 -0.13 6.04 -0.91 
+7.12 4.99 0.78 0.37 1.17 -0.44 3.8 -3.8 5.9 3.47 2.26 0.61 6.9 0.63 5.38 -1.91 
+0.04 -0.2 0.33 0.2 6.99 1 5.47 -1.59 11.54 7.54 1.15 0.7 6.69 -0.43 7.12 0.11 
+6.49 -0.63 5.45 -1.63 7.46 0.55 6.25 -0.7 12.96 6.12 1.39 0.7 7.29 0.02 6.38 -0.8 
+6.16 -0.93 5.96 -1.02 4.84 -1.82 4.32 -2.11 -0.07 -0.11 -4.88 -8.22 4.76 -1.34 4.55 -1.43 
+2.37 -2.69 0.91 -1.24 -1.52 -2.99 5.09 1.52 4.53 0.04 4.58 -1.25 15.69 5.23 1.76 0.63 
+4.32 -1.56 4.13 -1.65 2.39 -2.54 2.04 -2.67 0.35 -3.45 9.44 3.21 9.44 3.19 2.65 0.86 
+-2.11 -1.61 -12.89 -9.57 15.91 4.19 0.61 0.2 0.48 -3.41 0 -0.04 -14.65 -10.04 -0.46 -3.47 
+-0.08 -3.3 -0.98 -3.56 -1.84 -3.86 -2.15 -3.88 -2.23 -3.86 -3.86 -4.3 -2.34 -3.79 -4.36 -4.32 
+-4.52 -4.25 -5.32 -4.39 -5.95 -4.43 -6.68 -4.45 -7.86 -4.52 -7.36 -4.32 -9.85 -4.43 -2.78 -0.59 
+-21.31 -3.9 -8.88 -3.5 -9.37 -3.34 -10.14 -3.12 -10.18 -2.98 -4.29 -0.06 -17.14 0.3 -9.87 -2.02 
+-10.29 -1.7 -10.33 -1.52 -10.98 -0.89 -1.82 0.39 0.63 0.65 2.87 4.84 0.57 1.13 8.57 1.11 
+2.41 4.34 0.21 0.48 -5.68 4.82 -3.91 0.89 -2.26 0.52 0.54 -2.26 -2.43 -1.48 -6.64 -0.78 
+-5.94 0.54 -2.69 1.15 -6.41 -0.17 -6.23 -0.41 -6.64 2.75 -5.71 0 -5.71 0.13 -5.66 0.24 
+-5.64 0.38 -5.58 0.49 -5.49 0.61 -5.41 0.69 -5.3 0.85 -12.26 -2.61 -1.65 -0.3 -6.59 1.06 
+-5.86 1.41 -5.58 1.52 -5.86 1.54 -16.21 -0.17 -2.69 0.04 -6.32 2.13 -5.21 2.3 -5.32 2.32 
+-4.67 2.41 -4.62 2.45 -4.19 2.5 -3.71 2.49 -9.14 1.89 -9.11 1.86 -4.12 0.98 2.91 0.05 
+13.05 0.26 -2.7 2.52 -2.36 2.47 -2.02 2.48 -1.71 2.43 -1.39 2.39 0.22 2.09 -0.24 2.17 
+-17.95 6.46 -3.05 1.26 -0.87 2.71 0.33 2.39 0.65 2.3 1.39 2.06 1.65 2 1.63 2.02 
+2.45 1.71 1.82 1.97 3.8 0.57 2.78 -0.54 -1.89 1.21 -0.74 2.69 -10.87 7.79 -1.75 1.35 
+2.61 2.1 -8.81 7.96 -1.82 1.8 -7.23 8.57 -0.69 0.83 3.49 2.43 -5.6 8.45 p f*
+255 203 0 rG
+2291.78 1588.41 -1.67 5.88 0.93 7.88 4.73 3.17 1 0.5 3.64 -4.47 1.84 -4.84 -9.22 -7.71 
+-0.96 -0.78 -0.52 -0.33 0.22 0.7 f*
+189 0 54 rG
+2290.64 850.89 -0.46 0.74 5.58 1.43 3.84 -0.33 8.44 -9.11 0.28 -0.5 12.38 -8.64 1.39 -0.76 
+11.7 -7.42 13.39 -7.84 15.43 -6.9 6.93 -2.47 10.09 -2.48 3.41 0.98 3.26 -0.2 6.88 -2.62 
+4.86 -0.02 7.4 -1.61 3.34 0.71 3.43 0.68 3.52 0.63 3.61 0.58 -4 7.08 0 0.02 
+4.25 0.59 3.73 1.15 -1.47 7.21 -0.04 0.37 4.82 0.85 0.67 7.34 0 0.11 5.64 0.66 
+5.71 0.63 5.95 0.24 3.25 7.29 0.28 0.59 6.58 0.09 6.54 0.28 6.64 -0.11 6.57 0.29 
+1.93 -0.72 4.47 -5.38 -0.05 -1.24 -5.51 6.62 -0.83 0.3 -6.57 -0.28 -6.58 0.11 -6.53 -0.29 
+-0.02 0 -5.25 -0.06 -1.25 -0.02 -0.07 -0.16 -3.45 -7.68 -5.9 -0.26 -5.68 -0.66 -0.41 -0.04 
+-3.28 -3.61 -2.56 -4.43 -4.14 -0.73 0.17 -1.09 0.76 -6.57 -2.06 -0.63 1.58 -3.55 -3.78 -0.74 
+0.37 -3.88 -3.58 -0.59 -3.5 -0.63 -3.4 -0.67 -3.3 -0.71 -5.3 0.41 -3.97 -0.39 -6.23 2.37 
+-5.23 1.97 -1.63 0.09 -3.39 -0.98 -6.66 0.71 -12.07 4.25 -0.26 0.11 -14.3 7.05 -9.66 5.56 
+-4.8 2 -14.23 7.92 -13.08 8.53 -3.25 5.79 -3.85 4.25 -1.78 0.16 -5.53 -1.46 0.13 -0.19 
+6.68 -9.98 -1.17 -0.87 14.11 -8.45 7.95 -8 -15.43 5.46 -0.79 0.07 0.26 -0.26 10.48 -9.42 
+-1.67 -1.48 3.4 -2.71 8.57 -6.96 0.04 -0.21 11.16 -7.01 -7.79 0.48 -0.71 -2.21 -7.21 0.13 
+-3.47 -1.28 -1.87 0.19 -1.34 -1.58 -1.43 -2.02 -0.61 -2.28 -0.3 -2.34 0.98 -2.52 9.79 -2.13 
+9.77 -2.11 9.87 -3.27 0.83 -2.15 -2.89 -1.39 -6.12 0.55 -0.24 -1.37 1.39 -2.34 1.69 -2.39 
+2.02 -2.41 2.34 -2.43 2.67 -2.45 -15.47 -0.37 -0.41 -0.02 0.58 -0.12 21.62 -4.39 3.67 -2.43 
+4.17 -2.43 4.57 -2.39 4.56 -2.34 5.3 -2.25 5.08 -2.24 2.19 -0.73 9.29 -0.63 13.32 -0.41 
+5.82 -1.46 5.43 -1.5 5.7 -1.34 0.88 -0.16 10.24 1.17 8.95 0.93 5.14 -0.8 5.26 -0.68 
+5.34 -0.59 5.4 -0.48 5.47 -0.34 5.49 -0.24 5.53 -0.11 5.54 0 5.75 -0.61 5.64 0.26 
+5.66 0.3 8.66 -3.77 1.46 -0.14 6.46 0.74 0.61 0.36 -1.04 4.8 7.62 -0.48 6.27 -2.3 
+8.44 -0.65 3.87 -0.52 0 -0.98 -1.09 -1.61 5.96 -0.13 -0.82 1.21 -4.05 0.52 0 0.98 
+6.68 -0.89 2.23 -3.19 -10.96 -0.3 -3.47 -3.41 -7.03 -2.09 -8.77 -1.16 -0.16 -0.29 2.02 -4.91 
+4.97 0.39 10.13 1.5 10.12 1.63 9.68 1.95 10.14 -0.2 10.13 -0.17 0.87 0 9.98 2.88 
+10.03 3.04 9.25 3.25 8.75 3.43 15.45 3.8 14.69 3.25 3.43 1.54 7.21 4.21 7.88 4.45 
+6.66 4.36 5.9 4.36 5.3 4.3 4.45 4.19 4.38 4.25 1.61 2.67 -4.75 -0.5 6.96 3.23 
+2.34 2.56 2.2 3.79 2.19 3.84 1.95 3.84 1 3.54 0.04 3.21 0.59 3.47 3.45 4.79 
+-0.11 3.37 -5.56 0.89 9.36 8.09 -12.24 -5.01 -14.15 -4.14 4.97 5.73 3.91 4.43 -0.64 0.82 
+-2.21 2.61 -3.23 1.21 -4.41 -1.52 -8.96 -1.06 -9.18 -1.22 -3.17 0.8 -6.01 -2.08 -11.13 -2.37 
+-1.39 2.84 6.79 6.47 -0.78 0.93 -4.5 1.43 -4.68 1.35 -2.21 3.11 -2.04 3.47 2.8 4.64 
+-2.47 1 -5.89 1.04 -6.1 0.91 -6.31 0.8 -2.3 -0.05 -2.28 -1.04 -7.55 -3.45 -9.39 -2.23 
+-6.19 0.67 P
+-2.09 -0.15 -10.09 -5.14 -0.11 6.2 -0.52 0.18 -6.41 0.63 -1.56 -0.05 -8.81 -4.21 -6.42 0.38 
+-4.3 -3.26 -8.66 -5.41 -1.37 6.1 -0.59 0.17 -0.62 -0.09 -9.31 -5.66 -1.28 6.25 -1.3 0.46 
+-2.67 -0.29 -6.12 -4.6 -6.29 -1.65 -0.63 -0.17 -5.54 1.63 -6.59 -1.63 -1.52 0.08 -4.46 0.24 
+-6.05 0.09 -6.06 0.39 0.05 1.24 6.12 -0.74 6.1 -0.11 6.01 -0.5 7.23 3.43 5.14 -3.06 
+7.96 3.88 2.06 1.58 5.47 0.57 2.67 -0.93 0.86 -4.25 6.32 3.87 2.75 0.39 2.46 -0.71 
+0.84 -3.78 5.32 3.34 8.57 6.53 6.73 -0.21 2.04 0.98 5.84 0.15 6.42 -0.65 2.76 -0.85 
+0.07 -3.39 5.46 2.82 4.56 0.34 6.21 -0.67 12.76 5.29 3 1.39 5.79 0.09 6.34 -0.8 
+6.14 -0.91 5.9 -1.04 4.67 -1.91 0.26 -0.13 -0.55 -5.23 -0.37 -4.95 4.71 -1.35 4.51 -1.43 
+1.54 -1.89 -3.25 -3.15 -0.76 -4.12 12.63 3.73 0.96 0 4.66 -1.2 15 4.43 3.86 0.74 
+2.78 -0.98 4.19 -1.59 2.26 -2.58 1.95 -2.69 0.09 -0.85 -6.12 -5.58 8.6 2.56 9.38 3.73 
+9.35 3.73 0.52 0.17 -0.41 -0.3 -14.52 -10.72 9.96 1.15 -0.5 -3.73 -7.2 -6.49 -0.55 -3.49 
+-0.04 -3.23 -1 -3.54 -1.91 -3.84 -2.17 -3.86 -2.21 -3.82 -4 -4.29 -2.2 -3.73 -4.38 -4.25 
+-4.46 -4.21 -5.3 -4.34 -5.93 -4.36 -6.66 -4.41 -7.88 -4.47 -7.25 -4.25 -9.25 -4.06 -1.61 -0.37 
+-11.41 -2.12 -11.41 -2.14 -8.81 -3.43 -9.29 -3.3 -10.05 -3.06 -10.07 -2.91 -2 -0.04 -9.61 0.19 
+-9.61 0.17 -9.74 -1.98 -10.18 -1.67 -10.2 -1.5 -10.87 -0.8 -0.11 0.02 0.04 0.02 3.19 5.45 
+0.28 0.57 8.7 1.13 5.47 2.82 1.3 3.3 -8.31 4.34 -10.64 2.46 0.89 -3.95 -1.24 -0.74 
+-6.51 -0.76 -2.95 0.26 -6.68 2.91 -5.9 -0.26 -5.84 -0.3 -6.05 1.32 -5.58 0 -5.6 0.13 
+-5.55 0.24 -5.51 0.35 -5.47 0.48 -5.38 0.59 -5.29 0.69 -5.21 0.8 -13.02 -2.64 -1.35 -0.16 
+-5.83 0.89 -5.75 1.37 -5.47 1.5 -5.84 1.48 -9.09 -0.11 -9.12 -0.11 -0.41 0.02 -6.32 2.06 
+-5.12 2.25 -5.32 2.28 -4.6 2.36 -4.58 2.41 -4.19 2.46 -3.69 2.45 -20.49 4.17 -1.75 0.41 
+1.24 0.02 14.67 0.35 -2.67 2.47 -2.37 2.46 -2.02 2.43 -1.7 2.39 -1.39 2.37 0.37 2.02 
+-0.18 2 0.33 0.07 -0.67 1.36 -9.91 2.95 -9.92 2.97 -0.97 0.41 -1 2.71 0.33 2.34 
+0.61 2.3 1.41 2.02 1.67 1.95 1.63 2 2.32 1.58 0.54 -0.06 -0.02 0.59 1.41 1.54 
+0.3 0.04 11.78 -2.23 -8.07 5.1 -0.24 1.04 -12.26 8.75 -0.41 0.3 2.43 2.15 -9.89 8.92 
+-0.8 0.78 2.34 -0.19 12.07 -4.3 -6.2 6.27 -10.16 5.39 -5.17 2.73 2.54 1.91 -6.32 9.46 p f*
+87 0 136 rG
+2290.93 850.96 -0.13 0.19 5.53 1.46 1.78 -0.16 3.85 -4.25 3.25 -5.79 13.08 -8.53 14.23 -7.92 
+4.8 -2 9.66 -5.56 14.3 -7.05 0 -21.44 10.7 -4.06 12.09 -2.06 -10.72 3.75 -5.06 1 
+-7.01 1.37 0 21.44 0.26 -0.11 12.07 -4.25 6.66 -0.71 3.39 0.98 1.63 -0.09 5.23 -1.97 
+0 -49.68 -3.73 -0.98 -4.14 -2.21 5.43 -1.67 12.8 0.14 7.86 2.34 -1.54 1.48 -10.39 0.61 
+-4.23 0.2 -2.04 0.11 0 49.68 6.23 -2.37 3.97 0.39 5.3 -0.41 3.3 0.71 3.4 0.67 
+3.5 0.63 3.58 0.59 -0.37 3.88 3.78 0.74 -1.58 3.55 2.06 0.63 -0.76 6.57 -0.17 1.09 
+4.14 0.73 2.56 4.43 3.28 3.61 0.41 0.04 5.68 0.66 5.9 0.26 3.45 7.68 0.07 0.16 
+1.25 0.02 0 -3.97 -0.32 -4.14 2.36 -2.11 0.93 2.21 -2.97 4.04 0 3.97 5.25 0.06 
+0 -76.97 -3.75 -0.37 -8.18 -1.64 -6.59 -2.15 -0.54 -1.34 1.21 -1 1.84 -0.87 2.84 -0.52 
+5.21 0.5 4.1 0.29 -0.22 -1.87 0.37 -1.89 3.86 0.17 7.79 4.26 3.99 4.86 -0.5 0.84 
+-0.45 -0.15 -3.19 -1.15 -4.16 -1.21 0.04 1.17 1.19 1.52 -0.91 0.43 -1.73 0.11 -0.36 0 
+-1.85 0.02 0 76.97 0.02 0 6.53 0.29 6.58 -0.11 6.57 0.28 0.83 -0.3 5.51 -6.62 
+-0.04 -1.23 -0.3 -7.75 -0.3 -7.57 -0.33 -7.43 -0.32 -7.29 -0.37 -7.12 -0.37 -6.96 -0.39 -6.81 
+-0.41 -6.67 -0.84 0 -0.41 -0.02 -0.43 -0.02 -0.83 -0.05 -0.82 -0.09 -0.78 -0.09 -0.79 -0.13 
+-0.36 -0.07 -0.35 -0.06 -0.69 -0.18 -0.66 -0.17 -0.3 -0.09 -0.57 -0.22 -0.52 -0.21 -0.21 -0.13 
+-0.22 -0.11 -0.21 -0.13 -0.17 -0.11 -0.17 -0.13 -0.16 -0.13 -0.13 -0.16 -0.21 -0.26 -0.09 -0.13 
+-0.07 -0.15 -0.02 -0.13 -0.05 -0.15 0 -0.13 0.02 -0.15 0.02 -0.12 0.06 -0.16 0.07 -0.13 
+0.09 -0.16 0.21 -0.25 0.15 -0.16 0.35 -0.26 0.2 -0.13 0.22 -0.13 0.21 -0.11 0.24 -0.12 
+0.26 -0.11 0.28 -0.11 0.31 -0.11 0.28 -0.11 0.32 -0.11 0.32 -0.09 0.35 -0.08 0.37 -0.09 
+0.34 -0.09 0.39 -0.06 0.37 -0.07 0.39 -0.07 0.41 -0.07 1.23 -0.13 0.28 -0.02 0 -6.77 
+-0.08 0 -1.37 -0.11 -4.25 -5.47 -0.2 -5.54 3.14 -0.28 3.56 3.88 2.75 -2.21 1.17 3.95 
+-1.63 3.61 -0.17 0.37 -1.85 -2.28 -1.09 4.08 0 6.77 0.16 0 0.43 -0.04 0.41 -0.02 
+2.19 0 0.44 0.02 0.41 0.04 0.43 0.02 1.24 0.13 0.41 0.07 0.78 0.13 0.04 0 
+0 -6.99 1 -5.82 0.05 -0.43 -2.3 -0.24 -1.63 -5.45 4.41 -5.18 4.29 0.02 3.82 0.89 
+1.88 2.86 -0.5 2.13 -3.61 5.86 -5.9 5.25 -1.33 0.11 -0.2 0 0 6.99 0.33 0.06 
+0.37 0.09 0.7 0.17 0.33 0.09 0.32 0.11 0.3 0.11 0.57 0.21 0.26 0.11 0.23 0.13 
+0.24 0.11 0.59 0.39 0.11 0.11 0 -8.59 3.5 -5.4 5.45 -5.69 9.2 -4.62 -3.38 5.34 
+-7.21 5.43 -6.95 4.56 -0.61 0.39 0 8.59 0.04 0.02 0.16 0.16 0.22 0.25 0.08 0.16 
+0.07 0.13 0.07 0.16 0.02 0.13 0.02 0.15 0 0.13 -0.04 0.15 -0.02 0.13 -0.07 0.15 
+-0.17 0.26 -0.13 0.13 -0.13 0.16 -0.15 0.13 -0.18 0.13 -0.17 0.11 -0.21 0.13 -0.22 0.11 
+-0.21 0.13 P
+-0.52 0.21 -0.56 0.22 -0.31 0.09 -0.98 0.26 -0.37 0.09 -0.35 0.06 -0.37 0.07 -0.79 0.13 
+-0.78 0.09 -0.83 0.09 -0.82 0.05 -0.43 0.02 -0.42 0.02 -0.43 0 0.41 6.67 0.39 6.81 
+0.37 6.96 0.38 7.12 0.32 7.29 0.33 7.43 0.3 7.57 0.3 7.75 0.04 1.23 6.06 -0.39 
+6.05 -0.09 4.46 -0.24 0 -76.15 4.8 -5.25 0.32 -0.13 0 -0.3 3.36 -5.27 11.72 -4.23 
+-4.27 5.38 -10.22 3.88 -0.59 0.24 0 0.3 10.37 -3.99 -0.48 2.8 -3.08 2.54 -5.75 2.11 
+-5.54 1.71 -0.66 0.22 0 76.15 1.52 -0.08 6.59 1.63 5.54 -1.63 0.63 0.17 0 -80.34 
+6.16 -4.86 13.52 -3.06 -1.26 2.91 -3.54 2.14 -6.59 1.41 -7.45 1.3 -0.84 0.15 0 80.34 
+6.29 1.65 6.12 4.6 2.67 0.29 1.3 -0.46 1.28 -6.25 9.31 5.66 0.63 0.09 0.59 -0.17 
+1.37 -6.1 8.66 5.41 4.3 3.26 6.42 -0.37 8.81 4.21 1.56 0.05 6.41 -0.63 0.52 -0.18 
+0.11 -6.2 10.09 5.14 2.09 0.15 6.19 -0.67 9.39 2.23 7.55 3.45 0 -26.52 -6.03 -2.28 
+-3.3 -3.06 6.08 2.23 3.25 3.11 0 26.52 2.28 1.04 2.3 0.05 6.31 -0.8 6.1 -0.91 
+5.89 -1.04 2.47 -1 -2.8 -4.64 1.02 -1.73 0 -6.95 -2.62 -1.04 -11.48 -4.54 -7.42 -7.34 
+13.63 4.95 0 -0.82 -1.72 -0.61 -14.23 -5.21 -9.57 -7.64 15.97 5.27 9.55 8.18 0 0.82 
+0.76 0.29 6.72 7.25 0 -7.79 -2.62 -0.89 -1.39 -1.34 2.56 0.91 1.45 1.32 0 7.79 
+0.41 0.44 0 6.95 1.02 -1.74 2.21 -3.11 4.68 -1.35 4.5 -1.43 0.78 -0.93 -6.79 -6.47 
+1.39 -2.84 11.13 2.37 6.01 2.08 3.17 -0.8 9.18 1.22 8.96 1.06 4.41 1.52 3.23 -1.21 
+2.21 -2.61 0.64 -0.82 -3.91 -4.43 -4.97 -5.73 14.15 4.14 12.24 5.01 -9.36 -8.09 5.56 -0.89 
+0.11 -3.37 -3.45 -4.79 -0.59 -3.47 -0.04 -3.21 -1 -3.54 -1.95 -3.84 -2.19 -3.84 -2.2 -3.79 
+-2.34 -2.56 -6.96 -3.23 4.75 0.5 -1.61 -2.67 -4.38 -4.25 -4.45 -4.19 -5.3 -4.3 -5.9 -4.36 
+-6.66 -4.36 -7.87 -4.45 -7.21 -4.21 -3.43 -1.54 -14.69 -3.25 -15.45 -3.8 -8.75 -3.43 -9.25 -3.25 
+-10.03 -3.04 -9.98 -2.88 -0.87 0 -10.13 0.17 -10.14 0.2 -9.68 -1.95 -10.12 -1.63 -10.13 -1.5 
+-4.97 -0.39 -2.02 4.91 0.16 0.29 8.77 1.16 7.03 2.09 3.47 3.41 10.96 0.3 -2.23 3.19 
+-6.68 0.89 -3.87 0.52 -8.44 0.65 -6.27 2.3 -7.62 0.48 1.04 -4.8 -0.61 -0.36 -6.46 -0.74 
+-1.46 0.14 -8.66 3.77 -5.66 -0.3 -5.64 -0.26 -5.75 0.61 -5.54 0 -5.53 0.11 -5.49 0.24 
+-5.47 0.34 -5.4 0.48 -5.34 0.59 -5.26 0.68 -5.14 0.8 -8.95 -0.93 -10.24 -1.17 -0.87 0.16 
+-5.7 1.34 -5.43 1.5 -5.82 1.46 -13.32 0.41 -9.29 0.63 -2.19 0.73 -5.08 2.24 -5.3 2.25 
+-4.56 2.34 -4.57 2.39 -4.17 2.43 -3.67 2.43 -21.62 4.39 -0.58 0.13 0.41 0.02 15.47 0.37 
+-2.67 2.45 -2.34 2.43 -2.02 2.41 -1.69 2.39 -1.39 2.34 0.24 1.38 6.12 -0.55 2.89 1.39 
+-0.83 2.15 -9.87 3.27 -9.77 2.11 -9.79 2.13 -0.98 2.52 0.3 2.34 0.61 2.28 1.43 2.02 
+1.34 1.58 1.87 -0.19 3.47 1.28 7.21 -0.13 0.71 2.21 7.79 -0.48 -11.16 7.01 -0.04 0.21 
+-8.57 6.96 p
+-3.4 2.71 1.67 1.48 -10.48 9.42 -0.26 0.26 0.79 -0.07 15.43 -5.46 -7.95 8 -14.11 8.45 
+1.17 0.87 -6.68 9.98 p f*
+7 193 59 rG
+2292.08 1724.89 0 -0.89 2.61 0.83 -1.52 0.56 -1.09 -0.5 f*
+255 203 0 rG
+2296.44 1647.61 -2.23 4.69 3.84 6.55 3.46 6.14 4.17 6.05 0.25 5.05 2.84 4.28 13.15 -0.21 
+0.76 0.17 0 -24.2 -2.26 -0.11 -1.39 -0.98 1.69 -1.49 0.68 0.87 0 -4.76 -3.41 -4.62 
+4.38 0.41 1.22 1.61 -2.19 2.6 0 4.76 1.28 1.71 0 24.2 13.28 2.84 4.38 1.97 
+4.77 4.32 3.99 3.78 0 -10.85 -0.89 -0.57 0.75 0 1.57 0.22 -1.43 0.34 0 10.85 
+0.32 0.3 -1.52 4.05 3.66 0.33 0 -7.96 -0.3 -0.3 -0.02 -0.5 0.43 0.52 -0.11 0.28 
+0 7.96 3.88 0.37 12.02 2 1.55 3.52 5.23 1.93 2.58 -3.04 -5.16 -2.84 -2.67 -3.28 
+11.89 -2.26 3.43 -2.14 -3.28 -2.78 -3.28 -1.8 -3.6 2.04 1.39 3.14 -7.29 3.8 -1.06 -0.28 
+-10.36 -2.8 2.48 -3.71 -5.66 -3.82 9.27 -2.22 4.79 -0.62 -5.14 -0.65 -14.15 -3.04 -0.35 0 
+-13.15 -0.54 -10.7 -4.3 -1.06 -4.69 3.32 -3.75 -3.56 -5.36 10.83 -0.41 0.67 0.2 0 -5.77 
+-4.77 -5.62 -5.1 -6.55 12.43 1.91 8.46 5.66 -2.43 3.32 -7.77 1.15 -0.83 0.13 0 5.77 
+12.81 3.61 13.58 2.43 0.37 0 0 -0.93 -0.33 0 -13.54 -2.88 -3.12 -0.91 3.13 0.7 
+13.56 2.99 0.3 0.11 0 0.93 5.4 0.13 -5.66 -2 -13.57 -2.71 -12.82 -6.87 12.7 0.3 
+0 -8.74 -9.84 -3.32 -12.7 -5.27 -0.5 -0.52 0.64 0.2 12.82 4.88 9.57 4.04 0 8.74 
+1.08 0.02 13.26 4.08 9.48 1.67 -9.14 -3.47 -8.11 -4.84 9.26 0.41 12.98 4.62 5.34 2.78 
+7.54 2.71 6.81 3.1 -5.8 1.5 8.09 3.64 3.89 1.63 12.37 1.96 1.41 0.08 0 -0.8 
+-0.04 -0.02 -10.05 -1.98 -3.71 -0.69 -8.9 -3.32 4.88 -1.58 -8.68 -3.95 -0.18 -0.07 -2.97 -1.06 
+-9.7 -5 -9.09 -3.36 3.82 -0.52 0 -1.65 -3.49 -0.02 -3.89 0 -7.57 -5.36 8.9 1.91 
+6.05 3.47 0 1.65 3.5 -0.48 -9.01 -5.12 -0.28 -0.15 -8.66 -4.99 -0.43 -0.26 -1.63 -3.71 
+-1.28 -1.76 -3.15 -5.99 -2.73 -5.95 -0.52 -0.61 1.65 -4.1 -6.94 -6.87 -0.93 -0.91 -1.43 -3.78 
+6.21 -1.32 -1.15 4.75 6.07 9 0.74 0.67 -2.73 3.41 9.98 7.2 0.48 2.84 -1.11 3.67 
+9.25 5.16 1.93 3.34 8.71 6.14 13.84 2.02 0.72 0.09 9.55 0.52 4.23 0.11 5.97 1.04 
+-4.63 -3.47 -1.91 -1.37 -8.95 -5.95 -1.25 -1.3 0.74 -2.78 1.04 -2.69 2.04 -2.22 -0.39 -3.77 
+-3.32 -4.61 -2.69 -3.47 -4.28 -6.47 -4.97 -5.44 1.2 -4.41 -0.8 -1.54 -7.14 -9.48 -9.85 -7.84 
+-8.29 -8.87 -6.46 -10.07 -1.28 -4.14 3.67 -5.32 0.72 -5.62 1.21 -2.49 1.89 1 9.33 8.44 
+6.29 3.93 5.73 3.25 5.95 3.04 7.01 0.3 6.05 1.11 2.24 1.58 8.13 3.13 5.23 -1.5 
+5.9 -0.08 5.25 -1.39 1.25 1.15 3.76 10 0.13 0.39 -1.21 8.12 -5.3 -6.82 -6.68 -5.57 
+0.61 7.46 7.21 8.96 1.45 1.24 0 -1.15 -0.48 -0.41 -0.8 -0.96 -6.84 -7.88 -0.49 -6.08 
+5.46 4.56 5.77 9.42 -2.63 1.34 0 1.15 1.33 1.11 4.21 -1.04 3.45 -0.39 0 -2.19 
+-4.54 -0.52 1.96 -4.95 4.27 3.37 -1.69 2.11 0 2.19 0.97 -0.12 3.34 -2.97 4.34 7.86 
+6.45 9.11 2.8 9.81 2.61 2.61 4.45 3.95 2.95 0.7 0.57 0.95 0.06 1.04 -2.04 1.52 
+-2.04 1.17 P
+0.2 5.52 0.07 1.63 -0.68 1.28 -1.36 -0.74 -3.97 -4.34 2.47 4.82 0.5 3.06 -1.63 0.58 
+-1.58 0.63 -1.56 0.7 -1.72 0.52 -2.82 -1.86 -6.01 -4.11 3.67 5.41 0.59 0.76 -1 1.26 
+-1.46 -0.84 -8.05 -4.14 -1.65 1.19 -1.56 1.26 -1.48 1.28 -1.41 1.32 -2.89 0.58 8.68 5.88 
+0.76 0.46 -0.37 1.43 -2.17 0.52 -1.32 -0.31 1.13 0.61 0.91 1.65 -2.21 0.83 0.54 1.63 
+-0.56 1.3 0.49 1.52 -2.23 -0.24 -9.91 -0.61 -0.43 1.65 -0.89 1.58 -3.34 1.34 -0.07 0.02 
+0.04 0.02 1.98 1.95 -1.96 0.87 0 0.8 0.04 0.02 0.15 -0.02 3.45 -1.52 -1.71 -1.91 
+2.91 -1.37 0.8 -1.58 0.39 -1.61 8.5 0.52 3.89 0.37 -0.39 -1.43 0.54 -1.26 -0.41 -1.52 
+1.97 -0.85 -0.82 -1.74 2.23 -0.65 0.41 -1.34 -2.21 -1.3 -7.45 -5.04 2.63 -0.67 1.39 -1.3 
+1.45 -1.26 1.52 -1.21 1.61 -1.17 6.88 3.54 2.82 1.63 0.98 -1.17 -1.43 -1.93 -2.82 -4.12 
+4.62 3.14 3.91 2.56 1.63 -0.54 1.52 -0.65 1.54 -0.62 1.58 -0.59 -0.67 -4.05 -0.12 -0.24 
+0.19 0.22 3.02 1.58 1.06 -1.84 -0.24 -0.8 -0.7 -5.99 2.04 -1.04 2.02 -1.37 -0.11 -2.3 
+-1.26 -2.15 -2.98 -0.52 -4.97 -5.1 -0.62 -0.62 -0.64 -2.47 -2.4 -7.25 -0.98 -1.2 -5.86 -7.86 
+-5.08 -9.5 -0.76 -0.76 -7.77 -8.03 -3.78 -9.98 -2.45 -2.23 -5.3 1.39 -5.86 0.3 -5.27 1.54 
+-8.48 -4.21 -0.61 -0.41 -7.38 -1.2 -7.62 -1.09 -3.52 -1.8 -8.44 -4.82 -3.71 -2.32 -9.66 -8.31 
+-3.47 -1.82 -2.23 4.6 -0.34 2.8 -3.63 5.5 1.93 6.33 6.14 10.29 8.18 8.98 10.48 7.4 
+5.95 8.33 -3.56 2.61 1.09 1.17 8.07 9.03 2.71 4.12 4.43 5.73 2.02 2.82 1.2 4.36 
+-2.06 2.23 -1.21 2.67 -0.91 2.73 2.39 2.49 6.4 4.28 4.4 3.19 2.63 1.97 -3.37 -0.61 
+-5.75 -0.13 -8.79 -0.61 -1.69 -0.21 -12.2 -1.73 -7.45 -5.23 -2.64 -4.7 -0.17 -0.13 -7.17 -7.16 
+-0.65 -4.64 -0.24 -0.43 -5.58 -7.47 -3.08 -2.75 -5.21 -7.7 1.45 -4.75 -0.43 -1.93 -4.97 -1.99 
+-4.14 3.16 -8.7 -1.15 -6.46 -9.83 -0.98 -1.24 -1.02 -0.29 -1.19 2.59 1.86 4.71 0.18 6.51 
+1.34 5.45 13.52 4 0.29 0.34 0 -0.73 -2.41 -6.79 5.86 2.52 3.43 3.41 -6.88 0.87 
+0 0.73 8.07 9.36 0.26 1.21 1.39 4.36 6.63 7.38 -4.97 2.19 -9.55 -1.17 -12.67 -5.23 
+-13.2 -3.97 -0.32 -0.13 0.24 0.39 7.96 8.34 -10.46 -1.15 -1.45 1.55 -1.98 4.51 -9.79 1.8 p f*
+7 193 59 rG
+2311.18 1714 -13.52 -1.3 10.5 -3.32 9.22 3.21 -6.2 1.41 f*
+255 135 0 rG
+2308.14 830.9 -8.55 4.15 5.96 -5.04 5.32 -1.93 -2.73 2.82 f*
+7 193 59 rG
+2307.83 1611.52 -4.12 -7.96 9.25 0.8 5.19 8.31 -1.96 -0.21 0 -0.98 -3.88 -6.25 -6.92 -0.61 
+3.06 5.97 5.79 0.65 1.95 0.24 0 0.98 -8.36 -0.93 f*
+2 239 204 rG
+2308.45 1610.59 -3.06 -5.97 6.92 0.61 3.88 6.25 -1.95 -0.24 0 -0.97 -2.58 -4.16 -4.62 -0.39 
+2.04 3.95 3.23 0.39 1.93 0.21 0 0.97 -5.79 -0.65 f*
+0 155 255 rG
+2309.07 1609.66 -2.04 -3.95 4.62 0.39 2.58 4.16 -1.93 -0.21 0 -1 -1.3 -2.09 -2.3 -0.19 
+1.02 1.97 2.58 0.3 0 1 -3.23 -0.39 f*
+255 0 r6
+2309.72 1608.75 -1.02 -1.97 2.3 0.19 1.3 2.09 -2.58 -0.3 f*
+255 203 0 rG
+2312.26 1691.47 -0.07 0.43 0.28 0.13 0.98 -0.02 -1.2 -0.54 f*
+2314.87 1719.08 -1.84 4.88 8.03 2.58 0.78 -3.29 -6.96 -4.17 f*
+255 135 0 rG
+2322.37 1645.46 -4.38 -0.41 3.41 4.62 2.19 -2.6 -1.22 -1.61 f*
+2320.72 1653.56 -1.69 1.49 1.39 0.98 2.26 0.11 -1.28 -1.71 -0.68 -0.87 f*
+7 193 59 rG
+2329.12 1722.46 -6.42 -4.79 1.93 -3.67 7.59 2.86 6.57 4.36 -6.45 2.41 -3.23 -1.17 f*
+255 135 0 rG
+2324.85 1637.8 -0.64 -0.2 0.5 0.52 12.7 5.27 9.84 3.32 -9.57 -4.04 -12.82 -4.88 f*
+0 255 r6
+2329.67 1649.2 -5.1 -6.55 12.43 1.91 8.46 5.66 -2.43 3.32 -7.77 1.15 0 -3.97 0.87 -0.3 
+4.93 -1.69 -4.43 -3 -6.53 -0.95 5.16 5.94 0 3.97 -0.83 0.13 -4.77 -5.62 f*
+255 135 0 rG
+2325.46 1744.57 -0.61 2.78 7 5.25 6.12 2.52 0 -0.78 -2.67 -1.11 -2.23 -0.93 -5.73 -5.47 
+0.11 -0.57 1.09 0.3 8.2 4.71 1.24 3.06 0 0.78 2.73 1.13 -2.28 -5.45 -7.64 -4.75 
+-5.34 -1.48 f*
+255 35 0 rG
+2327.45 1746.27 -0.11 0.57 5.73 5.47 2.23 0.93 0 -0.82 -1.04 -0.44 -1.45 -1.45 2.24 1.23 
+0.25 0.66 0 0.82 2.67 1.11 -1.24 -3.06 -8.2 -4.71 -1.09 -0.3 f*
+7 193 59 rG
+2330.41 1604.1 -2.59 -3.89 6.36 -0.02 -0.3 4.38 -1.79 -0.24 0 -1.02 0.07 -1.11 -1.56 0.02 
+0.65 0.95 0.84 0.13 0 1.02 -1.69 -0.24 f*
+110 210 9 rG
+2330.95 1625.33 -3.08 -6.91 6.59 1.52 3.62 4.23 -7.14 1.15 f*
+2333.55 1666.17 -4.17 -3.73 4.26 -0.2 13.54 3.32 13.63 1.99 11.13 0.2 0.05 0 2.61 -0.93 
+0.98 0.18 12.67 2.12 0.13 0.09 2.8 1.61 0.19 2.54 -3.12 -0.07 -13.71 -0.87 -5.86 -0.82 
+0 -1.24 -7.86 -1.84 -8.44 -1.02 8.44 2.09 7.86 0.78 0 1.24 -7.83 -1.11 -4.05 1.37 
+1.65 3.75 -10.33 2.13 -0.11 -0.02 0 -0.7 8.27 -1.69 -1.39 -3.76 -7.7 -4.82 -10.11 1.63 
+-2.23 3.73 13.04 4.86 0.13 0.04 0 0.7 -13.65 -2.23 -4.88 -4.34 4.21 -2.02 0.84 -1.26 
+-0.95 -1.69 f*
+2335.27 1650.71 -5.16 -5.94 6.53 0.95 4.43 3 -4.93 1.69 0 -3.06 0.56 -0.2 -0.41 -0.26 
+-0.61 -0.08 0.45 0.54 0 3.06 -0.87 0.3 f*
+7 193 59 rG
+2330.38 1739.7 -0.07 -3.67 6.99 2.19 5.45 4.84 11.22 2.91 -4.47 5.43 -2.93 -1 0 -1.06 
+1.11 -1.3 -6.23 -2.54 3.67 3.34 1.45 0.5 0 1.06 -3.12 -1.06 -5.88 -4.93 -7.18 -4.7 f*
+2 239 204 rG
+2331.25 1603.19 -0.65 -0.95 1.56 -0.02 -0.07 1.11 -0.84 -0.13 f*
+189 0 54 rG
+2335.05 1751.75 -2.24 -1.23 1.45 1.45 1.04 0.44 -0.25 -0.66 f*
+110 210 9 rG
+2341.08 1696.68 -8.25 -3.45 2.93 -4.21 1.76 -0.78 1.45 0.96 4.84 4.32 -2.73 3.17 f*
+0 255 r6
+2336.29 1617.45 -2.41 -6.79 5.86 2.52 3.43 3.41 -6.88 0.87 f*
+7 193 59 rG
+2347.85 1676.97 -13.04 -4.86 2.23 -3.73 10.11 -1.63 7.7 4.82 1.39 3.76 -8.27 1.69 -0.13 -0.04 
+0 -0.67 6.23 -1.26 -1.13 -3.78 -5.79 -3.62 -7.55 1.23 -1.61 3.78 9.75 3.61 0.11 0.04 
+0 0.67 f*
+2336.13 1647.35 -0.45 -0.54 0.61 0.08 0.41 0.26 -0.56 0.2 f*
+110 210 9 rG
+2347.44 1661.52 -10.7 -5.71 11.48 0.24 13.23 4.36 10.48 4.21 -5.08 -0.33 0 -0.78 -5.53 -2.24 
+-13.22 -4.67 -9.18 -0.17 8.55 4.54 13.61 2.14 0.7 0.04 5.07 0.35 0 0.78 -5.84 -0.34 
+-13.59 -2.43 f*
+2 239 204 rG
+2347.75 1676.26 -9.75 -3.61 1.61 -3.78 7.55 -1.23 5.79 3.62 1.13 3.78 -6.23 1.26 -0.11 -0.04 
+0 -0.68 4.16 -0.82 -0.87 -3.82 -3.86 -2.41 -5.04 0.82 -0.96 3.82 6.47 2.39 0.09 0.02 
+0 0.68 f*
+7 193 59 rG
+2347.48 1660.98 -8.55 -4.54 9.18 0.17 13.22 4.67 5.53 2.24 -5.07 -0.35 0 -0.8 -0.59 -0.24 
+-13.17 -4.95 -6.88 -0.11 6.41 3.39 9.5 1.3 4.13 0.57 0.61 0.04 0 0.8 -0.7 -0.04 
+-13.61 -2.14 f*
+255 135 0 rG
+2345.45 1607.01 -6.21 1.32 1.43 3.78 0.93 0.91 0 -1.98 -0.56 -1.47 2.45 -0.54 -0.45 1.89 
+-1.43 0.13 0 1.98 6.94 6.88 -1.65 4.1 0.52 0.61 2.73 5.95 3.15 5.99 1.28 1.76 
+1.63 3.71 0.43 0.26 0 -7.55 -0.72 -1.26 1.35 0.24 0.08 0.48 -0.71 0.54 0 7.55 
+8.66 4.99 0.28 0.15 0 -0.78 -4.9 -2.8 5.79 0.89 1.04 1.82 -1.65 0.09 -0.28 0 
+0 0.78 9.01 5.12 -3.5 0.48 -3.82 0.52 9.09 3.36 9.7 5 2.97 1.06 0.18 0.07 
+0 -0.89 -10.7 -5.19 11.63 1.82 7.62 3.34 -2.87 0 -5.68 0.02 0 0.89 8.68 3.95 
+-4.88 1.58 8.9 3.32 3.71 0.69 10.05 1.98 0 -0.84 -1.56 -0.3 -12.15 -2.17 -0.02 -0.02 
+-5.86 -2.14 4 -1.7 -7.95 -4.05 8.53 -0.48 -10.35 -4.52 -11.57 -4.41 12.35 2.21 5.18 0.5 
+6.77 -0.32 2.71 0.05 8.57 1.47 -5.14 -4.17 5.04 0.98 0 -1.28 -6.05 -1.21 -4.73 -3.45 
+5.57 -0.14 1.39 0.48 2.13 1.17 1.69 3.15 0 1.28 5.86 1.11 1.63 -1.39 -10.85 -5.9 
+-7.12 -2.41 -6.25 -0.04 -0.7 -0.26 -0.13 -0.13 0.57 -2.82 0.89 -2.71 2 -2.17 0.41 -3.21 
+-4.6 -6.36 -0.96 -1.24 -5.84 -8.79 -0.43 -0.48 -1.54 -6.45 -2.37 -4.55 -7.58 -9.18 -9.2 -8.22 
+-8.42 -8.79 -6.79 -9.83 -0.61 -1.97 3.69 -5.17 1.08 -8.4 0.22 -0.41 0.3 0.17 8.98 8.59 
+8.89 5.51 2.99 1.7 8.38 4.28 6.43 -0.48 3.88 0.7 5.6 3.99 6.86 1.15 5.19 -1.47 
+5.99 0.11 5.18 -1.39 0.09 0.09 0.24 0.7 2.43 9.59 -0.73 5.42 -3.35 -4.32 -7.92 -6.62 
+0.72 8.83 6.75 9.09 5.12 4.3 4.6 -0.02 3.69 -1.71 4 -1.15 2.25 4.05 2.67 7.2 
+-5.18 -2.45 0.56 6.42 4.3 4.1 0 -0.96 -0.98 -0.93 -2.54 -2.43 -0.39 -4.28 4.54 3.19 
+-0.63 4.45 0 0.96 0.96 0.91 2.52 -2.04 2.78 4.91 4.62 4.58 3.91 2.78 2.5 0.71 
+-1.73 1.41 -2.06 1.28 -0.95 3.3 0.02 4.38 -7.01 -7.7 -0.13 -0.18 0.04 0.2 4.71 9.22 
+0.35 2.04 -1.7 0.63 -1.63 0.65 -1.61 0.72 -1.8 0.5 -1.76 -1.15 -7.36 -5.05 3.28 5.47 
+0.17 1.82 -0.22 0.3 -0.13 -0.09 -9.18 -4.73 -1.69 1.22 -1.61 1.28 -1.52 1.32 -1.43 1.35 
+-3.1 0.49 -0.04 0 -1 0.31 -3.58 -0.37 1.63 2.73 4.9 2.28 -4.49 0.09 9.91 5.38 
+-4.84 0.04 2.04 2.2 -0.76 1.34 1.5 1.02 0.32 0.87 -0.58 -0.07 -11.33 -0.74 -0.46 1.7 
+-0.98 1.63 -1.82 0.72 -4.77 0.28 4.68 2.11 0.33 0.3 -0.33 0.13 0 0.84 0.04 0.02 
+1.96 -0.87 -1.98 -1.95 -0.04 -0.02 0.07 -0.02 3.34 -1.34 0.89 -1.58 0.43 -1.65 9.91 0.61 
+2.23 0.24 -0.49 -1.52 0.56 -1.3 -0.54 -1.62 2.21 -0.83 -0.91 -1.65 -1.13 -0.61 1.32 0.31 
+2.17 -0.52 0.37 -1.43 -0.76 -0.46 -8.68 -5.88 2.89 -0.58 1.41 -1.32 1.48 -1.28 1.56 -1.26 
+1.65 -1.19 8.05 4.14 1.46 0.84 1 -1.26 -0.59 -0.76 -3.67 -5.41 6.01 4.11 2.82 1.86 
+1.72 -0.52 1.56 -0.7 1.58 -0.63 1.63 -0.58 -0.5 -3.06 -2.47 -4.82 3.97 4.34 1.36 0.74 
+0.68 -1.28 -0.07 -1.63 -0.2 -5.52 2.04 -1.17 2.04 -1.52 -0.06 -1.04 -0.57 -0.95 -2.95 -0.7 
+-4.45 -3.95 P
+-2.61 -2.61 -2.8 -9.81 -6.45 -9.11 -4.34 -7.86 -3.34 2.97 -0.97 0.13 -3.45 0.39 -4.21 1.04 
+-1.33 -1.11 -1.45 -1.24 -7.21 -8.96 -0.61 -7.46 6.68 5.57 5.3 6.82 1.21 -8.12 -0.12 -0.39 
+-3.76 -10 -1.25 -1.15 -5.25 1.39 -5.9 0.08 -5.23 1.5 -8.13 -3.13 -2.24 -1.58 -6.05 -1.11 
+-7.01 -0.3 -5.95 -3.04 -5.73 -3.25 -6.29 -3.93 -9.33 -8.44 -1.89 -1 -1.21 2.49 -0.72 5.63 
+-3.67 5.32 1.28 4.14 6.46 10.07 8.29 8.87 9.85 7.84 7.14 9.48 0.8 1.54 -1.2 4.41 
+4.97 5.44 4.28 6.47 2.69 3.47 3.32 4.61 0.39 3.77 -2.04 2.22 -1.04 2.69 -0.74 2.78 
+1.25 1.3 8.95 5.95 1.91 1.37 4.63 3.47 -5.97 -1.04 -4.23 -0.11 -9.55 -0.52 -0.72 -0.09 
+-13.84 -2.02 -8.71 -6.14 -1.93 -3.34 -9.25 -5.16 1.11 -3.67 -0.48 -2.84 -9.98 -7.2 2.73 -3.41 
+-0.74 -0.67 -6.07 -9 1.15 -4.75 p f*
+255 35 0 rG
+2343.49 1609.03 -2.45 0.54 0.56 1.47 1.43 -0.12 0.45 -1.89 f*
+2 239 204 rG
+2347.55 1660.46 -6.41 -3.39 6.88 0.11 13.17 4.95 0.59 0.24 -0.61 -0.04 -4.12 -0.57 0 -0.52 
+-9.14 -3.49 -4.58 -0.07 4.27 2.25 4.8 0.65 4.64 0.65 0 0.52 -9.5 -1.3 f*
+0 155 255 rG
+2347.66 1675.57 -6.47 -2.39 0.96 -3.82 5.04 -0.82 3.86 2.41 0.87 3.82 -4.16 0.82 -0.09 -0.02 
+0 -0.7 2.08 -0.41 -0.61 -3.84 -1.93 -1.22 -2.52 0.43 -0.3 3.85 3.28 1.19 0 0.7 f*
+255 203 0 rG
+2345.86 1705.17 -4.52 1.34 6.32 1.32 1.58 -1.91 -3.38 -0.75 f*
+2 239 204 rG
+2345.12 1748.83 -3.67 -3.34 6.23 2.54 -1.11 1.3 -1.45 -0.5 f*
+0 155 255 rG
+2347.61 1659.94 -4.27 -2.25 4.58 0.07 9.14 3.49 -4.64 -0.65 0 -0.5 -4.58 -1.78 -2.28 -0.02 
+2.13 1.11 4.73 0.7 0 0.5 -4.8 -0.65 f*
+255 135 0 rG
+2347.33 1662.59 -3.12 -0.7 3.13 0.91 13.54 2.88 0.33 0 -0.3 -0.11 -13.56 -2.99 f*
+255 0 r6
+2347.66 1674.87 -3.28 -1.19 0.3 -3.85 2.52 -0.43 1.93 1.22 0.61 3.84 -2.08 0.41 f*
+2347.68 1659.39 -2.13 -1.11 2.28 0.02 4.58 1.78 -4.73 -0.7 f*
+255 135 0 rG
+2348.98 1681.83 -0.75 0 0.89 0.57 1.43 -0.34 -1.57 -0.22 f*
+255 203 0 rG
+2351.13 1740.67 -0.65 -0.11 0.07 0.28 0.41 0.09 0.17 -0.26 f*
+7 193 59 rG
+2352.56 1729.5 -1.8 -0.02 0.5 -1.2 2.28 0.52 -0.98 0.7 f*
+255 135 0 rG
+2351.7 1689.7 -0.43 -0.52 0.02 0.5 0.3 0.3 0.11 -0.28 f*
+7 193 59 rG
+2362.33 1681.46 -10.61 -3.04 9.76 -1.22 13.65 0.63 11.83 3.02 -10.7 2.13 -0.18 -0.02 0 -0.63 
+8.04 -1.56 -8.88 -2.3 -13.67 -0.72 -7.31 0.93 7.96 2.26 13.7 1.37 0.17 0.02 0 0.63 
+-13.75 -1.5 f*
+255 35 0 rG
+2355.88 1563.65 -3.69 5.17 0.61 1.97 6.79 9.83 8.42 8.79 9.2 8.22 7.58 9.18 2.37 4.55 
+1.54 6.45 0.43 0.48 5.84 8.79 0.96 1.24 4.6 6.36 -0.41 3.21 -2 2.17 -0.89 2.71 
+-0.57 2.82 0.13 0.13 0.7 0.26 6.25 0.04 7.12 2.41 10.85 5.9 -1.62 1.39 -5.86 -1.11 
+-5.04 -0.98 5.14 4.17 -8.57 -1.47 -2.71 -0.05 -6.77 0.32 -5.18 -0.5 -12.35 -2.21 11.57 4.41 
+10.35 4.52 -8.53 0.48 7.95 4.05 -4 1.7 5.86 2.14 0.02 0.02 0 -0.67 -2.82 -1.04 
+3.08 -1.76 0.33 0.04 -0.33 -0.08 -1.34 -2.5 1.95 -0.84 2.45 -0.46 -2.04 -1.07 -12.79 -5.01 
+-4.34 -1.61 4.63 0.81 9.63 0.86 3.97 -1.17 1.21 0.02 11.18 1.89 -0.89 -2.43 4.64 0.87 
+4.42 2.45 -1.43 1.32 0.58 1.95 -0.89 1.47 1.52 2.04 -7.05 0.23 -0.48 1.74 -1.09 1.65 
+-0.09 0.02 -0.15 0.06 -9.5 0.52 -4.38 0 0 0.67 12.15 2.17 1.56 0.3 0.33 -0.13 
+-0.33 -0.3 -4.68 -2.11 4.77 -0.28 1.82 -0.72 0.98 -1.62 0.46 -1.7 11.33 0.74 0.58 0.07 
+-0.32 -0.87 -1.5 -1.02 0.76 -1.34 -2.04 -2.2 4.84 -0.04 -9.91 -5.38 4.49 -0.09 -4.9 -2.28 
+-1.62 -2.73 3.58 0.37 1 -0.31 0.04 0 0 -0.82 -4.95 -1.74 -4.12 0.33 -4.93 -1.67 
+-12.8 -4.41 -0.02 0 0.76 -2.76 1.95 -2.14 1.23 -2.65 -3.03 -5.67 -2.32 -2.88 -3.28 -5.46 
+-3.11 -4.76 -0.96 -3.45 -3.9 -7.55 -8.03 -8.86 -8.55 -8.62 -8.51 -8.72 -6.38 -8.6 -0.43 -1.21 
+3.45 -4.58 3.26 -5.99 4.77 4.58 11.48 7.07 0.26 0.16 10.8 5.46 5.84 -1.24 1.71 0.31 
+8.98 6.36 5.58 -0.83 5.16 -1.43 2.3 0.02 5.88 4.67 3.41 3.86 -0.33 2.28 -1.39 -1.82 
+-9.16 -7.66 0.82 10.21 6.32 9.27 7.43 6.21 5.03 0.95 2.93 -2.89 4.67 0.67 0.15 0.26 
+0.17 0.48 -3.21 2.25 0.74 8.57 7.01 6.68 2.78 1.34 3.55 4.97 3.52 1.43 3.36 1.65 
+0.02 0 -0.02 0 -2.06 1.39 -2.12 1.08 -0.5 2.11 -0.28 1.25 -3.47 -3.86 -4.02 -4.29 
+1.63 5.01 5.38 9.03 0.17 1.02 -1.71 0.63 -1.69 0.67 -1.65 0.74 -1.89 0.5 -0.67 -0.45 
+-8.75 -6.01 0.65 3.29 -0.8 1.8 -5.76 -1.95 -1.71 1.24 -1.65 1.3 -1.54 1.34 -1.5 1.39 
+-1.54 0.22 -0.43 0.07 0 0.82 3.1 -0.49 1.43 -1.35 1.52 -1.32 1.61 -1.28 1.69 -1.22 
+9.18 4.73 0.13 0.09 0.22 -0.3 -0.17 -1.82 -3.28 -5.47 7.36 5.05 1.76 1.15 1.8 -0.5 
+1.61 -0.72 1.63 -0.65 1.7 -0.63 -0.35 -2.04 -4.71 -9.22 -0.04 -0.2 0.13 0.18 7.01 7.7 
+-0.02 -4.38 0.95 -3.3 2.06 -1.28 1.73 -1.41 -2.5 -0.71 -3.91 -2.78 -4.62 -4.58 -2.78 -4.91 
+-2.52 2.04 -5.26 -5.01 -0.56 -6.42 5.18 2.45 -2.67 -7.2 -2.25 -4.05 -4 1.15 -3.69 1.71 
+-4.6 0.02 -5.12 -4.3 -6.75 -9.09 -0.72 -8.83 7.92 6.62 3.35 4.32 0.73 -5.42 -2.43 -9.59 
+-0.24 -0.7 -0.09 -0.09 -5.18 1.39 -5.99 -0.11 -5.19 1.47 -6.86 -1.15 -5.6 -3.99 -3.88 -0.7 
+-6.43 0.48 -8.38 -4.28 -2.99 -1.7 -8.89 -5.51 -8.98 -8.59 -0.3 -0.17 -0.22 0.41 -1.08 8.4 f*
+7 193 59 rG
+2360.8 1669.57 -8.44 -2.09 8.44 1.02 7.86 1.84 -7.86 -0.78 f*
+189 0 54 rG
+2357.4 1565.54 -3.45 4.58 0.43 1.21 6.38 8.6 8.51 8.72 8.55 8.62 8.03 8.86 3.9 7.55 
+0.96 3.45 3.11 4.76 3.28 5.46 2.32 2.88 3.03 5.67 -1.23 2.65 -1.95 2.14 -0.76 2.76 
+0.02 0 12.8 4.41 4.93 1.67 4.13 -0.33 4.95 1.74 0.43 -0.07 0 -0.39 -8.86 -3.12 
+-2.89 1.07 -2.45 -0.85 -12.11 -5.27 0.37 -1.3 1.95 -2.13 1.63 -2.34 -0.43 -3.82 -4.95 -6.12 
+-1.65 -2.71 -4.82 -7.33 -0.47 -1.74 -4.71 -9.01 -8.25 -8.72 -7.07 -7.51 -0.84 -1.48 -1.65 -1.16 
+-7.23 -7.34 -2.02 -2.67 -2.89 -8.16 1.74 -2.28 4.55 -4.17 2.18 2.06 9.78 8.16 5.52 3.05 
+8.42 2.13 5.51 -1.65 0.66 0.11 10.67 7.55 4.93 -1.8 5.14 -1.43 0.41 0 8.94 7.1 
+1.09 1.19 -0.11 0.72 -0.43 -0.59 -9.77 -8.18 0.89 10.92 6.07 9.33 8.6 7.18 2.41 0.46 
+6.05 9.13 0.13 0.13 0 -10.09 -2.17 -0.32 1.37 -1.34 2.32 0.39 -1.52 1.28 0 10.09 
+2.58 2.32 6.14 4.75 1.35 0.65 6.27 8.9 -1.04 2.65 -1.74 -1.93 -5.92 -6.36 2.39 7.45 
+5.75 8.92 0.09 0.5 -1.76 0.66 -1.71 0.67 -1.67 0.74 -1.91 0.5 -0.15 -0.11 -9.42 -6.49 
+-0.67 2.21 -1.37 1.48 -3.78 -0.37 -1.73 1.25 -1.67 1.32 -1.56 1.35 -1.5 1.41 -0.99 0.13 
+0 0.39 1.54 -0.22 1.5 -1.39 1.54 -1.34 1.65 -1.3 1.71 -1.24 5.76 1.95 0.8 -1.8 
+-0.65 -3.29 8.75 6.01 0.67 0.45 1.89 -0.5 1.65 -0.74 1.69 -0.67 1.71 -0.63 -0.17 -1.02 
+-5.38 -9.03 -1.62 -5.01 4.02 4.29 3.47 3.86 0.28 -1.25 0 -3.61 1.8 -1.52 1.63 0.78 
+-1 0.7 -2.43 0.04 0 3.61 0.5 -2.11 2.13 -1.08 2.06 -1.39 0.02 0 -0.02 0 
+-3.36 -1.65 -3.52 -1.43 -3.55 -4.97 -2.78 -1.34 -7.01 -6.68 -0.74 -8.57 3.21 -2.25 -0.17 -0.48 
+-0.15 -0.26 -4.67 -0.67 -2.93 2.89 -5.03 -0.95 -7.43 -6.21 -6.32 -9.27 -0.82 -10.21 9.16 7.66 
+1.39 1.82 0.33 -2.28 -3.41 -3.86 -5.88 -4.67 -2.3 -0.02 -5.16 1.43 -5.58 0.83 -8.98 -6.36 
+-1.71 -0.31 -5.84 1.24 -10.8 -5.46 -0.26 -0.16 -11.48 -7.07 -4.77 -4.58 -3.26 5.99 f*
+2 239 204 rG
+2362.21 1680.95 -7.96 -2.26 7.31 -0.93 13.67 0.72 8.88 2.3 -8.04 1.56 -0.17 -0.02 0 -0.63 
+5.38 -1.02 -5.95 -1.55 -13.66 -0.8 -4.89 0.63 5.3 1.5 13.67 1.21 0.15 0.02 0 0.63 
+-13.7 -1.37 f*
+255 35 0 rG
+2357.27 1633.7 -1.35 -0.24 0.72 1.26 0.71 -0.54 -0.08 -0.48 f*
+0 255 r6
+2363.71 1651.34 -7.57 -5.36 8.9 1.91 6.05 3.47 -3.49 -0.02 0 -1.2 -2.82 -1.62 -4.17 -0.87 
+3.54 2.47 3.45 0.02 0 1.2 -3.89 0 f*
+87 0 136 rG
+2358.16 1566.47 -1.74 2.28 2.89 8.16 2.02 2.67 7.23 7.34 1.65 1.16 0.84 1.48 7.07 7.51 
+8.25 8.72 4.71 9.01 0.47 1.74 4.82 7.33 1.65 2.71 4.95 6.13 0.43 3.82 -1.63 2.34 
+-1.95 2.13 -0.37 1.3 12.11 5.27 2.45 0.85 2.89 -1.07 8.86 3.13 0.99 -0.13 1.5 -1.41 
+1.56 -1.35 1.67 -1.32 1.73 -1.25 3.78 0.37 1.37 -1.48 0.67 -2.21 9.42 6.49 0.15 0.11 
+1.91 -0.5 1.67 -0.74 1.71 -0.67 1.76 -0.66 -0.09 -0.5 -5.75 -8.92 -2.39 -7.45 5.92 6.36 
+1.74 1.93 1.04 -2.65 -6.27 -8.9 -1.35 -0.65 -6.14 -4.75 -2.58 -2.32 -0.13 -0.13 -6.05 -9.13 
+-2.41 -0.46 -8.6 -7.18 -6.07 -9.33 -0.89 -10.92 9.77 8.18 0.43 0.59 0.11 -0.72 -1.09 -1.19 
+-8.94 -7.1 -0.41 0 -5.14 1.43 -4.93 1.8 -10.67 -7.55 -0.66 -0.11 -5.51 1.65 -8.42 -2.13 
+-5.52 -3.05 -9.78 -8.16 -2.18 -2.06 -4.55 4.17 f*
+0 155 255 rG
+2362.09 1680.45 -5.3 -1.5 4.89 -0.63 13.66 0.8 5.95 1.55 -5.38 1.02 -0.15 -0.02 0 -0.62 
+2.69 -0.5 -2.97 -0.79 -13.71 -0.89 -2.43 0.33 2.64 0.74 13.79 1.11 0 0.63 -13.67 -1.21 f*
+110 210 9 rG
+2363.96 1688.82 -5.82 -2.64 5.14 -1.26 8.82 1.56 -7.31 2.74 -0.84 -0.39 0 -1.89 1.49 -0.54 
+-1.8 -0.35 -1.04 0.29 1.35 0.61 0 1.89 f*
+255 203 0 rG
+2360.87 1671.4 -2.19 0.76 1.91 3.71 0.39 0.13 0 -2.8 -0.39 -0.76 0.33 -0.12 1.93 0.45 
+-1.86 0.43 0 2.8 0.32 0.13 2.95 0.15 9.34 -2.12 -12.72 -2.76 f*
+110 210 9 rG
+2362.24 1656.42 -3.19 -1.87 3.64 0.13 13.11 4.36 0.97 0.5 -1.21 0.48 -13.33 -3.61 f*
+255 0 r6
+2361.98 1679.93 -2.64 -0.74 2.43 -0.33 13.71 0.89 2.97 0.79 -2.69 0.5 -13.79 -1.11 f*
+255 135 0 rG
+2360.92 1672.31 -0.33 0.13 0.39 0.76 1.86 -0.43 -1.93 -0.45 f*
+110 210 9 rG
+2364.15 1650.13 -3.54 -2.47 4.17 0.87 2.82 1.63 -3.45 -0.02 f*
+255 35 0 rG
+2366.47 1644.73 -5.79 -0.89 4.9 2.8 0.28 0 0 -0.61 -0.71 -0.41 0.82 0.13 0.15 0.26 
+-0.26 0.02 0 0.61 1.65 -0.09 -1.04 -1.82 f*
+189 0 54 rG
+2368.29 788.54 -7.01 1.37 10.7 -4.06 12.09 -2.06 -10.72 3.75 -5.06 1 0 -0.65 4.6 -0.85 
+4.08 -1.48 -4.6 0.83 -4.08 1.5 0 0.65 f*
+7 193 59 rG
+2363.96 1686.93 -1.35 -0.61 1.04 -0.29 1.8 0.35 -1.49 0.54 f*
+110 210 9 rG
+2367.21 1694.57 -4.54 -1.21 2.13 -2 0.63 -0.61 4.71 2.32 -2.93 1.5 f*
+189 0 54 rG
+2365.97 1645.75 -0.82 -0.13 0.71 0.41 0.26 -0.02 -0.15 -0.26 f*
+0 255 r6
+2380.08 1770.46 -12.13 1.47 1.26 5.27 8.5 0.13 0 -1 -2.43 -0.04 -4.43 -0.06 -0.83 -3.3 
+7.66 -0.93 0.02 4.34 0 1 2.46 0.02 -0.09 -6.9 f*
+255 35 0 rG
+2372.89 787.04 -4.6 0.85 4.08 -1.5 4.6 -0.83 -4.08 1.48 f*
+255 203 0 rG
+2377.69 1772 -7.66 0.93 0.83 3.3 4.43 0.06 0 -1 -2.8 -0.07 -0.33 -1.34 3.13 -0.37 
+0 2.78 2.43 0.04 -0.02 -4.34 f*
+7 193 59 rG
+2374.16 1602.11 -3.82 0.13 0.79 -5.59 3.69 2.54 1.97 2.82 -2.62 0.11 0 -2.5 0.06 0 
+-0.02 -0.04 -0.02 -0.02 -0.02 0.07 0 2.5 f*
+2374.02 1757.79 -3.14 -3.6 7.62 1.17 5.57 4.21 0.22 1.54 -2.69 0 -7.58 -3.32 f*
+255 135 0 rG
+2375.29 1773.52 -3.13 0.37 0.33 1.34 2.8 0.07 0 -1.78 f*
+255 203 0 rG
+2376.13 1735.79 -2.21 2.71 6.7 2.78 5.45 0.82 -2.43 -2.28 -5.04 -3.3 -2.47 -0.74 f*
+2 239 204 rG
+2374.21 1599.61 -0.06 0 0.02 -0.07 0.02 0.02 0.02 0.04 f*
+7 193 59 rG
+2384.79 1701.21 -9.22 -1.78 6.45 -3.12 10.46 0.8 -7.17 4.21 -0.52 -0.11 0 -0.61 5.4 -3.14 
+-7.86 -0.61 -4.82 2.34 6.77 1.3 0.5 0.11 0 0.61 f*
+2389.11 1680.45 -11.7 -2.93 11.11 -0.93 8.13 2.09 -7.42 1.8 -0.13 -0.02 0 -0.52 5.6 -1.35 
+-6.12 -1.59 -8.33 0.74 8.75 2.17 0.11 0.02 0 0.52 f*
+2 239 204 rG
+2384.29 1700.5 -6.77 -1.3 4.82 -2.34 7.86 0.61 -5.4 3.14 -0.5 -0.11 0 -0.61 3.62 -2.09 
+-5.25 -0.43 -3.19 1.59 4.34 0.83 0.48 0.11 0 0.61 f*
+110 210 9 rG
+2388.37 1667.32 -10.29 -4.41 10.76 1.07 4.76 2.19 -5.12 1.13 0 -0.91 0.13 -0.02 2.84 -0.62 
+-2.71 -1.24 -6.08 -0.59 5.82 2.47 0 0.91 -0.11 0.02 f*
+255 203 0 rG
+2389.21 1662.13 -10.7 -5.19 11.63 1.82 7.62 3.34 -2.87 0 0 -0.71 -4.9 -2.17 -7.47 -1.13 
+6.86 3.3 5.51 0 0 0.71 -5.68 0.02 f*
+0 155 255 rG
+2383.81 1699.79 -4.34 -0.83 3.19 -1.59 5.25 0.43 -3.62 2.09 -0.48 -0.11 0 -0.61 1.82 -1.04 
+-2.64 -0.21 -1.59 0.8 2.41 0.45 0 0.61 f*
+255 203 0 rG
+2388.37 1675.29 -8.86 -0.48 8.92 0.93 12.17 3.06 2.26 1.52 1.63 -1.41 -2 -0.37 -13.67 -2.87 
+-0.46 -0.39 f*
+2 239 204 rG
+2389 1679.91 -8.75 -2.17 8.33 -0.74 6.13 1.59 -5.6 1.35 -0.11 -0.02 0 -0.52 3.73 -0.89 
+-4.08 -1.06 -5.55 0.5 5.8 1.43 0.11 0.02 0 0.52 f*
+255 0 r6
+2383.81 1699.18 -2.41 -0.45 1.59 -0.8 2.64 0.21 -1.82 1.04 f*
+0 255 r6
+2389.39 1661.39 -6.86 -3.3 7.47 1.13 4.9 2.17 -2.89 0 0 -0.74 -2.17 -0.96 -3.28 -0.48 
+3.02 1.43 2.43 0 0 0.74 -2.62 0 f*
+189 0 54 rG
+2386.79 754.54 -4.14 -2.21 5.43 -1.67 12.8 0.14 7.86 2.34 -1.54 1.48 -10.39 0.61 -4.23 0.2 
+0 -0.93 10.51 -0.35 0.21 -1.75 -3.69 -1.07 -5.91 -0.09 -6.77 1.39 5.64 1.87 0 0.93 
+-2.04 0.11 -3.73 -0.98 f*
+7 193 59 rG
+2388.48 1666.38 -5.82 -2.47 6.08 0.59 2.71 1.24 -2.84 0.63 0 -0.91 0.67 -0.15 -0.61 -0.29 
+-1.43 -0.12 1.37 0.56 0 0.91 -0.13 0.02 f*
+0 155 255 rG
+2388.89 1679.36 -5.8 -1.43 5.55 -0.5 4.08 1.06 -3.73 0.89 -0.11 -0.02 0 -0.52 1.86 -0.43 
+-2.04 -0.54 -2.78 0.25 2.95 0.72 0 0.52 f*
+255 0 r6
+2388.89 1678.84 -2.95 -0.72 2.78 -0.25 2.04 0.54 -1.86 0.43 f*
+189 0 54 rG
+2390.73 1657.04 -4.62 -0.81 4.34 1.61 12.79 5.01 2.04 1.07 -2.45 0.46 -1.95 0.84 1.34 2.5 
+0.33 0.08 -0.33 -0.04 -3.08 1.76 2.82 1.04 0.02 0 0 -0.32 -1.32 -0.48 1.43 -0.83 
+1.93 1.3 -2.04 0 0 0.32 4.37 0 9.5 -0.52 0.15 -0.06 0 -1.11 -6.01 -1.85 
+2.04 -1.61 -7.64 -3.97 -0.63 -0.26 -2.32 -0.52 -10.89 -3.04 -0.72 -0.26 0.76 0.11 11.85 1.06 
+2.55 -1.58 0.46 0 12.48 2.08 1.28 -1.56 0.93 0.15 0.91 0.52 0.24 1.99 -0.11 1.82 
+-0.95 1.57 0.13 1.82 -3.41 1.09 -0.48 1.75 -0.48 0.68 0 1.11 0.09 -0.02 1.09 -1.65 
+0.48 -1.74 7.05 -0.23 -1.52 -2.04 0.89 -1.47 -0.58 -1.95 1.43 -1.32 -4.42 -2.45 -4.64 -0.87 
+0.89 2.43 -11.18 -1.89 -1.21 -0.02 -3.97 1.17 -9.63 -0.86 f*
+110 210 9 rG
+2389.58 1660.66 -3.02 -1.43 3.28 0.48 2.17 0.96 -2.43 0 f*
+255 35 0 rG
+2392.55 754.47 -5.64 -1.87 6.77 -1.39 5.91 0.09 3.69 1.07 -0.21 1.75 -10.51 0.35 f*
+2 239 204 rG
+2388.61 1665.45 -1.37 -0.56 1.43 0.13 0.61 0.29 -0.67 0.15 f*
+0 255 r6
+2394.04 1779.69 -6.04 0.72 1.58 3.02 5.71 -0.46 -1.25 -3.28 f*
+87 0 136 rG
+2390.58 1657.46 -0.76 -0.11 0.72 0.26 10.89 3.04 2.32 0.52 0.63 0.26 7.64 3.97 -2.04 1.61 
+6.01 1.85 0.48 -0.68 0.48 -1.75 3.41 -1.09 -0.13 -1.82 0.95 -1.57 0.11 -1.82 -0.24 -1.99 
+-0.91 -0.52 -0.93 -0.15 -1.28 1.56 -12.48 -2.08 -0.46 0 -2.55 1.58 -11.85 -1.06 f*
+0 255 r6
+2399.66 1756.54 -5.08 -0.16 1.35 3 7.66 2.28 -1.11 6.86 1.04 2.69 4.58 -0.8 0.29 -3.84 
+-1.84 -5.4 8.74 -1.55 7.01 2 8 -1.86 -4.51 -2.43 -4.28 -4.34 -7.4 1.96 -6.42 3.12 
+-8.03 -1.52 f*
+7 193 59 rG
+2398 1776.24 -2.04 -1.43 3.23 0.34 1.91 1.43 -3.1 -0.34 f*
+87 0 136 rG
+2402.08 1668.92 -1.43 0.83 1.32 0.48 2.04 0 -1.93 -1.3 f*
+0 255 r6
+2405.38 1687.59 -4.64 0.56 4.77 -0.3 0.71 -0.21 -0.84 -0.04 f*
+255 203 0 rG
+2408.16 1652.13 -4.73 -3.45 5.57 -0.14 1.39 0.48 2.13 1.17 1.69 3.15 -6.05 -1.21 f*
+0 155 255 rG
+2414.61 1550.67 -1.39 8.12 7.12 6.01 6.17 -0.5 5.64 -0.32 0 -1.5 -0.46 -0.04 -6.04 -0.39 
+-6.57 -0.3 -4.04 -3.41 0.8 -4.58 5.71 -3.04 5.58 -4.06 6.83 -0.34 8.29 6.32 0.5 0.54 
+-0.21 0.65 -4.3 8.07 -6.1 0.58 0 1.5 0.48 -0.04 5.96 -0.79 5.08 -4.47 2.09 -5.88 
+-4.62 -5.05 -7.5 -2.7 -7.01 -0.11 -5.86 3.49 -6.14 2.23 f*
+2 239 204 rG
+2415.84 1553.75 -0.8 4.58 4.04 3.41 6.57 0.3 6.04 0.39 0 -1.41 -0.48 -0.09 -6.38 -1.12 
+-7.01 -1.13 -0.93 -0.8 0.2 -1.05 5.27 -3.84 5.32 -4.6 6.62 -0.8 7.18 5.75 -3.58 7.31 
+-6.21 0.37 0 1.41 0.46 0.04 6.1 -0.58 4.3 -8.07 0.21 -0.65 -0.5 -0.54 -8.29 -6.32 
+-6.83 0.34 -5.58 4.06 -5.71 3.04 f*
+7 193 59 rG
+2417.08 1556.83 -0.2 1.05 0.93 0.8 7.01 1.13 6.38 1.13 0 -1.39 -7.21 -2 -3.02 -0.61 
+2.2 -1.7 5.01 -5.14 6.45 -1.26 5.8 4.64 -2.91 5.9 -0.35 0 -5.96 0.16 0 1.39 
+0.48 0.09 6.21 -0.37 3.58 -7.31 -7.18 -5.75 -6.62 0.8 -5.32 4.6 -5.27 3.84 f*
+0 255 r6
+2418.42 1591.02 -0.49 -6.08 5.46 4.56 5.77 9.42 -2.63 1.34 -0.48 -0.41 -0.8 -0.96 0 -0.89 
+-2.43 -8.33 -4.23 -3.52 0.36 4.69 4.99 5.71 1.3 1.45 0 0.89 -6.84 -7.88 f*
+110 210 9 rG
+2418.96 1590.84 -0.36 -4.69 4.23 3.52 2.43 8.33 -1.3 -1.45 0 -0.8 -1.71 -5.93 -3 -2.47 
+0.29 3.32 3.14 3.63 1.28 1.45 0 0.8 -4.99 -5.71 f*
+7 193 59 rG
+2419.54 1590.67 -0.29 -3.32 3 2.47 1.71 5.93 -1.28 -1.45 0 -0.78 -1 -3.52 -1.78 -1.45 
+0.18 1.95 1.34 1.54 1.26 1.48 0 0.78 -3.14 -3.62 f*
+2 239 204 rG
+2420.07 1590.5 -0.18 -1.95 1.78 1.45 1 3.52 -1.26 -1.48 0 -0.8 -0.3 -1.07 -0.54 -0.43 
+0.04 0.59 0.8 0.91 0 0.8 -1.34 -1.54 f*
+0 155 255 rG
+2420.62 1590.32 -0.04 -0.59 0.54 0.43 0.3 1.07 -0.8 -0.91 f*
+110 210 9 rG
+2423.18 1555.25 -2.2 1.7 3.02 0.61 7.21 2 5.96 -0.16 0 -1.25 -0.34 0 -6.1 -0.05 
+-5.9 -1.95 3.91 -4.34 6.23 -1.69 4.43 3.54 -2.22 4.5 0 1.25 0.35 0 2.91 -5.9 
+-5.8 -4.64 -6.45 1.26 -5.01 5.14 f*
+2 239 204 rG
+2425.2 1769.27 -1.47 -2.78 4.34 -1.2 4.46 3.28 -7.33 0.7 f*
+0 255 r6
+2428.73 1551.8 -3.91 4.34 5.9 1.95 6.1 0.05 0 -1.26 -0.35 0 -6.23 -0.26 -2.93 -0.97 
+1.96 -2.13 6.03 -2.15 3.04 2.41 -1.52 3.1 0 1.26 0.34 0 2.22 -4.5 -4.43 -3.54 
+-6.23 1.69 f*
+255 203 0 rG
+2429.28 1553.52 -1.96 2.13 2.93 0.97 6.23 0.26 0 -1.26 -0.34 -0.02 -6.23 -0.43 5.75 -2.54 
+1.65 1.32 -0.83 1.67 0 1.26 0.35 0 1.52 -3.1 -3.04 -2.41 -6.03 2.15 f*
+255 135 0 rG
+2435.66 1552.63 -5.75 2.54 6.23 0.43 0 -1.22 -1.07 -0.09 0.93 -0.41 0.26 0.22 -0.13 0.28 
+0 1.22 0.34 0.02 0.83 -1.67 -1.65 -1.32 f*
+0 255 r6
+2435.53 1598.89 -4.54 -0.52 1.96 -4.95 4.27 3.37 -1.69 2.11 f*
+255 35 0 rG
+2436 1553.88 -0.93 0.41 1.07 0.09 0.13 -0.28 -0.26 -0.22 f*
+189 0 54 rG
+2436.22 758.38 -0.54 -1.34 1.21 -1 1.84 -0.87 2.84 -0.52 5.21 0.5 4.1 0.29 -0.22 -1.87 
+0.37 -1.89 3.86 0.17 7.79 4.26 3.99 4.86 -0.5 0.84 -0.45 -0.15 0 -0.18 -0.26 -1.52 
+-3.17 -3.82 -6.1 -3.36 -4.67 -0.8 2.2 3.28 1.49 1.98 4.41 1.47 5.17 2.37 0.93 0.41 
+0 0.18 -3.19 -1.15 -4.16 -1.21 0.04 1.17 1.19 1.52 -0.91 0.43 -1.73 0.11 -0.36 0 
+0 -0.96 0.71 -0.61 -3.6 -2.74 -0.3 -0.63 -1.78 -0.32 -7.62 -1.74 -3.04 0.36 -1.13 1 
+-0.02 1.22 3.35 1.95 0.45 0.16 0.56 0.13 6.6 0.93 1.54 0.11 1.85 0.13 2.43 0.04 
+0 0.96 -1.85 0.02 -3.75 -0.37 -8.18 -1.64 -6.59 -2.15 f*
+87 0 136 rG
+2439 1606.12 -1.37 1.34 2.17 0.32 1.52 -1.28 -2.32 -0.39 f*
+255 35 0 rG
+2443.17 760.07 -3.35 -1.95 0.02 -1.22 1.13 -1 3.04 -0.36 7.62 1.74 1.78 0.32 0.3 0.63 
+3.6 2.74 -0.71 0.61 -2.43 -0.04 -1.85 -0.13 0 -1.48 0.33 -0.96 -1.3 -0.93 -2.52 -0.63 
+-3.43 0 0.24 1.28 0.67 0.7 2.21 0.23 3.8 0.31 0 1.48 -1.54 -0.11 -6.6 -0.93 
+-0.56 -0.13 -0.45 -0.16 f*
+255 203 0 rG
+2442.58 1616.91 -0.39 -4.28 4.54 3.19 -0.63 4.45 -0.98 -0.93 0 -0.95 0.33 -2.24 -2.28 -1.61 
+0.19 2.15 0.8 0.79 0.96 0.91 0 0.95 -2.54 -2.43 f*
+0 255 r6
+2443.36 1616.69 -0.19 -2.15 2.28 1.61 -0.33 2.24 -0.96 -0.91 0 -1 -0.02 -0.02 0 0.02 
+^ 0 0.98 -0.8 -0.79 f*
+110 210 9 rG
+2449.67 1771.53 -6.05 7.05 3.08 1.19 8.47 2.19 7.53 -1.39 1.98 -0.91 8.89 -3.09 6.68 4.47 
+-0.43 7.57 2.89 2.11 10.07 0.45 10 3.71 1.52 0.76 11.29 0.54 9.66 -3.27 11.2 -0.68 
+12.29 2.08 2.43 0.52 12.57 3.02 6.38 5.75 6.23 0.52 13.21 0.54 5.1 0.05 0 -0.8 
+-3 -0.02 -16.17 -0.65 -0.33 -0.02 -3.04 -0.26 -5.44 -4.75 -1.06 -0.93 -13.76 -3.78 -3.45 -1.73 
+-4.38 -0.22 -8.36 -0.41 -1.54 0.07 -6.99 0.29 -4.6 -6.86 -1.87 -0.06 -0.16 0.43 2.15 7.29 
+-7.57 2.8 -0.48 -0.02 -8 -0.54 -2.98 -1.15 -11.04 -3.3 -9.94 -0.67 -1.11 -0.8 0.45 -7.57 
+-8.38 -5.56 -8.48 1.3 -7.51 3.43 -2.06 0.34 -3.36 -0.87 4.53 -3.47 2.8 -3.65 6.45 -1.15 
+8.07 -4.18 3.54 -1.76 3.73 -0.91 7.03 -1.02 7.16 0.11 7.25 -0.17 7.12 -0.8 6.32 -2.41 
+6.64 -1.61 6.95 -1.28 1.76 -7.12 5.27 -2.5 5.73 -2.04 0.3 -0.56 3.8 -2.78 4.36 -2.99 
+2.28 -4.17 -0.24 -5.21 -0.61 -0.39 -2.74 -6.08 8.27 3.41 11.72 1.4 5.95 -2.43 3.43 -3.43 
+1.87 -0.57 11.94 -0.28 -7.4 -4.05 -7.12 -3.76 -2.58 -1.67 -0.39 -2.86 3.63 -2.95 3.25 -1.98 
+3.23 -0.7 -1.67 -1.52 0.02 -2.3 0.05 -3.47 -2.2 -3.49 -5.29 -2.15 -8.48 -1.67 -3.59 -2.37 
+-0.11 -0.52 0.52 -0.54 3.52 -2.09 -2.69 -0.41 -13.33 -1.34 -4.27 -0.76 4.77 -2.2 -3.58 -2.02 
+-9.48 -0.91 -4.25 -0.35 0.15 -1.69 4.25 -0.91 13.76 -0.96 0.78 0.04 3 1.97 0.09 2.32 
+9.29 1.78 9.98 -3.43 0.09 -2.9 -0.56 -2.8 -0.13 -2.89 2.28 -3.45 1.67 -1.99 3.71 -2.47 
+4.26 -4.61 0.95 -3.82 1.19 -2.59 2.56 -2.52 4.02 -5.64 -0.39 -4.01 -11.75 2.11 -1.58 0.34 
+0.18 -2.34 1.32 -2.41 8.62 -6.05 8.18 -8.45 -4.21 -2.45 -3.71 -2.71 -1.25 -4.62 -7.09 -0.07 
+-7.51 3.28 -1.15 3.58 -6.45 5.91 -3.71 6.11 1.43 3.13 -2.73 2.95 -2.76 0.89 -1.49 0.48 
+-3.41 -1.49 2.32 -4.86 3 -2.76 0.89 -5.12 1.89 -2.91 10.16 -7.42 4.53 -3.34 7.57 -2.71 
+1.83 -5.55 -2.63 -1.5 -1.8 -1 -0.89 -6.14 -3.04 -4.21 0.11 -0.24 -0.76 -0.11 -4.36 -2.02 
+-0.39 -0.48 -0.07 -7.68 -6.64 4.5 -6.86 4.58 -0.28 0.13 -5.08 2.28 -2.56 -0.09 -4.34 -2.58 
+-5.12 0.11 -0.91 0.02 -9.01 6.23 -0.44 0.35 -2.95 -1.37 -1.15 -1.11 -2.32 0.15 -2.91 -0.43 
+0 -0.3 -1.87 -8.14 -4.82 -2.22 -1.37 -2.11 -2.06 -5.2 -4.01 -6.38 -0.15 -0.54 -1.41 -10.27 
+-0.98 -9.27 -4.25 -1.89 -1.41 -0.56 -0.8 -0.33 -6.17 -7.79 -0.8 -2.61 1.45 -3.97 7.62 -0.91 
+4.23 5.88 0.85 8.31 8.46 -7.3 0.21 -0.11 0.14 0.15 2.25 11.11 1.23 3.26 5.75 3.78 
+4.38 5.82 0.13 0.67 4.45 5.4 6.34 -3.58 3.45 -10.33 2.97 -0.02 6.54 1.52 7.72 -0.79 
+7.81 -0.54 6.84 1.41 4.53 -1.82 6.43 -3.17 9.22 -1.58 2.47 -0.22 5.49 0.89 6.25 3.19 
+3.04 3.11 0.37 3.6 -0.24 10.27 0.02 0.09 0.08 -0.02 13.71 -5.75 0.05 0 -0.02 0 
+-4.32 11.89 0.18 1.76 1.17 -0.79 12.29 -6.46 7.83 -5.06 -4.97 7.23 -7.12 10.43 -8.7 9.16 
+-0.76 1.73 2.34 -0.37 11.39 -6.9 7.05 -2.73 5.8 -0.55 0 -33.87 -0.18 -0.59 2.13 -1.67 
+-1.54 2.06 P
+-0.41 0.2 0 33.88 2.32 -0.24 2.63 -0.13 -0.35 2.39 -10.16 8.2 -0.84 6.14 6.12 -0.39 
+10.18 -8.38 6.43 -0.76 4.62 4.45 8.96 -0.13 1.8 0.26 2.45 5.96 -12.15 6.16 -1.06 2.65 
+4.32 4.41 1.06 0.39 6.23 2.35 6.95 3.14 -0.91 7.44 -3.38 8.36 6.08 3.78 -3.59 8.01 
+5.47 4.23 0.22 6.34 0.58 6.14 6.68 2.21 9.36 -1 -10.05 6.86 -6.32 4.64 5.6 -0.39 
+13.02 -1.33 12.89 -1.28 1.82 -0.22 -2.06 1.39 -14.45 7.92 -14.02 4.96 -2.32 1.46 -9.57 8.09 
+8.84 -0.69 6.98 4.36 -9.82 7.23 -1.54 1.11 0.82 6.49 -3.78 7.04 -6.05 7.09 -2.58 6.92 
+-4.21 3.06 -5.19 3.75 -8.86 6.49 -5.44 2.43 -8.9 2.89 -1.52 0.43 -11.72 3.36 -2.3 0.3 
+-11.87 4.06 -6.03 5.59 -9.48 4.28 -8.09 4.69 -6.38 5.68 -15.55 -0.24 -0.48 -0.04 -13.74 -0.82 
+-8 3.82 -2.54 4.43 -0.48 0.85 8.89 0.56 8.66 2.11 11.35 2.65 3.71 0.13 15.13 2.15 
+5.08 5.99 -6.18 3.67 0 0.8 1.32 0 17.43 -1.84 1.41 -0.11 0.24 -0.63 -8.36 -4.4 
+-7.68 -4.86 -6.62 -1.91 -4.41 -0.57 -2.25 -0.28 -11.77 -0.35 -5.71 -1.34 -13.52 -3.3 -1.15 -0.07 
+0.39 -0.69 6.01 -5.97 11.02 0.67 3.73 0.43 14.48 0.61 2.23 0.07 3.11 -2.54 3.21 -3.36 
+9.05 -4.47 6.51 -2.3 4.08 -1.82 1.95 -1.95 3.08 -4.19 5.3 -1.55 6.45 -2.79 16.3 -3.7 
+1.46 -0.34 13.89 -5.75 10 -5.32 4.23 6.14 -7.03 7.29 -6.23 7.31 -8.65 6.99 0 0.02 
+10.2 2.8 10.33 -0.07 -5.9 -3.38 -5.25 -6.27 17.91 -4.58 10.05 2.6 2.95 -1.02 0 -1.79 
+-5.23 -1.66 8.77 -1.76 1.43 1.76 -4.96 1.66 0 1.79 10.48 -3.59 9.07 -5.46 16.26 -4.82 
+0.67 -0.37 0.85 -1.39 -10.94 -1.08 -7.32 4.27 -9.63 3.22 -2.91 0.95 -14.07 1.48 -4.96 -4.75 
+0.13 -0.02 0 -3.37 -3.12 -4.17 4.54 -1.54 0 -11 -0.22 -1.8 4.12 -3.55 6.84 2.84 
+-10.74 2.52 0 11 5.27 -1.78 9.31 2.91 -16 4.58 0 3.37 12.83 -3.52 12.89 -5.03 
+-2.73 -7.04 -13.41 1.24 -2.37 -0.7 7.01 -5.34 6.99 -3.04 -3.21 -2.3 -2.11 -4.34 6.75 -4.49 
+0 -24.04 -0.09 -0.09 0.17 -0.15 1.34 -0.17 -1.43 0.41 0 24.04 1.59 -1.04 10.5 2.89 
+0.18 0.02 11.21 1.08 6.16 -4.36 -3.1 -0.85 -4.67 -5.19 10.55 -6.2 9.64 -6.62 8.38 -8.13 
+2.38 -3.32 -0.71 -1.61 -12.35 5.9 -0.63 0.33 -1.41 0.71 -13.43 3.45 -16.71 10.5 0.26 -6.55 
+4.9 -5.92 7.86 -4.43 1.64 -7.77 7.84 -4.88 10.48 -9.05 4.17 -2.67 0.74 -0.79 0 -5.05 
+-1.97 -0.54 2.19 -1.73 2.06 -0.09 -2.28 2.37 0 5.05 10.79 -11.28 -10.33 0.59 -10.87 8.61 
+-3.08 4.34 -11.87 3.91 -1.43 0.48 -13.04 2.11 -0.96 0.06 1.07 -0.8 1.11 -1 0 -20.98 
+-8.29 -2.17 2.15 -7.87 4.55 -3.58 2.32 0.32 3.73 5.54 -4.47 7.77 0 20.98 10.89 -9.77 
+-5.6 -4.97 -3.3 -5.75 10.59 -7.87 0 -2.65 -3.17 -0.04 0.61 -7.83 1.09 -1.7 3.6 -0.73 
+9.55 -2.54 4.47 -5.12 7.18 -5.08 3.84 -1.43 9.83 0.74 1.52 1.21 -0.8 2.61 -4.97 0.84 
+-8.48 0.24 -5.02 7.4 -6.23 7.45 -13.02 3.99 0 2.65 0.25 -0.2 10.92 -1.73 2.48 3.75 
+1.87 -5.86 p
+9.76 -11.74 13.17 -2.02 2.91 -9.13 -5.4 -4.1 -2.28 -0.13 -10.7 4.06 -12.32 6.77 -11.61 1.21 
+-2.12 0 -13.39 2.95 -6.01 1.07 0.39 -0.37 0 -7.2 1.89 -4.43 2.06 2.16 -0.82 1.07 
+-3.13 1.2 0 7.2 4.58 -4.12 7.9 -10.37 -0.13 -0.09 -6.6 -3.75 -1.34 -7.27 2.08 -7.68 
+6.18 2.04 7.46 3.52 -3.86 10.91 4.6 -1 0 -1.88 3.75 -8.53 6.07 -6.86 -10.39 -1.59 
+14.32 -2.32 1.48 -0.02 6.27 4.82 -3.13 5.13 -11.61 7.86 -2.21 0.5 -4.55 1.02 0 1.88 
+7.44 -1.62 11.52 -8.18 5.14 -8.45 -5.64 -5.38 -5.95 0.11 -8.74 1.48 -6.04 0.21 -11.68 3.8 
+-3.12 -1.78 -5.08 -0.93 -6.81 -3.59 -8.2 -2.36 -1.32 0.43 -12.41 1.89 3.64 -11.59 0.13 -0.52 
+0.91 -10.54 -5.27 -5.09 -10.33 0.13 4.97 -9.31 0.37 -7.79 -10.03 -0.11 -2.32 -0.32 -8.41 1.41 
+-7.42 -2.87 -9.31 0.98 -0.96 0.11 -0.54 -0.89 1.93 -12.46 -0.7 -1.3 -3.62 -0.74 -6.14 1.19 
+-10.05 1.26 -7.14 -3.45 -7.36 -3.21 -7.75 -2.54 -9.27 1.34 -0.63 0.82 -8.66 8.25 -3.91 0.82 
+-4.08 -2.97 -2.45 -1.52 -0.61 0.75 0 0.83 0.44 10.74 -6.12 3.47 -8.03 0.78 -5.23 2.43 
+-4.34 10.18 -3.36 2.95 -5.12 -4.62 -0.3 -0.11 -3.84 -11.45 0.08 -0.98 -6.09 -6.23 -8.27 3.91 
+-6.33 -7.83 -7.62 -0.68 -3.15 8.68 1.76 5.71 3.99 5.25 2.11 2.08 5.69 6.4 0.3 2.87 
+2.04 10.83 0.63 2.02 3.99 7.05 0.93 2.37 2.67 4.08 4.82 1.98 1.5 6.49 0.08 2.45 
+4.84 0.85 4.32 1.84 2.34 -1.93 7.21 -4.97 5.73 0.24 4.36 2.41 5.82 0.39 1.09 -0.67 
+11.15 -6.9 3.54 4.01 4.84 2.32 3.3 3.91 -1.89 7.96 -0.57 1.21 -5.4 9.18 -9.96 7.55 
+-2.84 4.32 -3.09 6.29 -0.62 0.76 -2.34 5.38 3.16 1.63 6.04 -1.97 3.91 -4.19 -1.69 -3.02 
+2.95 -4.91 9.22 -8.24 10.61 -3.37 1.61 4.25 3.56 2.76 3.93 2.58 -6.55 6.73 -10.72 7.33 
+-1.11 1.06 -0.02 3.89 4.04 -0.85 9.39 -1.67 0.66 3.8 -5.55 5.84 -0.98 0.71 -1.69 4.19 
+-0.56 3.63 -6.51 4.97 -0.66 0.32 -2.97 3.73 -1.75 3.28 0.13 2.82 0.43 2.78 -0.11 2.86 
+-7.97 2.71 -7.44 -1.41 -0.02 -2.39 -2.39 -2.09 -3.38 -0.15 -13.76 1.11 -6.14 1.3 -0.18 1.65 
+6.14 0.52 7.57 0.74 2.8 2 -3.91 2.08 6.03 1.11 11.59 1.45 -2.17 2.52 0.33 2.63 
+1.43 0.41 12.46 2.91 1.45 0.61 4.64 3.6 -0.39 3.36 -0.37 3.47 -4.34 2.86 -3.36 2.93 
+0.13 3.75 1.07 0.74 9.42 5.64 1.5 0.84 -2.41 0.04 -6.16 1.93 -3.47 3.34 -5.52 2.5 
+-9.35 -1.15 -6.14 -5.77 -1.15 -1.21 -2.28 -0.43 -3.16 2.4 -3.78 2.02 0.89 1.28 6.64 7.16 
+0.02 1.02 -0.02 5.49 -4.43 2.82 -4.41 2.93 -5.54 2.02 -5.58 1.95 0.06 1.61 -0.95 6.36 
+-6.75 1.33 -6.55 1.54 -6.3 2.15 -6.96 0.82 -7.05 0.29 -7.04 0 -6.9 0.86 -6.38 -5.7 
+-0.33 -0.46 -0.36 0.43 -0.74 8.01 -7.29 4.75 -8.14 1.2 -8.13 0.02 -0.2 0.13 p f*
+2444.14 1616.47 0 -0.02 0.02 0.02 ^ ^ f*
+255 135 0 rG
+2445.64 758.68 -0.24 -1.28 3.43 0 2.52 0.63 1.3 0.93 -0.33 0.96 -3.8 -0.31 -2.21 -0.23 
+-0.67 -0.7 f*
+189 0 54 rG
+2449.5 835.48 -0.32 -4.14 2.36 -2.11 0.93 2.21 -2.97 4.04 f*
+255 35 0 rG
+2453.73 755.25 -2.2 -3.28 4.67 0.8 6.1 3.36 3.17 3.82 0.26 1.52 -0.93 -0.41 0 -0.26 
+-1.8 -2.84 -1.46 -1.74 -2.75 -1.54 -6.25 -2.11 4.32 4.36 7.01 3.41 0.93 0.45 0 0.26 
+-5.17 -2.37 -4.41 -1.47 -1.49 -1.98 f*
+0 255 r6
+2456.73 1776.21 -4.53 3.47 3.36 0.87 2.06 -0.34 7.51 -3.43 8.48 -1.3 8.38 5.56 -0.45 7.57 
+1.11 0.8 9.94 0.67 11.04 3.3 2.98 1.15 8 0.54 0 -1.08 -2.32 -0.13 -2.32 -0.89 
+-7.29 -2.78 -10.29 -1.21 -6.2 -0.48 4.88 -2.71 0 -4.71 -4.09 -0.2 3.91 -0.85 0.83 0.61 
+-0.65 0.43 0 4.71 0.71 -0.39 7.98 -5.36 -7.09 -7.21 -3.11 -1.15 -0.22 1.35 -7.36 4.55 
+-0.21 -0.09 -8.09 -3.14 -8.1 -0.5 -1.26 -0.93 1.45 -0.26 8.12 -2.28 7.57 -2.91 3.91 -2.15 
+3.15 -0.52 3.91 0.13 4.73 5.21 6.95 -2.87 7.51 -0.87 4.71 -4.69 0.56 -0.24 6.75 -1.64 
+3.36 -0.54 -2.17 2.28 -6.64 2.21 1.74 5.43 2.17 1.19 9.01 -0.04 9.33 2.13 -2.3 7.05 
+-10.05 0.44 -10.14 -0.61 -2.32 6.43 1.09 7.46 -2.11 0.74 0 1.08 0.48 0.02 7.57 -2.8 
+-2.15 -7.29 0.16 -0.43 1.87 0.06 4.6 6.86 6.99 -0.29 0 -1.13 0.08 -1.02 2.54 0.45 
+-1.87 0.55 -0.75 0.02 0 1.13 1.54 -0.07 8.36 0.41 0 -28.05 -0.57 -0.43 -0.28 -0.44 
+-5.09 -6.59 2.61 -4.54 5.77 -2.46 3.69 -4.02 -0.12 -3.02 2.32 -1.69 4.55 -2.89 0.98 -4.79 
+-0.93 -5.01 -0.26 -0.48 0.63 0.24 14.09 1.69 1.45 -0.56 5.04 3.13 0.65 4.71 12.67 0.13 
+2.5 0.72 2.13 -0.11 0 -1.55 -5.32 -4.66 10.44 -2.32 2.78 -4.5 4.38 0.41 1.84 0.83 
+-5.34 4.13 0.59 5.64 -7.29 0.37 -2.09 0.11 0 1.55 14.3 -0.76 1.7 -5.27 6.88 -2.71 
+-1.35 3.82 -7.18 4.19 6.32 7.2 12.34 2.04 9.77 3.36 -15.88 1.54 -8.62 -5.05 -12.2 0.65 
+-3.87 -0.37 -0.12 -1.02 -4.52 -7.27 -15.38 -0.43 -3.06 4.32 -6.62 2.63 0.7 6.88 -6.3 3.11 
+-7.57 2.08 -6.73 2.61 -4.71 4.36 0.29 0.52 0 28.05 4.38 0.22 3.45 1.73 13.76 3.78 
+1.06 0.93 0 -2.06 -9.72 -4.11 2.15 -2.73 3.77 0.91 3.8 5.93 0 2.06 5.44 4.75 
+3.04 0.26 0.33 0.02 0 -1.36 8.16 -5.1 3.93 0.78 2.95 3.8 -15.04 0.52 0 1.36 
+16.17 0.65 3 0.02 6.18 -3.67 -5.08 -5.99 -15.12 -2.15 -3.71 -0.12 -11.35 -2.65 -8.66 -2.11 
+-8.89 -0.56 0.48 -0.85 0 -7.4 2.23 -8.42 11.81 0.39 1.93 -6.29 -0.93 -1.82 3.32 0.78 
+-0.06 1.54 2.19 6.59 7.77 0.11 5.54 -5.25 0.41 -1.05 -6.25 -6.45 -4.43 -6.01 3.64 -0.17 
+0 -3.37 -0.32 -1.37 5.9 -1.91 -3.25 3.25 -2.32 0.02 0 3.37 7.73 -0.39 0 -7.6 
+1.58 -4.53 4.97 0.11 1.41 2.34 -7.96 2.08 0 7.6 0.61 -0.04 4.58 -0.07 2.67 3.45 
+1.61 4.27 10.94 1.02 2.86 -6.2 12.32 -1.13 -3.8 4.01 -7.92 4.69 -7.49 4.75 -7.14 4.93 
+-7.37 4.93 -7.99 -0.04 -9.27 -1.95 -9.94 2.13 -2.47 0.44 -7.09 1.26 0 7.4 2.54 -4.43 
+8 -3.82 13.74 0.82 0.48 0.04 15.55 0.24 6.38 -5.68 8.09 -4.69 9.48 -4.28 6.03 -5.59 
+11.88 -4.06 2.3 -0.3 11.72 -3.36 0 -6.49 -6.32 -0.76 -6.18 -0.75 -5.62 -0.46 -7.72 -0.61 
+-3.69 -4.1 5.95 -4.02 0 -7.66 -10.87 -3.6 -3.67 -0.33 -9.66 -0.91 -10.04 -4.86 -1.17 -0.61 
+-8.23 -5.23 -0.11 -0.58 1.82 -1.39 5.55 -1.02 8.48 -2.69 -0.54 -0.84 -2.15 -3.26 -4.52 -1.8 
+-0.15 -2.19 P
+0.28 -3.43 -8.07 -3.54 -0.07 -0.04 -1.02 -0.13 -6.29 -3.04 4.01 -2.84 -8.61 -1.28 -0.26 -0.04 
+-13.5 -0.7 -2.52 -0.43 2.95 -1.34 0.37 -0.02 0 -1.84 -2.04 -1.13 -11.37 -1.06 -2.41 -0.17 
+0.17 -1.76 2.34 -0.52 8.79 -0.52 4.95 0.41 1.82 1.11 0.15 2.29 -2.26 1.28 -0.16 0.09 
+0 1.84 13.42 -0.5 6.55 -1.32 5.55 -3.37 0.04 -2.97 -0.65 -2.84 -0.13 -2.93 2.5 -3.32 
+1.95 -0.72 6.51 -4.96 0.95 -3.73 1.22 -3.71 1.45 -0.8 5.3 -5.9 0.67 -4.36 -0.09 -4.21 
+-10.63 1.08 1.48 -4.96 4.3 -3.04 6.86 -3.3 6.12 -1.32 9.37 -2.69 -5.87 7.55 -9.81 5.79 
+10.77 -4.34 12.29 -5.6 8.22 -7.04 -4.1 -3.32 0.09 -6.09 -12.83 5.08 -4.43 0.58 -9.66 3.11 
+-1.72 -0.91 -3.86 -2.7 -0.55 -2.32 6.56 -8.15 -3.8 -3.21 0.16 -2.18 2.84 -0.45 5.04 2.37 
+5.49 2.06 4.55 2.89 -0.76 6.62 6.45 -1.39 0 -3.11 1.41 -3.86 10.83 -7.36 7.4 -3.34 
+-5.23 5.55 -10.22 8.07 -4.19 0.93 0 3.11 6.53 -1.39 0.05 -0.05 6.2 2.11 11.11 -1.45 
+0.89 0.09 3.47 4.25 0.06 2.3 -6.64 7.47 6.94 2.17 -1.21 6.32 -4.04 5.09 -12.8 5.02 
+-6.75 4.93 8.05 -0.76 12.89 -5 2.67 1.61 10.87 1.15 1.61 1.04 3.41 2.67 -2.28 4.58 
+-1.41 2.23 -5.01 6.88 0.48 5.08 0.65 5.04 -5.42 6.27 2.14 4.71 -2.43 5.49 -2.46 2.65 
+-2.82 3.04 -3.58 2.56 -4.67 3 0.04 4.96 -2.32 0.93 -9.85 3.91 -3.3 0.06 -3.34 -0.13 
+-10 -0.37 -0.39 0.11 -10.87 2.47 -0.11 0.02 -6.79 2.87 -1.73 -0.07 1.06 0.87 11.98 2.78 
+2.91 0.43 0 -4.01 -0.74 -2.04 2.75 -0.63 9.55 1.89 -11.57 0.79 0 4.01 9.68 1.41 
+11.09 3.39 1.96 1.69 -6.34 3.28 0 7.66 0.76 -0.5 3.88 -5.1 7.38 -4.75 -5.62 -4.73 
+-4.6 -1.61 7.54 -2.23 11.74 2.41 13.19 0.11 13.76 -1 1.04 2.37 -2.34 6.45 -2.06 6.53 
+-9.91 6.13 -6.54 6.09 -4.62 0.54 0 6.49 1.52 -0.43 8.9 -2.89 5.44 -2.43 8.86 -6.49 
+5.19 -3.75 0 -27.47 -6.62 -0.91 -0.21 -5.86 0.13 -0.07 0 -5.58 -0.3 -0.08 0.46 -0.26 
+0.91 0.09 -1.06 0.26 0 5.58 13.48 -7.14 3.8 4.62 0 -15.58 -3.67 -1.47 5.38 -5.26 
+4.04 3.2 -5.75 3.54 0 15.58 0.41 0.5 -3.93 6.75 -3.34 1 -3.71 1.11 0 27.47 
+4.21 -3.06 2.58 -6.92 6.05 -7.09 3.78 -7.04 -0.82 -6.49 1.54 -1.11 0 -4.86 -0.33 -0.65 
+0.91 -0.69 0.67 0.43 -1.25 0.91 0 4.86 9.82 -7.23 -6.98 -4.36 -8.84 0.69 9.57 -8.09 
+2.32 -1.46 14.02 -4.96 14.45 -7.92 2.06 -1.39 -1.82 0.22 -12.89 1.28 -13.02 1.33 -5.6 0.39 
+6.32 -4.64 10.05 -6.86 -9.36 1 -6.68 -2.21 -0.58 -6.14 -0.22 -6.34 -5.47 -4.23 3.59 -8.01 
+-6.08 -3.78 3.38 -8.36 0.91 -7.44 -6.95 -3.14 -6.23 -2.35 -1.06 -0.39 -4.32 -4.41 1.06 -2.65 
+12.15 -6.16 -2.45 -5.96 -1.8 -0.26 -8.96 0.13 -4.62 -4.45 -6.43 0.76 -10.18 8.38 -6.12 0.39 
+0.84 -6.14 10.16 -8.2 0.35 -2.39 -2.63 0.13 -2.32 0.24 -5.8 0.55 -7.05 2.73 -11.39 6.9 
+-2.34 0.37 0.76 -1.73 8.7 -9.16 7.12 -10.43 4.97 -7.23 -7.83 5.06 -12.29 6.46 -1.17 0.79 
+-0.18 -1.76 p
+4.32 -11.89 0.02 0 -0.05 0 -13.71 5.75 -0.08 0.02 -0.02 -0.09 0.24 -10.27 -0.37 -3.6 
+-3.04 -3.11 -6.25 -3.19 -5.49 -0.89 -2.47 0.22 -9.22 1.58 -6.43 3.17 -4.53 1.82 -6.84 -1.41 
+-7.81 0.54 -7.72 0.79 -6.54 -1.52 -2.97 0.02 -3.45 10.33 -6.34 3.58 -4.45 -5.4 -0.13 -0.67 
+-4.38 -5.82 -5.75 -3.78 -1.23 -3.26 -2.25 -11.11 -0.14 -0.15 -0.21 0.11 -8.46 7.3 -0.85 -8.31 
+-4.23 -5.88 -7.62 0.91 -1.45 3.97 0.8 2.61 6.17 7.79 0.8 0.33 0 -6.05 -5.4 -4.54 
+6.27 -1.84 1.78 2.43 -2.65 3.95 0 6.05 1.41 0.56 4.25 1.89 0.98 9.27 1.41 10.27 
+0.15 0.54 4.01 6.38 2.06 5.2 1.37 2.11 4.82 2.22 1.87 8.14 0 0.3 2.91 0.43 
+2.32 -0.15 1.15 1.11 2.95 1.37 0.44 -0.35 9.01 -6.23 0.91 -0.02 0 -1.54 -5.36 -0.95 
+-5.75 -0.09 -6.08 0.91 -2.56 -2.93 -1.26 -1.43 -4.77 -2.43 -0.09 -0.13 -2.47 -6.23 -0.72 -1.84 
+-2.19 -3.47 -1.57 -5.73 -0.71 -5.21 3.36 -6.3 2.56 7.1 1.34 3.71 5.05 4.36 0.5 3.84 
+3.39 2.78 5.53 1.5 5.08 2.36 5.4 -2 2.39 -1.02 0.15 1.76 1.2 7.29 -1.32 4.13 
+-1.11 0.02 0 1.54 5.12 -0.11 4.34 2.58 2.56 0.09 5.08 -2.28 0 -9.01 0.34 -10.52 
+10.98 -7.16 -0.2 11.35 -10.01 5.7 -1.12 0.63 0 9.01 0.28 -0.13 6.86 -4.58 6.64 -4.5 
+0.07 7.68 0.39 0.48 4.36 2.02 0.76 0.11 -0.11 0.24 3.04 4.21 0.89 6.14 1.8 1 
+0 -8.01 -1.32 -0.56 -0.3 -0.43 2.47 -1.89 -0.84 2.88 0 8.01 2.63 1.5 -1.83 5.55 
+-7.57 2.71 -4.53 3.34 -10.16 7.42 -1.89 2.91 -0.89 5.12 -3 2.76 -2.32 4.86 3.41 1.49 
+1.49 -0.48 0 -0.41 -3.69 -1.41 1.71 -3.54 7.62 -7.09 -1.34 -1.08 -1.63 -1.3 0.98 -1.5 
+6.98 -4.95 -1.86 6.49 -1.48 1.32 -4.45 7.32 1.17 3.25 -1.58 1.69 -0.96 0.31 -1.48 0.5 
+0 0.41 2.76 -0.89 2.73 -2.95 -1.43 -3.13 3.71 -6.11 6.45 -5.91 1.15 -3.58 7.51 -3.28 
+7.09 0.07 1.25 4.62 3.71 2.71 4.21 2.45 -8.18 8.45 -8.62 6.05 -1.32 2.41 -0.18 2.34 
+1.58 -0.34 11.75 -2.11 0.39 4.01 -4.02 5.64 -2.56 2.52 -1.19 2.59 -0.95 3.82 -4.26 4.61 
+-3.71 2.47 -1.67 1.99 -2.28 3.45 0.13 2.89 0.56 2.8 -0.09 2.9 -9.98 3.43 -9.29 -1.78 
+-0.09 -2.32 -3 -1.97 -0.78 -0.04 -13.76 0.96 -4.25 0.91 -0.15 1.69 4.25 0.35 9.48 0.91 
+3.58 2.02 -4.77 2.2 4.27 0.76 13.33 1.34 2.69 0.41 -3.52 2.09 -0.52 0.54 0.11 0.52 
+3.59 2.37 8.48 1.67 5.29 2.15 2.2 3.49 -0.05 3.47 -0.02 2.3 1.67 1.52 -3.23 0.7 
+-3.25 1.98 -3.63 2.95 0.39 2.86 2.58 1.67 7.12 3.76 7.4 4.05 -11.94 0.28 -1.87 0.57 
+-3.43 3.43 -5.95 2.43 -11.72 -1.4 -8.27 -3.41 2.74 6.08 0.61 0.39 0.24 5.21 -2.28 4.17 
+-4.36 2.99 -3.8 2.78 -0.3 0.56 -5.73 2.04 -5.27 2.5 -1.76 7.12 -6.95 1.28 -6.64 1.61 
+-6.32 2.41 -7.12 0.8 -7.25 0.17 -7.16 -0.11 -7.03 1.02 -3.73 0.91 -3.54 1.76 -8.07 4.18 
+-6.45 1.15 -2.8 3.65 p f*
+255 135 0 rG
+2456.86 756.95 -4.32 -4.36 6.25 2.11 2.75 1.54 1.46 1.74 1.8 2.84 -0.93 -0.45 0 -0.22 
+-3.02 -3.82 -7.31 -3.11 3.62 3.67 5.8 2.82 0.91 0.43 0 0.22 -7.01 -3.41 f*
+255 203 0 rG
+2457.16 756.88 -3.62 -3.67 7.31 3.11 3.02 3.82 -0.91 -0.43 0 -0.21 -2.5 -3.11 -5.95 -2.54 
+2.93 2.99 4.55 2.2 0.96 0.46 0 0.21 -5.8 -2.82 f*
+0 255 r6
+2457.45 756.83 -2.93 -2.99 5.95 2.54 2.5 3.11 -0.96 -0.46 0 -0.2 -1.93 -2.41 -4.58 -1.97 
+2.26 2.32 3.32 1.61 0.93 0.45 0 0.2 -4.55 -2.2 f*
+110 210 9 rG
+2457.75 756.77 -2.26 -2.32 4.58 1.97 1.93 2.41 -0.93 -0.45 0 -0.22 -1.37 -1.67 -3.23 -1.41 
+1.59 1.65 2.06 1 0.96 0.43 0 0.22 -3.32 -1.61 f*
+7 193 59 rG
+2458.05 756.73 -1.59 -1.65 3.23 1.41 1.37 1.67 -0.96 -0.43 0 -0.2 -0.8 -0.99 -1.87 -0.81 
+0.91 0.96 0.82 0.39 0.93 0.46 0 0.2 -2.06 -1 f*
+87 0 136 rG
+2458.36 1632.88 -1.8 1.52 2.43 -0.04 1 -0.7 -1.63 -0.78 f*
+2 239 204 rG
+2458.36 756.68 -0.91 -0.96 1.87 0.81 0.8 0.99 -0.93 -0.46 0 -0.19 -0.24 -0.28 -0.54 -0.24 
+0.26 0.28 0.52 0.24 0 0.19 -0.82 -0.39 f*
+0 155 255 rG
+2458.66 756.64 -0.26 -0.28 0.54 0.24 0.24 0.28 -0.52 -0.24 f*
+2465.19 1501.65 -5.34 7.29 6.25 9.25 3.43 -9.59 -4.35 -6.95 f*
+255 203 0 rG
+2465.78 1772.66 -1.45 0.26 1.26 0.93 8.1 0.5 8.09 3.14 0 -3.8 -5.12 -0.37 5.08 -0.58 
+0.74 0.54 -0.69 0.41 0 3.8 0.21 0.09 7.36 -4.55 0.22 -1.35 3.11 1.15 7.09 7.21 
+-7.98 5.36 -0.71 0.39 -4.88 2.71 6.2 0.48 10.29 1.21 7.29 2.78 0 -10.21 -10.13 -2.71 
+7.29 -4.6 7.75 2.69 -4.91 4.63 0 10.21 2.32 0.89 2.32 0.13 2.11 -0.74 -1.09 -7.46 
+2.32 -6.43 10.14 0.61 10.05 -0.44 2.3 -7.05 -9.33 -2.13 -9.01 0.04 -2.17 -1.19 -1.74 -5.43 
+6.64 -2.21 2.17 -2.28 -3.36 0.54 -6.75 1.64 -0.56 0.24 -4.71 4.69 -7.51 0.87 -6.95 2.87 
+-4.73 -5.21 -3.91 -0.13 -3.15 0.52 -3.91 2.15 -7.57 2.91 -8.12 2.28 f*
+189 0 54 rG
+2469.95 755.45 -0.2 -5.54 3.14 -0.28 3.56 3.88 2.75 -2.21 1.17 3.95 -1.63 3.61 0 -1.8 
+0.82 -1.83 -0.54 -1.82 -1.5 1.8 1.21 1.84 0 1.8 -0.17 0.37 -1.85 -2.28 -1.09 4.08 
+-0.08 0 0 -0.37 0.93 -5.43 -3.52 -5.23 -3.02 0.41 0.18 5.02 3.86 4.96 1.39 0.24 
+0.18 0.02 0 0.37 -1.37 -0.11 -4.25 -5.47 f*
+255 35 0 rG
+2470.14 755.43 -0.18 -5.02 3.02 -0.41 3.52 5.23 -0.93 5.43 -0.18 -0.02 0 -0.74 0.82 -4.67 
+-3.04 -4.51 -2.78 0.7 0.13 4 3.08 3.95 1.61 0.5 0.18 0.04 0 0.74 -1.39 -0.24 
+-3.86 -4.96 f*
+255 135 0 rG
+2470.53 755.41 -0.13 -4 2.78 -0.7 3.04 4.51 -0.82 4.67 -0.18 -0.04 0 -0.7 0.7 -3.93 
+-2.56 -3.79 -2.54 0.98 0.11 2.97 2.28 2.93 1.87 0.78 0.15 0.06 0 0.7 -1.61 -0.5 
+-3.08 -3.95 f*
+255 203 0 rG
+2470.92 755.38 -0.11 -2.97 2.54 -0.98 2.56 3.79 -0.7 3.93 -0.15 -0.06 0 -0.67 0.54 -3.2 
+-2.06 -3.08 -2.3 1.28 0.07 1.95 1.48 1.89 2.1 1.06 0.18 0.09 0 0.67 -1.87 -0.78 
+-2.28 -2.93 f*
+0 255 r6
+2471.31 755.38 -0.07 -1.95 2.3 -1.28 2.06 3.08 -0.54 3.2 -0.18 -0.09 0 -0.67 0.41 -2.43 
+-1.58 -2.34 -2.07 1.56 0.02 0.91 0.69 0.87 2.32 1.34 0.2 0.09 0 0.67 -2.1 -1.06 
+-1.48 -1.89 f*
+110 210 9 rG
+2471.68 755.36 -0.02 -0.91 2.07 -1.56 1.58 2.34 -0.41 2.43 -0.2 -0.09 0 -0.65 0.3 -1.67 
+-1.08 -1.65 -1.76 1.74 2.37 1.48 0.17 0.11 0 0.65 -2.32 -1.34 -0.69 -0.87 f*
+7 193 59 rG
+2474.52 756.82 -2.37 -1.48 1.76 -1.74 1.08 1.65 -0.3 1.67 -0.17 -0.11 0 -0.63 0.17 -0.93 
+-0.61 -0.91 -0.98 0.95 1.24 0.79 0.17 0.11 0 0.63 f*
+2 239 204 rG
+2474.35 756.08 -1.24 -0.79 0.98 -0.95 0.61 0.91 -0.17 0.93 -0.17 -0.11 0 -0.63 0.04 -0.2 
+-0.13 -0.17 -0.2 0.2 0.29 0.17 0 0.63 f*
+0 155 255 rG
+2474.35 755.45 -0.29 -0.17 0.2 -0.2 0.13 0.17 -0.04 0.2 f*
+255 135 0 rG
+2481.73 1772.75 -5.08 0.58 5.13 0.37 0.69 -0.41 -0.74 -0.54 f*
+255 35 0 rG
+2478.75 757.05 -1.21 -1.84 1.5 -1.8 0.54 1.82 -0.82 1.83 f*
+189 0 54 rG
+2481.34 754.67 -1.63 -5.45 4.41 -5.18 4.29 0.02 3.82 0.89 1.88 2.86 -0.5 2.13 -3.61 5.86 
+-5.9 5.25 -1.33 0.11 0 -0.35 0.37 -0.06 1.32 -0.24 5.34 -4.73 2.43 -5.68 -0.15 -0.29 
+-0.56 -3.82 -3.32 -1.52 -4.25 0.13 -3.93 4.62 1.43 4.86 2.35 0.39 -0.09 0.87 -0.93 5.46 
+0 0.35 -0.2 0 1 -5.82 0.05 -0.43 -2.3 -0.24 f*
+255 35 0 rG
+2481.46 754.08 -1.43 -4.86 3.93 -4.62 4.25 -0.13 3.32 1.52 0.56 3.82 0.15 0.29 -2.43 5.68 
+-5.34 4.73 -1.32 0.24 0 -0.64 2.09 -0.69 4.16 -3.69 1.89 -4.45 -0.87 -1.61 -0.26 -1.58 
+-2.34 -2.8 -4.17 0.42 -2.99 3.53 1.08 3.69 2.43 0.67 -0.2 1.76 -0.82 4.75 0 0.64 
+-0.37 0.06 0.93 -5.46 0.09 -0.87 -2.35 -0.39 f*
+255 135 0 rG
+2481.75 752.93 -1.08 -3.69 2.99 -3.53 4.17 -0.42 2.34 2.8 0.26 1.58 0.87 1.61 -1.89 4.45 
+-4.16 3.69 -1.7 0.57 0 -0.57 0.37 -0.17 2.08 -0.91 3.02 -2.62 1.33 -3.21 -1.28 -2.62 
+-4.54 5.18 0 -2.3 0.37 -0.26 4.12 -2.93 -1.56 -3.45 -4.12 0.71 -2.02 2.41 0.74 2.52 
+2.47 1 0 2.3 -0.28 0.33 -0.7 4.04 0 0.57 -0.39 0.13 0.82 -4.75 0.2 -1.76 
+-2.43 -0.67 f*
+255 203 0 rG
+2482.05 751.75 -0.74 -2.52 2.02 -2.41 4.13 -0.71 1.56 3.45 -4.12 2.93 0 -0.59 0.37 -0.26 
+2.97 -2.12 -1.17 -2.59 -4.04 1.02 -1.08 1.3 0.39 1.34 2.56 1.3 0 0.59 -0.37 0.26 
+-2.47 -1 f*
+0 255 r6
+2482.33 750.61 -0.39 -1.34 1.08 -1.3 4.04 -1.02 1.17 2.59 -2.97 2.13 0 -0.61 0.34 -0.24 
+1.87 -1.33 -0.78 -1.71 -3.97 1.34 -0.13 0.18 0.05 0.17 2.63 1.59 0 0.61 -0.37 0.26 
+-2.56 -1.3 f*
+110 210 9 rG
+2482.64 749.46 -0.05 -0.17 0.13 -0.18 3.97 -1.34 0.78 1.71 -1.87 1.33 0 -0.61 1.09 -0.76 
+-0.37 -0.82 -2.11 0.72 1.39 0.87 0 0.61 -0.34 0.24 -2.62 -1.59 f*
+255 203 0 rG
+2483.92 759.25 -0.37 0.17 0.7 -4.04 0.28 -0.33 4.54 -5.18 1.28 2.63 -1.33 3.21 -3.02 2.63 
+-2.08 0.91 0 -0.52 0.37 -0.2 2.5 -1.25 1.82 -1.61 0.8 -1.96 -0.93 -2.89 -3.97 4.56 
+-0.59 3.34 0 0.52 f*
+0 255 r6
+2484.29 758.53 -0.37 0.2 0.59 -3.34 3.97 -4.56 0.93 2.89 -0.8 1.96 -1.82 1.61 -2.5 1.25 
+0 -0.5 0.39 -0.21 2.89 -1.63 0.65 -0.54 0.26 -0.7 -0.59 -3.15 -3.12 3.61 -0.48 2.62 
+0 0.5 f*
+7 193 59 rG
+2485.61 750.2 -1.39 -0.87 2.11 -0.72 0.37 0.82 -1.09 0.76 f*
+110 210 9 rG
+2484.68 757.81 -0.39 0.21 0.48 -2.62 3.13 -3.61 0.59 3.15 -0.26 0.7 -0.65 0.54 -2.89 1.63 
+0 -0.48 0.39 -0.21 2.61 -1.52 -0.37 -2.82 -2.28 2.65 -0.35 1.9 0 0.48 f*
+7 193 59 rG
+2485.07 757.12 -0.39 0.21 0.35 -1.9 2.28 -2.65 0.37 2.82 -2.61 1.52 0 -0.48 0.39 -0.22 
+1.5 -0.89 -0.24 -1.78 -1.43 1.68 -0.22 1.21 0 0.48 f*
+2 239 204 rG
+2485.46 756.42 -0.39 0.22 0.22 -1.21 1.43 -1.68 0.24 1.78 -1.5 0.89 0 -0.48 0.78 -0.46 
+-0.08 -0.75 -0.61 0.71 -0.08 0.5 0 0.48 f*
+0 155 255 rG
+2486.24 755.49 -0.78 0.46 0.08 -0.5 0.61 -0.71 0.08 0.75 f*
+189 0 54 rG
+2487.54 760.85 -0.61 0.39 3.5 -5.4 5.45 -5.69 9.2 -4.62 -3.38 5.34 -7.21 5.43 -6.95 4.56 
+0 -0.2 1.22 -0.8 5.49 -3.58 7.25 -5.43 3.12 -4.96 -8.55 4.29 -5.4 5.69 -3.12 4.8 
+0 0.2 f*
+110 210 9 rG
+2491.06 1781.08 -4.09 -0.2 3.91 -0.85 0.83 0.61 -0.65 0.43 f*
+255 35 0 rG
+2488.76 759.85 -1.22 0.8 3.13 -4.8 5.4 -5.69 8.55 -4.29 -3.12 4.96 -7.25 5.43 -5.49 3.58 
+0 -0.39 1.21 -0.8 3.82 -2.45 7.29 -5.42 2.63 -4.21 -7.21 3.64 -5.4 5.68 -2.34 3.56 
+0 0.39 f*
+255 135 0 rG
+2489.97 758.66 -1.21 0.8 2.34 -3.56 5.4 -5.68 7.21 -3.64 -2.63 4.21 -7.29 5.42 -3.82 2.45 
+0 -0.37 1.26 -0.8 2.08 -1.35 7.36 -5.4 2.13 -3.45 -5.88 2.97 -5.36 5.68 -1.58 2.34 
+0 0.37 f*
+0 155 255 rG
+2493.55 1614.87 -4.47 7.83 0.57 8.34 2.41 1.02 2.54 0.41 2.52 0.48 2.5 0.54 2.54 0.48 
+2.56 0.46 0.8 -0.78 0 -0.52 -2.78 -0.26 -2.64 -0.34 -2.56 -0.52 -2.58 -0.5 -2.61 -0.41 
+-2.3 -1.65 -0.46 -6.66 3.59 -6.25 2.28 -3.12 3.66 -5.39 4.34 -0.97 0.15 7.68 0.13 2.13 
+3.32 0.78 2.1 -1.69 5.25 -5.56 -0.89 6.68 -0.37 3.04 -1.8 7.16 -5.06 5.06 -0.78 0.8 
+0 0.52 6.25 -6.25 2.17 -8.64 0.17 -1.52 1.15 -8.55 -6.7 7.1 -1.04 0.87 -3.39 -0.79 
+-0.07 -1.06 -0.2 -9.05 -4.16 0.17 -4.99 7.36 -1.15 1.58 f*
+2 239 204 rG
+2493.17 1616.52 -3.59 6.25 0.46 6.66 2.3 1.65 2.61 0.41 2.58 0.5 2.56 0.52 2.64 0.34 
+2.78 0.26 0.78 -0.8 0 -0.52 -2.36 -0.02 -0.59 0 -2.8 -0.24 -2.62 -0.5 -2.63 -0.52 
+-2.64 -0.39 -2.2 -2.32 -0.34 -5 2.67 -4.64 3.43 -4.69 2.32 -3.41 4.49 -1.78 0.13 6.34 
+0.2 3.19 3.26 0.8 3.16 -2.54 3.82 -4.02 -0.67 4.84 -0.52 4.55 -1.43 5.67 -4.67 4.66 
+0 0.52 5.06 -5.06 1.8 -7.16 0.38 -3.04 0.89 -6.68 -5.25 5.56 -2.1 1.69 -3.32 -0.78 
+-0.13 -2.13 -0.15 -7.68 -4.34 0.97 -3.66 5.39 -2.28 3.13 f*
+255 203 0 rG
+2491.23 757.49 -1.26 0.8 1.58 -2.34 5.36 -5.68 5.88 -2.97 -2.13 3.45 -7.36 5.4 -2.08 1.35 
+0 -0.35 1.32 -0.85 0.3 -0.19 7.4 -5.43 1.63 -2.67 -4.54 2.3 -5.36 5.68 -0.76 1.15 
+0 0.35 f*
+7 193 59 rG
+2492.77 1618.17 -2.67 4.64 0.34 5 2.2 2.32 2.64 0.39 2.63 0.52 2.63 0.5 2.8 0.24 
+0.59 0 0 -1.11 -2.43 -0.09 -0.48 -0.02 -2.7 -0.48 -2.67 -0.52 -2.73 -0.41 -2.09 -2.97 
+-0.22 -3.3 1.76 -3.08 4.55 -6.21 1 -1.45 4.67 -2.56 0.08 4.97 0.26 4.25 3.19 0.82 
+4.23 -3.38 2.37 -2.5 -0.41 3 -0.72 6.05 -1.07 4.23 -3.45 3.45 -3.16 0.2 0 1.11 
+2.36 0.02 4.67 -4.66 1.43 -5.67 0.52 -4.55 0.67 -4.84 -3.82 4.02 -3.16 2.54 -3.26 -0.8 
+-0.2 -3.19 -0.13 -6.34 -4.49 1.78 -2.32 3.41 -3.43 4.69 f*
+110 210 9 rG
+2492.38 1619.79 -1.76 3.08 0.22 3.3 2.09 2.97 2.73 0.41 2.67 0.52 2.7 0.48 0.48 0.02 
+0 -1 -2.78 -0.46 -2.72 -0.54 -2.78 -0.39 -1.97 -3.66 -0.11 -1.61 0.85 -1.48 5.36 -7.29 
+0.45 -0.43 4.37 -2.89 0.08 3.63 0.31 5.32 3.12 0.82 5.3 -4.21 0.91 -0.95 -0.18 1.15 
+-0.89 7.55 -0.7 2.76 -2.25 2.25 -3.34 0.41 -2.58 0.02 -0.46 0 0 1 2.43 0.09 
+3.16 -0.2 3.45 -3.45 1.07 -4.23 0.72 -6.05 0.41 -3 -2.37 2.5 -4.23 3.38 -3.19 -0.82 
+-0.26 -4.25 -0.08 -4.97 -4.67 2.56 -1 1.45 -4.55 6.21 f*
+0 255 r6
+2492 1621.44 -0.85 1.48 0.11 1.61 1.97 3.66 2.78 0.39 2.72 0.54 2.78 0.46 0.46 0 
+0 -0.98 -2.82 -0.43 -2.78 -0.56 -2.84 -0.39 -1.84 -4.23 5.16 -6.95 2.17 -2.15 2.75 -1.8 
+0.02 2.28 0.39 6.36 3.05 0.87 5.47 -3.82 -0.65 7.7 -0.33 1.28 -1.04 1.07 -3.56 0.63 
+-2.71 0.13 -0.45 0.02 0 0.98 2.58 -0.02 3.34 -0.41 2.25 -2.25 0.7 -2.76 0.89 -7.55 
+0.18 -1.15 -0.91 0.95 -5.3 4.21 -3.12 -0.82 -0.31 -5.32 -0.08 -3.63 -4.37 2.89 -0.45 0.43 
+-5.36 7.29 f*
+2492.55 756.29 -1.32 0.85 0.76 -1.15 5.36 -5.68 4.54 -2.3 -1.63 2.67 -7.4 5.43 -0.3 0.19 
+0 -0.37 2.5 -1.82 4.8 -3.5 1.15 -1.91 -3.23 1.67 -5.21 5.55 0 0.37 f*
+255 203 0 rG
+2496.83 1616.04 -5.16 6.95 1.84 4.23 2.84 0.39 2.78 0.56 2.82 0.43 0.45 -0.02 0 -0.95 
+-2.89 -0.42 -2.82 -0.58 -2.88 -0.37 -1.39 -3.17 3.84 -5.18 3.93 -3.82 1.13 -0.71 0.02 0.91 
+0.43 7.42 3 0.89 4.14 -1.37 0.2 5.36 -3.41 0.76 -2.82 0.24 -0.48 0.05 0 0.95 
+2.71 -0.13 3.56 -0.63 1.04 -1.07 0.33 -1.28 0.65 -7.7 -5.47 3.82 -3.05 -0.87 -0.39 -6.36 
+-0.02 -2.28 -2.75 1.8 -2.17 2.15 f*
+255 135 0 rG
+2496.27 1617.91 -3.84 5.18 1.39 3.17 2.88 0.37 2.82 0.58 2.89 0.42 0.48 -0.05 0 -0.93 
+-2.98 -0.41 -2.86 -0.59 -2.95 -0.36 -0.92 -2.11 2.54 -3.41 4.82 -4.13 0.85 7.01 2.93 0.91 
+2.8 1.09 0.07 1.37 -0.89 0.19 -2.95 0.37 -0.45 0.07 0 0.93 2.82 -0.24 3.41 -0.76 
+-0.2 -5.36 -4.14 1.37 -3 -0.89 -0.43 -7.42 -0.02 -0.91 -1.13 0.71 -3.93 3.82 f*
+110 210 9 rG
+2495.05 754.1 -2.5 1.82 5.21 -5.55 3.23 -1.67 -1.15 1.91 -4.8 3.5 0 -0.41 2.56 -1.82 
+1.81 -1.3 0.69 -1.13 -1.91 0.98 -3.15 3.28 0 0.41 f*
+255 35 0 rG
+2495.72 1619.77 -2.54 3.41 0.92 2.11 2.95 0.36 2.86 0.59 2.98 0.41 0.45 -0.07 0 -0.93 
+-3.02 -0.36 -2.93 -0.61 -3.02 -0.37 -0.43 -1.02 1.24 -1.64 3.77 -1.43 2.04 3.43 2.86 0.93 
+1.09 0.87 -1.39 0.2 -0.22 0.02 0 0.93 2.95 -0.37 0.89 -0.19 -0.07 -1.37 -2.8 -1.09 
+-2.93 -0.91 -0.85 -7.01 -4.82 4.13 f*
+189 0 54 rG
+2495.18 1621.64 -1.24 1.64 0.43 1.02 3.02 0.37 2.93 0.61 3.02 0.36 0.22 -0.02 0 -0.46 
+-3.04 -0.37 -2.96 -0.61 -3.03 -0.37 -0.2 -0.48 0.57 -0.79 3.28 -0.11 2.63 1.65 2.82 0.93 
+0.13 0.11 -0.19 0.02 0 0.46 1.39 -0.2 -1.09 -0.87 -2.86 -0.93 -2.04 -3.43 -3.77 1.43 f*
+87 0 136 rG
+2494.9 1622.57 -0.57 0.79 0.2 0.48 3.03 0.37 2.96 0.61 3.04 0.37 0.19 -0.02 -0.13 -0.11 
+-2.82 -0.93 -2.62 -1.65 -3.28 0.11 f*
+7 193 59 rG
+2497.61 751.87 -2.56 1.82 3.15 -3.28 1.91 -0.98 -0.69 1.13 -1.81 1.3 0 -0.37 1.39 -0.98 
+0.21 -0.37 -0.61 0.31 -1 1.04 0 0.37 f*
+0 155 255 rG
+2503.73 1437.76 -7.08 5.62 6.1 8.01 0.5 0.54 0 -7.32 -0.76 -1 0.89 -0.68 0.66 0.76 
+-0.79 0.91 0 7.32 2.67 2.95 5.77 6.92 9.16 4.32 0.46 0.09 0 -3.41 -8.55 -7.49 
+10.22 -4.91 8.36 6.58 -9.57 5.55 -0.45 0.26 0 3.41 8.94 1.43 7.66 -9.89 -5.03 -5.82 
+-9.53 -4.32 -10.37 1.93 -3.8 -5.55 -5.45 -6.23 f*
+255 203 0 rG
+2503.6 1528.6 -6.27 1.84 5.4 4.54 2.65 -3.95 -1.78 -2.43 f*
+189 0 54 rG
+2498.03 755.96 -0.66 0.22 4.8 -5.25 0.32 -0.13 10.37 -3.99 -0.48 2.8 -3.08 2.54 -5.75 2.11 
+-5.54 1.71 0 -0.21 1.32 -0.52 8.55 -3.34 4.26 -4.69 -9.75 3.78 -4.38 4.77 0 0.21 f*
+2 239 204 rG
+2499 750.52 -1.39 0.98 1 -1.04 0.61 -0.31 -0.21 0.38 f*
+255 35 0 rG
+2499.35 755.23 -1.32 0.52 4.38 -4.77 9.75 -3.78 -4.26 4.69 -8.55 3.34 0 -0.34 1.34 -0.52 
+6.64 -2.58 3.39 -3.77 -7.82 3.04 -3.55 3.84 0 0.34 f*
+255 135 0 rG
+2500.7 754.36 -1.34 0.52 3.55 -3.84 7.82 -3.04 -3.39 3.77 -6.64 2.58 0 -0.34 6.05 -2.34 
+2.56 -2.87 -5.91 2.32 -2.71 2.89 0 0.34 f*
+0 255 r6
+2509.96 1782.75 -10.13 -2.71 7.29 -4.6 7.75 2.69 -4.91 4.63 f*
+255 203 0 rG
+2502.04 753.5 -1.34 0.52 2.71 -2.89 5.91 -2.32 -2.56 2.87 -4.71 1.82 0 -0.33 1.37 -0.52 
+2.78 -1.07 1.71 -1.97 -3.99 1.59 -1.87 1.97 0 0.33 f*
+0 255 r6
+2503.41 752.65 -1.37 0.52 1.87 -1.97 3.99 -1.59 -1.71 1.97 -2.78 1.07 0 -0.33 1.37 -0.52 
+0.83 -0.32 0.91 -1.04 -2.13 0.84 -0.98 1.04 0 0.33 f*
+189 0 54 rG
+2503.08 750.26 -0.59 0.24 3.36 -5.27 11.72 -4.23 -4.27 5.38 -10.22 3.88 0 -0.17 1.17 -0.46 
+8.75 -3.32 3.88 -4.93 -10.7 3.88 -3.1 4.82 0 0.17 f*
+2 239 204 rG
+2503.38 1442.95 -0.89 0.68 0.76 1 0.79 -0.91 -0.66 -0.76 f*
+255 35 0 rG
+2504.25 749.63 -1.17 0.46 3.1 -4.82 10.7 -3.88 -3.88 4.93 -8.75 3.32 0 -0.35 1.19 -0.46 
+6.93 -2.63 3.17 -4.03 -8.72 3.19 -2.56 3.93 0 0.35 f*
+110 210 9 rG
+2504.77 751.8 -1.37 0.52 0.98 -1.04 2.13 -0.84 -0.91 1.04 -0.83 0.32 0 -0.32 0.24 -0.09 
+0.11 -0.13 -0.24 0.11 -0.11 0.11 0 0.32 f*
+255 135 0 rG
+2505.45 748.83 -1.19 0.46 2.56 -3.93 8.72 -3.19 -3.17 4.03 -6.93 2.63 0 -0.34 1.2 -0.46 
+5.12 -1.91 2.41 -3.15 -6.73 2.48 -2 3.04 0 0.34 f*
+7 193 59 rG
+2505.01 751.39 -0.24 0.09 0.11 -0.11 0.24 -0.11 -0.11 0.13 f*
+255 203 0 rG
+2506.64 748.03 -1.2 0.46 2 -3.04 6.73 -2.48 -2.41 3.15 -5.12 1.91 0 -0.35 1.21 -0.46 
+3.28 -1.22 1.71 -2.23 -4.77 1.75 -1.43 2.15 0 0.35 f*
+0 255 r6
+2507.86 747.22 -1.21 0.46 1.43 -2.15 4.77 -1.75 -1.71 2.23 -3.28 1.22 0 -0.33 1.21 -0.46 
+1.46 -0.54 1 -1.33 -2.82 1.07 -0.84 1.25 0 0.33 f*
+255 0 r6
+2513.5 1514.32 -5.93 -4.62 8.03 -8.44 1.54 9.35 -3.64 3.71 f*
+110 210 9 rG
+2509.07 746.44 -1.21 0.46 0.84 -1.25 2.82 -1.07 -1 1.33 -1.46 0.54 0 -0.32 0.82 -0.3 
+0.3 -0.41 -0.87 0.32 -0.26 0.39 0 0.32 f*
+7 193 59 rG
+2509.89 745.81 -0.82 0.3 0.26 -0.39 0.87 -0.32 -0.3 0.41 f*
+255 203 0 rG
+2514.58 1546.7 -3.36 6.3 0.71 5.21 1.57 5.73 2.19 3.47 0.72 1.84 0 -4.38 -0.34 -0.55 
+-3 -10.94 -0.02 -0.17 0.11 -0.2 0.09 0.22 3.62 10.07 0.72 1.26 -1.17 0.3 0 4.38 
+2.47 6.23 0.09 0.13 4.77 2.43 1.26 1.43 0 -2.76 -0.7 -0.09 -0.17 -0.09 0.3 -0.24 
+0.57 0.41 0 2.76 2.56 2.93 6.08 -0.91 5.75 0.09 5.36 0.95 1.11 -0.02 1.32 -4.13 
+-1.2 -7.29 -0.15 -1.76 -2.39 1.02 -5.4 2 -5.08 -2.36 -5.53 -1.5 -3.39 -2.78 -0.5 -3.84 
+-5.05 -4.36 -1.34 -3.71 -2.56 -7.1 f*
+189 0 54 rG
+2512.5 751.93 -0.84 0.15 6.16 -4.86 13.52 -3.06 -1.26 2.91 -3.54 2.14 -6.59 1.41 -7.45 1.3 
+0 -0.24 1.7 -0.39 10.7 -2.5 5.54 -4.32 -12.31 2.8 -5.62 4.41 0 0.24 f*
+255 35 0 rG
+2514.2 751.3 -1.7 0.39 5.62 -4.41 12.31 -2.8 -5.54 4.32 -10.7 2.5 0 -0.37 1.71 -0.39 
+8.29 -1.91 4.41 -3.49 -9.85 2.28 -4.55 3.52 0 0.37 f*
+2 239 204 rG
+2522.98 1450.41 -10.22 4.91 8.55 7.49 0.45 -0.26 0 -3.06 -4.32 -3.82 5.16 -2.46 4.23 3.3 
+-4.62 2.71 -0.46 0.26 0 3.06 9.57 -5.55 -8.36 -6.58 f*
+255 135 0 rG
+2513.15 1553.02 -0.11 0.2 0.02 0.17 3 10.94 0.34 0.55 1.17 -0.3 -0.72 -1.26 -3.62 -10.07 
+-0.09 -0.22 f*
+2515.91 750.54 -1.71 0.39 4.55 -3.52 9.85 -2.28 -4.41 3.49 -8.29 1.91 0 -0.35 1.74 -0.39 
+5.84 -1.34 3.29 -2.65 -7.4 1.74 -3.47 2.64 0 0.35 f*
+255 203 0 rG
+2517.64 749.8 -1.74 0.39 3.47 -2.64 7.4 -1.74 -3.29 2.65 -5.84 1.34 0 -0.35 1.73 -0.39 
+3.41 -0.78 2.21 -1.8 -5.01 1.2 -2.34 1.78 0 0.35 f*
+255 0 r6
+2523.5 1504.47 -6.31 -4.78 8.88 -8.68 3.61 10.16 -6.17 3.3 f*
+7 193 59 rG
+2522.61 1453.21 -5.16 2.46 4.32 3.82 0.46 -0.26 0 -3.08 -0.09 -0.09 0.11 -0.04 0.09 0.07 
+-0.11 0.06 0 3.08 4.62 -2.71 -4.23 -3.3 f*
+0 255 r6
+2519.38 749.07 -1.73 0.39 2.34 -1.78 5.01 -1.2 -2.21 1.8 -3.41 0.78 0 -0.33 1.74 -0.39 
+0.95 -0.22 1.15 -0.95 -2.61 0.63 -1.24 0.93 0 0.33 f*
+0 155 255 rG
+2526.46 1647.46 -7.71 6.47 1.26 1.15 1.88 -0.7 0 -0.3 -1.34 -1.19 6.16 -5.21 8.22 -3.45 
+1.67 1.65 -6.38 5.12 -6.44 2.38 -1.89 0.7 0 0.3 8.57 -3.12 7.99 -6.47 -1.76 -1.67 
+-10.24 4.34 f*
+255 203 0 rG
+2520.92 735.5 -1.63 0.37 0.15 -0.61 2.99 -1.28 -1.52 1.52 f*
+110 210 9 rG
+2521.12 748.35 -1.74 0.39 1.24 -0.93 2.61 -0.62 -1.15 0.95 -0.95 0.22 0 -0.32 0.24 -0.07 
+0.08 -0.07 -0.21 0.04 -0.11 0.09 0 0.32 f*
+2 239 204 rG
+2526.71 1647.68 -6.16 5.21 1.34 1.19 1.89 -0.7 0 -0.32 -1.45 -1.22 4.64 -3.93 6.21 -2.61 
+1.58 1.63 -4.78 3.82 -4.34 1.61 -1.86 0.7 0 0.32 6.44 -2.38 6.38 -5.12 -1.67 -1.65 
+-8.22 3.45 f*
+7 193 59 rG
+2521.36 747.96 -0.24 0.07 0.11 -0.09 0.21 -0.04 -0.08 0.07 f*
+110 210 9 rG
+2522.25 1456.01 -0.11 0.04 0.09 0.09 0.11 -0.06 -0.09 -0.07 f*
+7 193 59 rG
+2526.97 1647.92 -4.64 3.93 1.45 1.22 1.86 -0.7 0 -0.33 -1.54 -1.23 3.13 -2.67 4.19 -1.73 
+1.48 1.61 -3.15 2.52 -2.23 0.82 -1.87 0.7 0 0.33 4.34 -1.61 4.78 -3.82 -1.58 -1.62 
+-6.21 2.61 f*
+110 210 9 rG
+2527.23 1648.13 -3.12 2.67 1.54 1.23 1.87 -0.7 0 -0.32 -1.62 -1.29 1.61 -1.37 2.17 -0.89 
+1.39 1.56 -1.54 1.22 -0.93 0.34 -1.07 0.42 0 0.32 2.23 -0.82 3.15 -2.52 -1.48 -1.61 
+-4.19 1.73 f*
+255 135 0 rG
+2524.43 1576.3 -0.3 0.24 0.17 0.09 0.7 0.09 -0.57 -0.41 f*
+0 255 r6
+2527.5 1648.37 -1.61 1.37 1.63 1.29 1.07 -0.42 0 -1.25 -0.91 -0.67 0.09 -0.09 0.14 -0.05 
+0.69 0.81 0 1.25 0.93 -0.34 1.54 -1.22 -1.39 -1.56 -2.17 0.89 f*
+255 203 0 rG
+2527.75 1648.59 -0.09 0.09 0.91 0.67 -0.69 -0.81 -0.14 0.05 f*
+0 155 255 rG
+2530.49 1539.67 -1.91 -5.75 5.84 -7.62 1.57 8.92 -4.71 3.84 0 -1.97 2.73 -2.24 -0.76 -4.45 
+-2.93 3.79 0.96 2.89 0 1.97 -0.79 0.61 f*
+255 0 r6
+2531.27 1537.09 -0.96 -2.89 2.93 -3.79 0.76 4.45 -2.73 2.24 f*
+2536.87 1517.64 -2.93 -4.82 5.82 -5.75 1.11 6.9 -3.99 3.67 f*
+255 203 0 rG
+2534.2 1789.06 -0.08 1.02 0.75 -0.02 1.87 -0.55 -2.54 -0.45 f*
+0 155 255 rG
+2540.61 1531.25 -3.93 -6.92 8.27 -6.49 2.86 8.66 -6.25 4.12 0 -2.3 3.61 -2.39 -1.41 -4.32 
+-4.14 3.23 1.95 3.47 0 2.3 -0.95 0.63 f*
+255 203 0 rG
+2537.48 1673.74 -0.17 1.76 2.41 0.17 11.37 1.06 2.04 1.13 0.16 -0.09 0 -1 -0.28 -0.15 
+-13.26 -1.2 -0.54 -0.04 0.2 -1.82 0.43 -0.08 1.61 -0.09 9.68 1.2 2.37 0.41 0.13 1.61 
+-0.32 0.17 0 1 2.26 -1.28 -0.15 -2.29 -1.82 -1.11 -4.95 -0.41 -8.79 0.52 -2.34 0.52 f*
+2540.69 1751.5 -2.61 4.54 5.09 6.59 0.28 0.44 0.57 0.43 -0.29 -0.52 4.71 -4.36 6.73 -2.61 
+7.57 -2.08 6.3 -3.11 -0.7 -6.88 6.62 -2.62 3.06 -4.32 15.38 0.43 4.52 7.27 0.13 1.02 
+3.87 0.37 12.2 -0.65 8.62 5.05 15.88 -1.54 -9.77 -3.36 -12.34 -2.04 -6.32 -7.2 7.18 -4.19 
+1.35 -3.82 -6.88 2.71 -1.7 5.27 -14.3 0.76 -2.12 0.11 -2.5 -0.72 -12.67 -0.12 -0.65 -4.71 
+-5.04 -3.12 -1.45 0.56 -14.09 -1.69 -0.63 -0.24 0.26 0.48 0.93 5.01 -0.98 4.79 -4.55 2.89 
+-2.32 1.69 0.13 3.02 -3.69 4.02 -5.77 2.46 f*
+255 35 0 rG
+2539.91 734.48 -1.09 -1.61 5.96 -0.13 -0.82 1.21 -4.05 0.52 f*
+255 135 0 rG
+2539.39 1673.57 -0.2 1.82 0.54 0.04 13.26 1.2 0.28 0.15 0.32 -0.17 -0.13 -1.61 -2.37 -0.41 
+-9.68 -1.2 -1.61 0.09 -0.43 0.08 f*
+255 0 r6
+2541.55 1528.32 -1.95 -3.47 4.14 -3.23 1.41 4.32 -3.61 2.39 f*
+0 155 255 rG
+2555.41 1641.55 -8.66 6.88 2.69 1.39 2.84 -0.65 0 -0.59 -3.99 -0.89 7.36 -5.86 9.94 -2.84 
+-0.57 3.67 -5.51 4.21 -4.4 1.04 -2.82 0.67 0 0.59 7.59 -1.76 7.92 -6.1 -0.69 -3.11 
+-11.7 3.34 f*
+2 239 204 rG
+2555.64 1641.84 -7.36 5.86 3.99 0.89 2.82 -0.67 0 -0.61 -3.78 -0.24 -1.52 -0.11 6.08 -4.86 
+8.2 -2.3 -1.87 4.19 -3.07 2.34 -4.04 0.98 0 0.61 4.4 -1.04 5.51 -4.21 0.57 -3.67 
+-9.94 2.84 f*
+255 203 0 rG
+2550.71 1770.01 -2.23 8.42 7.09 -1.26 0 -1 0.32 -1.37 3.24 0.13 -2.05 0.96 -1.52 0.28 
+0 1 2.47 -0.44 9.94 -2.12 9.27 1.95 7.99 0.04 7.38 -4.93 7.14 -4.93 7.49 -4.75 
+7.92 -4.69 3.8 -4.01 -12.32 1.13 -2.86 6.2 -10.94 -1.02 -1.61 -4.27 -2.67 -3.45 -4.58 0.07 
+-0.61 0.04 -7.73 0.39 -3.64 0.17 4.43 6.01 6.25 6.45 -0.41 1.05 -5.54 5.25 -7.77 -0.11 
+-2.19 -6.59 0.06 -1.54 -3.32 -0.78 0.93 1.82 -1.93 6.29 -11.81 -0.39 f*
+7 193 59 rG
+2555.88 1642.1 -6.08 4.86 1.52 0.11 0 -0.85 4.8 -3.84 6.47 -1.8 -3.15 4.73 -0.67 0.5 
+-0.87 0.21 -5.03 0.15 -1.54 0.04 0 0.85 3.78 0.24 4.04 -0.98 3.07 -2.34 1.87 -4.19 
+-8.2 2.3 f*
+255 203 0 rG
+2552.75 1679.73 -2.95 1.34 2.52 0.43 13.5 0.7 0.26 0.04 0 -1 -13.67 -0.04 -0.76 -0.13 
+0.89 -0.39 13.71 -0.2 13.89 -1.34 0.56 0.17 0 -3.79 -0.13 -1.22 0.02 -3.02 -0.79 -2.89 
+-0.13 -2.97 0.96 -1.26 9.03 -0.87 -0.09 3.32 -3.52 3.84 2.89 2.8 -8.25 2.26 0 3.79 
+3.02 0.83 -4.04 1.08 -13.61 0.02 0 1 8.61 1.28 -4.01 2.84 6.29 3.04 1.02 0.13 
+0.07 0.04 0 -2.93 -0.39 -0.18 0.63 -0.49 0.63 0.49 -0.87 0.18 0 2.93 8.07 3.54 
+-0.28 3.43 0.15 2.19 4.52 1.8 2.15 3.26 0 -49.61 -1.05 -1.74 0.26 -0.75 1.29 0.26 
+-0.5 2.23 0 49.61 0.54 0.84 -8.48 2.69 -5.55 1.02 -1.82 1.39 0.11 0.58 8.23 5.23 
+1.17 0.61 10.04 4.86 9.66 0.91 0 -2.28 -7.68 -0.7 -2.67 -1.19 3.73 0.02 6.62 1.87 
+0 2.28 3.67 0.33 10.87 3.6 6.34 -3.28 -1.96 -1.69 -11.09 -3.39 -9.68 -1.41 -2.91 -0.43 
+-11.98 -2.78 -1.06 -0.87 1.73 0.07 6.79 -2.87 0.11 -0.02 0 -58.68 3.88 -3 0 -8.49 
+-1.08 -1.56 0 -0.5 2.91 -0.84 -1.83 2.91 0 8.49 2.87 -2.21 1.84 -1.91 8.9 -7.55 
+12.58 -1.54 -3.32 6.27 -5.43 4.75 -1.04 0.41 -11.79 4.64 -4.29 0.07 -4.21 0.07 0 58.68 
+10.87 -2.47 0 -36.8 -6.36 -2.2 -0.95 -3.45 6.88 -4.71 5.93 1.73 0.78 3.82 -6.27 4.79 
+0 36.8 0.39 -0.11 10 0.37 0 -20.88 -1.91 -1.08 3.04 -2.78 5.97 1.95 -7.1 1.91 
+0 20.88 3.34 0.13 3.3 -0.06 9.85 -3.91 0 -32.68 -5.14 -0.09 5.29 -1.78 5.69 -0.52 
+-5.84 2.39 0 32.68 2.32 -0.93 -0.04 -4.96 4.67 -3 3.58 -2.56 2.82 -3.04 0 -35.8 
+-2.73 -0.7 2.32 -2.3 8.36 -1.33 -7.95 4.32 0 35.8 2.46 -2.65 2.43 -5.49 -2.14 -4.71 
+5.42 -6.27 -0.65 -5.04 -0.48 -5.08 5.01 -6.88 1.41 -2.23 2.28 -4.58 -3.41 -2.67 -1.61 -1.04 
+-10.87 -1.15 -2.67 -1.61 -12.89 5 -8.05 0.76 6.75 -4.93 12.8 -5.02 4.04 -5.09 1.21 -6.32 
+-6.94 -2.17 6.64 -7.47 -0.06 -2.3 -3.47 -4.25 -0.89 -0.09 -11.11 1.45 -6.2 -2.11 -0.05 0.05 
+-6.53 1.39 -6.45 1.39 0.76 -6.62 -4.55 -2.89 -5.49 -2.06 -5.04 -2.37 -2.84 0.45 -0.16 2.18 
+3.8 3.21 -6.56 8.15 0.55 2.32 3.86 2.7 1.72 0.91 9.66 -3.11 4.43 -0.58 12.83 -5.08 
+-0.09 6.09 4.1 3.32 -8.22 7.04 -12.29 5.6 -10.77 4.34 9.81 -5.79 5.88 -7.55 -9.37 2.69 
+-6.12 1.32 -6.86 3.3 -4.3 3.04 -1.48 4.96 10.63 -1.08 0.09 4.21 -0.67 4.36 -5.3 5.9 
+-1.45 0.8 -1.22 3.71 -0.95 3.73 -6.51 4.96 -1.95 0.72 -2.5 3.32 0.13 2.93 0.65 2.84 
+-0.04 2.97 -5.55 3.37 -6.55 1.32 -13.42 0.5 -0.37 0.02 f*
+110 210 9 rG
+2556.12 1642.38 -4.8 3.84 1.54 -0.04 0 -0.69 3.49 -2.82 4.71 -1.31 -2.75 3.82 -3.93 0.21 
+-1.52 0.09 0 0.69 5.03 -0.15 0.87 -0.21 0.67 -0.5 3.15 -4.73 -6.47 1.8 f*
+255 135 0 rG
+2552.54 1680.68 -0.89 0.39 0.76 0.13 13.67 0.04 13.61 -0.02 4.04 -1.08 -3.02 -0.83 -0.56 -0.17 
+-13.89 1.34 -13.71 0.2 f*
+0 255 r6
+2556.36 1642.67 -3.49 2.82 1.52 -0.09 0 -0.67 2.2 -1.78 2.99 -0.82 -1.74 2.41 -1.93 0.11 
+-1.52 0.09 0 0.67 3.93 -0.21 2.75 -3.82 -4.71 1.31 f*
+255 203 0 rG
+2556.58 1642.95 -2.2 1.78 1.52 -0.09 0 -0.68 0.92 -0.74 1.23 -0.32 -0.72 0.99 -1.43 0.07 
+0 0.68 1.93 -0.11 1.74 -2.41 -2.99 0.82 f*
+255 135 0 rG
+2555.9 1774.8 -0.32 1.37 1.52 -0.28 2.05 -0.96 -3.24 -0.13 f*
+2556.82 1643.23 -0.92 0.74 1.43 -0.07 0.72 -0.99 -1.23 0.32 f*
+2 239 204 rG
+2568.62 1786.96 -12.11 -2.8 4.43 -4.9 8.29 0.52 7.04 0.8 10.89 0.46 0.82 7.27 -2.39 -0.11 
+0 -1.41 -0.52 -4.84 -7.29 -0.3 -3.52 4.64 8.95 0.39 2.38 0.11 0 1.41 -14.56 -0.67 
+-0.11 -0.02 -2.3 -0.54 0 -1.35 -1.17 -5.18 -5.53 -0.35 -2.93 3.3 7.25 1.67 2.39 0.56 
+0 1.35 f*
+255 203 0 rG
+2559.09 1789.32 -2.15 2.73 9.72 4.11 -3.8 -5.93 -3.77 -0.91 f*
+2560.2 1628.86 -1.71 3.54 3.69 1.41 1.48 -0.5 0 -0.41 -0.61 -0.21 -3.32 -1.08 1.06 -2.24 
+3.04 -0.48 0.89 3.34 -0.41 0.46 -0.65 0.21 0 0.41 0.96 -0.31 1.58 -1.69 -1.17 -3.25 
+4.45 -7.32 1.48 -1.32 1.86 -6.49 -6.98 4.95 -0.98 1.5 1.63 1.3 0 -2.3 -0.26 -0.09 
+0.04 -0.07 0.32 -0.21 -0.11 0.37 0 2.3 1.34 1.08 -7.62 7.09 f*
+0 155 255 rG
+2566.23 1785.05 -7.25 -1.67 2.93 -3.3 5.53 0.35 1.17 5.18 -2.39 -0.56 0 -1.37 -0.57 -2.6 
+-2.78 -0.18 -1.45 1.65 4.8 1.13 0 1.37 f*
+255 135 0 rG
+2560.79 1629.36 -1.06 2.24 3.32 1.08 0 -1.24 -2.11 -0.65 0.43 -0.91 1.24 -0.2 0.43 1.76 
+0 1.24 0.61 0.21 0.65 -0.21 0.41 -0.46 -0.89 -3.34 -3.04 0.48 f*
+255 35 0 rG
+2561.37 1629.88 -0.43 0.91 2.11 0.65 -0.43 -1.76 -1.24 0.2 f*
+255 0 r6
+2566.23 1783.68 -4.8 -1.13 1.45 -1.65 2.78 0.18 0.57 2.6 f*
+110 210 9 rG
+2562.98 1574.71 -1.12 0.63 0.34 -10.52 10.98 -7.16 -0.2 11.35 -10.01 5.7 0 -1.06 1.13 -0.65 
+7.79 -4.45 0.16 -9.07 -8.81 5.73 -0.26 8.45 0 1.06 f*
+7 193 59 rG
+2564.11 1573 -1.13 0.65 0.26 -8.45 8.81 -5.73 -0.16 9.07 -7.79 4.45 0 -1.07 1.11 -0.65 
+5.58 -3.19 0.11 -6.77 -6.6 4.25 -0.2 6.36 0 1.07 f*
+2 239 204 rG
+2565.21 1571.29 -1.11 0.65 0.2 -6.36 6.6 -4.25 -0.11 6.77 -5.58 3.19 0 -1.06 1.13 -0.65 
+3.34 -1.91 0.07 -4.52 -4.41 2.82 -0.13 4.25 0 1.06 f*
+0 155 255 rG
+2566.34 1569.57 -1.13 0.65 0.13 -4.25 4.41 -2.82 -0.07 4.52 -3.34 1.91 0 -1.09 2.21 -1.28 
+0.05 -2.26 -2.2 1.43 -0.07 2.11 0 1.09 f*
+255 135 0 rG
+2566.25 1618.23 -0.04 0.07 0.26 0.09 0.11 -0.37 -0.32 0.21 f*
+255 0 r6
+2568.55 1567.21 -2.21 1.28 0.07 -2.11 2.2 -1.43 -0.05 2.26 f*
+0 155 255 rG
+2583.21 1786.68 -8.95 -0.39 3.52 -4.64 7.29 0.3 0.52 4.84 -2.38 -0.11 0 -1.41 -0.24 -2.43 
+-3.67 -0.15 -1.71 2.32 5.63 0.26 0 1.41 f*
+110 210 9 rG
+2575.65 1749.02 -0.32 -1.37 5.9 -1.91 -3.25 3.25 -2.32 0.02 f*
+255 203 0 rG
+2583.64 1796.79 -8.16 5.1 15.04 -0.52 -2.95 -3.8 -3.93 -0.78 f*
+255 0 r6
+2583.21 1785.27 -5.62 -0.26 1.71 -2.32 3.67 0.15 0.24 2.43 f*
+255 135 0 rG
+2578.3 1685.98 -0.63 0.49 0.39 0.18 0.87 -0.18 -0.63 -0.49 f*
+2580.64 1664.17 -0.96 1.26 0.13 2.97 0.79 2.89 -0.02 3.02 0.13 1.22 8.25 -2.26 -2.89 -2.8 
+3.52 -3.84 0.09 -3.32 -9.03 0.87 f*
+110 210 9 rG
+2591.34 1742.32 -7.96 2.08 1.58 -4.53 4.97 0.11 1.41 2.34 f*
+255 203 0 rG
+2587.67 1586.13 -2.47 1.89 0.3 0.43 1.32 0.56 0.84 -2.88 f*
+110 210 9 rG
+2595.83 1735.54 -5.32 -4.66 10.44 -2.32 2.78 -4.5 4.38 0.41 1.84 0.83 -5.34 4.13 0.59 5.64 
+-7.29 0.37 0 -1.58 2.39 -0.11 -0.26 -1.69 -3.52 0.63 1.39 1.17 0 1.58 -2.09 0.11 f*
+255 135 0 rG
+2591.88 1651.7 -0.26 0.75 1.05 1.74 0.5 -2.23 -1.29 -0.26 f*
+2599.93 1717.79 -3.73 -0.02 2.67 1.19 7.68 0.7 -6.62 -1.87 f*
+7 193 59 rG
+2597.92 1733.86 -1.39 -1.17 3.52 -0.63 0.26 1.69 -2.39 0.11 f*
+0 255 r6
+2601.61 1650.46 -4.21 0.07 3.88 -3 2.87 -2.21 1.84 -1.91 8.9 -7.55 12.58 -1.54 -3.32 6.27 
+-5.43 4.75 -1.04 0.41 0 -3.43 6.6 -6.57 -8.94 1.06 -6.34 5.41 8.18 0.11 0.5 0 
+0 3.43 -11.79 4.64 -4.29 0.07 0 -1.37 3.86 -0.09 7.27 -3.95 -8.07 1.65 -3.06 2.39 
+0 1.37 f*
+255 135 0 rG
+2603.11 1636.13 -2.91 0.84 0 0.5 1.08 1.56 1.83 -2.91 f*
+0 255 r6
+2601.91 1667.73 -0.95 -3.45 6.88 -4.71 5.93 1.73 0.78 3.82 -6.27 4.79 -6.36 -2.2 f*
+110 210 9 rG
+2605.46 1649 -3.86 0.09 3.06 -2.39 8.07 -1.65 -7.27 3.95 f*
+189 0 54 rG
+2613.02 816.97 -9.57 -7.64 15.97 5.27 9.55 8.18 -1.72 -0.61 0 -0.37 -8.27 -7.04 -13.76 -4.58 
+8.27 6.62 10.3 3.75 3.45 1.24 0 0.37 -14.23 -5.21 f*
+2607.27 818.77 -3.3 -3.06 6.08 2.23 3.25 3.11 -6.03 -2.28 f*
+110 210 9 rG
+2604.71 1712.09 -0.74 -2.04 2.75 -0.63 9.55 1.89 -11.57 0.79 f*
+255 35 0 rG
+2613.5 816.82 -8.27 -6.62 13.76 4.58 8.27 7.04 -3.45 -1.24 0 -0.69 -5.66 -4.75 -9.38 -3.17 
+5.63 4.54 5.94 2.14 3.47 1.24 0 0.69 -10.3 -3.75 f*
+255 135 0 rG
+2614.39 816.5 -5.62 -4.54 9.38 3.17 5.66 4.75 -3.47 -1.24 0 -0.68 -3.04 -2.52 -5.01 -1.71 
+2.99 2.45 1.54 0.55 3.52 1.23 0 0.68 -5.94 -2.14 f*
+110 210 9 rG
+2617.19 1642.32 -8.18 -0.11 6.34 -5.41 8.94 -1.06 -6.6 6.57 -0.5 0 0 -1.3 3.91 -3.88 
+-5.32 0.63 -3.75 3.21 4.62 0.04 0.54 0 0 1.3 f*
+7 193 59 rG
+2616.64 1641.02 -4.62 -0.04 3.75 -3.21 5.32 -0.63 -3.91 3.88 -0.54 0 0 -1.28 1.26 -1.21 
+-1.7 0.19 -1.2 1.02 1.63 0 0 1.28 f*
+255 203 0 rG
+2615.28 816.19 -2.99 -2.45 5.01 1.71 3.04 2.52 -3.52 -1.23 0 -0.63 -0.39 -0.32 -0.65 -0.24 
+0.39 0.32 0.65 0.24 0 0.63 -1.54 -0.55 f*
+2 239 204 rG
+2616.64 1639.73 -1.63 0 1.2 -1.02 1.7 -0.19 -1.26 1.21 f*
+110 210 9 rG
+2618.84 1741.64 -3.69 -4.1 5.95 -4.02 0.76 -0.5 3.88 -5.1 7.38 -4.75 -5.62 -4.73 -4.6 -1.61 
+7.54 -2.23 11.74 2.41 13.19 0.11 13.76 -1 1.04 2.37 -2.34 6.45 -2.06 6.53 -9.91 6.13 
+-6.54 6.09 -4.62 0.54 -6.32 -0.76 0 -6.51 5.36 -0.61 3.43 -5.97 2.73 -5.95 0.18 -0.3 
+-0.3 0.29 -6.62 5.59 -4.75 5.64 -0.02 1.3 0 6.51 -6.18 -0.75 -5.62 -0.46 0 -2.25 
+2.67 -5.68 2.08 -4.38 -4.95 3.9 -6.23 4.82 0.95 1.05 5.47 0.3 0 2.25 -7.72 -0.61 f*
+189 0 54 rG
+2622.77 826 -7.42 -7.34 13.63 4.95 0.76 0.29 6.72 7.25 0.41 0.44 -2.62 -1.04 0 -0.63 
+-5.39 -5.73 -10.76 -3.97 5.55 5.55 5.29 2.08 5.3 2.06 0 0.63 -11.48 -4.54 f*
+0 255 r6
+2616.17 815.86 -0.39 -0.32 0.65 0.24 0.39 0.32 -0.65 -0.24 f*
+2618.66 1686.11 -1.91 -1.08 3.04 -2.78 5.97 1.95 -7.1 1.91 f*
+0 155 255 rG
+2621.5 1436.46 -4.1 2.21 2.11 3.32 4.23 -1.57 8.73 -3.54 9.33 4.58 5.32 6.38 -3.16 11.48 
+-0.24 2.64 8.9 0.63 1.5 0.3 5.84 -4.84 0 -7.2 -7.2 -8.81 -7.16 -7.24 9.92 0.8 
+10.96 1.02 2.04 6.38 -8.55 7.86 0 7.2 4.47 -3.71 8.36 -9.65 5.3 -8.38 2.11 -1.72 
+12.91 -5.53 2 -1.5 -0.54 -1.67 -1.93 0.63 -13.11 6.67 -2.39 0.19 -8.48 -1.71 -11.24 -0.58 
+-10.61 -2.09 -10.7 -1.76 -5.95 2.85 -8.62 6.36 f*
+255 35 0 rG
+2623.66 825.76 -5.55 -5.55 10.76 3.97 5.39 5.73 -5.3 -2.06 0 -1.24 -1.8 -1.89 -3.61 -1.34 
+1.85 1.87 3.56 1.37 0 1.24 -5.29 -2.08 f*
+7 193 59 rG
+2621.09 1739.7 -0.95 -1.05 6.23 -4.82 4.95 -3.9 -2.08 4.38 -2.67 5.68 -5.47 -0.3 f*
+110 210 9 rG
+2625.11 1604.12 -4.19 0.93 1.41 -3.86 10.83 -7.36 7.4 -3.34 -5.23 5.55 -10.22 8.07 f*
+255 135 0 rG
+2625.39 825.24 -1.85 -1.87 3.61 1.34 1.8 1.89 -3.56 -1.37 f*
+0 255 r6
+2635.16 1670.46 -5.14 -0.09 5.29 -1.78 5.69 -0.52 -5.84 2.39 f*
+189 0 54 rG
+2633.83 822.46 -1.39 -1.34 2.56 0.91 1.45 1.32 -2.62 -0.89 f*
+0 255 r6
+2638.39 1735.66 -0.02 1.3 5.36 -0.61 3.43 -5.97 2.73 -5.95 0.18 -0.3 -0.3 0.29 -6.62 5.59 
+-4.75 5.64 f*
+2 239 204 rG
+2655.49 1435.61 -9.92 -0.8 7.16 7.24 7.2 8.81 8.55 -7.86 -2.04 -6.38 -10.96 -1.02 f*
+0 255 r6
+2648.5 1652.84 -2.73 -0.7 2.32 -2.3 8.36 -1.33 -7.95 4.32 f*
+7 193 59 rG
+2651.39 1544.14 -0.18 -0.59 2.13 -1.67 -1.54 2.06 -0.41 0.2 f*
+0 155 255 rG
+2677.34 702.82 -16.84 -4.9 5.36 2.65 16.35 4.92 -4.86 -2.67 f*
+255 0 r6
+2665.41 1513.98 -1.73 -6.21 10.85 -6.66 -3.82 10.68 -5.3 2.19 f*
+110 210 9 rG
+2667.88 1694.83 -0.3 -0.08 0.46 -0.26 0.91 0.09 -1.06 0.26 f*
+2667.96 1706.34 -0.21 -5.86 0.13 -0.07 13.48 -7.14 3.8 4.62 0.41 0.5 -3.93 6.75 -3.34 1 
+0 -5.99 1.25 -0.97 -0.5 -0.63 -1.69 0.91 0.93 0.69 0 5.99 -3.71 1.11 -6.62 -0.91 f*
+0 155 255 rG
+2673.89 1788.52 -1.09 7.5 3.06 -0.91 0 -1.04 0.67 -5.19 12.46 -3.78 -0.37 5.14 -9.75 2.93 
+-3.02 0.89 0 1.04 6.23 -1.87 9.29 -2.75 0.43 -7.45 -17.92 5.47 f*
+2 239 204 rG
+2677 1763.76 -1.78 -2.02 5.93 -1.52 11.29 1.49 2.58 1.2 -6.99 2.63 -11.03 -1.78 f*
+2676.54 1788.89 -0.67 5.19 3.02 -0.89 0 -1.08 0.33 -2.87 6.95 -2.08 -0.24 2.84 -4.06 1.21 
+-2.97 0.89 0 1.08 9.75 -2.93 0.37 -5.14 -12.46 3.78 f*
+7 193 59 rG
+2678.3 1700.15 -0.93 -0.69 1.69 -0.91 0.5 0.63 -1.25 0.97 f*
+2679.21 1789.23 -0.33 2.87 2.97 -0.89 0 -1.08 0.04 -0.57 1.35 -0.39 -0.04 0.54 -1.35 0.42 
+0 1.08 4.06 -1.21 0.24 -2.84 -6.95 2.08 f*
+110 210 9 rG
+2685.16 1682.31 -3.67 -1.47 5.38 -5.26 4.04 3.2 -5.75 3.54 f*
+2681.9 1789.56 -0.04 0.57 1.35 -0.42 0.04 -0.54 -1.35 0.39 f*
+0 155 255 rG
+2685.37 1572.87 -3.36 0.55 0.99 -3.17 2.11 -8.83 1.63 -6.08 7.59 -2.52 6.64 -1.98 9.01 -2.41 
+-1.98 9.81 -9.27 9.7 -10 3.7 0 -3.89 6.62 -3.64 10.53 -8.21 0.87 -4.4 -4.06 1.06 
+-11.69 3.43 -2.67 0.87 -0.56 2.13 0.98 8.77 0 3.89 -3.37 1.23 f*
+0 255 r6
+2687.46 1737.3 -4.54 1.54 3.12 4.17 16 -4.58 -9.31 -2.91 -5.27 1.78 f*
+7 193 59 rG
+2687.46 1726.3 -0.22 -1.8 4.12 -3.55 6.84 2.84 -10.74 2.52 f*
+255 0 r6
+2688.74 1567.75 -0.98 -8.77 0.56 -2.13 2.67 -0.87 11.69 -3.43 4.06 -1.06 -0.87 4.4 -10.53 8.21 
+-6.62 3.64 f*
+255 203 0 rG
+2692.51 1696.81 -0.91 0.69 0.33 0.65 1.25 -0.91 -0.67 -0.43 f*
+0 255 r6
+2701.96 1752.73 -8.77 1.76 5.23 1.66 4.96 -1.66 -1.43 -1.76 f*
+2 239 204 rG
+2707.86 1746.62 -5.04 -0.33 7.4 -2.25 -0.48 1.97 -1.89 0.61 f*
+0 255 r6
+2707.9 1608.88 -1.89 4.43 3.13 -1.2 0.82 -1.07 -2.06 -2.16 f*
+7 193 59 rG
+2715.52 1643.36 -8.29 -2.17 2.15 -7.87 4.55 -3.58 2.32 0.32 3.73 5.54 -4.47 7.77 f*
+2708.68 1687.79 -0.09 -0.09 0.17 -0.15 1.34 -0.17 -1.43 0.41 f*
+0 155 255 rG
+2713.11 1566.1 -0.11 -1.95 6.23 -3.28 -4.21 5.84 -1.91 -0.61 f*
+2 239 204 rG
+2718.36 1598.42 -0.43 -0.17 0.04 -0.66 0.55 0.26 -0.15 0.57 f*
+0 255 r6
+2725.54 1625.46 -0.61 7.83 3.17 0.04 13.02 -3.99 6.23 -7.45 5.02 -7.4 8.48 -0.24 4.97 -0.84 
+0.8 -2.61 -1.52 -1.21 -9.83 -0.74 -3.84 1.43 -7.18 5.08 -4.47 5.12 -9.55 2.54 -3.6 0.73 
+-1.09 1.7 f*
+2 239 204 rG
+2726.97 1647.11 -0.97 -6.92 2.56 -1.9 2.56 -0.39 1.11 7.01 -3.45 3.41 -1.8 -1.2 f*
+0 255 r6
+2726.32 1583.83 10.39 1.59 -6.07 6.86 -3.75 8.53 4.55 -1.02 0 -1.91 0.84 -1.89 10.59 -9.94 
+2.88 2.13 -1.11 1.82 -11.71 7.53 -1.5 0.34 0 1.91 2.21 -0.5 11.61 -7.86 3.13 -5.12 
+-6.27 -4.82 -1.48 0.02 -14.32 2.32 f*
+255 203 0 rG
+2732.29 1595.98 -0.84 1.89 1.5 -0.34 11.71 -7.53 1.11 -1.82 -2.88 -2.13 -10.59 9.94 f*
+255 0 r6
+2744.51 1561.2 -3.8 1.69 0.46 -6.49 6.6 0.43 -3.25 4.37 f*
+2 239 204 rG
+2747.8 1681.36 -6.37 -2.48 9.61 -8.79 11.48 1.52 -13.52 8.96 0 -3 3.75 -2.43 -2.9 -0.43 
+-2.5 2.26 1.65 0.61 0 3 -1.2 0.78 f*
+255 0 r6
+2749.96 1604.73 -4.1 1.21 2.47 -6.38 8.21 -0.41 -6.58 5.58 f*
+2 239 204 rG
+2746.55 1486.11 -0.05 8.62 5.58 7.86 4.69 8.64 -0.2 1.19 -1.11 13.59 1.81 -0.21 0 -1.72 
+0.84 -10.11 0.78 -5.26 -5.34 -7.94 -5.1 -8.57 0.02 -4.58 4.27 -1.19 10.01 -4.19 7.07 -2.87 
+8.53 -1.3 4.97 -0.7 12.26 -1.76 1.46 -0.39 12.82 -0.84 4.54 0.87 6.23 1.22 0.39 5.92 
+-5.77 1.45 -7.4 4.19 -8.25 11.11 -6.84 -2.13 -11.67 -0.65 -2.05 0.61 -10.95 8.01 -1.07 8.24 
+-0.56 9.72 -7.42 0.89 -1.78 0.24 0 1.72 10.57 -1.26 0.78 -13.13 0.67 -5.21 10.33 -7.98 
+0.55 -0.11 10.24 1.84 9.12 3.82 6.75 6.62 -5.45 12.26 -1.97 9.42 9.68 3 -3.25 15.58 
+0.41 8.23 -1.91 4.77 -3.56 13.98 11.76 0.2 0 -1.96 -0.61 0 -8.81 -0.11 4.38 -13.95 
+10.22 1.74 4.79 3.1 0 -3.49 -1.97 -1.23 -0.57 -0.35 -9.79 -3.04 6.84 -8.91 2.97 -0.09 
+9.44 3.41 -6.92 10.22 0 3.49 1.5 0.98 8.79 -15.54 2.73 -4.99 -3.8 2.35 -10.61 -0.98 
+-4.57 0.17 -9.51 0.89 2.93 -13.48 3.23 -5.21 -6.23 0.22 -5.16 -1.48 1.02 -4.84 7.42 -13.11 
+6.3 -4.84 0 -9.29 -10.7 -0.79 3.86 -7.24 3.2 -1.79 3.64 9.81 0 9.29 4.53 -3.5 
+3.71 0.54 5.71 8.01 5.12 8.46 11.75 1 1.25 0.09 12.02 -6.32 3.49 1.34 9.07 4.02 
+0.54 13.65 -2.37 6.79 -11.26 8.18 -6.3 18.01 -1.56 3.76 -3.89 1.13 -9.68 -1.45 -1.82 -0.3 
+-9.98 0.58 -1.87 0.11 -2.84 0.32 -9.66 4.64 0 1.96 0.59 0.02 2.47 -1.17 10.75 -1.08 
+4.46 -0.2 9.45 1.67 1.86 0.33 10.86 -3.04 4.47 -10.59 3.82 -10.92 10.92 -9.53 4.21 -12.13 
+-1.78 -12.39 -7.87 -5.43 -8.72 -3.23 -1.87 0.98 -1.58 -6.99 -1.76 -4.19 -1.06 -0.37 -8.98 11.39 
+-6.32 -6.14 -7.9 -5.53 -10.8 -2 6.14 -12.28 -0.71 -11.26 -10.48 -2.52 -1.32 0.37 -11.37 0.31 
+-6.04 1.69 -8.18 1.22 -9.16 1.3 -4.34 0.67 -7.05 2.87 -3.36 1.39 -6.6 2.78 -8.14 2.32 f*
+0 155 255 rG
+2749 1677.58 -1.65 -0.61 2.5 -2.26 2.9 0.43 -3.75 2.43 f*
+2 239 204 rG
+2751.93 1700.37 -3.65 -0.2 5.23 -3.12 9.83 -1.17 -11.41 4.49 f*
+7 193 59 rG
+2748.48 1487.61 -0.02 4.58 5.1 8.57 5.34 7.94 -0.78 5.26 -0.84 10.11 1.78 -0.24 0 -1.72 
+0.56 -6.64 1.41 -9.29 -6.01 -7.25 -4.62 -9.33 0 -0.46 0.43 -0.13 13.41 -5.57 3.71 -1.48 
+12.7 -1.89 0.82 -0.11 13.85 -2.32 2.61 0.17 10.05 -0.78 10.07 2.02 0.65 0.13 0.04 0.61 
+-0.61 0.18 -11.57 6.62 -11.37 7.4 -0.16 0.09 -12.67 0.71 -4.23 1.26 -11.24 7.73 -1.45 11.24 
+-0.35 6.34 -4.25 0.54 -1.78 0.21 0 1.72 7.42 -0.89 0.56 -9.72 1.07 -8.24 10.95 -8.01 
+2.05 -0.61 11.67 0.65 6.84 2.13 8.25 -11.11 7.4 -4.19 5.77 -1.45 -0.39 -5.92 -6.23 -1.22 
+-4.54 -0.87 -12.82 0.84 -1.46 0.39 -12.26 1.76 -4.97 0.7 -8.53 1.3 -7.07 2.87 -10.01 4.19 
+-4.27 1.19 f*
+110 210 9 rG
+2750.39 1489.15 0 0.46 4.62 9.33 6.01 7.25 -1.41 9.29 -0.56 6.64 1.78 -0.21 0 -1.73 
+0.28 -3.12 2.02 -13.39 -6.64 -6.55 -2.32 -4.84 11.54 -7.57 0.35 -0.13 13.8 -2.39 2.52 -0.54 
+11.48 -1.97 6.4 0.48 5.77 -0.43 -0.82 5.49 -6.51 4.29 -5.06 3.15 -10.05 0.59 -6.4 1.93 
+-11.53 7.46 -0.39 2.97 -1.45 11.26 -0.15 2.95 -2.84 0.37 0 1.73 4.25 -0.54 0.35 -6.34 
+1.45 -11.24 11.24 -7.73 4.23 -1.26 12.67 -0.71 0.16 -0.09 11.37 -7.4 11.57 -6.62 0.61 -0.18 
+-0.04 -0.61 -0.65 -0.13 -10.07 -2.02 -10.05 0.78 -2.61 -0.17 -13.85 2.32 -0.82 0.11 -12.7 1.89 
+-3.71 1.48 -13.41 5.57 -0.43 0.13 f*
+0 255 r6
+2754.36 1650 -2.19 1.73 1.97 0.54 2.28 -2.37 -2.06 0.09 f*
+2765.71 1484.68 -11.54 7.57 2.32 4.84 6.64 6.55 -2.02 13.39 -0.28 3.13 2.84 -0.37 0.15 -2.95 
+1.45 -11.26 0 -4.55 2.13 -14.89 10.91 -1.87 5.62 -1.2 8.47 -1.45 10.18 0.83 1.52 -0.11 
+-0.22 1.43 -1.71 1.15 -9.92 6.25 -7.42 0.45 -8.57 2.61 -8.64 5.34 -2.34 1.46 0 4.55 
+0.39 -2.97 11.53 -7.46 6.4 -1.93 10.05 -0.59 5.06 -3.15 6.51 -4.29 0.82 -5.49 -5.77 0.43 
+-6.4 -0.48 -11.48 1.97 -2.52 0.54 -13.8 2.39 -0.35 0.13 f*
+2 239 204 rG
+2760.98 1456.79 -6.3 3.02 0.91 5.4 9.05 1.76 -3.66 -10.18 f*
+255 0 r6
+2757.4 1569.71 -1.58 -9.14 0.3 -6.55 6.59 0.52 4.8 6.77 -0.84 10.89 -9.27 -2.49 f*
+255 203 0 rG
+2767.41 1486.13 -2.13 14.89 2.34 -1.46 0 -1.48 1.5 -10.46 7.64 -1.28 8.73 -1.82 5.45 -0.91 
+-0.09 6.12 -4.8 0.3 -10.74 3.28 -5.34 3.34 -2.34 1.43 0 1.48 8.64 -5.34 8.57 -2.61 
+7.42 -0.45 9.92 -6.25 1.71 -1.15 0.22 -1.43 -1.52 0.11 -10.18 -0.83 -8.47 1.45 -5.62 1.2 
+-10.91 1.87 f*
+2 239 204 rG
+2770.18 1547.77 -4.47 -3.89 2.11 6.05 4.43 7.29 1.99 -0.02 0.65 -2.3 -4.71 -7.14 f*
+255 0 r6
+2776.17 1575.39 -8.74 -3.43 4.82 -5.71 4.21 -5.02 3.02 -10.45 -4.78 -7.27 -5.8 -6.4 1.7 -9.27 
+1.84 -7.12 -2.23 -11.17 0.28 -2.15 4.3 -3.28 9.24 -2.02 3.97 0.76 8.05 5.01 5.45 7.92 
+-2.15 4.77 -2.93 13.93 6.55 6.08 1.08 11.15 0.24 4.04 -4.53 11.26 -1.8 9.38 -6.32 7.81 
+-3.54 5.93 -2.58 -1.41 -4.93 -6.49 -4.43 -6.86 f*
+255 135 0 rG
+2769.12 1487.63 -1.5 10.46 2.34 -1.43 0 -1.47 0.85 -6.04 4.38 -0.74 11.83 -2.43 2.43 -0.39 
+-0.05 2.71 -2.12 0.15 -12.93 3.95 -2.09 1.32 -2.3 1.46 0 1.47 5.34 -3.34 10.74 -3.28 
+4.8 -0.3 0.09 -6.12 -5.45 0.91 -8.73 1.82 -7.64 1.28 f*
+255 35 0 rG
+2770.81 1489.15 -0.85 6.04 2.3 -1.46 0 -1.49 0.22 -1.57 1.13 -0.2 -0.21 1.04 -1.13 0.72 
+0 1.49 2.09 -1.32 12.93 -3.95 2.13 -0.15 0.05 -2.71 -2.43 0.39 -11.83 2.43 -4.38 0.74 f*
+189 0 54 rG
+2772.48 1490.67 -0.22 1.57 1.13 -0.72 0.21 -1.04 -1.12 0.2 f*
+7 193 59 rG
+2790.84 1654.05 -14 11.88 11.76 -1.54 5.58 -6.23 -3.34 -4.11 f*
+255 0 r6
+2796.77 1600.76 -2.23 -8.45 5.2 -10.39 7.27 1.08 5.55 1.41 1.82 0.45 5.4 -1.02 8.29 1.87 
+2 1.02 -1.15 3.93 -9.89 14.93 -1.18 1.3 -1.26 0.39 -7.16 -5.23 -5.12 0.37 -7.55 -1.67 f*
+7 193 59 rG
+2802.28 1524.71 -1.02 4.84 5.16 1.48 6.23 -0.22 -3.23 5.21 -2.93 13.48 9.51 -0.89 4.57 -0.17 
+10.61 0.98 3.8 -2.35 -2.73 4.99 -8.79 15.54 -1.5 -0.98 -4.79 -3.1 -10.22 -1.74 -4.38 13.95 
+8.81 0.11 0 -1.95 -0.65 0 -5.82 -0.04 3.04 -9.6 6.96 1.22 -3.54 8.42 0 1.95 
+0.61 0 9.66 -4.64 2.84 -0.32 1.87 -0.11 0 -3.6 6.73 -12.91 6.27 -11.5 -8.68 5.43 
+-8.99 -0.81 -6.14 0.24 -6.66 0.66 -1.2 0.11 2.43 -11.13 6.56 -10.63 -12.76 0.52 -0.26 -0.07 
+0.07 -0.24 8.83 -11.28 3.82 -2.47 6.08 7.29 -3.08 5.62 0.67 10.35 1.41 -0.29 0 -1.17 
+-0.34 -5.96 10.52 -4.8 -7.48 10.25 -1.26 0.25 -1.43 0.26 0 1.17 3.26 -0.58 10.77 -8.83 
+6.36 0.17 9.38 0.87 5.51 -3.32 5.45 -5.12 9.11 2.82 -0.7 14.91 -0.54 1.52 -2.78 2.02 
+-8.25 -1.48 -2.66 -0.47 -1.5 -2.56 0.54 3.55 -5.41 18.25 -0.67 3.2 -1.99 -0.68 -10.2 6.3 
+-7.1 0.37 -3.67 0.2 0 3.6 9.98 -0.58 1.82 0.3 9.68 1.45 3.89 -1.12 1.56 -3.76 
+6.3 -18.01 11.26 -8.18 2.37 -6.79 -0.54 -13.65 -9.07 -4.02 -3.49 -1.34 -12.02 6.32 -1.25 -0.09 
+-11.75 -1 -5.12 -8.46 -5.71 -8.01 -3.71 -0.54 -4.53 3.5 -6.3 4.84 -7.42 13.11 f*
+110 210 9 rG
+2803.71 1526.82 -0.07 0.24 0.26 0.07 12.76 -0.52 -6.56 10.63 -2.43 11.13 1.2 -0.11 0 -1.02 
+1.93 -8.77 7.77 -0.69 6.68 -1.24 12.09 -4.94 -7.21 15.34 -7.36 -0.62 -7.73 0.33 -5 0.47 
+-1.19 0.14 0 1.02 6.66 -0.66 6.14 -0.24 8.99 0.81 8.68 -5.43 -6.27 11.5 -6.73 12.91 
+3.67 -0.2 0 -3.04 3.89 -7.45 9.18 -13.67 7.31 1.82 -3.1 9.68 -11.07 9.25 -2.56 0.15 
+-3.65 0.22 0 3.04 7.1 -0.37 10.2 -6.3 1.99 0.68 0.67 -3.2 5.41 -18.25 -0.54 -3.55 
+1.5 2.56 2.66 0.47 0 -3.32 4.26 -14.13 6.59 2.09 -0.78 12.04 -10.07 0 0 3.32 
+8.25 1.48 2.78 -2.02 0.54 -1.52 0.7 -14.91 -9.11 -2.82 -5.45 5.13 -5.51 3.32 -9.38 -0.87 
+-6.36 -0.17 -10.77 8.83 -3.26 0.58 -1.41 0.29 -0.67 -10.35 3.08 -5.62 -6.08 -7.29 -3.82 2.47 
+-8.83 11.28 f*
+2807.95 1564.25 -3.04 9.6 5.82 0.04 0 -1.96 -3.47 0 1.65 -5.18 3.73 0.68 -1.91 4.51 
+0 1.96 0.65 0 3.54 -8.42 -6.96 -1.22 f*
+0 155 255 rG
+2816 1497.48 -10.7 -0.79 3.86 -7.24 3.2 -1.79 3.64 9.81 f*
+0 255 r6
+2808.9 1566.75 -1.65 5.18 2.32 0 0 -1.93 0.24 -0.76 0.54 0.11 -0.29 0.66 -0.5 0 
+0 1.93 1.15 0 1.91 -4.51 -3.73 -0.68 f*
+2810.8 1538.48 -1.93 8.77 1.19 -0.14 0 -1.02 1.41 -6.4 5.67 -0.48 8.68 -1.59 9.4 -3.8 
+-5.6 11.89 -5.73 -0.47 -9.31 0.41 -3.32 0.32 -1.2 0.11 0 1.02 5 -0.47 7.73 -0.33 
+7.36 0.63 7.21 -15.34 -12.09 4.94 -6.68 1.24 -7.77 0.69 f*
+255 203 0 rG
+2809.81 1569.25 -0.24 0.76 0.5 0 0.29 -0.66 -0.54 -0.11 f*
+0 155 255 rG
+2819.42 1561.54 -9.79 -3.04 6.84 -8.91 2.97 -0.09 9.44 3.41 -6.92 10.22 -1.97 -1.23 0 -4.06 
+-1.65 -7.29 -1.43 0.04 -3.21 4.28 6.29 2.97 0 4.06 -0.57 -0.35 f*
+255 203 0 rG
+2811.48 1539.7 -1.41 6.4 1.2 -0.11 0 -1.02 0.89 -4.04 3.55 -0.29 10.66 -1.91 6.73 -2.7 
+-4.02 8.47 -4.1 -0.33 -10.89 0.48 -1.62 0.17 -1.2 0.13 0 1.02 3.32 -0.32 9.31 -0.41 
+5.73 0.47 5.6 -11.89 -9.4 3.8 -8.68 1.59 -5.67 0.48 f*
+255 135 0 rG
+2812.16 1540.93 -0.89 4.04 1.2 -0.13 0 -1.02 0.37 -1.63 1.43 -0.11 12.66 -2.23 4.04 -1.58 
+-2.41 5.03 -0.57 -0.04 -1.89 -0.15 -12.48 0.61 -1.15 0.11 0 1.02 1.63 -0.17 10.89 -0.48 
+4.1 0.33 4.02 -8.47 -6.73 2.7 -10.66 1.91 -3.55 0.29 f*
+255 35 0 rG
+2812.83 1542.19 -0.37 1.63 1.15 -0.11 12.48 -0.61 1.89 0.15 0 -1.17 -0.8 -0.04 0.28 -1.09 
+1.33 -0.52 -0.8 1.65 0 1.17 0.57 0.04 2.41 -5.03 -4.04 1.58 -12.66 2.23 -1.43 0.11 f*
+255 0 r6
+2819.99 1557.83 -6.29 -2.97 3.21 -4.28 1.43 -0.04 1.65 7.29 f*
+2 239 204 rG
+2821.44 1534.87 -0.34 -5.96 10.52 -4.8 -7.48 10.25 -1.26 0.25 0 -1.19 0.67 -0.16 1.91 -2.56 
+-2.67 1.19 0.08 1.52 0 1.19 -1.43 0.26 f*
+0 155 255 rG
+2822.87 1533.42 -0.08 -1.52 2.67 -1.19 -1.91 2.56 -0.67 0.16 f*
+189 0 54 rG
+2827.45 1540.95 -0.28 1.09 0.8 0.04 0.8 -1.65 -1.33 0.52 f*
+0 255 r6
+2833.9 1556.49 -3.89 7.45 3.65 -0.22 0 -3.06 1 -1.93 9.64 -8.03 -9 9.87 -1.63 0.09 
+0 3.06 2.56 -0.15 11.07 -9.25 3.1 -9.68 -7.31 -1.82 -9.18 13.67 f*
+255 203 0 rG
+2834.66 1558.72 -1 1.93 1.63 -0.09 9 -9.87 -9.64 8.03 f*
+0 255 r6
+2863.26 1521.57 -4.26 14.13 2.65 0 0 -2.87 2.69 -8.89 4.1 1.35 -0.46 7.5 -3.69 0.02 
+-2.64 0.02 0 2.87 7.42 0 0.78 -12.04 -6.59 -2.09 f*
+255 203 0 rG
+2864.34 1523.94 -2.69 8.89 2.64 -0.02 0 -2.86 1.09 -3.63 1.64 0.57 -0.18 3.02 -2.56 0.04 
+0 2.86 3.69 -0.02 0.46 -7.5 -4.1 -1.35 f*
+255 135 0 rG
+2865.39 1526.32 -1.09 3.63 2.56 -0.04 0.18 -3.02 -1.64 -0.57 f*
+Q q
+0 72 3400 0 0 4128 ^ Y
+255 G
+1829.88 1315 0 -24.85 0.26 -10.22 0.5 -11.31 0.7 -11.31 0.89 -11.31 1.09 -11.26 1.28 -11.25 
+1.47 -11.24 1.67 -11.2 1.87 -11.17 2.06 -11.14 2.25 -11.09 2.43 -11.05 2.64 -11.02 2.82 -10.96 
+3.04 -10.91 3.21 -10.86 3.39 -10.8 3.61 -10.74 3.78 -10.68 3.95 -10.62 4.14 -10.52 4.34 -10.46 
+4.51 -10.39 4.69 -10.3 4.86 -10.22 5.06 -10.13 5.21 -10.05 5.4 -9.94 5.58 -9.86 5.73 -9.76 
+5.9 -9.66 6.08 -9.54 6.25 -9.45 6.4 -9.33 6.58 -9.23 6.73 -9.11 6.88 -8.98 7.04 -8.86 
+7.2 -8.74 7.34 -8.59 7.5 -8.49 3.82 -4.18 3.82 -4.16 3.89 -4.11 3.88 -4.12 7.95 -8.07 
+4.04 -3.97 4.02 -3.97 4.1 -3.88 4.1 -3.91 4.19 -3.82 4.16 -3.82 8.47 -7.51 4.29 -3.67 
+4.3 -3.69 8.72 -7.21 4.43 -3.52 4.43 -3.54 4.49 -3.45 4.5 -3.43 4.53 -3.39 4.56 -3.36 
+4.6 -3.28 4.6 -3.3 4.67 -3.21 4.64 -3.19 4.73 -3.15 4.71 -3.12 4.77 -3.04 4.75 -3.04 
+4.84 -2.95 4.82 -2.95 4.86 -2.89 4.88 -2.87 4.93 -2.8 4.9 -2.78 4.97 -2.71 4.97 -2.69 
+5.04 -2.63 5.01 -2.61 5.06 -2.54 5.05 -2.52 5.1 -2.45 5.1 -2.43 5.17 -2.34 5.14 -2.34 
+10.37 -4.52 5.21 -2.17 5.23 -2.16 5.25 -2.09 5.27 -2.06 5.3 -2 5.3 -1.97 5.34 -1.89 
+5.32 -1.89 5.36 -1.8 5.38 -1.8 5.38 -1.7 5.39 -1.71 10.85 -3.21 5.45 -1.52 5.45 -1.5 
+5.49 -1.43 5.47 -1.41 5.49 -1.33 5.51 -1.32 5.51 -1.21 5.51 -1.23 5.55 -1.13 5.54 -1.13 
+5.55 -1.02 5.58 -1.04 11.16 -1.87 5.57 -0.84 5.6 -0.82 5.6 -0.74 5.62 -0.74 5.6 -0.65 
+5.62 -0.62 5.64 -0.57 5.62 -0.52 5.64 -0.46 5.64 -0.43 11.29 -0.69 5.64 -0.26 5.64 -0.24 
+5.66 -0.15 4.38 -0.11 25.15 0 4.39 0.11 5.66 0.15 5.64 0.24 5.64 0.26 11.28 0.69 
+5.64 0.43 5.64 0.46 5.62 0.54 5.64 0.55 5.62 0.63 5.62 0.65 11.2 1.48 5.59 0.82 
+5.6 0.84 11.16 1.87 5.55 1.04 5.56 1.02 5.53 1.13 5.55 1.13 5.51 1.23 5.54 1.21 
+10.98 2.65 5.47 1.41 5.49 1.43 5.45 1.5 5.45 1.52 10.85 3.21 5.38 1.71 5.41 1.7 
+10.72 3.6 5.32 1.89 5.34 1.89 5.3 1.97 5.29 2 5.27 2.06 5.25 2.09 5.23 2.16 
+5.21 2.17 10.38 4.52 5.16 2.34 5.14 2.34 5.1 2.45 5.1 2.43 5.05 2.52 5.06 2.54 
+5.04 2.61 5.01 2.63 4.97 2.69 4.97 2.71 4.91 2.78 4.92 2.8 4.88 2.87 4.86 2.89 
+4.84 2.95 4.82 2.95 4.75 3.04 4.78 3.04 4.7 3.14 4.73 3.13 4.67 3.19 4.64 3.21 
+4.6 3.3 4.6 3.28 4.55 3.36 4.54 3.39 4.49 3.43 4.5 3.45 4.43 3.54 4.42 3.52 
+8.73 7.21 4.29 3.69 4.3 3.67 8.46 7.51 4.19 3.82 4.17 3.82 4.1 3.91 4.11 3.88 
+4.03 3.97 4.02 3.97 7.94 8.07 3.89 4.13 3.88 4.11 3.82 4.16 3.82 4.18 7.5 8.49 
+7.34 8.59 7.21 8.74 7.03 8.86 6.88 8.98 6.72 9.11 6.58 9.23 6.4 9.33 6.25 9.45 
+6.08 9.54 5.91 9.66 5.75 9.76 5.55 9.86 5.4 9.94 5.21 10.05 5.05 10.13 4.86 10.22 
+4.69 10.3 4.51 10.39 4.35 10.46 4.14 10.52 3.95 10.62 3.77 10.68 3.61 10.74 3.38 10.8 
+3.21 10.86 P
+3.04 10.91 2.82 10.96 2.65 11.02 2.43 11.05 2.25 11.09 2.06 11.14 1.87 11.17 1.67 11.2 
+1.48 11.24 1.28 11.25 1.09 11.26 0.89 11.31 0.7 11.31 0.49 11.31 0.26 10.22 0 24.85 
+-0.26 10.22 -0.49 11.31 -0.7 11.3 -0.89 11.29 -1.09 11.28 -1.28 11.24 -1.48 11.24 -0.28 1.87 
+0 -133.57 -0.06 -2.09 -0.07 -2.13 -0.09 -2.15 -0.11 -2.17 -0.11 -2.19 -0.22 -4.51 -0.13 -2.32 
+-0.15 -2.34 -0.18 -2.37 -0.34 -4.02 -0.41 -4.04 -0.41 -4.06 -0.45 -4.1 -0.5 -4.14 -0.41 -3.3 
+-0.41 -3.32 -0.45 -3.36 -0.46 -3.38 -0.5 -3.41 -0.26 -1.99 -0.28 -2.04 -0.26 -2.06 -0.3 -2.06 
+-0.3 -2.12 -0.61 -3.61 -0.63 -3.62 -0.67 -3.66 -0.67 -3.69 -0.72 -3.71 -0.75 -3.75 -0.76 -3.8 
+-0.8 -3.82 -0.85 -3.84 -0.86 -3.87 0.21 1.43 0.21 1.39 0.09 0.7 0.85 3.9 0.8 3.86 
+0.76 3.84 0.74 3.78 0.7 3.73 0.5 2.85 0.5 2.8 0.48 2.78 0.46 2.75 0.43 2.71 
+0.41 2.63 0.39 2.61 0.39 2.58 0.39 2.56 0.34 2.54 0.35 2.56 0.32 2.54 0.61 4.99 
+0.28 2.45 0.47 3.97 0.44 3.95 0.41 3.88 0.39 3.87 0.35 3.82 0.61 6.49 0.5 6.45 
+0.46 6.36 0.37 6.3 0 133.57 -1.39 9.33 -1.87 11.16 -2.06 11.16 -2.25 11.09 -2.43 11.05 
+-2.65 11.03 -2.82 10.95 -3.04 10.92 -3.21 10.85 -2.61 8.27 0 -13 0.89 -2.65 0.89 -2.71 
+0.87 -2.78 0.89 -2.84 0.91 -2.93 0.54 -2.17 0.54 -2.14 0.52 -2.13 0.5 -2.11 0.5 -2.08 
+-1.37 5.05 -1.39 4.97 -1.41 4.9 -1.41 4.84 -1.48 4.78 0 13 -0.78 2.54 -3.61 10.74 
+-3.77 10.68 -3.95 10.61 -2.04 5.19 0 -12.48 1.21 -3.16 1.24 -3.22 1.21 -3.27 1.23 -3.3 
+1.21 -3.37 -0.93 2.73 -0.96 2.74 -0.96 2.71 -0.97 2.73 -1 2.73 1.39 -3.64 1.37 -3.69 
+1.34 -3.73 1.34 -3.79 1.35 -3.82 1.02 -3.28 1 -3.23 0.96 -3.19 0.93 -3.16 0.91 -3.15 
+-1.13 3.67 -1.17 3.65 -1.2 3.63 -1.19 3.58 -1.22 3.58 -1.37 3.93 -1.39 3.88 -1.41 3.87 
+-1.41 3.82 -1.43 3.78 0 12.48 -2.11 5.34 -4.35 10.46 -4.51 10.39 -4.69 10.3 -4.86 10.22 
+-5.05 10.13 -5.21 10.05 -0.76 1.36 0 -20.86 1.08 -1.82 1.09 -1.84 1.11 -1.89 0.91 -2.3 
+0.89 -2.28 0.87 -2.21 -1.04 1.7 -1.07 1.67 -1.02 1.63 -0.91 2.41 -0.93 2.46 -0.98 2.49 
+0 20.86 -0.7 1.3 0 -23.74 1.67 -3.56 1.67 -3.53 1.61 -3.52 0.46 -1.29 0.44 -1.25 
+0.41 -1.24 1.47 -3.78 0.7 -1.84 -0.78 1.41 -0.8 1.39 -0.78 1.37 -1.07 2.24 -1.06 2.21 
+-1.09 2.23 -1.08 2.82 -1.13 2.89 -1.15 2.91 0.17 0.2 0.35 0.35 0 23.74 -3.95 7.27 
+-5.55 9.85 -3.84 6.53 0 -39.97 1.35 -1.82 1.37 -1.89 1.39 -1.93 0.65 -0.74 0.67 -0.75 
+0.67 -0.79 1.61 -3.52 1.56 -3.5 1.54 -3.49 -0.57 0.71 -0.56 0.7 -0.55 0.7 -1.08 1.65 
+-1.07 1.63 -1.08 1.58 -1.56 2.72 -1.59 2.69 -1.58 2.63 -0.39 1.15 -0.39 1.13 -0.39 1.15 
+0 39.97 -1.91 3.23 -3.23 5.29 0 -46.74 1.47 -2.21 1.48 -2.26 2.76 -5.32 2.73 -5.34 
+-2.41 3.88 -0.72 1.13 0 -1.84 1.84 -2.97 1.82 -3.04 2.04 -4.41 2.02 -4.45 2.54 -5.08 
+2.54 -5.16 p
+0.66 -2.17 0.65 -2.15 2.28 -5.54 2.21 -5.54 1.61 -4.54 1.57 -4.51 0.58 -2.41 0.57 -2.38 
+0.54 -2.37 0.54 -2.34 0.22 -1.67 0.21 -1.63 -1.7 2.39 0.2 -1.63 0.17 -1.62 -0.76 1.63 
+-0.79 1.59 -0.25 1.99 -0.3 2.02 -0.61 2.71 -0.66 2.75 -0.93 3.37 -1 3.41 -0.52 2.02 
+-0.05 0.2 0 -27.11 0.7 -0.28 0.67 -0.3 1 -0.13 1.06 -1.7 1.09 -1.71 1.78 -4.32 
+1.75 -4.36 -0.04 1.45 -0.09 1.46 0.7 -0.17 0.67 -0.2 -0.67 3.19 -0.71 3.23 0.78 -0.89 
+0.78 -0.93 1.59 -4 1.59 -4.05 0.52 -2.39 0.5 -2.39 0.48 -2.41 0.46 -2.39 1.15 -2.69 
+1.15 -2.74 1.22 -2.08 1.21 -2.12 0.48 -0.07 0.49 -0.07 1.63 -4.66 1.63 -4.71 1.26 -3.06 
+1.26 -3.12 -0.48 3.43 -0.52 3.49 1.28 -4.52 1.24 -4.51 0.26 0.54 0.26 0.59 -0.35 3.47 
+1.07 -4.23 1.04 -4.23 0.3 0.2 0.28 0.21 0.02 1.52 0.02 1.56 1.24 -4.71 1.19 -4.73 
+0.41 -3.23 0.39 -3.19 -0.82 2.3 -0.31 0.87 0 -57.33 0.55 -0.87 0.54 -0.89 0.91 -4.68 
+0.89 -4.76 0.76 -3.8 0.71 -3.84 0.76 -3.64 0.74 -3.69 0.8 -4.43 0.76 -4.5 0.5 -4.45 
+0.48 -4.46 0.61 -4.8 0.59 -4.84 0.34 -0.78 0.33 -0.8 0.19 2.73 0.2 2.76 0.48 -2.34 
+0.48 -2.39 0.5 -2.17 0.5 -2.19 0.32 -4.78 0.31 -4.82 0.35 -4.46 0.32 -4.5 0.19 -5.67 
+0.16 -5.68 0.3 -3.52 0.3 -3.55 0.2 -2.84 0.2 -2.89 0.02 -4.88 0 -4.9 -0.2 -5.21 
+-0.24 -5.21 0.07 -3.11 0.04 -3.13 -0.21 -6.55 0.24 -2.71 0.24 -2.76 0.32 -0.39 0.35 -0.39 
+-0.09 -4.02 -0.09 -4.05 0.07 -3.21 0.04 -3.25 0.11 -2.32 0.09 -2.37 -0.5 -4.58 -0.52 -4.56 
+-0.07 -1.71 -0.13 -3.47 -0.25 -2.5 -0.57 -5.04 -0.48 -3.71 -0.48 -3.75 -1.04 -7.51 -0.54 -3.78 
+-0.57 -3.77 1.13 5.21 0.57 2.63 -0.26 -2.59 -0.29 -2.61 -0.28 -2.62 -0.39 -3.95 -0.21 -1.98 
+-0.76 -3.93 -0.8 -3.93 -0.82 -3.93 -0.63 -3.25 -0.65 -3.26 -0.67 -3.28 -0.52 -2.78 -0.52 -2.8 
+-0.54 -2.82 -0.17 -1.5 -0.35 -3.04 -0.96 -4.19 -0.98 -4.21 -1.02 -4.23 -1.05 -4.32 -1.08 -4.34 
+-1.13 -4.36 -1 -3.6 -1.02 -3.61 -1.05 -3.62 -1.52 -4.93 -1.54 -4.93 -1.61 -4.92 -1.2 -3.37 
+-1.19 -3.34 -1.22 -3.32 -1.74 -4.71 -1.75 -4.67 -1.78 -4.66 -1.61 -4.13 -1.63 -4.12 -1.65 -4.1 
+-2 -4.82 -2.04 -4.8 -2.06 -4.77 -3.64 -8.16 -1.87 -4.05 -1.13 -2.15 -1.11 -2.15 -1.13 -2.12 
+-3.6 -7.04 -1.82 -3.45 -1.84 -3.43 -1.84 -3.39 -1.87 -3.36 -2.09 -3.56 -2.08 -3.54 -2.08 -3.46 
+-1.65 -2.87 -1.67 -2.87 -1.67 -2.82 -3.77 -5.99 -1.89 -2.93 -1.56 -2.39 -1.57 -2.36 -1.56 -2.32 
+-1.46 -2.08 -1.45 -2.07 -1.46 -2.04 -1.52 -2.08 -1.5 -2.06 -1.5 -2.04 -1.25 -1.26 -0.63 -0.61 
+-1.43 -1.82 -1.41 -1.8 -1.41 -1.79 -1.52 -2.04 -3.04 -3.99 -1.82 -2.34 -1.83 -2.3 -1.82 -2.26 
+-3.28 -4.1 -3.29 -4.02 -1.65 -1.89 -1.67 -1.84 -2.58 -2.91 -2.58 -2.87 -3 -3.58 -3 -3.52 
+-2.86 -3.21 -2.84 -3.13 -2.65 -3.05 -2.66 -3 -2.46 -2.67 -2.45 -2.62 -0.65 -0.22 -0.65 -0.2 
+1.21 2 1.17 1.97 0.42 1.05 0.39 1.06 -0.41 -0.12 -0.43 -0.14 -2.3 -1.34 -1.73 -1 
+-2.36 -2.14 p
+-2.37 -2.11 2.11 2.69 2.08 2.69 2.04 2.7 2 2.69 5.08 5.91 -0.74 0.25 3.54 4.3 
+3.54 4.36 -1.93 -1.82 -1.91 -1.8 -0.95 -0.65 -0.96 -0.63 -1.32 -0.98 -1.3 -0.93 2.6 3.95 
+1.74 2.54 1.74 2.52 0.84 1.5 0.82 1.5 0.83 1.58 0.8 1.59 -0.65 -0.41 -0.67 -0.41 
+1.97 2.71 1.93 2.69 0.74 1.52 0.71 1.52 1.91 2.97 1.89 2.95 1.86 2.84 1.82 2.87 
+1.71 2.49 1.67 2.5 1.15 1.34 1.15 1.37 2.13 3.27 2.08 3.28 2.04 3.39 2 3.38 
+1.67 3.16 1.65 3.15 -0.35 0.45 -0.32 0.43 1.09 1.3 1.11 1.33 1.86 2.62 1.87 2.67 
+1.48 2.54 1.43 2.56 1.82 3.45 1.75 3.45 -2.12 -3.28 -2.17 -3.25 -3.64 -5.29 -0.02 0.63 
+0 0.61 -0.37 0.06 -0.37 0.05 1.09 1.58 1.07 1.58 0.75 0.55 0.76 0.59 1.41 2.14 
+1.41 2.18 2.13 3.38 2.08 3.39 1.8 2.52 1.78 2.54 3.04 5.49 3 5.55 -1.43 -2.06 
+-1.43 -2.02 -2.06 -3.26 -2.08 -3.23 -1.11 -1.11 -1.13 -1.11 -1.41 -1.75 -1.43 -1.72 -1.43 -1.75 
+-1.43 -1.7 -1.76 -2.52 -1.78 -2.5 1.67 3.13 1.65 3.15 1.61 2.97 1.59 2.97 1.58 3.14 
+1.54 3.15 1.87 3.6 1.82 3.61 1.3 4.77 1.61 2.71 1.59 2.74 0.7 2.12 0.67 2.08 
+0.57 3.09 0.48 3.3 -0.37 0.43 -0.34 0.46 1.08 4 0.21 1.47 0.2 1.48 -0.37 0.33 
+-0.35 0.32 -0.37 0.3 -0.37 0.32 -0.52 0.39 -0.5 0.39 -0.74 -0.26 -0.74 -0.24 -0.89 -0.76 
+-0.89 -0.73 -1.24 -1.26 -1.21 -1.25 -0.7 -0.31 -0.68 -0.28 -0.73 -0.2 -0.72 -0.2 -0.7 1.65 
+-0.83 -0.79 -0.84 -0.78 -1.52 -1.78 -1.54 -1.76 -0.91 -0.71 -0.93 -0.72 -1.1 -0.7 -1.11 -0.67 
+-3.12 -5.77 -1.39 -1.7 -1.37 -1.7 -0.45 0.24 -0.35 0.22 0 -49.2 0.35 -0.35 0.37 -0.34 
+-1.15 -2.69 -1.17 -2.72 -1.09 -0.89 -1.09 -0.87 0.09 2.3 1.11 2.02 1.08 2.02 0.76 0.76 
+0.74 0.76 0 49.2 -0.09 0.04 -0.91 0.48 -0.63 0.31 -0.61 0.3 -0.56 0.26 -0.59 0.26 
+-1.13 0.48 -0.93 -0.24 -0.93 -0.21 -0.56 -0.32 -0.57 -0.3 -3.09 -4.3 -0.43 0.16 -0.41 0.17 
+-1.39 -1.61 -1.39 -1.58 -0.98 -1.24 -1 -1.22 -0.59 0.22 -0.61 0.24 -1.21 0.44 -0.52 0.17 
+-0.54 0.2 -0.16 1.08 -0.15 1.07 0.91 2.71 0.91 2.69 -0.13 0.95 -0.16 0.96 1.58 3.04 
+1.55 3.04 0.7 0.3 0.69 0.32 0.93 1.26 0.95 1.23 0.76 1.74 0.74 1.73 3.17 6.17 
+2.82 6.12 0.48 1.78 0.45 1.76 0.79 2.23 0.75 2.24 0.83 2.64 0.8 2.65 0.87 2.64 
+0.87 2.63 1.06 2.66 1.04 2.65 0.76 2.21 0.76 2.23 0.54 2.62 0.52 2.61 0.39 2.59 
+0.37 2.56 0.79 2.17 0.74 2.17 1.7 6.99 -0.09 3.23 1.15 5.16 0.11 -4.02 1.98 9.42 
+-0.57 -4.17 0.11 -3.34 1.93 6.3 0.54 4.19 0.54 4.25 1.15 5.99 1.13 5.23 2.37 4.91 
+1.06 4.46 0.52 4.19 1.45 4.66 1.69 4.82 -0.34 -5.03 1.67 4.73 2.06 3.38 0.82 1.21 
+0.8 1.21 1.87 5.08 1.73 3.39 0.91 1.25 0.89 1.29 0.74 0.37 1.48 0.78 0.71 0.37 
+1.06 2.32 1.04 2.32 0.72 0.41 0.73 0.42 0.91 2.23 0.89 2.23 0.82 0.5 0.82 0.48 
+0.98 1.48 p
+0.95 1.5 0.91 0.98 0.89 1 0.85 2.3 0.84 2.34 1.48 4.68 0.72 3.23 0.7 3.25 
+0.84 2.89 0.82 2.89 0.09 1.97 0.11 1.97 0.22 4.78 0.78 2.97 0.74 3.02 0.79 3.52 
+0.78 3.54 0.09 -3.23 0.08 -3.25 0.13 -2.28 0.13 -2.3 1.61 7.12 -0.32 1.64 -0.3 1.61 
+0.41 3.28 0.39 3.3 1.34 -1.65 0.48 2.93 0.43 2.93 0.26 3.21 0.21 3.23 0.74 3.3 
+0.7 3.32 0.13 2.67 0.15 2.66 0.83 0.98 0.84 0.98 0.2 2.37 0.21 2.38 0.61 1.26 
+0.61 1.28 0.28 2.48 0.29 2.5 0.71 0.41 0.7 0.43 0.52 -2.08 0.5 -2.09 0.41 -1.62 
+0.41 -1.65 -0.02 -3.27 -0.05 -3.3 0.63 2.91 0.61 2.95 0.48 0.61 0.48 0.63 1.34 -2.64 
+0.39 6.16 -0.59 1.46 -0.59 1.43 0.43 3.47 0.43 3.51 0.13 3.04 0.11 3.04 0.52 1.46 
+0.52 1.47 -0.28 2.48 -0.31 2.45 0.13 3.28 0.11 3.28 0.43 3.91 0.39 3.93 0.7 1.29 
+0.67 1.3 0.65 1.3 0.65 1.33 -0.02 3.97 -0.08 3.95 -0.59 2.13 -0.61 2.11 1.47 0.61 
+1.39 -2.64 0.59 0.65 0.56 0.65 1.3 0.05 0.61 0.07 0.63 0.08 0.39 2.41 0.37 2.43 
+0.5 -2.5 0.5 -2.52 0 4.64 -0.05 4.67 0.68 -1.43 0.67 -1.46 0.04 -3.84 0 -3.82 
+0.24 -3.97 0.22 -3.99 -1.04 -2.34 0.26 -3.78 0.21 -3.77 0.17 -3.17 0.13 -3.19 -0.13 -2.97 
+-0.16 -2.97 -0.06 -3.5 -0.09 -3.47 0.91 -3.61 0.43 -0.61 0.42 -0.61 0.2 -3.63 0.15 -3.64 
+0.74 1.22 0.72 1.21 0.41 -1.95 0.39 -1.97 0.31 -1.5 0.28 -1.52 0.54 -1.14 0.52 -1.15 
+0.45 -0.65 0.43 -0.65 0.16 -3.16 0.13 -3.18 0.43 -2.66 0.39 -2.69 0.49 1.37 0.5 1.39 
+1.09 5.82 0.11 4.41 0.09 4.38 0.26 4.08 0.24 4.1 0.2 4.82 0.17 4.82 -0.02 4.54 
+-0.07 4.53 -0.08 4.56 -0.11 4.53 -0.3 4.17 -0.32 4.14 -0.29 4.32 -0.32 4.3 -0.28 4.49 
+-0.33 4.47 -0.43 5.14 -0.48 5.12 -0.33 2.78 -0.34 2.78 -0.52 4.21 -0.56 4.19 -0.21 3.71 
+-0.24 3.71 -0.76 4.84 -0.79 4.79 -0.45 4.45 -0.48 4.43 0 57.33 -0.52 1.41 -0.07 -1.21 
+-0.09 -1.22 -0.17 -2.99 -0.11 -1.43 -0.15 -1.39 -0.11 -1.16 -0.15 -1.13 -0.76 2.37 -0.78 2.37 
+-0.76 1.43 -0.78 1.41 -0.93 1.69 -0.93 1.67 -1 2.63 -1 2.61 -1.22 3.23 -1.23 3.19 
+-0.11 -0.95 -0.11 -0.91 -0.52 -0.15 -0.54 -0.15 -0.37 0.11 -0.37 0.13 0.09 -1.84 0.07 -1.82 
+1.04 -4.52 0.98 -4.53 0.59 -2.84 0.54 -2.86 0.35 -2.67 0.3 -2.67 0.92 -2.78 0.91 -2.8 
+0.48 -2.54 0.5 -2.54 0.39 -3.93 0.32 -3.91 -0.45 -0.48 -0.46 -0.5 -0.13 -1.56 -0.15 -1.57 
+-0.28 -0.91 -0.33 -0.93 -0.72 1.26 -0.71 1.21 -0.72 1.56 -0.71 1.54 -0.7 1.7 -0.67 1.67 
+-0.04 -2.39 -0.04 -2.34 -0.2 -1.78 -0.24 -1.76 0.19 -3.53 0.17 -3.5 -0.26 -1.67 -0.29 -1.65 
+-0.78 5.08 -0.83 5.1 -0.63 3.71 -0.58 3.26 0 -89.47 0.32 -1.33 0.33 -1.34 -0.24 -3.84 
+-0.26 -3.8 -0.41 0.48 -0.43 0.5 -1.21 -2.3 -0.02 3.79 -0.04 3.8 0.54 -0.29 0.52 -0.3 
+0.46 2.3 0.46 2.32 0 89.47 -0.09 0.45 0.05 2.09 0 2.11 -1 3.02 -1 2.97 
+-1.17 3.56 p
+-1.19 3.52 -1.26 3.25 -1.28 3.21 -0.74 1.13 -0.76 1.13 -0.62 0.07 -0.61 0.06 -0.24 -0.32 
+0 -22.27 0.96 -2.71 0.95 -2.74 0.91 -4.25 0.87 -4.25 0.46 -3.91 0.42 -3.91 -0.91 3.86 
+-0.95 3.82 -0.74 3.71 -0.2 1.02 0 -27.54 0.65 -3.14 0.65 -3.19 0.11 -3.17 0.08 -3.17 
+-0.54 3.39 -0.57 3.36 -0.19 2.95 -0.2 2.97 0 27.54 -0.57 2.68 -0.59 3.34 -0.61 3.34 
+0 22.27 -0.24 -0.39 -0.5 -0.7 -1.3 -0.39 -0.48 -0.8 -0.35 -0.57 0 -94.68 -0.04 -2.76 
+-0.28 -2.54 -0.32 -2.54 -0.39 -2 -0.41 -1.97 -0.39 -2.02 -0.43 -2 -0.3 -2.95 -0.33 -2.93 
+-0.15 -3.75 -0.2 -3.75 -0.48 -1.93 -0.5 -1.91 -0.55 -1.39 -0.54 -1.37 -0.15 4.14 -0.2 4.14 
+0.09 2.45 0.07 2.45 0.37 1.71 0.34 1.74 0.87 3.95 0.04 4.86 0.5 2.19 0.48 2.22 
+0.55 1.67 0.52 1.69 0.43 1.59 0.43 1.61 0.5 1.07 0.48 1.08 0 91.93 -0.15 -0.24 
+-0.34 -1.21 -0.35 -1.2 -0.63 0.3 -0.63 0.29 -0.62 0.04 0 -82.53 0.17 -3.04 0.15 -3.02 
+-1.17 -2.52 -0.15 2.34 -0.15 2.37 0.59 1.93 0.57 1.93 0 82.53 -0.05 0 -0.65 0.05 
+-0.8 0.8 -0.79 0.76 0.83 -4.28 0.78 -4.27 -0.34 -2.43 -0.63 1.76 0 -90.11 -0.76 -2.71 
+-0.76 -2.69 -0.09 2.3 -0.11 2.32 0.87 0.39 0.85 0.39 0 90.11 -0.19 0.54 -0.83 2.3 
+-0.65 1.76 -0.67 1.71 -0.8 0.74 -0.8 0.72 -0.3 -0.43 -0.33 -0.43 -0.2 1.67 -0.21 1.64 
+0.35 1.02 0.35 1 -0.37 2.69 -0.37 2.71 0.18 1.79 0.15 1.8 -0.62 2.13 0 -26.96 
+0.93 -1.49 0.91 -1.52 0.71 -2.41 0.72 -2.39 -0.7 0.09 -0.37 0.04 0 -85.82 -0.63 -2.3 
+-0.63 -2.28 -0.54 -2.09 -0.57 -2.06 -0.37 -1.7 -0.39 -1.7 -0.67 -0.49 -0.66 -0.5 -0.54 -1.37 
+-0.57 -1.37 -0.65 -0.48 -0.67 -0.48 -0.59 -0.87 0 -7.29 1.52 -1 0.74 -1.58 0.74 -1.63 
+-1.04 -4.51 -0.67 1.11 -0.7 1.11 -0.5 0.37 -0.52 0.37 -0.65 -0.84 -0.65 -0.87 -0.36 1.52 
+-0.37 1.5 0.59 1.34 0.61 1.38 0.65 0.86 0.63 0.89 0 7.29 -0.02 -0.04 -0.63 -0.91 
+-1.47 0.04 -0.57 -1.39 -0.59 -1.37 -0.61 -1.32 -0.58 -1.3 -1.02 -2.32 -0.91 -3.23 -1.26 -2.54 
+-1.95 -0.59 -1.39 -1.67 -0.26 5.45 0.93 3.19 1.54 -0.04 1.55 2.02 1.19 0.63 -1.15 3.56 
+1.93 0.59 1.48 2.09 0.84 -0.84 0.83 -0.89 0.48 2.26 0.48 2.28 1 3.6 0.71 0.07 
+0.72 0.05 0.72 0.02 0.71 0 1.08 2.78 0.67 -0.59 0.65 -0.61 0.24 3.78 0.2 3.79 
+0.97 0.59 0.96 0.56 0 85.82 -0.35 0.05 -1.52 -2.64 -0.46 -0.83 -0.48 -0.82 -0.11 -1.62 
+-0.13 -1.61 -0.78 -0.11 -0.81 -0.11 -0.32 2.76 -0.37 2.78 0.43 1.78 0.39 1.8 0.22 2.02 
+0.17 2.04 0.7 -0.28 0.67 -0.26 0.26 1.37 0.26 1.39 0 26.96 -0.39 1.3 -1.04 3.45 
+0.24 -2.8 0.21 -2.75 0.02 -2 0.02 -1.98 -0.17 -1.5 -0.16 -1.5 -0.65 0.2 -0.67 0.2 
+-0.84 2.41 -0.26 0.74 0 -42.86 1.52 -3.69 0.14 -2.25 0.11 -2.25 -0.63 -0.35 -0.61 -0.34 
+-1.78 2.99 0.13 2.17 0.11 2.2 0.52 0.78 0.5 0.76 0 42.86 -0.61 1.65 -0.3 -0.76 
+-0.29 -0.76 p
+-1.12 -1.56 -0.87 4.02 -0.91 4.03 -0.15 2.63 -0.2 2.65 -0.65 2.91 -0.35 1.5 0 -35.98 
+0.96 -0.26 0.95 -0.24 -0.5 -2.28 -0.5 -2.25 -0.91 5.03 0 35.98 -0.32 1.43 0.13 2.04 
+0.11 2.06 0.82 -0.59 0.84 -0.58 0.09 2.11 0.09 2.14 1.54 -2.97 1.54 -3.02 1.11 -3.43 
+1.09 -3.47 1.13 -2.39 1.13 -2.43 0.46 0.26 0.43 0.28 1.13 -2.48 1.11 -2.5 0.8 -0.71 
+0.79 -0.7 0.17 2.56 -0.84 3.32 -0.87 3.34 -1.47 5.77 -0.93 3.89 -0.96 3.88 -0.21 2.21 
+-0.22 2.24 -1.02 3.34 -1.04 3.32 -0.72 3.84 -0.76 3.84 0.57 0.24 0.54 0.24 0.74 0.04 
+0.74 0.02 0.65 1.48 0.3 0.82 0.29 0.8 -0.13 1.54 -0.15 1.56 0.5 0.55 0.48 0.57 
+0.28 0.78 0.26 0.8 0.26 0.78 0.29 0.8 0.26 0.55 0.26 0.56 0.87 1.17 0 1.36 
+-0.02 1.37 1.82 1.13 0 27.11 -0.5 1.84 -1.08 4.04 -2.89 6.77 -2.95 6.73 -0.67 2.14 
+-0.7 2.17 -2.82 5.01 -0.48 0.87 0 -78.73 2 -2.56 0.24 -1.96 0.24 -1.93 -1.22 1.25 
+-1.21 1.24 -0.05 3.95 0 78.73 -2.34 4.06 -0.61 1.71 0 -109.55 0.24 -2.43 0.2 -2.4 
+-0.65 0.11 -0.67 0.13 -0.22 2.14 -0.24 2.17 0.67 0.15 0.67 0.13 0 109.55 -0.76 2.21 
+-1.45 3.97 0 1.84 -1.69 2.67 -2.23 3.28 -2.26 3.21 0.35 -1.17 0.32 -1.17 -0.63 0 
+-0.65 0.02 -0.61 -0.06 -0.63 -0.07 0.39 1.56 0.65 1.05 0.41 -0.07 0.39 -0.09 0.87 0.96 
+0 46.74 -2.67 4.36 -2.25 3.54 0 -176.2 1.69 -5.21 0.97 -1.43 0.98 -1.41 -0.31 2.97 
+-0.34 3 1.09 -2.56 1.07 -2.58 0.36 -2.52 0.35 -2.49 0.78 -1 0.79 -1.02 -0.2 -1.43 
+-0.21 -1.41 1.9 -5.68 0.88 -2 0.84 -1.99 2.34 -3.04 -0.91 0.45 -0.89 0.41 -0.95 1.26 
+-0.98 1.22 -0.76 2.45 -0.78 2.46 -0.87 1.93 -0.89 1.93 -0.93 1.41 -0.96 1.41 -0.78 2.62 
+-0.8 2.63 -0.85 2.34 -0.84 2.37 -0.39 2.45 -0.39 2.47 0 176.2 -0.93 1.45 0 -198.66 
+1.25 -1.12 0.68 -2.76 0.65 -2.78 0.7 -3.62 0.65 -3.63 -0.09 -2.32 -0.11 -2.3 -0.39 -3.47 
+-0.66 -0.43 -0.65 -0.41 -0.74 -2.52 -0.39 -1.24 -0.39 -1.26 -0.93 -2.84 -0.41 -2.82 -0.83 -0.83 
+-0.33 -2.4 1.11 -6.04 1.78 -5.79 1.67 -0.13 1.37 -3.67 0.91 2.32 -0.5 6.06 0.87 2.39 
+0.16 2.08 0.15 2.06 0.39 4.64 0.8 -0.91 0.82 -0.91 -0.46 -1.43 -0.48 -1.43 0.3 -3.12 
+0.28 -3.11 0.15 -2.73 0.13 -2.73 -0.16 -2.65 -0.17 -2.62 1.11 -1.59 1.09 -1.59 0.67 -1.13 
+0.7 -1.12 0.8 -1.63 0.79 -1.61 0.13 -2.52 0.09 -2.5 0.82 -0.8 0.83 -0.79 0.95 -1.9 
+0.93 -1.93 0.85 -1.5 0.82 -1.52 0.7 -3.14 0.66 -3.15 -0.14 -2.95 -0.15 -2.95 -0.71 1.13 
+-0.72 1.11 -0.83 4.04 -0.87 4.04 -0.04 -2.06 -0.06 -2.06 -0.61 -0.07 -0.63 -0.05 -0.57 3.32 
+-0.61 3.3 -0.82 0.22 -0.81 0.21 -0.76 1.59 -0.76 1.56 -0.35 2.52 -0.39 2.54 -0.41 1.69 
+-0.43 1.7 -0.42 -0.93 -0.39 -0.91 -0.02 -5.25 1.58 -4.37 1.17 -5.16 0.59 -2.61 0.54 -2.61 
+0.46 -2.8 0.41 -2.8 0.63 -2.45 0.58 -2.45 -0.48 -1.46 -0.5 -1.43 -0.95 -1.7 -0.98 3.95 
+-0.85 6.77 p
+-1.07 6.36 -1.52 4.41 -1.09 -2.15 -1.95 6.04 -0.28 5.58 -0.96 5.68 -1.61 5.84 -0.8 4.82 
+-0.37 4.86 -0.39 1.28 0 -88.41 -1.02 -4.69 -1.78 1.28 1.41 1.7 1.39 1.71 0 88.41 
+-1.08 3.6 -1.39 5.25 -0.91 3.56 1.15 3.23 -1.55 6.82 1.34 0.91 1.2 2.02 1.02 1.73 
+0.61 0.21 0.61 0.24 0.13 1.5 0.11 1.5 0.41 1.52 0.39 1.52 -0.12 2.56 -0.16 2.54 
+-0.41 2.52 -0.43 2.52 -0.7 3.82 0 198.66 -2.89 4.55 -6.25 9.44 -6.4 9.33 -6.58 9.22 
+-6.72 9.12 -6.88 8.98 -7.03 8.86 -7.21 8.74 -7.34 8.59 -7.5 8.48 -3.82 4.19 -3.82 4.16 
+-3.88 4.1 -3.89 4.13 -7.94 8.07 -4.04 3.97 -4.01 3.95 -8.21 7.81 -4.19 3.82 2.8 -2.59 
+3.52 -3.27 3.47 -3.3 2.34 -2.25 2.32 -2.24 2.26 -2.25 2.25 -2.21 2.21 -2.22 2.19 -2.21 
+2.15 -2.19 2.11 -2.19 2.11 -2.17 2.06 -2.17 2.04 -2.14 1.99 -2.13 1.98 -2.12 1.95 -2.13 
+1.91 -2.11 1.89 -2.11 1.87 -2.08 1.84 -2.09 1.82 -2.06 1.78 -2.04 1.76 -2.04 1.73 -2.02 
+1.71 -2.02 0.96 -1.13 0.93 -1.11 0.91 -1.11 0.91 -1.08 0.89 -1.09 0.87 -1.04 0.87 -1.07 
+0.85 -1.04 0.82 -1.02 0.83 -0.99 0.8 -1.02 0.8 -0.98 1.56 -1.95 0.76 -0.95 1.47 -1.87 
+0.72 -0.93 0.74 -0.91 0.7 -0.91 0.69 -0.89 -1.04 1.32 0 -174.91 2.23 -0.06 2.63 -2.26 
+1.49 -2.45 1.48 -2.49 2.99 -3.56 1.06 -1.84 1.04 -1.84 1.02 -2.61 1 -2.62 1.19 -2.71 
+1.18 -2.71 -2.91 4.3 -1.06 1.08 -1.05 1.06 0.76 -2.17 0.76 -2.2 1.11 -3.21 0.84 -0.74 
+0.85 -0.76 0.84 -1.04 0.87 -1.04 1.09 -3.21 1.06 -3.23 -0.89 0.57 -0.89 0.58 -0.11 -0.95 
+-0.09 -0.93 -1.43 -0.11 -1.36 0.37 -2.7 5.14 -1.39 4.3 -1.32 0.76 -1.06 -0.91 1.34 -4.68 
+0.17 -2.63 -1.99 3.12 0.13 -2.49 1.72 -4.99 1.71 -4.57 -1.58 2.52 -2.54 5.42 -0.96 3.52 
+-0.46 4.21 -1.19 3.58 0 -44.03 1.35 -0.87 2.02 -0.34 1.95 -4.32 1.39 1 2 -0.39 
+1.67 0.3 -0.04 -4 -0.11 -3.97 2.02 -2.04 -0.41 -4.73 1.91 -5.62 0.89 -5.36 2.15 -3.37 
+1.97 -2.28 0.63 -4.23 2.12 -1.93 1.8 -1.13 1.65 -1.59 -0.79 -3.56 -0.96 -2.3 0.5 -4.23 
+1.1 -5.51 1.46 -5.88 0.61 -5.12 -0.07 -4.97 0.11 -5.82 1.97 -3.41 0.74 -7.92 0.69 -5.55 
+-0.71 -4.43 -0.73 -4.38 -0.76 -3.19 -1 3.67 -1.11 1.43 0 -40.26 1.24 -1.33 0.7 -3.86 
+1.87 0.28 1.32 2.59 1.47 0.78 0.54 -5.04 2.13 4.51 1.43 -1.13 -0.96 -5.96 -1.29 2.32 
+-1.32 0.26 0.41 -4.14 -1.28 -0.57 -1.34 0.33 -1.59 -0.02 -1.54 -3.45 -1.61 -0.02 -1.48 -1.58 
+-1.59 -0.71 -1.56 -0.81 -1.73 0.85 -1.35 -0.57 -1.78 -1.78 -1.24 -2.04 -1.87 -1.02 -1.54 1.05 
+-1.91 -0.91 -1.67 -0.76 0.04 2.52 -2.08 0.52 -1.67 -0.78 0.73 4.06 0.26 5.27 2.04 0.3 
+1.11 2.84 1.15 0.24 1.82 -0.69 1.63 0.84 1.21 -3.1 1.32 0.56 1.52 1.59 1.59 0.86 
+1.26 1.35 0.39 5.86 1.76 -0.74 1.91 0.34 1.52 0.89 0 40.26 -0.41 0.52 -1.11 -2.78 
+-2.15 1 -0.61 -3.95 -1.32 -1.86 -1.04 -3.45 -1.61 6.68 -0.57 -2.8 -1.22 -2.58 -1.75 -1.43 
+-1.32 5.1 p
+-1.61 4.63 -1.02 4.51 -1.96 3.21 -0.22 0.11 0 -22.44 0.14 -5.36 -1.35 -0.61 -0.76 5.45 
+1.97 0.52 0 22.44 -1.84 0.93 -1.11 4.41 -1.45 2.02 -1.56 4.73 -1.02 5.64 0 5.27 
+1.91 -0.15 1.65 1.63 1.46 1.24 -1.2 6.88 -1.24 5.75 0.89 2.89 1.07 3.16 0.09 5.04 
+-0.78 4.73 -0.18 4.73 -0.95 7.34 0.08 4.44 1.24 3.11 -1.45 3.54 -0.8 7.03 -1.3 4.38 
+-0.46 5.23 -1.15 5.17 0 44.03 -0.22 0.61 -0.56 3.79 0.97 0.43 2.09 -3.05 -1.5 4.77 
+-0.21 3.11 -2.45 5.16 0.95 0.54 -1.19 4.04 -3.47 5.12 0 174.91 -1.59 2.02 -2.62 3.3 
+-2.62 3.25 -2.65 3.23 -2.62 3.19 -2.61 3.11 0 -172.03 2.28 -1.76 2.24 -3.23 3.17 -3.66 
+0.02 -3.97 2.15 -3.3 2.23 -1.93 0.34 -3.59 -3.02 4.71 -0.46 -1.28 -1.37 2.08 0 -2.52 
+2.58 -4.01 2.09 -3.32 0.59 2.15 2.1 -3.38 0.3 -3.63 -1.8 1.37 1.61 -4.23 -0.98 -0.46 
+2.54 -3.24 1.05 -3.95 -1.79 0.91 -2.17 2.06 -1.02 4.34 -2.09 3.4 -0.95 -0.56 0.11 -3.87 
+-2.02 3.8 -2.48 4.43 -0.72 0.76 0 -16.17 3.69 -5.04 1.5 -6.01 0.41 -3.06 2 -5.36 
+1.04 -4.88 1.13 -3.97 0.57 -6.1 -1.8 5.36 -0.93 4.82 -1.29 5.99 -1.15 4.36 -1.91 6.21 
+-3.26 7.68 0 16.17 -1.43 1.56 0.63 2.61 1.3 -1.5 0.17 3.34 2.96 -5.12 0.58 1.66 
+2.06 -3.77 -1.15 4.36 -2.08 4.27 0 2.52 -1.73 2.63 0.5 1.67 -2.26 4.32 -1.32 -0.97 
+-2.69 2.91 0.41 1.82 -0.5 3.56 0 172.03 -0.02 0.04 -2.64 3.11 -2.65 3.06 -2.63 3.04 
+-2.64 2.99 -2.62 2.95 -2.62 2.91 -2.65 2.89 -5.25 5.64 -2.63 2.75 -2.61 2.73 -2.62 2.69 
+-1.59 1.63 0 -182.53 3.37 -4.73 2.87 -3.36 1.86 -0.46 2.84 -4.41 2.32 -4.71 2.3 -5.29 
+2.69 -4.45 3.64 -3.47 2.69 -2.78 0.93 1.17 -1.3 3.71 0 1.93 0.93 1.08 1.32 1.54 
+0.48 -2.56 1.82 -1.58 2.22 -0.67 0.49 -2.64 -0.93 -1.07 -3.12 2.43 -1.39 -0.98 1.78 -1.96 
+2.24 -3.17 -1.67 0.84 0 -6.9 1.8 -0.67 2.59 -3.82 1.49 -4.8 -1.78 1.17 -2.61 2.87 
+-2.3 1.37 0.18 2.25 0.63 1.63 0 6.9 -1.55 0.76 -1.41 -0.48 1.64 -5.32 -1.08 -1.91 
+-2.19 3.11 -1.63 4.23 -1.41 0.02 1.71 -2.91 -1.91 -0.32 -2.65 3.19 -2.23 2.56 -3.13 3.6 
+1.05 1.52 -2.72 3.49 -3.21 4.99 -2.25 1.87 -2.32 3.76 -2.82 4.25 -0.48 2.75 1.34 0.68 
+0.39 1.8 -1.54 3.93 0 182.53 -1.52 1.54 -6.3 6.29 -3.19 3.11 -1.61 1.54 0 -243.33 
+1.65 -2.15 1.3 -3.76 2.26 -4.1 1.19 -3.71 0.55 -4 -0.55 -1.93 -1.86 -0.61 -2.09 2.43 
+-1.93 2.69 -0.67 3.5 -1.02 4.51 0.09 2.45 0.56 2.32 0.52 2.34 0 243.33 -1.61 1.57 
+-3.23 3.06 -3.25 3.06 -3.3 3.04 -3.3 3.02 -3.32 3.02 -3.37 2.97 -3.36 2.95 -2 1.71 
+0 -182.23 3.11 -2.73 3.23 -4.1 3.66 -4.21 3.13 -3.8 2.67 -4.21 3.54 -4.36 -2.43 1.63 
+-0.82 -0.87 -3.47 2.63 -2.97 2.88 -3.17 4.58 -2.62 3.63 -2.78 4.05 -1.87 3.99 0.8 0.89 
+0 182.23 -1.41 1.22 -3.41 2.91 -3.45 2.89 -3.45 2.86 -3.47 2.82 -2.93 2.37 -2.97 2.37 
+-3 2.36 p
+-3.05 2.37 -3.08 2.39 -3.14 2.37 -3.18 2.38 -3.21 2.37 -3.28 2.39 -3.29 2.39 -3.34 2.36 
+-3.41 2.39 -3.43 2.39 -3.49 2.36 -3.54 2.39 -3.56 2.37 -3.64 2.37 -3.66 2.37 -3.71 2.34 
+-1.68 1.07 -3.43 2.13 -1.75 1.09 -1.79 1.08 -1.8 1.09 -1.82 1.11 -1.87 1.11 -1.87 1.13 
+-3.86 2.25 -1.98 1.13 -1.99 1.15 -2.02 1.17 -2.07 1.15 -2.1 1.17 -2.13 1.19 -2.15 1.18 
+-2.19 1.19 -2.24 1.2 -2.25 1.22 -2.28 1.21 1.63 -0.85 1.63 -0.86 1.67 -0.89 1.67 -0.91 
+1.7 -0.92 1.71 -0.93 1.71 -0.96 1.74 -0.96 1.76 -0.98 1.78 -1 3.61 -2.04 1.82 -1.04 
+1.84 -1.09 1.87 -1.08 1.5 -0.87 -4.88 2.88 -4.92 2.78 -4.91 2.78 -4.97 2.72 -4.97 2.69 
+-5.01 2.63 -5.04 2.6 -5.06 2.54 -5.05 2.52 -5.1 2.45 -5.1 2.43 -3.78 1.71 0 -130.03 
+4.28 -0.98 3.64 -1.82 2.8 -0.5 1.82 -1.91 2.37 -1.04 3.02 -0.33 4.26 -1.2 2.78 -1.58 
+4.32 -1.34 2.13 0.11 3.14 -2.06 2.65 -1.06 4.17 -3.38 -4.32 1.52 2.76 -1.72 2.07 -2.49 
+5.64 -2.64 -2.82 0.24 5.79 -4.06 3.17 -4.21 -1.07 -1.54 3.19 -2.06 1.45 0.46 4.95 -4.02 
+4.95 -3.52 0.57 -1.5 -1.84 -0.13 0 -2.34 2.06 -0.5 2.84 -2.46 3.1 -2.25 -0.72 -0.98 
+2.74 -3.1 2.23 -1.65 2.78 -1.87 0.26 -2.06 -2.97 0.7 -2.93 2.93 -2.78 1.8 -0.93 2.32 
+-3.05 2.24 -2.13 2.78 -0.5 2.11 0 2.34 -0.21 -0.02 -2.85 1.11 -4.03 2.78 1.95 -2.93 
+0.83 -1.91 3.6 -3.61 1.84 -2.34 2.95 -3.43 2.28 -3.21 3.22 -2.69 0.84 -2.28 2.11 -3.2 
+1.3 0 -1.35 2.56 2.65 -0.87 2.21 -0.09 3.54 -2.67 4.12 -3.02 3.69 -2.23 3.84 -4.34 
+0.29 -2.47 -2.88 1.56 -2.82 1.48 -2.54 2.61 -2.89 1.45 -1.65 -0.15 2.48 -1.54 1.02 -2.17 
+-2.82 0.46 -2.93 3.39 -3.32 3.21 -1.93 2.84 -2.82 1.28 -2.52 3.04 -2.87 2.8 -3.71 3.45 
+-4.12 3.23 -1.5 2.47 -2.89 3.93 -2.8 3.54 -2.47 3.06 0.29 1.47 -2.32 2.04 -2.82 0.93 
+-3.52 2.34 -4.04 2.52 -3.16 1.22 -3.26 2.47 3.5 -1.61 2.28 -0.67 -3.88 3.28 -3.41 3.15 
+-3.3 2.36 -3.78 1.86 -3.71 2.72 -4.05 1.52 -4.17 2.06 -3.49 1.3 -3.35 0.59 -2.73 0.46 
+-2.23 0.34 -4.64 1.89 0.24 1.21 -1.7 1.74 -1.65 0.22 1.37 -1.39 -2.5 0.61 -1.34 2.34 
+2.54 -0.65 2.37 0.04 1.25 1.04 2.56 0.29 0 130.03 -1.39 0.63 -5.14 2.34 -10.38 4.52 
+-5.21 2.16 -5.23 2.17 -5.25 2.09 -5.27 2.06 -5.29 2 -5.3 1.98 -5.34 1.89 -5.32 1.89 
+-10.72 3.6 -5.41 1.7 -5.38 1.71 -10.85 3.21 -5.45 1.52 -5.45 1.5 -5.49 1.43 -5.47 1.41 
+-10.98 2.65 -5.54 1.21 -5.51 1.24 -5.55 1.13 -5.53 1.13 -5.56 1.02 -5.55 1.04 -11.16 1.87 
+-5.6 0.85 -5.59 0.82 -11.2 1.48 -5.62 0.65 -5.62 0.63 -5.64 0.55 -5.62 0.54 -5.64 0.46 
+-5.64 0.43 -11.28 0.69 -5.64 0.26 -5.64 0.24 -5.66 0.15 -2.04 0.04 0 -0.11 2.54 -0.07 
+2.52 -0.09 1.04 -0.02 1.21 -0.05 0.26 -0.02 2.5 -0.09 2.13 -0.09 6.1 -0.28 6.07 -0.34 
+6.07 -0.39 6.08 -0.46 6.06 -0.5 6.01 -0.58 6.04 -0.61 5.99 -0.67 5.99 -0.74 5.95 -0.79 
+5.95 -0.84 p
+5.92 -0.89 5.88 -0.95 5.86 -1 5.84 -1.05 5.8 -1.08 6.18 -1.23 6.2 -1.28 6.21 -1.34 
+6.23 -1.43 6.23 -1.5 6.25 -1.57 6.25 -1.63 6.25 -1.69 6.25 -1.76 6.25 -1.82 6.27 -1.91 
+6.25 -1.97 6.25 -2.04 6.23 -2.11 6.23 -2.17 6.23 -2.23 6.21 -2.3 6.19 -2.39 0.32 -0.12 
+0.3 -0.11 0.61 -0.26 0.3 -0.11 0.29 -0.13 0.3 -0.11 0.28 -0.13 0.57 -0.22 0.28 -0.12 
+0.29 -0.11 1.57 -0.65 -6.02 2.37 -5.62 2.15 0 -129.8 3.91 -1.89 4.23 -2.23 2.14 -2.23 
+4.35 -2.02 3.66 -1.45 2.45 -0.45 1.72 -2.91 0.74 -2.52 2.6 -2.06 2.8 -1.78 -0.09 -0.89 
+1.37 -1.39 1.95 -0.5 -0.58 1.59 -0.07 1.49 3.43 -2.52 3.67 -2.3 -3.82 0.5 -0.63 -0.82 
+-2.5 0.61 -4.53 2.61 -1.8 -0.16 -1.15 1.63 -2.04 1.98 -1.93 0.43 -1.8 -0.15 -2.93 1.36 
+-2.47 0.46 -3 0.41 -2.15 -0.82 -3.28 1.58 0.42 1.47 1.21 1.2 0.18 1.21 -0.44 2.13 
+-1.56 2.19 -1.73 1.87 -5.04 2.43 4.59 -1.2 -0.11 0.96 1.52 0 -3.28 2.19 0 129.8 
+-0.41 0.17 -6.08 2.23 -6.1 2.21 -6.14 2.13 -6.14 2.06 -1.91 0.64 0 -129.47 5.67 -1.95 
+5.17 -2.15 4.75 -1.91 -5.82 1.52 -4.34 1.54 -1.54 1.46 -3.89 1.5 0 129.47 -0.56 0.17 
+0 -146.57 0.87 -1.95 1.95 -1.58 2.8 -0.93 2.34 -0.16 3.52 -0.65 3.37 -0.12 1.34 0.65 
+0.22 1.17 1.67 0.34 -0.35 1.2 3.06 0.11 -0.29 -1.52 1.15 -1.47 2.89 -1.16 4.1 -0.89 
+-3.12 -0.87 -3.58 0.84 -3.58 -0.06 -3.25 0.5 -2.41 -0.69 -0.87 -0.64 -2.67 0.46 -2.84 0.11 
+-3.04 -0.21 -2.72 -0.5 -3.29 -0.02 -2.21 -0.48 -0.78 -1.2 -2.99 -0.32 -3.54 0.11 -3.15 -0.67 
+-3.19 1.17 -2.32 0.45 -1.59 -1.06 -1.89 1.04 1.04 1 2.61 0.69 2.28 0.93 2.91 0.43 
+3.26 0.15 1.99 1.13 2.29 0.88 2.3 0.84 1.95 1.11 1.95 1.09 1.82 0.75 0 146.57 
+-3.71 1.21 -6.21 1.95 -2.04 0.63 0 -128.67 6.14 -1.66 2.11 -1 -4.8 1.26 -3.45 1.41 
+0 128.67 -4.19 1.28 -6.25 1.82 -6.27 1.76 -6.29 1.71 -6.3 1.63 -6.32 1.58 -6.31 1.5 
+-4.95 1.13 0 -132.27 4.26 -1.19 -1.24 -0.52 -3.19 0.91 -3.56 0.29 1.11 0.49 2.63 0.02 
+0 132.27 -1.36 0.33 -7.25 1.56 -7.25 1.47 -7.23 1.39 -7.21 1.33 -2.56 0.43 0 -136.98 
+3.71 -1.37 4.23 -0.28 3.08 1.06 4.88 0.31 4.73 -0.31 4.75 -0.74 -0.56 -1.06 -1.82 -0.89 
+-1.76 -1.24 -0.87 -1.97 -2.13 -1.43 -1.73 -1.67 -1.05 -1.24 -1.39 -1.47 -1.43 -1.11 -2.82 -1.2 
+-3.15 -0.74 -3.12 -0.79 -3.5 0.74 -3.04 -0.52 -0.59 -1.13 -2.78 1.09 -4.04 0.5 -4.62 -0.02 
+-4.21 -0.2 -3.11 -0.67 -4.77 -0.15 -3.95 -0.41 -2.41 -0.65 -3.69 0.07 -3.73 0.39 -1.93 -0.84 
+-2.24 -1.71 -1.93 -1.5 -3.16 -0.22 0.78 -0.86 4.78 -0.55 2.41 1.05 1.17 1.32 2.8 -0.41 
+3.19 0.39 3.58 0.26 4.3 0.02 -0.17 -1.34 -0.79 -1.11 -3.75 -1.17 3.58 -0.49 1.89 -1.31 
+3.54 -0.93 4.18 -0.82 3.67 0.32 3.73 0.32 4.04 -0.24 3.54 0.3 3.3 0.73 -2.11 1.29 
+-0.26 1.2 4.79 -1.72 2.11 -1.37 2.25 -0.3 4.14 -1.23 2.43 -1.21 -0.26 -1.02 -3.26 0.5 
+0.07 -1.17 p
+2.13 -0.71 1.91 -1.39 1.5 -1.61 2.08 -0.75 1.47 0.36 1.13 0.17 1.84 -1.43 2.91 -1.3 
+2.15 -2.17 3.17 -0.71 0.24 -0.98 2.87 -1.87 3.1 -2.11 2.78 -1.62 0.67 -0.39 3.39 -1.11 
+2.84 -0.28 3.41 -1.2 3.19 -0.57 2.87 -0.39 3.16 -1.13 3.89 -1.32 3.47 -0.96 4.69 -1.09 
+4.41 -1.47 3.97 -1.61 4.39 -1.61 0.82 -0.46 2.8 -1.57 1.34 0.3 -0.78 1.96 -2.63 2.06 
+2.54 0.18 2.63 0.13 -3.82 1.02 -2.25 1.63 2.61 0.19 3.05 -0.84 -3.84 2.59 -4.86 1.36 
+-2.08 1.87 -0.7 1.19 0 -5.62 4.06 -1.15 -0.57 -1.02 -2.82 0.5 -0.67 1.67 0 5.62 
+-0.43 0.76 1.24 0.41 -0.16 1.57 -0.45 1.8 3.37 -0.41 2.45 0.28 0.63 0.87 2.91 -0.52 
+3.62 -0.78 3.43 -0.59 3.34 -0.07 2.8 0.41 3.57 0.16 3.21 -0.5 3.69 -0.48 1.15 -0.48 
+4.4 -1.8 4.95 -1.8 1.07 -0.46 3.38 -1.43 4.63 -1.11 3.86 -1.41 4.14 -1.78 4.73 -2.47 
+5.29 -2.69 4.97 -2.98 0.54 -0.17 2.73 -0.93 4.97 -2.58 3.8 -3.04 4.1 -2.86 3.1 -3.02 
+0.5 -2.71 -2.23 0.52 1.63 -2.38 2.39 -1.43 3.75 -2.08 0.91 -1.41 2.67 -1.29 2.71 -2.79 
+4.66 -3.13 1.48 -0.15 3.43 -1.07 2.13 -2.19 3.53 -2.97 2.89 -2.8 2.06 -2.24 1.71 -2.45 
+1.34 0.13 2.63 -1.63 0.59 1.59 1.3 1.02 2.3 0.02 1.48 0.63 2.06 0.43 3.04 -0.63 
+3.21 -1.02 3.43 -1.46 3.11 -1.72 3.41 -2.47 3.06 -3.64 2.28 -4 2.3 -3.38 3.49 -4.06 
+-2.89 0.5 -3.41 1.72 -3.69 3.43 -3.43 0.67 -3.37 0.31 -1.71 2.97 -2.49 0.48 -1.26 -1.3 
+1.99 -3.71 -1.71 -1.36 -3.3 2.39 -3.16 2.02 -3.88 2.54 -0.44 -1.06 0.16 -1.55 -0.04 -2.12 
+1.54 -2.78 1.95 -2.67 2 -3.04 2.78 -2.54 2.41 -3 1.09 -2.06 -3.5 3.54 -1.73 -0.43 
+-1.91 1.52 -2.3 2.58 -3.32 2.67 -2.26 -0.21 0.35 -2.56 2.86 -2.78 3.3 -3.02 1.76 -2.67 
+2.26 -2.93 2.39 -1.82 1.93 -1.91 1.21 -2.8 -0.71 -1.22 2.47 -2.56 2.32 -1.59 1.87 0.29 
+1.26 0.89 1.15 1.28 2.67 -1.13 1.21 0.91 -0.45 1.89 -1.93 2.02 -2.04 2.37 -1.74 2.82 
+1.24 0.65 -0.02 1.57 -0.7 2.28 -0.11 1.95 3.71 -2.86 -0.67 -0.91 2.34 -3.15 1.98 -3.67 
+2.91 -2.23 2.21 -3.21 2.78 -3.61 2.4 -2.43 2.97 -2.82 1.07 1.69 1.04 1.71 3.09 -1.21 
+2.49 -0.87 2.56 -0.98 2.65 -1.34 0.67 0.93 1.76 0.61 2.5 -0.97 0.63 -2.87 2.09 1.04 
+2.06 -1.02 1.04 -2.49 1.37 -2.37 1.85 -2.39 1.04 -2.88 0.71 0.89 -1.06 3.28 0.75 0.91 
+0.07 1.71 1.7 -1.56 3.82 -3.1 0.26 -1.29 3.36 -3.28 1.52 -0.78 1.73 -2.07 0.28 -1.73 
+2.34 -2.97 2.76 -3.37 2.8 -3.43 2.25 -3.43 -0.3 -1.26 2.54 -1.8 2.06 -2.19 2.67 -3.56 
+2.11 -3.08 1.61 -3.14 2.56 -3.17 0.11 -2.56 1.95 -1.86 1.52 -3.19 1.93 -3.99 1.43 -3.61 
+1.91 -4.54 1.32 -4 0.3 -2.99 0.3 -2.95 -0.22 -2.47 2.15 -4.17 -2.54 0.11 2.63 -3.86 
+-2.02 -0.02 2.62 -3.45 0.55 -3.45 0.04 -2.89 0.89 -3.93 -0.11 -3.23 0.39 -3.41 1.5 -2.87 
+2.37 -1.52 0.58 -2.26 -0.37 -1.52 -2.28 1.91 -1.32 1.21 -2.02 3.02 -0.37 -1.52 -1.71 -0.34 
+-0.56 -2.29 p
+0.24 -3.29 0.7 -3.47 0.54 -3.8 1 -3.91 1.63 -3.8 0.76 -4.32 1.67 -3.45 1.98 -4.02 
+3.17 -2.36 2.2 -0.48 1.61 -1.83 2.54 -1.04 2.37 -1.3 2.66 -0.68 2.11 -0.45 2.39 -1.39 
+2.47 -1.11 2.8 -3.34 2.41 -2.8 2.23 -3.25 2.08 -3.64 1.73 -3.08 2.52 -5.23 1.64 -3.12 
+1 -3.23 0 -4.1 0.11 -3.71 0.11 -3.66 0.02 -3.7 -1.24 -2.45 2.11 -4.47 0.67 -4.55 
+-0.84 -2.76 0.15 -4.21 0.09 -4.23 -1.75 2.46 -1.65 3.79 -1.31 4.47 -1.75 -0.76 -1.72 1.46 
+-1.39 -2.34 -2.17 0.85 -2 2.02 -1.88 2.39 -1.74 1.39 -1.39 -0.09 -2.49 1.37 -1 -1.63 
+-1.5 -1.37 -2.04 4.13 -1.82 -0.76 -0.45 -2.82 1.8 -4.43 2.28 -4.78 0.91 -3.6 1.2 -4.25 
+0.41 -3.38 1.37 -4.82 1.78 -4.26 1.93 -3.1 1.17 2.45 2.21 -4.67 1.89 -1.24 1.91 -3.14 
+2.11 -3.8 1.65 -0.67 1.86 1.46 2.07 -1.93 2.1 -1.06 2.07 -1.02 2.04 -1.06 2.25 -2.67 
+1.32 -3.99 1.26 -4.02 1.24 -4.01 1.19 -4.06 1.76 -1.56 2.28 -3.56 1.78 -4.19 -2.19 -2.66 
+-1.52 0.89 -1.8 0.56 -2.04 0.29 -1.71 1.5 -2.23 0.91 -1.41 3.66 -2.21 1.89 -2.2 2.73 
+-0.96 4.23 -1.56 1.69 -1.76 4.25 -1.07 3.15 -1.08 2.16 -1.2 1.46 -1.87 1.32 -1.84 1.3 
+-0.24 0.26 0 -22.48 2.08 -1.08 1.76 -2.38 2 -2.13 2.04 -1.13 2.13 -0.26 2.28 -0.87 
+2.11 -2.84 2.36 -2.56 1.37 2.37 2.61 -2.32 1.67 1.09 2.32 -2.63 1.43 0.7 0.76 -4.41 
+1.28 1.45 2.06 -2.02 0.57 -3.8 0.02 -4.38 1.61 -1.65 1.8 2 1.68 -5.17 1.48 -1 
+1.17 -3.02 1.52 1.7 1.59 -1.82 -0.46 3.95 -1.17 1.32 -1.65 -1.02 0.15 3.8 1.35 2.43 
+1.65 -3.5 1.21 -3.08 1.13 0.43 0.59 -4.69 -2.8 0.35 1.28 -2.04 0.02 -5.25 0.96 -5.92 
+0.65 -4.45 0.44 -5.45 0.32 -4.73 -1.61 0.93 -1.32 -1.26 -0.29 -2.73 -1.24 0.5 -1.91 3.11 
+-2.02 1.35 -2.78 2.28 -1.86 2.34 -1 2.28 -2.08 1.26 -2.2 3.64 -2.08 2.91 -0.91 3.11 
+-2.02 3.84 -0.93 3.11 -2.08 2.09 -1.13 2.13 -1.07 0.06 0 -10.8 2.56 -4.82 -1.02 -1.7 
+-1.21 1.26 -1.02 3.82 0.7 1.43 0 10.8 -1.25 0.09 -1.78 4.82 -1.76 3.17 -0.63 2.62 
+-2.3 1.05 -1.43 0.21 0 -8.18 2.59 -2.34 0.74 -3.34 -2.13 2 -1.71 1.56 0.52 2.13 
+0 8.18 -0.7 0.11 -1.52 3.39 -2.21 1.8 -1.97 2.15 -1.29 -0.5 -2.69 2.19 -2.28 1.84 
+-1.74 2.35 -1.43 3.45 1.91 1.95 2.08 -1.19 1.89 1.98 2.28 1.62 0 22.48 -2.13 2.29 
+-2.37 1.64 -0.25 -2.17 -1.67 2.52 -1.41 3.69 -0.98 5.17 -1.78 4.32 -1.54 3.63 -0.32 3.32 
+-1.34 3.02 -2.28 2.67 -1.23 5.06 -2.41 3.45 -1.06 1.08 0 -541.79 -1.93 -2.63 -1.95 -2.63 
+-3.11 -3.69 -3.17 -3.69 -1 -1.52 -1.04 -1.54 -0.02 -0.58 -0.02 -0.61 -0.48 -1.74 -1.72 -1.91 
+-1.73 -1.93 -3.15 -2.82 -3.14 -2.8 -3.15 -2.75 -3.14 -2.71 -0.72 -0.48 -0.71 -0.46 -2.21 -1.71 
+-2.2 -1.68 -2.95 -2.36 -2.95 -2.32 2.47 2.41 2.45 2.41 -1.43 -0.87 -1.41 -0.84 -1.82 -1.17 
+-1.82 -1.15 1.66 1.91 1.63 1.89 2.5 2.52 2.45 2.54 2.45 2.32 2.43 2.32 2.82 2.62 
+2.82 2.65 p
+2.11 1.97 2.13 1.98 2.91 2.93 2.88 2.93 3.71 3.67 3.69 3.73 2.93 2.86 2.93 2.93 
+0 541.79 -1.8 1.82 -2.45 3.39 -2.17 2.86 -2.3 3.62 -2 3.11 -2.28 2.75 -2.37 1.56 
+-1.45 -0.08 0.82 -2.93 -0.39 -3.51 -0.2 -3.23 0.28 -3.43 -1.13 -1.52 -1.17 -0.65 -2.23 -0.11 
+-1.29 3.93 -1.67 4.49 -2.32 3.54 -2.56 3.19 -2.28 2.67 -0.89 -1.21 -2.21 1.8 -0.5 2.23 
+-2.25 1.78 -0.84 -1.17 -1.91 1.19 -2.69 1.18 -2.43 1.41 -2.06 2.04 -1.82 2.34 -2.06 1.96 
+-0.63 0.34 0 -118.21 2.96 -0.65 2.34 -2.46 2.3 -2.5 1.96 -2.73 2.11 -1.98 1.11 -3.96 
+0.3 -3.87 -1.04 -3.38 -2 -2.67 -1.7 -1.08 -1.71 2.21 -1.86 4.05 -1.11 2.65 -1.09 3.93 
+-0.5 3.05 -0.65 3.61 0.11 3.5 -1.52 2.28 0 118.21 -1.87 1.09 0 -3.78 0.09 -2.73 
+0.41 -3.23 -1.04 -2.22 -1.09 -2.19 -1.04 -2.24 -0.89 -1.91 -2.61 3.08 0.74 -2.6 -0.59 -2.45 
+-0.86 -2.62 0.74 -2.65 1.41 -1.78 0.71 -3.45 0.41 -3.65 -0.96 -2.66 -1.04 -1.84 -0.2 -3.47 
+0.28 -2.87 0.31 -3.69 -0.33 -3.4 -0.82 -2.32 -0.37 -2.65 0.13 -3.6 -0.67 -2.87 -0.37 -1.82 
+0.95 -2.93 -0.15 -2.37 -1.54 -1.97 -0.93 -1.45 0.56 -3.21 -2.3 -1.13 0.21 -3.37 0.79 -2.97 
+1.82 -3.49 1.8 -3.62 1.74 -3.59 1.11 -4.02 0.24 -3.99 0.04 -3.45 1.13 -3.32 1.23 -2.56 
+1.26 -3.86 -1.93 -1.34 -0.24 -4.21 1.02 -3.34 -1.5 -1.63 -1.15 -2.73 0.46 -4.38 -1.23 -2.73 
+-1.98 0.11 -1.97 1.34 -2.15 1.96 -1.8 3.41 -1.8 3.49 -1.7 2.85 -1.71 2.84 -1.84 2.04 
+-2.21 1.89 -1.89 2.09 -1.96 3.32 -1.75 2.8 -1.8 2.78 -1.45 2.99 -2.52 2.32 -2.47 2.32 
+-2.19 2.52 -1.67 2.22 -1.76 3.43 -1.56 2.93 -2.13 3.17 -2.2 3.23 -0.21 2.47 -1.32 1.11 
+-1.93 2.67 -1.06 3.28 -1.32 3.73 -2.11 1.93 -1.48 2.34 -1.15 3.23 -1.15 -0.17 0.61 -2.96 
+1.3 -3.73 -0.61 -3.06 -1.43 -2.28 -2.26 -1.48 -2.6 0.28 -2.7 1.54 -2.21 1.15 -2.3 2.41 
+2.23 1.43 1.43 2.25 -0.82 3.41 -1.7 -2.45 -2.19 -1.43 -2.82 0.76 -2.47 1.69 -2.25 0.5 
+-2.39 -0.19 -1.47 2.21 -1.8 2.11 -1.99 0.67 -1.89 1.35 -0.28 -0.09 0 -299.68 1.07 -0.82 
+-0.35 -2.09 -2.08 -0.37 1.37 3.28 0 299.68 -1.87 -0.55 -1.67 -1.69 -1.35 -1.41 -1.71 -1.61 
+-1.84 -0.48 -2.04 0.06 0 -301.45 0.97 -1.34 -0.58 -1.05 -2.09 -0.37 -0.45 1.89 2.15 0.87 
+0 301.45 -0.07 0 -0.83 -1.73 -2.28 -1.28 -1.75 -1.56 -2.13 -1.8 -2.88 -0.89 -1.89 -0.43 
+-2.54 -0.74 -2.04 -1.05 -2.26 -0.49 -2.8 -0.29 -2.6 -0.63 -2.98 -0.87 -1.86 2.58 -1.41 2.26 
+-2.2 1.26 -2.04 -0.98 -1.65 -1.95 -1.34 -1.74 -1.82 -2.54 -2.36 0.65 -1.89 -1.43 -2.17 1.35 
+-2.3 -0.46 -2.73 1.67 -2.32 0.7 -3.19 -0.26 -2.02 1.95 -1.89 2.56 -2.89 2.15 -2.78 2.71 
+-2.17 1.37 -1.34 -1.67 -1.98 0.85 -1.95 0.87 -0.29 -3.41 -2.06 -0.8 1.95 -2 -2.11 -1.86 
+2.15 -0.29 1.8 -2.58 2.17 -2.45 1.97 -1.98 2.71 -1.65 2.71 -1.71 2.5 -1.2 1.65 -2.15 
+0.55 -2.56 2.3 -1.8 1.25 -1.15 0.59 2.93 -0.57 2.59 0.91 0.89 1.8 -1.45 1.45 -2.76 
+0.7 -3.06 p
+-0.41 -3.47 1.84 0.74 1.24 -1.2 2.76 0.59 0.91 2.04 2.17 0.91 2.69 0.54 1.63 1.29 
+0.17 2.86 1.37 2.93 0.63 2.54 0.68 2.56 1.11 2.23 -0.11 2.3 1.26 -0.02 0.28 -1.61 
+1.19 -2.91 1.35 -3.39 2.71 -1.65 2.54 -1.13 2.69 -0.48 2.28 0.54 2.82 0.15 2.04 -1.95 
+2.39 -1.74 2.3 -0.63 0.11 -3.49 0.06 -3.47 -0.84 -2.15 -0.33 -2.52 -0.19 -2.95 -1.82 -0.83 
+-0.21 -2.99 0.67 -3.14 1.61 -2.17 -1.54 -1.78 -1.67 -1.34 -0.67 -1.48 0 -41.25 -0.2 -0.24 
+0 -370.68 -0.37 -2.02 0.02 -1.55 1.48 0.39 2.36 0.39 -2.12 -1.98 -1.39 0.11 -1.73 -1.43 
+-0.3 1.08 -2.73 -0.84 2.76 2.39 0.74 2.54 1.3 0.91 0 370.68 -1.82 -2.12 -1.95 -0.71 
+-1.87 0.45 1.26 2.11 2.52 0.3 2.06 0.22 0 41.25 -0.31 -0.65 0.2 -3.32 -0.83 -1.43 
+-1.67 -1.31 -1.97 -1.86 0.13 -3.32 -1.47 -2.26 -2.02 -0.26 -2.17 -1.37 -1.89 -2.38 -1.11 -1.02 
+0 -179.21 1.58 -2.69 1.11 -2.78 0.26 -3.41 1.04 -3.34 0.48 -4.41 0.2 -2.93 -2.04 -3.37 
+-1.89 2.15 -0.06 -4.93 -0.67 -2.62 -1.46 -1.72 -0.29 -2.54 -0.86 -3.56 -0.79 -3.08 -1.73 -3.69 
+-1.28 -3.13 -1.23 -3.12 -1.24 -2.65 -0.79 -2.56 -1.25 -2.56 -1.29 -2.62 -1.21 -2.61 -0.89 -2.5 
+-0.82 -2.54 -0.87 -2.54 -1.21 -2.07 -1.43 -3.03 -1.28 -2.59 -2.32 -3.15 -1.98 0.28 -2.73 -1.3 
+-2.45 -1.72 -2.65 -0.76 -0.48 0.3 0 -358.03 -5.55 -2.17 -5.55 -2.12 -5.51 -2.04 -5.49 -1.97 
+-5.1 -1.87 -5.12 -1.82 -5.17 -1.78 -5.21 -1.76 -3.61 -1.12 -3.58 -1.09 -3.58 -1.06 -3.55 -1.04 
+-2.89 -0.83 -2.88 -0.78 -2.87 -0.78 -2.84 -0.76 -1 -0.22 -0.97 -0.19 -1 -0.22 -0.95 -0.2 
+-2.78 -0.69 -2.76 -0.7 -5.46 -1.3 -2.2 -0.43 -2.17 -0.43 -2.12 -0.41 -2.13 -0.39 -2.28 -0.57 
+-2.28 -0.54 -2.3 -0.56 -2.3 -0.52 -2.34 -0.5 -2.32 -0.45 -4.6 -0.91 2.06 0.31 2.11 0.32 
+2.14 0.33 2.17 0.34 -3.36 -0.73 -3.36 -0.69 -3.34 -0.7 -3.36 -0.67 -1.74 -0.24 -1.69 -0.24 
+-1.7 -0.21 -1.67 -0.22 -1.97 -0.3 -1.95 -0.26 -1.93 -0.28 -1.91 -0.26 -4.36 -0.74 -4.34 -0.71 
+-4.36 -0.68 -4.34 -0.65 -4.28 -0.61 -4.27 -0.59 -4.25 -0.54 -4.27 -0.5 -3.15 -0.45 -3.21 -0.43 
+-3.21 -0.41 -3.26 -0.41 -2.08 -0.28 -2.11 -0.26 -2.13 -0.26 -2.12 -0.24 -3.22 -0.26 -6.37 -0.43 
+-3.17 -0.2 2.47 0.52 0.8 0.18 -0.98 0.2 -0.3 0.08 4.16 0.39 2.09 0.22 2.06 0.21 
+0.24 0.09 0.24 0.11 0.21 0.09 0.24 0.11 2.73 0.24 2.74 0.28 2.75 0.26 2.71 0.29 
+6.73 0.87 3.3 0.45 0.95 0.2 0.93 0.21 0.91 0.2 -1.07 -0.06 -1.08 -0.05 -1.07 -0.04 
+1.24 0.3 2.39 0.65 1.91 0.39 1.86 0.41 1.85 0.39 2.65 0.61 1.3 0.3 1.78 0.41 
+1.73 0.43 1.71 0.41 3.91 0.67 3.86 0.71 3.82 0.72 3.54 0.54 3.56 0.56 3.56 0.59 
+-0.85 -0.33 -0.89 -0.32 -0.89 -0.3 0.09 -0.2 0.08 -0.21 0.09 -0.2 2.06 0.28 2.11 0.3 
+2.13 0.31 3.62 0.67 3.61 0.69 3.62 0.72 3.71 0.75 3.69 0.79 3.69 0.83 4.88 1.06 
+4.91 1.11 4.92 1.15 -1.78 -0.56 -1.78 -0.54 -1.8 -0.55 -3.5 -0.93 -3.54 -0.91 -3.56 -0.91 
+0.57 0 p
+0.56 0.02 0.57 0 0.58 0.02 -0.63 -0.26 -0.63 -0.24 -0.62 -0.26 -0.66 -0.26 1.54 0.26 
+3.17 0.57 1.61 0.28 1.87 0.37 1.89 0.39 3.82 0.82 -1.06 -0.32 -1.04 -0.35 -2.17 -0.65 
+3.66 0.91 3.63 0.91 3.63 0.93 3.63 0.97 2.89 0.7 2.88 0.72 2.93 0.74 2.93 0.76 
+3.62 0.98 3.63 1.02 3.67 1.04 3.66 1.06 3.64 1.08 3.64 1.11 3.67 1.15 3.71 1.17 
+3.49 1.15 3.52 1.17 3.52 1.21 3.54 1.24 2.14 0.72 4.39 1.48 2.23 0.78 3.41 1.24 
+3.45 1.28 3.47 1.33 3.47 1.34 0 358.03 -1.37 0.89 -1.73 1.67 -1.62 2.63 0.19 3.29 
+0.2 3.82 -0.91 2.28 0.07 2.84 0.34 2.38 2.23 3.65 2.13 2.63 1.19 2.56 2.18 3.18 
+0.74 2.52 -0.89 3.21 0.3 2.47 -0.93 3.21 -0.07 3.34 2.04 3.21 1.73 4.62 2.22 0.35 
+2.78 1.91 2.71 1.43 2.78 1.93 2.28 1.84 2.43 3.38 2.22 0.37 -0.29 2.45 1.89 1.82 
+-0.26 2.91 2.65 0.95 2.26 1.43 0.56 2.56 0.18 3.04 2.32 2.95 0 179.21 -0.93 -0.84 
+-1.91 -2.37 -0.28 -2.25 0.54 -2.04 -2.11 -1.81 -2.11 -1.84 -2.13 -1.84 -2.14 -1.75 -2.54 -1.96 
+-2.06 -2.28 -1.06 -3.04 -2.21 -1.73 -2.43 -0.76 -1.56 -2.62 -1.34 -2 -2.37 -1.21 -2.58 -0.26 
+-2.02 -0.59 -0.85 -2.32 -2.28 -1.72 -2.41 -1.17 -2.41 -1.15 -2.21 -0.11 -2.24 2.52 -0.18 3.04 
+-1.15 1.26 -1.5 3.19 -1.56 3.23 -1.02 2.84 -0.13 2.52 -0.96 2.34 -1.89 2.61 -2.32 2.46 
+-1.95 1.02 -1.8 2.11 -5.73 7.75 -2.62 1.82 -3.43 0.13 -1.3 1.7 -2.06 1.54 -1.25 3.26 
+-1 2.32 -0.09 2 -1.13 2.8 -1.93 2.56 -2.32 2.46 -2.5 1.37 -2.75 0.8 -1.93 2.56 
+-1.56 2.67 -2.32 2.45 -2.06 1.55 -2.37 2.45 -2.3 2.45 -1.8 2.04 -2.19 2.02 -2.32 -0.59 
+-0.02 3.02 0 3.06 -0.8 2.82 -0.61 -3.66 -0.24 -3.65 0.63 -2.34 -0.91 -1.26 -2.47 1.41 
+-2.04 1.56 -1.28 1.69 -1.65 1.59 -1.91 2.58 -1.41 2.19 -0.91 -1.23 1.78 -2.06 1.04 -2.28 
+1.79 -2.1 2.14 -1.98 2.04 -1.56 1.02 -2.23 1.39 -1.39 0.28 -0.26 0.98 -2.26 2.28 -2.47 
+1.41 -2.21 1.89 -2.58 1.8 -2.11 1.89 -2.59 2.06 -1.49 0.2 -2.52 0.84 -1.8 1.89 -2.58 
+2 -1.02 2.32 -0.96 1.89 -0.57 0.45 -2 0.33 -1.36 2.17 -2.02 0.43 -1.91 0.28 -3 
+1.13 -3.25 0.93 -2.32 1.95 -3.06 2.8 -0.84 3.02 -1.82 1.75 -2.12 1.87 -2.61 1.15 -3.28 
+0.98 -2.82 1.76 -2.12 1.76 -0.07 1.82 -2.61 3.26 -0.72 2.71 -0.34 2.65 -2.41 3 -1.73 
+2.19 -2.04 2.54 -1.93 2.56 -1.84 1.41 -2.73 -2.25 -2.15 1.93 -1.05 2.04 -1.56 2.15 -1.97 
+1.93 -1.05 2.63 0.15 2.34 1.7 2.26 2.19 2.99 0.35 2.43 1.19 2.56 2.82 2.88 0.84 
+2.28 1.76 2.56 0.28 2.67 1.84 2.69 1.96 1.46 3.16 3.1 -0.08 0.52 -4.67 0.3 -3.62 
+-0.71 -2.93 0.67 -3.49 -1.08 -3.54 -0.79 -2.91 -0.89 -2.39 -0.35 -3.25 -0.84 -2.91 -0.79 -3.41 
+-0.45 -2.78 -0.3 -3.73 -1.87 -2.58 -1.39 -2.52 -0.89 -3.37 -0.98 -2.8 -1.84 -3.1 -1.48 -2.43 
+-1.89 -3.08 -1.45 -2.96 -1.98 -2.5 -2 -2.52 -2.54 -1.63 -1.95 -2.47 -2 -3.02 -2.11 -2 
+-2.02 -2.43 p
+-1.13 -2.8 -2.5 -3.06 -1.61 -3.34 -1.65 -2.32 -1.17 -3.23 -2.14 -2.41 -2.09 -2.91 -2.28 0.05 
+0.16 -3.43 -1.67 -3.73 -1.72 -3.82 -1.3 -2.65 -1.28 -3.17 -0.83 -3.08 -0.87 -3.1 2.3 -2.54 
+2.23 -2.54 -1.34 -3.17 -0.02 -3.45 0.43 -3.77 1.3 -3.23 0.8 -2.8 1.8 -1.15 1.74 -1.65 
+-0.09 -2.93 -0.54 -3 0.3 -2.86 -0.11 -2.46 -0.61 -3.45 0.67 -3.25 -0.18 -2.93 0.69 -3.3 
+-0.65 -2.97 -1.52 -2.58 -2.02 -2.69 -1.93 -2.17 -2.91 -2.8 -1.95 -2.13 -3.64 -1 -2.34 -1.21 
+-2.78 -1.3 -2.02 -2.62 -1.99 -2.56 -2.56 -3.1 -2.37 -1.24 -2.02 -2.58 -1.93 -1.61 -2.47 -2.11 
+-0.74 -2.87 1.56 -1.67 0.5 -3.23 0.39 -3.62 0.61 -2.28 -0.45 -3.26 -0.76 -2.39 0.02 -2.76 
+-1.76 -2.93 -1.95 -1.54 -2.8 -1.2 -3.75 -1.71 -1.89 -1.02 -2.8 -1.17 -2.3 -3.34 1.65 -0.8 
+-0.3 -1.8 -0.37 -2.32 -1.37 -2.79 -1.43 -3.25 -1.33 -2.78 -2.45 -1.55 -2.95 -2.02 -1.7 -2.32 
+-2.15 -2.39 -1.8 -2.78 -1.74 -2.34 -2.58 -2.32 -2.54 -1.95 -2.04 -1.84 -2.6 -2.37 -2.04 -1.84 
+-2.41 -1.43 -3.32 -1.89 -2.49 -1.91 -2.65 -0.54 -2.97 -0.13 -1.54 -1.37 -3.43 -0.15 -1.93 -1.39 
+-2.5 0.3 -2.82 0.76 -2.3 -0.98 -2.91 0.34 -3.12 -0.58 -1.91 -1.35 -3.45 -0.13 -3.06 -0.52 
+-1.88 -1.35 -3.04 -0.11 -1.87 1.63 -1.93 1.67 -1.82 -0.93 0.3 2.17 -0.61 2.08 -1.8 2.95 
+1.3 0.07 1.47 1.32 -0.02 3 -1.39 2.95 -1.54 2.11 -1.08 2.13 -0.52 2.99 -1.11 2.15 
+-0.61 2.99 -1.56 2.13 -2.54 1.63 -1.15 2.15 -1.69 1.67 -0.22 2.6 -0.7 3.02 -0.67 2.61 
+-0.33 2.19 0.18 2.65 -1.15 3.02 -0.31 2.21 0.17 2.67 -0.26 3.06 0.59 2.25 -0.83 2.21 
+-2.16 2.09 -0.83 2.21 -1.73 2.17 -0.83 3.08 -1.73 2.61 -1.28 2.63 -1.32 2.21 -1.86 1.7 
+-1.3 3.07 -0.37 2.68 0.07 2.28 0.54 2.71 0.07 2.71 1.5 2.78 0.59 2.73 0.97 2.75 
+1.05 3.21 1.04 3.26 1.91 2.32 2.43 1.5 1.47 2.37 0.95 2.34 0.57 3.21 -0.48 3.17 
+-1.41 1.8 -1.39 2.19 -0.91 2.72 -0.96 1.32 2.43 2.88 -0.96 2.72 -1.43 2.25 -0.46 2.73 
+-1.43 2.71 -1.43 1.76 -0.52 2.3 -0.93 1.34 0 2.32 -1.45 2.21 -1.95 2.24 -1.46 2.28 
+-1.91 1.73 -1.91 1.76 -1.98 1.8 -2.88 1.72 -1.91 2.71 -1.93 2.25 -0.99 2.75 -1.46 2.73 
+2.82 1.96 0.43 2.82 -0.05 2.8 1.39 2.41 -1.91 0.8 1.39 2.43 0.93 2.39 0.39 3.28 
+0.89 3.3 -2 2.28 -1.45 2.3 -2.34 0.34 -0.59 2.78 -0.8 -0.02 0 -4.23 1.43 -0.89 
+-0.93 -1.89 -1.43 0.39 0.93 2.39 0 4.23 -1.52 -0.06 -2.36 -0.54 -2.85 -0.11 -2.82 -0.61 
+-2.84 -0.54 -2.84 -0.09 -3.32 1.76 -1.02 3.73 -1.47 3.73 -2.87 2.26 -2.84 0.89 -3.27 -0.06 
+-3.32 -0.5 -2.84 -0.05 -2.82 -0.52 -3.27 -0.93 -1.41 -1.91 -3.8 -0.02 -3.3 -1.87 -2.39 -1.39 
+-2.32 -0.43 -2.84 -0.93 -2.39 -1.39 -3.3 1.43 -2.84 0.5 -4.26 1.02 -2.82 0.07 -2.38 -0.42 
+-3.3 -0.41 -3.37 -0.35 -2.36 -1.8 -3.34 -0.39 -2.88 -1.76 -2.32 0.54 -2.82 1.07 -3.28 2.5 
+-2.8 1.99 -2.25 1.98 -2.73 2.95 -3.71 2.13 -2.3 2.43 -2.76 1.59 -2.73 1.58 -2.69 3.02 
+-0.78 2.43 p
+-0.39 2.43 -0.33 2.86 -1.71 2.46 -2.21 2.54 -2.23 1.58 -1.26 2.5 -1.66 2.47 -2.26 1.17 
+-0.2 3.84 -2.34 -0.33 -2.14 1.63 -2.2 1.63 0.24 3.36 0.65 2.8 -0.18 3.34 -1.12 2.97 
+-2.15 1.65 2.39 1.2 1.54 2.25 1.98 2.18 0.32 3.82 2.3 5.52 0.68 2.79 0.26 2.84 
+-0.65 2.93 -1.46 3.01 1.91 1.72 0.28 2.84 -1.91 2.61 -2 2.1 0.72 2.8 0.78 2.78 
+1.84 1.26 1.54 2.23 1.69 3.69 1.52 2.2 1.95 2.21 2.39 2.2 1.61 3.17 1.11 2.3 
+1.11 2.76 1.39 1.3 2.67 1.17 1.43 1.76 1.13 2.75 1.86 2.23 3.78 0.16 3.45 1.15 
+1.84 2.25 3.04 1.2 2.21 2.17 1.84 2.26 1.5 3.19 -1.07 2.02 0.37 4.67 1.71 1.3 
+1.39 2.3 0.16 1.84 2.14 1.73 1.74 2.28 2.47 1.26 2.8 0.82 2.9 1.7 1.33 2.32 
+1.3 2.23 0.89 2.34 1.3 2.76 2.34 0.35 1.07 -1.89 3.04 -1.98 1.97 0.39 3.06 -0.07 
+1.97 0.39 2.67 -1.45 2.34 0.48 3.14 1.37 1.17 1.84 2.32 0.43 2.32 0.5 2.3 1.84 
+2.28 1.43 3.45 0.48 3.06 0.55 2.26 0.95 2.28 0.05 1.87 0.54 2.69 0.09 2.67 -0.41 
+1.57 -0.85 2.26 0.55 1.84 1.48 3.47 -0.78 1.84 1.07 3.49 -0.76 2.23 0.63 1.74 1.52 
+2.23 0.61 2.3 -0.28 1.41 -2.71 2.91 1.63 -0.89 -2.43 -1.41 -1.08 1.04 -3.19 1.67 -0.83 
+0.61 -2.28 -0.93 -2.45 -1.78 -2 -1.41 -1.52 0.59 -2.32 2.06 -0.82 1.93 0.65 1 -2.3 
+2.93 -1.17 2.45 -0.76 3.14 0.26 3.6 -0.11 2.84 -0.19 2.91 -1.13 2.88 -0.67 0.05 -0.37 
+0.32 -2.43 1.38 -1.3 2.57 -1.13 2.89 -0.13 4.1 -0.5 3.49 -1.47 2.69 -1.61 2.45 -0.13 
+1.82 1.22 1.39 1.63 0.39 2.43 -0.78 2.32 -1.13 1.74 0.84 2.08 2.37 2.71 2.52 1.37 
+2.63 0.85 3.19 0.06 2.88 -0.52 0.87 -2.26 2.8 -0.04 2.89 -0.44 2.75 0.48 1.67 -2.17 
+2.61 0.96 2.78 0.04 2.84 0.07 2.13 -0.58 2.54 -0.5 2.73 0.56 3.04 -0.87 2.18 1 
+1.95 1.91 2.3 1.99 2.58 1.06 3.13 0.24 0.15 -2 2.17 -0.45 0.22 2.04 1.93 -1.04 
+2.52 1.08 3.25 1.37 0.95 2.23 0.7 3.21 -0.15 3.02 -0.11 3.02 0.22 3.11 0.06 3.54 
+0.65 2.76 -1.28 2.71 -1.26 3.73 0.11 2.06 -1.34 1.63 0.71 2.28 -0.83 1.3 -1.43 -2.5 
+-1.39 -0.39 -1 0.19 0 -6.55 -1.76 -2.95 1.13 -1.21 -1.76 -0.46 -0.36 -1.43 -1.98 -1.24 
+-2.69 -0.12 -1.3 1.66 2.07 1 0.78 1.22 3.67 1.97 2.21 1.56 0 6.55 -2.3 0.41 
+-1.17 -2.3 -1.52 -2.41 -1.75 -0.46 -1.52 -1.41 -2.43 0.39 -1.65 1.58 -3.64 0.61 -2.62 -0.16 
+-0.05 -2.47 -2.84 -2.15 -2.43 0.41 -3.56 1.69 -0.98 -0.21 0 -1.75 -0.2 -2.24 -1.15 -1.43 
+-0.79 1.56 2.13 2.11 0 1.75 -1.56 -0.33 0.37 1.54 -4.34 -0.91 0.93 2.14 -2.2 1 
+-0.11 1.98 -2.05 0.52 -0.48 0.11 0 -16.34 0.33 -1.39 2 1.39 0.02 -1.65 -2.93 -0.8 
+-2.97 -0.72 -1.72 0.74 -2.36 0.09 -2.23 -0.39 -0.15 2.37 2.73 0.02 0.56 -0.89 2.13 0.91 
+2.04 -0.33 2.56 0.65 0 16.34 -1.93 0.39 -0.14 1.91 1.82 -1.08 0.93 0.71 -1.11 1.23 
+-1.22 3.17 p
+0.31 1.52 -3.39 -1.17 -0.15 3.37 1.21 2.19 2.46 0.52 2.41 0.52 2.78 0.61 2.39 0.56 
+-0.76 1.31 1.91 0.98 -2.97 1.25 -2.72 -0.62 -2.95 -1.13 -1 -1.67 -1.61 -2.11 -1.21 -2.19 
+-0.33 1.18 1.22 2.16 -1.98 -0.87 -1.87 1.54 -2.54 0.02 -1.62 -0.84 -2.21 0.08 -0.67 -1.56 
+-2.11 -0.39 1.39 -1.2 -0.37 -1.52 -2.11 -0.39 -2.67 1.91 0.43 -3.28 1.96 -2.08 1.89 -1.59 
+1.11 -1.71 1.8 -1.13 2 -0.62 0.82 -1.76 2.02 -0.61 -2.76 0.48 0.79 -3.3 -2.61 1.52 
+-2.64 0 -1.89 1.58 -3.17 -1 2.39 -0.58 2.49 -1.02 2.13 -2.54 -2.3 0.13 1.22 -2.24 
+1.82 -3.04 -2.21 1.52 -1.13 -2.08 -1.5 1.65 -1.82 -0.29 -1.04 1.26 -0.13 2.41 -2.58 1.5 
+0.69 2.02 1.97 1.3 -3.36 -0.08 -2.28 2.04 -2.04 2.56 -1.46 1.68 -1.91 2.12 -2.08 1.11 
+-0.56 2.78 -0.29 3.28 -0.15 2.39 -2.36 1.07 -2.46 1.52 -2.69 1.04 -2.89 1.97 -3.54 1.91 
+-2.48 0.15 -1.26 1.24 -2.62 1.11 -0.31 1.82 -1.25 1.26 -0.76 2.26 -2.95 1.52 -0.07 -1.87 
+-1.2 -1.08 -1.23 1.28 -0.61 1.85 0.43 1.43 -2.09 0.24 -1.8 -1.58 -1.63 -0.17 -0.11 -1.84 
+1.19 -1.29 -0.39 -1.93 0.59 -1.8 2 -1.65 1.89 -1.21 2.25 -1.17 1.41 -2.21 0.72 -2.29 
+1.25 -1.28 2.32 -1.15 2.67 -1.11 3.52 0.43 -0.74 -1.96 2.28 -0.7 2.75 -1.06 2.37 -1.11 
+2.39 -1.11 2.58 -1.97 -0.37 -1.99 -1.52 0.3 -0.74 1.78 -2.21 0.17 -1.93 0.7 -0.76 -1.96 
+-0.26 -2.88 2.43 -1.11 0.39 -2.34 -2.02 -1.24 0.37 -2.28 -1.22 -1.56 -0.54 -1.5 -1.45 -0.17 
+-0.22 1.41 0.35 2.36 0.87 1.52 -0.74 2.3 -0.57 0.84 0 -6.59 -1.15 -2.52 -0.28 -2.87 
+0.98 -1.78 -0.43 -1.91 -3.1 0.11 -1.74 1.69 -2.32 0.29 -3.26 1.54 -1.48 -0.13 -1.82 2.19 
+1.71 1.59 2.21 0.22 2 -0.79 2.58 0.29 3.27 0.8 2.82 1.28 0 6.59 -0.91 1.37 
+-0.62 1.8 -3.06 0.61 -1.43 2.15 -1.5 0.34 -2 1.2 -2.09 1.65 -2.79 -0.28 -2.34 1.17 
+-2.09 2.17 -2.41 2.08 -2.11 -0.17 -0.56 1.84 -2.37 2.1 -1.3 2.24 -0.69 2.75 -2.14 0.22 
+0 -5.97 0.28 -2.78 0.54 -1.8 -0.54 -1.95 -0.02 -0.13 0 -3.1 2.04 -2.21 0.59 -2.26 
+0.24 -2.34 -0.11 -2.36 -0.55 -2.35 -1.84 -0.13 -1.3 -1.97 -2.02 1.76 0.16 2.82 -0.24 2.8 
+-1.28 2.21 -0.17 1.89 1.13 -0.43 1.39 0.59 1.98 1.99 0 3.1 -0.39 -2.69 -2.36 2.2 
+-0.54 1.8 0.15 2.37 2.02 1.08 0.88 1.91 0 5.97 -0.31 0.04 -1.45 0.82 -2.11 0.3 
+-1.64 -1 -0.87 -1.95 -2.32 -1.02 -2.36 -1.52 -1.57 -1.98 -2.45 -0.56 -2.54 1.28 -2.82 0.35 
+-2.47 0.84 -1.72 -1.43 -2.39 -1.46 0.44 -2.75 0.5 -3.21 -0.73 -0.5 0 -10.66 2.25 -1.34 
+-1.43 -2.28 -1.59 1.26 -2.15 0.39 2.91 1.97 0 10.66 -1.37 -0.93 -2.5 -1.95 -2.49 -0.91 
+-2.15 -0.98 -2.16 -3.23 -2.18 -2.8 -1.48 -2.34 0.35 -2.34 2.23 -1.84 -2.6 -1.84 -1.55 -1.89 
+-0.74 -2.3 -2.25 0.02 -2.32 -2.78 -1.61 -2.32 -2.64 0.04 -2.65 0.07 -2.71 0.06 -2.67 -0.37 
+-2.32 -0.87 -2.43 -2.28 -2.24 1.06 -1.34 2.87 -0.7 1.43 -2.19 1.52 -1.91 0.09 -1.93 -0.85 
+-2.21 0.63 p
+-2.73 -0.32 0.97 2.3 0.24 2.8 0.61 2.78 -1.82 0.11 -0.95 1.91 0.61 2.78 1.65 1.8 
+0.67 3.2 0.96 2.75 0.61 2.3 -0.48 2.84 -0.17 1.84 0.57 2.3 -1.46 3.34 1.2 1.32 
+2.52 0.29 1.58 2.24 3 -1.57 2.8 -0.15 3.16 0.29 3.11 -0.57 2.71 -1.04 3.56 0.82 
+3.47 -0.52 2.41 -0.54 2.13 0.45 1.07 1.39 0.75 3.19 0.37 2.32 0.39 3.21 0.37 3.19 
+-0.98 2.32 -1.98 1.41 -0.97 1.39 0.37 1.39 -1.59 1.82 -0.65 0.96 -2.61 0.5 -2.22 1.43 
+-1.95 0.06 -1.58 1 -0.16 2.75 2.26 0.37 1.97 0.87 2.58 0.37 1.22 -1.84 2.6 0.39 
+2.24 -0.02 -0.57 3.23 -1.21 2.75 2.23 -0.02 0.91 -2.32 1.91 0.43 2.21 -0.45 0.63 2.32 
+1.55 0.87 1.89 0.5 1.56 0.89 0.26 2.3 0.58 1.82 2.13 0.95 2.43 1.43 2.08 0.98 
+1.43 1.84 1.11 1.84 0.79 1.87 0.48 2.25 1.13 0.55 0.2 -2.71 1.57 -0.87 1.41 1.43 
+-0.11 1.37 -1.52 0.35 -0.18 2.28 1.98 1.04 3.21 0.18 1.02 1.41 2.35 0.15 1.84 -0.79 
+0.07 1.8 1.28 1.46 -1.28 1.26 1.02 1.02 -1.35 1.7 -0.32 2.69 -1.84 1.21 -0.57 2.23 
+-0.3 2.7 0.35 1.8 1.19 1.43 2.35 0.67 1.06 1.89 2.06 0.63 0.28 -1.78 -0.48 -2.32 
+0.26 -1.76 1.89 0.18 0.29 -1.76 -1.34 -0.74 0 -2.6 1.73 -0.98 0.09 -1.74 -2.08 -0.2 
+-1.41 2.17 1.67 0.74 0 2.6 -0.7 -0.39 -1 -2.8 -0.76 -2.78 2.15 -1.17 0.19 -1.37 
+3.35 -1.06 -0.33 -1.82 1.99 0.19 1.5 1.52 1.3 1 2.2 0.74 1.15 1.49 1.5 -1.69 
+-1.28 -1.02 2.15 -0.69 1.8 -0.22 2.58 1.72 2.73 0.8 1.84 2.09 2.56 1.32 2.64 0.87 
+1.82 -2.5 1.96 0.33 1.41 1.2 0.2 2.38 2.08 1.79 0.29 2.86 -1.07 2.59 -0.93 3.08 
+0.5 1.93 0.21 2.84 2.13 0.93 1.98 -1 1.63 -1.57 1.93 -0.02 1.09 1.65 -1.91 5.21 
+-1.89 0.04 -1.52 2.02 -0.78 2.19 1.45 1.74 2.23 0.98 2.47 1.04 2.95 -0.17 3.1 0.82 
+0.59 1.59 1.58 2.34 3.19 -0.06 -2.18 1.8 -1.66 -0.93 -3.02 1.52 -3.19 -0.87 -2.19 -1.47 
+-2.21 -1.5 -2.23 -1.5 -2.47 -1 -1.2 0.13 0 -5.54 1.93 -1 -1.52 -0.93 -0.09 0.11 
+0 -0.7 2.71 -0.11 -1.12 -1.35 -1.15 -1.36 -1.43 1 1 1.82 0 0.7 -0.48 0.67 
+0.15 1.15 0 5.54 -1.74 0.17 -1.88 1 -2.56 0.87 -0.59 1.71 0.07 2.78 -1.41 1.63 
+0 -21.66 -0.96 -1.43 0.61 -2.24 -1.28 -1.3 -1.11 2.13 0.65 1.65 2.09 1.19 0 21.66 
+-0.63 0.74 -1.11 2.54 0.2 2.78 1.41 2.63 1.15 3.02 1.26 2.58 0.41 2.89 1.24 1.25 
+-1.08 2.5 -2.7 1.17 -1.43 -0.78 -1.57 -0.37 -1.95 0 -0.37 -1.89 -1.08 -1.17 0.67 -1.21 
+-0.63 -1.96 2.13 -0.91 -1.09 -2.04 -0.24 -1.91 -1.76 -1.71 -1.3 -1.61 -1.48 -2.09 -1.04 -2.89 
+-0.52 -1.45 0.48 -2.65 0.26 -2.67 0.82 -2.17 2.41 -1.41 2.38 -1.41 1.24 -1.65 -0.35 -1.43 
+-1.34 -1.61 1.21 -0.68 -1.89 -1.69 -1.8 -2.15 -0.07 -1.82 0.65 -2.65 0.02 -2.3 0.2 -3.14 
+-0.58 -3.28 -1.91 -0.29 -2.14 -0.28 -1.17 -2.45 0.61 -1.74 -1.91 -0.22 -2.23 -0.26 -0.33 1.76 
+-1.47 2.13 p
+0.48 1.87 -1.24 1.08 0 -3.41 0.91 -2.08 -1.15 -1.39 1.02 -0.93 -1.84 -1.02 -0.66 0.07 
+0 -1.26 1.76 -0.32 -0.7 -0.93 -1.61 -0.67 -1.35 1.23 1.89 0.7 0 1.26 -1.34 0.13 
+-1 2.63 2.04 1.3 2.02 1.3 0 3.41 -1.09 0.93 -1.52 2.56 -1.59 2.97 -1.5 2.56 
+-1.3 3 -1.73 1.19 -0.74 -1.84 -1.52 -0.16 -2 -2.43 -1.32 -1.87 -2.46 -1.52 -2.69 0.25 
+-2.73 1.17 -1.43 1.29 0.09 2.25 1.39 1.82 -2.26 -0.54 -0.67 1.73 0.85 1.86 -1.67 2.11 
+-0.41 2.21 -0.66 2.22 1.07 1.78 -1.09 1.71 1.98 1.89 1.69 1.85 1.61 2.32 2.71 0.63 
+1.13 1.82 0.82 2.3 1.74 -1.17 1.21 2.32 1.17 2.3 1.15 3.23 1.8 1.95 0.48 2.71 
+0.56 2.3 0.33 2.21 0.67 2.32 1.43 2.41 0.21 2.21 1.93 2.96 -2.52 -0.81 -2.13 -0.74 
+-2.04 -2.06 1.19 2.36 2.76 1.3 -1.63 1.09 1.65 1.56 1.35 1.95 0.2 -2.62 1.06 1.49 
+0.7 -1.63 1.46 2 -1.37 0.2 -0.54 1.72 2.02 1.19 0.89 2.84 2.54 0.5 2.36 1.43 
+0.79 2.43 1.41 1.69 2.34 -0.78 0.34 1.89 1.2 1.26 1.24 -2.91 1.09 2.17 1.52 -1.91 
+0.26 3.32 2.91 -0.02 2.71 -0.55 2.58 -0.58 -1.26 -2.34 -2.64 -0.33 3.32 -0.87 2.65 0.39 
+1.11 1.37 2.41 -0.13 1 -1.56 3 0.58 3.05 0.22 3.06 -0.26 3.06 -0.78 3.04 -0.7 
+2.8 -0.3 2.95 -0.7 2.17 -1.65 1.78 -2.3 -0.2 -2.17 -1.37 -2.17 -2.15 -1.48 -2.87 -0.13 
+-2.38 -0.48 -2.24 -0.33 -2.9 0.42 -2.97 -0.14 -2.96 0.96 2.7 -2 2.54 -0.57 3.43 -1.24 
+1.52 -2.41 1.24 -2.04 1.48 -2.43 0.3 -0.02 2.95 -0.29 1.43 -0.43 2.13 -0.65 2.91 1.15 
+-1.61 2.41 -1.72 -0.7 -2.97 1.3 -0.14 2.02 2.13 0.3 2.87 -0.34 2.37 0 2.86 0.71 
+-2.8 1.86 -2.5 1.52 0.63 2.34 1.19 2.11 0.14 2.23 2.34 0.57 2.08 0 -0.09 2.11 
+-1.93 2.25 -1.93 0.11 -1.26 2.61 -2.23 2.61 -3.3 1.02 2.93 0.42 2.08 1.13 2.05 -0.55 
+2.45 -1.43 -1.82 -1.52 0.56 -2.47 2.34 0.22 2.3 -1.02 1.87 1.06 0.52 2 -2.43 2.58 
+0.93 1.67 0.8 2.24 0.3 1.97 1.02 1.89 0.33 2.06 0.3 2.04 2.43 -1.95 2.84 -0.41 
+-1.02 1.76 1.15 1.48 2.02 0.97 -0.29 2.39 0.43 1.75 2.91 -2.25 1.52 0.59 -1.71 1.32 
+0.52 1.13 -0.48 1.67 -2.47 0.54 -2.19 0.89 -2.61 -0.24 -2.06 0.28 -1 1.8 3.56 -0.3 
+3.73 0.65 2 1.26 3.17 0.11 1.65 1 2.47 0.33 0.52 0.2 1.69 0.65 2.61 -0.24 
+2.37 0.28 -2.23 2.41 -2.26 -0.17 -3.36 1.04 -1.98 -0.63 -1.82 1.13 -1.9 1.96 -2.85 0.76 
+-2.19 1.61 -0.63 2.61 -1.93 1.95 -2.75 1.78 -1.93 1.98 -1.93 1.91 -0.15 1.73 2.36 -0.37 
+1.24 -1.13 2.69 1.06 2.04 -1 2.12 -1.71 2 -2 3.23 -0.2 2.97 -1.49 2.97 -1.55 
+3.32 -1.93 2.95 -1.59 3.45 0.11 2 -1.91 2.45 -1.37 1.75 -2.39 1.15 -2.12 0.35 -3.15 
+3.64 0.2 -0.36 2.3 -0.81 2.67 -1.93 2.15 -1.65 2.63 -3.78 1.32 -2.89 1.67 -0.67 2.11 
+-1.91 -2.04 -3.73 1.46 -2.84 1.75 -2.04 1.91 -2.95 0.57 -2.52 0.11 -2.54 2.21 -0.32 1.65 
+-1.65 1.57 p
+-2.17 0.82 -2.17 -0.43 -0.76 0.84 2.73 0.33 3.26 -1.07 2.28 -1.69 3.06 -1.41 4.34 3.38 
+-1.91 -0.02 -2.54 -1.21 -2.95 0.48 -0.41 1.52 2.13 0.43 -0.69 1.21 -2.93 -0.86 -1.09 1.61 
+2.04 0.32 0.61 1.3 2.21 0.8 3.17 0.37 -0.39 2.09 -3.04 0.06 -1.78 -1.36 -3.21 1.17 
+-3.97 0.74 0.28 2.23 0.15 2.39 -0.48 2.19 -0.06 2.37 -2.87 0.11 -2.23 0.71 -1.98 1.65 
+-1.96 1.9 -1.39 2.56 -0.97 2.04 -2.17 1.61 0.04 1.69 -1.8 2.73 2.3 -0.65 -1.43 3.26 
+-2.21 -0.29 -0.3 2.21 -3.43 0.2 -3.19 1.72 -2.64 1.63 1.69 2.02 2.86 -1.91 -0.52 1.85 
+0.05 1.58 3.8 -1.13 -0.5 1.54 -1.84 0.33 -0.57 1.52 -0.17 1.71 0.54 1.43 1.63 1.34 
+2.61 0.59 3.43 0.08 2.88 -1.28 3.64 -1.74 2.89 -1.65 3.5 -1.75 1.65 -1.58 3.06 -1.02 
+-0.44 1.48 -1.64 1.73 -1.81 1.82 -1.36 -0.89 -2.04 0.87 0.63 1.32 0.63 1.11 -0.59 1.32 
+-2.67 -0.32 -0.98 -1.65 -1.41 0.59 -0.17 1.58 2.56 -0.52 3.38 1.25 -1.89 1.48 -1.28 1.37 
+0.13 1.82 -1.11 1.84 2.82 0.07 -0.17 2.13 -1.35 2.73 -1.82 1.65 -1.58 -1 -2.34 -0.15 
+-1.8 2.28 -0.7 2.9 -0.86 2.3 1.47 2.32 3.41 0.37 3.49 -0.37 2.17 1.63 1.21 1.87 
+-0.28 1.55 -3.04 0.49 -2.84 -0.34 -2.91 -0.3 1.08 1.93 -0.41 1.52 -2.3 0.26 -1.78 0.87 
+-0.39 1.41 -3.55 2.17 -2.28 2.08 -1.33 -1.56 -1.17 -1.15 -2 -0.13 -2.32 1.59 -0.87 -1.37 
+-2.34 1.93 0 -46.89 1.56 -1.76 0.43 -2.08 1.98 -1.71 -0.79 0.18 0 -31.4 2.82 -1.63 
+0.37 -2.21 0.13 -2.41 -0.45 -2.06 0.54 -2.58 0.41 -2.5 1.37 -2.3 0.98 -2.56 1.25 -2.3 
+1.24 -2.34 1.09 -2.34 1.36 -2.17 2.37 -2 2.78 -1.67 2.82 -1.02 3.43 0.19 -0.17 -1.49 
+-2.61 -1.37 -2.87 -0.93 -1.34 0.15 0 -10.07 3.3 -0.21 0.91 -1.74 -1.34 -2.02 -2.56 1.89 
+-0.3 2.08 0 10.07 -1.65 0.2 -3.54 0.5 -2.3 2.02 0.28 2.02 -1.93 1.11 -1.43 2.64 
+0.11 1.98 -2.21 0.8 -0.8 2.56 -1.97 2.91 -1.67 1.2 0.5 2.43 -0.65 1.48 -0.79 2.11 
+-0.08 2.78 1.66 1.75 0.61 2.32 -1.29 1.74 -0.26 2.3 1.89 0.71 0 31.4 -2.11 0.48 
+-3.55 0.84 -3 0.7 -1.37 0.93 1.37 1.39 2.06 1 3.41 0.05 0 46.89 -0.13 0.13 
+-2.04 1.65 -1.82 1.5 0 -3.17 2.75 -2.15 0.33 -1.65 -2.32 -0.41 -0.84 0.34 0 -0.78 
+1.41 -0.46 -1.46 -1 -1.21 0.8 1.26 0.66 0 0.78 -1.55 0.63 0.05 2.34 1.58 0.89 
+0 3.17 -0.24 0.2 -1.73 2.25 -3.15 1.61 -1.88 1.71 1.75 1.68 -0.35 1.39 -1.88 0.84 
+-0.8 1.56 1.32 1.07 -2.71 0.71 -0.18 0.06 0 -21.09 2.93 -0.3 0.39 -1.21 3 -0.91 
+2.57 -0.78 1.22 -1.32 -1.43 -2.08 -3.04 -1.02 0 -38.75 3 -0.67 2.84 0.17 0.74 -1.41 
+-1.04 -1.34 -1.02 -1.74 -2.87 -0.43 -1.21 -1.54 -2.84 -0.17 -2.84 1.5 -2.88 0.67 -2.32 1.91 
+1.67 0.5 1.65 0.72 1.76 -0.46 2.23 0.32 1 1.3 2.14 0.67 0 38.75 -0.91 -0.3 
+-3.19 0.69 -0.5 2.82 -3.4 -0.33 -0.09 1.97 -1.04 0.61 -0.72 1.28 1.15 0.74 3.06 0.15 
+0 21.09 p
+-2.24 0.87 -3.75 0.67 -2.91 1.35 0 -17.77 2.08 -0.96 1.82 -2.58 -1.02 -2.13 -0.57 1.13 
+-2.62 1.74 -2.2 1.78 2.5 1.02 0 17.77 -0.24 0.11 -2.84 1.28 -0.91 1.11 0 -96.24 
+2.82 -0.74 0.28 -1.35 -1.32 -0.67 2.61 -1.3 0.3 -0.93 -1.84 -1.13 0.69 -1.89 -1.19 -1.06 
+-0.89 1.87 1.39 1.08 -1.76 1.35 0.7 2.02 -1.17 1.02 -0.61 1.74 0 96.24 -0.33 0.39 
+0.46 1.71 2.52 1.09 -2.23 1.76 -4.11 1.13 -1.3 0.22 0 -105.01 2.52 -1.09 1.15 -1.69 
+1.61 -0.16 -0.43 -1.8 -0.87 -0.24 0 -1.54 1.84 -0.16 -1.15 -1.17 -0.7 1.33 0 1.54 
+-1.39 -0.39 -0.85 1.09 1.06 0.93 -1.67 1 0 -5.14 0.46 -1.59 1.37 -1.02 -0.89 -1.11 
+-1.71 -0.33 -1.15 0.95 -1.07 -0.67 -1.52 -0.09 0.34 2.54 1.46 -0.04 0.93 -0.74 0.63 2.04 
+1.15 0.05 0 5.14 -0.43 0.26 -0.7 2.09 0 105.01 -3.49 0.58 -4.21 1.33 -3.26 1.3 
+-2.3 -0.61 -2.16 -0.98 -2.61 1.06 0 -127.67 0.84 -1.37 -0.2 -2.48 -1.41 -1.73 -3.69 -0.09 
+-3.21 1.21 1.32 -2.45 3.67 -0.96 1.71 -1.74 2.04 -1.28 2.89 -0.98 -1.61 -3.09 -2.82 0.22 
+0 2.63 -1.82 0.93 -1.46 2.02 -1.13 -1.32 0.67 -1.89 -0.11 -2.76 -0.11 -2.62 0.39 -2.5 
+-3.45 2.08 -2.34 2.09 -1.08 2.13 1.43 1.59 -2.46 -0.37 -2.54 2.08 -1.56 2.95 -0.48 2.04 
+3.11 0.83 2.13 -0.45 0.32 1.86 2.02 -0.18 -0.63 1.57 1.58 1.62 1.76 -1.3 1.5 1.67 
+2.28 -0.29 2.43 0.3 0 127.67 -0.22 0.09 1.09 0.84 2.49 -0.41 0.39 1.3 -2.49 1.11 
+-0.18 1.37 -2.52 0.04 -2.02 -0.73 0.58 -1.79 -0.84 -2.25 -3.71 0.79 -3.52 0.69 -3.57 0.67 
+-4.12 0.26 -3.34 1.15 -3.45 0.74 -0.72 0.24 0 -5.88 0.37 -1.17 -3.41 -1.63 -4.38 -0.07 
+-2.21 1.41 4.42 1.2 2.17 -0.39 3.04 0.65 0 5.88 -2.34 0.8 -0.7 0.35 -2.71 1.3 
+-2.75 1.24 -3.84 0.87 -0.61 0.17 0 -251.62 0.48 -1.35 -2.71 -1.69 -1.21 -2.21 2.43 0.41 
+2.15 -0.07 2.65 -0.04 0.24 -1.83 -0.87 -1.78 -1.17 -2.21 -1.43 -1.76 -1.71 -1.3 2.19 -0.04 
+2.21 -0.98 1.06 -1.8 0.5 -2.69 1.09 -2.28 2.3 -0.89 0.87 -2.28 0.58 -1.78 0.87 -1.37 
+0.56 -1.84 -1.15 -1.34 0.89 -0.87 1.17 1.35 1.48 0.02 2.09 -0.91 0.93 -1.78 -0.85 -2.3 
+-2.08 -1.37 -1.5 -2.3 3.08 -0.41 -1.8 -2.32 -3.12 -0.89 -2.78 0.02 -2.78 0.46 -2.5 -1.32 
+-2.75 0.98 -2.52 -0.41 -0.73 -2.24 -3.06 0.98 -2.28 -1.71 -1.85 0.52 2.3 1.76 1.95 1.73 
+1.7 2.24 2.13 -0.07 1.84 -0.05 1.28 2.2 -2.47 -1.3 -1.75 1.41 -1.8 0.57 -2.45 -0.39 
+-0.54 1.39 2.24 1.26 1.84 0.86 0.15 2.71 -2.11 0.09 1.32 1.74 -0.52 1.39 3.21 -0.54 
+2.06 0.36 0.11 2.28 1.21 2.24 -1.71 0.04 -1.35 1.84 1.24 2.21 -5.21 -1.65 -1.02 1.89 
+1.61 3.06 -1.24 1.84 -1.84 -2.12 0.13 1.78 -1.95 0.09 2.36 1.68 0.43 2.23 -1.97 -0.8 
+0.15 1.82 1.58 2.6 -2.15 0.11 -1.23 1.41 1.17 0.8 1.52 -0.93 0.41 1.76 1.48 1.7 
+1.21 2.19 2.86 -0.11 2.87 0.32 0 251.63 -2.91 0.98 -2.8 1.11 -1.93 1.5 -4.21 -0.37 
+-4.95 0.09 p
+-3.28 1.24 -3.91 1.09 2.09 1.3 1.19 1.46 3.69 0.48 -0.65 1.87 1.63 1.45 0.41 1.67 
+3.8 -0.28 4.17 -0.91 2.84 -0.78 0.87 -1.56 3.54 -0.44 2.23 0.71 2.91 -0.24 1.22 -1.58 
+0.65 -1.59 3.04 1.3 -2.3 1.26 1.41 1.93 1.17 0.48 1.48 0.48 3.29 0.91 4.17 -0.42 
+0.18 1.59 -3.04 0.11 -0.83 1.26 -0.82 1.9 -1.52 1.91 -1.63 1.24 2.71 1.54 3.23 -1 
+4.64 -0.17 3.1 0.78 3.82 0.39 3.32 0.98 3.13 0 3.45 0.93 3.52 0.82 3.93 0.74 
+3.88 0.39 2.28 1.52 1.57 -1.48 2.3 -1.32 3.66 -0.98 3.45 -0.05 3.32 0.26 3.75 0.81 
+-1.39 -1.93 3.85 -0.26 3.28 0.52 1.93 -1.15 3.93 -0.37 1.84 1.11 2.28 1.02 3.75 0.57 
+3.04 0.69 0.63 1.48 -2.71 0.13 -1.84 1.5 3.52 0.63 1.28 1.23 -1.37 1.02 0.72 1.7 
+2.5 -0.07 1.13 -1.3 2.86 -0.21 2.93 0.67 1.23 1.54 -0.59 1.78 2.82 0.07 2.14 -1.02 
+4.17 -0.78 3.64 0.05 2.28 1.13 1.08 1.2 0 136.98 -4.62 0.78 -7.16 1.13 -7.14 1.04 
+-7.12 0.95 -7.07 0.89 -0.39 0.04 0 -151.78 -2.89 -1.15 -2.93 0.11 -0.04 0.98 5.86 0.07 
+0 151.78 -6.66 0.74 -7.04 0.72 -6.96 0.65 -6.95 0.55 -6.9 0.47 -3.09 0.18 0 -127.41 
+2.43 0 2.12 -0.87 -1.97 -0.02 -2.59 0.89 0 127.41 -3.78 0.22 -6.81 0.32 3.34 -0.13 
+3.43 -0.17 1.73 -0.09 1.75 -0.11 1.76 -0.09 1.8 -0.11 1.8 -0.12 1.82 -0.11 1.85 -0.13 
+1.86 -0.12 1.87 -0.16 3.82 -0.3 1.95 -0.17 1.95 -0.15 -2.28 0.2 -2.3 0.2 -2.32 0.19 
+-4.69 0.35 -4.73 0.34 -2.38 0.16 -2.41 0.13 -2.43 0.15 -2.43 0.13 -2.45 0.11 -4.95 0.22 
+-2.5 0.09 -0.26 0.02 -2.25 0.07 -5.05 0.15 0 0.11 -2.35 0.06 -25.15 0 -4.38 -0.11 
+-1.47 -0.05 0 -122.91 -0.85 -0.89 -2.6 0.41 3.45 0.48 0 122.91 -4.19 -0.11 -5.64 -0.24 
+-3.06 -0.13 0 -165.23 0.48 -1.26 -4.6 -0.61 -2.88 0.52 -3.87 -0.28 3.28 1.52 3.99 -0.72 
+3.6 0.83 0 165.23 -2.58 -0.13 -11.29 -0.69 -5.64 -0.43 -5.64 -0.46 -0.71 -0.06 0 -154.82 
+3.04 -0.33 -2.61 -0.84 -2.59 -0.89 -2.58 -0.26 -0.63 0.8 2.39 1.22 2.97 0.3 0 154.82 
+-4.51 -0.43 0 -129.08 -2.02 -3.02 -2.52 -0.8 -0.56 0.78 1.41 0.85 3.69 2.19 0 129.08 
+-0.39 -0.04 -5.64 -0.55 -0.85 -0.08 0 -131.84 -1.84 -1.61 0.8 -1.02 -3.91 -0.89 -0.78 0.91 
+2.56 1.3 3.17 1.3 0 131.84 -4.77 -0.54 -5.6 -0.65 -2.26 -0.28 0 -136.98 1.58 -0.52 
+-3.75 -2.56 -4.1 -2.11 -1.48 -2.06 -3.43 -2.02 -3.97 -1.63 -0.84 -2.26 -2.87 -2.34 -1.32 -2.2 
+-1.52 -1.93 1.56 -1.84 1.89 -1.67 2.02 1.09 3 0.78 -0.17 1.3 4.47 -0.48 5.83 1.91 
+1.87 1.25 2.74 -0.82 0 -1.32 3.82 -1.17 2.13 2.23 3.43 0.93 3.19 -0.79 3.71 -1.02 
+2.61 -1.34 3.97 -0.72 -0.3 -2.69 -1.28 -2.28 0.26 -1.25 -2.07 -1.52 -3.99 -0.02 -1.46 -2.11 
+-4.1 -1.52 0.7 -1.89 2.95 -0.87 0.41 -1.58 2.54 1.41 1.8 1.52 3.8 0.34 4.04 1.31 
+5.2 0.45 1.89 -0.93 -0.41 -1.39 3.26 0.28 2.25 -0.21 -2.43 -2.15 -2.9 -1.61 -2.8 -1.65 
+-2.61 -0.63 p
+-1.32 1.41 -4.93 -1.28 -0.32 -1.52 3.41 -0.79 3.88 -0.43 2.76 -1.41 4.36 -0.29 3.43 -0.74 
+0.61 -1.93 -3.04 -1.02 -3.25 -1.43 -0.39 -1.67 0.37 -1.93 -1.65 -2.2 -2.6 -1.13 -2.2 -2.47 
+-3.21 -1.2 -1.3 -2.56 -1.07 -0.15 0 -74.74 2.97 -0.65 0.2 -1.52 1.43 0.24 1.54 -0.82 
+2.02 -1.13 2.59 -0.59 1.63 -1.91 0.11 -1.37 1.17 -0.87 0.83 -1.39 -0.16 -1.67 0.33 -1.7 
+-0.87 -1.41 0.02 -1.26 -1.26 -0.62 -2.09 0 -0.91 0.08 0 -0.91 3.21 -0.48 3.91 -1.61 
+0.17 -2.62 2.82 1.28 1.65 -1.52 2.46 1.15 3.19 0.43 3.62 -0.67 3.04 -0.11 2.58 -1.47 
+2.64 -1.11 0.89 -1.87 -0.11 -1.39 1.46 -1.06 0.69 -1.61 -2.34 -0.71 -3.06 0.33 -2.09 0.82 
+-1.82 -0.37 3.69 -1.2 -1.04 -1.76 1.62 -0.09 0.72 1.26 1.83 -0.2 -0.35 -1.37 -1 -0.63 
+-2.14 -0.8 -2.24 -1.75 2.63 0.13 2.19 0.72 1.74 0.93 1.02 -0.72 2.21 1.2 2.71 -1.06 
+1.02 -1.93 -3.45 -2.35 -2.09 -1.3 -0.74 -0.63 0 -92.34 -1.5 -1.5 0 -19.05 -1.04 -2.64 
+-2.87 -2.08 0.93 1.28 0.2 1.82 2.78 1.63 0 19.05 -0.37 -0.37 -1.37 0.52 0.61 1.13 
+2.63 0.22 0 92.34 -1.5 -1.26 -1.82 -1.89 -1.26 -1.8 -1.78 -1.2 -0.41 -2.02 -0.78 -1.07 
+0 -120.86 2.5 -0.59 2.21 -0.61 0.98 -1.84 0.37 -2.71 -2.45 -1.67 0.39 -2.3 0.07 -2.73 
+-0.78 -2.25 -0.75 -2.19 -3.37 -0.3 -2.88 -1.61 -2.82 -0.74 -3.06 -0.22 -1.65 1.52 -0.58 2.34 
+2.08 -0.17 1.23 2.64 2.11 2.56 -1.76 0.16 -1.52 1.93 1.91 1.19 -1.61 1.07 1.11 1.71 
+2.3 -0.19 2 -0.15 1.28 1.28 -1.61 1.05 1.7 2.11 2.63 0.73 0 120.86 -0.85 -1.19 
+0.43 -1.84 -0.06 -2.58 -0.96 -1.55 -2.34 1.39 -0.78 -0.34 0 -7.45 0.78 -2 -1.54 0.04 
+0.76 1.96 0 7.45 -1.26 -0.52 -0.91 -1.73 1.95 -0.95 -0.11 -2.61 -0.98 -2.41 -2.09 -2.36 
+2.02 -0.42 -1.47 -1.91 -4.21 -0.41 1.61 -1.26 -0.72 -1.76 -2.23 0.21 -1.37 -0.58 -1.88 -0.63 
+1.47 -1.04 -0.61 -2.54 -1.17 -1.56 -1.93 1.65 -1.78 1.54 0.87 -2.02 1.26 -2.15 0.69 -2.37 
+-0.86 -2.09 -1.18 -2.43 -2.65 0.17 -1.46 1.24 0.48 2.17 0.28 1.74 -2.25 -0.29 -0.72 -2.56 
+-2.69 -0.65 -0.61 -1.21 3.04 0.57 2.06 -1.89 2.3 -1.04 -2.04 -1.32 -2.93 -1.09 -2.82 -1.15 
+-0.83 -0.22 0 -14.24 1.59 -0.84 1.13 -2.06 -0.89 -2.99 2.93 0.28 1.08 2.5 0.96 -1.54 
+1.45 1.09 2.54 0.02 1.34 -1.15 2.09 0.56 1.86 1.46 1.04 -1.5 2.32 0.09 -0.54 -3.02 
+2.14 -1.62 -0.67 -3 -2.76 -2.3 -3.77 -0.8 -2.87 -1.39 -2.52 -0.02 -3.35 -1.2 -3.02 1.43 
+-2.14 1.79 -4.49 0.95 2.71 1.73 -0.5 2.87 -3.49 0.8 3.54 1 2.5 1.32 -1.3 1.17 
+-2.32 -0.34 -1.65 0.82 2.08 1.35 0.89 1.65 1.59 -0.34 0.49 1.25 0 14.24 -1.84 -0.45 
+-3.21 -0.5 -3.02 -0.02 -2.59 -0.33 0 -220.03 -0.54 -1.39 -1.67 -0.35 -0.35 -3.27 -2.19 -0.78 
+0.17 1.41 2.37 2.64 0.93 1.33 1.28 0.41 0 220.03 -0.67 -0.08 -2.75 0.89 -2.45 -0.61 
+-2.95 -1.43 -2.12 -1.71 -0.74 -0.52 0 -221.13 1.41 -0.67 0.04 -1.43 -1.74 -0.28 -0.48 1.5 
+0.76 0.89 p
+0 221.13 -1.54 -1.06 -0.64 -0.22 0 -217.27 -1.08 -2.24 -1.34 -0.82 -1 1.99 1.67 0.11 
+1.75 0.96 0 217.27 -2.19 -0.76 -2.99 -0.84 -3.93 -0.45 -3.25 1.34 -3.09 0.26 -2.12 -1.68 
+-1.85 1.39 -1.06 -3.73 -1.87 -2.3 -2.26 -2.13 -3.43 -1.63 -3.25 -0.58 -1.35 -3.67 -2.91 -1.84 
+-2.32 -2.13 -1.91 -2.32 -2.75 -1.96 -2.23 -0.04 -1.89 3.12 0.11 2.67 -1.56 1.93 -2.78 2.02 
+0.02 4.01 0.86 2.95 1.09 3.39 0.82 1.82 1.21 4.53 1.61 1.96 0.11 2.3 2.54 2.61 
+1.74 3.04 0.26 3.47 2.26 2.12 1.82 2.41 2.78 2.34 3.26 2.06 3.08 0.87 2.56 -1.71 
+3.73 2.88 1.84 2.97 -3.45 -0.89 -3.08 0.91 0 2.78 3.12 2.06 3.21 1.96 1.87 -1.58 
+0.93 -2.82 1.8 2.37 -0.89 1.87 1.93 2.88 -2.47 -0.63 -1.67 1.28 0.61 1.52 2.96 1.45 
+1.39 2.07 3.34 1.93 1.84 1.7 1.15 2.34 2.56 1.82 1.37 2.61 1 1.97 1.85 1.24 
+-0.76 1.97 0.43 2.63 -1.45 1.56 -1.76 1.61 -2.17 0.54 -0.18 2.43 0.83 1.68 1.82 -0.09 
+0.21 1.93 0.79 1.43 2.11 -0.43 1.58 -1.13 0.41 2 1.89 1.19 -1.04 1.02 1.17 1.88 
+2.89 0.44 2.06 -1.22 2.54 -0.61 2.75 -1.78 3.93 0.71 1.65 1.26 -1.39 1.84 3.16 0.54 
+3.19 -0.08 2.17 -0.05 0.69 -1.3 1.98 0.52 1.52 1.37 0 0.91 -1.54 0.13 -1.52 -0.63 
+-3.97 0.24 -3.19 0.42 -2.88 -0.13 -3.65 -0.06 -2.47 1.39 -3.59 -0.3 -3.19 -1.12 -3.53 -0.39 
+-1.43 1.78 -2.06 -1.02 -2.75 0.81 -2.09 -2.37 -3.2 0.37 -2.45 1.57 1.96 1.25 -1.5 0.8 
+0.17 1.59 -1.47 0.93 -0.07 2.9 0.3 2.02 2.78 0.57 2.23 -0.98 1.02 -0.99 0.98 1.23 
+2.78 0.57 1.04 -2.2 1.32 2.25 4.19 -0.62 1.08 -1.09 2.43 1.06 3.04 0.65 0.91 1.43 
+3.84 0.05 -0.76 -1.89 1.7 -0.56 1.76 -1.86 2.43 -0.85 -1.56 1.91 -0.61 2.04 -1.21 1.29 
+-0.33 2.04 2.11 1.61 3.41 0.78 0 74.74 -2.97 -0.41 -2.06 0.43 -2.21 -0.91 0 -71.27 
+2.38 -0.76 3.08 0.15 0.02 -1.13 -3.08 -0.82 -2 -1.07 -0.37 -1.8 -1.61 -0.93 -2.91 -0.11 
+-0.57 -1.59 -2.56 -0.5 -1.91 0.81 -3.3 0.13 -2.61 0.63 -0.24 2.6 2.43 1.61 3.08 0.67 
+2.41 -0.15 2.67 0.85 1.96 1.15 3.11 0.26 0 71.27 -1.85 -0.74 -1.58 0.11 0 -67.27 
+1.78 -0.48 -3.02 -1.09 1.23 1.56 0 67.27 -2.17 0.15 -1.24 -0.57 0 -61.07 1.04 -0.61 
+-0.35 -1.24 -1.52 -1.06 -0.3 -1.39 -2.43 -1.35 -2.75 -0.11 -2.45 -0.54 -0.48 -0.98 2.71 -0.2 
+2.87 0.04 -2.56 -2.19 -1.74 -0.57 -2.04 0.2 -0.13 1.28 -0.17 1.58 -1.02 1.09 3.02 0.98 
+0.24 1.28 1.35 1.91 1.8 0.79 1.82 -0.79 1.63 1.54 1.48 0.33 0 61.07 -1.32 -0.61 
+-2.17 -1.02 0 -52.28 1.31 -0.87 -0.46 -2.11 -2.07 -1.59 -0.95 0.7 0.37 1.34 1.3 0.87 
+0.5 1.65 0 52.28 -0.74 -0.32 -0.54 -0.11 0 -49.91 0.39 -1.33 -2.26 0.11 0.06 0.76 
+1.8 0.46 0 49.91 -3.73 -0.8 -0.86 -0.46 0 -38.13 0.36 -1.8 1.56 -1.58 0.85 -1.5 
+0.32 -1.37 -1.25 -1.58 1.25 -1.2 -0.62 -0.26 0 -2.95 0.15 -1.37 0.48 -1.21 -0.39 -1.02 
+-2.95 0.35 p
+-0.98 1.71 1.32 1.45 2.37 0.09 0 2.95 -1.74 -0.73 -1.02 1.3 -0.96 -0.04 0 -11.24 
+0.29 -0.91 -1.89 -0.16 0 -7.62 1.02 -1.87 -0.17 -2.47 -1.56 -0.41 -1.54 0.63 0.8 2.13 
+1.45 2 0 7.62 -0.35 -0.02 -2.56 -0.65 1.07 1.41 3.45 0.33 0 11.24 -1.65 -0.07 
+-1.91 1.78 2.28 1.3 -1.71 0.96 -1.37 1.54 1.65 1.35 0.65 1.3 3.3 0.61 0 38.13 
+-1.91 -1.04 -3.28 -0.67 -1.8 -1.5 -1.04 -0.65 0 -38.45 1.63 -0.96 0.67 -1.49 -2.23 0.71 
+-1.45 0.72 1.39 1.02 0 38.45 -1.28 -0.78 -2.17 -0.44 0 -38.93 2.34 -1 2.54 -1.19 
+1.8 -1 -1.15 -1.47 -2.54 -1.59 -2.08 -0.74 -2.64 -0.52 -1.43 -2.32 2.54 0.7 1.71 -0.34 
+1.43 0.97 1.89 -0.91 1.15 -0.95 -1.37 -0.22 0 -13.52 -0.78 -2.04 -1.8 -1.7 0.11 -1.89 
+-1.84 -0.89 -1.21 -1.43 -1.37 0.29 -1.65 -2 -0.39 -2.45 2.13 -1.73 -0.11 -2.11 0.57 -1.65 
+-0.91 -2.43 -2.52 -0.87 -2.91 -0.22 -1.86 1.67 1.06 2.28 -2.56 0.63 -0.54 2.13 -0.11 2.11 
+0.02 2.34 1.21 2.75 3.39 0.87 2.89 0.16 2.78 0.89 1.63 1.47 -0.59 1.95 2.93 1.65 
+2.45 0.21 0 13.52 -1.61 -0.25 0 -4 0.07 -1.09 -2.04 -1.17 -2.78 -1.26 2.88 0.09 
+1.78 -0.63 -0.48 -1.91 -2.17 -1.83 -2.61 -0.28 -2.9 -0.52 -3.45 0.17 0.28 2.73 4.04 1.43 
+-1.13 1.67 3.08 1.3 2.39 0.37 3.04 0.91 0 4 -0.45 -0.07 -2.71 -1.74 -1.5 -1.54 
+-2.63 0.33 -2.8 0.13 0 -1.69 2.26 -0.5 -2.52 -0.91 0.26 1.41 0 1.69 -0.15 0 
+-0.09 1.52 1.23 2.54 -0.8 1.45 -1.3 1.3 -0.13 1.37 1.28 1.54 1.79 0.5 0.58 -1.61 
+2.8 1.04 -1.24 1.34 1.78 1.17 1.76 1.57 0 38.93 -1.04 -0.23 -2.7 -0.59 -3.08 -1.91 
+-3.58 -1.06 -3.06 -0.67 0 -21.86 2 -1.28 2.3 -1.41 3.04 -0.93 4.32 0.13 -0.61 -2.32 
+0.26 -2.06 -3.08 -1.89 -1.43 -2.28 -3.06 -0.87 0 -25.12 3.73 -0.57 0.02 -1.36 -2.39 -1.26 
+-3.6 -0.63 0.98 2.11 1.25 1.72 0 25.13 -0.46 -0.11 -3.25 -1.8 -0.98 2.04 -0.06 0.13 
+0 -47.16 1.15 -1.33 0.48 -1.82 -0.63 -1.8 -2.35 -1.46 -1.97 -0.58 -0.31 2.26 -1.54 0.89 
+0.24 2.04 2.65 1.46 2.28 0.35 0 47.16 -0.76 1.8 -1.02 2.15 -3.95 1.04 -2.41 1.65 
+0.59 1.78 -0.2 2.15 4.58 0.55 4.19 1.54 0 21.86 -0.54 -0.14 -3.84 -1.47 2.26 -0.87 
+0.57 -1.66 -1.22 -1.59 -2.54 -0.91 0.5 -1.56 -0.33 -2.54 -0.32 -2.34 -3.14 -0.05 -0.26 -1.61 
+2.91 -1.45 -3.5 -1 0 -13.11 2.67 -0.48 1.09 -1.34 1.82 -0.16 0.87 -1.52 0.3 -1.79 
+1.22 -1.37 -0.76 -1.54 -4.17 -0.45 1.61 -1.89 -2.17 -1.5 0.37 -1.71 -2.99 -2.28 3.17 -0.67 
+3.08 -1 -0.35 -2.09 -2.16 -1.25 -2.39 0.5 -1.39 0.43 0 -2.93 0.82 -1.17 -0.56 -2.11 
+3.38 1.63 2.24 0 0.97 -1.28 -0.71 -1.82 1.35 -1.2 -3.47 -1.39 -3.09 0.87 -1.36 -2.15 
+-3.85 -1.25 -4.01 -0.52 -1.07 1.89 -2.23 1.34 3.52 1.93 3.04 1.87 0.21 1.56 2.69 0.76 
+2.13 1.04 0 2.93 -1.56 0.5 -2.93 -0.68 -3.88 -1.21 -3.93 -0.13 -2.91 -1.87 -2.21 -2.49 
+-1.56 -2.87 p
+-3.19 -0.26 -0.33 1.84 -2.62 -1.25 -1.84 1.49 -0.57 2.02 2.32 2.41 2.73 1.84 -1.82 1.59 
+-0.54 2.19 -0.87 2.61 0.35 2.86 0.49 2.45 5.04 1.28 1.08 2.41 2.73 2.06 4.43 0.43 
+-0.72 -1.99 -1.15 -2.43 0.76 -2.11 2.82 2.11 0.87 2.21 1.89 2.58 2.73 1.41 1.95 -0.62 
+2.63 1.71 0 13.11 -1.37 -0.39 -3.78 -0.26 -2.11 -1.17 2.56 -1.96 -3.8 0.35 -1.32 -1.31 
+2.36 -1.12 -1.84 -2.64 -3.49 -1.56 -3.08 -2.26 -2.73 -2.19 -1.54 -2.54 -2.78 -2.3 -3.3 -1.11 
+-0.09 1.76 -2.08 0.39 -0.93 -2.08 -2 -2.19 0.11 -2.52 0.33 -2.34 -2.29 -1.96 -1.73 -2.12 
+2.71 -0.29 2.3 2.29 1.89 -1.11 0.54 -2.21 0.52 -2.04 -4.15 -2.43 -2.62 -3.16 -2.17 -2.59 
+-1.41 -3.43 0.52 -2.13 3.95 0.74 2.21 -0.65 2.95 3.3 2.17 -1.24 3.39 -0.39 -3.39 -3.22 
+-3.88 -2.34 -2.59 1.69 -3.78 -1.08 -2.08 -2.34 3.25 0.28 0.18 -0.57 3.5 -0.67 3.29 1.58 
+2.93 -0.39 2.58 3.38 3.97 2.61 3.75 0 3.61 0.11 1.73 -0.89 3.41 0.72 2.86 0.57 
+3.39 0.98 2.8 0.96 2.89 -0.05 1.23 -2.34 -0.78 -2.75 -1.11 -1.56 -1.79 0.24 -2.43 0.2 
+0 -2.96 3.02 -0.69 1.93 -0.82 0.5 -1.97 0.31 -1.84 -2.32 1.34 -2.04 0.22 -2.93 -0.26 
+-2.67 -0.93 -2.73 -0.96 -1.79 -2.11 2.56 1.35 2.78 0.74 3.32 0.91 3.21 -0.65 2.71 -1.09 
+1.07 -1.37 -1.37 -1.17 -3.06 -0.61 -2.63 -1.93 -3.38 -0.74 2.47 -0.59 0.67 -1.52 2.78 -0.65 
+0 -1.52 -0.49 -1.89 1.49 -1.56 -1.75 -1.32 -3.04 -1.43 0.8 -2.25 -0.48 -2.23 -2.04 -3.75 
+-0.48 -2.91 -1.95 -2.73 -2.82 -0.87 -0.96 -2.97 -2.47 1.2 -2.8 -1.72 -0.74 -3.32 1.97 -2.17 
+-0.97 -2.75 -0.33 -2.74 -0.28 -2.62 -0.59 -2.3 -3.97 -1.39 -2.47 -1.26 -2.65 1 -3.06 -1.48 
+-0.04 3.02 2.39 2.97 0.41 4.32 -3.95 -2.08 -1.88 -2.75 -0.68 -3.26 -0.74 -2.28 -2.48 -2.09 
+-0.97 -2.82 -3.49 -2.08 0 -681.32 4.05 -0.3 3.54 -1.13 2.28 -1.17 0.26 -1.65 -3.35 1.98 
+-3.23 1.15 -3.55 1.13 0 681.32 -0.26 -0.16 -2.02 1.98 0.04 3.04 0.35 2.76 -0.35 2.86 
+-1.61 -2.23 -0.69 -2.54 -0.89 -2.97 -0.56 -2.56 -1.04 -0.83 0 -712.2 4.6 -1.49 -4.47 0 
+-0.13 1.49 0 712.2 -1.08 -0.82 -1.2 1.99 -0.54 2.2 -0.06 2.52 0.84 1.52 -0.59 2.32 
+-0.11 1.91 0.7 2.65 2.32 1.54 0.34 2.3 -0.17 2.17 0.26 2.56 -0.76 2.13 -2.28 0.47 
+-1.59 2.65 1.93 2.39 2.78 0.71 1.09 -0.71 2.15 0.75 0.52 -3.08 1.43 -2.24 3.08 -0.49 
+1.91 3.14 2.82 -0.22 3.23 0.22 2.65 0.07 2.06 1.9 2.58 2.11 0.71 2.91 2.28 2.64 
+-3.02 0.71 4.3 1.48 1.69 3.86 2.17 2 -3.78 -0.02 -1.65 0.76 1.67 3.32 -1.11 1.29 
+-0.07 3.4 -0.7 2.13 1.56 3.14 2.39 2.23 3.09 2.08 2.54 2.22 3.88 1.04 2.91 0.13 
+2.93 0.06 0 2.96 -0.46 0.04 -2.93 0.15 -0.15 1.58 -1.24 1.05 -2.19 -1.2 -2.3 0.48 
+-3.32 -1.74 -2.71 -1.93 -2.09 -1.69 -3.23 -1.82 -3.04 0.96 -1.43 -2.22 -2.61 -1.89 -3.08 -2.28 
+4.75 -0.22 -2.93 -2.58 -2.73 -0.93 -3.35 -0.87 -3.34 -2.95 1.47 -0.87 2.65 1 2.75 -0.96 
+3.73 1.41 p
+3.71 1.5 3.26 1.15 0.61 -1.89 -0.31 -2.43 -2.06 -1.11 0.07 -2.52 -2.17 -0.91 0 -9.16 
+1.07 -1.79 -1.5 -1.78 -2.67 -1.06 -2.13 0.26 -1.56 1.59 2.62 2.19 4.17 0.59 0 9.16 
+-1.73 -0.74 -2.3 1.07 -3.15 -1.32 -0.7 -2.73 -3.79 -1.22 -3.54 0.93 -3.34 0.74 0.15 2.78 
+1.32 1.39 -1.22 2 -1.69 -2.17 -3.2 0.04 0 -1.36 3.23 -0.7 -2.95 -1.96 -1.87 -2.95 
+-1.23 -3.13 -1.41 -2.34 -2.13 -2.21 -0.59 -2.63 -3.36 0.43 1.28 2.59 0.83 2.32 -0.61 1.41 
+-2.52 0.16 -3.12 0.02 -1.17 1.59 3.08 1.58 -0.89 2.63 3.23 -0.8 3.58 2.08 3.8 1.26 
+2.82 0.66 0 1.36 -1.66 0.02 -3.2 -1.3 -3.64 0.09 -3.62 0.13 -0.78 2.96 -4.05 -0.13 
+-0.39 -0.17 0 -16.91 1.7 -0.93 0.61 -1.29 -0.47 -0.23 -0.24 0.02 0 -4.68 0.86 -1.59 
+-2.52 -1.23 -2.93 -0.61 1.02 1.67 3.56 1.76 0 4.68 -3.15 0.42 -1.24 1.43 2.8 0.59 
+0 16.91 -2.8 -1.3 -1.56 1.64 -1.49 1.5 -3.26 -1.29 -1.3 1.05 -2.93 0.02 -3.45 -0.17 
+-2.82 -0.5 -2.76 -0.5 -3.86 -1.37 -3.23 -1.34 -2.5 -1.91 0.81 -1.39 -0.18 -1.82 -2.34 -1.78 
+0 -36.63 3 -0.59 -1.05 -1.52 -3.6 -1.67 2.34 1.61 -1.87 -0.22 -0.8 1.3 3.21 0.09 
+-1.24 1 0 36.63 -1.2 -0.91 -2.61 -1.21 -2.45 -2.11 -2.06 -1 1.36 -0.93 1.59 -1.3 
+-1.32 -3.47 -0.26 -2.97 -1.21 -3.32 -2 -2.84 -0.37 -2.21 -0.11 -2.56 -1.37 -3.93 1.15 -2.39 
+1.23 -2.37 -0.39 -2.88 -4.6 -2.28 -2.04 -2.24 -2.3 -1.61 -2.12 -1.11 0 -0.96 1.78 -0.74 
+0.13 -1.37 -1.91 -2.25 -0.11 2.25 0.11 2.11 0 0.96 -0.91 -0.48 -1.39 -3.28 -1.7 -2.73 
+-1.04 -2.59 -1.76 -2.56 -0.69 -3.02 1.65 1.58 3.19 -0.58 3.65 0.71 2.02 3.04 2.69 2.06 
+3.04 2.56 1.91 2.28 1.78 2.39 2.49 -0.72 3 -0.35 3.38 -0.02 3.09 0.57 3.66 2.64 
+2.82 2.8 2.1 1.98 2.78 2.88 0.18 1.85 1.11 2.43 2.02 1.04 1.35 -1.04 2.99 0.5 
+2.39 1.52 2.67 2.13 0.82 1.86 2.82 0.85 2.66 0.95 0.79 1.98 2.45 1.45 2.22 -0.39 
+0.69 -2.13 0.15 -2.3 0.84 -1.22 2.46 -1.49 -0.41 -2.26 -0.95 -2.48 -0.3 -2.28 -2.15 -0.8 
+-0.26 -2.3 1.16 -1.37 0.73 -1.64 -2.5 -1.35 -1.8 -2.12 -2.75 -1.84 -1.71 -1.35 -1.35 -2.62 
+0.61 -1.41 -1.75 -3.65 3.08 -0.75 2.26 0.78 2.61 -0.28 2.86 1.04 1.05 1.95 1.97 0.35 
+2.54 0.52 -1.02 -1.95 -1.52 -2.97 -1.3 -3.12 -1.56 -2.89 -1.35 -3.04 -0.49 -2.3 -1.59 -1.52 
+-0.08 -1.98 -1.5 -0.46 0 -697.72 4.36 -1.62 -2.25 -0.76 -2.61 0.98 0.5 1.41 0 697.72 
+-0.91 -0.3 -2.28 -2.24 -0.56 -2.23 0.73 -2.58 -1.47 -2.23 2.16 -2.24 -0.69 -2.14 1.86 -1.96 
+0.16 -2.02 -3.41 -0.16 2.08 -2.12 -1.47 -2.08 1.89 -1.29 -0.29 -3.52 -0.09 -0.06 0 -672.24 
+3.04 -1.32 -1.73 -0.28 -0.83 -1.5 2.34 0.37 2.95 -2.75 -2.61 0.06 -3.05 1.33 1.91 -2.48 
+-2.58 0.5 -0.11 -1.96 -0.09 -1.88 0.89 -2.26 1.56 -1.58 1.63 -1.56 1.78 -2.06 -3.32 0.71 
+0.46 -1.39 3.32 -1.7 -2.08 -0.52 1.26 -2.17 2.89 -2.3 2.95 -0.72 0.65 -1.34 3.71 -1.54 
+2.21 0.63 p
+4.06 -0.89 4.42 -2.3 3.85 -1.91 3.55 -1.43 1.91 -1.48 2.82 -0.67 2.95 -1.56 1.33 -2.08 
+3.6 -0.89 1.96 -1.41 4.1 -0.71 1.63 -1.43 -1.48 -0.96 3.02 -1.02 4.43 -2.02 0.89 -1.71 
+2.87 -1.5 -1.17 -0.93 3.6 -1.78 2.13 -1.76 0.93 -2.3 1.82 -2.54 3.8 0.55 2.17 1.43 
+3 1.06 4.08 0.39 4.34 -0.47 5.21 -0.3 4.68 -0.43 4.58 -0.07 3.64 -0.34 5.32 0.8 
+4.1 0.81 3.13 0.91 1.21 1.99 -0.2 2.11 1.3 1.56 1.45 1.56 1.61 1.61 1.83 1.54 
+1.04 1.82 0.61 1.71 2.93 1.63 -0.98 2.25 1.93 1.47 2.73 1.54 2.19 1.45 3.04 1.5 
+2.45 1.45 3.63 0.8 2.63 0.46 2.43 1.09 2 1.37 -0.02 1.3 -2.41 0.93 -0.87 1.32 
+1.61 0.37 1.7 -1.26 0.89 1.34 1.65 1.05 2.12 -0.65 1.11 -0.95 0.82 -1.63 2.82 0.7 
+-1.08 0.98 0.58 1.37 -1.08 0.97 2.14 0.35 2.65 0.05 0.15 -1 -0.22 -1.3 3.89 0.04 
+3.84 0.34 -0.17 2.3 -0.98 1 2.19 0.7 2.28 -0.67 1.82 -0.98 -1.29 -1.32 2.2 -0.98 
+1.75 -1 3.45 0.98 3.58 1.3 2.3 1.35 3.25 0.95 4.47 -0.04 2.89 0.95 3.64 -0.06 
+3.5 -0.43 3.71 0.26 3.61 -0.09 4.32 -0.52 3.58 -0.11 3.54 -0.16 3.52 -0.15 4.08 -0.85 
+3.69 -0.54 3.47 -0.87 4.69 0.39 2.36 0.89 4.3 -0.28 4.14 0.78 4.56 0.05 4.23 0.75 
+1.98 0.18 3.84 -0.33 1.3 2.11 1.58 1.32 2.5 0.2 0.52 -1.56 1.04 -1.93 1.84 -0.96 
+2.98 -0.67 -1.21 -2.13 3.29 1.5 1.91 0.57 1.39 1.37 1.82 1.37 4.71 1.02 3.11 1.2 
+4.84 1.04 3.32 -0.02 3.76 -0.45 3.28 0.39 2.47 -0.78 2.02 0.96 2.04 -0.29 -0.83 -1.93 
+2.87 0.83 2.11 2.63 3.3 2.06 3.75 0.74 3.34 1.22 4.21 -0.17 3.23 -1 0.24 -1.8 
+1.84 -1.26 -1.41 -1.11 -2.39 0 0.61 -1.02 1.82 -0.8 1.26 -1.2 -1.2 -1.61 3.91 0.11 
+0.63 -1.58 1.52 -0.89 3.13 0.24 2.19 -1.06 1.5 -1.48 2.04 -1.11 1.87 -0.57 2.63 0.2 
+-3.45 -2.17 -1.98 -2.08 -2.11 -2.08 -2.88 -0.11 -2.37 -1.91 -3.56 -2.08 -1.71 -2.22 2.11 -0.3 
+1.45 1.8 4.49 0.54 3.06 -0.06 0.82 -1.02 0.24 -1.34 3.47 0.91 3.97 0.67 1.86 -0.21 
+4.95 2.21 2.91 0.57 4.06 -0.05 2.93 -0.19 5.1 1.52 2.82 -0.25 3.09 -0.37 3.04 -0.39 
+2.9 -0.5 0.26 -1.11 1.26 -1.09 2.04 -0.93 2.43 -0.23 0.21 -1.35 0.85 -1.04 1.52 -0.7 
+-0.76 -1.8 2.19 -0.35 -1.11 -1.48 2.04 -0.2 -0.29 -1.3 1.83 -0.09 0.3 -0.78 3.49 0.45 
+2.78 -0.35 -0.43 -2.06 -1.28 -1.95 -1.48 -2 -2.34 -2.34 -0.8 -1.65 -2.52 -2.32 2.36 0.3 
+-1.04 -1.49 2.36 0.49 3.34 1.35 1.32 -0.79 0.54 -1.11 0.39 -1.17 -2.89 -2.21 -3.86 -2.76 
+-2.34 -2.12 -3.41 -2.67 -1.93 -2.3 -0.66 -1.04 -0.63 -1.04 0.18 -0.67 0.2 -0.65 1.39 -0.83 
+-4.38 -2.38 -0.68 -0.83 -0.65 -0.8 0.91 -0.04 0.93 -0.04 -1.12 -0.96 -1.15 -0.96 2.34 -0.17 
+-0.78 -0.87 -1.47 -0.74 0 -64 0.29 -0.17 0.28 -0.15 0.28 -0.17 0.07 -0.16 0.06 -0.17 
+0.04 -0.15 -1.17 -0.65 -1.19 -0.63 -1.2 -0.65 -0.48 -0.36 -0.48 -0.35 -0.5 -0.37 -0.82 -0.5 
+-0.83 -0.48 p
+-0.87 -0.5 -2.25 -0.91 -4.61 -1.78 -2.36 -1.02 -2.41 -1.02 -2.45 -0.99 -1.57 -0.72 -1.61 -0.71 
+-1.61 -0.7 -1.69 -0.74 -1.74 -0.72 -1.75 -0.71 -2.28 -0.89 -2.32 -0.89 -2.34 -0.89 -0.16 -0.21 
+-0.12 -0.24 -0.15 -0.21 0.32 -0.09 0.33 -0.07 0.34 -0.08 -2.64 -0.87 -2.65 -0.89 -2.71 -0.87 
+0 -0.28 -0.02 -0.13 1.34 0.21 1.34 0.24 1.37 0.26 -1.95 -0.69 -1.96 -0.68 -2 -0.67 
+-4.28 -1.12 -4.25 -1.09 -4.25 -1.06 -1.87 -0.33 -1.84 -0.32 -1.82 -0.3 -3.6 -1.05 -1.82 -0.52 
+-1.61 -0.48 -1.63 -0.5 -1.64 -0.48 -3.08 -0.48 -1.52 -0.21 -3.08 -0.67 -6.2 -1.31 -1.24 -0.06 
+-2.43 -0.13 2.86 0.87 1.39 0.43 1.78 0.54 1.74 0.54 1.73 0.57 1.07 0.41 1.04 0.39 
+1.02 0.41 4.38 1.17 2.15 0.61 -0.37 0.04 -0.39 0.04 -0.37 0.04 -2.65 -0.52 -2.63 -0.52 
+-2.6 -0.5 3.95 0.93 3.95 0.96 3.93 0.95 3.17 1.09 1.54 0.56 2.63 0.8 2.61 0.8 
+2.58 0.8 -0.04 0.3 0 0.15 -0.22 0.13 -0.23 0.13 -0.22 0.13 -0.3 0.13 -0.61 0.22 
+0.61 0.37 0.58 0.37 0.61 0.37 1.15 0.5 1.15 0.48 1.13 0.5 1.75 0.63 1.74 0.63 
+1.73 0.65 2.72 0.89 2.71 0.93 2.66 0.91 3.64 1.08 3.63 1.11 3.64 1.11 2.54 0.83 
+2.56 0.84 2.54 0.85 3.9 1.13 1.96 0.58 3.71 1.5 2.5 0.89 2.52 0.91 2.5 0.93 
+1.95 0.63 1.97 0.65 2 0.65 0 64 -0.35 -0.19 -1.84 -0.91 -2.69 -1.15 -2.7 -1.11 
+-0.99 -0.67 -0.98 -0.65 -1.32 -0.63 -1.3 -0.62 0.8 -0.14 0.78 -0.11 3 0.73 2.99 0.76 
+0.91 -0.82 -1.63 -1.17 -1.67 -1.15 -0.98 -1.09 -1 -1.11 -3.17 -1.99 -0.74 -0.83 -0.76 -0.8 
+-2.48 -1.17 -2.5 -1.15 -1.28 -0.91 -1.28 -0.89 -2.17 -1.07 -2.17 -1.04 -1.76 -0.96 -0.99 -0.54 
+0 -50.85 0.17 -0.3 0.2 -0.28 0.17 -0.3 -2.14 -0.57 -4.3 -1.09 2 0.85 3.91 1.69 
+0 50.85 -0.79 -0.41 -2.11 -1.11 -2.13 -1.11 -2.6 -1.37 -2.63 -1.37 -1.93 -0.56 -1.95 -0.59 
+-0.5 -0.61 -0.52 -0.63 -2.38 -0.93 -2.41 -0.93 -2.26 -0.21 -2.26 -0.17 -1.43 -0.59 -1.43 -0.57 
+-1.3 -0.78 -1.32 -0.79 -2.82 -0.74 -2.84 -0.73 -2.08 -0.2 -2.06 -0.2 -5.95 -1.99 -0.46 -0.48 
+-0.48 -0.48 -3.36 -0.96 -3.39 -0.93 -0.54 -0.5 -0.57 -0.5 -2.23 -0.28 -2.23 -0.3 -1.83 -0.8 
+-1.84 -0.8 -3.17 -1.11 -3.19 -1.09 -3.06 -0.24 -3.06 -0.21 -2.75 -0.5 -2.78 -0.48 0.11 -0.46 
+0.11 -0.44 -2.25 -0.54 -2.26 -0.52 -2.89 -0.57 -2.91 -0.54 -3.43 -0.54 -3.45 -0.52 -2.52 -0.34 
+-2.54 -0.37 -2.21 0.61 -1.46 0.24 -1.46 0.26 -1.82 0.05 -1.82 0.06 -0.69 -0.82 0.71 -0.41 
+0.71 -0.39 -1.82 -0.5 -1.82 -0.47 -0.89 0.47 -0.87 0.5 -3 -0.56 -3.02 -0.57 -2.56 -0.54 
+-2.56 -0.52 -3.39 -0.11 -3.36 -0.09 -3.32 -0.02 -3.3 -0.02 -3.19 0.04 -3.16 0.04 0.13 -0.39 
+0.13 -0.41 -2.48 0.48 -2.43 0.48 1.28 0.46 1.3 0.45 -2.61 1 1.08 0.54 1.07 0.55 
+1.61 0.63 1.59 0.63 4.94 0.87 -1.43 0.91 -0.18 0.54 -0.15 0.52 1.97 0.41 2 0.41 
+-0.63 0.34 -0.61 0.37 0.89 0.61 0.88 0.58 1.28 0.7 1.26 0.67 -0.61 0.61 -0.58 0.63 
+-0.87 0.43 p
+-0.85 0.46 -2.61 0.78 -2.52 0.82 -2.43 0.83 -0.81 0.48 -0.78 0.5 -1.63 0.13 -1.61 0.13 
+-2.21 0.33 -0.26 0.05 0 -1.91 0.37 -0.65 0.39 -0.67 -2.25 0.08 -2.26 0.11 -2 -0.09 
+-1.99 -0.06 3.04 1 2.34 0.13 2.36 0.15 0 1.91 -1.93 0.28 2.06 0.39 2.04 0.39 
+2.17 0.7 2.17 0.71 1.21 1.48 -2.17 1.17 -1.43 0.78 -2.69 1.09 -2.08 1.23 -3.06 1.07 
+-3.55 0.8 -4.08 1 -3.93 0.82 -4.25 0.87 -4.17 0.46 -5.43 -0.26 -4.86 0.93 -2.11 1.52 
+-3.99 0.61 -3.67 0.73 -3.14 1.05 -1.07 1.71 -3.88 0.54 -3.64 1.2 -5.54 0.37 -2.3 -1.3 
+1.39 -1.52 -0.33 -1.7 -3.06 -1.09 -1.45 -1.41 -1.34 -0.61 0 -8.01 2.09 -1.58 -0.89 -0.61 
+-0.91 -0.63 -1.12 -0.22 -1.15 -0.19 0.43 -0.57 0.42 -0.54 -2.43 0.36 -2.45 0.37 -0.33 0.57 
+-0.3 0.55 0.24 0.61 0.26 0.58 1.82 1 4.34 0.3 0 8.01 -1.21 -0.56 -2.59 -1.15 
+-1.89 -1.29 -3.91 -0.24 -5.29 0.7 -5.38 1.21 -3.04 0 1.34 -1.65 1 -1.46 2.17 -1.69 
+2.08 -1.89 0.8 -0.85 0.83 -0.84 0.17 -0.55 0.2 -0.56 -3.12 0.39 -3.91 1.13 -0.92 -0.32 
+-0.91 -0.3 1.98 -0.61 2.02 -0.59 0.79 -0.56 0.78 -0.55 -0.43 -0.43 -0.46 -0.41 -0.84 -0.85 
+-2.37 0.24 -2.39 0.26 -2.93 0.93 -2.9 0.98 0.26 1.25 -1.78 0.89 -1.76 0.91 -2.95 0.61 
+-2.98 0.61 -1.43 0.16 0 -72.48 3.13 -0.24 3.11 -0.21 3.08 -0.2 -0.85 -0.02 -0.84 0 
+-0.87 -0.02 1.96 -0.26 1.97 -0.29 1.98 -0.26 -4.23 0.48 -4.23 0.5 -4.18 0.52 0 72.48 
+-1.95 0.2 -3.38 0.37 -1.81 -0.3 -1.78 -0.28 0 -1.22 2.54 -0.26 2.54 -0.24 2.43 -1.34 
+-3.58 0.41 -3.55 0.42 -0.2 0.49 -0.17 0.52 0 1.22 -0.02 -0.02 -1.2 -0.35 -1.17 -0.34 
+-1.13 -0.37 -1.15 -0.35 -3.14 1 -3.13 0.99 -3.02 0.72 -3 0.74 -1.21 1.21 -2 0.2 
+-2 0.22 -2.3 0.69 -2.28 0.74 -2.61 0.71 -2.61 0.76 -2.15 0.54 -2.12 0.57 -2.15 1.21 
+-2.11 1.21 0.68 0.89 2.11 0.98 1.39 0.93 0.11 1.41 -1.25 0.89 -3.34 0.35 -5.38 0.82 
+-5.82 1.24 -4.52 1.37 -6.27 1.82 -5.3 0.43 -1.54 1.48 3.86 0.32 1.13 1.02 -4.17 0.67 
+-0.63 1.63 -1.37 1.74 1.32 0.06 4.45 -1.97 4.97 -0.81 3.91 0.52 -1 2.34 -3.26 1.7 
+-4.88 0.78 -4.91 0.83 -3.66 1.39 3.04 -0.22 4.75 -0.54 4.66 -0.37 1.02 1.15 -5.04 1.21 
+-1.3 -0.58 -4.99 1.11 -0.43 1.13 3.19 -0.43 3.54 -1.22 3.75 0.02 -0.41 1.34 -1.89 1.7 
+-3.36 0.8 -0.21 1.63 1.63 0.73 2.45 0.52 -2.41 1.07 -4.17 -0.5 -3.2 1.47 -2.45 -0.06 
+-2.45 0.7 0.87 1.15 -1.43 1.37 -3.41 0.06 1.54 -1.73 -4.88 0.33 -0.74 1.36 3.2 -1.12 
+-0.61 1.95 4.12 -0.13 -2.3 1.2 3.36 -0.59 3.17 -0.95 0.26 1.02 -3.06 1.26 -3.21 1.04 
+-1.93 -0.85 -4.23 0.39 -3.39 -0.09 -2.6 -0.52 -1.46 1.72 2.69 0.65 -1.22 1.8 2.82 0.41 
+3.19 -1.11 2.14 0.96 2.39 0.95 2.5 0.91 1.07 1.41 1.16 1.39 2.55 0.61 -0.48 1.43 
+0.37 1.3 2.37 0.93 2.38 0.96 3.09 -0.24 -3.64 1.41 -2.65 1.98 3 0.39 3.75 0.04 
+2.54 0 p
+3.39 -2.13 1.13 1.2 1.15 1.24 0.7 1.47 1.34 1.17 -0.43 1.5 -2.89 2.19 -3.58 1.96 
+-3.12 1.02 -4.1 2.32 -4.34 1.73 -3.8 1.46 -4.06 2.4 2.02 0.68 -1.15 1.8 -2.89 0.7 
+-1.3 1.69 -2.82 1.8 -1.12 0.34 0 -5.62 5.29 -2.08 4.67 -2.21 4.38 -1.76 4.1 -1.82 
+3.85 -1.88 2.8 -1.76 2.52 -1.78 0.21 -1.63 -1.34 -1.21 -2.63 -0.58 -2.99 1.06 -1.89 -0.35 
+-3.52 0.87 -2.52 -0.04 -3.32 1 -1.57 1.19 2 1 1.67 1.39 1.09 1.07 0.56 0.86 
+-1.34 1.22 -4.14 1.82 -4.43 1.76 -3.34 1.71 0 -4.34 2.5 -0.15 2.39 -1.41 1.52 -1.18 
+-0.78 -0.98 -1.58 -0.8 -1.89 1.67 -2.04 0.96 -0.11 1.88 0 4.34 -0.57 0.28 -0.33 1 
+0.79 0.89 0 5.62 -2.35 0.72 -2.19 1.45 0.3 -2.04 -1.39 -0.43 -2.99 1.8 -1.52 2.19 
+0 1.61 3.02 -1.73 0.78 0.73 3.49 -1.09 -3.25 2.24 0.11 1.56 -2.78 1.3 -0.33 1.93 
+-0.39 2.45 -2.54 1.91 2.8 0.09 -1.72 2.1 1.89 0.85 -2.02 2.04 -0.2 1.39 2.37 1.39 
+0.75 1.54 0.8 1.52 1.76 0.7 0 672.24 -2.04 -1.69 -1.76 -3.82 -2.32 -0.37 -0.52 -0.09 
+0 -1.43 1.34 -0.85 -2.49 -1.93 0 -656.36 -1.41 -1.58 -0.13 -0.07 0 -9.89 3.11 -1.3 
+-0.91 -1.65 0.33 -1.41 -2.87 0.32 -0.58 2.37 3.12 -1.28 -2.2 2.95 0 9.89 -1.21 -0.58 
+-0.37 -2.43 -2.17 0.09 0.8 1.11 1.74 1.24 -0.39 1.78 3.15 0.45 0 656.36 -0.13 -0.09 
+-3.08 -1.75 -2.2 -1.05 -2.84 -1.91 3.37 0.33 1.02 -1.8 -2.15 -0.52 0.41 -2.73 2.23 -0.67 
+1.93 -1.15 0.84 -1.7 -3 -1.28 -0.45 -2.11 2.54 -0.85 -4.04 -1.28 -1.7 -1.39 0.15 -1.3 
+2.52 1.57 1.29 -0.16 -2.52 -2.12 1.85 -0.39 -2.26 -2.28 -2.24 -2.3 -1.82 1.02 1.43 2.1 
+-2.41 -0.41 2.52 2.13 -1.19 1.32 -1.57 0.26 -3.32 -1.67 -1.43 1.52 2.41 0.39 1.19 1.67 
+-1.67 1.59 -2.2 1.34 -2.19 1.39 -2.09 2.02 -2.8 0.54 1.19 2.41 2.13 0.48 2.69 0.72 
+-0.61 1.02 2.58 1.46 3.35 1.58 2.95 2.41 3.12 1.71 2.32 1.61 2.19 1.04 2.8 0.07 
+0 1.43 -2.56 -0.39 -2.97 1.37 -3.21 0.3 -2.48 -0.91 -2.45 -0.84 -2.67 -0.68 -2.41 1.74 
+-2.3 1 -0.59 1.78 -1.67 1.28 -1.48 1.18 -1.09 1.52 -2.2 1.13 -1.04 0.84 0 -3.52 
+1.66 -1.34 1.37 -1.71 0.76 -1.98 0.63 -1.73 -0.56 -2.3 -1.52 1.13 -1.37 1.76 -0.8 1.93 
+0.43 1.71 -0.61 2.54 0 3.52 -0.59 0.5 -1.39 1.2 -2.56 0.76 -2.47 -0.67 -2.28 -1.65 
+-1.59 1.43 -3.45 -0.5 -2.93 -0.33 -2.87 -1.02 -2.32 -0.87 -2.52 -0.63 -2.28 -0.83 -2.56 -0.65 
+2.37 -0.74 2.52 0.63 2.52 0.71 2.87 1 2.93 0.35 2.73 -0.26 2.11 -0.5 2.74 -0.24 
+2.23 -1.12 2.21 -1.18 0.93 -2.19 -0.24 -1.89 -1.41 -1.61 -2.56 -0.02 -2.02 0.21 -2.52 2.11 
+-0.5 -3.82 2.89 -0.93 -1.28 -0.98 0 -4.82 -1.2 -1.85 0.93 -2.02 1.61 -1.2 2.41 -1.12 
+-2.39 -0.24 -1.34 -1.65 -1.28 2.95 -0.61 2.48 0.16 1.93 1.71 0.72 0 4.82 -0.93 -0.71 
+-2.23 -3.02 -1.2 -3.19 0.89 -2.09 0.71 -3.19 1.56 -1.78 2.28 -0.39 1.11 -1.41 1.65 2.12 
+3.04 1.07 p
+2.6 1.46 0.02 -1.35 -2.17 -2.34 0.65 -3 -3 -0.52 -2.34 0.3 -1.78 -1.34 -3.06 0.83 
+-3.87 0.78 -2.9 0.13 -1.41 1.06 -2.25 -0.98 -2.78 -0.62 -2.76 -0.61 -0.39 2.38 1.26 2.5 
+2.39 1.49 3.02 0.43 1.78 -0.06 3.26 0.25 -2.21 0.98 1.64 1.52 -3.45 -0.09 -2.49 0.65 
+-2 1.65 -1.43 -1.7 -2.41 -0.15 -2 0.35 -2.25 0.45 0.06 1.43 -2.69 -1.32 -2.25 0.5 
+-2 0.37 -0.73 -0.84 -2.28 -0.87 -2.12 -1.11 -0.87 -1.46 -1.73 -0.65 0.2 -1.61 -1.32 -2.54 
+1.23 -1.11 1.17 1.17 -1.39 -1.67 -2.54 0.74 0.71 0.87 -1.82 0.13 0.39 1.87 -1.86 -1.26 
+-2.04 0.37 -1.32 1.23 -1.3 1.24 -2.04 0.41 -2.19 0 0 -0.21 1.93 -1.02 1.64 -0.87 
+2.07 -0.37 0.13 -1.7 -2.84 0.39 -2.08 1.26 -2.13 1.24 1.29 1.06 0 0.21 -0.2 0 
+-2.3 -0.84 0.11 -1.71 -2.61 -2.12 -3.02 -1.71 -2.73 -0.39 0.78 2.34 -0.13 1.76 -1.75 -3 
+-1.39 -4.12 -1.71 -0.63 -2.67 -1.32 -2.58 -2.17 -1.02 0.24 2.58 2.17 1.84 1.3 -0.89 0.89 
+1.3 1.09 -0.35 1.97 2.21 1.7 1.47 1.76 1.89 1.24 -1.82 0.24 -1.84 -1.25 -2 -2.8 
+-1.24 -1.91 -0.93 1.75 0.11 -3.32 -2.06 -1.96 -1.39 -1.71 -0.32 -2.93 -0.91 -2.21 -1.54 -2.45 
+-0.67 -2.43 0.5 2.21 -0.13 1.37 -1.28 0.43 -1.82 0.28 1.37 -1.36 1.15 -1.13 -1.39 -1.82 
+-1.5 -0.89 -0.91 0.91 -2.76 -0.41 1.39 -1.37 -1.71 -0.68 -0.22 0.14 0 -143.77 0.26 -1.87 
+-1.09 0.52 -0.73 -0.7 0 -8.33 0.87 -1.65 0.02 -1.2 -0.89 2.85 0 8.33 -0.5 -0.5 
+0.28 2.19 0.95 -0.99 0.83 1.34 0 143.77 -1.76 1.06 -2.54 -0.7 -2.52 -0.61 -1.47 0.76 
+-2.41 0.06 -0.15 -0.08 0 -179.36 3.19 -0.8 -0.76 -3.11 -1.52 -1.06 -2.67 1.11 1.78 0.43 
+0.61 2.54 -0.62 0.89 0 179.36 -1.93 -1.07 -2.26 -0.85 -2.73 -0.37 -1.72 0.07 0 -116.99 
+2.41 -1.35 2.39 -1.32 0.78 -2.26 -1.61 -0.98 -1.7 0.93 -1.91 0.46 -1.54 1.45 1.17 3.06 
+0 116.99 -0.67 0.02 -3.08 -0.82 -2.76 -2.04 -2.71 -2.04 -1.82 -3.04 -1.76 -3.08 -0.56 -1.58 
+0 -27.37 0.09 -3.67 -2.36 -2.39 1.88 2.8 0.39 3.25 0 27.37 -0.71 -2 -1.52 -3.34 
+-0.93 -3.87 -1.28 -1.91 -0.65 -1.87 0 -11.3 0.21 -2.02 2.09 -0.37 0.95 -0.85 -0.3 -1.54 
+-0.17 1.32 -1.93 0.61 0 -45.4 0.96 -1.41 1.34 1.09 -1.8 -2.06 -1.84 1.3 1.34 1.09 
+0 45.4 -1.15 0.37 0.3 2.48 0 11.3 -0.83 -2.28 -0.61 -1.78 0 -64 2.21 -1.52 
+1.54 -3 1.69 0.16 2.56 -1.7 1.74 -1.71 2.04 -1.91 -0.19 -2.49 2.28 -1.41 -2.23 -0.54 
+2.88 -2.97 0.67 -3.56 -2.36 -1.78 -0.52 2.88 -2 1.2 -2.71 0.34 -2.19 0.71 0.63 1.55 
+-2.39 0.2 -0.63 -1.54 -2.37 -1.79 -0.37 4.12 -1.71 1.83 -0.05 0 0 -44.23 0.7 -1.48 
+0.18 -1.05 -0.87 2.52 0 44.23 -1.8 0.5 -1.39 1.63 -1.91 1.28 -1.04 -0.63 -1.67 3.8 
+1.91 0.7 1.67 -1.8 1.15 -2.15 1.9 -1.25 2.29 0.48 -0.52 3.67 0.87 2.02 -0.02 2.73 
+-1.89 1.3 1.93 0.67 0 64 -0.8 -2.34 -0.78 -1.23 0 -14.84 0.8 -0.7 -0.87 -3.69 
+-1.15 -2.04 p
+-0.26 -2.67 -1.65 -1.5 0.83 3.69 -0.26 3.88 1.67 0.78 0.89 2.24 0 14.84 -1.34 -2.15 
+-2.41 -3.21 -2.56 -2.21 -1.34 -0.21 -1.58 0.69 0.99 3 -0.06 3.21 1.11 3.71 0.82 3.21 
+0.31 2.93 1.08 2.23 2.39 2.41 -1.28 0.48 1.32 1.97 1.84 2.11 1.54 3.37 -0.3 1.28 
+1.21 4.58 0.26 3.17 -1.65 1.11 -2.11 -0.13 -1.63 1.15 1.3 2.85 -0.52 2.56 0.26 2.46 
+-1.56 1.17 -1.61 1.13 -1.17 1.63 1.11 2.45 -1.7 -0.57 -0.8 2.11 -0.96 1.41 -2.24 0.3 
+0.02 3.08 -2.45 -1.48 0.39 -1.61 1.26 -0.96 0.96 -1.41 -1.31 -1.13 -1.28 -0.07 -0.76 -0.95 
+-0.29 -3.54 -1.15 -0.39 0.52 2.26 -0.41 1.56 -1.48 0.26 -1.69 1.47 -0.71 2.24 1.32 2.14 
+0.46 3.58 -2.04 0.07 -0.61 2.28 -0.26 2.67 -1.52 1.63 -1.2 1.07 -2.14 0.43 1.95 2.28 
+-1.39 0.3 -1.52 -3.26 -0.48 -0.02 0 -75.98 2.41 -0.02 1.84 -1 1.82 -1.04 2.17 -0.48 
+1.56 -1.5 1 -2.52 1.61 -1.49 0.8 -2.26 0.8 -2.17 0.02 -3.06 1.67 -1.43 1.15 -2.41 
+0.91 -2.93 0.65 -2.67 0.93 -2.21 0.74 -3.41 1.52 -1.91 1.26 -1.63 -1.56 -2.34 1.5 -0.35 
+1.54 -1.89 0.28 -2.91 0.91 -0.67 -0.17 -1.24 -2.09 0.83 -1.67 -0.18 -1.84 1.33 -1.54 1.91 
+-1.82 1.37 -2.04 0.8 -2.39 1.87 1.63 0.84 1.93 0.61 0.41 2.56 -2.61 2.1 -0.71 3.45 
+1.02 2.8 -0.07 1.45 -1.95 0.96 -1.13 2.47 -1.13 1.71 -0.28 2.5 -2.43 2.23 -1.08 1.59 
+0 -33.03 1.99 -0.11 1.56 -1.87 1.58 -1.93 1.05 -2.13 -0.29 -2.57 -1.21 0.89 -1.02 1.47 
+-1.67 -0.15 -1.3 1.65 -0.24 3.06 -1.19 0.91 0.74 0.78 0 33.03 -0.26 0.39 -0.22 2.54 
+2.17 -0.48 -1.84 2.49 -1.26 2.09 -1.89 -0.52 -0.87 -0.22 0 -3.12 0.15 -1.65 -0.5 -2.23 
+-1.36 0.37 -0.57 0.93 0.74 0.5 0.21 1.41 1.33 0.67 0 3.12 -1.07 -0.25 -1.78 1.78 
+-1.72 -1.56 -1.99 2.09 2.11 -0.52 1.15 2.02 1.89 0.5 0 75.98 -1.37 -0.13 -1.8 -0.2 
+-1.3 1.41 -2.56 -0.07 -2.47 0.02 -2.17 -0.63 -2.52 -2.52 -2.04 -3.54 -2.32 -2.91 -1.78 -2.78 
+-2.41 -1.52 -2.58 -2.36 -2.58 -2.35 -2.23 -3.02 -2.21 -3.06 -2.2 -3.06 -2.13 -1.89 -1.78 -3.75 
+-0.37 -4.05 -1.76 -1.41 -1.36 -3.32 -0.79 -3.04 -0.58 -3.36 -1.41 -4.14 -1.04 -3.64 -0.8 -4 
+0.65 -2.88 0.63 -2.93 -0.36 -3.36 0.86 -1.2 2.15 -1.07 1.87 -1.47 2.49 -0.43 1.29 -2.65 
+-0.57 -1.04 2.2 -0.98 0.67 1.91 1.8 0.46 1.54 -0.04 1.52 2.69 1.65 1.52 1.78 2.38 
+2.39 3.34 1.54 -0.07 1.67 -1.2 1.69 -1.2 2.02 -0.61 1.71 -1.17 0.91 -1.89 1.45 -1.63 
+0.13 -1.87 -1.45 -2.56 -2.72 -1.26 -2.25 -2.61 -3.91 -5.82 -2.21 -3.43 -2.43 -2.41 0.61 3.46 
+-3 -5.09 -1.61 -3.25 -2.9 -3.56 -2.61 -0.54 0.78 -2.5 0.5 -2.97 2.64 -0.26 1.39 -2.91 
+1.86 -1.04 2.13 -0.46 1.39 -2.15 1.93 -0.95 0.82 -1.59 1.2 -1.8 0.24 -4.02 0.96 -2.28 
+0.11 -1.61 -2.04 -4.92 -2 -2.02 -1.54 -3.84 -1.28 -3.32 -2.09 -3.38 -1.24 -3.34 -1.61 -2.37 
+-0.41 -3.3 -0.04 -3.49 -0.05 -3.56 0.85 -3.43 1.02 -2.87 -0.28 -3.3 1.58 -1.15 0.76 -2.61 
+2.63 -0.43 p
+2.26 -0.26 2.3 -0.2 1.65 1.54 1.96 -1.32 1.28 -2.13 1.5 -1.7 1.02 -3.3 0.7 -3.04 
+0.67 -3.11 0.8 -4.38 1.39 4.99 2.8 1.54 1.82 2.14 1.87 -0.49 0.95 3.27 1.32 3.09 
+1.67 1.52 2.04 0.06 1.52 -1.54 1.66 1.54 2.59 -2.17 2.56 0.41 1.85 0.8 2.06 0.02 
+1.72 1.59 1.86 0.8 1.23 -1.39 0.18 -1.97 -1.87 -2.02 -2.41 0.09 0.09 -3.82 -0.09 -3.08 
+-1.65 -1.57 -1.97 -2.64 0.48 -2.71 -0.42 -2.91 2.82 -0.26 1.02 3.75 -0.41 4.54 1.11 3.8 
+2.06 0.04 2.11 0.11 2.19 0.66 0.16 3.05 2.19 0.63 -0.54 -4.64 1.78 -0.98 2 -1.63 
+1.3 -2.52 -0.37 -2.87 0.13 -2.45 2.69 -0.79 2.56 -1.25 1.98 -0.39 1.8 -0.89 0.34 -1.93 
+1.61 -1.91 2.43 -1.76 2.52 0.02 2.91 1.63 2.63 -1.2 3.02 -1.34 2.65 -1.15 -4.04 0.59 
+0.98 -2.72 0.93 -3.29 1.63 -0.16 1.69 -1.82 2.43 -2.16 0.09 -3.46 -1.59 -3.29 3.71 -0.42 
+2.3 -3.12 1.93 -2.95 1.95 -3.02 0.3 -2.87 -0.87 -2.47 2.06 -0.21 2.02 -2.93 1.37 -2.12 
+0.87 -2.48 2.71 -1.54 2.43 -0.82 2.54 -0.28 2.45 -0.81 2.37 -1.37 2.32 -1.78 1.54 -1.09 
+1.93 -1.62 2.25 -2.3 1.8 -2.73 2.21 -2.78 1.45 -1.99 2.13 -3.8 -0.43 -3.54 1.2 -4.56 
+0.41 -4.32 2.91 -1.29 -0.85 -4.46 -2.45 -2.46 -1.87 -1.58 -2.32 -1.5 -1.08 -2.84 -0.74 -3.43 
+3.14 0.74 1 -4.43 1.11 3.88 0.29 3.54 2.28 0.96 2.54 -1.16 2.63 -0.17 2.93 -1.73 
+-1.13 -3.84 -1.06 -2.34 1.23 -1.28 2.02 4.12 1.85 0.54 3.02 -0.74 2.89 -2.71 2.56 -1.63 
+3.45 -1.76 0.79 -2.26 2.69 0.43 0.7 -2.69 1.2 -2.73 -0.98 -2.8 3.11 0.29 2.73 0.93 
+2.64 -1.02 2.59 -2.04 2.69 -0.52 2.6 -2.02 2.7 -0.52 2.73 0.48 2.69 -0.5 2.61 -2.5 
+2.65 -2.43 2.62 -2.43 1.74 -2.3 1.8 -2.26 2.69 -1.91 1.76 -2.24 2.73 -0.95 2.73 0.08 
+3.17 -1.49 1.33 -3.59 0.89 -3.56 0.93 -3.49 0.43 -2.95 -0.41 -3.8 -2.7 -5.38 -1.32 -2.17 
+-2.26 -2.11 -1.3 -2.23 -2.69 -1.49 -1.3 -1.26 -1.72 -2.63 -1.23 -2.71 -2.15 -3.02 -2.15 -2.11 
+-2.61 -1.54 -0.22 -3.82 -0.24 -2.84 0.63 -2.96 0.22 -2.88 0.65 -2.95 -0.59 -3.23 -0.17 -3.34 
+0.26 -2.89 -1.56 -1.66 -0.13 -2.82 0.31 -2.89 -0.15 -2.82 -2.32 -2.54 -0.48 -2.78 -2.28 -2.54 
+-0.5 -2.78 0.41 -2.86 -2.41 -1.13 -2.41 -1.11 0.39 -2.43 -2.61 0.33 -2.54 -0.16 -2.6 0.33 
+-1.24 0.37 0 -157.18 2.76 -0.82 1.3 -1.78 -1.95 -1.04 -0.13 -1.41 -1.99 -0.56 -1.63 1.32 
+-1.5 0.37 -0.68 -1.47 -4.1 2.14 3.04 -0.78 0.11 1.43 -2.54 1.73 2.54 0.63 3.07 -0.8 
+1.7 1.04 0 157.18 -1.43 0.41 -3.38 -0.02 1.2 -2.05 -2.58 0.33 -1.65 -2.65 -1.87 1.15 
+-2.62 -1.54 -2.37 -0.67 -1.67 -2.12 -2.06 -2.15 -1.61 -2.19 -1.57 -2.17 0.65 -2.93 0.89 -3.95 
+1.08 -2.97 0.3 -2.87 -0.13 -2.84 -0.98 -0.85 -1.58 -1.71 -1.23 -2.72 -0.85 -2.75 0.05 -2.84 
+-0.8 -2.76 -0.72 -2.75 -1.8 -1.71 -1.75 -1.76 -1.37 -1.75 0.2 -2.87 -0.98 -2.76 -1.66 -1.71 
+0.34 -1.98 -1.26 -1.78 -1.75 -1.29 -2.13 -0.28 -3.26 0.73 -2.47 -0.26 -2.99 1.19 -2.13 1.63 
+-2.99 0.26 p
+-3.23 2.73 -0.02 -1.91 1.56 -2.12 4.54 -2.32 2.25 -2.08 0.07 -2.91 2.14 -2.58 2.07 -0.61 
+1.59 -2.99 -0.22 -2.85 -0.78 -2.36 0.39 -2.46 -1.91 -1.32 -1.74 -0.83 -2.39 -0.84 -2.64 -0.3 
+-1.89 -0.43 -2.95 -0.3 -3.19 0.17 -1.79 1.56 0.89 -2.52 2.39 -2.06 0.29 -1.96 0.48 -2.97 
+1.5 -1.54 0.74 -2.02 -1.95 -1.41 -3.39 0.11 -2.58 1.11 -2.84 1.59 -0.57 -1.48 2.37 -3.06 
+1.97 -3.52 2.84 -1.56 2.15 1.45 2.36 -3.02 0.5 -1.5 -1.97 0.04 -2.46 2 -0.82 -1.95 
+3.23 -1.06 -1.45 -1.93 0.24 -2.04 1.52 -1.98 1.84 -3 -0.93 -1.02 1.25 -1.98 -2.23 -0.02 
+-1.5 -1.52 -0.28 -1.52 0.78 -3.02 2.32 -2.97 2.89 -1.91 3.19 -1.95 2.73 0.09 1.63 -1.91 
+1.5 -2.95 -0.41 -2 -0.89 -2.09 -0.3 -2.02 1.63 -2.95 1.71 -2.93 -1.47 -1.15 -0.13 -2.04 
+1.8 -2.93 2.56 -2.37 2.54 -2.3 4.02 -2.68 -0.11 0 0 -1.56 3.64 -2.19 1.89 -1.82 
+2.21 -1.85 3.45 -1.61 3.32 -1.15 2.54 -1.21 2.39 -0.76 2.04 0.24 0.97 -1.39 -0.89 -0.59 
+-2.54 -0.28 -1.23 -1.67 -2.5 -0.35 2.7 -2.21 -3.28 1.08 -1.5 -0.71 -2.36 0.74 -2.26 1.74 
+-0.54 -1.15 -2.85 0.65 -4.19 1.47 -1.34 1.39 -1.43 -0.22 -2.34 1.84 -1.91 -0.28 -1.36 1.41 
+-2.8 1.21 -0.39 1.58 -1.89 0.24 -2.82 1.21 -1.85 1.39 3.3 -1.17 3.32 -1.15 4.21 -1.54 
+2.56 -1.24 3.1 -0.62 1.89 -0.83 -1.13 2.99 3.11 -2.73 1.41 -0.3 -2.84 2.75 0.99 1.69 
+-1.13 0.93 -1.43 -1.23 -1.62 0.84 -2.04 2.91 1.54 0.17 -0.48 1.52 1.49 -0.41 0.88 0.65 
+0 1.56 -2.41 0.24 -1.58 -0.18 1 -1.45 -1.32 -0.13 -1.06 -1.7 2.06 -2.93 2.61 -2.82 
+-0.57 -0.58 -3.06 0.61 -2.09 1.3 1.46 1.8 -1 2.04 -1.69 0.29 0.68 -2.59 -0.18 -1.65 
+-3.29 1.17 -2.3 1.3 -1.35 1.43 -1.95 0.33 -2.7 2.32 0.35 -1.61 -2.39 0.78 -2.64 2.95 
+2.41 -0.19 -1.23 2 -3.06 2.9 1.17 -2.02 -1.17 -1.82 -1.17 2.58 -2.09 3.04 1.43 -0.34 
+-2.21 1.91 -1.58 2.57 1.26 -4.82 -2.99 3.5 -0.24 1.63 -2.02 0.37 -1.82 2.52 -1.75 1.47 
+-2.41 3.67 -2 2.52 -1.34 2.12 0.96 0.61 4.14 -3.45 -2.39 3.05 -1.67 2.56 -1.32 3.73 
+-1.67 -0.11 -2.43 0.89 -0.5 -1.67 -1.58 2.13 0.65 2.73 -2 1.52 1.3 0.65 -1.7 1.54 
+-0.89 2.11 -0.5 1.61 -2.41 2.65 -0.87 2.62 0.07 2.2 2.61 -2.13 0.45 -1.61 1.37 -1.56 
+0.55 -2.11 1.3 -1.05 1.76 -2.06 -1.3 3.16 -1.71 2.07 0.44 1.61 -1.67 1.56 -0.5 2.67 
+-1.98 2.08 -0.78 2.67 -2.65 4.25 0.3 1.02 -1.58 1.08 -0.35 2.11 -2.52 1.11 0.63 -2.1 
+-1.84 0.52 -1.23 1.39 0 -1.89 2.82 -1.11 1.63 -2.13 0.11 -2.17 1.96 -2.11 0.8 -2.69 
+-2.47 0.54 -2.13 4.25 -1.37 2.17 -1.34 3.23 0 1.89 -0.67 0.74 -1.91 2.73 -0.98 2.72 
+-2.15 3.77 -0.22 3.21 -2.08 3.28 -1.82 2.78 -1.41 2.7 -2.43 2.82 -1.26 3.8 1.67 -0.11 
+-1.63 3.3 0.48 1.07 -0.93 3.25 -0.87 3.26 -0.13 3.19 -0.46 3.23 -1.04 3.28 0.11 2.08 
+-1.75 3.36 -0.35 4.3 -1.58 2.28 -0.89 2.28 -1.61 3.38 -1.82 3.93 -0.83 3.3 0.85 1.5 
+-1.89 4.54 p
+-1.5 2.34 0 3.19 -0.7 3.32 0.07 3.19 -1 3.36 0.22 4.26 -1.84 4.05 0.52 2.02 
+-0.74 2.84 -1.21 3.45 -0.48 3.3 -0.81 3.39 -0.75 3.38 0.39 3.14 -0.35 3.32 -0.26 3.3 
+-1.08 3.47 -0.63 3.39 -0.2 3.3 -1.54 4.75 -1 4.02 -0.52 3.4 -2.73 3.47 -1.72 1.52 
+-1.93 3.3 -2.52 2.36 -2.58 2.91 -1.61 1.06 -3.34 3.19 -2.61 3.63 -2.34 1.26 -3.34 3.89 
+-3.43 5.64 -2.2 4.16 0.09 3.43 -1.81 5.28 -0.97 3.84 -1.61 2.87 -0.87 2.71 -1.61 4.12 
+-0.87 3.86 -2.32 5.6 -0.74 3.88 -0.76 3.89 -0.74 3.91 -1.39 4.21 -2.15 3.4 -0.61 4.51 
+-1.33 3.67 -1.32 3.06 -2.06 2.82 -1.34 2.52 1.58 1.67 -1.2 4.34 -0.41 3.95 0.24 3.04 
+2.39 1.93 2.36 1.28 1.52 0.5 1.08 3.19 0.93 2 -1.73 0.91 -0.79 -3.37 -1.34 4.47 
+-1.3 1.97 0.87 0.76 0.43 3.56 -0.09 5.16 1.93 0.24 0.52 3.54 2.11 1.37 1.07 4.52 
+3.19 0.74 2.39 0.58 -0.19 3.32 1.86 -0.43 0.13 3.12 2.08 2.65 2.43 -1.37 1.83 3.39 
+1.95 2.08 -0.91 3.04 1.43 3 0.39 3.62 0.76 3.39 0.76 4.73 1.02 2.56 -0.62 3.66 
+-0.96 3.88 0.04 4.54 1.63 1.56 -1.32 0.84 -0.2 3.47 -1.15 2.76 -1.3 0.87 -1.82 -2.15 
+-1.78 -0.82 -1.96 0.02 -0.35 -2.52 1.02 -3.34 -2.45 -0.39 -1.8 0.56 0.8 4.17 -1.96 1.34 
+-0.3 2.93 -1.58 2.52 -1.74 1.93 -1.28 -0.41 -0.44 2.41 -1.71 1.95 1.39 3.2 -0.5 3.21 
+-1.37 3.99 -0.15 2.98 -2 -1.28 -0.2 1.58 -1.02 1.61 0.42 3.3 1.3 2.63 1.02 2.86 
+-0.63 3.5 -0.56 3.49 -0.35 4.14 -0.21 3.26 0.02 3.9 1.13 -1.06 0.04 3.88 -1.24 -1.17 
+-1.95 1.87 -1.32 1.32 -0.91 3.3 -1.35 1.37 -0.04 2.52 -0.83 3.34 -1.54 1.65 -1.05 2.78 
+-0.74 3.38 0.11 3.43 -0.17 3.69 0.17 4.28 0.11 2.56 -0.3 3.13 -0.61 2.58 -0.82 2.11 
+-1.34 1.8 -2.24 0.13 -2.41 0.46 -0.93 3.21 -0.91 3.36 -1.15 2.74 -0.3 3.6 -0.26 3.61 
+-0.82 2.55 -0.17 3.65 -0.5 3.04 -0.43 3.14 0.48 5.14 0.47 3.91 -0.5 1.02 -0.83 2.93 
+-0.21 4.43 1.2 4.17 0.54 4.27 0.11 4.17 1.58 5.02 1.76 4.68 1.69 0.13 0.89 2.35 
+2.1 0.73 1.55 2.09 0.69 2.99 2.97 4.91 1.17 3.45 1.5 4.41 1.24 3.45 2.04 4.86 
+1.22 3.78 1.32 3.88 2.71 4.86 0.73 4.45 1 3.34 1.34 1.43 1.91 1.11 1.67 3.04 
+-0.17 1.13 1.64 2.97 2 4.95 2.8 2.73 0.17 3.1 2.65 4.97 2.75 4.93 2.84 3.73 
+2.43 3.65 1.93 2.04 2.98 3.62 2.49 2.06 0.98 2.7 1.54 2.71 -0.46 1.17 1.63 3.86 
+-2 -1.2 -2.58 -2.38 -2.58 -2.84 -2.47 -1.58 -2.07 -2.87 -1.52 -3.23 -2.41 -3.62 -2.43 -4.12 
+-2.39 -3.76 -2.86 -3.45 -1.76 -3.73 -2.71 -4.28 -2.61 -5.08 -2.67 -3.6 -2.56 -4.36 -1.8 -1.91 
+-1.63 -3.5 -0.98 -0.19 -2.06 -3.62 0.3 -1.89 -2.28 -4.91 -1.89 -4.02 -3.12 -0.39 3.19 5.58 
+1.37 4.29 1.93 4.45 1.52 3.88 1 4.56 2 0.8 2.78 2.84 2.7 4 1.21 3.75 
+1.76 3.43 -0.11 1.93 1.35 3.37 0.95 2.5 1.91 2.58 1.91 4.14 -0.43 -3.19 1.5 -0.68 
+2.48 2.22 p
+1.93 3.28 1.95 3.3 2.59 4.49 1.11 3.21 3.56 3.25 0.54 1.56 2.59 2.04 1.65 2.76 
+1.56 1.17 2.15 2.73 2.69 2.73 3.32 3.82 3.25 3.02 2.82 2.99 2.45 3.73 0.24 1.54 
+2.2 1.8 0.28 1.52 1.55 3.04 1.65 3.41 1.84 4.14 3.27 1.95 3.89 4.23 3.21 3.13 
+2.85 3.49 1.54 0.5 2.8 1.48 0.48 1.54 2.58 2.25 2.93 1.78 -2.3 -2.73 3.19 2.54 
+0.83 -0.2 1.11 1.78 -1.7 -0.83 1.3 2.52 2.11 0.7 2.32 2.63 2.86 2.56 2.91 1.58 
+2.3 1 2.67 2.04 2.26 2.15 1.71 0.67 2.93 0.3 3.26 0.97 3.71 2 2.69 1.89 
+3.54 1.54 3.56 0.37 3.64 0.66 3.23 0.78 3.4 1.08 2.56 0.22 1.52 0.63 1.43 0.56 
+2.3 0.67 -1.32 -2.82 2.41 3.14 2.45 0.96 2.39 0.91 3.86 1.8 3.3 1.63 2.02 1.04 
+1.56 0.11 -3.23 -3.43 -1.17 -2.37 -2.67 -2.59 -2.17 0.74 0.46 -1.2 -1.28 -0.63 2.99 0.04 
+3.38 1.95 0.83 -0.28 3.38 1.89 2.41 1.89 3.41 0.8 -0.7 1.61 2.73 2.39 3.32 2.47 
+1.5 1.06 1.91 1.36 2.93 2.61 0.25 0.22 2.61 2.67 3.87 2.82 2.21 0.3 3.12 1.65 
+3.89 1.17 3.32 2.54 4.32 1.74 0.91 0.39 2.97 1.87 4.27 1.43 0.29 -1.65 2.21 0.8 
+0.91 -0.3 1.58 -0.57 0.43 1.91 2.97 1.71 3.15 1.21 3.49 0.91 1.91 -0.26 1.22 1.39 
+2.3 1.33 -3.71 -1.09 -4.95 -1.35 -3.73 -0.02 3.67 1.21 3.06 1.61 2.45 0.91 2.78 0.63 
+2.61 -0.13 0.75 1.39 3.54 0.24 0.83 -1.45 -3.04 -2.13 0.73 0.24 2.37 0.76 2.89 0.71 
+-1.45 0.79 -0.33 1.41 2.63 -0.2 3.73 0.35 1.84 -0.39 3.41 0.54 -2.14 0.7 1.26 1.24 
+-3.73 -1.46 -3.1 0.3 -4.3 -0.35 -4.14 0.28 4.73 0.85 3.95 0.59 4.34 1.43 3.91 0.43 
+3.5 1.63 3.78 1.28 4.49 1.3 3.73 1.59 3.34 -0.24 0.17 1.59 2.78 1.71 4.04 1.61 
+1.19 0.87 1.72 1.22 2.97 2.06 4.36 1.59 4.78 1.34 3.34 0.78 2.61 1.52 3.45 1.15 
+-3.34 0.96 -0.8 1.97 2.78 1.52 0.67 1.97 1.06 2.11 3.22 1.98 -0.29 -1.65 2.54 0.5 
+0.5 -2.04 2.32 -1.52 -2.26 -1.95 -0.11 -1.61 2.45 1.25 1.82 2.45 0.48 1.78 -1.32 1.65 
+0.29 1.97 1.65 1.87 -0.52 1.26 -3.49 -0.89 0.07 1.89 0.5 1.67 2.21 2.43 2.02 2.6 
+0.39 1.91 2.93 2.54 2.3 1.91 -0.11 1.63 3.11 1.82 3.32 2.13 3.73 1.87 1.93 1.56 
+3.45 1.72 3.08 2.12 4.41 2.48 0 136.98 -3.36 -0.46 -5.6 -0.74 -5.6 -0.82 -5.57 -0.85 
+-11.16 -1.87 -3.41 -0.63 0 -155.23 -1.46 -2.82 -1.15 -2 -1.34 -2.14 -2.69 -0.19 2.36 2.25 
+-2.32 -0.71 -2.45 0.26 2.45 1.95 -0.12 1.39 1.54 1.83 5.19 0.2 0 155.23 -2.17 -0.41 
+-5.55 -1.02 -5.54 -1.12 -5.55 -1.13 -5.51 -1.24 -5.51 -1.21 -5.51 -1.33 -5.49 -1.32 -5.47 -1.41 
+-5.49 -1.43 -5.45 -1.5 -5.45 -1.52 -10.85 -3.21 -5.39 -1.71 -5.38 -1.7 -5.38 -1.8 -0.75 -0.26 
+0 -180.75 -2.48 -2.19 -1.62 -1.95 -2.43 0.89 -4.08 -1.13 -1.76 0.41 -2.88 -1.65 -4.11 -1.26 
+4.82 2.78 3.76 1.43 3.88 0.87 2.91 1.54 4 0.26 0 180.75 -4.6 -1.54 -5.32 -1.89 
+-5.34 -1.89 p
+-5.3 -1.98 -5.3 -2 -5.27 -2.06 -3.32 -1.32 0 -184.62 0.16 -1.21 -3.28 -2.78 -2.97 -3.27 
+-2.63 -2.74 -4.36 -2.38 -3.93 -2.61 -4.12 -3.28 -3.71 -2.47 -0.29 1.49 2.2 2.37 3.08 3.06 
+1.7 0.37 0.98 1.76 2.52 1.82 2.32 2.23 1.54 0.04 3.06 2.58 3.1 2.56 4.64 2.45 
+0 184.62 -1.93 -0.76 -5.23 -2.17 -5.21 -2.16 -5.19 -2.26 -1.65 -0.71 0 -56.82 -0.17 -0.31 
+-0.2 -0.32 -0.52 -0.09 0.45 0.37 0.43 0.35 0 56.82 -2.91 -1.26 0 -57.83 -0.61 -0.63 
+-0.59 -0.63 -1.41 -0.84 -1.41 -0.87 -1.34 0.13 2.43 1.48 1.45 0.69 1.48 0.68 0 57.83 
+-0.62 -0.29 -5.17 -2.34 -5.14 -2.34 -5.1 -2.45 -2.5 -1.17 0 -59.44 -0.98 -0.85 -0.96 -0.87 
+-2.97 -1.32 -2.97 -1.34 2.17 1.46 2.19 1.47 1.78 0.74 1.73 0.71 0 59.44 -2.61 -1.26 
+-5.05 -2.52 -5.06 -2.54 -5.01 -2.6 -2.02 -1.04 0 -61.09 -1.15 -0.74 -1.15 -0.76 -0.63 -0.58 
+-0.62 -0.57 -2.24 -1.26 -2.23 -1.3 0.59 0.63 0.61 0.65 0.87 0.72 0.89 0.74 0.96 0.37 
+0.93 0.35 1.61 0.89 1.58 0.87 0 61.09 -3.02 -1.59 -4.97 -2.69 -4.34 -2.37 0 -61.39 
+-1.59 -1 -1.59 -1.02 -1.54 -1.05 -1.52 -1.04 -1.57 -1 -1.54 -1.02 -2.78 -1.43 -1.58 -1 
+-1.57 -1.02 0.3 0.91 2.21 2 0.91 1.21 -0.35 0.39 1.8 1.2 1.83 1.17 0.82 0.21 
+0.84 0.2 2.35 1.15 2.36 1.13 -0.3 -0.82 2.48 0.82 0 61.39 -0.63 -0.35 -4.9 -2.78 
+-4.93 -2.78 -4.88 -2.88 -4.86 -2.87 -4.84 -2.97 -4.82 -2.95 -4.75 -3.04 -4.77 -3.06 -4.71 -3.12 
+-4.73 -3.12 -4.67 -3.19 -4.64 -3.21 -4.6 -3.3 -4.6 -3.28 -4.56 -3.36 -4.53 -3.39 -4.5 -3.43 
+-4.49 -3.45 -4.43 -3.54 -4.43 -3.52 -8.72 -7.2 -4.3 -3.67 -4.29 -3.69 -8.47 -7.51 -4.19 -3.82 
+-4.17 -3.82 -8.2 -7.81 -4.04 -3.95 -4.01 -3.97 -3.97 -4.04 -1.3 -1.34 0 -448.89 0.7 -4.05 
+0.37 -3.88 -1.7 -1.59 -1.02 2.13 1.54 1 -0.89 2.82 0.99 3.58 0 448.89 -2.67 -2.69 
+-3.88 -4.12 -1.89 -1.97 0 -3 -3.63 -3.99 -3.58 -3.95 -3.47 -3.95 -3.41 -3.9 -3.32 -3.89 
+-3.28 -3.86 -3.17 -3.84 -1.63 -1.93 -1.62 -1.98 -1.61 -1.95 -3.26 -4 -1.61 -2.02 -2.39 -3.06 
+-2.34 -3.04 -2.3 -3.04 -2.28 -3.02 -2.21 -3 -2.2 -2.99 -2.15 -2.93 -2.11 -2.95 -2.1 -2.93 
+-2.07 -2.93 -4.04 -5.86 2.06 3.04 2.11 3.08 2.17 3.11 2.21 3.15 2.25 3.16 2.32 3.21 
+2.13 2.87 2.15 2.86 2.17 2.82 2.19 2.84 2.19 2.8 2.21 2.8 2.02 2.58 2.04 2.58 
+2.11 2.61 2.13 2.63 2.15 2.64 2.21 2.67 2.25 2.67 5.25 6.08 2.67 2.99 5.34 5.95 
+2.71 2.93 2.7 2.93 0 3 -2 -2.13 -3.82 -4.16 -3.82 -4.19 -7.5 -8.48 -7.34 -8.59 
+-7.2 -8.74 -7.04 -8.86 -6.87 -8.98 -6.73 -9.12 -6.58 -9.22 -6.4 -9.33 -6.25 -9.44 -6.08 -9.55 
+-5.9 -9.66 -5.73 -9.77 -5.58 -9.85 -5.4 -9.94 -5.21 -10.05 -5.06 -10.13 -4.86 -10.22 -4.69 -10.3 
+-4.51 -10.39 -4.34 -10.46 -4.14 -10.53 -3.95 -10.61 -3.78 -10.68 -3.61 -10.74 -3.39 -10.81 -3.21 -10.85 
+-3.04 -10.92 -1.71 -6.73 0 -162.21 0.09 -0.74 0.13 -0.75 0.11 -0.76 0.09 -3.6 0.13 -3.63 
+-0.45 3.39 p
+-0.05 2.04 -0.02 2.04 -0.02 2.02 0 162.21 -1.11 -4.23 -2.64 -11.03 -2.43 -11.05 -2.25 -11.09 
+-2.06 -11.16 -1.87 -11.16 -1.67 -11.2 -1.47 -11.24 -1.28 -11.24 -1.09 -11.28 -0.89 -11.29 -0.7 -11.3 
+-0.5 -11.31 -0.26 -10.22 p f*
+2497.72 1950.98 -5.05 0.15 2.54 -0.07 2.52 -0.09 f*
+2810.8 1859.14 -1.91 1.15 2.58 -1.52 2.56 -1.56 -1.3 0.78 -1.93 1.15 f*
+2821.14 1852.84 -1.7 1.04 1.24 -0.78 1.69 -1.07 -1.23 0.8 f*
+2832.18 1845.75 -2.89 1.89 1.38 -0.89 1.52 -1 f*
+2840.11 1840.5 -1.34 0.91 2.73 -1.87 -1.39 0.96 f*
+2849.42 1834.09 -1.61 1.11 3.15 -2.21 -1.54 1.11 f*
+2858.62 1827.52 -1.84 1.32 3.21 -2.34 -1.37 1.02 f*
+2867.71 1820.77 -2.15 1.61 2.8 -2.11 1.91 -1.45 -2.55 1.95 f*
+2876.7 1813.89 -2.63 1.99 2.47 -1.91 2.39 -1.87 -2.23 1.78 f*
+2885.54 1806.83 -2.02 1.59 1.02 -0.8 3.47 -2.82 -2.48 2.04 f*
+2896.22 1797.96 -3.84 3.23 1.89 -1.56 1.95 -1.67 f*
+2903.78 1791.47 -3.75 3.23 2.84 -2.43 4.01 -3.56 -3.1 2.76 f*
+2911.13 1784.94 -3.67 3.26 3.86 -3.43 3.13 -2.87 -3.32 3.04 f*
+2.77778 w
+1 J
+1 j
+K
+3125.8 1302.47 -0.13 11.35 -0.26 11.32 -0.5 11.35 -0.73 11.33 -0.89 11.22 -1 11.33 -1.26 11.22 
+-1.52 11.19 -1.63 11.22 -1.89 11.22 -2.15 11.07 -2.25 11.09 -2.39 11.09 -2.64 11.09 -2.89 10.96 
+-3.04 10.83 -3.12 10.83 -3.4 10.85 -3.65 10.7 -3.77 10.7 -3.91 10.59 -4.14 10.59 -4.41 10.46 
+-4.4 10.44 -4.77 10.2 -4.77 10.33 -5.04 10.09 -5.29 10.07 -5.4 9.96 -5.54 9.83 -5.79 9.81 
+-5.91 9.59 -6.04 9.57 -6.29 9.44 -6.42 9.33 -6.54 9.18 -6.68 9.2 -6.9 8.94 -7.05 8.83 
+-7.18 8.81 -7.42 8.57 -7.42 8.44 -7.66 8.45 -7.82 8.18 -7.92 8.05 -8.05 7.94 -8.18 7.82 
+-8.42 7.68 -8.41 7.44 S
+2902.89 1792.27 -8.57 7.42 -8.79 7.18 -8.81 7.05 -8.94 6.92 -9.18 6.68 -9.18 6.55 -9.31 6.42 
+-9.44 6.3 -9.57 6.05 -9.55 5.92 -9.81 5.79 -9.8 5.54 -9.94 5.43 -10.07 5.27 -10.07 5.05 
+-10.31 4.77 -10.2 4.8 -10.44 4.53 -10.43 4.28 -10.57 4.17 -10.57 3.91 -10.7 3.77 -10.7 3.65 
+-10.81 3.41 -10.83 3.14 -10.8 3.15 -10.96 2.78 -11.07 2.64 -11.07 2.39 -11.07 2.28 -11.07 2.13 
+-11.2 1.89 -11.2 1.65 -11.2 1.49 -11.2 1.26 -11.32 1.02 -11.2 1 -11.3 0.63 -11.33 0.52 
+-11.33 0.24 -11.33 0.13 -11.31 -0.13 -11.33 -0.24 -11.2 -0.52 -11.33 -0.63 -11.31 -1 -11.2 -1.02 
+-11.33 -1.26 -11.2 -1.49 S
+2387.46 1945.21 -11.2 -1.65 -11.07 -1.89 -11.19 -2.13 -11.07 -2.28 -11.07 -2.39 -10.96 -2.64 -10.94 -2.78 
+-10.94 -3.15 -10.83 -3.14 -10.8 -3.41 -10.7 -3.65 -10.7 -3.77 -10.57 -3.91 -10.57 -4.17 -10.43 -4.28 
+-10.31 -4.53 -10.33 -4.8 -10.18 -4.77 -10.2 -5.05 -9.94 -5.27 -9.94 -5.43 -9.94 -5.54 -9.68 -5.79 
+-9.68 -5.92 -9.57 -6.05 -9.45 -6.3 -9.31 -6.42 -9.18 -6.55 -9.05 -6.68 -9.07 -6.92 -8.81 -7.05 
+-8.68 -7.18 -8.68 -7.42 -8.42 -7.44 -8.31 -7.68 -8.29 -7.82 -8.05 -7.94 -7.92 -8.05 -7.82 -8.18 
+-7.55 -8.45 -7.53 -8.44 -7.32 -8.57 -7.29 -8.81 -7.05 -8.83 -6.79 -8.94 -6.79 -9.2 -6.54 -9.18 
+-6.42 -9.33 -6.16 -9.44 S
+1934.18 1655.96 -6.16 -9.57 -5.91 -9.59 -5.66 -9.81 -5.66 -9.83 -5.4 -9.96 -5.17 -10.07 -5.03 -10.09 
+-4.91 -10.33 -4.64 -10.2 -4.53 -10.44 -4.28 -10.46 -4.16 -10.59 -4.02 -10.59 -3.77 -10.7 -3.52 -10.7 
+-3.54 -10.85 -3.14 -10.83 -3.02 -10.83 -2.89 -10.96 -2.64 -11.09 -2.39 -11.09 -2.25 -11.09 -2.02 -11.07 
+-1.89 -11.22 -1.63 -11.22 -1.52 -11.19 -1.26 -11.22 -1.12 -11.33 -0.89 -11.22 -0.73 -11.33 -0.39 -11.35 
+-0.37 -11.32 -0.13 -11.35 0.13 -11.33 0.37 -11.35 0.39 -11.19 0.73 -11.35 0.89 -11.33 1.13 -11.22 
+1.26 -11.33 1.52 -11.21 1.63 -11.2 1.89 -11.09 2.02 -11.22 2.25 -11.09 2.39 -11.09 2.64 -10.96 
+2.89 -10.95 3.02 -10.96 S
+1854.67 1123.59 3.14 -10.83 3.54 -10.83 3.52 -10.7 3.77 -10.72 4.02 -10.57 4.16 -10.59 4.28 -10.46 
+4.53 -10.33 4.64 -10.33 4.91 -10.2 5.03 -10.2 5.17 -9.96 5.4 -9.94 5.66 -9.96 5.66 -9.7 
+5.91 -9.7 6.16 -9.57 6.16 -9.46 6.42 -9.31 6.54 -9.2 13.58 -18.14 7.05 -8.81 7.29 -8.71 
+7.32 -8.68 7.53 -8.45 7.55 -8.31 7.82 -8.31 7.92 -8.07 8.05 -7.95 8.29 -7.79 8.31 -7.57 
+8.42 -7.55 8.68 -7.31 8.68 -7.18 8.81 -7.05 9.07 -6.92 9.05 -6.79 9.18 -6.55 9.31 -6.42 
+9.45 -6.19 9.57 -6.16 9.68 -5.93 9.68 -5.66 9.94 -5.66 9.94 -5.42 9.94 -5.17 10.2 -5.04 
+10.18 -4.93 S
+2203.78 714.3 10.33 -4.64 10.31 -4.54 10.43 -4.3 10.57 -4.14 10.57 -4.04 10.7 -3.78 10.7 -3.54 
+10.8 -3.38 10.83 -3.28 10.94 -3.04 10.94 -2.88 10.96 -2.65 11.07 -2.38 11.07 -2.28 11.19 -2.02 
+11.07 -1.89 11.2 -1.63 11.2 -1.52 11.33 -1.26 11.2 -1.13 11.31 -0.89 11.33 -0.76 11.2 -0.37 
+11.33 -0.39 11.31 -0.11 11.33 0.11 11.33 0.39 11.33 0.37 11.3 0.76 11.2 0.89 11.32 1.13 
+11.2 1.26 11.2 1.52 11.2 1.63 11.2 1.89 11.07 2.02 11.07 2.28 11.07 2.38 11.07 2.65 
+10.96 2.88 10.8 3.04 10.83 3.28 10.81 3.38 10.7 3.54 10.7 3.78 10.57 4.04 10.57 4.14 
+10.43 4.3 10.44 4.54 S
+2741.34 709.66 10.2 4.64 10.31 4.93 10.07 5.04 10.07 5.17 9.94 5.42 19.61 11.33 9.55 5.93 
+9.57 6.16 9.44 6.19 9.31 6.42 9.18 6.55 9.18 6.79 8.94 6.92 8.81 7.05 8.79 7.18 
+8.57 7.31 8.41 7.55 8.42 7.57 8.18 7.79 8.05 7.95 7.92 8.07 7.82 8.31 7.66 8.31 
+7.42 8.45 7.42 8.68 7.18 8.71 7.05 8.81 6.9 9.07 6.68 9.07 6.54 9.2 6.42 9.31 
+6.29 9.46 6.04 9.57 5.91 9.7 5.79 9.7 5.54 9.96 5.4 9.94 5.29 9.96 5.04 10.2 
+4.77 10.2 4.77 10.33 4.4 10.33 4.41 10.46 4.14 10.59 3.91 10.57 3.77 10.72 3.65 10.7 
+3.4 10.83 S
+3097.5 1112.76 3.13 10.83 3.04 10.96 2.89 10.95 2.64 10.96 2.39 11.09 2.25 11.09 2.15 11.22 
+1.89 11.09 1.63 11.2 1.52 11.21 1.26 11.33 1 11.22 0.89 11.33 0.73 11.35 0.5 11.19 
+0.26 11.35 0.13 11.33 S
+2477.65 751.61 -2 1.5 -4.03 0.63 -3.65 0.76 -3.14 1.02 -1.12 1.76 -3.91 0.49 -3.65 1.26 
+-5.54 0.39 -2.25 -1.39 1.39 -1.52 -0.26 -1.63 -3.14 -1.15 -1.39 -1.39 -2.63 -1.13 -2.52 -1.12 
+-1.89 -1.39 -3.91 -0.24 -5.29 0.73 -5.41 1.26 -3.02 0 1.26 -1.76 1 -1.39 2.28 -1.63 
+2 -1.89 0.89 -0.89 0.76 -0.89 0.13 -0.5 0.24 -0.63 -1.5 0.26 -1.65 0.13 -1.89 0.63 
+-1.99 0.5 -0.89 -0.26 -0.89 -0.37 1.89 -0.5 2.02 -0.63 0.89 -0.63 0.74 -0.52 -0.5 -0.37 
+-0.37 -0.5 -0.5 -0.39 -0.39 -0.37 -2.39 0.26 -2.38 0.24 -2.89 0.89 -2.91 1 0.26 1.26 
+-1.76 0.89 S
+2411.74 742.41 -1.75 0.89 -3.02 0.63 -2.91 0.63 -3.38 0.23 -3.41 0.39 -1.76 -0.26 -1.88 -0.26 
+-1.13 -0.37 -1.25 -0.37 -1.13 -0.39 -1.13 -0.24 -3.15 0.87 -3.14 1.02 -2.91 0.74 -3.02 0.76 
+-0.62 0.63 -0.63 0.49 -2 0.26 -2.02 0.26 -2.28 0.63 -2.26 0.76 -2.65 0.74 -2.62 0.76 
+-2.15 0.5 -2.15 0.63 -2.13 1.15 -2.02 1.25 0.63 0.87 2.15 1.02 1.37 0.87 0.13 1.39 
+-1.26 0.89 -3.38 0.37 -5.41 0.89 -5.79 1.13 -4.54 1.39 -6.29 1.89 -5.27 0.39 -1.52 1.5 
+3.91 0.39 1.13 1 -4.14 0.63 -0.75 1.65 -1.26 1.76 1.26 0 4.53 -1.89 4.91 -0.89 
+3.91 0.5 -1.02 2.41 S
+2336.5 772.89 -3.28 1.63 -4.9 0.89 -4.9 0.76 -3.64 1.37 3.14 -0.24 4.66 -0.5 4.64 -0.39 
+1 1.13 -5.01 1.26 S
+2328.21 778.8 -1.25 -0.63 -5.04 1.15 -0.39 1.13 3.14 -0.37 3.54 -1.28 S
+2328.21 778.8 3.75 0 -0.36 1.39 -1.89 1.64 -3.39 0.88 -0.13 1.65 1.49 0.63 2.52 0.5 
+-2.39 1.13 -4.14 -0.5 -3.28 1.52 -2.39 -0.13 -2.52 0.76 0.89 1.13 -1.39 1.39 -3.41 0 
+1.52 -1.76 -4.9 0.38 -0.76 1.39 3.28 -1.13 -0.63 1.89 4.14 -0.13 -2.38 1.26 3.38 -0.63 
+3.15 -0.89 0.26 1.02 -3.02 1.25 -3.27 1 -1.89 -0.87 -4.28 0.37 -3.28 0 -2.62 -0.5 
+-1.52 1.63 2.78 0.63 S
+2301.54 795.68 -1.25 1.88 2.75 0.39 3.28 -1.13 2.13 1 2.41 0.89 2.52 0.87 1 1.52 
+1.25 1.39 2.52 0.5 -0.5 1.52 0.37 1.26 2.39 1 2.39 0.89 3.02 -0.26 -3.65 1.52 
+-2.62 1.89 3.02 0.38 3.77 0.13 2.52 0 3.39 -2.15 1.13 1.15 1.13 1.26 0.76 1.5 
+1.25 1.15 -0.37 1.5 -2.91 2.15 -3.64 2.02 -3.02 1 -4.14 2.28 -4.41 1.75 -3.78 1.52 
+-4.01 2.39 1.99 0.63 -1.12 1.76 -2.88 0.76 -1.39 1.65 -2.76 1.89 -3.41 1 -2.25 1.52 
+0.37 -2.02 -1.39 -0.5 -3.02 1.76 -1.5 2.25 0 1.65 3.02 -1.76 0.76 0.74 3.51 -1.13 
+-3.27 2.29 0.13 1.49 S
+2297 842.79 -2.89 1.26 -0.26 2.02 -0.37 2.41 -2.64 1.88 2.88 0.11 -1.75 2.15 1.89 0.89 
+-2.02 2.02 -0.13 1.39 2.28 1.37 0.76 1.52 0.87 1.52 1.75 0.76 3.02 -1.39 -1.76 -0.26 
+-0.76 -1.52 2.28 0.39 S
+2300.15 859.31 3.02 -2.78 -2.64 0.13 -3.02 1.26 1.89 -2.52 -2.65 0.49 -0.11 -1.88 0 -1.89 
+0.86 -2.28 1.52 -1.63 1.63 -1.52 1.76 -2.02 -3.28 0.63 0.52 -1.37 3.25 -1.65 -2.12 -0.5 
+1.25 -2.28 2.89 -2.25 3.02 -0.63 0.63 -1.39 3.64 -1.52 2.28 0.63 4.02 -0.87 4.53 -2.38 
+3.78 -1.91 3.52 -1.37 1.89 -1.52 2.88 -0.63 2.91 -1.65 1.39 -2 3.52 -0.89 2.02 -1.39 S
+2344.95 819.75 4.14 -0.76 1.63 -1.39 -1.5 -1 3.02 -1 4.41 -2.02 0.87 -1.78 2.91 -1.5 
+-1.15 -0.89 3.54 -1.76 2.13 -1.76 1.02 -2.28 1.76 -2.64 3.77 0.63 2.13 1.39 3.02 1 
+4.16 0.39 4.27 -0.39 5.28 -0.37 4.67 -0.37 4.53 -0.13 3.64 -0.25 5.41 0.75 4.02 0.76 
+3.14 1 1.26 1.89 -0.23 2.14 1.26 1.65 3.14 3.15 1.76 1.5 1.13 1.78 0.5 1.76 
+3.02 1.63 -1 2.28 1.89 1.5 2.75 1.52 2.15 1.39 3.14 1.52 2.39 1.5 3.64 0.76 
+2.65 0.49 2.38 1.02 2.02 1.39 0 1.36 -2.39 0.89 -0.89 1.39 1.52 0.26 1.76 -1.25 
+0.87 1.37 S
+2450.48 838.26 1.65 1.02 2.13 -0.63 1.13 -0.89 0.76 -1.63 2.91 0.63 -1.15 1 0.63 1.39 
+-1.13 1 2.15 0.26 2.62 0.13 0.26 -1.02 -0.26 -1.37 3.91 0.11 3.77 0.39 -0.13 2.26 
+-1 1.02 2.13 0.63 2.28 -0.62 1.89 -1.02 S
+2475.02 840.91 -1.26 -1.26 2.13 -1 1.76 -1.02 3.54 1.02 3.52 1.26 2.39 1.39 3.14 0.87 
+4.54 0 2.88 0.89 3.64 0 3.54 -0.5 3.64 0.38 3.65 -0.14 4.27 -0.5 3.52 -0.12 
+3.64 -0.11 3.54 -0.12 4.02 -0.89 3.64 -0.63 3.54 -0.76 4.64 0.39 2.39 0.87 4.28 -0.24 
+4.17 0.76 4.51 0 4.28 0.74 2.02 0.26 3.78 -0.37 1.39 2.13 S
+2569.75 844.18 1.5 1.26 2.52 0.26 0.52 -1.65 1 -1.89 1.89 -1 3.02 -0.63 -1.26 -2.15 
+3.28 1.52 1.89 0.63 1.39 1.25 1.89 1.39 4.64 1 3.15 1.26 4.91 1.02 3.28 0 
+3.77 -0.52 3.25 0.39 2.41 -0.76 1.99 1.02 2.15 -0.26 -0.89 -2.02 2.91 0.89 2.13 2.64 
+3.28 2 3.77 0.75 3.26 1.15 4.3 -0.12 3.14 -1.02 0.24 -1.75 1.89 -1.26 -1.39 -1.13 
+-2.39 0 0.63 -1.02 1.76 -0.76 1.26 -1.26 -1.12 -1.63 3.91 0.14 0.63 -1.52 1.5 -0.89 
+3.15 0.13 2.15 -1 1.49 -1.52 2.02 -1 1.89 -0.63 2.65 0.24 -3.52 -2.26 -1.89 -2.02 
+-2.15 -2.15 -2.88 -0.13 S
+2648.63 829.19 -2.39 -1.89 -3.54 -2.02 -1.76 -2.26 2.15 -0.26 1.49 1.78 4.41 0.5 3.15 0 
+0.76 -1.02 0.24 -1.37 3.54 0.87 3.88 0.76 1.89 -0.26 5.03 2.15 2.91 0.63 4.02 0 
+2.88 -0.24 5.16 1.5 2.78 -0.24 3.14 -0.39 3.02 -0.37 2.89 -0.5 S
+2694.29 826.56 0.26 -1.15 1.26 -0.99 1.99 -1.02 2.39 -0.24 0.26 -1.26 0.89 -1.02 1.5 -0.76 
+-0.76 -1.76 2.15 -0.37 -1 -1.52 1.99 -0.13 -0.24 -1.39 1.76 0 0.26 -0.87 3.52 0.5 
+2.76 -0.37 -0.37 -2.02 -1.25 -2.02 -1.52 -1.89 -2.38 -2.39 -0.74 -1.64 -2.52 -2.39 2.38 0.37 
+-1.13 -1.5 2.39 0.5 3.38 1.39 1.26 -0.89 S
+2712.79 801.73 0.63 -1 0.39 -1.28 -2.91 -2.12 -3.88 -2.78 -2.41 -2.15 -3.39 -2.63 -1.89 -2.41 
+-0.63 -1 -0.63 -1.02 0.13 -0.63 0.24 -0.76 0.63 -0.37 0.76 -0.37 -2.26 -1.26 -2.14 -1.15 
+-0.63 -0.87 -0.75 -0.76 1.02 0 0.87 -0.13 -1.13 -0.89 -1.13 -1 1.13 -0.13 1.26 0 
+-0.37 -0.5 -0.5 -0.37 -1.79 -0.89 -1.88 -1 -2.62 -1.15 -2.65 -1.13 -0.99 -0.62 -1.02 -0.63 
+-1.39 -0.63 -1.25 -0.63 0.75 -0.13 0.89 -0.13 2.89 0.76 3.02 0.76 0.52 -0.37 0.37 -0.52 
+-1.62 -1.13 -1.65 -1.12 -0.99 -1.13 -0.89 -1.02 -1.63 -0.99 -1.64 -1.02 -0.74 -0.87 -0.76 -0.76 
+-2.39 -1.26 -2.52 -1.12 S
+2675.17 759.42 -1.25 -0.89 -1.39 -0.89 -2.13 -1 -2.15 -1.13 -1.75 -0.89 -1.76 -1 -2.14 -1.15 
+-2.13 -1 -2.52 -1.39 -2.65 -1.39 -2.02 -0.63 -1.89 -0.5 -1 -1.25 -2.39 -1.02 -2.39 -0.87 
+-2.28 -0.26 -2.26 -0.12 -1.52 -0.64 -1.37 -0.49 -1.26 -0.76 -1.39 -0.87 -2.78 -0.63 -2.88 -0.75 
+-2.02 -0.26 -2.13 -0.13 -3.04 -1 -2.89 -1.02 -1 -1 -3.28 -0.89 -3.38 -1 -0.63 -0.5 
+-0.52 -0.5 -4.51 -0.52 -1.78 -0.86 -1.87 -0.76 -3.15 -1.13 -3.14 -1.02 -3.15 -0.24 -3.01 -0.25 
+-2.78 -0.5 -2.76 -0.5 0.11 -0.39 0.13 -0.5 -2.26 -0.5 -2.28 -0.52 -2.89 -0.63 S
+2577.67 725.26 -2.88 -0.5 -3.41 -0.5 -3.52 -0.63 -2.52 -0.26 -2.52 -0.37 -1.13 0.26 -1.13 0.37 
+-1.39 0.13 -1.52 0.24 -1.76 0.13 -1.88 0 -0.24 -0.37 -0.39 -0.39 0.63 -0.37 0.76 -0.5 
+-1.76 -0.52 -1.89 -0.37 -0.89 0.37 -0.87 0.52 -3.02 -0.52 -3.02 -0.63 -5.04 -1 -3.41 -0.13 
+-3.38 -0.13 -9.83 0 -3.12 0.13 0.11 -0.37 0.13 -0.5 -2.52 0.5 -2.39 0.5 1.26 0.5 
+1.26 0.39 -2.52 1 1 0.63 1.15 0.5 S
+2516.04 723.37 1.63 0.63 1.52 0.63 2.5 0.39 2.52 0.5 -0.73 0.37 -0.76 0.52 -0.26 1 
+1.89 0.5 S
+2524.33 727.91 2.02 0.39 -0.63 0.37 -0.62 0.39 0.89 0.5 0.87 0.63 1.26 0.63 1.25 0.76 
+-0.5 0.63 -0.62 0.63 -0.89 0.38 -0.87 0.49 -1.26 0.39 -1.26 0.37 -1.26 0.39 -1.26 0.37 
+-1.25 0.5 -1.26 0.39 -1.52 1 -3.26 0.26 -2.15 0.24 -2.25 0.39 1.99 0.37 2.15 0.39 
+2.15 0.73 2.13 0.63 1.25 1.52 -1.13 0.63 -1 0.5 -1.52 0.89 -2.65 1 -2.13 1.26 
+-3.01 1.15 -3.54 0.73 -4.14 1.02 -3.91 0.76 -4.28 0.87 -4.14 0.52 -5.4 -0.26 -4.93 0.89 S
+2511.63 735.85 -2.28 -0.13 -2.39 -0.24 -1.5 -0.52 -1.52 -0.5 4.04 0.26 S
+2507.99 734.72 2.12 -0.13 2.26 -0.13 -0.37 0.63 -0.37 0.76 S
+2442.43 739.39 -0.5 0.5 -0.37 0.63 1.13 0.13 1.13 0.24 0.89 0.63 0.87 0.63 -2.02 1.65 
+-4.38 -0.39 -1.78 -0.99 -0.23 -0.63 -0.26 -0.5 0.26 -0.63 0.37 -0.52 2.39 -0.37 2.52 -0.36 S
+2401.17 741.64 -1.26 0.63 -1.12 0.63 -2.52 0.26 -2.64 0.23 0.26 -0.49 0.11 -0.5 3.67 -0.39 
+3.52 -0.37 S
+2310.96 817.23 1.65 -1.26 3.25 -1.02 2.52 0.13 3.54 -0.87 1.89 0.24 3.02 -1 2.65 0.63 
+1.25 1.13 -0.12 1.65 -2.52 1.76 -2.91 1.76 -3.75 1.89 -4.17 1.89 -4.41 1.78 -4.64 2.13 
+-5.3 2.15 -0.73 -0.89 0.37 -1 3.78 -2.02 S
+2306.32 826.3 4.54 -1.76 4.14 -1.78 1.26 -1.26 -0.5 -0.86 -1.15 -1.02 -1.63 -1.39 -2.02 -0.99 S
+2307.07 819.12 1.63 0.89 0.76 0.87 -1.52 1.25 -2.39 1.39 -2.52 0.13 0.13 -1.89 2.02 -0.89 
+1.89 -1.76 S
+2287.7 852.13 2.89 -0.26 -0.37 1.39 S
+2290.21 853.25 0.87 1.65 -3.02 1.25 2.14 -2.91 S
+2290.21 853.25 -3.14 1.26 0.63 -2.38 S
+2299.13 862.33 2.64 -1 2.28 0.76 -4.4 1.63 -0.52 -1.39 S
+2284.29 863.21 2.15 -0.13 0.37 2.39 S
+2286.8 865.47 1.39 0.63 1.39 1.65 -3.14 -0.52 0.37 -1.76 S
+2286.8 865.47 -1.75 -1.26 -0.76 -1 S
+2316.75 877.82 4.41 0 -4.54 1.52 0.13 -1.52 S
+2058.86 1277.41 -2.13 -1.39 -0.52 -3.52 S
+2056.21 1272.5 -1.89 -0.26 0.13 -5.17 -0.5 -3.52 -0.89 -0.76 1.39 -2.02 1.26 -4.41 0.89 3.39 
+1.62 -1 -0.87 -1.89 -1.15 -3.28 -1.5 -0.5 -2.39 -1.26 -2.41 -1.89 -0.24 -3.04 0.5 -4.01 
+1.13 -4.3 -1.5 -1.63 1.26 -2.52 2.13 -2.91 1.26 -3.02 1.39 -3.65 0.63 -4.54 2.15 -3.41 
+1.37 -4.3 0.76 -3.9 0.75 -3.77 0.76 -3.91 2.25 -5.66 0.89 -3.78 1.63 -4.16 0.87 -2.76 
+1.52 -2.78 1 -3.91 1.78 -5.29 0 -3.39 2.13 -4.16 1.75 -2.78 1.65 -2.89 3.39 -3.9 
+2.38 -1.26 2.52 -3.54 3.41 -3.28 1.63 -1 2.52 -2.91 2.52 -2.39 1.89 -3.28 1.75 -1.52 
+2.78 -3.52 0.5 -3.41 S
+2103.02 1129.51 1 -4.04 1.52 -4.64 0.24 -3.4 0.63 -3.41 1.02 -3.38 0.37 -3.28 0.26 -3.41 
+-0.39 -3.14 0.76 -3.28 0.89 -3.41 0.37 -3.41 1.26 -3.38 0.76 -2.78 -0.5 -2.15 1.76 -4.04 
+-0.13 -4.14 1 -3.4 -0.11 -3.28 0.74 -3.28 0 -3.14 1.52 -2.39 1.89 -4.54 -0.89 -1.52 
+0.75 -3.27 1.89 -3.91 1.63 -3.39 0.89 -2.28 1.52 -2.25 0.37 -4.3 1.76 -3.38 -0.14 -2.02 
+1.13 -3.41 0.39 -3.14 0.13 -3.14 0.87 -3.28 0.89 -3.28 -0.39 -1.12 1.65 -3.28 -1.75 0.13 
+1.25 -3.79 2.52 -2.75 1.37 -2.78 1.76 -2.78 2.15 -3.28 0.13 -3.15 2.26 -3.77 0.89 -2.78 
+2.02 -2.65 S
+2142.91 979.6 1.87 -2.13 1.78 -0.63 -0.63 2.13 2.62 -1.13 0.26 -2.02 1.63 -1.12 -0.37 -1 
+2.64 -4.3 0.87 -2.64 1.88 -2.12 0.5 -2.65 1.79 -1.52 -0.52 -1.63 1.78 -2.02 1.26 -3.15 
+-1.78 2.02 -1.26 1 -0.5 2.15 -1.39 1.5 -0.5 1.65 -2.63 2.13 0 -2.25 0.87 -2.52 
+2.38 -2.65 0.5 -1.65 0.89 -2.13 1.63 -1.52 -1.26 -0.63 2.02 -1.52 -0.63 -2.75 1.52 -2.15 
+0.5 1.76 2.39 -1 1.75 0.13 1.26 -3.67 1.75 -2.64 2.39 -3.02 -4.14 3.41 -1 -0.5 
+1.39 -2.14 1.99 -2.52 2.39 -3.65 1.78 -1.52 1.76 -2.52 2.02 -0.39 0.24 -1.63 3.02 -3.54 
+-1.26 4.8 1.65 -2.52 S
+2180.01 923.18 2.13 -1.89 -1.39 0.37 2.02 -3.14 1.26 -2.52 1.13 1.75 -1.13 2.02 3.02 -2.89 
+1.26 -1.89 -2.39 0.11 2.64 -2.89 2.39 -0.76 -0.37 1.52 2.63 -2.28 2.02 -0.37 1.26 -1.39 
+2.39 -1.39 3.28 -1.13 0.13 1.63 -0.63 2.65 1.63 -0.24 1 -2.15 -1.37 -1.76 2 -1.26 
+3.14 -0.62 0.52 0.63 -2.52 2.76 -2.15 2.91 1.13 1.75 1.26 0.13 -1 1.39 1.63 0.24 
+2.52 -0.24 -4.01 2.65 -2.52 2.26 -2.64 2.39 -1.76 2.91 0.13 2.02 1.5 1.25 -1.76 2.89 
+-1.62 2.9 0.36 2.02 0.89 2.12 0.37 2.02 -1.52 2.91 -1.63 1.89 -2.75 0 -3.15 1.89 
+-2.91 1.89 -2.26 3.02 S
+2184.16 951.26 -0.89 3.03 S
+2183.27 954.29 0.39 1.5 1.5 1.52 2.15 0 -1.26 2.02 1 1 -1.89 2.91 -1.5 2.02 
+-0.26 2.02 1.52 2 -3.28 1.02 0.89 2.02 2.39 -2.02 2 0 -0.5 1.39 -2.39 3.02 
+-2.13 -1.39 -2.9 1.52 -1.89 3.52 -2.39 3.04 0.5 1.5 2.91 -1.5 2.52 -1.15 3.38 -0.11 
+2.02 1.39 -0.75 1.99 -1.5 1.52 -0.52 3.02 -0.24 1.89 -2.38 2.14 -0.89 2.52 1.76 -1.63 
+3.14 -0.12 3.02 0.26 1.89 0.5 2.65 0.24 2.38 0.89 1.76 0.89 1.89 1.26 -0.37 2.38 
+0.76 2.39 0.24 2.91 -1.62 3.02 -2.02 0.64 -2.12 2.52 -0.14 2.91 -2.28 2.13 -4.51 2.28 S
+2186.18 1018.04 -1.52 2.15 0 1.89 3.28 -2.78 3.02 -0.26 2.02 -1.63 3.02 -1.13 2.52 0.24 
+3.28 -0.76 2.13 0.26 1.76 1.39 1.25 1.75 -0.37 1.89 1.63 1.78 1.02 2.75 -0.26 2.91 
+1.39 1.75 1.76 1.76 1.89 1.65 0.63 2.76 0.87 2.78 -0.11 2.78 0.87 2.78 1.25 2.75 
+1.52 1.65 1 0.87 0.13 2.91 -0.26 2.78 -1.13 3.02 -0.87 3.91 -0.63 3.02 1.5 2.15 
+1.65 2.15 2 2.13 1.76 2.14 2.41 0.76 2.52 1.5 1.87 -1.13 1.65 2.65 2.65 -0.37 
+-1.26 2.02 3.39 0 2.78 -0.76 2.52 -0.26 2.52 0.13 2.62 -0.39 -0.37 2.54 2.39 1 
+2.38 1.13 -0.37 2.91 S
+2251.84 1085.94 0.5 2.76 2.26 2.54 0.5 2.75 S
+2255.1 1093.99 2.28 2.65 0.24 2.78 -0.37 2.88 0.13 2.78 1.63 1.65 -0.24 2.88 0.11 3.41 
+0.63 3.28 -0.74 2.88 -0.12 2.91 -0.64 2.88 0.24 2.91 0.13 3.77 2.64 1.52 2.15 2.12 
+2.13 3.04 1.25 2.76 1.76 2.52 1.26 1.26 2.65 1.52 1.39 2.28 2.26 2.13 1.26 2.14 
+1.39 2.65 1.39 2.78 0.37 3.78 -0.5 2.88 -0.89 3.54 -0.87 3.52 -1.39 3.67 -3.14 1.49 
+-2.78 -0.12 -2.63 1.02 -1.78 2.15 -2.76 1.89 -1.76 2.25 -1.76 2.39 -2.65 2.41 -2.64 2.39 
+-2.52 2.52 -2.75 0.5 -2.78 -0.5 -2.64 0.5 -2.63 2.02 -2.64 0.63 S
+2238.76 1197.29 -2.65 2.02 -2.65 1.02 -2.62 -1.02 -3.15 -0.24 1 2.75 -1.25 2.78 -0.63 2.65 
+-2.76 -0.39 -0.76 2.29 -3.41 1.75 -2.52 1.65 -2.89 2.64 -3.14 0.74 -1.76 -0.5 -2.02 -4.14 
+-1.26 1.26 1.02 2.39 1.13 3.77 -2.91 1.76 -2.63 0.13 -2.52 1.26 -2.28 -1 -0.24 -3.54 
+-1.12 -3.91 -1.02 4.41 -3.14 -0.74 0.76 3.52 1.02 2.78 2.39 1.52 1.89 1.63 2.39 2.39 
+0.87 4.54 -2.89 1.25 -0.37 4.3 -1.26 4.54 0.38 3.52 -2.02 3.77 -1.5 2.02 -2.28 2.78 
+-1.76 2.78 -2.25 2.26 -1.89 1.65 -1.52 1.13 -2.39 1.75 -2.39 1.39 -2.38 0.76 -2.52 0.24 
+-2.52 0.89 -2.65 1.52 S
+2169.68 1269.99 -0.87 2.52 -1.39 2.13 -2.02 2.91 -2.02 0.26 0.89 2.39 S
+2164.28 1280.19 -0.37 2.88 -1.89 3.04 -2.02 3.02 -2.25 3.02 -3.78 0.52 1.63 3.25 -0.14 3.41 
+-2.38 2.15 -1.62 1.88 -1.65 0.14 -1 3.28 -1 2.75 4.02 -0.63 -2.52 1.15 -3.14 1.37 
+-2.52 1.15 -3.02 -1.52 -2.38 -0.12 -2.52 1.78 -1.63 1.89 -0.26 2 -1.89 0.89 -1.89 0.39 
+-2.64 1.26 -2.62 0.74 -0.13 2.52 0.37 2.78 -1.37 2.52 -1.89 1.65 -1.89 1 0.63 4.67 
+-2.28 -0.63 -0.11 -3.02 -2.15 -0.76 -2.15 0 -2 -0.13 -1.15 -3.77 0.39 -4.54 -1.02 -3.77 
+-2.76 0.24 0.37 2.9 -0.5 2.78 2.02 2.63 S
+2109.18 1326.91 1.63 1.52 0 6.92 2.39 -0.11 1.89 2.13 -0.24 1.88 -1.13 1.39 -1.89 -0.75 
+-1.78 -1.63 -2 0 -1.89 -0.76 -2.52 -0.5 -2.64 2.25 -1.63 -1.62 -1.52 1.63 -2.02 -0.11 
+-1.75 -1.52 -1.26 -3.02 -1 -3.4 -1.88 0.63 -1.76 -2.14 -2.78 -1.62 -1.37 -4.93 -0.89 4.3 
+-0.63 3.14 -0.76 3.02 -1 3.28 -1.52 1.76 -1.26 2.15 -1.89 1.26 -1.75 -1.52 -2.26 0.13 
+-2.28 0.39 -2.62 0.37 -0.76 2.65 -1.52 1.13 0.26 3.28 -1 2.91 -0.89 3.38 0.13 3.54 
+0 3.52 0.37 3.28 1.64 2.41 1.26 3.28 1.99 3.39 1.39 3.41 1.52 3.78 2 2.02 
+2.02 4.91 S
+2075.58 1388.26 -0.12 1.65 -1 2.26 -0.26 4.03 -1.13 1.76 -0.87 1.65 -1.89 0.87 -1.39 2.28 S
+2068.92 1402.75 -2.14 0.37 -1.89 1.02 -1.37 3.02 -2.65 0.13 -0.5 3.02 -0.76 2.52 2.65 0.52 
+2.89 3.65 1.63 3.14 2.91 5.16 -0.52 -3.52 2.41 2.39 2.26 3.51 1.89 2.91 2.02 2.88 
+2.13 2.52 2.78 1.29 1.5 2.63 -0.11 1.88 -1.52 1.65 -0.89 1.76 -1.76 1.25 -2.02 0.63 
+-1.63 1.15 -1.76 1.25 -1.52 0 -2.39 -3.28 -1.76 -2.41 -1.62 -1.5 -1.52 -2.78 -1.5 0.13 
+-1.89 -0.5 -0.63 -1.89 -2.28 1 0.63 0.99 -1.26 2.65 -2.52 0.39 -1.89 1.5 -2.12 1.02 
+-0.89 1.26 0.39 3.41 S
+2051.7 1449.5 -0.63 2.89 -0.63 2.9 0.74 3.91 1.15 3.64 1.37 4.15 0.52 3.4 0.87 3.04 
+1.39 3.26 1.76 1.52 0.26 4.04 1.89 3.77 2.13 1.89 2.15 3.02 2.13 3.04 2.28 3.02 
+2.63 2.39 2.52 2.41 2.39 1.5 1.89 2.78 2.28 2.88 2.02 3.54 2.5 2.52 2.28 0.63 
+4.91 0 1.39 -1.39 1.75 0.26 1.89 0.13 1.49 3.28 1.39 -0.39 -2.02 -2.26 2.15 -0.39 
+1.25 -1.13 1.5 -1.63 0.26 -2.65 0.63 -2.28 2.02 -0.13 -0.39 -3.52 -1.37 -2.15 0.74 -2.26 
+1.65 -1.39 1.5 -0.39 0.39 -1.5 -0.5 -2.28 1.13 0.39 0.37 3.52 0.76 1.02 1.26 0 
+1.26 1.13 S
+2112.96 1499.63 -0.89 1.52 -1.39 0.87 -0.37 1.65 2.52 1.5 0 -3.15 2.14 -0.24 1 -1.39 
+0.76 -2.14 1.75 0.49 S
+2118.49 1498.74 -1.13 -2.38 1.13 -1.63 1.63 -1.15 1.65 -1.13 -0.39 -2.52 0.63 -2.52 -1.39 -2.91 
+1.65 -1.12 2.13 0.13 1.65 -1.12 -0.26 -3.14 -1.26 -4.54 0.39 -1.26 -1.52 -3.41 -1.89 -2.14 
+-1.39 -1.89 1.39 -0.5 -2.52 -2.39 -1 -2.28 -0.26 -2.88 -0.87 -3.28 -1.15 -3.67 0.13 -3.28 
+-1 -3.02 1.5 -0.63 1.39 0.25 2.52 2.13 2.52 3.28 2.02 3.41 1.49 4.04 1.39 4.14 
+1.26 1.89 1 3.91 1.52 3.41 1.26 3.54 1.75 3.14 1.89 3.02 2.65 2.02 2.75 2.02 S
+2141.75 1484.27 3.14 0.87 2.39 -0.11 2.64 0.37 2.28 0.89 2.13 1.13 2.39 -0.12 1.52 -0.76 
+2.52 0.63 2.52 0.75 1.99 -1.25 1.65 0.63 -1.39 1.39 2.78 0.37 0.87 -0.87 1.52 0.87 
+1.36 1.89 -1.12 1.15 -1.39 1.37 1.88 -0.37 1.26 -0.37 0.13 -1.39 -0.5 -2.28 0.63 2.52 
+1.63 2.41 0.89 2.26 0.26 2.91 1.5 1.76 2.02 1.89 -0.13 3.41 1 -1.89 1.15 2.02 
+1.99 2.75 1.89 1.26 1.76 -0.24 -1.87 -1.26 -1.52 -1.78 -2.15 -1.63 0.39 -2.02 -1.39 -1 
+0.89 -0.89 -1.78 -1.39 -2.63 -2.14 1 -0.24 2.64 2.14 2.65 1.37 1.76 0.63 1.37 4.03 
+1.78 3.02 0.11 -1.75 S
+2188.17 1507.18 -0.74 -2.25 2.63 0.36 3.04 1.76 2.62 2.02 -0.13 1.78 2.28 0.86 2.39 0 
+2.02 -0.49 1.39 -1.13 1.24 -1.26 2.15 -0.39 S
+2207.05 1508.45 1.88 1.25 -0.49 -1.89 1.88 -0.13 -0.76 -0.87 2.52 -0.76 1.39 1.76 -1.15 -1.26 
+-1.24 1.13 1.37 2.54 -0.24 1.63 1.76 0.63 0.87 1.52 2.15 1 2.25 0.89 0.76 0.87 
+2.02 -0.37 2.26 -0.5 2.65 1.26 -0.13 -1.39 2.28 -0.36 2 -0.39 2.38 0.13 1.52 1.63 
+2.02 -1.62 2.39 -0.63 3.52 0.13 -1.63 -1.52 2.12 -1 -3.14 -0.26 -1.89 0.13 -3.02 -0.5 
+-2.39 -1.52 -1.13 -2.52 0.38 -2.28 2.64 0.52 2.91 0.63 2.25 1 S
+2240.02 1507.31 1.39 -1 2.89 -0.13 3.91 -0.89 3.02 -0.76 1.76 1.26 2.39 -0.24 2.89 0.5 
+-0.63 3.02 2.28 2.41 -0.13 1.26 -2.52 -1.39 -3.02 -1.13 -1.76 -2.15 -1.02 1.52 -2.39 0.37 
+-1.5 1.75 -0.75 3.15 -0.89 2.14 1.26 3.15 2.28 3.02 2.13 1.65 -2.88 1 0.5 3.78 
+2.52 -2.13 2.02 -0.13 2.63 0 1.39 1.63 0.25 1.91 -1.02 2.12 -2.13 1.14 -2.25 1.15 
+-2.78 0.24 -2.15 0.52 -2.63 0.24 -3.02 -0.37 -2.78 -1.02 -5.03 -1.25 -2.39 0.75 2.52 0.63 
+2.25 0.76 2.52 0.63 2.39 0.89 2.91 1 2.89 0.37 3.4 0.52 1.63 -1.52 2.26 1.76 
+2.52 0.63 S
+2257.12 1540.06 2.52 -0.76 1.39 -1.13 1.63 -1.39 2.15 -1.13 1.13 -1.52 1.52 -1.26 1.63 -1.26 
+0.63 -1.76 2.25 -1 2.39 -1.78 2.64 0.76 2.52 0.76 2.39 1 S
+2281.9 1529.6 3.28 -0.37 3.02 -1.26 3.02 0.37 2.39 0.39 1.78 3.91 1.99 1.63 0.39 3.54 
+-1.89 1.26 1.49 2.15 -2.12 2.13 3.38 0.13 -0.13 2.02 -1.86 2.02 0.63 2.13 -2.15 2.14 
+1.52 2.28 -0.76 2.65 0.63 2.13 2.26 2.28 2.39 0.76 0.13 2 1.52 1.52 0.5 2.28 
+1.39 3.02 1.5 2.88 1.39 3.15 1.5 3.04 1.02 1.89 -2.52 -0.5 -2.02 -0.39 -1 -1.89 
+-2.91 -0.99 -2.62 0.24 -2.28 -0.74 -3.02 0.74 S
+2293.73 1578.11 1.76 3.67 -0.63 1.39 1.26 2.63 1.75 1.26 2.78 1.91 1.76 2.13 2.52 1.39 
+-0.76 1.64 -1.13 1.26 0.26 2.39 2.13 0.76 0.39 2.26 0.87 2.52 0.5 2.28 -2.5 1.5 
+-0.89 1.15 -0.13 2.26 -0.63 2.14 -2.25 0.37 -2.39 -1.39 -0.89 -2 -2.65 -0.89 -2.75 -0.89 
+-0.89 -1.89 -2.63 -2.12 -2.4 -1.52 -3.02 -0.5 -1.39 1 -2 -1 -1.02 -2.41 -0.24 -1.89 
+-2.78 -2.89 -2.13 -1.89 -2.78 -2.78 -3.64 -2.64 -3.15 -0.63 -3.38 0 -2.91 0.37 -2.52 0.76 
+-1.75 -2.39 -2.02 -2.26 -3.02 -2.65 -2.62 -2.02 -2.02 -3.04 -3.64 -0.74 -3.15 0.63 -1.65 -1.64 
+0.63 3.02 1.78 2.54 S
+2237.76 1579.25 1 2.64 1.75 2.76 1.39 3.28 3.02 1.52 2.26 1.63 2.02 2.28 4.66 2.26 
+0.38 2.91 -1.26 2.39 -1.13 2.39 1.39 3.91 0.11 2.52 0.39 2.28 1.99 2.78 1.15 3.26 S
+2256.88 1618.04 0.24 3.04 1.39 3.52 -1.62 1.25 -1.39 0.89 2.13 1 2.41 2.15 2.62 1.26 
+3.54 2.65 0.24 1.89 -0.87 1.25 2.52 2.02 3.25 1.25 3.78 1.39 2.78 0.5 2.88 0.5 
+3.41 0.13 2.89 0 1.39 -0.99 3.25 1.25 1.39 -1.52 1.65 -1.63 3.12 1.5 4.17 0.13 
+0.76 -2.89 3.64 -0.12 3.52 -0.13 3.28 1.26 4.91 0 1.63 2.15 1.25 -2.02 -1.39 -1.39 
+-0.11 -2.78 3.25 -0.73 S
+2322.79 1634.81 3.64 -0.89 3.78 1.13 0.63 2.78 3.14 1.39 2.39 -1.15 3.91 1.64 -0.13 2.52 
+2.14 1.13 0.24 2.41 -0.63 1.89 -3.26 -1.15 -3.64 -1.49 -3.78 -1.39 -2.78 1 -2.64 -1 
+-1.5 0.89 3.38 2.88 3.28 0.89 2.78 0.87 3.02 2.64 -4.8 0.26 3.04 2.25 2.63 1.89 
+1.39 2.15 3.15 -0.89 3.14 1.78 2.15 1.75 2.63 1.89 3.41 1.76 2.25 -0.5 2.15 1.13 
+1.26 -1 0.24 -1.65 2.91 -0.11 2.88 -0.26 1.76 -0.26 1.13 1.65 0.76 2.78 -1.26 2.25 
+-2.88 0.13 -2.78 -1.02 -3.39 -1 -2.91 -0.49 -3.39 -0.76 -1.76 0.89 -3.54 -0.13 -3.77 0 
+-4.02 -2.52 -2.52 -3.41 S
+2336.63 1660.37 -3.02 0.38 -3.28 -1.63 -3.52 0.75 -0.13 0.5 -3.28 -0.26 2.15 2.41 3.77 1 
+2.52 -1.63 3.89 2.25 3.4 3.28 -3.4 0.36 -2.13 1.26 -3.02 -3.39 -2.15 0.76 -3.91 -0.76 
+-0.62 2.13 1.39 3.41 S
+2325.3 1671.2 2.28 2.65 2.63 3.14 4.17 2.39 -0.63 2.02 -0.52 2.28 -1.86 1 -2.28 -2.26 
+-2.75 0.37 1.76 2.02 2.26 2.02 -0.24 2.39 -0.13 2.52 1.88 2.14 1 2.15 2.15 -0.52 
+0 -1.75 3.26 1.13 2.91 2.28 1.5 2.65 2.64 2.15 3.15 2.25 3.51 1.52 1.89 2.65 
+-2.38 1.13 1.26 1.39 3.78 -0.39 -2.52 1.89 2.14 1.26 3.75 0.26 4.8 1.39 -2.91 1.39 S
+2361.79 1716.69 0.26 1.63 3.14 0.13 0.38 2.26 0.39 2.54 -0.5 1.63 2.5 0.89 1.26 1.63 
+-0.63 1.65 -2.26 0.87 3.77 1.39 3.64 0.89 3.65 1 3.02 1.88 2.64 0.63 3.28 0.63 
+2.25 1.52 1.89 1.39 3.28 0.76 2.75 1.5 4.28 0.89 2.9 1.39 2.52 1.13 3.78 -0.26 
+4.02 1.65 2.14 -0.39 4.02 0.52 1.26 2.52 3.28 1.26 2.13 2.52 2.65 1 1.65 2.28 
+-0.39 1.89 0.39 1.63 3.26 1.52 3.01 1 -0.5 1.91 -3.52 0.74 -4.41 0.26 -2.65 1.52 
+-3.89 0.37 -3.4 0.76 0.26 1.52 4.9 1.25 1.37 -1.39 2.64 0.63 2.78 1.63 2.89 1.65 
+2.38 2.13 -2.26 0.26 S
+2434 1775.26 -3.14 -0.26 0.37 1.39 -1.89 0.89 -5.27 -0.5 -4.04 -1.25 -3.75 -0.39 -1.78 -1.5 
+-2.52 -1.39 -0.5 1.63 -2.88 0.89 -0.76 1.75 4.14 1.63 1.52 2.02 3.91 0.13 2.13 1.52 
+-0.24 1.13 1.26 2.38 0.24 2.65 -3.91 0.76 S
+2416.88 1788.74 -2.63 1.26 -3.77 1.02 -3.15 0.87 -3.4 -1 -2.13 -2.14 -3.77 1.13 -0.13 1.25 
+-2.64 0.89 -1.89 -1.26 -5.77 -1.89 -4.54 0.37 0.13 -1.26 -2.89 -0.76 -2.02 -1.12 -2.02 1.75 
+-1.52 1.79 1.52 2.02 1.39 2.13 2.76 2.41 0.89 2.26 4.01 1.52 3.41 2.02 1.52 2.13 
+4.02 2.02 3.78 2.64 -1.52 0.5 -4.4 -2.52 -3.12 -2.15 -3.41 -1.63 S
+2385.57 1802.97 -2.02 -1.63 -3.64 -1.78 -3.39 -2.13 -3.02 -1.89 0 -1.65 -2.28 -1.89 -2.88 -2.52 
+-0.39 -1.89 -2 -2.65 -2.28 -2.39 -0.5 -1.65 0 -1.88 3.41 0.89 0.63 -1.26 -1.76 -1.89 
+-0.26 -2.02 1.39 -1.65 -0.52 -1.75 -1.87 -2.39 -2.41 -1.25 0.13 1.5 2.28 2.02 -2.41 1.52 
+-0.5 2.02 -2.52 -0.5 0.26 1.63 -3.14 -2.02 -1.13 -2.02 -0.63 -2.02 -2.78 -1.49 0.76 -2.02 
+3.41 -0.89 -3.54 -1.13 -2.52 -1.52 -3.39 -0.87 -4.79 -1.26 -4.28 -1.65 -3.02 -2.02 -2.88 -2.13 
+-4.04 -1.65 -2.76 -1.63 -0.26 -1.65 -3.25 0.26 -3.78 -1.52 -4.54 -1.39 -3.78 -1.26 -3.38 -1.63 
+-3.91 -0.39 -4.41 -1.5 S
+2297 1742.51 -3.9 -0.52 -4.78 -0.87 4.15 -0.26 4.27 0.39 3.14 -0.39 3.65 1.52 -1.26 -1.26 
+2.28 -0.75 -3.53 -0.5 -1.76 0.37 -3.77 -0.37 -2.63 0.24 0.37 -1.37 1.39 -0.89 -2.91 -0.63 
+-3.02 -1.02 3.02 2.14 -0.87 1.39 -3.52 -0.26 -0.76 -1.26 -2.52 0 S
+2284.05 1738.21 -2.91 -0.5 -2.39 -1 -3.02 -1.65 -3.78 -1.13 3.78 0 4.91 1.39 3.77 1 
+-2.26 -1.26 -1.26 -1.39 -1.88 0.26 -3.52 -0.89 -3.15 -1.26 -3.02 -1.76 -0.39 -1.89 -2.52 0.89 
+-2.13 -0.76 -0.39 1.63 -4.28 -1.5 -2.88 -1.78 -5.29 -2.13 -3.26 -2.52 -3.91 -1.28 -3.15 -1.63 
+-2.25 -0.26 -3.78 -2.89 -2.64 -2.64 -3.15 -2.78 S
+2229.32 1710.5 -3.38 -2.39 -3.41 -2.52 -2.75 -2.39 0.73 -1.65 -3.38 -0.76 -2.39 -1.89 -3.41 -1.89 
+-0.87 0.26 -3.41 -1.89 -2.89 -0.13 1.26 0.63 -0.52 1.26 2.15 -0.76 2.78 2.52 1.13 2.4 
+3.25 3.39 -1.62 -0.13 -2.02 -1 -3.25 -1.62 -3.91 -1.79 -2.38 -0.87 -2.39 -1.02 -2.41 -3.14 
+1.26 2.9 -2.26 -0.75 -3.02 -1.13 -2.52 -0.26 -3.41 -1.12 -3.26 -0.76 -3.64 -0.63 -3.54 -0.39 
+-3.51 -1.49 -2.78 -1.89 -3.65 -2.02 -3.26 -1.02 -2.9 -0.24 -1.76 -0.76 -2.26 -2.02 -2.64 -2.15 
+-2.26 -0.99 -2.91 -1.52 -2.89 -2.64 -2.38 -2.52 -2.02 -0.76 -1.39 -2.52 1.78 0.89 -1.15 -1.76 
+-0.87 0.11 -3.15 -2.52 S
+2135.85 1667.17 2.25 2.78 -2.88 -1.76 -2.52 -2.28 -0.5 -1.63 -2.78 -1.39 -1.63 -0.5 -2.78 -3.54 
+-3.26 -3.15 -3.91 -4.14 -3.28 -2.02 -1.75 -4.16 -1.76 -3.41 -1.52 -3.02 -0.24 -1.52 -2.15 -1.75 
+-0.24 -1.63 -2.52 -3.67 -2.78 -3.02 -3.28 -3.02 -3.39 -3.78 -2.65 -2.78 -2.13 -2.78 -1.52 -1.12 S
+2088.67 1613.89 -1.75 -2.78 -2.52 -2.02 -0.63 -1.5 -3.52 -3.28 -1.15 -3.27 -2.52 -4.4 -1.99 -3.41 
+-1.89 -3.28 -2.52 -2.14 -1.52 0.63 0.5 3.14 -1.89 -4.01 -1.87 -2.65 -1.02 -2.52 -1.39 -3.28 
+0.13 -2.02 -1.76 -3.41 -1.26 -3.78 -2.64 -3.91 -2.75 -2.89 -2.02 -0.76 -0.99 -4.66 -1.52 -3.91 
+-1.89 -4.41 -1.39 -4.3 S
+2046.89 1545.09 -3.14 -5.53 3.04 0.37 1.89 4.03 2.38 4.93 -0.39 1.89 2.15 3.64 0.87 0.13 
+1.65 3.52 1.75 1.89 2.65 4.43 2.63 3.52 2.64 5.16 2.65 4.17 1.75 3.78 2.89 3.41 
+2.4 3.78 2.39 4.14 2.52 3.66 1.5 3.15 2.02 2.88 2.52 1.65 2.52 2.76 2.65 2.41 
+2 1.25 -1.63 -3.9 0.37 -1.13 -1.49 -2.78 -1.02 -2.64 -2.52 -2.02 -2.88 -3.64 -2.02 -2.02 
+-2.38 -3.65 -2.89 -3.8 -2.64 -4.91 -2.65 -5.03 -0.24 -3.04 -2.78 -2.76 -2 -4.93 -1.65 -3.02 
+0.13 -1.13 -1.62 -3.02 -1.89 -1.15 -1.39 -1.39 -0.99 -3.38 -0.76 -4.41 -2.64 -4.8 -1.39 -3.91 
+-1.13 -3.77 -2.14 -4.93 S
+2050.54 1528.97 -1.12 -3.39 -1.5 -4.4 -1.26 -3.54 -2.91 -4.91 -0.74 -2.91 -1.52 -2.15 -2.13 -0.74 
+-0.89 -2.28 -1.62 -0.13 -1.79 -4.77 -1.62 -4.93 -0.13 -4.14 -0.5 -4.29 -1.26 -4.14 0.26 -4.54 
+0.87 -2.91 0.5 -1 -0.5 -3.91 -0.5 -5.16 0.5 -3.14 0.5 -3.02 0.13 -3.66 0.89 -2.52 
+0.24 -3.65 0.26 -3.53 S
+2034.7 1445.21 1.13 -2.76 0.89 -3.41 1 -3.14 2.39 -0.52 2.28 -0.11 1.26 -1.78 0.87 -2.12 
+0.63 -2.52 0.26 -3.17 -0.13 -2.63 -0.12 -4.29 0.13 -3.64 0 -3.41 0.63 -3.41 1.13 -2.75 
+1.52 -1.65 0.76 -3.41 0.11 -2.52 1.39 -1.26 0.89 -3.38 1.25 -1.26 2 -1.91 1.26 1.15 S
+2056.21 1391.3 -0.11 -3.78 -1.15 1 0 -3.91 0.26 -3.27 0.37 -4.14 0.52 -3.41 0.63 -3.54 
+-1.02 -2.89 -1.26 -2.65 -0.5 -3.27 1 -1.62 0.26 -1.52 2.02 1.26 0.13 -3.02 1.37 -4.04 
+0.5 -3.14 -1.37 -3.15 1.75 -2.02 0.38 -2.41 1.25 0.39 1.76 -1.89 1.52 -2.52 0.38 -2.91 
+1.89 -1.39 -0.74 -4.14 1.75 -0.5 2.52 0.37 -1.02 3.28 0.26 2.52 2.02 0 1.76 0.89 
+1.89 2.13 1.26 -0.87 1.13 -2.78 0.24 -3.54 1.26 -0.74 -1.63 -1.65 0 -4.54 1 -3.91 
+0.63 -3.65 -1 -2.52 -0.76 -4.8 -0.87 -3.41 -0.39 -3.52 -1.37 -3.02 0.87 -3.04 -1.88 -2.13 
+-1.89 -3.41 -2.39 1.39 S
+2069.42 1291.91 -2.15 -2.65 -0.11 -3.14 -1.89 0.5 0.24 -3.4 -2.39 -0.5 -3.14 -0.76 -1.13 -4.54 S
+2332.23 1714.41 -1.62 -2.89 -1.26 -3.04 -2.91 -1.88 -0.5 2.02 -0.13 1.52 -3.12 1.13 -1.89 -3.02 
+1.89 -0.39 1.13 -1.89 -2.39 -0.24 -2.78 1 1.63 -3.41 3.78 1.39 -2.75 -3.15 2.39 -0.63 
+1.89 -0.76 0.87 2.65 2.15 2.78 0.89 -1.52 0.74 -1.5 2.14 2 -0.63 2.54 0.5 2.52 
+0.26 2.26 -0.26 2.52 S
+2289.46 1696.53 -3.39 -2.65 -0.76 -1.76 0.38 -1.89 -0.87 -1.26 1.99 -0.13 0.52 -1.75 0.5 -1.65 
+3.14 -0.37 1.13 -1.64 -0.13 -2.39 1.89 1 -0.63 -2.65 1.63 2.54 0.52 1.63 -0.52 1.75 S
+2294.86 1685.3 -1.5 0.52 -1.89 0.74 -0.13 1.52 1.89 1.89 1.89 1.02 1.13 2.63 -2.02 -0.74 
+-2.75 -1.65 0.13 1.65 -2.14 -0.13 -1.26 1 1.26 2.78 S
+2267.32 1679.38 -1.13 -2.52 2.13 -0.37 0.63 -1.65 -0.5 -2.52 0.76 -1.89 1.39 1.78 0.24 1.5 
+2.02 1.88 0.37 1.26 -2.63 0.63 -1.39 0.89 -1.89 1 S
+2248.57 1652.93 1.63 -1.76 2.78 1.02 2.75 0.99 1.65 -0.89 3.39 2.41 -2.76 0.13 -2.28 0.11 
+-2.75 -1.89 -2.15 -0.13 -2.26 0 S
+2229.45 1634.18 -2.02 -1.91 -3.15 -2.26 -1.39 -2.28 -2 -1 0.37 -2.14 -3.14 -2.02 1.26 -0.87 
+-2.64 -1.13 -2.63 -1.15 -2.65 -1.5 1.5 -1.15 4.29 1.64 S
+2217.25 1618.42 2.26 2.52 3.52 3.27 3.02 2.26 3.04 2.54 3.02 2.26 0.24 1.89 -0.12 1.65 
+-2.76 -0.63 S
+2227.3 1638.96 -3.14 -2.39 1.78 -0.5 -1.52 -2.02 -1.63 0 -3.28 -1.52 -1.39 -2.52 S
+2218.12 1630.01 -2.39 -3.28 -2.15 -1.13 -1.87 -2.02 -2.14 -0.89 0.89 -2.02 2.5 2.14 1.39 1.76 
+2.02 1.89 2.78 0.89 0.24 1.75 -1.26 0.89 S
+2218.12 1630.01 3.64 2.39 1.76 0 2.15 1.02 1.89 2.88 -0.26 2.65 S
+2193.73 1589.46 0.63 -1.52 2.26 -1 -1.89 -2.91 2.26 -1.26 2.39 -1.12 3.41 -0.39 0.76 -1.37 
+-2.91 0.5 -1.89 -1.39 1.39 -1.63 -1.63 -3.04 1 -1.89 2.65 -1.26 1.76 -1.89 -1.39 -1.12 S
+2202.52 1568.17 0.76 -1.39 1.89 2.52 2.38 1.52 0.89 2.02 1.75 1.5 -1.13 2.02 1.26 2.52 
+2.26 3.04 -1.13 2.26 0.5 3.15 -2.26 -0.37 -2.28 0.76 -2.39 -0.39 -2 0.13 -1.65 1.39 
+-2.52 0 -2.65 0.38 -2.5 0.26 S
+2187.43 1568.29 3.02 -0.62 -2.64 -1.15 -1.89 -1.26 -3.52 -2.12 -2.39 -1.39 -2.14 -2.14 -3.02 -2.65 
+-2.15 -3.41 0.76 -1.26 1.52 -0.5 2.26 0.89 3.28 2.13 2.52 2.65 1.89 2.41 2.25 1.76 
+2.65 1.26 2.52 1.39 2.52 -1.02 3.25 1.26 0.76 -1.37 -0.13 -2.02 0 -2.15 -1.25 -2.14 
+-3.02 -2.65 -3.52 -0.87 -1.75 -1.65 2.52 0.39 1.75 -0.63 -2.14 -3.04 -2 -3.02 S
+2189.32 1545.36 2.63 -0.76 2.91 2.78 3.02 1.63 2.39 1.52 1.39 2.02 -1.02 -3.54 0.52 -3.38 
+2.26 0.63 2.02 4.02 1.49 3.67 -0.87 3.28 -0.76 2.13 -1.12 1.78 -0.76 2.26 -0.89 1.39 
+-1.37 -2.02 -1.52 2.39 -0.26 1.52 -1.12 1.02 -2.52 2.12 -0.37 0.76 -2.25 -0.5 -2.91 -0.89 
+-2.75 -0.87 S
+2202.15 1559.85 0.37 -2.52 0.13 -2.14 2.39 1.52 -1.5 1.13 -1.39 2.02 S
+2180.51 1542.08 0.13 -3.14 1.25 -1.63 1.5 -1.26 2.52 -0.52 2.02 -0.76 2.65 -0.62 2.52 -0.37 
+2.49 0.5 -1.49 1.78 -1.39 1.89 -1.89 -0.39 -0.5 1.65 -1.62 1.13 -2.28 -0.62 -2.63 0.75 
+-1.15 1.63 -2.13 0 S
+2195.59 1538.8 0.63 -1.76 2.28 -1 1.26 -1.52 0.87 -2.02 1.78 -1.13 2.26 -0.89 2.25 2.65 
+1.89 1.13 -2.02 0.76 -2 -0.37 -1.12 2.13 -1.39 1.02 -1.89 1.26 -2.02 0.87 -2.78 -1.13 S
+2014.2 1307.01 -1 -3.52 0.87 -2.91 -1.5 -0.87 1 -2.15 1.76 1.52 -0.37 3.91 -0.75 4.02 S
+2143.54 976.97 1.36 -3.27 1.39 -2.15 2.02 -4.28 2.52 -0.52 -0.76 2.64 -2.02 2.15 -0.12 2.15 
+-1.63 2.12 -2.75 1.15 S
+2209.31 912.59 -0.87 -0.63 -1.52 0.39 0.5 -1.52 -1.5 -0.13 2.02 -2.89 1.63 -0.89 1.39 1.26 
+1.13 -0.89 -1 -1.75 2.89 -2.78 -1.39 0.39 -3.15 2.65 1.13 -2.9 -1.89 0.75 -3.14 0.63 S
+2205.54 904.28 -2.5 1.26 -4.3 1.52 -3.25 1.13 -3.28 1.25 1.89 -1.39 2.75 -1.26 1.88 -0.24 
+0.39 -1.65 2.76 -1.13 1.39 -1.39 1.89 0.26 2.38 -1.89 1.39 0.24 1.39 -1.39 4.14 -1.5 
+2.89 -0.62 0.52 1.13 2.26 -1.75 2.39 -0.63 1.52 0.63 3.26 -1.02 -2.63 2.15 2.39 0.37 
+1.26 1.65 2.52 0.37 0.99 0.5 -0.99 1.39 -2.15 -0.24 -2.25 0.74 -2.65 1.29 -3.28 1.13 
+-3.38 1.63 -2.28 1.76 -1.89 1.91 -3.64 2.13 S
+2230.95 918.88 4.04 -2.12 0.76 1.39 1.49 -0.39 1.65 -1.25 1.89 0.5 0.11 1.39 2.02 1.15 
+-1.26 1.75 -2.75 0.76 -1.76 -1.02 -3.04 0.89 -2.52 -0.76 2.52 -1.62 S
+2234.09 919.54 -0.11 -1.52 -3.04 0.87 S
+2323.54 910.83 3.65 -1.13 3.27 -1.15 3.28 -2 -0.26 1.63 -2.26 1.25 -3.54 1.13 -4.14 0.26 S
+2152.45 1304.12 2.65 -1.12 1.5 1 0.75 3.14 -3.14 0.76 0.63 -0.89 -0.63 -2.52 -1.76 -0.37 S
+2124.16 1334.36 0.87 -2.52 -0.11 1 -0.75 1.52 S
+2101.89 1394.45 1.13 -0.89 0.24 -3.02 1.26 -1.76 1.78 0.24 1 -1.49 1.13 -0.89 0.39 2.52 
+-1.15 2.15 -1.5 2.02 -1.65 1.76 -2 0.13 -0.62 -0.76 S
+2097.09 1430.73 -0.24 -1.39 -0.76 -0.5 0.63 -0.89 1.39 -0.37 0.5 2.13 -0.26 1.75 -1.26 -0.74 S
+2091.82 1436.63 2.02 -2.13 1.75 1.63 1.76 -1.89 1.89 0.5 1.89 0.52 S
+2101.13 1435.27 1.26 -2.02 1.89 -2.52 -2.15 0.5 0.13 -2.52 1.39 -2.02 2.39 -2.28 0.36 -2.52 
+1.15 -1.63 1.13 -2.52 1.89 -0.89 0.11 -1.52 -1.13 -2.75 0.75 -3.54 2.65 -2.02 -0.39 -2.65 
+-2 -0.5 -1.65 -0.87 2.39 -1.89 2.15 -0.76 1.75 -1.39 1.52 -1.88 1.89 -1.39 1.63 0.13 
+2.14 -0.76 0.11 1.26 -0.86 0.63 -0.26 2.89 -1.63 1.9 -1.39 0.38 1.52 2.25 -1.26 1.65 
+-1.52 2.02 -0.76 3.41 -1 2.13 -0.63 2.65 -0.89 3.02 -1.13 2.41 -1.63 1.39 0 3.02 
+-0.89 2.26 -0.74 2.28 -1.65 1.39 -1 2.52 -1.52 1.5 -2.26 0.52 -1.75 1 -1.89 1.02 
+-2.39 0 -1.89 -0.52 S
+2095.09 1438.02 -1.15 -2.02 -2.13 0.63 S
+2116.34 1385.11 1.65 -3.77 1.13 0.63 1.89 -1.39 1.39 -1.5 1.76 -0.52 1.75 -1.89 0.37 -4.14 
+2.39 1.76 0.63 1.65 2.41 -0.26 -0.63 -1.52 2.13 -0.76 2.78 -0.37 1.99 -1.13 0.52 -2.91 
+2.38 1.78 -0.75 3.65 -2.89 2.88 2.26 0.52 -2.26 1.5 0.11 2.41 -2 2 -1.76 1.65 
+-2.52 1.76 -1.65 -0.24 -1.63 3.02 -2.15 1.52 -1.89 -0.63 1.78 -1.29 0.11 -2.75 -0.86 -2.02 
+0.5 -3.64 -2.26 -0.52 -1.89 1.25 -1.26 2.15 -1.65 1.76 -1.89 -0.64 S
+2144.4 1364.97 1.52 -1.39 1.88 -0.52 1.76 -0.87 1.5 1 -0.73 2.28 -2.41 1.26 -2.39 1.39 
+-1.13 -3.15 S
+2163.29 1342.67 -0.39 -2.15 1.26 1.15 S
+2164.15 1341.67 1.13 -0.52 -0.24 1.89 -0.89 -1.37 S
+2164.15 1341.67 -0.86 1 S
+2163.39 1332.59 0.89 -2.78 0 1.13 -0.89 1.65 S
+2124.02 1437.02 -0.89 -2.28 -1.63 -0.74 0.26 -3.9 -0.89 -3.67 1.75 1.52 0.26 2.65 1.13 2.02 
+0.89 3.64 -0.89 0.76 S
+2126.54 1398.85 1.89 -1.26 1.76 2.02 -1.39 -1.02 -0.87 1.39 -1.39 -1.12 S
+2127.04 1448.25 0.26 -2.02 1.99 -0.39 1.02 -0.87 -0.26 -1.52 -0.24 1.26 -3.04 1 0.26 2.54 S
+2132.21 1445.07 0 -3.64 -2.28 -2.39 1.89 2.75 0.39 3.28 S
+2130.19 1434.75 0.76 -3.91 -1.52 -2.76 S
+2130.95 1426.82 -0.39 -3.9 S
+2128.93 1419.88 -0.76 -6.04 S
+2129.82 1412.2 1 -2.88 -2.39 -1.26 S
+2132.83 1406.54 1.26 -1.52 S
+2133.07 1400.37 2.15 0.37 1.63 -2.89 S
+2110.68 1443.82 2.02 -0.87 S
+2168.18 1486.92 1.89 -0.26 1.76 1.39 S
+2196.86 1510.46 2.14 -1.26 2.02 -1.25 2.88 -0.37 -0.13 1.63 -2.13 0.39 -1.65 0.87 -1.89 1.02 
+-1.25 -1.02 S
+2261.66 1534.14 0.5 -2.63 -0.37 -1.65 0.76 -2.02 1.37 -1.63 1.52 -1.12 0.63 2.25 -0.63 1.76 
+-0.76 1.89 -1.39 1.78 -1.63 1.38 S
+2248.57 1518.4 -0.13 -2.02 0.63 -2.38 1.26 -3.04 1.39 1.65 2.39 0.23 -2.39 1.16 -1.62 1.25 
+-1.02 2.02 1.26 1.76 -1.76 -0.64 S
+2294.75 1623.72 1.25 -1.52 3.39 -0.37 0.37 0.24 -0.5 1.26 -1.76 0.89 S
+2297.5 1624.21 -2.75 -0.49 S
+2299.13 1617.17 -3.52 -1.76 -1.13 -1.64 3.02 0.63 2.52 1.13 -0.89 1.65 S
+2263.78 1595.38 1.26 -1.02 -3.12 -0.13 0.73 -1.26 1.89 0.26 -2.38 -1.65 3.64 1.65 1.02 1.52 
+-3.04 0.63 S
+2242.77 1587.43 -0.11 -2.14 0.11 -2.26 1.89 2.26 -0.11 1.39 -1.78 0.76 S
+2267.19 1514.75 -1.12 -2.4 2.75 -0.5 2.02 -2.02 2.26 -1.39 2.15 -1.39 1.63 -1.5 -1.13 -1.78 
+-2.39 -0.37 1.39 -1.52 3.38 1.65 1.52 -0.26 1.25 -1.26 -2.64 -2.12 2.52 0.37 -1.5 -2.15 
+1.86 -1 2.15 2.39 2.25 2.28 -1.75 0.37 2.52 2.14 -1.25 0.14 -2.52 -1.52 -0.24 1.26 
+1.76 1.39 4.02 1.26 -2.52 0.87 S
+2285.54 1507.68 0.39 2.02 3.02 1.39 -0.76 1.65 -2.02 1.13 -2.26 0.76 -0.37 2.64 2.13 0.5 
+-1 1.89 -3.41 -0.39 2.91 1.91 2.13 1.13 3.15 1.63 2.64 2.14 -1.39 0.76 -2.75 0 
+-2.28 -1.02 -2.26 -1.63 -3.15 -1.76 -2.88 -2.41 -3.41 -1.63 -2.52 -1.39 0.5 -1 -2.63 -0.76 
+-2.14 -0.5 S
+2301.41 1635.05 0.87 -2.65 -3.02 -1.62 1.13 -1.52 3.15 0 2.52 -0.24 0.63 -1.39 -0.87 -2.29 
+-1.26 -2.64 3.39 -0.37 0.63 2.64 2.15 2.13 1.39 2.41 1.26 3.15 1.76 2.88 3.02 2.02 
+-3.28 0.63 -2.76 -0.63 -3.78 -1.26 -3.64 -2.12 -3.28 0.87 S
+2333.86 1629.12 -2.63 -2.25 1.63 -1.52 2.15 -0.23 S
+2335 1625.11 2.63 1 1.52 1.76 -1.12 1.78 -4.17 -0.52 S
+2353 1658.36 -2.52 -2.25 -3.14 -2.15 -2.28 -2.15 -1.63 -3.14 0.63 -2.15 0.13 -3.38 1.13 -1.26 
+-1.63 -3.4 1.63 -0.76 3.78 0.13 -2.26 -2.02 -1.65 -3.91 -4.28 -1.52 3.02 -0.63 -2.25 -2.64 
+-0.76 -2.89 -2.64 -2.14 -2 -1.89 -2.64 -0.13 -3.28 -0.24 -2.76 0.24 -1.89 -3.14 -3.14 0.5 
+-1.39 2.28 -0.5 3.02 -2.15 -0.76 -1.13 0.76 -2.78 -0.76 -1.87 -2.38 1.5 -2.65 2.26 -0.37 
+0.75 -2.15 -0.24 -2.65 0.24 -2.13 -0.37 -2.28 -2.39 -1.52 -0.63 -2.63 0.13 -2.02 0.5 -2.28 
+-0.76 -1.52 0 -2.52 0.63 -2.25 1.13 -1.89 2.15 1.63 S
+2317.64 1592.34 0.5 2.52 0.87 3.04 0.76 2.52 1.64 2.26 0.37 -2.88 -0.37 -2.78 -0.13 -3.02 
+2 -2.02 3.78 2.25 1.02 2.78 2.52 2.15 0.76 2.25 0.61 3.28 1.89 2.78 3.91 2.02 
+-0.37 -4.3 -2.39 -3.02 0 -3.02 3.14 1.49 2.63 -0.99 2.39 1.25 4.03 1.39 0.63 2.39 
+0.26 2.52 0.37 2.78 0.87 2.78 -1.87 2.13 0.63 3.28 2.89 1.78 2.38 -1.15 1 2.91 
+2.78 0.87 2.02 2.78 0.5 2.91 2.02 3.78 0.49 2.14 -0.89 2.26 3.02 1.52 1.76 1.26 
+-1.37 1.63 0.49 1.88 0 1.52 -2.88 0.63 -0.62 1.52 -2.52 0.63 3.39 0.63 2.64 2.02 
+3.02 0.63 1.39 1.13 S
+2369.59 1651.43 -1.02 1.39 -2.76 1 -3.15 0.76 -3.41 -1.02 -2.75 -0.74 -2.52 -1.26 S
+2354 1651.56 1.75 2 2.78 1.02 2.63 0.89 2.91 0.24 2.13 -0.13 2.28 -1.39 -0.26 1.91 
+-0.5 1.89 -2.02 0.87 -3.02 0.75 -2.88 -0.12 -2.91 -0.13 -3.88 -1 S
+2369.73 1649.79 -2.28 -0.37 -2.75 -1.39 -0.13 -2.02 1.5 -0.86 0.26 -2.28 2.02 0.5 2.38 1.52 
+0.63 1.76 -0.5 1.88 -1.13 1.26 S
+2374.37 1671.59 -1.26 -1.78 -0.86 -2.02 3.52 0.63 2.38 1.26 0 1.39 -3.77 0.52 S
+2388.34 1672.85 -2.41 -0.13 -3.02 -1.65 0.63 -2.02 -1.63 -1.5 -2.78 -0.89 -2.88 -0.13 -3.39 -0.87 
+-1.15 -2.78 -0.11 -2.26 0.11 -2.15 S
+2371.72 1658.48 0.52 -2.14 2.63 -0.63 -1.13 -2.26 1.89 -1.65 2.89 0.26 2.52 0.76 1.02 2.52 
+-0.63 1.63 0.13 2.15 -2.15 1.63 0.37 2.52 1.65 2.02 1.39 -0.37 1.24 1.52 1.78 0.86 
+-0.13 1.89 1.89 1.65 0.75 2.02 S
+2408.72 1673.85 -1.89 -1.13 -2.78 -0.89 -2.38 0.13 -3.02 -0.63 -2.39 -1.65 0.13 -2.52 2.63 -0.63 
+3.28 -0.11 2.02 -0.89 2.52 0.5 0.5 1.65 3.02 0.11 1.52 0.89 0.37 1.76 2.02 1.15 
+3.15 0.74 -0.13 1.15 -3.02 -0.13 -2.38 0.76 -3.15 -0.26 S
+2419.16 1671.59 -3.52 -0.89 -2.02 -1.52 0.24 -2.13 1.26 -1.25 0.63 -2.02 1.52 -1.88 -2.38 0.87 
+-1.76 1.89 -1.78 0.52 S
+2411.35 1665.17 0.89 1.89 -3.91 0 -0.87 -1.52 -3.02 -0.63 -2.52 -1.02 -1.02 1.02 -4.27 0.63 
+-1.26 -2.28 -1.13 2.28 -2.78 -0.63 -0.87 -1.26 -1 1 -2.28 1.02 -2.76 -0.5 -0.39 -2.02 
+0.13 -3.04 1.52 -0.86 -0.26 -1.52 1.52 -0.89 -1.89 -1.25 2.39 -1.5 3.14 -0.39 2.13 2.41 
+2.78 -0.89 2.02 1 1.5 -1.76 3.51 0.39 3.15 1.13 3.64 0.38 2.41 -1.39 3.64 0 
+2.88 0.13 3.28 -0.37 3.89 -0.26 1.52 0.63 2.52 -0.24 2.02 0 1.26 0.63 0 1.26 
+0.87 1.37 -0.37 1.78 0.26 1.63 -0.89 1.39 -1.13 0.89 -0.13 1.39 -1.63 1.89 -2.65 0.63 
+-2.02 1.13 -1.5 0.76 S
+2423.7 1669.57 -1.39 -0.26 -0.26 1.52 -2.89 0.76 S
+2408.46 1677.5 -1.25 -1.63 3.02 1.13 -1.76 0.5 S
+2405.08 1683.29 -1.52 -0.37 -1.63 -1.52 -1.89 0.76 -1.76 -0.76 -1.39 -1.89 -0.25 -1.26 -3.02 -1 
+1.13 -1.12 0.13 -1.52 0.13 -1.39 2.02 -0.13 1.76 0.5 2.63 2.28 -2.89 -0.13 -2.76 0.26 
+0.5 1 2.39 0.5 2.75 0.13 2.52 1.39 0.26 1.39 1.52 0.99 0.37 1.26 -1 0.63 S
+2392.86 1674.21 -1.5 -1.99 -0.89 -2.15 1.63 -0.62 1.52 0.37 0.26 2.52 -1.02 1.88 S
+2394.38 1682.92 -3.41 -0.37 -1.13 -1.39 2.64 0.63 2.13 0.13 -0.24 1 S
+2386.7 1682.16 -3.02 -0.87 -2.39 -0.39 -3.02 -1.39 1.13 -1.62 S
+2379.41 1677.89 -4.04 -1.39 -0.37 -2.78 3.52 -0.13 2.91 0.52 2.63 0.24 2.15 1.89 0.5 1.88 
+-1.88 0.63 -2.76 -0.11 2.76 1.26 2.02 1.13 -0.13 1.13 S
+2376.63 1681.54 -0.24 -1.39 2.52 0.89 -2.28 0.5 S
+2361.04 1678.12 -2.14 -0.99 -2.65 -0.76 -0.24 -1.63 -3.02 -1.78 -3.54 -2 2.28 -1.28 1 -1.89 
+4.04 0.52 3.88 1.26 1.26 2.13 3.14 -0.87 3.52 1.39 -1.37 1.13 0.73 1.89 -1 1.26 
+-2.25 0 -3.41 -1.65 0.63 2.14 -0.87 1.13 S
+2401.54 1690.47 -0.5 -1.63 -1.39 -0.89 -0.37 -1.39 1 -0.74 2.15 1.63 0.37 2.15 -1.26 0.87 S
+2400.29 1692.36 -1.89 -0.5 0 -0.76 2.28 -0.11 -0.39 1.36 S
+2398.16 1690.61 -2.39 0 -1.39 -1.52 1 -1.62 3.02 -0.37 0.39 0.99 -0.5 1.26 -0.13 1.26 S
+2387.59 1698.68 -1.39 -1.02 1.52 -0.76 2.26 -0.63 -0.76 1.52 -1.62 0.89 S
+2395.64 1702.82 -3.28 -0.5 -0.62 -1.39 -1.63 -1.26 1.25 -1.63 1.76 -0.89 -2.26 -1.39 1.87 -1.75 
+2.65 0.13 1.02 -1.26 2.39 1 -1.26 1.13 1.26 1.64 -0.39 1.39 -0.87 1.5 -1.52 1.52 
+-0.36 1.76 S
+2384.18 1697.03 -1.76 -1.63 -1.75 -1.15 1.13 -1.37 -2.75 -1.02 -0.52 1.65 -1.89 -0.52 -1.26 -1.49 
+0.13 -1.39 1.39 -1.26 0.76 -1.52 -1.26 -2.52 0.13 -1.52 2.89 -0.11 2.65 -0.39 1.5 1.52 
+2.78 1.75 3.38 0.5 -1.13 1.02 S
+2388.58 1687.59 -1.89 0.87 -1.5 -0.87 -1.65 0.24 -2.52 -0.63 1.39 2.28 2.64 0.5 2.13 0.76 
+2.52 1.63 1.15 1.39 -1.78 1.02 -2.52 1.25 -2.39 1 S
+2361.29 1701.2 -2.64 -1.78 -2 0.63 -2.64 -1.36 -1.89 -2.52 -0.89 -2.28 -2.89 -2.14 -0.76 2.14 
+1.16 2.39 0.73 2.02 -4.41 -0.37 -2.76 -2.15 -1.12 -2.38 -5.04 -1.26 -0.5 -2.41 -0.26 -2.88 
+0.89 -2.65 0.5 -2.14 1.76 -1.63 -2.65 -1.76 -2.39 -2.52 0.63 -2.02 1.75 -1.39 2.65 1.13 
+0.37 -1.76 3.14 0.24 1.52 2.91 2.26 2.52 2.91 1.76 3.88 0.13 3.91 1.25 3.02 0.64 
+2.88 -0.87 2.41 -0.52 2.13 1.25 0.37 2.15 -3.02 0.89 S
+2364.3 1684.44 -3.26 0.74 3.02 2.28 -0.39 1.76 2.28 1.39 -1.65 1.88 4.16 0.5 0.74 1.52 
+-1.26 1.39 -0.23 1.76 -0.89 1.52 -1.88 0.13 -1 1.37 -2.65 0.52 S
+2370.72 1709.63 -4.14 -1.52 -4.66 -0.63 0.25 -2.15 -0.63 -1.76 2.39 -1.62 4.01 -1.02 1.02 -2.15 
+0.76 -2 1 -2.02 3.28 1.75 3.52 1 1.39 2.28 3.15 1.89 -0.26 2.14 0.5 2.26 
+-4.27 -0.14 -3.02 0.89 -2.25 1.52 -2.02 1.25 S
+2551 1807.88 -2.75 2.78 S
+2520.42 1821.75 -2.13 0.89 -2.39 0 2.52 -0.89 2 0 S
+2467.34 1827.67 -2.64 0.37 1.52 0.76 S
+2459.29 1828.17 -3.52 -0.5 2.65 -0.39 0.87 0.89 S
+2447.22 1825.91 -2.78 -0.52 S
+2444.45 1825.39 -0.63 -0.87 S
+2416.02 1819.36 -3.78 -2.28 -1.39 -0.76 0.63 -0.87 2.52 0.87 2.02 3.04 S
+2409.09 1815.95 -3.15 -1.39 -2.64 -1.26 0.89 -0.89 3.91 0.89 -0.89 1 1.89 1.65 S
+2446.83 1784.07 -0.5 1.26 -3.52 -0.73 -4.04 0.63 -3.27 -1.52 3.77 0.37 2.91 -0.62 4.64 0.63 S
+2423.57 1793.64 -3.02 0.39 -3.04 -0.39 -2.38 -1.13 0.63 -0.87 2.52 0.37 2.65 0.76 2.64 0.87 S
+2361.79 1785.72 -5.14 -0.26 -1.65 -1.76 0.13 -1.39 -2.39 -2.02 2.39 -0.24 2.39 0.74 -2.39 -2.25 
+2.64 0.13 1.39 2.13 1.13 2.02 1.5 2.91 S
+2271.33 1736.83 -4.02 -0.24 -2.91 -1.52 -3.88 -0.87 -3.78 -1.52 -4.78 -2.78 4.15 1.25 S
+2256.12 1731.16 2.76 1.65 1.78 -0.39 4.14 1.15 2.39 -0.89 1.63 1.89 2.52 2.26 S
+2236.87 1720.21 -4.66 -2.39 -3.13 -2.52 -3.04 -2.65 -1.5 0 -2.39 -2.28 -2.52 -1.75 -0.89 -1.76 
+-1.75 -0.37 -3.02 -3.17 -2.26 -2.26 0.24 -1.52 3.78 2.52 4.14 3.15 3.91 2.64 4.4 2.41 
+2.65 2.76 2.88 3.28 3.28 2.78 -0.13 1.13 S
+2401.54 1652.43 -1.25 -1.89 1.13 -1.12 -1.87 -1.13 -0.52 -2.02 -1.5 1.13 -2.15 0.5 -0.76 -1.5 
+-0.24 -1.89 -1.89 0.11 -0.75 -1.76 0.13 -2.39 2.26 -0.5 1.76 -1.65 1.39 -1.52 -0.37 -2.62 
+0.76 -2.02 -1.89 -1.26 -1.02 -1.88 -1.39 -2.65 -2.5 -1.89 -1.15 -2.28 -1.88 -1.75 S
+2387.83 1620.45 -3.26 -1.89 -1.52 -2.02 -2.88 -1.52 -0.63 -1.49 1.76 -1.29 2.39 0.63 -1.89 -2.88 
+0.89 -1.89 -1.76 -2.39 -1.02 2.89 -1.89 1.52 -3.14 -1.89 -3.15 -2.02 0 -2.78 3.02 -1 
+3.54 0.87 -1.89 -2.89 -3.64 -2.91 -2.65 1.65 -3.02 -0.76 -3.28 -2.15 -2.76 -2.26 -1.89 -2.52 
+-2.28 -2.15 -0.24 -3.4 -1.76 -3.02 -2.52 -2.65 -0.13 -2.25 -1.52 -2.02 -1.26 -4.54 -0.87 -1.78 
+-1.02 -3.38 -0.87 -2.91 0 -4.04 2.76 -2 1.52 -2.02 -0.13 -2.65 1.89 -3.14 2.25 0.11 
+2.78 1.91 1.89 2.39 2.39 2.15 2.89 1.75 1.25 3.64 3.28 0.63 3.52 1.65 2.28 2.12 
+1.75 2.29 1.13 3.77 S
+2378.14 1571.94 1.76 -1.39 2.15 1.65 3.14 -0.26 3.26 -1.39 3.9 0.5 3.02 0.76 2.78 1.02 
+2.25 1.63 2.15 1.63 3.02 1.52 2.39 0.63 2.76 -0.87 3.28 0.37 3.01 0 3.28 0.5 
+2.65 0.63 2.76 1.13 2.91 1.15 2.13 1.39 -2.38 1 -2.02 1.89 -3.02 -0.63 0.63 1.25 
+2.64 0.63 0.76 2.64 2.26 0.26 -0.37 -1.78 -0.39 -2.12 S
+2428.84 1585.68 1.39 -1.26 2.65 -0.13 1.26 2.39 0.73 2.02 -0.62 2.39 -1.24 2.14 -0.89 2.02 
+1.76 -1.52 2.02 -1.62 1.13 1.5 0.63 2.52 -1.52 1.15 1.89 0.63 1.39 0.5 2.28 -0.13 
+0.63 1.76 -1.65 1.25 4.28 0.39 1.52 1.89 -2.02 0.37 S
+2444.45 1603.93 2.02 2.41 1 2.38 0.13 2.65 -2.02 1 1.02 1.64 2 0.88 2.28 -1.37 
+1 1.49 0 2.65 -0.37 1.75 1.62 2.28 0.38 2.02 1.78 1.25 1.26 1.76 1.89 1.89 
+2.26 1.89 2.02 1.39 3.52 2.28 -1 1.89 -2.78 1.13 -2.25 -1.26 -1.02 0.76 -1.63 -0.89 
+-2.25 -0.75 -2.64 -0.13 2.25 1.78 2.15 0.74 0.99 0.63 0.39 1.39 -1.89 0.25 -0.64 -1.25 
+-1.64 0 1.02 1.75 -3.67 1.26 1.78 0.39 2.13 -0.89 3.02 -0.26 2.39 0.63 -0.74 1.65 
+-1.39 1 0 1.39 -0.89 1.89 -2.62 1.13 -2.52 1.52 -3.02 0.13 -3.67 0.63 -3.25 -0.37 
+-2.39 -1.28 -1.65 1.65 S
+2438.78 1650.67 -2.88 -1.39 -0.13 2.65 -3.91 1.63 -3.25 0.52 -1.52 -1.39 -1.89 -0.49 -0.76 1.25 
+-2.12 0 -3.15 0.11 -3.28 -0.5 1.39 -1.89 -1.63 -1.26 -3.91 -0.75 -2.78 1.89 -2.52 0.52 
+-2 1.26 -2.91 -0.39 S
+2417.01 1560.59 1.65 -0.87 2.26 0.37 1.39 -1.13 -2.52 -1.39 -3.51 -0.99 3.51 -0.76 0.5 -2.91 
+-2.78 -1.76 4.54 -0.89 2.14 -1.89 3.02 -1.37 3.28 1.26 2.52 0 2.89 1.37 3.78 0.76 
+2.76 2.28 0.75 3.02 -2.25 1.65 0.63 3.02 -2.38 -0.13 -1.02 1.52 -1.89 -1.39 -2.02 -0.63 
+-1.37 1.13 -2.52 0 -1.52 -1 -0.87 1.5 -1.15 -2.52 -2.89 -0.24 0.89 2.88 -1.13 2.15 S
+2423.7 1563.63 -1.65 0.87 -0.5 -1.26 -1.52 0.26 -0.87 -1.63 -2.15 -1.28 S
+2459.29 1581.9 2.25 1.5 S
+2447.85 1607.07 -0.76 -1.89 1.5 0 -0.74 1.89 S
+2531.25 1191 -0.5 -2.91 -2.78 -1.88 1.39 -2.75 1 -2.78 2.02 -2.26 1.89 -2.64 2.89 -1.79 
+1.88 -1.75 2.02 -1.76 1.88 -1.76 1.39 -2.28 2.02 -2.26 1.37 -2.15 0.13 -2.39 0.89 -1.25 
+0.5 -2.41 1.39 -1.75 1.5 -2.65 0.39 -2.78 1.5 -2.26 0.89 -2.65 -2.39 -2.91 1 -1.37 
+0.89 -2.65 1.37 -2.28 1.39 -1.76 0.5 -3.15 -0.62 -3.27 -0.87 -2.29 -1.52 -2.38 -2.39 -1.52 
+-1.89 -2.26 -1.13 -3.28 -0.99 -3.28 -1.02 -2.78 -0.5 -2.62 -1.52 -2.78 S
+2545.21 1103.32 -0.11 -2.78 -0.5 -2.65 -0.13 -2.25 0.37 -2.78 1.39 -3.02 1.76 -1.78 1.39 -2.13 
+1.26 -2.65 1.76 -2.64 0.89 -3.02 1.63 -2.15 0.87 -2.28 2.15 -2.13 0.89 -2.15 -0.63 -2.25 
+0.24 -3.04 -0.13 -2.64 0.26 -2.26 1.13 -3.02 -0.13 -2.64 0.39 -2.15 0.63 -2.64 0.63 -3.02 
+0.24 -2.65 1.76 -1.65 1.15 -2.12 2.52 -1.65 1.5 -2.12 0.63 -3.04 1.13 -2.13 0.5 -2.91 
+1.15 -2.14 1.5 -2.13 1.39 -2.91 0 -3.01 -1.39 -1.39 -1.39 0 1.78 -3.02 0.63 -2.02 
+-0.26 -2.14 1.76 0.89 2.02 -1.65 1.75 -1.63 3.15 0.13 1.89 1.26 3.02 0.63 3.41 0.13 
+2 1.26 3.02 0.63 S
+2596.03 1009.85 3.04 -0.39 2.26 1.02 2.78 -0.76 2.5 -0.39 1.88 1.39 3.54 0.26 1.5 1.39 
+3.02 0.13 2.64 0.5 2.39 1.89 3.41 1.89 2.39 1.39 2.02 1.88 S
+2629.38 1020.05 2.63 2.39 2.02 1.89 2.52 1.89 2.65 2.28 1.75 2.39 1.76 2.78 2.14 2.38 
+1.76 2.28 2.88 2.13 2.39 1.52 1.39 2.78 1.39 3.25 1.39 2.78 0.37 2.28 0.37 1.89 
+-1.76 0.76 2.39 3.28 2.78 1.26 1.89 0.99 3.77 1.63 2.76 1.28 2.02 1.5 1.75 2.91 
+-0.11 2.76 0.87 2.41 0.37 3.27 -0.61 2.26 -0.39 3.64 -0.5 3.28 -1.52 1.65 0.76 2.88 
+2.39 2.02 2.02 1.65 2.02 2.65 2.39 1.13 S
+2680.08 1098.16 2.52 3.14 2.02 2.52 2 2.64 2.78 1.39 2.39 1.13 3.64 1 1.89 2.15 
+2.88 2.78 1.89 2.14 2.02 2.76 1.65 2.52 0.63 3.04 -0.76 3.28 0.24 2.89 -0.74 3.28 
+0.63 3.53 0.11 2.39 -0.24 2.89 0.5 3.04 0.13 2.89 -1.75 1.65 -1.89 1.13 -0.76 2.78 
+-1.26 3.28 -0.49 3.78 0 3.38 1.37 3.17 -2.26 2.63 -2.26 2.54 0.87 3.02 0.89 3.14 
+1.26 3.15 1.26 2.64 1.76 3.78 1.63 3.78 -0.11 3.41 2.25 0 2.02 2.91 2.13 2.39 
+1.26 3.28 1.64 2.26 1.63 3.41 2.39 3.02 1.26 2.78 2.02 2.52 2.02 1.89 2 3.02 
+2.02 2.54 2.52 1.63 S
+2729.64 1228.41 2.02 2.52 1.89 2.52 1.5 2.91 1.88 3.14 1.52 2.39 1.75 3.02 1 2.91 
+0.89 3.28 1.39 2.52 1.89 2.65 0.24 3.78 0.5 2.78 0.76 3.41 0.89 2.89 0.37 3.27 S
+2748.13 1272.37 0.89 2.26 0.74 3.04 1.15 3.52 -0.76 3.41 0.76 3.02 -0.26 3.54 -0.62 4.67 
+-3.02 0.11 -1.52 -3.15 -2.63 -1.89 -2.65 -1.88 -2.64 -0.24 -2.26 -1.79 -2.88 -0.87 -2.52 -2.9 
+-2.41 -1.14 -3.02 -0.36 -2.25 -2.15 -2.39 -1.75 -2.64 -0.13 -1.89 1 -2.13 2.02 -2.02 1.65 
+-2.02 1 2.25 2.15 -1.37 2.75 -2.52 1.78 -2.65 2.02 -2.15 2 -3.02 1.78 -2.62 2.39 
+-2.65 0.26 -3.28 0.73 S
+2691.14 1299.2 -1.89 2.65 -1.75 0 -1.75 2.15 -0.89 2.88 -1.26 3.28 -1.76 2.54 -1.75 2.13 
+-3.02 1.89 -2.78 0.76 -2 3.14 -0.89 2.28 -1.26 3.28 -0.26 3.02 -0.37 1.89 -2.15 2.02 
+-0.86 3.28 -1.89 0.63 -2.25 1 -2.02 1.02 -1.88 2.52 -0.89 1.88 -0.13 2.39 -2.13 1.52 
+-1.89 2.64 -1.76 2.13 -1.89 2.54 -1.39 2.25 -2.25 2.39 -1.02 2.28 -1.63 1.63 -0.99 2.28 
+-2.15 1.5 -2.12 2.02 -1.78 2.15 -1 2.25 -1.76 2.02 0.87 1.26 1.39 -2.13 1.89 -2.65 
+1.63 -1.52 1.39 -1.76 2.02 -1.52 2.39 -1.39 1.02 1.26 -0.63 2.28 0.24 3.64 0.5 3.67 
+0.89 -2.78 0 -3.02 S
+2647.25 1370.77 0 -3.04 2.25 0.5 2.28 -1.99 1.76 -2.02 2.38 -2.41 2.26 -2.52 2.14 -1.5 
+2.26 -2.52 1.64 -2.64 1.87 -2.52 2.78 -0.76 2.52 -1.39 2.26 -2.52 2.02 -2.52 1 -2.78 
+0.13 -2.02 1.02 -2.38 S
+2677.82 1335.75 1.26 -3.15 2.13 -1.65 1.26 -1.63 3.41 -0.13 2.63 -1.89 1.89 -2.52 1.88 -2.65 
+1.89 -2.52 1.89 -2.14 1.89 -1 2.39 -2.41 1.88 -2.64 0.89 -2.39 0.13 -2.52 1 -2.78 
+1.63 -3.28 1.52 -3.14 1.13 -1.26 0.14 -3.02 2.25 -2.52 2.28 0.13 4.77 2.26 2.26 1.75 
+0.89 2.28 2.02 0.63 2.5 0.26 2.41 1.13 1.37 2.02 1.52 2.64 2.52 0.74 S
+2733.42 1304.36 2.12 1.78 1.15 3.02 2 2.26 2.52 2.02 2.15 1.78 2.13 1.76 2.14 1.89 
+2.13 1.76 -0.5 2.02 0.26 2.28 1.89 2.39 2.02 1.89 1.89 2.39 2.13 1.39 2.02 0.26 
+1.5 2.26 -0.11 3.28 1.99 1.88 1.65 1.26 0.87 1.52 -0.24 3.28 0.99 2.13 1.63 1.28 
+1.52 1.89 -1.52 2.13 -0.74 3.15 0.24 3.03 1.76 0.76 0.26 2.89 0.37 2.52 0.76 2.28 
+0 3.38 -0.13 3.54 -2.25 0.63 -2.39 1.76 -2.02 1.89 -2.88 -0.13 -2.28 -0.5 -2.63 0.5 
+-2.65 1.02 -2.64 1.63 -1.37 3.41 -1.15 2.91 -0.37 1.63 -1.25 0 0.13 -2.26 -1.12 -2.28 
+-1.26 -5.03 S
+2744.12 1380.84 -1.39 -2.91 -0.12 -2.89 -1.63 -1.26 -2.78 -0.63 -2.13 -0.89 -0.89 -2.02 -2.76 -0.63 
+-1.26 1.26 -1.78 -0.74 0.39 3.52 -0.76 3.02 -1.39 2.78 -1.89 1.39 -0.87 -0.89 0.63 -2.52 
+-0.63 -3.02 -1.26 1.25 -2.28 1.76 -0.62 2.52 S
+2720.71 1379.95 -1.63 2.14 -2.39 1.26 -2.78 1.63 -2.75 1.65 -1.89 2.02 -2.25 2.52 -1.79 2.52 
+-2.12 0.26 2.12 1.89 -1.99 2.02 2.13 0.74 0.26 3.41 1.89 -0.76 1.99 -0.87 1.39 1.63 
+2.15 -1.39 2.76 -2.64 2.91 -2.13 1.89 -2.65 2 -1.88 3.28 0.24 2.25 -0.74 2.78 -1.65 
+2.26 0.5 2.14 -1.39 1.89 1.39 2.39 -0.63 1.76 2.52 1.39 1.78 S
+2742.73 1393.32 1.63 2 2.15 0.89 2.13 -1.25 1.39 -2.26 1.89 -2.54 3.02 0.89 2.52 0.63 
+2.88 0.26 2.28 0.5 2.02 0.99 2.49 0.76 1.89 0.5 2.91 0.89 2.13 1.76 1.76 1.52 
+2.28 1.26 0.76 1.76 2.13 0 1.89 0.52 1.63 1.49 1.39 1.52 1.65 1.63 2.13 0.63 
+1.89 -1.37 2.02 -0.65 1.89 -2.13 1.49 -2.15 2.28 0.13 2.26 -0.5 2.52 -1.65 2.78 -0.76 
+2.25 1.39 1.63 2.52 0.89 -3.39 -1.39 -2.28 -2.26 -1.52 2.26 -2.38 2.25 -1.14 2.65 -1.52 
+2.65 -0.24 2.25 1.39 1.39 2.25 0.63 3.15 -1.26 3.64 -0.63 3.04 1.13 0.13 1.13 -3.28 
+1.52 -2.28 2.02 -1.89 S
+2825.89 1396.2 1.36 -3.77 1.02 -3.28 2.02 -2.65 1.26 -1.13 0.24 -2.52 2.14 -3.14 2.13 -3.28 
+1.65 -2.91 1.76 -3.38 1.63 -2.28 2.15 -2.52 2.52 -2.28 2.52 -2.26 1.5 -3.02 1.75 -2.78 
+1.76 -2.91 1.89 -3.28 1.89 -2 2.28 -1.89 1.88 -2.15 1.63 -2.78 S
+2862.87 1340.02 1.76 -2.88 1.75 -3.41 1.89 -3.54 2.02 -1.89 2.02 -1.39 2.02 -0.11 1.25 2.75 
+-0.52 4.43 1.15 2.75 1.5 1.65 -1 3.28 0.24 4.14 1.88 1.39 -1.26 3.91 -1.26 2.52 
+-1.12 3.28 0 3.54 -0.24 4.02 -1.15 4.03 -1.62 3.54 -1.89 3.64 -1.75 3.41 -0.76 3.02 
+-0.24 3.41 2.25 1.13 -0.5 3.14 0.87 1.52 S
+2870.16 1391.3 1.52 1.88 0.24 2.39 -1 2.91 0.37 1.88 0.63 2.89 -0.11 3.54 0.37 2.64 
+0.89 2.39 0.24 3.41 -0.24 3.64 -0.26 2.91 0.13 3.38 1 1.89 1.02 2.65 -0.39 3.67 
+-0.76 3.38 -1.37 1.89 -0.76 2.65 0.88 2.64 0.63 2.39 -0.74 2.64 2.52 -3.14 0.87 1.89 
+1.13 2.28 1.02 2.13 1.13 2.28 -0.5 3.28 0 6.42 2.52 -1.39 2 -2.02 1.89 -2.25 
+2.02 -2.02 2.39 -1.39 2.78 -1.26 1.89 -1.13 0.87 1.13 2.15 -1.76 0.5 -2.28 2.26 -1.75 
+0.89 1.25 2.26 -2.78 2.65 -3.14 2.25 -3.52 1.65 -4.54 1.25 -3.91 2.26 0.11 1.13 0.65 
+1.13 1.5 S
+2915.32 1433.62 -0.24 3.41 0.24 3.28 0.39 3.52 -0.89 2.91 1.52 0.13 2.39 -1.65 2.26 -2.65 
+2.02 -3.14 2.26 -3.64 2.15 -2.78 2.52 -3.41 2.75 -2.88 2.52 -3.54 1.15 -5.04 2.39 -2.65 
+1.26 -3.02 0.37 -3.28 1.52 -3.64 1.76 -4.3 1 -5.28 1.39 -3.67 1.76 -2.52 0.25 2.15 S
+2948.04 1391.93 2.26 -1.65 2.38 -2.52 1.89 -1.26 1.89 -1.39 1.13 -1.39 1.13 -2.12 1.02 -3.15 
+1.75 -4.29 1.63 -1.76 0.89 -4.17 2.26 -2.75 2.14 -1.89 1.39 -3.66 2.26 -0.87 1.75 -1.52 
+2.02 -0.25 1.76 -0.63 1.52 -0.87 2.26 2.65 -1.76 4.14 -2.28 3.67 -1.76 1.49 -2.52 8.08 
+-1.25 4.01 S
+2971.81 1379.82 -1.26 4.04 -2.26 2.64 -2.02 1.02 -2.13 1 -2.02 1.13 -2.15 1.89 -1.89 -1.39 
+-1.63 0.65 -2.02 3.77 -2 3.15 -1.88 1.25 -2.15 4.67 -1.26 -2.41 -1.89 3.04 -1.75 4.27 
+-1.39 4.79 -0.37 3.39 -1.26 4.29 -0.89 3.52 -2.25 4.8 -1.76 4.54 0.37 2.75 1.88 0.76 
+2.02 -4.14 1.49 1.39 1.02 1.63 2.52 -1.39 1.37 0.13 1.65 -1.39 1.89 -2.39 2.02 -2.02 
+2.26 -0.89 1.26 2.41 1.75 -1.52 1.76 0.76 1.25 -4.41 1.76 -3.78 1.76 -2.54 -0.11 4.29 
+-0.13 4.14 0.76 2.78 -0.62 4.54 -2.15 4.54 1.26 2.39 0 3.66 -0.13 3.78 -0.11 3.64 
+0 4.04 -1.02 3.27 S
+2961.37 1460.33 -1.62 3.15 -2.52 5.3 -1.76 3.02 -2.02 3.64 -2.25 3.28 -2.41 2.78 -2.76 3.41 
+-2.52 1 -2.39 1.39 -2.14 0.5 -2.62 0.63 -2.41 1.39 -2.52 1.02 -1.63 1.76 -2.12 0.5 
+-3.14 2.39 -2.02 4.04 -1.65 3.41 -0.74 4.41 -1.65 3.78 -0.99 3.91 -0.63 3.78 -0.63 3.41 
+-0.26 3.4 0.63 2.26 S
+2916.58 1527.84 1.65 0.26 0.38 1.5 2.02 -3.02 1.39 -1.12 2.26 -1.89 0.37 1.52 -0.63 2.25 
+-2.38 1.52 -1.5 2.89 -0.39 3.41 0.13 3.15 -0.87 3.91 0 2.88 -0.63 3.54 -2.65 3.41 
+2.13 0 -2.63 3.91 2.52 -0.13 -2.14 4.14 0.13 2.54 -0.26 2.89 -0.24 3.01 -1.39 4.04 S
+2913.82 1572.44 -1.89 4.54 -1.39 3.54 -2.02 4.02 -1.49 3.17 -1.89 1.89 -0.13 2.52 -2.52 3.28 
+-1.63 3.02 -2.14 3.14 -2.65 3.54 -2.13 2.25 -2.52 1.76 0.37 1.26 -2.25 3.41 -2.88 3.41 
+-2.65 3.4 -2.39 3.02 -0.26 1.75 -1.76 2.02 -1.52 0.75 -3.39 3.28 -0.26 1.26 -3.77 3.14 
+-1.76 1.52 0 -1.65 -0.73 -1 0.99 -3.28 -0.76 -0.89 -0.99 2.91 -1.89 2.38 -1.39 2.39 
+-1 2.52 -2.02 1.02 -2.15 -1.02 -0.63 2.78 -2.52 1.02 -1.63 -0.65 -0.76 -0.87 -2.62 1.26 
+-2.52 1 -2.52 0.89 -3.14 1.25 -1.02 -1.75 -1 -1.65 -3.02 2.78 -2.39 2.52 -2.78 3.54 
+-2.25 3.28 -2.91 2.12 S
+2827.25 1658.22 -1.99 3.67 -2.28 3.14 0.63 1 -3.64 2.78 0.13 -1.89 0.63 -2.28 0 -1.62 
+-1.26 -0.63 1.76 -2.78 2.02 -2.38 2.02 -2.02 0.37 -1.89 -1.13 -0.89 -2.78 1.13 -1.13 -1.26 
+-1.26 -0.87 -1.88 -0.39 -2.26 1.64 -2.52 2.52 0.76 1.25 -1.26 2.78 -1.88 1.89 -2.39 1.89 
+-2.28 2.88 -1.76 2.65 -3.25 3.04 -2.91 2.76 S
+2797.7 1674.35 -0.37 2.64 2.26 0.13 3.41 -2.65 2.25 -2.52 1.89 -1.52 1.76 0.39 3.51 -3.54 
+-1.12 2.02 -2.39 3.02 -2.76 2.52 -2.02 3.04 -2.02 2.64 -1.5 2.75 0.11 2.15 -0.24 1.65 
+0.5 0.99 3.91 -2.52 3.14 -2.02 3.26 -2.39 1.76 1.39 -2 3.65 S
+2811.04 1686.2 1.26 1.39 2.52 -0.5 1.63 -3.04 3.38 -0.24 3.41 -0.76 3.77 -3.41 3.39 -1.63 
+2.91 -0.52 -3.54 4.04 -2.26 3.4 -2.25 3.91 -3.15 3.64 -3.4 2.52 -3.02 1.78 -3.52 1.37 
+-3.14 1.02 -3.02 0.63 -2.15 -0.39 -1.49 -0.63 -2.28 0 -1.26 -1.13 -0.63 -1.5 -2.63 1.63 
+-1.25 -0.13 -1.76 2.39 -2.02 2.28 -2.91 2.78 -3.51 3.02 -2.13 2.15 -3.54 1.13 -1.39 0.13 
+-4.77 3.15 -2.65 2.78 -2.63 1.26 -1.02 1.36 -3.64 2.15 -2.39 1.39 -1.63 2.39 2.13 -0.5 
+-0.5 2.78 -3.02 3.02 -4.14 2.78 -3.78 3.02 -4.91 2.64 -3.41 1.13 -4.91 2.91 -5.27 2.75 
+-4.8 2.41 -4.14 1.76 S
+2721.59 1750.7 -3.78 1.52 -4.64 1 -4.41 1.89 -5.03 1.89 -5.54 2.28 -3.64 0.5 -3.28 0.37 
+-3.52 -0.11 -2.78 -0.39 -3.41 0.13 -3.39 0.5 -3.64 0.76 -2.89 0.63 -0.63 -0.89 -2.52 -0.37 
+-3.28 0.5 0.37 -1.89 0.13 -1.52 -1.13 -0.37 1 -2.02 2.14 -1.89 4.91 -1.39 3.78 -2.52 
+-3.02 0.89 -2.65 -0.26 2.26 -1.63 3.77 -1.02 -2.52 -0.13 -2.63 -0.11 S
+2671.66 1747.05 2.63 -2.15 0.89 -1.89 -1.39 -0.26 -3.64 1.89 -4.41 1.65 -3.91 1.63 -4.41 1.52 
+-4.77 1 -3.39 1.02 -3.91 1.25 -3.14 1.13 -2.89 0.5 -3.28 0.52 -3.4 1.13 -2.76 0.37 
+-3.41 1.02 -3.52 2.02 -3.02 2.13 -2.89 1.89 S
+2617.05 1763.41 -0.26 1.02 -3.14 0.63 -2.12 2.25 -2.91 1.26 -1.89 1.39 -1.12 -0.13 -1.5 -0.37 
+-2.02 0.76 -1.52 1.63 -1.89 1.39 -2.13 0.63 -0.13 1.26 3.28 -0.5 0.24 1 -2.38 1.26 
+-4.15 1.15 -2.28 0.37 -2.12 1.39 -4.78 1.63 0.24 -1.13 2.15 -1.25 -3.28 -0.76 -3.52 -0.37 
+-4.03 0.24 -3.78 -0.24 -3.64 -0.39 -4.14 0.89 -3.65 0.89 -1.89 1.26 -3.54 0.5 3.77 1.26 
+0.76 1.13 0.13 1.25 -4.28 0 -3.52 -0.24 -3.28 -0.39 -2.78 0.39 -1.13 -1.25 -2.38 -1.15 
+-4.78 0.63 -0.75 0.76 3.14 0.25 1.89 1.52 2.26 1.75 1.89 0.76 3.78 -0.39 3.64 0 
+2.38 0.63 4.04 0.39 S
+2559.94 1788.37 4.77 0.24 3.02 0.63 4.28 0.13 4.67 0.13 4.01 -0.5 2.78 -1.16 0.5 1.16 
+3.15 0.5 3.39 -0.76 6.29 1.52 2.91 1.26 1.37 1.13 1.39 1.39 1.02 1.25 1.75 1.63 
+2.13 1.52 0.89 1.89 1.76 1.25 1.76 0.89 0.63 1.13 -4.77 0.76 -4.77 0.24 -4.8 -0.37 
+-3.14 -1 -4.28 0.24 -3.64 1.39 -1.12 -1.12 -2.26 -1.13 -3.66 -0.13 -4.14 0.87 S
+2575.79 1803.34 -2.13 1.02 -2.78 -0.12 0.5 -1.76 -1.26 -1.52 -2.88 -0.63 -2.89 0.13 -1.15 1.39 
+-2.39 0 -0.74 -1.65 1.37 -1.13 -1.26 -1.13 -3.52 -0.62 1.76 -1.52 2.78 -0.13 -0.63 -1.5 
+-3.02 -0.62 -3.77 -0.63 S
+2553.78 1792.91 -2.28 -1.02 -1.89 -1.13 -3.89 0.37 -1.88 1.15 -3.28 -0.52 -3.91 0.26 1.39 1.89 
+-3.78 -0.75 -3.28 -0.24 -3.52 0 -3.64 0.99 -2.26 1.39 -1.52 1.39 -2.38 -1.52 -3.91 -0.37 
+-3.89 -0.75 -3.53 -0.76 -3.39 -0.89 -3.14 -0.11 -3.28 -0.89 -3.91 -0.37 -3.02 -0.89 -4.64 0.26 
+-3.28 0.99 -2.64 -1.52 1.52 -1.26 1.5 -2.02 0.89 -1.89 0.89 -1.25 3.02 -0.13 -0.26 -1.5 
+-4.14 0.37 -3.28 -0.87 -1.52 -0.52 S
+2477.65 1780.79 -1.13 -0.5 -1.37 -1.89 2.26 -1.26 -3.02 -1.26 -0.63 1.52 -1.26 1.63 -2.91 0.25 
+-2.25 -0.75 -3.52 0.37 -0.89 1.65 -2.88 0.76 -4.15 0.87 -3.77 0.39 -0.39 -1.78 S
+2451.73 1780.79 -1.62 -1.36 0.63 -1.91 -3.64 -0.5 -1.26 -1.39 -2.02 -1.37 3.91 -1.02 3.25 -1.26 
+4.92 -0.13 4.28 0.39 1.89 -1.52 2.75 -1.13 3.52 -1.13 3.91 -0.89 2.78 -1.26 2.63 -1.26 S
+2477.65 1765.06 0.76 -0.39 3.02 -1 3.54 -0.76 3.25 -1.12 4.17 -0.26 3.52 -0.63 3.52 -0.76 
+3.77 -0.74 0.76 2.26 -0.5 1.75 2.02 0.76 2.52 0 0.11 -1.39 2.52 -1.13 -0.36 -1.26 
+-2.52 0.37 -1 -0.87 2.76 -1.13 2.15 1 2.26 0.63 3.28 -1.39 4.27 -1.25 4.78 -0.89 
+4.14 -1 2.15 -1.76 -2.52 -1.13 -0.37 -1.78 1.26 -1.5 2.76 -1.26 3.14 -1.39 3.78 -0.76 
+2.38 -0.89 2.78 -0.76 S
+2545.72 1744.64 -1.39 -1 0.88 -1.52 1.89 -0.87 0.26 -1.39 -1.76 -1.76 1.89 -1.65 3.14 -1.62 
+1.76 -2.28 2.12 -1.63 2.02 -1.64 2.38 -2.13 0.89 1.37 2.38 -1.5 2.02 0.13 1.13 1.13 
+1.39 1.5 2.25 -2 3.52 -2.28 0.39 -1.39 1.76 -0.86 2.38 -0.26 0.39 -1.52 -1.16 -1.89 
+2.91 0.26 2.89 0.38 3.02 -0.5 0.26 -1.52 -1.13 -1.88 -2.28 -1.63 -3.38 0.37 -3.54 -0.37 
+-1.37 -2.28 0.87 -2.39 0.63 -2.89 1.89 -2.28 2.25 0.13 1.65 0.99 1.76 -1.62 1.39 -2.64 
+0.13 -2.15 -2.78 -0.12 1.13 -1.76 -0.13 -1.89 1.25 -1.39 1.89 -1.5 -3.38 -1.26 S
+2582.21 1691.62 -2.65 0.63 0.26 -1.64 S
+2579.82 1690.61 1.37 -0.63 1.02 1.65 S
+2582.21 1691.62 2.64 0.38 0.63 -1.26 -0.63 -1.13 -0.63 -1.39 2 -0.89 1.39 0.89 1.76 -1.76 
+1.65 -1.78 0.5 -1.5 -3.15 1.13 -1.63 1.52 -3.41 1.76 -2.89 1.63 -3.64 1.78 -2.91 1.25 
+-3.52 -0.13 -2.52 -0.5 -1.62 -1.39 -0.63 -1.39 0.24 -1.75 0.5 -1.52 1.89 -0.39 0.52 -1.5 
+-3.78 1.13 -0.13 -1.52 0.63 -1.89 -2.91 1.89 -1.76 -2 2.65 -1.65 3.28 -1.63 3.38 -0.26 
+0.26 -2.15 2.25 0.26 1.39 -3.28 -2.26 0.63 1.76 -2.78 0 -1.63 2.13 -1.65 1.02 -2 
+1.39 -2.54 1.99 -2 1.89 -1.65 2.28 -0.63 2.89 -0.13 0 -2.38 0.5 -2.15 S
+2587.61 1653.69 -0.13 -2.39 -0.24 -2.28 3.88 -0.74 3.28 -1.15 1.76 1.39 3.02 -0.13 0.39 -2 
+-3.15 -0.39 -2.26 -0.86 -0.52 -1.28 -2.12 -0.37 1.13 -1.52 2.88 0.75 0.76 -1.12 -2.13 -0.5 
+0.38 -1.52 3.02 -0.5 2.52 1.26 1.89 0 -2.15 -1.65 -2.12 -1.63 -3.14 1.39 -2.26 1.63 
+-3.27 1.02 -2.65 -0.26 0.63 -0.87 2.26 0.5 2.15 -0.89 1.63 -1.52 0.39 -1.63 2.52 -2.26 
+2.52 -0.13 2.89 -0.52 2.15 -1.89 2.75 -1.76 3.78 -1.52 1.89 2.02 0.63 -2.02 2.88 -1.75 
+3.78 -1.26 1.65 -2.64 2 -2.13 0.76 -2.64 0.37 -2.28 -3.64 -0.24 -0.37 3.15 -1.13 2.13 
+-1.76 2.41 -2.41 1.39 S
+2614.65 1624.48 -2 1.89 -3.53 -0.13 -2.89 1.5 -3.28 2.02 S
+2602.95 1629.75 -6.03 3.04 -3.14 0.11 -2.02 2.02 -2.12 1.78 -2.02 1 -2.76 -1.13 -1.15 1.13 
+-2.38 0.37 0.13 -1.76 1.89 -1.89 2.02 -1.89 2.63 -1.75 2.02 -2.02 0.63 -2.65 2.15 -1.52 
+2.89 -0.74 1.89 -2.02 1.88 -1.15 1.89 0.63 3.39 -1 2.28 0.13 2.26 -2.41 -2.39 -0.24 
+-2.64 0.24 -2.25 -0.87 -2.39 -0.39 -1.65 -0.87 -3.13 -0.13 -2.02 -1.26 -3.77 -0.75 -3.52 0.39 
+0.99 -1.78 2.02 -0.37 2.62 0.24 2.15 -0.87 2.52 -0.5 0.5 -1.65 -0.5 -1.13 1.63 -1.39 
+-1.5 -0.5 -2.91 2.15 -0.5 -1.65 0.39 -2.52 S
+2592.91 1604.19 -2.02 -0.89 -1.13 -1.5 1 -1.78 -2.89 0.39 -2.38 2.02 -0.39 -2.02 -0.24 -2.14 
+-1.02 -1.89 -0.37 -1.89 -0.75 -2.28 -1 -1.63 2.52 -2.65 -0.52 -2.02 -1.88 -1 -2.26 1 
+-2.38 -0.24 -0.63 2.52 1.89 1.5 -2.52 1.39 -2.02 0.63 -2.02 -1.13 -3.02 -0.5 3.27 -1.02 
+2.26 -2.52 1.25 -2.64 2.02 -0.11 1.89 -2.28 0.13 -2.02 -2.15 -0.14 -2.25 -0.5 -0.26 -2.25 
+-1.13 -2.15 -0.63 -2.26 2.52 -1.52 2.78 -1.89 -2.91 -0.76 -2.38 0 -2.76 0.36 -2.14 -0.23 
+0.13 -2.02 3.02 -1.39 1.63 0.76 1.65 -2.39 -2.91 -1.15 -3.65 1.02 -3.14 0.37 -1.5 2.39 
+-1.25 2.02 -1.52 2.41 S
+2560.8 1570.18 -3.38 1.25 -2.65 0.63 -2.64 1.89 3.02 -0.89 2.91 0.13 2.89 -0.37 S
+2560.94 1572.83 2.26 0.24 2.41 0.5 2.88 0.13 2.13 1.52 1.39 2.15 0.13 2.13 -1.75 2.28 
+-2.15 1.63 -2.88 0.76 -2.89 0.26 -3.02 0.74 -3.04 0.76 -3.12 0.26 -3.04 -0.26 -3.02 -0.5 
+-1 1.52 -2.38 0.11 -1.13 -1.26 -2.65 -0.5 -3.28 0.89 2.65 0.36 1.25 2.28 -2.52 0.64 
+-2.78 0.49 -2.88 0 -0.26 -3.27 -1.5 1.89 -1.13 -2.14 -1.26 2.9 -1.12 -1.25 -0.39 -1.89 
+-2.39 0.75 -1.39 -1.64 -0.75 -2.39 -2.39 -1.52 -2.52 -0.5 -0.87 -2.78 -2.02 -1.26 0.5 -1.63 
+1.39 -0.26 -1.52 -2.02 -0.64 1.65 S
+2514.25 1574.59 -1.12 -1.52 -0.13 2.65 -1.37 -1.89 -1.65 -1.63 1.65 -1.02 -2.78 -1.39 -1.13 -2.25 
+2.02 2.02 2.13 0.73 2.52 0.76 -2.02 -2.88 -0.11 -2.29 -1.52 -2.38 -0.64 -2.28 -0.36 -2.26 
+-0.5 -2.25 -0.52 -2.78 -1.76 -1.89 -1.12 -3.28 -1.26 -2.28 -1.13 -2.38 -1.75 1.25 -0.89 -2.39 
+-1.13 -1.75 -2.64 -0.63 -1.63 -2.28 -1.62 -1.89 -2.02 -1.89 1.13 -1.76 -1.13 -1.78 0.63 -2.13 
+0.5 -2.28 1.63 -2.15 -0.87 -1.88 0.63 -1.63 2.25 0.5 -1.39 -1.88 0 -2.15 1.39 -1.37 
+2.78 -1.15 2.63 -0.24 2.52 1.49 1.26 1.89 2.02 2.41 1.52 0.13 0.74 1.89 1.75 -1.15 
+1.26 -3.02 1.52 -2.52 S
+2514.52 1515.75 1.63 -3.02 1.52 -2.52 2.25 -2.02 -0.5 -1.89 1.52 -2.15 0.37 -1.76 2.15 0.24 
+2 0.26 S
+2525.46 1502.91 -0.63 1.76 1.15 2.39 2.13 0.26 1.88 0.26 0.63 3.28 -0.26 3.15 0 2.38 
+-0.62 2.65 0.13 1.75 1.76 2.15 1.89 1.76 -1.25 0.63 1.39 1.64 0.39 1.37 -1.26 1.64 
+-2.41 1.39 -2.39 1.5 -0.87 2.15 -0.26 2.64 -0.5 2.65 0.63 1.52 1 2.89 1.52 2.02 
+1.25 1.63 1.76 1.65 0.25 1.89 1 2.14 -2.15 0.88 0.63 1.89 -0.63 1.25 1.15 1.15 
+0.38 1.89 1.89 0 1.63 0.37 1.39 0.89 2.64 -1.26 1.13 -2.52 -1.25 -1.26 -0.37 -2.78 
+-1.25 -2.64 S
+2538.93 1551.91 -1.15 -3.02 -1.37 -2.65 -0.26 -2.78 1.13 -2.52 2.02 -2.39 0 -2.78 0.5 -1.64 
+2.65 -0.87 1.76 -1.02 3.02 -0.37 2.39 1 2.28 1.52 2.25 1.52 2.15 1.49 3.26 0.89 
+3.02 -1.52 1.65 0.89 2.13 -1.75 -3.14 0 -1.63 -2.28 -0.63 -1.63 -3.02 -0.76 -3.02 0.13 
+-2.39 -1.02 -2.28 -1 -1.5 -1.75 0.87 -2.15 1.52 -2.02 1.89 -0.13 0.87 -2.52 1.02 -2.64 
+-1.13 -1.63 -1.89 0 -1.65 1.63 -1.99 0.89 -2.15 -0.89 -0.13 -2.89 -0.5 -1.89 0.89 -3.04 
+1.13 -2.64 -0.39 -2.89 -2 -1.75 -0.26 -2.41 -1.39 -1.13 -2 -0.37 -1.78 2.52 -2.63 -0.89 
+-2.52 -1.26 -1.89 -2.15 S
+2532.64 1497.35 -2.78 -0.73 -2.52 -1.79 -1.89 0.26 -2.13 0.63 1.26 1 -1.52 1.78 -1.13 -1.52 
+-2.15 -0.76 -1.23 -1 -1.52 -1.52 S
+2517.04 1493.71 -2.02 -0.13 0.26 1.78 -3.28 1.13 -0.26 1.26 -2.13 1.25 0.76 2.78 1 2.76 
+2.02 1.15 -0.26 1.76 -1.89 -0.26 -0.24 1.89 0.5 2.28 -0.26 1.75 -2.12 -0.63 -1.02 -1.89 
+-2.39 -0.63 -1.13 -1.52 -0.37 -1.76 0.24 -2.64 0.63 -2.26 1.75 -1.25 0.39 -2.65 1.39 -1.78 
+-1.02 -1 1.26 -1.25 -1.26 -1.39 -0.13 -1.89 -1.89 0.89 -2.26 -0.13 -1 -1.52 -3.28 -0.13 
+-2.02 -1 0.26 -2.28 1.5 -0.37 0.13 -1.39 -1.39 -1.39 -1.63 0.76 -0.13 2.78 S
+2495.77 1486.79 -1.12 -0.5 -0.5 -2.28 -0.76 -1.89 -1.13 -1.89 -1.52 -1.75 -2 -1.02 -2.41 -1.39 
+-2.13 -1 -0.63 -1.76 -0.26 -2.41 -1.5 -0.87 -1.89 -0.49 -1.65 -0.89 -0.63 -2.28 -2.12 0.52 
+-2.02 -0.52 -0.87 2.28 -2.28 0.13 1.26 -2.78 0.63 -3.28 -2.26 0 -2.65 -0.36 -1.13 1.88 
+-2.65 -0.39 -2.02 -0.87 -2.25 -0.39 0.13 -2.76 1.63 -1.02 2.02 0 2.14 -1.52 2.63 -0.37 
+0.63 -1 1.65 -1.88 -0.39 -1.39 1.02 -1.39 1.89 -1.39 1 -2.26 -0.37 -3.28 -0.39 -3.16 
+-0.37 -2.26 -0.76 -3.28 -1 -1.39 -2.14 -0.5 -2.39 0.63 -3.52 0.49 -3.54 -0.87 -2.76 1.13 
+-3.14 0.5 -3.14 -0.26 S
+2450.11 1435.37 -2.78 0.13 -3.02 1.65 -1.63 -2.29 -2.39 -0.24 -1.26 -1.39 1.5 -3.27 -0.63 -2.39 
+0.26 -1.78 0.37 -2.89 -0.5 -2.28 -1 -2.76 -0.75 -3.17 S
+2438.29 1414.71 -1.52 -1.88 -0.63 -2.76 0.89 -1.88 1.89 -0.13 -0.62 -2.78 -0.26 -2.78 -1 -2.26 
+2.78 0.24 2.25 -0.62 1.89 0.89 1.89 -0.13 2.13 -1.5 0.76 -1.39 1.39 -2.91 2.26 -1 
+2.38 2.25 2.29 0.89 2.75 0.37 2.64 -0.11 2.65 0 2.64 -0.13 1.63 2.38 2.26 2.78 
+2.28 0 0.74 2.26 1.52 1.89 2.65 1.79 -2.29 1.88 -0.24 2.39 1.37 2.25 2.28 2.78 
+2.13 3.28 2.14 1.02 2.52 0.87 2.39 2.02 2.15 1.39 S
+2491.25 1426.06 -0.52 3.28 -0.37 2.65 2.38 1.5 1.63 1.39 2.52 -0.75 2.91 -0.37 2.52 -1.26 
+2.39 0.5 1.63 2.02 2.28 1.52 2.38 1 0.87 1.89 1.65 1.02 2.12 -0.26 1.39 -0.89 
+2.52 -0.24 0.63 -2.64 1.39 -2.28 2.26 -2.13 0.63 -1.89 2.15 0.24 2.39 -2.13 1.99 -2.15 
+2.41 -1.13 2.76 0.24 2.15 -1.63 2 -1.25 1.52 -0.26 1.39 -2.15 3.02 -0.63 0.63 -1.89 
+1.5 -2.12 0.76 -2.28 -0.86 -1.5 -0.39 -2.41 0.26 -1.39 1.39 0.13 0.63 1.52 1.13 1.49 
+-0.39 2.28 2.15 1.26 -0.5 2.39 -2.39 1.15 0.24 2.76 0.76 2.02 2.02 -0.76 2.13 -0.11 
+0.76 -1.78 1.52 -0.24 S
+2557.55 1419.77 0.37 1.88 -2.52 2.02 -4.78 2.25 -2.78 1.02 -2.26 0.73 0.76 1.89 -3.54 -0.37 
+-2.75 1 -2.28 1.25 -1.26 1.29 -0.74 2.25 -1.39 2.15 -2.25 1.25 S
+2532.14 1438.41 -1.89 1.13 -2.02 1.63 -0.5 1.91 0.37 1.89 -1.26 1.26 0.13 1.89 1.63 0.14 
+1.76 1.63 2.15 -0.26 -0.5 -1.36 0.63 -1.91 1.26 -1.26 1.13 1.02 0.13 1.89 3.02 -1.52 
+0.76 -2.25 1.25 -1.26 0.24 -1.78 2.65 -1.13 1.25 -1.26 2.52 -0.13 3.51 -1.89 2.91 -2.02 
+2.62 -1 2.39 -1.52 2.41 -1.12 0.24 -2.39 0.26 -3.28 0.5 -2.78 2.13 -1 1.89 -2.14 
+1.39 -1.76 2.15 -2.52 2.25 -2.02 S
+2571.5 1413.21 3.41 0.13 3.15 0.87 1.87 -1.5 2.64 0 2.65 -1.52 -0.89 3.27 2.78 -0.5 
+-2.02 0.63 -0.76 1.75 -2 0.64 -1.89 1.13 -1.02 1.76 -1.89 1.52 -2 2.14 -0.39 3.28 
+2.65 -1.89 2.13 0.37 0.39 1.52 -1.52 1.13 2.14 0.37 0.76 1.65 2.13 -0.13 1.65 0.89 
+2.49 0 1.89 -1.65 2.02 0.89 -1.26 -2.15 0.39 -1.12 1.13 2.14 1.63 2.13 1.02 1.65 
+3.02 1.13 2.63 0.63 3.04 -1.26 -1.89 -1 0.74 -1.28 -2.39 -0.5 -2.75 -0.63 -2.52 -0.63 
+-2.39 -0.5 -1.26 -2.15 0.11 -3.39 3.41 1.26 -0.26 -1.65 1.25 -3.14 1.02 -1.13 -0.89 -0.76 
+-1.89 1.13 0.26 -2.02 S
+2594.04 1416.73 2.38 -0.5 2.02 -0.5 0.11 -1.89 2.15 -1.02 -0.89 -2.13 2.15 0.37 2.14 0.5 
+-0.39 -1.5 2.52 0.5 3.64 -1.75 2.39 -0.39 2.91 2.14 0 2.52 2.63 0.13 3.67 -0.62 
+1.63 -1.52 S
+2623.09 1411.07 2.39 -0.5 1.52 1.52 1.76 0.37 1.5 2.39 1.26 2.41 3.28 -0.63 1.39 0.38 
+1.39 2.52 0.87 -1.26 -0.76 -2.39 1.39 -1.64 -0.13 -2.02 1.25 -3.77 1.26 -2.65 -0.63 -2.76 
+0 -3.54 -0.24 -3.14 0.11 -3.02 0.13 -2.91 -0.76 -3.27 -0.87 -2.26 -3.28 -1.39 -2.52 -1.02 
+-1.89 1.02 -0.24 -2.02 -2.15 0.37 -0.24 2.02 -3.04 -0.24 -2.62 -1.02 -2.28 -2.02 -2 -1.89 
+-2.15 -1 S
+2616.79 1377.69 -3.02 0.88 -2.78 -0.5 -2.52 0.39 -2.12 0.63 -2.78 0 -2.89 -0.13 -2.52 -0.89 
+-1.76 2.15 -2.64 -0.5 -2.89 0.37 -2.91 0.13 -0.87 2.25 -2.89 0.52 -3.14 -0.13 -2.65 -0.76 
+-2.52 -1.39 -2.39 -2.78 -0.76 -2 1.13 -1.78 0.76 -2.26 -0.37 -2.52 -1.39 -1.65 -1.89 -1.12 
+-2.38 0.13 -2.78 1.63 -3.39 1.39 -4.17 0.5 -2.88 0.13 -2.52 1.13 -1.39 1.26 -0.37 2.91 
+-2.88 0.63 -2.91 1.13 -2.88 0.13 -3.65 0.13 -3.14 -0.25 -2.39 0.75 -2.91 1.26 -1 2.28 
+-2.02 -0.62 -2 0.73 -0.63 2.41 1.5 1.5 1.76 2.02 0.89 2.39 -0.62 2.28 -1.63 0.89 
+-1.02 3.14 1.39 1.13 S
+2526.97 1397.59 0.89 2.39 -2.91 -1.62 -1.39 2.78 -2.39 0.24 -2.12 -0.63 -1.76 -1.52 -2.28 -0.62 
+-3.52 0.76 -1.75 -1 -3.54 0.76 -1.89 -1.52 -2.25 -0.5 -1.5 0.76 -2.65 0.5 -2.78 -0.13 
+-1.76 -0.5 -2.39 -0.13 -2.26 -0.89 S
+2488.74 1396.7 -3.04 -0.63 -3.39 -0.36 -2.26 -1.52 -2.41 -1.75 -2.26 -0.5 -2.39 -0.5 -1.12 -1.78 
+-3.15 -1.39 -2.39 -0.5 -2.64 1.52 -1.89 -0.5 -3.14 0.11 -2.02 -0.37 -3.02 1.88 -0.99 1.89 
+-2.39 -0.24 -1.26 -2.78 -0.89 -2.38 -1.39 -2.29 -1.25 -2.25 -2.89 -1.65 -2.75 -0.89 -2.52 -1.25 
+-1.78 -2.26 -2.12 -1.76 -0.13 -1.78 -1.39 -2.39 -1.75 -1.26 -0.37 -4.66 1.13 -2.02 S
+2430.86 1362.43 -1.52 -3.14 -1.89 -2.25 -2.25 -2.29 -3.02 -1.13 -1.76 -2.25 -3.54 -1.15 -3.75 -0.11 
+-1.89 -2.28 -1.15 -2.78 -1.37 -1.76 -2.64 -1.12 -1.39 -1.39 -1.12 -2.65 -1.13 -2.38 -1.65 -3.15 
+-2.39 -2.15 -1.89 -2.26 -1.49 -2.14 -1.76 -3.67 -1.52 -2.25 -1.89 -1.26 -0.76 -2.78 -0.62 -2.76 
+1.89 -2.14 2.02 -2.65 -0.36 -2.78 -1.89 -1.75 1.5 -3.02 0.63 -2.91 -0.24 -2.88 -0.64 -2.78 
+-1.25 -2.78 -1.13 -2.76 -0.26 -3.8 -2.02 -2.12 -1.5 -2.28 -2.39 -1.26 2.13 -1.62 1.13 -2.91 
+0.13 -3.41 -0.63 -2.75 -0.26 -3.41 2.29 -1.62 2.12 -1.65 2.29 0.37 0.24 -3.88 2.28 -1.15 
+1.63 -2.39 1.25 -2.52 S
+2397.39 1250.46 2.26 -1.65 2.14 -2.52 1.76 -2.52 0.37 -2.76 0.39 -2.41 0.76 -2.52 2.63 -3.02 
+2.78 -1.52 2.75 -1.62 2.28 -2.41 3.78 -2.12 2.63 -3.04 2.28 -1.89 2.89 -2.02 3.28 -2.52 
+2.76 -1 2.39 -0.63 2.78 1.76 3.4 0.39 2.39 1.89 S
+2444.08 1218.34 3.38 0.24 3.28 0.5 2.38 0.39 2.78 0 4.28 -1.12 2.89 -0.39 3.27 -1.5 
+2.39 1.37 2.76 0.89 2.41 0.5 2.38 1.39 3.26 1.89 3.78 0 1.39 1.89 3.41 0.89 
+2.75 0.63 2.91 0 3.25 0.5 3.28 0 2.88 -0.87 2.78 -2.15 1.5 -3.78 1.02 -3.77 
+3.39 -1.79 2.78 0.13 2.89 0.5 2.78 0.63 2.89 0.13 S
+2523.2 1215.43 2.38 0.5 2.29 0.13 0.61 -2.78 2.28 -0.37 1.5 -2.25 2.02 -2.28 -0.87 -3.28 
+-0.39 -3.28 -0.99 -2.39 -1.39 -2.52 1.89 -0.76 -1.39 -2.39 0.13 -2.78 S
+2549.37 1271.62 1.5 -1.76 1.02 -2.38 1.89 -1.26 0.63 -1.78 1.49 -1.39 2.15 1.65 2.65 1.13 
+0.74 3.02 -2.76 -0.24 -3.14 0.13 -0.13 1.89 -1.52 1.89 -2.75 0.24 -1.76 -1.13 S
+2657.55 1191 1.02 -3.78 2.26 2.78 2.78 -0.63 3.64 0.63 2.26 2.25 -3.28 0 1.75 2.15 
+1.79 2.76 0.73 3.54 0.76 2.02 -1.49 2.65 -2.78 0.63 -2.76 -0.5 -3.14 -0.89 -3.14 -2.52 
+-0.63 -3.54 0.87 -2.25 -0.24 -2.39 -0.39 -2.9 S
+2644.59 1166.69 1.39 -2.78 1.89 -2.65 2.76 -2.02 1.39 -3.52 -0.5 -2.91 3.28 -0.62 -0.39 2.78 
+-1.37 2.78 -1.39 3.02 0.37 2.02 -2.25 1.63 -2.39 1.65 1.37 2.52 -0.99 3.14 -0.87 3.28 
+-1.52 3.14 -0.5 3.78 -1.39 -4.03 1 -2.65 -0.86 -3.02 1.49 -3.14 -0.5 -2.39 S
+2670.9 1134.81 0.37 -2.39 0.76 -2.28 -0.13 -2.39 1.76 -1.65 0.39 -2.25 1.76 0.63 1.26 -2.14 
+-0.26 3.77 -1.63 2.15 -0.39 3.28 0.13 3.28 1.13 3.53 -1.76 3.15 -0.37 2.75 -0.39 3.79 
+-2.26 1.63 -0.5 -1.52 1.26 -5.54 0 -1.02 0.76 -4.14 -1.89 -2.64 S
+2592.51 1441.43 2.39 -2.02 1.39 -2.02 2.52 -1.39 2.78 -0.37 S
+2601.58 1435.63 2.76 0.13 2.65 1.13 2.52 0.13 1.5 1.89 1.52 1.89 1.49 1.89 2.41 1.64 
+2.39 0.24 2.64 0.76 1.76 1 1.99 -1.37 2.65 0.74 2.14 -1.89 1.76 0.52 2.38 -0.75 
+1.52 0.87 2.25 -0.24 2.13 1.26 2.02 1.13 2.52 0.37 2.02 1.15 1.39 2.65 1.26 2.13 
+-0.39 1.88 -1.76 1.39 -1.75 2.02 -1.39 0.63 -3.02 0.5 -2.52 0.63 -1.89 1.02 -2.75 1.5 
+-2.52 0.76 -2.02 -0.11 -1.62 0.37 -1.89 0.5 -1.78 1.39 -1.26 -0.37 -1.87 -1.15 -2.15 -0.11 
+-1.25 -1.91 -1.63 -1 -0.76 -1.76 -1.52 -1.39 -1.76 0.89 -0.37 2.52 -1.52 0.5 -2.52 0.24 
+0.63 2.78 2.14 1.65 S
+2610.13 1466.25 -2.78 0.74 -1.75 -1.63 -3.28 0.63 0.26 2.02 -2.52 -0.63 -2.15 -0.63 -0.11 -2.39 
+-0.89 -2.28 -1.89 -1.39 1.26 -2.65 0 -2.02 -1.63 -1.37 -0.62 -2.15 0.75 -2.28 0.5 -2.75 
+-2.14 -1.02 0.5 -2.88 -1.13 -2.15 S
+2612.52 1467 1.63 -0.64 1.65 -1.49 2.25 -0.26 1.76 1.52 2.15 0.76 2.63 0.24 0.39 3.14 
+0.76 2.91 -1.65 0.5 -1.5 1.02 1.76 0.63 1.25 2.52 1.76 1.13 -1.52 0.5 -1.89 -1.13 
+-2.76 -1.52 -1.75 -2.64 -2.52 -1.26 -1.89 -2.13 -0.76 -2.28 -1.75 -1.52 S
+2659.31 1476.7 1.02 -1.63 1.89 -0.37 2.63 -2.14 1.02 -1.76 1.26 -2.15 2.89 -2.14 2.64 -1.5 
+2.25 -0.63 S
+2674.91 1464.37 2.39 -1.78 1.78 -1.89 3.02 -1.5 2.63 0.11 -1.63 -1.37 -0.26 -2.28 0.89 -3.02 
+0.63 -1.89 -1.63 -0.76 2 -3.04 1.65 -2.63 1.76 -2.54 2.26 -0.11 2.78 0.63 1.39 -1.15 
+3.38 -0.63 2.64 0.13 2.76 2.41 2.28 2.25 3.02 0.89 -0.76 2.02 -2.89 3.14 -2.02 3.64 
+-0.89 3.64 -1.75 -0.23 -1.76 1.88 -1 2.39 -2.64 -1.39 -1.39 1.65 -0.63 3.14 2.52 0.24 
+2.28 1.15 1 2.89 -2.52 1.02 -2.52 1 -2.14 1.76 -2 -1.62 -0.12 -2.39 1.63 -2.02 
+-2.75 2.02 -1.65 2.13 -0.11 2.78 -1.39 1 -2.28 -1.13 -2.75 0.89 -2.15 2.39 -3.02 2.02 
+-2.38 -0.12 -0.5 1.39 S
+2672.03 1481.49 2.26 1.13 1.89 0.39 -2.52 2.26 0.89 2.64 2.13 1.76 2.64 -0.24 1.65 1.39 
+1.87 1 -1.87 0.76 -1.78 2.02 -2.25 2.26 -3.02 1.25 -2.89 0.76 -1.65 -0.89 -2.02 -1 
+-1.89 -0.37 -1 -3.41 -1.88 -1.52 -1.39 -1.75 1.15 -1.26 -1.39 -1.13 0.13 -2.15 -2.64 -0.26 
+0.37 -2.52 0.39 -3.14 0.11 -2.78 S
+2695.92 1497.75 1.78 -2.52 1.37 -1.02 2.15 -3.02 2.13 1.26 2.02 1.39 1.13 -0.63 1.39 2.26 
+-0.13 3.8 -1.89 2.52 0.89 1.26 0 2.02 -2.25 1 -3.04 1 -1 1.26 -0.76 2.91 
+-0.37 2.25 -0.89 -2.62 -1.37 0.37 -1.26 -2.15 1.37 -1.62 -1.63 0.13 0.89 -2.52 S
+2696.44 1505.05 -1.52 -1.02 -0.63 -1 1.26 -2.28 0.37 -3.02 S
+2734.55 1533.64 2.52 -0.5 2.15 -1 -3.15 4.02 -1.78 1.39 0.52 2.28 -0.26 2.13 0.99 2.78 
+2.52 1.39 0.26 2.02 S
+2738.32 1548.13 2.65 0.5 1 2.39 -0.63 2.78 -1 -1.26 0 -1.89 -1.39 -0.89 -0.63 -1.63 S
+2738.32 1548.13 -1.52 -0.89 -1.89 -1.5 -1.37 -2.41 -1.52 -0.87 0.39 -2.91 0 -2.39 2.13 -3.53 S
+2737.96 1641.73 1.63 2.13 -1.12 2.78 -1.13 2.52 -3.41 2.41 -2.26 3.15 -1.39 2.88 -2.38 2.41 
+-3.65 3.14 -3.53 2.39 -3.39 1.39 -4.03 1.63 -3.52 1.78 -0.89 -0.89 1.78 -1.13 2.25 -1.02 
+3.02 -1.89 2.89 -1.88 2.91 -1.89 S
+2721.72 1661.63 3.02 -2.65 3.02 -2.78 2.26 -2.13 1.78 -2.14 2.26 -2.15 2.25 -2.26 0.63 -2.52 
+1.02 -3.28 S
+2562.83 1542.08 2.38 -1.26 2.02 -1.76 1.39 -2.02 1.13 0.37 0.13 1.52 2 0.63 0 1.89 
+-0.87 1.76 -1.75 1.39 -2.15 0.26 -1.76 0.89 -1.76 -0.52 -0.89 -1.76 0.13 -1.39 S
+2572.77 1549.26 1.63 -1 2.14 -0.13 1.26 -2.15 1.25 0.5 0.63 1.26 -1 1.65 -1.89 0.87 
+-1.52 1.39 -1.13 2.15 -2.15 0.63 -2.25 0.13 1.5 -0.89 1.52 0 0.89 -1.63 -1.65 -0.5 
+0.76 -2.28 S
+2714.93 1085.05 -0.39 -2.39 0 -2.91 0.89 -2.25 -0.13 -3.77 -0.24 -3.28 1.63 -2.65 1.76 -1.75 
+1.89 -1.15 S
+2720.33 1064.89 2.65 0.75 2.38 1.76 2.75 1.25 2.02 -0.24 2.28 3.15 1.24 2.52 1.39 3.02 
+1.25 2.15 0.89 2.52 0.87 2.52 0.89 2.52 1.13 2.52 1.39 2.65 1.13 2.64 0.89 2.52 
+1.26 2.65 1.13 3.14 1.39 3.17 1.63 3.64 0.87 3.02 0.89 3.67 0.26 2.52 1.37 1.63 
+0.76 2.65 0 4.9 1.89 -2.12 2.02 3.38 -0.13 2.91 -0.5 4.41 -1 3.41 -0.26 3.41 
+-1.12 2.75 -1.65 2.65 -2.25 -2.89 -0.13 -3.04 -0.63 -2.64 -2.26 -1.37 -2.65 -1.02 0.26 -2.89 
+-1.89 -1.78 0.24 -2.52 -2.12 -0.37 -2.52 -3.28 -2.26 -1.89 -2.78 -1.89 -2.64 -1.52 -2.75 -1.89 
+-2.29 -0.37 -1.75 -4.66 S
+2723.85 1114.91 -2 -3.15 0 -3.28 1 -3.27 -0.37 -2.52 0.87 -3.14 -0.63 -2.52 -2.26 -3.17 
+-1.13 -2.62 -2.14 -2.54 -2.25 -3.64 S
+2776.82 1099.66 0.5 -2 2.02 0.37 0.63 1.13 -1.02 1.25 -2.13 -0.75 S
+2788.02 1104.58 2.13 0.37 0.39 2.14 -1.13 0.76 -1.39 -3.28 S
+2759.59 1303.5 1.88 -0.5 1.89 0.74 2 2.41 -2 -0.26 -2.52 -0.37 -1.26 -2.02 S
+2764 934.27 -0.76 -2.52 -2.78 -2.41 2.64 0.89 0.37 -1.12 1.78 1.39 1.37 -0.13 2.15 2.02 
+-2.39 -0.39 -1.52 -0.37 0 1.5 0.39 2.02 -1.25 -0.87 S
+2916.08 1408.05 2.02 -5.55 1.63 -5.66 S
+2952.45 1340.91 2.63 -0.63 S
+2959.61 1334.09 1.76 -1.5 2.15 -2.02 S
+2963.52 1330.58 -0.76 3.28 -2.65 2.38 -0.5 -2.14 S
+2968.55 1320.25 1.13 -3.78 1.13 -1.26 1 1.63 -2.52 4.8 -0.74 -1.39 S
+2883 1332.46 1.14 -3.9 0.99 -2.65 1.89 -4.16 1.75 -2.13 1.65 1 2 2.78 1.02 3.28 
+-0.26 3.91 -1.13 4.03 -2.02 1.89 -2.02 2.75 -2.26 2.52 -2.39 2.41 -2.89 0.63 1.5 -2.28 
+-0.13 -3.39 0.63 -3.66 0.52 -3.02 S
+2927.54 1511.35 2 -2.78 2.02 -2.39 1.89 0.63 0.49 1.88 -0.49 4.04 -1.26 3.64 -2.13 4.17 
+-1.39 3.78 -1.63 2.13 -0.52 -2.39 -0.62 -2.25 0 -2.54 1.02 -4.41 0.63 -3.52 S
+2909.92 1594.75 3.02 -2.91 3.41 -2.52 0.87 0.89 2.41 -1.65 -3.54 4.3 S
+2916.08 1592.86 -2.65 4.27 -3.13 3.78 -3.66 4.17 -3.26 4.14 -3.02 2.78 -0.89 -1.02 1.89 -3.91 
+2.75 -4.14 2.65 -3.54 3.14 -4.64 S
+2834.31 1688.34 2.78 -0.52 -1.02 2.14 -2.39 1.65 1.63 0.11 2.91 -1.5 2.52 -2.52 2.75 -1.52 
+2.91 -1.52 -0.26 2.41 -3.78 4.41 -3.78 2.13 -4.14 3.04 -3.52 2.76 -2.14 0 -2.65 0.89 
+1.26 -2.52 -1.26 0 1.89 -2.91 3.41 -3.14 2.89 -3.39 S
+2825.89 1702.95 3.02 -0.63 -0.26 2.02 -2.75 1.89 -2.28 1.63 -2.75 3.14 0.76 0.89 -3.15 2.28 
+-2.78 2.52 -2.12 0.5 0.5 -2.15 2.13 -2.75 3.14 -2.28 0.89 -2.25 2.76 -1.91 2.91 -2.89 S
+2823.37 1699.04 2.76 -1.25 S
+2826.13 1697.79 -2.13 3.14 -0.75 2.28 -3.28 2.75 -2.25 3.15 -3.02 3.41 -1.76 2.39 -3.64 3.54 
+-0.76 2.02 -2.02 2.89 4.02 -2.76 2.91 -1.15 2.02 0.13 -0.52 1.52 -5.04 3.52 -4.91 4.04 
+-1.49 -0.5 -3.15 2.15 1 1.5 -3.14 4.17 -5.77 4.14 2.88 -0.24 -5.66 2.64 -2.02 2.52 
+-2.76 1.63 4.28 -1.5 -4.14 3.38 -2.65 1.02 -3.14 2.13 -2.15 -0.11 -4.38 1.39 -2.78 1.5 
+-4.14 1.25 -3.02 0.26 -2.41 1 -1.88 2.02 -2.76 0.5 -3.64 1.78 -4.27 1 -2.52 -0.26 
+-1.26 -1.13 -2.39 0 -2.52 0.63 1.26 -2.26 2.52 -0.62 -1.39 1.39 1.63 -0.26 1.75 -1.76 
+-0.24 -1.15 4.64 -1.88 S
+2749.26 1754.97 2.28 -0.37 2.63 -0.5 3.41 -0.5 3.52 -1.39 4.16 -2.02 4.02 -1.52 3.77 -2.78 
+3.78 -1.76 3.28 -2.39 3.38 -3.15 3.91 -3.28 -2.28 0.63 -3.51 1.63 3.27 -2.52 3.15 -1.25 
+4.01 -2.39 3.54 -2.38 2.89 -1.02 2.25 -2.02 -0.24 -1.39 2.39 -3.15 2.88 -3.52 2.91 -3.91 
+1.5 -2.52 4.04 -3.14 3.77 -3.54 2.89 -2.78 2.52 -3.02 S
+2737.33 1755.99 2.52 -0.63 0.63 0.76 3.88 -0.52 -3.77 2.4 -3.39 2.52 0.13 -1.52 0.5 -1.62 
+-1.89 0.5 -1.39 1.39 0.13 0.87 -2.89 1.79 -2.52 2.12 -0.76 2.52 -1.76 2.91 -2.4 0.37 
+-3.76 1.52 -4.29 2.02 -2.13 2.26 -4.28 2.28 -3.91 1.76 S
+2705.99 1779.67 3.28 -2.15 -1.52 0 0.13 -0.87 -4.54 1.13 5.04 -2.39 1.65 -1.89 1.63 -2.28 
+0.37 -2.02 -0.11 -1.26 -1.26 -1.26 -0.39 -1.39 3.28 -1.63 2.13 0.89 3.04 -0.52 2.52 -0.37 
+2.89 -1.39 1.76 0.13 2.02 -0.39 2.02 -2 1.13 -1.65 1.75 0.13 4.54 -2.52 S
+2886.52 1649.02 -2.38 2.15 -1.65 2.65 -1.89 1.64 S
+2869.4 1667.69 -2.49 2.88 S
+2705.12 1778.41 -3.15 1.26 -3.04 1.13 S
+2694.79 1783.45 -4.77 2.02 -5.16 2.15 -5.66 1.89 3.91 -1.52 1.52 -1.39 4.41 -1.63 5.77 -1.52 S
+2674.91 1791.64 -1.99 1 -6.18 1.63 3.41 -1.37 4.77 -1.26 S
+2657.18 1797.44 -3.91 0.87 S
+2622.83 1801.34 1.26 0.5 -4.28 1.26 S
+2619.81 1803.11 -2.64 0 -1 -0.5 3.52 -0.39 3.14 -0.87 S
+2668.51 1748.54 0.5 1.02 -4.04 1.13 0.63 -1.63 2.91 -0.52 S
+2553.52 1794.92 -5.91 0 0 -1.02 3.02 -0.12 2.89 1.15 S
+2663.21 1761.92 3.14 0.73 3.52 -0.11 3.04 0.37 0.74 1.13 2.28 0.52 3.25 0 2.78 0.5 
+3.02 0.24 2.88 -0.11 2.65 -0.52 0.89 0.63 2.39 0.76 3.28 -0.5 3.51 0 3.65 -0.89 
+3.14 0.89 -4.14 0.89 -2.91 1.26 -1.13 1.39 0.26 1.49 -3.02 0 0.38 -1.26 -1.76 -0.37 
+-0.13 -1.15 -1.39 -0.63 -3.39 0.13 -3.54 0.63 -2.39 0.13 -2.76 1.02 -1.89 1.49 -0.89 2.02 
+-1.89 -0.75 -1.89 -1.13 -1.99 -1.13 S
+2672.92 1769.59 -2.28 -0.89 -2.26 -0.76 -2.02 -1.13 -3.28 -0.26 -2.88 -0.37 -2.25 -0.89 -2.65 -0.74 
+-1 -1.02 1.87 -1 1.65 1 2.25 -0.37 3.15 -1.25 S
+2477.65 1755.23 3.41 1.63 -0.37 1.15 -3.04 -0.62 S
+2477.65 1757.38 -2.12 0.37 -4.41 -1.13 2.15 -1.39 4.38 0 S
+2555.77 1725.37 -0.37 1.65 -2.76 2.13 -1.65 -0.87 0 -2.28 2.38 -1 2.39 0.37 S
+2552.52 1723.11 1.5 1 -1.5 0.5 -1.25 -0.74 1.25 -0.76 S
+2536.79 1724.87 1 2.14 -1.76 2.65 -2.12 0.87 -2.52 -1 2.26 -1.76 2.52 -1.78 0.63 -1.13 S
+2551.5 1717.82 1.39 2.02 -1.14 1.39 -2.64 0.76 -3.02 0.87 -0.37 1.26 -2.91 0.26 -3.14 -0.13 S
+2539.67 1724.24 -1.13 -0.75 0.76 -1.26 1 -0.63 0.13 -2.02 3.41 0.39 0.49 -2.91 3.15 -0.62 
+4.02 1.39 S
+2560.57 1676.63 -1.89 1.75 -0.5 2.02 -1.52 1.75 -3.38 0 -2.15 -1 -1.39 -1.39 1.39 -0.89 
+3.02 -0.76 3.52 -0.87 2.91 -0.62 S
+2546.09 1670.83 2.78 0.13 1.26 1.63 2.89 0.37 1 1.78 1.02 1.39 -0.76 1.37 -2.89 -0.24 
+-2.91 0.76 -2.13 -0.76 -1.02 -1.25 -2.25 -0.39 -1.76 0.52 -1.65 -0.76 -1.63 -0.52 2.26 -1.89 
+2.91 -0.63 2.89 -1.5 S
+2570.12 1610.61 3.54 -0.5 3.02 -0.39 2.88 0.89 2.65 1.39 0.13 1.52 -3.4 -0.13 -2.89 1 
+-2.78 1.65 -2.26 2 -1.39 2.15 -1.13 2.38 S
+2568.49 1622.57 -1.25 2.29 -1.26 2.38 -1 2.52 -1.26 2.29 -0.52 2.52 -0.5 2.52 0.5 2.15 
+-0.11 2.39 -0.39 2.15 -2.88 1.63 -1.89 -0.63 0.26 -2.39 1.25 -1.65 -0.52 -2.39 -1.76 -1.76 
+0.13 -2.78 0.76 -2.15 0.63 -1.37 -0.5 -2.54 1.75 -1.13 1.89 -2.88 0.87 -2.65 2.15 -0.76 
+0 -1.89 1.39 -2.78 1.89 -1 -0.26 -2.02 2.26 -2.02 S
+2578.17 1595.88 1.39 2.02 -0.87 1.76 -3.4 0.13 0.36 -2.02 2.52 -1.89 S
+2532.25 1645.5 1.15 1.14 -0.63 1.88 S
+2532.77 1648.52 1.89 1.15 -0.39 0.87 -2.65 1.26 S
+2531.62 1651.8 1.39 0.76 -0.24 1.26 -2.91 0.76 0.63 -1.76 1.13 -1.02 S
+2531.62 1651.8 -0.63 -2.02 S
+2530.99 1649.79 1.78 -1.26 S
+2532.77 1648.52 -1.39 -1.13 0.87 -1.89 S
+2527.47 1646.77 2.26 0.63 0.52 1.76 -1.65 0.26 -1.13 1.63 -2.52 1.15 0.63 -2.15 2.15 -1.26 
+-1.02 -0.89 0.76 -1.13 S
+2529.62 1644.25 1.13 1.25 -1.89 0.14 0.76 -1.39 S
+2521.57 1640.84 1.5 0 1.02 0.76 1.13 -1 1.76 0.37 0.89 1.13 -1.39 1.02 -0.39 1.5 
+-1.25 0 -0.5 -2.02 -1 0.63 -1.52 0.13 -0.24 -2.52 S
+2490.37 1626.48 0.49 -2 1.52 -2.91 2.63 -2.15 2.41 0.39 -1.39 -1.64 1 -2.02 2.39 -2.13 
+3.4 -2.14 -0.39 2.52 0.13 2.64 0.13 2.78 -0.62 1.89 1.13 1.39 1.39 -2.02 1.89 -1.02 
+0 -2.64 2.78 -0.24 S
+2509.25 1617.17 1.63 3.14 -2.88 1 -2.02 1.25 -1.75 1.79 -3.64 0.86 -1.39 2.52 3.25 -1.26 
+3.67 0.13 1.36 1.75 0.26 2.41 -0.89 1.39 -2.38 -0.26 -2.25 0.26 -1.52 -1.65 -1.75 1.26 
+-1.63 -1.63 0.63 -1.52 -2.02 0.13 -0.26 -1.89 -2.13 0.5 -3.14 -0.89 S
+2456.64 1536.16 1.39 -0.5 1.89 1.89 -2.64 -0.24 -0.63 -1.15 S
+2473 1525.71 1 1 -0.11 -2.28 S
+2467.73 1520.16 1.5 -1.26 S
+2454.51 1512.21 2.89 2.15 1.02 2.64 -2.78 -1.62 -0.26 -1.79 -0.87 -1.39 S
+2510.37 1501.52 1.5 -2.14 2.02 0.26 0 1.76 -1.76 0.89 -1.76 -0.76 S
+2514.65 1503.14 1 -2.52 2.02 -0.24 1.75 1 -1 1.02 1.26 1.37 S
+2519.68 1503.78 -1.02 2.02 -1.99 -1.26 -2.02 -1.39 S
+2515.15 1498.5 1.26 -1.25 1.63 0.74 0.76 0.89 -1.76 0.39 -1.89 -0.76 S
+2535.16 1515.75 1.13 -2.15 1.26 1.26 -0.62 2.28 0.99 1.39 -2.12 -1.15 -0.63 -1.63 S
+2545.33 1522.18 1.39 -1 1.13 1.37 1.13 1.39 -2.62 0 -1.02 -1.76 S
+2545.83 1525.33 0.63 -0.76 1.52 1.02 -2.02 0.88 -0.13 -1.13 S
+2456.77 1471.42 1.75 -0.52 2.28 1.65 3.15 -0.89 0.74 2.15 2.52 0.5 2.78 -1 2.38 1.26 
+2.78 -0.39 2.89 0 3.02 0.89 1.89 2.25 -3.15 0.39 1.52 2.39 2.13 1.39 0.75 2.28 
+-0.89 1.76 -2.13 0.87 -1.39 0 -1.25 -1.37 -0.89 0.87 1.15 1.39 S
+2478.8 1487.29 -0.52 1.89 -0.87 1.26 -0.63 1.76 -0.75 2.41 -2.39 0.87 -1 2.28 -0.52 2.64 
+-1.12 1.76 -2.12 1 -2.28 0 1.76 1.39 1.39 1.78 1.13 2.13 0.89 1.78 -0.26 1.89 
+-2.62 0 -2.15 0.11 -2.39 -0.36 1.26 2.15 2.64 1.75 -0.39 1.26 -2.89 -0.26 -2.88 0 
+-1.26 -2.12 -1.39 -1.65 -0.5 -1.75 -1.52 0.89 -1.12 -0.76 1.25 -1.39 2.13 -0.13 -1.63 -2.65 
+-0.13 -1.89 2.02 0.89 -0.5 -2.28 -2.38 -1.63 2.02 -0.13 -0.13 -1.76 1.76 2.13 1.25 -1.89 
+-1.52 -3.02 1.02 -1.89 2.52 0.89 2.62 0.73 -1.26 -2.26 1.39 -1.75 1.75 0 -1.25 -2.28 
+-0.11 -2.26 -2.02 -0.39 S
+2465.08 1488.41 -3.28 0.52 0.5 -1.39 -1.26 -1.78 2.15 0 -0.26 -2.76 -1.75 -0.89 -2.26 -1.26 
+0.5 -1.39 2.52 0.39 1.76 -0.52 1.75 -1.39 2.52 1.29 -1.39 -2.28 -1.76 0.13 -2.12 0 
+-1.65 -2.15 -1.99 -1.75 -2.28 -1.76 S
+2440.54 1483.88 0.52 -2.26 1.63 -1.52 3.14 0.13 2.76 0.76 2.91 1.63 3.38 0.26 0.76 2.25 
+0.75 2.28 0 2.65 -0.5 2.39 2.52 1.65 -0.39 2.75 -0.99 1.75 -2.15 0.65 -2.52 0.63 
+-2.63 -0.76 -1.65 -2.15 1.52 -1 -1.26 -1.26 -2.02 0.11 -2.25 0.13 -1.15 -1.62 1.64 -1.15 
+-1.89 -1.12 1.5 -2.02 1.78 -0.11 -2.14 -2.54 -1.26 -2.63 -2.02 0.11 S
+2514.52 1430.34 -0.26 -2.39 0.64 -1.75 2.4 -2.15 0.38 2.78 0.5 1.89 -0.5 1.89 -0.26 2.78 
+-0.87 -1.91 -2.02 -1.12 S
+2513.13 1421.4 0.13 -1.89 1.39 -2.15 0.13 -2.89 -0.13 -2.78 2.02 -1.76 1.37 2.02 1.75 0.13 
+0.63 2.25 0 2.39 -0.11 2.41 -0.63 2.26 -2.02 2.14 -2.02 -2.02 -1.39 -0.5 -1.12 0.37 S
+2533.14 1406.04 1.89 -2.15 1.5 0.13 3.15 -1.52 2.41 -0.24 1.76 -1.78 3.02 -0.11 0.5 1.89 
+-1 1.76 0.24 2.91 1.26 2.52 -2.89 -1.25 -3.28 -0.76 -2.52 -0.26 -2.02 0.76 -2.26 -0.26 
+-1.75 -1.62 S
+2572.13 1409.94 2.65 -1.52 0.13 -2.39 1 -1.26 1.89 0.24 1.49 -1.63 1.02 2.15 S
+2580.32 1405.54 2.26 -1.52 -1.76 3.02 -1.26 2.28 2.26 -0.13 -2.13 2.52 -2.39 1.02 -2.39 0.63 
+-2.02 -1.39 -0.76 -2.02 S
+2585.98 1397.33 2.25 0.39 2.38 -0.13 1.76 -0.76 2.91 0.76 3.02 0.76 -0.12 1.63 -2.02 -1.39 
+-0.24 1.52 -2.52 -0.76 -2.14 0.39 -2.02 -0.89 -0.63 0.89 -2.75 0 0.13 -2.41 S
+2625.11 1404.51 1.26 -1.62 2.63 0.13 2.02 1.13 0.37 1.5 1.78 0.39 -1.15 1.25 1.78 3.02 
+-2.15 -1.62 -2.02 -1.02 -1.75 -1 -0.76 -1.12 -2 -1.02 S
+2487.59 1412.96 2.14 -0.37 1.63 -1.26 1.39 2.25 -2.25 1.26 -2.91 -1.89 S
+2603.21 1406.4 0.76 -1.49 1.13 1.39 0.24 2.26 -2.13 -2.15 S
+2591.52 1421.89 0.87 0.76 0.39 -1.39 S
+2592.51 1417.99 0.39 -1.37 S
+2351.61 1420.77 1.75 -1.39 S
+2362.54 1413.98 2.91 -0.63 S
+2394.12 1354.25 1.02 -2.02 1.36 0.89 1.02 2.26 -1.76 -1 -1.65 -0.13 S
+2398.92 1351.87 0.5 -1.52 1.75 0.39 0 1.37 -1.52 0.63 -0.74 -0.87 S
+2406.71 1351.61 2.13 0.76 0.39 3.28 S
+2409.22 1355.64 1.63 0.37 0.63 1.39 -1.39 -0.5 -0.87 -1.25 S
+2409.22 1355.64 -2.39 -2.65 -0.12 -1.39 S
+2526.08 1209.39 1.52 -0.39 0.87 1.89 -1.37 0.89 -1.02 -2.39 S
+2974.46 1031.88 0.13 -1 0.13 -0.89 -0.89 -2.75 -0.89 -2.64 0.13 -1.13 0.13 -1.02 0.5 -0.26 
+0.63 -0.11 0.5 -0.26 0.63 -0.26 0.63 -0.24 0.63 -0.13 S
+2976.71 1021.18 0.89 1.13 1 1.25 1.39 1.65 1.39 1.5 0.5 -0.11 0.37 -0.13 1.52 2.14 
+1.63 2.13 0.52 0.26 0.63 0.37 0.87 0.26 0.89 0.24 0.63 -0.24 0.5 -0.26 0.63 -0.24 
+0.5 -0.26 0.63 -0.37 0.63 -0.26 0.5 -0.26 0.5 -0.24 0.39 -0.25 0.5 -0.24 1.39 1.63 
+1.39 1.76 1.5 2.9 1.52 2.89 1.13 0.63 1.13 0.76 0.89 0.63 1 0.76 1.52 1.75 
+1.49 1.79 0.89 0.74 0.74 0.76 0.39 -0.76 0.37 -0.87 0.76 0.24 0.63 0.13 0.76 0.39 
+0.63 0.24 2.52 2.52 0.87 0.76 0.89 0.76 0.76 0.25 0.74 0.24 0.52 -0.36 0.5 -0.39 
+0.37 -0.37 S
+3018.99 1049.02 0.39 -0.26 0.24 -0.37 0.39 -0.26 -0.13 -1.49 -0.26 -1.52 -0.5 -2.02 -0.63 -1.89 
+0.37 -0.5 0.39 -0.5 -0.26 -1.65 -0.24 -1.63 -0.52 -3.04 -0.74 -2.12 -0.63 -2.15 -1.65 -2.65 
+-1.63 -2.78 -1.25 -4.77 -1.76 -3.54 -1.89 -3.64 -1.52 -3.14 -1.63 -3.15 -1.62 -3.04 -1.52 -2.88 
+-1.63 -3.14 -1.79 -3.15 1.79 2.52 1.75 2.52 1.5 1.63 1.39 1.78 1.39 1.76 1.5 1.75 
+1.15 1.13 1.13 1.02 2.02 3.28 1.99 3.28 1.52 1.99 1.39 2.02 -3.03 -5.53 -3.02 -5.42 
+-1.76 -2.65 -1.76 -2.38 -2.15 -3.41 -2.13 -3.38 -1.39 -2.15 -1.39 -2.28 -0.74 -0.5 -0.76 -0.62 S
+2999.37 990.06 -1.12 -1.5 -1.02 -1.64 0.76 0 0 -1.26 1.75 2.65 1.89 2.64 2.15 3.15 
+2.12 3.4 -1.75 -3.54 -1.75 -3.4 -1.52 -2.52 -1.5 -2.65 -1.76 -2.63 -1.89 -2.64 -1.13 -1.26 
+-1.15 -1.39 0.39 -0.39 0.37 -0.5 -1.63 -3.14 -1.75 -3.15 -4.04 -6.81 -2.02 -3.28 -2.12 -3.25 
+-1.13 -1.26 -1.26 -1.39 -1.65 -2.52 -1.63 -2.54 -1.88 -2.75 -1.89 -2.91 -1.89 -2.89 -1.89 -3.04 
+-0.76 -1.49 -0.73 -1.52 -1.89 -2.78 -2.02 -2.64 0.76 0.39 0.63 0.37 -0.89 -1.5 -0.75 -1.65 
+-0.87 -1.49 -0.76 -1.39 -1.76 -2.52 -1.75 -2.64 -1.26 -1.89 -1.39 -2.02 1.39 0.99 S
+2957.36 915.86 1.26 0.89 0.99 0.63 0.89 0.63 2 1.89 1.89 1.76 -3.52 -4.27 -3.52 -4.41 
+0.74 -0.26 -2.63 -2.88 -2.52 -2.91 -2.02 -2.78 -2.02 -2.64 -2.02 -2.76 -2.12 -2.64 2.38 2.13 
+2.39 2.14 0.76 0.5 0.89 0.52 1.13 0.63 1.26 0.63 0.37 0.11 0.39 0.14 -0.39 -1 
+-0.37 -1.02 -1.13 -2 -1.25 -2.02 0.63 0.24 0.63 0.26 2.5 2.52 2.41 2.64 2.63 3.02 
+2.78 3.14 2.75 3.15 2.91 3.17 3.02 3.52 3.02 3.54 2.52 2.88 2.65 2.91 S
+2979.62 927.84 3.26 3.77 3.28 4.04 3.28 4.02 1.89 2.28 1.76 2.26 1.89 2.41 1.52 1.99 
+1.5 2.02 S
+2997.98 950.63 1.52 2.02 1.37 1.76 1.39 1.78 1.52 1.89 1.89 1.89 1.49 2.02 1.52 2.02 
+1.5 2.12 1.39 2.02 1.52 2.02 1.38 2.15 1.64 2.25 1.5 2.41 1.65 2.39 1.89 2.89 
+1.89 3.04 1.88 3.02 1.63 2.78 1.63 2.88 1.65 2.78 2.13 3.52 2.02 3.54 2.15 3.53 
+1.89 3.39 1.75 3.41 1.89 3.41 1.89 3.52 1.75 3.41 1.76 3.54 1.13 2.13 2.25 4.3 
+1.89 4.14 1.78 4.04 1.89 4.04 2 4.77 2.02 4.8 2.02 4.9 1.63 4.04 1.65 4.17 
+1.63 4.14 3.52 9.33 1.75 4.64 1.26 3.41 1.13 3.27 1.25 3.41 S
+3075.84 1097.53 1.52 4.91 1.63 4.92 1.52 4.91 1 3.64 1.02 3.54 1 3.64 1.13 4.41 
+1.13 4.3 1.02 4.27 1 4.28 1.02 4.17 0.88 4.27 0.25 1.52 0.13 1.52 0.11 1.5 
+0.64 2.78 0.5 2.78 0.52 2.75 0.63 3.28 0.73 3.27 0.63 3.28 0.75 3.91 0.89 3.91 
+0.76 3.91 0.11 2.02 0.26 2.02 0.13 1.89 0.36 2.65 0.26 2.64 0.24 2.65 -0.5 -2.65 
+-1.25 -5.29 0.63 3.78 0.5 3.77 0.52 3.78 0.63 3.8 0.37 3.77 0.5 3.65 0.26 2.52 
+0.37 2.52 0.26 2.52 0 1.78 0.11 1.76 0 1.63 0.52 4.54 0.5 4.66 0 2.28 
+-0.13 2.39 S
+3100.89 1238.24 -0.13 3.28 0 3.14 0.13 4.04 0 4.01 -0.26 0.39 -0.37 0.37 -0.26 2.78 
+-0.24 2.78 0.13 3.28 0.11 3.26 0 3.16 -0.11 3.02 0.24 5.29 0.26 5.17 0 4.9 
+-0.13 4.93 -0.13 2.89 -0.24 2.78 -0.26 3.64 -0.37 3.41 -0.13 5.79 -0.13 5.54 -0.37 4.54 
+-0.39 4.53 -0.24 4.8 -0.39 4.77 -0.99 4.29 -0.37 2.39 -0.52 2.39 -0.23 -2.75 -0.13 -2.78 
+-0.37 0.89 -0.39 0.74 -0.49 4.79 -0.64 4.91 -0.5 4.41 -0.49 4.43 -0.76 4.54 -0.76 4.4 
+-0.76 3.64 -0.73 3.65 -0.76 3.91 -0.76 3.79 -0.89 4.78 -0.86 4.66 -0.64 0.89 -0.49 0.87 
+0.49 -4.41 S
+3085.54 1389.15 0.38 -4.54 0.89 -4.79 0.76 -4.77 0.24 -3.78 0.13 -3.66 0.63 -4.14 0.5 -4.3 
+0.39 -2.76 0.24 -2.78 0.49 -5.16 0.52 -5.04 0.24 -4.53 0.26 -4.41 0.37 -4.41 0.26 -4.29 
+0.37 -4.14 0.26 -4.17 0.11 -4.54 0.13 -4.54 0 -9.07 -0.13 -4.77 -0.11 -4.93 -0.26 -4.04 
+-0.26 -4.14 -0.11 -4.27 -0.13 -4.43 -0.5 -2.89 -0.63 -2.91 -0.39 -1.39 -0.49 -1.37 -0.5 2.64 
+-0.37 2.63 -0.12 3.28 -0.13 3.14 -0.5 0.65 -0.39 0.63 -0.63 1.13 -0.5 1.13 -0.24 1.52 
+-0.39 1.5 -0.37 2.02 -0.39 1.89 -0.74 -1.26 -0.63 -1.13 -0.26 3.65 -0.13 3.67 -0.5 0.5 
+-0.37 0.63 S
+3082.53 1292.41 -0.49 1.89 -0.39 1.76 0.13 3.41 0 3.54 0.13 3.02 0.14 2.89 -0.14 3.27 
+-0.12 3.15 -0.26 3.8 -0.24 3.78 1 2.25 -0.13 4.04 -0.24 4.04 0 3.78 -0.12 3.78 
+-0.63 1.52 -0.63 1.37 0 -9.3 -1 5.04 -0.39 -2.39 -0.37 -2.39 -0.63 -0.12 -0.62 0 S
+3077.5 1334.48 -0.63 -0.13 -0.63 0 -0.63 -0.63 -0.5 -0.63 -0.76 1.26 -0.63 1.39 -0.76 -0.26 
+-0.76 -0.37 0.63 -2.14 0.52 -2.02 0.11 -4.04 0 -3.91 -0.63 -1.36 -0.63 -1.26 -0.63 -1.39 
+-0.74 -1.26 -0.39 -3.9 -0.5 -3.91 0 -3.28 -0.13 -3.28 0.26 -2.38 0.24 -2.52 S
+3070.31 1298.46 -0.5 -1.52 -0.5 -1.39 -0.13 -3.14 -0.13 -3.02 -0.37 -3.41 -0.5 -3.54 0.63 -1.39 
+0.5 -1.5 -0.13 -3.02 -0.24 -3.17 -0.63 1.39 -0.63 1.26 -0.52 -0.63 -0.5 -0.63 -0.63 -2.88 
+-0.63 -2.91 0.13 3.28 0 3.28 -0.37 1.65 -0.5 1.63 -0.52 2.14 -0.5 2.02 -0.62 -0.39 
+-0.76 -0.5 -0.24 -2.38 -0.39 -2.52 -0.5 -1.28 -0.63 -1.26 -0.24 -2.39 -0.26 -2.39 -0.76 -1.02 
+-0.87 -0.87 -0.13 -2.78 -0.13 -2.64 -0.76 -3.28 -0.63 -3.28 -0.24 -3.28 -0.26 -3.28 -0.5 -2.88 
+-0.37 -2.91 -0.76 0.76 -0.63 0.89 -0.39 -3.28 -0.5 -3.27 0.39 -1.63 0.24 -1.65 -0.76 -3.52 
+-0.74 -3.67 -0.13 2.41 S
+3052.08 1230.68 -0.12 2.26 -0.14 3.28 -0.12 3.14 -0.74 -3.52 -0.76 -3.54 -0.76 -3.02 -0.75 -2.9 
+-0.14 -2.39 -0.11 -2.38 -0.13 -2.02 -0.12 -1.88 -0.76 -2.91 -0.87 -2.88 -0.63 -3.28 -0.76 -3.28 
+-0.76 -2.28 -0.76 -2.39 -0.73 -2.39 -0.89 -2.28 -0.89 -1 -0.87 -1.02 -1 -1.39 -1.02 -1.5 
+-0.76 -0.5 -0.87 -0.52 -0.89 -2.26 -0.87 -2.14 -0.76 -0.5 -0.76 -0.37 -1 -2.28 -1.02 -2.38 
+-0.74 -0.39 -1.52 -0.73 -0.75 -0.39 -0.87 -1.25 -0.89 -1.26 -0.89 -1.63 -0.86 -1.78 -0.89 -2.52 
+-1 -2.52 -0.76 -1.26 -0.87 -1.13 -2.02 -3.41 -1.65 -4.8 0.26 5.06 -1.62 -4.8 -1.52 -4.67 
+-0.5 -4.14 S
+3014.21 1148.54 -1 -4.53 -2.41 -4.93 -1.12 -5.16 -1.13 -6.03 -0.5 -4.3 -0.63 -4.14 -1.89 -6.3 
+-0.12 3.39 0.63 4.17 -2.02 -9.45 -0.11 4.02 -1.15 -5.17 0 -3.28 -1.62 -6.92 -0.76 -2.25 
+-0.76 -2.15 -0.37 -2.52 -0.37 -2.64 -0.52 -2.52 -0.63 -2.65 -0.74 -2.28 -0.76 -2.12 -1 -2.78 
+-1.02 -2.65 -0.87 -2.64 -1.79 -5.29 -0.73 -2.63 -0.76 -2.15 -0.76 -2.28 -1 -3.52 -1.39 -3.01 
+-1.39 -3.17 -1.63 -3.02 -1.52 -3.14 -0.76 -1.65 -0.73 -1.76 -1.02 -1.26 -0.86 -1.26 -0.76 -0.37 
+-0.63 -0.26 -1.63 -3.02 -1.52 -3.04 S
+3068.32 1320.62 0.63 1.13 0.5 1.15 0.5 -0.52 0.37 -0.49 S
+3070.31 1321.88 0.26 3.77 0.26 3.91 -0.26 1.26 -0.36 1.39 -0.52 -2.26 -0.37 -2.41 -0.63 0.39 
+-0.5 0.26 0.13 -3.79 0 -3.78 S
+2991.32 978.97 -1.02 -2 -1.13 -2.02 0 -1.15 -0.13 -1.12 1.15 0.89 1 0.87 1.26 2.65 
+1.13 2.78 -0.37 0.26 -0.39 0.37 -0.74 -0.75 -0.76 -0.76 S
+2931.68 885.89 -2.88 -2.91 -3.02 -2.89 -7.32 -7.31 -2.88 -3.02 -3.02 -2.91 -2.02 -2.02 -2.12 -1.89 
+-2.78 -2.65 -2.89 -2.64 -2.39 -2.39 -2.52 -2.26 -2.41 -2.54 -2.5 -2.52 -1.64 -1.89 -1.63 -1.89 
+1.75 1.13 1.89 1.15 1.39 0.87 1.37 0.89 -4.91 -4.91 3.04 2.39 2.89 2.38 2.12 1.65 S
+2899.21 849.74 2.29 1.76 0.75 0.37 0.64 0.52 3.12 2.62 6.29 5.55 3.14 2.89 1.76 1.89 
+1.78 1.89 0.24 0.89 0.26 0.89 0 1.25 1 1.5 1 1.52 3.15 3.65 3.14 3.79 
+2.02 2.52 1.89 2.65 S
+2634.29 682.95 -4.91 -1.13 -4.91 -1.15 -4.79 -1 -3.78 -0.76 -3.64 -0.87 -3.78 -0.76 -3.51 -0.63 
+-3.65 -0.76 -3.64 -0.63 -2.15 -0.39 -2.13 -0.24 -2.02 -0.26 -0.13 0.13 0 0.26 -0.13 0.11 
+0.89 0.39 0.89 0.24 0.87 0.39 -3.52 -0.63 -3.64 -0.5 -3.54 -0.52 -3.78 -0.74 -3.88 -0.75 
+-3.91 -0.64 -1.75 -0.39 -1.76 -0.5 -1.75 -0.37 -1.26 -0.26 -1.26 -0.37 S
+2563.71 670.23 -1.39 -0.26 -1.89 -0.5 -1.89 -0.39 -1.89 -0.37 -1.12 -0.26 -1.26 -0.37 -1.13 -0.26 
+2.13 0 1.02 0.13 -0.89 -0.23 -1 -0.13 -0.89 -0.26 -3.28 -0.5 -3.38 -0.37 -3.41 -0.39 
+-2.76 -0.37 -2.64 -0.26 -2.75 -0.26 -2.78 -0.23 -0.26 -0.13 -0.11 -0.13 -0.26 0 -0.26 -0.13 
+-2.12 -0.24 -2.02 -0.13 -2.13 -0.26 -2.02 -0.24 0.24 0 0.39 -0.13 0.24 0 0.39 -0.13 
+-0.89 -0.12 -0.76 -0.24 -0.87 -0.13 -0.76 -0.12 3.14 0.13 3.15 0.26 3.28 0.24 3.14 0.26 
+2.13 0.24 2.15 0.26 2.13 0.26 2.02 0.24 3.27 0.39 3.25 0.5 3.15 0.37 3.14 0.52 
+4.28 0.5 S
+2559.55 666.95 4.27 0.5 4.3 0.5 4.27 0.63 4.41 0.63 4.28 0.76 4.41 0.76 4.27 0.63 
+2 0.26 1.89 0.37 1.89 0.26 2.02 0.24 1.63 0.26 1.78 0.24 1.63 0.26 1.76 0.13 
+3.41 0.76 3.38 0.63 3.28 0.74 3.38 0.76 -2.12 -0.37 -2.14 -0.39 -2.13 -0.24 -2.15 -0.39 
+2.39 0.52 2.28 0.5 2.39 0.37 2.25 0.52 2.28 0.5 2.39 0.63 2.25 0.5 2.26 0.63 S
+2627.73 679.04 2.15 0.37 2.13 0.39 2.14 0.38 2.15 0.5 2.76 0.65 2.78 0.63 2.75 0.74 
+2.78 0.63 1 0.26 0.89 0.13 1 0.24 1 0.26 2.91 0.76 2.75 0.76 2.91 0.75 
+2.88 0.88 3.64 1.02 S
+2666.36 688.37 3.52 1 3.64 1.13 3.54 1.15 5.27 1.75 5.17 1.76 5.04 1.89 5.16 1.75 
+5.54 2.02 5.41 2.02 5.53 2.14 5.66 2.15 -3.53 -1.28 -3.52 -1.36 -3.39 -1.26 -3.41 -1.26 
+-2.25 -0.76 -2.15 -0.76 -2.25 -0.76 -2.15 -0.76 -3.52 -1.13 -3.51 -1.25 -3.54 -1.13 -3.52 -1.15 
+-3.64 -1.26 -7.29 -2.26 -3.64 -1.02 -3.67 -1.13 -3.64 -1 -3.65 -1.02 -3.64 -1 -2.88 -0.76 
+-3.02 -0.76 -2.91 -0.62 -2.75 -0.76 -3.64 -1 -3.64 -0.89 -3.67 -0.86 -3.64 -0.89 S
+2627.73 679.04 1.15 0.25 1 0.38 1.13 0.26 1 0.36 -1.87 -0.36 -1.89 -0.39 -1.89 -0.5 
+-1.89 -0.37 -1.65 -0.26 S
+2622.83 678.41 -1.63 -0.26 -1.52 -0.24 -1.63 -0.26 0.76 0.26 0.63 0.24 1.26 0.52 -1.13 0 
+-0.63 -0.13 -0.52 0 3.54 1 7.04 1.78 1.75 0.63 1.78 0.5 1.76 0.5 S
+2693.79 711.42 -4.04 -1.26 -1.89 -0.63 -2.52 -1.02 -2.52 -0.86 -2.49 -0.89 -2.52 -1 -1.26 -0.52 
+-1.89 -0.49 -2.02 -0.63 -1.89 -0.5 -2.52 -0.89 -2.64 -0.87 -2.52 -0.76 -3.64 -1.12 -3.64 -1.15 
+-3.64 -1.12 -2.65 -0.87 -2.62 -0.89 -2.78 -0.89 -1.76 -0.75 -3.52 -1.26 -1.15 -0.37 -2.25 -1 
+-0.63 -0.39 -0.5 -0.37 -0.63 -0.39 0.24 -0.13 S
+2633.9 690.37 0.39 -0.11 0.24 -0.12 0.52 -0.26 0.11 -0.13 0.13 -0.11 0 -0.26 -2.65 -0.89 
+-2.5 -0.74 -2.65 -0.89 -1.65 -0.5 -1.49 -0.52 -1.65 -0.63 -3.88 -0.87 -3.91 -1.02 -4.02 -0.87 
+2.63 0.5 5.29 0.99 0.37 0 0.39 -0.11 0.37 0 -2.15 -0.62 -2.25 -0.64 -2.15 -0.52 
+-1 -0.37 -1 -0.5 -1.13 -0.39 -1.78 -0.5 -1.76 -0.62 -1.75 -0.5 -1.39 -0.39 -1.37 -0.5 
+-1.39 -0.37 1.13 0 1.25 0.13 1.26 0 3.02 0.63 3.14 0.74 3.14 0.63 1.5 0.26 
+1.52 0.26 1.52 0.11 1.63 0.52 1.63 0.5 1.65 0.5 1.75 0.5 1.89 0.52 S
+2626.87 683.21 1.75 0.49 1.89 0.37 1.76 0.26 1.88 0.37 4.28 1.02 8.55 2.25 1.89 0.63 
+2.02 0.76 2.02 0.63 -1.39 -0.26 -1.39 -0.24 -1.39 -0.26 0 0.39 0.13 0.11 5.3 1.78 
+2.63 0.87 -0.37 0 -0.26 0.13 -0.37 0 0.13 0.26 0.13 0.24 0.24 0.26 2.28 0.89 
+2.39 0.87 2.25 0.89 1.76 0.76 1.76 0.63 1.65 0.75 1.63 0.74 1.64 0.63 1.5 0.76 
+2.39 1.02 2.52 1 2.28 1.02 2.39 0.87 2.26 0.89 2.25 1 0.89 0.5 0.76 0.39 
+0.86 0.5 0.5 0.39 0.52 0.38 0.37 0.36 2.52 1.26 1.13 0.63 S
+2694.79 710.39 -0.13 0.26 0 0.13 -0.11 0.13 -0.26 0.11 -0.26 0.26 -0.24 0.13 S
+2665.47 703.23 -1.87 -0.89 -2.02 -0.89 -2.02 -0.76 2.14 0.52 2.13 0.5 2.26 0.63 -0.24 0.26 
+-0.12 0.24 -0.26 0.39 S
+2944.27 1361.18 1.49 -3.39 1.76 -2.41 2.28 -1.89 2.64 -2.13 1.26 0.5 2 -2.15 2.15 -1.75 
+1.63 -3.41 2.15 -0.37 2.26 -1.02 0.63 -2.65 1.76 -3.14 1.75 -4.78 2.28 -0.13 1.13 -2.15 
+2.13 -2.13 0.89 -3.16 2.02 -3.78 1 -3.14 2.02 -2.89 2.25 -3.67 2.02 -1.25 1 -2.26 
+1.89 -2.28 2.78 -2.25 2.02 -1.39 1.89 -3.15 1.25 -0.5 0.24 2.75 1.39 1.26 1.63 -0.87 
+-0.37 4.64 S
+2997.48 1306.25 -0.37 5.43 -0.75 4.53 -0.89 5.92 0 5.17 -1.39 2.15 -1.5 1.76 -1.52 -1.65 
+-1.26 3.04 -1.37 0.87 -1.78 5.3 -1.76 -2.02 -1.63 1.65 0 4.4 -0.5 3.78 -2.14 2.02 
+-1.26 -1.52 -0.76 4.4 -1.37 -0.63 -2.41 2.65 -1.63 -1.13 -2.65 2.28 -1.37 -2.28 -2.28 2.52 
+-2.13 2.78 -2.28 0.87 -2.13 0.26 -2.02 1.13 -2.02 2.15 -1.76 2.39 -2.13 1.15 -2.28 -1.65 
+-1.89 -2.02 -2.12 1.26 -1.89 -2.02 S
+2997.98 1292.54 1.63 0.76 2.14 -0.52 -0.12 -2.52 1.65 0.76 2 0.89 1.52 -1.02 1.89 1.02 
+1.26 2.02 1.76 1.76 1.26 0.63 1.75 -0.89 1.63 0.89 1.52 0.63 1.52 1.63 S
+3019.38 1298.57 1.63 0 1.52 3.41 1.5 0.13 1.39 -0.39 1.26 0.52 -0.39 4.14 -0.49 5.04 
+-1.5 -0.74 -1.25 -2.52 -1.89 -0.39 -0.76 3.91 -1.26 1.39 -1.52 -1.02 -1.89 -0.24 -1.75 0.63 
+-0.37 -5.79 -1.25 -1.39 -1.63 -0.75 -1.52 -1.63 -1.25 -0.63 -1.26 3.15 -1.62 -0.89 -1.76 0.75 
+-1.15 -0.26 -1.13 -2.88 -2.02 -0.26 -0.37 -5.29 -0.62 -4.02 S
+3026.28 1306.38 1.39 -0.24 1.26 -2.28 0.89 5.93 -1.39 1.13 -2.15 -4.54 S
+3031.45 1304 1.39 1.63 1.89 0.63 1.26 2.54 0.99 3.25 1.02 2.28 0.5 1.39 0.63 1.26 
+0.63 1.39 0.5 1.39 S
+3040.25 1319.75 1.5 0 0.63 0.87 0.63 0.89 S
+3043.01 1321.5 0.63 0.5 0.76 0.5 0.5 1.39 0.52 1.39 0.74 0.36 0.63 0.52 0.39 1.76 
+0.37 1.63 S
+3047.55 1329.55 0.49 2.15 0.64 2.02 0.63 2.26 0.63 2.41 -2 -1.26 -0.13 -3.78 -0.25 -3.8 S
+3047.55 1329.55 -0.63 0.63 -0.76 0.63 -0.5 -1.37 -0.5 -1.39 -1.52 0 -0.63 -0.13 -0.74 0 
+-0.52 -1.89 -0.5 -1.76 -0.5 -2.28 -0.5 -2.25 S
+3040.25 1319.75 -0.76 0.87 -0.87 0.89 -1.52 -2.15 -1.89 -0.5 1.13 -3.65 -1.13 -0.63 -1.63 -2.02 
+-1.52 0.13 -0.87 -3.28 0.24 -5.42 S
+3051.46 1339.89 0.87 2.78 0.63 2.64 -0.74 -0.37 -0.89 -0.39 0.14 -2.26 0 -2.4 S
+3053.84 1352 0.63 1.26 0.5 1.26 -0.13 3.02 -0.11 3.02 -0.63 -2.02 -0.63 -1.89 0.24 -2.39 
+0.13 -2.26 S
+3040 1308.9 0.39 -1.5 0.36 -1.52 0.63 0.89 0.63 0.87 0.5 -0.37 0.5 -0.39 0.63 -1.13 
+0.76 -1.13 0.5 2.26 0.52 2.28 -0.76 1.63 -0.76 1.65 -0.75 0.37 -0.76 0.52 -1.26 -1.78 
+-0.62 -1.25 -0.5 -1.39 S
+3052.08 1314.58 0.5 1.37 0.63 1.39 0.5 1.89 0.39 2.02 0.24 3.66 0.13 3.78 0.37 2.89 
+0.26 3.03 0.5 2 0.39 2.02 0.37 1.89 0.37 2.02 0.39 2.52 0.24 2.52 0 5.55 
+-0.5 -1.02 -0.5 -1.13 -0.37 -1.62 -0.39 -1.52 -0.5 -1.76 S
+3055.1 1346.07 -0.63 -1.65 -0.5 -2.13 -0.5 -2.28 0 -4.77 -0.39 -2.02 -0.5 -2.02 -0.37 -1.76 
+-0.25 -1.65 -0.14 -2.52 -0.12 -2.39 0.26 -4.17 0.13 -4.14 S
+3063.52 1376.04 -0.11 3.14 -0.12 3.28 -0.64 3.17 -0.62 3.14 0.24 -3.03 0.13 -2.89 0.63 -3.41 
+0.5 -3.41 S
+3064.78 1403.88 -0.37 3.91 -0.5 3.91 -0.89 4.28 -0.87 4.29 -0.89 2.65 -1 2.75 0.63 -3.38 
+0.63 -3.28 0.74 -3.78 0.63 -3.67 1.02 -3.78 0.87 -3.91 S
+2990.82 1333.59 1.63 1.02 1.26 -1.25 0.37 -3.91 2.91 -0.39 -0.63 4.67 -1.13 -0.37 -1.26 3.02 
+-1.65 3.52 -1.25 -2.39 -0.24 -3.91 S
+3000 1331.71 1.39 0.63 -0.13 5.43 S
+3001.26 1337.76 -2.02 -0.52 0.76 -5.53 S
+3021 1313.32 1.39 1.63 1.37 1.76 -1 -4.67 -1.76 1.28 S
+2995.33 1372.27 1.52 -4.78 1.5 -2.02 1.02 -4.41 2.13 -1.02 1.88 -3.28 1.02 -4.41 1.63 -4.67 
+1.39 -5.03 1.75 1.39 1.13 2.52 0.63 2.91 1.65 -6.81 0.99 3.53 1.26 1.89 0.63 3.91 
+2.13 -1.02 1.15 2.78 1.5 -1.89 1.02 -3.67 0.74 3.17 1.52 8.81 -0.76 5.53 -0.76 7.95 
+-1.89 3.41 -0.11 5.79 0 5.04 -0.63 5.04 -1.39 5.92 -1.13 5.53 -0.52 4.17 1.02 2.39 
+0.76 3.54 -1.65 1.5 -1.89 1.15 -1.99 2.02 -0.63 4.14 -2.02 2.28 -2.15 3.38 -0.87 5.3 
+-1.89 5.66 S
+3005.04 1439.91 0.37 4.8 -2.02 2.02 0.13 3.91 0 4.04 -1.62 -0.26 -2.02 0.37 -1.39 -1 
+-2 4.27 -2.02 0.39 -1.39 0.87 1.25 -5.17 0.38 -5.27 1.39 -4.43 0.76 -6.92 1.5 -3.52 
+-1.24 -3.16 -0.12 -4.41 1 -7.42 0.13 -4.67 0.76 -4.79 -0.13 -5.04 -1.02 -3.14 -0.87 -2.88 
+1.25 -5.69 1.13 -6.92 -1.39 -1.26 -1.63 -1.62 -1.89 0.23 0 -5.29 1 -5.66 S
+3028.17 1377.06 2.02 -6.06 1.02 2.15 1.63 -4.41 1 -6.32 0.89 -6.79 0.87 -3.91 1.02 1.63 
+0.5 1.52 0.5 1.39 -0.63 2.39 -0.62 2.52 -0.37 2.78 -0.5 2.78 -0.52 2.64 -0.63 2.65 
+-1.12 5.17 -1.63 4.27 0 5.3 S
+3031.58 1386.76 0.5 0.87 0.37 1.02 0.39 -1.75 0.5 -1.65 0.37 -2.52 0.39 -2.52 0.76 -1.65 
+0.74 -1.5 0.76 -0.26 0.76 -0.24 1.26 -6.55 0.63 0 0.63 0.13 0 1.99 0.13 2.02 
+0.74 -4.02 0.89 -4.04 0.76 -1.13 0.63 -1.02 0.24 2.9 0.13 2.89 -0.76 3.14 -0.63 3.15 
+-0.87 1.52 -0.75 1.52 -1 2.02 -0.89 1.89 -0.87 0.73 -0.76 0.76 -0.26 5.03 -0.76 1.65 
+-0.87 1.63 -0.63 1.15 -0.76 1.13 -1 1.52 -1.12 1.63 0.11 2.64 0.26 2.65 -0.26 2.64 
+-0.11 2.76 -0.26 3.17 -0.26 3.14 0.39 1.39 0.5 1.37 -0.76 1.02 -0.87 0.87 -0.13 -2.39 S
+3029.82 1417.49 -0.26 -2.25 -0.12 -2.15 -0.11 -2.02 -0.52 -1.13 -0.37 -1.26 0.5 -6.05 -1 -2.39 
+-1.39 3.78 -1.63 0.13 -1.78 5.79 -1.13 6.04 0.39 2.41 0.74 0.76 0.52 2.89 0.87 2.78 
+0.39 1.26 0.74 2.52 0.39 1.26 0.63 0.37 0.76 0.52 0.11 1.63 0.26 1.76 0 2.41 
+0.13 2.25 -0.62 3.67 -0.63 3.64 -0.76 2.78 -0.62 2.76 -0.63 0.5 -0.63 0.52 0.37 -1.89 
+0.26 -1.89 0.49 -2.54 0.39 -2.52 0.11 -2.52 0.26 -2.52 -0.5 -1.49 -0.39 -1.65 -0.11 -1.39 
+-0.12 -1.5 -0.63 -0.26 -0.5 -0.26 -1.13 -1.76 -1.15 -2.02 -1.37 -0.87 1.49 -6.82 -1.12 -3.28 
+1 -3.51 S
+3021.38 1413.98 1.39 -5.3 1.39 -4.8 0.37 -4.91 0.89 -4.79 1.5 -5.79 1.02 -5.8 0.24 -5.53 S
+3029.05 1458.81 0.89 -1.39 1 -1.39 0.87 -2 0.89 -1.91 0.75 -2.39 0.76 -2.52 1 -1.26 
+0.89 -1.25 0.87 -0.37 1.02 -0.39 -1.26 1.52 -1.15 1.5 -0.87 1.91 -0.89 2 -0.87 2.91 
+-1.02 2.78 0.26 1.5 0.13 1.39 -0.75 1.02 -0.76 1 -0.37 2.52 -0.39 2.52 -1 2.52 
+-1.13 2.64 0.38 -3.02 0.26 -3.02 -0.89 1.5 -1 1.39 -0.89 2.65 -0.87 2.52 0.5 -2.39 
+0.38 -2.52 0.75 -2.41 0.89 -2.25 0.73 -2.65 0.89 -2.64 S
+3042.77 1405.77 0.87 -1.5 0.89 -1.52 0.63 0.37 0.63 0.39 S
+3045.79 1403.52 -0.13 2.26 -0.13 2.28 -0.74 1.76 -0.75 1.88 -0.5 -0.76 -0.52 -0.76 -0.11 -2.26 
+-0.13 -2.15 S
+3045.29 1416.5 0.76 0.13 0.87 0 0.13 1.63 0 1.63 0.5 0.89 0.49 0.76 0.76 1.39 
+0.76 1.26 0.63 0 0.76 -0.13 -0.76 2.39 -0.63 2.41 -1.02 1.5 -0.87 1.52 -0.26 -1.39 
+-0.24 -1.39 -0.76 0.26 -0.63 0.24 -0.13 -2 -0.24 -2.02 -0.39 -1.78 -0.49 -1.76 0.36 -2.78 
+0.39 -2.75 S
+3035.72 1414.34 0.63 1.89 0.5 1.89 S
+3039.5 1429.84 0.5 2.28 0.5 2.26 -1 0.25 -1 0.24 1 -5.03 S
+3036.48 1462.98 0.76 -0.13 0.63 -0.13 -0.26 2.39 -0.24 2.41 -0.63 -0.13 S
+3036.74 1467.38 -0.63 -0.13 0.24 -2.14 0.13 -2.13 S
+3040.39 1488.67 1.25 -1.26 1.13 -1.25 -0.13 1.89 -0.26 2.02 -1.99 2.52 0 -3.91 S
+3041.64 1453.14 0.63 0.76 0.5 0.76 0.37 0.74 0.25 0.75 0.88 -2.38 0.89 -2.39 0.63 -0.13 
+0.63 -0.26 0.13 1.52 0.24 1.52 -0.11 2 0 1.91 -0.12 2.75 -0.26 2.91 1.02 -3.54 
+0.99 -3.41 -0.12 -1.75 -0.24 -1.89 0.74 -5.29 -0.24 -1 -0.39 -1.02 0.14 -1.76 0.26 -1.63 
+0.37 0.5 0.26 0.37 0.74 -0.73 0.89 -0.66 1.26 -3.51 0.89 -2.29 0.74 -2.25 0.26 1.13 
+0.13 1.26 -0.76 4.3 -0.89 4.28 S
+3052.32 1444.71 0.89 -0.76 0.76 -0.87 1.39 0 0.63 -0.39 0.63 -0.24 0.24 1.13 0.37 1.25 
+0.52 0.76 0.5 0.87 0.63 0.13 0.63 0.26 0.5 0.63 0.5 0.76 0.63 0 0.63 -0.14 
+0.76 -1.15 0.76 -1.13 1.25 -3.14 1.26 -3.28 1.13 -3.52 1.25 -3.54 1 -3.02 1.02 -3.04 
+-0.14 -2.12 0 -2.02 0.76 -3.77 0.63 -3.67 0.74 -5.03 0.76 -5.17 0.39 1.65 0.24 1.76 
+-0.24 3.41 -0.13 3.52 0.24 1.78 0.13 1.76 0.13 2.38 0 2.39 0.63 -1.63 0.76 -1.75 
+0.63 -1.52 0.74 -1.52 1.52 -2.52 0.26 0.89 0.24 1 0.13 1.52 0.26 1.52 0.37 0.5 S
+3079.25 1419.64 0.5 0.5 -0.37 3.9 -0.39 3.91 -0.5 2.52 -0.5 2.65 -0.89 2.78 -0.87 2.75 
+-0.39 2.65 -0.24 2.64 -0.63 2.91 -0.5 2.88 -1.02 4.54 -1 4.54 -0.13 1.75 0 1.89 
+0.26 -0.11 0.37 -0.14 0.63 0.14 0.5 0.11 0.13 0.89 0.14 1.02 1.13 -3.17 1.26 -3.25 
+1 -2.65 1.02 -2.64 0.87 -1.65 1.02 -1.63 0.75 -1.39 0.74 -1.52 0.76 -2.38 0.76 -2.29 
+0.13 1.15 0.11 1.13 0.26 2.78 0.13 1.5 0.13 1.52 0 1.13 0.11 1.25 0.89 -2.25 
+0.76 -2.28 -0.39 3.14 -0.37 3.28 -1.26 4.67 -1.26 4.79 0 -3.14 -0.24 -0.13 -0.39 -0.26 S
+3082.27 1460.07 -1 4.3 -1.02 4.14 0.13 -1.76 0.13 -1.65 -0.26 -0.63 -0.24 -0.5 -1.26 4.54 
+-1.26 4.41 0.5 -3.38 0.5 -3.54 -1.26 3.14 -1.26 3.02 -1.62 4.8 -1.63 4.66 -0.52 0 
+-0.5 0.13 -1.13 2.13 -1.25 2.02 -1.13 2.78 -1.13 2.65 -0.52 2.39 -0.5 2.39 -0.5 2.41 
+-0.5 2.39 -1.52 4.16 -1.63 3.88 -0.76 1.02 -0.76 0.89 0.63 -3.28 0.76 -3.14 -0.76 0.11 
+-0.63 0.26 0.13 -1.52 0 -1.39 -1.76 4.29 -1.76 4.28 -1.13 1.75 -1.02 1.79 -0.5 0 
+-0.5 0.11 -0.76 0.26 -0.63 0.26 -0.49 -0.26 -0.37 -0.26 -0.52 -0.24 -0.37 -0.39 0 -2.62 
+-0.5 -0.63 S
+3050.2 1510.22 -0.39 -0.63 -0.24 -0.52 -0.26 -0.62 -0.37 -0.76 -0.26 -0.74 -0.24 -0.76 -0.26 -0.89 
+-1 -1 0.13 -1.64 0.11 -1.5 -0.24 -0.89 -0.26 -0.76 -0.37 -0.76 -0.26 -0.75 S
+3046.29 1497.98 -1.5 0 -0.52 -0.24 -0.63 -0.26 0.76 -3.91 0.76 -3.78 1 -3.28 1.02 -3.41 
+0.24 -2.26 0.26 -2.15 0.87 -3.91 1.02 -3.91 0.76 -2.89 0.63 -2.91 0.86 -3.28 0.89 -3.38 
+-0.13 -1.26 0 -1.26 -0.89 0.74 -0.74 0.63 -1.15 2.54 -1.12 2.52 -0.37 -0.26 -0.5 -0.37 
+-1.13 2.52 -1.15 2.39 -0.99 3.41 -1.14 3.52 -1.52 2.91 -1.63 3.02 0 -2.15 -0.12 -2.12 
+-0.87 0.63 S
+3039.25 1475.82 -0.75 0.63 -0.13 -2.15 -0.13 -2.02 0.63 -2.89 0.63 -2.9 0.26 -2.65 0.11 -2.64 
+0.89 -4.02 0.89 -4.04 S
+2952.2 1545.75 3.14 -3.67 2.25 -2.52 2.65 -3.14 1.89 0.26 -1.76 2.89 1.5 0 1.65 -4.14 
+2.12 -3.17 1.13 1.89 -1.76 5.29 1.52 0.5 3.14 -1.63 -2.28 3.14 -1.76 2.02 1.39 1 
+3.15 -2.52 1 1.15 -0.5 2.64 -2.26 0.63 -1.88 1.63 -0.39 2.52 -1.37 -1.52 -0.89 -1.13 
+0 -1.89 1.26 -3.64 -0.89 -1.26 -2.75 2.76 -3.64 3.53 -2.64 4.41 -2.26 5.3 -2.38 4.8 
+-2.78 4.27 -1.89 0.5 -2.89 3.41 -3.41 4.66 1.65 -3.9 -0.39 -1.78 -1.39 -0.64 0.52 -2.75 S
+2940 1565.64 2.75 -4.29 2.28 -3.78 2.26 -1.89 3.28 -4.9 2.62 -3.54 -0.99 -1.5 S
+2987.67 1472.42 -0.5 6.05 -1.15 4.02 -1 4.8 -2.02 5.43 -0.36 3.01 -1.52 6.05 -3.78 5.04 
+3.28 -7.68 1.89 -6.19 1.13 -4.4 1.39 -5.93 0.89 -4.91 1.75 -5.29 S
+2967.29 1528.47 2.26 -1.39 2.64 -2.89 1.76 -1.13 -1.52 4.78 -2.62 3.77 -1.78 0.63 -0.62 -1.63 
+-0.11 -2.15 S
+2972.94 1543.46 2.64 -2.88 1.39 1 2.26 -4.41 -0.5 -1.64 3.02 -4.64 0.5 1.26 3.04 -4.8 
+-0.39 3.64 -2.25 1.89 -2.15 3.28 0 4.03 -3.14 3.65 -2.25 3.27 -2.26 1.79 0.5 -3.67 
+-0.39 -1.76 S
+2982.64 1514 -0.13 3.91 0.89 0.49 S
+2983.4 1518.4 2.13 -3.4 1.02 -4.27 2.13 -2.15 1.75 -0.89 -0.99 3.91 -2.52 3.28 0.99 0.52 
+-1.62 4.14 1.76 -1.39 -0.24 3.67 -2.15 3.38 -0.5 -2.13 -2.15 3.28 -2.64 4.02 2.15 -4.28 
+1.13 -4.27 -2.02 3.64 -0.63 -1.65 -2.88 5.17 -0.24 -3.39 -1.26 1.5 -0.63 -2.52 2.13 -2.39 
+2.52 -4.41 2.02 -3.77 S
+2998.25 1486.52 1.63 -2.52 -1.76 4.67 -1.62 4.91 -0.13 2.52 2 -3.02 -0.24 2.52 -1.25 4.8 
+1 0.87 1.26 -0.74 1.52 -4.3 2.65 -5.16 1.37 -0.37 1.39 0.13 0.13 0.87 0.13 1.02 
+0.87 -0.63 0.89 -0.52 -1.13 3.17 -1.02 3.26 -0.86 1.02 -0.89 1 -0.76 0.76 -0.87 0.75 S
+3002.52 1501.52 -1.12 3.28 -0.76 2.15 -0.76 2.13 1 -1 1.02 -1.12 1.49 -2.15 1.52 -2.14 
+-1.26 2.78 -1.13 2.64 -1.02 2.65 -1 2.64 -1 1.76 -1.15 1.88 -1.5 1.76 -1.52 1.78 
+-1.37 2.52 -1.52 2.52 -2.65 2.26 -2.26 0 3.52 -5.16 1.13 -4.04 -0.87 -0.5 2.39 -5.17 
+0.26 -3.14 1.5 -4.78 -2.12 3.15 -1.02 -0.52 0.63 -3.78 1.39 -4.14 0.5 -4.3 0.89 -3.39 
+2.52 -5.55 S
+3056.73 1523.3 0.89 -1.62 0.76 -1.65 -0.26 1.65 -0.13 1.63 0.76 -1.12 0.89 -1.26 -0.25 1.63 
+-0.13 1.64 -0.63 2.39 -0.5 2.39 -0.5 2.41 -0.63 2.39 -1.63 4.54 -1.52 4.54 -2.26 5.53 
+-2.28 5.56 S
+3049.3 1553.93 -0.62 2.15 -0.64 2.13 -2.52 5.16 -2.62 5.03 -2.02 4.43 -2.02 4.41 -1.89 3.02 
+-1.75 3.02 1.39 -3.91 1.39 -4.02 2.88 -4.92 2.76 -5.03 0.76 -2.15 0.63 -2.13 2.91 -6.68 
+2.89 -6.8 0.63 -2.02 0.99 -4.04 0.63 -2.02 0.89 -3.41 1 -3.39 0.63 -2.78 0.63 -2.64 
+0.26 -2.02 0.24 -2.02 S
+3036.22 1558.7 -0.63 2.29 -0.63 2.25 S
+3027.17 1591.84 0.63 0.13 1.89 0 -0.37 1.13 -0.26 1.13 S
+3029.05 1594.23 2.26 -3.14 2.14 -3.28 2.52 -3.78 2.38 -3.91 -2.78 5.3 -2.76 5.43 -1.52 2.12 
+-1.37 2.29 -0.52 -0.5 -0.37 -0.52 S
+3029.05 1594.23 -0.49 0.13 S
+3028.56 1594.36 -0.39 0.13 -0.24 -0.5 -0.39 -0.63 -0.11 -0.76 -0.26 -0.76 S
+3036.22 1590.08 1.52 -2.65 1.63 -2.64 1.52 -2.78 1.13 -1.63 1 -1.52 1.15 -1.62 0.5 -0.76 
+0.63 -0.63 0.5 -0.75 -1.52 3.53 -1.5 3.39 -1.65 3.53 -0.62 0.76 -0.74 0.74 -0.62 0.76 
+-1.39 2.02 -1.39 1.89 -1.39 1.78 0.52 -1.15 0.74 -2.26 S
+3039.5 1589.58 0.37 -0.12 0.52 -0.14 0.36 -0.26 0.13 0.26 0.24 0.14 0.13 0.13 S
+3049.3 1573.96 0.76 -1.02 0.89 -0.87 0.74 -1.02 S
+3037.37 1599.91 0.24 -0.12 0.26 -0.13 0.37 -0.26 0.13 0.13 0.5 0 0.26 -0.13 0.24 -0.11 
+0.26 -0.13 S
+3032.96 1613.52 1.63 -2.78 1.76 -2.78 1.65 -2.89 0.87 -1.26 0.89 -1.28 0.74 -1.37 1.15 -1.65 
+1.13 -1.76 1.26 -1.76 S
+3051.2 1576.84 1.13 -2.13 1.02 -2.28 1.13 -2.25 1.52 -2.78 0.87 -1.39 -0.75 1.89 -0.74 1.88 
+-0.76 1.89 -0.39 1.26 -0.5 1.26 -0.37 1.26 -1.65 3.54 -1.63 3.53 -1.63 3.52 -0.26 -0.12 
+-0.14 -0.24 -0.24 -0.14 1.26 -2.9 1.13 -2.89 1 -2.91 S
+3051.82 1580.25 1.13 -1.63 1.02 -1.65 1 -1.63 -0.87 2.13 -0.89 2.28 -0.89 2.39 -1.13 1.89 
+-1 1.76 -1.13 1.91 1 -2.54 0.89 -2.52 0.86 -2.39 S
+3080.64 1527.71 1.39 -3.77 1.36 -3.78 1.52 -3.91 1.39 -3.9 S
+3086.3 1512.35 1.37 -3.91 1.15 -3.52 1.26 -3.67 1.13 -3.52 1.13 -3.64 1.13 -3.67 -0.89 3.15 
+-0.87 3.14 -1 3.17 -1.02 3.25 -1 3.28 -1.39 3.8 -1.26 3.78 -1.39 3.77 -1.39 3.64 
+-1.37 3.67 1 -2.78 1 -2.65 0.89 -2.78 1 -2.78 0.89 -2.63 -1.13 3.28 -1.25 3.39 
+-1.26 3.27 -1.25 3.15 -1.13 3.14 S
+3094.73 1487.54 1.52 -4.79 1.36 -4.91 1.39 -4.93 1.39 -4.91 1.39 -5.04 -0.52 2.02 -0.5 2.13 
+-1 4.3 -0.5 2.13 -1.02 2.91 -0.87 2.88 -0.89 2.78 -0.87 2.78 -0.89 2.65 S
+3119.14 1261.16 -0.39 -6.3 -1 -12.85 -0.63 -6.42 -0.37 -3.91 -0.39 -3.78 S
+3116.36 1227.91 -0.36 -3.91 -0.39 -4.04 -0.5 -3.9 -0.24 -2.52 -0.39 -2.39 -0.24 -2.52 -0.39 -2.52 
+-0.37 -2.65 -0.26 -2.52 -0.37 -2.54 -0.39 -2.63 -0.5 -2.54 -0.37 -2.63 -0.39 -2.78 -1 -5.55 
+-0.5 -2.75 -0.5 -2.78 -0.62 -3.77 -0.76 -3.78 -0.76 -3.91 -0.87 -3.78 -0.76 -3.91 -0.13 -0.76 
+-0.12 -0.63 -0.13 -0.76 -0.11 -0.62 0 -0.76 0.74 3.91 1.78 7.55 0.74 3.79 0.75 3.78 
+0.64 3.78 0.75 3.64 0.63 3.66 1.25 7.3 0.24 2.02 0.39 2.15 0.24 2.02 0.26 2.02 
+0.26 2 1 6.81 0.37 3.41 0.52 3.27 0.36 3.26 0.5 4.16 S
+3116.36 1222.61 0.39 4.17 0.5 4.02 0.74 8.07 0.13 2.39 0.13 2.28 0.13 2.39 0.13 2.26 
+0.11 2.15 0.13 2.28 0.13 2.13 0 2.14 0.13 2.15 0.13 2.13 S
+2415.25 670.72 -2.02 0.26 -2 0.24 -1.88 0.26 2.52 0 -3.04 0.24 -3.12 0.26 -3.14 0.26 
+4.27 -0.63 4.15 -0.52 4.27 -0.37 S
+2988.54 1701.43 -0.63 0.89 -0.74 0.89 -0.75 0.87 -0.63 1.02 -0.76 0.86 -0.76 1.02 -0.76 0.87 
+-0.74 1.02 -0.75 0.99 -0.89 1.02 -0.76 1 -0.86 1.02 -0.76 1 -0.87 1 -0.89 1.02 
+-0.89 1.13 -0.87 1.02 -0.89 1.13 -0.87 1.13 -1.02 1 -0.87 1.15 S
+2971.57 1722.48 -1.76 2.02 -1.78 2 -1.75 2.14 -3.52 4.04 -1.89 2.15 -1.89 2 -3.77 4.29 
+-2.02 2.02 -1.89 2.12 -2 2.15 -2.02 2.15 -2.15 2.25 -2.13 2.15 -2.02 2.15 -2.15 2.26 
+-2.25 2.15 -2.13 2.26 -2.28 2.15 -2.25 2.25 -2.39 2.28 -2.28 2.26 -7.04 6.55 -3.53 3.28 
+-10.94 9.83 -7.55 6.55 -3.88 3.14 -3.91 3.28 -3.91 3.15 -4.02 3.27 -4.03 3.15 -4.02 3.14 
+-4.16 3.15 -4.14 3.14 -4.14 3.04 -4.28 3.14 -4.27 3.02 -4.41 3.02 -4.41 3.04 -8.81 6.03 
+-4.54 2.91 -4.52 2.89 -2.15 1.28 S
+2822.61 1851.73 -4.03 2.52 -2 1.26 -1.88 1.26 -2.02 1.13 -1.89 1.13 -2.02 1.13 -1.89 1.15 
+-1.89 1.13 -1.75 1.13 -1.89 1.02 -1.89 1.13 -1.76 1 -1.75 1.02 -1.76 1 -1.75 0.89 
+-1.76 1 -1.78 1.02 -1.63 0.86 -1.76 0.89 -1.62 0.89 -1.65 0.86 -1.62 0.89 -1.65 0.87 
+2.28 -1.26 2.26 -1.12 2.26 -1.26 2.14 -1.13 2.15 -1.25 2.13 -1.13 2.15 -1.15 2 -1.13 
+2.02 -1.26 4.04 -2.25 1.89 -1.15 3.77 -2.26 1.87 -1.02 1.89 -1.13 1.78 -1.12 1.76 -1.02 
+1.76 -1.13 1.76 -1 1.63 -1.12 1.78 -1.02 7.29 -4.77 3.65 -2.41 S
+2833.18 1844.79 3.64 -2.25 3.52 -2.41 3.41 -2.39 3.52 -2.39 3.41 -2.39 3.25 -2.41 3.41 -2.39 
+3.15 -2.38 3.28 -2.29 3.14 -2.38 3.12 -2.39 3.15 -2.41 3.04 -2.39 3.02 -2.39 3.02 -2.28 
+2.88 -2.39 3.41 -2.91 3.51 -2.76 3.39 -2.91 3.41 -2.88 3.4 -3.04 3.39 -2.89 3.41 -3.02 
+3.25 -2.91 3.41 -3.02 3.28 -3.14 3.26 -3.04 3.14 -3.02 3.28 -3.15 3.15 -3.02 3.14 -3.16 
+6.29 -6.3 2.63 -2.75 2.65 -2.78 2.52 -2.78 2.65 -2.78 2.64 -2.76 2.63 -2.91 2.64 -2.89 
+2.65 -3.04 2.63 -3.02 2.64 -3.02 2.65 -3.04 2.64 -3.14 2.63 -3.14 5.29 -6.29 2.65 -3.28 S
+2983.4 1708.12 2.52 -3.41 2.63 -3.28 S
+2717.69 1905.01 -0.24 0.13 -0.26 0.13 -0.37 0.11 -0.26 0 -0.25 0.13 -0.24 0.13 -0.26 0.13 
+-0.24 0.13 -0.26 0.11 -0.37 0.13 -0.26 0.13 -0.24 0.13 -0.39 0.14 -0.24 0.11 -0.26 0.13 
+-0.37 0.13 -0.26 0.14 -0.37 0.13 -6.16 2.26 -6.18 2.39 -6.27 2.28 -6.16 2.15 -6.3 2.13 
+-6.29 2.02 -6.16 1.89 -12.59 3.78 -6.29 1.78 -6.16 1.63 -6.29 1.65 -6.29 1.63 -6.16 1.52 
+-6.27 1.39 -6.16 1.37 -6.18 1.26 -6.17 1.28 -5.77 1 -5.92 1.13 -5.77 0.89 -5.93 1 
+-5.9 0.89 -5.93 0.89 -6.03 0.74 -5.9 0.76 -6.05 0.63 -6.04 0.63 S
+2541.19 1948.09 -6.03 0.63 -6.05 0.49 -6.04 0.39 -6.03 0.37 -6.16 0.39 -6.03 0.24 -6.16 0.26 
+-6.06 0.26 5.04 -0.26 2.52 0 5.04 -0.26 2.38 -0.11 2.52 -0.13 4.78 -0.26 2.4 -0.13 
+2.39 -0.11 2.39 -0.13 2.39 -0.26 2.39 -0.12 2.26 -0.24 2.41 -0.13 2.25 -0.25 2.26 -0.13 
+-1.88 0.13 -2 0.13 -1.89 0.26 -1.89 0.11 -5.66 0.39 -3.52 0.26 -1.89 0.11 -1.78 0.13 
+-1.75 0 -1.63 0.13 -1.76 0.13 -1.75 0 -1.65 0.13 -1.62 0 6.79 -0.26 6.79 -0.37 
+6.92 -0.52 6.92 -0.5 7.04 -0.63 7.05 -0.76 S
+2546.86 1947.46 7.03 -0.76 7.05 -0.87 7.18 -1.02 7.03 -1 7.18 -1.13 7.16 -1.26 7.29 -1.26 
+7.18 -1.39 7.29 -1.52 7.16 -1.63 6.43 -1.39 6.29 -1.52 6.29 -1.62 6.29 -1.65 6.27 -1.63 
+6.29 -1.78 6.16 -1.89 6.29 -1.89 6.16 -1.89 6.17 -2.02 6.16 -2.12 12.33 -4.3 6.05 -2.25 
+6.04 -2.28 6.03 -2.39 S
+2005.77 1744.14 -2.65 -2.89 -2.78 -2.91 -2.62 -3.02 -2.65 -3.02 -2.64 -2.91 -2.62 -3.02 -2.64 -3.14 
+-2.29 -2.65 -2.25 -2.65 -2.13 -2.64 -2.14 -2.65 -2.02 -2.52 -2.12 -2.64 -2.02 -2.52 S
+1972.18 1704.97 -2.15 -2.91 -2.25 -2.76 -2.15 -2.78 -2.12 -2.91 -2.26 -2.89 -2.02 -2.78 -2.39 -3.28 S
+1956.83 1684.68 -2.28 -3.14 -2.12 -3.15 -2.29 -3.14 -1.99 -3.02 -2.15 -3.04 2.02 2.91 2.02 2.88 
+2.13 3.04 2.02 2.88 2.13 2.91 2.14 3.02 2.26 2.88 2.14 3.04 2.26 3.02 2.38 3.02 
+2.28 3.04 2.39 3.15 S
+1972.18 1704.97 1.63 2.02 1.65 1.89 3.25 4.03 1.65 1.89 1.5 2.02 3.28 3.78 3.28 3.91 
+3.26 3.91 3.4 3.91 3.52 3.89 3.54 3.91 3.64 4.04 S
+1850.02 1301.48 0 -2.02 0.13 -2.02 0 -2.02 0.14 -1.13 0.11 -1.12 0.13 -1.13 0 3.65 
+-0.13 3.51 -0.11 0.76 -0.26 1.52 S
+2217.62 1840.02 -0.13 -0.39 -0.13 -0.24 -0.36 0 -0.26 -0.14 0.52 0.38 S
+2217.25 1839.63 0.37 0.39 S
+2214.73 1837.74 -1.39 -0.76 -1.52 -0.62 -1.26 -0.76 -1.13 -0.74 0.63 0 0.63 -0.13 1.39 0.87 
+1.49 0.89 0.52 0.63 0.63 0.63 S
+2196.22 1827.54 -3.51 -1.52 -2.13 -1.39 -2.28 -1.5 3.02 1.39 3.04 1.26 0.87 0.86 1 0.89 S
+2182.9 1819.86 -4.04 -2.78 S
+2176.48 1815.95 -1.62 -0.89 -1.52 -0.87 -1 -0.39 -0.89 -0.37 -0.86 -0.76 -0.89 -0.75 -1.26 -1.26 
+2.29 1.39 2.25 1.26 0.63 0.5 0.63 0.63 2.26 1.52 S
+2164.15 1809.03 -1.26 -0.52 -1.26 -0.36 0.13 0.36 0.26 0.52 -2.39 -1.15 -2.41 -1.13 -0.74 -0.24 
+-0.89 -0.26 -1.76 -1.13 S
+2153.84 1805.12 -1.88 -1.26 0.25 -0.12 0.11 -0.26 -0.5 -0.5 -0.37 -0.63 -1.13 -1 -1.15 -1.02 
+-0.11 -0.5 -0.13 -0.39 1.5 1.02 1.65 1 1.37 0.63 1.39 0.76 1.52 1.02 1.5 1 
+1.65 1.02 1.5 1 1.52 1.13 1.63 1.02 S
+2259.48 2052.04 -11.59 0 -1.02 2.32 -1.17 1.96 -1.39 1.63 -1.59 1.28 -1.84 0.98 -2.11 0.67 
+-2.41 0.41 -2.73 0.11 -1.76 -0.09 -1.69 -0.26 -1.61 -0.45 -1.54 -0.61 -2.84 -1.72 -2.43 -2.34 
+-1.99 -2.93 -1.5 -3.45 -0.93 -3.95 -0.33 -4.43 0.3 -4.06 0.83 -3.89 1.37 -3.55 1.87 -3.17 
+1.13 -1.41 1.26 -1.26 1.39 -1.08 1.52 -0.93 1.65 -0.74 1.8 -0.57 1.91 -0.32 2.06 -0.13 
+2.36 0.2 2.43 0.61 2.43 1 2.3 1.41 2.04 1.84 1.69 2.28 1.24 2.73 0.65 3.17 
+-13.67 0 0 10.11 23.92 0 0 -31.81 -7.27 0 -1.5 7.57 -2.08 -2.84 -2.25 -2.21 
+-2.32 -1.67 -2.39 -1.21 -2.39 -0.8 -2.34 -0.48 -2.23 -0.24 -2.11 -0.07 -2.95 0.16 -2.82 0.43 
+-2.69 0.71 -2.56 0.98 -2.43 1.23 -2.23 1.48 -2.11 1.71 -1.89 1.95 -1.73 2.17 -1.52 2.36 
+-1.32 2.56 -1.11 2.75 -0.89 2.96 -0.66 3.1 -0.41 3.26 -0.15 3.43 0.2 4.08 0.52 3.77 
+0.87 3.46 1.15 3.12 1.41 2.82 1.63 2.52 1.87 2.25 2.02 1.98 2.17 1.69 2.28 1.46 
+2.39 1.19 2.43 0.96 2.47 0.71 2.46 0.52 2.43 0.3 2.39 0.09 3.56 -0.17 3.88 -0.64 
+3.97 -1.17 1.97 -0.82 1.91 -1 1.84 -1.2 1.73 -1.41 1.61 -1.61 1.45 -1.84 1.26 -2.09 
+1.09 -2.34 0.82 -2.6 0.59 -2.89 f*
+2269.88 2011.59 12.1719 59.4805 re
+f*
+2337.02 2052.93 -11.74 0 -0.43 2.43 -0.89 2 -1.28 1.58 -1.61 1.2 -1.84 0.87 -2.02 0.59 
+-2.13 0.3 -2.12 0.11 -1.89 -0.13 -1.84 -0.35 -1.73 -0.56 -1.54 -0.8 -1.32 -1.02 -1.02 -1.22 
+-0.67 -1.43 -0.22 -1.63 0.22 -1.86 0.69 -1.52 1.17 -1.21 1.67 -0.98 2.13 -0.82 2.63 -0.71 
+6.79 -1.37 4.3 -0.74 3.95 -0.96 3.53 -1.24 3.06 -1.65 1.32 -1.02 1.17 -1.13 1.02 -1.3 
+0.84 -1.43 0.68 -1.63 0.5 -1.8 0.3 -2 0.11 -2.21 -0.09 -2.17 -0.28 -2.08 -0.46 -1.98 
+-0.65 -1.86 -0.85 -1.73 -1.02 -1.61 -1.24 -1.5 -1.41 -1.34 -1.63 -1.22 -1.84 -1.06 -2.02 -0.91 
+-2.23 -0.76 -2.46 -0.61 -2.67 -0.43 -2.89 -0.26 -3.08 -0.11 -3.06 0.13 -2.82 0.32 -2.58 0.54 
+-2.37 0.72 -2.14 0.91 -1.93 1.06 -1.72 1.2 -1.54 1.34 -1.34 1.43 -1.15 1.57 -0.98 1.63 
+-0.8 1.71 -1.11 3.56 -0.52 3.67 11.89 0 0.39 -2.22 0.74 -1.97 1.09 -1.71 1.47 -1.43 
+1.84 -1.13 2.25 -0.82 2.65 -0.5 3.06 -0.18 2.26 0.11 2.15 0.35 2 0.61 1.76 0.85 
+1.47 1.13 1.13 1.41 0.72 1.71 0.26 2.02 -0.26 2.17 -0.76 1.74 -1.3 1.41 -1.82 1.15 
+-2.41 0.93 -2.97 0.82 -7.7 1.59 -5.04 0.98 -4.1 1.32 -3.3 1.68 -2.5 1.97 -1.84 2.26 
+-1.2 2.5 -0.67 2.73 -0.21 2.93 0.11 2.13 0.32 2.02 0.54 1.87 0.74 1.76 0.91 1.61 
+1.11 1.48 1.25 1.34 1.43 1.22 1.58 1.06 1.72 0.93 3.82 1.43 4.25 0.87 4.63 0.29 
+4.1 -0.2 4.06 -0.66 3.88 -1.21 1.84 -0.8 1.72 -1 1.61 -1.17 1.47 -1.35 1.32 -1.54 
+1.13 -1.73 0.96 -1.96 0.75 -2.2 0.5 -2.4 0.29 -2.67 f*
+2391.38 2052.93 -11.74 0 -0.43 2.43 -0.89 2 -1.28 1.58 -1.61 1.2 -1.84 0.87 -2.02 0.59 
+-2.12 0.3 -2.13 0.11 -1.89 -0.13 -1.85 -0.35 -1.73 -0.56 -1.55 -0.8 -1.32 -1.02 -1.02 -1.22 
+-0.68 -1.43 -0.21 -1.63 0.21 -1.86 0.7 -1.52 1.17 -1.21 1.65 -0.98 2.15 -0.82 2.63 -0.71 
+6.79 -1.37 4.3 -0.74 3.95 -0.96 3.54 -1.24 3.06 -1.65 1.33 -1.02 1.17 -1.13 1.02 -1.3 
+0.84 -1.43 0.67 -1.63 0.5 -1.8 0.3 -2 0.11 -2.21 -0.09 -2.17 -0.29 -2.08 -0.45 -1.98 
+-0.65 -1.86 -0.84 -1.73 -1.02 -1.61 -1.24 -1.5 -1.43 -1.34 -1.61 -1.22 -1.84 -1.06 -2.02 -0.91 
+-2.25 -0.76 -2.43 -0.61 -2.67 -0.43 -2.89 -0.26 -3.08 -0.11 -3.06 0.13 -2.82 0.32 -2.58 0.54 
+-2.37 0.72 -2.14 0.91 -1.93 1.06 -1.71 1.2 -1.54 1.34 -1.34 1.43 -1.15 1.57 -0.98 1.63 
+-0.8 1.71 -1.11 3.56 -0.52 3.67 11.89 0 0.39 -2.22 0.73 -1.97 1.09 -1.71 1.47 -1.43 
+1.84 -1.13 2.26 -0.82 2.64 -0.5 3.06 -0.18 2.25 0.11 2.15 0.35 1.99 0.61 1.76 0.85 
+1.47 1.13 1.13 1.41 0.71 1.71 0.26 2.02 -0.26 2.17 -0.75 1.74 -1.3 1.41 -1.85 1.15 
+-2.38 0.93 -2.98 0.82 -7.7 1.59 -5.04 0.98 -4.1 1.32 -3.3 1.68 -2.49 1.97 -1.84 2.26 
+-1.2 2.5 -0.67 2.73 -0.22 2.93 0.11 2.13 0.32 2.02 0.55 1.87 0.74 1.76 0.91 1.61 
+1.11 1.48 1.26 1.34 1.43 1.22 1.59 1.06 1.71 0.93 3.82 1.43 4.25 0.87 4.62 0.29 
+4.11 -0.2 4.05 -0.66 3.88 -1.21 1.85 -0.8 1.71 -1 1.61 -1.17 1.48 -1.35 1.32 -1.54 
+1.13 -1.73 0.95 -1.96 0.76 -2.2 0.5 -2.4 0.28 -2.67 f*
+2398.22 2028.84 22.1094 11 re
+f*
+2429.55 2071.07 43.05 0 0 -10.41 -30.87 0 0 -13.09 28.66 0 0 -10.41 ^ 
+0 -15.17 32.22 0 0 -10.39 -44.4 0 0 59.48 f*
+2494.9 2021.7 24.38 0 0 -10.11 -39.37 0 0.2 3.86 0.67 3.5 1.19 3.19 1.82 3.02 
+2.47 2.97 3.23 3.09 4.04 3.25 4.93 3.58 4.82 3.82 1.65 1.61 1.23 1.56 0.88 1.57 
+0.56 1.69 0.29 1.86 0.09 2.17 -0.11 1.59 -0.33 1.61 -0.56 1.52 -0.82 1.39 -1.11 1.21 
+-1.39 0.93 -1.69 0.61 -2 0.21 -1.78 -0.2 -1.59 -0.54 -1.43 -0.89 -1.21 -1.24 -0.98 -1.65 
+-0.71 -2.02 -0.46 -2.45 -0.15 -2.91 -11.16 0 0 3.71 0.13 1.98 0.3 1.87 0.5 1.76 
+0.65 1.67 0.82 1.56 0.96 1.43 2.34 2.54 2.8 2.02 3.17 1.5 3.49 0.93 3.69 0.3 
+3.52 -0.21 3.51 -0.67 3.37 -1.24 1.58 -0.82 1.52 -1 1.39 -1.17 1.26 -1.34 1.13 -1.52 
+0.96 -1.74 0.76 -1.93 0.58 -2.13 0.37 -2.37 0.11 -2.58 -0.26 -3.6 -0.76 -3.04 -1.17 -2.56 
+-1.52 -2.2 -1.8 -1.93 -2 -1.76 -4.37 -3.36 -5.27 -3.97 -3.28 -2.71 -2.14 -2.34 -1.93 -2.87 f*
+2524.91 2028.84 22.1133 11 re
+f*
+2556.54 2071.07 33.14 0 2.45 -0.28 2.54 -0.71 2.45 -1.21 2.31 -1.69 1.97 -2.22 1.58 -2.75 
+0.59 -1.59 0.43 -1.71 0.28 -1.86 0.08 -2.02 -0.17 -2.8 -0.5 -2.52 -0.82 -2.21 -1.13 -1.96 
+-1.43 -1.69 -1.7 -1.41 -1.97 -1.19 -2.22 -0.96 2.3 -1.04 1.8 -1.09 1.39 -1.32 1 -1.63 
+0.7 -2.15 0.41 -2.76 0.22 -3.56 0.04 -4.45 0.04 -3.71 0.41 -2.32 0.37 -0.78 0.48 -0.63 
+1.39 -1.04 0 -2.21 -13.09 0 -0.84 1.58 -0.54 1.7 -0.31 1.84 -0.08 2.02 0 9.96 
+-0.11 1.39 -0.37 1.24 -0.57 1.11 -0.78 0.93 -0.93 0.76 -1.13 0.56 -1.26 0.39 -1.39 0.16 
+-14.84 0 0 10.27 16.63 0 1.63 0.15 1.39 0.34 1.17 0.57 0.96 0.8 0.74 1.04 
+0.54 1.32 0.3 1.61 0.11 1.89 -0.13 1.65 -0.37 1.48 -0.61 1.25 -0.83 1.09 -1.06 0.85 
+-1.26 0.61 -1.5 0.39 -1.67 0.13 -16.04 0 0 -49.07 -12.19 0 0 59.48 f*
+2610.75 2028.84 22.1328 11 re
+f*
+2679.51 2031.95 11.89 0 -0.3 -3.64 -0.97 -3.78 -0.76 -1.89 -0.96 -1.87 -1.17 -1.78 -1.37 -1.7 
+-1.61 -1.61 -1.84 -1.45 -2.08 -1.3 -2.34 -1.13 -2.61 -0.91 -2.89 -0.67 -3.17 -0.43 -3.47 -0.16 
+-3.66 0.2 -3.32 0.59 -3.02 0.89 -2.71 1.24 -2.43 1.5 -2.17 1.76 -1.89 1.99 -1.64 2.17 
+-1.41 2.35 -1.17 2.47 -0.98 2.58 -0.76 2.67 -0.98 5.45 -0.3 5.4 0.17 4.26 0.5 3.9 
+0.8 3.54 1.07 3.19 1.32 2.87 1.52 2.54 1.74 2.23 1.89 1.93 2.04 1.67 2.15 1.39 
+2.23 1.16 2.32 0.89 2.32 0.7 2.34 0.45 4.62 0.37 3.6 -0.2 3.84 -0.65 3.91 -1.24 
+1.91 -0.89 1.84 -1.06 1.78 -1.26 1.65 -1.5 1.49 -1.71 1.37 -1.98 1.16 -2.23 0.95 -2.5 
+0.72 -2.8 0.43 -3.11 -11.59 0 -0.71 2.72 -1 2.25 -1.29 1.82 -1.54 1.43 -1.78 1.06 
+-1.98 0.72 -2.14 0.41 -2.32 0.13 -2.86 -0.29 -2.78 -0.86 -2.56 -1.5 -2.3 -2.17 -1.02 -1.35 
+-0.91 -1.52 -0.8 -1.71 -0.7 -1.89 -1 -4.36 -0.36 -5.16 0.17 -3.93 0.61 -3.76 1.04 -3.49 
+1.54 -3.13 0.96 -1.37 1.11 -1.25 1.26 -1.09 1.39 -0.91 1.56 -0.73 1.71 -0.57 1.89 -0.33 
+2.06 -0.13 2.47 0.22 2.28 0.5 2.04 0.84 1.82 1.24 1.52 1.63 1.21 2.06 0.89 2.54 
+0.52 3.02 f*
+2738.48 2031.95 11.89 0 -0.3 -3.64 -0.98 -3.78 -0.76 -1.89 -0.96 -1.87 -1.15 -1.78 -1.39 -1.7 
+-1.61 -1.61 -1.84 -1.45 -2.08 -1.3 -2.34 -1.13 -2.6 -0.91 -2.89 -0.67 -3.16 -0.43 -3.47 -0.16 
+-3.65 0.2 -3.34 0.59 -3.02 0.89 -2.71 1.24 -2.43 1.5 -2.17 1.76 -1.89 1.99 -1.65 2.17 
+-1.41 2.35 -1.17 2.47 -0.98 2.58 -0.75 2.67 -0.98 5.45 -0.29 5.4 0.15 4.26 0.5 3.9 
+0.81 3.54 1.06 3.19 1.32 2.87 1.52 2.54 1.73 2.23 1.89 1.93 2.04 1.67 2.15 1.39 
+2.26 1.16 2.3 0.89 2.32 0.7 2.34 0.45 4.62 0.37 3.61 -0.2 3.84 -0.65 3.91 -1.24 
+1.91 -0.89 1.87 -1.06 1.75 -1.26 1.65 -1.5 1.52 -1.71 1.35 -1.98 1.15 -2.23 0.96 -2.5 
+0.71 -2.8 0.43 -3.11 -11.59 0 -0.69 2.72 -1.02 2.25 -1.28 1.82 -1.55 1.43 -1.78 1.06 
+-1.97 0.72 -2.15 0.41 -2.32 0.13 -2.86 -0.29 -2.76 -0.86 -2.58 -1.5 -2.3 -2.17 -1 -1.35 
+-0.93 -1.52 -0.81 -1.71 -0.69 -1.89 -0.98 -4.36 -0.39 -5.16 0.19 -3.93 0.59 -3.76 1.04 -3.49 
+1.54 -3.13 0.96 -1.37 1.11 -1.25 1.26 -1.09 1.39 -0.91 1.56 -0.73 1.71 -0.57 1.89 -0.33 
+2.06 -0.13 2.47 0.22 2.28 0.5 2.06 0.84 1.8 1.24 1.52 1.63 1.21 2.06 0.89 2.54 
+0.52 3.02 f*
+255 0 r6
+960.051 345.273 138.777 85.8047 re
+f*
+K
+960.051 345.273 138.777 85.8047 re
+S
+0 155 255 rG
+1098.83 345.273 138.777 85.8047 re
+f*
+K
+1098.83 345.273 138.777 85.8047 re
+S
+2 239 204 rG
+1237.61 345.273 138.781 85.8047 re
+f*
+K
+1237.61 345.273 138.781 85.8047 re
+S
+7 193 59 rG
+1376.39 345.273 138.777 85.8047 re
+f*
+K
+1376.39 345.273 138.777 85.8047 re
+S
+110 210 9 rG
+1515.17 345.273 138.797 85.8047 re
+f*
+K
+1515.17 345.273 138.797 85.8047 re
+S
+0 255 r6
+1653.97 345.273 138.777 85.8047 re
+f*
+K
+1653.97 345.273 138.777 85.8047 re
+S
+255 203 0 rG
+1792.75 345.273 138.777 85.8047 re
+f*
+K
+1792.75 345.273 138.777 85.8047 re
+S
+255 135 0 rG
+1931.54 345.273 138.777 85.8047 re
+f*
+K
+1931.54 345.273 138.777 85.8047 re
+S
+255 35 0 rG
+2070.31 345.273 138.797 85.8047 re
+f*
+K
+2070.31 345.273 138.797 85.8047 re
+S
+189 0 54 rG
+2209.12 345.273 138.777 85.8047 re
+f*
+K
+2209.12 345.273 138.777 85.8047 re
+S
+87 0 136 rG
+2347.89 345.273 138.777 85.8047 re
+f*
+K
+2347.89 345.273 138.777 85.8047 re
+S
+978.19 299.37 0 -6.64 -33.55 -13.71 33.55 -14.15 0 -6.64 -41.51 17.69 0 5.75 41.51 17.71 f*
+986.59 283.445 41.082 5.75 re
+f*
+986.59 268.406 41.082 5.75 re
+f*
+1056.38 319.27 4.86 0 0 -60.16 -7.5 0 0 42.9 -13.26 0 0 5.3 5.34 0.63 
+2.41 0.52 2.19 0.85 1.93 1.34 1.67 2.02 1.34 2.82 1.02 3.78 f*
+1102.3 319.27 2.2 -0.2 2.08 -0.52 1.99 -0.87 1.87 -1.15 1.76 -1.43 1.65 -1.67 1.5 -1.91 
+1.37 -2.11 1.23 -2.28 1.09 -2.43 1.71 -5.23 1.07 -5.53 0.37 -5.64 -0.37 -5.66 -1.07 -5.58 
+-1.71 -5.3 -1.09 -2.47 -1.23 -2.32 -1.37 -2.15 -1.5 -1.95 -1.65 -1.71 -1.76 -1.46 -1.87 -1.2 
+-1.99 -0.86 -2.08 -0.55 -2.2 -0.2 -2.19 0.2 -2.08 0.55 -1.98 0.86 -1.89 1.2 -1.75 1.46 
+-1.63 1.71 -1.5 1.95 -1.39 2.15 -1.21 2.32 -1.11 2.47 -1.71 5.3 -1.07 5.58 -0.37 5.66 
+7.97 0 0.28 -5.38 0.76 -4.84 1.21 -4.23 1.54 -3.56 1.82 -2.88 2.02 -2.11 1.04 -0.76 
+1.08 -0.56 1.09 -0.33 1.06 -0.11 1.08 0.11 1.09 0.33 1.06 0.56 1.07 0.76 1.99 2.11 
+1.82 2.88 1.56 3.56 1.2 4.23 0.79 4.84 0.28 5.38 -0.28 5.36 -0.79 4.8 -1.2 4.14 
+-1.56 3.5 -1.82 2.8 -1.99 2.04 -2.13 1.26 -1.09 0.33 -1.08 0.11 -1.06 -0.11 -1.09 -0.33 
+-2.12 -1.26 -2.02 -2.04 -1.82 -2.8 -1.54 -3.5 -1.21 -4.14 -0.76 -4.8 -0.28 -5.36 -7.97 0 
+0.37 5.64 1.07 5.53 1.71 5.23 1.11 2.43 1.21 2.28 1.39 2.11 1.5 1.91 1.63 1.67 
+1.75 1.43 1.89 1.15 1.98 0.87 2.08 0.52 2.19 0.2 f*
+1349.07 299.8 -7.51 0 0.48 4.51 1.07 3.93 0.74 1.76 0.89 1.59 1.02 1.45 1.17 1.3 
+1.28 1.15 1.41 1 1.54 0.84 1.65 0.7 3.64 0.91 4.1 0.33 3.85 -0.29 3.54 -0.78 
+3.14 -1.32 2.73 -1.82 2.22 -2.32 0.91 -1.34 0.75 -1.46 0.61 -1.58 0.43 -1.71 0.26 -1.8 
+0.11 -1.93 -0.11 -2.23 -0.35 -2.02 -0.61 -1.84 -0.87 -1.65 -1.2 -1.5 -1.54 -1.34 -1.88 -1.2 
+-2.29 -1.04 2.61 -1.08 2.22 -1.26 1.82 -1.45 1.47 -1.63 1.11 -1.84 0.75 -2.06 0.46 -2.3 
+0.15 -2.54 -0.26 -3.32 -0.81 -3.3 -1.43 -3.15 -0.95 -1.45 -1.13 -1.37 -1.32 -1.28 -1.5 -1.15 
+-1.7 -1.02 -1.89 -0.87 -2.13 -0.69 -2.32 -0.52 -2.54 -0.32 -2.78 -0.13 -2.4 0.11 -2.24 0.26 
+-2.08 0.45 -1.91 0.61 -1.76 0.76 -1.58 0.91 -1.43 1.06 -1.28 1.21 -1.13 1.32 -0.98 1.46 
+-1.48 3.23 -0.87 3.64 -0.3 4 7.51 0 0.11 -2.19 0.32 -2.18 0.7 -2.08 1.09 -1.91 
+1.58 -1.63 2.17 -1.28 2.82 -0.83 3.58 -0.3 3.06 0.11 2.61 0.65 2.13 1.09 1.71 1.47 
+1.28 1.82 0.89 2.08 0.52 2.29 0.17 2.43 -0.31 3.14 -0.36 1.33 -0.52 1.2 -0.65 1.02 
+-0.78 0.91 -1.95 1.43 -2.43 1 -2.86 0.61 -3.28 0.35 -3.64 0.08 0 6.19 3.58 0.08 
+3.06 0.26 2.58 0.5 2.11 0.82 1.63 1.2 1.15 1.63 0.7 2.11 0.22 2.69 -0.14 2.09 
+-0.45 1.93 -0.78 1.74 -1.11 1.49 -1.45 1.22 -1.84 0.93 -2.22 0.58 -2.61 0.2 -2.38 -0.13 
+-2.15 -0.46 -1.89 -0.78 -1.62 -1.23 -1.35 -1.7 -1.04 -2.23 -0.69 -2.82 -0.35 -3.47 f*
+1408.25 319.27 2.19 -0.2 2.09 -0.52 1.99 -0.87 1.87 -1.15 1.76 -1.43 1.63 -1.67 1.52 -1.91 
+1.37 -2.11 1.24 -2.28 1.08 -2.43 1.72 -5.23 1.06 -5.53 0.37 -5.64 -0.37 -5.66 -1.06 -5.58 
+-1.72 -5.3 -1.08 -2.47 -1.24 -2.32 -1.37 -2.15 -1.52 -1.95 -1.63 -1.71 -1.76 -1.46 -1.87 -1.2 
+-1.99 -0.86 -2.09 -0.55 -2.19 -0.2 -2.19 0.2 -2.08 0.55 -2 0.86 -1.86 1.2 -1.76 1.46 
+-1.63 1.71 -1.52 1.95 -1.37 2.15 -1.24 2.32 -1.09 2.47 -1.71 5.3 -1.06 5.58 -0.37 5.66 
+7.95 0 0.28 -5.38 0.78 -4.84 1.22 -4.23 1.54 -3.56 1.83 -2.88 1.99 -2.11 1.06 -0.76 
+1.07 -0.56 1.08 -0.33 1.09 -0.11 1.09 0.11 1.09 0.33 1.06 0.56 1.05 0.76 2.02 2.11 
+1.82 2.88 1.55 3.56 1.21 4.23 0.78 4.84 0.26 5.38 -0.26 5.36 -0.78 4.8 -1.21 4.14 
+-1.55 3.5 -1.82 2.8 -2.02 2.04 -2.11 1.26 -1.09 0.33 -1.09 0.11 -1.09 -0.11 -1.08 -0.33 
+-2.13 -1.26 -1.99 -2.04 -1.83 -2.8 -1.54 -3.5 -1.22 -4.14 -0.78 -4.8 -0.28 -5.36 -7.95 0 
+0.37 5.64 1.06 5.53 1.71 5.23 1.09 2.43 1.24 2.28 1.37 2.11 1.52 1.91 1.63 1.67 
+1.76 1.43 1.86 1.15 2 0.87 2.08 0.52 2.19 0.2 f*
+1436.07 279.449 20.3125 6.20703 re
+f*
+1490.39 319.27 5.32 0 0 -38.93 9.27 0 0 -7.07 ^ 0 -14.15 -7.51 0 
+^ -25.17 0 0 7.07 ^ 0 26.11 -18.55 -26.11 -6.62 0 0 0.89 
+27.37 38.05 f*
+1531.04 319.27 2.19 -0.2 2.08 -0.52 1.98 -0.87 1.89 -1.15 1.76 -1.43 1.63 -1.67 1.52 -1.91 
+1.37 -2.11 1.23 -2.28 1.09 -2.43 1.71 -5.23 1.07 -5.53 0.37 -5.64 -0.37 -5.66 -1.07 -5.58 
+-1.71 -5.3 -1.09 -2.47 -1.23 -2.32 -1.37 -2.15 -1.52 -1.95 -1.62 -1.71 -1.76 -1.46 -1.89 -1.2 
+-1.98 -0.86 -2.08 -0.55 -2.19 -0.2 -2.2 0.2 -2.09 0.55 -1.99 0.86 -1.87 1.2 -1.75 1.46 
+-1.63 1.71 -1.52 1.95 -1.37 2.15 -1.23 2.32 -1.09 2.47 -1.71 5.3 -1.07 5.58 -0.37 5.66 
+7.95 0 0.28 -5.38 0.78 -4.84 1.2 -4.23 1.56 -3.56 1.82 -2.88 2 -2.11 1.07 -0.76 
+1.06 -0.56 1.09 -0.33 1.09 -0.11 1.08 0.11 1.07 0.33 1.08 0.56 1.04 0.76 2.02 2.11 
+1.82 2.88 1.54 3.56 1.22 4.23 0.78 4.84 0.26 5.38 -0.26 5.36 -0.78 4.8 -1.22 4.14 
+-1.54 3.5 -1.82 2.8 -2.02 2.04 -2.12 1.26 -1.07 0.33 -1.08 0.11 -1.09 -0.11 -1.09 -0.33 
+-2.12 -1.26 -2 -2.04 -1.82 -2.8 -1.56 -3.5 -1.2 -4.14 -0.78 -4.8 -0.28 -5.36 -7.95 0 
+0.37 5.64 1.07 5.53 1.71 5.23 1.09 2.43 1.23 2.28 1.37 2.11 1.52 1.91 1.63 1.67 
+1.75 1.43 1.87 1.15 1.99 0.87 2.09 0.52 2.2 0.2 f*
+1796.12 303.78 -7.51 0 -0.5 2.04 -0.78 1.78 -1.02 1.52 -1.24 1.23 -1.39 1 -1.54 0.69 
+-1.61 0.43 -1.65 0.15 -1.61 -0.11 -1.52 -0.29 -1.41 -0.48 -1.32 -0.67 -1.24 -0.84 -1.11 -1.02 
+-1.96 -2.56 -1.52 -3.23 -1.11 -3.86 -0.67 -4.47 -0.24 -5.01 1.81 1.93 1.78 1.52 1.78 1.17 
+1.76 0.84 1.8 0.57 1.82 0.37 3.84 0.21 2.93 -0.28 3.06 -0.89 3.01 -1.47 2.8 -2.11 
+1.28 -1.28 1.18 -1.43 1.02 -1.61 0.87 -1.73 0.7 -1.93 0.49 -2.06 0.29 -2.25 0.04 -2.39 
+-7.5 -0.45 -0.26 2.48 -0.74 2.41 -1.17 2.23 -1.52 2.02 -1.84 1.69 -2.11 1.3 -2.3 0.84 
+-2.43 0.3 -2.43 -0.3 -2.3 -0.84 -2.08 -1.3 -1.85 -1.69 -1.54 -2.02 -1.17 -2.23 -0.74 -2.41 
+-0.26 -2.48 0.26 -2.47 0.74 -2.39 1.17 -2.25 1.54 -2 1.85 -1.69 2.08 -1.32 2.3 -0.83 
+2.43 -0.3 2.43 0.3 2.3 0.83 2.11 1.32 1.84 1.69 1.52 2 1.17 2.25 0.74 2.39 
+0.26 2.47 7.5 0.45 -0.3 -3.55 -0.87 -3.54 -1.49 -3.43 -1 -1.61 -1.13 -1.55 -1.3 -1.41 
+-1.47 -1.28 -1.63 -1.15 -1.8 -0.98 -1.95 -0.78 -2.13 -0.59 -2.32 -0.36 -2.47 -0.14 -2.69 0.16 
+-2.5 0.46 -2.25 0.73 -2.06 1 -1.87 1.26 -1.65 1.47 -1.47 1.74 -1.28 1.93 -1.13 2.13 
+-0.93 2.3 -0.79 2.48 -0.62 2.64 -0.8 5.66 -0.26 6.12 0.08 3.64 0.29 3.46 0.45 3.27 
+0.63 3.06 0.8 2.87 0.98 2.67 1.15 2.43 1.3 2.21 1.48 1.98 1.61 1.73 1.78 1.48 
+1.93 1.23 2.09 0.98 2.21 0.7 2.37 0.43 2.49 0.16 3.5 -0.33 3.16 -0.91 2.82 -1.46 
+2.45 -1.91 2.02 -2.3 1.58 -2.62 1.08 -2.89 0.61 -3.08 f*
+1824.37 319.27 2.19 -0.2 2.11 -0.52 1.98 -0.87 1.87 -1.15 1.75 -1.43 1.65 -1.67 1.49 -1.91 
+1.37 -2.11 1.24 -2.28 1.09 -2.43 1.71 -5.23 1.06 -5.53 0.37 -5.64 -0.37 -5.66 -1.06 -5.58 
+-1.71 -5.3 -1.09 -2.47 -1.24 -2.32 -1.37 -2.15 -1.49 -1.95 -1.65 -1.71 -1.75 -1.46 -1.87 -1.2 
+-1.98 -0.86 -2.11 -0.55 -2.19 -0.2 -2.17 0.2 -2.11 0.55 -1.97 0.86 -1.89 1.2 -1.74 1.46 
+-1.65 1.71 -1.49 1.95 -1.39 2.15 -1.21 2.32 -1.11 2.47 -1.72 5.3 -1.06 5.58 -0.35 5.66 
+7.95 0 0.28 -5.38 0.79 -4.84 1.19 -4.23 1.54 -3.56 1.82 -2.88 2.02 -2.11 1.05 -0.76 
+1.08 -0.56 1.08 -0.33 1.07 -0.11 1.09 0.11 1.08 0.33 1.07 0.56 1.06 0.76 2.02 2.11 
+1.8 2.88 1.56 3.56 1.2 4.23 0.78 4.84 0.28 5.38 -0.28 5.36 -0.78 4.8 -1.2 4.14 
+-1.56 3.5 -1.8 2.8 -2.02 2.04 -2.13 1.26 -1.08 0.33 -1.09 0.11 -1.07 -0.11 -1.08 -0.33 
+-2.13 -1.26 -2.02 -2.04 -1.82 -2.8 -1.54 -3.5 -1.19 -4.14 -0.79 -4.8 -0.28 -5.36 -7.95 0 
+0.35 5.64 1.06 5.53 1.72 5.23 1.11 2.43 1.21 2.28 1.39 2.11 1.49 1.91 1.65 1.67 
+1.74 1.43 1.89 1.15 1.97 0.87 2.11 0.52 2.17 0.2 f*
+1852.21 279.449 20.3125 6.20703 re
+f*
+1880.46 319.27 40.2 0 0 -6.21 -5.69 -8.57 -4.62 -7.39 -3.71 -6.5 -2.93 -6.01 -2.32 -5.79 
+-1.91 -5.97 -1.61 -6.45 -1.49 -7.27 -7.97 0 2.26 8.33 2.17 7.05 2.28 6.14 2.52 5.66 
+2.93 5.6 3.45 5.9 9.13 14.39 -32.68 0 0 7.08 f*
+1947.16 319.27 2.2 -0.2 2.08 -0.52 2 -0.87 1.86 -1.15 1.76 -1.43 1.64 -1.67 1.5 -1.91 
+1.37 -2.11 1.24 -2.28 1.09 -2.43 1.71 -5.23 1.06 -5.53 0.37 -5.64 -0.37 -5.66 -1.06 -5.58 
+-1.71 -5.3 -1.09 -2.47 -1.24 -2.32 -1.37 -2.15 -1.5 -1.95 -1.64 -1.71 -1.76 -1.46 -1.86 -1.2 
+-2 -0.86 -2.08 -0.55 -2.2 -0.2 -2.19 0.2 -2.08 0.55 -1.98 0.86 -1.89 1.2 -1.75 1.46 
+-1.63 1.71 -1.49 1.95 -1.39 2.15 -1.24 2.32 -1.09 2.47 -1.71 5.3 -1.06 5.58 -0.37 5.66 
+7.97 0 0.28 -5.38 0.76 -4.84 1.21 -4.23 1.54 -3.56 1.82 -2.88 2.02 -2.11 1.04 -0.76 
+1.09 -0.56 1.06 -0.33 1.09 -0.11 1.09 0.11 1.08 0.33 1.06 0.56 1.07 0.76 1.99 2.11 
+1.82 2.88 1.56 3.56 1.2 4.23 0.79 4.84 0.28 5.38 -0.28 5.36 -0.79 4.8 -1.2 4.14 
+-1.56 3.5 -1.82 2.8 -1.99 2.04 -2.13 1.26 -1.08 0.33 -1.09 0.11 -1.09 -0.11 -1.06 -0.33 
+-2.13 -1.26 -2.02 -2.04 -1.82 -2.8 -1.54 -3.5 -1.21 -4.14 -0.76 -4.8 -0.28 -5.36 -7.97 0 
+0.37 5.64 1.06 5.53 1.71 5.23 1.09 2.43 1.24 2.28 1.39 2.11 1.49 1.91 1.63 1.67 
+1.75 1.43 1.89 1.15 1.98 0.87 2.08 0.52 2.19 0.2 f*
+2143.12 319.27 2.19 -0.11 2.08 -0.28 2 -0.5 1.88 -0.7 1.76 -0.91 1.65 -1.16 1.52 -1.39 
+1.39 -1.61 1.26 -1.86 1.11 -2.12 0.98 -2.39 0.82 -2.67 0.67 -2.93 0.5 -3.23 0.35 -3.52 
+0.15 -3.82 -0.13 -4.75 -0.37 -4.29 -0.63 -3.89 -0.83 -3.45 -1.02 -3.08 -1.21 -2.69 -1.37 -2.37 
+-1.5 -2.02 -1.63 -1.71 -1.73 -1.43 -1.84 -1.15 -1.89 -0.89 -1.95 -0.67 -1.98 -0.43 -4 -0.35 
+-3.05 0.24 -2.87 0.69 -2.62 1.2 -2.38 1.7 -2.09 2.21 -1.76 2.73 -1.41 3.3 -1.04 3.86 
+7.51 0 0.74 -2.19 0.84 -1.87 1.02 -1.61 1.15 -1.31 1.32 -1.02 1.52 -0.71 1.67 -0.46 
+1.88 -0.13 1.7 0.11 1.56 0.35 1.45 0.56 1.35 0.76 1.24 0.96 1.13 1.13 1.91 2.78 
+1.47 3.34 1.07 3.82 0.63 4.23 0.2 4.51 -2.08 -2.06 -1.97 -1.58 -1.87 -1.17 -1.74 -0.83 
+-1.65 -0.52 -1.56 -0.31 -2.82 -0.17 -2.32 0.2 -2.17 0.37 -2.02 0.59 -1.84 0.71 -1.72 0.91 
+-1.54 1.04 -1.39 1.2 -1.24 1.3 -1.09 1.41 -0.93 1.54 -1.39 3.3 -0.76 3.58 -0.15 3.78 
+7.5 0 0.24 -2.37 0.65 -2.32 1.07 -2.23 1.43 -2.04 1.78 -1.76 2.11 -1.34 2.41 -0.89 
+2.69 -0.33 2.69 0.33 2.41 0.89 2.12 1.34 1.79 1.76 1.43 2.04 1.06 2.23 0.65 2.32 
+0.21 2.37 -0.21 2.34 -0.65 2.32 -1.06 2.23 -1.43 2.04 -1.79 1.75 -2.12 1.37 -2.41 0.87 
+-2.69 0.32 -2.69 -0.32 -2.41 -0.87 -2.11 -1.37 -1.78 -1.75 -1.43 -2.04 -1.07 -2.23 -0.65 -2.32 
+-0.24 -2.34 -7.5 0 0.02 1.95 0.22 1.93 0.39 1.89 0.56 1.8 0.74 1.73 0.91 1.65 
+1.07 1.54 1.23 1.41 1.39 1.32 1.52 1.15 1.65 1.02 1.8 0.87 1.91 0.7 2.04 0.5 
+2.16 0.32 2.26 0.11 f*
+2190.39 319.27 2.19 -0.2 2.08 -0.52 2 -0.87 1.87 -1.15 1.76 -1.43 1.63 -1.67 1.52 -1.91 
+1.36 -2.11 1.24 -2.28 1.08 -2.43 1.71 -5.23 1.06 -5.53 0.37 -5.64 -0.37 -5.66 -1.06 -5.58 
+-1.71 -5.3 -1.08 -2.47 -1.24 -2.32 -1.36 -2.15 -1.52 -1.95 -1.62 -1.71 -1.76 -1.46 -1.87 -1.2 
+-2 -0.86 -2.08 -0.55 -2.19 -0.2 -2.2 0.2 -2.09 0.55 -1.99 0.86 -1.87 1.2 -1.76 1.46 
+-1.63 1.71 -1.52 1.95 -1.37 2.15 -1.24 2.32 -1.08 2.47 -1.72 5.3 -1.06 5.58 -0.37 5.66 
+7.95 0 0.29 -5.38 0.78 -4.84 1.21 -4.23 1.55 -3.56 1.82 -2.88 2 -2.11 1.07 -0.76 
+1.06 -0.56 1.09 -0.33 1.09 -0.11 1.08 0.11 1.08 0.33 1.07 0.56 1.04 0.76 2.02 2.11 
+1.82 2.88 1.54 3.56 1.22 4.23 0.78 4.84 0.26 5.38 -0.26 5.36 -0.78 4.8 -1.22 4.14 
+-1.54 3.5 -1.82 2.8 -2.02 2.04 -2.11 1.26 -1.08 0.33 -1.08 0.11 -1.09 -0.11 -1.09 -0.33 
+-2.12 -1.26 -2 -2.04 -1.82 -2.8 -1.55 -3.5 -1.21 -4.14 -0.78 -4.8 -0.29 -5.36 -7.95 0 
+0.38 5.64 1.06 5.53 1.72 5.23 1.08 2.43 1.24 2.28 1.37 2.11 1.52 1.91 1.63 1.67 
+1.76 1.43 1.87 1.15 1.99 0.87 2.09 0.52 2.2 0.2 f*
+2218.21 279.449 20.3086 6.20703 re
+f*
+2265.91 319.27 2.2 -0.11 2.08 -0.28 2 -0.5 1.86 -0.7 1.78 -0.91 1.63 -1.16 1.55 -1.39 
+1.39 -1.61 1.26 -1.86 1.11 -2.12 0.97 -2.39 0.83 -2.67 0.65 -2.93 0.52 -3.23 0.34 -3.52 
+0.16 -3.82 -0.13 -4.75 -0.37 -4.29 -0.63 -3.89 -0.82 -3.45 -1.02 -3.08 -1.21 -2.69 -1.37 -2.37 
+-1.5 -2.02 -1.65 -1.71 -1.73 -1.43 -1.83 -1.15 -1.89 -0.89 -1.95 -0.67 -1.97 -0.43 -4 -0.35 
+-3.06 0.24 -2.87 0.69 -2.64 1.2 -2.37 1.7 -2.08 2.21 -1.76 2.73 -1.43 3.3 -1.02 3.86 
+7.51 0 0.71 -2.19 0.87 -1.87 1 -1.61 1.17 -1.31 1.32 -1.02 1.5 -0.71 1.7 -0.46 
+1.89 -0.13 1.7 0.11 1.56 0.35 1.45 0.56 1.35 0.76 1.24 0.96 1.13 1.13 1.91 2.78 
+1.48 3.34 1.06 3.82 0.61 4.23 0.21 4.51 -2.08 -2.06 -1.98 -1.58 -1.86 -1.17 -1.76 -0.83 
+-1.65 -0.52 -1.54 -0.31 -2.82 -0.17 -2.32 0.2 -2.17 0.37 -2.02 0.59 -1.85 0.71 -1.71 0.91 
+-1.54 1.04 -1.39 1.2 -1.24 1.3 -1.08 1.41 -0.93 1.54 -1.39 3.3 -0.76 3.58 -0.15 3.78 
+7.51 0 0.24 -2.37 0.65 -2.32 1.04 -2.23 1.43 -2.04 1.8 -1.76 2.11 -1.34 2.41 -0.89 
+2.69 -0.33 2.7 0.33 2.4 0.89 2.11 1.34 1.8 1.76 1.43 2.04 1.07 2.23 0.65 2.32 
+0.21 2.37 -0.21 2.34 -0.65 2.32 -1.07 2.23 -1.43 2.04 -1.8 1.75 -2.11 1.37 -2.4 0.87 
+-2.7 0.32 -2.69 -0.32 -2.41 -0.87 -2.11 -1.37 -1.8 -1.75 -1.43 -2.04 -1.04 -2.23 -0.65 -2.32 
+-0.24 -2.34 -7.51 0 0.02 1.95 0.2 1.93 0.39 1.89 0.58 1.8 0.74 1.73 0.91 1.65 
+1.06 1.54 1.24 1.41 1.37 1.32 1.54 1.15 1.65 1.02 1.8 0.87 1.91 0.7 2.04 0.5 
+2.17 0.32 2.26 0.11 f*
+2299.04 319.27 31.36 0 0 -7.08 -25.2 0 -2.2 -17.25 2.17 1.54 2.56 1.28 3.08 0.84 
+3.67 0.31 3.11 -0.26 3.21 -0.8 3.19 -1.41 1.52 -0.93 1.45 -1.12 1.35 -1.28 1.26 -1.48 
+1.11 -1.67 0.96 -1.84 0.78 -2.06 0.57 -2.28 0.37 -2.49 0.13 -2.69 -0.32 -4.23 -1 -4.02 
+-0.74 -1.89 -0.89 -1.78 -1.06 -1.7 -1.24 -1.54 -1.37 -1.43 -1.56 -1.28 -1.7 -1.11 -1.86 -0.93 
+-2.02 -0.76 -2.17 -0.57 -2.34 -0.32 -2.5 -0.14 -4.45 0.35 -1.97 0.41 -1.82 0.56 -1.67 0.71 
+-1.52 0.83 -2.62 2.06 -2.11 2.47 -1.65 2.87 -1.21 3.14 -0.82 3.41 7.51 0 0.76 -2.24 
+0.98 -1.97 1.17 -1.74 1.39 -1.47 1.58 -1.17 1.8 -0.87 2.02 -0.54 2.22 -0.17 2.99 0.22 
+2.69 0.7 2.35 1.13 1.98 1.61 1.56 2.06 1.17 2.5 0.71 2.97 0.24 3.41 -0.19 2.52 
+-0.57 2.5 -0.98 2.39 -1.41 2.17 -1.84 1.87 -2.28 1.45 -2.76 0.93 -3.23 0.32 -1.69 -0.06 
+-1.52 -0.26 -1.39 -0.43 -1.3 -0.61 -2.61 -1.8 -2.97 -2.56 -6.62 0 4.43 32.73 f*
+2377.65 317.05 2.91 -0.3 2.73 -0.87 2.48 -1.34 2.14 -1.8 1.8 -2.17 1.35 -2.47 0.87 -2.73 
+0.3 -2.91 -0.3 -2.91 -0.87 -2.73 -1.35 -2.48 -1.8 -2.16 -2.14 -1.78 -2.48 -1.37 -2.73 -0.84 
+-2.91 -0.3 -2.91 0.3 -2.71 0.84 -2.47 1.38 -2.17 1.78 -1.8 2.16 -1.35 2.48 -0.87 2.73 
+-0.29 2.91 6.17 0 0.2 -1.63 0.5 -1.54 0.8 -1.43 1.07 -1.26 1.23 -1.04 1.43 -0.8 
+1.55 -0.52 1.63 -0.17 1.63 0.17 1.54 0.52 1.43 0.8 1.25 1.04 1.05 1.26 0.8 1.43 
+0.52 1.54 0.17 1.63 -0.17 1.63 -0.52 1.57 -0.8 1.41 -1.05 1.26 -1.25 1.07 -1.43 0.8 
+-1.54 0.5 -1.63 0.17 -1.62 -0.17 -1.55 -0.5 -1.43 -0.8 -1.23 -1.07 -1.07 -1.26 -0.8 -1.41 
+-0.5 -1.57 -0.2 -1.63 -6.17 0 0.29 2.91 0.87 2.73 1.35 2.47 1.8 2.17 2.17 1.8 
+2.47 1.34 2.71 0.87 2.91 0.3 f*
+2412.11 319.27 5.73 0 -33.57 -61.94 -5.73 0 33.57 61.94 f*
+2419.16 286.54 2.91 -0.3 2.73 -0.87 2.47 -1.37 2.15 -1.78 1.8 -2.17 1.35 -2.47 0.87 -2.73 
+0.3 -2.91 -0.3 -2.9 -0.87 -2.73 -1.35 -2.48 -1.8 -2.16 -2.15 -1.79 -2.47 -1.37 -2.73 -0.86 
+-2.91 -0.31 -2.91 0.31 -2.71 0.86 -2.48 1.37 -2.17 1.79 -1.78 2.16 -1.37 2.48 -0.87 2.73 
+-0.28 2.9 6.18 0 0.18 -1.62 0.5 -1.54 0.8 -1.43 1.06 -1.26 1.24 -1.04 1.43 -0.8 
+1.54 -0.52 1.63 -0.17 1.63 0.17 1.56 0.52 1.41 0.8 1.26 1.04 1.04 1.26 0.8 1.43 
+0.52 1.54 0.17 1.63 -0.17 1.63 -0.52 1.54 -0.8 1.43 -1.04 1.26 -1.26 1.04 -1.41 0.8 
+-1.56 0.52 -1.63 0.17 -1.62 -0.17 -1.54 -0.52 -1.43 -0.8 -1.24 -1.04 -1.06 -1.26 -0.8 -1.43 
+-0.5 -1.54 -0.18 -1.63 -6.18 0 0.28 2.91 0.87 2.73 1.37 2.47 1.78 2.17 2.17 1.78 
+2.48 1.37 2.71 0.87 2.91 0.3 f*
+551.96 3925.21 -34.75 0 0 -9.44 24.74 0 0 -5.32 -0.11 -2 -0.34 -2 -0.57 -1.99 
+-0.78 -1.98 -1 -1.91 -1.17 -1.84 -1.39 -1.75 -1.56 -1.63 -1.74 -1.5 -1.93 -1.37 -2.08 -1.17 
+-2.24 -1 -2.38 -0.78 -2.55 -0.56 -2.66 -0.3 -2.82 -0.02 -3.73 0.17 -3.45 0.55 -3.19 0.87 
+-2.93 1.19 -2.65 1.48 -2.43 1.73 -2.15 2.02 -1.91 2.24 -1.7 2.45 -1.43 2.65 -1.2 2.82 
+-0.98 2.97 -0.76 3.12 -0.52 3.21 -0.32 3.32 -0.11 3.41 0.16 3.66 0.43 3.52 0.71 3.3 
+0.98 3.13 1.23 2.93 1.46 2.71 1.7 2.49 1.88 2.29 2.08 2.04 2.26 1.8 2.43 1.54 
+2.58 1.29 2.71 0.99 2.84 0.74 2.95 0.45 3.04 0.16 2.93 -0.2 3.32 -0.58 3.5 -1.06 
+3.52 -1.63 1.67 -1.04 1.61 -1.22 1.47 -1.41 1.37 -1.58 1.2 -1.78 1.02 -1.98 0.8 -2.21 
+0.57 -2.41 11.2 0 -0.83 3.5 -1.61 4.13 -1.15 2.19 -1.37 2.21 -1.62 2.19 -1.89 2.15 
+-2.15 2.04 -2.43 1.91 -2.73 1.71 -3.02 1.52 -3.34 1.23 -3.67 0.93 -3.99 0.61 -4.36 0.2 
+-4.51 -0.2 -4.3 -0.63 -4.06 -1.02 -3.82 -1.39 -3.55 -1.74 -3.3 -2.08 -3.02 -2.41 -2.73 -2.7 
+-2.46 -3 -2.14 -3.25 -1.84 -3.5 -1.52 -3.7 -1.19 -3.95 -0.89 -4.13 -0.52 -4.32 -0.17 -4.45 
+0.2 -5.56 0.61 -5.12 0.97 -4.73 1.33 -4.34 1.67 -3.97 2 -3.56 2.28 -3.21 2.58 -2.82 
+2.82 -2.47 3.08 -2.13 3.3 -1.78 3.52 -1.43 3.69 -1.11 3.86 -0.78 3.99 -0.48 4.14 -0.15 
+2.97 0.15 3.15 0.46 3.28 0.83 3.34 1.21 3.37 1.67 3.36 2.15 3.28 2.66 3.17 3.26 
+2.36 -10.02 7.06 0 0 43.64 f*
+567.859 3881.58 9.41797 82.5508 re
+f*
+616.14 3942.91 2.73 -0.18 2.67 -0.49 2.56 -0.81 2.47 -1.11 2.37 -1.39 2.23 -1.63 2.11 -1.89 
+1.93 -2.11 1.75 -2.3 1.57 -2.52 1.39 -2.68 1.15 -2.82 0.91 -2.98 0.69 -3.08 0.41 -3.21 
+0.13 -3.28 -0.12 -3.28 -0.41 -3.17 -0.69 -3.06 -0.91 -2.93 -1.15 -2.78 -1.39 -2.63 -1.57 -2.45 
+-1.75 -2.26 -1.93 -2.06 -2.11 -1.82 -2.23 -1.58 -2.37 -1.32 -2.47 -1.07 -2.56 -0.78 -2.67 -0.5 
+-2.73 -0.16 -2.73 0.16 -2.64 0.5 -2.58 0.78 -2.48 1.07 -2.36 1.32 -2.24 1.58 -2.08 1.82 
+-1.93 2.06 -1.78 2.26 -1.56 2.45 -1.37 2.63 -1.15 2.78 -0.93 2.93 -0.67 3.06 -0.43 3.17 
+-0.13 3.28 10 0 0.3 -4.54 0.87 -4.27 1.43 -3.9 1.95 -3.43 1.17 -1.5 1.29 -1.34 
+1.41 -1.17 1.52 -0.98 1.63 -0.8 1.74 -0.57 1.84 -0.37 1.93 -0.11 1.93 0.11 1.84 0.37 
+1.73 0.57 1.63 0.8 1.52 0.98 1.41 1.17 1.28 1.34 1.17 1.5 1.95 3.43 1.43 3.9 
+0.87 4.27 0.3 4.54 -0.3 4.58 -0.87 4.34 -1.43 3.99 -1.95 3.54 -1.17 1.54 -1.28 1.41 
+-1.41 1.22 -1.52 1.04 -1.63 0.83 -1.73 0.61 -1.84 0.37 -1.93 0.13 -1.93 -0.13 -1.84 -0.37 
+-1.74 -0.61 -1.63 -0.83 -1.52 -1.04 -1.41 -1.22 -1.29 -1.41 -1.17 -1.54 -1.95 -3.54 -1.43 -3.99 
+-0.87 -4.34 -0.3 -4.58 -10 0 0.13 3.28 0.43 3.21 0.67 3.08 0.93 2.98 1.15 2.82 
+1.37 2.68 1.56 2.52 1.78 2.3 1.93 2.11 2.08 1.89 2.24 1.63 2.36 1.39 2.48 1.11 
+2.58 0.81 2.64 0.49 2.73 0.18 f*
+654.43 3964.13 9.41 0 0 -31.25 1.15 1.67 1.24 1.45 2.63 2.41 2.73 1.78 2.71 1.24 
+2.54 0.79 2.23 0.46 3.02 0.24 2.24 -0.09 2.23 -0.3 2.25 -0.48 2.22 -0.69 2.14 -0.93 
+2.11 -1.17 2 -1.43 1.89 -1.7 1.75 -1.95 1.58 -2.26 1.41 -2.56 1.19 -2.86 0.98 -3.2 
+0.71 -3.51 0.46 -3.89 0.15 -4.23 -0.09 -3.5 -0.3 -3.34 -0.48 -3.23 -0.7 -3.06 -0.91 -2.91 
+-1.09 -2.71 -1.32 -2.52 -1.52 -2.32 -1.74 -2.11 -1.95 -1.87 -2.17 -1.61 -2.39 -1.37 -2.62 -1.07 
+-2.84 -0.78 -3.08 -0.5 -3.3 -0.16 -1.88 0.09 -2.11 0.33 -2.24 0.58 -2.3 0.91 -2.32 1.32 
+-2.23 1.74 -2.11 2.26 -1.89 2.8 0 -7.07 -9.41 0 0 28.29 ^ 0.09 -2.3 
+0.28 -2.21 1.06 -4.21 1.65 -3.8 2.15 -3.32 2.56 -2.73 1.4 -1.13 1.48 -0.93 1.54 -0.76 
+1.59 -0.57 1.63 -0.32 1.64 -0.11 2.04 0.13 1.91 0.43 1.79 0.7 1.66 0.93 1.52 1.13 
+1.41 1.32 1.26 1.52 1.15 1.65 1.89 3.65 1.37 3.95 0.8 4.1 0.28 4.05 -0.13 2.89 
+-0.37 2.69 -0.57 2.48 -0.78 2.28 -0.93 2.06 -1.07 1.89 -1.2 1.69 -1.3 1.5 -2.76 2.45 
+-2.82 1.74 -2.73 1.02 -2.43 0.33 -1.73 -0.11 -1.69 -0.36 -1.65 -0.59 -1.56 -0.8 -1.5 -1 
+-1.41 -1.21 -1.31 -1.37 -1.21 -1.54 -2.08 -3.58 -1.59 -4.11 -0.99 -4.58 -0.35 -4.93 -9.41 0 
+0 54.26 f*
+718.62 3923.44 0.3 3.54 0.98 3.49 0.74 1.68 0.93 1.61 1.11 1.52 1.3 1.43 1.52 1.33 
+1.71 1.21 1.93 1.04 2.15 0.91 2.37 0.72 2.6 0.54 2.82 0.32 3.09 0.13 3.34 -0.16 
+3.65 -0.5 3.71 -0.91 3.58 -1.39 1.67 -0.91 1.52 -1.04 1.39 -1.2 1.19 -1.37 0.98 -1.54 
+0.74 -1.71 0.46 -1.91 0.15 -2.13 0 -37.74 0.21 -1.04 0.57 -0.91 0.85 -0.76 1.04 -0.59 
+1.13 -0.41 1.17 -0.17 1.13 0.04 0.98 0.3 0 -7.08 -2.29 -0.5 -3.6 -0.08 -2.56 0.07 
+-1.99 0.22 -1.55 0.43 -1.19 0.69 -0.96 0.98 -0.78 1.34 -1.59 3.93 -5.01 -3.66 -2.17 -1.35 
+-2.08 -1.02 -2.15 -0.76 -2.32 -0.5 -2.62 -0.29 -3.06 -0.08 -2.65 0.08 -2.38 0.29 -2.17 0.46 
+-1.96 0.61 -1.73 0.73 -1.54 0.89 -1.35 0.99 -1.17 1.11 -1 1.21 -0.83 1.28 -1.2 2.8 
+-0.67 2.97 -0.21 3.08 8.83 0 0.22 -1.73 0.65 -1.63 1.04 -1.52 1.41 -1.3 1.78 -1.11 
+2.11 -0.84 2.45 -0.52 2.71 -0.2 3.95 0.52 3.45 1 2.93 1.43 2.41 1.69 1.88 1.91 
+1.37 2 0.82 1.97 0.26 1.87 0 11.78 -4.43 -1.62 -3.67 -0.87 -10.74 -1.63 -3.17 -0.96 
+-2.47 -1.12 -1.84 -1.26 -1.35 -1.37 -0.91 -1.49 -0.52 -1.59 -0.26 -1.67 -0.09 -1.74 -8.83 0 
+0.26 4.41 0.74 3.58 1.21 2.89 1.69 2.25 2.17 1.75 2.63 1.37 3.08 1.09 3.54 0.93 
+15.3 2.36 3.69 0.98 2.37 1.15 0.74 0.63 0.5 0.66 0.29 0.65 0.09 0.65 0 5.32 
+-0.17 1 -0.52 1.19 -0.91 1.26 -1.32 1.26 -1.79 1.15 -2.23 0.93 -2.73 0.63 -3.28 0.24 
+-3.47 -0.26 -2.95 -0.74 -2.46 -1.11 -1.93 -1.43 -1.5 -1.65 -1.02 -1.78 -0.61 -1.82 -0.2 -1.82 
+-9.42 0 f*
+782.207 3881.58 9.4375 82.5508 re
+f*
+862.3 3964.13 13.54 0 28.87 -82.55 -11.78 0 -8.25 24.17 -32.38 0 -8.25 -24.17 -11.78 0 
+25.91 70.77 10.59 0 -13.55 -37.16 26.5 0 -12.95 37.16 -10.59 0 4.12 11.79 f*
+914.13 3941.12 8.83 0 0 -9.44 2.45 3.04 2.5 2.45 2.5 1.96 2.49 1.48 2.47 1.08 
+2.41 0.7 2.34 0.39 2.25 0.13 3.36 -0.29 3.32 -0.78 3.17 -1.28 2.89 -1.72 2.47 -2.13 
+1.93 -2.52 0.74 -1.41 0.52 -1.45 0.35 -1.57 0.11 -1.63 0 -46.57 -9.42 0 0 42.45 
+-0.32 2.48 -0.87 2.08 -1.32 1.73 -1.7 1.37 -1.93 1.07 -2.06 0.73 -2.12 0.43 -2.04 0.13 
+-2.89 -0.33 -2.84 -0.96 -2.67 -1.54 -2.43 -2.11 -2.06 -2.64 -1.61 -3.12 -1.04 -3.58 -0.29 -1.96 
+-0.09 -2.04 0 -34.2 -9.41 0 0 59.54 f*
+977.13 3941.12 8.86 0 0 -9.44 2.45 3.04 2.47 2.45 2.49 1.96 2.5 1.48 2.47 1.08 
+2.43 0.7 2.34 0.39 2.26 0.13 3.34 -0.29 3.32 -0.78 3.19 -1.28 2.89 -1.72 2.47 -2.13 
+1.93 -2.52 0.71 -1.41 0.54 -1.45 0.33 -1.57 0.11 -1.63 0 -46.57 -9.42 0 0 42.45 
+-0.3 2.48 -0.89 2.08 -1.32 1.73 -1.67 1.37 -1.93 1.07 -2.08 0.73 -2.11 0.43 -2.06 0.13 
+-2.86 -0.33 -2.84 -0.96 -2.69 -1.54 -2.41 -2.11 -2.08 -2.64 -1.59 -3.12 -1.04 -3.58 -0.28 -1.96 
+-0.09 -2.04 0 -34.2 -9.44 0 0 59.54 f*
+1040.15 3941.12 9.42 0 0 -44.23 0.2 -1.58 0.58 -1.63 0.96 -1.58 1.37 -1.46 1.74 -1.28 
+2.13 -1 2.52 -0.67 2.88 -0.22 2.02 0.11 1.89 0.34 1.71 0.57 1.59 0.73 1.43 0.89 
+1.31 1.04 2.21 2.41 1.67 2.73 1.17 2.84 0.67 2.82 0.24 2.61 0 36.54 9.42 0 
+0 -60.13 -8.83 0 0 8.25 -1.8 -2.32 -1.91 -2.07 -2.02 -1.82 -2.21 -1.54 -2.45 -1.21 
+-2.69 -0.91 -2.99 -0.54 -3.37 -0.2 -4.19 0.35 -3.71 0.96 -3.23 1.49 -2.69 1.91 -2.15 2.26 
+-1.58 2.49 -0.96 2.61 -0.32 2.67 0 47.76 f*
+1102.56 3923.44 0.33 3.54 0.95 3.49 0.76 1.68 0.91 1.61 1.13 1.52 1.3 1.43 1.52 1.33 
+1.72 1.21 1.9 1.04 2.15 0.91 2.39 0.72 2.59 0.54 2.84 0.32 3.09 0.13 3.32 -0.16 
+3.64 -0.5 3.73 -0.91 3.58 -1.39 1.65 -0.91 1.55 -1.04 1.36 -1.2 1.2 -1.37 0.97 -1.54 
+0.74 -1.71 0.48 -1.91 0.15 -2.13 0 -37.74 0.22 -1.04 0.56 -0.91 0.82 -0.76 1.04 -0.59 
+1.15 -0.41 1.17 -0.17 1.13 0.04 0.98 0.3 0 -7.08 -2.28 -0.5 -3.63 -0.08 -2.54 0.07 
+-2.02 0.22 -1.54 0.43 -1.17 0.69 -0.96 0.98 -0.8 1.34 -1.56 3.93 -5.03 -3.66 -2.15 -1.35 
+-2.08 -1.02 -2.15 -0.76 -2.34 -0.5 -2.63 -0.29 -3.06 -0.08 -2.63 0.08 -2.41 0.29 -2.17 0.46 
+-1.93 0.61 -1.76 0.73 -1.52 0.89 -1.37 0.99 -1.15 1.11 -1 1.21 -0.82 1.28 -1.22 2.8 
+-0.65 2.97 -0.22 3.08 8.83 0 0.22 -1.73 0.65 -1.63 1.02 -1.52 1.43 -1.3 1.78 -1.11 
+2.11 -0.84 2.43 -0.52 2.73 -0.2 3.95 0.52 3.43 1 2.95 1.43 2.41 1.69 1.89 1.91 
+1.34 2 0.82 1.97 0.28 1.87 0 11.78 -4.43 -1.62 -3.67 -0.87 -10.74 -1.63 -3.17 -0.96 
+-2.47 -1.12 -1.87 -1.26 -1.32 -1.37 -0.91 -1.49 -0.54 -1.59 -0.26 -1.67 -0.07 -1.74 -8.83 0 
+0.24 4.41 0.73 3.58 1.24 2.89 1.7 2.25 2.17 1.75 2.63 1.37 3.09 1.09 3.53 0.93 
+15.3 2.36 3.69 0.98 2.35 1.15 0.76 0.63 0.5 0.66 0.29 0.65 0.08 0.65 0 5.32 
+-0.17 1 -0.52 1.19 -0.93 1.26 -1.32 1.26 -1.75 1.15 -2.26 0.93 -2.73 0.63 -3.25 0.24 
+-3.5 -0.26 -2.93 -0.74 -2.46 -1.11 -1.95 -1.43 -1.48 -1.65 -1.02 -1.78 -0.61 -1.82 -0.2 -1.82 
+-9.44 0 f*
+1166.17 3881.58 9.41406 82.5508 re
+f*
+1246.27 3964.13 13.55 0 28.84 -82.55 -11.76 0 -8.25 24.17 -32.4 0 -8.24 -24.17 -11.76 0 
+25.91 70.77 10.59 0 -13.54 -37.16 26.49 0 -12.95 37.16 -10.59 0 4.12 11.79 f*
+1291.6 3941.12 11.2 0 15.88 -47.18 15.91 47.18 11.2 0 -21.2 -59.54 -11.79 0 -21.2 59.54 f*
+1403.5 3899.85 -0.65 -2.76 -0.8 -2.56 -0.98 -2.32 -1.13 -2.15 -1.25 -1.93 -1.41 -1.73 -1.54 -1.54 
+-1.64 -1.37 -1.79 -1.17 -1.86 -1.02 -1.95 -0.83 -2.04 -0.69 -4.32 -0.87 -4.54 -0.29 -3.11 0.24 
+-2.93 0.52 -2.76 0.79 -2.56 1.02 -2.37 1.26 -2.17 1.49 -2 1.74 -1.78 1.93 -1.58 2.14 
+-1.37 2.35 -1.17 2.54 -0.98 2.73 -0.76 2.89 -0.55 3.04 -0.32 3.21 -0.11 3.36 0.2 4.84 
+0.59 4.37 0.91 3.93 1.22 3.47 1.49 3.08 1.72 2.7 1.91 2.32 2.06 1.99 2.16 1.67 
+2.26 1.37 2.3 1.11 2.3 0.84 2.28 0.61 2.21 0.43 4.06 0.3 -0.59 -8.86 -2.56 -0.26 
+-2.75 -0.76 -2.8 -1.34 -2.71 -1.91 -2.43 -2.52 -1.09 -1.49 -0.98 -1.65 -0.82 -1.82 -0.7 -2 
+-0.5 -2.17 -0.32 -2.34 34.75 0 -0.13 2.43 -0.37 2.24 -0.57 2.06 -0.79 1.85 -0.93 1.67 
+-1.07 1.49 -1.2 1.32 -1.3 1.15 -2.75 1.84 -2.82 1.26 -2.73 0.74 -2.43 0.22 0.59 8.86 
+4.17 -0.33 2.17 -0.41 2.2 -0.65 2.19 -0.87 2.15 -1.13 2.09 -1.43 1.98 -1.75 1.87 -2.06 
+1.71 -2.45 1.54 -2.84 1.3 -3.23 1.08 -3.69 0.81 -4.14 0.5 -4.64 0.17 -5.14 -44.16 0 
+0.2 -3.11 0.67 -3.36 1.17 -3.45 1.78 -3.28 1.15 -1.54 1.3 -1.41 1.5 -1.26 1.67 -1.11 
+1.89 -0.89 2.09 -0.67 2.3 -0.43 2.54 -0.13 2.56 0.22 2.41 0.63 2.21 1.05 2.02 1.41 
+1.84 1.78 1.63 2.13 1.43 2.43 1.22 2.74 9.42 0 f*
+1417.62 3941.12 8.25 0 0 -11.19 3.61 4.82 3.25 3.49 2.95 2.37 2.63 1.41 2.34 0.63 
+2.04 0.04 1.73 -0.37 1.48 -0.61 0 -8.83 -4.71 -0.5 -3.95 -1.04 -1.71 -0.72 -1.54 -0.85 
+-1.39 -0.95 -1.2 -1.11 -1.06 -1.21 -0.89 -1.35 -1.37 -3.05 -0.78 -3.52 -0.26 -4 0 -33 
+-9.42 0 0 59.54 f*
+1454.73 3923.44 0.3 3.54 0.98 3.49 0.74 1.68 0.93 1.61 1.11 1.52 1.3 1.43 1.52 1.33 
+1.71 1.21 1.93 1.04 2.15 0.91 2.37 0.72 2.6 0.54 2.82 0.32 3.08 0.13 3.34 -0.16 
+3.65 -0.5 3.71 -0.91 3.58 -1.39 1.67 -0.91 1.52 -1.04 1.39 -1.2 1.2 -1.37 0.98 -1.54 
+0.74 -1.71 0.46 -1.91 0.15 -2.13 0 -37.74 0.22 -1.04 0.57 -0.91 0.84 -0.76 1.04 -0.59 
+1.13 -0.41 1.17 -0.17 1.13 0.04 0.98 0.3 0 -7.08 -2.28 -0.5 -3.6 -0.08 -2.56 0.07 
+-2 0.22 -1.54 0.43 -1.19 0.69 -0.95 0.98 -0.79 1.34 -1.58 3.93 -5.01 -3.66 -2.17 -1.35 
+-2.09 -1.02 -2.15 -0.76 -2.32 -0.5 -2.62 -0.29 -3.06 -0.08 -2.65 0.08 -2.38 0.29 -2.17 0.46 
+-1.96 0.61 -1.73 0.73 -1.54 0.89 -1.35 0.99 -1.17 1.11 -1 1.21 -0.82 1.28 -1.2 2.8 
+-0.67 2.97 -0.22 3.08 8.84 0 0.21 -1.73 0.65 -1.63 1.05 -1.52 1.41 -1.3 1.78 -1.11 
+2.11 -0.84 2.45 -0.52 2.72 -0.2 3.95 0.52 3.45 1 2.93 1.43 2.41 1.69 1.88 1.91 
+1.37 2 0.82 1.97 0.26 1.87 0 11.78 -4.43 -1.62 -3.66 -0.87 -10.75 -1.63 -3.17 -0.96 
+-2.47 -1.12 -1.84 -1.26 -1.35 -1.37 -0.91 -1.49 -0.52 -1.59 -0.26 -1.67 -0.09 -1.74 -8.84 0 
+0.26 4.41 0.74 3.58 1.22 2.89 1.69 2.25 2.17 1.75 2.63 1.37 3.08 1.09 3.54 0.93 
+15.3 2.36 3.69 0.98 2.37 1.15 0.74 0.63 0.49 0.66 0.29 0.65 0.09 0.65 0 5.32 
+-0.17 1 -0.52 1.19 -0.91 1.26 -1.32 1.26 -1.78 1.15 -2.23 0.93 -2.73 0.63 -3.28 0.24 
+-3.47 -0.26 -2.95 -0.74 -2.46 -1.11 -1.93 -1.43 -1.5 -1.65 -1.02 -1.78 -0.61 -1.82 -0.2 -1.82 
+-9.41 0 f*
+1557.18 3941.12 8.83 0 0 -55.42 -0.2 -4.97 -0.69 -5.01 -0.63 -2.47 -0.8 -2.39 -1.02 -2.3 
+-1.28 -2.17 -1.54 -2.02 -1.85 -1.84 -2.14 -1.63 -2.5 -1.39 -2.86 -1.15 -3.23 -0.84 -3.66 -0.52 
+-4.09 -0.17 -5.23 0.32 -4.64 0.93 -2.11 0.7 -1.93 0.84 -1.78 0.96 -1.61 1.11 -1.43 1.21 
+-1.23 1.34 -1.09 1.45 -0.89 1.56 -0.7 1.67 -0.5 1.76 -0.3 1.87 -0.11 1.95 9.42 0 
+0.3 -1.58 0.45 -1.39 1.29 -2.32 1.71 -1.78 2 -1.26 2.15 -0.85 2.21 -0.52 2.11 -0.26 
+1.91 -0.07 3.59 0.22 3.23 0.71 2.82 1.24 1.23 0.83 1.13 0.97 1.02 1.13 0.89 1.29 
+0.78 1.46 0.63 1.61 0.87 3.75 0.3 4.49 0 7.07 -2 -2.64 -2.02 -2.23 -2.06 -1.84 
+-2.17 -1.46 -2.26 -1.08 -2.4 -0.76 -2.59 -0.46 -2.75 -0.13 -3.08 0.22 -2.86 0.59 -2.63 0.98 
+-2.41 1.28 -2.19 1.58 -1.98 1.84 -1.75 2.09 -1.56 2.26 -1.37 2.43 -1.17 2.54 -0.98 2.65 
+-0.78 2.69 -1.04 5.45 -0.35 5.25 10.03 0 0.3 -4.36 0.93 -4.21 1.45 -3.89 1.93 -3.45 
+2.37 -2.91 1.3 -1.22 1.39 -1.02 1.48 -0.83 1.52 -0.61 1.59 -0.39 1.63 -0.11 2.04 0.13 
+1.89 0.41 1.76 0.67 1.63 0.89 1.47 1.11 1.35 1.29 1.23 1.47 1.08 1.61 1.78 3.63 
+1.26 3.97 0.76 4.18 0.24 4.21 -0.11 2.8 -0.32 2.61 -0.52 2.43 -0.71 2.24 -0.84 2.06 
+-1 1.89 -1.09 1.71 -1.21 1.52 -2.61 2.52 -2.76 1.8 -2.73 1.08 -2.59 0.35 -2.36 -0.35 
+-2.61 -1.08 -2.65 -1.82 -2.54 -2.56 -1.17 -1.56 -1.08 -1.74 -0.98 -1.95 -0.84 -2.11 -0.7 -2.32 
+-0.52 -2.49 -0.33 -2.72 -0.11 -2.88 -10.03 0 0.3 4.64 0.63 4.21 0.93 3.77 1.2 3.39 
+1.43 3.02 1.65 2.64 1.8 2.3 1.93 1.98 2.02 1.66 2.11 1.39 2.13 1.13 2.1 0.87 
+2.07 0.65 2 0.46 3.62 0.33 2.24 -0.18 2.28 -0.49 2.28 -0.83 2.28 -1.17 2.23 -1.47 
+2.19 -1.83 2.13 -2.17 2.04 -2.48 0 8.83 f*
+1630.21 3899.85 -0.63 -2.76 -0.82 -2.56 -0.95 -2.32 -1.13 -2.15 -1.28 -1.93 -1.41 -1.73 -1.54 -1.54 
+-1.65 -1.37 -1.75 -1.17 -1.87 -1.02 -1.98 -0.83 -2.04 -0.69 -4.29 -0.87 -4.56 -0.29 -3.1 0.24 
+-2.93 0.52 -2.76 0.79 -2.54 1.02 -2.38 1.26 -2.17 1.49 -1.97 1.74 -1.78 1.93 -1.59 2.14 
+-1.39 2.35 -1.17 2.54 -0.98 2.73 -0.76 2.89 -0.54 3.04 -0.33 3.21 -0.11 3.36 0.2 4.84 
+0.59 4.37 0.91 3.93 1.23 3.47 1.48 3.08 1.71 2.7 1.91 2.32 2.06 1.99 2.17 1.67 
+2.25 1.37 2.3 1.11 2.32 0.84 2.28 0.61 2.2 0.43 4.08 0.3 -0.61 -8.86 -2.56 -0.26 
+-2.75 -0.76 -2.8 -1.34 -2.69 -1.91 -2.46 -2.52 -1.08 -1.49 -0.96 -1.65 -0.84 -1.82 -0.67 -2 
+-0.52 -2.17 -0.33 -2.34 34.75 0 -0.11 2.43 -0.37 2.24 -0.59 2.06 -0.76 1.85 -0.93 1.67 
+-1.09 1.49 -1.19 1.32 -1.29 1.15 -2.75 1.84 -2.84 1.26 -2.74 0.74 -2.43 0.22 0.61 8.86 
+4.14 -0.33 2.17 -0.41 2.2 -0.65 2.19 -0.87 2.15 -1.13 2.08 -1.43 2 -1.75 1.87 -2.06 
+1.71 -2.45 1.52 -2.84 1.32 -3.23 1.07 -3.69 0.8 -4.14 0.52 -4.64 0.17 -5.14 -44.18 0 
+0.22 -3.11 0.65 -3.36 1.2 -3.45 1.79 -3.28 1.13 -1.54 1.3 -1.41 1.5 -1.26 1.67 -1.11 
+1.89 -0.89 2.09 -0.67 2.32 -0.43 2.54 -0.13 2.56 0.22 2.39 0.63 2.21 1.05 2.05 1.41 
+1.82 1.78 1.63 2.13 1.43 2.43 1.21 2.74 9.42 0 f*
+1735.63 3939.95 -0.17 3.11 -0.48 2.89 -0.76 2.69 -1.06 2.5 -1.33 2.28 -1.54 2.08 -1.8 1.87 
+-2 1.7 -2.2 1.48 -2.37 1.25 -2.52 1.09 -2.67 0.89 -2.8 0.67 -2.91 0.48 -2.97 0.3 
+-3.06 0.09 -3.64 -0.11 -3.38 -0.34 -3.13 -0.57 -2.91 -0.75 -2.65 -0.98 -2.41 -1.15 -2.17 -1.34 
+-1.96 -1.52 -1.69 -1.7 -1.48 -1.84 -1.24 -1.97 -1.02 -2.15 -0.78 -2.26 -0.56 -2.39 -0.33 -2.5 
+-0.11 -2.61 0.28 -4.08 0.85 -3.43 1.28 -2.87 1.71 -2.37 2.02 -1.97 2.3 -1.62 2.5 -1.35 
+2.61 -1.17 26.5 -7.08 3.04 -1.17 2.54 -1.25 2.04 -1.39 1.58 -1.5 1.17 -1.61 0.8 -1.71 
+0.46 -1.82 0.16 -1.93 -0.24 -2.8 -0.76 -2.65 -1.37 -2.41 -0.93 -1.09 -1.13 -1.02 -1.3 -0.91 
+-1.52 -0.83 -1.74 -0.71 -1.95 -0.61 -4.62 -0.84 -5.64 -0.29 -2.97 0.11 -2.75 0.3 -2.52 0.52 
+-2.3 0.7 -2.09 0.84 -1.89 1 -1.67 1.15 -1.47 1.28 -1.29 1.37 -1.11 1.47 -0.91 1.56 
+-0.74 1.63 -0.96 3.41 -0.3 3.52 -10.61 0 0.14 -2.93 0.36 -2.84 0.63 -2.73 0.89 -2.62 
+1.15 -2.48 1.39 -2.34 1.67 -2.16 1.95 -2 2.2 -1.8 2.47 -1.63 2.75 -1.39 3.04 -1.17 
+3.3 -0.93 3.6 -0.69 3.86 -0.41 4.17 -0.15 3.84 0.13 3.6 0.39 3.37 0.61 3.1 0.84 
+2.87 1.04 2.61 1.23 2.36 1.43 2.11 1.61 1.86 1.79 1.61 1.9 1.37 2.05 1.13 2.14 
+0.87 2.28 0.61 2.37 0.37 2.45 0.13 2.5 -0.09 2.06 -0.28 1.95 -1.04 3.6 -1.63 3.23 
+-2.11 2.8 -2.49 2.39 -2.8 1.97 -2.97 1.54 -3.08 1.09 -26.5 7.07 -4.6 2.43 -1.57 1.13 
+-1.12 1.17 -0.76 1.28 -0.48 1.45 -0.23 1.71 -0.07 2.05 0.11 1.61 0.26 1.52 0.45 1.41 
+0.63 1.3 1.69 2.34 2.24 1.91 2.71 1.5 3.08 1.08 3.43 0.67 3.64 0.21 4.77 -0.32 
+4.16 -0.93 3.54 -1.48 1.54 -0.93 1.37 -1.07 1.24 -1.15 1.04 -1.25 1.65 -2.82 0.97 -3.14 
+0.33 -3.41 10.61 0 f*
+1750.93 3941.12 8.83 0 0 -9.44 2.45 3.04 2.5 2.45 2.5 1.96 2.5 1.48 2.47 1.08 
+2.41 0.7 2.37 0.39 2.25 0.13 3.34 -0.29 3.32 -0.78 3.17 -1.28 2.91 -1.72 2.47 -2.13 
+1.93 -2.52 0.71 -1.41 0.52 -1.45 0.35 -1.57 0.11 -1.63 0 -46.57 -9.41 0 0 42.45 
+-0.32 2.48 -0.87 2.08 -1.32 1.73 -1.67 1.37 -1.93 1.07 -2.09 0.73 -2.11 0.43 -2.06 0.13 
+-2.89 -0.33 -2.82 -0.96 -2.69 -1.54 -2.43 -2.11 -2.06 -2.64 -1.61 -3.12 -1.04 -3.58 -0.26 -1.96 
+-0.11 -2.04 0 -34.2 -9.42 0 0 59.54 f*
+1836.92 3942.91 2.73 -0.18 2.64 -0.49 2.59 -0.81 2.47 -1.11 2.36 -1.39 2.24 -1.63 2.1 -1.89 
+1.93 -2.11 1.76 -2.3 1.56 -2.52 1.37 -2.68 1.17 -2.82 0.91 -2.98 0.7 -3.08 0.41 -3.21 
+0.13 -3.28 -0.13 -3.28 -0.41 -3.17 -0.7 -3.06 -0.91 -2.93 -1.17 -2.78 -1.37 -2.63 -1.56 -2.45 
+-1.76 -2.26 -1.93 -2.06 -2.1 -1.82 -2.24 -1.58 -2.36 -1.32 -2.47 -1.07 -2.59 -0.78 -2.64 -0.5 
+-2.73 -0.16 -2.74 0.16 -2.64 0.5 -2.59 0.78 -2.47 1.07 -2.37 1.32 -2.23 1.58 -2.09 1.82 
+-1.93 2.06 -1.78 2.26 -1.57 2.45 -1.37 2.63 -1.17 2.78 -0.91 2.93 -0.67 3.06 -0.43 3.17 
+-0.13 3.28 10 0 0.31 -4.54 0.86 -4.27 1.43 -3.9 1.96 -3.43 1.17 -1.5 1.28 -1.34 
+1.41 -1.17 1.52 -0.98 1.63 -0.8 1.74 -0.57 1.84 -0.37 1.93 -0.11 1.93 0.11 1.84 0.37 
+1.74 0.57 1.63 0.8 1.52 0.98 1.41 1.17 1.28 1.34 1.17 1.5 1.96 3.43 1.43 3.9 
+0.87 4.27 0.31 4.54 -0.31 4.58 -0.87 4.34 -1.43 3.99 -1.96 3.54 -1.17 1.54 -1.28 1.41 
+-1.41 1.22 -1.52 1.04 -1.63 0.83 -1.74 0.61 -1.84 0.37 -1.93 0.13 -1.93 -0.13 -1.84 -0.37 
+-1.74 -0.61 -1.62 -0.83 -1.52 -1.04 -1.41 -1.22 -1.28 -1.41 -1.17 -1.54 -1.96 -3.54 -1.43 -3.99 
+-0.86 -4.34 -0.31 -4.58 -10 0 0.13 3.28 0.43 3.21 0.67 3.08 0.91 2.98 1.17 2.82 
+1.37 2.68 1.57 2.52 1.78 2.3 1.93 2.11 2.09 1.89 2.23 1.63 2.37 1.39 2.47 1.11 
+2.59 0.81 2.64 0.49 2.74 0.18 f*
+1869.9 3941.12 10.59 0 11.79 -45.4 11.78 45.4 10.59 0 11.79 -45.4 11.76 45.4 10.61 0 
+-17.08 -59.54 -10.59 0 -12.37 44.81 -11.2 -44.81 -10.59 0 -17.08 59.54 f*
+2056.58 3938.17 -0.76 3.52 -0.93 3.26 -1.11 2.97 -1.28 2.71 -1.45 2.48 -1.61 2.21 -1.8 1.97 
+-1.95 1.76 -2.13 1.52 -2.3 1.29 -2.45 1.08 -2.6 0.87 -2.78 0.67 -2.91 0.46 -3.1 0.28 
+-3.23 0.09 -4.3 -0.2 -4.06 -0.63 -3.82 -1.02 -3.55 -1.39 -3.32 -1.76 -3.06 -2.08 -2.8 -2.43 
+-2.54 -2.73 -2.26 -3.02 -1.99 -3.28 -1.72 -3.56 -1.43 -3.77 -1.15 -4 -0.84 -4.21 -0.57 -4.41 
+-0.26 -4.55 0.18 -5.14 0.56 -4.84 0.91 -4.52 1.26 -4.16 1.56 -3.86 1.87 -3.54 2.13 -3.21 
+2.43 -2.86 2.65 -2.54 2.91 -2.22 3.11 -1.89 3.3 -1.52 3.47 -1.22 3.64 -0.84 3.79 -0.52 
+3.91 -0.17 4.25 0.17 3.9 0.5 3.59 0.8 3.28 1.11 2.97 1.39 2.66 1.63 2.41 1.88 
+2.11 2.11 1.86 2.3 1.61 2.52 1.37 2.67 1.13 2.82 0.91 2.97 0.72 3.09 0.5 3.19 
+0.3 3.3 -10.59 0 -1.09 -5.73 -1.52 -4.84 -0.93 -2.08 -1.04 -1.89 -1.2 -1.66 -1.3 -1.5 
+-1.45 -1.28 -1.59 -1.09 -1.75 -0.93 -1.89 -0.73 -2.04 -0.57 -2.24 -0.39 -4.95 -0.31 -3.41 0.17 
+-3.16 0.5 -2.91 0.81 -2.7 1.13 -2.45 1.39 -2.22 1.67 -1.99 1.91 -1.76 2.15 -1.57 2.39 
+-1.32 2.58 -1.11 2.76 -0.91 2.95 -0.69 3.11 -0.5 3.25 -0.29 3.37 -0.11 3.49 0.13 3.86 
+0.41 3.66 0.65 3.45 0.89 3.21 1.11 3 1.34 2.78 1.54 2.52 1.74 2.28 1.91 2.04 
+2.06 1.75 2.23 1.52 2.39 1.26 2.5 0.98 2.63 0.71 2.73 0.43 2.82 0.16 4.1 -0.3 
+3.86 -0.89 3.54 -1.45 3.14 -2 2.7 -2.54 1.13 -1.45 1 -1.56 0.85 -1.72 0.67 -1.8 
+0.5 -1.93 0.3 -2.06 10.62 0 f*
+2094.27 3942.91 2.71 -0.18 2.67 -0.49 2.58 -0.81 2.48 -1.11 2.36 -1.39 2.24 -1.63 2.08 -1.89 
+1.93 -2.11 1.76 -2.3 1.59 -2.52 1.37 -2.68 1.15 -2.82 0.93 -2.98 0.67 -3.08 0.41 -3.21 
+0.16 -3.28 -0.16 -3.28 -0.41 -3.17 -0.67 -3.06 -0.93 -2.93 -1.15 -2.78 -1.37 -2.63 -1.59 -2.45 
+-1.76 -2.26 -1.93 -2.06 -2.08 -1.82 -2.24 -1.58 -2.36 -1.32 -2.48 -1.07 -2.58 -0.78 -2.67 -0.5 
+-2.71 -0.16 -2.73 0.16 -2.67 0.5 -2.58 0.78 -2.47 1.07 -2.37 1.32 -2.23 1.58 -2.08 1.82 
+-1.93 2.06 -1.76 2.26 -1.58 2.45 -1.37 2.63 -1.16 2.78 -0.93 2.93 -0.67 3.06 -0.41 3.17 
+-0.15 3.28 10.03 0 0.28 -4.54 0.89 -4.27 1.43 -3.9 1.96 -3.43 1.17 -1.5 1.28 -1.34 
+1.41 -1.17 1.5 -0.98 1.65 -0.8 1.71 -0.57 1.84 -0.37 1.96 -0.11 1.93 0.11 1.84 0.37 
+1.74 0.57 1.63 0.8 1.5 0.98 1.41 1.17 1.29 1.34 1.17 1.5 1.95 3.43 1.43 3.9 
+0.89 4.27 0.29 4.54 -0.29 4.58 -0.89 4.34 -1.43 3.99 -1.95 3.54 -1.17 1.54 -1.29 1.41 
+-1.41 1.22 -1.5 1.04 -1.62 0.83 -1.74 0.61 -1.84 0.37 -1.93 0.13 -1.96 -0.13 -1.84 -0.37 
+-1.71 -0.61 -1.65 -0.83 -1.5 -1.04 -1.41 -1.22 -1.28 -1.41 -1.17 -1.54 -1.96 -3.54 -1.43 -3.99 
+-0.89 -4.34 -0.28 -4.58 -10.03 0 0.15 3.28 0.41 3.21 0.67 3.08 0.93 2.98 1.16 2.82 
+1.37 2.68 1.58 2.52 1.76 2.3 1.93 2.11 2.08 1.89 2.23 1.63 2.37 1.39 2.47 1.11 
+2.58 0.81 2.67 0.49 2.73 0.18 f*
+2127.82 3941.12 11.2 0 15.91 -47.18 15.88 47.18 11.2 0 -21.21 -59.54 -11.78 0 -21.2 59.54 f*
+2239.71 3899.85 -0.63 -2.76 -0.82 -2.56 -0.98 -2.32 -1.13 -2.15 -1.26 -1.93 -1.41 -1.73 -1.54 -1.54 
+-1.65 -1.37 -1.75 -1.17 -1.87 -1.02 -1.98 -0.83 -2.04 -0.69 -4.32 -0.87 -4.54 -0.29 -3.1 0.24 
+-2.93 0.52 -2.75 0.79 -2.56 1.02 -2.36 1.26 -2.17 1.49 -1.97 1.74 -1.8 1.93 -1.59 2.14 
+-1.37 2.35 -1.17 2.54 -0.98 2.73 -0.75 2.89 -0.55 3.04 -0.33 3.21 -0.11 3.36 0.2 4.84 
+0.58 4.37 0.92 3.93 1.21 3.47 1.5 3.08 1.71 2.7 1.91 2.32 2.06 1.99 2.17 1.67 
+2.26 1.37 2.3 1.11 2.3 0.84 2.28 0.61 2.22 0.43 4.05 0.3 -0.58 -8.86 -2.56 -0.26 
+-2.76 -0.76 -2.8 -1.34 -2.69 -1.91 -2.45 -2.52 -1.09 -1.49 -0.98 -1.65 -0.82 -1.82 -0.68 -2 
+-0.52 -2.17 -0.33 -2.34 34.74 0 -0.12 2.43 -0.35 2.24 -0.58 2.06 -0.79 1.85 -0.93 1.67 
+-1.06 1.49 -1.2 1.32 -1.3 1.15 -2.73 1.84 -2.84 1.26 -2.74 0.74 -2.43 0.22 0.58 8.86 
+4.17 -0.33 2.17 -0.41 2.19 -0.65 2.2 -0.87 2.15 -1.13 2.09 -1.43 1.99 -1.75 1.87 -2.06 
+1.7 -2.45 1.54 -2.84 1.32 -3.23 1.07 -3.69 0.8 -4.14 0.5 -4.64 0.17 -5.14 -44.16 0 
+0.21 -3.11 0.65 -3.36 1.2 -3.45 1.78 -3.28 1.13 -1.54 1.3 -1.41 1.5 -1.26 1.66 -1.11 
+1.89 -0.89 2.08 -0.67 2.32 -0.43 2.52 -0.13 2.58 0.22 2.39 0.63 2.21 1.05 2.02 1.41 
+1.84 1.78 1.63 2.13 1.43 2.43 1.21 2.74 9.42 0 f*
+2253.84 3941.12 8.25 0 0 -11.19 3.6 4.82 3.26 3.49 2.95 2.37 2.65 1.41 2.32 0.63 
+2.04 0.04 1.74 -0.37 1.47 -0.61 0 -8.83 -4.71 -0.5 -3.95 -1.04 -1.71 -0.72 -1.54 -0.85 
+-1.37 -0.95 -1.22 -1.11 -1.07 -1.21 -0.89 -1.35 -1.37 -3.05 -0.78 -3.52 -0.24 -4 0 -33 
+-9.45 0 0 59.54 f*
+2325.11 3964.13 55.36 0 0 -9.44 -44.77 0 0 -26.54 39.45 0 0 -9.42 ^ 
+0 -37.15 -10.59 0 0 82.55 f*
+2392.23 3941.12 8.24 0 0 -11.19 3.6 4.82 3.25 3.49 2.96 2.37 2.64 1.41 2.32 0.63 
+2.04 0.04 1.74 -0.37 1.47 -0.61 0 -8.83 -4.7 -0.5 -3.95 -1.04 -1.72 -0.72 -1.54 -0.85 
+-1.39 -0.95 -1.2 -1.11 -1.06 -1.21 -0.89 -1.35 -1.37 -3.05 -0.78 -3.52 -0.24 -4 0 -33 
+-9.44 0 0 59.54 f*
+2429.34 3923.44 0.3 3.54 0.98 3.49 0.74 1.68 0.93 1.61 1.11 1.52 1.32 1.43 1.5 1.33 
+1.71 1.21 1.93 1.04 2.14 0.91 2.37 0.72 2.61 0.54 2.82 0.32 3.09 0.13 3.34 -0.16 
+3.64 -0.5 3.73 -0.91 3.56 -1.39 1.67 -0.91 1.52 -1.04 1.39 -1.2 1.19 -1.37 0.98 -1.54 
+0.74 -1.71 0.45 -1.91 0.18 -2.13 0 -37.74 0.19 -1.04 0.57 -0.91 0.85 -0.76 1.04 -0.59 
+1.13 -0.41 1.17 -0.17 1.13 0.04 0.97 0.3 0 -7.08 -2.28 -0.5 -3.6 -0.08 -2.56 0.07 
+-2 0.22 -1.54 0.43 -1.2 0.69 -0.93 0.98 -0.8 1.34 -1.59 3.93 -5.02 -3.66 -2.17 -1.35 
+-2.08 -1.02 -2.15 -0.76 -2.32 -0.5 -2.63 -0.29 -3.06 -0.08 -2.64 0.08 -2.39 0.29 -2.17 0.46 
+-1.95 0.61 -1.73 0.73 -1.54 0.89 -1.34 0.99 -1.18 1.11 -0.98 1.21 -0.84 1.28 -1.2 2.8 
+-0.67 2.97 -0.2 3.08 8.84 0 0.21 -1.73 0.63 -1.63 1.04 -1.52 1.41 -1.3 1.79 -1.11 
+2.13 -0.84 2.43 -0.52 2.71 -0.2 3.95 0.52 3.45 1 2.93 1.43 2.41 1.69 1.89 1.91 
+1.36 2 0.83 1.97 0.26 1.87 0 11.78 -4.43 -1.62 -3.67 -0.87 -10.75 -1.63 -3.16 -0.96 
+-2.46 -1.12 -1.87 -1.26 -1.34 -1.37 -0.89 -1.49 -0.55 -1.59 -0.26 -1.67 -0.06 -1.74 -8.84 0 
+0.24 4.41 0.74 3.58 1.21 2.89 1.69 2.25 2.18 1.75 2.62 1.37 3.08 1.09 3.54 0.93 
+15.32 2.36 3.66 0.98 2.36 1.15 0.74 0.63 0.5 0.66 0.28 0.65 0.09 0.65 0 5.32 
+-0.18 1 -0.52 1.19 -0.91 1.26 -1.32 1.26 -1.78 1.15 -2.23 0.93 -2.74 0.63 -3.27 0.24 
+-3.47 -0.26 -2.96 -0.74 -2.43 -1.11 -1.96 -1.43 -1.47 -1.65 -1.04 -1.78 -0.61 -1.82 -0.2 -1.82 
+-9.42 0 f*
+2538.29 3921.07 -9.43 0 -0.41 2.43 -0.8 2.34 -1.19 2.2 -1.57 1.95 -1.97 1.67 -2.35 1.29 
+-2.73 0.82 -3.11 0.29 -1.93 -0.11 -1.82 -0.34 -1.72 -0.57 -1.58 -0.75 -1.48 -0.98 -1.35 -1.15 
+-1.24 -1.34 -1.11 -1.52 -1.87 -3.54 -1.32 -4.12 -0.83 -4.64 -0.25 -5.1 0.3 -5.03 0.88 -4.43 
+1.43 -3.84 0.91 -1.69 1.05 -1.52 1.17 -1.35 1.28 -1.19 1.41 -1 1.52 -0.85 1.63 -0.66 
+1.73 -0.48 1.82 -0.28 1.95 -0.09 1.8 0.09 1.67 0.3 1.54 0.45 1.41 0.61 2.45 1.65 
+1.93 2.04 1.5 2.34 1.02 2.45 0.61 2.47 0.2 2.32 9.42 0 -0.09 -2.3 -0.3 -2.28 
+-0.48 -2.19 -0.67 -2.15 -0.87 -2.04 -1.06 -1.95 -1.25 -1.82 -1.46 -1.71 -1.63 -1.54 -1.84 -1.41 
+-2.02 -1.21 -2.24 -1.02 -2.41 -0.84 -2.61 -0.61 -2.8 -0.37 -3 -0.13 -3.4 0.2 -3.13 0.54 
+-2.87 0.89 -2.6 1.21 -2.36 1.5 -2.13 1.76 -1.89 1.99 -1.65 2.22 -1.43 2.43 -1.24 2.59 
+-1 2.73 -0.82 2.85 -0.63 2.95 -0.44 3.02 -0.32 6.17 0.29 4.23 0.63 3.89 0.93 3.51 
+1.22 3.2 1.43 2.86 1.65 2.56 1.82 2.26 1.96 1.95 2.06 1.7 2.15 1.43 2.14 1.17 
+2.17 0.93 2.15 0.69 2.09 0.48 3.82 0.39 4.14 -0.29 3.99 -0.89 1.91 -0.7 1.84 -0.85 
+1.75 -1.02 1.65 -1.21 1.54 -1.39 1.43 -1.58 1.29 -1.78 1.15 -2 0.98 -2.19 0.8 -2.43 
+0.63 -2.62 0.44 -2.88 f*
+2551.24 3957.05 9.42 0 0 -15.93 9.42 0 0 -7.66 ^ 0 -42.45 0.26 -1.71 
+0.71 -1.17 1.08 -0.74 1.32 -0.37 1.52 -0.09 1.56 0.09 2.95 0.45 0 -7.68 -3.45 -0.8 
+-2.25 -0.26 -2.52 -0.11 -2.15 0.3 -1.99 0.48 -1.81 0.7 -1.56 0.89 -1.3 1.11 -0.98 1.35 
+-0.61 1.58 -0.22 1.84 0 46.59 -8.25 0 0 7.66 ^ 0 15.93 f*
+2580.68 3952.34 9.41797 11.7852 re
+f*
+2580.68 3881.57 9.41797 59.5508 re
+f*
+2629.55 3942.91 2.73 -0.18 2.67 -0.49 2.56 -0.81 2.47 -1.11 2.36 -1.39 2.23 -1.63 2.11 -1.89 
+1.93 -2.11 1.76 -2.3 1.57 -2.52 1.39 -2.68 1.15 -2.82 0.91 -2.98 0.7 -3.08 0.41 -3.21 
+0.13 -3.28 -0.13 -3.28 -0.41 -3.17 -0.7 -3.06 -0.91 -2.93 -1.15 -2.78 -1.39 -2.63 -1.57 -2.45 
+-1.76 -2.26 -1.93 -2.06 -2.11 -1.82 -2.23 -1.58 -2.36 -1.32 -2.47 -1.07 -2.56 -0.78 -2.67 -0.5 
+-2.73 -0.16 -2.73 0.16 -2.64 0.5 -2.59 0.78 -2.48 1.07 -2.36 1.32 -2.24 1.58 -2.08 1.82 
+-1.93 2.06 -1.78 2.26 -1.56 2.45 -1.37 2.63 -1.15 2.78 -0.93 2.93 -0.67 3.06 -0.43 3.17 
+-0.13 3.28 10 0 0.31 -4.54 0.86 -4.27 1.43 -3.9 1.97 -3.43 1.15 -1.5 1.3 -1.34 
+1.39 -1.17 1.52 -0.98 1.63 -0.8 1.74 -0.57 1.84 -0.37 1.93 -0.11 1.93 0.11 1.84 0.37 
+1.73 0.57 1.63 0.8 1.52 0.98 1.41 1.17 1.28 1.34 1.17 1.5 1.96 3.43 1.43 3.9 
+0.87 4.27 0.31 4.54 -0.31 4.58 -0.87 4.34 -1.43 3.99 -1.96 3.54 -1.17 1.54 -1.28 1.41 
+-1.41 1.22 -1.52 1.04 -1.63 0.83 -1.73 0.61 -1.84 0.37 -1.93 0.13 -1.93 -0.13 -1.84 -0.37 
+-1.74 -0.61 -1.62 -0.83 -1.52 -1.04 -1.39 -1.22 -1.3 -1.41 -1.15 -1.54 -1.97 -3.54 -1.43 -3.99 
+-0.86 -4.34 -0.31 -4.58 -10 0 0.13 3.28 0.43 3.21 0.67 3.08 0.93 2.98 1.15 2.82 
+1.37 2.68 1.56 2.52 1.78 2.3 1.93 2.11 2.08 1.89 2.24 1.63 2.36 1.39 2.48 1.11 
+2.59 0.81 2.64 0.49 2.73 0.18 f*
+2669.59 3941.12 8.84 0 0 -9.44 2.47 3.04 2.48 2.45 2.49 1.96 2.5 1.48 2.48 1.08 
+2.43 0.7 2.34 0.39 2.25 0.13 3.34 -0.29 3.32 -0.78 3.19 -1.28 2.88 -1.72 2.47 -2.13 
+1.93 -2.52 0.72 -1.41 0.54 -1.45 0.32 -1.57 0.11 -1.63 0 -46.57 -9.42 0 0 42.45 
+-0.3 2.48 -0.89 2.08 -1.33 1.73 -1.67 1.37 -1.93 1.07 -2.08 0.73 -2.11 0.43 -2.06 0.13 
+-2.89 -0.33 -2.82 -0.96 -2.69 -1.54 -2.41 -2.11 -2.08 -2.64 -1.61 -3.12 -1.02 -3.58 -0.29 -1.96 
+-0.08 -2.04 0 -34.2 -9.45 0 0 59.54 f*
+2782.68 3964.13 5.88 0 -3.71 -6.84 -3.14 -6.79 -2.65 -6.75 -2.12 -6.75 -1.63 -6.75 -1.15 -6.75 
+-0.67 -6.79 -0.24 -6.84 0.24 -6.01 0.67 -6.42 1.15 -6.7 1.63 -6.88 2.12 -6.9 2.65 -6.8 
+3.14 -6.58 3.71 -6.18 -5.88 0 -1.98 2.45 -1.89 2.74 -3.56 6.07 -3.21 6.73 -2.78 7.14 
+-2.28 7.27 -1.72 7.14 -1.08 6.8 -0.37 6.14 0.11 3.76 0.26 3.71 1.08 7.32 1.72 7.16 
+2.28 6.96 2.78 6.73 3.21 6.49 3.56 6.23 3.86 5.91 f*
+2816.23 3958.81 1.97 -0.09 1.91 -0.3 1.84 -0.48 1.78 -0.67 3.3 -1.81 2.89 -2.4 2.38 -2.89 
+1.83 -3.29 0.65 -1.79 0.48 -1.84 0.3 -1.93 0.11 -1.95 -0.11 -1.98 -0.3 -1.91 -0.48 -1.87 
+-0.65 -1.79 -1.83 -3.29 -2.38 -2.89 -2.89 -2.38 -3.3 -1.83 -1.78 -0.65 -1.84 -0.5 -1.91 -0.28 
+-1.97 -0.11 -1.96 0.11 -1.91 0.28 -1.87 0.5 -1.78 0.65 -3.29 1.83 -2.89 2.38 -2.39 2.89 
+-1.8 3.29 -0.65 1.79 -0.5 1.87 -0.3 1.91 -0.08 1.98 8.24 0 0.24 -2.17 0.67 -2.09 
+1.07 -1.89 1.41 -1.67 1.66 -1.41 1.89 -1.07 2.06 -0.7 2.17 -0.24 2.16 0.24 2.07 0.7 
+1.91 1.07 1.67 1.41 1.39 1.67 1.07 1.89 0.7 2.09 0.24 2.17 -0.24 2.17 -0.7 2.06 
+-1.07 1.89 -1.39 1.69 -1.67 1.39 -1.91 1.09 -2.07 0.67 -2.16 0.24 -2.17 -0.24 -2.06 -0.67 
+-1.89 -1.09 -1.66 -1.39 -1.41 -1.69 -1.07 -1.89 -0.67 -2.06 -0.24 -2.17 -8.24 0 0.08 1.95 
+0.3 1.93 0.5 1.84 0.65 1.79 1.8 3.29 2.39 2.89 2.89 2.4 3.29 1.81 1.78 0.67 
+1.87 0.48 1.91 0.3 1.96 0.09 f*
+2862.17 3961.76 7.66 0 -44.77 -82.55 -7.64 0 44.74 82.55 f*
+2871.59 3918.14 1.97 -0.11 1.91 -0.3 1.85 -0.48 1.78 -0.67 3.3 -1.8 2.89 -2.39 2.38 -2.91 
+1.8 -3.3 0.68 -1.78 0.47 -1.84 0.31 -1.93 0.11 -1.95 -0.11 -1.98 -0.31 -1.91 -0.47 -1.86 
+-0.68 -1.78 -1.8 -3.3 -2.38 -2.88 -2.89 -2.39 -3.3 -1.82 -1.78 -0.65 -1.85 -0.48 -1.91 -0.3 
+-1.97 -0.11 -1.95 0.11 -1.93 0.3 -1.85 0.48 -1.78 0.65 -3.3 1.82 -2.89 2.39 -2.39 2.88 
+-1.8 3.3 -0.67 1.78 -0.48 1.86 -0.31 1.91 -0.08 1.98 8.22 0 0.26 -2.18 0.67 -2.06 
+1.06 -1.91 1.41 -1.68 1.67 -1.4 1.89 -1.07 2.06 -0.68 2.17 -0.24 2.17 0.24 2.06 0.68 
+1.89 1.07 1.7 1.4 1.39 1.68 1.06 1.91 0.7 2.06 0.24 2.18 -0.24 2.16 -0.7 2.06 
+-1.06 1.91 -1.39 1.67 -1.7 1.39 -1.89 1.08 -2.06 0.67 -2.17 0.24 -2.17 -0.24 -2.06 -0.67 
+-1.89 -1.08 -1.67 -1.39 -1.41 -1.67 -1.06 -1.91 -0.67 -2.06 -0.26 -2.16 -8.22 0 0.08 1.95 
+0.31 1.93 0.48 1.84 0.67 1.78 1.8 3.3 2.39 2.91 2.89 2.39 3.3 1.8 1.78 0.67 
+1.85 0.48 1.93 0.3 1.95 0.11 f*
+2898.68 3964.13 5.9 0 4.52 -6.92 3.88 -7.04 3.26 -7.05 2.63 -7.01 2.02 -6.9 1.41 -6.71 
+0.84 -6.46 0.29 -6.17 -0.31 -6.16 -0.89 -6.51 -1.5 -6.73 -2.08 -6.83 -2.67 -6.84 -3.23 -6.73 
+-3.8 -6.51 -4.36 -6.16 -5.9 0 3.53 6.18 3.08 6.23 2.63 6.32 2.17 6.4 1.69 6.54 
+1.24 6.73 0.71 6.92 0.26 7.16 -0.22 6.99 -0.7 6.8 -1.15 6.7 -1.63 6.64 -2.12 6.64 
+-2.63 6.7 -3.16 6.82 -3.71 6.97 f*
+cleartomark end end pagesave restore
+ showpage
+%%PageTrailer
+%%Trailer
+%%Pages: 1
diff --git a/doc/xmp/fgr1.png b/doc/xmp/fgr1.png
new file mode 100755
index 0000000..a7b916c
Binary files /dev/null and b/doc/xmp/fgr1.png differ
diff --git a/doc/xmp/fgr1.txt b/doc/xmp/fgr1.txt
new file mode 100644
index 0000000..1e5dbab
--- /dev/null
+++ b/doc/xmp/fgr1.txt
@@ -0,0 +1 @@
+Global Distribution of Long-term Average.
diff --git a/doc/xmp/fgr2.eps b/doc/xmp/fgr2.eps
new file mode 100755
index 0000000..41cfaea
--- /dev/null
+++ b/doc/xmp/fgr2.eps
@@ -0,0 +1,4568 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 22 118 589 685
+%%HiResBoundingBox: 22.860001 118.980005 588.060022 684.000026
+%...................................
+%%Creator: GPL Ghostscript 871 (epswrite)
+%%CreationDate: 2013/04/07 15:38:19
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+% This copyright applies to everything between here and the %%EndProlog:
+% Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
+%%BeginResource: procset GS_epswrite_2_0_1001 1.001 0
+/GS_epswrite_2_0_1001 80 dict dup begin
+/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
+4 index eq and{ pop pop pop}{ PageSize dup  1
+5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec}
+{ pop/setpagedevice where
+{ pop 1 dict dup /PageSize PageSize put setpagedevice}
+{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
+setpage}if}ifelse}ifelse}ifelse} bind def
+/!{bind def}bind def/#{load def}!/N/counttomark #
+/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
+/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
+/w/setlinewidth #/J/setlinecap #
+/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
+/m/moveto #/l/lineto #/c/rcurveto #
+/p{N 2 idiv{N -2 roll rlineto}repeat}!
+/P{N 0 gt{N -2 roll moveto p}if}!
+/h{p closepath}!/H{P closepath}!
+/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
+/re{4 -2 roll m exch dup lx exch ly neg lx h}!
+/^{3 index neg 3 index neg}!
+/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
+/q/gsave #/Q/grestore #/rf{re fill}!
+/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
+/|={pop exch 4 1 roll 1 array astore cvx 3 array astore cvx exch 1 index def exec}!
+/|{exch string readstring |=}!
+/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
+/@/currentfile #/${+ @ |}!
+/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
+3 1 roll}repeat pop pop true}!
+/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
+/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
+/Ic{exch Ix false 3 colorimage}!
+/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
+/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
+/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
+/@F{@ &2<<F}!/@C{@X &2 FX}!
+/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
+/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
+/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
+currentdict end image}!
+/~{@ read {pop} if}!
+end def
+%%EndResource
+/pagesave null def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+GS_epswrite_2_0_1001 begin
+/pagesave save store 197 dict begin
+0.18 0.18 scale
+%%EndPageSetup
+gsave mark
+Q q
+127.777 661.109 3138.89 3138.89 re
+Y*
+255 G
+127.777 661.109 3138.89 3138.89 re
+f*
+Q q
+594.445 2455.55 2550 955.555 re
+Y*
+222 176 255 rG
+695.42 2987.67 0 172.83 47.94 -1.67 47.94 -12.74 47.93 -8.74 47.94 19.94 47.94 -20.7 47.94 -3.95 
+47.94 -35.57 47.94 67.99 47.94 5.86 47.94 -39.11 47.94 1.8 47.94 -5.08 47.94 9.7 47.93 -5.69 
+47.94 22.03 47.94 -17.6 47.94 -71.36 47.94 23.48 47.94 -20.16 47.94 14.56 47.96 24.7 47.94 2.23 
+47.94 -45.42 47.93 -5.7 47.94 42.23 47.94 4.6 47.94 31.53 47.94 -42.96 47.94 20.18 47.94 -21.05 
+47.94 -6.3 47.94 4.19 47.94 -66.95 47.93 25.04 47.94 37.87 47.94 13.58 47.94 -3.95 47.94 -30.58 
+47.94 6.36 47.94 -42.88 47.94 -27.23 47.94 1.74 47.94 28.25 47.94 -20.83 47.93 -0.09 47.94 19.49 
+47.94 -31.46 47.94 28.25 47.94 -32.14 0 -121.89 -47.94 6.49 -47.94 -35.03 -47.94 47.27 -47.94 -69.44 
+-47.93 24.54 -47.94 28.11 -47.94 29.47 -47.94 -22.05 -47.94 -1.87 -47.94 52.89 -47.94 5.71 -47.94 -3.52 
+-47.94 52.88 -47.94 -24.86 -47.94 -46.45 -47.93 -7.14 -47.94 -3.49 -47.94 8.59 -47.94 33.7 -47.94 8.48 
+-47.94 10.39 -47.94 7.01 -47.94 -41.97 -47.94 -22.61 -47.94 25.56 -47.93 -15.75 -47.94 35.85 -47.94 14.09 
+-47.96 1.32 -47.94 -53.69 -47.94 14.65 -47.94 38.8 -47.94 35.13 -47.94 -60.59 -47.94 70.29 -47.93 -53.08 
+-47.94 4.75 -47.94 1.39 -47.94 25.43 -47.94 0.46 -47.94 11.59 -47.94 -33.42 -47.94 21.62 -47.94 -6.95 
+-47.94 8.18 -47.94 9.03 -47.93 -18.91 -47.94 0.33 -47.94 0.17 f*
+Q q
+599.543 2456.96 2540.76 952.781 re
+Y*
+222 176 255 rG
+695.42 2987.67 0 172.83 47.94 -1.67 47.94 -12.74 47.93 -8.74 47.94 19.94 47.94 -20.7 47.94 -3.95 
+47.94 -35.57 47.94 67.99 47.94 5.86 47.94 -39.11 47.94 1.8 47.94 -5.08 47.94 9.7 47.93 -5.69 
+47.94 22.03 47.94 -17.6 47.94 -71.36 47.94 23.48 47.94 -20.16 47.94 14.56 47.96 24.7 47.94 2.23 
+47.94 -45.42 47.93 -5.7 47.94 42.23 47.94 4.6 47.94 31.53 47.94 -42.96 47.94 20.18 47.94 -21.05 
+47.94 -6.3 47.94 4.19 47.94 -66.95 47.93 25.04 47.94 37.87 47.94 13.58 47.94 -3.95 47.94 -30.58 
+47.94 6.36 47.94 -42.88 47.94 -27.23 47.94 1.74 47.94 28.25 47.94 -20.83 47.93 -0.09 47.94 19.49 
+47.94 -31.46 47.94 28.25 47.94 -32.14 0 -121.89 -47.94 6.49 -47.94 -35.03 -47.94 47.27 -47.94 -69.44 
+-47.93 24.54 -47.94 28.11 -47.94 29.47 -47.94 -22.05 -47.94 -1.87 -47.94 52.89 -47.94 5.71 -47.94 -3.52 
+-47.94 52.88 -47.94 -24.86 -47.94 -46.45 -47.93 -7.14 -47.94 -3.49 -47.94 8.59 -47.94 33.7 -47.94 8.48 
+-47.94 10.39 -47.94 7.01 -47.94 -41.97 -47.94 -22.61 -47.94 25.56 -47.93 -15.75 -47.94 35.85 -47.94 14.09 
+-47.96 1.32 -47.94 -53.69 -47.94 14.65 -47.94 38.8 -47.94 35.13 -47.94 -60.59 -47.94 70.29 -47.93 -53.08 
+-47.94 4.75 -47.94 1.39 -47.94 25.43 -47.94 0.46 -47.94 11.59 -47.94 -33.42 -47.94 21.62 -47.94 -6.95 
+-47.94 8.18 -47.94 9.03 -47.93 -18.91 -47.94 0.33 -47.94 0.17 f*
+245 186 r5
+695.42 3080.08 0 154.47 47.94 41.75 47.94 -152.32 47.93 35.77 47.94 13.36 47.94 48.96 47.94 -18.67 
+47.94 72.7 47.94 57.18 47.94 -225 47.94 143.29 47.94 -145.86 47.94 13.83 47.94 37.8 47.93 -74.91 
+47.94 -1.67 47.94 44.12 47.94 -17.06 47.94 47.61 47.94 -2.82 47.94 -33.68 47.96 -13.32 47.94 50.28 
+47.94 -89.95 47.93 0.33 47.94 35.63 47.94 -83.16 47.94 125.21 47.94 55.63 47.94 -125.85 47.94 -66.99 
+47.94 86.67 47.94 -110.96 47.94 136.7 47.93 -116.86 47.94 1.2 47.94 189.56 47.94 -48.48 47.94 -49.93 
+47.94 47.79 47.94 -22.92 47.94 -131.34 47.94 18.64 47.94 52.21 47.94 14.65 47.93 -172.27 47.94 94.14 
+47.94 -51.26 47.94 -28.54 47.94 -39.91 0 -91.43 -47.94 -20.57 -47.94 -165.11 -47.94 6.36 -47.94 89.69 
+-47.93 132.03 -47.94 112 -47.94 -125.62 -47.94 47.63 -47.94 72.29 -47.94 63.87 -47.94 28.86 -47.94 -3.55 
+-47.94 -88.87 -47.94 -125.91 -47.94 75.2 -47.93 82.55 -47.94 -107.9 -47.94 4.5 -47.94 92.27 -47.94 6.54 
+-47.94 128.69 -47.94 -124.71 -47.94 -121.25 -47.94 97.85 -47.94 33.12 -47.93 -37 -47.94 -50.11 -47.94 96.96 
+-47.96 -25.87 -47.94 52.76 -47.94 -3.41 -47.94 -55.58 -47.94 26.24 -47.94 -110.07 -47.94 100.45 -47.93 -77.73 
+-47.94 148.18 -47.94 -107.86 -47.94 -0.26 -47.94 97.55 -47.94 131.49 -47.94 -129.66 -47.94 -66.17 -47.94 65.28 
+-47.94 -10.35 -47.94 -26.97 -47.93 36.83 -47.94 -8.29 -47.94 59.33 f*
+695.42 3080.08 0 154.47 47.94 41.75 47.94 -152.32 47.93 35.77 47.94 13.36 47.94 48.96 47.94 -18.67 
+47.94 72.7 47.94 57.18 47.94 -225 47.94 143.29 47.94 -145.86 47.94 13.83 47.94 37.8 47.93 -74.91 
+47.94 -1.67 47.94 44.12 47.94 -17.06 47.94 47.61 47.94 -2.82 47.94 -33.68 47.96 -13.32 47.94 50.28 
+47.94 -89.95 47.93 0.33 47.94 35.63 47.94 -83.16 47.94 125.21 47.94 55.63 47.94 -125.85 47.94 -66.99 
+47.94 86.67 47.94 -110.96 47.94 136.7 47.93 -116.86 47.94 1.2 47.94 189.56 47.94 -48.48 47.94 -49.93 
+47.94 47.79 47.94 -22.92 47.94 -131.34 47.94 18.64 47.94 52.21 47.94 14.65 47.93 -172.27 47.94 94.14 
+47.94 -51.26 47.94 -28.54 47.94 -39.91 0 -91.43 -47.94 -20.57 -47.94 -165.11 -47.94 6.36 -47.94 89.69 
+-47.93 132.03 -47.94 112 -47.94 -125.62 -47.94 47.63 -47.94 72.29 -47.94 63.87 -47.94 28.86 -47.94 -3.55 
+-47.94 -88.87 -47.94 -125.91 -47.94 75.2 -47.93 82.55 -47.94 -107.9 -47.94 4.5 -47.94 92.27 -47.94 6.54 
+-47.94 128.69 -47.94 -124.71 -47.94 -121.25 -47.94 97.85 -47.94 33.12 -47.93 -37 -47.94 -50.11 -47.94 96.96 
+-47.96 -25.87 -47.94 52.76 -47.94 -3.41 -47.94 -55.58 -47.94 26.24 -47.94 -110.07 -47.94 100.45 -47.93 -77.73 
+-47.94 148.18 -47.94 -107.86 -47.94 -0.26 -47.94 97.55 -47.94 131.49 -47.94 -129.66 -47.94 -66.17 -47.94 65.28 
+-47.94 -10.35 -47.94 -26.97 -47.93 36.83 -47.94 -8.29 -47.94 59.33 f*
+255 189 r3
+695.42 3053.23 0 58.44 47.94 8.2 47.94 -36.13 47.93 71.55 47.94 -60.09 47.94 41.66 47.94 -50.91 
+47.94 62.72 47.94 -46.72 47.94 17.23 47.94 -74.33 47.94 29.23 47.94 83.64 47.94 -27.3 47.93 -39.48 
+47.94 -33.66 47.94 114.5 47.94 -35.92 47.94 17.95 47.94 52.02 47.94 -50.7 47.96 -115.61 47.94 106.62 
+47.94 -92.49 47.93 -12.67 47.94 90.45 47.94 14.48 47.94 -49.27 47.94 -53.99 47.94 100.45 47.94 -28.54 
+47.94 -107.33 47.94 72.57 47.94 -24.13 47.93 70.71 47.94 -64.61 47.94 -10.63 47.94 -69.99 47.94 68.08 
+47.94 38.8 47.94 -25.98 47.94 -36.04 47.94 -0.44 47.94 -48.52 47.94 61.35 47.93 -37.71 47.94 -8.18 
+47.94 -73.63 47.94 5.64 47.94 125.11 0 -267.8 -47.94 56.84 -47.94 -49.54 -47.94 16.73 -47.94 94.64 
+-47.93 -72.98 -47.94 34.25 -47.94 88.02 -47.94 -96.44 -47.94 20.27 -47.94 144.27 -47.94 -94.05 -47.94 -70.96 
+-47.94 -44.75 -47.94 -82.09 -47.94 220.91 -47.93 27.26 -47.94 22.33 -47.94 -77.71 -47.94 113.17 -47.94 -13.89 
+-47.94 -30.21 -47.94 -85.31 -47.94 52.39 -47.94 91.36 -47.94 -149.78 -47.93 84.12 -47.94 25.58 -47.94 -55.04 
+-47.96 84.59 -47.94 -42.29 -47.94 36.33 -47.94 6.99 -47.94 33.09 -47.94 -53.41 -47.94 4.13 -47.93 25.26 
+-47.94 -19.38 -47.94 24.33 -47.94 -140.93 -47.94 121.44 -47.94 -46.86 -47.94 44.64 -47.94 -16.04 -47.94 -46.92 
+-47.94 44.6 -47.94 -32.43 -47.93 38.29 -47.94 -4.04 -47.94 40.63 f*
+695.42 3053.23 0 58.44 47.94 8.2 47.94 -36.13 47.93 71.55 47.94 -60.09 47.94 41.66 47.94 -50.91 
+47.94 62.72 47.94 -46.72 47.94 17.23 47.94 -74.33 47.94 29.23 47.94 83.64 47.94 -27.3 47.93 -39.48 
+47.94 -33.66 47.94 114.5 47.94 -35.92 47.94 17.95 47.94 52.02 47.94 -50.7 47.96 -115.61 47.94 106.62 
+47.94 -92.49 47.93 -12.67 47.94 90.45 47.94 14.48 47.94 -49.27 47.94 -53.99 47.94 100.45 47.94 -28.54 
+47.94 -107.33 47.94 72.57 47.94 -24.13 47.93 70.71 47.94 -64.61 47.94 -10.63 47.94 -69.99 47.94 68.08 
+47.94 38.8 47.94 -25.98 47.94 -36.04 47.94 -0.44 47.94 -48.52 47.94 61.35 47.93 -37.71 47.94 -8.18 
+47.94 -73.63 47.94 5.64 47.94 125.11 0 -267.8 -47.94 56.84 -47.94 -49.54 -47.94 16.73 -47.94 94.64 
+-47.93 -72.98 -47.94 34.25 -47.94 88.02 -47.94 -96.44 -47.94 20.27 -47.94 144.27 -47.94 -94.05 -47.94 -70.96 
+-47.94 -44.75 -47.94 -82.09 -47.94 220.91 -47.93 27.26 -47.94 22.33 -47.94 -77.71 -47.94 113.17 -47.94 -13.89 
+-47.94 -30.21 -47.94 -85.31 -47.94 52.39 -47.94 91.36 -47.94 -149.78 -47.93 84.12 -47.94 25.58 -47.94 -55.04 
+-47.96 84.59 -47.94 -42.29 -47.94 36.33 -47.94 6.99 -47.94 33.09 -47.94 -53.41 -47.94 4.13 -47.93 25.26 
+-47.94 -19.38 -47.94 24.33 -47.94 -140.93 -47.94 121.44 -47.94 -46.86 -47.94 44.64 -47.94 -16.04 -47.94 -46.92 
+-47.94 44.6 -47.94 -32.43 -47.93 38.29 -47.94 -4.04 -47.94 40.63 f*
+250 194 r6
+695.42 2994.27 0 267.27 47.94 -145.37 47.94 100.3 47.93 71 47.94 -3.86 47.94 -65.69 47.94 -61.11 
+47.94 24.65 47.94 127.95 47.94 -167.41 47.94 142.52 47.94 -100.02 47.94 107.23 47.94 32.66 47.93 -72.46 
+47.94 -120.49 47.94 86.13 47.94 164.87 47.94 -171.51 47.94 10.16 47.94 61.22 47.96 -114.67 47.94 21.22 
+47.94 -90.54 47.93 -45.46 47.94 68.62 47.94 -104.08 47.94 252.34 47.94 -25.61 47.94 -193.54 47.94 92.69 
+47.94 68.21 47.94 -19.68 47.94 -41.82 47.93 -120.71 47.94 66.85 47.94 28.71 47.94 100.24 47.94 -92.64 
+47.94 -73.11 47.94 94.12 47.94 -163.98 47.94 -21.07 47.94 150.83 47.94 -68.75 47.93 50.48 47.94 -184.31 
+47.94 68.77 47.94 22.31 47.94 -4.86 0 -233.25 -47.94 45.4 -47.94 -53.52 -47.94 -277.23 -47.94 211.74 
+-47.93 -104.1 -47.94 94.25 -47.94 46.12 -47.94 51.11 -47.94 38.89 -47.94 -61.35 -47.94 55.77 -47.94 134.39 
+-47.94 11.96 -47.94 -189.65 -47.94 58.38 -47.93 -0.55 -47.94 29.14 -47.94 196.25 -47.94 -219.07 -47.94 8.84 
+-47.94 107.24 -47.94 41.88 -47.94 -202.93 -47.94 27.69 -47.94 66.56 -47.93 -33.83 -47.94 123.27 -47.94 -249.96 
+-47.96 172.38 -47.94 -24.48 -47.94 48.44 -47.94 35.61 -47.94 36.22 -47.94 -102.22 -47.94 0.26 -47.93 198.42 
+-47.94 -75.7 -47.94 43.49 -47.94 100.42 -47.94 -205.21 -47.94 127.61 -47.94 -213.63 -47.94 -46.64 -47.94 225.83 
+-47.94 101.52 -47.94 -330.66 -47.93 90.7 -47.94 -45.1 -47.94 130.73 f*
+695.42 2994.27 0 267.27 47.94 -145.37 47.94 100.3 47.93 71 47.94 -3.86 47.94 -65.69 47.94 -61.11 
+47.94 24.65 47.94 127.95 47.94 -167.41 47.94 142.52 47.94 -100.02 47.94 107.23 47.94 32.66 47.93 -72.46 
+47.94 -120.49 47.94 86.13 47.94 164.87 47.94 -171.51 47.94 10.16 47.94 61.22 47.96 -114.67 47.94 21.22 
+47.94 -90.54 47.93 -45.46 47.94 68.62 47.94 -104.08 47.94 252.34 47.94 -25.61 47.94 -193.54 47.94 92.69 
+47.94 68.21 47.94 -19.68 47.94 -41.82 47.93 -120.71 47.94 66.85 47.94 28.71 47.94 100.24 47.94 -92.64 
+47.94 -73.11 47.94 94.12 47.94 -163.98 47.94 -21.07 47.94 150.83 47.94 -68.75 47.93 50.48 47.94 -184.31 
+47.94 68.77 47.94 22.31 47.94 -4.86 0 -233.25 -47.94 45.4 -47.94 -53.52 -47.94 -277.23 -47.94 211.74 
+-47.93 -104.1 -47.94 94.25 -47.94 46.12 -47.94 51.11 -47.94 38.89 -47.94 -61.35 -47.94 55.77 -47.94 134.39 
+-47.94 11.96 -47.94 -189.65 -47.94 58.38 -47.93 -0.55 -47.94 29.14 -47.94 196.25 -47.94 -219.07 -47.94 8.84 
+-47.94 107.24 -47.94 41.88 -47.94 -202.93 -47.94 27.69 -47.94 66.56 -47.93 -33.83 -47.94 123.27 -47.94 -249.96 
+-47.96 172.38 -47.94 -24.48 -47.94 48.44 -47.94 35.61 -47.94 36.22 -47.94 -102.22 -47.94 0.26 -47.93 198.42 
+-47.94 -75.7 -47.94 43.49 -47.94 100.42 -47.94 -205.21 -47.94 127.61 -47.94 -213.63 -47.94 -46.64 -47.94 225.83 
+-47.94 101.52 -47.94 -330.66 -47.93 90.7 -47.94 -45.1 -47.94 130.73 f*
+Q q
+127.777 661.109 3138.89 3138.89 re
+Y*
+5.55556 w
+1 J
+1 j
+255 0 r3
+695.42 3106.71 35.92 -2.63 S
+749.3 3102.78 35.92 -2.63 S
+803.19 3098.85 35.92 -2.63 S
+857.07 3094.92 30.1 -2.2 5.82 -0.41 S
+910.94 3091 24.17 -1.76 11.77 -0.84 S
+964.82 3087.07 18.23 -1.32 17.69 -1.29 S
+1018.71 3083.14 12.28 -0.89 23.63 -1.72 S
+1072.59 3079.21 6.34 -0.46 29.57 -2.15 S
+1126.48 3075.3 0.39 -0.04 35.52 -2.59 S
+1180.36 3071.38 35.92 -2.63 S
+1234.22 3067.45 35.94 -2.62 S
+1288.11 3063.52 30.52 -2.24 5.4 -0.39 S
+1342 3059.59 24.56 -1.8 11.35 -0.82 S
+1395.88 3055.67 18.62 -1.37 17.3 -1.25 S
+1449.76 3051.73 12.67 -0.93 23.25 -1.7 S
+1503.64 3047.8 6.73 -0.47 29.19 -2.12 S
+1557.51 3043.88 0.8 -0.04 35.13 -2.56 S
+1611.39 3039.95 35.94 -2.6 S
+1665.28 3036.02 35.92 -2.6 S
+1719.16 3032.12 30.93 -2.26 4.99 -0.36 S
+1773.04 3028.19 24.98 -1.82 10.93 -0.8 S
+1826.93 3024.26 19.03 -1.39 16.88 -1.23 S
+1880.79 3020.33 13.11 -0.95 22.84 -1.67 S
+1934.68 3016.41 7.16 -0.52 28.78 -2.11 S
+1988.56 3012.48 1.21 -0.09 34.7 -2.54 S
+2042.45 3008.55 35.91 -2.63 S
+2096.33 3004.62 35.92 -2.61 S
+2150.21 3000.7 31.32 -2.28 4.6 -0.33 S
+2204.1 2996.77 25.37 -1.84 10.54 -0.76 S
+2257.96 2992.84 19.45 -1.41 16.49 -1.19 S
+2311.85 2988.91 13.49 -0.98 22.42 -1.63 S
+2365.73 2985 7.55 -0.57 28.36 -2.06 S
+2419.62 2981.08 1.61 -0.13 34.31 -2.5 S
+2473.5 2977.15 35.92 -2.62 S
+2527.39 2973.22 35.91 -2.63 S
+2581.25 2969.29 31.73 -2.32 4.21 -0.3 S
+2635.13 2965.37 25.79 -1.89 10.13 -0.74 S
+2689.02 2961.44 19.84 -1.45 16.08 -1.17 S
+2742.91 2957.51 13.89 -1 22.03 -1.61 S
+2796.79 2953.58 7.95 -0.57 27.97 -2.04 S
+2850.67 2949.66 2 -0.13 33.92 -2.47 S
+2904.54 2945.72 35.94 -2.6 S
+2958.42 2941.82 35.93 -2.62 S
+3012.3 2937.89 32.12 -2.35 S
+255 0 r6
+695.42 3155.51 35.79 -4.04 S
+749.11 3149.46 35.79 -4.04 S
+802.78 3143.4 35.8 -4.03 S
+856.46 3137.35 30.71 -3.47 5.08 -0.57 S
+910.16 3131.29 24.95 -2.82 10.84 -1.22 S
+963.84 3125.24 19.21 -2.17 16.58 -1.87 S
+1017.51 3119.18 13.48 -1.52 22.34 -2.52 S
+1071.2 3113.13 7.73 -0.87 28.06 -3.17 S
+1124.89 3107.07 1.98 -0.22 33.81 -3.82 S
+1178.58 3101.02 35.79 -4.04 S
+1232.25 3094.96 35.8 -4.04 S
+1285.94 3088.91 32.68 -3.69 3.1 -0.35 S
+1339.63 3082.86 26.93 -3.04 8.86 -1 S
+1393.32 3076.8 21.18 -2.38 14.61 -1.65 S
+1446.98 3070.75 15.45 -1.76 20.33 -2.28 S
+1500.67 3064.7 9.7 -1.11 26.09 -2.93 S
+1554.36 3058.64 3.95 -0.46 31.84 -3.58 S
+1608.05 3052.58 35.79 -4.04 S
+1661.71 3046.53 35.79 -4.04 S
+1715.41 3040.47 34.68 -3.93 1.11 -0.11 S
+1769.1 3034.42 28.93 -3.28 6.86 -0.76 S
+1822.77 3028.36 23.2 -2.62 12.61 -1.41 S
+1876.46 3022.31 17.44 -1.98 18.34 -2.08 S
+1930.14 3016.23 11.7 -1.3 24.09 -2.74 S
+1983.83 3010.18 5.95 -0.65 29.84 -3.39 S
+2037.5 3004.12 0.21 -0.02 35.59 -4.01 S
+2091.19 2998.07 35.79 -4.03 S
+2144.88 2992.01 35.79 -4.04 S
+2198.57 2985.96 30.91 -3.47 4.88 -0.57 S
+2252.23 2979.91 25.18 -2.82 10.63 -1.21 S
+2305.92 2973.85 19.42 -2.2 16.37 -1.84 S
+2359.61 2967.79 13.68 -1.54 22.11 -2.49 S
+2413.3 2961.74 7.92 -0.89 27.87 -3.14 S
+2466.97 2955.68 2.19 -0.24 33.59 -3.8 S
+2520.66 2949.63 35.79 -4.04 S
+2574.35 2943.58 35.78 -4.04 S
+2628.04 2937.52 32.88 -3.71 2.91 -0.33 S
+2681.71 2931.46 27.15 -3.06 8.63 -0.97 S
+2735.39 2925.41 21.4 -2.41 14.39 -1.62 S
+2789.08 2919.36 15.65 -1.75 20.14 -2.28 S
+2842.75 2913.3 9.92 -1.11 25.89 -2.93 S
+2896.44 2907.25 4.17 -0.48 31.62 -3.56 S
+2950.13 2901.2 35.79 -4.04 S
+3003.82 2895.14 35.79 -4.04 S
+255 0 r5
+695.42 3145.27 35.83 -3.75 S
+749.16 3139.65 35.83 -3.73 S
+802.89 3134.05 35.82 -3.76 S
+856.62 3128.43 30.55 -3.19 5.28 -0.54 S
+910.35 3122.83 24.76 -2.6 11.07 -1.15 S
+964.08 3117.21 18.97 -1.98 16.84 -1.76 S
+1017.82 3111.61 13.17 -1.39 22.63 -2.37 S
+1071.55 3105.99 7.38 -0.76 28.43 -2.97 S
+1125.29 3100.39 1.58 -0.18 34.22 -3.57 S
+1179.02 3094.77 35.8 -3.73 S
+1232.75 3089.17 35.8 -3.75 S
+1286.48 3083.55 32.14 -3.36 3.67 -0.37 S
+1340.21 3077.95 26.34 -2.75 9.47 -1 S
+1393.95 3072.33 20.55 -2.15 15.25 -1.58 S
+1447.68 3066.73 14.75 -1.57 21.05 -2.19 S
+1501.39 3061.11 8.98 -0.93 26.84 -2.8 S
+1555.12 3055.49 3.19 -0.32 32.64 -3.41 S
+1608.86 3049.89 35.83 -3.73 S
+1662.59 3044.27 35.83 -3.73 S
+1716.32 3038.67 33.77 -3.52 2.06 -0.22 S
+1770.05 3033.05 27.98 -2.91 7.86 -0.83 S
+1823.79 3027.45 22.18 -2.32 13.65 -1.41 S
+1877.52 3021.83 16.38 -1.69 19.45 -2.04 S
+1931.25 3016.23 10.59 -1.11 25.24 -2.63 S
+1984.98 3010.61 4.79 -0.5 31.04 -3.23 S
+2038.71 3005.01 35.83 -3.73 S
+2092.45 2999.39 35.83 -3.73 S
+2146.18 2993.79 35.36 -3.69 0.48 -0.04 S
+2199.91 2988.17 29.56 -3.08 6.27 -0.65 S
+2253.64 2982.57 23.77 -2.47 12.06 -1.26 S
+2307.38 2976.96 17.96 -1.87 17.86 -1.87 S
+2361.11 2971.36 12.18 -1.29 23.65 -2.45 S
+2414.84 2965.73 6.38 -0.65 29.45 -3.08 S
+2468.58 2960.13 0.58 -0.07 35.22 -3.67 S
+2522.31 2954.51 35.8 -3.73 S
+2576.04 2948.92 35.81 -3.73 S
+2629.77 2943.29 31.14 -3.25 4.66 -0.48 S
+2683.5 2937.7 25.35 -2.64 10.46 -1.11 S
+2737.24 2932.07 19.55 -2.04 16.25 -1.69 S
+2790.97 2926.48 13.76 -1.43 22.04 -2.32 S
+2844.71 2920.86 7.96 -0.83 27.84 -2.91 S
+2898.44 2915.25 2.17 -0.24 33.64 -3.52 S
+2952.17 2909.63 35.8 -3.73 S
+3005.88 2904.04 35.83 -3.75 S
+128 0 255 rG
+695.42 3086.66 35.96 -2.11 S
+749.35 3083.48 35.95 -2.11 S
+803.28 3080.32 35.96 -2.11 S
+857.21 3077.15 29.96 -1.76 6 -0.35 S
+911.16 3073.98 23.95 -1.41 11.98 -0.69 S
+965.08 3070.81 17.97 -1.06 17.97 -1.04 S
+1019.01 3067.64 11.98 -0.71 23.98 -1.41 S
+1072.94 3064.47 5.99 -0.34 29.97 -1.78 S
+1126.87 3061.3 35.96 -2.13 S
+1180.79 3058.14 35.96 -2.13 S
+1234.72 3054.97 35.96 -2.13 S
+1288.65 3051.8 29.97 -1.78 5.99 -0.35 S
+1342.6 3048.61 23.95 -1.39 11.98 -0.72 S
+1396.53 3045.45 17.97 -1.05 17.99 -1.06 S
+1450.46 3042.27 11.98 -0.7 23.98 -1.41 S
+1504.38 3039.11 5.99 -0.34 29.97 -1.76 S
+1558.31 3035.94 35.96 -2.11 S
+1612.24 3032.77 35.96 -2.1 S
+1666.17 3029.6 35.96 -2.11 S
+1720.12 3026.43 29.97 -1.76 5.96 -0.34 S
+1774.04 3023.27 23.98 -1.41 11.96 -0.7 S
+1827.97 3020.09 17.99 -1.06 17.97 -1.05 S
+1881.9 3016.93 12 -0.72 23.96 -1.39 S
+1935.83 3013.76 6.01 -0.35 29.95 -1.78 S
+1989.75 3010.59 0.02 0 35.94 -2.13 S
+2043.68 3007.42 35.96 -2.13 S
+2097.61 3004.25 35.96 -2.12 S
+2151.56 3001.08 29.97 -1.78 5.96 -0.35 S
+2205.49 2997.92 23.98 -1.41 11.98 -0.71 S
+2259.42 2994.73 17.99 -1.04 17.97 -1.06 S
+2313.34 2991.55 12 -0.7 23.96 -1.4 S
+2367.27 2988.39 6.01 -0.35 29.95 -1.76 S
+2421.2 2985.22 0.02 0 35.94 -2.11 S
+2475.13 2982.05 35.96 -2.11 S
+2529.08 2978.88 35.94 -2.11 S
+2583 2975.72 29.97 -1.76 5.97 -0.35 S
+2636.93 2972.55 23.98 -1.41 11.98 -0.7 S
+2690.86 2969.38 18 -1.06 17.96 -1.04 S
+2744.79 2966.21 12 -0.71 23.96 -1.39 S
+2798.72 2963.04 6.01 -0.35 29.95 -1.76 S
+2852.65 2959.87 0.02 0 35.94 -2.12 S
+2906.6 2956.71 35.93 -2.13 S
+2960.53 2953.54 35.93 -2.13 S
+3014.46 2950.37 29.96 -1.78 S
+11.1111 w
+255 0 r3
+695.42 3082.45 47.94 -16.21 47.94 -16.04 47.93 16.62 47.94 -13.82 47.94 -1.46 47.94 -2.02 47.94 39.39 
+47.94 -45.68 47.94 32.06 47.94 -97.89 47.94 85.09 47.94 29.64 47.94 -3.95 47.93 -32.38 47.94 -18.87 
+47.94 83.94 47.94 -34.5 47.94 5.49 47.94 7.83 47.94 -4.18 47.96 -100.11 47.94 80.82 47.94 -59.03 
+47.93 -48.39 47.94 120.12 47.94 -38.43 47.94 -50.82 47.94 15.64 47.94 65.34 47.94 -7.34 47.94 -110.26 
+47.94 75.15 47.94 -23.22 47.93 21.71 47.94 -142.76 47.94 35.75 47.94 -12.63 47.94 69.53 47.94 66.43 
+47.94 -85.13 47.94 -28.17 47.94 48 47.94 -68.27 47.94 13.57 47.93 17.64 47.94 -51.41 47.94 -45.18 
+47.94 27.59 47.94 34.13 S
+255 0 r6
+695.42 3127.91 47.94 -138.06 47.94 72.7 47.93 -9.83 47.94 163.39 47.94 -83.59 47.94 -143.47 47.94 35.63 
+47.94 170.82 47.94 -147.53 47.94 173.87 47.94 -100.21 47.94 31.86 47.94 54.19 47.93 -135.44 47.94 -60.37 
+47.94 94.18 47.94 64.32 47.94 -103.58 47.94 -19.14 47.94 42.86 47.96 -143.54 47.94 135.61 47.94 -106.92 
+47.93 -5.79 47.94 1.02 47.94 -65.89 47.94 227.65 47.94 -33.75 47.94 -150.41 47.94 41.92 47.94 143.66 
+47.94 -107.96 47.94 -35.48 47.93 -60.09 47.94 4.23 47.94 109.18 47.94 44.14 47.94 -113.52 47.94 -64.46 
+47.94 77.73 47.94 -101.43 47.94 -36.09 47.94 52.36 47.94 -81.51 47.93 77.3 47.94 -198.03 47.94 173 
+47.94 37.91 47.94 -25.13 S
+255 0 r5
+695.42 3157.31 47.94 -8.79 47.94 -72.02 47.93 -0.52 47.94 20.18 47.94 29.64 47.94 -41.97 47.94 69.45 
+47.94 93.42 47.94 -178.25 47.94 22.88 47.94 -72.79 47.94 60.82 47.94 -55.18 47.93 1.41 47.94 -51.06 
+47.94 77.08 47.94 -21.63 47.94 51.61 47.94 0.28 47.94 -43.23 47.96 6.29 47.94 -23.35 47.94 -19.92 
+47.93 18.66 47.94 1.26 47.94 -90.49 47.94 123.21 47.94 90.18 47.94 -127.28 47.94 -36.74 47.94 -2.82 
+47.94 -57.73 47.94 122.31 47.93 -99.7 47.94 -37 47.94 157.73 47.94 20.21 47.94 -23.2 47.94 9.46 
+47.94 -43.39 47.94 -101.82 47.94 -14.5 47.94 88.93 47.94 -48.7 47.93 -152.13 47.94 2.22 47.94 -28.82 
+47.94 68.3 47.94 -9.68 S
+128 0 255 rG
+695.42 3074.09 47.94 -0.91 47.94 -6.56 47.93 5.08 47.94 5.47 47.94 -14.46 47.94 1.52 47.94 -28.6 
+47.94 50.72 47.94 -2.87 47.94 -19.79 47.94 -11.83 47.94 -3.21 47.94 2.45 47.93 23.72 47.94 -24.13 
+47.94 21.48 47.94 -53.23 47.94 -7.68 47.94 -17.38 47.94 34.12 47.96 11.68 47.94 -5.93 47.94 -40.62 
+47.93 5.04 47.94 8.31 47.94 13.63 47.94 36.74 47.94 -24.98 47.94 4.88 47.94 -14.75 47.94 -20.01 
+47.94 -2.21 47.94 -31.71 47.93 16.09 47.94 42.14 47.94 19.23 47.94 -28.4 47.94 -13.52 47.94 0.3 
+47.94 -47.87 47.94 -12.7 47.94 11.91 47.94 -0.62 47.94 -24.46 47.93 -12.3 47.94 44.45 47.94 -39.35 
+47.94 31.64 47.94 -19.33 S
+K
+1766.21 2210.39 10.39 0 21.31 -35.35 20.79 35.35 10.41 0 -26.52 -44.73 0 -28.06 -9.36 0 
+^ -27.04 44.73 f*
+1880.58 2153.71 -0.57 -2.43 -0.72 -2.23 -0.84 -2.06 -1 -1.89 -1.13 -1.71 -1.23 -1.52 -1.37 -1.36 
+-1.46 -1.2 -1.56 -1.04 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.87 -0.46 -1.93 -0.3 -4.01 -0.26 
+-2.73 0.22 -2.61 0.46 -2.41 0.67 -2.26 0.91 -2.11 1.13 -1.91 1.3 -1.75 1.52 -1.56 1.72 
+-1.41 1.9 -1.22 2.06 -1.04 2.24 -0.84 2.38 -0.67 2.56 -0.48 2.7 -0.28 2.82 -0.11 2.97 
+0.17 4.25 0.52 3.87 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.37 1.7 2.06 1.8 1.76 
+1.93 1.45 1.99 1.22 2.02 0.97 2.04 0.76 2.02 0.54 1.96 0.37 3.58 0.26 -0.52 -7.79 
+-2.26 -0.22 -2.45 -0.7 -2.45 -1.17 -2.39 -1.69 -1.11 -1.05 -1.06 -1.16 -0.95 -1.33 -0.84 -1.45 
+-0.74 -1.62 -0.61 -1.76 -0.43 -1.91 -0.3 -2.06 30.68 0 -0.11 2.15 -0.33 1.98 -0.52 1.8 
+-0.67 1.65 -0.82 1.47 -0.96 1.3 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.49 1.11 -2.41 0.65 
+-2.15 0.2 0.52 7.79 1.8 -0.07 1.87 -0.2 1.91 -0.39 1.96 -0.57 1.93 -0.75 1.89 -1.02 
+1.84 -1.26 1.76 -1.52 1.64 -1.84 1.5 -2.15 1.34 -2.49 1.17 -2.87 0.96 -3.25 0.72 -3.64 
+0.43 -4.1 0.15 -4.54 -39 0 0.2 -2.73 0.58 -2.97 1.05 -3.02 0.71 -1.49 0.84 -1.41 
+1 -1.34 1.15 -1.24 1.32 -1.13 1.48 -0.95 1.67 -0.81 1.84 -0.58 2.04 -0.39 2.23 -0.14 
+2.25 0.2 2.13 0.57 1.95 0.91 1.78 1.26 1.63 1.57 1.43 1.87 1.28 2.14 1.07 2.41 
+8.31 0 f*
+1892.54 2174.52 0.28 3.13 0.35 1.54 0.49 1.52 0.66 1.48 0.82 1.41 1 1.34 1.15 1.29 
+1.32 1.15 1.52 1.06 1.69 0.93 1.91 0.8 2.08 0.63 2.3 0.48 2.49 0.3 2.71 0.09 
+2.95 -0.13 3.21 -0.44 3.3 -0.8 3.14 -1.24 1.48 -0.78 1.34 -0.93 1.22 -1.07 1.06 -1.2 
+0.84 -1.37 0.65 -1.5 0.42 -1.69 0.15 -1.87 0 -33.27 0.17 -0.91 0.5 -0.83 0.74 -0.67 
+0.93 -0.52 1 -0.35 1.04 -0.15 0.98 0.04 0.86 0.26 0 -6.23 -2.02 -0.45 -3.16 -0.06 
+-2.26 0.06 -1.78 0.2 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.72 1.2 -1.39 3.45 -4.43 -3.23 
+-1.91 -1.17 -1.84 -0.91 -1.88 -0.67 -2.07 -0.43 -2.32 -0.24 -2.69 -0.08 -2.32 0.08 -2.12 0.24 
+-1.91 0.39 -1.74 0.55 -1.52 0.65 -1.36 0.78 -1.2 0.87 -1.02 1 -0.87 1.06 -0.74 1.13 
+-0.61 1.21 -0.46 1.24 -0.59 2.64 -0.2 2.72 7.81 0 0.17 -1.55 0.57 -1.43 0.93 -1.32 
+1.24 -1.17 1.58 -0.96 1.87 -0.73 2.14 -0.48 2.41 -0.18 3.47 0.45 3.04 0.89 2.61 1.26 
+2.13 1.5 1.66 1.66 1.2 1.76 0.72 1.76 0.24 1.63 0 10.42 -3.91 -1.45 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.84 -2.17 -1 -1.65 -1.11 -1.17 -1.22 -0.8 -1.3 -0.48 -1.41 -0.24 -1.48 
+-0.04 -1.52 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.32 0.59 1.2 0.7 1.07 0.8 0.93 
+0.91 0.82 1 0.72 2.32 1.21 2.71 0.98 3.13 0.8 13.52 2.09 3.25 0.87 1.17 0.5 
+0.91 0.52 0.65 0.55 0.43 0.56 0.26 0.59 0.07 0.58 0 4.67 -0.13 0.89 -0.48 1.06 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -2 0.83 -2.41 0.54 -2.89 0.22 -3.06 -0.24 -2.61 -0.65 
+-2.15 -0.98 -1.73 -1.26 -1.3 -1.46 -0.91 -1.56 -0.54 -1.63 -0.18 -1.58 -8.31 0 f*
+1948.68 2190.11 7.29 0 0 -9.88 3.18 4.26 2.88 3.08 2.61 2.08 1.19 0.72 1.13 0.52 
+2.06 0.57 1.8 0.05 1.54 -0.33 1.28 -0.55 0 -7.79 -4.14 -0.43 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.34 -0.76 -1.21 -0.85 -1.09 -0.98 -0.91 -1.07 -0.8 -1.19 -0.66 -1.31 -0.54 -1.39 
+-0.41 -1.5 -0.29 -1.61 -0.21 -3.52 0 -29.1 -8.34 0 0 52.5 f*
+218.27 2423.35 -2.73 -0.13 -2.56 -0.43 -2.37 -0.68 -2.19 -0.93 -2.02 -1.15 -1.82 -1.39 -1.67 -1.59 
+-1.47 -1.75 -1.3 -1.93 -1.13 -2.08 -0.93 -2.23 -0.78 -2.37 -0.61 -2.45 -0.43 -2.56 -0.24 -2.65 
+-0.08 -2.69 0.08 -3.21 0.31 -2.99 0.5 -2.76 0.67 -2.56 0.87 -2.35 1.02 -2.12 1.2 -1.93 
+1.32 -1.71 1.49 -1.5 1.61 -1.3 1.76 -1.09 1.89 -0.89 1.99 -0.7 2.11 -0.5 2.2 -0.3 
+2.3 -0.09 3.58 0.26 1.58 0.3 1.46 0.43 2.52 1.13 2.11 1.52 1.74 1.79 1.43 2.04 
+1.19 2.19 1.02 2.3 6.25 23.39 1.02 2.7 1.13 2.21 1.21 1.8 1.32 1.41 1.41 1.04 
+1.5 0.72 1.61 0.39 1.72 0.13 2.47 -0.22 2.32 -0.65 1.08 -0.54 1.05 -0.67 0.95 -0.83 
+0.89 -1 0.82 -1.15 0.72 -1.34 0.63 -1.52 0.54 -1.74 0.43 -1.93 0.3 -2.15 0.2 -2.37 
+0.07 -2.61 -0.09 -2.62 -0.28 -2.43 -0.46 -2.23 -0.61 -2.02 -0.76 -1.84 -0.89 -1.67 -1 -1.48 
+-1.13 -1.3 -1.22 -1.13 -1.3 -0.98 -1.37 -0.81 -1.43 -0.65 -1.5 -0.5 -1.52 -0.34 -3.1 -0.29 
+0 -9.36 2.6 0.11 2.5 0.33 2.43 0.56 2.3 0.79 2.2 1.02 2.04 1.24 1.93 1.48 
+1.76 1.71 1.58 1.93 1.43 2.19 1.24 2.43 1.04 2.67 0.82 2.93 0.59 3.17 0.37 3.41 
+0.13 3.69 -0.11 3.39 -0.32 3.19 -0.55 2.95 -0.74 2.76 -0.93 2.52 -1.11 2.3 -1.26 2.08 
+-1.4 1.87 -1.57 1.65 -1.66 1.41 -1.8 1.21 -1.91 0.98 -2 0.78 -2.09 0.54 -2.16 0.33 
+-2.22 0.11 -1.8 -0.09 -1.74 -0.23 -1.62 -0.39 -1.54 -0.52 -1.48 -0.67 -1.36 -0.78 -2.47 -1.85 
+-2.11 -2.21 -1.73 -2.45 -1.35 -2.63 -0.97 -2.73 -6.25 -23.39 -1.11 -2.25 -1.02 -1.8 -1 -1.37 
+-1.02 -1 -1.15 -0.67 -1.29 -0.43 -1.52 -0.2 -1.78 -0.06 -1.41 0.09 -1.34 0.24 -1.23 0.42 
+-1.18 0.54 -1.07 0.68 -0.98 0.82 -0.89 0.93 -0.8 1.04 -1.33 2.39 -0.95 2.73 -0.59 3.02 
+-0.2 3.23 0.07 2.17 0.22 2.04 0.34 1.91 0.48 1.75 0.59 1.63 0.71 1.5 0.82 1.37 
+0.93 1.21 1.02 1.07 1.11 0.93 1.2 0.8 1.28 0.65 1.37 0.5 1.41 0.37 1.48 0.22 
+1.54 0.07 0 9.35 f*
+217.23 2436.87 0 7.81 8.31 0 -2.67 2.15 -2.16 2.21 -1.72 2.2 -1.3 2.21 -0.95 2.17 
+-0.61 2.14 -0.34 2.07 -0.11 2 0.24 2.95 0.7 2.95 1.13 2.8 1.52 2.54 1.89 2.2 
+1.06 0.91 1.15 0.79 1.21 0.65 1.3 0.48 1.37 0.28 1.43 0.11 41.06 0 0 -8.33 
+-37.41 0 -1.13 -0.07 -1.04 -0.2 -1.84 -0.78 -1.55 -1.17 -1.21 -1.48 -0.93 -1.71 -0.63 -1.82 
+-0.39 -1.87 -0.13 -1.82 0.08 -1.26 0.22 -1.28 0.83 -2.5 1.37 -2.36 1.86 -2.15 1.11 -0.95 
+1.21 -0.87 1.32 -0.76 1.43 -0.66 1.52 -0.52 1.63 -0.39 1.74 -0.26 1.8 -0.06 30.14 0 
+0 -8.34 -52.49 0 f*
+215.67 2512.79 0.15 2.4 0.43 2.35 0.72 2.28 0.97 2.19 1.21 2.09 1.43 1.97 1.67 1.84 
+1.84 1.7 2.04 1.56 2.21 1.39 2.37 1.21 2.5 1.02 2.61 0.8 2.73 0.61 2.8 0.37 
+2.91 0.13 2.88 -0.13 2.8 -0.37 2.69 -0.61 2.58 -0.8 2.46 -1.02 2.32 -1.21 2.15 -1.39 
+1.99 -1.56 1.8 -1.7 1.61 -1.84 1.41 -1.97 1.18 -2.09 0.93 -2.19 0.7 -2.28 0.43 -2.35 
+0.13 -2.4 -0.13 -2.41 -0.43 -2.37 -0.7 -2.25 -0.93 -2.19 -1.18 -2.09 -1.41 -1.98 -1.61 -1.84 
+-1.8 -1.71 -1.99 -1.55 -2.15 -1.39 -2.32 -1.22 -2.46 -1.02 -2.58 -0.83 -2.69 -0.58 -2.8 -0.37 
+-2.88 -0.13 0 8.83 3.99 0.26 3.77 0.78 1.76 0.57 1.66 0.7 1.59 0.8 1.43 0.93 
+1.33 1.02 1.19 1.13 1.04 1.26 0.87 1.32 0.7 1.46 0.5 1.52 0.33 1.63 0.11 1.72 
+-0.11 1.71 -0.33 1.61 -0.5 1.54 -0.7 1.43 -0.87 1.34 -1.04 1.23 -1.19 1.13 -1.33 1.04 
+-1.43 0.91 -1.59 0.8 -1.66 0.7 -1.76 0.58 -3.77 0.76 -3.99 0.29 -4.04 -0.29 -3.82 -0.76 
+-1.82 -0.58 -1.71 -0.7 -1.61 -0.8 -1.5 -0.91 -1.37 -1.04 -1.23 -1.13 -1.09 -1.23 -0.91 -1.34 
+-0.71 -1.43 -0.54 -1.54 -0.33 -1.61 -0.13 -1.71 0.13 -1.72 0.33 -1.63 0.54 -1.52 0.71 -1.46 
+0.91 -1.32 1.09 -1.26 1.23 -1.13 1.37 -1.02 1.5 -0.93 1.61 -0.8 1.71 -0.7 1.82 -0.57 
+3.82 -0.78 4.04 -0.26 0 -8.83 -2.91 0.13 -2.8 0.37 -2.73 0.58 -2.61 0.83 -2.5 1.02 
+-2.37 1.22 -2.21 1.39 -2.04 1.55 -1.84 1.71 -1.67 1.84 -1.43 1.98 -1.21 2.09 -0.97 2.19 
+-0.72 2.25 -0.43 2.37 -0.15 2.41 f*
+217.23 2541.88 0 9.38 40.02 10.39 -40.02 10.39 0 9.35 40.02 10.39 -40.02 10.4 0 9.35 
+52.49 -15.06 0 -9.37 -39.5 -10.91 39.5 -9.87 0 -9.36 -52.49 -15.08 f*
+219.83 2706.68 -3.1 -0.65 -2.87 -0.82 -2.63 -0.98 -2.38 -1.13 -2.17 -1.29 -1.95 -1.43 -1.76 -1.59 
+-1.54 -1.73 -1.32 -1.86 -1.15 -2.02 -0.95 -2.17 -0.76 -2.3 -0.59 -2.45 -0.41 -2.58 -0.26 -2.73 
+-0.06 -2.84 0.17 -3.8 0.56 -3.58 0.89 -3.38 1.21 -3.14 1.57 -2.93 1.84 -2.69 2.12 -2.47 
+2.41 -2.24 2.65 -1.99 2.91 -1.76 3.13 -1.52 3.34 -1.28 3.52 -1 3.71 -0.76 3.88 -0.5 
+4.02 -0.22 4.55 0.16 4.26 0.5 3.97 0.8 3.69 1.11 3.41 1.37 3.1 1.65 2.82 1.91 
+2.54 2.13 2.24 2.34 1.95 2.56 1.65 2.73 1.36 2.91 1.05 3.08 0.75 3.21 0.46 3.34 
+0.16 3.47 -0.16 3.73 -0.43 3.47 -0.72 3.15 -0.97 2.9 -1.22 2.61 -1.43 2.37 -1.67 2.13 
+-1.84 1.87 -2.04 1.63 -2.21 1.43 -2.34 1.2 -2.5 1 -2.63 0.8 -2.71 0.63 -2.82 0.43 
+-2.89 0.28 0 -9.36 5.04 -0.95 2.23 -0.63 2.04 -0.72 1.84 -0.8 1.65 -0.93 1.48 -1.04 
+1.3 -1.15 1.15 -1.29 0.96 -1.4 0.8 -1.55 0.66 -1.67 0.5 -1.82 0.35 -1.95 0.22 -2.11 
+0.07 -2.25 -0.16 -3.02 -0.43 -2.8 -0.71 -2.58 -1 -2.37 -1.21 -2.17 -1.48 -1.95 -1.69 -1.76 
+-1.89 -1.56 -2.11 -1.37 -2.28 -1.17 -2.43 -0.98 -2.61 -0.8 -2.73 -0.61 -2.86 -0.44 -2.98 -0.26 
+-3.08 -0.09 -3.41 0.11 -3.23 0.38 -3.03 0.56 -2.85 0.79 -2.62 1 -2.45 1.17 -2.21 1.37 
+-2.02 1.52 -1.78 1.7 -1.57 1.82 -1.35 1.97 -1.11 2.11 -0.87 2.22 -0.62 2.32 -0.37 2.41 
+-0.12 2.5 0.26 3.62 0.78 3.38 0.59 1.61 0.7 1.55 0.82 1.43 0.95 1.34 1.05 1.23 
+1.16 1.13 1.29 1 1.39 0.87 1.5 0.74 1.61 0.61 1.71 0.43 1.8 0.28 0 9.35 f*
+215.67 2739.95 0.15 2.43 0.43 2.34 0.72 2.28 0.97 2.18 1.21 2.08 1.43 1.97 1.67 1.84 
+1.84 1.71 2.04 1.56 2.21 1.39 2.37 1.19 2.5 1.02 2.61 0.83 2.73 0.61 2.8 0.37 
+2.91 0.11 2.88 -0.11 2.8 -0.37 2.69 -0.61 2.58 -0.83 2.46 -1.02 2.32 -1.19 2.15 -1.39 
+1.99 -1.56 1.8 -1.71 1.61 -1.84 1.41 -1.97 1.18 -2.08 0.93 -2.18 0.7 -2.28 0.43 -2.34 
+0.13 -2.43 -0.13 -2.41 -0.43 -2.34 -0.7 -2.28 -0.93 -2.17 -1.18 -2.11 -1.41 -1.95 -1.61 -1.84 
+-1.8 -1.72 -1.99 -1.56 -2.15 -1.39 -2.32 -1.22 -2.46 -1.02 -2.58 -0.8 -2.69 -0.61 -2.8 -0.37 
+-2.88 -0.13 0 8.85 3.99 0.26 3.77 0.79 1.76 0.57 1.66 0.7 1.59 0.8 1.43 0.91 
+1.33 1.04 1.19 1.13 1.04 1.23 0.87 1.35 0.7 1.43 0.5 1.54 0.33 1.63 0.11 1.69 
+-0.11 1.72 -0.33 1.63 -0.5 1.54 -0.7 1.43 -0.87 1.34 -1.04 1.24 -1.19 1.13 -1.33 1.02 
+-1.43 0.93 -1.59 0.8 -1.66 0.7 -1.76 0.57 -3.77 0.78 -3.99 0.26 -4.04 -0.26 -3.82 -0.78 
+-1.82 -0.57 -1.71 -0.7 -1.61 -0.8 -1.5 -0.93 -1.37 -1.02 -1.23 -1.12 -1.09 -1.24 -0.91 -1.34 
+-0.71 -1.43 -0.54 -1.54 -0.33 -1.62 -0.13 -1.72 0.13 -1.69 0.33 -1.63 0.54 -1.54 0.71 -1.43 
+0.91 -1.35 1.09 -1.23 1.23 -1.13 1.37 -1.04 1.5 -0.91 1.61 -0.8 1.71 -0.7 1.82 -0.57 
+3.82 -0.79 4.04 -0.26 0 -8.85 -2.91 0.13 -2.8 0.37 -2.73 0.61 -2.61 0.8 -2.5 1.02 
+-2.37 1.22 -2.21 1.39 -2.04 1.56 -1.84 1.72 -1.67 1.84 -1.43 1.95 -1.21 2.11 -0.97 2.17 
+-0.72 2.28 -0.43 2.34 -0.15 2.41 f*
+217.23 2769.59 0 9.88 41.58 14.04 -41.58 14.04 0 9.88 52.49 -18.73 0 -10.39 -52.49 -18.71 f*
+253.62 2868.38 2.43 -0.59 2.26 -0.71 2.06 -0.84 1.87 -1 1.72 -1.13 1.52 -1.24 1.37 -1.34 
+1.21 -1.47 1.05 -1.57 0.89 -1.65 0.73 -1.71 0.59 -1.8 0.45 -1.89 0.33 -1.93 0.24 -4.01 
+-0.22 -2.74 -0.45 -2.58 -0.67 -2.43 -0.91 -2.25 -1.11 -2.09 -1.32 -1.93 -1.52 -1.75 -1.71 -1.57 
+-1.89 -1.39 -2.09 -1.23 -2.23 -1.02 -2.39 -0.87 -2.56 -0.67 -2.69 -0.48 -2.82 -0.29 -2.96 -0.11 
+-4.27 0.2 -3.84 0.5 -3.46 0.8 -3.08 1.08 -2.71 1.33 -2.37 1.5 -2.06 1.69 -1.74 1.82 
+-1.48 1.91 -1.21 2 -0.98 2.04 -0.74 2.04 -0.56 2 -0.37 1.95 -0.26 3.58 7.79 -0.52 
+0.24 -2.25 0.67 -2.43 1.17 -2.48 1.69 -2.39 1.04 -1.11 1.17 -1.04 1.32 -0.96 1.48 -0.87 
+1.61 -0.74 1.75 -0.59 1.91 -0.45 2.06 -0.28 0 30.66 -2.15 -0.11 -1.97 -0.33 -1.8 -0.5 
+-1.62 -0.7 -1.48 -0.82 -1.32 -0.96 -1.17 -1.04 -1.02 -1.13 -1.63 -2.43 -1.11 -2.52 -0.62 -2.41 
+-0.22 -2.15 -7.79 0.52 0.07 1.8 0.21 1.87 0.37 1.93 0.56 1.93 0.76 1.93 1.02 1.89 
+1.26 1.84 1.54 1.75 1.82 1.65 2.15 1.52 2.5 1.35 2.86 1.15 3.26 0.96 3.66 0.71 
+4.08 0.43 4.54 0.15 0 -38.97 2.73 0.17 2.97 0.58 3.04 1.04 1.48 0.72 1.41 0.84 
+1.35 1.02 1.25 1.15 1.11 1.3 0.97 1.5 0.79 1.64 0.61 1.84 0.37 2.04 0.13 2.23 
+-0.2 2.28 -0.57 2.11 -0.91 1.96 -1.26 1.8 -1.56 1.61 -1.87 1.45 -2.15 1.26 -2.41 1.07 
+0 8.33 f*
+217.23 2880.84 0 7.29 9.87 0 -4.23 3.17 -3.1 2.88 -2.09 2.61 -0.71 1.2 -0.52 1.13 
+-0.57 2.06 -0.04 1.8 0.32 1.54 0.54 1.28 7.79 0 0.43 -4.14 0.41 -1.82 0.5 -1.67 
+0.63 -1.52 0.76 -1.35 0.85 -1.21 0.97 -1.09 1.09 -0.91 1.17 -0.8 1.3 -0.66 1.39 -0.54 
+1.5 -0.41 1.61 -0.28 3.51 -0.22 29.11 0 0 -8.33 -52.49 0 f*
+196.96 2962.46 0 11.96 72.77 25.47 0 -10.39 -21.31 -7.27 0 -28.61 21.31 -7.27 0 -10.39 
+-62.37 22.87 0 9.35 32.75 -11.96 0 23.39 -32.75 -11.44 0 -9.35 -10.39 3.63 f*
+217.23 3008.22 0 7.79 8.31 0 -2.67 2.17 -2.16 2.2 -1.72 2.21 -1.3 2.2 -0.95 2.19 
+-0.61 2.13 -0.34 2.08 -0.11 1.98 0.24 2.97 0.7 2.93 1.13 2.8 1.52 2.56 1.89 2.17 
+1.06 0.93 1.15 0.78 1.21 0.63 1.3 0.48 1.37 0.28 1.43 0.11 41.06 0 0 -8.31 
+-37.41 0 -1.13 -0.09 -1.04 -0.2 -1.84 -0.79 -1.55 -1.17 -1.21 -1.47 -0.93 -1.7 -0.63 -1.84 
+-0.39 -1.87 -0.13 -1.8 0.08 -1.29 0.22 -1.28 0.83 -2.49 1.37 -2.37 1.86 -2.13 1.11 -0.98 
+1.21 -0.87 1.32 -0.76 1.43 -0.65 1.52 -0.52 1.63 -0.39 1.74 -0.24 1.8 -0.08 30.14 0 
+0 -8.32 -52.49 0 f*
+215.67 3084.12 0.15 2.41 0.43 2.34 0.72 2.28 0.97 2.2 1.21 2.08 1.43 1.97 1.67 1.84 
+1.84 1.72 2.04 1.54 2.21 1.39 2.37 1.22 2.5 1.02 2.61 0.82 2.73 0.58 2.8 0.37 
+2.91 0.13 2.88 -0.13 2.8 -0.37 2.69 -0.58 2.58 -0.82 2.46 -1.02 2.32 -1.22 2.15 -1.39 
+1.99 -1.54 1.8 -1.72 1.61 -1.84 1.41 -1.97 1.18 -2.08 0.93 -2.2 0.7 -2.28 0.43 -2.34 
+0.13 -2.41 -0.13 -2.41 -0.43 -2.35 -0.7 -2.28 -0.93 -2.19 -1.18 -2.09 -1.41 -1.97 -1.61 -1.84 
+-1.8 -1.7 -1.99 -1.56 -2.15 -1.39 -2.32 -1.21 -2.46 -1.02 -2.58 -0.8 -2.69 -0.61 -2.8 -0.37 
+-2.88 -0.13 0 8.84 3.99 0.28 3.77 0.75 1.76 0.59 1.66 0.7 1.59 0.8 1.43 0.91 
+1.33 1.02 1.19 1.15 1.04 1.24 0.87 1.34 0.7 1.43 0.5 1.52 0.33 1.63 0.11 1.72 
+-0.11 1.71 -0.33 1.63 -0.5 1.52 -0.7 1.45 -0.87 1.33 -1.04 1.23 -1.19 1.15 -1.33 1.02 
+-1.43 0.93 -1.59 0.8 -1.66 0.7 -1.76 0.57 -3.77 0.78 -3.99 0.26 -4.04 -0.26 -3.82 -0.78 
+-1.82 -0.57 -1.71 -0.7 -1.61 -0.8 -1.5 -0.93 -1.37 -1.02 -1.23 -1.15 -1.09 -1.23 -0.91 -1.33 
+-0.71 -1.45 -0.54 -1.52 -0.33 -1.63 -0.13 -1.71 0.13 -1.72 0.33 -1.62 0.54 -1.52 0.71 -1.43 
+0.91 -1.34 1.09 -1.24 1.23 -1.15 1.37 -1.02 1.5 -0.91 1.61 -0.8 1.71 -0.7 1.82 -0.59 
+3.82 -0.75 4.04 -0.28 0 -8.84 -2.91 0.13 -2.8 0.37 -2.73 0.61 -2.61 0.8 -2.5 1.02 
+-2.37 1.21 -2.21 1.39 -2.04 1.56 -1.84 1.7 -1.67 1.84 -1.43 1.97 -1.21 2.09 -0.97 2.19 
+-0.72 2.28 -0.43 2.35 -0.15 2.41 f*
+217.23 3119.99 0 7.27 7.79 0 -2.5 2.09 -2.04 1.98 -1.63 1.91 -1.24 1.91 -0.91 1.91 
+-0.61 2 -0.32 2.08 -0.11 2.26 0.5 3.73 0.43 1.76 0.69 1.71 1 1.72 1.39 1.7 
+1.89 1.69 2.41 1.74 -2.3 2.11 -1.85 2.02 -1.45 1.98 -1.09 1.95 -0.78 1.96 -0.5 1.97 
+-0.26 2.04 -0.09 2.11 0.19 2.59 0.61 2.61 1 2.54 1.45 2.34 0.87 1.04 1 0.98 
+1.11 0.84 1.24 0.72 1.32 0.61 1.45 0.43 1.59 0.29 1.69 0.08 40.54 0 0 -8.31 
+-37.41 0 -1.91 -0.24 -1.76 -0.62 -1.58 -1 -1.39 -1.26 -1.13 -1.45 -0.86 -1.56 -0.55 -1.63 
+-0.2 -1.58 0.26 -2.2 0.74 -2.17 1.17 -2.11 1.54 -1.93 1.87 -1.65 2.11 -1.29 2.32 -0.84 
+1.23 -0.24 1.24 -0.07 34.31 0 0 -8.31 -37.41 0 -1.91 -0.24 -1.76 -0.65 -1.58 -1.02 
+-1.39 -1.29 -1.13 -1.52 -0.86 -1.67 -0.55 -1.74 -0.2 -1.78 0.24 -1.84 0.69 -1.99 1.11 -2 
+1.48 -1.89 1.82 -1.67 2.13 -1.35 1.17 -0.5 1.21 -0.39 1.3 -0.24 1.32 -0.08 34.31 0 
+0 -8.31 -52.49 0 f*
+232.83 3202.13 -3.12 0.28 -1.57 0.34 -1.52 0.5 -1.48 0.65 -1.41 0.83 -1.34 0.97 -1.25 1.17 
+-1.18 1.33 -1.07 1.52 -0.93 1.7 -0.78 1.91 -0.65 2.08 -0.48 2.3 -0.29 2.5 -0.11 2.71 
+0.13 2.95 0.43 3.21 0.8 3.3 1.24 3.15 0.78 1.47 0.93 1.34 1.06 1.22 1.2 1.06 
+1.36 0.85 1.52 0.65 1.67 0.41 1.87 0.15 33.27 0 0.93 0.17 0.8 0.5 0.67 0.74 
+0.52 0.91 0.34 1.02 0.16 1.05 -0.05 0.97 -0.26 0.88 6.23 0 0.46 -2.02 0.07 -3.17 
+-0.05 -2.25 -0.2 -1.78 -0.39 -1.35 -0.61 -1.06 -0.86 -0.83 -1.17 -0.71 -3.47 -1.39 3.25 -4.43 
+1.17 -1.91 0.89 -1.84 0.67 -1.89 0.43 -2.06 0.26 -2.32 0.07 -2.69 -0.09 -2.32 -0.24 -2.13 
+-0.39 -1.91 -0.52 -1.73 -0.67 -1.52 -0.78 -1.37 -0.87 -1.19 -0.98 -1.02 -1.06 -0.87 -1.15 -0.73 
+-1.2 -0.61 -1.26 -0.46 -2.62 -0.58 -2.73 -0.2 0 7.81 1.54 0.17 1.43 0.57 1.32 0.93 
+1.17 1.23 0.98 1.58 0.74 1.87 0.46 2.15 0.17 2.41 -0.46 3.47 -0.89 3.04 -1.24 2.58 
+-1.52 2.15 -1.67 1.68 -1.76 1.19 -1.75 0.72 -1.63 0.24 -10.39 0 1.43 -3.91 0.76 -3.23 
+1.43 -9.48 0.88 -2.79 0.97 -2.17 1.11 -1.65 1.21 -1.19 1.33 -0.78 1.39 -0.48 1.47 -0.24 
+1.52 -0.04 0 -7.81 -3.89 0.22 -3.14 0.65 -1.34 0.5 -1.19 0.58 -1.04 0.7 -0.96 0.8 
+-0.83 0.91 -0.71 0.99 -1.21 2.32 -0.96 2.71 -0.83 3.12 -2.08 13.52 -0.87 3.25 -0.5 1.18 
+-0.52 0.89 -0.54 0.67 -0.57 0.43 -0.58 0.26 -0.59 0.07 -4.67 0 -0.89 -0.16 -1.04 -0.45 
+-1.13 -0.8 -1.11 -1.17 -1 -1.56 -0.83 -2 -0.56 -2.41 -0.22 -2.89 0.24 -3.06 0.65 -2.61 
+0.98 -2.17 1.25 -1.71 1.46 -1.3 1.56 -0.91 1.63 -0.55 1.61 -0.17 0 -8.31 f*
+196.961 3258.27 72.7656 8.33594 re
+f*
+217.23 3275.43 0 9.36 40.53 13 -40.53 14.56 0 9.35 66.01 -24.43 2.75 -1.74 2.07 -1.69 
+1.47 -1.67 1 -1.65 0.58 -1.67 0.33 -1.67 0.13 -3.43 -0.13 -1.95 -0.91 -2.71 -7.29 0 
+0.61 3.17 0.04 1.56 -0.2 1.49 -0.49 1.41 -0.92 1.29 -1.34 1.08 -1.84 0.91 -8.85 3.11 
+-53.02 -17.67 f*
+196.96 3374.71 0 5.21 6.01 -3.28 5.99 -2.78 5.97 -2.34 5.95 -1.87 5.94 -1.45 5.95 -1 
+6 -0.61 6.03 -0.2 5.28 0.2 5.66 0.61 5.93 1 6.07 1.45 6.08 1.87 5.99 2.34 
+5.8 2.78 2.78 1.59 2.7 1.7 0 -5.21 -2.17 -1.71 -2.41 -1.67 -2.6 -1.61 -2.76 -1.54 
+-5.95 -2.84 -6.27 -2.45 -6.42 -2 -6.29 -1.52 -5.99 -0.96 -2.78 -0.24 -2.63 -0.09 -3.32 0.09 
+-3.26 0.24 -3.25 0.41 -3.21 0.55 -6.29 1.52 -6.14 2 -5.95 2.45 -5.73 2.84 -5.47 3.15 
+-5.21 3.38 f*
+201.63 3404.36 0.09 1.74 0.28 1.69 0.41 1.63 0.59 1.57 0.74 1.49 0.87 1.41 0.98 1.32 
+1.13 1.24 1.21 1.11 1.32 1 1.41 0.87 1.5 0.74 1.58 0.56 1.63 0.44 1.69 0.26 
+1.74 0.09 1.73 -0.09 1.7 -0.26 1.63 -0.44 1.56 -0.56 1.5 -0.74 1.41 -0.87 1.32 -1 
+1.24 -1.11 1.11 -1.24 1 -1.32 0.87 -1.41 0.71 -1.49 0.59 -1.57 0.43 -1.63 0.26 -1.69 
+0.09 -1.74 -0.09 -1.73 -0.26 -1.7 -0.43 -1.63 -0.59 -1.58 -0.71 -1.5 -0.87 -1.41 -1 -1.32 
+-1.11 -1.21 -1.24 -1.11 -1.32 -1 -1.41 -0.87 -1.5 -0.74 -1.56 -0.59 -1.63 -0.41 -1.7 -0.28 
+-1.73 -0.09 0 7.29 1.91 0.2 1.82 0.61 1.67 0.96 1.48 1.21 1.24 1.5 0.93 1.67 
+0.61 1.82 0.22 1.91 -0.22 1.91 -0.61 1.82 -0.93 1.67 -1.24 1.47 -1.48 1.24 -1.67 0.96 
+-1.82 0.58 -1.91 0.22 -1.93 -0.22 -1.8 -0.58 -1.7 -0.96 -1.47 -1.24 -1.24 -1.47 -0.93 -1.67 
+-0.61 -1.82 -0.2 -1.91 0.2 -1.91 0.61 -1.82 0.93 -1.67 1.24 -1.5 1.47 -1.21 1.7 -0.96 
+1.8 -0.61 1.93 -0.2 0 -7.29 -1.74 0.09 -1.69 0.28 -1.63 0.41 -1.58 0.59 -1.5 0.74 
+-1.41 0.87 -1.32 1 -1.21 1.11 -1.13 1.21 -0.98 1.32 -0.87 1.41 -0.74 1.5 -0.59 1.58 
+-0.41 1.63 -0.28 1.7 -0.09 1.73 f*
+199.02 3444.9 0 6.77 72.79 -39.52 0 -6.75 -72.79 39.49 f*
+237.5 3453.23 0.09 1.74 0.25 1.67 0.44 1.65 0.58 1.56 0.74 1.5 0.87 1.41 0.98 1.32 
+1.13 1.24 1.21 1.11 1.32 1 1.41 0.86 1.5 0.72 1.58 0.58 1.63 0.43 1.69 0.26 
+1.74 0.09 1.73 -0.09 1.67 -0.26 1.65 -0.43 1.56 -0.58 1.5 -0.72 1.41 -0.86 1.32 -1 
+1.24 -1.11 1.11 -1.24 1 -1.32 0.87 -1.41 0.72 -1.5 0.58 -1.56 0.43 -1.65 0.26 -1.67 
+0.09 -1.74 -0.09 -1.73 -0.26 -1.7 -0.43 -1.62 -0.58 -1.59 -0.72 -1.5 -0.87 -1.41 -1 -1.32 
+-1.11 -1.21 -1.24 -1.13 -1.32 -0.98 -1.41 -0.87 -1.5 -0.74 -1.56 -0.58 -1.65 -0.43 -1.67 -0.26 
+-1.73 -0.09 0 7.29 1.91 0.2 1.82 0.61 1.67 0.93 1.48 1.24 1.24 1.47 0.93 1.7 
+0.61 1.8 0.22 1.93 -0.22 1.91 -0.61 1.82 -0.93 1.67 -1.24 1.47 -1.48 1.24 -1.67 0.93 
+-1.82 0.61 -1.91 0.21 -1.93 -0.21 -1.8 -0.61 -1.7 -0.93 -1.47 -1.24 -1.24 -1.47 -0.93 -1.67 
+-0.61 -1.82 -0.2 -1.91 0.2 -1.93 0.61 -1.8 0.93 -1.7 1.24 -1.47 1.47 -1.24 1.7 -0.93 
+1.8 -0.61 1.93 -0.2 0 -7.29 -1.74 0.09 -1.69 0.26 -1.63 0.43 -1.58 0.58 -1.5 0.74 
+-1.41 0.87 -1.32 0.98 -1.21 1.13 -1.13 1.21 -0.98 1.32 -0.87 1.41 -0.74 1.5 -0.58 1.59 
+-0.44 1.63 -0.25 1.7 -0.09 1.73 f*
+196.96 3477.15 0 5.18 6.1 4 6.18 3.43 6.23 2.87 6.18 2.32 6.08 1.78 5.93 1.26 
+5.71 0.74 5.42 0.25 5.43 -0.25 5.75 -0.8 5.93 -1.32 6.04 -1.84 6.01 -2.34 5.95 -2.87 
+5.73 -3.34 2.76 -1.87 2.7 -2 0 -5.18 -5.47 3.1 -5.49 2.74 -5.56 2.32 -5.64 1.91 
+-5.77 1.5 -5.92 1.06 -6.1 0.65 -6.32 0.24 -6.16 -0.22 -5.99 -0.58 -5.93 -1.02 -5.84 -1.43 
+-5.86 -1.88 -5.9 -2.32 -6.01 -2.8 -6.14 -3.26 f*
+819.18 2340.52 4.58 0 0 -56.58 -7.07 0 0 40.35 -12.48 0 0 4.99 5.04 0.58 
+2.25 0.48 2.06 0.82 0.95 0.57 0.88 0.7 0.82 0.87 0.74 1.02 0.67 1.21 0.61 1.43 
+0.52 1.65 0.43 1.91 f*
+862.43 2340.52 2.06 -0.09 1.95 -0.28 1.89 -0.45 1.75 -0.68 1.67 -0.84 1.54 -1.08 1.43 -1.3 
+1.3 -1.52 1.19 -1.75 1.04 -2 0.93 -2.23 0.76 -2.49 0.63 -2.78 0.48 -3.04 0.32 -3.3 
+0.16 -3.6 -0.11 -4.47 -0.37 -4.04 -0.59 -3.64 -0.78 -3.25 -0.96 -2.88 -1.15 -2.54 -1.29 -2.22 
+-1.41 -1.91 -1.54 -1.61 -1.65 -1.34 -1.71 -1.09 -1.79 -0.85 -1.84 -0.61 -1.87 -0.43 -1.87 -0.24 
+-1.88 -0.09 -2.89 0.22 -2.69 0.68 -2.48 1.11 -2.23 1.61 -1.98 2.08 -1.64 2.56 -1.35 3.1 
+-0.95 3.63 7.07 0 0.67 -2.04 0.8 -1.78 0.95 -1.5 1.09 -1.21 1.25 -0.96 1.41 -0.7 
+1.58 -0.41 1.79 -0.13 1.58 0.11 1.47 0.33 1.39 0.52 1.26 0.71 1.15 0.91 1.07 1.07 
+0.95 1.21 0.85 1.37 0.76 1.52 0.66 1.63 0.97 3.6 0.59 3.97 0.2 4.26 -1.96 -1.93 
+-1.86 -1.5 -1.76 -1.09 -1.65 -0.78 -1.54 -0.5 -1.46 -0.28 -2.66 -0.15 -2.2 0.17 -2.04 0.35 
+-1.89 0.54 -1.75 0.7 -1.59 0.84 -1.48 0.98 -1.3 1.11 -1.17 1.24 -1.02 1.35 -0.87 1.43 
+-0.72 1.52 -0.59 1.59 -0.43 1.66 -0.28 1.7 -0.15 1.76 0 1.78 7.08 0 0.21 -2.2 
+0.61 -2.21 1 -2.11 1.34 -1.91 1.7 -1.63 2 -1.3 1.08 -0.48 1.17 -0.35 1.24 -0.21 
+1.3 -0.08 1.3 0.08 1.21 0.21 1.17 0.35 1.11 0.48 1.99 1.3 1.67 1.63 1.37 1.91 
+0.98 2.11 0.63 2.21 0.2 2.2 -0.2 2.21 -0.62 2.2 -0.98 2.11 -1.37 1.91 -1.67 1.64 
+-1.99 1.29 -1.11 0.48 -1.17 0.37 -1.21 0.21 -1.3 0.07 -1.3 -0.07 -1.24 -0.21 -1.17 -0.37 
+-1.08 -0.48 -2 -1.29 -1.7 -1.64 -1.34 -1.91 -1 -2.11 -0.61 -2.2 -0.21 -2.21 -7.08 0 
+0.02 1.87 0.2 1.8 0.37 1.78 0.54 1.7 0.7 1.63 0.85 1.54 1.02 1.46 1.15 1.34 
+1.31 1.21 1.43 1.11 1.57 0.96 1.69 0.83 1.8 0.65 1.93 0.48 2.02 0.28 2.14 0.11 f*
+924.83 2325.96 -7.08 0 -0.48 1.91 -0.72 1.67 -0.97 1.43 -1.17 1.18 -1.3 0.93 -1.45 0.65 
+-1.5 0.42 -1.56 0.13 -1.52 -0.09 -1.4 -0.28 -1.35 -0.44 -1.23 -0.63 -1.17 -0.8 -1.04 -0.96 
+-0.98 -1.13 -0.87 -1.28 -0.76 -1.46 -0.68 -1.58 -1.04 -3.64 -0.63 -4.19 -0.21 -4.73 1.69 1.82 
+1.67 1.43 1.67 1.09 1.67 0.8 1.69 0.54 1.71 0.33 3.6 0.21 2.78 -0.26 2.87 -0.85 
+1.43 -0.61 1.41 -0.79 1.37 -0.91 1.28 -1.06 1.2 -1.19 1.11 -1.34 0.95 -1.52 0.83 -1.65 
+0.65 -1.8 0.48 -1.95 0.26 -2.11 0.04 -2.25 -7.07 -0.42 -0.24 2.32 -0.7 2.26 -1.11 2.11 
+-1.43 1.88 -1.74 1.61 -1.97 1.21 -2.17 0.81 -1.13 0.21 -1.15 0.07 -1.17 -0.07 -1.13 -0.21 
+-2.16 -0.81 -1.98 -1.21 -1.73 -1.61 -1.43 -1.88 -1.11 -2.11 -0.7 -2.26 -0.24 -2.32 0.24 -2.32 
+0.7 -2.26 1.11 -2.11 1.43 -1.89 1.73 -1.61 1.98 -1.23 2.16 -0.78 1.13 -0.22 1.17 -0.07 
+1.15 0.07 1.13 0.22 2.17 0.78 1.97 1.23 1.74 1.61 1.43 1.89 1.11 2.11 0.7 2.26 
+0.24 2.32 7.07 0.42 -0.28 -3.32 -0.35 -1.7 -0.48 -1.65 -0.63 -1.64 -0.79 -1.59 -0.93 -1.52 
+-1.06 -1.43 -1.24 -1.32 -1.37 -1.22 -1.54 -1.06 -1.7 -0.91 -1.84 -0.76 -2.02 -0.55 -2.17 -0.34 
+-2.32 -0.13 -2.56 0.16 -2.32 0.43 -2.14 0.67 -1.93 0.95 -1.75 1.18 -1.57 1.41 -1.39 1.61 
+-1.21 1.82 -1.04 2 -0.89 2.17 -0.74 2.34 -0.59 2.47 -0.44 2.61 -0.32 2.73 -0.24 5.75 
+0.09 3.43 0.26 3.23 0.44 3.08 0.58 2.89 0.76 2.69 0.93 2.5 1.06 2.3 1.24 2.08 
+1.37 1.84 1.54 1.63 1.67 1.41 1.82 1.15 1.96 0.93 2.08 0.65 2.23 0.39 2.34 0.15 
+1.7 -0.09 1.61 -0.22 1.52 -0.37 1.46 -0.5 1.39 -0.63 1.28 -0.74 2.3 -1.78 1.89 -2.17 
+1.5 -2.47 1.04 -2.71 0.57 -2.88 f*
+951.43 2340.52 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.76 -1.08 1.65 -1.35 1.54 -1.58 1.43 -1.78 
+1.28 -2 1.17 -2.15 1.02 -2.28 0.89 -2.41 0.71 -2.5 0.59 -2.59 0.43 -2.62 0.24 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.24 -2.67 -0.43 -2.65 -0.59 -2.61 -0.71 -2.54 -0.89 -2.45 -1.02 -2.32 
+-1.17 -2.19 -1.28 -2.02 -1.43 -1.82 -1.54 -1.61 -1.65 -1.39 -1.76 -1.11 -1.87 -0.83 -1.97 -0.5 
+-2.06 -0.2 -2.06 0.2 -1.98 0.5 -1.87 0.83 -1.75 1.11 -1.65 1.39 -1.54 1.61 -1.43 1.82 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.89 2.45 -0.72 2.54 -0.59 2.61 -0.43 2.65 -0.24 2.67 
+-0.09 2.65 7.48 0 0.26 -5.05 0.71 -4.54 1.15 -4 1.45 -3.36 1.71 -2.69 0.93 -1.09 
+0.96 -0.91 1 -0.71 1 -0.52 1.02 -0.31 1.02 -0.11 1.02 0.11 1.02 0.31 1 0.52 
+0.99 0.71 0.96 0.91 0.93 1.09 1.71 2.69 1.46 3.36 1.15 4 0.71 4.54 0.26 5.05 
+-0.26 5.05 -0.71 4.5 -1.15 3.91 -1.46 3.29 -1.71 2.63 -0.93 1.04 -0.96 0.87 -0.99 0.7 
+-1 0.5 -1.02 0.3 -1.02 0.09 -1.02 -0.09 -1.02 -0.3 -1 -0.5 -1 -0.7 -0.96 -0.87 
+-0.93 -1.04 -1.71 -2.63 -1.45 -3.29 -1.15 -3.91 -0.71 -4.5 -0.26 -5.05 -7.48 0 0.09 2.67 
+0.24 2.65 0.43 2.62 0.59 2.59 0.72 2.5 0.89 2.41 1.02 2.28 1.17 2.15 1.28 2 
+1.43 1.78 1.54 1.58 1.65 1.35 1.75 1.08 1.87 0.8 1.98 0.5 2.06 0.17 f*
+1298.57 2340.52 4.58 0 0 -56.58 -7.07 0 0 40.35 -12.48 0 0 4.99 5.04 0.58 
+2.25 0.48 2.06 0.82 0.95 0.57 0.88 0.7 0.82 0.87 0.76 1.02 0.67 1.21 0.58 1.43 
+0.52 1.65 0.43 1.91 f*
+1341.82 2340.52 2.06 -0.09 1.98 -0.28 1.87 -0.45 1.75 -0.68 1.67 -0.84 1.54 -1.08 1.43 -1.3 
+1.32 -1.52 1.17 -1.75 1.07 -2 0.91 -2.23 0.79 -2.49 0.63 -2.78 0.46 -3.04 0.32 -3.3 
+0.18 -3.6 -0.13 -4.47 -0.37 -4.04 -0.57 -3.64 -0.78 -3.25 -0.98 -2.88 -1.13 -2.54 -1.3 -2.22 
+-1.41 -1.91 -1.54 -1.61 -1.62 -1.34 -1.73 -1.09 -1.79 -0.85 -1.82 -0.61 -1.87 -0.43 -1.89 -0.24 
+-1.89 -0.09 -2.86 0.22 -2.71 0.68 -2.48 1.11 -2.23 1.61 -1.95 2.08 -1.67 2.56 -1.33 3.1 
+-0.97 3.63 7.07 0 0.67 -2.04 0.83 -1.78 0.93 -1.5 1.11 -1.21 1.23 -0.96 1.41 -0.7 
+1.61 -0.41 1.78 -0.13 1.59 0.11 1.47 0.33 1.37 0.52 1.25 0.71 1.17 0.91 1.05 1.07 
+0.95 1.21 0.87 1.37 0.74 1.52 0.65 1.63 0.97 3.6 0.61 3.97 0.2 4.26 -1.97 -1.93 
+-1.87 -1.5 -1.74 -1.09 -1.65 -0.78 -1.56 -0.5 -1.46 -0.28 -2.64 -0.15 -2.19 0.17 -2.04 0.35 
+-1.91 0.54 -1.73 0.7 -1.61 0.84 -1.46 0.98 -1.32 1.11 -1.15 1.24 -1.02 1.35 -0.89 1.43 
+-0.72 1.52 -0.59 1.59 -0.43 1.66 -0.28 1.7 -0.16 1.76 0.02 1.78 7.06 0 0.21 -2.2 
+0.61 -2.21 1 -2.11 1.37 -1.91 1.67 -1.63 2 -1.3 1.11 -0.48 1.15 -0.35 1.24 -0.21 
+1.3 -0.08 1.3 0.08 1.23 0.21 1.17 0.35 1.09 0.48 1.99 1.3 1.7 1.63 1.34 1.91 
+1 2.11 0.61 2.21 0.22 2.2 -0.22 2.21 -0.61 2.2 -1 2.11 -1.34 1.91 -1.7 1.64 
+-1.99 1.29 -1.09 0.48 -1.17 0.37 -1.23 0.21 -1.3 0.07 -1.3 -0.07 -1.24 -0.21 -1.15 -0.37 
+-1.11 -0.48 -2 -1.29 -1.67 -1.64 -1.37 -1.91 -1 -2.11 -0.61 -2.2 -0.21 -2.21 -7.06 0 
+0 1.87 0.2 1.8 0.38 1.78 0.54 1.7 0.7 1.63 0.88 1.54 0.99 1.46 1.15 1.34 
+1.3 1.21 1.43 1.11 1.56 0.96 1.69 0.83 1.83 0.65 1.9 0.48 2.05 0.28 2.12 0.11 f*
+1368.01 2340.52 37.85 0 0 -5.84 -5.36 -8.05 -4.34 -6.95 -3.49 -6.14 -2.76 -5.62 -2.2 -5.47 
+-1.8 -5.59 -1.52 -6.08 -1.41 -6.84 -7.49 0 2.13 7.86 2.04 6.63 2.15 5.77 2.36 5.34 
+2.75 5.25 3.25 5.55 8.62 13.52 -30.79 0 0 6.66 f*
+1430.82 2340.52 2.06 -0.17 1.97 -0.5 1.86 -0.8 1.76 -1.08 1.67 -1.35 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.5 0.56 -2.59 0.43 -2.62 0.26 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.26 -2.67 -0.43 -2.65 -0.56 -2.61 -0.74 -2.54 -0.89 -2.45 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.67 -1.39 -1.76 -1.11 -1.86 -0.83 -1.97 -0.5 
+-2.06 -0.2 -2.06 0.2 -1.95 0.5 -1.87 0.83 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.19 -1.04 2.32 -0.87 2.45 -0.74 2.54 -0.59 2.61 -0.41 2.65 -0.26 2.67 
+-0.09 2.65 7.48 0 0.26 -5.05 0.74 -4.54 1.13 -4 1.46 -3.36 1.71 -2.69 0.93 -1.09 
+0.95 -0.91 1 -0.71 1.02 -0.52 0.99 -0.31 1.02 -0.11 1.02 0.11 1.02 0.31 1.02 0.52 
+0.97 0.71 0.98 0.91 0.93 1.09 1.7 2.69 1.48 3.36 1.13 4 0.73 4.54 0.26 5.05 
+-0.26 5.05 -0.73 4.5 -1.13 3.91 -1.48 3.29 -1.7 2.63 -0.93 1.04 -0.98 0.87 -0.97 0.7 
+-1.02 0.5 -1.02 0.3 -1.02 0.09 -1.02 -0.09 -0.99 -0.3 -1.02 -0.5 -1 -0.7 -0.95 -0.87 
+-0.93 -1.04 -1.71 -2.63 -1.46 -3.29 -1.13 -3.91 -0.74 -4.5 -0.26 -5.05 -7.48 0 0.09 2.67 
+0.26 2.65 0.41 2.62 0.59 2.59 0.74 2.5 0.87 2.41 1.04 2.28 1.15 2.15 1.3 2 
+1.41 1.78 1.54 1.58 1.65 1.35 1.78 1.08 1.87 0.8 1.95 0.5 2.06 0.17 f*
+1777.95 2340.52 4.58 0 0 -56.58 -7.07 0 0 40.35 -12.48 0 0 4.99 5.04 0.58 
+2.25 0.48 2.07 0.82 0.95 0.57 0.89 0.7 0.8 0.87 0.76 1.02 0.67 1.21 0.59 1.43 
+0.52 1.65 0.43 1.91 f*
+1821.2 2340.52 2.07 -0.09 1.97 -0.28 1.87 -0.45 1.78 -0.68 1.65 -0.84 1.56 -1.08 1.43 -1.3 
+1.3 -1.52 1.17 -1.75 1.07 -2 0.91 -2.23 0.79 -2.49 0.63 -2.78 0.48 -3.04 0.32 -3.3 
+0.16 -3.6 -0.13 -4.47 -0.34 -4.04 -0.59 -3.64 -0.78 -3.25 -0.98 -2.88 -1.13 -2.54 -1.29 -2.22 
+-1.43 -1.91 -1.54 -1.61 -1.63 -1.34 -1.71 -1.09 -1.8 -0.85 -1.82 -0.61 -1.87 -0.43 -1.89 -0.24 
+-1.86 -0.09 -2.89 0.22 -2.69 0.68 -2.5 1.11 -2.23 1.61 -1.96 2.08 -1.67 2.56 -1.33 3.1 
+-0.97 3.63 7.07 0 0.7 -2.04 0.8 -1.78 0.95 -1.5 1.09 -1.21 1.23 -0.96 1.43 -0.7 
+1.58 -0.41 1.78 -0.13 1.59 0.11 1.48 0.33 1.37 0.52 1.25 0.71 1.17 0.91 1.07 1.07 
+0.95 1.21 0.85 1.37 0.74 1.52 0.65 1.63 1 3.6 0.59 3.97 0.2 4.26 -1.97 -1.93 
+-1.84 -1.5 -1.76 -1.09 -1.65 -0.78 -1.56 -0.5 -1.46 -0.28 -2.64 -0.15 -2.19 0.17 -2.04 0.35 
+-1.89 0.54 -1.75 0.7 -1.61 0.84 -1.46 0.98 -1.32 1.11 -1.15 1.24 -1.02 1.35 -0.87 1.43 
+-0.74 1.52 -0.59 1.59 -0.44 1.66 -0.28 1.7 -0.13 1.76 0 1.78 7.07 0 0.2 -2.2 
+0.63 -2.21 1 -2.11 1.34 -1.91 1.67 -1.63 2 -1.3 1.11 -0.48 1.17 -0.35 1.24 -0.21 
+1.28 -0.08 1.3 0.08 1.23 0.21 1.17 0.35 1.11 0.48 1.97 1.3 1.69 1.63 1.35 1.91 
+1 2.11 0.61 2.21 0.21 2.2 -0.21 2.21 -0.61 2.2 -1 2.11 -1.35 1.91 -1.69 1.64 
+-1.97 1.29 -1.11 0.48 -1.17 0.37 -1.23 0.21 -1.3 0.07 -1.28 -0.07 -1.24 -0.21 -1.17 -0.37 
+-1.11 -0.48 -2 -1.29 -1.67 -1.64 -1.34 -1.91 -1 -2.11 -0.63 -2.2 -0.2 -2.21 -7.07 0 
+0.02 1.87 0.17 1.8 0.38 1.78 0.54 1.7 0.69 1.63 0.88 1.54 0.99 1.46 1.17 1.34 
+1.31 1.21 1.43 1.11 1.57 0.96 1.67 0.83 1.82 0.65 1.91 0.48 2.04 0.28 2.12 0.11 f*
+1865.71 2340.52 3.47 -0.26 3.23 -0.74 1.48 -0.56 1.41 -0.65 1.32 -0.8 1.19 -0.89 1.09 -1.02 
+0.98 -1.11 0.84 -1.24 0.72 -1.32 0.57 -1.46 0.41 -1.54 0.26 -1.65 0.08 -1.73 -0.2 -2.48 
+-0.52 -2.11 -0.78 -1.8 -1 -1.52 -1.17 -1.3 -1.26 -1.11 -2.56 -1.76 2.08 -1.07 1.87 -1.32 
+1.63 -1.54 1.39 -1.74 1.11 -1.91 0.8 -2.08 0.52 -2.19 0.15 -2.3 -0.07 -1.34 -0.24 -1.43 
+-0.39 -1.46 -0.55 -1.47 -0.7 -1.48 -0.84 -1.43 -1 -1.41 -1.15 -1.34 -1.3 -1.26 -1.45 -1.17 
+-1.61 -1.02 -1.76 -0.91 -1.91 -0.71 -2.05 -0.55 -2.19 -0.34 -2.34 -0.13 -2.34 0.13 -2.17 0.34 
+-2 0.55 -1.87 0.71 -1.7 0.91 -1.52 1.02 -1.39 1.17 -1.21 1.26 -1.08 1.34 -0.91 1.41 
+-0.78 1.43 -0.63 1.48 -0.84 2.93 -0.29 2.78 7.48 0 0.26 -2.26 0.7 -2.12 1.09 -1.91 
+1.45 -1.65 1.74 -1.37 1.97 -1.04 2.15 -0.65 2.3 -0.22 2.3 0.22 2.15 0.65 1.97 1.04 
+1.74 1.37 1.46 1.65 1.08 1.91 0.7 2.13 0.26 2.26 -0.26 2.28 -0.7 2.13 -1.08 1.89 
+-1.46 1.67 -1.74 1.37 -1.97 1.02 -2.15 0.65 -2.3 0.24 -2.3 -0.24 -2.15 -0.65 -1.97 -1.02 
+-1.74 -1.37 -1.45 -1.67 -1.09 -1.89 -0.7 -2.13 -0.26 -2.28 -7.48 0 0.18 2.28 0.5 2.17 
+0.82 2.02 1.11 1.87 1.39 1.72 1.63 1.54 1.86 1.37 2.09 1.19 -2.56 1.76 -1.26 1.11 
+-1.17 1.3 -1 1.52 -0.78 1.8 -0.52 2.11 -0.2 2.48 7.07 0 0.22 -1.93 0.59 -1.71 
+0.93 -1.5 1.23 -1.26 1.48 -1 1.69 -0.74 1.87 -0.46 1.97 -0.16 1.98 0.16 1.87 0.46 
+1.69 0.74 1.48 1 1.23 1.26 0.93 1.5 0.59 1.71 0.22 1.93 -0.22 1.93 -0.59 1.71 
+-0.93 1.5 -1.23 1.24 -1.48 1.02 -1.69 0.71 -1.87 0.46 -1.98 0.15 -1.97 -0.15 -1.87 -0.46 
+-1.69 -0.71 -1.48 -1.02 -1.23 -1.24 -0.93 -1.5 -0.59 -1.71 -0.22 -1.93 -7.07 0 0.08 1.73 
+0.26 1.65 0.42 1.54 0.56 1.46 0.72 1.32 0.84 1.24 0.96 1.11 1.11 1.02 1.19 0.89 
+1.33 0.8 1.39 0.65 1.49 0.56 3.23 0.74 3.47 0.26 f*
+1910.22 2340.52 2.04 -0.17 1.97 -0.5 1.87 -0.8 1.78 -1.08 1.65 -1.35 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.5 0.59 -2.59 0.41 -2.62 0.26 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.26 -2.67 -0.41 -2.65 -0.59 -2.61 -0.74 -2.54 -0.89 -2.45 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.78 -1.11 -1.87 -0.83 -1.97 -0.5 
+-2.04 -0.2 -2.06 0.2 -1.98 0.5 -1.87 0.83 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.19 -1.02 2.32 -0.89 2.45 -0.74 2.54 -0.59 2.61 -0.41 2.65 -0.26 2.67 
+-0.08 2.65 7.48 0 0.26 -5.05 0.74 -4.54 1.13 -4 1.46 -3.36 1.71 -2.69 0.93 -1.09 
+0.97 -0.91 0.98 -0.71 1.02 -0.52 1.02 -0.31 1.02 -0.11 1 0.11 1.02 0.31 1.02 0.52 
+0.97 0.71 0.98 0.91 0.93 1.09 1.71 2.69 1.46 3.36 1.13 4 0.73 4.54 0.26 5.05 
+-0.26 5.05 -0.73 4.5 -1.13 3.91 -1.46 3.29 -1.71 2.63 -0.93 1.04 -0.98 0.87 -0.97 0.7 
+-1.02 0.5 -1.02 0.3 -1 0.09 -1.02 -0.09 -1.02 -0.3 -1.02 -0.5 -0.98 -0.7 -0.97 -0.87 
+-0.93 -1.04 -1.71 -2.63 -1.46 -3.29 -1.13 -3.91 -0.74 -4.5 -0.26 -5.05 -7.48 0 0.08 2.67 
+0.26 2.65 0.41 2.62 0.59 2.59 0.74 2.5 0.89 2.41 1.02 2.28 1.15 2.15 1.3 2 
+1.41 1.78 1.54 1.58 1.65 1.35 1.78 1.08 1.87 0.8 1.98 0.5 2.06 0.17 f*
+2257.33 2340.52 4.59 0 0 -56.58 -7.08 0 0 40.35 -12.46 0 0 4.99 5.01 0.58 
+2.28 0.48 2.06 0.82 0.93 0.57 0.89 0.7 0.82 0.87 0.74 1.02 0.67 1.21 0.61 1.43 
+0.5 1.65 0.43 1.91 f*
+2300.61 2340.52 2.06 -0.09 1.95 -0.28 1.87 -0.45 1.78 -0.68 1.65 -0.84 1.56 -1.08 1.43 -1.3 
+1.3 -1.52 1.19 -1.75 1.04 -2 0.91 -2.23 0.79 -2.49 0.63 -2.78 0.48 -3.04 0.32 -3.3 
+0.15 -3.6 -0.13 -4.47 -0.34 -4.04 -0.59 -3.64 -0.78 -3.25 -0.95 -2.88 -1.15 -2.54 -1.28 -2.22 
+-1.43 -1.91 -1.52 -1.61 -1.65 -1.34 -1.71 -1.09 -1.79 -0.85 -1.84 -0.61 -1.87 -0.43 -1.88 -0.24 
+-1.87 -0.09 -2.89 0.22 -2.69 0.68 -2.48 1.11 -2.23 1.61 -1.97 2.08 -1.68 2.56 -1.32 3.1 
+-0.97 3.63 7.07 0 0.7 -2.04 0.8 -1.78 0.96 -1.5 1.08 -1.21 1.26 -0.96 1.41 -0.7 
+1.58 -0.41 1.79 -0.13 1.58 0.11 1.48 0.33 1.37 0.52 1.28 0.71 1.15 0.91 1.07 1.07 
+0.95 1.21 0.85 1.37 0.76 1.52 0.63 1.63 1 3.6 0.59 3.97 0.2 4.26 -1.97 -1.93 
+-1.84 -1.5 -1.76 -1.09 -1.65 -0.78 -1.54 -0.5 -1.46 -0.28 -2.66 -0.15 -2.2 0.17 -2.04 0.35 
+-1.89 0.54 -1.75 0.7 -1.61 0.84 -1.46 0.98 -1.3 1.11 -1.17 1.24 -1.02 1.35 -0.87 1.43 
+-0.74 1.52 -0.56 1.59 -0.44 1.66 -0.3 1.7 -0.13 1.76 0 1.78 7.08 0 0.21 -2.2 
+0.61 -2.21 1 -2.11 1.34 -1.91 1.7 -1.63 1.97 -1.3 1.11 -0.48 1.17 -0.35 1.24 -0.21 
+1.3 -0.08 1.29 0.08 1.23 0.21 1.17 0.35 1.11 0.48 1.99 1.3 1.67 1.63 1.35 1.91 
+1 2.11 0.61 2.21 0.21 2.2 -0.21 2.21 -0.61 2.2 -1 2.11 -1.35 1.91 -1.67 1.64 
+-1.99 1.29 -1.11 0.48 -1.17 0.37 -1.23 0.21 -1.29 0.07 -1.3 -0.07 -1.24 -0.21 -1.17 -0.37 
+-1.11 -0.48 -1.97 -1.29 -1.7 -1.64 -1.34 -1.91 -1 -2.11 -0.61 -2.2 -0.21 -2.21 -7.08 0 
+0.02 1.87 0.2 1.8 0.37 1.78 0.52 1.7 0.71 1.63 0.85 1.54 1.02 1.46 1.15 1.34 
+1.31 1.21 1.43 1.11 1.56 0.96 1.7 0.83 1.8 0.65 1.93 0.48 2.02 0.28 2.14 0.11 f*
+2345.09 2340.52 2.06 -0.09 1.98 -0.28 1.87 -0.45 1.78 -0.68 1.65 -0.84 1.54 -1.08 1.43 -1.3 
+1.32 -1.52 1.17 -1.75 1.07 -2 0.91 -2.23 0.78 -2.49 0.64 -2.78 0.48 -3.04 0.3 -3.3 
+0.17 -3.6 -0.13 -4.47 -0.37 -4.04 -0.57 -3.64 -0.78 -3.25 -0.97 -2.88 -1.13 -2.54 -1.29 -2.22 
+-1.43 -1.91 -1.54 -1.61 -1.63 -1.34 -1.72 -1.09 -1.8 -0.85 -1.82 -0.61 -1.87 -0.43 -1.89 -0.24 
+-1.87 -0.09 -2.88 0.22 -2.7 0.68 -2.5 1.11 -2.23 1.61 -1.96 2.08 -1.67 2.56 -1.32 3.1 
+-0.98 3.63 7.08 0 0.67 -2.04 0.82 -1.78 0.93 -1.5 1.11 -1.21 1.23 -0.96 1.43 -0.7 
+1.58 -0.41 1.78 -0.13 1.59 0.11 1.47 0.33 1.37 0.52 1.26 0.71 1.17 0.91 1.06 1.07 
+0.93 1.21 0.87 1.37 0.73 1.52 0.66 1.63 0.99 3.6 0.59 3.97 0.2 4.26 -1.98 -1.93 
+-1.87 -1.5 -1.73 -1.09 -1.65 -0.78 -1.56 -0.5 -1.46 -0.28 -2.64 -0.15 -2.19 0.17 -2.04 0.35 
+-1.91 0.54 -1.73 0.7 -1.61 0.84 -1.46 0.98 -1.32 1.11 -1.16 1.24 -1.02 1.35 -0.89 1.43 
+-0.72 1.52 -0.59 1.59 -0.43 1.66 -0.29 1.7 -0.12 1.76 0 1.78 7.07 0 0.2 -2.2 
+0.63 -2.21 0.98 -2.11 1.37 -1.91 1.67 -1.63 2 -1.3 1.11 -0.48 1.17 -0.35 1.21 -0.21 
+1.3 -0.08 1.3 0.08 1.23 0.21 1.17 0.35 1.09 0.48 2 1.3 1.69 1.63 1.35 1.91 
+0.99 2.11 0.61 2.21 0.21 2.2 -0.21 2.21 -0.61 2.2 -0.99 2.11 -1.35 1.91 -1.69 1.64 
+-2 1.29 -1.09 0.48 -1.17 0.37 -1.23 0.21 -1.3 0.07 -1.3 -0.07 -1.21 -0.21 -1.17 -0.37 
+-1.11 -0.48 -2 -1.29 -1.67 -1.64 -1.37 -1.91 -0.98 -2.11 -0.63 -2.2 -0.2 -2.21 -7.07 0 
+0 1.87 0.19 1.8 0.38 1.78 0.54 1.7 0.69 1.63 0.87 1.54 1 1.46 1.17 1.34 
+1.29 1.21 1.43 1.11 1.59 0.96 1.67 0.83 1.82 0.65 1.91 0.48 2.04 0.28 2.13 0.11 f*
+2389.61 2340.52 2.06 -0.17 1.95 -0.5 1.88 -0.8 1.76 -1.08 1.65 -1.35 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.17 -2.15 1.02 -2.28 0.87 -2.41 0.74 -2.5 0.59 -2.59 0.41 -2.62 0.26 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.26 -2.67 -0.41 -2.65 -0.59 -2.61 -0.74 -2.54 -0.87 -2.45 -1.02 -2.32 
+-1.17 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.76 -1.11 -1.88 -0.83 -1.95 -0.5 
+-2.06 -0.2 -2.06 0.2 -1.98 0.5 -1.87 0.83 -1.75 1.11 -1.67 1.39 -1.52 1.61 -1.43 1.82 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.89 2.45 -0.74 2.54 -0.57 2.61 -0.43 2.65 -0.26 2.67 
+-0.08 2.65 7.48 0 0.26 -5.05 0.74 -4.54 1.13 -4 1.48 -3.36 1.71 -2.69 0.91 -1.09 
+0.97 -0.91 1 -0.71 1 -0.52 1.02 -0.31 1.02 -0.11 1.02 0.11 1.02 0.31 1 0.52 
+1 0.71 0.95 0.91 0.93 1.09 1.72 2.69 1.45 3.36 1.13 4 0.74 4.54 0.26 5.05 
+-0.26 5.05 -0.74 4.5 -1.13 3.91 -1.45 3.29 -1.72 2.63 -0.93 1.04 -0.95 0.87 -1 0.7 
+-1 0.5 -1.02 0.3 -1.02 0.09 -1.02 -0.09 -1.02 -0.3 -1 -0.5 -1 -0.7 -0.97 -0.87 
+-0.91 -1.04 -1.71 -2.63 -1.48 -3.29 -1.13 -3.91 -0.74 -4.5 -0.26 -5.05 -7.48 0 0.08 2.67 
+0.26 2.65 0.43 2.62 0.57 2.59 0.74 2.5 0.89 2.41 1.02 2.28 1.17 2.15 1.28 2 
+1.43 1.78 1.52 1.58 1.67 1.35 1.75 1.08 1.87 0.8 1.98 0.5 2.06 0.17 f*
+2720.31 2320.96 7.05 0 0.2 2.84 0.52 2.56 0.89 2.28 1.25 1.93 1.63 1.56 2.02 1.17 
+2.36 0.71 2.78 0.24 2.15 -0.2 2 -0.54 1.84 -0.93 1.61 -1.23 1.32 -1.57 1.02 -1.84 
+0.65 -2.12 0.22 -2.36 -0.2 -2.41 -0.59 -2.02 -0.98 -1.74 -1.41 -1.54 -1.8 -1.45 -2.21 -1.5 
+-5.71 -3.49 -4.82 -2.8 -3.93 -2.84 -1.67 -1.46 -1.45 -1.47 -1.28 -1.5 -1.09 -1.52 -0.93 -1.56 
+-0.78 -1.59 -0.63 -1.64 -0.5 -1.68 -0.61 -3.54 -0.2 -3.78 37.84 0 0 6.67 -29.94 0 
+0.75 2.56 1.02 2.12 1.32 1.8 1.7 1.63 2.06 1.54 2.52 1.56 6.45 3.75 3.71 1.84 
+3.13 2.06 2.52 2.28 1.97 2.39 1.45 2.5 1.02 2.56 0.56 2.56 0.17 2.52 -0.09 1.76 
+-0.28 1.69 -0.46 1.61 -0.63 1.52 -0.78 1.43 -0.91 1.33 -1.06 1.23 -1.2 1.13 -1.3 1.02 
+-1.41 0.89 -1.52 0.78 -1.59 0.65 -1.67 0.52 -1.75 0.37 -1.81 0.22 -1.84 0.09 -1.99 -0.09 
+-1.91 -0.22 -1.84 -0.37 -1.73 -0.52 -1.65 -0.68 -1.54 -0.82 -1.43 -0.98 -1.3 -1.13 -1.17 -1.29 
+-1.06 -1.45 -0.91 -1.59 -0.76 -1.78 -0.58 -1.91 -0.46 -2.08 -0.26 -2.26 -0.09 -2.41 f*
+2782.68 2340.52 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.76 -1.08 1.67 -1.35 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.5 0.58 -2.59 0.41 -2.62 0.26 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.26 -2.67 -0.41 -2.65 -0.58 -2.61 -0.74 -2.54 -0.89 -2.45 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.67 -1.39 -1.76 -1.11 -1.87 -0.83 -1.97 -0.5 
+-2.06 -0.2 -2.06 0.2 -1.95 0.5 -1.87 0.83 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.19 -1.04 2.32 -0.87 2.45 -0.74 2.54 -0.59 2.61 -0.41 2.65 -0.26 2.67 
+-0.09 2.65 7.48 0 0.26 -5.05 0.74 -4.54 1.13 -4 1.45 -3.36 1.71 -2.69 0.93 -1.09 
+0.96 -0.91 1 -0.71 1.02 -0.52 0.99 -0.31 1.02 -0.11 1.02 0.11 1.02 0.31 1.02 0.52 
+0.97 0.71 0.98 0.91 0.93 1.09 1.71 2.69 1.45 3.36 1.14 4 0.73 4.54 0.26 5.05 
+-0.26 5.05 -0.73 4.5 -1.14 3.91 -1.45 3.29 -1.71 2.63 -0.93 1.04 -0.98 0.87 -0.97 0.7 
+-1.02 0.5 -1.02 0.3 -1.02 0.09 -1.02 -0.09 -0.99 -0.3 -1.02 -0.5 -1 -0.7 -0.96 -0.87 
+-0.93 -1.04 -1.71 -2.63 -1.45 -3.29 -1.13 -3.91 -0.74 -4.5 -0.26 -5.05 -7.48 0 0.09 2.67 
+0.26 2.65 0.41 2.62 0.59 2.59 0.74 2.5 0.87 2.41 1.04 2.28 1.15 2.15 1.3 2 
+1.41 1.78 1.54 1.58 1.65 1.35 1.78 1.08 1.87 0.8 1.95 0.5 2.06 0.17 f*
+2827.2 2340.52 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.76 -1.08 1.65 -1.35 1.54 -1.58 1.43 -1.78 
+1.28 -2 1.18 -2.15 1.02 -2.28 0.89 -2.41 0.71 -2.5 0.59 -2.59 0.43 -2.62 0.24 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.24 -2.67 -0.43 -2.65 -0.59 -2.61 -0.71 -2.54 -0.89 -2.45 -1.02 -2.32 
+-1.18 -2.19 -1.28 -2.02 -1.43 -1.82 -1.54 -1.61 -1.65 -1.39 -1.76 -1.11 -1.87 -0.83 -1.97 -0.5 
+-2.06 -0.2 -2.07 0.2 -1.97 0.5 -1.87 0.83 -1.75 1.11 -1.65 1.39 -1.54 1.61 -1.43 1.82 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.89 2.45 -0.71 2.54 -0.59 2.61 -0.43 2.65 -0.24 2.67 
+-0.09 2.65 7.49 0 0.26 -5.05 0.71 -4.54 1.15 -4 1.45 -3.36 1.71 -2.69 0.93 -1.09 
+0.96 -0.91 1 -0.71 0.99 -0.52 1.02 -0.31 1.02 -0.11 1.02 0.11 1.02 0.31 0.99 0.52 
+1 0.71 0.96 0.91 0.93 1.09 1.71 2.69 1.45 3.36 1.15 4 0.71 4.54 0.26 5.05 
+-0.26 5.05 -0.71 4.5 -1.15 3.91 -1.45 3.29 -1.71 2.63 -0.93 1.04 -0.96 0.87 -1 0.7 
+-0.99 0.5 -1.02 0.3 -1.02 0.09 -1.02 -0.09 -1.02 -0.3 -0.99 -0.5 -1 -0.7 -0.96 -0.87 
+-0.93 -1.04 -1.71 -2.63 -1.45 -3.29 -1.15 -3.91 -0.71 -4.5 -0.26 -5.05 -7.49 0 0.09 2.67 
+0.24 2.65 0.43 2.62 0.59 2.59 0.71 2.5 0.89 2.41 1.02 2.28 1.17 2.15 1.28 2 
+1.43 1.78 1.54 1.58 1.65 1.35 1.75 1.08 1.87 0.8 1.97 0.5 2.07 0.17 f*
+2871.7 2340.52 2.06 -0.17 1.96 -0.5 1.86 -0.8 1.78 -1.08 1.65 -1.35 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.15 -2.15 1.04 -2.28 0.87 -2.41 0.74 -2.5 0.59 -2.59 0.41 -2.62 0.26 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.26 -2.67 -0.41 -2.65 -0.59 -2.61 -0.74 -2.54 -0.87 -2.45 -1.04 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.78 -1.11 -1.86 -0.83 -1.96 -0.5 
+-2.06 -0.2 -2.06 0.2 -1.97 0.5 -1.87 0.83 -1.76 1.11 -1.67 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.19 -1.02 2.32 -0.89 2.45 -0.74 2.54 -0.58 2.61 -0.41 2.65 -0.26 2.67 
+-0.09 2.65 7.49 0 0.26 -5.05 0.73 -4.54 1.13 -4 1.45 -3.36 1.71 -2.69 0.93 -1.09 
+0.98 -0.91 0.97 -0.71 1.02 -0.52 1.02 -0.31 1.02 -0.11 1 0.11 1.02 0.31 1.02 0.52 
+1 0.71 0.96 0.91 0.93 1.09 1.71 2.69 1.45 3.36 1.13 4 0.74 4.54 0.26 5.05 
+-0.26 5.05 -0.74 4.5 -1.13 3.91 -1.45 3.29 -1.71 2.63 -0.93 1.04 -0.96 0.87 -1 0.7 
+-1.02 0.5 -1.02 0.3 -1 0.09 -1.02 -0.09 -1.02 -0.3 -1.02 -0.5 -0.97 -0.7 -0.98 -0.87 
+-0.93 -1.04 -1.71 -2.63 -1.45 -3.29 -1.13 -3.91 -0.73 -4.5 -0.26 -5.05 -7.49 0 0.09 2.67 
+0.26 2.65 0.41 2.62 0.58 2.59 0.74 2.5 0.89 2.41 1.02 2.28 1.15 2.15 1.3 2 
+1.41 1.78 1.54 1.58 1.67 1.35 1.76 1.08 1.87 0.8 1.97 0.5 2.06 0.17 f*
+352.906 2463.58 19.1367 5.83984 re
+f*
+404.08 2501.02 4.99 0 0 -36.59 8.72 0 0 -6.67 ^ 0 -13.3 -7.07 0 
+^ -23.72 0 0 6.67 ^ 0 24.54 -17.47 -24.54 -6.25 0 0 0.82 
+25.8 35.77 f*
+427.367 2444.46 8.3125 8.3125 re
+f*
+464.37 2501.02 2.06 -0.18 1.97 -0.5 1.87 -0.8 1.79 -1.08 1.65 -1.35 1.54 -1.56 1.41 -1.8 
+1.3 -1.97 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.52 0.58 -2.56 0.42 -2.65 0.25 -2.64 
+0.09 -2.65 -0.09 -2.67 -0.25 -2.67 -0.42 -2.64 -0.58 -2.61 -0.74 -2.54 -0.89 -2.43 -1.02 -2.32 
+-1.15 -2.2 -1.3 -2.02 -1.41 -1.82 -1.54 -1.62 -1.65 -1.37 -1.79 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.04 0.17 -1.98 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.37 -1.54 1.63 -1.41 1.82 
+-1.3 2.02 -1.15 2.2 -1.05 2.32 -0.86 2.43 -0.74 2.54 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.67 7.48 0 0.26 -5.06 0.74 -4.55 1.13 -3.97 1.45 -3.36 1.72 -2.72 0.93 -1.08 
+0.97 -0.89 0.98 -0.72 1.02 -0.52 1.02 -0.32 1 -0.09 1.02 0.09 1.02 0.32 1.02 0.52 
+0.97 0.72 0.98 0.89 0.93 1.08 1.71 2.72 1.46 3.36 1.13 3.97 0.73 4.55 0.26 5.06 
+-0.26 5.04 -0.73 4.49 -1.12 3.93 -1.46 3.28 -1.71 2.63 -0.93 1.06 -0.98 0.87 -0.97 0.67 
+-1.02 0.5 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.5 -0.98 -0.67 -0.97 -0.87 
+-0.93 -1.06 -1.72 -2.63 -1.45 -3.28 -1.13 -3.93 -0.74 -4.49 -0.26 -5.04 -7.48 0 0.09 2.65 
+0.26 2.64 0.41 2.65 0.59 2.56 0.74 2.52 0.86 2.41 1.05 2.28 1.15 2.15 1.3 1.97 
+1.41 1.8 1.54 1.56 1.65 1.35 1.78 1.08 1.87 0.8 1.98 0.5 2.04 0.18 f*
+352.906 2736.57 19.1367 5.81641 re
+f*
+379.95 2754.45 7.07 0 0.17 2.84 0.52 2.56 0.91 2.28 1.26 1.93 1.63 1.56 2 1.16 
+2.39 0.71 2.76 0.26 2.15 -0.2 2.02 -0.56 1.82 -0.91 1.61 -1.24 1.34 -1.56 1.02 -1.85 
+0.63 -2.12 0.24 -2.37 -0.2 -2.43 -0.59 -2.02 -0.99 -1.71 -1.39 -1.55 -1.82 -1.45 -2.22 -1.5 
+-5.68 -3.5 -4.84 -2.82 -3.93 -2.84 -1.65 -1.43 -1.46 -1.48 -1.28 -1.5 -1.11 -1.52 -0.93 -1.56 
+-0.78 -1.61 -0.63 -1.63 -0.48 -1.7 -0.63 -3.52 -0.17 -3.77 37.84 0 0 6.66 -29.95 0 
+0.74 2.54 1.02 2.13 1.34 1.82 1.67 1.61 2.08 1.54 2.5 1.58 6.45 3.76 3.73 1.84 
+3.11 2.06 2.52 2.26 1.98 2.41 1.47 2.5 1 2.54 0.57 2.58 0.2 2.52 -0.11 1.76 
+-0.28 1.7 -0.46 1.61 -0.61 1.52 -0.78 1.43 -0.93 1.32 -1.06 1.24 -1.17 1.13 -1.32 1.02 
+-1.41 0.89 -1.5 0.78 -1.61 0.65 -1.67 0.5 -1.73 0.38 -1.8 0.24 -1.87 0.06 -1.98 -0.06 
+-1.93 -0.22 -1.82 -0.37 -1.76 -0.52 -1.63 -0.67 -1.54 -0.82 -1.43 -0.98 -1.32 -1.12 -1.18 -1.28 
+-1.04 -1.46 -0.91 -1.61 -0.76 -1.76 -0.61 -1.93 -0.43 -2.09 -0.28 -2.24 -0.09 -2.41 f*
+427.367 2717.43 8.3125 8.3125 re
+f*
+464.37 2773.98 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.79 -1.09 1.65 -1.34 1.54 -1.56 1.41 -1.8 
+1.3 -1.98 1.15 -2.14 1.02 -2.29 0.89 -2.41 0.74 -2.52 0.58 -2.56 0.42 -2.62 0.25 -2.67 
+0.09 -2.65 -0.09 -2.67 -0.25 -2.67 -0.42 -2.64 -0.58 -2.61 -0.74 -2.52 -0.89 -2.46 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.61 -1.65 -1.39 -1.79 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.04 0.17 -1.98 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.83 
+-1.3 2.02 -1.15 2.19 -1.05 2.32 -0.86 2.46 -0.74 2.52 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.67 7.48 0 0.26 -5.06 0.74 -4.55 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.08 
+0.97 -0.89 0.98 -0.72 1.02 -0.52 1.02 -0.3 1 -0.11 1.02 0.11 1.02 0.3 1.02 0.52 
+0.97 0.72 0.98 0.89 0.93 1.08 1.71 2.71 1.46 3.36 1.13 3.97 0.73 4.55 0.26 5.06 
+-0.26 5.03 -0.73 4.5 -1.12 3.93 -1.46 3.28 -1.71 2.63 -0.93 1.07 -0.98 0.87 -0.97 0.67 
+-1.02 0.5 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.5 -0.98 -0.67 -0.97 -0.87 
+-0.93 -1.07 -1.72 -2.62 -1.45 -3.28 -1.13 -3.93 -0.74 -4.5 -0.26 -5.03 -7.48 0 0.09 2.65 
+0.26 2.67 0.41 2.63 0.59 2.56 0.74 2.52 0.86 2.41 1.05 2.29 1.15 2.14 1.3 1.98 
+1.41 1.8 1.54 1.56 1.65 1.34 1.78 1.09 1.87 0.8 1.98 0.5 2.04 0.17 f*
+397.83 3046.94 2.06 -0.15 1.98 -0.5 1.87 -0.82 1.75 -1.09 1.65 -1.32 1.54 -1.58 1.43 -1.8 
+1.29 -1.98 1.17 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.52 0.57 -2.56 0.43 -2.63 0.26 -2.67 
+0.08 -2.65 -0.08 -2.67 -0.26 -2.67 -0.43 -2.65 -0.57 -2.6 -0.74 -2.52 -0.89 -2.46 -1.02 -2.32 
+-1.17 -2.19 -1.29 -2.02 -1.43 -1.82 -1.54 -1.61 -1.65 -1.39 -1.75 -1.11 -1.87 -0.82 -1.98 -0.52 
+-2.06 -0.17 -2.06 0.17 -1.95 0.52 -1.89 0.82 -1.76 1.11 -1.64 1.39 -1.55 1.61 -1.43 1.82 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.86 2.46 -0.74 2.52 -0.58 2.6 -0.41 2.65 -0.26 2.67 
+-0.09 2.67 7.49 0 0.26 -5.05 0.74 -4.56 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.09 
+0.95 -0.89 1 -0.71 1 -0.52 1.02 -0.3 1.02 -0.11 1.02 0.11 1.02 0.3 1 0.52 
+1 0.71 0.98 0.89 0.91 1.09 1.71 2.71 1.48 3.36 1.13 3.97 0.74 4.56 0.26 5.05 
+-0.26 5.03 -0.74 4.5 -1.12 3.93 -1.48 3.28 -1.71 2.62 -0.91 1.07 -0.98 0.87 -1 0.7 
+-1 0.48 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -1.02 -0.3 -1 -0.48 -1 -0.7 -0.95 -0.87 
+-0.93 -1.07 -1.72 -2.62 -1.45 -3.28 -1.13 -3.93 -0.74 -4.5 -0.26 -5.03 -7.49 0 0.09 2.65 
+0.26 2.67 0.41 2.63 0.58 2.56 0.74 2.52 0.86 2.41 1.02 2.28 1.17 2.15 1.28 1.98 
+1.43 1.8 1.55 1.58 1.64 1.32 1.76 1.09 1.89 0.82 1.95 0.5 2.06 0.15 f*
+427.367 2990.39 8.3125 8.30859 re
+f*
+464.37 3046.94 2.06 -0.15 1.97 -0.5 1.87 -0.82 1.79 -1.09 1.65 -1.32 1.54 -1.58 1.41 -1.8 
+1.3 -1.98 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.52 0.58 -2.56 0.42 -2.63 0.25 -2.67 
+0.09 -2.65 -0.09 -2.67 -0.25 -2.67 -0.42 -2.65 -0.58 -2.6 -0.74 -2.52 -0.89 -2.46 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.79 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.04 0.17 -1.98 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.19 -1.05 2.32 -0.86 2.46 -0.74 2.52 -0.59 2.6 -0.41 2.65 -0.26 2.67 
+-0.09 2.67 7.48 0 0.26 -5.05 0.74 -4.56 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.09 
+0.97 -0.89 0.98 -0.71 1.02 -0.52 1.02 -0.3 1 -0.11 1.02 0.11 1.02 0.3 1.02 0.52 
+0.97 0.71 0.98 0.89 0.93 1.09 1.71 2.71 1.46 3.36 1.13 3.97 0.73 4.56 0.26 5.05 
+-0.26 5.03 -0.73 4.5 -1.12 3.93 -1.46 3.28 -1.71 2.62 -0.93 1.07 -0.98 0.87 -0.97 0.7 
+-1.02 0.48 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.48 -0.98 -0.7 -0.97 -0.87 
+-0.93 -1.07 -1.72 -2.62 -1.45 -3.28 -1.13 -3.93 -0.74 -4.5 -0.26 -5.03 -7.48 0 0.09 2.65 
+0.26 2.67 0.41 2.63 0.59 2.56 0.74 2.52 0.86 2.41 1.05 2.28 1.15 2.15 1.3 1.98 
+1.41 1.8 1.54 1.58 1.65 1.32 1.78 1.09 1.87 0.82 1.98 0.5 2.04 0.15 f*
+379.95 3300.37 7.07 0 0.17 2.84 0.52 2.56 0.91 2.28 1.26 1.93 1.63 1.56 2 1.15 
+2.39 0.74 2.76 0.24 2.15 -0.2 2.02 -0.57 1.82 -0.91 1.61 -1.23 1.34 -1.57 1.02 -1.84 
+0.63 -2.13 0.24 -2.36 -0.2 -2.43 -0.59 -2 -0.99 -1.74 -1.39 -1.54 -1.82 -1.45 -2.22 -1.5 
+-5.68 -3.5 -4.84 -2.8 -3.93 -2.87 -1.65 -1.43 -1.46 -1.47 -1.28 -1.5 -1.11 -1.52 -0.93 -1.56 
+-0.78 -1.59 -0.63 -1.64 -0.48 -1.69 -0.63 -3.52 -0.17 -3.78 37.84 0 0 6.67 -29.95 0 
+0.74 2.54 1.02 2.12 1.34 1.83 1.67 1.61 2.08 1.54 2.5 1.58 6.45 3.76 3.73 1.84 
+3.11 2.06 2.52 2.25 1.98 2.41 1.47 2.5 1 2.56 0.57 2.56 0.2 2.52 -0.11 1.76 
+-0.28 1.7 -0.46 1.61 -0.61 1.52 -0.78 1.43 -0.93 1.33 -1.06 1.23 -1.17 1.14 -1.32 1.02 
+-1.41 0.89 -1.5 0.79 -1.61 0.65 -1.67 0.5 -1.73 0.37 -1.8 0.24 -1.87 0.07 -1.98 -0.07 
+-1.93 -0.21 -1.82 -0.37 -1.74 -0.52 -1.65 -0.67 -1.54 -0.82 -1.43 -0.98 -1.32 -1.12 -1.18 -1.29 
+-1.04 -1.45 -0.91 -1.61 -0.76 -1.76 -0.61 -1.91 -0.43 -2.08 -0.28 -2.26 -0.09 -2.41 f*
+427.367 3263.34 8.3125 8.3125 re
+f*
+464.37 3319.9 2.06 -0.15 1.97 -0.5 1.87 -0.8 1.79 -1.09 1.65 -1.34 1.54 -1.58 1.41 -1.8 
+1.3 -1.97 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.52 0.58 -2.56 0.42 -2.62 0.25 -2.67 
+0.09 -2.64 -0.09 -2.67 -0.25 -2.67 -0.42 -2.65 -0.58 -2.6 -0.74 -2.52 -0.89 -2.45 -1.02 -2.32 
+-1.15 -2.2 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.79 -1.11 -1.87 -0.83 -1.97 -0.52 
+-2.06 -0.18 -2.04 0.18 -1.98 0.52 -1.87 0.83 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.2 -1.05 2.32 -0.86 2.45 -0.74 2.52 -0.59 2.6 -0.41 2.65 -0.26 2.67 
+-0.09 2.67 7.48 0 0.26 -5.05 0.74 -4.56 1.13 -3.97 1.45 -3.36 1.72 -2.69 0.93 -1.11 
+0.97 -0.89 0.98 -0.71 1.02 -0.52 1.02 -0.3 1 -0.11 1.02 0.11 1.02 0.3 1.02 0.52 
+0.97 0.71 0.98 0.89 0.93 1.11 1.71 2.69 1.46 3.36 1.13 3.97 0.73 4.56 0.26 5.05 
+-0.26 5.03 -0.73 4.51 -1.12 3.91 -1.46 3.27 -1.71 2.63 -0.93 1.07 -0.98 0.87 -0.97 0.7 
+-1.02 0.48 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.48 -0.98 -0.7 -0.97 -0.87 
+-0.93 -1.07 -1.72 -2.63 -1.45 -3.27 -1.13 -3.91 -0.74 -4.51 -0.26 -5.03 -7.48 0 0.09 2.64 
+0.26 2.67 0.41 2.62 0.59 2.56 0.74 2.52 0.86 2.41 1.05 2.28 1.15 2.15 1.3 1.97 
+1.41 1.8 1.54 1.58 1.65 1.34 1.78 1.09 1.87 0.8 1.98 0.5 2.04 0.15 f*
+5.55556 w
+887.17 2398.74 0 58.23 S
+1366.55 2398.74 0 58.23 S
+1845.96 2398.74 0 58.23 S
+2325.34 2398.74 0 58.23 S
+2804.73 2398.74 0 58.23 S
+2.77778 w
+791.3 2427.84 0 29.12 S
+695.42 2427.84 0 29.12 S
+599.54 2427.84 0 29.12 S
+983.05 2427.84 0 29.12 S
+1078.93 2427.84 0 29.12 S
+1174.8 2427.84 0 29.12 S
+1270.68 2427.84 0 29.12 S
+1462.43 2427.84 0 29.12 S
+1558.31 2427.84 0 29.12 S
+1654.19 2427.84 0 29.12 S
+1750.09 2427.84 0 29.12 S
+1941.84 2427.84 0 29.12 S
+2037.71 2427.84 0 29.12 S
+2133.59 2427.84 0 29.12 S
+2229.47 2427.84 0 29.12 S
+2421.22 2427.84 0 29.12 S
+2517.1 2427.84 0 29.12 S
+2612.98 2427.84 0 29.12 S
+2708.86 2427.84 0 29.12 S
+2900.61 2427.84 0 29.12 S
+2996.48 2427.84 0 29.12 S
+3092.36 2427.84 0 29.12 S
+5.55556 w
+887.17 3467.96 0 -58.22 S
+1366.55 3467.96 0 -58.22 S
+1845.96 3467.96 0 -58.22 S
+2325.34 3467.96 0 -58.22 S
+2804.73 3467.96 0 -58.22 S
+2.77778 w
+791.3 3438.87 0 -29.12 S
+695.42 3438.87 0 -29.12 S
+599.54 3438.87 0 -29.12 S
+983.05 3438.87 0 -29.12 S
+1078.93 3438.87 0 -29.12 S
+1174.8 3438.87 0 -29.12 S
+1270.68 3438.87 0 -29.12 S
+1462.43 3438.87 0 -29.12 S
+1558.31 3438.87 0 -29.12 S
+1654.19 3438.87 0 -29.12 S
+1750.09 3438.87 0 -29.12 S
+1941.84 3438.87 0 -29.12 S
+2037.71 3438.87 0 -29.12 S
+2133.59 3438.87 0 -29.12 S
+2229.47 3438.87 0 -29.12 S
+2421.22 3438.87 0 -29.12 S
+2517.1 3438.87 0 -29.12 S
+2612.98 3438.87 0 -29.12 S
+2708.86 3438.87 0 -29.12 S
+2900.61 3438.87 0 -29.12 S
+2996.48 3438.87 0 -29.12 S
+3092.36 3438.87 0 -29.12 S
+5.55556 w
+541.32 2471.7 58.22 0 S
+541.32 2744.66 58.22 0 S
+541.32 3017.62 58.22 0 S
+541.32 3290.58 58.22 0 S
+2.77778 w
+570.42 2539.95 29.12 0 S
+570.42 2608.18 29.12 0 S
+570.42 2676.43 29.12 0 S
+570.42 2812.91 29.12 0 S
+570.42 2881.14 29.12 0 S
+570.42 2949.39 29.12 0 S
+570.42 3085.87 29.12 0 S
+570.42 3154.1 29.12 0 S
+570.42 3222.35 29.12 0 S
+570.42 3358.83 29.12 0 S
+5.55556 w
+3198.52 2471.7 -58.22 0 S
+3198.52 2744.66 -58.22 0 S
+3198.52 3017.62 -58.22 0 S
+3198.52 3290.58 -58.22 0 S
+2.77778 w
+3169.42 2539.95 -29.12 0 S
+3169.42 2608.18 -29.12 0 S
+3169.42 2676.43 -29.12 0 S
+3169.42 2812.91 -29.12 0 S
+3169.42 2881.14 -29.12 0 S
+3169.42 2949.39 -29.12 0 S
+3169.42 3085.87 -29.12 0 S
+3169.42 3154.1 -29.12 0 S
+3169.42 3222.35 -29.12 0 S
+3169.42 3358.83 -29.12 0 S
+5.55556 w
+3140.3 2456.96 -2540.76 0 0 952.78 ^ ^ ^ S
+601.11 3529.05 0.26 3.13 0.37 1.54 0.5 1.52 0.66 1.47 0.82 1.43 0.98 1.35 1.15 1.26 
+1.34 1.18 1.52 1.04 1.7 0.93 1.89 0.81 2.11 0.63 2.28 0.48 2.52 0.3 2.71 0.11 
+2.93 -0.15 3.23 -0.43 3.28 -0.81 3.16 -1.21 1.46 -0.8 1.37 -0.91 1.21 -1.06 1.04 -1.21 
+0.87 -1.34 0.65 -1.52 0.41 -1.7 0.13 -1.84 0 -33.29 0.2 -0.91 0.5 -0.8 0.74 -0.67 
+0.91 -0.52 1.02 -0.35 1.02 -0.17 1 0.05 0.87 0.28 0 -6.25 -2.02 -0.45 -3.19 -0.07 
+-2.26 0.07 -1.76 0.19 -1.37 0.37 -1.04 0.61 -0.82 0.87 -0.71 1.19 -1.39 3.47 -4.43 -3.25 
+-1.91 -1.17 -1.85 -0.91 -1.9 -0.65 -2.05 -0.45 -2.32 -0.24 -2.69 -0.09 -2.34 0.09 -2.11 0.24 
+-1.93 0.39 -1.72 0.54 -1.54 0.65 -1.34 0.78 -1.2 0.89 -1.02 0.98 -0.89 1.07 -0.71 1.13 
+-0.61 1.21 -0.46 1.25 -0.61 2.63 -0.17 2.71 7.79 0 0.2 -1.52 0.57 -1.46 0.91 -1.32 
+1.26 -1.15 1.56 -0.98 1.87 -0.74 2.15 -0.48 2.41 -0.15 3.5 0.43 3.04 0.89 2.58 1.26 
+2.13 1.49 1.66 1.7 1.22 1.75 0.71 1.74 0.24 1.65 0 10.39 -3.9 -1.46 -3.23 -0.76 
+-9.51 -1.43 -2.78 -0.85 -2.2 -0.98 -1.62 -1.11 -1.19 -1.21 -0.78 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.07 -1.54 -7.79 0 0.22 3.88 0.65 3.17 0.48 1.35 0.61 1.17 0.7 1.06 0.8 0.93 
+0.89 0.82 1.02 0.74 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.06 3.23 0.89 1.17 0.48 
+0.91 0.52 0.67 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.15 0.89 -0.46 1.04 
+-0.83 1.11 -1.17 1.11 -1.56 1.02 -1.97 0.82 -2.41 0.57 -2.89 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.71 -1.25 -1.31 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+654.12 3564.93 5.21 0 3.99 -6.1 3.43 -6.2 2.86 -6.21 2.32 -6.18 1.79 -6.08 1.25 -5.92 
+0.74 -5.71 0.24 -5.43 -0.26 -5.45 -0.8 -5.73 -1.3 -5.92 -1.84 -6.04 -2.37 -6.03 -2.84 -5.92 
+-3.37 -5.73 -1.87 -2.78 -1.97 -2.67 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.56 1.91 5.64 
+1.49 5.77 1.09 5.93 0.65 6.1 0.21 6.32 -0.2 6.14 -0.61 6.01 -1 5.9 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+782.01 3530.62 -30.67 0 0 -8.31 21.84 0 0 -4.69 -0.11 -1.76 -0.3 -1.78 -0.5 -1.75 
+-0.67 -1.74 -0.87 -1.69 -1.06 -1.61 -1.21 -1.54 -1.37 -1.46 -1.54 -1.32 -1.7 -1.2 -1.84 -1.04 
+-1.97 -0.89 -2.13 -0.68 -2.23 -0.5 -2.37 -0.26 -2.48 -0.02 -3.29 0.15 -3.04 0.48 -2.82 0.76 
+-2.59 1.04 -2.34 1.3 -2.13 1.54 -1.9 1.78 -1.7 1.98 -1.48 2.15 -1.28 2.34 -1.06 2.49 
+-0.85 2.63 -0.67 2.74 -0.48 2.84 -0.26 2.93 -0.11 3 0.13 3.23 0.39 3.08 0.63 2.93 
+0.87 2.75 1.09 2.58 1.28 2.38 1.5 2.22 1.67 1.99 1.82 1.8 2 1.59 2.14 1.34 
+2.28 1.13 2.39 0.91 2.52 0.63 2.61 0.39 2.69 0.15 2.59 -0.17 2.93 -0.52 3.1 -0.93 
+3.09 -1.43 1.48 -0.93 1.41 -1.06 1.33 -1.24 1.2 -1.39 1.06 -1.56 0.89 -1.76 0.71 -1.95 
+0.5 -2.13 9.87 0 -0.71 3.08 -0.61 1.78 -0.82 1.87 -1 1.91 -1.21 1.95 -1.43 1.95 
+-1.67 1.89 -1.88 1.8 -2.15 1.67 -2.41 1.52 -2.66 1.34 -2.95 1.09 -3.23 0.82 -3.54 0.52 
+-3.85 0.2 -3.99 -0.2 -3.8 -0.54 -3.58 -0.89 -3.37 -1.24 -3.14 -1.52 -2.91 -1.84 -2.64 -2.11 
+-2.43 -2.39 -2.15 -2.64 -1.91 -2.87 -1.62 -3.08 -1.34 -3.27 -1.07 -3.47 -0.76 -3.65 -0.48 -3.8 
+-0.15 -3.93 0.17 -4.88 0.54 -4.54 0.85 -4.17 1.19 -3.84 1.48 -3.47 1.73 -3.14 2.05 -2.82 
+2.25 -2.5 2.5 -2.19 2.73 -1.87 2.91 -1.56 3.08 -1.28 3.28 -0.97 3.41 -0.7 3.54 -0.39 
+3.64 -0.15 2.63 0.13 2.78 0.42 2.89 0.71 2.95 1.09 2.97 1.47 2.97 1.89 2.89 2.37 
+2.8 2.84 2.09 -8.83 6.23 0 0 38.48 f*
+796.05 3544.66 7.29 0 0 -9.89 3.17 4.25 2.87 3.09 2.6 2.08 1.22 0.71 1.13 0.55 
+2.06 0.54 1.79 0.04 1.56 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.37 -0.74 -1.22 -0.87 -1.06 -0.96 -0.93 -1.08 -0.79 -1.2 -0.67 -1.28 -0.52 -1.41 
+-0.41 -1.5 -0.28 -1.61 -0.22 -3.5 0 -29.12 -8.33 0 0 52.52 f*
+872.48 3508.27 -0.57 -2.45 -0.72 -2.23 -0.87 -2.07 -1 -1.88 -1.12 -1.7 -1.23 -1.54 -1.35 -1.37 
+-1.47 -1.19 -1.54 -1.05 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.89 -0.43 -1.93 -0.33 -3.99 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.26 0.89 -2.08 1.13 -1.93 1.32 -1.73 1.52 -1.58 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.87 2.41 -0.65 2.54 -0.5 2.69 -0.28 2.84 -0.09 2.95 
+0.18 4.28 0.5 3.84 0.82 3.45 1.07 3.06 1.32 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.91 1.48 1.99 1.21 2.05 0.96 2.04 0.75 1.99 0.54 1.96 0.38 3.6 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.38 -1.7 -1.11 -1.04 -1.05 -1.17 -0.95 -1.32 -0.87 -1.46 
+-0.74 -1.61 -0.59 -1.76 -0.45 -1.91 -0.29 -2.06 30.66 0 -0.11 2.14 -0.33 1.98 -0.5 1.8 
+-0.69 1.63 -0.82 1.48 -0.93 1.32 -1.06 1.15 -1.14 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.12 0.19 0.52 7.81 1.79 -0.06 1.88 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.82 -1.25 1.76 -1.55 1.65 -1.84 1.52 -2.14 1.34 -2.5 1.17 -2.86 0.93 -3.26 0.72 -3.64 
+0.45 -4.11 0.15 -4.53 -39 0 0.17 -2.71 0.59 -2.98 1.04 -3.04 0.71 -1.48 0.87 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.68 -0.8 1.84 -0.59 2.02 -0.37 2.25 -0.13 
+2.26 0.2 2.11 0.54 1.95 0.93 1.8 1.24 1.61 1.58 1.46 1.87 1.25 2.15 1.07 2.41 
+8.34 0 f*
+928.11 3508.27 -0.57 -2.45 -0.72 -2.23 -0.86 -2.07 -1 -1.88 -1.11 -1.7 -1.26 -1.54 -1.34 -1.37 
+-1.46 -1.19 -1.56 -1.05 -1.65 -0.89 -1.73 -0.74 -1.8 -0.61 -1.86 -0.43 -1.93 -0.33 -4.02 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.25 0.89 -2.09 1.13 -1.91 1.32 -1.75 1.52 -1.59 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.3 2.84 -0.09 2.95 
+0.18 4.28 0.52 3.84 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.93 1.48 1.99 1.21 2.02 0.96 2.05 0.75 2.02 0.54 1.95 0.38 3.59 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.37 -1.7 -1.13 -1.04 -1.04 -1.17 -0.96 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.76 -0.46 -1.91 -0.28 -2.06 30.68 0 -0.12 2.14 -0.31 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.95 1.32 -1.07 1.15 -1.12 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.13 0.19 0.52 7.81 1.8 -0.06 1.87 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.84 -1.25 1.76 -1.55 1.63 -1.84 1.52 -2.14 1.34 -2.5 1.18 -2.86 0.95 -3.26 0.7 -3.64 
+0.46 -4.11 0.15 -4.53 -39 0 0.2 -2.71 0.56 -2.98 1.07 -3.04 0.71 -1.48 0.85 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.66 -0.8 1.85 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.54 1.95 0.93 1.78 1.24 1.63 1.58 1.43 1.87 1.26 2.15 1.08 2.41 
+8.32 0 f*
+940.58 3544.66 7.79 0 0 -8.33 2.17 2.67 2.19 2.17 2.21 1.71 2.19 1.32 2.19 0.93 
+2.13 0.63 2.09 0.35 2 0.11 2.95 -0.24 2.93 -0.72 2.8 -1.11 2.56 -1.52 2.2 -1.89 
+0.91 -1.06 0.79 -1.15 0.63 -1.24 0.48 -1.28 0.3 -1.37 0.09 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.07 1.13 -0.22 1.04 -0.76 1.84 -1.16 1.52 -1.5 1.22 -1.7 0.93 -1.82 0.65 
+-1.87 0.38 -1.82 0.13 -1.28 -0.07 -1.26 -0.21 -2.5 -0.84 -2.39 -1.37 -2.13 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.78 -1.34 -0.66 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.31 0 0 52.52 f*
+996.199 3492.14 8.3125 72.7891 re
+f*
+1018.04 3529.05 0.28 3.13 0.34 1.54 0.5 1.52 0.67 1.47 0.81 1.43 1 1.35 1.15 1.26 
+1.32 1.18 1.52 1.04 1.69 0.93 1.91 0.81 2.08 0.63 2.3 0.48 2.49 0.3 2.73 0.11 
+2.93 -0.15 3.21 -0.43 3.3 -0.81 3.15 -1.21 1.47 -0.8 1.35 -0.91 1.21 -1.06 1.07 -1.21 
+0.86 -1.34 0.63 -1.52 0.42 -1.7 0.15 -1.84 0 -33.29 0.17 -0.91 0.5 -0.8 0.76 -0.67 
+0.91 -0.52 1 -0.35 1.04 -0.17 0.98 0.05 0.86 0.28 0 -6.25 -2.02 -0.45 -3.17 -0.07 
+-2.25 0.07 -1.78 0.19 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.7 1.19 -1.39 3.47 -4.45 -3.25 
+-1.91 -1.17 -1.84 -0.91 -1.89 -0.65 -2.06 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.39 -1.71 0.54 -1.54 0.65 -1.37 0.78 -1.17 0.89 -1.04 0.98 -0.87 1.07 -0.74 1.13 
+-0.59 1.21 -0.48 1.25 -0.58 2.63 -0.2 2.71 7.81 0 0.19 -1.52 0.57 -1.46 0.91 -1.32 
+1.25 -1.15 1.57 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.89 2.61 1.26 
+2.12 1.49 1.67 1.7 1.2 1.75 0.72 1.74 0.26 1.65 0 10.39 -3.93 -1.46 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.85 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.21 -1.48 
+-0.07 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.35 0.58 1.17 0.7 1.06 0.8 0.93 
+0.91 0.82 1 0.74 2.32 1.2 2.73 0.98 3.1 0.82 13.52 2.06 3.25 0.89 1.17 0.48 
+0.91 0.52 0.65 0.57 0.46 0.56 0.24 0.57 0.09 0.58 0 4.69 -0.16 0.89 -0.47 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -1.98 0.82 -2.43 0.57 -2.87 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.73 -1.25 -1.3 -1.43 -0.91 -1.58 -0.52 -1.61 -0.17 -1.61 -8.33 0 f*
+1074.2 3544.66 7.79 0 0 -8.33 2.17 2.67 2.2 2.17 2.21 1.71 2.19 1.32 2.18 0.93 
+2.14 0.63 2.06 0.35 2 0.11 2.95 -0.24 2.95 -0.72 2.8 -1.11 2.54 -1.52 2.2 -1.89 
+0.93 -1.06 0.78 -1.15 0.63 -1.24 0.48 -1.28 0.28 -1.37 0.11 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.09 1.13 -0.2 1.04 -0.79 1.84 -1.17 1.52 -1.47 1.22 -1.69 0.93 -1.85 0.65 
+-1.86 0.38 -1.8 0.13 -1.29 -0.07 -1.28 -0.21 -2.49 -0.84 -2.37 -1.37 -2.15 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.76 -1.34 -0.65 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.32 0 0 52.52 f*
+1163.61 3564.93 8.31 0 0 -72.79 -7.27 0 0 6.77 -1.41 -1.91 -1.5 -1.75 -1.65 -1.59 
+-1.88 -1.39 -2.13 -1.13 -2.48 -0.87 -2.84 -0.54 -3.28 -0.2 -3.17 0.21 -2.87 0.57 -2.58 0.93 
+-2.32 1.22 -2.08 1.52 -1.82 1.73 -1.59 1.93 -1.37 2.08 -1.17 2.23 -0.98 2.32 -0.79 2.37 
+-0.61 2.41 -0.48 2.37 -0.3 2.34 -0.24 4.37 8.83 0 0.09 -2.04 0.21 -2 0.34 -1.93 
+0.48 -1.88 0.61 -1.8 0.72 -1.71 0.82 -1.63 0.96 -1.5 1.04 -1.37 1.16 -1.23 1.25 -1.07 
+1.32 -0.91 1.41 -0.74 1.48 -0.54 1.56 -0.33 1.63 -0.11 1.46 0.09 1.41 0.26 1.37 0.46 
+1.34 0.61 1.26 0.78 1.19 0.96 1.14 1.11 1.04 1.26 0.95 1.41 0.84 1.58 0.76 1.69 
+0.63 1.87 0.5 1.98 0.37 2.13 0.22 2.23 0.08 2.39 -0.17 2.36 -0.3 2.24 -0.43 2.11 
+-0.56 1.95 -0.68 1.8 -0.76 1.67 -0.89 1.52 -0.96 1.37 -1.02 1.22 -1.12 1.04 -1.17 0.91 
+-1.22 0.74 -1.25 0.58 -1.33 0.43 -1.32 0.24 -1.37 0.09 -1.28 -0.09 -1.3 -0.28 -1.32 -0.48 
+-1.3 -0.63 -1.29 -0.82 -1.25 -0.95 -1.2 -1.13 -1.13 -1.26 -1.07 -1.41 -0.95 -1.54 -0.85 -1.67 
+-0.74 -1.8 -0.58 -1.89 -0.46 -2.02 -0.26 -2.11 -0.11 -2.19 -8.83 0 0.18 3.73 0.46 3.45 
+0.74 3.12 0.97 2.84 1.2 2.59 1.37 2.28 1.54 2.04 1.67 1.78 1.78 1.54 1.87 1.3 
+1.88 1.06 1.93 0.87 1.91 0.65 1.87 0.46 1.8 0.29 1.71 0.08 1.69 -0.11 1.91 -0.33 
+2.06 -0.56 2.15 -0.83 2.13 -1.12 2.06 -1.46 1.91 -1.78 1.69 -2.15 0 27.04 f*
+601.11 3529.05 0.26 3.13 0.37 1.54 0.5 1.52 0.66 1.47 0.82 1.43 0.98 1.35 1.15 1.26 
+1.34 1.18 1.52 1.04 1.7 0.93 1.89 0.81 2.11 0.63 2.28 0.48 2.52 0.3 2.71 0.11 
+2.93 -0.15 3.23 -0.43 3.28 -0.81 3.16 -1.21 1.46 -0.8 1.37 -0.91 1.21 -1.06 1.04 -1.21 
+0.87 -1.34 0.65 -1.52 0.41 -1.7 0.13 -1.84 0 -33.29 0.2 -0.91 0.5 -0.8 0.74 -0.67 
+0.91 -0.52 1.02 -0.35 1.02 -0.17 1 0.05 0.87 0.28 0 -6.25 -2.02 -0.45 -3.19 -0.07 
+-2.26 0.07 -1.76 0.19 -1.37 0.37 -1.04 0.61 -0.82 0.87 -0.71 1.19 -1.39 3.47 -4.43 -3.25 
+-1.91 -1.17 -1.85 -0.91 -1.9 -0.65 -2.05 -0.45 -2.32 -0.24 -2.69 -0.09 -2.34 0.09 -2.11 0.24 
+-1.93 0.39 -1.72 0.54 -1.54 0.65 -1.34 0.78 -1.2 0.89 -1.02 0.98 -0.89 1.07 -0.71 1.13 
+-0.61 1.21 -0.46 1.25 -0.61 2.63 -0.17 2.71 7.79 0 0.2 -1.52 0.57 -1.46 0.91 -1.32 
+1.26 -1.15 1.56 -0.98 1.87 -0.74 2.15 -0.48 2.41 -0.15 3.5 0.43 3.04 0.89 2.58 1.26 
+2.13 1.49 1.66 1.7 1.22 1.75 0.71 1.74 0.24 1.65 0 10.39 -3.9 -1.46 -3.23 -0.76 
+-9.51 -1.43 -2.78 -0.85 -2.2 -0.98 -1.62 -1.11 -1.19 -1.21 -0.78 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.07 -1.54 -7.79 0 0.22 3.88 0.65 3.17 0.48 1.35 0.61 1.17 0.7 1.06 0.8 0.93 
+0.89 0.82 1.02 0.74 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.06 3.23 0.89 1.17 0.48 
+0.91 0.52 0.67 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.15 0.89 -0.46 1.04 
+-0.83 1.11 -1.17 1.11 -1.56 1.02 -1.97 0.82 -2.41 0.57 -2.89 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.71 -1.25 -1.31 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+654.12 3564.93 5.21 0 3.99 -6.1 3.43 -6.2 2.86 -6.21 2.32 -6.18 1.79 -6.08 1.25 -5.92 
+0.74 -5.71 0.24 -5.43 -0.26 -5.45 -0.8 -5.73 -1.3 -5.92 -1.84 -6.04 -2.37 -6.03 -2.84 -5.92 
+-3.37 -5.73 -1.87 -2.78 -1.97 -2.67 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.56 1.91 5.64 
+1.49 5.77 1.09 5.93 0.65 6.1 0.21 6.32 -0.2 6.14 -0.61 6.01 -1 5.9 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+782.01 3530.62 -30.67 0 0 -8.31 21.84 0 0 -4.69 -0.11 -1.76 -0.3 -1.78 -0.5 -1.75 
+-0.67 -1.74 -0.87 -1.69 -1.06 -1.61 -1.21 -1.54 -1.37 -1.46 -1.54 -1.32 -1.7 -1.2 -1.84 -1.04 
+-1.97 -0.89 -2.13 -0.68 -2.23 -0.5 -2.37 -0.26 -2.48 -0.02 -3.29 0.15 -3.04 0.48 -2.82 0.76 
+-2.59 1.04 -2.34 1.3 -2.13 1.54 -1.9 1.78 -1.7 1.98 -1.48 2.15 -1.28 2.34 -1.06 2.49 
+-0.85 2.63 -0.67 2.74 -0.48 2.84 -0.26 2.93 -0.11 3 0.13 3.23 0.39 3.08 0.63 2.93 
+0.87 2.75 1.09 2.58 1.28 2.38 1.5 2.22 1.67 1.99 1.82 1.8 2 1.59 2.14 1.34 
+2.28 1.13 2.39 0.91 2.52 0.63 2.61 0.39 2.69 0.15 2.59 -0.17 2.93 -0.52 3.1 -0.93 
+3.09 -1.43 1.48 -0.93 1.41 -1.06 1.33 -1.24 1.2 -1.39 1.06 -1.56 0.89 -1.76 0.71 -1.95 
+0.5 -2.13 9.87 0 -0.71 3.08 -0.61 1.78 -0.82 1.87 -1 1.91 -1.21 1.95 -1.43 1.95 
+-1.67 1.89 -1.88 1.8 -2.15 1.67 -2.41 1.52 -2.66 1.34 -2.95 1.09 -3.23 0.82 -3.54 0.52 
+-3.85 0.2 -3.99 -0.2 -3.8 -0.54 -3.58 -0.89 -3.37 -1.24 -3.14 -1.52 -2.91 -1.84 -2.64 -2.11 
+-2.43 -2.39 -2.15 -2.64 -1.91 -2.87 -1.62 -3.08 -1.34 -3.27 -1.07 -3.47 -0.76 -3.65 -0.48 -3.8 
+-0.15 -3.93 0.17 -4.88 0.54 -4.54 0.85 -4.17 1.19 -3.84 1.48 -3.47 1.73 -3.14 2.05 -2.82 
+2.25 -2.5 2.5 -2.19 2.73 -1.87 2.91 -1.56 3.08 -1.28 3.28 -0.97 3.41 -0.7 3.54 -0.39 
+3.64 -0.15 2.63 0.13 2.78 0.42 2.89 0.71 2.95 1.09 2.97 1.47 2.97 1.89 2.89 2.37 
+2.8 2.84 2.09 -8.83 6.23 0 0 38.48 f*
+796.05 3544.66 7.29 0 0 -9.89 3.17 4.25 2.87 3.09 2.6 2.08 1.22 0.71 1.13 0.55 
+2.06 0.54 1.79 0.04 1.56 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.37 -0.74 -1.22 -0.87 -1.06 -0.96 -0.93 -1.08 -0.79 -1.2 -0.67 -1.28 -0.52 -1.41 
+-0.41 -1.5 -0.28 -1.61 -0.22 -3.5 0 -29.12 -8.33 0 0 52.52 f*
+872.48 3508.27 -0.57 -2.45 -0.72 -2.23 -0.87 -2.07 -1 -1.88 -1.12 -1.7 -1.23 -1.54 -1.35 -1.37 
+-1.47 -1.19 -1.54 -1.05 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.89 -0.43 -1.93 -0.33 -3.99 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.26 0.89 -2.08 1.13 -1.93 1.32 -1.73 1.52 -1.58 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.87 2.41 -0.65 2.54 -0.5 2.69 -0.28 2.84 -0.09 2.95 
+0.18 4.28 0.5 3.84 0.82 3.45 1.07 3.06 1.32 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.91 1.48 1.99 1.21 2.05 0.96 2.04 0.75 1.99 0.54 1.96 0.38 3.6 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.38 -1.7 -1.11 -1.04 -1.05 -1.17 -0.95 -1.32 -0.87 -1.46 
+-0.74 -1.61 -0.59 -1.76 -0.45 -1.91 -0.29 -2.06 30.66 0 -0.11 2.14 -0.33 1.98 -0.5 1.8 
+-0.69 1.63 -0.82 1.48 -0.93 1.32 -1.06 1.15 -1.14 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.12 0.19 0.52 7.81 1.79 -0.06 1.88 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.82 -1.25 1.76 -1.55 1.65 -1.84 1.52 -2.14 1.34 -2.5 1.17 -2.86 0.93 -3.26 0.72 -3.64 
+0.45 -4.11 0.15 -4.53 -39 0 0.17 -2.71 0.59 -2.98 1.04 -3.04 0.71 -1.48 0.87 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.68 -0.8 1.84 -0.59 2.02 -0.37 2.25 -0.13 
+2.26 0.2 2.11 0.54 1.95 0.93 1.8 1.24 1.61 1.58 1.46 1.87 1.25 2.15 1.07 2.41 
+8.34 0 f*
+928.11 3508.27 -0.57 -2.45 -0.72 -2.23 -0.86 -2.07 -1 -1.88 -1.11 -1.7 -1.26 -1.54 -1.34 -1.37 
+-1.46 -1.19 -1.56 -1.05 -1.65 -0.89 -1.73 -0.74 -1.8 -0.61 -1.86 -0.43 -1.93 -0.33 -4.02 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.25 0.89 -2.09 1.13 -1.91 1.32 -1.75 1.52 -1.59 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.3 2.84 -0.09 2.95 
+0.18 4.28 0.52 3.84 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.93 1.48 1.99 1.21 2.02 0.96 2.05 0.75 2.02 0.54 1.95 0.38 3.59 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.37 -1.7 -1.13 -1.04 -1.04 -1.17 -0.96 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.76 -0.46 -1.91 -0.28 -2.06 30.68 0 -0.12 2.14 -0.31 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.95 1.32 -1.07 1.15 -1.12 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.13 0.19 0.52 7.81 1.8 -0.06 1.87 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.84 -1.25 1.76 -1.55 1.63 -1.84 1.52 -2.14 1.34 -2.5 1.18 -2.86 0.95 -3.26 0.7 -3.64 
+0.46 -4.11 0.15 -4.53 -39 0 0.2 -2.71 0.56 -2.98 1.07 -3.04 0.71 -1.48 0.85 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.66 -0.8 1.85 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.54 1.95 0.93 1.78 1.24 1.63 1.58 1.43 1.87 1.26 2.15 1.08 2.41 
+8.32 0 f*
+940.58 3544.66 7.79 0 0 -8.33 2.17 2.67 2.19 2.17 2.21 1.71 2.19 1.32 2.19 0.93 
+2.13 0.63 2.09 0.35 2 0.11 2.95 -0.24 2.93 -0.72 2.8 -1.11 2.56 -1.52 2.2 -1.89 
+0.91 -1.06 0.79 -1.15 0.63 -1.24 0.48 -1.28 0.3 -1.37 0.09 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.07 1.13 -0.22 1.04 -0.76 1.84 -1.16 1.52 -1.5 1.22 -1.7 0.93 -1.82 0.65 
+-1.87 0.38 -1.82 0.13 -1.28 -0.07 -1.26 -0.21 -2.5 -0.84 -2.39 -1.37 -2.13 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.78 -1.34 -0.66 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.31 0 0 52.52 f*
+996.199 3492.14 8.3125 72.7891 re
+f*
+1018.04 3529.05 0.28 3.13 0.34 1.54 0.5 1.52 0.67 1.47 0.81 1.43 1 1.35 1.15 1.26 
+1.32 1.18 1.52 1.04 1.69 0.93 1.91 0.81 2.08 0.63 2.3 0.48 2.49 0.3 2.73 0.11 
+2.93 -0.15 3.21 -0.43 3.3 -0.81 3.15 -1.21 1.47 -0.8 1.35 -0.91 1.21 -1.06 1.07 -1.21 
+0.86 -1.34 0.63 -1.52 0.42 -1.7 0.15 -1.84 0 -33.29 0.17 -0.91 0.5 -0.8 0.76 -0.67 
+0.91 -0.52 1 -0.35 1.04 -0.17 0.98 0.05 0.86 0.28 0 -6.25 -2.02 -0.45 -3.17 -0.07 
+-2.25 0.07 -1.78 0.19 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.7 1.19 -1.39 3.47 -4.45 -3.25 
+-1.91 -1.17 -1.84 -0.91 -1.89 -0.65 -2.06 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.39 -1.71 0.54 -1.54 0.65 -1.37 0.78 -1.17 0.89 -1.04 0.98 -0.87 1.07 -0.74 1.13 
+-0.59 1.21 -0.48 1.25 -0.58 2.63 -0.2 2.71 7.81 0 0.19 -1.52 0.57 -1.46 0.91 -1.32 
+1.25 -1.15 1.57 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.89 2.61 1.26 
+2.12 1.49 1.67 1.7 1.2 1.75 0.72 1.74 0.26 1.65 0 10.39 -3.93 -1.46 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.85 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.21 -1.48 
+-0.07 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.35 0.58 1.17 0.7 1.06 0.8 0.93 
+0.91 0.82 1 0.74 2.32 1.2 2.73 0.98 3.1 0.82 13.52 2.06 3.25 0.89 1.17 0.48 
+0.91 0.52 0.65 0.57 0.46 0.56 0.24 0.57 0.09 0.58 0 4.69 -0.16 0.89 -0.47 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -1.98 0.82 -2.43 0.57 -2.87 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.73 -1.25 -1.3 -1.43 -0.91 -1.58 -0.52 -1.61 -0.17 -1.61 -8.33 0 f*
+1074.2 3544.66 7.79 0 0 -8.33 2.17 2.67 2.2 2.17 2.21 1.71 2.19 1.32 2.18 0.93 
+2.14 0.63 2.06 0.35 2 0.11 2.95 -0.24 2.95 -0.72 2.8 -1.11 2.54 -1.52 2.2 -1.89 
+0.93 -1.06 0.78 -1.15 0.63 -1.24 0.48 -1.28 0.28 -1.37 0.11 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.09 1.13 -0.2 1.04 -0.79 1.84 -1.17 1.52 -1.47 1.22 -1.69 0.93 -1.85 0.65 
+-1.86 0.38 -1.8 0.13 -1.29 -0.07 -1.28 -0.21 -2.49 -0.84 -2.37 -1.37 -2.15 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.76 -1.34 -0.65 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.32 0 0 52.52 f*
+1163.61 3564.93 8.31 0 0 -72.79 -7.27 0 0 6.77 -1.41 -1.91 -1.5 -1.75 -1.65 -1.59 
+-1.88 -1.39 -2.13 -1.13 -2.48 -0.87 -2.84 -0.54 -3.28 -0.2 -3.17 0.21 -2.87 0.57 -2.58 0.93 
+-2.32 1.22 -2.08 1.52 -1.82 1.73 -1.59 1.93 -1.37 2.08 -1.17 2.23 -0.98 2.32 -0.79 2.37 
+-0.61 2.41 -0.48 2.37 -0.3 2.34 -0.24 4.37 8.83 0 0.09 -2.04 0.21 -2 0.34 -1.93 
+0.48 -1.88 0.61 -1.8 0.72 -1.71 0.82 -1.63 0.96 -1.5 1.04 -1.37 1.16 -1.23 1.25 -1.07 
+1.32 -0.91 1.41 -0.74 1.48 -0.54 1.56 -0.33 1.63 -0.11 1.46 0.09 1.41 0.26 1.37 0.46 
+1.34 0.61 1.26 0.78 1.19 0.96 1.14 1.11 1.04 1.26 0.95 1.41 0.84 1.58 0.76 1.69 
+0.63 1.87 0.5 1.98 0.37 2.13 0.22 2.23 0.08 2.39 -0.17 2.36 -0.3 2.24 -0.43 2.11 
+-0.56 1.95 -0.68 1.8 -0.76 1.67 -0.89 1.52 -0.96 1.37 -1.02 1.22 -1.12 1.04 -1.17 0.91 
+-1.22 0.74 -1.25 0.58 -1.33 0.43 -1.32 0.24 -1.37 0.09 -1.28 -0.09 -1.3 -0.28 -1.32 -0.48 
+-1.3 -0.63 -1.29 -0.82 -1.25 -0.95 -1.2 -1.13 -1.13 -1.26 -1.07 -1.41 -0.95 -1.54 -0.85 -1.67 
+-0.74 -1.8 -0.58 -1.89 -0.46 -2.02 -0.26 -2.11 -0.11 -2.19 -8.83 0 0.18 3.73 0.46 3.45 
+0.74 3.12 0.97 2.84 1.2 2.59 1.37 2.28 1.54 2.04 1.67 1.78 1.78 1.54 1.87 1.3 
+1.88 1.06 1.93 0.87 1.91 0.65 1.87 0.46 1.8 0.29 1.71 0.08 1.69 -0.11 1.91 -0.33 
+2.06 -0.56 2.15 -0.83 2.13 -1.12 2.06 -1.46 1.91 -1.78 1.69 -2.15 0 27.04 f*
+601.11 3529.05 0.26 3.13 0.37 1.54 0.5 1.52 0.66 1.47 0.82 1.43 0.98 1.35 1.15 1.26 
+1.34 1.18 1.52 1.04 1.7 0.93 1.89 0.81 2.11 0.63 2.28 0.48 2.52 0.3 2.71 0.11 
+2.93 -0.15 3.23 -0.43 3.28 -0.81 3.16 -1.21 1.46 -0.8 1.37 -0.91 1.21 -1.06 1.04 -1.21 
+0.87 -1.34 0.65 -1.52 0.41 -1.7 0.13 -1.84 0 -33.29 0.2 -0.91 0.5 -0.8 0.74 -0.67 
+0.91 -0.52 1.02 -0.35 1.02 -0.17 1 0.05 0.87 0.28 0 -6.25 -2.02 -0.45 -3.19 -0.07 
+-2.26 0.07 -1.76 0.19 -1.37 0.37 -1.04 0.61 -0.82 0.87 -0.71 1.19 -1.39 3.47 -4.43 -3.25 
+-1.91 -1.17 -1.85 -0.91 -1.9 -0.65 -2.05 -0.45 -2.32 -0.24 -2.69 -0.09 -2.34 0.09 -2.11 0.24 
+-1.93 0.39 -1.72 0.54 -1.54 0.65 -1.34 0.78 -1.2 0.89 -1.02 0.98 -0.89 1.07 -0.71 1.13 
+-0.61 1.21 -0.46 1.25 -0.61 2.63 -0.17 2.71 7.79 0 0.2 -1.52 0.57 -1.46 0.91 -1.32 
+1.26 -1.15 1.56 -0.98 1.87 -0.74 2.15 -0.48 2.41 -0.15 3.5 0.43 3.04 0.89 2.58 1.26 
+2.13 1.49 1.66 1.7 1.22 1.75 0.71 1.74 0.24 1.65 0 10.39 -3.9 -1.46 -3.23 -0.76 
+-9.51 -1.43 -2.78 -0.85 -2.2 -0.98 -1.62 -1.11 -1.19 -1.21 -0.78 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.07 -1.54 -7.79 0 0.22 3.88 0.65 3.17 0.48 1.35 0.61 1.17 0.7 1.06 0.8 0.93 
+0.89 0.82 1.02 0.74 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.06 3.23 0.89 1.17 0.48 
+0.91 0.52 0.67 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.15 0.89 -0.46 1.04 
+-0.83 1.11 -1.17 1.11 -1.56 1.02 -1.97 0.82 -2.41 0.57 -2.89 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.71 -1.25 -1.31 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+654.12 3564.93 5.21 0 3.99 -6.1 3.43 -6.2 2.86 -6.21 2.32 -6.18 1.79 -6.08 1.25 -5.92 
+0.74 -5.71 0.24 -5.43 -0.26 -5.45 -0.8 -5.73 -1.3 -5.92 -1.84 -6.04 -2.37 -6.03 -2.84 -5.92 
+-3.37 -5.73 -1.87 -2.78 -1.97 -2.67 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.56 1.91 5.64 
+1.49 5.77 1.09 5.93 0.65 6.1 0.21 6.32 -0.2 6.14 -0.61 6.01 -1 5.9 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+782.01 3530.62 -30.67 0 0 -8.31 21.84 0 0 -4.69 -0.11 -1.76 -0.3 -1.78 -0.5 -1.75 
+-0.67 -1.74 -0.87 -1.69 -1.06 -1.61 -1.21 -1.54 -1.37 -1.46 -1.54 -1.32 -1.7 -1.2 -1.84 -1.04 
+-1.97 -0.89 -2.13 -0.68 -2.23 -0.5 -2.37 -0.26 -2.48 -0.02 -3.29 0.15 -3.04 0.48 -2.82 0.76 
+-2.59 1.04 -2.34 1.3 -2.13 1.54 -1.9 1.78 -1.7 1.98 -1.48 2.15 -1.28 2.34 -1.06 2.49 
+-0.85 2.63 -0.67 2.74 -0.48 2.84 -0.26 2.93 -0.11 3 0.13 3.23 0.39 3.08 0.63 2.93 
+0.87 2.75 1.09 2.58 1.28 2.38 1.5 2.22 1.67 1.99 1.82 1.8 2 1.59 2.14 1.34 
+2.28 1.13 2.39 0.91 2.52 0.63 2.61 0.39 2.69 0.15 2.59 -0.17 2.93 -0.52 3.1 -0.93 
+3.09 -1.43 1.48 -0.93 1.41 -1.06 1.33 -1.24 1.2 -1.39 1.06 -1.56 0.89 -1.76 0.71 -1.95 
+0.5 -2.13 9.87 0 -0.71 3.08 -0.61 1.78 -0.82 1.87 -1 1.91 -1.21 1.95 -1.43 1.95 
+-1.67 1.89 -1.88 1.8 -2.15 1.67 -2.41 1.52 -2.66 1.34 -2.95 1.09 -3.23 0.82 -3.54 0.52 
+-3.85 0.2 -3.99 -0.2 -3.8 -0.54 -3.58 -0.89 -3.37 -1.24 -3.14 -1.52 -2.91 -1.84 -2.64 -2.11 
+-2.43 -2.39 -2.15 -2.64 -1.91 -2.87 -1.62 -3.08 -1.34 -3.27 -1.07 -3.47 -0.76 -3.65 -0.48 -3.8 
+-0.15 -3.93 0.17 -4.88 0.54 -4.54 0.85 -4.17 1.19 -3.84 1.48 -3.47 1.73 -3.14 2.05 -2.82 
+2.25 -2.5 2.5 -2.19 2.73 -1.87 2.91 -1.56 3.08 -1.28 3.28 -0.97 3.41 -0.7 3.54 -0.39 
+3.64 -0.15 2.63 0.13 2.78 0.42 2.89 0.71 2.95 1.09 2.97 1.47 2.97 1.89 2.89 2.37 
+2.8 2.84 2.09 -8.83 6.23 0 0 38.48 f*
+796.05 3544.66 7.29 0 0 -9.89 3.17 4.25 2.87 3.09 2.6 2.08 1.22 0.71 1.13 0.55 
+2.06 0.54 1.79 0.04 1.56 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.37 -0.74 -1.22 -0.87 -1.06 -0.96 -0.93 -1.08 -0.79 -1.2 -0.67 -1.28 -0.52 -1.41 
+-0.41 -1.5 -0.28 -1.61 -0.22 -3.5 0 -29.12 -8.33 0 0 52.52 f*
+872.48 3508.27 -0.57 -2.45 -0.72 -2.23 -0.87 -2.07 -1 -1.88 -1.12 -1.7 -1.23 -1.54 -1.35 -1.37 
+-1.47 -1.19 -1.54 -1.05 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.89 -0.43 -1.93 -0.33 -3.99 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.26 0.89 -2.08 1.13 -1.93 1.32 -1.73 1.52 -1.58 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.87 2.41 -0.65 2.54 -0.5 2.69 -0.28 2.84 -0.09 2.95 
+0.18 4.28 0.5 3.84 0.82 3.45 1.07 3.06 1.32 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.91 1.48 1.99 1.21 2.05 0.96 2.04 0.75 1.99 0.54 1.96 0.38 3.6 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.38 -1.7 -1.11 -1.04 -1.05 -1.17 -0.95 -1.32 -0.87 -1.46 
+-0.74 -1.61 -0.59 -1.76 -0.45 -1.91 -0.29 -2.06 30.66 0 -0.11 2.14 -0.33 1.98 -0.5 1.8 
+-0.69 1.63 -0.82 1.48 -0.93 1.32 -1.06 1.15 -1.14 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.12 0.19 0.52 7.81 1.79 -0.06 1.88 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.82 -1.25 1.76 -1.55 1.65 -1.84 1.52 -2.14 1.34 -2.5 1.17 -2.86 0.93 -3.26 0.72 -3.64 
+0.45 -4.11 0.15 -4.53 -39 0 0.17 -2.71 0.59 -2.98 1.04 -3.04 0.71 -1.48 0.87 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.68 -0.8 1.84 -0.59 2.02 -0.37 2.25 -0.13 
+2.26 0.2 2.11 0.54 1.95 0.93 1.8 1.24 1.61 1.58 1.46 1.87 1.25 2.15 1.07 2.41 
+8.34 0 f*
+928.11 3508.27 -0.57 -2.45 -0.72 -2.23 -0.86 -2.07 -1 -1.88 -1.11 -1.7 -1.26 -1.54 -1.34 -1.37 
+-1.46 -1.19 -1.56 -1.05 -1.65 -0.89 -1.73 -0.74 -1.8 -0.61 -1.86 -0.43 -1.93 -0.33 -4.02 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.25 0.89 -2.09 1.13 -1.91 1.32 -1.75 1.52 -1.59 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.3 2.84 -0.09 2.95 
+0.18 4.28 0.52 3.84 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.93 1.48 1.99 1.21 2.02 0.96 2.05 0.75 2.02 0.54 1.95 0.38 3.59 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.37 -1.7 -1.13 -1.04 -1.04 -1.17 -0.96 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.76 -0.46 -1.91 -0.28 -2.06 30.68 0 -0.12 2.14 -0.31 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.95 1.32 -1.07 1.15 -1.12 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.13 0.19 0.52 7.81 1.8 -0.06 1.87 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.84 -1.25 1.76 -1.55 1.63 -1.84 1.52 -2.14 1.34 -2.5 1.18 -2.86 0.95 -3.26 0.7 -3.64 
+0.46 -4.11 0.15 -4.53 -39 0 0.2 -2.71 0.56 -2.98 1.07 -3.04 0.71 -1.48 0.85 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.66 -0.8 1.85 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.54 1.95 0.93 1.78 1.24 1.63 1.58 1.43 1.87 1.26 2.15 1.08 2.41 
+8.32 0 f*
+940.58 3544.66 7.79 0 0 -8.33 2.17 2.67 2.19 2.17 2.21 1.71 2.19 1.32 2.19 0.93 
+2.13 0.63 2.09 0.35 2 0.11 2.95 -0.24 2.93 -0.72 2.8 -1.11 2.56 -1.52 2.2 -1.89 
+0.91 -1.06 0.79 -1.15 0.63 -1.24 0.48 -1.28 0.3 -1.37 0.09 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.07 1.13 -0.22 1.04 -0.76 1.84 -1.16 1.52 -1.5 1.22 -1.7 0.93 -1.82 0.65 
+-1.87 0.38 -1.82 0.13 -1.28 -0.07 -1.26 -0.21 -2.5 -0.84 -2.39 -1.37 -2.13 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.78 -1.34 -0.66 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.31 0 0 52.52 f*
+996.199 3492.14 8.3125 72.7891 re
+f*
+1018.04 3529.05 0.28 3.13 0.34 1.54 0.5 1.52 0.67 1.47 0.81 1.43 1 1.35 1.15 1.26 
+1.32 1.18 1.52 1.04 1.69 0.93 1.91 0.81 2.08 0.63 2.3 0.48 2.49 0.3 2.73 0.11 
+2.93 -0.15 3.21 -0.43 3.3 -0.81 3.15 -1.21 1.47 -0.8 1.35 -0.91 1.21 -1.06 1.07 -1.21 
+0.86 -1.34 0.63 -1.52 0.42 -1.7 0.15 -1.84 0 -33.29 0.17 -0.91 0.5 -0.8 0.76 -0.67 
+0.91 -0.52 1 -0.35 1.04 -0.17 0.98 0.05 0.86 0.28 0 -6.25 -2.02 -0.45 -3.17 -0.07 
+-2.25 0.07 -1.78 0.19 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.7 1.19 -1.39 3.47 -4.45 -3.25 
+-1.91 -1.17 -1.84 -0.91 -1.89 -0.65 -2.06 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.39 -1.71 0.54 -1.54 0.65 -1.37 0.78 -1.17 0.89 -1.04 0.98 -0.87 1.07 -0.74 1.13 
+-0.59 1.21 -0.48 1.25 -0.58 2.63 -0.2 2.71 7.81 0 0.19 -1.52 0.57 -1.46 0.91 -1.32 
+1.25 -1.15 1.57 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.89 2.61 1.26 
+2.12 1.49 1.67 1.7 1.2 1.75 0.72 1.74 0.26 1.65 0 10.39 -3.93 -1.46 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.85 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.21 -1.48 
+-0.07 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.35 0.58 1.17 0.7 1.06 0.8 0.93 
+0.91 0.82 1 0.74 2.32 1.2 2.73 0.98 3.1 0.82 13.52 2.06 3.25 0.89 1.17 0.48 
+0.91 0.52 0.65 0.57 0.46 0.56 0.24 0.57 0.09 0.58 0 4.69 -0.16 0.89 -0.47 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -1.98 0.82 -2.43 0.57 -2.87 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.73 -1.25 -1.3 -1.43 -0.91 -1.58 -0.52 -1.61 -0.17 -1.61 -8.33 0 f*
+1074.2 3544.66 7.79 0 0 -8.33 2.17 2.67 2.2 2.17 2.21 1.71 2.19 1.32 2.18 0.93 
+2.14 0.63 2.06 0.35 2 0.11 2.95 -0.24 2.95 -0.72 2.8 -1.11 2.54 -1.52 2.2 -1.89 
+0.93 -1.06 0.78 -1.15 0.63 -1.24 0.48 -1.28 0.28 -1.37 0.11 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.09 1.13 -0.2 1.04 -0.79 1.84 -1.17 1.52 -1.47 1.22 -1.69 0.93 -1.85 0.65 
+-1.86 0.38 -1.8 0.13 -1.29 -0.07 -1.28 -0.21 -2.49 -0.84 -2.37 -1.37 -2.15 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.76 -1.34 -0.65 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.32 0 0 52.52 f*
+1163.61 3564.93 8.31 0 0 -72.79 -7.27 0 0 6.77 -1.41 -1.91 -1.5 -1.75 -1.65 -1.59 
+-1.88 -1.39 -2.13 -1.13 -2.48 -0.87 -2.84 -0.54 -3.28 -0.2 -3.17 0.21 -2.87 0.57 -2.58 0.93 
+-2.32 1.22 -2.08 1.52 -1.82 1.73 -1.59 1.93 -1.37 2.08 -1.17 2.23 -0.98 2.32 -0.79 2.37 
+-0.61 2.41 -0.48 2.37 -0.3 2.34 -0.24 4.37 8.83 0 0.09 -2.04 0.21 -2 0.34 -1.93 
+0.48 -1.88 0.61 -1.8 0.72 -1.71 0.82 -1.63 0.96 -1.5 1.04 -1.37 1.16 -1.23 1.25 -1.07 
+1.32 -0.91 1.41 -0.74 1.48 -0.54 1.56 -0.33 1.63 -0.11 1.46 0.09 1.41 0.26 1.37 0.46 
+1.34 0.61 1.26 0.78 1.19 0.96 1.14 1.11 1.04 1.26 0.95 1.41 0.84 1.58 0.76 1.69 
+0.63 1.87 0.5 1.98 0.37 2.13 0.22 2.23 0.08 2.39 -0.17 2.36 -0.3 2.24 -0.43 2.11 
+-0.56 1.95 -0.68 1.8 -0.76 1.67 -0.89 1.52 -0.96 1.37 -1.02 1.22 -1.12 1.04 -1.17 0.91 
+-1.22 0.74 -1.25 0.58 -1.33 0.43 -1.32 0.24 -1.37 0.09 -1.28 -0.09 -1.3 -0.28 -1.32 -0.48 
+-1.3 -0.63 -1.29 -0.82 -1.25 -0.95 -1.2 -1.13 -1.13 -1.26 -1.07 -1.41 -0.95 -1.54 -0.85 -1.67 
+-0.74 -1.8 -0.58 -1.89 -0.46 -2.02 -0.26 -2.11 -0.11 -2.19 -8.83 0 0.18 3.73 0.46 3.45 
+0.74 3.12 0.97 2.84 1.2 2.59 1.37 2.28 1.54 2.04 1.67 1.78 1.78 1.54 1.87 1.3 
+1.88 1.06 1.93 0.87 1.91 0.65 1.87 0.46 1.8 0.29 1.71 0.08 1.69 -0.11 1.91 -0.33 
+2.06 -0.56 2.15 -0.83 2.13 -1.12 2.06 -1.46 1.91 -1.78 1.69 -2.15 0 27.04 f*
+601.11 3529.05 0.26 3.13 0.37 1.54 0.5 1.52 0.66 1.47 0.82 1.43 0.98 1.35 1.15 1.26 
+1.34 1.18 1.52 1.04 1.7 0.93 1.89 0.81 2.11 0.63 2.28 0.48 2.52 0.3 2.71 0.11 
+2.93 -0.15 3.23 -0.43 3.28 -0.81 3.16 -1.21 1.46 -0.8 1.37 -0.91 1.21 -1.06 1.04 -1.21 
+0.87 -1.34 0.65 -1.52 0.41 -1.7 0.13 -1.84 0 -33.29 0.2 -0.91 0.5 -0.8 0.74 -0.67 
+0.91 -0.52 1.02 -0.35 1.02 -0.17 1 0.05 0.87 0.28 0 -6.25 -2.02 -0.45 -3.19 -0.07 
+-2.26 0.07 -1.76 0.19 -1.37 0.37 -1.04 0.61 -0.82 0.87 -0.71 1.19 -1.39 3.47 -4.43 -3.25 
+-1.91 -1.17 -1.85 -0.91 -1.9 -0.65 -2.05 -0.45 -2.32 -0.24 -2.69 -0.09 -2.34 0.09 -2.11 0.24 
+-1.93 0.39 -1.72 0.54 -1.54 0.65 -1.34 0.78 -1.2 0.89 -1.02 0.98 -0.89 1.07 -0.71 1.13 
+-0.61 1.21 -0.46 1.25 -0.61 2.63 -0.17 2.71 7.79 0 0.2 -1.52 0.57 -1.46 0.91 -1.32 
+1.26 -1.15 1.56 -0.98 1.87 -0.74 2.15 -0.48 2.41 -0.15 3.5 0.43 3.04 0.89 2.58 1.26 
+2.13 1.49 1.66 1.7 1.22 1.75 0.71 1.74 0.24 1.65 0 10.39 -3.9 -1.46 -3.23 -0.76 
+-9.51 -1.43 -2.78 -0.85 -2.2 -0.98 -1.62 -1.11 -1.19 -1.21 -0.78 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.07 -1.54 -7.79 0 0.22 3.88 0.65 3.17 0.48 1.35 0.61 1.17 0.7 1.06 0.8 0.93 
+0.89 0.82 1.02 0.74 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.06 3.23 0.89 1.17 0.48 
+0.91 0.52 0.67 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.15 0.89 -0.46 1.04 
+-0.83 1.11 -1.17 1.11 -1.56 1.02 -1.97 0.82 -2.41 0.57 -2.89 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.71 -1.25 -1.31 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+654.12 3564.93 5.21 0 3.99 -6.1 3.43 -6.2 2.86 -6.21 2.32 -6.18 1.79 -6.08 1.25 -5.92 
+0.74 -5.71 0.24 -5.43 -0.26 -5.45 -0.8 -5.73 -1.3 -5.92 -1.84 -6.04 -2.37 -6.03 -2.84 -5.92 
+-3.37 -5.73 -1.87 -2.78 -1.97 -2.67 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.56 1.91 5.64 
+1.49 5.77 1.09 5.93 0.65 6.1 0.21 6.32 -0.2 6.14 -0.61 6.01 -1 5.9 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+782.01 3530.62 -30.67 0 0 -8.31 21.84 0 0 -4.69 -0.11 -1.76 -0.3 -1.78 -0.5 -1.75 
+-0.67 -1.74 -0.87 -1.69 -1.06 -1.61 -1.21 -1.54 -1.37 -1.46 -1.54 -1.32 -1.7 -1.2 -1.84 -1.04 
+-1.97 -0.89 -2.13 -0.68 -2.23 -0.5 -2.37 -0.26 -2.48 -0.02 -3.29 0.15 -3.04 0.48 -2.82 0.76 
+-2.59 1.04 -2.34 1.3 -2.13 1.54 -1.9 1.78 -1.7 1.98 -1.48 2.15 -1.28 2.34 -1.06 2.49 
+-0.85 2.63 -0.67 2.74 -0.48 2.84 -0.26 2.93 -0.11 3 0.13 3.23 0.39 3.08 0.63 2.93 
+0.87 2.75 1.09 2.58 1.28 2.38 1.5 2.22 1.67 1.99 1.82 1.8 2 1.59 2.14 1.34 
+2.28 1.13 2.39 0.91 2.52 0.63 2.61 0.39 2.69 0.15 2.59 -0.17 2.93 -0.52 3.1 -0.93 
+3.09 -1.43 1.48 -0.93 1.41 -1.06 1.33 -1.24 1.2 -1.39 1.06 -1.56 0.89 -1.76 0.71 -1.95 
+0.5 -2.13 9.87 0 -0.71 3.08 -0.61 1.78 -0.82 1.87 -1 1.91 -1.21 1.95 -1.43 1.95 
+-1.67 1.89 -1.88 1.8 -2.15 1.67 -2.41 1.52 -2.66 1.34 -2.95 1.09 -3.23 0.82 -3.54 0.52 
+-3.85 0.2 -3.99 -0.2 -3.8 -0.54 -3.58 -0.89 -3.37 -1.24 -3.14 -1.52 -2.91 -1.84 -2.64 -2.11 
+-2.43 -2.39 -2.15 -2.64 -1.91 -2.87 -1.62 -3.08 -1.34 -3.27 -1.07 -3.47 -0.76 -3.65 -0.48 -3.8 
+-0.15 -3.93 0.17 -4.88 0.54 -4.54 0.85 -4.17 1.19 -3.84 1.48 -3.47 1.73 -3.14 2.05 -2.82 
+2.25 -2.5 2.5 -2.19 2.73 -1.87 2.91 -1.56 3.08 -1.28 3.28 -0.97 3.41 -0.7 3.54 -0.39 
+3.64 -0.15 2.63 0.13 2.78 0.42 2.89 0.71 2.95 1.09 2.97 1.47 2.97 1.89 2.89 2.37 
+2.8 2.84 2.09 -8.83 6.23 0 0 38.48 f*
+796.05 3544.66 7.29 0 0 -9.89 3.17 4.25 2.87 3.09 2.6 2.08 1.22 0.71 1.13 0.55 
+2.06 0.54 1.79 0.04 1.56 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.37 -0.74 -1.22 -0.87 -1.06 -0.96 -0.93 -1.08 -0.79 -1.2 -0.67 -1.28 -0.52 -1.41 
+-0.41 -1.5 -0.28 -1.61 -0.22 -3.5 0 -29.12 -8.33 0 0 52.52 f*
+872.48 3508.27 -0.57 -2.45 -0.72 -2.23 -0.87 -2.07 -1 -1.88 -1.12 -1.7 -1.23 -1.54 -1.35 -1.37 
+-1.47 -1.19 -1.54 -1.05 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.89 -0.43 -1.93 -0.33 -3.99 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.26 0.89 -2.08 1.13 -1.93 1.32 -1.73 1.52 -1.58 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.87 2.41 -0.65 2.54 -0.5 2.69 -0.28 2.84 -0.09 2.95 
+0.18 4.28 0.5 3.84 0.82 3.45 1.07 3.06 1.32 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.91 1.48 1.99 1.21 2.05 0.96 2.04 0.75 1.99 0.54 1.96 0.38 3.6 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.38 -1.7 -1.11 -1.04 -1.05 -1.17 -0.95 -1.32 -0.87 -1.46 
+-0.74 -1.61 -0.59 -1.76 -0.45 -1.91 -0.29 -2.06 30.66 0 -0.11 2.14 -0.33 1.98 -0.5 1.8 
+-0.69 1.63 -0.82 1.48 -0.93 1.32 -1.06 1.15 -1.14 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.12 0.19 0.52 7.81 1.79 -0.06 1.88 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.82 -1.25 1.76 -1.55 1.65 -1.84 1.52 -2.14 1.34 -2.5 1.17 -2.86 0.93 -3.26 0.72 -3.64 
+0.45 -4.11 0.15 -4.53 -39 0 0.17 -2.71 0.59 -2.98 1.04 -3.04 0.71 -1.48 0.87 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.68 -0.8 1.84 -0.59 2.02 -0.37 2.25 -0.13 
+2.26 0.2 2.11 0.54 1.95 0.93 1.8 1.24 1.61 1.58 1.46 1.87 1.25 2.15 1.07 2.41 
+8.34 0 f*
+928.11 3508.27 -0.57 -2.45 -0.72 -2.23 -0.86 -2.07 -1 -1.88 -1.11 -1.7 -1.26 -1.54 -1.34 -1.37 
+-1.46 -1.19 -1.56 -1.05 -1.65 -0.89 -1.73 -0.74 -1.8 -0.61 -1.86 -0.43 -1.93 -0.33 -4.02 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.25 0.89 -2.09 1.13 -1.91 1.32 -1.75 1.52 -1.59 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.3 2.84 -0.09 2.95 
+0.18 4.28 0.52 3.84 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.93 1.48 1.99 1.21 2.02 0.96 2.05 0.75 2.02 0.54 1.95 0.38 3.59 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.37 -1.7 -1.13 -1.04 -1.04 -1.17 -0.96 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.76 -0.46 -1.91 -0.28 -2.06 30.68 0 -0.12 2.14 -0.31 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.95 1.32 -1.07 1.15 -1.12 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.13 0.19 0.52 7.81 1.8 -0.06 1.87 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.84 -1.25 1.76 -1.55 1.63 -1.84 1.52 -2.14 1.34 -2.5 1.18 -2.86 0.95 -3.26 0.7 -3.64 
+0.46 -4.11 0.15 -4.53 -39 0 0.2 -2.71 0.56 -2.98 1.07 -3.04 0.71 -1.48 0.85 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.66 -0.8 1.85 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.54 1.95 0.93 1.78 1.24 1.63 1.58 1.43 1.87 1.26 2.15 1.08 2.41 
+8.32 0 f*
+940.58 3544.66 7.79 0 0 -8.33 2.17 2.67 2.19 2.17 2.21 1.71 2.19 1.32 2.19 0.93 
+2.13 0.63 2.09 0.35 2 0.11 2.95 -0.24 2.93 -0.72 2.8 -1.11 2.56 -1.52 2.2 -1.89 
+0.91 -1.06 0.79 -1.15 0.63 -1.24 0.48 -1.28 0.3 -1.37 0.09 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.07 1.13 -0.22 1.04 -0.76 1.84 -1.16 1.52 -1.5 1.22 -1.7 0.93 -1.82 0.65 
+-1.87 0.38 -1.82 0.13 -1.28 -0.07 -1.26 -0.21 -2.5 -0.84 -2.39 -1.37 -2.13 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.78 -1.34 -0.66 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.31 0 0 52.52 f*
+996.199 3492.14 8.3125 72.7891 re
+f*
+1018.04 3529.05 0.28 3.13 0.34 1.54 0.5 1.52 0.67 1.47 0.81 1.43 1 1.35 1.15 1.26 
+1.32 1.18 1.52 1.04 1.69 0.93 1.91 0.81 2.08 0.63 2.3 0.48 2.49 0.3 2.73 0.11 
+2.93 -0.15 3.21 -0.43 3.3 -0.81 3.15 -1.21 1.47 -0.8 1.35 -0.91 1.21 -1.06 1.07 -1.21 
+0.86 -1.34 0.63 -1.52 0.42 -1.7 0.15 -1.84 0 -33.29 0.17 -0.91 0.5 -0.8 0.76 -0.67 
+0.91 -0.52 1 -0.35 1.04 -0.17 0.98 0.05 0.86 0.28 0 -6.25 -2.02 -0.45 -3.17 -0.07 
+-2.25 0.07 -1.78 0.19 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.7 1.19 -1.39 3.47 -4.45 -3.25 
+-1.91 -1.17 -1.84 -0.91 -1.89 -0.65 -2.06 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.39 -1.71 0.54 -1.54 0.65 -1.37 0.78 -1.17 0.89 -1.04 0.98 -0.87 1.07 -0.74 1.13 
+-0.59 1.21 -0.48 1.25 -0.58 2.63 -0.2 2.71 7.81 0 0.19 -1.52 0.57 -1.46 0.91 -1.32 
+1.25 -1.15 1.57 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.89 2.61 1.26 
+2.12 1.49 1.67 1.7 1.2 1.75 0.72 1.74 0.26 1.65 0 10.39 -3.93 -1.46 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.85 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.21 -1.48 
+-0.07 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.35 0.58 1.17 0.7 1.06 0.8 0.93 
+0.91 0.82 1 0.74 2.32 1.2 2.73 0.98 3.1 0.82 13.52 2.06 3.25 0.89 1.17 0.48 
+0.91 0.52 0.65 0.57 0.46 0.56 0.24 0.57 0.09 0.58 0 4.69 -0.16 0.89 -0.47 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -1.98 0.82 -2.43 0.57 -2.87 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.73 -1.25 -1.3 -1.43 -0.91 -1.58 -0.52 -1.61 -0.17 -1.61 -8.33 0 f*
+1074.2 3544.66 7.79 0 0 -8.33 2.17 2.67 2.2 2.17 2.21 1.71 2.19 1.32 2.18 0.93 
+2.14 0.63 2.06 0.35 2 0.11 2.95 -0.24 2.95 -0.72 2.8 -1.11 2.54 -1.52 2.2 -1.89 
+0.93 -1.06 0.78 -1.15 0.63 -1.24 0.48 -1.28 0.28 -1.37 0.11 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.09 1.13 -0.2 1.04 -0.79 1.84 -1.17 1.52 -1.47 1.22 -1.69 0.93 -1.85 0.65 
+-1.86 0.38 -1.8 0.13 -1.29 -0.07 -1.28 -0.21 -2.49 -0.84 -2.37 -1.37 -2.15 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.76 -1.34 -0.65 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.32 0 0 52.52 f*
+1163.61 3564.93 8.31 0 0 -72.79 -7.27 0 0 6.77 -1.41 -1.91 -1.5 -1.75 -1.65 -1.59 
+-1.88 -1.39 -2.13 -1.13 -2.48 -0.87 -2.84 -0.54 -3.28 -0.2 -3.17 0.21 -2.87 0.57 -2.58 0.93 
+-2.32 1.22 -2.08 1.52 -1.82 1.73 -1.59 1.93 -1.37 2.08 -1.17 2.23 -0.98 2.32 -0.79 2.37 
+-0.61 2.41 -0.48 2.37 -0.3 2.34 -0.24 4.37 8.83 0 0.09 -2.04 0.21 -2 0.34 -1.93 
+0.48 -1.88 0.61 -1.8 0.72 -1.71 0.82 -1.63 0.96 -1.5 1.04 -1.37 1.16 -1.23 1.25 -1.07 
+1.32 -0.91 1.41 -0.74 1.48 -0.54 1.56 -0.33 1.63 -0.11 1.46 0.09 1.41 0.26 1.37 0.46 
+1.34 0.61 1.26 0.78 1.19 0.96 1.14 1.11 1.04 1.26 0.95 1.41 0.84 1.58 0.76 1.69 
+0.63 1.87 0.5 1.98 0.37 2.13 0.22 2.23 0.08 2.39 -0.17 2.36 -0.3 2.24 -0.43 2.11 
+-0.56 1.95 -0.68 1.8 -0.76 1.67 -0.89 1.52 -0.96 1.37 -1.02 1.22 -1.12 1.04 -1.17 0.91 
+-1.22 0.74 -1.25 0.58 -1.33 0.43 -1.32 0.24 -1.37 0.09 -1.28 -0.09 -1.3 -0.28 -1.32 -0.48 
+-1.3 -0.63 -1.29 -0.82 -1.25 -0.95 -1.2 -1.13 -1.13 -1.26 -1.07 -1.41 -0.95 -1.54 -0.85 -1.67 
+-0.74 -1.8 -0.58 -1.89 -0.46 -2.02 -0.26 -2.11 -0.11 -2.19 -8.83 0 0.18 3.73 0.46 3.45 
+0.74 3.12 0.97 2.84 1.2 2.59 1.37 2.28 1.54 2.04 1.67 1.78 1.78 1.54 1.87 1.3 
+1.88 1.06 1.93 0.87 1.91 0.65 1.87 0.46 1.8 0.29 1.71 0.08 1.69 -0.11 1.91 -0.33 
+2.06 -0.56 2.15 -0.83 2.13 -1.12 2.06 -1.46 1.91 -1.78 1.69 -2.15 0 27.04 f*
+255 0 r3
+2616.43 3195.77 36.02 0 S
+2670.46 3195.77 36 0 S
+255 0 r6
+2616.43 3246.59 36.02 0 S
+2670.46 3246.59 36 0 S
+255 0 r5
+2616.43 3297.39 36.02 0 S
+2670.46 3297.39 36 0 S
+128 0 255 rG
+2616.43 3348.22 36.02 0 S
+2670.46 3348.22 36 0 S
+K
+2722.77 3213.87 3.99 0 0 -13.24 1 1.34 1.13 1.02 1.15 0.74 1.15 0.52 2.02 0.52 
+1.28 0.11 1.91 -0.15 1.89 -0.52 1.8 -0.89 1.65 -1.31 1.41 -1.8 1.11 -2.28 0.71 -2.84 
+0.26 -3.45 -0.18 -2.88 -0.5 -2.65 -0.85 -2.39 -1.2 -2.04 -1.56 -1.7 -0.93 -0.67 -1.02 -0.58 
+-1.11 -0.46 -1.2 -0.33 -1.3 -0.2 -1.41 -0.07 -1.7 0.16 -1.91 0.65 -1 0.54 -0.93 0.75 
+-0.89 0.93 -0.81 1.2 0 -3 -3.99 0 0 11.98 ^ 0.16 -1.91 0.46 -1.79 
+0.7 -1.61 0.91 -1.41 1.08 -1.15 1.22 -0.89 1.32 -0.54 1.39 -0.2 1.67 0.24 1.48 0.7 
+1.23 1.04 1.02 1.32 0.8 1.54 0.57 1.7 0.35 1.74 0.13 1.71 -0.22 2.34 -0.57 2.02 
+-0.84 1.67 -1.06 1.37 -1.17 1.02 -1.19 0.74 -1.15 0.43 -1.04 0.13 -1.46 -0.2 -1.34 -0.59 
+-1.23 -0.93 -1.07 -1.24 -0.89 -1.52 -0.68 -1.73 -0.41 -1.93 -0.16 -2.08 -3.99 0 0 22.96 f*
+2769.42 3195.64 -3.99 0 -0.18 1.04 -0.34 0.98 -0.5 0.93 -0.67 0.83 -0.83 0.71 -0.99 0.54 
+-1.15 0.35 -1.33 0.11 -1.58 -0.2 -1.41 -0.54 -1.2 -0.91 -0.97 -1.21 -0.8 -1.5 -0.57 -1.74 
+-0.34 -1.97 -0.11 -2.15 0.13 -2.13 0.37 -1.88 0.61 -1.63 0.82 -1.35 1.05 -1.06 1.23 -0.8 
+1.43 -0.48 1.61 -0.16 1.48 0.18 1.23 0.45 1.05 0.7 0.82 0.87 0.63 0.98 0.43 1.04 
+0.26 1.04 0.08 0.97 4 0 -0.17 -1.93 -0.5 -1.82 -0.8 -1.69 -1.15 -1.5 -1.47 -1.26 
+-1.8 -0.95 -2.12 -0.61 -2.46 -0.2 -1.45 0.07 -1.33 0.24 -1.21 0.36 -1.11 0.52 -1 0.63 
+-0.89 0.74 -1.5 1.8 -1.12 2.1 -0.79 2.37 -0.45 2.52 -0.13 2.61 0.11 1.8 0.28 1.65 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.06 1.61 1.8 1.78 1.31 1.82 0.89 1.8 0.52 
+1.61 0.15 1.76 -0.13 1.69 -0.37 1.61 -0.65 1.43 -0.93 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.34 f*
+2793.38 3195.64 -3.99 0 -0.18 1.04 -0.35 0.98 -0.5 0.93 -0.67 0.83 -0.82 0.71 -1 0.54 
+-1.15 0.35 -1.32 0.11 -1.58 -0.2 -1.41 -0.54 -1.2 -0.91 -1 -1.21 -0.78 -1.5 -0.57 -1.74 
+-0.35 -1.97 -0.11 -2.15 0.13 -2.13 0.37 -1.88 0.61 -1.63 0.83 -1.35 1.04 -1.06 1.24 -0.8 
+1.43 -0.48 1.59 -0.16 1.47 0.18 1.26 0.45 1.04 0.7 0.83 0.87 0.63 0.98 0.43 1.04 
+0.26 1.04 0.07 0.97 3.99 0 -0.16 -1.93 -0.5 -1.82 -0.8 -1.69 -1.15 -1.5 -1.48 -1.26 
+-1.8 -0.95 -2.13 -0.61 -2.47 -0.2 -1.43 0.07 -1.32 0.24 -1.21 0.36 -1.11 0.52 -1 0.63 
+-0.89 0.74 -1.5 1.8 -1.13 2.1 -0.78 2.37 -0.45 2.52 -0.13 2.61 0.11 1.8 0.28 1.65 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.06 1.61 1.8 1.75 1.31 1.84 0.89 1.79 0.52 
+1.63 0.15 1.76 -0.13 1.7 -0.37 1.58 -0.65 1.46 -0.93 1.25 -1.26 1.02 -1.61 0.76 -1.95 
+0.45 -2.34 f*
+2796.88 3190.41 11.4766 3.49219 re
+f*
+2833.31 3195.64 -4 0 -0.17 1.04 -0.34 0.98 -0.5 0.93 -0.67 0.83 -0.83 0.71 -1 0.54 
+-1.15 0.35 -1.33 0.11 -1.58 -0.2 -1.41 -0.54 -1.19 -0.91 -1 -1.21 -0.79 -1.5 -0.57 -1.74 
+-0.34 -1.97 -0.11 -2.15 0.13 -2.13 0.37 -1.88 0.61 -1.63 0.82 -1.35 1.04 -1.06 1.23 -0.8 
+1.43 -0.48 1.58 -0.16 1.48 0.18 1.26 0.45 1.04 0.7 0.82 0.87 0.61 0.98 0.46 1.04 
+0.24 1.04 0.08 0.97 4 0 -0.15 -1.93 -0.5 -1.82 -0.82 -1.69 -1.13 -1.5 -1.47 -1.26 
+-1.8 -0.95 -2.14 -0.61 -2.46 -0.2 -1.43 0.07 -1.33 0.24 -1.21 0.36 -1.11 0.52 -0.99 0.63 
+-0.89 0.74 -1.52 1.8 -1.12 2.1 -0.76 2.37 -0.46 2.52 -0.15 2.61 0.13 1.8 0.26 1.65 
+0.41 1.5 0.5 1.34 0.61 1.22 0.71 1.06 1.59 1.8 1.78 1.31 1.84 0.89 1.78 0.52 
+1.63 0.15 1.76 -0.13 1.69 -0.37 1.58 -0.65 1.46 -0.93 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.34 f*
+2851.52 3197.13 4.26 0 -0.33 2.06 -0.7 1.7 -1.04 1.34 -1.26 1.02 -1.41 0.76 -1.52 0.5 
+-1.52 0.28 -1.48 0.09 -1.78 -0.13 -1.74 -0.39 -1.65 -0.62 -1.47 -0.89 -1.26 -1.13 -0.98 -1.37 
+-0.62 -1.61 -0.22 -1.84 0.09 -1.15 0.24 -1.06 0.43 -0.93 0.61 -0.84 0.8 -0.76 0.97 -0.65 
+1.2 -0.59 1.39 -0.5 6.25 -1.5 1.52 -0.48 1.2 -0.72 0.75 -0.98 0.2 -0.63 0.07 -0.69 
+-0.08 -0.82 -0.29 -0.74 -0.48 -0.7 -0.65 -0.59 -0.85 -0.48 -1.02 -0.37 -1.22 -0.21 -1.41 -0.09 
+-1.58 0.09 -1.29 0.28 -0.97 0.41 -0.74 0.58 -0.54 0.74 -0.39 0.85 -0.48 2.04 -4.23 0 
+0.24 -1.81 0.43 -1.66 0.67 -1.48 0.96 -1.28 1.3 -1.07 1.73 -0.78 2.17 -0.5 2.71 -0.16 
+1.87 0.11 1.84 0.39 1.72 0.65 1.56 0.89 1.32 1.16 1.02 1.41 0.68 1.67 0.24 1.93 
+-0.13 1.32 -0.39 1.17 -0.63 1.05 -0.85 0.89 -1.11 0.78 -1.32 0.7 -1.54 0.59 -1.78 0.5 
+-4.73 0.99 -1.78 0.79 -0.97 0.87 -0.42 0.91 -0.08 0.93 0.11 0.87 0.33 0.76 0.52 0.65 
+0.67 0.52 0.8 0.41 0.93 0.3 2.13 0.22 1.22 -0.07 0.99 -0.24 0.85 -0.35 0.65 -0.5 
+0.52 -0.58 0.37 -0.67 0.39 -1.59 4.26 0 -4.26 0 f*
+2862.26 3204.12 3.49 0 0 -3.73 1.93 2.17 1.82 1.39 0.93 0.43 0.95 0.29 2.09 0.21 
+1.8 -0.24 1.67 -0.54 0.8 -0.48 0.83 -0.67 0.8 -0.89 0.84 -1.17 1.98 2 0.95 0.69 
+0.93 0.52 1.89 0.61 1.97 0.17 1.24 -0.09 1.25 -0.3 1.22 -0.48 1.13 -0.69 0.96 -0.91 
+0.76 -1.11 0.5 -1.34 0.17 -1.56 0 -19.47 -4 0 0 17.97 -0.11 0.91 -0.3 0.85 
+-0.48 0.76 -0.61 0.67 -0.7 0.54 -0.74 0.41 -0.79 0.26 -0.78 0.09 -1.04 -0.13 -1.05 -0.35 
+-0.99 -0.57 -0.93 -0.73 -0.8 -0.89 -0.61 -1.02 -0.41 -1.11 -0.13 -1.2 0 -16.47 -3.99 0 
+0 17.97 -0.13 0.91 -0.3 0.85 -0.48 0.76 -0.63 0.67 -0.72 0.54 -0.8 0.41 -0.85 0.26 
+-0.84 0.09 -0.89 -0.11 -0.95 -0.34 -0.96 -0.52 -0.91 -0.71 -0.8 -0.87 -0.66 -1.02 -0.41 -1.15 
+-0.15 -1.26 0 -16.47 -3.99 0 0 25.2 f*
+2912.41 3212.87 2.74 0 0 -33.94 -4.23 0 0 24.2 -7.49 0 0 3 3.02 0.37 
+1.37 0.29 1.24 0.48 1.08 0.75 0.93 1.14 0.79 1.61 0.56 2.12 f*
+2927.39 3190.41 11.4766 3.49219 re
+f*
+2955.08 3212.87 2.75 0 0 -33.94 -4.25 0 0 24.2 -7.49 0 0 3 3.02 0.37 
+1.37 0.29 1.24 0.48 1.09 0.75 0.95 1.14 0.76 1.61 0.57 2.12 f*
+2752.45 3253.32 -0.71 2.86 -1 2.41 -1.3 1.97 -1.61 1.59 -1.87 1.19 -2.14 0.83 -2.41 0.48 
+-2.67 0.15 -1.82 -0.09 -1.72 -0.25 -1.63 -0.44 -1.52 -0.58 -1.39 -0.74 -1.31 -0.89 -1.19 -1.02 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.52 -0.61 -1.59 -0.85 -3.49 -0.34 -3.77 0.09 -2.2 
+0.21 -2.04 0.39 -1.91 0.54 -1.75 0.66 -1.63 0.78 -1.5 0.91 -1.37 1.05 -1.21 1.11 -1.09 
+1.24 -0.93 1.32 -0.78 1.39 -0.65 1.47 -0.5 1.54 -0.37 1.61 -0.22 1.67 -0.09 1.8 0.09 
+1.65 0.2 1.52 0.35 1.39 0.48 1.26 0.58 1.13 0.7 1.02 0.79 0.89 0.89 1.47 2.04 
+1.07 2.32 0.67 2.59 0.34 2.73 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.84 -1.69 -1.06 -1.33 
+-1.28 -1.02 -1.54 -0.7 -1.82 -0.41 -2.08 -0.13 -1.45 0.09 -1.35 0.2 -1.24 0.35 -1.13 0.47 
+-1.04 0.59 -0.93 0.71 -1.61 1.71 -1.21 2.11 -0.85 2.41 -0.52 2.69 -0.16 2.91 0.22 3.19 
+0.65 2.82 1.05 2.43 1.39 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.24 1.73 -0.12 
+1.63 -0.37 1.5 -0.61 1.34 -0.84 1.13 -1.09 0.91 -1.28 0.63 -1.48 0.35 -1.69 4.49 0 f*
+2787.13 3253.32 -0.7 2.86 -1.02 2.41 -1.3 1.97 -1.59 1.59 -1.86 1.19 -2.15 0.83 -2.43 0.48 
+-2.66 0.15 -1.82 -0.09 -1.71 -0.25 -1.63 -0.44 -1.5 -0.58 -1.41 -0.74 -1.3 -0.89 -1.2 -1.02 
+-1.06 -1.15 -0.96 -1.28 -0.84 -1.39 -0.74 -1.52 -0.61 -1.59 -0.85 -3.49 -0.34 -3.77 0.08 -2.2 
+0.24 -2.04 0.39 -1.91 0.52 -1.75 0.65 -1.63 0.8 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.09 
+1.21 -0.93 1.32 -0.78 1.39 -0.65 1.48 -0.5 1.56 -0.37 1.61 -0.22 1.65 -0.09 1.8 0.09 
+1.65 0.2 1.52 0.35 1.39 0.48 1.26 0.58 1.13 0.7 1.02 0.79 0.91 0.89 1.45 2.04 
+1.07 2.32 0.7 2.59 0.32 2.73 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.85 -1.69 -1.04 -1.33 
+-1.31 -1.02 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.46 0.09 -1.32 0.2 -1.24 0.35 -1.15 0.47 
+-1.04 0.59 -0.93 0.71 -1.58 1.71 -1.24 2.11 -0.85 2.41 -0.5 2.69 -0.18 2.91 0.24 3.19 
+0.66 2.82 1.04 2.43 1.37 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.24 1.73 -0.12 
+1.63 -0.37 1.52 -0.61 1.32 -0.84 1.13 -1.09 0.91 -1.28 0.65 -1.48 0.33 -1.69 4.49 0 f*
+2818.84 3254.08 -0.07 1.3 -0.22 1.23 -0.33 1.13 -0.43 1.06 -1.21 1.84 -1.61 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.15 -2.97 -0.2 -2.56 -0.57 -2.15 -0.89 -1.74 -1.21 -1.34 -1.5 
+-0.95 -1.74 -0.56 -1.97 -0.2 -2.15 0.13 -1.73 0.35 -1.45 0.54 -1.22 0.72 -1 0.87 -0.82 
+0.98 -0.7 2.15 -1.06 11.24 -2.99 2.36 -1.05 0.85 -0.58 0.69 -0.63 0.5 -0.67 0.33 -0.72 
+0.2 -0.78 0.07 -0.83 -0.11 -1.17 -0.32 -1.13 -0.57 -1.02 -0.87 -0.89 -1.21 -0.74 -1.56 -0.57 
+-1.95 -0.34 -2.39 -0.13 -2.43 0.2 -2.04 0.5 -1.7 0.78 -1.32 1.02 -1.02 1.21 -0.7 1.34 
+-0.41 1.46 -0.13 1.48 -4.5 0 0.22 -2.45 0.65 -2.26 1.09 -2.04 1.52 -1.76 1.97 -1.45 
+2.46 -1.09 2.93 -0.69 3.41 -0.24 3.14 0.22 2.76 0.63 2.3 0.96 1.91 1.3 1.46 1.54 
+1.06 1.79 0.63 1.97 0.21 2.08 -0.15 1.7 -0.46 1.54 -0.69 1.37 -0.89 1.17 -1.07 1.02 
+-1.17 0.82 -1.26 0.65 -1.3 0.48 -11.24 2.99 -1.95 1.02 -1.13 0.98 -0.32 0.54 -0.2 0.61 
+-0.13 1.58 0.16 1.32 0.46 1.15 0.71 1 0.95 0.8 1.15 0.63 1.3 0.48 1.45 0.26 
+1.55 0.11 2.04 -0.15 1.75 -0.39 1.5 -0.63 1.24 -0.82 0.95 -1.04 0.7 -1.17 0.42 -1.34 
+0.15 -1.43 4.5 0 f*
+2825.57 3264.3 6.25 0 10.22 -30.45 10.24 30.45 6.23 0 0 -34.94 -4.23 0 0 29.21 
+-9.98 -29.21 -4.75 0 -9.72 29.21 0 -29.21 -4.25 0 0 34.94 f*
+2878.73 3263.3 2.99 0 0 -21.96 5.23 0 0 -3.99 ^ 0 -7.99 -4.25 0 
+^ -14.21 0 0 3.99 ^ 0 14.74 -10.48 -14.74 -3.73 0 0 0.5 
+15.47 21.46 f*
+2752.45 3304.28 -0.71 2.84 -1 2.41 -1.3 2 -1.61 1.56 -1.87 1.2 -2.14 0.83 -2.41 0.48 
+-2.67 0.15 -1.82 -0.09 -1.72 -0.25 -1.63 -0.44 -1.52 -0.58 -1.39 -0.74 -1.31 -0.89 -1.19 -1.02 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.5 -0.61 -1.61 -0.85 -3.47 -0.34 -3.79 0.09 -2.17 
+0.21 -2.04 0.39 -1.91 0.54 -1.78 0.66 -1.63 0.78 -1.5 0.91 -1.37 1.05 -1.21 1.11 -1.06 
+1.24 -0.93 1.32 -0.8 1.39 -0.66 1.47 -0.49 1.54 -0.37 1.61 -0.22 1.67 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.33 1.39 0.48 1.26 0.58 1.13 0.7 1.02 0.78 0.89 0.91 1.47 2.02 
+1.07 2.34 0.67 2.56 0.34 2.73 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.84 -1.67 -1.06 -1.35 
+-1.28 -0.99 -1.54 -0.72 -1.82 -0.39 -2.08 -0.13 -1.45 0.07 -1.35 0.21 -1.24 0.34 -1.13 0.46 
+-1.04 0.61 -0.93 0.7 -1.61 1.71 -1.21 2.11 -0.85 2.41 -0.52 2.69 -0.16 2.91 0.22 3.19 
+0.65 2.82 1.05 2.43 1.39 2.04 1.7 1.61 1.95 1.18 2.17 0.71 2.37 0.26 1.73 -0.13 
+1.63 -0.39 1.5 -0.61 1.34 -0.84 1.13 -1.07 0.91 -1.28 0.63 -1.5 0.35 -1.67 4.49 0 f*
+2759.7 3315.23 24.2 0 0 -3.97 -19.7 0 0 -11.24 18.95 0 0 -4 ^ 
+0 -11.71 20.44 0 0 -4 -24.93 0 0 34.92 f*
+2816.08 3305.01 -0.07 1.33 -0.2 1.21 -0.32 1.13 -0.46 1.07 -1.21 1.84 -1.61 1.49 -1.93 1.17 
+-2.2 0.83 -2.41 0.5 -2.58 0.15 -2.98 -0.17 -2.54 -0.57 -2.14 -0.91 -1.76 -1.21 -1.34 -1.5 
+-0.96 -1.74 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.35 -1.46 0.57 -1.21 0.71 -1.02 0.87 -0.83 
+0.96 -0.69 2.17 -1.06 11.21 -2.99 2.37 -1.02 0.87 -0.59 0.67 -0.63 0.5 -0.69 0.35 -0.72 
+0.19 -0.78 0.05 -0.8 -0.09 -1.2 -0.33 -1.13 -0.58 -0.99 -0.87 -0.89 -1.2 -0.73 -1.56 -0.57 
+-1.95 -0.37 -2.41 -0.11 -2.41 0.17 -2.04 0.5 -1.7 0.8 -1.34 1.02 -1 1.2 -0.7 1.37 
+-0.41 1.43 -0.13 1.5 -4.49 0 0.21 -2.46 0.63 -2.28 1.09 -2.02 1.54 -1.79 1.97 -1.45 
+2.46 -1.09 2.91 -0.67 3.41 -0.24 3.17 0.22 2.73 0.61 2.32 0.98 1.89 1.28 1.47 1.56 
+1.07 1.79 0.63 1.95 0.2 2.11 -0.15 1.7 -0.43 1.52 -0.7 1.37 -0.89 1.19 -1.07 1 
+-1.17 0.85 -1.28 0.65 -1.3 0.46 -11.22 2.99 -1.95 1.02 -1.13 0.98 -0.32 0.54 -0.21 0.63 
+-0.13 1.59 0.17 1.3 0.46 1.18 0.71 0.98 0.93 0.8 1.15 0.65 1.33 0.45 1.43 0.29 
+1.57 0.08 2.02 -0.13 1.76 -0.39 1.5 -0.62 1.24 -0.85 0.97 -1.02 0.69 -1.2 0.41 -1.32 
+0.13 -1.45 4.49 0 f*
+2822.83 3315.23 6.23 0 10.25 -30.42 10.22 30.42 6.25 0 0 -34.92 -4.26 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.74 29.19 0 -29.19 -4.23 0 0 34.92 f*
+2872.98 3314.23 2.75 0 0 -33.92 -4.25 0 0 24.2 -7.48 0 0 3 3.01 0.34 
+1.37 0.3 1.23 0.48 1.09 0.75 0.95 1.13 0.76 1.58 0.57 2.13 f*
+2887.96 3291.79 11.4766 3.49609 re
+f*
+2933.62 3304.28 -0.72 2.84 -1 2.41 -1.3 2 -1.59 1.56 -1.89 1.2 -2.15 0.83 -2.41 0.48 
+-2.67 0.15 -1.82 -0.09 -1.72 -0.25 -1.62 -0.44 -1.52 -0.58 -1.39 -0.74 -1.3 -0.89 -1.2 -1.02 
+-1.07 -1.15 -0.98 -1.28 -0.82 -1.39 -0.74 -1.5 -0.61 -1.61 -0.84 -3.47 -0.35 -3.79 0.09 -2.17 
+0.24 -2.04 0.37 -1.91 0.55 -1.78 0.65 -1.63 0.8 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.06 
+1.21 -0.93 1.32 -0.8 1.39 -0.66 1.48 -0.49 1.54 -0.37 1.61 -0.22 1.67 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.33 1.39 0.48 1.25 0.58 1.13 0.7 1.02 0.78 0.89 0.91 1.48 2.02 
+1.06 2.34 0.67 2.56 0.35 2.73 -4.5 0 -0.45 -2.43 -0.63 -2.04 -0.85 -1.67 -1.06 -1.35 
+-1.29 -0.99 -1.54 -0.72 -1.82 -0.39 -2.09 -0.13 -1.45 0.07 -1.34 0.21 -1.24 0.34 -1.12 0.46 
+-1.04 0.61 -0.93 0.7 -1.61 1.71 -1.22 2.11 -0.84 2.41 -0.5 2.69 -0.17 2.91 0.22 3.19 
+0.65 2.82 1.04 2.43 1.39 2.04 1.7 1.61 1.96 1.18 2.17 0.71 2.36 0.26 1.74 -0.13 
+1.63 -0.39 1.5 -0.61 1.34 -0.84 1.13 -1.07 0.91 -1.28 0.63 -1.5 0.34 -1.67 4.5 0 f*
+2949.85 3315.23 5.73 0 12.24 -34.92 -4.99 0 -3.5 10.22 -13.74 0 -3.49 -10.22 -4.99 0 
+10.98 29.95 4.49 0 -5.73 -15.73 11.21 0 -5.49 15.73 -4.49 0 1.76 4.97 f*
+2972.05 3315.23 6.25 0 10.22 -30.42 10.21 30.42 6.25 0 0 -34.92 -4.25 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.72 29.19 0 -29.19 -4.25 0 0 34.92 f*
+3013.48 3314.23 17.71 0 0 -3.97 -14.21 0 -1.26 -9.74 1.24 0.87 1.45 0.71 1.74 0.48 
+2.06 0.2 1.76 -0.15 1.83 -0.46 1.8 -0.8 1.67 -1.15 1.47 -1.56 1.17 -2 0.43 -1.15 
+0.33 -1.28 0.2 -1.41 0.09 -1.52 -0.2 -2.39 -0.57 -2.28 -0.91 -2.06 -1.3 -1.82 -1.65 -1.52 
+-2.02 -1.17 -2.36 -0.74 -2.74 -0.26 -2.52 0.2 -2.14 0.54 -1.8 0.89 -1.47 1.15 -1.2 1.41 
+-0.93 1.61 -0.67 1.78 -0.48 1.91 4.23 0 0.43 -1.24 0.56 -1.12 0.65 -0.98 0.79 -0.82 
+0.91 -0.68 1.02 -0.49 1.13 -0.31 1.25 -0.09 1.7 0.13 1.52 0.37 1.32 0.65 1.11 0.91 
+0.89 1.15 0.65 1.41 0.42 1.67 0.13 1.93 -0.11 1.41 -0.33 1.41 -0.54 1.35 -0.8 1.23 
+-1.02 1.05 -1.3 0.82 -1.56 0.52 -1.83 0.2 -1.82 -0.2 -1.5 -0.58 -1.48 -1 -1.7 -1.46 
+-3.73 0 2.49 18.45 f*
+2754.71 3353.21 -14.74 0 0 -4 10.48 0 0 -2.25 -0.2 -1.7 -0.57 -1.66 -0.91 -1.59 
+-1.26 -1.43 -1.54 -1.21 -1.84 -0.93 -2.09 -0.57 -2.32 -0.13 -1.59 0.09 -1.47 0.21 -1.35 0.37 
+-1.23 0.5 -1.13 0.63 -1.02 0.74 -0.91 0.84 -0.82 0.96 -1.3 2.15 -0.93 2.45 -0.54 2.7 
+-0.18 2.84 0.24 3.04 0.71 2.71 1.15 2.39 1.52 2.02 1.82 1.63 2.13 1.19 2.36 0.74 
+2.54 0.26 1.24 -0.09 1.41 -0.24 1.48 -0.45 1.47 -0.7 1.39 -0.95 1.21 -1.26 0.93 -1.58 
+0.59 -1.98 4.75 0 -0.35 1.5 -0.69 1.73 -1.06 1.87 -1.5 1.82 -1.93 1.7 -1.15 0.72 
+-1.28 0.65 -1.43 0.52 -1.54 0.39 -1.7 0.26 -1.84 0.09 -1.93 -0.09 -1.82 -0.26 -1.72 -0.43 
+-1.61 -0.58 -1.52 -0.74 -1.39 -0.89 -1.28 -1.02 -1.15 -1.13 -1.04 -1.28 -0.91 -1.37 -0.78 -1.47 
+-0.65 -1.59 -0.5 -1.67 -0.37 -1.74 -0.24 -1.82 -0.06 -1.89 0.09 -2.34 0.24 -2.17 0.43 -2.02 
+0.57 -1.82 0.7 -1.67 0.84 -1.52 0.98 -1.37 1.08 -1.2 1.2 -1.04 1.3 -0.89 1.41 -0.76 
+1.47 -0.61 1.56 -0.48 1.65 -0.33 3.45 -0.26 2.58 0.26 1.39 0.35 1.41 0.52 1.43 0.7 
+1.43 0.91 1.39 1.13 1.34 1.37 1 -4.23 3 0 0 18.46 f*
+2762.93 3334.75 4.49609 34.9375 re
+f*
+2800.37 3359.44 -0.06 1.33 -0.21 1.21 -0.33 1.15 -0.43 1.04 -1.22 1.84 -1.61 1.52 -1.93 1.15 
+-2.21 0.83 -2.41 0.5 -2.56 0.17 -2.97 -0.2 -2.56 -0.57 -2.14 -0.91 -1.74 -1.2 -1.34 -1.49 
+-0.96 -1.76 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.35 -1.45 0.54 -1.22 0.74 -1 0.84 -0.84 
+0.98 -0.67 2.17 -1.08 11.21 -3 2.37 -1.02 0.87 -0.59 0.67 -0.63 0.5 -0.67 0.33 -0.74 
+0.2 -0.76 0.07 -0.83 -0.11 -1.19 -0.3 -1.11 -0.58 -1.02 -0.87 -0.89 -1.22 -0.74 -1.56 -0.56 
+-1.96 -0.35 -2.39 -0.13 -2.43 0.17 -2.04 0.52 -1.67 0.78 -1.34 1.02 -1 1.21 -0.72 1.34 
+-0.39 1.43 -0.13 1.5 -4.49 0 0.19 -2.45 0.65 -2.26 1.08 -2.04 1.52 -1.76 1.99 -1.45 
+2.43 -1.09 2.93 -0.7 3.41 -0.24 3.17 0.21 2.73 0.61 2.3 0.97 1.91 1.29 1.47 1.56 
+1.05 1.78 0.63 1.95 0.22 2.11 -0.15 1.7 -0.45 1.54 -0.7 1.34 -0.89 1.2 -1.05 1 
+-1.2 0.84 -1.25 0.65 -1.3 0.45 -11.22 3 -1.98 1.02 -1.13 0.98 -0.32 0.54 -0.2 0.63 
+-0.13 1.58 0.15 1.32 0.46 1.15 0.71 0.98 0.96 0.82 1.15 0.63 1.31 0.46 1.45 0.28 
+1.54 0.09 2.04 -0.12 1.76 -0.39 1.5 -0.63 1.23 -0.84 0.96 -1.02 0.7 -1.2 0.41 -1.32 
+0.16 -1.46 4.49 0 f*
+2832.31 3359.44 -0.06 1.33 -0.21 1.21 -0.33 1.15 -0.43 1.04 -1.24 1.84 -1.59 1.52 -1.93 1.15 
+-2.21 0.83 -2.41 0.5 -2.56 0.17 -2.97 -0.2 -2.56 -0.57 -2.14 -0.91 -1.74 -1.2 -1.35 -1.49 
+-0.95 -1.76 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.34 -1.45 0.55 -1.22 0.71 -1 0.87 -0.84 
+0.98 -0.67 2.15 -1.08 11.24 -3 2.37 -1.02 0.84 -0.59 0.67 -0.63 0.5 -0.67 0.35 -0.74 
+0.19 -0.76 0.07 -0.83 -0.11 -1.19 -0.33 -1.11 -0.56 -1.02 -0.86 -0.89 -1.22 -0.74 -1.56 -0.56 
+-1.96 -0.35 -2.39 -0.13 -2.43 0.17 -2.04 0.52 -1.7 0.78 -1.32 1.02 -1.02 1.21 -0.7 1.34 
+-0.41 1.43 -0.13 1.5 -4.49 0 0.21 -2.45 0.65 -2.26 1.09 -2.04 1.52 -1.76 1.97 -1.45 
+2.46 -1.09 2.93 -0.7 3.4 -0.24 3.15 0.21 2.73 0.61 2.32 0.97 1.91 1.29 1.45 1.56 
+1.07 1.78 0.63 1.95 0.22 2.11 -0.15 1.7 -0.45 1.54 -0.7 1.34 -0.89 1.2 -1.07 1 
+-1.17 0.84 -1.25 0.65 -1.3 0.45 -11.24 3 -1.95 1.02 -1.13 0.98 -0.32 0.54 -0.2 0.63 
+-0.12 1.58 0.15 1.32 0.46 1.15 0.71 0.98 0.96 0.82 1.15 0.63 1.3 0.46 1.45 0.28 
+1.54 0.09 2.04 -0.12 1.75 -0.39 1.5 -0.63 1.23 -0.84 0.96 -1.02 0.69 -1.2 0.41 -1.32 
+0.15 -1.46 4.49 0 f*
+2837.54 3346.22 11.4805 3.49219 re
+f*
+2855.77 3369.68 24.2 0 0 -4 -19.71 0 0 -11.24 18.97 0 0 -3.99 ^ 
+0 -11.72 20.46 0 0 -3.99 -24.95 0 0 34.94 f*
+2885.72 3356.95 4.23 0 0.11 1.71 0.33 1.54 0.52 1.37 0.76 1.15 0.98 0.93 1.2 0.72 
+1.43 0.41 1.67 0.16 1.29 -0.11 1.21 -0.35 1.09 -0.54 0.98 -0.74 0.8 -0.93 0.61 -1.11 
+0.39 -1.29 0.13 -1.43 -0.11 -1.43 -0.37 -1.22 -0.58 -1.04 -0.85 -0.91 -1.08 -0.89 -1.32 -0.89 
+-3.43 -2.11 -2.89 -1.67 -2.37 -1.71 -1.86 -1.76 -1.41 -1.8 -1.05 -1.89 -0.67 -1.99 -0.37 -2.13 
+-0.11 -2.25 22.7 0 0 3.99 -17.96 0 0.45 1.54 0.61 1.26 0.8 1.08 1.02 0.98 
+2.73 1.86 3.86 2.26 2.26 1.11 1.84 1.24 1.52 1.37 1.2 1.43 0.87 1.49 0.61 1.54 
+0.35 1.52 0.11 1.52 -0.24 2.09 -0.63 1.87 -1.02 1.65 -1.37 1.43 -1.63 1.15 -1.87 0.84 
+-2.04 0.52 -2.2 0.2 -2.34 -0.17 -2.14 -0.55 -1.91 -0.89 -1.65 -1.25 -1.35 -1.65 -1 -2.02 
+-0.62 -2.41 -0.2 -2.8 f*
+2912.16 3346.22 11.4766 3.49219 re
+f*
+2930.38 3369.68 17.21 0 1.78 -0.15 1.73 -0.46 1.65 -0.76 1.48 -1.04 1.25 -1.34 0.98 -1.63 
+0.63 -1.91 0.24 -2.19 -0.11 -1.43 -0.26 -1.3 -0.48 -1.17 -0.63 -1.07 -0.8 -0.95 -1 -0.85 
+-1.15 -0.78 -1.32 -0.69 1.65 -0.74 1.2 -0.93 0.84 -1.09 0.57 -1.23 0.3 -1.37 0.15 -1.52 
+0.05 -3.34 0.2 -2.37 0.36 -1.65 0.63 -1.15 1.05 -0.82 0 -1 -5.49 0 -0.57 1.52 
+-0.3 1.67 -0.11 2.49 -0.02 4.04 -0.11 1.3 -0.32 1.11 -0.48 0.91 -0.65 0.71 -0.74 0.54 
+-0.85 0.38 -0.91 0.24 -0.93 0.06 -12.22 0 0 -14.97 -4.49 0 0 30.94 ^ 
+0 -11.98 12.22 0 1.17 0.09 1.06 0.25 0.93 0.44 0.8 0.63 0.65 0.82 0.48 1.02 
+0.28 1.25 0.11 1.48 -0.11 1.41 -0.3 1.22 -0.5 1.02 -0.67 0.85 -0.87 0.65 -1.02 0.48 
+-1.17 0.29 -1.34 0.08 -16.21 0 0 4 f*
+2959.83 3326.26 28.6914 2.23438 re
+f*
+3019.21 3358.7 -0.7 2.87 -1.02 2.41 -1.3 1.97 -1.58 1.59 -1.89 1.17 -2.12 0.85 -2.43 0.47 
+-2.67 0.16 -1.82 -0.09 -1.71 -0.26 -1.63 -0.43 -1.5 -0.58 -1.41 -0.76 -1.3 -0.87 -1.2 -1.04 
+-1.06 -1.15 -0.95 -1.28 -0.85 -1.39 -0.73 -1.5 -0.61 -1.61 -0.84 -3.47 -0.35 -3.79 0.09 -2.17 
+0.24 -2.04 0.37 -1.91 0.54 -1.78 0.65 -1.62 0.8 -1.5 0.91 -1.35 1.02 -1.21 1.13 -1.08 
+1.22 -0.93 1.32 -0.81 1.39 -0.62 1.48 -0.52 1.54 -0.37 1.61 -0.21 1.67 -0.07 1.8 0.07 
+1.65 0.21 1.52 0.35 1.39 0.45 1.25 0.59 1.13 0.69 1.02 0.81 0.89 0.89 1.48 2.04 
+1.06 2.32 0.67 2.56 0.35 2.73 -4.5 0 -0.46 -2.41 -0.62 -2.06 -0.84 -1.67 -1.07 -1.35 
+-1.28 -1 -1.54 -0.69 -1.8 -0.42 -2.11 -0.13 -1.45 0.07 -1.33 0.22 -1.25 0.34 -1.13 0.48 
+-1.05 0.59 -0.93 0.7 -1.61 1.73 -1.22 2.09 -0.84 2.43 -0.5 2.69 -0.17 2.89 0.21 3.19 
+0.67 2.82 1.05 2.45 1.37 2.02 1.69 1.63 1.96 1.17 2.16 0.71 2.37 0.24 1.74 -0.12 
+1.63 -0.37 1.5 -0.62 1.34 -0.85 1.13 -1.07 0.91 -1.28 0.63 -1.5 0.34 -1.67 4.5 0 f*
+3053.91 3358.7 -0.72 2.87 -1.02 2.41 -1.3 1.97 -1.59 1.59 -1.86 1.17 -2.15 0.85 -2.41 0.47 
+-2.69 0.16 -1.82 -0.09 -1.71 -0.26 -1.61 -0.43 -1.52 -0.58 -1.41 -0.76 -1.3 -0.87 -1.17 -1.04 
+-1.08 -1.15 -0.96 -1.28 -0.85 -1.39 -0.73 -1.5 -0.61 -1.61 -0.85 -3.47 -0.35 -3.79 0.09 -2.17 
+0.24 -2.04 0.39 -1.91 0.52 -1.78 0.67 -1.62 0.79 -1.5 0.91 -1.35 1.02 -1.21 1.13 -1.08 
+1.21 -0.93 1.33 -0.81 1.41 -0.62 1.47 -0.52 1.55 -0.37 1.61 -0.21 1.64 -0.07 1.8 0.07 
+1.67 0.21 1.52 0.35 1.37 0.45 1.26 0.59 1.15 0.69 1 0.81 0.91 0.89 1.46 2.04 
+1.06 2.32 0.7 2.56 0.35 2.73 -4.5 0 -0.45 -2.41 -0.65 -2.06 -0.84 -1.67 -1.04 -1.35 
+-1.3 -1 -1.54 -0.69 -1.8 -0.42 -2.11 -0.13 -1.43 0.07 -1.35 0.22 -1.23 0.34 -1.15 0.48 
+-1.02 0.59 -0.96 0.7 -1.58 1.73 -1.22 2.09 -0.87 2.43 -0.5 2.69 -0.17 2.89 0.24 3.19 
+0.65 2.82 1.04 2.45 1.39 2.02 1.67 1.63 1.95 1.17 2.2 0.71 2.34 0.24 1.74 -0.12 
+1.65 -0.37 1.5 -0.62 1.33 -0.85 1.15 -1.07 0.89 -1.28 0.65 -1.5 0.35 -1.67 4.49 0 f*
+601.11 3529.05 0.26 3.13 0.37 1.54 0.5 1.52 0.66 1.47 0.82 1.43 0.98 1.35 1.15 1.26 
+1.34 1.18 1.52 1.04 1.7 0.93 1.89 0.81 2.11 0.63 2.28 0.48 2.52 0.3 2.71 0.11 
+2.93 -0.15 3.23 -0.43 3.28 -0.81 3.16 -1.21 1.46 -0.8 1.37 -0.91 1.21 -1.06 1.04 -1.21 
+0.87 -1.34 0.65 -1.52 0.41 -1.7 0.13 -1.84 0 -33.29 0.2 -0.91 0.5 -0.8 0.74 -0.67 
+0.91 -0.52 1.02 -0.35 1.02 -0.17 1 0.05 0.87 0.28 0 -6.25 -2.02 -0.45 -3.19 -0.07 
+-2.26 0.07 -1.76 0.19 -1.37 0.37 -1.04 0.61 -0.82 0.87 -0.71 1.19 -1.39 3.47 -4.43 -3.25 
+-1.91 -1.17 -1.85 -0.91 -1.9 -0.65 -2.05 -0.45 -2.32 -0.24 -2.69 -0.09 -2.34 0.09 -2.11 0.24 
+-1.93 0.39 -1.72 0.54 -1.54 0.65 -1.34 0.78 -1.2 0.89 -1.02 0.98 -0.89 1.07 -0.71 1.13 
+-0.61 1.21 -0.46 1.25 -0.61 2.63 -0.17 2.71 7.79 0 0.2 -1.52 0.57 -1.46 0.91 -1.32 
+1.26 -1.15 1.56 -0.98 1.87 -0.74 2.15 -0.48 2.41 -0.15 3.5 0.43 3.04 0.89 2.58 1.26 
+2.13 1.49 1.66 1.7 1.22 1.75 0.71 1.74 0.24 1.65 0 10.39 -3.9 -1.46 -3.23 -0.76 
+-9.51 -1.43 -2.78 -0.85 -2.2 -0.98 -1.62 -1.11 -1.19 -1.21 -0.78 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.07 -1.54 -7.79 0 0.22 3.88 0.65 3.17 0.48 1.35 0.61 1.17 0.7 1.06 0.8 0.93 
+0.89 0.82 1.02 0.74 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.06 3.23 0.89 1.17 0.48 
+0.91 0.52 0.67 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.15 0.89 -0.46 1.04 
+-0.83 1.11 -1.17 1.11 -1.56 1.02 -1.97 0.82 -2.41 0.57 -2.89 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.71 -1.25 -1.31 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+654.12 3564.93 5.21 0 3.99 -6.1 3.43 -6.2 2.86 -6.21 2.32 -6.18 1.79 -6.08 1.25 -5.92 
+0.74 -5.71 0.24 -5.43 -0.26 -5.45 -0.8 -5.73 -1.3 -5.92 -1.84 -6.04 -2.37 -6.03 -2.84 -5.92 
+-3.37 -5.73 -1.87 -2.78 -1.97 -2.67 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.56 1.91 5.64 
+1.49 5.77 1.09 5.93 0.65 6.1 0.21 6.32 -0.2 6.14 -0.61 6.01 -1 5.9 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+782.01 3530.62 -30.67 0 0 -8.31 21.84 0 0 -4.69 -0.11 -1.76 -0.3 -1.78 -0.5 -1.75 
+-0.67 -1.74 -0.87 -1.69 -1.06 -1.61 -1.21 -1.54 -1.37 -1.46 -1.54 -1.32 -1.7 -1.2 -1.84 -1.04 
+-1.97 -0.89 -2.13 -0.68 -2.23 -0.5 -2.37 -0.26 -2.48 -0.02 -3.29 0.15 -3.04 0.48 -2.82 0.76 
+-2.59 1.04 -2.34 1.3 -2.13 1.54 -1.9 1.78 -1.7 1.98 -1.48 2.15 -1.28 2.34 -1.06 2.49 
+-0.85 2.63 -0.67 2.74 -0.48 2.84 -0.26 2.93 -0.11 3 0.13 3.23 0.39 3.08 0.63 2.93 
+0.87 2.75 1.09 2.58 1.28 2.38 1.5 2.22 1.67 1.99 1.82 1.8 2 1.59 2.14 1.34 
+2.28 1.13 2.39 0.91 2.52 0.63 2.61 0.39 2.69 0.15 2.59 -0.17 2.93 -0.52 3.1 -0.93 
+3.09 -1.43 1.48 -0.93 1.41 -1.06 1.33 -1.24 1.2 -1.39 1.06 -1.56 0.89 -1.76 0.71 -1.95 
+0.5 -2.13 9.87 0 -0.71 3.08 -0.61 1.78 -0.82 1.87 -1 1.91 -1.21 1.95 -1.43 1.95 
+-1.67 1.89 -1.88 1.8 -2.15 1.67 -2.41 1.52 -2.66 1.34 -2.95 1.09 -3.23 0.82 -3.54 0.52 
+-3.85 0.2 -3.99 -0.2 -3.8 -0.54 -3.58 -0.89 -3.37 -1.24 -3.14 -1.52 -2.91 -1.84 -2.64 -2.11 
+-2.43 -2.39 -2.15 -2.64 -1.91 -2.87 -1.62 -3.08 -1.34 -3.27 -1.07 -3.47 -0.76 -3.65 -0.48 -3.8 
+-0.15 -3.93 0.17 -4.88 0.54 -4.54 0.85 -4.17 1.19 -3.84 1.48 -3.47 1.73 -3.14 2.05 -2.82 
+2.25 -2.5 2.5 -2.19 2.73 -1.87 2.91 -1.56 3.08 -1.28 3.28 -0.97 3.41 -0.7 3.54 -0.39 
+3.64 -0.15 2.63 0.13 2.78 0.42 2.89 0.71 2.95 1.09 2.97 1.47 2.97 1.89 2.89 2.37 
+2.8 2.84 2.09 -8.83 6.23 0 0 38.48 f*
+796.05 3544.66 7.29 0 0 -9.89 3.17 4.25 2.87 3.09 2.6 2.08 1.22 0.71 1.13 0.55 
+2.06 0.54 1.79 0.04 1.56 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.37 -0.74 -1.22 -0.87 -1.06 -0.96 -0.93 -1.08 -0.79 -1.2 -0.67 -1.28 -0.52 -1.41 
+-0.41 -1.5 -0.28 -1.61 -0.22 -3.5 0 -29.12 -8.33 0 0 52.52 f*
+872.48 3508.27 -0.57 -2.45 -0.72 -2.23 -0.87 -2.07 -1 -1.88 -1.12 -1.7 -1.23 -1.54 -1.35 -1.37 
+-1.47 -1.19 -1.54 -1.05 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.89 -0.43 -1.93 -0.33 -3.99 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.26 0.89 -2.08 1.13 -1.93 1.32 -1.73 1.52 -1.58 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.87 2.41 -0.65 2.54 -0.5 2.69 -0.28 2.84 -0.09 2.95 
+0.18 4.28 0.5 3.84 0.82 3.45 1.07 3.06 1.32 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.91 1.48 1.99 1.21 2.05 0.96 2.04 0.75 1.99 0.54 1.96 0.38 3.6 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.38 -1.7 -1.11 -1.04 -1.05 -1.17 -0.95 -1.32 -0.87 -1.46 
+-0.74 -1.61 -0.59 -1.76 -0.45 -1.91 -0.29 -2.06 30.66 0 -0.11 2.14 -0.33 1.98 -0.5 1.8 
+-0.69 1.63 -0.82 1.48 -0.93 1.32 -1.06 1.15 -1.14 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.12 0.19 0.52 7.81 1.79 -0.06 1.88 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.82 -1.25 1.76 -1.55 1.65 -1.84 1.52 -2.14 1.34 -2.5 1.17 -2.86 0.93 -3.26 0.72 -3.64 
+0.45 -4.11 0.15 -4.53 -39 0 0.17 -2.71 0.59 -2.98 1.04 -3.04 0.71 -1.48 0.87 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.68 -0.8 1.84 -0.59 2.02 -0.37 2.25 -0.13 
+2.26 0.2 2.11 0.54 1.95 0.93 1.8 1.24 1.61 1.58 1.46 1.87 1.25 2.15 1.07 2.41 
+8.34 0 f*
+928.11 3508.27 -0.57 -2.45 -0.72 -2.23 -0.86 -2.07 -1 -1.88 -1.11 -1.7 -1.26 -1.54 -1.34 -1.37 
+-1.46 -1.19 -1.56 -1.05 -1.65 -0.89 -1.73 -0.74 -1.8 -0.61 -1.86 -0.43 -1.93 -0.33 -4.02 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.25 0.89 -2.09 1.13 -1.91 1.32 -1.75 1.52 -1.59 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.3 2.84 -0.09 2.95 
+0.18 4.28 0.52 3.84 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.93 1.48 1.99 1.21 2.02 0.96 2.05 0.75 2.02 0.54 1.95 0.38 3.59 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.37 -1.7 -1.13 -1.04 -1.04 -1.17 -0.96 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.76 -0.46 -1.91 -0.28 -2.06 30.68 0 -0.12 2.14 -0.31 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.95 1.32 -1.07 1.15 -1.12 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.13 0.19 0.52 7.81 1.8 -0.06 1.87 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.84 -1.25 1.76 -1.55 1.63 -1.84 1.52 -2.14 1.34 -2.5 1.18 -2.86 0.95 -3.26 0.7 -3.64 
+0.46 -4.11 0.15 -4.53 -39 0 0.2 -2.71 0.56 -2.98 1.07 -3.04 0.71 -1.48 0.85 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.66 -0.8 1.85 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.54 1.95 0.93 1.78 1.24 1.63 1.58 1.43 1.87 1.26 2.15 1.08 2.41 
+8.32 0 f*
+940.58 3544.66 7.79 0 0 -8.33 2.17 2.67 2.19 2.17 2.21 1.71 2.19 1.32 2.19 0.93 
+2.13 0.63 2.09 0.35 2 0.11 2.95 -0.24 2.93 -0.72 2.8 -1.11 2.56 -1.52 2.2 -1.89 
+0.91 -1.06 0.79 -1.15 0.63 -1.24 0.48 -1.28 0.3 -1.37 0.09 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.07 1.13 -0.22 1.04 -0.76 1.84 -1.16 1.52 -1.5 1.22 -1.7 0.93 -1.82 0.65 
+-1.87 0.38 -1.82 0.13 -1.28 -0.07 -1.26 -0.21 -2.5 -0.84 -2.39 -1.37 -2.13 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.78 -1.34 -0.66 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.31 0 0 52.52 f*
+996.199 3492.14 8.3125 72.7891 re
+f*
+1018.04 3529.05 0.28 3.13 0.34 1.54 0.5 1.52 0.67 1.47 0.81 1.43 1 1.35 1.15 1.26 
+1.32 1.18 1.52 1.04 1.69 0.93 1.91 0.81 2.08 0.63 2.3 0.48 2.49 0.3 2.73 0.11 
+2.93 -0.15 3.21 -0.43 3.3 -0.81 3.15 -1.21 1.47 -0.8 1.35 -0.91 1.21 -1.06 1.07 -1.21 
+0.86 -1.34 0.63 -1.52 0.42 -1.7 0.15 -1.84 0 -33.29 0.17 -0.91 0.5 -0.8 0.76 -0.67 
+0.91 -0.52 1 -0.35 1.04 -0.17 0.98 0.05 0.86 0.28 0 -6.25 -2.02 -0.45 -3.17 -0.07 
+-2.25 0.07 -1.78 0.19 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.7 1.19 -1.39 3.47 -4.45 -3.25 
+-1.91 -1.17 -1.84 -0.91 -1.89 -0.65 -2.06 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.39 -1.71 0.54 -1.54 0.65 -1.37 0.78 -1.17 0.89 -1.04 0.98 -0.87 1.07 -0.74 1.13 
+-0.59 1.21 -0.48 1.25 -0.58 2.63 -0.2 2.71 7.81 0 0.19 -1.52 0.57 -1.46 0.91 -1.32 
+1.25 -1.15 1.57 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.89 2.61 1.26 
+2.12 1.49 1.67 1.7 1.2 1.75 0.72 1.74 0.26 1.65 0 10.39 -3.93 -1.46 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.85 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.21 -1.48 
+-0.07 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.35 0.58 1.17 0.7 1.06 0.8 0.93 
+0.91 0.82 1 0.74 2.32 1.2 2.73 0.98 3.1 0.82 13.52 2.06 3.25 0.89 1.17 0.48 
+0.91 0.52 0.65 0.57 0.46 0.56 0.24 0.57 0.09 0.58 0 4.69 -0.16 0.89 -0.47 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -1.98 0.82 -2.43 0.57 -2.87 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.73 -1.25 -1.3 -1.43 -0.91 -1.58 -0.52 -1.61 -0.17 -1.61 -8.33 0 f*
+1074.2 3544.66 7.79 0 0 -8.33 2.17 2.67 2.2 2.17 2.21 1.71 2.19 1.32 2.18 0.93 
+2.14 0.63 2.06 0.35 2 0.11 2.95 -0.24 2.95 -0.72 2.8 -1.11 2.54 -1.52 2.2 -1.89 
+0.93 -1.06 0.78 -1.15 0.63 -1.24 0.48 -1.28 0.28 -1.37 0.11 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.09 1.13 -0.2 1.04 -0.79 1.84 -1.17 1.52 -1.47 1.22 -1.69 0.93 -1.85 0.65 
+-1.86 0.38 -1.8 0.13 -1.29 -0.07 -1.28 -0.21 -2.49 -0.84 -2.37 -1.37 -2.15 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.76 -1.34 -0.65 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.32 0 0 52.52 f*
+1163.61 3564.93 8.31 0 0 -72.79 -7.27 0 0 6.77 -1.41 -1.91 -1.5 -1.75 -1.65 -1.59 
+-1.88 -1.39 -2.13 -1.13 -2.48 -0.87 -2.84 -0.54 -3.28 -0.2 -3.17 0.21 -2.87 0.57 -2.58 0.93 
+-2.32 1.22 -2.08 1.52 -1.82 1.73 -1.59 1.93 -1.37 2.08 -1.17 2.23 -0.98 2.32 -0.79 2.37 
+-0.61 2.41 -0.48 2.37 -0.3 2.34 -0.24 4.37 8.83 0 0.09 -2.04 0.21 -2 0.34 -1.93 
+0.48 -1.88 0.61 -1.8 0.72 -1.71 0.82 -1.63 0.96 -1.5 1.04 -1.37 1.16 -1.23 1.25 -1.07 
+1.32 -0.91 1.41 -0.74 1.48 -0.54 1.56 -0.33 1.63 -0.11 1.46 0.09 1.41 0.26 1.37 0.46 
+1.34 0.61 1.26 0.78 1.19 0.96 1.14 1.11 1.04 1.26 0.95 1.41 0.84 1.58 0.76 1.69 
+0.63 1.87 0.5 1.98 0.37 2.13 0.22 2.23 0.08 2.39 -0.17 2.36 -0.3 2.24 -0.43 2.11 
+-0.56 1.95 -0.68 1.8 -0.76 1.67 -0.89 1.52 -0.96 1.37 -1.02 1.22 -1.12 1.04 -1.17 0.91 
+-1.22 0.74 -1.25 0.58 -1.33 0.43 -1.32 0.24 -1.37 0.09 -1.28 -0.09 -1.3 -0.28 -1.32 -0.48 
+-1.3 -0.63 -1.29 -0.82 -1.25 -0.95 -1.2 -1.13 -1.13 -1.26 -1.07 -1.41 -0.95 -1.54 -0.85 -1.67 
+-0.74 -1.8 -0.58 -1.89 -0.46 -2.02 -0.26 -2.11 -0.11 -2.19 -8.83 0 0.18 3.73 0.46 3.45 
+0.74 3.12 0.97 2.84 1.2 2.59 1.37 2.28 1.54 2.04 1.67 1.78 1.78 1.54 1.87 1.3 
+1.88 1.06 1.93 0.87 1.91 0.65 1.87 0.46 1.8 0.29 1.71 0.08 1.69 -0.11 1.91 -0.33 
+2.06 -0.56 2.15 -0.83 2.13 -1.12 2.06 -1.46 1.91 -1.78 1.69 -2.15 0 27.04 f*
+11.1111 w
+255 0 r3
+2616.43 3195.77 102.9 0 S
+255 0 r6
+2616.43 3246.59 102.9 0 S
+255 0 r5
+2616.43 3297.39 102.9 0 S
+128 0 255 rG
+2616.43 3348.22 102.9 0 S
+K
+2722.77 3213.87 3.99 0 0 -13.24 1 1.34 1.13 1.02 1.15 0.74 1.15 0.52 2.02 0.52 
+1.28 0.11 1.91 -0.15 1.89 -0.52 1.8 -0.89 1.65 -1.31 1.41 -1.8 1.11 -2.28 0.71 -2.84 
+0.26 -3.45 -0.18 -2.88 -0.5 -2.65 -0.85 -2.39 -1.2 -2.04 -1.56 -1.7 -0.93 -0.67 -1.02 -0.58 
+-1.11 -0.46 -1.2 -0.33 -1.3 -0.2 -1.41 -0.07 -1.7 0.16 -1.91 0.65 -1 0.54 -0.93 0.75 
+-0.89 0.93 -0.81 1.2 0 -3 -3.99 0 0 11.98 ^ 0.16 -1.91 0.46 -1.79 
+0.7 -1.61 0.91 -1.41 1.08 -1.15 1.22 -0.89 1.32 -0.54 1.39 -0.2 1.67 0.24 1.48 0.7 
+1.23 1.04 1.02 1.32 0.8 1.54 0.57 1.7 0.35 1.74 0.13 1.71 -0.22 2.34 -0.57 2.02 
+-0.84 1.67 -1.06 1.37 -1.17 1.02 -1.19 0.74 -1.15 0.43 -1.04 0.13 -1.46 -0.2 -1.34 -0.59 
+-1.23 -0.93 -1.07 -1.24 -0.89 -1.52 -0.68 -1.73 -0.41 -1.93 -0.16 -2.08 -3.99 0 0 22.96 f*
+2769.42 3195.64 -3.99 0 -0.18 1.04 -0.34 0.98 -0.5 0.93 -0.67 0.83 -0.83 0.71 -0.99 0.54 
+-1.15 0.35 -1.33 0.11 -1.58 -0.2 -1.41 -0.54 -1.2 -0.91 -0.97 -1.21 -0.8 -1.5 -0.57 -1.74 
+-0.34 -1.97 -0.11 -2.15 0.13 -2.13 0.37 -1.88 0.61 -1.63 0.82 -1.35 1.05 -1.06 1.23 -0.8 
+1.43 -0.48 1.61 -0.16 1.48 0.18 1.23 0.45 1.05 0.7 0.82 0.87 0.63 0.98 0.43 1.04 
+0.26 1.04 0.08 0.97 4 0 -0.17 -1.93 -0.5 -1.82 -0.8 -1.69 -1.15 -1.5 -1.47 -1.26 
+-1.8 -0.95 -2.12 -0.61 -2.46 -0.2 -1.45 0.07 -1.33 0.24 -1.21 0.36 -1.11 0.52 -1 0.63 
+-0.89 0.74 -1.5 1.8 -1.12 2.1 -0.79 2.37 -0.45 2.52 -0.13 2.61 0.11 1.8 0.28 1.65 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.06 1.61 1.8 1.78 1.31 1.82 0.89 1.8 0.52 
+1.61 0.15 1.76 -0.13 1.69 -0.37 1.61 -0.65 1.43 -0.93 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.34 f*
+2793.38 3195.64 -3.99 0 -0.18 1.04 -0.35 0.98 -0.5 0.93 -0.67 0.83 -0.82 0.71 -1 0.54 
+-1.15 0.35 -1.32 0.11 -1.58 -0.2 -1.41 -0.54 -1.2 -0.91 -1 -1.21 -0.78 -1.5 -0.57 -1.74 
+-0.35 -1.97 -0.11 -2.15 0.13 -2.13 0.37 -1.88 0.61 -1.63 0.83 -1.35 1.04 -1.06 1.24 -0.8 
+1.43 -0.48 1.59 -0.16 1.47 0.18 1.26 0.45 1.04 0.7 0.83 0.87 0.63 0.98 0.43 1.04 
+0.26 1.04 0.07 0.97 3.99 0 -0.16 -1.93 -0.5 -1.82 -0.8 -1.69 -1.15 -1.5 -1.48 -1.26 
+-1.8 -0.95 -2.13 -0.61 -2.47 -0.2 -1.43 0.07 -1.32 0.24 -1.21 0.36 -1.11 0.52 -1 0.63 
+-0.89 0.74 -1.5 1.8 -1.13 2.1 -0.78 2.37 -0.45 2.52 -0.13 2.61 0.11 1.8 0.28 1.65 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.06 1.61 1.8 1.75 1.31 1.84 0.89 1.79 0.52 
+1.63 0.15 1.76 -0.13 1.7 -0.37 1.58 -0.65 1.46 -0.93 1.25 -1.26 1.02 -1.61 0.76 -1.95 
+0.45 -2.34 f*
+2796.88 3190.41 11.4766 3.49219 re
+f*
+2833.31 3195.64 -4 0 -0.17 1.04 -0.34 0.98 -0.5 0.93 -0.67 0.83 -0.83 0.71 -1 0.54 
+-1.15 0.35 -1.33 0.11 -1.58 -0.2 -1.41 -0.54 -1.19 -0.91 -1 -1.21 -0.79 -1.5 -0.57 -1.74 
+-0.34 -1.97 -0.11 -2.15 0.13 -2.13 0.37 -1.88 0.61 -1.63 0.82 -1.35 1.04 -1.06 1.23 -0.8 
+1.43 -0.48 1.58 -0.16 1.48 0.18 1.26 0.45 1.04 0.7 0.82 0.87 0.61 0.98 0.46 1.04 
+0.24 1.04 0.08 0.97 4 0 -0.15 -1.93 -0.5 -1.82 -0.82 -1.69 -1.13 -1.5 -1.47 -1.26 
+-1.8 -0.95 -2.14 -0.61 -2.46 -0.2 -1.43 0.07 -1.33 0.24 -1.21 0.36 -1.11 0.52 -0.99 0.63 
+-0.89 0.74 -1.52 1.8 -1.12 2.1 -0.76 2.37 -0.46 2.52 -0.15 2.61 0.13 1.8 0.26 1.65 
+0.41 1.5 0.5 1.34 0.61 1.22 0.71 1.06 1.59 1.8 1.78 1.31 1.84 0.89 1.78 0.52 
+1.63 0.15 1.76 -0.13 1.69 -0.37 1.58 -0.65 1.46 -0.93 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.34 f*
+2851.52 3197.13 4.26 0 -0.33 2.06 -0.7 1.7 -1.04 1.34 -1.26 1.02 -1.41 0.76 -1.52 0.5 
+-1.52 0.28 -1.48 0.09 -1.78 -0.13 -1.74 -0.39 -1.65 -0.62 -1.47 -0.89 -1.26 -1.13 -0.98 -1.37 
+-0.62 -1.61 -0.22 -1.84 0.09 -1.15 0.24 -1.06 0.43 -0.93 0.61 -0.84 0.8 -0.76 0.97 -0.65 
+1.2 -0.59 1.39 -0.5 6.25 -1.5 1.52 -0.48 1.2 -0.72 0.75 -0.98 0.2 -0.63 0.07 -0.69 
+-0.08 -0.82 -0.29 -0.74 -0.48 -0.7 -0.65 -0.59 -0.85 -0.48 -1.02 -0.37 -1.22 -0.21 -1.41 -0.09 
+-1.58 0.09 -1.29 0.28 -0.97 0.41 -0.74 0.58 -0.54 0.74 -0.39 0.85 -0.48 2.04 -4.23 0 
+0.24 -1.81 0.43 -1.66 0.67 -1.48 0.96 -1.28 1.3 -1.07 1.73 -0.78 2.17 -0.5 2.71 -0.16 
+1.87 0.11 1.84 0.39 1.72 0.65 1.56 0.89 1.32 1.16 1.02 1.41 0.68 1.67 0.24 1.93 
+-0.13 1.32 -0.39 1.17 -0.63 1.05 -0.85 0.89 -1.11 0.78 -1.32 0.7 -1.54 0.59 -1.78 0.5 
+-4.73 0.99 -1.78 0.79 -0.97 0.87 -0.42 0.91 -0.08 0.93 0.11 0.87 0.33 0.76 0.52 0.65 
+0.67 0.52 0.8 0.41 0.93 0.3 2.13 0.22 1.22 -0.07 0.99 -0.24 0.85 -0.35 0.65 -0.5 
+0.52 -0.58 0.37 -0.67 0.39 -1.59 4.26 0 -4.26 0 f*
+2862.26 3204.12 3.49 0 0 -3.73 1.93 2.17 1.82 1.39 0.93 0.43 0.95 0.29 2.09 0.21 
+1.8 -0.24 1.67 -0.54 0.8 -0.48 0.83 -0.67 0.8 -0.89 0.84 -1.17 1.98 2 0.95 0.69 
+0.93 0.52 1.89 0.61 1.97 0.17 1.24 -0.09 1.25 -0.3 1.22 -0.48 1.13 -0.69 0.96 -0.91 
+0.76 -1.11 0.5 -1.34 0.17 -1.56 0 -19.47 -4 0 0 17.97 -0.11 0.91 -0.3 0.85 
+-0.48 0.76 -0.61 0.67 -0.7 0.54 -0.74 0.41 -0.79 0.26 -0.78 0.09 -1.04 -0.13 -1.05 -0.35 
+-0.99 -0.57 -0.93 -0.73 -0.8 -0.89 -0.61 -1.02 -0.41 -1.11 -0.13 -1.2 0 -16.47 -3.99 0 
+0 17.97 -0.13 0.91 -0.3 0.85 -0.48 0.76 -0.63 0.67 -0.72 0.54 -0.8 0.41 -0.85 0.26 
+-0.84 0.09 -0.89 -0.11 -0.95 -0.34 -0.96 -0.52 -0.91 -0.71 -0.8 -0.87 -0.66 -1.02 -0.41 -1.15 
+-0.15 -1.26 0 -16.47 -3.99 0 0 25.2 f*
+2912.41 3212.87 2.74 0 0 -33.94 -4.23 0 0 24.2 -7.49 0 0 3 3.02 0.37 
+1.37 0.29 1.24 0.48 1.08 0.75 0.93 1.14 0.79 1.61 0.56 2.12 f*
+2927.39 3190.41 11.4766 3.49219 re
+f*
+2955.08 3212.87 2.75 0 0 -33.94 -4.25 0 0 24.2 -7.49 0 0 3 3.02 0.37 
+1.37 0.29 1.24 0.48 1.09 0.75 0.95 1.14 0.76 1.61 0.57 2.12 f*
+2752.45 3253.32 -0.71 2.86 -1 2.41 -1.3 1.97 -1.61 1.59 -1.87 1.19 -2.14 0.83 -2.41 0.48 
+-2.67 0.15 -1.82 -0.09 -1.72 -0.25 -1.63 -0.44 -1.52 -0.58 -1.39 -0.74 -1.31 -0.89 -1.19 -1.02 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.52 -0.61 -1.59 -0.85 -3.49 -0.34 -3.77 0.09 -2.2 
+0.21 -2.04 0.39 -1.91 0.54 -1.75 0.66 -1.63 0.78 -1.5 0.91 -1.37 1.05 -1.21 1.11 -1.09 
+1.24 -0.93 1.32 -0.78 1.39 -0.65 1.47 -0.5 1.54 -0.37 1.61 -0.22 1.67 -0.09 1.8 0.09 
+1.65 0.2 1.52 0.35 1.39 0.48 1.26 0.58 1.13 0.7 1.02 0.79 0.89 0.89 1.47 2.04 
+1.07 2.32 0.67 2.59 0.34 2.73 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.84 -1.69 -1.06 -1.33 
+-1.28 -1.02 -1.54 -0.7 -1.82 -0.41 -2.08 -0.13 -1.45 0.09 -1.35 0.2 -1.24 0.35 -1.13 0.47 
+-1.04 0.59 -0.93 0.71 -1.61 1.71 -1.21 2.11 -0.85 2.41 -0.52 2.69 -0.16 2.91 0.22 3.19 
+0.65 2.82 1.05 2.43 1.39 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.24 1.73 -0.12 
+1.63 -0.37 1.5 -0.61 1.34 -0.84 1.13 -1.09 0.91 -1.28 0.63 -1.48 0.35 -1.69 4.49 0 f*
+2787.13 3253.32 -0.7 2.86 -1.02 2.41 -1.3 1.97 -1.59 1.59 -1.86 1.19 -2.15 0.83 -2.43 0.48 
+-2.66 0.15 -1.82 -0.09 -1.71 -0.25 -1.63 -0.44 -1.5 -0.58 -1.41 -0.74 -1.3 -0.89 -1.2 -1.02 
+-1.06 -1.15 -0.96 -1.28 -0.84 -1.39 -0.74 -1.52 -0.61 -1.59 -0.85 -3.49 -0.34 -3.77 0.08 -2.2 
+0.24 -2.04 0.39 -1.91 0.52 -1.75 0.65 -1.63 0.8 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.09 
+1.21 -0.93 1.32 -0.78 1.39 -0.65 1.48 -0.5 1.56 -0.37 1.61 -0.22 1.65 -0.09 1.8 0.09 
+1.65 0.2 1.52 0.35 1.39 0.48 1.26 0.58 1.13 0.7 1.02 0.79 0.91 0.89 1.45 2.04 
+1.07 2.32 0.7 2.59 0.32 2.73 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.85 -1.69 -1.04 -1.33 
+-1.31 -1.02 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.46 0.09 -1.32 0.2 -1.24 0.35 -1.15 0.47 
+-1.04 0.59 -0.93 0.71 -1.58 1.71 -1.24 2.11 -0.85 2.41 -0.5 2.69 -0.18 2.91 0.24 3.19 
+0.66 2.82 1.04 2.43 1.37 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.24 1.73 -0.12 
+1.63 -0.37 1.52 -0.61 1.32 -0.84 1.13 -1.09 0.91 -1.28 0.65 -1.48 0.33 -1.69 4.49 0 f*
+2818.84 3254.08 -0.07 1.3 -0.22 1.23 -0.33 1.13 -0.43 1.06 -1.21 1.84 -1.61 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.15 -2.97 -0.2 -2.56 -0.57 -2.15 -0.89 -1.74 -1.21 -1.34 -1.5 
+-0.95 -1.74 -0.56 -1.97 -0.2 -2.15 0.13 -1.73 0.35 -1.45 0.54 -1.22 0.72 -1 0.87 -0.82 
+0.98 -0.7 2.15 -1.06 11.24 -2.99 2.36 -1.05 0.85 -0.58 0.69 -0.63 0.5 -0.67 0.33 -0.72 
+0.2 -0.78 0.07 -0.83 -0.11 -1.17 -0.32 -1.13 -0.57 -1.02 -0.87 -0.89 -1.21 -0.74 -1.56 -0.57 
+-1.95 -0.34 -2.39 -0.13 -2.43 0.2 -2.04 0.5 -1.7 0.78 -1.32 1.02 -1.02 1.21 -0.7 1.34 
+-0.41 1.46 -0.13 1.48 -4.5 0 0.22 -2.45 0.65 -2.26 1.09 -2.04 1.52 -1.76 1.97 -1.45 
+2.46 -1.09 2.93 -0.69 3.41 -0.24 3.14 0.22 2.76 0.63 2.3 0.96 1.91 1.3 1.46 1.54 
+1.06 1.79 0.63 1.97 0.21 2.08 -0.15 1.7 -0.46 1.54 -0.69 1.37 -0.89 1.17 -1.07 1.02 
+-1.17 0.82 -1.26 0.65 -1.3 0.48 -11.24 2.99 -1.95 1.02 -1.13 0.98 -0.32 0.54 -0.2 0.61 
+-0.13 1.58 0.16 1.32 0.46 1.15 0.71 1 0.95 0.8 1.15 0.63 1.3 0.48 1.45 0.26 
+1.55 0.11 2.04 -0.15 1.75 -0.39 1.5 -0.63 1.24 -0.82 0.95 -1.04 0.7 -1.17 0.42 -1.34 
+0.15 -1.43 4.5 0 f*
+2825.57 3264.3 6.25 0 10.22 -30.45 10.24 30.45 6.23 0 0 -34.94 -4.23 0 0 29.21 
+-9.98 -29.21 -4.75 0 -9.72 29.21 0 -29.21 -4.25 0 0 34.94 f*
+2878.73 3263.3 2.99 0 0 -21.96 5.23 0 0 -3.99 ^ 0 -7.99 -4.25 0 
+^ -14.21 0 0 3.99 ^ 0 14.74 -10.48 -14.74 -3.73 0 0 0.5 
+15.47 21.46 f*
+2752.45 3304.28 -0.71 2.84 -1 2.41 -1.3 2 -1.61 1.56 -1.87 1.2 -2.14 0.83 -2.41 0.48 
+-2.67 0.15 -1.82 -0.09 -1.72 -0.25 -1.63 -0.44 -1.52 -0.58 -1.39 -0.74 -1.31 -0.89 -1.19 -1.02 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.5 -0.61 -1.61 -0.85 -3.47 -0.34 -3.79 0.09 -2.17 
+0.21 -2.04 0.39 -1.91 0.54 -1.78 0.66 -1.63 0.78 -1.5 0.91 -1.37 1.05 -1.21 1.11 -1.06 
+1.24 -0.93 1.32 -0.8 1.39 -0.66 1.47 -0.49 1.54 -0.37 1.61 -0.22 1.67 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.33 1.39 0.48 1.26 0.58 1.13 0.7 1.02 0.78 0.89 0.91 1.47 2.02 
+1.07 2.34 0.67 2.56 0.34 2.73 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.84 -1.67 -1.06 -1.35 
+-1.28 -0.99 -1.54 -0.72 -1.82 -0.39 -2.08 -0.13 -1.45 0.07 -1.35 0.21 -1.24 0.34 -1.13 0.46 
+-1.04 0.61 -0.93 0.7 -1.61 1.71 -1.21 2.11 -0.85 2.41 -0.52 2.69 -0.16 2.91 0.22 3.19 
+0.65 2.82 1.05 2.43 1.39 2.04 1.7 1.61 1.95 1.18 2.17 0.71 2.37 0.26 1.73 -0.13 
+1.63 -0.39 1.5 -0.61 1.34 -0.84 1.13 -1.07 0.91 -1.28 0.63 -1.5 0.35 -1.67 4.49 0 f*
+2759.7 3315.23 24.2 0 0 -3.97 -19.7 0 0 -11.24 18.95 0 0 -4 ^ 
+0 -11.71 20.44 0 0 -4 -24.93 0 0 34.92 f*
+2816.08 3305.01 -0.07 1.33 -0.2 1.21 -0.32 1.13 -0.46 1.07 -1.21 1.84 -1.61 1.49 -1.93 1.17 
+-2.2 0.83 -2.41 0.5 -2.58 0.15 -2.98 -0.17 -2.54 -0.57 -2.14 -0.91 -1.76 -1.21 -1.34 -1.5 
+-0.96 -1.74 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.35 -1.46 0.57 -1.21 0.71 -1.02 0.87 -0.83 
+0.96 -0.69 2.17 -1.06 11.21 -2.99 2.37 -1.02 0.87 -0.59 0.67 -0.63 0.5 -0.69 0.35 -0.72 
+0.19 -0.78 0.05 -0.8 -0.09 -1.2 -0.33 -1.13 -0.58 -0.99 -0.87 -0.89 -1.2 -0.73 -1.56 -0.57 
+-1.95 -0.37 -2.41 -0.11 -2.41 0.17 -2.04 0.5 -1.7 0.8 -1.34 1.02 -1 1.2 -0.7 1.37 
+-0.41 1.43 -0.13 1.5 -4.49 0 0.21 -2.46 0.63 -2.28 1.09 -2.02 1.54 -1.79 1.97 -1.45 
+2.46 -1.09 2.91 -0.67 3.41 -0.24 3.17 0.22 2.73 0.61 2.32 0.98 1.89 1.28 1.47 1.56 
+1.07 1.79 0.63 1.95 0.2 2.11 -0.15 1.7 -0.43 1.52 -0.7 1.37 -0.89 1.19 -1.07 1 
+-1.17 0.85 -1.28 0.65 -1.3 0.46 -11.22 2.99 -1.95 1.02 -1.13 0.98 -0.32 0.54 -0.21 0.63 
+-0.13 1.59 0.17 1.3 0.46 1.18 0.71 0.98 0.93 0.8 1.15 0.65 1.33 0.45 1.43 0.29 
+1.57 0.08 2.02 -0.13 1.76 -0.39 1.5 -0.62 1.24 -0.85 0.97 -1.02 0.69 -1.2 0.41 -1.32 
+0.13 -1.45 4.49 0 f*
+2822.83 3315.23 6.23 0 10.25 -30.42 10.22 30.42 6.25 0 0 -34.92 -4.26 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.74 29.19 0 -29.19 -4.23 0 0 34.92 f*
+2872.98 3314.23 2.75 0 0 -33.92 -4.25 0 0 24.2 -7.48 0 0 3 3.01 0.34 
+1.37 0.3 1.23 0.48 1.09 0.75 0.95 1.13 0.76 1.58 0.57 2.13 f*
+2887.96 3291.79 11.4766 3.49609 re
+f*
+2933.62 3304.28 -0.72 2.84 -1 2.41 -1.3 2 -1.59 1.56 -1.89 1.2 -2.15 0.83 -2.41 0.48 
+-2.67 0.15 -1.82 -0.09 -1.72 -0.25 -1.62 -0.44 -1.52 -0.58 -1.39 -0.74 -1.3 -0.89 -1.2 -1.02 
+-1.07 -1.15 -0.98 -1.28 -0.82 -1.39 -0.74 -1.5 -0.61 -1.61 -0.84 -3.47 -0.35 -3.79 0.09 -2.17 
+0.24 -2.04 0.37 -1.91 0.55 -1.78 0.65 -1.63 0.8 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.06 
+1.21 -0.93 1.32 -0.8 1.39 -0.66 1.48 -0.49 1.54 -0.37 1.61 -0.22 1.67 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.33 1.39 0.48 1.25 0.58 1.13 0.7 1.02 0.78 0.89 0.91 1.48 2.02 
+1.06 2.34 0.67 2.56 0.35 2.73 -4.5 0 -0.45 -2.43 -0.63 -2.04 -0.85 -1.67 -1.06 -1.35 
+-1.29 -0.99 -1.54 -0.72 -1.82 -0.39 -2.09 -0.13 -1.45 0.07 -1.34 0.21 -1.24 0.34 -1.12 0.46 
+-1.04 0.61 -0.93 0.7 -1.61 1.71 -1.22 2.11 -0.84 2.41 -0.5 2.69 -0.17 2.91 0.22 3.19 
+0.65 2.82 1.04 2.43 1.39 2.04 1.7 1.61 1.96 1.18 2.17 0.71 2.36 0.26 1.74 -0.13 
+1.63 -0.39 1.5 -0.61 1.34 -0.84 1.13 -1.07 0.91 -1.28 0.63 -1.5 0.34 -1.67 4.5 0 f*
+2949.85 3315.23 5.73 0 12.24 -34.92 -4.99 0 -3.5 10.22 -13.74 0 -3.49 -10.22 -4.99 0 
+10.98 29.95 4.49 0 -5.73 -15.73 11.21 0 -5.49 15.73 -4.49 0 1.76 4.97 f*
+2972.05 3315.23 6.25 0 10.22 -30.42 10.21 30.42 6.25 0 0 -34.92 -4.25 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.72 29.19 0 -29.19 -4.25 0 0 34.92 f*
+3013.48 3314.23 17.71 0 0 -3.97 -14.21 0 -1.26 -9.74 1.24 0.87 1.45 0.71 1.74 0.48 
+2.06 0.2 1.76 -0.15 1.83 -0.46 1.8 -0.8 1.67 -1.15 1.47 -1.56 1.17 -2 0.43 -1.15 
+0.33 -1.28 0.2 -1.41 0.09 -1.52 -0.2 -2.39 -0.57 -2.28 -0.91 -2.06 -1.3 -1.82 -1.65 -1.52 
+-2.02 -1.17 -2.36 -0.74 -2.74 -0.26 -2.52 0.2 -2.14 0.54 -1.8 0.89 -1.47 1.15 -1.2 1.41 
+-0.93 1.61 -0.67 1.78 -0.48 1.91 4.23 0 0.43 -1.24 0.56 -1.12 0.65 -0.98 0.79 -0.82 
+0.91 -0.68 1.02 -0.49 1.13 -0.31 1.25 -0.09 1.7 0.13 1.52 0.37 1.32 0.65 1.11 0.91 
+0.89 1.15 0.65 1.41 0.42 1.67 0.13 1.93 -0.11 1.41 -0.33 1.41 -0.54 1.35 -0.8 1.23 
+-1.02 1.05 -1.3 0.82 -1.56 0.52 -1.83 0.2 -1.82 -0.2 -1.5 -0.58 -1.48 -1 -1.7 -1.46 
+-3.73 0 2.49 18.45 f*
+2754.71 3353.21 -14.74 0 0 -4 10.48 0 0 -2.25 -0.2 -1.7 -0.57 -1.66 -0.91 -1.59 
+-1.26 -1.43 -1.54 -1.21 -1.84 -0.93 -2.09 -0.57 -2.32 -0.13 -1.59 0.09 -1.47 0.21 -1.35 0.37 
+-1.23 0.5 -1.13 0.63 -1.02 0.74 -0.91 0.84 -0.82 0.96 -1.3 2.15 -0.93 2.45 -0.54 2.7 
+-0.18 2.84 0.24 3.04 0.71 2.71 1.15 2.39 1.52 2.02 1.82 1.63 2.13 1.19 2.36 0.74 
+2.54 0.26 1.24 -0.09 1.41 -0.24 1.48 -0.45 1.47 -0.7 1.39 -0.95 1.21 -1.26 0.93 -1.58 
+0.59 -1.98 4.75 0 -0.35 1.5 -0.69 1.73 -1.06 1.87 -1.5 1.82 -1.93 1.7 -1.15 0.72 
+-1.28 0.65 -1.43 0.52 -1.54 0.39 -1.7 0.26 -1.84 0.09 -1.93 -0.09 -1.82 -0.26 -1.72 -0.43 
+-1.61 -0.58 -1.52 -0.74 -1.39 -0.89 -1.28 -1.02 -1.15 -1.13 -1.04 -1.28 -0.91 -1.37 -0.78 -1.47 
+-0.65 -1.59 -0.5 -1.67 -0.37 -1.74 -0.24 -1.82 -0.06 -1.89 0.09 -2.34 0.24 -2.17 0.43 -2.02 
+0.57 -1.82 0.7 -1.67 0.84 -1.52 0.98 -1.37 1.08 -1.2 1.2 -1.04 1.3 -0.89 1.41 -0.76 
+1.47 -0.61 1.56 -0.48 1.65 -0.33 3.45 -0.26 2.58 0.26 1.39 0.35 1.41 0.52 1.43 0.7 
+1.43 0.91 1.39 1.13 1.34 1.37 1 -4.23 3 0 0 18.46 f*
+2762.93 3334.75 4.49609 34.9375 re
+f*
+2800.37 3359.44 -0.06 1.33 -0.21 1.21 -0.33 1.15 -0.43 1.04 -1.22 1.84 -1.61 1.52 -1.93 1.15 
+-2.21 0.83 -2.41 0.5 -2.56 0.17 -2.97 -0.2 -2.56 -0.57 -2.14 -0.91 -1.74 -1.2 -1.34 -1.49 
+-0.96 -1.76 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.35 -1.45 0.54 -1.22 0.74 -1 0.84 -0.84 
+0.98 -0.67 2.17 -1.08 11.21 -3 2.37 -1.02 0.87 -0.59 0.67 -0.63 0.5 -0.67 0.33 -0.74 
+0.2 -0.76 0.07 -0.83 -0.11 -1.19 -0.3 -1.11 -0.58 -1.02 -0.87 -0.89 -1.22 -0.74 -1.56 -0.56 
+-1.96 -0.35 -2.39 -0.13 -2.43 0.17 -2.04 0.52 -1.67 0.78 -1.34 1.02 -1 1.21 -0.72 1.34 
+-0.39 1.43 -0.13 1.5 -4.49 0 0.19 -2.45 0.65 -2.26 1.08 -2.04 1.52 -1.76 1.99 -1.45 
+2.43 -1.09 2.93 -0.7 3.41 -0.24 3.17 0.21 2.73 0.61 2.3 0.97 1.91 1.29 1.47 1.56 
+1.05 1.78 0.63 1.95 0.22 2.11 -0.15 1.7 -0.45 1.54 -0.7 1.34 -0.89 1.2 -1.05 1 
+-1.2 0.84 -1.25 0.65 -1.3 0.45 -11.22 3 -1.98 1.02 -1.13 0.98 -0.32 0.54 -0.2 0.63 
+-0.13 1.58 0.15 1.32 0.46 1.15 0.71 0.98 0.96 0.82 1.15 0.63 1.31 0.46 1.45 0.28 
+1.54 0.09 2.04 -0.12 1.76 -0.39 1.5 -0.63 1.23 -0.84 0.96 -1.02 0.7 -1.2 0.41 -1.32 
+0.16 -1.46 4.49 0 f*
+2832.31 3359.44 -0.06 1.33 -0.21 1.21 -0.33 1.15 -0.43 1.04 -1.24 1.84 -1.59 1.52 -1.93 1.15 
+-2.21 0.83 -2.41 0.5 -2.56 0.17 -2.97 -0.2 -2.56 -0.57 -2.14 -0.91 -1.74 -1.2 -1.35 -1.49 
+-0.95 -1.76 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.34 -1.45 0.55 -1.22 0.71 -1 0.87 -0.84 
+0.98 -0.67 2.15 -1.08 11.24 -3 2.37 -1.02 0.84 -0.59 0.67 -0.63 0.5 -0.67 0.35 -0.74 
+0.19 -0.76 0.07 -0.83 -0.11 -1.19 -0.33 -1.11 -0.56 -1.02 -0.86 -0.89 -1.22 -0.74 -1.56 -0.56 
+-1.96 -0.35 -2.39 -0.13 -2.43 0.17 -2.04 0.52 -1.7 0.78 -1.32 1.02 -1.02 1.21 -0.7 1.34 
+-0.41 1.43 -0.13 1.5 -4.49 0 0.21 -2.45 0.65 -2.26 1.09 -2.04 1.52 -1.76 1.97 -1.45 
+2.46 -1.09 2.93 -0.7 3.4 -0.24 3.15 0.21 2.73 0.61 2.32 0.97 1.91 1.29 1.45 1.56 
+1.07 1.78 0.63 1.95 0.22 2.11 -0.15 1.7 -0.45 1.54 -0.7 1.34 -0.89 1.2 -1.07 1 
+-1.17 0.84 -1.25 0.65 -1.3 0.45 -11.24 3 -1.95 1.02 -1.13 0.98 -0.32 0.54 -0.2 0.63 
+-0.12 1.58 0.15 1.32 0.46 1.15 0.71 0.98 0.96 0.82 1.15 0.63 1.3 0.46 1.45 0.28 
+1.54 0.09 2.04 -0.12 1.75 -0.39 1.5 -0.63 1.23 -0.84 0.96 -1.02 0.69 -1.2 0.41 -1.32 
+0.15 -1.46 4.49 0 f*
+2837.54 3346.22 11.4805 3.49219 re
+f*
+2855.77 3369.68 24.2 0 0 -4 -19.71 0 0 -11.24 18.97 0 0 -3.99 ^ 
+0 -11.72 20.46 0 0 -3.99 -24.95 0 0 34.94 f*
+2885.72 3356.95 4.23 0 0.11 1.71 0.33 1.54 0.52 1.37 0.76 1.15 0.98 0.93 1.2 0.72 
+1.43 0.41 1.67 0.16 1.29 -0.11 1.21 -0.35 1.09 -0.54 0.98 -0.74 0.8 -0.93 0.61 -1.11 
+0.39 -1.29 0.13 -1.43 -0.11 -1.43 -0.37 -1.22 -0.58 -1.04 -0.85 -0.91 -1.08 -0.89 -1.32 -0.89 
+-3.43 -2.11 -2.89 -1.67 -2.37 -1.71 -1.86 -1.76 -1.41 -1.8 -1.05 -1.89 -0.67 -1.99 -0.37 -2.13 
+-0.11 -2.25 22.7 0 0 3.99 -17.96 0 0.45 1.54 0.61 1.26 0.8 1.08 1.02 0.98 
+2.73 1.86 3.86 2.26 2.26 1.11 1.84 1.24 1.52 1.37 1.2 1.43 0.87 1.49 0.61 1.54 
+0.35 1.52 0.11 1.52 -0.24 2.09 -0.63 1.87 -1.02 1.65 -1.37 1.43 -1.63 1.15 -1.87 0.84 
+-2.04 0.52 -2.2 0.2 -2.34 -0.17 -2.14 -0.55 -1.91 -0.89 -1.65 -1.25 -1.35 -1.65 -1 -2.02 
+-0.62 -2.41 -0.2 -2.8 f*
+2912.16 3346.22 11.4766 3.49219 re
+f*
+2930.38 3369.68 17.21 0 1.78 -0.15 1.73 -0.46 1.65 -0.76 1.48 -1.04 1.25 -1.34 0.98 -1.63 
+0.63 -1.91 0.24 -2.19 -0.11 -1.43 -0.26 -1.3 -0.48 -1.17 -0.63 -1.07 -0.8 -0.95 -1 -0.85 
+-1.15 -0.78 -1.32 -0.69 1.65 -0.74 1.2 -0.93 0.84 -1.09 0.57 -1.23 0.3 -1.37 0.15 -1.52 
+0.05 -3.34 0.2 -2.37 0.36 -1.65 0.63 -1.15 1.05 -0.82 0 -1 -5.49 0 -0.57 1.52 
+-0.3 1.67 -0.11 2.49 -0.02 4.04 -0.11 1.3 -0.32 1.11 -0.48 0.91 -0.65 0.71 -0.74 0.54 
+-0.85 0.38 -0.91 0.24 -0.93 0.06 -12.22 0 0 -14.97 -4.49 0 0 30.94 ^ 
+0 -11.98 12.22 0 1.17 0.09 1.06 0.25 0.93 0.44 0.8 0.63 0.65 0.82 0.48 1.02 
+0.28 1.25 0.11 1.48 -0.11 1.41 -0.3 1.22 -0.5 1.02 -0.67 0.85 -0.87 0.65 -1.02 0.48 
+-1.17 0.29 -1.34 0.08 -16.21 0 0 4 f*
+2959.83 3326.26 28.6914 2.23438 re
+f*
+3019.21 3358.7 -0.7 2.87 -1.02 2.41 -1.3 1.97 -1.58 1.59 -1.89 1.17 -2.12 0.85 -2.43 0.47 
+-2.67 0.16 -1.82 -0.09 -1.71 -0.26 -1.63 -0.43 -1.5 -0.58 -1.41 -0.76 -1.3 -0.87 -1.2 -1.04 
+-1.06 -1.15 -0.95 -1.28 -0.85 -1.39 -0.73 -1.5 -0.61 -1.61 -0.84 -3.47 -0.35 -3.79 0.09 -2.17 
+0.24 -2.04 0.37 -1.91 0.54 -1.78 0.65 -1.62 0.8 -1.5 0.91 -1.35 1.02 -1.21 1.13 -1.08 
+1.22 -0.93 1.32 -0.81 1.39 -0.62 1.48 -0.52 1.54 -0.37 1.61 -0.21 1.67 -0.07 1.8 0.07 
+1.65 0.21 1.52 0.35 1.39 0.45 1.25 0.59 1.13 0.69 1.02 0.81 0.89 0.89 1.48 2.04 
+1.06 2.32 0.67 2.56 0.35 2.73 -4.5 0 -0.46 -2.41 -0.62 -2.06 -0.84 -1.67 -1.07 -1.35 
+-1.28 -1 -1.54 -0.69 -1.8 -0.42 -2.11 -0.13 -1.45 0.07 -1.33 0.22 -1.25 0.34 -1.13 0.48 
+-1.05 0.59 -0.93 0.7 -1.61 1.73 -1.22 2.09 -0.84 2.43 -0.5 2.69 -0.17 2.89 0.21 3.19 
+0.67 2.82 1.05 2.45 1.37 2.02 1.69 1.63 1.96 1.17 2.16 0.71 2.37 0.24 1.74 -0.12 
+1.63 -0.37 1.5 -0.62 1.34 -0.85 1.13 -1.07 0.91 -1.28 0.63 -1.5 0.34 -1.67 4.5 0 f*
+3053.91 3358.7 -0.72 2.87 -1.02 2.41 -1.3 1.97 -1.59 1.59 -1.86 1.17 -2.15 0.85 -2.41 0.47 
+-2.69 0.16 -1.82 -0.09 -1.71 -0.26 -1.61 -0.43 -1.52 -0.58 -1.41 -0.76 -1.3 -0.87 -1.17 -1.04 
+-1.08 -1.15 -0.96 -1.28 -0.85 -1.39 -0.73 -1.5 -0.61 -1.61 -0.85 -3.47 -0.35 -3.79 0.09 -2.17 
+0.24 -2.04 0.39 -1.91 0.52 -1.78 0.67 -1.62 0.79 -1.5 0.91 -1.35 1.02 -1.21 1.13 -1.08 
+1.21 -0.93 1.33 -0.81 1.41 -0.62 1.47 -0.52 1.55 -0.37 1.61 -0.21 1.64 -0.07 1.8 0.07 
+1.67 0.21 1.52 0.35 1.37 0.45 1.26 0.59 1.15 0.69 1 0.81 0.91 0.89 1.46 2.04 
+1.06 2.32 0.7 2.56 0.35 2.73 -4.5 0 -0.45 -2.41 -0.65 -2.06 -0.84 -1.67 -1.04 -1.35 
+-1.3 -1 -1.54 -0.69 -1.8 -0.42 -2.11 -0.13 -1.43 0.07 -1.35 0.22 -1.23 0.34 -1.15 0.48 
+-1.02 0.59 -0.96 0.7 -1.58 1.73 -1.22 2.09 -0.87 2.43 -0.5 2.69 -0.17 2.89 0.24 3.19 
+0.65 2.82 1.04 2.45 1.39 2.02 1.67 1.63 1.95 1.17 2.2 0.71 2.34 0.24 1.74 -0.12 
+1.65 -0.37 1.5 -0.62 1.33 -0.85 1.15 -1.07 0.89 -1.28 0.65 -1.5 0.35 -1.67 4.49 0 f*
+601.11 3529.05 0.26 3.13 0.37 1.54 0.5 1.52 0.66 1.47 0.82 1.43 0.98 1.35 1.15 1.26 
+1.34 1.18 1.52 1.04 1.7 0.93 1.89 0.81 2.11 0.63 2.28 0.48 2.52 0.3 2.71 0.11 
+2.93 -0.15 3.23 -0.43 3.28 -0.81 3.16 -1.21 1.46 -0.8 1.37 -0.91 1.21 -1.06 1.04 -1.21 
+0.87 -1.34 0.65 -1.52 0.41 -1.7 0.13 -1.84 0 -33.29 0.2 -0.91 0.5 -0.8 0.74 -0.67 
+0.91 -0.52 1.02 -0.35 1.02 -0.17 1 0.05 0.87 0.28 0 -6.25 -2.02 -0.45 -3.19 -0.07 
+-2.26 0.07 -1.76 0.19 -1.37 0.37 -1.04 0.61 -0.82 0.87 -0.71 1.19 -1.39 3.47 -4.43 -3.25 
+-1.91 -1.17 -1.85 -0.91 -1.9 -0.65 -2.05 -0.45 -2.32 -0.24 -2.69 -0.09 -2.34 0.09 -2.11 0.24 
+-1.93 0.39 -1.72 0.54 -1.54 0.65 -1.34 0.78 -1.2 0.89 -1.02 0.98 -0.89 1.07 -0.71 1.13 
+-0.61 1.21 -0.46 1.25 -0.61 2.63 -0.17 2.71 7.79 0 0.2 -1.52 0.57 -1.46 0.91 -1.32 
+1.26 -1.15 1.56 -0.98 1.87 -0.74 2.15 -0.48 2.41 -0.15 3.5 0.43 3.04 0.89 2.58 1.26 
+2.13 1.49 1.66 1.7 1.22 1.75 0.71 1.74 0.24 1.65 0 10.39 -3.9 -1.46 -3.23 -0.76 
+-9.51 -1.43 -2.78 -0.85 -2.2 -0.98 -1.62 -1.11 -1.19 -1.21 -0.78 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.07 -1.54 -7.79 0 0.22 3.88 0.65 3.17 0.48 1.35 0.61 1.17 0.7 1.06 0.8 0.93 
+0.89 0.82 1.02 0.74 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.06 3.23 0.89 1.17 0.48 
+0.91 0.52 0.67 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.15 0.89 -0.46 1.04 
+-0.83 1.11 -1.17 1.11 -1.56 1.02 -1.97 0.82 -2.41 0.57 -2.89 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.71 -1.25 -1.31 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+654.12 3564.93 5.21 0 3.99 -6.1 3.43 -6.2 2.86 -6.21 2.32 -6.18 1.79 -6.08 1.25 -5.92 
+0.74 -5.71 0.24 -5.43 -0.26 -5.45 -0.8 -5.73 -1.3 -5.92 -1.84 -6.04 -2.37 -6.03 -2.84 -5.92 
+-3.37 -5.73 -1.87 -2.78 -1.97 -2.67 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.56 1.91 5.64 
+1.49 5.77 1.09 5.93 0.65 6.1 0.21 6.32 -0.2 6.14 -0.61 6.01 -1 5.9 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+782.01 3530.62 -30.67 0 0 -8.31 21.84 0 0 -4.69 -0.11 -1.76 -0.3 -1.78 -0.5 -1.75 
+-0.67 -1.74 -0.87 -1.69 -1.06 -1.61 -1.21 -1.54 -1.37 -1.46 -1.54 -1.32 -1.7 -1.2 -1.84 -1.04 
+-1.97 -0.89 -2.13 -0.68 -2.23 -0.5 -2.37 -0.26 -2.48 -0.02 -3.29 0.15 -3.04 0.48 -2.82 0.76 
+-2.59 1.04 -2.34 1.3 -2.13 1.54 -1.9 1.78 -1.7 1.98 -1.48 2.15 -1.28 2.34 -1.06 2.49 
+-0.85 2.63 -0.67 2.74 -0.48 2.84 -0.26 2.93 -0.11 3 0.13 3.23 0.39 3.08 0.63 2.93 
+0.87 2.75 1.09 2.58 1.28 2.38 1.5 2.22 1.67 1.99 1.82 1.8 2 1.59 2.14 1.34 
+2.28 1.13 2.39 0.91 2.52 0.63 2.61 0.39 2.69 0.15 2.59 -0.17 2.93 -0.52 3.1 -0.93 
+3.09 -1.43 1.48 -0.93 1.41 -1.06 1.33 -1.24 1.2 -1.39 1.06 -1.56 0.89 -1.76 0.71 -1.95 
+0.5 -2.13 9.87 0 -0.71 3.08 -0.61 1.78 -0.82 1.87 -1 1.91 -1.21 1.95 -1.43 1.95 
+-1.67 1.89 -1.88 1.8 -2.15 1.67 -2.41 1.52 -2.66 1.34 -2.95 1.09 -3.23 0.82 -3.54 0.52 
+-3.85 0.2 -3.99 -0.2 -3.8 -0.54 -3.58 -0.89 -3.37 -1.24 -3.14 -1.52 -2.91 -1.84 -2.64 -2.11 
+-2.43 -2.39 -2.15 -2.64 -1.91 -2.87 -1.62 -3.08 -1.34 -3.27 -1.07 -3.47 -0.76 -3.65 -0.48 -3.8 
+-0.15 -3.93 0.17 -4.88 0.54 -4.54 0.85 -4.17 1.19 -3.84 1.48 -3.47 1.73 -3.14 2.05 -2.82 
+2.25 -2.5 2.5 -2.19 2.73 -1.87 2.91 -1.56 3.08 -1.28 3.28 -0.97 3.41 -0.7 3.54 -0.39 
+3.64 -0.15 2.63 0.13 2.78 0.42 2.89 0.71 2.95 1.09 2.97 1.47 2.97 1.89 2.89 2.37 
+2.8 2.84 2.09 -8.83 6.23 0 0 38.48 f*
+796.05 3544.66 7.29 0 0 -9.89 3.17 4.25 2.87 3.09 2.6 2.08 1.22 0.71 1.13 0.55 
+2.06 0.54 1.79 0.04 1.56 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.37 -0.74 -1.22 -0.87 -1.06 -0.96 -0.93 -1.08 -0.79 -1.2 -0.67 -1.28 -0.52 -1.41 
+-0.41 -1.5 -0.28 -1.61 -0.22 -3.5 0 -29.12 -8.33 0 0 52.52 f*
+872.48 3508.27 -0.57 -2.45 -0.72 -2.23 -0.87 -2.07 -1 -1.88 -1.12 -1.7 -1.23 -1.54 -1.35 -1.37 
+-1.47 -1.19 -1.54 -1.05 -1.65 -0.89 -1.74 -0.74 -1.8 -0.61 -1.89 -0.43 -1.93 -0.33 -3.99 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.26 0.89 -2.08 1.13 -1.93 1.32 -1.73 1.52 -1.58 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.87 2.41 -0.65 2.54 -0.5 2.69 -0.28 2.84 -0.09 2.95 
+0.18 4.28 0.5 3.84 0.82 3.45 1.07 3.06 1.32 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.91 1.48 1.99 1.21 2.05 0.96 2.04 0.75 1.99 0.54 1.96 0.38 3.6 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.38 -1.7 -1.11 -1.04 -1.05 -1.17 -0.95 -1.32 -0.87 -1.46 
+-0.74 -1.61 -0.59 -1.76 -0.45 -1.91 -0.29 -2.06 30.66 0 -0.11 2.14 -0.33 1.98 -0.5 1.8 
+-0.69 1.63 -0.82 1.48 -0.93 1.32 -1.06 1.15 -1.14 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.12 0.19 0.52 7.81 1.79 -0.06 1.88 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.82 -1.25 1.76 -1.55 1.65 -1.84 1.52 -2.14 1.34 -2.5 1.17 -2.86 0.93 -3.26 0.72 -3.64 
+0.45 -4.11 0.15 -4.53 -39 0 0.17 -2.71 0.59 -2.98 1.04 -3.04 0.71 -1.48 0.87 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.68 -0.8 1.84 -0.59 2.02 -0.37 2.25 -0.13 
+2.26 0.2 2.11 0.54 1.95 0.93 1.8 1.24 1.61 1.58 1.46 1.87 1.25 2.15 1.07 2.41 
+8.34 0 f*
+928.11 3508.27 -0.57 -2.45 -0.72 -2.23 -0.86 -2.07 -1 -1.88 -1.11 -1.7 -1.26 -1.54 -1.34 -1.37 
+-1.46 -1.19 -1.56 -1.05 -1.65 -0.89 -1.73 -0.74 -1.8 -0.61 -1.86 -0.43 -1.93 -0.33 -4.02 -0.26 
+-2.75 0.21 -2.58 0.46 -2.43 0.7 -2.25 0.89 -2.09 1.13 -1.91 1.32 -1.75 1.52 -1.59 1.72 
+-1.39 1.89 -1.21 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.3 2.84 -0.09 2.95 
+0.18 4.28 0.52 3.84 0.8 3.45 1.09 3.06 1.3 2.71 1.52 2.39 1.67 2.04 1.82 1.75 
+1.93 1.48 1.99 1.21 2.02 0.96 2.05 0.75 2.02 0.54 1.95 0.38 3.59 0.28 -0.52 -7.81 
+-2.28 -0.21 -2.43 -0.7 -2.48 -1.17 -2.37 -1.7 -1.13 -1.04 -1.04 -1.17 -0.96 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.76 -0.46 -1.91 -0.28 -2.06 30.68 0 -0.12 2.14 -0.31 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.95 1.32 -1.07 1.15 -1.12 1.02 -2.43 1.63 -2.52 1.13 -2.41 0.63 
+-2.13 0.19 0.52 7.81 1.8 -0.06 1.87 -0.21 1.91 -0.37 1.93 -0.56 1.93 -0.79 1.91 -1 
+1.84 -1.25 1.76 -1.55 1.63 -1.84 1.52 -2.14 1.34 -2.5 1.18 -2.86 0.95 -3.26 0.7 -3.64 
+0.46 -4.11 0.15 -4.53 -39 0 0.2 -2.71 0.56 -2.98 1.07 -3.04 0.71 -1.48 0.85 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.12 1.48 -0.96 1.66 -0.8 1.85 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.54 1.95 0.93 1.78 1.24 1.63 1.58 1.43 1.87 1.26 2.15 1.08 2.41 
+8.32 0 f*
+940.58 3544.66 7.79 0 0 -8.33 2.17 2.67 2.19 2.17 2.21 1.71 2.19 1.32 2.19 0.93 
+2.13 0.63 2.09 0.35 2 0.11 2.95 -0.24 2.93 -0.72 2.8 -1.11 2.56 -1.52 2.2 -1.89 
+0.91 -1.06 0.79 -1.15 0.63 -1.24 0.48 -1.28 0.3 -1.37 0.09 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.07 1.13 -0.22 1.04 -0.76 1.84 -1.16 1.52 -1.5 1.22 -1.7 0.93 -1.82 0.65 
+-1.87 0.38 -1.82 0.13 -1.28 -0.07 -1.26 -0.21 -2.5 -0.84 -2.39 -1.37 -2.13 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.78 -1.34 -0.66 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.31 0 0 52.52 f*
+996.199 3492.14 8.3125 72.7891 re
+f*
+1018.04 3529.05 0.28 3.13 0.34 1.54 0.5 1.52 0.67 1.47 0.81 1.43 1 1.35 1.15 1.26 
+1.32 1.18 1.52 1.04 1.69 0.93 1.91 0.81 2.08 0.63 2.3 0.48 2.49 0.3 2.73 0.11 
+2.93 -0.15 3.21 -0.43 3.3 -0.81 3.15 -1.21 1.47 -0.8 1.35 -0.91 1.21 -1.06 1.07 -1.21 
+0.86 -1.34 0.63 -1.52 0.42 -1.7 0.15 -1.84 0 -33.29 0.17 -0.91 0.5 -0.8 0.76 -0.67 
+0.91 -0.52 1 -0.35 1.04 -0.17 0.98 0.05 0.86 0.28 0 -6.25 -2.02 -0.45 -3.17 -0.07 
+-2.25 0.07 -1.78 0.19 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.7 1.19 -1.39 3.47 -4.45 -3.25 
+-1.91 -1.17 -1.84 -0.91 -1.89 -0.65 -2.06 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.39 -1.71 0.54 -1.54 0.65 -1.37 0.78 -1.17 0.89 -1.04 0.98 -0.87 1.07 -0.74 1.13 
+-0.59 1.21 -0.48 1.25 -0.58 2.63 -0.2 2.71 7.81 0 0.19 -1.52 0.57 -1.46 0.91 -1.32 
+1.25 -1.15 1.57 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.89 2.61 1.26 
+2.12 1.49 1.67 1.7 1.2 1.75 0.72 1.74 0.26 1.65 0 10.39 -3.93 -1.46 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.85 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.21 -1.48 
+-0.07 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.35 0.58 1.17 0.7 1.06 0.8 0.93 
+0.91 0.82 1 0.74 2.32 1.2 2.73 0.98 3.1 0.82 13.52 2.06 3.25 0.89 1.17 0.48 
+0.91 0.52 0.65 0.57 0.46 0.56 0.24 0.57 0.09 0.58 0 4.69 -0.16 0.89 -0.47 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -1.98 0.82 -2.43 0.57 -2.87 0.19 -3.08 -0.24 -2.61 -0.63 
+-2.15 -1 -1.73 -1.25 -1.3 -1.43 -0.91 -1.58 -0.52 -1.61 -0.17 -1.61 -8.33 0 f*
+1074.2 3544.66 7.79 0 0 -8.33 2.17 2.67 2.2 2.17 2.21 1.71 2.19 1.32 2.18 0.93 
+2.14 0.63 2.06 0.35 2 0.11 2.95 -0.24 2.95 -0.72 2.8 -1.11 2.54 -1.52 2.2 -1.89 
+0.93 -1.06 0.78 -1.15 0.63 -1.24 0.48 -1.28 0.28 -1.37 0.11 -1.43 0 -41.08 -8.31 0 
+0 37.43 -0.09 1.13 -0.2 1.04 -0.79 1.84 -1.17 1.52 -1.47 1.22 -1.69 0.93 -1.85 0.65 
+-1.86 0.38 -1.8 0.13 -1.29 -0.07 -1.28 -0.21 -2.49 -0.84 -2.37 -1.37 -2.15 -1.85 -0.95 -1.11 
+-0.87 -1.21 -0.76 -1.34 -0.65 -1.41 -0.52 -1.55 -0.39 -1.62 -0.24 -1.71 -0.08 -1.8 0 -30.17 
+-8.32 0 0 52.52 f*
+1163.61 3564.93 8.31 0 0 -72.79 -7.27 0 0 6.77 -1.41 -1.91 -1.5 -1.75 -1.65 -1.59 
+-1.88 -1.39 -2.13 -1.13 -2.48 -0.87 -2.84 -0.54 -3.28 -0.2 -3.17 0.21 -2.87 0.57 -2.58 0.93 
+-2.32 1.22 -2.08 1.52 -1.82 1.73 -1.59 1.93 -1.37 2.08 -1.17 2.23 -0.98 2.32 -0.79 2.37 
+-0.61 2.41 -0.48 2.37 -0.3 2.34 -0.24 4.37 8.83 0 0.09 -2.04 0.21 -2 0.34 -1.93 
+0.48 -1.88 0.61 -1.8 0.72 -1.71 0.82 -1.63 0.96 -1.5 1.04 -1.37 1.16 -1.23 1.25 -1.07 
+1.32 -0.91 1.41 -0.74 1.48 -0.54 1.56 -0.33 1.63 -0.11 1.46 0.09 1.41 0.26 1.37 0.46 
+1.34 0.61 1.26 0.78 1.19 0.96 1.14 1.11 1.04 1.26 0.95 1.41 0.84 1.58 0.76 1.69 
+0.63 1.87 0.5 1.98 0.37 2.13 0.22 2.23 0.08 2.39 -0.17 2.36 -0.3 2.24 -0.43 2.11 
+-0.56 1.95 -0.68 1.8 -0.76 1.67 -0.89 1.52 -0.96 1.37 -1.02 1.22 -1.12 1.04 -1.17 0.91 
+-1.22 0.74 -1.25 0.58 -1.33 0.43 -1.32 0.24 -1.37 0.09 -1.28 -0.09 -1.3 -0.28 -1.32 -0.48 
+-1.3 -0.63 -1.29 -0.82 -1.25 -0.95 -1.2 -1.13 -1.13 -1.26 -1.07 -1.41 -0.95 -1.54 -0.85 -1.67 
+-0.74 -1.8 -0.58 -1.89 -0.46 -2.02 -0.26 -2.11 -0.11 -2.19 -8.83 0 0.18 3.73 0.46 3.45 
+0.74 3.12 0.97 2.84 1.2 2.59 1.37 2.28 1.54 2.04 1.67 1.78 1.78 1.54 1.87 1.3 
+1.88 1.06 1.93 0.87 1.91 0.65 1.87 0.46 1.8 0.29 1.71 0.08 1.69 -0.11 1.91 -0.33 
+2.06 -0.56 2.15 -0.83 2.13 -1.12 2.06 -1.46 1.91 -1.78 1.69 -2.15 0 27.04 f*
+Q q
+599.543 997.371 2540.76 952.801 re
+Y*
+222 176 255 rG
+695.42 1230.29 0 201.41 47.94 11.87 47.94 31.05 47.93 -43.67 47.94 62.14 47.94 21.41 47.94 -78.71 
+47.94 52.7 47.94 -11.27 47.94 34.07 47.94 14.93 47.94 33.61 47.94 -33.7 47.94 -27.49 47.93 15.6 
+47.94 27.7 47.94 -67.21 47.94 4.77 47.94 14.76 47.94 21.33 47.94 50.11 47.96 28.84 47.94 -57.08 
+47.94 0.46 47.93 -36.07 47.94 59.85 47.94 2.15 47.94 73.11 47.94 -44.96 47.94 -2.14 47.94 -11.83 
+47.94 -33.38 47.94 25.07 47.94 15.41 47.93 26.93 47.94 10.68 47.94 30.57 47.94 -22.46 47.94 41.06 
+47.94 7.27 47.94 -72.31 47.94 -38.76 47.94 41.56 47.94 -38.73 47.94 -1.61 47.93 10.98 47.94 -32.64 
+47.94 31.82 47.94 -13.09 47.94 -11.42 0 -224.58 -47.94 4.95 -47.94 27.04 -47.94 -17.38 -47.94 8.96 
+-47.93 87.28 -47.94 -55.57 -47.94 49.35 -47.94 1.08 -47.94 -8.91 -47.94 34.78 -47.94 22.34 -47.94 -48.96 
+-47.94 21.94 -47.94 1.63 -47.94 -40.75 -47.93 -16.37 -47.94 32.12 -47.94 -19.88 -47.94 -61.13 -47.94 43.02 
+-47.94 40.69 -47.94 37.59 -47.94 -107.57 -47.94 10.75 -47.94 -9.81 -47.93 -33.59 -47.94 10.89 -47.94 30.88 
+-47.96 -28.61 -47.94 -23.57 -47.94 19.47 -47.94 -4.26 -47.94 -12.37 -47.94 -2.49 -47.94 6.96 -47.93 2.91 
+-47.94 2.21 -47.94 27.84 -47.94 -6.99 -47.94 -60.79 -47.94 8.16 -47.94 -15.54 -47.94 -31.55 -47.94 17.16 
+-47.94 2.43 -47.94 7.7 -47.93 5.63 -47.94 -35.37 -47.94 -24.39 f*
+695.42 1230.29 0 201.41 47.94 11.87 47.94 31.05 47.93 -43.67 47.94 62.14 47.94 21.41 47.94 -78.71 
+47.94 52.7 47.94 -11.27 47.94 34.07 47.94 14.93 47.94 33.61 47.94 -33.7 47.94 -27.49 47.93 15.6 
+47.94 27.7 47.94 -67.21 47.94 4.77 47.94 14.76 47.94 21.33 47.94 50.11 47.96 28.84 47.94 -57.08 
+47.94 0.46 47.93 -36.07 47.94 59.85 47.94 2.15 47.94 73.11 47.94 -44.96 47.94 -2.14 47.94 -11.83 
+47.94 -33.38 47.94 25.07 47.94 15.41 47.93 26.93 47.94 10.68 47.94 30.57 47.94 -22.46 47.94 41.06 
+47.94 7.27 47.94 -72.31 47.94 -38.76 47.94 41.56 47.94 -38.73 47.94 -1.61 47.93 10.98 47.94 -32.64 
+47.94 31.82 47.94 -13.09 47.94 -11.42 0 -224.58 -47.94 4.95 -47.94 27.04 -47.94 -17.38 -47.94 8.96 
+-47.93 87.28 -47.94 -55.57 -47.94 49.35 -47.94 1.08 -47.94 -8.91 -47.94 34.78 -47.94 22.34 -47.94 -48.96 
+-47.94 21.94 -47.94 1.63 -47.94 -40.75 -47.93 -16.37 -47.94 32.12 -47.94 -19.88 -47.94 -61.13 -47.94 43.02 
+-47.94 40.69 -47.94 37.59 -47.94 -107.57 -47.94 10.75 -47.94 -9.81 -47.93 -33.59 -47.94 10.89 -47.94 30.88 
+-47.96 -28.61 -47.94 -23.57 -47.94 19.47 -47.94 -4.26 -47.94 -12.37 -47.94 -2.49 -47.94 6.96 -47.93 2.91 
+-47.94 2.21 -47.94 27.84 -47.94 -6.99 -47.94 -60.79 -47.94 8.16 -47.94 -15.54 -47.94 -31.55 -47.94 17.16 
+-47.94 2.43 -47.94 7.7 -47.93 5.63 -47.94 -35.37 -47.94 -24.39 f*
+245 186 r5
+695.42 1310.57 0 126.37 47.94 63.91 47.94 148.81 47.93 -122.88 47.94 175.54 47.94 -78.32 47.94 -9.27 
+47.94 -29.08 47.94 133 47.94 -227.95 47.94 146.38 47.94 203.86 47.94 -389.34 47.94 291.58 47.93 -20.7 
+47.94 -18.05 47.94 -5.69 47.94 -27.75 47.94 -59.72 47.94 326.39 47.94 -115.99 47.96 -261 47.94 -162.61 
+47.94 60.88 47.93 44.16 47.94 152.45 47.94 -12.52 47.94 -0.24 47.94 -74.52 47.94 164.2 47.94 -141.93 
+47.94 -123.59 47.94 -82.23 47.94 -31.49 47.93 -10.27 47.94 238.59 47.94 88.91 47.94 71.66 47.94 -45.98 
+47.94 9.66 47.94 -79.84 47.94 -224.79 47.94 -32.75 47.94 152.43 47.94 -76.93 47.93 -23.54 47.94 -43.84 
+47.94 238.57 47.94 -166.69 47.94 55.73 0 -301.65 -47.94 -110.66 -47.94 293.6 -47.94 -153.17 -47.94 -39.11 
+-47.93 -183.25 -47.94 198.09 -47.94 49.54 -47.94 -37.65 -47.94 136.59 -47.94 -111.95 -47.94 194.74 -47.94 82.8 
+-47.94 84.68 -47.94 -418.82 -47.94 2.28 -47.93 58.16 -47.94 -12.29 -47.94 18.95 -47.94 0.76 -47.94 252.87 
+-47.94 34.46 -47.94 -284.42 -47.94 242.11 -47.94 -236.44 -47.94 129 -47.93 -103.34 -47.94 -147.11 -47.94 -87.91 
+-47.96 335.76 -47.94 195.98 -47.94 -96.68 -47.94 -35.07 -47.94 -65.84 -47.94 -129.77 -47.94 171.68 -47.93 1.52 
+-47.94 8.46 -47.94 -247.77 -47.94 151.43 -47.94 15.75 -47.94 184.96 -47.94 -132.49 -47.94 -300.52 -47.94 354.45 
+-47.94 -160.94 -47.94 116.02 -47.93 91.8 -47.94 -247.77 -47.94 44.62 f*
+695.42 1310.57 0 126.37 47.94 63.91 47.94 148.81 47.93 -122.88 47.94 175.54 47.94 -78.32 47.94 -9.27 
+47.94 -29.08 47.94 133 47.94 -227.95 47.94 146.38 47.94 203.86 47.94 -389.34 47.94 291.58 47.93 -20.7 
+47.94 -18.05 47.94 -5.69 47.94 -27.75 47.94 -59.72 47.94 326.39 47.94 -115.99 47.96 -261 47.94 -162.61 
+47.94 60.88 47.93 44.16 47.94 152.45 47.94 -12.52 47.94 -0.24 47.94 -74.52 47.94 164.2 47.94 -141.93 
+47.94 -123.59 47.94 -82.23 47.94 -31.49 47.93 -10.27 47.94 238.59 47.94 88.91 47.94 71.66 47.94 -45.98 
+47.94 9.66 47.94 -79.84 47.94 -224.79 47.94 -32.75 47.94 152.43 47.94 -76.93 47.93 -23.54 47.94 -43.84 
+47.94 238.57 47.94 -166.69 47.94 55.73 0 -301.65 -47.94 -110.66 -47.94 293.6 -47.94 -153.17 -47.94 -39.11 
+-47.93 -183.25 -47.94 198.09 -47.94 49.54 -47.94 -37.65 -47.94 136.59 -47.94 -111.95 -47.94 194.74 -47.94 82.8 
+-47.94 84.68 -47.94 -418.82 -47.94 2.28 -47.93 58.16 -47.94 -12.29 -47.94 18.95 -47.94 0.76 -47.94 252.87 
+-47.94 34.46 -47.94 -284.42 -47.94 242.11 -47.94 -236.44 -47.94 129 -47.93 -103.34 -47.94 -147.11 -47.94 -87.91 
+-47.96 335.76 -47.94 195.98 -47.94 -96.68 -47.94 -35.07 -47.94 -65.84 -47.94 -129.77 -47.94 171.68 -47.93 1.52 
+-47.94 8.46 -47.94 -247.77 -47.94 151.43 -47.94 15.75 -47.94 184.96 -47.94 -132.49 -47.94 -300.52 -47.94 354.45 
+-47.94 -160.94 -47.94 116.02 -47.93 91.8 -47.94 -247.77 -47.94 44.62 f*
+255 189 r3
+695.42 1369.92 0 116.32 47.94 -61.21 47.94 59.33 47.93 104.17 47.94 65.93 47.94 52.63 47.94 -221.37 
+47.94 289.93 47.94 -153.02 47.94 -120.81 47.94 11.22 47.94 135.22 47.94 -76.59 47.94 188.45 47.93 -180.36 
+47.94 15.02 47.94 64.86 47.94 26.41 47.94 -65.14 47.94 -125.52 47.94 15.13 47.96 -99.05 47.94 50.24 
+47.94 14.37 47.93 94.46 47.94 54.73 47.94 -8.96 47.94 -32.73 47.94 52.52 47.94 -18.77 47.94 -147.46 
+47.94 209.7 47.94 -59.09 47.94 -204.64 47.93 271.48 47.94 -20.92 47.94 109.14 47.94 -269.25 47.94 179.75 
+47.94 -137.41 47.94 50.24 47.94 62.5 47.94 -133.05 47.94 101.73 47.94 -146.87 47.93 -71.07 47.94 226.47 
+47.94 -195.14 47.94 132.71 47.94 -237.61 0 -53.06 -47.94 22.7 -47.94 -39.65 -47.94 127.41 -47.94 -72.83 
+-47.93 -200.5 -47.94 169.88 -47.94 -71.57 -47.94 -55.99 -47.94 168.88 -47.94 -28.62 -47.94 176.3 -47.94 -193.82 
+-47.94 286.57 -47.94 -243.07 -47.94 87.78 -47.93 -73.3 -47.94 95.45 -47.94 29.84 -47.94 -296.7 -47.94 -163.91 
+-47.94 218.21 -47.94 115.88 -47.94 -56.47 -47.94 161.35 -47.94 -129.97 -47.93 -88.78 -47.94 64.63 -47.94 -76.11 
+-47.96 -132.3 -47.94 236.63 -47.94 -78.04 -47.94 86.76 -47.94 195.16 -47.94 -95.31 -47.94 -194.14 -47.93 364 
+-47.94 -181.09 -47.94 38.06 -47.94 -180.42 -47.94 67.38 -47.94 161.03 -47.94 9.72 -47.94 -225.11 -47.94 222.81 
+-47.94 -151.82 -47.94 145.74 -47.93 -165.23 -47.94 -170.16 -47.94 197.22 f*
+695.42 1369.92 0 116.32 47.94 -61.21 47.94 59.33 47.93 104.17 47.94 65.93 47.94 52.63 47.94 -221.37 
+47.94 289.93 47.94 -153.02 47.94 -120.81 47.94 11.22 47.94 135.22 47.94 -76.59 47.94 188.45 47.93 -180.36 
+47.94 15.02 47.94 64.86 47.94 26.41 47.94 -65.14 47.94 -125.52 47.94 15.13 47.96 -99.05 47.94 50.24 
+47.94 14.37 47.93 94.46 47.94 54.73 47.94 -8.96 47.94 -32.73 47.94 52.52 47.94 -18.77 47.94 -147.46 
+47.94 209.7 47.94 -59.09 47.94 -204.64 47.93 271.48 47.94 -20.92 47.94 109.14 47.94 -269.25 47.94 179.75 
+47.94 -137.41 47.94 50.24 47.94 62.5 47.94 -133.05 47.94 101.73 47.94 -146.87 47.93 -71.07 47.94 226.47 
+47.94 -195.14 47.94 132.71 47.94 -237.61 0 -53.06 -47.94 22.7 -47.94 -39.65 -47.94 127.41 -47.94 -72.83 
+-47.93 -200.5 -47.94 169.88 -47.94 -71.57 -47.94 -55.99 -47.94 168.88 -47.94 -28.62 -47.94 176.3 -47.94 -193.82 
+-47.94 286.57 -47.94 -243.07 -47.94 87.78 -47.93 -73.3 -47.94 95.45 -47.94 29.84 -47.94 -296.7 -47.94 -163.91 
+-47.94 218.21 -47.94 115.88 -47.94 -56.47 -47.94 161.35 -47.94 -129.97 -47.93 -88.78 -47.94 64.63 -47.94 -76.11 
+-47.96 -132.3 -47.94 236.63 -47.94 -78.04 -47.94 86.76 -47.94 195.16 -47.94 -95.31 -47.94 -194.14 -47.93 364 
+-47.94 -181.09 -47.94 38.06 -47.94 -180.42 -47.94 67.38 -47.94 161.03 -47.94 9.72 -47.94 -225.11 -47.94 222.81 
+-47.94 -151.82 -47.94 145.74 -47.93 -165.23 -47.94 -170.16 -47.94 197.22 f*
+250 194 r6
+695.42 1427.78 0 186.35 47.94 -9.53 47.94 31.66 47.93 -16.54 47.94 -51.5 47.94 73.51 47.94 13.69 
+47.94 -27 47.94 228.3 47.94 -216.52 47.94 27.06 47.94 -97.61 47.94 80.95 47.94 -100.15 47.93 -29.73 
+47.94 120.49 47.94 -170.09 47.94 45.64 47.94 39.63 47.94 90.99 47.94 -0.54 47.96 33.42 47.94 12.61 
+47.94 -111.72 47.93 54.75 47.94 -119.21 47.94 2.09 47.94 165.86 47.94 -106.36 47.94 -22.92 47.94 -83.07 
+47.94 83.77 47.94 17.68 47.94 -40.64 47.93 12.11 47.94 75 47.94 108.94 47.94 -79.99 47.94 -99.59 
+47.94 39.93 47.94 -30.62 47.94 -161.25 47.94 108.25 47.94 19.55 47.94 -60.87 47.93 80.66 47.94 20.63 
+47.94 -131.33 47.94 155.9 47.94 -141.51 0 -213.48 -47.94 38.67 -47.94 -45.83 -47.94 -77.08 -47.94 118.1 
+-47.93 -104.54 -47.94 -59.07 -47.94 266.06 -47.94 -140.97 -47.94 -5.9 -47.94 -127.17 -47.94 23.11 -47.94 212.07 
+-47.94 195.44 -47.94 -163.71 -47.94 -78.52 -47.93 -71.63 -47.94 120.05 -47.94 67.39 -47.94 -35.79 -47.94 -71.94 
+-47.94 -41.66 -47.94 112.74 -47.94 -153.26 -47.94 77.67 -47.94 39.41 -47.93 -40.19 -47.94 194.03 -47.94 -40.71 
+-47.96 -14.74 -47.94 -3.88 -47.94 -84.07 -47.94 40.08 -47.94 -5.58 -47.94 -91.93 -47.94 37.83 -47.93 52.23 
+-47.94 -277.62 -47.94 334.72 -47.94 44.74 -47.94 -64.97 -47.94 215.95 -47.94 -220.01 -47.94 -16.19 -47.94 20.16 
+-47.94 -128.04 -47.94 14.14 -47.93 220.14 -47.94 -108.7 -47.94 21.31 f*
+695.42 1427.78 0 186.35 47.94 -9.53 47.94 31.66 47.93 -16.54 47.94 -51.5 47.94 73.51 47.94 13.69 
+47.94 -27 47.94 228.3 47.94 -216.52 47.94 27.06 47.94 -97.61 47.94 80.95 47.94 -100.15 47.93 -29.73 
+47.94 120.49 47.94 -170.09 47.94 45.64 47.94 39.63 47.94 90.99 47.94 -0.54 47.96 33.42 47.94 12.61 
+47.94 -111.72 47.93 54.75 47.94 -119.21 47.94 2.09 47.94 165.86 47.94 -106.36 47.94 -22.92 47.94 -83.07 
+47.94 83.77 47.94 17.68 47.94 -40.64 47.93 12.11 47.94 75 47.94 108.94 47.94 -79.99 47.94 -99.59 
+47.94 39.93 47.94 -30.62 47.94 -161.25 47.94 108.25 47.94 19.55 47.94 -60.87 47.93 80.66 47.94 20.63 
+47.94 -131.33 47.94 155.9 47.94 -141.51 0 -213.48 -47.94 38.67 -47.94 -45.83 -47.94 -77.08 -47.94 118.1 
+-47.93 -104.54 -47.94 -59.07 -47.94 266.06 -47.94 -140.97 -47.94 -5.9 -47.94 -127.17 -47.94 23.11 -47.94 212.07 
+-47.94 195.44 -47.94 -163.71 -47.94 -78.52 -47.93 -71.63 -47.94 120.05 -47.94 67.39 -47.94 -35.79 -47.94 -71.94 
+-47.94 -41.66 -47.94 112.74 -47.94 -153.26 -47.94 77.67 -47.94 39.41 -47.93 -40.19 -47.94 194.03 -47.94 -40.71 
+-47.96 -14.74 -47.94 -3.88 -47.94 -84.07 -47.94 40.08 -47.94 -5.58 -47.94 -91.93 -47.94 37.83 -47.93 52.23 
+-47.94 -277.62 -47.94 334.72 -47.94 44.74 -47.94 -64.97 -47.94 215.95 -47.94 -220.01 -47.94 -16.19 -47.94 20.16 
+-47.94 -128.04 -47.94 14.14 -47.93 220.14 -47.94 -108.7 -47.94 21.31 f*
+Q q
+127.777 661.109 3138.89 3138.89 re
+Y*
+5.55556 w
+1 J
+1 j
+255 0 r3
+695.42 1492.19 36 -1.09 S
+749.42 1490.56 36 -1.09 S
+803.43 1488.93 35.8 -1.07 0.18 -0.02 S
+857.42 1487.3 29.75 -0.89 6.25 -0.18 S
+911.42 1485.7 23.69 -0.71 12.31 -0.37 S
+965.41 1484.07 17.64 -0.54 18.36 -0.54 S
+1019.42 1482.45 11.57 -0.35 24.44 -0.73 S
+1073.42 1480.82 5.51 -0.17 30.49 -0.91 S
+1127.41 1479.19 36 -1.08 S
+1181.42 1477.56 36.01 -1.09 S
+1235.42 1475.93 35.27 -1.04 0.73 -0.02 S
+1289.41 1474.33 29.21 -0.89 6.79 -0.19 S
+1343.42 1472.7 23.13 -0.7 12.85 -0.39 S
+1397.42 1471.07 17.08 -0.52 18.93 -0.56 S
+1451.41 1469.45 11.02 -0.33 24.98 -0.76 S
+1505.41 1467.82 4.96 -0.15 31.04 -0.93 S
+1559.42 1466.19 36 -1.08 S
+1613.41 1464.56 36.01 -1.09 S
+1667.41 1462.93 34.74 -1.04 S
+1702.15 1461.89 1.26 -0.02 S
+1721.42 1461.33 28.67 -0.87 7.33 -0.21 S
+1775.41 1459.7 22.62 -0.7 13.39 -0.39 S
+1829.41 1458.07 16.55 -0.5 19.45 -0.58 S
+1883.42 1456.45 10.48 -0.32 25.5 -0.76 S
+1937.41 1454.82 4.43 -0.13 31.58 -0.95 S
+1991.41 1453.19 36 -1.08 S
+2045.4 1451.56 36 -1.06 S
+2099.42 1449.96 34.18 -1.04 1.82 -0.05 S
+2153.41 1448.33 28.13 -0.84 7.88 -0.24 S
+2207.4 1446.7 22.07 -0.67 13.93 -0.41 S
+2261.42 1445.07 15.99 -0.48 19.98 -0.61 S
+2315.41 1443.45 9.94 -0.3 26.07 -0.79 S
+2369.4 1441.82 3.89 -0.11 32.12 -0.98 S
+2423.42 1440.19 35.98 -1.08 S
+2477.41 1438.56 36 -1.06 S
+2531.4 1436.96 33.64 -1.02 2.37 -0.07 S
+2585.39 1435.33 27.58 -0.82 8.42 -0.26 S
+2639.41 1433.7 21.51 -0.65 14.49 -0.43 S
+2693.4 1432.07 15.46 -0.46 20.55 -0.63 S
+2747.39 1430.45 9.4 -0.28 26.61 -0.81 S
+2801.41 1428.82 3.32 -0.09 32.66 -1 S
+2855.41 1427.2 36 -1.07 S
+2909.39 1425.58 36 -1.08 S
+2963.39 1423.96 33.09 -1 2.91 -0.09 S
+3017.41 1422.33 27.02 -0.83 S
+255 0 r6
+695.42 1544.49 35.92 -2.61 S
+749.3 1540.56 35.92 -2.61 S
+803.19 1536.63 35.92 -2.61 S
+857.07 1532.71 30.1 -2.2 5.82 -0.41 S
+910.94 1528.78 24.17 -1.76 11.77 -0.84 S
+964.82 1524.85 18.23 -1.33 17.69 -1.28 S
+1018.71 1520.95 12.28 -0.92 23.63 -1.71 S
+1072.59 1517.01 6.34 -0.47 29.57 -2.15 S
+1126.48 1513.08 0.39 -0.04 35.52 -2.58 S
+1180.36 1509.16 35.92 -2.62 S
+1234.22 1505.23 35.94 -2.62 S
+1288.11 1501.3 30.52 -2.23 5.4 -0.39 S
+1342 1497.37 24.56 -1.8 11.35 -0.82 S
+1395.88 1493.45 18.62 -1.37 17.3 -1.26 S
+1449.76 1489.52 12.67 -0.91 23.25 -1.69 S
+1503.64 1485.59 6.73 -0.48 29.19 -2.12 S
+1557.51 1481.66 0.8 -0.04 35.13 -2.56 S
+1611.39 1477.73 35.92 -2.61 S
+1665.28 1473.8 35.92 -2.61 S
+1719.16 1469.88 30.93 -2.23 4.99 -0.37 S
+1773.04 1465.97 24.98 -1.82 10.93 -0.8 S
+1826.93 1462.04 19.03 -1.39 16.88 -1.24 S
+1880.79 1458.12 13.11 -0.96 22.84 -1.67 S
+1934.68 1454.19 7.16 -0.52 28.78 -2.11 S
+1988.56 1450.26 1.21 -0.09 34.7 -2.54 S
+2042.45 1446.33 35.91 -2.62 S
+2096.33 1442.41 35.92 -2.63 S
+2150.21 1438.48 31.32 -2.28 4.6 -0.35 S
+2204.1 1434.55 25.37 -1.84 10.54 -0.76 S
+2257.96 1430.62 19.45 -1.41 16.49 -1.2 S
+2311.85 1426.7 13.49 -0.98 22.42 -1.62 S
+2365.73 1422.77 7.55 -0.54 28.36 -2.06 S
+2419.62 1418.84 1.61 -0.11 34.31 -2.49 S
+2473.5 1414.91 35.92 -2.61 S
+2527.39 1411 35.91 -2.62 S
+2581.25 1407.07 31.73 -2.32 4.21 -0.3 S
+2635.13 1403.14 25.79 -1.88 10.13 -0.74 S
+2689.02 1399.21 19.84 -1.45 16.08 -1.17 S
+2742.91 1395.29 13.89 -1.02 22.03 -1.61 S
+2796.79 1391.36 7.95 -0.58 27.97 -2.04 S
+2850.67 1387.43 2 -0.15 33.92 -2.47 S
+2904.54 1383.5 35.94 -2.62 S
+2958.42 1379.58 35.91 -2.61 S
+3012.3 1375.65 32.12 -2.34 S
+255 0 r5
+695.42 1535.05 35.94 -2.34 S
+749.33 1531.54 35.94 -2.35 S
+803.23 1528.02 35.94 -2.34 S
+857.14 1524.5 30.03 -1.95 5.93 -0.39 S
+911.07 1520.98 24.04 -1.56 11.89 -0.78 S
+964.97 1517.49 18.08 -1.19 17.86 -1.15 S
+1018.88 1513.98 12.11 -0.8 23.83 -1.54 S
+1072.79 1510.46 6.14 -0.41 29.79 -1.93 S
+1126.7 1506.95 0.17 0 35.76 -2.34 S
+1180.6 1503.43 35.95 -2.35 S
+1234.53 1499.91 35.94 -2.32 S
+1288.43 1496.42 30.19 -1.97 5.75 -0.37 S
+1342.34 1492.91 24.21 -1.59 11.72 -0.76 S
+1396.25 1489.39 18.25 -1.2 17.69 -1.15 S
+1450.15 1485.87 12.29 -0.8 23.66 -1.54 S
+1504.05 1482.36 6.32 -0.41 29.63 -1.93 S
+1557.99 1478.86 0.32 -0.04 35.61 -2.3 S
+1611.89 1475.34 35.93 -2.34 S
+1665.8 1471.83 35.93 -2.34 S
+1719.71 1468.32 30.38 -1.98 5.55 -0.37 S
+1773.61 1464.8 24.42 -1.59 11.52 -0.76 S
+1827.52 1461.29 18.45 -1.2 17.5 -1.13 S
+1881.42 1457.79 12.48 -0.82 23.48 -1.52 S
+1935.35 1454.28 6.49 -0.44 29.45 -1.91 S
+1989.25 1450.76 0.52 -0.05 35.42 -2.3 S
+2043.17 1447.25 35.93 -2.35 S
+2097.07 1443.73 35.93 -2.34 S
+2150.98 1440.23 30.56 -2 5.38 -0.35 S
+2204.88 1436.71 24.59 -1.61 11.37 -0.73 S
+2258.81 1433.21 18.6 -1.22 17.34 -1.13 S
+2312.71 1429.69 12.63 -0.83 23.31 -1.52 S
+2366.62 1426.17 6.66 -0.43 29.28 -1.91 S
+2420.53 1422.66 0.7 -0.05 35.24 -2.28 S
+2474.43 1419.16 35.94 -2.34 S
+2528.34 1415.64 35.93 -2.34 S
+2582.27 1412.13 30.7 -2 5.23 -0.34 S
+2636.18 1408.62 24.74 -1.61 11.19 -0.74 S
+2690.08 1405.1 18.77 -1.22 17.17 -1.13 S
+2743.99 1401.61 12.8 -0.84 23.14 -1.5 S
+2797.89 1398.09 6.84 -0.46 29.1 -1.89 S
+2851.8 1394.57 0.87 -0.06 35.07 -2.28 S
+2905.71 1391.06 35.96 -2.35 S
+2959.63 1387.54 35.94 -2.34 S
+3013.54 1384.03 30.88 -1.99 S
+128 0 255 rG
+695.42 1379.34 35.94 2.32 S
+749.33 1382.83 35.94 2.32 S
+803.23 1386.33 35.96 2.32 S
+857.16 1389.8 30.01 1.95 5.93 0.39 S
+911.07 1393.29 24.04 1.56 11.89 0.79 S
+964.97 1396.79 18.08 1.17 17.86 1.17 S
+1018.88 1400.29 12.11 0.78 23.83 1.54 S
+1072.8 1403.78 6.13 0.39 29.82 1.93 S
+1126.71 1407.27 0.15 0 35.78 2.32 S
+1180.62 1410.77 35.93 2.32 S
+1234.53 1414.25 35.94 2.32 S
+1288.43 1417.75 30.19 1.96 5.77 0.37 S
+1342.36 1421.25 24.2 1.56 11.75 0.76 S
+1396.27 1424.74 18.23 1.17 17.71 1.15 S
+1450.17 1428.21 12.26 0.8 23.68 1.54 S
+1504.08 1431.71 6.29 0.41 29.64 1.93 S
+1557.99 1435.2 0.32 0.02 35.63 2.32 S
+1611.92 1438.7 35.93 2.32 S
+1665.82 1442.19 35.93 2.32 S
+1719.73 1445.68 30.36 1.97 5.58 0.35 S
+1773.63 1449.18 24.39 1.59 11.54 0.74 S
+1827.56 1452.67 18.4 1.19 17.54 1.13 S
+1881.46 1456.16 12.43 0.8 23.51 1.52 S
+1935.37 1459.66 6.47 0.41 29.47 1.91 S
+1989.28 1463.15 0.5 0.02 35.44 2.3 S
+2043.18 1466.62 35.96 2.34 S
+2097.11 1470.12 35.94 2.34 S
+2151.02 1473.61 30.51 1.97 5.42 0.38 S
+2204.93 1477.11 24.54 1.58 11.39 0.74 S
+2258.83 1480.6 18.58 1.19 17.36 1.13 S
+2312.76 1484.09 12.58 0.82 23.36 1.5 S
+2366.67 1487.59 6.62 0.43 29.32 1.89 S
+2420.57 1491.08 0.65 0.04 35.29 2.28 S
+2474.48 1494.57 35.94 2.32 S
+2528.38 1498.07 35.96 2.32 S
+2582.31 1501.56 30.66 1.98 5.27 0.34 S
+2636.22 1505.04 24.7 1.61 11.24 0.74 S
+2690.13 1508.53 18.73 1.22 17.21 1.13 S
+2744.04 1512.02 12.76 0.82 23.18 1.52 S
+2797.94 1515.52 6.8 0.43 29.16 1.89 S
+2851.87 1519.01 0.8 0.04 35.14 2.28 S
+2905.77 1522.5 35.94 2.32 S
+2959.68 1526 35.94 2.32 S
+3013.58 1529.5 30.84 1.99 S
+11.1111 w
+255 0 r3
+695.42 1428.08 47.94 -129.21 47.94 114.73 47.93 134.7 47.94 -39.91 47.94 102.21 47.94 -222.09 47.94 257.53 
+47.94 -81.38 47.94 -140.91 47.94 -28.08 47.94 157.81 47.94 -57.32 47.94 184.77 47.93 -272.16 47.94 104.58 
+47.94 80.08 47.94 -84.37 47.94 -75.95 47.94 -23.74 47.94 -110.77 47.96 16.63 47.94 63.17 47.94 -25.11 
+47.93 91.62 47.94 92.34 47.94 -85.16 47.94 11.87 47.94 -31.69 47.94 -118.49 47.94 8.23 47.94 253.19 
+47.94 -44.44 47.94 -150.07 47.93 172.41 47.94 -54.36 47.94 176.11 47.94 -277.91 47.94 186.79 47.94 -156.86 
+47.94 39.43 47.94 -53.19 47.94 -38.52 47.94 86.63 47.94 -158.35 47.93 64.71 47.94 149.63 47.94 -161.27 
+47.94 86.18 47.94 -130.14 S
+255 0 r6
+695.42 1520.95 47.94 -15.41 47.94 70.18 47.93 -118.34 47.94 -32.81 47.94 100.76 47.94 -3.23 47.94 -5.41 
+47.94 224.16 47.94 -216.23 47.94 46.01 47.94 -71.16 47.94 -126.91 47.94 88.73 47.93 -40.97 47.94 41.34 
+47.94 -39.09 47.94 25.61 47.94 -0.24 47.94 87.52 47.94 1.7 47.96 24.07 47.94 26.64 47.94 -152.86 
+47.93 47.46 47.94 -79.3 47.94 -37.8 47.94 159.57 47.94 -109.54 47.94 9.37 47.94 -5.55 47.94 59.77 
+47.94 -24.85 47.94 -80.34 47.93 41.86 47.94 76.76 47.94 136.33 47.94 -137.72 47.94 -155.84 47.94 8.42 
+47.94 48.28 47.94 -77.67 47.94 124.61 47.94 -123.26 47.94 -0.89 47.93 92.6 47.94 -48.75 47.94 -27.13 
+47.94 100.88 47.94 -90.09 S
+255 0 r5
+695.42 1373.76 47.94 9.64 47.94 198.29 47.93 -107.33 47.94 29.77 47.94 41.3 47.94 -181.86 47.94 135.72 
+47.94 132.75 47.94 -206.45 47.94 65.3 47.94 26.22 47.94 -70.79 47.94 141.55 47.93 -11.11 47.94 -94.87 
+47.94 62.07 47.94 19.03 47.94 -12.33 47.94 211.52 47.94 -155.99 47.96 -298.37 47.94 -37.35 47.94 103.99 
+47.93 73.74 47.94 11.74 47.94 111.96 47.94 -121.18 47.94 104.97 47.94 64.84 47.94 -197.39 47.94 -62.17 
+47.94 -50.57 47.94 -9.61 47.93 -34.21 47.94 118.14 47.94 253.86 47.94 -6.51 47.94 -64.39 47.94 -92.54 
+47.94 16.06 47.94 -180.68 47.94 2.43 47.94 51.45 47.94 -137.52 47.93 79.86 47.94 -2.37 47.94 195.88 
+47.94 -230.17 47.94 83.21 S
+128 0 255 rG
+695.42 1331.01 47.94 18.12 47.94 33.22 47.93 -24.65 47.94 27.21 47.94 9.48 47.94 -47.94 47.94 42.14 
+47.94 2.13 47.94 12.95 47.94 37.87 47.94 20.3 47.94 -30.77 47.94 -14.84 47.93 6.33 47.94 10.36 
+47.94 -32.36 47.94 8.57 47.94 9.52 47.94 0.93 47.94 36.83 47.96 28.73 47.94 -43.99 47.94 -5.23 
+47.93 -1.24 47.94 34.86 47.94 -4.32 47.94 90.37 47.94 -41.3 47.94 -21.39 47.94 -27.43 47.94 13.87 
+47.94 22.48 47.94 -8.36 47.93 21.66 47.94 25.69 47.94 14.5 47.94 -22.22 47.94 45.01 47.94 -7.51 
+47.94 -53.56 47.94 -14.91 47.94 20.22 47.94 -44.03 47.94 26.97 47.93 -38.15 47.94 -20.81 47.94 24.61 
+47.94 -20.05 47.94 -8.18 S
+K
+1766.21 750.8 10.39 0 21.31 -35.36 20.79 35.36 10.41 0 -26.52 -44.7 0 -28.09 -9.36 0 
+^ -27.04 44.7 f*
+1880.58 694.14 -0.57 -2.45 -0.72 -2.23 -0.84 -2.07 -1 -1.89 -1.13 -1.69 -1.23 -1.54 -1.37 -1.37 
+-1.46 -1.19 -1.56 -1.04 -1.65 -0.89 -1.74 -0.74 -1.8 -0.58 -1.87 -0.46 -1.93 -0.33 -4.01 -0.26 
+-2.73 0.22 -2.61 0.45 -2.41 0.7 -2.26 0.89 -2.11 1.13 -1.91 1.32 -1.75 1.52 -1.56 1.71 
+-1.41 1.89 -1.22 2.06 -1.04 2.23 -0.84 2.41 -0.67 2.54 -0.48 2.69 -0.28 2.84 -0.11 2.95 
+0.17 4.28 0.52 3.84 0.8 3.45 1.09 3.08 1.3 2.69 1.52 2.39 1.7 2.04 1.8 1.76 
+1.93 1.47 1.99 1.21 2.02 0.96 2.04 0.75 2.02 0.55 1.96 0.37 3.58 0.28 -0.52 -7.81 
+-2.26 -0.22 -2.45 -0.7 -2.45 -1.17 -2.39 -1.67 -1.11 -1.04 -1.06 -1.2 -0.95 -1.32 -0.84 -1.46 
+-0.74 -1.61 -0.61 -1.75 -0.43 -1.91 -0.3 -2.06 30.68 0 -0.11 2.14 -0.33 1.98 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.15 -1.15 1.04 -2.43 1.63 -2.49 1.11 -2.41 0.63 
+-2.15 0.2 0.52 7.81 1.8 -0.06 1.87 -0.22 1.91 -0.37 1.96 -0.56 1.93 -0.78 1.89 -1 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.16 1.34 -2.5 1.17 -2.86 0.96 -3.23 0.72 -3.66 
+0.43 -4.11 0.15 -4.54 -39 0 0.2 -2.71 0.58 -2.98 1.05 -3.04 0.71 -1.48 0.84 -1.43 
+1 -1.34 1.15 -1.24 1.32 -1.13 1.48 -0.96 1.67 -0.8 1.84 -0.59 2.04 -0.37 2.23 -0.13 
+2.25 0.2 2.13 0.56 1.95 0.91 1.78 1.24 1.63 1.58 1.43 1.87 1.28 2.15 1.07 2.41 
+8.31 0 f*
+1892.54 714.93 0.28 3.12 0.35 1.54 0.49 1.52 0.66 1.47 0.82 1.43 1 1.34 1.15 1.26 
+1.32 1.17 1.52 1.06 1.69 0.91 1.91 0.8 2.08 0.63 2.3 0.48 2.49 0.3 2.71 0.11 
+2.95 -0.15 3.21 -0.43 3.3 -0.8 3.14 -1.21 1.48 -0.81 1.34 -0.91 1.22 -1.06 1.06 -1.21 
+0.84 -1.34 0.65 -1.52 0.42 -1.69 0.15 -1.84 0 -33.27 0.17 -0.93 0.5 -0.8 0.74 -0.67 
+0.93 -0.52 1 -0.35 1.04 -0.17 0.98 0.04 0.86 0.29 0 -6.25 -2.02 -0.46 -3.16 -0.07 
+-2.26 0.07 -1.78 0.2 -1.35 0.37 -1.07 0.61 -0.82 0.87 -0.72 1.2 -1.39 3.47 -4.43 -3.26 
+-1.91 -1.17 -1.84 -0.91 -1.88 -0.65 -2.07 -0.45 -2.32 -0.24 -2.69 -0.09 -2.32 0.09 -2.12 0.24 
+-1.91 0.41 -1.74 0.52 -1.52 0.65 -1.36 0.78 -1.2 0.89 -1.02 0.98 -0.87 1.07 -0.74 1.13 
+-0.61 1.21 -0.46 1.26 -0.59 2.63 -0.2 2.71 7.81 0 0.17 -1.52 0.57 -1.45 0.93 -1.32 
+1.24 -1.15 1.58 -0.98 1.87 -0.74 2.14 -0.48 2.41 -0.15 3.47 0.43 3.04 0.91 2.61 1.24 
+2.13 1.5 1.66 1.69 1.2 1.76 0.72 1.74 0.24 1.65 0 10.39 -3.91 -1.45 -3.23 -0.76 
+-9.48 -1.43 -2.8 -0.84 -2.17 -0.98 -1.65 -1.11 -1.17 -1.21 -0.8 -1.32 -0.48 -1.39 -0.24 -1.48 
+-0.04 -1.54 -7.81 0 0.21 3.88 0.65 3.17 0.5 1.34 0.59 1.17 0.7 1.06 0.8 0.93 
+0.91 0.83 1 0.73 2.32 1.2 2.71 0.98 3.13 0.82 13.52 2.08 3.25 0.87 1.17 0.48 
+0.91 0.52 0.65 0.57 0.43 0.56 0.26 0.57 0.07 0.58 0 4.69 -0.13 0.89 -0.48 1.04 
+-0.8 1.11 -1.17 1.11 -1.56 1.02 -2 0.82 -2.41 0.57 -2.89 0.2 -3.06 -0.22 -2.61 -0.65 
+-2.15 -1 -1.73 -1.26 -1.3 -1.43 -0.91 -1.58 -0.54 -1.61 -0.18 -1.61 -8.31 0 f*
+1948.68 730.54 7.29 0 0 -9.87 3.18 4.23 2.88 3.08 2.61 2.08 1.19 0.72 1.13 0.54 
+2.06 0.56 1.8 0.02 1.54 -0.32 1.28 -0.52 0 -7.81 -4.14 -0.44 -1.82 -0.39 -1.67 -0.52 
+-1.52 -0.63 -1.34 -0.74 -1.21 -0.87 -1.09 -0.95 -0.91 -1.09 -0.8 -1.19 -0.66 -1.28 -0.54 -1.41 
+-0.41 -1.5 -0.29 -1.61 -0.21 -3.49 0 -29.12 -8.34 0 0 52.52 f*
+218.27 963.78 -2.73 -0.15 -2.56 -0.41 -2.37 -0.69 -2.19 -0.93 -2.02 -1.15 -1.82 -1.37 -1.67 -1.58 
+-1.47 -1.78 -1.3 -1.93 -1.13 -2.08 -0.93 -2.24 -0.78 -2.35 -0.61 -2.47 -0.43 -2.56 -0.24 -2.62 
+-0.08 -2.72 0.08 -3.21 0.31 -2.97 0.5 -2.78 0.67 -2.56 0.87 -2.34 1.02 -2.12 1.2 -1.91 
+1.32 -1.72 1.49 -1.52 1.61 -1.29 1.76 -1.11 1.89 -0.89 1.99 -0.7 2.11 -0.5 2.2 -0.28 
+2.3 -0.11 3.58 0.25 1.58 0.33 1.46 0.41 2.52 1.15 2.11 1.5 1.74 1.8 1.43 2.02 
+1.19 2.19 1.02 2.3 6.25 23.39 1.02 2.69 1.13 2.24 1.21 1.8 1.32 1.41 1.41 1.04 
+1.5 0.69 1.61 0.41 1.72 0.11 2.47 -0.2 2.32 -0.67 1.08 -0.54 1.05 -0.67 0.95 -0.82 
+0.89 -0.98 0.82 -1.17 0.72 -1.32 0.63 -1.54 0.54 -1.71 0.43 -1.93 0.3 -2.15 0.2 -2.38 
+0.07 -2.61 -0.09 -2.63 -0.28 -2.43 -0.46 -2.21 -0.61 -2.04 -0.76 -1.84 -0.89 -1.65 -1 -1.49 
+-1.13 -1.3 -1.22 -1.13 -1.3 -0.98 -1.37 -0.8 -1.43 -0.65 -1.5 -0.5 -1.52 -0.35 -3.1 -0.26 
+0 -9.35 2.6 0.11 2.5 0.33 2.43 0.55 2.3 0.8 2.2 1 2.04 1.23 1.93 1.48 
+1.76 1.72 1.58 1.95 1.43 2.17 1.24 2.43 1.04 2.69 0.82 2.91 0.59 3.17 0.37 3.43 
+0.13 3.67 -0.11 3.4 -0.32 3.17 -0.55 2.98 -0.74 2.73 -0.93 2.52 -1.11 2.3 -1.26 2.08 
+-1.4 1.87 -1.57 1.65 -1.66 1.43 -1.8 1.19 -1.91 1 -2 0.76 -2.09 0.54 -2.16 0.35 
+-2.22 0.11 -1.8 -0.08 -1.74 -0.24 -1.62 -0.41 -1.54 -0.52 -1.48 -0.65 -1.36 -0.79 -2.47 -1.87 
+-2.11 -2.21 -1.73 -2.45 -1.35 -2.62 -0.97 -2.71 -6.25 -23.39 -1.11 -2.28 -1.02 -1.8 -1 -1.37 
+-1.02 -1 -1.15 -0.67 -1.29 -0.41 -1.52 -0.22 -1.78 -0.04 -1.41 0.07 -1.34 0.26 -1.23 0.39 
+-1.18 0.55 -1.07 0.69 -0.98 0.8 -0.89 0.93 -0.8 1.05 -1.33 2.38 -0.95 2.74 -0.59 3.02 
+-0.2 3.23 0.07 2.17 0.22 2.04 0.34 1.91 0.48 1.78 0.59 1.63 0.71 1.5 0.82 1.34 
+0.93 1.21 1.02 1.09 1.11 0.93 1.2 0.79 1.28 0.65 1.37 0.5 1.41 0.37 1.48 0.22 
+1.54 0.09 0 9.35 f*
+217.23 977.3 0 7.79 8.31 0 -2.67 2.17 -2.16 2.2 -1.72 2.21 -1.3 2.19 -0.95 2.19 
+-0.61 2.13 -0.34 2.08 -0.11 1.99 0.24 2.96 0.7 2.93 1.13 2.8 1.52 2.56 1.89 2.17 
+1.06 0.93 1.15 0.78 1.21 0.63 1.3 0.48 1.37 0.29 1.43 0.11 41.06 0 0 -8.31 
+-37.41 0 -1.13 -0.06 -1.04 -0.21 -1.84 -0.76 -1.55 -1.2 -1.21 -1.48 -0.93 -1.69 -0.63 -1.85 
+-0.39 -1.86 -0.13 -1.8 0.08 -1.29 0.22 -1.26 0.83 -2.52 1.37 -2.36 1.86 -2.13 1.11 -0.98 
+1.21 -0.87 1.32 -0.76 1.43 -0.65 1.52 -0.52 1.63 -0.39 1.74 -0.24 1.8 -0.09 30.14 0 
+0 -8.31 -52.49 0 f*
+215.67 1053.19 0.15 2.41 0.43 2.34 0.72 2.28 0.97 2.19 1.21 2.09 1.43 1.98 1.67 1.84 
+1.84 1.71 2.04 1.54 2.21 1.39 2.37 1.22 2.5 1.02 2.61 0.83 2.73 0.58 2.8 0.37 
+2.91 0.13 2.88 -0.13 2.8 -0.37 2.69 -0.58 2.58 -0.83 2.46 -1.02 2.32 -1.22 2.15 -1.39 
+1.99 -1.54 1.8 -1.71 1.61 -1.84 1.41 -1.98 1.18 -2.09 0.93 -2.19 0.7 -2.28 0.43 -2.34 
+0.13 -2.41 -0.13 -2.4 -0.43 -2.35 -0.7 -2.28 -0.93 -2.2 -1.18 -2.08 -1.41 -1.97 -1.61 -1.84 
+-1.8 -1.7 -1.99 -1.56 -2.15 -1.39 -2.32 -1.21 -2.46 -1.02 -2.58 -0.8 -2.69 -0.61 -2.8 -0.37 
+-2.88 -0.13 0 8.83 3.99 0.29 3.77 0.76 1.76 0.59 1.66 0.7 1.59 0.8 1.43 0.91 
+1.33 1.04 1.19 1.13 1.04 1.23 0.87 1.34 0.7 1.43 0.5 1.54 0.33 1.61 0.11 1.71 
+-0.11 1.72 -0.33 1.63 -0.5 1.52 -0.7 1.45 -0.87 1.32 -1.04 1.24 -1.19 1.15 -1.33 1.02 
+-1.43 0.93 -1.59 0.8 -1.66 0.7 -1.76 0.57 -3.77 0.78 -3.99 0.26 -4.04 -0.26 -3.82 -0.78 
+-1.82 -0.57 -1.71 -0.7 -1.61 -0.8 -1.5 -0.93 -1.37 -1.02 -1.23 -1.15 -1.09 -1.24 -0.91 -1.32 
+-0.71 -1.45 -0.54 -1.52 -0.33 -1.63 -0.13 -1.72 0.13 -1.71 0.33 -1.61 0.54 -1.54 0.71 -1.43 
+0.91 -1.34 1.09 -1.23 1.23 -1.13 1.37 -1.04 1.5 -0.91 1.61 -0.8 1.71 -0.7 1.82 -0.59 
+3.82 -0.76 4.04 -0.29 0 -8.83 -2.91 0.13 -2.8 0.37 -2.73 0.61 -2.61 0.8 -2.5 1.02 
+-2.37 1.21 -2.21 1.39 -2.04 1.56 -1.84 1.7 -1.67 1.84 -1.43 1.97 -1.21 2.08 -0.97 2.2 
+-0.72 2.28 -0.43 2.35 -0.15 2.4 f*
+217.23 1082.31 0 9.36 40.02 10.39 -40.02 10.39 0 9.36 40.02 10.39 -40.02 10.41 0 9.35 
+52.49 -15.08 0 -9.36 -39.5 -10.92 39.5 -9.87 0 -9.38 -52.49 -15.06 f*
+219.83 1247.11 -3.1 -0.67 -2.87 -0.82 -2.63 -0.98 -2.38 -1.13 -2.17 -1.28 -1.95 -1.43 -1.76 -1.59 
+-1.54 -1.71 -1.32 -1.89 -1.15 -2.02 -0.95 -2.17 -0.76 -2.3 -0.59 -2.45 -0.41 -2.58 -0.26 -2.71 
+-0.06 -2.87 0.17 -3.8 0.56 -3.58 0.89 -3.37 1.21 -3.14 1.57 -2.93 1.84 -2.72 2.12 -2.47 
+2.41 -2.23 2.65 -2 2.91 -1.76 3.13 -1.52 3.34 -1.26 3.52 -1.02 3.71 -0.75 3.88 -0.48 
+4.02 -0.24 4.55 0.17 4.26 0.48 3.97 0.82 3.69 1.09 3.41 1.39 3.1 1.65 2.82 1.88 
+2.54 2.13 2.24 2.34 1.95 2.56 1.65 2.73 1.36 2.93 1.05 3.05 0.75 3.23 0.46 3.35 
+0.16 3.45 -0.16 3.75 -0.43 3.45 -0.72 3.17 -0.97 2.89 -1.22 2.62 -1.43 2.37 -1.67 2.11 
+-1.84 1.87 -2.04 1.65 -2.21 1.41 -2.34 1.22 -2.5 0.99 -2.63 0.81 -2.71 0.61 -2.82 0.45 
+-2.89 0.29 0 -9.38 5.04 -0.95 2.23 -0.61 2.04 -0.71 1.84 -0.82 1.65 -0.93 1.48 -1.05 
+1.3 -1.15 1.15 -1.28 0.96 -1.41 0.8 -1.54 0.66 -1.68 0.5 -1.8 0.35 -1.98 0.22 -2.11 
+0.07 -2.25 -0.16 -3.02 -0.43 -2.78 -0.71 -2.58 -1 -2.37 -1.21 -2.16 -1.48 -1.96 -1.69 -1.75 
+-1.89 -1.56 -2.11 -1.37 -2.28 -1.17 -2.43 -1 -2.61 -0.79 -2.73 -0.62 -2.86 -0.43 -2.98 -0.26 
+-3.08 -0.09 -3.41 0.13 -3.23 0.35 -3.03 0.57 -2.85 0.8 -2.62 0.98 -2.45 1.19 -2.21 1.35 
+-2.02 1.54 -1.78 1.67 -1.57 1.84 -1.35 1.98 -1.11 2.08 -0.87 2.21 -0.62 2.32 -0.37 2.41 
+-0.12 2.5 0.26 3.62 0.78 3.41 0.59 1.61 0.7 1.52 0.82 1.43 0.95 1.34 1.05 1.24 
+1.16 1.13 1.29 1 1.39 0.89 1.5 0.74 1.61 0.59 1.71 0.45 1.8 0.26 0 9.37 f*
+215.67 1280.38 0.15 2.41 0.43 2.34 0.72 2.28 0.97 2.2 1.21 2.08 1.43 1.97 1.67 1.84 
+1.84 1.7 2.04 1.56 2.21 1.39 2.37 1.22 2.5 1.02 2.61 0.8 2.73 0.61 2.8 0.37 
+2.91 0.13 2.88 -0.12 2.8 -0.37 2.69 -0.61 2.58 -0.8 2.46 -1.02 2.32 -1.22 2.15 -1.39 
+1.99 -1.56 1.8 -1.7 1.61 -1.84 1.41 -1.97 1.18 -2.08 0.93 -2.2 0.7 -2.28 0.43 -2.34 
+0.13 -2.41 -0.13 -2.41 -0.43 -2.34 -0.7 -2.28 -0.93 -2.19 -1.18 -2.08 -1.41 -1.98 -1.61 -1.85 
+-1.8 -1.71 -1.99 -1.54 -2.15 -1.39 -2.32 -1.21 -2.46 -1.02 -2.58 -0.83 -2.69 -0.59 -2.8 -0.36 
+-2.88 -0.14 0 8.84 3.99 0.26 3.77 0.78 1.76 0.57 1.66 0.7 1.59 0.8 1.43 0.93 
+1.33 1.02 1.19 1.15 1.04 1.24 0.87 1.32 0.7 1.46 0.5 1.52 0.33 1.63 0.11 1.71 
+-0.11 1.71 -0.33 1.63 -0.5 1.52 -0.7 1.43 -0.87 1.34 -1.04 1.23 -1.19 1.14 -1.33 1.04 
+-1.43 0.91 -1.59 0.8 -1.66 0.7 -1.76 0.58 -3.77 0.76 -3.99 0.28 -4.04 -0.28 -3.82 -0.76 
+-1.82 -0.58 -1.71 -0.7 -1.61 -0.8 -1.5 -0.91 -1.37 -1.04 -1.23 -1.14 -1.09 -1.23 -0.91 -1.34 
+-0.71 -1.43 -0.54 -1.52 -0.33 -1.63 -0.13 -1.71 0.13 -1.71 0.33 -1.63 0.54 -1.52 0.71 -1.46 
+0.91 -1.32 1.09 -1.24 1.23 -1.15 1.37 -1.02 1.5 -0.93 1.61 -0.8 1.71 -0.7 1.82 -0.57 
+3.82 -0.78 4.04 -0.26 0 -8.84 -2.91 0.14 -2.8 0.36 -2.73 0.59 -2.61 0.83 -2.5 1.02 
+-2.37 1.21 -2.21 1.39 -2.04 1.54 -1.84 1.71 -1.67 1.85 -1.43 1.98 -1.21 2.08 -0.97 2.19 
+-0.72 2.28 -0.43 2.34 -0.15 2.41 f*
+217.23 1310 0 9.88 41.58 14.04 -41.58 14.04 0 9.87 52.49 -18.7 0 -10.39 -52.49 -18.73 f*
+253.62 1408.79 2.43 -0.57 2.26 -0.71 2.06 -0.87 1.87 -1 1.72 -1.11 1.52 -1.26 1.37 -1.34 
+1.21 -1.46 1.05 -1.56 0.89 -1.65 0.73 -1.74 0.59 -1.8 0.45 -1.87 0.33 -1.93 0.24 -4.02 
+-0.22 -2.76 -0.45 -2.58 -0.67 -2.43 -0.91 -2.25 -1.11 -2.09 -1.32 -1.93 -1.52 -1.74 -1.71 -1.59 
+-1.89 -1.39 -2.09 -1.22 -2.23 -1.04 -2.39 -0.85 -2.56 -0.67 -2.69 -0.48 -2.82 -0.3 -2.96 -0.09 
+-4.27 0.17 -3.84 0.52 -3.46 0.8 -3.08 1.09 -2.71 1.3 -2.37 1.52 -2.06 1.66 -1.74 1.82 
+-1.48 1.93 -1.21 1.99 -0.98 2.02 -0.74 2.04 -0.56 2.02 -0.37 1.93 -0.26 3.6 7.79 -0.52 
+0.24 -2.28 0.67 -2.43 1.17 -2.47 1.69 -2.36 1.04 -1.13 1.17 -1.05 1.32 -0.95 1.48 -0.84 
+1.61 -0.74 1.75 -0.61 1.91 -0.45 2.06 -0.29 0 30.68 -2.15 -0.12 -1.97 -0.31 -1.8 -0.52 
+-1.62 -0.68 -1.48 -0.82 -1.32 -0.96 -1.17 -1.06 -1.02 -1.13 -1.63 -2.43 -1.11 -2.52 -0.62 -2.41 
+-0.22 -2.12 -7.79 0.52 0.07 1.8 0.21 1.86 0.37 1.91 0.56 1.93 0.76 1.93 1.02 1.91 
+1.26 1.84 1.54 1.76 1.82 1.63 2.15 1.52 2.5 1.34 2.86 1.18 3.26 0.95 3.66 0.7 
+4.08 0.46 4.54 0.15 0 -39 2.73 0.17 2.97 0.59 3.04 1.06 1.48 0.71 1.41 0.84 
+1.35 1 1.25 1.15 1.11 1.32 0.97 1.48 0.79 1.67 0.61 1.84 0.37 2.04 0.13 2.23 
+-0.2 2.26 -0.57 2.13 -0.91 1.95 -1.26 1.78 -1.56 1.63 -1.87 1.43 -2.15 1.26 -2.41 1.08 
+0 8.31 f*
+217.23 1421.27 0 7.27 9.87 0 -4.23 3.17 -3.1 2.89 -2.09 2.6 -0.71 1.2 -0.52 1.13 
+-0.57 2.06 -0.04 1.8 0.32 1.54 0.54 1.3 7.79 0 0.43 -4.14 0.41 -1.84 0.5 -1.65 
+0.63 -1.52 0.76 -1.37 0.85 -1.21 0.97 -1.06 1.09 -0.93 1.17 -0.8 1.3 -0.65 1.39 -0.55 
+1.5 -0.39 1.61 -0.31 3.51 -0.21 29.11 0 0 -8.31 -52.49 0 f*
+196.96 1502.89 0 11.95 72.77 25.48 0 -10.39 -21.31 -7.3 0 -28.58 21.31 -7.29 0 -10.39 
+-62.37 22.87 0 9.36 32.75 -11.95 0 23.39 -32.75 -11.43 0 -9.36 -10.39 3.65 f*
+217.23 1548.63 0 7.79 8.31 0 -2.67 2.17 -2.16 2.19 -1.72 2.21 -1.3 2.21 -0.95 2.17 
+-0.61 2.13 -0.34 2.08 -0.11 2 0.24 2.95 0.7 2.93 1.13 2.8 1.52 2.56 1.89 2.19 
+1.06 0.91 1.15 0.78 1.21 0.65 1.3 0.45 1.37 0.31 1.43 0.08 41.06 0 0 -8.31 
+-37.41 0 -1.13 -0.07 -1.04 -0.21 -1.84 -0.76 -1.55 -1.17 -1.21 -1.5 -0.93 -1.69 -0.63 -1.83 
+-0.39 -1.87 -0.13 -1.82 0.08 -1.26 0.22 -1.28 0.83 -2.5 1.37 -2.37 1.86 -2.14 1.11 -0.95 
+1.21 -0.87 1.32 -0.75 1.43 -0.65 1.52 -0.55 1.63 -0.39 1.74 -0.24 1.8 -0.09 30.14 0 
+0 -8.31 -52.49 0 f*
+215.67 1624.54 0.15 2.41 0.43 2.34 0.72 2.29 0.97 2.17 1.21 2.11 1.43 1.95 1.67 1.84 
+1.84 1.71 2.04 1.57 2.21 1.39 2.37 1.21 2.5 1.02 2.61 0.8 2.73 0.61 2.8 0.37 
+2.91 0.13 2.88 -0.13 2.8 -0.37 2.69 -0.61 2.58 -0.8 2.46 -1.02 2.32 -1.21 2.15 -1.39 
+1.99 -1.57 1.8 -1.71 1.61 -1.84 1.41 -1.95 1.18 -2.11 0.93 -2.17 0.7 -2.29 0.43 -2.34 
+0.13 -2.41 -0.13 -2.43 -0.43 -2.34 -0.7 -2.29 -0.93 -2.17 -1.18 -2.08 -1.41 -1.98 -1.61 -1.84 
+-1.8 -1.71 -1.99 -1.57 -2.15 -1.39 -2.32 -1.19 -2.46 -1.02 -2.58 -0.82 -2.69 -0.61 -2.8 -0.37 
+-2.88 -0.11 0 8.83 3.99 0.26 3.77 0.78 1.76 0.56 1.66 0.7 1.59 0.8 1.43 0.91 
+1.33 1.04 1.19 1.13 1.04 1.24 0.87 1.34 0.7 1.43 0.5 1.54 0.33 1.63 0.11 1.71 
+-0.11 1.7 -0.33 1.63 -0.5 1.54 -0.7 1.43 -0.87 1.34 -1.04 1.24 -1.19 1.13 -1.33 1.04 
+-1.43 0.91 -1.59 0.8 -1.66 0.7 -1.76 0.56 -3.77 0.78 -3.99 0.26 -4.04 -0.26 -3.82 -0.78 
+-1.82 -0.56 -1.71 -0.7 -1.61 -0.8 -1.5 -0.91 -1.37 -1.04 -1.23 -1.13 -1.09 -1.24 -0.91 -1.34 
+-0.71 -1.43 -0.54 -1.54 -0.33 -1.63 -0.13 -1.7 0.13 -1.71 0.33 -1.63 0.54 -1.54 0.71 -1.43 
+0.91 -1.34 1.09 -1.24 1.23 -1.13 1.37 -1.04 1.5 -0.91 1.61 -0.8 1.71 -0.7 1.82 -0.56 
+3.82 -0.78 4.04 -0.26 0 -8.83 -2.91 0.11 -2.8 0.37 -2.73 0.61 -2.61 0.82 -2.5 1.02 
+-2.37 1.19 -2.21 1.39 -2.04 1.57 -1.84 1.71 -1.67 1.84 -1.43 1.98 -1.21 2.08 -0.97 2.17 
+-0.72 2.29 -0.43 2.34 -0.15 2.43 f*
+217.23 1660.42 0 7.27 7.79 0 -2.5 2.09 -2.04 1.97 -1.63 1.91 -1.24 1.89 -0.91 1.93 
+-0.61 1.98 -0.32 2.11 -0.11 2.26 0.5 3.71 0.43 1.78 0.69 1.71 1 1.7 1.39 1.69 
+1.89 1.7 2.41 1.73 -2.3 2.11 -1.85 2.02 -1.45 1.99 -1.09 1.95 -0.78 1.96 -0.5 1.98 
+-0.26 2.02 -0.09 2.11 0.19 2.58 0.61 2.62 1 2.54 1.45 2.32 0.87 1.07 1 0.95 
+1.11 0.85 1.24 0.74 1.32 0.58 1.45 0.46 1.59 0.26 1.69 0.11 40.54 0 0 -8.33 
+-37.41 0 -1.91 -0.22 -1.76 -0.66 -1.58 -0.99 -1.39 -1.24 -1.13 -1.46 -0.86 -1.58 -0.55 -1.61 
+-0.2 -1.61 0.26 -2.17 0.74 -2.19 1.17 -2.11 1.54 -1.91 1.87 -1.65 2.11 -1.3 2.32 -0.85 
+1.23 -0.22 1.24 -0.09 34.31 0 0 -8.31 -37.41 0 -1.91 -0.24 -1.76 -0.65 -1.58 -1 
+-1.39 -1.3 -1.13 -1.5 -0.86 -1.67 -0.55 -1.75 -0.2 -1.76 0.24 -1.86 0.69 -1.98 1.11 -1.99 
+1.48 -1.91 1.82 -1.67 2.13 -1.32 1.17 -0.52 1.21 -0.37 1.3 -0.24 1.32 -0.09 34.31 0 
+0 -8.31 -52.49 0 f*
+232.83 1742.55 -3.12 0.26 -1.57 0.35 -1.52 0.52 -1.48 0.65 -1.41 0.83 -1.34 0.98 -1.25 1.15 
+-1.18 1.32 -1.07 1.52 -0.93 1.71 -0.78 1.89 -0.65 2.08 -0.48 2.3 -0.29 2.52 -0.11 2.71 
+0.13 2.93 0.43 3.21 0.8 3.3 1.24 3.17 0.78 1.45 0.93 1.34 1.06 1.22 1.2 1.06 
+1.36 0.86 1.52 0.65 1.67 0.41 1.87 0.13 33.27 0 0.93 0.17 0.8 0.52 0.67 0.74 
+0.52 0.91 0.34 1 0.16 1.04 -0.05 1 -0.26 0.87 6.23 0 0.46 -2.02 0.07 -3.19 
+-0.05 -2.26 -0.2 -1.76 -0.39 -1.37 -0.61 -1.04 -0.86 -0.84 -1.17 -0.7 -3.47 -1.39 3.25 -4.45 
+1.17 -1.89 0.89 -1.87 0.67 -1.88 0.43 -2.05 0.26 -2.32 0.07 -2.71 -0.09 -2.32 -0.24 -2.12 
+-0.39 -1.91 -0.52 -1.72 -0.67 -1.54 -0.78 -1.35 -0.87 -1.19 -0.98 -1.04 -1.06 -0.87 -1.15 -0.74 
+-1.2 -0.58 -1.26 -0.48 -2.62 -0.59 -2.73 -0.17 0 7.79 1.54 0.19 1.43 0.57 1.32 0.91 
+1.17 1.26 0.98 1.56 0.74 1.87 0.46 2.14 0.17 2.41 -0.46 3.5 -0.89 3.04 -1.24 2.58 
+-1.52 2.13 -1.67 1.66 -1.76 1.2 -1.75 0.74 -1.63 0.24 -10.39 0 1.43 -3.93 0.76 -3.23 
+1.43 -9.48 0.88 -2.78 0.97 -2.19 1.11 -1.65 1.21 -1.17 1.33 -0.8 1.39 -0.48 1.47 -0.21 
+1.52 -0.07 0 -7.79 -3.89 0.21 -3.14 0.65 -1.34 0.48 -1.19 0.59 -1.04 0.7 -0.96 0.8 
+-0.83 0.91 -0.71 1 -1.21 2.32 -0.96 2.73 -0.83 3.12 -2.08 13.5 -0.87 3.25 -0.5 1.17 
+-0.52 0.91 -0.54 0.65 -0.57 0.46 -0.58 0.24 -0.59 0.09 -4.67 0 -0.89 -0.15 -1.04 -0.48 
+-1.13 -0.8 -1.11 -1.17 -1 -1.56 -0.83 -1.98 -0.56 -2.43 -0.22 -2.87 0.24 -3.08 0.65 -2.61 
+0.98 -2.15 1.25 -1.71 1.46 -1.33 1.56 -0.91 1.63 -0.52 1.61 -0.18 0 -8.31 f*
+196.961 1798.7 72.7656 8.3125 re
+f*
+217.23 1815.84 0 9.35 40.53 13 -40.53 14.56 0 9.36 66.01 -24.44 2.75 -1.71 2.07 -1.71 
+1.47 -1.68 1 -1.65 0.58 -1.64 0.33 -1.67 0.13 -3.43 -0.13 -1.95 -0.91 -2.73 -7.29 0 
+0.61 3.17 0.04 1.56 -0.2 1.5 -0.49 1.41 -0.92 1.28 -1.34 1.11 -1.84 0.89 -8.85 3.12 
+-53.02 -17.68 f*
+196.96 1915.15 0 5.18 6.01 -3.25 5.99 -2.8 5.97 -2.32 5.95 -1.89 5.94 -1.43 5.95 -1.02 
+6 -0.58 6.03 -0.2 5.28 0.2 5.66 0.58 5.93 1.02 6.07 1.43 6.08 1.89 5.99 2.32 
+5.8 2.8 2.78 1.56 2.7 1.69 0 -5.18 -2.17 -1.74 -2.41 -1.67 -2.6 -1.61 -2.76 -1.54 
+-5.95 -2.82 -6.27 -2.45 -6.42 -2.02 -6.29 -1.52 -5.99 -0.93 -2.78 -0.26 -2.63 -0.09 -3.32 0.09 
+-3.26 0.26 -3.25 0.39 -3.21 0.55 -6.29 1.52 -6.14 2.02 -5.95 2.45 -5.73 2.82 -5.47 3.14 
+-5.21 3.41 f*
+201.63 1944.77 0.09 1.73 0.28 1.7 0.41 1.63 0.59 1.58 0.74 1.5 0.87 1.41 0.98 1.33 
+1.13 1.21 1.21 1.13 1.32 0.97 1.41 0.87 1.5 0.73 1.58 0.59 1.63 0.43 1.69 0.26 
+1.74 0.08 1.73 -0.08 1.7 -0.26 1.63 -0.43 1.56 -0.59 1.5 -0.73 1.41 -0.87 1.32 -0.97 
+1.24 -1.13 1.11 -1.21 1 -1.33 0.87 -1.41 0.71 -1.5 0.59 -1.58 0.43 -1.63 0.26 -1.7 
+0.09 -1.73 -0.09 -1.74 -0.26 -1.68 -0.43 -1.65 -0.59 -1.56 -0.71 -1.49 -0.87 -1.41 -1 -1.33 
+-1.11 -1.23 -1.24 -1.11 -1.32 -1 -1.41 -0.87 -1.5 -0.71 -1.56 -0.59 -1.63 -0.43 -1.7 -0.26 
+-1.73 -0.08 0 7.27 1.91 0.21 1.82 0.61 1.67 0.93 1.48 1.23 1.24 1.48 0.93 1.67 
+0.61 1.82 0.22 1.91 -0.22 1.93 -0.61 1.8 -0.93 1.7 -1.24 1.48 -1.48 1.23 -1.67 0.93 
+-1.82 0.61 -1.91 0.2 -1.93 -0.2 -1.8 -0.61 -1.7 -0.93 -1.47 -1.23 -1.24 -1.48 -0.93 -1.7 
+-0.61 -1.8 -0.2 -1.93 0.2 -1.91 0.61 -1.82 0.93 -1.67 1.24 -1.48 1.47 -1.23 1.7 -0.93 
+1.8 -0.61 1.93 -0.21 0 -7.27 -1.74 0.08 -1.69 0.26 -1.63 0.43 -1.58 0.59 -1.5 0.71 
+-1.41 0.87 -1.32 1 -1.21 1.11 -1.13 1.23 -0.98 1.33 -0.87 1.41 -0.74 1.49 -0.59 1.56 
+-0.41 1.65 -0.28 1.68 -0.09 1.74 f*
+199.02 1985.33 0 6.75 72.79 -39.5 0 -6.77 -72.79 39.52 f*
+237.5 1993.64 0.09 1.74 0.25 1.69 0.44 1.63 0.58 1.59 0.74 1.49 0.87 1.41 0.98 1.32 
+1.13 1.21 1.21 1.11 1.32 1 1.41 0.87 1.5 0.74 1.58 0.59 1.63 0.41 1.69 0.29 
+1.74 0.08 1.73 -0.08 1.67 -0.29 1.65 -0.41 1.56 -0.59 1.5 -0.74 1.41 -0.87 1.32 -1 
+1.24 -1.11 1.11 -1.21 1 -1.32 0.87 -1.41 0.72 -1.49 0.58 -1.59 0.43 -1.63 0.26 -1.69 
+0.09 -1.74 -0.09 -1.73 -0.26 -1.7 -0.43 -1.63 -0.58 -1.56 -0.72 -1.5 -0.87 -1.41 -1 -1.33 
+-1.11 -1.23 -1.24 -1.11 -1.32 -1 -1.41 -0.87 -1.5 -0.74 -1.56 -0.57 -1.65 -0.43 -1.67 -0.26 
+-1.73 -0.08 0 7.27 1.91 0.22 1.82 0.59 1.67 0.96 1.48 1.23 1.24 1.48 0.93 1.67 
+0.61 1.82 0.22 1.91 -0.22 1.91 -0.61 1.82 -0.93 1.67 -1.24 1.5 -1.48 1.21 -1.67 0.96 
+-1.82 0.61 -1.91 0.2 -1.93 -0.2 -1.8 -0.61 -1.7 -0.96 -1.47 -1.21 -1.24 -1.5 -0.93 -1.67 
+-0.61 -1.82 -0.2 -1.91 0.2 -1.91 0.61 -1.82 0.93 -1.67 1.24 -1.48 1.47 -1.23 1.7 -0.96 
+1.8 -0.59 1.93 -0.22 0 -7.27 -1.74 0.08 -1.69 0.26 -1.63 0.43 -1.58 0.57 -1.5 0.74 
+-1.41 0.87 -1.32 1 -1.21 1.11 -1.13 1.23 -0.98 1.33 -0.87 1.41 -0.74 1.5 -0.58 1.56 
+-0.44 1.63 -0.25 1.7 -0.09 1.73 f*
+196.96 2017.55 0 5.21 6.1 3.99 6.18 3.43 6.23 2.86 6.18 2.32 6.08 1.79 5.93 1.25 
+5.71 0.74 5.42 0.24 5.43 -0.26 5.75 -0.81 5.93 -1.32 6.04 -1.82 6.01 -2.37 5.95 -2.84 
+5.73 -3.37 2.76 -1.87 2.7 -1.97 0 -5.21 -5.47 3.13 -5.49 2.71 -5.56 2.32 -5.64 1.91 
+-5.77 1.49 -5.92 1.09 -6.1 0.65 -6.32 0.22 -6.16 -0.2 -5.99 -0.61 -5.93 -1 -5.84 -1.46 
+-5.86 -1.86 -5.9 -2.35 -6.01 -2.78 -6.14 -3.28 f*
+819.18 880.92 4.58 0 0 -56.55 -7.07 0 0 40.34 -12.48 0 0 5 5.04 0.58 
+2.25 0.48 2.06 0.8 0.95 0.56 0.88 0.72 0.82 0.85 0.74 1.02 0.67 1.24 0.61 1.41 
+0.52 1.67 0.43 1.88 f*
+862.43 880.92 2.06 -0.08 1.95 -0.29 1.89 -0.45 1.75 -0.65 1.67 -0.87 1.54 -1.09 1.43 -1.28 
+1.3 -1.52 1.19 -1.76 1.04 -1.99 0.93 -2.26 0.76 -2.5 0.63 -2.75 0.48 -3.04 0.32 -3.32 
+0.16 -3.6 -0.11 -4.45 -0.37 -4.06 -0.59 -3.62 -0.78 -3.26 -0.96 -2.9 -1.15 -2.54 -1.29 -2.21 
+-1.41 -1.91 -1.54 -1.61 -1.65 -1.34 -1.71 -1.07 -1.79 -0.84 -1.84 -0.63 -1.87 -0.44 -1.87 -0.24 
+-1.88 -0.06 -2.89 0.21 -2.69 0.65 -2.48 1.13 -2.23 1.58 -1.98 2.08 -1.64 2.59 -1.35 3.11 
+-0.95 3.62 7.07 0 0.67 -2.06 0.8 -1.75 0.95 -1.5 1.09 -1.24 1.25 -0.96 1.41 -0.67 
+1.58 -0.41 1.79 -0.15 1.58 0.11 1.47 0.33 1.39 0.55 1.26 0.71 1.15 0.89 1.07 1.06 
+0.95 1.24 0.85 1.37 0.76 1.5 0.66 1.65 0.97 3.61 0.59 3.97 0.2 4.25 -1.96 -1.95 
+-1.86 -1.48 -1.76 -1.11 -1.65 -0.79 -1.54 -0.48 -1.46 -0.3 -2.66 -0.15 -2.2 0.17 -2.04 0.38 
+-1.89 0.52 -1.75 0.7 -1.59 0.84 -1.48 0.98 -1.3 1.13 -1.17 1.22 -1.02 1.34 -0.87 1.43 
+-0.72 1.52 -0.59 1.61 -0.43 1.65 -0.28 1.71 -0.15 1.76 0 1.78 7.08 0 0.21 -2.21 
+0.61 -2.19 1 -2.11 1.34 -1.91 1.7 -1.65 2 -1.28 1.08 -0.48 1.17 -0.37 1.24 -0.22 
+1.3 -0.07 1.3 0.07 1.21 0.22 1.17 0.37 1.11 0.48 1.99 1.28 1.67 1.65 1.37 1.91 
+0.98 2.11 0.63 2.19 0.2 2.21 -0.2 2.2 -0.62 2.21 -0.98 2.11 -1.37 1.91 -1.67 1.63 
+-1.99 1.3 -1.11 0.48 -1.17 0.35 -1.21 0.21 -1.3 0.09 -1.3 -0.09 -1.24 -0.21 -1.17 -0.35 
+-1.08 -0.48 -2 -1.3 -1.7 -1.62 -1.34 -1.91 -1 -2.11 -0.61 -2.21 -0.21 -2.2 -7.08 0 
+0.02 1.85 0.2 1.82 0.37 1.76 0.54 1.69 0.7 1.65 0.85 1.54 1.02 1.43 1.15 1.35 
+1.31 1.23 1.43 1.11 1.57 0.95 1.69 0.8 1.8 0.65 1.93 0.48 2.02 0.28 2.14 0.11 f*
+924.83 866.36 -7.08 0 -0.48 1.91 -0.72 1.67 -0.97 1.43 -1.17 1.17 -1.3 0.93 -1.45 0.67 
+-1.5 0.39 -1.56 0.15 -1.52 -0.11 -1.4 -0.26 -1.35 -0.46 -1.23 -0.62 -1.17 -0.81 -1.04 -0.95 
+-0.98 -1.13 -0.87 -1.28 -0.76 -1.46 -0.68 -1.58 -1.04 -3.63 -0.63 -4.2 -0.21 -4.73 1.69 1.82 
+1.67 1.43 1.67 1.11 1.67 0.79 1.69 0.54 1.71 0.35 3.6 0.22 2.78 -0.29 2.87 -0.82 
+1.43 -0.63 1.41 -0.78 1.37 -0.91 1.28 -1.04 1.2 -1.21 1.11 -1.35 0.95 -1.49 0.83 -1.65 
+0.65 -1.8 0.48 -1.96 0.26 -2.11 0.04 -2.28 -7.07 -0.41 -0.24 2.34 -0.7 2.23 -1.11 2.13 
+-1.43 1.89 -1.74 1.58 -1.97 1.24 -2.17 0.78 -1.13 0.22 -1.15 0.07 -1.17 -0.07 -1.13 -0.22 
+-2.16 -0.78 -1.98 -1.24 -1.73 -1.58 -1.43 -1.89 -1.11 -2.13 -0.7 -2.23 -0.24 -2.34 0.24 -2.32 
+0.7 -2.25 1.11 -2.11 1.43 -1.89 1.73 -1.61 1.98 -1.21 2.16 -0.8 1.13 -0.2 1.17 -0.09 
+1.15 0.09 1.13 0.2 2.17 0.8 1.97 1.21 1.74 1.61 1.43 1.89 1.11 2.11 0.7 2.25 
+0.24 2.32 7.07 0.41 -0.28 -3.32 -0.35 -1.66 -0.48 -1.67 -0.63 -1.63 -0.79 -1.58 -0.93 -1.52 
+-1.06 -1.43 -1.24 -1.35 -1.37 -1.19 -1.54 -1.09 -1.7 -0.91 -1.84 -0.74 -2.02 -0.56 -2.17 -0.35 
+-2.32 -0.11 -2.56 0.15 -2.32 0.41 -2.14 0.69 -1.93 0.93 -1.75 1.17 -1.57 1.41 -1.39 1.63 
+-1.21 1.8 -1.04 2.02 -0.89 2.17 -0.74 2.32 -0.59 2.47 -0.44 2.61 -0.32 2.73 -0.24 5.75 
+0.09 3.43 0.26 3.25 0.44 3.05 0.58 2.91 0.76 2.69 0.93 2.49 1.06 2.29 1.24 2.08 
+1.37 1.87 1.54 1.63 1.67 1.39 1.82 1.17 1.96 0.91 2.08 0.65 2.23 0.41 2.34 0.13 
+1.7 -0.06 1.61 -0.24 1.52 -0.37 1.46 -0.48 1.39 -0.63 1.28 -0.74 2.3 -1.8 1.89 -2.15 
+1.5 -2.47 1.04 -2.71 0.57 -2.91 f*
+951.43 880.92 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.76 -1.09 1.65 -1.34 1.54 -1.58 1.43 -1.78 
+1.28 -1.98 1.17 -2.14 1.02 -2.3 0.89 -2.41 0.71 -2.49 0.59 -2.58 0.43 -2.63 0.24 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.24 -2.67 -0.43 -2.64 -0.59 -2.61 -0.71 -2.54 -0.89 -2.43 -1.02 -2.32 
+-1.17 -2.19 -1.28 -2.02 -1.43 -1.83 -1.54 -1.63 -1.65 -1.37 -1.76 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.06 0.17 -1.98 0.52 -1.87 0.82 -1.75 1.11 -1.65 1.37 -1.54 1.63 -1.43 1.83 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.89 2.43 -0.72 2.54 -0.59 2.61 -0.43 2.64 -0.24 2.67 
+-0.09 2.66 7.48 0 0.26 -5.07 0.71 -4.54 1.15 -3.97 1.45 -3.37 1.71 -2.71 0.93 -1.08 
+0.96 -0.91 1 -0.7 1 -0.52 1.02 -0.33 1.02 -0.11 1.02 0.11 1.02 0.33 1 0.52 
+0.99 0.7 0.96 0.91 0.93 1.08 1.71 2.71 1.46 3.37 1.15 3.97 0.71 4.54 0.26 5.07 
+-0.26 5.04 -0.71 4.5 -1.15 3.9 -1.46 3.3 -1.71 2.63 -0.93 1.04 -0.96 0.89 -0.99 0.68 
+-1 0.5 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -1.02 -0.3 -1 -0.5 -1 -0.68 -0.96 -0.89 
+-0.93 -1.04 -1.71 -2.62 -1.45 -3.3 -1.15 -3.9 -0.71 -4.5 -0.26 -5.04 -7.48 0 0.09 2.65 
+0.24 2.64 0.43 2.63 0.59 2.58 0.72 2.49 0.89 2.41 1.02 2.3 1.17 2.14 1.28 1.98 
+1.43 1.78 1.54 1.58 1.65 1.34 1.75 1.09 1.87 0.8 1.98 0.5 2.06 0.17 f*
+1298.57 880.92 4.58 0 0 -56.55 -7.07 0 0 40.34 -12.48 0 0 5 5.04 0.58 
+2.25 0.48 2.06 0.8 0.95 0.56 0.88 0.72 0.82 0.85 0.76 1.02 0.67 1.24 0.58 1.41 
+0.52 1.67 0.43 1.88 f*
+1341.82 880.92 2.06 -0.08 1.98 -0.29 1.87 -0.45 1.75 -0.65 1.67 -0.87 1.54 -1.09 1.43 -1.28 
+1.32 -1.52 1.17 -1.76 1.07 -1.99 0.91 -2.26 0.79 -2.5 0.63 -2.75 0.46 -3.04 0.32 -3.32 
+0.18 -3.6 -0.13 -4.45 -0.37 -4.06 -0.57 -3.62 -0.78 -3.26 -0.98 -2.9 -1.13 -2.54 -1.3 -2.21 
+-1.41 -1.91 -1.54 -1.61 -1.62 -1.34 -1.73 -1.07 -1.79 -0.84 -1.82 -0.63 -1.87 -0.44 -1.89 -0.24 
+-1.89 -0.06 -2.86 0.21 -2.71 0.65 -2.48 1.13 -2.23 1.58 -1.95 2.08 -1.67 2.59 -1.33 3.11 
+-0.97 3.62 7.07 0 0.67 -2.06 0.83 -1.75 0.93 -1.5 1.11 -1.24 1.23 -0.96 1.41 -0.67 
+1.61 -0.41 1.78 -0.15 1.59 0.11 1.47 0.33 1.37 0.55 1.25 0.71 1.17 0.89 1.05 1.06 
+0.95 1.24 0.87 1.37 0.74 1.5 0.65 1.65 0.97 3.61 0.61 3.97 0.2 4.25 -1.97 -1.95 
+-1.87 -1.48 -1.74 -1.11 -1.65 -0.79 -1.56 -0.48 -1.46 -0.3 -2.64 -0.15 -2.19 0.17 -2.04 0.38 
+-1.91 0.52 -1.73 0.7 -1.61 0.84 -1.46 0.98 -1.32 1.13 -1.15 1.22 -1.02 1.34 -0.89 1.43 
+-0.72 1.52 -0.59 1.61 -0.43 1.65 -0.28 1.71 -0.16 1.76 0.02 1.78 7.06 0 0.21 -2.21 
+0.61 -2.19 1 -2.11 1.37 -1.91 1.67 -1.65 2 -1.28 1.11 -0.48 1.15 -0.37 1.24 -0.22 
+1.3 -0.07 1.3 0.07 1.23 0.22 1.17 0.37 1.09 0.48 1.99 1.28 1.7 1.65 1.34 1.91 
+1 2.11 0.61 2.19 0.22 2.21 -0.22 2.2 -0.61 2.21 -1 2.11 -1.34 1.91 -1.7 1.63 
+-1.99 1.3 -1.09 0.48 -1.17 0.35 -1.23 0.21 -1.3 0.09 -1.3 -0.09 -1.24 -0.21 -1.15 -0.35 
+-1.11 -0.48 -2 -1.3 -1.67 -1.62 -1.37 -1.91 -1 -2.11 -0.61 -2.21 -0.21 -2.2 -7.06 0 
+0 1.85 0.2 1.82 0.38 1.76 0.54 1.69 0.7 1.65 0.88 1.54 0.99 1.43 1.15 1.35 
+1.3 1.23 1.43 1.11 1.56 0.95 1.69 0.8 1.83 0.65 1.9 0.48 2.05 0.28 2.12 0.11 f*
+1368.01 880.92 37.85 0 0 -5.81 -5.36 -8.07 -4.34 -6.95 -3.49 -6.12 -2.76 -5.64 -2.2 -5.47 
+-1.8 -5.6 -1.52 -6.05 -1.41 -6.84 -7.49 0 2.13 7.84 2.04 6.61 2.15 5.8 2.36 5.32 
+2.75 5.25 3.25 5.56 8.62 13.52 -30.79 0 0 6.66 f*
+1430.82 880.92 2.06 -0.17 1.97 -0.5 1.86 -0.8 1.76 -1.09 1.67 -1.34 1.54 -1.58 1.41 -1.78 
+1.3 -1.98 1.15 -2.14 1.02 -2.3 0.89 -2.41 0.74 -2.49 0.56 -2.58 0.43 -2.63 0.26 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.26 -2.67 -0.43 -2.64 -0.56 -2.61 -0.74 -2.54 -0.89 -2.43 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.63 -1.67 -1.37 -1.76 -1.11 -1.86 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.06 0.17 -1.95 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.37 -1.54 1.63 -1.41 1.83 
+-1.3 2.02 -1.15 2.19 -1.04 2.32 -0.87 2.43 -0.74 2.54 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.66 7.48 0 0.26 -5.07 0.74 -4.54 1.13 -3.97 1.46 -3.37 1.71 -2.71 0.93 -1.08 
+0.95 -0.91 1 -0.7 1.02 -0.52 0.99 -0.33 1.02 -0.11 1.02 0.11 1.02 0.33 1.02 0.52 
+0.97 0.7 0.98 0.91 0.93 1.08 1.7 2.71 1.48 3.37 1.13 3.97 0.73 4.54 0.26 5.07 
+-0.26 5.04 -0.73 4.5 -1.13 3.9 -1.48 3.3 -1.7 2.63 -0.93 1.04 -0.98 0.89 -0.97 0.68 
+-1.02 0.5 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -0.99 -0.3 -1.02 -0.5 -1 -0.68 -0.95 -0.89 
+-0.93 -1.04 -1.71 -2.62 -1.46 -3.3 -1.13 -3.9 -0.74 -4.5 -0.26 -5.04 -7.48 0 0.09 2.65 
+0.26 2.64 0.41 2.63 0.59 2.58 0.74 2.49 0.87 2.41 1.04 2.3 1.15 2.14 1.3 1.98 
+1.41 1.78 1.54 1.58 1.65 1.34 1.78 1.09 1.87 0.8 1.95 0.5 2.06 0.17 f*
+1777.95 880.92 4.58 0 0 -56.55 -7.07 0 0 40.34 -12.48 0 0 5 5.04 0.58 
+2.25 0.48 2.07 0.8 0.95 0.56 0.89 0.72 0.8 0.85 0.76 1.02 0.67 1.24 0.59 1.41 
+0.52 1.67 0.43 1.88 f*
+1821.2 880.92 2.07 -0.08 1.97 -0.29 1.87 -0.45 1.78 -0.65 1.65 -0.87 1.56 -1.09 1.43 -1.28 
+1.3 -1.52 1.17 -1.76 1.07 -1.99 0.91 -2.26 0.79 -2.5 0.63 -2.75 0.48 -3.04 0.32 -3.32 
+0.16 -3.6 -0.13 -4.45 -0.34 -4.06 -0.59 -3.62 -0.78 -3.26 -0.98 -2.9 -1.13 -2.54 -1.29 -2.21 
+-1.43 -1.91 -1.54 -1.61 -1.63 -1.34 -1.71 -1.07 -1.8 -0.84 -1.82 -0.63 -1.87 -0.44 -1.89 -0.24 
+-1.86 -0.06 -2.89 0.21 -2.69 0.65 -2.5 1.13 -2.23 1.58 -1.96 2.08 -1.67 2.59 -1.33 3.11 
+-0.97 3.62 7.07 0 0.7 -2.06 0.8 -1.75 0.95 -1.5 1.09 -1.24 1.23 -0.96 1.43 -0.67 
+1.58 -0.41 1.78 -0.15 1.59 0.11 1.48 0.33 1.37 0.55 1.25 0.71 1.17 0.89 1.07 1.06 
+0.95 1.24 0.85 1.37 0.74 1.5 0.65 1.65 1 3.61 0.59 3.97 0.2 4.25 -1.97 -1.95 
+-1.84 -1.48 -1.76 -1.11 -1.65 -0.79 -1.56 -0.48 -1.46 -0.3 -2.64 -0.15 -2.19 0.17 -2.04 0.38 
+-1.89 0.52 -1.75 0.7 -1.61 0.84 -1.46 0.98 -1.32 1.13 -1.15 1.22 -1.02 1.34 -0.87 1.43 
+-0.74 1.52 -0.59 1.61 -0.44 1.65 -0.28 1.71 -0.13 1.76 0 1.78 7.07 0 0.2 -2.21 
+0.63 -2.19 1 -2.11 1.34 -1.91 1.67 -1.65 2 -1.28 1.11 -0.48 1.17 -0.37 1.24 -0.22 
+1.28 -0.07 1.3 0.07 1.23 0.22 1.17 0.37 1.11 0.48 1.97 1.28 1.69 1.65 1.35 1.91 
+1 2.11 0.61 2.19 0.21 2.21 -0.21 2.2 -0.61 2.21 -1 2.11 -1.35 1.91 -1.69 1.63 
+-1.97 1.3 -1.11 0.48 -1.17 0.35 -1.23 0.21 -1.3 0.09 -1.28 -0.09 -1.24 -0.21 -1.17 -0.35 
+-1.11 -0.48 -2 -1.3 -1.67 -1.62 -1.34 -1.91 -1 -2.11 -0.63 -2.21 -0.2 -2.2 -7.07 0 
+0.02 1.85 0.17 1.82 0.38 1.76 0.54 1.69 0.69 1.65 0.88 1.54 0.99 1.43 1.17 1.35 
+1.31 1.23 1.43 1.11 1.57 0.95 1.67 0.8 1.82 0.65 1.91 0.48 2.04 0.28 2.12 0.11 f*
+1865.71 880.92 3.47 -0.24 3.23 -0.75 1.48 -0.55 1.41 -0.67 1.32 -0.78 1.19 -0.91 1.09 -0.99 
+0.98 -1.13 0.84 -1.21 0.72 -1.35 0.57 -1.43 0.41 -1.57 0.26 -1.62 0.08 -1.76 -0.2 -2.45 
+-0.52 -2.13 -0.78 -1.8 -1 -1.52 -1.17 -1.3 -1.26 -1.08 -2.56 -1.79 2.08 -1.06 1.87 -1.3 
+1.63 -1.54 1.39 -1.75 1.11 -1.91 0.8 -2.06 0.52 -2.2 0.15 -2.3 -0.07 -1.36 -0.24 -1.41 
+-0.39 -1.45 -0.55 -1.48 -0.7 -1.48 -0.84 -1.45 -1 -1.41 -1.15 -1.35 -1.3 -1.25 -1.45 -1.15 
+-1.61 -1.05 -1.76 -0.89 -1.91 -0.74 -2.05 -0.54 -2.19 -0.35 -2.34 -0.11 -2.34 0.11 -2.17 0.35 
+-2 0.54 -1.87 0.74 -1.7 0.89 -1.52 1.05 -1.39 1.15 -1.21 1.25 -1.08 1.35 -0.91 1.41 
+-0.78 1.45 -0.63 1.48 -0.84 2.93 -0.29 2.78 7.48 0 0.26 -2.28 0.7 -2.11 1.09 -1.91 
+1.45 -1.67 1.74 -1.36 1.97 -1.02 2.15 -0.65 2.3 -0.24 2.3 0.24 2.15 0.65 1.97 1.02 
+1.74 1.36 1.46 1.67 1.08 1.91 0.7 2.11 0.26 2.28 -0.26 2.28 -0.7 2.11 -1.08 1.91 
+-1.46 1.65 -1.74 1.37 -1.97 1.04 -2.15 0.65 -2.3 0.21 -2.3 -0.21 -2.15 -0.65 -1.97 -1.04 
+-1.74 -1.37 -1.45 -1.65 -1.09 -1.91 -0.7 -2.11 -0.26 -2.28 -7.48 0 0.18 2.28 0.5 2.15 
+0.82 2.02 1.11 1.87 1.39 1.72 1.63 1.54 1.86 1.39 2.09 1.17 -2.56 1.79 -1.26 1.08 
+-1.17 1.3 -1 1.52 -0.78 1.8 -0.52 2.13 -0.2 2.45 7.07 0 0.22 -1.93 0.59 -1.71 
+0.93 -1.5 1.23 -1.23 1.48 -1.02 1.69 -0.72 1.87 -0.45 1.97 -0.15 1.98 0.15 1.87 0.45 
+1.69 0.72 1.48 1.02 1.23 1.23 0.93 1.5 0.59 1.71 0.22 1.93 -0.22 1.93 -0.59 1.71 
+-0.93 1.5 -1.23 1.26 -1.48 1 -1.69 0.74 -1.87 0.45 -1.98 0.15 -1.97 -0.15 -1.87 -0.45 
+-1.69 -0.74 -1.48 -1 -1.23 -1.26 -0.93 -1.5 -0.59 -1.71 -0.22 -1.93 -7.07 0 0.08 1.76 
+0.26 1.62 0.42 1.57 0.56 1.43 0.72 1.35 0.84 1.21 0.96 1.13 1.11 0.99 1.19 0.91 
+1.33 0.78 1.39 0.67 1.49 0.55 3.23 0.75 3.47 0.24 f*
+1910.22 880.92 2.04 -0.17 1.97 -0.5 1.87 -0.8 1.78 -1.09 1.65 -1.34 1.54 -1.58 1.41 -1.78 
+1.3 -1.98 1.15 -2.14 1.02 -2.3 0.89 -2.41 0.74 -2.49 0.59 -2.58 0.41 -2.63 0.26 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.26 -2.67 -0.41 -2.64 -0.59 -2.61 -0.74 -2.54 -0.89 -2.43 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.63 -1.65 -1.37 -1.78 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.04 -0.17 -2.06 0.17 -1.98 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.37 -1.54 1.63 -1.41 1.83 
+-1.3 2.02 -1.15 2.19 -1.02 2.32 -0.89 2.43 -0.74 2.54 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.08 2.66 7.48 0 0.26 -5.07 0.74 -4.54 1.13 -3.97 1.46 -3.37 1.71 -2.71 0.93 -1.08 
+0.97 -0.91 0.98 -0.7 1.02 -0.52 1.02 -0.33 1.02 -0.11 1 0.11 1.02 0.33 1.02 0.52 
+0.97 0.7 0.98 0.91 0.93 1.08 1.71 2.71 1.46 3.37 1.13 3.97 0.73 4.54 0.26 5.07 
+-0.26 5.04 -0.73 4.5 -1.13 3.9 -1.46 3.3 -1.71 2.63 -0.93 1.04 -0.98 0.89 -0.97 0.68 
+-1.02 0.5 -1.02 0.3 -1 0.11 -1.02 -0.11 -1.02 -0.3 -1.02 -0.5 -0.98 -0.68 -0.97 -0.89 
+-0.93 -1.04 -1.71 -2.62 -1.46 -3.3 -1.13 -3.9 -0.74 -4.5 -0.26 -5.04 -7.48 0 0.08 2.65 
+0.26 2.64 0.41 2.63 0.59 2.58 0.74 2.49 0.89 2.41 1.02 2.3 1.15 2.14 1.3 1.98 
+1.41 1.78 1.54 1.58 1.65 1.34 1.78 1.09 1.87 0.8 1.98 0.5 2.06 0.17 f*
+2257.33 880.92 4.59 0 0 -56.55 -7.08 0 0 40.34 -12.46 0 0 5 5.01 0.58 
+2.28 0.48 2.06 0.8 0.93 0.56 0.89 0.72 0.82 0.85 0.74 1.02 0.67 1.24 0.61 1.41 
+0.5 1.67 0.43 1.88 f*
+2300.61 880.92 2.06 -0.08 1.95 -0.29 1.87 -0.45 1.78 -0.65 1.65 -0.87 1.56 -1.09 1.43 -1.28 
+1.3 -1.52 1.19 -1.76 1.04 -1.99 0.91 -2.26 0.79 -2.5 0.63 -2.75 0.48 -3.04 0.32 -3.32 
+0.15 -3.6 -0.13 -4.45 -0.34 -4.06 -0.59 -3.62 -0.78 -3.26 -0.95 -2.9 -1.15 -2.54 -1.28 -2.21 
+-1.43 -1.91 -1.52 -1.61 -1.65 -1.34 -1.71 -1.07 -1.79 -0.84 -1.84 -0.63 -1.87 -0.44 -1.88 -0.24 
+-1.87 -0.06 -2.89 0.21 -2.69 0.65 -2.48 1.13 -2.23 1.58 -1.97 2.08 -1.68 2.59 -1.32 3.11 
+-0.97 3.62 7.07 0 0.7 -2.06 0.8 -1.75 0.96 -1.5 1.08 -1.24 1.26 -0.96 1.41 -0.67 
+1.58 -0.41 1.79 -0.15 1.58 0.11 1.48 0.33 1.37 0.55 1.28 0.71 1.15 0.89 1.07 1.06 
+0.95 1.24 0.85 1.37 0.76 1.5 0.63 1.65 1 3.61 0.59 3.97 0.2 4.25 -1.97 -1.95 
+-1.84 -1.48 -1.76 -1.11 -1.65 -0.79 -1.54 -0.48 -1.46 -0.3 -2.66 -0.15 -2.2 0.17 -2.04 0.38 
+-1.89 0.52 -1.75 0.7 -1.61 0.84 -1.46 0.98 -1.3 1.13 -1.17 1.22 -1.02 1.34 -0.87 1.43 
+-0.74 1.52 -0.56 1.61 -0.44 1.65 -0.3 1.71 -0.13 1.76 0 1.78 7.08 0 0.21 -2.21 
+0.61 -2.19 1 -2.11 1.34 -1.91 1.7 -1.65 1.97 -1.28 1.11 -0.48 1.17 -0.37 1.24 -0.22 
+1.3 -0.07 1.29 0.07 1.23 0.22 1.17 0.37 1.11 0.48 1.99 1.28 1.67 1.65 1.35 1.91 
+1 2.11 0.61 2.19 0.21 2.21 -0.21 2.2 -0.61 2.21 -1 2.11 -1.35 1.91 -1.67 1.63 
+-1.99 1.3 -1.11 0.48 -1.17 0.35 -1.23 0.21 -1.29 0.09 -1.3 -0.09 -1.24 -0.21 -1.17 -0.35 
+-1.11 -0.48 -1.97 -1.3 -1.7 -1.62 -1.34 -1.91 -1 -2.11 -0.61 -2.21 -0.21 -2.2 -7.08 0 
+0.02 1.85 0.2 1.82 0.37 1.76 0.52 1.69 0.71 1.65 0.85 1.54 1.02 1.43 1.15 1.35 
+1.31 1.23 1.43 1.11 1.56 0.95 1.7 0.8 1.8 0.65 1.93 0.48 2.02 0.28 2.14 0.11 f*
+2345.09 880.92 2.06 -0.08 1.98 -0.29 1.87 -0.45 1.78 -0.65 1.65 -0.87 1.54 -1.09 1.43 -1.28 
+1.32 -1.52 1.17 -1.76 1.07 -1.99 0.91 -2.26 0.78 -2.5 0.64 -2.75 0.48 -3.04 0.3 -3.32 
+0.17 -3.6 -0.13 -4.45 -0.37 -4.06 -0.57 -3.62 -0.78 -3.26 -0.97 -2.9 -1.13 -2.54 -1.29 -2.21 
+-1.43 -1.91 -1.54 -1.61 -1.63 -1.34 -1.72 -1.07 -1.8 -0.84 -1.82 -0.63 -1.87 -0.44 -1.89 -0.24 
+-1.87 -0.06 -2.88 0.21 -2.7 0.65 -2.5 1.13 -2.23 1.58 -1.96 2.08 -1.67 2.59 -1.32 3.11 
+-0.98 3.62 7.08 0 0.67 -2.06 0.82 -1.75 0.93 -1.5 1.11 -1.24 1.23 -0.96 1.43 -0.67 
+1.58 -0.41 1.78 -0.15 1.59 0.11 1.47 0.33 1.37 0.55 1.26 0.71 1.17 0.89 1.06 1.06 
+0.93 1.24 0.87 1.37 0.73 1.5 0.66 1.65 0.99 3.61 0.59 3.97 0.2 4.25 -1.98 -1.95 
+-1.87 -1.48 -1.73 -1.11 -1.65 -0.79 -1.56 -0.48 -1.46 -0.3 -2.64 -0.15 -2.19 0.17 -2.04 0.38 
+-1.91 0.52 -1.73 0.7 -1.61 0.84 -1.46 0.98 -1.32 1.13 -1.16 1.22 -1.02 1.34 -0.89 1.43 
+-0.72 1.52 -0.59 1.61 -0.43 1.65 -0.29 1.71 -0.12 1.76 0 1.78 7.07 0 0.2 -2.21 
+0.63 -2.19 0.98 -2.11 1.37 -1.91 1.67 -1.65 2 -1.28 1.11 -0.48 1.17 -0.37 1.21 -0.22 
+1.3 -0.07 1.3 0.07 1.23 0.22 1.17 0.37 1.09 0.48 2 1.28 1.69 1.65 1.35 1.91 
+0.99 2.11 0.61 2.19 0.21 2.21 -0.21 2.2 -0.61 2.21 -0.99 2.11 -1.35 1.91 -1.69 1.63 
+-2 1.3 -1.09 0.48 -1.17 0.35 -1.23 0.21 -1.3 0.09 -1.3 -0.09 -1.21 -0.21 -1.17 -0.35 
+-1.11 -0.48 -2 -1.3 -1.67 -1.62 -1.37 -1.91 -0.98 -2.11 -0.63 -2.21 -0.2 -2.2 -7.07 0 
+0 1.85 0.19 1.82 0.38 1.76 0.54 1.69 0.69 1.65 0.87 1.54 1 1.43 1.17 1.35 
+1.29 1.23 1.43 1.11 1.59 0.95 1.67 0.8 1.82 0.65 1.91 0.48 2.04 0.28 2.13 0.11 f*
+2389.61 880.92 2.06 -0.17 1.95 -0.5 1.88 -0.8 1.76 -1.09 1.65 -1.34 1.54 -1.58 1.41 -1.78 
+1.3 -1.98 1.17 -2.14 1.02 -2.3 0.87 -2.41 0.74 -2.49 0.59 -2.58 0.41 -2.63 0.26 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.26 -2.67 -0.41 -2.64 -0.59 -2.61 -0.74 -2.54 -0.87 -2.43 -1.02 -2.32 
+-1.17 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.63 -1.65 -1.37 -1.76 -1.11 -1.88 -0.82 -1.95 -0.52 
+-2.06 -0.17 -2.06 0.17 -1.98 0.52 -1.87 0.82 -1.75 1.11 -1.67 1.37 -1.52 1.63 -1.43 1.83 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.89 2.43 -0.74 2.54 -0.57 2.61 -0.43 2.64 -0.26 2.67 
+-0.08 2.66 7.48 0 0.26 -5.07 0.74 -4.54 1.13 -3.97 1.48 -3.37 1.71 -2.71 0.91 -1.08 
+0.97 -0.91 1 -0.7 1 -0.52 1.02 -0.33 1.02 -0.11 1.02 0.11 1.02 0.33 1 0.52 
+1 0.7 0.95 0.91 0.93 1.08 1.72 2.71 1.45 3.37 1.13 3.97 0.74 4.54 0.26 5.07 
+-0.26 5.04 -0.74 4.5 -1.13 3.9 -1.45 3.3 -1.72 2.63 -0.93 1.04 -0.95 0.89 -1 0.68 
+-1 0.5 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -1.02 -0.3 -1 -0.5 -1 -0.68 -0.97 -0.89 
+-0.91 -1.04 -1.71 -2.62 -1.48 -3.3 -1.13 -3.9 -0.74 -4.5 -0.26 -5.04 -7.48 0 0.08 2.65 
+0.26 2.64 0.43 2.63 0.57 2.58 0.74 2.49 0.89 2.41 1.02 2.3 1.17 2.14 1.28 1.98 
+1.43 1.78 1.52 1.58 1.67 1.34 1.75 1.09 1.87 0.8 1.98 0.5 2.06 0.17 f*
+2720.31 861.37 7.05 0 0.2 2.84 0.52 2.58 0.89 2.26 1.25 1.95 1.63 1.56 2.02 1.16 
+2.36 0.71 2.78 0.26 2.15 -0.2 2 -0.56 1.84 -0.91 1.61 -1.26 1.32 -1.54 1.02 -1.84 
+0.65 -2.13 0.22 -2.39 -0.2 -2.41 -0.59 -2.02 -0.98 -1.71 -1.41 -1.54 -1.8 -1.45 -2.21 -1.5 
+-5.71 -3.5 -4.82 -2.82 -3.93 -2.84 -1.67 -1.46 -1.45 -1.45 -1.28 -1.5 -1.09 -1.52 -0.93 -1.56 
+-0.78 -1.61 -0.63 -1.63 -0.5 -1.7 -0.61 -3.54 -0.2 -3.75 37.84 0 0 6.64 -29.94 0 
+0.75 2.56 1.02 2.13 1.32 1.8 1.7 1.63 2.06 1.54 2.52 1.58 6.45 3.73 3.71 1.84 
+3.13 2.08 2.52 2.26 1.97 2.41 1.45 2.49 1.02 2.54 0.56 2.56 0.17 2.54 -0.09 1.76 
+-0.28 1.67 -0.46 1.61 -0.63 1.52 -0.78 1.43 -0.91 1.34 -1.06 1.24 -1.2 1.13 -1.3 1 
+-1.41 0.91 -1.52 0.78 -1.59 0.63 -1.67 0.52 -1.75 0.37 -1.81 0.24 -1.84 0.06 -1.99 -0.06 
+-1.91 -0.21 -1.84 -0.37 -1.73 -0.52 -1.65 -0.67 -1.54 -0.82 -1.43 -0.98 -1.3 -1.13 -1.17 -1.3 
+-1.06 -1.43 -0.91 -1.61 -0.76 -1.76 -0.58 -1.93 -0.46 -2.08 -0.26 -2.24 -0.09 -2.43 f*
+2782.68 880.92 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.76 -1.09 1.67 -1.34 1.54 -1.58 1.41 -1.78 
+1.3 -1.98 1.15 -2.14 1.02 -2.3 0.89 -2.41 0.74 -2.49 0.58 -2.58 0.41 -2.63 0.26 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.26 -2.67 -0.41 -2.64 -0.58 -2.61 -0.74 -2.54 -0.89 -2.43 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.63 -1.67 -1.37 -1.76 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.06 0.17 -1.95 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.37 -1.54 1.63 -1.41 1.83 
+-1.3 2.02 -1.15 2.19 -1.04 2.32 -0.87 2.43 -0.74 2.54 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.66 7.48 0 0.26 -5.07 0.74 -4.54 1.13 -3.97 1.45 -3.37 1.71 -2.71 0.93 -1.08 
+0.96 -0.91 1 -0.7 1.02 -0.52 0.99 -0.33 1.02 -0.11 1.02 0.11 1.02 0.33 1.02 0.52 
+0.97 0.7 0.98 0.91 0.93 1.08 1.71 2.71 1.45 3.37 1.14 3.97 0.73 4.54 0.26 5.07 
+-0.26 5.04 -0.73 4.5 -1.14 3.9 -1.45 3.3 -1.71 2.63 -0.93 1.04 -0.98 0.89 -0.97 0.68 
+-1.02 0.5 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -0.99 -0.3 -1.02 -0.5 -1 -0.68 -0.96 -0.89 
+-0.93 -1.04 -1.71 -2.62 -1.45 -3.3 -1.13 -3.9 -0.74 -4.5 -0.26 -5.04 -7.48 0 0.09 2.65 
+0.26 2.64 0.41 2.63 0.59 2.58 0.74 2.49 0.87 2.41 1.04 2.3 1.15 2.14 1.3 1.98 
+1.41 1.78 1.54 1.58 1.65 1.34 1.78 1.09 1.87 0.8 1.95 0.5 2.06 0.17 f*
+2827.2 880.92 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.76 -1.09 1.65 -1.34 1.54 -1.58 1.43 -1.78 
+1.28 -1.98 1.18 -2.14 1.02 -2.3 0.89 -2.41 0.71 -2.49 0.59 -2.58 0.43 -2.63 0.24 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.24 -2.67 -0.43 -2.64 -0.59 -2.61 -0.71 -2.54 -0.89 -2.43 -1.02 -2.32 
+-1.18 -2.19 -1.28 -2.02 -1.43 -1.83 -1.54 -1.63 -1.65 -1.37 -1.76 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.07 0.17 -1.97 0.52 -1.87 0.82 -1.75 1.11 -1.65 1.37 -1.54 1.63 -1.43 1.83 
+-1.28 2.02 -1.17 2.19 -1.02 2.32 -0.89 2.43 -0.71 2.54 -0.59 2.61 -0.43 2.64 -0.24 2.67 
+-0.09 2.66 7.49 0 0.26 -5.07 0.71 -4.54 1.15 -3.97 1.45 -3.37 1.71 -2.71 0.93 -1.08 
+0.96 -0.91 1 -0.7 0.99 -0.52 1.02 -0.33 1.02 -0.11 1.02 0.11 1.02 0.33 0.99 0.52 
+1 0.7 0.96 0.91 0.93 1.08 1.71 2.71 1.45 3.37 1.15 3.97 0.71 4.54 0.26 5.07 
+-0.26 5.04 -0.71 4.5 -1.15 3.9 -1.45 3.3 -1.71 2.63 -0.93 1.04 -0.96 0.89 -1 0.68 
+-0.99 0.5 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -1.02 -0.3 -0.99 -0.5 -1 -0.68 -0.96 -0.89 
+-0.93 -1.04 -1.71 -2.62 -1.45 -3.3 -1.15 -3.9 -0.71 -4.5 -0.26 -5.04 -7.49 0 0.09 2.65 
+0.24 2.64 0.43 2.63 0.59 2.58 0.71 2.49 0.89 2.41 1.02 2.3 1.17 2.14 1.28 1.98 
+1.43 1.78 1.54 1.58 1.65 1.34 1.75 1.09 1.87 0.8 1.97 0.5 2.07 0.17 f*
+2871.7 880.92 2.06 -0.17 1.96 -0.5 1.86 -0.8 1.78 -1.09 1.65 -1.34 1.54 -1.58 1.41 -1.78 
+1.3 -1.98 1.15 -2.14 1.04 -2.3 0.87 -2.41 0.74 -2.49 0.59 -2.58 0.41 -2.63 0.26 -2.64 
+0.09 -2.65 -0.09 -2.66 -0.26 -2.67 -0.41 -2.64 -0.59 -2.61 -0.74 -2.54 -0.87 -2.43 -1.04 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.63 -1.65 -1.37 -1.78 -1.11 -1.86 -0.82 -1.96 -0.52 
+-2.06 -0.17 -2.06 0.17 -1.97 0.52 -1.87 0.82 -1.76 1.11 -1.67 1.37 -1.54 1.63 -1.41 1.83 
+-1.3 2.02 -1.15 2.19 -1.02 2.32 -0.89 2.43 -0.74 2.54 -0.58 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.66 7.49 0 0.26 -5.07 0.73 -4.54 1.13 -3.97 1.45 -3.37 1.71 -2.71 0.93 -1.08 
+0.98 -0.91 0.97 -0.7 1.02 -0.52 1.02 -0.33 1.02 -0.11 1 0.11 1.02 0.33 1.02 0.52 
+1 0.7 0.96 0.91 0.93 1.08 1.71 2.71 1.45 3.37 1.13 3.97 0.74 4.54 0.26 5.07 
+-0.26 5.04 -0.74 4.5 -1.13 3.9 -1.45 3.3 -1.71 2.63 -0.93 1.04 -0.96 0.89 -1 0.68 
+-1.02 0.5 -1.02 0.3 -1 0.11 -1.02 -0.11 -1.02 -0.3 -1.02 -0.5 -0.97 -0.68 -0.98 -0.89 
+-0.93 -1.04 -1.71 -2.62 -1.45 -3.3 -1.13 -3.9 -0.73 -4.5 -0.26 -5.04 -7.49 0 0.09 2.65 
+0.26 2.64 0.41 2.63 0.58 2.58 0.74 2.49 0.89 2.41 1.02 2.3 1.15 2.14 1.3 1.98 
+1.41 1.78 1.54 1.58 1.67 1.34 1.76 1.09 1.87 0.8 1.97 0.5 2.06 0.17 f*
+352.906 1071.66 19.1367 5.83984 re
+f*
+415.71 1094.54 -7.07 0 -0.46 1.9 -0.74 1.67 -0.96 1.43 -1.17 1.17 -1.32 0.93 -1.43 0.67 
+-1.52 0.39 -1.54 0.16 -1.52 -0.11 -1.43 -0.26 -1.32 -0.46 -1.26 -0.63 -1.15 -0.8 -1.06 -0.95 
+-0.95 -1.13 -0.87 -1.28 -0.76 -1.46 -0.67 -1.58 -1.04 -3.62 -0.65 -4.21 -0.2 -4.73 1.7 1.82 
+1.67 1.43 1.67 1.11 1.67 0.79 1.7 0.54 1.71 0.34 3.61 0.22 2.75 -0.28 2.88 -0.82 
+1.43 -0.63 1.41 -0.79 1.34 -0.91 1.3 -1.04 1.19 -1.21 1.09 -1.35 0.97 -1.5 0.83 -1.65 
+0.65 -1.8 0.48 -1.95 0.26 -2.1 0.04 -2.29 -7.08 -0.41 -0.24 2.32 -0.72 2.25 -1.08 2.11 
+-1.46 1.89 -1.73 1.61 -1.98 1.24 -2.14 0.78 -1.12 0.22 -1.17 0.06 -1.15 -0.06 -1.13 -0.22 
+-2.17 -0.78 -1.98 -1.24 -1.73 -1.61 -1.43 -1.89 -1.11 -2.11 -0.69 -2.25 -0.24 -2.32 0.24 -2.32 
+0.69 -2.26 1.11 -2.11 1.43 -1.89 1.73 -1.61 1.98 -1.22 2.17 -0.8 1.13 -0.19 1.15 -0.09 
+1.17 0.09 1.13 0.19 2.14 0.8 1.98 1.22 1.73 1.61 1.46 1.89 1.08 2.11 0.72 2.26 
+0.24 2.32 7.08 0.41 -0.29 -3.32 -0.35 -1.67 -0.5 -1.67 -0.63 -1.62 -0.78 -1.59 -0.91 -1.52 
+-1.09 -1.43 -1.21 -1.34 -1.39 -1.2 -1.52 -1.09 -1.7 -0.91 -1.87 -0.73 -2 -0.57 -2.17 -0.34 
+-2.34 -0.11 -2.54 0.13 -2.35 0.44 -2.12 0.69 -1.93 0.93 -1.76 1.17 -1.56 1.41 -1.39 1.63 
+-1.21 1.8 -1.05 2.02 -0.89 2.16 -0.74 2.32 -0.59 2.48 -0.45 2.61 -0.31 2.73 -0.24 5.75 
+0.09 3.43 0.26 3.26 0.41 3.06 0.61 2.88 0.76 2.72 0.91 2.49 1.09 2.28 1.21 2.08 
+1.39 1.87 1.54 1.63 1.67 1.39 1.8 1.17 1.98 0.91 2.08 0.65 2.21 0.41 2.37 0.13 
+1.67 -0.09 1.61 -0.21 1.54 -0.37 1.46 -0.5 1.37 -0.61 1.28 -0.73 2.3 -1.8 1.91 -2.14 
+1.5 -2.48 1.02 -2.71 0.56 -2.9 f*
+427.367 1052.54 8.3125 8.3125 re
+f*
+464.37 1109.09 2.06 -0.18 1.97 -0.5 1.87 -0.8 1.79 -1.08 1.65 -1.35 1.54 -1.59 1.41 -1.78 
+1.3 -1.97 1.15 -2.15 1.02 -2.3 0.89 -2.41 0.74 -2.49 0.58 -2.59 0.42 -2.62 0.25 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.25 -2.66 -0.42 -2.65 -0.58 -2.61 -0.74 -2.54 -0.89 -2.43 -1.02 -2.34 
+-1.15 -2.17 -1.3 -2.02 -1.41 -1.82 -1.54 -1.63 -1.65 -1.37 -1.79 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.04 0.17 -1.98 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.37 -1.54 1.63 -1.41 1.82 
+-1.3 2.02 -1.15 2.17 -1.05 2.34 -0.86 2.43 -0.74 2.54 -0.59 2.61 -0.41 2.65 -0.26 2.66 
+-0.09 2.65 7.48 0 0.26 -5.06 0.74 -4.53 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.08 
+0.97 -0.91 0.98 -0.71 1.02 -0.5 1.02 -0.32 1 -0.11 1.02 0.11 1.02 0.32 1.02 0.5 
+0.97 0.71 0.98 0.91 0.93 1.08 1.71 2.71 1.46 3.36 1.13 3.97 0.73 4.53 0.26 5.06 
+-0.26 5.05 -0.73 4.49 -1.12 3.91 -1.46 3.3 -1.71 2.63 -0.93 1.04 -0.98 0.87 -0.97 0.7 
+-1.02 0.49 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.49 -0.98 -0.7 -0.97 -0.87 
+-0.93 -1.04 -1.72 -2.63 -1.45 -3.3 -1.13 -3.91 -0.74 -4.49 -0.26 -5.05 -7.48 0 0.09 2.67 
+0.26 2.65 0.41 2.62 0.59 2.59 0.74 2.49 0.86 2.41 1.05 2.3 1.15 2.15 1.3 1.97 
+1.41 1.78 1.54 1.59 1.65 1.35 1.78 1.08 1.87 0.8 1.98 0.5 2.04 0.18 f*
+352.906 1259.48 19.1367 5.81641 re
+f*
+386.61 1278.6 -7.07 0 0.15 2.21 0.29 2.04 0.43 1.93 0.58 1.78 0.7 1.63 0.84 1.5 
+0.96 1.37 1.09 1.21 1.21 1.09 1.32 0.93 1.45 0.8 1.57 0.65 1.66 0.5 1.76 0.37 
+1.89 0.21 1.97 0.09 3.63 -0.26 3.32 -0.73 1.52 -0.57 1.45 -0.67 1.33 -0.8 1.23 -0.91 
+1.11 -1.04 0.98 -1.15 0.87 -1.26 0.72 -1.39 0.57 -1.47 0.41 -1.61 0.26 -1.72 0.09 -1.8 
+-0.11 -2.11 -0.32 -1.89 -0.57 -1.73 -0.82 -1.57 -1.13 -1.41 -1.43 -1.26 -1.78 -1.11 -2.14 -1 
+2.45 -1.02 2.08 -1.17 1.72 -1.37 1.39 -1.54 1.04 -1.74 0.72 -1.93 0.43 -2.17 0.15 -2.37 
+-0.25 -3.14 -0.3 -1.56 -0.46 -1.55 -0.59 -1.49 -0.75 -1.46 -0.89 -1.37 -1.07 -1.3 -1.24 -1.19 
+-1.41 -1.09 -1.61 -0.95 -1.78 -0.81 -2 -0.67 -2.2 -0.48 -2.41 -0.33 -2.61 -0.08 -2.25 0.08 
+-2.13 0.24 -1.95 0.44 -1.8 0.56 -1.65 0.72 -1.49 0.87 -1.34 1 -1.2 1.13 -1.07 1.26 
+-0.91 1.34 -0.78 1.47 -0.64 1.59 -0.48 1.67 -0.34 1.76 -0.2 1.85 -0.07 1.91 7.05 0 
+0.11 -2.07 0.33 -2.04 0.63 -1.97 1.02 -1.78 0.7 -0.8 0.8 -0.74 0.96 -0.65 1.08 -0.54 
+1.26 -0.46 1.41 -0.32 1.59 -0.22 1.78 -0.07 2.89 0.11 2.45 0.59 2 1.04 1.61 1.39 
+1.21 1.7 0.85 1.98 0.48 2.14 0.17 2.3 -0.09 1.55 -0.22 1.41 -0.34 1.23 -0.48 1.11 
+-0.63 0.98 -0.73 0.85 -0.85 0.73 -0.98 0.61 -2.3 0.93 -2.69 0.58 -3.08 0.33 -3.43 0.08 
+0 5.82 3.37 0.07 2.88 0.24 2.43 0.48 1.97 0.78 0.83 0.5 0.71 0.63 0.61 0.7 
+0.48 0.82 0.39 0.93 0.26 1.07 0.21 2.52 -0.12 1.97 -0.44 1.8 -0.73 1.63 -1.05 1.41 
+-1.37 1.15 -1.73 0.87 -2.09 0.56 -2.45 0.17 -2.23 -0.13 -2.02 -0.41 -1.81 -0.74 -1.54 -1.15 
+-1.26 -1.61 -0.97 -2.11 -0.66 -2.65 -0.32 -3.28 f*
+427.367 1240.34 8.3125 8.33594 re
+f*
+464.37 1296.92 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.79 -1.09 1.65 -1.34 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.15 -2.14 1.02 -2.28 0.89 -2.41 0.74 -2.49 0.58 -2.59 0.42 -2.63 0.25 -2.64 
+0.09 -2.67 -0.09 -2.64 -0.25 -2.67 -0.42 -2.64 -0.58 -2.61 -0.74 -2.54 -0.89 -2.45 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.83 -1.54 -1.61 -1.65 -1.39 -1.79 -1.11 -1.87 -0.82 -1.97 -0.5 
+-2.06 -0.2 -2.04 0.2 -1.98 0.5 -1.87 0.82 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.83 
+-1.3 2.02 -1.15 2.19 -1.05 2.32 -0.86 2.45 -0.74 2.54 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.64 7.48 0 0.26 -5.05 0.74 -4.53 1.13 -4 1.45 -3.37 1.72 -2.69 0.93 -1.08 
+0.97 -0.91 0.98 -0.71 1.02 -0.52 1.02 -0.3 1 -0.11 1.02 0.11 1.02 0.3 1.02 0.52 
+0.97 0.71 0.98 0.91 0.93 1.08 1.71 2.69 1.46 3.37 1.13 4 0.73 4.53 0.26 5.05 
+-0.26 5.06 -0.73 4.49 -1.12 3.91 -1.46 3.3 -1.71 2.62 -0.93 1.04 -0.98 0.87 -0.97 0.7 
+-1.02 0.5 -1.02 0.3 -1.02 0.09 -1 -0.09 -1.02 -0.3 -1.02 -0.5 -0.98 -0.7 -0.97 -0.87 
+-0.93 -1.04 -1.72 -2.62 -1.45 -3.3 -1.13 -3.91 -0.74 -4.49 -0.26 -5.06 -7.48 0 0.09 2.67 
+0.26 2.64 0.41 2.63 0.59 2.59 0.74 2.49 0.86 2.41 1.05 2.28 1.15 2.14 1.3 2 
+1.41 1.78 1.54 1.58 1.65 1.34 1.78 1.09 1.87 0.8 1.98 0.5 2.04 0.17 f*
+397.83 1484.72 2.06 -0.17 1.98 -0.5 1.87 -0.8 1.75 -1.09 1.65 -1.34 1.54 -1.56 1.43 -1.8 
+1.29 -1.97 1.17 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.52 0.57 -2.56 0.43 -2.62 0.26 -2.67 
+0.08 -2.64 -0.08 -2.67 -0.26 -2.66 -0.43 -2.65 -0.57 -2.61 -0.74 -2.52 -0.89 -2.45 -1.02 -2.32 
+-1.17 -2.2 -1.29 -2.02 -1.43 -1.82 -1.54 -1.61 -1.65 -1.39 -1.75 -1.11 -1.87 -0.83 -1.98 -0.52 
+-2.06 -0.18 -2.06 0.18 -1.95 0.52 -1.89 0.83 -1.76 1.11 -1.64 1.39 -1.55 1.61 -1.43 1.82 
+-1.28 2.02 -1.17 2.2 -1.02 2.32 -0.86 2.45 -0.74 2.52 -0.58 2.61 -0.41 2.65 -0.26 2.66 
+-0.09 2.67 7.49 0 0.26 -5.05 0.74 -4.56 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.09 
+0.95 -0.89 1 -0.72 1 -0.52 1.02 -0.3 1.02 -0.11 1.02 0.11 1.02 0.3 1 0.52 
+1 0.72 0.98 0.89 0.91 1.09 1.71 2.71 1.48 3.36 1.13 3.97 0.74 4.56 0.26 5.05 
+-0.26 5.04 -0.74 4.49 -1.12 3.93 -1.48 3.27 -1.71 2.63 -0.91 1.07 -0.98 0.87 -1 0.67 
+-1 0.5 -1.02 0.3 -1.02 0.11 -1.02 -0.11 -1.02 -0.3 -1 -0.5 -1 -0.67 -0.95 -0.87 
+-0.93 -1.07 -1.72 -2.62 -1.45 -3.27 -1.13 -3.93 -0.74 -4.49 -0.26 -5.04 -7.49 0 0.09 2.64 
+0.26 2.67 0.41 2.63 0.58 2.56 0.74 2.52 0.86 2.41 1.02 2.28 1.17 2.15 1.28 1.97 
+1.43 1.8 1.55 1.56 1.64 1.34 1.76 1.09 1.89 0.8 1.95 0.5 2.06 0.17 f*
+427.367 1428.17 8.3125 8.30859 re
+f*
+464.37 1484.72 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.79 -1.09 1.65 -1.34 1.54 -1.56 1.41 -1.8 
+1.3 -1.97 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.52 0.58 -2.56 0.42 -2.62 0.25 -2.67 
+0.09 -2.64 -0.09 -2.67 -0.25 -2.66 -0.42 -2.65 -0.58 -2.61 -0.74 -2.52 -0.89 -2.45 -1.02 -2.32 
+-1.15 -2.2 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.79 -1.11 -1.87 -0.83 -1.97 -0.52 
+-2.06 -0.18 -2.04 0.18 -1.98 0.52 -1.87 0.83 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.2 -1.05 2.32 -0.86 2.45 -0.74 2.52 -0.59 2.61 -0.41 2.65 -0.26 2.66 
+-0.09 2.67 7.48 0 0.26 -5.05 0.74 -4.56 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.09 
+0.97 -0.89 0.98 -0.72 1.02 -0.52 1.02 -0.3 1 -0.11 1.02 0.11 1.02 0.3 1.02 0.52 
+0.97 0.72 0.98 0.89 0.93 1.09 1.71 2.71 1.46 3.36 1.13 3.97 0.73 4.56 0.26 5.05 
+-0.26 5.04 -0.73 4.49 -1.12 3.93 -1.46 3.27 -1.71 2.63 -0.93 1.07 -0.98 0.87 -0.97 0.67 
+-1.02 0.5 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.5 -0.98 -0.67 -0.97 -0.87 
+-0.93 -1.07 -1.72 -2.62 -1.45 -3.27 -1.13 -3.93 -0.74 -4.49 -0.26 -5.04 -7.48 0 0.09 2.64 
+0.26 2.67 0.41 2.63 0.59 2.56 0.74 2.52 0.86 2.41 1.05 2.28 1.15 2.15 1.3 1.97 
+1.41 1.8 1.54 1.56 1.65 1.34 1.78 1.09 1.87 0.8 1.98 0.5 2.04 0.17 f*
+386.61 1654.25 -7.07 0 0.15 2.19 0.29 2.06 0.43 1.91 0.58 1.78 0.7 1.65 0.84 1.5 
+0.96 1.37 1.09 1.21 1.21 1.09 1.32 0.93 1.45 0.78 1.57 0.66 1.66 0.52 1.76 0.37 
+1.89 0.22 1.97 0.07 3.63 -0.26 3.32 -0.74 1.52 -0.57 1.45 -0.67 1.33 -0.8 1.23 -0.91 
+1.11 -1.05 0.98 -1.15 0.87 -1.26 0.72 -1.37 0.57 -1.49 0.41 -1.61 0.26 -1.7 0.09 -1.82 
+-0.11 -2.08 -0.32 -1.91 -0.57 -1.71 -0.82 -1.57 -1.13 -1.41 -1.43 -1.26 -1.78 -1.13 -2.14 -1 
+2.45 -1.02 2.08 -1.17 1.72 -1.37 1.39 -1.54 1.04 -1.73 0.72 -1.93 0.43 -2.15 0.15 -2.39 
+-0.25 -3.15 -0.3 -1.56 -0.46 -1.54 -0.59 -1.5 -0.75 -1.43 -0.89 -1.39 -1.07 -1.28 -1.24 -1.2 
+-1.41 -1.08 -1.61 -0.98 -1.78 -0.8 -2 -0.67 -2.2 -0.48 -2.41 -0.3 -2.61 -0.11 -2.25 0.09 
+-2.11 0.26 -1.98 0.41 -1.8 0.56 -1.65 0.74 -1.49 0.85 -1.34 0.99 -1.2 1.13 -1.07 1.26 
+-0.91 1.37 -0.78 1.48 -0.64 1.56 -0.48 1.67 -0.34 1.75 -0.2 1.84 -0.07 1.91 7.05 0 
+0.11 -2.06 0.33 -2.04 0.63 -1.96 1.02 -1.8 0.7 -0.81 0.8 -0.71 0.96 -0.65 1.08 -0.56 
+1.26 -0.44 1.41 -0.35 1.59 -0.19 1.78 -0.09 2.89 0.11 2.45 0.61 2 1.02 1.61 1.39 
+1.21 1.71 0.85 1.95 0.48 2.15 0.17 2.3 -0.09 1.56 -0.22 1.39 -0.34 1.25 -0.48 1.11 
+-0.63 0.96 -0.73 0.84 -0.85 0.74 -0.98 0.61 -2.3 0.96 -2.69 0.58 -3.08 0.31 -3.43 0.09 
+0 5.82 3.37 0.06 2.88 0.26 2.43 0.48 1.97 0.76 0.83 0.52 0.71 0.61 0.61 0.71 
+0.48 0.8 0.39 0.96 0.26 1.04 0.21 2.54 -0.12 1.95 -0.44 1.83 -0.73 1.63 -1.05 1.41 
+-1.37 1.15 -1.73 0.87 -2.09 0.54 -2.45 0.2 -2.23 -0.13 -2.02 -0.41 -1.81 -0.76 -1.54 -1.15 
+-1.26 -1.61 -0.97 -2.08 -0.66 -2.67 -0.32 -3.26 f*
+427.367 1616 8.3125 8.30859 re
+f*
+464.37 1672.55 2.06 -0.18 1.97 -0.49 1.87 -0.81 1.79 -1.08 1.65 -1.35 1.54 -1.59 1.41 -1.78 
+1.3 -1.97 1.15 -2.15 1.02 -2.3 0.89 -2.41 0.74 -2.5 0.58 -2.58 0.42 -2.63 0.25 -2.64 
+0.09 -2.65 -0.09 -2.67 -0.25 -2.67 -0.42 -2.64 -0.58 -2.61 -0.74 -2.54 -0.89 -2.43 -1.02 -2.35 
+-1.15 -2.17 -1.3 -2.02 -1.41 -1.82 -1.54 -1.63 -1.65 -1.37 -1.79 -1.11 -1.87 -0.82 -1.97 -0.52 
+-2.06 -0.17 -2.04 0.17 -1.98 0.52 -1.87 0.82 -1.78 1.11 -1.65 1.37 -1.54 1.63 -1.41 1.82 
+-1.3 2.02 -1.15 2.17 -1.05 2.35 -0.86 2.43 -0.74 2.54 -0.59 2.61 -0.41 2.64 -0.26 2.67 
+-0.09 2.67 7.48 0 0.26 -5.08 0.74 -4.54 1.13 -3.97 1.45 -3.36 1.72 -2.71 0.93 -1.09 
+0.97 -0.91 0.98 -0.7 1.02 -0.52 1.02 -0.32 1 -0.11 1.02 0.11 1.02 0.32 1.02 0.52 
+0.97 0.7 0.98 0.91 0.93 1.09 1.71 2.71 1.46 3.36 1.13 3.97 0.73 4.54 0.26 5.08 
+-0.26 5.04 -0.73 4.49 -1.12 3.91 -1.46 3.3 -1.71 2.63 -0.93 1.04 -0.98 0.89 -0.97 0.67 
+-1.02 0.5 -1.02 0.3 -1.02 0.11 -1 -0.11 -1.02 -0.3 -1.02 -0.5 -0.98 -0.67 -0.97 -0.89 
+-0.93 -1.04 -1.72 -2.62 -1.45 -3.3 -1.13 -3.91 -0.74 -4.49 -0.26 -5.04 -7.48 0 0.09 2.65 
+0.26 2.64 0.41 2.63 0.59 2.58 0.74 2.5 0.86 2.41 1.05 2.3 1.15 2.15 1.3 1.97 
+1.41 1.78 1.54 1.59 1.65 1.35 1.78 1.08 1.87 0.81 1.98 0.49 2.04 0.18 f*
+415.71 1845.81 -7.07 0 -0.46 1.91 -0.74 1.67 -0.96 1.43 -1.17 1.17 -1.32 0.93 -1.43 0.65 
+-1.52 0.41 -1.54 0.13 -1.52 -0.08 -1.43 -0.29 -1.32 -0.43 -1.26 -0.63 -1.15 -0.8 -1.06 -0.96 
+-0.95 -1.13 -0.87 -1.28 -0.76 -1.45 -0.67 -1.58 -1.04 -3.65 -0.65 -4.19 -0.2 -4.73 1.7 1.82 
+1.67 1.43 1.67 1.09 1.67 0.8 1.7 0.54 1.71 0.33 3.61 0.21 2.75 -0.26 2.88 -0.85 
+1.43 -0.61 1.41 -0.78 1.34 -0.91 1.3 -1.07 1.19 -1.2 1.09 -1.34 0.97 -1.52 0.83 -1.65 
+0.65 -1.8 0.48 -1.96 0.26 -2.11 0.04 -2.25 -7.08 -0.41 -0.24 2.32 -0.72 2.26 -1.08 2.11 
+-1.46 1.89 -1.73 1.61 -1.98 1.21 -2.14 0.81 -1.12 0.21 -1.17 0.07 -1.15 -0.07 -1.13 -0.21 
+-2.17 -0.81 -1.98 -1.21 -1.73 -1.61 -1.43 -1.89 -1.11 -2.11 -0.69 -2.26 -0.24 -2.32 0.24 -2.32 
+0.69 -2.26 1.11 -2.1 1.43 -1.89 1.73 -1.61 1.98 -1.24 2.17 -0.78 1.13 -0.22 1.15 -0.06 
+1.17 0.06 1.13 0.22 2.14 0.78 1.98 1.24 1.73 1.61 1.46 1.89 1.08 2.1 0.72 2.26 
+0.24 2.32 7.08 0.41 -0.29 -3.32 -0.35 -1.69 -0.48 -1.65 -0.65 -1.65 -0.78 -1.58 -0.91 -1.52 
+-1.09 -1.43 -1.21 -1.32 -1.39 -1.22 -1.52 -1.06 -1.7 -0.91 -1.84 -0.76 -2.02 -0.54 -2.17 -0.35 
+-2.34 -0.11 -2.54 0.13 -2.35 0.43 -2.12 0.67 -1.93 0.96 -1.76 1.17 -1.56 1.41 -1.39 1.61 
+-1.21 1.82 -1.05 2 -0.89 2.17 -0.74 2.34 -0.59 2.47 -0.45 2.61 -0.31 2.73 -0.24 5.75 
+0.09 3.43 0.26 3.23 0.41 3.08 0.61 2.89 0.76 2.69 0.91 2.5 1.09 2.3 1.21 2.08 
+1.39 1.84 1.54 1.63 1.67 1.41 1.8 1.15 1.98 0.93 2.08 0.65 2.21 0.39 2.37 0.15 
+1.67 -0.08 1.61 -0.22 1.54 -0.37 1.46 -0.5 1.37 -0.63 1.28 -0.74 2.3 -1.78 1.91 -2.17 
+1.5 -2.47 1.02 -2.71 0.56 -2.89 f*
+427.367 1803.8 8.3125 8.33203 re
+f*
+464.37 1860.37 2.06 -0.17 1.97 -0.5 1.87 -0.8 1.79 -1.09 1.65 -1.35 1.54 -1.58 1.41 -1.78 
+1.3 -2 1.15 -2.15 1.02 -2.28 0.89 -2.41 0.74 -2.5 0.58 -2.58 0.42 -2.63 0.25 -2.65 
+0.09 -2.67 -0.09 -2.65 -0.25 -2.67 -0.42 -2.65 -0.58 -2.6 -0.74 -2.54 -0.89 -2.46 -1.02 -2.32 
+-1.15 -2.19 -1.3 -2.02 -1.41 -1.82 -1.54 -1.61 -1.65 -1.39 -1.79 -1.11 -1.87 -0.82 -1.97 -0.5 
+-2.06 -0.18 -2.04 0.18 -1.98 0.5 -1.87 0.82 -1.78 1.11 -1.65 1.39 -1.54 1.61 -1.41 1.82 
+-1.3 2.02 -1.15 2.19 -1.05 2.32 -0.86 2.46 -0.74 2.54 -0.59 2.6 -0.41 2.65 -0.26 2.67 
+-0.09 2.65 7.48 0 0.26 -5.05 0.74 -4.54 1.13 -3.99 1.45 -3.37 1.72 -2.69 0.93 -1.08 
+0.97 -0.92 0.98 -0.71 1.02 -0.52 1.02 -0.31 1 -0.11 1.02 0.11 1.02 0.31 1.02 0.52 
+0.97 0.71 0.98 0.92 0.93 1.08 1.71 2.69 1.46 3.37 1.13 3.99 0.73 4.54 0.26 5.05 
+-0.26 5.05 -0.73 4.5 -1.12 3.91 -1.46 3.3 -1.71 2.63 -0.93 1.04 -0.98 0.87 -0.97 0.7 
+-1.02 0.5 -1.02 0.3 -1.02 0.08 -1 -0.08 -1.02 -0.3 -1.02 -0.5 -0.98 -0.7 -0.97 -0.87 
+-0.93 -1.04 -1.72 -2.62 -1.45 -3.3 -1.13 -3.91 -0.74 -4.5 -0.26 -5.05 -7.48 0 0.09 2.67 
+0.26 2.65 0.41 2.63 0.59 2.58 0.74 2.5 0.86 2.41 1.05 2.28 1.15 2.15 1.3 2 
+1.41 1.78 1.54 1.58 1.65 1.35 1.78 1.09 1.87 0.8 1.98 0.5 2.04 0.17 f*
+5.55556 w
+887.17 939.15 0 58.22 S
+1366.55 939.15 0 58.22 S
+1845.96 939.15 0 58.22 S
+2325.34 939.15 0 58.22 S
+2804.73 939.15 0 58.22 S
+2.77778 w
+791.3 968.27 0 29.1 S
+695.42 968.27 0 29.1 S
+599.54 968.27 0 29.1 S
+983.05 968.27 0 29.1 S
+1078.93 968.27 0 29.1 S
+1174.8 968.27 0 29.1 S
+1270.68 968.27 0 29.1 S
+1462.43 968.27 0 29.1 S
+1558.31 968.27 0 29.1 S
+1654.19 968.27 0 29.1 S
+1750.09 968.27 0 29.1 S
+1941.84 968.27 0 29.1 S
+2037.71 968.27 0 29.1 S
+2133.59 968.27 0 29.1 S
+2229.47 968.27 0 29.1 S
+2421.22 968.27 0 29.1 S
+2517.1 968.27 0 29.1 S
+2612.98 968.27 0 29.1 S
+2708.86 968.27 0 29.1 S
+2900.61 968.27 0 29.1 S
+2996.48 968.27 0 29.1 S
+3092.36 968.27 0 29.1 S
+5.55556 w
+887.17 2008.4 0 -58.23 S
+1366.55 2008.4 0 -58.23 S
+1845.96 2008.4 0 -58.23 S
+2325.34 2008.4 0 -58.23 S
+2804.73 2008.4 0 -58.23 S
+2.77778 w
+791.3 1979.28 0 -29.11 S
+695.42 1979.28 0 -29.11 S
+599.54 1979.28 0 -29.11 S
+983.05 1979.28 0 -29.11 S
+1078.93 1979.28 0 -29.11 S
+1174.8 1979.28 0 -29.11 S
+1270.68 1979.28 0 -29.11 S
+1462.43 1979.28 0 -29.11 S
+1558.31 1979.28 0 -29.11 S
+1654.19 1979.28 0 -29.11 S
+1750.09 1979.28 0 -29.11 S
+1941.84 1979.28 0 -29.11 S
+2037.71 1979.28 0 -29.11 S
+2133.59 1979.28 0 -29.11 S
+2229.47 1979.28 0 -29.11 S
+2421.22 1979.28 0 -29.11 S
+2517.1 1979.28 0 -29.11 S
+2612.98 1979.28 0 -29.11 S
+2708.86 1979.28 0 -29.11 S
+2900.61 1979.28 0 -29.11 S
+2996.48 1979.28 0 -29.11 S
+3092.36 1979.28 0 -29.11 S
+5.55556 w
+541.32 1079.77 58.22 0 S
+541.32 1267.6 58.22 0 S
+541.32 1455.41 58.22 0 S
+541.32 1643.23 58.22 0 S
+541.32 1831.05 58.22 0 S
+2.77778 w
+570.42 1017.17 29.12 0 S
+570.42 1142.38 29.12 0 S
+570.42 1204.99 29.12 0 S
+570.42 1330.19 29.12 0 S
+570.42 1392.79 29.12 0 S
+570.42 1518.01 29.12 0 S
+570.42 1580.62 29.12 0 S
+570.42 1705.84 29.12 0 S
+570.42 1768.45 29.12 0 S
+570.42 1893.64 29.12 0 S
+5.55556 w
+3198.52 1079.77 -58.22 0 S
+3198.52 1267.6 -58.22 0 S
+3198.52 1455.41 -58.22 0 S
+3198.52 1643.23 -58.22 0 S
+3198.52 1831.05 -58.22 0 S
+2.77778 w
+3169.42 1017.17 -29.12 0 S
+3169.42 1142.38 -29.12 0 S
+3169.42 1204.99 -29.12 0 S
+3169.42 1330.19 -29.12 0 S
+3169.42 1392.79 -29.12 0 S
+3169.42 1518.01 -29.12 0 S
+3169.42 1580.62 -29.12 0 S
+3169.42 1705.84 -29.12 0 S
+3169.42 1768.45 -29.12 0 S
+3169.42 1893.64 -29.12 0 S
+5.55556 w
+3140.3 997.37 -2540.76 0 0 952.8 ^ ^ ^ S
+599.54 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.15 1.15 1.18 0.98 2.41 1.56 
+2.38 1.08 2.25 0.7 1.98 0.39 2.66 0.21 1.96 -0.09 2 -0.24 1.98 -0.43 1.95 -0.62 
+1.91 -0.83 1.84 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.04 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.79 -2.56 -0.98 -2.39 -1.17 -2.23 -1.34 -2.04 -1.52 -1.85 -1.74 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.72 -0.43 -2.91 -0.13 -1.67 0.06 -1.84 0.28 -1.99 0.52 -2.02 0.82 
+-2.04 1.15 -1.97 1.54 -1.87 1.97 -1.67 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.78 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.17 -1.15 1.26 -0.97 1.3 -0.83 1.35 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.59 0.61 1.48 0.8 1.34 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.79 1.67 1.19 3.5 0.72 3.61 0.26 3.58 -0.11 2.54 -0.32 2.37 -0.52 2.19 
+-0.67 2 -0.83 1.84 -0.96 1.65 -1.06 1.49 -1.13 1.32 -1.2 1.15 -1.24 1.02 -2.49 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.43 -0.52 -1.39 -0.7 -1.32 -0.89 -1.24 -1.06 
+-1.17 -1.21 -1.06 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.5 -1.95 -0.39 -2.06 
+-0.21 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+653.6 2105.34 5.21 0 3.99 -6.1 3.43 -6.18 2.87 -6.23 2.32 -6.18 1.78 -6.08 1.26 -5.93 
+0.74 -5.71 0.24 -5.42 -0.26 -5.43 -0.8 -5.75 -1.3 -5.93 -1.84 -6.03 -2.34 -6.02 -2.86 -5.94 
+-3.37 -5.73 -1.86 -2.75 -1.97 -2.7 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.55 1.91 5.64 
+1.52 5.77 1.07 5.92 0.65 6.1 0.21 6.32 -0.19 6.16 -0.59 5.99 -1.02 5.91 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+712.35 2105.34 57.18 0 0 -8.31 -23.89 0 0 -64.46 -9.38 0 ^ -23.91 0 
+0 8.31 f*
+778.383 2094.95 8.3125 10.3945 re
+f*
+778.383 2032.57 8.3125 52.4961 re
+f*
+799.7 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.13 1.15 1.2 0.98 2.41 1.56 
+2.39 1.08 2.25 0.7 1.97 0.39 2.67 0.21 1.95 -0.09 2 -0.24 1.97 -0.43 1.96 -0.62 
+1.91 -0.83 1.85 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.05 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.8 -2.56 -0.95 -2.39 -1.17 -2.23 -1.35 -2.04 -1.52 -1.85 -1.73 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.71 -0.43 -2.91 -0.13 -1.67 0.06 -1.86 0.28 -1.98 0.52 -2.02 0.82 
+-2.04 1.15 -1.98 1.54 -1.86 1.97 -1.68 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.79 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.18 -1.15 1.25 -0.97 1.3 -0.83 1.34 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.58 0.61 1.46 0.8 1.36 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.78 1.67 1.2 3.5 0.71 3.61 0.26 3.58 -0.13 2.54 -0.3 2.37 -0.52 2.19 
+-0.67 2 -0.82 1.84 -0.96 1.65 -1.07 1.49 -1.13 1.32 -1.19 1.15 -1.23 1.02 -2.5 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.45 -0.52 -1.37 -0.7 -1.33 -0.89 -1.23 -1.06 
+-1.17 -1.21 -1.07 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+900.02 2048.68 -0.57 -2.43 -0.72 -2.26 -0.84 -2.06 -1 -1.87 -1.13 -1.72 -1.23 -1.52 -1.37 -1.37 
+-1.46 -1.21 -1.56 -1.04 -1.65 -0.89 -1.71 -0.73 -1.82 -0.59 -1.87 -0.45 -1.93 -0.32 -4.01 -0.24 
+-2.73 0.21 -2.59 0.46 -2.43 0.67 -2.25 0.91 -2.11 1.11 -1.91 1.32 -1.76 1.52 -1.56 1.71 
+-1.41 1.89 -1.21 2.08 -1.04 2.24 -0.85 2.38 -0.67 2.54 -0.48 2.71 -0.29 2.82 -0.11 2.96 
+0.18 4.27 0.52 3.84 0.8 3.46 1.09 3.08 1.3 2.71 1.52 2.36 1.7 2.06 1.82 1.74 
+1.91 1.48 2 1.21 2.04 0.98 2.02 0.74 2.02 0.56 1.95 0.35 3.58 0.28 -0.52 -7.79 
+-2.26 -0.24 -2.43 -0.67 -2.48 -1.18 -2.38 -1.69 -1.11 -1.04 -1.04 -1.17 -0.98 -1.32 -0.85 -1.48 
+-0.74 -1.61 -0.61 -1.76 -0.43 -1.91 -0.28 -2.06 30.66 0 -0.11 2.15 -0.33 1.97 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.5 1.11 -2.41 0.63 
+-2.15 0.22 0.52 7.79 1.8 -0.07 1.87 -0.21 1.93 -0.37 1.93 -0.57 1.93 -0.76 1.89 -1.02 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.15 1.37 -2.52 1.15 -2.85 0.96 -3.25 0.71 -3.67 
+0.43 -4.08 0.15 -4.54 -38.97 0 0.17 -2.73 0.58 -2.97 1.05 -3.04 0.71 -1.48 0.84 -1.41 
+1 -1.34 1.17 -1.25 1.3 -1.11 1.5 -0.97 1.65 -0.78 1.85 -0.61 2.04 -0.37 2.23 -0.13 
+2.28 0.2 2.11 0.57 1.96 0.91 1.8 1.25 1.61 1.56 1.46 1.87 1.25 2.15 1.07 2.41 
+8.31 0 f*
+914.06 2099.11 8.31 0 0 -14.04 8.34 0 0 -6.75 ^ 0 -37.44 0.24 -1.49 
+0.64 -1.05 0.95 -0.65 1.17 -0.32 1.33 -0.09 1.39 0.09 2.63 0.39 0 -6.75 -3.06 -0.72 
+-2 -0.24 -2.23 -0.08 -1.89 0.25 -1.75 0.44 -1.59 0.61 -1.39 0.78 -1.15 0.97 -0.84 1.17 
+-0.55 1.41 -0.19 1.63 0 41.08 -7.27 0 0 6.75 ^ 0 14.04 f*
+599.54 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.15 1.15 1.18 0.98 2.41 1.56 
+2.38 1.08 2.25 0.7 1.98 0.39 2.66 0.21 1.96 -0.09 2 -0.24 1.98 -0.43 1.95 -0.62 
+1.91 -0.83 1.84 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.04 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.79 -2.56 -0.98 -2.39 -1.17 -2.23 -1.34 -2.04 -1.52 -1.85 -1.74 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.72 -0.43 -2.91 -0.13 -1.67 0.06 -1.84 0.28 -1.99 0.52 -2.02 0.82 
+-2.04 1.15 -1.97 1.54 -1.87 1.97 -1.67 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.78 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.17 -1.15 1.26 -0.97 1.3 -0.83 1.35 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.59 0.61 1.48 0.8 1.34 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.79 1.67 1.19 3.5 0.72 3.61 0.26 3.58 -0.11 2.54 -0.32 2.37 -0.52 2.19 
+-0.67 2 -0.83 1.84 -0.96 1.65 -1.06 1.49 -1.13 1.32 -1.2 1.15 -1.24 1.02 -2.49 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.43 -0.52 -1.39 -0.7 -1.32 -0.89 -1.24 -1.06 
+-1.17 -1.21 -1.06 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.5 -1.95 -0.39 -2.06 
+-0.21 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+653.6 2105.34 5.21 0 3.99 -6.1 3.43 -6.18 2.87 -6.23 2.32 -6.18 1.78 -6.08 1.26 -5.93 
+0.74 -5.71 0.24 -5.42 -0.26 -5.43 -0.8 -5.75 -1.3 -5.93 -1.84 -6.03 -2.34 -6.02 -2.86 -5.94 
+-3.37 -5.73 -1.86 -2.75 -1.97 -2.7 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.55 1.91 5.64 
+1.52 5.77 1.07 5.92 0.65 6.1 0.21 6.32 -0.19 6.16 -0.59 5.99 -1.02 5.91 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+712.35 2105.34 57.18 0 0 -8.31 -23.89 0 0 -64.46 -9.38 0 ^ -23.91 0 
+0 8.31 f*
+778.383 2094.95 8.3125 10.3945 re
+f*
+778.383 2032.57 8.3125 52.4961 re
+f*
+799.7 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.13 1.15 1.2 0.98 2.41 1.56 
+2.39 1.08 2.25 0.7 1.97 0.39 2.67 0.21 1.95 -0.09 2 -0.24 1.97 -0.43 1.96 -0.62 
+1.91 -0.83 1.85 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.05 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.8 -2.56 -0.95 -2.39 -1.17 -2.23 -1.35 -2.04 -1.52 -1.85 -1.73 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.71 -0.43 -2.91 -0.13 -1.67 0.06 -1.86 0.28 -1.98 0.52 -2.02 0.82 
+-2.04 1.15 -1.98 1.54 -1.86 1.97 -1.68 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.79 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.18 -1.15 1.25 -0.97 1.3 -0.83 1.34 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.58 0.61 1.46 0.8 1.36 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.78 1.67 1.2 3.5 0.71 3.61 0.26 3.58 -0.13 2.54 -0.3 2.37 -0.52 2.19 
+-0.67 2 -0.82 1.84 -0.96 1.65 -1.07 1.49 -1.13 1.32 -1.19 1.15 -1.23 1.02 -2.5 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.45 -0.52 -1.37 -0.7 -1.33 -0.89 -1.23 -1.06 
+-1.17 -1.21 -1.07 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+900.02 2048.68 -0.57 -2.43 -0.72 -2.26 -0.84 -2.06 -1 -1.87 -1.13 -1.72 -1.23 -1.52 -1.37 -1.37 
+-1.46 -1.21 -1.56 -1.04 -1.65 -0.89 -1.71 -0.73 -1.82 -0.59 -1.87 -0.45 -1.93 -0.32 -4.01 -0.24 
+-2.73 0.21 -2.59 0.46 -2.43 0.67 -2.25 0.91 -2.11 1.11 -1.91 1.32 -1.76 1.52 -1.56 1.71 
+-1.41 1.89 -1.21 2.08 -1.04 2.24 -0.85 2.38 -0.67 2.54 -0.48 2.71 -0.29 2.82 -0.11 2.96 
+0.18 4.27 0.52 3.84 0.8 3.46 1.09 3.08 1.3 2.71 1.52 2.36 1.7 2.06 1.82 1.74 
+1.91 1.48 2 1.21 2.04 0.98 2.02 0.74 2.02 0.56 1.95 0.35 3.58 0.28 -0.52 -7.79 
+-2.26 -0.24 -2.43 -0.67 -2.48 -1.18 -2.38 -1.69 -1.11 -1.04 -1.04 -1.17 -0.98 -1.32 -0.85 -1.48 
+-0.74 -1.61 -0.61 -1.76 -0.43 -1.91 -0.28 -2.06 30.66 0 -0.11 2.15 -0.33 1.97 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.5 1.11 -2.41 0.63 
+-2.15 0.22 0.52 7.79 1.8 -0.07 1.87 -0.21 1.93 -0.37 1.93 -0.57 1.93 -0.76 1.89 -1.02 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.15 1.37 -2.52 1.15 -2.85 0.96 -3.25 0.71 -3.67 
+0.43 -4.08 0.15 -4.54 -38.97 0 0.17 -2.73 0.58 -2.97 1.05 -3.04 0.71 -1.48 0.84 -1.41 
+1 -1.34 1.17 -1.25 1.3 -1.11 1.5 -0.97 1.65 -0.78 1.85 -0.61 2.04 -0.37 2.23 -0.13 
+2.28 0.2 2.11 0.57 1.96 0.91 1.8 1.25 1.61 1.56 1.46 1.87 1.25 2.15 1.07 2.41 
+8.31 0 f*
+914.06 2099.11 8.31 0 0 -14.04 8.34 0 0 -6.75 ^ 0 -37.44 0.24 -1.49 
+0.64 -1.05 0.95 -0.65 1.17 -0.32 1.33 -0.09 1.39 0.09 2.63 0.39 0 -6.75 -3.06 -0.72 
+-2 -0.24 -2.23 -0.08 -1.89 0.25 -1.75 0.44 -1.59 0.61 -1.39 0.78 -1.15 0.97 -0.84 1.17 
+-0.55 1.41 -0.19 1.63 0 41.08 -7.27 0 0 6.75 ^ 0 14.04 f*
+599.54 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.15 1.15 1.18 0.98 2.41 1.56 
+2.38 1.08 2.25 0.7 1.98 0.39 2.66 0.21 1.96 -0.09 2 -0.24 1.98 -0.43 1.95 -0.62 
+1.91 -0.83 1.84 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.04 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.79 -2.56 -0.98 -2.39 -1.17 -2.23 -1.34 -2.04 -1.52 -1.85 -1.74 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.72 -0.43 -2.91 -0.13 -1.67 0.06 -1.84 0.28 -1.99 0.52 -2.02 0.82 
+-2.04 1.15 -1.97 1.54 -1.87 1.97 -1.67 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.78 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.17 -1.15 1.26 -0.97 1.3 -0.83 1.35 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.59 0.61 1.48 0.8 1.34 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.79 1.67 1.19 3.5 0.72 3.61 0.26 3.58 -0.11 2.54 -0.32 2.37 -0.52 2.19 
+-0.67 2 -0.83 1.84 -0.96 1.65 -1.06 1.49 -1.13 1.32 -1.2 1.15 -1.24 1.02 -2.49 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.43 -0.52 -1.39 -0.7 -1.32 -0.89 -1.24 -1.06 
+-1.17 -1.21 -1.06 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.5 -1.95 -0.39 -2.06 
+-0.21 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+653.6 2105.34 5.21 0 3.99 -6.1 3.43 -6.18 2.87 -6.23 2.32 -6.18 1.78 -6.08 1.26 -5.93 
+0.74 -5.71 0.24 -5.42 -0.26 -5.43 -0.8 -5.75 -1.3 -5.93 -1.84 -6.03 -2.34 -6.02 -2.86 -5.94 
+-3.37 -5.73 -1.86 -2.75 -1.97 -2.7 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.55 1.91 5.64 
+1.52 5.77 1.07 5.92 0.65 6.1 0.21 6.32 -0.19 6.16 -0.59 5.99 -1.02 5.91 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+712.35 2105.34 57.18 0 0 -8.31 -23.89 0 0 -64.46 -9.38 0 ^ -23.91 0 
+0 8.31 f*
+778.383 2094.95 8.3125 10.3945 re
+f*
+778.383 2032.57 8.3125 52.4961 re
+f*
+799.7 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.13 1.15 1.2 0.98 2.41 1.56 
+2.39 1.08 2.25 0.7 1.97 0.39 2.67 0.21 1.95 -0.09 2 -0.24 1.97 -0.43 1.96 -0.62 
+1.91 -0.83 1.85 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.05 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.8 -2.56 -0.95 -2.39 -1.17 -2.23 -1.35 -2.04 -1.52 -1.85 -1.73 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.71 -0.43 -2.91 -0.13 -1.67 0.06 -1.86 0.28 -1.98 0.52 -2.02 0.82 
+-2.04 1.15 -1.98 1.54 -1.86 1.97 -1.68 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.79 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.18 -1.15 1.25 -0.97 1.3 -0.83 1.34 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.58 0.61 1.46 0.8 1.36 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.78 1.67 1.2 3.5 0.71 3.61 0.26 3.58 -0.13 2.54 -0.3 2.37 -0.52 2.19 
+-0.67 2 -0.82 1.84 -0.96 1.65 -1.07 1.49 -1.13 1.32 -1.19 1.15 -1.23 1.02 -2.5 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.45 -0.52 -1.37 -0.7 -1.33 -0.89 -1.23 -1.06 
+-1.17 -1.21 -1.07 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+900.02 2048.68 -0.57 -2.43 -0.72 -2.26 -0.84 -2.06 -1 -1.87 -1.13 -1.72 -1.23 -1.52 -1.37 -1.37 
+-1.46 -1.21 -1.56 -1.04 -1.65 -0.89 -1.71 -0.73 -1.82 -0.59 -1.87 -0.45 -1.93 -0.32 -4.01 -0.24 
+-2.73 0.21 -2.59 0.46 -2.43 0.67 -2.25 0.91 -2.11 1.11 -1.91 1.32 -1.76 1.52 -1.56 1.71 
+-1.41 1.89 -1.21 2.08 -1.04 2.24 -0.85 2.38 -0.67 2.54 -0.48 2.71 -0.29 2.82 -0.11 2.96 
+0.18 4.27 0.52 3.84 0.8 3.46 1.09 3.08 1.3 2.71 1.52 2.36 1.7 2.06 1.82 1.74 
+1.91 1.48 2 1.21 2.04 0.98 2.02 0.74 2.02 0.56 1.95 0.35 3.58 0.28 -0.52 -7.79 
+-2.26 -0.24 -2.43 -0.67 -2.48 -1.18 -2.38 -1.69 -1.11 -1.04 -1.04 -1.17 -0.98 -1.32 -0.85 -1.48 
+-0.74 -1.61 -0.61 -1.76 -0.43 -1.91 -0.28 -2.06 30.66 0 -0.11 2.15 -0.33 1.97 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.5 1.11 -2.41 0.63 
+-2.15 0.22 0.52 7.79 1.8 -0.07 1.87 -0.21 1.93 -0.37 1.93 -0.57 1.93 -0.76 1.89 -1.02 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.15 1.37 -2.52 1.15 -2.85 0.96 -3.25 0.71 -3.67 
+0.43 -4.08 0.15 -4.54 -38.97 0 0.17 -2.73 0.58 -2.97 1.05 -3.04 0.71 -1.48 0.84 -1.41 
+1 -1.34 1.17 -1.25 1.3 -1.11 1.5 -0.97 1.65 -0.78 1.85 -0.61 2.04 -0.37 2.23 -0.13 
+2.28 0.2 2.11 0.57 1.96 0.91 1.8 1.25 1.61 1.56 1.46 1.87 1.25 2.15 1.07 2.41 
+8.31 0 f*
+914.06 2099.11 8.31 0 0 -14.04 8.34 0 0 -6.75 ^ 0 -37.44 0.24 -1.49 
+0.64 -1.05 0.95 -0.65 1.17 -0.32 1.33 -0.09 1.39 0.09 2.63 0.39 0 -6.75 -3.06 -0.72 
+-2 -0.24 -2.23 -0.08 -1.89 0.25 -1.75 0.44 -1.59 0.61 -1.39 0.78 -1.15 0.97 -0.84 1.17 
+-0.55 1.41 -0.19 1.63 0 41.08 -7.27 0 0 6.75 ^ 0 14.04 f*
+599.54 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.15 1.15 1.18 0.98 2.41 1.56 
+2.38 1.08 2.25 0.7 1.98 0.39 2.66 0.21 1.96 -0.09 2 -0.24 1.98 -0.43 1.95 -0.62 
+1.91 -0.83 1.84 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.04 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.79 -2.56 -0.98 -2.39 -1.17 -2.23 -1.34 -2.04 -1.52 -1.85 -1.74 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.72 -0.43 -2.91 -0.13 -1.67 0.06 -1.84 0.28 -1.99 0.52 -2.02 0.82 
+-2.04 1.15 -1.97 1.54 -1.87 1.97 -1.67 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.78 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.17 -1.15 1.26 -0.97 1.3 -0.83 1.35 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.59 0.61 1.48 0.8 1.34 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.79 1.67 1.19 3.5 0.72 3.61 0.26 3.58 -0.11 2.54 -0.32 2.37 -0.52 2.19 
+-0.67 2 -0.83 1.84 -0.96 1.65 -1.06 1.49 -1.13 1.32 -1.2 1.15 -1.24 1.02 -2.49 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.43 -0.52 -1.39 -0.7 -1.32 -0.89 -1.24 -1.06 
+-1.17 -1.21 -1.06 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.5 -1.95 -0.39 -2.06 
+-0.21 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+653.6 2105.34 5.21 0 3.99 -6.1 3.43 -6.18 2.87 -6.23 2.32 -6.18 1.78 -6.08 1.26 -5.93 
+0.74 -5.71 0.24 -5.42 -0.26 -5.43 -0.8 -5.75 -1.3 -5.93 -1.84 -6.03 -2.34 -6.02 -2.86 -5.94 
+-3.37 -5.73 -1.86 -2.75 -1.97 -2.7 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.55 1.91 5.64 
+1.52 5.77 1.07 5.92 0.65 6.1 0.21 6.32 -0.19 6.16 -0.59 5.99 -1.02 5.91 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+712.35 2105.34 57.18 0 0 -8.31 -23.89 0 0 -64.46 -9.38 0 ^ -23.91 0 
+0 8.31 f*
+778.383 2094.95 8.3125 10.3945 re
+f*
+778.383 2032.57 8.3125 52.4961 re
+f*
+799.7 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.13 1.15 1.2 0.98 2.41 1.56 
+2.39 1.08 2.25 0.7 1.97 0.39 2.67 0.21 1.95 -0.09 2 -0.24 1.97 -0.43 1.96 -0.62 
+1.91 -0.83 1.85 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.05 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.8 -2.56 -0.95 -2.39 -1.17 -2.23 -1.35 -2.04 -1.52 -1.85 -1.73 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.71 -0.43 -2.91 -0.13 -1.67 0.06 -1.86 0.28 -1.98 0.52 -2.02 0.82 
+-2.04 1.15 -1.98 1.54 -1.86 1.97 -1.68 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.79 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.18 -1.15 1.25 -0.97 1.3 -0.83 1.34 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.58 0.61 1.46 0.8 1.36 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.78 1.67 1.2 3.5 0.71 3.61 0.26 3.58 -0.13 2.54 -0.3 2.37 -0.52 2.19 
+-0.67 2 -0.82 1.84 -0.96 1.65 -1.07 1.49 -1.13 1.32 -1.19 1.15 -1.23 1.02 -2.5 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.45 -0.52 -1.37 -0.7 -1.33 -0.89 -1.23 -1.06 
+-1.17 -1.21 -1.07 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+900.02 2048.68 -0.57 -2.43 -0.72 -2.26 -0.84 -2.06 -1 -1.87 -1.13 -1.72 -1.23 -1.52 -1.37 -1.37 
+-1.46 -1.21 -1.56 -1.04 -1.65 -0.89 -1.71 -0.73 -1.82 -0.59 -1.87 -0.45 -1.93 -0.32 -4.01 -0.24 
+-2.73 0.21 -2.59 0.46 -2.43 0.67 -2.25 0.91 -2.11 1.11 -1.91 1.32 -1.76 1.52 -1.56 1.71 
+-1.41 1.89 -1.21 2.08 -1.04 2.24 -0.85 2.38 -0.67 2.54 -0.48 2.71 -0.29 2.82 -0.11 2.96 
+0.18 4.27 0.52 3.84 0.8 3.46 1.09 3.08 1.3 2.71 1.52 2.36 1.7 2.06 1.82 1.74 
+1.91 1.48 2 1.21 2.04 0.98 2.02 0.74 2.02 0.56 1.95 0.35 3.58 0.28 -0.52 -7.79 
+-2.26 -0.24 -2.43 -0.67 -2.48 -1.18 -2.38 -1.69 -1.11 -1.04 -1.04 -1.17 -0.98 -1.32 -0.85 -1.48 
+-0.74 -1.61 -0.61 -1.76 -0.43 -1.91 -0.28 -2.06 30.66 0 -0.11 2.15 -0.33 1.97 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.5 1.11 -2.41 0.63 
+-2.15 0.22 0.52 7.79 1.8 -0.07 1.87 -0.21 1.93 -0.37 1.93 -0.57 1.93 -0.76 1.89 -1.02 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.15 1.37 -2.52 1.15 -2.85 0.96 -3.25 0.71 -3.67 
+0.43 -4.08 0.15 -4.54 -38.97 0 0.17 -2.73 0.58 -2.97 1.05 -3.04 0.71 -1.48 0.84 -1.41 
+1 -1.34 1.17 -1.25 1.3 -1.11 1.5 -0.97 1.65 -0.78 1.85 -0.61 2.04 -0.37 2.23 -0.13 
+2.28 0.2 2.11 0.57 1.96 0.91 1.8 1.25 1.61 1.56 1.46 1.87 1.25 2.15 1.07 2.41 
+8.31 0 f*
+914.06 2099.11 8.31 0 0 -14.04 8.34 0 0 -6.75 ^ 0 -37.44 0.24 -1.49 
+0.64 -1.05 0.95 -0.65 1.17 -0.32 1.33 -0.09 1.39 0.09 2.63 0.39 0 -6.75 -3.06 -0.72 
+-2 -0.24 -2.23 -0.08 -1.89 0.25 -1.75 0.44 -1.59 0.61 -1.39 0.78 -1.15 0.97 -0.84 1.17 
+-0.55 1.41 -0.19 1.63 0 41.08 -7.27 0 0 6.75 ^ 0 14.04 f*
+255 0 r3
+2616.43 1736.2 36.02 0 S
+2670.46 1736.2 36 0 S
+255 0 r6
+2616.43 1787 36.02 0 S
+2670.46 1787 36 0 S
+255 0 r5
+2616.43 1837.83 36.02 0 S
+2670.46 1837.83 36 0 S
+128 0 255 rG
+2616.43 1888.63 36.02 0 S
+2670.46 1888.63 36 0 S
+K
+2722.77 1754.28 3.99 0 0 -13.21 1 1.32 1.13 1.02 1.15 0.76 1.15 0.52 2.02 0.52 
+1.28 0.08 1.91 -0.15 1.89 -0.5 1.8 -0.89 1.65 -1.32 1.41 -1.79 1.11 -2.3 0.71 -2.84 
+0.26 -3.43 -0.18 -2.89 -0.5 -2.67 -0.85 -2.38 -1.2 -2.04 -1.56 -1.67 -0.93 -0.7 -1.02 -0.57 
+-1.11 -0.45 -1.2 -0.32 -1.3 -0.21 -1.41 -0.07 -1.7 0.17 -1.91 0.63 -1 0.57 -0.93 0.74 
+-0.89 0.95 -0.81 1.17 0 -3 -3.99 0 0 11.98 ^ 0.16 -1.91 0.46 -1.78 
+0.7 -1.61 0.91 -1.41 1.08 -1.15 1.22 -0.87 1.32 -0.56 1.39 -0.2 1.67 0.26 1.48 0.67 
+1.23 1.04 1.02 1.34 0.8 1.55 0.57 1.66 0.35 1.74 0.13 1.71 -0.22 2.36 -0.57 2 
+-0.84 1.69 -1.06 1.35 -1.17 1.04 -1.19 0.72 -1.15 0.43 -1.04 0.15 -1.46 -0.21 -1.34 -0.59 
+-1.23 -0.93 -1.07 -1.24 -0.89 -1.49 -0.68 -1.74 -0.41 -1.93 -0.16 -2.11 -3.99 0 0 22.96 f*
+2769.42 1736.07 -3.99 0 -0.18 1.02 -0.34 0.99 -0.5 0.92 -0.67 0.84 -0.83 0.7 -0.99 0.54 
+-1.15 0.35 -1.33 0.13 -1.58 -0.2 -1.41 -0.56 -1.2 -0.91 -0.97 -1.2 -0.8 -1.5 -0.57 -1.76 
+-0.34 -1.95 -0.11 -2.17 0.13 -2.13 0.37 -1.87 0.61 -1.62 0.82 -1.37 1.05 -1.06 1.23 -0.78 
+1.43 -0.48 1.61 -0.17 1.48 0.17 1.23 0.46 1.05 0.7 0.82 0.87 0.63 0.98 0.43 1.04 
+0.26 1.06 0.08 0.98 4 0 -0.17 -1.93 -0.5 -1.84 -0.8 -1.7 -1.15 -1.49 -1.47 -1.24 
+-1.8 -0.96 -2.12 -0.61 -2.46 -0.21 -1.45 0.08 -1.33 0.21 -1.21 0.39 -1.11 0.5 -1 0.63 
+-0.89 0.76 -1.5 1.78 -1.12 2.13 -0.79 2.34 -0.45 2.54 -0.13 2.6 0.11 1.8 0.28 1.63 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.08 1.61 1.79 1.78 1.32 1.82 0.89 1.8 0.5 
+1.61 0.15 1.76 -0.11 1.69 -0.39 1.61 -0.63 1.43 -0.95 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.32 f*
+2793.38 1736.07 -3.99 0 -0.18 1.02 -0.35 0.99 -0.5 0.92 -0.67 0.84 -0.82 0.7 -1 0.54 
+-1.15 0.35 -1.32 0.13 -1.58 -0.2 -1.41 -0.56 -1.2 -0.91 -1 -1.2 -0.78 -1.5 -0.57 -1.76 
+-0.35 -1.95 -0.11 -2.17 0.13 -2.13 0.37 -1.87 0.61 -1.62 0.83 -1.37 1.04 -1.06 1.24 -0.78 
+1.43 -0.48 1.59 -0.17 1.47 0.17 1.26 0.46 1.04 0.7 0.83 0.87 0.63 0.98 0.43 1.04 
+0.26 1.06 0.07 0.98 3.99 0 -0.16 -1.93 -0.5 -1.84 -0.8 -1.7 -1.15 -1.49 -1.48 -1.24 
+-1.8 -0.96 -2.13 -0.61 -2.47 -0.21 -1.43 0.08 -1.32 0.21 -1.21 0.39 -1.11 0.5 -1 0.63 
+-0.89 0.76 -1.5 1.78 -1.13 2.13 -0.78 2.34 -0.45 2.54 -0.13 2.6 0.11 1.8 0.28 1.63 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.08 1.61 1.79 1.75 1.32 1.84 0.89 1.79 0.5 
+1.63 0.15 1.76 -0.11 1.7 -0.39 1.58 -0.63 1.46 -0.95 1.25 -1.26 1.02 -1.61 0.76 -1.95 
+0.45 -2.32 f*
+2796.88 1730.82 11.4766 3.49609 re
+f*
+2833.31 1736.07 -4 0 -0.17 1.02 -0.34 0.99 -0.5 0.92 -0.67 0.84 -0.83 0.7 -1 0.54 
+-1.15 0.35 -1.33 0.13 -1.58 -0.2 -1.41 -0.56 -1.19 -0.91 -1 -1.2 -0.79 -1.5 -0.57 -1.76 
+-0.34 -1.95 -0.11 -2.17 0.13 -2.13 0.37 -1.87 0.61 -1.62 0.82 -1.37 1.04 -1.06 1.23 -0.78 
+1.43 -0.48 1.58 -0.17 1.48 0.17 1.26 0.46 1.04 0.7 0.82 0.87 0.61 0.98 0.46 1.04 
+0.24 1.06 0.08 0.98 4 0 -0.15 -1.93 -0.5 -1.84 -0.82 -1.7 -1.13 -1.49 -1.47 -1.24 
+-1.8 -0.96 -2.14 -0.61 -2.46 -0.21 -1.43 0.08 -1.33 0.21 -1.21 0.39 -1.11 0.5 -0.99 0.63 
+-0.89 0.76 -1.52 1.78 -1.12 2.13 -0.76 2.34 -0.46 2.54 -0.15 2.6 0.13 1.8 0.26 1.63 
+0.41 1.5 0.5 1.34 0.61 1.22 0.71 1.08 1.59 1.79 1.78 1.32 1.84 0.89 1.78 0.5 
+1.63 0.15 1.76 -0.11 1.69 -0.39 1.58 -0.63 1.46 -0.95 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.32 f*
+2851.52 1737.57 4.26 0 -0.33 2.04 -0.7 1.7 -1.04 1.34 -1.26 1.04 -1.41 0.74 -1.52 0.5 
+-1.52 0.29 -1.48 0.08 -1.78 -0.13 -1.74 -0.37 -1.65 -0.63 -1.47 -0.89 -1.26 -1.13 -0.98 -1.37 
+-0.62 -1.63 -0.22 -1.84 0.09 -1.15 0.24 -1.05 0.43 -0.95 0.61 -0.84 0.8 -0.74 0.97 -0.67 
+1.2 -0.56 1.39 -0.52 6.25 -1.5 1.52 -0.48 1.2 -0.7 0.75 -1 0.2 -0.61 0.07 -0.71 
+-0.08 -0.8 -0.29 -0.76 -0.48 -0.67 -0.65 -0.59 -0.85 -0.5 -1.02 -0.35 -1.22 -0.24 -1.41 -0.09 
+-1.58 0.11 -1.29 0.26 -0.97 0.43 -0.74 0.59 -0.54 0.71 -0.39 0.85 -0.48 2.04 -4.23 0 
+0.24 -1.8 0.43 -1.67 0.67 -1.47 0.96 -1.29 1.3 -1.04 1.73 -0.8 2.17 -0.48 2.71 -0.17 
+1.87 0.13 1.84 0.39 1.72 0.63 1.56 0.91 1.32 1.15 1.02 1.41 0.68 1.67 0.24 1.93 
+-0.13 1.33 -0.39 1.17 -0.63 1.04 -0.85 0.89 -1.11 0.8 -1.32 0.67 -1.54 0.59 -1.78 0.5 
+-4.73 1 -1.78 0.8 -0.97 0.88 -0.42 0.89 -0.08 0.93 0.11 0.89 0.33 0.76 0.52 0.63 
+0.67 0.54 0.8 0.42 0.93 0.28 2.13 0.23 1.22 -0.08 0.99 -0.22 0.85 -0.37 0.65 -0.48 
+0.52 -0.59 0.37 -0.69 0.39 -1.56 4.26 0 -4.26 0 f*
+2862.26 1744.55 3.49 0 0 -3.75 1.93 2.19 1.82 1.37 0.93 0.43 0.95 0.3 2.09 0.2 
+1.8 -0.24 1.67 -0.54 0.8 -0.48 0.83 -0.68 0.8 -0.89 0.84 -1.17 1.98 1.99 0.95 0.7 
+0.93 0.52 1.89 0.63 1.97 0.15 1.24 -0.08 1.25 -0.29 1.22 -0.5 1.13 -0.7 0.96 -0.89 
+0.76 -1.13 0.5 -1.32 0.17 -1.59 0 -19.47 -4 0 0 17.97 -0.11 0.91 -0.3 0.85 
+-0.48 0.76 -0.61 0.68 -0.7 0.54 -0.74 0.41 -0.79 0.26 -0.78 0.08 -1.04 -0.11 -1.05 -0.37 
+-0.99 -0.57 -0.93 -0.74 -0.8 -0.89 -0.61 -1 -0.41 -1.13 -0.13 -1.2 0 -16.47 -3.99 0 
+0 17.97 -0.13 0.91 -0.3 0.85 -0.48 0.76 -0.63 0.68 -0.72 0.54 -0.8 0.41 -0.85 0.26 
+-0.84 0.08 -0.89 -0.11 -0.95 -0.33 -0.96 -0.54 -0.91 -0.69 -0.8 -0.89 -0.66 -1.02 -0.41 -1.15 
+-0.15 -1.26 0 -16.47 -3.99 0 0 25.22 f*
+2912.41 1753.28 2.74 0 0 -33.95 -4.23 0 0 24.22 -7.49 0 0 3 3.02 0.34 
+1.37 0.29 1.24 0.5 1.08 0.76 0.93 1.13 0.79 1.58 0.56 2.13 f*
+2927.39 1730.82 11.4766 3.49609 re
+f*
+2955.08 1753.28 2.75 0 0 -33.95 -4.25 0 0 24.22 -7.49 0 0 3 3.02 0.34 
+1.37 0.29 1.24 0.5 1.09 0.76 0.95 1.13 0.76 1.58 0.57 2.13 f*
+2752.45 1793.75 -0.71 2.84 -1 2.41 -1.3 2 -1.61 1.56 -1.87 1.19 -2.14 0.82 -2.41 0.48 
+-2.67 0.17 -1.82 -0.11 -1.72 -0.26 -1.63 -0.43 -1.52 -0.59 -1.39 -0.73 -1.31 -0.89 -1.19 -1.02 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.49 -0.61 -1.61 -0.85 -3.47 -0.34 -3.8 0.09 -2.17 
+0.21 -2.04 0.39 -1.91 0.54 -1.78 0.66 -1.63 0.78 -1.5 0.91 -1.34 1.05 -1.24 1.11 -1.06 
+1.24 -0.93 1.32 -0.8 1.39 -0.65 1.47 -0.5 1.54 -0.37 1.61 -0.22 1.67 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.34 1.39 0.46 1.26 0.59 1.13 0.7 1.02 0.8 0.89 0.89 1.47 2.02 
+1.07 2.34 0.67 2.56 0.34 2.74 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.84 -1.67 -1.06 -1.34 
+-1.28 -1 -1.54 -0.7 -1.82 -0.41 -2.08 -0.13 -1.45 0.06 -1.35 0.21 -1.24 0.35 -1.13 0.45 
+-1.04 0.61 -0.93 0.7 -1.61 1.72 -1.21 2.11 -0.85 2.43 -0.52 2.67 -0.16 2.91 0.22 3.19 
+0.65 2.82 1.05 2.43 1.39 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.26 1.73 -0.13 
+1.63 -0.39 1.5 -0.61 1.34 -0.85 1.13 -1.06 0.91 -1.28 0.63 -1.5 0.35 -1.67 4.49 0 f*
+2787.13 1793.75 -0.7 2.84 -1.02 2.41 -1.3 2 -1.59 1.56 -1.86 1.19 -2.15 0.82 -2.43 0.48 
+-2.66 0.17 -1.82 -0.11 -1.71 -0.26 -1.63 -0.43 -1.5 -0.59 -1.41 -0.73 -1.3 -0.89 -1.2 -1.02 
+-1.06 -1.15 -0.96 -1.28 -0.84 -1.39 -0.74 -1.49 -0.61 -1.61 -0.85 -3.47 -0.34 -3.8 0.08 -2.17 
+0.24 -2.04 0.39 -1.91 0.52 -1.78 0.65 -1.63 0.8 -1.5 0.91 -1.34 1.02 -1.24 1.13 -1.06 
+1.21 -0.93 1.32 -0.8 1.39 -0.65 1.48 -0.5 1.56 -0.37 1.61 -0.22 1.65 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.34 1.39 0.46 1.26 0.59 1.13 0.7 1.02 0.8 0.91 0.89 1.45 2.02 
+1.07 2.34 0.7 2.56 0.32 2.74 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.85 -1.67 -1.04 -1.34 
+-1.31 -1 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.46 0.06 -1.32 0.21 -1.24 0.35 -1.15 0.45 
+-1.04 0.61 -0.93 0.7 -1.58 1.72 -1.24 2.11 -0.85 2.43 -0.5 2.67 -0.18 2.91 0.24 3.19 
+0.66 2.82 1.04 2.43 1.37 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.26 1.73 -0.13 
+1.63 -0.39 1.52 -0.61 1.32 -0.85 1.13 -1.06 0.91 -1.28 0.65 -1.5 0.33 -1.67 4.49 0 f*
+2818.84 1794.49 -0.07 1.32 -0.22 1.21 -0.33 1.15 -0.43 1.04 -1.21 1.85 -1.61 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.17 -2.97 -0.19 -2.56 -0.56 -2.15 -0.91 -1.74 -1.22 -1.34 -1.48 
+-0.95 -1.76 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.35 -1.46 0.54 -1.21 0.72 -1.02 0.87 -0.82 
+0.98 -0.68 2.15 -1.08 11.24 -3 2.36 -1.02 0.85 -0.59 0.69 -0.62 0.5 -0.7 0.33 -0.72 
+0.2 -0.78 0.07 -0.8 -0.11 -1.2 -0.32 -1.11 -0.57 -1.02 -0.87 -0.89 -1.21 -0.74 -1.56 -0.56 
+-1.95 -0.37 -2.39 -0.11 -2.43 0.17 -2.04 0.5 -1.7 0.8 -1.32 1.02 -1.02 1.19 -0.7 1.37 
+-0.41 1.43 -0.13 1.5 -4.5 0 0.22 -2.45 0.65 -2.28 1.09 -2.02 1.52 -1.78 1.97 -1.43 
+2.46 -1.11 2.93 -0.67 3.41 -0.24 3.14 0.22 2.76 0.61 2.3 0.98 1.91 1.29 1.46 1.56 
+1.06 1.78 0.63 1.96 0.21 2.11 -0.15 1.69 -0.46 1.52 -0.69 1.37 -0.89 1.2 -1.07 0.99 
+-1.17 0.85 -1.26 0.65 -1.3 0.46 -11.24 3 -1.95 1.02 -1.13 0.98 -0.32 0.55 -0.2 0.63 
+-0.13 1.59 0.16 1.32 0.46 1.15 0.71 0.97 0.95 0.83 1.15 0.63 1.3 0.46 1.45 0.29 
+1.55 0.09 2.04 -0.13 1.75 -0.39 1.5 -0.63 1.24 -0.85 0.95 -1.02 0.7 -1.2 0.42 -1.32 
+0.15 -1.46 4.5 0 f*
+2825.57 1804.73 6.25 0 10.22 -30.45 10.24 30.45 6.23 0 0 -34.95 -4.23 0 0 29.19 
+-9.98 -29.19 -4.75 0 -9.72 29.19 0 -29.19 -4.25 0 0 34.95 f*
+2878.73 1803.73 2.99 0 0 -21.96 5.23 0 0 -4 ^ 0 -7.99 -4.25 0 
+^ -14.21 0 0 4 ^ 0 14.71 -10.48 -14.71 -3.73 0 0 0.5 
+15.47 21.46 f*
+2752.45 1844.68 -0.71 2.87 -1 2.41 -1.3 1.98 -1.61 1.58 -1.87 1.2 -2.14 0.82 -2.41 0.48 
+-2.67 0.15 -1.82 -0.08 -1.72 -0.26 -1.63 -0.43 -1.52 -0.59 -1.39 -0.75 -1.31 -0.87 -1.19 -1.04 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.49 -0.61 -1.61 -0.85 -3.47 -0.34 -3.8 0.09 -2.17 
+0.21 -2.04 0.39 -1.91 0.54 -1.78 0.66 -1.63 0.78 -1.5 0.91 -1.34 1.05 -1.21 1.11 -1.09 
+1.24 -0.93 1.32 -0.78 1.39 -0.65 1.47 -0.52 1.54 -0.37 1.61 -0.22 1.67 -0.06 1.8 0.06 
+1.65 0.22 1.52 0.34 1.39 0.46 1.26 0.59 1.13 0.7 1.02 0.8 0.89 0.89 1.47 2.04 
+1.07 2.32 0.67 2.56 0.34 2.74 -4.49 0 -0.46 -2.41 -0.63 -2.04 -0.84 -1.7 -1.06 -1.32 
+-1.28 -1.02 -1.54 -0.7 -1.82 -0.41 -2.08 -0.13 -1.45 0.06 -1.35 0.21 -1.24 0.35 -1.13 0.48 
+-1.04 0.58 -0.93 0.7 -1.61 1.74 -1.21 2.08 -0.85 2.43 -0.52 2.7 -0.16 2.88 0.22 3.19 
+0.65 2.84 1.05 2.43 1.39 2.02 1.7 1.63 1.95 1.17 2.17 0.72 2.37 0.24 1.73 -0.13 
+1.63 -0.37 1.5 -0.63 1.34 -0.85 1.13 -1.06 0.91 -1.28 0.63 -1.5 0.35 -1.67 4.49 0 f*
+2759.7 1855.67 24.2 0 0 -4 -19.7 0 0 -11.24 18.95 0 0 -3.99 ^ 
+0 -11.72 20.44 0 0 -3.99 -24.93 0 0 34.95 f*
+2816.08 1845.42 -0.07 1.32 -0.2 1.21 -0.32 1.15 -0.46 1.04 -1.21 1.85 -1.61 1.52 -1.93 1.15 
+-2.2 0.84 -2.41 0.48 -2.58 0.17 -2.98 -0.2 -2.54 -0.56 -2.14 -0.91 -1.76 -1.2 -1.34 -1.5 
+-0.96 -1.73 -0.56 -1.98 -0.2 -2.17 0.13 -1.71 0.35 -1.46 0.57 -1.21 0.71 -1 0.87 -0.83 
+0.96 -0.7 2.17 -1.08 11.21 -3 2.37 -1.02 0.87 -0.59 0.67 -0.62 0.5 -0.67 0.35 -0.74 
+0.19 -0.76 0.05 -0.82 -0.09 -1.2 -0.33 -1.11 -0.58 -1.02 -0.87 -0.89 -1.2 -0.74 -1.56 -0.57 
+-1.95 -0.34 -2.41 -0.13 -2.41 0.17 -2.04 0.52 -1.7 0.78 -1.34 1.02 -1 1.22 -0.7 1.34 
+-0.41 1.43 -0.13 1.5 -4.49 0 0.21 -2.45 0.63 -2.26 1.09 -2.04 1.54 -1.76 1.97 -1.45 
+2.46 -1.09 2.91 -0.7 3.41 -0.24 3.17 0.22 2.73 0.61 2.32 0.98 1.89 1.28 1.47 1.57 
+1.07 1.78 0.63 1.96 0.2 2.11 -0.15 1.69 -0.43 1.55 -0.7 1.34 -0.89 1.2 -1.07 1.02 
+-1.17 0.83 -1.28 0.65 -1.3 0.46 -11.22 3 -1.95 1.04 -1.13 0.96 -0.32 0.54 -0.21 0.63 
+-0.13 1.59 0.17 1.32 0.46 1.15 0.71 0.97 0.93 0.83 1.15 0.63 1.33 0.46 1.43 0.28 
+1.57 0.09 2.02 -0.13 1.76 -0.39 1.5 -0.63 1.24 -0.85 0.97 -1.02 0.69 -1.2 0.41 -1.32 
+0.13 -1.46 4.49 0 f*
+2822.83 1855.67 6.23 0 10.25 -30.45 10.22 30.45 6.25 0 0 -34.95 -4.26 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.74 29.19 0 -29.19 -4.23 0 0 34.95 f*
+2872.98 1854.67 2.75 0 0 -33.95 -4.25 0 0 24.2 -7.48 0 0 3 3.01 0.37 
+1.37 0.28 1.23 0.48 1.09 0.76 0.95 1.13 0.76 1.61 0.57 2.13 f*
+2887.96 1832.21 11.4766 3.49219 re
+f*
+2933.62 1844.68 -0.72 2.87 -1 2.41 -1.3 1.98 -1.59 1.58 -1.89 1.2 -2.15 0.82 -2.41 0.48 
+-2.67 0.15 -1.82 -0.08 -1.72 -0.26 -1.62 -0.43 -1.52 -0.59 -1.39 -0.75 -1.3 -0.87 -1.2 -1.04 
+-1.07 -1.15 -0.98 -1.28 -0.82 -1.39 -0.74 -1.49 -0.61 -1.61 -0.84 -3.47 -0.35 -3.8 0.09 -2.17 
+0.24 -2.04 0.37 -1.91 0.55 -1.78 0.65 -1.63 0.8 -1.5 0.91 -1.34 1.02 -1.21 1.13 -1.09 
+1.21 -0.93 1.32 -0.78 1.39 -0.65 1.48 -0.52 1.54 -0.37 1.61 -0.22 1.67 -0.06 1.8 0.06 
+1.65 0.22 1.52 0.34 1.39 0.46 1.25 0.59 1.13 0.7 1.02 0.8 0.89 0.89 1.48 2.04 
+1.06 2.32 0.67 2.56 0.35 2.74 -4.5 0 -0.45 -2.41 -0.63 -2.04 -0.85 -1.7 -1.06 -1.32 
+-1.29 -1.02 -1.54 -0.7 -1.82 -0.41 -2.09 -0.13 -1.45 0.06 -1.34 0.21 -1.24 0.35 -1.12 0.48 
+-1.04 0.58 -0.93 0.7 -1.61 1.74 -1.22 2.08 -0.84 2.43 -0.5 2.7 -0.17 2.88 0.22 3.19 
+0.65 2.84 1.04 2.43 1.39 2.02 1.7 1.63 1.96 1.17 2.17 0.72 2.36 0.24 1.74 -0.13 
+1.63 -0.37 1.5 -0.63 1.34 -0.85 1.13 -1.06 0.91 -1.28 0.63 -1.5 0.34 -1.67 4.5 0 f*
+2949.85 1855.67 5.73 0 12.24 -34.95 -4.99 0 -3.5 10.24 -13.74 0 -3.49 -10.24 -4.99 0 
+10.98 29.95 4.49 0 -5.73 -15.73 11.21 0 -5.49 15.73 -4.49 0 1.76 5 f*
+2972.05 1855.67 6.25 0 10.22 -30.45 10.21 30.45 6.25 0 0 -34.95 -4.25 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.72 29.19 0 -29.19 -4.25 0 0 34.95 f*
+3013.48 1854.67 17.71 0 0 -4 -14.21 0 -1.26 -9.74 1.24 0.89 1.45 0.72 1.74 0.48 
+2.06 0.17 1.76 -0.15 1.83 -0.46 1.8 -0.79 1.67 -1.17 1.47 -1.56 1.17 -1.97 0.43 -1.17 
+0.33 -1.29 0.2 -1.41 0.09 -1.52 -0.2 -2.39 -0.57 -2.25 -0.91 -2.09 -1.3 -1.82 -1.65 -1.52 
+-2.02 -1.15 -2.36 -0.74 -2.74 -0.26 -2.52 0.17 -2.14 0.57 -1.8 0.87 -1.47 1.15 -1.2 1.41 
+-0.93 1.61 -0.67 1.78 -0.48 1.93 4.23 0 0.43 -1.26 0.56 -1.13 0.65 -0.98 0.79 -0.82 
+0.91 -0.68 1.02 -0.48 1.13 -0.3 1.25 -0.11 1.7 0.13 1.52 0.39 1.32 0.63 1.11 0.91 
+0.89 1.15 0.65 1.41 0.42 1.69 0.13 1.93 -0.11 1.41 -0.33 1.41 -0.54 1.34 -0.8 1.22 
+-1.02 1.06 -1.3 0.8 -1.56 0.54 -1.83 0.18 -1.82 -0.18 -1.5 -0.58 -1.48 -1.02 -1.7 -1.45 
+-3.73 0 2.49 18.47 f*
+2754.71 1893.62 -14.74 0 0 -3.99 10.48 0 0 -2.24 -0.2 -1.69 -0.57 -1.7 -0.91 -1.58 
+-1.26 -1.43 -1.54 -1.21 -1.84 -0.91 -2.09 -0.56 -2.32 -0.16 -1.59 0.09 -1.47 0.21 -1.35 0.37 
+-1.23 0.5 -1.13 0.63 -1.02 0.73 -0.91 0.85 -0.82 0.95 -1.3 2.17 -0.93 2.45 -0.54 2.67 
+-0.18 2.84 0.24 3.04 0.71 2.73 1.15 2.39 1.52 2.02 1.82 1.63 2.13 1.19 2.36 0.74 
+2.54 0.24 1.24 -0.07 1.41 -0.26 1.48 -0.46 1.47 -0.67 1.39 -0.98 1.21 -1.26 0.93 -1.59 
+0.59 -1.95 4.75 0 -0.35 1.47 -0.69 1.76 -1.06 1.84 -1.5 1.84 -1.93 1.67 -1.15 0.73 
+-1.28 0.63 -1.43 0.52 -1.54 0.41 -1.7 0.24 -1.84 0.09 -1.93 -0.09 -1.82 -0.26 -1.72 -0.43 
+-1.61 -0.59 -1.52 -0.74 -1.39 -0.87 -1.28 -1.02 -1.15 -1.16 -1.04 -1.26 -0.91 -1.39 -0.78 -1.48 
+-0.65 -1.56 -0.5 -1.67 -0.37 -1.76 -0.24 -1.82 -0.06 -1.89 0.09 -2.34 0.24 -2.17 0.43 -2 
+0.57 -1.84 0.7 -1.67 0.84 -1.52 0.98 -1.34 1.08 -1.2 1.2 -1.07 1.3 -0.89 1.41 -0.76 
+1.47 -0.61 1.56 -0.45 1.65 -0.34 3.45 -0.26 2.58 0.26 1.39 0.34 1.41 0.52 1.43 0.71 
+1.43 0.89 1.39 1.15 1.34 1.37 1 -4.26 3 0 0 18.47 f*
+2762.93 1875.15 4.49609 34.9414 re
+f*
+2800.37 1899.87 -0.06 1.3 -0.21 1.24 -0.33 1.13 -0.43 1.06 -1.22 1.84 -1.61 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.15 -2.97 -0.2 -2.56 -0.56 -2.14 -0.89 -1.74 -1.21 -1.34 -1.5 
+-0.96 -1.73 -0.56 -1.98 -0.2 -2.15 0.13 -1.73 0.35 -1.45 0.54 -1.22 0.74 -1 0.84 -0.82 
+0.98 -0.7 2.17 -1.06 11.21 -2.99 2.37 -1.05 0.87 -0.58 0.67 -0.63 0.5 -0.68 0.33 -0.71 
+0.2 -0.79 0.07 -0.82 -0.11 -1.18 -0.3 -1.13 -0.58 -1.02 -0.87 -0.89 -1.22 -0.74 -1.56 -0.57 
+-1.96 -0.34 -2.39 -0.13 -2.43 0.2 -2.04 0.5 -1.67 0.78 -1.34 1.02 -1 1.21 -0.72 1.35 
+-0.39 1.45 -0.13 1.48 -4.49 0 0.19 -2.45 0.65 -2.26 1.08 -2.04 1.52 -1.75 1.99 -1.46 
+2.43 -1.08 2.93 -0.7 3.41 -0.24 3.17 0.21 2.73 0.63 2.3 0.96 1.91 1.3 1.47 1.55 
+1.05 1.78 0.63 1.97 0.22 2.08 -0.15 1.7 -0.45 1.54 -0.7 1.37 -0.89 1.17 -1.05 1.02 
+-1.2 0.82 -1.25 0.66 -1.3 0.48 -11.22 3 -1.98 1.02 -1.13 0.98 -0.32 0.55 -0.2 0.61 
+-0.13 1.58 0.15 1.33 0.46 1.15 0.71 1 0.96 0.8 1.15 0.63 1.31 0.48 1.45 0.26 
+1.54 0.11 2.04 -0.15 1.76 -0.39 1.5 -0.63 1.23 -0.82 0.96 -1.04 0.7 -1.17 0.41 -1.35 
+0.16 -1.43 4.49 0 f*
+2832.31 1899.87 -0.06 1.3 -0.21 1.24 -0.33 1.13 -0.43 1.06 -1.24 1.84 -1.59 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.15 -2.97 -0.2 -2.56 -0.56 -2.14 -0.89 -1.74 -1.21 -1.35 -1.5 
+-0.95 -1.73 -0.56 -1.98 -0.2 -2.15 0.13 -1.73 0.34 -1.45 0.55 -1.22 0.71 -1 0.87 -0.82 
+0.98 -0.7 2.15 -1.06 11.24 -2.99 2.37 -1.05 0.84 -0.58 0.67 -0.63 0.5 -0.68 0.35 -0.71 
+0.19 -0.79 0.07 -0.82 -0.11 -1.18 -0.33 -1.13 -0.56 -1.02 -0.86 -0.89 -1.22 -0.74 -1.56 -0.57 
+-1.96 -0.34 -2.39 -0.13 -2.43 0.2 -2.04 0.5 -1.7 0.78 -1.32 1.02 -1.02 1.21 -0.7 1.35 
+-0.41 1.45 -0.13 1.48 -4.49 0 0.21 -2.45 0.65 -2.26 1.09 -2.04 1.52 -1.75 1.97 -1.46 
+2.46 -1.08 2.93 -0.7 3.4 -0.24 3.15 0.21 2.73 0.63 2.32 0.96 1.91 1.3 1.45 1.55 
+1.07 1.78 0.63 1.97 0.22 2.08 -0.15 1.7 -0.45 1.54 -0.7 1.37 -0.89 1.17 -1.07 1.02 
+-1.17 0.82 -1.25 0.66 -1.3 0.48 -11.24 3 -1.95 1.02 -1.13 0.98 -0.32 0.55 -0.2 0.61 
+-0.12 1.58 0.15 1.33 0.46 1.15 0.71 1 0.96 0.8 1.15 0.63 1.3 0.48 1.45 0.26 
+1.54 0.11 2.04 -0.15 1.75 -0.39 1.5 -0.63 1.23 -0.82 0.96 -1.04 0.69 -1.17 0.41 -1.35 
+0.15 -1.43 4.49 0 f*
+2837.54 1886.63 11.4805 3.49609 re
+f*
+2855.77 1910.09 24.2 0 0 -3.99 -19.71 0 0 -11.22 18.97 0 0 -4 ^ 
+0 -11.74 20.46 0 0 -4 -24.95 0 0 34.94 f*
+2885.72 1897.37 4.23 0 0.11 1.7 0.33 1.54 0.52 1.37 0.76 1.17 0.98 0.93 1.2 0.7 
+1.43 0.44 1.67 0.15 1.29 -0.13 1.21 -0.32 1.09 -0.55 0.98 -0.76 0.8 -0.93 0.61 -1.11 
+0.39 -1.28 0.13 -1.41 -0.11 -1.45 -0.37 -1.22 -0.58 -1.02 -0.85 -0.93 -1.08 -0.87 -1.32 -0.91 
+-3.43 -2.08 -2.89 -1.7 -2.37 -1.72 -1.86 -1.73 -1.41 -1.82 -1.05 -1.89 -0.67 -2 -0.37 -2.1 
+-0.11 -2.29 22.7 0 0 4 -17.96 0 0.45 1.54 0.61 1.28 0.8 1.09 1.02 0.98 
+2.73 1.87 3.86 2.23 2.26 1.11 1.84 1.26 1.52 1.34 1.2 1.43 0.87 1.52 0.61 1.52 
+0.35 1.54 0.11 1.52 -0.24 2.06 -0.63 1.87 -1.02 1.67 -1.37 1.41 -1.63 1.15 -1.87 0.85 
+-2.04 0.54 -2.2 0.18 -2.34 -0.18 -2.14 -0.54 -1.91 -0.89 -1.65 -1.26 -1.35 -1.65 -1 -2.02 
+-0.62 -2.39 -0.2 -2.8 f*
+2912.16 1886.63 11.4766 3.49609 re
+f*
+2930.38 1910.09 17.21 0 1.78 -0.15 1.73 -0.45 1.65 -0.74 1.48 -1.04 1.25 -1.35 0.98 -1.62 
+0.63 -1.91 0.24 -2.21 -0.11 -1.43 -0.26 -1.28 -0.48 -1.17 -0.63 -1.06 -0.8 -0.95 -1 -0.87 
+-1.15 -0.76 -1.32 -0.7 1.65 -0.76 1.2 -0.91 0.84 -1.08 0.57 -1.24 0.3 -1.39 0.15 -1.5 
+0.05 -3.36 0.2 -2.37 0.36 -1.65 0.63 -1.12 1.05 -0.85 0 -1 -5.49 0 -0.57 1.52 
+-0.3 1.67 -0.11 2.5 -0.02 4.05 -0.11 1.3 -0.32 1.09 -0.48 0.91 -0.65 0.71 -0.74 0.55 
+-0.85 0.39 -0.91 0.22 -0.93 0.07 -12.22 0 0 -14.98 -4.49 0 0 30.95 ^ 
+0 -11.98 12.22 0 1.17 0.09 1.06 0.26 0.93 0.43 0.8 0.63 0.65 0.83 0.48 1.04 
+0.28 1.24 0.11 1.48 -0.11 1.41 -0.3 1.22 -0.5 1.02 -0.67 0.85 -0.87 0.65 -1.02 0.48 
+-1.17 0.29 -1.34 0.09 -16.21 0 0 3.99 f*
+2959.83 1866.67 28.6914 2.25391 re
+f*
+3019.21 1899.11 -0.7 2.86 -1.02 2.41 -1.3 1.98 -1.58 1.59 -1.89 1.2 -2.12 0.82 -2.43 0.48 
+-2.67 0.15 -1.82 -0.09 -1.71 -0.26 -1.63 -0.43 -1.5 -0.59 -1.41 -0.74 -1.3 -0.89 -1.2 -1.02 
+-1.06 -1.15 -0.95 -1.28 -0.85 -1.39 -0.73 -1.52 -0.61 -1.58 -0.84 -3.5 -0.35 -3.78 0.09 -2.2 
+0.24 -2.04 0.37 -1.91 0.54 -1.75 0.65 -1.63 0.8 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.07 
+1.22 -0.96 1.32 -0.78 1.39 -0.65 1.48 -0.5 1.54 -0.37 1.61 -0.22 1.67 -0.08 1.8 0.08 
+1.65 0.2 1.52 0.35 1.39 0.48 1.25 0.58 1.13 0.7 1.02 0.78 0.89 0.89 1.48 2.04 
+1.06 2.32 0.67 2.59 0.35 2.73 -4.5 0 -0.46 -2.43 -0.62 -2.04 -0.84 -1.7 -1.07 -1.32 
+-1.28 -1.02 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.45 0.09 -1.33 0.2 -1.25 0.35 -1.13 0.48 
+-1.05 0.59 -0.93 0.71 -1.61 1.72 -1.22 2.11 -0.84 2.41 -0.5 2.69 -0.17 2.91 0.21 3.19 
+0.67 2.82 1.05 2.43 1.37 2.04 1.69 1.61 1.96 1.17 2.16 0.71 2.37 0.24 1.74 -0.14 
+1.63 -0.36 1.5 -0.61 1.34 -0.84 1.13 -1.08 0.91 -1.29 0.63 -1.47 0.34 -1.7 4.5 0 f*
+3053.91 1899.11 -0.72 2.86 -1.02 2.41 -1.3 1.98 -1.59 1.59 -1.86 1.2 -2.15 0.82 -2.41 0.48 
+-2.69 0.15 -1.82 -0.09 -1.71 -0.26 -1.61 -0.43 -1.52 -0.59 -1.41 -0.74 -1.3 -0.89 -1.17 -1.02 
+-1.08 -1.15 -0.96 -1.28 -0.85 -1.39 -0.73 -1.52 -0.61 -1.58 -0.85 -3.5 -0.35 -3.78 0.09 -2.2 
+0.24 -2.04 0.39 -1.91 0.52 -1.75 0.67 -1.63 0.79 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.07 
+1.21 -0.96 1.33 -0.78 1.41 -0.65 1.47 -0.5 1.55 -0.37 1.61 -0.22 1.64 -0.08 1.8 0.08 
+1.67 0.2 1.52 0.35 1.37 0.48 1.26 0.58 1.15 0.7 1 0.78 0.91 0.89 1.46 2.04 
+1.06 2.32 0.7 2.59 0.35 2.73 -4.5 0 -0.45 -2.43 -0.65 -2.04 -0.84 -1.7 -1.04 -1.32 
+-1.3 -1.02 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.43 0.09 -1.35 0.2 -1.23 0.35 -1.15 0.48 
+-1.02 0.59 -0.96 0.71 -1.58 1.72 -1.22 2.11 -0.87 2.41 -0.5 2.69 -0.17 2.91 0.24 3.19 
+0.65 2.82 1.04 2.43 1.39 2.04 1.67 1.61 1.95 1.17 2.2 0.71 2.34 0.24 1.74 -0.14 
+1.65 -0.36 1.5 -0.61 1.33 -0.84 1.15 -1.08 0.89 -1.29 0.65 -1.47 0.35 -1.7 4.49 0 f*
+599.54 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.15 1.15 1.18 0.98 2.41 1.56 
+2.38 1.08 2.25 0.7 1.98 0.39 2.66 0.21 1.96 -0.09 2 -0.24 1.98 -0.43 1.95 -0.62 
+1.91 -0.83 1.84 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.04 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.79 -2.56 -0.98 -2.39 -1.17 -2.23 -1.34 -2.04 -1.52 -1.85 -1.74 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.72 -0.43 -2.91 -0.13 -1.67 0.06 -1.84 0.28 -1.99 0.52 -2.02 0.82 
+-2.04 1.15 -1.97 1.54 -1.87 1.97 -1.67 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.78 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.17 -1.15 1.26 -0.97 1.3 -0.83 1.35 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.59 0.61 1.48 0.8 1.34 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.79 1.67 1.19 3.5 0.72 3.61 0.26 3.58 -0.11 2.54 -0.32 2.37 -0.52 2.19 
+-0.67 2 -0.83 1.84 -0.96 1.65 -1.06 1.49 -1.13 1.32 -1.2 1.15 -1.24 1.02 -2.49 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.43 -0.52 -1.39 -0.7 -1.32 -0.89 -1.24 -1.06 
+-1.17 -1.21 -1.06 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.5 -1.95 -0.39 -2.06 
+-0.21 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+653.6 2105.34 5.21 0 3.99 -6.1 3.43 -6.18 2.87 -6.23 2.32 -6.18 1.78 -6.08 1.26 -5.93 
+0.74 -5.71 0.24 -5.42 -0.26 -5.43 -0.8 -5.75 -1.3 -5.93 -1.84 -6.03 -2.34 -6.02 -2.86 -5.94 
+-3.37 -5.73 -1.86 -2.75 -1.97 -2.7 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.55 1.91 5.64 
+1.52 5.77 1.07 5.92 0.65 6.1 0.21 6.32 -0.19 6.16 -0.59 5.99 -1.02 5.91 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+712.35 2105.34 57.18 0 0 -8.31 -23.89 0 0 -64.46 -9.38 0 ^ -23.91 0 
+0 8.31 f*
+778.383 2094.95 8.3125 10.3945 re
+f*
+778.383 2032.57 8.3125 52.4961 re
+f*
+799.7 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.13 1.15 1.2 0.98 2.41 1.56 
+2.39 1.08 2.25 0.7 1.97 0.39 2.67 0.21 1.95 -0.09 2 -0.24 1.97 -0.43 1.96 -0.62 
+1.91 -0.83 1.85 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.05 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.8 -2.56 -0.95 -2.39 -1.17 -2.23 -1.35 -2.04 -1.52 -1.85 -1.73 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.71 -0.43 -2.91 -0.13 -1.67 0.06 -1.86 0.28 -1.98 0.52 -2.02 0.82 
+-2.04 1.15 -1.98 1.54 -1.86 1.97 -1.68 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.79 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.18 -1.15 1.25 -0.97 1.3 -0.83 1.34 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.58 0.61 1.46 0.8 1.36 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.78 1.67 1.2 3.5 0.71 3.61 0.26 3.58 -0.13 2.54 -0.3 2.37 -0.52 2.19 
+-0.67 2 -0.82 1.84 -0.96 1.65 -1.07 1.49 -1.13 1.32 -1.19 1.15 -1.23 1.02 -2.5 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.45 -0.52 -1.37 -0.7 -1.33 -0.89 -1.23 -1.06 
+-1.17 -1.21 -1.07 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+900.02 2048.68 -0.57 -2.43 -0.72 -2.26 -0.84 -2.06 -1 -1.87 -1.13 -1.72 -1.23 -1.52 -1.37 -1.37 
+-1.46 -1.21 -1.56 -1.04 -1.65 -0.89 -1.71 -0.73 -1.82 -0.59 -1.87 -0.45 -1.93 -0.32 -4.01 -0.24 
+-2.73 0.21 -2.59 0.46 -2.43 0.67 -2.25 0.91 -2.11 1.11 -1.91 1.32 -1.76 1.52 -1.56 1.71 
+-1.41 1.89 -1.21 2.08 -1.04 2.24 -0.85 2.38 -0.67 2.54 -0.48 2.71 -0.29 2.82 -0.11 2.96 
+0.18 4.27 0.52 3.84 0.8 3.46 1.09 3.08 1.3 2.71 1.52 2.36 1.7 2.06 1.82 1.74 
+1.91 1.48 2 1.21 2.04 0.98 2.02 0.74 2.02 0.56 1.95 0.35 3.58 0.28 -0.52 -7.79 
+-2.26 -0.24 -2.43 -0.67 -2.48 -1.18 -2.38 -1.69 -1.11 -1.04 -1.04 -1.17 -0.98 -1.32 -0.85 -1.48 
+-0.74 -1.61 -0.61 -1.76 -0.43 -1.91 -0.28 -2.06 30.66 0 -0.11 2.15 -0.33 1.97 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.5 1.11 -2.41 0.63 
+-2.15 0.22 0.52 7.79 1.8 -0.07 1.87 -0.21 1.93 -0.37 1.93 -0.57 1.93 -0.76 1.89 -1.02 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.15 1.37 -2.52 1.15 -2.85 0.96 -3.25 0.71 -3.67 
+0.43 -4.08 0.15 -4.54 -38.97 0 0.17 -2.73 0.58 -2.97 1.05 -3.04 0.71 -1.48 0.84 -1.41 
+1 -1.34 1.17 -1.25 1.3 -1.11 1.5 -0.97 1.65 -0.78 1.85 -0.61 2.04 -0.37 2.23 -0.13 
+2.28 0.2 2.11 0.57 1.96 0.91 1.8 1.25 1.61 1.56 1.46 1.87 1.25 2.15 1.07 2.41 
+8.31 0 f*
+914.06 2099.11 8.31 0 0 -14.04 8.34 0 0 -6.75 ^ 0 -37.44 0.24 -1.49 
+0.64 -1.05 0.95 -0.65 1.17 -0.32 1.33 -0.09 1.39 0.09 2.63 0.39 0 -6.75 -3.06 -0.72 
+-2 -0.24 -2.23 -0.08 -1.89 0.25 -1.75 0.44 -1.59 0.61 -1.39 0.78 -1.15 0.97 -0.84 1.17 
+-0.55 1.41 -0.19 1.63 0 41.08 -7.27 0 0 6.75 ^ 0 14.04 f*
+11.1111 w
+255 0 r3
+2616.43 1736.2 102.9 0 S
+255 0 r6
+2616.43 1787 102.9 0 S
+255 0 r5
+2616.43 1837.83 102.9 0 S
+128 0 255 rG
+2616.43 1888.63 102.9 0 S
+K
+2722.77 1754.28 3.99 0 0 -13.21 1 1.32 1.13 1.02 1.15 0.76 1.15 0.52 2.02 0.52 
+1.28 0.08 1.91 -0.15 1.89 -0.5 1.8 -0.89 1.65 -1.32 1.41 -1.79 1.11 -2.3 0.71 -2.84 
+0.26 -3.43 -0.18 -2.89 -0.5 -2.67 -0.85 -2.38 -1.2 -2.04 -1.56 -1.67 -0.93 -0.7 -1.02 -0.57 
+-1.11 -0.45 -1.2 -0.32 -1.3 -0.21 -1.41 -0.07 -1.7 0.17 -1.91 0.63 -1 0.57 -0.93 0.74 
+-0.89 0.95 -0.81 1.17 0 -3 -3.99 0 0 11.98 ^ 0.16 -1.91 0.46 -1.78 
+0.7 -1.61 0.91 -1.41 1.08 -1.15 1.22 -0.87 1.32 -0.56 1.39 -0.2 1.67 0.26 1.48 0.67 
+1.23 1.04 1.02 1.34 0.8 1.55 0.57 1.66 0.35 1.74 0.13 1.71 -0.22 2.36 -0.57 2 
+-0.84 1.69 -1.06 1.35 -1.17 1.04 -1.19 0.72 -1.15 0.43 -1.04 0.15 -1.46 -0.21 -1.34 -0.59 
+-1.23 -0.93 -1.07 -1.24 -0.89 -1.49 -0.68 -1.74 -0.41 -1.93 -0.16 -2.11 -3.99 0 0 22.96 f*
+2769.42 1736.07 -3.99 0 -0.18 1.02 -0.34 0.99 -0.5 0.92 -0.67 0.84 -0.83 0.7 -0.99 0.54 
+-1.15 0.35 -1.33 0.13 -1.58 -0.2 -1.41 -0.56 -1.2 -0.91 -0.97 -1.2 -0.8 -1.5 -0.57 -1.76 
+-0.34 -1.95 -0.11 -2.17 0.13 -2.13 0.37 -1.87 0.61 -1.62 0.82 -1.37 1.05 -1.06 1.23 -0.78 
+1.43 -0.48 1.61 -0.17 1.48 0.17 1.23 0.46 1.05 0.7 0.82 0.87 0.63 0.98 0.43 1.04 
+0.26 1.06 0.08 0.98 4 0 -0.17 -1.93 -0.5 -1.84 -0.8 -1.7 -1.15 -1.49 -1.47 -1.24 
+-1.8 -0.96 -2.12 -0.61 -2.46 -0.21 -1.45 0.08 -1.33 0.21 -1.21 0.39 -1.11 0.5 -1 0.63 
+-0.89 0.76 -1.5 1.78 -1.12 2.13 -0.79 2.34 -0.45 2.54 -0.13 2.6 0.11 1.8 0.28 1.63 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.08 1.61 1.79 1.78 1.32 1.82 0.89 1.8 0.5 
+1.61 0.15 1.76 -0.11 1.69 -0.39 1.61 -0.63 1.43 -0.95 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.32 f*
+2793.38 1736.07 -3.99 0 -0.18 1.02 -0.35 0.99 -0.5 0.92 -0.67 0.84 -0.82 0.7 -1 0.54 
+-1.15 0.35 -1.32 0.13 -1.58 -0.2 -1.41 -0.56 -1.2 -0.91 -1 -1.2 -0.78 -1.5 -0.57 -1.76 
+-0.35 -1.95 -0.11 -2.17 0.13 -2.13 0.37 -1.87 0.61 -1.62 0.83 -1.37 1.04 -1.06 1.24 -0.78 
+1.43 -0.48 1.59 -0.17 1.47 0.17 1.26 0.46 1.04 0.7 0.83 0.87 0.63 0.98 0.43 1.04 
+0.26 1.06 0.07 0.98 3.99 0 -0.16 -1.93 -0.5 -1.84 -0.8 -1.7 -1.15 -1.49 -1.48 -1.24 
+-1.8 -0.96 -2.13 -0.61 -2.47 -0.21 -1.43 0.08 -1.32 0.21 -1.21 0.39 -1.11 0.5 -1 0.63 
+-0.89 0.76 -1.5 1.78 -1.13 2.13 -0.78 2.34 -0.45 2.54 -0.13 2.6 0.11 1.8 0.28 1.63 
+0.39 1.5 0.5 1.34 0.63 1.22 0.7 1.08 1.61 1.79 1.75 1.32 1.84 0.89 1.79 0.5 
+1.63 0.15 1.76 -0.11 1.7 -0.39 1.58 -0.63 1.46 -0.95 1.25 -1.26 1.02 -1.61 0.76 -1.95 
+0.45 -2.32 f*
+2796.88 1730.82 11.4766 3.49609 re
+f*
+2833.31 1736.07 -4 0 -0.17 1.02 -0.34 0.99 -0.5 0.92 -0.67 0.84 -0.83 0.7 -1 0.54 
+-1.15 0.35 -1.33 0.13 -1.58 -0.2 -1.41 -0.56 -1.19 -0.91 -1 -1.2 -0.79 -1.5 -0.57 -1.76 
+-0.34 -1.95 -0.11 -2.17 0.13 -2.13 0.37 -1.87 0.61 -1.62 0.82 -1.37 1.04 -1.06 1.23 -0.78 
+1.43 -0.48 1.58 -0.17 1.48 0.17 1.26 0.46 1.04 0.7 0.82 0.87 0.61 0.98 0.46 1.04 
+0.24 1.06 0.08 0.98 4 0 -0.15 -1.93 -0.5 -1.84 -0.82 -1.7 -1.13 -1.49 -1.47 -1.24 
+-1.8 -0.96 -2.14 -0.61 -2.46 -0.21 -1.43 0.08 -1.33 0.21 -1.21 0.39 -1.11 0.5 -0.99 0.63 
+-0.89 0.76 -1.52 1.78 -1.12 2.13 -0.76 2.34 -0.46 2.54 -0.15 2.6 0.13 1.8 0.26 1.63 
+0.41 1.5 0.5 1.34 0.61 1.22 0.71 1.08 1.59 1.79 1.78 1.32 1.84 0.89 1.78 0.5 
+1.63 0.15 1.76 -0.11 1.69 -0.39 1.58 -0.63 1.46 -0.95 1.26 -1.26 1.02 -1.61 0.76 -1.95 
+0.46 -2.32 f*
+2851.52 1737.57 4.26 0 -0.33 2.04 -0.7 1.7 -1.04 1.34 -1.26 1.04 -1.41 0.74 -1.52 0.5 
+-1.52 0.29 -1.48 0.08 -1.78 -0.13 -1.74 -0.37 -1.65 -0.63 -1.47 -0.89 -1.26 -1.13 -0.98 -1.37 
+-0.62 -1.63 -0.22 -1.84 0.09 -1.15 0.24 -1.05 0.43 -0.95 0.61 -0.84 0.8 -0.74 0.97 -0.67 
+1.2 -0.56 1.39 -0.52 6.25 -1.5 1.52 -0.48 1.2 -0.7 0.75 -1 0.2 -0.61 0.07 -0.71 
+-0.08 -0.8 -0.29 -0.76 -0.48 -0.67 -0.65 -0.59 -0.85 -0.5 -1.02 -0.35 -1.22 -0.24 -1.41 -0.09 
+-1.58 0.11 -1.29 0.26 -0.97 0.43 -0.74 0.59 -0.54 0.71 -0.39 0.85 -0.48 2.04 -4.23 0 
+0.24 -1.8 0.43 -1.67 0.67 -1.47 0.96 -1.29 1.3 -1.04 1.73 -0.8 2.17 -0.48 2.71 -0.17 
+1.87 0.13 1.84 0.39 1.72 0.63 1.56 0.91 1.32 1.15 1.02 1.41 0.68 1.67 0.24 1.93 
+-0.13 1.33 -0.39 1.17 -0.63 1.04 -0.85 0.89 -1.11 0.8 -1.32 0.67 -1.54 0.59 -1.78 0.5 
+-4.73 1 -1.78 0.8 -0.97 0.88 -0.42 0.89 -0.08 0.93 0.11 0.89 0.33 0.76 0.52 0.63 
+0.67 0.54 0.8 0.42 0.93 0.28 2.13 0.23 1.22 -0.08 0.99 -0.22 0.85 -0.37 0.65 -0.48 
+0.52 -0.59 0.37 -0.69 0.39 -1.56 4.26 0 -4.26 0 f*
+2862.26 1744.55 3.49 0 0 -3.75 1.93 2.19 1.82 1.37 0.93 0.43 0.95 0.3 2.09 0.2 
+1.8 -0.24 1.67 -0.54 0.8 -0.48 0.83 -0.68 0.8 -0.89 0.84 -1.17 1.98 1.99 0.95 0.7 
+0.93 0.52 1.89 0.63 1.97 0.15 1.24 -0.08 1.25 -0.29 1.22 -0.5 1.13 -0.7 0.96 -0.89 
+0.76 -1.13 0.5 -1.32 0.17 -1.59 0 -19.47 -4 0 0 17.97 -0.11 0.91 -0.3 0.85 
+-0.48 0.76 -0.61 0.68 -0.7 0.54 -0.74 0.41 -0.79 0.26 -0.78 0.08 -1.04 -0.11 -1.05 -0.37 
+-0.99 -0.57 -0.93 -0.74 -0.8 -0.89 -0.61 -1 -0.41 -1.13 -0.13 -1.2 0 -16.47 -3.99 0 
+0 17.97 -0.13 0.91 -0.3 0.85 -0.48 0.76 -0.63 0.68 -0.72 0.54 -0.8 0.41 -0.85 0.26 
+-0.84 0.08 -0.89 -0.11 -0.95 -0.33 -0.96 -0.54 -0.91 -0.69 -0.8 -0.89 -0.66 -1.02 -0.41 -1.15 
+-0.15 -1.26 0 -16.47 -3.99 0 0 25.22 f*
+2912.41 1753.28 2.74 0 0 -33.95 -4.23 0 0 24.22 -7.49 0 0 3 3.02 0.34 
+1.37 0.29 1.24 0.5 1.08 0.76 0.93 1.13 0.79 1.58 0.56 2.13 f*
+2927.39 1730.82 11.4766 3.49609 re
+f*
+2955.08 1753.28 2.75 0 0 -33.95 -4.25 0 0 24.22 -7.49 0 0 3 3.02 0.34 
+1.37 0.29 1.24 0.5 1.09 0.76 0.95 1.13 0.76 1.58 0.57 2.13 f*
+2752.45 1793.75 -0.71 2.84 -1 2.41 -1.3 2 -1.61 1.56 -1.87 1.19 -2.14 0.82 -2.41 0.48 
+-2.67 0.17 -1.82 -0.11 -1.72 -0.26 -1.63 -0.43 -1.52 -0.59 -1.39 -0.73 -1.31 -0.89 -1.19 -1.02 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.49 -0.61 -1.61 -0.85 -3.47 -0.34 -3.8 0.09 -2.17 
+0.21 -2.04 0.39 -1.91 0.54 -1.78 0.66 -1.63 0.78 -1.5 0.91 -1.34 1.05 -1.24 1.11 -1.06 
+1.24 -0.93 1.32 -0.8 1.39 -0.65 1.47 -0.5 1.54 -0.37 1.61 -0.22 1.67 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.34 1.39 0.46 1.26 0.59 1.13 0.7 1.02 0.8 0.89 0.89 1.47 2.02 
+1.07 2.34 0.67 2.56 0.34 2.74 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.84 -1.67 -1.06 -1.34 
+-1.28 -1 -1.54 -0.7 -1.82 -0.41 -2.08 -0.13 -1.45 0.06 -1.35 0.21 -1.24 0.35 -1.13 0.45 
+-1.04 0.61 -0.93 0.7 -1.61 1.72 -1.21 2.11 -0.85 2.43 -0.52 2.67 -0.16 2.91 0.22 3.19 
+0.65 2.82 1.05 2.43 1.39 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.26 1.73 -0.13 
+1.63 -0.39 1.5 -0.61 1.34 -0.85 1.13 -1.06 0.91 -1.28 0.63 -1.5 0.35 -1.67 4.49 0 f*
+2787.13 1793.75 -0.7 2.84 -1.02 2.41 -1.3 2 -1.59 1.56 -1.86 1.19 -2.15 0.82 -2.43 0.48 
+-2.66 0.17 -1.82 -0.11 -1.71 -0.26 -1.63 -0.43 -1.5 -0.59 -1.41 -0.73 -1.3 -0.89 -1.2 -1.02 
+-1.06 -1.15 -0.96 -1.28 -0.84 -1.39 -0.74 -1.49 -0.61 -1.61 -0.85 -3.47 -0.34 -3.8 0.08 -2.17 
+0.24 -2.04 0.39 -1.91 0.52 -1.78 0.65 -1.63 0.8 -1.5 0.91 -1.34 1.02 -1.24 1.13 -1.06 
+1.21 -0.93 1.32 -0.8 1.39 -0.65 1.48 -0.5 1.56 -0.37 1.61 -0.22 1.65 -0.07 1.8 0.07 
+1.65 0.22 1.52 0.34 1.39 0.46 1.26 0.59 1.13 0.7 1.02 0.8 0.91 0.89 1.45 2.02 
+1.07 2.34 0.7 2.56 0.32 2.74 -4.49 0 -0.46 -2.43 -0.63 -2.04 -0.85 -1.67 -1.04 -1.34 
+-1.31 -1 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.46 0.06 -1.32 0.21 -1.24 0.35 -1.15 0.45 
+-1.04 0.61 -0.93 0.7 -1.58 1.72 -1.24 2.11 -0.85 2.43 -0.5 2.67 -0.18 2.91 0.24 3.19 
+0.66 2.82 1.04 2.43 1.37 2.04 1.7 1.61 1.95 1.17 2.17 0.71 2.37 0.26 1.73 -0.13 
+1.63 -0.39 1.52 -0.61 1.32 -0.85 1.13 -1.06 0.91 -1.28 0.65 -1.5 0.33 -1.67 4.49 0 f*
+2818.84 1794.49 -0.07 1.32 -0.22 1.21 -0.33 1.15 -0.43 1.04 -1.21 1.85 -1.61 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.17 -2.97 -0.19 -2.56 -0.56 -2.15 -0.91 -1.74 -1.22 -1.34 -1.48 
+-0.95 -1.76 -0.56 -1.95 -0.2 -2.17 0.13 -1.71 0.35 -1.46 0.54 -1.21 0.72 -1.02 0.87 -0.82 
+0.98 -0.68 2.15 -1.08 11.24 -3 2.36 -1.02 0.85 -0.59 0.69 -0.62 0.5 -0.7 0.33 -0.72 
+0.2 -0.78 0.07 -0.8 -0.11 -1.2 -0.32 -1.11 -0.57 -1.02 -0.87 -0.89 -1.21 -0.74 -1.56 -0.56 
+-1.95 -0.37 -2.39 -0.11 -2.43 0.17 -2.04 0.5 -1.7 0.8 -1.32 1.02 -1.02 1.19 -0.7 1.37 
+-0.41 1.43 -0.13 1.5 -4.5 0 0.22 -2.45 0.65 -2.28 1.09 -2.02 1.52 -1.78 1.97 -1.43 
+2.46 -1.11 2.93 -0.67 3.41 -0.24 3.14 0.22 2.76 0.61 2.3 0.98 1.91 1.29 1.46 1.56 
+1.06 1.78 0.63 1.96 0.21 2.11 -0.15 1.69 -0.46 1.52 -0.69 1.37 -0.89 1.2 -1.07 0.99 
+-1.17 0.85 -1.26 0.65 -1.3 0.46 -11.24 3 -1.95 1.02 -1.13 0.98 -0.32 0.55 -0.2 0.63 
+-0.13 1.59 0.16 1.32 0.46 1.15 0.71 0.97 0.95 0.83 1.15 0.63 1.3 0.46 1.45 0.29 
+1.55 0.09 2.04 -0.13 1.75 -0.39 1.5 -0.63 1.24 -0.85 0.95 -1.02 0.7 -1.2 0.42 -1.32 
+0.15 -1.46 4.5 0 f*
+2825.57 1804.73 6.25 0 10.22 -30.45 10.24 30.45 6.23 0 0 -34.95 -4.23 0 0 29.19 
+-9.98 -29.19 -4.75 0 -9.72 29.19 0 -29.19 -4.25 0 0 34.95 f*
+2878.73 1803.73 2.99 0 0 -21.96 5.23 0 0 -4 ^ 0 -7.99 -4.25 0 
+^ -14.21 0 0 4 ^ 0 14.71 -10.48 -14.71 -3.73 0 0 0.5 
+15.47 21.46 f*
+2752.45 1844.68 -0.71 2.87 -1 2.41 -1.3 1.98 -1.61 1.58 -1.87 1.2 -2.14 0.82 -2.41 0.48 
+-2.67 0.15 -1.82 -0.08 -1.72 -0.26 -1.63 -0.43 -1.52 -0.59 -1.39 -0.75 -1.31 -0.87 -1.19 -1.04 
+-1.06 -1.15 -0.98 -1.28 -0.84 -1.39 -0.72 -1.49 -0.61 -1.61 -0.85 -3.47 -0.34 -3.8 0.09 -2.17 
+0.21 -2.04 0.39 -1.91 0.54 -1.78 0.66 -1.63 0.78 -1.5 0.91 -1.34 1.05 -1.21 1.11 -1.09 
+1.24 -0.93 1.32 -0.78 1.39 -0.65 1.47 -0.52 1.54 -0.37 1.61 -0.22 1.67 -0.06 1.8 0.06 
+1.65 0.22 1.52 0.34 1.39 0.46 1.26 0.59 1.13 0.7 1.02 0.8 0.89 0.89 1.47 2.04 
+1.07 2.32 0.67 2.56 0.34 2.74 -4.49 0 -0.46 -2.41 -0.63 -2.04 -0.84 -1.7 -1.06 -1.32 
+-1.28 -1.02 -1.54 -0.7 -1.82 -0.41 -2.08 -0.13 -1.45 0.06 -1.35 0.21 -1.24 0.35 -1.13 0.48 
+-1.04 0.58 -0.93 0.7 -1.61 1.74 -1.21 2.08 -0.85 2.43 -0.52 2.7 -0.16 2.88 0.22 3.19 
+0.65 2.84 1.05 2.43 1.39 2.02 1.7 1.63 1.95 1.17 2.17 0.72 2.37 0.24 1.73 -0.13 
+1.63 -0.37 1.5 -0.63 1.34 -0.85 1.13 -1.06 0.91 -1.28 0.63 -1.5 0.35 -1.67 4.49 0 f*
+2759.7 1855.67 24.2 0 0 -4 -19.7 0 0 -11.24 18.95 0 0 -3.99 ^ 
+0 -11.72 20.44 0 0 -3.99 -24.93 0 0 34.95 f*
+2816.08 1845.42 -0.07 1.32 -0.2 1.21 -0.32 1.15 -0.46 1.04 -1.21 1.85 -1.61 1.52 -1.93 1.15 
+-2.2 0.84 -2.41 0.48 -2.58 0.17 -2.98 -0.2 -2.54 -0.56 -2.14 -0.91 -1.76 -1.2 -1.34 -1.5 
+-0.96 -1.73 -0.56 -1.98 -0.2 -2.17 0.13 -1.71 0.35 -1.46 0.57 -1.21 0.71 -1 0.87 -0.83 
+0.96 -0.7 2.17 -1.08 11.21 -3 2.37 -1.02 0.87 -0.59 0.67 -0.62 0.5 -0.67 0.35 -0.74 
+0.19 -0.76 0.05 -0.82 -0.09 -1.2 -0.33 -1.11 -0.58 -1.02 -0.87 -0.89 -1.2 -0.74 -1.56 -0.57 
+-1.95 -0.34 -2.41 -0.13 -2.41 0.17 -2.04 0.52 -1.7 0.78 -1.34 1.02 -1 1.22 -0.7 1.34 
+-0.41 1.43 -0.13 1.5 -4.49 0 0.21 -2.45 0.63 -2.26 1.09 -2.04 1.54 -1.76 1.97 -1.45 
+2.46 -1.09 2.91 -0.7 3.41 -0.24 3.17 0.22 2.73 0.61 2.32 0.98 1.89 1.28 1.47 1.57 
+1.07 1.78 0.63 1.96 0.2 2.11 -0.15 1.69 -0.43 1.55 -0.7 1.34 -0.89 1.2 -1.07 1.02 
+-1.17 0.83 -1.28 0.65 -1.3 0.46 -11.22 3 -1.95 1.04 -1.13 0.96 -0.32 0.54 -0.21 0.63 
+-0.13 1.59 0.17 1.32 0.46 1.15 0.71 0.97 0.93 0.83 1.15 0.63 1.33 0.46 1.43 0.28 
+1.57 0.09 2.02 -0.13 1.76 -0.39 1.5 -0.63 1.24 -0.85 0.97 -1.02 0.69 -1.2 0.41 -1.32 
+0.13 -1.46 4.49 0 f*
+2822.83 1855.67 6.23 0 10.25 -30.45 10.22 30.45 6.25 0 0 -34.95 -4.26 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.74 29.19 0 -29.19 -4.23 0 0 34.95 f*
+2872.98 1854.67 2.75 0 0 -33.95 -4.25 0 0 24.2 -7.48 0 0 3 3.01 0.37 
+1.37 0.28 1.23 0.48 1.09 0.76 0.95 1.13 0.76 1.61 0.57 2.13 f*
+2887.96 1832.21 11.4766 3.49219 re
+f*
+2933.62 1844.68 -0.72 2.87 -1 2.41 -1.3 1.98 -1.59 1.58 -1.89 1.2 -2.15 0.82 -2.41 0.48 
+-2.67 0.15 -1.82 -0.08 -1.72 -0.26 -1.62 -0.43 -1.52 -0.59 -1.39 -0.75 -1.3 -0.87 -1.2 -1.04 
+-1.07 -1.15 -0.98 -1.28 -0.82 -1.39 -0.74 -1.49 -0.61 -1.61 -0.84 -3.47 -0.35 -3.8 0.09 -2.17 
+0.24 -2.04 0.37 -1.91 0.55 -1.78 0.65 -1.63 0.8 -1.5 0.91 -1.34 1.02 -1.21 1.13 -1.09 
+1.21 -0.93 1.32 -0.78 1.39 -0.65 1.48 -0.52 1.54 -0.37 1.61 -0.22 1.67 -0.06 1.8 0.06 
+1.65 0.22 1.52 0.34 1.39 0.46 1.25 0.59 1.13 0.7 1.02 0.8 0.89 0.89 1.48 2.04 
+1.06 2.32 0.67 2.56 0.35 2.74 -4.5 0 -0.45 -2.41 -0.63 -2.04 -0.85 -1.7 -1.06 -1.32 
+-1.29 -1.02 -1.54 -0.7 -1.82 -0.41 -2.09 -0.13 -1.45 0.06 -1.34 0.21 -1.24 0.35 -1.12 0.48 
+-1.04 0.58 -0.93 0.7 -1.61 1.74 -1.22 2.08 -0.84 2.43 -0.5 2.7 -0.17 2.88 0.22 3.19 
+0.65 2.84 1.04 2.43 1.39 2.02 1.7 1.63 1.96 1.17 2.17 0.72 2.36 0.24 1.74 -0.13 
+1.63 -0.37 1.5 -0.63 1.34 -0.85 1.13 -1.06 0.91 -1.28 0.63 -1.5 0.34 -1.67 4.5 0 f*
+2949.85 1855.67 5.73 0 12.24 -34.95 -4.99 0 -3.5 10.24 -13.74 0 -3.49 -10.24 -4.99 0 
+10.98 29.95 4.49 0 -5.73 -15.73 11.21 0 -5.49 15.73 -4.49 0 1.76 5 f*
+2972.05 1855.67 6.25 0 10.22 -30.45 10.21 30.45 6.25 0 0 -34.95 -4.25 0 0 29.19 
+-9.98 -29.19 -4.73 0 -9.72 29.19 0 -29.19 -4.25 0 0 34.95 f*
+3013.48 1854.67 17.71 0 0 -4 -14.21 0 -1.26 -9.74 1.24 0.89 1.45 0.72 1.74 0.48 
+2.06 0.17 1.76 -0.15 1.83 -0.46 1.8 -0.79 1.67 -1.17 1.47 -1.56 1.17 -1.97 0.43 -1.17 
+0.33 -1.29 0.2 -1.41 0.09 -1.52 -0.2 -2.39 -0.57 -2.25 -0.91 -2.09 -1.3 -1.82 -1.65 -1.52 
+-2.02 -1.15 -2.36 -0.74 -2.74 -0.26 -2.52 0.17 -2.14 0.57 -1.8 0.87 -1.47 1.15 -1.2 1.41 
+-0.93 1.61 -0.67 1.78 -0.48 1.93 4.23 0 0.43 -1.26 0.56 -1.13 0.65 -0.98 0.79 -0.82 
+0.91 -0.68 1.02 -0.48 1.13 -0.3 1.25 -0.11 1.7 0.13 1.52 0.39 1.32 0.63 1.11 0.91 
+0.89 1.15 0.65 1.41 0.42 1.69 0.13 1.93 -0.11 1.41 -0.33 1.41 -0.54 1.34 -0.8 1.22 
+-1.02 1.06 -1.3 0.8 -1.56 0.54 -1.83 0.18 -1.82 -0.18 -1.5 -0.58 -1.48 -1.02 -1.7 -1.45 
+-3.73 0 2.49 18.47 f*
+2754.71 1893.62 -14.74 0 0 -3.99 10.48 0 0 -2.24 -0.2 -1.69 -0.57 -1.7 -0.91 -1.58 
+-1.26 -1.43 -1.54 -1.21 -1.84 -0.91 -2.09 -0.56 -2.32 -0.16 -1.59 0.09 -1.47 0.21 -1.35 0.37 
+-1.23 0.5 -1.13 0.63 -1.02 0.73 -0.91 0.85 -0.82 0.95 -1.3 2.17 -0.93 2.45 -0.54 2.67 
+-0.18 2.84 0.24 3.04 0.71 2.73 1.15 2.39 1.52 2.02 1.82 1.63 2.13 1.19 2.36 0.74 
+2.54 0.24 1.24 -0.07 1.41 -0.26 1.48 -0.46 1.47 -0.67 1.39 -0.98 1.21 -1.26 0.93 -1.59 
+0.59 -1.95 4.75 0 -0.35 1.47 -0.69 1.76 -1.06 1.84 -1.5 1.84 -1.93 1.67 -1.15 0.73 
+-1.28 0.63 -1.43 0.52 -1.54 0.41 -1.7 0.24 -1.84 0.09 -1.93 -0.09 -1.82 -0.26 -1.72 -0.43 
+-1.61 -0.59 -1.52 -0.74 -1.39 -0.87 -1.28 -1.02 -1.15 -1.16 -1.04 -1.26 -0.91 -1.39 -0.78 -1.48 
+-0.65 -1.56 -0.5 -1.67 -0.37 -1.76 -0.24 -1.82 -0.06 -1.89 0.09 -2.34 0.24 -2.17 0.43 -2 
+0.57 -1.84 0.7 -1.67 0.84 -1.52 0.98 -1.34 1.08 -1.2 1.2 -1.07 1.3 -0.89 1.41 -0.76 
+1.47 -0.61 1.56 -0.45 1.65 -0.34 3.45 -0.26 2.58 0.26 1.39 0.34 1.41 0.52 1.43 0.71 
+1.43 0.89 1.39 1.15 1.34 1.37 1 -4.26 3 0 0 18.47 f*
+2762.93 1875.15 4.49609 34.9414 re
+f*
+2800.37 1899.87 -0.06 1.3 -0.21 1.24 -0.33 1.13 -0.43 1.06 -1.22 1.84 -1.61 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.15 -2.97 -0.2 -2.56 -0.56 -2.14 -0.89 -1.74 -1.21 -1.34 -1.5 
+-0.96 -1.73 -0.56 -1.98 -0.2 -2.15 0.13 -1.73 0.35 -1.45 0.54 -1.22 0.74 -1 0.84 -0.82 
+0.98 -0.7 2.17 -1.06 11.21 -2.99 2.37 -1.05 0.87 -0.58 0.67 -0.63 0.5 -0.68 0.33 -0.71 
+0.2 -0.79 0.07 -0.82 -0.11 -1.18 -0.3 -1.13 -0.58 -1.02 -0.87 -0.89 -1.22 -0.74 -1.56 -0.57 
+-1.96 -0.34 -2.39 -0.13 -2.43 0.2 -2.04 0.5 -1.67 0.78 -1.34 1.02 -1 1.21 -0.72 1.35 
+-0.39 1.45 -0.13 1.48 -4.49 0 0.19 -2.45 0.65 -2.26 1.08 -2.04 1.52 -1.75 1.99 -1.46 
+2.43 -1.08 2.93 -0.7 3.41 -0.24 3.17 0.21 2.73 0.63 2.3 0.96 1.91 1.3 1.47 1.55 
+1.05 1.78 0.63 1.97 0.22 2.08 -0.15 1.7 -0.45 1.54 -0.7 1.37 -0.89 1.17 -1.05 1.02 
+-1.2 0.82 -1.25 0.66 -1.3 0.48 -11.22 3 -1.98 1.02 -1.13 0.98 -0.32 0.55 -0.2 0.61 
+-0.13 1.58 0.15 1.33 0.46 1.15 0.71 1 0.96 0.8 1.15 0.63 1.31 0.48 1.45 0.26 
+1.54 0.11 2.04 -0.15 1.76 -0.39 1.5 -0.63 1.23 -0.82 0.96 -1.04 0.7 -1.17 0.41 -1.35 
+0.16 -1.43 4.49 0 f*
+2832.31 1899.87 -0.06 1.3 -0.21 1.24 -0.33 1.13 -0.43 1.06 -1.24 1.84 -1.59 1.5 -1.93 1.17 
+-2.21 0.82 -2.41 0.5 -2.56 0.15 -2.97 -0.2 -2.56 -0.56 -2.14 -0.89 -1.74 -1.21 -1.35 -1.5 
+-0.95 -1.73 -0.56 -1.98 -0.2 -2.15 0.13 -1.73 0.34 -1.45 0.55 -1.22 0.71 -1 0.87 -0.82 
+0.98 -0.7 2.15 -1.06 11.24 -2.99 2.37 -1.05 0.84 -0.58 0.67 -0.63 0.5 -0.68 0.35 -0.71 
+0.19 -0.79 0.07 -0.82 -0.11 -1.18 -0.33 -1.13 -0.56 -1.02 -0.86 -0.89 -1.22 -0.74 -1.56 -0.57 
+-1.96 -0.34 -2.39 -0.13 -2.43 0.2 -2.04 0.5 -1.7 0.78 -1.32 1.02 -1.02 1.21 -0.7 1.35 
+-0.41 1.45 -0.13 1.48 -4.49 0 0.21 -2.45 0.65 -2.26 1.09 -2.04 1.52 -1.75 1.97 -1.46 
+2.46 -1.08 2.93 -0.7 3.4 -0.24 3.15 0.21 2.73 0.63 2.32 0.96 1.91 1.3 1.45 1.55 
+1.07 1.78 0.63 1.97 0.22 2.08 -0.15 1.7 -0.45 1.54 -0.7 1.37 -0.89 1.17 -1.07 1.02 
+-1.17 0.82 -1.25 0.66 -1.3 0.48 -11.24 3 -1.95 1.02 -1.13 0.98 -0.32 0.55 -0.2 0.61 
+-0.12 1.58 0.15 1.33 0.46 1.15 0.71 1 0.96 0.8 1.15 0.63 1.3 0.48 1.45 0.26 
+1.54 0.11 2.04 -0.15 1.75 -0.39 1.5 -0.63 1.23 -0.82 0.96 -1.04 0.69 -1.17 0.41 -1.35 
+0.15 -1.43 4.49 0 f*
+2837.54 1886.63 11.4805 3.49609 re
+f*
+2855.77 1910.09 24.2 0 0 -3.99 -19.71 0 0 -11.22 18.97 0 0 -4 ^ 
+0 -11.74 20.46 0 0 -4 -24.95 0 0 34.94 f*
+2885.72 1897.37 4.23 0 0.11 1.7 0.33 1.54 0.52 1.37 0.76 1.17 0.98 0.93 1.2 0.7 
+1.43 0.44 1.67 0.15 1.29 -0.13 1.21 -0.32 1.09 -0.55 0.98 -0.76 0.8 -0.93 0.61 -1.11 
+0.39 -1.28 0.13 -1.41 -0.11 -1.45 -0.37 -1.22 -0.58 -1.02 -0.85 -0.93 -1.08 -0.87 -1.32 -0.91 
+-3.43 -2.08 -2.89 -1.7 -2.37 -1.72 -1.86 -1.73 -1.41 -1.82 -1.05 -1.89 -0.67 -2 -0.37 -2.1 
+-0.11 -2.29 22.7 0 0 4 -17.96 0 0.45 1.54 0.61 1.28 0.8 1.09 1.02 0.98 
+2.73 1.87 3.86 2.23 2.26 1.11 1.84 1.26 1.52 1.34 1.2 1.43 0.87 1.52 0.61 1.52 
+0.35 1.54 0.11 1.52 -0.24 2.06 -0.63 1.87 -1.02 1.67 -1.37 1.41 -1.63 1.15 -1.87 0.85 
+-2.04 0.54 -2.2 0.18 -2.34 -0.18 -2.14 -0.54 -1.91 -0.89 -1.65 -1.26 -1.35 -1.65 -1 -2.02 
+-0.62 -2.39 -0.2 -2.8 f*
+2912.16 1886.63 11.4766 3.49609 re
+f*
+2930.38 1910.09 17.21 0 1.78 -0.15 1.73 -0.45 1.65 -0.74 1.48 -1.04 1.25 -1.35 0.98 -1.62 
+0.63 -1.91 0.24 -2.21 -0.11 -1.43 -0.26 -1.28 -0.48 -1.17 -0.63 -1.06 -0.8 -0.95 -1 -0.87 
+-1.15 -0.76 -1.32 -0.7 1.65 -0.76 1.2 -0.91 0.84 -1.08 0.57 -1.24 0.3 -1.39 0.15 -1.5 
+0.05 -3.36 0.2 -2.37 0.36 -1.65 0.63 -1.12 1.05 -0.85 0 -1 -5.49 0 -0.57 1.52 
+-0.3 1.67 -0.11 2.5 -0.02 4.05 -0.11 1.3 -0.32 1.09 -0.48 0.91 -0.65 0.71 -0.74 0.55 
+-0.85 0.39 -0.91 0.22 -0.93 0.07 -12.22 0 0 -14.98 -4.49 0 0 30.95 ^ 
+0 -11.98 12.22 0 1.17 0.09 1.06 0.26 0.93 0.43 0.8 0.63 0.65 0.83 0.48 1.04 
+0.28 1.24 0.11 1.48 -0.11 1.41 -0.3 1.22 -0.5 1.02 -0.67 0.85 -0.87 0.65 -1.02 0.48 
+-1.17 0.29 -1.34 0.09 -16.21 0 0 3.99 f*
+2959.83 1866.67 28.6914 2.25391 re
+f*
+3019.21 1899.11 -0.7 2.86 -1.02 2.41 -1.3 1.98 -1.58 1.59 -1.89 1.2 -2.12 0.82 -2.43 0.48 
+-2.67 0.15 -1.82 -0.09 -1.71 -0.26 -1.63 -0.43 -1.5 -0.59 -1.41 -0.74 -1.3 -0.89 -1.2 -1.02 
+-1.06 -1.15 -0.95 -1.28 -0.85 -1.39 -0.73 -1.52 -0.61 -1.58 -0.84 -3.5 -0.35 -3.78 0.09 -2.2 
+0.24 -2.04 0.37 -1.91 0.54 -1.75 0.65 -1.63 0.8 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.07 
+1.22 -0.96 1.32 -0.78 1.39 -0.65 1.48 -0.5 1.54 -0.37 1.61 -0.22 1.67 -0.08 1.8 0.08 
+1.65 0.2 1.52 0.35 1.39 0.48 1.25 0.58 1.13 0.7 1.02 0.78 0.89 0.89 1.48 2.04 
+1.06 2.32 0.67 2.59 0.35 2.73 -4.5 0 -0.46 -2.43 -0.62 -2.04 -0.84 -1.7 -1.07 -1.32 
+-1.28 -1.02 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.45 0.09 -1.33 0.2 -1.25 0.35 -1.13 0.48 
+-1.05 0.59 -0.93 0.71 -1.61 1.72 -1.22 2.11 -0.84 2.41 -0.5 2.69 -0.17 2.91 0.21 3.19 
+0.67 2.82 1.05 2.43 1.37 2.04 1.69 1.61 1.96 1.17 2.16 0.71 2.37 0.24 1.74 -0.14 
+1.63 -0.36 1.5 -0.61 1.34 -0.84 1.13 -1.08 0.91 -1.29 0.63 -1.47 0.34 -1.7 4.5 0 f*
+3053.91 1899.11 -0.72 2.86 -1.02 2.41 -1.3 1.98 -1.59 1.59 -1.86 1.2 -2.15 0.82 -2.41 0.48 
+-2.69 0.15 -1.82 -0.09 -1.71 -0.26 -1.61 -0.43 -1.52 -0.59 -1.41 -0.74 -1.3 -0.89 -1.17 -1.02 
+-1.08 -1.15 -0.96 -1.28 -0.85 -1.39 -0.73 -1.52 -0.61 -1.58 -0.85 -3.5 -0.35 -3.78 0.09 -2.2 
+0.24 -2.04 0.39 -1.91 0.52 -1.75 0.67 -1.63 0.79 -1.5 0.91 -1.37 1.02 -1.21 1.13 -1.07 
+1.21 -0.96 1.33 -0.78 1.41 -0.65 1.47 -0.5 1.55 -0.37 1.61 -0.22 1.64 -0.08 1.8 0.08 
+1.67 0.2 1.52 0.35 1.37 0.48 1.26 0.58 1.15 0.7 1 0.78 0.91 0.89 1.46 2.04 
+1.06 2.32 0.7 2.59 0.35 2.73 -4.5 0 -0.45 -2.43 -0.65 -2.04 -0.84 -1.7 -1.04 -1.32 
+-1.3 -1.02 -1.54 -0.7 -1.8 -0.41 -2.11 -0.13 -1.43 0.09 -1.35 0.2 -1.23 0.35 -1.15 0.48 
+-1.02 0.59 -0.96 0.71 -1.58 1.72 -1.22 2.11 -0.87 2.41 -0.5 2.69 -0.17 2.91 0.24 3.19 
+0.65 2.82 1.04 2.43 1.39 2.04 1.67 1.61 1.95 1.17 2.2 0.71 2.34 0.24 1.74 -0.14 
+1.65 -0.36 1.5 -0.61 1.33 -0.84 1.15 -1.08 0.89 -1.29 0.65 -1.47 0.35 -1.7 4.49 0 f*
+599.54 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.15 1.15 1.18 0.98 2.41 1.56 
+2.38 1.08 2.25 0.7 1.98 0.39 2.66 0.21 1.96 -0.09 2 -0.24 1.98 -0.43 1.95 -0.62 
+1.91 -0.83 1.84 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.04 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.79 -2.56 -0.98 -2.39 -1.17 -2.23 -1.34 -2.04 -1.52 -1.85 -1.74 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.72 -0.43 -2.91 -0.13 -1.67 0.06 -1.84 0.28 -1.99 0.52 -2.02 0.82 
+-2.04 1.15 -1.97 1.54 -1.87 1.97 -1.67 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.78 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.17 -1.15 1.26 -0.97 1.3 -0.83 1.35 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.59 0.61 1.48 0.8 1.34 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.79 1.67 1.19 3.5 0.72 3.61 0.26 3.58 -0.11 2.54 -0.32 2.37 -0.52 2.19 
+-0.67 2 -0.83 1.84 -0.96 1.65 -1.06 1.49 -1.13 1.32 -1.2 1.15 -1.24 1.02 -2.49 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.43 -0.52 -1.39 -0.7 -1.32 -0.89 -1.24 -1.06 
+-1.17 -1.21 -1.06 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.5 -1.95 -0.39 -2.06 
+-0.21 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+653.6 2105.34 5.21 0 3.99 -6.1 3.43 -6.18 2.87 -6.23 2.32 -6.18 1.78 -6.08 1.26 -5.93 
+0.74 -5.71 0.24 -5.42 -0.26 -5.43 -0.8 -5.75 -1.3 -5.93 -1.84 -6.03 -2.34 -6.02 -2.86 -5.94 
+-3.37 -5.73 -1.86 -2.75 -1.97 -2.7 -5.21 0 3.13 5.47 2.71 5.49 2.32 5.55 1.91 5.64 
+1.52 5.77 1.07 5.92 0.65 6.1 0.21 6.32 -0.19 6.16 -0.59 5.99 -1.02 5.91 -1.45 5.86 
+-1.87 5.86 -2.32 5.9 -2.8 6.01 -3.28 6.14 f*
+712.35 2105.34 57.18 0 0 -8.31 -23.89 0 0 -64.46 -9.38 0 ^ -23.91 0 
+0 8.31 f*
+778.383 2094.95 8.3125 10.3945 re
+f*
+778.383 2032.57 8.3125 52.4961 re
+f*
+799.7 2105.34 8.31 0 0 -27.54 1.02 1.45 1.08 1.3 1.13 1.15 1.2 0.98 2.41 1.56 
+2.39 1.08 2.25 0.7 1.97 0.39 2.67 0.21 1.95 -0.09 2 -0.24 1.97 -0.43 1.96 -0.62 
+1.91 -0.83 1.85 -1.02 1.78 -1.26 1.67 -1.5 1.54 -1.71 1.39 -2 1.25 -2.26 1.05 -2.52 
+0.87 -2.82 0.63 -3.1 0.41 -3.43 0.13 -3.73 -0.09 -3.06 -0.26 -2.95 -0.43 -2.85 -0.61 -2.71 
+-0.8 -2.56 -0.95 -2.39 -1.17 -2.23 -1.35 -2.04 -1.52 -1.85 -1.73 -1.65 -1.91 -1.43 -2.11 -1.17 
+-2.32 -0.96 -2.52 -0.69 -2.71 -0.43 -2.91 -0.13 -1.67 0.06 -1.86 0.28 -1.98 0.52 -2.02 0.82 
+-2.04 1.15 -1.98 1.54 -1.86 1.97 -1.68 2.47 0 -6.23 -8.31 0 0 24.94 ^ 
+0.09 -2.02 0.24 -1.95 0.41 -1.89 0.52 -1.82 0.67 -1.74 0.79 -1.63 0.91 -1.52 1 -1.39 
+1.09 -1.28 1.18 -1.15 1.25 -0.97 1.3 -0.83 1.34 -0.67 1.41 -0.48 1.43 -0.3 1.45 -0.11 
+1.8 0.13 1.67 0.39 1.58 0.61 1.46 0.8 1.36 0.99 1.24 1.2 1.13 1.32 1 1.43 
+0.89 1.56 0.78 1.67 1.2 3.5 0.71 3.61 0.26 3.58 -0.13 2.54 -0.3 2.37 -0.52 2.19 
+-0.67 2 -0.82 1.84 -0.96 1.65 -1.07 1.49 -1.13 1.32 -1.19 1.15 -1.23 1.02 -2.5 1.52 
+-2.41 0.89 -2.15 0.3 -1.54 -0.11 -1.5 -0.33 -1.45 -0.52 -1.37 -0.7 -1.33 -0.89 -1.23 -1.06 
+-1.17 -1.21 -1.07 -1.37 -0.98 -1.5 -0.87 -1.65 -0.76 -1.76 -0.63 -1.87 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.15 -0.09 -2.21 -8.31 0 0 47.83 f*
+900.02 2048.68 -0.57 -2.43 -0.72 -2.26 -0.84 -2.06 -1 -1.87 -1.13 -1.72 -1.23 -1.52 -1.37 -1.37 
+-1.46 -1.21 -1.56 -1.04 -1.65 -0.89 -1.71 -0.73 -1.82 -0.59 -1.87 -0.45 -1.93 -0.32 -4.01 -0.24 
+-2.73 0.21 -2.59 0.46 -2.43 0.67 -2.25 0.91 -2.11 1.11 -1.91 1.32 -1.76 1.52 -1.56 1.71 
+-1.41 1.89 -1.21 2.08 -1.04 2.24 -0.85 2.38 -0.67 2.54 -0.48 2.71 -0.29 2.82 -0.11 2.96 
+0.18 4.27 0.52 3.84 0.8 3.46 1.09 3.08 1.3 2.71 1.52 2.36 1.7 2.06 1.82 1.74 
+1.91 1.48 2 1.21 2.04 0.98 2.02 0.74 2.02 0.56 1.95 0.35 3.58 0.28 -0.52 -7.79 
+-2.26 -0.24 -2.43 -0.67 -2.48 -1.18 -2.38 -1.69 -1.11 -1.04 -1.04 -1.17 -0.98 -1.32 -0.85 -1.48 
+-0.74 -1.61 -0.61 -1.76 -0.43 -1.91 -0.28 -2.06 30.66 0 -0.11 2.15 -0.33 1.97 -0.52 1.8 
+-0.67 1.63 -0.82 1.48 -0.96 1.32 -1.04 1.17 -1.15 1.02 -2.43 1.63 -2.5 1.11 -2.41 0.63 
+-2.15 0.22 0.52 7.79 1.8 -0.07 1.87 -0.21 1.93 -0.37 1.93 -0.57 1.93 -0.76 1.89 -1.02 
+1.84 -1.26 1.76 -1.54 1.64 -1.82 1.5 -2.15 1.37 -2.52 1.15 -2.85 0.96 -3.25 0.71 -3.67 
+0.43 -4.08 0.15 -4.54 -38.97 0 0.17 -2.73 0.58 -2.97 1.05 -3.04 0.71 -1.48 0.84 -1.41 
+1 -1.34 1.17 -1.25 1.3 -1.11 1.5 -0.97 1.65 -0.78 1.85 -0.61 2.04 -0.37 2.23 -0.13 
+2.28 0.2 2.11 0.57 1.96 0.91 1.8 1.25 1.61 1.56 1.46 1.87 1.25 2.15 1.07 2.41 
+8.31 0 f*
+914.06 2099.11 8.31 0 0 -14.04 8.34 0 0 -6.75 ^ 0 -37.44 0.24 -1.49 
+0.64 -1.05 0.95 -0.65 1.17 -0.32 1.33 -0.09 1.39 0.09 2.63 0.39 0 -6.75 -3.06 -0.72 
+-2 -0.24 -2.23 -0.08 -1.89 0.25 -1.75 0.44 -1.59 0.61 -1.39 0.78 -1.15 0.97 -0.84 1.17 
+-0.55 1.41 -0.19 1.63 0 41.08 -7.27 0 0 6.75 ^ 0 14.04 f*
+868.21 3692.75 -0.17 3.54 -0.55 3.32 -0.89 3.06 -1.2 2.84 -1.52 2.61 -1.78 2.37 -2.04 2.14 
+-2.28 1.91 -2.5 1.67 -2.71 1.46 -2.89 1.23 -3.04 1 -3.19 0.79 -3.32 0.56 -3.41 0.32 
+-3.49 0.11 -4.14 -0.12 -3.86 -0.39 -3.6 -0.66 -3.3 -0.86 -3.04 -1.11 -2.76 -1.32 -2.48 -1.54 
+-2.21 -1.71 -1.96 -1.93 -1.66 -2.11 -1.43 -2.26 -1.15 -2.43 -0.89 -2.58 -0.65 -2.74 -0.37 -2.84 
+-0.13 -2.97 0.09 -2.41 0.24 -2.23 0.41 -2.05 0.55 -1.87 0.69 -1.71 0.81 -1.56 0.91 -1.43 
+1.02 -1.29 2.32 -2.23 2.63 -1.85 2.84 -1.56 2.97 -1.35 30.27 -8.07 3.47 -1.32 2.89 -1.43 
+2.32 -1.58 1.82 -1.7 1.35 -1.84 0.91 -1.95 0.52 -2.09 0.17 -2.19 -0.07 -1.63 -0.22 -1.58 
+-0.34 -1.54 -0.52 -1.48 -0.67 -1.39 -0.89 -1.35 -1.07 -1.24 -1.28 -1.15 -1.5 -1.06 -1.73 -0.93 
+-1.98 -0.82 -2.23 -0.7 -2.5 -0.54 -2.78 -0.41 -3.08 -0.24 -3.36 -0.09 -3.41 0.11 -3.12 0.37 
+-2.89 0.58 -2.62 0.79 -2.39 0.98 -2.15 1.15 -1.91 1.3 -1.69 1.46 -1.48 1.56 -1.24 1.69 
+-1.04 1.78 -0.84 1.85 -0.66 1.93 -0.46 1.97 -0.25 2 -0.09 2.02 -12.11 0 0.15 -3.36 
+0.41 -3.25 0.74 -3.11 0.99 -3 1.31 -2.82 1.61 -2.67 1.9 -2.48 2.22 -2.28 2.52 -2.06 
+2.84 -1.84 3.13 -1.61 3.47 -1.32 3.78 -1.09 4.1 -0.78 4.43 -0.48 4.75 -0.15 4.38 0.15 
+4.13 0.43 3.84 0.7 3.54 0.96 3.26 1.19 2.99 1.43 2.69 1.63 2.41 1.82 2.13 2.02 
+1.84 2.17 1.56 2.34 1.28 2.46 1 2.61 0.69 2.69 0.43 2.78 0.13 2.88 -0.11 2.32 
+-0.3 2.24 -0.5 2.13 -0.7 2 -0.85 1.89 -1.02 1.78 -1.13 1.65 -1.29 1.54 -1.37 1.43 
+-1.48 1.3 -3.19 2.23 -3.38 1.75 -3.52 1.26 -30.27 8.07 -2.95 1.43 -2.32 1.32 -1.76 1.3 
+-1.3 1.32 -0.87 1.47 -0.54 1.67 -0.28 1.96 -0.07 2.3 0.11 1.84 0.33 1.71 0.49 1.63 
+0.72 1.5 0.89 1.39 1.05 1.26 1.21 1.16 1.34 1.04 1.47 0.91 1.61 0.8 1.71 0.67 
+1.82 0.56 3.91 0.76 4.19 0.24 2.8 -0.09 2.65 -0.28 2.47 -0.46 2.28 -0.61 2.11 -0.76 
+1.93 -0.93 1.75 -1.06 1.58 -1.19 1.39 -1.32 1.2 -1.43 1.04 -1.56 0.82 -1.65 0.67 -1.75 
+0.45 -1.83 0.29 -1.91 0.11 -2 12.09 0 f*
+885.7 3694.1 10.09 0 0 -10.77 2.8 3.45 2.84 2.8 2.86 2.23 2.85 1.7 2.82 1.21 
+2.75 0.82 2.69 0.43 2.58 0.13 1.91 -0.07 1.91 -0.24 1.91 -0.37 1.88 -0.52 1.84 -0.67 
+1.79 -0.79 1.71 -0.93 1.58 -1.04 1.5 -1.15 1.34 -1.28 1.17 -1.39 1.02 -1.47 0.82 -1.59 
+0.61 -1.69 0.39 -1.76 0.13 -1.87 0 -53.12 -10.76 0 0 48.42 -0.09 1.47 -0.29 1.35 
+-0.41 1.23 -0.56 1.15 -0.71 1.02 -0.8 0.96 -1.93 1.56 -2.19 1.22 -2.39 0.82 -2.41 0.5 
+-2.34 0.15 -1.65 -0.09 -1.65 -0.28 -1.63 -0.46 -1.61 -0.62 -1.56 -0.81 -1.5 -0.95 -1.43 -1.13 
+-1.32 -1.28 -1.25 -1.43 -1.11 -1.58 -0.99 -1.72 -0.85 -1.84 -0.67 -1.97 -0.5 -2.11 -0.32 -2.24 
+-0.11 -2.34 0 -39 -10.76 0 0 67.93 f*
+983.92 3696.12 3.11 -0.2 3.04 -0.57 2.95 -0.91 2.82 -1.26 2.71 -1.58 2.54 -1.87 2.39 -2.14 
+2.21 -2.39 2.02 -2.65 1.78 -2.84 1.58 -3.06 1.3 -3.23 1.06 -3.39 0.78 -3.51 0.48 -3.65 
+0.15 -3.73 -0.15 -3.73 -0.48 -3.63 -0.78 -3.5 -1.06 -3.34 -1.3 -3.19 -1.58 -2.99 -1.78 -2.78 
+-2.02 -2.59 -2.21 -2.34 -2.39 -2.08 -2.54 -1.8 -2.71 -1.52 -2.82 -1.21 -2.95 -0.89 -3.04 -0.56 
+-3.11 -0.18 -3.12 0.18 -3.04 0.56 -2.95 0.89 -2.82 1.21 -2.71 1.52 -2.54 1.8 -2.39 2.08 
+-2.21 2.34 -2.02 2.59 -1.78 2.78 -1.58 2.99 -1.3 3.19 -1.06 3.34 -0.78 3.5 -0.48 3.63 
+-0.15 3.73 11.44 0 0.09 -2.63 0.24 -2.56 0.43 -2.49 0.59 -2.39 0.74 -2.28 0.89 -2.17 
+1.04 -2.02 1.2 -1.89 1.33 -1.71 1.47 -1.52 1.61 -1.34 1.74 -1.13 1.84 -0.89 2 -0.67 
+2.08 -0.42 2.23 -0.13 2.21 0.13 2.08 0.42 2 0.67 1.84 0.89 1.74 1.13 1.61 1.34 
+1.48 1.52 1.32 1.71 1.2 1.89 1.04 2.02 0.89 2.17 0.74 2.28 0.59 2.39 0.43 2.49 
+0.24 2.56 0.09 2.63 -0.09 2.62 -0.24 2.58 -0.43 2.52 -0.59 2.43 -0.74 2.32 -0.89 2.23 
+-1.04 2.08 -1.2 1.93 -1.32 1.78 -1.48 1.61 -1.61 1.39 -1.74 1.17 -1.84 0.95 -2 0.7 
+-2.08 0.43 -2.21 0.13 -2.23 -0.13 -2.08 -0.43 -2 -0.7 -1.84 -0.95 -1.74 -1.17 -1.61 -1.39 
+-1.47 -1.61 -1.33 -1.78 -1.2 -1.93 -1.04 -2.08 -0.89 -2.23 -0.74 -2.32 -0.59 -2.43 -0.43 -2.52 
+-0.24 -2.58 -0.09 -2.62 -11.44 0 0.15 3.73 0.48 3.65 0.78 3.51 1.06 3.39 1.3 3.23 
+1.58 3.06 1.78 2.84 2.02 2.65 2.21 2.39 2.39 2.14 2.54 1.87 2.71 1.58 2.82 1.26 
+2.95 0.91 3.04 0.57 3.13 0.2 f*
+1021.57 3694.1 12.11 0 13.45 -51.79 13.46 51.79 12.11 0 13.46 -51.79 13.45 51.79 12.09 0 
+-19.48 -67.93 -12.11 0 -14.13 51.11 -12.79 -51.11 -12.11 0 -19.51 67.93 f*
+1234.79 3690.73 -0.85 4.02 -1.06 3.69 -1.26 3.41 -1.47 3.11 -1.65 2.8 -1.87 2.54 -2.04 2.25 
+-2.24 2 -2.43 1.71 -2.61 1.5 -2.8 1.21 -2.99 1 -3.17 0.76 -3.34 0.54 -3.51 0.3 
+-3.7 0.11 -4.92 -0.24 -4.62 -0.71 -4.36 -1.15 -4.08 -1.58 -3.77 -2.02 -3.52 -2.39 -3.2 -2.75 
+-2.88 -3.1 -2.61 -3.45 -2.28 -3.75 -1.96 -4.04 -1.62 -4.32 -1.33 -4.56 -0.98 -4.82 -0.63 -5.01 
+-0.3 -5.21 0.22 -5.86 0.65 -5.51 1.04 -5.14 1.41 -4.78 1.78 -4.4 2.13 -4.02 2.46 -3.66 
+2.75 -3.28 3.06 -2.89 3.29 -2.54 3.54 -2.13 3.78 -1.75 3.97 -1.37 4.17 -0.98 4.34 -0.58 
+4.46 -0.2 4.84 0.2 4.47 0.56 4.11 0.91 3.73 1.26 3.39 1.59 3.06 1.86 2.73 2.15 
+2.43 2.38 2.11 2.65 1.84 2.87 1.56 3.04 1.31 3.23 1.04 3.39 0.8 3.52 0.56 3.64 
+0.35 3.76 -12.11 0 -0.54 -3.41 -0.7 -3.14 -0.79 -2.86 -0.93 -2.62 -1.06 -2.39 -1.2 -2.15 
+-1.34 -1.93 -1.5 -1.67 -1.67 -1.48 -1.82 -1.25 -1.97 -1.04 -2.17 -0.82 -2.34 -0.65 -2.54 -0.46 
+-2.73 -0.26 -2.91 -0.09 -3.91 0.19 -3.6 0.57 -3.34 0.93 -3.06 1.26 -2.8 1.61 -2.54 1.89 
+-2.29 2.2 -2.02 2.45 -1.76 2.71 -1.52 2.96 -1.28 3.14 -1.05 3.37 -0.78 3.53 -0.57 3.71 
+-0.34 3.85 -0.11 3.96 0.15 4.43 0.46 4.19 0.73 3.93 1.02 3.67 1.28 3.43 1.55 3.14 
+1.75 2.87 1.98 2.6 2.16 2.32 2.37 2.02 2.56 1.73 2.71 1.43 2.87 1.13 2.99 0.8 
+3.12 0.5 3.23 0.15 2.37 -0.09 2.32 -0.26 2.24 -0.41 2.16 -0.58 2.06 -0.76 1.98 -0.91 
+1.87 -1.07 1.73 -1.21 1.61 -1.37 1.46 -1.52 1.3 -1.65 1.13 -1.8 0.96 -1.93 0.78 -2.09 
+0.57 -2.19 0.35 -2.34 12.11 0 f*
+1277.84 3696.12 3.12 -0.2 3.04 -0.57 2.93 -0.91 2.84 -1.26 2.7 -1.58 2.55 -1.87 2.39 -2.14 
+2.19 -2.39 2.02 -2.65 1.8 -2.84 1.56 -3.06 1.33 -3.23 1.06 -3.39 0.76 -3.51 0.48 -3.65 
+0.17 -3.73 -0.17 -3.73 -0.48 -3.63 -0.76 -3.5 -1.06 -3.34 -1.33 -3.19 -1.56 -2.99 -1.8 -2.78 
+-2.02 -2.59 -2.19 -2.34 -2.39 -2.08 -2.55 -1.8 -2.7 -1.52 -2.84 -1.21 -2.93 -0.89 -3.04 -0.56 
+-3.12 -0.18 -3.13 0.18 -3.04 0.56 -2.93 0.89 -2.84 1.21 -2.69 1.52 -2.56 1.8 -2.39 2.08 
+-2.19 2.34 -2.02 2.59 -1.8 2.78 -1.56 2.99 -1.32 3.19 -1.07 3.34 -0.75 3.5 -0.48 3.63 
+-0.18 3.73 11.44 0 0.09 -2.63 0.26 -2.56 0.41 -2.49 0.59 -2.39 0.74 -2.28 0.89 -2.17 
+1.07 -2.02 1.17 -1.89 1.35 -1.71 1.45 -1.52 1.61 -1.34 1.74 -1.13 1.87 -0.89 1.97 -0.67 
+2.11 -0.42 2.21 -0.13 2.21 0.13 2.11 0.42 1.98 0.67 1.86 0.89 1.74 1.13 1.61 1.34 
+1.46 1.52 1.34 1.71 1.17 1.89 1.06 2.02 0.89 2.17 0.74 2.28 0.59 2.39 0.41 2.49 
+0.26 2.56 0.09 2.63 -0.09 2.62 -0.26 2.58 -0.41 2.52 -0.59 2.43 -0.74 2.32 -0.89 2.23 
+-1.06 2.08 -1.17 1.93 -1.34 1.78 -1.46 1.61 -1.61 1.39 -1.74 1.17 -1.86 0.95 -1.98 0.7 
+-2.11 0.43 -2.21 0.13 -2.21 -0.13 -2.11 -0.43 -1.97 -0.7 -1.87 -0.95 -1.74 -1.17 -1.61 -1.39 
+-1.45 -1.61 -1.35 -1.78 -1.17 -1.93 -1.07 -2.08 -0.89 -2.23 -0.74 -2.32 -0.59 -2.43 -0.41 -2.52 
+-0.26 -2.58 -0.09 -2.62 -11.44 0 0.18 3.73 0.48 3.65 0.75 3.51 1.07 3.39 1.32 3.23 
+1.56 3.06 1.8 2.84 2.02 2.65 2.19 2.39 2.39 2.14 2.56 1.87 2.69 1.58 2.84 1.26 
+2.93 0.91 3.04 0.57 3.13 0.2 f*
+1316.19 3694.1 12.79 0 18.14 -53.8 18.17 53.8 12.79 0 -24.22 -67.93 -13.45 0 -24.2 67.93 f*
+1443.99 3647.03 -0.74 -3.17 -0.93 -2.91 -1.11 -2.66 -1.28 -2.43 -1.46 -2.19 -1.61 -2 -1.76 -1.75 
+-1.89 -1.55 -2.02 -1.36 -2.13 -1.15 -2.26 -0.95 -2.32 -0.76 -2.43 -0.59 -2.5 -0.41 -2.56 -0.24 
+-2.62 -0.09 -3.56 0.29 -3.34 0.59 -3.15 0.89 -2.91 1.15 -2.71 1.45 -2.48 1.71 -2.28 1.98 
+-2.04 2.21 -1.8 2.43 -1.59 2.69 -1.33 2.89 -1.11 3.1 -0.86 3.3 -0.64 3.47 -0.36 3.66 
+-0.13 3.84 0.24 5.52 0.65 4.97 1.04 4.47 1.41 3.97 1.69 3.51 1.95 3.06 2.17 2.67 
+2.37 2.26 2.49 1.91 2.56 1.56 2.65 1.26 2.62 0.97 2.61 0.7 2.52 0.48 2.41 0.26 
+2.23 0.09 -0.67 -10.09 -2.93 -0.28 -1.57 -0.37 -1.61 -0.52 -1.58 -0.68 -1.61 -0.84 -1.56 -1 
+-1.52 -1.17 -1.43 -1.37 -1.35 -1.52 -1.25 -1.71 -1.09 -1.89 -0.95 -2.08 -0.79 -2.26 -0.58 -2.47 
+-0.37 -2.69 39.69 0 -0.15 2.8 -0.41 2.54 -0.67 2.35 -0.87 2.11 -1.07 1.91 -1.23 1.71 
+-1.37 1.5 -1.48 1.32 -1.54 1.15 -1.61 0.95 -1.61 0.81 -1.62 0.63 -3.13 0.83 -2.75 0.26 
+0.67 10.09 2.32 -0.09 2.43 -0.26 2.47 -0.48 2.5 -0.73 2.49 -1 2.48 -1.3 2.36 -1.63 
+2.28 -1.99 2.13 -2.37 1.95 -2.78 1.76 -3.23 1.5 -3.71 1.23 -4.21 0.91 -4.73 0.56 -5.3 
+0.21 -5.86 -50.45 0 0.24 -3.54 0.76 -3.84 0.58 -1.97 0.76 -1.95 0.93 -1.91 1.08 -1.84 
+1.3 -1.73 1.5 -1.61 1.7 -1.45 1.93 -1.24 2.14 -1.04 2.39 -0.76 2.63 -0.48 2.91 -0.17 
+2.93 0.24 2.74 0.74 2.52 1.17 2.32 1.63 2.11 2.04 1.87 2.41 1.62 2.78 1.39 3.13 
+10.77 0 f*
+1460.11 3694.1 9.43 0 0 -12.79 2.11 2.95 1.99 2.54 1.91 2.17 1.82 1.82 1.73 1.49 
+1.63 1.22 1.56 0.91 1.46 0.7 1.39 0.45 1.29 0.26 1.21 0.11 1.11 -0.05 2 -0.43 
+1.67 -0.69 0 -10.09 -2.78 -0.2 -2.59 -0.37 -2.36 -0.5 -2.17 -0.67 -1.96 -0.83 -1.75 -0.96 
+-1.57 -1.11 -1.39 -1.25 -1.19 -1.39 -1.05 -1.54 -0.84 -1.67 -0.7 -1.8 -0.52 -1.95 -0.37 -2.06 
+-0.22 -2.21 -0.08 -2.35 0 -37.65 -10.77 0 0 67.93 f*
+1565.73 3720.33 15.45 0 32.96 -94.16 -13.45 0 -9.42 27.58 -36.98 0 -9.41 -27.58 -13.46 0 
+29.6 80.71 12.11 0 -15.47 -42.38 30.25 0 -14.78 42.38 -12.11 0 4.71 13.45 f*
+1624.91 3694.1 10.09 0 0 -10.77 2.8 3.45 2.84 2.8 2.87 2.23 2.84 1.7 2.82 1.21 
+2.76 0.82 2.69 0.43 2.59 0.13 1.91 -0.07 1.91 -0.24 1.91 -0.37 1.89 -0.52 1.85 -0.67 
+1.78 -0.79 1.7 -0.93 1.61 -1.04 1.48 -1.15 1.34 -1.28 1.2 -1.39 1.02 -1.47 0.83 -1.59 
+0.61 -1.69 0.39 -1.76 0.13 -1.87 0 -53.12 -10.77 0 0 48.42 -0.11 1.47 -0.26 1.35 
+-0.41 1.23 -0.59 1.15 -0.7 1.02 -0.82 0.96 -1.91 1.56 -2.21 1.22 -2.37 0.82 -2.41 0.5 
+-2.34 0.15 -1.64 -0.09 -1.65 -0.28 -1.62 -0.46 -1.61 -0.62 -1.57 -0.81 -1.5 -0.95 -1.43 -1.13 
+-1.34 -1.28 -1.24 -1.43 -1.11 -1.58 -1 -1.72 -0.84 -1.84 -0.68 -1.97 -0.52 -2.11 -0.3 -2.24 
+-0.11 -2.34 0 -39 -10.77 0 0 67.93 f*
+1696.88 3694.1 10.09 0 0 -10.77 2.82 3.45 2.82 2.8 2.86 2.23 2.84 1.7 2.82 1.21 
+2.78 0.82 2.66 0.43 2.59 0.13 1.91 -0.07 1.91 -0.24 1.91 -0.37 1.89 -0.52 1.84 -0.67 
+1.78 -0.79 1.71 -0.93 1.59 -1.04 1.5 -1.15 1.34 -1.28 1.2 -1.39 0.99 -1.47 0.83 -1.59 
+0.61 -1.69 0.39 -1.76 0.13 -1.87 0 -53.12 -10.76 0 0 48.42 -0.09 1.47 -0.26 1.35 
+-0.43 1.23 -0.57 1.15 -0.71 1.02 -0.8 0.96 -1.93 1.56 -2.19 1.22 -2.37 0.82 -2.43 0.5 
+-2.34 0.15 -1.65 -0.09 -1.63 -0.28 -1.65 -0.46 -1.61 -0.62 -1.55 -0.81 -1.52 -0.95 -1.41 -1.13 
+-1.34 -1.28 -1.24 -1.43 -1.12 -1.58 -1 -1.72 -0.84 -1.84 -0.68 -1.97 -0.5 -2.11 -0.32 -2.24 
+-0.11 -2.34 0 -39 -10.76 0 0 67.93 f*
+1768.86 3694.1 10.76 0 0 -50.44 0.22 -1.82 0.65 -1.84 1.11 -1.82 1.54 -1.67 1.99 -1.45 
+2.43 -1.13 2.86 -0.76 1.61 -0.2 1.71 -0.07 2.3 0.13 2.15 0.39 1.97 0.63 1.8 0.84 
+1.65 1.04 1.48 1.17 1.34 1.32 1.17 1.43 1.02 1.52 0.89 1.58 1.34 3.26 0.79 3.21 
+0.24 2.98 0 41.69 10.76 0 0 -68.6 -10.09 0 0 9.42 -2.04 -2.64 -2.17 -2.37 
+-2.32 -2.09 -2.54 -1.74 -2.78 -1.41 -3.08 -1.02 -3.43 -0.63 -3.82 -0.22 -2.48 0.09 -2.32 0.3 
+-2.19 0.46 -2.06 0.65 -1.91 0.79 -1.78 0.91 -1.61 1.04 -1.48 1.15 -1.3 1.24 -1.16 1.32 
+-0.97 1.39 -0.81 1.45 -0.65 1.47 -0.46 1.52 -0.28 1.52 -0.09 1.52 0 54.47 f*
+1840.15 3673.92 0.09 2.04 0.28 2.02 0.46 2 0.65 1.95 0.85 1.91 1.06 1.85 1.25 1.73 
+1.5 1.65 1.71 1.5 1.97 1.37 2.2 1.21 2.45 1.02 2.71 0.83 2.97 0.63 3.24 0.37 
+3.51 0.13 3.8 -0.17 4.17 -0.57 4.25 -1.05 2.08 -0.71 2.02 -0.87 1.89 -1.02 1.76 -1.2 
+1.56 -1.37 1.37 -1.56 1.11 -1.76 0.84 -1.95 0.52 -2.19 0.2 -2.41 0 -43.03 0.24 -1.2 
+0.63 -1.04 0.98 -0.89 1.18 -0.68 1.32 -0.45 1.32 -0.2 1.28 0.06 1.13 0.35 0 -8.07 
+-1.34 -0.39 -1.26 -0.2 -4.12 -0.08 -2.93 0.06 -2.28 0.26 -1.76 0.48 -1.37 0.79 -1.06 1.13 
+-0.91 1.54 -0.87 2 -0.93 2.49 -5.75 -4.21 -2.45 -1.52 -2.39 -1.17 -2.45 -0.85 -2.67 -0.58 
+-3 -0.33 -3.49 -0.08 -3.02 0.11 -2.73 0.3 -2.47 0.52 -2.24 0.67 -1.97 0.87 -1.76 1 
+-1.54 1.15 -1.32 1.25 -1.15 1.37 -0.93 1.48 -0.78 1.56 -0.61 1.63 -0.46 1.67 -0.3 1.73 
+-0.24 3.52 10.09 0 0.26 -1.97 0.71 -1.89 1.2 -1.7 1.63 -1.52 2.02 -1.26 2.41 -0.93 
+2.78 -0.61 3.13 -0.22 2.32 0.2 2.19 0.37 2.04 0.52 1.89 0.65 1.74 0.76 1.61 0.84 
+1.45 0.93 1.31 1.02 2.16 2.17 1.55 2.28 0.93 2.25 0.24 1.09 0.08 1.04 0 13.46 
+-5.08 -1.89 -2.08 -0.57 -2.09 -0.41 -4.94 -0.74 -7.34 -1.11 -3.6 -1.11 -2.82 -1.29 -2.13 -1.43 
+-1.54 -1.56 -1.02 -1.71 -0.61 -1.8 -0.3 -1.91 -0.08 -1.98 -10.09 0 0.09 2.63 0.2 2.41 
+0.35 2.15 0.49 1.93 0.64 1.73 0.75 1.54 0.91 1.37 1.05 1.2 1.17 1.06 1.3 0.96 
+1.43 0.82 1.56 0.74 3.52 1.26 4.04 1.04 17.49 2.7 2.3 0.54 1.91 0.59 1.52 0.65 
+1.17 0.67 0.85 0.7 0.59 0.74 0.3 0.76 0.11 0.73 0 6.05 -0.2 1.15 -0.61 1.36 
+-1.04 1.43 -1.52 1.43 -2.02 1.32 -2.56 1.07 -3.13 0.71 -1.8 0.2 -1.93 0.06 -2.06 -0.06 
+-1.91 -0.24 -1.75 -0.35 -1.61 -0.48 -1.48 -0.58 -1.32 -0.7 -1.17 -0.79 -1.04 -0.84 -1.7 -1.87 
+-1.2 -2.04 -0.67 -2.08 -0.24 -2.08 -10.76 0 f*
+1912.8 3626.17 10.7656 94.1602 re
+f*
+1970.64 3720.33 74 0 0 -10.76 -30.95 0 0 -83.4 -12.11 0 ^ -30.94 0 
+0 10.76 f*
+2056.73 3694.1 9.42 0 0 -12.79 2.11 2.95 2 2.54 1.91 2.17 1.82 1.82 1.74 1.49 
+1.63 1.22 1.56 0.91 1.45 0.7 1.37 0.45 1.3 0.26 1.2 0.11 1.13 -0.05 2 -0.43 
+1.66 -0.69 0 -10.09 -2.78 -0.2 -2.58 -0.37 -2.37 -0.5 -2.17 -0.67 -1.95 -0.83 -1.76 -0.96 
+-1.56 -1.11 -1.39 -1.25 -1.21 -1.39 -1.02 -1.54 -0.85 -1.67 -0.7 -1.8 -0.52 -1.95 -0.37 -2.06 
+-0.21 -2.21 -0.09 -2.35 0 -37.65 -10.76 0 0 67.93 f*
+2155.62 3647.03 -0.74 -3.17 -0.93 -2.91 -1.11 -2.66 -1.28 -2.43 -1.45 -2.19 -1.61 -2 -1.75 -1.75 
+-1.89 -1.55 -2.02 -1.36 -2.13 -1.15 -2.25 -0.95 -2.32 -0.76 -2.43 -0.59 -2.49 -0.41 -2.56 -0.24 
+-2.62 -0.09 -3.56 0.29 -3.34 0.59 -3.14 0.89 -2.91 1.15 -2.71 1.45 -2.47 1.71 -2.28 1.98 
+-2.04 2.21 -1.81 2.43 -1.58 2.69 -1.32 2.89 -1.11 3.1 -0.87 3.3 -0.63 3.47 -0.37 3.66 
+-0.13 3.84 0.24 5.52 0.66 4.97 1.04 4.47 1.41 3.97 1.7 3.51 1.95 3.06 2.17 2.67 
+2.37 2.26 2.49 1.91 2.56 1.56 2.62 1.26 2.65 0.97 2.61 0.7 2.52 0.48 2.41 0.26 
+2.24 0.09 -0.67 -10.09 -2.93 -0.28 -1.56 -0.37 -1.61 -0.52 -1.58 -0.68 -1.61 -0.84 -1.56 -1 
+-1.52 -1.17 -1.43 -1.37 -1.35 -1.52 -1.25 -1.71 -1.11 -1.89 -0.93 -2.08 -0.78 -2.26 -0.59 -2.47 
+-0.37 -2.69 39.69 0 -0.15 2.8 -0.41 2.54 -0.68 2.35 -0.86 2.11 -1.07 1.91 -1.24 1.71 
+-1.36 1.5 -1.47 1.32 -1.55 1.15 -1.61 0.95 -1.61 0.81 -1.62 0.63 -3.12 0.83 -2.75 0.26 
+0.67 10.09 2.32 -0.09 2.43 -0.26 2.48 -0.48 2.5 -0.73 2.49 -1 2.45 -1.3 2.39 -1.63 
+2.28 -1.99 2.13 -2.37 1.96 -2.78 1.75 -3.23 1.5 -3.71 1.23 -4.21 0.91 -4.73 0.57 -5.3 
+0.21 -5.86 -50.45 0 0.24 -3.54 0.76 -3.84 0.58 -1.97 0.76 -1.95 0.93 -1.91 1.08 -1.84 
+1.3 -1.73 1.5 -1.61 1.7 -1.45 1.93 -1.24 2.15 -1.04 2.39 -0.76 2.63 -0.48 2.91 -0.17 
+2.93 0.24 2.73 0.74 2.52 1.17 2.32 1.63 2.11 2.04 1.87 2.41 1.63 2.78 1.39 3.13 
+10.77 0 f*
+2171.75 3694.1 10.09 0 0 -10.77 2.8 3.45 2.84 2.8 2.87 2.23 2.84 1.7 2.82 1.21 
+2.78 0.82 2.67 0.43 2.58 0.13 1.91 -0.07 1.91 -0.24 1.91 -0.37 1.89 -0.52 1.84 -0.67 
+1.78 -0.79 1.72 -0.93 1.58 -1.04 1.5 -1.15 1.34 -1.28 1.19 -1.39 1 -1.47 0.82 -1.59 
+0.61 -1.69 0.39 -1.76 0.13 -1.87 0 -53.12 -10.77 0 0 48.42 -0.09 1.47 -0.25 1.35 
+-0.44 1.23 -0.56 1.15 -0.72 1.02 -0.8 0.96 -1.93 1.56 -2.19 1.22 -2.37 0.82 -2.43 0.5 
+-2.34 0.15 -1.65 -0.09 -1.63 -0.28 -1.65 -0.46 -1.61 -0.62 -1.54 -0.81 -1.52 -0.95 -1.41 -1.13 
+-1.35 -1.28 -1.23 -1.43 -1.13 -1.58 -1 -1.72 -0.84 -1.84 -0.67 -1.97 -0.5 -2.11 -0.33 -2.24 
+-0.11 -2.34 0 -39 -10.77 0 0 67.93 f*
+2287.43 3720.33 10.77 0 0 -94.16 -9.42 0 0 8.75 -1.8 -2.45 -1.93 -2.28 -2.15 -2.07 
+-2.43 -1.78 -2.78 -1.47 -3.19 -1.13 -3.67 -0.7 -4.23 -0.24 -4.1 0.26 -3.71 0.74 -3.36 1.2 
+-3 1.61 -2.67 1.93 -2.37 2.25 -2.06 2.5 -1.78 2.71 -1.5 2.89 -1.25 2.99 -1.02 3.08 
+-0.8 3.1 -0.59 3.08 -0.41 3 -0.24 2.91 -0.07 2.76 11.44 0 0.09 -2.65 0.28 -2.58 
+0.46 -2.52 0.61 -2.43 0.78 -2.32 0.93 -2.24 1.09 -2.08 1.23 -1.93 1.34 -1.79 1.5 -1.61 
+1.61 -1.39 1.72 -1.18 1.82 -0.95 1.93 -0.7 2.02 -0.41 2.11 -0.15 1.87 0.11 1.82 0.35 
+1.78 0.58 1.71 0.81 1.64 1 1.57 1.23 1.45 1.43 1.35 1.63 1.23 1.82 1.09 2.04 
+0.97 2.22 0.81 2.38 0.65 2.56 0.48 2.76 0.31 2.91 0.08 3.09 -0.22 3.05 -0.39 2.89 
+-0.57 2.71 -0.72 2.52 -0.86 2.34 -1 2.17 -1.13 1.95 -1.23 1.76 -1.34 1.58 -1.43 1.37 
+-1.52 1.17 -1.58 0.96 -1.65 0.76 -1.69 0.54 -1.71 0.33 -1.76 0.11 -1.67 -0.11 -1.7 -0.37 
+-1.69 -0.61 -1.69 -0.82 -1.65 -1.05 -1.63 -1.25 -1.54 -1.46 -1.48 -1.65 -1.37 -1.82 -1.24 -2 
+-1.11 -2.14 -0.93 -2.32 -0.79 -2.46 -0.56 -2.6 -0.37 -2.72 -0.11 -2.84 -11.44 0 0.2 4.84 
+0.61 4.43 0.96 4.05 1.25 3.69 1.55 3.32 1.78 2.97 1.99 2.63 2.18 2.3 2.3 2 
+2.41 1.7 2.45 1.39 2.47 1.11 2.48 0.84 2.43 0.59 2.35 0.34 2.21 0.11 2.19 -0.13 
+2.47 -0.41 2.65 -0.74 2.78 -1.06 2.75 -1.46 2.64 -1.87 2.48 -2.32 1.15 -1.32 1.04 -1.45 
+0 34.98 f*
+2352.02 3675.26 11.44 0 -0.29 2.91 -0.56 2.63 -0.85 2.39 -1.06 2.14 -1.28 1.93 -1.47 1.7 
+-1.63 1.49 -1.78 1.3 -1.87 1.11 -1.97 0.91 -2.02 0.76 -2.06 0.61 -4.11 0.74 -3.95 0.24 
+-2.41 -0.09 -2.39 -0.26 -2.37 -0.43 -2.32 -0.58 -2.25 -0.79 -2.17 -0.93 -2.07 -1.1 -1.93 -1.29 
+-1.78 -1.43 -1.63 -1.61 -1.41 -1.76 -1.21 -1.93 -0.98 -2.09 -0.71 -2.25 -0.46 -2.41 -0.15 -2.58 
+0.24 -3.13 0.67 -2.82 1.15 -2.54 1.65 -2.28 2.14 -2.02 2.67 -1.78 3.19 -1.57 3.76 -1.34 
+16.82 -4.04 2.17 -0.59 1.95 -0.72 1.74 -0.87 1.46 -1.04 1.17 -1.21 0.87 -1.46 0.54 -1.65 
+0.2 -1.89 -0.26 -2.21 -0.76 -2.04 -1.25 -1.82 -1.76 -1.59 -2.28 -1.3 -2.78 -0.98 -3.28 -0.61 
+-3.78 -0.22 -4.3 0.24 -1.82 0.3 -1.61 0.41 -1.41 0.54 -1.24 0.63 -1.06 0.74 -0.91 0.82 
+-0.8 0.93 -0.65 1.02 -1.04 2.3 -0.74 2.6 -0.57 2.91 -11.43 0 0.7 -4.88 0.52 -2.3 
+0.65 -2.17 0.8 -2.08 0.98 -1.93 1.19 -1.8 1.39 -1.65 1.63 -1.49 1.88 -1.32 2.17 -1.15 
+2.47 -0.98 2.78 -0.76 3.11 -0.56 3.47 -0.35 3.84 -0.11 2.52 0.09 2.54 0.26 2.5 0.43 
+2.43 0.61 2.37 0.78 2.3 0.96 2.15 1.13 2.04 1.3 1.87 1.46 1.7 1.65 1.5 1.82 
+1.26 2 1.04 2.17 0.76 2.34 0.46 2.52 0.17 2.7 -0.08 1.82 -0.26 1.73 -0.43 1.63 
+-0.59 1.54 -0.76 1.43 -0.93 1.34 -1.08 1.26 -1.23 1.17 -1.41 1.08 -1.57 1.02 -3.55 1.84 
+-4.19 1.58 -4.75 1.34 -12.78 2.7 -2.7 1.04 -2.08 1.11 -1.54 1.13 -1.09 1.2 -0.69 1.21 
+-0.42 1.24 -0.2 1.23 -0.04 1.26 0.09 1.24 0.21 1.13 0.37 1.06 0.5 1 0.63 0.91 
+0.76 0.82 1.82 1.41 2.2 1.11 2.52 0.79 2.75 0.48 2.95 0.15 3.25 -0.22 2.74 -0.61 
+2.23 -0.98 1.78 -1.3 1.39 -1.58 1 -1.83 0.67 -2.04 0.39 -2.21 11.44 0 -11.44 0 f*
+2437.43 3720.33 6.73 0 -4.23 -7.79 -3.61 -7.75 -3.02 -7.7 -2.43 -7.7 -1.87 -7.68 -1.3 -7.73 
+-0.78 -7.72 -0.26 -7.79 0.26 -6.86 0.78 -7.33 1.3 -7.66 1.87 -7.83 1.15 -3.95 1.28 -3.93 
+1.43 -3.9 1.58 -3.85 1.74 -3.79 1.87 -3.69 2.04 -3.61 2.19 -3.47 -6.73 0 -2.23 2.8 
+-2.17 3.11 -2.06 3.36 -1.99 3.58 -1.89 3.77 -1.78 3.91 -1.65 4.04 -1.52 4.1 -1.37 4.14 
+-1.23 4.14 -1.07 4.13 -0.89 4.04 -0.72 3.95 -0.52 3.78 -0.32 3.62 -0.11 3.41 0.11 4.25 
+0.32 4.26 0.52 4.19 0.72 4.14 0.89 4.13 1.07 4.03 1.23 4.02 1.37 3.93 1.52 3.88 
+1.65 3.82 3.67 7.4 4.05 7.07 4.41 6.75 f*
+2475.79 3714.28 2.23 -0.11 2.2 -0.35 2.1 -0.56 2.04 -0.74 1.93 -0.96 1.84 -1.11 1.71 -1.3 
+1.59 -1.43 1.43 -1.59 1.28 -1.71 1.13 -1.82 0.93 -1.96 0.76 -2.02 0.57 -2.13 0.32 -2.17 
+0.13 -2.25 -0.13 -2.23 -0.32 -2.2 -0.57 -2.11 -0.76 -2.04 -0.93 -1.93 -1.12 -1.84 -1.28 -1.7 
+-1.43 -1.58 -1.59 -1.46 -1.71 -1.28 -1.84 -1.13 -1.93 -0.93 -2.04 -0.76 -2.1 -0.54 -2.2 -0.34 
+-2.23 -0.13 -2.26 0.13 -2.17 0.34 -2.13 0.54 -2.02 0.76 -1.96 0.93 -1.82 1.13 -1.72 1.28 
+-1.58 1.46 -1.43 1.58 -1.28 1.7 -1.13 1.84 -0.95 1.93 -0.74 2.04 -0.56 2.11 -0.35 2.2 
+-0.11 2.23 9.42 0 0.29 -2.47 0.75 -2.37 1.24 -2.15 1.58 -1.91 1.91 -1.61 2.17 -1.22 
+2.36 -0.78 2.48 -0.29 2.47 0.29 2.37 0.78 2.14 1.22 1.93 1.61 1.59 1.91 1.21 2.15 
+0.79 2.37 0.28 2.47 -0.28 2.49 -0.79 2.35 -1.21 2.17 -1.59 1.91 -1.93 1.61 -2.14 1.21 
+-2.37 0.78 -2.47 0.26 -2.48 -0.26 -2.36 -0.78 -2.17 -1.21 -1.91 -1.61 -1.58 -1.91 -1.24 -2.17 
+-0.75 -2.35 -0.29 -2.49 -9.42 0 0.11 2.25 0.35 2.17 0.56 2.13 0.74 2.02 0.95 1.96 
+1.13 1.82 1.28 1.71 1.43 1.59 1.58 1.43 1.72 1.3 1.82 1.11 1.96 0.96 2.02 0.74 
+2.13 0.56 2.17 0.35 2.26 0.11 f*
+2528.23 3717.64 8.74 0 -51.11 -94.16 ^ ^ f*
+2539 3667.86 2.25 -0.11 2.17 -0.34 2.13 -0.55 2.04 -0.76 1.93 -0.93 1.82 -1.13 1.72 -1.28 
+1.58 -1.46 1.43 -1.58 1.3 -1.72 1.11 -1.82 0.95 -1.93 0.76 -2.04 0.55 -2.1 0.34 -2.19 
+0.11 -2.23 -0.11 -2.26 -0.34 -2.17 -0.55 -2.12 -0.76 -2.04 -0.95 -1.93 -1.11 -1.82 -1.3 -1.71 
+-1.43 -1.58 -1.58 -1.43 -1.72 -1.3 -1.82 -1.11 -1.93 -0.96 -2.04 -0.76 -2.13 -0.54 -2.17 -0.35 
+-2.25 -0.11 -2.24 0.11 -2.19 0.35 -2.11 0.54 -2.04 0.76 -1.93 0.96 -1.82 1.11 -1.71 1.3 
+-1.59 1.43 -1.45 1.58 -1.28 1.71 -1.13 1.82 -0.93 1.93 -0.76 2.04 -0.54 2.13 -0.34 2.17 
+-0.11 2.26 9.4 0 0.29 -2.5 0.78 -2.34 1.22 -2.17 1.61 -1.91 1.91 -1.61 2.17 -1.22 
+2.34 -0.78 2.48 -0.26 2.5 0.26 2.34 0.78 2.16 1.22 1.91 1.61 1.61 1.91 1.21 2.17 
+0.78 2.34 0.26 2.5 -0.26 2.47 -0.78 2.34 -1.21 2.17 -1.61 1.91 -1.91 1.61 -2.16 1.21 
+-2.34 0.79 -2.5 0.28 -2.48 -0.28 -2.34 -0.79 -2.17 -1.21 -1.91 -1.61 -1.61 -1.91 -1.22 -2.17 
+-0.78 -2.34 -0.29 -2.47 -9.4 0 0.11 2.23 0.34 2.19 0.54 2.1 0.76 2.04 0.93 1.93 
+1.13 1.82 1.28 1.72 1.45 1.58 1.59 1.46 1.71 1.28 1.82 1.13 1.93 0.93 2.04 0.76 
+2.11 0.55 2.19 0.34 2.24 0.11 f*
+2569.95 3720.33 6.73 0 2.69 -3.93 2.47 -3.97 2.32 -3.99 2.13 -4.02 1.93 -4.04 1.78 -4.01 
+1.58 -4.02 1.41 -3.97 1.24 -3.95 1.06 -3.93 0.89 -3.86 0.74 -3.8 0.57 -3.73 0.39 -3.64 
+0.24 -3.55 0.09 -3.46 -0.09 -3.47 -0.26 -3.58 -0.43 -3.66 -0.61 -3.76 -0.76 -3.82 -0.93 -3.84 
+-1.11 -3.91 -1.29 -3.91 -1.43 -3.91 -1.61 -3.89 -1.79 -3.86 -1.91 -3.82 -2.1 -3.73 -2.24 -3.67 
+-2.43 -3.58 -2.56 -3.47 -6.73 0 4.03 7.08 3.52 7.09 3.02 7.2 2.48 7.29 1.02 3.71 
+0.91 3.76 0.76 3.8 0.63 3.86 0.5 3.93 0.35 3.97 0.21 4.05 0.06 4.12 -0.26 7.95 
+-0.78 7.77 -1.3 7.64 -1.87 7.57 -2.43 7.57 -3.02 7.66 -3.6 7.75 -4.23 7.96 f*
+cleartomark end end pagesave restore
+ showpage
+%%PageTrailer
+%%Trailer
+%%Pages: 1
diff --git a/doc/xmp/fgr2.png b/doc/xmp/fgr2.png
new file mode 100755
index 0000000..8a44917
Binary files /dev/null and b/doc/xmp/fgr2.png differ
diff --git a/doc/xmp/fgr2.txt b/doc/xmp/fgr2.txt
new file mode 100644
index 0000000..2fd0255
--- /dev/null
+++ b/doc/xmp/fgr2.txt
@@ -0,0 +1 @@
+Annual Average over Regions.
diff --git a/doc/xmp/fgr3.eps b/doc/xmp/fgr3.eps
new file mode 100755
index 0000000..d4128fd
--- /dev/null
+++ b/doc/xmp/fgr3.eps
@@ -0,0 +1,1461 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 20 0 771 613
+%%HiResBoundingBox: 20.880001 0.000000 770.040029 612.000023
+%.......................................
+%%Creator: GPL Ghostscript 871 (epswrite)
+%%CreationDate: 2013/04/07 15:38:35
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+% This copyright applies to everything between here and the %%EndProlog:
+% Copyright (C) 2010 Artifex Software, Inc.  All rights reserved.
+%%BeginResource: procset GS_epswrite_2_0_1001 1.001 0
+/GS_epswrite_2_0_1001 80 dict dup begin
+/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
+4 index eq and{ pop pop pop}{ PageSize dup  1
+5 -1 roll put 0 4 -1 roll put dup null eq {false} {dup where} ifelse{ exch get exec}
+{ pop/setpagedevice where
+{ pop 1 dict dup /PageSize PageSize put setpagedevice}
+{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
+setpage}if}ifelse}ifelse}ifelse} bind def
+/!{bind def}bind def/#{load def}!/N/counttomark #
+/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
+/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
+/w/setlinewidth #/J/setlinecap #
+/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
+/m/moveto #/l/lineto #/c/rcurveto #
+/p{N 2 idiv{N -2 roll rlineto}repeat}!
+/P{N 0 gt{N -2 roll moveto p}if}!
+/h{p closepath}!/H{P closepath}!
+/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
+/re{4 -2 roll m exch dup lx exch ly neg lx h}!
+/^{3 index neg 3 index neg}!
+/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
+/q/gsave #/Q/grestore #/rf{re fill}!
+/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
+/|={pop exch 4 1 roll 1 array astore cvx 3 array astore cvx exch 1 index def exec}!
+/|{exch string readstring |=}!
+/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
+/@/currentfile #/${+ @ |}!
+/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
+3 1 roll}repeat pop pop true}!
+/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
+/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
+/Ic{exch Ix false 3 colorimage}!
+/F{/Columns counttomark 3 add -2 roll/Rows exch/K -1/BlackIs1 true>>
+/CCITTFaxDecode filter}!/FX{<</EndOfBlock false F}!
+/X{/ASCII85Decode filter}!/@X{@ X}!/&2{2 index 2 index}!
+/@F{@ &2<<F}!/@C{@X &2 FX}!
+/$X{+ @X |}!/&4{4 index 4 index}!/$F{+ @ &4<<F |}!/$C{+ @X &4 FX |}!
+/IC{3 1 roll 10 dict begin 1{/ImageType/Interpolate/Decode/DataSource
+/ImageMatrix/BitsPerComponent/Height/Width}{exch def}forall
+currentdict end image}!
+/~{@ read {pop} if}!
+end def
+%%EndResource
+/pagesave null def
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+GS_epswrite_2_0_1001 begin
+/pagesave save store 197 dict begin
+0.18 0.18 scale
+%%EndPageSetup
+gsave mark
+Q q
+116 0 4162 0 0 3400 ^ Y
+255 G
+116.668 -383.332 4161.11 4166.66 re
+f*
+Q q
+116 0 4162 0 0 3400 ^ Y
+11.1111 w
+1 J
+1 j
+201 0 44 rG
+794.12 2139.25 54.28 1.96 S
+875.54 2142.19 13.56 0.5 S
+916.25 2143.66 54.27 1.96 S
+997.68 2146.59 13.56 0.48 S
+1038.37 2148.04 32.27 1.17 22.03 0.35 S
+1119.81 2150 13.59 0.21 S
+1160.54 2150.67 54.32 0.87 S
+1242.02 2151.97 13.56 0.22 S
+1282.75 2152.63 54.29 0.87 S
+1364.2 2153.38 13.58 -0.24 S
+1404.93 2152.71 54.32 -0.89 S
+1486.39 2151.37 13.56 -0.22 S
+1527.13 2150.7 54.29 -0.89 S
+1608.57 2149.37 13.59 -0.24 S
+1648.72 2143.58 53.03 -11.7 S
+1728.28 2126.04 13.26 -2.93 S
+1768.05 2117.25 53.04 -11.7 S
+1847.61 2099.7 13.26 -2.91 S
+1887.39 2090.93 12.76 -2.82 30.39 -27.95 S
+1950.52 2041.78 10 -9.21 S
+1980.51 2014.17 39.99 -36.8 S
+2040.52 1958.98 10.01 -9.2 S
+2070.5 1931.38 40 -36.8 S
+2130.51 1876.2 9.98 -9.2 S
+2160.5 1848.59 16.14 -14.87 25.89 -19.47 S
+2224.24 1797.92 10.85 -8.18 S
+2256.79 1773.39 43.42 -32.68 S
+2321.92 1724.39 10.87 -8.18 S
+2354.5 1699.87 43.4 -32.68 S
+2419.62 1650.84 10.85 -8.16 S
+2452.17 1626.34 0.97 -0.74 52.96 -3.84 S
+2533.18 1619.79 13.54 -0.97 S
+2573.8 1616.86 54.19 -3.95 S
+2655.08 1610.96 13.54 -0.98 S
+2695.71 1608 33.96 -2.47 17.75 9.77 S
+2771.22 1628.38 11.92 6.55 S
+2806.95 1648.03 47.61 26.17 S
+2878.36 1687.29 11.89 6.53 S
+2914.06 1706.9 47.61 26.17 S
+2985.48 1746.16 11.89 6.55 S
+3019.79 1767.95 43.18 32.96 S
+3084.57 1817.41 10.8 8.24 S
+3116.97 1842.14 43.18 32.96 S
+3181.75 1891.6 10.8 8.25 S
+3214.15 1916.34 43.18 32.99 S
+3278.93 1965.8 3.73 2.86 8.27 3.26 S
+3316.19 1981.88 50.55 19.94 S
+3392 2011.79 12.63 4.99 S
+3429.88 2026.73 50.54 19.95 S
+3505.68 2056.64 12.63 4.99 S
+3543.6 2071.59 15.57 6.14 37.14 5.69 S
+3623.16 2087.54 13.41 2.04 S
+3663.41 2093.71 53.69 8.2 S
+3743.95 2106.04 13.43 2.04 S
+3784.22 2112.2 51.46 7.88 S
+Q q
+116 0 4162 0 0 3400 ^ Y
+2.77778 w
+1 J
+1 j
+201 0 44 rG
+790.91 2161.74 -9.61 -3.21 -6.42 -6.42 -3.21 -9.63 0 -6.43 3.21 -9.65 6.42 -6.43 9.61 -3.21 
+6.43 0 9.63 3.21 6.43 6.43 3.21 9.65 0 6.43 -3.21 9.63 -6.43 6.42 -9.63 3.21 
+-6.43 0 S
+1067.43 2171.72 -9.64 -3.21 -6.42 -6.45 -3.21 -9.64 0 -6.43 3.21 -9.63 6.42 -6.42 9.64 -3.21 
+6.42 0 9.61 3.21 6.43 6.42 3.21 9.63 0 6.43 -3.21 9.64 -6.43 6.45 -9.61 3.21 
+-6.42 0 S
+1343.92 2176.15 -9.63 -3.21 -6.4 -6.42 -3.22 -9.64 0 -6.42 3.22 -9.66 6.4 -6.43 9.63 -3.21 
+6.43 0 9.63 3.21 6.4 6.43 3.21 9.66 0 6.42 -3.21 9.64 -6.4 6.42 -9.63 3.21 
+-6.43 0 S
+1620.42 2171.62 -9.62 -3.22 -6.42 -6.42 -3.21 -9.66 0 -6.42 3.21 -9.64 6.42 -6.42 9.62 -3.21 
+6.42 0 9.63 3.21 6.43 6.42 3.21 9.64 0 6.42 -3.21 9.66 -6.43 6.42 -9.63 3.22 
+-6.42 0 S
+1896.94 2110.61 -9.63 -3.21 -6.42 -6.42 -3.21 -9.66 0 -6.42 3.21 -9.63 6.42 -6.42 9.63 -3.22 
+6.42 0 9.62 3.22 6.42 6.42 3.21 9.63 0 6.42 -3.21 9.66 -6.42 6.42 -9.62 3.21 
+-6.42 0 S
+2173.44 1856.23 -9.64 -3.21 -6.4 -6.42 -3.21 -9.66 0 -6.42 3.21 -9.63 6.4 -6.42 9.64 -3.22 
+6.42 0 9.64 3.22 6.4 6.42 3.21 9.63 0 6.42 -3.21 9.66 -6.4 6.42 -9.64 3.21 
+-6.42 0 S
+2449.93 1648.11 -9.61 -3.23 -6.42 -6.42 -3.21 -9.64 0 -6.42 3.21 -9.63 6.42 -6.42 9.61 -3.23 
+6.43 0 9.64 3.23 6.42 6.42 3.19 9.63 0 6.42 -3.19 9.64 -6.42 6.42 -9.64 3.23 
+-6.43 0 S
+2726.46 1628.04 -9.64 -3.21 -6.42 -6.43 -3.21 -9.63 0 -6.45 3.21 -9.63 6.42 -6.43 9.64 -3.21 
+6.42 0 9.61 3.21 6.43 6.43 3.21 9.63 0 6.45 -3.21 9.63 -6.43 6.43 -9.61 3.21 
+-6.42 0 S
+3002.95 1780.04 -9.63 -3.21 -6.4 -6.44 -3.22 -9.63 0 -6.43 3.22 -9.63 6.4 -6.42 9.63 -3.23 
+6.43 0 9.61 3.23 6.42 6.42 3.21 9.63 0 6.43 -3.21 9.63 -6.42 6.44 -9.61 3.21 
+-6.43 0 S
+3279.45 1991.14 -9.62 -3.21 -6.42 -6.42 -3.21 -9.64 0 -6.42 3.21 -9.63 6.42 -6.45 9.62 -3.21 
+6.42 0 9.63 3.21 6.43 6.45 3.19 9.63 0 6.42 -3.19 9.64 -6.43 6.42 -9.63 3.21 
+-6.42 0 S
+3555.96 2100.24 -9.63 -3.21 -6.42 -6.42 -3.21 -9.64 0 -6.44 3.21 -9.63 6.42 -6.43 9.63 -3.21 
+6.41 0 9.63 3.21 6.43 6.43 3.21 9.63 0 6.44 -3.21 9.64 -6.43 6.42 -9.63 3.21 
+-6.41 0 S
+3832.46 2142.55 -9.64 -3.21 -6.4 -6.42 -3.21 -9.64 0 -6.45 3.21 -9.63 6.4 -6.42 9.64 -3.22 
+6.43 0 9.61 3.22 6.43 6.42 3.21 9.63 0 6.45 -3.21 9.64 -6.43 6.42 -9.61 3.21 
+-6.43 0 S
+11.1111 w
+0 19 255 rG
+794.12 2256.45 276.52 4.97 276.49 -13.57 276.5 -37.22 276.52 -70.57 276.5 -270.25 276.5 -454.73 276.52 -192.53 
+276.49 385.28 276.5 409.7 276.52 161.3 276.5 61.39 S
+2.77778 w
+794.12 2278.93 -22.46 -44.99 44.95 0 -22.48 44.99 S
+1070.64 2283.9 -22.48 -44.99 44.95 0 -22.46 44.99 S
+1347.13 2270.33 -22.46 -44.99 44.92 0 -22.46 44.99 S
+1623.63 2233.12 -22.46 -44.99 44.95 0 -22.48 44.99 S
+1900.15 2162.54 -22.48 -44.99 44.94 0 -22.46 44.99 S
+2176.65 1892.29 -22.46 -44.98 44.92 0 -22.46 44.98 S
+2453.14 1437.57 -22.46 -44.99 44.92 0 -22.46 44.99 S
+2729.67 1245.05 -22.48 -45.01 44.95 0 -22.46 45.01 S
+3006.16 1630.32 -22.46 -44.99 44.92 0 -22.46 44.99 S
+3282.66 2040.02 -22.46 -44.99 44.92 0 -22.46 44.99 S
+3559.18 2201.32 -22.48 -44.98 44.95 0 -22.46 44.98 S
+3835.68 2262.74 -22.46 -44.99 44.92 0 -22.46 44.99 S
+11.1111 w
+28 185 13 rG
+794.12 2199.21 12.74 0.16 S
+832.33 2199.7 12.74 0.16 S
+870.55 2200.17 12.74 0.16 S
+908.77 2200.65 12.74 0.18 S
+946.98 2201.13 12.74 0.17 S
+985.18 2201.61 12.74 0.17 S
+1023.39 2202.11 12.74 0.15 S
+1061.61 2202.58 9.03 0.11 3.71 -0.19 S
+1099.79 2201.11 12.71 -0.67 S
+1137.93 2199.04 12.74 -0.69 S
+1176.11 2196.98 12.72 -0.7 S
+1214.25 2194.92 12.72 -0.7 S
+1252.43 2192.86 12.71 -0.69 S
+1290.58 2190.8 12.72 -0.7 S
+1328.75 2188.74 12.72 -0.7 S
+1366.84 2185.85 12.68 -1.2 S
+1404.88 2182.23 12.67 -1.21 S
+1442.93 2178.6 12.68 -1.21 S
+1480.96 2174.96 12.68 -1.22 S
+1519.01 2171.33 12.7 -1.21 S
+1557.05 2167.69 12.7 -1.19 S
+1595.09 2164.06 12.7 -1.22 S
+1633 2159.48 12.48 -2.5 S
+1670.49 2152.02 12.5 -2.49 S
+1707.96 2144.55 12.5 -2.5 S
+1745.45 2137.09 12.5 -2.5 S
+1782.92 2129.62 12.5 -2.49 S
+1820.4 2122.16 12.5 -2.5 S
+1857.9 2114.7 12.48 -2.5 S
+1895.38 2107.23 4.77 -0.95 6.1 -4.97 S
+1926.02 2085.2 9.87 -8.05 S
+1955.67 2061.07 9.89 -8.05 S
+1985.3 2036.92 9.9 -8.06 S
+2014.97 2012.79 9.88 -8.05 S
+2044.62 1988.63 9.88 -8.05 S
+2074.26 1964.5 9.89 -8.05 S
+2103.91 1940.34 9.89 -8.05 S
+2133.57 1916.21 9.88 -8.05 S
+2163.21 1892.05 9.88 -8.05 S
+2190.73 1865.64 8.57 -9.42 S
+2216.47 1837.37 8.57 -9.42 S
+2242.21 1809.09 8.59 -9.42 S
+2267.95 1780.82 8.59 -9.44 S
+2293.71 1752.54 8.57 -9.44 S
+2319.45 1724.24 8.57 -9.42 S
+2345.18 1695.96 8.57 -9.42 S
+2370.92 1667.69 8.59 -9.42 S
+2396.66 1639.41 8.59 -9.44 S
+2422.42 1611.11 8.57 -9.41 S
+2448.16 1582.83 4.99 -5.49 4.91 -2.06 S
+2481.54 1565.37 11.74 -4.97 S
+2516.73 1550.5 11.74 -4.97 S
+2551.96 1535.61 11.74 -4.94 S
+2587.16 1520.75 11.74 -4.95 S
+2622.37 1505.88 11.75 -4.97 S
+2657.57 1491 11.74 -4.95 S
+2692.79 1476.13 11.74 -4.95 S
+2728 1461.26 1.67 -0.72 9.61 5.23 S
+2761.68 1477.93 11.19 6.05 S
+2795.29 1496.14 11.2 6.07 S
+2828.88 1514.37 11.2 6.08 S
+2862.5 1532.59 11.2 6.05 S
+2896.09 1550.8 11.22 6.07 S
+2929.71 1569.04 11.2 6.07 S
+2963.3 1587.24 11.22 6.08 S
+2996.92 1605.46 9.24 5.02 1.37 1.75 S
+3023.22 1632.33 7.83 10.05 S
+3046.75 1662.48 7.86 10.07 S
+3070.29 1692.64 7.84 10.04 S
+3093.82 1722.79 7.86 10.04 S
+3117.36 1752.93 7.84 10.05 S
+3140.88 1783.09 7.86 10.05 S
+3164.43 1813.24 7.83 10.05 S
+3187.96 1843.38 7.86 10.05 S
+3211.48 1873.54 7.86 10.05 S
+3235.03 1903.69 7.83 10.05 S
+3258.55 1933.83 7.86 10.05 S
+3282.09 1963.98 0.57 0.73 10.07 6.17 S
+3314.47 1984.18 10.88 6.64 S
+3347.09 2004.12 10.87 6.64 S
+3379.71 2024.07 10.87 6.64 S
+3412.33 2043.99 10.87 6.66 S
+3444.95 2063.93 10.87 6.66 S
+3477.56 2083.88 10.87 6.66 S
+3510.18 2103.82 10.88 6.64 S
+3542.79 2123.76 10.88 6.64 S
+3577.91 2137.11 12.54 2.23 S
+3615.54 2143.82 12.54 2.21 S
+3653.17 2150.5 12.54 2.23 S
+3690.78 2157.21 12.55 2.21 S
+3728.41 2163.89 12.54 2.23 S
+3766.04 2170.59 12.54 2.23 S
+3803.67 2177.28 12.54 2.23 S
+2.77778 w
+794.12 2221.7 -22.46 -22.48 22.46 -22.5 22.48 22.5 -22.48 22.48 S
+1070.64 2225.17 -22.48 -22.48 22.48 -22.5 22.46 22.5 -22.46 22.48 S
+1347.13 2210.25 -22.46 -22.51 22.46 -22.5 22.46 22.5 -22.46 22.51 S
+1623.63 2183.83 -22.46 -22.48 22.46 -22.51 22.48 22.51 -22.48 22.48 S
+1900.15 2128.78 -22.48 -22.5 22.48 -22.48 22.46 22.48 -22.46 22.5 S
+2176.65 1903.62 -22.46 -22.5 22.46 -22.48 22.46 22.48 -22.46 22.5 S
+2453.14 1599.85 -22.46 -22.51 22.46 -22.5 22.48 22.5 -22.48 22.51 S
+2729.67 1483.05 -22.48 -22.51 22.48 -22.48 22.46 22.48 -22.46 22.51 S
+3006.16 1632.98 -22.46 -22.5 22.46 -22.48 22.46 22.48 -22.46 22.5 S
+3282.66 1987.21 -22.46 -22.5 22.46 -22.48 22.48 22.48 -22.48 22.5 S
+3559.18 2156.27 -22.48 -22.51 22.48 -22.48 22.46 22.48 -22.46 22.51 S
+3835.68 2205.46 -22.46 -22.48 22.46 -22.5 22.46 22.5 -22.46 22.48 S
+11.1111 w
+94 0 131 rG
+794.12 2127.78 50.89 2.54 S
+870.46 2131.58 50.89 2.54 S
+946.79 2135.39 50.91 2.54 S
+1023.13 2139.21 47.51 2.36 3.38 0.09 S
+1099.5 2142.32 50.93 1.32 S
+1175.91 2144.32 50.93 1.32 S
+1252.3 2146.29 50.93 1.32 S
+1328.71 2148.29 18.42 0.48 32.47 -1.93 S
+1405.04 2145.31 50.87 -3.02 S
+1481.34 2140.78 50.84 -3.04 S
+1557.62 2136.24 50.87 -3.03 S
+1633.18 2128.45 47.26 -19.08 S
+1704.08 2099.83 47.24 -19.1 S
+1774.96 2071.2 47.27 -19.09 S
+1845.83 2042.58 47.27 -19.09 S
+1914.34 2009.77 40.5 -30.96 S
+1975.09 1963.3 40.47 -30.97 S
+2035.8 1916.84 40.5 -30.97 S
+2096.55 1870.38 40.47 -30.99 S
+2157.27 1823.92 19.38 -14.85 23.81 -11.8 S
+2223.27 1785.92 45.66 -22.68 S
+2291.73 1751.89 45.64 -22.68 S
+2360.2 1717.88 45.64 -22.68 S
+2428.67 1683.86 24.48 -12.16 23.59 1.24 S
+2502.2 1674.29 50.87 2.69 S
+2578.52 1678.3 50.87 2.69 S
+2654.84 1682.33 50.87 2.7 S
+2731.01 1686.93 45.88 22.18 S
+2799.83 1720.21 45.89 22.2 S
+2868.66 1753.5 45.88 22.18 S
+2937.48 1786.76 45.9 22.2 S
+3006.32 1820.05 45.29 23.39 S
+3074.24 1855.14 45.3 23.37 S
+3142.17 1890.21 45.29 23.39 S
+3210.09 1925.3 45.29 23.39 S
+3278.02 1960.37 4.64 2.41 43.68 13.58 S
+3350.67 1983.94 48.66 15.13 S
+3423.66 2006.64 48.66 15.13 S
+3496.66 2029.34 48.66 15.15 S
+3569.96 2050.74 50.15 9.03 S
+3645.18 2064.28 50.15 9.03 S
+3720.4 2077.82 50.15 9.03 S
+3795.64 2091.36 40.04 7.23 S
+2.77778 w
+771.656 2105.27 44.9453 44.9883 re
+S
+1048.16 2119.08 44.9453 44.9883 re
+S
+1324.67 2126.26 44.9219 44.9883 re
+S
+1601.17 2109.81 44.9453 44.9883 re
+S
+1877.67 1998.16 44.9414 44.9883 re
+S
+2154.19 1786.59 44.9219 44.9883 re
+S
+2430.68 1649.2 44.9453 44.9883 re
+S
+2707.18 1663.78 44.9453 44.9883 re
+S
+2983.7 1797.48 44.9219 44.9883 re
+S
+3260.2 1940.28 44.9453 44.9883 re
+S
+3536.7 2026.3 44.9453 44.9883 re
+S
+3813.22 2076.08 44.9219 44.9883 re
+S
+11.1111 w
+201 0 44 rG
+1100.17 1206.66 54.3 0 S
+1181.64 1206.66 13.57 0 S
+1222.37 1206.66 54.32 0 S
+1303.84 1206.66 13.59 0 S
+2.77778 w
+1218.27 1229.17 -9.63 -3.21 -6.41 -6.42 -3.21 -9.66 0 -6.42 3.21 -9.63 6.41 -6.43 9.63 -3.21 
+6.42 0 9.62 3.21 6.42 6.43 3.21 9.63 0 6.42 -3.21 9.66 -6.42 6.42 -9.62 3.21 
+-6.42 0 S
+11.1111 w
+0 19 255 rG
+1100.17 1307.9 242.62 0 S
+2.77778 w
+1221.48 1330.41 -22.46 -45.01 44.92 0 -22.46 45.01 S
+11.1111 w
+28 185 13 rG
+1100.17 1409.14 12.74 0 S
+1138.39 1409.14 12.74 0 S
+1176.61 1409.14 12.74 0 S
+1214.82 1409.14 12.74 0 S
+1253.04 1409.14 12.71 0 S
+1291.23 1409.14 12.74 0 S
+1329.45 1409.14 12.74 0 S
+2.77778 w
+1221.48 1431.62 -22.46 -22.48 22.46 -22.51 22.46 22.51 -22.46 22.48 S
+11.1111 w
+94 0 131 rG
+1100.17 1510.37 50.96 0 S
+1176.61 1510.37 50.96 0 S
+1253.04 1510.37 50.93 0 S
+1329.45 1510.37 13.34 0 S
+2.77778 w
+1199.02 1487.87 44.9219 44.9883 re
+S
+K
+1350.89 1239.28 7.18 0 0 -23.83 1.82 2.39 2 1.84 2.08 1.34 2.09 0.93 1.93 0.61 
+1.72 0.35 2.3 0.17 3.41 -0.29 3.41 -0.91 1.64 -0.71 1.61 -0.89 1.52 -1.08 1.43 -1.28 
+1.34 -1.52 1.22 -1.71 1.06 -1.96 0.91 -2.17 0.76 -2.45 0.54 -2.69 0.35 -2.96 0.11 -3.23 
+-0.28 -5.2 -0.91 -4.8 -0.7 -2.21 -0.83 -2.09 -1 -1.93 -1.17 -1.75 -1.33 -1.61 -1.49 -1.41 
+-1.65 -1.24 -1.82 -1.04 -2 -0.83 -2.17 -0.59 -2.34 -0.36 -2.52 -0.14 -3.06 0.31 -1.71 0.45 
+-1.76 0.72 -1.75 0.99 -1.72 1.33 -1.58 1.71 -1.46 2.15 0 -5.41 -7.18 0 0 21.59 
+^ 0.29 -3.45 0.8 -3.21 1.26 -2.91 1.65 -2.52 1.95 -2.08 2.22 -1.58 2.39 -1 
+2.5 -0.35 1.54 0.11 1.45 0.33 1.37 0.55 1.26 0.69 2.24 1.89 1.84 2.41 1.46 2.78 
+1.02 3.02 0.63 3.15 0.22 3.08 -0.11 2.21 -0.26 2.04 -1.04 3.62 -1.52 3.02 -1.91 2.45 
+-2.1 1.87 -2.15 1.3 -2.08 0.78 -1.84 0.26 -2.63 -0.37 -2.45 -1.06 -2.21 -1.67 -1.93 -2.24 
+-1.59 -2.73 -1.21 -3.12 -0.76 -3.5 -0.26 -3.75 -7.18 0 0 41.38 f*
+1434.92 1206.45 -7.21 0 -0.3 1.84 -0.61 1.78 -0.91 1.67 -1.2 1.5 -1.5 1.28 -1.8 0.98 
+-2.08 0.63 -2.39 0.22 -2.87 -0.34 -2.5 -1.02 -2.17 -1.63 -1.78 -2.16 -1.41 -2.7 -1.02 -3.14 
+-0.63 -3.56 -0.2 -3.88 0.22 -3.84 0.67 -3.39 1.09 -2.93 1.49 -2.45 1.87 -1.93 2.23 -1.41 
+2.56 -0.84 2.89 -0.31 2.67 0.31 2.24 0.82 1.87 1.24 1.49 1.59 1.13 1.75 0.79 1.89 
+0.45 1.89 0.15 1.76 7.18 0 -0.29 -3.47 -0.89 -3.32 -1.47 -3.04 -2.06 -2.7 -1.26 -1.19 
+-1.39 -1.07 -1.56 -0.93 -1.7 -0.8 -1.84 -0.63 -1.97 -0.46 -2.15 -0.28 -2.28 -0.11 -2.61 0.15 
+-2.39 0.41 -2.17 0.7 -2 0.91 -1.8 1.13 -1.63 1.34 -1.43 1.54 -1.26 1.7 -1.11 1.84 
+-0.93 1.98 -1.39 4.25 -0.8 4.56 -0.26 4.68 0.21 3.23 0.48 2.96 0.71 2.69 0.91 2.45 
+1.11 2.17 1.26 1.96 1.39 1.71 1.49 1.52 1.59 1.28 1.61 1.08 3.32 1.61 3.21 0.91 
+2.91 0.29 3.16 -0.22 3.06 -0.67 2.87 -1.17 2.6 -1.71 2.26 -2.26 1.84 -2.88 1.37 -3.52 
+0.82 -4.21 f*
+1478.04 1206.45 -7.18 0 -0.33 1.84 -0.61 1.78 -0.89 1.67 -1.22 1.5 -1.5 1.28 -1.78 0.98 
+-2.08 0.63 -2.39 0.22 -2.86 -0.34 -2.52 -1.02 -2.15 -1.63 -1.8 -2.16 -1.41 -2.7 -1.02 -3.14 
+-0.61 -3.56 -0.21 -3.88 0.24 -3.84 0.67 -3.39 1.08 -2.93 1.5 -2.45 1.87 -1.93 2.23 -1.41 
+2.56 -0.84 2.89 -0.31 2.64 0.31 2.26 0.82 1.86 1.24 1.48 1.59 1.13 1.75 0.81 1.89 
+0.45 1.89 0.15 1.76 7.18 0 -0.31 -3.47 -0.87 -3.32 -1.48 -3.04 -2.06 -2.7 -1.26 -1.19 
+-1.41 -1.07 -1.54 -0.93 -1.69 -0.8 -1.84 -0.63 -2 -0.46 -2.12 -0.28 -2.31 -0.11 -2.57 0.15 
+-2.39 0.41 -2.2 0.7 -1.99 0.91 -1.8 1.13 -1.61 1.34 -1.43 1.54 -1.29 1.7 -1.08 1.84 
+-0.93 1.98 -1.39 4.25 -0.82 4.56 -0.26 4.68 0.24 3.23 0.48 2.96 0.71 2.69 0.91 2.45 
+1.11 2.17 1.26 1.96 1.39 1.71 1.49 1.52 1.56 1.28 1.63 1.08 3.32 1.61 3.21 0.91 
+2.91 0.29 3.17 -0.22 3.06 -0.67 2.86 -1.17 2.59 -1.71 2.28 -2.26 1.84 -2.88 1.37 -3.52 
+0.8 -4.21 f*
+1484.33 1196.98 20.6797 6.31641 re
+f*
+1549.93 1206.45 -7.18 0 -0.32 1.84 -0.61 1.78 -0.91 1.67 -1.2 1.5 -1.5 1.28 -1.78 0.98 
+-2.11 0.63 -2.37 0.22 -2.86 -0.34 -2.52 -1.02 -2.15 -1.63 -1.8 -2.16 -1.41 -2.7 -1.02 -3.14 
+-0.61 -3.56 -0.21 -3.88 0.24 -3.84 0.65 -3.39 1.11 -2.93 1.49 -2.45 1.87 -1.93 2.22 -1.41 
+2.58 -0.84 2.86 -0.31 2.67 0.31 2.26 0.82 1.84 1.24 1.5 1.59 1.13 1.75 0.79 1.89 
+0.46 1.89 0.15 1.76 7.21 0 -0.3 -3.47 -0.89 -3.32 -1.47 -3.04 -2.06 -2.7 -1.24 -1.19 
+-1.41 -1.07 -1.54 -0.93 -1.7 -0.8 -1.84 -0.63 -2 -0.46 -2.15 -0.28 -2.28 -0.11 -2.58 0.15 
+-2.39 0.41 -2.19 0.7 -2 0.91 -1.8 1.13 -1.61 1.34 -1.46 1.54 -1.25 1.7 -1.09 1.84 
+-0.93 1.98 -1.41 4.25 -0.8 4.56 -0.26 4.68 0.22 3.23 0.48 2.96 0.71 2.69 0.93 2.45 
+1.11 2.17 1.26 1.96 1.39 1.71 1.48 1.52 1.58 1.28 1.63 1.08 3.3 1.61 3.21 0.91 
+2.93 0.29 3.17 -0.22 3.04 -0.67 2.87 -1.17 2.6 -1.71 2.26 -2.26 1.87 -2.88 1.37 -3.52 
+0.8 -4.21 f*
+1582.73 1209.14 7.64 0 -0.18 1.93 -0.39 1.78 -0.55 1.59 -0.71 1.45 -0.87 1.29 -0.98 1.13 
+-2.28 1.87 -2.56 1.37 -2.73 0.89 -2.73 0.52 -2.65 0.15 -3.19 -0.24 -3.14 -0.67 -2.95 -1.15 
+-2.67 -1.58 -2.26 -2.04 -1.76 -2.47 -0.65 -1.41 -0.5 -1.5 -0.28 -1.61 -0.11 -1.72 0.15 -2.1 
+0.45 -1.89 0.76 -1.7 1.11 -1.52 1.43 -1.35 1.79 -1.19 2.12 -1.06 2.52 -0.91 11.25 -2.69 
+2.75 -0.85 1.15 -0.59 0.98 -0.69 0.78 -0.83 0.59 -0.97 0.37 -1.11 0.11 -1.25 -0.17 -1.48 
+-0.5 -1.37 -0.85 -1.22 -1.17 -1.06 -1.52 -0.87 -1.84 -0.65 -2.2 -0.41 -2.54 -0.15 -2.86 0.17 
+-2.28 0.48 -1.79 0.78 -1.32 1.04 -0.98 1.31 -0.7 1.54 -0.48 1.76 -0.39 1.93 -7.64 0 
+0.48 -3.26 0.76 -3.02 1.21 -2.67 1.72 -2.32 1.08 -1 1.26 -0.89 1.46 -0.76 1.65 -0.65 
+3.93 -0.89 4.88 -0.31 3.39 0.24 3.3 0.69 3.1 1.15 2.8 1.63 2.39 2.09 1 1.24 
+0.85 1.32 0.67 1.46 0.52 1.56 0.3 1.67 0.11 1.8 -0.22 2.39 -0.7 2.12 -1.12 1.85 
+-1.55 1.63 -1.99 1.43 -2.39 1.22 -2.78 1.06 -3.19 0.92 -8.53 1.8 -1.8 0.7 -1.39 0.71 
+-1.02 0.78 -0.74 0.79 -0.48 0.8 -0.26 0.85 -0.15 1.67 0.2 1.59 0.59 1.36 0.91 1.15 
+1.21 0.95 1.47 0.74 1.67 0.54 1.84 0.3 1.97 0.11 2.17 -0.15 1.82 -0.41 1.5 -0.65 
+1.19 -0.87 0.93 -1.06 0.68 -1.22 0.45 -1.37 0.24 -1.47 7.64 0 -7.64 0 f*
+1602.06 1221.75 6.29 0 0 -6.75 1.78 2.15 1.72 1.78 1.65 1.39 1.65 1.09 1.64 0.78 
+1.72 0.52 1.82 0.3 1.93 0.09 3.23 -0.43 1.52 -0.39 1.5 -0.59 1.46 -0.87 1.47 -1.2 
+1.45 -1.63 1.5 -2.11 1.83 2 1.75 1.61 1.72 1.26 1.66 0.93 1.7 0.67 1.72 0.44 
+3.55 0.3 2.24 -0.17 2.28 -0.52 2.19 -0.87 2 -1.26 1.75 -1.62 1.37 -2 0.89 -2.43 
+0.33 -2.82 0 -35.09 -7.2 0 0 32.4 -0.2 1.63 -0.54 1.52 -0.87 1.39 -1.09 1.2 
+-1.26 0.97 -1.34 0.76 -1.41 0.45 -1.37 0.17 -1.89 -0.24 -1.89 -0.62 -1.82 -1.02 -1.65 -1.33 
+-1.43 -1.61 -1.12 -1.82 -0.72 -2.02 -0.26 -2.15 0 -29.69 -7.18 0 0 32.4 -0.21 1.63 
+-0.56 1.52 -0.87 1.39 -1.11 1.2 -1.3 0.97 -1.46 0.76 -1.49 0.45 -1.54 0.17 -1.61 -0.21 
+-1.71 -0.58 -1.71 -0.96 -1.65 -1.28 -1.43 -1.59 -1.17 -1.84 -0.76 -2.06 -0.28 -2.28 0 -29.69 
+-7.18 0 0 45.45 f*
+1692.36 1237.48 4.95 0 0 -61.18 -7.64 0 0 43.64 -13.48 0 0 5.4 5.42 0.63 
+2.45 0.52 2.23 0.87 1.98 1.37 1.69 2.04 1.37 2.87 1.02 3.84 f*
+1719.33 1196.98 20.6641 6.31641 re
+f*
+1769.21 1237.48 4.95 0 0 -61.18 -7.64 0 0 43.64 -13.5 0 0 5.4 5.45 0.63 
+2.46 0.52 2.21 0.87 1.98 1.37 1.69 2.04 1.39 2.87 1.02 3.84 f*
+1404.36 1320.05 -1.28 5.14 -0.85 2.28 -0.97 2.06 -1.11 1.89 -1.23 1.7 -1.37 1.52 -1.5 1.33 
+-1.63 1.17 -1.75 0.97 -1.87 0.83 -2 0.67 -4.34 0.87 -4.82 0.26 -3.28 -0.15 -3.1 -0.48 
+-2.91 -0.79 -2.73 -1.06 -2.52 -1.33 -2.34 -1.61 -2.13 -1.84 -1.93 -2.09 -1.73 -2.3 -1.52 -2.5 
+-1.3 -2.71 -1.11 -2.89 -0.87 -3.06 -0.66 -3.21 -0.43 -3.36 -0.19 -3.47 0.15 -3.93 0.41 -3.69 
+0.69 -3.43 0.96 -3.2 1.19 -2.95 1.43 -2.69 1.63 -2.46 1.84 -2.19 2.02 -1.93 2.21 -1.7 
+2.37 -1.43 2.52 -1.18 2.67 -0.91 2.78 -0.66 2.89 -0.39 3 -0.13 3.23 0.13 2.99 0.37 
+2.73 0.61 2.5 0.84 2.26 1.07 2.04 1.23 1.82 1.43 1.63 1.61 1.41 1.79 1.24 1.9 
+1.04 2.04 0.87 2.15 1.21 4.62 0.63 4.95 -8.09 0 -0.82 -4.38 -1.15 -3.67 -1.5 -3.04 
+-1.91 -2.41 -2.32 -1.82 -2.78 -1.26 -3.26 -0.73 -3.78 -0.24 -2.61 0.13 -2.41 0.39 -2.24 0.61 
+-2.04 0.87 -1.89 1.06 -1.69 1.26 -1.52 1.48 -1.34 1.63 -1.17 1.82 -1.02 1.97 -0.84 2.11 
+-0.69 2.23 -0.91 4.86 -0.3 5.23 0.11 2.95 0.31 2.8 0.49 2.63 0.7 2.47 0.85 2.28 
+1.02 2.11 1.17 1.93 1.33 1.73 1.45 1.54 1.58 1.37 1.7 1.15 1.82 0.96 1.91 0.76 
+2 0.54 2.11 0.33 2.15 0.11 3.12 -0.24 2.96 -0.67 2.69 -1.11 2.41 -1.55 2.04 -1.91 
+1.63 -2.32 1.15 -2.67 0.63 -3.04 8.09 0 f*
+1466.82 1320.05 -1.28 5.14 -0.84 2.28 -0.98 2.06 -1.11 1.89 -1.26 1.7 -1.37 1.52 -1.48 1.33 
+-1.62 1.17 -1.76 0.97 -1.87 0.83 -1.99 0.67 -4.34 0.87 -4.82 0.26 -3.28 -0.15 -3.1 -0.48 
+-2.91 -0.79 -2.73 -1.06 -2.52 -1.33 -2.35 -1.61 -2.12 -1.84 -1.93 -2.09 -1.74 -2.3 -1.52 -2.5 
+-1.33 -2.71 -1.08 -2.89 -0.87 -3.06 -0.65 -3.21 -0.43 -3.36 -0.2 -3.47 0.13 -3.93 0.43 -3.69 
+0.7 -3.43 0.96 -3.2 1.19 -2.95 1.43 -2.69 1.63 -2.46 1.84 -2.19 2.02 -1.93 2.21 -1.7 
+2.36 -1.43 2.52 -1.18 2.67 -0.91 2.78 -0.66 2.88 -0.39 3 -0.13 3.23 0.13 3 0.37 
+2.73 0.61 2.5 0.84 2.25 1.07 2.04 1.23 1.82 1.43 1.63 1.61 1.41 1.79 1.24 1.9 
+1.04 2.04 0.86 2.15 1.22 4.62 0.63 4.95 -8.1 0 -0.82 -4.38 -1.15 -3.67 -1.52 -3.04 
+-1.89 -2.41 -2.32 -1.82 -2.78 -1.26 -3.25 -0.73 -3.78 -0.24 -2.61 0.13 -2.41 0.39 -2.24 0.61 
+-2.04 0.87 -1.89 1.06 -1.69 1.26 -1.52 1.48 -1.34 1.63 -1.17 1.82 -1.02 1.97 -0.85 2.11 
+-0.7 2.23 -0.91 4.86 -0.3 5.23 0.11 2.95 0.3 2.8 0.5 2.63 0.7 2.47 0.84 2.28 
+1.02 2.11 1.17 1.93 1.33 1.73 1.45 1.54 1.59 1.37 1.69 1.15 1.82 0.96 1.91 0.76 
+1.99 0.54 2.09 0.33 2.17 0.11 3.13 -0.24 2.95 -0.67 2.69 -1.11 2.41 -1.55 2.04 -1.91 
+1.63 -2.32 1.15 -2.67 0.63 -3.04 8.09 0 f*
+1523.87 1321.4 -0.13 2.36 -0.34 2.21 -0.61 2.04 -0.8 1.91 -1 1.73 -1.2 1.59 -1.37 1.43 
+-1.52 1.28 -1.67 1.13 -1.8 0.98 -3.97 1.5 -4.34 0.89 -4.62 0.29 -5.34 -0.34 -2.39 -0.42 
+-2.21 -0.58 -2.04 -0.74 -1.83 -0.89 -1.67 -1.05 -1.48 -1.15 -1.3 -1.28 -1.13 -1.41 -0.93 -1.52 
+-0.78 -1.62 -0.61 -1.72 -0.42 -1.82 -0.34 -3.91 0.24 -3.11 0.63 -2.63 0.98 -2.16 1.3 -1.82 
+1.57 -1.5 1.73 -1.23 1.91 -1.04 1.97 -0.89 20.23 -5.4 2.32 -0.89 1.93 -0.96 1.57 -1.06 
+1.21 -1.13 0.89 -1.24 0.61 -1.3 0.35 -1.39 0.11 -1.48 -0.17 -2.15 -0.59 -2.02 -1.04 -1.82 
+-1.56 -1.61 -2.17 -1.32 -2.8 -1.02 -3.54 -0.63 -4.3 -0.24 -4.36 0.32 -3.69 0.91 -3.02 1.43 
+-2.41 1.84 -1.82 2.17 -1.26 2.43 -0.73 2.61 -0.24 2.69 -8.07 0 0.09 -2.26 0.28 -2.16 
+0.48 -2.09 0.7 -2 0.87 -1.89 1.07 -1.78 1.28 -1.67 1.48 -1.52 1.69 -1.39 1.89 -1.22 
+2.09 -1.06 2.32 -0.91 2.52 -0.71 2.73 -0.52 2.98 -0.3 3.16 -0.11 2.93 0.08 2.75 0.29 
+2.56 0.48 2.37 0.65 2.17 0.78 1.99 0.96 1.8 1.11 1.61 1.21 1.43 1.34 1.24 1.46 
+1.04 1.56 0.85 1.65 0.67 1.73 0.46 1.8 0.3 1.87 0.09 1.91 -0.28 3.06 -0.8 2.76 
+-1.24 2.45 -1.61 2.15 -1.91 1.82 -2.12 1.5 -2.28 1.17 -2.35 0.84 -20.22 5.41 -3.52 1.84 
+-1.17 0.84 -0.87 0.91 -0.59 0.98 -0.34 1.11 -0.24 2.87 0.29 2.37 0.82 2.08 1.29 1.78 
+1.71 1.48 2.06 1.15 2.37 0.82 2.61 0.5 2.8 0.15 3.64 -0.24 3.17 -0.72 2.69 -1.13 
+2.23 -1.49 1.74 -1.87 1.23 -2.13 0.76 -2.41 0.24 -2.6 8.09 0 f*
+1536 1339.84 11.25 0 18.42 -54.88 18.43 54.88 11.22 0 0 -63 -7.64 0 0 52.65 
+-17.96 -52.65 -8.53 0 -17.54 52.65 0 -52.65 -7.64 0 0 63 f*
+1631.71 1338.04 5.4 0 0 -39.58 9.42 0 0 -7.21 ^ 0 -14.41 -7.64 0 
+^ -25.61 0 0 7.21 ^ 0 26.54 -18.88 -26.54 -6.73 0 0 0.89 
+27.85 38.69 f*
+1404.36 1421.5 -1.28 5.14 -0.85 2.28 -0.97 2.08 -1.11 1.87 -1.23 1.69 -1.37 1.52 -1.5 1.32 
+-1.63 1.17 -1.75 0.98 -1.87 0.83 -2 0.67 -4.34 0.87 -4.82 0.28 -3.28 -0.18 -3.1 -0.48 
+-2.91 -0.75 -2.73 -1.07 -2.52 -1.34 -2.34 -1.61 -2.13 -1.85 -1.93 -2.08 -1.73 -2.3 -1.52 -2.49 
+-1.3 -2.72 -1.11 -2.88 -0.87 -3.06 -0.66 -3.21 -0.43 -3.34 -0.19 -3.49 0.15 -3.93 0.41 -3.7 
+0.69 -3.43 0.96 -3.19 1.19 -2.95 1.43 -2.7 1.63 -2.45 1.84 -2.19 2.02 -1.93 2.21 -1.69 
+2.37 -1.43 2.52 -1.17 2.67 -0.91 2.78 -0.65 2.89 -0.39 3 -0.13 3.23 0.13 2.99 0.37 
+2.73 0.63 2.5 0.82 2.26 1.06 2.04 1.24 1.82 1.45 1.63 1.61 1.41 1.76 1.24 1.91 
+1.04 2.04 0.87 2.15 1.21 4.63 0.63 4.95 -8.09 0 -0.82 -4.37 -1.15 -3.69 -1.5 -3.04 
+-1.91 -2.41 -2.32 -1.82 -2.78 -1.26 -3.26 -0.74 -3.78 -0.24 -2.61 0.13 -2.41 0.39 -2.24 0.63 
+-2.04 0.85 -1.89 1.06 -1.69 1.26 -1.52 1.47 -1.34 1.63 -1.17 1.82 -1.02 1.98 -0.84 2.11 
+-0.69 2.26 -0.91 4.84 -0.3 5.23 0.11 2.95 0.31 2.8 0.49 2.62 0.7 2.48 0.85 2.28 
+1.02 2.11 1.17 1.93 1.33 1.74 1.45 1.54 1.58 1.37 1.7 1.15 1.82 0.95 1.91 0.76 
+2 0.54 2.11 0.32 2.15 0.11 3.12 -0.24 2.96 -0.67 2.69 -1.11 2.41 -1.52 2.04 -1.93 
+1.63 -2.32 1.15 -2.67 0.63 -3.04 8.09 0 f*
+1417.38 1441.3 43.58 0 0 -7.21 -35.48 0 0 -20.25 34.13 0 0 -7.18 ^ 
+0 -21.16 36.85 0 0 -7.18 -44.95 0 0 62.98 f*
+1518.92 1422.85 -0.11 2.36 -0.37 2.22 -0.59 2.06 -0.8 1.88 -1.02 1.74 -1.17 1.58 -1.37 1.43 
+-1.54 1.28 -1.67 1.13 -1.8 0.97 -3.95 1.5 -4.36 0.89 -4.6 0.3 -5.36 -0.37 -2.38 -0.41 
+-2.22 -0.59 -2.02 -0.74 -1.84 -0.89 -1.67 -1.02 -1.48 -1.17 -1.3 -1.28 -1.13 -1.41 -0.93 -1.52 
+-0.78 -1.63 -0.59 -1.71 -0.43 -1.82 -0.35 -3.89 0.24 -3.12 0.63 -2.61 1 -2.19 1.28 -1.83 
+1.56 -1.49 1.73 -1.24 1.91 -1.04 2 -0.89 20.2 -5.41 2.32 -0.87 1.93 -0.98 1.56 -1.06 
+1.22 -1.13 0.89 -1.23 0.61 -1.31 0.35 -1.39 0.11 -1.47 -0.17 -2.15 -0.56 -1.99 -1.04 -1.84 
+-1.59 -1.61 -2.15 -1.33 -2.82 -1.02 -3.51 -0.64 -4.32 -0.24 -4.36 0.33 -3.69 0.91 -3.02 1.43 
+-2.41 1.84 -1.83 2.18 -1.25 2.43 -0.72 2.61 -0.24 2.69 -8.09 0 0.09 -2.25 0.3 -2.17 
+0.48 -2.08 0.67 -2 0.87 -1.89 1.06 -1.78 1.28 -1.65 1.48 -1.54 1.7 -1.37 1.89 -1.23 
+2.1 -1.07 2.3 -0.91 2.52 -0.7 2.75 -0.54 2.95 -0.3 3.17 -0.11 2.96 0.09 2.73 0.3 
+2.56 0.46 2.36 0.65 2.19 0.8 1.97 0.93 1.8 1.11 1.63 1.21 1.41 1.35 1.23 1.45 
+1.04 1.57 0.85 1.64 0.67 1.74 0.48 1.8 0.29 1.87 0.08 1.91 -0.28 3.06 -0.8 2.75 
+-1.24 2.45 -1.61 2.15 -1.9 1.82 -2.13 1.5 -2.26 1.16 -2.36 0.85 -20.21 5.4 -3.52 1.84 
+-1.2 0.85 -0.84 0.91 -0.61 0.98 -0.35 1.11 -0.24 2.86 0.28 2.39 0.82 2.06 1.28 1.79 
+1.72 1.47 2.06 1.15 2.36 0.83 2.61 0.5 2.8 0.17 3.64 -0.26 3.17 -0.7 2.71 -1.15 
+2.21 -1.5 1.74 -1.84 1.24 -2.14 0.76 -2.41 0.26 -2.61 8.07 0 f*
+1531.05 1441.3 11.24 0 18.43 -54.88 18.42 54.88 11.22 0 0 -62.98 -7.64 0 0 52.62 
+-17.97 -52.62 -8.53 0 -17.53 52.62 0 -52.62 -7.64 0 0 62.98 f*
+1621.38 1439.5 4.94 0 0 -61.17 -7.64 0 0 43.64 -13.47 0 0 5.38 5.42 0.65 
+2.45 0.52 2.24 0.87 1.97 1.37 1.67 2.04 1.39 2.87 1.02 3.84 f*
+1648.33 1399 20.6836 6.31641 re
+f*
+1730.55 1421.5 -1.28 5.14 -0.85 2.28 -0.98 2.08 -1.11 1.87 -1.23 1.69 -1.37 1.52 -1.49 1.32 
+-1.61 1.17 -1.76 0.98 -1.87 0.83 -2 0.67 -4.34 0.87 -4.82 0.28 -3.3 -0.18 -3.09 -0.48 
+-2.93 -0.75 -2.71 -1.07 -2.54 -1.34 -2.32 -1.61 -2.15 -1.85 -1.93 -2.08 -1.73 -2.3 -1.52 -2.49 
+-1.3 -2.72 -1.09 -2.88 -0.89 -3.06 -0.65 -3.21 -0.41 -3.34 -0.22 -3.49 0.15 -3.93 0.43 -3.7 
+0.69 -3.43 0.96 -3.19 1.2 -2.95 1.41 -2.7 1.65 -2.45 1.82 -2.19 2.04 -1.93 2.21 -1.69 
+2.36 -1.43 2.52 -1.17 2.64 -0.91 2.8 -0.65 2.89 -0.39 2.99 -0.13 3.23 0.13 2.97 0.37 
+2.73 0.63 2.49 0.82 2.28 1.06 2.04 1.24 1.82 1.45 1.63 1.61 1.41 1.76 1.21 1.91 
+1.05 2.04 0.87 2.15 1.24 4.63 0.63 4.95 -8.09 0 -0.82 -4.37 -1.15 -3.69 -1.52 -3.04 
+-1.89 -2.41 -2.32 -1.82 -2.78 -1.26 -3.28 -0.74 -3.75 -0.24 -2.61 0.13 -2.43 0.39 -2.21 0.63 
+-2.06 0.85 -1.87 1.06 -1.7 1.26 -1.52 1.47 -1.34 1.63 -1.2 1.82 -1 1.98 -0.84 2.11 
+-0.7 2.26 -0.91 4.84 -0.3 5.23 0.11 2.95 0.3 2.8 0.5 2.62 0.67 2.48 0.87 2.28 
+1 2.11 1.19 1.93 1.3 1.74 1.48 1.54 1.58 1.37 1.7 1.15 1.82 0.95 1.91 0.76 
+2 0.54 2.08 0.32 2.17 0.11 3.13 -0.24 2.93 -0.67 2.71 -1.11 2.41 -1.52 2.04 -1.93 
+1.63 -2.32 1.15 -2.67 0.63 -3.04 8.07 0 f*
+1759.77 1441.3 10.33 0 22.03 -62.98 -8.98 0 -6.3 18.44 -24.71 0 -6.3 -18.44 -8.98 0 
+19.77 53.96 8.09 0 -10.33 -28.34 20.21 0 -9.88 28.34 -8.09 0 3.15 9.01 f*
+1799.76 1441.3 11.22 0 18.42 -54.88 18.42 54.88 11.24 0 0 -62.98 -7.64 0 0 52.62 
+-17.97 -52.62 -8.55 0 -17.51 52.62 0 -52.62 -7.64 0 0 62.98 f*
+1874.35 1439.5 31.9 0 0 -7.21 -25.61 0 -2.26 -17.54 2.22 1.59 2.62 1.28 3.13 0.87 
+3.71 0.3 3.16 -0.26 3.28 -0.81 3.23 -1.43 1.54 -0.98 1.48 -1.12 1.39 -1.33 1.26 -1.5 
+1.13 -1.69 0.98 -1.89 0.78 -2.08 0.61 -2.32 0.37 -2.52 0.13 -2.76 -0.34 -4.32 -1 -4.06 
+-0.76 -1.93 -0.91 -1.82 -1.09 -1.7 -1.24 -1.58 -1.41 -1.46 -1.57 -1.3 -1.73 -1.13 -1.91 -0.95 
+-2.04 -0.79 -2.21 -0.57 -2.38 -0.34 -2.52 -0.11 -4.54 0.35 -2.02 0.41 -1.87 0.59 -1.69 0.71 
+-1.54 0.85 -2.67 2.11 -2.14 2.52 -1.67 2.91 -1.24 3.21 -0.84 3.46 7.64 0 0.78 -2.26 
+0.97 -2.02 1.22 -1.78 1.41 -1.5 1.61 -1.19 1.84 -0.87 2.04 -0.56 2.26 -0.18 3.03 0.24 
+2.74 0.7 2.38 1.15 2 1.63 1.61 2.08 1.2 2.56 0.71 3.02 0.25 3.47 -0.19 2.56 
+-0.59 2.54 -1 2.43 -1.43 2.19 -1.86 1.91 -2.32 1.48 -2.8 0.95 -3.27 0.35 -1.74 -0.09 
+-1.54 -0.26 -1.41 -0.45 -1.32 -0.61 -2.65 -1.82 -3.04 -2.62 -6.73 0 4.5 33.29 f*
+1408.4 1519.36 -26.52 0 0 -7.2 18.88 0 0 -4.04 -0.35 -3.06 -1.02 -3.02 -1.67 -2.86 
+-2.23 -2.58 -2.8 -2.2 -1.59 -0.91 -1.71 -0.76 -1.82 -0.58 -1.93 -0.43 -2.06 -0.21 -2.12 -0.02 
+-2.84 0.13 -2.64 0.41 -2.43 0.68 -2.23 0.89 -2.02 1.13 -1.84 1.34 -1.65 1.52 -1.48 1.72 
+-1.26 1.86 -1.11 2.02 -0.91 2.17 -0.76 2.25 -0.98 4.84 -0.33 5.12 0.13 2.8 0.32 2.67 
+0.54 2.54 0.76 2.38 0.93 2.24 1.11 2.06 1.28 1.91 1.46 1.74 1.58 1.56 1.71 1.36 
+1.87 1.18 1.95 0.98 2.09 0.78 2.17 0.54 2.25 0.35 2.32 0.11 2.21 -0.13 2.54 -0.45 
+2.69 -0.81 2.66 -1.25 2.5 -1.71 2.17 -2.28 0.91 -1.34 0.79 -1.52 0.61 -1.69 0.43 -1.84 
+8.55 0 -0.63 2.67 -1.23 3.15 -1.93 3.36 -1.24 1.67 -1.43 1.63 -1.65 1.56 -1.84 1.46 
+-2.09 1.32 -2.3 1.15 -2.56 0.95 -2.8 0.72 -3.04 0.45 -3.32 0.15 -3.45 -0.15 -3.28 -0.48 
+-3.1 -0.79 -2.91 -1.06 -2.71 -1.32 -2.52 -1.59 -2.3 -1.85 -2.09 -2.06 -1.87 -2.28 -1.65 -2.47 
+-1.41 -2.67 -1.15 -2.84 -0.93 -3 -0.65 -3.17 -0.41 -3.28 -0.13 -3.41 0.15 -4.23 0.46 -3.91 
+0.73 -3.62 1.02 -3.3 1.28 -3.02 1.52 -2.73 1.73 -2.43 1.98 -2.17 2.15 -1.89 2.36 -1.62 
+2.52 -1.34 2.67 -1.11 2.82 -0.85 2.93 -0.58 3.06 -0.37 3.17 -0.11 2.25 0.11 2.41 0.34 
+2.5 0.63 2.54 0.93 2.58 1.28 2.56 1.63 2.5 2.04 2.43 2.47 1.8 -7.64 5.38 0 
+0 33.29 f*
+1423.22 1486.07 8.09375 62.9766 re
+f*
+1490.62 1530.6 -0.12 2.39 -0.37 2.19 -0.59 2.06 -0.8 1.89 -1 1.75 -1.2 1.59 -1.36 1.43 
+-1.52 1.29 -1.67 1.13 -1.8 0.95 -3.97 1.5 -4.34 0.89 -4.63 0.3 -5.33 -0.35 -2.41 -0.43 
+-2.19 -0.59 -2.04 -0.74 -1.84 -0.89 -1.65 -1.02 -1.47 -1.16 -1.3 -1.3 -1.13 -1.39 -0.95 -1.52 
+-0.76 -1.62 -0.61 -1.74 -0.41 -1.82 -0.35 -3.88 0.22 -3.11 0.65 -2.62 0.98 -2.2 1.3 -1.8 
+1.54 -1.5 1.76 -1.23 1.88 -1.04 2 -0.91 20.22 -5.39 2.32 -0.89 1.93 -0.98 1.54 -1.04 
+1.24 -1.15 0.89 -1.21 0.61 -1.32 0.34 -1.39 0.11 -1.48 -0.18 -2.12 -0.59 -2.02 -1.04 -1.84 
+-1.56 -1.61 -2.16 -1.32 -2.8 -1 -3.54 -0.65 -4.29 -0.21 -4.37 0.32 -3.69 0.92 -3.04 1.41 
+-2.39 1.84 -1.82 2.2 -1.26 2.43 -0.74 2.59 -0.24 2.69 -8.07 0 0.09 -2.24 0.28 -2.16 
+0.47 -2.11 0.68 -1.98 0.89 -1.91 1.06 -1.78 1.29 -1.65 1.47 -1.52 1.67 -1.39 1.89 -1.24 
+2.11 -1.06 2.32 -0.89 2.52 -0.71 2.73 -0.52 2.95 -0.32 3.2 -0.11 2.93 0.11 2.76 0.28 
+2.56 0.48 2.37 0.63 2.17 0.8 2 0.96 1.8 1.08 1.61 1.24 1.43 1.34 1.23 1.46 
+1.05 1.56 0.84 1.65 0.65 1.71 0.48 1.8 0.28 1.87 0.11 1.93 -0.29 3.06 -0.8 2.76 
+-1.23 2.45 -1.61 2.13 -1.91 1.83 -2.13 1.49 -2.28 1.2 -2.34 0.82 -20.23 5.41 -3.51 1.84 
+-1.17 0.87 -0.87 0.89 -0.58 0.98 -0.37 1.13 -0.21 2.84 0.28 2.39 0.83 2.08 1.28 1.78 
+1.71 1.46 2.06 1.15 2.37 0.82 2.6 0.5 2.8 0.17 3.63 -0.24 3.19 -0.71 2.69 -1.13 
+2.24 -1.52 1.73 -1.84 1.24 -2.15 0.75 -2.39 0.24 -2.62 8.09 0 f*
+1548.13 1530.6 -0.13 2.39 -0.35 2.19 -0.61 2.06 -0.8 1.89 -1 1.75 -1.2 1.59 -1.37 1.43 
+-1.52 1.29 -1.67 1.13 -1.8 0.95 -3.97 1.5 -4.34 0.89 -4.6 0.3 -5.36 -0.35 -2.39 -0.43 
+-2.21 -0.59 -2.04 -0.74 -1.82 -0.89 -1.67 -1.02 -1.48 -1.16 -1.3 -1.3 -1.13 -1.39 -0.93 -1.52 
+-0.78 -1.62 -0.61 -1.74 -0.41 -1.82 -0.35 -3.88 0.24 -3.11 0.63 -2.62 0.98 -2.2 1.3 -1.8 
+1.57 -1.5 1.73 -1.23 1.91 -1.04 1.97 -0.91 20.23 -5.39 2.32 -0.89 1.93 -0.98 1.56 -1.04 
+1.22 -1.15 0.89 -1.21 0.61 -1.32 0.35 -1.39 0.11 -1.48 -0.17 -2.12 -0.59 -2.02 -1.04 -1.84 
+-1.56 -1.61 -2.15 -1.32 -2.82 -1 -3.53 -0.65 -4.3 -0.21 -4.36 0.32 -3.69 0.92 -3.02 1.41 
+-2.41 1.84 -1.82 2.2 -1.25 2.43 -0.74 2.59 -0.24 2.69 -8.07 0 0.08 -2.24 0.29 -2.16 
+0.48 -2.11 0.7 -1.98 0.87 -1.91 1.07 -1.78 1.28 -1.65 1.48 -1.52 1.7 -1.39 1.88 -1.24 
+2.09 -1.06 2.32 -0.89 2.52 -0.71 2.74 -0.52 2.97 -0.32 3.17 -0.11 2.93 0.11 2.76 0.28 
+2.56 0.48 2.37 0.63 2.19 0.8 1.97 0.96 1.8 1.08 1.61 1.24 1.43 1.34 1.24 1.46 
+1.04 1.56 0.85 1.65 0.67 1.71 0.48 1.8 0.29 1.87 0.08 1.93 -0.28 3.06 -0.8 2.76 
+-1.24 2.45 -1.61 2.13 -1.9 1.83 -2.13 1.49 -2.28 1.2 -2.34 0.82 -20.21 5.41 -3.54 1.84 
+-1.17 0.87 -0.87 0.89 -0.58 0.98 -0.35 1.13 -0.24 2.84 0.29 2.39 0.82 2.08 1.29 1.78 
+1.71 1.46 2.06 1.15 2.37 0.82 2.61 0.5 2.8 0.17 3.64 -0.24 3.17 -0.71 2.69 -1.13 
+2.23 -1.52 1.74 -1.84 1.23 -2.15 0.76 -2.39 0.24 -2.62 8.09 0 f*
+1557.57 1506.77 20.6641 6.29297 re
+f*
+1590.37 1549.04 43.59 0 0 -7.18 -35.5 0 0 -20.24 34.16 0 0 -7.21 ^ 
+0 -21.14 36.84 0 0 -7.21 -44.94 0 0 62.98 f*
+1644.29 1526.11 7.64 0 0.2 3.08 0.56 2.78 0.98 2.45 1.34 2.11 1.76 1.69 2.16 1.24 
+2.59 0.78 2.99 0.28 2.3 -0.21 2.17 -0.61 1.97 -1 1.76 -1.34 1.43 -1.67 1.11 -2 
+0.7 -2.3 0.24 -2.56 -0.22 -2.62 -0.63 -2.17 -1.06 -1.87 -1.52 -1.67 -1.95 -1.59 -2.39 -1.61 
+-6.16 -3.77 -5.21 -3.06 -4.25 -3.08 -3.37 -3.14 -2.55 -3.26 -1.85 -3.43 -1.21 -3.59 -0.67 -3.82 
+-0.2 -4.08 40.89 0 0 7.21 -32.36 0 0.8 2.75 1.11 2.3 1.46 1.96 1.8 1.75 
+2.26 1.67 2.69 1.7 6.96 4.05 4.04 2 3.34 2.24 2.73 2.45 2.13 2.61 1.59 2.69 
+1.08 2.76 0.63 2.78 0.2 2.74 -0.11 1.91 -0.3 1.83 -0.5 1.73 -0.67 1.65 -0.85 1.54 
+-1 1.43 -2.41 2.56 -2.95 2.06 -3.34 1.54 -3.71 0.96 -3.93 0.35 -4.23 -0.33 -3.87 -0.95 
+-1.78 -0.73 -1.67 -0.89 -1.54 -1.04 -1.41 -1.24 -1.29 -1.39 -1.13 -1.56 -0.97 -1.74 -0.83 -1.91 
+-0.65 -2.09 -0.48 -2.26 -0.3 -2.43 -0.09 -2.61 f*
+1691.93 1506.77 20.6602 6.29297 re
+f*
+1724.71 1549.04 31.01 0 3.19 -0.26 3.15 -0.82 2.95 -1.34 2.67 -1.89 2.26 -2.41 0.95 -1.41 
+0.8 -1.54 0.65 -1.65 0.5 -1.8 0.28 -1.91 0.11 -2.04 -0.18 -2.58 -0.5 -2.34 -0.82 -2.11 
+-1.13 -1.91 -1.48 -1.74 -1.78 -1.54 -2.06 -1.39 -2.39 -1.26 2.95 -1.35 2.18 -1.65 1.52 -1.95 
+1 -2.24 0.57 -2.5 0.26 -2.71 0.06 -6.05 0.39 -4.28 0.63 -2.97 0.5 -1.11 0.63 -0.93 
+0.84 -0.8 1.07 -0.7 0 -1.8 -9.89 0 -1.04 2.73 -0.52 2.99 -0.2 4.52 -0.04 7.31 
+-0.2 2.34 -0.56 1.98 -0.89 1.63 -1.16 1.3 -1.37 0.98 -1.52 0.69 -1.61 0.39 -1.7 0.13 
+-22 0 0 -27 -8.1 0 0 55.79 ^ 0 -21.59 22 0 2.11 0.16 
+1.91 0.46 1.7 0.78 1.43 1.13 1.17 1.5 0.85 1.86 0.54 2.26 0.2 2.65 -0.2 2.54 
+-0.54 2.19 -0.91 1.84 -1.21 1.52 -1.55 1.2 -1.84 0.84 -2.14 0.5 -2.39 0.17 -29.21 0 
+0 7.18 f*
+1777.73 1470.77 51.6719 4.0625 re
+f*
+1884.68 1529.25 -1.28 5.16 -0.85 2.26 -0.97 2.09 -1.11 1.88 -1.23 1.7 -1.37 1.5 -1.5 1.34 
+-1.63 1.15 -1.73 1 -1.86 0.82 -2 0.65 -4.36 0.87 -4.82 0.29 -3.28 -0.15 -3.1 -0.48 
+-2.91 -0.79 -2.71 -1.06 -2.54 -1.34 -2.34 -1.59 -2.13 -1.84 -1.93 -2.09 -1.73 -2.3 -1.52 -2.52 
+-1.3 -2.71 -1.11 -2.88 -0.87 -3.04 -0.66 -3.21 -0.43 -3.36 -0.19 -3.49 0.15 -3.91 0.41 -3.69 
+0.69 -3.45 0.96 -3.19 1.19 -2.93 1.43 -2.71 1.63 -2.43 1.84 -2.19 2.04 -1.96 2.2 -1.67 
+2.39 -1.43 2.52 -1.17 2.64 -0.93 2.78 -0.65 2.89 -0.39 3 -0.13 3.23 0.13 2.99 0.39 
+2.73 0.61 2.5 0.84 2.28 1.05 2.04 1.26 1.82 1.43 1.61 1.61 1.43 1.76 1.21 1.91 
+1.04 2.04 0.87 2.17 1.24 4.62 0.61 4.93 -8.07 0 -0.82 -4.36 -1.17 -3.69 -1.5 -3.04 
+-1.91 -2.41 -2.32 -1.8 -2.78 -1.28 -3.26 -0.72 -3.78 -0.24 -2.61 0.13 -2.41 0.37 -2.24 0.63 
+-2.04 0.84 -1.87 1.07 -1.7 1.28 -1.52 1.46 -1.34 1.65 -1.2 1.8 -1.02 1.97 -0.85 2.11 
+-0.69 2.26 -0.89 4.84 -0.3 5.23 0.11 2.97 0.3 2.8 0.5 2.63 0.67 2.45 0.85 2.28 
+1.02 2.11 1.17 1.93 1.33 1.73 1.45 1.57 1.59 1.34 1.71 1.15 1.8 0.98 1.91 0.74 
+2.02 0.54 2.09 0.33 2.15 0.11 3.12 -0.21 2.96 -0.7 2.71 -1.11 2.39 -1.52 2.04 -1.93 
+1.63 -2.3 1.17 -2.7 0.61 -3.04 8.1 0 f*
+1947.13 1529.25 -1.28 5.16 -0.84 2.26 -0.98 2.09 -1.11 1.88 -1.24 1.7 -1.37 1.5 -1.5 1.34 
+-1.62 1.15 -1.73 1 -1.89 0.82 -1.97 0.65 -4.37 0.87 -4.82 0.29 -3.28 -0.15 -3.1 -0.48 
+-2.91 -0.79 -2.71 -1.06 -2.54 -1.34 -2.34 -1.59 -2.13 -1.84 -1.93 -2.09 -1.74 -2.3 -1.52 -2.52 
+-1.3 -2.71 -1.11 -2.88 -0.87 -3.04 -0.65 -3.21 -0.43 -3.36 -0.2 -3.49 0.16 -3.91 0.41 -3.69 
+0.7 -3.45 0.96 -3.19 1.19 -2.93 1.43 -2.71 1.63 -2.43 1.84 -2.19 2.04 -1.96 2.19 -1.67 
+2.39 -1.43 2.52 -1.17 2.65 -0.93 2.78 -0.65 2.88 -0.39 3 -0.13 3.23 0.13 3 0.39 
+2.73 0.61 2.5 0.84 2.25 1.05 2.06 1.26 1.82 1.43 1.61 1.61 1.43 1.76 1.22 1.91 
+1.04 2.04 0.87 2.17 1.24 4.62 0.61 4.93 -8.08 0 -0.82 -4.36 -1.17 -3.69 -1.5 -3.04 
+-1.91 -2.41 -2.32 -1.8 -2.78 -1.28 -3.25 -0.72 -3.78 -0.24 -2.61 0.13 -2.41 0.37 -2.24 0.63 
+-2.04 0.84 -1.87 1.07 -1.69 1.28 -1.52 1.46 -1.37 1.65 -1.17 1.8 -1.02 1.97 -0.85 2.11 
+-0.7 2.26 -0.91 4.84 -0.29 5.23 0.11 2.97 0.3 2.8 0.48 2.63 0.7 2.45 0.84 2.28 
+1.02 2.11 1.17 1.93 1.33 1.73 1.45 1.57 1.59 1.34 1.71 1.15 1.8 0.98 1.91 0.74 
+2.02 0.54 2.08 0.33 2.15 0.11 3.13 -0.21 2.95 -0.7 2.69 -1.11 2.41 -1.52 2.04 -1.93 
+1.63 -2.3 1.17 -2.7 0.61 -3.04 8.09 0 f*
+1059.7 2759.66 21.68 0 35.53 -105.86 35.53 105.86 21.66 0 0 -121.48 -14.73 0 0 101.52 
+-34.66 -101.52 -16.45 0 -33.81 101.52 0 -101.52 -14.73 0 0 121.48 f*
+1231.29 2728.41 4.01 -0.24 3.91 -0.73 3.8 -1.2 3.64 -1.61 3.47 -2.04 3.3 -2.41 3.06 -2.78 
+2.84 -3.09 2.6 -3.4 2.32 -3.69 2.02 -3.93 1.69 -4.17 1.37 -4.36 1 -4.56 0.61 -4.68 
+0.2 -4.84 -0.2 -4.82 -0.61 -4.67 -1 -4.49 -1.37 -4.32 -1.69 -4.1 -2.02 -3.86 -2.32 -3.61 
+-2.6 -3.32 -2.84 -3.02 -3.06 -2.7 -3.3 -2.34 -3.47 -1.96 -3.64 -1.56 -3.8 -1.15 -3.91 -0.72 
+-4.01 -0.24 -4.02 0.24 -3.93 0.72 -3.8 1.15 -3.62 1.56 -3.5 1.96 -3.28 2.34 -3.08 2.7 
+-2.84 3.02 -2.59 3.32 -2.32 3.61 -2.02 3.86 -1.7 4.1 -1.37 4.32 -1 4.49 -0.61 4.67 
+-0.21 4.82 14.73 0 0.11 -3.38 0.33 -3.3 0.54 -3.19 0.76 -3.1 0.96 -2.93 1.15 -2.8 
+1.35 -2.62 1.52 -2.41 1.71 -2.21 1.89 -1.98 2.08 -1.71 2.23 -1.45 2.39 -1.17 2.56 -0.85 
+2.69 -0.54 2.86 -0.17 2.85 0.17 2.71 0.54 2.54 0.85 2.4 1.17 2.24 1.45 2.06 1.71 
+1.89 1.98 1.71 2.21 1.54 2.41 1.34 2.62 1.15 2.8 0.95 2.93 0.74 3.1 0.54 3.19 
+0.35 3.3 0.11 3.38 -0.11 3.41 -0.35 3.32 -0.54 3.26 -0.74 3.15 -0.95 3 -1.15 2.86 
+-1.34 2.72 -1.54 2.49 -1.71 2.28 -1.89 2.06 -2.06 1.8 -2.24 1.52 -2.4 1.22 -2.54 0.89 
+-2.71 0.56 -2.85 0.2 -2.86 -0.2 -2.69 -0.56 -2.56 -0.89 -2.39 -1.22 -2.23 -1.52 -2.08 -1.8 
+-1.89 -2.06 -1.71 -2.28 -1.52 -2.49 -1.35 -2.72 -1.15 -2.86 -0.96 -3 -0.76 -3.15 -0.54 -3.26 
+-0.33 -3.32 -0.11 -3.41 -14.73 0 0.21 4.84 0.61 4.68 1 4.56 1.37 4.36 1.7 4.17 
+2.02 3.93 2.32 3.69 2.59 3.4 2.84 3.09 3.08 2.78 3.28 2.41 3.5 2.04 3.63 1.61 
+3.8 1.2 3.93 0.73 4.02 0.24 f*
+1290.21 2725.82 13 0 0 -13.89 3.61 4.45 3.67 3.63 3.69 2.86 3.67 2.2 3.62 1.56 
+3.56 1.04 3.45 0.57 3.34 0.17 2.45 -0.09 2.45 -0.3 4.91 -1.15 2.37 -0.87 2.3 -1.02 
+2.2 -1.17 2.06 -1.34 1.91 -1.5 1.74 -1.64 1.54 -1.8 1.31 -1.91 1.06 -2.04 0.79 -2.17 
+0.5 -2.28 0.15 -2.39 0 -68.55 -13.84 0 0 62.48 -0.13 1.89 -0.34 1.74 -0.55 1.61 
+-0.74 1.47 -0.91 1.32 -1.04 1.21 -2.48 2.04 -2.84 1.54 -3.04 1.09 -3.13 0.63 -3.02 0.22 
+-2.13 -0.13 -2.1 -0.34 -2.11 -0.61 -2.06 -0.8 -2.02 -1.05 -1.93 -1.24 -1.84 -1.45 -1.74 -1.65 
+-1.58 -1.85 -1.46 -2.04 -1.28 -2.21 -1.09 -2.38 -0.87 -2.55 -0.65 -2.71 -0.41 -2.88 -0.13 -3.02 
+0 -50.33 -13.87 0 0 87.65 f*
+1385.53 2749.24 13.87 0 0 -23.41 13.87 0 0 -11.29 ^ 0 -62.48 0.11 -1.37 
+0.29 -1.13 0.45 -0.96 0.58 -0.78 0.74 -0.61 0.85 -0.48 1.97 -0.55 2.22 -0.15 2.3 0.15 
+4.36 0.66 0 -11.29 -2.26 -0.63 -2.84 -0.56 -3.3 -0.39 -3.73 -0.15 -3.14 0.46 -2.96 0.71 
+-2.64 1 -2.3 1.3 -1.91 1.63 -1.43 1.97 -0.89 2.34 -0.32 2.73 0 68.55 -12.13 0 
+0 11.29 ^ 0 23.41 f*
+1429.73 2759.66 13.87 0 0 -45.98 4.16 4.62 4.05 3.54 3.89 2.6 3.69 1.83 3.45 1.15 
+3.17 0.65 2.84 0.3 2.45 0.05 2.61 -0.11 2.54 -0.35 2.49 -0.56 2.41 -0.79 2.34 -0.96 
+2.22 -1.12 2.08 -1.28 1.95 -1.43 1.79 -1.59 1.61 -1.67 1.41 -1.8 1.2 -1.89 0.95 -1.96 
+0.7 -2.02 0.44 -2.06 0.15 -2.11 0 -68.55 -13.87 0 0 63.34 -0.29 2.09 -0.84 2.28 
+-1.43 2.32 -1.98 2.21 -2.56 1.97 -3.12 1.59 -1.78 0.59 -1.93 0.45 -2.06 0.29 -2.2 0.11 
+-2.41 -0.15 -2.3 -0.43 -2.2 -0.71 -2.11 -0.93 -1.97 -1.2 -1.87 -1.39 -1.71 -1.56 -1.59 -1.75 
+-1.43 -1.91 -1.25 -2.04 -1.09 -2.15 -0.91 -2.23 -0.73 -2.32 -0.52 -2.39 -0.33 -2.41 -0.11 -2.45 
+0 -51.2 -13.87 0 0 121.48 f*
+1522.44 2638.17 13.8672 121.484 re
+f*
+1551.04 2725.82 15.6 0 21.66 -67.68 24.26 67.68 15.6 0 -40.73 -110.2 -2.88 -4.6 -2.82 -3.43 
+-2.8 -2.47 -2.76 -1.65 -2.75 -1 -2.8 -0.52 -2.82 -0.2 -2.88 -0.02 -1.71 0.02 -1.54 0.2 
+-1.87 0.52 -2.67 1 0 12.15 2.63 -0.61 2.64 -0.39 2.61 -0.09 2.52 0.33 2.34 0.84 
+2.13 1.5 0.95 1.02 0.87 1.22 0.8 1.45 0.7 1.65 5.21 14.75 -29.47 88.52 f*
+1777.21 2724.09 -0.24 4.55 -0.71 4.25 -1.13 3.97 -1.54 3.64 -1.95 3.36 -2.29 3.06 -2.64 2.76 
+-2.93 2.48 -3.23 2.17 -3.47 1.89 -3.73 1.59 -3.91 1.28 -4.12 1.02 -4.25 0.72 -4.41 0.41 
+-4.52 0.16 -5.34 -0.17 -4.97 -0.5 -4.62 -0.83 -4.25 -1.13 -3.91 -1.43 -3.56 -1.71 -3.19 -1.98 
+-2.87 -2.23 -2.5 -2.47 -2.16 -2.71 -1.83 -2.93 -1.5 -3.12 -1.15 -3.34 -0.83 -3.52 -0.5 -3.67 
+-0.16 -3.82 0.11 -3.12 0.32 -2.89 0.52 -2.62 0.7 -2.43 0.87 -2.19 1.04 -2.02 1.2 -1.82 
+1.3 -1.67 2.99 -2.89 3.39 -2.39 3.64 -1.99 3.84 -1.74 39 -10.41 4.49 -1.69 3.71 -1.89 
+2.99 -2.02 2.35 -2.22 1.74 -2.34 1.17 -2.54 0.67 -2.67 0.21 -2.84 -0.35 -4.14 -0.46 -1.97 
+-0.67 -1.91 -0.87 -1.8 -1.13 -1.71 -1.39 -1.63 -1.65 -1.48 -1.93 -1.37 -2.23 -1.2 -2.54 -1.06 
+-2.87 -0.89 -3.23 -0.72 -3.58 -0.52 -3.95 -0.32 -4.36 -0.11 -4.37 0.15 -4.05 0.48 -3.71 0.74 
+-3.39 1.02 -3.06 1.26 -2.78 1.48 -2.46 1.7 -2.19 1.87 -1.89 2.02 -1.61 2.17 -1.34 2.3 
+-1.08 2.41 -0.83 2.47 -0.59 2.54 -0.35 2.58 -0.11 2.58 -15.61 0 0.2 -4.32 0.54 -4.19 
+0.93 -4.04 1.3 -3.84 1.69 -3.64 2.06 -3.43 2.45 -3.2 2.84 -2.95 3.26 -2.67 3.64 -2.37 
+4.04 -2.06 4.47 -1.74 4.86 -1.37 5.27 -1.02 5.7 -0.61 6.13 -0.22 5.66 0.2 5.32 0.57 
+4.93 0.89 4.57 1.24 4.19 1.56 3.84 1.82 3.47 2.11 3.13 2.37 2.73 2.6 2.37 2.8 
+2.02 3.02 1.65 3.18 1.29 3.34 0.91 3.47 0.54 3.61 0.2 3.71 -0.15 3.02 -0.41 2.86 
+-0.65 2.73 -0.89 2.58 -1.09 2.46 -1.3 2.28 -1.48 2.14 -1.62 1.98 -1.78 1.84 -1.89 1.67 
+-4.1 2.91 -4.38 2.26 -4.52 1.63 -38.99 10.42 -3.8 1.84 -3 1.7 -2.28 1.67 -1.65 1.73 
+-1.15 1.89 -0.7 2.15 -0.35 2.52 -0.08 2.97 0.13 2.39 0.42 2.21 0.67 2.09 0.91 1.93 
+1.13 1.8 1.34 1.63 1.56 1.5 1.74 1.32 1.91 1.19 2.09 1.02 2.21 0.89 2.34 0.71 
+5.01 0.95 5.4 0.33 3.63 -0.11 3.39 -0.37 3.19 -0.56 2.93 -0.8 2.73 -1 2.48 -1.17 
+2.26 -1.39 2.04 -1.54 1.78 -1.7 1.57 -1.87 1.32 -2 1.09 -2.15 0.85 -2.26 0.61 -2.36 
+0.37 -2.45 0.11 -2.56 15.6 0 f*
+1799.74 2725.82 13 0 0 -13.89 3.6 4.45 3.67 3.63 3.69 2.86 3.67 2.2 3.62 1.56 
+3.56 1.04 3.45 0.57 3.34 0.17 2.45 -0.09 2.47 -0.3 4.88 -1.15 2.37 -0.87 2.3 -1.02 
+2.19 -1.17 2.06 -1.34 1.91 -1.5 1.74 -1.64 1.54 -1.8 1.3 -1.91 1.07 -2.04 0.78 -2.17 
+0.5 -2.28 0.16 -2.39 0 -68.55 -13.84 0 0 62.48 -0.13 1.89 -0.34 1.74 -0.55 1.61 
+-0.74 1.47 -0.91 1.32 -1.04 1.21 -2.48 2.04 -2.84 1.54 -3.04 1.09 -3.13 0.63 -3.02 0.22 
+-2.13 -0.13 -2.11 -0.34 -2.1 -0.61 -2.07 -0.8 -2.02 -1.05 -1.93 -1.24 -1.85 -1.45 -1.73 -1.65 
+-1.58 -1.85 -1.45 -2.04 -1.28 -2.21 -1.09 -2.38 -0.87 -2.55 -0.65 -2.71 -0.41 -2.88 -0.13 -3.02 
+0 -50.33 -13.87 0 0 87.65 f*
+1926.26 2728.41 4.01 -0.24 3.91 -0.73 3.8 -1.2 3.64 -1.61 3.47 -2.04 3.3 -2.41 3.08 -2.78 
+2.84 -3.09 2.58 -3.4 2.32 -3.69 2.02 -3.93 1.7 -4.17 1.37 -4.36 1 -4.56 0.61 -4.68 
+0.21 -4.84 -0.21 -4.82 -0.61 -4.67 -1 -4.49 -1.37 -4.32 -1.7 -4.1 -2.02 -3.86 -2.32 -3.61 
+-2.58 -3.32 -2.84 -3.02 -3.08 -2.7 -3.3 -2.34 -3.47 -1.96 -3.64 -1.56 -3.8 -1.15 -3.91 -0.72 
+-4.01 -0.24 -4.02 0.24 -3.93 0.72 -3.78 1.15 -3.64 1.56 -3.47 1.96 -3.3 2.34 -3.08 2.7 
+-2.84 3.02 -2.58 3.32 -2.32 3.61 -2.02 3.86 -1.7 4.1 -1.37 4.32 -1 4.49 -0.61 4.67 
+-0.21 4.82 14.73 0 0.11 -3.38 0.32 -3.3 0.54 -3.19 0.76 -3.09 0.95 -2.95 1.15 -2.8 
+1.34 -2.62 1.52 -2.41 1.72 -2.21 1.91 -1.98 2.07 -1.71 2.23 -1.45 2.39 -1.17 2.56 -0.85 
+2.69 -0.54 2.87 -0.17 2.84 0.17 2.71 0.54 2.56 0.85 2.38 1.17 2.24 1.45 2.06 1.71 
+1.88 1.98 1.71 2.21 1.54 2.41 1.35 2.62 1.15 2.8 0.96 2.95 0.75 3.09 0.55 3.19 
+0.32 3.3 0.11 3.38 -0.11 3.41 -0.32 3.32 -0.55 3.26 -0.75 3.15 -0.96 3 -1.15 2.86 
+-1.35 2.72 -1.54 2.49 -1.71 2.28 -1.88 2.06 -2.06 1.8 -2.24 1.52 -2.38 1.22 -2.56 0.89 
+-2.71 0.56 -2.84 0.2 -2.87 -0.2 -2.69 -0.56 -2.56 -0.89 -2.39 -1.22 -2.23 -1.52 -2.07 -1.8 
+-1.91 -2.06 -1.72 -2.28 -1.52 -2.49 -1.34 -2.72 -1.15 -2.86 -0.95 -3 -0.76 -3.15 -0.54 -3.26 
+-0.32 -3.32 -0.11 -3.41 -14.73 0 0.21 4.84 0.61 4.68 1 4.56 1.37 4.36 1.7 4.17 
+2.02 3.93 2.32 3.69 2.58 3.4 2.84 3.09 3.08 2.78 3.3 2.41 3.47 2.04 3.64 1.61 
+3.78 1.2 3.93 0.73 4.02 0.24 f*
+1974.79 2725.82 15.61 0 17.32 -66.82 17.34 66.82 15.6 0 17.32 -66.82 17.34 66.82 15.6 0 
+-25.13 -87.65 -15.61 0 -18.21 65.95 -16.45 -65.95 -15.61 0 -25.12 87.65 f*
+2249.48 2721.48 -1.11 5.16 -1.37 4.75 -1.62 4.39 -1.89 4.02 -2.13 3.62 -2.38 3.26 -2.65 2.93 
+-2.88 2.56 -3.13 2.23 -3.36 1.91 -3.61 1.58 -3.84 1.28 -4.08 0.98 -4.32 0.7 -4.53 0.41 
+-4.75 0.13 -6.34 -0.3 -5.97 -0.93 -5.62 -1.5 -5.25 -2.04 -4.88 -2.58 -4.49 -3.08 -4.12 -3.56 
+-3.73 -4.01 -3.34 -4.43 -2.93 -4.84 -2.52 -5.23 -2.11 -5.55 -1.7 -5.9 -1.26 -6.19 -0.82 -6.46 
+-0.39 -6.73 0.29 -7.57 0.82 -7.09 1.34 -6.64 1.82 -6.16 2.3 -5.66 2.75 -5.21 3.15 -4.71 
+3.56 -4.23 3.91 -3.73 4.25 -3.25 4.58 -2.76 4.86 -2.28 5.12 -1.76 5.36 -1.25 5.58 -0.76 
+5.77 -0.26 6.25 0.26 5.75 0.74 5.28 1.17 4.82 1.63 4.36 2.04 3.95 2.41 3.52 2.76 
+3.12 3.1 2.73 3.41 2.36 3.67 2 3.95 1.67 4.17 1.34 4.36 1.05 4.54 0.74 4.71 
+0.45 4.82 -15.61 0 -0.71 -4.38 -0.87 -4.04 -1.04 -3.71 -1.2 -3.41 -1.36 -3.06 -1.55 -2.78 
+-1.73 -2.47 -1.93 -2.17 -2.12 -1.89 -2.34 -1.62 -2.58 -1.35 -2.78 -1.08 -3.02 -0.82 -3.28 -0.59 
+-3.52 -0.34 -3.75 -0.11 -5.01 0.26 -4.67 0.71 -4.3 1.22 -3.95 1.63 -3.61 2.06 -3.28 2.45 
+-2.93 2.82 -2.61 3.16 -2.28 3.5 -1.96 3.8 -1.63 4.08 -1.34 4.32 -1.02 4.58 -0.74 4.77 
+-0.41 4.97 -0.15 5.11 0.2 5.71 0.58 5.39 0.96 5.07 1.32 4.73 1.65 4.41 1.95 4.08 
+2.28 3.71 2.54 3.34 2.82 2.99 3.03 2.63 3.3 2.21 3.5 1.84 3.69 1.46 3.86 1.04 
+4.02 0.63 4.17 0.21 3.04 -0.11 3 -0.32 2.89 -0.54 2.78 -0.76 2.69 -0.98 2.54 -1.17 
+2.39 -1.37 2.23 -1.58 2.06 -1.76 1.89 -1.95 1.68 -2.14 1.45 -2.3 1.24 -2.52 1 -2.67 
+0.74 -2.84 0.46 -2.99 15.6 0 f*
+2304.93 2728.41 4.03 -0.24 3.91 -0.73 3.8 -1.2 3.64 -1.61 3.47 -2.04 3.28 -2.41 3.08 -2.78 
+2.84 -3.09 2.6 -3.4 2.3 -3.69 2.02 -3.93 1.71 -4.17 1.34 -4.36 1 -4.56 0.63 -4.68 
+0.2 -4.84 -0.2 -4.82 -0.63 -4.67 -1 -4.49 -1.34 -4.32 -1.71 -4.1 -2.02 -3.86 -2.3 -3.61 
+-2.6 -3.32 -2.84 -3.02 -3.08 -2.7 -3.28 -2.34 -3.47 -1.96 -3.64 -1.56 -3.8 -1.15 -3.91 -0.72 
+-4.03 -0.24 -4.02 0.24 -3.91 0.72 -3.8 1.15 -3.64 1.56 -3.47 1.96 -3.28 2.34 -3.08 2.7 
+-2.84 3.02 -2.61 3.32 -2.3 3.61 -2.02 3.86 -1.71 4.1 -1.34 4.32 -1 4.49 -0.63 4.67 
+-0.2 4.82 14.71 0 0.14 -3.38 0.32 -3.3 0.54 -3.19 0.74 -3.09 0.95 -2.95 1.15 -2.8 
+1.34 -2.62 1.54 -2.41 1.71 -2.21 1.89 -1.98 2.06 -1.71 2.23 -1.45 2.41 -1.17 2.54 -0.85 
+2.71 -0.54 2.85 -0.17 2.86 0.17 2.71 0.54 2.54 0.85 2.41 1.17 2.24 1.45 2.06 1.71 
+1.89 1.98 1.71 2.21 1.54 2.41 1.35 2.62 1.15 2.8 0.95 2.95 0.73 3.09 0.54 3.19 
+0.33 3.3 0.11 3.38 -0.11 3.41 -0.33 3.32 -0.54 3.26 -0.73 3.15 -0.95 3 -1.15 2.86 
+-1.35 2.72 -1.54 2.49 -1.71 2.28 -1.89 2.06 -2.06 1.8 -2.24 1.52 -2.41 1.22 -2.54 0.89 
+-2.71 0.56 -2.86 0.2 -2.85 -0.2 -2.71 -0.56 -2.54 -0.89 -2.41 -1.22 -2.23 -1.52 -2.06 -1.8 
+-1.89 -2.06 -1.71 -2.28 -1.54 -2.49 -1.34 -2.72 -1.15 -2.86 -0.95 -3 -0.74 -3.15 -0.54 -3.26 
+-0.32 -3.32 -0.14 -3.41 -14.71 0 0.2 4.84 0.63 4.68 1 4.56 1.34 4.36 1.71 4.17 
+2.02 3.93 2.3 3.69 2.61 3.4 2.84 3.09 3.08 2.78 3.28 2.41 3.47 2.04 3.64 1.61 
+3.8 1.2 3.91 0.73 4.02 0.24 f*
+2354.34 2725.82 16.45 0 23.39 -69.43 23.39 69.43 16.47 0 -31.18 -87.65 -17.34 0 -31.19 87.65 f*
+2518.96 2665.08 -0.93 -4.08 -1.2 -3.75 -1.43 -3.43 -1.67 -3.15 -1.87 -2.84 -2.06 -2.56 -2.26 -2.28 
+-2.45 -1.99 -2.59 -1.74 -2.75 -1.47 -2.88 -1.24 -3 -1 -3.12 -0.75 -3.23 -0.54 -3.3 -0.31 
+-3.38 -0.11 -4.58 0.37 -4.3 0.76 -4.03 1.13 -3.78 1.52 -3.49 1.86 -3.19 2.21 -2.91 2.52 
+-2.62 2.86 -2.34 3.17 -2.02 3.45 -1.73 3.73 -1.43 4 -1.11 4.25 -0.8 4.49 -0.48 4.73 
+-0.17 4.93 0.3 7.14 0.84 6.43 1.37 5.75 1.79 5.12 2.19 4.54 2.52 3.95 2.82 3.43 
+3.02 2.93 3.21 2.45 3.32 2.02 3.39 1.63 3.41 1.24 3.34 0.91 3.25 0.63 3.08 0.35 
+2.89 0.09 -0.87 -13 -3.78 -0.37 -4.06 -1.15 -2.06 -0.89 -2.06 -1.08 -2.02 -1.29 -1.93 -1.52 
+-1.87 -1.74 -1.74 -1.97 -1.61 -2.22 -1.43 -2.43 -1.21 -2.7 -1 -2.93 -0.76 -3.19 -0.48 -3.45 
+51.13 0 -0.17 3.6 -0.54 3.3 -0.85 3 -1.15 2.73 -1.37 2.45 -1.58 2.21 -1.75 1.93 
+-1.89 1.71 -2 1.48 -2.06 1.24 -2.08 1.02 -2.08 0.83 -4.01 1.06 -3.58 0.34 0.87 13 
+2.99 -0.09 3.13 -0.37 3.19 -0.61 3.23 -0.95 3.21 -1.28 3.17 -1.67 3.05 -2.11 2.93 -2.56 
+2.76 -3.06 2.52 -3.6 2.23 -4.16 1.95 -4.78 1.59 -5.42 1.17 -6.12 0.74 -6.81 0.26 -7.6 
+-65 0 0.3 -4.53 0.98 -4.95 0.76 -2.54 0.97 -2.54 1.2 -2.47 1.43 -2.37 1.67 -2.26 
+1.91 -2.06 2.19 -1.87 2.5 -1.61 2.75 -1.32 3.09 -1 3.38 -0.63 3.73 -0.21 3.78 0.32 
+3.54 0.93 3.25 1.55 2.97 2.08 2.71 2.63 2.39 3.11 2.11 3.58 1.78 4.04 13.86 0 f*
+2539.78 2725.82 12.13 0 0 -16.49 2.69 3.8 2.58 3.28 2.45 2.8 2.34 2.34 2.24 1.93 
+2.11 1.56 2 1.2 1.89 0.89 1.78 0.58 1.65 0.35 1.56 0.13 1.45 -0.07 2.56 -0.54 
+2.15 -0.89 0 -13.02 -3.58 -0.26 -3.32 -0.48 -3.06 -0.65 -2.78 -0.87 -2.52 -1.05 -2.28 -1.25 
+-2.02 -1.43 -1.78 -1.61 -1.54 -1.8 -1.32 -1.98 -1.11 -2.17 -0.89 -2.32 -0.67 -2.52 -0.48 -2.67 
+-0.28 -2.84 -0.09 -3.02 0 -48.59 -13.87 0 0 87.65 f*
+2675.82 2759.66 19.92 0 42.47 -121.48 -17.34 0 -12.13 35.59 -47.66 0 -12.13 -35.59 -17.34 0 
+38.13 104.12 15.6 0 -19.92 -54.66 38.98 0 -19.05 54.66 -15.6 0 6.07 17.36 f*
+2752.08 2725.82 13 0 0 -13.89 3.6 4.45 3.67 3.63 3.67 2.86 3.66 2.2 3.64 1.56 
+3.56 1.04 3.45 0.57 3.32 0.17 2.46 -0.09 2.47 -0.3 4.91 -1.15 2.36 -0.87 2.3 -1.02 
+2.19 -1.17 2.06 -1.34 1.91 -1.5 1.74 -1.64 1.52 -1.8 1.32 -1.91 1.05 -2.04 0.8 -2.17 
+0.48 -2.28 0.18 -2.39 0 -68.55 -13.87 0 0 62.48 -0.11 1.89 -0.35 1.74 -0.54 1.61 
+-0.74 1.47 -0.91 1.32 -1.04 1.21 -2.47 2.04 -2.84 1.54 -3.06 1.09 -3.11 0.63 -3.02 0.22 
+-2.13 -0.13 -2.12 -0.34 -2.1 -0.61 -2.07 -0.8 -1.99 -1.05 -1.96 -1.24 -1.82 -1.45 -1.73 -1.65 
+-1.61 -1.85 -1.43 -2.04 -1.28 -2.21 -1.09 -2.38 -0.89 -2.55 -0.62 -2.71 -0.41 -2.88 -0.15 -3.02 
+0 -50.33 -13.85 0 0 87.65 f*
+2878.58 2728.41 4.04 -0.24 3.91 -0.73 3.8 -1.2 3.64 -1.61 3.47 -2.04 3.28 -2.41 3.08 -2.78 
+2.84 -3.09 2.61 -3.4 2.3 -3.69 2.02 -3.93 1.71 -4.17 1.34 -4.36 1 -4.56 0.63 -4.68 
+0.2 -4.84 -0.2 -4.82 -0.63 -4.67 -1 -4.49 -1.34 -4.32 -1.71 -4.1 -2.02 -3.86 -2.3 -3.61 
+-2.61 -3.32 -2.84 -3.02 -3.08 -2.7 -3.28 -2.34 -3.47 -1.96 -3.64 -1.56 -3.8 -1.15 -3.91 -0.72 
+-4.04 -0.24 -4.02 0.24 -3.91 0.72 -3.8 1.15 -3.64 1.56 -3.47 1.96 -3.28 2.34 -3.08 2.7 
+-2.84 3.02 -2.61 3.32 -2.3 3.61 -2.02 3.86 -1.71 4.1 -1.34 4.32 -1 4.49 -0.63 4.67 
+-0.2 4.82 14.71 0 0.13 -3.38 0.32 -3.3 0.54 -3.19 0.74 -3.09 0.95 -2.95 1.15 -2.8 
+1.35 -2.62 1.54 -2.41 1.72 -2.21 1.88 -1.98 2.07 -1.71 2.23 -1.45 2.41 -1.17 2.54 -0.85 
+2.71 -0.54 2.84 -0.17 2.86 0.17 2.71 0.54 2.54 0.85 2.41 1.17 2.21 1.45 2.08 1.71 
+1.89 1.98 1.71 2.21 1.54 2.41 1.35 2.62 1.15 2.8 0.95 2.95 0.74 3.09 0.54 3.19 
+0.32 3.3 0.11 3.38 -0.11 3.41 -0.32 3.32 -0.54 3.26 -0.74 3.15 -0.95 3 -1.15 2.86 
+-1.35 2.72 -1.54 2.49 -1.71 2.28 -1.89 2.06 -2.08 1.8 -2.21 1.52 -2.41 1.22 -2.54 0.89 
+-2.71 0.56 -2.86 0.2 -2.84 -0.2 -2.71 -0.56 -2.54 -0.89 -2.41 -1.22 -2.23 -1.52 -2.07 -1.8 
+-1.88 -2.06 -1.72 -2.28 -1.54 -2.49 -1.35 -2.72 -1.15 -2.86 -0.95 -3 -0.74 -3.15 -0.54 -3.26 
+-0.32 -3.32 -0.13 -3.41 -14.71 0 0.2 4.84 0.63 4.68 1 4.56 1.34 4.36 1.71 4.17 
+2.02 3.93 2.3 3.69 2.61 3.4 2.84 3.09 3.08 2.78 3.28 2.41 3.47 2.04 3.64 1.61 
+3.8 1.2 3.91 0.73 4.02 0.24 f*
+2938.39 2725.82 12.13 0 0 -13.02 3.45 4.14 3.3 3.41 3.19 2.71 3.17 2.11 3.19 1.5 
+3.32 1.02 3.49 0.57 3.73 0.15 3.19 -0.34 3.04 -0.48 2.93 -0.74 2.89 -1.13 2.82 -1.67 
+2.82 -2.34 2.82 -3.12 2.91 -4.04 3.49 3.82 3.38 3.1 3.28 2.43 3.28 1.82 3.26 1.28 
+3.27 0.85 3.39 0.43 3.5 0.13 4.32 -0.32 4.36 -1 2.15 -0.76 2.08 -0.93 2 -1.11 
+1.89 -1.28 1.76 -1.48 1.61 -1.67 1.41 -1.84 1.24 -2.04 0.98 -2.23 0.74 -2.43 0.46 -2.62 
+0.15 -2.82 0 -67.69 -13.84 0 0 62.48 -0.11 1.61 -0.28 1.57 -1.09 2.93 -1.65 2.64 
+-2.09 2.32 -2.41 1.89 -2.62 1.43 -2.71 0.91 -2.65 0.33 -1.8 -0.11 -1.82 -0.32 -3.64 -1.24 
+-3.5 -1.96 -3.21 -2.56 -2.75 -3.1 -1.17 -1.71 -1 -1.82 -0.8 -1.89 -0.59 -1.97 -0.39 -2.04 
+-0.13 -2.11 0 -57.27 -13.85 0 0 62.48 -0.11 1.61 -0.28 1.57 -1.09 2.93 -1.69 2.64 
+-2.15 2.32 -2.52 1.89 -2.78 1.43 -2.91 0.91 -2.95 0.33 -3.1 -0.42 -3.3 -1.15 -3.34 -1.82 
+-3.14 -2.47 -2.8 -3.04 -1.2 -1.71 -1.04 -1.85 -0.85 -1.93 -0.63 -2.06 -0.39 -2.15 -0.14 -2.23 
+0 -57.27 -13.86 0 0 87.65 f*
+3075.3 2699.79 0.11 2.61 0.35 2.6 0.58 2.59 0.83 2.54 1.11 2.48 1.37 2.36 1.63 2.24 
+1.93 2.13 2.21 1.93 2.54 1.78 2.82 1.54 3.17 1.32 3.47 1.08 3.84 0.78 4.16 0.5 
+4.54 0.15 4.91 -0.22 5.36 -0.71 5.49 -1.34 2.66 -0.93 2.58 -1.11 2.46 -1.32 2.23 -1.54 
+2.04 -1.78 1.76 -2.02 1.43 -2.26 1.09 -2.54 0.67 -2.8 0.24 -3.11 0 -55.53 0.3 -1.54 
+0.85 -1.35 1.23 -1.12 1.52 -0.87 1.7 -0.59 1.71 -0.26 1.65 0.06 1.43 0.46 0 -10.42 
+-1.71 -0.5 -1.63 -0.25 -5.32 -0.11 -3.76 0.11 -2.95 0.32 -2.25 0.63 -1.76 1 -1.39 1.45 
+-1.17 1.97 -1.11 2.56 -1.21 3.23 -7.37 -5.42 -3.2 -1.96 -3.08 -1.52 -3.15 -1.11 -3.43 -0.74 
+-3.86 -0.41 -4.5 -0.13 -3.88 0.15 -3.54 0.39 -3.19 0.67 -2.87 0.87 -2.56 1.11 -2.25 1.3 
+-2 1.47 -1.71 1.63 -1.46 1.79 -1.21 1.91 -1 2 -0.79 2.11 -0.58 2.16 -0.39 2.22 
+-0.3 4.53 13 0 0.32 -2.56 0.93 -2.41 1.52 -2.22 2.09 -1.93 2.62 -1.62 3.11 -1.21 
+3.58 -0.79 4.01 -0.28 3 0.28 2.82 0.46 2.63 0.67 2.43 0.83 2.26 0.97 2.07 1.11 
+1.87 1.21 1.69 1.3 2.78 2.8 2 2.93 1.21 2.91 0.3 1.41 0.09 1.35 0 17.34 
+-6.51 -2.41 -5.4 -1.28 -15.8 -2.39 -4.66 -1.41 -3.63 -1.65 -2.76 -1.85 -1.95 -2.02 -1.33 -2.2 
+-0.8 -2.34 -0.39 -2.45 -0.09 -2.56 -13 0 0.09 3.41 0.28 3.09 0.43 2.78 0.66 2.49 
+0.8 2.24 0.98 1.97 1.17 1.78 1.32 1.55 1.52 1.39 1.67 1.21 1.84 1.07 2.02 0.96 
+4.55 1.61 5.19 1.37 22.52 3.47 2.97 0.7 2.46 0.76 1.95 0.82 1.5 0.87 1.11 0.91 
+0.74 0.96 0.41 0.95 0.13 0.98 0 7.81 -0.24 1.48 -0.78 1.75 -1.35 1.87 -1.95 1.84 
+-2.6 1.67 -3.3 1.39 -4.04 0.93 -4.79 0.34 -2.67 -0.11 -2.45 -0.29 -2.28 -0.45 -2.06 -0.63 
+-1.89 -0.76 -1.71 -0.89 -2.86 -2.09 -2.18 -2.43 -1.52 -2.62 -0.89 -2.7 -0.29 -2.66 -13.87 0 f*
+3168.88 2638.17 13.8711 121.484 re
+f*
+3197.48 2725.82 15.6 0 21.66 -67.68 24.26 67.68 15.61 0 -40.73 -110.2 -2.89 -4.6 -2.82 -3.43 
+-2.8 -2.47 -2.76 -1.65 -2.78 -1 -2.78 -0.52 -2.82 -0.2 -2.88 -0.02 -1.72 0.02 -1.54 0.2 
+-1.87 0.52 -2.69 1 0 12.15 2.64 -0.61 2.65 -0.39 2.61 -0.09 2.5 0.33 2.37 0.84 
+2.1 1.5 0.98 1.02 0.87 1.22 0.8 1.45 0.7 1.65 5.19 14.75 -29.45 88.52 f*
+3363 2759.66 8.66 0 -5.45 -10.05 -4.67 -9.98 -3.88 -9.96 -3.12 -9.92 -2.39 -9.94 -1.69 -9.94 
+-1 -10 -0.32 -10.05 0.32 -8.83 1 -9.44 1.69 -9.89 2.39 -10.11 3.13 -10.16 1.87 -5.04 
+2.02 -4.96 2.23 -4.88 2.43 -4.78 2.63 -4.64 2.82 -4.47 -8.66 0 -2.89 3.62 -2.8 4 
+-2.67 4.34 -2.56 4.62 -2.43 4.86 -2.3 5.06 -2.12 5.19 -1.95 5.29 -1.78 5.34 -1.56 5.36 
+-1.39 5.32 -1.15 5.2 -0.91 5.08 -0.67 4.88 -0.41 4.67 -0.13 4.38 0.13 5.51 0.41 5.47 
+0.67 5.42 0.91 5.34 1.15 5.32 1.39 5.23 1.56 5.14 1.78 5.1 1.95 4.99 2.13 4.93 
+4.73 9.54 5.23 9.14 5.69 8.7 f*
+3412.39 2751.84 2.89 -0.15 2.82 -0.43 2.71 -0.72 2.63 -0.98 2.5 -1.21 2.34 -1.46 2.21 -1.64 
+2.04 -1.87 1.85 -2.04 1.66 -2.21 1.43 -2.34 1.22 -2.52 0.98 -2.61 0.72 -2.73 0.43 -2.82 
+0.15 -2.88 -0.15 -2.91 -0.43 -2.82 -0.72 -2.71 -0.98 -2.62 -1.22 -2.5 -1.43 -2.37 -1.66 -2.21 
+-1.85 -2.04 -2.04 -1.87 -2.21 -1.65 -2.34 -1.46 -2.5 -1.21 -2.62 -0.98 -2.71 -0.72 -2.82 -0.43 
+-2.89 -0.15 -2.91 0.15 -2.8 0.43 -2.73 0.72 -2.63 0.98 -2.49 1.21 -2.34 1.46 -2.21 1.65 
+-2.04 1.87 -1.84 2.04 -1.68 2.21 -1.43 2.37 -1.22 2.5 -0.98 2.62 -0.71 2.71 -0.44 2.82 
+-0.15 2.91 12.13 0 0.34 -3.21 1 -3.04 1.59 -2.78 2.04 -2.48 2.47 -2.06 2.8 -1.59 
+3.02 -1 3.21 -0.35 3.19 0.35 3.04 1 2.78 1.59 2.47 2.06 2.04 2.48 1.59 2.78 
+1 3.04 0.34 3.21 -0.34 3.19 -1 3.04 -1.59 2.8 -2.04 2.45 -2.47 2.06 -2.78 1.58 
+-3.04 1 -3.19 0.35 -3.21 -0.35 -3.02 -1 -2.8 -1.58 -2.47 -2.06 -2.04 -2.45 -1.59 -2.8 
+-1 -3.04 -0.34 -3.19 -12.13 0 0.15 2.88 0.44 2.82 0.71 2.73 0.98 2.61 1.22 2.52 
+1.43 2.34 1.68 2.21 1.84 2.04 2.04 1.87 2.21 1.64 2.34 1.46 2.49 1.21 2.63 0.98 
+2.73 0.72 2.8 0.43 2.91 0.15 f*
+3479.97 2756.18 11.26 0 -65.84 -121.48 -11.29 0 65.87 121.48 f*
+3493.84 2691.97 2.88 -0.16 2.82 -0.43 2.73 -0.71 2.61 -0.97 2.5 -1.22 2.37 -1.45 2.19 -1.65 
+2.04 -1.87 1.87 -2.04 1.64 -2.21 1.46 -2.34 1.21 -2.52 0.98 -2.61 0.71 -2.73 0.43 -2.82 
+0.15 -2.89 -0.15 -2.91 -0.43 -2.82 -0.71 -2.71 -0.98 -2.63 -1.21 -2.49 -1.46 -2.37 -1.64 -2.21 
+-1.87 -2.04 -2.04 -1.87 -2.19 -1.65 -2.37 -1.45 -2.5 -1.22 -2.61 -0.98 -2.73 -0.71 -2.82 -0.44 
+-2.88 -0.15 -2.89 0.15 -2.82 0.44 -2.71 0.71 -2.63 0.98 -2.5 1.22 -2.37 1.45 -2.19 1.65 
+-2.04 1.87 -1.87 2.04 -1.65 2.21 -1.46 2.37 -1.21 2.49 -0.97 2.63 -0.71 2.71 -0.43 2.82 
+-0.16 2.91 12.13 0 0.37 -3.21 1 -3.04 1.56 -2.78 2.06 -2.47 2.46 -2.06 2.8 -1.59 
+3.04 -1 3.2 -0.34 3.19 0.34 3.04 1 2.8 1.59 2.45 2.06 2.06 2.47 1.56 2.78 
+1 3.04 0.37 3.21 -0.37 3.2 -1 3.04 -1.56 2.8 -2.06 2.46 -2.45 2.06 -2.8 1.58 
+-3.04 1 -3.19 0.34 -3.2 -0.34 -3.04 -1 -2.8 -1.58 -2.46 -2.06 -2.06 -2.46 -1.56 -2.8 
+-1 -3.04 -0.37 -3.2 -12.13 0 0.16 2.89 0.43 2.82 0.71 2.73 0.97 2.61 1.21 2.52 
+1.46 2.34 1.65 2.21 1.87 2.04 2.04 1.87 2.19 1.65 2.37 1.45 2.5 1.22 2.63 0.97 
+2.71 0.71 2.82 0.43 2.89 0.16 f*
+3533.7 2759.66 8.66 0 3.45 -5.08 3.21 -5.12 2.97 -5.14 2.74 -5.19 2.52 -5.19 2.25 -5.18 
+2.06 -5.16 1.8 -5.14 1.61 -5.1 1.37 -5.05 1.15 -4.99 0.96 -4.91 0.71 -4.79 0.52 -4.71 
+0.3 -4.6 0.11 -4.47 -0.11 -4.47 -0.35 -4.6 -0.54 -4.73 -0.79 -4.84 -1 -4.93 -1.2 -4.97 
+-1.43 -5.03 -1.65 -5.04 -1.84 -5.03 -2.06 -5.02 -2.29 -4.99 -2.47 -4.93 -2.71 -4.82 -2.89 -4.75 
+-3.1 -4.61 -3.32 -4.47 -8.66 0 5.19 9.11 4.53 9.18 3.89 9.27 3.16 9.41 2.52 9.63 
+1.78 9.88 0.63 5.05 0.45 5.14 0.37 10.52 -0.33 10.27 -0.99 10.03 -1.7 9.85 -2.41 9.79 
+-3.13 9.76 -3.88 9.86 -4.64 10.03 -5.45 10.26 f*
+743.23 902.13 10.59 0 0 -65.39 -0.09 -1.78 -0.3 -1.78 -0.48 -1.74 -0.65 -1.73 -0.84 -1.67 
+-1.05 -1.61 -1.21 -1.52 -1.41 -1.43 -1.59 -1.33 -1.73 -1.2 -1.95 -1.06 -2.11 -0.91 -2.28 -0.71 
+-2.43 -0.55 -2.63 -0.32 -2.78 -0.11 -3.08 0.16 -2.78 0.43 -2.54 0.7 -2.3 0.91 -2.06 1.13 
+-1.82 1.26 -1.61 1.41 -1.39 1.52 -2.21 3.19 -1.48 3.21 -0.84 2.99 -0.26 2.54 0 9.42 
+10.59 0 0 -7.66 0.21 -2.71 0.65 -2.36 1.04 -2.02 1.41 -1.66 1.78 -1.3 2.11 -0.96 
+2.43 -0.56 2.74 -0.2 2.88 0.22 2.52 0.65 2.13 1.09 1.74 1.5 1.35 1.93 0.95 2.32 
+0.59 2.74 0.19 3.1 0 61.88 f*
+769.71 861.48 0.32 3.54 0.96 3.47 0.74 1.67 0.93 1.61 1.11 1.54 1.33 1.43 1.49 1.32 
+1.72 1.19 1.93 1.05 2.15 0.91 2.37 0.72 2.58 0.54 2.84 0.33 3.08 0.13 3.32 -0.15 
+3.64 -0.5 3.71 -0.91 3.58 -1.39 1.67 -0.89 1.52 -1.06 1.37 -1.2 1.2 -1.37 0.97 -1.54 
+0.74 -1.71 0.48 -1.91 0.16 -2.11 0 -37.71 0.21 -1.04 0.56 -0.92 0.83 -0.75 1.04 -0.59 
+1.15 -0.41 1.17 -0.17 1.11 0.04 0.98 0.32 0 -7.07 -2.28 -0.52 -3.6 -0.07 -2.56 0.07 
+-1.98 0.22 -1.56 0.43 -1.18 0.67 -0.95 1 -0.79 1.32 -1.58 3.95 -5.01 -3.69 -2.17 -1.32 
+-2.08 -1.05 -2.14 -0.73 -2.32 -0.5 -2.63 -0.29 -3.06 -0.09 -2.62 0.09 -2.39 0.29 -2.17 0.43 
+-1.95 0.61 -1.74 0.74 -1.54 0.89 -1.35 1 -1.17 1.11 -1.8 2.5 -1.21 2.8 -0.67 2.97 
+-0.2 3.08 8.83 0 0.22 -1.73 0.63 -1.62 1.04 -1.52 1.41 -1.3 1.78 -1.11 2.11 -0.83 
+2.43 -0.54 2.73 -0.17 3.95 0.5 3.43 1.02 2.93 1.41 2.41 1.69 1.89 1.91 1.37 2 
+0.82 1.98 0.26 1.87 0 11.78 -4.43 -1.65 -3.66 -0.87 -10.72 -1.61 -3.17 -0.98 -2.47 -1.11 
+-1.87 -1.26 -1.32 -1.39 -0.89 -1.48 -0.54 -1.58 -0.26 -1.67 -0.07 -1.74 -8.83 0 0.24 4.41 
+0.74 3.58 1.22 2.86 1.69 2.25 2.17 1.76 2.63 1.37 3.08 1.11 3.54 0.91 15.3 2.37 
+3.67 0.98 2.37 1.15 0.74 0.63 0.5 0.65 0.29 0.65 0.08 0.66 0 5.32 -0.17 1 
+-0.52 1.19 -0.91 1.26 -1.32 1.26 -1.78 1.13 -2.24 0.96 -2.73 0.63 -3.25 0.21 -3.5 -0.26 
+-2.93 -0.72 -2.45 -1.13 -1.96 -1.41 -1.48 -1.65 -1.02 -1.78 -0.61 -1.84 -0.2 -1.81 -9.41 0 f*
+833.25 879.14 8.83 0 0 -9.42 2.46 3.02 2.49 2.45 2.5 1.95 2.49 1.5 2.46 1.07 
+2.43 0.7 2.35 0.39 2.25 0.13 3.34 -0.28 3.32 -0.79 3.16 -1.28 2.88 -1.71 2.48 -2.13 
+1.93 -2.52 0.72 -1.39 0.54 -1.48 0.33 -1.54 0.11 -1.63 0 -46.55 -9.39 0 0 42.43 
+-0.33 2.45 -0.87 2.11 -1.33 1.72 -1.69 1.39 -1.91 1.04 -2.09 0.74 -2.11 0.43 -2.06 0.13 
+-2.87 -0.32 -2.84 -0.93 -2.67 -1.56 -2.43 -2.11 -2.06 -2.63 -1.61 -3.12 -1.04 -3.58 -0.26 -1.95 
+-0.11 -2.04 0 -34.18 -9.42 0 0 59.5 f*
+980.01 902.13 55.32 0 0 -9.42 -44.72 0 0 -26.52 39.43 0 0 -9.41 ^ 
+0 -37.13 -10.59 0 0 82.49 f*
+1095.95 837.91 -0.66 -2.75 -0.8 -2.56 -0.98 -2.32 -1.13 -2.15 -1.28 -1.93 -1.39 -1.74 -1.54 -1.54 
+-1.65 -1.37 -1.78 -1.17 -1.85 -1 -4.02 -1.52 -4.29 -0.89 -4.54 -0.29 -3.12 0.26 -2.93 0.52 
+-2.74 0.75 -2.56 1.02 -2.36 1.28 -2.17 1.5 -1.97 1.71 -1.79 1.93 -1.58 2.15 -1.39 2.35 
+-1.17 2.54 -0.95 2.71 -0.76 2.89 -0.54 3.05 -0.33 3.21 -0.13 3.35 0.22 4.84 0.56 4.36 
+0.93 3.91 1.22 3.49 1.48 3.06 1.71 2.69 1.91 2.32 2.06 2 2.17 1.67 2.25 1.37 
+2.3 1.11 2.3 0.84 2.28 0.61 2.22 0.43 4.05 0.3 -0.58 -8.85 -2.59 -0.24 -2.75 -0.78 
+-2.78 -1.32 -2.71 -1.91 -2.43 -2.52 -1.09 -1.5 -0.98 -1.67 -0.82 -1.83 -0.68 -1.97 -0.52 -2.17 
+-0.33 -2.34 34.72 0 -0.13 2.43 -0.37 2.23 -0.56 2.04 -0.78 1.86 -0.93 1.67 -1.06 1.5 
+-1.2 1.32 -1.3 1.15 -2.74 1.84 -2.84 1.26 -2.74 0.71 -2.4 0.21 0.58 8.85 4.14 -0.32 
+2.17 -0.41 2.2 -0.63 2.19 -0.89 2.15 -1.13 2.09 -1.43 1.97 -1.73 1.87 -2.08 1.71 -2.46 
+1.52 -2.82 1.33 -3.25 1.06 -3.67 0.82 -4.14 0.5 -4.64 0.17 -5.14 -44.14 0 0.21 -3.08 
+0.65 -3.37 1.2 -3.45 1.78 -3.3 1.13 -1.52 1.3 -1.41 1.5 -1.26 1.66 -1.09 1.89 -0.91 
+2.08 -0.67 2.3 -0.43 2.54 -0.13 2.56 0.22 2.39 0.63 2.21 1.04 2.02 1.41 1.84 1.78 
+1.63 2.13 1.43 2.43 1.22 2.73 9.42 0 f*
+1108.29 902.13 9.42 0 0 -31.23 1.15 1.67 1.21 1.48 2.63 2.41 2.73 1.75 2.71 1.24 
+2.54 0.78 2.24 0.46 3.02 0.24 2.23 -0.08 2.23 -0.3 2.24 -0.48 2.21 -0.7 2.17 -0.93 
+2.08 -1.18 2.02 -1.43 1.89 -1.66 1.73 -1.98 1.59 -2.26 1.41 -2.54 1.19 -2.87 0.98 -3.19 
+0.71 -3.54 0.46 -3.86 0.15 -4.23 -0.08 -3.47 -0.3 -3.36 -0.48 -3.21 -0.69 -3.06 -0.91 -2.91 
+-1.08 -2.71 -1.32 -2.52 -1.52 -2.32 -1.73 -2.11 -1.96 -1.87 -2.17 -1.61 -2.38 -1.34 -2.61 -1.09 
+-2.84 -0.78 -3.08 -0.48 -3.3 -0.17 -1.89 0.11 -2.11 0.31 -2.23 0.59 -2.3 0.93 -2.3 1.3 
+-2.24 1.76 -2.11 2.24 -1.88 2.8 0 -7.07 -9.42 0 0 28.28 ^ 0.08 -2.28 
+0.29 -2.24 1.04 -4.18 1.65 -3.82 2.15 -3.3 2.58 -2.73 2.88 -2.06 1.52 -0.76 1.58 -0.54 
+1.63 -0.35 1.65 -0.11 2.04 0.15 1.91 0.41 1.78 0.7 1.65 0.93 1.54 1.13 1.39 1.33 
+1.28 1.52 1.13 1.63 1.89 3.64 1.37 3.97 0.82 4.1 0.26 4.06 -0.12 2.86 -0.35 2.7 
+-0.58 2.47 -0.76 2.25 -0.93 2.08 -1.08 1.89 -1.2 1.7 -1.29 1.49 -2.75 2.46 -2.84 1.71 
+-2.71 1.02 -2.43 0.32 -1.74 -0.11 -1.69 -0.37 -1.65 -0.59 -1.57 -0.8 -1.49 -1 -1.39 -1.2 
+-1.32 -1.39 -1.22 -1.54 -2.08 -3.56 -1.56 -4.1 -1 -4.58 -0.34 -4.93 -9.42 0 0 54.21 f*
+1254.75 902.13 14.71 0 24.14 -71.88 24.11 71.88 14.71 0 0 -82.49 -10 0 0 68.94 
+-23.52 -68.94 -11.18 0 -22.96 68.94 0 -68.94 -10 0 0 82.49 f*
+1347.72 861.48 0.3 3.54 0.97 3.47 0.74 1.67 0.93 1.61 1.11 1.54 1.33 1.43 1.5 1.32 
+1.71 1.19 1.93 1.05 2.13 0.91 2.39 0.72 2.58 0.54 2.84 0.33 3.08 0.13 3.32 -0.15 
+3.64 -0.5 3.71 -0.91 3.58 -1.39 1.67 -0.89 1.52 -1.06 1.37 -1.2 1.2 -1.37 0.97 -1.54 
+0.74 -1.71 0.48 -1.91 0.16 -2.11 0 -37.71 0.2 -1.04 0.58 -0.92 0.83 -0.75 1.04 -0.59 
+1.15 -0.41 1.17 -0.17 1.11 0.04 0.98 0.32 0 -7.07 -2.28 -0.52 -3.61 -0.07 -2.55 0.07 
+-2 0.22 -1.54 0.43 -1.17 0.67 -0.96 1 -0.78 1.32 -1.59 3.95 -5.01 -3.69 -2.17 -1.32 
+-2.08 -1.05 -2.14 -0.73 -2.32 -0.5 -2.62 -0.29 -3.06 -0.09 -2.62 0.09 -2.39 0.29 -2.17 0.43 
+-1.95 0.61 -1.74 0.74 -1.54 0.89 -1.34 1 -1.17 1.11 -1.81 2.5 -1.21 2.8 -0.67 2.97 
+-0.2 3.08 8.81 0 0.21 -1.73 0.66 -1.62 1.04 -1.52 1.41 -1.3 1.78 -1.11 2.11 -0.83 
+2.43 -0.54 2.73 -0.17 3.95 0.5 3.43 1.02 2.93 1.41 2.41 1.69 1.89 1.91 1.37 2 
+0.8 1.98 0.28 1.87 0 11.78 -4.43 -1.65 -3.67 -0.87 -10.71 -1.61 -3.18 -0.98 -2.47 -1.11 
+-1.87 -1.26 -1.32 -1.39 -0.89 -1.48 -0.55 -1.58 -0.26 -1.67 -0.09 -1.74 -8.81 0 0.24 4.41 
+0.74 3.58 1.22 2.86 1.7 2.25 2.16 1.76 2.63 1.37 3.08 1.11 3.54 0.91 15.3 2.37 
+3.66 0.98 2.37 1.15 0.74 0.63 0.5 0.65 0.29 0.65 0.08 0.66 0 5.32 -0.17 1 
+-0.52 1.19 -0.91 1.26 -1.32 1.26 -1.78 1.13 -2.24 0.96 -2.73 0.63 -3.26 0.21 -3.49 -0.26 
+-2.93 -0.72 -2.45 -1.13 -1.95 -1.41 -1.48 -1.65 -1.02 -1.78 -0.61 -1.84 -0.19 -1.81 -9.42 0 f*
+1411.26 879.14 8.25 0 0 -11.2 3.58 4.82 3.28 3.5 2.93 2.36 2.65 1.41 2.32 0.63 
+2.04 0.04 1.74 -0.37 1.47 -0.61 0 -8.84 -4.7 -0.5 -3.95 -1.02 -1.71 -0.72 -1.54 -0.84 
+-1.37 -0.98 -1.21 -1.09 -1.05 -1.24 -0.91 -1.34 -1.34 -3.04 -0.78 -3.52 -0.26 -3.97 0 -33.01 
+-9.42 0 0 59.5 f*
+1567.14 902.13 13.54 0 28.84 -82.49 -11.78 0 -8.23 24.15 -32.36 0 -8.24 -24.15 -11.76 0 
+25.89 70.7 10.59 0 -13.54 -37.11 26.48 0 -12.93 37.11 -10.59 0 4.1 11.79 f*
+1617.17 879.14 8.83 0 0 -8.83 2.47 2.99 2.54 2.39 2.54 1.87 2.52 1.37 2.43 0.95 
+2.3 0.63 2.13 0.3 1.89 0.11 3.45 -0.28 3.99 -0.98 2.09 -0.81 2.11 -1.04 2.08 -1.32 
+2.04 -1.63 1.93 -1.93 1.78 -2.25 1.63 -2.65 1.41 -3.02 1.17 -3.45 0.89 -3.88 0.54 -4.34 
+0.2 -4.82 -0.15 -4.25 -0.45 -3.88 -0.72 -3.56 -0.98 -3.23 -1.2 -2.91 -1.41 -2.6 -1.58 -2.3 
+-1.73 -2.02 -1.89 -1.73 -2 -1.48 -2.11 -1.22 -2.16 -0.97 -2.22 -0.74 -2.23 -0.52 -2.23 -0.31 
+-2.24 -0.11 -2.56 0.11 -2.43 0.29 -2.32 0.54 -2.23 0.84 -2.2 1.18 -2.15 1.54 -2.14 1.95 
+-2.2 2.41 0 -30.64 -9.41 0 0 54.21 ^ 0.09 -2.49 0.29 -2.41 1.06 -4.5 
+1.63 -4.01 2.17 -3.45 2.56 -2.82 1.41 -1.15 1.48 -0.96 1.54 -0.78 1.59 -0.54 1.61 -0.35 
+1.64 -0.11 2.74 0.3 2.82 0.98 2.76 1.68 1.32 1.11 1.26 1.3 1.17 1.52 1.07 1.72 
+0.95 1.93 0.8 2.15 0.67 2.37 0.5 2.6 0.3 2.84 0.11 3.08 -0.11 2.97 -0.35 2.73 
+-0.54 2.54 -0.74 2.3 -0.89 2.08 -1.02 1.89 -1.15 1.67 -1.24 1.48 -2.62 2.38 -2.76 1.65 
+-2.65 0.95 -2.41 0.3 -1.54 -0.11 -1.56 -0.3 -1.52 -0.54 -1.52 -0.72 -2.87 -2.02 -2.6 -2.71 
+-2.22 -3.34 -1.73 -3.91 -0.63 -2.17 -0.48 -2.28 -0.28 -2.39 -0.11 -2.47 -9.41 0 0 30.04 f*
+1681.9 879.14 8.23 0 0 -11.2 3.58 4.82 3.28 3.5 2.93 2.36 2.65 1.41 2.32 0.63 
+2.04 0.04 1.76 -0.37 1.45 -0.61 0 -8.84 -4.69 -0.5 -3.97 -1.02 -1.71 -0.72 -1.54 -0.84 
+-1.37 -0.98 -1.21 -1.09 -1.05 -1.24 -0.91 -1.34 -1.34 -3.04 -0.79 -3.52 -0.25 -3.97 0 -33.01 
+-9.4 0 0 59.5 f*
+1798.66 902.13 14.69 0 24.13 -71.88 24.13 71.88 14.71 0 0 -82.49 -10 0 0 68.94 
+-23.55 -68.94 -11.17 0 -22.94 68.94 0 -68.94 -10 0 0 82.49 f*
+1891.62 861.48 0.31 3.54 0.95 3.47 0.76 1.67 0.91 1.61 1.13 1.54 1.3 1.43 1.5 1.32 
+1.71 1.19 1.93 1.05 2.15 0.91 2.36 0.72 2.61 0.54 2.82 0.33 3.08 0.13 3.32 -0.15 
+3.64 -0.5 3.73 -0.91 3.59 -1.39 1.65 -0.89 1.52 -1.06 1.39 -1.2 1.2 -1.37 0.98 -1.54 
+0.74 -1.71 0.46 -1.91 0.15 -2.11 0 -37.71 0.21 -1.04 0.57 -0.92 0.84 -0.75 1.02 -0.59 
+1.15 -0.41 1.17 -0.17 1.13 0.04 0.97 0.32 0 -7.07 -2.28 -0.52 -3.6 -0.07 -2.56 0.07 
+-1.99 0.22 -1.55 0.43 -1.2 0.67 -0.93 1 -0.8 1.32 -1.56 3.95 -5.04 -3.69 -2.14 -1.32 
+-2.08 -1.05 -2.15 -0.73 -2.32 -0.5 -2.63 -0.29 -3.06 -0.09 -2.64 0.09 -2.39 0.29 -2.17 0.43 
+-1.95 0.61 -1.73 0.74 -1.54 0.89 -1.35 1 -1.15 1.11 -1.82 2.5 -1.22 2.8 -0.65 2.97 
+-0.22 3.08 8.83 0 0.22 -1.73 0.63 -1.62 1.04 -1.52 1.41 -1.3 1.78 -1.11 2.13 -0.83 
+2.43 -0.54 2.71 -0.17 3.95 0.5 3.43 1.02 2.93 1.41 2.43 1.69 1.89 1.91 1.35 2 
+0.82 1.98 0.29 1.87 0 11.78 -4.45 -1.65 -3.64 -0.87 -10.75 -1.61 -3.16 -0.98 -2.46 -1.11 
+-1.87 -1.26 -1.34 -1.39 -0.89 -1.48 -0.54 -1.58 -0.26 -1.67 -0.06 -1.74 -8.83 0 0.26 4.41 
+0.74 3.58 1.21 2.86 1.7 2.25 2.17 1.76 2.62 1.37 3.09 1.11 3.52 0.91 15.3 2.37 
+3.69 0.98 2.34 1.15 0.76 0.63 0.5 0.65 0.28 0.65 0.09 0.66 0 5.32 -0.18 1 
+-0.54 1.19 -0.91 1.26 -1.33 1.26 -1.78 1.13 -2.23 0.96 -2.74 0.63 -3.25 0.21 -3.47 -0.26 
+-2.95 -0.72 -2.43 -1.13 -1.95 -1.41 -1.47 -1.65 -1.05 -1.78 -0.61 -1.84 -0.19 -1.81 -9.4 0 f*
+1949.29 879.14 10.59 0 14.7 -45.94 16.5 45.94 10.59 0 -27.67 -74.83 -1.95 -3.1 -1.91 -2.34 
+-1.91 -1.67 -1.87 -1.13 -1.88 -0.67 -1.89 -0.35 -3.89 -0.15 -2.19 0.15 -3.11 1.02 0 8.25 
+3.61 -0.67 1.76 -0.06 1.71 0.24 1.58 0.56 1.46 1.02 1.23 1.52 1.02 2.13 3.52 10 
+-19.99 60.09 f*
+2092.79 902.13 10.59 0 0 -65.39 -0.08 -1.78 -0.29 -1.78 -0.48 -1.74 -0.67 -1.73 -0.84 -1.67 
+-1.05 -1.61 -1.21 -1.52 -1.41 -1.43 -1.56 -1.33 -1.75 -1.2 -1.93 -1.06 -2.11 -0.89 -2.28 -0.74 
+-2.45 -0.55 -2.62 -0.32 -2.78 -0.11 -3.06 0.16 -2.8 0.43 -2.54 0.7 -2.3 0.91 -2.06 1.13 
+-1.82 1.26 -1.61 1.41 -1.39 1.52 -2.22 3.19 -1.47 3.21 -0.83 2.99 -0.25 2.54 0 9.42 
+10.59 0 0 -7.66 0.21 -2.71 0.63 -2.36 1.04 -2.02 1.41 -1.66 1.78 -1.3 2.11 -0.96 
+2.43 -0.56 2.73 -0.2 2.89 0.22 2.52 0.65 2.13 1.09 1.73 1.5 1.35 1.93 0.97 2.32 
+0.57 2.74 0.19 3.1 0 61.88 f*
+2119.88 879.14 9.4 0 0 -44.18 0.2 -1.58 0.58 -1.63 0.96 -1.58 1.37 -1.46 1.74 -1.28 
+2.12 -1 2.5 -0.65 2.91 -0.24 2.02 0.11 1.87 0.35 1.74 0.56 1.56 0.74 1.46 0.89 
+1.3 1.05 2.2 2.41 1.67 2.74 1.17 2.84 0.67 2.8 0.24 2.61 0 36.52 9.42 0 
+0 -60.09 -8.83 0 0 8.25 -1.8 -2.32 -1.89 -2.06 -2.04 -1.82 -2.22 -1.52 -2.43 -1.23 
+-2.72 -0.89 -2.99 -0.57 -3.34 -0.2 -4.19 0.35 -3.71 0.98 -3.23 1.48 -2.69 1.93 -2.15 2.24 
+-1.56 2.49 -0.95 2.61 -0.33 2.67 0 47.72 f*
+2182.83 879.14 8.81 0 0 -9.42 2.46 3.02 2.49 2.45 2.5 1.95 2.49 1.5 2.46 1.07 
+2.43 0.7 2.35 0.39 2.25 0.13 3.34 -0.28 3.32 -0.79 3.17 -1.28 2.89 -1.71 2.48 -2.13 
+1.93 -2.52 0.74 -1.39 0.52 -1.48 0.32 -1.54 0.13 -1.63 0 -46.55 -9.42 0 0 42.43 
+-0.33 2.45 -0.87 2.11 -1.33 1.72 -1.66 1.39 -1.93 1.04 -2.08 0.74 -2.11 0.43 -2.04 0.13 
+-2.89 -0.32 -2.84 -0.93 -2.67 -1.56 -2.43 -2.11 -2.06 -2.63 -1.61 -3.12 -1.04 -3.58 -0.26 -1.95 
+-0.11 -2.04 0 -34.18 -9.4 0 0 59.5 f*
+2294.62 837.91 -0.63 -2.75 -0.82 -2.56 -0.96 -2.32 -1.13 -2.15 -1.28 -1.93 -1.41 -1.74 -1.52 -1.54 
+-1.67 -1.37 -1.75 -1.17 -1.87 -1 -4 -1.52 -4.32 -0.89 -4.54 -0.29 -3.11 0.26 -2.93 0.52 
+-2.73 0.75 -2.56 1.02 -2.36 1.28 -2.17 1.5 -2 1.71 -1.78 1.93 -1.59 2.15 -1.36 2.35 
+-1.18 2.54 -0.98 2.71 -0.76 2.89 -0.54 3.05 -0.33 3.21 -0.11 3.35 0.2 4.84 0.59 4.36 
+0.91 3.91 1.21 3.49 1.5 3.06 1.71 2.69 1.91 2.32 2.04 2 2.19 1.67 2.26 1.37 
+2.3 1.11 2.3 0.84 2.28 0.61 2.2 0.43 4.05 0.3 -0.58 -8.85 -2.56 -0.24 -2.75 -0.78 
+-2.8 -1.32 -2.7 -1.91 -2.45 -2.52 -1.07 -1.5 -0.97 -1.67 -0.83 -1.83 -0.69 -1.97 -0.5 -2.17 
+-0.32 -2.34 34.72 0 -0.13 2.43 -0.37 2.23 -0.59 2.04 -0.75 1.86 -0.93 1.67 -1.09 1.5 
+-1.19 1.32 -1.29 1.15 -2.75 1.84 -2.82 1.26 -2.73 0.71 -2.43 0.21 0.58 8.85 4.17 -0.32 
+2.17 -0.41 2.19 -0.63 2.17 -0.89 2.15 -1.13 2.08 -1.43 2 -1.73 1.87 -2.08 1.71 -2.46 
+1.52 -2.82 1.32 -3.25 1.07 -3.67 0.8 -4.14 0.5 -4.64 0.17 -5.14 -44.12 0 0.2 -3.08 
+0.67 -3.37 1.17 -3.45 1.78 -3.3 1.13 -1.52 1.33 -1.41 1.47 -1.26 1.69 -1.09 1.87 -0.91 
+2.09 -0.67 2.32 -0.43 2.52 -0.13 2.59 0.22 2.39 0.63 2.21 1.04 2.02 1.41 1.84 1.78 
+1.63 2.13 1.43 2.43 1.2 2.73 9.42 0 f*
+2389.91 902.13 10.59 0 0 -65.39 -0.11 -1.78 -0.28 -1.78 -0.48 -1.74 -0.68 -1.73 -0.85 -1.67 
+-1.04 -1.61 -1.21 -1.52 -1.39 -1.43 -1.58 -1.33 -1.76 -1.2 -1.93 -1.06 -2.11 -0.89 -2.28 -0.74 
+-2.46 -0.55 -2.62 -0.32 -2.78 -0.11 -3.06 0.16 -2.8 0.43 -2.54 0.7 -2.3 0.91 -2.04 1.13 
+-1.82 1.26 -1.61 1.41 -1.41 1.52 -2.2 3.19 -1.5 3.21 -0.82 2.99 -0.26 2.54 0 9.42 
+10.59 0 0 -7.66 0.22 -2.71 0.63 -2.36 1.04 -2.02 1.41 -1.66 1.78 -1.3 2.13 -0.96 
+2.43 -0.56 2.71 -0.2 2.91 0.22 2.5 0.65 2.12 1.09 1.74 1.5 1.37 1.93 0.96 2.32 
+0.58 2.74 0.2 3.1 0 61.88 f*
+2416.97 879.14 9.42 0 0 -44.18 0.19 -1.58 0.57 -1.63 0.97 -1.58 1.35 -1.46 1.73 -1.28 
+2.13 -1 2.52 -0.65 2.89 -0.24 2.02 0.11 1.87 0.35 1.73 0.56 1.59 0.74 1.43 0.89 
+1.31 1.05 2.19 2.41 1.67 2.74 1.17 2.84 0.7 2.8 0.21 2.61 0 36.52 9.42 0 
+0 -60.09 -8.83 0 0 8.25 -1.8 -2.32 -1.89 -2.06 -2.04 -1.82 -2.21 -1.52 -2.43 -1.23 
+-2.69 -0.89 -3 -0.57 -3.36 -0.2 -4.18 0.35 -3.71 0.98 -3.22 1.48 -2.71 1.93 -2.15 2.24 
+-1.56 2.49 -0.96 2.61 -0.32 2.67 0 47.72 f*
+2479.93 819.641 9.41406 82.4883 re
+f*
+2499.35 879.14 10.59 0 14.72 -45.94 16.46 45.94 10.59 0 -27.67 -74.83 -1.95 -3.1 -1.91 -2.34 
+-1.89 -1.67 -1.89 -1.13 -1.89 -0.67 -1.89 -0.35 -3.86 -0.15 -2.21 0.15 -3.11 1.02 0 8.25 
+3.61 -0.67 1.76 -0.06 1.71 0.24 1.58 0.56 1.45 1.02 1.24 1.52 1.02 2.13 3.54 10 
+-20 60.09 f*
+2663.46 902.13 13.54 0 28.84 -82.49 -11.79 0 -8.23 24.15 -32.38 0 -8.22 -24.15 -11.77 0 
+25.89 70.7 10.59 0 -13.55 -37.11 26.48 0 -12.93 37.11 -10.59 0 4.1 11.79 f*
+2715.23 879.14 9.42 0 0 -44.18 0.2 -1.58 0.58 -1.63 0.96 -1.58 1.36 -1.46 1.74 -1.28 
+2.11 -1 2.52 -0.65 2.91 -0.24 2.02 0.11 1.87 0.35 1.71 0.56 1.59 0.74 1.45 0.89 
+1.3 1.05 2.2 2.41 1.67 2.74 1.17 2.84 0.67 2.8 0.24 2.61 0 36.52 9.4 0 
+0 -60.09 -8.81 0 0 8.25 -1.8 -2.32 -1.91 -2.06 -2.02 -1.82 -2.21 -1.52 -2.43 -1.23 
+-2.71 -0.89 -3 -0.57 -3.34 -0.2 -4.19 0.35 -3.71 0.98 -3.23 1.48 -2.69 1.93 -2.15 2.24 
+-1.56 2.49 -0.98 2.61 -0.33 2.67 0 47.72 f*
+2817.04 879.14 8.83 0 0 -55.38 -0.2 -4.95 -0.71 -5.04 -0.61 -2.45 -0.83 -2.39 -1.02 -2.3 
+-1.28 -2.17 -1.54 -2.02 -1.84 -1.84 -2.15 -1.63 -2.49 -1.39 -2.84 -1.13 -3.23 -0.84 -3.64 -0.55 
+-4.08 -0.17 -5.25 0.33 -4.64 0.93 -2.09 0.7 -1.93 0.84 -1.79 0.96 -1.61 1.11 -1.43 1.21 
+-1.26 1.34 -1.06 1.46 -0.89 1.56 -0.7 1.67 -0.49 1.75 -0.3 1.87 -0.11 1.93 9.42 0 
+0.3 -1.57 0.43 -1.39 1.3 -2.34 1.7 -1.76 2 -1.26 2.17 -0.85 2.19 -0.52 2.13 -0.26 
+1.91 -0.07 3.58 0.21 3.21 0.72 2.8 1.24 2.39 1.8 1.02 1.13 0.89 1.28 0.75 1.46 
+0.66 1.61 0.87 3.75 0.3 4.47 0 7.07 -1.99 -2.64 -2.02 -2.24 -2.09 -1.85 -2.15 -1.45 
+-2.26 -1.08 -2.41 -0.76 -2.56 -0.43 -2.78 -0.15 -3.07 0.22 -2.85 0.61 -2.62 0.95 -2.41 1.31 
+-2.2 1.58 -1.97 1.84 -1.76 2.06 -1.56 2.25 -1.37 2.43 -1.17 2.54 -0.98 2.64 -0.78 2.7 
+-1.04 5.42 -0.33 5.27 9.98 0 0.33 -4.38 0.93 -4.19 1.45 -3.88 1.93 -3.47 2.34 -2.88 
+1.32 -1.21 1.39 -1.02 1.46 -0.82 1.52 -0.61 1.59 -0.37 1.65 -0.13 2.02 0.13 1.89 0.41 
+1.75 0.67 1.61 0.89 1.5 1.11 1.34 1.28 1.22 1.48 1.08 1.61 1.78 3.6 1.29 3.97 
+0.74 4.19 0.25 4.23 -0.12 2.78 -0.33 2.61 -0.52 2.43 -0.7 2.23 -0.85 2.07 -0.99 1.88 
+-1.11 1.7 -1.19 1.54 -2.61 2.52 -2.76 1.78 -2.73 1.08 -2.56 0.35 -2.39 -0.35 -2.58 -1.08 
+-2.64 -1.82 -2.54 -2.56 -2.26 -3.3 -0.98 -1.93 -0.84 -2.12 -0.7 -2.3 -0.52 -2.5 -0.32 -2.69 
+-0.13 -2.89 -9.98 0 0.29 4.62 0.63 4.21 0.93 3.78 1.2 3.38 1.43 3 1.65 2.65 
+1.8 2.3 1.93 1.97 2.02 1.67 2.11 1.39 2.11 1.13 2.11 0.88 2.09 0.65 1.99 0.46 
+3.63 0.32 2.21 -0.17 2.28 -0.5 2.28 -0.82 2.26 -1.15 2.26 -1.5 2.19 -1.82 2.13 -2.15 
+2.04 -2.49 0 8.83 f*
+2956.73 876.8 -0.15 3.11 -0.48 2.88 -0.79 2.7 -1.04 2.47 -1.33 2.28 -1.54 2.08 -1.8 1.87 
+-2 1.7 -2.19 1.47 -2.37 1.26 -2.52 1.09 -2.67 0.87 -2.78 0.7 -2.91 0.47 -2.97 0.3 
+-3.06 0.09 -3.64 -0.11 -3.36 -0.34 -3.14 -0.57 -2.89 -0.76 -2.64 -0.97 -2.41 -1.15 -2.19 -1.34 
+-1.93 -1.52 -1.69 -1.7 -1.47 -1.82 -1.24 -2 -1.02 -2.13 -0.78 -2.25 -0.57 -2.39 -0.32 -2.49 
+-0.11 -2.61 0.28 -4.08 0.85 -3.43 1.28 -2.86 1.71 -2.37 2.02 -1.95 2.3 -1.63 2.47 -1.37 
+2.61 -1.17 26.49 -7.08 3.04 -1.15 2.52 -1.28 2.04 -1.36 1.59 -1.5 1.19 -1.61 0.79 -1.72 
+0.46 -1.82 0.15 -1.93 -0.23 -2.8 -0.76 -2.62 -1.36 -2.41 -0.93 -1.08 -1.11 -1.02 -1.33 -0.91 
+-1.52 -0.82 -3.66 -1.32 -4.62 -0.85 -5.64 -0.28 -2.97 0.11 -2.76 0.31 -2.52 0.52 -2.3 0.67 
+-2.08 0.87 -1.87 1 -1.7 1.15 -1.48 1.25 -1.28 1.39 -1.09 1.48 -0.91 1.54 -0.73 1.63 
+-0.96 3.4 -0.33 3.52 -10.59 0 0.13 -2.93 0.38 -2.84 0.63 -2.73 0.89 -2.61 1.15 -2.49 
+1.41 -2.32 1.65 -2.17 1.96 -1.99 2.19 -1.8 2.47 -1.63 2.76 -1.39 3.01 -1.17 3.3 -0.93 
+3.61 -0.69 3.86 -0.41 4.17 -0.15 3.84 0.13 3.61 0.39 3.34 0.61 3.11 0.84 2.87 1.04 
+2.6 1.24 2.37 1.43 2.11 1.61 1.87 1.75 1.61 1.91 1.37 2.04 1.11 2.17 0.87 2.25 
+0.63 2.37 0.37 2.45 0.13 2.52 -0.09 2.05 -0.28 1.95 -1.04 3.61 -1.63 3.21 -2.11 2.8 
+-2.49 2.38 -2.8 1.98 -2.97 1.54 -3.06 1.11 -26.48 7.08 -4.62 2.41 -1.54 1.13 -1.13 1.17 
+-0.76 1.28 -0.48 1.46 -0.24 1.71 -0.07 2.02 0.09 1.63 0.29 1.5 0.46 1.41 0.61 1.32 
+1.69 2.32 2.23 1.91 2.72 1.52 3.1 1.09 3.41 0.65 3.65 0.21 4.77 -0.33 4.17 -0.93 
+3.54 -1.47 1.52 -0.93 1.39 -1.05 1.21 -1.17 1.06 -1.25 1.63 -2.8 0.98 -3.14 0.33 -3.41 
+10.59 0 f*
+3020.88 836.74 -0.65 -2.78 -0.8 -2.54 -0.98 -2.34 -1.13 -2.12 -1.25 -1.93 -1.41 -1.74 -1.54 -1.54 
+-1.65 -1.37 -1.76 -1.17 -1.87 -1.02 -4.01 -1.5 -4.3 -0.89 -4.54 -0.29 -3.11 0.26 -2.93 0.5 
+-2.76 0.78 -2.56 1.02 -2.37 1.25 -2.17 1.5 -1.97 1.73 -1.79 1.93 -1.58 2.15 -1.39 2.35 
+-1.17 2.54 -0.95 2.71 -0.76 2.89 -0.54 3.05 -0.32 3.21 -0.11 3.35 0.2 4.84 0.59 4.36 
+0.91 3.91 1.21 3.47 1.48 3.09 1.71 2.7 1.91 2.32 2.07 2 2.17 1.65 2.25 1.39 
+2.3 1.08 2.3 0.84 2.28 0.63 2.21 0.41 4.06 0.3 -0.59 -8.84 -2.56 -0.24 -2.76 -0.78 
+-2.8 -1.34 -2.69 -1.91 -2.45 -2.52 -1.09 -1.5 -0.95 -1.65 -0.84 -1.82 -0.68 -2 -0.52 -2.17 
+-0.31 -2.32 34.7 0 -0.13 2.43 -0.34 2.23 -0.59 2.04 -0.78 1.84 -0.93 1.67 -1.06 1.5 
+-1.2 1.32 -1.28 1.17 -2.75 1.85 -2.84 1.24 -2.71 0.74 -2.43 0.21 0.59 8.84 4.14 -0.3 
+2.17 -0.41 2.2 -0.66 2.19 -0.86 2.15 -1.15 2.09 -1.41 1.99 -1.75 1.85 -2.06 1.71 -2.46 
+1.54 -2.82 1.3 -3.25 1.08 -3.69 0.81 -4.15 0.5 -4.62 0.17 -5.14 -44.12 0 0.2 -3.11 
+0.66 -3.36 1.2 -3.43 1.78 -3.3 1.13 -1.52 1.3 -1.41 1.5 -1.25 1.67 -1.11 1.88 -0.89 
+2.09 -0.67 2.3 -0.43 2.54 -0.15 2.56 0.21 2.38 0.65 2.22 1.05 2.04 1.41 1.82 1.78 
+1.63 2.13 1.43 2.43 1.21 2.73 9.42 0 f*
+3033.22 877.97 8.83 0 0 -8.83 2.48 2.99 2.54 2.39 2.54 1.84 2.52 1.39 2.43 0.96 
+2.3 0.61 2.13 0.33 1.89 0.09 3.47 -0.29 3.97 -0.95 2.08 -0.81 2.11 -1.06 2.09 -1.32 
+2.04 -1.61 1.93 -1.93 1.8 -2.25 1.61 -2.65 1.43 -3.04 1.15 -3.43 0.89 -3.88 0.55 -4.34 
+0.2 -4.84 -0.16 -4.23 -0.43 -3.91 -0.74 -3.54 -0.97 -3.23 -1.2 -2.91 -1.41 -2.6 -1.59 -2.3 
+-1.74 -2.02 -1.89 -1.73 -2 -1.48 -2.11 -1.23 -2.17 -0.96 -2.21 -0.76 -2.23 -0.5 -2.24 -0.31 
+-2.23 -0.11 -2.56 0.09 -2.43 0.3 -2.32 0.54 -2.24 0.84 -2.19 1.15 -2.15 1.54 -2.15 1.95 
+-2.19 2.41 0 -30.62 -9.42 0 0 54.19 ^ 0.08 -2.5 0.29 -2.41 1.07 -4.49 
+1.64 -4.02 2.15 -3.45 2.56 -2.82 1.41 -1.15 1.48 -0.95 1.54 -0.76 1.59 -0.56 1.61 -0.33 
+1.65 -0.12 2.73 0.32 2.82 0.96 2.76 1.67 1.32 1.13 1.26 1.3 1.17 1.52 1.06 1.71 
+0.96 1.93 0.82 2.15 0.65 2.37 0.5 2.6 0.3 2.82 0.11 3.09 -0.11 2.99 -0.34 2.73 
+-0.55 2.52 -0.74 2.32 -0.89 2.08 -1.02 1.87 -1.15 1.7 -1.22 1.48 -2.65 2.38 -2.76 1.65 
+-2.64 0.95 -2.41 0.3 -1.54 -0.11 -1.54 -0.32 -1.54 -0.52 -1.52 -0.72 -2.87 -2.02 -2.61 -2.71 
+-2.21 -3.34 -1.74 -3.93 -0.63 -2.15 -0.48 -2.28 -0.28 -2.39 -0.11 -2.49 -9.42 0 0 30.05 f*
+3099.71 893.88 9.43 0 0 -15.91 9.41 0 0 -7.66 ^ 0 -42.42 0.25 -1.7 
+0.71 -1.17 1.07 -0.74 1.34 -0.37 1.49 -0.09 1.57 0.09 2.97 0.43 0 -7.66 -3.47 -0.8 
+-2.24 -0.26 -2.54 -0.11 -2.14 0.3 -2 0.5 -1.8 0.68 -1.56 0.89 -1.29 1.11 -0.97 1.34 
+-0.61 1.59 -0.22 1.84 0 46.55 -8.24 0 0 7.66 ^ 0 15.91 f*
+3238.54 902.13 4.32 -0.24 4.13 -0.72 3.93 -1.15 3.71 -1.54 3.5 -1.93 3.23 -2.28 2.99 -2.61 
+2.73 -2.87 2.46 -3.14 2.16 -3.34 1.84 -3.56 1.57 -3.71 1.23 -3.86 0.89 -3.95 0.54 -4.04 
+0.17 -4.08 -0.08 -4.08 -0.46 -4.06 -0.85 -3.97 -1.22 -3.88 -1.54 -3.78 -1.87 -3.6 -2.16 -3.41 
+-2.48 -3.19 -2.75 -2.93 -3.04 -2.65 -3.28 -2.32 -3.51 -1.97 -3.75 -1.61 -3.95 -1.17 -4.14 -0.72 
+-4.32 -0.26 -4.34 0.26 -4.14 0.72 -3.95 1.17 -3.75 1.61 -3.51 1.97 -3.3 2.32 -3.06 2.65 
+-2.78 2.93 -2.49 3.19 -2.23 3.41 -1.91 3.6 -1.59 3.78 -1.28 3.88 -0.91 3.97 -0.56 4.06 
+-0.2 4.08 10.59 0 0.15 -3.5 0.43 -3.39 0.72 -3.28 0.98 -3.12 1.23 -2.99 1.45 -2.82 
+1.67 -2.62 1.89 -2.43 2.08 -2.21 2.26 -1.96 2.43 -1.71 2.58 -1.45 2.71 -1.15 2.84 -0.83 
+2.93 -0.52 3.06 -0.17 3.04 0.17 2.93 0.52 2.8 0.83 2.69 1.15 2.52 1.45 2.39 1.71 
+2.19 1.96 2.05 2.21 1.82 2.43 1.63 2.63 1.41 2.82 1.19 2.99 0.93 3.13 0.67 3.28 
+0.44 3.39 0.13 3.5 -0.12 3.49 -0.44 3.36 -0.67 3.25 -0.93 3.11 -1.19 2.93 -1.41 2.78 
+-1.63 2.56 -1.82 2.39 -2.05 2.14 -2.19 1.91 -2.39 1.67 -2.52 1.39 -2.69 1.11 -2.8 0.82 
+-2.93 0.5 -3.04 0.18 -3.06 -0.18 -2.93 -0.5 -2.84 -0.82 -2.71 -1.11 -2.58 -1.39 -2.43 -1.67 
+-2.26 -1.91 -2.08 -2.14 -1.89 -2.39 -1.67 -2.56 -1.45 -2.78 -1.23 -2.93 -0.98 -3.11 -0.72 -3.25 
+-0.43 -3.36 -0.15 -3.49 -10.59 0 0.2 4.08 0.56 4.04 0.91 3.95 1.28 3.86 1.59 3.71 
+1.91 3.56 2.23 3.34 2.49 3.14 2.78 2.87 3.06 2.61 3.3 2.28 3.51 1.93 3.75 1.54 
+3.95 1.15 4.14 0.72 4.34 0.24 f*
+3335.03 857.95 -9.4 0 -0.43 2.41 -0.78 2.34 -1.2 2.2 -1.57 1.97 -1.97 1.65 -2.34 1.28 
+-2.73 0.83 -3.11 0.28 -1.93 -0.11 -1.82 -0.34 -1.7 -0.57 -1.61 -0.76 -1.48 -0.97 -1.34 -1.15 
+-1.24 -1.35 -1.11 -1.52 -1.84 -3.52 -1.32 -4.12 -0.83 -4.64 -0.26 -5.1 0.29 -5.01 0.89 -4.45 
+1.43 -3.84 0.91 -1.67 1.05 -1.52 1.15 -1.34 1.3 -1.2 1.39 -1.02 1.52 -0.83 1.63 -0.65 
+1.73 -0.48 1.84 -0.28 1.93 -0.11 1.8 0.11 1.67 0.28 1.54 0.48 1.41 0.61 2.43 1.65 
+1.95 2.04 1.48 2.32 1.04 2.48 0.61 2.45 0.19 2.32 9.39 0 -0.08 -2.3 -0.28 -2.26 
+-0.5 -2.21 -0.68 -2.12 -0.86 -2.04 -1.07 -1.95 -1.24 -1.82 -1.45 -1.71 -1.65 -1.54 -1.82 -1.41 
+-2.04 -1.22 -2.21 -1.02 -2.41 -0.83 -2.61 -0.63 -2.8 -0.37 -2.99 -0.13 -3.41 0.2 -3.13 0.54 
+-2.87 0.89 -2.6 1.21 -2.35 1.5 -2.12 1.76 -1.89 1.99 -1.65 2.21 -1.43 2.41 -1.23 2.58 
+-1 2.73 -0.82 2.84 -0.63 2.95 -0.43 3.02 -0.32 6.16 0.28 4.23 0.63 3.86 0.93 3.54 
+1.21 3.16 1.43 2.87 1.65 2.56 1.82 2.25 1.96 1.96 2.06 1.7 2.13 1.41 2.17 1.17 
+2.17 0.93 2.13 0.71 2.08 0.48 3.82 0.38 4.14 -0.29 4 -0.87 3.75 -1.54 1.75 -1.02 
+1.65 -1.22 1.54 -1.39 1.41 -1.59 1.3 -1.78 1.13 -2 0.98 -2.2 0.82 -2.4 0.61 -2.65 
+0.43 -2.86 f*
+3347.98 893.88 9.41 0 0 -15.91 9.39 0 0 -7.66 ^ 0 -42.42 0.26 -1.7 
+0.72 -1.17 1.06 -0.74 1.35 -0.37 1.5 -0.09 1.56 0.09 2.95 0.43 0 -7.66 -3.45 -0.8 
+-2.25 -0.26 -2.52 -0.11 -2.15 0.3 -1.99 0.5 -1.8 0.68 -1.57 0.89 -1.28 1.11 -0.98 1.34 
+-0.61 1.59 -0.21 1.84 0 46.55 -8.25 0 0 7.66 ^ 0 15.91 f*
+3463.26 902.13 11.76 0 42.38 -67.17 0 67.17 9.98 0 0 -82.49 -11.77 0 -42.36 67.16 
+0 -67.16 -10 0 0 82.49 f*
+3567.41 880.92 2.73 -0.17 2.65 -0.5 2.58 -0.8 2.48 -1.11 2.37 -1.39 2.23 -1.63 2.08 -1.89 
+1.93 -2.08 1.76 -2.32 1.58 -2.5 1.37 -2.67 1.15 -2.84 0.91 -2.95 0.7 -3.08 0.41 -3.19 
+0.14 -3.28 -0.14 -3.27 -0.41 -3.17 -0.7 -3.06 -0.91 -2.93 -1.15 -2.78 -1.37 -2.63 -1.58 -2.45 
+-1.76 -2.26 -1.93 -2.04 -2.08 -1.83 -2.23 -1.61 -2.37 -1.32 -2.48 -1.06 -2.58 -0.78 -2.65 -0.48 
+-2.73 -0.17 -2.73 0.17 -2.65 0.48 -2.59 0.78 -2.47 1.06 -2.35 1.32 -2.23 1.61 -2.11 1.83 
+-1.93 2.04 -1.76 2.26 -1.57 2.45 -1.37 2.63 -1.15 2.78 -0.93 2.93 -0.67 3.06 -0.41 3.17 
+-0.15 3.27 10 0 0.3 -4.56 0.87 -4.25 1.43 -3.91 1.96 -3.43 1.17 -1.5 1.28 -1.35 
+1.41 -1.18 1.5 -0.97 1.63 -0.79 1.73 -0.58 1.84 -0.37 1.93 -0.11 1.93 0.11 1.85 0.38 
+1.74 0.58 1.63 0.79 1.52 0.97 1.39 1.18 1.3 1.35 1.15 1.5 1.95 3.43 1.43 3.91 
+0.89 4.25 0.29 4.56 -0.29 4.56 -0.89 4.34 -1.43 4 -1.95 3.52 -1.15 1.56 -1.3 1.39 
+-1.39 1.22 -1.52 1.04 -1.62 0.82 -1.74 0.61 -1.85 0.39 -1.93 0.11 -1.93 -0.11 -1.84 -0.39 
+-1.73 -0.61 -1.63 -0.82 -1.5 -1.04 -1.41 -1.22 -1.28 -1.39 -1.17 -1.56 -1.96 -3.52 -1.43 -4 
+-0.87 -4.34 -0.3 -4.56 -10 0 0.15 3.28 0.41 3.19 0.67 3.08 0.93 2.95 1.15 2.84 
+1.37 2.67 1.57 2.5 1.76 2.32 1.93 2.08 2.11 1.89 2.23 1.63 2.35 1.39 2.47 1.11 
+2.59 0.8 2.65 0.5 2.73 0.17 f*
+3600.96 879.14 11.18 0 15.88 -47.13 15.88 47.13 11.18 0 -21.18 -59.5 -11.77 0 -21.18 59.5 f*
+3741.54 902.13 34.11 0 2.2 -0.11 2.37 -0.39 2.47 -0.63 2.56 -0.91 2.6 -1.24 2.58 -1.54 
+2.56 -1.87 2.46 -2.24 2.32 -2.59 2.17 -2.97 1.93 -3.36 1.67 -3.78 1.39 -4.23 1.04 -4.66 
+0.65 -5.12 0.21 -5.6 -0.19 -5.62 -0.61 -5.12 -0.96 -4.66 -1.28 -4.21 -1.59 -3.8 -1.82 -3.36 
+-2.04 -2.98 -2.23 -2.58 -2.39 -2.24 -2.52 -1.86 -2.58 -1.54 -2.63 -1.22 -2.67 -0.93 -2.62 -0.62 
+-2.56 -0.37 -2.5 -0.13 -34.11 0 0 73.07 10.59 0 0 -63.63 21.77 0 2.58 0.13 
+2.43 0.43 2.3 0.7 2.15 0.98 1.97 1.21 1.84 1.48 1.67 1.74 1.52 1.95 1.34 2.17 
+1.2 2.41 0.99 2.63 0.85 2.82 0.65 3.02 0.48 3.19 0.28 3.4 0.09 3.56 -0.11 3.84 
+-0.37 3.61 -0.56 3.36 -0.81 3.11 -0.98 2.86 -1.17 2.61 -1.34 2.37 -1.5 2.11 -1.65 1.86 
+-1.76 1.63 -1.91 1.37 -2 1.11 -2.08 0.87 -2.17 0.63 -2.24 0.37 -2.3 0.13 -31.77 0 
+0 9.42 f*
+3869.81 837.91 -0.65 -2.75 -0.8 -2.56 -0.98 -2.32 -1.13 -2.15 -1.28 -1.93 -1.39 -1.74 -1.54 -1.54 
+-1.65 -1.37 -1.78 -1.17 -1.87 -1 -4 -1.52 -4.29 -0.89 -4.54 -0.29 -3.12 0.26 -2.93 0.52 
+-2.73 0.75 -2.56 1.02 -2.36 1.28 -2.17 1.5 -1.98 1.71 -1.78 1.93 -1.58 2.15 -1.39 2.35 
+-1.17 2.54 -0.98 2.71 -0.74 2.89 -0.54 3.05 -0.35 3.21 -0.11 3.35 0.21 4.84 0.56 4.36 
+0.93 3.91 1.21 3.49 1.48 3.06 1.71 2.69 1.91 2.32 2.06 2 2.17 1.67 2.26 1.37 
+2.3 1.11 2.3 0.84 2.28 0.61 2.22 0.43 4.05 0.3 -0.58 -8.85 -2.58 -0.24 -2.76 -0.78 
+-2.78 -1.32 -2.71 -1.91 -2.43 -2.52 -1.08 -1.5 -0.98 -1.67 -0.83 -1.83 -0.67 -1.97 -0.52 -2.17 
+-0.33 -2.34 34.72 0 -0.13 2.43 -0.37 2.23 -0.56 2.04 -0.78 1.86 -0.93 1.67 -1.06 1.5 
+-1.19 1.32 -1.31 1.15 -2.73 1.84 -2.84 1.26 -2.74 0.71 -2.41 0.21 0.58 8.85 4.14 -0.32 
+2.17 -0.41 2.19 -0.63 2.19 -0.89 2.15 -1.13 2.08 -1.43 1.97 -1.73 1.87 -2.08 1.71 -2.46 
+1.52 -2.82 1.32 -3.25 1.07 -3.67 0.8 -4.14 0.52 -4.64 0.17 -5.14 -44.14 0 0.22 -3.08 
+0.65 -3.37 1.2 -3.45 1.76 -3.3 1.15 -1.52 1.3 -1.41 1.48 -1.26 1.69 -1.09 1.89 -0.91 
+2.08 -0.67 2.3 -0.43 2.54 -0.13 2.56 0.22 2.39 0.63 2.21 1.04 2.02 1.41 1.84 1.78 
+1.63 2.13 1.43 2.43 1.22 2.73 9.42 0 f*
+3929.23 859.12 -9.42 0 -0.41 2.43 -0.8 2.35 -1.17 2.17 -1.59 1.97 -1.95 1.65 -2.35 1.28 
+-2.73 0.83 -3.13 0.28 -1.93 -0.11 -1.8 -0.34 -1.72 -0.55 -1.58 -0.78 -1.48 -0.96 -1.35 -1.16 
+-1.24 -1.35 -1.11 -1.52 -1.84 -3.52 -1.34 -4.12 -0.8 -4.64 -0.28 -5.1 0.3 -5.01 0.88 -4.45 
+1.43 -3.82 0.91 -1.69 1.05 -1.52 1.17 -1.34 1.28 -1.2 1.41 -0.99 1.52 -0.85 1.63 -0.65 
+1.73 -0.48 1.82 -0.28 1.95 -0.09 1.8 0.09 1.67 0.3 1.54 0.46 1.41 0.63 2.43 1.63 
+1.95 2.04 1.48 2.32 1.02 2.48 0.61 2.45 0.19 2.32 9.42 0 -0.08 -2.3 -0.31 -2.26 
+-0.48 -2.21 -0.67 -2.12 -0.87 -2.04 -1.07 -1.95 -1.25 -1.82 -1.46 -1.69 -1.63 -1.56 -1.84 -1.39 
+-2.02 -1.24 -2.21 -1.02 -2.43 -0.82 -2.61 -0.61 -2.8 -0.39 -2.99 -0.13 -3.39 0.2 -3.12 0.57 
+-2.87 0.89 -2.6 1.2 -2.37 1.49 -2.11 1.76 -1.89 2 -1.67 2.23 -1.43 2.41 -1.21 2.58 
+-1.02 2.71 -0.8 2.87 -0.63 2.93 -0.43 3.02 -0.34 6.16 0.3 4.23 0.63 3.86 0.93 3.54 
+1.2 3.19 1.45 2.87 1.65 2.54 1.82 2.26 1.95 1.98 2.06 1.66 2.13 1.43 2.16 1.18 
+2.17 0.93 2.13 0.7 2.09 0.48 3.79 0.39 4.17 -0.28 3.99 -0.89 3.73 -1.54 1.75 -1.02 
+1.65 -1.22 1.54 -1.39 1.43 -1.59 1.28 -1.78 1.15 -2 0.98 -2.19 0.8 -2.41 0.63 -2.65 
+0.43 -2.86 f*
+199.891 1339.08 27.0664 8.25 re
+f*
+238.13 1364.41 10 0 0.26 4.04 0.74 3.63 1.28 3.23 1.79 2.73 1.08 1.17 1.22 1.04 
+1.34 0.89 1.47 0.76 1.63 0.59 1.76 0.43 3.91 0.34 3.04 -0.28 2.84 -0.78 2.58 -1.31 
+2.28 -1.75 1.89 -2.21 1.45 -2.61 0.91 -3.02 0.3 -3.37 -0.26 -3.43 -0.84 -2.84 -1.41 -2.46 
+-1.96 -2.17 -2.56 -2.08 -3.14 -2.11 -8.05 -4.95 -6.84 -4 -2.93 -1.99 -2.62 -2.04 -2.35 -2.05 
+-2.06 -2.08 -1.8 -2.11 -1.56 -2.17 -1.33 -2.21 -1.08 -2.26 -0.89 -2.32 -0.71 -2.38 -0.87 -5 
+-0.26 -5.34 53.54 0 0 9.42 -42.36 0 1.06 3.63 1.43 3.02 1.89 2.56 2.38 2.3 
+2.93 2.17 3.54 2.24 9.11 5.32 5.3 2.61 4.38 2.93 3.56 3.21 2.8 3.38 2.09 3.56 
+1.41 3.61 0.8 3.62 0.26 3.58 -0.13 2.5 -0.39 2.38 -0.65 2.28 -0.89 2.15 -1.08 2.04 
+-1.33 1.89 -1.5 1.74 -1.67 1.61 -1.84 1.43 -2 1.28 -2.15 1.09 -2.26 0.91 -2.36 0.74 
+-2.47 0.52 -2.54 0.33 -2.63 0.11 -2.82 -0.11 -2.69 -0.31 -2.61 -0.52 -2.47 -0.74 -2.32 -0.96 
+-2.17 -1.17 -2.04 -1.37 -1.84 -1.61 -1.68 -1.82 -1.49 -2.04 -1.29 -2.28 -1.06 -2.49 -0.87 -2.74 
+-0.61 -2.95 -0.39 -3.16 -0.13 -3.43 f*
+326.39 1392.1 2.93 -0.24 2.78 -0.71 2.65 -1.13 2.49 -1.54 2.34 -1.91 2.17 -2.23 2 -2.54 
+1.84 -2.8 1.65 -3.04 1.43 -3.23 1.25 -3.43 1.04 -3.54 0.8 -3.64 0.61 -3.73 0.36 -3.76 
+0.11 -3.75 -0.11 -3.77 -0.36 -3.78 -0.61 -3.75 -0.8 -3.69 -1.04 -3.58 -1.25 -3.47 -1.43 -3.3 
+-1.65 -3.09 -1.84 -2.87 -2 -2.57 -2.17 -2.3 -2.34 -1.96 -2.49 -1.56 -2.65 -1.18 -2.78 -0.71 
+-2.93 -0.26 -2.91 0.26 -2.78 0.71 -2.65 1.18 -2.49 1.56 -2.35 1.96 -2.19 2.3 -2 2.57 
+-1.82 2.87 -1.65 3.09 -1.45 3.3 -1.23 3.47 -1.05 3.58 -0.82 3.69 -0.59 3.75 -0.37 3.78 
+-0.13 3.77 10.59 0 0.11 -3.69 0.26 -3.5 1.05 -6.42 1.61 -5.64 2.06 -4.77 1.17 -2.02 
+1.26 -1.8 1.3 -1.54 1.37 -1.28 1.41 -1.02 1.43 -0.72 1.43 -0.45 1.43 -0.15 1.45 0.15 
+1.43 0.45 1.43 0.72 1.39 1.02 1.37 1.28 1.33 1.54 1.23 1.8 1.17 2.02 2.08 4.77 
+1.58 5.64 1.05 6.42 0.28 3.5 0.09 3.69 -0.09 3.67 -0.28 3.47 -0.43 3.28 -0.61 3.08 
+-1.58 5.55 -0.99 2.43 -1.09 2.21 -1.17 2 -1.23 1.74 -1.33 1.47 -1.37 1.24 -1.39 0.98 
+-1.43 0.72 -1.43 0.41 -1.45 0.15 -1.43 -0.15 -1.43 -0.41 -1.43 -0.72 -1.41 -0.98 -1.37 -1.24 
+-1.3 -1.47 -1.26 -1.74 -1.17 -2 -1.09 -2.21 -0.97 -2.43 -1.61 -5.55 -0.59 -3.08 -0.46 -3.28 
+-0.26 -3.47 -0.11 -3.67 -10.59 0 0.13 3.75 0.37 3.76 0.59 3.73 0.82 3.64 1.05 3.54 
+1.23 3.43 1.45 3.23 1.65 3.04 1.82 2.8 2 2.54 2.19 2.23 2.35 1.91 2.49 1.54 
+2.65 1.13 2.78 0.71 2.91 0.24 f*
+199.891 1649.98 27.0664 8.24609 re
+f*
+265.19 1703 6.49 0 0 -80.12 -10 0 0 57.14 -17.67 0 0 7.08 7.12 0.82 
+3.21 0.7 2.91 1.13 1.34 0.8 1.26 1 1.15 1.21 1.07 1.46 0.96 1.74 0.82 2.02 
+0.74 2.34 0.61 2.69 f*
+326.39 1703 2.93 -0.24 2.78 -0.71 2.65 -1.13 2.49 -1.54 2.34 -1.91 2.17 -2.23 2 -2.54 
+1.84 -2.8 1.65 -3.04 1.43 -3.23 1.25 -3.43 1.04 -3.54 0.8 -3.64 0.61 -3.73 0.36 -3.76 
+0.11 -3.75 -0.11 -3.77 -0.36 -3.78 -0.61 -3.75 -0.8 -3.69 -1.04 -3.58 -1.25 -3.47 -1.43 -3.29 
+-1.65 -3.09 -1.84 -2.87 -2 -2.57 -2.17 -2.31 -2.34 -1.95 -2.49 -1.56 -2.65 -1.17 -2.78 -0.71 
+-2.93 -0.26 -2.91 0.26 -2.78 0.71 -2.65 1.17 -2.49 1.56 -2.35 1.95 -2.19 2.31 -2 2.57 
+-1.82 2.87 -1.65 3.09 -1.45 3.29 -1.23 3.47 -1.05 3.58 -0.82 3.69 -0.59 3.75 -0.37 3.78 
+-0.13 3.77 10.59 0 0.11 -3.69 0.26 -3.49 1.05 -6.42 1.61 -5.64 2.06 -4.77 1.17 -2.02 
+1.26 -1.8 1.3 -1.54 1.37 -1.28 1.41 -1.02 1.43 -0.72 1.43 -0.45 1.43 -0.15 1.45 0.15 
+1.43 0.45 1.43 0.72 1.39 1.02 1.37 1.28 1.33 1.54 1.23 1.8 1.17 2.02 2.08 4.77 
+1.58 5.64 1.05 6.42 0.28 3.49 0.09 3.69 -0.09 3.67 -0.28 3.47 -0.43 3.28 -0.61 3.08 
+-1.58 5.55 -0.99 2.43 -1.09 2.21 -1.17 2 -1.23 1.74 -1.33 1.47 -1.37 1.24 -1.39 0.98 
+-1.43 0.72 -1.43 0.41 -1.45 0.15 -1.43 -0.15 -1.43 -0.41 -1.43 -0.72 -1.41 -0.98 -1.37 -1.24 
+-1.3 -1.47 -1.26 -1.74 -1.17 -2 -1.09 -2.21 -0.97 -2.43 -1.61 -5.55 -0.59 -3.08 -0.46 -3.28 
+-0.26 -3.47 -0.11 -3.67 -10.59 0 0.13 3.75 0.37 3.76 0.59 3.73 0.82 3.64 1.05 3.54 
+1.23 3.43 1.45 3.23 1.65 3.04 1.82 2.8 2 2.54 2.19 2.23 2.35 1.91 2.49 1.54 
+2.65 1.13 2.78 0.71 2.91 0.24 f*
+326.39 2013.89 2.93 -0.24 2.78 -0.71 2.65 -1.13 2.49 -1.54 2.34 -1.91 2.17 -2.23 2 -2.54 
+1.84 -2.8 1.65 -3.04 1.43 -3.23 1.25 -3.43 1.04 -3.54 0.8 -3.64 0.61 -3.73 0.36 -3.76 
+0.11 -3.75 -0.11 -3.78 -0.36 -3.77 -0.61 -3.75 -0.8 -3.69 -1.04 -3.58 -1.25 -3.47 -1.43 -3.29 
+-1.65 -3.09 -1.84 -2.87 -2 -2.58 -2.17 -2.3 -2.34 -1.95 -2.49 -1.56 -2.65 -1.17 -2.78 -0.71 
+-2.93 -0.26 -2.91 0.26 -2.78 0.71 -2.65 1.17 -2.49 1.56 -2.35 1.95 -2.19 2.3 -2 2.58 
+-1.82 2.87 -1.65 3.09 -1.45 3.29 -1.23 3.47 -1.05 3.58 -0.82 3.69 -0.59 3.75 -0.37 3.77 
+-0.13 3.78 10.59 0 0.11 -3.69 0.26 -3.49 1.05 -6.42 1.61 -5.64 2.06 -4.77 1.17 -2.02 
+1.26 -1.8 1.3 -1.54 1.37 -1.28 1.41 -1.02 1.43 -0.72 1.43 -0.45 1.43 -0.15 1.45 0.15 
+1.43 0.45 1.43 0.72 1.39 1.02 1.37 1.28 1.33 1.54 1.23 1.8 1.17 2.02 2.08 4.77 
+1.58 5.64 1.05 6.42 0.28 3.49 0.09 3.69 -0.09 3.66 -0.28 3.47 -0.43 3.28 -0.61 3.09 
+-1.58 5.55 -0.99 2.43 -1.09 2.21 -1.17 2 -1.23 1.74 -1.33 1.47 -1.37 1.24 -1.39 0.98 
+-1.43 0.72 -1.43 0.41 -1.45 0.15 -1.43 -0.15 -1.43 -0.41 -1.43 -0.72 -1.41 -0.98 -1.37 -1.24 
+-1.3 -1.47 -1.26 -1.74 -1.17 -2 -1.09 -2.21 -0.97 -2.43 -1.61 -5.55 -0.59 -3.09 -0.46 -3.28 
+-0.26 -3.47 -0.11 -3.66 -10.59 0 0.13 3.75 0.37 3.76 0.59 3.73 0.82 3.64 1.05 3.54 
+1.23 3.43 1.45 3.23 1.65 3.04 1.82 2.8 2 2.54 2.19 2.23 2.35 1.91 2.49 1.54 
+2.65 1.13 2.78 0.71 2.91 0.24 f*
+265.19 2324.79 6.49 0 0 -80.12 -10 0 0 57.14 -17.67 0 0 7.08 7.12 0.82 
+3.21 0.7 2.91 1.13 1.34 0.8 1.26 1 1.15 1.21 1.07 1.46 0.96 1.73 0.82 2.02 
+0.74 2.34 0.61 2.69 f*
+326.39 2324.79 2.93 -0.24 2.78 -0.71 2.65 -1.13 2.49 -1.54 2.34 -1.91 2.17 -2.24 2 -2.54 
+1.84 -2.79 1.65 -3.04 1.43 -3.23 1.25 -3.43 1.04 -3.54 0.8 -3.65 0.61 -3.73 0.36 -3.76 
+0.11 -3.75 -0.11 -3.78 -0.36 -3.77 -0.61 -3.75 -0.8 -3.69 -1.04 -3.58 -1.25 -3.47 -1.43 -3.29 
+-1.65 -3.09 -1.84 -2.87 -2 -2.58 -2.17 -2.3 -2.34 -1.95 -2.49 -1.56 -2.65 -1.17 -2.78 -0.71 
+-2.93 -0.26 -2.91 0.26 -2.78 0.71 -2.65 1.17 -2.49 1.56 -2.35 1.95 -2.19 2.3 -2 2.58 
+-1.82 2.87 -1.65 3.09 -1.45 3.29 -1.23 3.47 -1.05 3.58 -0.82 3.69 -0.59 3.75 -0.37 3.77 
+-0.13 3.78 10.59 0 0.11 -3.69 0.26 -3.49 1.05 -6.42 1.61 -5.64 2.06 -4.77 1.17 -2.02 
+1.26 -1.8 1.3 -1.54 1.37 -1.28 1.41 -1.02 1.43 -0.72 1.43 -0.45 1.43 -0.15 1.45 0.15 
+1.43 0.45 1.43 0.72 1.39 1.02 1.37 1.28 1.33 1.54 1.23 1.8 1.17 2.02 2.08 4.77 
+1.58 5.64 1.05 6.42 0.28 3.49 0.09 3.69 -0.09 3.66 -0.28 3.47 -0.43 3.28 -0.61 3.09 
+-1.58 5.55 -0.99 2.43 -1.09 2.21 -1.17 2 -1.23 1.74 -1.33 1.47 -1.37 1.24 -1.39 0.98 
+-1.43 0.72 -1.43 0.41 -1.45 0.15 -1.43 -0.15 -1.43 -0.41 -1.43 -0.72 -1.41 -0.98 -1.37 -1.24 
+-1.3 -1.47 -1.26 -1.74 -1.17 -2 -1.09 -2.21 -0.97 -2.43 -1.61 -5.55 -0.59 -3.09 -0.46 -3.28 
+-0.26 -3.47 -0.11 -3.66 -10.59 0 0.13 3.75 0.37 3.76 0.59 3.73 0.82 3.65 1.05 3.54 
+1.23 3.43 1.45 3.23 1.65 3.04 1.82 2.79 2 2.54 2.19 2.24 2.35 1.91 2.49 1.54 
+2.65 1.13 2.78 0.71 2.91 0.24 f*
+5.55556 w
+794.12 984.61 0 82.49 S
+1070.64 984.61 0 82.49 S
+1347.13 984.61 0 82.49 S
+1623.63 984.61 0 82.49 S
+1900.15 984.61 0 82.49 S
+2176.65 984.61 0 82.49 S
+2453.14 984.61 0 82.49 S
+2729.67 984.61 0 82.49 S
+3006.16 984.61 0 82.49 S
+3282.66 984.61 0 82.49 S
+3559.18 984.61 0 82.49 S
+3835.68 984.61 0 82.49 S
+794.12 2499.35 0 -82.49 S
+1070.64 2499.35 0 -82.49 S
+1347.13 2499.35 0 -82.49 S
+1623.63 2499.35 0 -82.49 S
+1900.15 2499.35 0 -82.49 S
+2176.65 2499.35 0 -82.49 S
+2453.14 2499.35 0 -82.49 S
+2729.67 2499.35 0 -82.49 S
+3006.16 2499.35 0 -82.49 S
+3282.66 2499.35 0 -82.49 S
+3559.18 2499.35 0 -82.49 S
+3835.68 2499.35 0 -82.49 S
+435.25 1350.57 82.38 0 S
+435.25 1661.46 82.38 0 S
+435.25 1972.35 82.38 0 S
+435.25 2283.25 82.38 0 S
+2.77778 w
+476.43 1288.39 41.19 0 S
+476.43 1226.21 41.19 0 S
+476.43 1164.02 41.19 0 S
+476.43 1101.84 41.19 0 S
+476.43 1412.74 41.19 0 S
+476.43 1474.91 41.19 0 S
+476.43 1537.11 41.19 0 S
+476.43 1599.29 41.19 0 S
+476.43 1723.63 41.19 0 S
+476.43 1785.8 41.19 0 S
+476.43 1848 41.19 0 S
+476.43 1910.18 41.19 0 S
+476.43 2034.53 41.19 0 S
+476.43 2096.7 41.19 0 S
+476.43 2158.9 41.19 0 S
+476.43 2221.07 41.19 0 S
+476.43 2345.42 41.19 0 S
+476.43 2407.59 41.19 0 S
+5.55556 w
+4194.55 1350.57 -82.38 0 S
+4194.55 1661.46 -82.38 0 S
+4194.55 1972.35 -82.38 0 S
+4194.55 2283.25 -82.38 0 S
+2.77778 w
+4153.36 1288.39 -41.19 0 S
+4153.36 1226.21 -41.19 0 S
+4153.36 1164.02 -41.19 0 S
+4153.36 1101.84 -41.19 0 S
+4153.36 1412.74 -41.19 0 S
+4153.36 1474.91 -41.19 0 S
+4153.36 1537.11 -41.19 0 S
+4153.36 1599.29 -41.19 0 S
+4153.36 1723.63 -41.19 0 S
+4153.36 1785.8 -41.19 0 S
+4153.36 1848 -41.19 0 S
+4153.36 1910.18 -41.19 0 S
+4153.36 2034.53 -41.19 0 S
+4153.36 2096.7 -41.19 0 S
+4153.36 2158.9 -41.19 0 S
+4153.36 2221.07 -41.19 0 S
+4153.36 2345.42 -41.19 0 S
+4153.36 2407.59 -41.19 0 S
+5.55556 w
+4112.17 1067.1 -3594.55 0 0 1349.76 ^ ^ ^ S
+cleartomark end end pagesave restore
+ showpage
+%%PageTrailer
+%%Trailer
+%%Pages: 1
diff --git a/doc/xmp/fgr3.png b/doc/xmp/fgr3.png
new file mode 100755
index 0000000..58fcac9
Binary files /dev/null and b/doc/xmp/fgr3.png differ
diff --git a/doc/xmp/fgr3.txt b/doc/xmp/fgr3.txt
new file mode 100644
index 0000000..84af2c5
--- /dev/null
+++ b/doc/xmp/fgr3.txt
@@ -0,0 +1 @@
+Monthly Cycle.
diff --git a/doc/xmp/glb_avg.sh b/doc/xmp/glb_avg.sh
new file mode 100755
index 0000000..4c6b501
--- /dev/null
+++ b/doc/xmp/glb_avg.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+#===========================================================================
+# After cmb_fl.sh
+# Example: Long-term average of each model globally
+#
+# Input files like:
+# /data/cmip5/snc_LImon_bcc-csm1-1_historical_r1i1p1_185001-200512.nc
+# 
+# Output files like:
+# /data/cmip5/output/snc/snc_LImon_all-mdl_historical_all-nsm_clm.nc
+#
+# Online: 
+#  http://nco.sourceforge.net/nco.html#Global-Distribution-of-Long_002dterm-Average
+#
+# Execute this script: bash glb_avg.sh
+#===========================================================================
+
+#---------------------------------------------------------------------------
+# Parameters
+drc_in='/home/wenshanw/data/cmip5/'		# Directory of input files
+drc_out='/home/wenshanw/data/cmip5/output/'	# Directory of output files
+
+var=( 'snc' 'snd' )		# Variables
+rlm='LImon'			# Realm
+xpt=( 'historical' )		# Experiment ( could be more )
+
+fld_out=( 'snc/' 'snd/' )		# Folders of output files
+#---------------------------------------------------------------------------
+
+for var_id in {0..1}; do	# Loop over two variables
+  # Names of all models 
+  #   (ls [get file names]; cut [get the part for model names]; 
+  #   sort; uniq [remove duplicates]; awk [print])
+  mdl_set=$( ls ${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc | \
+    cut -d '_' -f 3 | sort | uniq -c | awk '{print $2}' )
+  # Number of models (echo [print contents]; wc [count])
+  mdl_num=$( echo ${mdl_set} | wc -w )		
+  
+  for mdl in ${mdl_set}; do				# Loop over models
+  	# Average all the ensemble members of each model
+  	ncea -O -4 -d time,"1956-01-01 00:00:0.0","2005-12-31 23:59:9.9" \
+      ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}\
+      _all-nsm_195601-200512.nc
+  	
+  	# Average along time
+  	ncra -O ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}\
+      _all-nsm_195601-200512.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+  
+  	echo Model ${mdl} done!
+  done
+
+	# Remove temporary files
+	rm ${drc_out}${fld_out[var_id]}${var[var_id]}*historical*.nc
+  
+  # Store models as groups in the output file
+  ncecat -O --gag ${drc_out}${fld_out[var_id]}${var[var_id]}_*.nc \
+    ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+    all-mdl_${xpt[0]}_all-nsm_clm.nc
+
+	echo Var ${var[var_id]} done!
+done
diff --git a/doc/xmp/grp.sh b/doc/xmp/grp.sh
new file mode 100644
index 0000000..d5eb90e
--- /dev/null
+++ b/doc/xmp/grp.sh
@@ -0,0 +1,112 @@
+#!/bin/bash
+#
+#============================================================
+# Process netCDF-4 files with nested groups
+#  - Create groups
+#    - Input files as top level groups
+#    - And/Or append variables or groups from other files
+#  - Hyperslab
+#  - Spatial average
+#  - Time average
+#  - Anomaly
+#============================================================
+#- Directory of input files
+drc_in='/media/grele_data/wenshan/cesm/historical-exp/nco_grp/'
+
+#------------------------------------------------------------ 
+# Create groups
+#------------------------------------------------------------
+# Input files as top level groups; group name = file name
+#   - The input files are:
+#       CCSM4_his.nc
+#       CESM1-BGC_esmHis.nc
+#       CESM1-BGC_his.nc
+#       CESM1-CAM5_his.nc
+#       CESM1-FASTCHEM_his.nc
+#       CESM1-WACCM_his.nc
+#   - One file looks like:
+#       dimensions:
+#         lat = 192
+#         lon = 288
+#         time = 192  // unlimited
+#       variables:
+#         double lat ( lat )
+#           units :	degrees_north
+#           axis :	Y
+#           long_name :	latitude
+#         double lon ( lon )
+#           units : degrees_east
+#           axis :  X
+#           long_name : longitude
+#         float snc ( time, lat, lon )
+#           long_name : Snow Area Cover
+#           units : %
+#           _FillValue : 1e+20
+#       ...
+#------------------------------------------------------------         
+ncecat --gag ${drc_in}C*.nc ${drc_in}snc_LImon_r1i1p1_199001-200512.nc
+# Same for snow depth data (ie, snd) 
+# Pay attention to the files you list using *; here I changed the files manually
+ncecat --gag ${drc_in}C*.nc ${drc_in}snd_LImon_r1i1p1_199001-200512.nc
+
+# Append variables
+# - Append variable snc in each group in file snc_LImon_r1i1p1_199001-200512.nc 
+#   to the coresponding group in file snd_LImon_r1i1p1_199001-200512.nc
+sfx='_LImon_r1i1p1_199001-200512'
+ncks -A -v snc ${drc_in}snc${sfx}.nc ${drc_in}snd${sfx}.nc
+# - Rename output file
+mv ${drc_in}snd${sfx}.nc ${drc_in}snow${sfx}.nc
+
+# Append groups
+# - Multiple group levels
+#   - Input files as top level  
+ncecat --gag ${drc_in}r?i1p1.nc ${drc_in} \
+  snc_LImon_CCSM4_historical_all-nsm_199001-200512.nc
+#   - /r?i1p1 --> /CCSM4_his/r?i1p1
+ncks -G CCSM4_his -O \
+  ${drc_in}snc_LImon_CCSM4_historical_all-nsm_199001-200512.nc \
+  ${drc_in}snc_LImon_CCSM4_historical_all-nsm_199001-200512.nc
+# - Append group
+ncks -A -g CCSM4_his \
+  ${drc_in}snc_LImon_CCSM4_historical_all-nsm_199001-200512.nc \
+  ${drc_in}snc_LImon_CESM1-CAM5_historical_all-nsm_199001-200512.nc
+# Rename output file
+mv ${drc_in}snc_LImon_CESM1-CAM5_historical_all-nsm_199001-200512.nc \
+  ${drc_in}snc_LImon_all-mdl_historical_all-nsm_199001-200512.nc
+
+#------------------------------------------------------------
+# Hyperslab
+#------------------------------------------------------------
+# Greenland
+ncks -O -d lat,60.0,75.0 -d lon,300.0,340.0 ${drc_in}snow${sfx}.nc \
+  ${drc_in}snow${sfx}_GrIS.nc
+
+#------------------------------------------------------------
+# Spatial Average
+#------------------------------------------------------------
+ncwa -O -a lat,lon ${drc_in}snow${sfx}_GrIS.nc \
+  ${drc_in}snow${sfx}_GrIS-avg.nc
+
+#------------------------------------------------------------
+# Hyperslab and spatial average in one step
+#------------------------------------------------------------
+ncwa -O -d lat,60.0,75.0 -d lon,300.0,340.0 -a lat,lon \
+  ${drc_in}snow${sfx}.nc ${drc_in}${sfx}_GrIS-avg.nc
+
+#------------------------------------------------------------
+# Time Average (eg, monthly)
+#------------------------------------------------------------
+for moy in {1..12}; do  # Loop over months
+  mm=$( printf "%02d" ${moy} ) # Change to 2-digit format
+
+  ncwa -O -d time,"1990-${mm}-01 00:00:0.0","2005-${mm}-21 23:59:9.9",12 \
+    -a time ${drc_in}snow${sfx}_GrIS.nc ${drc_in}snow${sfx}_GrIS_${mm}.nc
+done
+ncecat -O -u mon ${drc_in}snow${sfx}_GrIS_??.nc \
+  ${drc_in}snow${sfx}_GrIS_mon-avg.nc
+
+#------------------------------------------------------------
+# Anomaly
+#------------------------------------------------------------
+ncbo -O --op_typ=- ${drc_in}snow${sfx}_GrIS.nc ${drc_in}snow${sfx}_GrIS-avg.nc \
+  ${drc_in}snow${sfx}_GrIS-anomaly.nc
diff --git a/doc/xmp/gsl_rgr.nco b/doc/xmp/gsl_rgr.nco
new file mode 100755
index 0000000..6298bed
--- /dev/null
+++ b/doc/xmp/gsl_rgr.nco
@@ -0,0 +1,41 @@
+// Linear Regression
+// Called by ann_avg.sh
+// Caution: make sure the variable name is 
+//  in agreement with the main script (now is 'snd')
+// Online: http://nco.sourceforge.net/nco.html#Annual-Average-over-Regions
+
+// Declare variables
+*c0[$rgn]=0.;        // Intercept
+*c1[$rgn]=0.;        // Slope
+*sdv[$rgn]=0.;       // Standard deviation
+*covxy[$rgn]=0.;     // Covariance
+*x = double(time);
+
+for (*rgn_id=0;rgn_id<$rgn.size;rgn_id++)   // Loop over regions
+{
+	gsl_fit_linear(time,1,snd(:,rgn_id),1,$time.size, \
+    &tc0, &tc1, &cov00, &cov01,&cov11,&sumsq); // Linear regression function
+	c0(rgn_id) = tc0;    // Output results
+	c1(rgn_id) = tc1;
+	covxy(rgn_id) = gsl_stats_covariance(time,1,\
+    $time.size,double(snd(:,rgn_id)),1,$time.size); // Covariance function
+	sdv(rgn_id) = gsl_stats_sd(snd(:,rgn_id), \
+    1, $time.size);   // Standard deviation function
+}
+
+// P value------------------------------------------------------------
+*time_sdv = gsl_stats_sd(time, 1, $time.size);
+*r_value = covxy/(time_sdv*sdv); 
+*t_value = r_value/sqrt((1-r_value^2)/($time.size-2));
+pval = abs(gsl_cdf_tdist_P(t_value, $time.size-2) - \
+  gsl_cdf_tdist_P(-t_value, $time.size-2));
+//----------------------------------------------------------------
+
+// Write RAM variables to disk
+//------------------------------------------------------------
+// Usually NCO writes the outputs directly to disk
+// Using RAM variables, declared by *, will shorten running time
+// Output the final results using ram_write()
+//------------------------------------------------------------
+ram_write(c0);
+ram_write(c1);
diff --git a/doc/xmp/mcc.sh b/doc/xmp/mcc.sh
new file mode 100755
index 0000000..db36bc1
--- /dev/null
+++ b/doc/xmp/mcc.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+#============================================================
+# After cmb_fl.sh
+# Example: Monthly cycle of each model in Greenland
+#
+# Input files:
+# /data/cmip5/snc_LImon_bcc-csm1-1_historical_r1i1p1_185001-200512.nc
+#
+# Output files:
+# /data/cmip5/snc/snc_LImon__all-mdl_historical_all-nsm_GN_mthly-anm.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Monthly-Cycle
+#
+# Execute this script: bash mcc.sh
+#============================================================
+
+#------------------------------------------------------------
+# Parameters
+drc_in='/home/wenshanw/data/cmip5/'		# Directory of input files
+drc_out='/home/wenshanw/data/cmip5/output/'	# Directory of output files
+
+var=( 'snc' 'snd' )		# Variables
+rlm='LImon'			# Realm
+xpt=( 'historical' )		# Experiment ( could be more )
+
+fld_out=( 'snc/' 'snd/' )		# Folders of output files
+#------------------------------------------------------------
+
+for var_id in {0..1}; do		# Loop over two variables
+  # names of all models 
+  #  (ls [get file names]; cut [get the part for model names]; 
+  #  sort; uniq [remove duplicates]; awk [print])
+  mdl_set=$( ls ${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc | \
+    cut -d '_' -f 3 | sort | uniq -c | awk '{print $2}' )
+
+  for mdl in ${mdl_set}; do		## Loop over models
+    # Average all the ensemble members of each model
+    ncea -O -4 -d time,"1956-01-01 00:00:0.0","2005-12-31 23:59:9.9" \
+      ${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc
+    
+    # Greenland
+    # Geographical weight
+    ncap2 -O -s \
+      'gw = cos(lat*3.1415926/180.); \
+      gw at long_name="geographical weight";gw at units="ratio"' \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc
+    ncwa -O -w gw -d lat,60.0,75.0 -d lon,300.0,340.0 -a lat,lon \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN.nc
+    
+    # Anomaly----------------------------------------
+    for moy in {1..12}; do		# Loop over months
+      mm=$( printf "%02d" ${moy} )	# Change to 2-digit format
+      
+      for yr in {1956..2005}; do		# Loop over years
+        # If January, calculate the annual average
+        if [ ${moy} -eq 1 ]; then	 
+        	ncra -O -d time,"${yr}-01-01 00:00:0.0","${yr}-12-31 23:59:9.9" \
+            ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_\
+            ${xpt[0]}_all-nsm_GN.nc ${drc_out}${fld_out[var_id]}${var[var_id]}_\
+            ${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}.nc
+        fi
+        
+        # The specific month
+        ncks -O -d time,"${yr}-${mm}-01 00:00:0.0","${yr}-${mm}-31 23:59:9.9" \
+          ${drc_out}${fld_out[var_id]}${var[var_id]}_\
+          ${rlm}_${mdl}_${xpt[0]}_all-nsm_GN.nc \
+          ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_\
+          all-nsm_GN_${yr}${mm}.nc
+        # Subtract the annual average from the monthly data
+        ncbo -O --op_typ=- ${drc_out}${fld_out[var_id]}${var[var_id]}_\
+          ${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}${mm}.nc \
+          ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_\
+          all-nsm_GN_${yr}.nc ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_\
+          ${mdl}_${xpt[0]}_all-nsm_GN_${yr}${mm}_anm.nc
+      done
+      
+      # Average over years
+      ncra -O ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_\
+        ${xpt[0]}_all-nsm_GN_????${mm}_anm.nc \
+        ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_\
+        ${xpt[0]}_all-nsm_GN_${mm}_anm.nc
+    done
+    #--------------------------------------------------
+    
+    # Concatenate months together
+    ncrcat -O ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_\
+      ${xpt[0]}_all-nsm_GN_??_anm.nc \
+      ${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+    
+    echo Model ${mdl} done!
+  done
+  
+  rm -f ${drc_out}${fld_out[var_id]}${var[var_id]}*historical*
+  
+  # Store models as groups in the output file
+  ncecat -O --gag -v ${var[var_id]} \
+    ${drc_out}${fld_out[var_id]}${var[var_id]}_*.nc \
+    ${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_all-mdl_\
+    ${xpt[0]}_all-nsm_GN_mthly-anm.nc
+  
+  echo Var ${var[var_id]} done!
+done
diff --git a/doc/xmp/mcc_grp.sh b/doc/xmp/mcc_grp.sh
new file mode 100644
index 0000000..745c40f
--- /dev/null
+++ b/doc/xmp/mcc_grp.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+# Complied by Wang Wenshan 2013-09-22 Sunday 21:37:11
+#============================================================
+# Monthly cycle of each ensemble member in Greenland
+#
+# Input file from cmb_fl_grpsh
+#   sn_LImon_all-mdl_all-xpt_all-nsm_199001-200512.nc
+# Online: http://nco.sourceforge.net/nco.html#Monthly-Cycle
+#
+# Execute this script in command line: bash mcc_grp.sh
+#============================================================
+# Input and output directory
+drc='/media/grele_data/wenshan/cesm/historical-exp/nco_grp/grp/'
+
+# Constants
+rlm='LImon'    # Realm: LandIce; Time frequency: monthly
+tms='199001-200512'     # Timeseris
+flt='nc'     # File Type
+var='sn'      # Variable
+lbl='all-mdl_all-xpt_all-nsm'     # Label
+
+# Greenland
+ncwa -O -w gw -d lat,60.0,75.0 -d lon,300.0,340.0 -a lat,lon \
+  ${drc}${var}_${rlm}_${lbl}_${tms}.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt}
+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+# time is no longer the record dimension in the outputs
+ncks -O --mk_rec_dmn time \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt}
+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+# Anomaly from annual average of each year 
+for yyyy in {1990..2005}; do
+  # Annual average
+  ncwa -O -d time,"${yyyy}-01-01","${yyyy}-12-31" \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt} \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld_${yyyy}.${flt}
+
+  # Anomaly
+  ncbo -O --op_typ=- -d time,"${yyyy}-01-01","${yyyy}-12-31" \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld.${flt} \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld_${yyyy}.${flt} \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld_${yyyy}_anm.${flt}
+done
+
+# Monthly cycle
+for moy in {1..12}; do
+  mm=$( printf "%02d" ${moy} )      # Change to 2-digit format
+  ncra -O -d time,"1990-${mm}-01",,12 \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld_????_anm.${flt} \
+    ${drc}${var}_${rlm}_${lbl}_${tms}_gld_${mm}_anm.${flt}
+done
+# Concatenate 12 months together
+ncrcat -O ${drc}${var}_${rlm}_${lbl}_${tms}_gld_??_anm.${flt} \
+  ${drc}${var}_${rlm}_${lbl}_${tms}_gld_mth_anm.${flt}
diff --git a/doc/xmp/pmt_crd.sh b/doc/xmp/pmt_crd.sh
new file mode 100755
index 0000000..f3aed7f
--- /dev/null
+++ b/doc/xmp/pmt_crd.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+##===========================================================================
+## Example for
+##	- permute coordinates: the grid of MODIS is 
+##		from (-180 degE, 90 degN), the left-up corner, to
+##		(180 degE, -90 degN), the right-low corner. However, CMIP5 is
+##		from (0 degE, -90 degN) to (360 degE, 90 degN). The script
+##		here changes the MODIS grid to CMIP5 grid.
+##
+## Input files:
+## /modis/mcd43c3/cesm-grid/MCD43C3.2000049.regrid.nc
+##
+## Output files:
+## /modis/mcd43c3/cesm-grid/MCD43C3.2000049.regrid.nc
+##
+## Online: http://nco.sourceforge.net/nco.html#Permute-MODIS-Coordinates
+##
+## Execute this script: bash pmt_crd.sh
+##===========================================================================
+
+##---------------------------------------------------------------------------
+## Permute coordinates
+##	- Inverse lat from (90,-90) to (-90,90)
+##	- Permute lon from (-180,180) to (0,360)
+for fn in $( ls MCD43C3.*.nc ); do      # Loop over files
+  sfx=$( echo ${fn} | cut -d '.' -f 1-3 )     # Part of file names
+  echo ${sfx}
+  
+  ## Lat
+  ncpdq -O -a -lat ${fn} ${fn}      # Inverse latitude (NB: there is '-' before 'lat')
+  
+  ## Lon
+  ncks -O --msa -d lon,0.0,180.0 -d lon,-180.0,-1.25 ${fn} ${fn}
+
+  ## Add new longitude coordinates
+  ncap2 -O -s 'lon=array(0.0,1.25,$lon)' ${fn} ${fn}
+done
diff --git a/doc/xmp/rgr.sh b/doc/xmp/rgr.sh
new file mode 100755
index 0000000..86f5ffc
--- /dev/null
+++ b/doc/xmp/rgr.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# include bi_interp.nco
+
+#===========================================================================
+# Example for
+#	- regrid (using bi_interp.nco): the spatial resolution of MODIS data 
+#		is much finer than those of CMIP5 models. In order to compare
+#		the two, we can regrid MODIS data to comform to CMIP5.
+#
+# Input files (Note: the .hdf files downloaded have to be converted to .nc at
+# the present):
+# /modis/mcd43c3/MCD43C3.A2000049.005.2006271205532.nc
+#
+# Output files:
+# /modis/mcd43c3/cesm-grid/MCD43C3.2000049.regrid.nc
+#
+# Online: http://nco.sourceforge.net/nco.html#Regrid-MODIS-Data
+#
+# Execute this script: bash rgr.sh
+#===========================================================================
+
+var=( 'MCD43C3' )     # Variable 
+fld_in=( 'monthly/' )     # Folder of input files
+fld_out=( 'cesm-grid/' )      # Folder of output files
+drc_in='/media/grele_data/wenshan/modis/mcd43c3/'     # Directory of input files
+
+for fn in $( ls ${drc_in}${fld_in}${var}.*.nc ); do		# Loop over files
+  sfx=$( echo $fn | cut -d '/' -f 8 | cut -d '.' -f 2 ) # Part of file names
+  
+  # Regrid
+  ncap2 -O -S bi_interp.nco ${fn} ${drc_in}${fld_out}${var}.${sfx}.regrid.nc
+  # Keep only the new variables
+  ncks -O -v wsa_sw_less,bsa_sw_less ${drc_in}${fld_out}${var}.${sfx}.regrid.nc \
+    ${drc_in}${fld_out}${var}.${sfx}.regrid.nc
+  # Rename the new variables, dimensions and attributions
+  ncrename -O -d latn,lat -d lonn,lon -v latn,lat -v lonn,lon \
+    -v wsa_sw_less,wsa_sw -v bsa_sw_less,bsa_sw -a missing_value,_FillValue \
+    ${drc_in}${fld_out}${var}.${sfx}.regrid.nc
+  
+  echo $sfx done.
+done
diff --git a/doc/xmp_cesm.html b/doc/xmp_cesm.html
new file mode 100644
index 0000000..57a9cad
--- /dev/null
+++ b/doc/xmp_cesm.html
@@ -0,0 +1,782 @@
+<!-- $Header: /cvsroot/nco/nco/doc/xmp_cesm.html,v 1.4 2013/12/02 01:05:56 zender Exp $
+Purpose: NCO processing of CMIP5 and MODIS data
+
+URL:
+http://nco.sf.net/xmp_cesm.html
+http://dust.ess.uci.edu/nco/xmp_cesm.html
+file:///home/zender/nco/doc/xmp_cesm.html
+
+Usage:
+/usr/bin/scp ~/nco/doc/xmp_cesm.html zender,nco at web.sf.net:/home/project-web/nco/htdocs
+scp -p ~/nco/doc/xmp_cesm.html dust.ess.uci.edu:/var/www/html/nco
+-->
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
+  "http://www.w3.org/TR/html4/loose.dtd">  
+<html > 
+<head><title></title> 
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
+<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
+<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)"> 
+<!-- html --> 
+<meta name="src" content="cesm-eg.tex"> 
+<meta name="date" content="2013-02-19 15:02:00"> 
+<link rel="stylesheet" type="text/css" href="cesm-eg.css"> 
+</head><body 
+>
+<div class="flushleft" 
+>
+<!--l. 196--><p class="noindent" >
+ <span 
+class="cmbx-12x-x-144">Pre-ACCESS CMIP5/MODIS analysis scripts</span><br />
+</div>
+<!--l. 206--><p class="noindent" >The fifth phase of the Coupled Model Intercomparison Project (CMIP5) provides a multi-model
+framework for comparing the mechanisms and responses of climate models from around the world.
+However, the workload of retrieving a certain climate statistic from all these models, each of which includes
+several ensemble members, is tremendous. Not only that, it is too
+      often a repetitive process which impedes new research and
+      hypothesis testing.
+Our NASA ACCESS project is designed to simplify and accelerate this
+      process.
+To begin, we have documented below a prototypical example of CMIP5
+      analysis and evaluation using traditional NCO commands on
+      netCDF3-format model and HDF-EOS format observational (NASA
+      MODIS satellite instrument) datasets. 
+These examples complement the NCO User's Guide by detailing
+in-depth data analysis in a frequently encountered “real
+      world” context.
+Graphical representations of the results (NCL scripts available upon
+      request) are provided to illustrate physical meaning of the analysis.
+Over the summer of 2013, we will add scripts which make use of new NCO
+      features that combine all the loops in the analysis into single
+      commands by exploiting NCO's new group aggregation and
+      arithmetic features.
+<br 
+class="newline" />
+   <h3 class="likesectionHead"><a 
+ id="x1-1000"></a>Sample Scripts</h3>
+<!--l. 214--><p class="noindent" >
+      <ol  class="enumerate1" >
+      <li 
+  class="enumerate" id="x1-1002x1"><a 
+href="#x1-20001">Combine Files</a> <br 
+class="newline" />Sometimes, the data of one ensemble member will be stored in several files to
+      reduce single file size. This script illustrates how to concatenate these files into one,
+      including:
+           <ol  class="enumerate2" >
+           <li 
+  class="enumerate" id="x1-1004x1">Obtain the number and names (or partial names) of files in directory;
+           </li>
+           <li 
+           class="enumerate" id="x1-1006x2">Concatenate files along record dimension (the left-most dimension) using <a href="http://nco.sourceforge.net/nco.html#ncrcat-netCDF-Record-Concatenator">ncrcat</a>.</li></ol>
+      </li>
+      <li 
+  class="enumerate" id="x1-1008x2"><a 
+href="#x1-30002">Global Distribution of Long-term Average</a> (see <a 
+href="#x1-10511">Fig. 1</a>) <br 
+class="newline" />
+           <ol  class="enumerate2" >
+           <li 
+           class="enumerate" id="x1-1010x1">Average the ensemble members of each model using <a href="http://nco.sourceforge.net/nco.html#nces-netCDF-Ensemble-Averager">nces</a>;
+           </li>
+           <li 
+           class="enumerate" id="x1-1012x2">Average along the record dimension (the left-most) using <a href="http://nco.sourceforge.net/nco.html#ncra-netCDF-Record-Averager">ncra</a>;
+           </li>
+           <li 
+           class="enumerate" id="x1-1014x3">Store the results of one model as a group in the output file using <a href="http://nco.sourceforge.net/nco.html#ncecat-netCDF-Ensemble-Concatenator">ncecat</a> with the
+           option of –gag;</li></ol>
+      </li>
+      <li 
+  class="enumerate" id="x1-1016x3"><a 
+href="#x1-40003">Annual Average over Regions</a> (see <a 
+href="#x1-10522">Fig. 2</a>) <br 
+class="newline" />
+                                                                                         
+                                                                                         
+           <ol  class="enumerate2" >
+           <li 
+           class="enumerate" id="x1-1018x1">Spatial average using <a href="http://nco.sourceforge.net/nco.html#ncap2-netCDF-Arithmetic-Processor">ncap2</a> and <a href="http://nco.sourceforge.net/nco.html#ncwa-netCDF-Weighted-Averager">ncwa</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1020x2">Change the order of dimensions using <a href="http://nco.sourceforge.net/nco.html#ncpdq-netCDF-Permute-Dimensions-Quickly">ncpdq</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1022x3">Annual average using <a href="http://nco.sourceforge.net/nco.html#ncra-netCDF-Record-Averager">ncra</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1024x4">Anomaly from long-term average using <a href="http://nco.sourceforge.net/nco.html#ncbo-netCDF-Binary-Operator">ncbo</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1026x5">Standard deviation using ncbo and <a href="http://nco.sourceforge.net/nco.html#nces-netCDF-Ensemble-Averager">nces</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1028x6">Rename variables using <a href="http://nco.sourceforge.net/nco.html#ncrename-netCDF-Renamer">ncrename</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1030x7">Edit attributions using <a href="http://nco.sourceforge.net/nco.html#ncatted-netCDF-Attribute-Editor">ncatted</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1032x8">Linear regression using <a href="http://nco.sourceforge.net/nco.html#ncap2-netCDF-Arithmetic-Processor">ncap2</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1034x9">Use <a href="http://nco.sourceforge.net/nco.html#ncap2-netCDF-Arithmetic-Processor">ncap2</a> with commands file (i.e., .nco file);
+           </li>
+           <li 
+  class="enumerate" id="x1-1036x10">Move variables around using <a href="http://nco.sourceforge.net/nco.html#ncks-netCDF-Kitchen-Sink">ncks</a>.</li></ol>
+      </li>
+      <li 
+  class="enumerate" id="x1-1038x4"><a 
+href="#x1-50004">Monthly Cycle</a> (see <a 
+href="#x1-10533">Fig. 3</a>) <br 
+class="newline" />
+           <ol  class="enumerate2" >
+           <li 
+  class="enumerate" id="x1-1040x1">Anomaly from annual-average</li></ol>
+      </li>
+      <li 
+  class="enumerate" id="x1-1042x5"><a 
+href="#x1-60005">Regrid MODIS Data</a> <br 
+class="newline" />
+           <ol  class="enumerate2" >
+           <li 
+  class="enumerate" id="x1-1044x1">Regrid using <a href="http://nco.sourceforge.net/nco.html#Bilinear-interpolation">bilinear interpolation</a>;
+           </li>
+           <li 
+  class="enumerate" id="x1-1046x2">Rename variables, dimensions and attributions using <a href="http://nco.sourceforge.net/nco.html#ncrename-netCDF-Renamer">ncrename</a>.</li></ol>
+      </li>
+      <li 
+  class="enumerate" id="x1-1048x6"><a 
+href="#x1-70006">Add Coordinates to MODIS Data</a> <br 
+class="newline" />
+      </li>
+      <li 
+  class="enumerate" id="x1-1050x7"><a 
+href="#x1-80007">Permute MODIS Coordinates</a> <br 
+class="newline" />The latitude of MODIS data is from 90<sup><span 
+class="cmmi-8">o</span></sup>N to <span 
+class="cmsy-10x-x-120">-</span>90<sup><span 
+class="cmmi-8">o</span></sup>N, and the longitude is from <span 
+class="cmsy-10x-x-120">-</span>180<sup><span 
+class="cmmi-8">o</span></sup>E to
+      180<sup><span 
+class="cmmi-8">o</span></sup>E. However, CMIP5 is from <span 
+class="cmsy-10x-x-120">-</span>90<sup><span 
+class="cmmi-8">o</span></sup>N to 90<sup><span 
+class="cmmi-8">o</span></sup>N, and from 0<sup><span 
+class="cmmi-8">o</span></sup>E to 360<sup><span 
+class="cmmi-8">o</span></sup>E. So this script
+      illustrates how to change MODIS coordinate to that of CMIP5.</li></ol>
+
+<HR>
+<table class="image">
+<tr>
+  <td valign="bottom"><a href="#x1-30002"><IMG SRC="cesm-eg.fig1.png" ALT="PIC" align=MIDDLE width="500"><a id="x1-10511"></a></a></td>
+  <td valign="bottom"><a href="#x1-40003"><IMG SRC="cesm-eg.fig2.png" ALT="PIC" align=MIDDLE width="500"><a id="x1-10522"></a></a><br> <br><br> <br></td>
+  <td valign="bottom"><a href="#x1-50004"><IMG SRC="cesm-eg.fig3.png" ALT="PIC" align=MIDDLE width="500"><a id="x1-10533"></a></a><br> <br><br> <br><br> <br></td>
+</tr></br>
+<tr>
+  <td class="caption" align="center"><b>Fig. 1</b> Global Distribution of Long-term Average.</td>
+  <td class="caption" align="center"><b>Fig. 2</b> Annual Average over Regions.</td>
+  <td class="caption" align="center"><b>Fig. 3</b> Monthly Cycle.</td>
+</tr>
+</table>
+<br> <br>
+<hr>
+                                                                                         
+
+   <h3 class="sectionHead" align="left"><span class="titlemark">1   </span> <a 
+ id="x1-20001"></a>Combine Files</h3>
+                                                                                         
+                                                                                         
+   <div class="verbatim" id="verbatim-1">
+#!/bin/bash&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;shell&#x00A0;type
+&#x00A0;<br />shopt&#x00A0;-s&#x00A0;extglob ##&#x00A0;enable&#x00A0;extended&#x00A0;globbing
+&#x00A0;<br />
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />##&#x00A0;Some&#x00A0;of&#x00A0;the&#x00A0;models&#x00A0;cut&#x00A0;one&#x00A0;ensemble&#x00A0;member&#x00A0;into&#x00A0;several&#x00A0;files,&#x00A0;which&#x00A0;include&#x00A0;data&#x00A0;of&#x00A0;different&#x00A0;time&#x00A0;periods.
+&#x00A0;<br />##&#x00A0;We’d&#x00A0;better&#x00A0;concatenate&#x00A0;them&#x00A0;into&#x00A0;one&#x00A0;at&#x00A0;the&#x00A0;beginning&#x00A0;so&#x00A0;that&#x00A0;we&#x00A0;won’t&#x00A0;have&#x00A0;to&#x00A0;think&#x00A0;about&#x00A0;which&#x00A0;files&#x00A0;we&#x00A0;need&#x00A0;if&#x00A0;we&#x00A0;want&#x00A0;to&#x00A0;retrieve&#x00A0;a&#x00A0;specific&#x00A0;time&#x00A0;period&#x00A0;later.
+&#x00A0;<br />##
+&#x00A0;<br />##&#x00A0;Method:
+&#x00A0;<br />## -&#x00A0;Make&#x00A0;sure&#x00A0;’time’&#x00A0;is&#x00A0;the&#x00A0;record&#x00A0;dimension&#x00A0;(i.e.,&#x00A0;left-most)
+&#x00A0;<br />## -&#x00A0;ncrcat
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />
+&#x00A0;<br />drc_in=’/home/wenshanw/data/cmip5/’##&#x00A0;directory&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />
+&#x00A0;<br />var=(&#x00A0;’snc’&#x00A0;’snd’&#x00A0;) ##&#x00A0;variables
+&#x00A0;<br />rlm=’LImon’##&#x00A0;realm
+&#x00A0;<br />xpt=(&#x00A0;’historical’&#x00A0;) ##&#x00A0;experiment&#x00A0;(&#x00A0;could&#x00A0;be&#x00A0;more&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;var_id&#x00A0;in&#x00A0;{0..1};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;two&#x00A0;variables
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;names&#x00A0;of&#x00A0;all&#x00A0;the&#x00A0;models&#x00A0;(ls&#x00A0;[get&#x00A0;file&#x00A0;names];&#x00A0;cut&#x00A0;[get&#x00A0;the&#x00A0;part&#x00A0;for&#x00A0;model&#x00A0;names];&#x00A0;sort;&#x00A0;uniq&#x00A0;[remove&#x00A0;duplicates];&#x00A0;awk&#x00A0;[print])
+&#x00A0;<br />&#x00A0;&#x00A0;mdl_set=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;3&#x00A0;|&#x00A0;sort&#x00A0;|&#x00A0;uniq&#x00A0;-c&#x00A0;|&#x00A0;awk&#x00A0;’{print&#x00A0;$2}’&#x00A0;)
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;number&#x00A0;of&#x00A0;models&#x00A0;(echo&#x00A0;[print&#x00A0;contents];&#x00A0;wc&#x00A0;[count])
+&#x00A0;<br />&#x00A0;&#x00A0;mdl_nbr=$(&#x00A0;echo&#x00A0;${mdl_set}&#x00A0;|&#x00A0;wc&#x00A0;-w&#x00A0;)
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;"=============================="
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;"There&#x00A0;are"&#x00A0;${mdl_nbr}&#x00A0;"models&#x00A0;for"&#x00A0;${var[var_id]}.
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;for&#x00A0;mdl&#x00A0;in&#x00A0;${mdl_set};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;models
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;names&#x00A0;of&#x00A0;all&#x00A0;the&#x00A0;ensemble&#x00A0;members
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;nsm_set=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;5&#x00A0;|&#x00A0;sort&#x00A0;|&#x00A0;uniq&#x00A0;-c&#x00A0;|&#x00A0;awk&#x00A0;’{print&#x00A0;$2}’&#x00A0;)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;nsm_nbr=$(&#x00A0;echo&#x00A0;${nsm_set}&#x00A0;|&#x00A0;wc&#x00A0;-w&#x00A0;)
+##&#x00A0;number&#x00A0;of&#x00A0;ensemble&#x00A0;members&#x00A0;in&#x00A0;each&#x00A0;model
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;echo&#x00A0;"------------------------------"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;echo&#x00A0;"Model"&#x00A0;${mdl}&#x00A0;"includes"&#x00A0;${nsm_nbr}&#x00A0;"ensemble&#x00A0;member(s):"
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;echo&#x00A0;${nsm_set}"."
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;nsm&#x00A0;in&#x00A0;${nsm_set};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;ensemble&#x00A0;members
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;fl_nbr=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc&#x00A0;|&#x00A0;wc&#x00A0;-w&#x00A0;)&#x00A0;##&#x00A0;number&#x00A0;of&#x00A0;files&#x00A0;in&#x00A0;this&#x00A0;ensemble&#x00A0;member
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[&#x00A0;${fl_nbr}&#x00A0;-le&#x00A0;1&#x00A0;]
+##&#x00A0;if&#x00A0;there&#x00A0;is&#x00A0;only&#x00A0;1&#x00A0;file,&#x00A0;continue&#x00A0;to&#x00A0;next&#x00A0;loop
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;then
+                                                                                         
+                                                                                         
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; echo&#x00A0;"There&#x00A0;is&#x00A0;only&#x00A0;1&#x00A0;file&#x00A0;in"&#x00A0;${nsm}.
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; continue
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;echo&#x00A0;"There&#x00A0;are"&#x00A0;${fl_nbr}&#x00A0;"files&#x00A0;in"&#x00A0;${nsm}.
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;starting&#x00A0;date&#x00A0;of&#x00A0;data&#x00A0;(sed&#x00A0;[the&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;first&#x00A0;file&#x00A0;includes&#x00A0;the&#x00A0;starting&#x00A0;date])
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;yyyymm_str=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc&#x00A0;|&#x00A0;sed&#x00A0;-n&#x00A0;’1p’&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;6&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’-’&#x00A0;-f&#x00A0;1&#x00A0;)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;ending&#x00A0;date&#x00A0;of&#x00A0;data&#x00A0;(sed&#x00A0;[the&#x00A0;name&#x00A0;of&#x00A0;the&#x00A0;last&#x00A0;file&#x00A0;includes&#x00A0;the&#x00A0;ending&#x00A0;date])
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;yyyymm_end=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc&#x00A0;|&#x00A0;sed&#x00A0;-n&#x00A0;"${fl_nbr}p"&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;6&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’-’&#x00A0;-f&#x00A0;2&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;concatenate&#x00A0;the&#x00A0;files&#x00A0;of&#x00A0;one&#x00A0;ensemble&#x00A0;member&#x00A0;into&#x00A0;one&#x00A0;along&#x00A0;the&#x00A0;record&#x00A0;dimension&#x00A0;(now&#x00A0;is&#x00A0;time)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncrcat&#x00A0;-O&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_*.nc&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_${yyyymm_str}-${yyyymm_end}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;remove&#x00A0;useless&#x00A0;files
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;rm&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_${nsm}_!(${yyyymm_str}-${yyyymm_end})
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;done
+&#x00A0;<br />&#x00A0;&#x00A0;done
+&#x00A0;<br />done
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 345--><p class="nopar" >
+<!--l. 347--><p class="noindent" >
+   <h3 class="sectionHead" align="left"><span class="titlemark">2   </span> <a 
+ id="x1-30002"></a>Global Distribution of Long-term Average</h3>
+                                                                                         
+                                                                                         
+   <div class="verbatim" id="verbatim-2">
+#!/bin/bash
+&#x00A0;<br />
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />##&#x00A0;After&#x00A0;one-ensemble-one-file.sh
+&#x00A0;<br />##&#x00A0;Example:&#x00A0;Long-term&#x00A0;average&#x00A0;of&#x00A0;each&#x00A0;model&#x00A0;globally
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />
+&#x00A0;<br />##---------------------------------------------------------------------------
+&#x00A0;<br />##&#x00A0;parameters
+&#x00A0;<br />drc_in=’/home/wenshanw/data/cmip5/’##&#x00A0;directory&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />drc_out=’/home/wenshanw/data/cmip5/output/’##&#x00A0;directory&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />
+&#x00A0;<br />var=(&#x00A0;’snc’&#x00A0;’snd’&#x00A0;) ##&#x00A0;variables
+&#x00A0;<br />rlm=’LImon’##&#x00A0;realm
+&#x00A0;<br />xpt=(&#x00A0;’historical’&#x00A0;) ##&#x00A0;experiment&#x00A0;(&#x00A0;could&#x00A0;be&#x00A0;more&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />fld_out=(&#x00A0;’snc/’&#x00A0;’snd/’&#x00A0;) ##&#x00A0;folders&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />##---------------------------------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;var_id&#x00A0;in&#x00A0;{0..1};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;two&#x00A0;variables
+&#x00A0;<br />##&#x00A0;names&#x00A0;of&#x00A0;all&#x00A0;models&#x00A0;(ls&#x00A0;[get&#x00A0;file&#x00A0;names];&#x00A0;cut&#x00A0;[get&#x00A0;the&#x00A0;part&#x00A0;for&#x00A0;model&#x00A0;names];&#x00A0;sort;&#x00A0;uniq&#x00A0;[remove&#x00A0;duplicates];&#x00A0;awk&#x00A0;[print])
+&#x00A0;<br />&#x00A0;&#x00A0;mdl_set=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;3&#x00A0;|&#x00A0;sort&#x00A0;|&#x00A0;uniq&#x00A0;-c&#x00A0;|&#x00A0;awk&#x00A0;’{print&#x00A0;$2}’&#x00A0;)
+&#x00A0;<br />&#x00A0;&#x00A0;mdl_num=$(&#x00A0;echo&#x00A0;${mdl_set}&#x00A0;|&#x00A0;wc&#x00A0;-w&#x00A0;)
+##&#x00A0;number&#x00A0;of&#x00A0;models&#x00A0;(echo&#x00A0;[print&#x00A0;contents];&#x00A0;wc&#x00A0;[count])
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;for&#x00A0;mdl&#x00A0;in&#x00A0;${mdl_set};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;models
+&#x00A0;<br />&#x00A0;&#x00A0; ##&#x00A0;average&#x00A0;all&#x00A0;the&#x00A0;ensemble&#x00A0;members&#x00A0;of&#x00A0;each&#x00A0;model
+&#x00A0;<br />&#x00A0;&#x00A0; nces&#x00A0;-O&#x00A0;-4&#x00A0;-d&#x00A0;time,"1956-01-01&#x00A0;00:00:0.0","2005-12-31&#x00A0;23:59:9.9"&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_195601-200512.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0; ##&#x00A0;average&#x00A0;along&#x00A0;time
+&#x00A0;<br />&#x00A0;&#x00A0; ncra&#x00A0;-O&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_195601-200512.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0; echo&#x00A0;Model&#x00A0;${mdl}&#x00A0;done!
+&#x00A0;<br />&#x00A0;&#x00A0;done
+&#x00A0;<br />
+&#x00A0;<br />##&#x00A0;Remove&#x00A0;temporary&#x00A0;files&#x00A0;to&#x00A0;avoid&#x00A0;file&#x00A0;name&#x00A0;confliction
+&#x00A0;<br />rm&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}*historical*.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;Store&#x00A0;models&#x00A0;as&#x00A0;groups&#x00A0;in&#x00A0;the&#x00A0;output&#x00A0;file
+&#x00A0;<br />&#x00A0;&#x00A0;ncecat&#x00A0;-O&#x00A0;--gag&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_*.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_all-mdl_${xpt[0]}_all-nsm_clm.nc
+&#x00A0;<br />
+                                                                                         
+                                                                                         
+&#x00A0;<br />echo&#x00A0;Var&#x00A0;${var[var_id]}&#x00A0;done!
+&#x00A0;<br />done
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 391--><p class="nopar" >
+<!--l. 393--><p class="noindent" >
+   <h3 class="sectionHead" align="left"><span class="titlemark">3   </span> <a 
+ id="x1-40003"></a>Annual Average over Regions</h3>
+<div class="flushleft" 
+>
+<!--l. 394--><p class="noindent" >
+ <span 
+class="cmbx-12">Main Script</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-3">
+#!/bin/bash
+&#x00A0;<br />#&#x00A0;includes&#x00A0;gsl_rgr.nco
+&#x00A0;<br />
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />##&#x00A0;After&#x00A0;one-ensemble-one-file.sh
+&#x00A0;<br />##&#x00A0;Example:&#x00A0;Annual&#x00A0;trend&#x00A0;of&#x00A0;each&#x00A0;model&#x00A0;over&#x00A0;Greenland&#x00A0;and&#x00A0;Tibet&#x00A0;(&#x00A0;time-&#x00A0;and&#x00A0;spatial-average,&#x00A0;standard&#x00A0;deviation,&#x00A0;anomaly&#x00A0;and&#x00A0;linear&#x00A0;regression)
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />
+&#x00A0;<br />##---------------------------------------------------------------------------
+&#x00A0;<br />##&#x00A0;parameters
+&#x00A0;<br />drc_in=’/home/wenshanw/data/cmip5/’##&#x00A0;directory&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />drc_out=’/home/wenshanw/data/cmip5/output/’##&#x00A0;directory&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />
+&#x00A0;<br />var=(&#x00A0;’snc’&#x00A0;’snd’&#x00A0;) ##&#x00A0;variables
+&#x00A0;<br />rlm=’LImon’##&#x00A0;realm
+&#x00A0;<br />xpt=(&#x00A0;’historical’&#x00A0;) ##&#x00A0;experiment&#x00A0;(&#x00A0;could&#x00A0;be&#x00A0;more&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />fld_out=(&#x00A0;’snc/’&#x00A0;’snd/’&#x00A0;) ##&#x00A0;folders&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />##------------------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;var_id&#x00A0;in&#x00A0;{0..1};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;two&#x00A0;variables
+&#x00A0;<br />##&#x00A0;names&#x00A0;of&#x00A0;all&#x00A0;models&#x00A0;(ls&#x00A0;[get&#x00A0;file&#x00A0;names];&#x00A0;cut&#x00A0;[get&#x00A0;the&#x00A0;part&#x00A0;for&#x00A0;model&#x00A0;names];&#x00A0;sort;&#x00A0;uniq&#x00A0;[remove&#x00A0;duplicates];&#x00A0;awk&#x00A0;[print])
+&#x00A0;<br />&#x00A0;&#x00A0;mdl_set=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;3&#x00A0;|&#x00A0;sort&#x00A0;|&#x00A0;uniq&#x00A0;-c&#x00A0;|&#x00A0;awk&#x00A0;’{print&#x00A0;$2}’&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;for&#x00A0;mdl&#x00A0;in&#x00A0;${mdl_set};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;models
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;fn&#x00A0;in&#x00A0;$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc&#x00A0;);&#x00A0;do
+##&#x00A0;loop&#x00A0;over&#x00A0;ensemble&#x00A0;members
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;pfx=$(&#x00A0;echo&#x00A0;${fn}&#x00A0;|&#x00A0;cut&#x00A0;-d’/’&#x00A0;-f6&#x00A0;|&#x00A0;cut&#x00A0;-d’_’&#x00A0;-f1-5&#x00A0;)
+##&#x00A0;part&#x00A0;of&#x00A0;the&#x00A0;file&#x00A0;name
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;retrieve&#x00A0;the&#x00A0;2&#x00A0;zones
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;calculate&#x00A0;the&#x00A0;geographical&#x00A0;weight&#x00A0;first
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-s&#x00A0;’gw&#x00A0;=&#x00A0;cos(lat*3.1415926/180.);&#x00A0;gw at long_name="geographical&#x00A0;weight";gw at units="ratio"’&#x00A0;${fn}&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;Greenland
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncwa&#x00A0;-O&#x00A0;-w&#x00A0;gw&#x00A0;-d&#x00A0;lat,60.0,75.0&#x00A0;-d&#x00A0;lon,300.0,340.0&#x00A0;-a&#x00A0;lat,lon&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_1.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;Tibet
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncwa&#x00A0;-O&#x00A0;-w&#x00A0;gw&#x00A0;-d&#x00A0;lat,30.0,40.0&#x00A0;-d&#x00A0;lon,80.0,100.0&#x00A0;-a&#x00A0;lat,lon&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_2.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;concatenate&#x00A0;2&#x00A0;zones&#x00A0;together
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncecat&#x00A0;-O&#x00A0;-u&#x00A0;zone&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_?.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_zone4.nc
+&#x00A0;<br />
+                                                                                         
+                                                                                         
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;change&#x00A0;the&#x00A0;order&#x00A0;of&#x00A0;the&#x00A0;dimension&#x00A0;so&#x00A0;that&#x00A0;the&#x00A0;record&#x00A0;dimension&#x00A0;is&#x00A0;’time’
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncpdq&#x00A0;-O&#x00A0;-a&#x00A0;time,zone&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_zone4.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_zone4.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;remove&#x00A0;the&#x00A0;temporary&#x00A0;files&#x00A0;(optional)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;rm&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_?.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;annual&#x00A0;average&#x00A0;(use&#x00A0;the&#x00A0;feature&#x00A0;of&#x00A0;’Duration’)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncra&#x00A0;-O&#x00A0;--mro&#x00A0;-d&#x00A0;time,"1956-01-01&#x00A0;00:00:0.0","2005-12-31&#x00A0;23:59:9.9",12,12&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_gw_zone4.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_yrly.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;anomaly
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;long-term&#x00A0;average
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncwa&#x00A0;-O&#x00A0;-a&#x00A0;time&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_yrly.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_clm.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;subtract&#x00A0;long-term&#x00A0;average
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncbo&#x00A0;-O&#x00A0;--op_typ=-&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_yrly.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_clm.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_anm.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;done
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;rm&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*_yrly.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;average&#x00A0;over&#x00A0;all&#x00A0;the&#x00A0;ensemble&#x00A0;members
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;nces&#x00A0;-O&#x00A0;-4&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*_anm.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_anm.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;standard&#x00A0;deviation&#x00A0;------------------------------
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;fn&#x00A0;in&#x00A0;$(&#x00A0;ls&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*_anm.nc&#x00A0;);&#x00A0;do
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;pfx=$(&#x00A0;echo&#x00A0;${fn}&#x00A0;|&#x00A0;cut&#x00A0;-d’/’&#x00A0;-f8&#x00A0;|&#x00A0;cut&#x00A0;-d’_’&#x00A0;-f1-5&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;difference&#x00A0;between&#x00A0;each&#x00A0;ensemble&#x00A0;member&#x00A0;and&#x00A0;the&#x00A0;average&#x00A0;of&#x00A0;all&#x00A0;members
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncbo&#x00A0;-O&#x00A0;--op_typ=-&#x00A0;${fn}&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_anm.nc&#x00A0;${drc_out}${fld_out[var_id]}${pfx}_dlt.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;done
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;RMS
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;nces&#x00A0;-O&#x00A0;-y&#x00A0;rmssdn&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*_dlt.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_sdv.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;rename&#x00A0;variables
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncrename&#x00A0;-v&#x00A0;${var[var_id]},sdv&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_sdv.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;edit&#x00A0;attributions
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncatted&#x00A0;-a&#x00A0;standard_name,sdv,a,c,"_standard_deviation_over_ensemble"&#x00A0;-a&#x00A0;long_name,sdv,a,c,"&#x00A0;Standard&#x00A0;Deviation&#x00A0;over&#x00A0;Ensemble"&#x00A0;-a&#x00A0;original_name,sdv,a,c,"&#x00A0;sdv"&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_sdv.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##------------------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;linear&#x00A0;regression&#x00A0;-----------------------------------------
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;have&#x00A0;to&#x00A0;change&#x00A0;the&#x00A0;name&#x00A0;of&#x00A0;variable&#x00A0;in&#x00A0;the&#x00A0;commands&#x00A0;file&#x00A0;of&#x00A0;gsl_rgr.nco&#x00A0;manually&#x00A0;(gsl_rgr.nco&#x00A0;is&#x00A0;listed&#x00A0;below)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-S&#x00A0;gsl_rgr.nco&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_anm.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_anm_rgr.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;get&#x00A0;rid&#x00A0;of&#x00A0;temporary&#x00A0;variables
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncks&#x00A0;-O&#x00A0;-v&#x00A0;c0,c1,pval,${var[var_id]},gw&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_anm_rgr.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+                                                                                         
+                                                                                         
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##------------------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;move&#x00A0;the&#x00A0;variable&#x00A0;’sdv’&#x00A0;into&#x00A0;the&#x00A0;anomaly&#x00A0;files&#x00A0;(i.e.,&#x00A0;*anm.nc&#x00A0;files)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncks&#x00A0;-A&#x00A0;-v&#x00A0;sdv&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_sdv.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;rm&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_*historical*
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;echo&#x00A0;Model&#x00A0;${mdl}&#x00A0;done!
+&#x00A0;<br />&#x00A0;&#x00A0;done
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;Store&#x00A0;models&#x00A0;as&#x00A0;groups&#x00A0;in&#x00A0;the&#x00A0;output&#x00A0;file
+&#x00A0;<br />&#x00A0;&#x00A0;ncecat&#x00A0;-O&#x00A0;--gag&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_*.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_all-mdl_${xpt[0]}_all-nsm_annual.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;Var&#x00A0;${var[var_id]}&#x00A0;done!
+&#x00A0;<br />done
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 496--><p class="nopar" >
+<div class="flushleft" 
+>
+<!--l. 498--><p class="noindent" >
+ <span 
+class="cmbx-12">gsl</span><span 
+class="cmbx-12">_rgr.nco</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-4">
+//linear&#x00A0;regression
+&#x00A0;<br />//Caution:&#x00A0;make&#x00A0;sure&#x00A0;the&#x00A0;variable&#x00A0;name&#x00A0;is&#x00A0;in&#x00A0;agreement&#x00A0;with&#x00A0;the&#x00A0;main&#x00A0;script&#x00A0;(now&#x00A0;is&#x00A0;’snd’)
+&#x00A0;<br />
+&#x00A0;<br />//declare&#x00A0;variables
+&#x00A0;<br />*c0[$zone]=0.;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;//intercept
+&#x00A0;<br />*c1[$zone]=0.;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;//slope
+&#x00A0;<br />*sdv[$zone]=0.;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;//standard&#x00A0;deviation
+&#x00A0;<br />*covxy[$zone]=0.;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;//covariance
+&#x00A0;<br />*x&#x00A0;=&#x00A0;double(time);
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;(*zone_id=0;zone_id&#x003C;$zone.size;zone_id++)&#x00A0;&#x00A0;&#x00A0;//loop&#x00A0;over&#x00A0;zones
+&#x00A0;<br />{
+&#x00A0;<br />gsl_fit_linear(time,1,snd(:,zone_id),1,$time.size,&#x00A0;&tc0,&#x00A0;&tc1,&#x00A0;&cov00,&#x00A0;&cov01,&cov11,&sumsq);&#x00A0;//linear&#x00A0;regression&#x00A0;function
+&#x00A0;<br />c0(zone_id)&#x00A0;=&#x00A0;tc0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;//store&#x00A0;the&#x00A0;results
+&#x00A0;<br />c1(zone_id)&#x00A0;=&#x00A0;tc1;
+&#x00A0;<br />covxy(zone_id)&#x00A0;=&#x00A0;gsl_stats_covariance(time,1,$time.size,double(snd(:,zone_id)),1,$time.size);&#x00A0;//covariance&#x00A0;function
+&#x00A0;<br />sdv(zone_id)&#x00A0;=&#x00A0;gsl_stats_sd(snd(:,zone_id),&#x00A0;1,&#x00A0;$time.size);&#x00A0;&#x00A0;&#x00A0;//standard&#x00A0;deviation&#x00A0;function
+&#x00A0;<br />}
+&#x00A0;<br />
+&#x00A0;<br />//pval------------------------------------------------------------
+&#x00A0;<br />*time_sdv&#x00A0;=&#x00A0;gsl_stats_sd(time,&#x00A0;1,&#x00A0;$time.size);
+&#x00A0;<br />*r_value&#x00A0;=&#x00A0;covxy/(time_sdv*sdv);
+&#x00A0;<br />*t_value&#x00A0;=&#x00A0;r_value/sqrt((1-r_value^2)/($time.size-2));
+&#x00A0;<br />pval&#x00A0;=&#x00A0;abs(gsl_cdf_tdist_P(t_value,&#x00A0;$time.size-2)&#x00A0;-&#x00A0;gsl_cdf_tdist_P(-t_value,&#x00A0;$time.size-2));
+&#x00A0;<br />//----------------------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />//write&#x00A0;RAM&#x00A0;variables&#x00A0;to&#x00A0;disk
+&#x00A0;<br />//------------------------------------------------------------
+&#x00A0;<br />//usually&#x00A0;NCO&#x00A0;writes&#x00A0;the&#x00A0;outputs&#x00A0;directly&#x00A0;to&#x00A0;disk
+&#x00A0;<br />//inside&#x00A0;.nco&#x00A0;files,&#x00A0;using&#x00A0;RAM&#x00A0;variables,&#x00A0;declared&#x00A0;by&#x00A0;*,&#x00A0;will&#x00A0;shorten&#x00A0;running&#x00A0;time
+&#x00A0;<br />//write&#x00A0;the&#x00A0;final&#x00A0;outputs&#x00A0;using&#x00A0;ram_write()
+&#x00A0;<br />//------------------------------------------------------------
+&#x00A0;<br />ram_write(c0);
+&#x00A0;<br />ram_write(c1);
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 536--><p class="nopar" >
+<!--l. 538--><p class="noindent" >
+   <h3 class="sectionHead" align="left"><span class="titlemark">4   </span> <a 
+ id="x1-50004"></a>Monthly Cycle</h3>
+                                                                                         
+                                                                                         
+   <div class="verbatim" id="verbatim-5">
+#!/bin/bash
+&#x00A0;<br />
+&#x00A0;<br />##============================================================
+&#x00A0;<br />##&#x00A0;After&#x00A0;one-ensemble-one-file.sh
+&#x00A0;<br />##&#x00A0;Example:&#x00A0;Monthly&#x00A0;cycle&#x00A0;of&#x00A0;each&#x00A0;model&#x00A0;in&#x00A0;Greenland
+&#x00A0;<br />##============================================================
+&#x00A0;<br />
+&#x00A0;<br />##------------------------------------------------------------
+&#x00A0;<br />##&#x00A0;parameters
+&#x00A0;<br />drc_in=’/home/wenshanw/data/cmip5/’##&#x00A0;directory&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />drc_out=’/home/wenshanw/data/cmip5/output/’##&#x00A0;directory&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />
+&#x00A0;<br />var=(&#x00A0;’snc’&#x00A0;’snd’&#x00A0;) ##&#x00A0;variables
+&#x00A0;<br />rlm=’LImon’##&#x00A0;realm
+&#x00A0;<br />xpt=(&#x00A0;’historical’&#x00A0;) ##&#x00A0;experiment&#x00A0;(&#x00A0;could&#x00A0;be&#x00A0;more&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />fld_out=(&#x00A0;’snc/’&#x00A0;’snd/’&#x00A0;) ##&#x00A0;folders&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />##------------------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;var_id&#x00A0;in&#x00A0;{0..1};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;two&#x00A0;variables
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;names&#x00A0;of&#x00A0;all&#x00A0;models&#x00A0;(ls&#x00A0;[get&#x00A0;file&#x00A0;names];&#x00A0;cut&#x00A0;[get&#x00A0;the&#x00A0;part&#x00A0;for&#x00A0;model&#x00A0;names];&#x00A0;sort;&#x00A0;uniq&#x00A0;[remove&#x00A0;duplicates];&#x00A0;awk&#x00A0;[print])
+&#x00A0;<br />&#x00A0;&#x00A0;mdl_set=$(&#x00A0;ls&#x00A0;${drc_in}${var[var_id]}_${rlm}_*_${xpt[0]}_*.nc&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’_’&#x00A0;-f&#x00A0;3&#x00A0;|&#x00A0;sort&#x00A0;|&#x00A0;uniq&#x00A0;-c&#x00A0;|&#x00A0;awk&#x00A0;’{print&#x00A0;$2}’&#x00A0;)
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;for&#x00A0;mdl&#x00A0;in&#x00A0;${mdl_set};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;models
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;average&#x00A0;all&#x00A0;the&#x00A0;ensemble&#x00A0;members&#x00A0;in&#x00A0;each&#x00A0;model
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;nces&#x00A0;-O&#x00A0;-4&#x00A0;-d&#x00A0;time,"1956-01-01&#x00A0;00:00:0.0","2005-12-31&#x00A0;23:59:9.9"&#x00A0;${drc_in}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_*.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;retrieve&#x00A0;Greenland
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;calculate&#x00A0;the&#x00A0;geographical&#x00A0;weight&#x00A0;first
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-s&#x00A0;’gw&#x00A0;=&#x00A0;cos(lat*3.1415926/180.);&#x00A0;gw at long_name="geographical&#x00A0;weight";gw at units="ratio"’&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;Greenland
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncwa&#x00A0;-O&#x00A0;-w&#x00A0;gw&#x00A0;-d&#x00A0;lat,60.0,75.0&#x00A0;-d&#x00A0;lon,300.0,340.0&#x00A0;-a&#x00A0;lat,lon&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;anomaly----------------------------------------
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;moy&#x00A0;in&#x00A0;{1..12};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;months
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;mm=$(&#x00A0;printf&#x00A0;"%02d"&#x00A0;${moy}&#x00A0;)
+##&#x00A0;change&#x00A0;the&#x00A0;format&#x00A0;of&#x00A0;month&#x00A0;into&#x00A0;2-digit
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;for&#x00A0;yr&#x00A0;in&#x00A0;{1956..2005};&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;years
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;if&#x00A0;[&#x00A0;${moy}&#x00A0;-eq&#x00A0;1&#x00A0;];&#x00A0;then
+##&#x00A0;if&#x00A0;January,&#x00A0;calculate&#x00A0;the&#x00A0;annual&#x00A0;average&#x00A0;of&#x00A0;this&#x00A0;year
+                                                                                         
+                                                                                         
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0; ncra&#x00A0;-O&#x00A0;-d&#x00A0;time,"${yr}-01-01&#x00A0;00:00:0.0","${yr}-12-31&#x00A0;23:59:9.9"&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;fi
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;retrieve&#x00A0;this&#x00A0;month
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncks&#x00A0;-O&#x00A0;-d&#x00A0;time,"${yr}-${mm}-01&#x00A0;00:00:0.0","${yr}-${mm}-31&#x00A0;23:59:9.9"&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}${mm}.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;subtract&#x00A0;the&#x00A0;annual&#x00A0;average&#x00A0;from&#x00A0;the&#x00A0;month&#x00A0;data
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncbo&#x00A0;-O&#x00A0;--op_typ=-&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}${mm}.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${yr}${mm}_anm.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;done
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;average&#x00A0;over&#x00A0;years
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncra&#x00A0;-O&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_????${mm}_anm.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_${mm}_anm.nc
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;done
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##--------------------------------------------------
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;##&#x00A0;concatenate&#x00A0;the&#x00A0;months&#x00A0;data&#x00A0;together
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;ncrcat&#x00A0;-O&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_${mdl}_${xpt[0]}_all-nsm_GN_??_anm.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${mdl}.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;echo&#x00A0;Model&#x00A0;${mdl}&#x00A0;done!
+&#x00A0;<br />&#x00A0;&#x00A0;done
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;rm&#x00A0;-f&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}*historical*
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;Store&#x00A0;models&#x00A0;as&#x00A0;groups&#x00A0;in&#x00A0;the&#x00A0;output&#x00A0;file
+&#x00A0;<br />&#x00A0;&#x00A0;ncecat&#x00A0;-O&#x00A0;--gag&#x00A0;-v&#x00A0;${var[var_id]}&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_*.nc&#x00A0;${drc_out}${fld_out[var_id]}${var[var_id]}_${rlm}_all-mdl_${xpt[0]}_all-nsm_GN_mthly-anm.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;Var&#x00A0;${var[var_id]}&#x00A0;done!
+&#x00A0;<br />done
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 606--><p class="nopar" >
+<!--l. 608--><p class="noindent" >
+   <h3 class="sectionHead" align="left"> <span class="titlemark">5   </span> <a 
+ id="x1-60005"></a>Regrid MODIS Data</h3>
+<div class="flushleft" 
+>
+<!--l. 609--><p class="noindent" >
+ <span 
+class="cmbx-12">Main Script</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-6">
+#!/bin/bash
+&#x00A0;<br />##&#x00A0;include&#x00A0;bi_interp.nco
+&#x00A0;<br />
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />##&#x00A0;Example&#x00A0;for
+&#x00A0;<br />## -&#x00A0;regrid&#x00A0;(using&#x00A0;bi_interp.nco):&#x00A0;the&#x00A0;spatial&#x00A0;resolution&#x00A0;of&#x00A0;MODIS&#x00A0;data
+&#x00A0;<br />## is&#x00A0;much&#x00A0;finer&#x00A0;than&#x00A0;those&#x00A0;of&#x00A0;CMIP5&#x00A0;models.&#x00A0;In&#x00A0;order&#x00A0;to&#x00A0;compare
+&#x00A0;<br />## the&#x00A0;two,&#x00A0;we&#x00A0;can&#x00A0;regrid&#x00A0;MODIS&#x00A0;data&#x00A0;to&#x00A0;comform&#x00A0;to&#x00A0;CMIP5.
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />
+&#x00A0;<br />var=(&#x00A0;’MCD43C3’&#x00A0;) ##&#x00A0;variable
+&#x00A0;<br />fld_in=(&#x00A0;’monthly/’&#x00A0;) ##&#x00A0;folder&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />fld_out=(&#x00A0;’cesm-grid/’&#x00A0;) ##&#x00A0;folder&#x00A0;of&#x00A0;output&#x00A0;files
+&#x00A0;<br />drc_in=’/media/grele_data/wenshan/modis/mcd43c3/’##&#x00A0;directory&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;fn&#x00A0;in&#x00A0;$(&#x00A0;ls&#x00A0;${drc_in}${fld_in}${var}.*.nc&#x00A0;);&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;files
+&#x00A0;<br />&#x00A0;&#x00A0;sfx=$(&#x00A0;echo&#x00A0;$fn&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’/’&#x00A0;-f&#x00A0;8&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’.’&#x00A0;-f&#x00A0;2&#x00A0;)
+##&#x00A0;part&#x00A0;of&#x00A0;file&#x00A0;names
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;regrid
+&#x00A0;<br />&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-S&#x00A0;bi_interp.nco&#x00A0;${fn}&#x00A0;${drc_in}${fld_out}${var}.${sfx}.regrid.nc
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;retrieve&#x00A0;only&#x00A0;the&#x00A0;new&#x00A0;variables
+&#x00A0;<br />&#x00A0;&#x00A0;ncks&#x00A0;-O&#x00A0;-v&#x00A0;wsa_sw_less,bsa_sw_less&#x00A0;${drc_in}${fld_out}${var}.${sfx}.regrid.nc&#x00A0;${drc_in}${fld_out}${var}.${sfx}.regrid.nc
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;rename&#x00A0;the&#x00A0;new&#x00A0;variables,&#x00A0;dimensions&#x00A0;and&#x00A0;attributions
+&#x00A0;<br />&#x00A0;&#x00A0;ncrename&#x00A0;-O&#x00A0;-d&#x00A0;latn,lat&#x00A0;-d&#x00A0;lonn,lon&#x00A0;-v&#x00A0;latn,lat&#x00A0;-v&#x00A0;lonn,lon&#x00A0;-v&#x00A0;wsa_sw_less,wsa_sw&#x00A0;-v&#x00A0;bsa_sw_less,bsa_sw&#x00A0;-a&#x00A0;missing_value,_FillValue&#x00A0;${drc_in}${fld_out}${var}.${sfx}.regrid.nc
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;$sfx&#x00A0;done.
+&#x00A0;<br />done
+</div>
+<!--l. 640--><p class="nopar" >
+<div class="flushleft" 
+>
+<!--l. 641--><p class="noindent" >
+ <span 
+class="cmbx-12">bi</span><span 
+class="cmbx-12">_interp.nco</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-7">
+//&#x00A0;bilinear&#x00A0;interpolation
+&#x00A0;<br />
+&#x00A0;<br />defdim("latn",192); //&#x00A0;define&#x00A0;new&#x00A0;dimension:&#x00A0;latitude
+&#x00A0;<br />defdim("lonn",288); //&#x00A0;define&#x00A0;new&#x00A0;dimension:&#x00A0;longitude
+&#x00A0;<br />latn[$latn]&#x00A0;=&#x00A0;{90,89.0576&#x00A0;,88.1152&#x00A0;,87.1728&#x00A0;,86.2304&#x00A0;,85.288&#x00A0;&#x00A0;,84.3456&#x00A0;,83.4031&#x00A0;,82.4607&#x00A0;,81.5183&#x00A0;,80.5759&#x00A0;,79.6335&#x00A0;,78.6911&#x00A0;,77.7487&#x00A0;,76.8063&#x00A0;,75.8639&#x00A0;,74.9215&#x00A0;,73.9791&#x00A0;,73.0367&#x00A0;,72.0942&#x00A0;,71.1518&#x00A0;,70.2094&#x00A0;,69.267&#x00A0;&#x00A0;,68.3246&#x00A0;,67.3822&#x00A0;,66.4398&#x00A0;,65.4974&#x00A0;,64.555&#x00A0;&# [...]
+//&#x00A0;the&#x00A0;copy&#x00A0;of&#x00A0;CCSM4&#x00A0;latitude
+&#x00A0;<br />lonn[$lonn]&#x00A0;=&#x00A0;{-178.75,-177.5,-176.25,-175,-173.75,-172.5,-171.25,-170,-168.75,-167.5,-166.25,-165,-163.75,-162.5,-161.25,-160,-158.75,-157.5,-156.25,-155,-153.75,-152.5,-151.25,-150,-148.75,-147.5,-146.25,-145,-143.75,-142.5,-141.25,-140,-138.75,-137.5,-136.25,-135,-133.75,-132.5,-131.25,-130,-128.75,-127.5,-126.25,-125,-123.75,-122.5,-121.25,-120,-118.75,-117.5,-116.25,-115,-113.75,-112.5,-111.25,-110,-108.75,-107.5,-106.25,-105,-103.75,-102.5,-101.25,-100,- [...]
+//&#x00A0;the&#x00A0;copy&#x00A0;of&#x00A0;CCSM4&#x00A0;longitude
+&#x00A0;<br />
+&#x00A0;<br />*out[$time,$latn,$lonn]=0.0; //&#x00A0;output&#x00A0;structure
+&#x00A0;<br />
+&#x00A0;<br />//&#x00A0;bi-linear&#x00A0;interpolation
+&#x00A0;<br />bsa_sw_less=bilinear_interp_wrap(bsa_sw,out,latn,lonn,lat,lon);
+&#x00A0;<br />wsa_sw_less=bilinear_interp_wrap(wsa_sw,out,latn,lonn,lat,lon);
+&#x00A0;<br />
+&#x00A0;<br />//&#x00A0;add&#x00A0;attributions
+&#x00A0;<br />latn at units&#x00A0;=&#x00A0;"degree_north";
+&#x00A0;<br />lonn at units&#x00A0;=&#x00A0;"degree_east";
+&#x00A0;<br />latn at long_name&#x00A0;=&#x00A0;"latitude";
+&#x00A0;<br />lonn at long_name&#x00A0;=&#x00A0;"longitude";
+&#x00A0;<br />bsa_sw_less at hdf_name&#x00A0;=&#x00A0;"Albedo_BSA_shortwave";
+&#x00A0;<br />bsa_sw_less at calibrated_nt&#x00A0;=&#x00A0;5;
+&#x00A0;<br />bsa_sw_less at missing_value&#x00A0;=&#x00A0;32767.0;
+&#x00A0;<br />bsa_sw_less at units&#x00A0;=&#x00A0;"albedo,&#x00A0;no&#x00A0;units";
+&#x00A0;<br />bsa_sw_less at long_name&#x00A0;=&#x00A0;"Global_Albedo_BSA_shortwave";
+&#x00A0;<br />wsa_sw_less at hdf_name&#x00A0;=&#x00A0;"Albedo_WSA_shortwave";
+&#x00A0;<br />wsa_sw_less at calibrated_nt&#x00A0;=&#x00A0;5;
+&#x00A0;<br />wsa_sw_less at missing_value&#x00A0;=&#x00A0;32767.0;
+&#x00A0;<br />wsa_sw_less at units&#x00A0;=&#x00A0;"albedo,&#x00A0;no&#x00A0;units";
+&#x00A0;<br />wsa_sw_less at long_name&#x00A0;=&#x00A0;"Global_Albedo_WSA_shortwave";
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 673--><p class="nopar" >
+<!--l. 675--><p class="noindent" >
+   <h3 class="sectionHead" align="left"><span class="titlemark">6   </span> <a 
+ id="x1-70006"></a>Add Coordinates to MODIS Data</h3>
+<div class="flushleft" 
+>
+<!--l. 676--><p class="noindent" >
+ <span 
+class="cmbx-12">Main Script</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-8">
+#!/bin/bash
+&#x00A0;<br />
+&#x00A0;<br />##============================================================
+&#x00A0;<br />##&#x00A0;Example&#x00A0;for
+&#x00A0;<br />## -&#x00A0;regrid&#x00A0;(using&#x00A0;bi_interp.nco):&#x00A0;the&#x00A0;spatial&#x00A0;resolution&#x00A0;of&#x00A0;MODIS&#x00A0;data
+&#x00A0;<br />## is&#x00A0;much&#x00A0;finer&#x00A0;than&#x00A0;those&#x00A0;of&#x00A0;CMIP5&#x00A0;models.&#x00A0;In&#x00A0;order&#x00A0;to&#x00A0;compare
+&#x00A0;<br />## the&#x00A0;two,&#x00A0;we&#x00A0;can&#x00A0;regrid&#x00A0;MODIS&#x00A0;data&#x00A0;to&#x00A0;comform&#x00A0;to&#x00A0;CMIP5.
+&#x00A0;<br />## -&#x00A0;add&#x00A0;coordinates&#x00A0;(using&#x00A0;coor.nco):&#x00A0;there&#x00A0;is&#x00A0;no&#x00A0;coordinate&#x00A0;information
+&#x00A0;<br />## in&#x00A0;MODIS&#x00A0;data.&#x00A0;We&#x00A0;have&#x00A0;to&#x00A0;add&#x00A0;it&#x00A0;manually&#x00A0;now.
+&#x00A0;<br />##============================================================
+&#x00A0;<br />
+&#x00A0;<br />var=(&#x00A0;’MOD10CM’&#x00A0;) ##&#x00A0;variable
+&#x00A0;<br />fld_in=(&#x00A0;’snc/nc/’&#x00A0;) ##&#x00A0;folder&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />drc_in=’/media/grele_data/wenshan/modis/’##&#x00A0;directory&#x00A0;of&#x00A0;input&#x00A0;files
+&#x00A0;<br />
+&#x00A0;<br />for&#x00A0;fn&#x00A0;in&#x00A0;$(&#x00A0;ls&#x00A0;${drc_in}${fld_in}${var}*.nc&#x00A0;);&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;files
+&#x00A0;<br />&#x00A0;&#x00A0;sfx=$(&#x00A0;echo&#x00A0;${fn}&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’/’&#x00A0;-f&#x00A0;8&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’.’&#x00A0;-f&#x00A0;2-4&#x00A0;)
+##&#x00A0;part&#x00A0;of&#x00A0;file&#x00A0;names
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;${sfx}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;rename&#x00A0;dimension&#x00A0;names&#x00A0;since&#x00A0;they&#x00A0;are&#x00A0;too&#x00A0;long
+&#x00A0;<br />&#x00A0;&#x00A0;ncrename&#x00A0;-d&#x00A0;YDim_MOD_CMG_Snow_5km,lat&#x00A0;-d&#x00A0;XDim_MOD_CMG_Snow_5km,lon&#x00A0;-O&#x00A0;${drc_in}${fld_in}${var}.${sfx}.nc&#x00A0;${drc_in}${fld_in}${var}.${sfx}.nc
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;add&#x00A0;coordinates
+&#x00A0;<br />&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-S&#x00A0;coor.nco&#x00A0;${drc_in}${fld_in}${var}.${sfx}.nc&#x00A0;${drc_in}${fld_in}${var}.${sfx}.nc
+&#x00A0;<br />done
+</div>
+<!--l. 704--><p class="nopar" >
+<div class="flushleft" 
+>
+<!--l. 705--><p class="noindent" >
+ <span 
+class="cmbx-12">coor.nco</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-9">
+//&#x00A0;add&#x00A0;coordinate&#x00A0;to&#x00A0;MODIS&#x00A0;HDF&#x00A0;data
+&#x00A0;<br />lon&#x00A0;=&#x00A0;array(0.f,&#x00A0;0.05,&#x00A0;$lon)&#x00A0;-&#x00A0;180;
+&#x00A0;<br />lat&#x00A0;=&#x00A0;90.f-&#x00A0;array(0.f,&#x00A0;0.05,&#x00A0;$lat);
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 712--><p class="nopar" >
+<!--l. 714--><p class="noindent" >
+   <h3 class="sectionHead" align="left"><span class="titlemark">7   </span> <a 
+ id="x1-80007"></a>Permute MODIS Coordinates</h3>
+<div class="flushleft" 
+>
+<!--l. 715--><p class="noindent" >
+ <span 
+class="cmbx-12">Main Script</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-10">
+#!/bin/bash
+&#x00A0;<br />
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />##&#x00A0;Example&#x00A0;for
+&#x00A0;<br />## -&#x00A0;permute&#x00A0;coordinates&#x00A0;(using&#x00A0;inverse-lat.nco):&#x00A0;the&#x00A0;grid&#x00A0;of&#x00A0;MODIS&#x00A0;is
+&#x00A0;<br />## from&#x00A0;(-180&#x00A0;degE,&#x00A0;90&#x00A0;degN),&#x00A0;the&#x00A0;left-up&#x00A0;corner,&#x00A0;to
+&#x00A0;<br />## (180&#x00A0;degE,&#x00A0;-90&#x00A0;degN),&#x00A0;the&#x00A0;right-low&#x00A0;corner.&#x00A0;However,&#x00A0;CMIP5&#x00A0;is
+&#x00A0;<br />## from&#x00A0;(0&#x00A0;degE,&#x00A0;-90&#x00A0;degN)&#x00A0;to&#x00A0;(360&#x00A0;degE,&#x00A0;90&#x00A0;degN).&#x00A0;The&#x00A0;script
+&#x00A0;<br />## here&#x00A0;changes&#x00A0;the&#x00A0;MODIS&#x00A0;grid&#x00A0;to&#x00A0;CMIP5&#x00A0;grid.
+&#x00A0;<br />##===========================================================================
+&#x00A0;<br />
+&#x00A0;<br />##---------------------------------------------------------------------------
+&#x00A0;<br />##&#x00A0;permute&#x00A0;coordinates
+&#x00A0;<br />## -&#x00A0;inverse&#x00A0;lat&#x00A0;from&#x00A0;(90,-90)&#x00A0;to&#x00A0;(-90,90)
+&#x00A0;<br />## -&#x00A0;permute&#x00A0;lon&#x00A0;from&#x00A0;(-180,180)&#x00A0;to&#x00A0;(0,360)
+&#x00A0;<br />for&#x00A0;fn&#x00A0;in&#x00A0;$(&#x00A0;ls&#x00A0;MCD43C3.*.nc&#x00A0;);&#x00A0;do ##&#x00A0;loop&#x00A0;over&#x00A0;files
+&#x00A0;<br />&#x00A0;&#x00A0;sfx=$(&#x00A0;echo&#x00A0;${fn}&#x00A0;|&#x00A0;cut&#x00A0;-d&#x00A0;’.’&#x00A0;-f&#x00A0;1-3&#x00A0;) ##&#x00A0;part&#x00A0;of&#x00A0;file&#x00A0;names
+&#x00A0;<br />&#x00A0;&#x00A0;echo&#x00A0;${sfx}
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;lat
+&#x00A0;<br />&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-S&#x00A0;inverse-lat.nco&#x00A0;${fn}&#x00A0;${fn} ##&#x00A0;inverse&#x00A0;latitude
+&#x00A0;<br />
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;lon
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;break&#x00A0;into&#x00A0;east&#x00A0;and&#x00A0;west&#x00A0;hemispheres&#x00A0;in&#x00A0;order&#x00A0;to&#x00A0;switch&#x00A0;the&#x00A0;two
+&#x00A0;<br />&#x00A0;&#x00A0;ncks&#x00A0;-O&#x00A0;-d&#x00A0;lon,0.0,180.0&#x00A0;${fn}&#x00A0;${sfx}.part1.nc
+&#x00A0;<br />&#x00A0;&#x00A0;ncks&#x00A0;-O&#x00A0;-d&#x00A0;lon,-180.0,-1.25&#x00A0;${fn}&#x00A0;${sfx}.part2.nc
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;make&#x00A0;longitude&#x00A0;the&#x00A0;record&#x00A0;dimension
+&#x00A0;<br />&#x00A0;&#x00A0;ncpdq&#x00A0;-O&#x00A0;-a&#x00A0;lon,lat,time&#x00A0;${sfx}.part1.nc&#x00A0;${sfx}.part1.nc
+&#x00A0;<br />&#x00A0;&#x00A0;ncpdq&#x00A0;-O&#x00A0;-a&#x00A0;lon,lat,time&#x00A0;${sfx}.part2.nc&#x00A0;${sfx}.part2.nc
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;concatenate&#x00A0;the&#x00A0;two&#x00A0;hemispheres&#x00A0;along&#x00A0;longitude
+&#x00A0;<br />&#x00A0;&#x00A0;ncrcat&#x00A0;-O&#x00A0;${sfx}.part?.nc&#x00A0;${fn}
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;reorder&#x00A0;dimensions
+&#x00A0;<br />&#x00A0;&#x00A0;ncpdq&#x00A0;-O&#x00A0;-a&#x00A0;time,lat,lon&#x00A0;${fn}&#x00A0;${fn}
+&#x00A0;<br />&#x00A0;&#x00A0;##&#x00A0;add&#x00A0;new&#x00A0;longitude&#x00A0;coordinates
+&#x00A0;<br />&#x00A0;&#x00A0;ncap2&#x00A0;-O&#x00A0;-s&#x00A0;’lon=array(0.0,1.25,$lon)’&#x00A0;${fn}&#x00A0;${fn}
+&#x00A0;<br />done
+</div>
+<!--l. 755--><p class="nopar" >
+<div class="flushleft" 
+>
+<!--l. 756--><p class="noindent" >
+ <span 
+class="cmbx-12">inverse-lat.nco</span></div>
+                                                                                         
+                                                                                         
+<div class="verbatim" id="verbatim-11">
+//&#x00A0;inverse&#x00A0;lat&#x00A0;from&#x00A0;(90,-90)&#x00A0;to&#x00A0;(-90,90)
+&#x00A0;<br />bsa_sw=bsa_sw.reverse($lat);
+&#x00A0;<br />wsa_sw=wsa_sw.reverse($lat);
+&#x00A0;<br />lat=lat.reverse($lat);
+</div>
+
+<hr>
+<div><p><a href="#x1-1000">Back to Top</a></p></div>
+
+<!--l. 764--><p class="nopar" >
+    
+</body></html> 
+
+                                                                                         
+
+
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 8ff3c76..828104c 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,8 +1,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -11,8 +11,8 @@
 
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
 
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],			[_LT_LANG(C)],
   [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
   [Java],		[_LT_LANG(GCJ)],
   [Fortran 77],		[_LT_LANG(F77)],
   [Fortran],		[_LT_LANG(FC)],
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=no
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	[lt_cv_ld_exported_symbols_list=no])
 	LDFLAGS="$save_LDFLAGS"
     ])
+
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       [lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
@@ -990,7 +1030,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1035,8 +1077,8 @@ _LT_EOF
 ])
 
 
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
@@ -1330,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -1414,13 +1471,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -1600,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1639,7 +1701,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -2185,7 +2247,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -2194,7 +2256,7 @@ aix3*)
   ;;
 
 aix[[4-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -2259,7 +2321,7 @@ beos*)
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2398,7 +2460,7 @@ m4_if([$1], [],[
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2406,10 +2468,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -2417,7 +2475,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -2435,7 +2493,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2455,7 +2513,7 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
@@ -2466,7 +2524,7 @@ gnu*)
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -2527,7 +2585,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[[3-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2543,7 +2601,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -2580,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2657,7 +2715,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -2726,7 +2784,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2751,7 +2809,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -2775,7 +2833,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -2806,7 +2864,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2816,7 +2874,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -3238,7 +3296,7 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3658,6 +3716,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -4242,7 +4301,9 @@ m4_if([$1], [CXX], [
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
       ;;
     esac
   else
@@ -4334,18 +4395,33 @@ m4_if([$1], [CXX], [
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -4505,7 +4581,9 @@ m4_if([$1], [CXX], [
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -4533,7 +4611,6 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4787,8 +4864,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
 	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -5084,6 +5160,7 @@ _LT_EOF
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -5130,10 +5207,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -5146,7 +5219,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5185,7 +5258,6 @@ _LT_EOF
       fi
       if test "$with_gnu_ld" = no; then
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -5627,9 +5699,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
@@ -5787,7 +5856,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -6157,7 +6225,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -6918,12 +6986,18 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
 
 _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 dnl Parse the compiler output and extract the necessary
@@ -7120,7 +7194,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7253,7 +7326,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7440,6 +7512,77 @@ CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -7509,6 +7652,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 17cfd51..5d9acd8 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=default])
 
 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 9c7b5d4..07a8602 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/man/Makefile.in b/man/Makefile.in
index 3320683..c467b1b 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,8 +14,53 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/man/Makefile.in,v 1.76 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/man/Makefile.in,v 1.107 2013/11/06 18:12:24 zender Exp $ -*-makefile-*-
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,18 +81,38 @@ build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
 subdir = man
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -70,13 +134,21 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 man1dir = $(mandir)/man1
 am__installdirs = "$(DESTDIR)$(man1dir)"
 NROFF = nroff
 MANS = $(man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -96,6 +168,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -137,6 +210,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -183,6 +257,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -258,11 +333,18 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list=''; test -n "$(man1dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.1[a-z]*$$/p'; \
+	@list1=''; \
+	list2='$(man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
 	} | while read p; do \
 	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; echo "$$p"; \
@@ -291,30 +373,15 @@ uninstall-man1:
 	  sed -n '/\.1[a-z]*$$/p'; \
 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
-tags: TAGS
-TAGS:
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
+
+ctags CTAGS:
 
-ctags: CTAGS
-CTAGS:
+cscope cscopelist:
 
 
 distdir: $(DISTFILES)
-	@list='$(MANS)'; if test -n "$$list"; then \
-	  list=`for p in $$list; do \
-	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-	  if test -n "$$list" && \
-	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
-	    exit 1; \
-	  else :; fi; \
-	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -361,10 +428,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -447,16 +519,17 @@ uninstall-man: uninstall-man1
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	distclean distclean-generic distclean-libtool distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-info install-info-am install-man install-man1 \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	uninstall uninstall-am uninstall-man uninstall-man1
+	cscopelist-am ctags-am distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-man1 install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags-am uninstall uninstall-am uninstall-man \
+	uninstall-man1
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/man/ncap.1 b/man/ncap.1
index 304ab96..ede9730 100644
--- a/man/ncap.1
+++ b/man/ncap.1
@@ -1,23 +1,25 @@
-.\" $Header: /cvsroot/nco/nco/man/ncap.1,v 1.15 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncap.1,v 1.22 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncap
 .\" Usage:
-.\" nroff -man ~/nco/man/ncap.1
+.\" nroff -man ~/nco/man/ncap.1 | less
 .TH NCAP 1
 .SH NAME
 ncap \- netCDF Arithmetic Processor
 .SH SYNTAX
-ncap [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncap [\-3] [\-4] [\-6] [\-7] [\-A] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-F] [\-f]
-[\-h] [\-L 
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-O] [\-o 
+[\-\-no_tmp_fl] [\-O] [\-o 
 .IR output-file ]
 [\-p 
 .IR path ]
-[\-R] [\-r] [\-S 
+[\-R] [\-r] [\-\-ram_all] [\-S 
 .IR script-file ] [\-s 
 .IR script ] [\-v 
 .IR var [,\ .\|.\|.\ ]]
@@ -31,7 +33,7 @@ However, in about 2008
 .B ncap 
 was deprecated in favor of
 .B ncap2
-which far surpasses its capbilities.
+which far surpasses its capabilities.
 .B ncap will eventually be completely removed from
 .B NCO.
 It is currently retained only because it provides an easier-to-build 
@@ -90,14 +92,14 @@ ncap \-s "T2=T*T" in.nc out.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncap.1,v 1.15 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncap.1,v 1.22 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncap2.1 b/man/ncap2.1
index 93e357b..ddc9697 100644
--- a/man/ncap2.1
+++ b/man/ncap2.1
@@ -1,25 +1,28 @@
-.\" $Header: /cvsroot/nco/nco/man/ncap2.1,v 1.9 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncap2.1,v 1.17 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncap2
 .\" Usage:
-.\" nroff -man ~/nco/man/ncap2.1
+.\" nroff -man ~/nco/man/ncap2.1 | less
 .TH NCAP2 1
 .SH NAME
 ncap2 \- netCDF Arithmetic Processor, Next Generation
 .SH SYNTAX
-ncap2 [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncap2 [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
-.IR "max" ]]]
+.IR min ][,[
+.IR max ]]]
 [\-F] [\-f]
-[\-h] [\-l 
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-l 
 .IR path ]
-[\-O] [\-o 
+[\-\-no_tmp_fl] [\-O] [\-o 
 .IR output-file ]
 [\-p 
 .IR path ]
-[\-R] [\-r] [\-S 
+[\-R] [\-r] [\-\-ram_all] [\-S 
 .IR script-file ] [\-s 
 .IR script ] [\-t
 .IR thr_nbr ] [\-v 
@@ -93,14 +96,14 @@ ncap2 \-s "T2=T*T" in.nc out.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncap2.1,v 1.9 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncap2.1,v 1.17 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncatted.1 b/man/ncatted.1
index 177ee79..93f196f 100644
--- a/man/ncatted.1
+++ b/man/ncatted.1
@@ -1,11 +1,19 @@
+.\" $Header: /cvsroot/nco/nco/man/ncatted.1,v 1.15 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
+.\" Purpose: ROFF man page for ncatted
+.\" Usage:
+.\" nroff -man ~/nco/man/ncatted.1 | less
 .TH NCATTED 1
 .SH NAME
 ncatted \- netCDF Attribute Editor
 .SH SYNTAX
-ncatted [-a 
+ncatted [\-a 
 .IR att_dsc ]
-[-a ...] [-D] [-h]
-[-l path] [-O] [-p path] [-R] [-r] 
+[\-a ...] [\-\-bfr
+.IR sz ] [\-D
+.IR dbg_lvl]
+[\-h] [\-\-hdr_pad
+.IR sz ]
+[\-l path] [\-O] [\-p path] [\-R] [\-r] [\-\-ram_all]
 .I input-file
 [
 .IR output-file ]
@@ -465,20 +473,20 @@ C-language escape sequences and other special characters like
 backslashes and question marks. 
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncatted.1,v 1.9 2011/05/05 17:28:15 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncatted.1,v 1.15 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
 
 .SH COPYRIGHT
-Copyright \(co 1995-2011 Charlie Zender
+Copyright \(co 1995-2012 Charlie Zender
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -512,6 +520,22 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR ncdiff (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/man/ncbo.1 b/man/ncbo.1
index 156ef80..460768b 100644
--- a/man/ncbo.1
+++ b/man/ncbo.1
@@ -1,27 +1,33 @@
-.\" $Header: /cvsroot/nco/nco/man/ncbo.1,v 1.14 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncbo.1,v 1.25 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncbo
 .\" Usage:
-.\" nroff -man ~/nco/man/ncbo.1
+.\" nroff -man ~/nco/man/ncbo.1 | less
 .TH NCBO 1
 .SH NAME
 ncbo \- netCDF Binary Operator
 .SH SYNTAX
-ncbo [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncbo [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
-.IR "max" ]]]
-[\-F]
-[\-h] [\-L 
+.IR min ][,[
+.IR max ]]]
+[\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-O] [\-p 
+[\-\-msa] [\-\-no_tmp_fl] [\-O] [\-p 
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-t
 .IR thr_nbr ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -322,14 +328,14 @@ ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncbo.1,v 1.14 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncbo.1,v 1.25 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncdiff.1 b/man/ncdiff.1
index 3637c58..484c582 100644
--- a/man/ncdiff.1
+++ b/man/ncdiff.1
@@ -3,13 +3,15 @@
 ncdiff \- netCDF Differencer
 .SH SYNTAX
 ncdiff [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
-.IR "max" ]]]
+.IR min ][,[
+.IR max ]]]
 [\-F]
-[\-h] [\-L 
+[\-h] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
@@ -314,20 +316,20 @@ ncrcat t_anm_8589_??.nc t_anm_8589_0112.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncdiff.1,v 1.14 2011/05/05 17:28:15 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncdiff.1,v 1.22 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
 
 .SH COPYRIGHT
-Copyright \(co 1995-2011 Charlie Zender
+Copyright \(co 1995-2012 Charlie Zender
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -361,6 +363,21 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/man/ncea.1 b/man/ncea.1
index f809171..ba4a652 100644
--- a/man/ncea.1
+++ b/man/ncea.1
@@ -1,29 +1,37 @@
-.\" $Header: /cvsroot/nco/nco/man/ncea.1,v 1.14 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncea.1,v 1.27 2013/11/11 04:57:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncea
 .\" Usage:
-.\" nroff -man ~/nco/man/ncea.1
+.\" nroff -man ~/nco/man/ncea.1 | less
 .TH NCEA 1
 .SH NAME
 ncea \- netCDF Ensemble Averager
 .SH SYNTAX
-ncea [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncea [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]]]
-[\-F]
-[\-h] [\-L 
+[\-\-dbl|flt] [\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-n 
+[\-\-msa] [\-n 
 .IR loop ]
+[\-\-no_tmp_fl] [\-\-nsm_sfx
+.IR grp_sfx ]
 [\-O] [\-p 
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-t
 .IR thr_nbr ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -119,14 +127,14 @@ input files.
 Additionally, only data inside the tropics is included.
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncea.1,v 1.14 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncea.1,v 1.27 2013/11/11 04:57:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncecat.1 b/man/ncecat.1
index 220f790..c35ef2a 100644
--- a/man/ncecat.1
+++ b/man/ncecat.1
@@ -1,31 +1,38 @@
-.\" $Header: /cvsroot/nco/nco/man/ncecat.1,v 1.17 2010/09/24 03:30:37 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncecat.1,v 1.31 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncecat
 .\" Usage:
-.\" nroff -man ~/nco/man/ncecat.1
+.\" nroff -man ~/nco/man/ncecat.1 | less
 .TH NCECAT 1
 .SH NAME
 ncecat \- netCDF Ensemble Concatenator
 .SH SYNTAX
-ncecat [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncecat [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]]]
-[\-F]
-[\-h] [\-L 
+[\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\--gag]
+[\-h] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-M] [\-n 
+[\-M] [\-\-mrd] [\-\-msa] [\-n 
 .IR loop ]
-[\-O] [\-p 
+[\-\-no_tmp_fl] [\-O] [\-p 
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-t
 .IR thr_nbr ]
 [\-u 
 .IR ulm_nm ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -104,20 +111,20 @@ It contains 60 months of data (which might or might not be stored in the
 record dimension, depending on the input files).
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncecat.1,v 1.17 2010/09/24 03:30:37 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncecat.1,v 1.31 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
 
 .SH COPYRIGHT
-Copyright \(co 1995-2010 Charlie Zender
+Copyright \(co 1995-2012 Charlie Zender
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -151,6 +158,22 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR ncdiff (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/man/ncea.1 b/man/nces.1
similarity index 82%
copy from man/ncea.1
copy to man/nces.1
index f809171..634f2ef 100644
--- a/man/ncea.1
+++ b/man/nces.1
@@ -1,29 +1,37 @@
-.\" $Header: /cvsroot/nco/nco/man/ncea.1,v 1.14 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
-.\" Purpose: ROFF man page for ncea
+.\" $Header: /cvsroot/nco/nco/man/nces.1,v 1.2 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
+.\" Purpose: ROFF man page for nces
 .\" Usage:
-.\" nroff -man ~/nco/man/ncea.1
-.TH NCEA 1
+.\" nroff -man ~/nco/man/nces.1 | less
+.TH NCES 1
 .SH NAME
-ncea \- netCDF Ensemble Averager
+nces \- netCDF Ensemble Statistics
 .SH SYNTAX
-ncea [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+nces [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]]]
-[\-F]
-[\-h] [\-L 
+[\-\-dbl|flt] [\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-n 
+[\-\-msa] [\-n 
 .IR loop ]
+[\-\-no_tmp_fl] [\-\-nsm_sfx
+.IR grp_sfx ]
 [\-O] [\-p 
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-t
 .IR thr_nbr ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -33,7 +41,7 @@ ncea [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D
 .I output-file
 .SH DESCRIPTION
 .PP
-.B ncea
+.B nces
 performs gridpoint averages of variables across an arbitrary
 number (an 
 .IR ensemble )
@@ -51,7 +59,7 @@ Whereas
 .B ncra
 only performs averages over the record dimension
 (e.g., time), and weights each record in the record dimension evenly, 
-.B ncea
+.B nces
 averages entire files, and weights each file evenly.
 All dimensions, including the record dimension, are treated identically
 and preserved in the 
@@ -66,14 +74,14 @@ large number of experiments, or it may simply be a step in a procedure
 whose goal is to compute anomalies from a mean state. 
 In any case, when one desires to generate a file whose properties are
 the mean of all the input files, then 
-.B ncea
+.B nces
 is the operator to
 use. 
-.B ncea
+.B nces
 assumes coordinate variable are properties common to all of
 the experiments and so does not average them across files.
 Instead, 
-.B ncea
+.B nces
 copies the values of the coordinate variables from
 the first input file to the output file.
 .SH EXAMPLES
@@ -90,11 +98,11 @@ Here the numeric filename suffix denotes the experiment number
 .I not
 the month):
 .RS
-ncea 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
+nces 85_01.nc 85_02.nc 85_03.nc 85_04.nc 85_05.nc 85.nc
 .br
-ncea 85_0[1-5].nc 85.nc
+nces 85_0[1-5].nc 85.nc
 .br
-ncea \-n 5,2,1 85_01.nc 85.nc
+nces \-n 5,2,1 85_01.nc 85.nc
 .RE
 These three commands produce identical answers.
 The output file, 
@@ -108,7 +116,7 @@ In the previous example, the user could have obtained the ensemble
 average values in a particular spatio-temporal region by adding a 
 hyperslab argument to the command, e.g.,
 .RS
-ncea \-d time,0,2 \-d lat,\-23.5,23.5 85_??.nc 85.nc
+nces \-d time,0,2 \-d lat,\-23.5,23.5 85_??.nc 85.nc
 .RE
 In this case the output file would contain only three slices of data in
 the 
@@ -119,14 +127,14 @@ input files.
 Additionally, only data inside the tropics is included.
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncea.1,v 1.14 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/nces.1,v 1.2 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncflint.1 b/man/ncflint.1
index 5149215..6a3bfd7 100644
--- a/man/ncflint.1
+++ b/man/ncflint.1
@@ -1,4 +1,4 @@
-.\" $Header: /cvsroot/nco/nco/man/ncflint.1,v 1.13 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncflint.1,v 1.24 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncflint
 .\" Usage:
 .\" nroff -man ~/nco/man/ncflint.1
@@ -6,22 +6,28 @@
 .SH NAME
 ncflint \- netCDF File Interpolator
 .SH SYNTAX
-ncflint [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncflint [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]]]
-[\-F]
-[\-h] [\-i
+[\-F] [\-\-fix_rec_crd] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-i
 .IR var, val3 ] [\-L 
 .IR dfl_lvl ] [\-l 
 .IR path ]
-[\-O] [\-p 
+[\-\-msa] [\-\-no_tmp_fl] [\-O] [\-p 
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-t
 .IR thr_nbr ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-w 
 .IR wgt[,
@@ -154,14 +160,14 @@ and
 This behavior is hardcoded.
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncflint.1,v 1.13 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncflint.1,v 1.24 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncks.1 b/man/ncks.1
index f3b4a41..378f860 100644
--- a/man/ncks.1
+++ b/man/ncks.1
@@ -1,50 +1,64 @@
-.\" $Header: /cvsroot/nco/nco/man/ncks.1,v 1.22 2011/05/05 17:28:15 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncks.1,v 1.42 2013/12/02 00:31:21 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncks
 .\" Usage:
-.\" nroff -man ~/nco/man/ncks.1
+.\" nroff -man ~/nco/man/ncks.1 | less
 .TH NCKS 1
 .SH NAME
 ncks \- netCDF Kitchen Sink
 .SH SYNTAX
-ncks [\-3] [\-4] [\-6] [\-A] [\-a] [\-C] [\-c] 
-[\-\-cnk_dmn 
+ncks [\-3] [\-4] [\-5] [\-6] [\-7] [\-A] [\-a] [\-b
+.IR bnr_fl] 
+[\-\-bfr
+.IR sz ] [\-C] [\-c] 
+[\-\-cdl] [\-\-cnk_dmn 
 .IR nm,sz ]
 [\-\-cnk_map 
 .IR map ]
 [\-\-cnk_plc 
 .IR plc ]
 [\-\-cnk_scl 
-.IR sz] 
-[\-D] [\-d 
+.IR sz ] 
+[\-D
+dbg_lvl]
+[\-d 
 .IR dim ,[
 .IR min ][,[
 .IR max ]][,[
 .IR stride ]]]
-[\-F] [\-H] [\-h] [\-L 
+[\-F] [\-\-fix_rec_dmn
+.IR dim ]
+[\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-H] [\-h] 
+[\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-M] [\-m] [\-O] [\-p 
+[\-M] [\-m] [\-\-md5]  [\-\-mk_rec_dmn
+.IR dim ] [\-\-msa] [\-\-no_blank] [\-\-no_tmp_fl] [\-O] [\-o 
+.IR output-file ] 
+[\-P] [\-p 
 .IR path ]
-[\-q]
-[\-R] [\-r] [\-s 
+[-Q] [\-q]
+[\-R] [\-r] [\-\-ram_all] [\-s 
 .IR format ]
-[\-u] [\-v 
+[\-u] [\--unn] [\-v 
 .IR var [,...]] 
 [\-X 
 .IR box ] 
-[\-x]
+[\-x] [\-\-xml]
 .I input-file
 [
 .IR output-file ]
 .SH DESCRIPTION
 .PP
 .B ncks
-combines selected features of 
-.BR ncdump ,
-.BR ncextr ,
-and the nccut and ncpaste specifications into one
-versatile utility. 
+combines every feature we could think of, except the kitchen sink,
+into one versatile utility to manipulate netCDF files. 
 .B ncks
 extracts a subset of the data from 
 .I input-file
@@ -73,7 +87,7 @@ Options
 .BR \-F ,
 .BR \-H ,
 .BR \-M ,
-.IR \-m ,
+.BR \-m ,
 .BR \-q ,
 .BR \-s ,
 and 
@@ -94,7 +108,7 @@ Options
 .BR \-C ,
 .BR \-v ,
 and 
-.B \-x
+.BR \-x
 control which
 variables are extracted.
 .PP
@@ -247,7 +261,7 @@ retains the original ordering of the variables.
 .TP
 .B \-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]][,[
 .IR stride ]]
 Add 
@@ -575,20 +589,20 @@ ncks \-d lon,260.,45. in.nc out.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncks.1,v 1.22 2011/05/05 17:28:15 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncks.1,v 1.42 2013/12/02 00:31:21 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
 
 .SH COPYRIGHT
-Copyright \(co 1995-2011 Charlie Zender
+Copyright \(co 1995-2012 Charlie Zender
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -622,6 +636,22 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR ncdiff (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/man/nco.1 b/man/nco.1
index 610f7f5..66323ca 100644
--- a/man/nco.1
+++ b/man/nco.1
@@ -1,4 +1,4 @@
-.\" $Header: /cvsroot/nco/nco/man/nco.1,v 1.7 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/nco.1,v 1.9 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for nco
 .\" Usage:
 .\" nroff -man ~/nco/man/nco.1
@@ -59,7 +59,7 @@ netCDF Binary Operator (includes
 .BR ncdivide )
 .RE
 .RS
-.BR ncea , 
+.BR nces , 
 netCDF Ensemble Averager
 .RE
 .RS
@@ -113,14 +113,14 @@ special cases.
 works well on all modern operating systems.
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/nco.1,v 1.7 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/nco.1,v 1.9 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
@@ -164,7 +164,7 @@ TeX-intensive portions.
 .BR ncatted (1), 
 .BR ncbo (1), 
 .BR ncdiff (1), 
-.BR ncea (1), 
+.BR nces (1), 
 .BR ncecat (1), 
 .BR ncflint (1), 
 .BR ncks (1), 
diff --git a/man/ncpdq.1 b/man/ncpdq.1
index da00b6f..fa11ce1 100644
--- a/man/ncpdq.1
+++ b/man/ncpdq.1
@@ -1,36 +1,41 @@
-.\" $Header: /cvsroot/nco/nco/man/ncpdq.1,v 1.18 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncpdq.1,v 1.29 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncpdq 
 .\" Usage:
-.\" nroff -man ~/nco/man/ncpdq.1
+.\" nroff -man ~/nco/man/ncpdq.1 | less
 .TH NCPDQ 1
 .SH NAME
 ncpdq \- netCDF Permute Dimensions Quickly, Pack Data Quietly...
 .SH SYNTAX
-ncpdq [\-3] [\-4] [\-6] [\-A] [\-a 
+ncpdq [\-3] [\-4] [\-6] [\-7] [\-A] [\-a 
 .IR dim [,...]]
-[\-C] [\-c] [\-D 
-.IR dbg ]
+[\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]]]
-[\-F]
-[\-h] [\-L 
+[\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
 [\-M 
 .IR pck_map ]
-[\-O] [\-o 
+[\-\-mrd] [\-\-msa] [\-\-no_tmp_fl] [\-O] [\-o 
 .IR output-file ]
 [\-P 
 .IR pck_plc ]
 [\-p 
 .IR path ]
-[\-R] [\-r] 
-[\-t 
+[\-R] [\-r] [\-\-ram_all] [\-t 
 .IR thr_nbr ] 
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -104,14 +109,14 @@ The specified re-ordering will fail if it requires creating more than
 one record dimension amongst all the output variables.
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncpdq.1,v 1.18 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncpdq.1,v 1.29 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncra.1 b/man/ncra.1
index fba8b96..ff8b0b2 100644
--- a/man/ncra.1
+++ b/man/ncra.1
@@ -1,30 +1,37 @@
-.\" $Header: /cvsroot/nco/nco/man/ncra.1,v 1.17 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncra.1,v 1.33 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncra
 .\" Usage:
-.\" nroff -man ~/nco/man/ncra.1
+.\" nroff -man ~/nco/man/ncra.1 | less
 .TH NCRA 1
 .SH NAME
 ncra \- netCDF Record Averager
 .SH SYNTAX
-ncra [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D 
-.IR dbg ]
+ncra [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D 
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
-.IR max ]][,[
-.IR stride ]]]
-[\-F]
-[\-h] [\-L 
+.IR min ][,[
+.IR max ]][,
+.IR stride [[,[
+.IR duration ]]]]]
+[\-\-dbl|flt] [\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-n 
+[\-\-mro] [\-\-msa] [\-n 
 .IR loop ]
-[\-O] [\-p 
+[\-\-no_tmp_fl] [\-O] [\-p 
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-\-rec_apn] [\-t
 .IR thr_nbr ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -129,14 +136,14 @@ ncra \-d time,6.,54. ??.nc 8506_8906.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncra.1,v 1.17 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncra.1,v 1.33 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
@@ -176,6 +183,22 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR ncdiff (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/man/ncrcat.1 b/man/ncrcat.1
index 8b12b24..f73b948 100644
--- a/man/ncrcat.1
+++ b/man/ncrcat.1
@@ -1,30 +1,37 @@
-.\" $Header: /cvsroot/nco/nco/man/ncrcat.1,v 1.17 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncrcat.1,v 1.28 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncrcat
 .\" Usage:
-.\" nroff -man ~/nco/man/ncrcat.1
+.\" nroff -man ~/nco/man/ncrcat.1 | less
 .TH NCRCAT 1
 .SH NAME
 ncrcat \- netCDF Record Concatenator
 .SH SYNTAX
-ncrcat [\-3] [\-4] [\-6] [\-A] [\-C] [\-c] [\-D
-.IR dbg ]
+ncrcat [\-3] [\-4] [\-6] [\-7] [\-A] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]][,[
-.IR stride ]]]
-[\-F]
-[\-h] [\-L 
+.IR stride [[,[
+.IR duration ]]]]]
+[\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdr_pad
+.IR sz ]
+[\-L 
 .IR dfl_lvl ] 
 [\-l 
 .IR path ]
-[\-n
+[\-\-mro] [\-\-msa] [\-n
 .IR loop]
-[\-O] [\-p
+[\-\-no_tmp_fl] [\-O] [\-p
 .IR path ]
-[\-R] [\-r] [\-t
+[\-R] [\-r] [\-\-ram_all] [\-\-rec_apn] [\-t
 .IR thr_nbr ]
-[\-v
+[\--unn] [\-v 
 .IR var [,...]]
 [\-X 
 .IR box ] 
@@ -122,14 +129,14 @@ ncrcat \-d time,6.,54. ??.nc 8506_8906.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncrcat.1,v 1.17 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncrcat.1,v 1.28 2013/11/06 17:51:13 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
diff --git a/man/ncrename.1 b/man/ncrename.1
index 4f8f031..309ab25 100644
--- a/man/ncrename.1
+++ b/man/ncrename.1
@@ -1,7 +1,7 @@
-.\" $Header: /cvsroot/nco/nco/man/ncrename.1,v 1.10 2011/05/05 17:28:15 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncrename.1,v 1.18 2013/12/02 00:31:21 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncrename
 .\" Usage:
-.\" nroff -man ~/nco/man/ncrename.1
+.\" nroff -man ~/nco/man/ncrename.1 | less
 .TH NCRENAME 1
 .SH NAME
 ncrename \- netCDF Renamer
@@ -13,8 +13,12 @@ ncrename [\-a
 [\-d 
 .IR old_name,new_name ]
 [\-d
-\ .\|.\|.\ ] [\-h] [\-l path] [\-O] [\-p path]
-[\-R] [\-r] [\-v 
+\ .\|.\|.\ ] [\-g 
+.IR old_name,new_name ] 
+[\-g \ .\|.\|.\ ] [\-h] [\-\-hdr_pad
+.IR sz ]
+[\-l path] [\-O] [\-p path]
+[\-R] [\-r] [\-\-ram_all] [\-v 
 .IR old_name,new_name ]
 [\-v \ .\|.\|.\ ]
 .I input-file
@@ -109,6 +113,17 @@ and
 values. 
 This option may be specified more than once.
 .TP
+.B \-g 
+.IR old_name ,
+.I "new_name"
+Group renaming. 
+The old and new names of the group are specified by the associated
+.I old_name
+and 
+.I new_name
+values. 
+This option may be specified more than once.
+.TP
 .B \-v 
 .IR old_name ,
 .I "new_name"
@@ -176,20 +191,20 @@ ncrename \-a _FillValue,missing_value \-a Zaire,Congo in.nc out.nc
 .RE
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncrename.1,v 1.10 2011/05/05 17:28:15 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncrename.1,v 1.18 2013/12/02 00:31:21 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
 
 .SH COPYRIGHT
-Copyright \(co 1995-2011 Charlie Zender
+Copyright \(co 1995-2012 Charlie Zender
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@@ -223,6 +238,22 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR ncdiff (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/man/ncwa.1 b/man/ncwa.1
index cba87a2..847a8b2 100644
--- a/man/ncwa.1
+++ b/man/ncwa.1
@@ -1,38 +1,44 @@
-.\" $Header: /cvsroot/nco/nco/man/ncwa.1,v 1.15 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncwa.1,v 1.28 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: ROFF man page for ncwa
 .\" Usage:
-.\" nroff -man ~/nco/man/ncwa.1
+.\" nroff -man ~/nco/man/ncwa.1 | less
 .TH NCWA 1
 .SH NAME
 ncwa \- netCDF Weighted Averager
 .SH SYNTAX
-ncwa [\-3] [\-4] [\-6] [\-A] [\-a 
+ncwa [\-3] [\-4] [\-6] [\-7] [\-A] [\-a 
 .IR dim [,...]]
 [\-B 
 .IR mask_cond] 
-[\-b] [\-C] [\-c] [\-D
-.IR dbg ]
+[\-b] [\-\-bfr
+.IR sz ] [\-C] [\-c] [\-D
+.IR dbg_lvl ]
 [\-d 
 .IR dim ,[
-.IR "min" ][,[
+.IR min ][,[
 .IR max ]]]
-[\-F]
-[\-h] [\-I] [\-L 
+[\-\-dbl|flt] [\-F] [\-G
+.IR gpe_dsc ]
+[\-g  
+.IR grp [,...]]
+[\-h] [\-\-hdf] [\-\-hdr_pad
+.IR sz ]
+[\-I] [\-L 
 .IR dfl_lvl ] [\-l 
 .IR path ]
 [\-M 
 .IR val ]
 [\-m 
 .IR mask ]
-[\-N] [\-O] [\-o 
+[\-N] [\-\-no_tmp_fl] [\-O] [\-o 
 .IR output-file ]
 [\-p 
 .IR path ]
-[\-R] [\-r] [\-T
+[\-R] [\-r] [\-\-ram_all] [\-T
 .IR mask_comp ]
 [\-t
 .IR thr_nbr ]
-[\-v 
+[\--unn] [\-v 
 .IR var [,...]]
 [\-w 
 .IR weight ]
@@ -188,14 +194,14 @@ The mathematical definition of operations involving rank reduction
 is given above.
 
 .\" NB: Append man_end.txt here
-.\" $Header: /cvsroot/nco/nco/man/ncwa.1,v 1.15 2010/01/05 20:02:17 zender Exp $ -*-nroff-*-
+.\" $Header: /cvsroot/nco/nco/man/ncwa.1,v 1.28 2013/12/02 01:05:56 zender Exp $ -*-nroff-*-
 .\" Purpose: Trailer file for common ending to NCO man pages
 .\" Usage: 
 .\" Append this file to end of NCO man pages immediately after marker
 .\" that says "Append man_end.txt here"
 .SH AUTHOR
 .B NCO
-manual pages written by Charlie Zender and Brian Mays.
+manual pages written by Charlie Zender and originally formatted by Brian Mays.
 
 .SH "REPORTING BUGS"
 Report bugs to <http://sf.net/bugs/?group_id=3331>.
@@ -235,6 +241,22 @@ programs are properly installed at your site, the command
 should give you access to the complete manual, except for the
 TeX-intensive portions.
 
+.BR ncap (1), 
+.BR ncap2 (1), 
+.BR ncatted (1), 
+.BR ncbo (1), 
+.BR ncdiff (1), 
+.BR nces (1), 
+.BR ncecat (1), 
+.BR ncflint (1), 
+.BR ncks (1), 
+.BR nco (1), 
+.BR ncpdq (1), 
+.BR ncra (1), 
+.BR ncrcat (1), 
+.BR ncrename (1), 
+.BR ncwa (1) 
+
 .SH HOMEPAGE
 The 
 .B NCO
diff --git a/qt/libnco/libnco.pro b/qt/libnco/libnco.pro
new file mode 100644
index 0000000..b4b91a7
--- /dev/null
+++ b/qt/libnco/libnco.pro
@@ -0,0 +1,123 @@
+# template type is library
+TEMPLATE = lib
+# name of library
+TARGET = libnco
+# the library is a static library
+CONFIG += staticlib
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+unix:CONFIG( debug, debug|release ) {
+    # debug
+        DESTDIR = ./debug
+} else {
+    # release
+        DESTDIR = ./release
+}
+
+# netCDF library
+# gcc settings to use C99
+unix {
+ DEFINES += HAVE_CONFIG_H
+ INCLUDEPATH += ../../
+ INCLUDEPATH += /usr/local/include
+ INCLUDEPATH += /usr/local
+ DEFINES += _BSD_SOURCE
+ DEFINES += _POSIX_SOURCE
+ LIBS +=
+ QMAKE_CFLAGS += -std=c99
+}
+
+# common NCO settings
+include (../nco.pri)
+
+SOURCES += ../../src/nco/nco_getopt.c
+HEADERS += ../../src/nco/nco_getopt.h
+
+# header files
+HEADERS += ../../src/nco/libnco.h \
+../../src/nco/ncap.h \
+../../src/nco/nco.h \
+../../src/nco/nco_att_utl.h \
+../../src/nco/nco_aux.h \
+../../src/nco/nco_bnr.h \
+../../src/nco/nco_cln_utl.h \
+../../src/nco/nco_cnf_dmn.h \
+../../src/nco/nco_cnf_typ.h \
+../../src/nco/nco_cnk.h \
+../../src/nco/nco_cnv_arm.h \
+../../src/nco/nco_cnv_csm.h \
+../../src/nco/nco_ctl.h \
+../../src/nco/nco_dbg.h \
+../../src/nco/nco_dmn_utl.h \
+../../src/nco/nco_fl_utl.h \
+../../src/nco/nco_grp_trv.h \
+../../src/nco/nco_grp_utl.h \
+../../src/nco/nco_lmt.h \
+../../src/nco/nco_lst_utl.h \
+../../src/nco/nco_md5.h \
+../../src/nco/nco_mmr.h \
+../../src/nco/nco_mpi.h \
+../../src/nco/nco_msa.h \
+../../src/nco/nco_mss_val.h \
+../../src/nco/nco_netcdf.h \
+../../src/nco/nco_omp.h \
+../../src/nco/nco_pck.h \
+../../src/nco/nco_prn.h \
+../../src/nco/nco_rec_var.h \
+../../src/nco/nco_rth_flt.h \
+../../src/nco/nco_rth_utl.h \
+../../src/nco/nco_scl_utl.h \
+../../src/nco/nco_scm.h \
+../../src/nco/nco_sng_utl.h \
+../../src/nco/nco_srm.h \
+../../src/nco/nco_typ.h \
+../../src/nco/nco_uthash.h \
+../../src/nco/nco_var_avg.h \
+../../src/nco/nco_var_lst.h \
+../../src/nco/nco_var_rth.h \
+../../src/nco/nco_var_scv.h \
+../../src/nco/nco_var_utl.h
+
+# source files
+SOURCES += ../../src/nco/nco_att_utl.c \
+../../src/nco/nco_att_utl.c \
+../../src/nco/nco_aux.c \
+../../src/nco/nco_bnr.c \
+../../src/nco/nco_cln_utl.c \
+../../src/nco/nco_cnf_dmn.c \
+../../src/nco/nco_cnf_typ.c \
+../../src/nco/nco_cnk.c \
+../../src/nco/nco_cnv_arm.c \
+../../src/nco/nco_cnv_csm.c \
+../../src/nco/nco_ctl.c \
+../../src/nco/nco_dbg.c \
+../../src/nco/nco_dmn_utl.c \
+../../src/nco/nco_fl_utl.c \
+../../src/nco/nco_grp_trv.c \
+../../src/nco/nco_grp_utl.c \
+../../src/nco/nco_lmt.c \
+../../src/nco/nco_lst_utl.c \
+../../src/nco/nco_md5.c \
+../../src/nco/nco_mmr.c \
+../../src/nco/nco_msa.c \
+../../src/nco/nco_mss_val.c \
+../../src/nco/nco_netcdf.c \
+../../src/nco/nco_omp.c \
+../../src/nco/nco_pck.c \
+../../src/nco/nco_prn.c \
+../../src/nco/nco_rec_var.c \
+../../src/nco/nco_rth_flt.c \
+../../src/nco/nco_rth_utl.c \
+../../src/nco/nco_scl_utl.c \
+../../src/nco/nco_scm.c \
+../../src/nco/nco_sng_utl.c \
+../../src/nco/nco_srm.c \
+../../src/nco/nco_var_avg.c \
+../../src/nco/nco_var_lst.c \
+../../src/nco/nco_var_rth.c \
+../../src/nco/nco_var_scv.c \
+../../src/nco/nco_var_utl.c
+
diff --git a/qt/libnco/libnco.vcxproj b/qt/libnco/libnco.vcxproj
new file mode 100644
index 0000000..45d09d3
--- /dev/null
+++ b/qt/libnco/libnco.vcxproj
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B1435D13-6445-362C-A7A3-8BA4A2AA25D1}</ProjectGuid>
+    <RootNamespace>libnco</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>libnco</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>libnco</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">libnco</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.lib</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">libnco</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.lib</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ResourceOutputFileName>$(OutDir)\$(InputName).res</ResourceOutputFileName>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ResourceOutputFileName>$(OutDir)\$(InputName).res</ResourceOutputFileName>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\nco_att_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_aux.c" />
+    <ClCompile Include="..\..\src\nco\nco_bnr.c" />
+    <ClCompile Include="..\..\src\nco\nco_cln_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_cnf_dmn.c" />
+    <ClCompile Include="..\..\src\nco\nco_cnf_typ.c" />
+    <ClCompile Include="..\..\src\nco\nco_cnk.c" />
+    <ClCompile Include="..\..\src\nco\nco_cnv_arm.c" />
+    <ClCompile Include="..\..\src\nco\nco_cnv_csm.c" />
+    <ClCompile Include="..\..\src\nco\nco_ctl.c" />
+    <ClCompile Include="..\..\src\nco\nco_dbg.c" />
+    <ClCompile Include="..\..\src\nco\nco_dmn_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_fl_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_getopt.c" />
+    <ClCompile Include="..\..\src\nco\nco_grp_trv.c" />
+    <ClCompile Include="..\..\src\nco\nco_grp_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_lmt.c" />
+    <ClCompile Include="..\..\src\nco\nco_lst_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_md5.c" />
+    <ClCompile Include="..\..\src\nco\nco_mmr.c" />
+    <ClCompile Include="..\..\src\nco\nco_msa.c" />
+    <ClCompile Include="..\..\src\nco\nco_mss_val.c" />
+    <ClCompile Include="..\..\src\nco\nco_netcdf.c" />
+    <ClCompile Include="..\..\src\nco\nco_omp.c" />
+    <ClCompile Include="..\..\src\nco\nco_pck.c" />
+    <ClCompile Include="..\..\src\nco\nco_prn.c" />
+    <ClCompile Include="..\..\src\nco\nco_rec_var.c" />
+    <ClCompile Include="..\..\src\nco\nco_rth_flt.c" />
+    <ClCompile Include="..\..\src\nco\nco_rth_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_scl_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_scm.c" />
+    <ClCompile Include="..\..\src\nco\nco_sng_utl.c" />
+    <ClCompile Include="..\..\src\nco\nco_var_avg.c" />
+    <ClCompile Include="..\..\src\nco\nco_var_lst.c" />
+    <ClCompile Include="..\..\src\nco\nco_var_rth.c" />
+    <ClCompile Include="..\..\src\nco\nco_var_scv.c" />
+    <ClCompile Include="..\..\src\nco\nco_var_utl.c" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\src\nco\libnco.h" />
+    <ClInclude Include="..\..\src\nco\ncap.h" />
+    <ClInclude Include="..\..\src\nco\nco.h" />
+    <ClInclude Include="..\..\src\nco\nco_att_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_aux.h" />
+    <ClInclude Include="..\..\src\nco\nco_bnr.h" />
+    <ClInclude Include="..\..\src\nco\nco_cln_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_cnf_dmn.h" />
+    <ClInclude Include="..\..\src\nco\nco_cnf_typ.h" />
+    <ClInclude Include="..\..\src\nco\nco_cnk.h" />
+    <ClInclude Include="..\..\src\nco\nco_cnv_arm.h" />
+    <ClInclude Include="..\..\src\nco\nco_cnv_csm.h" />
+    <ClInclude Include="..\..\src\nco\nco_ctl.h" />
+    <ClInclude Include="..\..\src\nco\nco_dbg.h" />
+    <ClInclude Include="..\..\src\nco\nco_dmn_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_fl_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_getopt.h" />
+    <ClInclude Include="..\..\src\nco\nco_grp_trv.h" />
+    <ClInclude Include="..\..\src\nco\nco_grp_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_lmt.h" />
+    <ClInclude Include="..\..\src\nco\nco_lst_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_md5.h" />
+    <ClInclude Include="..\..\src\nco\nco_mmr.h" />
+    <ClInclude Include="..\..\src\nco\nco_mpi.h" />
+    <ClInclude Include="..\..\src\nco\nco_msa.h" />
+    <ClInclude Include="..\..\src\nco\nco_mss_val.h" />
+    <ClInclude Include="..\..\src\nco\nco_netcdf.h" />
+    <ClInclude Include="..\..\src\nco\nco_omp.h" />
+    <ClInclude Include="..\..\src\nco\nco_pck.h" />
+    <ClInclude Include="..\..\src\nco\nco_prn.h" />
+    <ClInclude Include="..\..\src\nco\nco_rec_var.h" />
+    <ClInclude Include="..\..\src\nco\nco_rth_flt.h" />
+    <ClInclude Include="..\..\src\nco\nco_rth_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_scl_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_scm.h" />
+    <ClInclude Include="..\..\src\nco\nco_sng_utl.h" />
+    <ClInclude Include="..\..\src\nco\nco_typ.h" />
+    <ClInclude Include="..\..\src\nco\nco_var_avg.h" />
+    <ClInclude Include="..\..\src\nco\nco_var_lst.h" />
+    <ClInclude Include="..\..\src\nco\nco_var_rth.h" />
+    <ClInclude Include="..\..\src\nco\nco_var_scv.h" />
+    <ClInclude Include="..\..\src\nco\nco_var_utl.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/libnco_c++/libnco_c++.pro b/qt/libnco_c++/libnco_c++.pro
new file mode 100644
index 0000000..fae36e3
--- /dev/null
+++ b/qt/libnco_c++/libnco_c++.pro
@@ -0,0 +1,60 @@
+# template type is library
+TEMPLATE = lib
+# name of library
+TARGET = libnco_c++
+# the library is a static library
+CONFIG += staticlib
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+INCLUDEPATH += ../../src/nco_c++
+
+
+#nco_c++ library
+unix:CONFIG( debug, debug|release ) {
+    # debug
+        DESTDIR = ./debug
+} else {
+    # release
+        DESTDIR = ./release
+}
+
+unix {
+ INCLUDEPATH += /usr/local/include
+ INCLUDEPATH += /usr/local
+ #RHEL
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/include
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/udunits-2.1.24/include
+}
+win32 {
+ INCLUDEPATH += $(HEADER_NETCDF) 
+ DEFINES += _CRT_SECURE_NO_WARNINGS
+ DEFINES += _CRT_NONSTDC_NO_DEPRECATE
+ 
+ # netCDF assumed in Windows build
+ DEFINES += ENABLE_NETCDF4
+ DEFINES += HAVE_NETCDF4_H
+ DEFINES += NEED_STRCASECMP
+ DEFINES += NEED_STRCASESTR
+ # gsl
+ INCLUDEPATH += $(HEADER_GSL)
+ DEFINES += ENABLE_GSL
+}
+
+# header files
+HEADERS += ../../src/nco_c++/libnco_c++.hh \
+../../src/nco_c++/nco_dmn.hh \
+../../src/nco_c++/nco_hgh.hh \
+../../src/nco_c++/nco_var.hh \
+../../src/nco_c++/nco_att.hh \
+../../src/nco_c++/nco_fl.hh \
+../../src/nco_c++/nco_utl.hh 
+
+# source files
+SOURCES += ../../src/nco_c++/nco_att.cc \
+../../src/nco_c++/nco_dmn.cc \
+../../src/nco_c++/nco_fl.cc \
+../../src/nco_c++/nco_hgh.cc \
+../../src/nco_c++/nco_utl.cc \
+../../src/nco_c++/nco_var.cc
diff --git a/qt/libnco_c++/libnco_c++.vcxproj b/qt/libnco_c++/libnco_c++.vcxproj
new file mode 100644
index 0000000..bae676d
--- /dev/null
+++ b/qt/libnco_c++/libnco_c++.vcxproj
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2B0DD292-1A49-3877-89E3-7F8E519129B4}</ProjectGuid>
+    <RootNamespace>libnco_c++</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>libnco_c++</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>libnco_c++</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">libnco_c++</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.lib</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">libnco_c++</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.lib</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"..\..\src\nco_c++";"$(HEADER_NETCDF)";"$(HEADER_GSL)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ResourceOutputFileName>$(OutDir)\$(InputName).res</ResourceOutputFileName>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"..\..\src\nco_c++";"$(HEADER_NETCDF)";"$(HEADER_GSL)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_WINDOWS;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <ResourceOutputFileName>$(OutDir)\$(InputName).res</ResourceOutputFileName>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco_c++\nco_att.cc" />
+    <ClCompile Include="..\..\src\nco_c++\nco_dmn.cc" />
+    <ClCompile Include="..\..\src\nco_c++\nco_fl.cc" />
+    <ClCompile Include="..\..\src\nco_c++\nco_hgh.cc" />
+    <ClCompile Include="..\..\src\nco_c++\nco_utl.cc" />
+    <ClCompile Include="..\..\src\nco_c++\nco_var.cc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\src\nco_c++\libnco_c++.hh" />
+    <ClInclude Include="..\..\src\nco_c++\nco_att.hh" />
+    <ClInclude Include="..\..\src\nco_c++\nco_dmn.hh" />
+    <ClInclude Include="..\..\src\nco_c++\nco_fl.hh" />
+    <ClInclude Include="..\..\src\nco_c++\nco_hgh.hh" />
+    <ClInclude Include="..\..\src\nco_c++\nco_utl.hh" />
+    <ClInclude Include="..\..\src\nco_c++\nco_var.hh" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncap2/ncap2.pro b/qt/ncap2/ncap2.pro
new file mode 100644
index 0000000..f83537b
--- /dev/null
+++ b/qt/ncap2/ncap2.pro
@@ -0,0 +1,90 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncap2
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+        win32:LIBS += $(LIB_ANTLR) 
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+        win32:LIBS += $(LIB_ANTLR_REL)
+}
+
+# library dependencies
+unix {
+ INCLUDEPATH += /usr/local/include 
+ INCLUDEPATH += /usr/local 	 	  
+ LIBS += -L/usr/lib/ -lnetcdf -lhdf5_hl -lhdf5
+ LIBS += -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i386-linux-gnu/ -lz -ludunits2 -lexpat 
+ LIBS += -lantlr
+
+ #RHEL
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/include
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/udunits-2.1.24/include
+ LIBS += -L/SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/lib
+ LIBS += -L/SNS/users/pvicente/libs/install/udunits-2.1.24/lib
+}
+
+# common NCO settings
+include (../nco.pri)
+
+win32 {
+ INCLUDEPATH += $(HEADER_ANTLR)
+}
+
+# SOURCES
+# HEADERS
+
+INCLUDEPATH += ../../src/nco
+INCLUDEPATH += ../../src/nco++
+
+
+HEADERS   = ../../src/nco++/fmc_all_cls.hh \
+../../src/nco++/fmc_cls.hh \
+../../src/nco++/Invoke.hh \
+../../src/nco++/fmc_cls.hh \
+../../src/nco++/libnco++.hh \
+../../src/nco++/fmc_cls.hh \
+../../src/nco++/map_srt_tmp.hh \
+../../src/nco++/ncap2.hh \
+../../src/nco++/ncap2_utl.hh \
+../../src/nco++/ncap2_utl.hh \
+../../src/nco++/NcapVar.hh \
+../../src/nco++/NcapVarVector.hh  \
+../../src/nco++/NcapVector.hh \
+../../src/nco++/ncoEnumTokenTypes.hpp \
+../../src/nco++/ncoTree.hpp \
+../../src/nco++/prs_cls.hh \
+../../src/nco++/sdo_utl.hh \
+../../src/nco++/sym_cls.hh \
+../../src/nco++/sdo_utl.hh \
+../../src/nco++/VarOp.hh \
+../../src/nco++/vtl_cls.hh \
+../../src/nco++/fmc_gsl_cls.hh \
+../../src/nco++/nco_gsl.h
+
+SOURCES   = ../../src/nco++/Invoke.cc \
+../../src/nco++/ncap2.cc \
+../../src/nco++/ncap2_utl.cc \
+../../src/nco++/sdo_utl.cc \
+../../src/nco++/sym_cls.cc \
+../../src/nco++/fmc_cls.cc \
+../../src/nco++/fmc_all_cls.cc \
+../../src/nco++/fmc_gsl_cls.cc \
+../../src/nco++/NcapVar.cc \
+../../src/nco++/NcapVarVector.cc \
+../../src/nco++/ncoLexer.cpp \
+../../src/nco++/ncoParser.cpp \
+../../src/nco++/ncoTree.cpp \
+../../src/nco++/prs_cls.cc \
+../../src/nco++/nco_gsl.c
+
diff --git a/qt/ncap2/ncap2.vcxproj b/qt/ncap2/ncap2.vcxproj
new file mode 100644
index 0000000..8d57bbf
--- /dev/null
+++ b/qt/ncap2/ncap2.vcxproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{46AC4EA0-1D3E-3A4A-B6BC-CA4E90E718FE}</ProjectGuid>
+    <RootNamespace>ncap2</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncap2</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncap2</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncap2</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncap2</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";"$(HEADER_ANTLR)";"..\..\src\nco";"..\..\src\nco++";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_ANTLR);$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncap2.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";"$(HEADER_ANTLR)";"..\..\src\nco";"..\..\src\nco++";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_ANTLR_REL);$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncap2.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco++\Invoke.cc" />
+    <ClCompile Include="..\..\src\nco++\NcapVar.cc" />
+    <ClCompile Include="..\..\src\nco++\NcapVarVector.cc" />
+    <ClCompile Include="..\..\src\nco++\fmc_all_cls.cc" />
+    <ClCompile Include="..\..\src\nco++\fmc_cls.cc" />
+    <ClCompile Include="..\..\src\nco++\fmc_gsl_cls.cc" />
+    <ClCompile Include="..\..\src\nco++\ncap2.cc" />
+    <ClCompile Include="..\..\src\nco++\ncap2_utl.cc" />
+    <ClCompile Include="..\..\src\nco++\ncoLexer.cpp" />
+    <ClCompile Include="..\..\src\nco++\ncoParser.cpp" />
+    <ClCompile Include="..\..\src\nco++\ncoTree.cpp" />
+    <ClCompile Include="..\..\src\nco++\nco_gsl.c" />
+    <ClCompile Include="..\..\src\nco++\prs_cls.cc" />
+    <ClCompile Include="..\..\src\nco++\sdo_utl.cc" />
+    <ClCompile Include="..\..\src\nco++\sym_cls.cc" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\src\nco++\Invoke.hh" />
+    <ClInclude Include="..\..\src\nco++\NcapVar.hh" />
+    <ClInclude Include="..\..\src\nco++\NcapVarVector.hh" />
+    <ClInclude Include="..\..\src\nco++\NcapVector.hh" />
+    <ClInclude Include="..\..\src\nco++\VarOp.hh" />
+    <ClInclude Include="..\..\src\nco++\fmc_all_cls.hh" />
+    <ClInclude Include="..\..\src\nco++\fmc_cls.hh" />
+    <ClInclude Include="..\..\src\nco++\fmc_gsl_cls.hh" />
+    <ClInclude Include="..\..\src\nco++\libnco++.hh" />
+    <ClInclude Include="..\..\src\nco++\map_srt_tmp.hh" />
+    <ClInclude Include="..\..\src\nco++\ncap2.hh" />
+    <ClInclude Include="..\..\src\nco++\ncap2_utl.hh" />
+    <ClInclude Include="..\..\src\nco++\ncoEnumTokenTypes.hpp" />
+    <ClInclude Include="..\..\src\nco++\ncoTree.hpp" />
+    <ClInclude Include="..\..\src\nco++\nco_gsl.h" />
+    <ClInclude Include="..\..\src\nco++\prs_cls.hh" />
+    <ClInclude Include="..\..\src\nco++\sdo_utl.hh" />
+    <ClInclude Include="..\..\src\nco++\sym_cls.hh" />
+    <ClInclude Include="..\..\src\nco++\vtl_cls.hh" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncatted/ncatted.pro b/qt/ncatted/ncatted.pro
new file mode 100644
index 0000000..a5224c2
--- /dev/null
+++ b/qt/ncatted/ncatted.pro
@@ -0,0 +1,27 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncatted
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncatted.c
+
diff --git a/qt/ncatted/ncatted.vcxproj b/qt/ncatted/ncatted.vcxproj
new file mode 100644
index 0000000..8efefca
--- /dev/null
+++ b/qt/ncatted/ncatted.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1D085F3D-EE8C-381F-9CAB-4B36C909FF09}</ProjectGuid>
+    <RootNamespace>ncatted</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncatted</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncatted</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncatted</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncatted</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncatted.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncatted.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncatted.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncbo/ncbo.pro b/qt/ncbo/ncbo.pro
new file mode 100644
index 0000000..bd18635
--- /dev/null
+++ b/qt/ncbo/ncbo.pro
@@ -0,0 +1,27 @@
+
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncbo
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncbo.c
diff --git a/qt/ncbo/ncbo.vcxproj b/qt/ncbo/ncbo.vcxproj
new file mode 100644
index 0000000..56da291
--- /dev/null
+++ b/qt/ncbo/ncbo.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{88AF0DF5-ABE6-32EA-BEFE-61B96F125F44}</ProjectGuid>
+    <RootNamespace>ncbo</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncbo</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncbo</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncbo</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncbo</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncbo.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncbo.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncbo.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncea/ncea.pro b/qt/ncea/ncea.pro
new file mode 100644
index 0000000..34f7932
--- /dev/null
+++ b/qt/ncea/ncea.pro
@@ -0,0 +1,26 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncea
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncra.c
\ No newline at end of file
diff --git a/qt/ncea/ncea.vcxproj b/qt/ncea/ncea.vcxproj
new file mode 100644
index 0000000..5cdd7ce
--- /dev/null
+++ b/qt/ncea/ncea.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{40AAEEE2-5064-3C05-8D55-AA7B160B0205}</ProjectGuid>
+    <RootNamespace>ncea</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncea</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncea</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncea</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncea</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncea.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncea.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncra.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncecat/ncecat.pro b/qt/ncecat/ncecat.pro
new file mode 100644
index 0000000..55fdd1f
--- /dev/null
+++ b/qt/ncecat/ncecat.pro
@@ -0,0 +1,28 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncecat
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncecat.c
+
+
diff --git a/qt/ncecat/ncecat.vcxproj b/qt/ncecat/ncecat.vcxproj
new file mode 100644
index 0000000..02bbcfd
--- /dev/null
+++ b/qt/ncecat/ncecat.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{AEBDA630-EFA0-31AD-BC52-8E3DB03F8C74}</ProjectGuid>
+    <RootNamespace>ncecat</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncecat</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncecat</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncecat</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncecat</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncecat.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncecat.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncecat.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncflint/ncflint.pro b/qt/ncflint/ncflint.pro
new file mode 100644
index 0000000..658ba9f
--- /dev/null
+++ b/qt/ncflint/ncflint.pro
@@ -0,0 +1,27 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncflint
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncflint.c
+
diff --git a/qt/ncflint/ncflint.vcxproj b/qt/ncflint/ncflint.vcxproj
new file mode 100644
index 0000000..cfd0fe0
--- /dev/null
+++ b/qt/ncflint/ncflint.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{3286654D-13F4-3912-9034-EC9E4B220887}</ProjectGuid>
+    <RootNamespace>ncflint</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncflint</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncflint</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncflint</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncflint</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncflint.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncflint.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncflint.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncks/ncks.pro b/qt/ncks/ncks.pro
new file mode 100644
index 0000000..fe2d39a
--- /dev/null
+++ b/qt/ncks/ncks.pro
@@ -0,0 +1,26 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncks
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncks.c
diff --git a/qt/ncks/ncks.vcxproj b/qt/ncks/ncks.vcxproj
new file mode 100644
index 0000000..319e9dd
--- /dev/null
+++ b/qt/ncks/ncks.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4E8A7101-FE87-3BA7-96CB-758DE731C1B3}</ProjectGuid>
+    <RootNamespace>ncks</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncks</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncks</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncks</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncks</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncks.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncks.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncks.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/nco.pri b/qt/nco.pri
new file mode 100644
index 0000000..d8b0b51
--- /dev/null
+++ b/qt/nco.pri
@@ -0,0 +1,62 @@
+# common NCO Qt dependency library settings for all NCO operators
+# gcc settings to use C99
+# HDF5 and netCDF LIB order is important
+# _BSD_SOURCE and _POSIX_SOURCE needed
+unix {
+ DEFINES += HAVE_CONFIG_H
+ INCLUDEPATH += ../../
+ DEFINES += _BSD_SOURCE
+ DEFINES += _POSIX_SOURCE
+ QMAKE_CFLAGS += -std=c99
+ INCLUDEPATH += /usr/local/include
+ INCLUDEPATH += /usr/local
+ LIBS += -L/usr/local/lib -L/usr/lib/ -lnetcdf -lhdf5_hl -lhdf5 -lgsl -lgslcblas -lm
+ LIBS += -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i386-linux-gnu/ -lz -ludunits2 -lexpat
+ # Mac Ports netCDF locations
+ LIBS += -L/opt/local/lib
+ INCLUDEPATH += /opt/local/include 
+ # Mac Ports udunits locations
+ INCLUDEPATH += /opt/local/include/udunits2
+ #RHEL
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/include
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/udunits-2.1.24/include
+ LIBS += -L/SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/lib
+ LIBS += -L/SNS/users/pvicente/libs/install/udunits-2.1.24/lib
+}
+
+CONFIG -= qt
+#CONFIG += netcdf3
+
+win32{
+ CONFIG += console 
+ DEFINES += _CRT_SECURE_NO_WARNINGS
+ DEFINES += _CRT_NONSTDC_NO_DEPRECATE
+ DEFINES += NEED_STRCASECMP
+ DEFINES += NEED_STRCASESTR
+ # gsl
+ INCLUDEPATH += $(HEADER_GSL)
+ DEFINES += ENABLE_GSL
+ DEFINES += ENABLE_DAP
+}
+
+win32{
+ netcdf3 {
+ INCLUDEPATH += $(HEADER_NETCDF3)
+ LIBS += $(LIB_NETCDF3)
+ } else {
+ INCLUDEPATH += $(HEADER_NETCDF)
+ LIBS += $(LIB_NETCDF)
+ LIBS += $(LIB_DISPATCH)
+ LIBS += $(LIB_NETCDF4)
+ LIBS += $(LIB_HDF5)
+ LIBS += $(LIB_HDF5_HL)
+ LIBS += $(LIB_ZLIB)
+ LIBS += $(LIB_SZIP)
+ DEFINES += ENABLE_NETCDF4
+ DEFINES += HAVE_NETCDF4_H
+}
+
+ LIBS += $(LIB_GSL)
+ LIBS += $(LIB_CURL)
+}
+
diff --git a/qt/nco.pro b/qt/nco.pro
new file mode 100644
index 0000000..82e06bf
--- /dev/null
+++ b/qt/nco.pro
@@ -0,0 +1,17 @@
+TEMPLATE = subdirs
+CONFIG += ordered
+SUBDIRS += libnco
+SUBDIRS += ncatted
+SUBDIRS += ncbo
+SUBDIRS += ncecat
+SUBDIRS += ncflint
+SUBDIRS += ncks
+SUBDIRS += ncpdq
+SUBDIRS += ncra
+SUBDIRS += ncrename
+SUBDIRS += ncwa
+SUBDIRS += ncrcat
+SUBDIRS += nces
+SUBDIRS += libnco_c++
+SUBDIRS += tst_nco_c++
+SUBDIRS += ncap2
diff --git a/qt/nco.sln b/qt/nco.sln
new file mode 100644
index 0000000..c3dd3da
--- /dev/null
+++ b/qt/nco.sln
@@ -0,0 +1,150 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnco", "libnco\libnco.vcxproj", "{B1435D13-6445-362C-A7A3-8BA4A2AA25D1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncatted", "ncatted\ncatted.vcxproj", "{1D085F3D-EE8C-381F-9CAB-4B36C909FF09}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncbo", "ncbo\ncbo.vcxproj", "{88AF0DF5-ABE6-32EA-BEFE-61B96F125F44}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncecat", "ncecat\ncecat.vcxproj", "{AEBDA630-EFA0-31AD-BC52-8E3DB03F8C74}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncflint", "ncflint\ncflint.vcxproj", "{3286654D-13F4-3912-9034-EC9E4B220887}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncks", "ncks\ncks.vcxproj", "{4E8A7101-FE87-3BA7-96CB-758DE731C1B3}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncpdq", "ncpdq\ncpdq.vcxproj", "{36A602E5-7DCB-3989-BAE4-300813BA7A62}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncra", "ncra\ncra.vcxproj", "{C6C016D2-81D8-3430-A886-89A8341C597E}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncrename", "ncrename\ncrename.vcxproj", "{A8A8384E-4BCF-3EBA-9D3E-F05807C392D9}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncwa", "ncwa\ncwa.vcxproj", "{7AF43FFB-B706-3443-ADDF-9C87DCFC0C57}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncrcat", "ncrcat\ncrcat.vcxproj", "{2A149B3A-F723-323D-BAB2-F7E0E30A8F4F}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncea", "ncea\ncea.vcxproj", "{40AAEEE2-5064-3C05-8D55-AA7B160B0205}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnco_c++", "libnco_c++\libnco_c++.vcxproj", "{2B0DD292-1A49-3877-89E3-7F8E519129B4}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tst_nco_c++", "tst_nco_c++\tst_nco_c++.vcxproj", "{43F93DE1-97C5-31A5-8DC1-5B291B295868}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+		{2B0DD292-1A49-3877-89E3-7F8E519129B4} = {2B0DD292-1A49-3877-89E3-7F8E519129B4}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncap2", "ncap2\ncap2.vcxproj", "{46AC4EA0-1D3E-3A4A-B6BC-CA4E90E718FE}"
+	ProjectSection(ProjectDependencies) = postProject
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1} = {B1435D13-6445-362C-A7A3-8BA4A2AA25D1}
+		{2B0DD292-1A49-3877-89E3-7F8E519129B4} = {2B0DD292-1A49-3877-89E3-7F8E519129B4}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1}.Debug|Win32.Build.0 = Debug|Win32
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1}.Release|Win32.ActiveCfg = Release|Win32
+		{B1435D13-6445-362C-A7A3-8BA4A2AA25D1}.Release|Win32.Build.0 = Release|Win32
+		{1D085F3D-EE8C-381F-9CAB-4B36C909FF09}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1D085F3D-EE8C-381F-9CAB-4B36C909FF09}.Debug|Win32.Build.0 = Debug|Win32
+		{1D085F3D-EE8C-381F-9CAB-4B36C909FF09}.Release|Win32.ActiveCfg = Release|Win32
+		{1D085F3D-EE8C-381F-9CAB-4B36C909FF09}.Release|Win32.Build.0 = Release|Win32
+		{88AF0DF5-ABE6-32EA-BEFE-61B96F125F44}.Debug|Win32.ActiveCfg = Debug|Win32
+		{88AF0DF5-ABE6-32EA-BEFE-61B96F125F44}.Debug|Win32.Build.0 = Debug|Win32
+		{88AF0DF5-ABE6-32EA-BEFE-61B96F125F44}.Release|Win32.ActiveCfg = Release|Win32
+		{88AF0DF5-ABE6-32EA-BEFE-61B96F125F44}.Release|Win32.Build.0 = Release|Win32
+		{AEBDA630-EFA0-31AD-BC52-8E3DB03F8C74}.Debug|Win32.ActiveCfg = Debug|Win32
+		{AEBDA630-EFA0-31AD-BC52-8E3DB03F8C74}.Debug|Win32.Build.0 = Debug|Win32
+		{AEBDA630-EFA0-31AD-BC52-8E3DB03F8C74}.Release|Win32.ActiveCfg = Release|Win32
+		{AEBDA630-EFA0-31AD-BC52-8E3DB03F8C74}.Release|Win32.Build.0 = Release|Win32
+		{3286654D-13F4-3912-9034-EC9E4B220887}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3286654D-13F4-3912-9034-EC9E4B220887}.Debug|Win32.Build.0 = Debug|Win32
+		{3286654D-13F4-3912-9034-EC9E4B220887}.Release|Win32.ActiveCfg = Release|Win32
+		{3286654D-13F4-3912-9034-EC9E4B220887}.Release|Win32.Build.0 = Release|Win32
+		{4E8A7101-FE87-3BA7-96CB-758DE731C1B3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4E8A7101-FE87-3BA7-96CB-758DE731C1B3}.Debug|Win32.Build.0 = Debug|Win32
+		{4E8A7101-FE87-3BA7-96CB-758DE731C1B3}.Release|Win32.ActiveCfg = Release|Win32
+		{4E8A7101-FE87-3BA7-96CB-758DE731C1B3}.Release|Win32.Build.0 = Release|Win32
+		{36A602E5-7DCB-3989-BAE4-300813BA7A62}.Debug|Win32.ActiveCfg = Debug|Win32
+		{36A602E5-7DCB-3989-BAE4-300813BA7A62}.Debug|Win32.Build.0 = Debug|Win32
+		{36A602E5-7DCB-3989-BAE4-300813BA7A62}.Release|Win32.ActiveCfg = Release|Win32
+		{36A602E5-7DCB-3989-BAE4-300813BA7A62}.Release|Win32.Build.0 = Release|Win32
+		{C6C016D2-81D8-3430-A886-89A8341C597E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C6C016D2-81D8-3430-A886-89A8341C597E}.Debug|Win32.Build.0 = Debug|Win32
+		{C6C016D2-81D8-3430-A886-89A8341C597E}.Release|Win32.ActiveCfg = Release|Win32
+		{C6C016D2-81D8-3430-A886-89A8341C597E}.Release|Win32.Build.0 = Release|Win32
+		{A8A8384E-4BCF-3EBA-9D3E-F05807C392D9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A8A8384E-4BCF-3EBA-9D3E-F05807C392D9}.Debug|Win32.Build.0 = Debug|Win32
+		{A8A8384E-4BCF-3EBA-9D3E-F05807C392D9}.Release|Win32.ActiveCfg = Release|Win32
+		{A8A8384E-4BCF-3EBA-9D3E-F05807C392D9}.Release|Win32.Build.0 = Release|Win32
+		{7AF43FFB-B706-3443-ADDF-9C87DCFC0C57}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7AF43FFB-B706-3443-ADDF-9C87DCFC0C57}.Debug|Win32.Build.0 = Debug|Win32
+		{7AF43FFB-B706-3443-ADDF-9C87DCFC0C57}.Release|Win32.ActiveCfg = Release|Win32
+		{7AF43FFB-B706-3443-ADDF-9C87DCFC0C57}.Release|Win32.Build.0 = Release|Win32
+		{2A149B3A-F723-323D-BAB2-F7E0E30A8F4F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{2A149B3A-F723-323D-BAB2-F7E0E30A8F4F}.Debug|Win32.Build.0 = Debug|Win32
+		{2A149B3A-F723-323D-BAB2-F7E0E30A8F4F}.Release|Win32.ActiveCfg = Release|Win32
+		{2A149B3A-F723-323D-BAB2-F7E0E30A8F4F}.Release|Win32.Build.0 = Release|Win32
+		{40AAEEE2-5064-3C05-8D55-AA7B160B0205}.Debug|Win32.ActiveCfg = Debug|Win32
+		{40AAEEE2-5064-3C05-8D55-AA7B160B0205}.Debug|Win32.Build.0 = Debug|Win32
+		{40AAEEE2-5064-3C05-8D55-AA7B160B0205}.Release|Win32.ActiveCfg = Release|Win32
+		{40AAEEE2-5064-3C05-8D55-AA7B160B0205}.Release|Win32.Build.0 = Release|Win32
+		{2B0DD292-1A49-3877-89E3-7F8E519129B4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{2B0DD292-1A49-3877-89E3-7F8E519129B4}.Debug|Win32.Build.0 = Debug|Win32
+		{2B0DD292-1A49-3877-89E3-7F8E519129B4}.Release|Win32.ActiveCfg = Release|Win32
+		{2B0DD292-1A49-3877-89E3-7F8E519129B4}.Release|Win32.Build.0 = Release|Win32
+		{43F93DE1-97C5-31A5-8DC1-5B291B295868}.Debug|Win32.ActiveCfg = Debug|Win32
+		{43F93DE1-97C5-31A5-8DC1-5B291B295868}.Debug|Win32.Build.0 = Debug|Win32
+		{43F93DE1-97C5-31A5-8DC1-5B291B295868}.Release|Win32.ActiveCfg = Release|Win32
+		{43F93DE1-97C5-31A5-8DC1-5B291B295868}.Release|Win32.Build.0 = Release|Win32
+		{46AC4EA0-1D3E-3A4A-B6BC-CA4E90E718FE}.Debug|Win32.ActiveCfg = Debug|Win32
+		{46AC4EA0-1D3E-3A4A-B6BC-CA4E90E718FE}.Debug|Win32.Build.0 = Debug|Win32
+		{46AC4EA0-1D3E-3A4A-B6BC-CA4E90E718FE}.Release|Win32.ActiveCfg = Release|Win32
+		{46AC4EA0-1D3E-3A4A-B6BC-CA4E90E718FE}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		QtVersion = qt-everywhere-opensource-src-4.8.3
+	EndGlobalSection
+EndGlobal
diff --git a/qt/ncpdq/ncpdq.pro b/qt/ncpdq/ncpdq.pro
new file mode 100644
index 0000000..7c9058e
--- /dev/null
+++ b/qt/ncpdq/ncpdq.pro
@@ -0,0 +1,27 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncpdq
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncpdq.c
+
diff --git a/qt/ncpdq/ncpdq.vcxproj b/qt/ncpdq/ncpdq.vcxproj
new file mode 100644
index 0000000..ecb41cd
--- /dev/null
+++ b/qt/ncpdq/ncpdq.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{36A602E5-7DCB-3989-BAE4-300813BA7A62}</ProjectGuid>
+    <RootNamespace>ncpdq</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncpdq</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncpdq</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncpdq</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncpdq</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncpdq.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncpdq.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncpdq.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncra/ncra.pro b/qt/ncra/ncra.pro
new file mode 100644
index 0000000..e234cac
--- /dev/null
+++ b/qt/ncra/ncra.pro
@@ -0,0 +1,27 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncra
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncra.c
+
diff --git a/qt/ncra/ncra.vcxproj b/qt/ncra/ncra.vcxproj
new file mode 100644
index 0000000..5ad02aa
--- /dev/null
+++ b/qt/ncra/ncra.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C6C016D2-81D8-3430-A886-89A8341C597E}</ProjectGuid>
+    <RootNamespace>ncra</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncra</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncra</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncra</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncra</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncra.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncra.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncra.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncrcat/ncrcat.pro b/qt/ncrcat/ncrcat.pro
new file mode 100644
index 0000000..4d3d9f5
--- /dev/null
+++ b/qt/ncrcat/ncrcat.pro
@@ -0,0 +1,26 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncrcat
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncra.c
\ No newline at end of file
diff --git a/qt/ncrcat/ncrcat.vcxproj b/qt/ncrcat/ncrcat.vcxproj
new file mode 100644
index 0000000..b5487d2
--- /dev/null
+++ b/qt/ncrcat/ncrcat.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2A149B3A-F723-323D-BAB2-F7E0E30A8F4F}</ProjectGuid>
+    <RootNamespace>ncrcat</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncrcat</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncrcat</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncrcat</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncrcat</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncrcat.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncrcat.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncra.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncrename/ncrename.pro b/qt/ncrename/ncrename.pro
new file mode 100644
index 0000000..ae626e7
--- /dev/null
+++ b/qt/ncrename/ncrename.pro
@@ -0,0 +1,26 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncrename
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+HEADERS   = 
+SOURCES   = ../../src/nco/ncrename.c
+
diff --git a/qt/ncrename/ncrename.vcxproj b/qt/ncrename/ncrename.vcxproj
new file mode 100644
index 0000000..bf897b8
--- /dev/null
+++ b/qt/ncrename/ncrename.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A8A8384E-4BCF-3EBA-9D3E-F05807C392D9}</ProjectGuid>
+    <RootNamespace>ncrename</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncrename</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncrename</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncrename</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncrename</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncrename.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncrename.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncrename.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/ncwa/ncwa.pro b/qt/ncwa/ncwa.pro
new file mode 100644
index 0000000..bf24432
--- /dev/null
+++ b/qt/ncwa/ncwa.pro
@@ -0,0 +1,67 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = ncwa
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+# NCO library
+CONFIG( debug, debug|release ) {
+    # debug
+        win32:LIBS += ../libnco/debug/libnco.lib
+        unix:LIBS  += ../libnco/debug/liblibnco.a
+} else {
+    # release
+        win32:LIBS += ../libnco/release/libnco.lib
+        unix:LIBS  += ../libnco/release/liblibnco.a
+}
+
+# common NCO settings
+include (../nco.pri)
+
+# SOURCES
+# HEADERS
+
+unix {
+HEADERS = ../../src/nco/ncap_yacc.h
+SOURCES   = ../../src/nco/ncwa.c \
+../../src/nco/ncap_utl.c 
+}
+win32 {
+SOURCES   = ../../src/nco/ncwa.c 
+}
+
+unix {
+FLEXSOURCES = ../../src/nco/ncap_lex.l
+BISONSOURCES = ../../src/nco/ncap_yacc.y	 
+
+flex.name = flex ${QMAKE_FILE_IN}
+flex.input = FLEXSOURCES
+flex.output = ../../src/nco/ncap_lex.c
+flex.commands = flex -Pnco_yy -o ../../src/nco/ncap_lex.c ${QMAKE_FILE_IN}
+flex.variable_out = SOURCES
+silent:flex.commands = @echo Lex ${QMAKE_FILE_IN} && $$flex.commands
+QMAKE_EXTRA_COMPILERS += flex
+
+bison.name = bison ${QMAKE_FILE_IN}
+bison.input = BISONSOURCES
+bison.commands = bison -d -p nco_yy -o ../../src/nco/ncap_yacc.c ${QMAKE_FILE_IN}
+bison.output = ../../src/nco/ncap_yacc.c
+bison.variable_out = SOURCES
+bison.CONFIG += target_predeps
+silent:bison.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands
+QMAKE_EXTRA_COMPILERS += bison
+
+bisonheader.commands = bison -d -p nco_yy -o ../../src/nco/ncap_yacc.c ${QMAKE_FILE_IN}
+bisonheader.input = BISONSOURCES
+bisonheader.output = ../../src/nco/ncap_yacc.c
+bisonheader.variable_out = HEADERS
+bisonheader.name = bisonheader ${QMAKE_FILE_IN}
+silent:bisonheader.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands
+QMAKE_EXTRA_COMPILERS += bisonheader
+}
+
+
+
+
diff --git a/qt/ncwa/ncwa.vcxproj b/qt/ncwa/ncwa.vcxproj
new file mode 100644
index 0000000..2e8d59a
--- /dev/null
+++ b/qt/ncwa/ncwa.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{7AF43FFB-B706-3443-ADDF-9C87DCFC0C57}</ProjectGuid>
+    <RootNamespace>ncwa</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>ncwa</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>ncwa</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncwa</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncwa</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\ncwa.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"$(HEADER_GSL)";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\ncwa.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;NEED_STRCASECMP;NEED_STRCASESTR;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco\ncwa.c" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/qt/tst_nco_c++/tst_nco_c++.pro b/qt/tst_nco_c++/tst_nco_c++.pro
new file mode 100644
index 0000000..dbc4762
--- /dev/null
+++ b/qt/tst_nco_c++/tst_nco_c++.pro
@@ -0,0 +1,55 @@
+# template type is application
+TEMPLATE = app
+# name
+TARGET = tst_nco_c++
+
+CONFIG -= qt
+CONFIG += debug_and_release
+
+#nco++ library
+CONFIG( debug, debug|release ) {
+	# debug
+	win32:LIBS += ../libnco_c++/debug/libnco_c++.lib
+	unix:LIBS  += ../libnco_c++/debug/liblibnco_c++.a
+} else {
+	# release
+	win32:LIBS += ../libnco_c++/release/libnco_c++.lib
+	unix:LIBS  += ../libnco_c++/release/liblibnco_c++.a
+}
+
+INCLUDEPATH += ../../src/nco_c++
+HEADERS   = 
+SOURCES   = ../../src/nco_c++/tst.cc
+
+#netCDF library
+unix {
+ INCLUDEPATH += /usr/local/include
+ INCLUDEPATH += /usr/local
+ LIBS += -L/usr/lib/ -lnetcdf -lhdf5_hl -lhdf5
+ LIBS += -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i386-linux-gnu/ -lz -ludunits2 -lexpat 
+ #RHEL
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/include
+ INCLUDEPATH += /SNS/users/pvicente/libs/install/udunits-2.1.24/include
+ LIBS += -L/SNS/users/pvicente/libs/install/netcdf-4.3.1-rc2/lib
+ LIBS += -L/SNS/users/pvicente/libs/install/udunits-2.1.24/lib
+}
+win32 {
+ INCLUDEPATH += $(HEADER_NETCDF)
+ LIBS += $(LIB_NETCDF)
+ LIBS += $(LIB_DISPATCH)
+ LIBS += $(LIB_NETCDF4)
+ LIBS += $(LIB_HDF5)
+ LIBS += $(LIB_HDF5_HL)
+ LIBS += $(LIB_ZLIB)
+ LIBS += $(LIB_SZIP)
+ LIBS += $(LIB_CURL)
+ DEFINES += _CRT_SECURE_NO_WARNINGS
+ DEFINES += _CRT_NONSTDC_NO_DEPRECATE
+ CONFIG  += console
+ 
+ # netCDF assumed in Windows build
+ DEFINES += ENABLE_NETCDF4
+ DEFINES += HAVE_NETCDF4_H
+ DEFINES += NEED_STRCASECMP
+ DEFINES += NEED_STRCASESTR
+}
diff --git a/qt/tst_nco_c++/tst_nco_c++.vcxproj b/qt/tst_nco_c++/tst_nco_c++.vcxproj
new file mode 100644
index 0000000..e09b6a5
--- /dev/null
+++ b/qt/tst_nco_c++/tst_nco_c++.vcxproj
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{43F93DE1-97C5-31A5-8DC1-5B291B295868}</ProjectGuid>
+    <RootNamespace>tst_nco_c++</RootNamespace>
+    <Keyword>Qt4VSv1.0</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <OutputDirectory>debug\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>debug\</IntermediateDirectory>
+    <PrimaryOutput>tst_nco_c++</PrimaryOutput>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <OutputDirectory>release\</OutputDirectory>
+    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
+    <CharacterSet>NotSet</CharacterSet>
+    <ConfigurationType>Application</ConfigurationType>
+    <IntermediateDirectory>release\</IntermediateDirectory>
+    <PrimaryOutput>tst_nco_c++</PrimaryOutput>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings" />
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">tst_nco_c++</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)</IntDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">tst_nco_c++</TargetName>
+    <TargetExt Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.exe</TargetExt>
+    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"..\..\src\nco_c++";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>debug\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco_c++/debug/libnco_c++.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <OutputFile>$(OutDir)\tst_nco_c++.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>"..\..\src\nco_c++";"$(HEADER_NETCDF)";$(QTDIR)\mkspecs\default;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalOptions>-Zm200 -w34100 -w34189 %(AdditionalOptions)</AdditionalOptions>
+      <AssemblerListingLocation>release\</AssemblerListingLocation>
+      <BrowseInformation>false</BrowseInformation>
+      <BufferSecurityCheck>false</BufferSecurityCheck>
+      <CompileAs>CompileAsCpp</CompileAs>
+      <ExceptionHandling>Sync</ExceptionHandling>
+      <ObjectFileName>$(IntDir)</ObjectFileName>
+      <Optimization>MaxSpeed</Optimization>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessToFile>false</PreprocessToFile>
+      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+      <TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
+      <WarningLevel>Level3</WarningLevel>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>../libnco_c++/release/libnco_c++.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
+      <DataExecutionPrevention>true</DataExecutionPrevention>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <IgnoreImportLibrary>true</IgnoreImportLibrary>
+      <LinkIncremental>false</LinkIncremental>
+      <OutputFile>$(OutDir)\tst_nco_c++.exe</OutputFile>
+      <RandomizedBaseAddress>true</RandomizedBaseAddress>
+      <SubSystem>Console</SubSystem>
+      <SuppressStartupBanner>true</SuppressStartupBanner>
+    </Link>
+    <Midl>
+      <DefaultCharType>Unsigned</DefaultCharType>
+      <EnableErrorChecks>None</EnableErrorChecks>
+      <WarningLevel>0</WarningLevel>
+    </Midl>
+    <ResourceCompile>
+      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;QT_LARGEFILE_SUPPORT;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ResourceCompile>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\nco_c++\tst.cc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets" />
+  <ProjectExtensions>
+    <VisualStudio>
+      <UserProperties QtVersion_x0020_Win32="qt-everywhere-opensource-src-4.8.3" UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" />
+    </VisualStudio>
+  </ProjectExtensions>
+</Project>
\ No newline at end of file
diff --git a/src/Makefile.in b/src/Makefile.in
index 8841d0d..0500dd2 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,8 +14,53 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/src/Makefile.in,v 1.74 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/Makefile.in,v 1.105 2013/11/06 18:12:24 zender Exp $ -*-makefile-*-
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -37,30 +81,71 @@ build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-	html-recursive info-recursive install-data-recursive \
-	install-dvi-recursive install-exec-recursive \
-	install-html-recursive install-info-recursive \
-	install-pdf-recursive install-ps-recursive install-recursive \
-	installcheck-recursive installdirs-recursive pdf-recursive \
-	ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
 	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -92,6 +177,7 @@ am__relativize = \
   reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -111,6 +197,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -152,6 +239,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -198,6 +286,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -272,22 +361,25 @@ clean-libtool:
 	-rm -rf .libs _libs
 
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
 	dot_seen=no; \
 	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
 	  echo "Making $$target in $$subdir"; \
 	  if test "$$subdir" = "."; then \
 	    dot_seen=yes; \
@@ -302,57 +394,12 @@ $(RECURSIVE_TARGETS):
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-$(RECURSIVE_CLEAN_TARGETS):
-	@fail= failcom='exit 1'; \
-	for f in x $$MAKEFLAGS; do \
-	  case $$f in \
-	    *=* | --[!k]*);; \
-	    *k*) failcom='fail=yes';; \
-	  esac; \
-	done; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -368,12 +415,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -385,15 +427,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -402,6 +440,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -438,13 +491,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -479,10 +529,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -560,22 +615,20 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
-	install-am install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-	all all-am check check-am clean clean-generic clean-libtool \
-	ctags ctags-recursive distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool cscopelist-am ctags \
+	ctags-am distclean distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/src/cuda/simpleTemplates.cu b/src/cuda/simpleTemplates.cu
new file mode 100644
index 0000000..c8da9bb
--- /dev/null
+++ b/src/cuda/simpleTemplates.cu
@@ -0,0 +1,80 @@
+/*
+* Copyright 1993-2006 NVIDIA Corporation.  All rights reserved.
+*
+* NOTICE TO USER:
+*
+* This source code is subject to NVIDIA ownership rights under U.S. and
+* international Copyright laws.
+*
+* NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
+* CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
+* IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
+* REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
+* MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
+* IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
+* 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 USE
+* OR PERFORMANCE OF THIS SOURCE CODE.
+*
+* U.S. Government End Users.  This source code is a "commercial item" as
+* that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting  of
+* "commercial computer software" and "commercial computer software
+* documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995)
+* and is provided to the U.S. Government only as a commercial end item.
+* Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
+* 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
+* source code with only those rights set forth herein.
+*/
+
+/* This sample is a templatized version of the template project.
+* It also shows how to correctly templatize dynamically allocated shared
+* memory arrays.
+* Host code.
+*/
+
+// includes, system
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <cuda.h>
+
+// includes, kernels
+#include "simpleTemplates_kernel.cu"
+#define BLOCKSIZE 256
+template<class T> T*
+nco_cuda_var_add /* [fnc] Add first operand to second operand */
+( /* I [enm] netCDF type of operands */
+ const long size, /* I [nbr] Size (in elements) of operands */
+ const int has_mss_val, /* I [flg] Flag for missing values */
+ T mss_val, /* I [flg] Value of missing value */
+ T* op1, /* I [val] Values of first operand */
+ T* op2) /* I/O [val] Values of second operand on input, values of sum on output */
+{
+  /* Purpose: Add value of first operand to value of second operand
+     and store result in second operand. 
+     Assume operands conform, are same type, and are in memory
+     nco_var_add() does _not_ increment tally counter
+     nco_var_add_tll_ncra() does increment tally counter */
+  
+  /* Addition is currently defined as op2:=op1+op2 */
+ 
+
+  T* op_in_D, *op_out_D;GA
+  cudaMalloc((void**)&op_in_D, sizeof(T)*size);
+  cudaMalloc((void**)&op_out_D,sizeof(T)*size);
+  
+  cudaMemcpy(op_in_D, op1, sizeof(T)*size,cudaMemcpyHostToDevice);
+  cudaMemcpy(op_out_D, op2, sizeof(T)*size,cudaMemcpyHostToDevice);
+
+  uint gridsize=size%BLOCKSIZE ==0?size/BLOCKSIZE :size/BLOCKSIZE +1;
+	uint blocksize=BLOCKSIZE;
+	dim3 dimBlock(blocksize);
+	dim3 dimGrid(gridsize);
+
+  testKernel<T><<<gridsize,blocksize>>>(op_in_D, op_out_D, size, mss_val, has_mss_val);
+  cudaMemcpy(op2, op_out_D, sizeof(T)*size,cudaMemcpyDeviceToHost);
+
+  return op2;
+    
+} /* end nco_var_add() */
diff --git a/src/cuda/simpleTemplates_kernel.cu b/src/cuda/simpleTemplates_kernel.cu
new file mode 100644
index 0000000..c6d9042
--- /dev/null
+++ b/src/cuda/simpleTemplates_kernel.cu
@@ -0,0 +1,32 @@
+
+#ifndef _TEMPLATE_KERNEL_H_
+#define _TEMPLATE_KERNEL_H_
+
+#include <stdio.h>
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//! Simple test kernel for device functionality
+//! @param g_idata  input data in global memory
+//! @param g_odata  output data in global memory
+////////////////////////////////////////////////////////////////////////////////
+template<class T> __global__ void testKernel( T* g_idata, T* g_odata,long size,T mss_val,int has_mss_val) 
+{
+  // access thread id
+  const unsigned int tid = threadIdx.x+ blockDim.x*blockIdx.x;
+	if(tid<size )
+		{
+		if(has_mss_val)
+			{
+			if( g_idata[tid]==mss_val || g_odata[tid]==mss_val)
+				g_odata[tid]=mss_val;
+			else 
+				g_odata[tid]=g_idata[tid]+g_odata[tid];
+			}
+		else
+			g_odata[tid] = g_idata[tid]+g_odata[tid];
+		}
+}
+
+#endif // #ifndef _TEMPLATE_KERNEL_H_
diff --git a/src/nco++/Invoke.cc b/src/nco++/Invoke.cc
index 393e5c3..99cd5a3 100644
--- a/src/nco++/Invoke.cc
+++ b/src/nco++/Invoke.cc
@@ -1,15 +1,11 @@
-/*
- * Different version of the calculator which parses the command line arguments.
- * To do this the argv[] strings are first written to a ostringstream then
- * a istringstream is constructed with the string from the ostringstream and
- * fed to the lexer.
- */
-
-
-// this defines an anonymous enum containing parser tokens
+/* Different version of calculator which parses command line arguments.
+   To do this argv[] strings are first written to an ostringstream then
+   an istringstream is constructed with string from the ostringstream and
+   fed to lexer. */
 
+// Define an anonymous enum containing parser tokens
+#include <stdlib.h>
 #include <stdio.h>
-#include <malloc.h>
 #include <fstream>
 #include <sstream>
 #include <antlr/AST.hpp>
@@ -25,23 +21,17 @@
 
 #include "sdo_utl.hh" // SDO stand-alone utilities: dbg/err/wrn_prn()
 
-
 TokenStreamSelector selector;
 ncoLexer *lexer=NULL;
 ncoParser *parser=NULL;
 
-
-
-
-//forward declaration
-
-int           /* Evaluate expressions -execute nb - contains static members*/
+// Forward declaration
+int /* Evaluate expressions -execute nb - contains static members*/
 ncap_omp_exe(
 std::vector< std::vector<RefAST> > &all_ast_vtr,
 ncoTree** wlk_ptr_in,
-int nbr_wlk_in)
+int wlk_nbr_in)
 {
-
 int idx;
 int jdx;
 int kdx;
@@ -51,33 +41,28 @@ int nbr_sz;
 var_sct *var;
 RefAST tr;
 
-static int nbr_wlk; //same as number of threads
-static ncoTree** wlk_ptr;
+ static int wlk_nbr; // Same as number of threads
+ static ncoTree** wlk_ptr;
 
  ncoTree* wlk_lcl;
 
  std::vector<RefAST> inn_vtr;
 
 // Initialize statics then exit
- if( nbr_wlk_in > 0) {
-   nbr_wlk=nbr_wlk_in;
+ if( wlk_nbr_in > 0) {
+   wlk_nbr=wlk_nbr_in;
    wlk_ptr=wlk_ptr_in;
    return 2;
  }
 
- //Set all symbol table refs to ntl_scn=false;
- for(idx=0 ; idx< nbr_wlk ; idx++)
-   wlk_ptr[idx]->prs_arg->ntl_scn=False;
+ // Set all symbol table refs to ntl_scn=false;
+ for(idx=0;idx<wlk_nbr;idx++) wlk_ptr[idx]->prs_arg->ntl_scn=False;
   
-
-
  // Each block has two lists
  // The first list is of the expressions that contain Lvalues which 
  // are NOT defined in Output (nb this also applies to RAM vars)
  // The second list if of expressions that have all Lvalues defined in
  // output.
-
-
         
  for(idx=0 ; idx<(int)all_ast_vtr.size();idx+=2){
 
@@ -93,12 +78,9 @@ static ncoTree** wlk_ptr;
      continue; 
    } 
 
-  
-   // do an nc_sync for all output threads
+   // do nc_sync() for all output threads
    (void)nco_sync(wlk_ptr[0]->prs_arg->out_id);      
-   for(mdx=0; mdx<nbr_wlk; mdx++)
-     (void)nco_sync(wlk_ptr[mdx]->prs_arg->out_id_readonly); 
-
+   for(mdx=0; mdx<wlk_nbr; mdx++) (void)nco_sync(wlk_ptr[mdx]->prs_arg->out_id_readonly); 
    
    inn_vtr=all_ast_vtr[idx+1];
    /*
@@ -118,7 +100,7 @@ static ncoTree** wlk_ptr;
    } //end OPENMP parallel loop
 
    // Copy all atts defined in thread in to var_vtr
-   for(kdx=0; kdx<nbr_wlk; kdx++){
+   for(kdx=0; kdx<wlk_nbr; kdx++){
      //dereference
      NcapVarVector &lcl_vtr=wlk_ptr[kdx]->prs_arg->thr_vtr;
      if(lcl_vtr.empty())
@@ -131,20 +113,15 @@ static ncoTree** wlk_ptr;
 
    // do an nc_sync for all output threads
    (void)nco_sync(wlk_ptr[0]->prs_arg->out_id);      
-   for(mdx=0; mdx<nbr_wlk; mdx++)
-     (void)nco_sync(wlk_ptr[mdx]->prs_arg->out_id_readonly); 
-
+   for(mdx=0; mdx<wlk_nbr; mdx++) (void)nco_sync(wlk_ptr[mdx]->prs_arg->out_id_readonly); 
 
  } // end for idx
 
-
-
  return 1;
-}
+} /* end ncap_omp_exe() */
 
 int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
 {
-  
   ANTLR_USING_NAMESPACE(std);
   ANTLR_USING_NAMESPACE(antlr);
   
@@ -174,9 +151,7 @@ int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
   
   std::vector< std::vector<RefAST> > all_ast_vtr(0);
 
-
   try {
-    
     if( cmd_ln_sng ){
       sin= new  istringstream(cmd_ln_sng);
       lexer= new ncoLexer( *sin, prs_arg);
@@ -189,8 +164,7 @@ int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
       selector.select(filename);
 
     }     
-    
-    
+
     lexer->setFilename(filename);
     
     parser= new ncoParser(selector);
@@ -208,7 +182,7 @@ int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
     t=a;
 
     // Print parser tree
-    if(dbg_lvl_get() > 0){
+    if(nco_dbg_lvl_get() >= nco_dbg_scl){
       dbg_prn(fnc_nm,"Printing parser tree...");
       while( t ) {
 	cout << t->toStringTree() << endl;
@@ -216,7 +190,6 @@ int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
       }
       dbg_prn(fnc_nm,"Parser tree printed");
     } // endif dbg
-    
   }  
   
   catch (RecognitionException& pe) {
@@ -250,24 +223,17 @@ int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
 
     // initialize static members 
     (void)ncap_omp_exe(all_ast_vtr,&wlk_vtr[0],thd_nbr);
-    if(dbg_lvl_get() > 0) dbg_prn(fnc_nm,"Walkers initialized");
+    if(nco_dbg_lvl_get() >= nco_dbg_fl) dbg_prn(fnc_nm,"Walkers initialized");
   
     wlk_vtr[0]->run_exe(t,0);
-
-
-    
   }  catch(std::exception& e) {
     cerr << "exception: " << e.what() << endl;
   }	
   
-  if(dbg_lvl_get() > 0) dbg_prn(fnc_nm,"Walkers completed");
-  
-   
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) dbg_prn(fnc_nm,"Walkers completed");
   
   // delete walker pointers
-  for(idx=0 ; idx<(int)wlk_vtr.size() ; idx++)
-    delete wlk_vtr[idx];
-
+  for(idx=0 ; idx<(int)wlk_vtr.size() ; idx++) delete wlk_vtr[idx];
 
   delete lexer;
   delete parser;        
@@ -277,7 +243,4 @@ int parse_antlr(std::vector<prs_cls> &prs_vtr,char *fl_spt_usr,char *cmd_ln_sng)
   //(void)nco_free(filename);
   
   return 1;
-}
-
-
-
+} /* end parse_antlr() */
diff --git a/src/nco++/Makefile.am b/src/nco++/Makefile.am
index e22f6d3..3df55f7 100644
--- a/src/nco++/Makefile.am
+++ b/src/nco++/Makefile.am
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/nco/nco/src/nco++/Makefile.am,v 1.25 2009/03/19 00:37:19 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco++/Makefile.am,v 1.27 2013/07/25 04:51:36 zender Exp $ -*-makefile-*-
 
 # Purpose: Template builds for nco++ directory
 # Process this file with automake to produce Makefile.in
@@ -17,7 +17,21 @@ ANTLR = runantlr
 #	${ANTLR} ncoGrammer.g
 
 # fxm: Split off all sources except front-end into nco++ library
-ncap2_SOURCES = Invoke.cc ncap2.cc ncap2_utl.cc sdo_utl.cc sym_cls.cc fmc_cls.cc fmc_all_cls.cc fmc_gsl_cls.cc prs_cls.cc NcapVar.cc NcapVarVector.cc ncoLexer.cpp ncoParser.cpp ncoTree.cpp
+ncap2_SOURCES = Invoke.cc \
+ncap2.cc \
+ncap2_utl.cc \
+sdo_utl.cc \
+sym_cls.cc \
+fmc_cls.cc \
+fmc_all_cls.cc \
+fmc_gsl_cls.cc \
+prs_cls.cc \
+NcapVar.cc \
+NcapVarVector.cc \
+ncoLexer.cpp \
+ncoParser.cpp \
+ncoTree.cpp \
+nco_gsl.c
 
 ncap2_LDADD = -lnco -lantlr
 # fxm: 20080515 Takeshi Enomoto reports that MACOSX needs
@@ -27,10 +41,10 @@ if ENABLE_GSL
 GSL_LIB_ARG = $(shell gsl-config --libs)
 GSL_INC_ARG = $(shell gsl-config --cflags)
 ncap2_LDFLAGS = -L../nco ${GSL_LIB_ARG}
-INCLUDES = -I./ -I../nco ${GSL_INC_ARG}
+AM_CPPFLAGS = -I./ -I../nco ${GSL_INC_ARG}
 else
 ncap2_LDFLAGS = -L../nco
-INCLUDES = -I./ -I../nco
+AM_CPPFLAGS = -I./ -I../nco
 endif
 
 # 20060824: *.hpp and *.cpp files are now part of source tree
diff --git a/src/nco++/Makefile.in b/src/nco++/Makefile.in
index 2865c9b..fa7fd48 100644
--- a/src/nco++/Makefile.in
+++ b/src/nco++/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,12 +14,57 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/src/nco++/Makefile.in,v 1.62 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco++/Makefile.in,v 1.93 2013/11/06 18:12:24 zender Exp $ -*-makefile-*-
 
 # Purpose: Template builds for nco++ directory
 # Process this file with automake to produce Makefile.in
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -42,10 +86,14 @@ host_triplet = @host@
 target_triplet = @target@
 bin_PROGRAMS = ncap2$(EXEEXT)
 subdir = src/nco++
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs \
+	$(top_srcdir)/autobld/depcomp
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
@@ -58,32 +106,99 @@ am_ncap2_OBJECTS = Invoke.$(OBJEXT) ncap2.$(OBJEXT) \
 	ncap2_utl.$(OBJEXT) sdo_utl.$(OBJEXT) sym_cls.$(OBJEXT) \
 	fmc_cls.$(OBJEXT) fmc_all_cls.$(OBJEXT) fmc_gsl_cls.$(OBJEXT) \
 	prs_cls.$(OBJEXT) NcapVar.$(OBJEXT) NcapVarVector.$(OBJEXT) \
-	ncoLexer.$(OBJEXT) ncoParser.$(OBJEXT) ncoTree.$(OBJEXT)
+	ncoLexer.$(OBJEXT) ncoParser.$(OBJEXT) ncoTree.$(OBJEXT) \
+	nco_gsl.$(OBJEXT)
 ncap2_OBJECTS = $(am_ncap2_OBJECTS)
 ncap2_DEPENDENCIES =
-ncap2_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
-	$(ncap2_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+ncap2_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(ncap2_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/autobld/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(ncap2_SOURCES)
 DIST_SOURCES = $(ncap2_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -103,6 +218,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -144,6 +260,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -190,6 +307,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -233,7 +351,22 @@ ANTLR = runantlr
 #	${ANTLR} ncoGrammer.g
 
 # fxm: Split off all sources except front-end into nco++ library
-ncap2_SOURCES = Invoke.cc ncap2.cc ncap2_utl.cc sdo_utl.cc sym_cls.cc fmc_cls.cc fmc_all_cls.cc fmc_gsl_cls.cc prs_cls.cc NcapVar.cc NcapVarVector.cc ncoLexer.cpp ncoParser.cpp ncoTree.cpp
+ncap2_SOURCES = Invoke.cc \
+ncap2.cc \
+ncap2_utl.cc \
+sdo_utl.cc \
+sym_cls.cc \
+fmc_cls.cc \
+fmc_all_cls.cc \
+fmc_gsl_cls.cc \
+prs_cls.cc \
+NcapVar.cc \
+NcapVarVector.cc \
+ncoLexer.cpp \
+ncoParser.cpp \
+ncoTree.cpp \
+nco_gsl.c
+
 ncap2_LDADD = -lnco -lantlr
 # fxm: 20080515 Takeshi Enomoto reports that MACOSX needs
 # ncap2_LDADD = ../nco/.libs/libnco.dylib -lantlr
@@ -241,8 +374,8 @@ ncap2_LDADD = -lnco -lantlr
 @ENABLE_GSL_TRUE at GSL_INC_ARG = $(shell gsl-config --cflags)
 @ENABLE_GSL_FALSE at ncap2_LDFLAGS = -L../nco
 @ENABLE_GSL_TRUE at ncap2_LDFLAGS = -L../nco ${GSL_LIB_ARG}
- at ENABLE_GSL_FALSE@INCLUDES = -I./ -I../nco
- at ENABLE_GSL_TRUE@INCLUDES = -I./ -I../nco ${GSL_INC_ARG}
+ at ENABLE_GSL_FALSE@AM_CPPFLAGS = -I./ -I../nco
+ at ENABLE_GSL_TRUE@AM_CPPFLAGS = -I./ -I../nco ${GSL_INC_ARG}
 
 # 20060824: *.hpp and *.cpp files are now part of source tree
 # DISTCLEANFILES=ncoLexer.hpp ncoParser.hpp ncoParserTokenTypes.hpp ncoParserTokenTypes.txt ncoTree.hpp
@@ -252,7 +385,7 @@ CLEANFILES = ncap2 ncoParserTokenTypes.txt
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cc .cpp .lo .o .obj
+.SUFFIXES: .c .cc .cpp .lo .o .obj
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -285,14 +418,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -313,7 +451,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -326,9 +465,10 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-ncap2$(EXEEXT): $(ncap2_OBJECTS) $(ncap2_DEPENDENCIES) 
+
+ncap2$(EXEEXT): $(ncap2_OBJECTS) $(ncap2_DEPENDENCIES) $(EXTRA_ncap2_DEPENDENCIES) 
 	@rm -f ncap2$(EXEEXT)
-	$(ncap2_LINK) $(ncap2_OBJECTS) $(ncap2_LDADD) $(LIBS)
+	$(AM_V_CXXLD)$(ncap2_LINK) $(ncap2_OBJECTS) $(ncap2_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -347,51 +487,73 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncoLexer.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncoParser.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncoTree.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_gsl.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/prs_cls.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sdo_utl.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sym_cls.Po at am__quote@
 
+.c.o:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
 .cc.o:
- at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 .cpp.o:
- at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cpp.obj:
- at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cpp.lo:
- at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -399,26 +561,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -430,15 +581,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -447,6 +594,21 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -498,10 +660,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -587,19 +754,19 @@ uninstall-am: uninstall-binPROGRAMS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags uninstall uninstall-am \
-	uninstall-binPROGRAMS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+	clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
+	ctags ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
 
 
 # Configure automatigically includes following libraries as requested:
diff --git a/src/nco++/Makefile.old b/src/nco++/Makefile.old
index bca8a5f..04f1ad5 100644
--- a/src/nco++/Makefile.old
+++ b/src/nco++/Makefile.old
@@ -1,9 +1,9 @@
-# $Header: /cvsroot/nco/nco/src/nco++/Makefile.old,v 1.117 2012/01/01 20:51:54 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco++/Makefile.old,v 1.123 2013/06/08 21:34:11 zender Exp $ -*-makefile-*-
 
 # Purpose: Makefile for NCO C++ directory nco++
 # Requires GNU Make---AT&T Make chokes on GNU syntax
 
-# Copyright (C) 1994--2012 Charlie Zender
+# Copyright (C) 1994--2013 Charlie Zender
 # License: GNU General Public License (GPL) Version 3
 # See http://www.gnu.org/copyleft/gpl.html for full license text
 
@@ -30,7 +30,7 @@
 # 64-bit ABI netCDF3 on NCAR AIX systems (bluefire):
 # cd ${HOME}/nco/src/nco++;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' NETCDF_LIB='/usr/local/lib64/r4i4' UDUNITS_INC='/contrib/udunits-1.12.9/include' UDUNITS_LIB='/contrib/udunits-1.12.9/lib' make -f Makefile.old --jobs=1 ABI=64 OPTS=D NETCDF4=N UDUNITS2=N all;cd -
 # 64-bit ABI netCDF4 on NCAR AIX systems (bluefire):
-# cd ${HOME}/nco/src/nco++;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' CURL_LIB='/contrib/curl/7.21.2/lib' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' GSL_MINOR_VERSION='12' HDF5_ROOT='/contrib/hdf5-1.8.6_seq' LDFLAGS='-lnetcdf -lhdf5_hl -lhdf5 -lz' NETCDF_ROOT='/contrib/netcdf-4.1.2_seq' SZ_LIB='/contrib/szip/lib' UDUNITS_LIB='/contrib/zlib/lib' make -f Makefile.old --jobs=1 ABI=64 OPTS=D SZ=Y all;cd -
+# cd ${HOME}/nco/src/nco++;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' CURL_LIB='/contrib/curl/7.21.2/lib' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' GSL_MINOR_VERSION='12' HDF5_ROOT='/contrib/hdf5-1.8.7_seq' LDFLAGS='-lnetcdf -lhdf5_hl -lhdf5 -lz' NETCDF_ROOT='/contrib/netcdf/4.1.3_seq' SZ_LIB='/contrib/szip/lib' UDUNITS_LIB='/contrib/zlib/lib' make -f Makefile.old --jobs=1 ABI=64 OPTS=D SZ=Y all;cd -
 # 
 # Cygwin on Windows Vista systems:
 # cd ~/nco/src/nco++;ANTLR='antlr' make -f Makefile.old GSL=Y OPTS=D NETCDF4=Y UDUNITS2=Y all;cd -
@@ -95,7 +95,12 @@ ifndef ${ABI}
  ABI := 64
 endif # endif ABI
 ifndef ANTLR
- ANTLR := runantlr
+ ANTLR_WHICH := $(notdir $(shell which antlr))
+ ifeq (${ANTLR_WHICH},antlr)
+  ANTLR := antlr
+ else
+  ANTLR := runantlr
+ endif 
 endif # endif ANTLR
 ifndef ANTLR_ROOT
  ANTLR_ROOT := /usr/local
@@ -422,7 +427,17 @@ ifneq (${UDUNITS_LIB},${NETCDF_LIB})
  NC_LDFLAGS += -L${UDUNITS_LIB}
 endif # end if
 ifeq (${UDUNITS2},Y)
+# 20130607: -lexpat needed on .deb systems, not on RPM systems
+UDUNITS_RPM_DRC := /usr/include/udunits2
+UDUNITS_RPM_TST := $(shell ls ${UDUNITS_RPM_DRC}/udunits2.h)
+ifeq (${UDUNITS_RPM_TST},${UDUNITS_RPM_DRC}/udunits2.h)
+ NETCDF_INC += -I${UDUNITS_RPM_DRC}
+endif # end if
+ifneq (${UDUNITS_RPM_TST},${UDUNITS_RPM_DRC}/udunits2.h)
  NC_LIBS += -ludunits2 -lexpat
+else # end if UDUNITS2 Fedora
+ NC_LIBS += -ludunits2
+endif # end if UDUNITS2 Fedora
 else
  NC_LIBS += -ludunits
 endif # end if UDUNITS2
@@ -1405,7 +1420,8 @@ $(libnco++).a : inc $(libnco++).a(${MY_OBJ_DIR}/sym_cls.o) \
 	$(libnco++).a(${MY_OBJ_DIR}/ncoParser.o) \
 	$(libnco++).a(${MY_OBJ_DIR}/ncoTree.o) \
 	$(libnco++).a(${MY_OBJ_DIR}/prs_cls.o) \
-	$(libnco++).a(${MY_OBJ_DIR}/sdo_utl.o)
+	$(libnco++).a(${MY_OBJ_DIR}/sdo_utl.o) \
+        $(libnco++).a(${MY_OBJ_DIR}/nco_gsl.o)
 # NB: Do not place comments in the middle of a rule, or have \ at the end
 lib_cln :
 	rm -f $(libnco++).a $(libnco++).la $(libnco++).so*
diff --git a/src/nco++/NcapVarVector.cc b/src/nco++/NcapVarVector.cc
index 011c768..4b0963b 100644
--- a/src/nco++/NcapVarVector.cc
+++ b/src/nco++/NcapVarVector.cc
@@ -40,13 +40,10 @@ long NcapVarVector::findi(std::string s_fnm){
    
 
     // Item already in vector
-    if( we !=end() && (*we)->getFll()==s_fnm ){
-      lret=0;
-      while( we-- != begin())  ++lret;  
-      
-    }else
-     lret=-1;
-      
+    if( we !=end() && (*we)->getFll()==s_fnm )
+      lret=we-begin(); 
+    else
+      lret=-1;
     
     // nb var_in also freed here  
     delete Ntmp;     
@@ -69,16 +66,13 @@ long NcapVarVector::find_lwr(std::string s_fnm){
     Ntmp=new NcapVar( (var_sct*)NULL ,s_fnm);
     
     we=std::lower_bound(begin(),end(),Ntmp,less_mag());
-   
      
     // Return a partial match
     lret=-1; 
     if( we!=end()){
       s_fl=(*we)->getFll();
-      if(s_fl.find(s_fnm,0) !=std::string::npos){ 
-       lret=0;
-       while( we-- != begin())  ++lret;  
-      }
+      if(s_fl.find(s_fnm,0) !=std::string::npos)
+	lret=we-begin();
     }
     
     // nb var_in also freed here  
@@ -120,8 +114,6 @@ void NcapVarVector::push(NcapVar *Nvar){
 }
 
 
-
-
 // Delete an item
 void NcapVarVector::erase(std::string s_fnm){
   long idx;
diff --git a/src/nco++/NcapVector.hh b/src/nco++/NcapVector.hh
index a8ca59b..6501c61 100644
--- a/src/nco++/NcapVector.hh
+++ b/src/nco++/NcapVector.hh
@@ -1,7 +1,7 @@
 #ifndef INC_NcapVector_hh_
 #define INC_NcapVector_hh_
 
-#include <malloc.h>
+#include <stdlib.h>
 #include <string.h>
 #include <functional>
 #include <string>
@@ -14,28 +14,21 @@ class NcapVector : public std::vector<T> {
 
 public:
 
-  /*
-  void push(const T &x) {
-    this->push_back(x);
+  // stop compiler warnings
+  int size(){
+    // Call base class version 
+    return (int)(std::vector<T>::size());
   }
-  
-  
 
-  T pop() {
-    T tret(0);
-    if(this->size() > 0 ) {
-      tret=this->back();
-      this->pop_back();
-      return tret;
-    }else{
-      return NULL;
-    }
-  }
+  struct less_mag : public std::binary_function< T, T, bool> 
+   {
+       bool operator()( T t1, T t2) { 
+         return ( strcmp(t1->nm,t2->nm)<0) ; 
+         }
+  };
 
-  */
-  
 
-  T find (const char *nm) {
+  T find(const char *nm) {
     int idx;
     int sz=this->size();
     for(idx=0 ; idx < sz; idx++)
@@ -50,10 +43,10 @@ public:
     return find(snm.c_str());
   }
 
-  int findi(std::string snm){
+
+  int findi(const char *nm){
     int idx;
     int sz=this->size();
-    const char *nm=snm.c_str();
 
     for(idx=0 ; idx < sz; idx++)
       if(!strcmp(nm, (*this)[idx]->nm)) break;
@@ -64,21 +57,47 @@ public:
 
   }
 
-  // stop compiler warnings
-  int size(){
-    // Call base class version 
-    return (int)(std::vector<T>::size());
+
+  int findi(std::string snm){
+    int idx;
+    int sz=this->size();
+    const char *nm=snm.c_str();
+
+    for(idx=0 ; idx < sz; idx++)
+      if(!strcmp(nm, (*this)[idx]->nm)) break;
+    if(idx < sz) 
+	return idx; 
+    else
+	 return -1;
+
   }
 
+  
+  // returns index -- nb vector must be sorted 
+  int findis( const char *nm){
+  int idx;
+  T t2;
  
-  struct less_mag : public std::binary_function< T, T, bool> 
-   {
-       bool operator()( T t1, T t2) { 
-         return ( strcmp(t1->nm,t2->nm)<0) ; 
-         }
-  };
+  t2=(T)malloc(sizeof(*t2));
+  t2->nm=strdup(nm);
+
+  idx=lower_bound( this->begin(), this->end(), t2, less_mag() )-this->begin();
 
+  if(idx ==size() || strcmp(t2->nm, (*this)[idx]->nm))
+    idx=-1;
   
+  free(t2->nm);
+  free(t2);
+
+  return idx;      
+
+  }
+
+
+
+  int findis(std::string snm){
+    return findis(snm.c_str());
+  }
 
 
     
@@ -87,6 +106,8 @@ public:
     if( strcmp(t1->nm,t2->nm)<0 )  return true;
     return false;
   }
+
+
   
      
  
@@ -96,33 +117,12 @@ public:
 
   // search -- only on a sorted vector
   bool bsearch(T t1){
+     bool bret;
+      
+     bret= std::binary_search( this->begin(),this->end(),t1,less_mag());
 
-     
-      bool bret;
-      /*
-      char *cpr;
-      size_t snbr; 
-       T t2;
-    */
-       //snbr=sizeof(T);
-       //std::cout<<"\n\nIndrection sizeof="<<snbr<<std::endl;
-       
-       //t2= (T)malloc(sizeof(*T));
-       //t2->nm=t1->nm;
-      // t2=t1;
-
- 
-      bret= std::binary_search( this->begin(),this->end(),t1,less_mag());
-      //delete t2;
-
-      return bret;
-  }       
- 
-  /*
-  T* ptr(long idx) {
-    return &((*this)[idx]);
-  }
-  */
+     return bret;
+}       
 
 };
 
diff --git a/src/nco++/VarOp.hh b/src/nco++/VarOp.hh
index afe244b..31ca5d9 100644
--- a/src/nco++/VarOp.hh
+++ b/src/nco++/VarOp.hh
@@ -336,6 +336,11 @@ var_sct*  VarOp<T>::var_op(var_sct* var1, int op) {
          std::sort(tp1,tp1+sz );  
          break; 
 
+	 // reverse sort 
+    case VRSORT: 
+         std::sort(tp1,tp1+sz,std::greater<T>() );  
+         break; 
+
     // return absolute value 
     case VABS:
 	if(!bmss) {
diff --git a/src/nco++/fmc_all_cls.cc b/src/nco++/fmc_all_cls.cc
index c9c9cdb..619a253 100644
--- a/src/nco++/fmc_all_cls.cc
+++ b/src/nco++/fmc_all_cls.cc
@@ -1,14 +1,13 @@
-/* $Header: /cvsroot/nco/nco/src/nco++/fmc_all_cls.cc,v 1.43 2012/02/13 17:43:06 hmb Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/fmc_all_cls.cc,v 1.63 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: netCDF arithmetic processor class methods: families of functions/methods */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "fmc_all_cls.hh"
 
-
 //Conversion Functions /***********************************/
  
   cnv_cls::cnv_cls(bool flg_dbg){
@@ -298,7 +297,6 @@
 		dim_nw[idx]=nco_dmn_free(dim_nw[idx]);
               nco_free(dim_nw);
             }  		 
-               
             return var;                
 
   } // end agg_cls::fnd     
@@ -314,6 +312,8 @@
       fmc_vtr.push_back( fmc_cls("get_miss",this,(int)GET_MISS));
       fmc_vtr.push_back( fmc_cls("change_miss",this,(int)CH_MISS));
       fmc_vtr.push_back( fmc_cls("delete_miss",this,(int)DEL_MISS));
+      fmc_vtr.push_back( fmc_cls("number_miss",this,(int)NUM_MISS));
+      fmc_vtr.push_back( fmc_cls("has_miss",this,(int)HAS_MISS));
       fmc_vtr.push_back( fmc_cls("ram_write",this,(int)RAM_WRITE));
       fmc_vtr.push_back( fmc_cls("ram_delete",this,(int)RAM_DELETE));
      
@@ -322,6 +322,7 @@
 
   var_sct *utl_cls::fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker){
   const std::string fnc_nm("utl_cls::fnd");
+    bool is_mtd;
     int rval=0;
     int nbr_args; 
     int fdx=fmc_obj.fdx();   //index
@@ -339,7 +340,8 @@
     std::vector<RefAST> vtr_args; 
 
     sfnm =fmc_obj.fnm(); //method name
-    styp=(expr ? "method":"function");
+    is_mtd=(expr ? true: false);
+    styp= (expr? "method":"function");
     nbr_args=0;
 
     if(expr)
@@ -355,8 +357,12 @@
       
      if(nbr_args ==0) 
        err_prn(fnc_nm,styp+" \""+sfnm+"\" has been called with no arguments"); 
-      
-
+     
+     // deal with is_miss in a seperate function     
+     if(fdx==NUM_MISS)
+       return is_fnd(is_mtd, vtr_args,fmc_obj,walker);           
+   
+  
 
     if( fdx==SET_MISS || fdx==CH_MISS) {
 
@@ -390,7 +396,8 @@
       // Initial scan
       if(prs_arg->ntl_scn) 
         if(var_tmp)  
-	  var_ret= ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),var_tmp->type,false);
+	  var_ret= ncap_sclr_var_mk(static_cast<std::string>
+("~utility_function"),var_tmp->type,false);
         else
 	  var_ret=ncap_var_udf("~utility_function");
 
@@ -416,6 +423,12 @@
      } // end GET_MISS 
 
 
+    if(prs_arg->ntl_scn) {
+      if(var) var=nco_var_free(var);
+      return ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),(nc_type)NC_INT,false);  
+    }
+
+
 
     if(!Nvar ){
        wrn_prn(fnc_nm,sfnm+" unable to find variable: "+va_nm); 
@@ -423,10 +436,6 @@
        return ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),(nco_int)rval);        
     }
 
-    if(prs_arg->ntl_scn) {
-      if(var) var=nco_var_free(var);
-      return ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),(nc_type)NC_INT,false);  
-    }
 
     //De-reference
     var_in=Nvar->var;  
@@ -514,14 +523,15 @@
     case RAM_DELETE: {
              // deal with var
              if(vtr_args[0]->getType()==VAR_ID){
-               if(Nvar->flg_mem==false)
-                 wrn_prn(fnc_nm,sfnm+" cannot remove disk variable:\""+va_nm+ "\". Delete can only remove RAM variables.");           
-	         rval=0;
-               }else{
+               if(Nvar->flg_mem==false){
+                 wrn_prn(fnc_nm,sfnm+" cannot remove disk variable:\""+va_nm+ "\". Delete can only remove RAM variables.");
+                 rval=0;  
+	        }else{ 
                  prs_arg->var_vtr.erase(va_nm); 
+                 prs_arg->int_vtr.erase(va_nm); 
                  rval=1;
-               
-             }
+               }
+             } 
              if(vtr_args[0]->getType()==ATT_ID){ 
                prs_arg->var_vtr.erase(va_nm);
                rval=1; 
@@ -534,6 +544,67 @@
 
   }// end function
 
+  
+var_sct * utl_cls::is_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker){
+  const std::string fnc_nm("srt_cls::imap_fnd");
+    int nbr_args;
+    int fdx=fmc_obj.fdx();
+    long icnt;
+    var_sct *var=NULL_CEWI;
+    nc_type styp=NC_INT; // used to hold the mapping type either NC_INT or NC_UINT64 
+    std::string sfnm =fmc_obj.fnm(); //method name
+    std::string var_nm;
+    std::string susg;
+    prs_cls *prs_arg=walker.prs_arg;    
+
+    
+#ifdef ENABLE_NETCDF4
+  { /* scope for fl_fmt temporary */
+    int fl_fmt; 
+    (void)nco_inq_format(walker.prs_arg->out_id,&fl_fmt);
+    if(fl_fmt==NC_FORMAT_NETCDF4 || fl_fmt==NC_FORMAT_NETCDF4_CLASSIC)
+      styp=NC_UINT64;
+    else    
+     styp=NC_INT;   
+  } /* end scope */
+
+#endif 
+  
+
+    nbr_args=args_vtr.size(); 
+    var=walker.out(args_vtr[0] );
+
+    if(prs_arg->ntl_scn){
+       nco_var_free(var);     
+       return ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),styp,false);         
+    }  
+
+    // from now on dealing with a final scan !!
+    if(var->has_mss_val){
+      char *cp_out=(char*)var->val.vp; 
+      long idx;
+      size_t slb_sz;  
+
+      icnt=0;       
+
+      slb_sz=nco_typ_lng(var->type); 
+      for(idx=0 ;idx<var->sz;idx++){
+        if( !memcmp(cp_out,var->mss_val.vp,slb_sz))
+	  icnt++;
+        cp_out+=(ptrdiff_t)slb_sz;
+      }   
+    }else{
+       icnt=0; 
+    }     
+
+    nco_var_free(var); 
+
+    if(styp==NC_UINT64) 
+       return ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),(nco_uint64)icnt);
+    else 
+      return ncap_sclr_var_mk(static_cast<std::string>("~utility_function"),(nco_int)icnt);
+}  
+    
 
 
 
@@ -545,6 +616,7 @@
       fmc_vtr.push_back( fmc_cls("size",this,(int)PSIZE));
       fmc_vtr.push_back( fmc_cls("type",this,(int)PTYPE));
       fmc_vtr.push_back( fmc_cls("ndims",this,(int)PNDIMS));
+      fmc_vtr.push_back( fmc_cls("exists",this,(int)PEXISTS));
 
     }
   }
@@ -554,16 +626,17 @@
 
     int fdx=fmc_obj.fdx();   //index
     int nbr_args;
+    std::string va_nm;
+    std::string susg; 
+    std::string sfnm =fmc_obj.fnm(); //method name
+
+    nc_type mp_typ=NC_INT;
     var_sct *var=NULL_CEWI;
     var_sct *var1=NULL_CEWI;
-    nc_type mp_typ=NC_INT;
     prs_cls* prs_arg=walker.prs_arg;
       
     RefAST tr;
     vtl_typ lcl_typ;
-
-    std::string susg; 
-    std::string sfnm =fmc_obj.fnm(); //method name
     std::vector<RefAST> vtr_args;
 
 
@@ -610,6 +683,7 @@
 
 
     lcl_typ=expr_typ(tr);          
+   
 
     // If initial scan
     if(prs_arg->ntl_scn){
@@ -621,10 +695,34 @@
       }
       return ncap_sclr_var_mk(static_cast<std::string>("~basic_function"),(nc_type)NC_INT,false);        
     }
+       
+    // from here on dealing with final scan
+    va_nm=tr->getText();
 
-    if(!prs_arg->ntl_scn) {
 
-      std::string va_nm=tr->getText();
+    // deal with PEXISTS here 
+    if(fdx==PEXISTS){
+      int iret=0;
+      switch(lcl_typ){
+        case VVAR: 
+           if(prs_arg->ncap_var_init_chk(va_nm)) iret=1;
+           break;
+        case VATT:
+	  if( prs_arg->var_vtr.find(va_nm) !=NULL)
+	    iret=1;
+          else if( (var1=ncap_att_init(va_nm,prs_arg))!=NULL) ;      
+            iret=1;
+          break;   
+
+      default:
+	 var1=walker.out(tr);  
+         iret=1; 
+         break;
+      }   
+      
+      if(var1) nco_var_free(var1);    
+      return ncap_sclr_var_mk(static_cast<std::string>("~basic_function"),(nco_int)iret);
+    }
 
      
       if(lcl_typ==VVAR)
@@ -649,12 +747,8 @@
       } // end switch        
       
       var1=nco_var_free(var1);
-       
-
-
-    } //end if      
-    return var;		 
- }       
+      return var;		 
+  }       
 
   
 //Math Functions /******************************************/
@@ -683,50 +777,51 @@
       /* Basic Rounding: ceil, fl<oor */
       sym_vtr.push_back(sym_cls("ceil",ceil,ceilf)); /* Round up to nearest integer */
       sym_vtr.push_back(sym_cls("floor",floor,floorf)); /* Round down to nearest integer */
-  
-     /* Advanced math: erf, erfc, gamma
-       LINUX*, MACOSX*, and SUN* provide these functions with C89
-       20020122 and 20020422: AIX, CRAY, SGI*, WIN32 do not define erff(), erfcf(), gammaf() with C89
-       20050610: C99 mandates support for erf(), erfc(), tgamma()
-       Eventually users without C99 will forego ncap */
-
-       #if defined(LINUX) || defined(LINUXAMD64)  || defined(MACOSX)
-         sym_vtr.push_back(sym_cls("erf",erf,erff));
-         sym_vtr.push_back(sym_cls("erfc",erfc,erfcf));
-         sym_vtr.push_back(sym_cls("gamma",tgamma,tgammaf));
-       #endif /* !LINUX */
-
+      
+      /* Advanced math: erf, erfc, gamma
+	 LINUX*, MACOSX*, and SUN* provide these functions with C89
+	 20020122 and 20020422: AIX, CRAY, SGI*, WIN32 do not define erff(), erfcf(), gammaf() with C89
+	 20050610: C99 mandates support for erf(), erfc(), tgamma()
+	 Eventually users without C99 will forego ncap */
+      
+#if defined(LINUX) || defined(LINUXAMD64)  || defined(MACOSX)
+      sym_vtr.push_back(sym_cls("erf",erf,erff));
+      sym_vtr.push_back(sym_cls("erfc",erfc,erfcf));
+      sym_vtr.push_back(sym_cls("gamma",tgamma,tgammaf));
+#endif /* !LINUX */
+      
        /* Hyperbolic trigonometric: acosh, asinh, atanh, cosh, sinh, tanh
-         20020703: AIX, SGI*, WIN32 do not define acoshf, asinhf, atanhf
-         20050610: C99 mandates support for acosh(), asinh(), atanh(), cosh(), sinh(), tanh()
-         Eventually users without C99 will forego ncap */
-       #if defined(LINUX) || defined(LINUXAMD64)
-          sym_vtr.push_back(sym_cls("acosh",acosh,acoshf));
-          sym_vtr.push_back(sym_cls("asinh",asinh,asinhf));
-          sym_vtr.push_back(sym_cls("atanh",atanh,atanhf));
-          sym_vtr.push_back(sym_cls("cosh",cosh,coshf));
-          sym_vtr.push_back(sym_cls("sinh",sinh,sinhf));
-          sym_vtr.push_back(sym_cls("tanh",tanh,tanhf));
-       #endif /* !LINUX */
-  
-      /* 20020703: AIX, MACOSX, SGI*, WIN32 do not define rintf
-      Only LINUX* supplies all of these and I do not care about them enough
-      to activate them on LINUX* but not on MACOSX* and SUN* */
+	  20020703: AIX, SGI*, WIN32 do not define acoshf, asinhf, atanhf
+	  20050610: C99 mandates support for acosh(), asinh(), atanh(), cosh(), sinh(), tanh()
+	  Eventually users without C99 will forego ncap */
+#if defined(LINUX) || defined(LINUXAMD64)
+      sym_vtr.push_back(sym_cls("acosh",acosh,acoshf));
+      sym_vtr.push_back(sym_cls("asinh",asinh,asinhf));
+      sym_vtr.push_back(sym_cls("atanh",atanh,atanhf));
+      sym_vtr.push_back(sym_cls("cosh",cosh,coshf));
+      sym_vtr.push_back(sym_cls("sinh",sinh,sinhf));
+      sym_vtr.push_back(sym_cls("tanh",tanh,tanhf));
+#endif /* !LINUX */
+      
       /* Advanced Rounding: nearbyint, rint, round, trunc */
-     /* Advanced Rounding: nearbyint, round, trunc */
-     /* sym_vtr.push(sym_cls("nearbyint",nearbyint,nearbyintf)); *//* Round to integer value in floating point format using current rounding direction, do not raise inexact exceptions */
-     /* sym_vtr.push(sym_cls("round",round,roundf)); *//* Round to nearest integer away from zero */
-      /* sym_vtr.push(sym_cls("trunc",trunc,truncf)); *//* Round to nearest integer not larger in absolute value */
-      /* sym_vtr.push(sym_cls("rint",rint,rintf)); *//* Round to integer value in floating point format using current rounding direction, raise inexact exceptions */
+      /* Advanced Rounding: nearbyint, round, trunc */
+      /* 20020703: AIX, MACOSX, SGI*, WIN32 do not define rintf
+	 Only LINUX* supplies all of these and I do not care about them enough
+	 to activate them on LINUX* but not on MACOSX* and SUN* */
+      /* 20130326: Re-activate these functions on all architectures */
+      sym_vtr.push_back(sym_cls("nearbyint",nearbyint,nearbyintf)); /* Round to integer value in floating point format using current rounding direction, do not raise inexact exceptions */
+      sym_vtr.push_back(sym_cls("rint",rint,rintf)); /* Round to integer value in floating point format using current rounding direction, raise inexact exceptions */
+      sym_vtr.push_back(sym_cls("round",round,roundf)); /* Round to nearest integer away from zero */
+      sym_vtr.push_back(sym_cls("trunc",trunc,truncf)); /* Round to nearest integer not larger in absolute value */
   
-     // create fmc vector from sym vector
-     int idx;
-     int sz=sym_vtr.size();
-            
-     for(idx=0 ; idx<sz ;idx++){
-       fmc_cls fmc_obj( sym_vtr[idx].fnm(),this,idx);   
-       fmc_vtr.push_back(fmc_obj);
-     }
+      // Create fmc vector from sym vector
+      int idx;
+      int sz=sym_vtr.size();
+      
+      for(idx=0 ; idx<sz ;idx++){
+	fmc_cls fmc_obj( sym_vtr[idx].fnm(),this,idx);   
+	fmc_vtr.push_back(fmc_obj);
+      }
     }
   }		      
   var_sct * mth_cls::fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker){
@@ -787,7 +882,7 @@
     }
   }
 
-
+  
   var_sct *mth2_cls::fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker){
   const std::string fnc_nm("mth2_cls::fnd");
 
@@ -956,7 +1051,6 @@
             }
 
             if(fdx==PPERMUTE){
-
               if((size_t)dmn_vtr.size() < str_vtr.size())
 	        wrn_prn(sfnm, "Unrecognized dimension arguments");
 
@@ -1305,9 +1399,9 @@
 
         case PUNPACK: 
           var_sct *var_att;
-	  var_att=ncap_att_get(var_in->id,var_in->nm,"scale_factor",prs_arg);
+	  var_att=ncap_att_get(var_in->id,var_in->nm,"scale_factor",1,prs_arg);
           if(var_att == (var_sct*)NULL) 
-	    var_att=ncap_att_get(var_in->id,var_in->nm,"add_offset",prs_arg);	
+	    var_att=ncap_att_get(var_in->id,var_in->nm,"add_offset",1,prs_arg);	
 
           if(var_att==(var_sct*)NULL){ 
             var_in=nco_var_free(var_in);     
@@ -1352,8 +1446,12 @@
   srt_cls::srt_cls(bool flg_dbg){
     //Populate only on  constructor call
     if(fmc_vtr.empty()){
-          fmc_vtr.push_back( fmc_cls("sort" , this,PSORT)); 
+          fmc_vtr.push_back( fmc_cls("sort" , this,PASORT)); 
+          fmc_vtr.push_back( fmc_cls("asort" , this,PASORT)); 
           fmc_vtr.push_back( fmc_cls("dsort" , this,PDSORT)); 
+          fmc_vtr.push_back( fmc_cls("remap" , this,PREMAP)); 
+          fmc_vtr.push_back( fmc_cls("unmap" , this,PUNMAP)); 
+          fmc_vtr.push_back( fmc_cls("invert_map" , this,PIMAP)); 
 
 			     		      
     }
@@ -1376,16 +1474,20 @@
 	vtr_args.push_back(tr);
       while(tr=tr->getNextSibling());    
     }
- 
+    
 
     is_mtd=(expr ? true: false);
 
     switch(fdx){
-      case PSORT:
+      case PASORT:
+      case PDSORT: 
         return srt_fnd(is_mtd,vtr_args,fmc_obj,walker);  
         break;
-      case PDSORT:
+      case PREMAP:
+      case PUNMAP:
         return mst_fnd(is_mtd,vtr_args,fmc_obj,walker);  
+      case PIMAP:
+        return imap_fnd(is_mtd,vtr_args,fmc_obj,walker);   
         break;
     }
 
@@ -1394,6 +1496,69 @@
 } // end gsl_fit_cls::fnd 
 
 
+  
+var_sct * srt_cls::imap_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker){
+  const std::string fnc_nm("srt_cls::imap_fnd");
+    int nbr_args;
+    int fdx=fmc_obj.fdx();
+    var_sct *var1=NULL_CEWI;
+    var_sct *var_ret=NULL_CEWI;
+    nc_type styp; // used to hold the mapping type either NC_INT or NC_UINT64 
+    std::string sfnm =fmc_obj.fnm(); //method name
+    std::string var_nm;
+    std::string susg;
+    prs_cls *prs_arg=walker.prs_arg;    
+
+
+    nbr_args=args_vtr.size(); 
+
+
+    if(nbr_args==0)
+       err_prn(sfnm,"Function has been called with no arguments"); 
+
+    
+    var1=walker.out(args_vtr[0]);   
+
+    if(prs_arg->ntl_scn)     
+      return var1;  
+
+    // remember original type 
+    styp=var1->type; 
+
+    var1=nco_var_cnf_typ((nc_type)NC_UINT64, var1);  
+
+    // var2 contains the mapping
+    (void)cast_void_nctype((nc_type)NC_UINT64,&var1->val);
+
+     {
+       long idx;
+       long sz; 
+       nco_uint64 *lp_mp;  
+       nco_uint64 *lp_mp_out;   
+       sz=var1->sz;
+       lp_mp=var1->val.ui64p; 
+        
+       lp_mp_out=(nco_uint64*)nco_calloc(sz,sizeof( nco_uint64));  
+         
+       for(idx=0;idx<sz;idx++)
+         if(lp_mp[idx]<sz) lp_mp_out[ lp_mp[idx] ] =idx;
+
+       //swap values 
+       nco_free(var1->val.ui64p);
+       var1->val.ui64p=lp_mp_out; 
+            
+     }
+
+     (void)cast_nctype_void((nc_type)NC_UINT64,&var1->val);  
+     // convert back to original type 
+     var1=nco_var_cnf_typ(styp, var1);  
+      
+     return var1;
+
+}
+
+
+
 
   
 var_sct * srt_cls::srt_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker){
@@ -1407,6 +1572,7 @@ var_sct * srt_cls::srt_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
     std::string styp;
     std::string var_nm;
     std::string susg;
+    bool bdirection; // ascending or desending sort
     prs_cls *prs_arg=walker.prs_arg;    
 
 
@@ -1432,9 +1598,6 @@ var_sct * srt_cls::srt_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
     if(nbr_args==0)
        err_prn(sfnm,"Function has been called with no arguments"); 
 
-       
-    if(fdx==PSORT) {
-        
          
       var1=walker.out(args_vtr[0]);
        
@@ -1479,78 +1642,74 @@ var_sct * srt_cls::srt_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
         if(prs_arg->ntl_scn) 
           return var1;
        
-    }
+     if(fdx==PASORT) bdirection=true;          
+     if(fdx==PDSORT) bdirection=false;          
+
+
 
-    switch(fdx) {
              
-      case PSORT:
-	   if(var2==NULL){
-	       var1=ncap_var_var_op(var1,(var_sct*)NULL,VSORT);  
-               break;   
-           }
+      if(var2==NULL){
+	if(bdirection)   
+	  var1=ncap_var_var_op(var1,(var_sct*)NULL,VSORT);  
+        else 
+	  var1=ncap_var_var_op(var1,(var_sct*)NULL,VRSORT);  
+      }else{
 
-           // convert map 
-           var2=nco_var_cnf_typ(mp_typ, var2);  
+       // convert map 
+       var2=nco_var_cnf_typ(mp_typ, var2);  
 
-           // check if map is large enough  
-           if( var2->sz < var1->sz) {
-             ostringstream os; 
-	     os<<"Size of map  "<<var_nm<<"("<< var2->sz<<") is less than size of var(" << var1->sz<<")";
+       // check if map is large enough  
+       if( var2->sz < var1->sz) {
+         ostringstream os; 
+	 os<<"Size of map  "<<var_nm<<"("<< var2->sz<<") is less than size of var(" << var1->sz<<")";
              err_prn(sfnm,os.str());
-           }
+        }
 
-           switch (var1->type) {
-             case NC_DOUBLE: 
-	        (void)ncap_sort_and_map<double>(var1,var2);    
-                break;  
-             case NC_FLOAT: 
-	        (void)ncap_sort_and_map<float>(var1,var2);    
-                break;  
-             case NC_INT: 
-	        (void)ncap_sort_and_map<nco_int>(var1,var2);    
-                break;  
-             case NC_SHORT: 
-	        (void)ncap_sort_and_map<nco_short>(var1,var2);    
-                break;  
-             case NC_USHORT: 
-	        (void)ncap_sort_and_map<nco_ushort>(var1,var2);    
-                break;  
-             case NC_UINT: 
-	        (void)ncap_sort_and_map<nco_uint>(var1,var2);    
-                break;  
-             case NC_INT64: 
-	        (void)ncap_sort_and_map<nco_int64>(var1,var2);    
-                break;  
-             case NC_UINT64: 
-	        (void)ncap_sort_and_map<nco_uint64>(var1,var2);    
-                break;  
-             case NC_BYTE: 
-	        (void)ncap_sort_and_map<nco_byte>(var1,var2);    
-                break;  
-             case NC_UBYTE: 
-	        (void)ncap_sort_and_map<nco_ubyte>(var1,var2);    
-                break;  
-             case NC_CHAR: 
-	        (void)ncap_sort_and_map<nco_char>(var1,var2);    
-                break;  
-             case NC_STRING: break; /* Do nothing */
+        switch (var1->type) {
+          case NC_DOUBLE: 
+	    (void)ncap_sort_and_map<double>(var1,var2,bdirection);    
+            break;  
+          case NC_FLOAT: 
+	    (void)ncap_sort_and_map<float>(var1,var2,bdirection);    
+            break;  
+          case NC_INT: 
+	    (void)ncap_sort_and_map<nco_int>(var1,var2,bdirection);    
+            break;  
+          case NC_SHORT: 
+	    (void)ncap_sort_and_map<nco_short>(var1,var2,bdirection);    
+            break;  
+          case NC_USHORT: 
+	    (void)ncap_sort_and_map<nco_ushort>(var1,var2,bdirection);    
+            break;  
+          case NC_UINT: 
+	    (void)ncap_sort_and_map<nco_uint>(var1,var2,bdirection);    
+            break;  
+          case NC_INT64: 
+	    (void)ncap_sort_and_map<nco_int64>(var1,var2,bdirection);    
+            break;  
+          case NC_UINT64: 
+	    (void)ncap_sort_and_map<nco_uint64>(var1,var2,bdirection);    
+            break;  
+          case NC_BYTE: 
+	    (void)ncap_sort_and_map<nco_byte>(var1,var2,bdirection);    
+            break;  
+          case NC_UBYTE: 
+	    (void)ncap_sort_and_map<nco_ubyte>(var1,var2,bdirection);    
+            break;  
+          case NC_CHAR: 
+	    (void)ncap_sort_and_map<nco_char>(var1,var2,bdirection);    
+            break;  
+           case NC_STRING: break; /* Do nothing */
              
-            default: nco_dfl_case_nc_type_err(); break;
+           default: nco_dfl_case_nc_type_err(); break;
             
-           } // end big switch
+	} // end big switch
  
-           // Write out mapping
-           (void)prs_arg->ncap_var_write(var2,false);             
-           break; 
-
-
-
-
-
-    }
-
+         // Write out mapping
+         (void)prs_arg->ncap_var_write(var2,false);             
+      }
 
-    return var1;
+      return var1;
     
 
 } // end srt_cls::srt_fnd()
@@ -1588,21 +1747,14 @@ var_sct * srt_cls::mst_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
     var2=nco_var_cnf_typ((nc_type)NC_UINT64, var2);
 
 
-
-
-    if( fdx== PDSORT) {
       
-      if(prs_arg->ntl_scn){
-        var2=nco_var_free(var2);
-        return var1;    
-      }
-    }   
-    
+    if(prs_arg->ntl_scn){
+       var2=nco_var_free(var2);
+       return var1;    
+     }
    
-    switch(fdx) {
-      
-
-      case PDSORT:{
+      // here usage PREMAP, PUNMAP 
+      {
           char *cp_in;
           char *cp_out;
           long idx; 
@@ -1628,22 +1780,44 @@ var_sct * srt_cls::mst_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
 
           slb_sz=nco_typ_lng(var_out->type);
           cp_in=(char*)var1->val.vp; 
+          cp_out=(char*)var_out->val.vp;
 
           // var2 contains the mapping
           (void)cast_void_nctype((nc_type)NC_UINT64,&var2->val);
           lp_mp=var2->val.ui64p; 
          
+	  switch(fdx){ 
+          
+          case PREMAP:  
           for(idx=0; idx<sz_idx; idx++){ 
             cp_out=(char*)var_out->val.vp+ (ptrdiff_t)idx*sz*slb_sz;              
             for(jdx=0 ;jdx<sz; jdx++){
               // do bounds checking for the mapping
-	      if(lp_mp[jdx] !=jdx && lp_mp[jdx] >=0 && lp_mp[jdx]< sz )
+	      if(lp_mp[jdx] >=0 && lp_mp[jdx]< sz )
                 // copy element from var1 to var_out
                 (void)memcpy(cp_out+(ptrdiff_t)(lp_mp[jdx]*slb_sz),cp_in,slb_sz); 
 	      cp_in+=(ptrdiff_t)slb_sz;
 	    } // end jdx
           } //end idx; 
-          
+          break;
+         
+          // reverse map
+          case PUNMAP:  
+          for(idx=0; idx<sz_idx; idx++){ 
+            cp_in=(char*)var1->val.vp+ (ptrdiff_t)idx*sz*slb_sz;              
+            for(jdx=0 ;jdx<sz; jdx++){
+              // do bounds checking for the mapping
+	      if(lp_mp[jdx] >=0 && lp_mp[jdx]< sz )
+                // copy element from var1 to var_out
+                (void)memcpy(cp_out,cp_in+(ptrdiff_t)(lp_mp[jdx]*slb_sz),slb_sz); 
+	      cp_out+=(ptrdiff_t)slb_sz;
+	    } // end jdx
+          } //end idx; 
+          break;
+         
+	  } // end switch
+
+
          
           var1=nco_var_free(var1);
           (void)cast_nctype_void((nc_type)NC_UINT64,&var2->val);
@@ -1652,11 +1826,7 @@ var_sct * srt_cls::mst_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
           var1=var_out;
 
  
-       } break;  
-
-
-
-    }
+      }
 
 
     return var1;
@@ -2077,19 +2247,19 @@ var_sct * srt_cls::mst_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls
 
   } // end fnc
 
-// Generic function for biliner interpolation
+// Generic function for bilinear interpolation
 // function assumes all arguments are of type double and that
-// v_xin & v_yin are montonic(increasing or decreasing with respect to var->sz
+// v_xin & v_yin are monotonic(increasing or decreasing with respect to var->sz
 void bil_cls::clc_bil_fnc(var_sct *v_xin,var_sct *v_yin, var_sct *v_din, var_sct *v_xout,var_sct *v_yout, var_sct *v_dout,bool bwrp,std::string sfnm){
-   bool b_rev_x; // flg v_xin montonic( increasing - false dcreasing true ) 
-   bool b_rev_y; // flg v_yin montonic( increasing - false dcreasing true ) 
+   bool b_rev_x; // flg v_xin monotonic( increasing - false dcreasing true ) 
+   bool b_rev_y; // flg v_yin monotonic( increasing - false dcreasing true ) 
    long x_sz;    // size of X dim in OUTPUT  
    long y_sz;    // size of Y dim in OUTPUT  
    long jdx;
    long kdx;
 
 
-  // Sanity check for input/output data
+  // Sanity check for input/ooooutput data
   if( v_xin->sz *v_yin->sz != v_din->sz)
     err_prn(sfnm,"Dimension size mismatch with input variables\n"); 
 
@@ -2182,19 +2352,57 @@ void bil_cls::clc_bil_fnc(var_sct *v_xin,var_sct *v_yin, var_sct *v_din, var_sct
          Q[0][1]=v_din->val.dp[x_min*v_yin->sz+y_max_org];          
          Q[1][1]=v_din->val.dp[x_max*v_yin->sz+y_max_org];        
        }
+        
+       //deal with no missing values in v_din
+       if( !v_din->has_mss_val ) {   
+         if(x_min==x_max && y_min==y_max)
+	   rslt=Q[0][0];       
+         else if( y_min==y_max) 
+           rslt=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);                            
+         else if( x_min==x_max) 
+           rslt=clc_lin_ipl(v_yin->val.dp[y_min],v_yin->val.dp[y_max],v_yout->val.dp[jdx],Q[0][0],Q[1][1]);               
+         else{
+           d_int1=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);               
+           d_int2=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][1],Q[1][1]);         
+           rslt=clc_lin_ipl(v_yin->val.dp[y_min],v_yin->val.dp[y_max],v_yout->val.dp[jdx],d_int1,d_int2);               
+         }
+       // missing values  
+       }else{ 
+	 cast_void_nctype(NC_DOUBLE,&v_din->mss_val);
+         double mss_dbl=*v_din->mss_val.dp;      
+         cast_nctype_void(NC_DOUBLE,&v_din->mss_val);      
+                 
+	 bool mQ00=Q[0][0]==mss_dbl ? true : false;
+         bool mQ10=Q[1][0]==mss_dbl ? true : false;
+         bool mQ01=Q[0][1]==mss_dbl ? true : false;
+         bool mQ11=Q[1][1]==mss_dbl ? true : false;  
+
+           // nb its possible with below for d_int1 to be assigned missing value   
+           if(mQ00)
+             d_int1=Q[1][0];
+           else if(mQ10)
+             d_int1=Q[0][0]; 
+           else
+	     d_int1=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);               
+
+           // nb its possible with below for d_int2 to be assigned missing value  
+           if(mQ01)
+             d_int2=Q[1][1];
+           else if(mQ11)
+             d_int2=Q[0][1]; 
+           else
+             d_int2=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][1],Q[1][1]);         
 
-         
-       if(x_min==x_max && y_min==y_max)
-	 rslt=Q[0][0];       
-       else if( y_min==y_max) 
-         rslt=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);                            
-       else if( x_min==x_max) 
-         rslt=clc_lin_ipl(v_yin->val.dp[y_min],v_yin->val.dp[y_max],v_yout->val.dp[jdx],Q[0][0],Q[1][1]);               
-       else{
-         d_int1=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);               
-         d_int2=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][1],Q[1][1]);         
-         rslt=clc_lin_ipl(v_yin->val.dp[y_min],v_yin->val.dp[y_max],v_yout->val.dp[jdx],d_int1,d_int2);               
+           
+           // nb its possible with below for rslt to be assigned missing value   
+           if(d_int1==mss_dbl)
+	     rslt=d_int2;
+           else if(d_int2==mss_dbl)
+             rslt=d_int1;
+           else  
+             rslt=clc_lin_ipl(v_yin->val.dp[y_min],v_yin->val.dp[y_max],v_yout->val.dp[jdx],d_int1,d_int2);                  
        }
+
        v_dout->val.dp[kdx*v_yout->sz+jdx]=rslt;
 
 
@@ -2279,18 +2487,58 @@ void bil_cls::clc_bil_fnc(var_sct *v_xin,var_sct *v_yin, var_sct *v_din, var_sct
          Q[1][1]=v_din->val.dp[x_max*v_yin->sz+y_max];        
        }
 
-         
-       if(x_min==x_max && y_min==y_max)
-	 rslt=Q[0][0];       
-       else if( y_min==y_max) 
-         rslt=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);                            
-       else if( x_min==x_max) 
-         rslt=clc_lin_ipl(y_min_dbl,y_max_dbl,v_yout->val.dp[jdx],Q[0][0],Q[1][1]);               
-       else{
-         d_int1=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);               
-         d_int2=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][1],Q[1][1]);         
-         rslt=clc_lin_ipl(y_min_dbl,y_max_dbl,v_yout->val.dp[jdx],d_int1,d_int2);               
+       // no missing value
+       if(!v_din->has_mss_val)  
+         if(x_min==x_max && y_min==y_max)
+	   rslt=Q[0][0];       
+         else if( y_min==y_max) 
+           rslt=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);                            
+         else if( x_min==x_max) 
+           rslt=clc_lin_ipl(y_min_dbl,y_max_dbl,v_yout->val.dp[jdx],Q[0][0],Q[1][1]);               
+         else{
+           d_int1=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);               
+           d_int2=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][1],Q[1][1]);         
+           rslt=clc_lin_ipl(y_min_dbl,y_max_dbl,v_yout->val.dp[jdx],d_int1,d_int2);                
+       }else{ 
+	 // missing value  
+	 cast_void_nctype(NC_DOUBLE,&v_din->mss_val);
+         double mss_dbl=*v_din->mss_val.dp;      
+         cast_nctype_void(NC_DOUBLE,&v_din->mss_val);      
+                 
+	 bool mQ00=Q[0][0]==mss_dbl ? true : false;
+         bool mQ10=Q[1][0]==mss_dbl ? true : false;
+         bool mQ01=Q[0][1]==mss_dbl ? true : false;
+         bool mQ11=Q[1][1]==mss_dbl ? true : false;  
+
+           // nb its possible with below for d_int1 to be assigned missing value   
+           if(mQ00)
+             d_int1=Q[1][0];
+           else if(mQ10)
+             d_int1=Q[0][0]; 
+           else
+	     d_int1=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][0],Q[1][0]);               
+
+           // nb its possible with below for d_int2 to be assigned missing value  
+           if(mQ01)
+             d_int2=Q[1][1];
+           else if(mQ11)
+             d_int2=Q[0][1]; 
+           else
+             d_int2=clc_lin_ipl(v_xin->val.dp[x_min],v_xin->val.dp[x_max],v_xout->val.dp[kdx],Q[0][1],Q[1][1]);         
+
+           
+           // nb its possible with below for rslt to be assigned missing value   
+           if(d_int1==mss_dbl)
+	     rslt=d_int2;
+           else if(d_int2==mss_dbl)
+             rslt=d_int1;
+           else  
+             rslt=clc_lin_ipl(v_yin->val.dp[y_min],v_yin->val.dp[y_max],v_yout->val.dp[jdx],d_int1,d_int2);                  
        }
+
+
+
+
        v_dout->val.dp[kdx*v_yout->sz+jdx]=rslt;
 
 
@@ -2324,4 +2572,610 @@ double bil_cls::clc_lin_ipl(double x1,double x2, double x, double Q0,double Q1){
 
 
 
+//Coordinate Functions /***********************************/ 
+  cod_cls::cod_cls(bool flg_dbg){
+    //Populate only on  constructor call
+    if(fmc_vtr.empty()){
+          fmc_vtr.push_back( fmc_cls("min_coords",this,PCOORD)); 
+
+    }		      
+  } 
+
+  var_sct * cod_cls::fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker){
+  const std::string fnc_nm("cod_cls::fnd");
+  int fdx;
+  int nbr_args;
+  int nbr_dim;
+  long lret;
+  dmn_sct **dim;
+  var_sct *var1=NULL_CEWI;
+  var_sct *var2=NULL_CEWI;
+  var_sct *var_ret;
+           
+  std::string susg;
+  std::string sfnm=fmc_obj.fnm();
+
+  RefAST tr;
+  std::vector<RefAST> args_vtr; 
+  std::vector<std::string> cst_vtr;              
+
+  // de-reference 
+  prs_cls *prs_arg=walker.prs_arg;            
+  vtl_typ lcl_typ;
+
+  fdx=fmc_obj.fdx();
+ 
+
+  if(expr)
+      args_vtr.push_back(expr);
+
+    if(tr=fargs->getFirstChild()) {
+      do  
+	args_vtr.push_back(tr);
+      while(tr=tr->getNextSibling());    
+    } 
+      
+  nbr_args=args_vtr.size();  
+
+  // function takes a coordinate var and value and returns the index of the nearest 
+  // grid point. returns -1 if value not in range
+  susg="usage: crd_idx="+sfnm+"(crd_var,crd_value)"; 
+
+  
+  if(nbr_args<2)
+      err_prn(sfnm,"Function has been called with less than two arguments\n"+susg); 
+
+
+
+  if(nbr_args >2 &&!prs_arg->ntl_scn) 
+      wrn_prn(sfnm,"Function been called with more than two arguments"); 
+
+   
+  var1=walker.out(args_vtr[0]);  
+  var2=walker.out(args_vtr[1]);  
+
+  
+  if(prs_arg->ntl_scn  ){
+    nco_var_free(var1);
+    nco_var_free(var2);
+    return ncap_sclr_var_mk(static_cast<std::string>("~coord_function"),(nc_type)NC_INT,false);  ;
+  }
+
+
+  {
+    bool bInc;
+    long idx;
+    long sz;
+    double dval;
+    double dmin; 
+    double *dp_crd; 
+    
+    var1=nco_var_cnf_typ(NC_DOUBLE,var1);
+    var2=nco_var_cnf_typ(NC_DOUBLE,var2);
+
+    // convert everything to type double         
+    (void)cast_void_nctype(NC_DOUBLE,&(var1->val));
+    (void)cast_void_nctype(NC_DOUBLE,&(var2->val));
+
+    dp_crd=var1->val.dp;  
+    dval=var2->val.dp[0];   
+    sz=var1->sz;  
+    
+    // determine if co-ord is montonic increasing or decreasing 
+    // true if increasing 
+    bInc= ( dp_crd[1] > dp_crd[0]); 
+        
+    lret=-1; // set to not in range
+    // check limits co-ord increasing 
+    if(bInc){
+      if(dval>=dp_crd[0] && dval<=dp_crd[sz-1] )
+         for(idx=0 ; idx<sz-1 ; idx++)
+           if( dval >= dp_crd[idx] && dval <= dp_crd[idx+1] ){  
+	      lret=(dval-dp_crd[idx]<= dp_crd[idx+1]-dval ? idx: idx+1 );    
+              break;
+	   }  
+    }  
+    // check limits co-ord decreasing
+    if(!bInc){
+      if(dval<=dp_crd[0] && dval>=dp_crd[sz-1] )
+         for(idx=0 ; idx<sz-1 ; idx++)
+           if( dval <= dp_crd[idx] && dval >= dp_crd[idx+1] ){  
+	      lret=(dp_crd[idx]-dval <= dval-dp_crd[idx+1] ? idx: idx+1 );    
+              break;
+	   }  
+    }  
+                  
+     (void)cast_nctype_void(NC_DOUBLE,&var1->val);
+    (void)cast_nctype_void(NC_DOUBLE,&var2->val);
+  
+   
+  }
+
+  nco_var_free(var1);   
+  nco_var_free(var2);
+
+  return ncap_sclr_var_mk(static_cast<std::string>("~coord_function"),(nco_int)lret);        
+  }
+
+
+//misc Functions /******************************************/
+// These fuctions are used to create and apply masks to 2D grid variables
+//    mask_out=imask_make(var_in,lat,lon)
+//
+//    var_in is a 2D var. mask_out is a 0/1 mask of grid points.
+//    value is set to 1 if point in var_in is  missing_value but has a neigbour with a non-missing value;
+//
+//    var_out=imask_fill(var_in.mask_out,lat,lon)
+//  
+//    Points  in var_in are filled if they are missing AND are specified in mask_out.
+//    The fill value is an average from the nearest neigbours. nb if a neighbour has just been filled 
+//    in then this value is NOT used in the calculation of the average      
+//    Typically mask_out and var_in should be the same shape. 
+//    Howver its possible to specify multiple mask in mask_out - in this case each mask is iterativly applied to var_in
+//    so the shape would be like mask_out(mask_size,lat,lon) 
+// 
+//
+//
+  misc_cls::misc_cls(bool flg_dbg){
+    //Populate only on first constructor call
+    if(fmc_vtr.empty()){
+      fmc_vtr.push_back( fmc_cls("imask",this,(int)PMISC1));
+      fmc_vtr.push_back( fmc_cls("imask_make",this,(int)PMISC2));
+      fmc_vtr.push_back( fmc_cls("imask_fill",this,(int)PMISC3));
+    }
+  }
+
+
+
+
+  var_sct *misc_cls::fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker){
+  const std::string fnc_nm("misc_cls::fnd");
+    int idx;
+    int fdx=fmc_obj.fdx();   //index
+    int nbr_args;
+    int in_nbr_args;
+    prs_cls* prs_arg=walker.prs_arg;
+    var_sct *var_arr[4];
+    var_sct *var_out;
+    RefAST tr;
+    nc_type in_typ;  
+    std::string susg;
+    std::string serr;
+    std::string sfnm =fmc_obj.fnm(); //method name
+    std::vector<RefAST> vtr_args; 
+    NcapVector<dmn_sct*> dmn_vtr;
+
+
+    if(expr)
+      vtr_args.push_back(expr);
+
+    if(tr=fargs->getFirstChild()) {
+       do  
+         vtr_args.push_back(tr);
+       while(tr=tr->getNextSibling());    
+    } 
+
+      
+    nbr_args=vtr_args.size();  
+
+    switch(fdx){
+
+      case PMISC1:
+       in_nbr_args=nbr_args;  
+       susg="usage: var_out="+sfnm+"(Data_2D, X_in, Y_in)"; 
+       break;
+
+      case PMISC2: 
+        in_nbr_args=nbr_args;  
+        susg="usage: var_out="+sfnm+"(data_2D, mask,X_in?, Y_in?)"; 
+        break;
+
+
+      case PMISC3:
+       in_nbr_args=nbr_args;  
+       susg="usage: var_out="+sfnm+"(data_2D,mask, X_in, Y_in)"; 
+       break;
+
+
+    } // end switch
+
+
+    if(in_nbr_args <3 ){   
+      serr="function requires at least two arguments. You have only supplied "+nbr2sng(in_nbr_args)+ " arguments\n"; 
+      err_prn(sfnm,serr+susg);
+    }
+
+    
+   
+    // process input args 
+    for(idx=0 ; idx<in_nbr_args; idx++)
+      var_arr[idx]=walker.out(vtr_args[idx]);
+
+   
+    // initial scan
+    if(prs_arg->ntl_scn){
+        for(idx=1 ; idx<in_nbr_args ; idx++)
+	    nco_var_free(var_arr[idx]);
+
+        return var_arr[0];
+    }
+
+    // save inital type
+    in_typ=var_arr[0]->type;     
+    // convert all args to type DOUBLE 
+    for(idx=0;idx<in_nbr_args;idx++)
+       var_arr[idx]=nco_var_cnf_typ(NC_DOUBLE,var_arr[idx]);               
+
+   
+
+    if(fdx==PMISC1){
+      // recall input arguments in order
+      // 0 - input data
+      // 1 - input X   co-ordinate var
+      // 2 - input Y   co-ordinate var
+      long cnt=0l; 
+      long ldx; 
+      long idx;
+      long jdx;
+      long v_sz;
+      long iidx;
+      long jjdx;
+      long lldx; 
+      long x_sz;
+      long y_sz;
+      double *dpi;
+      double *dpo;
+      double mss_dbl=9.999e20;; 
+
+      var_out=nco_var_dpl(var_arr[0]);
+      (void)cast_void_nctype(NC_DOUBLE,&var_out->val);   
+
+      for(idx=0;idx<in_nbr_args;idx++) 
+         (void)cast_void_nctype(NC_DOUBLE,&var_arr[idx]->val);
+
+      // grab missing value;  
+      if( var_arr[0]->has_mss_val ){
+         cast_void_nctype(NC_DOUBLE,&var_arr[0]->mss_val);
+         mss_dbl=*var_arr[0]->mss_val.dp;      
+         cast_nctype_void(NC_DOUBLE,&var_arr[0]->mss_val);       
+       }   
+
+      dpi=var_arr[0]->val.dp; 
+      dpo=var_out->val.dp;          
+      v_sz=var_arr[0]->sz;     
+      x_sz=var_arr[1]->sz;   
+      y_sz=var_arr[2]->sz;   
+
+      
+      
+      // set all values to zero      
+     memset((void*)dpo,0, sizeof(double) *v_sz);     
+
+     for(idx=2;idx<x_sz-2; idx++)       
+       for(jdx=2;jdx<y_sz-2;jdx++ ){
+         ldx=idx*y_sz+jdx; 
+         // set output to default missing vale; 
+         dpo[ldx]=mss_dbl; 
+         // mask either 1 or mss_dbl
+	 if( dpi[ldx] !=1.0 ){
+	   for(iidx=idx-2; iidx<idx+3;iidx++){ 
+	     for(jjdx=jdx-2; jjdx<jdx+3;jjdx++){ 
+	       lldx=iidx*y_sz+jjdx;
+	        if(dpi[lldx]==1.0){
+		  dpo[ldx]=1.0;  
+                  cnt++; 
+                  goto outer; 
+	        }             
+	     }
+           }
+	 } 
+       outer: ;
+       }
+       
+     printf("misc_cls number of spots processed=%ld\n" ,cnt);
+                       
+    } // end fdx
+
+    if(fdx==PMISC2){
+      // recall input arguments in order
+      // 0 - input var -2D INPUT GRID 
+      // 1 - input X   co-ordinate var
+      // 2 - input Y   co-ordinate var
+      long ldx;  
+      long v_sz;
+      long x_sz;
+      long y_sz;
+      long mcnt=0l;   // num missing values count 
+      long vmcnt=0l; // num missing processed;   
+      double mss_dbl=9.999e20; 
+      double *dpi;   // input pointer
+      double *dpo;   //output pointer 
+      double *dpm;   // mask pointer;  
+      // save in type; 
+      ostringstream os; 
+      
+      // var_out is the output mask - same shape as input var 
+      var_out=nco_var_dpl(var_arr[0]);         
+      (void)cast_void_nctype(NC_DOUBLE,&var_out->val); 
+
+      // cast all vars
+      for(idx=0;idx<in_nbr_args;idx++)
+        (void)cast_void_nctype(NC_DOUBLE,&var_arr[idx]->val);
+        
+      v_sz=var_arr[0]->sz;
+      x_sz=var_arr[1]->sz;
+      y_sz=var_arr[2]->sz;
+   
+      
+      dpo=var_out->val.dp;
+      dpi=var_arr[0]->val.dp;     
+      dpm=var_arr[1]->val.dp;      
+ 
+      // grab missing value;  
+     if( var_arr[0]->has_mss_val ){
+         cast_void_nctype(NC_DOUBLE,&var_arr[0]->mss_val);
+         mss_dbl=*var_arr[0]->mss_val.dp;      
+         cast_nctype_void(NC_DOUBLE,&var_arr[0]->mss_val);       
+       }   
+      
+      for(ldx=0; ldx<v_sz ; ldx++){
+        // set otuput to default -0.0 
+        dpo[ldx]=0.0;
+
+        if(dpi[ldx]==mss_dbl ){  
+          int cnt=0;  
+          int jdx;
+          long iX=ldx/y_sz;
+          long iY= ldx -iX*y_sz;
+          double sum=0.0;
+          double Q[4]={mss_dbl,mss_dbl,mss_dbl,mss_dbl};
+          mcnt++; 
+            
+  
+          if(iY >0 )    Q[0]=dpi[ldx-1];
+          if(iY+1<y_sz) Q[1]=dpi[ldx+1]; 
+          if(iX>0 )     Q[2]=dpi[ldx-y_sz];
+          if(iX+1 < x_sz) Q[3]=dpi[ldx+y_sz];   
+           
+          for(jdx=0 ; jdx<4 ;jdx++)
+	    if(Q[jdx] !=mss_dbl) {
+	      sum+=Q[jdx];              
+              cnt++; 
+	    }
+       
+	  if(cnt){ 
+	    dpo[ldx]=1.0;   
+            vmcnt++;
+	  }
+           
+	} // end if
+               
+      } // end for
+
+      if(nco_dbg_lvl_get() >= 2){ 
+          os<< sfnm<<": num missing="<<mcnt<<+" num valid="<<vmcnt;
+          dbg_prn(fnc_nm,os.str());
+      } 
+
+    } // end fdx  
+
+
+    if(fdx==PMISC3){
+      // recall input arguments in order
+      // 0 - input var -2D INPUT GRID 
+      // 1 - input mask 2D GRID (VARMASK these are the places we want to fill a value)
+      //     nb this mask may contain multiple masks. So size of mask is a multiple of the
+      //     the input size grid i.e mask size = n * v_sz, When its a multiple we apply each mask
+      //     i an iteration    
+      // 2 - input X   co-ordinate var
+      // 3 - input Y   co-ordinate var
+      long ldx;  
+      long mdx;
+      long v_sz;
+      long m_sz;
+      long x_sz;
+      long y_sz;
+      size_t m_offset=0ll; 
+      double mss_dbl=9.999e20; 
+      double *dpi;   // input pointer
+      double *dpo;   //output pointer 
+      double *dpm;   // mask pointer;  
+   
+      // save in type; 
+      
+
+
+      var_out=nco_var_dpl(var_arr[0]);         
+      (void)cast_void_nctype(NC_DOUBLE,&var_out->val);
+
+      // cast all arguments
+      for(idx=0;idx<in_nbr_args;idx++)
+        (void)cast_void_nctype(NC_DOUBLE,&var_arr[idx]->val);
+
+      v_sz=var_arr[0]->sz;
+      m_sz=var_arr[1]->sz; 
+      x_sz=var_arr[2]->sz;
+      y_sz=var_arr[3]->sz;
+      
+    
+      assert(v_sz==x_sz*y_sz); 
+      // check mask size  
+      assert(m_sz % v_sz ==0l);    
+     
+      dpo=var_out->val.dp;
+      dpi=var_arr[0]->val.dp;     
+ 
+ 
+      // grab missing value;  
+      if( var_arr[0]->has_mss_val ){
+	cast_void_nctype(NC_DOUBLE,&var_arr[0]->mss_val);
+	mss_dbl=*var_arr[0]->mss_val.dp;      
+	cast_nctype_void(NC_DOUBLE,&var_arr[0]->mss_val);       
+      }   
+
+      for(mdx=0;mdx < m_sz/v_sz ; mdx++){  
+        long mcnt=0l;
+        long vmcnt=0l;        
+	ostringstream os; 
+        dpm=var_arr[1]->val.dp+mdx*v_sz;
+
+        // copy new values into input pointer !!
+        // dont want dpi and dpo the same
+        if(mdx >0)
+          memcpy(dpi,dpo, v_sz* sizeof(double));    
+
+	for(ldx=0; ldx<v_sz ; ldx++){
+	  //check mask  
+	  // if(dpm[ldx]==1.0 && dpi[ldx]==mss_dbl){  
+	  // if( dpi[ldx]==mss_dbl) dpo[ldx]=0.0; 
+	  // if(dpm[ldx]==1.0 && dpi[ldx]==mss_dbl){     
+	  if(dpi[ldx]==mss_dbl && dpm[ldx]==1.0){  
+	    int cnt=0;  
+	    int jdx;  
+	    long iX=ldx/y_sz;
+	    long iY= ldx -iX*y_sz;
+	    double sum=0.0;
+	    double Q[4]={mss_dbl,mss_dbl,mss_dbl,mss_dbl};
+	    mcnt++;
+       
+	    if(iY >0 )    Q[0]=dpi[ldx-1];
+	    if(iY+1<x_sz) Q[1]=dpi[ldx+1]; 
+	    if(iX>0 )     Q[2]=dpi[ldx-y_sz];
+	    if(iX+1 < x_sz) Q[3]=dpi[ldx+y_sz];   
+           
+	    for(jdx=0 ; jdx<4 ;jdx++){
+	      if(Q[jdx] !=mss_dbl) {
+		sum+=Q[jdx];              
+		cnt++; 
+	      }
+	    }
+	    if(cnt){ 
+	      dpo[ldx]=sum/cnt;
+	      vmcnt++;  
+	    } 
+
+	  } // end if
+
+	} // end for ldx 
+
+        if(nco_dbg_lvl_get() >= 2){ 
+	      os<< sfnm<<" mask num="<<mdx<<" : num missing="<<mcnt<<+" num processed="<<vmcnt;
+              dbg_prn(fnc_nm,os.str());
+	} 
+         
+      } // end for mdx
+    } 
+
+    // cast everything back to void,and free up
+    for(idx=0;idx<in_nbr_args;idx++){
+      (void)cast_nctype_void(NC_DOUBLE,&var_arr[idx]->val);
+      nco_var_free(var_arr[idx]);
+    } 
+
+    (void)cast_nctype_void(NC_DOUBLE,&var_out->val);    
+    // change back to input type  
+    var_out=nco_var_cnf_typ(in_typ,var_out);
+    
+
+    return var_out;
+
+
+  }// end  
+
+/*****************************************************************************************************************/
+/* ncap2 functions and methods */
+
+/* To avoid confusion when I say FUNC (uppercase) I mean a custom ncap2 function.
+   When I say METHOD (uppercase) I mean a custom ncap2 method 
+   When I say method (lowercase) I mean a C++ class method
+   When I say function(lowercase) I mean a C/C++ function
+
+   When I refer to an ncap2  FUNC. I also mean a METHOD 
+   most of the FUNCS can be called as  METHODS  e.g  
  
+  sum=three_dmn_var_dbl.total($time) or sum=total(three_dmn_var_dbl,$time)
+ 
+  So for a method the "first argument" is the evaluation of everything prefixing the DOT.
+  The nice thing about METHODS is that you can daisy chain them together.  
+  e.g promote to type double - find avg - then convert back to short()
+
+  three_avg=three_dmn_var_sht.double().avg($time).short();
+  
+  file: ncap2.cc
+  The vector fmc_vtr in ncap2.cc contains all the method pointers that will deal with all the FUNC's 
+  Each element in this vector has the following properties
+
+  string fnm() -- The name of the FUNC - as used in the script.
+                  It is defined in one place only  - the constructor of the C++ class 
+                  that will deal with the FUNC  
+
+  vtl_cls vfnc -- This points to the  C++ method that will deal with the FUNC.
+                  As you look at all the classes in fmc_all_cls.cc you will see that all
+                  the  methods thet deal with a FUNC share the same argument signature
+                  More on this later.   
+
+  int fdx()   --  This is the index (with respect to a particular class) of the FUNC called.
+                  Some classes deal with a whole family of FUNCS others only one or two
+                  The index's are defined in an enum. 
+                  so for (basic)-    bsc_cls we have:   enum {PSIZE, PTYPE, PNDIMS, PEXISTS };
+                  and for(aggregate) agg_cls we have:   enum {PAVG ,PAVGSQR ,PMAX ,PMIN ,PRMS, PRMSSDN, PSQRAVG, PTTL} 
+
+  This vector 'fmc_vtr' is used by the lexer to identify FUNC names and to distingush them from var names 
+  so for example:
+     total = three_dmn_var_dbl.total($lat,$lon);   
+  Is completely valid - The lexer sees that the lvalue total has no trailing '(' and so 
+  identifies it as a variable. If I subsequently said:
+     total0= total(0);       
+  The lexer  would get confused. It would recognize 'total' on the RHS as a FUNC call rather than a hyperslab.
+   
+  After being populated fmc_vtr is then passed by reference to the object prs_arg. This object provides the 
+  Parser with the necessary detail to enable IO to netcdf files. It also maintains a lookup table for vars/ atts 
+  and memory vars. The most important properties listed are below
+
+  NcapVector<dmn_sct*> &dmn_in_vtr;        //Vector of dimensions in input file nb doesn't change
+  NcapVector<dmn_sct*> &dmn_out_vtr;       //Vector of dimensions in output file file
+  std::vector<fmc_cls> &fmc_vtr;           //List of functions/methods nb doesn't change 
+  NcapVarVector &var_vtr;                  // list of attributes & variables
+  NcapVarVector &int_vtr;                  // stores vars/atts in FIRST PARSE
+  bool ntl_scn;                            // [flg] Initial scan of script 
+ 
+  The most important methods are the following:
+  
+  // initialize var_sct with the variable snm
+  var_sct *ncap_var_init(const std::string &snm, bool bfll);        
+ // write var to disc
+ int ncap_var_write (var_sct *var, bool bram);           
+
+ 
+ Perhaps the most important thing to grasp is that given a list of statements TWO PARSES of the script (syntax tree) are made.
+ In the first parse the vars are defined on disc. In the second parse the vars are populated. 
+ This greatly increases peformance. 
+
+ The Grammer file ncoGrammer.g file is composed of three sections
+ ncoLexer  -  returns tokens/ deals with include files
+ ncoParser -  The main grammer - creates a syntax tree
+ ncoTree   -  Reads a syntax tree
+
+ Hopefully the only thing you'll deal with here is the ncoTree methods
+
+/*****************************************************************************************************************/
+
+/*
+  Lets take a look at mth2_cls(). 
+  The enum in the include file is: 
+    enum {PPOW,PATAN2,PCONVERT};
+  The constructor associates the pointer(this) and  FUNC script name  with the enum index:  
+   fmc_vtr.push_back( fmc_cls("pow",this,(int)PPOW));
+   fmc_vtr.push_back( fmc_cls("atan2",this,(int)PATAN2));
+   fmc_vtr.push_back( fmc_cls("convert",this,(int)PCONVERT));
+
+ The method that does the heavy lifting is:
+    var_sct *mth2_cls::fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker)
+  
+ It takes two fragments of the the parse tree ( expr, fargs) and returns a var_sct. 
+ 
+ If expr is null then it is A FUNC else its a METHOD
+   
+  
+
+*/
diff --git a/src/nco++/fmc_all_cls.hh b/src/nco++/fmc_all_cls.hh
index 1cca591..72ec9ea 100644
--- a/src/nco++/fmc_all_cls.hh
+++ b/src/nco++/fmc_all_cls.hh
@@ -1,6 +1,6 @@
 /* Purpose: netCDF arithmetic processor class methods */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,6 +18,7 @@
 #include "ncoTree.hpp"
 #include "ncap2_utl.hh"
 #include "vtl_cls.hh"
+#include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
 
 #include "sym_cls.hh" // holder for float/double math function pointers
 #include "map_srt_tmp.hh" // template -used in srt_cls
@@ -65,9 +66,6 @@
   extern float truncf(float);
 #endif
 
-
-
-
 //Conversion Functions **************************************/
 class cnv_cls: public vtl_cls {
 private:
@@ -75,10 +73,8 @@ private:
 public:
     cnv_cls(bool flg_dbg);
     var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
-
 //Aggregate Functions /***************************************/
 class agg_cls: public vtl_cls {
 private:
@@ -90,35 +86,27 @@ public:
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
 };
 
-
 //Utility Functions /****************************************/
 class utl_cls: public vtl_cls {
 private:
-   enum {SET_MISS,CH_MISS,DEL_MISS,GET_MISS,RAM_WRITE,RAM_DELETE};
+  enum {SET_MISS,CH_MISS,DEL_MISS,GET_MISS,NUM_MISS,HAS_MISS, RAM_WRITE,RAM_DELETE};
    bool _flg_dbg;
 public:
   utl_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
+  var_sct *is_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker);  
 };
 
-
-
 //Basic Functions /****************************************/
 class bsc_cls: public vtl_cls {
 private:
-   enum {PSIZE,PTYPE,PNDIMS };
+  enum {PSIZE,PTYPE,PNDIMS,PEXISTS };
    bool _flg_dbg;
 public:
   bsc_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
-
-
-
-
 //Maths Functions /****************************************/
 class mth_cls: public vtl_cls {
 private:
@@ -129,7 +117,6 @@ public:
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
 };
 
-
 //Maths2 - Maths functions that take 2 args /*********/
 class mth2_cls: public vtl_cls {
 private:
@@ -140,7 +127,6 @@ public:
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
 };
 
-
 //PDQ Functions /****************************************/
 class pdq_cls: public vtl_cls {
 private: 
@@ -149,11 +135,8 @@ private:
 public:
   pdq_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
-
-
 //Mask Function /****************************************/
 class msk_cls: public vtl_cls {
 private:
@@ -162,7 +145,6 @@ private:
 public:
   msk_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
 //Pack Function /****************************************/
@@ -173,25 +155,21 @@ private:
 public:
   pck_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
-
-
 //Sort Function /****************************************/
 class srt_cls: public vtl_cls {
 private:
-   enum {PSORT,PDSORT };
+  enum {PASORT,PDSORT,PREMAP,PUNMAP,PIMAP };
    bool _flg_dbg;
 public:
   srt_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
   var_sct *srt_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker);  
   var_sct *mst_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker);  
-
+  var_sct *imap_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker);  
 };
 
-
 //Unary Function /****************************************/
 class unr_cls: public vtl_cls {
 private:
@@ -200,12 +178,8 @@ private:
 public:
   unr_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
-
-
-
 //Array Function /****************************************/
 class arr_cls: public vtl_cls {
 private:
@@ -214,12 +188,8 @@ private:
 public:
   arr_cls(bool flg_dbg);
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
-
 };
 
-
-
-
 //Bilinear  Interpolation Functions /****************************************/
 class bil_cls: public vtl_cls {
 private:
@@ -230,12 +200,27 @@ public:
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
   void clc_bil_fnc(var_sct *v_xin, var_sct *v_yin, var_sct *v_din, var_sct *v_xout, var_sct *v_yout, var_sct *v_dout,bool bwrp,std::string sfnm);
   double clc_lin_ipl(double x1,double x2, double x, double Q0,double Q1);
-
 };
 
+// Co-ord class /*********************************************************/
+class cod_cls: public vtl_cls {
+private:
+   enum {PCOORD };
+   bool _flg_dbg;
+public:
+  cod_cls(bool flg_dbg);
+  var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
+};
 
+//Miscellaneous Function /****************************************/
+class misc_cls: public vtl_cls {
+private:
+  enum {PMISC1, PMISC2, PMISC3 };
+   bool _flg_dbg;
+public:
+  misc_cls(bool flg_dbg);
+  var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
 
-
-
+};
 
 #endif // FMC_ALL_CLS_HH
diff --git a/src/nco++/fmc_cls.hh b/src/nco++/fmc_cls.hh
index 34e7ca8..157cb2b 100644
--- a/src/nco++/fmc_cls.hh
+++ b/src/nco++/fmc_cls.hh
@@ -1,6 +1,6 @@
 /* Purpose: netCDF arithmetic processor class methods */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco++/fmc_gsl_cls.cc b/src/nco++/fmc_gsl_cls.cc
index 8272b49..9ee2ea0 100644
--- a/src/nco++/fmc_gsl_cls.cc
+++ b/src/nco++/fmc_gsl_cls.cc
@@ -1,12 +1,13 @@
-/* $Header: /cvsroot/nco/nco/src/nco++/fmc_gsl_cls.cc,v 1.55 2012/01/01 20:51:54 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/fmc_gsl_cls.cc,v 1.67 2013/11/02 01:14:16 pvicente Exp $ */
 
 /* Purpose: netCDF arithmetic processor class methods for GSL */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "fmc_gsl_cls.hh"
+#include "nco_gsl.h"
 
 // GSL Functions
 #ifdef ENABLE_GSL
@@ -4350,6 +4351,8 @@ var_sct *gsl_spl_cls::spl_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_c
     var_sct *var_x;  
     var_sct *var_y;
     var_sct *var_ram;
+    std::vector<double> vtr_x;
+    std::vector<double> vtr_y;
 
     
     NcapVar *Nvar;       
@@ -4412,10 +4415,57 @@ var_sct *gsl_spl_cls::spl_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_c
 
       var_x=nco_var_cnf_typ(NC_DOUBLE,var_x);    
       var_y=nco_var_cnf_typ(NC_DOUBLE,var_y);    
-
       // make variables conform 
       (void)ncap_var_att_cnf(var_y,var_x);
 
+      // missing values 
+      if(var_x->has_mss_val || var_y->has_mss_val){
+        long idx;  
+        long sz;
+        // a lazy arsed hack - set defaults to double fill value  
+	double mss_dbl_y=NC_MIN_DOUBLE; 
+	double mss_dbl_x=NC_MIN_DOUBLE;
+        
+        if(var_x->has_mss_val){   
+	 cast_void_nctype(NC_DOUBLE,&var_x->mss_val);
+         mss_dbl_x=var_x->mss_val.dp[0];      
+         cast_nctype_void(NC_DOUBLE,&var_x->mss_val);      
+        }
+        
+        if(var_y->has_mss_val){  
+	 cast_void_nctype(NC_DOUBLE,&var_y->mss_val);
+         mss_dbl_y=var_y->mss_val.dp[0];      
+         cast_nctype_void(NC_DOUBLE,&var_y->mss_val);      
+        } 
+         // nb dont check first or last value for missing 
+         // so at the very least - vectors contain 2 points 
+        vtr_x.push_back(var_x->val.dp[0]);
+        vtr_y.push_back(var_y->val.dp[0]);
+
+         sz=var_y->sz-1; 
+         for(idx=1; idx<sz;idx++)
+	   if(var_x->val.dp[idx]!=mss_dbl_x && var_y->val.dp[idx]!=mss_dbl_y)
+             { vtr_x.push_back(var_x->val.dp[idx]);
+               vtr_y.push_back(var_y->val.dp[idx]);
+             }
+
+        vtr_x.push_back(var_x->val.dp[sz]);
+        vtr_y.push_back(var_y->val.dp[sz]);   
+
+
+      }else{
+
+	vtr_x.insert( vtr_x.begin(), var_x->val.dp,var_x->val.dp+var_x->sz);    
+	vtr_y.insert( vtr_y.begin(), var_y->val.dp,var_y->val.dp+var_y->sz);    
+
+      }
+
+      // done with var_x & var_y
+      (void)cast_nctype_void(NC_DOUBLE,&var_x->val);   
+      (void)cast_nctype_void(NC_DOUBLE,&var_y->val); 
+      nco_var_free(var_x);
+      nco_var_free(var_y);            
+ 
    
       Nvar=prs_arg->var_vtr.find(var_nm);  
       if(!Nvar){
@@ -4429,18 +4479,16 @@ var_sct *gsl_spl_cls::spl_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_c
       Nvar->flg_spl=true;      
       Nvar->flg_stt=2;
 
-      spline=gsl_spline_alloc(ts,var_x->sz);  
-      gsl_spline_init(spline,var_x->val.dp,var_y->val.dp,var_x->sz);
+      spline=gsl_spline_alloc(ts,vtr_x.size());  
+      //gsl_spline_init(spline,var_x->val.dp,var_y->val.dp,var_x->sz);
+      gsl_spline_init(spline,&vtr_x[0],&vtr_y[0],vtr_x.size() );
 
       (void)cast_void_nctype(NC_CHAR,&Nvar->var->val); 
       Nvar->var->val.cp=(char*)spline;  
       (void)cast_nctype_void(NC_CHAR,&Nvar->var->val); 
 
 
-      (void)cast_nctype_void(NC_DOUBLE,&var_x->val);   
-      (void)cast_nctype_void(NC_DOUBLE,&var_y->val); 
-      nco_var_free(var_x);
-      nco_var_free(var_y);
+
 
 
       // return true
@@ -4978,7 +5026,16 @@ var_sct *gsl_fit_cls::fit_est_fnd(bool &is_mtd, std::vector<RefAST> &vtr_args, f
 
 } // end gsl_fit_cls::fit_est_fnd 
 
+int gsl_fit_cls::rm_miss_arr(
+                double *x_in, long long x_stride,
+                double *y_in, long long y_stride, 
+                double *w_in, long long w_stride,
+                long long n)
+{
+
 
+  return 0;
+}
 
 
 #else // !ENABLE_GSL
@@ -4989,3 +5046,256 @@ int gsl_dmm_stb(void);
 int gsl_dmm_stb(void){return 1;}
  
 #endif // !ENABLE_GSL
+
+#ifdef ENABLE_GSL
+// nco_gsl 
+nco_gsl_cls::nco_gsl_cls(bool  flg_dbg)
+{
+  //Populate only on first constructor call
+  if(fmc_vtr.empty())
+  {
+    fmc_vtr.push_back( fmc_cls("nco_gsl_fit_linear",this,(int)NCO_GSL_FUNC1));
+  }
+}
+
+var_sct *nco_gsl_cls::fnd(RefAST expr,RefAST fargs,fmc_cls &fmc_obj,ncoTree &walker)
+{
+  const std::string fnc_nm("nco_gsl_cls::fnd");
+  bool is_mtd;
+  int fdx=fmc_obj.fdx();   //index
+  RefAST tr;    
+  std::vector<RefAST> vtr_args; 
+
+  // Put args into vector 
+  if(expr)
+  {
+    vtr_args.push_back(expr);
+  }
+
+  if(tr=fargs->getFirstChild()) 
+  {
+    do  
+    vtr_args.push_back(tr);
+    while(tr=tr->getNextSibling());    
+  }
+
+  is_mtd=(expr ? true: false);
+
+  switch(fdx)
+  {
+  case NCO_GSL_FUNC1:
+    return fit_fnd(is_mtd,vtr_args,fmc_obj,walker);  
+    break;
+  case NCO_GSL_FUNC2:
+    {
+      // function pointer
+      var_sct* (*hnd_fnc)(HANDLE_ARGS);
+      hnd_fnc=gpr_vtr[fdx]._hnd_fnc;
+      return hnd_fnc(is_mtd,vtr_args,gpr_vtr[fdx],walker);
+    }
+    break;
+  default:
+    assert(0);
+    break;
+  }
+} // end nco_gsl_cls::fnd 
+
+
+var_sct *nco_gsl_cls::fit_fnd(bool &is_mtd,std::vector<RefAST> &vtr_args,fmc_cls &fmc_obj,ncoTree &walker)
+{
+  const std::string fnc_nm("nco_gsl_cls::fit_fnd");
+  int idx;
+  int fdx=fmc_obj.fdx();   //index
+  int nbr_args;    // actual nunber of args
+  int in_nbr_args; // target number of args
+  int in_val_nbr_args; // number of expressions
+  int ret; 
+  prs_cls* prs_arg=walker.prs_arg;
+  std::string sfnm =fmc_obj.fnm(); //method name
+  std::string susg;
+  std::string serr;    
+  vtl_typ lcl_typ;
+  var_sct *var_in[13];  
+  nbr_args=vtr_args.size();  
+
+  switch(fdx)
+  {
+  case NCO_GSL_FUNC1:
+    in_nbr_args=11;
+    in_val_nbr_args=5;
+    susg="usage: status="+sfnm+"(data_x,stride_x,data_y,stride_y,n,&co,&c1,&cov00,&cov01,&cov11,&sumsq)";
+    break;   
+  default:
+    assert(0);
+    break;
+  }   
+
+  if(nbr_args<in_nbr_args)
+  {   
+    serr="function requires "+ nbr2sng(in_nbr_args)+" arguments. You have only supplied "+nbr2sng(nbr_args)+ " arguments\n"; 
+    err_prn(sfnm,serr+susg);
+  }
+
+  for(idx=0;idx<in_nbr_args;idx++)
+  {
+    lcl_typ=expr_typ(vtr_args[idx]);  
+
+    // deal with regular arguments 
+    if(idx<in_val_nbr_args)
+    { 
+      if(lcl_typ == VCALL_REF || lcl_typ == VDIM )
+      {
+        serr="function requires that " + nbr2sng(idx)+ " argument be a variable name or an expression";
+        err_prn(sfnm,serr+susg);
+      }
+      var_in[idx] = walker.out(vtr_args[idx]);        
+    }
+    else // deal with call-by-ref variables      
+    {
+      var_sct *var_tmp;
+      std::string var_nm;
+      NcapVar  *Nvar;
+      var_nm=vtr_args[idx]->getFirstChild()->getText();
+      if(lcl_typ != VCALL_REF)
+      {
+        serr="function requires that " + nbr2sng(idx)+ " argument be a call by reference variable";
+        err_prn(sfnm,serr+susg);
+      }
+      // initial scan
+      if(prs_arg->ntl_scn)
+      {
+        if(prs_arg->ncap_var_init_chk(var_nm))
+          var_tmp=prs_arg->ncap_var_init(var_nm,false);  
+        else
+          var_tmp=ncap_sclr_var_mk(var_nm,NC_DOUBLE,false);
+      }
+      else // final scan
+      {
+        // we have a problem here - its possible that in the inital scan
+        // that some of the call-by-ref variables have been defined but 
+        // not populated. Cannot use ncap_var_init() as this will attempt
+        // to read var from input as it is unpopulated 
+        Nvar=prs_arg->var_vtr.find(var_nm);
+        if(Nvar && Nvar->flg_stt==1)
+        {
+          var_tmp=Nvar->cpyVarNoData();
+          // malloc space for var
+          var_tmp->val.vp=nco_malloc(var_tmp->sz * nco_typ_lng(var_tmp->type));   
+        }    
+        else if(prs_arg->ncap_var_init_chk(var_nm))
+        {
+          var_tmp=prs_arg->ncap_var_init(var_nm,true);
+        }
+        else   
+        {
+          var_tmp=ncap_sclr_var_mk(var_nm,NC_DOUBLE,1.0);
+        } //end if/else
+      } //end final scan
+      // convert to type double
+      if(!var_tmp->undefined)
+      {
+        var_tmp=nco_var_cnf_typ(NC_DOUBLE,var_tmp);
+      }
+      var_in[idx]=var_tmp;
+    } //end call-by-ref vars
+  } // end for  
+
+  // inital scan --free up  vars and return 
+  if(prs_arg->ntl_scn)
+  {
+    for(idx=0;idx<in_nbr_args;idx++)
+    {
+      if(idx<in_val_nbr_args)
+      {
+        var_in[idx]=nco_var_free(var_in[idx]);
+      }
+      else
+      {
+        // write newly defined call by ref args
+        // nb this call frees up var_in[idx] 
+        prs_arg->ncap_var_write(var_in[idx],false);
+      }
+    }//end for
+    return ncap_sclr_var_mk("~nco_gsl_cls",NC_INT,false);   
+  }//end if/inital scan
+
+  // big switch 
+  switch(fdx)
+  {
+  case NCO_GSL_FUNC1:
+    // recall aguments in order in var_in
+    /* 
+    0  x_in
+    1  x stride
+    2  y_in
+    3  y stride
+    4  n
+    5  c0
+    6  c1
+    7  c00 
+    8  c01
+    9  c11
+    10  sumsq       
+    */
+    // convert x,y to type double
+    var_in[0]=nco_var_cnf_typ(NC_DOUBLE,var_in[0]);
+    var_in[2]=nco_var_cnf_typ(NC_DOUBLE,var_in[2]);
+
+    // make x,y  conform 
+    (void)ncap_var_att_cnf(var_in[2],var_in[0]);
+
+    // convert strides to NC_UINT64
+    var_in[1]=nco_var_cnf_typ((nc_type)NC_UINT64,var_in[1]);   
+    var_in[3]=nco_var_cnf_typ((nc_type)NC_UINT64,var_in[3]);   
+    var_in[4]=nco_var_cnf_typ((nc_type)NC_UINT64,var_in[4]);   
+
+    //cast pointers from void 
+    for(idx=0 ;idx<in_nbr_args;idx++)
+    {
+      (void)cast_void_nctype(var_in[idx]->type,&var_in[idx]->val);
+    }
+
+    //get fill value from "y_in" only: assumes type convertion to "double"
+    if(nco_dbg_lvl_get() == nco_dbg_old)
+    {
+      if(var_in[2]->mss_val.dp)
+      (void)fprintf(stdout,"fill value for %s=%f\n",var_in[2]->nm,var_in[2]->mss_val.dp[0]);
+    }
+
+    // make the call -- 
+    ret=nco_gsl_fit_linear(var_in[0]->val.dp,
+      var_in[1]->val.ui64p[0],
+      var_in[2]->val.dp,
+      var_in[3]->val.ui64p[0],     
+      var_in[4]->val.ui64p[0],
+      var_in[5]->val.dp,
+      var_in[6]->val.dp,
+      var_in[7]->val.dp,
+      var_in[8]->val.dp,
+      var_in[9]->val.dp,
+      var_in[10]->val.dp,
+      var_in[2]->mss_val.dp); //fill value "double" for variable "y_in" (var_in[2]); can be NULL
+
+    assert(ret==NCO_GSL_SUCCESS);
+
+    break; //NCO_GSL_FUNC1 
+  default:
+    assert(0);
+  } // end big switch   
+
+  for(idx=0 ; idx< in_nbr_args ;idx++)
+  {
+    //cast pointers to void
+    (void)cast_nctype_void(var_in[idx]->type,&var_in[idx]->val);
+    if(idx<in_val_nbr_args)
+      nco_var_free(var_in[idx]);
+    else
+      // nb this write call also frees up pointer  
+      prs_arg->ncap_var_write(var_in[idx],false);
+  }
+  // return status flag
+  return ncap_sclr_var_mk("~nco_gsl_cls",(nco_int)ret);   
+} // end nco_gsl_cls::fit_fnd 
+#endif // !ENABLE_GSL
+
+
diff --git a/src/nco++/fmc_gsl_cls.hh b/src/nco++/fmc_gsl_cls.hh
index 4b9ae96..9e3b447 100644
--- a/src/nco++/fmc_gsl_cls.hh
+++ b/src/nco++/fmc_gsl_cls.hh
@@ -1,6 +1,6 @@
 /* Purpose: netCDF arithmetic processor class methods */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -40,7 +40,11 @@
 #include "vtl_cls.hh"
 
 #ifndef NCO_GSL_MINOR_VERSION
+#ifdef _MSC_VER
+# define NCO_GSL_MINOR_VERSION 7
+#else
 # define NCO_GSL_MINOR_VERSION 12
+#endif // _MSC_VER
 #endif // NCO_GSL_MINOR_VERSION
 
 
@@ -437,14 +441,23 @@ public:
   var_sct *fnd(RefAST expr, RefAST fargs,fmc_cls &fmc_obj, ncoTree &walker);
   var_sct *fit_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker);  
   var_sct *fit_est_fnd(bool &is_mtd, std::vector<RefAST> &args_vtr, fmc_cls &fmc_obj, ncoTree &walker);  
+  int rm_miss_arr(double *x_in,long long x_stride,double *y_in, long long y_stride, double *w_in,long long w_stride,long long n);
 };
 
+#endif // !ENABLE_GSL
 
-
-
-
-
-
+#ifdef ENABLE_GSL
+class nco_gsl_cls: public vtl_cls 
+{
+private:
+  enum {NCO_GSL_FUNC1,NCO_GSL_FUNC2};
+  bool _flg_dbg;
+  std::vector<gpr_cls> gpr_vtr;
+public:
+  nco_gsl_cls(bool flg_dbg);
+  var_sct *fnd(RefAST expr,RefAST fargs,fmc_cls &fmc_obj,ncoTree &walker);
+  var_sct *fit_fnd(bool &is_mtd,std::vector<RefAST> &args_vtr,fmc_cls &fmc_obj,ncoTree &walker);   
+};
 #endif // !ENABLE_GSL
 
 #endif // FMC_GSL_CLS_HH
diff --git a/src/nco++/libnco++.hh b/src/nco++/libnco++.hh
index eff531d..3fc52bb 100644
--- a/src/nco++/libnco++.hh
+++ b/src/nco++/libnco++.hh
@@ -1,14 +1,14 @@
-// $Header: /cvsroot/nco/nco/src/nco++/libnco++.hh,v 1.17 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco++/libnco++.hh,v 1.20 2013/10/22 03:03:50 zender Exp $ 
 
 // Purpose: Prototypes, typedefs, and global variables for libnco++
 
-/* Copyright (C) 2006--2012 Charlie Zender
+/* Copyright (C) 2006--2013 Charlie Zender
    You may copy, distribute, and/or modify this software under the terms of the GNU General Public License (GPL) Version 2
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 /* libnco++.hh headers depend on system headers and libnco.a headers
    Thus libnco++.a requires libnco.a to function correctly
-   User must also supply prg_nm_get() and dbg_lvl_get() */
+   User must also supply nco_prg_nm_get() and nco_dbg_lvl_get() */
 
 // Usage:
 // #include <libnco++.hh> // C++ interface to netCDF C library
@@ -20,6 +20,7 @@
 #include "sym_cls.hh"
 #include "fmc_cls.hh"
 #include "fmc_all_cls.hh"
+#include "nco_gsl.h"
 #ifdef ENABLE_GSL
 # include "fmc_gsl_cls.hh"
 #endif // !ENABLE_GSL
diff --git a/src/nco++/map_srt_tmp.hh b/src/nco++/map_srt_tmp.hh
index 3ee9e40..ff26907 100644
--- a/src/nco++/map_srt_tmp.hh
+++ b/src/nco++/map_srt_tmp.hh
@@ -9,15 +9,21 @@ class map_srt{
      long _imp;
      T _V;
 
-     //Use for sorting
+     // Use for sorting ascending
      bool operator<(const map_srt &right)const {
       return ( _V < right._V);
-   } 
+    } 
+
+    // sort descending -a hack - function shouldn't be static - but  hey it works
+    inline static bool greater(const  map_srt &x, const map_srt &y ) {
+      return (x._V > y._V);
+    } 
+
 };
 
 
 template<typename T> 
-void ncap_sort_and_map(var_sct *var, var_sct *var_mp)
+void ncap_sort_and_map(var_sct *var, var_sct *var_mp, bool bd)
 {
             
   long idx;  
@@ -35,7 +41,16 @@ void ncap_sort_and_map(var_sct *var, var_sct *var_mp)
   }
             
   // sort array
-  std::sort(mp,mp+sz);  
+  if(bd)
+    std::sort(mp,mp+sz);  // increasing
+  else 
+    std:sort(mp,mp+sz,map_srt<T>::greater);  // decreasing
+
+  //The above line may not work with some compilers if so replace with the following
+  // { std::sort(mp,mp+sz); std::reverse(mp,mp+sz);}       
+  
+
+
 
   // Currently only two types for the mapping
   if(var_mp->type==NC_INT){
@@ -56,13 +71,11 @@ void ncap_sort_and_map(var_sct *var, var_sct *var_mp)
     for(idx=0 ; idx<sz; idx++){
       // nb reverse the map
       var_mp->val.ui64p[ mp[idx]._imp] =idx;
-      tp[idx]=mp[idx]._V;
+              tp[idx]=mp[idx]._V;
     }
     (void)cast_nctype_void((nc_type)NC_UINT64,&var_mp->val); 
   }
 
-
-            
   // delete array
   delete []mp;
 
diff --git a/src/nco++/ncap2.cc b/src/nco++/ncap2.cc
index 67d9154..315ef52 100644
--- a/src/nco++/ncap2.cc
+++ b/src/nco++/ncap2.cc
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco++/ncap2.cc,v 1.124 2012/01/01 20:51:54 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncap2.cc,v 1.179 2013/11/06 17:51:13 zender Exp $ */
 
 /* ncap2 -- netCDF arithmetic processor */
 
 /* Purpose: Compute user-defined derived fields using forward algebraic notation applied to netCDF files */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -20,7 +20,7 @@
    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.
-   
+
    The original author of this software, Charlie Zender, seeks to improve
    it with your suggestions, contributions, bug-reports, and patches.
    Please contact the NCO project at http://nco.sf.net or write to
@@ -31,8 +31,8 @@
 
 /* Usage:
    ncap2 -O -D 1 -S ~/nco/data/ncap2.in ~/nco/data/in.nc ~/foo.nc
-   ncap2 -O -D 1 -v -S ~/nco/data/ncap2_tst.nco ~/nco/data/in.nc ~/foo.nc
-   ncap2 -O -D 1 -s two=one+two ~/nco/data/in.nc ~/foo.nc
+   ncap2 -O -D 1 -v -S ~/nco/data/ncap2_tst.nco  ~/nco/data/in.nc ~/foo.nc
+   ncap2 -O -D 1 -v -s two=one+two ~/nco/data/in.nc ~/foo.nc
    ncap2 -O -v -s 'foo=exp(0.61)' ~/nco/data/in.nc ~/foo.nc;ncks -C ~/foo.nc
    ncap2 -O -v -s 'defdim("dmn_tmp")=5;foo[$dmn_tmp]={0,2,4,6,8};foo2=one_dmn_rec_var(foo);print(foo);print(foo2);' ~/nco/data/in.nc ~/foo.nc;
    ncap2 -O -v -s 'foo=0*three_dmn_var_dbl;where(three_dmn_var_dbl>30){foo=three_dmn_var_dbl;}elsewhere{foo=three_dmn_var_dbl at _FillValue;};foo_avg=foo.avg($time);print(foo_avg);' ~/nco/data/in.nc ~/foo.nc
@@ -45,16 +45,19 @@
 
 // Standard C++ headers
 #include <string>
+#include <iterator> /* for inserter */
 
 // Standard C headers
 #include <assert.h>  /* assert() debugging macro */
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 
 /* GNU getopt() is independent system header on FREEBSD, LINUX, LINUXALPHA, LINUXAMD, LINUXARM, WIN32
    AT&T getopt() is in unistd.h or stdlib.h on AIX, CRAY, NECSX, SUNMP, SUN4SOL2
@@ -73,8 +76,6 @@
 #include <gsl/gsl_rng.h>
 
 #endif // !ENABLE_GSL
-#include <netcdf.h> /* netCDF definitions and C library */
-#include "nco_netcdf.h"  /* NCO wrappers for libnetcdf.a */
 
 /* Personal headers */
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
@@ -98,28 +99,30 @@ int
 main(int argc,char **argv)
 {
   const char fnc_nm[]="main"; 
-  FILE *yyin; /* file handle used to check file existance */
+  FILE *yyin; /* File handle used to check file existance */
   int parse_antlr(std::vector<prs_cls> &prs_vtr ,char*,char*);
   
   /* fxm TODO nco652 */
   double rnd_nbr(double);
   
+  nco_bool ATT_INHERIT=True;          
+  nco_bool ATT_PROPAGATE=True;        
   nco_bool CNV_CCM_CCSM_CF;
-  nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool OUTPUT_TO_NEW_NETCDF_FILE=False;
+  nco_bool FL_OUT_NEW=False;
   nco_bool PRN_FNC_TBL=False; /* Option f */  
   nco_bool PROCESS_ALL_VARS=True; /* Option v */  
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool ATT_PROPAGATE=True;        
-  nco_bool ATT_INHERIT=True;          
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
   
   char **fl_lst_abb=NULL_CEWI; /* Option n */
@@ -137,23 +140,22 @@ main(int argc,char **argv)
   char *fl_spt_usr=NULL_CEWI; /* Option s */
   char *lmt_arg[NC_MAX_DIMS];
   char *opt_crr=NULL_CEWI; /* [sng] String representation of current long-option name */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 #define NCAP_SPT_NBR_MAX 100
   char *spt_arg[NCAP_SPT_NBR_MAX]; /* fxm: Arbitrary size, should be dynamic */
   char *spt_arg_cat=NULL_CEWI; /* [sng] User-specified script */
   
-  const char * const CVS_Id="$Id: ncap2.cc,v 1.124 2012/01/01 20:51:54 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.124 $";
+  const char * const CVS_Id="$Id: ncap2.cc,v 1.179 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.179 $";
   const char * const att_nm_tmp="eulaVlliF_"; /* For netCDF4 name hack */
-  const char * const opt_sht_lst="346ACcD:FfhL:l:n:Oo:p:Rrs:S:t:vx-:"; /* [sng] Single letter command line options */
+  const char * const opt_sht_lst="3467ACcD:FfhL:l:n:Oo:p:Rrs:S:t:vx-:"; /* [sng] Single letter command line options */
   
   cnk_sct **cnk=NULL_CEWI;
 
   dmn_sct **dmn_in=NULL_CEWI;  /* [lst] Dimensions in input file */
   dmn_sct *dmn_new;
   dmn_sct *dmn_item;
-  
-  // Template lists
+    // Template lists
   NcapVector<dmn_sct*> dmn_in_vtr;  
   NcapVector<dmn_sct*> dmn_out_vtr;  
   
@@ -185,6 +187,7 @@ main(int argc,char **argv)
   int idx;
   int jdx;
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_ass=int_CEWI;/* Number of dimensions in temporary list */
   int nbr_dmn_in=int_CEWI; /* Number of dimensions in dim_in */
   int nbr_lst_a=0; /* size of xtr_lst_a */
@@ -192,7 +195,7 @@ main(int argc,char **argv)
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;/* number of vars in a file */
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr will not otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr will not otherwise be set for -c with no -v */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
@@ -205,7 +208,9 @@ main(int argc,char **argv)
   nm_id_sct *xtr_lst=NULL_CEWI; /* Non-processed variables to copy to OUTPUT */
   nm_id_sct *xtr_lst_a=NULL_CEWI; /* Initialize to ALL variables in OUTPUT file */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   size_t sng_lng;
   size_t spt_arg_lng=size_t_CEWI;
 
@@ -227,10 +232,21 @@ main(int argc,char **argv)
       {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+      {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+      {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -238,19 +254,22 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fnc_tbl",no_argument,0,'f'},
@@ -283,6 +302,7 @@ main(int argc,char **argv)
       {"exclude",no_argument,0,'x'},
       {"xcl",no_argument,0,'x'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -290,8 +310,8 @@ main(int argc,char **argv)
   /* Start clock and save command line */ 
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -303,6 +323,10 @@ main(int argc,char **argv)
     
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -325,10 +349,20 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -343,6 +377,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -353,7 +390,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
@@ -374,7 +411,7 @@ main(int argc,char **argv)
       break;
     case 'n': /* NINTAP-style abbreviation of files to process */
       /* Currently not used in ncap but should be to allow processing multiple input files by same script */
-      err_prn(fnc_nm,std::string(prg_nm_get())+ " does not currently implement -n option\n");
+      err_prn(fnc_nm,std::string(nco_prg_nm_get())+ " does not currently implement -n option\n");
       fl_lst_abb=nco_lst_prs_2D(optarg,",",&abb_arg_nbr);
       if(abb_arg_nbr < 1 || abb_arg_nbr > 3)
 	err_prn(fnc_nm, "Incorrect abbreviation for file list\n");
@@ -389,7 +426,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -411,10 +448,7 @@ main(int argc,char **argv)
       break;
     case 'v': /* Variables to extract/exclude */
       PROCESS_ALL_VARS=False;
-      nbr_xtr=0;
-      break;
-    case 'x': /* Exclude rather than extract variables specified with -v */
-      EXCLUDE_INPUT_LIST=True;
+      xtr_nbr=0;
       break;
     case '?': /* Print proper usage */
       (void)nco_usg_prn();
@@ -424,6 +458,7 @@ main(int argc,char **argv)
       err_prn(fnc_nm,"Long options are not available in this build. Use single letter options instead.\n");
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -475,6 +510,11 @@ main(int argc,char **argv)
   arr_cls arr_obj(true); 
   // Bilinear interpolation functions
   bil_cls bil_obj(true); 
+  // Co-ordinates functions
+  cod_cls cod_obj(true); 
+
+  // misc functions 
+  misc_cls misc_obj(true);
 
   // Populate vector
   (void)pop_fmc_vtr(fmc_vtr,&cnv_obj);
@@ -490,6 +530,18 @@ main(int argc,char **argv)
   (void)pop_fmc_vtr(fmc_vtr,&unr_obj);
   (void)pop_fmc_vtr(fmc_vtr,&arr_obj);
   (void)pop_fmc_vtr(fmc_vtr,&bil_obj);
+  (void)pop_fmc_vtr(fmc_vtr,&cod_obj);
+  (void)pop_fmc_vtr(fmc_vtr,&misc_obj);
+
+#ifdef ENABLE_GSL
+#ifdef ENABLE_NCO_GSL
+  // nco_gsl functions
+  nco_gsl_cls nco_gsl_obj(true); 
+
+  // Populate vector
+  (void)pop_fmc_vtr(fmc_vtr,&nco_gsl_obj);
+#endif //ENABLE_NCO_GSL
+#endif //ENABLE_GSL
    
   // GSL functions
 #ifdef ENABLE_GSL
@@ -515,18 +567,15 @@ main(int argc,char **argv)
   
   if(ncap_gsl_mode_prec<0 || ncap_gsl_mode_prec>2) ncap_gsl_mode_prec=0;
 
-  /* create a generator chosen by the 
-    environment variables GSL_RNG_TYPE ,GSL_RNG_SEED */
-     
+  /* create generator chosen by environment variables GSL_RNG_TYPE, GSL_RNG_SEED */
   gsl_rng_env_setup();
-
 #endif // !ENABLE_GSL
   
-  //Sort Vector 
+  // Sort Vector 
   std::sort(fmc_vtr.begin(),fmc_vtr.end());
   
   if(PRN_FNC_TBL){
-    (void)fprintf(stdout,"Methods available in %s:\n",prg_nm_get());
+    (void)fprintf(stdout,"Methods available in %s:\n",nco_prg_nm_get());
     for(idx=0;idx<(signed int)fmc_vtr.size();idx++)
       std::cout<< fmc_vtr[idx].fnm()<<"()"<<std::endl; 
     nco_exit(EXIT_SUCCESS);
@@ -537,7 +586,7 @@ main(int argc,char **argv)
   
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
-  if(fl_out) OUTPUT_TO_NEW_NETCDF_FILE=True; else fl_out=(char *)strdup(fl_lst_in[0]);
+  if(fl_out) FL_OUT_NEW=True; else fl_out=(char *)strdup(fl_lst_in[0]);
   
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
@@ -548,9 +597,10 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
   (void)nco_inq_format(in_id,&fl_in_fmt);
   
   /* Form list of all dimensions in file */  
@@ -559,7 +609,7 @@ main(int argc,char **argv)
   //dmn_in=(dmn_sct **)nco_malloc(nbr_dmn_in*sizeof(dmn_sct *));
   for(idx=0;idx<nbr_dmn_in;idx++) dmn_in_vtr.push_back(nco_dmn_fll(in_id,dmn_lst[idx].id,dmn_lst[idx].nm));
   
-  //sort vector
+  // Sort vector
   dmn_in_vtr.sort();
   dmn_in=&dmn_in_vtr[0];
   
@@ -573,14 +623,15 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  if(OUTPUT_TO_NEW_NETCDF_FILE){
+  if(FL_OUT_NEW){
     /* Normal case, like rest of NCO, where writes are made to temporary file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
   }else{ /* Existing file */
     /* ncap2, like ncrename and ncatted, directly modifies fl_in if fl_out is omitted
        If fl_out resolves to _same name_ as fl_in, method above is employed */
     fl_out_tmp=(char *)strdup(fl_out);
-    rcd=nco_open(fl_out_tmp,NC_WRITE,&out_id);
+    if(RAM_OPEN) md_open=NC_WRITE|NC_DISKLESS; else md_open=NC_WRITE;
+    rcd+=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
     (void)nco_redef(out_id);
   } /* Existing file */
   
@@ -591,9 +642,15 @@ main(int argc,char **argv)
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
   
   if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
-  
-  (void)nco_enddef(out_id);
-  
+
+  /* Take output file out of define mode */
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
+    
   /* Set arguments for script execution NB: all these are used as references */
   prs_cls prs_arg(dmn_in_vtr,dmn_out_vtr,fmc_vtr,var_vtr,int_vtr);
   
@@ -601,20 +658,20 @@ main(int argc,char **argv)
   prs_arg.in_id=in_id; /* [id] Input data file ID */
   prs_arg.fl_out=fl_out; /* [sng] Output data file */
   prs_arg.out_id=out_id; /* [id] Output data file ID */
-  //rcd=nco_open(fl_out_tmp, NC_NOWRITE|NC_SHARE,&prs_arg.out_id_readonly); /* Read Output file */
-  rcd=nco_open(fl_out_tmp,NC_NOWRITE,&prs_arg.out_id_readonly); /* Read Output file */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&prs_arg.out_id_readonly);
   
   prs_arg.FORTRAN_IDX_CNV=FORTRAN_IDX_CNV;
   prs_arg.ATT_PROPAGATE=ATT_PROPAGATE;      
   prs_arg.ATT_INHERIT=ATT_INHERIT;
-  prs_arg.NCAP_MPI_SORT=(thr_nbr>1 ? true:false);
+  prs_arg.NCAP_MPI_SORT=(thr_nbr > 1 ? true:false);
   
   prs_arg.dfl_lvl=dfl_lvl;  /* [enm] Deflate level */
   prs_arg.cnk_sz=(size_t*)NULL; /* Chunk sizes NULL for now */ 
   
 #ifdef NCO_NETCDF4_AND_FILLVALUE
   prs_arg.NCAP4_FILL = (fl_out_fmt==NC_FORMAT_NETCDF4 || fl_out_fmt==NC_FORMAT_NETCDF4_CLASSIC);
-# else
+#else
   prs_arg.NCAP4_FILL=false;
 #endif
   prs_arg.ntl_scn=false;
@@ -625,30 +682,77 @@ main(int argc,char **argv)
   for(idx=1;idx<thr_nbr;idx++){
     prs_cls prs_tmp(prs_arg);
     
-    // Open files for each thread
-    rcd=nco_open(fl_in,NC_NOWRITE,&prs_tmp.in_id);
+    /* Open files for each thread */
+    if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+    rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&prs_tmp.in_id);
     
-    // Handle to read output only
-    //rcd=nco_open(fl_out_tmp, NC_NOWRITE|NC_SHARE,&prs_tmp.out_id_readonly);
-    rcd=nco_open(fl_out_tmp, NC_NOWRITE,&prs_tmp.out_id_readonly);
+    /* Handle to read output only */
+    rcd+=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&prs_tmp.out_id_readonly);
     
-    // only one handle for reading & writing 
+    /* Only one handle for reading and writing */
     prs_tmp.out_id=out_id;
     
     prs_vtr.push_back(prs_tmp);
   } /* end loop over threads */
+
+  /* If we are appending (-A) then output file already contains dimensions/variables */
+  if(FORCE_APPEND){
+    int nbr_dmn_out=0;  
+    int nbr_var_fl=0;
+    int nbr_xtr=0;
+    nm_id_sct *dmn_lst=NULL_CEWI;
+    nm_id_sct *xtr_lst=NULL_CEWI;
+    NcapVar *Nvar;
+
+    var_sct *var_tmp;
+
+    /* Form list of all dimensions in file */  
+    dmn_lst=nco_dmn_lst(out_id,&nbr_dmn_out);
   
+    //dmn_in=(dmn_sct **)nco_malloc(nbr_dmn_in*sizeof(dmn_sct *));
+    for(idx=0;idx<nbr_dmn_out;idx++) dmn_out_vtr.push_back(nco_dmn_fll(out_id,dmn_lst[idx].id,dmn_lst[idx].nm));
+
+    // Sort vector
+    dmn_out_vtr.sort();
+
+    /* xrf dmn_out with dmn_in_vtr */
+    for(idx=0;idx<nbr_dmn_out;idx++){
+      dmn_item=dmn_in_vtr.find(dmn_out_vtr[idx]->nm);
+      if(!dmn_item) continue; 
+      (void)nco_dmn_xrf(dmn_item,dmn_out_vtr[idx]);
+      if(dmn_item->sz != dmn_out_vtr[idx]->sz) 
+        (void)fprintf(stdout,"%s: WARNING: dimension miss-match. Dimension \"%s\" is size=%ld in input file and size=%ld in output file.\nHINT: Command may work if Append mode (-A) is not used.\n",nco_prg_nm_get(),dmn_item->nm,dmn_item->sz,dmn_out_vtr[idx]->sz);
+    } /* end loop over dimensions */
+
+    /* Get number of variables in output file */
+    rcd=nco_inq(out_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int *)NULL);
+  
+    /* Make list of all new variables in output_file */  
+    xtr_lst=nco_var_lst_mk(out_id,nbr_var_fl,(char**)NULL,False,False,&nbr_xtr);      
+    for(idx=0;idx<nbr_var_fl;idx++){
+      var_tmp=prs_arg.ncap_var_init(xtr_lst[idx].nm,false);
+      Nvar=new NcapVar(var_tmp); 
+      Nvar->flg_stt=2;   
+      prs_arg.var_vtr.push(Nvar);
+      /* Copy output attributes into var_vtr */
+      ncap_att_gnrl(xtr_lst[idx].nm, xtr_lst[idx].nm,2,&prs_arg);        
+    } /* end loop over variables */
+
+    /* Free lists */
+    dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_out);
+    xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  } /* !FORCE_APPEND */
+
   if(fl_spt_usr == NULL_CEWI){
     /* No script file specified, look for command-line scripts */
-    if(nbr_spt == 0)
-      err_prn(fnc_nm,"No script file or command line scripts specified\nHINT Use, e.g., -s \"foo=bar\"\n");
-    
+    if(nbr_spt == 0) err_prn(fnc_nm,"No script file or command line scripts specified\nHINT Use, e.g., -s \"foo=bar\"\n");
+
     /* Print all command-line scripts */
-    if(dbg_lvl_get() > 0){
+    if(nco_dbg_lvl_get() >= nco_dbg_std){
       for(idx=0;idx<nbr_spt;idx++) 
-	(void)fprintf(stderr,"spt_arg[%d] = %s\n",idx,spt_arg[idx]);
+        (void)fprintf(stderr,"spt_arg[%d] = %s\n",idx,spt_arg[idx]);
     } /* endif debug */
-    
+
     /* Parse command line scripts */
     fl_spt_usr=(char *)strdup("Command-line script");
   }else{ /* ...endif command-line scripts, begin script file... */
@@ -662,39 +766,24 @@ main(int argc,char **argv)
   rcd=parse_antlr(prs_vtr,fl_spt_usr,spt_arg_cat);
   
   /* Get number of variables in output file */
-  rcd=nco_inq(out_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int*)NULL);
+  rcd=nco_inq(out_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int *)NULL);
   
   /* Make list of all new variables in output_file */  
   xtr_lst_a=nco_var_lst_mk(out_id,nbr_var_fl,var_lst_in,False,False,&nbr_lst_a);
+
   
   if(PROCESS_ALL_VARS){
     /* Get number of variables in input file */
     rcd=nco_inq(in_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int *)NULL);
-    
     /* Form initial list of all variables in input file */
-    xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,False,False,&nbr_xtr);
+    xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,False,False,&xtr_nbr);
   }else{
     /* Make list of variables of new attributes whose parent variable is only in input file */
-    xtr_lst=nco_att_lst_mk(in_id,out_id,var_vtr,&nbr_xtr);
+    xtr_lst=nco_att_lst_mk(in_id,out_id,var_vtr,&xtr_nbr);
   } /* endif */
-  
-    /* Find dimensions associated with xtr_lst */
-    /* Write to O only new dims
-       Add apropriate coordinate variables to extraction list 
-       options -c      -process all cordinates 
-       i.e., add coordinates to var list 
-       Also add their dims
-       
-       options --none   -process associated co-ords
-       loop though dim_out and append to var list
-       
-       options -C         no co-ordinates   Do nothing */
-  
-    /* Subtract list A again */
-    /* Finally extract variables on list */
-  
+
   /* Subtract list A */
-  if(nbr_lst_a > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&nbr_xtr,xtr_lst_a,nbr_lst_a);
+  if(nbr_lst_a > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&xtr_nbr,xtr_lst_a,nbr_lst_a);
   
   /* Put file in define mode to allow metadata writing */
   (void)nco_redef(out_id);
@@ -703,19 +792,17 @@ main(int argc,char **argv)
   dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_in);
   
   /* Make list of dimensions of variables in xtr_lst */
-  if(nbr_xtr > 0) dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_ass);
+  if(xtr_nbr > 0) dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,xtr_nbr,&nbr_dmn_ass);
   
   /* Find and add any new dimensions to output */
   for(idx=0;idx<nbr_dmn_ass;idx++){
-    dmn_item=dmn_out_vtr.find(dmn_lst[idx].nm);
-    if(dmn_item) continue;    
-    dmn_item=dmn_in_vtr.find(dmn_lst[idx].nm);
-    if(dmn_item == NULL) continue;
-    dmn_new=nco_dmn_dpl(dmn_item);
-    (void)nco_dmn_dfn(fl_out,out_id,&dmn_new,1);
-    (void)nco_dmn_xrf(dmn_new,dmn_item);
-    (void)dmn_out_vtr.push_back(dmn_new);
-  }  /* end loop over idx */
+    jdx=dmn_in_vtr.findis(dmn_lst[idx].nm);
+    if(dmn_in_vtr[jdx]->xrf ) continue;
+
+    (void)dmn_out_vtr.push_back(nco_dmn_dpl(dmn_in_vtr[jdx]));
+    (void)nco_dmn_dfn(fl_out,out_id,&dmn_out_vtr.back(),1);
+    (void)nco_dmn_xrf(dmn_out_vtr.back(),dmn_in_vtr[jdx]);
+  }  
   
   /* Free current list of all dimensions in input file */
   dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_ass);
@@ -723,116 +810,156 @@ main(int argc,char **argv)
   /* Dimensions for manually specified extracted variables are now defined in output file
      Add coordinate variables to extraction list
      If EXTRACT_ALL_COORDINATES then write associated dimension to output */
-  
   if(EXTRACT_ASSOCIATED_COORDINATES){
     for(idx=0;idx<dmn_in_vtr.size();idx++){
-      if(!dmn_in_vtr[idx]->is_crd_dmn) continue;
-      
-      if(EXTRACT_ALL_COORDINATES && !dmn_in_vtr[idx]->xrf){
-	/* Add dimensions to output list dmn_out */
-	dmn_item=dmn_in_vtr[idx];
-	dmn_new=nco_dmn_dpl(dmn_item);
-	(void)nco_dmn_xrf(dmn_new,dmn_item);
-	/* Write dimension to output */
-	(void)nco_dmn_dfn(fl_out,out_id,&dmn_new,1);
-	(void)dmn_out_vtr.push_back(dmn_new);
+      dmn_item=dmn_in_vtr[idx]; /*de-reference */
+      if(!dmn_item->is_crd_dmn) continue;
+
+      if(EXTRACT_ALL_COORDINATES && !dmn_item->xrf){
+        /* Add dimensions to output list dmn_out */
+        dmn_new=nco_dmn_dpl(dmn_item);
+        (void)nco_dmn_xrf(dmn_new,dmn_item);
+        /* Write dimension to output */
+        (void)nco_dmn_dfn(fl_out,out_id,&dmn_new,1);
+        (void)dmn_out_vtr.push_back(dmn_new);
       } /* end if */
       /* Add coordinate variable to extraction list, dimension has already been output */
-      if(dmn_in_vtr[idx]->xrf){
-	for(jdx=0;jdx<nbr_xtr;jdx++)
-	  if(!strcmp(xtr_lst[jdx].nm,dmn_in_vtr[idx]->nm)) break;
-	
-	if(jdx != nbr_xtr) continue;
-	/* If coordinate is not on list then add it to extraction list */
-	xtr_lst=(nm_id_sct *)nco_realloc(xtr_lst,(nbr_xtr+1)*sizeof(nm_id_sct));
-	xtr_lst[nbr_xtr].nm=(char *)strdup(dmn_in_vtr[idx]->nm);
-	xtr_lst[nbr_xtr++].id=dmn_in_vtr[idx]->cid;
+      if(dmn_item->xrf){
+        for(jdx=0;jdx<xtr_nbr;jdx++)
+          if(!strcmp(xtr_lst[jdx].nm,dmn_item->nm)) break;
+
+        if(jdx != xtr_nbr) continue;
+        /* If coordinate is not on list then add it to extraction list */
+        xtr_lst=(nm_id_sct *)nco_realloc(xtr_lst,(xtr_nbr+1)*sizeof(nm_id_sct));
+        xtr_lst[xtr_nbr].nm=(char *)strdup(dmn_item->nm);
+        xtr_lst[xtr_nbr].id=dmn_item->cid;
+
+        /* Increment */
+        xtr_nbr++;
+
       } /* endif */
     } /* end loop over idx */	      
   } /* end if */ 
-  
+
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
-  
+
   /* Add coordinates defined by CF convention */
-  if(CNV_CCM_CCSM_CF && (EXTRACT_ALL_COORDINATES || EXTRACT_ASSOCIATED_COORDINATES)) xtr_lst=nco_cnv_cf_crd_add(in_id,xtr_lst,&nbr_xtr);
-  
+  if(CNV_CCM_CCSM_CF && (EXTRACT_ALL_COORDINATES || EXTRACT_ASSOCIATED_COORDINATES)) xtr_lst=nco_cnv_cf_crd_add(in_id,xtr_lst,&xtr_nbr);
+
   /* Subtract list A again (it may contain re-defined coordinates) */
-  if(nbr_xtr > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&nbr_xtr,xtr_lst_a,nbr_lst_a);
-  
+  if(xtr_nbr > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&xtr_nbr,xtr_lst_a,nbr_lst_a);
+
   /* Sort extraction list for faster I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
-  
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
+
   /* Write "fixed" variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,&dmn_in_vtr[0],dmn_in_vtr.size());
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
-  
+
   /* NB: ncap is not well-suited for nco_var_lst_dvd() */
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,(int)0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,(int)0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc,NULL);
   
   /* csz: Why not call this with var_fix? */
   /* Define non-processed vars */
-  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,xtr_nbr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
   
   /* Write out new attributes possibly overwriting old ones */
   for(idx=0;idx<var_vtr.size();idx++){
-    /* write misssing value contained inside var */
+
+   
     if(var_vtr[idx]->xpr_typ == ncap_var){
+      int rcd_inq_att;
       var_sct *var_ref;
       
       var_ref=var_vtr[idx]->var;
       rcd=nco_inq_varid_flg(out_id,var_ref->nm,&var_id);
       
-      /* skip RAM vars and orphaned vars */
-      if(rcd!=NC_NOERR|| !var_ref->has_mss_val) continue;  
+      /* filter out ram vars */ 
+      if(rcd!=NC_NOERR || !var_ref->has_mss_val) continue;  
       
-      /* Do netdf4 name hack */
-      if(prs_arg.NCAP4_FILL){
+      /* see if missing value already present */
+      rcd_inq_att=nco_inq_att_flg(out_id,var_id,nco_mss_val_sng_get(),&att_item.type,&att_item.sz);
+
+      /* type mismatch dont overwrite. This can occur when packed vars are in output from using the -A switch */
+      if(rcd_inq_att==NC_NOERR && var_ref->type != att_item.type) continue;   
+
+      /* fill mode and att exists */ 
+      if(prs_arg.NCAP4_FILL && rcd_inq_att==NC_NOERR){
+        (void)nco_rename_att(out_id,var_id,nco_mss_val_sng_get(),att_nm_tmp);     
+        (void)nco_put_att(out_id,var_id,att_nm_tmp,var_ref->type,1,var_ref->mss_val.vp);   
+        (void)nco_rename_att(out_id,var_id,att_nm_tmp,nco_mss_val_sng_get());  
+        continue;
+      }
+
+      /* fill mode and att doesn't exist   */ 
+      if(prs_arg.NCAP4_FILL && rcd_inq_att!=NC_NOERR){
         (void)nco_put_att(out_id,var_id,att_nm_tmp,var_ref->type,1,var_ref->mss_val.vp);
         (void)nco_rename_att(out_id,var_id,att_nm_tmp,nco_mss_val_sng_get());
-      }else{
-        (void)nco_put_att(out_id,var_id,nco_mss_val_sng_get(),var_ref->type,1,var_ref->mss_val.vp);
+        continue;
       }
+
+      /* netcdf3 file just put att */
+      (void)nco_put_att(out_id,var_id,nco_mss_val_sng_get(),var_ref->type,1,var_ref->mss_val.vp);      
       continue;
     }
+   
+
+     /* Write misssing value contained inside variable */
+     /* If missing value type is same as disk type  */  
+     /*
+    if(var_vtr[idx]->xpr_typ == ncap_var ){
+      if(!var_vtr[idx]->var->has_mss_val) continue;  
+      att_item.att_nm=strdup(nco_mss_val_sng_get());
+      att_item.var_nm=strdup(var_vtr[idx]->getVar().c_str());
+      att_item.sz=1;
+      att_item.type=var_vtr[idx]->var->type;
+      att_item.val=var_vtr[idx]->var->mss_val;
+      att_item.mode=aed_overwrite;
+      //att_item.mode=aed_create;
+    }
+     */
+    if(var_vtr[idx]->xpr_typ == ncap_att){
+      /* Skip missing values (for now) */
+      if(var_vtr[idx]->getAtt() == nco_mss_val_sng_get()) continue;     
     
-    /* Skip missing values for now !!! */
-    if(var_vtr[idx]->getAtt() == nco_mss_val_sng_get()) continue;     
-    
-    att_item.att_nm=strdup(var_vtr[idx]->getAtt().c_str());
-    att_item.var_nm=strdup(var_vtr[idx]->getVar().c_str());
-    att_item.sz=var_vtr[idx]->var->sz;
-    att_item.type=var_vtr[idx]->var->type;
-    att_item.val=var_vtr[idx]->var->val;
-    att_item.mode=aed_overwrite;
-    
+      att_item.att_nm=strdup(var_vtr[idx]->getAtt().c_str());
+      att_item.var_nm=strdup(var_vtr[idx]->getVar().c_str());
+      att_item.sz=var_vtr[idx]->var->sz;
+      att_item.type=var_vtr[idx]->var->type;
+      att_item.val=var_vtr[idx]->var->val;
+      att_item.mode=aed_overwrite;
+    } 
+   
+
     if(!strcmp(att_item.var_nm,"global")) 
       var_id=NC_GLOBAL;
-    else {
+    else{
       rcd=nco_inq_varid_flg(out_id,att_item.var_nm,&var_id);
       if(rcd != NC_NOERR)  goto cln_up;
-    }
-    // Check size;
+    } /* end else */
+    /* Check size */
     if(att_item.sz > NC_MAX_ATTRS ){ 
-      (void)fprintf(stdout,"%s: Attribute %s size %ld excceeds maximium %d\n",prg_nm_get(),att_item.att_nm,att_item.sz, NC_MAX_ATTRS );
+      (void)fprintf(stdout,"%s: Attribute %s size %ld excceeds maximium %d\n",nco_prg_nm_get(),att_item.att_nm,att_item.sz, NC_MAX_ATTRS );
       goto cln_up;
-    }
+    } /* end if */
     /* NB: These attributes should probably be written prior to last data mode */
     (void)nco_aed_prc(out_id,var_id,att_item);
     
-  cln_up: att_item.var_nm=(char*)nco_free(att_item.var_nm);
-    att_item.att_nm=(char*)nco_free(att_item.att_nm);
-  }/* end for */
+ cln_up: ;
+   att_item.var_nm=(char*)nco_free(att_item.var_nm);
+   att_item.att_nm=(char*)nco_free(att_item.att_nm);
+  } /* end for */
   
   /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,(lmt_all_sct **)NULL_CEWI,(int)0,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
+  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,(lmt_msa_sct **)NULL_CEWI,(int)0,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 
   /* Turn off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
@@ -853,10 +980,12 @@ main(int argc,char **argv)
   } /* end loop over threads */
   
   /* Remove local copy of file */
-  if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+  if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
+
+  nco_close(prs_arg.out_id_readonly);
   
   /* Close output file and move it from temporary to permanent location */
-  if(OUTPUT_TO_NEW_NETCDF_FILE) (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id); else nco_close(out_id);
+  if(FL_OUT_NEW) (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id); else nco_close(out_id);
   
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
@@ -864,7 +993,7 @@ main(int argc,char **argv)
     if(fl_spt_usr) fl_spt_usr=(char *)nco_free(fl_spt_usr);
     
     /* Free extraction lists */ 
-    xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+    xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
     xtr_lst_a=nco_nm_id_lst_free(xtr_lst_a,nbr_lst_a);
     
     /* Free command line algebraic arguments, if any */
@@ -874,8 +1003,8 @@ main(int argc,char **argv)
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char*)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -894,18 +1023,18 @@ main(int argc,char **argv)
     /* Free dimension vectors */
     if(dmn_in_vtr.size() > 0) { 
       for(idx=0;idx<dmn_in_vtr.size();idx++)
-	(void)nco_dmn_free(dmn_in_vtr[idx]);
+        (void)nco_dmn_free(dmn_in_vtr[idx]);
     }
     if(dmn_out_vtr.size() > 0) { 
       for(idx=0;idx< dmn_out_vtr.size();idx++)
-	(void)nco_dmn_free(dmn_out_vtr[idx]);
+        (void)nco_dmn_free(dmn_out_vtr[idx]);
     }
     /* Free var_vtr */
     if(var_vtr.size() > 0) { 
       for(idx=0; idx < var_vtr.size(); idx++)
-	delete var_vtr[idx];
+        delete var_vtr[idx];
     }  
-    
+
     /* Clear vectors */
     /*
     fmc_vtr.clear();
@@ -921,8 +1050,8 @@ main(int argc,char **argv)
 
     */
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
@@ -984,5 +1113,35 @@ ram_vars_add
   
   var1=ncap_sclr_var_mk(std::string("__UINT64"),nco_int(NC_UINT64));
   prs_arg->ncap_var_write(var1,true);
+
 #endif // !ENABLE_NETCDF4
+  
+  #ifdef INFINITY
+  var1=ncap_sclr_var_mk(std::string("inff"),INFINITY); //float
+  prs_arg->ncap_var_write(var1,true);
+  #endif
+
+  #ifdef NAN
+  var1=ncap_sclr_var_mk(std::string("nanf"),NAN);    //float
+  prs_arg->ncap_var_write(var1,true);
+  #endif
+
+  #ifdef HUGE_VAL
+  var1=ncap_sclr_var_mk(std::string("inf"),HUGE_VAL);    //double
+  prs_arg->ncap_var_write(var1,true);
+  #endif
+
+  char buff[20];
+  double dnan;
+#ifndef _MSC_VER
+  if( dnan=nan(buff) ){
+    var1=ncap_sclr_var_mk(std::string("nan"),dnan);    //double
+    prs_arg->ncap_var_write(var1,true);
+  }
+#endif
+
+
+
+
+
 } // end ram_vars_add()
diff --git a/src/nco++/ncap2_utl.cc b/src/nco++/ncap2_utl.cc
index 5f38d64..82addb3 100644
--- a/src/nco++/ncap2_utl.cc
+++ b/src/nco++/ncap2_utl.cc
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco++/ncap2_utl.cc,v 1.139 2012/01/01 20:51:54 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncap2_utl.cc,v 1.154 2013/10/22 03:03:55 zender Exp $ */
 
 /* Purpose: netCDF arithmetic processor */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -35,7 +35,6 @@ ncap_var_udf(const char *var_nm)
   // Temporary solution -- set the type to NC_INT 
   //var_ret->type=NC_INT;
 
-
   return var_ret;
 }
 
@@ -44,25 +43,29 @@ ncap_att_get
 (int var_id,
  const char *var_nm,
  const char *att_nm,
+ int location, /* I [flg] 1 - att from INPUT file  2 - att from OUTPUT file */
  prs_cls *prs_arg)
 {
-  long sz;
   int rcd;
+  int fl_id;
+  long sz;
+
   char *ln_nm;
   
   nc_type type;
   var_sct *var_ret;
   
-  rcd=nco_inq_att_flg(prs_arg->in_id,var_id,att_nm,&type,&sz);
-  if (rcd == NC_ENOTATT) 
-    return NULL_CEWI;
-  
+  if(location == 1) fl_id=prs_arg->in_id;  
+  if(location == 2) fl_id=prs_arg->out_id;  
+
+  rcd=nco_inq_att_flg(fl_id,var_id,att_nm,&type,&sz);
+  if(rcd == NC_ENOTATT) return NULL_CEWI;
   
   var_ret=(var_sct*)nco_malloc(sizeof(var_sct));
   (void)var_dfl_set(var_ret);
   
   // Make name of the form var_nm at att_nm
-  ln_nm=(char*)nco_malloc( (strlen(var_nm)+strlen(att_nm)+2)*sizeof(char));
+  ln_nm=(char *)nco_malloc((strlen(var_nm)+strlen(att_nm)+2)*sizeof(char));
   strcpy(ln_nm,var_nm);strcat(ln_nm,"@");strcat(ln_nm,att_nm);
   
   var_ret->nm=ln_nm;
@@ -76,8 +79,8 @@ ncap_att_get
   // Fill with data if NOT an initial scan
   if(!prs_arg->ntl_scn){
     var_ret->val.vp=(void *)nco_malloc(sz*nco_typ_lng(type));
-    rcd=nco_get_att(prs_arg->in_id,var_id,att_nm,var_ret->val.vp,type);
-    if (rcd !=NC_NOERR) {
+    rcd=nco_get_att(fl_id,var_id,att_nm,var_ret->val.vp,type);
+    if (rcd != NC_NOERR) {
       var_ret=nco_var_free(var_ret);
       return NULL_CEWI;
     }
@@ -114,7 +117,7 @@ ncap_att_init(             /*   [fnc] Grab an attribute from input file */
       return NULL_CEWI;
   }
   
-  var_ret=ncap_att_get(var_id,var_nm.c_str(),att_nm.c_str(),prs_arg);
+  var_ret=ncap_att_get(var_id,var_nm.c_str(),att_nm.c_str(),1,prs_arg);
   
   return var_ret;
 }
@@ -178,6 +181,7 @@ int
 ncap_att_gnrl
 (const std::string s_dst,
  const std::string s_src,
+ int location,         /*   I [flg] 1 - att from INPUT file  2 - att from OUTPUT file */
  prs_cls  *prs_arg
  ){
   int idx;
@@ -186,11 +190,11 @@ ncap_att_gnrl
   int rcd;
   int var_id; 
   int nbr_att;
+  int fl_id;
   char att_nm[NC_MAX_NAME]; 
   const char *tmp_att_nm;
   const char scl_fct_sng[]="scale_factor"; /* [sng] Unidata standard string for scale factor */
   const char add_fst_sng[]="add_offset"; /* [sng] Unidata standard string for add offset */
-
   
   var_sct *var_att;
   
@@ -202,19 +206,21 @@ ncap_att_gnrl
   NcapVarVector &var_vtr=prs_arg->var_vtr;
   NcapVarVector att_vtr; //hold new attributes.
   
+  if(location == 1 ) fl_id=prs_arg->in_id;  
+  if(location == 2 ) fl_id=prs_arg->out_id;  
 
   // get var_id
-  rcd=nco_inq_varid_flg(prs_arg->in_id,s_src.c_str(),&var_id);
+  rcd=nco_inq_varid_flg(fl_id,s_src.c_str(),&var_id);
   
   if(rcd == NC_NOERR){
-    (void)nco_inq_varnatts(prs_arg->in_id,var_id,&nbr_att);
+    (void)nco_inq_varnatts(fl_id,var_id,&nbr_att);
     // loop though attributes
     for(idx=0; idx <nbr_att ; idx++){
-      (void)nco_inq_attname(prs_arg->in_id,var_id,idx,att_nm);
+      (void)nco_inq_attname(fl_id,var_id,idx,att_nm);
       //skip missing value, scale_factor , add_offset
       if(!strcmp(att_nm,nco_mss_val_sng_get()) || !strcmp(att_nm,scl_fct_sng) || !strcmp(att_nm,add_fst_sng))
         continue;
-      var_att=ncap_att_get(var_id,s_src.c_str(),att_nm,prs_arg);
+      var_att=ncap_att_get(var_id,s_src.c_str(),att_nm,location,prs_arg);
       // now add to list( change the name!!)
       if(var_att){ 
 	s_fll=s_dst+"@"+std::string(att_nm);
@@ -240,11 +246,9 @@ ncap_att_gnrl
         var_att=nco_var_dpl(var_vtr[idx]->var);
         Nvar=new NcapVar(var_att,s_fll ); 
         att_vtr.push_back(Nvar);  
-        
     } 
   }
 
-
   sz=att_vtr.size();
   // add new att to list;
   for(idx=0 ; idx < sz ; idx++){
@@ -257,10 +261,7 @@ ncap_att_gnrl
 #else
       var_vtr.push_ow(att_vtr[idx]);         
 #endif
-
   }
-  att_vtr.empty();
-
   return sz;
   
 } /* end ncap_att_gnrl() */
@@ -275,10 +276,10 @@ ncap_att_cpy
   int nbr_att=0;
   //Don't propagate if s_src is a tree-parser generated var
   if(prs_arg->ATT_PROPAGATE && s_dst != s_src && s_src[0]!='~' )
-    nbr_att=ncap_att_gnrl(s_dst,s_src,prs_arg);
+    nbr_att=ncap_att_gnrl(s_dst,s_src,1,prs_arg);
   
   if(prs_arg->ATT_INHERIT)
-    nbr_att=ncap_att_gnrl(s_dst,s_dst,prs_arg);
+    nbr_att=ncap_att_gnrl(s_dst,s_dst,1,prs_arg);
   
   return nbr_att;
 }
@@ -369,7 +370,7 @@ ncap_var_var_mod /* [fnc] Remainder (modulo) operation of two variables */
   ptr_unn op_swp;
   const char fnc_nm[]="ncap_var_var_mod"; 
 
-  if(dbg_lvl_get() >= 4) 
+  if(nco_dbg_lvl_get() >= 4) 
       dbg_prn(fnc_nm,"Entered function");
   
 
@@ -400,7 +401,7 @@ ncap_var_var_atan2
   ptr_unn op1,op2;
 
   const char fnc_nm[]="ncap_var_var_atan2"; 
-  if(dbg_lvl_get() >= 4) dbg_prn(fnc_nm,"Entered function");
+  if(nco_dbg_lvl_get() >= 4) dbg_prn(fnc_nm,"Entered function");
 
   sz=var1->sz;
 
@@ -518,7 +519,7 @@ ncap_var_var_pwr  /* [fnc] Empowerment of two variables */
 
   const char fnc_nm[]="ncap_var_var_pwr";
    
-  if(dbg_lvl_get() >= 4) 
+  if(nco_dbg_lvl_get() >= 4) 
       dbg_prn(fnc_nm,"Entered function");
 
 
@@ -554,7 +555,7 @@ ncap_var_fnc
   ptr_unn op1;
 
 
-  if(dbg_lvl_get() >= 4) 
+  if(nco_dbg_lvl_get() >= 4) 
       dbg_prn(fnc_nm,"Entered function");
   
   if(var_in->undefined) return var_in;
@@ -669,9 +670,10 @@ dmn_vtr=(nc_id==prs_arg->in_id ? prs_arg->dmn_in_vtr: prs_arg->dmn_out_vtr);
   // do error checking 
   if(!prs_arg->FORTRAN_IDX_CNV){ 
     std::ostringstream os;
-  
+    if(srt<0) srt+=cnt_dmn-1;       
+    if(end<0) end+=cnt_dmn-1;       
     if(lmt_ptr->is_usr_spc_min && (srt<0 || srt>cnt_dmn-1)) {
-
+           
       os<<"Lower limit " <<srt<<" for dim "<<lmt_ptr->nm<<" is outside range "<<0L<<"-"<<cnt_dmn-1;
       err_prn(fnc_nm,os.str());
     }
@@ -715,16 +717,18 @@ nco_var_lst_copy      /* [fnc] Purpose: Copy xtr_lst and return new list */
   for(idx=0;idx<lst_nbr;idx++){
     xtr_new_lst[idx].nm=(char *)strdup(xtr_lst[idx].nm);
     xtr_new_lst[idx].id=xtr_lst[idx].id;
+
+
   } /* end loop over variable */
   return xtr_new_lst;           
 } /* end nco_var_lst_copy() */
 
 nm_id_sct *             /* O [sct] New list */
-nco_var_lst_sub(
-		nm_id_sct *xtr_lst,     /* I [sct] input list */   
-		int *nbr_xtr,           /* I/O [ptr] size of xtr_lst and new list */
-		nm_id_sct *xtr_lst_b,   /* I [sct] list to be subtracted */   
-		int nbr_lst_b)          /* I [nbr] size eof xtr_lst_b */ 
+nco_var_lst_sub
+(nm_id_sct *xtr_lst,     /* I [sct] input list */   
+ int *xtr_nbr,           /* I/O [ptr] size of xtr_lst and new list */
+ nm_id_sct *xtr_lst_b,   /* I [sct] list to be subtracted */   
+ int nbr_lst_b)          /* I [nbr] size eof xtr_lst_b */ 
 {
   /* Purpose: Subtract from xtr_lst any elements from xtr_lst_b which are present and return new list */
   int idx;
@@ -735,68 +739,79 @@ nco_var_lst_sub(
   
   nm_id_sct *xtr_new_lst=NULL;
   
-  if(*nbr_xtr == 0) return xtr_lst;
+  if(*xtr_nbr == 0) return xtr_lst;
   
-  xtr_new_lst=(nm_id_sct*)nco_malloc((size_t)(*nbr_xtr)*sizeof(nm_id_sct)); 
-  for(idx=0;idx<*nbr_xtr;idx++){
+  xtr_new_lst=(nm_id_sct*)nco_malloc((size_t)(*xtr_nbr)*sizeof(nm_id_sct)); 
+  for(idx=0;idx<*xtr_nbr;idx++){
     match=False;
     for(xtr_idx=0;xtr_idx<nbr_lst_b;xtr_idx++)
       if(!strcmp(xtr_lst[idx].nm,xtr_lst_b[xtr_idx].nm)){match=True;break;}
     if(match) continue;
     xtr_new_lst[xtr_nbr_new].nm=(char *)strdup(xtr_lst[idx].nm);
-    xtr_new_lst[xtr_nbr_new++].id=xtr_lst[idx].id;
+    xtr_new_lst[xtr_nbr_new].id=xtr_lst[idx].id;
+
+
+    /* Increment */
+    xtr_nbr_new++;
+
+
   } /* end loop over idx */
   /* realloc to actual size */
   xtr_new_lst=(nm_id_sct*)nco_realloc(xtr_new_lst,xtr_nbr_new*sizeof(nm_id_sct)); 
   /* free old list */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,*nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,*xtr_nbr);
   
-  *nbr_xtr=xtr_nbr_new;
+  *xtr_nbr=xtr_nbr_new;
   return xtr_new_lst;     
 }/* end nco_var_lst_sub */
 
 nm_id_sct *            /* O [sct] -- new list */
 nco_var_lst_add
 (nm_id_sct *xtr_lst,    /* I [sct] input list */ 
- int *nbr_xtr,          /* I/O [ptr] -- size of xtr_lst & new output list */ 
+ int *xtr_nbr,          /* I/O [ptr] -- size of xtr_lst & new output list */ 
  nm_id_sct *xtr_lst_a,  /* I [sct] list of elemenst to be added to new list */
  int nbr_lst_a)         /* I [nbr] size of xtr_lst_a */
 {
   /* Purpose: Add to xtr_lst any elements from xtr_lst_a not already present and return new list */
   int idx;
   int xtr_idx;
-  int nbr_xtr_crr;
+  int xtr_nbr_crr;
   
   nm_id_sct *xtr_new_lst;
   
   nco_bool match;
   
-  nbr_xtr_crr=*nbr_xtr;
-  if(nbr_xtr_crr > 0){
-    xtr_new_lst=(nm_id_sct*)nco_malloc((size_t)(*nbr_xtr)*sizeof(nm_id_sct));
-    for(idx=0;idx<nbr_xtr_crr;idx++){
+  xtr_nbr_crr=*xtr_nbr;
+  if(xtr_nbr_crr > 0){
+    xtr_new_lst=(nm_id_sct*)nco_malloc((size_t)(*xtr_nbr)*sizeof(nm_id_sct));
+    for(idx=0;idx<xtr_nbr_crr;idx++){
       xtr_new_lst[idx].nm=(char *)strdup(xtr_lst[idx].nm);
       xtr_new_lst[idx].id=xtr_lst[idx].id;
+
+
     } /* end loop over variables */
   }else{
-    *nbr_xtr=nbr_lst_a;
+    *xtr_nbr=nbr_lst_a;
     return nco_var_lst_copy(xtr_lst_a,nbr_lst_a);
   }/* end if */
   
   for(idx=0;idx<nbr_lst_a;idx++){
     match=False;
-    for(xtr_idx=0;xtr_idx<*nbr_xtr;xtr_idx++)
+    for(xtr_idx=0;xtr_idx<*xtr_nbr;xtr_idx++)
       if(!strcmp(xtr_lst[xtr_idx].nm,xtr_lst_a[idx].nm)){match=True;break;}
     if(match) continue;
-    xtr_new_lst=(nm_id_sct *)nco_realloc(xtr_new_lst,(size_t)(nbr_xtr_crr+1)*sizeof(nm_id_sct));
-    xtr_new_lst[nbr_xtr_crr].nm=(char *)strdup(xtr_lst_a[idx].nm);
-    xtr_new_lst[nbr_xtr_crr++].id=xtr_lst_a[idx].id;
+    xtr_new_lst=(nm_id_sct *)nco_realloc(xtr_new_lst,(size_t)(xtr_nbr_crr+1)*sizeof(nm_id_sct));
+    xtr_new_lst[xtr_nbr_crr].nm=(char *)strdup(xtr_lst_a[idx].nm);
+    xtr_new_lst[xtr_nbr_crr].id=xtr_lst_a[idx].id;
+
+
+    xtr_nbr_crr++;
+
   } /* end for */
-  *nbr_xtr=nbr_xtr_crr;
+  *xtr_nbr=xtr_nbr_crr;
   return xtr_new_lst;           
 } /* end nco_var_lst_add */
 
-
 nm_id_sct * /* O [sct] List of dimensions associated with input variable list */
 nco_dmn_lst /* [fnc] Create list of all dimensions in file  */
 (const int nc_id, /* I [id] netCDF input-file ID */
@@ -815,6 +830,9 @@ nco_dmn_lst /* [fnc] Create list of all dimensions in file  */
     (void)nco_inq_dimname(nc_id,idx,dmn_nm);
     dmn[idx].id=idx;
     dmn[idx].nm=(char *)strdup(dmn_nm);
+
+    
+
   } /* end loop over dmn */
   
   *nbr_dmn=nbr_dmn_in;
@@ -839,24 +857,28 @@ nco_att_lst_mk
     // Check for attribute
     if( var_vtr[idx]->xpr_typ !=ncap_att) continue;
     (void)strcpy(var_nm, var_vtr[idx]->getVar().c_str());
-    
+
     rcd=nco_inq_varid_flg(out_id,var_nm,&var_id);
     if(rcd== NC_NOERR) continue;   
     rcd=nco_inq_varid_flg(in_id,var_nm,&var_id);   
     if(rcd == NC_NOERR){
       /* eliminate any duplicates from list */
       for(jdx=0;jdx<size;jdx++)
-	if(!strcmp(xtr_lst[jdx].nm,var_nm)) break;
+        if(!strcmp(xtr_lst[jdx].nm,var_nm)) break;
       if(jdx!=size) continue;
       /* fxm mmr TODO 491: memory leak xtr_lst */
       xtr_lst=(nm_id_sct *)nco_realloc(xtr_lst,(size+1)*sizeof(nm_id_sct));
       xtr_lst[size].id=var_id;
-      xtr_lst[size++].nm=(char *)strdup(var_nm);
+      xtr_lst[size].nm=(char *)strdup(var_nm); 
+
+      /* Increment */
+      size++;
+
     } /* end if */
   } /* end loop over att */
-  
+
   *nbr_lst=size;
-  
+
   return xtr_lst;
 } /* end nco_att_lst_mk() */
 
@@ -951,12 +973,12 @@ ncap_var_stretch /* [fnc] Stretch variables */
 	CONFORMABLE=False;
 	if(MUST_CONFORM){
           err_prn(fnc_nm,std::string(var_lsr->nm)+ " and " +std::string(var_gtr->nm) +" share no dimensions. "); 
-	  //(void)fprintf(stdout,"%s: ERROR %s and template %s share no dimensions\n",prg_nm_get(),var_lsr->nm,var_gtr->nm);
+	  //(void)fprintf(stdout,"%s: ERROR %s and template %s share no dimensions\n",nco_prg_nm_get(),var_lsr->nm,var_gtr->nm);
 	  //nco_exit(EXIT_FAILURE);
 	}else{
-	  if(dbg_lvl_get() >= 1) 
+	  if(nco_dbg_lvl_get() >= 1) 
 	    wrn_prn(fnc_nm,std::string(var_lsr->nm)+ " and " +std::string(var_gtr->nm) +" share no dimensions. Attempting to convolve..."); 
-	  //(void)fprintf(stdout,"\n%s: DEBUG %s and %s share no dimensions: Attempting to convolve...\n",prg_nm_get(),var_lsr->nm,var_gtr->nm);
+	  //(void)fprintf(stdout,"\n%s: DEBUG %s and %s share no dimensions: Attempting to convolve...\n",nco_prg_nm_get(),var_lsr->nm,var_gtr->nm);
 	  CONVOLVE=True;
 	} /* endif */
       }else if(var_lsr_var_gtr_dmn_shr_nbr > 0 && var_lsr_var_gtr_dmn_shr_nbr < var_lsr->nbr_dim){
@@ -968,10 +990,10 @@ ncap_var_stretch /* [fnc] Stretch variables */
           os<<var_gtr->nm <<" but " << (var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr) <<" do not.";
           err_prn(fnc_nm,os.str());
 	  
-	  //(void)fprintf(stdout,"%s: ERROR %d dimensions of %s belong to template %s but %d dimensions do not\n",prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr);
+	  //(void)fprintf(stdout,"%s: ERROR %d dimensions of %s belong to template %s but %d dimensions do not\n",nco_prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr);
 	  //nco_exit(EXIT_FAILURE);
 	}else{
-	  if(dbg_lvl_get() >= 1){ 
+	  if(nco_dbg_lvl_get() >= 1){ 
 	    std::ostringstream os;
 	    os<<var_lsr_var_gtr_dmn_shr_nbr << " dimensions of " << var_lsr->nm << " belong to template ";
 	    os<<var_gtr->nm << " but " << (var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr) <<" do not:";
@@ -980,7 +1002,7 @@ ncap_var_stretch /* [fnc] Stretch variables */
 	    wrn_prn(fnc_nm,os.str());
           }
 	  
-	  //(void)fprintf(stdout,"\n%s: DEBUG %d dimensions of %s belong to template %s but %d dimensions do not: Not broadcasting %s to %s, could attempt stretching???\n",prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm);
+	  //(void)fprintf(stdout,"\n%s: DEBUG %d dimensions of %s belong to template %s but %d dimensions do not: Not broadcasting %s to %s, could attempt stretching???\n",nco_prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm);
 	  CONVOLVE=True;
 	} /* endif */
       } /* end if */
@@ -1011,10 +1033,10 @@ ncap_var_stretch /* [fnc] Stretch variables */
   if(var_lsr_out == NULL_CEWI && CONVOLVE){
     /* Convolve variables by returned stretched variables with minimum possible number of dimensions */
     int dmn_nbr; /* Number of dimensions in convolution */
-    if(dbg_lvl_get() >= 1) 
+    if(nco_dbg_lvl_get() >= 1) 
       dbg_prn(fnc_nm,"Convolution not yet implemented, results of operation between " +std::string(var_lsr->nm) 
               + " and "+std::string(var_gtr->nm) + "are unpredictable");
-    //(void)fprintf(stdout,"\n%s: WARNING Convolution not yet implemented, results of operation between %s and %s are unpredictable\n",prg_nm_get(),var_lsr->nm,var_gtr->nm);
+    //(void)fprintf(stdout,"\n%s: WARNING Convolution not yet implemented, results of operation between %s and %s are unpredictable\n",nco_prg_nm_get(),var_lsr->nm,var_gtr->nm);
     /* Dimensions in convolution are union of dimensions in variables */
     dmn_nbr=var_lsr->nbr_dim+var_gtr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr; /* Number of dimensions in convolution */
     dmn_nbr=dmn_nbr; /* CEWI: Avert compiler warning that variable is set but never used */
@@ -1114,7 +1136,7 @@ ncap_var_stretch /* [fnc] Stretch variables */
             err_prn(fnc_nm,"var_lsr " + std::string(var_lsr->nm)+ " has dimension "+ std::string(var_lsr->dim[idx]->nm)
                     + " but var_gtr " + std::string(var_gtr->nm)+ " does not deep in ncap_var_stretch.");
 	    
-	    //(void)fprintf(stdout,"%s: ERROR var_lsr %s has dimension %s but var_gtr %s does not deep in ncap_var_stretch()\n",prg_nm_get(),var_lsr->nm,var_lsr->dim[idx]->nm,var_gtr->nm);
+	    //(void)fprintf(stdout,"%s: ERROR var_lsr %s has dimension %s but var_gtr %s does not deep in ncap_var_stretch()\n",nco_prg_nm_get(),var_lsr->nm,var_lsr->dim[idx]->nm,var_gtr->nm);
 	    //nco_exit(EXIT_FAILURE);
 	  } /* end if err */
 	} /* end loop over greater variable dimensions */
@@ -1181,27 +1203,9 @@ ncap_def_dim(
 	     prs_cls *prs_arg){
   const char fnc_nm[]="ncap_def_dim"; 
   
-  // int idx;
-  // char ch; 
-  int len;
-  
   dmn_sct *dmn_nw;             
   dmn_sct *dmn_in_e;
   dmn_sct *dmn_out_e;
-  
-  
-  
-  len=dmn_nm.length();
-  // Ckeck for a valid name 
-  /*
-  for(idx=0 ; idx < len ; idx++){ 
-    ch=dmn_nm[idx];
-    if( !( isalpha(ch) || isdigit(ch) || ch=='.' || ch=='_' ||ch=='-') ){ 
-      wrn_prn(fnc_nm,"dim \""+ dmn_nm + "\" - Invalid dimension name.");
-      return False;;
-    }
-  }         
-  */
 
   // Check if dimension already exists
   dmn_in_e=prs_arg->dmn_in_vtr.find(dmn_nm);
@@ -1959,7 +1963,7 @@ ncap_cst_mk( /* [fnc] create casting var from a list of dims */
 
 #ifdef _OPENMP
        if( omp_in_parallel())
-	 err_prn(fnc_nm,"Attempt to go into netcdf define mode while in OPENMP parallel mode");
+	 err_prn(fnc_nm,"Attempt to go into netCDF define mode while in OpenMP parallel mode");
       
 #endif
 
@@ -1993,6 +1997,7 @@ ncap_cst_mk( /* [fnc] create casting var from a list of dims */
   /* Overwrite with LHS information */
   /* fxm mmr: memory leak with var->nm */
   var->nm=(char *)strdup(tpl_nm);
+  var->nm_fll=NULL;
   var->type=NC_DOUBLE;
   var->nbr_dim=dmn_nbr;
   var->dim=dmn;
@@ -2055,7 +2060,7 @@ ncap_cst_mk( /* [fnc] create casting var from a list of dims */
   } /* end scope */
  end_var:
   
-  if(dbg_lvl_get() > 2) {
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) {
     std::ostringstream os;
     os<<"creating LHS cast template var->nm " <<var->nm <<" var->nbr_dim " <<var->nbr_dim <<" var->sz " <<var->sz; 
     wrn_prn(fnc_nm,os.str());
@@ -2102,7 +2107,7 @@ ncap_cst_do(
       var=var_tmp;
     }
     
-    if(dbg_lvl_get() > 2){
+    if(nco_dbg_lvl_get() >= nco_dbg_scl){
       std::ostringstream os;
       os<<"Stretching variable "<<var->nm << "with LHS template var->nm "<<var_cst->nm <<"var->nbr_dim " <<var_cst->nbr_dim; 
       os<<" var->sz " <<var_cst->sz;
@@ -2373,7 +2378,7 @@ ncap_get_var_mem(
   char *cp_lcl;
   
   
-  if(dbg_lvl_get() > 2){
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
     std::ostringstream os;
     os<<"Depth=" << dpt<<" "<<dmn_vtr[dpt]->nm<<" "<<srt<<" "<<end<<" "<<cnt<<" "<<srd;
     dbg_prn(fnc_nm,os.str());
@@ -2537,7 +2542,7 @@ char *cp_out)                   // Slab to be "put"
   char *cp_end;
   
     
-  if(dbg_lvl_get() > 2){
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
     std::ostringstream os;
     os<<"Depth=" << dpt<<" "<<dmn_vtr[dpt]->nm<<" "<<srt<<" "<<end<<" "<<cnt<<" "<<srd<<" "<<slb_sz<<" nbr_lpp="<<nbr_lpp;
     dbg_prn(fnc_nm,os.str());
@@ -2889,7 +2894,7 @@ int ncap_mpi_srt(
   
   
   // populate exp_vtr;
-  if(dbg_lvl_get() > 0)
+  if(nco_dbg_lvl_get() >= nco_dbg_std)
     dbg_prn(fnc_nm,"Start");
   
   
@@ -3023,14 +3028,14 @@ int ncap_mpi_srt(
   } // end while
   
   //Print out vectors
-  if(dbg_lvl_get() >0) {
+  if(nco_dbg_lvl_get() >0) {
     for(idx=0 ; idx<(int)all_ast_vtr.size(); idx++){
       for(jdx=0 ; jdx<(int)all_ast_vtr[idx].size(); jdx++)
 	std::cout << all_ast_vtr[idx][jdx]->toStringTree()<<std::endl;
       std::cout <<"-------------------------------\n";
     } //end idx
   }
-  if(dbg_lvl_get() > 0) dbg_prn(fnc_nm,"End");       
+  if(nco_dbg_lvl_get() >= nco_dbg_std) dbg_prn(fnc_nm,"End");       
   
   return 0;
 }
diff --git a/src/nco++/ncap2_utl.hh b/src/nco++/ncap2_utl.hh
index 9cb4efa..891ded2 100644
--- a/src/nco++/ncap2_utl.hh
+++ b/src/nco++/ncap2_utl.hh
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/nco/nco/src/nco++/ncap2_utl.hh,v 1.17 2010/04/09 05:18:26 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncap2_utl.hh,v 1.20 2013/04/16 21:53:24 pvicente Exp $ */
 
 /* Purpose: netCDF arithmetic processor definitions and function prototypes for ncap.c, ncap_utl.c, ncap_lex.l, and ncap_yacc.y */
 
@@ -23,7 +23,9 @@
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
 #include <string.h> /* strcmp. . . */
 #include <time.h> /* machine time */
-#include <unistd.h> /* POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #if !(defined __xlC__) && !(defined SGIMP64) // C++ compilers that do not allow stdint.h
 #include <stdint.h> // Required by g++ for LLONG_MAX, ULLONG_MAX, by icpc for int64_t
 #endif // C++ compilers that do not allow stdint.h
@@ -61,13 +63,6 @@
 /* Temporary fix for now !!*/
 #define nco_bool int
 
-/* Name list structure ncap.c
-(for subscript lists) */
-typedef struct{ /* nm_lst_sct */
-  nm_id_sct *lst; /* [sct] List element */
-  int nbr; /* [nbr] Number of structures in list */
-} nm_lst_sct;
-
 /* Used to do an pre-mpi sort */
  typedef struct exp_sct_tag { 
   ANTLR_USE_NAMESPACE(antlr)RefAST etr;
@@ -83,6 +78,7 @@ ncap_att_get	       /*   [fnc] Grab an attribute from input file */
 (int var_id,           /*   I  var id        */ 
  const char *var_nm,   /*   I [sng] var name */
  const char *att_nm,   /*   I [sng] att name */
+ int location,         /*   I [flg] 1 - att from INPUT file  2 - att from OUTPUT file */
  prs_cls *prs_arg);    /* I/O vectors of atts & vars & file names  */
 
 
@@ -91,6 +87,16 @@ ncap_att_init(           /*   [fnc] Grab an attribute from input file */
 std::string va_nm,       /* I [sng] att name of form var_nm&att_nm */ 
 prs_cls *prs_arg);       /* I/O vectors of atts & vars & file names  */
 
+
+int
+ncap_att_gnrl
+(const std::string s_dst,
+ const std::string s_src,
+ int location,         /*   I [flg] 1 - att from INPUT file  2 - att from OUTPUT file */
+ prs_cls  *prs_arg);
+
+
+
 nco_bool                /* O [flg] true if var has been stretched */
 ncap_att_stretch    /* stretch a single valued attribute from 1 to sz */
 (var_sct* var,      /* I/O [sct] variable */       
diff --git a/src/nco++/ncoEnumTokenTypes.hpp b/src/nco++/ncoEnumTokenTypes.hpp
index 66d6bef..a003430 100644
--- a/src/nco++/ncoEnumTokenTypes.hpp
+++ b/src/nco++/ncoEnumTokenTypes.hpp
@@ -1,7 +1,7 @@
 #ifndef INC_ncoEnumTokenTypes_hpp_
 #define INC_ncoEnumTokenTypes_hpp_
 
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoEnumTokenTypes.hpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoEnumTokenTypes.hpp"$ */
 
 #ifndef CUSTOM_API
 # define CUSTOM_API
@@ -30,94 +30,95 @@
 		WHERE_ASSIGN = 22,
 		MISS2ZERO = 23,
 		VSORT = 24,
-		VABS = 25,
-		VSQR2 = 26,
-		SEMI = 27,
-		DEFDIM = 28,
-		LPAREN = 29,
-		NSTRING = 30,
-		COMMA = 31,
-		RPAREN = 32,
-		WHILE = 33,
-		BREAK = 34,
-		CONTINUE = 35,
-		IF = 36,
-		ELSE = 37,
-		WHERE = 38,
-		ELSEWHERE = 39,
-		PRINT = 40,
-		VAR_ID = 41,
-		ATT_ID = 42,
-		LCURL = 43,
-		RCURL = 44,
-		FOR = 45,
-		COLON = 46,
-		LSQUARE = 47,
-		DIM_ID = 48,
-		RSQUARE = 49,
-		DIVIDE = 50,
-		DIM_MTD_ID = 51,
-		CALL_REF = 52,
-		DOT = 53,
-		FUNC = 54,
-		INC = 55,
-		DEC = 56,
-		LNOT = 57,
-		PLUS = 58,
-		MINUS = 59,
-		TIMES = 60,
-		CARET = 61,
-		MOD = 62,
-		FLTHAN = 63,
-		FGTHAN = 64,
-		LTHAN = 65,
-		GTHAN = 66,
-		GEQ = 67,
-		LEQ = 68,
-		EQ = 69,
-		NEQ = 70,
-		LAND = 71,
-		LOR = 72,
-		QUESTION = 73,
-		ASSIGN = 74,
-		PLUS_ASSIGN = 75,
-		MINUS_ASSIGN = 76,
-		TIMES_ASSIGN = 77,
-		DIVIDE_ASSIGN = 78,
-		FLOAT = 79,
-		DOUBLE = 80,
-		INT = 81,
-		BYTE = 82,
-		UBYTE = 83,
-		SHORT = 84,
-		USHORT = 85,
-		UINT = 86,
-		INT64 = 87,
-		UINT64 = 88,
-		N4STRING = 89,
-		DIM_ID_SIZE = 90,
-		NRootAST = 91,
-		SHIFTL = 92,
-		SHIFTR = 93,
-		QUOTE = 94,
-		DGT = 95,
-		LPH = 96,
-		LPHDGT = 97,
-		XPN = 98,
-		VAR_NM_QT = 99,
-		BLASTOUT = 100,
-		UNUSED_OPS = 101,
-		WS = 102,
-		CXX_COMMENT = 103,
-		C_COMMENT = 104,
-		NUMBER_DOT = 105,
-		NUMBER = 106,
-		VAR_ATT = 107,
-		VAR_ATT_QT = 108,
-		DIM_QT = 109,
-		DIM_VAL = 110,
-		INCLUDE = 111,
-		LMT_DMN = 112,
+		VRSORT = 25,
+		VABS = 26,
+		VSQR2 = 27,
+		SEMI = 28,
+		DEFDIM = 29,
+		LPAREN = 30,
+		NSTRING = 31,
+		COMMA = 32,
+		RPAREN = 33,
+		WHILE = 34,
+		BREAK = 35,
+		CONTINUE = 36,
+		IF = 37,
+		ELSE = 38,
+		WHERE = 39,
+		ELSEWHERE = 40,
+		PRINT = 41,
+		VAR_ID = 42,
+		ATT_ID = 43,
+		LCURL = 44,
+		RCURL = 45,
+		FOR = 46,
+		COLON = 47,
+		LSQUARE = 48,
+		DIM_ID = 49,
+		RSQUARE = 50,
+		DIVIDE = 51,
+		DIM_MTD_ID = 52,
+		CALL_REF = 53,
+		DOT = 54,
+		FUNC = 55,
+		INC = 56,
+		DEC = 57,
+		LNOT = 58,
+		PLUS = 59,
+		MINUS = 60,
+		TIMES = 61,
+		CARET = 62,
+		MOD = 63,
+		FLTHAN = 64,
+		FGTHAN = 65,
+		LTHAN = 66,
+		GTHAN = 67,
+		GEQ = 68,
+		LEQ = 69,
+		EQ = 70,
+		NEQ = 71,
+		LAND = 72,
+		LOR = 73,
+		QUESTION = 74,
+		ASSIGN = 75,
+		PLUS_ASSIGN = 76,
+		MINUS_ASSIGN = 77,
+		TIMES_ASSIGN = 78,
+		DIVIDE_ASSIGN = 79,
+		FLOAT = 80,
+		DOUBLE = 81,
+		INT = 82,
+		BYTE = 83,
+		UBYTE = 84,
+		SHORT = 85,
+		USHORT = 86,
+		UINT = 87,
+		INT64 = 88,
+		UINT64 = 89,
+		N4STRING = 90,
+		DIM_ID_SIZE = 91,
+		NRootAST = 92,
+		SHIFTL = 93,
+		SHIFTR = 94,
+		QUOTE = 95,
+		DGT = 96,
+		LPH = 97,
+		LPHDGT = 98,
+		XPN = 99,
+		VAR_NM_QT = 100,
+		BLASTOUT = 101,
+		UNUSED_OPS = 102,
+		WS = 103,
+		CXX_COMMENT = 104,
+		C_COMMENT = 105,
+		NUMBER_DOT = 106,
+		NUMBER = 107,
+		VAR_ATT = 108,
+		VAR_ATT_QT = 109,
+		DIM_QT = 110,
+		DIM_VAL = 111,
+		INCLUDE = 112,
+		LMT_DMN = 113,
 		NULL_TREE_LOOKAHEAD = 3
 	};
 #endif /*INC_ncoEnumTokenTypes_hpp_*/
diff --git a/src/nco++/ncoGrammer.g b/src/nco++/ncoGrammer.g
index 610a946..36b042e 100644
--- a/src/nco++/ncoGrammer.g
+++ b/src/nco++/ncoGrammer.g
@@ -1,16 +1,16 @@
 header {
-/* $Header: /cvsroot/nco/nco/src/nco++/ncoGrammer.g,v 1.191 2012/02/13 17:42:00 hmb Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncoGrammer.g,v 1.203 2013/10/22 03:03:55 zender Exp $ */
 
 /* Purpose: ANTLR Grammar and support files for ncap2 */
 
-/* Copyright (C) 2005--2012 Charlie Zender
+/* Copyright (C) 2005--2012 Henry Butowsky and Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
     // C Standard Headers
     #include <assert.h>
     #include <ctype.h>
-    #include <malloc.h>
+	#include <stdlib.h>
     #include <math.h>
     #if !(defined __xlC__) && !(defined SGIMP64) // C++ compilers that do not allow stdint.h
     #include <stdint.h> // Required by g++ for LLONG_MAX, ULLONG_MAX, by icpc for int64_t    
@@ -73,16 +73,15 @@ tokens {
     ATAN2;  //Used indirectly
     WHERE_ASSIGN;
     MISS2ZERO; //used only in VarOp -sets all missing values to zero
-    VSORT;     // only used outside of grammer to sort in VarOp 
+    VSORT;     // ascending sort only used outside of grammer to sort in VarOp  
+    VRSORT;     // reverse sort only used outside of grammer to sort in VarOp 
     VABS;      // imaginary token used in VarOp to return absolute value 
     VSQR2;     // imaginary token used in VarOp to return square of number 
-
 }
 {
 
 public:
    std::vector<std::string> inc_vtr;
-
 }
 
 program:
@@ -124,18 +123,14 @@ statement:
         | PRINT^ LPAREN! (VAR_ID|ATT_ID|NSTRING) (COMMA! NSTRING)?  RPAREN! SEMI! 
         // Code block
         | block
-
    ;        
 
-
-
 // a bracketed block
 block:
     LCURL! (statement)* RCURL!
     { #block = #( [BLOCK, "block"], #block ); }
     ;
 
-
 for_stmt:
      FOR^ LPAREN! (e1:expr)? SEMI! (e2:expr)? SEMI! (e3:expr)? RPAREN! st:statement
       /*   { if(#e1==NULL)  #e1 = #([ NULL_NODE, "null_stmt"]); 
@@ -145,18 +140,14 @@ for_stmt:
          }  */
      ;
 
-
 lmt:    (expr)? (COLON (expr)?)*
         { #lmt = #( [LMT, "lmt"], #lmt ); }
    ;
 
-
-
 lmt_list: LPAREN! lmt (COMMA! lmt)*  RPAREN!
           { #lmt_list = #( [LMT_LIST, "lmt_list"], #lmt_list ); }
   ;
 
-
 // Use vars in dimension list so dims in [] can
 // be used with or with out $ prefix. ie "$lon" or "lon" 
 // So parser is compatible with ncap1
@@ -192,8 +183,6 @@ call_ref: CALL_REF^(VAR_ID|ATT_ID)
 
 /*************************************************************/
 /* start  expressions */
-
-
 meth_exp: primary_exp (DOT^ FUNC func_arg)*
      ;
 
@@ -206,7 +195,6 @@ unaryleft_exp: meth_exp (
                           )?
     ;
 
-
 // unary right association   
 /*
 unary_exp:  ( LNOT^| PLUS^| MINUS^ |INC^ | DEC^ | TIMES^ ) unary_exp
@@ -219,8 +207,6 @@ unary_exp:  ( LNOT^| PLUS^| MINUS^ |INC^ | DEC^
              | unaryleft_exp
     ;    
 
-
-
 // right association
 pow_exp: unary_exp (CARET^ pow_exp )? 
     ;
@@ -290,10 +276,8 @@ primary_exp
     | hyper_slb  //remember this includes VAR_ID & ATT_ID
   ;
 
-
 /* End  expressions */
 /*************************************************************/
-
 	  
 imaginary_token
 	: NRootAST
@@ -301,20 +285,15 @@ imaginary_token
 
 class ncoLexer extends Lexer;
 
-
 options {
     k = 4; 
 
-
-
     defaultErrorHandler=false;
     filter=BLASTOUT;
     testLiterals=false;
     charVocabulary = '\u0000'..'\u00FF';
-
 }
 
-
 tokens {
 // token keywords
     IF ="if";
@@ -338,12 +317,9 @@ tokens {
     SET_MISS="set_miss";
     CH_MISS="change_miss";
     */
-
 }
 
-
 {
-
 private:
     prs_cls *prs_arg;
 public:
@@ -370,13 +346,9 @@ public:
 			selector.retry();
 		}
 		// else ANTLR_USE_NAMESPACE(std)cout << "Hit EOF of main file" << ANTLR_USE_NAMESPACE(std)endl;
-		
 	}
-
-
 }
 
-
 ASSIGN options { paraphrase="="; } : '=';
 
 PLUS_ASSIGN options { paraphrase="+="; }  : "+=";
@@ -459,8 +431,6 @@ protected LPHDGT:  ( 'a'..'z' | 'A'..'Z' | '_' | '0'..'9');
 protected XPN:     ( 'e' | 'E' ) ( '+' | '-' )? ('0'..'9')+ ;
 protected VAR_NM_QT: (LPHDGT|'-'|'+'|'.'|'('|')'|':' )+  ;      
 
-
-
 protected BLASTOUT: .
          {
           // blast out of lexer & parser
@@ -477,10 +447,6 @@ protected BLASTOUT: .
           throw  ANTLR_USE_NAMESPACE(antlr)TokenStreamRecognitionException(re);
          }  
     ;     
-
-
-
-
 	
 UNUSED_OPS: ( "%=" | "^=" | "&=" | "|=" ) {
   
@@ -493,21 +459,17 @@ UNUSED_OPS: ( "%=" | "^=" | "&=" | "|=" ) {
          }  
     ;    
 
-
 // Whitespace -- ignored
 WS  options {paraphrase="white space"; } 	
 	: ( ' ' |'\t' { tab(); } | '\f' |'\n' { newline(); })
 		{ $setType(antlr::Token::SKIP);}
 	;
 
-
-
 CXX_COMMENT options {paraphrase="a C++-style comment"; } 
     : "//" (~'\n')* '\n'
     { $setType(antlr::Token::SKIP); newline(); }
     ;
 
-
 C_COMMENT options {paraphrase="a C-style comment"; } 
         :       
 		"/*"
@@ -522,7 +484,7 @@ C_COMMENT options {paraphrase="a C-style comment"; }
 // Numbers like .123, .2e3 ,.123f, 0.23d
 // csz: Treat "l" or "L" following decimal point as "long double" as per C++
 NUMBER_DOT options {paraphrase="a floating point number"; } 
-     :
+    :
       '.' (DGT)+ (XPN)? { $setType(DOUBLE); }  
       ( ('D'|'d')!     {  $setType(DOUBLE);}
        |('F'|'f')!     {  $setType(FLOAT);}
@@ -548,22 +510,43 @@ NUMBER:
     )?        
 ;
 
-
-
 // Return var or att (var_nm at att_nm)
-VAR_ATT options {testLiterals=true; paraphrase="variable or attribute identifier"; } 
-        :  (LPH)(LPH|DGT)*   
+VAR_ATT options {testLiterals=true; paraphrase="variable or function or attribute identifier"; } 
+     :  (LPH)(LPH|DGT)*   
             {
-            // check function/method vector
-            if( std::binary_search(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls($getText)))
-               $setType(FUNC);             
-            else 
-               $setType(VAR_ID); 
-
-           }   
+             // try to intelligently guess the type to avoid un-necessary function search  
+            bool bDoSearch;
+            switch( LA(1) ){
+               case ' ': 
+               case '\t':
+               case '(':
+                 bDoSearch=true;
+                 $setType(VAR_ID); 
+                 break;
+               case '@':
+                 bDoSearch=false;
+                 $setType(ATT_ID);
+                 break;    
+               default: 
+                 bDoSearch=false;
+                 $setType(VAR_ID);
+                 break;
+            }  
+            if(bDoSearch){   
+               string fnc_nm=$getText; 
+               std::vector<fmc_cls>::iterator we=std::lower_bound(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(fnc_nm));   
+               if(we!=prs_arg->fmc_vtr.end() && we->fnm()==fnc_nm){
+                 int idx=we-prs_arg->fmc_vtr.begin();
+                 char buff[10]; 
+                 sprintf(buff,"%d",idx);
+                 // VERY IMPORTANT - append the index in fmc_vtr to the function name - (name#idx)
+                 $setText(fnc_nm+"#"+buff);    
+                 $setType(FUNC);
+               }             
+            } 
+           }  
            ('@'(LPH)(LPH|DGT)*  {$setType(ATT_ID); })?
-   ;
-
+;
 
 // Return a quoted var or att (var_nm at att_nm)
 VAR_ATT_QT :( '\''!)
@@ -572,9 +555,6 @@ VAR_ATT_QT :( '\''!)
              ('\''!)
    ;     
 
-
-
-
 //Return a quoted dim
 DIM_QT: ( '\''!)
            ('$'! VAR_NM_QT {$setType(DIM_ID);})
@@ -590,15 +570,12 @@ DIM_VAL options { paraphrase="dimension identifier"; }
          )? 
    ;  
 
- 
-
 // Shorthand for naming dims in method e.g $0,$1, $2 etc
 DIM_MTD_ID 
   options{paraphrase="dimension identifier";} 
   : '$'! (DGT)+
    ;            
 
-
 NSTRING
   options{paraphrase="a string";} 
   : '"'! ( ~('"'|'\n'))* '"'! 
@@ -606,8 +583,6 @@ NSTRING
        ('s'! {$setType(N4STRING);} )? 
    ;   
 
-
-
 INCLUDE
 	:	"#include" (WS)? f:NSTRING
 		{
@@ -640,7 +615,6 @@ INCLUDE
 		}
 	;
 
-
 class ncoTree extends TreeParser;
 {
 
@@ -652,9 +626,6 @@ public:
     prs_cls *prs_arg;
     ASTFactory myFactory;
 
-
-
-
      //Structure to hold AST pointers to indices in hyperslabs -only temporary 
      typedef struct{
         ANTLR_USE_NAMESPACE(antlr)RefAST ind[3];
@@ -701,7 +672,6 @@ vector<ast_lmt_sct> &ast_lmt_vtr)
          hyp.ind[0]=ANTLR_USE_NAMESPACE(antlr)nullAST;
          hyp.ind[1]=ANTLR_USE_NAMESPACE(antlr)nullAST;
          hyp.ind[2]=ANTLR_USE_NAMESPACE(antlr)nullAST;
-
              
        if(lRef->getType()!=LMT) 
             return 0;
@@ -752,7 +722,6 @@ vector<ast_lmt_sct> &ast_lmt_vtr)
        lRef=lRef->getNextSibling();
      }
      return nbr_dmn;
-
 } 
 
 int 
@@ -763,50 +732,19 @@ NcapVector<lmt_sct*> &lmt_vtr )
 int nbr_dmn;
 int idx;
 int jdx;
-long lcl_ind[3];
-
-var_sct *var_out;
 lmt_sct *lmt_ptr;
 RefAST aRef;
 
 vector<ast_lmt_sct> ast_lmt_vtr;
 
-
 // populate ast_lmt_vtr
 nbr_dmn=lmt_init(lmt,ast_lmt_vtr);
 
   for(idx=0 ; idx <nbr_dmn ; idx++){
 
-
-     lcl_ind[0]=-2; lcl_ind[1]=-2; lcl_ind[2]=0; 
-
-    for(jdx=0 ; jdx <3 ; jdx++){
-
-     aRef=ast_lmt_vtr[idx].ind[jdx];
-
-     if(!aRef)
-        continue; //do nothing - use default lcl_ind values     
-     else if( aRef->getType() == COLON){
-       if(jdx <2) lcl_ind[jdx]=-1;
-     }else{
-         // Calculate number using out()
-         var_out=out(aRef);
-
-         // convert result to type int
-          var_out=nco_var_cnf_typ(NC_INT,var_out);    
-         (void)cast_void_nctype((nc_type)NC_INT,&var_out->val);
-
-          // only interested in the first value.
-         lcl_ind[jdx]=var_out->val.ip[0];
-
-         var_out=nco_var_free(var_out);
-        }
-     }// end jdx
-         
      // fill out lmt structure
      // use same logic as nco_lmt_prs 
      lmt_ptr=(lmt_sct*)nco_calloc((size_t)1,sizeof(lmt_sct));
-
      lmt_ptr->nm=NULL;
      //lmt_ptr->lmt_typ=-1;
      lmt_ptr->is_usr_spc_lmt=True; /* True if any part of limit is user-specified, else False */
@@ -815,36 +753,51 @@ nbr_dmn=lmt_init(lmt,ast_lmt_vtr);
      lmt_ptr->srd_sng=NULL;
      lmt_ptr->is_usr_spc_min=False;
      lmt_ptr->is_usr_spc_max=False;
+     /* rec_skp_ntl_spf is used for record dimension in multi-file operators */
+     lmt_ptr->rec_skp_ntl_spf=0L; /* Number of records skipped in initial superfluous files */
 
-     /* rec_skp_nsh_spf is used for record dimension in multi-file operators */
-     lmt_ptr->rec_skp_nsh_spf=0L; /* Number of records skipped in initial superfluous files */
-    
-    /* Fill-in structure */
-    if( lcl_ind[0] >= 0){ 
-           lmt_ptr->is_usr_spc_min=True;
-           lmt_ptr->srt=lcl_ind[0]; 
-    }    
-
-    /* Fill-in structure */
-    if( lcl_ind[1] >= 0) {
-           lmt_ptr->is_usr_spc_max=True;
-           lmt_ptr->end=lcl_ind[1];
-    }    
-
-    /* Fill-in structure */
-    if( lcl_ind[2] > 0) {
-           lmt_ptr->srd_sng=strdup("~fill_in");
-           lmt_ptr->srd=lcl_ind[2];
-    }    
-
+    for(jdx=0 ; jdx <3 ; jdx++){
+      long ldx=0L;
+      var_sct *var_out;
+
+      aRef=ast_lmt_vtr[idx].ind[jdx];
+
+      if(aRef && aRef->getType() != COLON ){
+        // Calculate number using out()
+        var_out=out(aRef);
+        // convert result to type int
+        var_out=nco_var_cnf_typ(NC_INT,var_out);    
+        (void)cast_void_nctype((nc_type)NC_INT,&var_out->val);
+         // only interested in the first value.
+        ldx=var_out->val.ip[0];
+        var_out=nco_var_free(var_out);
+        
+        // switch jdx 0-srt,1-end,2-srd
+        switch(jdx){
+          case 0: 
+             lmt_ptr->is_usr_spc_min=True;
+             lmt_ptr->srt=ldx;
+             break;
+          case 1: //end
+             lmt_ptr->is_usr_spc_max=True;
+             lmt_ptr->end=ldx;
+             break;
+          case 2: //srd
+             lmt_ptr->srd_sng=strdup("~fill_in");
+             lmt_ptr->srd=ldx;         
+             break;
+        }
+      }
+    }// end jdx
+         
     /* need to deal with situation where only start is defined -- ie picking only a single value */
-    if(lcl_ind[0] >=0 && lcl_ind[1]==-2){
-          lmt_ptr->is_usr_spc_max=True;
-          lmt_ptr->end=lcl_ind[0]; 
+    if( lmt_ptr->is_usr_spc_min==True && lmt_ptr->is_usr_spc_max==False && lmt_ptr->srd_sng==NULL){
+        lmt_ptr->is_usr_spc_max=True;
+        lmt_ptr->end=lmt_ptr->srt; 
     }    
 
     lmt_vtr.push_back(lmt_ptr);
-   } // end idx
+  } // end idx
 
    return nbr_dmn;
 } /* end lmt_mk */
@@ -868,7 +821,7 @@ public:
      ncap_omp_exe(
      std::vector< std::vector<RefAST> > &all_ast_vtr,
      ncoTree** wlk_ptr,
-     int nbr_wlk);
+     int wlk_nbr);
 
      if(tr== ANTLR_USE_NAMESPACE(antlr)nullAST)
         err_prn("run_dbl"," REPORTS given a null AST Refrence\n");
@@ -914,8 +867,6 @@ public:
     goto end;
     } //end if
 
-
-
 small: 
      idx=0;
      ntr=tr;
@@ -1001,9 +952,6 @@ RefAST nco_dupList(RefAST tr){
      }
 } // end native block
 
-
-
-
 // Return the number of dimensions in lmt subscript
 lmt_peek returns [int nbr_dmn=0]
 
@@ -1018,8 +966,6 @@ lmt_peek returns [int nbr_dmn=0]
   }
   ;
 
-
-
 statements returns [int iret=0] 
 {
 var_sct *var;
@@ -1049,7 +995,6 @@ static std::vector<std::string> lpp_vtr;
            // std::cout << "Modified assign "<<exp->toStringTree()<<std::endl;      
          }
        } 
-       
 
        var=out(exp->getFirstChild());
        if(var != (var_sct*)NULL)
@@ -1083,7 +1028,6 @@ static std::vector<std::string> lpp_vtr;
              iret=run_exe(stmt->getFirstChild(),lpp_vtr.size());
          }else
            iret=statements(stmt);     
-         
       }
 
       // See if else stmt exists (3rd sibling)       
@@ -1093,7 +1037,6 @@ static std::vector<std::string> lpp_vtr;
            iret=run_exe(stmt->getFirstChild(),lpp_vtr.size());
          }else
            iret=statements(stmt);     
-             
       }
  
       var=NULL_CEWI;
@@ -1205,13 +1148,11 @@ static std::vector<std::string> lpp_vtr;
        
         if(iret==BREAK) break;
 
-
         if(b3){
           var_f3=out(e3);
           var_f3=nco_var_free(var_f3);
         }
 
-  
         if(b2){
          var_f2=out(e2);
          br=ncap_var_lgcl(var_f2);
@@ -1226,7 +1167,6 @@ static std::vector<std::string> lpp_vtr;
         
     } // end  for action
 
-
     | ELSE { iret=ELSE;}
     | BREAK { iret=BREAK;}
     | CONTINUE {iret=CONTINUE;} 
@@ -1244,7 +1184,6 @@ static std::vector<std::string> lpp_vtr;
         (void)ncap_def_dim(def->getText(),sz,prs_arg);
      }
 
-
     // All the following functions have iret=0
     | (#(PRINT VAR_ID))=> #(PRINT pvid:VAR_ID){
 
@@ -1254,11 +1193,9 @@ static std::vector<std::string> lpp_vtr;
           std::string va_nm(pvid->getText());
           NcapVar *Nvar;
           
-          
           if(prs_arg->ntl_scn) goto end2;
           Nvar=prs_arg->var_vtr.find(va_nm);
 
-
           if(Nvar && Nvar->flg_mem){   
             wrn_prn(fnc_nm,"Cannot print out RAM variables at the moment!");
             goto end2;
@@ -1291,10 +1228,8 @@ static std::vector<std::string> lpp_vtr;
            (void)nco_prn_var_val_lmt(fl_id,va_nm.c_str(),(lmt_sct*)NULL,0L,fmt_sng,prs_arg->FORTRAN_IDX_CNV,False,False);
              
           if(fmt_sng) fmt_sng=(char*)nco_free(fmt_sng); 
-         
 
         end2: ;
-
     }
     | (#(PRINT ATT_ID))=> #(PRINT patt:ATT_ID){
 
@@ -1372,7 +1307,6 @@ var=NULL_CEWI;
 }
    : (#(VAR_ID LMT_LIST ))=> #(vid:VAR_ID lmt:LMT_LIST){
 
-
                std::string var_nm; 
                var_sct *var_lhs;
                var_sct *var_rhs;
@@ -1380,22 +1314,17 @@ var=NULL_CEWI;
 
                var_nm=vid->getText();
 
-
-
-              if(dbg_lvl_get() > 0)
-                dbg_prn(fnc_nm,var_nm+"(limits)");
+              if(nco_dbg_lvl_get() >= nco_dbg_scl) dbg_prn(fnc_nm,var_nm+"(limits)");
 
               // evaluate rhs for side effects eg new dims or lvalues 
                var_rhs=out(vid->getNextSibling());         
                var_rhs=nco_var_free(var_rhs);               
 
-
                var_lhs=prs_arg->ncap_var_init(var_nm,false);
                if(var_lhs){
                  var=nco_var_dpl(var_lhs);
                  (void)prs_arg->ncap_var_write(var_lhs,bram);
                } else {
-
                  // set var to udf
                  var_lhs=ncap_var_udf(var_nm.c_str());
                  var=nco_var_dpl(var_lhs);
@@ -1417,10 +1346,7 @@ var=NULL_CEWI;
 
               var_nm=vid1->getText();               
 
-              if(dbg_lvl_get() > 0)
-                dbg_prn(fnc_nm,var_nm+"[dims]");
-
-
+              if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm+"[dims]");
 
               // set class wide variables
               bcst=true;  
@@ -1444,9 +1370,7 @@ var=NULL_CEWI;
                // return undef if dim missing 
                if( idx <str_vtr_sz){
                   var=NULL_CEWI;
-
                } else {
-
                  // Cast is applied in VAR_ID action in function out()
                  var_cst=ncap_cst_mk(str_vtr,prs_arg);
 
@@ -1457,12 +1381,10 @@ var=NULL_CEWI;
                    var_cst=nco_var_cnf_typ(var1->type,var_cst);
                    var_cst->typ_dsk=var1->type;
                    var=nco_var_dpl(var_cst);
-
                    }
                  var1=nco_var_free(var1);
               }
               
-
               if(!var){
                 var1=ncap_var_udf(var_nm.c_str());
                 Nvar=new NcapVar(var1);
@@ -1479,7 +1401,6 @@ var=NULL_CEWI;
                 var_cst=nco_var_free(var_cst);
  
               bcst=false;   
-              
             }
 
           | vid2:VAR_ID {   
@@ -1488,10 +1409,7 @@ var=NULL_CEWI;
               
               var_nm=vid2->getText();
 
-
-              if(dbg_lvl_get() > 0)
-                dbg_prn(fnc_nm,var_nm);
-             
+              if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm);
 
                var_sct *var1;
                
@@ -1499,7 +1417,6 @@ var=NULL_CEWI;
                bcst=false;
                var_cst=NULL_CEWI; 
              
-
                // get shape from RHS
                var1=out(vid2->getNextSibling());
                (void)nco_free(var1->nm);                
@@ -1527,9 +1444,7 @@ var=NULL_CEWI;
         var_sct *var1;
         NcapVar *Nvar;
 
-        if(dbg_lvl_get() > 0)
-          dbg_prn(fnc_nm,att2->getText());
-
+        if(nco_dbg_lvl_get() > nco_dbg_var) dbg_prn(fnc_nm,att2->getText());
       
         var1=ncap_var_udf(att2->getText().c_str());
 
@@ -1543,7 +1458,6 @@ var=NULL_CEWI;
 
     ; // end assign block
 
-
 assign [bool bram] returns [var_sct *var]
 {
 const std::string fnc_nm("assign"); 
@@ -1572,9 +1486,7 @@ var=NULL_CEWI;
               
                var_nm=vid->getText();
                
-               if(dbg_lvl_get() > 0)
-                 dbg_prn(fnc_nm,var_nm+"(limits)");
-
+               if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm+"(limits)");
 
                // check to see if we are dealing with a single
                // index in limit -- i.e hyperslab a mult-dimensional var
@@ -1595,11 +1507,9 @@ var=NULL_CEWI;
               // Overwrite bram possibly 
               if(Nvar) 
                 bram=Nvar->flg_mem;
-
                
               // Deal with RAM variables
               if(bram) {
- 
                   
                  if(Nvar && Nvar->flg_stt==1){
                     var_sct *var_ini;
@@ -1613,10 +1523,8 @@ var=NULL_CEWI;
                  if(Nvar && Nvar->flg_stt==2)
                     var_lhs=Nvar->var;    
                    
-                 
                  if(!Nvar)
                     var_lhs=prs_arg->ncap_var_init(var_nm,true);       
-                 
                     
                   nbr_dmn=var_lhs->nbr_dim;
 
@@ -1624,15 +1532,12 @@ var=NULL_CEWI;
                   if( lmt_mk(lmt_Ref,lmt_vtr) == 0)
                     err_prn(fnc_nm,"Invalid hyperslab limits for variable "+ var_nm);
                   
-
                  if( lmt_vtr.size() != nbr_dmn)
                     err_prn(fnc_nm,"Number of hyperslab limits for variable "+ var_nm+" doesn't match number of dimensions");
-                 
 
                  // add dim names to dimension list 
                  for(idx=0 ; idx < nbr_dmn;idx++) 
                     lmt_vtr[idx]->nm=strdup(var_lhs->dim[idx]->nm);   
-        
                 
                  slb_sz=1;        
                 // fill out limit structure
@@ -1650,7 +1555,6 @@ var=NULL_CEWI;
                  if(var_rhs->sz == 1)
                    (void)ncap_att_stretch(var_rhs,slb_sz);
 
-
                  // make sure var_lhs and var_rhs are the same size
                  // and that they are the same shape (ie they conform!!)          
                  if(var_rhs->sz != slb_sz){
@@ -1660,13 +1564,10 @@ var=NULL_CEWI;
                 (void)nco_put_var_mem(var_rhs,var_lhs,lmt_vtr);
                 if(Nvar==NULL)
                    (void)prs_arg->ncap_var_write(var_lhs,true); 
-             
-
 
               // deal with Regular Vars
               } else {                 
 
-
               // if var undefined in O or defined but not populated
                if(!Nvar || ( Nvar && Nvar->flg_stt==1)){              
                   // if var isn't in ouptut then copy it there
@@ -1689,15 +1590,12 @@ var=NULL_CEWI;
                if( lmt_mk(lmt_Ref,lmt_vtr) == 0)
                   err_prn(fnc_nm,"Invalid hyperslab limits for variable "+ var_nm);
                
-
                if( lmt_vtr.size() != nbr_dmn)
                   err_prn(fnc_nm,"Number of hyperslab limits for variable "+ var_nm+" doesn't match number of dimensions");
-               
 
                 // add dim names to dimension list 
                for(idx=0 ; idx < nbr_dmn;idx++) 
                    lmt_vtr[idx]->nm=strdup(var_lhs->dim[idx]->nm);   
-        
                 
                 var_lhs->sz=1;        
                 // fill out limit structure
@@ -1722,7 +1620,6 @@ var=NULL_CEWI;
                if(var_rhs->sz != var_lhs->sz){
                  err_prn(fnc_nm, "Hyperslab for "+var_nm+" - number of elements on LHS(" +nbr2sng(var_lhs->sz) +  ") doesn't equal number of elements on RHS(" +nbr2sng(var_rhs->sz) +  ")");                                       
                  }
-
                 
               // swap values about
               var_lhs->val.vp=var_rhs->val.vp; 
@@ -1744,14 +1641,10 @@ var=NULL_CEWI;
 
               } // end put block !!
 
-                 
-
              } // end else if regular var
 
-
               var_rhs=nco_var_free(var_rhs);
               
-               
                // Empty and free vector 
               for(idx=0 ; idx < nbr_dmn ; idx++)
                 (void)nco_lmt_free(lmt_vtr[idx]);
@@ -1762,10 +1655,8 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
               else 
                 var=prs_arg->ncap_var_init(var_nm,true);
                
-
         } // end action
 
-
         // Deal with LHS casting 
         | (#(VAR_ID DMN_LIST ))=> #(vid1:VAR_ID dmn:DMN_LIST){   
 
@@ -1776,15 +1667,12 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
 
               var_nm=vid1->getText();
               
-              if(dbg_lvl_get() > 0)
-                dbg_prn(fnc_nm,var_nm+"[dims]");
-
+              if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm+"[dims]");
 
               // set class wide variables
               bcst=true;  
               var_cst=NULL_CEWI;
 
-
               //aRef=vid->getFirstChild()->getFirstChild();
               aRef=dmn->getFirstChild();
          
@@ -1809,8 +1697,6 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
               // to have a size of one e.g if the dim(s) in the list have a size of one   
               bool br1=(var_cst->sz >=1 && var1->sz==1);
               bool br2=(var_cst->sz==var1->sz &&  ( ncap_var_is_att(var1) ||var1->has_dpl_dmn==-1 ));
-              
-              
 
               // The code rebuilds var1 with the shape from the casting variable  
               if( br1 || br2){
@@ -1832,22 +1718,16 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
                
                //blow out if vars not the same size      
              if(var1->sz != var_cst->sz) 
-                  err_prn(fnc_nm, "LHS cast for "+var_nm+" - cannot make RHS "+ std::string(var1->nm) + " conform.");               
-     
+                  err_prn(fnc_nm, "LHS cast for "+var_nm+" - cannot make RHS "+ std::string(var1->nm) + " conform.");          
               var1->nm=(char*)nco_free(var1->nm);
-
               var1->nm =strdup(var_nm.c_str());
 
-
-
               // See If we have to return something
               if(dmn->getNextSibling() && dmn->getNextSibling()->getType()==NORET)
                 var=NULL_CEWI;
               else 
                 var=nco_var_dpl(var1);     
 
-
-              
               //call to nco_var_get() in ncap_var_init() uses this property
               var1->typ_dsk=var1->type;
               (void)prs_arg->ncap_var_write(var1,bram);
@@ -1855,7 +1735,6 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
               bcst=false;
               var_cst=nco_var_free(var_cst); 
 
-
           } // end action
            
           | vid2:VAR_ID {   
@@ -1866,10 +1745,7 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
  
                var_nm=vid2->getText();       
 
-              if(dbg_lvl_get() > 0)
-                dbg_prn(fnc_nm,var_nm);
-
-
+              if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm);
                
                bcst=false;
                var_cst=NULL_CEWI; 
@@ -1907,13 +1783,11 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
                (void)prs_arg->ncap_var_write(var1,bram);
                //(void)ncap_var_write_omp(var1,bram,prs_arg);
 
-                          
                 // See If we have to return something
                if(vid2->getFirstChild() && vid2->getFirstChild()->getType()==NORET)
                  var=NULL_CEWI;
                else 
                  var=prs_arg->ncap_var_init(var_nm,true);               ;
-
                          
        } // end action
  
@@ -1928,8 +1802,7 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
             var_sct *var1;
             string sa=att2->getText();
 
-            if(dbg_lvl_get() > 0)
-              dbg_prn(fnc_nm,sa);
+            if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,sa);
  
             var1=out(att2->getNextSibling());
 
@@ -1950,7 +1823,6 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
             NcapVar *Nvar=new NcapVar(var1,sa);
             prs_arg->var_vtr.push_ow(Nvar);       
 
-
                // See If we have to return something
             if(att2->getFirstChild() && att2->getFirstChild()->getType()==NORET)
               var=NULL_CEWI;
@@ -1960,7 +1832,6 @@ end0:         if(lmt->getNextSibling() && lmt->getNextSibling()->getType()==NORE
        } // end action
    ;
                
-
 out returns [var_sct *var]
 {
     const std::string fnc_nm("out"); 
@@ -1996,7 +1867,6 @@ out returns [var_sct *var]
 	         {var=ncap_var_var_op(var1,var2, MOD);}
     |   #(CARET var1=out var2=out)
             {var=ncap_var_var_op(var1,var2, CARET);}
-
     //unary Operators
     |   #(LNOT var1=out )      
             { var=ncap_var_var_op(var1,NULL_CEWI, LNOT );}
@@ -2015,7 +1885,6 @@ out returns [var_sct *var]
     |   #(POST_DEC var1=out_asn ){      
             var=ncap_var_var_inc(var1,NULL_CEWI,POST_DEC,false,prs_arg);
         }
-
     // Logical Operators
     | #(LAND var1=out var2=out)  
             { var=ncap_var_var_op(var1,var2, LAND );}        
@@ -2034,13 +1903,11 @@ out returns [var_sct *var]
             { var=ncap_var_var_op(var1,var2, EQ );}
     | #(NEQ  var1=out var2=out)   
             { var=ncap_var_var_op(var1,var2, NEQ );}
-
     // Fortran style Comparison Operators
     | #(FLTHAN  var1=out var2=out) 
             { var=ncap_var_var_op(var1,var2, FLTHAN );}
     | #(FGTHAN  var1=out var2=out) 
             { var=ncap_var_var_op(var1,var2, FGTHAN );}
-
     // Assign Operators 
     | #(PLUS_ASSIGN pls_asn:. var2=out) {
        var1=out_asn(pls_asn);
@@ -2088,8 +1955,6 @@ out returns [var_sct *var]
               err_prn(fnc_nm,serr );       
               }                
 
-
-
              if(prs_arg->ntl_scn)
                var=assign_ntl(tr,bram); 
              else
@@ -2098,7 +1963,6 @@ out returns [var_sct *var]
             }  
      | #(WHERE_ASSIGN wasn:. ) {
 
-
      }
 
     //ternary Operator
@@ -2118,35 +1982,26 @@ out returns [var_sct *var]
            }   
            var1=nco_var_free(var1);
     } 
-           
 
     // Functions 
     |  #(m:FUNC args:FUNC_ARG) {
-          RefAST tr;
-          std::string sfnm(m->getText());
-          std::vector<fmc_cls>::iterator we=std::lower_bound(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(sfnm));
-          // see if string found
-          if( we->fnm() == sfnm){
-            //Call function
-            var=we->vfnc()->fnd(tr ,args, *we,*this); 
-          } else { 
-              std::cout << "Function  " << sfnm << " not found" <<std::endl;
-              exit(1);
-          }
-     }
+          // The lexer has appended the index of the function to the function name m - (name#index)
+          //  the index is into fmc_vtr  
+         string sm(m->getText()); 
+         string sdx(sm,sm.find("#")+1,sm.length()-1) ;
+         int idx=atoi(sdx.c_str());
+         RefAST tr;  
+         var=prs_arg->fmc_vtr[idx].vfnc()->fnd(tr ,args, prs_arg->fmc_vtr[idx],*this); 
+        }
 
     // Deal with methods 
     | #(DOT mtd:. mfnc:FUNC  margs:FUNC_ARG ){
-          std::string sfnm(mfnc->getText());
-          std::vector<fmc_cls>::iterator we=std::lower_bound(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(sfnm));
-          // see if string found
-          if( we->fnm() == sfnm){
-            //Call function
-            var=we->vfnc()->fnd(mtd ,margs, *we,*this); 
-          } else { 
-              std::cout << "Method  " << sfnm << " not found" <<std::endl;
-              exit(1);
-          }
+          // The lexer has appended the index of the function to the function name m - (name#index)
+          //  the index is into fmc_vtr  
+         string sm(mfnc->getText()); 
+         string sdx(sm,sm.find("#")+1,sm.length()-1) ;
+         int idx=atoi(sdx.c_str());
+         var=prs_arg->fmc_vtr[idx].vfnc()->fnd(mtd ,margs, prs_arg->fmc_vtr[idx],*this); 
      }
 
     |   dval:DIM_ID_SIZE
@@ -2169,7 +2024,6 @@ out returns [var_sct *var]
 #ifndef NC_MAX_INT
 # define NC_MAX_INT 2147483647
 #endif
-
             //Initial Scan
             if(prs_arg->ntl_scn){  
                 if( (dmn_fd==NULL_CEWI )|| (dmn_fd->sz <= NC_MAX_INT) )
@@ -2189,8 +2043,6 @@ out returns [var_sct *var]
                   var=ncap_sclr_var_mk(static_cast<std::string>("~dmn"),(nco_int64)dmn_fd->sz); 
             } 
                   
-
-
         }  // end action 
         
      // Variable with argument list 
@@ -2222,8 +2074,6 @@ out returns [var_sct *var]
           // apply cast only if sz >1 
           if(bcst && var->sz >1)
             var=ncap_cst_do(var,var_cst,prs_arg->ntl_scn);
-
-
         } /* end action */
 
     // PLain attribute
@@ -2252,7 +2102,6 @@ out returns [var_sct *var]
             if(prs_arg->ntl_scn && var==NULL_CEWI )
                 var=ncap_var_udf(att->getText().c_str());
             
-
             if(prs_arg->ntl_scn && var->val.vp !=NULL)
                 var->val.vp=(void*)nco_free(var->val.vp);
               
@@ -2286,12 +2135,10 @@ out returns [var_sct *var]
             tsng=(char*)nco_free(tsng);      
         }
 
-
     |   str1:N4STRING
         {
             char *tsng;
 
-
             tsng=strdup(str1->getText().c_str());
             (void)sng_ascii_trn(tsng);            
             var=(var_sct *)nco_malloc(sizeof(var_sct));
@@ -2313,14 +2160,10 @@ out returns [var_sct *var]
              var->val.sngp[0]=strdup(tsng);   
 
              (void)cast_nctype_void((nc_type)NC_STRING,&var->val);
-               
-
             }
             tsng=(char*)nco_free(tsng);      
         }
 
-
-
         // Naked numbers: Cast is not applied to these numbers
     |   val_float:FLOAT        
         {if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~float"),(nc_type)NC_FLOAT,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~float"),static_cast<float>(std::strtod(val_float->getText().c_str(),(char **)NULL)));} // end FLOAT
@@ -2385,8 +2228,6 @@ var=NULL_CEWI;
                nco_exit(EXIT_FAILURE);
           }
          
-
-
         } /* end action */
     // Plain attribute
     |   att:ATT_ID { 
@@ -2409,7 +2250,6 @@ var=NULL_CEWI;
             else    
                 var=ncap_att_init(att->getText(),prs_arg);
 
-
             if(!prs_arg->ntl_scn && var==NULL_CEWI ){
                 err_prn(fnc_nm,"Unable to locate attribute " +att->getText()+ " in input or output files.");
             }
@@ -2417,16 +2257,13 @@ var=NULL_CEWI;
             // if att not found return undefined
             if(prs_arg->ntl_scn && var==NULL_CEWI )
                 var=ncap_var_udf(att->getText().c_str());
-            
 
             if(prs_arg->ntl_scn && var->val.vp !=NULL)
                 var->val.vp=(void*)nco_free(var->val.vp);
 
-
        }// end action    
 ;
 
-
 value_list returns [var_sct *var]
 {
 const std::string fnc_nm("value_list");
@@ -2438,7 +2275,6 @@ var=NULL_CEWI;
          int nbr_lst;
          int idx;
          int tsz;
-         
 
          nc_type type=NC_NAT;
          var_sct *var_ret;                        
@@ -2460,13 +2296,11 @@ var=NULL_CEWI;
              goto end_val;
            }
       
-         
          // find highest type
          for(idx=0;idx <nbr_lst ;idx++)
            type=ncap_typ_hgh(type,exp_vtr[idx]->type);
              //(void)ncap_var_retype(exp_vtr[0], exp_vtr[idx]);  
 
-
          // Inital Scan
          if(prs_arg->ntl_scn){
 
@@ -2514,8 +2348,7 @@ var=NULL_CEWI;
             cp=(char*)(var_ret->val.vp)+ (ptrdiff_t)(idx*tsz);
             memcpy(cp,exp_vtr[idx]->val.vp,tsz);
          }    
-         
-        
+
          // Free vector        
         end_val: for(idx=0 ; idx < nbr_lst ; idx++)
            (void)nco_var_free(exp_vtr[idx]);    
@@ -2523,10 +2356,8 @@ var=NULL_CEWI;
         var=var_ret;
 
         } // end action
-
 ;
 
-
 // Deal here with a value list of strings
 // Called only from value_list
 value_list_string[ std::vector<var_sct*> &exp_vtr] returns [var_sct *var]
@@ -2542,10 +2373,7 @@ var=NULL_CEWI;
          nco_string *cp;         
          var_sct *var_ret;                        
 
-      
          nbr_lst=exp_vtr.size();
-
-
          var_ret=(var_sct *)nco_malloc(sizeof(var_sct));
          /* Set defaults */
          (void)var_dfl_set(var_ret); 
@@ -2556,8 +2384,6 @@ var=NULL_CEWI;
          var_ret->sz=nbr_lst;
          var_ret->type=(nc_type)NC_STRING;
 
-
-
          // Inital Scan
          if(prs_arg->ntl_scn)
            goto end_val;          
@@ -2566,12 +2392,10 @@ var=NULL_CEWI;
          for(idx=0; idx<nbr_lst ; idx++)
             if( exp_vtr[idx]->type != NC_STRING)
               err_prn(fnc_nm," error processing value list string: to successfully parse value list of strings all elements must be of type NC_STRING");
-         
 
          // from here on deal with final scan
          tsz=nco_typ_lng((nc_type)NC_STRING);
          var_ret->val.vp=(void*)nco_malloc(nbr_lst*tsz);
- 
 
          (void)cast_void_nctype((nc_type)NC_STRING,&var_ret->val);
          cp=var_ret->val.sngp; 
@@ -2586,15 +2410,12 @@ var=NULL_CEWI;
          } // end loop      
 
          (void)cast_nctype_void((nc_type)NC_STRING,&var_ret->val);
-       
          
          end_val: var=var_ret;
 
 }// end action
-
 ;
 
-
 //where calculate 
 where_assign [var_sct *var_msk] returns [bool bret]
 {
@@ -2662,7 +2483,6 @@ var_sct *var_rhs;
     bool b_vp=false;
     char *mss_cp;
 
-
     sz=var_lhs->sz;
     slb_sz=nco_typ_lng(var_lhs->type);
 
@@ -2723,7 +2543,6 @@ var_sct *var_rhs;
    // free "local" copy of var_msk if necessary
    if(bfr)
       var_msk=nco_var_free(var_msk);           
-   
 
    // Do attribute propagation if LHS is new
    Nvar=prs_arg->var_vtr.find(var_nm);
@@ -2734,11 +2553,9 @@ var_sct *var_rhs;
 
    prs_arg->ncap_var_write(var_lhs,false);
    bret=true;
-
         }
 ;
 
-
 //Calculate scalar hyperslab where there is a single limit for a possibly
 // multi-dimensional variable
 var_lmt_one returns [var_sct *var]
@@ -2753,7 +2570,6 @@ var_sct *var_nbr;
             var_sct *var_rhs;
             std::string var_nm;
            
-
             var_nm=vid->getText(); 
             var_rhs=prs_arg->ncap_var_init(var_nm,false);            
          
@@ -2762,8 +2578,6 @@ var_sct *var_nbr;
               goto end0;  // cannot use return var!!
             }
 
-
-
             if(prs_arg->ntl_scn){
              var=ncap_sclr_var_mk(var_nm,(nc_type)(var_rhs->type),false);
             }else{
@@ -2787,11 +2601,12 @@ var_sct *var_nbr;
               srt=var_nbr->val.ip[0];
               (void)cast_nctype_void(NC_INT,&var_nbr->val);
 
-
               // fortran index convention   
               if(prs_arg->FORTRAN_IDX_CNV)
                 srt--;
-              
+              else if ( srt<0) 
+                srt+=var_rhs->sz-1; // deal with negative index 
+ 
               // do some bounds checking
               if(srt >= var_rhs->sz || srt<0 )
                err_prn(fnc_nm,"Limit of "+ nbr2sng(srt) +" for variable \""+ var_nm+"\" with size="+nbr2sng(var_rhs->sz)+" is out of bounds\n"); 
@@ -2828,7 +2643,6 @@ var_sct *var_nbr;
                   fl_id=prs_arg->in_id; 
                 }
 
-
                 // convert srt into multiple indices  
                 for(idx=0;idx<nbr_dim;idx++)
                   sz_dim*= var_rhs->cnt[idx]; 
@@ -2844,22 +2658,14 @@ var_sct *var_nbr;
  
                // copy missing value if any over             
                nco_mss_val_cp(var_rhs,var);
-            
 
             } // end else !prs_arg->ntl_scn 
-             
-
-
 
 end0:       var_nbr=nco_var_free(var_nbr);
             var_rhs=nco_var_free(var_rhs);   
-             
 }
-
 ;
 
-
-
 //Calculate scalar LHS hyperslab where there is a single limit for a possibly
 // multi-dimensional variable
 var_lmt_one_lhs[bool bram] returns [var_sct *var]
@@ -2879,12 +2685,10 @@ var_sct *var_nbr;
                var_sct *var_lhs=NULL_CEWI;
                var_sct *var_rhs=NULL_CEWI;
                NcapVar *Nvar; 
-
            
                var_nm=vid->getText(); 
 
-               if(dbg_lvl_get() > 1)
-                 dbg_prn(fnc_nm,var_nm+"(limit)");
+               if(nco_dbg_lvl_get() > nco_dbg_var) dbg_prn(fnc_nm,var_nm+"(limit)");
            
                Nvar=prs_arg->var_vtr.find(var_nm);
 
@@ -2894,17 +2698,10 @@ var_sct *var_nbr;
                srt=var_nbr->val.ip[0];
                (void)cast_nctype_void(NC_INT,&var_nbr->val);
  
-               // fortran index convention   
-               if(prs_arg->FORTRAN_IDX_CNV)
-                srt--;
-
-
- 
               // Overwrite bram possibly 
               if(Nvar) 
                 bram=Nvar->flg_mem;
              
-               
               // Deal with RAM variables
               if(bram){
                
@@ -2924,9 +2721,13 @@ var_sct *var_nbr;
 
                  }else{
                     var_lhs=prs_arg->ncap_var_init(var_nm,true);       
-                 }
+               }
                   
-              
+               // fortran index convention   
+               if(prs_arg->FORTRAN_IDX_CNV)
+                srt--;
+               else if(srt<0) srt+=var_lhs->sz-1; //deal with negative index convention 
+                 
                  // do some bounds checking on single limits
                  if(srt >= var_lhs->sz || srt<0 )
                    err_prn(fnc_nm,"Limit of "+ nbr2sng(srt) +" for variable \""+ var_nm+"\" with size="+nbr2sng(var_lhs->sz)+" is out of bounds\n"); 
@@ -2948,8 +2749,6 @@ var_sct *var_nbr;
                  if(!Nvar)
                    (void)prs_arg->ncap_var_write(var_lhs,true); 
 
-
-
               // deal with regular vars 
               }else{
 
@@ -2964,7 +2763,11 @@ var_sct *var_nbr;
                 }
  
                 var_lhs=prs_arg->ncap_var_init(var_nm,false);
-
+                    
+               // fortran index convention   
+               if(prs_arg->FORTRAN_IDX_CNV)
+                srt--;
+               else if(srt<0) srt+=var_lhs->sz-1; //deal with negative index convention 
               
                 // do some bounds checking on single limits
                 if(srt >= var_lhs->sz || srt<0 )
@@ -2999,14 +2802,12 @@ var_sct *var_nbr;
                    srt1[idx]=srt/sz_dim; 
                    srt-=srt1[idx]*sz_dim;
                  }
-
                 
                  for(idx=0;idx<nbr_dim;idx++){
                    var_lhs->srt[idx]=srt1[idx]; 
                    var_lhs->cnt[idx]=1L; 
                    var_lhs->srd[idx]=1L; 
                  } /* end loop over idx */
-    
 
                  // write slab to O contains call to Open MP critical region
                  //  routine also frees up var_lhs
@@ -3017,10 +2818,8 @@ var_sct *var_nbr;
                    var_rhs=nco_var_free(var_rhs); 
                    var_nbr=nco_var_free(var_nbr); 
 }
-
 ;
 
-
 //Calculate var with limits
 var_lmt returns [var_sct *var]
 {
@@ -3045,7 +2844,6 @@ var=NULL_CEWI;
             NcapVector<lmt_sct*> lmt_vtr;
             NcapVector<dmn_sct*> dmn_vtr;
             NcapVector<std::string> dmn_nrm_vtr;  // list of dimension names
-     
 
             var_nm=vid->getText(); 
             var_rhs=prs_arg->ncap_var_init(var_nm,false);            
@@ -3058,7 +2856,6 @@ var=NULL_CEWI;
             nbr_dmn=var_rhs->nbr_dim;          
             lRef=lmt;
 
-
           if(prs_arg->ntl_scn){
             // check limit only contains numbers or dim_id.size()
             std::vector<std::string> str_vtr;
@@ -3078,7 +2875,6 @@ var=NULL_CEWI;
 
          if( lmt_vtr.size() != nbr_dmn)
             err_prn(fnc_nm,"Number of hyperslab limits for variable "+ var_nm+" doesn't match number of dimensions");
-         
 
           // add dim names to dimension list 
           for(idx=0 ; idx < nbr_dmn;idx++)
@@ -3088,7 +2884,6 @@ var=NULL_CEWI;
            for(idx=0 ; idx < nbr_dmn ;idx++)
             (void)ncap_lmt_evl(var_rhs->nc_id,lmt_vtr[idx],prs_arg);
 
-
           // See if var can be normalized
            for(idx=0; idx<nbr_dmn ; idx++){
              if(lmt_vtr[idx]->cnt==1) continue;
@@ -3101,8 +2896,6 @@ var=NULL_CEWI;
 
            bnrm= (idx==nbr_dmn ? true:false);       
 
-
-
            // deal more with inital scan 
            if(prs_arg->ntl_scn){
 
@@ -3118,17 +2911,13 @@ var=NULL_CEWI;
                // apply LHS cast if necessary 
                if(var->sz>1 && bcst) 
                  var=ncap_cst_do(var,var_cst,prs_arg->ntl_scn);
-                
               }else{
                 var=ncap_var_udf("~rhs_undefined");             
               }
-                  
              goto end1;
            }           
 
-
            /**** From here on we are dealing with a final scan  ****/
-            
            // copy lmt_sct to dmn_sct;
            for(idx=0 ;idx <nbr_dmn ; idx++){
               dmn_sct *dmn_nw;
@@ -3153,7 +2942,6 @@ var=NULL_CEWI;
           else
             bram=false;
  
- 
           // Ram variable -do an in memory get  
           if(bram){
             var=prs_arg->ncap_var_init(var_nm,true);                         
@@ -3192,19 +2980,14 @@ var=NULL_CEWI;
 
            } // end if(nbram)
            
-
            // copy missing value over
            nco_mss_val_cp(var_rhs,var);
-
            
           /* a hack - we set var->has_dpl_dmn=-1 so we know we are dealing with 
-             a hyperslabed var and not a regular var  -- It shouldn't cause 
+             a hyperslabbed var and not a regular var  -- It shouldn't cause 
              any abberant behaviour!! */ 
            var->has_dpl_dmn=-1;  
 
-
-
-
             // if variable is scalar re-organize in a new var 
            // loose extraneous material so it looks like a
            // plain scalar variable
@@ -3213,7 +2996,6 @@ var=NULL_CEWI;
              var1=ncap_sclr_var_mk(var_nm,var->type,true);
              (void)memcpy( (void*)var1->val.vp,var->val.vp,nco_typ_lng(var1->type));
              
-             
              // copy missing value if any from var_rhs to var1
              nco_mss_val_cp(var_rhs,var1);
            
@@ -3222,9 +3004,6 @@ var=NULL_CEWI;
 
              var=var1;
 
-
-
-              
             // if hyperslab -nomalizable 
             // nb the returned var is just like a regular var 
             }else if(bnrm) {
@@ -3233,7 +3012,6 @@ var=NULL_CEWI;
               var1=ncap_cst_mk(dmn_nrm_vtr,prs_arg);
               (void)nco_free(var1->nm);
                 
-
               var1->nm=strdup(var_nm.c_str());
               var1=nco_var_cnf_typ(var_rhs->type,var1);
 
@@ -3274,24 +3052,16 @@ var=NULL_CEWI;
               var->dim[idx]=prs_arg->dmn_out_vtr.find(dmn_vtr[idx]->nm);  
 
            }   
-           
-
-
 
           //free vectors
-
           for(idx=0 ; idx < nbr_dmn ; idx++)
              (void)nco_dmn_free(dmn_vtr[idx]); 
                ;
-            
 
           end1: ;
           for(idx=0 ; idx < nbr_dmn ; idx++)
             (void)nco_lmt_free(lmt_vtr[idx]);
           
-          
           end2: var_rhs=nco_var_free(var_rhs); 
-    
     }
-
 ;
diff --git a/src/nco++/ncoLexer.cpp b/src/nco++/ncoLexer.cpp
index b25a2a3..733ac94 100644
--- a/src/nco++/ncoLexer.cpp
+++ b/src/nco++/ncoLexer.cpp
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoLexer.cpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoLexer.cpp"$ */
 #include "ncoLexer.hpp"
 #include <antlr/CharBuffer.hpp>
 #include <antlr/TokenStreamException.hpp>
@@ -30,18 +30,18 @@ ncoLexer::ncoLexer(const ANTLR_USE_NAMESPACE(antlr)LexerSharedInputState& state)
 
 void ncoLexer::initLiterals()
 {
-	literals["<<"] = 92;
-	literals["for"] = 45;
-	literals["print"] = 40;
-	literals["where"] = 38;
-	literals["elsewhere"] = 39;
-	literals["continue"] = 35;
-	literals["while"] = 33;
-	literals[">>"] = 93;
-	literals["break"] = 34;
-	literals["if"] = 36;
-	literals["else"] = 37;
-	literals["defdim"] = 28;
+	literals["<<"] = 93;
+	literals["for"] = 46;
+	literals["print"] = 41;
+	literals["where"] = 39;
+	literals["elsewhere"] = 40;
+	literals["continue"] = 36;
+	literals["while"] = 34;
+	literals[">>"] = 94;
+	literals["break"] = 35;
+	literals["if"] = 37;
+	literals["else"] = 38;
+	literals["defdim"] = 29;
 }
 
 ANTLR_USE_NAMESPACE(antlr)RefToken ncoLexer::nextToken()
@@ -1324,7 +1324,7 @@ void ncoLexer::mBLASTOUT(bool _createToken) {
 	ANTLR_USE_NAMESPACE(std)string::size_type _saveIndex;
 	
 	matchNot(EOF/*_CHAR*/);
-#line 465 "ncoGrammer.g"
+#line 435 "ncoGrammer.g"
 	
 	// blast out of lexer & parser
 	// Can't use RecognitionException() as 
@@ -1381,7 +1381,7 @@ void ncoLexer::mUNUSED_OPS(bool _createToken) {
 	}
 	}
 	}
-#line 485 "ncoGrammer.g"
+#line 451 "ncoGrammer.g"
 	
 	
 	ostringstream os;
@@ -1415,7 +1415,7 @@ void ncoLexer::mWS(bool _createToken) {
 	case 0x9 /* '\t' */ :
 	{
 		match('\t' /* charlit */ );
-#line 499 "ncoGrammer.g"
+#line 464 "ncoGrammer.g"
 		tab();
 #line 1421 "ncoLexer.cpp"
 		break;
@@ -1428,7 +1428,7 @@ void ncoLexer::mWS(bool _createToken) {
 	case 0xa /* '\n' */ :
 	{
 		match('\n' /* charlit */ );
-#line 499 "ncoGrammer.g"
+#line 464 "ncoGrammer.g"
 		newline();
 #line 1434 "ncoLexer.cpp"
 		break;
@@ -1439,7 +1439,7 @@ void ncoLexer::mWS(bool _createToken) {
 	}
 	}
 	}
-#line 500 "ncoGrammer.g"
+#line 465 "ncoGrammer.g"
 	_ttype = antlr::Token::SKIP;
 #line 1445 "ncoLexer.cpp"
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -1469,7 +1469,7 @@ void ncoLexer::mCXX_COMMENT(bool _createToken) {
 	_loop149:;
 	} // ( ... )*
 	match('\n' /* charlit */ );
-#line 507 "ncoGrammer.g"
+#line 470 "ncoGrammer.g"
 	_ttype = antlr::Token::SKIP; newline();
 #line 1475 "ncoLexer.cpp"
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -1510,7 +1510,7 @@ void ncoLexer::mC_COMMENT(bool _createToken) {
 			}
 			}
 			}
-#line 515 "ncoGrammer.g"
+#line 477 "ncoGrammer.g"
 			newline();
 #line 1516 "ncoLexer.cpp"
 		}
@@ -1527,7 +1527,7 @@ void ncoLexer::mC_COMMENT(bool _createToken) {
 	_loop154:;
 	} // ( ... )*
 	match("*/");
-#line 519 "ncoGrammer.g"
+#line 481 "ncoGrammer.g"
 	_ttype = antlr::Token::SKIP;
 #line 1533 "ncoLexer.cpp"
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
@@ -1566,7 +1566,7 @@ void ncoLexer::mNUMBER_DOT(bool _createToken) {
 	}
 	
 	}
-#line 526 "ncoGrammer.g"
+#line 488 "ncoGrammer.g"
 	_ttype = DOUBLE;
 #line 1572 "ncoLexer.cpp"
 	{
@@ -1592,7 +1592,7 @@ void ncoLexer::mNUMBER_DOT(bool _createToken) {
 		}
 		}
 		}
-#line 527 "ncoGrammer.g"
+#line 489 "ncoGrammer.g"
 		_ttype = DOUBLE;
 #line 1598 "ncoLexer.cpp"
 		break;
@@ -1618,7 +1618,7 @@ void ncoLexer::mNUMBER_DOT(bool _createToken) {
 		}
 		}
 		}
-#line 528 "ncoGrammer.g"
+#line 490 "ncoGrammer.g"
 		_ttype = FLOAT;
 #line 1624 "ncoLexer.cpp"
 		break;
@@ -1644,7 +1644,7 @@ void ncoLexer::mNUMBER_DOT(bool _createToken) {
 		}
 		}
 		}
-#line 529 "ncoGrammer.g"
+#line 491 "ncoGrammer.g"
 		_ttype = DOUBLE;
 #line 1650 "ncoLexer.cpp"
 		break;
@@ -1681,7 +1681,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 	}
 	_loop165:;
 	}  // ( ... )+
-#line 534 "ncoGrammer.g"
+#line 496 "ncoGrammer.g"
 	_ttype = INT;
 #line 1687 "ncoLexer.cpp"
 	{
@@ -1736,7 +1736,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 		
 		}
 		}
-#line 535 "ncoGrammer.g"
+#line 497 "ncoGrammer.g"
 		_ttype = DOUBLE;
 #line 1742 "ncoLexer.cpp"
 		break;
@@ -1747,7 +1747,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 		{
 		mXPN(false);
 		}
-#line 536 "ncoGrammer.g"
+#line 498 "ncoGrammer.g"
 		_ttype = DOUBLE;
 #line 1753 "ncoLexer.cpp"
 		break;
@@ -1773,7 +1773,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 		}
 		}
 		}
-#line 538 "ncoGrammer.g"
+#line 500 "ncoGrammer.g"
 		_ttype = SHORT;
 #line 1779 "ncoLexer.cpp"
 		break;
@@ -1799,7 +1799,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 		}
 		}
 		}
-#line 539 "ncoGrammer.g"
+#line 501 "ncoGrammer.g"
 		_ttype = BYTE;
 #line 1805 "ncoLexer.cpp"
 		break;
@@ -1824,7 +1824,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 			}
 			}
 			}
-#line 544 "ncoGrammer.g"
+#line 506 "ncoGrammer.g"
 			_ttype = UINT64;
 #line 1830 "ncoLexer.cpp"
 		}
@@ -1847,7 +1847,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 			}
 			}
 			}
-#line 540 "ncoGrammer.g"
+#line 502 "ncoGrammer.g"
 			_ttype = UBYTE;
 #line 1853 "ncoLexer.cpp"
 		}
@@ -1870,7 +1870,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 			}
 			}
 			}
-#line 541 "ncoGrammer.g"
+#line 503 "ncoGrammer.g"
 			_ttype = USHORT;
 #line 1876 "ncoLexer.cpp"
 		}
@@ -1893,7 +1893,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 			}
 			}
 			}
-#line 543 "ncoGrammer.g"
+#line 505 "ncoGrammer.g"
 			_ttype = INT64;
 #line 1899 "ncoLexer.cpp"
 		}
@@ -1916,7 +1916,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 			}
 			}
 			}
-#line 537 "ncoGrammer.g"
+#line 499 "ncoGrammer.g"
 			_ttype = INT;
 #line 1922 "ncoLexer.cpp"
 		}
@@ -1939,7 +1939,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 			}
 			
 			}
-#line 542 "ncoGrammer.g"
+#line 504 "ncoGrammer.g"
 			_ttype = UINT;
 #line 1945 "ncoLexer.cpp"
 		}
@@ -1970,7 +1970,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 		}
 		}
 		}
-#line 546 "ncoGrammer.g"
+#line 508 "ncoGrammer.g"
 		_ttype = FLOAT;
 #line 1976 "ncoLexer.cpp"
 		break;
@@ -1996,7 +1996,7 @@ void ncoLexer::mNUMBER(bool _createToken) {
 		}
 		}
 		}
-#line 547 "ncoGrammer.g"
+#line 509 "ncoGrammer.g"
 		_ttype = DOUBLE;
 #line 2002 "ncoLexer.cpp"
 		break;
@@ -2104,16 +2104,40 @@ void ncoLexer::mVAR_ATT(bool _createToken) {
 	}
 	_loop188:;
 	} // ( ... )*
-#line 556 "ncoGrammer.g"
-	
-	// check function/method vector
-	if( std::binary_search(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(text.substr(_begin,text.length()-_begin))))
-	_ttype = FUNC;             
-	else 
+#line 516 "ncoGrammer.g"
+	
+	// try to intelligently guess the type to avoid un-necessary function search  
+	bool bDoSearch;
+	switch( LA(1) ){
+	case ' ': 
+	case '\t':
+	case '(':
+	bDoSearch=true;
 	_ttype = VAR_ID; 
-	
-	
-#line 2117 "ncoLexer.cpp"
+	break;
+	case '@':
+	bDoSearch=false;
+	_ttype = ATT_ID;
+	break;    
+	default: 
+	bDoSearch=false;
+	_ttype = VAR_ID;
+	break;
+	}  
+	if(bDoSearch){   
+	string fnc_nm=text.substr(_begin,text.length()-_begin); 
+	std::vector<fmc_cls>::iterator we=std::lower_bound(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(fnc_nm));   
+	if(we!=prs_arg->fmc_vtr.end() && we->fnm()==fnc_nm){
+	int idx=we-prs_arg->fmc_vtr.begin();
+	char buff[10]; 
+	sprintf(buff,"%d",idx);
+	// VERY IMPORTANT - append the index in fmc_vtr to the function name - (name#idx)
+	{ text.erase(_begin); text += fnc_nm+"#"+buff; };    
+	_ttype = FUNC;
+	}             
+	} 
+	
+#line 2141 "ncoLexer.cpp"
 	{
 	if ((LA(1) == 0x40 /* '@' */ )) {
 		match('@' /* charlit */ );
@@ -2202,9 +2226,9 @@ void ncoLexer::mVAR_ATT(bool _createToken) {
 		}
 		_loop192:;
 		} // ( ... )*
-#line 564 "ncoGrammer.g"
+#line 548 "ncoGrammer.g"
 		_ttype = ATT_ID;
-#line 2208 "ncoLexer.cpp"
+#line 2232 "ncoLexer.cpp"
 	}
 	else {
 	}
@@ -2230,18 +2254,18 @@ void ncoLexer::mVAR_ATT_QT(bool _createToken) {
 	text.erase(_saveIndex);
 	}
 	mVAR_NM_QT(false);
-#line 570 "ncoGrammer.g"
+#line 553 "ncoGrammer.g"
 	_ttype = VAR_ID;
-#line 2236 "ncoLexer.cpp"
+#line 2260 "ncoLexer.cpp"
 	{
 	switch ( LA(1)) {
 	case 0x40 /* '@' */ :
 	{
 		match('@' /* charlit */ );
 		mVAR_NM_QT(false);
-#line 571 "ncoGrammer.g"
+#line 554 "ncoGrammer.g"
 		_ttype = ATT_ID;
-#line 2245 "ncoLexer.cpp"
+#line 2269 "ncoLexer.cpp"
 		break;
 	}
 	case 0x27 /* '\'' */ :
@@ -2282,9 +2306,9 @@ void ncoLexer::mDIM_QT(bool _createToken) {
 	match('$' /* charlit */ );
 	text.erase(_saveIndex);
 	mVAR_NM_QT(false);
-#line 580 "ncoGrammer.g"
+#line 560 "ncoGrammer.g"
 	_ttype = DIM_ID;
-#line 2288 "ncoLexer.cpp"
+#line 2312 "ncoLexer.cpp"
 	}
 	{
 	_saveIndex = text.length();
@@ -2296,9 +2320,9 @@ void ncoLexer::mDIM_QT(bool _createToken) {
 		_saveIndex = text.length();
 		match(".size");
 		text.erase(_saveIndex);
-#line 582 "ncoGrammer.g"
+#line 562 "ncoGrammer.g"
 		_ttype = DIM_ID_SIZE;
-#line 2302 "ncoLexer.cpp"
+#line 2326 "ncoLexer.cpp"
 	}
 	else {
 	}
@@ -2405,17 +2429,17 @@ void ncoLexer::mDIM_VAL(bool _createToken) {
 	}
 	_loop205:;
 	} // ( ... )*
-#line 587 "ncoGrammer.g"
+#line 567 "ncoGrammer.g"
 	_ttype = DIM_ID;
-#line 2411 "ncoLexer.cpp"
+#line 2435 "ncoLexer.cpp"
 	{
 	if ((LA(1) == 0x2e /* '.' */ )) {
 		_saveIndex = text.length();
 		match(".size");
 		text.erase(_saveIndex);
-#line 589 "ncoGrammer.g"
+#line 569 "ncoGrammer.g"
 		_ttype = DIM_ID_SIZE;
-#line 2419 "ncoLexer.cpp"
+#line 2443 "ncoLexer.cpp"
 	}
 	else {
 	}
@@ -2484,17 +2508,17 @@ void ncoLexer::mNSTRING(bool _createToken) {
 	_saveIndex = text.length();
 	match('\"' /* charlit */ );
 	text.erase(_saveIndex);
-#line 605 "ncoGrammer.g"
+#line 582 "ncoGrammer.g"
 	_ttype = NSTRING;
-#line 2490 "ncoLexer.cpp"
+#line 2514 "ncoLexer.cpp"
 	{
 	if ((LA(1) == 0x73 /* 's' */ )) {
 		_saveIndex = text.length();
 		match('s' /* charlit */ );
 		text.erase(_saveIndex);
-#line 606 "ncoGrammer.g"
+#line 583 "ncoGrammer.g"
 		_ttype = N4STRING;
-#line 2498 "ncoLexer.cpp"
+#line 2522 "ncoLexer.cpp"
 	}
 	else {
 	}
@@ -2537,7 +2561,7 @@ void ncoLexer::mINCLUDE(bool _createToken) {
 	}
 	mNSTRING(true);
 	f=_returnToken;
-#line 613 "ncoGrammer.g"
+#line 588 "ncoGrammer.g"
 	
 			// ANTLR_USING_NAMESPACE(std)
 			// create lexer to handle include
@@ -2566,7 +2590,7 @@ void ncoLexer::mINCLUDE(bool _createToken) {
 			// of the new instance of this lexer.
 			selector.retry(); // throws TokenStreamRetryException
 			
-#line 2570 "ncoLexer.cpp"
+#line 2594 "ncoLexer.cpp"
 	if ( _createToken && _token==ANTLR_USE_NAMESPACE(antlr)nullToken && _ttype!=ANTLR_USE_NAMESPACE(antlr)Token::SKIP ) {
 	   _token = makeToken(_ttype);
 	   _token->setText(text.substr(_begin, text.length()-_begin));
@@ -2581,31 +2605,31 @@ const unsigned long ncoLexer::_tokenSet_0_data_[] = { 0UL, 96UL, 1073741824UL, 2
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoLexer::_tokenSet_0(_tokenSet_0_data_,10);
 const unsigned long ncoLexer::_tokenSet_1_data_[] = { 0UL, 134179584UL, 2281701374UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // ( ) + - . 0 1 2 3 4 5 6 7 8 9 : A B C D E F G H I J K L M N O P Q R 
-// S T U V W X Y Z _ a b c d e f g h i j k l m n o p 
+// S T U V W X Y Z _ a b c d e f g h i j k l m n o p q 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoLexer::_tokenSet_1(_tokenSet_1_data_,10);
 const unsigned long ncoLexer::_tokenSet_2_data_[] = { 0UL, 0UL, 2281701374UL, 134217726UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g 
-// h i j k l m n o p 
+// h i j k l m n o p q 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoLexer::_tokenSet_2(_tokenSet_2_data_,10);
 const unsigned long ncoLexer::_tokenSet_3_data_[] = { 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xd 0xe 0xf 0x10 0x11 
 // 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 
 //   ! \" # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 
 // A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a 
-// b c d e f g h i j k l m n o p 
+// b c d e f g h i j k l m n o p q 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoLexer::_tokenSet_3(_tokenSet_3_data_,16);
 const unsigned long ncoLexer::_tokenSet_4_data_[] = { 4294958079UL, 4294966271UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xe 0xf 0x10 0x11 0x12 
 // 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f   ! 
 // \" # $ % & \' ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C 
 // D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c d 
-// e f g h i j k l m n o p 
+// e f g h i j k l m n o p q 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoLexer::_tokenSet_4(_tokenSet_4_data_,16);
 const unsigned long ncoLexer::_tokenSet_5_data_[] = { 4294966271UL, 4294967291UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 4294967295UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // 0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xb 0xc 0xd 0xe 0xf 0x10 0x11 
 // 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 
 //   ! # $ % & \' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B 
 // C D E F G H I J K L M N O P Q R S T U V W X Y Z [ 0x5c ] ^ _ ` a b c 
-// d e f g h i j k l m n o p 
+// d e f g h i j k l m n o p q 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoLexer::_tokenSet_5(_tokenSet_5_data_,16);
 
diff --git a/src/nco++/ncoLexer.hpp b/src/nco++/ncoLexer.hpp
index 012b5b8..64252b0 100644
--- a/src/nco++/ncoLexer.hpp
+++ b/src/nco++/ncoLexer.hpp
@@ -2,7 +2,7 @@
 #define INC_ncoLexer_hpp_
 
 #include <antlr/config.hpp>
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoLexer.hpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoLexer.hpp"$ */
 #include <antlr/CommonToken.hpp>
 #include <antlr/InputBuffer.hpp>
 #include <antlr/BitSet.hpp>
@@ -10,18 +10,18 @@
 #include <antlr/CharScanner.hpp>
 #line 1 "ncoGrammer.g"
 
-/* $Header: /cvsroot/nco/nco/src/nco++/ncoLexer.hpp,v 1.97 2012/02/07 07:12:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncoLexer.hpp,v 1.127 2013/10/18 18:15:41 zender Exp $ */
 
 /* Purpose: ANTLR Grammar and support files for ncap2 */
 
-/* Copyright (C) 2005--2012 Charlie Zender
+/* Copyright (C) 2005--2012 Henry Butowsky and Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
     // C Standard Headers
     #include <assert.h>
     #include <ctype.h>
-    #include <malloc.h>
+	#include <stdlib.h>
     #include <math.h>
     #if !(defined __xlC__) && !(defined SGIMP64) // C++ compilers that do not allow stdint.h
     #include <stdint.h> // Required by g++ for LLONG_MAX, ULLONG_MAX, by icpc for int64_t    
@@ -52,8 +52,7 @@
 #line 53 "ncoLexer.hpp"
 class CUSTOM_API ncoLexer : public ANTLR_USE_NAMESPACE(antlr)CharScanner, public ncoParserTokenTypes
 {
-#line 345 "ncoGrammer.g"
-
+#line 322 "ncoGrammer.g"
 
 private:
     prs_cls *prs_arg;
@@ -81,10 +80,7 @@ public:
 			selector.retry();
 		}
 		// else ANTLR_USE_NAMESPACE(std)cout << "Hit EOF of main file" << ANTLR_USE_NAMESPACE(std)endl;
-		
 	}
-
-
 #line 57 "ncoLexer.hpp"
 private:
 	void initLiterals();
diff --git a/src/nco++/ncoParser.cpp b/src/nco++/ncoParser.cpp
index 5af2ab2..976adc0 100644
--- a/src/nco++/ncoParser.cpp
+++ b/src/nco++/ncoParser.cpp
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoParser.cpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoParser.cpp"$ */
 #include "ncoParser.hpp"
 #include <antlr/NoViableAltException.hpp>
 #include <antlr/SemanticException.hpp>
@@ -88,7 +88,7 @@ void ncoParser::statement() {
 		astFactory->addASTChild( currentAST, returnAST );
 		match(SEMI);
 		statement_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 94 "ncoGrammer.g"
+#line 93 "ncoGrammer.g"
 		
 		if( ncap_fnc_srh(e1_AST))  
 		statement_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(FEXPR,"FEXPR"))->add(statement_AST))); 
@@ -171,7 +171,7 @@ void ncoParser::statement() {
 	{
 		match(SEMI);
 		statement_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 111 "ncoGrammer.g"
+#line 110 "ncoGrammer.g"
 		statement_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(1))->add(astFactory->create(NULL_NODE,"null_stmt"))));
 #line 177 "ncoParser.cpp"
 		currentAST.root = statement_AST;
@@ -499,7 +499,7 @@ void ncoParser::block() {
 	} // ( ... )*
 	match(RCURL);
 	block_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 135 "ncoGrammer.g"
+#line 131 "ncoGrammer.g"
 	block_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(BLOCK,"block"))->add(block_AST)));
 #line 505 "ncoParser.cpp"
 	currentAST.root = block_AST;
@@ -618,7 +618,7 @@ void ncoParser::lmt() {
 	_loop20:;
 	} // ( ... )*
 	lmt_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 150 "ncoGrammer.g"
+#line 144 "ncoGrammer.g"
 	lmt_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(LMT,"lmt"))->add(lmt_AST)));
 #line 624 "ncoParser.cpp"
 	currentAST.root = lmt_AST;
@@ -656,7 +656,7 @@ void ncoParser::lmt_list() {
 	} // ( ... )*
 	match(RPAREN);
 	lmt_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 156 "ncoGrammer.g"
+#line 148 "ncoGrammer.g"
 	lmt_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(LMT_LIST,"lmt_list"))->add(lmt_list_AST)));
 #line 662 "ncoParser.cpp"
 	currentAST.root = lmt_list_AST;
@@ -738,7 +738,7 @@ void ncoParser::dmn_list() {
 	} // ( ... )*
 	match(RSQUARE);
 	dmn_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 165 "ncoGrammer.g"
+#line 156 "ncoGrammer.g"
 	dmn_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(DMN_LIST,"dmn_list"))->add(dmn_list_AST)));
 #line 744 "ncoParser.cpp"
 	currentAST.root = dmn_list_AST;
@@ -820,7 +820,7 @@ void ncoParser::dmn_arg_list() {
 	} // ( ... )*
 	match(DIVIDE);
 	dmn_arg_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 171 "ncoGrammer.g"
+#line 162 "ncoGrammer.g"
 	dmn_arg_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(DMN_ARG_LIST,"dmn_arg_list"))->add(dmn_arg_list_AST)));
 #line 826 "ncoParser.cpp"
 	currentAST.root = dmn_arg_list_AST;
@@ -858,7 +858,7 @@ void ncoParser::value_list() {
 	} // ( ... )*
 	match(RCURL);
 	value_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 176 "ncoGrammer.g"
+#line 167 "ncoGrammer.g"
 	value_list_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(VALUE_LIST,"value_list"))->add(value_list_AST)));
 #line 864 "ncoParser.cpp"
 	currentAST.root = value_list_AST;
@@ -1051,7 +1051,7 @@ void ncoParser::func_arg() {
 	} // ( ... )*
 	match(RPAREN);
 	func_arg_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(currentAST.root);
-#line 183 "ncoGrammer.g"
+#line 174 "ncoGrammer.g"
 	func_arg_AST = ANTLR_USE_NAMESPACE(antlr)RefAST(astFactory->make((new ANTLR_USE_NAMESPACE(antlr)ASTArray(2))->add(astFactory->create(FUNC_ARG,"func_arg"))->add(func_arg_AST)));
 #line 1057 "ncoParser.cpp"
 	currentAST.root = func_arg_AST;
@@ -1362,7 +1362,7 @@ void ncoParser::unaryleft_exp() {
 		in_AST = astFactory->create(in);
 		astFactory->makeASTRoot(currentAST, in_AST);
 		match(INC);
-#line 202 "ncoGrammer.g"
+#line 191 "ncoGrammer.g"
 		in_AST->setType(POST_INC);
 		in_AST->setText("POST_INC");
 #line 1369 "ncoParser.cpp"
@@ -1374,7 +1374,7 @@ void ncoParser::unaryleft_exp() {
 		de_AST = astFactory->create(de);
 		astFactory->makeASTRoot(currentAST, de_AST);
 		match(DEC);
-#line 204 "ncoGrammer.g"
+#line 193 "ncoGrammer.g"
 		de_AST->setType(POST_DEC);
 		de_AST->setText("POST_DEC");
 #line 1381 "ncoParser.cpp"
@@ -1483,7 +1483,7 @@ void ncoParser::unary_exp() {
 			ur_AST = astFactory->create(ur);
 			astFactory->makeASTRoot(currentAST, ur_AST);
 			match(TIMES);
-#line 218 "ncoGrammer.g"
+#line 206 "ncoGrammer.g"
 			ur_AST->setType(UTIMES);ur_AST->setText("UTIMES");
 #line 1489 "ncoParser.cpp"
 			break;
@@ -2094,7 +2094,7 @@ void ncoParser::imaginary_token() {
 
 void ncoParser::initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory )
 {
-	factory.setMaxNodeType(112);
+	factory.setMaxNodeType(113);
 }
 const char* ncoParser::tokenNames[] = {
 	"<0>",
@@ -2122,6 +2122,7 @@ const char* ncoParser::tokenNames[] = {
 	"WHERE_ASSIGN",
 	"MISS2ZERO",
 	"VSORT",
+	"VRSORT",
 	"VABS",
 	"VSQR2",
 	";",
@@ -2204,7 +2205,7 @@ const char* ncoParser::tokenNames[] = {
 	"a C-style comment",
 	"a floating point number",
 	"NUMBER",
-	"variable or attribute identifier",
+	"variable or function or attribute identifier",
 	"VAR_ATT_QT",
 	"DIM_QT",
 	"dimension identifier",
@@ -2213,13 +2214,13 @@ const char* ncoParser::tokenNames[] = {
 	0
 };
 
-const unsigned long ncoParser::_tokenSet_0_data_[] = { 2013265920UL, 532688734UL, 134184960UL, 0UL, 0UL, 0UL, 0UL, 0UL };
+const unsigned long ncoParser::_tokenSet_0_data_[] = { 4026531840UL, 1065377468UL, 268369920UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // SEMI "defdim" LPAREN NSTRING "while" "break" "continue" "if" "where" 
 // "print" VAR_ID ATT_ID LCURL "for" FUNC INC DEC LNOT PLUS MINUS TIMES 
 // FLOAT DOUBLE INT BYTE UBYTE SHORT USHORT UINT INT64 UINT64 N4STRING 
 // DIM_ID_SIZE 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoParser::_tokenSet_0(_tokenSet_0_data_,8);
-const unsigned long ncoParser::_tokenSet_1_data_[] = { 2013265922UL, 4293181438UL, 134217727UL, 0UL, 0UL, 0UL, 0UL, 0UL };
+const unsigned long ncoParser::_tokenSet_1_data_[] = { 4026531842UL, 4291395580UL, 268435455UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // EOF SEMI "defdim" LPAREN NSTRING "while" "break" "continue" "if" "else" 
 // "where" "elsewhere" "print" VAR_ID ATT_ID LCURL RCURL "for" LSQUARE 
 // DIVIDE DOT FUNC INC DEC LNOT PLUS MINUS TIMES CARET MOD FLTHAN FGTHAN 
@@ -2227,13 +2228,13 @@ const unsigned long ncoParser::_tokenSet_1_data_[] = { 2013265922UL, 4293181438U
 // TIMES_ASSIGN DIVIDE_ASSIGN FLOAT DOUBLE INT BYTE UBYTE SHORT USHORT 
 // UINT INT64 UINT64 N4STRING DIM_ID_SIZE 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoParser::_tokenSet_1(_tokenSet_1_data_,8);
-const unsigned long ncoParser::_tokenSet_2_data_[] = { 2013265922UL, 532692990UL, 134184960UL, 0UL, 0UL, 0UL, 0UL, 0UL };
+const unsigned long ncoParser::_tokenSet_2_data_[] = { 4026531842UL, 1065385980UL, 268369920UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // EOF SEMI "defdim" LPAREN NSTRING "while" "break" "continue" "if" "else" 
 // "where" "elsewhere" "print" VAR_ID ATT_ID LCURL RCURL "for" FUNC INC 
 // DEC LNOT PLUS MINUS TIMES FLOAT DOUBLE INT BYTE UBYTE SHORT USHORT UINT 
 // INT64 UINT64 N4STRING DIM_ID_SIZE 
 const ANTLR_USE_NAMESPACE(antlr)BitSet ncoParser::_tokenSet_2(_tokenSet_2_data_,8);
-const unsigned long ncoParser::_tokenSet_3_data_[] = { 4160749570UL, 4294836223UL, 134217727UL, 0UL, 0UL, 0UL, 0UL, 0UL };
+const unsigned long ncoParser::_tokenSet_3_data_[] = { 4026531842UL, 4294705151UL, 268435455UL, 0UL, 0UL, 0UL, 0UL, 0UL };
 // EOF SEMI "defdim" LPAREN NSTRING COMMA RPAREN "while" "break" "continue" 
 // "if" "else" "where" "elsewhere" "print" VAR_ID ATT_ID LCURL RCURL "for" 
 // COLON LSQUARE DIM_ID DIVIDE DIM_MTD_ID CALL_REF DOT FUNC INC DEC LNOT 
diff --git a/src/nco++/ncoParser.hpp b/src/nco++/ncoParser.hpp
index 870213f..ee325d0 100644
--- a/src/nco++/ncoParser.hpp
+++ b/src/nco++/ncoParser.hpp
@@ -2,7 +2,7 @@
 #define INC_ncoParser_hpp_
 
 #include <antlr/config.hpp>
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoParser.hpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoParser.hpp"$ */
 #include <antlr/TokenStream.hpp>
 #include <antlr/TokenBuffer.hpp>
 #include "ncoParserTokenTypes.hpp"
@@ -10,18 +10,18 @@
 
 #line 1 "ncoGrammer.g"
 
-/* $Header: /cvsroot/nco/nco/src/nco++/ncoParser.hpp,v 1.94 2012/02/07 07:12:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncoParser.hpp,v 1.124 2013/10/18 18:15:41 zender Exp $ */
 
 /* Purpose: ANTLR Grammar and support files for ncap2 */
 
-/* Copyright (C) 2005--2012 Charlie Zender
+/* Copyright (C) 2005--2012 Henry Butowsky and Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
     // C Standard Headers
     #include <assert.h>
     #include <ctype.h>
-    #include <malloc.h>
+	#include <stdlib.h>
     #include <math.h>
     #if !(defined __xlC__) && !(defined SGIMP64) // C++ compilers that do not allow stdint.h
     #include <stdint.h> // Required by g++ for LLONG_MAX, ULLONG_MAX, by icpc for int64_t    
@@ -57,7 +57,6 @@ class CUSTOM_API ncoParser : public ANTLR_USE_NAMESPACE(antlr)LLkParser, public
 
 public:
    std::vector<std::string> inc_vtr;
-
 #line 57 "ncoParser.hpp"
 public:
 	void initializeASTFactory( ANTLR_USE_NAMESPACE(antlr)ASTFactory& factory );
@@ -123,10 +122,10 @@ protected:
 private:
 	static const char* tokenNames[];
 #ifndef NO_STATIC_CONSTS
-	static const int NUM_TOKENS = 113;
+	static const int NUM_TOKENS = 114;
 #else
 	enum {
-		NUM_TOKENS = 113
+		NUM_TOKENS = 114
 	};
 #endif
 	
diff --git a/src/nco++/ncoParserTokenTypes.hpp b/src/nco++/ncoParserTokenTypes.hpp
index 021822c..5d82af6 100644
--- a/src/nco++/ncoParserTokenTypes.hpp
+++ b/src/nco++/ncoParserTokenTypes.hpp
@@ -1,7 +1,7 @@
 #ifndef INC_ncoParserTokenTypes_hpp_
 #define INC_ncoParserTokenTypes_hpp_
 
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoParserTokenTypes.hpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoParserTokenTypes.hpp"$ */
 
 #ifndef CUSTOM_API
 # define CUSTOM_API
@@ -33,94 +33,95 @@ struct CUSTOM_API ncoParserTokenTypes {
 		WHERE_ASSIGN = 22,
 		MISS2ZERO = 23,
 		VSORT = 24,
-		VABS = 25,
-		VSQR2 = 26,
-		SEMI = 27,
-		DEFDIM = 28,
-		LPAREN = 29,
-		NSTRING = 30,
-		COMMA = 31,
-		RPAREN = 32,
-		WHILE = 33,
-		BREAK = 34,
-		CONTINUE = 35,
-		IF = 36,
-		ELSE = 37,
-		WHERE = 38,
-		ELSEWHERE = 39,
-		PRINT = 40,
-		VAR_ID = 41,
-		ATT_ID = 42,
-		LCURL = 43,
-		RCURL = 44,
-		FOR = 45,
-		COLON = 46,
-		LSQUARE = 47,
-		DIM_ID = 48,
-		RSQUARE = 49,
-		DIVIDE = 50,
-		DIM_MTD_ID = 51,
-		CALL_REF = 52,
-		DOT = 53,
-		FUNC = 54,
-		INC = 55,
-		DEC = 56,
-		LNOT = 57,
-		PLUS = 58,
-		MINUS = 59,
-		TIMES = 60,
-		CARET = 61,
-		MOD = 62,
-		FLTHAN = 63,
-		FGTHAN = 64,
-		LTHAN = 65,
-		GTHAN = 66,
-		GEQ = 67,
-		LEQ = 68,
-		EQ = 69,
-		NEQ = 70,
-		LAND = 71,
-		LOR = 72,
-		QUESTION = 73,
-		ASSIGN = 74,
-		PLUS_ASSIGN = 75,
-		MINUS_ASSIGN = 76,
-		TIMES_ASSIGN = 77,
-		DIVIDE_ASSIGN = 78,
-		FLOAT = 79,
-		DOUBLE = 80,
-		INT = 81,
-		BYTE = 82,
-		UBYTE = 83,
-		SHORT = 84,
-		USHORT = 85,
-		UINT = 86,
-		INT64 = 87,
-		UINT64 = 88,
-		N4STRING = 89,
-		DIM_ID_SIZE = 90,
-		NRootAST = 91,
-		SHIFTL = 92,
-		SHIFTR = 93,
-		QUOTE = 94,
-		DGT = 95,
-		LPH = 96,
-		LPHDGT = 97,
-		XPN = 98,
-		VAR_NM_QT = 99,
-		BLASTOUT = 100,
-		UNUSED_OPS = 101,
-		WS = 102,
-		CXX_COMMENT = 103,
-		C_COMMENT = 104,
-		NUMBER_DOT = 105,
-		NUMBER = 106,
-		VAR_ATT = 107,
-		VAR_ATT_QT = 108,
-		DIM_QT = 109,
-		DIM_VAL = 110,
-		INCLUDE = 111,
-		LMT_DMN = 112,
+		VRSORT = 25,
+		VABS = 26,
+		VSQR2 = 27,
+		SEMI = 28,
+		DEFDIM = 29,
+		LPAREN = 30,
+		NSTRING = 31,
+		COMMA = 32,
+		RPAREN = 33,
+		WHILE = 34,
+		BREAK = 35,
+		CONTINUE = 36,
+		IF = 37,
+		ELSE = 38,
+		WHERE = 39,
+		ELSEWHERE = 40,
+		PRINT = 41,
+		VAR_ID = 42,
+		ATT_ID = 43,
+		LCURL = 44,
+		RCURL = 45,
+		FOR = 46,
+		COLON = 47,
+		LSQUARE = 48,
+		DIM_ID = 49,
+		RSQUARE = 50,
+		DIVIDE = 51,
+		DIM_MTD_ID = 52,
+		CALL_REF = 53,
+		DOT = 54,
+		FUNC = 55,
+		INC = 56,
+		DEC = 57,
+		LNOT = 58,
+		PLUS = 59,
+		MINUS = 60,
+		TIMES = 61,
+		CARET = 62,
+		MOD = 63,
+		FLTHAN = 64,
+		FGTHAN = 65,
+		LTHAN = 66,
+		GTHAN = 67,
+		GEQ = 68,
+		LEQ = 69,
+		EQ = 70,
+		NEQ = 71,
+		LAND = 72,
+		LOR = 73,
+		QUESTION = 74,
+		ASSIGN = 75,
+		PLUS_ASSIGN = 76,
+		MINUS_ASSIGN = 77,
+		TIMES_ASSIGN = 78,
+		DIVIDE_ASSIGN = 79,
+		FLOAT = 80,
+		DOUBLE = 81,
+		INT = 82,
+		BYTE = 83,
+		UBYTE = 84,
+		SHORT = 85,
+		USHORT = 86,
+		UINT = 87,
+		INT64 = 88,
+		UINT64 = 89,
+		N4STRING = 90,
+		DIM_ID_SIZE = 91,
+		NRootAST = 92,
+		SHIFTL = 93,
+		SHIFTR = 94,
+		QUOTE = 95,
+		DGT = 96,
+		LPH = 97,
+		LPHDGT = 98,
+		XPN = 99,
+		VAR_NM_QT = 100,
+		BLASTOUT = 101,
+		UNUSED_OPS = 102,
+		WS = 103,
+		CXX_COMMENT = 104,
+		C_COMMENT = 105,
+		NUMBER_DOT = 106,
+		NUMBER = 107,
+		VAR_ATT = 108,
+		VAR_ATT_QT = 109,
+		DIM_QT = 110,
+		DIM_VAL = 111,
+		INCLUDE = 112,
+		LMT_DMN = 113,
 		NULL_TREE_LOOKAHEAD = 3
 	};
 #ifdef __cplusplus
diff --git a/src/nco++/ncoTree.cpp b/src/nco++/ncoTree.cpp
index b079df5..bac65f2 100644
--- a/src/nco++/ncoTree.cpp
+++ b/src/nco++/ncoTree.cpp
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoTree.cpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoTree.cpp"$ */
 #include "ncoTree.hpp"
 #include <antlr/Token.hpp>
 #include <antlr/AST.hpp>
@@ -13,7 +13,7 @@ ncoTree::ncoTree()
 }
 
 int  ncoTree::lmt_peek(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 1008 "ncoGrammer.g"
+#line 956 "ncoGrammer.g"
 	int nbr_dmn=0;
 #line 19 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST lmt_peek_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
@@ -24,7 +24,7 @@ int  ncoTree::lmt_peek(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 		match(_t,LMT_LIST);
 		_t = _t->getNextSibling();
 		if ( inputState->guessing==0 ) {
-#line 1010 "ncoGrammer.g"
+#line 958 "ncoGrammer.g"
 			
 			RefAST aRef;     
 			aRef=lmt->getFirstChild();
@@ -51,7 +51,7 @@ int  ncoTree::lmt_peek(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 }
 
 int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 1023 "ncoGrammer.g"
+#line 969 "ncoGrammer.g"
 	int iret=0;
 #line 57 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST statements_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
@@ -71,7 +71,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 	ANTLR_USE_NAMESPACE(antlr)RefAST pvid = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST patt = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST pstr = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 1023 "ncoGrammer.g"
+#line 969 "ncoGrammer.g"
 	
 	var_sct *var;
 	const std::string fnc_nm("statements");
@@ -92,7 +92,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,BLOCK);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1032 "ncoGrammer.g"
+#line 978 "ncoGrammer.g"
 				
 				//std::cout <<"Num of Children in block="<<blk->getNumberOfChildren()<<endl;
 				iret=run_exe(blk->getFirstChild(),lpp_vtr.size() );
@@ -114,7 +114,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t219;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1038 "ncoGrammer.g"
+#line 984 "ncoGrammer.g"
 				
 				RefAST tr;
 				RefAST ntr;  
@@ -130,13 +130,12 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				}
 				} 
 				
-				
 				var=out(exp->getFirstChild());
 				if(var != (var_sct*)NULL)
 				var=nco_var_free(var);
 				iret=EXPR;
 				
-#line 140 "ncoTree.cpp"
+#line 139 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -152,7 +151,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t220;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1063 "ncoGrammer.g"
+#line 1008 "ncoGrammer.g"
 				
 				
 				var=out(fss);
@@ -160,7 +159,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				var=nco_var_free(var);
 				iret=FEXPR;
 				
-#line 164 "ncoTree.cpp"
+#line 163 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -178,7 +177,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t221;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1071 "ncoGrammer.g"
+#line 1016 "ncoGrammer.g"
 				
 				//if can have only 3 or 4 parts  , 1 node and 2 or 3 siblings
 				// IF LOGICAL_EXP STATEMENT1 STATEMENT2
@@ -194,7 +193,6 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				iret=run_exe(stmt->getFirstChild(),lpp_vtr.size());
 				}else
 				iret=statements(stmt);     
-				
 				}
 				
 				// See if else stmt exists (3rd sibling)       
@@ -204,13 +202,12 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				iret=run_exe(stmt->getFirstChild(),lpp_vtr.size());
 				}else
 				iret=statements(stmt);     
-				
 				}
 				
 				var=NULL_CEWI;
 				
 				
-#line 214 "ncoTree.cpp"
+#line 211 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -228,7 +225,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t222;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1103 "ncoGrammer.g"
+#line 1046 "ncoGrammer.g"
 				
 				// convert mask to short 
 				RefAST tr; 
@@ -272,7 +269,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				var=nco_var_free(var);
 				iret=WHERE;      
 				
-#line 276 "ncoTree.cpp"
+#line 273 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -291,7 +288,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t223;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1147 "ncoGrammer.g"
+#line 1090 "ncoGrammer.g"
 				
 				
 				bool br;
@@ -320,7 +317,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				var=NULL_CEWI; 
 				
 				
-#line 324 "ncoTree.cpp"
+#line 321 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -345,7 +342,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t224;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1176 "ncoGrammer.g"
+#line 1119 "ncoGrammer.g"
 				
 				bool b1,b2,b3,br;
 				var_sct *var_f1;
@@ -378,13 +375,11 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				
 				if(iret==BREAK) break;
 				
-				
 				if(b3){
 				var_f3=out(e3);
 				var_f3=nco_var_free(var_f3);
 				}
 				
-				
 				if(b2){
 				var_f2=out(e2);
 				br=ncap_var_lgcl(var_f2);
@@ -398,7 +393,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				var=NULL_CEWI;                
 				
 				
-#line 402 "ncoTree.cpp"
+#line 397 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -408,9 +403,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,ELSE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1230 "ncoGrammer.g"
+#line 1170 "ncoGrammer.g"
 				iret=ELSE;
-#line 414 "ncoTree.cpp"
+#line 409 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -420,9 +415,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,BREAK);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1231 "ncoGrammer.g"
+#line 1171 "ncoGrammer.g"
 				iret=BREAK;
-#line 426 "ncoTree.cpp"
+#line 421 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -432,9 +427,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,CONTINUE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1232 "ncoGrammer.g"
+#line 1172 "ncoGrammer.g"
 				iret=CONTINUE;
-#line 438 "ncoTree.cpp"
+#line 433 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -444,9 +439,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,NULL_NODE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1233 "ncoGrammer.g"
+#line 1173 "ncoGrammer.g"
 				iret=NULL_NODE;
-#line 450 "ncoTree.cpp"
+#line 445 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -464,7 +459,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t225;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1235 "ncoGrammer.g"
+#line 1175 "ncoGrammer.g"
 				
 				
 				long sz;
@@ -476,7 +471,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				var=(var_sct*)nco_var_free(var);
 				(void)ncap_def_dim(def->getText(),sz,prs_arg);
 				
-#line 480 "ncoTree.cpp"
+#line 475 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -518,7 +513,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				_t = __t229;
 				_t = _t->getNextSibling();
 				if ( inputState->guessing==0 ) {
-#line 1249 "ncoGrammer.g"
+#line 1188 "ncoGrammer.g"
 					
 					
 					int var_id;
@@ -527,11 +522,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 					std::string va_nm(pvid->getText());
 					NcapVar *Nvar;
 					
-					
 					if(prs_arg->ntl_scn) goto end2;
 					Nvar=prs_arg->var_vtr.find(va_nm);
 					
-					
 					if(Nvar && Nvar->flg_mem){   
 					wrn_prn(fnc_nm,"Cannot print out RAM variables at the moment!");
 					goto end2;
@@ -565,11 +558,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 					
 					if(fmt_sng) fmt_sng=(char*)nco_free(fmt_sng); 
 					
-					
 					end2: ;
 					
-					
-#line 573 "ncoTree.cpp"
+#line 564 "ncoTree.cpp"
 				}
 			}
 			else {
@@ -610,7 +601,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 					_t = __t233;
 					_t = _t->getNextSibling();
 					if ( inputState->guessing==0 ) {
-#line 1299 "ncoGrammer.g"
+#line 1234 "ncoGrammer.g"
 						
 						
 						int apsn;
@@ -665,7 +656,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 						
 						end3:   ;
 						
-#line 669 "ncoTree.cpp"
+#line 660 "ncoTree.cpp"
 					}
 				}
 				else {
@@ -706,7 +697,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 						_t = __t237;
 						_t = _t->getNextSibling();
 						if ( inputState->guessing==0 ) {
-#line 1354 "ncoGrammer.g"
+#line 1289 "ncoGrammer.g"
 							
 							char *prn_sng;
 							
@@ -718,7 +709,7 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 							prn_sng=(char*)nco_free(prn_sng);
 							}    
 							
-#line 722 "ncoTree.cpp"
+#line 713 "ncoTree.cpp"
 						}
 					}
 		else {
@@ -740,9 +731,9 @@ int  ncoTree::statements(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 }
 
 var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 1964 "ncoGrammer.g"
+#line 1835 "ncoGrammer.g"
 	var_sct *var;
-#line 746 "ncoTree.cpp"
+#line 737 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST out_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST pls_asn = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST min_asn = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -774,14 +765,14 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 	ANTLR_USE_NAMESPACE(antlr)RefAST val_uint = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST val_int64 = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST val_uint64 = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 1964 "ncoGrammer.g"
+#line 1835 "ncoGrammer.g"
 	
 	const std::string fnc_nm("out"); 
 		var_sct *var1;
 	var_sct *var2;
 	var=NULL_CEWI;
 	
-#line 785 "ncoTree.cpp"
+#line 776 "ncoTree.cpp"
 	
 	try {      // for error handling
 		if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -800,9 +791,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t305;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1991 "ncoGrammer.g"
+#line 1862 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, TIMES );
-#line 806 "ncoTree.cpp"
+#line 797 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -819,9 +810,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t306;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1994 "ncoGrammer.g"
+#line 1865 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, DIVIDE );
-#line 825 "ncoTree.cpp"
+#line 816 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -838,9 +829,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t307;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1996 "ncoGrammer.g"
+#line 1867 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, MOD);
-#line 844 "ncoTree.cpp"
+#line 835 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -857,9 +848,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t308;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1998 "ncoGrammer.g"
+#line 1869 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, CARET);
-#line 863 "ncoTree.cpp"
+#line 854 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -874,9 +865,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t309;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2002 "ncoGrammer.g"
+#line 1872 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,NULL_CEWI, LNOT );
-#line 880 "ncoTree.cpp"
+#line 871 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -891,9 +882,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t312;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2008 "ncoGrammer.g"
+#line 1878 "ncoGrammer.g"
 				var=ncap_var_var_inc(var1,NULL_CEWI,INC,false,prs_arg);
-#line 897 "ncoTree.cpp"
+#line 888 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -908,9 +899,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t313;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2010 "ncoGrammer.g"
+#line 1880 "ncoGrammer.g"
 				var=ncap_var_var_inc(var1,NULL_CEWI, DEC,false,prs_arg );
-#line 914 "ncoTree.cpp"
+#line 905 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -925,11 +916,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t314;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2012 "ncoGrammer.g"
+#line 1882 "ncoGrammer.g"
 				
 				var=ncap_var_var_inc(var1,NULL_CEWI,POST_INC,false,prs_arg);
 				
-#line 933 "ncoTree.cpp"
+#line 924 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -944,11 +935,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t315;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2015 "ncoGrammer.g"
+#line 1885 "ncoGrammer.g"
 				
 				var=ncap_var_var_inc(var1,NULL_CEWI,POST_DEC,false,prs_arg);
 				
-#line 952 "ncoTree.cpp"
+#line 943 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -965,9 +956,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t316;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2021 "ncoGrammer.g"
+#line 1890 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, LAND );
-#line 971 "ncoTree.cpp"
+#line 962 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -984,9 +975,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t317;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2023 "ncoGrammer.g"
+#line 1892 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, LOR );
-#line 990 "ncoTree.cpp"
+#line 981 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1003,9 +994,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t318;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2026 "ncoGrammer.g"
+#line 1895 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, LTHAN );
-#line 1009 "ncoTree.cpp"
+#line 1000 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1022,9 +1013,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t319;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2028 "ncoGrammer.g"
+#line 1897 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, GTHAN );
-#line 1028 "ncoTree.cpp"
+#line 1019 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1041,9 +1032,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t320;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2030 "ncoGrammer.g"
+#line 1899 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, GEQ );
-#line 1047 "ncoTree.cpp"
+#line 1038 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1060,9 +1051,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t321;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2032 "ncoGrammer.g"
+#line 1901 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, LEQ );
-#line 1066 "ncoTree.cpp"
+#line 1057 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1079,9 +1070,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t322;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2034 "ncoGrammer.g"
+#line 1903 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, EQ );
-#line 1085 "ncoTree.cpp"
+#line 1076 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1098,9 +1089,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t323;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2036 "ncoGrammer.g"
+#line 1905 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, NEQ );
-#line 1104 "ncoTree.cpp"
+#line 1095 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1117,9 +1108,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t324;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2040 "ncoGrammer.g"
+#line 1908 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, FLTHAN );
-#line 1123 "ncoTree.cpp"
+#line 1114 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1136,9 +1127,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t325;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2042 "ncoGrammer.g"
+#line 1910 "ncoGrammer.g"
 				var=ncap_var_var_op(var1,var2, FGTHAN );
-#line 1142 "ncoTree.cpp"
+#line 1133 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1156,12 +1147,12 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t326;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2045 "ncoGrammer.g"
+#line 1912 "ncoGrammer.g"
 				
 				var1=out_asn(pls_asn);
 				var=ncap_var_var_inc(var1,var2, PLUS_ASSIGN ,(pls_asn->getType()==UTIMES), prs_arg);
 				
-#line 1165 "ncoTree.cpp"
+#line 1156 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1179,12 +1170,12 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t327;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2049 "ncoGrammer.g"
+#line 1916 "ncoGrammer.g"
 				
 				var1=out_asn(min_asn);
 				var=ncap_var_var_inc(var1,var2, MINUS_ASSIGN ,(min_asn->getType()==UTIMES), prs_arg);
 				
-#line 1188 "ncoTree.cpp"
+#line 1179 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1202,12 +1193,12 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t328;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2053 "ncoGrammer.g"
+#line 1920 "ncoGrammer.g"
 				
 				var1=out_asn(tim_asn);
 				var=ncap_var_var_inc(var1,var2, TIMES_ASSIGN ,(tim_asn->getType()==UTIMES), prs_arg);
 				
-#line 1211 "ncoTree.cpp"
+#line 1202 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1225,12 +1216,12 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t329;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2057 "ncoGrammer.g"
+#line 1924 "ncoGrammer.g"
 					
 				var1=out_asn(div_asn);
 				var=ncap_var_var_inc(var1,var2, DIVIDE_ASSIGN ,(div_asn->getType()==UTIMES), prs_arg);
 				
-#line 1234 "ncoTree.cpp"
+#line 1225 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1246,7 +1237,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t330;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2063 "ncoGrammer.g"
+#line 1930 "ncoGrammer.g"
 				
 				// Check for RAM variable - if present 
 				// change tree - for example from:
@@ -1275,15 +1266,13 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				err_prn(fnc_nm,serr );       
 				}                
 				
-				
-				
 				if(prs_arg->ntl_scn)
 				var=assign_ntl(tr,bram); 
 				else
 				var=assign(tr,bram);
 				
 				
-#line 1287 "ncoTree.cpp"
+#line 1276 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1299,12 +1288,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t331;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2099 "ncoGrammer.g"
-				
+#line 1964 "ncoGrammer.g"
 				
 				
 				
-#line 1308 "ncoTree.cpp"
+#line 1296 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1322,7 +1310,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t332;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2105 "ncoGrammer.g"
+#line 1969 "ncoGrammer.g"
 				
 				bool br;
 				
@@ -1339,7 +1327,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				}   
 				var1=nco_var_free(var1);
 				
-#line 1343 "ncoTree.cpp"
+#line 1331 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1355,21 +1343,17 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t333;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2124 "ncoGrammer.g"
+#line 1987 "ncoGrammer.g"
 				
-				RefAST tr;
-				std::string sfnm(m->getText());
-				std::vector<fmc_cls>::iterator we=std::lower_bound(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(sfnm));
-				// see if string found
-				if( we->fnm() == sfnm){
-				//Call function
-				var=we->vfnc()->fnd(tr ,args, *we,*this); 
-				} else { 
-				std::cout << "Function  " << sfnm << " not found" <<std::endl;
-				exit(1);
-				}
+				// The lexer has appended the index of the function to the function name m - (name#index)
+				//  the index is into fmc_vtr  
+				string sm(m->getText()); 
+				string sdx(sm,sm.find("#")+1,sm.length()-1) ;
+				int idx=atoi(sdx.c_str());
+				RefAST tr;  
+				var=prs_arg->fmc_vtr[idx].vfnc()->fnd(tr ,args, prs_arg->fmc_vtr[idx],*this); 
 				
-#line 1373 "ncoTree.cpp"
+#line 1357 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1391,20 +1375,16 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t334;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2139 "ncoGrammer.g"
+#line 1998 "ncoGrammer.g"
 				
-				std::string sfnm(mfnc->getText());
-				std::vector<fmc_cls>::iterator we=std::lower_bound(prs_arg->fmc_vtr.begin(),prs_arg->fmc_vtr.end(),fmc_cls(sfnm));
-				// see if string found
-				if( we->fnm() == sfnm){
-				//Call function
-				var=we->vfnc()->fnd(mtd ,margs, *we,*this); 
-				} else { 
-				std::cout << "Method  " << sfnm << " not found" <<std::endl;
-				exit(1);
-				}
+				// The lexer has appended the index of the function to the function name m - (name#index)
+				//  the index is into fmc_vtr  
+				string sm(mfnc->getText()); 
+				string sdx(sm,sm.find("#")+1,sm.length()-1) ;
+				int idx=atoi(sdx.c_str());
+				var=prs_arg->fmc_vtr[idx].vfnc()->fnd(mtd ,margs, prs_arg->fmc_vtr[idx],*this); 
 				
-#line 1408 "ncoTree.cpp"
+#line 1388 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1414,7 +1394,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,DIM_ID_SIZE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2153 "ncoGrammer.g"
+#line 2008 "ncoGrammer.g"
 				
 				string sDim=dval->getText();
 				dmn_sct *dmn_fd;
@@ -1434,7 +1414,6 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				#ifndef NC_MAX_INT
 				#define NC_MAX_INT 2147483647
 				#endif
-				
 				//Initial Scan
 				if(prs_arg->ntl_scn){  
 				if( (dmn_fd==NULL_CEWI )|| (dmn_fd->sz <= NC_MAX_INT) )
@@ -1455,9 +1434,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				} 
 				
 				
-				
-				
-#line 1461 "ncoTree.cpp"
+#line 1438 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1467,7 +1444,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,ATT_ID);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2230 "ncoGrammer.g"
+#line 2080 "ncoGrammer.g"
 				
 				
 				NcapVar *Nvar=NULL;
@@ -1493,12 +1470,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				if(prs_arg->ntl_scn && var==NULL_CEWI )
 				var=ncap_var_udf(att->getText().c_str());
 				
-				
 				if(prs_arg->ntl_scn && var->val.vp !=NULL)
 				var->val.vp=(void*)nco_free(var->val.vp);
 				
 				
-#line 1502 "ncoTree.cpp"
+#line 1478 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1508,11 +1484,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,VALUE_LIST);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2262 "ncoGrammer.g"
+#line 2111 "ncoGrammer.g"
 				
 				var=value_list(vlst);
 				
-#line 1516 "ncoTree.cpp"
+#line 1492 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1522,7 +1498,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,NSTRING);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2267 "ncoGrammer.g"
+#line 2116 "ncoGrammer.g"
 				
 				char *tsng;
 				
@@ -1544,7 +1520,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				}
 				tsng=(char*)nco_free(tsng);      
 				
-#line 1548 "ncoTree.cpp"
+#line 1524 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1554,11 +1530,10 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,N4STRING);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2291 "ncoGrammer.g"
+#line 2139 "ncoGrammer.g"
 				
 				char *tsng;
 				
-				
 				tsng=strdup(str1->getText().c_str());
 				(void)sng_ascii_trn(tsng);            
 				var=(var_sct *)nco_malloc(sizeof(var_sct));
@@ -1580,12 +1555,10 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				var->val.sngp[0]=strdup(tsng);   
 				
 				(void)cast_nctype_void((nc_type)NC_STRING,&var->val);
-				
-				
 				}
 				tsng=(char*)nco_free(tsng);      
 				
-#line 1589 "ncoTree.cpp"
+#line 1562 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1595,9 +1568,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,FLOAT);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2326 "ncoGrammer.g"
+#line 2169 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~float"),(nc_type)NC_FLOAT,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~float"),static_cast<float>(std::strtod(val_float->getText().c_str(),(char **)NULL)));
-#line 1601 "ncoTree.cpp"
+#line 1574 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1607,9 +1580,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,DOUBLE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2328 "ncoGrammer.g"
+#line 2171 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~double"),(nc_type)NC_DOUBLE,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~double"),strtod(val_double->getText().c_str(),(char **)NULL));
-#line 1613 "ncoTree.cpp"
+#line 1586 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1619,9 +1592,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,INT);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2330 "ncoGrammer.g"
+#line 2173 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~int"),(nc_type)NC_INT,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~int"),static_cast<nco_int>(std::strtol(val_int->getText().c_str(),(char **)NULL,NCO_SNG_CNV_BASE10)));
-#line 1625 "ncoTree.cpp"
+#line 1598 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1631,9 +1604,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,SHORT);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2332 "ncoGrammer.g"
+#line 2175 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~short"),(nc_type)NC_SHORT,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~short"),static_cast<nco_short>(std::strtol(val_short->getText().c_str(),(char **)NULL,NCO_SNG_CNV_BASE10)));
-#line 1637 "ncoTree.cpp"
+#line 1610 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1643,9 +1616,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,BYTE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2334 "ncoGrammer.g"
+#line 2177 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~byte"),(nc_type)NC_BYTE,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~byte"),static_cast<nco_byte>(std::strtol(val_byte->getText().c_str(),(char **)NULL,NCO_SNG_CNV_BASE10)));
-#line 1649 "ncoTree.cpp"
+#line 1622 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1655,9 +1628,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,UBYTE);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2339 "ncoGrammer.g"
+#line 2182 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~ubyte"),(nc_type)NC_UBYTE,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~ubyte"),static_cast<nco_ubyte>(std::strtoul(val_ubyte->getText().c_str(),(char **)NULL,NCO_SNG_CNV_BASE10)));
-#line 1661 "ncoTree.cpp"
+#line 1634 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1667,9 +1640,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,USHORT);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2343 "ncoGrammer.g"
+#line 2186 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~ushort"),(nc_type)NC_USHORT,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~ushort"),static_cast<nco_ushort>(std::strtoul(val_ushort->getText().c_str(),(char **)NULL,NCO_SNG_CNV_BASE10)));
-#line 1673 "ncoTree.cpp"
+#line 1646 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1679,9 +1652,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,UINT);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2345 "ncoGrammer.g"
+#line 2188 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~uint"),(nc_type)NC_UINT,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~uint"),static_cast<nco_uint>(std::strtoul(val_uint->getText().c_str(),(char **)NULL,NCO_SNG_CNV_BASE10)));
-#line 1685 "ncoTree.cpp"
+#line 1658 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1691,9 +1664,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,INT64);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2347 "ncoGrammer.g"
+#line 2190 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~int64"),(nc_type)NC_INT64,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~int64"),sng2nbr(val_int64->getText(),nco_int64_CEWI));
-#line 1697 "ncoTree.cpp"
+#line 1670 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1703,9 +1676,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,UINT64);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2351 "ncoGrammer.g"
+#line 2194 "ncoGrammer.g"
 				if(prs_arg->ntl_scn) var=ncap_sclr_var_mk(static_cast<std::string>("~uint64"),(nc_type)NC_UINT64,false); else var=ncap_sclr_var_mk(static_cast<std::string>("~uint64"),sng2nbr(val_uint64->getText(),nco_uint64_CEWI));
-#line 1709 "ncoTree.cpp"
+#line 1682 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -1749,9 +1722,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				_t = __t276;
 				_t = _t->getNextSibling();
 				if ( inputState->guessing==0 ) {
-#line 1974 "ncoGrammer.g"
+#line 1845 "ncoGrammer.g"
 					var=ncap_var_var_op(var1,var2, PLUS );
-#line 1755 "ncoTree.cpp"
+#line 1728 "ncoTree.cpp"
 				}
 			}
 			else {
@@ -1794,9 +1767,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 					_t = __t280;
 					_t = _t->getNextSibling();
 					if ( inputState->guessing==0 ) {
-#line 1976 "ncoGrammer.g"
+#line 1847 "ncoGrammer.g"
 						var=ncap_var_var_op(var1,var2, MINUS );
-#line 1800 "ncoTree.cpp"
+#line 1773 "ncoTree.cpp"
 					}
 				}
 				else {
@@ -1847,11 +1820,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 						_t = __t285;
 						_t = _t->getNextSibling();
 						if ( inputState->guessing==0 ) {
-#line 1977 "ncoGrammer.g"
+#line 1848 "ncoGrammer.g"
 							
 							var=ncap_var_var_inc(var1,NULL_CEWI,POST_INC,true,prs_arg);      
 							
-#line 1855 "ncoTree.cpp"
+#line 1828 "ncoTree.cpp"
 						}
 					}
 					else {
@@ -1902,11 +1875,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 							_t = __t291;
 							_t = _t->getNextSibling();
 							if ( inputState->guessing==0 ) {
-#line 1980 "ncoGrammer.g"
+#line 1851 "ncoGrammer.g"
 								
 								var=ncap_var_var_inc(var1,NULL_CEWI,POST_DEC,true,prs_arg);      
 								
-#line 1910 "ncoTree.cpp"
+#line 1883 "ncoTree.cpp"
 							}
 						}
 						else {
@@ -1957,11 +1930,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 								_t = __t297;
 								_t = _t->getNextSibling();
 								if ( inputState->guessing==0 ) {
-#line 1983 "ncoGrammer.g"
+#line 1854 "ncoGrammer.g"
 									
 									var=ncap_var_var_inc(var1,NULL_CEWI,INC,true,prs_arg);      
 									
-#line 1965 "ncoTree.cpp"
+#line 1938 "ncoTree.cpp"
 								}
 							}
 							else {
@@ -2012,11 +1985,11 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 									_t = __t303;
 									_t = _t->getNextSibling();
 									if ( inputState->guessing==0 ) {
-#line 1986 "ncoGrammer.g"
+#line 1857 "ncoGrammer.g"
 										
 										var=ncap_var_var_inc(var1,NULL_CEWI,DEC,true,prs_arg);      
 										
-#line 2020 "ncoTree.cpp"
+#line 1993 "ncoTree.cpp"
 									}
 								}
 								else if ((_t->getType() == MINUS)) {
@@ -2029,9 +2002,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 									_t = __t310;
 									_t = _t->getNextSibling();
 									if ( inputState->guessing==0 ) {
-#line 2004 "ncoGrammer.g"
+#line 1874 "ncoGrammer.g"
 										var=ncap_var_var_op(var1,NULL_CEWI, MINUS );
-#line 2035 "ncoTree.cpp"
+#line 2008 "ncoTree.cpp"
 									}
 								}
 								else if ((_t->getType() == PLUS)) {
@@ -2082,7 +2055,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 										_t = __t338;
 										_t = _t->getNextSibling();
 										if ( inputState->guessing==0 ) {
-#line 2197 "ncoGrammer.g"
+#line 2049 "ncoGrammer.g"
 											
 											// see if hyperslab limit is a single value
 											if(lmt->getNumberOfChildren()==1 && 
@@ -2094,7 +2067,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 											var=var_lmt(vid);
 											
 											
-#line 2098 "ncoTree.cpp"
+#line 2071 "ncoTree.cpp"
 										}
 									}
 									else if ((_t->getType() == VAR_ID)) {
@@ -2102,7 +2075,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 										match(_t,VAR_ID);
 										_t = _t->getNextSibling();
 										if ( inputState->guessing==0 ) {
-#line 2211 "ncoGrammer.g"
+#line 2063 "ncoGrammer.g"
 											
 											
 											var=prs_arg->ncap_var_init(v->getText(),true);
@@ -2118,9 +2091,7 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 											if(bcst && var->sz >1)
 											var=ncap_cst_do(var,var_cst,prs_arg->ntl_scn);
 											
-											
-											
-#line 2124 "ncoTree.cpp"
+#line 2095 "ncoTree.cpp"
 										}
 									}
 		else {
@@ -2144,9 +2115,9 @@ var_sct * ncoTree::out(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	bool bram
 ) {
-#line 1368 "ncoGrammer.g"
+#line 1303 "ncoGrammer.g"
 	var_sct *var;
-#line 2150 "ncoTree.cpp"
+#line 2121 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST assign_ntl_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST lmt = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -2156,12 +2127,12 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	ANTLR_USE_NAMESPACE(antlr)RefAST att = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST att1 = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST att2 = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 1368 "ncoGrammer.g"
+#line 1303 "ncoGrammer.g"
 	
 	const std::string fnc_nm("assign_ntl"); 
 	var=NULL_CEWI;
 	
-#line 2165 "ncoTree.cpp"
+#line 2136 "ncoTree.cpp"
 	
 	try {      // for error handling
 		bool synPredMatched241 = false;
@@ -2201,8 +2172,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			_t = __t242;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1373 "ncoGrammer.g"
-				
+#line 1308 "ncoGrammer.g"
 				
 				
 				std::string var_nm; 
@@ -2212,22 +2182,17 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				
 				var_nm=vid->getText();
 				
-				
-				
-				if(dbg_lvl_get() > 0)
-				dbg_prn(fnc_nm,var_nm+"(limits)");
+				if(nco_dbg_lvl_get() >= nco_dbg_scl) dbg_prn(fnc_nm,var_nm+"(limits)");
 				
 				// evaluate rhs for side effects eg new dims or lvalues 
 				var_rhs=out(vid->getNextSibling());         
 				var_rhs=nco_var_free(var_rhs);               
 				
-				
 				var_lhs=prs_arg->ncap_var_init(var_nm,false);
 				if(var_lhs){
 				var=nco_var_dpl(var_lhs);
 				(void)prs_arg->ncap_var_write(var_lhs,bram);
 				} else {
-				
 				// set var to udf
 				var_lhs=ncap_var_udf(var_nm.c_str());
 				var=nco_var_dpl(var_lhs);
@@ -2236,7 +2201,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				(void)prs_arg->int_vtr.push_ow(Nvar);
 				}
 				
-#line 2240 "ncoTree.cpp"
+#line 2205 "ncoTree.cpp"
 			}
 		}
 		else {
@@ -2277,7 +2242,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				_t = __t246;
 				_t = _t->getNextSibling();
 				if ( inputState->guessing==0 ) {
-#line 1408 "ncoGrammer.g"
+#line 1337 "ncoGrammer.g"
 					
 					
 					int idx;
@@ -2290,10 +2255,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					
 					var_nm=vid1->getText();               
 					
-					if(dbg_lvl_get() > 0)
-					dbg_prn(fnc_nm,var_nm+"[dims]");
-					
-					
+					if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm+"[dims]");
 					
 					// set class wide variables
 					bcst=true;  
@@ -2317,9 +2279,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					// return undef if dim missing 
 					if( idx <str_vtr_sz){
 					var=NULL_CEWI;
-					
 					} else {
-					
 					// Cast is applied in VAR_ID action in function out()
 					var_cst=ncap_cst_mk(str_vtr,prs_arg);
 					
@@ -2330,12 +2290,10 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					var_cst=nco_var_cnf_typ(var1->type,var_cst);
 					var_cst->typ_dsk=var1->type;
 					var=nco_var_dpl(var_cst);
-					
 					}
 					var1=nco_var_free(var1);
 					}
 					
-					
 					if(!var){
 					var1=ncap_var_udf(var_nm.c_str());
 					Nvar=new NcapVar(var1);
@@ -2353,8 +2311,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					
 					bcst=false;   
 					
-					
-#line 2358 "ncoTree.cpp"
+#line 2315 "ncoTree.cpp"
 				}
 			}
 			else if ((_t->getType() == VAR_ID)) {
@@ -2362,17 +2319,14 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				match(_t,VAR_ID);
 				_t = _t->getNextSibling();
 				if ( inputState->guessing==0 ) {
-#line 1485 "ncoGrammer.g"
+#line 1406 "ncoGrammer.g"
 					
 					
 					std::string var_nm;
 					
 					var_nm=vid2->getText();
 					
-					
-					if(dbg_lvl_get() > 0)
-					dbg_prn(fnc_nm,var_nm);
-					
+					if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm);
 					
 					var_sct *var1;
 					
@@ -2380,7 +2334,6 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					bcst=false;
 					var_cst=NULL_CEWI; 
 					
-					
 					// get shape from RHS
 					var1=out(vid2->getNextSibling());
 					(void)nco_free(var1->nm);                
@@ -2395,7 +2348,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					//(void)ncap_var_write_omp(var1,bram,prs_arg);
 					
 					
-#line 2399 "ncoTree.cpp"
+#line 2352 "ncoTree.cpp"
 				}
 			}
 			else {
@@ -2436,11 +2389,11 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					_t = __t250;
 					_t = _t->getNextSibling();
 					if ( inputState->guessing==0 ) {
-#line 1518 "ncoGrammer.g"
+#line 1435 "ncoGrammer.g"
 						
 						;
 						
-#line 2444 "ncoTree.cpp"
+#line 2397 "ncoTree.cpp"
 					}
 				}
 				else {
@@ -2481,11 +2434,11 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 						_t = __t254;
 						_t = _t->getNextSibling();
 						if ( inputState->guessing==0 ) {
-#line 1521 "ncoGrammer.g"
+#line 1438 "ncoGrammer.g"
 							
 							;
 							
-#line 2489 "ncoTree.cpp"
+#line 2442 "ncoTree.cpp"
 						}
 					}
 					else if ((_t->getType() == ATT_ID)) {
@@ -2493,16 +2446,14 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 						match(_t,ATT_ID);
 						_t = _t->getNextSibling();
 						if ( inputState->guessing==0 ) {
-#line 1524 "ncoGrammer.g"
+#line 1441 "ncoGrammer.g"
 							
 							
 							//In Initial scan all newly defined atts are flagged as Undefined
 							var_sct *var1;
 							NcapVar *Nvar;
 							
-							if(dbg_lvl_get() > 0)
-							dbg_prn(fnc_nm,att2->getText());
-							
+							if(nco_dbg_lvl_get() > nco_dbg_var) dbg_prn(fnc_nm,att2->getText());
 							
 							var1=ncap_var_udf(att2->getText().c_str());
 							
@@ -2513,7 +2464,7 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 							var=nco_var_dpl(var1);    
 							
 							
-#line 2517 "ncoTree.cpp"
+#line 2468 "ncoTree.cpp"
 						}
 					}
 		else {
@@ -2537,9 +2488,9 @@ var_sct * ncoTree::assign_ntl(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	bool bram
 ) {
-#line 1547 "ncoGrammer.g"
+#line 1461 "ncoGrammer.g"
 	var_sct *var;
-#line 2543 "ncoTree.cpp"
+#line 2494 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST assign_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST lmt = ANTLR_USE_NAMESPACE(antlr)nullAST;
@@ -2549,12 +2500,12 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	ANTLR_USE_NAMESPACE(antlr)RefAST att = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST att1 = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST att2 = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 1547 "ncoGrammer.g"
+#line 1461 "ncoGrammer.g"
 	
 	const std::string fnc_nm("assign"); 
 	var=NULL_CEWI;
 	
-#line 2558 "ncoTree.cpp"
+#line 2509 "ncoTree.cpp"
 	
 	try {      // for error handling
 		bool synPredMatched258 = false;
@@ -2594,7 +2545,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			_t = __t259;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 1553 "ncoGrammer.g"
+#line 1467 "ncoGrammer.g"
 				
 				
 				int idx;
@@ -2617,9 +2568,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				
 				var_nm=vid->getText();
 				
-				if(dbg_lvl_get() > 0)
-				dbg_prn(fnc_nm,var_nm+"(limits)");
-				
+				if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm+"(limits)");
 				
 				// check to see if we are dealing with a single
 				// index in limit -- i.e hyperslab a mult-dimensional var
@@ -2641,11 +2590,9 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				if(Nvar) 
 				bram=Nvar->flg_mem;
 				
-				
 				// Deal with RAM variables
 				if(bram) {
 				
-				
 				if(Nvar && Nvar->flg_stt==1){
 				var_sct *var_ini;
 				var_ini=prs_arg->ncap_var_init(var_nm,true);       
@@ -2658,27 +2605,22 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				if(Nvar && Nvar->flg_stt==2)
 				var_lhs=Nvar->var;    
 				
-				
 				if(!Nvar)
 				var_lhs=prs_arg->ncap_var_init(var_nm,true);       
 				
-				
 				nbr_dmn=var_lhs->nbr_dim;
 				
 				// Now populate lmt_vtr;
 				if( lmt_mk(lmt_Ref,lmt_vtr) == 0)
 				err_prn(fnc_nm,"Invalid hyperslab limits for variable "+ var_nm);
 				
-				
 				if( lmt_vtr.size() != nbr_dmn)
 				err_prn(fnc_nm,"Number of hyperslab limits for variable "+ var_nm+" doesn't match number of dimensions");
 				
-				
 				// add dim names to dimension list 
 				for(idx=0 ; idx < nbr_dmn;idx++) 
 				lmt_vtr[idx]->nm=strdup(var_lhs->dim[idx]->nm);   
 				
-				
 				slb_sz=1;        
 				// fill out limit structure
 				for(idx=0 ; idx < nbr_dmn ;idx++){
@@ -2695,7 +2637,6 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				if(var_rhs->sz == 1)
 				(void)ncap_att_stretch(var_rhs,slb_sz);
 				
-				
 				// make sure var_lhs and var_rhs are the same size
 				// and that they are the same shape (ie they conform!!)          
 				if(var_rhs->sz != slb_sz){
@@ -2706,12 +2647,9 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				if(Nvar==NULL)
 				(void)prs_arg->ncap_var_write(var_lhs,true); 
 				
-				
-				
 				// deal with Regular Vars
 				} else {                 
 				
-				
 				// if var undefined in O or defined but not populated
 				if(!Nvar || ( Nvar && Nvar->flg_stt==1)){              
 				// if var isn't in ouptut then copy it there
@@ -2734,16 +2672,13 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				if( lmt_mk(lmt_Ref,lmt_vtr) == 0)
 				err_prn(fnc_nm,"Invalid hyperslab limits for variable "+ var_nm);
 				
-				
 				if( lmt_vtr.size() != nbr_dmn)
 				err_prn(fnc_nm,"Number of hyperslab limits for variable "+ var_nm+" doesn't match number of dimensions");
 				
-				
 				// add dim names to dimension list 
 				for(idx=0 ; idx < nbr_dmn;idx++) 
 				lmt_vtr[idx]->nm=strdup(var_lhs->dim[idx]->nm);   
 				
-				
 				var_lhs->sz=1;        
 				// fill out limit structure
 				for(idx=0 ; idx < nbr_dmn ;idx++){
@@ -2768,7 +2703,6 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				err_prn(fnc_nm, "Hyperslab for "+var_nm+" - number of elements on LHS(" +nbr2sng(var_lhs->sz) +  ") doesn't equal number of elements on RHS(" +nbr2sng(var_rhs->sz) +  ")");                                       
 				}
 				
-				
 				// swap values about
 				var_lhs->val.vp=var_rhs->val.vp; 
 				var_rhs->val.vp=(void*)NULL; 
@@ -2789,14 +2723,10 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				
 				} // end put block !!
 				
-				
-				
 				} // end else if regular var
 				
-				
 				var_rhs=nco_var_free(var_rhs);
 				
-				
 				// Empty and free vector 
 				for(idx=0 ; idx < nbr_dmn ; idx++)
 				(void)nco_lmt_free(lmt_vtr[idx]);
@@ -2808,8 +2738,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				var=prs_arg->ncap_var_init(var_nm,true);
 				
 				
-				
-#line 2813 "ncoTree.cpp"
+#line 2742 "ncoTree.cpp"
 			}
 		}
 		else {
@@ -2850,7 +2779,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				_t = __t263;
 				_t = _t->getNextSibling();
 				if ( inputState->guessing==0 ) {
-#line 1770 "ncoGrammer.g"
+#line 1661 "ncoGrammer.g"
 					
 					
 					var_sct *var1;
@@ -2860,15 +2789,12 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					
 					var_nm=vid1->getText();
 					
-					if(dbg_lvl_get() > 0)
-					dbg_prn(fnc_nm,var_nm+"[dims]");
-					
+					if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm+"[dims]");
 					
 					// set class wide variables
 					bcst=true;  
 					var_cst=NULL_CEWI;
 					
-					
 					//aRef=vid->getFirstChild()->getFirstChild();
 					aRef=dmn->getFirstChild();
 					
@@ -2894,8 +2820,6 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					bool br1=(var_cst->sz >=1 && var1->sz==1);
 					bool br2=(var_cst->sz==var1->sz &&  ( ncap_var_is_att(var1) ||var1->has_dpl_dmn==-1 ));
 					
-					
-					
 					// The code rebuilds var1 with the shape from the casting variable  
 					if( br1 || br2){
 					var_sct *var_nw;
@@ -2916,22 +2840,16 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					
 					//blow out if vars not the same size      
 					if(var1->sz != var_cst->sz) 
-					err_prn(fnc_nm, "LHS cast for "+var_nm+" - cannot make RHS "+ std::string(var1->nm) + " conform.");               
-					
+					err_prn(fnc_nm, "LHS cast for "+var_nm+" - cannot make RHS "+ std::string(var1->nm) + " conform.");          
 					var1->nm=(char*)nco_free(var1->nm);
-					
 					var1->nm =strdup(var_nm.c_str());
 					
-					
-					
 					// See If we have to return something
 					if(dmn->getNextSibling() && dmn->getNextSibling()->getType()==NORET)
 					var=NULL_CEWI;
 					else 
 					var=nco_var_dpl(var1);     
 					
-					
-					
 					//call to nco_var_get() in ncap_var_init() uses this property
 					var1->typ_dsk=var1->type;
 					(void)prs_arg->ncap_var_write(var1,bram);
@@ -2940,8 +2858,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					var_cst=nco_var_free(var_cst); 
 					
 					
-					
-#line 2945 "ncoTree.cpp"
+#line 2862 "ncoTree.cpp"
 				}
 			}
 			else if ((_t->getType() == VAR_ID)) {
@@ -2949,7 +2866,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 				match(_t,VAR_ID);
 				_t = _t->getNextSibling();
 				if ( inputState->guessing==0 ) {
-#line 1861 "ncoGrammer.g"
+#line 1740 "ncoGrammer.g"
 					
 					// Set class wide variables
 					var_sct *var1;
@@ -2958,10 +2875,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					
 					var_nm=vid2->getText();       
 					
-					if(dbg_lvl_get() > 0)
-					dbg_prn(fnc_nm,var_nm);
-					
-					
+					if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,var_nm);
 					
 					bcst=false;
 					var_cst=NULL_CEWI; 
@@ -2999,7 +2913,6 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					(void)prs_arg->ncap_var_write(var1,bram);
 					//(void)ncap_var_write_omp(var1,bram,prs_arg);
 					
-					
 					// See If we have to return something
 					if(vid2->getFirstChild() && vid2->getFirstChild()->getType()==NORET)
 					var=NULL_CEWI;
@@ -3007,8 +2920,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					var=prs_arg->ncap_var_init(var_nm,true);               ;
 					
 					
-					
-#line 3012 "ncoTree.cpp"
+#line 2924 "ncoTree.cpp"
 				}
 			}
 			else {
@@ -3049,11 +2961,11 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 					_t = __t267;
 					_t = _t->getNextSibling();
 					if ( inputState->guessing==0 ) {
-#line 1920 "ncoGrammer.g"
+#line 1794 "ncoGrammer.g"
 						
 						;
 						
-#line 3057 "ncoTree.cpp"
+#line 2969 "ncoTree.cpp"
 					}
 				}
 				else {
@@ -3094,11 +3006,11 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 						_t = __t271;
 						_t = _t->getNextSibling();
 						if ( inputState->guessing==0 ) {
-#line 1923 "ncoGrammer.g"
+#line 1797 "ncoGrammer.g"
 							
 							;
 							
-#line 3102 "ncoTree.cpp"
+#line 3014 "ncoTree.cpp"
 						}
 					}
 					else if ((_t->getType() == ATT_ID)) {
@@ -3106,14 +3018,13 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 						match(_t,ATT_ID);
 						_t = _t->getNextSibling();
 						if ( inputState->guessing==0 ) {
-#line 1926 "ncoGrammer.g"
+#line 1800 "ncoGrammer.g"
 							
 							
 							var_sct *var1;
 							string sa=att2->getText();
 							
-							if(dbg_lvl_get() > 0)
-							dbg_prn(fnc_nm,sa);
+							if(nco_dbg_lvl_get() >= nco_dbg_var) dbg_prn(fnc_nm,sa);
 							
 							var1=out(att2->getNextSibling());
 							
@@ -3134,7 +3045,6 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 							NcapVar *Nvar=new NcapVar(var1,sa);
 							prs_arg->var_vtr.push_ow(Nvar);       
 							
-							
 							// See If we have to return something
 							if(att2->getFirstChild() && att2->getFirstChild()->getType()==NORET)
 							var=NULL_CEWI;
@@ -3142,7 +3052,7 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 							var=nco_var_dpl(var1);               ;
 							
 							
-#line 3146 "ncoTree.cpp"
+#line 3056 "ncoTree.cpp"
 						}
 					}
 		else {
@@ -3164,19 +3074,19 @@ var_sct * ncoTree::assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 }
 
 var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 2361 "ncoGrammer.g"
+#line 2204 "ncoGrammer.g"
 	var_sct *var;
-#line 3170 "ncoTree.cpp"
+#line 3080 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST out_asn_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid1 = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST att = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 2361 "ncoGrammer.g"
+#line 2204 "ncoGrammer.g"
 	
 	const std::string fnc_nm("assign_asn");
 	var=NULL_CEWI; 
 	
-#line 3180 "ncoTree.cpp"
+#line 3090 "ncoTree.cpp"
 	
 	try {      // for error handling
 		if (_t == ANTLR_USE_NAMESPACE(antlr)nullAST )
@@ -3194,7 +3104,7 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			_t = __t340;
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2368 "ncoGrammer.g"
+#line 2211 "ncoGrammer.g"
 				
 				if(vid1->getFirstChild())
 				err_prn(fnc_nm,"Invalid Lvalue " +vid1->getText() );
@@ -3205,7 +3115,7 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				}
 				
 				
-#line 3209 "ncoTree.cpp"
+#line 3119 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -3215,7 +3125,7 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,VAR_ID);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2379 "ncoGrammer.g"
+#line 2222 "ncoGrammer.g"
 				
 				if(vid->getFirstChild())
 				err_prn(fnc_nm,"Invalid Lvalue " +vid->getText() );
@@ -3226,9 +3136,7 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				}
 				
 				
-				
-				
-#line 3232 "ncoTree.cpp"
+#line 3140 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -3238,7 +3146,7 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			match(_t,ATT_ID);
 			_t = _t->getNextSibling();
 			if ( inputState->guessing==0 ) {
-#line 2392 "ncoGrammer.g"
+#line 2233 "ncoGrammer.g"
 				
 				// check "output"
 				NcapVar *Nvar=NULL;
@@ -3259,7 +3167,6 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				else    
 				var=ncap_att_init(att->getText(),prs_arg);
 				
-				
 				if(!prs_arg->ntl_scn && var==NULL_CEWI ){
 				err_prn(fnc_nm,"Unable to locate attribute " +att->getText()+ " in input or output files.");
 				}
@@ -3268,13 +3175,11 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 				if(prs_arg->ntl_scn && var==NULL_CEWI )
 				var=ncap_var_udf(att->getText().c_str());
 				
-				
 				if(prs_arg->ntl_scn && var->val.vp !=NULL)
 				var->val.vp=(void*)nco_free(var->val.vp);
 				
 				
-				
-#line 3278 "ncoTree.cpp"
+#line 3183 "ncoTree.cpp"
 			}
 			break;
 		}
@@ -3298,17 +3203,17 @@ var_sct * ncoTree::out_asn(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 }
 
 var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 2430 "ncoGrammer.g"
+#line 2267 "ncoGrammer.g"
 	var_sct *var;
-#line 3304 "ncoTree.cpp"
+#line 3209 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST value_list_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vlst = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 2430 "ncoGrammer.g"
+#line 2267 "ncoGrammer.g"
 	
 	const std::string fnc_nm("value_list");
 	var=NULL_CEWI; 
 	
-#line 3312 "ncoTree.cpp"
+#line 3217 "ncoTree.cpp"
 	
 	try {      // for error handling
 		{
@@ -3317,7 +3222,7 @@ var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 		_t = _t->getNextSibling();
 		}
 		if ( inputState->guessing==0 ) {
-#line 2435 "ncoGrammer.g"
+#line 2272 "ncoGrammer.g"
 			
 			
 			char *cp;
@@ -3325,7 +3230,6 @@ var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			int idx;
 			int tsz;
 			
-			
 			nc_type type=NC_NAT;
 			var_sct *var_ret;                        
 			RefAST rRef;
@@ -3346,13 +3250,11 @@ var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			goto end_val;
 			}
 			
-			
 			// find highest type
 			for(idx=0;idx <nbr_lst ;idx++)
 			type=ncap_typ_hgh(type,exp_vtr[idx]->type);
 			//(void)ncap_var_retype(exp_vtr[0], exp_vtr[idx]);  
 			
-			
 			// Inital Scan
 			if(prs_arg->ntl_scn){
 			
@@ -3401,7 +3303,6 @@ var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			memcpy(cp,exp_vtr[idx]->val.vp,tsz);
 			}    
 			
-			
 			// Free vector        
 			end_val: for(idx=0 ; idx < nbr_lst ; idx++)
 			(void)nco_var_free(exp_vtr[idx]);    
@@ -3409,7 +3310,7 @@ var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			var=var_ret;
 			
 			
-#line 3413 "ncoTree.cpp"
+#line 3314 "ncoTree.cpp"
 		}
 	}
 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -3428,20 +3329,20 @@ var_sct * ncoTree::value_list(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 var_sct * ncoTree::value_list_string(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	 std::vector<var_sct*> &exp_vtr
 ) {
-#line 2532 "ncoGrammer.g"
+#line 2363 "ncoGrammer.g"
 	var_sct *var;
-#line 3434 "ncoTree.cpp"
+#line 3335 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST value_list_string_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
-#line 2532 "ncoGrammer.g"
+#line 2363 "ncoGrammer.g"
 	
 	const std::string fnc_nm("value_list_string");
 	var=NULL_CEWI; 
 	
-#line 3441 "ncoTree.cpp"
+#line 3342 "ncoTree.cpp"
 	
 	try {      // for error handling
 		if ( inputState->guessing==0 ) {
-#line 2538 "ncoGrammer.g"
+#line 2369 "ncoGrammer.g"
 			
 			int idx;
 			int nbr_lst;
@@ -3449,10 +3350,7 @@ var_sct * ncoTree::value_list_string(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			nco_string *cp;         
 			var_sct *var_ret;                        
 			
-			
 			nbr_lst=exp_vtr.size();
-			
-			
 			var_ret=(var_sct *)nco_malloc(sizeof(var_sct));
 			/* Set defaults */
 			(void)var_dfl_set(var_ret); 
@@ -3463,8 +3361,6 @@ var_sct * ncoTree::value_list_string(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			var_ret->sz=nbr_lst;
 			var_ret->type=(nc_type)NC_STRING;
 			
-			
-			
 			// Inital Scan
 			if(prs_arg->ntl_scn)
 			goto end_val;          
@@ -3474,12 +3370,10 @@ var_sct * ncoTree::value_list_string(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			if( exp_vtr[idx]->type != NC_STRING)
 			err_prn(fnc_nm," error processing value list string: to successfully parse value list of strings all elements must be of type NC_STRING");
 			
-			
 			// from here on deal with final scan
 			tsz=nco_typ_lng((nc_type)NC_STRING);
 			var_ret->val.vp=(void*)nco_malloc(nbr_lst*tsz);
 			
-			
 			(void)cast_void_nctype((nc_type)NC_STRING,&var_ret->val);
 			cp=var_ret->val.sngp; 
 			
@@ -3494,11 +3388,10 @@ var_sct * ncoTree::value_list_string(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			
 			(void)cast_nctype_void((nc_type)NC_STRING,&var_ret->val);
 			
-			
 			end_val: var=var_ret;
 			
 			
-#line 3502 "ncoTree.cpp"
+#line 3395 "ncoTree.cpp"
 		}
 	}
 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -3517,18 +3410,18 @@ var_sct * ncoTree::value_list_string(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 bool  ncoTree::where_assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	var_sct *var_msk
 ) {
-#line 2599 "ncoGrammer.g"
+#line 2420 "ncoGrammer.g"
 	bool bret;
-#line 3523 "ncoTree.cpp"
+#line 3416 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST where_assign_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 2599 "ncoGrammer.g"
+#line 2420 "ncoGrammer.g"
 	
 	const std::string fnc_nm("where_assign");
 	var_sct *var_rhs;
 	
 	
-#line 3532 "ncoTree.cpp"
+#line 3425 "ncoTree.cpp"
 	
 	try {      // for error handling
 		ANTLR_USE_NAMESPACE(antlr)RefAST __t345 = _t;
@@ -3549,7 +3442,7 @@ bool  ncoTree::where_assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 		_t = __t345;
 		_t = _t->getNextSibling();
 		if ( inputState->guessing==0 ) {
-#line 2605 "ncoGrammer.g"
+#line 2426 "ncoGrammer.g"
 			
 			
 			bool bfr=false;
@@ -3610,7 +3503,6 @@ bool  ncoTree::where_assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			bool b_vp=false;
 			char *mss_cp;
 			
-			
 			sz=var_lhs->sz;
 			slb_sz=nco_typ_lng(var_lhs->type);
 			
@@ -3672,7 +3564,6 @@ bool  ncoTree::where_assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			if(bfr)
 			var_msk=nco_var_free(var_msk);           
 			
-			
 			// Do attribute propagation if LHS is new
 			Nvar=prs_arg->var_vtr.find(var_nm);
 			if(!Nvar)
@@ -3683,8 +3574,7 @@ bool  ncoTree::where_assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			prs_arg->ncap_var_write(var_lhs,false);
 			bret=true;
 			
-			
-#line 3688 "ncoTree.cpp"
+#line 3578 "ncoTree.cpp"
 		}
 	}
 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -3701,18 +3591,18 @@ bool  ncoTree::where_assign(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 }
 
 var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 2744 "ncoGrammer.g"
+#line 2561 "ncoGrammer.g"
 	var_sct *var;
-#line 3707 "ncoTree.cpp"
+#line 3597 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST var_lmt_one_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 2744 "ncoGrammer.g"
+#line 2561 "ncoGrammer.g"
 	
 	const std::string fnc_nm("var_lmt_one");
 	var=NULL_CEWI; 
 	var_sct *var_nbr;
 	
-#line 3716 "ncoTree.cpp"
+#line 3606 "ncoTree.cpp"
 	
 	try {      // for error handling
 		ANTLR_USE_NAMESPACE(antlr)RefAST __t348 = _t;
@@ -3736,14 +3626,13 @@ var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 		_t = __t348;
 		_t = _t->getNextSibling();
 		if ( inputState->guessing==0 ) {
-#line 2750 "ncoGrammer.g"
+#line 2567 "ncoGrammer.g"
 			
 			
 			int idx;
 			var_sct *var_rhs;
 			std::string var_nm;
 			
-			
 			var_nm=vid->getText(); 
 			var_rhs=prs_arg->ncap_var_init(var_nm,false);            
 			
@@ -3752,8 +3641,6 @@ var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			goto end0;  // cannot use return var!!
 			}
 			
-			
-			
 			if(prs_arg->ntl_scn){
 			var=ncap_sclr_var_mk(var_nm,(nc_type)(var_rhs->type),false);
 			}else{
@@ -3777,10 +3664,11 @@ var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			srt=var_nbr->val.ip[0];
 			(void)cast_nctype_void(NC_INT,&var_nbr->val);
 			
-			
 			// fortran index convention   
 			if(prs_arg->FORTRAN_IDX_CNV)
 			srt--;
+			else if ( srt<0) 
+			srt+=var_rhs->sz-1; // deal with negative index 
 			
 			// do some bounds checking
 			if(srt >= var_rhs->sz || srt<0 )
@@ -3818,7 +3706,6 @@ var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			fl_id=prs_arg->in_id; 
 			}
 			
-			
 			// convert srt into multiple indices  
 			for(idx=0;idx<nbr_dim;idx++)
 			sz_dim*= var_rhs->cnt[idx]; 
@@ -3835,17 +3722,12 @@ var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			// copy missing value if any over             
 			nco_mss_val_cp(var_rhs,var);
 			
-			
 			} // end else !prs_arg->ntl_scn 
 			
-			
-			
-			
 			end0:       var_nbr=nco_var_free(var_nbr);
 			var_rhs=nco_var_free(var_rhs);   
 			
-			
-#line 3849 "ncoTree.cpp"
+#line 3731 "ncoTree.cpp"
 		}
 	}
 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -3864,18 +3746,18 @@ var_sct * ncoTree::var_lmt_one(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 	bool bram
 ) {
-#line 2865 "ncoGrammer.g"
+#line 2671 "ncoGrammer.g"
 	var_sct *var;
-#line 3870 "ncoTree.cpp"
+#line 3752 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST var_lmt_one_lhs_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 2865 "ncoGrammer.g"
+#line 2671 "ncoGrammer.g"
 	
 	const std::string fnc_nm("var_lmt_one_lhs");
 	var=NULL_CEWI; 
 	var_sct *var_nbr;
 	
-#line 3879 "ncoTree.cpp"
+#line 3761 "ncoTree.cpp"
 	
 	try {      // for error handling
 		ANTLR_USE_NAMESPACE(antlr)RefAST __t352 = _t;
@@ -3899,7 +3781,7 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 		_t = __t352;
 		_t = _t->getNextSibling();
 		if ( inputState->guessing==0 ) {
-#line 2871 "ncoGrammer.g"
+#line 2677 "ncoGrammer.g"
 			
 			int idx; 
 			int var_id; 
@@ -3912,11 +3794,9 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			var_sct *var_rhs=NULL_CEWI;
 			NcapVar *Nvar; 
 			
-			
 			var_nm=vid->getText(); 
 			
-			if(dbg_lvl_get() > 1)
-			dbg_prn(fnc_nm,var_nm+"(limit)");
+			if(nco_dbg_lvl_get() > nco_dbg_var) dbg_prn(fnc_nm,var_nm+"(limit)");
 			
 			Nvar=prs_arg->var_vtr.find(var_nm);
 			
@@ -3926,17 +3806,10 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			srt=var_nbr->val.ip[0];
 			(void)cast_nctype_void(NC_INT,&var_nbr->val);
 			
-			// fortran index convention   
-			if(prs_arg->FORTRAN_IDX_CNV)
-			srt--;
-			
-			
-			
 			// Overwrite bram possibly 
 			if(Nvar) 
 			bram=Nvar->flg_mem;
 			
-			
 			// Deal with RAM variables
 			if(bram){
 			
@@ -3958,6 +3831,10 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			var_lhs=prs_arg->ncap_var_init(var_nm,true);       
 			}
 			
+			// fortran index convention   
+			if(prs_arg->FORTRAN_IDX_CNV)
+			srt--;
+			else if(srt<0) srt+=var_lhs->sz-1; //deal with negative index convention 
 			
 			// do some bounds checking on single limits
 			if(srt >= var_lhs->sz || srt<0 )
@@ -3980,8 +3857,6 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			if(!Nvar)
 			(void)prs_arg->ncap_var_write(var_lhs,true); 
 			
-			
-			
 			// deal with regular vars 
 			}else{
 			
@@ -3997,6 +3872,10 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			
 			var_lhs=prs_arg->ncap_var_init(var_nm,false);
 			
+			// fortran index convention   
+			if(prs_arg->FORTRAN_IDX_CNV)
+			srt--;
+			else if(srt<0) srt+=var_lhs->sz-1; //deal with negative index convention 
 			
 			// do some bounds checking on single limits
 			if(srt >= var_lhs->sz || srt<0 )
@@ -4032,14 +3911,12 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			srt-=srt1[idx]*sz_dim;
 			}
 			
-			
 			for(idx=0;idx<nbr_dim;idx++){
 			var_lhs->srt[idx]=srt1[idx]; 
 			var_lhs->cnt[idx]=1L; 
 			var_lhs->srd[idx]=1L; 
 			} /* end loop over idx */
 			
-			
 			// write slab to O contains call to Open MP critical region
 			//  routine also frees up var_lhs
 			(void)prs_arg->ncap_var_write_slb(var_lhs);     
@@ -4049,7 +3926,7 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 			var_rhs=nco_var_free(var_rhs); 
 			var_nbr=nco_var_free(var_nbr); 
 			
-#line 4053 "ncoTree.cpp"
+#line 3930 "ncoTree.cpp"
 		}
 	}
 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -4066,18 +3943,18 @@ var_sct * ncoTree::var_lmt_one_lhs(ANTLR_USE_NAMESPACE(antlr)RefAST _t,
 }
 
 var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
-#line 3025 "ncoGrammer.g"
+#line 2824 "ncoGrammer.g"
 	var_sct *var;
-#line 4072 "ncoTree.cpp"
+#line 3949 "ncoTree.cpp"
 	ANTLR_USE_NAMESPACE(antlr)RefAST var_lmt_AST_in = (_t == ANTLR_USE_NAMESPACE(antlr)RefAST(ASTNULL)) ? ANTLR_USE_NAMESPACE(antlr)nullAST : _t;
 	ANTLR_USE_NAMESPACE(antlr)RefAST vid = ANTLR_USE_NAMESPACE(antlr)nullAST;
 	ANTLR_USE_NAMESPACE(antlr)RefAST lmt = ANTLR_USE_NAMESPACE(antlr)nullAST;
-#line 3025 "ncoGrammer.g"
+#line 2824 "ncoGrammer.g"
 	
 	const std::string fnc_nm("var_lmt");
 	var=NULL_CEWI; 
 	
-#line 4081 "ncoTree.cpp"
+#line 3958 "ncoTree.cpp"
 	
 	try {      // for error handling
 		ANTLR_USE_NAMESPACE(antlr)RefAST __t356 = _t;
@@ -4090,7 +3967,7 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 		_t = __t356;
 		_t = _t->getNextSibling();
 		if ( inputState->guessing==0 ) {
-#line 3030 "ncoGrammer.g"
+#line 2829 "ncoGrammer.g"
 			
 			bool bram;   // Check for a RAM variable
 			bool bnrm;
@@ -4110,7 +3987,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			NcapVector<dmn_sct*> dmn_vtr;
 			NcapVector<std::string> dmn_nrm_vtr;  // list of dimension names
 			
-			
 			var_nm=vid->getText(); 
 			var_rhs=prs_arg->ncap_var_init(var_nm,false);            
 			
@@ -4122,7 +3998,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			nbr_dmn=var_rhs->nbr_dim;          
 			lRef=lmt;
 			
-			
 			if(prs_arg->ntl_scn){
 			// check limit only contains numbers or dim_id.size()
 			std::vector<std::string> str_vtr;
@@ -4143,7 +4018,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			if( lmt_vtr.size() != nbr_dmn)
 			err_prn(fnc_nm,"Number of hyperslab limits for variable "+ var_nm+" doesn't match number of dimensions");
 			
-			
 			// add dim names to dimension list 
 			for(idx=0 ; idx < nbr_dmn;idx++)
 			lmt_vtr[idx]->nm=strdup(var_rhs->dim[idx]->nm);   
@@ -4152,7 +4026,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			for(idx=0 ; idx < nbr_dmn ;idx++)
 			(void)ncap_lmt_evl(var_rhs->nc_id,lmt_vtr[idx],prs_arg);
 			
-			
 			// See if var can be normalized
 			for(idx=0; idx<nbr_dmn ; idx++){
 			if(lmt_vtr[idx]->cnt==1) continue;
@@ -4165,8 +4038,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			
 			bnrm= (idx==nbr_dmn ? true:false);       
 			
-			
-			
 			// deal more with inital scan 
 			if(prs_arg->ntl_scn){
 			
@@ -4182,17 +4053,13 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			// apply LHS cast if necessary 
 			if(var->sz>1 && bcst) 
 			var=ncap_cst_do(var,var_cst,prs_arg->ntl_scn);
-			
 			}else{
 			var=ncap_var_udf("~rhs_undefined");             
 			}
-			
 			goto end1;
 			}           
 			
-			
 			/**** From here on we are dealing with a final scan  ****/
-			
 			// copy lmt_sct to dmn_sct;
 			for(idx=0 ;idx <nbr_dmn ; idx++){
 			dmn_sct *dmn_nw;
@@ -4217,7 +4084,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			else
 			bram=false;
 			
-			
 			// Ram variable -do an in memory get  
 			if(bram){
 			var=prs_arg->ncap_var_init(var_nm,true);                         
@@ -4256,19 +4122,14 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			
 			} // end if(nbram)
 			
-			
 			// copy missing value over
 			nco_mss_val_cp(var_rhs,var);
 			
-			
 			/* a hack - we set var->has_dpl_dmn=-1 so we know we are dealing with 
-			a hyperslabed var and not a regular var  -- It shouldn't cause 
+			a hyperslabbed var and not a regular var  -- It shouldn't cause 
 			any abberant behaviour!! */ 
 			var->has_dpl_dmn=-1;  
 			
-			
-			
-			
 			// if variable is scalar re-organize in a new var 
 			// loose extraneous material so it looks like a
 			// plain scalar variable
@@ -4277,7 +4138,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			var1=ncap_sclr_var_mk(var_nm,var->type,true);
 			(void)memcpy( (void*)var1->val.vp,var->val.vp,nco_typ_lng(var1->type));
 			
-			
 			// copy missing value if any from var_rhs to var1
 			nco_mss_val_cp(var_rhs,var1);
 			
@@ -4286,9 +4146,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			
 			var=var1;
 			
-			
-			
-			
 			// if hyperslab -nomalizable 
 			// nb the returned var is just like a regular var 
 			}else if(bnrm) {
@@ -4297,7 +4154,6 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			var1=ncap_cst_mk(dmn_nrm_vtr,prs_arg);
 			(void)nco_free(var1->nm);
 			
-			
 			var1->nm=strdup(var_nm.c_str());
 			var1=nco_var_cnf_typ(var_rhs->type,var1);
 			
@@ -4339,25 +4195,18 @@ var_sct * ncoTree::var_lmt(ANTLR_USE_NAMESPACE(antlr)RefAST _t) {
 			
 			}   
 			
-			
-			
-			
 			//free vectors
-			
 			for(idx=0 ; idx < nbr_dmn ; idx++)
 			(void)nco_dmn_free(dmn_vtr[idx]); 
 			;
 			
-			
 			end1: ;
 			for(idx=0 ; idx < nbr_dmn ; idx++)
 			(void)nco_lmt_free(lmt_vtr[idx]);
 			
-			
 			end2: var_rhs=nco_var_free(var_rhs); 
 			
-			
-#line 4361 "ncoTree.cpp"
+#line 4210 "ncoTree.cpp"
 		}
 	}
 	catch (ANTLR_USE_NAMESPACE(antlr)RecognitionException& ex) {
@@ -4402,6 +4251,7 @@ const char* ncoTree::tokenNames[] = {
 	"WHERE_ASSIGN",
 	"MISS2ZERO",
 	"VSORT",
+	"VRSORT",
 	"VABS",
 	"VSQR2",
 	";",
@@ -4484,7 +4334,7 @@ const char* ncoTree::tokenNames[] = {
 	"a C-style comment",
 	"a floating point number",
 	"NUMBER",
-	"variable or attribute identifier",
+	"variable or function or attribute identifier",
 	"VAR_ATT_QT",
 	"DIM_QT",
 	"dimension identifier",
diff --git a/src/nco++/ncoTree.hpp b/src/nco++/ncoTree.hpp
index ccf4bd3..ca5856d 100644
--- a/src/nco++/ncoTree.hpp
+++ b/src/nco++/ncoTree.hpp
@@ -3,23 +3,23 @@
 
 #include <antlr/config.hpp>
 #include "ncoParserTokenTypes.hpp"
-/* $ANTLR 2.7.7 (20110618): "ncoGrammer.g" -> "ncoTree.hpp"$ */
+/* $ANTLR 2.7.7 (2006-11-01): "ncoGrammer.g" -> "ncoTree.hpp"$ */
 #include <antlr/TreeParser.hpp>
 
 #line 1 "ncoGrammer.g"
 
-/* $Header: /cvsroot/nco/nco/src/nco++/ncoTree.hpp,v 1.111 2012/02/07 07:12:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/ncoTree.hpp,v 1.147 2013/10/18 18:15:41 zender Exp $ */
 
 /* Purpose: ANTLR Grammar and support files for ncap2 */
 
-/* Copyright (C) 2005--2012 Charlie Zender
+/* Copyright (C) 2005--2012 Henry Butowsky and Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
     // C Standard Headers
     #include <assert.h>
     #include <ctype.h>
-    #include <malloc.h>
+	#include <stdlib.h>
     #include <math.h>
     #if !(defined __xlC__) && !(defined SGIMP64) // C++ compilers that do not allow stdint.h
     #include <stdint.h> // Required by g++ for LLONG_MAX, ULLONG_MAX, by icpc for int64_t    
@@ -50,7 +50,7 @@
 #line 51 "ncoTree.hpp"
 class CUSTOM_API ncoTree : public ANTLR_USE_NAMESPACE(antlr)TreeParser, public ncoParserTokenTypes
 {
-#line 645 "ncoGrammer.g"
+#line 619 "ncoGrammer.g"
 
 
 private:
@@ -61,9 +61,6 @@ public:
     prs_cls *prs_arg;
     ASTFactory myFactory;
 
-
-
-
      //Structure to hold AST pointers to indices in hyperslabs -only temporary 
      typedef struct{
         ANTLR_USE_NAMESPACE(antlr)RefAST ind[3];
@@ -110,7 +107,6 @@ vector<ast_lmt_sct> &ast_lmt_vtr)
          hyp.ind[0]=ANTLR_USE_NAMESPACE(antlr)nullAST;
          hyp.ind[1]=ANTLR_USE_NAMESPACE(antlr)nullAST;
          hyp.ind[2]=ANTLR_USE_NAMESPACE(antlr)nullAST;
-
              
        if(lRef->getType()!=LMT) 
             return 0;
@@ -161,7 +157,6 @@ vector<ast_lmt_sct> &ast_lmt_vtr)
        lRef=lRef->getNextSibling();
      }
      return nbr_dmn;
-
 } 
 
 int 
@@ -172,50 +167,19 @@ NcapVector<lmt_sct*> &lmt_vtr )
 int nbr_dmn;
 int idx;
 int jdx;
-long lcl_ind[3];
-
-var_sct *var_out;
 lmt_sct *lmt_ptr;
 RefAST aRef;
 
 vector<ast_lmt_sct> ast_lmt_vtr;
 
-
 // populate ast_lmt_vtr
 nbr_dmn=lmt_init(lmt,ast_lmt_vtr);
 
   for(idx=0 ; idx <nbr_dmn ; idx++){
 
-
-     lcl_ind[0]=-2; lcl_ind[1]=-2; lcl_ind[2]=0; 
-
-    for(jdx=0 ; jdx <3 ; jdx++){
-
-     aRef=ast_lmt_vtr[idx].ind[jdx];
-
-     if(!aRef)
-        continue; //do nothing - use default lcl_ind values     
-     else if( aRef->getType() == COLON){
-       if(jdx <2) lcl_ind[jdx]=-1;
-     }else{
-         // Calculate number using out()
-         var_out=out(aRef);
-
-         // convert result to type int
-          var_out=nco_var_cnf_typ(NC_INT,var_out);    
-         (void)cast_void_nctype((nc_type)NC_INT,&var_out->val);
-
-          // only interested in the first value.
-         lcl_ind[jdx]=var_out->val.ip[0];
-
-         var_out=nco_var_free(var_out);
-        }
-     }// end jdx
-         
      // fill out lmt structure
      // use same logic as nco_lmt_prs 
      lmt_ptr=(lmt_sct*)nco_calloc((size_t)1,sizeof(lmt_sct));
-
      lmt_ptr->nm=NULL;
      //lmt_ptr->lmt_typ=-1;
      lmt_ptr->is_usr_spc_lmt=True; /* True if any part of limit is user-specified, else False */
@@ -224,36 +188,51 @@ nbr_dmn=lmt_init(lmt,ast_lmt_vtr);
      lmt_ptr->srd_sng=NULL;
      lmt_ptr->is_usr_spc_min=False;
      lmt_ptr->is_usr_spc_max=False;
+     /* rec_skp_ntl_spf is used for record dimension in multi-file operators */
+     lmt_ptr->rec_skp_ntl_spf=0L; /* Number of records skipped in initial superfluous files */
 
-     /* rec_skp_nsh_spf is used for record dimension in multi-file operators */
-     lmt_ptr->rec_skp_nsh_spf=0L; /* Number of records skipped in initial superfluous files */
-    
-    /* Fill-in structure */
-    if( lcl_ind[0] >= 0){ 
-           lmt_ptr->is_usr_spc_min=True;
-           lmt_ptr->srt=lcl_ind[0]; 
-    }    
-
-    /* Fill-in structure */
-    if( lcl_ind[1] >= 0) {
-           lmt_ptr->is_usr_spc_max=True;
-           lmt_ptr->end=lcl_ind[1];
-    }    
-
-    /* Fill-in structure */
-    if( lcl_ind[2] > 0) {
-           lmt_ptr->srd_sng=strdup("~fill_in");
-           lmt_ptr->srd=lcl_ind[2];
-    }    
-
+    for(jdx=0 ; jdx <3 ; jdx++){
+      long ldx=0L;
+      var_sct *var_out;
+
+      aRef=ast_lmt_vtr[idx].ind[jdx];
+
+      if(aRef && aRef->getType() != COLON ){
+        // Calculate number using out()
+        var_out=out(aRef);
+        // convert result to type int
+        var_out=nco_var_cnf_typ(NC_INT,var_out);    
+        (void)cast_void_nctype((nc_type)NC_INT,&var_out->val);
+         // only interested in the first value.
+        ldx=var_out->val.ip[0];
+        var_out=nco_var_free(var_out);
+        
+        // switch jdx 0-srt,1-end,2-srd
+        switch(jdx){
+          case 0: 
+             lmt_ptr->is_usr_spc_min=True;
+             lmt_ptr->srt=ldx;
+             break;
+          case 1: //end
+             lmt_ptr->is_usr_spc_max=True;
+             lmt_ptr->end=ldx;
+             break;
+          case 2: //srd
+             lmt_ptr->srd_sng=strdup("~fill_in");
+             lmt_ptr->srd=ldx;         
+             break;
+        }
+      }
+    }// end jdx
+         
     /* need to deal with situation where only start is defined -- ie picking only a single value */
-    if(lcl_ind[0] >=0 && lcl_ind[1]==-2){
-          lmt_ptr->is_usr_spc_max=True;
-          lmt_ptr->end=lcl_ind[0]; 
+    if( lmt_ptr->is_usr_spc_min==True && lmt_ptr->is_usr_spc_max==False && lmt_ptr->srd_sng==NULL){
+        lmt_ptr->is_usr_spc_max=True;
+        lmt_ptr->end=lmt_ptr->srt; 
     }    
 
     lmt_vtr.push_back(lmt_ptr);
-   } // end idx
+  } // end idx
 
    return nbr_dmn;
 } /* end lmt_mk */
@@ -277,7 +256,7 @@ public:
      ncap_omp_exe(
      std::vector< std::vector<RefAST> > &all_ast_vtr,
      ncoTree** wlk_ptr,
-     int nbr_wlk);
+     int wlk_nbr);
 
      if(tr== ANTLR_USE_NAMESPACE(antlr)nullAST)
         err_prn("run_dbl"," REPORTS given a null AST Refrence\n");
@@ -323,8 +302,6 @@ public:
     goto end;
     } //end if
 
-
-
 small: 
      idx=0;
      ntr=tr;
@@ -459,10 +436,10 @@ protected:
 private:
 	static const char* tokenNames[];
 #ifndef NO_STATIC_CONSTS
-	static const int NUM_TOKENS = 113;
+	static const int NUM_TOKENS = 114;
 #else
 	enum {
-		NUM_TOKENS = 113
+		NUM_TOKENS = 114
 	};
 #endif
 	
diff --git a/src/nco++/nco_gsl.c b/src/nco++/nco_gsl.c
new file mode 100644
index 0000000..794cc6c
--- /dev/null
+++ b/src/nco++/nco_gsl.c
@@ -0,0 +1,301 @@
+/* $Header: /cvsroot/nco/nco/src/nco++/nco_gsl.c,v 1.7 2013/01/14 04:20:52 pvicente Exp $ */
+
+/* Purpose: GSL functions that handle missing values */
+
+/* nco_gsl.[ch] re-implement GSL functions without arithmetic changes _except_
+   that the NCO version (prefixed with nco_) accepts a missing value argument which,
+   if non-NULL, indicates data to be "skipped", i.e., treated as missing. 
+
+   GSL and NCO are both distributed under the GPL3 license.
+   The GSL code is copyright by its respective authors.
+   The NCO modifications that provide missing value support are, in addition, 
+   Copyright (C) 2013--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text
+
+   Original GSL files, copyright holders, and authors of functions below are:
+   gsl/fit/linear.c: Copyright (C) 2000 Brian Gough
+   statistics/covar_source.c: Copyright (C) 1996, 1997, 1998, 1999, 2000 Jim Davies, Brian Gough */
+
+#include "nco_gsl.h" /* Missing value-aware GSL functions */
+
+/* Fit the data (x_i, y_i) to the linear relationship 
+
+   Y = c0 + c1 x
+
+   returning, 
+
+   c0, c1  --  coefficients
+   cov00, cov01, cov11  --  variance-covariance matrix of c0 and c1,
+   sumsq   --   sum of squares of residuals 
+
+   This fit can be used in the case where the errors for the data are
+   uknown, but assumed equal for all points. The resulting
+   variance-covariance matrix estimates the error in the coefficients
+   from the observed variance of the points around the best fit line.
+*/
+
+int
+nco_gsl_fit_linear
+(const double *x, 
+ const size_t xstride,
+ const double *y, 
+ const size_t ystride,
+ const size_t n,
+ double *c0, 
+ double *c1,
+ double *cov_00, 
+ double *cov_01, 
+ double *cov_11, 
+ double *sumsq,
+ const double *mss_val)
+{
+  double m_x = 0, m_y = 0, m_dx2 = 0, m_dxdy = 0;
+  size_t i;
+
+#ifdef ENABLE_NCO_GSL
+  /* NCO changes: Skip missing values, consider number of valid points */
+  size_t nbr_val; /* [nbr] Number of sample points that have data */
+  size_t idx_val; /* [nbr] Current valid data index */
+
+  if (mss_val!=NULL)
+  {
+    nbr_val=0;
+    for (i = 0; i < n; i++)
+    {
+      if (y[i * ystride]!=*mss_val)
+      {
+        nbr_val++;
+      }
+    }
+  }
+#endif /* ENABLE_NCO_GSL */
+
+  if (mss_val==NULL)
+  {
+    for (i = 0; i < n; i++)
+    {
+      m_x += (x[i * xstride] - m_x) / (i + 1.0);
+      m_y += (y[i * ystride] - m_y) / (i + 1.0);
+    }
+  }
+#ifdef ENABLE_NCO_GSL
+  else
+  {
+    idx_val=0;
+    for (i = 0; i < n; i++)
+    {
+      if (y[i * ystride]!=*mss_val)
+      {
+        m_x += (x[i * xstride] - m_x) / (idx_val + 1.0);
+        m_y += (y[i * ystride] - m_y) / (idx_val + 1.0);
+        idx_val++;
+      }
+    }
+  }
+#endif /* ENABLE_NCO_GSL */
+
+  if (mss_val==NULL)
+  {
+    for (i = 0; i < n; i++)
+    {
+      const double dx = x[i * xstride] - m_x;
+      const double dy = y[i * ystride] - m_y;
+      m_dx2 += (dx * dx - m_dx2) / (i + 1.0);
+      m_dxdy += (dx * dy - m_dxdy) / (i + 1.0);
+    }
+  }
+#ifdef ENABLE_NCO_GSL
+  else
+  {
+    idx_val=0;
+    for (i = 0; i < n; i++)
+    {
+      if (y[i * ystride]!=*mss_val)
+      {
+        const double dx = x[i * xstride] - m_x;
+        const double dy = y[i * ystride] - m_y;
+        m_dx2 += (dx * dx - m_dx2) / (idx_val + 1.0);
+        m_dxdy += (dx * dy - m_dxdy) / (idx_val + 1.0);
+        idx_val++;
+      }
+    }
+  }
+#endif /* ENABLE_NCO_GSL */
+
+  /* In terms of y = a + b x */
+
+  {
+    double s2 = 0, d2 = 0;
+    double b = m_dxdy / m_dx2;
+    double a = m_y - m_x * b;
+
+    *c0 = a;
+    *c1 = b;
+
+    /* Compute chi^2 = \sum (y_i - (a + b * x_i))^2 */
+
+    if (mss_val==NULL)
+    {
+      for (i = 0; i < n; i++)
+      {
+        const double dx = x[i * xstride] - m_x;
+        const double dy = y[i * ystride] - m_y;
+        const double d = dy - b * dx;
+        d2 += d * d;
+      }
+    }
+    else
+    {
+      for (i = 0; i < n; i++)
+      {
+        if (y[i * ystride]!=*mss_val)
+        {
+          const double dx = x[i * xstride] - m_x;
+          const double dy = y[i * ystride] - m_y;
+          const double d = dy - b * dx;
+          d2 += d * d;
+        }
+      }
+    }
+
+    if (mss_val==NULL)
+    {
+      s2 = d2 / (n - 2.0);        /* chisq per degree of freedom */
+
+      *cov_00 = s2 * (1.0 / n) * (1 + m_x * m_x / m_dx2);
+      *cov_11 = s2 * 1.0 / (n * m_dx2);
+
+      *cov_01 = s2 * (-m_x) / (n * m_dx2);
+
+      *sumsq = d2;
+    }
+#ifdef ENABLE_NCO_GSL /* Use number of sample points that have data */
+    else
+    {
+      s2 = d2 / (nbr_val - 2.0);        /* chisq per degree of freedom */
+
+      *cov_00 = s2 * (1.0 / nbr_val) * (1 + m_x * m_x / m_dx2);
+      *cov_11 = s2 * 1.0 / (nbr_val * m_dx2);
+
+      *cov_01 = s2 * (-m_x) / (nbr_val * m_dx2);
+
+      *sumsq = d2;
+    }  
+  }
+#endif /* ENABLE_NCO_GSL */
+
+  return NCO_GSL_SUCCESS;
+}
+
+
+
+static double
+FUNCTION(compute,covariance) 
+(const BASE data1[], 
+ const size_t stride1,
+ const BASE data2[], 
+ const size_t stride2,
+ const size_t n, 
+ const double mean1, 
+ const double mean2,
+ const double *mss_val) /* Missing value */
+{
+  /* takes a dataset and finds the covariance */
+
+  long double covariance = 0 ;
+
+  size_t i;
+
+  /* find the sum of the squares */
+  if (mss_val==NULL)
+  {
+    for (i = 0; i < n; i++)
+    {
+      const long double delta1 = (data1[i * stride1] - mean1);
+      const long double delta2 = (data2[i * stride2] - mean2);
+      covariance += (delta1 * delta2 - covariance) / (i + 1);
+    }
+
+  }
+  else
+  {
+    for (i = 0; i < n; i++)
+    {
+      if (data2[i * stride2]!=*mss_val)
+      {
+        const long double delta1 = (data1[i * stride1] - mean1);
+        const long double delta2 = (data2[i * stride2] - mean2);
+        covariance += (delta1 * delta2 - covariance) / (i + 1);
+      }
+    }
+  }
+
+  return covariance ;
+}
+
+double 
+FUNCTION(nco_gsl_stats,covariance_m) 
+(const BASE data1[], 
+ const size_t stride1, 
+ const BASE data2[], 
+ const size_t stride2, 
+ const size_t n, 
+ const double mean1, 
+ const double mean2,
+ const double *mss_val) /* Missing value */
+{
+  const double covariance = FUNCTION(compute,covariance) (data1, stride1, data2, stride2, n, mean1, mean2, mss_val);
+  return covariance * ((double)n / (double)(n - 1));
+}
+
+double 
+FUNCTION(nco_gsl_stats,covariance) 
+(const BASE data1[], 
+ const size_t stride1,
+ const BASE data2[], 
+ const size_t stride2,
+ const size_t n,
+ const double *mss_val) /* Missing value */
+{
+  const double mean1 = FUNCTION(nco_gsl_stats,mean) (data1, stride1, n, mss_val);
+  const double mean2 = FUNCTION(nco_gsl_stats,mean) (data2, stride2, n, mss_val);
+  return FUNCTION(nco_gsl_stats,covariance_m)(data1, stride1, data2, stride2, n, mean1, mean2, mss_val);
+}
+
+
+double
+FUNCTION (nco_gsl_stats, mean) 
+(const BASE data[], 
+ const size_t stride, 
+ const size_t size,
+ const double *mss_val) /* Missing value */
+{
+  /* Compute the arithmetic mean of a dataset using the recurrence relation 
+  mean_(n) = mean(n-1) + (data[n] - mean(n-1))/(n+1)   */
+
+  long double mean = 0;
+  size_t i;
+
+  if (mss_val==NULL)
+  {
+    for (i = 0; i < size; i++)
+    {
+      mean += (data[i * stride] - mean) / (i + 1);
+    }
+  }
+  else
+  {
+    for (i = 0; i < size; i++)
+    {
+      if (data[i * stride]!=*mss_val)
+      {
+        mean += (data[i * stride] - mean) / (i + 1);
+      }
+    }
+  }
+
+  return mean;
+}
+
+
diff --git a/src/nco++/nco_gsl.h b/src/nco++/nco_gsl.h
new file mode 100644
index 0000000..c952554
--- /dev/null
+++ b/src/nco++/nco_gsl.h
@@ -0,0 +1,77 @@
+/* $Header: /cvsroot/nco/nco/src/nco++/nco_gsl.h,v 1.6 2013/01/14 01:02:14 pvicente Exp $ */
+
+/* Purpose: GSL functions that handle missing values */
+
+/* nco_gsl.[ch] re-implement GSL functions without arithmetic changes _except_
+   that the NCO version (prefixed with nco_) accepts a missing value argument which,
+   if non-NULL, indicates data to be "skipped", i.e., treated as missing. 
+
+   GSL and NCO are both distributed under the GPL3 license.
+   The GSL code is copyright by its respective authors.
+   The NCO modifications that provide missing value support are, in addition, 
+   Copyright (C) 2013--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text
+
+   Original GSL files, copyright holders, and authors of functions below are:
+   gsl/fit/linear.c: Copyright (C) 2000, 2007 Brian Gough */
+
+/* Usage:
+   #include "nco_gsl.h" *//* Missing value-aware GSL functions */
+
+#ifndef NCO_GSL_H
+#define NCO_GSL_H
+
+#define ENABLE_NCO_GSL /* If disabled results should be the same as the gsl equivalent function; validation only */ 
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* Standard header files */
+#include <stddef.h> /* size_t */
+ 
+/* GSL macros */
+#define CONCAT2x(a,b) a ## _ ## b 
+#define CONCAT2(a,b) CONCAT2x(a,b)
+#define FUNCTION(drc,nm) CONCAT2(drc,nm)
+#define BASE double
+#define NCO_GSL_SUCCESS 0
+
+  /* Forward declarations */
+int
+nco_gsl_fit_linear
+(const double *x, 
+ const size_t xstride,
+ const double *y, 
+ const size_t ystride,
+ const size_t n,
+ double *c0, 
+ double *c1,
+ double *cov_00, 
+ double *cov_01, 
+ double *cov_11, 
+ double *sumsq,
+ const double *mss_val);
+
+double
+FUNCTION(nco_gsl_stats,mean) 
+(const BASE data[], 
+ const size_t stride, 
+ const size_t size,
+ const double *mss_val); /* fill value */
+
+double 
+FUNCTION(nco_gsl_stats,covariance) 
+(const BASE data1[], 
+ const size_t stride1,
+ const BASE data2[], 
+ const size_t stride2,
+ const size_t n,
+ const double *mss_val); /* fill value */
+
+#ifdef __cplusplus
+} /* end extern "C" */
+#endif /* __cplusplus */
+
+#endif /* NCO_GSL_H */
diff --git a/src/nco++/prs_cls.cc b/src/nco++/prs_cls.cc
index 0096430..23e8976 100644
--- a/src/nco++/prs_cls.cc
+++ b/src/nco++/prs_cls.cc
@@ -1,9 +1,9 @@
-/* $Header: /cvsroot/nco/nco/src/nco++/prs_cls.cc,v 1.25 2012/02/09 16:03:37 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco++/prs_cls.cc,v 1.30 2013/10/22 03:03:55 zender Exp $ */
 
 /* Purpose: netCDF arithmetic processor */
 /* prs_cls -- symbol table - class methods */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -27,9 +27,7 @@
 /* Begin prs_cls methods */
 
 var_sct * 
-prs_cls::ncap_var_init(
-		       const std::string &snm, 
-		       bool bfll){
+prs_cls::ncap_var_init(const std::string &snm,bool bfll){
   
   /* Purpose: Initialize variable structure, retrieve variable values from disk
      Parser calls ncap_var_init() when it encounters a new RHS variable */
@@ -66,7 +64,7 @@ prs_cls::ncap_var_init(
     bfll=false;
   }
   
-  if(dbg_lvl_get() > 2 && !ntl_scn) {
+  if(nco_dbg_lvl_get() >= nco_dbg_fl && !ntl_scn) {
     std::ostringstream os;
     os<< "Parser VAR action called ncap_var_init() to retrieve " <<var_nm <<" from disk";
     dbg_prn(fnc_nm,os.str());  
@@ -84,35 +82,34 @@ prs_cls::ncap_var_init(
   if(!ntl_scn){
     Nvar=var_vtr.find(var_nm);
     
-    // var is defined in O and populated
-    if(Nvar && Nvar->flg_stt==2 && !Nvar->flg_mem){
+    // Variable is defined in O and populated
+    if(Nvar && Nvar->flg_stt == 2 && !Nvar->flg_mem){
       var=Nvar->cpyVarNoData();
       
 #ifdef _OPENMP
-      fl_id= ( omp_in_parallel() ?out_id_readonly : out_id );
+      fl_id=(omp_in_parallel() ? out_id_readonly : out_id);
 #else    
       fl_id=out_id;  
 #endif
       var->tally=(long *)NULL;
+
       /* Retrieve variable values from disk into memory */
-      if(bfll)
-        (void)nco_var_get(fl_id,var); 
+      if(bfll) (void)nco_var_get(fl_id,var); 
       
       return var;
-    }
+    } /* !ntl_scn */
     
-    // var is defined in O and populated && a RAM variable
+    // Variable is defined in O and populated and is a RAM variable
     if(Nvar && Nvar->flg_stt==2 && Nvar->flg_mem){
       var=Nvar->cpyVar();
       return var;
     }
     
-    // var is defined in O but NOT populated
+    // Variable is defined in O but NOT populated
     // Set flag so read is tried only from input
     // Maybe not the best solution ?
     // what else ??? 
-    if(Nvar && Nvar->flg_stt==1 )
-      bskp_npt=true;
+    if(Nvar && Nvar->flg_stt == 1) bskp_npt=true;
     
   } // end !ntl_scn
   
@@ -121,7 +118,7 @@ prs_cls::ncap_var_init(
   if(rcd == NC_NOERR && !bskp_npt){
     
 #ifdef _OPENMP
-    fl_id= ( omp_in_parallel() ?out_id_readonly : out_id );
+    fl_id= (omp_in_parallel() ? out_id_readonly : out_id);
 #else    
     fl_id=out_id;  
 #endif
@@ -129,8 +126,7 @@ prs_cls::ncap_var_init(
     var=nco_var_fll(fl_id,var_id,var_nm,&dmn_out_vtr[0],dmn_out_vtr.size());
     var->tally=(long *)NULL;
     /* Retrieve variable values from disk into memory */
-    if(bfll)
-      (void)nco_var_get(fl_id,var); 
+    if(bfll) (void)nco_var_get(fl_id,var); 
     
     return var;
   }
@@ -146,14 +142,12 @@ prs_cls::ncap_var_init(
     return NULL_CEWI;
   } /* end if */
   
-  /* Find dimensions used in var
+  /* Find dimensions used in variable
      Learn which are not already in output list dmn_out and output file
      Add these to output list and output file */
-  
   fl_id=in_id;
-  
   (void)nco_inq_varndims(fl_id,var_id,&dmn_var_nbr);
-  if(dmn_var_nbr>0){
+  if(dmn_var_nbr > 0){
     int *dim_id=NULL_CEWI;
     dmn_sct *dmn_fd; 
     dmn_sct *dmn_nw;
@@ -175,22 +169,17 @@ prs_cls::ncap_var_init(
         os<<"Unable to find dimension " <<dmn_nm << " in " << fl_in <<" or " << fl_out;
         err_prn(fnc_nm,os.str());
       }
-      
       dmn_tp_out.push_back(dmn_fd);
-      
     } // end idx
     
     // no longer needed
     (void)nco_free(dim_id);
     
     // define new dims in output if necessary  
-    if(dmn_tp_out.size() >0){
-      
+    if(dmn_tp_out.size() > 0){
 #ifdef _OPENMP
-      if( omp_in_parallel())
-	err_prn(fnc_nm,"Attempt to go into netcdf define mode while in OPENMP parallel mode");
+      if(omp_in_parallel()) err_prn(fnc_nm,"Attempt to go into netCDF define mode while in OpenMP parallel mode");
 #endif
-      
       (void)nco_redef(out_id);
       for(idx=0; idx< (int)dmn_tp_out.size();idx++){
         dmn_nw=nco_dmn_dpl(dmn_tp_out[idx]);
@@ -198,18 +187,15 @@ prs_cls::ncap_var_init(
 	(void)nco_dmn_dfn(fl_out,out_id,&dmn_nw,1);          
 	(void)dmn_out_vtr.push_back(dmn_nw);
 	
-	if(dbg_lvl_get() > 2) {
+	if(nco_dbg_lvl_get() >= nco_dbg_fl){
           std::ostringstream os;
-          os << "Found new dimension " << dmn_nw->nm << " in input variable " << var_nm <<" in file " <<fl_in;
+          os << "Found new dimension " << dmn_nw->nm << " in input variable " << var_nm <<" in file " << fl_in;
           os << ". Defining dimension " << dmn_nw->nm << " in output file " << fl_out;
           dbg_prn(fnc_nm,os.str());
 	}
-      }// end idx
-      
+      } // end idx
       (void)nco_enddef(out_id);
-      
     } // end if 
-    
   } // end if
   
   var=nco_var_fll(fl_id,var_id,var_nm,&dmn_out_vtr[0],dmn_out_vtr.size());
@@ -247,13 +233,11 @@ prs_cls::ncap_var_init_chk(
   
   // Check output file for ID 
   rcd=nco_inq_varid_flg(out_id,var_nm.c_str(),&var_id);
-  if(rcd == NC_NOERR)
-    return 1;
+  if(rcd == NC_NOERR) return 1;
   
   // Check input file for ID 
   rcd=nco_inq_varid_flg(in_id,var_nm.c_str(),&var_id);
-  if(rcd == NC_NOERR)
-    return 1;
+  if(rcd == NC_NOERR) return 1;
   
   // Variable not in Input or Output or int_vtr
   return 0;
@@ -335,8 +319,7 @@ prs_cls::ncap_var_write_omp(
 #ifdef NCO_RUSAGE_DBG
   long maxrss; /* [B] Maximum resident set size */
 #endif /* !NCO_RUSAGE_DBG */
-  
-  
+    
   // INITIAL SCAN
   if(ntl_scn){
     Nvar=var_vtr.find(var->nm);
@@ -465,20 +448,14 @@ prs_cls::ncap_var_write_omp(
     var_inf=nco_var_free(var_inf);
     
     var_out_id=var->id;
-    
   } 
-  
-  
   rcd=nco_inq_varid_flg(out_id,var->nm,&var_out_id);
   
-  
   // Only go into define mode if necessary
   if(!bdef || var->pck_ram ){  
     
 #ifdef _OPENMP
-    if( omp_in_parallel())
-      err_prn(fnc_nm, "Attempt to go into netcdf define mode while in OPENMP parallel mode");
-    
+    if(omp_in_parallel()) err_prn(fnc_nm, "Attempt to go into netCDF define mode while in OpenMP parallel mode");
 #endif
     (void)nco_redef(out_id);
     
@@ -525,12 +502,12 @@ prs_cls::ncap_var_write_omp(
 #ifdef NCO_RUSAGE_DBG
   /* Compile: cd ~/nco/bld;make 'USR_TKN=-DNCO_RUSAGE_DBG';cd - */
   /* Print rusage memory usage statistics */
-  if(dbg_lvl_get() >= 0) {
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) {
     std::ostringstream os;
     os<<" Writing variable "<<var_nm; <<" to disk.";
     dbg_prn(fnc_nm,os.str());
   }
-  maxrss=nco_mmr_rusage_prn((int)0);
+  maxrss=nco_mmr_usg_prn((int)0);
 #endif /* !NCO_RUSAGE_DBG */
   
   // save variable to output vector if new
@@ -567,7 +544,7 @@ void prs_cls::ncap_def_ntl_scn(void)
   
   const std::string fnc_nm("prs_cls::ncap_def_ntl_scn"); 
   
-  if(dbg_lvl_get() > 0) dbg_prn(fnc_nm, "Entered function");
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) dbg_prn(fnc_nm, "Entered function");
   
   sz=int_vtr.size();
   
@@ -577,7 +554,7 @@ void prs_cls::ncap_def_ntl_scn(void)
     var1=Nvar->var;
     if(!Nvar->flg_udf && Nvar->xpr_typ==ncap_var){
       
-      if(dbg_lvl_get() > 0) dbg_prn(fnc_nm, Nvar->getFll()+ (!Nvar->flg_mem ? " defined in output": " RAM variable"));
+      if(nco_dbg_lvl_get() >= nco_dbg_scl) dbg_prn(fnc_nm, Nvar->getFll()+ (!Nvar->flg_mem ? " defined in output": " RAM variable"));
       
       // Define variable
       if(!Nvar->flg_mem){
diff --git a/src/nco++/prs_cls.hh b/src/nco++/prs_cls.hh
index daebdb0..c72fbe7 100644
--- a/src/nco++/prs_cls.hh
+++ b/src/nco++/prs_cls.hh
@@ -1,7 +1,7 @@
 /* Purpose: netCDF arithmetic processor -  */
 /* prs_cls -- symbol table - data members & class methods */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco++/sdo_utl.cc b/src/nco++/sdo_utl.cc
index c380718..7b9084b 100644
--- a/src/nco++/sdo_utl.cc
+++ b/src/nco++/sdo_utl.cc
@@ -1,10 +1,10 @@
-// $Header: /cvsroot/nco/nco/src/nco++/sdo_utl.cc,v 1.3 2008/03/02 14:25:33 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco++/sdo_utl.cc,v 1.5 2013/10/22 03:03:55 zender Exp $ 
 
 // Purpose: Implementation (declaration) of SDO stand-alone utilities 
 
-/* Copyright (C) 1997--2005 Charlie Zender
-   This software is distributed under the terms of the GNU General Public License Version 3
-   See http://www.gnu.ai.mit.edu/copyleft/gpl.html for full license text */
+/* Copyright (C) 1997--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "sdo_utl.hh" // SDO stand-alone utilities: dbg/err/wrn_prn()
 
@@ -13,17 +13,17 @@
 // Declare global functions with C++ linkages
 
 void 
-dbg_prn(std::string prg_nm,std::string fnc_nm,std::string msg) // [fnc] Print uniform debugging message
+dbg_prn(std::string nco_prg_nm,std::string fnc_nm,std::string msg) // [fnc] Print uniform debugging message
 {
   // Purpose: Print a uniform debugging message
-  std::cerr << prg_nm << ": DEBUG " << fnc_nm << "(): "+msg << std::endl;
+  std::cerr << nco_prg_nm << ": DEBUG " << fnc_nm << "(): "+msg << std::endl;
 } // end dbg_prn()
 
 void 
 dbg_prn(std::string fnc_nm,std::string msg) // [fnc] Print uniform debugging message
 {
   // Purpose: Print a uniform debugging message
-  std::cerr << prg_nm_get() << ": DEBUG " << fnc_nm << "(): "+msg << std::endl;
+  std::cerr << nco_prg_nm_get() << ": DEBUG " << fnc_nm << "(): "+msg << std::endl;
 } // end dbg_prn()
 
 void 
@@ -34,10 +34,10 @@ dbg_prn(std::string msg) // [fnc] Print uniform debugging message
 } // end dbg_prn()
 
 void 
-err_prn(std::string prg_nm,std::string fnc_nm,std::string msg) // [fnc] Print uniform error message and exit 
+err_prn(std::string nco_prg_nm,std::string fnc_nm,std::string msg) // [fnc] Print uniform error message and exit 
 {
   // Purpose: Print a uniform error message and exit 
-  std::cerr << prg_nm << ": ERROR " << fnc_nm << "(): "+msg << std::endl;
+  std::cerr << nco_prg_nm << ": ERROR " << fnc_nm << "(): "+msg << std::endl;
 #ifdef ABORT_ON_ERROR
   // abort() produces a core dump and traceback information useful to debuggers
   std::abort(); // [fnc] Exit with core dump
@@ -51,7 +51,7 @@ void
 err_prn(std::string fnc_nm,std::string msg) // [fnc] Print uniform error message and exit 
 {
   // Purpose: Print a uniform error message and exit 
-  std::cerr << prg_nm_get() << ": ERROR " << fnc_nm << "(): "+msg << std::endl;
+  std::cerr << nco_prg_nm_get() << ": ERROR " << fnc_nm << "(): "+msg << std::endl;
 #ifdef ABORT_ON_ERROR
   std::abort(); // [fnc] Produce core dump
 #else
@@ -72,15 +72,15 @@ err_prn(std::string msg) // [fnc] Print uniform error message and exit
 } // end err_prn()
 
 void 
-wrn_prn(std::string prg_nm,std::string fnc_nm,std::string msg) // [fnc] Print uniform warning message and exit
+wrn_prn(std::string nco_prg_nm,std::string fnc_nm,std::string msg) // [fnc] Print uniform warning message and exit
 {
   // Purpose: Print a uniform warning message
-  std::cerr << prg_nm << ": WARNING " << fnc_nm << "(): "+msg << std::endl;
+  std::cerr << nco_prg_nm << ": WARNING " << fnc_nm << "(): "+msg << std::endl;
 } // end wrn_prn()
 
 void 
 wrn_prn(std::string fnc_nm,std::string msg) // [fnc] Print uniform warning message and exit
 {
   // Purpose: Print a uniform warning message
-  std::cerr << prg_nm_get() << ": WARNING " << fnc_nm << "(): "+msg << std::endl;
+  std::cerr << nco_prg_nm_get() << ": WARNING " << fnc_nm << "(): "+msg << std::endl;
 } // end wrn_prn()
diff --git a/src/nco++/sdo_utl.hh b/src/nco++/sdo_utl.hh
index c241ed7..77cd098 100644
--- a/src/nco++/sdo_utl.hh
+++ b/src/nco++/sdo_utl.hh
@@ -1,10 +1,10 @@
-// $Header: /cvsroot/nco/nco/src/nco++/sdo_utl.hh,v 1.3 2007/08/23 15:36:53 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco++/sdo_utl.hh,v 1.5 2013/10/22 03:03:55 zender Exp $ 
 
 // Purpose: Description (definition) of SDO stand-alone utilities
 
-/* Copyright (C) 1997--2005 Charlie Zender
-   This software is distributed under the terms of the General Public License
-   See http://www.gnu.ai.mit.edu/copyleft/gpl.html for full license text */
+/* Copyright (C) 1997--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 // Source: Routines are subset of CSZ's ~/c++/utl.[cc/hh]
 
@@ -37,8 +37,8 @@
 
 // Prototype functions that have C linkages
 extern "C" {
-  char *prg_nm_get(void);
-  unsigned short dbg_lvl_get(void);
+  char *nco_prg_nm_get(void);
+  unsigned short nco_dbg_lvl_get(void);
 } // end extern C
 
 // Define inline'd functions in header so source is visible to calling files
@@ -46,12 +46,12 @@ extern "C" {
 // Prototype functions with C++ linkages
 void dbg_prn(std::string msg);
 void dbg_prn(std::string fnc_nm,std::string msg);
-void dbg_prn(std::string prg_nm,std::string fnc_nm,std::string msg);
+void dbg_prn(std::string nco_prg_nm,std::string fnc_nm,std::string msg);
 void err_prn(std::string msg);
 void err_prn(std::string fnc_nm,std::string msg);
-void err_prn(std::string prg_nm,std::string fnc_nm,std::string msg);
+void err_prn(std::string nco_prg_nm,std::string fnc_nm,std::string msg);
 void wrn_prn(std::string fnc_nm,std::string msg);
-void wrn_prn(std::string prg_nm,std::string fnc_nm,std::string msg);
+void wrn_prn(std::string nco_prg_nm,std::string fnc_nm,std::string msg);
 
 // Templates
 template<class val_T>std::string nbr2sng(const val_T nbr); // O [sng] Number stored as string
diff --git a/src/nco/Makefile.am b/src/nco/Makefile.am
index 2e5a1ca..6985b50 100644
--- a/src/nco/Makefile.am
+++ b/src/nco/Makefile.am
@@ -1,4 +1,4 @@
-# $Header: /cvsroot/nco/nco/src/nco/Makefile.am,v 1.48 2011/07/25 03:38:41 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco/Makefile.am,v 1.54 2013/12/02 01:05:56 zender Exp $ -*-makefile-*-
 
 if BUILD_YACC_SOURCE
 NCAP=ncap
@@ -97,8 +97,10 @@ nco_dbg.h \
 nco_dmn_utl.h \
 nco_fl_utl.h \
 nco_grp_utl.h \
+nco_grp_trv.h \
 nco_lmt.h \
 nco_lst_utl.h \
+nco_md5.h \
 nco_mmr.h \
 nco_mpi.h \
 nco_msa.h \
@@ -113,7 +115,9 @@ nco_rth_utl.h \
 nco_scl_utl.h \
 nco_scm.h \
 nco_sng_utl.h \
+nco_srm.h \
 nco_typ.h \
+nco_uthash.h \
 nco_var_avg.h \
 nco_var_lst.h \
 nco_var_rth.h \
@@ -150,8 +154,10 @@ nco_dbg.c \
 nco_dmn_utl.c \
 nco_fl_utl.c \
 nco_grp_utl.c \
+nco_grp_trv.c \
 nco_lmt.c \
 nco_lst_utl.c \
+nco_md5.c \
 nco_mmr.c \
 nco_msa.c \
 nco_mss_val.c \
@@ -165,6 +171,7 @@ nco_rth_utl.c \
 nco_scl_utl.c \
 nco_scm.c \
 nco_sng_utl.c \
+nco_srm.c \
 nco_var_avg.c \
 nco_var_lst.c \
 nco_var_rth.c \
@@ -180,15 +187,17 @@ DISTCLEANFILES = ncap_lex.c ncap_yacc.c ncap_yacc.h
 install-exec-hook:
 	cd $(DESTDIR)$(bindir) && ln -s -f ncbo ncdiff || (rm -f ncdiff && ln -s -f ncbo ncdiff)
 	cd $(DESTDIR)$(bindir) && ln -s -f ncra ncea || (rm -f ncea && ln -s -f ncra ncea)
+	cd $(DESTDIR)$(bindir) && ln -s -f ncra nces || (rm -f nces && ln -s -f ncra nces)
 	cd $(DESTDIR)$(bindir) && ln -s -f ncra ncrcat || (rm -f ncrcat && ln -s -f ncra ncrcat)
 if ENABLE_MPI
 	cd $(DESTDIR)$(bindir) && ln -s -f mpncbo mpncdiff || (rm -f mpncdiff && ln -s -f mpncbo mpncdiff)
 	cd $(DESTDIR)$(bindir) && ln -s -f mpncra mpncea || (rm -f mpncea && ln -s -f mpncra mpncea)
+	cd $(DESTDIR)$(bindir) && ln -s -f mpncra mpnces || (rm -f mpnces && ln -s -f mpncra mpnces)
 	cd $(DESTDIR)$(bindir) && ln -s -f mpncra mpncrcat || (rm -f mpncrcat && ln -s -f mpncra mpncrcat)
 endif
 
 uninstall-hook:
-	cd $(DESTDIR)$(bindir) && rm -f ncdiff ncea ncrcat mpncdiff mpncea mpncrcat
+	cd $(DESTDIR)$(bindir) && rm -f ncdiff ncea nces ncrcat mpncdiff mpncea mpnces mpncrcat
 
-CLEANFILES=ncdiff ncea ncrcat mpncdiff mpncea mpncrcat
+CLEANFILES=ncdiff ncea nces ncrcat mpncdiff mpncea mpnces mpncrcat
 
diff --git a/src/nco/Makefile.in b/src/nco/Makefile.in
index 921707d..6170563 100644
--- a/src/nco/Makefile.in
+++ b/src/nco/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,10 +14,55 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/src/nco/Makefile.in,v 1.114 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco/Makefile.in,v 1.148 2013/12/02 01:12:47 zender Exp $ -*-makefile-*-
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,11 +97,15 @@ target_triplet = @target@
 @ENABLE_MPI_TRUE@	$(am__EXEEXT_2)
 TESTS =
 subdir = src/nco
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ncap_lex.c \
-	ncap_yacc.c ncap_yacc.h
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs ncap_lex.c ncap_yacc.h \
+	ncap_yacc.c $(top_srcdir)/autobld/depcomp \
+	$(top_srcdir)/autobld/ylwrap $(top_srcdir)/autobld/test-driver
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
@@ -85,6 +133,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libnco_la_LIBADD =
@@ -92,19 +146,20 @@ am__libnco_la_SOURCES_DIST = libnco.h nco_getopt.h ncap.h ncap_yacc.h \
 	nco.h nco_att_utl.h nco_aux.h nco_bnr.h nco_cln_utl.h \
 	nco_cnf_dmn.h nco_cnf_typ.h nco_cnk.h nco_cnv_arm.h \
 	nco_cnv_csm.h nco_ctl.h nco_dbg.h nco_dmn_utl.h nco_fl_utl.h \
-	nco_grp_utl.h nco_lmt.h nco_lst_utl.h nco_mmr.h nco_mpi.h \
-	nco_msa.h nco_mss_val.h nco_netcdf.h nco_omp.h nco_pck.h \
-	nco_prn.h nco_rec_var.h nco_rth_flt.h nco_rth_utl.h \
-	nco_scl_utl.h nco_scm.h nco_sng_utl.h nco_typ.h nco_var_avg.h \
-	nco_var_lst.h nco_var_rth.h nco_var_scv.h nco_var_utl.h \
-	nco_getopt.c nco_att_utl.c nco_aux.c nco_bnr.c nco_cln_utl.c \
-	nco_cnf_dmn.c nco_cnf_typ.c nco_cnk.c nco_cnv_arm.c \
-	nco_cnv_csm.c nco_ctl.c nco_dbg.c nco_dmn_utl.c nco_fl_utl.c \
-	nco_grp_utl.c nco_lmt.c nco_lst_utl.c nco_mmr.c nco_msa.c \
-	nco_mss_val.c nco_netcdf.c nco_omp.c nco_pck.c nco_prn.c \
-	nco_rec_var.c nco_rth_flt.c nco_rth_utl.c nco_scl_utl.c \
-	nco_scm.c nco_sng_utl.c nco_var_avg.c nco_var_lst.c \
-	nco_var_rth.c nco_var_scv.c nco_var_utl.c
+	nco_grp_utl.h nco_grp_trv.h nco_lmt.h nco_lst_utl.h nco_md5.h \
+	nco_mmr.h nco_mpi.h nco_msa.h nco_mss_val.h nco_netcdf.h \
+	nco_omp.h nco_pck.h nco_prn.h nco_rec_var.h nco_rth_flt.h \
+	nco_rth_utl.h nco_scl_utl.h nco_scm.h nco_sng_utl.h nco_srm.h \
+	nco_typ.h nco_uthash.h nco_var_avg.h nco_var_lst.h \
+	nco_var_rth.h nco_var_scv.h nco_var_utl.h nco_getopt.c \
+	nco_att_utl.c nco_aux.c nco_bnr.c nco_cln_utl.c nco_cnf_dmn.c \
+	nco_cnf_typ.c nco_cnk.c nco_cnv_arm.c nco_cnv_csm.c nco_ctl.c \
+	nco_dbg.c nco_dmn_utl.c nco_fl_utl.c nco_grp_utl.c \
+	nco_grp_trv.c nco_lmt.c nco_lst_utl.c nco_md5.c nco_mmr.c \
+	nco_msa.c nco_mss_val.c nco_netcdf.c nco_omp.c nco_pck.c \
+	nco_prn.c nco_rec_var.c nco_rth_flt.c nco_rth_utl.c \
+	nco_scl_utl.c nco_scm.c nco_sng_utl.c nco_srm.c nco_var_avg.c \
+	nco_var_lst.c nco_var_rth.c nco_var_scv.c nco_var_utl.c
 am__objects_1 =
 am__objects_2 = $(am__objects_1)
 @NCO_NEED_GETOPT_LONG_TRUE at am__objects_3 = nco_getopt.lo
@@ -112,14 +167,18 @@ am_libnco_la_OBJECTS = $(am__objects_2) $(am__objects_3) \
 	nco_att_utl.lo nco_aux.lo nco_bnr.lo nco_cln_utl.lo \
 	nco_cnf_dmn.lo nco_cnf_typ.lo nco_cnk.lo nco_cnv_arm.lo \
 	nco_cnv_csm.lo nco_ctl.lo nco_dbg.lo nco_dmn_utl.lo \
-	nco_fl_utl.lo nco_grp_utl.lo nco_lmt.lo nco_lst_utl.lo \
-	nco_mmr.lo nco_msa.lo nco_mss_val.lo nco_netcdf.lo nco_omp.lo \
-	nco_pck.lo nco_prn.lo nco_rec_var.lo nco_rth_flt.lo \
-	nco_rth_utl.lo nco_scl_utl.lo nco_scm.lo nco_sng_utl.lo \
-	nco_var_avg.lo nco_var_lst.lo nco_var_rth.lo nco_var_scv.lo \
-	nco_var_utl.lo
+	nco_fl_utl.lo nco_grp_utl.lo nco_grp_trv.lo nco_lmt.lo \
+	nco_lst_utl.lo nco_md5.lo nco_mmr.lo nco_msa.lo nco_mss_val.lo \
+	nco_netcdf.lo nco_omp.lo nco_pck.lo nco_prn.lo nco_rec_var.lo \
+	nco_rth_flt.lo nco_rth_utl.lo nco_scl_utl.lo nco_scm.lo \
+	nco_sng_utl.lo nco_srm.lo nco_var_avg.lo nco_var_lst.lo \
+	nco_var_rth.lo nco_var_scv.lo nco_var_utl.lo
 libnco_la_OBJECTS = $(am_libnco_la_OBJECTS)
-libnco_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libnco_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(libnco_la_LDFLAGS) $(LDFLAGS) -o $@
 @BUILD_YACC_SOURCE_TRUE at am__EXEEXT_1 = ncap$(EXEEXT)
@@ -176,28 +235,59 @@ am_ncwa_OBJECTS = ncwa.$(OBJEXT) ncap_utl.$(OBJEXT) ncap_lex.$(OBJEXT) \
 	ncap_yacc.$(OBJEXT)
 ncwa_OBJECTS = $(am_ncwa_OBJECTS)
 ncwa_DEPENDENCIES = libnco.la
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/autobld/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 @MAINTAINER_MODE_FALSE at am__skiplex = test -f $@ ||
-LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
-LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS)
+LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
+LTLEXCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(LEX) $(AM_LFLAGS) $(LFLAGS)
+AM_V_LEX = $(am__v_LEX_ at AM_V@)
+am__v_LEX_ = $(am__v_LEX_ at AM_DEFAULT_V@)
+am__v_LEX_0 = @echo "  LEX     " $@;
+am__v_LEX_1 = 
 YLWRAP = $(top_srcdir)/autobld/ylwrap
 @MAINTAINER_MODE_FALSE at am__skipyacc = test -f $@ ||
-YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
-LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
+am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
+		   -e s/c++$$/h++/ -e s/c$$/h/
+YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
+LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS)
+AM_V_YACC = $(am__v_YACC_ at AM_V@)
+am__v_YACC_ = $(am__v_YACC_ at AM_DEFAULT_V@)
+am__v_YACC_0 = @echo "  YACC    " $@;
+am__v_YACC_1 = 
 SOURCES = $(libnco_la_SOURCES) $(mpncbo_SOURCES) $(mpncecat_SOURCES) \
 	$(mpncflint_SOURCES) $(mpncpdq_SOURCES) $(mpncra_SOURCES) \
 	$(mpncwa_SOURCES) $(ncap_SOURCES) $(ncatted_SOURCES) \
@@ -210,13 +300,209 @@ DIST_SOURCES = $(am__libnco_la_SOURCES_DIST) $(mpncbo_SOURCES) \
 	$(ncatted_SOURCES) $(ncbo_SOURCES) $(ncecat_SOURCES) \
 	$(ncflint_SOURCES) $(ncks_SOURCES) $(ncpdq_SOURCES) \
 	$(ncra_SOURCES) $(ncrename_SOURCES) $(ncwa_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/autobld/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -236,6 +522,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -277,6 +564,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -323,6 +611,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -418,8 +707,10 @@ nco_dbg.h \
 nco_dmn_utl.h \
 nco_fl_utl.h \
 nco_grp_utl.h \
+nco_grp_trv.h \
 nco_lmt.h \
 nco_lst_utl.h \
+nco_md5.h \
 nco_mmr.h \
 nco_mpi.h \
 nco_msa.h \
@@ -434,7 +725,9 @@ nco_rth_utl.h \
 nco_scl_utl.h \
 nco_scm.h \
 nco_sng_utl.h \
+nco_srm.h \
 nco_typ.h \
+nco_uthash.h \
 nco_var_avg.h \
 nco_var_lst.h \
 nco_var_rth.h \
@@ -470,8 +763,10 @@ nco_dbg.c \
 nco_dmn_utl.c \
 nco_fl_utl.c \
 nco_grp_utl.c \
+nco_grp_trv.c \
 nco_lmt.c \
 nco_lst_utl.c \
+nco_md5.c \
 nco_mmr.c \
 nco_msa.c \
 nco_mss_val.c \
@@ -485,6 +780,7 @@ nco_rth_utl.c \
 nco_scl_utl.c \
 nco_scm.c \
 nco_sng_utl.c \
+nco_srm.c \
 nco_var_avg.c \
 nco_var_lst.c \
 nco_var_rth.c \
@@ -493,11 +789,11 @@ nco_var_utl.c
 
 EXTRA_DIST = ${NCO_GETOPT_C}
 DISTCLEANFILES = ncap_lex.c ncap_yacc.c ncap_yacc.h
-CLEANFILES = ncdiff ncea ncrcat mpncdiff mpncea mpncrcat
+CLEANFILES = ncdiff ncea nces ncrcat mpncdiff mpncea mpnces mpncrcat
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .l .lo .o .obj .y
+.SUFFIXES: .c .l .lo .log .o .obj .test .test$(EXEEXT) .trs .y
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -528,9 +824,9 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -538,6 +834,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -553,24 +851,32 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libnco.la: $(libnco_la_OBJECTS) $(libnco_la_DEPENDENCIES) 
-	$(libnco_la_LINK) -rpath $(libdir) $(libnco_la_OBJECTS) $(libnco_la_LIBADD) $(LIBS)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libnco.la: $(libnco_la_OBJECTS) $(libnco_la_DEPENDENCIES) $(EXTRA_libnco_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libnco_la_LINK) -rpath $(libdir) $(libnco_la_OBJECTS) $(libnco_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
-	while read p p1; do if test -f $$p || test -f $$p1; \
-	  then echo "$$p"; echo "$$p"; else :; fi; \
+	while read p p1; do if test -f $$p \
+	 || test -f $$p1 \
+	  ; then echo "$$p"; echo "$$p"; else :; fi; \
 	done | \
-	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	sed -e 'p;s,.*/,,;n;h' \
+	    -e 's|.*|.|' \
 	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
 	sed 'N;N;N;s,\n, ,g' | \
 	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -591,7 +897,8 @@ uninstall-binPROGRAMS:
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
 	files=`for p in $$list; do echo "$$p"; done | \
 	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-	      -e 's/$$/$(EXEEXT)/' `; \
+	      -e 's/$$/$(EXEEXT)/' \
+	`; \
 	test -n "$$list" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -604,59 +911,73 @@ clean-binPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-mpncbo$(EXEEXT): $(mpncbo_OBJECTS) $(mpncbo_DEPENDENCIES) 
+
+mpncbo$(EXEEXT): $(mpncbo_OBJECTS) $(mpncbo_DEPENDENCIES) $(EXTRA_mpncbo_DEPENDENCIES) 
 	@rm -f mpncbo$(EXEEXT)
-	$(LINK) $(mpncbo_OBJECTS) $(mpncbo_LDADD) $(LIBS)
-mpncecat$(EXEEXT): $(mpncecat_OBJECTS) $(mpncecat_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(mpncbo_OBJECTS) $(mpncbo_LDADD) $(LIBS)
+
+mpncecat$(EXEEXT): $(mpncecat_OBJECTS) $(mpncecat_DEPENDENCIES) $(EXTRA_mpncecat_DEPENDENCIES) 
 	@rm -f mpncecat$(EXEEXT)
-	$(LINK) $(mpncecat_OBJECTS) $(mpncecat_LDADD) $(LIBS)
-mpncflint$(EXEEXT): $(mpncflint_OBJECTS) $(mpncflint_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(mpncecat_OBJECTS) $(mpncecat_LDADD) $(LIBS)
+
+mpncflint$(EXEEXT): $(mpncflint_OBJECTS) $(mpncflint_DEPENDENCIES) $(EXTRA_mpncflint_DEPENDENCIES) 
 	@rm -f mpncflint$(EXEEXT)
-	$(LINK) $(mpncflint_OBJECTS) $(mpncflint_LDADD) $(LIBS)
-mpncpdq$(EXEEXT): $(mpncpdq_OBJECTS) $(mpncpdq_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(mpncflint_OBJECTS) $(mpncflint_LDADD) $(LIBS)
+
+mpncpdq$(EXEEXT): $(mpncpdq_OBJECTS) $(mpncpdq_DEPENDENCIES) $(EXTRA_mpncpdq_DEPENDENCIES) 
 	@rm -f mpncpdq$(EXEEXT)
-	$(LINK) $(mpncpdq_OBJECTS) $(mpncpdq_LDADD) $(LIBS)
-mpncra$(EXEEXT): $(mpncra_OBJECTS) $(mpncra_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(mpncpdq_OBJECTS) $(mpncpdq_LDADD) $(LIBS)
+
+mpncra$(EXEEXT): $(mpncra_OBJECTS) $(mpncra_DEPENDENCIES) $(EXTRA_mpncra_DEPENDENCIES) 
 	@rm -f mpncra$(EXEEXT)
-	$(LINK) $(mpncra_OBJECTS) $(mpncra_LDADD) $(LIBS)
-mpncwa$(EXEEXT): $(mpncwa_OBJECTS) $(mpncwa_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(mpncra_OBJECTS) $(mpncra_LDADD) $(LIBS)
+
+mpncwa$(EXEEXT): $(mpncwa_OBJECTS) $(mpncwa_DEPENDENCIES) $(EXTRA_mpncwa_DEPENDENCIES) 
 	@rm -f mpncwa$(EXEEXT)
-	$(LINK) $(mpncwa_OBJECTS) $(mpncwa_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(LINK) $(mpncwa_OBJECTS) $(mpncwa_LDADD) $(LIBS)
 ncap_yacc.h: ncap_yacc.c
-	@if test ! -f $@; then \
-	  rm -f ncap_yacc.c; \
-	  $(MAKE) $(AM_MAKEFLAGS) ncap_yacc.c; \
-	else :; fi
-ncap$(EXEEXT): $(ncap_OBJECTS) $(ncap_DEPENDENCIES) 
+	@if test ! -f $@; then rm -f ncap_yacc.c; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) ncap_yacc.c; else :; fi
+
+ncap$(EXEEXT): $(ncap_OBJECTS) $(ncap_DEPENDENCIES) $(EXTRA_ncap_DEPENDENCIES) 
 	@rm -f ncap$(EXEEXT)
-	$(LINK) $(ncap_OBJECTS) $(ncap_LDADD) $(LIBS)
-ncatted$(EXEEXT): $(ncatted_OBJECTS) $(ncatted_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncap_OBJECTS) $(ncap_LDADD) $(LIBS)
+
+ncatted$(EXEEXT): $(ncatted_OBJECTS) $(ncatted_DEPENDENCIES) $(EXTRA_ncatted_DEPENDENCIES) 
 	@rm -f ncatted$(EXEEXT)
-	$(LINK) $(ncatted_OBJECTS) $(ncatted_LDADD) $(LIBS)
-ncbo$(EXEEXT): $(ncbo_OBJECTS) $(ncbo_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncatted_OBJECTS) $(ncatted_LDADD) $(LIBS)
+
+ncbo$(EXEEXT): $(ncbo_OBJECTS) $(ncbo_DEPENDENCIES) $(EXTRA_ncbo_DEPENDENCIES) 
 	@rm -f ncbo$(EXEEXT)
-	$(LINK) $(ncbo_OBJECTS) $(ncbo_LDADD) $(LIBS)
-ncecat$(EXEEXT): $(ncecat_OBJECTS) $(ncecat_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncbo_OBJECTS) $(ncbo_LDADD) $(LIBS)
+
+ncecat$(EXEEXT): $(ncecat_OBJECTS) $(ncecat_DEPENDENCIES) $(EXTRA_ncecat_DEPENDENCIES) 
 	@rm -f ncecat$(EXEEXT)
-	$(LINK) $(ncecat_OBJECTS) $(ncecat_LDADD) $(LIBS)
-ncflint$(EXEEXT): $(ncflint_OBJECTS) $(ncflint_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncecat_OBJECTS) $(ncecat_LDADD) $(LIBS)
+
+ncflint$(EXEEXT): $(ncflint_OBJECTS) $(ncflint_DEPENDENCIES) $(EXTRA_ncflint_DEPENDENCIES) 
 	@rm -f ncflint$(EXEEXT)
-	$(LINK) $(ncflint_OBJECTS) $(ncflint_LDADD) $(LIBS)
-ncks$(EXEEXT): $(ncks_OBJECTS) $(ncks_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncflint_OBJECTS) $(ncflint_LDADD) $(LIBS)
+
+ncks$(EXEEXT): $(ncks_OBJECTS) $(ncks_DEPENDENCIES) $(EXTRA_ncks_DEPENDENCIES) 
 	@rm -f ncks$(EXEEXT)
-	$(LINK) $(ncks_OBJECTS) $(ncks_LDADD) $(LIBS)
-ncpdq$(EXEEXT): $(ncpdq_OBJECTS) $(ncpdq_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncks_OBJECTS) $(ncks_LDADD) $(LIBS)
+
+ncpdq$(EXEEXT): $(ncpdq_OBJECTS) $(ncpdq_DEPENDENCIES) $(EXTRA_ncpdq_DEPENDENCIES) 
 	@rm -f ncpdq$(EXEEXT)
-	$(LINK) $(ncpdq_OBJECTS) $(ncpdq_LDADD) $(LIBS)
-ncra$(EXEEXT): $(ncra_OBJECTS) $(ncra_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncpdq_OBJECTS) $(ncpdq_LDADD) $(LIBS)
+
+ncra$(EXEEXT): $(ncra_OBJECTS) $(ncra_DEPENDENCIES) $(EXTRA_ncra_DEPENDENCIES) 
 	@rm -f ncra$(EXEEXT)
-	$(LINK) $(ncra_OBJECTS) $(ncra_LDADD) $(LIBS)
-ncrename$(EXEEXT): $(ncrename_OBJECTS) $(ncrename_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncra_OBJECTS) $(ncra_LDADD) $(LIBS)
+
+ncrename$(EXEEXT): $(ncrename_OBJECTS) $(ncrename_DEPENDENCIES) $(EXTRA_ncrename_DEPENDENCIES) 
 	@rm -f ncrename$(EXEEXT)
-	$(LINK) $(ncrename_OBJECTS) $(ncrename_LDADD) $(LIBS)
-ncwa$(EXEEXT): $(ncwa_OBJECTS) $(ncwa_DEPENDENCIES) 
+	$(AM_V_CCLD)$(LINK) $(ncrename_OBJECTS) $(ncrename_LDADD) $(LIBS)
+
+ncwa$(EXEEXT): $(ncwa_OBJECTS) $(ncwa_DEPENDENCIES) $(EXTRA_ncwa_DEPENDENCIES) 
 	@rm -f ncwa$(EXEEXT)
-	$(LINK) $(ncwa_OBJECTS) $(ncwa_LDADD) $(LIBS)
+	$(AM_V_CCLD)$(LINK) $(ncwa_OBJECTS) $(ncwa_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -693,9 +1014,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_dmn_utl.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_fl_utl.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_getopt.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_grp_trv.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_grp_utl.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_lmt.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_lst_utl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_md5.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_mmr.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_msa.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_mss_val.Plo at am__quote@
@@ -709,6 +1032,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_scl_utl.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_scm.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_sng_utl.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_srm.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_var_avg.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_var_lst.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nco_var_rth.Plo at am__quote@
@@ -720,31 +1044,31 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ncwa.Po at am__quote@
 
 .c.o:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
- at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
- at am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 .l.c:
-	$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+	$(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
 
 .y.c:
-	$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+	$(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -752,26 +1076,15 @@ mostlyclean-libtool:
 clean-libtool:
 	-rm -rf .libs _libs
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -783,15 +1096,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -800,101 +1109,180 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
 	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
 	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
 	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
 	    else \
-	      skipped="($$skip tests were not run)"; \
+	      color_start= color_end=; \
 	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all 
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -946,11 +1334,19 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -1041,33 +1437,36 @@ uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES
 	$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
 .MAKE: check-am install-am install-exec-am install-strip uninstall-am
 
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
 	clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
-	clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-exec-hook \
-	install-html install-html-am install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-binPROGRAMS \
-	uninstall-hook uninstall-libLTLIBRARIES
+	clean-libtool cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-exec-hook install-html install-html-am \
+	install-info install-info-am install-libLTLIBRARIES \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
+	uninstall uninstall-am uninstall-binPROGRAMS uninstall-hook \
+	uninstall-libLTLIBRARIES
 
 
 install-exec-hook:
 	cd $(DESTDIR)$(bindir) && ln -s -f ncbo ncdiff || (rm -f ncdiff && ln -s -f ncbo ncdiff)
 	cd $(DESTDIR)$(bindir) && ln -s -f ncra ncea || (rm -f ncea && ln -s -f ncra ncea)
+	cd $(DESTDIR)$(bindir) && ln -s -f ncra nces || (rm -f nces && ln -s -f ncra nces)
 	cd $(DESTDIR)$(bindir) && ln -s -f ncra ncrcat || (rm -f ncrcat && ln -s -f ncra ncrcat)
 @ENABLE_MPI_TRUE@	cd $(DESTDIR)$(bindir) && ln -s -f mpncbo mpncdiff || (rm -f mpncdiff && ln -s -f mpncbo mpncdiff)
 @ENABLE_MPI_TRUE@	cd $(DESTDIR)$(bindir) && ln -s -f mpncra mpncea || (rm -f mpncea && ln -s -f mpncra mpncea)
+ at ENABLE_MPI_TRUE@	cd $(DESTDIR)$(bindir) && ln -s -f mpncra mpnces || (rm -f mpnces && ln -s -f mpncra mpnces)
 @ENABLE_MPI_TRUE@	cd $(DESTDIR)$(bindir) && ln -s -f mpncra mpncrcat || (rm -f mpncrcat && ln -s -f mpncra mpncrcat)
 
 uninstall-hook:
-	cd $(DESTDIR)$(bindir) && rm -f ncdiff ncea ncrcat mpncdiff mpncea mpncrcat
+	cd $(DESTDIR)$(bindir) && rm -f ncdiff ncea nces ncrcat mpncdiff mpncea mpnces mpncrcat
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/nco/libnco.h b/src/nco/libnco.h
index 242372a..e54cb01 100644
--- a/src/nco/libnco.h
+++ b/src/nco/libnco.h
@@ -1,12 +1,12 @@
-/* $Header: /cvsroot/nco/nco/src/nco/libnco.h,v 1.48 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/libnco.h,v 1.58 2013/11/24 04:05:41 zender Exp $ */
 
 /* Purpose: netCDF Operator (NCO) library */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
-/* libnco.h headers depend on netcdf.h and nco_netcdf.h headers */
+/* Most libnco.h headers depend on netcdf.h and nco_netcdf.h headers */
 
 /* Usage:
    #include "libnco.h" *//* netCDF Operator (NCO) library */
@@ -32,22 +32,26 @@
 #include "nco_dbg.h" /* Debugging */
 #include "nco_dmn_utl.h" /* Dimension utilities */
 #include "nco_fl_utl.h" /* File manipulation */
+#include "nco_grp_trv.h" /* Group traversal */
 #include "nco_grp_utl.h" /* Group utilities */
 #include "nco_lmt.h" /* Hyperslab limits */
 #include "nco_lst_utl.h" /* List utilities */
+#include "nco_md5.h" /* MD5 digests */
 #include "nco_mmr.h" /* Memory management */
 #include "nco_msa.h" /* Multi-slabbing algorithm */
 #include "nco_mss_val.h" /* Missing value utilities */
 #include "nco_omp.h" /* OpenMP utilities */
 #include "nco_pck.h" /* Packing and unpacking variables */
-#include "nco_prn.h" /* Printing variables, attributes, metadata */
+#include "nco_prn.h" /* Print variables, attributes, metadata */
 #include "nco_rec_var.h" /* Record variable utilities */
-#include "nco_rth_flt.h" /* Float-precision arithmetic */
+#include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
 #include "nco_rth_utl.h" /* Arithmetic controls and utilities */
 #include "nco_scl_utl.h" /* Scalar utilities */
 #include "nco_scm.h" /* Software configuration management */
 #include "nco_sng_utl.h" /* String utilities */
+#include "nco_srm.h" /* Streams */
 #include "nco_var_avg.h" /* Average variables */
+#include "nco_uthash.h" /* Hash table functionality */
 #include "nco_var_lst.h" /* Variable list utilities */
 #include "nco_var_rth.h" /* Variable arithmetic */
 #include "nco_var_scv.h" /* Arithmetic between variables and scalar values */
diff --git a/src/nco/mpncbo.c b/src/nco/mpncbo.c
index 776228e..472a8db 100644
--- a/src/nco/mpncbo.c
+++ b/src/nco/mpncbo.c
@@ -1,11 +1,11 @@
-/* $Header: /cvsroot/nco/nco/src/nco/mpncbo.c,v 1.112 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/mpncbo.c,v 1.138 2013/12/02 01:05:56 zender Exp $ */
 
 /* mpncbo -- netCDF binary operator */
 
 /* Purpose: Compute sum, difference, product, or ratio of specified hyperslabs of specfied variables
    from two input netCDF files and output them to a single file. */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -60,10 +60,10 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#include <unistd.h> /* POSIX stuff */
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -98,8 +98,11 @@ main(int argc,char **argv)
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order*/
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
   nco_bool flg_ddra=False; /* [flg] DDRA diagnostics */
   
@@ -122,11 +125,11 @@ main(int argc,char **argv)
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
   
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
-  const char * const CVS_Id="$Id: mpncbo.c,v 1.112 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.112 $";
-  const char * const opt_sht_lst="346ACcD:d:FhL:l:Oo:p:rRSt:v:X:xy:-:";
+  const char * const CVS_Id="$Id: mpncbo.c,v 1.138 2013/12/02 01:05:56 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.138 $";
+  const char * const opt_sht_lst="3467ACcD:d:FhL:l:Oo:p:rRSt:v:X:xy:-:";
   
   cnk_sct **cnk=NULL_CEWI;
 
@@ -171,6 +174,7 @@ main(int argc,char **argv)
   int in_id_1;  
   int in_id_2;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl_1;
   int nbr_dmn_fl_2;
   int nbr_dmn_xtr_1;
@@ -181,8 +185,8 @@ main(int argc,char **argv)
   int nbr_var_fl_2;
   int nbr_var_prc_1; /* nbr_var_prc_1 gets incremented */
   int nbr_var_prc_2; /* nbr_var_prc_2 gets incremented */
-  int nbr_xtr_1=0; /* nbr_xtr_1 won't otherwise be set for -c with no -v */
-  int nbr_xtr_2=0; /* nbr_xtr_2 won't otherwise be set for -c with no -v */
+  int xtr_nbr_1=0; /* xtr_nbr_1 won't otherwise be set for -c with no -v */
+  int xtr_nbr_2=0; /* xtr_nbr_2 won't otherwise be set for -c with no -v */
   int nco_op_typ=nco_op_nil; /* [enm] Operation type */
   int opt;
   int out_id;  
@@ -200,7 +204,9 @@ main(int argc,char **argv)
   nm_id_sct *xtr_lst_1=NULL; /* xtr_lst_1 may be alloc()'d from NULL with -c option */
   nm_id_sct *xtr_lst_2=NULL; /* xtr_lst_2 may be alloc()'d from NULL with -c option */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
   var_sct **var_1;
   var_sct **var_2;
@@ -241,11 +247,20 @@ main(int argc,char **argv)
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"ddra",no_argument,0,0}, /* [flg] DDRA diagnostics */
       {"mdl_cmp",no_argument,0,0}, /* [flg] DDRA diagnostics */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */	  
+      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */	  
+      {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -253,19 +268,22 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
@@ -293,6 +311,7 @@ main(int argc,char **argv)
       {"operation",required_argument,0,'y'},
       {"op_typ",required_argument,0,'y'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -310,8 +329,8 @@ main(int argc,char **argv)
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -323,6 +342,10 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -346,11 +369,19 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"ddra") || !strcmp(opt_crr,"mdl_cmp")) ddra_info.flg_ddra=flg_ddra=True; /* [flg] DDRA diagnostics */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -365,6 +396,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -375,7 +409,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* The debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -405,7 +439,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -416,7 +450,7 @@ main(int argc,char **argv)
       break;
 #ifdef ENABLE_MPI
     case 'S': /* Suspend with signal handler to facilitate debugging */
-      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",prg_nm);
+      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",nco_prg_nm);
       while(!nco_spn_lck_brk) usleep(nco_spn_lck_us); /* Spinlock. fxm: should probably insert a sched_yield */
       break;
 #endif /* !ENABLE_MPI */
@@ -427,15 +461,15 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr_1=nbr_xtr_2=var_lst_in_nbr;
+      xtr_nbr_1=xtr_nbr_2=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -449,10 +483,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -477,24 +512,26 @@ main(int argc,char **argv)
   /* Parse filenames */
   fl_idx=0; /* Input file _1 */
   fl_in_1=nco_fl_nm_prs(fl_in_1,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in_1);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_1=nco_fl_mk_lcl(fl_in_1,fl_pth_lcl,&FILE_1_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl && FILE_1_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_1);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl && FILE_1_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_1,NC_NOWRITE,in_id_1_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_1,md_open,&bfr_sz_hnt,in_id_1_arr+thr_idx);
   in_id_1=in_id_1_arr[0];
   
   fl_idx=1; /* Input file _2 */
   fl_in_2=nco_fl_nm_prs(fl_in_2,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in_2);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_2=nco_fl_mk_lcl(fl_in_2,fl_pth_lcl,&FILE_2_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl && FILE_2_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_2);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl && FILE_2_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_2,NC_NOWRITE,in_id_2_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_2,md_open,&bfr_sz_hnt,in_id_2_arr+thr_idx);
   in_id_2=in_id_2_arr[0];
   
   /* Parse auxiliary coordinates */
@@ -517,31 +554,31 @@ main(int argc,char **argv)
   (void)nco_inq_format(in_id_2,&fl_in_fmt_2);
   
   /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst_1=nco_var_lst_mk(in_id_1,nbr_var_fl_1,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr_1);
-  xtr_lst_2=nco_var_lst_mk(in_id_2,nbr_var_fl_2,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr_2);
+  xtr_lst_1=nco_var_lst_mk(in_id_1,nbr_var_fl_1,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr_1);
+  xtr_lst_2=nco_var_lst_mk(in_id_2,nbr_var_fl_2,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr_2);
   
   /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst_1=nco_var_lst_xcl(in_id_1,nbr_var_fl_1,xtr_lst_1,&nbr_xtr_1);
-  if(EXCLUDE_INPUT_LIST) xtr_lst_2=nco_var_lst_xcl(in_id_2,nbr_var_fl_2,xtr_lst_2,&nbr_xtr_2);
+  if(EXCLUDE_INPUT_LIST) xtr_lst_1=nco_var_lst_xcl(in_id_1,nbr_var_fl_1,xtr_lst_1,&xtr_nbr_1);
+  if(EXCLUDE_INPUT_LIST) xtr_lst_2=nco_var_lst_xcl(in_id_2,nbr_var_fl_2,xtr_lst_2,&xtr_nbr_2);
   
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id_1);
 
   /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst_1=nco_var_lst_crd_add(in_id_1,nbr_dmn_fl_1,nbr_var_fl_1,xtr_lst_1,&nbr_xtr_1,CNV_CCM_CCSM_CF);
-  if(EXTRACT_ALL_COORDINATES) xtr_lst_2=nco_var_lst_crd_add(in_id_2,nbr_dmn_fl_2,nbr_var_fl_2,xtr_lst_2,&nbr_xtr_2,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst_1=nco_var_lst_crd_add(in_id_1,nbr_dmn_fl_1,nbr_var_fl_1,xtr_lst_1,&xtr_nbr_1,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst_2=nco_var_lst_crd_add(in_id_2,nbr_dmn_fl_2,nbr_var_fl_2,xtr_lst_2,&xtr_nbr_2,CNV_CCM_CCSM_CF);
   
   /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst_1=nco_var_lst_crd_ass_add(in_id_1,xtr_lst_1,&nbr_xtr_1,CNV_CCM_CCSM_CF);
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst_2=nco_var_lst_crd_ass_add(in_id_2,xtr_lst_2,&nbr_xtr_2,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst_1=nco_var_lst_crd_ass_add(in_id_1,xtr_lst_1,&xtr_nbr_1,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst_2=nco_var_lst_crd_ass_add(in_id_2,xtr_lst_2,&xtr_nbr_2,CNV_CCM_CCSM_CF);
   
-  /* With fully symmetric 1<->2 ordering, may occasionally find nbr_xtr_2 > nbr_xtr_1 
+  /* With fully symmetric 1<->2 ordering, may occasionally find xtr_nbr_2 > xtr_nbr_1 
      This occurs, e.g., when fl_in_1 contains reduced variables and full coordinates
      are only in fl_in_2 and so will not appear xtr_lst_1 */
   
   /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr_1 > 1) xtr_lst_1=nco_lst_srt_nm_id(xtr_lst_1,nbr_xtr_1,False);
-  if(nbr_xtr_2 > 1) xtr_lst_2=nco_lst_srt_nm_id(xtr_lst_2,nbr_xtr_2,False);
+  if(xtr_nbr_1 > 1) xtr_lst_1=nco_lst_srt_nm_id(xtr_lst_1,xtr_nbr_1,False);
+  if(xtr_nbr_2 > 1) xtr_lst_2=nco_lst_srt_nm_id(xtr_lst_2,xtr_nbr_2,False);
   
   /* We now have final list of variables to extract. Phew. */
   
@@ -552,11 +589,11 @@ main(int argc,char **argv)
   /* Place all dimensions in lmt_all_lst */
   lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl_1*sizeof(lmt_all_sct *));
   /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id_1,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl_1,lmt,lmt_nbr);
+  (void)nco_msa_lmt_all_ntl(in_id_1,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl_1,lmt,lmt_nbr);
 
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst_1=nco_dmn_lst_ass_var(in_id_1,xtr_lst_1,nbr_xtr_1,&nbr_dmn_xtr_1);
-  dmn_lst_2=nco_dmn_lst_ass_var(in_id_2,xtr_lst_2,nbr_xtr_2,&nbr_dmn_xtr_2);
+  dmn_lst_1=nco_dmn_lst_ass_var(in_id_1,xtr_lst_1,xtr_nbr_1,&nbr_dmn_xtr_1);
+  dmn_lst_2=nco_dmn_lst_ass_var(in_id_2,xtr_lst_2,xtr_nbr_2,&nbr_dmn_xtr_2);
   
   /* Fill-in dimension structure for all extracted dimensions */
   dim_1=(dmn_sct **)nco_malloc(nbr_dmn_xtr_1*sizeof(dmn_sct *));
@@ -580,34 +617,34 @@ main(int argc,char **argv)
   /* Merge hyperslab limit information into dimension structures */
   if(nbr_dmn_fl_1 > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr_1,lmt_all_lst,nbr_dmn_fl_1); 
 
-  if(dbg_lvl >= nco_dbg_sbr){
-    for(idx=0;idx<nbr_xtr_1;idx++) (void)fprintf(stderr,"xtr_lst_1[%d].nm = %s, .id= %d\n",idx,xtr_lst_1[idx].nm,xtr_lst_1[idx].id);
+  if(nco_dbg_lvl >= nco_dbg_sbr){
+    for(idx=0;idx<xtr_nbr_1;idx++) (void)fprintf(stderr,"xtr_lst_1[%d].nm = %s, .id= %d\n",idx,xtr_lst_1[idx].nm,xtr_lst_1[idx].id);
   } /* end if */
   
   /* Fill-in variable structure list for all extracted variables */
-  var_1=(var_sct **)nco_malloc(nbr_xtr_1*sizeof(var_sct *));
-  var_2=(var_sct **)nco_malloc(nbr_xtr_2*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr_1*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr_1;idx++){
+  var_1=(var_sct **)nco_malloc(xtr_nbr_1*sizeof(var_sct *));
+  var_2=(var_sct **)nco_malloc(xtr_nbr_2*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr_1*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr_1;idx++){
     var_1[idx]=nco_var_fll(in_id_1,xtr_lst_1[idx].id,xtr_lst_1[idx].nm,dim_1,nbr_dmn_xtr_1);
     var_out[idx]=nco_var_dpl(var_1[idx]);
     (void)nco_xrf_var(var_1[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
-  for(idx=0;idx<nbr_xtr_2;idx++) var_2[idx]=nco_var_fll(in_id_2,xtr_lst_2[idx].id,xtr_lst_2[idx].nm,dim_2,nbr_dmn_xtr_2);
+  for(idx=0;idx<xtr_nbr_2;idx++) var_2[idx]=nco_var_fll(in_id_2,xtr_lst_2[idx].id,xtr_lst_2[idx].nm,dim_2,nbr_dmn_xtr_2);
 
   /* Extraction lists no longer needed */
-  xtr_lst_1=nco_nm_id_lst_free(xtr_lst_1,nbr_xtr_1);
-  xtr_lst_2=nco_nm_id_lst_free(xtr_lst_2,nbr_xtr_2);
+  xtr_lst_1=nco_nm_id_lst_free(xtr_lst_1,xtr_nbr_1);
+  xtr_lst_2=nco_nm_id_lst_free(xtr_lst_2,xtr_nbr_2);
   
   /* Die gracefully on unsupported features... */
-  if(nbr_xtr_1 < nbr_xtr_2){
-    (void)fprintf(fp_stdout,"%s: WARNING First file has fewer extracted variables than second file (%d < %d). This desired feature is TODO nco581.\n",prg_nm,nbr_xtr_1,nbr_xtr_2);
+  if(xtr_nbr_1 < xtr_nbr_2){
+    (void)fprintf(fp_stdout,"%s: WARNING First file has fewer extracted variables than second file (%d < %d). This desired feature is TODO nco581.\n",nco_prg_nm,xtr_nbr_1,xtr_nbr_2);
       nco_exit(EXIT_FAILURE);
   } /* endif */
 
   /* Refresh var_out with dim_out data */
-  (void)nco_var_dmn_refresh(var_out,nbr_xtr_1);
+  (void)nco_var_dmn_refresh(var_out,xtr_nbr_1);
 
   /* Change dimensions in dim_2 to dim_out */
   for(idx=0;idx<nbr_dmn_xtr_2;idx++){
@@ -619,25 +656,25 @@ main(int argc,char **argv)
       } /* endif */
     /* Dimension not found so die gracefully */
     if(jdx==nbr_dmn_xtr_1){
-      (void)fprintf(fp_stdout,"%s: ERROR dimension \"%s\" in second file %s is not present in first file %s\n",prg_nm,dim_2[idx]->nm,fl_in_2,fl_in_1);
+      (void)fprintf(fp_stdout,"%s: ERROR dimension \"%s\" in second file %s is not present in first file %s\n",nco_prg_nm,dim_2[idx]->nm,fl_in_2,fl_in_1);
       nco_exit(EXIT_FAILURE);
     } /* endif dimension not found */
   } /* end loop over dimensions */
        
   /* Refresh var_2 with the new dim_2 data */
-  (void)nco_var_dmn_refresh(var_2,nbr_xtr_2);
+  (void)nco_var_dmn_refresh(var_2,xtr_nbr_2);
    
   /* Divide variable lists into lists of fixed variables and variables to be processed
      Create lists from file_1 last so those values remain in *_out arrays */
-  (void)nco_var_lst_dvd(var_2,var_out,nbr_xtr_2,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix_2,&var_fix_out,&nbr_var_fix_2,&var_prc_2,&var_prc_out,&nbr_var_prc_2);
+  (void)nco_var_lst_dvd(var_2,var_out,xtr_nbr_2,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix_2,&var_fix_out,&nbr_var_fix_2,&var_prc_2,&var_prc_out,&nbr_var_prc_2);
   /* Avoid double-free() condition */
   var_fix_out=(var_sct **)nco_free(var_fix_out);
   var_prc_out=(var_sct **)nco_free(var_prc_out);
-  (void)nco_var_lst_dvd(var_1,var_out,nbr_xtr_1,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix_1,&var_fix_out,&nbr_var_fix_1,&var_prc_1,&var_prc_out,&nbr_var_prc_1);
+  (void)nco_var_lst_dvd(var_1,var_out,xtr_nbr_1,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix_1,&var_fix_out,&nbr_var_fix_1,&var_prc_1,&var_prc_out,&nbr_var_prc_1);
   
   /* Die gracefully on unsupported features... */
   if(nbr_var_fix_1 < nbr_var_fix_2){
-    (void)fprintf(fp_stdout,"%s: ERROR First file has fewer fixed variables than second file (%d < %d). This feature is TODO nco581.\n",prg_nm,nbr_var_fix_1,nbr_var_fix_2);
+    (void)fprintf(fp_stdout,"%s: ERROR First file has fewer fixed variables than second file (%d < %d). This feature is TODO nco581.\n",nco_prg_nm,nbr_var_fix_1,nbr_var_fix_2);
       nco_exit(EXIT_FAILURE);
   } /* endif */
   
@@ -651,12 +688,12 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
   
   /* 20101019 fxm got to here merging ncbo 4.0.5 into mpncbo */
 
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr_1);
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr_1);
   
 #ifdef ENABLE_MPI 
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
@@ -665,7 +702,7 @@ main(int argc,char **argv)
     if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt_1;
 
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
     
     /* Copy global attributes */
     (void)nco_att_cpy(in_id_1,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -685,7 +722,7 @@ main(int argc,char **argv)
     
     /* fxm: TODO 550 put max_dim_sz/list(var_1,var_2) into var_def(var_out) */
     /* Define variables in output file, copy their attributes */
-    (void)nco_var_dfn(in_id_1,fl_out,out_id,var_out,nbr_xtr_1,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+    (void)nco_var_dfn(in_id_1,fl_out,out_id,var_out,xtr_nbr_1,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
     
     /* Set chunksize parameters */
     if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl_1,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
@@ -694,7 +731,12 @@ main(int argc,char **argv)
     nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
     
     /* Take output file out of define mode */
-    (void)nco_enddef(out_id);
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
     
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
@@ -717,10 +759,10 @@ main(int argc,char **argv)
   } /* prc_rnk != rnk_mgr */
 #endif /* !ENABLE_MPI */
   
-  /* ncbo() code has been similar to ncea() (and ncra()) wherever possible
+  /* ncbo() code has been similar to nces() (and ncra()) wherever possible
      Major differences occur where performance would otherwise suffer
      From now on, however, binary-file and binary-operation nature of ncbo()
-     is too different from ncea() paradigm to justify following ncea() style.
+     is too different from nces() paradigm to justify following nces() style.
      Instead, we adopt symmetric nomenclature (e.g., file_1, file_2), and 
      perform differences variable-by-variable so peak memory usage goes as
      Order(2*maximum variable size) rather than Order(3*maximum record size) or
@@ -799,7 +841,7 @@ main(int argc,char **argv)
 	/* OpenMP notes:
 	   shared(): msk and wgt are not altered within loop
 	   private(): wgt_avg does not need initialization */
-#pragma omp parallel for default(none) firstprivate(ddra_info) private(idx,in_id_1,in_id_2,dmn_idx,dmn_jdx) shared(dbg_lvl,dim_1,fl_in_1,fl_in_2,fl_out,flg_ddra,in_id_1_arr,in_id_2_arr,nbr_dmn_xtr_1,nbr_var_prc_1,nbr_var_prc_2,nco_op_typ,out_id,prg_nm,rcd,var_prc_1,var_prc_2,var_prc_out,lmt_all_lst,nbr_dmn_fl_1)
+#pragma omp parallel for default(none) firstprivate(ddra_info) private(idx,in_id_1,in_id_2,dmn_idx,dmn_jdx) shared(nco_dbg_lvl,dim_1,fl_in_1,fl_in_2,fl_out,flg_ddra,in_id_1_arr,in_id_2_arr,nbr_dmn_xtr_1,nbr_var_prc_1,nbr_var_prc_2,nco_op_typ,out_id,nco_prg_nm,rcd,var_prc_1,var_prc_2,var_prc_out,lmt_all_lst,nbr_dmn_fl_1)
 #endif /* !_OPENMP */
 	/* UP and SMP codes main loop over variables */ 
 	for(idx=0;idx<nbr_var_prc_1;idx++){
@@ -808,8 +850,8 @@ main(int argc,char **argv)
 	  int has_mss_val=False;
 	  ptr_unn mss_val;
 
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
-	  if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	  
 	  in_id_1=in_id_1_arr[omp_get_thread_num()];
 	  in_id_2=in_id_2_arr[omp_get_thread_num()];
@@ -830,14 +872,14 @@ main(int argc,char **argv)
 	      if(!strcmp(var_prc_2[idx]->dim[dmn_idx]->nm,var_prc_1[idx]->dim[dmn_jdx]->nm))
 		break;
 	    if(dmn_jdx==var_prc_1[idx]->nbr_dim){
-	      (void)fprintf(fp_stdout,"%s: ERROR Variables do not conform:\nFile %s variable %s has dimension %s not present in file %s variable %s\n",prg_nm,fl_in_2,var_prc_2[idx]->nm, var_prc_2[idx]->dim[dmn_idx]->nm,fl_in_1,var_prc_1[idx]->nm);
+	      (void)fprintf(fp_stdout,"%s: ERROR Variables do not conform:\nFile %s variable %s has dimension %s not present in file %s variable %s\n",nco_prg_nm,fl_in_2,var_prc_2[idx]->nm, var_prc_2[idx]->dim[dmn_idx]->nm,fl_in_1,var_prc_1[idx]->nm);
 	      nco_exit(EXIT_FAILURE);
 	    } /* endif error */
 	  } /* end loop over idx */
 	    		
 	  /* Die gracefully on unsupported features... */
 	  if(var_prc_1[idx]->nbr_dim < var_prc_2[idx]->nbr_dim){
-	    (void)fprintf(fp_stdout,"%s: ERROR Variable %s has lesser rank in first file than in second file (%d < %d). This feature is NCO TODO 552.\n",prg_nm,var_prc_1[idx]->nm,var_prc_1[idx]->nbr_dim,var_prc_2[idx]->nbr_dim);
+	    (void)fprintf(fp_stdout,"%s: ERROR Variable %s has lesser rank in first file than in second file (%d < %d). This feature is NCO TODO 552.\n",nco_prg_nm,var_prc_1[idx]->nm,var_prc_1[idx]->nbr_dim,var_prc_2[idx]->nbr_dim);
 	    nco_exit(EXIT_FAILURE);
 	  } /* endif */
     
@@ -848,7 +890,7 @@ main(int argc,char **argv)
 	  /* fxm: TODO 268 allow var1 or var2 to typecast */
 	  /* Make sure var2 conforms to type of var1 */
 	  if(var_prc_1[idx]->type != var_prc_2[idx]->type){
-	    if(dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO Input variables do not conform in type:\nFile 1 = %s variable %s has type %s\nFile 2 = %s variable %s has type %s\nFile 3 = %s variable %s will have type %s\n",prg_nm,fl_in_1,var_prc_1[idx]->nm,nco_typ_sng(var_prc_1[idx]->type),fl_in_2,var_prc_2[idx]->nm,nco_typ_sng(var_prc_2[idx]->type),fl_out,var_prc_1[idx]->nm,nco_typ_sng(var_prc_1[idx]->type));
+	    if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO Input variables do not conform in type:\nFile 1 = %s variable %s has type %s\nFile 2 = %s variable %s has type %s\nFile 3 = %s variable %s will have type %s\n",nco_prg_nm,fl_in_1,var_prc_1[idx]->nm,nco_typ_sng(var_prc_1[idx]->type),fl_in_2,var_prc_2[idx]->nm,nco_typ_sng(var_prc_2[idx]->type),fl_out,var_prc_1[idx]->nm,nco_typ_sng(var_prc_1[idx]->type));
 	  }  /* endif different type */
 	  var_prc_2[idx]=nco_var_cnf_typ(var_prc_1[idx]->type,var_prc_2[idx]);
 	  
@@ -869,7 +911,7 @@ main(int argc,char **argv)
 	  case nco_op_sbt: /* [enm] Subtract file_2 from file_1 */
 	    (void)nco_var_sbt(var_prc_1[idx]->type,var_prc_1[idx]->sz,has_mss_val,mss_val,var_prc_2[idx]->val,var_prc_1[idx]->val); break;
 	  default: /* Other defined nco_op_typ values are valid for ncra(), ncrcat(), ncwa(), not ncbo() */
-	    (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in binary operation\n",prg_nm);
+	    (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in binary operation\n",nco_prg_nm);
 	    nco_exit(EXIT_FAILURE);
 	    break;
 	  } /* end case */
@@ -889,7 +931,8 @@ main(int argc,char **argv)
 	  
 	  /* Worker has token---prepare to write */
 	  if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-	    rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+	    if(RAM_OPEN) md_open=NC_WRITE|NC_SHARE|NC_DISKLESS; else md_open=NC_WRITE|NC_SHARE;
+	    rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
 	    /* Set chunksize parameters */
 	    if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl_1,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 
@@ -944,7 +987,7 @@ main(int argc,char **argv)
 #else /* !ENABLE_MPI */
   }  /* end (OpenMP parallel for) loop over idx */
 #endif /* !ENABLE_MPI */
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   
   /* Close input netCDF files */
   for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_1_arr[thr_idx]);
@@ -959,8 +1002,8 @@ main(int argc,char **argv)
 #endif /* end !ENABLE_MPI */
   
   /* Remove local copy of file */
-  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_1);
-  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_2);
+  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_1);
+  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_2);
   
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
@@ -978,8 +1021,8 @@ main(int argc,char **argv)
     lmt=(lmt_sct**)nco_free(lmt); 
 
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
     if(fl_pth) fl_pth=(char *)nco_free(fl_pth);
@@ -1015,7 +1058,7 @@ main(int argc,char **argv)
     if(nbr_var_fix_2 > 0) var_fix_2=nco_var_lst_free(var_fix_2,nbr_var_fix_2);
     var_1=(var_sct **)nco_free(var_1);
     var_2=(var_sct **)nco_free(var_2);
-    if(nbr_xtr_1 > 0) var_out=nco_var_lst_free(var_out,nbr_xtr_1);
+    if(xtr_nbr_1 > 0) var_out=nco_var_lst_free(var_out,xtr_nbr_1);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix_out=(var_sct **)nco_free(var_fix_out);
   } /* !flg_cln */
diff --git a/src/nco/mpncecat.c b/src/nco/mpncecat.c
index 183f69b..c9abf77 100644
--- a/src/nco/mpncecat.c
+++ b/src/nco/mpncecat.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/mpncecat.c,v 1.91 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/mpncecat.c,v 1.115 2013/11/06 17:51:13 zender Exp $ */
 
 /* ncecat -- netCDF ensemble concatenator */
 
 /* Purpose: Join variables across files into a new record variable */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -37,7 +37,7 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
 #include <unistd.h> /* POSIX stuff */
@@ -68,15 +68,18 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_APPEND=True; /* Option H */
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
   
   char **fl_lst_abb=NULL; /* Option a */
@@ -97,11 +100,11 @@ main(int argc,char **argv)
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
   char *rec_dmn_nm=NULL; /* [sng] New record dimension name */
   
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
-  const char * const CVS_Id="$Id: mpncecat.c,v 1.91 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.91 $";
-  const char * const opt_sht_lst="346ACcD:d:FHhL:l:n:Oo:p:rRSt:u:v:X:x-:";
+  const char * const CVS_Id="$Id: mpncecat.c,v 1.115 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.115 $";
+  const char * const opt_sht_lst="3467ACcD:d:FHhL:l:n:Oo:p:rRSt:u:v:X:x-:";
   
   cnk_sct **cnk=NULL_CEWI;
 
@@ -134,12 +137,13 @@ main(int argc,char **argv)
   int jdx;
   int in_id;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
   int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int opt;
   int out_id;
   int rcd=NC_NOERR; /* [rcd] Return code */
@@ -157,7 +161,9 @@ main(int argc,char **argv)
   nm_id_sct *dmn_lst;
   nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   
   var_sct **var;
   var_sct **var_fix;
@@ -196,11 +202,20 @@ main(int argc,char **argv)
       {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -208,19 +223,22 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
@@ -253,6 +271,7 @@ main(int argc,char **argv)
       {"exclude",no_argument,0,'x'},
       {"xcl",no_argument,0,'x'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -267,8 +286,8 @@ main(int argc,char **argv)
   /* Start clock and save command line */ 
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -280,6 +299,10 @@ main(int argc,char **argv)
     
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -302,11 +325,19 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -321,6 +352,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -331,7 +365,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -357,7 +391,7 @@ main(int argc,char **argv)
     case 'n': /* NINTAP-style abbreviation of files to process */
       fl_lst_abb=nco_lst_prs_2D(optarg,",",&abb_arg_nbr);
       if(abb_arg_nbr < 1 || abb_arg_nbr > 5){
-	(void)fprintf(stdout,"%s: ERROR Incorrect abbreviation for file list\n",prg_nm);
+	(void)fprintf(stdout,"%s: ERROR Incorrect abbreviation for file list\n",nco_prg_nm);
 	(void)nco_usg_prn();
 	nco_exit(EXIT_FAILURE);
       } /* end if */
@@ -372,7 +406,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -383,7 +417,7 @@ main(int argc,char **argv)
       break;
 #ifdef ENABLE_MPI
     case 'S': /* Suspend with signal handler to facilitate debugging */
-      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",prg_nm);
+      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",nco_prg_nm);
       while(!nco_spn_lck_brk) usleep(nco_spn_lck_us); /* Spinlock. fxm: should probably insert a sched_yield */
       break;
 #endif /* !ENABLE_MPI */
@@ -397,15 +431,15 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -415,10 +449,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -442,9 +477,10 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
   
   /* Parse auxiliary coordinates */
   if(aux_nbr > 0){
@@ -464,22 +500,22 @@ main(int argc,char **argv)
   (void)nco_inq_format(in_id,&fl_in_fmt);
   
   /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
+  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr);
   
   /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&xtr_nbr);
   
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
   
   /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
   
   /* We now have final list of variables to extract. Phew. */
   
@@ -490,10 +526,10 @@ main(int argc,char **argv)
   /* Place all dimensions in lmt_all_lst */
   lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
   /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
+  (void)nco_msa_lmt_all_ntl(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
   
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
+  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,xtr_nbr,&nbr_dmn_xtr);
   
   /* Fill-in dimension structure for all extracted dimensions */
   dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
@@ -512,19 +548,19 @@ main(int argc,char **argv)
   } /* end loop over idx */
   
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
   /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
   
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
   
 #ifdef ENABLE_MPI
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
@@ -536,7 +572,7 @@ main(int argc,char **argv)
     (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
     
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
     
     /* Copy global attributes */
     (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -640,13 +676,13 @@ main(int argc,char **argv)
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
 #endif /* !ENABLE_MPI */
     /* Define variables in output file, copy their attributes */
-    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,xtr_nbr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
 #endif /* !ENABLE_MPI */
   
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
   
 #ifdef ENABLE_MPI
   if(prc_rnk == rnk_mgr){ /* prc_rnk != rnk_mgr */
@@ -659,7 +695,12 @@ main(int argc,char **argv)
     nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
     
     /* Take output file out of define mode */
-    (void)nco_enddef(out_id);
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
     
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
@@ -692,13 +733,13 @@ main(int argc,char **argv)
 #endif /* !ENABLE_MPI */
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,(int *)NULL,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"\nInput file %d is %s; ",fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"\nInput file %d is %s; ",fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"local file %s:\n",fl_in);
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"local file %s:\n",fl_in);
     
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
     
 #if 0
     /* fxm: netCDF4: Change to independent variable reads? */
@@ -773,15 +814,15 @@ main(int argc,char **argv)
 #else /* !ENABLE_MPI */
 	  /* OpenMP with threading over variables, not files */
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(dbg_lvl,fl_nbr,idx_rec_out,in_id_arr,nbr_var_prc,out_id,var_prc,var_prc_out,lmt_all_lst,nbr_dmn_fl,jdx)
+#pragma omp parallel for default(none) private(idx,in_id) shared(nco_dbg_lvl,fl_nbr,idx_rec_out,in_id_arr,nbr_var_prc,out_id,var_prc,var_prc_out,lmt_all_lst,nbr_dmn_fl,jdx)
 #endif /* !_OPENMP */
 	  /* Process all variables in current file */
 	  for(idx=0;idx<nbr_var_prc;idx++){
 #endif /* !ENABLE_MPI */
        /* Common code for UP and MPI */ /* fxm: requires C99 as is? */
 	    in_id=in_id_arr[omp_get_thread_num()];
-	    if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc[idx]->nm);
-	    if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	    if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc[idx]->nm);
+	    if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	    /* Variables may have different ID, missing_value, type, in each file */
 	    (void)nco_var_mtd_refresh(in_id,var_prc[idx]);
 	    /* Retrieve variable from disk into memory */
@@ -804,7 +845,8 @@ main(int argc,char **argv)
 	    
 	    /* Worker has token---prepare to write */
 	    if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-	      rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+	      if(RAM_OPEN) md_open=NC_WRITE|NC_SHARE|NC_DISKLESS; else md_open=NC_WRITE|NC_SHARE;
+	      rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
 	      /* Set chunksize parameters */
 	      if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 	      
@@ -838,13 +880,13 @@ main(int argc,char **argv)
 #endif /* !ENABLE_MPI */
     
     idx_rec_out++; /* [idx] Index of current record in output file (0 is first, ...) */
-    if(dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"\n");
+    if(nco_dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"\n");
     
     /* Close input netCDF file */
     for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
     
     /* Remove local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+    if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
 #ifdef ENABLE_MPI
     MPI_Barrier(mpi_cmm);
 #endif /* !ENABLE_MPI */
@@ -874,8 +916,8 @@ main(int argc,char **argv)
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -898,8 +940,8 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr-1); /* NB: ncecat has one fewer input than output dimension */
     if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr); 
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
diff --git a/src/nco/mpncflint.c b/src/nco/mpncflint.c
index 00ddb38..44bb026 100644
--- a/src/nco/mpncflint.c
+++ b/src/nco/mpncflint.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/mpncflint.c,v 1.92 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/mpncflint.c,v 1.116 2013/11/06 17:51:13 zender Exp $ */
 
 /* mpncflint -- netCDF file interpolator */
 
 /* Purpose: Linearly interpolate a third netCDF file from two input files */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -45,10 +45,10 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#include <unistd.h> /* POSIX stuff */
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -84,9 +84,12 @@ main(int argc,char **argv)
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order*/
   nco_bool MUST_CONFORM=False; /* Must nco_var_cnf_dmn() find truly conforming variables? */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
   
   char **fl_lst_abb=NULL; /* Option a */
@@ -108,11 +111,11 @@ main(int argc,char **argv)
   char *ntp_nm=NULL; /* Option i */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
-  const char * const CVS_Id="$Id: mpncflint.c,v 1.92 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.92 $";
-  const char * const opt_sht_lst="346ACcD:d:Fhi:L:l:Oo:p:rRSt:v:xw:-:";
+  const char * const CVS_Id="$Id: mpncflint.c,v 1.116 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.116 $";
+  const char * const opt_sht_lst="3467ACcD:d:Fhi:L:l:Oo:p:rRSt:v:xw:-:";
   
   cnk_sct **cnk=NULL_CEWI;
 
@@ -152,13 +155,14 @@ main(int argc,char **argv)
   int in_id_1;  
   int in_id_2;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
   int nbr_dmn_xtr;
   int nbr_ntp;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int opt;
   int out_id;
   int rcd=NC_NOERR; /* [rcd] Return code */
@@ -173,7 +177,9 @@ main(int argc,char **argv)
   nm_id_sct *dmn_lst;
   nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   
   val_unn val_gnr_unn; /* Generic container for arrival point or weight */
   
@@ -216,10 +222,18 @@ main(int argc,char **argv)
       {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -227,19 +241,22 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
@@ -269,6 +286,7 @@ main(int argc,char **argv)
       {"exclude",no_argument,0,'x'},
       {"xcl",no_argument,0,'x'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -283,8 +301,8 @@ main(int argc,char **argv)
   /* Start clock and save command line */ 
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -296,6 +314,10 @@ main(int argc,char **argv)
     
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -318,10 +340,18 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -336,6 +366,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -346,7 +379,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* The debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -363,7 +396,7 @@ main(int argc,char **argv)
       /* Name of variable to guide interpolation. Default is none */
       ntp_lst_in=nco_lst_prs_2D(optarg,",",&nbr_ntp);
       if(nbr_ntp > 2){
-	(void)fprintf(stdout,"%s: ERROR too many arguments to -i\n",prg_nm_get());
+	(void)fprintf(stdout,"%s: ERROR too many arguments to -i\n",nco_prg_nm_get());
 	nco_exit(EXIT_FAILURE);
       } /* end if */
       ntp_nm=ntp_lst_in[0];
@@ -389,7 +422,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -400,7 +433,7 @@ main(int argc,char **argv)
       break;
 #ifdef ENABLE_MPI
     case 'S': /* Suspend with signal handler to facilitate debugging */
-      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",prg_nm);
+      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",nco_prg_nm);
       while(!nco_spn_lck_brk) usleep(nco_spn_lck_us); /* Spinlock. fxm: should probably insert a sched_yield */
       break;
 #endif /* !ENABLE_MPI */
@@ -411,16 +444,16 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'w':
       /* Weight(s) for interpolation.  Default is wgt_val_1=wgt_val_2=0.5 */
       ntp_lst_in=nco_lst_prs_2D(optarg,",",&nbr_ntp);
       if(nbr_ntp > 2){
-	(void)fprintf(stdout,"%s: ERROR too many arguments to -w\n",prg_nm_get());
+	(void)fprintf(stdout,"%s: ERROR too many arguments to -w\n",nco_prg_nm_get());
 	nco_exit(EXIT_FAILURE);
       }else if(nbr_ntp == 2){
 	wgt_val_1=strtod(ntp_lst_in[0],&sng_cnv_rcd);
@@ -437,7 +470,7 @@ main(int argc,char **argv)
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -447,10 +480,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -459,10 +493,10 @@ main(int argc,char **argv)
   } /* end while loop */
   
   if(CMD_LN_NTP_VAR && CMD_LN_NTP_WGT){
-    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) and fixed weight(s) (-w) both set\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) and fixed weight(s) (-w) both set\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   }else if(!CMD_LN_NTP_VAR && !CMD_LN_NTP_WGT){
-    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) or fixed weight(s) (-w) must be set\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) or fixed weight(s) (-w) must be set\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* end else */
   
@@ -483,22 +517,24 @@ main(int argc,char **argv)
   /* Parse filenames */
   fl_idx=0; /* Input file _1 */
   fl_in_1=nco_fl_nm_prs(fl_in_1,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in_1);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_1=nco_fl_mk_lcl(fl_in_1,fl_pth_lcl,&FILE_1_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in_1);
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_1,NC_NOWRITE,in_id_1_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_1,md_open,&bfr_sz_hnt,in_id_1_arr+thr_idx);
   in_id_1=in_id_1_arr[0];
   
   fl_idx=1; /* Input file _2 */
   fl_in_2=nco_fl_nm_prs(fl_in_2,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in_2);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_2=nco_fl_mk_lcl(fl_in_2,fl_pth_lcl,&FILE_2_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in_2);
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_2,NC_NOWRITE,in_id_2_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_2,md_open,&bfr_sz_hnt,in_id_2_arr+thr_idx);
   in_id_2=in_id_2_arr[0];
   
   /* Parse auxiliary coordinates */
@@ -520,22 +556,22 @@ main(int argc,char **argv)
   (void)nco_inq_format(in_id_2,&fl_in_fmt_2);
   
   /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id_1,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
+  xtr_lst=nco_var_lst_mk(in_id_1,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr);
   
   /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id_1,nbr_var_fl,xtr_lst,&nbr_xtr);
+  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id_1,nbr_var_fl,xtr_lst,&xtr_nbr);
   
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id_1);
   
   /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id_1,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id_1,nbr_dmn_fl,nbr_var_fl,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id_1,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id_1,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
   
   /* We now have final list of variables to extract. Phew. */
   
@@ -546,10 +582,10 @@ main(int argc,char **argv)
   /* Place all dimensions in lmt_all_lst */
   lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
   /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id_1,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
+  (void)nco_msa_lmt_all_ntl(in_id_1,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
  
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id_1,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
+  dmn_lst=nco_dmn_lst_ass_var(in_id_1,xtr_lst,xtr_nbr,&nbr_dmn_xtr);
   
   /* Fill-in dimension structure for all extracted dimensions */
   dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
@@ -568,22 +604,22 @@ main(int argc,char **argv)
   if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
 
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id_1,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
   /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
   
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc_1,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc_1,&var_prc_out,&nbr_var_prc);
   
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
   
 #ifdef ENABLE_MPI
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
@@ -592,7 +628,7 @@ main(int argc,char **argv)
     if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt_1;
     
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
     
     /* Copy global attributes */
     (void)nco_att_cpy(in_id_1,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -611,7 +647,7 @@ main(int argc,char **argv)
     (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_xtr);
     
     /* Define variables in output file, copy their attributes */
-    (void)nco_var_dfn(in_id_1,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+    (void)nco_var_dfn(in_id_1,fl_out,out_id,var_out,xtr_nbr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
     
     /* Set chunksize parameters */
     if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
@@ -620,8 +656,13 @@ main(int argc,char **argv)
     nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
     
     /* Take output file out of define mode */
-    (void)nco_enddef(out_id);
-    
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
+
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
   
@@ -668,7 +709,7 @@ main(int argc,char **argv)
     
     /* Currently, only support scalar variables */
     if(ntp_1->sz > 1 || ntp_2->sz > 1){
-      (void)fprintf(stdout,"%s: ERROR interpolation variable %s must be scalar\n",prg_nm_get(),ntp_nm);
+      (void)fprintf(stdout,"%s: ERROR interpolation variable %s must be scalar\n",nco_prg_nm_get(),ntp_nm);
       nco_exit(EXIT_FAILURE);
     } /* end if */
     
@@ -683,7 +724,7 @@ main(int argc,char **argv)
     
     /* Check for degenerate case */
     if(ntp_1->val.dp[0] == ntp_2->val.dp[0]){
-      (void)fprintf(stdout,"%s: ERROR Interpolation variable %s is identical (%g) in input files, therefore unable to interpolate.\n",prg_nm_get(),ntp_nm,ntp_1->val.dp[0]);
+      (void)fprintf(stdout,"%s: ERROR Interpolation variable %s is identical (%g) in input files, therefore unable to interpolate.\n",nco_prg_nm_get(),ntp_nm,ntp_1->val.dp[0]);
       nco_exit(EXIT_FAILURE);
     } /* end if */
     
@@ -712,7 +753,7 @@ main(int argc,char **argv)
     wgt_2=scl_mk_var(val_gnr_unn,NC_DOUBLE);
   } /* end if CMD_LN_NTP_WGT */
   
-  if(dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"wgt_1 = %g, wgt_2 = %g\n",wgt_1->val.dp[0],wgt_2->val.dp[0]);
+  if(nco_dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"wgt_1 = %g, wgt_2 = %g\n",wgt_1->val.dp[0],wgt_2->val.dp[0]);
   
   /* Create structure list for second file */
   var_prc_2=(var_sct **)nco_malloc(nbr_var_prc*sizeof(var_sct *));
@@ -781,13 +822,13 @@ main(int argc,char **argv)
 	/* OpenMP notes:
 	   shared(): msk and wgt are not altered within loop
 	   private(): wgt_avg does not need initialization */
-#pragma omp parallel for default(none) firstprivate(wgt_1,wgt_2,wgt_out_1,wgt_out_2) private(DO_CONFORM,idx,in_id_1,in_id_2,has_mss_val) shared(MUST_CONFORM,dbg_lvl,dim,fl_in_1,fl_in_2,fl_out,in_id_1_arr,in_id_2_arr,nbr_dmn_xtr,nbr_var_prc,out_id,prg_nm,var_prc_1,var_prc_2,var_prc_out,lmt_all_lst,nbr_dmn_fl)
+#pragma omp parallel for default(none) firstprivate(wgt_1,wgt_2,wgt_out_1,wgt_out_2) private(DO_CONFORM,idx,in_id_1,in_id_2,has_mss_val) shared(MUST_CONFORM,nco_dbg_lvl,dim,fl_in_1,fl_in_2,fl_out,in_id_1_arr,in_id_2_arr,nbr_dmn_xtr,nbr_var_prc,out_id,nco_prg_nm,var_prc_1,var_prc_2,var_prc_out,lmt_all_lst,nbr_dmn_fl)
 #endif /* !_OPENMP */
 	/* UP and SMP codes main loop over variables */
 	for(idx=0;idx<nbr_var_prc;idx++){
 #endif /* !ENABLE_MPI */
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
-	  if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	  
 	  in_id_1=in_id_1_arr[omp_get_thread_num()];
 	  in_id_2=in_id_2_arr[omp_get_thread_num()];
@@ -836,7 +877,8 @@ main(int argc,char **argv)
 	  
 	  /* Worker has token---prepare to write */
 	  if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-	    rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+	    if(RAM_OPEN) md_open=NC_WRITE|NC_SHARE|NC_DISKLESS; else md_open=NC_WRITE|NC_SHARE;
+	    rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
 	    /* Set chunksize parameters */
 	    if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 	    
@@ -874,7 +916,7 @@ main(int argc,char **argv)
   } /* end (OpenMP parallel for) loop over idx */
 #endif /* !ENABLE_MPI */
   
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   
   /* Close input netCDF files */
   for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_1_arr[thr_idx]);
@@ -889,8 +931,8 @@ main(int argc,char **argv)
 #endif /* end !ENABLE_MPI */
   
   /* Remove local copy of file */
-  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_1);
-  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_2);
+  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_1);
+  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_2);
   
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
@@ -915,8 +957,8 @@ main(int argc,char **argv)
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
     if(fl_pth) fl_pth=(char *)nco_free(fl_pth);
diff --git a/src/nco/mpncpdq.c b/src/nco/mpncpdq.c
index 867ef9e..b871fd7 100644
--- a/src/nco/mpncpdq.c
+++ b/src/nco/mpncpdq.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/mpncpdq.c,v 1.85 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/mpncpdq.c,v 1.110 2013/11/06 17:51:13 zender Exp $ */
 
 /* mpncpdq -- netCDF pack, re-dimension, query */
 
 /* Purpose: Pack, re-dimension, query single netCDF file and output to a single file */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -46,9 +46,9 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#include <unistd.h> /* POSIX stuff */
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -80,14 +80,17 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
   nco_bool HISTORY_APPEND=True; /* Option h */
   nco_bool REDEFINED_RECORD_DIMENSION=False; /* [flg] Re-defined record dimension */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
   
   char **dmn_rdr_lst_in=NULL_CEWI; /* Option a */
@@ -111,15 +114,17 @@ main(int argc,char **argv)
   char *rec_dmn_nm_in=NULL; /* [sng] Record dimension name, original */
   char *rec_dmn_nm_out=NULL; /* [sng] Record dimension name, re-ordered */
   char *rec_dmn_nm_out_crr=NULL; /* [sng] Name of record dimension, if any, required by re-order */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   
   char add_fst_sng[]="add_offset"; /* [sng] Unidata standard string for add offset */
   char scl_fct_sng[]="scale_factor"; /* [sng] Unidata standard string for scale factor */
   
-  const char * const CVS_Id="$Id: mpncpdq.c,v 1.85 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.85 $";
-  const char * const opt_sht_lst="346Aa:CcD:d:FhL:l:M:Oo:P:p:RrSt:v:Ux-:";
+  const char * const CVS_Id="$Id: mpncpdq.c,v 1.110 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.110 $";
+  const char * const opt_sht_lst="3467Aa:CcD:d:FhL:l:M:Oo:P:p:RrSt:v:Ux-:";
   
+  cnk_sct **cnk=NULL_CEWI;
+
   dmn_sct **dim=NULL_CEWI;
   dmn_sct **dmn_out;
   dmn_sct **dmn_rdr=NULL; /* [sct] Dimension structures to be re-ordered */
@@ -155,13 +160,14 @@ main(int argc,char **argv)
   int idx_rdr=int_CEWI;
   int in_id;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
   int nbr_dmn_out;
   int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int nco_pck_map=nco_pck_map_flt_sht; /* [enm] Packing map */
   int nco_pck_plc=nco_pck_plc_nil; /* [enm] Packing policy */
   int opt;
@@ -172,13 +178,17 @@ main(int argc,char **argv)
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
   
-  lmt_sct **lmt;
+  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
+  lmt_sct **lmt=NULL_CEWI;
+  lmt_all_sct **lmt_all_lst=NULL_CEWI; /* List of *lmt_all structures */
   
   nm_id_sct *dmn_lst;
   nm_id_sct *dmn_rdr_lst;
   nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   
   var_sct **var;
   var_sct **var_fix;
@@ -211,10 +221,18 @@ main(int argc,char **argv)
   static struct option opt_lng[]=
     { /* Structure ordered by short option key if possible */
       /* Long options with no argument, no short option counterpart */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -222,12 +240,15 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"arrange",required_argument,0,'a'},
       {"permute",required_argument,0,'a'},
@@ -238,7 +259,7 @@ main(int argc,char **argv)
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
@@ -268,9 +289,11 @@ main(int argc,char **argv)
       {"unpack",no_argument,0,'U'},
       {"upk",no_argument,0,'U'},
       {"variable",required_argument,0,'v'},
+      {"auxiliary",required_argument,0,'X'},
       {"exclude",no_argument,0,'x'},
       {"xcl",no_argument,0,'x'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -285,8 +308,8 @@ main(int argc,char **argv)
   /* Start clock and save command line */ 
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -298,6 +321,10 @@ main(int argc,char **argv)
     
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -320,10 +347,18 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -338,6 +373,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -352,7 +390,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -389,7 +427,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -400,7 +438,7 @@ main(int argc,char **argv)
       break;
 #ifdef ENABLE_MPI
     case 'S': /* Suspend with signal handler to facilitate debugging */
-      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",prg_nm);
+      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",nco_prg_nm);
       while(!nco_spn_lck_brk) usleep(nco_spn_lck_us); /* Spinlock. fxm: should probably insert a sched_yield */
       break;
 #endif /* !ENABLE_MPI */
@@ -414,10 +452,15 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
+      break;
+    case 'X': /* Copy auxiliary coordinate argument for later processing */
+      aux_arg[aux_nbr]=(char *)strdup(optarg);
+      aux_nbr++;
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -427,10 +470,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -454,38 +498,57 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
+  
+  /* Parse auxiliary coordinates */
+  if(aux_nbr > 0){
+     int aux_idx_nbr;
+     aux=nco_aux_evl(in_id,aux_nbr,aux_arg,&aux_idx_nbr);
+     if(aux_idx_nbr > 0){
+        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
+        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
+        int aux_idx=0;
+        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
+        lmt_nbr=lmt_nbr_new;
+     } /* endif aux */
+  } /* endif aux_nbr */
   
   /* Get number of variables, dimensions, and record dimension ID of input file */
   (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id_in);
   (void)nco_inq_format(in_id,&fl_in_fmt);
   
   /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
+  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr);
   
   /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&xtr_nbr);
   
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
   
   /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
   
   /* Find coordinate/dimension values associated with user-specified limits
      NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
   for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
   
+  /* Place all dimensions in lmt_all_lst */
+  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
+  /* Initialize lmt_all_sct's */ 
+  (void)nco_msa_lmt_all_ntl(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
+
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
+  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,xtr_nbr,&nbr_dmn_xtr);
   
   /* Fill-in dimension structure for all extracted dimensions */
   dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
@@ -493,9 +556,6 @@ main(int argc,char **argv)
   /* Dimension list no longer needed */
   dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
   
-  /* Merge hyperslab limit information into dimension structures */
-  if(lmt_nbr > 0) (void)nco_dmn_lmt_mrg(dim,nbr_dmn_xtr,lmt,lmt_nbr);
-  
   /* Duplicate input dimension structures for output dimension structures */
   nbr_dmn_out=nbr_dmn_xtr;
   dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_out*sizeof(dmn_sct *));
@@ -504,15 +564,18 @@ main(int argc,char **argv)
     (void)nco_dmn_xrf(dim[idx],dmn_out[idx]);
   } /* end loop over idx */
   
+  /* Merge hyperslab limit information into dimension structures */
+  if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
+  
   /* No re-order dimensions specified implies packing request */
   if(dmn_rdr_nbr == 0){
     if(nco_pck_plc == nco_pck_plc_nil) nco_pck_plc=nco_pck_plc_get(nco_pck_plc_sng);
-    if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Packing map is %s and packing policy is %s\n",prg_nm_get(),nco_pck_map_sng_get(nco_pck_map),nco_pck_plc_sng_get(nco_pck_plc));
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Packing map is %s and packing policy is %s\n",nco_prg_nm_get(),nco_pck_map_sng_get(nco_pck_map),nco_pck_plc_sng_get(nco_pck_plc));
   } /* endif */
   
   /* From this point forward, assume ncpdq operator packs or re-orders, not both */
   if(dmn_rdr_nbr > 0 && nco_pck_plc != nco_pck_plc_nil){
-    (void)fprintf(fp_stdout,"%s: ERROR %s does not support simultaneous dimension re-ordering  (-a switch) and packing (-P switch).\nHINT: Invoke %s twice, once to re-order (with -a), and once to pack (with -P).\n",prg_nm,prg_nm,prg_nm);
+    (void)fprintf(fp_stdout,"%s: ERROR %s does not support simultaneous dimension re-ordering  (-a switch) and packing (-P switch).\nHINT: Invoke %s twice, once to re-order (with -a), and once to pack (with -P).\n",nco_prg_nm,nco_prg_nm,nco_prg_nm);
     nco_exit(EXIT_FAILURE);
   } /* end if */
   
@@ -544,7 +607,7 @@ main(int argc,char **argv)
       for(idx=0;idx<nbr_dmn_xtr;idx++){
 	if(!strcmp(dmn_rdr_lst[idx_rdr].nm,dim[idx]->nm)) break;
       } /* end loop over idx_rdr */
-      if(idx != nbr_dmn_xtr) dmn_rdr[dmn_rdr_nbr_utl++]=dim[idx]; else if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING re-ordering dimension \"%s\" is not contained in any variable in extraction list\n",prg_nm,dmn_rdr_lst[idx_rdr].nm);
+      if(idx != nbr_dmn_xtr) dmn_rdr[dmn_rdr_nbr_utl++]=dim[idx]; else if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING re-ordering dimension \"%s\" is not contained in any variable in extraction list\n",nco_prg_nm,dmn_rdr_lst[idx_rdr].nm);
     } /* end loop over idx_rdr */
     dmn_rdr_nbr=dmn_rdr_nbr_utl;
     /* Collapse extra dimension structure space to prevent accidentally using it */
@@ -557,7 +620,7 @@ main(int argc,char **argv)
       for(idx_rdr=0;idx_rdr<dmn_rdr_nbr;idx_rdr++){
 	if(idx_rdr != idx){
 	  if(dmn_rdr[idx]->id == dmn_rdr[idx_rdr]->id){
-	    (void)fprintf(fp_stdout,"%s: ERROR %s specified more than once in reducing list\n",prg_nm,dmn_rdr[idx]->nm);
+	    (void)fprintf(fp_stdout,"%s: ERROR %s specified more than once in reducing list\n",nco_prg_nm,dmn_rdr[idx]->nm);
 	    nco_exit(EXIT_FAILURE);
 	  } /* end if */
 	} /* end if */
@@ -565,7 +628,7 @@ main(int argc,char **argv)
     } /* end loop over idx */
     
     if(dmn_rdr_nbr > nbr_dmn_xtr){
-      (void)fprintf(fp_stdout,"%s: ERROR More re-ordering dimensions than extracted dimensions\n",prg_nm);
+      (void)fprintf(fp_stdout,"%s: ERROR More re-ordering dimensions than extracted dimensions\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
     } /* end if */
     
@@ -575,23 +638,23 @@ main(int argc,char **argv)
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
   
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
   /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
   
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_map,nco_pck_plc,dmn_rdr,dmn_rdr_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_map,nco_pck_plc,dmn_rdr,dmn_rdr_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
   
   /* We now have final list of variables to extract. Phew. */
-  if(dbg_lvl >= nco_dbg_var){
-    for(idx=0;idx<nbr_xtr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
+  if(nco_dbg_lvl >= nco_dbg_var){
+    for(idx=0;idx<xtr_nbr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
     for(idx=0;idx<nbr_var_fix;idx++) (void)fprintf(stderr,"var_fix[%d]->nm = %s, ->id=[%d]\n",idx,var_fix[idx]->nm,var_fix[idx]->id);
     for(idx=0;idx<nbr_var_prc;idx++) (void)fprintf(stderr,"var_prc[%d]->nm = %s, ->id=[%d]\n",idx,var_prc[idx]->nm,var_prc[idx]->id);
   } /* end if */
@@ -606,8 +669,8 @@ main(int argc,char **argv)
     (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
     
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-    if(dbg_lvl >= nco_dbg_sbr) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
+    if(nco_dbg_lvl >= nco_dbg_sbr) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
     
     /* Copy global attributes */
     (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -655,7 +718,7 @@ main(int argc,char **argv)
 	  /* ...and current output record dimension already differs from input record dimension... */
 	  if(REDEFINED_RECORD_DIMENSION){
 	    /* ...then requested re-order requires multiple record dimensions... */
-	    if(dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stdout,"%s: WARNING Re-order requests multiple record dimensions\n. Only first request will be honored (netCDF allows only one record dimension). Record dimensions involved [original,first change request (honored),latest change request (made by variable %s)]=[%s,%s,%s]\n",prg_nm,var_prc[idx]->nm,rec_dmn_nm_in,rec_dmn_nm_out,rec_dmn_nm_out_crr);
+	    if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stdout,"%s: WARNING Re-order requests multiple record dimensions\n. Only first request will be honored (netCDF allows only one record dimension). Record dimensions involved [original,first change request (honored),latest change request (made by variable %s)]=[%s,%s,%s]\n",nco_prg_nm,var_prc[idx]->nm,rec_dmn_nm_in,rec_dmn_nm_out,rec_dmn_nm_out_crr);
 	    break;
 	  }else{ /* !REDEFINED_RECORD_DIMENSION */
 	    /* ...otherwise, update output record dimension name... */
@@ -676,7 +739,7 @@ main(int argc,char **argv)
      Hence making following logic prettier or funcionalizing is not high priority.
      Logic may need to be simplified/re-written once netCDF4 is released. */
   if(REDEFINED_RECORD_DIMENSION){
-    if(dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change record dimension from %s to %s. netCDF allows only one record dimension. Hence %s will make %s record (least rapidly varying) dimension in all variables that contain it.\n",prg_nm,rec_dmn_nm_in,rec_dmn_nm_out,prg_nm,rec_dmn_nm_out);
+    if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change record dimension from %s to %s. netCDF allows only one record dimension. Hence %s will make %s record (least rapidly varying) dimension in all variables that contain it.\n",nco_prg_nm,rec_dmn_nm_in,rec_dmn_nm_out,nco_prg_nm,rec_dmn_nm_out);
     /* Changing record dimension may invalidate is_rec_var flag
        Updating is_rec_var flag to correct value, even if value is ignored,
        helps keep user appraised of unexpected dimension re-orders.
@@ -694,14 +757,14 @@ main(int argc,char **argv)
       /* ...Will variable be record variable in output file?... */
       if(dmn_out_idx == var_fix[idx]->nbr_dim){
 	/* ...No. Variable will be non-record---does this change its status?... */
-	if(dbg_lvl >= nco_dbg_var) if(var_fix[idx]->is_rec_var == True) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",prg_nm,var_fix[idx]->nm);
+	if(nco_dbg_lvl >= nco_dbg_var) if(var_fix[idx]->is_rec_var == True) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",nco_prg_nm,var_fix[idx]->nm);
 	/* Assign record flag dictated by re-order */
 	var_fix[idx]->is_rec_var=False; 
       }else{ /* ...otherwise variable will be record variable... */
 	/* ...Yes. Variable will be record... */
 	/* ...Will becoming record variable change its status?... */
 	if(var_fix[idx]->is_rec_var == False){
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",prg_nm,var_fix[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",nco_prg_nm,var_fix[idx]->nm);
 	  /* Change record flag to status dictated by re-order */
 	  var_fix[idx]->is_rec_var=True;
 	} /* endif status changing from non-record to record */
@@ -716,7 +779,7 @@ main(int argc,char **argv)
       /* ...Will variable be record variable in output file?... */
       if(dmn_out_idx == var_prc_out[idx]->nbr_dim){
 	/* ...No. Variable will be non-record---does this change its status?... */
-	if(dbg_lvl >= nco_dbg_var) if(var_prc_out[idx]->is_rec_var == True) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",prg_nm,var_prc_out[idx]->nm);
+	if(nco_dbg_lvl >= nco_dbg_var) if(var_prc_out[idx]->is_rec_var == True) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",nco_prg_nm,var_prc_out[idx]->nm);
 	/* Assign record flag dictated by re-order */
 	var_prc_out[idx]->is_rec_var=False; 
       }else{ /* ...otherwise variable will be record variable... */
@@ -726,14 +789,14 @@ main(int argc,char **argv)
 	  int dmn_dpl_idx;
 	  for(dmn_dpl_idx=1;dmn_dpl_idx<var_prc_out[idx]->nbr_dim;dmn_dpl_idx++){ /* NB: loop starts from 1 */
 	    if(var_prc_out[idx]->dmn_id[0] == var_prc_out[idx]->dmn_id[dmn_dpl_idx]){
-	      (void)fprintf(stdout,"%s: ERROR Requested re-order turns duplicate non-record dimension %s in variable %s into output record dimension. netCDF does not support duplicate record dimensions in a single variable.\n%s: HINT: Exclude variable %s from extraction list with \"-x -v %s\".\n",prg_nm_get(),rec_dmn_nm_out,var_prc_out[idx]->nm,prg_nm_get(),var_prc_out[idx]->nm,var_prc_out[idx]->nm);
+	      (void)fprintf(stdout,"%s: ERROR Requested re-order turns duplicate non-record dimension %s in variable %s into output record dimension. netCDF does not support duplicate record dimensions in a single variable.\n%s: HINT: Exclude variable %s from extraction list with \"-x -v %s\".\n",nco_prg_nm_get(),rec_dmn_nm_out,var_prc_out[idx]->nm,nco_prg_nm_get(),var_prc_out[idx]->nm,var_prc_out[idx]->nm);
 	      nco_exit(EXIT_FAILURE);
 	    } /* endif err */
 	  } /* end loop over dmn_out */
 	} /* endif has_dpl_dmn */
 	/* ...Will becoming record variable change its status?... */
 	if(var_prc_out[idx]->is_rec_var == False){
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",prg_nm,var_prc_out[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",nco_prg_nm,var_prc_out[idx]->nm);
 	  /* Change record flag to status dictated by re-order */
 	  var_prc_out[idx]->is_rec_var=True;
 	  /* ...Swap dimension information for multi-dimensional variables... */
@@ -807,7 +870,7 @@ main(int argc,char **argv)
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
 #endif /* !ENABLE_MPI */
     /* Define variables in output file, copy their attributes */
-    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_map,nco_pck_plc,dfl_lvl);
+    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,xtr_nbr,(dmn_sct **)NULL,(int)0,nco_pck_map,nco_pck_plc,dfl_lvl);
     
     /* Set chunksize parameters */
     if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
@@ -816,7 +879,12 @@ main(int argc,char **argv)
     nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
     
     /* Take output file out of define mode */
-    (void)nco_enddef(out_id);
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
   
@@ -828,15 +896,15 @@ main(int argc,char **argv)
   
 #endif /* !ENABLE_MPI */
   
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
   
 #ifdef ENABLE_MPI
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
     TKN_WRT_FREE=False;
 #endif /* !ENABLE_MPI */
     /* Copy variable data for non-processed variables */
-    (void)nco_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix);
+    (void)nco_msa_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix,lmt_all_lst,nbr_dmn_fl);
 #ifdef ENABLE_MPI
     /* Close output file so workers can open it */
     nco_close(out_id);
@@ -851,13 +919,13 @@ main(int argc,char **argv)
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in);
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in);
     
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
     
 #ifdef ENABLE_MPI
     if(prc_rnk == rnk_mgr){ /* MPI manager code */
@@ -926,7 +994,7 @@ main(int argc,char **argv)
 #endif /* !0 */
 #else /* !ENABLE_MPI */
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(aed_lst_add_fst,aed_lst_scl_fct,dbg_lvl,dmn_idx_out_in,dmn_rdr_nbr,dmn_rvr_in,in_id_arr,nbr_var_prc,nco_pck_map,nco_pck_plc,out_id,prg_nm,rcd,var_prc,var_prc_out)
+#pragma omp parallel for default(none) private(idx,in_id) shared(aed_lst_add_fst,aed_lst_scl_fct,nco_dbg_lvl,dmn_idx_out_in,dmn_rdr_nbr,dmn_rvr_in,in_id_arr,nbr_var_prc,nco_pck_map,nco_pck_plc,out_id,nco_prg_nm,rcd,var_prc,var_prc_out)
 #endif /* !_OPENMP */
 	/* UP and SMP codes main loop over variables */
 	for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
@@ -934,16 +1002,15 @@ main(int argc,char **argv)
 	  in_id=in_id_arr[omp_get_thread_num()];
 	  /* fxm TODO nco638 temporary fix? */
 	  var_prc[idx]->nc_id=in_id; 
-	  if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	  if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	  if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	  
 	  /* Retrieve variable from disk into memory */
 	  /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-	  (void)nco_var_get(in_id,var_prc[idx]);
-	  
+	  (void)nco_msa_var_get(in_id,var_prc[idx],lmt_all_lst,nbr_dmn_fl);
 	  if(dmn_rdr_nbr > 0){
 	    if((var_prc_out[idx]->val.vp=(void *)nco_malloc_flg(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type))) == NULL){
-	      (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
+	      (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",nco_prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
 	      nco_exit(EXIT_FAILURE); 
 	    } /* endif err */
 	    
@@ -977,7 +1044,8 @@ main(int argc,char **argv)
 	  
 	    /* Worker has token---prepare to write */
 	  if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-	    rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+	    if(RAM_OPEN) md_open=NC_WRITE|NC_SHARE|NC_DISKLESS; else md_open=NC_WRITE|NC_SHARE;
+	    rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
 	    /* Set chunksize parameters */
 	    if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 	    
@@ -1012,7 +1080,7 @@ main(int argc,char **argv)
   }  /* end (OpenMP parallel for) loop over idx */
 #endif /* !ENABLE_MPI */
   
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"\n");
   
 #ifdef ENABLE_MPI
   MPI_Barrier(MPI_COMM_WORLD);
@@ -1028,7 +1096,8 @@ main(int argc,char **argv)
     if(nco_pck_plc != nco_pck_plc_nil && nco_pck_plc != nco_pck_plc_upk){
       nco_bool nco_pck_plc_alw; /* [flg] Packing policy allows packing nc_typ_in */
       /* ...put file in define mode to allow metadata writing... */
-      rcd=nco_open(fl_out_tmp,NC_WRITE,&out_id);
+      if(RAM_OPEN) md_open=NC_WRITE|NC_DISKLESS; else md_open=NC_WRITE;
+      rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
       (void)nco_redef(out_id);
       /* ...loop through all variables that may have been packed... */
 #ifdef ENABLE_MPI
@@ -1054,7 +1123,7 @@ main(int argc,char **argv)
 	       (nco_pck_plc == nco_pck_plc_xst_new_att && var_prc[idx]->pck_ram)
 	       ){
 	      /* Replace dummy packing attributes with final values, or delete them */
-	      if(dbg_lvl >= nco_dbg_io) (void)fprintf(stderr,"%s: main() replacing dummy packing attribute values for variable %s\n",prg_nm,var_prc[idx]->nm);
+	      if(nco_dbg_lvl >= nco_dbg_io) (void)fprintf(stderr,"%s: main() replacing dummy packing attribute values for variable %s\n",nco_prg_nm,var_prc[idx]->nm);
 	      (void)nco_aed_prc(out_id,aed_lst_add_fst[idx].id,aed_lst_add_fst[idx]);
 	      (void)nco_aed_prc(out_id,aed_lst_scl_fct[idx].id,aed_lst_scl_fct[idx]);
 	    } /* endif variable is newly packed by this operator */
@@ -1081,7 +1150,7 @@ main(int argc,char **argv)
     for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
     
     /* Remove local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+    if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
     
   } /* end loop over fl_idx */
   
@@ -1123,11 +1192,18 @@ main(int argc,char **argv)
       } /* nco_pck_plc == nco_pck_plc_upk */
     } /* nco_pck_plc == nco_pck_plc_nil */
     
+    /* NB: lmt now referenced within lmt_all_lst[idx]  */
+    for(idx=0;idx<nbr_dmn_fl;idx++)
+      for(jdx=0;jdx< lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
+	lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
+    if(nbr_dmn_fl > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl);   
+    lmt=(lmt_sct**)nco_free(lmt); 
+	
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -1141,7 +1217,8 @@ main(int argc,char **argv)
     if(var_lst_in_nbr > 0) var_lst_in=nco_sng_lst_free(var_lst_in,var_lst_in_nbr);
     /* Free limits */
     for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
-    if(lmt_nbr > 0) lmt=nco_lmt_lst_free(lmt,lmt_nbr);
+    for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
+    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
@@ -1149,8 +1226,8 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr);
     if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr);
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
diff --git a/src/nco/mpncra.c b/src/nco/mpncra.c
index 6a539ac..b215a34 100644
--- a/src/nco/mpncra.c
+++ b/src/nco/mpncra.c
@@ -1,15 +1,15 @@
-/* $Header: /cvsroot/nco/nco/src/nco/mpncra.c,v 1.113 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/mpncra.c,v 1.146 2013/12/02 17:43:32 zender Exp $ */
 
 /* This single source file may be called as three separate executables:
-   ncra -- netCDF running averager
-   ncea -- netCDF ensemble averager
+   ncra -- netCDF record averager
+   nces -- netCDF ensemble statistics
    ncrcat -- netCDF record concatenator */
 
 /* Purpose: Compute averages or extract series of specified hyperslabs of 
    specfied variables of multiple input netCDF files and output them 
    to a single file. */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -40,10 +40,10 @@
    ncra -n 3,4,1 -p /ZENDER/tmp -l ${HOME}/nco/data h0001.nc ~/foo.nc
    scp ~/nco/src/nco/ncra.c esmf.ess.uci.edu:nco/src/nco
    
-   ncea in.nc in.nc ~/foo.nc
-   ncea -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
-   ncea -n 3,4,1 -p ${HOME}/nco/data -l ${HOME} h0001.nc ~/foo.nc
-   ncea -n 3,4,1 -p /ZENDER/tmp -l ${HOME} h0001.nc ~/foo.nc */
+   nces in.nc in.nc ~/foo.nc
+   nces -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
+   nces -n 3,4,1 -p ${HOME}/nco/data -l ${HOME} h0001.nc ~/foo.nc
+   nces -n 3,4,1 -p /ZENDER/tmp -l ${HOME} h0001.nc ~/foo.nc */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
@@ -54,10 +54,10 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#include <unistd.h> /* POSIX stuff */
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -119,7 +119,7 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_APPEND=True; /* Option H */
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
@@ -127,7 +127,10 @@ main(int argc,char **argv)
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
   nco_bool HISTORY_APPEND=True; /* Option h */
   nco_bool LAST_RECORD=False;
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
   
   char **fl_lst_abb=NULL; /* Option n */
@@ -147,11 +150,11 @@ main(int argc,char **argv)
   char *nco_pck_plc_sng=NULL_CEWI; /* [sng] Packing policy Option P */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
-  const char * const CVS_Id="$Id: mpncra.c,v 1.113 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.113 $";
-  const char * const opt_sht_lst="346ACcD:d:FHhL:l:n:Oo:p:P:rRSt:v:xY:y:-:";
+  const char * const CVS_Id="$Id: mpncra.c,v 1.146 2013/12/02 17:43:32 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.146 $";
+  const char * const opt_sht_lst="3467ACcD:d:FHhL:l:n:Oo:p:P:rRSt:v:xY:y:-:";
   
   dmn_sct **dim;
   dmn_sct **dmn_out;
@@ -178,12 +181,13 @@ main(int argc,char **argv)
   int idx=int_CEWI;
   int in_id;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
   int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int nco_op_typ=nco_op_avg; /* [enm] Default operation is averaging */
   int nco_pck_plc=nco_pck_plc_nil; /* [enm] Default packing is none */
   int opt;
@@ -196,9 +200,11 @@ main(int argc,char **argv)
   
   lmt_sct **lmt=NULL_CEWI;
   lmt_sct *lmt_rec=NULL_CEWI;
+  lmt_all_sct **lmt_all_lst; /* List of *lmt_all structures */
+  lmt_all_sct *lmt_all_rec=NULL_CEWI; /* Pointer to record limit structure in above list */
   
   long idx_rec; /* [idx] Index of current record in current input file */
-  long idx_rec_out=0L; /* [idx] Index of current record in output file (0 is first, ...) */
+  long rec_usd_cml=0L; /* [idx] Index of current record in output file (0 is first, ...) */
   
   nco_int base_time_srt=nco_int_CEWI;
   nco_int base_time_crr=nco_int_CEWI;
@@ -206,7 +212,9 @@ main(int argc,char **argv)
   nm_id_sct *dmn_lst;
   nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   
   var_sct **var;
   var_sct **var_fix;
@@ -245,10 +253,18 @@ main(int argc,char **argv)
       {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -256,19 +272,22 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
@@ -303,6 +322,7 @@ main(int argc,char **argv)
       {"prg_nm",required_argument,0,'Y'},
       {"math",required_argument,0,'y'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -324,8 +344,8 @@ main(int argc,char **argv)
   /* Start clock and save command line */
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -337,6 +357,10 @@ main(int argc,char **argv)
     
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -359,10 +383,18 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -377,6 +409,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -387,7 +422,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -413,7 +448,7 @@ main(int argc,char **argv)
     case 'n': /* NINTAP-style abbreviation of files to average */
       fl_lst_abb=nco_lst_prs_2D(optarg,",",&abb_arg_nbr);
       if(abb_arg_nbr < 1 || abb_arg_nbr > 5){
-	(void)fprintf(stdout,gettext("%s: ERROR Incorrect abbreviation for file list\n"),prg_nm_get());
+	(void)fprintf(stdout,gettext("%s: ERROR Incorrect abbreviation for file list\n"),nco_prg_nm_get());
 	(void)nco_usg_prn();
 	nco_exit(EXIT_FAILURE);
       } /* end if */
@@ -432,7 +467,7 @@ main(int argc,char **argv)
       nco_pck_plc=nco_pck_plc_get(nco_pck_plc_sng);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -443,7 +478,7 @@ main(int argc,char **argv)
       break;
 #ifdef ENABLE_MPI
     case 'S': /* Suspend with signal handler to facilitate debugging */
-      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stderr,"%s: ERROR Could not install suspend handler.\n",prg_nm_get());
+      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stderr,"%s: ERROR Could not install suspend handler.\n",nco_prg_nm_get());
       while(!nco_spn_lck_brk) usleep(nco_spn_lck_us); /* Spinlock. fxm: should probably insert a sched_yield */
       break;
 #endif /* !ENABLE_MPI */
@@ -454,34 +489,35 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
       break;
     case 'Y': /* Pseudonym */
-      /* Call prg_prs to reset pseudonym */
+      /* Call nco_prg_prs to reset pseudonym */
       optarg_lcl=(char *)strdup(optarg);
-      if(prg_nm) prg_nm=(char *)nco_free(prg_nm);
-      prg_nm=prg_prs(optarg_lcl,&prg);
+      if(nco_prg_nm) nco_prg_nm=(char *)nco_free(nco_prg_nm);
+      nco_prg_nm=nco_prg_prs(optarg_lcl,&nco_prg_id);
       optarg_lcl=(char *)nco_free(optarg_lcl);
       break;
     case 'y': /* Operation type */
       nco_op_typ_sng=(char *)strdup(optarg);
-      if(prg == ncra || prg == ncea ) nco_op_typ=nco_op_typ_get(nco_op_typ_sng);
+      if(nco_prg_id == ncra || nco_prg_id == ncfe || nco_prg_id == ncge) nco_op_typ=nco_op_typ_get(nco_op_typ_sng);
       break;
     case '?': /* Print proper usage */
       (void)nco_usg_prn();
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -505,31 +541,32 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
   
   /* Get number of variables, dimensions, and record dimension ID of input file */
   (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id);
   (void)nco_inq_format(in_id,&fl_in_fmt);
   
   /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
+  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr);
   
   /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&xtr_nbr);
   
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
   
   /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
   
   /* We now have final list of variables to extract. Phew. */
   
@@ -537,8 +574,13 @@ main(int argc,char **argv)
      NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
   for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
   
+  /* Place all dimensions in lmt_all_lst */
+  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
+  /* Initialize lmt_all_sct's */ 
+  (void)nco_msa_lmt_all_ntl(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
+
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
+  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,xtr_nbr,&nbr_dmn_xtr);
   
   /* Fill-in dimension structure for all extracted dimensions */
   dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
@@ -547,7 +589,7 @@ main(int argc,char **argv)
   dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
   
   /* Merge hyperslab limit information into dimension structures */
-  if(lmt_nbr > 0) (void)nco_dmn_lmt_mrg(dim,nbr_dmn_xtr,lmt,lmt_nbr);
+  if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
   
   /* Duplicate input dimension structures for output dimension structures */
   dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
@@ -557,14 +599,58 @@ main(int argc,char **argv)
   } /* end loop over idx */
   
   /* Create stand-alone limit structure just for record dimension */
-  if(prg == ncra || prg == ncrcat){
-    if(rec_dmn_id == NCO_REC_DMN_UNDEFINED){
-      (void)fprintf(stdout,gettext("%s: ERROR input file %s lacks a record dimension\n"),prg_nm_get(),fl_in);
-      if(fl_nbr == 1)(void)fprintf(stdout,gettext("%s: HINT Use ncks instead of %s\n"),prg_nm_get(),prg_nm_get());
+  if(rec_dmn_id == NCO_REC_DMN_UNDEFINED){
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){
+      (void)fprintf(stdout,gettext("%s: ERROR input file %s lacks a record dimension\n"),nco_prg_nm_get(),fl_in);
+      if(fl_nbr == 1)(void)fprintf(stdout,gettext("%s: HINT Use ncks instead of %s\n"),nco_prg_nm_get(),nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
     } /* endif */
+  }else{ /* Record dimension exists */
     lmt_rec=nco_lmt_sct_mk(in_id,rec_dmn_id,lmt,lmt_nbr,FORTRAN_IDX_CNV);
-  } /* endif */
+    /* Initialize record coordinate re-basing */
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){
+      int var_id;
+      
+      lmt_rec->lmt_cln=cln_nil; 
+      lmt_rec->origin=0.0; 
+      lmt_rec->rbs_sng=NULL;
+
+      /* Obtain metadata for record coordinate */
+      rcd=nco_inq_varid_flg(in_id,lmt_rec->nm,&var_id);
+      if(rcd == NC_NOERR){ 
+	char *cln_att_sng=NULL;
+	lmt_rec->rbs_sng=nco_lmt_get_udu_att(in_id,var_id,"units"); 
+	cln_att_sng=nco_lmt_get_udu_att(in_id,var_id,"calendar"); 
+	lmt_rec->lmt_cln=nco_cln_get_cln_typ(cln_att_sng); 
+	if(cln_att_sng) cln_att_sng=(char*)nco_free(cln_att_sng);  
+      }else{ /* endif record coordinate exists */
+	/* Record dimension, but not record coordinate, exists, which is fine. Reset return code. */
+	rcd=NC_NOERR;
+      } /* endif record coordinate exists */
+    } /* endif ncra, ncrcat */
+  } /* endif record dimension exists */
+  
+  if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
+    for(idx=0;idx<nbr_dmn_fl;idx++){
+      if(!strcmp(lmt_rec->nm,lmt_all_lst[idx]->dmn_nm)){
+        lmt_all_rec=lmt_all_lst[idx];
+	/* Can only have one record limit */
+        if(lmt_all_rec->lmt_dmn_nbr > 1L){
+	  (void)fprintf(stdout,"%s: Although this program allows multiple hyperslab limits for a single dimension, it allows only one unwrapped limit for the record dimension \"%s\". You have specified %i.\n",nco_prg_nm_get(),lmt_all_rec->dmn_nm,lmt_all_rec->lmt_dmn_nbr);
+	  nco_exit(EXIT_FAILURE);
+	} /* end if */
+        if(nco_prg_id==ncra || nco_prg_id==ncrcat){
+	  /* Change record dim in lmt_all_lst so that cnt=1 */
+	  lmt_all_lst[idx]->dmn_cnt=1L;
+	  lmt_all_lst[idx]->lmt_dmn[0]->srt=0L;
+	  lmt_all_lst[idx]->lmt_dmn[0]->end=0L;           
+	  lmt_all_lst[idx]->lmt_dmn[0]->cnt=1L;                   
+	  lmt_all_lst[idx]->lmt_dmn[0]->srd=1L;
+	} /* endif ncra || ncrcat */
+	break;
+      } /* endif current limit applies to record dimension */
+    } /* end loop over all dimensions */
+  } /* end if file has record dimension */
   
   /* Is this an ARM-format data file? */
   CNV_ARM=nco_cnv_arm_inq(in_id);
@@ -572,19 +658,19 @@ main(int argc,char **argv)
   if(CNV_ARM) base_time_srt=nco_cnv_arm_base_time_get(in_id);
   
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
   /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
   
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
   
 #ifdef ENABLE_MPI
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
@@ -596,7 +682,7 @@ main(int argc,char **argv)
     (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
     
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
     
     /* Copy global attributes */
     (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -618,7 +704,7 @@ main(int argc,char **argv)
     (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_xtr);
     
     /* Define variables in output file, copy their attributes */
-    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,xtr_nbr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
     
     /* Set chunksize parameters */
     if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
@@ -627,7 +713,13 @@ main(int argc,char **argv)
     (void)nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
     
     /* Take output file out of define mode */
-    (void)nco_enddef(out_id);
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
+
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
   
@@ -641,15 +733,16 @@ main(int argc,char **argv)
   /* Pre-processor token spaghetti here is necessary so that 
      1. UP/SMP/MPI codes all zero srt vectors before calling nco_var_val_cpy() 
      2. No codes zero srt vectors more than once */
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
   
 #ifdef ENABLE_MPI
   if(prc_rnk == rnk_mgr){ /* MPI manager code */
     TKN_WRT_FREE=False;
 #endif /* !ENABLE_MPI */
     /* Copy variable data for non-processed variables */
-    (void)nco_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix);
+    /* (void)nco_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix); */
+    (void)nco_msa_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix,lmt_all_lst,nbr_dmn_fl);
 #ifdef ENABLE_MPI
     /* Close output file so workers can open it */
     nco_close(out_id);
@@ -662,11 +755,11 @@ main(int argc,char **argv)
   
   /* Allocate and, if necesssary, initialize accumulation space for processed variables */
   for(idx=0;idx<nbr_var_prc;idx++){
-    if(prg == ncra || prg == ncrcat){
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){
       /* Allocate space for only one record */
       var_prc_out[idx]->sz=var_prc[idx]->sz=var_prc[idx]->sz_rec;
     } /* endif */
-    if(prg == ncra || prg == ncea){
+    if(nco_prg_id == ncra || nco_prg_id == ncfe){
       var_prc_out[idx]->tally=var_prc[idx]->tally=(long *)nco_malloc(var_prc_out[idx]->sz*sizeof(long int));
       (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
       var_prc_out[idx]->val.vp=(void *)nco_malloc(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type));
@@ -679,18 +772,18 @@ main(int argc,char **argv)
      Pass 1: Workers construct local persistant variable lists
      Open first file
      mpncra and mpncrcat process first record only
-     mpncea ingests complete file
+     mpnces ingests complete file
      Workers create local list of their variables 
      Pass 2: Complete record/file loops with local variable lists
      Workers skip first timestep (mpncra/mpncrcat) 
      Workers process only variables in their local list from Pass 1 
-     This variable persistance is necessary for mpncra and mpncea
+     This variable persistance is necessary for mpncra and mpnces
      since their workers must maintain running tallies for each variable.
      Variable persistance is not necessary for mpncrcat 
      However, we do it anyway to keep mpncrcat and mpncra similar
      mpncrcat writes records as it reads them and finishes after pass 2
      Pass 3: 
-     mpncea and mpncra require a final loop to normalize and write
+     mpnces and mpncra require a final loop to normalize and write
      Write-token for this loop is passed sequentially through the ranks */
   
   /* Begin Pass 1: Workers construct local persistant variable lists */
@@ -701,7 +794,7 @@ main(int argc,char **argv)
   
   /* Each file can have a different number of records to process
      NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  if(prg == ncra || prg == ncrcat) (void)nco_lmt_evl(in_id,lmt_rec,idx_rec_out,FORTRAN_IDX_CNV);
+  if(nco_prg_id == ncra || nco_prg_id == ncrcat) (void)nco_lmt_evl(in_id,lmt_rec,rec_usd_cml,FORTRAN_IDX_CNV);
   
   /* NB: nco_cnv_arm_base_time_get() with same nc_id contains OpenMP critical region */
   if(CNV_ARM) base_time_crr=nco_cnv_arm_base_time_get(in_id);
@@ -709,13 +802,13 @@ main(int argc,char **argv)
   /* Perform various error-checks on input file */
   if(False) (void)nco_fl_cmp_err_chk();
   
-  if(prg == ncra || prg == ncrcat){ /* ncea jumps to else branch */
+  if(nco_prg_id == ncra || nco_prg_id == ncrcat){ /* ncfe jumps to else branch */
     /* Loop over each record in current file */
-    if(dbg_lvl >= nco_dbg_std && lmt_rec->srt > lmt_rec->end) (void)fprintf(stdout,gettext("%s: WARNING %s (input file %d) is superfluous\n"),prg_nm_get(),fl_in,fl_idx);
+    if(nco_dbg_lvl >= nco_dbg_std && lmt_rec->srt > lmt_rec->end) (void)fprintf(stdout,gettext("%s: WARNING %s (input file %d) is superfluous\n"),nco_prg_nm_get(),fl_in,fl_idx);
     idx_rec=lmt_rec->srt;
     if(fl_idx == fl_nbr-1 && idx_rec >= 1L+lmt_rec->end-lmt_rec->srd) LAST_RECORD=True;
     /* Process all variables in first record */
-    if(dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,gettext("Record %ld of %s is input record %ld\n"),idx_rec,fl_in,idx_rec_out);
+    if(nco_dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,gettext("Record %ld of %s is output record %ld\n"),idx_rec,fl_in,rec_usd_cml);
     
     if(prc_rnk == rnk_mgr){ /* MPI manager code */
       /* Compensate for incrementing on each worker's first message */
@@ -734,7 +827,7 @@ main(int argc,char **argv)
 	if(msg_tag_typ == msg_tag_wrk_rqs){
 	  var_wrt_nbr++; /* [nbr] Number of variables written */
 	  /* Worker closed output file before sending msg_tag_wrk_rqs */
-	  if(prg == ncrcat) TKN_WRT_FREE=True; /* File written to at this point only for ncrcat */
+	  if(nco_prg_id == ncrcat) TKN_WRT_FREE=True; /* File written to at this point only for ncrcat */
 	  
 	  if(idx > nbr_var_prc-1){
 	    msg_bfr[0]=idx_all_wrk_ass; /* [enm] All variables already assigned */
@@ -749,7 +842,7 @@ main(int argc,char **argv)
 	    idx++;
 	  } /* endif idx */
 	  MPI_Send(msg_bfr,msg_bfr_lng,MPI_INT,rnk_wrk,msg_tag_wrk_rsp,MPI_COMM_WORLD);
-	}else if(msg_tag_typ == msg_tag_tkn_wrt_rqs && prg == ncrcat){ /* msg_tag_typ != msg_tag_wrk_rqs */
+	}else if(msg_tag_typ == msg_tag_tkn_wrt_rqs && nco_prg_id == ncrcat){ /* msg_tag_typ != msg_tag_wrk_rqs */
 	  /* Allocate token if free, else ask worker to try later */
 	  if(TKN_WRT_FREE){
 	    TKN_WRT_FREE=False;
@@ -781,8 +874,8 @@ main(int argc,char **argv)
 	  /* csz: got to here reading logic */
 	  lcl_nbr_var++;
           var_prc_out[idx]->id=msg_bfr[2];
-	  if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	  if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	  if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	  /* Update hyperslab start indices to current record for each variable */
 	  var_prc[idx]->srt[0]=idx_rec;
 	  var_prc[idx]->end[0]=idx_rec;
@@ -790,19 +883,19 @@ main(int argc,char **argv)
 	  /* Retrieve variable from disk into memory */
 	  /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
 	  (void)nco_var_get(in_id,var_prc[idx]);
-	  if(prg == ncra){
+	  if(nco_prg_id == ncra){
 	    /* Convert char, short, long, int types to doubles before arithmetic */
 	    /* Output variable type is "sticky" so only convert on first record */
-	    if(idx_rec_out == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
+	    if(rec_usd_cml == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
 	    /* Convert var_prc to type of var_prc_out in case type of variable on disk has changed */
 	    var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
 	    /* Perform arithmetic operations: avg, min, max, ttl, ... */
-	    nco_opr_drv(idx_rec_out,nco_op_typ,var_prc[idx],var_prc_out[idx]);
+	    nco_opr_drv(rec_usd_cml,nco_op_typ,var_prc[idx],var_prc_out[idx]);
 	  } /* !ncra */
 	  
 	  /* Append current record to output file */
-	  if(prg == ncrcat){
-	    var_prc_out[idx]->srt[0]=var_prc_out[idx]->end[0]=idx_rec_out;
+	  if(nco_prg_id == ncrcat){
+	    var_prc_out[idx]->srt[0]=var_prc_out[idx]->end[0]=rec_usd_cml;
 	    var_prc_out[idx]->cnt[0]=1L;
 	    /* Replace this time_offset value with time_offset from initial file base_time */
 	    if(CNV_ARM && !strcmp(var_prc[idx]->nm,"time_offset")) var_prc[idx]->val.dp[0]+=(base_time_crr-base_time_srt);
@@ -819,13 +912,14 @@ main(int argc,char **argv)
 	    
 	    /* Worker has token---prepare to write */
 	    if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-	      rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+	      if(RAM_OPEN) md_open=NC_WRITE|NC_SHARE|NC_DISKLESS; else md_open=NC_WRITE|NC_SHARE;
+	      rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
 	      /* Set chunksize parameters */
 	      if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 	      
 	      /* Turn off default filling behavior to enhance efficiency */
 	      nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-	      if(var_prc_out[idx]->sz_rec > 1) (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp,var_prc_out[idx]->type);
+	      if(var_prc_out[idx]->sz_rec > 1L) (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp,var_prc_out[idx]->type);
 	      else (void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc[idx]->val.vp,var_prc_out[idx]->type);
 	      /* Close output file and increment written counter */
 	      nco_close(out_id);
@@ -834,22 +928,22 @@ main(int argc,char **argv)
 	  } /* end if ncrcat */
 	  
 	  /* Make sure record coordinate, if any, is monotonic */
-	  if(prg == ncrcat && var_prc[idx]->is_crd_var) (void)rec_crd_chk(var_prc[idx],fl_in,fl_out,idx_rec,idx_rec_out);
+	  if(nco_prg_id == ncrcat && var_prc[idx]->is_crd_var) (void)rec_crd_chk(var_prc[idx],fl_in,fl_out,idx_rec,rec_usd_cml);
 	  /* Convert missing_value, if any, back to unpacked type */
 	  if(var_prc[idx]->has_mss_val && var_prc[idx]->type != var_prc[idx]->typ_upk && !LAST_RECORD)
 	    var_prc[idx]=nco_cnv_mss_val_typ(var_prc[idx],var_prc[idx]->typ_upk);
 	  /* Free current input buffer */
 	  var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
 	  
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
 	} /* !idx_all_wrk_ass */
       } /* while(1) loop requesting work/token in Worker */
-      idx_rec_out++; /* [idx] Index of current record in output file (0 is first, ...) */
+      rec_usd_cml++; /* [idx] Index of current record in output file (0 is first, ...) */
     } /* endif Worker */
     printf("DEBUG: End of first pass of ncra/ncrcat at node %d\n",prc_rnk);
     
     /* End of ncra, ncrcat section */
-  }else{ /* ncea */
+  }else{ /* ncfe */
     
     if(prc_rnk == rnk_mgr){ /* MPI manager code */
       /* Compensate for incrementing on each worker's first message */
@@ -868,7 +962,7 @@ main(int argc,char **argv)
 	if(msg_tag_typ == msg_tag_wrk_rqs){
 	  var_wrt_nbr++; /* [nbr] Number of variables written */
 	  /* Worker closed output file before sending msg_tag_wrk_rqs */
-	  /* TKN_WRT_FREE=True; ncea does not do file write here */
+	  /* TKN_WRT_FREE=True; ncfe does not do file write here */
 	  
 	  if(idx > nbr_var_prc-1){
 	    msg_bfr[0]=idx_all_wrk_ass; /* [enm] All variables already assigned */
@@ -898,8 +992,8 @@ main(int argc,char **argv)
 	  lcl_idx_lst[lcl_nbr_var]=idx; /* storing the indices for subsequent processing by the worker */
 	  lcl_nbr_var++;
 	  var_prc_out[idx]->id=msg_bfr[2];
-	  if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	  if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	  if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+	  if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	  /* Retrieve variable from disk into memory */
 	  /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
 	  (void)nco_var_get(in_id,var_prc[idx]);
@@ -910,7 +1004,7 @@ main(int argc,char **argv)
 	  if(fl_idx == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
 	  /* Convert var_prc to type of var_prc_out in case type of variable on disk has changed */
 	  var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
-	  /* Perform arithmetic operations: avg, min, max, ttl, ... */ /* Note: fl_idx not idx_rec_out! */
+	  /* Perform arithmetic operations: avg, min, max, ttl, ... */ /* Note: fl_idx not rec_usd_cml! */
 	  nco_opr_drv(fl_idx,nco_op_typ,var_prc[idx],var_prc_out[idx]);
 	  
 	  /* Free current input buffer */
@@ -918,9 +1012,9 @@ main(int argc,char **argv)
 	} /* !idx_all_wrk_ass */
       } /* while(1) loop requesting work/token in Worker */
     } /* endif Worker */
-  } /* end else ncea */
+  } /* end else ncfe */
   
-  if(dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"\n");
   
   /* Close input netCDF file */
   nco_close(in_id);
@@ -946,13 +1040,13 @@ main(int argc,char **argv)
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,(int *)NULL,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,gettext("\nInput file %d is %s; "),fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,gettext("\nInput file %d is %s; "),fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,gettext("local file %s:\n"),fl_in);
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,gettext("local file %s:\n"),fl_in);
     
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
     in_id=in_id_arr[0];
 #ifdef ENABLE_MPI
     printf("DEBUG: input file opened in prc_rnk %d inside the loop\n",prc_rnk);
@@ -963,7 +1057,7 @@ main(int argc,char **argv)
     
     /* Each file can have a different number of records to process
        NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-    if(prg == ncra || prg == ncrcat) (void)nco_lmt_evl(in_id,lmt_rec,idx_rec_out,FORTRAN_IDX_CNV);
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat) (void)nco_lmt_evl(in_id,lmt_rec,rec_usd_cml,FORTRAN_IDX_CNV);
     
     /* NB: nco_cnv_arm_base_time_get() with same nc_id contains OpenMP critical region */
     if(CNV_ARM) base_time_crr=nco_cnv_arm_base_time_get(in_id);
@@ -971,9 +1065,9 @@ main(int argc,char **argv)
     /* Perform various error-checks on input file */
     if(False) (void)nco_fl_cmp_err_chk();
     
-    if(prg == ncra || prg == ncrcat){ /* ncea jumps to else branch */
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){ /* ncfe jumps to else branch */
       /* Loop over each record in current file */
-      if(dbg_lvl >= nco_dbg_std && lmt_rec->srt > lmt_rec->end) (void)fprintf(stdout,gettext("%s: WARNING %s (input file %d) is superfluous\n"),prg_nm_get(),fl_in,fl_idx);
+      if(nco_dbg_lvl >= nco_dbg_std && lmt_rec->srt > lmt_rec->end) (void)fprintf(stdout,gettext("%s: WARNING %s (input file %d) is superfluous\n"),nco_prg_nm_get(),fl_in,fl_idx);
       for(idx_rec=lmt_rec->srt;idx_rec<=lmt_rec->end;idx_rec+=lmt_rec->srd){
 	if(fl_idx == fl_nbr-1 && idx_rec >= 1L+lmt_rec->end-lmt_rec->srd) LAST_RECORD=True;
 	
@@ -983,7 +1077,7 @@ main(int argc,char **argv)
 	  continue;
 	}else{ /* a loop of idx = stored indices */    
 	  if(prc_rnk == rnk_mgr){ /* For ncrcat, Manager gives write access for each record in each file */
-	    if(prg == ncrcat){ /* Give Write access to write current record */
+	    if(nco_prg_id == ncrcat){ /* Give Write access to write current record */
 	      /* var_wrt_nbr=-prc_nbr+1; */
 	      var_wrt_nbr=0;
 	      while(var_wrt_nbr < nbr_var_prc){ /* Give write access to Workers who have some variables; wrong condn? */
@@ -1020,7 +1114,7 @@ main(int argc,char **argv)
 	      idx=lcl_idx_lst[jdx];
 #endif /* !ENABLE_MPI */
 	      /* Process all variables in current record */
-	      if(dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,gettext("Record %ld of %s is input record %ld\n"),idx_rec,fl_in,idx_rec_out);
+	      if(nco_dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,gettext("Record %ld of %s is output record %ld\n"),idx_rec,fl_in,rec_usd_cml);
 #if 0
 	      /* NB: Immediately preceding MPI for scope confounds Emacs indentation
 		 Fake end scope restores correct indentation, simplifies code-checking */
@@ -1028,14 +1122,14 @@ main(int argc,char **argv)
 #endif /* !0 */
 #ifndef ENABLE_MPI
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(CNV_ARM,base_time_crr,base_time_srt,dbg_lvl,fl_in,fl_out,idx_rec,idx_rec_out,in_id_arr,LAST_RECORD,nbr_var_prc,nco_op_typ,out_id,prg,rcd,var_prc,var_prc_out)
+#pragma omp parallel for default(none) private(idx,in_id) shared(CNV_ARM,base_time_crr,base_time_srt,nco_dbg_lvl,fl_in,fl_out,idx_rec,rec_usd_cml,in_id_arr,LAST_RECORD,nbr_var_prc,nco_op_typ,out_id,prg,rcd,var_prc,var_prc_out)
 #endif /* !_OPENMP */
 	    /* UP and SMP codes main loop over variables */
 	    for(idx=0;idx<nbr_var_prc;idx++){
 #endif /* ENABLE_MPI */
 	      in_id=in_id_arr[omp_get_thread_num()];
-	      if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	      if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	      if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+	      if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	      /* Update hyperslab start indices to current record for each variable */
 	      var_prc[idx]->srt[0]=idx_rec;
 	      var_prc[idx]->end[0]=idx_rec;
@@ -1043,20 +1137,20 @@ main(int argc,char **argv)
 	      /* Retrieve variable from disk into memory */
 	      /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
 	      (void)nco_var_get(in_id,var_prc[idx]);
-	      if(prg == ncra){
+	      if(nco_prg_id == ncra){
 		/* Convert char, short, long, int types to doubles before arithmetic */
 		var_prc[idx]=nco_typ_cnv_rth(var_prc[idx],nco_op_typ);
 		/* Output variable type is "sticky" so only convert on first record */
-		if(idx_rec_out == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
+		if(rec_usd_cml == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
 		/* Convert var_prc to type of var_prc_out in case type of variable on disk has changed */
 		var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
 		/* Perform arithmetic operations: avg, min, max, ttl, ... */
-		nco_opr_drv(idx_rec_out,nco_op_typ,var_prc[idx],var_prc_out[idx]);
+		nco_opr_drv(rec_usd_cml,nco_op_typ,var_prc[idx],var_prc_out[idx]);
 	      } /* end if ncra */
 	      
 	      /* Append current record to output file */
-	      if(prg == ncrcat){
-		var_prc_out[idx]->srt[0]=var_prc_out[idx]->end[0]=idx_rec_out;
+	      if(nco_prg_id == ncrcat){
+		var_prc_out[idx]->srt[0]=var_prc_out[idx]->end[0]=rec_usd_cml;
 		var_prc_out[idx]->cnt[0]=1L;
 		/* Replace this time_offset value with time_offset from initial file base_time */
 		if(CNV_ARM && !strcmp(var_prc[idx]->nm,"time_offset")) var_prc[idx]->val.dp[0]+=(base_time_crr-base_time_srt);
@@ -1074,7 +1168,7 @@ main(int argc,char **argv)
 		
 		/* Worker has token---prepare to write */
 		if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-		  rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+		  rcd=nco_fl_open(fl_out_tmp,NC_WRITE|NC_SHARE,&bfr_sz_hnt,&out_id);
 		  /* Set chunksize parameters */
 		  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 		  
@@ -1095,7 +1189,7 @@ main(int argc,char **argv)
 #endif /* !ENABLE_MPI */
 	      } /* end if ncrcat */
 	      /* Make sure record coordinate, if any, is monotonic */
-	      if(prg == ncrcat && var_prc[idx]->is_crd_var) (void)rec_crd_chk(var_prc[idx],fl_in,fl_out,idx_rec,idx_rec_out);
+	      if(nco_prg_id == ncrcat && var_prc[idx]->is_crd_var) (void)rec_crd_chk(var_prc[idx],fl_in,fl_out,idx_rec,rec_usd_cml);
 	      /* Convert missing_value, if any, back to disk type */
 	      if(var_prc[idx]->has_mss_val && var_prc[idx]->type != var_prc[idx]->typ_upk && !LAST_RECORD)
 		var_prc[idx]=nco_cnv_mss_val_typ(var_prc[idx],var_prc[idx]->typ_upk);
@@ -1103,14 +1197,14 @@ main(int argc,char **argv)
 	      var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
 	    } /* end (OpenMP Parallel for) loop over variables */
 #ifdef ENABLE_MPI
-	    if(prg == ncrcat){
+	    if(nco_prg_id == ncrcat){
 	      /* Return token after writing record's last variable */
 	      wrk_id_bfr[0]=prc_rnk;
 	      MPI_Send(wrk_id_bfr,wrk_id_bfr_lng,MPI_INT,rnk_mgr,msg_tag_wrk_done,MPI_COMM_WORLD);
 	    } /* !ncrcat */
 #endif /* !ENABLE_MPI */
-	    idx_rec_out++; /* [idx] Index of current record in output file (0 is first, ...) */
-	    if(dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
+	    rec_usd_cml++; /* [idx] Index of current record in output file (0 is first, ...) */
+	    if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
 #ifdef ENABLE_MPI
 	  } /* !Worker */
 	} /* end else ! fl_idx=0,idx_rec=srt */
@@ -1123,11 +1217,11 @@ main(int argc,char **argv)
 	if(lmt_rec->lmt_typ == lmt_dmn_idx && lmt_rec->is_usr_spc_min && lmt_rec->is_usr_spc_max){
 	  long rec_nbr_rqs; /* Number of records user requested */
 	  rec_nbr_rqs=1L+(lmt_rec->max_idx-lmt_rec->min_idx)/lmt_rec->srd;
-	  if(dbg_lvl >= nco_dbg_std && fl_idx == fl_nbr-1 && rec_nbr_rqs != idx_rec_out) (void)fprintf(stdout,gettext("%s: WARNING User requested %li records but only %li were found\n"),prg_nm_get(),rec_nbr_rqs,idx_rec_out);
+	  if(nco_dbg_lvl >= nco_dbg_std && fl_idx == fl_nbr-1 && rec_nbr_rqs != rec_usd_cml) (void)fprintf(stdout,gettext("%s: WARNING User requested %li records but only %li were found\n"),nco_prg_nm_get(),rec_nbr_rqs,rec_usd_cml);
 	} /* end if */
 	/* Error if no records were read and final file has been processed */
-	if(idx_rec_out <= 0 && fl_idx == fl_nbr-1){
-	  (void)fprintf(stdout,gettext("%s: ERROR No records lay within specified hyperslab\n"),prg_nm_get());
+	if(rec_usd_cml <= 0 && fl_idx == fl_nbr-1){
+	  (void)fprintf(stdout,gettext("%s: ERROR No records lay within specified hyperslab\n"),nco_prg_nm_get());
 	  nco_exit(EXIT_FAILURE);
 	} /* end if */
 #ifdef ENABLE_MPI
@@ -1135,9 +1229,9 @@ main(int argc,char **argv)
       printf("DEBUG: prc_rnk %d at the end of ncra/rcat\n",prc_rnk);
 #endif /* !ENABLE_MPI */
       /* End of ncra, ncrcat section */
-    }else{ /* ncea */
+    }else{ /* ncfe */
 #ifdef ENABLE_MPI
-      if(prc_rnk != rnk_mgr){ /* Only Worker does the ncea processing */
+      if(prc_rnk != rnk_mgr){ /* Only Worker does the ncfe processing */
 	if(fl_idx == 0){
 	  continue;
 	}else{ /* a loop of idx = stored indices */
@@ -1145,13 +1239,13 @@ main(int argc,char **argv)
 	    idx=lcl_idx_lst[jdx];
 #else /* !ENABLE_MPI */
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(dbg_lvl,fl_idx,in_id_arr,nbr_var_prc,nco_op_typ,rcd,var_prc,var_prc_out)
+#pragma omp parallel for default(none) private(idx,in_id) shared(nco_dbg_lvl,fl_idx,in_id_arr,nbr_var_prc,nco_op_typ,rcd,var_prc,var_prc_out)
 #endif /* !_OPENMP */
 	    for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
 #endif /* !ENABLE_MPI */	
 	      in_id=in_id_arr[omp_get_thread_num()];
-	      if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	      if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	      if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+	      if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	      /* Retrieve variable from disk into memory */
 	      /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
 	      (void)nco_var_get(in_id,var_prc[idx]);
@@ -1162,7 +1256,7 @@ main(int argc,char **argv)
 	      if(fl_idx == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
 	      /* Convert var_prc to type of var_prc_out in case type of variable on disk has changed */
 	      var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
-	      /* Perform arithmetic operations: avg, min, max, ttl, ... */ /* Note: fl_idx not idx_rec_out! */
+	      /* Perform arithmetic operations: avg, min, max, ttl, ... */ /* Note: fl_idx not rec_usd_cml! */
 	      nco_opr_drv(fl_idx,nco_op_typ,var_prc[idx],var_prc_out[idx]);
 	      
 	      /* Free current input buffer */
@@ -1172,21 +1266,21 @@ main(int argc,char **argv)
 	  } /* end else !fl_idx=0 */
 	} /* !Worker */
 #endif /* !ENABLE_MPI */
-      } /* end else ncea */
+      } /* end else ncfe */
       
-      if(dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"\n");
+      if(nco_dbg_lvl > nco_dbg_scl) (void)fprintf(stderr,"\n");
       
       /* Close input netCDF file */
       for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
       
       /* Dispose local copy of file */
-      if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+      if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
     } /* end loop over fl_idx */
 #ifdef ENABLE_MPI
     printf("DEBUG: prc_rnk %d is out of file idx loop\n",prc_rnk); 
 #endif /* !ENABLE_MPI */
     /* Normalize, multiply, etc where necessary */
-    if(prg == ncra || prg == ncea){
+    if(nco_prg_id == ncra || nco_prg_id == ncfe){
 #ifdef ENABLE_MPI
       if(prc_rnk != rnk_mgr){ /* Only workers have indices of variables to process */
 	for(jdx=0;jdx<lcl_nbr_var;jdx++){
@@ -1221,7 +1315,8 @@ main(int argc,char **argv)
 	    break;
 	  case nco_op_min: /* Minimum is already in buffer, do nothing */
 	  case nco_op_max: /* Maximum is already in buffer, do nothing */
-	  case nco_op_ttl: /* Total is already in buffer, do nothing */
+	  case nco_op_ttl: /* Total is already in buffer, stuff missing values into elements with zero tally */
+	    (void)nco_var_tll_zro_mss_val(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
 	  default:
 	    break;
 	  } /* end switch */
@@ -1252,15 +1347,15 @@ main(int argc,char **argv)
     }
     printf("DEBUG: Mgr shud prnt this too, prc_rnk %d\n",prc_rnk);
 #endif /* !ENABLE_MPI */
-  } /* !ncra/ncea */
+  } /* !ncra/ncfe */
 #ifdef ENABLE_MPI
   printf("DEBUG: After all processing; Before barrier, prc_rnk %d\n",prc_rnk);
   if(prc_rnk == rnk_mgr){ /* Only Manager */
-    rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+    rcd=nco_fl_open(fl_out_tmp,NC_WRITE|NC_SHARE,&bfr_sz_hnt,&out_id);
     printf("DEBUG: prc_rnk %d opened out file\n",prc_rnk);
 #endif /* !ENABLE_MPI */
     /* Manually fix YYMMDD date which was mangled by averaging */
-    if(CNV_CCM_CCSM_CF && prg == ncra) (void)nco_cnv_ccm_ccsm_cf_date(out_id,var_out,nbr_xtr);
+    if(CNV_CCM_CCSM_CF && nco_prg_id == ncra) (void)nco_cnv_ccm_ccsm_cf_date(out_id,var_out,xtr_nbr);
     
     /* End Pass 2: Complete record/file loops with local variable lists */
     /* Begin Pass 3:  */
@@ -1268,7 +1363,7 @@ main(int argc,char **argv)
     
     /* Add time variable to output file
        NB: nco_cnv_arm_time_install() contains OpenMP critical region */
-    if(CNV_ARM && prg == ncrcat) (void)nco_cnv_arm_time_install(out_id,base_time_srt,dfl_lvl);
+    if(CNV_ARM && nco_prg_id == ncrcat) (void)nco_cnv_arm_time_install(out_id,base_time_srt,dfl_lvl);
 #ifdef ENABLE_MPI
     nco_close(out_id); 
     printf("DEBUG: Mgr prc_rnk %d closed out file %d after fixing date, time \n", prc_rnk, out_id);
@@ -1278,9 +1373,9 @@ main(int argc,char **argv)
     printf("DEBUG: prc_rnk %d waiting for msg from Mgr for final write\n",prc_rnk);
     MPI_Recv(msg_bfr,msg_bfr_lng,MPI_INT,prc_rnk-1,msg_tag_tkn_wrt_rsp,MPI_COMM_WORLD,&mpi_stt);
     printf("DEBUG: prc_rnk %d got token for final write to %d\n",prc_rnk, out_id);
-    if(prg == ncra || prg == ncea){
+    if(nco_prg_id == ncra || nco_prg_id == ncfe){
       /* Copy averages to output file and free averaging buffers */
-      rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE,&out_id);
+      rcd=nco_fl_open(fl_out_tmp,NC_WRITE|NC_SHARE,&bfr_sz_hnt,&out_id);
       printf("DEBUG: prc_rnk %d opened output file for final write\n",prc_rnk);
       for(jdx=0;jdx<lcl_nbr_var;jdx++){
 	idx=lcl_idx_lst[jdx];
@@ -1295,7 +1390,7 @@ main(int argc,char **argv)
 	  (void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
 	}else{ /* end if variable is scalar */
 	  /* Size of record dimension is one in output file */
-	  if(prg == ncra) var_prc_out[idx]->cnt[0]=1L;
+	  if(nco_prg_id == ncra) var_prc_out[idx]->cnt[0]=1L;
 	  (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
 	} /* end if variable is an array */
 	var_prc_out[idx]->val.vp=nco_free(var_prc_out[idx]->val.vp);
@@ -1316,7 +1411,7 @@ main(int argc,char **argv)
   
 #else /* !ENABLE_MPI */
   /* Copy averages to output file and free averaging buffers */
-  if(prg == ncra || prg == ncea){
+  if(nco_prg_id == ncra || nco_prg_id == ncfe){
     for(idx=0;idx<nbr_var_prc;idx++){
       /* Revert any arithmetic promotion but leave unpacked (for now) */
       var_prc_out[idx]=nco_var_cnf_typ(var_prc_out[idx]->typ_upk,var_prc_out[idx]);
@@ -1326,7 +1421,7 @@ main(int argc,char **argv)
 	(void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
       }else{ /* end if variable is scalar */
 	/* Size of record dimension is 1 in output file */
-	if(prg == ncra) var_prc_out[idx]->cnt[0]=1L;
+	if(nco_prg_id == ncra) var_prc_out[idx]->cnt[0]=1L;
 	(void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
       } /* end if variable is an array */
       var_prc_out[idx]->val.vp=nco_free(var_prc_out[idx]->val.vp);
@@ -1341,13 +1436,13 @@ main(int argc,char **argv)
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncra-specific memory cleanup */
-    if(prg == ncra || prg == ncrcat) lmt_rec=nco_lmt_free(lmt_rec);
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat) lmt_rec=nco_lmt_free(lmt_rec);
     
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -1370,8 +1465,8 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr);
 #if 1
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
@@ -1379,7 +1474,7 @@ main(int argc,char **argv)
 #endif /* !1 */
 #if 0
     /* 20051027: Try ncwa free()'ing technique to avoid freeing dangling pointers */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr); 
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr); 
     /* ncwa uses nco_var_lst_free() on var_prc_out because var_out has dangling pointers */
     if(nbr_var_fix > 0) var_fix_out=nco_var_lst_free(var_fix_out,nbr_var_fix);
     if(nbr_var_prc > 0) var_prc_out=nco_var_lst_free(var_prc_out,nbr_var_prc);
diff --git a/src/nco/mpncwa.c b/src/nco/mpncwa.c
index c035717..d49bde2 100644
--- a/src/nco/mpncwa.c
+++ b/src/nco/mpncwa.c
@@ -1,11 +1,11 @@
-/* $Header: /cvsroot/nco/nco/src/nco/mpncwa.c,v 1.115 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/mpncwa.c,v 1.138 2013/11/06 17:51:13 zender Exp $ */
 
 /* mpncwa -- netCDF weighted averager */
 
 /* Purpose: Compute averages of specified hyperslabs of specfied variables
    in a single input netCDF file and output them to a single file. */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -46,10 +46,10 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#include <unistd.h> /* POSIX stuff */
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -85,7 +85,7 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
@@ -96,8 +96,11 @@ main(int argc,char **argv)
   nco_bool NORMALIZE_BY_TALLY=True; /* Not currently implemented */
   nco_bool NORMALIZE_BY_WEIGHT=True; /* Not currently implemented */
   nco_bool NRM_BY_DNM=True; /* Option N Normalize by denominator */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
   nco_bool WGT_MSK_CRD_VAR=True; /* [flg] Weight and/or mask coordinate variables */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
   nco_bool flg_ddra=False; /* [flg] DDRA diagnostics */
   nco_bool flg_opt_a=False; /* Option a */
@@ -122,12 +125,12 @@ main(int argc,char **argv)
   char *nco_op_typ_sng; /* Operation type */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   char *wgt_nm=NULL;
 
-  const char * const CVS_Id="$Id: mpncwa.c,v 1.115 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.115 $";
-  const char * const opt_sht_lst="346Aa:B:bCcD:d:FhIL:l:M:m:nNOo:p:rRST:t:v:Ww:xy:-:";
+  const char * const CVS_Id="$Id: mpncwa.c,v 1.138 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.138 $";
+  const char * const opt_sht_lst="3467Aa:B:bCcD:d:FhIL:l:M:m:nNOo:p:rRST:t:v:Ww:xy:-:";
   
   cnk_sct **cnk=NULL_CEWI;
   
@@ -169,13 +172,14 @@ main(int argc,char **argv)
   int idx_avg;
   int in_id;
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
   int nbr_dmn_out=0;
   int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int nco_op_typ=nco_op_avg; /* Operation type */
   int op_typ_rlt=0; /* Option o */
   int opt;
@@ -194,7 +198,9 @@ main(int argc,char **argv)
   
   prs_sct prs_arg;  /* I/O [sct] Global information required in ncwa parser */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   
   var_sct **var;
   var_sct **var_fix;
@@ -236,10 +242,18 @@ main(int argc,char **argv)
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"ddra",no_argument,0,0}, /* [flg] DDRA diagnostics */
       {"mdl_cmp",no_argument,0,0}, /* [flg] DDRA diagnostics */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -247,12 +261,15 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"average",required_argument,0,'a'},
       {"avg",required_argument,0,'a'},
       {"append",no_argument,0,'A'},
@@ -265,7 +282,7 @@ main(int argc,char **argv)
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
@@ -313,6 +330,7 @@ main(int argc,char **argv)
       {"operation",required_argument,0,'y'},
       {"op_typ",required_argument,0,'y'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -333,8 +351,8 @@ main(int argc,char **argv)
   NORMALIZE_BY_TALLY=NORMALIZE_BY_TALLY; /* CEWI: Avert compiler warning that variable is set but never used */
   NORMALIZE_BY_WEIGHT=NORMALIZE_BY_WEIGHT; /* CEWI: Avert compiler warning that variable is set but never used */
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -346,6 +364,10 @@ main(int argc,char **argv)
     
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -369,10 +391,18 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"ddra") || !strcmp(opt_crr,"mdl_cmp")) ddra_info.flg_ddra=flg_ddra=True; /* [flg] DDRA diagnostics */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -387,13 +417,16 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
     case 'a': /* Dimensions over which to average hyperslab */
       if(flg_opt_a){
-	(void)fprintf(fp_stdout,"%s: ERROR Option -a appears more than once\n",prg_nm);
-	(void)fprintf(fp_stdout,"%s: HINT Use -a dim1,dim2,... not -a dim1 -a dim2 ...\n",prg_nm);
+	(void)fprintf(fp_stdout,"%s: ERROR Option -a appears more than once\n",nco_prg_nm);
+	(void)fprintf(fp_stdout,"%s: HINT Use -a dim1,dim2,... not -a dim1 -a dim2 ...\n",nco_prg_nm);
 	(void)nco_usg_prn();
 	nco_exit(EXIT_FAILURE);
       } /* endif */
@@ -413,7 +446,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -450,7 +483,7 @@ main(int argc,char **argv)
       break;
     case 'n':
       NORMALIZE_BY_WEIGHT=False;
-      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",prg_nm);
+      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
       break;
     case 'O': /* Toggle FORCE_OVERWRITE */
@@ -463,7 +496,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -474,7 +507,7 @@ main(int argc,char **argv)
       break;
 #ifdef ENABLE_MPI
     case 'S': /* Suspend with signal handler to facilitate debugging */
-      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",prg_nm);
+      if(signal(SIGUSR1,nco_cnt_run) == SIG_ERR) (void)fprintf(fp_stdout,"%s: ERROR Could not install suspend handler.\n",nco_prg_nm);
       while(!nco_spn_lck_brk) usleep(nco_spn_lck_us); /* Spinlock. fxm: should probably insert a sched_yield */
       break;
 #endif /* !ENABLE_MPI */
@@ -488,14 +521,14 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'W':
       NORMALIZE_BY_TALLY=False;
-      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",prg_nm);
+      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
       break;
     case 'w': /* Variable to use as weight in reducing.  Default is none */
@@ -513,10 +546,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -569,38 +603,39 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
   
   /* Get number of variables, dimensions, and record dimension ID of input file */
   (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id);
   (void)nco_inq_format(in_id,&fl_in_fmt);
   
   /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
+  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&xtr_nbr);
   
   /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&xtr_nbr);
   
   /* Is this a CCM/CCSM/CF-format history tape? */
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
   
   /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&xtr_nbr,CNV_CCM_CCSM_CF);
   
   /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
   
   /* Find coordinate/dimension values associated with user-specified limits
      NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
   for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
   
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
+  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,xtr_nbr,&nbr_dmn_xtr);
   
   /* Fill-in dimension structure for all extracted dimensions */
   dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
@@ -616,14 +651,14 @@ main(int argc,char **argv)
     for(idx=0;idx<dmn_avg_nbr;idx++){
       dmn_avg_lst_in[idx]=(char *)strdup(dmn_lst[idx].nm);
     } /* end loop over idx */
-    (void)fprintf(stderr,"%s: INFO No dimensions specified with -a, therefore reducing (averaging, taking minimum, etc.) over all dimensions\n",prg_nm);
+    (void)fprintf(stderr,"%s: INFO No dimensions specified with -a, therefore reducing (averaging, taking minimum, etc.) over all dimensions\n",nco_prg_nm);
   } /* end if dmn_avg_nbr == 0 */
   /* Dimension list no longer needed */
   dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
   
   if(dmn_avg_nbr > 0){
     if(dmn_avg_nbr > nbr_dmn_xtr){
-      (void)fprintf(fp_stdout,"%s: ERROR More reducing dimensions than extracted dimensions\n",prg_nm);
+      (void)fprintf(fp_stdout,"%s: ERROR More reducing dimensions than extracted dimensions\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
     } /* end if */
     
@@ -641,7 +676,7 @@ main(int argc,char **argv)
       if(idx != nbr_dmn_xtr){
 	dmn_avg[idx_avg]=dim[idx];
       }else{
-	(void)fprintf(stderr,"%s: WARNING reducing dimension \"%s\" is not contained in any variable in extraction list\n",prg_nm,dmn_avg_lst[idx_avg].nm);
+	(void)fprintf(stderr,"%s: WARNING reducing dimension \"%s\" is not contained in any variable in extraction list\n",nco_prg_nm,dmn_avg_lst[idx_avg].nm);
 	/* Collapse dimension average list by omitting irrelevent dimension */
 	(void)memmove(dmn_avg_lst+idx_avg*sizeof(nm_id_sct),dmn_avg_lst+(idx_avg+1)*sizeof(nm_id_sct),(dmn_avg_nbr-idx_avg-1)*sizeof(nm_id_sct));
 	--dmn_avg_nbr;
@@ -655,7 +690,7 @@ main(int argc,char **argv)
       for(idx_avg=0;idx_avg<dmn_avg_nbr;idx_avg++){
 	if(idx_avg != idx){
 	  if(dmn_avg[idx]->id == dmn_avg[idx_avg]->id){
-	    (void)fprintf(fp_stdout,"%s: ERROR %s specified more than once in reducing list\n",prg_nm,dmn_avg[idx]->nm);
+	    (void)fprintf(fp_stdout,"%s: ERROR %s specified more than once in reducing list\n",nco_prg_nm,dmn_avg[idx]->nm);
 	    nco_exit(EXIT_FAILURE);
 	  } /* end if */
 	} /* end if */
@@ -685,30 +720,30 @@ main(int argc,char **argv)
     dmn_avg_lst=nco_nm_id_lst_free(dmn_avg_lst,dmn_avg_nbr);
     
     if(nbr_dmn_out != (flg_rdd ? nbr_dmn_xtr : nbr_dmn_xtr-dmn_avg_nbr)){
-      (void)fprintf(fp_stdout,"%s: ERROR nbr_dmn_out != %s\n",prg_nm,(flg_rdd) ? "nbr_dmn_xtr" : "nbr_dmn_xtr-dmn_avg_nbr");
+      (void)fprintf(fp_stdout,"%s: ERROR nbr_dmn_out != %s\n",nco_prg_nm,(flg_rdd) ? "nbr_dmn_xtr" : "nbr_dmn_xtr-dmn_avg_nbr");
       nco_exit(EXIT_FAILURE);
     } /* end if */
     
   } /* dmn_avg_nbr <= 0 */
   
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
   } /* end loop over idx */
   /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
   
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,dmn_avg,dmn_avg_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,dmn_avg,dmn_avg_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
   
   /* We now have final list of variables to extract. Phew. */
-  if(dbg_lvl >= nco_dbg_var){
-    for(idx=0;idx<nbr_xtr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
+  if(nco_dbg_lvl >= nco_dbg_var){
+    for(idx=0;idx<xtr_nbr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
     for(idx=0;idx<nbr_var_fix;idx++) (void)fprintf(stderr,"var_fix[%d]->nm = %s, ->id=[%d]\n",idx,var_fix[idx]->nm,var_fix[idx]->id);
     for(idx=0;idx<nbr_var_prc;idx++) (void)fprintf(stderr,"var_prc[%d]->nm = %s, ->id=[%d]\n",idx,var_prc[idx]->nm,var_prc[idx]->id);
   } /* end if */
@@ -723,8 +758,8 @@ main(int argc,char **argv)
     (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
     
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-    if(dbg_lvl >= nco_dbg_sbr) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
+    if(nco_dbg_lvl >= nco_dbg_sbr) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
     
     /* Copy all global attributes */
     (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -743,7 +778,7 @@ main(int argc,char **argv)
     (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_out);
     
     /* Define variables in output file, copy their attributes */
-    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,dmn_out,nbr_dmn_out,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+    (void)nco_var_dfn(in_id,fl_out,out_id,var_out,xtr_nbr,dmn_out,nbr_dmn_out,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
     
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
@@ -775,7 +810,12 @@ main(int argc,char **argv)
     nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
     
     /* Take output file out of define mode */
-    (void)nco_enddef(out_id);
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
     
 #ifdef ENABLE_MPI
   } /* prc_rnk != rnk_mgr */
@@ -798,8 +838,8 @@ main(int argc,char **argv)
   } /* prc_rnk != rnk_mgr */
 #endif /* !ENABLE_MPI */
   
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
   
   /* Close first input netCDF file */
   nco_close(in_id);
@@ -808,13 +848,13 @@ main(int argc,char **argv)
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\nInput file %d is %s; ",fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in);
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"local file %s:\n",fl_in);
     
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
     in_id=in_id_arr[0];
     
     /* Perform various error-checks on input file */
@@ -920,36 +960,36 @@ main(int argc,char **argv)
 	     firstprivate(): msk_out and wgt_out must be NULL on first call to nco_var_cnf_dmn()
 	     shared(): msk and wgt are not altered within loop
 	     private(): wgt_avg does not need initialization */
-#pragma omp parallel for default(none) firstprivate(DO_CONFORM_MSK,DO_CONFORM_WGT,ddra_info,msk_out,wgt_out) private(idx,in_id,wgt_avg) shared(MULTIPLY_BY_TALLY,MUST_CONFORM,NRM_BY_DNM,WGT_MSK_CRD_VAR,dbg_lvl,dmn_avg,dmn_avg_nbr,flg_ddra,flg_rdd,in_id_arr,msk,msk_nm,msk_val,nbr_var_prc,nco_op_typ,op_typ_rlt,out_id,prg_nm,rcd,var_prc,var_prc_out,wgt,wgt_nm)
+#pragma omp parallel for default(none) firstprivate(DO_CONFORM_MSK,DO_CONFORM_WGT,ddra_info,msk_out,wgt_out) private(idx,in_id,wgt_avg) shared(MULTIPLY_BY_TALLY,MUST_CONFORM,NRM_BY_DNM,WGT_MSK_CRD_VAR,nco_dbg_lvl,dmn_avg,dmn_avg_nbr,flg_ddra,flg_rdd,in_id_arr,msk,msk_nm,msk_val,nbr_var_prc,nco_op_typ,op_typ_rlt,out_id,nco_prg_nm,rcd,var_prc,var_prc_out,wgt,wgt_nm)
 #endif /* !_OPENMP */
 	  /* UP and SMP codes main loop over variables */
 	  for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
 #endif /* !ENABLE_MPI */
 	    in_id=in_id_arr[omp_get_thread_num()];
-	    if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	    if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+	    if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+	    if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 	    
 	    /* Allocate and, if necessary, initialize accumulation space for all processed variables */
 	    var_prc_out[idx]->sz=var_prc[idx]->sz;
 	    /*      if((var_prc_out[idx]->tally=var_prc[idx]->tally=(long *)nco_malloc_flg(var_prc_out[idx]->sz*sizeof(long int))) == NULL){*/
 	    /* fxm: verify that var_prc->tally is not needed */
 	    if((var_prc_out[idx]->tally=(long *)nco_malloc_flg(var_prc_out[idx]->sz*sizeof(long int))) == NULL){
-	      (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%ld bytes for tally buffer for variable %s in main()\n",prg_nm_get(),var_prc_out[idx]->sz,(long int)sizeof(long int),var_prc_out[idx]->nm);
+	      (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%ld bytes for tally buffer for variable %s in main()\n",nco_prg_nm_get(),var_prc_out[idx]->sz,(long int)sizeof(long int),var_prc_out[idx]->nm);
 	      nco_exit(EXIT_FAILURE); 
 	    } /* end if err */
 	    (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
 	    if((var_prc_out[idx]->val.vp=(void *)nco_malloc_flg(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type))) == NULL){
-	      (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
+	      (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",nco_prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
 	      nco_exit(EXIT_FAILURE); 
 	    } /* end if err */
 	    (void)nco_var_zero(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->val);
 	    
 	    (void)nco_var_mtd_refresh(in_id,var_prc[idx]);
 	    /* Retrieve variable from disk into memory */
-	    if(False) (void)fprintf(fp_stdout,"%s: DEBUG: fxm TODO nco354 About to nco_var_get() %s\n",prg_nm,var_prc[idx]->nm);
+	    if(False) (void)fprintf(fp_stdout,"%s: DEBUG: fxm TODO nco354 About to nco_var_get() %s\n",nco_prg_nm,var_prc[idx]->nm);
 	    /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
 	    (void)nco_var_get(in_id,var_prc[idx]);
-	    if(False) (void)fprintf(fp_stdout,"%s: DEBUG: fxm TODO nco354 Finished nco_var_get() %s\n",prg_nm,var_prc[idx]->nm);
+	    if(False) (void)fprintf(fp_stdout,"%s: DEBUG: fxm TODO nco354 Finished nco_var_get() %s\n",nco_prg_nm,var_prc[idx]->nm);
 	    
 	    /* Convert char, short, long, int types to doubles before arithmetic */
 	    var_prc[idx]=nco_typ_cnv_rth(var_prc[idx],nco_op_typ);
@@ -1059,7 +1099,7 @@ main(int argc,char **argv)
 		 tally array into wgt_avg. See related note about this above. TODO #114.*/
 	      if(wgt_avg->sz > 0)
 		if((wgt_avg->tally=(long *)nco_realloc(wgt_avg->tally,wgt_avg->sz*sizeof(long int))) == NULL){
-		  (void)fprintf(fp_stdout,"%s: ERROR Unable to realloc() %ld*%ld bytes for tally buffer for weight %s in main()\n",prg_nm_get(),wgt_avg->sz,(long int)sizeof(long int),wgt_avg->nm);
+		  (void)fprintf(fp_stdout,"%s: ERROR Unable to realloc() %ld*%ld bytes for tally buffer for weight %s in main()\n",nco_prg_nm_get(),wgt_avg->sz,(long int)sizeof(long int),wgt_avg->nm);
 		  nco_exit(EXIT_FAILURE); 
 		} /* end if */
 	      /* Average weight over specified dimensions (tally array is set here) */
@@ -1106,7 +1146,7 @@ main(int argc,char **argv)
 		case nco_op_ttl: /* Total is already in buffer, do nothing */	
 		  break;
 		default:
-		  (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in non-weighted normalization\n",prg_nm);
+		  (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in non-weighted normalization\n",nco_prg_nm);
 		  nco_exit(EXIT_FAILURE);
 		  break;
 		} /* end switch */
@@ -1115,7 +1155,7 @@ main(int argc,char **argv)
 	      /* Normalization has been turned off by user, we are done */
 	      ;
 	    }else{
-	      (void)fprintf(fp_stdout,"%s: ERROR Unforeseen logical branch in main()\n",prg_nm);
+	      (void)fprintf(fp_stdout,"%s: ERROR Unforeseen logical branch in main()\n",nco_prg_nm);
 	      nco_exit(EXIT_FAILURE);
 	    } /* end if */
 	    /* Some non-linear operations require additional processing */
@@ -1152,7 +1192,8 @@ main(int argc,char **argv)
 	    
 	    /* Worker has token---prepare to write */
 	    if(tkn_wrt_rsp == tkn_wrt_rqs_xcp){
-	      rcd=nco_open(fl_out_tmp,NC_WRITE|NC_SHARE|NC_SHARE,&out_id);
+	      if(RAM_OPEN) md_open=NC_WRITE|NC_SHARE|NC_DISKLESS; else md_open=NC_WRITE|NC_SHARE;
+	      rcd=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt,&out_id);
 	      /* Set chunksize parameters */
 	      if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 	      
@@ -1213,7 +1254,7 @@ main(int argc,char **argv)
     }  /* end (OpenMP parallel for) loop over idx */
 #endif /* !ENABLE_MPI */
     
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
     
     /* Close input netCDF file */
     for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
@@ -1227,7 +1268,7 @@ main(int argc,char **argv)
       (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
 #endif /* end !ENABLE_MPI */
     /* Remove local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+    if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
     
   } /* end loop over fl_idx */
   
@@ -1247,8 +1288,8 @@ main(int argc,char **argv)
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -1270,7 +1311,7 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr);
     if(nbr_dmn_out > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_out);
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr); 
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr); 
     /* ncwa uses nco_var_lst_free() on var_prc_out because var_out has dangling pointers */
     if(nbr_var_fix > 0) var_fix_out=nco_var_lst_free(var_fix_out,nbr_var_fix);
     if(nbr_var_prc > 0) var_prc_out=nco_var_lst_free(var_prc_out,nbr_var_prc);
diff --git a/src/nco/ncap.c b/src/nco/ncap.c
index 12a37c9..0034ca7 100644
--- a/src/nco/ncap.c
+++ b/src/nco/ncap.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncap.c,v 1.250 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncap.c,v 1.277 2013/11/06 17:51:13 zender Exp $ */
 
 /* ncap -- netCDF arithmetic processor */
 
 /* Purpose: Compute user-defined derived fields using forward algebraic notation applied to netCDF files */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -44,10 +44,10 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#include <unistd.h> /* POSIX stuff */
 /* GNU getopt() is independent system header on FREEBSD, LINUX, LINUXALPHA, LINUXAMD, LINUXARM, WIN32
    AT&T getopt() is in unistd.h or stdlib.h on AIX, CRAY, NECSX, SUNMP, SUN4SOL2
    fxm: Unsure what ALPHA and SGI do */
@@ -59,9 +59,6 @@
 # endif /* !HAVE_GETOPT_H */ 
 #endif /* HAVE_GETOPT_LONG */
 
-/* 3rd party vendors */
-#include <netcdf.h> /* netCDF definitions and C library */
-#include "nco_netcdf.h"  /* NCO wrappers for libnetcdf.a */
 
 /* Personal headers */
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
@@ -96,7 +93,7 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
@@ -104,7 +101,10 @@ main(int argc,char **argv)
   nco_bool HISTORY_APPEND=True; /* Option h */
   nco_bool PRN_FNC_TBL=False; /* Option f */  
   nco_bool PROCESS_ALL_VARS=True; /* Option v */  
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
 
   char **fl_lst_abb=NULL; /* Option n */
@@ -126,11 +126,11 @@ main(int argc,char **argv)
   char *spt_arg[NCAP_SPT_NBR_MAX]; /* fxm: Arbitrary size, should be dynamic */
   char *spt_arg_cat=NULL; /* [sng] User-specified script */
 
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
-  const char * const CVS_Id="$Id: ncap.c,v 1.250 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.250 $";
-  const char * const opt_sht_lst="346ACcD:FfhL:l:n:Oo:p:Rrs:S:vx-:"; /* [sng] Single letter command line options */
+  const char * const CVS_Id="$Id: ncap.c,v 1.277 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.277 $";
+  const char * const opt_sht_lst="3467ACcD:FfhL:l:n:Oo:p:Rrs:S:vx-:"; /* [sng] Single letter command line options */
 
   cnk_sct **cnk=NULL_CEWI;
 
@@ -203,6 +203,7 @@ main(int argc,char **argv)
   int in_id;  
   int jdx;
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_att=0; /* [nbr] Number of attributes in script */
   int nbr_dmn_ass=int_CEWI;/* Number of dimensions in temporary list */
   int nbr_dmn_in=int_CEWI; /* Number of dimensions in dim_in */
@@ -213,7 +214,7 @@ main(int argc,char **argv)
   int nbr_var_fl;/* number of vars in a file */
   int nbr_var_prc; /* nbr_var_prc gets incremented */
   int nbr_var_ycc=0; /* [nbr] Number of vars to be defined after 1st parse */
-  int nbr_xtr=0; /* nbr_xtr will not otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr will not otherwise be set for -c with no -v */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
@@ -229,7 +230,9 @@ main(int argc,char **argv)
   nm_id_sct *xtr_lst=NULL; /* Non-processed variables to copy to OUTPUT */
   nm_id_sct *xtr_lst_a=NULL; /* Initialize to ALL variables in OUTPUT file */
   
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
   size_t sng_lng;
   size_t spt_arg_lng=size_t_CEWI;
   
@@ -254,10 +257,21 @@ main(int argc,char **argv)
       {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+      {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+      {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -265,19 +279,22 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"fnc_tbl",no_argument,0,'f'},
       {"prn_fnc_tbl",no_argument,0,'f'},
       {"ftn",no_argument,0,'F'},
@@ -306,6 +323,7 @@ main(int argc,char **argv)
       {"exclude",no_argument,0,'x'},
       {"xcl",no_argument,0,'x'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -316,8 +334,8 @@ main(int argc,char **argv)
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -329,6 +347,10 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+	bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
 	/* Copy limit argument for later processing */
 	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
@@ -351,10 +373,20 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
 	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
 	nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -369,6 +401,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -379,7 +414,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -404,10 +439,10 @@ main(int argc,char **argv)
       break;
     case 'n': /* NINTAP-style abbreviation of files to process */
       /* Currently not used in ncap but should be to allow processing multiple input files by same script */
-      (void)fprintf(stderr,"%s: ERROR %s does not currently implement -n option\n",prg_nm_get(),prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR %s does not currently implement -n option\n",nco_prg_nm_get(),nco_prg_nm_get());
       fl_lst_abb=nco_lst_prs_2D(optarg,",",&abb_arg_nbr);
       if(abb_arg_nbr < 1 || abb_arg_nbr > 3){
-	(void)fprintf(stderr,"%s: ERROR Incorrect abbreviation for file list\n",prg_nm);
+	(void)fprintf(stderr,"%s: ERROR Incorrect abbreviation for file list\n",nco_prg_nm);
 	(void)nco_usg_prn();
 	nco_exit(EXIT_FAILURE);
       } /* end if */
@@ -422,7 +457,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -433,18 +468,18 @@ main(int argc,char **argv)
       break;
     case 's': /* Copy command script for later processing */
       spt_arg[nbr_spt++]=(char *)strdup(optarg);
-      if(nbr_spt == NCAP_SPT_NBR_MAX-1) (void)fprintf(stderr,"%s: WARNING No more than %d script arguments allowed. TODO #24\n",prg_nm_get(),NCAP_SPT_NBR_MAX);
+      if(nbr_spt == NCAP_SPT_NBR_MAX-1) (void)fprintf(stderr,"%s: WARNING No more than %d script arguments allowed. TODO #24\n",nco_prg_nm_get(),NCAP_SPT_NBR_MAX);
       break;
     case 'S': /* Read command script from file rather than from command line */
       fl_spt_usr=(char *)strdup(optarg);
       break;
     case 'v': /* Variables to extract/exclude */
       PROCESS_ALL_VARS=False;
-      nbr_xtr=0;
+      xtr_nbr=0;
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
-      if(EXCLUDE_INPUT_LIST) (void)fprintf(stderr,"%s: ERROR %s does not currently implement -x option\n",prg_nm_get(),prg_nm_get());
+      if(EXCLUDE_INPUT_LIST) (void)fprintf(stderr,"%s: ERROR %s does not currently implement -x option\n",nco_prg_nm_get(),nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     case '?': /* Print proper usage */
@@ -452,10 +487,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -541,20 +577,21 @@ main(int argc,char **argv)
   sym_tbl_nbr-=6; /* Hyperbolic trigonometric: acosh, asinh, atanh, cosh, sinh, tanh */
 #endif /* !LINUX */
   
+  /* Advanced Rounding: nearbyint, round, trunc */
   /* 20020703: AIX, MACOSX, SGI*, WIN32 do not define rintf
      Only LINUX* supplies all of these and I do not care about them enough
      to activate them on LINUX* but not on MACOSX* and SUN* */
-  sym_tbl_nbr-=4; /* Advanced Rounding: nearbyint, rint, round, trunc */
-  /* Advanced Rounding: nearbyint, round, trunc */
-  /* sym_tbl[sym_idx++]=ncap_sym_init("nearbyint",nearbyint,nearbyintf); *//* Round to integer value in floating point format using current rounding direction, do not raise inexact exceptions */
-  /* sym_tbl[sym_idx++]=ncap_sym_init("round",round,roundf); *//* Round to nearest integer away from zero */
-  /* sym_tbl[sym_idx++]=ncap_sym_init("trunc",trunc,truncf); *//* Round to nearest integer not larger in absolute value */
-  /* sym_tbl[sym_idx++]=ncap_sym_init("rint",rint,rintf); *//* Round to integer value in floating point format using current rounding direction, raise inexact exceptions */
+  /* 20130326: Re-activate these functions on all architectures */
+  sym_tbl_nbr-=0; /* Advanced Rounding: nearbyint, rint, round, trunc */
+  sym_tbl[sym_idx++]=ncap_sym_init("nearbyint",nearbyint,nearbyintf); /* Round to integer value in floating point format using current rounding direction, do not raise inexact exceptions */
+  sym_tbl[sym_idx++]=ncap_sym_init("rint",rint,rintf); /* Round to integer value in floating point format using current rounding direction, raise inexact exceptions */
+  sym_tbl[sym_idx++]=ncap_sym_init("round",round,roundf); /* Round to nearest integer away from zero */
+  sym_tbl[sym_idx++]=ncap_sym_init("trunc",trunc,truncf); /* Round to nearest integer not larger in absolute value */
   assert(sym_idx == sym_tbl_nbr);
   
   if(PRN_FNC_TBL){
     /* ncap TODO #43: alphabetize this list */ 
-    (void)fprintf(stdout,"Maths functions available in %s:\n",prg_nm_get());
+    (void)fprintf(stdout,"Maths functions available in %s:\n",nco_prg_nm_get());
     (void)fprintf(stdout,"Name\tFloat\tDouble\n");          
     for(idx=0;idx<sym_tbl_nbr;idx++)
       (void)fprintf(stdout,"%s\t%c\t%c\n",sym_tbl[idx]->nm,(sym_tbl[idx]->fnc_flt ? 'y' : 'n'),(sym_tbl[idx]->fnc_dbl ? 'y' : 'n'));
@@ -573,9 +610,10 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
   (void)nco_inq_format(in_id,&fl_in_fmt);
   
   /* Form list of all dimensions in file */  
@@ -594,7 +632,7 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
   
   /* Copy global attributes */
   (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
@@ -602,7 +640,13 @@ main(int argc,char **argv)
   /* Catenate time-stamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
   
-  (void)nco_enddef(out_id);
+  /* Take output file out of define mode */
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
 
   /* Set arguments for  script execution */
   prs_arg.fl_in=fl_in; /* [sng] Input data file */
@@ -636,13 +680,13 @@ main(int argc,char **argv)
     if(fl_spt_usr == NULL){
       /* No script file specified, look for command-line scripts */
       if(nbr_spt == 0){
-	(void)fprintf(stderr,"%s: ERROR no script file or command line scripts specified\n",prg_nm_get());
-	(void)fprintf(stderr,"%s: HINT Use, e.g., -s \"foo=bar\"\n",prg_nm_get());
+	(void)fprintf(stderr,"%s: ERROR no script file or command line scripts specified\n",nco_prg_nm_get());
+	(void)fprintf(stderr,"%s: HINT Use, e.g., -s \"foo=bar\"\n",nco_prg_nm_get());
 	nco_exit(EXIT_FAILURE);
       } /* end if */
       
       /* Print all command-line scripts */
-      if(dbg_lvl_get() > nco_dbg_scl){
+      if(nco_dbg_lvl_get() > nco_dbg_scl){
 	for(idx=0;idx<nbr_spt;idx++) (void)fprintf(stderr,"spt_arg[%d] = %s\n",idx,spt_arg[idx]);
       } /* endif debug */
       
@@ -653,7 +697,7 @@ main(int argc,char **argv)
     }else{ /* ...endif command-line scripts, begin script file... */
       /* Open script file for reading */
       if((nco_yyin=fopen(fl_spt_usr,"r")) == NULL){
-	(void)fprintf(stderr,"%s: ERROR Unable to open script file %s\n",prg_nm_get(),fl_spt_usr);
+	(void)fprintf(stderr,"%s: ERROR Unable to open script file %s\n",nco_prg_nm_get(),fl_spt_usr);
 	nco_exit(EXIT_FAILURE);
       } /* end if */
     } /* end else script file */
@@ -675,7 +719,7 @@ main(int argc,char **argv)
     for(idx=0;idx<nbr_var_ycc;idx++){
       /* Define variables in output */
       /* Kill variables classified as undefined */
-      if(dbg_lvl >= nco_dbg_var) (void)fprintf(stdout,"%s: Checking var_ycc[%d]->undefined for variable %s...\n",prg_nm_get(),idx,var_ycc[idx]->nm);
+      if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(stdout,"%s: Checking var_ycc[%d]->undefined for variable %s...\n",nco_prg_nm_get(),idx,var_ycc[idx]->nm);
       if(var_ycc[idx]->undefined){
 	/* 20060225: TODO nco680 free() list at end or risk double-free()'ing*/
 	var_ycc[idx]=nco_var_free(var_ycc[idx]); 
@@ -701,10 +745,10 @@ main(int argc,char **argv)
     rcd=nco_inq(in_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int *)NULL);
     
     /* Form initial list of all variables in input file */
-    xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,False,False,&nbr_xtr);
+    xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,False,False,&xtr_nbr);
   }else{
     /* Make list of variables of new attributes whose parent variable is only in input file */
-    xtr_lst=nco_att_lst_mk(in_id,out_id,att_lst,nbr_att,&nbr_xtr);
+    xtr_lst=nco_att_lst_mk(in_id,out_id,att_lst,nbr_att,&xtr_nbr);
   } /* endif */
   
     /* Find dimensions associated with xtr_lst */
@@ -723,7 +767,7 @@ main(int argc,char **argv)
     /* Finally extract variables on list */
   
   /* Subtract list A */
-  if(nbr_lst_a > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&nbr_xtr,xtr_lst_a,nbr_lst_a);
+  if(nbr_lst_a > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&xtr_nbr,xtr_lst_a,nbr_lst_a);
   
   /* Put file in define mode to allow metadata writing */
   (void)nco_redef(out_id);
@@ -732,7 +776,7 @@ main(int argc,char **argv)
   dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_in);
 
   /* Make list of dimensions of variables in xtr_lst */
-  if(nbr_xtr > 0) dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_ass);
+  if(xtr_nbr > 0) dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,xtr_nbr,&nbr_dmn_ass);
   
   /* Find and add any new dimensions to output */
   for(idx=0;idx<nbr_dmn_ass;idx++)
@@ -769,14 +813,14 @@ main(int argc,char **argv)
       } /* end if */
       /* Add coordinate variable to extraction list, dimension has already been output */
       if(dmn_in[idx]->xrf){
-	for(jdx=0;jdx<nbr_xtr;jdx++)
+	for(jdx=0;jdx<xtr_nbr;jdx++)
 	  if(!strcmp(xtr_lst[jdx].nm,dmn_in[idx]->nm)) break;
 
-	if(jdx != nbr_xtr) continue;
+	if(jdx != xtr_nbr) continue;
 	/* If coordinate is not on list then add it to extraction list */
-	xtr_lst=(nm_id_sct *)nco_realloc(xtr_lst,(nbr_xtr+1)*sizeof(nm_id_sct));
-	xtr_lst[nbr_xtr].nm=(char *)strdup(dmn_in[idx]->nm);
-	xtr_lst[nbr_xtr++].id=dmn_in[idx]->cid;
+	xtr_lst=(nm_id_sct *)nco_realloc(xtr_lst,(xtr_nbr+1)*sizeof(nm_id_sct));
+	xtr_lst[xtr_nbr].nm=(char *)strdup(dmn_in[idx]->nm);
+	xtr_lst[xtr_nbr++].id=dmn_in[idx]->cid;
       } /* endif */
     } /* end loop over idx */	      
   } /* end if */ 
@@ -785,18 +829,18 @@ main(int argc,char **argv)
   CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
 
   /* Add coordinates defined by CF convention */
-  if(CNV_CCM_CCSM_CF && (EXTRACT_ALL_COORDINATES || EXTRACT_ASSOCIATED_COORDINATES)) xtr_lst=nco_cnv_cf_crd_add(in_id,xtr_lst,&nbr_xtr);
+  if(CNV_CCM_CCSM_CF && (EXTRACT_ALL_COORDINATES || EXTRACT_ASSOCIATED_COORDINATES)) xtr_lst=nco_cnv_cf_crd_add(in_id,xtr_lst,&xtr_nbr);
 
   /* Subtract list A again (it may contain re-defined coordinates) */
-  if(nbr_xtr > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&nbr_xtr,xtr_lst_a,nbr_lst_a);
+  if(xtr_nbr > 0) xtr_lst=nco_var_lst_sub(xtr_lst,&xtr_nbr,xtr_lst_a,nbr_lst_a);
   
   /* Sort extraction list for faster I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
+  if(xtr_nbr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,xtr_nbr,False);
   
   /* Write "fixed" variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dmn_in,nbr_dmn_in);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
@@ -805,11 +849,11 @@ main(int argc,char **argv)
 
   /* NB: ncap is not well-suited for nco_var_lst_dvd() */
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,(int)0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,(int)0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc,NULL);
   
   /* csz: Why not call this with var_fix? */
   /* Define non-processed vars */
-  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
+  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,xtr_nbr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
   
   /* Write out new attributes possibly overwriting old ones */
   for(idx=0;idx<nbr_att;idx++){
@@ -821,7 +865,7 @@ main(int argc,char **argv)
   } /* end for */
   
   /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,(lmt_all_sct **)NULL_CEWI,(int)0,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
+  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,(lmt_msa_sct **)NULL_CEWI,(int)0,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 
   /* Turn off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
@@ -836,7 +880,7 @@ main(int argc,char **argv)
   rcd=nco_close(in_id);
   
   /* Remove local copy of file */
-  if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+  if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
   
   /* Close output file and move it from temporary to permanent location */
   (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
@@ -866,7 +910,7 @@ main(int argc,char **argv)
     if(nbr_att >0 ) att_lst=(aed_sct **)nco_free(att_lst);
     
     /* Free extraction lists */ 
-    xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+    xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
     xtr_lst_a=nco_nm_id_lst_free(xtr_lst_a,nbr_lst_a);
     
     /* Free command line algebraic arguments, if any */
@@ -879,8 +923,8 @@ main(int argc,char **argv)
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -900,8 +944,8 @@ main(int argc,char **argv)
     if(nbr_dmn_in > 0) dmn_in=nco_dmn_lst_free(dmn_in,nbr_dmn_in);
     if(nbr_dmn_out > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_out);
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
diff --git a/src/nco/ncap.h b/src/nco/ncap.h
index 50fabb6..23fd3c7 100644
--- a/src/nco/ncap.h
+++ b/src/nco/ncap.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncap.h,v 1.94 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncap.h,v 1.97 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: netCDF arithmetic processor definitions and function prototypes for ncap.c, ncap_utl.c, ncap_lex.l, and ncap_yacc.y */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -20,9 +20,11 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
diff --git a/src/nco/ncap_lex.l b/src/nco/ncap_lex.l
index 1d76292..c90153e 100644
--- a/src/nco/ncap_lex.l
+++ b/src/nco/ncap_lex.l
@@ -1,11 +1,11 @@
-%{ /* $Header: /cvsroot/nco/nco/src/nco/ncap_lex.l,v 1.76 2010/12/21 20:12:07 zender Exp $ -*-C-*- */
+%{ /* $Header: /cvsroot/nco/nco/src/nco/ncap_lex.l,v 1.79 2013/10/22 03:03:45 zender Exp $ -*-C-*- */
   /* Everything from here to closing brace is placed at top of lexer */
 
   /* Purpose: Token generator for ncap parser */
 
-  /* Copyright (C) 1995--2011 Charlie Zender
+  /* Copyright (C) 1995--2013 Charlie Zender
      
-   You may copy, distribute, and/or modify this software under the terms of the GNU General Public License (GPL) Version 2
+   License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
    and in the file nco/doc/LICENSE in the NCO source distribution.
    
@@ -50,7 +50,6 @@
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
 #include <string.h> /* strdup */
 
-
   /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
 #include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
@@ -165,10 +164,10 @@ XPN [eE][+-]?[0-9]+
 <INCLUDE>[^ \t\n]+ {
   /* Get include file name */
   if(ncap_ncl_dpt_crr >= NCO_MAX_NCL_DPT){
-    (void)fprintf(stderr,"%s: ERROR File %s nesting depth of %lu is too deep",prg_nm_get(),yytext,(unsigned long)ncap_ncl_dpt_crr);
+    (void)fprintf(stderr,"%s: ERROR File %s nesting depth of %lu is too deep",nco_prg_nm_get(),yytext,(unsigned long)ncap_ncl_dpt_crr);
     nco_exit(EXIT_FAILURE);
   } /* endif */
-  if(dbg_lvl_get() > 1) (void)fprintf(stderr,"%s: INFO Will descend from file %s at nesting depth %lu to #include'd file %s at depth %lu\n",prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr],(unsigned long)ncap_ncl_dpt_crr,yytext,(unsigned long)ncap_ncl_dpt_crr+1UL);
+  if(nco_dbg_lvl_get() > 1) (void)fprintf(stderr,"%s: INFO Will descend from file %s at nesting depth %lu to #include'd file %s at depth %lu\n",nco_prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr],(unsigned long)ncap_ncl_dpt_crr,yytext,(unsigned long)ncap_ncl_dpt_crr+1UL);
   /* Put current input buffer on stack */
   ncl_stk[ncap_ncl_dpt_crr]=YY_CURRENT_BUFFER; 
   /* Increment nesting level */
@@ -181,7 +180,7 @@ XPN [eE][+-]?[0-9]+
   ncap_fl_spt_glb=(char **)nco_realloc(ncap_fl_spt_glb,ncap_ncl_dpt_crr+1UL); 
   ncap_fl_spt_glb[ncap_ncl_dpt_crr]=(char *)strdup(yytext);
   if((yyin=fopen(ncap_fl_spt_glb[ncap_ncl_dpt_crr],"r")) == NULL){
-    (void)fprintf(stderr,"%s: ERROR Unable to open script file %s\n",prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr]);
+    (void)fprintf(stderr,"%s: ERROR Unable to open script file %s\n",nco_prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr]);
     nco_exit(EXIT_FAILURE);
   } /* endif error */
 
@@ -199,7 +198,7 @@ XPN [eE][+-]?[0-9]+
   if(ncap_ncl_dpt_crr > 0UL){
     /* If we are exiting a #include'd script, delete its buffers */
     NCO_SCRIPT_WITH_EOF_IS_TOPLEVEL=False; /* [flg] */
-    if(dbg_lvl_get() > 1) (void)fprintf(stderr,"%s: DEBUG Found EOF, emerging from file %s at nesting depth %lu to file %s at depth %lu\n",prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr],(unsigned long)ncap_ncl_dpt_crr,ncap_fl_spt_glb[ncap_ncl_dpt_crr-1],(unsigned long)ncap_ncl_dpt_crr-1UL);
+    if(nco_dbg_lvl_get() > 1) (void)fprintf(stderr,"%s: DEBUG Found EOF, emerging from file %s at nesting depth %lu to file %s at depth %lu\n",nco_prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr],(unsigned long)ncap_ncl_dpt_crr,ncap_fl_spt_glb[ncap_ncl_dpt_crr-1],(unsigned long)ncap_ncl_dpt_crr-1UL);
     ncap_fl_spt_glb[ncap_ncl_dpt_crr]=(char *)nco_free(ncap_fl_spt_glb[ncap_ncl_dpt_crr]);
     /* Decrement depth of nesting */
     ncap_ncl_dpt_crr--; 
@@ -240,7 +239,7 @@ XPN [eE][+-]?[0-9]+
 
 "(/" {
   /* Dimension list */
-  if(dbg_lvl_get() > 0) (void)fprintf(stderr,"Entering DMN_LST with %s\n",yytext);
+  if(nco_dbg_lvl_get() > 0) (void)fprintf(stderr,"Entering DMN_LST with %s\n",yytext);
 
   BEGIN DMN_LST;
 
@@ -248,7 +247,7 @@ XPN [eE][+-]?[0-9]+
 } /* End dimension list */
 <DMN_LST>[ \t\n]* /* Eat whitespace */
 <DMN_LST>"/)" {
-  if(dbg_lvl_get() > 0) (void)fprintf(stderr,"Exiting DMN_LST with %s\n",yytext);
+  if(nco_dbg_lvl_get() > 0) (void)fprintf(stderr,"Exiting DMN_LST with %s\n",yytext);
 
   /* Return to default state, known as INITIAL state or 0 state LMB92 p. 43 */    
   BEGIN INITIAL;
@@ -256,7 +255,7 @@ XPN [eE][+-]?[0-9]+
 <DMN_LST>[^\]\n]*[\]\n]/"/)" {
 /*<DMN_LST>{LPH}{LPHDGT}*[ \t\n]*[,]?[ \t\n]* {*/
   /* Recognize dimension lists */
-  if(dbg_lvl_get() > 0) (void)fprintf(stderr,"Lexing dimension list %s\n",yytext);
+  if(nco_dbg_lvl_get() > 0) (void)fprintf(stderr,"Lexing dimension list %s\n",yytext);
 
   /* Valid subscripts must contain alphanumeric string */
   if(yyleng < 3) goto end_dmn_lst;
@@ -292,7 +291,7 @@ XPN [eE][+-]?[0-9]+
   (void)sng_ascii_trn(bfr);
   lval_ptr->sng=strdup(bfr);
   bfr=(char*)nco_free(bfr);
-  if(dbg_lvl_get() > 3){
+  if(nco_dbg_lvl_get() > 3){
     (void)fprintf(stderr,"Lexing string: %s\n",yytext);
     (void)fprintf(stderr,"Made   string: %s\n",lval_ptr->sng);
   } /* endif */
@@ -305,7 +304,7 @@ XPN [eE][+-]?[0-9]+
      so that unary plus/minus is handled in lexer rather than parser.
      However, this has unintended side effects so let parser handle it for now */
   char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a double %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a double %s\n",yytext); 
   lval_ptr->scv.val.d=strtod(yytext,&sng_cnv_rcd);
   if(*sng_cnv_rcd) nco_sng_cnv_err(yytext,"strtod",sng_cnv_rcd);
   lval_ptr->scv.type=NC_DOUBLE;
@@ -315,10 +314,10 @@ XPN [eE][+-]?[0-9]+
 {DGT}*\.{DGT}*({XPN})?[Ff]|{DGT}*({XPN})[Ff] {
   /* float */
   float float_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a float %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a float %s\n",yytext); 
   if(sscanf((char *)yytext,"%e",&float_tkn) != 1){
     sprintf(ncap_err_sng,"#Bad float: %s",yytext);
-    nco_yyerror(prs_arg, ncap_err_sng);
+    nco_yyerror(prs_arg,ncap_err_sng);
     return EPROVOKE;
   } /* endif */
   lval_ptr->scv.val.f=float_tkn;
@@ -329,7 +328,7 @@ XPN [eE][+-]?[0-9]+
 {DGT}+("LL"|"ll") {
   /* int64 */
   nco_int64 int64_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing an int64 %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing an int64 %s\n",yytext); 
   if(sscanf((char *)yytext,"%lli",&int64_tkn) != 1){
     sprintf(ncap_err_sng,"Bad int64 constant: %s",(char *)yytext);
     nco_yyerror(prs_arg,ncap_err_sng);
@@ -342,7 +341,7 @@ XPN [eE][+-]?[0-9]+
 {DGT}+("ULL"|"ull") {
   /* uint64 */
   nco_uint64 uint64_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a uint64 %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a uint64 %s\n",yytext); 
   if(sscanf((char *)yytext,"%llu",&uint64_tkn) != 1){
     sprintf(ncap_err_sng,"Bad uint64 constant: %s",(char *)yytext);
     nco_yyerror(prs_arg,ncap_err_sng);
@@ -355,7 +354,7 @@ XPN [eE][+-]?[0-9]+
 {DGT}+[lL]? {
   /* int */
   nco_int int_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing an int %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing an int %s\n",yytext); 
   /* NB: Format depends on opaque type of nco_int
      Until 200911, nco_int was C-type long, and now nco_int is C-type int
      if(sscanf((char *)yytext,"%li",&int_tkn) != 1){ */
@@ -371,7 +370,7 @@ XPN [eE][+-]?[0-9]+
 {DGT}+([uU]|"ul"|"UL") {
   /* uint */
   nco_uint uint_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a uint %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a uint %s\n",yytext); 
   if(sscanf((char *)yytext,"%u",&uint_tkn) != 1){
     sprintf(ncap_err_sng,"Bad uint constant: %s",(char *)yytext);
     nco_yyerror(prs_arg,ncap_err_sng);
@@ -384,7 +383,7 @@ XPN [eE][+-]?[0-9]+
 {DGT}+[sS] {
   /* short */
   nco_short short_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a short %s\n",yytext); 	
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a short %s\n",yytext); 	
   if(sscanf((char *)yytext,"%hi",&short_tkn) != 1){
     sprintf(ncap_err_sng,"Bad short constant: %s",(char *)yytext);
     nco_yyerror(prs_arg,ncap_err_sng);
@@ -397,7 +396,7 @@ XPN [eE][+-]?[0-9]+
 {DGT}+("us"|"US") {
   /* ushort */
   nco_ushort short_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a ushort %s\n",yytext); 	
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a ushort %s\n",yytext); 	
   if(sscanf((char *)yytext,"%hu",&short_tkn) != 1){
     sprintf(ncap_err_sng,"Bad short constant: %s",(char *)yytext);
     nco_yyerror(prs_arg,ncap_err_sng);
@@ -410,10 +409,10 @@ XPN [eE][+-]?[0-9]+
 {DGT}+[Bb] {
   /* byte */
   nco_byte byte_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a byte %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a byte %s\n",yytext); 
   if(sscanf((char *)yytext,"%hhi",&byte_tkn) != 1){
     sprintf(ncap_err_sng,"#Bad byte: %s",yytext);
-    nco_yyerror(prs_arg, ncap_err_sng);
+    nco_yyerror(prs_arg,ncap_err_sng);
     return EPROVOKE;
   } /* endif err */
   lval_ptr->scv.val.b=byte_tkn;
@@ -424,10 +423,10 @@ XPN [eE][+-]?[0-9]+
 {DGT}+("UB"|"ub") {
   /* ubyte */
   nco_ubyte ubyte_tkn;
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a ubyte %s\n",yytext); 
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing a ubyte %s\n",yytext); 
   if(sscanf((char *)yytext,"%hhu",&ubyte_tkn) != 1){
     sprintf(ncap_err_sng,"#Bad byte: %s",yytext);
-    nco_yyerror(prs_arg, ncap_err_sng);
+    nco_yyerror(prs_arg,ncap_err_sng);
     return EPROVOKE;
   } /* endif err */
   lval_ptr->scv.val.ub=ubyte_tkn;
@@ -517,7 +516,7 @@ M_PI {return NAMED_CONSTANT;}
   nco_bool blkp;
   var_sct var_lkp; /* for us when calling lookup vars on first pass only */
   
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing attribute %s\n",yytext);
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing attribute %s\n",yytext);
   amp_ptr=strchr(yytext,'@');
   sng_lng=amp_ptr-yytext;
   
@@ -567,7 +566,7 @@ M_PI {return NAMED_CONSTANT;}
       rcd=nco_inq_att_flg(prs_arg->in_id,var_id,att_nm,&type,&att_sz);
       if (rcd == NC_ENOTATT){
 	(void)sprintf(ncap_err_sng,"Warning: Unable to locate RHS attribute %s of variable %s with var ID = %d in file %s. Returning 0-byte.",att_nm,var_nm,var_id,prs_arg->fl_in);
-	(void)nco_yyerror(prs_arg, ncap_err_sng);
+	(void)nco_yyerror(prs_arg,ncap_err_sng);
 	lval_ptr->scv.val.b=0;
 	lval_ptr->scv.type=NC_BYTE;
 	return SCV;
@@ -615,7 +614,7 @@ M_PI {return NAMED_CONSTANT;}
       return OUT_ATT;
     }else{
       (void)sprintf(ncap_err_sng,"#Warning: unable to locate variable %s. So cannot create attribute %s",var_nm,yytext);
-      (void)nco_yyerror(prs_arg, ncap_err_sng);
+      (void)nco_yyerror(prs_arg,ncap_err_sng);
       return EPROVOKE; 
     } /* end else */
   } /* end if */
@@ -624,7 +623,7 @@ M_PI {return NAMED_CONSTANT;}
 
 {LPH}{LPHDGT}*/\[ {
   /* Recognize variables with subscripts */
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing variable with subscripts %s\n",yytext);
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing variable with subscripts %s\n",yytext);
   if(RHS){
     lval_ptr->var_nm_RHS=(char *)strdup(yytext);
     BEGIN RHS_SUBSCRIPT;
@@ -638,7 +637,7 @@ M_PI {return NAMED_CONSTANT;}
 
 {LPH}{LPHDGT}* {
   /* Recognize plain variables */
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing variable %s\n",yytext);
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"Lexing variable %s\n",yytext);
   if(RHS){
     /* fxm mmr: memory leak since var_nm_RHS is never free()'d */
     lval_ptr->var_nm_RHS=(char *)strdup(yytext); 
@@ -678,7 +677,7 @@ M_PI {return NAMED_CONSTANT;}
   dmn_sct **dmn_new;
 
   /* Valid subscripts must contain alphanumeric string */
-  if(dbg_lvl_get() > 2) (void)fprintf(stderr,"Interpreting %s as LHS_SUBSCRIPT\n",yytext);
+  if(nco_dbg_lvl_get() > 2) (void)fprintf(stderr,"Interpreting %s as LHS_SUBSCRIPT\n",yytext);
   if(yyleng < 3) goto end_LHS_sbs;
 
   /* if(prs_arg->ntl_scn) goto end_LHS_sbs; */  
@@ -719,7 +718,7 @@ M_PI {return NAMED_CONSTANT;}
    if(jdx != prs_arg->nbr_dmn_in) continue;
    /* Exit action if dimension not found */
    (void)sprintf(ncap_err_sng,"Warning: Unrecognized dimension \"%s\" in LHS subscripts",sbs_lst[idx]);
-   (void)nco_yyerror(prs_arg, ncap_err_sng);
+   (void)nco_yyerror(prs_arg,ncap_err_sng);
    (void)nco_enddef(prs_arg->out_id);
    goto end_LHS_sbs;                     
   } /* endif */
@@ -729,7 +728,7 @@ M_PI {return NAMED_CONSTANT;}
   for(idx=1;idx<dmn_nbr;idx++)
     if(dmn[idx]->is_rec_dmn){
       (void)sprintf(ncap_err_sng,"Warning:\"%s\" is the record dimension. It can only be the first dimension in a list",dmn[idx]->nm);
-      (void)nco_yyerror(prs_arg, ncap_err_sng);
+      (void)nco_yyerror(prs_arg,ncap_err_sng);
       goto end_LHS_sbs;                     
     } /* endif */
 
@@ -775,7 +774,7 @@ M_PI {return NAMED_CONSTANT;}
   /* Allocate space for variable values 
      fxm: more efficient and safer to use nco_calloc() and not fill with values? */
   if((var->val.vp=(void *)nco_malloc_flg(var->sz*nco_typ_lng(var->type))) == NULL){
-    (void)fprintf(stderr,"%s: ERROR Unable to malloc() %ld*%lu bytes for var_LHS() in lexer\n",prg_nm_get(),var->sz,(unsigned long)nco_typ_lng(var->type));
+    (void)fprintf(stderr,"%s: ERROR Unable to malloc() %ld*%lu bytes for var_LHS() in lexer\n",nco_prg_nm_get(),var->sz,(unsigned long)nco_typ_lng(var->type));
     nco_exit(EXIT_FAILURE); 
   } /* end if */
   
@@ -798,7 +797,7 @@ M_PI {return NAMED_CONSTANT;}
   /* Link variable into yylex() argument for use in parser */
   prs_arg->var_LHS=var;
   
-  if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: Lexer creating LHS cast template: Template var->nm %s, var->nbr_dim %d, var->sz %li\n",prg_nm_get(),prs_arg->var_LHS->nm,prs_arg->var_LHS->nbr_dim,prs_arg->var_LHS->sz);
+  if(nco_dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: Lexer creating LHS cast template: Template var->nm %s, var->nbr_dim %d, var->sz %li\n",nco_prg_nm_get(),prs_arg->var_LHS->nm,prs_arg->var_LHS->nbr_dim,prs_arg->var_LHS->sz);
   
   if(0){ /* Remove some compiler warning messages CEWI */
     /* Following two statements remove "defined but not used" messages in ncap_lex.c (lex.yy.c) */
@@ -820,12 +819,10 @@ M_PI {return NAMED_CONSTANT;}
   BEGIN INITIAL;
 } /* end LHS subscripted variables */
 
-
-
 <RHS_SUBSCRIPT>\[[^\]\n]*[\]\n] {
   /* RHS_SUBSCRIPT */
   (void)sprintf(ncap_err_sng,"Warning RHS subscripts are not yet implemented");
-  (void)nco_yyerror(prs_arg, ncap_err_sng);
+  (void)nco_yyerror(prs_arg,ncap_err_sng);
   /* Return to default state, known as INITIAL state or 0 state LMB92 p. 43 */    
   BEGIN INITIAL;
 } /* end RHS_SUBSCRIPT */
@@ -875,7 +872,7 @@ M_PI {return NAMED_CONSTANT;}
 
 . {
   /* Everything not parsed by above falls through to here */
-  if(dbg_lvl_get() > 5) (void)fprintf(stderr,"%s: Following token reached last lexer rule: %s\n",prg_nm_get(),yytext);
+  if(nco_dbg_lvl_get() > 5) (void)fprintf(stderr,"%s: Following token reached last lexer rule: %s\n",nco_prg_nm_get(),yytext);
   return yytext[0];
 } /* end trickle down */
 
@@ -891,7 +888,7 @@ yywrap(void)
      been redirected to new source, e.g., yyin points to new file. 
      Returning true (non-zero) means scanning is complete, so scanner terminates and returns 0 to calling function
      Default is to return true (one) when called---this terminates scanner */
-  if(dbg_lvl_get() >= 3) (void)fprintf(stderr,"%s: DEBUG yywrap() called with ncap_ncl_dpt_crr = %lu\n",prg_nm_get(),(unsigned long)ncap_ncl_dpt_crr);
+  if(nco_dbg_lvl_get() >= 3) (void)fprintf(stderr,"%s: DEBUG yywrap() called with ncap_ncl_dpt_crr = %lu\n",nco_prg_nm_get(),(unsigned long)ncap_ncl_dpt_crr);
   /* comp.compilers thread 20020523 yywrap() should always return 1, even when
      scanning a #include'd file
      return (ncap_ncl_dpt_crr <= 1) ? 1 : 0; */
@@ -963,7 +960,7 @@ ncap_ntl_scn /* [fnc] Scan command script, construct I/O lists */
   }else{
     /* Open script file for reading */
     if((yyin=fopen(ncap_fl_spt_glb[ncap_ncl_dpt_crr],"r")) == NULL){
-      (void)fprintf(stderr,"%s: ERROR Unable to open script file %s\n",prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr]);
+      (void)fprintf(stderr,"%s: ERROR Unable to open script file %s\n",nco_prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr]);
       nco_exit(EXIT_FAILURE);
     } /* endif error */
   } /* endif input from script */
@@ -1038,7 +1035,7 @@ ncap_ntl_scn /* [fnc] Scan command script, construct I/O lists */
     default: 
       /* Tokens that fall through are perfectly safe and normal
 	 Tokens values 1--256 are ASCII characters, values > 256 defined in yy.tab.h */
-      if(dbg_lvl_get() >= 5)(void)fprintf(stderr,"%s: DEBUG Token type %d not handled in ncap_ntl_scn()\n",prg_nm_get(),tkn_crr);
+      if(nco_dbg_lvl_get() >= 5)(void)fprintf(stderr,"%s: DEBUG Token type %d not handled in ncap_ntl_scn()\n",nco_prg_nm_get(),tkn_crr);
       break;
     } /* end switch */
   } /* end while */
@@ -1103,7 +1100,7 @@ ncap_ncwa_scn /* [fnc] Scan command script, construct I/O lists */
     default: 
       /* Tokens that fall through are perfectly safe and normal
 	 Tokens values 1--256 are ASCII characters, values > 256 defined in yy.tab.h */
-      if(dbg_lvl_get() >= 5) (void)fprintf(stderr,"%s: DEBUG Token type %d not handled in ncap_ntl_scn()\n",prg_nm_get(),tkn_crr);
+      if(nco_dbg_lvl_get() >= 5) (void)fprintf(stderr,"%s: DEBUG Token type %d not handled in ncap_ntl_scn()\n",nco_prg_nm_get(),tkn_crr);
       
       /* Assume single '=' means '==' if op_typ is not defined */
       if(tkn_crr == '=' && op_typ == -1) op_typ=nco_op_eq;
@@ -1113,19 +1110,19 @@ ncap_ncwa_scn /* [fnc] Scan command script, construct I/O lists */
   
   /* Check all three items have been scanned in */
   if(msk_nm_LHS == (char *)NULL){
-    (void)fprintf(stderr,"%s: Mask string (%s) does not contain valid variable name\n",prg_nm_get(),msk_sng);
+    (void)fprintf(stderr,"%s: Mask string (%s) does not contain valid variable name\n",nco_prg_nm_get(),msk_sng);
     rcd=0;
   }else{
     *msk_nm=msk_nm_LHS;
   } /* endif */
   if(op_typ == -1){
-    (void)fprintf(stderr,"%s: Mask string (%s) does not contain valid comparison operator\n",prg_nm_get(),msk_sng);
+    (void)fprintf(stderr,"%s: Mask string (%s) does not contain valid comparison operator\n",nco_prg_nm_get(),msk_sng);
     rcd=0;
   }else{
     *op_typ_rlt=op_typ;
   } /* endif */
   if(scv_def == False){
-    (void)fprintf(stderr,"%s: Mask string (%s) does not contain valid number\n",prg_nm_get(),msk_sng);
+    (void)fprintf(stderr,"%s: Mask string (%s) does not contain valid number\n",nco_prg_nm_get(),msk_sng);
     rcd=0;
   }else{ 
     (void)nco_scv_cnf_typ((nc_type)NC_DOUBLE,&scv_out);
diff --git a/src/nco/ncap_utl.c b/src/nco/ncap_utl.c
index b9ae7e9..c3fa7c6 100644
--- a/src/nco/ncap_utl.c
+++ b/src/nco/ncap_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncap_utl.c,v 1.150 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncap_utl.c,v 1.155 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: netCDF arithmetic processor */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -106,7 +106,7 @@ ncap_var_init(char *var_nm,prs_sct *prs_arg)
 	  (void)nco_dmn_xrf(*dim_new,dmn_in);
 	  /* Write new dimension to output file */
 	  (void)nco_dmn_dfn(prs_arg->fl_out,prs_arg->out_id,dim_new,1);
-	  if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: DEBUG Found new dimension %s in input variable %s in file %s. Defining dimension %s in output file %s\n",prg_nm_get(),(*dim_new)->nm,var_nm,prs_arg->fl_in,(*dim_new)->nm,prs_arg->fl_out);
+	  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Found new dimension %s in input variable %s in file %s. Defining dimension %s in output file %s\n",nco_prg_nm_get(),(*dim_new)->nm,var_nm,prs_arg->fl_in,(*dim_new)->nm,prs_arg->fl_out);
 	  break;
 	} /* end loop over dimensions in current output dimension list */
       (void)nco_free(dim_id);
@@ -115,7 +115,7 @@ ncap_var_init(char *var_nm,prs_sct *prs_arg)
     
   } /* end else */
   
-  if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: parser VAR action called ncap_var_init() to retrieve %s from disk\n",prg_nm_get(),var_nm);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: parser VAR action called ncap_var_init() to retrieve %s from disk\n",nco_prg_nm_get(),var_nm);
   var=nco_var_fll(fl_id,var_id,var_nm,*(prs_arg->dmn_out),*(prs_arg->nbr_dmn_out));
   /*  var->nm=(char *)nco_malloc((strlen(var_nm)+1UL)*sizeof(char));
       (void)strcpy(var->nm,var_nm); */
@@ -179,7 +179,7 @@ ncap_var_write
     var_dpl=nco_var_dpl(var);
     assert(var_dpl->nm);
     if(ncap_var_lookup(var_dpl,((prs_sct*)prs_arg),True))
-      (void)fprintf(stdout,"%s: variable %s defined\n",prg_nm_get(),var->nm);
+      (void)fprintf(stdout,"%s: variable %s defined\n",nco_prg_nm_get(),var->nm);
     (void)nco_var_free(var);
     return True;
   } /* endif ntl_scn */
@@ -252,8 +252,8 @@ ncap_var_write
 #ifdef NCO_RUSAGE_DBG
   /* Compile: cd ~/nco/bld;make 'USR_TKN=-DNCO_RUSAGE_DBG';cd - */
   /* Print rusage memory usage statistics */
-  if(dbg_lvl_get() >= 0) (void)fprintf(stdout,"%s: INFO ncap_var_write() writing variable %s\n",prg_nm_get(),var->nm);
-  maxrss=nco_mmr_rusage_prn((int)0);
+  if(nco_dbg_lvl_get() >= 0) (void)fprintf(stdout,"%s: INFO ncap_var_write() writing variable %s\n",nco_prg_nm_get(),var->nm);
+  maxrss=nco_mmr_usg_prn((int)0);
 #endif /* !NCO_RUSAGE_DBG */
   
   /* Free varible */
@@ -907,7 +907,7 @@ ncap_scv_minus(scv_sct *scv)
   case NC_UINT: /* NB: Unsigned */
   case NC_UINT64: /* NB: Unsigned */
   case NC_UBYTE: /* NB: Unsigned */
-    (void)fprintf(stdout,"%s: ERROR ncap_scr_minus() reports attempt to convert unsigned integer type to a negative number\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR ncap_scr_minus() reports attempt to convert unsigned integer type to a negative number\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
     break;
   case NC_CHAR: break; /* Do nothing */
@@ -934,7 +934,7 @@ nco_var_lst_copy(nm_id_sct *xtr_lst,int lst_nbr)
 } /* end nco_var_lst_copy() */
 
 nm_id_sct *
-nco_var_lst_sub(nm_id_sct *xtr_lst,int *nbr_xtr,nm_id_sct *xtr_lst_b,int nbr_lst_b)
+nco_var_lst_sub(nm_id_sct *xtr_lst,int *xtr_nbr,nm_id_sct *xtr_lst_b,int nbr_lst_b)
 {
   /* Purpose: Subtract from xtr_lst any elements from xtr_lst_b which are present and return new list */
   int idx;
@@ -945,10 +945,10 @@ nco_var_lst_sub(nm_id_sct *xtr_lst,int *nbr_xtr,nm_id_sct *xtr_lst_b,int nbr_lst
   
   nm_id_sct *xtr_new_lst=NULL;
   
-  if(*nbr_xtr == 0) return xtr_lst;
+  if(*xtr_nbr == 0) return xtr_lst;
   
-  xtr_new_lst=(nm_id_sct *)nco_malloc((size_t)(*nbr_xtr)*sizeof(nm_id_sct)); 
-  for(idx=0;idx<*nbr_xtr;idx++){
+  xtr_new_lst=(nm_id_sct *)nco_malloc((size_t)(*xtr_nbr)*sizeof(nm_id_sct)); 
+  for(idx=0;idx<*xtr_nbr;idx++){
     match=False;
     for(xtr_idx=0;xtr_idx<nbr_lst_b;xtr_idx++)
       if(!strcmp(xtr_lst[idx].nm,xtr_lst_b[xtr_idx].nm)){match=True;break;}
@@ -959,46 +959,46 @@ nco_var_lst_sub(nm_id_sct *xtr_lst,int *nbr_xtr,nm_id_sct *xtr_lst_b,int nbr_lst
   /* realloc to actual size */
   xtr_new_lst=(nm_id_sct *)nco_realloc(xtr_new_lst,xtr_nbr_new*sizeof(nm_id_sct)); 
   /* free old list */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,*nbr_xtr);
+  xtr_lst=nco_nm_id_lst_free(xtr_lst,*xtr_nbr);
   
-  *nbr_xtr=xtr_nbr_new;
+  *xtr_nbr=xtr_nbr_new;
   return xtr_new_lst;     
 }/* end nco_var_lst_sub */
 
 nm_id_sct *
-nco_var_lst_add(nm_id_sct *xtr_lst,int *nbr_xtr,nm_id_sct *xtr_lst_a,int nbr_lst_a)
+nco_var_lst_add(nm_id_sct *xtr_lst,int *xtr_nbr,nm_id_sct *xtr_lst_a,int nbr_lst_a)
 {
   /* Purpose: Add to xtr_lst any elements from xtr_lst_a not already present and return new list */
   int idx;
   int xtr_idx;
-  int nbr_xtr_crr;
+  int xtr_nbr_crr;
   
   nm_id_sct *xtr_new_lst;
   
   nco_bool match;
   
-  nbr_xtr_crr=*nbr_xtr;
-  if(nbr_xtr_crr > 0){
-    xtr_new_lst=(nm_id_sct *)nco_malloc((size_t)(*nbr_xtr)*sizeof(nm_id_sct));
-    for(idx=0;idx<nbr_xtr_crr;idx++){
+  xtr_nbr_crr=*xtr_nbr;
+  if(xtr_nbr_crr > 0){
+    xtr_new_lst=(nm_id_sct *)nco_malloc((size_t)(*xtr_nbr)*sizeof(nm_id_sct));
+    for(idx=0;idx<xtr_nbr_crr;idx++){
       xtr_new_lst[idx].nm=(char *)strdup(xtr_lst[idx].nm);
       xtr_new_lst[idx].id=xtr_lst[idx].id;
     } /* end loop over variables */
   }else{
-    *nbr_xtr=nbr_lst_a;
+    *xtr_nbr=nbr_lst_a;
     return nco_var_lst_copy(xtr_lst_a,nbr_lst_a);
   }/* end if */
   
   for(idx=0;idx<nbr_lst_a;idx++){
     match=False;
-    for(xtr_idx=0;xtr_idx<*nbr_xtr;xtr_idx++)
+    for(xtr_idx=0;xtr_idx<*xtr_nbr;xtr_idx++)
       if(!strcmp(xtr_lst[xtr_idx].nm,xtr_lst_a[idx].nm)){match=True;break;}
     if(match) continue;
-    xtr_new_lst=(nm_id_sct *)nco_realloc(xtr_new_lst,(size_t)(nbr_xtr_crr+1)*sizeof(nm_id_sct));
-    xtr_new_lst[nbr_xtr_crr].nm=(char *)strdup(xtr_lst_a[idx].nm);
-    xtr_new_lst[nbr_xtr_crr++].id=xtr_lst_a[idx].id;
+    xtr_new_lst=(nm_id_sct *)nco_realloc(xtr_new_lst,(size_t)(xtr_nbr_crr+1)*sizeof(nm_id_sct));
+    xtr_new_lst[xtr_nbr_crr].nm=(char *)strdup(xtr_lst_a[idx].nm);
+    xtr_new_lst[xtr_nbr_crr++].id=xtr_lst_a[idx].id;
   } /* end for */
-  *nbr_xtr=nbr_xtr_crr;
+  *xtr_nbr=xtr_nbr_crr;
   return xtr_new_lst;           
 } /* nco_var_lst_add */
 
@@ -1006,11 +1006,11 @@ nm_id_sct *
 nco_nm_id_lst_crd_make
 (int nc_id,
  nm_id_sct *xtr_lst,
- int *nbr_xtr)
+ int *xtr_nbr)
      /* 
 	int nc_id: I netCDF file ID
 	nm_id_sct *xtr_lst: I/O current extraction list 
-	int *nbr_xtr: I/O number of variables in current extraction list: Overwritten by new list 
+	int *xtr_nbr: I/O number of variables in current extraction list: Overwritten by new list 
 	nm_id_sct nco_nm_id_lst_crd_make: list of coordinate dimensions 
      */
 {
@@ -1035,7 +1035,7 @@ nco_nm_id_lst_crd_make
     rcd=nco_inq_varid_flg(nc_id,dmn_nm,&crd_id);
     if(rcd == NC_NOERR){
       /* Is this coordinate already on extraction list? */
-      for(idx_var=0;idx_var<*nbr_xtr;idx_var++){
+      for(idx_var=0;idx_var<*xtr_nbr;idx_var++){
 	if(!strcmp(dmn_nm,xtr_lst[idx_var].nm)){
 	  if(nbr_new_lst == 0) new_lst=(nm_id_sct *)nco_malloc(sizeof(nm_id_sct));
 	  else new_lst=(nm_id_sct *)nco_realloc((void *)new_lst,(size_t)(nbr_new_lst+1)*sizeof(nm_id_sct));
@@ -1047,7 +1047,7 @@ nco_nm_id_lst_crd_make
     } /* end if */
   } /* end for */
   
-  *nbr_xtr=nbr_new_lst;
+  *xtr_nbr=nbr_new_lst;
   return new_lst;
 } /* end nco_nm_id_lst_crd_make() */
 
@@ -1198,20 +1198,20 @@ ncap_var_stretch /* [fnc] Stretch variables */
 	/* Dimensions in var_lsr and var_gtr are mutually exclusive */
 	CONFORMABLE=False;
 	if(MUST_CONFORM){
-	  (void)fprintf(stdout,"%s: ERROR %s and template %s share no dimensions\n",prg_nm_get(),var_lsr->nm,var_gtr->nm);
+	  (void)fprintf(stdout,"%s: ERROR %s and template %s share no dimensions\n",nco_prg_nm_get(),var_lsr->nm,var_gtr->nm);
 	  nco_exit(EXIT_FAILURE);
 	}else{
-	  if(dbg_lvl_get() >= 1) (void)fprintf(stdout,"\n%s: DEBUG %s and %s share no dimensions: Attempting to convolve...\n",prg_nm_get(),var_lsr->nm,var_gtr->nm);
+	  if(nco_dbg_lvl_get() >= 1) (void)fprintf(stdout,"\n%s: DEBUG %s and %s share no dimensions: Attempting to convolve...\n",nco_prg_nm_get(),var_lsr->nm,var_gtr->nm);
 	  CONVOLVE=True;
 	} /* endif */
       }else if(var_lsr_var_gtr_dmn_shr_nbr > 0 && var_lsr_var_gtr_dmn_shr_nbr < var_lsr->nbr_dim){
 	/* Some, but not all, of var_lsr dimensions are in var_gtr */
 	CONFORMABLE=False;
 	if(MUST_CONFORM){
-	  (void)fprintf(stdout,"%s: ERROR %d dimensions of %s belong to template %s but %d dimensions do not\n",prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr);
+	  (void)fprintf(stdout,"%s: ERROR %d dimensions of %s belong to template %s but %d dimensions do not\n",nco_prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr);
 	  nco_exit(EXIT_FAILURE);
 	}else{
-	  if(dbg_lvl_get() >= 1) (void)fprintf(stdout,"\n%s: DEBUG %d dimensions of %s belong to template %s but %d dimensions do not: Not broadcasting %s to %s, could attempt stretching???\n",prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm);
+	  if(nco_dbg_lvl_get() >= 1) (void)fprintf(stdout,"\n%s: DEBUG %d dimensions of %s belong to template %s but %d dimensions do not: Not broadcasting %s to %s, could attempt stretching???\n",nco_prg_nm_get(),var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm,var_lsr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr,var_lsr->nm,var_gtr->nm);
 	  CONVOLVE=True;
 	} /* endif */
       } /* end if */
@@ -1242,7 +1242,7 @@ ncap_var_stretch /* [fnc] Stretch variables */
   if(var_lsr_out == NULL && CONVOLVE){
     /* Convolve variables by returned stretched variables with minimum possible number of dimensions */
     int dmn_nbr; /* Number of dimensions in convolution */
-    if(dbg_lvl_get() >= 1) (void)fprintf(stdout,"\n%s: WARNING Convolution not yet implemented, results of operation between %s and %s are unpredictable\n",prg_nm_get(),var_lsr->nm,var_gtr->nm);
+    if(nco_dbg_lvl_get() >= 1) (void)fprintf(stdout,"\n%s: WARNING Convolution not yet implemented, results of operation between %s and %s are unpredictable\n",nco_prg_nm_get(),var_lsr->nm,var_gtr->nm);
     /* Dimensions in convolution are union of dimensions in variables */
     dmn_nbr=var_lsr->nbr_dim+var_gtr->nbr_dim-var_lsr_var_gtr_dmn_shr_nbr; /* Number of dimensions in convolution */
     dmn_nbr=dmn_nbr; /* CEWI: Avert compiler warning that variable is set but never used */
@@ -1340,7 +1340,7 @@ ncap_var_stretch /* [fnc] Stretch variables */
 	  } /* end if */
 	  /* Sanity check */
 	  if(idx_dmn == var_gtr->nbr_dim-1){
-	    (void)fprintf(stdout,"%s: ERROR var_lsr %s has dimension %s but var_gtr %s does not deep in ncap_var_stretch()\n",prg_nm_get(),var_lsr->nm,var_lsr->dim[idx]->nm,var_gtr->nm);
+	    (void)fprintf(stdout,"%s: ERROR var_lsr %s has dimension %s but var_gtr %s does not deep in ncap_var_stretch()\n",nco_prg_nm_get(),var_lsr->nm,var_lsr->dim[idx]->nm,var_gtr->nm);
 	    nco_exit(EXIT_FAILURE);
 	  } /* end if err */
 	} /* end loop over greater variable dimensions */
diff --git a/src/nco/ncap_yacc.y b/src/nco/ncap_yacc.y
index 23fe254..c205d9a 100644
--- a/src/nco/ncap_yacc.y
+++ b/src/nco/ncap_yacc.y
@@ -1,12 +1,12 @@
-%{ /* $Header: /cvsroot/nco/nco/src/nco/ncap_yacc.y,v 1.60 2012/01/01 20:51:53 zender Exp $ -*-C-*- */
+%{ /* $Header: /cvsroot/nco/nco/src/nco/ncap_yacc.y,v 1.65 2013/10/22 03:03:45 zender Exp $ -*-C-*- */
   
 /* Begin C declarations section */
   
 /* Purpose: Grammar parser for ncap */
   
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
      
-   You may copy, distribute, and/or modify this software under the terms of the GNU General Public License (GPL) Version 2
+   License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
    and in the file nco/doc/LICENSE in the NCO source distribution.
    
@@ -44,7 +44,7 @@
 #include <stdarg.h> /* va_start, va_arg, va_end */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <assert.h>
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -208,10 +208,10 @@ PRINT '(' var_xpr ')' ';' {
   ptr_aed->type=$3.type;
   ptr_aed->sz=1L;
   (void)cast_nctype_void(ptr_aed->type,&ptr_aed->val);    
-  if(dbg_lvl_get() > 0) (void)sprintf(ncap_err_sng,"Saving attribute %s@%s to %s",$1.var_nm,$1.att_nm,((prs_sct *)prs_arg)->fl_out);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)sprintf(ncap_err_sng,"Saving attribute %s@%s to %s",$1.var_nm,$1.att_nm,((prs_sct *)prs_arg)->fl_out);
   (void)nco_yyerror(prs_arg,ncap_err_sng);
   
-  if(dbg_lvl_get() > 1){
+  if(nco_dbg_lvl_get() >= nco_dbg_fl){
     (void)fprintf(stderr,"Saving in array attribute %s@%s=",$1.var_nm,$1.att_nm);
     switch($3.type){
   /* NB: Format depends on opaque type of nco_int
@@ -248,8 +248,8 @@ PRINT '(' var_xpr ')' ';' {
   strcpy((char *)(ptr_aed->val.cp),$3);
   (void)cast_nctype_void((nc_type)NC_CHAR,&ptr_aed->val);    
   
-  if(dbg_lvl_get() > 0) (void)sprintf(ncap_err_sng,"Saving attribute %s@%s=%s",$1.var_nm,$1.att_nm,$3);
-  (void)nco_yyerror(prs_arg, ncap_err_sng);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)sprintf(ncap_err_sng,"Saving attribute %s@%s=%s",$1.var_nm,$1.att_nm,$3);
+  (void)nco_yyerror(prs_arg,ncap_err_sng);
   $1.var_nm=(char *)nco_free($1.var_nm);
   $1.att_nm=(char *)nco_free($1.att_nm);
   $3=(char *)nco_free($3);
@@ -271,7 +271,7 @@ PRINT '(' var_xpr ')' ';' {
     (void)nco_var_copy(ptr_aed->type,ptr_aed->sz,$3->val,ptr_aed->val);
     }
     /* cast_nctype_void($3->type,&ptr_aed->val); */
-    if(dbg_lvl_get() > 0) (void)sprintf(ncap_err_sng,"Saving attribute %s@%s %d dimensional variable",$1.var_nm,$1.att_nm,$3->nbr_dim);
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)sprintf(ncap_err_sng,"Saving attribute %s@%s %d dimensional variable",$1.var_nm,$1.att_nm,$3->nbr_dim);
     (void)yyerror(prs_arg,ncap_err_sng); 
   }else{
     (void)sprintf(ncap_err_sng,"Warning: Cannot store in attribute %s@%s a variable with dimension %d",$1.var_nm,$1.att_nm,$3->nbr_dim);
@@ -288,7 +288,7 @@ PRINT '(' var_xpr ')' ';' {
   (void)ncap_var_write($3,(prs_sct *)prs_arg);
   
   /* Print mess only for defined variables */
-  if(dbg_lvl_get() > 0 && !$3->undefined){(void)sprintf(ncap_err_sng,"Saving variable %s to %s",$1,((prs_sct *)prs_arg)->fl_out);
+  if(nco_dbg_lvl_get() >= nco_dbg_std && !$3->undefined){(void)sprintf(ncap_err_sng,"Saving variable %s to %s",$1,((prs_sct *)prs_arg)->fl_out);
   (void)yyerror(prs_arg,ncap_err_sng);
   } /* endif */
   $1=(char *)nco_free($1);
@@ -297,7 +297,7 @@ PRINT '(' var_xpr ')' ';' {
 {
   var_sct *var;
   var_sct *var_tmp;  
-  if(dbg_lvl_get() > 5) (void)fprintf(stderr,"%s: DEBUG out_var_xpr = scv_xpr rule for %s\n",prg_nm_get(),$1);
+  if(nco_dbg_lvl_get() > 5) (void)fprintf(stderr,"%s: DEBUG out_var_xpr = scv_xpr rule for %s\n",nco_prg_nm_get(),$1);
   
   /* Turn attribute into temporary variable for writing */
   var=(var_sct *)nco_malloc(sizeof(var_sct));
@@ -321,13 +321,13 @@ PRINT '(' var_xpr ')' ';' {
       var=var_tmp;
 	}
 
-    if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: Stretching former scv_xpr defining %s with LHS template: Template var->nm %s, var->nbr_dim %d, var->sz %li\n",prg_nm_get(),$1,((prs_sct *)prs_arg)->var_LHS->nm,((prs_sct *)prs_arg)->var_LHS->nbr_dim,((prs_sct *)prs_arg)->var_LHS->sz);
+    if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: Stretching former scv_xpr defining %s with LHS template: Template var->nm %s, var->nbr_dim %d, var->sz %li\n",nco_prg_nm_get(),$1,((prs_sct *)prs_arg)->var_LHS->nm,((prs_sct *)prs_arg)->var_LHS->nbr_dim,((prs_sct *)prs_arg)->var_LHS->sz);
   } /* endif LHS_cst */
 
   var->undefined=False;
   (void)ncap_var_write(var,(prs_sct *)prs_arg);
   
-  if(dbg_lvl_get() > 0 ) (void)sprintf(ncap_err_sng,"Saving variable %s to %s",$1,((prs_sct *)prs_arg)->fl_out);
+  if(nco_dbg_lvl_get() >= nco_dbg_std ) (void)sprintf(ncap_err_sng,"Saving variable %s to %s",$1,((prs_sct *)prs_arg)->fl_out);
   (void)yyerror(prs_arg,ncap_err_sng);
   
   
@@ -349,7 +349,7 @@ PRINT '(' var_xpr ')' ';' {
   (void)cast_nctype_void((nc_type)NC_CHAR,&var->val);
   (void)ncap_var_write(var,(prs_sct *)prs_arg);
   
-  if(dbg_lvl_get() > 0) (void)sprintf(ncap_err_sng,"Saving variable %s to %s",$1,((prs_sct *)prs_arg)->fl_out);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)sprintf(ncap_err_sng,"Saving variable %s to %s",$1,((prs_sct *)prs_arg)->fl_out);
   (void)yyerror(prs_arg,ncap_err_sng);
   
   $1=(char *)nco_free($1);
@@ -607,7 +607,7 @@ var_xpr '+' var_xpr { /* Begin Addition */
   /* fxm Finish avg,min,max,ttl */
   /* $$=nco_var_avg($3,dim,dmn_nbr,nco_op_typ); */
   /* if(prs_arg->nco_op_typ == nco_op_avg) (void)nco_var_dvd(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,wgt_avg->val,var_prc_out[idx]->val); */
-  (void)fprintf(stderr,"%s: WARNING RDC tokens not implemented yet\n",prg_nm_get());
+  (void)fprintf(stderr,"%s: WARNING RDC tokens not implemented yet\n",nco_prg_nm_get());
   /* $3 is freed in nco_var_avg() */
 } /* end ABS */
 | PACK '(' var_xpr ')' {
@@ -680,7 +680,7 @@ var_xpr '+' var_xpr { /* Begin Addition */
       var=var_tmp;
     }
   
-    if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: Stretching variable %s with LHS template: Template var->nm %s, var->nbr_dim %d, var->sz %li\n",prg_nm_get(),var->nm,prs_drf->var_LHS->nm,prs_drf->var_LHS->nbr_dim,prs_drf->var_LHS->sz);
+    if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: Stretching variable %s with LHS template: Template var->nm %s, var->nbr_dim %d, var->sz %li\n",nco_prg_nm_get(),var->nm,prs_drf->var_LHS->nm,prs_drf->var_LHS->nbr_dim,prs_drf->var_LHS->sz);
     var->undefined=False;
   } /* endif LHS_cst */
   $1=(char*)nco_free($1);
@@ -778,9 +778,9 @@ yyerror /* [fnc] Print error/warning/info messages generated by parser */
   prs_arg=prs_arg; /* CEWI otherwise unused parameter error */
 
   /* if(eprovoke_skip){eprovoke_skip=False ; return 0;} */
-  if(dbg_lvl_get() > 0){
-    (void)fprintf(stderr,"%s: %s line %lu",prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr],(unsigned long)ncap_ln_nbr_crr[ncap_ncl_dpt_crr]);
-    if(dbg_lvl_get() > 1) (void)fprintf(stderr," %s",err_sng_lcl);
+  if(nco_dbg_lvl_get() >= nco_dbg_std){
+    (void)fprintf(stderr,"%s: %s line %lu",nco_prg_nm_get(),ncap_fl_spt_glb[ncap_ncl_dpt_crr],(unsigned long)ncap_ln_nbr_crr[ncap_ncl_dpt_crr]);
+    if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr," %s",err_sng_lcl);
     (void)fprintf(stderr,"\n");
     (void)fflush(stderr);
   } /* endif dbg */
diff --git a/src/nco/ncatted.c b/src/nco/ncatted.c
index 5f5e16e..91ab455 100644
--- a/src/nco/ncatted.c
+++ b/src/nco/ncatted.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncatted.c,v 1.136 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncatted.c,v 1.175 2013/11/01 00:09:59 pvicente Exp $ */
 
 /* ncatted -- netCDF attribute editor */
 
 /* Purpose: Add, create, delete, or overwrite attributes in a netCDF file */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -33,6 +33,7 @@
 
    Use C language escape sequences:
    ncatted -D 3 -h -a history,global,o,c,"String\tformatting\tfor\nDennis" ~/nco/data/in.nc ~/foo.nc
+   ncatted -D 3 -h -a history,global,o,c,"String\tformatting\tfor\nDennis" ${DATA}/hdf/MOD10CM.A2007001.005.2007108111758.hdf ~/foo.nc
    ncatted -D 3 -h -a history,global,o,c,'\a\b\f\n\r\t\v\\\?\0' ~/nco/data/in.nc ~/foo.nc
    ncatted -D 3 -h -a history,global,o,c,'Characters which require protection by backslash:\nDouble quote: \"\nTwo consecutive double quotes: \"\"\nSingle quote: Beyond my shell abilities!\nBackslash: \\\nTwo consecutive backslashes: \\\\\nQuestion mark: \?\n' ~/nco/data/in.nc ~/foo.nc
    ncatted -D 3 -h -a history,global,o,c,'Characters which do not require protection by backslash:\nSingle backquote: `\nDollarsign: $\nLeft brace: {\nRight brace: }\nPipe: |\nAmpersand: &\nAt sign: @\nPercent: %\n\n' ~/nco/data/in.nc ~/foo.nc
@@ -50,8 +51,14 @@
    Create new float:
    ncatted -D 5 -O -a new_float_att,att_var,c,f,74 ~/nco/data/in.nc ~/foo.nc
 
-   Create new netCDF4 atomic type attributes:
-   ncatted -D 5 -O -a new_ubyte_att,att_var,c,ub,0 -a new_ushort_att,att_var,c,us,74 -a new_uint_att,att_var,c,u,71,72,73,74 -a 'new_int64_att,att_var,c,ll,-74' -a new_uint64_att,att_var,c,ull,74,75 ~/nco/data/in_4.nc ~/foo.nc
+   Create new string:
+   ncatted -D 5 -O -a new_string_att,att_var,c,sng,"string" ~/nco/data/in_4.nc ~/foo.nc
+
+   Create new list of strings:
+   ncatted -D 5 -O -a new_string_att,att_var,c,sng,"list","of","strings" ~/nco/data/in_4.nc ~/foo.nc
+
+   Create all new netCDF4 atomic type attributes:
+   ncatted -D 5 -O -a new_ubyte_att,att_var,c,ub,0 -a new_ushort_att,att_var,c,us,74 -a new_uint_att,att_var,c,u,71,72,73,74 -a new_int64_att,att_var,c,ll,-74 -a new_uint64_att,att_var,c,ull,74,75 -a new_string_att,att_var,c,sng,"No man is an island" ~/nco/data/in_4.nc ~/foo.nc
 
    Delete attribute:
    ncatted -D 5 -O -a float_att,att_var,d,,, ~/nco/data/in.nc ~/foo.nc
@@ -91,6 +98,10 @@
    Verify results:
    ncks -C -h ~/foo.nc | m */
 
+#if 1
+#define USE_TRV_API
+#endif
+
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
 #endif /* !HAVE_CONFIG_H */
@@ -99,10 +110,15 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* strcasecmp() */
+#endif /* !HAVE_STRINGS_H */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -111,9 +127,8 @@
 # endif /* !HAVE_GETOPT_H */ 
 #endif /* HAVE_GETOPT_LONG */
 
-/* 3rd party vendors */
-#include <netcdf.h> /* netCDF definitions and C library */
-#include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
+/* 3rd party vendors */	 
+#include <netcdf.h> /* netCDF definitions and C library */	 
 
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
 #define MAIN_PROGRAM_FILE
@@ -125,15 +140,16 @@ main(int argc,char **argv)
 {
   aed_sct *aed_lst=NULL_CEWI;
 
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool OUTPUT_TO_NEW_NETCDF_FILE=False;
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool FL_OUT_NEW=False;
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
-  
+
   char **fl_lst_abb=NULL; /* Option n */
   char **fl_lst_in;
   char *aed_arg[NC_MAX_ATTRS];
@@ -143,12 +159,13 @@ main(int argc,char **argv)
   char *fl_pth=NULL; /* Option p */
   char *fl_pth_lcl=NULL; /* Option l */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
 
-  const char * const CVS_Id="$Id: ncatted.c,v 1.136 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.136 $";
+  const char * const CVS_Id="$Id: ncatted.c,v 1.175 2013/11/01 00:09:59 pvicente Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.175 $";
   const char * const opt_sht_lst="Aa:D:hl:Oo:p:Rr-:";
-  
+
 #if defined(__cplusplus) || defined(PGI_CC)
   ddra_info_sct ddra_info;
   ddra_info.flg_ddra=False;
@@ -158,53 +175,62 @@ main(int argc,char **argv)
 
   extern char *optarg;
   extern int optind;
-  
+
   int abb_arg_nbr=0;
   int fl_nbr=0;
-  int idx;
-  int idx_var;
   int nbr_aed=0; /* Option a. NB: nbr_var_aed gets incremented */
   int nbr_var_fl;
   int nc_id;  
-  int ncopen_mode=NC_WRITE; /* [enm] Mode flag for nco_open() call */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int opt;
   int rcd=NC_NOERR; /* [rcd] Return code */
 
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
+  trv_tbl_sct *trv_tbl=NULL; /* [lst] Traversal table */
+
   static struct option opt_lng[]=
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"hdr_pad",required_argument,0,0},
-      {"header_pad",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"append",no_argument,0,'A'},
-      {"attribute",required_argument,0,'a'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"path",required_argument,0,'p'},
-      {"retain",no_argument,0,'R'},
-      {"rtn",no_argument,0,'R'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    }; /* end opt_lng */
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"append",no_argument,0,'A'},
+    {"attribute",required_argument,0,'a'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"path",required_argument,0,'p'},
+    {"retain",no_argument,0,'R'},
+    {"rtn",no_argument,0,'R'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
 
   /* Start timer and save command line */ 
@@ -212,9 +238,9 @@ main(int argc,char **argv)
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -226,15 +252,21 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
       if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
-	hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
     } /* opt != 0 */
     /* Process short options */
@@ -249,7 +281,7 @@ main(int argc,char **argv)
       nbr_aed++;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'h': /* Toggle appending to history global attribute */
@@ -268,7 +300,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -282,95 +314,87 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
     } /* end switch */
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
-  
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
-  if(fl_out) OUTPUT_TO_NEW_NETCDF_FILE=True; else fl_out=(char *)strdup(fl_lst_in[0]);
+  if(fl_out) FL_OUT_NEW=True; else fl_out=(char *)strdup(fl_lst_in[0]);
 
   if(nbr_aed == 0){
-    (void)fprintf(stdout,"%s: ERROR must specify an attribute to edit\n",prg_nm);
+    (void)fprintf(stdout,"%s: ERROR must specify an attribute to edit\n",nco_prg_nm);
     nco_usg_prn();
     nco_exit(EXIT_FAILURE);
   } /* end if */ 
 
-  if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: DEBUG attribute assumed to hold missing data is named \"%s\"\n",prg_nm_get(),nco_mss_val_sng_get());
+  if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: DEBUG attribute assumed to hold missing data is named \"%s\"\n",nco_prg_nm_get(),nco_mss_val_sng_get());
 
   /* Make uniform list of user-specified attribute edit structures */
   if(nbr_aed > 0) aed_lst=nco_prs_aed_lst(nbr_aed,aed_arg);
 
   /* We now have final list of attributes to edit */
-  
+
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-
-  if(OUTPUT_TO_NEW_NETCDF_FILE){
-
-    if(!FORCE_OVERWRITE){
-      int rcd_lcl;
-      struct stat stat_sct;
-
-      rcd_lcl=stat(fl_out,&stat_sct);
-
-      /* If file already exists, then query user whether to overwrite */
-      if(rcd_lcl != -1){
-        char usr_reply;
-        
-	/* fxm TODO nco199: Internationalize (i18n) NCO with gettext() */
-        usr_reply='z';
-        while(usr_reply != 'n' && usr_reply != 'y'){
-          (void)fprintf(stdout,"%s: overwrite %s (y/n)? ",prg_nm_get(),fl_out);
-	  (void)fflush(stdout);
-          usr_reply=(char)fgetc(stdin);
-        } /* end while */
-        
-        if(usr_reply == 'n'){
-          nco_exit(EXIT_SUCCESS);
-        } /* end if */
-      } /* end if */
-    } /* end if */
-    
-    /* Copy input file to output file, then search through output, editing attributes along the way
-       This avoids possible XDR translation performance penalty copying each variable with netCDF */
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+
+  if(FL_OUT_NEW){
+    /* Obtain user consent, if needed, to overwrite output file (or die trying) */
+    if(!FORCE_OVERWRITE) nco_fl_overwrite_prm(fl_out);
+
+    /* Copy input file to output file and then search through output, 
+    changing names on the fly. This avoids possible XDR translation
+    performance penalty of copying each variable with netCDF. */
     (void)nco_fl_cp(fl_in,fl_out);
-  } /* end if */
+
+    /* Ensure output file is user/owner-writable */
+    (void)nco_fl_chmod(fl_out);
+  } /* end if FL_OUT_NEW */
 
   /* Open file. Writing must be enabled and file should be in define mode for renaming */
-  /*  if(dbg_lvl == 8) ncopen_mode|=NC_SHARE;*/
-  rcd=nco_open(fl_out,ncopen_mode,&nc_id);
+  /*  if(nco_dbg_lvl == 8) md_open|=NC_SHARE;*/
+  if(RAM_OPEN) md_open=NC_WRITE|NC_DISKLESS; else md_open=NC_WRITE;
+  rcd+=nco_fl_open(fl_out,md_open,&bfr_sz_hnt,&nc_id);
   (void)nco_redef(nc_id);
 
   /* Get number of variables in file */
   (void)nco_inq(nc_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int *)NULL);
 
+ /* Initialize traversal table */ 
+  trv_tbl_init(&trv_tbl); 
+
+  /* Construct GTT (Group Traversal Table) */
+  (void)nco_bld_trv_tbl(nc_id,trv_pth,(int)0,NULL,(int)0,NULL,False,False,NULL,(int)0,NULL,(int) 0,False,False,False,True,trv_tbl);
+
   /* Timestamp end of metadata setup and disk layout */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_rgl;
 
-  for(idx=0;idx<nbr_aed;idx++){
+
+#ifndef USE_TRV_API
+  for(int idx=0;idx<nbr_aed;idx++){
     if(aed_lst[idx].var_nm == NULL){
       /* Variable name is blank so edit same attribute for all variables ... */
-      for(idx_var=0;idx_var<nbr_var_fl;idx_var++) (void)nco_aed_prc(nc_id,idx_var,aed_lst[idx]);
+      for(int idx_var=0;idx_var<nbr_var_fl;idx_var++) (void)nco_aed_prc(nc_id,idx_var,aed_lst[idx]);
     }else if(strpbrk(aed_lst[idx].var_nm,".*^$\\[]()<>+?|{}")){
       /* Variable name contains a "regular expression" (rx) ... */
-      int nbr_xtr=1;
+      int xtr_nbr=1;
       nm_id_sct *xtr_lst=NULL;
-      xtr_lst=nco_var_lst_mk(nc_id,nbr_var_fl,&aed_lst[idx].var_nm,False,False,&nbr_xtr);
+      xtr_lst=nco_var_lst_mk(nc_id,nbr_var_fl,&aed_lst[idx].var_nm,False,False,&xtr_nbr);
       /* Edit attribute for each matching variable */
-      for(idx_var=0;idx_var<nbr_xtr;idx_var++) (void)nco_aed_prc(nc_id,xtr_lst[idx_var].id,aed_lst[idx]);
+      for(int idx_var=0;idx_var<xtr_nbr;idx_var++) (void)nco_aed_prc(nc_id,xtr_lst[idx_var].id,aed_lst[idx]);
       /* Free Extraction list  */
-      xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
-    }else if(!strcmp(aed_lst[idx].var_nm,"global")){
+      xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
+    }else if(!strcasecmp(aed_lst[idx].var_nm,"global")){
       /* Variable name indicates a global attribute ... */
       (void)nco_aed_prc(nc_id,NC_GLOBAL,aed_lst[idx]);
     }else{ 
@@ -380,35 +404,68 @@ main(int argc,char **argv)
       (void)nco_aed_prc(nc_id,aed_lst[idx].id,aed_lst[idx]);
     } /* end var_nm */
   } /* end loop over idx */
-  
+#else /* USE_TRV_API */
+
+  /* Loop input names */
+  for(int idx_aed=0;idx_aed<nbr_aed;idx_aed++){
+    if(aed_lst[idx_aed].var_nm == NULL){
+      /* Variable name is blank so edit same attribute for all variables ... */
+      (void)nco_aed_prc_var(nc_id,aed_lst[idx_aed],trv_tbl);
+    }else if(strpbrk(aed_lst[idx_aed].var_nm,".*^$\\[]()<>+?|{}")){
+      /* Variable name contains a "regular expression" (rx) ... */
+      trv_tbl_sct *trv_tbl_rx;
+      char **var_lst_in; /* I [sng] User-specified list of variables */
+      int var_lst_in_nbr; /* I [nbr] Number of variables in list */
+      var_lst_in=nco_lst_prs_2D(aed_lst[idx_aed].var_nm,",",&var_lst_in_nbr);
+      trv_tbl_init(&trv_tbl_rx); 
+      /* Construct GTT (Group Traversal Table) */
+      (void)nco_bld_trv_tbl(nc_id,trv_pth,(int)0,NULL,(int)0,NULL,False,False,NULL,(int)0,var_lst_in,var_lst_in_nbr,False,False,False,False,trv_tbl_rx);
+      /* Edit same attribute for all variables ... */
+      (void)nco_aed_prc_var_xtr(nc_id,aed_lst[idx_aed],trv_tbl_rx);
+      trv_tbl_free(trv_tbl_rx);
+      var_lst_in=nco_sng_lst_free(var_lst_in,var_lst_in_nbr);
+    }else if(!strcasecmp(aed_lst[idx_aed].var_nm,"group")){
+      /* Variable name indicates a group attribute ... */
+      (void)nco_aed_prc_grp(nc_id,aed_lst[idx_aed],trv_tbl);
+    }else if(!strcasecmp(aed_lst[idx_aed].var_nm,"global")){
+      /* Variable name indicates a global attribute ... */
+      (void)nco_aed_prc_glb(nc_id,aed_lst[idx_aed],trv_tbl);
+    }else{ 
+      /* Variable is a normal variable ... */
+      /* Inquire if any variable matches (absolute, relative)  */
+      (void)nco_aed_prc_var_nm(nc_id,aed_lst[idx_aed],trv_tbl);
+    } /* end var_nm */
+  } /* Loop input names */
+#endif /* USE_TRV_API */
+
   /* Catenate the timestamped command line to the "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(nc_id,cmd_ln);
-  
+
   /* Take output file out of define mode */
   if(hdr_pad == 0UL){
     (void)nco_enddef(nc_id);
   }else{
     (void)nco__enddef(nc_id,hdr_pad);
-    if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes \n",prg_nm_get(),(unsigned long)hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
   } /* hdr_pad */
-    
+
   /* Close the open netCDF file */
   nco_close(nc_id);
-  
+
   /* Remove local copy of file */
-  if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+  if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
 
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncatted-specific memory */
-    for(idx=0;idx<nbr_aed;idx++) aed_arg[idx]=(char *)nco_free(aed_arg[idx]);
-    for(idx=0;idx<nbr_aed;idx++){
+    for(int idx=0;idx<nbr_aed;idx++) aed_arg[idx]=(char *)nco_free(aed_arg[idx]);
+    for(int idx=0;idx<nbr_aed;idx++){
       if(aed_lst[idx].att_nm) aed_lst[idx].att_nm=(char *)nco_free(aed_lst[idx].att_nm);
       if(aed_lst[idx].var_nm) aed_lst[idx].var_nm=(char *)nco_free(aed_lst[idx].var_nm);
       aed_lst[idx].val.vp=(void *)nco_free(aed_lst[idx].val.vp);
     } /* end for */
     if(nbr_aed > 0) aed_lst=(aed_sct *)nco_free(aed_lst);
-    
+
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
@@ -420,8 +477,10 @@ main(int argc,char **argv)
     if(fl_lst_in && fl_lst_abb == NULL) fl_lst_in=nco_sng_lst_free(fl_lst_in,fl_nbr); 
     if(fl_lst_in && fl_lst_abb) fl_lst_in=nco_sng_lst_free(fl_lst_in,1);
     if(fl_lst_abb) fl_lst_abb=nco_sng_lst_free(fl_lst_abb,abb_arg_nbr);
+
+    trv_tbl_free(trv_tbl);
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
diff --git a/src/nco/ncbo.c b/src/nco/ncbo.c
index a377148..4564a3c 100644
--- a/src/nco/ncbo.c
+++ b/src/nco/ncbo.c
@@ -1,11 +1,11 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncbo.c,v 1.173 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncbo.c,v 1.267 2013/11/06 17:51:13 zender Exp $ */
 
 /* ncbo -- netCDF binary operator */
 
 /* Purpose: Compute sum, difference, product, or ratio of specified hyperslabs of specfied variables
    from two input netCDF files and output them to a single file. */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -49,8 +49,9 @@
    ncks -H -m foo3.nc
    ncks -H -m foo4.nc
    
-   Test nco_var_cnf_dmn:
+   Test nco_var_cnf_dmn():
    ncks -O -v scalar_var in.nc ~/foo.nc ; ncrename -v scalar_var,four_dmn_rec_var foo.nc ; ncbo -O -v four_dmn_rec_var in.nc ~/foo.nc foo2.nc */
+
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
 #endif /* !HAVE_CONFIG_H */
@@ -59,10 +60,12 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -90,18 +93,22 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_1_RETRIEVED_FROM_REMOTE_LOCATION;
-  nco_bool FILE_2_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FILE_1_RETRIEVED_FROM_REMOTE_LOCATION=False;
+  nco_bool FILE_2_RETRIEVED_FROM_REMOTE_LOCATION=False;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order*/
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
   nco_bool flg_ddra=False; /* [flg] DDRA diagnostics */
-  
+
   char **fl_lst_abb=NULL; /* Option a */
   char **fl_lst_in;
   char **var_lst_in=NULL_CEWI;
@@ -113,20 +120,21 @@ main(int argc,char **argv)
   char *fl_in_1=NULL; /* fl_in_1 is nco_realloc'd when not NULL */
   char *fl_in_2=NULL; /* fl_in_2 is nco_realloc'd when not NULL */
   char *fl_out=NULL; /* Option o */
-  char *fl_out_tmp;
+  char *fl_out_tmp=NULL;
   char *fl_pth=NULL; /* Option p */
   char *fl_pth_lcl=NULL; /* Option l */
   char *lmt_arg[NC_MAX_DIMS];
   char *nco_op_typ_sng=NULL; /* [sng] Operation type */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
+
+  const char * const CVS_Id="$Id: ncbo.c,v 1.267 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.267 $";
+  const char * const opt_sht_lst="3467ACcD:d:FG:g:hL:l:Oo:p:rRt:v:X:xzy:-:";
 
-  const char * const CVS_Id="$Id: ncbo.c,v 1.173 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.173 $";
-  const char * const opt_sht_lst="346ACcD:d:FhL:l:Oo:p:rRt:v:X:xy:-:";
-  
   cnk_sct **cnk=NULL_CEWI;
 
 #if defined(__cplusplus) || defined(PGI_CC)
@@ -136,17 +144,10 @@ main(int argc,char **argv)
   ddra_info_sct ddra_info={.MRV_flg=False,.flg_ddra=False,.lmn_nbr=0LL,.lmn_nbr_avg=0LL,.lmn_nbr_wgt=0LL,.nco_op_typ=nco_op_nil,.rnk_avg=0,.rnk_var=0,.rnk_wgt=0,.tmr_flg=nco_tmr_srt,.var_idx=0,.wgt_brd_flg=False,.wrd_sz=0};
 #endif /* !__cplusplus */
 
-  dmn_sct **dim_1;
-  dmn_sct **dim_2;
-  dmn_sct **dmn_out;
-  
   extern char *optarg;
   extern int optind;
-  
-  /* Using naked stdin/stdout/stderr in parallel region generates warning
-     Copy appropriate filehandle to variable scoped shared in parallel clause */
-  FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
-  FILE * const fp_stdout=stdout; /* [fl] stdout filehandle CEWI */
+
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
 
   int *in_id_1_arr;
   int *in_id_2_arr;
@@ -164,24 +165,29 @@ main(int argc,char **argv)
   int fl_out_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Output file format */
   int fll_md_old; /* [enm] Old fill mode */
   int idx;
-  int jdx;
-  int dmn_idx;
-  int dmn_jdx;
   int in_id_1;  
   int in_id_2;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
-  int nbr_dmn_fl_1;
-  int nbr_dmn_fl_2;
-  int nbr_dmn_xtr_1;
-  int nbr_dmn_xtr_2;
-  int nbr_var_fix_1; /* nbr_var_fix_1 gets incremented */
-  int nbr_var_fix_2; /* nbr_var_fix_2 gets incremented */
-  int nbr_var_fl_1;
-  int nbr_var_fl_2;
-  int nbr_var_prc_1; /* nbr_var_prc_1 gets incremented */
-  int nbr_var_prc_2; /* nbr_var_prc_2 gets incremented */
-  int nbr_xtr_1=0; /* nbr_xtr_1 won't otherwise be set for -c with no -v */
-  int nbr_xtr_2=0; /* nbr_xtr_2 won't otherwise be set for -c with no -v */
+  int md_open; /* [enm] Mode flag for nc_open() call */
+
+  int nbr_glb_att_1;  /* [nbr] Number of global attributes in file */
+  int nbr_glb_att_2;  /* [nbr] Number of global attributes in file */
+  int nbr_grp_att_1;  /* [nbr] Number of group attributes in file */
+  int nbr_grp_att_2;  /* [nbr] Number of group attributes in file */
+  int nbr_att_var_1;  /* [nbr] Number of variable attributes in file */
+  int nbr_att_var_2;  /* [nbr] Number of variable attributes in file */
+  int nbr_dmn_fl_1;   /* [nbr] Number of dimensions in file */
+  int nbr_dmn_fl_2;   /* [nbr] Number of dimensions in file */
+  int nbr_rec_fl_1;   /* [nbr] Number of record dimensions in file */
+  int nbr_rec_fl_2;   /* [nbr] Number of record dimensions in file */
+  int grp_dpt_fl_1;   /* [nbr] Maximum group depth (root = 0) */
+  int grp_dpt_fl_2;   /* [nbr] Maximum group depth (root = 0) */ 
+  int nbr_grp_fl_1;   /* [nbr] Number of groups in file */
+  int nbr_grp_fl_2;   /* [nbr] Number of groups in file */
+  int var_ntm_fl_1;   /* [nbr] Number of non-atomic variables in file */
+  int var_ntm_fl_2;   /* [nbr] Number of non-atomic variables in file */
+  int nbr_var_fl_1;   /* [nbr] Number of atomic-type variables in file */
+  int nbr_var_fl_2;   /* [nbr] Number of atomic-type variables in file */
   int nco_op_typ=nco_op_nil; /* [enm] Operation type */
   int opt;
   int out_id;  
@@ -189,28 +195,23 @@ main(int argc,char **argv)
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
-  
-  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
-  lmt_sct **lmt=NULL_CEWI;
-  lmt_all_sct **lmt_all_lst=NULL_CEWI; /* List of *lmt_all structures */
-  
-  nm_id_sct *dmn_lst_1;
-  nm_id_sct *dmn_lst_2;
-  nm_id_sct *xtr_lst_1=NULL; /* xtr_lst_1 may be alloc()'d from NULL with -c option */
-  nm_id_sct *xtr_lst_2=NULL; /* xtr_lst_2 may be alloc()'d from NULL with -c option */
-  
+
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
+
+  char **grp_lst_in=NULL; /* [sng] User-specified list of groups */
+  int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
+
+  trv_tbl_sct *trv_tbl_1=NULL; /* [lst] Traversal table input file 1 */
+  trv_tbl_sct *trv_tbl_2=NULL; /* [lst] Traversal table input file 2 */
+
+  gpe_nm_sct *gpe_nm=NULL; /* [sct] GPE name duplicate check array */
+  int nbr_gpe_nm; /* [nbr] Number of GPE entries */ 
+
+  nco_cmn_t *cmn_lst=NULL; /* [sct] A list of common names */ 
+  int nbr_cmn_nm; /* [nbr] Number of common entries */
 
-  var_sct **var_1;
-  var_sct **var_2;
-  var_sct **var_fix_1;
-  var_sct **var_fix_2;
-  var_sct **var_fix_out;
-  var_sct **var_out;
-  var_sct **var_prc_1;
-  var_sct **var_prc_2;
-  var_sct **var_prc_out;
-  
   static struct option opt_lng[]=
     { /* Structure ordered by short option key if possible */
       /* Long options with no argument, no short option counterpart */
@@ -222,11 +223,27 @@ main(int argc,char **argv)
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"ddra",no_argument,0,0}, /* [flg] DDRA diagnostics */
       {"mdl_cmp",no_argument,0,0}, /* [flg] DDRA diagnostics */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */	  
+      {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+      {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */	  
+      {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+      {"intersection",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+      {"nsx",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+      {"union",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+      {"unn",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
       /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
       {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -234,23 +251,29 @@ main(int argc,char **argv)
       {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
       {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
+      {"fl_fmt",required_argument,0,0},
+      {"hdr_pad",required_argument,0,0},
+      {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
       {"no-coords",no_argument,0,'C'},
       {"no-crd",no_argument,0,'C'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
       {"ftn",no_argument,0,'F'},
+      {"gpe",required_argument,0,'G'}, /* [sng] Group Path Edit (GPE) */
+      {"grp",required_argument,0,'g'},
+      {"group",required_argument,0,'g'},
       {"history",no_argument,0,'h'},
       {"hst",no_argument,0,'h'},
       {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
@@ -273,9 +296,13 @@ main(int argc,char **argv)
       {"operation",required_argument,0,'y'},
       {"op_typ",required_argument,0,'y'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
       {0,0,0,0}
     }; /* end opt_lng */
+
   int opt_idx=0; /* Index of current long option into opt_lng array */
+
+  nbr_gpe_nm=0;
   
   /* Start timer and save command line */ 
   ddra_info.tmr_flg=nco_tmr_srt;
@@ -283,8 +310,8 @@ main(int argc,char **argv)
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
   
   /* Parse command line arguments */
   while(1){
@@ -293,37 +320,53 @@ main(int argc,char **argv)
     /* NB: access to opt_crr is only valid when long_opt is detected */
     if(opt == EOF) break; /* Parse positional arguments once getopt_long() returns EOF */
     opt_crr=(char *)strdup(opt_lng[opt_idx].name);
-
+    
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"ddra") || !strcmp(opt_crr,"mdl_cmp")) ddra_info.flg_ddra=flg_ddra=True; /* [flg] DDRA diagnostics */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
+      if(!strcmp(opt_crr,"unn") || !strcmp(opt_crr,"union")) GRP_VAR_UNN=True;
+      if(!strcmp(opt_crr,"nsx") || !strcmp(opt_crr,"intersection")) GRP_VAR_UNN=False;
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -338,6 +381,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -348,7 +394,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* The debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -358,6 +404,17 @@ main(int argc,char **argv)
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      gpe=nco_gpe_prs_arg(optarg);
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case 'g': /* Copy group argument for later processing */
+      /* Replace commas with hashes when within braces (convert back later) */
+      optarg_lcl=(char *)strdup(optarg);
+      (void)nco_rx_comma2hash(optarg_lcl);
+      grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
+      optarg_lcl=(char *)nco_free(optarg_lcl);
+      break;
     case 'h': /* Toggle appending to history global attribute */
       HISTORY_APPEND=!HISTORY_APPEND;
       break;
@@ -378,7 +435,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -394,15 +451,14 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr_1=nbr_xtr_2=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -416,26 +472,31 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
     } /* end switch */
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
-  
+
+  /* Initialize traversal tables */
+  (void)trv_tbl_init(&trv_tbl_1);
+  (void)trv_tbl_init(&trv_tbl_2);
+
+  /* Default operation depends on invocation name */
+  if(nco_op_typ_sng == NULL) nco_op_typ=nco_op_typ_get(nco_op_typ_sng);
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
-  
+
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-    
   /* Initialize thread information */
   thr_nbr=nco_openmp_ini(thr_nbr);
   in_id_1_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
@@ -444,172 +505,40 @@ main(int argc,char **argv)
   /* Parse filenames */
   fl_idx=0; /* Input file _1 */
   fl_in_1=nco_fl_nm_prs(fl_in_1,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in_1);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_1=nco_fl_mk_lcl(fl_in_1,fl_pth_lcl,&FILE_1_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl && FILE_1_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_1);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl && FILE_1_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_1,NC_NOWRITE,in_id_1_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_1,md_open,&bfr_sz_hnt,in_id_1_arr+thr_idx);
   in_id_1=in_id_1_arr[0];
 
   fl_idx=1; /* Input file _2 */
   fl_in_2=nco_fl_nm_prs(fl_in_2,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in_2);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_2=nco_fl_mk_lcl(fl_in_2,fl_pth_lcl,&FILE_2_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl && FILE_2_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_2);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl && FILE_2_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_2,NC_NOWRITE,in_id_2_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_2,md_open,&bfr_sz_hnt,in_id_2_arr+thr_idx);
   in_id_2=in_id_2_arr[0];
-  
-  /* Parse auxiliary coordinates */
-  if(aux_nbr > 0){
-     int aux_idx_nbr;
-     aux=nco_aux_evl(in_id_1,aux_nbr,aux_arg,&aux_idx_nbr);
-     if(aux_idx_nbr > 0){
-        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
-        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
-        int aux_idx=0;
-        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
-        lmt_nbr=lmt_nbr_new;
-     } /* endif aux */
-  } /* endif aux_nbr */
-  
-  /* Get number of variables and dimensions in file */
-  (void)nco_inq(in_id_1,&nbr_dmn_fl_1,&nbr_var_fl_1,(int *)NULL,(int *)NULL);
-  (void)nco_inq(in_id_2,&nbr_dmn_fl_2,&nbr_var_fl_2,(int *)NULL,(int *)NULL);
+
+  /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+  (void)nco_bld_trv_tbl(in_id_1,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,var_lst_in_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl_1);
+  (void)nco_bld_trv_tbl(in_id_2,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,var_lst_in_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl_2);
+
+  /* Get number of variables, dimensions, and global attributes in file, file format */
+  (void)trv_tbl_inq(&nbr_glb_att_1,&nbr_grp_att_1,&nbr_att_var_1,&nbr_dmn_fl_1,&nbr_rec_fl_1,&grp_dpt_fl_1,&nbr_grp_fl_1,&var_ntm_fl_1,&nbr_var_fl_1,trv_tbl_1);
+  (void)trv_tbl_inq(&nbr_glb_att_2,&nbr_grp_att_2,&nbr_att_var_2,&nbr_dmn_fl_2,&nbr_rec_fl_2,&grp_dpt_fl_2,&nbr_grp_fl_2,&var_ntm_fl_2,&nbr_var_fl_2,trv_tbl_2);
+
   (void)nco_inq_format(in_id_1,&fl_in_fmt_1);
   (void)nco_inq_format(in_id_2,&fl_in_fmt_2);
-  
-  /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst_1=nco_var_lst_mk(in_id_1,nbr_var_fl_1,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr_1);
-  xtr_lst_2=nco_var_lst_mk(in_id_2,nbr_var_fl_2,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr_2);
-  
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst_1=nco_var_lst_xcl(in_id_1,nbr_var_fl_1,xtr_lst_1,&nbr_xtr_1);
-  if(EXCLUDE_INPUT_LIST) xtr_lst_2=nco_var_lst_xcl(in_id_2,nbr_var_fl_2,xtr_lst_2,&nbr_xtr_2);
-  
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id_1);
 
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst_1=nco_var_lst_crd_add(in_id_1,nbr_dmn_fl_1,nbr_var_fl_1,xtr_lst_1,&nbr_xtr_1,CNV_CCM_CCSM_CF);
-  if(EXTRACT_ALL_COORDINATES) xtr_lst_2=nco_var_lst_crd_add(in_id_2,nbr_dmn_fl_2,nbr_var_fl_2,xtr_lst_2,&nbr_xtr_2,CNV_CCM_CCSM_CF);
-  
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst_1=nco_var_lst_crd_ass_add(in_id_1,xtr_lst_1,&nbr_xtr_1,CNV_CCM_CCSM_CF);
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst_2=nco_var_lst_crd_ass_add(in_id_2,xtr_lst_2,&nbr_xtr_2,CNV_CCM_CCSM_CF);
-  
-  /* With fully symmetric 1<->2 ordering, may occasionally find nbr_xtr_2 > nbr_xtr_1 
-     This occurs, e.g., when fl_in_1 contains reduced variables and full coordinates
-     are only in fl_in_2 and so will not appear xtr_lst_1 */
-  
-  /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr_1 > 1) xtr_lst_1=nco_lst_srt_nm_id(xtr_lst_1,nbr_xtr_1,False);
-  if(nbr_xtr_2 > 1) xtr_lst_2=nco_lst_srt_nm_id(xtr_lst_2,nbr_xtr_2,False);
-  
   /* We now have final list of variables to extract. Phew. */
-  
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id_1,lmt[idx],0L,FORTRAN_IDX_CNV);
-
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl_1*sizeof(lmt_all_sct *));
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id_1,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl_1,lmt,lmt_nbr);
-
-  /* Find dimensions associated with variables to be extracted */
-  dmn_lst_1=nco_dmn_lst_ass_var(in_id_1,xtr_lst_1,nbr_xtr_1,&nbr_dmn_xtr_1);
-  dmn_lst_2=nco_dmn_lst_ass_var(in_id_2,xtr_lst_2,nbr_xtr_2,&nbr_dmn_xtr_2);
-  
-  /* Fill-in dimension structure for all extracted dimensions */
-  dim_1=(dmn_sct **)nco_malloc(nbr_dmn_xtr_1*sizeof(dmn_sct *));
-  dim_2=(dmn_sct **)nco_malloc(nbr_dmn_xtr_2*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr_1;idx++) dim_1[idx]=nco_dmn_fll(in_id_1,dmn_lst_1[idx].id,dmn_lst_1[idx].nm);
-  for(idx=0;idx<nbr_dmn_xtr_2;idx++) dim_2[idx]=nco_dmn_fll(in_id_2,dmn_lst_2[idx].id,dmn_lst_2[idx].nm);
-  /* Dimension lists no longer needed */
-  dmn_lst_1=nco_nm_id_lst_free(dmn_lst_1,nbr_dmn_xtr_1);
-  dmn_lst_2=nco_nm_id_lst_free(dmn_lst_2,nbr_dmn_xtr_2);
-
-  /* Check that dims in list 2 are a subset of list 1 and that they are the same size */
-  (void)nco_dmn_sct_cmp(dim_1,nbr_dmn_xtr_1,dim_2,nbr_dmn_xtr_2,fl_in_1,fl_in_2);    
-	  
-  /* Duplicate input dimension structures for output dimension structures */
-  dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_xtr_1*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr_1;idx++){ 
-    dmn_out[idx]=nco_dmn_dpl(dim_1[idx]);
-    (void)nco_dmn_xrf(dim_1[idx],dmn_out[idx]);
-  }
-
-  /* Merge hyperslab limit information into dimension structures */
-  if(nbr_dmn_fl_1 > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr_1,lmt_all_lst,nbr_dmn_fl_1); 
-
-  if(dbg_lvl >= nco_dbg_sbr){
-    for(idx=0;idx<nbr_xtr_1;idx++) (void)fprintf(stderr,"xtr_lst_1[%d].nm = %s, .id= %d\n",idx,xtr_lst_1[idx].nm,xtr_lst_1[idx].id);
-  } /* end if */
-  
-  /* Fill-in variable structure list for all extracted variables */
-  var_1=(var_sct **)nco_malloc(nbr_xtr_1*sizeof(var_sct *));
-  var_2=(var_sct **)nco_malloc(nbr_xtr_2*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr_1*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr_1;idx++){
-    var_1[idx]=nco_var_fll(in_id_1,xtr_lst_1[idx].id,xtr_lst_1[idx].nm,dim_1,nbr_dmn_xtr_1);
-    var_out[idx]=nco_var_dpl(var_1[idx]);
-    (void)nco_xrf_var(var_1[idx],var_out[idx]);
-    (void)nco_xrf_dmn(var_out[idx]);
-  } /* end loop over idx */
-  for(idx=0;idx<nbr_xtr_2;idx++) var_2[idx]=nco_var_fll(in_id_2,xtr_lst_2[idx].id,xtr_lst_2[idx].nm,dim_2,nbr_dmn_xtr_2);
-
-  /* Extraction lists no longer needed */
-  xtr_lst_1=nco_nm_id_lst_free(xtr_lst_1,nbr_xtr_1);
-  xtr_lst_2=nco_nm_id_lst_free(xtr_lst_2,nbr_xtr_2);
-  
-  /* Die gracefully on unsupported features... */
-  if(nbr_xtr_1 < nbr_xtr_2){
-    (void)fprintf(fp_stdout,"%s: WARNING First file has fewer extracted variables than second file (%d < %d). This desired feature is TODO nco581.\n",prg_nm,nbr_xtr_1,nbr_xtr_2);
-      nco_exit(EXIT_FAILURE);
-  } /* endif */
-
-  /* Refresh var_out with dim_out data */
-  (void)nco_var_dmn_refresh(var_out,nbr_xtr_1);
-
-  /* Change dimensions in dim_2 to dim_out */
-  for(idx=0;idx<nbr_dmn_xtr_2;idx++){
-    for(jdx=0;jdx<nbr_dmn_xtr_1;jdx++)  
-      if(!strcmp(dim_2[idx]->nm,dmn_out[jdx]->nm)){  
-        /* NB: Copy new dim data but do NOT free original as dimension element is aliased in var_2 array */ 
-	(void)nco_dmn_cpy(dim_2[idx],dmn_out[jdx]);  
-        break;   
-      } /* endif */
-    /* Dimension not found so die gracefully */
-    if(jdx==nbr_dmn_xtr_1){
-      (void)fprintf(fp_stdout,"%s: ERROR dimension \"%s\" in second file %s is not present in first file %s\n",prg_nm,dim_2[idx]->nm,fl_in_2,fl_in_1);
-      nco_exit(EXIT_FAILURE);
-    } /* endif dimension not found */
-  } /* end loop over dimensions */
-       
-  /* Refresh var_2 with the new dim_2 data */
-  (void)nco_var_dmn_refresh(var_2,nbr_xtr_2);
-   
-  /* Divide variable lists into lists of fixed variables and variables to be processed
-     Create lists from file_1 last so those values remain in *_out arrays */
-  (void)nco_var_lst_dvd(var_2,var_out,nbr_xtr_2,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix_2,&var_fix_out,&nbr_var_fix_2,&var_prc_2,&var_prc_out,&nbr_var_prc_2);
-  /* Avoid double-free() condition */
-  var_fix_out=(var_sct **)nco_free(var_fix_out);
-  var_prc_out=(var_sct **)nco_free(var_prc_out);
-  (void)nco_var_lst_dvd(var_1,var_out,nbr_xtr_1,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix_1,&var_fix_out,&nbr_var_fix_1,&var_prc_1,&var_prc_out,&nbr_var_prc_1);
-
-  /* Die gracefully on unsupported features... */
-  if(nbr_var_fix_1 < nbr_var_fix_2){
-    (void)fprintf(fp_stdout,"%s: ERROR First file has fewer fixed variables than second file (%d < %d). This feature is TODO nco581.\n",prg_nm,nbr_var_fix_1,nbr_var_fix_2);
-      nco_exit(EXIT_FAILURE);
-  } /* endif */
-
-  /* Merge two variable lists into same order */
-  rcd=nco_var_lst_mrg(&var_prc_1,&var_prc_2,&nbr_var_prc_1,&nbr_var_prc_2); 
 
   /* Make output and input files consanguinous */
   if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt_1;
@@ -618,204 +547,62 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-  
-  /* Copy global attributes */
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
+
+  if(gpe){
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Group Path Edit (GPE) feature enabled\n",nco_prg_nm_get());
+    if(fl_out_fmt != NC_FORMAT_NETCDF4) (void)fprintf(stderr,"%s: WARNING Group Path Edit (GPE) requires netCDF4 output format in most cases (except flattening) but user explicitly requested output format = %s. This command will fail if the output file requires netCDF4 features like groups.\n",nco_prg_nm_get(),nco_fmt_sng(fl_out_fmt));
+  } /* !gpe */
+
+  /* Match 2 tables (find common objects) and export common objects */
+  (void)trv_tbl_mch(trv_tbl_1,trv_tbl_2,&cmn_lst,&nbr_cmn_nm);
+
+  /* Is this a CCM/CCSM/CF-format history tape? */
+  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id_1);
+    
+  /* Process common objects (DEFINE mode, True as flg_dfn parameter) */
+  (void)nco_prc_cmn_nm(in_id_1,in_id_2,out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,nco_op_typ,trv_tbl_1,trv_tbl_2,cmn_lst,nbr_cmn_nm,(nco_bool)True);
+
+  /* Copy global attributes from file 1 */
   (void)nco_att_cpy(in_id_1,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
-  
-  /* Catenate time-stamped command line to "history" global attribute */
+  /* Catenate timestamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
-  
-  if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
-  
-  /* Define dimensions in output file */
-  (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_xtr_1);
-  
-  /* fxm: TODO 550 put max_dim_sz/list(var_1,var_2) into var_def(var_out) */
-  /* Define variables in output file, copy their attributes */
-  (void)nco_var_dfn(in_id_1,fl_out,out_id,var_out,nbr_xtr_1,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
-  
-  /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl_1,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
+  if(HISTORY_APPEND) (void)nco_vrs_att_cat(out_id);
 
   /* Turn off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-  
+
   /* Take output file out of define mode */
-  (void)nco_enddef(out_id);
-  
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr_1);
-  
-  /* Copy variable data for non-processed variables */
-  (void)nco_msa_var_val_cpy(in_id_1,out_id,var_fix_1,nbr_var_fix_1,lmt_all_lst,nbr_dmn_fl_1);
-  
-  /* ncbo() code has been similar to ncea() (and ncra()) wherever possible
-     Major differences occur where performance would otherwise suffer
-     From now on, however, binary-file and binary-operation nature of ncbo()
-     is too different from ncea() paradigm to justify following ncea() style.
-     Instead, we adopt symmetric nomenclature (e.g., file_1, file_2), and 
-     perform differences variable-by-variable so peak memory usage goes as
-     Order(2*maximum variable size) rather than Order(3*maximum record size) or
-     Order(3*file size) */
-
-  /* Perform various error-checks on input file */
-  if(False) (void)nco_fl_cmp_err_chk();
-  
-  /* Default operation depends on invocation name */
-  if(nco_op_typ_sng == NULL) nco_op_typ=nco_op_typ_get(nco_op_typ_sng);
-    
-  /* Timestamp end of metadata setup and disk layout */
-  rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
-  ddra_info.tmr_flg=nco_tmr_rgl;
-
-  /* Loop over variables */
-#ifdef _OPENMP
-  /* OpenMP notes:
-     shared(): msk and wgt are not altered within loop
-     private(): wgt_avg does not need initialization */
-#pragma omp parallel for default(none) firstprivate(ddra_info) private(idx,in_id_1,in_id_2,dmn_idx,dmn_jdx) shared(dbg_lvl,dim_1,fl_in_1,fl_in_2,fl_out,flg_ddra,in_id_1_arr,in_id_2_arr,nbr_dmn_xtr_1,nbr_var_prc_1,nbr_var_prc_2,nco_op_typ,out_id,prg_nm,rcd,var_prc_1,var_prc_2,var_prc_out,lmt_all_lst,nbr_dmn_fl_1)
-#endif /* !_OPENMP */
-  for(idx=0;idx<nbr_var_prc_1;idx++){
-    int has_mss_val=False;
-    ptr_unn mss_val;
-
-    if(dbg_lvl >= nco_dbg_var && dbg_lvl < nco_dbg_nbr) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
-    if(dbg_lvl >= nco_dbg_var && dbg_lvl < nco_dbg_nbr) (void)fflush(fp_stderr);
-    
-    in_id_1=in_id_1_arr[omp_get_thread_num()];
-    in_id_2=in_id_2_arr[omp_get_thread_num()];
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
+
+  /* Process common objects (WRITE mode, False as flg_dfn parameter) */
+  (void)nco_prc_cmn_nm(in_id_1,in_id_2,out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,nco_op_typ,trv_tbl_1,trv_tbl_2,cmn_lst,nbr_cmn_nm,(nco_bool)False);
 
-    (void)nco_var_mtd_refresh(in_id_1,var_prc_1[idx]);
-    has_mss_val=var_prc_1[idx]->has_mss_val; 
-    (void)nco_msa_var_get(in_id_1,var_prc_1[idx],lmt_all_lst,nbr_dmn_fl_1);
-    
-    /* Find and set variable dmn_nbr, ID, mss_val, type in second file */
-    (void)nco_var_mtd_refresh(in_id_2,var_prc_2[idx]);
-    
-    /* Read hyperslab from second file */
-    (void)nco_msa_var_get(in_id_2,var_prc_2[idx],lmt_all_lst,nbr_dmn_fl_1);
-       
-    /* Check that all dims in var_prc_2 are in var_prc_1 */
-    for(dmn_idx=0;dmn_idx<var_prc_2[idx]->nbr_dim;dmn_idx++){
-      for(dmn_jdx=0;dmn_jdx<var_prc_1[idx]->nbr_dim;dmn_jdx++)  
-	if(!strcmp(var_prc_2[idx]->dim[dmn_idx]->nm,var_prc_1[idx]->dim[dmn_jdx]->nm))
-	  break;
-      if(dmn_jdx==var_prc_1[idx]->nbr_dim){
-	(void)fprintf(fp_stdout,"%s: ERROR Variables do not conform:\nFile %s variable %s has dimension %s not present in file %s variable %s\n",prg_nm,fl_in_2,var_prc_2[idx]->nm, var_prc_2[idx]->dim[dmn_idx]->nm,fl_in_1,var_prc_1[idx]->nm);
-	nco_exit(EXIT_FAILURE);
-      } /* endif error */
-    } /* end loop over idx */
-	    		
-    /* Die gracefully on unsupported features... */
-    if(var_prc_1[idx]->nbr_dim < var_prc_2[idx]->nbr_dim){
-      (void)fprintf(fp_stdout,"%s: ERROR Variable %s has lesser rank in first file than in second file (%d < %d). This feature is NCO TODO 552.\n",prg_nm,var_prc_1[idx]->nm,var_prc_1[idx]->nbr_dim,var_prc_2[idx]->nbr_dim);
-      nco_exit(EXIT_FAILURE);
-    } /* endif */
-    
-    if(var_prc_1[idx]->nbr_dim > var_prc_2[idx]->nbr_dim) (void)ncap_var_cnf_dmn(&var_prc_out[idx],&var_prc_2[idx]);
-    
-    /* var2 now conforms in size to var1, and is in memory */
-    
-    /* fxm: TODO 268 allow var1 or var2 to typecast */
-    /* Make sure var2 conforms to type of var1 */
-    if(var_prc_1[idx]->type != var_prc_2[idx]->type){
-      if(dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO Input variables do not conform in type:\nFile 1 = %s variable %s has type %s\nFile 2 = %s variable %s has type %s\nFile 3 = %s variable %s will have type %s\n",prg_nm,fl_in_1,var_prc_1[idx]->nm,nco_typ_sng(var_prc_1[idx]->type),fl_in_2,var_prc_2[idx]->nm,nco_typ_sng(var_prc_2[idx]->type),fl_out,var_prc_1[idx]->nm,nco_typ_sng(var_prc_1[idx]->type));
-    }  /* endif different type */
-    var_prc_2[idx]=nco_var_cnf_typ(var_prc_1[idx]->type,var_prc_2[idx]);
-    
-    /* Change missing_value of var_prc_2, if any, to missing_value of var_prc_1, if any */
-    has_mss_val=nco_mss_val_cnf(var_prc_1[idx],var_prc_2[idx]);
-    
-    /* mss_val in fl_1, if any, overrides mss_val in fl_2 */
-    if(has_mss_val) mss_val=var_prc_1[idx]->mss_val;
-    
-    /* Perform specified binary operation */
-    switch(nco_op_typ){
-    case nco_op_add: /* [enm] Add file_1 to file_2 */
-      (void)nco_var_add(var_prc_1[idx]->type,var_prc_1[idx]->sz,has_mss_val,mss_val,var_prc_2[idx]->val,var_prc_1[idx]->val); break;
-    case nco_op_mlt: /* [enm] Multiply file_1 by file_2 */
-      (void)nco_var_mlt(var_prc_1[idx]->type,var_prc_1[idx]->sz,has_mss_val,mss_val,var_prc_2[idx]->val,var_prc_1[idx]->val); break;
-    case nco_op_dvd: /* [enm] Divide file_1 by file_2 */
-      (void)nco_var_dvd(var_prc_1[idx]->type,var_prc_1[idx]->sz,has_mss_val,mss_val,var_prc_2[idx]->val,var_prc_1[idx]->val); break;
-    case nco_op_sbt: /* [enm] Subtract file_2 from file_1 */
-      (void)nco_var_sbt(var_prc_1[idx]->type,var_prc_1[idx]->sz,has_mss_val,mss_val,var_prc_2[idx]->val,var_prc_1[idx]->val); break;
-    default: /* Other defined nco_op_typ values are valid for ncra(), ncrcat(), ncwa(), not ncbo() */
-      (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in binary operation\n",prg_nm);
-      nco_exit(EXIT_FAILURE);
-      break;
-    } /* end case */
-    
-    var_prc_2[idx]->val.vp=nco_free(var_prc_2[idx]->val.vp);
-
-#ifdef _OPENMP
-#pragma omp critical
-#endif /* _OPENMP */
-    { /* begin OpenMP critical */
-      /* Copy result to output file and free workspace buffer */
-      if(var_prc_1[idx]->nbr_dim == 0){
-	(void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_1[idx]->val.vp,var_prc_1[idx]->type);
-      }else{ /* end if variable is scalar */
-	(void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_1[idx]->val.vp,var_prc_1[idx]->type);
-      } /* end else */
-    } /* end OpenMP critical */
-    var_prc_1[idx]->val.vp=nco_free(var_prc_1[idx]->val.vp);
-    
-    if(flg_ddra){
-      /* DDRA diagnostics
-	 Usage:
-	 ncbo -O -C --mdl -p ~/nco/data in.nc in.nc ~/foo.nc
-	 ncbo -O -C --mdl -p ${DATA}/nco_bm stl_5km.nc stl_5km.nc ~/foo.nc
-	 ncbo -O -C --mdl -p ${DATA}/nco_bm gcm_T85.nc gcm_T85.nc ~/foo.nc */
-      
-      /* Assign remaining input for DDRA diagnostics */
-      ddra_info.lmn_nbr=var_prc_1[idx]->sz; /* [nbr] Variable size */
-      ddra_info.nco_op_typ=nco_op_typ; /* [enm] Operation type */
-      ddra_info.rnk_var=var_prc_1[idx]->nbr_dim; /* I [nbr] Variable rank (in input file) */
-      ddra_info.var_idx=idx; /* [enm] Index */
-      ddra_info.wrd_sz=nco_typ_lng(var_prc_1[idx]->type); /* [B] Bytes per element */
-      
-      /* DDRA diagnostics */
-      rcd+=nco_ddra /* [fnc] Count operations */
-	(var_prc_1[idx]->nm, /* I [sng] Variable name */
-	 (char *)NULL, /* I [sng] Weight name */
-	 &ddra_info); /* I [sct] DDRA information */
-      
-    } /* !flg_ddra */
-    
-  } /* end (OpenMP parallel for) loop over idx */
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
-  
   /* Close input netCDF files */
   for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_1_arr[thr_idx]);
   for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_2_arr[thr_idx]);
-  
+
   /* Close output file and move it from temporary to permanent location */
-  (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
-  
+  if(fl_out_tmp) (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
+
   /* Remove local copy of file */
-  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_1);
-  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_2);
-  
+  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_1);
+  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_2);
+
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncbo-specific memory */
     if(fl_in_1) fl_in_1=(char *)nco_free(fl_in_1);
     if(fl_in_2) fl_in_2=(char *)nco_free(fl_in_2);
-    
-    /* NCO-generic clean-up */
-    /* Free individual strings/arrays */
-    /* NB: free lmt[] is now referenced within lmt_all_lst[idx] */
-    for(idx=0;idx<nbr_dmn_fl_1;idx++)
-      for(jdx=0;jdx<lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-         lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-
-    if(nbr_dmn_fl_1 > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl_1);   
-    lmt=(lmt_sct**)nco_free(lmt); 
 
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
     if(fl_pth) fl_pth=(char *)nco_free(fl_pth);
@@ -830,31 +617,19 @@ main(int argc,char **argv)
     /* Free limits */
     for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
     for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
-    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
-    if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
-    /* Free dimension lists */
-    if(nbr_dmn_xtr_1 > 0) dim_1=nco_dmn_lst_free(dim_1,nbr_dmn_xtr_1);
-    if(nbr_dmn_xtr_1 > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr_1);
-    if(nbr_dmn_xtr_2 > 0) dim_2=nco_dmn_lst_free(dim_2,nbr_dmn_xtr_2);
-
-    /* Free variable lists 
-       Using nco_var_lst_free() to free main var_1 and var_2 lists would fail
-       if ncap_var_prc_dmn() had to broadcast any variables because pointer
-       var_1 and var_2 still contain dangling pointer to old variable.
-       Hence, use nco_var_lst_free() to free prc and fix lists then
-       use nco_free() to free main var_1 and var_2 lists.
-       Dangling pointers in var_1 and var_2 are unsafe: fxm TODO 578 */
-    if(nbr_var_prc_1 > 0) var_prc_1=nco_var_lst_free(var_prc_1,nbr_var_prc_1);
-    if(nbr_var_fix_1 > 0) var_fix_1=nco_var_lst_free(var_fix_1,nbr_var_fix_1);
-    if(nbr_var_prc_2 > 0) var_prc_2=nco_var_lst_free(var_prc_2,nbr_var_prc_2);
-    if(nbr_var_fix_2 > 0) var_fix_2=nco_var_lst_free(var_fix_2,nbr_var_fix_2);
-    var_1=(var_sct **)nco_free(var_1);
-    var_2=(var_sct **)nco_free(var_2);
-    if(nbr_xtr_1 > 0) var_out=nco_var_lst_free(var_out,nbr_xtr_1);
-    var_prc_out=(var_sct **)nco_free(var_prc_out);
-    var_fix_out=(var_sct **)nco_free(var_fix_out);
+    if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr); 
+    trv_tbl_free(trv_tbl_1);
+    trv_tbl_free(trv_tbl_2);
+    if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
+    /* Memory management for GPE names */
+    for(idx=0;idx<nbr_gpe_nm;idx++) gpe_nm[idx].var_nm_fll=(char *)nco_free(gpe_nm[idx].var_nm_fll);
+    if(nbr_gpe_nm) gpe_nm=(gpe_nm_sct *)nco_free(gpe_nm);
+    /* Memory management for common names list */
+    for(idx=0;idx<nbr_cmn_nm;idx++) cmn_lst[idx].var_nm_fll=(char *)nco_free(cmn_lst[idx].var_nm_fll);
+    if(nbr_cmn_nm > 0) cmn_lst=(nco_cmn_t *)nco_free(cmn_lst);
+
   } /* !flg_cln */
 
   /* End timer */ 
@@ -864,4 +639,5 @@ main(int argc,char **argv)
   if(rcd != NC_NOERR) nco_err_exit(rcd,"main");
   nco_exit_gracefully();
   return EXIT_SUCCESS;
+
 } /* end main() */
diff --git a/src/nco/ncecat.c b/src/nco/ncecat.c
index 1eb95c8..bd3399b 100644
--- a/src/nco/ncecat.c
+++ b/src/nco/ncecat.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncecat.c,v 1.192 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncecat.c,v 1.346 2013/11/19 01:19:11 zender Exp $ */
 
 /* ncecat -- netCDF ensemble concatenator */
 
-/* Purpose: Join variables across files into a new record variable */
+/* Purpose: Join variables across files with new record variable or aggregate files as groups */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -29,6 +29,17 @@
    University of California, Irvine
    Irvine, CA 92697-3100 */
 
+/* URL: http://nco.cvs.sf.net/nco/nco/src/nco/ncecat.c
+
+   Usage:
+   ncecat -O -D 1 -p ${HOME}/nco/data in_grp.nc in_grp.nc ~/foo.nc
+   ncecat -O -D 1 -G ensemble:-1 -p ${HOME}/nco/data in_grp.nc in_grp.nc ~/foo.nc
+   ncecat -O -D 1 -G ensemble:1 -p ${HOME}/nco/data in_grp.nc in_grp.nc ~/foo.nc
+   ncecat -O -D 1 -G ensemble -p ${HOME}/nco/data in_grp.nc in_grp.nc ~/foo.nc
+   ncecat -O -D 1 --gag -p ${HOME}/nco/data h0001.nc h0002.nc ~/foo.nc
+   ncecat -O -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
+   ncecat -O -n 3,4,1 -p /ZENDER/tmp -l ${HOME} h0001.nc ~/foo.nc */
+
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
 #endif /* !HAVE_CONFIG_H */
@@ -37,10 +48,12 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -65,19 +78,28 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_APPEND=True; /* Option H */
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GROUP_AGGREGATE=False; /* Option G */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
+  nco_bool HAVE_LIMITS=False; /* [flg] Are there user limits? (-d) */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool USE_MM3_WORKAROUND=False; /* [flg] Faster copy on Multi-record Multi-variable netCDF3 files */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool RECORD_AGGREGATE=True; /* Option G */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
 
   char **fl_lst_abb=NULL; /* Option a */
   char **fl_lst_in;
+  char **grp_lst_in=NULL;
   char **var_lst_in=NULL_CEWI;
   char *aux_arg[NC_MAX_DIMS];
   char *cmd_ln;
@@ -89,16 +111,22 @@ main(int argc,char **argv)
   char *fl_out_tmp;
   char *fl_pth=NULL; /* Option p */
   char *fl_pth_lcl=NULL; /* Option l */
+  char *gpe_arg=NULL; /* [sng] GPE argument */
+  char *grp_out=NULL; /* [sng] Group name */
   char *lmt_arg[NC_MAX_DIMS];
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
   char *rec_dmn_nm=NULL; /* [sng] New record dimension name */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  /* NCO_GRP_OUT_SFX_LNG is number of consecutive numeric digits automatically generated as group name suffixes */
+#define	NCO_GRP_OUT_SFX_LNG 2
+  char grp_out_sfx[NCO_GRP_OUT_SFX_LNG+1L];
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
 
-  const char * const CVS_Id="$Id: ncecat.c,v 1.192 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.192 $";
-  const char * const opt_sht_lst="346ACcD:d:FHhL:l:Mn:Oo:p:rRt:u:v:X:x-:";
+  const char * const CVS_Id="$Id: ncecat.c,v 1.346 2013/11/19 01:19:11 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.346 $";
+  const char * const opt_sht_lst="3467ACcD:d:Fg:G:HhL:l:Mn:Oo:p:rRt:u:v:X:x-:";
 
   cnk_sct **cnk=NULL_CEWI;
 
@@ -109,18 +137,17 @@ main(int argc,char **argv)
   ddra_info_sct ddra_info={.flg_ddra=False};
 #endif /* !__cplusplus */
 
-  dmn_sct *rec_dmn;
-  dmn_sct **dim;
-  dmn_sct **dmn_out;
-  
   extern char *optarg;
   extern int optind;
-  
+
   /* Using naked stdin/stdout/stderr in parallel region generates warning
-     Copy appropriate filehandle to variable scoped shared in parallel clause */
+  Copy appropriate filehandle to variable scoped shared in parallel clause */
   FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
+  FILE *fp_bnr=NULL; /* [fl] Unformatted binary output file handle */
+
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
 
-  int *in_id_arr;
+  int *in_id_arr=NULL;
 
   int abb_arg_nbr=0;
   int aux_nbr=0; /* [nbr] Number of auxiliary coordinate hyperslabs specified */
@@ -133,122 +160,148 @@ main(int argc,char **argv)
   int fl_in_fmt; /* [enm] Input file format */
   int fl_out_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Output file format */
   int fll_md_old; /* [enm] Old fill mode */
-  int idx;
-  int jdx;
+  int gpe_id; /* [id] Group ID of GPE path (diagnostic only) */
+  int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
   int in_id;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int lmt_nbr_rgn=0; /* Option d. Original limit number for GTT initialization */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
-  int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
-  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
+  int var_idx;
   int var_lst_in_nbr=0;
 
-  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
-  lmt_sct **lmt;
-  lmt_all_sct **lmt_all_lst; /* List of *lmt_all structures */
-
   long idx_rec_out=0L; /* idx_rec_out gets incremented */
-  
-  nm_id_sct *dmn_lst;
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */  
 
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t grp_out_lng; /* [nbr] Length of original, canonicalized GPE specification filename component */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
-  var_sct **var;
+  var_sct **var=NULL;
   var_sct **var_fix;
   var_sct **var_fix_out;
-  var_sct **var_out;
+  var_sct **var_out=NULL;
   var_sct **var_prc;
   var_sct **var_prc_out;
-  
+
+  trv_tbl_sct *trv_tbl=NULL; /* [lst] Traversal table */
+
   static struct option opt_lng[]=
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
-      {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"fl_fmt",required_argument,0,0},
-      {"file_format",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"3",no_argument,0,'3'},
-      {"4",no_argument,0,'4'},
-      {"64bit",no_argument,0,'4'},
-      {"netcdf4",no_argument,0,'4'},
-      {"append",no_argument,0,'A'},
-      {"coords",no_argument,0,'c'},
-      {"crd",no_argument,0,'c'},
-      {"no-coords",no_argument,0,'C'},
-      {"no-crd",no_argument,0,'C'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"dimension",required_argument,0,'d'},
-      {"dmn",required_argument,0,'d'},
-      {"fortran",no_argument,0,'F'},
-      {"ftn",no_argument,0,'F'},
-      {"fl_lst_in",no_argument,0,'H'},
-      {"file_list",no_argument,0,'H'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"glb_mtd_spr",no_argument,0,'M'},
-      {"global_metadata_suppress",no_argument,0,'M'},
-      {"nintap",required_argument,0,'n'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"path",required_argument,0,'p'},
-      {"retain",no_argument,0,'R'},
-      {"rtn",no_argument,0,'R'},
-      {"revision",no_argument,0,'r'},
-      {"thr_nbr",required_argument,0,'t'},
-      {"threads",required_argument,0,'t'},
-      {"omp_num_threads",required_argument,0,'t'},
-      {"ulm_nm",required_argument,0,'u'},
-      {"rcd_nm",required_argument,0,'u'},
-      {"variable",required_argument,0,'v'},
-      {"auxiliary",required_argument,0,'X'},
-      {"exclude",no_argument,0,'x'},
-      {"xcl",no_argument,0,'x'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    }; /* end opt_lng */
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"gag",no_argument,0,0}, /* [flg] Group aggregation */
+    {"aggregate_group",no_argument,0,0}, /* [flg] Group aggregation */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"md5_dgs",no_argument,0,0}, /* [flg] Perform MD5 digests */
+    {"md5_digest",no_argument,0,0}, /* [flg] Perform MD5 digests */
+    {"mrd",no_argument,0,0}, /* [enm] Multiple Record Dimension convention */
+    {"multiple_record_dimension",no_argument,0,0}, /* [enm] Multiple Record Dimension convention */
+    {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+    {"intersection",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+    {"nsx",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+    {"union",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+    {"unn",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
+    {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
+    {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
+    {"fl_fmt",required_argument,0,0},
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"3",no_argument,0,'3'},
+    {"4",no_argument,0,'4'},
+    {"64bit",no_argument,0,'4'},
+    {"netcdf4",no_argument,0,'4'},
+    {"append",no_argument,0,'A'},
+    {"coords",no_argument,0,'c'},
+    {"crd",no_argument,0,'c'},
+    {"no-coords",no_argument,0,'C'},
+    {"no-crd",no_argument,0,'C'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"dimension",required_argument,0,'d'},
+    {"dmn",required_argument,0,'d'},
+    {"fortran",no_argument,0,'F'},
+    {"ftn",no_argument,0,'F'},
+    {"gpe",required_argument,0,'G'}, /* [sng] Group Path Edit (GPE) */
+    {"group",required_argument,0,'g'},
+    {"grp",required_argument,0,'g'},
+    {"fl_lst_in",no_argument,0,'H'},
+    {"file_list",no_argument,0,'H'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"glb_mtd_spp",no_argument,0,'M'},
+    {"global_metadata_suppress",no_argument,0,'M'},
+    {"nintap",required_argument,0,'n'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"path",required_argument,0,'p'},
+    {"retain",no_argument,0,'R'},
+    {"rtn",no_argument,0,'R'},
+    {"revision",no_argument,0,'r'},
+    {"thr_nbr",required_argument,0,'t'},
+    {"threads",required_argument,0,'t'},
+    {"omp_num_threads",required_argument,0,'t'},
+    {"ulm_nm",required_argument,0,'u'},
+    {"rcd_nm",required_argument,0,'u'},
+    {"variable",required_argument,0,'v'},
+    {"auxiliary",required_argument,0,'X'},
+    {"exclude",no_argument,0,'x'},
+    {"xcl",no_argument,0,'x'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
- 
+
   /* Start timer and save command line */ 
   ddra_info.tmr_flg=nco_tmr_srt;
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -260,33 +313,55 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"gag") || !strcmp(opt_crr,"aggregate_group")) GROUP_AGGREGATE=True; /* [flg] Aggregate files into groups not records */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"md5_dgs") || !strcmp(opt_crr,"md5_digest")){
+        if(!md5) md5=nco_md5_ini();
+	md5->dgs=True;
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will perform MD5 digests of input and output hyperslabs\n",nco_prg_nm_get());
+      } /* endif "md5_dgs" */
+      if(!strcmp(opt_crr,"mrd") || !strcmp(opt_crr,"multiple_record_dimension")) nco_mrd_cnv=nco_mrd_allow; /* [enm] Multiple Record Dimension convention */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
+      if(!strcmp(opt_crr,"unn") || !strcmp(opt_crr,"union")) GRP_VAR_UNN=True;
+      if(!strcmp(opt_crr,"nsx") || !strcmp(opt_crr,"intersection")) GRP_VAR_UNN=False;
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -301,6 +376,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -311,16 +389,33 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
       lmt_arg[lmt_nbr]=(char *)strdup(optarg);
       lmt_nbr++;
+      lmt_nbr_rgn=lmt_nbr;
+      HAVE_LIMITS=True;
       break;
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      /* NB: GNU getopt() optional argument syntax is ugly (requires "=" sign) so avoid it
+      http://stackoverflow.com/questions/1052746/getopt-does-not-parse-optional-arguments-to-parameters */
+      gpe=nco_gpe_prs_arg(optarg);
+      grp_out=(char *)strdup(gpe->nm_cnn); /* [sng] Group name */
+      grp_out_lng=gpe->lng_cnn;
+      GROUP_AGGREGATE=True;
+      break;
+    case 'g': /* Copy group argument for later processing */
+      /* Replace commas with hashes when within braces (convert back later) */
+      optarg_lcl=(char *)strdup(optarg);
+      (void)nco_rx_comma2hash(optarg_lcl);
+      grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
+      optarg_lcl=(char *)nco_free(optarg_lcl);
+      break;
     case 'H': /* Toggle writing input file list attribute */
       FL_LST_IN_APPEND=!FL_LST_IN_APPEND;
       break;
@@ -340,9 +435,9 @@ main(int argc,char **argv)
     case 'n': /* NINTAP-style abbreviation of files to process */
       fl_lst_abb=nco_lst_prs_2D(optarg,",",&abb_arg_nbr);
       if(abb_arg_nbr < 1 || abb_arg_nbr > 5){
-	(void)fprintf(stdout,"%s: ERROR Incorrect abbreviation for file list\n",prg_nm);
-	(void)nco_usg_prn();
-	nco_exit(EXIT_FAILURE);
+        (void)fprintf(stdout,"%s: ERROR Incorrect abbreviation for file list\n",nco_prg_nm);
+        (void)nco_usg_prn();
+        nco_exit(EXIT_FAILURE);
       } /* end if */
       break;
     case 'O': /* Toggle FORCE_OVERWRITE */
@@ -355,7 +450,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -374,15 +469,15 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -392,121 +487,71 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
     } /* end switch */
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
-  
+
+  trv_tbl_init(&trv_tbl);
+
+  if(GROUP_AGGREGATE){
+    RECORD_AGGREGATE=!GROUP_AGGREGATE;
+    fl_out_fmt=NC_FORMAT_NETCDF4; 
+  } /* !GROUP_AGGREGATE */
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
 
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-    
-  /* Initialize thread information */
-  thr_nbr=nco_openmp_ini(thr_nbr);
-  in_id_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
-
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
-  
-  /* Parse auxiliary coordinates */
-  if(aux_nbr > 0){
-     int aux_idx_nbr;
-     aux=nco_aux_evl(in_id,aux_nbr,aux_arg,&aux_idx_nbr);
-     if(aux_idx_nbr > 0){
-        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
-        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
-        int aux_idx=0;
-        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
-        lmt_nbr=lmt_nbr_new;
-     } /* endif aux */
-  } /* endif aux_nbr */
-  
-  /* Get number of variables, dimensions, and record dimension ID of input file */
-  (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id);
-  (void)nco_inq_format(in_id,&fl_in_fmt);
-  
-  /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
-
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
 
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
 
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  if(RECORD_AGGREGATE){
 
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+    /* Initialize thread information */
+    thr_nbr=nco_openmp_ini(thr_nbr);
+    in_id_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
 
-  /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
-    
-  /* We now have final list of variables to extract. Phew. */
-  
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
-
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
-  
-  /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
+    /* Open file using appropriate buffer size hints and verbosity */
+    rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
 
-  /* Fill-in dimension structure for all extracted dimensions */
-  dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++) dim[idx]=nco_dmn_fll(in_id,dmn_lst[idx].id,dmn_lst[idx].nm);
+    (void)nco_inq_format(in_id,&fl_in_fmt); 
 
-  /* Dimension list no longer needed */
-  dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
+    /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+    (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl);
 
+    /* Get number of variables, dimensions, and global attributes in file, file format */
+    (void)trv_tbl_inq((int *)NULL,(int *)NULL,(int *)NULL,&nbr_dmn_fl,(int *)NULL,(int *)NULL,(int *)NULL,(int *)NULL,&nbr_var_fl,trv_tbl);
 
-  /* Duplicate input dimension structures for output dimension structures */
-  dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0  ; idx<nbr_dmn_xtr ; idx++){ 
-    dmn_out[idx]=nco_dmn_dpl(dim[idx]);
-    (void)nco_dmn_xrf(dim[idx],dmn_out[idx]);
-  }
+    /* Fill-in variable structure list for all extracted variables */
+    var=nco_fll_var_trv(in_id,&xtr_nbr,trv_tbl);
 
-  /* Merge hyperslab limit information into dimension structures */
-  if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
+    var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+    for(var_idx=0;var_idx<xtr_nbr;var_idx++) var_out[var_idx]=nco_var_dpl(var[var_idx]);
 
-  /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
-    var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
-    var_out[idx]=nco_var_dpl(var[idx]);
-    (void)nco_xrf_var(var[idx],var_out[idx]);
-    (void)nco_xrf_dmn(var_out[idx]);
-  } /* end loop over idx */
-  /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+    /* Is this a CCM/CCSM/CF-format history tape? */
+    CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
 
-  /* Refresh var_out with dim_out data */
-  (void)nco_var_dmn_refresh(var_out,nbr_xtr);
+    /* Divide variable lists into lists of fixed variables and variables to be processed */
+    (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc,trv_tbl);
 
-  /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+    /* Store processed and fixed variables info into GTT */
+    (void)nco_var_prc_fix_trv(nbr_var_prc,var_prc,nbr_var_fix,var_fix,trv_tbl);
+  
+  } /* !RECORD_AGGREGATE */
 
   /* Make output and input files consanguinous */
   if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
@@ -515,66 +560,19 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-
-  /* Copy global attributes */
-  if(CPY_GLB_METADATA) (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
-  
-  /* Catenate time-stamped command line to "history" global attribute */
-  if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
-
-  /* Add input file list global attribute */
-  if(FL_LST_IN_APPEND  && HISTORY_APPEND && FL_LST_IN_FROM_STDIN) (void)nco_fl_lst_att_cat(out_id,fl_lst_in,fl_nbr);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
 
   /* ncecat-specific operations */
-  if(True){
-
-    /* Always construct new "record" dimension from scratch */
-    rec_dmn=(dmn_sct *)nco_malloc(sizeof(dmn_sct));
-    if(rec_dmn_nm == NULL) rec_dmn->nm=rec_dmn_nm=(char *)strdup("record"); else rec_dmn->nm=rec_dmn_nm;
-    rec_dmn->id=-1;
-    rec_dmn->nc_id=-1;
-    rec_dmn->xrf=NULL;
-    rec_dmn->val.vp=NULL;
-    rec_dmn->is_crd_dmn=False;
-    rec_dmn->is_rec_dmn=True;
-    rec_dmn->sz=0L;
-    rec_dmn->cnt=0L;
-    rec_dmn->srd=0L;
-    rec_dmn->srt=0L;
-    rec_dmn->end=rec_dmn->sz-1L;
-      
-    /* Change existing record dimension, if any, to regular dimension */
-    for(idx=0;idx<nbr_dmn_xtr;idx++){
-      /* Is any input dimension a record dimension? */
-      if(dmn_out[idx]->is_rec_dmn){
-	dmn_out[idx]->is_rec_dmn=False;
-	break;
-      } /* end if */
-    } /* end loop over idx */
+  if(RECORD_AGGREGATE){
 
-    /* Add record dimension to end of dimension list */
-    nbr_dmn_xtr++;
-    dmn_out=(dmn_sct **)nco_realloc(dmn_out,nbr_dmn_xtr*sizeof(dmn_sct **));
-    dmn_out[nbr_dmn_xtr-1]=rec_dmn;
+    if(rec_dmn_nm == NULL) rec_dmn_nm=(char *)strdup("record"); 
 
-  } /* end if */
-
-  if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
-  
-  /* Define dimensions in output file */
-  (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_xtr);
-
-
-  
-
-  if(True){
     /* Prepend record dimension to beginning of all vectors for processed variables */
-    for(idx=0;idx<nbr_var_prc;idx++){
+    for(int idx=0;idx<nbr_var_prc;idx++){
       var_prc_out[idx]->nbr_dim++;
       var_prc_out[idx]->is_rec_var=True;
       var_prc_out[idx]->sz_rec=var_prc_out[idx]->sz;
-      
+
       /* Allocate space to hold dimension IDs */
       var_prc_out[idx]->dim=(dmn_sct **)nco_realloc(var_prc_out[idx]->dim,var_prc_out[idx]->nbr_dim*sizeof(dmn_sct *));
       var_prc_out[idx]->dmn_id=(int *)nco_realloc(var_prc_out[idx]->dmn_id,var_prc_out[idx]->nbr_dim*sizeof(int));
@@ -582,133 +580,293 @@ main(int argc,char **argv)
       var_prc_out[idx]->end=(long *)nco_realloc(var_prc_out[idx]->end,var_prc_out[idx]->nbr_dim*sizeof(long int));
       var_prc_out[idx]->srd=(long *)nco_realloc(var_prc_out[idx]->srd,var_prc_out[idx]->nbr_dim*sizeof(long int));
       var_prc_out[idx]->srt=(long *)nco_realloc(var_prc_out[idx]->srt,var_prc_out[idx]->nbr_dim*sizeof(long int));
-      
+
       /* Moves current array by one to make room for new record dimension info */
       (void)memmove((void *)(var_prc_out[idx]->dim+1),(void *)(var_prc_out[idx]->dim),(var_prc_out[idx]->nbr_dim-1)*sizeof(dmn_sct *));
       (void)memmove((void *)(var_prc_out[idx]->dmn_id+1),(void *)(var_prc_out[idx]->dmn_id),(var_prc_out[idx]->nbr_dim-1)*sizeof(int));
-      (void)memmove((void *)(var_prc_out[idx]->cnt+1),(void *)(var_prc_out[idx]->cnt),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
-      (void)memmove((void *)(var_prc_out[idx]->end+1),(void *)(var_prc_out[idx]->end),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
-      (void)memmove((void *)(var_prc_out[idx]->srd+1),(void *)(var_prc_out[idx]->srd),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
-      (void)memmove((void *)(var_prc_out[idx]->srt+1),(void *)(var_prc_out[idx]->srt),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
-      
+      (void)memmove((void *)(var_prc_out[idx]->cnt+1L),(void *)(var_prc_out[idx]->cnt),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
+      (void)memmove((void *)(var_prc_out[idx]->end+1L),(void *)(var_prc_out[idx]->end),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
+      (void)memmove((void *)(var_prc_out[idx]->srd+1L),(void *)(var_prc_out[idx]->srd),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
+      (void)memmove((void *)(var_prc_out[idx]->srt+1L),(void *)(var_prc_out[idx]->srt),(var_prc_out[idx]->nbr_dim-1)*sizeof(long int));
+
       /* Insert value for new record dimension */
-      var_prc_out[idx]->dim[0]=rec_dmn;
-      var_prc_out[idx]->dmn_id[0]=rec_dmn->id;
       var_prc_out[idx]->cnt[0]=1L;
       var_prc_out[idx]->end[0]=-1L;
       var_prc_out[idx]->srd[0]=-1L;
       var_prc_out[idx]->srt[0]=-1L;
-		    
     } /* end loop over idx */
-    
-  } /* end if */
-
-  /* Define variables in output file, copy their attributes */
-  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
-
-  /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
-
-  /* Turn off default filling behavior to enhance efficiency */
-  nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-  
-  /* Take output file out of define mode */
-  (void)nco_enddef(out_id);
-  
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
-
-  /* Copy variable data for non-processed variables */
-  (void)nco_msa_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix,lmt_all_lst,nbr_dmn_fl);
 
-  /* Close first input netCDF file */
-  (void)nco_close(in_id);
-  
-  /* Timestamp end of metadata setup and disk layout */
-  rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
-  ddra_info.tmr_flg=nco_tmr_rgl;
+    /* Define dimensions, extracted groups, variables, and attributes in output file */
+    (void)nco_xtr_dfn(in_id,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,True,True,nco_pck_plc_nil,rec_dmn_nm,trv_tbl);
+
+    /* Copy global attributes */
+#ifdef COPY_ROOT_GLOBAL_ATTRIBUTES
+    if(CPY_GLB_METADATA) (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True); /* Superceded by nco_xtr_dfn() */
+#endif 
+    /* Catenate time-stamped command line to "history" global attribute */
+    if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
+    /* Add input file list global attribute */
+    if(FL_LST_IN_APPEND && HISTORY_APPEND && FL_LST_IN_FROM_STDIN) (void)nco_fl_lst_att_cat(out_id,fl_lst_in,fl_nbr);
+    if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
+
+    /* Turn off default filling behavior to enhance efficiency */
+    nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
+
+    /* Take output file out of define mode */
+    if(hdr_pad == 0UL){
+      (void)nco_enddef(out_id);
+    }else{
+      (void)nco__enddef(out_id,hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+    } /* hdr_pad */
+
+    /* Assign zero to start and unity to stride vectors in output variables */
+    (void)nco_var_srd_srt_set(var_out,xtr_nbr);
+
+    /* Copy variable data for non-processed variables */
+    (void)nco_cpy_fix_var_trv(in_id,out_id,gpe,trv_tbl);  
+
+    /* Close first input netCDF file */
+    (void)nco_close(in_id);
+
+    /* Timestamp end of metadata setup and disk layout */
+    rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
+    ddra_info.tmr_flg=nco_tmr_rgl;
+  } /* !RECORD_AGGREGATE */
+
+  if(GROUP_AGGREGATE){
+#ifndef ENABLE_NETCDF4
+    (void)fprintf(stderr,"%s: ERROR GAG requires netCDF4 capabilities. HINT: Rebuild NCO with netCDF4 enabled.\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
+#endif /* ENABLE_NETCDF4 */
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Group Aggregation (GAG) feature enabled\n",nco_prg_nm_get());
+    if(fl_out_fmt != NC_FORMAT_NETCDF4){
+      (void)fprintf(stderr,"%s: ERROR Group Aggregation requires netCDF4 output format but user explicitly requested format = %s\n",nco_prg_nm_get(),nco_fmt_sng(fl_out_fmt));
+      nco_exit(EXIT_FAILURE);
+    } /* endif err */
+  } /* !GROUP_AGGREGATE */
 
   /* Loop over input files */
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
     /* Parse filename */
-    if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,(int *)NULL,fl_lst_in,abb_arg_nbr, fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in);
+    if(fl_idx) fl_in=nco_fl_nm_prs(fl_in,fl_idx,(int *)NULL,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl && FILE_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
-    
-    /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
-    
-    /* Perform various error-checks on input file */
-    if(False) (void)nco_fl_cmp_err_chk();
-
-    /* OpenMP with threading over variables, not files */
+    if(fl_idx) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl && FL_RTR_RMT_LCN) (void)fprintf(stderr,", local file is %s",fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+
+    if(GROUP_AGGREGATE){
+      size_t gpe_arg_lng; /* [nbr] Length of group specification */
+      if(grp_out){
+        /* Append enumerated counter to end of user-specified root group path */
+        sprintf(grp_out_sfx,"%02d",fl_idx);
+        gpe_arg_lng=grp_out_lng+NCO_GRP_OUT_SFX_LNG+gpe->lng_edt;
+        gpe_arg=(char *)nco_malloc((gpe_arg_lng+1L)*sizeof(char));
+        (void)strcpy(gpe_arg,grp_out);
+        (void)strcat(gpe_arg,grp_out_sfx);
+        if(gpe->edt) (void)strcat(gpe_arg,gpe->edt);
+      }else{
+        /* Use filename stub as group name */
+        char *stb_srt_psn; /* [sng] Starting position of "stub", i.e., last component of filename */
+        size_t fl_in_lng; /* [nbr] Length of filename */
+        size_t sfx_fst; /* [nbr] Offset of suffix from start of string */
+        size_t sfx_lng; /* [nbr] Suffix has this many characters */
+
+        /* Is there a .nc, .cdf, .nc3, or .nc4 suffix? or an .hdf, .HDF, .h5, .H5, or .he5 suffix? */
+        fl_in_lng=strlen(fl_in);
+        sfx_lng=3L;
+        sfx_fst=fl_in_lng-sfx_lng;
+        /* Sample data found in, e.g., ftp://ftp.unidata.ucar.edu/pub/netcdf/sample_data and http://hdfeos.org/zoo
+	   Two versions of HDF-EOS exist: HDF-EOS2 for HDF4, and HDF-EOS5 for HDF5 */
+        if(strncmp(fl_in+sfx_fst,".nc",sfx_lng) && /* netCDF standard suffix */
+	   strncmp(fl_in+sfx_fst,".H5",sfx_lng) && /* HDF5 suffix used by ICESat GLAS, e.g., GLAH05_633_2103_001_1107_3_01_0001.H5 */
+	   strncmp(fl_in+sfx_fst,".h5",sfx_lng)){ /* HDF5 suffix used by BUV, MEaSUREs Ozone, SBUV, e.g., BUV-Nimbus04_L3zm_v01-00-2012m0203t144121.h5, MSO3L3zm5_v01-02-2013m0907t142428.h5 */
+	  sfx_lng=4L;
+	  sfx_fst=fl_in_lng-sfx_lng;
+	  if(strncmp(fl_in+sfx_fst,".cdf",sfx_lng) && /* netCDF old-fashioned suffix */
+	     strncmp(fl_in+sfx_fst,".hdf",sfx_lng) && /* HDF-EOS2 (HDF4) suffix used by AIRS, AMSR-E, MODIS, MOPPITT, SeaWiFS, e.g., AIRS.2002.08.01.L3.RetStd_H031.v4.0.21.0.G06104133732.hdf, MSR_E_L2_Rain_V10_200905312326_A.hdf, MOD10CM.A2007001.005.2007108111758.hdf, MOP01-20121231-L1V3.34.10.hdf, S1999001.L3m_DAY_CDOM_cdom_index_9km.hdf */
+	     strncmp(fl_in+sfx_fst,".HDF",sfx_lng) && /* HDF-EOS2 (HDF4) suffix used by TRMM, e.g., 3B43.070901.6A.HDF */
+	     strncmp(fl_in+sfx_fst,".he5",sfx_lng) && /* HDF-EOS5 (HDF5) suffix used by HIRDLS, OMI Aerosols, e.g., HIRDLS-Aura_L3ZAD_v06-00-00-c02_2005d022-2008d077.he5, OMI-Aura_L2-OMAERUV_2013m1004t2338-o49057_v003-2013m1005t053932.he5 */
+	     strncmp(fl_in+sfx_fst,".nc3",sfx_lng) && /* netCDF3 variant suffix */
+	     strncmp(fl_in+sfx_fst,".nc4",sfx_lng)){ /* netCDF4 variant suffix */
+	    (void)fprintf(stderr,"%s: WARNING GAG filename suffix is unusual---using whole filename as group name\n",nco_prg_nm_get());
+	    sfx_lng=0;
+	  } /* endif */
+        } /* endif */
+
+        stb_srt_psn=strrchr(fl_in,'/');
+        if(!stb_srt_psn) stb_srt_psn=fl_in; else stb_srt_psn++;
+        gpe_arg_lng=strlen(stb_srt_psn)-sfx_lng;
+        gpe_arg=(char *)nco_malloc((gpe_arg_lng+1L)*sizeof(char));
+        gpe_arg=strncpy(gpe_arg,stb_srt_psn,strlen(stb_srt_psn)-sfx_lng);
+        gpe_arg[gpe_arg_lng]='\0';
+
+        /* GPE arguments derived from filenames check for existence of path in output file */
+        rcd=nco_inq_grp_full_ncid_flg(out_id,gpe_arg,&gpe_id);
+        /* Existence implies current file may overwrite contents of previous file */
+        if(rcd == NC_NOERR) (void)fprintf(stderr,"%s: WARNING GAG path \"%s\" automatically derived from stub of filename %s conflicts with existing path in output file. Any input data with same absolute path names as contents of a previous input file will be overwritten. Is the same input file specified multiple times? Is this intentional?\nHINT: To distribute copies of a single input file into different groups, use GPE to generate distinct output group names, e.g., %s -G copy in.nc in. [...]
+      } /* !grp_out */
+      /* Free old structure, if any, before re-use */
+      if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
+      gpe=nco_gpe_prs_arg(gpe_arg);
+      gpe_arg=(char *)nco_free(gpe_arg);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO GAG current file has gpe->arg=%s\n",nco_prg_nm_get(),gpe->arg);
+
+      /* Open file using appropriate buffer size hints and verbosity */
+      rcd=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
+
+      if(fl_idx == 0){
+        /* fxm: Copy global attributes of first file to root of output file to preserve history attribute */
+        /* Copy global attributes */
+        if(CPY_GLB_METADATA) (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
+
+        /* Catenate time-stamped command line to "history" global attribute */
+        if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
+
+        /* Add input file list global attribute */
+        if(FL_LST_IN_APPEND && HISTORY_APPEND && FL_LST_IN_FROM_STDIN) (void)nco_fl_lst_att_cat(out_id,fl_lst_in,fl_nbr);
+      } /* endif first file */
+
+      trv_tbl_sct *trv_tbl_gpr=NULL; /* [lst] Traversal table for GROUP_AGGREGATE only */
+
+      /* Initialize traversal table */
+      trv_tbl_init(&trv_tbl_gpr);
+
+      /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+      (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr_rgn,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl_gpr);
+
+      /* Get number of variables, dimensions, and global attributes in file, file format */
+      (void)trv_tbl_inq((int *)NULL,(int *)NULL,(int *)NULL,&nbr_dmn_fl,(int *)NULL,(int *)NULL,(int *)NULL,(int *)NULL,&nbr_var_fl,trv_tbl_gpr);
+      (void)nco_inq_format(in_id,&fl_in_fmt);
+
+      /* We now have final list of variables to extract. Phew. */
+
+      /* Define extracted groups, variables, and attributes in output file */
+      (void)nco_xtr_dfn(in_id,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,CPY_GLB_METADATA,(nco_bool)True,nco_pck_plc_nil,rec_dmn_nm,trv_tbl_gpr);
+
+      /* Turn off default filling behavior to enhance efficiency */
+      nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
+
+      /* Write extracted data to output file */
+      (void)nco_xtr_wrt(in_id,out_id,gpe,fp_bnr,md5,HAVE_LIMITS,trv_tbl_gpr);
+
+      /* Close input netCDF file */
+      (void)nco_close(in_id);
+
+      /* Free traversal table */
+      trv_tbl_free(trv_tbl_gpr);
+
+    } /* !GROUP_AGGREGATE */
+
+    if(RECORD_AGGREGATE){
+
+      /* Open file once per thread to improve caching */
+      for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
+
+      /* Perform various error-checks on input file */
+      if(False) (void)nco_fl_cmp_err_chk();
+
+      /* 20120309 Special case to improve copy speed on large blocksize filesystems (MM3s) */
+      USE_MM3_WORKAROUND=nco_use_mm3_workaround(in_id_arr[0],fl_out_fmt);
+      if(lmt_nbr > 0) USE_MM3_WORKAROUND=False; 
+      if(!USE_MM3_WORKAROUND){  
+        /* Copy all data variable-by-variable */
+        ;
+      }else{
+        /* MM3 workaround algorithm */
+        /* ncecat-specific MM3 characteristics:
+        Only coordinates are "fixed" (non-processed) variables
+        All other variables are "processed" 
+        These variables may be fixed or
+        record on input yet are all record on output 
+        Makes sense to always use MM3? */
+        ;
+      } /* endif MM3 workaround */
+
+      /* OpenMP with threading over variables, not files */
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(dbg_lvl,fl_nbr,idx_rec_out,in_id_arr,nbr_var_prc,out_id,var_prc,var_prc_out,lmt_all_lst,nbr_dmn_fl,jdx)
+# pragma omp parallel for default(none) private(in_id) shared(nco_dbg_lvl,fl_nbr,idx_rec_out,in_id_arr,nbr_var_prc,out_id,var_prc,var_prc_out,nbr_dmn_fl,md5,trv_tbl)
 #endif /* !_OPENMP */
-    /* Process all variables in current file */
-    for(idx=0;idx<nbr_var_prc;idx++){
-      in_id=in_id_arr[omp_get_thread_num()];
-      if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc[idx]->nm);
-      if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
-      /* Variables may have different ID, missing_value, type, in each file */
-      (void)nco_var_mtd_refresh(in_id,var_prc[idx]);
-      /* Retrieve variable from disk into memory */
-      /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-      (void)nco_msa_var_get(in_id,var_prc[idx],lmt_all_lst,nbr_dmn_fl);
-      /* Size of record dimension is 1 in output file */
-      var_prc_out[idx]->cnt[0]=1L;
-      var_prc_out[idx]->srt[0]=idx_rec_out;
-      /* Write variable into current record in output file */
+      /* Process all variables in current file */
+      for(int idx=0;idx<nbr_var_prc;idx++){
+	int grp_id; /* [ID] Group ID (input) */
+        int grp_out_id; /* [ID] Group ID (output) */
+        int var_out_id; /* [ID] Variable ID (output) */
+        trv_sct *var_trv; /* [sct] Variable GTT object */
+
+        in_id=in_id_arr[omp_get_thread_num()];
+        if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc[idx]->nm);
+        if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+
+        /* Obtain variable GTT object using full variable name */
+        var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+	/* Variables may have different ID, missing_value, type, in each file */
+	(void)nco_inq_grp_full_ncid(in_id,var_trv->grp_nm_fll,&grp_id);
+	(void)nco_var_mtd_refresh(grp_id,var_prc[idx]);
+
+        assert(var_trv);
+
+        /* Read */
+        (void)nco_msa_var_get_trv(in_id,var_prc[idx],trv_tbl);
+
+        /* Size of record dimension is 1 in output file */
+        var_prc_out[idx]->cnt[0]=1L;
+        var_prc_out[idx]->srt[0]=idx_rec_out;
+
+        /* Write variable into current record in output file */
+
+        /* Obtain output group ID using full group name */
+        (void)nco_inq_grp_full_ncid(out_id,var_trv->grp_nm_fll,&grp_out_id);
+
+        /* Get variable ID */
+        (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+
+        /* Store the output variable ID */
+        var_prc_out[idx]->id=var_out_id;
+
 #ifdef _OPENMP
-#pragma omp critical
+# pragma omp critical
 #endif /* _OPENMP */
-      { /* begin OpenMP critical */
-	if(var_prc[idx]->nbr_dim == 0){
-	  (void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc[idx]->val.vp,var_prc[idx]->type);
-	}else{ /* end if variable is scalar */
-	  (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp,var_prc[idx]->type);
-	} /* end if variable is array */
-	/* Free current input buffer */
-	var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
-      } /* end OpenMP critical */
-      
-    } /* end (OpenMP parallel for) loop over idx */
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
-
-    idx_rec_out++; /* [idx] Index of current record in output file (0 is first, ...) */
-    
-    /* Close input netCDF file */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
+        { /* begin OpenMP critical */
+          if(var_prc[idx]->nbr_dim == 0){
+            (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc[idx]->val.vp,var_prc[idx]->type);
+          }else{ /* end if variable is scalar */
+            (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp,var_prc[idx]->type);
+          } /* end if variable is array */
+          /* Perform MD5 digest of input and output data if requested */
+          if(md5) (void)nco_md5_chk(md5,var_prc_out[idx]->nm,var_prc_out[idx]->sz*nco_typ_lng(var_prc[idx]->type),out_id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp);
+          /* Free current input buffer */
+          var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
+        } /* end OpenMP critical */
+
+      } /* end (OpenMP parallel for) loop over idx */
+      if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+
+      idx_rec_out++; /* [idx] Index of current record in output file (0 is first, ...) */
+
+      /* Close input netCDF file */
+      for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
+
+    } /* !RECORD_AGGREGATE */
 
     /* Remove local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
-    
+    if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
+
   } /* end loop over fl_idx */
-  
+
   /* Close output file and move it from temporary to permanent location */
   (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
-  
+
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
-    /* ncecat-specific memory cleanup */
-    if(rec_dmn_nm) rec_dmn_nm=(char *)nco_free(rec_dmn_nm);
-
-    /* NB: free lmt[] is now referenced within lmt_all_lst[idx] */
-    for(idx=0;idx<nbr_dmn_fl;idx++)
-      for(jdx=0;jdx<lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-	lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-
-    lmt=(lmt_sct**)nco_free(lmt); 
-    if(nbr_dmn_fl > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl);
 
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
+    if(grp_out) grp_out=(char *)nco_free(grp_out);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -721,24 +879,29 @@ main(int argc,char **argv)
     if(fl_lst_abb) fl_lst_abb=nco_sng_lst_free(fl_lst_abb,abb_arg_nbr);
     if(var_lst_in_nbr > 0) var_lst_in=nco_sng_lst_free(var_lst_in,var_lst_in_nbr);
     /* Free limits */
-    for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
-    for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
-    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
+    for(int idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
+    for(int idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
     /* Free chunking information */
-    for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
+    for(int idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
-    /* Free dimension lists */
-    if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr-1); /* NB: ncecat has one fewer input than output dimension */
-    if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr); 
-    /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
-    var_prc=(var_sct **)nco_free(var_prc);
-    var_prc_out=(var_sct **)nco_free(var_prc_out);
-    var_fix=(var_sct **)nco_free(var_fix);
-    var_fix_out=(var_sct **)nco_free(var_fix_out);
+    if(RECORD_AGGREGATE){
+      /* Free dimension lists */
+      /* ncecat-specific memory cleanup */
+      if(rec_dmn_nm) rec_dmn_nm=(char *)nco_free(rec_dmn_nm);
+      /* Free variable lists */
+      if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+      if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
+      var_prc=(var_sct **)nco_free(var_prc);
+      var_prc_out=(var_sct **)nco_free(var_prc_out);
+      var_fix=(var_sct **)nco_free(var_fix);
+      var_fix_out=(var_sct **)nco_free(var_fix_out);
+      if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
+      if(md5) md5=(md5_sct *)nco_md5_free(md5);
+      /* Free traversal table */
+      trv_tbl_free(trv_tbl);  
+    } /* RECORD_AGGREGATE */
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
diff --git a/src/nco/ncflint.c b/src/nco/ncflint.c
index 6f96dc0..3736f7e 100644
--- a/src/nco/ncflint.c
+++ b/src/nco/ncflint.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncflint.c,v 1.192 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncflint.c,v 1.271 2013/11/06 17:51:13 zender Exp $ */
 
 /* ncflint -- netCDF file interpolator */
 
 /* Purpose: Linearly interpolate a third netCDF file from two input files */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -46,10 +46,12 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -76,19 +78,25 @@ main(int argc,char **argv)
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
   nco_bool FILE_1_RETRIEVED_FROM_REMOTE_LOCATION;
   nco_bool FILE_2_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FIX_REC_CRD=False; /* [flg] Do not interpolate/multiply record coordinate variables */
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order*/
   nco_bool MUST_CONFORM=False; /* Must nco_var_cnf_dmn() find truly conforming variables? */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
-  
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
+
   char **fl_lst_abb=NULL; /* Option a */
   char **fl_lst_in;
   char **ntp_lst_in;
+  char **grp_lst_in=NULL_CEWI;
   char **var_lst_in=NULL_CEWI;
   char *aux_arg[NC_MAX_DIMS];
   char *cmd_ln;
@@ -105,12 +113,13 @@ main(int argc,char **argv)
   char *ntp_nm=NULL; /* Option i */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
+
+  const char * const CVS_Id="$Id: ncflint.c,v 1.271 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.271 $";
+  const char * const opt_sht_lst="3467ACcD:d:Fg:G:hi:L:l:Oo:p:rRt:v:X:xw:-:";
 
-  const char * const CVS_Id="$Id: ncflint.c,v 1.192 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.192 $";
-  const char * const opt_sht_lst="346ACcD:d:Fhi:L:l:Oo:p:rRt:v:X:xw:-:";
-  
   cnk_sct **cnk=NULL_CEWI;
 
 #if defined(__cplusplus) || defined(PGI_CC)
@@ -120,19 +129,19 @@ main(int argc,char **argv)
   ddra_info_sct ddra_info={.flg_ddra=False};
 #endif /* !__cplusplus */
 
-  dmn_sct **dim;
-  dmn_sct **dmn_out;
-  
   double ntp_val_out=double_CEWI; /* Option i */
   double wgt_val_1=0.5; /* Option w */
   double wgt_val_2=0.5; /* Option w */
 
   extern char *optarg;
   extern int optind;
-  
+
   /* Using naked stdin/stdout/stderr in parallel region generates warning
-     Copy appropriate filehandle to variable scoped shared in parallel clause */
+  Copy appropriate filehandle to variable scoped shared in parallel clause */
   FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
+  FILE * const fp_stdout=stdout; /* [fl] stdout filehandle CEWI */
+
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
 
   int *in_id_1_arr;
   int *in_id_2_arr;
@@ -151,32 +160,29 @@ main(int argc,char **argv)
   int fll_md_old; /* [enm] Old fill mode */
   int has_mss_val=False;
   int idx;
-  int jdx;
   int in_id_1;  
   int in_id_2;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
-  int nbr_dmn_xtr;
   int nbr_ntp;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
-    
-  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
-  lmt_sct **lmt;
-  lmt_all_sct **lmt_all_lst; /* List of *lmt_all structures */
-  
-  nm_id_sct *dmn_lst;
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
-  
+  int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
+
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
   val_unn val_gnr_unn; /* Generic container for arrival point or weight */
 
@@ -191,73 +197,99 @@ main(int argc,char **argv)
   var_sct **var_prc_1;
   var_sct **var_prc_2;
   var_sct **var_prc_out;
-  
+
+  trv_tbl_sct *trv_tbl=NULL; /* [lst] Traversal table */
+
   static struct option opt_lng[]=
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
-      {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"3",no_argument,0,'3'},
-      {"4",no_argument,0,'4'},
-      {"64bit",no_argument,0,'4'},
-      {"netcdf4",no_argument,0,'4'},
-      {"append",no_argument,0,'A'},
-      {"coords",no_argument,0,'c'},
-      {"crd",no_argument,0,'c'},
-      {"no-coords",no_argument,0,'C'},
-      {"no-crd",no_argument,0,'C'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"dimension",required_argument,0,'d'},
-      {"dmn",required_argument,0,'d'},
-      {"fortran",no_argument,0,'F'},
-      {"ftn",no_argument,0,'F'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"interpolate",required_argument,0,'i'},
-      {"ntp",required_argument,0,'i'},
-      {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"path",required_argument,0,'p'},
-      {"retain",no_argument,0,'R'},
-      {"rtn",no_argument,0,'R'},
-      {"revision",no_argument,0,'r'},
-      {"thr_nbr",required_argument,0,'t'},
-      {"threads",required_argument,0,'t'},
-      {"omp_num_threads",required_argument,0,'t'},
-      {"variable",required_argument,0,'v'},
-      {"weight",required_argument,0,'w'},
-      {"wgt_var",no_argument,0,'w'},
-      {"auxiliary",required_argument,0,'X'},
-      {"exclude",no_argument,0,'x'},
-      {"xcl",no_argument,0,'x'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    }; /* end opt_lng */
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"fix_rec_crd",no_argument,0,0}, /* [flg] Do not interpolate/multiply record coordinate variables */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+    {"intersection",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+    {"nsx",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+    {"union",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+    {"unn",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
+    {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
+    {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
+    {"fl_fmt",required_argument,0,0},
+    {"file_format",required_argument,0,0},
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"3",no_argument,0,'3'},
+    {"4",no_argument,0,'4'},
+    {"64bit",no_argument,0,'4'},
+    {"netcdf4",no_argument,0,'4'},
+    {"append",no_argument,0,'A'},
+    {"coords",no_argument,0,'c'},
+    {"crd",no_argument,0,'c'},
+    {"no-coords",no_argument,0,'C'},
+    {"no-crd",no_argument,0,'C'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"dimension",required_argument,0,'d'},
+    {"dmn",required_argument,0,'d'},
+    {"fortran",no_argument,0,'F'},
+    {"ftn",no_argument,0,'F'},
+    {"gpe",required_argument,0,'G'}, /* [sng] Group Path Edit (GPE) */
+    {"grp",required_argument,0,'g'},
+    {"group",required_argument,0,'g'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"interpolate",required_argument,0,'i'},
+    {"ntp",required_argument,0,'i'},
+    {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"path",required_argument,0,'p'},
+    {"retain",no_argument,0,'R'},
+    {"rtn",no_argument,0,'R'},
+    {"revision",no_argument,0,'r'},
+    {"thr_nbr",required_argument,0,'t'},
+    {"threads",required_argument,0,'t'},
+    {"omp_num_threads",required_argument,0,'t'},
+    {"variable",required_argument,0,'v'},
+    {"weight",required_argument,0,'w'},
+    {"wgt_var",no_argument,0,'w'},
+    {"auxiliary",required_argument,0,'X'},
+    {"exclude",no_argument,0,'x'},
+    {"xcl",no_argument,0,'x'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
 
   /* Start timer and save command line */ 
@@ -265,9 +297,9 @@ main(int argc,char **argv)
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -279,33 +311,50 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
+      if(!strcmp(opt_crr,"fix_rec_crd")) FIX_REC_CRD=True; /* [flg] Do not interpolate/multiply record coordinate variables */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
+      if(!strcmp(opt_crr,"unn") || !strcmp(opt_crr,"union")) GRP_VAR_UNN=True;
+      if(!strcmp(opt_crr,"nsx") || !strcmp(opt_crr,"intersection")) GRP_VAR_UNN=False;
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -320,6 +369,9 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
@@ -330,7 +382,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* The debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -340,6 +392,19 @@ main(int argc,char **argv)
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      /* NB: GNU getopt() optional argument syntax is ugly (requires "=" sign) so avoid it
+      http://stackoverflow.com/questions/1052746/getopt-does-not-parse-optional-arguments-to-parameters */
+      gpe=nco_gpe_prs_arg(optarg);
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case 'g': /* Copy group argument for later processing */
+      /* Replace commas with hashes when within braces (convert back later) */
+      optarg_lcl=(char *)strdup(optarg);
+      (void)nco_rx_comma2hash(optarg_lcl);
+      grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
+      optarg_lcl=(char *)nco_free(optarg_lcl);
+      break;
     case 'h': /* Toggle appending to history global attribute */
       HISTORY_APPEND=!HISTORY_APPEND;
       break;
@@ -347,8 +412,8 @@ main(int argc,char **argv)
       /* Name of variable to guide interpolation. Default is none */
       ntp_lst_in=nco_lst_prs_2D(optarg,",",&nbr_ntp);
       if(nbr_ntp > 2){
-	(void)fprintf(stdout,"%s: ERROR too many arguments to -i\n",prg_nm_get());
-	nco_exit(EXIT_FAILURE);
+        (void)fprintf(stdout,"%s: ERROR too many arguments to -i\n",nco_prg_nm_get());
+        nco_exit(EXIT_FAILURE);
       } /* end if */
       ntp_nm=ntp_lst_in[0];
       ntp_val_out=strtod(ntp_lst_in[1],&sng_cnv_rcd);
@@ -373,7 +438,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -389,33 +454,33 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'w':
       /* Weight(s) for interpolation.  Default is wgt_val_1=wgt_val_2=0.5 */
       ntp_lst_in=nco_lst_prs_2D(optarg,",",&nbr_ntp);
       if(nbr_ntp > 2){
-	(void)fprintf(stdout,"%s: ERROR too many arguments to -w\n",prg_nm_get());
-	nco_exit(EXIT_FAILURE);
+        (void)fprintf(stdout,"%s: ERROR too many arguments to -w\n",nco_prg_nm_get());
+        nco_exit(EXIT_FAILURE);
       }else if(nbr_ntp == 2){
-	wgt_val_1=strtod(ntp_lst_in[0],&sng_cnv_rcd);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(ntp_lst_in[0],"strtod",sng_cnv_rcd);
-	wgt_val_2=strtod(ntp_lst_in[1],&sng_cnv_rcd);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(ntp_lst_in[1],"strtod",sng_cnv_rcd);
+        wgt_val_1=strtod(ntp_lst_in[0],&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(ntp_lst_in[0],"strtod",sng_cnv_rcd);
+        wgt_val_2=strtod(ntp_lst_in[1],&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(ntp_lst_in[1],"strtod",sng_cnv_rcd);
       }else if(nbr_ntp == 1){
-	wgt_val_1=strtod(ntp_lst_in[0],&sng_cnv_rcd);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(ntp_lst_in[0],"strtod",sng_cnv_rcd);
-	wgt_val_2=1.0-wgt_val_1;
+        wgt_val_1=strtod(ntp_lst_in[0],&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(ntp_lst_in[0],"strtod",sng_cnv_rcd);
+        wgt_val_2=1.0-wgt_val_1;
       } /* end else */
       CMD_LN_NTP_WGT=True;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -425,34 +490,32 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
     } /* end switch */
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
-  
+
   if(CMD_LN_NTP_VAR && CMD_LN_NTP_WGT){
-    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) and fixed weight(s) (-w) both set\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) and fixed weight(s) (-w) both set\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   }else if(!CMD_LN_NTP_VAR && !CMD_LN_NTP_WGT){
-    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) or fixed weight(s) (-w) must be set\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR interpolating variable (-i) or fixed weight(s) (-w) must be set\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* end else */
 
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
-  
+
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-    
   /* Initialize thread information */
   thr_nbr=nco_openmp_ini(thr_nbr);
   in_id_1_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
@@ -461,112 +524,55 @@ main(int argc,char **argv)
   /* Parse filenames */
   fl_idx=0; /* Input file _1 */
   fl_in_1=nco_fl_nm_prs(fl_in_1,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in_1);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_1=nco_fl_mk_lcl(fl_in_1,fl_pth_lcl,&FILE_1_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl && FILE_1_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_1);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl && FILE_1_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_1);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_1,NC_NOWRITE,in_id_1_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_1,md_open,&bfr_sz_hnt,in_id_1_arr+thr_idx);
   in_id_1=in_id_1_arr[0];
 
   fl_idx=1; /* Input file _2 */
   fl_in_2=nco_fl_nm_prs(fl_in_2,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in_2);
   /* Make sure file is on local system and is readable or die trying */
   fl_in_2=nco_fl_mk_lcl(fl_in_2,fl_pth_lcl,&FILE_2_RETRIEVED_FROM_REMOTE_LOCATION);
-  if(dbg_lvl >= nco_dbg_fl && FILE_2_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_2);
-  if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+  if(nco_dbg_lvl >= nco_dbg_fl && FILE_2_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in_2);
+  if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
   /* Open file once per thread to improve caching */
-  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in_2,NC_NOWRITE,in_id_2_arr+thr_idx);
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in_2,md_open,&bfr_sz_hnt,in_id_2_arr+thr_idx);
   in_id_2=in_id_2_arr[0];
-  
-  /* Parse auxiliary coordinates */
-  if(aux_nbr > 0){
-     int aux_idx_nbr;
-     aux=nco_aux_evl(in_id_1,aux_nbr,aux_arg,&aux_idx_nbr);
-     if(aux_idx_nbr > 0){
-        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
-        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
-        int aux_idx=0;
-        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
-        lmt_nbr=lmt_nbr_new;
-     } /* endif aux */
-  } /* endif aux_nbr */
-  
-  /* Get number of variables and dimensions in file */
-  (void)nco_inq(in_id_1,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,(int *)NULL);
+
   (void)nco_inq_format(in_id_1,&fl_in_fmt_1);
   (void)nco_inq_format(in_id_2,&fl_in_fmt_2);
-  
-  /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id_1,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
-
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id_1,nbr_var_fl,xtr_lst,&nbr_xtr);
-
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id_1);
-
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id_1,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
-
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id_1,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
-
-  /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
-
-  /* We now have final list of variables to extract. Phew. */
-  
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id_1,lmt[idx],0L,FORTRAN_IDX_CNV);
-
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id_1,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
  
-  /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id_1,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
-
-  /* Fill-in dimension structure for all extracted dimensions */
-  dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++) dim[idx]=nco_dmn_fll(in_id_1,dmn_lst[idx].id,dmn_lst[idx].nm);
-
-  /* Dimension list no longer needed */
-  dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
+  trv_tbl_init(&trv_tbl);
 
-  /* Duplicate input dimension structures for output dimension structures */
-  dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++){ 
-    dmn_out[idx]=nco_dmn_dpl(dim[idx]);
-    (void)nco_dmn_xrf(dim[idx],dmn_out[idx]);
-  } /* end loop over dimensions */
+  /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+  (void)nco_bld_trv_tbl(in_id_1,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl);
 
-  /* Merge hyperslab limit information into dimension structures */
-  if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
+  /* Get number of variables, dimensions, and global attributes in file, file format */
+  (void)trv_tbl_inq((int *)NULL,(int *)NULL,(int *)NULL,&nbr_dmn_fl,(int *)NULL,(int *)NULL,(int *)NULL,(int *)NULL,&nbr_var_fl,trv_tbl);
 
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
-    var[idx]=nco_var_fll(in_id_1,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
-    var_out[idx]=nco_var_dpl(var[idx]);
-    (void)nco_xrf_var(var[idx],var_out[idx]);
-    (void)nco_xrf_dmn(var_out[idx]);
-  } /* end loop over idx */
-  /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  var=nco_fll_var_trv(in_id_1,&xtr_nbr,trv_tbl);
 
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(int var_idx=0;var_idx<xtr_nbr;var_idx++){
+    var_out[var_idx]=nco_var_dpl(var[var_idx]);
+  }
 
-  /* Refresh var_out with dim_out data */
-  (void)nco_var_dmn_refresh(var_out,nbr_xtr);
+  /* Is this a CCM/CCSM/CF-format history tape? */
+  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id_1);
 
+  /* Divide variable lists into lists of fixed variables and variables to be processed */
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,FIX_REC_CRD,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc_1,&var_prc_out,&nbr_var_prc,trv_tbl);
 
-    /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc_1,&var_prc_out,&nbr_var_prc);
+  /* Store processed and fixed variables info into GTT */
+  (void)nco_var_prc_fix_trv(nbr_var_prc,var_prc_1,nbr_var_fix,var_fix,trv_tbl);
 
   /* Make output and input files consanguinous */
   if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt_1;
@@ -575,36 +581,35 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
+
+  /* Transfer variable type to table. NOTE: Using var/xtr_nbr containing all variables (processed, fixed) */
+  (void)nco_var_typ_trv(xtr_nbr,var,trv_tbl);         
+
+  /* Define dimensions, extracted groups, variables, and attributes in output file */
+  (void)nco_xtr_dfn(in_id_1,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,True,True,nco_pck_plc_nil,(char *)NULL,trv_tbl);
 
-  /* Copy global attributes */
-  (void)nco_att_cpy(in_id_1,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
-  
   /* Catenate time-stamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
-
   if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
-  
-  /* Define dimensions in output file */
-  (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_xtr);
-
-  /* Define variables in output file, copy their attributes */
-  (void)nco_var_dfn(in_id_1,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
-
-  /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
 
   /* Turn off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-  
+
   /* Take output file out of define mode */
-  (void)nco_enddef(out_id);
-  
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
+
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
 
   /* Copy variable data for non-processed variables */
-  (void)nco_msa_var_val_cpy(in_id_1,out_id,var_fix,nbr_var_fix,lmt_all_lst,nbr_dmn_fl);
+  (void)nco_cpy_fix_var_trv(in_id_1,out_id,gpe,trv_tbl);  
+
 
   /* Perform various error-checks on input file */
   if(False) (void)nco_fl_cmp_err_chk();
@@ -612,41 +617,49 @@ main(int argc,char **argv)
   /* ncflint-specific stuff: */
   /* Find the weighting variable in input file */
   if(CMD_LN_NTP_VAR){
-    int ntp_id_1;
-    int ntp_id_2;
-    
-    var_sct *ntp_1;
-    var_sct *ntp_2;
+    var_sct *ntp_1=NULL;
+    var_sct *ntp_2=NULL;
     var_sct *ntp_var_out;
 
     /* Turn arrival point into pseudo-variable */
     val_gnr_unn.d=ntp_val_out; /* Generic container for arrival point or weight */
     ntp_var_out=scl_mk_var(val_gnr_unn,NC_DOUBLE);
 
-    rcd=nco_inq_varid(in_id_1,ntp_nm,&ntp_id_1);
-    rcd=nco_inq_varid(in_id_2,ntp_nm,&ntp_id_2);
+    int xtr_nbr_ntp_1;
+    int xtr_nbr_ntp_2;
+
+    var_sct ** var_ntp_1;
+    var_sct ** var_ntp_2; 
+
+    /* Fill-in variable structure list for all variables named "ntp_nm" NOTE: using table from file 1 */
+    var_ntp_1=nco_var_trv(in_id_1,ntp_nm,&xtr_nbr_ntp_1,trv_tbl);
+    var_ntp_2=nco_var_trv(in_id_2,ntp_nm,&xtr_nbr_ntp_2,trv_tbl);
 
-    ntp_1=nco_var_fll(in_id_1,ntp_id_1,ntp_nm,dim,nbr_dmn_xtr);
-    ntp_2=nco_var_fll(in_id_2,ntp_id_2,ntp_nm,dim,nbr_dmn_xtr);
+    if (xtr_nbr_ntp_1) ntp_1=var_ntp_1[0];
+    if (xtr_nbr_ntp_2) ntp_2=var_ntp_2[0];
+
+    if(xtr_nbr_ntp_1 == 0 || xtr_nbr_ntp_2 == 0){
+      (void)fprintf(fp_stdout,"%s: ERROR Variable <%s> is not present in input file. ncflint assumes same file structure for both input files\n",nco_prg_nm_get(),ntp_nm);
+      nco_exit(EXIT_FAILURE);
+    }
     
+    /* Read */
+    (void)nco_msa_var_get_trv(in_id_1,ntp_1,trv_tbl);
+    (void)nco_msa_var_get_trv(in_id_2,ntp_2,trv_tbl);
+
     /* Currently, only support scalar variables */
     if(ntp_1->sz > 1 || ntp_2->sz > 1){
-      (void)fprintf(stdout,"%s: ERROR interpolation variable %s must be scalar\n",prg_nm_get(),ntp_nm);
+      (void)fprintf(stdout,"%s: ERROR interpolation variable %s must be scalar\n",nco_prg_nm_get(),ntp_nm);
       nco_exit(EXIT_FAILURE);
     } /* end if */
 
-    /* Retrieve interpolation variable */
-    /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-    (void)nco_var_get(in_id_1,ntp_1);
-    (void)nco_var_get(in_id_2,ntp_2);
-
     /* Weights must be NC_DOUBLE */
     ntp_1=nco_var_cnf_typ((nc_type)NC_DOUBLE,ntp_1);
     ntp_2=nco_var_cnf_typ((nc_type)NC_DOUBLE,ntp_2);
 
     /* Check for degenerate case */
     if(ntp_1->val.dp[0] == ntp_2->val.dp[0]){
-      (void)fprintf(stdout,"%s: ERROR Interpolation variable %s is identical (%g) in input files, therefore unable to interpolate.\n",prg_nm_get(),ntp_nm,ntp_1->val.dp[0]);
+      (void)fprintf(stdout,"%s: ERROR Interpolation variable %s is identical (%g) in input files, therefore unable to interpolate.\n",nco_prg_nm_get(),ntp_nm,ntp_1->val.dp[0]);
       nco_exit(EXIT_FAILURE);
     } /* end if */
 
@@ -663,8 +676,12 @@ main(int argc,char **argv)
     (void)nco_var_dvd(wgt_1->type,wgt_1->sz,wgt_1->has_mss_val,wgt_1->mss_val,ntp_2->val,wgt_1->val);
     (void)nco_var_dvd(wgt_2->type,wgt_2->sz,wgt_2->has_mss_val,wgt_2->mss_val,ntp_2->val,wgt_2->val);
 
-    if(ntp_1) ntp_1=nco_var_free(ntp_1);
-    if(ntp_2) ntp_2=nco_var_free(ntp_2);
+
+    for(idx=0;idx<xtr_nbr_ntp_1;idx++) var_ntp_1[idx]=nco_var_free(var_ntp_1[idx]);
+    for(idx=0;idx<xtr_nbr_ntp_2;idx++) var_ntp_2[idx]=nco_var_free(var_ntp_2[idx]);
+    var_ntp_1=(var_sct **)nco_free(var_ntp_1);
+    var_ntp_2=(var_sct **)nco_free(var_ntp_2);
+
     if(ntp_var_out) ntp_var_out=nco_var_free(ntp_var_out);
   } /* end if CMD_LN_NTP_VAR */
 
@@ -675,7 +692,7 @@ main(int argc,char **argv)
     wgt_2=scl_mk_var(val_gnr_unn,NC_DOUBLE);
   } /* end if CMD_LN_NTP_WGT */
 
-  if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"wgt_1 = %g, wgt_2 = %g\n",wgt_1->val.dp[0],wgt_2->val.dp[0]);
+  if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"wgt_1 = %g, wgt_2 = %g\n",wgt_1->val.dp[0],wgt_2->val.dp[0]);
 
   /* Create structure list for second file */
   var_prc_2=(var_sct **)nco_malloc(nbr_var_prc*sizeof(var_sct *));
@@ -687,28 +704,58 @@ main(int argc,char **argv)
   /* Loop over each interpolated variable */
 #ifdef _OPENMP
   /* OpenMP notes:
-     shared(): msk and wgt are not altered within loop
-     private(): wgt_avg does not need initialization */
-#pragma omp parallel for default(none) firstprivate(wgt_1,wgt_2,wgt_out_1,wgt_out_2) private(DO_CONFORM,idx,in_id_1,in_id_2,has_mss_val) shared(MUST_CONFORM,dbg_lvl,dim,fl_in_1,fl_in_2,fl_out,in_id_1_arr,in_id_2_arr,nbr_dmn_xtr,nbr_var_prc,out_id,prg_nm,var_prc_1,var_prc_2,var_prc_out,lmt_all_lst,nbr_dmn_fl)
+  shared(): msk and wgt are not altered within loop
+  private(): wgt_avg does not need initialization */
+
+#  pragma omp parallel for default(none) firstprivate(wgt_1,wgt_2,wgt_out_1,wgt_out_2) private(DO_CONFORM,idx,in_id_1,in_id_2,has_mss_val) shared(MUST_CONFORM,nco_dbg_lvl,fl_in_1,fl_in_2,fl_out,gpe,in_id_1_arr,in_id_2_arr,nbr_var_prc,out_id,nco_prg_nm,var_prc_1,var_prc_2,var_prc_out,nbr_dmn_fl,trv_tbl)
+
 #endif /* !_OPENMP */
   for(idx=0;idx<nbr_var_prc;idx++){
-    if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
-    if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+
+    /* Note: Using object 2 from table 1, only one table built, assumes same structure for processed objects in both files */
+
+    char *grp_out_fll=NULL; /* [sng] Group name */
+
+    int grp_id_1;      /* [ID] Group ID */
+    int grp_id_2;      /* [ID] Group ID */
+    int grp_out_id;    /* [ID] Group ID (output) */
+    int var_out_id;    /* [ID] Variable ID (output) */
+
+    trv_sct *var_trv_1;/* [sct] Variable GTT object */
+    trv_sct *var_trv_2;/* [sct] Variable GTT object */
+
+    if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"%s, ",var_prc_1[idx]->nm);
+    if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
 
     in_id_1=in_id_1_arr[omp_get_thread_num()];
     in_id_2=in_id_2_arr[omp_get_thread_num()];
 
     var_prc_2[idx]=nco_var_dpl(var_prc_1[idx]);
-    (void)nco_var_mtd_refresh(in_id_2,var_prc_2[idx]);
 
-    /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-    (void)nco_msa_var_get(in_id_1,var_prc_1[idx],lmt_all_lst,nbr_dmn_fl);
-    (void)nco_msa_var_get(in_id_2,var_prc_2[idx],lmt_all_lst,nbr_dmn_fl);
-     
+    /* Obtain variable GTT object using full variable name */
+    var_trv_1=trv_tbl_var_nm_fll(var_prc_1[idx]->nm_fll,trv_tbl);
+    var_trv_2=trv_tbl_var_nm_fll(var_prc_2[idx]->nm_fll,trv_tbl);
+
+    if(!var_trv_2){
+      (void)fprintf(fp_stdout,"%s: ERROR Variable %s is not present in second input file. ncflint assumes same structure for processed objects in both files\n",nco_prg_nm_get(),var_trv_1->nm_fll);
+      nco_exit(EXIT_FAILURE);
+    } /* endif */
+
+    /* Obtain group ID using full group name */
+    (void)nco_inq_grp_full_ncid(in_id_1,var_trv_1->grp_nm_fll,&grp_id_1);
+    (void)nco_inq_grp_full_ncid(in_id_2,var_trv_2->grp_nm_fll,&grp_id_2);
+
+    (void)nco_var_mtd_refresh(grp_id_2,var_prc_2[idx]);
+
+    /* Read */
+    (void)nco_msa_var_get_trv(in_id_1,var_prc_1[idx],trv_tbl);
+    (void)nco_msa_var_get_trv(in_id_2,var_prc_2[idx],trv_tbl);
+
     /* Set var_prc_1 and var_prc_2 to correct size */
     var_prc_1[idx]->sz=var_prc_out[idx]->sz;       
     var_prc_2[idx]->sz=var_prc_out[idx]->sz;  
 
+    /* Stretch second variable to match dimensions of first variable */
     wgt_out_1=nco_var_cnf_dmn(var_prc_out[idx],wgt_1,wgt_out_1,MUST_CONFORM,&DO_CONFORM);
     wgt_out_2=nco_var_cnf_dmn(var_prc_out[idx],wgt_2,wgt_out_2,MUST_CONFORM,&DO_CONFORM);
 
@@ -717,53 +764,71 @@ main(int argc,char **argv)
 
     /* Allocate and, if necesssary, initialize space for processed variable */
     var_prc_out[idx]->sz=var_prc_1[idx]->sz;
+
     /* NB: must not try to free() same tally buffer twice */
-    /*    var_prc_out[idx]->tally=var_prc_1[idx]->tally=(long *)nco_malloc(var_prc_out[idx]->sz*sizeof(long int));*/
+    /* var_prc_out[idx]->tally=var_prc_1[idx]->tally=(long *)nco_malloc(var_prc_out[idx]->sz*sizeof(long int));*/
     var_prc_out[idx]->tally=(long *)nco_malloc(var_prc_out[idx]->sz*sizeof(long int));
     (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
-  
+
     /* Weight variable by taking product of weight with variable */
     (void)nco_var_mlt(var_prc_1[idx]->type,var_prc_1[idx]->sz,var_prc_1[idx]->has_mss_val,var_prc_1[idx]->mss_val,wgt_out_1->val,var_prc_1[idx]->val);
     (void)nco_var_mlt(var_prc_2[idx]->type,var_prc_2[idx]->sz,var_prc_2[idx]->has_mss_val,var_prc_2[idx]->mss_val,wgt_out_2->val,var_prc_2[idx]->val);
+
     /* Change missing_value of var_prc_2, if any, to missing_value of var_prc_1, if any */
     has_mss_val=nco_mss_val_cnf(var_prc_1[idx],var_prc_2[idx]);
+
     /* NB: fxm: use tally to determine when to "unweight" answer? TODO  */
     (void)nco_var_add_tll_ncflint(var_prc_1[idx]->type,var_prc_1[idx]->sz,has_mss_val,var_prc_1[idx]->mss_val,var_prc_out[idx]->tally,var_prc_1[idx]->val,var_prc_2[idx]->val);
-    
+
     /* Re-cast output variable to original type */
     var_prc_2[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc_2[idx]);
 
+    /* Edit group name for output */
+    if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv_1->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv_1->grp_nm_fll);
+
+    /* Obtain output group ID using full group name */
+    (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+
+    /* Memory management after current extracted group */
+    if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+    /* Get variable ID */
+    (void)nco_inq_varid(grp_out_id,var_trv_1->nm,&var_out_id);
+
+    /* Store the output variable ID */
+    var_prc_out[idx]->id=var_out_id;
+
 #ifdef _OPENMP
-#pragma omp critical
+# pragma omp critical
 #endif /* _OPENMP */
     { /* begin OpenMP critical */
       /* Copy interpolations to output file */
       if(var_prc_out[idx]->nbr_dim == 0){
-	(void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_2[idx]->val.vp,var_prc_2[idx]->type);
+        (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_2[idx]->val.vp,var_prc_2[idx]->type);
       }else{ /* end if variable is scalar */
-	(void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_2[idx]->val.vp,var_prc_2[idx]->type);
+        (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_2[idx]->val.vp,var_prc_2[idx]->type);
       } /* end else */
     } /* end OpenMP critical */
-    
+
     /* Free dynamically allocated buffers */
     if(var_prc_1[idx]) var_prc_1[idx]=nco_var_free(var_prc_1[idx]);
     if(var_prc_2[idx]) var_prc_2[idx]=nco_var_free(var_prc_2[idx]);
     if(var_prc_out[idx]) var_prc_out[idx]=nco_var_free(var_prc_out[idx]);
-    
+
   } /* end (OpenMP parallel for) loop over idx */
-  if(dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
-  
+  if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
+
   /* Close input netCDF files */
   for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_1_arr[thr_idx]);
   for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_2_arr[thr_idx]);
 
   /* Close output file and move it from temporary to permanent location */
   (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
-  
+
   /* Remove local copy of file */
-  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_1);
-  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in_2);
-  
+  if(FILE_1_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_1);
+  if(FILE_2_RETRIEVED_FROM_REMOTE_LOCATION && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in_2);
+
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncflint-specific memory */
@@ -776,19 +841,11 @@ main(int argc,char **argv)
     if(wgt_out_1) wgt_out_1=(var_sct *)nco_var_free(wgt_out_1);
     if(wgt_out_2) wgt_out_2=(var_sct *)nco_var_free(wgt_out_2);
 
-    /* NB: free lmt[] is now referenced within lmt_all_lst[idx] */
-    for(idx=0;idx<nbr_dmn_fl;idx++)
-      for(jdx=0;jdx<lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-         lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-    
-    if(nbr_dmn_fl > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl); 
-    lmt=(lmt_sct**)nco_free(lmt); 
-
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
     if(fl_pth) fl_pth=(char *)nco_free(fl_pth);
@@ -803,13 +860,10 @@ main(int argc,char **argv)
     /* Free limits */
     for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
     for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
-    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
-    /* Free dimension lists */
-    if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr);
-    if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr);
+
     /* Free variable lists */
     /* ncflint free()s _prc variables at end of main loop */
     var=(var_sct **)nco_free(var);
@@ -817,8 +871,14 @@ main(int argc,char **argv)
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     if(nbr_var_fix > 0) var_fix=nco_var_lst_free(var_fix,nbr_var_fix);
     if(nbr_var_fix > 0) var_fix_out=nco_var_lst_free(var_fix_out,nbr_var_fix);
+
+    /* Free traversal table */
+
+    trv_tbl_free(trv_tbl); 
+
+    if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
diff --git a/src/nco/ncks.c b/src/nco/ncks.c
index d4430c6..a3186d5 100644
--- a/src/nco/ncks.c
+++ b/src/nco/ncks.c
@@ -1,11 +1,11 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncks.c,v 1.281 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncks.c,v 1.678 2013/11/24 04:05:41 zender Exp $ */
 
 /* ncks -- netCDF Kitchen Sink */
 
 /* Purpose: Extract (subsets of) variables from a netCDF file 
    Print them to screen, or copy them to a new file, or both */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -30,32 +30,45 @@
    University of California, Irvine
    Irvine, CA 92697-3100 */
 
-/* Usage:
+/* URL: http://nco.cvs.sf.net/nco/nco/src/nco/ncks.c
+
+   Usage:
    ncks ~/nco/data/in.nc 
-   ncks -v one ~/nco/data/in.nc 
+   ncks -v one ~/nco/data/in.nc
    ncks ~/nco/data/in.nc ~/foo.nc
    ncks -O -4 ~/nco/data/in.nc ~/foo.nc
    ncks -v one ~/nco/data/in.nc ~/foo.nc
    ncks -p /ZENDER/tmp -l /data/zender/tmp h0001.nc ~/foo.nc
-   ncks -s "%+16.10f\n" -H -C -v three_dmn_var in.nc
+   ncks -s "%+16.10f\n" -H -C -v three_dmn_var ~/nco/data/in.nc
    ncks -H -v fl_nm,fl_nm_arr ~/nco/data/in.nc
    ncks -H -C -u -d wvl,'0.4 micron','0.7 micron' -v wvl ~/nco/data/in.nc
    ncks -H -d fl_dim,1 -d char_dim,6,12 -v fl_nm,fl_nm_arr ~/nco/data/in.nc
    ncks -H -m -v char_var_nul,char_var_space,char_var_multinul ~/nco/data/in.nc
-   ncks -H -C -v three_dmn_rec_var -d time,,,2 in.nc
-   ncks -H -C -v lon -d lon,3,1 in.nc */
+   ncks -H -C -v three_dmn_rec_var -d time,,,2 ~/nco/data/in.nc
+   ncks -H -C -v lon -d lon,3,1 ~/nco/data/in.nc 
+   ncks -M -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
+   ncks -O -v one -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc ~/foo.nc
+   ncks -O -G foo ~/nco/data/in.nc ~/foo.nc
+   ncks -O -G :-5 -v v7 ~/nco/data/in_grp.nc ~/foo.nc
+   ncks -O -G level3name:-5 -v v7 ~/nco/data/in_grp.nc ~/foo.nc
+   ncks -O -v time ~/in_grp.nc ~/foo.nc
+   ncks -O --sysconf ~/in_grp.nc ~/foo.nc
+   ncks -O -m -M -v Snow_Cover_Monthly_CMG ${DATA}/hdf/MOD10CM.A2007001.005.2007108111758.hdf */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard C headers */
+#include <assert.h> /* assert() */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -66,6 +79,8 @@
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
+
+/* Personal headers */
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
 #define MAIN_PROGRAM_FILE
 #include "libnco.h" /* netCDF Operator (NCO) library */
@@ -74,34 +89,46 @@ int
 main(int argc,char **argv)
 {
   nco_bool ALPHABETIZE_OUTPUT=True; /* Option a */
-  nco_bool CNV_CCM_CCSM_CF;
-  nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
+  nco_bool EXCLUDE_INPUT_LIST=False; /* Option x */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
-  nco_bool FIX_REC_DMN=False; /* [flg] Fix record dimension */
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_NOCLOBBER=False; /* Option no-clobber */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GET_GRP_INFO=False; /* [flg] Iterate file, get group extended information */
+  nco_bool GET_FILE_INFO=False; /* [flg] Get file information (#groups, #dimensions, #attributes, #variables) */
+  nco_bool GET_PRG_INFO=False; /* [flg] Get compiled program information (e.g libraries) */
+  nco_bool GET_LIST=False; /* [flg] Iterate file, print variables and exit */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-  nco_bool NCO_BNR_WRT=False; /* [flg] Write binary file */
+  nco_bool HAVE_LIMITS=False; /* [flg] Are there user limits? (-d) */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+  nco_bool PRN_CDL=False; /* [flg] Print CDL */
+  nco_bool PRN_SRM=False; /* [flg] Print ncStream */
+  nco_bool PRN_XML=False; /* [flg] Print XML (NcML) */
+  nco_bool PRN_XML_LOCATION=True; /* [flg] Print XML location tag */
   nco_bool PRN_DMN_IDX_CRD_VAL=True; /* [flg] Print leading dimension/coordinate indices/values Option Q */
   nco_bool PRN_DMN_UNITS=False; /* [flg] Print dimensional units Option u */
   nco_bool PRN_DMN_VAR_NM=True; /* [flg] Print dimension/variable names */
   nco_bool PRN_DMN_UNITS_TGL=False; /* [flg] Toggle print dimensional units Option u */
   nco_bool PRN_GLB_METADATA=False; /* [flg] Print global metadata */
   nco_bool PRN_GLB_METADATA_TGL=False; /* [flg] Toggle print global metadata Option M */
+  nco_bool PRN_MSS_VAL_BLANK=True; /* [flg] Print missing values as blanks */
   nco_bool PRN_QUIET=False; /* [flg] Turn off all printing to screen */
   nco_bool PRN_VAR_DATA=False; /* [flg] Print variable data */
   nco_bool PRN_VAR_DATA_TGL=False; /* [flg] Toggle print variable data Option H */
   nco_bool PRN_VAR_METADATA=False; /* [flg] Print variable metadata */
   nco_bool PRN_VAR_METADATA_TGL=False; /* [flg] Toggle print variable metadata Option m */
   nco_bool PRN_VRB=False; /* [flg] Print data and metadata by default */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
+  nco_bool PRN_NEW_FMT=False; /* [flg] Print using new print format */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
 
   char **fl_lst_abb=NULL; /* Option a */
   char **fl_lst_in;
@@ -123,11 +150,16 @@ main(int argc,char **argv)
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
   char *rec_dmn_nm=NULL; /* [sng] Record dimension name */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *smr_sng=NULL; /* [sng] File summary string */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *spr_chr=NULL; /* [sng] Separator for XML character types */
+  char *spr_nmr=NULL; /* [sng] Separator for XML numeric types */
+
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
 
-  const char * const CVS_Id="$Id: ncks.c,v 1.281 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.281 $";
-  const char * const opt_sht_lst="346aABb:CcD:d:Fg:HhL:l:MmOo:Pp:qQrRs:uv:X:x-:";
+  const char * const CVS_Id="$Id: ncks.c,v 1.678 2013/11/24 04:05:41 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.678 $";
+  const char * const opt_sht_lst="34567aABb:CcD:d:FG:g:HhL:l:MmOo:Pp:qQrRs:uv:X:xz-:";
 
   cnk_sct **cnk=NULL_CEWI;
 
@@ -140,73 +172,105 @@ main(int argc,char **argv)
 
   extern char *optarg;
   extern int optind;
-  
-  FILE *fp_bnr=NULL_CEWI; /* [fl] Unformatted binary output file handle */
+
+  FILE *fp_bnr=NULL; /* [fl] Unformatted binary output file handle */
+
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
 
   int abb_arg_nbr=0;
+  int att_glb_nbr;
+  int att_grp_nbr;
+  int att_var_nbr;
   int aux_nbr=0; /* [nbr] Number of auxiliary coordinate hyperslabs specified */
   int cnk_map=nco_cnk_map_nil; /* [enm] Chunking map */
   int cnk_nbr=0; /* [nbr] Number of chunk sizes */
   int cnk_plc=nco_cnk_plc_nil; /* [enm] Chunking policy */
   int dfl_lvl=0; /* [enm] Deflate level */
+  int dmn_nbr_fl;
+  int dmn_rec_fl;
+  int fl_in_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Input file format */
   int fl_nbr=0;
-  int fl_in_fmt; /* [enm] Input file format */
   int fl_out_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Output file format */
   int fll_md_old; /* [enm] Old fill mode */
-  int glb_att_nbr;
-  int grp_nbr=0; /* [nbr] Number of groups to extract */
+  int grp_dpt_fl; /* [nbr] Maximum group depth (root = 0) */
   int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
+  int grp_nbr_fl;
   int idx;
   int in_id;  
-  int jdx;
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
-  int nbr_dmn_fl;
-  int nbr_var_fl;
-  int nbr_xtr=0; /* nbr_xtr will not otherwise be set for -c with no -v */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int opt;
   int rcd=NC_NOERR; /* [rcd] Return code */
-  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
-  int rec_dmn_nbr; /* O [nbr] Number of record dimensions in file */
   int var_lst_in_nbr=0;
-    
-  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
-  lmt_sct **lmt=NULL_CEWI;
-  lmt_all_sct **lmt_all_lst; /* List of *lmt_all structures */
+  int var_nbr_fl;
+  int var_ntm_fl;
+  int xtr_nbr=0; /* xtr_nbr will not otherwise be set for -c with no -v */
 
-  nm_id_sct *grp_lst=NULL; /* [sct] Groups to be extracted */
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
 
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
   size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
+  trv_tbl_sct *trv_tbl=NULL; /* [lst] Traversal table */
+
   static struct option opt_lng[]=
     { /* Structure ordered by short option key if possible */
       /* Long options with no argument, no short option counterpart */
+      {"cdl",no_argument,0,0}, /* [flg] Print CDL */
       {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
       {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
       {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
       {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
       {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+      {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+      {"md5_dgs",no_argument,0,0}, /* [flg] Perform MD5 digests */
+      {"md5_digest",no_argument,0,0}, /* [flg] Perform MD5 digests */
+      {"md5_wrt_att",no_argument,0,0}, /* [flg] Write MD5 digests as attributes */
+      {"md5_write_attribute",no_argument,0,0}, /* [flg] Write MD5 digests as attributes */
       {"cmp",no_argument,0,0},
       {"compiler",no_argument,0,0},
-      {"fix_rec_dmn",no_argument,0,0}, /* [flg] Fix record dimension */
-      {"no_rec_dmn",no_argument,0,0}, /* [flg] Fix record dimension */
+      {"id",no_argument,0,0}, /* [flg] Print normally hidden information, like file, group, and variable IDs */
       {"lbr",no_argument,0,0},
       {"library",no_argument,0,0},
       {"mpi_implementation",no_argument,0,0},
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      {"no_blank",no_argument,0,0}, /* [flg] Print numeric missing values */
+      {"no-blank",no_argument,0,0}, /* [flg] Print numeric missing values */
+      {"noblank",no_argument,0,0}, /* [flg] Print numeric missing values */
       {"no_clb",no_argument,0,0},
       {"noclobber",no_argument,0,0},
       {"no-clobber",no_argument,0,0},
       {"no_clobber",no_argument,0,0},
       {"no_dmn_var_nm",no_argument,0,0}, /* [flg] Print dimension/variable names */
       {"no_nm_prn",no_argument,0,0}, /* [flg] Print dimension/variable names */
+      {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+      {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+      {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+      {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
       {"secret",no_argument,0,0},
       {"shh",no_argument,0,0},
+      {"srm",no_argument,0,0}, /* [flg] Print ncStream */
+      {"sysconf",no_argument,0,0}, /* [flg] Perform sysconf() test */
+      {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+      {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+      {"intersection",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+      {"nsx",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+      {"union",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+      {"unn",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
       {"version",no_argument,0,0},
       {"vrs",no_argument,0,0},
+      {"xml",no_argument,0,0}, /* [flg] Print XML (NcML) */
+      {"xml",no_argument,0,0}, /* [flg] Print XML (NcML) */
+      {"ncml",no_argument,0,0}, /* [flg] Print XML (NcML) */
+      {"xml_no_location",no_argument,0,0}, /* [flg] Omit XML location tag */
+      {"ncml_no_location",no_argument,0,0}, /* [flg] Omit XML location tag */
       /* Long options with argument, no short option counterpart */
+      {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+      {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
       {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
       {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
@@ -217,21 +281,27 @@ main(int argc,char **argv)
       {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
       {"fl_fmt",required_argument,0,0},
       {"file_format",required_argument,0,0},
+      {"fix_rec_dmn",required_argument,0,0}, /* [sng] Fix record dimension */
+      {"no_rec_dmn",required_argument,0,0}, /* [sng] Fix record dimension */
       {"hdr_pad",required_argument,0,0},
       {"header_pad",required_argument,0,0},
       {"mk_rec_dmn",required_argument,0,0}, /* [sng] Name of record dimension in output */
+      {"mk_rec_dim",required_argument,0,0}, /* [sng] Name of record dimension in output */
       {"tst_udunits",required_argument,0,0},
+      {"xml_spr_chr",required_argument,0,0}, /* [flg] Separator for XML character types */
+      {"xml_spr_nmr",required_argument,0,0}, /* [flg] Separator for XML numeric types */
       /* Long options with short counterparts */
       {"3",no_argument,0,'3'},
       {"4",no_argument,0,'4'},
       {"64bit",no_argument,0,'4'},
       {"netcdf4",no_argument,0,'4'},
+      {"7",no_argument,0,'7'},
       {"abc",no_argument,0,'a'},
       {"alphabetize",no_argument,0,'a'},
       {"append",no_argument,0,'A'},
       {"apn",no_argument,0,'A'},
-      {"bnr",no_argument,0,'B'},
-      {"binary",no_argument,0,'B'},
+      {"bnr",required_argument,0,'b'},
+      {"binary",required_argument,0,'b'},
       {"binary-file",required_argument,0,'b'},
       {"fl_bnr",required_argument,0,'b'},
       {"coords",no_argument,0,'c'},
@@ -240,11 +310,12 @@ main(int argc,char **argv)
       {"no-crd",no_argument,0,'C'},
       {"data",required_argument,0,'H'},
       {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
+      {"nco_dbg_lvl",required_argument,0,'D'},
       {"dimension",required_argument,0,'d'},
       {"dmn",required_argument,0,'d'},
       {"fortran",no_argument,0,'F'},
       {"ftn",no_argument,0,'F'},
+      {"gpe",required_argument,0,'G'}, /* [sng] Group Path Edit (GPE) */
       {"grp",required_argument,0,'g'},
       {"group",required_argument,0,'g'},
       {"history",no_argument,0,'h'},
@@ -277,6 +348,10 @@ main(int argc,char **argv)
       {"exclude",no_argument,0,'x'},
       {"xcl",no_argument,0,'x'},
       {"help",no_argument,0,'?'},
+      {"hlp",no_argument,0,'?'},
+      {"get_grp_info",no_argument,0,0},
+      {"get_prg_info",no_argument,0,0},
+      {"get_file_info",no_argument,0,0},
       {0,0,0,0}
     }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
@@ -287,10 +362,9 @@ main(int argc,char **argv)
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
   
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
-  fl_bnr=(char *)strdup("ncks.bnr");
   /* Parse command line arguments */
   while(1){
     /* getopt_long_only() allows one dash to prefix long options */
@@ -301,74 +375,120 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
-      if(!strcmp(opt_crr,"mk_rec_dmn")){
-	rec_dmn_nm=strdup(optarg);
-      } /* endif mk_rec_dmn */
       if(!strcmp(opt_crr,"cmp") || !strcmp(opt_crr,"compiler")){
-	(void)fprintf(stdout,"%s\n",nco_cmp_get());
-	nco_exit(EXIT_SUCCESS);
+        (void)fprintf(stdout,"%s\n",nco_cmp_get());
+        nco_exit(EXIT_SUCCESS);
       } /* endif "cmp" */
+      if(!strcmp(opt_crr,"cdl")) PRN_CDL=True; /* [flg] Print CDL */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
-      if(!strcmp(opt_crr,"fix_rec_dmn") || !strcmp(opt_crr,"no_rec_dmn")) FIX_REC_DMN=True; /* [flg] Fix record dimension */
+      if(!strcmp(opt_crr,"fix_rec_dmn") || !strcmp(opt_crr,"no_rec_dmn")){
+        const char fix_pfx[]="fix_"; /* [sng] Prefix string to fix dimension */
+        rec_dmn_nm=(char *)nco_malloc((strlen(fix_pfx)+strlen(optarg)+1L)*sizeof(char));
+        rec_dmn_nm=strcpy(rec_dmn_nm,fix_pfx);
+        rec_dmn_nm=strcat(rec_dmn_nm,optarg);
+      } /* endif fix_rec_dmn */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"get_grp_info") || !strcmp(opt_crr,"grp_info_get")) GET_GRP_INFO=True;
+      if(!strcmp(opt_crr,"get_file_info")) GET_FILE_INFO=True;
+      if(!strcmp(opt_crr,"get_prg_info")) GET_PRG_INFO=True;
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
       if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
-	hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif "hdr_pad" */
       if(!strcmp(opt_crr,"lbr") || !strcmp(opt_crr,"library")){
-	(void)nco_lbr_vrs_prn();
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_lbr_vrs_prn();
+        nco_exit(EXIT_SUCCESS);
       } /* endif "lbr" */
+      if(!strcmp(opt_crr,"mk_rec_dmn") || !strcmp(opt_crr,"mk_rec_dim")) rec_dmn_nm=strdup(optarg);
       if(!strcmp(opt_crr,"mpi_implementation")){
-	(void)fprintf(stdout,"%s\n",nco_mpi_get());
-	nco_exit(EXIT_SUCCESS);
+        (void)fprintf(stdout,"%s\n",nco_mpi_get());
+        nco_exit(EXIT_SUCCESS);
       } /* endif "mpi" */
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"md5_dgs") || !strcmp(opt_crr,"md5_digest")){
+        if(!md5) md5=nco_md5_ini();
+	md5->dgs=True;
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will perform MD5 digests of input and output hyperslabs\n",nco_prg_nm_get());
+      } /* endif "md5_dgs" */
+      if(!strcmp(opt_crr,"md5_wrt_att") || !strcmp(opt_crr,"md5_write_attribute")){
+        if(!md5) md5=nco_md5_ini();
+	md5->wrt=md5->dgs=True;
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will write MD5 digests as attributes\n",nco_prg_nm_get());
+      } /* endif "md5_wrt_att" */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"no_blank") || !strcmp(opt_crr,"no-blank") || !strcmp(opt_crr,"noblank")) PRN_MSS_VAL_BLANK=!PRN_MSS_VAL_BLANK;
       if(!strcmp(opt_crr,"no_clb") || !strcmp(opt_crr,"no-clobber") || !strcmp(opt_crr,"no_clobber") || !strcmp(opt_crr,"noclobber")) FORCE_NOCLOBBER=!FORCE_NOCLOBBER;
       if(!strcmp(opt_crr,"no_dmn_var_nm") || !strcmp(opt_crr,"no_nm_prn")) PRN_DMN_VAR_NM=False;
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
+      if(!strcmp(opt_crr,"secret") || !strcmp(opt_crr,"scr") || !strcmp(opt_crr,"shh")){
+        (void)fprintf(stdout,"Hidden/unsupported NCO options:\nCompiler used\t\t--cmp, --compiler\nHidden functions\t--scr, --ssh, --secret\nLibrary used\t\t--lbr, --library\nMemory clean\t\t--mmr_cln, --cln, --clean\nMemory dirty\t\t--mmr_drt, --drt, --dirty\nMPI implementation\t--mpi_implementation\nNameless printing\t--no_nm_prn, --no_dmn_var_nm\nNo-clobber files\t--no_clb, --no-clobber\nPseudonym\t\t--pseudonym, -Y (ncra only)\nStreams\t\t\t--srm\nSysconf\t\t\t--sysconf\nTest UDUnits [...]
+        nco_exit(EXIT_SUCCESS);
+      } /* endif "shh" */
+      if(!strcmp(opt_crr,"srm")) PRN_SRM=True; /* [flg] Print ncStream */
+      if(!strcmp(opt_crr,"sysconf")){
+	long maxrss; /* [B] Maximum resident set size */
+	maxrss=nco_mmr_usg_prn((int)0);
+	maxrss+=0; /* CEWI */
+        nco_exit(EXIT_SUCCESS);
+      } /* endif "sysconf" */
       if(!strcmp(opt_crr,"tst_udunits")){ 
-	char *cp;
+	/* Use this feature with, e.g.,
+	   ncks --tst_udunits='5 meters',centimeters ~/nco/data/in.nc
+	   ncks --tst_udunits='days since 1918-11-11','days since 1939-09-09',standard ~/nco/data/in.nc
+	   ncks --tst_udunits='days since 1918-11-11','days since 1939-09-09',360_day ~/nco/data/in.nc
+	   ncks --tst_udunits='days since 1918-11-11','days since 1939-09-09',365_day ~/nco/data/in.nc
+	   ncks --tst_udunits='days since 1918-11-11','days since 1939-09-09',366_day ~/nco/data/in.nc */
+        char *cp;
         char **args;
         double crr_val;
 #ifndef ENABLE_UDUNITS
-        (void)fprintf(stdout,"%s: Build NCO with UDUnits support to use this option\n",prg_nm_get());
+        (void)fprintf(stdout,"%s: Build NCO with UDUnits support to use this option\n",nco_prg_nm_get());
         nco_exit(EXIT_FAILURE);
-#endif 
+#endif /* !ENABLE_UDUNITS */
         cp=strdup(optarg); 
         args=nco_lst_prs_1D(cp,",",&lmt_nbr);         
         nco_cln_clc_org(args[0],args[1],(lmt_nbr > 2 ? nco_cln_get_cln_typ(args[2]) : cln_nil),&crr_val);        
-        (void)fprintf(stdout,"Units in=%s, units out=%s, difference=%f\n",args[0],args[1],crr_val);
+        (void)fprintf(stdout,"Units in=%s, units out=%s, difference (date) or conversion (non-date) = %f\n",args[0],args[1],crr_val);
         if(cp) cp=(char *)nco_free(cp);
         nco_exit(EXIT_SUCCESS);
       } /* endif "tst_udunits" */
-      if(!strcmp(opt_crr,"secret") || !strcmp(opt_crr,"scr") || !strcmp(opt_crr,"shh")){
-	(void)fprintf(stdout,"Hidden/unsupported NCO options:\nCompiler used\t\t--cmp, --compiler\nHidden functions\t--scr, --ssh, --secret\nLibrary used\t\t--lbr, --library\nMemory clean\t\t--mmr_cln, --cln, --clean\nMemory dirty\t\t--mmr_drt, --drt, --dirty\nGroup sub-setting\t-g\nMPI implementation\t--mpi_implementation\nMSA user order\t\t--msa_usr_rdr\nNameless printing\t--no_nm_prn, --no_dmn_var_nm\nNo-clobber files\t--no_clb, --no-clobber\nPseudonym\t\t--pseudonym, -Y (ncra only)\nTest ud [...]
-	nco_exit(EXIT_SUCCESS);
-      } /* endif "shh" */
+      if(!strcmp(opt_crr,"unn") || !strcmp(opt_crr,"union")) GRP_VAR_UNN=True;
+      if(!strcmp(opt_crr,"nsx") || !strcmp(opt_crr,"intersection")) GRP_VAR_UNN=False;
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
+      if(!strcmp(opt_crr,"xml") || !strcmp(opt_crr,"ncml")) PRN_XML=True; /* [flg] Print XML (NcML) */
+      if(!strcmp(opt_crr,"xml_no_location") || !strcmp(opt_crr,"ncml_no_location")){PRN_XML_LOCATION=False;PRN_XML=True;} /* [flg] Print XML location tag */
+      if(!strcmp(opt_crr,"xml_spr_chr")){spr_chr=(char *)strdup(optarg);PRN_XML=True;} /* [flg] Separator for XML character types */
+      if(!strcmp(opt_crr,"xml_spr_nmr")){spr_nmr=(char *)strdup(optarg);PRN_XML=True;} /* [flg] Separator for XML numeric types */
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -380,20 +500,22 @@ main(int argc,char **argv)
     case '4': /* Catch-all to prescribe output storage format */
       if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
       break;
+    case '5': /* Print using new print format */
+      PRN_NEW_FMT=!PRN_NEW_FMT;
+      break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
     case 'a': /* Toggle ALPHABETIZE_OUTPUT */
       ALPHABETIZE_OUTPUT=!ALPHABETIZE_OUTPUT;
       break;
-    case 'B': /* Set NCO_BNR_WRT */
-      NCO_BNR_WRT=True;
-      break;
     case 'b': /* Set file for binary output */
-      NCO_BNR_WRT=True;
       fl_bnr=(char *)strdup(optarg);
       break;
     case 'C': /* Extract all coordinates associated with extracted variables? */
@@ -403,23 +525,27 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
       lmt_arg[lmt_nbr]=(char *)strdup(optarg);
       lmt_nbr++;
+      HAVE_LIMITS=True;
       break;
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      gpe=nco_gpe_prs_arg(optarg);
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
     case 'g': /* Copy group argument for later processing */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      grp_nbr=grp_lst_in_nbr;
       break;
     case 'H': /* Toggle printing data to screen */
       PRN_VAR_DATA_TGL=True;
@@ -460,7 +586,7 @@ main(int argc,char **argv)
       PRN_DMN_IDX_CRD_VAL=!PRN_DMN_IDX_CRD_VAL;
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -478,28 +604,33 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      HAVE_LIMITS=True;
       break;
-    case 'x': /* Exclude rather than extract variables specified with -v */
+    case 'x': /* Exclude rather than extract groups and variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
       break;
+    case 'z': /* Print absolute path of all input variables then exit */
+      GET_LIST=True;
+      break;
     case '?': /* Print proper usage */
       (void)nco_usg_prn();
-      nco_exit(EXIT_FAILURE);
+      nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -507,77 +638,60 @@ main(int argc,char **argv)
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
 
+  /* Initialize traversal table */
+  (void)trv_tbl_init(&trv_tbl);
+
+  /* Get program info for regressions tests */
+  if(GET_PRG_INFO) nco_get_prg_info();
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
   
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-  
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
-
-  /* Parse auxiliary coordinates */
-  if(aux_nbr > 0){
-     int aux_idx_nbr;
-     aux=nco_aux_evl(in_id,aux_nbr,aux_arg,&aux_idx_nbr);
-     if(aux_idx_nbr > 0){
-        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
-        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
-        int aux_idx=0;
-        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
-        lmt_nbr=lmt_nbr_new;
-     } /* endif aux */
-  } /* endif aux_nbr */
-  
-  /* Get number of variables, dimensions, and global attributes in file */
-  /*  (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,&glb_att_nbr,&rec_dmn_id);*/
-  (void)nco4_inq(in_id,&glb_att_nbr,&nbr_dmn_fl,&nbr_var_fl,&rec_dmn_nbr,&rec_dmn_id);
-  (void)nco_inq_format(in_id,&fl_in_fmt);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
 
-  /* Get record dimension name name if not already defined with --mk_rec_dmn (and --fix_rec_dmn is false) */
-  if(!FIX_REC_DMN && !rec_dmn_nm && (rec_dmn_id != NCO_REC_DMN_UNDEFINED)){ 
-    rec_dmn_nm=(char *)nco_malloc(NC_MAX_NAME*(sizeof(char)));
-    (void)nco_inq_dimname(in_id,rec_dmn_id,rec_dmn_nm);
-  } /* endif rec_dmn_nm */
+  /* Construct GTT (Group Traversal Table), check -v and -g input names and create extraction list*/
+  (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl);
 
-  /* Form initial extraction list which may include extended regular expressions */
-  /*  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);*/
-  xtr_lst=nco4_var_lst_mk(in_id,&nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
-
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
-
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
-
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  /* Get number of variables, dimensions, and global attributes in file */
+  (void)trv_tbl_inq(&att_glb_nbr,&att_grp_nbr,&att_var_nbr,&dmn_nbr_fl,&dmn_rec_fl,&grp_dpt_fl,&grp_nbr_fl,&var_ntm_fl,&var_nbr_fl,trv_tbl);
 
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  /* Make output and input files consanguinous */
+  (void)nco_inq_format(in_id,&fl_in_fmt);
+  if(fl_out && fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
+
+  /* Process -z option if requested */ 
+  if(GET_LIST){ 
+    if(ALPHABETIZE_OUTPUT) trv_tbl_srt(trv_tbl);
+    trv_tbl_prn(trv_tbl);
+    goto close_and_free; 
+  } /* end GET_LIST */ 
+
+  /* Process --get_grp_info option if requested */ 
+  if(GET_GRP_INFO){ 
+    nco_prt_trv_tbl(in_id,trv_tbl);
+    goto close_and_free; 
+  } /* end GET_GRP_INFO */
+
+  /* Process --get_file_info option if requested */ 
+  if(GET_FILE_INFO){ 
+    (void)fprintf(stderr,"%s: INFO reports file information\n",nco_prg_nm_get());
+    (void)fprintf(stdout,"%d subgroups, %d fixed dimensions, %d record dimensions, %d group + global attributes, %d atomic-type variables, %d non-atomic variables\n",grp_nbr_fl,trv_tbl->nbr_dmn-dmn_rec_fl,dmn_rec_fl,att_glb_nbr+att_glb_nbr,var_nbr_fl,var_ntm_fl);
+    goto close_and_free; 
+  } /* end GET_FILE_INFO */
+
+  if(ALPHABETIZE_OUTPUT) trv_tbl_srt(trv_tbl);
 
-  /* Sort extraction list alphabetically or by variable ID */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,ALPHABETIZE_OUTPUT);
-    
   /* We now have final list of variables to extract. Phew. */
 
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
-
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
-  
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
-  
   if(fl_out){
     /* Copy everything (all data and metadata) to output file by default */
     if(PRN_VAR_DATA_TGL) PRN_VAR_DATA=False; else PRN_VAR_DATA=True;
@@ -604,22 +718,25 @@ main(int argc,char **argv)
       if(PRN_VAR_DATA_TGL) PRN_VAR_DATA=True; else PRN_VAR_DATA=False;
       if(PRN_VAR_METADATA_TGL) PRN_VAR_METADATA=True; else PRN_VAR_METADATA=False;
       if(PRN_GLB_METADATA_TGL) PRN_GLB_METADATA=True; else PRN_GLB_METADATA=False;
-      
-      /* PRN_QUIET turns off all printing to screen */
-      if(PRN_QUIET) PRN_VAR_DATA=PRN_VAR_METADATA=PRN_GLB_METADATA=False;
-      
     } /* !PRN_VRB */  
+    /* PRN_QUIET turns off all printing to screen */
+    if(PRN_QUIET) PRN_VAR_DATA=PRN_VAR_METADATA=PRN_GLB_METADATA=False;
   } /* !fl_out */  
 
-  if(NCO_BNR_WRT && !fl_out){
+  if(fl_bnr && !fl_out){
     /* Native binary files depend on writing netCDF file to enter generic I/O logic */
-    (void)fprintf(stdout,"%s: ERROR Native binary files cannot be written unless netCDF output filename also specified. HINT: Repeat command with dummy netCDF file specified for output file (e.g., -o foo.nc)\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Native binary files cannot be written unless netCDF output filename also specified. HINT: Repeat command with dummy netCDF file specified for output file (e.g., -o foo.nc)\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
-  } /* endif NCO_BNR_WRT */
+  } /* endif fl_bnr */
     
+  if(gpe){
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Group Path Edit (GPE) feature enabled\n",nco_prg_nm_get());
+    if(fl_out && fl_out_fmt != NC_FORMAT_NETCDF4 && nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING Group Path Edit (GPE) requires netCDF4 output format in most cases (except flattening) but user explicitly requested output format = %s. This command will fail if the output file requires netCDF4 features like groups.\n",nco_prg_nm_get(),nco_fmt_sng(fl_out_fmt));
+  } /* !gpe */
+
   if(fl_out){
     /* Output file was specified so PRN_ tokens refer to (meta)data copying */
-    int out_id;  
+    int out_id;
     
     /* Make output and input files consanguinous */
     if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
@@ -628,131 +745,206 @@ main(int argc,char **argv)
     (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
     /* Open output file */
-    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-    
-    /* Copy global attributes */
-    if(PRN_GLB_METADATA) (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
+    fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
     
+    /* Define extracted groups, variables, and attributes in output file */
+    (void)nco_xtr_dfn(in_id,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,PRN_GLB_METADATA,PRN_VAR_METADATA,nco_pck_plc_nil,rec_dmn_nm,trv_tbl);
+
     /* Catenate timestamped command line to "history" global attribute */
     if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
-    if(True) (void)nco_vrs_att_cat(out_id);
-    
-    /* Define requested/necessary input groups in output file */
-    if(grp_nbr > 0 || fl_in_fmt == NC_FORMAT_NETCDF4) grp_lst=nco_grp_lst_mk(in_id,grp_lst_in,EXCLUDE_INPUT_LIST,&grp_nbr);
-    if(grp_nbr > 0) rcd+=nco_grp_dfn(out_id,grp_lst,grp_nbr);
-
-    for(idx=0;idx<nbr_xtr;idx++){
-      int var_out_id;
-
-      /* Define variable in output file */
-      if(lmt_nbr > 0) var_out_id=nco_cpy_var_dfn_lmt(in_id,out_id,rec_dmn_nm,xtr_lst[idx].nm,lmt_all_lst,nbr_dmn_fl,dfl_lvl); else var_out_id=nco_cpy_var_dfn(in_id,out_id,rec_dmn_nm,xtr_lst[idx].nm,dfl_lvl);
-      /* Copy variable's attributes */
-      if(PRN_VAR_METADATA) (void)nco_att_cpy(in_id,out_id,xtr_lst[idx].id,var_out_id,(nco_bool)True);
-    } /* end loop over idx */
-    /* Set chunksize parameters */
-    if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
-    
+    if(HISTORY_APPEND) (void)nco_vrs_att_cat(out_id);
+
     /* Turn off default filling behavior to enhance efficiency */
     nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-    
+
     /* Take output file out of define mode */
     if(hdr_pad == 0UL){
       (void)nco_enddef(out_id);
     }else{
       (void)nco__enddef(out_id,hdr_pad);
-      if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes \n",prg_nm_get(),(unsigned long)hdr_pad);
+      if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
     } /* hdr_pad */
-    
+
     /* [fnc] Open unformatted binary data file for writing */
-    if(NCO_BNR_WRT) fp_bnr=nco_bnr_open(fl_bnr);
-    
+    if(fl_bnr) fp_bnr=nco_bnr_open(fl_bnr);
+
     /* Timestamp end of metadata setup and disk layout */
     rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
     ddra_info.tmr_flg=nco_tmr_rgl;
-    
-    /* Copy variable data */
-    for(idx=0;idx<nbr_xtr;idx++){
-      if(dbg_lvl >= nco_dbg_var && !NCO_BNR_WRT) (void)fprintf(stderr,"%s, ",xtr_lst[idx].nm);
-      if(dbg_lvl >= nco_dbg_var) (void)fflush(stderr);
-      /* Old hyperslab routines */
-      /* NB: nco_cpy_var_val_lmt() contains OpenMP critical region */
-      /* if(lmt_nbr > 0) (void)nco_cpy_var_val_lmt(in_id,out_id,fp_bnr,NCO_BNR_WRT,xtr_lst[idx].nm,lmt,lmt_nbr); else (void)nco_cpy_var_val(in_id,out_id,fp_bnr,NCO_BNR_WRT,xtr_lst[idx].nm); */
-      /* Multi-slab routines */
-      /* NB: nco_cpy_var_val_mlt_lmt() contains OpenMP critical region */
-      if(lmt_nbr > 0) (void)nco_cpy_var_val_mlt_lmt(in_id,out_id,fp_bnr,NCO_BNR_WRT,xtr_lst[idx].nm,lmt_all_lst,nbr_dmn_fl); else (void)nco_cpy_var_val(in_id,out_id,fp_bnr,NCO_BNR_WRT,xtr_lst[idx].nm);
-    } /* end loop over idx */
-    
+
+    /* Write extracted data to output file */
+    if(PRN_VAR_DATA) (void)nco_xtr_wrt(in_id,out_id,gpe,fp_bnr,md5,HAVE_LIMITS,trv_tbl);
+
     /* [fnc] Close unformatted binary data file */
-    if(NCO_BNR_WRT) (void)nco_bnr_close(fp_bnr,fl_bnr);
-    
+    if(fp_bnr) (void)nco_bnr_close(fp_bnr,fl_bnr);
+
+    if(nco_dbg_lvl_get() == 14){
+      (void)nco_wrt_trv_tbl(in_id,trv_tbl,True);
+      (void)nco_wrt_trv_tbl(out_id,trv_tbl,True);
+    }
+
     /* Close output file and move it from temporary to permanent location */
     (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
     
   }else{ /* !fl_out */
+
+    nco_bool ALPHA_BY_FULL_GROUP=False; /* [flg] Print alphabetically by full group */
+    nco_bool ALPHA_BY_STUB_GROUP=True; /* [flg] Print alphabetically by stub group */
+    //      nco_bool ALPHA_BY_FULL_OBJECT=False; /* [flg] Print alphabetically by full object */
+    //      nco_bool ALPHA_BY_STUB_OBJECT=False; /* [flg] Print alphabetically by stub object */
+    char *fl_nm_stub;
+    char *fl_in_dpl=NULL;
+    char *sfx_ptr;
+
+    /* Update all GTT dimensions with hyperslabbed size */
+    (void)nco_dmn_trv_msa_tbl(in_id,rec_dmn_nm,trv_tbl);   
+
     /* No output file was specified so PRN_ tokens refer to screen printing */
+    prn_fmt_sct prn_flg;
+    prn_flg.cdl=PRN_CDL;
+    prn_flg.srm=PRN_SRM;
+    prn_flg.xml=PRN_XML;
+    prn_flg.trd=!(PRN_CDL || PRN_XML);
+    if((prn_flg.cdl || prn_flg.xml) && nco_dbg_lvl >= nco_dbg_std) prn_flg.nfo_xtr=True; else prn_flg.nfo_xtr=False;
+    prn_flg.new_fmt=(PRN_CDL || PRN_SRM || PRN_XML || PRN_NEW_FMT);
+    /* CDL must print filename stub */
+    if(prn_flg.cdl || prn_flg.xml){
+      fl_in_dpl=strdup(fl_in);
+      fl_nm_stub=strrchr(fl_in_dpl,'/');
+      if(fl_nm_stub) fl_nm_stub++; else fl_nm_stub=fl_in_dpl;
+      sfx_ptr=strrchr(fl_nm_stub,'.');
+      if(sfx_ptr) *sfx_ptr='\0';
+      prn_flg.fl_stb=fl_nm_stub;
+    } /* endif CDL */
+    /* XML needs filename (unless location will be omitted) */
+    if(prn_flg.xml) prn_flg.fl_in=fl_in;
+    prn_flg.spr_nmr=spr_nmr;
+    prn_flg.spr_chr=spr_chr;
+    prn_flg.xml_lcn=PRN_XML_LOCATION;
+    prn_flg.gpe=gpe;
+    prn_flg.md5=md5;
+    prn_flg.nbr_zro=0;
+    prn_flg.ndn=0; /* Initialize for prn_flg->trd */
+    prn_flg.spc_per_lvl=2;
+    prn_flg.sxn_fst=2;
+    prn_flg.var_fst=2;
+    prn_flg.tab=4;
+    if(nco_dbg_lvl >= nco_dbg_scl) prn_flg.fll_pth=True; else prn_flg.fll_pth=False;
+    if(prn_flg.xml) prn_flg.nwl_pst_val=False; else prn_flg.nwl_pst_val=True;
+    prn_flg.dlm_sng=dlm_sng;
+    prn_flg.ALPHA_BY_FULL_GROUP=ALPHA_BY_FULL_GROUP;
+    // prn_flg.ALPHA_BY_FULL_OBJECT=ALPHA_BY_FULL_OBJECT;
+    prn_flg.ALPHA_BY_STUB_GROUP=ALPHA_BY_STUB_GROUP;
+    // prn_flg.ALPHA_BY_STUB_OBJECT=ALPHA_BY_STUB_OBJECT;
+    prn_flg.FORTRAN_IDX_CNV=FORTRAN_IDX_CNV;
+    prn_flg.PRN_DMN_IDX_CRD_VAL=PRN_DMN_IDX_CRD_VAL;
+    prn_flg.PRN_DMN_UNITS=PRN_DMN_UNITS;
+    prn_flg.PRN_DMN_VAR_NM=PRN_DMN_VAR_NM;
+    prn_flg.PRN_GLB_METADATA=PRN_GLB_METADATA;
+    prn_flg.PRN_MSS_VAL_BLANK=PRN_MSS_VAL_BLANK;
+    prn_flg.PRN_VAR_DATA=PRN_VAR_DATA;
+    prn_flg.PRN_VAR_METADATA=PRN_VAR_METADATA;
+    /* Derived formats */
+    if(prn_flg.cdl){
+      prn_flg.PRN_DMN_UNITS=False;
+      prn_flg.PRN_DMN_VAR_NM=True;
+      prn_flg.PRN_MSS_VAL_BLANK=True;
+    } /* endif */
+    if(prn_flg.xml){
+      prn_flg.PRN_MSS_VAL_BLANK=False;
+    } /* endif */
+
+    /* File summary */
     if(PRN_GLB_METADATA){
-      (void)fprintf(stdout,"Opened file %s: dimensions = %i, variables = %i, global atts. = %i, ID = %i, type = %s\n",fl_in,nbr_dmn_fl,nbr_var_fl,glb_att_nbr,in_id,nco_fmt_sng(fl_in_fmt));
-      if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
-	char dmn_nm[NC_MAX_NAME]; 
-	long rec_dmn_sz;
-	
-	(void)nco_inq_dim(in_id,rec_dmn_id,dmn_nm,&rec_dmn_sz);
-	(void)fprintf(stdout,"Record dimension: name = %s, size = %li\n\n",dmn_nm,rec_dmn_sz);
-      } /* end if */
+      prn_flg.smr_sng=smr_sng=(char *)nco_malloc(300*sizeof(char)); /* [sng] File summary string */
+      (void)sprintf(smr_sng,"Summary of %s: filetype = %s, %i groups (max. depth = %i), %i dimensions (%i fixed, %i record), %i variables (%i atomic-type, %i non-atomic), %i attributes (%i global, %i group, %i variable)",fl_in,nco_fmt_sng(fl_in_fmt),grp_nbr_fl,grp_dpt_fl,trv_tbl->nbr_dmn,trv_tbl->nbr_dmn-dmn_rec_fl,dmn_rec_fl,var_nbr_fl+var_ntm_fl,var_nbr_fl,var_ntm_fl,att_glb_nbr+att_grp_nbr+att_var_nbr,att_glb_nbr,att_grp_nbr,att_var_nbr);
+      if(!prn_flg.cdl && !prn_flg.xml && !prn_flg.srm) (void)fprintf(stdout,"%s\n\n",smr_sng);
+    } /* endif summary */
+
+    if(!prn_flg.new_fmt){
       
-      /* Print global attributes */
-      (void)nco_prn_att(in_id,NC_GLOBAL);
-    } /* endif PRN_GLB_METADATA */
-    
-    if(PRN_VAR_METADATA){
-      for(idx=0;idx<nbr_xtr;idx++){
-	/* Print variable's definition */
-	(void)nco_prn_var_dfn(in_id,xtr_lst[idx].nm);
-	/* Print variable's attributes */
-	(void)nco_prn_att(in_id,xtr_lst[idx].id);
-      } /* end loop over idx */
-    } /* end if PRN_VAR_METADATA */
-    
-    if(PRN_VAR_DATA){
-      /* NB: nco_msa_prn_var_val() with same nc_id contains OpenMP critical region */
-      for(idx=0;idx<nbr_xtr;idx++) (void)nco_msa_prn_var_val(in_id,xtr_lst[idx].nm,lmt_all_lst,nbr_dmn_fl,dlm_sng,FORTRAN_IDX_CNV,PRN_DMN_UNITS,PRN_DMN_IDX_CRD_VAL,PRN_DMN_VAR_NM);
-    } /* end if PRN_VAR_DATA */
-    
+      /* Traditional printing order/format */
+      if(PRN_GLB_METADATA){
+	int dmn_ids_rec[NC_MAX_DIMS]; /* [ID] Record dimension IDs array */
+	int nbr_rec_lcl; /* [nbr] Number of record dimensions visible in root */
+	/* Get unlimited dimension information from input file/group */
+	rcd=nco_inq_unlimdims(in_id,&nbr_rec_lcl,dmn_ids_rec);
+	if(nbr_rec_lcl > 0){
+	  char dmn_nm[NC_MAX_NAME]; 
+	  long rec_dmn_sz;
+	  for(int rec_idx=0;rec_idx<nbr_rec_lcl;rec_idx++){
+	    (void)nco_inq_dim(in_id,dmn_ids_rec[rec_idx],dmn_nm,&rec_dmn_sz);
+	    (void)fprintf(stdout,"Root record dimension %d: name = %s, size = %li\n",rec_idx,dmn_nm,rec_dmn_sz);
+	  } /* end loop over rec_idx */
+	  (void)fprintf(stdout,"\n");
+	} /* NCO_REC_DMN_UNDEFINED */
+	/* Print group attributes recursively */
+	(void)nco_prn_att_trv(in_id,&prn_flg,trv_tbl);
+      } /* !PRN_GLB_METADATA */
+      
+      if(PRN_VAR_METADATA) (void)nco_prn_xtr_mtd(in_id,&prn_flg,trv_tbl);
+      if(PRN_VAR_DATA) (void)nco_prn_xtr_val(in_id,&prn_flg,trv_tbl);
+      
+    }else{ 
+      
+      /* New file dump format developed 201307 for CDL, TRD, XML, SRM */
+      
+      if(PRN_SRM){
+	nco_srm_hdr();
+	goto close_and_free;
+      } /* !PRN_SRM */
+
+      if(ALPHA_BY_FULL_GROUP || ALPHA_BY_STUB_GROUP){
+	rcd+=nco_grp_prn(in_id,trv_pth,&prn_flg,trv_tbl);
+      }else{
+	trv_sct trv_obj; /* [sct] Traversal table object */
+	for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++){
+	  /* Shallow copy to avoid indirection */
+	  trv_obj=trv_tbl->lst[obj_idx];
+	  /* Print this group */
+	  if(trv_obj.nco_typ == nco_obj_typ_grp){
+	    /* Print dimensions defined in this group */
+	    // (void)nco_prn_dmn_xtr(in_id,trv_tbl);
+	    /* Print group attributes */
+	    //if(PRN_GLB_METADATA) (void)nco_prn_grp_att(in_id,trv_tbl);
+	    ;
+	  } /* endif group */
+	  if(trv_obj.nco_typ == nco_obj_typ_var){
+	    if(PRN_VAR_METADATA) (void)nco_prn_xtr_mtd(in_id,&prn_flg,trv_tbl);
+	    if(PRN_VAR_DATA) (void)nco_prn_xtr_val(in_id,&prn_flg,trv_tbl);
+	  } /* endif variable */
+	} /* end loop over obj_idx */
+      } /* end if */
+    } /* endif new format */
+
+    if(fl_in_dpl) fl_in_dpl=(char *)nco_free(fl_in_dpl);
   } /* !fl_out */
   
-  /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+ close_and_free: /* goto close_and_free */
   
   /* Close input netCDF file */
   nco_close(in_id);
   
   /* Remove local copy of file */
-  if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+  if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
   
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncks-specific memory */
     if(fl_bnr) fl_bnr=(char *)nco_free(fl_bnr);
-    if(rec_dmn_nm) rec_dmn_nm=(char *)nco_free(rec_dmn_nm);
-
-    /* free lmt[] NB: is now referenced within lmt_all_lst[idx] */
-    for(idx=0;idx<nbr_dmn_fl;idx++)
-      for(jdx=0;jdx<lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-	lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-
-    lmt=(lmt_sct**)nco_free(lmt); 
-    if(nbr_dmn_fl > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl);
-    
+    if(rec_dmn_nm) rec_dmn_nm=(char *)nco_free(rec_dmn_nm); 
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
     if(fl_pth) fl_pth=(char *)nco_free(fl_pth);
     if(fl_pth_lcl) fl_pth_lcl=(char *)nco_free(fl_pth_lcl);
+    if(spr_nmr) spr_nmr=(char *)nco_free(spr_nmr);
+    if(spr_chr) spr_chr=(char *)nco_free(spr_chr);
     /* Free lists of strings */
     if(fl_lst_in && fl_lst_abb == NULL) fl_lst_in=nco_sng_lst_free(fl_lst_in,fl_nbr); 
     if(fl_lst_in && fl_lst_abb) fl_lst_in=nco_sng_lst_free(fl_lst_in,1);
@@ -761,21 +953,23 @@ main(int argc,char **argv)
     if(var_lst_in_nbr > 0) var_lst_in=nco_sng_lst_free(var_lst_in,var_lst_in_nbr);
     /* Free limits */
     for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
-    /* NB: lmt[idx] was free()'d earlier
-    if(lmt_nbr > 0) lmt=nco_lmt_lst_free(lmt,lmt_nbr); */
     for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
-    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
+    trv_tbl_free(trv_tbl);
+    if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
+    if(md5) md5=(md5_sct *)nco_md5_free(md5);
+    if(smr_sng) smr_sng=(char *)nco_free(smr_sng);
   } /* !flg_cln */
+
   
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
-  
+
   if(rcd != NC_NOERR) nco_err_exit(rcd,"main");
   nco_exit_gracefully();
   return EXIT_SUCCESS;
-
+  
 } /* end main() */
diff --git a/src/nco/nco.h b/src/nco/nco.h
index 49a2f2e..d015e01 100644
--- a/src/nco/nco.h
+++ b/src/nco/nco.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco.h,v 1.166 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco.h,v 1.440 2013/12/02 00:13:21 zender Exp $ */
 
 /* Purpose: netCDF Operator (NCO) definitions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -20,6 +20,7 @@
 
 /* Personal headers */
 #include "nco_typ.h" /* Type definitions, opaque types */
+#include "nco_uthash.h" /* Hash table functionality */
 
   /* C pre-processor macros for instantiating variable values with string tokens
      Macros for token pasting described at http://www.parashift.com/c++-faq-lite
@@ -43,11 +44,8 @@
 extern "C" {
 #endif /* !__cplusplus */
 
-/* Uncomment next line to remove C99 restrict type-qualifier from all source */
-/* #define restrict */
-
 /* Replace restrict by __restrict in g++ compiler
-   Substitute whitespace for __restrict in all other C++ compilers */
+   Substitute whitespace for restrict in all other C++ compilers */
 #ifdef __cplusplus
 # ifdef __GNUG__
 #  define restrict __restrict
@@ -106,6 +104,12 @@ extern "C" {
 #define short_CEWI 0
 #define size_t_CEWI 0UL
   
+  /* Numeric constants to simplify arithmetic */
+#define NCO_BYT_PER_KB 1024UL
+#define NCO_BYT_PER_MB 1048576UL
+#define NCO_BYT_PER_GB 1073741824UL
+#define NCO_BYT_PER_TB 1099511627776UL
+
   /* netcdf.h NC_GLOBAL is, strictly, the variable ID for global attributes
      NCO_REC_DMN_UNDEFINED is dimension ID of record dimension iff record dimension is undefined
      Normally using -1 for this ID is fine, but token makes meaning clearer
@@ -115,7 +119,7 @@ extern "C" {
   /* netcdf.h defines four NC_FORMAT tokens: NC_FORMAT_CLASSIC, ...
      The values are (currently) enumerated from one to four
      Operators need to check if fl_out_fmt has been user-specified
-     Saftest way is to compare current value of fl_out_fmt to initial value 
+     Safest way is to compare current value of fl_out_fmt to initial value 
      Initial value should be a number that will never be a true netCDF format */
 #define NCO_FORMAT_UNDEFINED 0
   
@@ -129,17 +133,21 @@ extern "C" {
 #define NCO_LST_GRP 0
 
   /* Debugging level that quiets all non-requested informational messages
-     This value is compared against user-selected dbg_lvl 
-     Running operators with --quiet automatically sets dbg_lvl=NCO_DBG_QUIET */
+     This value is compared against user-selected nco_dbg_lvl 
+     Running operators with --quiet automatically sets nco_dbg_lvl=NCO_DBG_QUIET */
 #define NCO_DBG_QUIET 0
 
-  /* NCO_MSS_VAL_SNG names attribute whose value is "skipped" by arithmetic
-     Must be either "missing_value" or "_FillValue" */
+  /* Find traversal table objects via hash table rather than bruit-force strcmp() search */
+  //#define NCO_HSH_TRV_OBJ 1
+
+  /* NCO_MSS_VAL_SNG names attribute whose value is "skipped" by arithmetic, aka the missing value attribute
+     Attribute name should be either "missing_value" or "_FillValue" */
 #ifndef NCO_MSS_VAL_SNG
-  /* 20070831: TKN2SNG technique inserts quotes into string though same test code in c.c does not produce extra quotes. TODO nco905. */
+  /* 20070831: TKN2SNG() technique inserts quotes into string though same test code in c.c does not produce extra quotes. TODO nco905. */
   /*# define NCO_MSS_VAL_SNG missing_value */
   /*# define NCO_MSS_VAL_SNG _FillValue*/
   /*char nco_mss_val_sng[]=TKN2SNG(NCO_MSS_VAL_SNG);*/ /* [sng] Missing value attribute name */
+  /* Arcane workaround using NCO_USE_FILL_VALUE necessary because TKN2SNG() macro above is broken. TODO nco905 */
 # define NCO_USE_FILL_VALUE
 # ifdef NCO_USE_FILL_VALUE
   /* NCO_NETCDF4_AND_FILLVALUE tells whether netCDF4 restrictions on 
@@ -149,30 +157,46 @@ extern "C" {
 #   define NCO_NETCDF4_AND_FILLVALUE
 #  endif /* !ENABLE_NETCDF4 */
 # endif /* !NCO_USE_FILL_VALUE */
-# define NCO_MSS_VAL_SNG
 #endif /* NCO_MSS_VAL_SNG */
 
   /* Prototype global functions before defining them in next block */
   char *nco_mss_val_sng_get(void); /* [sng] Missing value attribute name */
   char *nco_not_mss_val_sng_get(void); /* [sng] Not missing value attribute name */
-  char *prg_nm_get(void);
-  int prg_get(void);
-  unsigned short dbg_lvl_get(void);
+  char *nco_prg_nm_get(void);
+  int nco_prg_id_get(void);
+  unsigned short nco_dbg_lvl_get(void);
+  unsigned short nco_hdf_cnv_get(void);
+  unsigned short nco_mrd_cnv_get(void);
+  unsigned short nco_rth_cnv_get(void);
+  unsigned short nco_upk_cnv_get(void);
 
 #ifdef MAIN_PROGRAM_FILE /* Current file contains main() */
   
   /* Tokens and variables with scope limited to main.c, and global variables allocated here */
   
-  int prg; /* [enm] Program ID */
-  int prg_get(void){return prg;} /* [enm] Program ID */
+  int nco_prg_id; /* [enm] Program ID */
+  int nco_prg_id_get(void){return nco_prg_id;} /* [enm] Program ID */
   
-  char *prg_nm; /* [sng] Program name */
-  char *prg_nm_get(void){return prg_nm;} /* [sng] Program name */
+  char *nco_prg_nm; /* [sng] Program name */
+  char *nco_prg_nm_get(void){return nco_prg_nm;} /* [sng] Program name */
   
-  unsigned short dbg_lvl=0; /* [enm] Debugging level */
-  unsigned short dbg_lvl_get(void){return dbg_lvl;} /* [enm] Debugging level */
+  unsigned short nco_dbg_lvl=0; /* [enm] Debugging level */
+  unsigned short nco_dbg_lvl_get(void){return nco_dbg_lvl;} /* [enm] Debugging level */
+
+  unsigned short nco_hdf_cnv=0; /* [enm] HDF convention */
+  unsigned short nco_hdf_cnv_get(void){return nco_hdf_cnv;} /* [enm] HDF convention */
+
+  unsigned short nco_mrd_cnv=0; /* [enm] Multiple Record Dimension convention */
+  unsigned short nco_mrd_cnv_get(void){return nco_mrd_cnv;} /* [enm] Multiple Record Dimension convention */
+
+  unsigned short nco_rth_cnv=1; /* [enm] Arithmetic convention */
+  unsigned short nco_rth_cnv_get(void){return nco_rth_cnv;} /* [enm] Arithmetic convention */
+
+  unsigned short nco_upk_cnv=0; /* [enm] Unpacking convention */
+  unsigned short nco_upk_cnv_get(void){return nco_upk_cnv;} /* [enm] Unpacking convention */
 
 # ifdef NCO_USE_FILL_VALUE
+  /* This arcane get()/set() usage necessary because TKN2SNG() macro above is broken. TODO nco905 */
   char nco_mss_val_sng[]="_FillValue"; /* [sng] Missing value attribute name */
   char nco_not_mss_val_sng[]="missing_value"; /* [sng] Not missing value attribute name */
 # else /* !NCO_USE_FILL_VALUE */
@@ -211,11 +235,14 @@ extern "C" {
 
 /* Six compatibility tokens not all available until netCDF 3.6.1 netcdf.h
    NC_64BIT_OFFSET is used (so far) only in nco_fl_utl.c */
+#ifndef NC_CLASSIC_MODEL
+# define NC_CLASSIC_MODEL 0x0100 /**< Enforce classic model. Mode flag for nc_create(). */
+#endif
 #ifndef NC_64BIT_OFFSET
-# define NC_64BIT_OFFSET (0x0200) /* Use large (64-bit) file offsets */
+# define NC_64BIT_OFFSET 0x0200 /* Use large (64-bit) file offsets */
 #endif
-#ifndef NC_CLASSIC_MODEL
-# define NC_CLASSIC_MODEL (0x0008) /* Enforce strict netcdf-3 rules. */
+#ifndef NC_DISKLESS
+# define NC_DISKLESS 0x0008 /* Use diskless file. Mode flag for nc_open() or nc_create(). */
 #endif
 #ifndef NC_FORMAT_CLASSIC
 # define NC_FORMAT_CLASSIC (1)
@@ -230,6 +257,24 @@ extern "C" {
 # define NC_FORMAT_NETCDF4_CLASSIC  (4) /* create netcdf-4 files, with NC_CLASSIC_MODEL. */
 #endif
 
+  /* Backwards-compatibility error codes for netCDF4
+     Currently used only in nco_grp_utl.c and nco_netcdf.c */
+#ifndef NC_EBADGRPID
+# define NC_EBADGRPID (-116)    /**< Bad group ID. */
+#endif
+#ifndef NC_ENOGRP
+# define NC_ENOGRP        (-125)    /**< No group found. */
+#endif
+
+  /* Two backwards-compatibility error codes implemented in 201106 to diagnose problems with DAP
+     Currently used only in nco_fl_utl.c */
+#ifndef NC_ECANTREAD
+# define NC_ECANTREAD (-102)    /**< Can't read. */
+#endif
+#ifndef NC_EDAPSVC
+# define NC_EDAPSVC (-70)      /**< DAP server error */
+#endif
+
   /* NCO began using MIN/MAX tokens in nco_pck.c on 20101130
      Not sure when these tokens were introduced to netcdf.h */
 #ifndef NC_MAX_BYTE
@@ -292,6 +337,18 @@ extern "C" {
 # endif
 #endif /* !ENABLE_ZNETCDF */
 
+  /* NB: Use NCO_NOERR and NCO_ERR as return codes to other functions, not to shell (e.g., Bash, Csh)
+     Shell exit codes (where 0 indicates success) are traditionally opposite C exit codes (where 0 indicates failure) */
+/* Internal NCO return code indicating success */
+#define NCO_NOERR 1
+/* Internal NCO return code indicating failure */
+#define NCO_ERR 0
+/* UDUnits return code indicating success */
+#define UDUNITS_NOERR 0
+
+  /* NB: Use EXIT_SUCCESS and EXIT_FAILURE as return codes to shell (e.g., Bash, Csh), not to other functions
+     Shell exit codes (where 0 indicates success) are traditionally opposite C-function (not C-program) exit codes (where 0 indicates failure)
+     20130711: FC19 x86_64 Linux defines EXIT_FAILURE == 134 */
 #ifndef EXIT_SUCCESS /* Most likely this is a SUN4 machine */
 # define EXIT_SUCCESS 0
 #endif /* SUN4 */
@@ -299,11 +356,13 @@ extern "C" {
 # define EXIT_FAILURE 1
 #endif /* SUN4 */
 
-  enum prg{ /* [enm] Key value for all netCDF operators */
+#define TRV_MAP_SIZE NC_MAX_DIMS
+
+  enum nco_prg_id{ /* [enm] Key value for all netCDF operators */
     ncap,
     ncatted,
     ncbo,
-    ncea,
+    ncfe, 
     ncecat,
     ncflint,
     ncks,
@@ -311,56 +370,29 @@ extern "C" {
     ncra,
     ncrcat,
     ncrename,
-    ncwa
-  }; /* end prg enum */
-  
-  enum aed{ /* [enm] Attribute editor mode */
-    aed_append,
-    aed_create,
-    aed_delete,
-    aed_modify,
-    aed_overwrite
-  }; /* end aed enum */
+    ncwa,
+    ncge, /* 20131018: Potential new operator */
+    ncmv /* 20131018: Potential new operator */
+  }; /* end nco_prg_id enum */
   
   enum nco_dbg_typ_enm{ /* [enm] Debugging levels */
     /* List in increasing levels of verbosity */
     nco_dbg_quiet, /* 0 [enm] Quiet all non-error messages */
-    nco_dbg_std, /* 1 [enm] Standard mode. Minimal, but some, messages */
-    nco_dbg_fl, /* 2 [enm] Filenames */
-    nco_dbg_scl, /* 3 [enm] Scalars, other per-file information  */
-    nco_dbg_var, /* 4 [enm] Variables, highest level per-file loop information */
-    nco_dbg_crr, /* 5 [enm] Current task */
-    nco_dbg_sbr, /* 6 [enm] Subroutine names on entry and exit */
-    nco_dbg_io, /* 7 [enm] Subroutine I/O */
-    nco_dbg_vec, /* 8 [enm] Entire vectors */
-    nco_dbg_vrb, /* 9 [enm] Verbose, print everything possible */
-    nco_dbg_old, /* 10 [enm] Old debugging blocks not used anymore */
-    nco_dbg_nbr /* 10 [enm] Number of debugging types (equals last enumerated value) */
+    nco_dbg_std,   /* 1 [enm] Standard mode. Minimal, but some, messages */
+    nco_dbg_fl,    /* 2 [enm] Filenames */
+    nco_dbg_scl,   /* 3 [enm] Scalars, other per-file information  */
+    nco_dbg_grp,   /* 4 [enm] Groups, highest level per-file loop information */
+    nco_dbg_var,   /* 5 [enm] Variables, highest level per-group loop information */
+    nco_dbg_crr,   /* 6 [enm] Current task */
+    nco_dbg_sbr,   /* 7 [enm] Subroutine names on entry and exit */
+    nco_dbg_io,    /* 8 [enm] Subroutine I/O */
+    nco_dbg_vec,   /* 9 [enm] Entire vectors */
+    nco_dbg_vrb,   /* 10 [enm] Verbose, print everything possible */
+    nco_dbg_old,   /* 11 [enm] Old debugging blocks not used anymore */
+    nco_dbg_dev,   /* 12 [enm] NCO developer information; only useful for debugging */
+    nco_dbg_nbr    /* 13 [enm] Number of debugging types (equals last enumerated value) */
   }; /* end nco_dbg_typ_enm */
 
-  typedef enum { /* [enm] Memory allocation type */
-    nco_mmr_calloc, /* [enm] nco_calloc() */
-    nco_mmr_free, /* [enm] nco_free() */
-    nco_mmr_malloc, /* [enm] nco_malloc() */
-    nco_mmr_realloc /* [enm] nco_realloc() */
-  } nco_mmr_typ_enm; /* end nco_mmr_typ enum */
-
-  typedef enum { /* [enm] Arithmetic precision rank */
-    /* Ranked ordering of "arithmetic precision" from lowest to highest */
-    nco_rth_prc_rnk_string, /* [enm] */ /* Least precise */
-    nco_rth_prc_rnk_char, /* [enm] */
-    nco_rth_prc_rnk_ubyte, /* [enm] */
-    nco_rth_prc_rnk_byte, /* [enm] */
-    nco_rth_prc_rnk_ushort, /* [enm] */
-    nco_rth_prc_rnk_short, /* [enm] */
-    nco_rth_prc_rnk_uint, /* [enm] */
-    nco_rth_prc_rnk_int, /* [enm] */
-    nco_rth_prc_rnk_uint64, /* [enm] */
-    nco_rth_prc_rnk_int64, /* [enm] */
-    nco_rth_prc_rnk_float, /* [enm] */
-    nco_rth_prc_rnk_double /* [enm] */ /* Most precise */
-  } nco_rth_prc_rnk_enm; /* end nco_rth_prc_rnk enum */
-
   enum nco_op_typ{ /* [enm] Operation type */
     /* Types used in ncbo(): */
     nco_op_add, /* [enm] Add file_1 to file_2 */
@@ -377,7 +409,7 @@ extern "C" {
     nco_op_sqrt, /* [enm] Square root of mean */
     nco_op_rms, /* [enm] Root-mean-square (normalized by N) */
     nco_op_rmssdn, /* [enm] Root-mean square normalized by N-1 */
-    nco_op_nil /* [enm] Nil or undefined operation type  */
+    nco_op_nil /* [enm] Nil or undefined operation type */
   }; /* end nco_op_typ enum */
 
   enum nco_rlt_opr{ /* [enm] Arithmetic relations (comparisons) for masking */
@@ -389,6 +421,77 @@ extern "C" {
     nco_op_ge /* Greater than or equal to */
   }; /* end nco_rlt_opr enum */
   
+  typedef enum nco_obj_typ_enm{ /* [enm] netCDF4 object type: group, variable */
+    nco_obj_typ_err=-1, /* -1 Invalid type for initialization */
+    nco_obj_typ_grp,    /*  0, Group */
+    nco_obj_typ_var,    /*  1, Variable of atomic type */
+    nco_obj_typ_nonatomic_var /*  2, Variable of non-atomic type (vlen, opaque, enum, compound, user-defined) */
+  } nco_obj_typ;
+  
+  enum nco_hdf_cnv{ /* [enm] HDF convention */
+    /* This currently could be implemented as a flag rather than an enum
+       General case may need more than binary option so use enum */
+    nco_hdf_nil, /* 0 No special treatment */
+    nco_hdf4 /* 1 Treat file as HDF4 */
+  }; /* end nco_hdf_cnv */
+
+  enum nco_mrd_cnv{ /* [enm] Multiple Record Dimension convention: for ncecat and ncpdq */
+    /* This currently could be implemented as a flag rather than an enum
+       General case may need more than binary option so use enum */
+    nco_mrd_restrict, /* 0 Fix some dimensions so as to avoid producing additional record dimensions */
+    nco_mrd_allow  /* 1 Allow multiple record dimensions when operator produces them naturally */
+  }; /* end nco_mrd_cnv */
+
+  enum nco_rth_cnv{ /* [enm] Arithmetic convention to assume */
+    nco_rth_flt_flt, /* 0 Keep single-precision floating point (default and NCO historical norm) */
+    nco_rth_flt_dbl  /* 1 Promote single-precision floating point to double before arithmetic */
+  }; /* end nco_rth_cnv */
+
+  enum nco_upk_cnv{ /* [enm] Unpacking convention to assume */
+    /* netCDF convention  : http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Attribute-Conventions.html
+       HDF/NASA convention: http://modis-atmos.gsfc.nasa.gov/MOD08_D3/faq.html */
+    nco_upk_netCDF, /* 0 netCDF unpack convention: unpacked=(scale_factor*packed)+add_offset */
+    nco_upk_HDF     /* 1 HDF unpack convention:    unpacked=scale_factor*(packed-add_offset) */
+  }; /* end nco_upk_cnv */
+
+  typedef enum aed{ /* [enm] Attribute editor mode */
+    aed_append,
+    aed_create,
+    aed_delete,
+    aed_modify,
+    aed_overwrite
+  } aed_enm; /* end aed enum */
+  
+  typedef enum gpe{ /* [enm] Group Path Editing mode */
+    gpe_append,
+    gpe_delete,
+    gpe_flatten,
+    gpe_backspace
+  } gpe_enm; /* end gpe enum */
+
+  typedef enum { /* [enm] Memory allocation type */
+    nco_mmr_calloc, /* [enm] nco_calloc() */
+    nco_mmr_free, /* [enm] nco_free() */
+    nco_mmr_malloc, /* [enm] nco_malloc() */
+    nco_mmr_realloc /* [enm] nco_realloc() */
+  } nco_mmr_typ_enm; /* end nco_mmr_typ enum */
+
+  typedef enum { /* [enm] Arithmetic precision rank */
+    /* Ranked ordering of "arithmetic precision" from lowest to highest */
+    nco_rth_prc_rnk_string, /* [enm] */ /* Least precise */
+    nco_rth_prc_rnk_char, /* [enm] */
+    nco_rth_prc_rnk_ubyte, /* [enm] */
+    nco_rth_prc_rnk_byte, /* [enm] */
+    nco_rth_prc_rnk_ushort, /* [enm] */
+    nco_rth_prc_rnk_short, /* [enm] */
+    nco_rth_prc_rnk_uint, /* [enm] */
+    nco_rth_prc_rnk_int, /* [enm] */
+    nco_rth_prc_rnk_uint64, /* [enm] */
+    nco_rth_prc_rnk_int64, /* [enm] */
+    nco_rth_prc_rnk_float, /* [enm] */
+    nco_rth_prc_rnk_double /* [enm] */ /* Most precise */
+  } nco_rth_prc_rnk_enm; /* end nco_rth_prc_rnk enum */
+
   typedef enum { /* [enm] Timer flag */
     nco_tmr_srt, /* [enm] Initialize timer (first timer call) */
     nco_tmr_mtd, /* [enm] Metadata timer (second timer call) */
@@ -407,60 +510,61 @@ extern "C" {
     cln_std=1, /* Standard mixed Julian/Gregorian */
     cln_grg, /* Gregorian Calendar */ 
     cln_jul, /* Julian Calendar */ 
-    cln_360 , /* 30 days a month Calendar */ 
+    cln_360, /* 30-day month Calendar */ 
     cln_365, /* No Leap year Calendar */ 
     cln_366, /* Leap year Calendar */ 
     cln_nil /* No calendar found */
-  } cln_typ; /* [enm] Calendar type */
+  } nco_cln_typ; /* [enm] Calendar type */
   
   /* Limit structure */
   typedef struct { /* lmt_sct */
+
+    char *nm; /* [sng] Dimension name */
+    char *nm_fll; /* [sng] Full dimension name */
+    char *grp_nm_fll; /* [sng] Full group where dimension is defined. Added for group support from original netCDF3 */
+
     /* Following four flags are used only by multi-file operators ncra and ncrcat: */
+    char *drn_sng; /* User-specified string for dimension duration */
     char *max_sng; /* User-specified string for dimension maximum */
     char *min_sng; /* User-specified string for dimension minimum */
-    char *nm; /* [sng] Dimension name */
+    char *mro_sng; /* User-specified string for multi-record output */
+    
     char *rbs_sng; /* Used by ncra, ncrcat to re-base record coordinate (holds unit attribute from first file) */
     char *srd_sng; /* User-specified string for dimension stride */
-    cln_typ lmt_cln; /* Used by ncra, ncrcat to store an enum of the calendar type attribute */
+
     double max_val; /* Double precision representation of maximum value of coordinate requested or implied */
     double min_val; /* Double precision representation of minimum value of coordinate requested or implied */
     double origin;   /* Used by ncra, ncrcat to re-base record coordinate */
     int id; /* Dimension ID */
     int lmt_typ; /* crd_val or dmn_idx */
     long cnt; /* # of valid elements in this dimension (including effects of stride and wrapping) */
+    long drn; /* Duration of hyperslab */
     long end; /* Index to end of hyperslab */
     long max_idx; /* Index of maximum requested value in dimension */
     long min_idx; /* Index of minimum requested value in dimension */
-    long rec_skp_nsh_spf; /* Sum of records in already processed files (multi-file record dimension only) */
-    long rec_skp_vld_prv; /* Records skipped since prevous good one (multi-file record dimension only) */
+    long rec_dmn_sz; /* [nbr] Number of records in this file (multi-file record dimension only) */
+    long rec_in_cml; /* [nbr] Cumulative number of records in all files opened so far (multi-file record dimension only) */
+    long idx_end_max_abs; /* [idx] Maximum allowed index in record dimension (multi-file record dimension only) */
+    long rec_skp_ntl_spf; /* [nbr] Records skipped in initial superfluous files (multi-file record dimension only) */
+    long rec_skp_vld_prv; /* [nbr] Records skipped since previous good one (multi-file record dimension only) */
+    long rec_rmn_prv_drn; /* [nbr] Records remaining-to-be-read to complete duration group from previous file (multi-file record dimension only) */
     long srd; /* Stride of hyperslab */
     long srt; /* Index to start of hyperslab */
+    nco_bool flg_mro; /* True for multi-record output (used by ncra only) */
+    nco_bool flg_input_complete; /* True for multi-file operators when no more files need be opened */
     nco_bool is_rec_dmn; /* True if record dimension, else False */
     nco_bool is_usr_spc_lmt; /* True if any part of limit is user-specified, else False */
     nco_bool is_usr_spc_max; /* True if user-specified, else False */
     nco_bool is_usr_spc_min; /* True if user-specified, else False */
+    nco_cln_typ lmt_cln; /* Used by ncra, ncrcat to store enum of calendar-type attribute */
   } lmt_sct;
-
-  /* Container holding all limit structures indexible by dimension */
-  typedef struct { /* lmt_all_sct */
-    char *dmn_nm; /* [sng] Dimension name */
-    long dmn_cnt; /* [nbr] Total number of hyperslabs to extract */
-    long dmn_sz_org; /* [nbr] Size of dimension in INPUT file */
-    int lmt_dmn_nbr; /* [nbr] Number of lmt args */
-    nco_bool BASIC_DMN; /* [flg] Limit is same as dimension in input file */
-    nco_bool WRP; /* [flg] Limit is wrapped (true iff wrapping, lmt_dmn_nbr==2) */ 
-    nco_bool MSA_USR_RDR; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-    lmt_sct **lmt_dmn; /* [sct] List of limit structures associated with each dimension */  
-  } lmt_all_sct;
   
   /* Name ID structure */
   typedef struct{ /* nm_id_sct */
-    char *grp_nm; /* Group (stub name) where variable resides */
-    char *grp_nm_fll; /* Fully qualified group where variable resides */
-    char *var_nm_fll; /* Fully qualified variable name */
     char *nm; /* Variable (stub name) */
     int id; /* [id] Variable ID */
-    int grp_id; /* [ID] Group ID */
+    int grp_id_in; /* [id] Group ID in input file */
+    int grp_id_out; /* [id] Group ID in output file */
   } nm_id_sct;
   
   /* Rename structure */
@@ -527,6 +631,19 @@ extern "C" {
     nod_typ_enm nod_typ; /* [enm] Node type */
   } scv_sct;      
 
+  /* Group Path Editing (GPE) structure */
+  typedef struct{ /* gpe_sct */
+    char *arg; /* [sng] Full GPE specification (for debugging) */
+    char *edt; /* [sng] Editing component of full GPE specification */
+    char *nm; /* [sng] Group name component of full GPE specification */
+    char *nm_cnn; /* [sng] Canonicalized (i.e., slash-terminated) group name */
+    gpe_enm md; /* [enm] Editing mode to perform */
+    short lvl_nbr; /* [nbr] Number of levels to shift */
+    size_t lng; /* [nbr] Length of user-specified group path */
+    size_t lng_cnn; /* [nbr] Length of canonicalized user-specified group path */
+    size_t lng_edt; /* [nbr] Length of editing component of full GPE specification */
+  } gpe_sct;
+
   /* Attribute editing structure */
   typedef struct{ /* aed_sct */
     char *att_nm; /* Name of attribute */
@@ -535,9 +652,55 @@ extern "C" {
     long sz; /* Number of elements in attribute */
     nc_type type; /* Type of attribute */
     ptr_unn val; /* Pointer to attribute value */
-    short mode; /* Action to perform with attribute */
+    aed_enm mode; /* Action to perform with attribute */
   } aed_sct;
   
+  /* MD5 flags structure */
+  typedef struct{ /* md5_sct */
+    char *att_nm; /* [sng] MD5 attribute name */
+    nco_bool dgs; /* [flg] Perform MD5 digests */
+    nco_bool wrt; /* [flg] Write MD5 digests as attributes */
+  } md5_sct;
+
+  /* Print flags structure */
+  typedef struct{ /* prn_fmt_sct */
+    char *fl_in; /* [sng] Input filename */
+    char *fl_stb; /* [sng] Input filename stub */
+    char *smr_sng; /* [sng] Summary string */
+    char *spr_chr; /* [sng] Separator string for character types */
+    char *spr_nmr; /* [sng] Separator string for numeric types */
+    gpe_sct *gpe; /* I [sng] GPE structure */
+    md5_sct *md5; /* [flg] MD5 configuration */
+    nco_bool cdl; /* [flg] Print CDL */
+    nco_bool srm; /* [flg] Print ncStream */
+    nco_bool trd; /* [flg] Print traditional NCO format */
+    nco_bool xml; /* [flg] Print XML (NcML) */
+    nco_bool xml_lcn; /* [flg] Print XML location tag */
+    nco_bool nfo_xtr; /* [flg] Print extra information in CDL/XML mode */
+    nco_bool new_fmt; /* [flg] Print in new format */
+    nco_bool nwl_pst_val; /* [flg] Print newline after variable values */
+    int nbr_zro; /* [nbr] Trailing zeros allowed after decimal point */
+    int ndn; /* [nbr] Indentation */
+    int fll_pth; /* [nbr] Print full paths */
+    int tab; /* [nbr] Number of spaces in tab */
+    int spc_per_lvl; /* [nbr] Indentation spaces per group level */
+    int sxn_fst; /* [nbr] Offset of section from group name */
+    int var_fst; /* [nbr] Offset of variable from section name */
+    char *dlm_sng; /* User specified delimiter string for printed output */
+    nco_bool ALPHA_BY_FULL_GROUP; /* [flg] Print alphabetically by full group */
+    nco_bool ALPHA_BY_FULL_OBJECT; /* [flg] Print alphabetically by full object */
+    nco_bool ALPHA_BY_STUB_GROUP; /* [flg] Print alphabetically by stub group */
+    nco_bool ALPHA_BY_STUB_OBJECT; /* [flg] Print alphabetically by stub object */
+    nco_bool FORTRAN_IDX_CNV; /* Option F */
+    nco_bool PRN_DMN_IDX_CRD_VAL; /* [flg] Print leading dimension/coordinate indices/values Option Q */
+    nco_bool PRN_DMN_UNITS; /* [flg] Print dimensional units Option u */
+    nco_bool PRN_DMN_VAR_NM; /* [flg] Print dimension/variable names */
+    nco_bool PRN_GLB_METADATA; /* [flg] Print global metadata */
+    nco_bool PRN_MSS_VAL_BLANK; /* [flg] Print missing values as blanks */
+    nco_bool PRN_VAR_DATA; /* [flg] Print variable data */
+    nco_bool PRN_VAR_METADATA; /* [flg] Print variable metadata */
+  } prn_fmt_sct;
+  
   /* Attribute structure */
   typedef struct{ /* att_sct */
     char *nm;
@@ -546,7 +709,7 @@ extern "C" {
     char fmt[5];
     ptr_unn val;
   } att_sct;
-  
+
   /* Chunking structure */
   typedef struct{ /* cnk_sct */
     char *nm; /* [sng] Dimension name */
@@ -554,7 +717,134 @@ extern "C" {
     nco_bool is_usr_spc_cnk; /* [flg] Chunk size was user-specified */
   } cnk_sct;
   
-  /* Fill actual value of dmn_sct structure in in nco_dmn_fll()
+  /* GTT structure to break full path name into components */
+  typedef struct{ 
+    char *nm;       /* [sng] Path component */
+    int psn;        /* [nbr] Position of path component */
+  } sng_pth_sct; 
+
+  /* MSA Limits structure:
+     GTT has a member for every unique dimension and for every coordinate variable */
+  typedef struct { 
+    char *dmn_nm;         /* [sng] Dimension name */
+    long dmn_sz_org;      /* [nbr] Original size of dimension */
+    long dmn_cnt;         /* [nbr] Hyperslabbed size of dimension */  
+    nco_bool BASIC_DMN;   /* [flg] Limit is same as dimension in input file */
+    nco_bool WRP;         /* [flg] Limit is wrapped (true if wrapping, lmt_dmn_nbr==2) */ 
+    nco_bool MSA_USR_RDR; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    int lmt_dmn_nbr;      /* [nbr] Number of lmt arguments */
+    lmt_sct **lmt_dmn;    /* [sct] List of limit structures associated with each dimension */
+    int lmt_crr;          /* [nbr] Index of current limit structure being initialized (helper to initialze lmt_sct*) */
+  } lmt_msa_sct;
+
+   /* GTT coordinate variable structure; it contains netCDF model fields and an MSA field */
+  typedef struct{ 
+    char *crd_nm_fll;       /* [sng] Full coordinate name */
+    char *dmn_nm_fll;       /* [sng] Full name of dimension for *this* coordinate  */  
+    char *crd_grp_nm_fll;   /* [sng] Full group name where coordinate is located */
+    char *dmn_grp_nm_fll;   /* [sng] Full group name where dimension of *this* coordinate is located */
+    char nm[NC_MAX_NAME+1L];/* [sng] Name of dimension and coordinate */
+    nco_bool is_rec_dmn;    /* [flg] Is a record dimension? */
+    size_t sz;              /* [nbr] Size of coordinate */
+    nc_type var_typ;        /* [enm] NetCDF type  */  
+    lmt_msa_sct lmt_msa;    /* [sct] MSA Limits structure for every coordinate */
+    int dmn_id;             /* [ID] Unique ID for dimension (duplicate of dmn_trv_sct.dim_id, since all coordinates share that ID) */
+    int grp_dpt;            /* [nbr] Depth of group (root = 0); needed to get in scope of variable match */
+  } crd_sct; 
+
+  /* GTT dimension structure (stored in *groups*); it contains netCDF model fields and an MSA field */
+  typedef struct{ 
+    char *grp_nm_fll;        /* [sng] Full group name where dimension was defined */
+    char *nm_fll;            /* [sng] Dimension fully qualified name (path) */
+    char nm[NC_MAX_NAME+1L]; /* [sng] Dimension name */
+    nco_bool is_rec_dmn;     /* [flg] Is a record dimension? */
+    size_t sz;               /* [nbr] Size of dimension */   
+    int crd_nbr;             /* [nbr] Number of coordinate structures */
+    crd_sct **crd;           /* [sct] List of coordinate structures */
+    lmt_msa_sct lmt_msa;     /* [sct] MSA Limits structure (implicit that is for non-coordinate case) */
+    int dmn_id;              /* [ID] Dimension ID; same as "var_dmn_sct.id" from nc_inq_dimid() */
+    nco_bool has_crd_scp;    /* [flg] Does variable with same name exist in dimension's scope? */
+    nco_bool flg_xtr;        /* [flg] Extract dimension */
+  } dmn_trv_sct; 
+
+  /* GTT Variable dimensions:
+     Dimension have name and size, and can have an associated variable (coordinate variable) */
+  typedef struct{ 
+    char *dmn_nm_fll;        /* [sng] Full dimension name */
+    char *dmn_nm;            /* [sng] Dimension name */
+    char *grp_nm_fll;        /* [sng] Full group where dimension is defined */
+    nco_bool is_crd_var;     /* [flg] Dimension has an associated coordinate variable */
+    crd_sct *crd;            /* [sct] Pointer to coordinate variable if any */
+    dmn_trv_sct *ncd;        /* [sct] Pointer to non-coordinate dimension if any */
+    int dmn_id;              /* [ID] Dimension ID; same as dmn_trv_sct.id from nc_inq_vardimid() */
+    /* Following are members only used by transformation operators (non-ncks) */
+    nco_bool flg_dmn_avg;    /* [flg] Diferentiate between dimensions to average or keep for this variable (ncwa) */  
+    nco_bool flg_rdd;        /* [flg] Retain dimension as degenerate (size 1) (ncwa) */  
+  } var_dmn_sct; 
+
+  /* Processing type enumerator */
+  typedef enum {
+    err_typ=-1,             /* -1 [enm] Invalid type for initialization */
+    fix_typ,                /*  0 [enm] Fixed variable (operator alters neither data nor metadata) */
+    prc_typ                 /*  1 [enm] Process variable (operator may alter data and metadata) */
+  } prc_typ_enm; 
+
+  /* GTT Object structure 
+     Information for each object/node in traversal tree
+     Contains basic information about this object/node needed by traversal algorithm
+     Node/object is either group or variable like in HDF5
+     Initialize trv_sct structure to defaults in trv_tbl_init()
+     Populate trv_sct structure with correct values in nco_grp_itr()
+     Deep-copy each pointer member of trv_sct structure in nco_grp_itr()
+     free() each pointer member of trv_sct structure in trv_tbl_free() */
+  typedef struct{ 
+    nco_obj_typ nco_typ;              /* [enm] netCDF4 object type: group or variable */
+    char *nm_fll;                     /* [sng] Fully qualified name (path) */
+    var_dmn_sct var_dmn[NC_MAX_DIMS]; /* [sct] (For variables only) Dimensions for variable object */
+    nco_bool is_crd_var;              /* [flg] (For variables only) Is a coordinate variable? (unique dimension exists in scope) */
+    nco_bool is_rec_var;              /* [flg] (For variables only) Is a record variable? (is_crd_var must be True) */
+    nc_type var_typ;                  /* [enm] (For variables only) NetCDF type  */  
+    size_t nm_fll_lng;                /* [sng] Length of full name */
+    char *grp_nm_fll;                 /* [sng] Full group name (for groups, same as nm_fll) */
+    char nm[NC_MAX_NAME+1L];          /* [sng] Relative name (i.e., variable name or last component of path name for groups) */
+    size_t nm_lng;                    /* [sng] Length of short name */
+    int grp_dpt;                      /* [nbr] Depth of group (root = 0) */
+    int nbr_att;                      /* [nbr] Number of attributes */
+    int nbr_dmn;                      /* [nbr] Number of dimensions  */
+    int nbr_rec;                      /* [nbr] Number of record dimensions */
+    int nbr_grp;                      /* [nbr] (For groups only) Number of sub-groups */   
+    int nbr_var;                      /* [nbr] (For groups only) Number of variables */
+    nco_bool flg_cf;                  /* [flg] Object matches CF-metadata extraction criteria */
+    nco_bool flg_crd;                 /* [flg] Object matches coordinate extraction criteria */
+    nco_bool flg_dfl;                 /* [flg] Object meets default subsetting criteria */
+    nco_bool flg_gcv;                 /* [flg] Group contains matched variable */
+    nco_bool flg_mch;                 /* [flg] Object matches user-specified strings */
+    nco_bool flg_ncs;                 /* [flg] Group is ancestor of specified group or variable */
+    nco_bool flg_nsx;                 /* [flg] Object matches intersection criteria */
+    nco_bool flg_rcr;                 /* [flg] Extract group recursively */
+    nco_bool flg_unn;                 /* [flg] Object matches union criteria */
+    nco_bool flg_vfp;                 /* [flg] Variable matches full path specification */
+    nco_bool flg_vsg;                 /* [flg] Variable selected because group matches */
+    nco_bool flg_xcl;                 /* [flg] Object matches exclusion criteria */
+    nco_bool flg_xtr;                 /* [flg] Extract object */ 
+    /* Following are members only used by transformation operators (non-ncks)  */
+    prc_typ_enm enm_prc_typ;          /* [enm] Processing type enumerator */
+    nc_type var_typ_out;              /* [enm] NetCDF type in output file (ncflint) (ncpdq) */  
+    int dmn_idx_out_in[NC_MAX_DIMS];  /* [nbr] Dimension correspondence, output->input (ncpdq); output of nco_var_dmn_rdr_mtd() */
+    nco_bool dmn_rvr_in[NC_MAX_DIMS]; /* [flg] Reverse dimensions (ncpdq) */
+    nco_bool flg_rdr;                 /* [flg] Variable has dimensions to re-order (ncpdq) */ 
+    char *rec_dmn_nm_out;             /* [sng] Record dimension name, re-ordered (ncpdq) (used as flag also for re-defined record dimension)*/
+    char *grp_nm_fll_prn;             /* [sng] (ncge) Parent group full name */
+    /* Good hash, dude */
+    UT_hash_handle hh;                /* [sct] Handle for hash table */
+    char *hsh_key;                    /* [sng] Hash key (must be unique!) */
+    nco_bool flg_nsm_prn;             /* [flg] (ncge) Group is ensemble parent group */
+    nco_bool flg_nsm_mbr;             /* [flg] (ncge) Variable or group is ensemble member */
+    nco_bool flg_nsm_tpl;             /* [flg] (ncge) Variable is template */
+    char *nsm_nm;                     /* [sng] (ncge) Ensemble parent group name i.e., full path to ensemble parent */ 
+  } trv_sct;
+
+  /* Fill actual value of dmn_sct structure in nco_dmn_fll()
      free() each pointer member of dmn_sct structure in nco_dmn_free()
      deep-copy each pointer member of dmn_sct structure in nco_dmn_dpl() */
   /* Dimension structure */
@@ -576,6 +866,73 @@ extern "C" {
     size_t cnk_sz; /* [nbr] Chunk size */
     struct dmn_sct_tag *xrf; /* [sct] Cross-reference to associated dimension structure (usually the structure for dimension on output) */
   } dmn_sct; /* end dmn_sct_tag */
+
+  /* Ensemble group structure (ncge). It contains a name for the group (e.g /cesm/cesm_01) and a list of variables for the group */
+  typedef struct{
+    char *mbr_nm_fll;       /* [sng] Goup full name */ 
+    char **var_nm_fll;      /* [sng] List of full variable names for this group (e.g /cesm/cesm_01/tas) */
+    int var_nbr;            /* [nbr] Number of variable for this group (size of above array) */ 
+  } nsm_grp_sct; 
+
+  /* Ensemble (ncge) */
+  typedef struct{
+    char *grp_nm_fll_prn;   /* [sng] Parent group full name (key for ensemble) (e.g /cesm) */
+    nsm_grp_sct *mbr;       /* [sng] List of ensemble group member structs (size is mbr_nbr) */
+    char **var_mbr_fll;     /* [sng] List of variable ensemble members (e.g /cesm/cesm_01/tas) */
+    char **grp_mbr_fll;     /* [sng] List of group ensemble members (e.g /cesm/cesm_01) */
+    int mbr_nbr;            /* [nbr] Number of members (groups) of ensemble (i.e., number in this ensemble in this file) */ 
+    int mbr_var_nbr;        /* [nbr] Number of variable members of ensemble */           
+    int mbr_srt;            /* [nbr] Member offsets (multi files, keep track of new added members) */ 
+    int mbr_end;            /* [nbr] Member offsets (multi files, keep track of new added members) */ 
+  } nsm_sct; 
+
+  /* GTT (Group Traversal Table) structure contains two lists
+     1) lst: All objects (variables and groups) in file tree (HDF5 model)
+     2) lst_dmn: All unique dimensions (in groups) in file tree (netCDF addition to HDF5) */
+  typedef struct{
+    /* Members used by all operators */
+    trv_sct *lst;           /* [sct] Array of trv_sct */
+    unsigned int nbr;       /* [nbr] Number of trv_sct elements */   
+    dmn_trv_sct *lst_dmn;   /* [sct] Array of dmn_trv_sct */
+    unsigned int nbr_dmn;   /* [nbr] Number of dmn_trv_sct elements */
+    trv_sct *hsh;           /* [hsh] Hash table of all trv_sct objects */
+    dmn_sct *dmn_dgn;       /* [sct] (ncwa) Degenerate dimensions */
+    int nbr_dmn_dgn;        /* [sct] (ncwa) Number of degenerate dimensions (size of above array) */
+    lmt_sct **lmt_rec;      /* [sct] (ncra) Record dimensions */
+    int nbr_rec;            /* [sct] (ncra) Number of record dimensions (size of above array) */
+    int nsm_nbr;            /* [nbr] (ncge) Number of ensembles (i.e., number in first file) */ 
+    nsm_sct *nsm;           /* [lst] (ncge) List of ensembles (size is nsm_nbr) */ 
+    char *nsm_sfx;          /* [sng] (ncge) Ensemble suffix (e.g /cesm + _avg). Store here instead of passing as function parameters (ncge only) */
+  } trv_tbl_sct;
+ 
+  /* GPE duplicate name check structure */
+  typedef struct{ /* gpe_nm_sct */
+    char *var_nm_fll; /* [sng] Fully qualified variable name */
+  } gpe_nm_sct;
+
+  /* Name structure */
+  typedef struct{ /* nm_sct */
+    char *nm;     /* [sng] Name */
+  } nm_sct;
+
+  /* Name list structure */
+  typedef struct{ /* nm_tbl_sct */
+    nm_sct *lst;  /* [sct] List of nm_sct (char * currently) */
+    int nbr;      /* [nbr] Number of items in "lst" array */
+  } nm_tbl_sct;
+
+  /* Common variable names; common defined as same absolute path in 2 files */
+  typedef struct{		
+    char *var_nm_fll;            /* [sng] Full path of variable (can be relative) */
+    nco_bool flg_in_fl[2];       /* [flg] Is this name in each file?; files are [0] and [1] */
+  } nco_cmn_t;
+
+  /* Limit "lmt_sct" monotonic direction */
+  typedef enum {
+    decreasing, /* 0 */
+    increasing, /* 1 */
+    not_checked /* 2 */
+  } monotonic_direction_enm;
   
   /* Initialize default value of each member of var_sct structure in var_dfl_set()
      Fill actual value of var_sct structure in nco_var_fll()
@@ -584,6 +941,7 @@ extern "C" {
   /* Variable structure */
   typedef struct var_sct_tag{ /* var_sct */
     char *nm; /* [sng] Variable name */
+    char *nm_fll; /* [sng] Absolute variable name (needed for GTT search for object by full name) */
     char fmt[5]; /* [sng] Hint for printf()-style formatting */
     dmn_sct **dim; /* [sct] Pointers to full dimension structures */
     int *dmn_id; /* [id] Contiguous vector of dimension IDs */
@@ -601,10 +959,10 @@ extern "C" {
     int pck_ram; /* [flg] Variable is packed in memory (valid scale_factor, add_offset, or both attributes exist) */
     int shuffle; /* [flg] Turn on shuffle filter */
     int undefined; /* [flg] Variable is still undefined (in first parser pass) */
-    long *cnt; /* [id] Contiguous vector of lengths of hyperslab */
-    long *end; /* [id] Contiguous vector of indices to end of hyperslab */
-    long *srd; /* [id] Contiguous vector of stride of hyperslab */
-    long *srt; /* [id] Contiguous vector of indices to start of hyperslab */
+    long *cnt; /* [nbr] Contiguous vector of lengths of hyperslab */
+    long *end; /* [idx] Contiguous vector of indices to end of hyperslab */
+    long *srd; /* [nbr] Contiguous vector of stride of hyperslab */
+    long *srt; /* [idx] Contiguous vector of indices to start of hyperslab */
     long *tally; /* [nbr] Number of valid operations performed so far */
     long sz; /* [nbr] Number of elements (NOT bytes) in hyperslab (NOT full size of variable in input file!) */
     long sz_rec; /* [nbr] Number of elements in one record of hyperslab */
diff --git a/src/nco/nco_att_utl.c b/src/nco/nco_att_utl.c
index 27d36e6..826dabe 100644
--- a/src/nco/nco_att_utl.c
+++ b/src/nco/nco_att_utl.c
@@ -1,13 +1,19 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_att_utl.c,v 1.115 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_att_utl.c,v 1.164 2013/12/02 20:48:45 zender Exp $ */
 
 /* Purpose: Attribute utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_att_utl.h" /* Attribute utilities */
 
+/* Microsoft standard C library lacks standard definitions for strtoll(), strtoull() */
+#ifdef _MSC_VER
+# define strtoull _strtoui64 
+# define strtoll  _strtoi64
+#endif /* !_MSC_VER */
+
 void
 nco_aed_prc /* [fnc] Process single attribute edit for single variable */
 (const int nc_id, /* I [id] Input netCDF file ID */
@@ -21,7 +27,7 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
   const char fnc_nm[]="nco_aed_prc()"; /* [sng] Function name */
 
 #ifdef NCO_NETCDF4_AND_FILLVALUE
-  char att_nm_tmp[]="eulaVlliF_"; /* String of same length as "_FillValue" for name hack with netCDF4 */
+  char att_nm_tmp[]="eulaVlliF_"; /* String of same length as "_FillValue" for netCDF4 name hack */
   nco_bool flg_fmt_netCDF4=False; /* [flg] File format is netCDF4 */
   nco_bool flg_netCDF4_rename_trick=False; /* [flg] Re-name _FillValue in order to create/modify/overwrite it */
 #endif /* !NCO_NETCDF4_AND_FILLVALUE */
@@ -48,7 +54,7 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
     (void)nco_inq_var(nc_id,var_id,var_nm,(nc_type *)NULL,(int *)NULL,(int *)NULL,&nbr_att);
   } /* end else */
 
-  if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s examining variable %s\n",prg_nm_get(),fnc_nm,var_nm);
+  if(nco_dbg_lvl_get() >= nco_dbg_var && nco_dbg_lvl_get() != nco_dbg_dev) (void)fprintf(stdout,"%s: INFO %s examining variable %s\n",nco_prg_nm_get(),fnc_nm,var_nm);
 
   /* Query attribute metadata when attribute name was specified */
   if(aed.att_nm) rcd_inq_att=nco_inq_att_flg(nc_id,var_id,aed.att_nm,&att_typ,&att_sz);
@@ -80,7 +86,7 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
     ptr_unn var_val;
     var_sct *var=NULL_CEWI;
 
-    if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO Replacing missing value data in variable %s\n",prg_nm_get(),var_nm);
+    if(nco_dbg_lvl_get() >= nco_dbg_std && nco_dbg_lvl_get() != nco_dbg_dev) (void)fprintf(stdout,"%s: INFO Replacing missing value data in variable %s\n",nco_prg_nm_get(),var_nm);
 
     /* Take file out of define mode */
     (void)nco_enddef(nc_id);
@@ -110,7 +116,7 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
       
     /* Place nco_var_get() code inline since var struct is not truly complete */
     if((var->val.vp=(void *)nco_malloc_flg(var->sz*nco_typ_lng(var->type))) == NULL){
-      (void)fprintf(stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes in %s\n",prg_nm_get(),var->sz,(unsigned long)nco_typ_lng(var->type),fnc_nm);
+      (void)fprintf(stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes in %s\n",nco_prg_nm_get(),var->sz,(unsigned long)nco_typ_lng(var->type),fnc_nm);
       nco_exit(EXIT_FAILURE); 
     } /* end if */
     if(var->sz > 1L){
@@ -125,7 +131,7 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
 
     /* Sanity check */
     if(var->has_mss_val == False){
-      (void)fprintf(stdout,"%s: ERROR variable %s does not have \"%s\" attribute in %s\n",prg_nm_get(),var_nm,nco_mss_val_sng_get(),fnc_nm);
+      (void)fprintf(stdout,"%s: ERROR variable %s does not have \"%s\" attribute in %s\n",nco_prg_nm_get(),var_nm,nco_mss_val_sng_get(),fnc_nm);
       nco_exit(EXIT_FAILURE);
     } /* end if */
 
@@ -144,10 +150,24 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
     (void)cast_void_nctype(var->type,&var_val);
     (void)cast_void_nctype(var->type,&mss_val_crr);
     (void)cast_void_nctype(var->type,&mss_val_new);
-  
+
     switch(var->type){
-    case NC_FLOAT: for(idx=0L;idx<var_sz;idx++) {if(var_val.fp[idx] == *mss_val_crr.fp) var_val.fp[idx]=*mss_val_new.fp;} break;
-    case NC_DOUBLE: for(idx=0L;idx<var_sz;idx++) {if(var_val.dp[idx] == *mss_val_crr.dp) var_val.dp[idx]=*mss_val_new.dp;} break;
+      /*    case NC_FLOAT: for(idx=0L;idx<var_sz;idx++) {if(var_val.fp[idx] == *mss_val_crr.fp) var_val.fp[idx]=*mss_val_new.fp;} break;*/
+      /*    case NC_DOUBLE: for(idx=0L;idx<var_sz;idx++) {if(var_val.dp[idx] == *mss_val_crr.dp) var_val.dp[idx]=*mss_val_new.dp;} break;*/
+    case NC_FLOAT: 
+      if(isfinite(*mss_val_crr.fp)){
+	for(idx=0L;idx<var_sz;idx++) {if(var_val.fp[idx] == *mss_val_crr.fp) var_val.fp[idx]=*mss_val_new.fp;}
+      }else{ /* Old missing value is NaN-like so arithmetic comparisons are always false---must use macros */
+	for(idx=0L;idx<var_sz;idx++) {if(!isfinite(var_val.fp[idx])) var_val.fp[idx]=*mss_val_new.fp;}
+      } /* endif NaN */
+      break;
+    case NC_DOUBLE:
+      if(isfinite(*mss_val_crr.dp)){
+	for(idx=0L;idx<var_sz;idx++) {if(var_val.dp[idx] == *mss_val_crr.dp) var_val.dp[idx]=*mss_val_new.dp;}
+      }else{ /* Old missing value is NaN-like so arithmetic comparisons are always false---must use macros */
+	for(idx=0L;idx<var_sz;idx++) {if(!isfinite(var_val.dp[idx])) var_val.dp[idx]=*mss_val_new.dp;}
+      } /* endif NaN */
+      break;
     case NC_INT: for(idx=0L;idx<var_sz;idx++) {if(var_val.ip[idx] == *mss_val_crr.ip) var_val.ip[idx]=*mss_val_new.ip;} break;
     case NC_SHORT: for(idx=0L;idx<var_sz;idx++) {if(var_val.sp[idx] == *mss_val_crr.sp) var_val.sp[idx]=*mss_val_new.sp;} break;
     case NC_CHAR: for(idx=0L;idx<var_sz;idx++) {if(var_val.cp[idx] == *mss_val_crr.cp) var_val.cp[idx]=*mss_val_new.cp;} break;
@@ -213,12 +233,13 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
 
   if(
      flg_fmt_netCDF4 && /* Output file is netCDF4 and ... */
+     aed.att_nm && /* 20130419: Verify att_nm exists before using it in strcmp() below. att_nm does not exist when user leaves field blank. Fix provided by Etienne Tourigny. */
      !strcmp(aed.att_nm,nco_mss_val_sng_get()) && /* ... attribute is missing value and ... */
      aed.mode != aed_delete){ /* ... we are not deleting attribute */
     /* Rename existing attribute to netCDF4-safe name 
        After modifying missing value attribute with netCDF4-safe name below, 
        we will rename attribute to original missing value name. */
-    if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s reports creating, modifying, or overwriting %s attribute %s in netCDF4 file requires re-name trick\n",prg_nm_get(),fnc_nm,var_nm,aed.att_nm);
+    if(nco_dbg_lvl_get() >= nco_dbg_var && nco_dbg_lvl_get() != nco_dbg_dev) (void)fprintf(stdout,"%s: INFO %s reports creating, modifying, or overwriting %s attribute %s in netCDF4 file requires re-name trick\n",nco_prg_nm_get(),fnc_nm,var_nm,aed.att_nm);
     if(rcd_inq_att == NC_NOERR) (void)nco_rename_att(nc_id,var_id,aed.att_nm,att_nm_tmp);
     flg_netCDF4_rename_trick=True; /* [flg] Re-name _FillValue in order to create/modify/overwrite it */
     strcpy(aed.att_nm,att_nm_tmp); 
@@ -230,16 +251,22 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
     if(rcd_inq_att == NC_NOERR){
       /* Append to existing attribute value */
       if(aed.type != att_typ){
-	(void)fprintf(stdout,"%s: ERROR %s attribute %s is of type %s not %s, unable to append\n",prg_nm_get(),var_nm,aed.att_nm,nco_typ_sng(att_typ),nco_typ_sng(aed.type));
+	(void)fprintf(stdout,"%s: ERROR %s attribute %s is of type %s not %s, unable to append\n",nco_prg_nm_get(),var_nm,aed.att_nm,nco_typ_sng(att_typ),nco_typ_sng(aed.type));
 	nco_exit(EXIT_FAILURE);
       } /* end if */
       att_val_new=(void *)nco_malloc((att_sz+aed.sz)*nco_typ_lng(aed.type));
       (void)nco_get_att(nc_id,var_id,aed.att_nm,(void *)att_val_new,aed.type);
+      /* 20120903: Handle trailing NULs for strings
+	 Prevent interstitial NULs accumulation by overwriting NUL-terminator with first character of append string
+	 When Behavior 1 is requested, this line removes NULs appended by strdup() in nco_prs_aed_lst() */
+      if(aed.type == NC_CHAR)
+	if(((char *)att_val_new)[att_sz-1L] == '\0') att_sz--;
+
       /* NB: Following assumes sizeof(char) = 1 byte */
       (void)memcpy((void *)((char *)att_val_new+att_sz*nco_typ_lng(aed.type)),
 		   (void *)aed.val.vp,
 		   aed.sz*nco_typ_lng(aed.type));
-      (void)nco_put_att(nc_id,var_id,aed.att_nm,aed.type,att_sz+aed.sz,att_val_new);
+      rcd+=nco_put_att(nc_id,var_id,aed.att_nm,aed.type,att_sz+aed.sz,att_val_new);
       att_val_new=nco_free(att_val_new);
     }else{
       /* Create new attribute */
@@ -281,7 +308,7 @@ nco_aed_prc /* [fnc] Process single attribute edit for single variable */
   } /* !flg_netCDF4_rename_trick */
 #endif /* !NCO_NETCDF4_AND_FILLVALUE */
 
-  if(rcd != NC_NOERR) (void)fprintf(stdout,"%s: DEBUG WARNING %s reports unexpected cumulative rcd = %i on exit. Please report this to NCO project.\n",prg_nm_get(),fnc_nm,rcd);
+  if(rcd != NC_NOERR) (void)fprintf(stdout,"%s: DEBUG WARNING %s reports unexpected cumulative rcd = %i on exit. Please report this to NCO project.\n",nco_prg_nm_get(),fnc_nm,rcd);
 
 } /* end nco_aed_prc() */
 
@@ -294,9 +321,9 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
  const nco_bool PCK_ATT_CPY) /* I [flg] Copy attributes "scale_factor", "add_offset" */
 {
   /* Purpose: Copy attributes from input netCDF file to output netCDF file
-     If var_in_id == NC_GLOBAL, then copy global attributes
-     Otherwise copy only indicated variable's attributes
-     When PCK_ATT_CPY is false, copy all attributes except "scale_factor", "add_offset" */
+  If var_in_id == NC_GLOBAL, then copy global attributes
+  Otherwise copy only indicated variable's attributes
+  When PCK_ATT_CPY is false, copy all attributes except "scale_factor", "add_offset" */
 
   char att_nm[NC_MAX_NAME];
   char var_nm[NC_MAX_NAME];
@@ -307,11 +334,11 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
 
   if(var_in_id == NC_GLOBAL){
     (void)nco_inq_natts(in_id,&nbr_att);
-    if(nbr_att > NC_MAX_ATTRS) (void)fprintf(stdout,"%s: WARNING Number of global attributes is %d which exceeds number permitted by netCDF NC_MAX_ATTRS = %d\n",prg_nm_get(),nbr_att,NC_MAX_ATTRS);
+    if(nbr_att > NC_MAX_ATTRS) (void)fprintf(stdout,"%s: WARNING Number of global attributes is %d which exceeds number permitted by netCDF NC_MAX_ATTRS = %d\n",nco_prg_nm_get(),nbr_att,NC_MAX_ATTRS);
   }else{
     (void)nco_inq_varnatts(in_id,var_in_id,&nbr_att);
     if(nbr_att > 0) (void)nco_inq_varname(out_id,var_out_id,var_nm);
-    if(nbr_att > NC_MAX_ATTRS) (void)fprintf(stdout,"%s: WARNING Variable %s has %d attributes which exceeds number permitted by netCDF NC_MAX_ATTRS = %d\n",prg_nm_get(),var_nm,nbr_att,NC_MAX_ATTRS);
+    if(nbr_att > NC_MAX_ATTRS) (void)fprintf(stdout,"%s: WARNING Variable %s has %d attributes which exceeds number permitted by netCDF NC_MAX_ATTRS = %d\n",nco_prg_nm_get(),var_nm,nbr_att,NC_MAX_ATTRS);
   } /* end else */
 
   /* Jump back to here if current attribute is treated specially */
@@ -319,34 +346,34 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
     (void)nco_inq_attname(in_id,var_in_id,idx,att_nm);
     /* Look for same attribute in output variable in output file */
     rcd=nco_inq_att_flg(out_id,var_out_id,att_nm,(nc_type *)NULL,(long *)NULL);
-      
+
     /* If attribute is "scale_factor" or "add_offset" ... */
     if(!strcmp(att_nm,"scale_factor") || !strcmp(att_nm,"add_offset")){
       /* ...and if instructed to copy packing attributes... */
       if(PCK_ATT_CPY){
-	int prg_id; /* [enm] Program ID */
-	prg_id=prg_get(); /* [enm] Program ID */
+	int nco_prg_id; /* [enm] Program ID */
+	nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
 	/* ...and if multifile concatenator (ncrcat, ncecat)... */
-	if(prg_id == ncrcat || prg_id == ncecat){
+	if(nco_prg_id == ncrcat || nco_prg_id == ncecat){
 	  /* ...then risk exists that packing attributes in first file do not match subsequent files... */
 	  static short FIRST_WARNING=True;
-	  if(FIRST_WARNING) (void)fprintf(stderr,"%s: INFO/WARNING Multi-file concatenator encountered packing attribute %s for variable %s. NCO copies the packing attributes from the first file to the output file. The packing attributes from the remaining files must match exactly those in the first file or the data from the subsequent files will not be unpacked correctly. Be sure that all input files share the same packing attributes. If in doubt, unpack (with ncpdq -U) the input files, then c [...]
+	  if(FIRST_WARNING) (void)fprintf(stderr,"%s: INFO/WARNING Multi-file concatenator encountered packing attribute %s for variable %s. NCO copies the packing attributes from the first file to the output file. The packing attributes from the remaining files must match exactly those in the first file or the data from the subsequent files will not unpack correctly. Be sure all input files share the same packing attributes. If in doubt, unpack (with ncpdq -U) the input files, then concatenate [...]
 	  FIRST_WARNING=False;
 	} /* endif ncrcat or ncecat */
       }else{ /* ...do not copy packing attributes... */
-	/* ...then skip remainder of loop, thereby skipping attribute copy... */
-	continue;
+        /* ...then skip remainder of loop, thereby skipping attribute copy... */
+        continue;
       } /* endelse */
     } /* endif attribute is "scale_factor" or "add_offset" */
-    
+
     /* Inform user when copy will overwrite an existing attribute */
-    if(dbg_lvl_get() >= nco_dbg_std){
+    if(nco_dbg_lvl_get() >= nco_dbg_std && nco_dbg_lvl_get() != nco_dbg_dev){
       if(rcd == NC_NOERR){
-	if(var_out_id == NC_GLOBAL){
-	  (void)fprintf(stderr,"%s: INFO Overwriting global attribute %s\n",prg_nm_get(),att_nm);
-	}else{
-	  (void)fprintf(stderr,"%s: INFO Overwriting attribute %s for output variable %s\n",prg_nm_get(),att_nm,var_nm);
-	} /* end else */
+        if(var_out_id == NC_GLOBAL){
+          (void)fprintf(stderr,"%s: INFO Overwriting global attribute %s\n",nco_prg_nm_get(),att_nm);
+        }else{
+          (void)fprintf(stderr,"%s: INFO Overwriting attribute %s for output variable %s\n",nco_prg_nm_get(),att_nm,var_nm);
+        } /* end else */
       } /* end if */
     } /* end if dbg */
 
@@ -355,32 +382,33 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
       (void)nco_copy_att(in_id,var_in_id,att_nm,out_id,var_out_id);
     }else{
       /* Convert "_FillValue" attribute to unpacked type then copy 
-	 Impose NCO convention that _FillValue is same type as variable,
-	 whether variable is packed or not */
+      Impose NCO convention that _FillValue is same type as variable,
+      whether variable is packed or not */
       aed_sct aed;
-      
+
       long att_sz;
       size_t att_lng_in;
-      
+
       nc_type att_typ_in;
       nc_type att_typ_out;
-      
+
       ptr_unn mss_tmp;
-      
+
       (void)nco_inq_att(in_id,var_in_id,att_nm,&att_typ_in,&att_sz);
-      
+
       if(att_sz != 1L){
-	(void)fprintf(stderr,"%s: ERROR input \"%s\" attribute has %li elements, but nco_att_cpy() only works for size of 1\n",prg_nm_get(),att_nm,att_sz);
-	nco_exit(EXIT_FAILURE); 
+        (void)fprintf(stderr,"%s: WARNING input %s attribute has %li elements, but CF convention insists that %s be scalar (i.e., one element, possibly of compound type). Will attempt to copy using nco_copy_att(). HINT: If this fails, redefine %s as scalar.\n",nco_prg_nm_get(),att_nm,att_sz,att_nm,att_nm);
+        (void)nco_copy_att(in_id,var_in_id,att_nm,out_id,var_out_id);
+        return;
       } /* end if */
-      
+
       /* Convert "_FillValue" to unpacked type before copying */
       aed.att_nm=att_nm; /* Name of attribute */
       if(var_out_id == NC_GLOBAL){
-	aed.var_nm=NULL;
+        aed.var_nm=NULL;
       }else{
-	(void)nco_inq_varname(out_id,var_out_id,var_nm);
-	aed.var_nm=var_nm; /* Name of variable, or NULL for global attribute */
+        (void)nco_inq_varname(out_id,var_out_id,var_nm);
+        aed.var_nm=var_nm; /* Name of variable, or NULL for global attribute */
       } /* end if */
       aed.id=out_id; /* Variable ID or NC_GLOBAL ( = -1) for global attribute */
       aed.sz=att_sz; /* Number of elements in attribute */
@@ -393,7 +421,7 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
         aed.val.vp=(void *)nco_malloc(nco_typ_lng(aed.type)); /* Pointer to attribute value */
         (void)nco_get_att(in_id,var_in_id,att_nm,aed.val.vp,att_typ_out);
       }else{ /* att_typ_out!=att_typ_in */
-	/* Convert type */          
+        /* Convert type */          
         aed.type=att_typ_out; /* Type of attribute */
         aed.val.vp=(void *)nco_malloc(nco_typ_lng(aed.type)); /* Pointer to attribute value */
         att_lng_in=att_sz*nco_typ_lng(att_typ_in);
@@ -404,7 +432,7 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
       } /* att_typ_out!=att_typ_in */
 
       /* Overwrite mode causes problems with netCDF4 and "_FillValue" 
-	 Use create mode instead */
+      Use create mode instead */
       aed.mode=aed_create;
       (void)nco_aed_prc(out_id,var_out_id,aed); 
       /* Release temporary memory */
@@ -500,8 +528,9 @@ nco_hst_att_cat /* [fnc] Add command line, date stamp to history attribute */
   
   int idx;
   int glb_att_nbr;
+  int rcd=NC_NOERR; /* [rcd] Return code */
 
-  long att_sz=0;
+  long att_sz=0L;
 
   nc_type att_typ;
   
@@ -513,7 +542,7 @@ nco_hst_att_cat /* [fnc] Add command line, date stamp to history attribute */
   /* NUL-terminate time_stamp_sng */
   time_stamp_sng[TIME_STAMP_SNG_LNG-1]='\0';
   /* Get rid of carriage return in ctime_sng */
-  (void)strncpy(time_stamp_sng,ctime_sng,TIME_STAMP_SNG_LNG-1);
+  (void)strncpy(time_stamp_sng,ctime_sng,TIME_STAMP_SNG_LNG-1UL);
 
   /* Get number of global attributes in file */
   (void)nco_inq(out_id,(int *)NULL,(int *)NULL,&glb_att_nbr,(int *)NULL);
@@ -528,7 +557,7 @@ nco_hst_att_cat /* [fnc] Add command line, date stamp to history attribute */
     /* Global attribute "[hH]istory" does not yet exist */
 
     /* Add 3 for formatting characters */
-    history_new=(char *)nco_malloc((strlen(hst_sng)+strlen(time_stamp_sng)+3)*sizeof(char));
+    history_new=(char *)nco_malloc((strlen(hst_sng)+strlen(time_stamp_sng)+3UL)*sizeof(char));
     (void)sprintf(history_new,"%s: %s",time_stamp_sng,hst_sng);
     /* Set attribute name to default */
     (void)strcpy(att_nm,sng_history);
@@ -539,7 +568,7 @@ nco_hst_att_cat /* [fnc] Add command line, date stamp to history attribute */
     /* NB: ncattinq(), unlike strlen(), counts terminating NUL for stored NC_CHAR arrays */
     (void)nco_inq_att(out_id,NC_GLOBAL,att_nm,&att_typ,&att_sz);
     if(att_typ != NC_CHAR){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING the \"%s\" global attribute is type %s, not %s. Therefore current command line will not be appended to %s in output file.\n",prg_nm_get(),att_nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),att_nm);
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING the \"%s\" global attribute is type %s, not %s. Therefore current command line will not be appended to %s in output file.\n",nco_prg_nm_get(),att_nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),att_nm);
       return;
     } /* end if */
 
@@ -550,11 +579,11 @@ nco_hst_att_cat /* [fnc] Add command line, date stamp to history attribute */
     if(att_sz > 0) (void)nco_get_att(out_id,NC_GLOBAL,att_nm,(void *)history_crr,NC_CHAR);
 
     /* Add 4 for formatting characters */
-    history_new=(char *)nco_malloc((strlen(history_crr)+strlen(hst_sng)+strlen(time_stamp_sng)+4)*sizeof(char));
+    history_new=(char *)nco_malloc((strlen(history_crr)+strlen(hst_sng)+strlen(time_stamp_sng)+4UL)*sizeof(char));
     (void)sprintf(history_new,"%s: %s\n%s",time_stamp_sng,hst_sng,history_crr);
   } /* endif history global attribute currently exists */
 
-  (void)nco_put_att(out_id,NC_GLOBAL,att_nm,NC_CHAR,(long int)(strlen(history_new)+1UL),(void *)history_new);
+  rcd+=nco_put_att(out_id,NC_GLOBAL,att_nm,NC_CHAR,(long int)(strlen(history_new)+1UL),(void *)history_new);
 
   history_crr=(char *)nco_free(history_crr);
   history_new=(char *)nco_free(history_new);
@@ -568,77 +597,95 @@ nco_prs_aed_lst /* [fnc] Parse user-specified attribute edits into structure lis
  X_CST_PTR_CST_PTR_Y(char,aed_arg)) /* I/O [sng] List of user-specified attribute edits (delimiters are changed to NULL on output */
 {
   /* Purpose: Parse name, type, size, and value elements of comma-separated list of attribute edit information
-     Routine merely evaluates syntax of input expressions
-     Routine does not validate attributes or variables against those present in input netCDF file */
+  Routine merely evaluates syntax of input expressions
+  Routine does not validate attributes or variables against those present in input netCDF file */
 
   /* Options are:
-     -a att_nm,var_nm,mode,att_typ,att_val (modifies attribute att_nm for the single variable var_nm)
+  -a att_nm,var_nm,mode,att_typ,att_val (modifies attribute att_nm for the single variable var_nm)
 
-     -a att_nm,,mode,att_typ,att_val (modifies attribute att_nm for every variable in file)
-     If option -a is given with var_nm = NULL, then var_nm is expanded into every variable name in file
-     Thus attribute editing operation is performed on every variable in file.
+  -a att_nm,,mode,att_typ,att_val (modifies attribute att_nm for every variable in file)
+  If option -a is given with var_nm = NULL, then var_nm is expanded into every variable name in file
+  Thus attribute editing operation is performed on every variable in file.
 
-     mode,att_nm,att_typ,att_val (modifies global attribute att_nm for file)
-     This option may be combined with modes -a, -c, -d, or -o to specify 
-     appending to, changing, deleting, or overwriting, any existing global attribute named att_nm
+  mode,att_nm,att_typ,att_val (modifies global attribute att_nm for file)
+  This option may be combined with modes -a, -c, -d, or -o to specify 
+  appending to, changing, deleting, or overwriting, any existing global attribute named att_nm
 
-     One mode must be set for each edited attribute: append (a), create (c), delete (d), modify (m), or overwrite (o).
-     -a: Attribute append mode
-     Append value att_val to current var_nm attribute att_nm value att_val, if any. 
-     If var_nm does not have an attribute att_nm, there is not effect.
+  One mode must be set for each edited attribute: append (a), create (c), delete (d), modify (m), or overwrite (o).
+  -a: Attribute append mode
+  Append value att_val to current var_nm attribute att_nm value att_val, if any. 
+  If var_nm does not have an attribute att_nm, there is no effect.
 
-     -c: Attribute create mode
-     Create variable var_nm attribute att_nm with att_val if att_nm does not yet exist. 
-     If var_nm already has an attribute att_nm, there is not effect.
+  -c: Attribute create mode
+  Create variable var_nm attribute att_nm with att_val if att_nm does not yet exist. 
+  If var_nm already has an attribute att_nm, there is no effect.
 
-     -d: Attribute delete mode
-     Delete current var_nm attribute att_nm.
-     If var_nm does not have an attribute att_nm, there is not effect.
+  -d: Attribute delete mode
+  Delete current var_nm attribute att_nm.
+  If var_nm does not have an attribute att_nm, there is no effect.
 
-     -m: Attribute modify mode
-     Change value of current var_nm attribute att_nm to value att_val.
-     If var_nm does not have an attribute att_nm, there is not effect.
+  -m: Attribute modify mode
+  Change value of current var_nm attribute att_nm to value att_val.
+  If var_nm does not have an attribute att_nm, there is no effect.
 
-     -o: Attribute overwrite mode
-     Write attribute att_nm with value att_val to variable var_nm, overwriting existing attribute att_nm, if any.
-     This is default mode.
-   */
+  -o: Attribute overwrite mode
+  Write attribute att_nm with value att_val to variable var_nm, overwriting existing attribute att_nm, if any.
+  This is default mode. */
+
+  aed_sct *aed_lst;
 
   char **arg_lst;
 
+  char *msg_sng=NULL_CEWI; /* [sng] Error message */
+
   const char * const dlm_sng=",";
 
   const long idx_att_val_arg=4L; /* Number of required delimiters preceding attribute values in -a argument list */
 
-  aed_sct *aed_lst;
-
   int idx;
   int arg_nbr;
 
+  long lmn;
+
+  nco_bool ATT_TYP_INHERIT; /* [flg] Inherit attribute type from pre-existing attribute */
+  nco_bool NCO_SYNTAX_ERROR=False; /* [flg] Syntax error in attribute-edit specification */
+
   aed_lst=(aed_sct *)nco_malloc(nbr_aed*sizeof(aed_sct));
 
   for(idx=0;idx<nbr_aed;idx++){
+    ATT_TYP_INHERIT=False; /* [flg] Inherit attribute type from pre-existing attribute */
 
     /* Process attribute edit specifications as normal text list */
     arg_lst=nco_lst_prs_2D(aed_arg[idx],dlm_sng,&arg_nbr);
 
     /* Check syntax */
-    if(
-       arg_nbr < 5 || /* Need more info */
-       /* arg_lst[0] == NULL || */ /* att_nm not specified */
-       arg_lst[2] == NULL || /* mode not specified */
-       (*(arg_lst[2]) != 'd' && (arg_lst[3] == NULL || (arg_lst[idx_att_val_arg] == NULL && *(arg_lst[3]) != 'c'))) || /* att_typ and att_val must be specified when mode is not delete, except that att_val = "" is valid for character type */
-       False){
-      (void)fprintf(stdout,"%s: ERROR in attribute edit specification %s\n",prg_nm_get(),aed_arg[idx]);
+    if(arg_nbr < 5){ /* Need more info */
+      msg_sng=strdup("Specification has fewer than five arguments---need more information");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_lst[2] == NULL){ /* mode not specified ... */
+      msg_sng=strdup("Mode must be explicitly specified");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_lst[3] == NULL && *(arg_lst[2]) != 'd' && *(arg_lst[2]) != 'm'){
+      msg_sng=strdup("Type must be explicitly specified for all modes except delete and modify");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_lst[idx_att_val_arg] == NULL && *(arg_lst[2]) != 'd' && *(arg_lst[3]) == 'c'){
+      /* ... value is not specified except that att_val = "" is valid for character type */
+      msg_sng=strdup("Value must be explicitly specified for all modes except delete (although an empty string value is permissible for attributes of type NC_NCAR and NC_STRING)");
+      NCO_SYNTAX_ERROR=True;
+    } /* end else */
+
+    if(NCO_SYNTAX_ERROR){
+      (void)fprintf(stdout,"%s: ERROR in attribute edit specification %s: %s\n",nco_prg_nm_get(),aed_arg[idx],msg_sng);
+      msg_sng=(char *)nco_free(msg_sng);
       nco_exit(EXIT_FAILURE);
-    } /* end if */
+    } /* !NCO_SYNTAX_ERROR */
 
     /* Initialize structure */
     /* aed strings not explicitly set by user remain NULL,
-       i.e., specifying default setting appears as if nothing was set.
-       Hopefully, in routines that follow, the branch followed by an aed for which
-       all default settings were specified (e.g.,"-a foo,,,,") will yield same result
-       as branch for which all defaults were set. */
+    i.e., specifying default setting appears as if nothing was set.
+    Hopefully, in routines that follow, the branch followed by an aed for which
+    all default settings were specified (e.g.,"-a foo,,,,") will yield same result
+    as branch for which all defaults were set. */
     aed_lst[idx].att_nm=NULL;
     aed_lst[idx].var_nm=NULL;
     aed_lst[idx].val.vp=NULL;
@@ -666,150 +713,197 @@ nco_prs_aed_lst /* [fnc] Parse user-specified attribute edits into structure lis
     case 'm': aed_lst[idx].mode=aed_modify; break;
     case 'o': aed_lst[idx].mode=aed_overwrite; break;
     default: 
-      (void)fprintf(stderr,"%s: ERROR `%s' is not a supported mode\n",prg_nm_get(),arg_lst[2]);
-      (void)fprintf(stderr,"%s: HINT: Valid modes are `a' = append, `c' = create,`d' = delete, `m' = modify, and `o' = overwrite",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR `%s' is not a supported mode\n",nco_prg_nm_get(),arg_lst[2]);
+      (void)fprintf(stderr,"%s: HINT: Valid modes are `a' = append, `c' = create,`d' = delete, `m' = modify, and `o' = overwrite",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     } /* end switch */
 
+    /* For modify-mode, type may be inherited when not explicitly specified */
+    if(aed_lst[idx].mode == aed_modify && arg_lst[3] == NULL){
+      /* 20120711: Problem with inherit is that nc_id info is needed now to get att_typ to inherit
+      Hence file information/validation becomes involved here, earlier than expected */
+      ATT_TYP_INHERIT=True;
+      (void)fprintf(stderr,"%s: ERROR: Inherited attribute type not yet supported. TODO nco1060 fxm.",nco_prg_nm_get());
+      nco_exit(EXIT_FAILURE);
+    } /* !ATT_TYP_INHERIT */
+
     /* Attribute type and value do not matter if we are deleting it */
-    if(aed_lst[idx].mode != aed_delete){
+    if(aed_lst[idx].mode != aed_delete && !ATT_TYP_INHERIT){
 
       /* Set type of current aed structure */
       /* Convert single letter code to type enum */
       switch(*(arg_lst[3])){
+      case 'F':	
       case 'f':	aed_lst[idx].type=(nc_type)NC_FLOAT; break;
+      case 'D':	
       case 'd':	aed_lst[idx].type=(nc_type)NC_DOUBLE; break;
-      case 'l':	
-      case 'i':	aed_lst[idx].type=(nc_type)NC_INT; break;
-      case 's':	aed_lst[idx].type=(nc_type)NC_SHORT; break;
+      case 'C':	
       case 'c':	aed_lst[idx].type=(nc_type)NC_CHAR; break;
+      case 'B':	
       case 'b':	aed_lst[idx].type=(nc_type)NC_BYTE; break;
       default: 
-	if(!strcasecmp(arg_lst[3],"ub")) aed_lst[idx].type=(nc_type)NC_UBYTE; 
-	else if(!strcasecmp(arg_lst[3],"us")) aed_lst[idx].type=(nc_type)NC_USHORT; 
-	else if(!strcasecmp(arg_lst[3],"u") || !strcasecmp(arg_lst[3],"ui") || !strcasecmp(arg_lst[3],"ul")) aed_lst[idx].type=(nc_type)NC_UINT; 
-	else if(!strcasecmp(arg_lst[3],"ll") || !strcasecmp(arg_lst[3],"int64")) aed_lst[idx].type=(nc_type)NC_INT64; 
-	else if(!strcasecmp(arg_lst[3],"ull") || !strcasecmp(arg_lst[3],"uint64")) aed_lst[idx].type=(nc_type)NC_UINT64; 
-	else if(!strcasecmp(arg_lst[3],"sng")) aed_lst[idx].type=(nc_type)NC_STRING; 
-	else{
-	  (void)fprintf(stderr,"%s: ERROR `%s' is not a supported netCDF data type\n",prg_nm_get(),arg_lst[3]);
-	  (void)fprintf(stderr,"%s: HINT: Valid data types are `c' = char, `f' = float, `d' = double,`s' = short, 'l' = `i' = integer, `b' = byte",prg_nm_get());
-	  nco_exit(EXIT_FAILURE);} /*  end if error */
-      break;
+        /* Ambiguous single letters must use full string comparisons */
+        if(!strcasecmp(arg_lst[3],"l") || !strcasecmp(arg_lst[3],"i")) aed_lst[idx].type=(nc_type)NC_INT; 
+        else if(!strcasecmp(arg_lst[3],"s")) aed_lst[idx].type=(nc_type)NC_SHORT; 
+#ifdef ENABLE_NETCDF4
+        else if(!strcasecmp(arg_lst[3],"ub")) aed_lst[idx].type=(nc_type)NC_UBYTE; 
+        else if(!strcasecmp(arg_lst[3],"us")) aed_lst[idx].type=(nc_type)NC_USHORT; 
+        else if(!strcasecmp(arg_lst[3],"u") || !strcasecmp(arg_lst[3],"ui") || !strcasecmp(arg_lst[3],"ul")) aed_lst[idx].type=(nc_type)NC_UINT; 
+        else if(!strcasecmp(arg_lst[3],"ll") || !strcasecmp(arg_lst[3],"int64")) aed_lst[idx].type=(nc_type)NC_INT64; 
+        else if(!strcasecmp(arg_lst[3],"ull") || !strcasecmp(arg_lst[3],"uint64")) aed_lst[idx].type=(nc_type)NC_UINT64; 
+        else if(!strcasecmp(arg_lst[3],"sng") || !strcasecmp(arg_lst[3],"string")) aed_lst[idx].type=(nc_type)NC_STRING; 
+        else{
+          (void)fprintf(stderr,"%s: ERROR `%s' is not a supported netCDF data type\n",nco_prg_nm_get(),arg_lst[3]);
+          (void)fprintf(stderr,"%s: HINT: Valid data types are `c' = char, `f' = float, `d' = double,`s' = short, `i' = `l' = integer, `b' = byte",nco_prg_nm_get());
+
+          (void)fprintf(stderr,", `ub' = unsigned byte, `us' = unsigned short, `u' or `ui' or `ul' = unsigned int,`ll' or `int64' = 64-bit signed integer, `ull' or `uint64` = unsigned 64-bit integer, `sng' or `string' = string");
+
+          (void)fprintf(stderr,"\n");
+          nco_exit(EXIT_FAILURE);} /*  end if error */
+#endif /* ENABLE_NETCDF4 */
+        break;
       } /* end switch */
-      
+    } /* end if not delete mode and !ATT_TYP_INHERIT */
+
+    if(aed_lst[idx].mode != aed_delete){
+
       /* Re-assemble string list values which inadvertently contain delimiters */
-      if(aed_lst[idx].type == NC_CHAR && arg_nbr > idx_att_val_arg+1){
-	/* Number of elements which must be concatenated into single string value */
-	long lmn_nbr;
-	lmn_nbr=arg_nbr-idx_att_val_arg; 
-	if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: WARNING NC_CHAR (string) attribute is embedded with %li literal element delimiters (\"%s\"), re-assembling...\n",prg_nm_get(),lmn_nbr-1L,dlm_sng);
-	/* Rewrite list, splicing in original delimiter string */
-	/* fxm: TODO nco527 ncatted memory may be lost here */
-	arg_lst[idx_att_val_arg]=sng_lst_cat(arg_lst+idx_att_val_arg,lmn_nbr,dlm_sng);
-	/* Keep bookkeeping straight, just in case */
-	arg_nbr=idx_att_val_arg+1L;
-	lmn_nbr=1L;
+      if((aed_lst[idx].type == NC_CHAR) && arg_nbr > idx_att_val_arg+1){
+        /* Number of elements which must be concatenated into single string value */
+        long lmn_nbr;
+        lmn_nbr=arg_nbr-idx_att_val_arg; 
+        if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: WARNING NC_CHAR (string) attribute is embedded with %li literal element delimiters (\"%s\"), re-assembling...\n",nco_prg_nm_get(),lmn_nbr-1L,dlm_sng);
+        /* Rewrite list, splicing in original delimiter string */
+        /* fxm: TODO nco527 ncatted memory may be lost here */
+        arg_lst[idx_att_val_arg]=sng_lst_cat(arg_lst+idx_att_val_arg,lmn_nbr,dlm_sng);
+        /* Keep bookkeeping straight, just in case */
+        arg_nbr=idx_att_val_arg+1L;
+        lmn_nbr=1L;
       } /* endif arg_nbr > idx_att_val_arg+1 */
-      
+
       /* Replace any C language '\X' escape codes with ASCII bytes */
-      if(aed_lst[idx].type == NC_CHAR) (void)sng_ascii_trn(arg_lst[idx_att_val_arg]);
+      if(aed_lst[idx].type == NC_CHAR || aed_lst[idx].type == NC_STRING) (void)sng_ascii_trn(arg_lst[idx_att_val_arg]);
 
       /* Set size of current aed structure */
       if(aed_lst[idx].type == NC_CHAR){
-	/* 20100409 Remove extra space formerly allocated for NUL-terminator 
-	   This caused each append to insert a NUL at end of NC_CHAR attributes
-	   Multiple appends would then result in attributes pockmarked with NULs
-	   Solves TODO nco985
-	   Not yet sure there are no ill side-effects though... */ 
-	aed_lst[idx].sz=(arg_lst[idx_att_val_arg] == NULL) ? 0L : strlen(arg_lst[idx_att_val_arg]);
+        /* 20100409 Remove extra space formerly allocated for NUL-terminator 
+        This caused each append to insert a NUL at end of NC_CHAR attributes
+        Multiple appends would then result in attributes pockmarked with NULs
+        Solves TODO nco985
+        Not yet sure there are no ill effects though...
+        20120902 Apparently this fixed some of append mode and broke other modes
+        Dave Allured reports on NCO Discussion forum that create, modify, and overwrite 
+        modes have not added NUL to NC_CHAR attributes since 4.0.2.
+        strdup() below attaches trailing NUL to user-specified string 
+        Retaining this NUL is obliquely discussed in netCDF Best Practices document:
+        http://www.unidata.ucar.edu/software/netcdf/docs/BestPractices.html#Strings%20and%20Variables%20of%20type%20char
+        Two behaviors are possible:
+        1. Terminate user-specified strings with NUL before saving as attributes
+        This behavior was used in 4.0.2-4.2.2 (201007-201210)
+        2. Do not NUL-terminate user-specified strings
+        This behavior was re-instituted in 4.3.0 (201204)
+        Between 201210 and 201304 the behavior was unclear to me...
+        ncgen may be interpreted as utilizing Behavior 2, since attributes in CDL are not NUL-terminated after conversion to netCDF binary format
+        As of 20130327, NCO chooses Behavior 2 (like ncgen)
+        To revert to Behavior 1, uncomment next line to create space for NUL-terminator */
+        /* aed_lst[idx].sz=(arg_lst[idx_att_val_arg] == NULL) ? 1L : strlen(arg_lst[idx_att_val_arg])+1L; */ /* Behavior 1 */
+        aed_lst[idx].sz=(arg_lst[idx_att_val_arg] == NULL) ? 0L : strlen(arg_lst[idx_att_val_arg])+0L; /* Behavior 2 (like ncgen) */
       }else{
-	/* Number of elements of numeric types is determined by number of delimiters */
-	aed_lst[idx].sz=arg_nbr-idx_att_val_arg;
+        /* Number of elements of numeric types is determined by number of delimiters */
+        aed_lst[idx].sz=arg_nbr-idx_att_val_arg;
       } /* end else */
-      
+
       /* Set value of current aed structure */
       if(aed_lst[idx].type == NC_CHAR){
-	aed_lst[idx].val.cp=(nco_char *)strdup(arg_lst[idx_att_val_arg]);
+        /* strdup() attaches a trailing NUL to the user-specified string 
+        Retaining is obliquely discussed in netCDF Best Practices document:
+        http://www.unidata.ucar.edu/software/netcdf/docs/BestPractices.html#Strings%20and%20Variables%20of%20type%20char */
+        aed_lst[idx].val.cp=(nco_char *)strdup(arg_lst[idx_att_val_arg]);
+      }else if(aed_lst[idx].type == NC_STRING){
+        aed_lst[idx].val.vp=(void *)nco_malloc(aed_lst[idx].sz*nco_typ_lng(aed_lst[idx].type));
+        for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
+          aed_lst[idx].val.sngp[lmn]=(nco_string)strdup(arg_lst[idx_att_val_arg+lmn]);
+        } /* end loop over elements */
       }else{
-	char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
-	double *val_arg_dbl=NULL_CEWI;
-	long long *val_arg_lng_lng=NULL_CEWI;
-	unsigned long long *val_arg_ulng_lng=NULL_CEWI;
-	
-	long lmn;
-	
-	aed_lst[idx].val.vp=(void *)nco_malloc(aed_lst[idx].sz*nco_typ_lng(aed_lst[idx].type));
-	
-	/* Use type-appropriate conversion */
-	switch(aed_lst[idx].type){
-	case NC_FLOAT: 
-	case NC_DOUBLE: 
-	  val_arg_dbl=(double *)nco_malloc(aed_lst[idx].sz*sizeof(double));
-	  for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
-	    val_arg_dbl[lmn]=strtod(arg_lst[idx_att_val_arg+lmn],&sng_cnv_rcd);
-	    if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[idx_att_val_arg+lmn],"strtod",sng_cnv_rcd);
-	  } /* end loop over elements */
-	  break; 
-	case NC_BYTE:
-	case NC_INT: 
-	case NC_SHORT: 
-	case NC_INT64: 
-	  val_arg_lng_lng=(long long *)nco_malloc(aed_lst[idx].sz*sizeof(long long int));
-	  for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
-	    val_arg_lng_lng[lmn]=strtoll(arg_lst[idx_att_val_arg+lmn],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	    if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[idx_att_val_arg+lmn],"strtoll",sng_cnv_rcd);
-	  } /* end loop over elements */
-	  break;
-	case NC_CHAR:
-	case NC_UBYTE: 
-	case NC_USHORT: 
-	case NC_UINT: 
-	case NC_UINT64: 
-	  val_arg_ulng_lng=(unsigned long long *)nco_malloc(aed_lst[idx].sz*sizeof(unsigned long long int));
-	  for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
-	    val_arg_ulng_lng[lmn]=strtoull(arg_lst[idx_att_val_arg+lmn],&sng_cnv_rcd,NCO_SNG_CNV_BASE10); 
-	    if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[idx_att_val_arg+lmn],"strtoull",sng_cnv_rcd);
-	  } /* end loop over elements */
-	break;
-	case NC_STRING: break;
-	default: nco_dfl_case_nc_type_err(); break;
-	} /* end switch */
-	
-	/* Copy and typecast entire array of values, using implicit coercion rules of C */
-	/* 20011001: Use explicit coercion rules to quiet C++ compiler warnings */
-	switch(aed_lst[idx].type){
-	case NC_FLOAT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.fp[lmn]=(float)val_arg_dbl[lmn];} break; 
-	case NC_DOUBLE: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.dp[lmn]=(double)val_arg_dbl[lmn];} break; 
-	case NC_INT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.ip[lmn]=(nco_int)val_arg_lng_lng[lmn];} break; 
-	case NC_SHORT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.sp[lmn]=(nco_short)val_arg_lng_lng[lmn];} break; 
-	case NC_CHAR: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.cp[lmn]=(nco_char)val_arg_ulng_lng[lmn];} break; 
-	case NC_BYTE: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.bp[lmn]=(nco_byte)val_arg_lng_lng[lmn];} break; 
-	case NC_UBYTE: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.ubp[lmn]=(nco_ubyte)val_arg_ulng_lng[lmn];} break; 
-	case NC_USHORT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.usp[lmn]=(nco_ushort)val_arg_ulng_lng[lmn];} break; 
-	case NC_UINT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.uip[lmn]=(nco_uint)val_arg_ulng_lng[lmn];} break; 
-	case NC_INT64: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.i64p[lmn]=(nco_int64)val_arg_lng_lng[lmn];} break; 
-	case NC_UINT64: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.ui64p[lmn]=(nco_uint64)val_arg_ulng_lng[lmn];} break; 
-	case NC_STRING: break;
-	default: nco_dfl_case_nc_type_err(); break;
-	} /* end switch */
-	
-	/* Free array used to hold input values */
-	if(val_arg_dbl) val_arg_dbl=(double *)nco_free(val_arg_dbl);
-	if(val_arg_lng_lng) val_arg_lng_lng=(long long *)nco_free(val_arg_lng_lng);
-	if(val_arg_ulng_lng) val_arg_ulng_lng=(unsigned long long *)nco_free(val_arg_ulng_lng);
+        char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+        double *val_arg_dbl=NULL_CEWI;
+        long long *val_arg_lng_lng=NULL_CEWI;
+        unsigned long long *val_arg_ulng_lng=NULL_CEWI;
+
+        aed_lst[idx].val.vp=(void *)nco_malloc(aed_lst[idx].sz*nco_typ_lng(aed_lst[idx].type));
+
+        /* Use type-appropriate conversion */
+        switch(aed_lst[idx].type){
+        case NC_FLOAT: 
+        case NC_DOUBLE: 
+          val_arg_dbl=(double *)nco_malloc(aed_lst[idx].sz*sizeof(double));
+          for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
+            val_arg_dbl[lmn]=strtod(arg_lst[idx_att_val_arg+lmn],&sng_cnv_rcd);
+            if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[idx_att_val_arg+lmn],"strtod",sng_cnv_rcd);
+          } /* end loop over elements */
+          break; 
+        case NC_BYTE:
+        case NC_INT: 
+        case NC_SHORT: 
+        case NC_INT64: 
+          val_arg_lng_lng=(long long *)nco_malloc(aed_lst[idx].sz*sizeof(long long int));
+          for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
+            val_arg_lng_lng[lmn]=strtoll(arg_lst[idx_att_val_arg+lmn],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+            if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[idx_att_val_arg+lmn],"strtoll",sng_cnv_rcd);
+          } /* end loop over elements */
+          break;
+        case NC_CHAR:
+        case NC_UBYTE: 
+        case NC_USHORT: 
+        case NC_UINT: 
+        case NC_UINT64: 
+          val_arg_ulng_lng=(unsigned long long *)nco_malloc(aed_lst[idx].sz*sizeof(unsigned long long int));
+          for(lmn=0L;lmn<aed_lst[idx].sz;lmn++){
+            val_arg_ulng_lng[lmn]=strtoull(arg_lst[idx_att_val_arg+lmn],&sng_cnv_rcd,NCO_SNG_CNV_BASE10); 
+            if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[idx_att_val_arg+lmn],"strtoull",sng_cnv_rcd);
+          } /* end loop over elements */
+          break;
+          /* fxm: 20130723 save whole string! */
+        case NC_STRING: break;
+        default: nco_dfl_case_nc_type_err(); break;
+        } /* end switch */
+
+        /* Copy and typecast entire array of values, using implicit coercion rules of C */
+        /* 20011001: Use explicit coercion rules to quiet C++ compiler warnings */
+        switch(aed_lst[idx].type){
+        case NC_FLOAT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.fp[lmn]=(float)val_arg_dbl[lmn];} break; 
+        case NC_DOUBLE: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.dp[lmn]=(double)val_arg_dbl[lmn];} break; 
+        case NC_INT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.ip[lmn]=(nco_int)val_arg_lng_lng[lmn];} break; 
+        case NC_SHORT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.sp[lmn]=(nco_short)val_arg_lng_lng[lmn];} break; 
+        case NC_CHAR: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.cp[lmn]=(nco_char)val_arg_ulng_lng[lmn];} break; 
+        case NC_BYTE: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.bp[lmn]=(nco_byte)val_arg_lng_lng[lmn];} break; 
+        case NC_UBYTE: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.ubp[lmn]=(nco_ubyte)val_arg_ulng_lng[lmn];} break; 
+        case NC_USHORT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.usp[lmn]=(nco_ushort)val_arg_ulng_lng[lmn];} break; 
+        case NC_UINT: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.uip[lmn]=(nco_uint)val_arg_ulng_lng[lmn];} break; 
+        case NC_INT64: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.i64p[lmn]=(nco_int64)val_arg_lng_lng[lmn];} break; 
+        case NC_UINT64: for(lmn=0L;lmn<aed_lst[idx].sz;lmn++) {aed_lst[idx].val.ui64p[lmn]=(nco_uint64)val_arg_ulng_lng[lmn];} break; 
+          /* fxm: 20130723 save whole string! */
+        case NC_STRING: break;
+        default: nco_dfl_case_nc_type_err(); break;
+        } /* end switch */
+
+        /* Free array used to hold input values */
+        if(val_arg_dbl) val_arg_dbl=(double *)nco_free(val_arg_dbl);
+        if(val_arg_lng_lng) val_arg_lng_lng=(long long *)nco_free(val_arg_lng_lng);
+        if(val_arg_ulng_lng) val_arg_ulng_lng=(unsigned long long *)nco_free(val_arg_ulng_lng);
       } /* end else */
       /* Un-typecast pointer to values after access */
       (void)cast_nctype_void(aed_lst[idx].type,&aed_lst[idx].val);
-      
+
     } /* end if mode is not delete */
 
     arg_lst=nco_sng_lst_free(arg_lst,arg_nbr);
 
   } /* end loop over aed */
-  
-  if(dbg_lvl_get() >= nco_dbg_io){
+
+
+  if(nco_dbg_lvl_get() >= nco_dbg_io){
     for(idx=0;idx<nbr_aed;idx++){
       (void)fprintf(stderr,"aed_lst[%d].att_nm = %s\n",idx,aed_lst[idx].att_nm);
       (void)fprintf(stderr,"aed_lst[%d].var_nm = %s\n",idx,aed_lst[idx].var_nm == NULL ? "NULL" : aed_lst[idx].var_nm);
@@ -820,53 +914,412 @@ nco_prs_aed_lst /* [fnc] Parse user-specified attribute edits into structure lis
       (void)fprintf(stderr,"aed_lst[%d].mode = %i\n",idx,aed_lst[idx].mode);
     } /* end loop over idx */
   } /* end debug */
-  
+
+
   return aed_lst;
-  
+
 } /* end nco_prs_aed_lst() */
 
 int /* [flg] Variable and attribute names are conjoined */
 nco_prs_att /* [fnc] Parse conjoined variable and attribute names */
 (rnm_sct * const rnm_att, /* I/O [sct] Structure [Variable:]Attribute name on input, Attribute name on output */
- char * const var_nm) /* O [sng] Variable name, if any */
+ char * const var_nm, /* O [sng] Variable name, if any */
+ nco_bool * const IS_GLB_GRP_ATT) /* O [flg] Attribute is Global or Group attribute */
 {
-  /* Purpose: Check if attribute name space contains variable name before attribute name of form var_nm:att_nm
-     Attribute name is then extracted from from old_nm and new_nm as necessary */
+  /* Purpose: Check if attribute name space contains variable name before attribute name in form var_nm at att_nm
+     Variable name is then extracted from from old_nm and new_nm as necessary
+     Valid syntax of combined string is actually [.][var_nm]@att_nm
+     Preceding period means (to ncrename) that variable need not be present
+     var_nm is optional and, if omitted, the attribute is assumed to be a global (or group) attribute
+     In this case the var_nm string is set to "global" for (unused) compatibility with ncatted
+     Also, the case-independent var_nm "global" on input, is assumed to mean a global attribute
+     NB: Function replaces delimiter character in input by NUL so that, on output, rnm_att is just attribute name */
   
-  char *dlm_ptr; /* Ampersand pointer */
+  const char dlm_chr='@'; /* Character delimiting variable from attribute name  */
+  char *dlm_ptr; /* Delimiter pointer */
 
   size_t att_nm_lng;
   size_t var_nm_lng;
 
-  dlm_ptr=strchr(rnm_att->old_nm,'@');	
-  if(dlm_ptr == NULL) return 0;
+  /* Initialize var_nm to NUL */
+  var_nm[0]='\0';
+
+  dlm_ptr=strchr(rnm_att->old_nm,dlm_chr);	
+  if(dlm_ptr == NULL) return NCO_ERR;
   
   att_nm_lng=strlen(rnm_att->old_nm);
   
-  /* Return if ampersand appears to be part of attribute name */
-  if(att_nm_lng < 3 || dlm_ptr == rnm_att->old_nm || dlm_ptr == rnm_att->old_nm+att_nm_lng-1) return 0;
+  /* Return if delimiter appears to be part of attribute name */
+  if(att_nm_lng < 3 || dlm_ptr == rnm_att->old_nm+att_nm_lng-1) return NCO_ERR;
+
+  if(dlm_ptr == rnm_att->old_nm || !strncmp(rnm_att->old_nm,".@",2) || !strcasecmp(rnm_att->old_nm,"global")){
+    *IS_GLB_GRP_ATT=True;
+    strcpy(var_nm,"global");
+  } /* endif global */
 
   /* NUL-terminate variable name */
   *dlm_ptr='\0';
-  var_nm_lng=strlen(rnm_att->old_nm);
-  if(var_nm_lng > NC_MAX_NAME){
-    (void)fprintf(stdout,"%s: ERROR Derived variable name \"%s\" too long\n",prg_nm_get(),rnm_att->old_nm);
-    nco_exit(EXIT_FAILURE);
-  } /* end if */ 
 
-  /* Copy variable name only */
-  strcpy(var_nm,rnm_att->old_nm);
-  /* Set to attribute name alone */
+  if(!*IS_GLB_GRP_ATT){
+    var_nm_lng=strlen(rnm_att->old_nm);
+    if(var_nm_lng > NC_MAX_NAME){
+      (void)fprintf(stdout,"%s: ERROR Derived variable name \"%s\" too long\n",nco_prg_nm_get(),rnm_att->old_nm);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */ 
+    /* Copy variable name only */
+    strcpy(var_nm,rnm_att->old_nm);
+  } /* *IS_GLB_GRP_ATT */
+
+  /* Point old var_nm at att_nm name to attribute name att_nm alone */
   rnm_att->old_nm=dlm_ptr+1; 
     
-  dlm_ptr=strchr(rnm_att->new_nm,'@');	
+  dlm_ptr=strchr(rnm_att->new_nm,dlm_chr);	
   if(dlm_ptr){
     att_nm_lng=strlen(rnm_att->new_nm);
-    if((dlm_ptr-rnm_att->new_nm) < (long int)att_nm_lng) rnm_att->new_nm=dlm_ptr+1; else return 0;
+    if((dlm_ptr-rnm_att->new_nm) < (long int)att_nm_lng) rnm_att->new_nm=dlm_ptr+1; else return NCO_ERR;
   } /* endif */
-  return 1;
+
+  /* 20131016 */
+  if(strcmp(var_nm,"global") == 0){
+    *IS_GLB_GRP_ATT=True;
+  } /* endif global */
+
+
+  return NCO_NOERR;
 } /* end nco_prs_att() */
 
+char * /* O [sng] Stub of GPE applied to input path */
+nco_gpe_evl_stb /* [fnc] Apply Group Path Editing (GPE) to argument safely */
+(const gpe_sct * const gpe, /* I [sng] GPE structure, if any */
+ const char * const grp_nm_fll_in) /* I [sng] Full group name */
+{
+  /* Purpose: Apply Group Path Editing (GPE) to input full group name, return stub of result
+     NB: Function designed to make it easy for ncks to print GPE-transformed group stubs 
+     Hence returned strings may be used directly in print functions without pointers being save and free()'d
+     This kind of memory leak is acceptable since it scales only with total number of groups in printed file,
+     and does not scale with data size. */
+
+  const char fnc_nm[]="nco_gpe_evl_stb()"; /* [sng] Function name */
+  const char sls_chr='/'; /* [sng] Slash character */
+
+  char *grp_nm_stb_out; /* [sng] Returned output name. Must be free()'d in calling routine. */
+  char *grp_nm_fll_out; /* [sng] Intermediate output name. Allocated and free()'d here. */
+  char *sls_ptr; /* [sng] Pointer to slash character. Unsafe to free(). */
+
+  size_t in_lng; /* [nbr] Length of grp_nm_fll_in */
+
+  in_lng=strlen(grp_nm_fll_in);
+  if(!in_lng) (void)fprintf(stdout,"%s: WARNING %s reports grp_nm_fll_in is empty\n",nco_prg_nm_get(),fnc_nm);
+  grp_nm_fll_out=nco_gpe_evl(gpe,grp_nm_fll_in);
+
+  /* Root group has no stub */
+  if(in_lng == 1UL) return grp_nm_fll_out;
+
+  /* First level and deeper group stubs begin just after final slash */
+  sls_ptr=strrchr(grp_nm_fll_out,sls_chr);
+  assert(sls_ptr);
+  grp_nm_stb_out=(char *)strdup(sls_ptr+1UL);
+
+  if(grp_nm_fll_out) grp_nm_fll_out=(char *)nco_free(grp_nm_fll_out);
+
+  return grp_nm_stb_out;
+
+} /* end nco_gpe_evl_stb() */
+
+char * /* O [sng] Result of applying GPE to input path */
+nco_gpe_evl /* [fnc] Apply Group Path Editing (GPE) to argument */
+(const gpe_sct * const gpe, /* I [sng] GPE structure */
+ const char * const grp_nm_fll_in) /* I [sng] Full group name */
+{
+  /* Purpose: Apply Group Path Editing (GPE) to input full group name, return result
+     grp_nm_fll_in:  "Input"  path---usually full group path of object in input  file
+     grp_nm_fll_out: "Output" path---usually full group path of object in output file
+     grp_nm_fll_out: Calling routine is responsible for freeing this memory
+     grp_nm_fll_in usually is not terminated by a slash
+     grp_nm_fll_in is assumed to begin with a slash
+     The "group path" includes only groups--variable names should be omitted
+     GPE string is the path argument supplied to the GPE option */
+
+  const char fnc_nm[]="nco_gpe_evl()"; /* [sng] Function name */
+  const char sls_sng[]="/"; /* [sng] Slash string */
+  const char sls_chr='/'; /* [sng] Slash character */
+
+  char *grp_nm_fll_out=NULL; /* [sng] Returned output name. Must be free()'d in calling routine. */
+  char *grp_out; /* [sng] Mutable pointer to output name. Unsafe to free(). */
+  char *grp_nm_fll_in_dpl; /* [sng] Allocated pointer to output name. Allocated and free()'d here. */
+  char *sls_ptr; /* [sng] Pointer to slash character. Unsafe to free(). */
+  
+  int lvl_idx=0; /* [idx] Level counter (gets incremented) */
+  
+  size_t in_lng; /* [nbr] Length of grp_nm_fll_in */
+  size_t out_lng; /* [nbr] Length of grp_nm_fll_out */
+
+  /* Default */
+  in_lng=strlen(grp_nm_fll_in);
+  if(!in_lng) (void)fprintf(stdout,"%s: WARNING %s reports grp_nm_fll_in is empty\n",nco_prg_nm_get(),fnc_nm);
+  grp_nm_fll_in_dpl=(char *)strdup(grp_nm_fll_in);
+  sls_ptr=grp_out=grp_nm_fll_in_dpl;
+
+  /* Prevent attempts to dereference NULL. perform identity translation and return */
+  if(!gpe) return grp_nm_fll_in_dpl;
+
+  /* If GPE was not invoked, perform identity translation and return */
+  if(!gpe->arg) return grp_nm_fll_in_dpl;
+
+  /* Sanity checks */
+  if(grp_out[0] != '/') (void)fprintf(stdout,"%s: WARNING %s reports GPE input path %s does not begin with slash\n",nco_prg_nm_get(),fnc_nm,grp_out);
+
+  switch(gpe->md){
+  case gpe_delete:
+    /* Delete up to lvl_nbr levels by advancing one slash per level */
+    while(grp_out && (lvl_idx++ < gpe->lvl_nbr)) grp_out=strchr(grp_out+1,sls_chr);
+
+    if(grp_out){
+      /* More levels remain */
+      if(gpe->lng_cnn > 1L){
+	/* Prepend argument to remaining levels */
+	out_lng=gpe->lng_cnn+strlen(grp_out);
+	grp_nm_fll_out=(char *)nco_malloc((out_lng+1L)*sizeof(char));
+	(void)strcpy(grp_nm_fll_out,gpe->nm_cnn);
+	grp_nm_fll_out=strcat(grp_nm_fll_out,grp_out);
+      }else{
+	/* No argument to prepend */
+	grp_nm_fll_out=(char *)strdup(grp_out);
+      } /* !gpe->nm */
+    }else{ /* !grp_out */
+      /* All levels already deleted */
+      if(gpe->nm_cnn) grp_nm_fll_out=(char *)strdup(gpe->nm_cnn); else grp_nm_fll_out=(char *)strdup(sls_sng);
+    } /* !grp_out */
+    break;
+
+  case gpe_append:
+    /* Append: Append input name to GPE name */
+    out_lng=gpe->lng_cnn+in_lng;
+    grp_nm_fll_out=(char *)nco_malloc((out_lng+1L)*sizeof(char));
+    (void)strcpy(grp_nm_fll_out,gpe->nm_cnn);
+    grp_nm_fll_out=strcat(grp_nm_fll_out,grp_nm_fll_in);
+    break;
+
+  case gpe_flatten:
+    /* Delete all levels */
+    if(gpe->nm_cnn) grp_nm_fll_out=(char *)strdup(gpe->nm_cnn); else grp_nm_fll_out=(char *)strdup(sls_sng);
+    break;
+
+  case gpe_backspace:
+    /* Truncate up-to lvl_nbr levels by backspacing one slash per level */
+    while(sls_ptr && (lvl_idx++ < gpe->lvl_nbr)){
+      sls_ptr=strrchr(grp_out+1,sls_chr);
+      /* Replace slash by NUL */
+      if(sls_ptr) *sls_ptr='\0';
+    } /* end while */
+
+    if(sls_ptr){
+      /* More levels remain */
+      if(gpe->lng_cnn > 1L){
+	/* Append argument to remaining levels */
+	out_lng=strlen(grp_out)+gpe->lng_cnn;
+	grp_nm_fll_out=(char *)nco_malloc((out_lng+1L)*sizeof(char));
+	(void)strcpy(grp_nm_fll_out,grp_out);
+	grp_nm_fll_out=strcat(grp_nm_fll_out,gpe->nm_cnn);
+      }else{ /* !gpe->nm */
+	/* No argument to append */
+	grp_nm_fll_out=(char *)strdup(grp_out);
+      } /* !gpe->nm */
+    }else{ /* !sls_ptr */
+      /* All levels already truncated */
+      if(gpe->nm_cnn) grp_nm_fll_out=(char *)strdup(gpe->nm_cnn); else grp_nm_fll_out=(char *)strdup(sls_sng);
+    } /* !sls_ptr */
+    break;
+
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Final parsing results */
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
+    (void)fprintf(stdout,"%s: INFO %s reports GPE changes input grp_nm_fll_in = %s to output grp_nm_fll_out = %s\n",nco_prg_nm_get(),fnc_nm,grp_nm_fll_in,grp_nm_fll_out);
+  } /* end if */
+
+  if(grp_nm_fll_in_dpl) grp_nm_fll_in_dpl=(char *)nco_free(grp_nm_fll_in_dpl);
+
+  return grp_nm_fll_out;
+
+} /* end nco_gpe_evl() */
+
+gpe_sct * /* O [sct] Structure with dynamic memory free()'d */
+nco_gpe_free /* [fnc] Free dynamic memory of GPE structure */
+(gpe_sct * gpe) /* O [sct] GPE structure */
+{
+  /* Purpose: Free GPE structure */
+  if(gpe->arg) gpe->arg=(char *)nco_free(gpe->arg);
+  if(gpe->nm) gpe->nm=(char *)nco_free(gpe->nm);
+  if(gpe->edt) gpe->edt=(char *)nco_free(gpe->edt);
+  if(gpe->nm_cnn) gpe->nm_cnn=(char *)nco_free(gpe->nm_cnn);
+  if(gpe) gpe=(gpe_sct *)nco_free(gpe);
+  return gpe;
+} /* end nco_gpe_free() */
+
+gpe_sct * /* O [sng] GPE structure */
+nco_gpe_prs_arg /* [fnc] Parse Group Path Editing (GPE) argument */
+(const char * const gpe_arg) /* I [sng] User-specified GPE specification */
+{
+  /* Purpose: Parse user-specified Group Path Editing (GPE) argument
+     ncks -O -D 3 -G test ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 3 -G g2:1 ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 3 -G @-2 ~/nco/data/in_grp.nc ~/foo.nc */
+
+  const char fnc_nm[]="nco_gpe_prs_arg()"; /* [sng] Function name */
+
+  char *at_cp;
+  char *colon_cp;
+  char *spr_cp=NULL; /* [sng] Separator location */
+
+  gpe_sct *gpe; /* [sct] GPE structure */
+
+  /* Initialize structure */
+  /* NB: Be sure to free() all dynamic memory in nco_gpe_free() */
+  gpe=(gpe_sct *)nco_malloc(sizeof(gpe_sct));
+  gpe->arg=NULL; /* [sng] Full GPE specification (for debugging) */
+  gpe->edt=NULL; /* [sng] Editing component of full GPE specification */
+  gpe->nm=NULL; /* [sng] Group name component of full GPE specification */
+  gpe->nm_cnn=NULL; /* [sng] Canonicalized (i.e., slash-prefixed) group name */
+  gpe->lng=0L; /* [nbr] Length of user-specified group path */
+  gpe->lng_cnn=0L; /* [nbr] Length of canonicalized user-specified group path */
+  gpe->lng_edt=0L; /* [nbr] Length of editing component of full GPE specification */
+  gpe->lvl_nbr=0; /* [nbr] Number of levels to shift */
+  gpe->md=gpe_append; /* [enm] Editing mode to perform */
+  
+  /* Structure has been initialized, safe to return now on no-ops */
+  if(gpe_arg) gpe->arg=(char *)strdup(gpe_arg); else return gpe;
+
+  /* Find positions of commas and number of characters between (non-inclusive) them */
+  colon_cp=strchr(gpe->arg,':');
+  at_cp=strchr(gpe->arg,'@');
+
+  /* Basic sanity checks */
+  if(colon_cp && at_cp){
+    (void)fprintf(stdout,"%s: ERROR %s reports GPE specification \"%s\" contains both a colon ':' and an at-sign '@'\n",nco_prg_nm_get(),fnc_nm,gpe->arg);
+    nco_exit(EXIT_FAILURE);
+  } /* end if */
+  
+  if(colon_cp){
+    gpe->md=gpe_delete; /* [enm] Editing mode to perform */
+    spr_cp=colon_cp; /* [sng] Separator location */
+  } /* endif colon */
+
+  if(at_cp){
+    gpe->md=gpe_backspace; /* [enm] Editing mode to perform */
+    spr_cp=at_cp; /* [sng] Separator location */
+  } /* endif at */
+
+  if(spr_cp){
+    char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+    char *nbr_sng; /* [sng] Number string */
+    size_t nbr_lng;
+
+    gpe->nm=(char *)nco_malloc(((spr_cp-gpe->arg)+1L)*sizeof(char)); /* [sng] Group name */
+    gpe->nm=(char *)strncpy(gpe->nm,gpe->arg,spr_cp-gpe->arg); /* [sng] Group name */
+    gpe->nm[spr_cp-gpe->arg]='\0'; /* [sng] Group name */
+
+    /* Is there anything after the separator? */
+    nbr_sng=spr_cp+1L; /* [sng] Number string */
+    nbr_lng=strlen(nbr_sng);
+
+    if(nbr_lng){
+      /* Convert it */
+      gpe->lvl_nbr=(int)strtol(nbr_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      if(*sng_cnv_rcd) nco_sng_cnv_err(nbr_sng,"strtol",sng_cnv_rcd);
+    } /* end if */
+
+    if(gpe->lvl_nbr < 0 && colon_cp){
+      /* Equate negative number following colon to positive number following at-sign  */
+      gpe->md=gpe_backspace; /* [enm] Editing mode to perform */
+      gpe->lvl_nbr=-gpe->lvl_nbr;
+    } /* end if */
+
+    if(gpe->lvl_nbr < 0){
+      (void)fprintf(stdout,"%s: ERROR %s reports GPE level shift number gpe->lvl_nbr = %d is less than zero. Level shift number must not be negative.\n",nco_prg_nm_get(),fnc_nm,gpe->lvl_nbr);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+
+    if(colon_cp && !nbr_lng) gpe->md=gpe_flatten; /* [enm] Editing mode to perform */
+
+    if(at_cp && !nbr_lng) (void)fprintf(stdout,"%s: WARNING %s reports GPE specification \"%s\" specifies no level after the at-sign '@'\n",nco_prg_nm_get(),fnc_nm,gpe->arg);
+
+    gpe->edt=(char *)strdup(spr_cp); /* [sng] Editing component of full GPE specification */
+    gpe->lng_edt=strlen(gpe->edt); /* [nbr] Length of editing component of full GPE specification */
+  } /* !spr_cp */
+
+  if(!spr_cp){
+    gpe->nm=(char *)strdup(gpe->arg); /* [sng] Group name */
+    gpe->md=gpe_append; /* [enm] Editing mode to perform */
+  } /* spr_cp */
+  
+  /* Name is known, save length for later use */
+  gpe->lng=strlen(gpe->nm); /* [nbr] Length of user-specified group path */
+
+  /* Obtain "canonical" (slash-prefixed) name */
+
+  /* Slash-initiate name */
+  if(gpe->nm[0] == '/'){
+    gpe->nm_cnn=(char *)strdup(gpe->nm);
+    gpe->lng_cnn=gpe->lng;
+  }else{
+    gpe->lng_cnn=gpe->lng+1L;
+    gpe->nm_cnn=(char *)nco_malloc((gpe->lng_cnn+1L)*sizeof(char));
+    (void)strcpy(gpe->nm_cnn+1L,gpe->nm);
+    gpe->nm_cnn[0]='/';
+  } /* endif */
+
+#if 0  
+  /* Slash-terminate name */
+  if(gpe->nm[gpe->lng_cnn-1L] == '/'){
+    gpe->nm_cnn=(char *)strdup(gpe->nm);
+    gpe->lng_cnn=gpe->lng;
+  }else{
+    gpe->lng_cnn=gpe->lng+1L;
+    gpe->nm_cnn=(char *)nco_malloc((gpe->lng_cnn+1L)*sizeof(char));
+    (void)strcpy(gpe->nm_cnn,gpe->nm);
+    gpe->nm_cnn[gpe->lng_cnn-1L]='/';
+    gpe->nm_cnn[gpe->lng_cnn]='\0';
+  } /* endif */
+#endif /* !0 */  
+
+  /* Final parsing results */
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->arg = %s\n",nco_prg_nm_get(),fnc_nm,gpe->arg);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->nm = %s\n",nco_prg_nm_get(),fnc_nm,gpe->nm);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->lng = %zi\n",nco_prg_nm_get(),fnc_nm,gpe->lng);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->nm_cnn = %s\n",nco_prg_nm_get(),fnc_nm,gpe->nm_cnn);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->lng_cnn = %zi\n",nco_prg_nm_get(),fnc_nm,gpe->lng_cnn);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->edt = %s\n",nco_prg_nm_get(),fnc_nm,gpe->edt);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->lng_edt = %zi\n",nco_prg_nm_get(),fnc_nm,gpe->lng_edt);
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->md = %s\n",nco_prg_nm_get(),fnc_nm,nco_gpe_sng(gpe->md));
+    (void)fprintf(stdout,"%s: INFO %s reports gpe->lvl_nbr = %i\n",nco_prg_nm_get(),fnc_nm,gpe->lvl_nbr);
+  } /* end if */
+
+  return gpe;
+} /* end nco_gpe_prs_arg() */
+
+const char * /* O [sng] String describing GPE */
+nco_gpe_sng /* [fnc] Convert GPE enum to string */
+(const gpe_enm gpe_md) /* I [enm] GPE mode */
+{
+  switch(gpe_md){
+  case gpe_delete:
+    return "gpe_delete";
+  case gpe_append:
+    return "gpe_append";
+  case gpe_flatten:
+    return "gpe_flatten";
+  case gpe_backspace:
+    return "gpe_backspace";
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end nco_gpe_sng() */
+
 rnm_sct * /* O [sng] Structured list of old, new names */
 nco_prs_rnm_lst /* [fnc] Set old_nm, new_nm elements of rename structure */
 (const int nbr_rnm, /* I [nbr] Number of elements in rename list */
@@ -901,7 +1354,7 @@ nco_prs_rnm_lst /* [fnc] Set old_nm, new_nm elements of rename structure */
     lng_arg_2=rnm_arg[idx]+strlen(rnm_arg[idx])-comma_1_cp-1; 
     
     /* Exit if length of either argument is zero */
-    if(lng_arg_1 <= 0 || lng_arg_2 <= 0){
+    if(lng_arg_1 <= 0L || lng_arg_2 <= 0L){
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
     } /* end if */
@@ -916,7 +1369,7 @@ nco_prs_rnm_lst /* [fnc] Set old_nm, new_nm elements of rename structure */
     
   } /* end loop over rnm_lst */
 
-  if(dbg_lvl_get() >= nco_dbg_io){
+  if(nco_dbg_lvl_get() >= nco_dbg_io){
     for(idx=0;idx<nbr_rnm;idx++){
       (void)fprintf(stderr,"%s\n",rnm_lst[idx].old_nm);
       (void)fprintf(stderr,"%s\n",rnm_lst[idx].new_nm);
diff --git a/src/nco/nco_att_utl.h b/src/nco/nco_att_utl.h
index 9d12ff8..7e932d6 100644
--- a/src/nco/nco_att_utl.h
+++ b/src/nco/nco_att_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_att_utl.h,v 1.35 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_att_utl.h,v 1.47 2013/07/18 20:11:04 zender Exp $ */
 
 /* Purpose: Attribute utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,7 +18,10 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* strcasecmp() */
+#endif /* !HAVE_STRINGS_H */
 #include <time.h> /* machine time */
 
 /* 3rd party vendors */
@@ -32,6 +35,9 @@
 #include "nco_lst_utl.h" /* List utilities */
 #include "nco_mmr.h" /* Memory management */
 #include "nco_mss_val.h" /* Missing value utilities */
+#ifdef _MSC_VER
+# include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
+#endif /* !_MSC_VER */
 #include "nco_scm.h" /* Software configuration management */
 #include "nco_sng_utl.h" /* String utilities */
 
@@ -77,7 +83,30 @@ nco_prs_aed_lst /* [fnc] Parse user-specified attribute edits into structure lis
 int /* [flg] Variable and attribute names are conjoined */
 nco_prs_att /* [fnc] Parse conjoined variable and attribute names */
 (rnm_sct * const rnm_att, /* I/O [sct] Structure [Variable:]Attribute name on input, Attribute name on output */
- char * const var_nm); /* O [sng] Variable name, if any */
+ char * const var_nm, /* O [sng] Variable name, if any */
+ nco_bool * const IS_GLB_GRP_ATT); /* O [flg] Attribute is Global or Group attribute */
+
+gpe_sct * /* O [sng] GPE structure */
+nco_gpe_prs_arg /* [fnc] Parse Group Path Editing (GPE) argument */
+(const char * const gpe_arg); /* I [sng] User-specified GPE specification */
+
+char * /* O [sng] Result of applying GPE to input path */
+nco_gpe_evl /* [fnc] Apply Group Path Editing (GPE) to argument */
+(const gpe_sct * const gpe, /* I [sng] GPE structure */
+ const char * const grp_nm_fll_in); /* I [sng] Full group name */
+
+char * /* O [sng] Stub of GPE applied to input path */
+nco_gpe_evl_stb /* [fnc] Find stub of Group Path Editing (GPE) applied to argument */
+(const gpe_sct * const gpe, /* I [sng] GPE structure */
+ const char * const grp_nm_fll_in); /* I [sng] Full group name */
+
+gpe_sct * /* O [sct] Structure with dynamic memory free()'d */
+nco_gpe_free /* [fnc] Free dynamic memory of GPE structure */
+(gpe_sct * const gpe); /* O [sct] GPE structure */
+
+const char * /* O [sng] String describing GPE */
+nco_gpe_sng /* [fnc] Convert GPE enum to string */
+(const gpe_enm gpe_md); /* I [enm] GPE mode */
 
 rnm_sct * /* O [sng] Structured list of old, new names */
 nco_prs_rnm_lst /* [fnc] Set old_nm, new_nm elements of rename structure */
diff --git a/src/nco/nco_aux.c b/src/nco/nco_aux.c
index d4c9217..280930d 100644
--- a/src/nco/nco_aux.c
+++ b/src/nco/nco_aux.c
@@ -1,6 +1,6 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_aux.c,v 1.37 2012/02/13 23:09:50 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_aux.c,v 1.48 2013/10/22 03:03:45 zender Exp $ */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -17,7 +17,7 @@
 
 #include "nco_aux.h" /* Auxiliary coordinates */
 
-int 
+nco_bool 
 nco_find_lat_lon
 (int nc_id,
  char var_nm_lat[], 
@@ -50,55 +50,58 @@ nco_find_lat_lon
 
   long lenp;
 
-  nc_type var_type; /* [enm] variable type */
-  
+  nc_type var_typ; /* [enm] variable type */
+
   /* Make sure CF tag exists. Currently require CF-1.0 value */
   if(NCO_GET_ATT_CHAR(nc_id,NC_GLOBAL,"Conventions",value) || !strstr(value,"CF-1.0")){
-    (void)fprintf(stderr,"%s: WARNING %s reports file \"Convention\" attribute is missing or not equal to \"CF-1.0\". Auxiliary coordinate support (i.e., the -X option) cannot be expected to behave well file does not support CF-1.0 metadata conventions. Continuing anyway...\n",prg_nm_get(),fnc_nm);
+    if(nco_dbg_lvl_get() >= nco_dbg_dev)
+    (void)fprintf(stderr,"%s: WARNING %s reports file \"Convention\" attribute is missing or not equal to \"CF-1.0\". Auxiliary coordinate support (i.e., the -X option) cannot be expected to behave well file does not support CF-1.0 metadata conventions. Continuing anyway...\n",nco_prg_nm_get(),fnc_nm);
   } /* !CF */
-  
+
   /* Get number of variables */
   rcd=nco_inq_nvars(nc_id,&nvars);
-  
+
   /* For each variable, see if standard name is latitude or longitude */
   for(idx=0;idx<nvars && ret<2;idx++){
-    nco_inq_var(nc_id,idx,var_nm,&var_type,&var_dmn_nbr,var_dimid,&var_att_nbr);
+    nco_inq_var(nc_id,idx,var_nm,&var_typ,&var_dmn_nbr,var_dimid,&var_att_nbr);
     lenp=0;
     if(!nco_inq_attlen_flg(nc_id,idx,"standard_name",&lenp)){
       NCO_GET_ATT_CHAR(nc_id,idx,"standard_name",value);
       value[lenp]='\0';
       if(strcmp(value,"latitude") == 0){
-	strcpy(var_nm_lat,var_nm);
-	*lat_id=idx;
-	
-	/* Get units; assume same for both lat and lon */
-	rcd=nco_inq_attlen(nc_id,idx,"units",&lenp);
-	if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_find_lat_lon() reports CF convention requires \"latitude\" to have units attribute\n");
-	*units=(char *)nco_malloc((lenp+1L)*sizeof(char *));
-	NCO_GET_ATT_CHAR(nc_id,idx,"units",*units);
-	units[lenp]='\0';
-	
-	if(var_dmn_nbr > 1) (void)fprintf(stderr,"%s: WARNING %s reports latitude variable %s has %d dimensions. NCO only supports hyperslabbing of auxiliary coordinate variables with a single dimension. Continuing with unpredictable results...\n",prg_nm_get(),fnc_nm,var_nm,var_dmn_nbr);
-
-	/* Assign type; assumed same for both lat and lon */
-	*crd_typ=var_type;
-	ret++;
+        strcpy(var_nm_lat,var_nm);
+        *lat_id=idx;
+
+        /* Get units; assume same for both lat and lon */
+        rcd=nco_inq_attlen(nc_id,idx,"units",&lenp);
+        if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_find_lat_lon() reports CF convention requires \"latitude\" to have units attribute\n");
+        *units=(char *)nco_malloc((lenp+1L)*sizeof(char *));
+        NCO_GET_ATT_CHAR(nc_id,idx,"units",*units);
+        units[lenp]='\0';
+
+        if(var_dmn_nbr > 1) (void)fprintf(stderr,"%s: WARNING %s reports latitude variable %s has %d dimensions. NCO only supports hyperslabbing of auxiliary coordinate variables with a single dimension. Continuing with unpredictable results...\n",nco_prg_nm_get(),fnc_nm,var_nm,var_dmn_nbr);
+
+        /* Assign type; assumed same for both lat and lon */
+        *crd_typ=var_typ;
+        ret++;
       } /* end if var is lattitude */
-      
+
       if(strcmp(value,"longitude") == 0){
-	strcpy(var_nm_lon,var_nm);
-	*lon_id=idx;
-	ret++;
+        strcpy(var_nm_lon,var_nm);
+        *lon_id=idx;
+        ret++;
       } /* end if var is longitude */
-      
+
     } /* end if standard_name */
-    
+
   } /* end loop over vars */
-  
-  /* Die if both not found */
-  if(ret != 2) nco_err_exit(rcd,"nco_find_lat_lon() unable to identify lat/lon auxiliary coordinate variables.");
- 
-  return rcd;
+
+
+  if(ret != 2){
+    if(nco_dbg_lvl_get() >= nco_dbg_dev) (void)fprintf(stdout,"nco_find_lat_lon() unable to identify lat/lon auxiliary coordinate variables.\n");
+    return False;
+  } else return True;
+
 
 } /* end nco_find_lat_lon() */
 
@@ -115,13 +118,13 @@ nco_get_dmn_info
   
   int rcd=NC_NOERR;
   
-  nc_type var_type;                   /* variable type */
+  nc_type var_typ;                   /* variable type */
   int var_dimid[NC_MAX_VAR_DIMS];    /* dimension ids */
   int var_att_nbr;                      /* number of attributes */
   int var_dmn_nbr;                      /* number of dims */
   
   /* Get dimension information */
-  rcd=nco_inq_var(nc_id,var_id,0,&var_type,&var_dmn_nbr,var_dimid,&var_att_nbr);
+  rcd=nco_inq_var(nc_id,var_id,0,&var_typ,&var_dmn_nbr,var_dimid,&var_att_nbr);
   if(rcd == NC_NOERR){
     *dimid=var_dimid[0];
     rcd=nco_inq_dimlen(nc_id,var_dimid[0],dmn_sz);
@@ -144,9 +147,9 @@ nco_aux_evl
      match rectangular region specified by -X arguments.
      Intended for use with non-monotonic grids
      Requires CF-1.0 conventions
-     Uses lat/lon centers rather than cell_bounds to detect matches
+     Uses latitude/longitude centers rather than cell_bounds to detect matches
      Code assumes units are degrees if they are not radians */
-  
+
   const char fnc_nm[]="nco_aux_evl()"; /* [sng] Function name */
 
   char *units=NULL; /* fxm TODO nco925: "units" value needs dynamically allocated size in case value exceeds NC_MAX_NAME */
@@ -154,10 +157,10 @@ nco_aux_evl
   char dmn_nm[NC_MAX_NAME];
   char var_nm_lat[NC_MAX_NAME];
   char var_nm_lon[NC_MAX_NAME];
-  
+
   dmn_sct lat;
   dmn_sct lon;
-  
+
   double lat_crr; /* [dgr] Current cell latitude */
   double lon_crr; /* [dgr] Current cell longitude */
 
@@ -165,7 +168,7 @@ nco_aux_evl
   float lat_max; /* [dgr] Upper right longitude of bounding rectangle */
   float lon_min; /* [dgr] Lower left longitude of bounding rectangle */
   float lon_max; /* [dgr] Upper right latitude of bounding rectangle */
-  
+
   int aux_idx; /* [idx] Index over user -X options */
   int cll_grp_nbr=0; /* [nbr] Number of groups of cells within this bounding box */
   int cll_idx; /* [idx] Cell index */
@@ -176,22 +179,30 @@ nco_aux_evl
   int lat_id;
   int lon_id;
   int rcd=NC_NOERR;
-  
-  lmt_sct **lmt=0; /* [sct] List of returned lmt structures */
-  
+
+  lmt_sct **lmt=NULL; /* [sct] List of returned lmt structures */
+
   long dmn_sz=0;
-  
+
   nc_type crd_typ;
-  
+
   void *vp_lat; /* [dgr] Latitude coordinate array, float or double */
   void *vp_lon; /* [dgr] Longitude coordinate array, float or double */
-  
+
+  nco_bool has_lat_lon;
+
+  *lmt_nbr=0;
+
   /* Obtain lat/lon variable names */
-  rcd+=nco_find_lat_lon(in_id,var_nm_lat,var_nm_lon,&units,&lat_id,&lon_id,&crd_typ);
-  
+  has_lat_lon=nco_find_lat_lon(in_id,var_nm_lat,var_nm_lon,&units,&lat_id,&lon_id,&crd_typ);
+
+  if (has_lat_lon == False){
+    return NULL;
+  }
+
   /* Obtain dimension information of lat/lon coordinates */
   rcd+=nco_get_dmn_info(in_id,lat_id,dmn_nm,&dmn_id,&dmn_sz);
-  
+
   if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_aux_evl() unable get past nco_get_dmn_info()\n");
 
   /* Load latitude/longitude variables needed to search for region matches */
@@ -205,29 +216,34 @@ nco_aux_evl
   vp_lon=(void *)nco_malloc(dmn_sz*nco_typ_lng(lon.type));
   rcd+=nco_get_vara(in_id,lat_id,&lat.srt,&lat.sz,vp_lat,lat.type);
   rcd+=nco_get_vara(in_id,lon_id,&lon.srt,&lon.sz,vp_lon,lon.type);
-  
-  *lmt_nbr=0;
-  
-  lmt_sct base;
-  base.nm=(char *)strdup(dmn_nm);
-  base.lmt_typ=lmt_dmn_idx;
-  base.is_usr_spc_lmt=True; 
-  base.is_usr_spc_min=True; 
-  base.is_usr_spc_max=True;
-  base.srd_sng=(char *)strdup("1");
-  base.is_rec_dmn=0;
-  base.id=dmn_id;
-  base.min_idx=0;
-  base.max_idx=0;
-  base.srt=0L;
-  base.end=0L;
-  base.cnt=0L;
-  base.srd=1L;
-  
+
+  lmt_sct lmt_tpl;
+  (void)nco_lmt_init(&lmt_tpl);
+  lmt_tpl.nm=(char *)strdup(dmn_nm);
+  lmt_tpl.lmt_typ=lmt_dmn_idx;
+  lmt_tpl.is_usr_spc_lmt=True; 
+  lmt_tpl.is_usr_spc_min=True; 
+  lmt_tpl.is_usr_spc_max=True;
+  lmt_tpl.flg_mro=False;
+  lmt_tpl.srd_sng=(char *)strdup("1");
+  lmt_tpl.drn_sng=NULL;
+  lmt_tpl.drn_sng=NULL;
+  lmt_tpl.mro_sng=NULL;
+  lmt_tpl.mro_sng=NULL;
+  lmt_tpl.is_rec_dmn=0;
+  lmt_tpl.id=dmn_id;
+  lmt_tpl.min_idx=0;
+  lmt_tpl.max_idx=0;
+  lmt_tpl.srt=0L;
+  lmt_tpl.end=0L;
+  lmt_tpl.cnt=0L;
+  lmt_tpl.srd=1L;
+  lmt_tpl.drn=1L;
+
   /* malloc() lmt structure to return
-     No way to know exact size in advance though maximum is about dim_sz/2 */
+  No way to know exact size in advance though maximum is about dim_sz/2 */
   int MAX_LMT_NBR=dmn_sz/2;
-  
+
   if(aux_nbr > 0) lmt=(lmt_sct **)nco_malloc(MAX_LMT_NBR*sizeof(lmt_sct *));
 
   /* Loop over user-specified bounding boxes */
@@ -241,11 +257,11 @@ nco_aux_evl
     cll_nbr_ttl=0; /* [nbr] Total number of cells within this bounding box */
     cll_grp_nbr=0; /* [nbr] Number of groups of cells within this bounding box */
     if(lon_min == lon_max){
-      (void)fprintf(stderr,"%s: ERROR %s reports degenerate auxiliary coordinate hyperslab with lon_min = lon_max = %g. Auxiliary coordinates do not support degenerate hyperlabs yet. This is TODO nco1010. If this feature is important to you, post your vexation to sourceforge and we will work on it.\n",prg_nm_get(),fnc_nm,lon_min);
+      (void)fprintf(stderr,"%s: ERROR %s reports degenerate auxiliary coordinate hyperslab with lon_min = lon_max = %g. Auxiliary coordinates do not support degenerate hyperlabs yet. This is TODO nco1010. If this feature is important to you, post your vexation to sourceforge and we will work on it.\n",nco_prg_nm_get(),fnc_nm,lon_min);
       nco_exit(EXIT_FAILURE);
     } /* endif */
     if(lat_min == lat_max){
-      (void)fprintf(stderr,"%s: ERROR %s reports degenerate auxiliary coordinate hyperslab with lat_min = lat_max = %g. Auxiliary coordinates do not support degenerate hyperlabs yet. This is TODO nco1010. If this feature is important to you, post your vexation to sourceforge and we will work on it.\n",prg_nm_get(),fnc_nm,lat_min);
+      (void)fprintf(stderr,"%s: ERROR %s reports degenerate auxiliary coordinate hyperslab with lat_min = lat_max = %g. Auxiliary coordinates do not support degenerate hyperlabs yet. This is TODO nco1010. If this feature is important to you, post your vexation to sourceforge and we will work on it.\n",nco_prg_nm_get(),fnc_nm,lat_min);
       nco_exit(EXIT_FAILURE);
     } /* endif */
     /* Loop over auxiliary coordinate cells */
@@ -253,50 +269,51 @@ nco_aux_evl
       if(lat.type == NC_FLOAT) lat_crr=((float *)vp_lat)[cll_idx]; else lat_crr=((double *)vp_lat)[cll_idx];
       if(lon.type == NC_FLOAT) lon_crr=((float *)vp_lon)[cll_idx]; else lon_crr=((double *)vp_lon)[cll_idx];
       if(lon_crr >= lon_min && lon_crr <= lon_max &&
-	 lat_crr >= lat_min && lat_crr <= lat_max){
-	if(cll_idx_min == -1){
-	  /* First cell within current bounding box */
-	  cll_idx_min=cll_idx;
-	  cll_nbr_cns=1;
-	}else if(cll_idx == cll_idx_min+cll_nbr_cns){
-	  /* Later, contiguous cell within current bounding box */
-	  cll_nbr_cns++;
-	} /* end found matching cell */
+        lat_crr >= lat_min && lat_crr <= lat_max){
+          if(cll_idx_min == -1){
+            /* First cell within current bounding box */
+            cll_idx_min=cll_idx;
+            cll_nbr_cns=1;
+          }else if(cll_idx == cll_idx_min+cll_nbr_cns){
+            /* Later, contiguous cell within current bounding box */
+            cll_nbr_cns++;
+          } /* end found matching cell */
       }else if(cll_idx_min != -1){
-	/* Current cell is not within bounding box though immediately previous cell is */
-	sprintf(cll_idx_sng,"%d",cll_idx_min);
-	base.min_sng=(char *)strdup(cll_idx_sng);
-	base.min_idx=base.srt=cll_idx_min;
-	sprintf(cll_idx_sng,"%d",cll_idx_min+cll_nbr_cns-1);
-	base.max_sng=(char *)strdup(cll_idx_sng);
-	base.max_idx=base.end=cll_idx_min+cll_nbr_cns-1;
-	base.cnt=cll_nbr_cns;
-	(*lmt_nbr)++;
-	if(*lmt_nbr > MAX_LMT_NBR) nco_err_exit(0,"%s: Number of slabs exceeds allocated mamory");
-	lmt[(*lmt_nbr)-1]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
-	*lmt[(*lmt_nbr)-1]=base;
-	cll_grp_nbr++;
-	cll_nbr_ttl+=cll_nbr_cns;
-	/* Indicate that next cell, if any, in this bounding box requires new limit structure */
-	cll_idx_min=-1;
+        /* Current cell is not within bounding box though immediately previous cell is */
+        sprintf(cll_idx_sng,"%d",cll_idx_min);
+        lmt_tpl.min_sng=(char *)strdup(cll_idx_sng);
+        lmt_tpl.min_idx=lmt_tpl.srt=cll_idx_min;
+        sprintf(cll_idx_sng,"%d",cll_idx_min+cll_nbr_cns-1);
+        lmt_tpl.max_sng=(char *)strdup(cll_idx_sng);
+        lmt_tpl.max_idx=lmt_tpl.end=cll_idx_min+cll_nbr_cns-1;
+        lmt_tpl.cnt=cll_nbr_cns;
+        (*lmt_nbr)++;
+        if(*lmt_nbr > MAX_LMT_NBR) nco_err_exit(0,"%s: Number of slabs exceeds allocated mamory");
+        lmt[(*lmt_nbr)-1]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+        *lmt[(*lmt_nbr)-1]=lmt_tpl;
+        cll_grp_nbr++;
+        cll_nbr_ttl+=cll_nbr_cns;
+        /* Indicate that next cell, if any, in this bounding box requires new limit structure */
+        cll_idx_min=-1;
       } /* end if one or more consecutive matching cells */
     } /* end loop over cells */
-    if(dbg_lvl_get() > nco_dbg_scl) (void)fprintf(stdout,"%s: %s reports bounding-box %g <= %s <= %g and %g <= %s <= %g brackets %d distinct group(s) comprising %d total gridpoint(s)\n",prg_nm_get(),fnc_nm,lon_min,var_nm_lon,lon_max,lat_min,var_nm_lat,lat_max,cll_grp_nbr,cll_nbr_ttl); 
+    if(nco_dbg_lvl_get() > nco_dbg_scl) (void)fprintf(stdout,"%s: %s reports bounding-box %g <= %s <= %g and %g <= %s <= %g brackets %d distinct group(s) comprising %d total gridpoint(s)\n",nco_prg_nm_get(),fnc_nm,lon_min,var_nm_lon,lon_max,lat_min,var_nm_lat,lat_max,cll_grp_nbr,cll_nbr_ttl); 
   } /* end loop over user supplied -X options */
 
   /* Free allocated memory */
   if(units) units=(char *)nco_free(units);
   if(vp_lat) vp_lat=nco_free(vp_lat);
   if(vp_lon) vp_lon=nco_free(vp_lon);
-  
+
   /* With some loss of generality, we assume cell-based coordinates are not 
-     record coordinates spanning multiple files. Thus finding no cells within
-     any bounding box constitutes a domain error. */
+  record coordinates spanning multiple files. Thus finding no cells within
+  any bounding box constitutes a domain error. */
   if(*lmt_nbr == 0){
-    (void)fprintf(stdout,"%s: ERROR %s reports that none of the %d specified auxiliary-coordinate bounding-box(es) contain any latitude/longitude coordinate pairs. This condition was not flagged as an error until 20110221. Prior to that, when no coordinates were in any of the user-specified auxiliary-coordinate hyperslab(s), NCO mistakenly returned the entire coordinate range as being within the hyperslab(s).\n",prg_nm_get(),fnc_nm,aux_nbr);
+    (void)fprintf(stdout,"%s: ERROR %s reports that none of the %d specified auxiliary-coordinate bounding-box(es) contain any latitude/longitude coordinate pairs. This condition was not flagged as an error until 20110221. Prior to that, when no coordinates were in any of the user-specified auxiliary-coordinate hyperslab(s), NCO mistakenly returned the entire coordinate range as being within the hyperslab(s).\n",nco_prg_nm_get(),fnc_nm,aux_nbr);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  
+
+  lmt=(lmt_sct **)nco_realloc(lmt,(*lmt_nbr)*sizeof(lmt_sct *));
   return lmt;
 } /* end nco_aux_evl() */
 
diff --git a/src/nco/nco_aux.h b/src/nco/nco_aux.h
index f58ad60..a6e028b 100644
--- a/src/nco/nco_aux.h
+++ b/src/nco/nco_aux.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_aux.h,v 1.14 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_aux.h,v 1.16 2013/05/03 19:54:12 pvicente Exp $ */
 
 /* Purpose: Sub-set cell-based grids using auxiliary coordinate variable */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -36,7 +36,7 @@ nco_aux_evl
  char *aux_arg[],
  int *lmt_nbr);
 
-int
+nco_bool
 nco_find_lat_lon
 (int ncid, 
  char var_nm_lat[], 
diff --git a/src/nco/nco_bnr.c b/src/nco/nco_bnr.c
index 04d6b03..29b1f6d 100644
--- a/src/nco/nco_bnr.c
+++ b/src/nco/nco_bnr.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_bnr.c,v 1.22 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_bnr.c,v 1.25 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Binary write utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -16,11 +16,11 @@ nco_bnr_open /* [fnc] Open unformatted binary data file for writing */
   FILE *fp_bnr; /* [fl] Unformatted binary output file handle */
   /* Open output file */
   if((fp_bnr=fopen(fl_bnr,"w")) == NULL){
-    (void)fprintf(stderr,"%s: ERROR unable to open binary output file %s\n",prg_nm_get(),fl_bnr);
+    (void)fprintf(stderr,"%s: ERROR unable to open binary output file %s\n",nco_prg_nm_get(),fl_bnr);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  if(dbg_lvl_get() > 1) (void)fprintf(stdout,"%s: Opened binary file %s\n",prg_nm_get(),fl_bnr);
-  if(dbg_lvl_get() > 2) (void)fprintf(stdout,"Variable(s): Name (native type, # elements x bytes per element):\n");
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stdout,"%s: Opened binary file %s\n",nco_prg_nm_get(),fl_bnr);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"Variable(s): Name (native type, # elements x bytes per element):\n");
   return fp_bnr; /* O [fl] Unformatted binary output file handle */
 } /* end nco_bnr_open() */
 
@@ -34,11 +34,11 @@ nco_bnr_close /* [fnc] Close unformatted binary data file for writing */
   /* Close output file */
   rcd=fclose(fp_bnr);
   if(rcd != 0){
-    (void)fprintf(stderr,"%s: ERROR unable to close binary output file %s\n",prg_nm_get(),fl_bnr);
+    (void)fprintf(stderr,"%s: ERROR unable to close binary output file %s\n",nco_prg_nm_get(),fl_bnr);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  if(dbg_lvl_get() > 2) (void)fprintf(stdout,"\n");
-  if(dbg_lvl_get() > 1) (void)fprintf(stdout,"%s: Closed binary file %s\n",prg_nm_get(),fl_bnr);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"\n");
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stdout,"%s: Closed binary file %s\n",nco_prg_nm_get(),fl_bnr);
   return rcd; /* O [rcd] Return code */
 } /* end nco_bnr_close() */
 
@@ -58,10 +58,10 @@ nco_bnr_wrt /* [fnc] Write unformatted binary data */
   /* Write unformatted data to binary output file */
   wrt_nbr=fwrite(void_ptr,(size_t)nco_typ_lng(var_typ),(size_t)var_sz,fp_bnr);
   if(wrt_nbr != var_sz){
-    (void)fprintf(stderr,"%s: ERROR only succeeded in writing %ld of %ld elements of variable %s\n",prg_nm_get(),wrt_nbr,var_sz,var_nm);
+    (void)fprintf(stderr,"%s: ERROR only succeeded in writing %ld of %ld elements of variable %s\n",nco_prg_nm_get(),wrt_nbr,var_sz,var_nm);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  if(dbg_lvl_get() > 2) (void)fprintf(stdout,"%s (%s, %ld x %lu b), ",var_nm,c_typ_nm(var_typ),var_sz,(unsigned long)nco_typ_lng(var_typ));
-  if(dbg_lvl_get() > 0) (void)fflush(stderr);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s (%s, %ld x %lu b), ",var_nm,c_typ_nm(var_typ),var_sz,(unsigned long)nco_typ_lng(var_typ));
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fflush(stderr);
   return wrt_nbr; /* O [nbr] Number of elements successfully written */
 } /* end nco_bnr_wrt() */
diff --git a/src/nco/nco_bnr.h b/src/nco/nco_bnr.h
index 58b5eae..25770b6 100644
--- a/src/nco/nco_bnr.h
+++ b/src/nco/nco_bnr.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_bnr.h,v 1.19 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_bnr.h,v 1.20 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: Binary write utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco/nco_cln_utl.c b/src/nco/nco_cln_utl.c
index 1232b1f..e1b09d1 100644
--- a/src/nco/nco_cln_utl.c
+++ b/src/nco/nco_cln_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cln_utl.c,v 1.34 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cln_utl.c,v 1.46 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Calendar utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -10,13 +10,13 @@
 
 /* Arrays to hold calendar type units */
 /* Format: year,month,day,hour,min,sec,origin,offset */   
-double DATA_360[8]={31104000,2592000,86400,3600,  60  ,1,0.0,0.0};
-double DATA_365[8]={31536000,2628000,86400,3600.0,60.0,1,0.0,0.0};
+double DATA_360[8]={31104000.0,2592000.0,86400.0,3600.0,60.0,1,0.0,0.0};
+double DATA_365[8]={31536000.0,2628000.0,86400.0,3600.0,60.0,1,0.0,0.0};
 
 /* Days in months */
-int DAYS360[12]={30,30,30,30,30,30,30,30,30,30,30,30};
-int DAYS365[12]={31,28,31,30,31,30,31,31,30,31,30,31};
-int DAYS366[12]={31,29,31,30,31,30,31,31,30,31,30,31};
+int DAYS_PER_MONTH_360[12]={30,30,30,30,30,30,30,30,30,30,30,30};
+int DAYS_PER_MONTH_365[12]={31,28,31,30,31,30,31,31,30,31,30,31};
+int DAYS_PER_MONTH_366[12]={31,29,31,30,31,30,31,31,30,31,30,31};
 
 int /* O [nbr] Number of days to end of month */
 nco_nd2endm /* [fnc] Compute number of days to end of month */
@@ -31,7 +31,7 @@ nco_nd2endm /* [fnc] Compute number of days to end of month */
   int nbr_day_2_mth_end;
   
   if(mth < 1 || mth > 12 || day < 0){
-    (void)fprintf(stdout,"%s: ERROR nco_nd2endm() reports mth = %d, day = %d\n",prg_nm_get(),mth,day);
+    (void)fprintf(stdout,"%s: ERROR nco_nd2endm() reports mth = %d, day = %d\n",nco_prg_nm_get(),mth,day);
     nco_exit(EXIT_FAILURE);
   } /* end if */
   
@@ -137,17 +137,18 @@ nco_newdate /* [fnc] Compute date a specified number of days from input date */
 /* UDUnits2 routines */
 
 int /* [rcd] Return code */
-nco_cln_clc_dff /* [fnc] UDUnits2 Compute difference between two co-ordinate units */
+nco_cln_clc_dff /* [fnc] UDUnits2 Compute difference between two coordinate units */
 (const char *fl_unt_sng, /* I [ptr] units attribute string from disk */
  const char *fl_bs_sng, /* I [ptr] units attribute string from disk */
  double crr_val,
- double *og_val) /* O difference between two units strings */
+ double *og_val) /* O [] Difference between two units strings */
 {
   const char fnc_nm[]="nco_cln_clc_dff()"; /* [sng] Function name */
   
+  cv_converter *ut_cnv; /* UDUnits converter */
+
   int ut_rcd; /* [enm] UDUnits2 status */
   
-  cv_converter *ut_cnv; /* UDUnits converter */
   ut_system *ut_sys;
   ut_unit *ut_sct_in; /* UDUnits structure, input units */
   ut_unit *ut_sct_out; /* UDUnits structure, output units */
@@ -155,80 +156,84 @@ nco_cln_clc_dff /* [fnc] UDUnits2 Compute difference between two co-ordinate uni
   /* Quick return if units identical */
   if(!strcmp(fl_unt_sng,fl_bs_sng)){
     *og_val=crr_val;  
-    return EXIT_SUCCESS;
+    return NCO_NOERR;
   } /* end if */
   
   /* When empty, ut_read_xml() uses environment variable UDUNITS2_XML_PATH, if any
      Otherwise it uses default initial location hardcoded when library was built */
-  if(dbg_lvl_get() >= nco_dbg_vrb) ut_set_error_message_handler(ut_write_to_stderr); else ut_set_error_message_handler(ut_ignore);
+  if(nco_dbg_lvl_get() >= nco_dbg_vrb) ut_set_error_message_handler(ut_write_to_stderr); else ut_set_error_message_handler(ut_ignore);
   ut_sys=ut_read_xml(NULL);
   if(ut_sys == NULL){
-    (void)fprintf(stdout,"%s: %s() failed to initialize UDUnits2 library\n",prg_nm_get(),fnc_nm);
-    return EXIT_FAILURE; /* Failure */
+    (void)fprintf(stdout,"%s: %s() failed to initialize UDUnits2 library\n",nco_prg_nm_get(),fnc_nm);
+    return NCO_ERR; /* Failure */
   } /* end if err */ 
   
   /* Units string to convert from */
   ut_sct_in=ut_parse(ut_sys,fl_unt_sng,UT_ASCII); 
-  if(ut_sct_in == NULL){ /* Problem with 'units' attribute */
+  if(!ut_sct_in){ /* Problem with 'units' attribute */
     ut_rcd=ut_get_status(); /* [enm] UDUnits2 status */
     if(ut_rcd == UT_BAD_ARG) (void)fprintf(stderr,"ERROR: empty units attribute string\n");
     if(ut_rcd == UT_SYNTAX) (void)fprintf(stderr,"ERROR: units attribute \"%s\" has a syntax error\n",fl_unt_sng);
     if(ut_rcd == UT_UNKNOWN) (void)fprintf(stderr,"ERROR: units attribute \"%s\" is not listed in UDUnits2 SI system database\n",fl_unt_sng);
-    return EXIT_FAILURE; /* Failure */
+    return NCO_ERR; /* Failure */
   } /* endif coordinate on disk has no units attribute */
 
   /* Units string to convert to */
   ut_sct_out=ut_parse(ut_sys,fl_bs_sng,UT_ASCII); 
-  if(ut_sct_out == NULL){ /* Problem with 'units' attribute */
+  if(!ut_sct_out){ /* Problem with 'units' attribute */
     ut_rcd=ut_get_status(); /* [enm] UDUnits2 status */
     if(ut_rcd == UT_BAD_ARG) (void)fprintf(stderr,"ERROR: Empty units attribute string\n");
     if(ut_rcd == UT_SYNTAX) (void)fprintf(stderr,"ERROR: units attribute  \"%s\" has a syntax error\n",fl_bs_sng);
     if(ut_rcd == UT_UNKNOWN) (void)fprintf(stderr,"ERROR: units attribute \"%s\" is not listed in UDUnits2 SI system database\n",fl_bs_sng);
-    return EXIT_FAILURE; /* Failure */
+    return NCO_ERR; /* Failure */
   } /* endif */
 
   /* Create converter */
   ut_cnv=ut_get_converter(ut_sct_in,ut_sct_out); /* UDUnits converter */
-  if(ut_cnv == NULL){
+  if(!ut_cnv){
     ut_rcd=ut_get_status(); /* [enm] UDUnits2 status */
     if(ut_rcd == UT_BAD_ARG) (void)fprintf(stderr,"WARNING: One of units, %s or %s, is NULL\n",fl_bs_sng,fl_unt_sng);
     if(ut_rcd == UT_NOT_SAME_SYSTEM) (void)fprintf(stderr,"WARNING: Units %s and %s belong to different unit systems\n",fl_bs_sng,fl_unt_sng);
     if(ut_rcd == UT_MEANINGLESS) (void)fprintf(stderr,"WARNING: Conversion between user-specified unit \"%s\" and file units \"%s\" is meaningless\n",fl_bs_sng,fl_unt_sng);
-    return EXIT_FAILURE; /* Failure */
+    return NCO_ERR; /* Failure */
   } /* endif */
 
-  /* Finally do the conversion  */
+  /* Convert */
   *og_val=cv_convert_double(ut_cnv,crr_val);
   
-  if(dbg_lvl_get() > nco_dbg_std) fprintf(stderr, "%s: INFO %s() reports difference between systems \"%s\" and \"%s\" is %f\n",prg_nm_get(),fnc_nm,fl_unt_sng,fl_bs_sng,*og_val);
+  if(nco_dbg_lvl_get() >= nco_dbg_var) fprintf(stderr, "%s: INFO %s() reports conversion between systems \"%s\" and \"%s\" is %f\n",nco_prg_nm_get(),fnc_nm,fl_unt_sng,fl_bs_sng,*og_val);
 
-  ut_free_system(ut_sys); /* Free memory taken by UDUnits library */
   ut_free(ut_sct_in);
   ut_free(ut_sct_out);
   cv_free(ut_cnv);
+  ut_free_system(ut_sys); /* Free memory taken by UDUnits library */
 
-  return EXIT_SUCCESS;
+  return NCO_NOERR;
 }  /* end UDUnits2 nco_cln_clc_dff() */
 
-int /* [rcd] Successful conversion returns 0 */
+int /* [rcd] Successful conversion returns NCO_NOERR */
 nco_cln_prs_tm /* UDUnits2 Extract time stamp from parsed UDUnits string */
 (const char *unt_sng, /* I [ptr] units attribute string */
  tm_cln_sct *tm_in) /*  O [sct] struct to be populated */             
 {
+  const char fnc_nm[]="nco_cln_prs_tm()"; /* [sng] Function name */
+
+  char bfr[200];
+
+  char *dt_sng;
+
   int ut_rcd; /* [enm] UDUnits2 status */
-  char buf[200];
-  char *bptr;
 
   ut_system *ut_sys;
   ut_unit *ut_sct_in; /* UDUnits structure, input units */
 
   /* When empty, ut_read_xml() uses environment variable UDUNITS2_XML_PATH, if any
      Otherwise it uses default initial location hardcoded when library was built */
-  if(dbg_lvl_get() >= nco_dbg_vrb) ut_set_error_message_handler(ut_write_to_stderr); else ut_set_error_message_handler(ut_ignore);
+  if(nco_dbg_lvl_get() >= nco_dbg_vrb) ut_set_error_message_handler(ut_write_to_stderr); else ut_set_error_message_handler(ut_ignore);
   ut_sys=ut_read_xml(NULL);
   if(ut_sys == NULL){
-    (void)fprintf(stdout,"%s: nco_cln_prs_tm() failed to initialize UDUnits2 library\n",prg_nm_get());
-    return EXIT_FAILURE; /* Failure */
+    (void)fprintf(stdout,"%s: %s failed to initialize UDUnits2 library\n",nco_prg_nm_get(),fnc_nm);
+    return NCO_ERR; /* Failure */
   } /* end if err */ 
 
   /* units string to convert from */
@@ -239,27 +244,27 @@ nco_cln_prs_tm /* UDUnits2 Extract time stamp from parsed UDUnits string */
     if(ut_rcd == UT_SYNTAX) (void)fprintf(stderr,"ERROR:  units attribute \"%s\" has a syntax error\n",unt_sng);
     if(ut_rcd == UT_UNKNOWN) (void)fprintf(stderr,"ERROR: units attribute \"%s\" is not listed in UDUnits2 SI system database\n",unt_sng);
 
-    return EXIT_FAILURE; /* Failure */
+    return NCO_ERR; /* Failure */
   } /* endif coordinate on disk has no units attribute */
 
   /* Print timestamp to buffer in standard, dependable format */
-  ut_format(ut_sct_in,buf,sizeof(buf), UT_ASCII|UT_NAMES);
+  ut_format(ut_sct_in,bfr,sizeof(bfr), UT_ASCII|UT_NAMES);
 
   /* Extract parsed time units from print string (kludgy) */
-  bptr=strstr(buf,"since");  
-  sscanf(bptr,"%*s %d-%d-%d %d:%d:%f",&tm_in->year,&tm_in->month,&tm_in->day,&tm_in->hour,&tm_in->min,&tm_in->sec);
+  dt_sng=strstr(bfr,"since");  
+  sscanf(dt_sng,"%*s %d-%d-%d %d:%d:%f",&tm_in->year,&tm_in->month,&tm_in->day,&tm_in->hour,&tm_in->min,&tm_in->sec);
 
   ut_free_system(ut_sys); /* Free memory taken by UDUnits library */
   ut_free(ut_sct_in);
 
-  return EXIT_SUCCESS;
+  return NCO_NOERR;
 } /* end UDUnits2 nco_cln_prs_tm() */
 
 # else /* !HAVE_UDUNITS2_H */
 
 /* UDUnits1 routines */
 
-int /* [rcd] Successful conversion returns 0 */
+int /* [rcd] Successful conversion returns NCO_NOERR */
 nco_cln_clc_dff /* [fnc] UDUnits1 Difference between two co-ordinate units */
 (const char *fl_unt_sng, /* I [ptr] units attribute string from disk  */     
  const char *fl_bs_sng, /* I [ptr] units attribute string from disk  */     
@@ -279,67 +284,70 @@ nco_cln_clc_dff /* [fnc] UDUnits1 Difference between two co-ordinate units */
   /* Quick return if units identical */
   if(!strcmp(fl_unt_sng,fl_bs_sng) ){
     *og_val=crr_val;  
-    return EXIT_SUCCESS;
+    return NCO_NOERR;
   } /* endif */
 
 #ifdef UDUNITS_PATH
   /* UDUNITS_PATH macro expands to where autoconf found database file */
   rcd=utInit(UDUNITS_PATH);
-# else /* !UDUNITS_PATH */
+#else /* !UDUNITS_PATH */
   /* When empty, utInit() uses environment variable UDUNITS_PATH, if any
      Otherwise it uses default initial location hardcoded when library was built */
   rcd=utInit("");
-# endif /* !UDUNITS_PATH */
+#endif /* !UDUNITS_PATH */
 
-  if(rcd != 0){
-    (void)fprintf(stdout,"%s: nco_lmt_cls_dff() failed to initialize UDUnits library\n",prg_nm_get());
-    return EXIT_FAILURE;
+  if(rcd != UDUNITS_NOERR){
+    (void)fprintf(stdout,"%s: %s failed to initialize UDUnits2 library\n",nco_prg_nm_get(),fnc_nm);
+    return NCO_ERR;
   } /* end if err */ 
 
   /* units string to convert from */
   rcd=utScan(fl_unt_sng,&udu_sct_in); 
-  if(rcd !=0){
+  if(rcd != UDUNITS_NOERR){
     if(rcd == UT_EINVALID) (void)fprintf(stderr,"ERROR: units attribute \"%s\" is invalid \n",fl_unt_sng);
     if(rcd == UT_ESYNTAX) (void)fprintf(stderr,"ERROR units attribute \"%s\" contains a syntax error",fl_unt_sng);
     if(rcd == UT_EUNKNOWN) (void)fprintf(stderr,"ERROR units attribute \"%s\" is not in udunits database",fl_unt_sng);
     (void)utTerm(); /* Free memory taken by UDUnits library */
-    return EXIT_FAILURE;
+    return NCO_ERR;
   } /* endif unkown type */
 
   /* units string to convert to */
   rcd=utScan(fl_bs_sng,&udu_sct_out); 
-  if(rcd !=0){
+  if(rcd != UDUNITS_NOERR){
     if(rcd == UT_EINVALID) (void)fprintf(stderr,"ERROR: units attribute \"%s\" is invalid \n",fl_bs_sng);
     if(rcd == UT_ESYNTAX) (void)fprintf(stderr,"ERROR units attribute \"%s\" contains a syntax error",fl_bs_sng);
     if(rcd == UT_EUNKNOWN) (void)fprintf(stderr,"ERROR units attribute \"%s\" is not in udunits database",fl_bs_sng);
     (void)utTerm(); /* Free memory taken by UDUnits library */
-    return EXIT_FAILURE;
+    return NCO_ERR;
   } /* endif unkown type */
 
   rcd=utConvert(&udu_sct_in,&udu_sct_out,&slp,&incpt);
   if(rcd == UT_ECONVERT){
     (void)fprintf(stderr,"ERROR: user specified unit \"%s\" cannot be converted to units \"%s\"\n",fl_unt_sng,fl_bs_sng);
     (void)utTerm();
-    return EXIT_FAILURE;
+    return NCO_ERR;
   } /* endif */
 
   *og_val=crr_val*slp+incpt;
 
   /* debug stuff */
-  if(dbg_lvl_get() > nco_dbg_std) (void)fprintf(stderr,"%s: %s reports difference between systems \"%s\" and \"%s\" is %f\n",prg_nm_get(),fnc_nm,fl_unt_sng,fl_bs_sng,*og_val);
+  if(nco_dbg_lvl_get() > nco_dbg_std) (void)fprintf(stderr,"%s: %s reports difference between systems \"%s\" and \"%s\" is %f\n",nco_prg_nm_get(),fnc_nm,fl_unt_sng,fl_bs_sng,*og_val);
 
   (void)utTerm();
 
-  return EXIT_SUCCESS;   
+  return NCO_NOERR;   
 }  /* end UDUnits1 nco_cln_clc_dff() */
 
-int /* [rcd] Successful conversion returns 0 */     
+int /* [rcd] Successful conversion returns NCO_NOERR */     
 nco_cln_prs_tm /* UDUnits1 Extract time stamp from a parsed udunits string */
 (const char *unt_sng, /* I [ptr] units attribute string   */            
 tm_cln_sct *tm_in) /*  O [sct] struct to be populated   */             
 {
-int rcd;
-utUnit udu_sct_in; /* UDUnits structure, input units */
+  const char fnc_nm[]="nco_cln_prs_tm()"; /* [sng] Function name */
+
+  int rcd;
+
+  utUnit udu_sct_in; /* UDUnits structure, input units */
 
 #ifdef UDUNITS_PATH
   /* UDUNITS_PATH macro expands to where autoconf found database file */
@@ -350,27 +358,27 @@ utUnit udu_sct_in; /* UDUnits structure, input units */
   rcd=utInit("");
 #endif /* !UDUNITS_PATH */
 
-  if(rcd != 0){
-    (void)fprintf(stdout,"%s: nco_cln_prs_tm() failed to initialize UDUnits library\n",prg_nm_get());
-    return EXIT_FAILURE;
+  if(rcd != UDUNITS_NOERR){
+    (void)fprintf(stdout,"%s: %s failed to initialize UDUnits library\n",nco_prg_nm_get(),fnc_nm);
+    return NCO_ERR;
   } /* end if err */ 
 
   /* units string to convert from */
   rcd=utScan(unt_sng,&udu_sct_in); 
-  if(rcd != 0){
+  if(rcd != UDUNITS_NOERR){
     if(rcd == UT_EINVALID) (void)fprintf(stderr,"ERROR: units attribute \"%s\" is invalid \n",unt_sng);
     if(rcd == UT_ESYNTAX) (void)fprintf(stderr,"ERROR units attribute \"%s\" contains a syntax error",unt_sng);
     if(rcd == UT_EUNKNOWN) (void)fprintf(stderr,"ERROR units attribute \"%s\" is not in udunits database",unt_sng);
     (void)utTerm(); /* Free memory taken by UDUnits library */
-    return EXIT_FAILURE;
+    return NCO_ERR;
   } /* endif unkown type */
 
   /* Extract time origin */
   if(utIsTime(&udu_sct_in)){
     utCalendar(0.0,&udu_sct_in,&tm_in->year,&tm_in->month,&tm_in->day,&tm_in->hour,&tm_in->min,&tm_in->sec);
-    rcd=EXIT_SUCCESS;  
+    rcd=NCO_NOERR;  
   }else{
-    rcd=EXIT_FAILURE;
+    rcd=NCO_ERR;
   } /* endelse */
 
  (void)utTerm(); /* Free memory taken by UDUnits library */
@@ -386,20 +394,20 @@ utUnit udu_sct_in; /* UDUnits structure, input units */
 
 /* Stubs to enable compilation without UDUnits */
 
-int                 /* [rcd] Successful conversion returns 0 */
-nco_cln_clc_dff(    /* [fnc] Difference between two co-ordinate units */      
+int /* [rcd] Successful conversion returns NCO_NOERR */
+nco_cln_clc_dff( /* [fnc] Difference between two co-ordinate units */      
 const char *fl_unt_sng, /* I [ptr] units attribute string from disk  */     
-const char *fl_bs_sng,  /* I [ptr] units attribute string from disk  */     
+const char *fl_bs_sng, /* I [ptr] units attribute string from disk  */     
 double crr_val,
-double *og_val){        /* O [ptr]                                   */
-return EXIT_SUCCESS;
+double *og_val){ /* O [ptr] */
+return NCO_NOERR;
 }
 
-int                  /* [rcd] Successful conversion returns 0 */     
-nco_cln_prs_tm(      /* Extract time stamp from a parsed udunits string */
-const char *unt_sng, /* I [ptr] units attribute string   */            
-tm_cln_sct *tm_in){ /*  O [sct] struct to be populated   */             
-return EXIT_SUCCESS;
+int /* [rcd] Successful conversion returns NCO_NOERR */     
+nco_cln_prs_tm( /* Extract time stamp from a parsed UDUnits string */
+const char *unt_sng, /* I [ptr] units attribute string */
+tm_cln_sct *tm_in){ /* O [sct] struct to be populated */             
+return NCO_NOERR;
 }
 
 #endif /* !ENABLE_UDUNITS */
@@ -407,107 +415,97 @@ return EXIT_SUCCESS;
 /* End UDUnits-related routines*/
  
 tm_typ /* [enum] Units type */    
-nco_cln_get_tm_typ /* returns time unit type or tm_void if not found */
+nco_cln_get_tm_typ /* Returns time unit type or tm_void if not found */
 (const char *ud_sng){ /* I [ptr] units string  */      
   int idx;
   int len; 
   char *lcl_sng;  
-  tm_typ ret_typ;
+  tm_typ rcd_typ;
   
   lcl_sng=strdup(ud_sng);
   
-  /* initially set ret type to void */
-  ret_typ=tm_void;   
+  /* Initially set ret type to void */
+  rcd_typ=tm_void;   
   
-  /* convert to lower case */
+  /* Convert to lower case */
   len=strlen(lcl_sng);
-  for(idx=0 ; idx<len ; idx++)
-    lcl_sng[idx]=tolower(lcl_sng[idx]);
-  
-  if(!strcmp(lcl_sng,"year") || !strcmp(lcl_sng,"years") ) 
-    ret_typ=tm_year;
-  else if(!strcmp(lcl_sng,"month") || !strcmp(lcl_sng,"months") ) 
-    ret_typ=tm_month;
-  else if(!strcmp(lcl_sng,"day") || !strcmp(lcl_sng,"days") ) 
-    ret_typ=tm_day;
-  else if(!strcmp(lcl_sng,"hour") || !strcmp(lcl_sng,"hours") ) 
-    ret_typ=tm_hour;
-  else if(!strcmp(lcl_sng,"min") || !strcmp(lcl_sng,"mins")|| !strcmp(lcl_sng,"minute") || !strcmp(lcl_sng,"minutes") ) 
-    ret_typ=tm_min;
-  else if(!strcmp(lcl_sng,"sec") || !strcmp(lcl_sng,"secs")|| !strcmp(lcl_sng,"second") || !strcmp(lcl_sng,"seconds") ) 
-    ret_typ=tm_sec;
-  
-  return ret_typ;
+  for(idx=0;idx<len;idx++) lcl_sng[idx]=tolower(lcl_sng[idx]);
+  
+  if(!strcmp(lcl_sng,"year") || !strcmp(lcl_sng,"years")) rcd_typ=tm_year;
+  else if(!strcmp(lcl_sng,"month") || !strcmp(lcl_sng,"months")) rcd_typ=tm_month;
+  else if(!strcmp(lcl_sng,"day") || !strcmp(lcl_sng,"days")) rcd_typ=tm_day;
+  else if(!strcmp(lcl_sng,"hour") || !strcmp(lcl_sng,"hours")) rcd_typ=tm_hour;
+  else if(!strcmp(lcl_sng,"min") || !strcmp(lcl_sng,"mins") || !strcmp(lcl_sng,"minute") || !strcmp(lcl_sng,"minutes")) rcd_typ=tm_min;
+  else if(!strcmp(lcl_sng,"sec") || !strcmp(lcl_sng,"secs") || !strcmp(lcl_sng,"second") || !strcmp(lcl_sng,"seconds")) rcd_typ=tm_sec;
+  
+  if(lcl_sng) lcl_sng=(char *)nco_free(lcl_sng);
+  return rcd_typ;
 } /* end nco_cln_get_tm_typ() */
 
-cln_typ               /* [enum] Calendar type */    
+nco_cln_typ /* [enum] Calendar type */    
 nco_cln_get_cln_typ /*  [fnc]  Calendar type or cln_nil if not found */
 (const char *ud_sng) /* I [ptr] units string  */      
 {
   int idx;
   int len; 
   char *lcl_sng;  
-  cln_typ ret_typ;
+  nco_cln_typ rcd_typ;
   
   if(!ud_sng) return cln_nil;
   
   lcl_sng=strdup(ud_sng);
   
-  /* initially set ret type to void */
-  ret_typ=cln_nil;
+  /* Initially set return type to void */
+  rcd_typ=cln_nil;
   
-  /* convert to lower case */
+  /* Convert to lower case */
   len=strlen(lcl_sng);
   for(idx=0;idx<len;idx++) lcl_sng[idx]=tolower(lcl_sng[idx]);
   
-  if(!strcmp(lcl_sng, "standard") )
-    ret_typ=cln_std;
-  else if(!strcmp(lcl_sng, "gregorian") || !strcmp(lcl_sng, "proleptic_gregorian") )
-    ret_typ=cln_grg;
-  else if(!strcmp(lcl_sng, "julian") )
-    ret_typ=cln_jul;
-  else if(!strcmp(lcl_sng, "360_day"))
-    ret_typ=cln_360;
-  else if(!strcmp(lcl_sng, "noleap") || !strcmp(lcl_sng,"365_day" ))
-    ret_typ=cln_365;
-  else if(!strcmp(lcl_sng, "all_leap") || !strcmp(lcl_sng,"366_day" ))
-    ret_typ=cln_366;
-  
-  return ret_typ;
+  if(strstr(lcl_sng,"standard")) rcd_typ=cln_std;
+  else if(strstr(lcl_sng,"gregorian") || strstr(lcl_sng,"proleptic_gregorian")) rcd_typ=cln_grg;
+  else if(strstr(lcl_sng,"julian")) rcd_typ=cln_jul;
+  else if(strstr(lcl_sng,"360_day")) rcd_typ=cln_360;
+  else if(strstr(lcl_sng,"noleap") || strstr(lcl_sng,"365_day")) rcd_typ=cln_365;
+  else if(strstr(lcl_sng,"all_leap") || strstr(lcl_sng,"366_day")) rcd_typ=cln_366;
+
+  lcl_sng=(char *)nco_free(lcl_sng);
+  
+  return rcd_typ;
 } /* end nco_cln_get_cln_typ() */
 
-int                /* O [int] number of days */
-nco_cln_mth2day( /* [fnc] number of days in months */
-		cln_typ lmt_cln,   /* [enum] calendar type */
-		int months){       /* I [int] month */ 
+int /* O [nbr] Number of days */
+nco_cln_days_in_year_prior_to_given_month /* [fnc] Number of days in year prior to month */
+(nco_cln_typ lmt_cln, /* [enm] Calendar type */
+ int mth_idx) /* I [idx] Month (1-based counting, December == 12) */
+{ 
   int *days=NULL_CEWI;
   int idx;
   int idays=0;
   
   switch(lmt_cln){
   case cln_360:
-    days=DAYS360;
+    days=DAYS_PER_MONTH_360;
     break; 
   case cln_365:
-    days=DAYS365;
+    days=DAYS_PER_MONTH_365;
     break; 
   case cln_366: 
-    days=DAYS366;
+    days=DAYS_PER_MONTH_366;
     break;  
   case cln_std:
   case cln_grg:
   case cln_jul:
   case cln_nil:
     break;
-  }
+  } /* end switch */
   
-  months--;
+  mth_idx--;
   
-  for(idx=0 ;idx<months ;idx++)
-    idays+=days[idx];
+  for(idx=0;idx<mth_idx;idx++) idays+=days[idx];
   
   return idays;
-} /* end nco_cln_mth2day() */
+} /* end nco_cln_days_in_year_prior_to_given_month() */
 
 void
 nco_cln_pop_val /* [fnc] Calculate value in cln_sct */ 
@@ -528,7 +526,7 @@ nco_cln_pop_val /* [fnc] Calculate value in cln_sct */
   case cln_365:  
     data=DATA_365;    
     cln_sct->value=data[0]*(cln_sct->year-1)+
-      data[2]*nco_cln_mth2day(cln_365,cln_sct->month)+
+      data[2]*nco_cln_days_in_year_prior_to_given_month(cln_365,cln_sct->month)+
       data[2]*(cln_sct->day-1)+
       data[3]*cln_sct->hour+
       data[4]*cln_sct->min+
@@ -549,7 +547,7 @@ nco_cln_pop_val /* [fnc] Calculate value in cln_sct */
 double /* O [dbl] relative time */
 nco_cln_rel_val
 (double offset, /* I [dbl] time in base units */
- cln_typ lmt_cln, /* I [enm] Calendar type */ 
+ nco_cln_typ lmt_cln, /* I [enm] Calendar type */ 
  tm_typ bs_tm_typ) /* I [enm] Time units */
 {
   double *data=NULL_CEWI;
@@ -597,29 +595,29 @@ nco_cln_rel_val
   return offset/scl;
 } /* end nco_cln_rel_val() */
 
-int /* [rcd] Successful conversion returns 0 */
+int /* [rcd] Successful conversion returns NCO_NOERR */
 nco_cln_clc_tm /* [fnc] Difference between two coordinate units */
 (const char *fl_unt_sng, /* I [ptr] units attribute string from disk */
  const char *fl_bs_sng, /* I [ptr] units attribute string from disk */
- cln_typ lmt_cln, /* [enum] Calendar type of coordinate var */ 
+ nco_cln_typ lmt_cln, /* [enum] Calendar type of coordinate var */ 
  double *og_val){ /* O [ptr] */
   
   int rcd;
   int year;
   int month;
   char *lcl_unt_sng;
-  char tmp_sng[100]; 
+  char tmp_sng[100];
   double crr_val;
   
   tm_typ bs_tm_typ; /* enum for units type in fl_bs_sng */
   tm_cln_sct unt_cln_sct;
   tm_cln_sct bs_cln_sct;
   
-  if(dbg_lvl_get() > nco_dbg_std) (void)fprintf(stderr,"%s: nco_cln_clc_tm() reports unt_sng=%s bs_sng=%s\n",prg_nm_get(),fl_unt_sng,fl_bs_sng);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: nco_cln_clc_tm() reports unt_sng=%s bs_sng=%s\n",nco_prg_nm_get(),fl_unt_sng,fl_bs_sng);
   
   /* Does fl_unt_sng look like a regular timestamp? */ 
   if(sscanf(fl_unt_sng,"%d-%d",&year,&month) == 2){
-    lcl_unt_sng=(char *)nco_malloc((strlen(fl_unt_sng)+3L) *sizeof(char) );
+    lcl_unt_sng=(char *)nco_malloc((strlen(fl_unt_sng)+3L)*sizeof(char));
     strcpy(lcl_unt_sng,"s@");
     strcat(lcl_unt_sng,fl_unt_sng);
   }else{
@@ -631,17 +629,17 @@ nco_cln_clc_tm /* [fnc] Difference between two coordinate units */
     rcd=nco_cln_clc_dff(lcl_unt_sng,fl_bs_sng,0.0,og_val);
     lcl_unt_sng=(char *)nco_free(lcl_unt_sng);
     return rcd;
-  }
-  
+  } /* endif */
+
   /* Obtain units type from fl_bs_sng */
-  if(sscanf(fl_bs_sng,"%s",tmp_sng) !=1) return EXIT_FAILURE;
+  if(sscanf(fl_bs_sng,"%s",tmp_sng) != 1) return NCO_ERR;
   
   bs_tm_typ=nco_cln_get_tm_typ(tmp_sng);  
   
   /* Assume non-standard calendar */ 
-  if(nco_cln_prs_tm(lcl_unt_sng, &unt_cln_sct)) return EXIT_FAILURE;
+  if(nco_cln_prs_tm(lcl_unt_sng,&unt_cln_sct) == NCO_ERR) return NCO_ERR;
   
-  if(nco_cln_prs_tm(fl_bs_sng,&bs_cln_sct)) return EXIT_FAILURE;
+  if(nco_cln_prs_tm(fl_bs_sng,&bs_cln_sct) == NCO_ERR) return NCO_ERR;
   
   unt_cln_sct.sc_typ=bs_tm_typ;
   bs_cln_sct.sc_typ=bs_tm_typ;
@@ -656,33 +654,37 @@ nco_cln_clc_tm /* [fnc] Difference between two coordinate units */
   
   *og_val=crr_val;
   
-  return EXIT_SUCCESS;
+  lcl_unt_sng=(char *)nco_free(lcl_unt_sng);
+  
+  return NCO_NOERR;
 } /* end nco_cln_clc_tm() */
 
-int /* [rcd] Successful conversion returns 0 */
-nco_cln_clc_org /* [fnc] Difference between two co-ordinate units */      
-(const char *fl_unt_sng, /* I [ptr] units attribute string from disk  */     
- const char *fl_bs_sng,  /* I [ptr] units attribute string from disk  */     
- cln_typ lmt_cln,        /* [enum] Calendar type of coordinate var */ 
- double *og_val)        /* O [ptr]                                   */
+int /* [rcd] Successful conversion returns NCO_NOERR */
+nco_cln_clc_org /* [fnc] Difference between two generic co-ordinate units */
+(const char *fl_unt_sng, /* I [ptr] Source value (optional) and source units */
+ const char *fl_bs_sng, /* I [ptr] Target units */
+ nco_cln_typ lmt_cln, /* [enm] Calendar type, if any, of coordinate variable */ 
+ double *og_val) /* O [ptr] Target value in units stored on disk */
 {
+  /* Purpose:
+     Given a value expressed source units (fl_unit_sng) and target units to switch to, 
+     determine and return the value expressed in the target units. */
+
   int rcd;
   
   char *usr_unt_sng;   
   double crr_val;
   
-  /* Check if units output is a timestamp if so call special time routine */
+  /* If units contain date or timestamp call special time-conversion routine */
   if(strstr(fl_bs_sng," from ") || strstr(fl_bs_sng," since ") || strstr(fl_bs_sng," after ")){
     rcd=nco_cln_clc_tm(fl_unt_sng,fl_bs_sng,lmt_cln,og_val);   
     return rcd;
-  }  
+  } /* endif */
   
-  /* Now assume regular conversion where fl_unt_sng is of form <double_value units>, e.g., '10 inches', '100 ft' */
+  /* Regular conversion of fl_unt_sng of form <double_value units>, e.g., '10 inches', '100 ft' */
   usr_unt_sng=(char *)nco_calloc(strlen(fl_unt_sng)+1L, sizeof(char));
   sscanf(fl_unt_sng,"%lg %s",&crr_val,usr_unt_sng);
   rcd=nco_cln_clc_dff(usr_unt_sng,fl_bs_sng,crr_val,og_val);
   usr_unt_sng=(char *)nco_free(usr_unt_sng);
   return rcd;  
 } /* end nco_cln_clc_org() */
-
-
diff --git a/src/nco/nco_cln_utl.h b/src/nco/nco_cln_utl.h
index c3c3c03..71ba2a8 100644
--- a/src/nco/nco_cln_utl.h
+++ b/src/nco/nco_cln_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cln_utl.h,v 1.30 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cln_utl.h,v 1.34 2013/08/01 05:02:07 zender Exp $ */
 
 /* Purpose: Calendar utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -17,9 +17,9 @@
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard header files */
+#include <ctype.h> /* tolower() */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <ctype.h>
 
 /* 3rd party vendors */
 #ifdef ENABLE_UDUNITS
@@ -51,7 +51,7 @@ typedef enum {
 
 typedef struct {
   tm_typ sc_typ;
-  cln_typ sc_cln;
+  nco_cln_typ sc_cln;
   int year;
   int month;
   int day;
@@ -71,14 +71,14 @@ nco_newdate /* [fnc] Compute date a specified number of days from input date */
 (const nco_int date, /* I [YYMMDD] Date */
  const nco_int day_srt); /* I [day] Days ahead of input date */
 
-int               /* [flg] SUCCESS/FALURE */ 
+int               /* [flg] NCO_NOERR or NCO_ERR */ 
 nco_cln_clc_dff(  /* [fnc] difference between two co-ordinate units */      
 const char *fl_unt_sng, /* I [ptr] units attribute string from disk  */     
 const char *fl_bs_sng,  /* I [ptr] units attribute string from disk  */     
 double crr_val,         /* I [dbl] input units value */
 double *og_val);         /* O difference between two units string */
 
-int                  /* [flg] SUCCESS/FALURE */ 
+int                  /* [flg] NCO_NOERR or NCO_ERR */ 
 nco_cln_prs_tm(      /* Extract time stamp from a parsed udunits string */
 const char *unt_sng, /* I [ptr] units attribute string   */            
 tm_cln_sct *tm_in); /*  O [sct] struct to be populated   */             
@@ -87,14 +87,14 @@ tm_typ              /* [enum] Units type */
 nco_cln_get_tm_typ( /* returns time unit type or tm_void if not found */
 const char *ud_sng); /* I [ptr] units string  */      
 
-cln_typ               /* [enum] Calendar type */    
+nco_cln_typ               /* [enum] Calendar type */    
 nco_cln_get_cln_typ( /* [fnc] Calendar type or cln_nil if not found */
 const char *ud_sng); /* I [ptr] units string  */      
 
 int                /* O [int] number of days */
-nco_cln_mth2day( /* [fnc] number of days in months */
-cln_typ lmt_cln,   /* [enum] calendar type */
-int months);       /* I [int] month */ 
+nco_cln_days_in_year_prior_to_given_month( /* [fnc] Number of days in year prior to month */
+nco_cln_typ lmt_cln,   /* [enum] calendar type */
+int mth_idx); /* I [idx] Month (1-based counting, December == 12) */
 
 void
 nco_cln_pop_val(     /* [fnc] Calculate value in cln_sct */ 
@@ -103,21 +103,21 @@ tm_cln_sct *cln_sct);/* I/O [ptr] structure */
 double               /* O [dbl] relative time */
 nco_cln_rel_val(     /* [fnc] */   
 double offset,          /* I [dbl] time in base units */
-cln_typ lmt_cln,        /* I [enum] Calendar type */ 
+nco_cln_typ lmt_cln,        /* I [enum] Calendar type */ 
 tm_typ bs_tm_typ);      /* I [enum] Time units */
 
-int                 /* O [flg] SUCCESS/FAILURE 0 */
-nco_cln_clc_tm(    /* [fnc] Difference between two co-ordinate units */      
+int               /* O [flg] NCO_NOERR or NCO_ERR */ 
+nco_cln_clc_tm(    /* [fnc] Difference between two time coordinate units */
 const char *fl_unt_sng, /* I [ptr] user units attribute string   */     
 const char *fl_bs_sng,  /* I [ptr] units attribute string from disk  */     
-cln_typ lmt_cln,        /* [enum] Calendar type of coordinate var */ 
+nco_cln_typ lmt_cln,        /* [enum] Calendar type of coordinate var */ 
 double *og_val);        /* O [ptr] time diff in units based on fl_bs_sng */ 
 
-int                 /* [rcd] Successful conversion returns 0 */
-nco_cln_clc_org(    /* [fnc] Difference between two co-ordinate units */      
+int               /* O [flg] NCO_NOERR or NCO_ERR */ 
+nco_cln_clc_org(    /* [fnc] Difference between two generic coordinate units */      
 const char *fl_unt_sng, /* I [ptr] units attribute string from disk  */     
 const char *fl_bs_sng,  /* I [ptr] units attribute string from disk  */     
-cln_typ lmt_cln,        /* I [enum] Calendar type of coordinate var */ 
+nco_cln_typ lmt_cln,        /* I [enum] Calendar type of coordinate var */ 
 double *og_val);        /* O [ptr]                                   */
 
 #ifdef __cplusplus
diff --git a/src/nco/nco_cnf_dmn.c b/src/nco/nco_cnf_dmn.c
index ec1c866..1af4de8 100644
--- a/src/nco/nco_cnf_dmn.c
+++ b/src/nco/nco_cnf_dmn.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_dmn.c,v 1.72 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_dmn.c,v 1.92 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Conform dimensions between variables */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -73,14 +73,15 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
 
   /* Initialize flag to false. Overwrite by true after successful conformance */
   *DO_CONFORM=False;
-  
+
   /* Does current weight (wgt_crr) conform to variable's dimensions? */
   if(wgt_crr){
     /* Test rank first because wgt_crr because of 19960218 bug (invalid dmn_id in old wgt_crr leads to match) */
     if(var->nbr_dim == wgt_crr->nbr_dim){
       /* Test whether all wgt and var dimensions match in sequence */
       for(idx=0;idx<var->nbr_dim;idx++){
-	if(strcmp(wgt_crr->dim[idx]->nm,var->dim[idx]->nm)) break;
+	/* 20131002: nco_var_cnf_dmn() borken for groups as shown by dimension short-name strcmp() comparison here */
+        if(strcmp(wgt_crr->dim[idx]->nm,var->dim[idx]->nm)) break;
       } /* end loop over dimensions */
       if(idx == var->nbr_dim) *DO_CONFORM=True;
     } /* end if ranks are equal */
@@ -88,13 +89,9 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
     /* 20060425: Weight re-use will not occur if wgt_crr is free()'d here
        Some DDRA benchmarks need to know cost of broadcasting weights
        To turn off weight re-use and cause broadcasting, execute "else" block below
-       by (temporarily) using in following condition
-
-    if(*DO_CONFORM && False){
-
-    instead of
-
-    if(*DO_CONFORM){ */
+       by (temporarily) using 
+              if(*DO_CONFORM && False){ ....instead of.... if(*DO_CONFORM){ 
+       in following condition */
     if(*DO_CONFORM){
       wgt_out=wgt_crr;
     }else{
@@ -109,69 +106,71 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
       /* Test that all dimensions in wgt appear in var */
       for(idx=0;idx<wgt->nbr_dim;idx++){
         for(idx_dmn=0;idx_dmn<var->nbr_dim;idx_dmn++){
-	  /* Compare names, not dimension IDs */
-	  if(!strcmp(wgt->dim[idx]->nm,var->dim[idx_dmn]->nm)){
-	    wgt_var_dmn_shr_nbr++; /* wgt and var share this dimension */
-	    break;
-	  } /* endif */
+          /* Compare names, not dimension IDs */
+	  /* 20131002: nco_var_cnf_dmn() borken for groups as shown by dimension short-name strcmp() comparison here */
+          if(!strcmp(wgt->dim[idx]->nm,var->dim[idx_dmn]->nm)){
+            wgt_var_dmn_shr_nbr++; /* wgt and var share this dimension */
+            break;
+          } /* endif */
         } /* end loop over var dimensions */
       } /* end loop over wgt dimensions */
       /* Decide whether wgt and var dimensions conform, are mutually exclusive, or are partially exclusive (an error) */ 
       if(wgt_var_dmn_shr_nbr == wgt->nbr_dim){
-	/* wgt and var conform */
-	CONFORMABLE=True;
+        /* wgt and var conform */
+        CONFORMABLE=True;
       }else if(wgt_var_dmn_shr_nbr == 0){
-	/* Dimensions in wgt and var are mutually exclusive */
-	CONFORMABLE=False;
-	if(MUST_CONFORM){
-	  (void)fprintf(stdout,"%s: ERROR %s and template %s share no dimensions\n",prg_nm_get(),wgt->nm,var->nm);
-	  nco_exit(EXIT_FAILURE);
-	}else{
-	  if(dbg_lvl_get() > 2) (void)fprintf(stdout,"\n%s: DEBUG %s and template %s share no dimensions: Not broadcasting %s to %s\n",prg_nm_get(),wgt->nm,var->nm,wgt->nm,var->nm);
-	  USE_DUMMY_WGT=True;
-	} /* endif */
+        /* Dimensions in wgt and var are mutually exclusive */
+        CONFORMABLE=False;
+        if(MUST_CONFORM){
+          (void)fprintf(stdout,"%s: ERROR %s and template %s share no dimensions\n",nco_prg_nm_get(),wgt->nm,var->nm);
+          nco_exit(EXIT_FAILURE);
+        }else{
+          if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"\n%s: DEBUG %s and template %s share no dimensions: Not broadcasting %s to %s\n",nco_prg_nm_get(),wgt->nm,var->nm,wgt->nm,var->nm);
+          USE_DUMMY_WGT=True;
+        } /* endif */
       }else if(wgt->nbr_dim > var->nbr_dim){
-	/* wgt is larger rank than var---no possibility of conforming */
-	CONFORMABLE=False;
-	if(MUST_CONFORM){
-	  (void)fprintf(stdout,"%s: ERROR %s is rank %d but template %s is rank %d: Impossible to broadcast\n",prg_nm_get(),wgt->nm,wgt->nbr_dim,var->nm,var->nbr_dim);
-	  nco_exit(EXIT_FAILURE);
-	}else{
-	  if(dbg_lvl_get() > 2) (void)fprintf(stdout,"\n%s: DEBUG %s is rank %d but template %s is rank %d: Not broadcasting %s to %s\n",prg_nm_get(),wgt->nm,wgt->nbr_dim,var->nm,var->nbr_dim,wgt->nm,var->nm);
-	  USE_DUMMY_WGT=True;
-	} /* endif */
+        /* wgt is larger rank than var---no possibility of conforming */
+        CONFORMABLE=False;
+        if(MUST_CONFORM){
+          (void)fprintf(stdout,"%s: ERROR %s is rank %d but template %s is rank %d: Impossible to broadcast\n",nco_prg_nm_get(),wgt->nm,wgt->nbr_dim,var->nm,var->nbr_dim);
+          nco_exit(EXIT_FAILURE);
+        }else{
+          if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"\n%s: DEBUG %s is rank %d but template %s is rank %d: Not broadcasting %s to %s\n",nco_prg_nm_get(),wgt->nm,wgt->nbr_dim,var->nm,var->nbr_dim,wgt->nm,var->nm);
+          USE_DUMMY_WGT=True;
+        } /* endif */
       }else if(wgt_var_dmn_shr_nbr > 0 && wgt_var_dmn_shr_nbr < wgt->nbr_dim){
-	/* Some, but not all, of wgt dimensions are in var */
-	CONFORMABLE=False;
-	if(MUST_CONFORM){
-	  (void)fprintf(stdout,"%s: ERROR %d dimensions of %s belong to template %s but %d dimensions do not\n",prg_nm_get(),wgt_var_dmn_shr_nbr,wgt->nm,var->nm,wgt->nbr_dim-wgt_var_dmn_shr_nbr);
-	  nco_exit(EXIT_FAILURE);
-	}else{
-	  if(dbg_lvl_get() > 2) (void)fprintf(stdout,"\n%s: DEBUG %d dimensions of %s belong to template %s but %d dimensions do not: Not broadcasting %s to %s\n",prg_nm_get(),wgt_var_dmn_shr_nbr,wgt->nm,var->nm,wgt->nbr_dim-wgt_var_dmn_shr_nbr,wgt->nm,var->nm);
-	  USE_DUMMY_WGT=True;
-	} /* endif */
+        /* Some, but not all, of wgt dimensions are in var */
+        CONFORMABLE=False;
+        if(MUST_CONFORM){
+          (void)fprintf(stdout,"%s: ERROR %d dimensions of %s belong to template %s but %d dimensions do not\n",nco_prg_nm_get(),wgt_var_dmn_shr_nbr,wgt->nm,var->nm,wgt->nbr_dim-wgt_var_dmn_shr_nbr);
+          nco_exit(EXIT_FAILURE);
+        }else{
+          if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"\n%s: DEBUG %d dimensions of %s belong to template %s but %d dimensions do not: Not broadcasting %s to %s\n",nco_prg_nm_get(),wgt_var_dmn_shr_nbr,wgt->nm,var->nm,wgt->nbr_dim-wgt_var_dmn_shr_nbr,wgt->nm,var->nm);
+          USE_DUMMY_WGT=True;
+        } /* endif */
       } /* end if */
       if(USE_DUMMY_WGT){
-	/* Variables do not truly conform, but this might be OK, depending on the application, so set DO_CONFORM flag to false and ... */
-	*DO_CONFORM=False;
-	/* ... return a dummy weight of 1.0, which allows program logic to pretend variable is weighted, but does not change answers */ 
-	wgt_out=nco_var_dpl(var);
-	(void)vec_set(wgt_out->type,wgt_out->sz,wgt_out->val,1.0);
+        /* Variables do not truly conform, but this might be OK, depending on the application, so set DO_CONFORM flag to false and ... */
+        *DO_CONFORM=False;
+        /* ... return a dummy weight of 1.0, which allows program logic to pretend variable is weighted, but does not change answers */ 
+        wgt_out=nco_var_dpl(var);
+        (void)vec_set(wgt_out->type,wgt_out->sz,wgt_out->val,1.0);
       } /* endif */
       if(CONFORMABLE){
-	if(var->nbr_dim == wgt->nbr_dim){
-	  /* var and wgt conform and are same rank */
-	  /* Test whether all wgt and var dimensions match in sequence */
-	  for(idx=0;idx<var->nbr_dim;idx++){
-	    if(strcmp(wgt->dim[idx]->nm,var->dim[idx]->nm)) break;
-	       /*	    if(wgt->dmn_id[idx] != var->dmn_id[idx]) break;*/
-	  } /* end loop over dimensions */
-	  /* If so, take shortcut and copy wgt to wgt_out */
-	  if(idx == var->nbr_dim) *DO_CONFORM=True;
-	}else{
-	  /* var and wgt conform but are not same rank, set flag to proceed to generic conform routine */
-	  *DO_CONFORM=False;
-	} /* end else */
+        if(var->nbr_dim == wgt->nbr_dim){
+          /* var and wgt conform and are same rank */
+          /* Test whether all wgt and var dimensions match in sequence */
+          for(idx=0;idx<var->nbr_dim;idx++){
+	    /* 20131002: nco_var_cnf_dmn() borken for groups as shown by dimension short-name strcmp() comparison here */
+            if(strcmp(wgt->dim[idx]->nm,var->dim[idx]->nm)) break;
+            /*	    if(wgt->dmn_id[idx] != var->dmn_id[idx]) break;*/
+          } /* end loop over dimensions */
+          /* If so, take shortcut and copy wgt to wgt_out */
+          if(idx == var->nbr_dim) *DO_CONFORM=True;
+        }else{
+          /* var and wgt conform but are not same rank, set flag to proceed to generic conform routine */
+          *DO_CONFORM=False;
+        } /* end else */
       } /* endif CONFORMABLE */
     }else{
       /* var is scalar, if wgt is also then set flag to copy wgt to wgt_out else proceed to generic conform routine */
@@ -192,7 +191,6 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
     char * restrict wgt_out_cp;
 
     int idx_wgt_var[NC_MAX_DIMS];
-    /*    int idx_var_wgt[NC_MAX_DIMS];*/
     int wgt_nbr_dim;
     int var_nbr_dmn_m1;
 
@@ -211,9 +209,9 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
     (void)nco_xrf_var(wgt,wgt_out);
 
     /* wgt_out variable was copied from template var
-       Modify key fields so its name and type are based on wgt, not var
-       wgt_out will then be hybrid between wgt and var 
-       Remainder of routine fills wgt_out's var-dimensionality with wgt-values */
+    Modify key fields so its name and type are based on wgt, not var
+    wgt_out will then be hybrid between wgt and var 
+    Remainder of routine fills wgt_out's var-dimensionality with wgt-values */
     wgt_out->nm=(char *)nco_free(wgt_out->nm);
     wgt_out->nm=(char *)strdup(wgt->nm);
     wgt_out->id=wgt->id;
@@ -229,64 +227,64 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
       (void)memcpy(wgt_out_cp,wgt_cp,wgt_typ_sz);
     }else if(wgt->nbr_dim == 0){
       /* Lesser-ranked input variable is scalar 
-	 Expansion in this degenerate case needs no index juggling (reverse-mapping)
-	 Code as special case to speed-up important applications of ncap
-	 for synthetic file creation */
+      Expansion in this degenerate case needs no index juggling (reverse-mapping)
+      Code as special case to speed-up important applications of ncap
+      for synthetic file creation */
       var_sz=var->sz;
       for(var_lmn=0;var_lmn<var_sz;var_lmn++){
-	(void)memcpy(wgt_out_cp+var_lmn*wgt_typ_sz,wgt_cp,wgt_typ_sz);      
+        (void)memcpy(wgt_out_cp+var_lmn*wgt_typ_sz,wgt_cp,wgt_typ_sz);      
       } /* end loop over var_lmn */
     }else{
       /* Variable (and therefore wgt_out) are arrays, not scalars */
-      
+
       /* Create forward and reverse mappings from variable's dimensions to weight's dimensions:
 
-	 dmn_var_map[i] is number of elements between one value of i_th 
-	 dimension of variable and next value of i_th dimension, i.e., 
-	 number of elements in memory between indicial increments in i_th dimension. 
-	 This is computed as product of one (1) times size of all dimensions (if any) after i_th 
-	 dimension in variable.
+      dmn_var_map[i] is number of elements between one value of i_th 
+      dimension of variable and next value of i_th dimension, i.e., 
+      number of elements in memory between indicial increments in i_th dimension. 
+      This is computed as product of one (1) times size of all dimensions (if any) after i_th 
+      dimension in variable.
 
-	 dmn_wgt_map[i] contains analogous information, except for original weight variable
+      dmn_wgt_map[i] contains analogous information, except for original weight variable
 
-	 idx_wgt_var[i] contains index into variable's dimensions of i_th dimension of original weight
-	 idx_var_wgt[i] contains index into original weight's dimensions of i_th dimension of variable 
+      idx_wgt_var[i] contains index into variable's dimensions of i_th dimension of original weight
+      idx_var_wgt[i] contains index into original weight's dimensions of i_th dimension of variable 
 
-	 Since weight is a subset of variable, some elements of idx_var_wgt may be "empty", or unused
+      Since weight is a subset of variable, some elements of idx_var_wgt may be "empty", or unused
 
-	 Since mapping arrays (dmn_var_map and dmn_wgt_map) are ultimately used for a
-	 memcpy() operation, they could (read: should) be computed as byte offsets, not type offsets. 
-	 This is why netCDF generic hyperslab routines (ncvarputg(), ncvargetg())
-	 request imap vector to specify offset (imap) vector in bytes. */
+      Since mapping arrays (dmn_var_map and dmn_wgt_map) are ultimately used for a
+      memcpy() operation, they could (read: should) be computed as byte offsets, not type offsets. 
+      This is why netCDF generic hyperslab routines (ncvarputg(), ncvargetg())
+      request imap vector to specify offset (imap) vector in bytes. */
 
       for(idx=0;idx<wgt->nbr_dim;idx++){
-	for(idx_dmn=0;idx_dmn<var->nbr_dim;idx_dmn++){
-	  /* Compare names, not dimension IDs */
-	  if(!strcmp(var->dim[idx_dmn]->nm,wgt->dim[idx]->nm)){
-	    idx_wgt_var[idx]=idx_dmn;
-	    /*	    idx_var_wgt[idx_dmn]=idx;*/
-	    break;
-	  } /* end if */
-	  /* Sanity check */
-	  if(idx_dmn == var->nbr_dim-1){
-	    (void)fprintf(stdout,"%s: ERROR wgt %s has dimension %s but var %s does not deep in nco_var_cnf_dmn()\n",prg_nm_get(),wgt->nm,wgt->dim[idx]->nm,var->nm);
-	    nco_exit(EXIT_FAILURE);
-	  } /* end if err */
-	} /* end loop over variable dimensions */
+        for(idx_dmn=0;idx_dmn<var->nbr_dim;idx_dmn++){
+          /* Compare names, not dimension IDs */
+	  /* 20131002: nco_var_cnf_dmn() borken for groups as shown by dimension short-name strcmp() comparison here */
+          if(!strcmp(var->dim[idx_dmn]->nm,wgt->dim[idx]->nm)){
+            idx_wgt_var[idx]=idx_dmn;
+            break;
+          } /* end if */
+          /* Sanity check */
+          if(idx_dmn == var->nbr_dim-1){
+            (void)fprintf(stdout,"%s: ERROR wgt %s has dimension %s but var %s does not deep in nco_var_cnf_dmn()\n",nco_prg_nm_get(),wgt->nm,wgt->dim[idx]->nm,var->nm);
+            nco_exit(EXIT_FAILURE);
+          } /* end if err */
+        } /* end loop over variable dimensions */
       } /* end loop over weight dimensions */
-      
+
       /* Figure out map for each dimension of variable */
       for(idx=0;idx<var->nbr_dim;idx++)	dmn_var_map[idx]=1L;
       for(idx=0;idx<var->nbr_dim-1;idx++)
-	for(idx_dmn=idx+1;idx_dmn<var->nbr_dim;idx_dmn++)
-	  dmn_var_map[idx]*=var->cnt[idx_dmn];
-      
+        for(idx_dmn=idx+1;idx_dmn<var->nbr_dim;idx_dmn++)
+          dmn_var_map[idx]*=var->cnt[idx_dmn];
+
       /* Figure out map for each dimension of weight */
       for(idx=0;idx<wgt->nbr_dim;idx++)	dmn_wgt_map[idx]=1L;
       for(idx=0;idx<wgt->nbr_dim-1;idx++)
-	for(idx_dmn=idx+1;idx_dmn<wgt->nbr_dim;idx_dmn++)
-	  dmn_wgt_map[idx]*=wgt->cnt[idx_dmn];
-      
+        for(idx_dmn=idx+1;idx_dmn<wgt->nbr_dim;idx_dmn++)
+          dmn_wgt_map[idx]*=wgt->cnt[idx_dmn];
+
       /* Define convenience variables to avoid repetitive indirect addressing */
       wgt_nbr_dim=wgt->nbr_dim;
       var_sz=var->sz;
@@ -295,46 +293,46 @@ nco_var_cnf_dmn /* [fnc] Stretch second variable to match dimensions of first va
 
       /* var_lmn is offset into 1-D array corresponding to N-D indices dmn_ss */
       for(var_lmn=0;var_lmn<var_sz;var_lmn++){
-	/* dmn_ss are corresponding indices (subscripts) into N-D array */
-	/* Operations: 1 modulo, 1 pointer offset, 1 user memory fetch
-	   Repetitions: \lmnnbr
-	   Total Counts: \rthnbr=2\lmnnbr, \mmrusrnbr=\lmnnbr
-	   NB: LHS assumed compact and cached, counted RHS offsets and fetches only */
-	dmn_ss[var_nbr_dmn_m1]=var_lmn%var_cnt[var_nbr_dmn_m1];
-	for(idx=0;idx<var_nbr_dmn_m1;idx++){
-	  /* Operations: 1 divide, 1 modulo, 2 pointer offset, 2 user memory fetch
-	     Repetitions: \lmnnbr(\dmnnbr-1)
-	     Counts: \rthnbr=4\lmnnbr(\dmnnbr-1), \mmrusrnbr=2\lmnnbr(\dmnnbr-1)
-	     NB: LHS assumed compact and cached, counted RHS offsets and fetches only
-	     NB: Neglected loop arithmetic/compare */
-	  dmn_ss[idx]=(long int)(var_lmn/dmn_var_map[idx]);
-	  dmn_ss[idx]%=var_cnt[idx];
-	} /* end loop over dimensions */
-	
-	/* Map (shared) N-D array indices into 1-D index into original weight data */
-	wgt_lmn=0L;
-	/* Operations: 1 add, 1 multiply, 3 pointer offset, 3 user memory fetch
-	   Repetitions: \lmnnbr\rnkwgt
-	   Counts: \rthnbr=5\lmnnbr\rnkwgt, \mmrusrnbr=3\lmnnbr\rnkwgt */
-	for(idx=0;idx<wgt_nbr_dim;idx++) wgt_lmn+=dmn_ss[idx_wgt_var[idx]]*dmn_wgt_map[idx];
-	
-	/* Operations: 2 add, 2 multiply, 0 pointer offset, 1 system memory copy
-	   Repetitions: \lmnnbr
-	   Counts: \rthnbr=4\lmnnbr, \mmrusrnbr=0, \mmrsysnbr=1 */
-	(void)memcpy(wgt_out_cp+var_lmn*wgt_typ_sz,wgt_cp+wgt_lmn*wgt_typ_sz,wgt_typ_sz);
-	
+        /* dmn_ss are corresponding indices (subscripts) into N-D array */
+        /* Operations: 1 modulo, 1 pointer offset, 1 user memory fetch
+        Repetitions: \lmnnbr
+        Total Counts: \rthnbr=2\lmnnbr, \mmrusrnbr=\lmnnbr
+        NB: LHS assumed compact and cached, counted RHS offsets and fetches only */
+        dmn_ss[var_nbr_dmn_m1]=var_lmn%var_cnt[var_nbr_dmn_m1];
+        for(idx=0;idx<var_nbr_dmn_m1;idx++){
+          /* Operations: 1 divide, 1 modulo, 2 pointer offset, 2 user memory fetch
+          Repetitions: \lmnnbr(\dmnnbr-1)
+          Counts: \rthnbr=4\lmnnbr(\dmnnbr-1), \mmrusrnbr=2\lmnnbr(\dmnnbr-1)
+          NB: LHS assumed compact and cached, counted RHS offsets and fetches only
+          NB: Neglected loop arithmetic/compare */
+          dmn_ss[idx]=(long int)(var_lmn/dmn_var_map[idx]);
+          dmn_ss[idx]%=var_cnt[idx];
+        } /* end loop over dimensions */
+
+        /* Map (shared) N-D array indices into 1-D index into original weight data */
+        wgt_lmn=0L;
+        /* Operations: 1 add, 1 multiply, 3 pointer offset, 3 user memory fetch
+        Repetitions: \lmnnbr\rnkwgt
+        Counts: \rthnbr=5\lmnnbr\rnkwgt, \mmrusrnbr=3\lmnnbr\rnkwgt */
+        for(idx=0;idx<wgt_nbr_dim;idx++) wgt_lmn+=dmn_ss[idx_wgt_var[idx]]*dmn_wgt_map[idx];
+
+        /* Operations: 2 add, 2 multiply, 0 pointer offset, 1 system memory copy
+        Repetitions: \lmnnbr
+        Counts: \rthnbr=4\lmnnbr, \mmrusrnbr=0, \mmrsysnbr=1 */
+        (void)memcpy(wgt_out_cp+var_lmn*wgt_typ_sz,wgt_cp+wgt_lmn*wgt_typ_sz,wgt_typ_sz);
+
       } /* end loop over var_lmn */
-      
+
     } /* end if variable (and weight) are arrays, not scalars */
-    
+
     *DO_CONFORM=True;
   } /* end if we had to stretch weight to fit variable */
-  
+
   if(MUST_CONFORM && !(*DO_CONFORM)){
-    (void)fprintf(stdout,"%s: ERROR Variables which MUST_CONFORM do not on exit from nco_var_cnf_dmn()\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Variables which MUST_CONFORM do not on exit from nco_var_cnf_dmn()\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* endif */
-  
+
   /* Current weight (wgt_out) now conforms to current variable */
   return wgt_out;
   
@@ -376,7 +374,7 @@ ncap_var_cnf_dmn /* [fnc] Broadcast smaller variable into larger */
   } /* endif var_1 > var_2 */
 
   if(!DO_CONFORM){
-    (void)fprintf(stderr,"%s: ncap_var_cnf_dmn() reports that variables %s and %s do not have have conforming dimensions. Cannot proceed with operation\n",prg_nm_get(),(*var_1)->nm,(*var_2)->nm);
+    (void)fprintf(stderr,"%s: ncap_var_cnf_dmn() reports that variables %s and %s do not have have conforming dimensions. Cannot proceed with operation\n",nco_prg_nm_get(),(*var_1)->nm,(*var_2)->nm);
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
@@ -394,77 +392,76 @@ nco_var_dmn_rdr_mtd /* [fnc] Change dimension ordering of variable metadata */
  nco_bool * const dmn_rvr_in) /* O [idx] Reverse dimension */
 {
   /* Purpose: Re-order dimensions in a given variable
-     dmn_rdr contains new dimension order for dimensions
-     Currently routine allows only dimension permutations, i.e., 
-     re-arranging dimensions without changing their number (variable rank).
-
-     Routine keeps track of two variables var_* whose abbreviations are:
-     in: Input variable (already hyperslabbed) with old dimension ordering
-     rdr: User-specified re-ordered dimension list. Possibly subset of dmn_in
-     out: Output (re-ordered) dimensionality specific to each variable
-
-     At first it seemed this routine could re-order input variable in place without copying it
-     Multiple constraints keep this from being practical
-     Constraints are dictated by the architectural decision to call nco_var_dmn_rdr_mtd() twice
-     Decision to call nco_var_dmn_rdr_mtd() twice is based on:
-     1. Want to parallelize loop over variables to increase throughput
-        Parallel writes to output file only possible if output file is defined in shape, order
-	Output file only definable once variable shapes, i.e., re-ordered dimensions known
-	Alternatives to calling nco_var_dmn_rdr_mtd() twice:
-	A. Each thread enters redefine() mode and adds its variable to output file
-           Internal data re-copying would be expensive and unnecessary
-	   Hence Alternative A is not viable
-        B. Perform output file definition and all writes after all variable re-ordering
-	   Memory consumption would increase to O(fl_in_sz) to keep all re-ordered data in memory
-	   Hence Alternative B is not viable
-     2. The two calls to nco_var_dmn_rdr_mtd() accomplish the following
-        A. First call: Create var_out->dim for call to nco_var_dfn() 
-	   Main thread makes first call in serial mode just prior to nco_var_dfn() 
-	   No input data (AOT metadata) have been allocated or read in at this point
-	   Routine exits after modifying var_out metadata for new dimension geometry
-	B. Second call: Re-order var_in->val data and place in var_out
-           Although var_out->dmn is retained between calls, intermediate information such as
-	   in_out dimension mapping arrays are lost and must be re-created
-	   Hence second call must re-do most of first call, then begin re-ordering
-     Routine must access un-touched var_in->dim input structure during both parts of second call
-     Hence var_in must be unmodified between first and second call
-
-     dmn_rdr is user-specified list of dimensions to be re-arranged 
-     User specifies all or only a subset of all dimensions in input file
-     For example, say user specifies -d lat,lon
-     This ensures lat precedes lon in all variables in output file
-     In this case dmn_rdr is (user-specified) list [lat,lon]
-     Input 0-D variables dimensioned [] output with dmn_out=[] (unaltered)
-     Input 1-D variables dimensioned [lat] output with dmn_out=[lat] (unaltered)
-     Input 2-D variables dimensioned [lat,lon] output with dmn_out=[lat,lon] (unaltered)
-     Input 2-D variables dimensioned [time,lev] output with dmn_out=[time,lev] (unaltered)
-     Input 2-D variables dimensioned [lon,lat] output with dmn_out=[lon,lat] (transposed)
-     Input 3-D variables dimensioned [lon,lat,time] output with dmn_out=[lat,lon,time]
-     Input 3-D variables dimensioned [time,lon,lat] output with dmn_out=[time,lat,lon]
-     Input 3-D variables dimensioned [lon,lev,lat] output with dmn_out=[lat,lev,lon]
-     Input 4-D variables dimensioned [lon,lev,lat,time] output with dmn_out=[lat,lev,lon,time]
-     Hence output dimension dmn_out list depends on each particular variable 
-     Some, or even all, dimensions in dmn_rdr may not be in dmn_in
-     Re-ordering is only necessary for variables where dmn_in and dmn_rdr share at least two dimensions
-     
-     Dimension reversal:
-     Users specify dimension reversal by prefixing dimension name with negative sign
-     Host routine passes dimension reversing flags in dmn_rvr_rdr
-     Dimensions may be re-ordered, reversed, or both */
-  
+  dmn_rdr contains new dimension order for dimensions
+  Currently routine allows only dimension permutations, i.e., 
+  re-arranging dimensions without changing their number (variable rank).
+
+  Routine keeps track of two variables var_* whose abbreviations are:
+  in: Input variable (already hyperslabbed) with old dimension ordering
+  rdr: User-specified re-ordered dimension list. Possibly subset of dmn_in
+  out: Output (re-ordered) dimensionality specific to each variable
+
+  At first it seemed this routine could re-order input variable in place without copying it
+  Multiple constraints keep this from being practical
+  Constraints are dictated by the architectural decision to call nco_var_dmn_rdr_mtd() twice
+  Decision to call nco_var_dmn_rdr_mtd() twice is based on:
+  1. Want to parallelize loop over variables to increase throughput
+  Parallel writes to output file only possible if output file is defined in shape, order
+  Output file only definable once variable shapes, i.e., re-ordered dimensions known
+  Alternatives to calling nco_var_dmn_rdr_mtd() twice:
+  A. Each thread enters redefine() mode and adds its variable to output file
+  Internal data re-copying would be expensive and unnecessary
+  Hence Alternative A is not viable
+  B. Perform output file definition and all writes after all variable re-ordering
+  Memory consumption would increase to O(fl_in_sz) to keep all re-ordered data in memory
+  Hence Alternative B is not viable
+  2. The two calls to nco_var_dmn_rdr_mtd() accomplish the following
+  A. First call: Create var_out->dim for call to nco_var_dfn() 
+  Main thread makes first call in serial mode just prior to nco_var_dfn() 
+  No input data (AOT metadata) have been allocated or read in at this point
+  Routine exits after modifying var_out metadata for new dimension geometry
+  B. Second call: Re-order var_in->val data and place in var_out
+  Although var_out->dmn is retained between calls, intermediate information such as
+  in_out dimension mapping arrays are lost and must be re-created
+  Hence second call must re-do most of first call, then begin re-ordering
+  Routine must access un-touched var_in->dim input structure during both parts of second call
+  Hence var_in must be unmodified between first and second call
+
+  dmn_rdr is user-specified list of dimensions to be re-arranged 
+  User specifies all or only a subset of all dimensions in input file
+  For example, say user specifies -d lat,lon
+  This ensures lat precedes lon in all variables in output file
+  In this case dmn_rdr is (user-specified) list [lat,lon]
+  Input 0-D variables dimensioned [] output with dmn_out=[] (unaltered)
+  Input 1-D variables dimensioned [lat] output with dmn_out=[lat] (unaltered)
+  Input 2-D variables dimensioned [lat,lon] output with dmn_out=[lat,lon] (unaltered)
+  Input 2-D variables dimensioned [time,lev] output with dmn_out=[time,lev] (unaltered)
+  Input 2-D variables dimensioned [lon,lat] output with dmn_out=[lon,lat] (transposed)
+  Input 3-D variables dimensioned [lon,lat,time] output with dmn_out=[lat,lon,time]
+  Input 3-D variables dimensioned [time,lon,lat] output with dmn_out=[time,lat,lon]
+  Input 3-D variables dimensioned [lon,lev,lat] output with dmn_out=[lat,lev,lon]
+  Input 4-D variables dimensioned [lon,lev,lat,time] output with dmn_out=[lat,lev,lon,time]
+  Hence output dimension dmn_out list depends on each particular variable 
+  Some, or even all, dimensions in dmn_rdr may not be in dmn_in
+  Re-ordering is only necessary for variables where dmn_in and dmn_rdr share at least two dimensions
+
+  Dimension reversal:
+  Users specify dimension reversal by prefixing dimension name with negative sign
+  Host routine passes dimension reversing flags in dmn_rvr_rdr
+  Dimensions may be re-ordered, reversed, or both */
+
   /* 20070509 CEWI RUVICFFU: dmn_idx_rdr_in */
 
   const char fnc_nm[]="nco_var_dmn_rdr_mtd()"; /* [sng] Function name */
-  
+
   char *rec_dmn_nm_out=NULL; /* [sng] Name of record dimension, if any, required by re-order */
 
   dmn_sct **dmn_in=NULL; /* [sct] List of dimension structures in input order */
   dmn_sct **dmn_out; /* [sct] List of dimension structures in output order */
-  
+
   int dmn_idx_in_shr[NC_MAX_DIMS]; /* [idx] Dimension correspondence, input->share Purely diagnostic */
   int dmn_idx_in_out[NC_MAX_DIMS]; /* [idx] Dimension correspondence, input->output */
   int dmn_idx_in_rdr[NC_MAX_DIMS]; /* [idx] Dimension correspondence, input->re-order NB: Purely diagnostic */
-  /* int dmn_idx_rdr_in[NC_MAX_DIMS]; */ /* [idx] Dimension correspondence, re-order->input NB: Purely diagnostic */
   int dmn_idx_shr_rdr[NC_MAX_DIMS]; /* [idx] Dimension correspondence, share->re-order */	  
   int dmn_idx_shr_in[NC_MAX_DIMS]; /* [idx] Dimension correspondence, share->input */	  
   int dmn_idx_shr_out[NC_MAX_DIMS]; /* [idx] Dimension correspondence, share->output */	  
@@ -477,30 +474,26 @@ nco_var_dmn_rdr_mtd /* [fnc] Change dimension ordering of variable metadata */
   int dmn_rdr_idx; /* [idx] Counting index for dmn_rdr */
   int dmn_shr_idx; /* [idx] Counting index for dmn_shr */
   int idx_err=-99999; /* [idx] Invalid index for debugging */
-  
+
   /* Initialize variables to reduce indirection */
   /* NB: Number of input and output dimensions are equal for pure re-orders
-     However, keep dimension numbers in separate variables to ease relax this rule in future */
+  However, keep dimension numbers in separate variables to ease relax this rule in future */
   dmn_in_nbr=var_in->nbr_dim;
   dmn_out_nbr=var_out->nbr_dim;
 
   /* Initialize dimension maps to missing_value to aid debugging */
-  if(dbg_lvl_get() == nco_dbg_old){
-    for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
-      dmn_idx_out_in[dmn_out_idx]=idx_err;
-    /* for(dmn_rdr_idx=0;dmn_rdr_idx<dmn_rdr_nbr;dmn_rdr_idx++)
-       dmn_idx_rdr_in[dmn_rdr_idx]=idx_err; */
-    for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++){
-      dmn_idx_in_shr[dmn_in_idx]=idx_err;
-      dmn_idx_in_rdr[dmn_in_idx]=idx_err;
-      dmn_idx_shr_rdr[dmn_in_idx]=idx_err; /* fxm: initialize up to dmn_shr_nbr which is currently unknown */
-      dmn_idx_shr_in[dmn_in_idx]=idx_err; /* fxm: initialize up to dmn_shr_nbr which is currently unknown */
-      dmn_idx_shr_out[dmn_in_idx]=idx_err; /* fxm: initialize up to dmn_shr_nbr which is currently unknown */
-    } /* end loop over dmn_in */
-  } /* end if dbg */
-  
+  for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
+    dmn_idx_out_in[dmn_out_idx]=idx_err;
+  for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++){
+    dmn_idx_in_shr[dmn_in_idx]=idx_err;
+    dmn_idx_in_rdr[dmn_in_idx]=idx_err;
+    dmn_idx_shr_rdr[dmn_in_idx]=idx_err; /* fxm: initialize up to dmn_shr_nbr which is currently unknown */
+    dmn_idx_shr_in[dmn_in_idx]=idx_err; /* fxm: initialize up to dmn_shr_nbr which is currently unknown */
+    dmn_idx_shr_out[dmn_in_idx]=idx_err; /* fxm: initialize up to dmn_shr_nbr which is currently unknown */
+  } /* end loop over dmn_in */
+
   /* Initialize default correspondence and record dimension in case early return desired */
-  if(var_out->is_rec_var) rec_dmn_nm_out=var_in->dim[0]->nm;
+  if(var_out->is_rec_var) rec_dmn_nm_out=var_in->dim[0]->nm; /* 20130613: if netCDF3 _only_! */
   for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++){
     dmn_idx_out_in[dmn_in_idx]=dmn_in_idx;
     dmn_rvr_in[dmn_in_idx]=False;
@@ -508,37 +501,39 @@ nco_var_dmn_rdr_mtd /* [fnc] Change dimension ordering of variable metadata */
 
   /* Scalars are never altered by dimension re-ordering or reversal */
   if(dmn_in_nbr < 1) return rec_dmn_nm_out;
-  
+
   /* On entry to this section of code, we assume:
-     1. var_out duplicates var_in */
-  
+  1. var_out duplicates var_in */
+
   /* Create complete 1-to-1 ordered list of dimensions in new output variable */
   /* For each dimension in re-ordered dimension list... */
   for(dmn_rdr_idx=0;dmn_rdr_idx<dmn_rdr_nbr;dmn_rdr_idx++){
     /* ...see if re-order dimension exists in dmn_in dimension list... */
     for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++){
-      /* ...by comparing names, not dimension IDs... */
-      if(!strcmp(var_in->dim[dmn_in_idx]->nm,dmn_rdr[dmn_rdr_idx]->nm)){
-	dmn_idx_in_rdr[dmn_in_idx]=dmn_rdr_idx;
-	/* dmn_idx_rdr_in[dmn_rdr_idx]=dmn_in_idx; */
-	dmn_idx_shr_rdr[dmn_shr_nbr]=dmn_rdr_idx;
-	dmn_idx_shr_in[dmn_shr_nbr]=dmn_in_idx;
-	dmn_idx_in_shr[dmn_in_idx]=dmn_shr_nbr;
-	dmn_shr_nbr++; /* dmn_in and dmn_rdr share this dimension */
-	break;
+
+      /* ...must compare by dimension IDs ...dimensions can have same names  */
+      if(var_in->dim[dmn_in_idx]->id == dmn_rdr[dmn_rdr_idx]->id){
+
+        dmn_idx_in_rdr[dmn_in_idx]=dmn_rdr_idx;
+        dmn_idx_shr_rdr[dmn_shr_nbr]=dmn_rdr_idx;
+        dmn_idx_shr_in[dmn_shr_nbr]=dmn_in_idx;
+        dmn_idx_in_shr[dmn_in_idx]=dmn_shr_nbr;
+        dmn_shr_nbr++; /* dmn_in and dmn_rdr share this dimension */
+        break;
       } /* endif */
     } /* end loop over dmn_in */
   } /* end loop over dmn_rdr */
-  
+
   /* Map permanent list of reversed dimensions to input variable */
-  for(dmn_shr_idx=0;dmn_shr_idx<dmn_shr_nbr;dmn_shr_idx++)
+  for(dmn_shr_idx=0;dmn_shr_idx<dmn_shr_nbr;dmn_shr_idx++){
     dmn_rvr_in[dmn_idx_shr_in[dmn_shr_idx]]=dmn_rvr_rdr[dmn_idx_shr_rdr[dmn_shr_idx]];
+  }
 
   /* No dimension re-ordering is necessary if dmn_in and dmn_rdr share fewer than two dimensions
-     Dimension reversal must be done with even one shared dimension
-     Single dimension reversal, however, uses default dimension maps and return values */
+  Dimension reversal must be done with even one shared dimension
+  Single dimension reversal, however, uses default dimension maps and return values */
   if(dmn_shr_nbr < 2) return rec_dmn_nm_out;
-  
+
   /* dmn_idx_shr_out is sorted version of dmn_idx_shr_in */
   (void)memcpy((void *)(dmn_idx_shr_out),(void *)(dmn_idx_shr_in),dmn_shr_nbr*sizeof(dmn_idx_shr_in[0]));
   qsort(dmn_idx_shr_out,(size_t)dmn_shr_nbr,sizeof(dmn_idx_shr_out[0]),nco_cmp_int);
@@ -547,12 +542,12 @@ nco_var_dmn_rdr_mtd /* [fnc] Change dimension ordering of variable metadata */
   for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++) 
     dmn_idx_in_out[dmn_in_idx]=dmn_in_idx;
 
-  /* Splice in re-ordered dimension location for each shared dimension */
+  /* Splice-in re-ordered dimension location for each shared dimension */
   for(dmn_shr_idx=0;dmn_shr_idx<dmn_shr_nbr;dmn_shr_idx++)
     dmn_idx_in_out[dmn_idx_shr_in[dmn_shr_idx]]=dmn_idx_shr_out[dmn_shr_idx];
-  
-  if(dbg_lvl_get() > 3){
-    (void)fprintf(stdout,"%s: DEBUG %s variable %s shares %d of its %d dimensions with the %d dimensions in the re-order list\n",prg_nm_get(),fnc_nm,var_in->nm,dmn_shr_nbr,var_in->nbr_dim,dmn_rdr_nbr);
+
+  if(nco_dbg_lvl_get() > nco_dbg_scl){
+    (void)fprintf(stdout,"%s: DEBUG %s variable %s shares %d of its %d dimensions with the %d dimensions in the re-order list\n",nco_prg_nm_get(),fnc_nm,var_in->nm,dmn_shr_nbr,var_in->nbr_dim,dmn_rdr_nbr);
     (void)fprintf(stdout,"shr_idx\tshr_rdr\tshr_in\tshr_out\n");
     for(dmn_shr_idx=0;dmn_shr_idx<dmn_shr_nbr;dmn_shr_idx++)
       (void)fprintf(stdout,"%d\t%d\t%d\t%d\n",dmn_shr_idx,dmn_idx_shr_rdr[dmn_shr_idx],dmn_idx_shr_in[dmn_shr_idx],dmn_idx_shr_out[dmn_shr_idx]);
@@ -564,46 +559,47 @@ nco_var_dmn_rdr_mtd /* [fnc] Change dimension ordering of variable metadata */
   /* Create reverse correspondence */
   for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++)
     dmn_idx_out_in[dmn_idx_in_out[dmn_in_idx]]=dmn_in_idx;
-  
+
   /* Create full dmn_out list */
   dmn_in=var_in->dim;
   dmn_out=(dmn_sct **)nco_malloc(dmn_out_nbr*sizeof(dmn_sct *));
-  
+
   /* Assign dimension structures to new dimension list in correct order
-     Remember: dmn_in has dimension IDs relative to input file 
-     Copy dmn_in->xrf to get dimension IDs relative to output file (once they are defined) 
-     Oh come on, it only seems like cheating! */
-  for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
+  Remember: dmn_in has dimension IDs relative to input file 
+  Copy dmn_in->xrf to get dimension IDs relative to output file (once they are defined) 
+  Oh come on, it only seems like cheating! */
+  for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++){
     dmn_out[dmn_out_idx]=dmn_in[dmn_idx_out_in[dmn_out_idx]]->xrf;
+  }
 
   /* Re-ordered output dimension list dmn_out now comprises correctly ordered but 
-     otherwise verbatim copies of dmn_out structures in calling routine */
-  
+  otherwise verbatim copies of dmn_out structures in calling routine */
+
   /* Free var_out's old dimension list */
   var_out->dim=(dmn_sct **)nco_free(var_out->dim);
   /* Replace old with new dimension list */
   var_out->dim=dmn_out;
-  
+
   /* NB: var_out is now in an inconsistent state 
-     var_out->dim refers to re-ordered dimensions 
-     However, var_out->dmn_id,cnt,srt,end,srd refer still duplicate var_in members
-     They refer to old dimension ordering in input file
-     nco_cnf_dmn_rdr_mtd() implicitly assumes that only nco_cnf_dmn_rdr_mtd() modifies var_out 
-     Call to nco_cnf_dmn_rdr_val() for this variable performs actual re-ordering
-     The interim inconsistent state is required for dimension IDs because 
-     output dimension IDs are not known until nco_dmn_dfn() which cannot 
-     (or, at least, should not) occur until output record dimension is known.
-     Interim modifications of var_out by any other routine are dangerous! */
+  var_out->dim refers to re-ordered dimensions 
+  However, var_out->dmn_id,cnt,srt,end,srd refer still duplicate var_in members
+  They refer to old dimension ordering in input file
+  nco_cnf_dmn_rdr_mtd() implicitly assumes that only nco_cnf_dmn_rdr_mtd() modifies var_out 
+  Call to nco_cnf_dmn_rdr_val() for this variable performs actual re-ordering
+  The interim inconsistent state is required for dimension IDs because 
+  output dimension IDs are not known until nco_dmn_dfn() which cannot 
+  (or, at least, should not) occur until output record dimension is known.
+  Interim modifications of var_out by any other routine are dangerous! */
 
   /* This is clear at date written (20040727), but memories are short
-     Hence we modify var_out->dmn_id,cnt,srt,end,srd to contain re-ordered values now
-     This makes it safer to var_out->dmn_id,cnt,srt,end,srd before second call to nco_cnf_dmn_rdr()
-     If dmn_out->id does depend on record dimension identity, then this update will do no good
-     Hence, we must re-update dmn_out->id after nco_dmn_dfn() in nco_cnf_dmn_rdr_val()
-     Structures should be completely consistent at that point
-     Not updating these structures (at least dmn_out->id) is equivalent to assuming that
-     dmn_out->id does not depend on record dimension identity, which is an ASSUMPTION
-     that may currently be true, but netCDF API does not guarantee as always true. */
+  Hence we modify var_out->dmn_id,cnt,srt,end,srd to contain re-ordered values now
+  This makes it safer to var_out->dmn_id,cnt,srt,end,srd before second call to nco_cnf_dmn_rdr()
+  If dmn_out->id does depend on record dimension identity, then this update will do no good
+  Hence, we must re-update dmn_out->id after nco_dmn_dfn() in nco_cnf_dmn_rdr_val()
+  Structures should be completely consistent at that point
+  Not updating these structures (at least dmn_out->id) is equivalent to assuming that
+  dmn_out->id does not depend on record dimension identity, which is an ASSUMPTION
+  that may currently be true, but netCDF API does not guarantee as always true. */
   for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++){
     /* NB: Change dmn_id,cnt,srt,end,srd together to minimize chances of forgetting one */
     var_out->dmn_id[dmn_out_idx]=dmn_out[dmn_out_idx]->id;
@@ -612,27 +608,35 @@ nco_var_dmn_rdr_mtd /* [fnc] Change dimension ordering of variable metadata */
     var_out->end[dmn_out_idx]=dmn_out[dmn_out_idx]->end;
     var_out->srd[dmn_out_idx]=dmn_out[dmn_out_idx]->srd;
   } /* end loop over dmn_out */
-  
+
+
   if(var_out->is_rec_var){
     /* Which dimension in output dimension list is scheduled to be record dimension? */
     for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
-      if(dmn_out[dmn_out_idx]->is_rec_dmn) break;
+      if(dmn_out[dmn_out_idx]->is_rec_dmn){
+        break;
+      }
     if(dmn_out_idx != dmn_out_nbr){
       dmn_idx_rec_out=dmn_out_idx;
+      /* Request that first dimension be record dimension */
+      rec_dmn_nm_out=dmn_out[0]->nm;
+      if(nco_dbg_lvl_get() >= nco_dbg_scl && dmn_idx_rec_out != 0) (void)fprintf(stdout,"%s: INFO %s for variable %s reports old input record dimension %s is now ordinal dimension %d, new record dimension must be %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,dmn_out[dmn_idx_rec_out]->nm,dmn_idx_rec_out,dmn_out[0]->nm);
     }else{
-      (void)fprintf(stdout,"%s: ERROR %s did not find record dimension in variable %s which claims to be record variable\n",prg_nm_get(),fnc_nm,var_in->nm);
-      nco_exit(EXIT_FAILURE);
+      /* 20121009: 
+      This block only reached by variables that will change from record in input file to fixed in output file
+      Leave is_rec_var as True here for those variables
+      Change is_rec_var to false in "if(REDEFINED_RECORD_DIMENSION)" block of ncpdq.c instead
+      Yes, this leaves the metadata in an inconsistent state 
+      However, changing all these flags in one place in ncpdq.c main() is clearer */
+      ;
     } /* end else */
-    /* Request that first dimension be record dimension */
-    rec_dmn_nm_out=dmn_out[0]->nm;
-    if(dmn_idx_rec_out != 0) (void)fprintf(stdout,"%s: INFO %s for variable %s reports old input record dimension %s is now ordinal dimension %d, new record dimension must be %s\n",prg_nm_get(),fnc_nm,var_in->nm,dmn_out[dmn_idx_rec_out]->nm,dmn_idx_rec_out,dmn_out[0]->nm);
   } /* endif record variable */
 
-  if(dbg_lvl_get() > 3){
+  if(nco_dbg_lvl_get() > nco_dbg_var){
     for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++)
-      (void)fprintf(stdout,"%s: DEBUG %s variable %s re-order maps dimension %s from (ordinal,ID)=(%d,%d) to (%d,unknown)\n",prg_nm_get(),fnc_nm,var_in->nm,var_in->dim[dmn_in_idx]->nm,dmn_in_idx,var_in->dmn_id[dmn_in_idx],dmn_idx_in_out[dmn_in_idx]);
+      (void)fprintf(stdout,"%s: DEBUG %s variable %s re-order maps dimension %s from (ordinal,ID)=(%d,%d) to (%d,unknown)\n",nco_prg_nm_get(),fnc_nm,var_in->nm,var_in->dim[dmn_in_idx]->nm,dmn_in_idx,var_in->dmn_id[dmn_in_idx],dmn_idx_in_out[dmn_in_idx]);
   } /* endif dbg */
-  
+
   return rec_dmn_nm_out;
 } /* end nco_var_dmn_rdr_mtd() */ 
 
@@ -700,7 +704,7 @@ nco_var_dmn_rdr_val /* [fnc] Change dimension ordering of variable values */
   
   /* As explained in nco_var_dmn_rdr_mtd(),
      "Hence, we must re-update dmn_out->id after nco_dmn_dfn() in nco_cnf_dmn_rdr_val()
-     Structures should be completely consisten at that point
+     Structures should be completely consistent at that point
      Not updating these structures (at least dmn_out->id) is equivalent to assuming that
      dmn_out->id does not depend on record dimension identity, which is an ASSUMPTION
      that may currently be true, but is not guaranteed by the netCDF API to always be true." */
@@ -714,14 +718,14 @@ nco_var_dmn_rdr_val /* [fnc] Change dimension ordering of variable values */
   } /* end loop over dmn_out */
   
   /* Report full metadata re-order, if requested */
-  if(dbg_lvl_get() > 3){
+  if(nco_dbg_lvl_get() > 3){
     int dmn_idx_in_out[NC_MAX_DIMS]; /* [idx] Dimension correspondence, input->output */
     /* Create reverse correspondence */
     for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
       dmn_idx_in_out[dmn_idx_out_in[dmn_out_idx]]=dmn_out_idx;
   
     for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++)
-      (void)fprintf(stdout,"%s: DEBUG %s variable %s re-order maps dimension %s from (ordinal,ID)=(%d,%d) to (%d,%d)\n",prg_nm_get(),fnc_nm,var_in->nm,var_in->dim[dmn_in_idx]->nm,dmn_in_idx,var_in->dmn_id[dmn_in_idx],dmn_idx_in_out[dmn_in_idx],var_out->dmn_id[dmn_idx_in_out[dmn_in_idx]]);
+      (void)fprintf(stdout,"%s: DEBUG %s variable %s re-order maps dimension %s from (ordinal,ID)=(%d,%d) to (%d,%d)\n",nco_prg_nm_get(),fnc_nm,var_in->nm,var_in->dim[dmn_in_idx]->nm,dmn_in_idx,var_in->dmn_id[dmn_in_idx],dmn_idx_in_out[dmn_in_idx],var_out->dmn_id[dmn_idx_in_out[dmn_in_idx]]);
   } /* endif dbg */
   
   /* Is identity re-ordering requested? */
@@ -737,13 +741,13 @@ nco_var_dmn_rdr_val /* [fnc] Change dimension ordering of variable values */
   } /* !IDENTITY_REORDER */
 
   if(IDENTITY_REORDER){
-    if(dbg_lvl_get() > 2) (void)fprintf(stdout,"%s: INFO %s reports re-order is identity transformation for variable %s\n",prg_nm_get(),fnc_nm,var_in->nm);
+    if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s: INFO %s reports re-order is identity transformation for variable %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm);
     /* Copy in one fell swoop then return */
     (void)memcpy((void *)(var_out->val.vp),(void *)(var_in->val.vp),var_out->sz*nco_typ_lng(var_out->type));
     return rcd;
   } /* !IDENTITY_REORDER */
 
-  if(var_in->has_dpl_dmn) (void)fprintf(stdout,"%s: WARNING %s reports non-identity re-order for variable with duplicate dimensions %s.\n%s does not support non-identity re-orders of variables with duplicate dimensions\n",prg_nm_get(),fnc_nm,var_in->nm,prg_nm_get());
+  if(var_in->has_dpl_dmn) (void)fprintf(stdout,"%s: WARNING %s reports non-identity re-order for variable with duplicate dimensions %s.\n%s does not support non-identity re-orders of variables with duplicate dimensions\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_prg_nm_get());
 
   /* Compute map for each dimension of input variable */
   for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++) dmn_in_map[dmn_in_idx]=1L;
diff --git a/src/nco/nco_cnf_dmn.h b/src/nco/nco_cnf_dmn.h
index de5ce8e..b71b505 100644
--- a/src/nco/nco_cnf_dmn.h
+++ b/src/nco/nco_cnf_dmn.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_dmn.h,v 1.36 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_dmn.h,v 1.38 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: Conform dimensions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -15,7 +15,7 @@
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, qsort */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
diff --git a/src/nco/nco_cnf_typ.c b/src/nco/nco_cnf_typ.c
index 8fe5c92..8b81929 100644
--- a/src/nco/nco_cnf_typ.c
+++ b/src/nco/nco_cnf_typ.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_typ.c,v 1.59 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_typ.c,v 1.73 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: Conform variable types */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -111,22 +111,39 @@ nco_typ_cnv_rth  /* [fnc] Convert char, short, long, int types to doubles before
   /* Purpose: Convert char, short, long, int types to doubles for arithmetic
      Conversions are performed unless arithmetic operation type is min or max
      Floats (and doubles, of course) are not converted for performance reasons
-     Convert back after weighting and arithmetic are complete! */
+     Remember to convert back after weighting and arithmetic are complete! */
 
   /* Variables which are unpacked into NC_FLOAT should remain NC_FLOAT here
      Unpacking happens 'transparently' when original data are read by nco_var_get() 
      Output structures (i.e., var_prc_out) often correspond to original input type
-     Thus var may have typ_upk=NC_FLOAT and type=NC_SHORT
+     Thus var structure may have typ_upk=NC_FLOAT and type=NC_SHORT
      In that case, promote based on typ_upk rather than on type
      Otherwise most var's that had been unpacked would be converted to NC_DOUBLE here
      That would put them in conflict with corresponding var_out, which is usually
      based on typ_upk
      Check this first, then proceed with normal non-float->double conversion */
-  if(var->typ_upk == NC_FLOAT){
-    var=nco_var_cnf_typ((nc_type)NC_FLOAT,var);
-  }else{ /* Conversion only for appropriate operation types */ 
-    if(var->type != NC_FLOAT && var->type != NC_DOUBLE && nco_op_typ != nco_op_min && nco_op_typ != nco_op_max) var=nco_var_cnf_typ((nc_type)NC_DOUBLE,var);
-  } /* end if */
+
+  /* 20130906:
+     Users have long been uncomfortable with not implicitly converting floats to doubles
+     A new section of the manual that describes the advantages and disadvantages:
+     http://nco.sf.net/nco.html#fxm
+     Implementing --dbl switch on ncwa, ncra, nces (ncap2?) to force implicit conversion */
+  if(nco_rth_cnv_get() == nco_rth_flt_flt){
+
+    /* Traditional NCO convention: promote, where necessary, anything but floats and doubles */
+    if(var->typ_upk == NC_FLOAT){
+      var=nco_var_cnf_typ((nc_type)NC_FLOAT,var);
+    }else{ /* Conversion only for appropriate operation types */ 
+      if(var->type != NC_FLOAT && var->type != NC_DOUBLE && nco_op_typ != nco_op_min && nco_op_typ != nco_op_max) var=nco_var_cnf_typ((nc_type)NC_DOUBLE,var);
+    } /* end if */
+
+  }else{ /* !nco_rth_flt_flt */
+
+    /* User-specified new convention: promote, where necessary, anything but doubles */
+    /* Conversion only for appropriate operation types */ 
+    if(var->type != NC_DOUBLE && nco_op_typ != nco_op_min && nco_op_typ != nco_op_max) var=nco_var_cnf_typ((nc_type)NC_DOUBLE,var);
+    
+  } /* !nco_rth_flt_flt */
   
   return var;
 } /* nco_typ_cnv_rth() */
@@ -180,8 +197,8 @@ nco_cnv_mss_val_typ  /* [fnc] Convert missing_value, if any, to mss_val_out_typ
   if(!var->has_mss_val || var_in_typ == mss_val_out_typ) return var; 
 
   /* Simple error-checking and diagnostics */
-  if(dbg_lvl_get() > 2){
-    (void)fprintf(stderr,"%s: DEBUG %s NCO_MSS_VAL_SNG attribute of variable %s from type %s to type %s\n",prg_nm_get(),mss_val_out_typ > var_in_typ ? "Promoting" : "Demoting",var->nm,nco_typ_sng(var_in_typ),nco_typ_sng(mss_val_out_typ));
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
+    (void)fprintf(stdout,"%s: DEBUG %s NCO_MSS_VAL_SNG attribute of variable %s from type %s to type %s\n",nco_prg_nm_get(),mss_val_out_typ > var_in_typ ? "Promoting" : "Demoting",var->nm,nco_typ_sng(var_in_typ),nco_typ_sng(mss_val_out_typ));
   } /* end if */
   
   /* Sequence of following commands is important (copy before overwriting!) */
@@ -244,8 +261,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
   var_in_typ=var_in->type;
   
   /* Simple error-checking and diagnostics */
-  if(dbg_lvl_get() > 2){
-    (void)fprintf(stderr,"%s: DEBUG %s variable %s from type %s to type %s\n",prg_nm_get(),var_out_typ > var_in_typ ? "Promoting" : "Demoting",var_in->nm,nco_typ_sng(var_in_typ),nco_typ_sng(var_out_typ));
+  if(nco_dbg_lvl_get() >= nco_dbg_scl && nco_dbg_lvl_get() != nco_dbg_dev){
+    (void)fprintf(stdout,"%s: DEBUG %s variable %s from type %s to type %s\n",nco_prg_nm_get(),var_out_typ > var_in_typ ? "Promoting" : "Demoting",var_in->nm,nco_typ_sng(var_in_typ),nco_typ_sng(var_out_typ));
   } /* end if */
   
   /* Move current variable values to swap location */
@@ -314,8 +331,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_INT:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=(nco_int)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=(nco_int)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=(nco_int)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=(nco_int)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.cp[idx];} break;
@@ -330,12 +347,19 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_SHORT:
     switch(var_in_typ){
-      /* fxm: NCO began rounding floating point numbers while converting them to integers on 20111020 
-	 Recommendation and patch from Neil Davis to bix packing bias and align with netCDF Best Practices
-	 NB: Rounding with lround(), lroundf(), llround(), and llroundf() imposes dependency on <math.h> */
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-      /* fxm: Prior to 20111020 NCO did not round() floating point numbers while converting them to integers */
+      /* NCO began rounding floating point numbers while converting them to integers on 20111020 
+	 Recommendation and patch from Neil Davis to fix packing bias and align with netCDF Best Practices
+	 Neil recommended using lround() family and I knew no better so did that from 20111020-20130327
+	 On 20130327 replaced lround() with lrint() family in internal NCO rounding
+	 Halfway cases that were rounded away from zero now round to nearest even integer
+	 NB: Rounding with lround(), lroundf(), llround(), and llroundf() imposes dependency on <math.h>
+	 NB: Rounding with lrint(), lrintf(), llrint(), and llrintf() imposes dependency on <math.h> */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lrintf(val_in.fp[idx]);} break;  /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+      /* case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lroundf(val_in.fp[idx]);} break; *//* Coerce to avoid C++ compiler assignment warning */
+      /* case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lround(val_in.dp[idx]);} break; *//* Coerce to avoid C++ compiler assignment warning */
+      /* Prior to 20111020 NCO did not round() floating point numbers while converting them to integers
+	 Instead it used explicit coercion, which is the same as using truncate(), as the following: */
       /* case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)val_in.fp[idx];} break; *//* Coerce to avoid C++ compiler assignment warning */
       /* case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)val_in.dp[idx];} break; *//* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.ip[idx];} break;
@@ -352,8 +376,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_CHAR:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=(nco_char)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=(nco_char)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=(nco_char)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=(nco_char)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.cp[idx];} break;
@@ -368,8 +392,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_BYTE:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=(nco_byte)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=(nco_byte)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=(nco_byte)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=(nco_byte)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.cp[idx];} break;
@@ -384,8 +408,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_UBYTE:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=(nco_ubyte)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=(nco_ubyte)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=(nco_ubyte)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=(nco_ubyte)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.cp[idx];} break;
@@ -400,8 +424,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_USHORT:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=(nco_ushort)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=(nco_ushort)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=(nco_ushort)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=(nco_ushort)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.cp[idx];} break;
@@ -416,8 +440,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_UINT:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=(nco_uint)lroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=(nco_uint)lround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=(nco_uint)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=(nco_uint)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.cp[idx];} break;
@@ -432,8 +456,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_INT64:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=(nco_int64)llroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=(nco_int64)llround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=(nco_int64)llrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=(nco_int64)llrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.cp[idx];} break;
@@ -448,8 +472,8 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
     } break;
   case NC_UINT64:
     switch(var_in_typ){
-    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=(nco_uint64)llroundf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=(nco_uint64)llround(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=(nco_uint64)llrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=(nco_uint64)llrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.ip[idx];} break;
     case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.sp[idx];} break;
     case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.cp[idx];} break;
@@ -497,6 +521,315 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
   
 } /* end nco_var_cnf_typ() */
 
+var_sct * /* O [sct] Pointer to variable structure of type var_out_typ */
+nco_var_cnf_typ_tst /* [fnc] Return copy of input variable typecast to desired type */
+(const nc_type var_out_typ, /* I [enm] Type to convert variable structure to */
+ var_sct * const var_in) /* I/O [enm] Pointer to variable structure (may be destroyed) */
+{
+  /* 20120302: Same as nco_var_cnf_typ() but keeps missing values in range on down-promotions
+     Similar changes were made to nco_val_cnf_typ_tst() which is based on nco_val_cnf_typ()
+     Intended to address TODO nco1035 */
+  /* Threads: Routine is thread safe and makes no unsafe routines */
+  /* Purpose: Return copy of input variable typecast to desired type
+     Routine converts missing_value, if any, to output type
+     Routine saves time by returning original variable structure
+     with val and type members changed as necessary
+     Routine assumes variable and missing_value, if any, are same type in memory
+     This is currently always true except briefly in ncra (and possibly ncpdq)
+     This condition is unsafe and is described more fully in nco_cnv_mss_val_typ() */
+  long idx;
+  long sz;
+  long sz_msk=long_CEWI; /* Holds value when called with var_in->val.vp==NULL */
+  
+  nc_type var_in_typ;
+  
+  ptr_unn val_in;
+  ptr_unn val_out;
+
+  var_sct *var_out;
+
+  /* Do types of variable AND its missing value already match?
+     This routine assumes missing_value, if any, to be same type as variable */
+  if(var_in->type == var_out_typ) return var_in;
+
+  if(var_in->val.vp==NULL){
+    /* Variable has no data when var_in.val.vp==NULL
+       In this case function should only convert missing values 
+       Accomplish this by temporarily masking off val_in by setting var_in->sz=0
+       Restore correct size at function end
+       fxm: 20050521 Which operators take advantage of this behavior? */
+    sz_msk=var_in->sz;
+    var_in->sz=0L;
+  } /* endif NULL */
+
+  /* Setting output pointer equal to input pointer is confusing
+     Theoretical advantage is that it speeds up routine 
+     Nevertheless, be careful... */
+  var_out=var_in;
+  
+  var_in_typ=var_in->type;
+  
+  /* Simple error-checking and diagnostics */
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
+    (void)fprintf(stdout,"%s: DEBUG %s variable %s from type %s to type %s\n",nco_prg_nm_get(),var_out_typ > var_in_typ ? "Promoting" : "Demoting",var_in->nm,nco_typ_sng(var_in_typ),nco_typ_sng(var_out_typ));
+  } /* end if */
+  
+  /* Move current variable values to swap location */
+  val_in=var_in->val;
+  
+  /* Allocate space for type-conforming values */
+  var_out->type=var_out_typ;
+  var_out->val.vp=(void *)nco_malloc(var_out->sz*nco_typ_lng(var_out->type));
+  
+  /* Define convenience variables to avoid repetitive indirect addressing */
+  sz=var_out->sz;
+  val_out=var_out->val;
+  
+  /* Copy and typecast missing_value attribute, if any */
+  /* Calling routine must avoid re-promoting missing values already promoted during arithmetic */
+  if(var_out->has_mss_val){
+    ptr_unn var_in_mss_val;
+
+    /* Sequence of following commands is important (copy before overwriting!) */
+    var_in_mss_val=var_out->mss_val;
+    var_out->mss_val.vp=(void *)nco_malloc(nco_typ_lng(var_out->type));
+    (void)nco_val_cnf_typ(var_in_typ,var_in_mss_val,var_out_typ,var_out->mss_val);
+    /* Free original */
+    var_in_mss_val.vp=nco_free(var_in_mss_val.vp);
+  } /* end if */
+
+  /* Typecast pointer to values before access 
+     There is only one var structure so use shortcut, de-referenced types */
+  (void)cast_void_nctype(var_in_typ,&val_in);
+  (void)cast_void_nctype(var_out_typ,&val_out);
+  
+  /* Copy and typecast entire array of values, using C implicit coercion */
+  switch(var_out_typ){
+  case NC_FLOAT:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.fp[idx];} break; 
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.dp[idx];} break; 
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.fp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_DOUBLE:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.fp[idx];} break; 
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.dp[idx];} break; 
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.sp[idx];} break;
+      /* valgrind detects uninitialized write errors in following line with GCC 3.4 */
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.dp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_INT:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=(nco_int)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=(nco_int)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.ip[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_SHORT:
+    switch(var_in_typ){
+      /* NCO began rounding floating point numbers while converting them to integers on 20111020 
+	 Recommendation and patch from Neil Davis to fix packing bias and align with netCDF Best Practices
+	 Neil recommended using lround() family and I knew no better so did that from 20111020-20130327
+	 On 20130327 replaced lround() with lrint() family in internal NCO rounding
+	 Halfway cases that were rounded away from zero now round to nearest even integer
+	 NB: Rounding with lround(), lroundf(), llround(), and llroundf() imposes dependency on <math.h>
+	 NB: Rounding with lrint(), lrintf(), llrint(), and llrintf() imposes dependency on <math.h> */
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+      /* case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lroundf(val_in.fp[idx]);} break; *//* Coerce to avoid C++ compiler assignment warning */
+      /* case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)lround(val_in.dp[idx]);} break; *//* Coerce to avoid C++ compiler assignment warning */
+      /* Prior to 20111020 NCO did not round() floating point numbers while converting them to integers
+	 Instead it used explicit coercion, which is the same as using truncate(), as the following: */
+      /* case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)val_in.fp[idx];} break; *//* Coerce to avoid C++ compiler assignment warning */
+      /* case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=(short int)val_in.dp[idx];} break; *//* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.sp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_CHAR:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=(nco_char)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=(nco_char)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.cp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_BYTE:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=(nco_byte)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=(nco_byte)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.bp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_UBYTE:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=(nco_ubyte)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=(nco_ubyte)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.ubp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_USHORT:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=(nco_ushort)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=(nco_ushort)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.usp[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_UINT:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=(nco_uint)lrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=(nco_uint)lrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.uip[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_INT64:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=(nco_int64)llrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=(nco_int64)llrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.i64p[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_UINT64:
+    switch(var_in_typ){
+    case NC_FLOAT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=(nco_uint64)llrintf(val_in.fp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=(nco_uint64)llrint(val_in.dp[idx]);} break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_INT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.ip[idx];} break;
+    case NC_SHORT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.sp[idx];} break;
+    case NC_CHAR: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.cp[idx];} break;
+    case NC_BYTE: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.bp[idx];} break;
+    case NC_UBYTE: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.ubp[idx];} break;
+    case NC_USHORT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.usp[idx];} break;
+    case NC_UINT: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.uip[idx];} break;
+    case NC_INT64: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.i64p[idx];} break;
+    case NC_UINT64: for(idx=0L;idx<sz;idx++) {val_out.ui64p[idx]=val_in.ui64p[idx];} break;
+    case NC_STRING: break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  case NC_STRING:
+    switch(var_in_typ){
+    case NC_FLOAT: break;
+    case NC_DOUBLE: break;
+    case NC_INT: break;
+    case NC_SHORT: break;
+    case NC_CHAR: break;
+    case NC_BYTE: break;
+    case NC_UBYTE: break;
+    case NC_USHORT: break;
+    case NC_UINT: break;
+    case NC_INT64: break;
+    case NC_UINT64: break;
+    case NC_STRING: for(idx=0L;idx<sz;idx++) {val_out.sngp[idx]=val_in.sngp[idx];} break;
+    default: nco_dfl_case_nc_type_err(); break;
+    } break;
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+  
+  /* NB: we operated on local copies of val_in and val_out
+     It is only neccessary to un-typecast pointer to val_in because we access it one more time
+     Un-typecast pointer to val_out for symmetry */
+  (void)cast_nctype_void(var_in_typ,&val_in);
+  (void)cast_nctype_void(var_out_typ,&val_out);
+
+  /* If var_in.vp empty then unmask sz */
+  if(val_in.vp==NULL) var_out->sz=sz_msk;
+
+  /* Free input variable data */
+  val_in.vp=nco_free(val_in.vp);
+  
+  return var_out;
+  
+} /* end nco_var_cnf_typ_tst() */
+
 void
 nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
 (const nc_type typ_in, /* I [enm] Type of input value */
@@ -552,8 +885,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_INT:
     switch(typ_in){
-    case NC_FLOAT: *val_out.ip=(nco_int)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.ip=(nco_int)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.ip=(nco_int)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.ip=(nco_int)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.ip=*val_in.ip; break;
     case NC_SHORT: *val_out.ip=*val_in.sp; break;
     case NC_CHAR: *val_out.ip=(nco_int)strtod((const char *)val_in.cp,(char **)NULL); break; /* Coerce to avoid C++ compiler assignment warning */
@@ -568,8 +901,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_SHORT:
     switch(typ_in){
-    case NC_FLOAT: *val_out.sp=(short int)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.sp=(short int)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.sp=(short int)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.sp=(short int)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.sp=*val_in.ip; break;
     case NC_SHORT: *val_out.sp=*val_in.sp; break;
     case NC_CHAR: *val_out.sp=(short int)strtod((const char *)val_in.cp,(char **)NULL); break; /* Coerce to avoid C++ compiler assignment warning */
@@ -584,8 +917,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_CHAR:
     switch(typ_in){
-    case NC_FLOAT: *val_out.cp=(nco_char)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.cp=(nco_char)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.cp=(nco_char)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.cp=(nco_char)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.cp=*val_in.ip; break;
     case NC_SHORT: *val_out.cp=*val_in.sp; break;
     case NC_CHAR: *val_out.cp=*val_in.cp; break;
@@ -600,8 +933,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_BYTE:
     switch(typ_in){
-    case NC_FLOAT: *val_out.bp=(nco_byte)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.bp=(nco_byte)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.bp=(nco_byte)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.bp=(nco_byte)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.bp=*val_in.ip; break;
     case NC_SHORT: *val_out.bp=*val_in.sp; break;
     case NC_CHAR: *val_out.bp=*val_in.cp; break;
@@ -616,8 +949,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_UBYTE:
     switch(typ_in){
-    case NC_FLOAT: *val_out.ubp=(nco_ubyte)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.ubp=(nco_ubyte)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.ubp=(nco_ubyte)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.ubp=(nco_ubyte)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.ubp=*val_in.ip; break;
     case NC_SHORT: *val_out.ubp=*val_in.sp; break;
     case NC_CHAR: *val_out.ubp=*val_in.cp; break;
@@ -632,8 +965,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_USHORT:
     switch(typ_in){
-    case NC_FLOAT: *val_out.usp=(nco_ushort)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.usp=(nco_ushort)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.usp=(nco_ushort)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.usp=(nco_ushort)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.usp=*val_in.ip; break;
     case NC_SHORT: *val_out.usp=*val_in.sp; break;
     case NC_CHAR: *val_out.usp=*val_in.cp; break;
@@ -648,8 +981,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_UINT:
     switch(typ_in){
-    case NC_FLOAT: *val_out.uip=(nco_uint)lroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.uip=(nco_uint)lround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.uip=(nco_uint)lrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.uip=(nco_uint)lrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.uip=*val_in.ip; break;
     case NC_SHORT: *val_out.uip=*val_in.sp; break;
     case NC_CHAR: *val_out.uip=*val_in.cp; break;
@@ -664,8 +997,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_INT64:
     switch(typ_in){
-    case NC_FLOAT: *val_out.i64p=(nco_int64)llroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.i64p=(nco_int64)llround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.i64p=(nco_int64)llrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.i64p=(nco_int64)llrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.i64p=*val_in.ip; break;
     case NC_SHORT: *val_out.i64p=*val_in.sp; break;
     case NC_CHAR: *val_out.i64p=*val_in.cp; break;
@@ -680,8 +1013,8 @@ nco_val_cnf_typ /* [fnc] Copy val_in and typecast from typ_in to typ_out */
     } break;
   case NC_UINT64:
     switch(typ_in){
-    case NC_FLOAT: *val_out.ui64p=(nco_uint64)llroundf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: *val_out.ui64p=(nco_uint64)llround(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: *val_out.ui64p=(nco_uint64)llrintf(*val_in.fp); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: *val_out.ui64p=(nco_uint64)llrint(*val_in.dp); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: *val_out.ui64p=*val_in.ip; break;
     case NC_SHORT: *val_out.ui64p=*val_in.sp; break;
     case NC_CHAR: *val_out.ui64p=*val_in.cp; break;
@@ -764,8 +1097,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_INT:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.i=(nco_int)lroundf((scv_old->val).f); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: scv_new.val.i=(nco_int)lround((scv_old->val).d); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: scv_new.val.i=(nco_int)lrintf((scv_old->val).f); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: scv_new.val.i=(nco_int)lrint((scv_old->val).d); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: scv_new.val.i =scv_old->val.i; break;
     case NC_SHORT: scv_new.val.i=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.i=(scv_old->val).b; break;
@@ -780,8 +1113,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_SHORT:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.s=(short int)lroundf((scv_old->val).f); break; /* Coerce to avoid C++ compiler assignment warning */
-    case NC_DOUBLE: scv_new.val.s=(short int)lround((scv_old->val).d); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_FLOAT: scv_new.val.s=(short int)lrintf((scv_old->val).f); break; /* Coerce to avoid C++ compiler assignment warning */
+    case NC_DOUBLE: scv_new.val.s=(short int)lrint((scv_old->val).d); break; /* Coerce to avoid C++ compiler assignment warning */
     case NC_INT: scv_new.val.s=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.s=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.s=(scv_old->val).b; break;
@@ -799,8 +1132,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     break;
   case NC_BYTE:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.b=(nco_byte)lroundf((scv_old->val).f); break;
-    case NC_DOUBLE: scv_new.val.b=(nco_byte)lround((scv_old->val).d); break;
+    case NC_FLOAT: scv_new.val.b=(nco_byte)lrintf((scv_old->val).f); break;
+    case NC_DOUBLE: scv_new.val.b=(nco_byte)lrint((scv_old->val).d); break;
     case NC_INT: scv_new.val.b=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.b=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.b=(scv_old->val).b; break;
@@ -815,8 +1148,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_UBYTE:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.ub=(nco_ubyte)lroundf((scv_old->val).f); break;
-    case NC_DOUBLE: scv_new.val.ub=(nco_ubyte)lround((scv_old->val).d); break;
+    case NC_FLOAT: scv_new.val.ub=(nco_ubyte)lrintf((scv_old->val).f); break;
+    case NC_DOUBLE: scv_new.val.ub=(nco_ubyte)lrint((scv_old->val).d); break;
     case NC_INT: scv_new.val.ub=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.ub=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.ub=(scv_old->val).b; break;
@@ -831,8 +1164,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_USHORT:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.us=(nco_ushort)lroundf((scv_old->val).f); break;
-    case NC_DOUBLE: scv_new.val.us=(nco_ushort)lround((scv_old->val).d); break;
+    case NC_FLOAT: scv_new.val.us=(nco_ushort)lrintf((scv_old->val).f); break;
+    case NC_DOUBLE: scv_new.val.us=(nco_ushort)lrint((scv_old->val).d); break;
     case NC_INT: scv_new.val.us=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.us=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.us=(scv_old->val).b; break;
@@ -847,8 +1180,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_UINT:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.ui=(nco_uint)lroundf((scv_old->val).f); break;
-    case NC_DOUBLE: scv_new.val.ui=(nco_uint)lround((scv_old->val).d); break;
+    case NC_FLOAT: scv_new.val.ui=(nco_uint)lrintf((scv_old->val).f); break;
+    case NC_DOUBLE: scv_new.val.ui=(nco_uint)lrint((scv_old->val).d); break;
     case NC_INT: scv_new.val.ui=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.ui=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.ui=(scv_old->val).b; break;
@@ -863,8 +1196,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_INT64:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.i64=(nco_int64)llroundf((scv_old->val).f); break;
-    case NC_DOUBLE: scv_new.val.i64=(nco_int64)llround((scv_old->val).d); break;
+    case NC_FLOAT: scv_new.val.i64=(nco_int64)llrintf((scv_old->val).f); break;
+    case NC_DOUBLE: scv_new.val.i64=(nco_int64)llrint((scv_old->val).d); break;
     case NC_INT: scv_new.val.i64=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.i64=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.i64=(scv_old->val).b; break;
@@ -879,8 +1212,8 @@ nco_scv_cnf_typ /* [fnc] Convert scalar attribute to typ_new using C implicit co
     } break;
   case NC_UINT64:
     switch(typ_old){
-    case NC_FLOAT: scv_new.val.ui64=(nco_uint64)llroundf((scv_old->val).f); break;
-    case NC_DOUBLE: scv_new.val.ui64=(nco_uint64)llround((scv_old->val).d); break;
+    case NC_FLOAT: scv_new.val.ui64=(nco_uint64)llrintf((scv_old->val).f); break;
+    case NC_DOUBLE: scv_new.val.ui64=(nco_uint64)llrint((scv_old->val).d); break;
     case NC_INT: scv_new.val.ui64=(scv_old->val).i; break;
     case NC_SHORT: scv_new.val.ui64=(scv_old->val).s; break;
     case NC_BYTE: scv_new.val.ui64=(scv_old->val).b; break;
@@ -980,27 +1313,20 @@ ncap_typ_hgh /* [fnc] Return Highest type */
   nco_bool v1s;
   nco_bool v2s;
  
-  /* already identical */
-  if(typ_1 == typ_2)
-    return typ_1;
+  /* Already identical */
+  if(typ_1 == typ_2) return typ_1;
 
-  /* deal with NC_DOUBLE */
-  if(typ_1 == NC_DOUBLE || typ_2 == NC_DOUBLE )
-    return NC_DOUBLE;
-  
+  /* Deal with NC_DOUBLE */
+  if(typ_1 == NC_DOUBLE || typ_2 == NC_DOUBLE) return NC_DOUBLE;
 
-  /* deal with NC_FLOAT */
-  if(typ_1 == NC_FLOAT || typ_2 ==NC_FLOAT )
-      return NC_FLOAT;
-  
+  /* Deal with NC_FLOAT */
+  if(typ_1 == NC_FLOAT || typ_2 == NC_FLOAT) return NC_FLOAT;
 
   v1s=nco_typ_sgn(typ_1);
   v2s=nco_typ_sgn(typ_2);
 
   /* Both signed or both unsigned */
-  if( v1s==v2s  )
-    return ( typ_1 > typ_2 ? typ_1 : typ_2 );  
-
+  if(v1s == v2s) return (typ_1 > typ_2 ? typ_1 : typ_2);  
 
   /* From here on one is signed the other unsigned */
   
@@ -1021,22 +1347,20 @@ ncap_typ_hgh /* [fnc] Return Highest type */
       return typ_2; 
       break;
     case NC_SHORT: 
-      return (typ_2<NC_USHORT ? typ_1 : typ_2);
+      return (typ_2 < NC_USHORT ? typ_1 : typ_2);
       break;
     case NC_INT:
-      return (typ_2<NC_UINT ? typ_1 : typ_2); 
+      return (typ_2 < NC_UINT ? typ_1 : typ_2); 
       break;
     case NC_INT64:
-       return (typ_2<NC_UINT64 ? typ_1 : typ_2); 
+      return (typ_2 < NC_UINT64 ? typ_1 : typ_2); 
       break; 
   default: nco_dfl_case_nc_type_err(); break;
-    
   } /* end switch */
   return typ_1;
 } /* end ncap_typ_hgh */
 
-
-nc_type /* O [enm] Highest precision of input variables */
+nc_type /* O [enm] Higher precision of input variables */
 ncap_var_retype /* [fnc] Promote variable to higher common precision */
 (var_sct *var_1, /* I/O [sct] Variable */
  var_sct *var_2) /* I/O [sct] Variable */
@@ -1044,13 +1368,13 @@ ncap_var_retype /* [fnc] Promote variable to higher common precision */
   /* Threads: Routine is thread safe and makes no unsafe routines */
 
   /* Purpose: Perform intelligent type conversion with the netCDF3/4 types */
-  nc_type type;
+  nc_type typ_hgh;
 
-  type=ncap_typ_hgh(var_1->type,var_2->type);
-  var_1=nco_var_cnf_typ(type,var_1);
-  var_2=nco_var_cnf_typ(type,var_2);
+  typ_hgh=ncap_typ_hgh(var_1->type,var_2->type);
+  if(var_1->type != typ_hgh) var_1=nco_var_cnf_typ(typ_hgh,var_1);
+  if(var_2->type != typ_hgh) var_2=nco_var_cnf_typ(typ_hgh,var_2);
 
-  return type;
+  return typ_hgh;
 } /* end ncap_var_retype */
 
 nc_type /* O [enm] Highest precision of arguments */
diff --git a/src/nco/nco_cnf_typ.h b/src/nco/nco_cnf_typ.h
index df7ba40..45c4920 100644
--- a/src/nco/nco_cnf_typ.h
+++ b/src/nco/nco_cnf_typ.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_typ.h,v 1.34 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnf_typ.h,v 1.40 2013/07/16 18:39:43 zender Exp $ */
 
 /* Purpose: Conform variable types */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -15,7 +15,7 @@
 /* Standard header files */
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -24,7 +24,9 @@
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_mmr.h" /* Memory management */
-
+#ifdef _MSC_VER
+# include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
+#endif 
 
 #ifdef __cplusplus
 extern "C" {
@@ -54,6 +56,11 @@ nco_var_cnf_typ /* [fnc] Return copy of input variable typecast to desired type
 (const nc_type var_out_typ, /* I [enm] Type to convert variable structure to */
  var_sct * const var_in); /* I/O [enm] Pointer to variable structure (may be destroyed) */
 
+var_sct * /* O [sct] Pointer to variable structure of type var_out_typ */
+nco_var_cnf_typ_tst /* [fnc] Return copy of input variable typecast to desired type */
+(const nc_type var_out_typ, /* I [enm] Type to convert variable structure to */
+ var_sct * const var_in); /* I/O [enm] Pointer to variable structure (may be destroyed) */
+
 var_sct * /* O [sct] Variable with mss_val converted to typ_upk */
 nco_cnv_mss_val_typ  /* [fnc] Convert missing_value, if any, to mss_val_out_typ */
 (var_sct *var, /* I [sct] Variable with missing_value to convert */
diff --git a/src/nco/nco_cnk.c b/src/nco/nco_cnk.c
index 7fcec62..a720afb 100644
--- a/src/nco/nco_cnk.c
+++ b/src/nco/nco_cnk.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnk.c,v 1.34 2012/02/13 23:09:50 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnk.c,v 1.65 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: NCO utilities for chunking */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -120,7 +120,7 @@ nco_cnk_prs /* [fnc] Create chunking structures with name and chunksize elements
   void nco_usg_prn(void);
   
   char **arg_lst;
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   
   const char dlm_sng[]=",";
   
@@ -141,7 +141,7 @@ nco_cnk_prs /* [fnc] Create chunking structures with name and chunksize elements
        arg_nbr > 2 || /* Too much information */
        arg_lst[0] == NULL || /* Dimension name not specified */
        False){
-      (void)fprintf(stdout,"%s: ERROR in chunksize specification for dimension %s\n%s: HINT Conform request to chunksize documentation at http://nco.sf.net/nco.html#cnk\n",prg_nm_get(),cnk_arg[idx],prg_nm_get());
+      (void)fprintf(stdout,"%s: ERROR in chunksize specification for dimension %s\n%s: HINT Conform request to chunksize documentation at http://nco.sf.net/nco.html#cnk\n",nco_prg_nm_get(),cnk_arg[idx],nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
     } /* end if */
     
@@ -157,6 +157,7 @@ nco_cnk_prs /* [fnc] Create chunking structures with name and chunksize elements
     
     /* Fill-in structure */
     cnk[idx]->nm=arg_lst[0];
+    /* 20130711: Debian Mayhem project bug #716602 shows unsanitized input can cause core-dump _inside_ strtoul() */
     cnk[idx]->sz=strtoul(arg_lst[1],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
     if(*sng_cnv_rcd) nco_sng_cnv_err(arg_lst[1],"strtoul",sng_cnv_rcd);
     
@@ -201,10 +202,169 @@ nco_cnk_free /* [fnc] Free all memory associated with chunking structure */
   return NULL;
 } /* end nco_cnk_free() */
 
+int /* O [enm] Chunking map */
+nco_cnk_map_get /* [fnc] Convert user-specified chunking map to key */
+(const char *nco_cnk_map_sng) /* [sng] User-specified chunking map */
+{
+  /* Purpose: Process ncpdq '-P' command line argument
+     Convert user-specified string to chunking map
+     Return nco_cnk_map_nil by default */
+  const char fnc_nm[]="nco_cnk_map_get()"; /* [sng] Function name */
+  char *nco_prg_nm; /* [sng] Program name */
+  nco_prg_nm=nco_prg_nm_get(); /* [sng] Program name */
+
+  if(nco_cnk_map_sng == NULL){
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports %s invoked without explicit chunking map. Defaulting to chunking map \"rd1\".\n",nco_prg_nm,fnc_nm,nco_prg_nm);
+    return nco_cnk_map_rd1;
+  } /* endif */
+
+  if(!strcmp(nco_cnk_map_sng,"nil")) return nco_cnk_map_nil;
+  if(!strcmp(nco_cnk_map_sng,"cnk_map_nil")) return nco_cnk_map_nil;
+  if(!strcmp(nco_cnk_map_sng,"dmn")) return nco_cnk_map_dmn;
+  if(!strcmp(nco_cnk_map_sng,"cnk_map_dmn")) return nco_cnk_map_dmn;
+  if(!strcmp(nco_cnk_map_sng,"rd1")) return nco_cnk_map_rd1;
+  if(!strcmp(nco_cnk_map_sng,"cnk_map_rd1")) return nco_cnk_map_rd1;
+  if(!strcmp(nco_cnk_map_sng,"scl")) return nco_cnk_map_scl;
+  if(!strcmp(nco_cnk_map_sng,"cnk_map_scl")) return nco_cnk_map_scl;
+  if(!strcmp(nco_cnk_map_sng,"prd")) return nco_cnk_map_prd;
+  if(!strcmp(nco_cnk_map_sng,"cnk_map_prd")) return nco_cnk_map_prd;
+
+  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified chunking map %s\n",nco_prg_nm_get(),fnc_nm,nco_cnk_map_sng);
+  nco_exit(EXIT_FAILURE);
+  return nco_cnk_map_nil; /* Statement should not be reached */
+} /* end nco_cnk_map_get() */
+
+int /* O [enm] Chunking policy */
+nco_cnk_plc_get /* [fnc] Convert user-specified chunking policy to key */
+(const char *nco_cnk_plc_sng) /* [sng] User-specified chunking policy */
+{
+  /* Purpose: Process ncpdq '-P' command line argument
+     Convert user-specified string to chunking operation type 
+     Return nco_cnk_plc_g2d by default */
+  const char fnc_nm[]="nco_cnk_plc_get()"; /* [sng] Function name */
+  char *nco_prg_nm; /* [sng] Program name */
+  nco_prg_nm=nco_prg_nm_get(); /* [sng] Program name */
+
+  if(nco_cnk_plc_sng == NULL){
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports %s invoked without explicit chunking policy. Defaulting to chunking policy \"g2d\".\n",nco_prg_nm,fnc_nm,nco_prg_nm);
+    return nco_cnk_plc_g2d;
+  } /* endif */
+
+  if(!strcmp(nco_cnk_plc_sng,"nil")) return nco_cnk_plc_nil;
+  if(!strcmp(nco_cnk_plc_sng,"cnk_nil")) return nco_cnk_plc_nil;
+  if(!strcmp(nco_cnk_plc_sng,"plc_nil")) return nco_cnk_plc_nil;
+  if(!strcmp(nco_cnk_plc_sng,"all")) return nco_cnk_plc_all;
+  if(!strcmp(nco_cnk_plc_sng,"cnk_all")) return nco_cnk_plc_all;
+  if(!strcmp(nco_cnk_plc_sng,"plc_all")) return nco_cnk_plc_all;
+  if(!strcmp(nco_cnk_plc_sng,"g2d")) return nco_cnk_plc_g2d;
+  if(!strcmp(nco_cnk_plc_sng,"cnk_g2d")) return nco_cnk_plc_g2d;
+  if(!strcmp(nco_cnk_plc_sng,"plc_g2d")) return nco_cnk_plc_g2d;
+  if(!strcmp(nco_cnk_plc_sng,"g3d")) return nco_cnk_plc_g3d;
+  if(!strcmp(nco_cnk_plc_sng,"cnk_g3d")) return nco_cnk_plc_g3d;
+  if(!strcmp(nco_cnk_plc_sng,"plc_g3d")) return nco_cnk_plc_g3d;
+  if(!strcmp(nco_cnk_plc_sng,"xpl")) return nco_cnk_plc_xpl;
+  if(!strcmp(nco_cnk_plc_sng,"cnk_xpl")) return nco_cnk_plc_xpl;
+  if(!strcmp(nco_cnk_plc_sng,"plc_xpl")) return nco_cnk_plc_xpl;
+  if(!strcmp(nco_cnk_plc_sng,"uck")) return nco_cnk_plc_uck;
+  if(!strcmp(nco_cnk_plc_sng,"cnk_uck")) return nco_cnk_plc_uck;
+  if(!strcmp(nco_cnk_plc_sng,"plc_uck")) return nco_cnk_plc_uck;
+  if(!strcmp(nco_cnk_plc_sng,"unchunk")) return nco_cnk_plc_uck;
+
+  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified chunking policy %s\n",nco_prg_nm_get(),fnc_nm,nco_cnk_plc_sng);
+  nco_exit(EXIT_FAILURE);
+  return nco_cnk_plc_nil; /* Statement should not be reached */
+} /* end nco_cnk_plc_get() */
+
+nco_bool /* O [flg] Variable is chunked on disk */
+nco_cnk_dsk_inq /* [fnc] Check whether variable is chunked on disk */
+(const int nc_id, /* I [idx] netCDF file ID */
+ const int var_id) /* I [id] Variable ID */
+{
+  /* Purpose: Check whether variable is chunked on disk */
+  /* nces -O -D 3 -v cnk ~/nco/data/in.nc ~/nco/data/foo.nc */
+  
+  int srg_typ; /* [enm] Storage type */
+  
+  (void)nco_inq_var_chunking(nc_id,var_id,&srg_typ,(size_t *)NULL);
+
+  if(srg_typ == NC_CONTIGUOUS) return False; else return True;
+  
+} /* end nco_cnk_dsk_inq() */
+
+#if 0
+/* NB: Following routines are placeholders, currently not used */
+size_t * /* O [nbr] Chunksize array for variable */
+nco_cnk_sz_get /* [fnc] Determine chunksize array */
+(const int nc_id, /* I [id] netCDF file ID */
+ const char * const var_nm, /* I [sng] Variable name */
+ const int cnk_map, /* I [enm] Chunking map */
+ const int cnk_plc, /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl, /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr) /* I [nbr] Number of dimensions with user-specified chunking */
+{
+  /* Purpose: Use chunking map and policy to determine chunksize list */
+  int dmn_nbr; /* [nbr] Number of dimensions in variable */
+  int dmn_idx;
+  int idx;
+  int rec_dmn_id;
+  
+  size_t *cnk_sz; /* [nbr] Chunksize list */
+  
+  /* Get record dimension ID */
+  (void)nco_inq(nc_id,(int *)NULL,(int *)NULL,(int *)NULL,&rec_dmn_id);
+
+  /* Get type and number of dimensions and attributes for variable */
+
+  cnk_sz=(size_t *)nco_malloc(dmn_nbr*sizeof(size_t));
+  
+  return cnk_sz;
+} /* end nco_cnk_sz_get() */
+
+nco_bool /* O [flg] NCO will attempt to chunk variable */
+nco_is_chunkable /* [fnc] Will NCO attempt to chunk variable? */
+(const nc_type nc_typ_in) /* I [enm] Type of input variable */
+{
+  /* Purpose: Determine whether NCO should attempt to chunk a given type
+     Chunking certain variable types is not recommended, e.g., chunking NC_CHAR
+     and NC_BYTE makes no sense, because precision would needlessly be lost.
+     Routine should be consistent with nco_cnk_plc_typ_get()
+     NB: Routine is deprecated in favor of more flexible nco_cnk_plc_typ_get() */
+  const char fnc_nm[]="nco_is_chunkable()"; /* [sng] Function name */
+
+  (void)fprintf(stdout,"%s: ERROR deprecated routine %s should not be called\n",nco_prg_nm_get(),fnc_nm);
+  nco_exit(EXIT_FAILURE);
+
+  switch(nc_typ_in){ 
+  case NC_FLOAT: 
+  case NC_DOUBLE: 
+  case NC_INT64: 
+  case NC_UINT64: 
+  case NC_INT: 
+  case NC_UINT: 
+    return True;
+    break;
+  case NC_SHORT: 
+  case NC_USHORT: 
+  case NC_CHAR: 
+  case NC_BYTE: 
+  case NC_UBYTE: 
+  case NC_STRING:
+    return False;
+    break;
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */ 
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return False;
+} /* end nco_is_chunkable() */
+
+#endif /* endif 0 */
+
 void
 nco_cnk_sz_set /* [fnc] Set chunksize parameters */
 (const int nc_id, /* I [id] netCDF file ID */
- CST_X_PTR_CST_PTR_CST_Y(lmt_all_sct,lmt_all_lst), /* I [sct] Hyperslab limits */
+ CST_X_PTR_CST_PTR_CST_Y(lmt_msa_sct,lmt_all_lst), /* I [sct] Hyperslab limits */
  const int lmt_all_lst_nbr, /* I [nbr] Number of hyperslab limits */
  int * const cnk_map_ptr, /* I/O [enm] Chunking map */
  int * const cnk_plc_ptr, /* I/O [enm] Chunking policy */
@@ -230,7 +390,6 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
   int fl_fmt; /* [enm] Input file format */
   int lmt_idx;
   int lmt_idx_rec=int_CEWI;
-  int nbr_dmn_fl; /* [nbr] Number of dimensions in file */
   int rcd_dmn_id;
   int srg_typ; /* [enm] Storage type */
   int var_idx;
@@ -246,7 +405,7 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
   nco_bool must_be_chunked; /* [flg] Variable must be chunked */
 
   nc_type var_typ_dsk;
-  
+
   size_t *cnk_sz; /* [nbr] Chunksize list */
   size_t cnk_sz_dfl; /* [nbr] Chunksize default */
 
@@ -256,8 +415,8 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
   if(!flg_cnk) return;
 
   /* Set actual chunk policy and map to defaults as necessary
-     This rather arcane procedure saves a few lines of code in calling program
-     (because defaults not set there) while maintaining correctness of arguments */
+  This rather arcane procedure saves a few lines of code in calling program
+  (because defaults not set there) while maintaining correctness of arguments */
   if(*cnk_map_ptr == nco_cnk_map_nil) *cnk_map_ptr=nco_cnk_map_get((char *)NULL);
   if(*cnk_plc_ptr == nco_cnk_plc_nil) *cnk_plc_ptr=nco_cnk_plc_get((char *)NULL);
   cnk_map=*cnk_map_ptr;
@@ -265,25 +424,25 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
 
   /* Bail on unsupported options */
   if(cnk_plc == nco_cnk_plc_xpl){
-    (void)fprintf(stderr,"%s: ERROR cnk_plc = %s not yet supported\n",prg_nm_get(),nco_cnk_plc_sng_get(cnk_plc));
+    (void)fprintf(stderr,"%s: ERROR cnk_plc = %s not yet supported\n",nco_prg_nm_get(),nco_cnk_plc_sng_get(cnk_plc));
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
   /* Does output file support chunking? */
   (void)nco_inq_format(nc_id,&fl_fmt);
   if(fl_fmt != NC_FORMAT_NETCDF4 && fl_fmt != NC_FORMAT_NETCDF4_CLASSIC){
-    (void)fprintf(stderr,"%s: WARNING Output file format is %s so chunking request will be ignored\n",prg_nm_get(),nco_fmt_sng(fl_fmt));
+    (void)fprintf(stderr,"%s: WARNING Output file format is %s so chunking request will be ignored\n",nco_prg_nm_get(),nco_fmt_sng(fl_fmt));
     return;
   } /* endif dbg */
 
   /* Vet input */
   if(cnk_map == nco_cnk_map_scl && cnk_sz_scl <= 0){
-    (void)fprintf(stderr,"%s: ERROR cnk_sz_scl = %lu must be greater than 0\n",prg_nm_get(),(unsigned long)cnk_sz_scl);
+    (void)fprintf(stderr,"%s: ERROR cnk_sz_scl = %lu must be greater than 0\n",nco_prg_nm_get(),(unsigned long)cnk_sz_scl);
     nco_exit(EXIT_FAILURE);
   } /* endif cnk_sz_scl */
 
-  if(dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Requested chunking or unchunking\n",prg_nm_get());
-  if(dbg_lvl_get() >= nco_dbg_scl){
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Requested chunking or unchunking\n",nco_prg_nm_get());
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
     (void)fprintf(stderr,"cnk_plc: %s\n",nco_cnk_plc_sng_get(cnk_plc));
     (void)fprintf(stderr,"cnk_map: %s\n",nco_cnk_map_sng_get(cnk_map));
     (void)fprintf(stderr,"cnk_sz_scl: %lu\n",(unsigned long)cnk_sz_scl);
@@ -294,16 +453,16 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
   } /* endif dbg */
 
   /* Get record dimension ID */
-  (void)nco_inq(nc_id,&nbr_dmn_fl,&var_nbr,(int *)NULL,&rcd_dmn_id);
-  
+  (void)nco_inq(nc_id,(int *)NULL,&var_nbr,(int *)NULL,&rcd_dmn_id);
+
   /* Find record dimension, if any, in limit structure list first
-     This information may be needed below */
+  This information may be needed below */
   if(rcd_dmn_id != NCO_REC_DMN_UNDEFINED){
     (void)nco_inq_dimname(nc_id,rcd_dmn_id,dmn_nm);
     for(lmt_idx=0;lmt_idx<lmt_all_lst_nbr;lmt_idx++){
       if(!strcmp(dmn_nm,lmt_all_lst[lmt_idx]->dmn_nm)){
-	lmt_idx_rec=lmt_idx;
-	break;
+        lmt_idx_rec=lmt_idx;
+        break;
       } /* end if */
     } /* end loop over limit */
   } /* NCO_REC_DMN_UNDEFINED */
@@ -321,19 +480,19 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
 
     /* Get type and number of dimensions for variable */
     (void)nco_inq_var(nc_id,var_idx,var_nm,&var_typ_dsk,&dmn_nbr,(int *)NULL,(int *)NULL);
-    
+
     if(dmn_nbr == 0) continue; /* Skip chunking calls for scalars */
 
     /* Allocate space to hold dimension IDs */
     dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
     /* Get dimension IDs */
     (void)nco_inq_vardimid(nc_id,var_idx,dmn_id);
-    
+
     /* Is this a record variable? */
     if(rcd_dmn_id != NCO_REC_DMN_UNDEFINED){
       for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
-	/* Is this the record dimension? */
-	if(dmn_id[dmn_idx] == rcd_dmn_id) break; /* ...then search no further */
+        /* Is this the record dimension? */
+        if(dmn_id[dmn_idx] == rcd_dmn_id) break; /* ...then search no further */
       } /* end loop over dmn */
       if(dmn_idx < dmn_nbr) is_rec_var=True; /* [flg] Record variable */
     } /* NCO_REC_DMN_UNDEFINED */
@@ -341,7 +500,7 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
     /* Is variable compressed? */
     (void)nco_inq_var_deflate(nc_id,var_idx,NULL,&deflate,NULL);
     if(deflate) is_cmp_var=True; 
-    
+
     /* Is variable checksummed? */
     (void)nco_inq_var_fletcher32(nc_id,var_idx,&chk_typ);
     if(chk_typ != NC_NOCHECKSUM) is_chk_var=True;
@@ -354,34 +513,34 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
 
     /* Explicitly turn off chunking for arrays that are... */
     if((cnk_plc == nco_cnk_plc_g2d && dmn_nbr < 2) || /* ...much too small... */
-       (cnk_plc == nco_cnk_plc_g3d && dmn_nbr < 3) || /* ...too small... */
-       (cnk_plc == nco_cnk_plc_uck) || /* ...intentionally unchunked... */
-       False){
-      /* If variable is chunked */
-      if(is_chunked){
-	if(must_be_chunked){
-	  if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s %s must be chunked (record, compressed, or checksummed variable)\n",prg_nm_get(),fnc_nm,var_nm);
-	}else{
-	  /* Turn off chunking for this variable */
-	  if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s unchunking %s\n",prg_nm_get(),fnc_nm,var_nm);
-	  (void)nco_def_var_chunking(nc_id,var_idx,srg_typ,cnk_sz);
-	} /* !must_be_chunked */
-      }else{ /* !chunked */
-	if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s not unchunking %s because it is not chunked\n",prg_nm_get(),fnc_nm,var_nm);
-      } /* !chunked */
-      /* Free space holding dimension IDs before skipping to next variable */
-      dmn_id=(int *)nco_free(dmn_id);
-      /* Skip to next variable in loop */
-      continue;
+      (cnk_plc == nco_cnk_plc_g3d && dmn_nbr < 3) || /* ...too small... */
+      (cnk_plc == nco_cnk_plc_uck) || /* ...intentionally unchunked... */
+      False){
+        /* If variable is chunked */
+        if(is_chunked){
+          if(must_be_chunked){
+            if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s %s must be chunked (record, compressed, or checksummed variable)\n",nco_prg_nm_get(),fnc_nm,var_nm);
+          }else{
+            /* Turn off chunking for this variable */
+            if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s unchunking %s\n",nco_prg_nm_get(),fnc_nm,var_nm);
+            (void)nco_def_var_chunking(nc_id,var_idx,srg_typ,cnk_sz);
+          } /* !must_be_chunked */
+        }else{ /* !chunked */
+          if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s not unchunking %s because it is not chunked\n",nco_prg_nm_get(),fnc_nm,var_nm);
+        } /* !chunked */
+        /* Free space holding dimension IDs before skipping to next variable */
+        dmn_id=(int *)nco_free(dmn_id);
+        /* Skip to next variable in loop */
+        continue;
     } /* end if */
 
     /* Variable will definitely be chunked */
     srg_typ=NC_CHUNKED; /* [enm] Storage type */
-    if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s %schunking %s\n",prg_nm_get(),fnc_nm,(is_chunked ? "re-" : "" ),var_nm);
+    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO %s %schunking %s\n",nco_prg_nm_get(),fnc_nm,(is_chunked ? "re-" : "" ),var_nm);
 
     /* Allocate space to hold chunksizes */
     cnk_sz=(size_t *)nco_malloc(dmn_nbr*sizeof(size_t));
-    
+
     /* Default "equal" chunksize for each dimension */
     cnk_sz_dfl=cnk_sz_scl;
     if(cnk_map == nco_cnk_map_prd){
@@ -398,256 +557,421 @@ nco_cnk_sz_set /* [fnc] Set chunksize parameters */
 
       /* Get dimension name and size */
       (void)nco_inq_dim(nc_id,dmn_id[dmn_idx],dmn_nm,&dmn_sz);
-      
+
       /* Is this the record dimension? */
       if(dmn_id[dmn_idx] == rcd_dmn_id){
-	/* Does policy specify record dimension treatment? */
-	if(cnk_map == nco_cnk_map_rd1){
-	  cnk_sz[dmn_idx]=1UL;
-	  /* This may still be over-ridden by explicitly specified chunksize */
-	  goto cnk_xpl_override;
-	} /* !nco_cnk_map_rd1 */
-	/* Record dimension size in output file is zero until first write
-	   Obtain record dimension size from lmt_all structure */
-	if(lmt_all_lst[lmt_idx_rec]->BASIC_DMN){
-	  /* When not hyperslabbed, use input record dimension size ... */
-	  cnk_sz[dmn_idx]=lmt_all_lst[lmt_idx_rec]->dmn_sz_org;
-	}else{ /* !BASIC_DMN */
-	  /* ... and when hyperslabbed, use user-specified count */
-	  cnk_sz[dmn_idx]=lmt_all_lst[lmt_idx_rec]->dmn_cnt;
-	} /* !BASIC_DMN */
+        /* Does policy specify record dimension treatment? */
+        if(cnk_map == nco_cnk_map_rd1){
+          cnk_sz[dmn_idx]=1UL;
+          /* This may still be over-ridden by explicitly specified chunksize */
+          goto cnk_xpl_override;
+        } /* !nco_cnk_map_rd1 */
+        /* Record dimension size in output file is zero until first write
+        Obtain record dimension size from lmt_all structure */
+        if(lmt_all_lst[lmt_idx_rec]->BASIC_DMN){
+          /* When not hyperslabbed, use input record dimension size ... */
+          cnk_sz[dmn_idx]=lmt_all_lst[lmt_idx_rec]->dmn_sz_org;
+        }else{ /* !BASIC_DMN */
+          /* ... and when hyperslabbed, use user-specified count */
+          cnk_sz[dmn_idx]=lmt_all_lst[lmt_idx_rec]->dmn_cnt;
+        } /* !BASIC_DMN */
       }else{ /* !record dimension */
-	/* Set non-record dimensions to default, possibly over-ride later */
-	cnk_sz[dmn_idx]=dmn_sz;
-	if(dmn_sz == 0L){
-	  (void)fprintf(stderr,"%s: ERROR %s reports variable %s has dim_sz == 0L for non-record dimension %s. This should not occur and it will cause chunking to fail...\n",prg_nm_get(),fnc_nm,var_nm,dmn_nm);
-	} /* endif err */
+        /* Set non-record dimensions to default, possibly over-ride later */
+        cnk_sz[dmn_idx]=dmn_sz;
+        if(dmn_sz == 0L){
+          (void)fprintf(stderr,"%s: ERROR %s reports variable %s has dim_sz == 0L for non-record dimension %s. This should not occur and it will cause chunking to fail...\n",nco_prg_nm_get(),fnc_nm,var_nm,dmn_nm);
+        } /* endif err */
       } /* !record dimension */
 
       /* Propagate scalar chunksize, if specified */
       if(cnk_sz_dfl > 0UL){
-	if(dmn_id[dmn_idx] == rcd_dmn_id){
-	if(lmt_all_lst[lmt_idx_rec]->BASIC_DMN){
-	  /* When not hyperslabbed, use input record dimension size ... */
-	  cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)lmt_all_lst[lmt_idx_rec]->dmn_sz_org) ? cnk_sz_dfl : (size_t)lmt_all_lst[lmt_idx_rec]->dmn_sz_org;
-	}else{ /* !BASIC_DMN */
-	  /* ... and when hyperslabbed, use user-specified count */
-	  cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)lmt_all_lst[lmt_idx_rec]->dmn_cnt) ? cnk_sz_dfl : (size_t)lmt_all_lst[lmt_idx_rec]->dmn_cnt;
-	} /* !BASIC_DMN */
-	}else{ /* !rcd_dmn_id */
-	  /* Non-record sizes default to cnk_sz_dfl or to dimension size */
-	  cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)dmn_sz) ? cnk_sz_dfl : (size_t)dmn_sz;
-	} /* !rcd_dmn_id */
+        if(dmn_id[dmn_idx] == rcd_dmn_id){
+          if(lmt_all_lst[lmt_idx_rec]->BASIC_DMN){
+            /* When not hyperslabbed, use input record dimension size ... */
+            cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)lmt_all_lst[lmt_idx_rec]->dmn_sz_org) ? cnk_sz_dfl : (size_t)lmt_all_lst[lmt_idx_rec]->dmn_sz_org;
+          }else{ /* !BASIC_DMN */
+            /* ... and when hyperslabbed, use user-specified count */
+            cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)lmt_all_lst[lmt_idx_rec]->dmn_cnt) ? cnk_sz_dfl : (size_t)lmt_all_lst[lmt_idx_rec]->dmn_cnt;
+          } /* !BASIC_DMN */
+        }else{ /* !rcd_dmn_id */
+          /* Non-record sizes default to cnk_sz_dfl or to dimension size */
+          cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)dmn_sz) ? cnk_sz_dfl : (size_t)dmn_sz;
+        } /* !rcd_dmn_id */
       } /* !cnk_sz_dfl */
 
-      cnk_xpl_override: /* end goto */
+cnk_xpl_override: /* end goto */
 
       /* Explicit chunk specifications override all else */
       for(cnk_idx=0;cnk_idx<cnk_nbr;cnk_idx++){
-	/* Match on name not ID */
-	if(!strcmp(cnk[cnk_idx]->nm,dmn_nm)){
-	  cnk_sz[dmn_idx]=cnk[cnk_idx]->sz;
-	  if(dmn_id[dmn_idx] == rcd_dmn_id){
-	    if(lmt_all_lst[lmt_idx_rec]->BASIC_DMN){
-	      if(cnk_sz[dmn_idx] > (size_t)lmt_all_lst[lmt_idx_rec]->dmn_sz_org){
-		(void)fprintf(stderr,"%s: WARNING %s allowing user-specified record dimension chunksize = %lu for %s to exceed record dimension size in input file = %lu. May fail if output file is not concatenated from multiple inputs.\n",prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_nm,lmt_all_lst[lmt_idx_rec]->dmn_sz_org);
-	      } /* endif too big */
-	    }else{ /* !BASIC_DMN */
-	      if(cnk_sz[dmn_idx] > (size_t)lmt_all_lst[lmt_idx_rec]->dmn_cnt){
-		(void)fprintf(stderr,"%s: WARNING %s allowing user-specified record dimension chunksize = %lu for %s to exceed user-specified record dimension hyperslab size in input file = %lu. May fail if output file is not concatenated from multiple inputs.\n",prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_nm,lmt_all_lst[lmt_idx_rec]->dmn_cnt);
-	      } /* endif too big */
-	    } /* !BASIC_DMN */
-	  }else{ /* !rcd_dmn_id */
-	    if(cnk_sz[dmn_idx] > (size_t)dmn_sz){
-	      /* dmn_sz of record dimension may (will) be zero in output file
-		 Non-record dimensions, though, must have cnk_sz <= dmn_sz */
-	      (void)fprintf(stderr,"%s: WARNING %s trimming user-specified chunksize = %lu to %s size = %lu\n",prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_nm,dmn_sz);
-	      /* Trim else out-of-bounds sizes will fail in HDF library in nc_enddef() */
-	      cnk_sz[dmn_idx]=(size_t)dmn_sz;
-	    } /* endif */
-	  } /* !rcd_dmn_id */
-	  break;
-	} /* cnk_nm != dmn_nm */
+        /* Match on name not ID */
+        if(!strcmp(cnk[cnk_idx]->nm,dmn_nm)){
+          cnk_sz[dmn_idx]=cnk[cnk_idx]->sz;
+          if(dmn_id[dmn_idx] == rcd_dmn_id){
+            if(lmt_all_lst[lmt_idx_rec]->BASIC_DMN){
+              if(cnk_sz[dmn_idx] > (size_t)lmt_all_lst[lmt_idx_rec]->dmn_sz_org){
+                (void)fprintf(stderr,"%s: WARNING %s allowing user-specified record dimension chunksize = %lu for %s to exceed record dimension size in input file = %lu. May fail if output file is not concatenated from multiple inputs.\n",nco_prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_nm,lmt_all_lst[lmt_idx_rec]->dmn_sz_org);
+              } /* endif too big */
+            }else{ /* !BASIC_DMN */
+              if(cnk_sz[dmn_idx] > (size_t)lmt_all_lst[lmt_idx_rec]->dmn_cnt){
+                (void)fprintf(stderr,"%s: WARNING %s allowing user-specified record dimension chunksize = %lu for %s to exceed user-specified record dimension hyperslab size in input file = %lu. May fail if output file is not concatenated from multiple inputs.\n",nco_prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_nm,lmt_all_lst[lmt_idx_rec]->dmn_cnt);
+              } /* endif too big */
+            } /* !BASIC_DMN */
+          }else{ /* !rcd_dmn_id */
+            if(cnk_sz[dmn_idx] > (size_t)dmn_sz){
+              /* dmn_sz of record dimension may (will) be zero in output file
+              Non-record dimensions, though, must have cnk_sz <= dmn_sz */
+              (void)fprintf(stderr,"%s: WARNING %s trimming user-specified chunksize = %lu to %s size = %lu\n",nco_prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_nm,dmn_sz);
+              /* Trim else out-of-bounds sizes will fail in HDF library in nc_enddef() */
+              cnk_sz[dmn_idx]=(size_t)dmn_sz;
+            } /* endif */
+          } /* !rcd_dmn_id */
+          break;
+        } /* cnk_nm != dmn_nm */
       } /* end loop over cnk */
 
     } /* end loop over dmn */
-    
-    if(dbg_lvl_get() >= nco_dbg_scl){
+
+    if(nco_dbg_lvl_get() >= nco_dbg_scl){
       (void)fprintf(stderr,"idx nm\tdmn_sz\tcnk_sz for %s:\n",var_nm);
       for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
-	(void)nco_inq_dimlen(nc_id,dmn_id[dmn_idx],&dmn_sz);
-	(void)nco_inq_dimname(nc_id,dmn_id[dmn_idx],dmn_nm);
-	(void)fprintf(stderr,"%2d %s\t%lu\t%lu\n",dmn_idx,dmn_nm,dmn_sz,(unsigned long)cnk_sz[dmn_idx]);
+        (void)nco_inq_dimlen(nc_id,dmn_id[dmn_idx],&dmn_sz);
+        (void)nco_inq_dimname(nc_id,dmn_id[dmn_idx],dmn_nm);
+        (void)fprintf(stderr,"%2d %s\t%lu\t%lu\n",dmn_idx,dmn_nm,dmn_sz,(unsigned long)cnk_sz[dmn_idx]);
       } /* end loop over dmn */
     } /* endif dbg */
 
     /* Turn chunking on for this variable */
     (void)nco_def_var_chunking(nc_id,var_idx,srg_typ,cnk_sz);
-    
+
     /* Free space holding dimension IDs and chunksizes */
     dmn_id=(int *)nco_free(dmn_id);
     cnk_sz=(size_t *)nco_free(cnk_sz);
 
   } /* end loop over var */
-  
+
   return;
 } /* end nco_cnk_sz_set() */
 
-int /* O [enm] Chunking map */
-nco_cnk_map_get /* [fnc] Convert user-specified chunking map to key */
-(const char *nco_cnk_map_sng) /* [sng] User-specified chunking map */
+void
+nco_cnk_sz_set_trv                     /* [fnc] Set chunksize parameters (GTT version of nco_cnk_sz_set() ) */
+(const int grp_id,                     /* I [id] netCDF group ID in output file */
+ int * const cnk_map_ptr,              /* I/O [enm] Chunking map */
+ int * const cnk_plc_ptr,              /* I/O [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const trv_sct * const var_trv)        /* I [sct] Variable Object */
 {
-  /* Purpose: Process ncpdq '-P' command line argument
-     Convert user-specified string to chunking map
-     Return nco_cnk_map_nil by default */
-  const char fnc_nm[]="nco_cnk_map_get()"; /* [sng] Function name */
-  char *prg_nm; /* [sng] Program name */
-  prg_nm=prg_nm_get(); /* [sng] Program name */
+  /* Purpose: Use chunking map and policy to determine chunksize list
+  Adapted from nco_cnk_sz_set() to GTT:
+  1) Instead of a loop for all varibales, this functions does one variable, the object parameter variable
+  2) In the dimension loop, the dimension object is obtained from variable object...much simpler 
+  */
 
-  if(nco_cnk_map_sng == NULL){
-    if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports %s invoked without explicit chunking map. Defaulting to chunking map \"rd1\".\n",prg_nm,fnc_nm,prg_nm);
-    return nco_cnk_map_rd1;
-  } /* endif */
+  const char fnc_nm[]="nco_cnk_sz_set_trv()"; /* [sng] Function name */
 
-  if(!strcmp(nco_cnk_map_sng,"nil")) return nco_cnk_map_nil;
-  if(!strcmp(nco_cnk_map_sng,"cnk_map_nil")) return nco_cnk_map_nil;
-  if(!strcmp(nco_cnk_map_sng,"dmn")) return nco_cnk_map_dmn;
-  if(!strcmp(nco_cnk_map_sng,"cnk_map_dmn")) return nco_cnk_map_dmn;
-  if(!strcmp(nco_cnk_map_sng,"rd1")) return nco_cnk_map_rd1;
-  if(!strcmp(nco_cnk_map_sng,"cnk_map_rd1")) return nco_cnk_map_rd1;
-  if(!strcmp(nco_cnk_map_sng,"scl")) return nco_cnk_map_scl;
-  if(!strcmp(nco_cnk_map_sng,"cnk_map_scl")) return nco_cnk_map_scl;
-  if(!strcmp(nco_cnk_map_sng,"prd")) return nco_cnk_map_prd;
-  if(!strcmp(nco_cnk_map_sng,"cnk_map_prd")) return nco_cnk_map_prd;
+  char var_nm[NC_MAX_NAME];  /* [sng] Variable name */
 
-  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified chunking map %s\n",prg_nm_get(),fnc_nm,nco_cnk_map_sng);
-  nco_exit(EXIT_FAILURE);
-  return nco_cnk_map_nil; /* Statement should not be reached */
-} /* end nco_cnk_map_get() */
+  nc_type var_typ_dsk;       /* [nbr] Variable type */
 
-int /* O [enm] Chunking policy */
-nco_cnk_plc_get /* [fnc] Convert user-specified chunking policy to key */
-(const char *nco_cnk_plc_sng) /* [sng] User-specified chunking policy */
-{
-  /* Purpose: Process ncpdq '-P' command line argument
-     Convert user-specified string to chunking operation type 
-     Return nco_cnk_plc_g2d by default */
-  const char fnc_nm[]="nco_cnk_plc_get()"; /* [sng] Function name */
-  char *prg_nm; /* [sng] Program name */
-  prg_nm=prg_nm_get(); /* [sng] Program name */
+  nco_bool flg_cnk=False;    /* [flg] Chunking requested */
+  nco_bool is_rec_var;       /* [flg] Record variable */
+  nco_bool is_chk_var;       /* [flg] Checksummed variable */
+  nco_bool is_cmp_var;       /* [flg] Compressed variable */
+  nco_bool is_chunked;       /* [flg] Chunked variable */
+  nco_bool must_be_chunked;  /* [flg] Variable must be chunked */
 
-  if(nco_cnk_plc_sng == NULL){
-    if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports %s invoked without explicit chunking policy. Defaulting to chunking policy \"g2d\".\n",prg_nm,fnc_nm,prg_nm);
-    return nco_cnk_plc_g2d;
+  int cnk_map;               /* [enm] Chunking map */
+  int cnk_plc;               /* [enm] Chunking policy */
+  int fl_fmt;                /* [enm] Input file format */
+  int var_id;                /* [ID] Variable ID */
+  int nbr_dmn;               /* [nbr] Number of dimensions for variable */
+  int srg_typ;               /* [enm] Storage type */
+  int deflate;               /* [enm] Deflate filter is on */
+  int chk_typ;               /* [enm] Checksum type */
+
+  size_t cnk_sz[NC_MAX_DIMS];/* [nbr] Chunksize list */
+  size_t cnk_sz_dfl;         /* [nbr] Chunksize default */
+
+  /* Did user explicitly request chunking? */
+  if(cnk_nbr > 0 || cnk_sz_scl > 0UL || *cnk_map_ptr != nco_cnk_map_nil || *cnk_plc_ptr != nco_cnk_plc_nil){
+    flg_cnk=True;
+  }
+
+  if(!flg_cnk) return;
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)fprintf(stdout,"%s: INFO %s defining chunk for <%s>\n",nco_prg_nm_get(),fnc_nm,
+      var_trv->nm_fll);
+  }
+
+  /* This object must be a variable */
+  assert(var_trv->nco_typ == nco_obj_typ_var);
+
+  /* Set actual chunk policy and map to defaults as necessary
+  This rather arcane procedure saves a few lines of code in calling program
+  (because defaults not set there) while maintaining correctness of arguments */
+  if(*cnk_map_ptr == nco_cnk_map_nil) *cnk_map_ptr=nco_cnk_map_get((char *)NULL);
+  if(*cnk_plc_ptr == nco_cnk_plc_nil) *cnk_plc_ptr=nco_cnk_plc_get((char *)NULL);
+  cnk_map=*cnk_map_ptr;
+  cnk_plc=*cnk_plc_ptr;
+
+  /* Bail on unsupported options */
+  if(cnk_plc == nco_cnk_plc_xpl){
+    (void)fprintf(stderr,"%s: ERROR cnk_plc = %s not yet supported\n",nco_prg_nm_get(),nco_cnk_plc_sng_get(cnk_plc));
+    nco_exit(EXIT_FAILURE);
   } /* endif */
 
-  if(!strcmp(nco_cnk_plc_sng,"nil")) return nco_cnk_plc_nil;
-  if(!strcmp(nco_cnk_plc_sng,"cnk_nil")) return nco_cnk_plc_nil;
-  if(!strcmp(nco_cnk_plc_sng,"plc_nil")) return nco_cnk_plc_nil;
-  if(!strcmp(nco_cnk_plc_sng,"all")) return nco_cnk_plc_all;
-  if(!strcmp(nco_cnk_plc_sng,"cnk_all")) return nco_cnk_plc_all;
-  if(!strcmp(nco_cnk_plc_sng,"plc_all")) return nco_cnk_plc_all;
-  if(!strcmp(nco_cnk_plc_sng,"g2d")) return nco_cnk_plc_g2d;
-  if(!strcmp(nco_cnk_plc_sng,"cnk_g2d")) return nco_cnk_plc_g2d;
-  if(!strcmp(nco_cnk_plc_sng,"plc_g2d")) return nco_cnk_plc_g2d;
-  if(!strcmp(nco_cnk_plc_sng,"g3d")) return nco_cnk_plc_g3d;
-  if(!strcmp(nco_cnk_plc_sng,"cnk_g3d")) return nco_cnk_plc_g3d;
-  if(!strcmp(nco_cnk_plc_sng,"plc_g3d")) return nco_cnk_plc_g3d;
-  if(!strcmp(nco_cnk_plc_sng,"xpl")) return nco_cnk_plc_xpl;
-  if(!strcmp(nco_cnk_plc_sng,"cnk_xpl")) return nco_cnk_plc_xpl;
-  if(!strcmp(nco_cnk_plc_sng,"plc_xpl")) return nco_cnk_plc_xpl;
-  if(!strcmp(nco_cnk_plc_sng,"uck")) return nco_cnk_plc_uck;
-  if(!strcmp(nco_cnk_plc_sng,"cnk_uck")) return nco_cnk_plc_uck;
-  if(!strcmp(nco_cnk_plc_sng,"plc_uck")) return nco_cnk_plc_uck;
-  if(!strcmp(nco_cnk_plc_sng,"unchunk")) return nco_cnk_plc_uck;
+  /* Does output file support chunking? */
+  (void)nco_inq_format(grp_id,&fl_fmt);
+  if(fl_fmt != NC_FORMAT_NETCDF4 && fl_fmt != NC_FORMAT_NETCDF4_CLASSIC){
+    (void)fprintf(stderr,"%s: WARNING Output file format is %s so chunking request will be ignored\n",nco_prg_nm_get(),nco_fmt_sng(fl_fmt));
+    return;
+  } /* endif dbg */
 
-  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified chunking policy %s\n",prg_nm_get(),fnc_nm,nco_cnk_plc_sng);
-  nco_exit(EXIT_FAILURE);
-  return nco_cnk_plc_nil; /* Statement should not be reached */
-} /* end nco_cnk_plc_get() */
+  /* Vet input */
+  if(cnk_map == nco_cnk_map_scl && cnk_sz_scl <= 0){
+    (void)fprintf(stderr,"%s: ERROR cnk_sz_scl = %lu must be greater than 0\n",nco_prg_nm_get(),(unsigned long)cnk_sz_scl);
+    nco_exit(EXIT_FAILURE);
+  } /* endif cnk_sz_scl */
 
-nco_bool /* O [flg] Variable is chunked on disk */
-nco_cnk_dsk_inq /* [fnc] Check whether variable is chunked on disk */
-(const int nc_id, /* I [idx] netCDF file ID */
- const int var_id) /* I [id] Variable ID */
-{
-  /* Purpose: Check whether variable is chunked on disk */
-  /* ncea -O -D 3 -v cnk ~/nco/data/in.nc ~/nco/data/foo.nc */
-  
-  int srg_typ; /* [enm] Storage type */
-  
-  (void)nco_inq_var_chunking(nc_id,var_id,&srg_typ,(size_t *)NULL);
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stdout,"%s: INFO Requested chunking or unchunking\n",nco_prg_nm_get());
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
+    (void)fprintf(stdout,"cnk_plc: %s\n",nco_cnk_plc_sng_get(cnk_plc));
+    (void)fprintf(stdout,"cnk_map: %s\n",nco_cnk_map_sng_get(cnk_map));
+    (void)fprintf(stdout,"cnk_sz_scl: %lu\n",(unsigned long)cnk_sz_scl);
+    if(cnk_nbr > 0){
+      (void)fprintf(stdout,"idx dmn_nm\tcnk_sz:\n");
+      for(int cnk_idx=0;cnk_idx<cnk_nbr;cnk_idx++) (void)fprintf(stdout,"%2d %s\t%lu\n",cnk_idx,cnk[cnk_idx]->nm,(unsigned long)cnk[cnk_idx]->sz);
+    } /* cnk_nbr == 0 */
+  } /* endif dbg */
 
-  if(srg_typ == NC_CONTIGUOUS) return False; else return True;
-  
-} /* end nco_cnk_dsk_inq() */
+  /* Initialize storage type for this variable */
+  srg_typ=NC_CONTIGUOUS; /* [enm] Storage type */
+  is_rec_var=False; /* [flg] Record variable */
+  is_chk_var=False; /* [flg] Checksummed variable */
+  is_cmp_var=False; /* [flg] Compressed variable */
+  is_chunked=False; /* [flg] Chunked variable */
 
-#if 0
-/* NB: Following routines are placeholders, currently not used */
-size_t * /* O [nbr] Chunksize array for variable */
-nco_cnk_sz_get /* [fnc] Determine chunksize array */
-(const int nc_id, /* I [id] netCDF file ID */
- const char * const var_nm, /* I [sng] Variable name */
- const int cnk_map, /* I [enm] Chunking map */
- const int cnk_plc, /* I [enm] Chunking policy */
- const size_t cnk_sz_scl, /* I [nbr] Chunk size scalar */
- CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
- const int cnk_nbr) /* I [nbr] Number of dimensions with user-specified chunking */
-{
-  /* Purpose: Use chunking map and policy to determine chunksize list */
-  int dmn_nbr; /* [nbr] Number of dimensions in variable */
-  int dmn_idx;
-  int idx;
-  int rec_dmn_id;
-  
-  size_t *cnk_sz; /* [nbr] Chunksize list */
-  
-  /* Get record dimension ID */
-  (void)nco_inq(nc_id,(int *)NULL,(int *)NULL,(int *)NULL,&rec_dmn_id);
+  /* Obtain variable ID using group ID */
+  (void)nco_inq_varid(grp_id,var_trv->nm,&var_id);
 
-  /* Get type and number of dimensions and attributes for variable */
+  /* Get type and number of dimensions for variable */
+  (void)nco_inq_var(grp_id,var_id,var_nm,&var_typ_dsk,&nbr_dmn,(int *)NULL,(int *)NULL);
 
-  cnk_sz=(size_t *)nco_malloc(dmn_nbr*sizeof(size_t));
-  
-  return cnk_sz;
-} /* end nco_cnk_sz_get() */
+  assert(strcmp(var_nm,var_trv->nm) == 0);
+
+  /* Skip chunking calls for scalars */
+  if(nbr_dmn == 0){
+
+    if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s skipping scalar...\n",nco_prg_nm_get(),fnc_nm);
+
+    return; 
+  }/* Skip chunking calls for scalars */
+
+  /* Is this a record variable?..Handy object variable already knows this */
+  is_rec_var=var_trv->is_rec_var; 
+
+  /* Is variable compressed? */
+  (void)nco_inq_var_deflate(grp_id,var_id,NULL,&deflate,NULL);
+  if(deflate) is_cmp_var=True; 
+
+  /* Is variable checksummed? */
+  (void)nco_inq_var_fletcher32(grp_id,var_id,&chk_typ);
+  if(chk_typ != NC_NOCHECKSUM) is_chk_var=True;
+
+  /* Must variable be chunked? */
+  if(is_rec_var || is_chk_var || is_cmp_var) must_be_chunked=True; else must_be_chunked=False;
+
+  /* Is variable currently chunked? */
+  is_chunked=nco_cnk_dsk_inq(grp_id,var_id);
+
+  /* Explicitly turn off chunking for arrays that are... */
+  if((cnk_plc == nco_cnk_plc_g2d && nbr_dmn < 2) || /* ...much too small... */
+    (cnk_plc == nco_cnk_plc_g3d && nbr_dmn < 3) || /* ...too small... */
+    (cnk_plc == nco_cnk_plc_uck) || /* ...intentionally unchunked... */
+    False){
+      /* If variable is chunked */
+      if(is_chunked){
+        if(must_be_chunked){
+          if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s %s must be chunked (record, compressed, or checksummed variable)\n",nco_prg_nm_get(),fnc_nm,var_trv->nm_fll);
+        }else{
+          /* Turn off chunking for this variable */
+          if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s unchunking %s\n",nco_prg_nm_get(),fnc_nm,var_trv->nm_fll);
+          (void)nco_def_var_chunking(grp_id,var_id,srg_typ,cnk_sz);
+        } /* !must_be_chunked */
+      }else{ /* !chunked */
+        if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s not unchunking %s because it is not chunked\n",nco_prg_nm_get(),fnc_nm,var_trv->nm_fll);
+      } /* !chunked */
+
+      if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s skipping...\n",nco_prg_nm_get(),fnc_nm);
+
+      /* Skip to next variable in loop. NOTE: loop in nco_cnk_sz_set(), here return */
+      return;
+  } /* Explicitly turn off chunking for arrays that are... */
+
+
+  /* Variable will definitely be chunked */
+  srg_typ=NC_CHUNKED; /* [enm] Storage type */
+  if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s %schunking %s\n",nco_prg_nm_get(),fnc_nm,(is_chunked ? "re-" : "" ),var_trv->nm_fll);
+
+  /* Default "equal" chunksize for each dimension */
+  cnk_sz_dfl=cnk_sz_scl;
+  if(cnk_map == nco_cnk_map_prd){
+    double cnk_sz_prd_dbl; /* [nbr] Chunksize product, double precision */
+    double cnk_sz_eql_dbl; /* [nbr] Chunksize equal, double precision */
+    double cnk_sz_dfl_dbl; /* [nbr] Chunksize default, double precision */
+    cnk_sz_prd_dbl=cnk_sz_scl;
+    cnk_sz_eql_dbl=pow(cnk_sz_prd_dbl,1.0/nbr_dmn);
+    cnk_sz_dfl_dbl=ceil(cnk_sz_eql_dbl);
+    cnk_sz_dfl=(size_t)cnk_sz_dfl_dbl;
+  } /* endif map_prd */
+
+
+  /* A utility struct to share common fields */
+  typedef struct{ 
+    char nm[NC_MAX_NAME+1L];/* [sng] Name of dimension/coordinate */
+    nco_bool is_rec_dmn;    /* [flg] Is a record dimension/coordinate? */
+    size_t sz;              /* [nbr] Size of dimension/coordinate */
+    nco_bool BASIC_DMN;     /* [flg] Limit is same as dimension in input file */
+    long dmn_cnt;           /* [nbr] Hyperslabbed size of dimension */  
+  } dmn_cmn_sct; 
+
+  dmn_cmn_sct dmn_cmn[NC_MAX_DIMS];
+
+
+  /* Loop dimensions */
+  for(int dmn_idx=0;dmn_idx<nbr_dmn;dmn_idx++){
+
+    dmn_trv_sct *dmn_trv=NULL; /* [sct] Unique dimension */
+    crd_sct *crd=NULL; /* [sct] Coordinate dimension */
+
+    /* This dimension has a coordinate variable */
+    if (var_trv->var_dmn[dmn_idx].is_crd_var == True){
+
+      /* Get coordinate from table */
+      crd=var_trv->var_dmn[dmn_idx].crd;
+      dmn_cmn[dmn_idx].sz=crd->sz;
+      dmn_cmn[dmn_idx].is_rec_dmn=crd->is_rec_dmn;
+      dmn_cmn[dmn_idx].BASIC_DMN=crd->lmt_msa.BASIC_DMN;
+      dmn_cmn[dmn_idx].dmn_cnt=crd->lmt_msa.dmn_cnt;
+      strcpy(dmn_cmn[dmn_idx].nm,crd->nm);
+
+      /* This dimension does not has a coordinate variable, it must have a unique dimension */
+    }else if (var_trv->var_dmn[dmn_idx].is_crd_var == False){
+
+      /* Get unique dimesion from table */
+      dmn_trv=var_trv->var_dmn[dmn_idx].ncd;
+      dmn_cmn[dmn_idx].sz=dmn_trv->sz;
+      dmn_cmn[dmn_idx].BASIC_DMN=dmn_trv->lmt_msa.BASIC_DMN;
+      dmn_cmn[dmn_idx].dmn_cnt=dmn_trv->lmt_msa.dmn_cnt;
+      strcpy(dmn_cmn[dmn_idx].nm,dmn_trv->nm);
+
+      /* This dimension must have either a coordinate or a dimension */
+    }else{
+      assert(0);
+    }
+  }
+
+  /* Loop dimensions */
+  for(int dmn_idx=0;dmn_idx<nbr_dmn;dmn_idx++){
+
+    /* Is this the record dimension? */
+    if(dmn_cmn[dmn_idx].is_rec_dmn == True){
+      /* Does policy specify record dimension treatment? */
+      if(cnk_map == nco_cnk_map_rd1){
+        cnk_sz[dmn_idx]=1UL;
+        /* This may still be over-ridden by explicitly specified chunksize */
+        goto cnk_xpl_override;
+      } /* !nco_cnk_map_rd1 */
+      /* Record dimension size in output file is zero until first write
+      Obtain record dimension size from lmt_all structure (for nco_cnk_sz_set()).
+      NOTE: <GTT> Here using dimesion object... much simpler */
+      if(dmn_cmn[dmn_idx].BASIC_DMN){
+        /* When not hyperslabbed, use input record dimension size ... */
+        cnk_sz[dmn_idx]=dmn_cmn[dmn_idx].sz;
+      }else{ /* !BASIC_DMN */
+        /* ... and when hyperslabbed, use user-specified count */
+        cnk_sz[dmn_idx]=dmn_cmn[dmn_idx].dmn_cnt;
+      } /* !BASIC_DMN */
+    }else{ /* !record dimension */
+      /* Set non-record dimensions to default, possibly over-ride later */
+      cnk_sz[dmn_idx]=dmn_cmn[dmn_idx].sz;
+      if(dmn_cmn[dmn_idx].sz == 0L){
+        (void)fprintf(stdout,"%s: ERROR %s reports variable <%s> has dim_sz == 0L for non-record dimension <%s>. This should not occur and it will cause chunking to fail...\n",
+          nco_prg_nm_get(),fnc_nm,var_trv->nm_fll,dmn_cmn[dmn_idx].nm);
+      } /* endif err */
+    } /* !record dimension */
+
+
+    /* Propagate scalar chunksize, if specified */
+    if(cnk_sz_dfl > 0UL){
+      /* Is this the record dimension? */
+      if(dmn_cmn[dmn_idx].is_rec_dmn == True){
+        /* NOTE: <GTT> Here using dimesion object... much simpler */ 
+        if(dmn_cmn[dmn_idx].BASIC_DMN){
+          /* When not hyperslabbed, use input record dimension size ... */
+          cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)dmn_cmn[dmn_idx].sz) ? cnk_sz_dfl : (size_t)dmn_cmn[dmn_idx].sz;
+        }else{ /* !BASIC_DMN */
+          /* ... and when hyperslabbed, use user-specified count */
+          cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)dmn_cmn[dmn_idx].dmn_cnt) ? cnk_sz_dfl : (size_t)dmn_cmn[dmn_idx].dmn_cnt;
+        } /* !BASIC_DMN */
+      }else{ /* !rcd_dmn_id */
+        /* Non-record sizes default to cnk_sz_dfl or to dimension size */
+        cnk_sz[dmn_idx]=(cnk_sz_dfl <= (size_t)dmn_cmn[dmn_idx].sz) ? cnk_sz_dfl : (size_t)dmn_cmn[dmn_idx].sz;
+      } /* Is this the record dimension? */
+    } /* !cnk_sz_dfl */
+
+
+cnk_xpl_override: /* end goto */
+
+
+    /* Explicit chunk specifications override all else */
+    for(int cnk_idx=0;cnk_idx<cnk_nbr;cnk_idx++){
+
+      /* Match on name not ID */
+      /* fxm pvn check origin of chunk names */
+      if(!strcmp(cnk[cnk_idx]->nm,dmn_cmn[dmn_idx].nm)){
+        cnk_sz[dmn_idx]=cnk[cnk_idx]->sz;
+
+        /* Is this the record dimension? */
+        if(dmn_cmn[dmn_idx].is_rec_dmn == True){
+          if(dmn_cmn[dmn_idx].BASIC_DMN){
+            if(cnk_sz[dmn_idx] > (size_t)dmn_cmn[dmn_idx].sz){
+              (void)fprintf(stderr,"%s: WARNING %s allowing user-specified record dimension chunksize = %lu for %s to exceed record dimension size in input file = %lu. May fail if output file is not concatenated from multiple inputs.\n",
+                nco_prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_cmn[dmn_idx].nm,(unsigned long)dmn_cmn[dmn_idx].sz);
+            } /* endif too big */
+          }else{ /* !BASIC_DMN */
+            if(cnk_sz[dmn_idx] > (size_t)dmn_cmn[dmn_idx].dmn_cnt){
+              (void)fprintf(stderr,"%s: WARNING %s allowing user-specified record dimension chunksize = %lu for %s to exceed user-specified record dimension hyperslab size in input file = %lu. May fail if output file is not concatenated from multiple inputs.\n",
+                nco_prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_cmn[dmn_idx].nm,dmn_cmn[dmn_idx].dmn_cnt);
+            } /* endif too big */
+          } /* !BASIC_DMN */
+        }else{ /* !rcd_dmn_id */
+          if(cnk_sz[dmn_idx] > (size_t)dmn_cmn[dmn_idx].sz){
+            /* dmn_sz of record dimension may (will) be zero in output file
+            Non-record dimensions, though, must have cnk_sz <= dmn_sz */
+            (void)fprintf(stderr,"%s: WARNING %s trimming user-specified chunksize = %lu to %s size = %lu\n",
+              nco_prg_nm_get(),fnc_nm,(unsigned long)cnk[cnk_idx]->sz,dmn_cmn[dmn_idx].nm,(unsigned long)dmn_cmn[dmn_idx].sz);
+            /* Trim else out-of-bounds sizes will fail in HDF library in nc_enddef() */
+            cnk_sz[dmn_idx]=(size_t)dmn_cmn[dmn_idx].sz;
+          } /* endif */
+        } /* !rcd_dmn_id */
+        break;
+      } /* cnk_nm != dmn_nm */
+    } /* end loop over cnk */
+
+  }/* Loop dimensions */
+
+
+
+  /* Turn chunking on for this variable */
+  (void)nco_def_var_chunking(grp_id,var_id,srg_typ,cnk_sz);
+
+  return;
+} /* nco_cnk_sz_set_trv() */
 
-nco_bool /* O [flg] NCO will attempt to chunk variable */
-nco_is_chunkable /* [fnc] Will NCO attempt to chunk variable? */
-(const nc_type nc_typ_in) /* I [enm] Type of input variable */
-{
-  /* Purpose: Determine whether NCO should attempt to chunk a given type
-     Chunking certain variable types is not recommended, e.g., chunking NC_CHAR
-     and NC_BYTE makes no sense, because precision would needlessly be lost.
-     Routine should be consistent with nco_cnk_plc_typ_get()
-     NB: Routine is deprecated in favor of more flexible nco_cnk_plc_typ_get() */
-  const char fnc_nm[]="nco_is_chunkable()"; /* [sng] Function name */
 
-  (void)fprintf(stdout,"%s: ERROR deprecated routine %s should not be called\n",prg_nm_get(),fnc_nm);
-  nco_exit(EXIT_FAILURE);
 
-  switch(nc_typ_in){ 
-  case NC_FLOAT: 
-  case NC_DOUBLE: 
-  case NC_INT64: 
-  case NC_UINT64: 
-  case NC_INT: 
-  case NC_UINT: 
-    return True;
-    break;
-  case NC_SHORT: 
-  case NC_USHORT: 
-  case NC_CHAR: 
-  case NC_BYTE: 
-  case NC_UBYTE: 
-  case NC_STRING:
-    return False;
-    break;
-  default: nco_dfl_case_nc_type_err(); break;
-  } /* end switch */ 
 
-  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
-  return False;
-} /* end nco_is_chunkable() */
 
-#endif /* endif 0 */
diff --git a/src/nco/nco_cnk.h b/src/nco/nco_cnk.h
index 391d01d..136468a 100644
--- a/src/nco/nco_cnk.h
+++ b/src/nco/nco_cnk.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnk.h,v 1.14 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnk.h,v 1.22 2013/07/16 22:24:10 zender Exp $ */
 
 /* Purpose: Description (definition) of chunking functions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -22,6 +22,7 @@
 
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
+#include "nco_grp_utl.h" /* Group utilities */
 #include "nco_lst_utl.h" /* List utilities */
 #include "nco_mmr.h" /* Memory management */
 
@@ -80,7 +81,7 @@ nco_cnk_free /* [fnc] Free all memory associated with chunking structure */
 void
 nco_cnk_sz_set /* [fnc] Set chunksize parameters */
 (const int nc_id, /* I [id] netCDF file ID */
- CST_X_PTR_CST_PTR_CST_Y(lmt_all_sct,lmt_all_lst), /* I [sct] Hyperslab limits */
+ CST_X_PTR_CST_PTR_CST_Y(lmt_msa_sct,lmt_all_lst), /* I [sct] Hyperslab limits */
  const int lmt_all_lst_nbr, /* I [nbr] Number of hyperslab limits */
  int * const cnk_map_ptr, /* I/O [enm] Chunking map */
  int * const cnk_plc_ptr, /* I/O [enm] Chunking policy */
@@ -117,6 +118,18 @@ nco_is_chunkable /* [fnc] Will NCO attempt to chunk variable? */
 (const nc_type nc_typ_in); /* I [enm] Type of input variable */
 #endif /* endif 0 */
 
+
+void
+nco_cnk_sz_set_trv                     /* [fnc] Set chunksize parameters (GTT version of nco_cnk_sz_set() ) */
+(const int grp_id,                     /* I [id] netCDF group ID in output file */
+ int * const cnk_map_ptr,              /* I/O [enm] Chunking map */
+ int * const cnk_plc_ptr,              /* I/O [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const trv_sct * const var_trv);        /* I [sct] Variable Object */
+
+
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/nco_cnv_arm.c b/src/nco/nco_cnv_arm.c
index ff9eb10..5db3946 100644
--- a/src/nco/nco_cnv_arm.c
+++ b/src/nco/nco_cnv_arm.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_arm.c,v 1.30 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_arm.c,v 1.33 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: ARM conventions, e.g., http://www.arm.gov/data/time.stm */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -34,7 +34,7 @@ nco_cnv_arm_inq /* O [fnc] Check if file obeys ARM conventions */
   if(rcd != NC_NOERR){
     CNV_ARM=False;
   }else{
-    if(dbg_lvl_get() > 0) (void)fprintf(stderr,"%s: CONVENTION File convention is DOE ARM\n",prg_nm_get()); 
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: CONVENTION File convention is DOE ARM\n",nco_prg_nm_get()); 
     CNV_ARM=True;
   } /* end else */
 
@@ -58,7 +58,7 @@ nco_cnv_arm_time_mk /* [fnc] Return time corresponding to current time offset */
   /* Find base_time variable (NC_INT: base UNIX time of file) */
   rcd=nco_inq_varid_flg(nc_id,"base_time",&base_time_id);
   if(rcd != NC_NOERR){
-    (void)fprintf(stderr,"%s: WARNING ARM file does not have variable \"base_time\", exiting nco_cnv_arm_time_mk()...\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: WARNING ARM file does not have variable \"base_time\", exiting nco_cnv_arm_time_mk()...\n",nco_prg_nm_get());
     return -1;
   } /* end if */
 
@@ -103,21 +103,21 @@ nco_cnv_arm_time_install /* [fnc] Add time variable to concatenated ARM files */
   /* Find time_offset variable */
   rcd=nco_inq_varid_flg(nc_id,"time_offset",&time_offset_id);
   if(rcd != NC_NOERR){
-    (void)fprintf(stderr,"%s: WARNING ARM file does not have variable \"time_offset\", exiting nco_cnv_arm_time_install()...\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: WARNING ARM file does not have variable \"time_offset\", exiting nco_cnv_arm_time_install()...\n",nco_prg_nm_get());
     return;
   } /* endif */
 
   /* See if time variable already exists */
   rcd=nco_inq_varid_flg(nc_id,time_sng,&time_id);
   if(rcd == NC_NOERR){
-    (void)fprintf(stderr,"%s: WARNING ARM file already has variable \"time\"\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: WARNING ARM file already has variable \"time\"\n",nco_prg_nm_get());
     return;
   } /* endif */
 
   /* See if time dimension exists */
   rcd=nco_inq_dimid_flg(nc_id,time_sng,&time_dmn_id);
   if(rcd != NC_NOERR){
-    (void)fprintf(stderr,"%s: WARNING ARM file does not have dimension \"time\"\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: WARNING ARM file does not have dimension \"time\"\n",nco_prg_nm_get());
     return;
   } /* endif */
   /* Get dimension size */
diff --git a/src/nco/nco_cnv_arm.h b/src/nco/nco_cnv_arm.h
index a6884f1..5edd287 100644
--- a/src/nco/nco_cnv_arm.h
+++ b/src/nco/nco_cnv_arm.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_arm.h,v 1.26 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_arm.h,v 1.28 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: ARM conventions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -14,7 +14,7 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
diff --git a/src/nco/nco_cnv_csm.c b/src/nco/nco_cnv_csm.c
index 2c5554f..dcfea2c 100644
--- a/src/nco/nco_cnv_csm.c
+++ b/src/nco/nco_cnv_csm.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_csm.c,v 1.56 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_csm.c,v 1.64 2013/11/13 20:31:34 zender Exp $ */
 
 /* Purpose: CCM/CCSM/CF conventions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -47,14 +47,14 @@ nco_cnv_ccm_ccsm_cf_inq /* O [fnc] Check if file obeys CCM/CCSM/CF conventions *
     /* CCM3, CCSM1 conventions */
     if(strstr(att_val,"NCAR-CSM")) CNV_CCM_CCSM_CF=True; /* Backwards compatibility */
     /* Climate-Forecast conventions */
-    if(strstr(att_val,"CF-1.0")) CNV_CCM_CCSM_CF=True; /* NB: Not fully implemented TODO nco145 */
+    if(strstr(att_val,"CF-1.")) CNV_CCM_CCSM_CF=True; /* NB: Not fully implemented TODO nco145 */
     /* As of 20060514, CLM 3.0 uses CF1.0 not CF-1.0 (CAM gets it right) */
-    if(strstr(att_val,"CF1.0")) CNV_CCM_CCSM_CF=True; /* NB: Not fully implemented TODO nco145 */
-    if(CNV_CCM_CCSM_CF && dbg_lvl_get() > 0){
-      (void)fprintf(stderr,"%s: CONVENTION File \"%s\" attribute is \"%s\"\n",prg_nm_get(),cnv_sng,att_val);
-      if(cnv_sng == cnv_sng_LC) (void)fprintf(stderr,"%s: WARNING: This file uses a non-standard attribute (\"%s\") to indicate the netCDF convention. The correct attribute is \"%s\".\n",prg_nm_get(),cnv_sng_LC,cnv_sng_UC);
+    if(strstr(att_val,"CF1.")) CNV_CCM_CCSM_CF=True; /* NB: Not fully implemented TODO nco145 */
+    if(CNV_CCM_CCSM_CF && nco_dbg_lvl_get() >= nco_dbg_std){
+      (void)fprintf(stderr,"%s: CONVENTION File \"%s\" attribute is \"%s\"\n",nco_prg_nm_get(),cnv_sng,att_val);
+      if(cnv_sng == cnv_sng_LC) (void)fprintf(stderr,"%s: WARNING: This file uses a non-standard attribute (\"%s\") to indicate the netCDF convention. The correct attribute is \"%s\".\n",nco_prg_nm_get(),cnv_sng_LC,cnv_sng_UC);
       /* Only warn in arithmetic operators where conventions change behavior */
-      if(dbg_lvl_get() > 1 && nco_is_rth_opr(prg_get())) (void)fprintf(stderr,"%s: INFO NCO has a unified (though incomplete) treatment of many related (official and unoffical) conventions including the older CCM and CCSM and newer CF conventions. To adhere to these conventions, NCO implements variable-specific exceptions in certain operators, e.g., ncbo will not subtract variables named \"date\" or \"gw\", and many operators will always leave coordinate variables unchanged. The full lis [...]
+      if(nco_dbg_lvl_get() >= nco_dbg_fl && nco_is_rth_opr(nco_prg_id_get())) (void)fprintf(stderr,"%s: INFO NCO has a unified (though incomplete) treatment of many related (official and unoffical) conventions including the older CCM and CCSM and newer CF conventions. To adhere to these conventions, NCO implements variable-specific exceptions in certain operators, e.g., ncbo will not subtract variables named \"date\" or \"gw\", and many operators will always leave coordinate variables un [...]
     } /* endif dbg */
     att_val=(char *)nco_free(att_val);
   } /* endif */
@@ -83,7 +83,7 @@ nco_cnv_ccm_ccsm_cf_date /* [fnc] Fix date variable in averaged CCM/CCSM/CF file
   nco_int date;
   nco_int nbdate;
   
-  (void)sprintf(wrn_sng,"Most, but not all, CCM/CCSM/CF files which are in CCM format contain the fields \"nbdate\", \"time\", and \"date\". When the \"date\" field is present but either \"nbdate\" or \"time\" is missing, then %s is unable to construct a meaningful average \"date\" to store in the output file. Therefore the \"date\" variable in your output file may be meaningless.\n",prg_nm_get());
+  (void)sprintf(wrn_sng,"Most, but not all, CCM/CCSM/CF files which are in CCM format contain the fields \"nbdate\", \"time\", and \"date\". When the \"date\" field is present but either \"nbdate\" or \"time\" is missing, then %s is unable to construct a meaningful average \"date\" to store in the output file. Therefore the \"date\" variable in your output file may be meaningless.\n",nco_prg_nm_get());
 
   /* Find date variable (NC_INT: current date as 6 digit integer (YYMMDD)) */
   for(idx=0;idx<nbr_var;idx++){
@@ -95,8 +95,8 @@ nco_cnv_ccm_ccsm_cf_date /* [fnc] Fix date variable in averaged CCM/CCSM/CF file
   /* Find scalar nbdate variable (NC_INT: base date date as 6 digit integer (YYMMDD)) */
   rcd=nco_inq_varid_flg(nc_id,"nbdate",&nbdate_id);
   if(rcd != NC_NOERR){
-    (void)fprintf(stderr,"%s: WARNING CCM/CCSM/CF convention file output variable list contains \"date\" but not \"nbdate\"\n",prg_nm_get());
-    (void)fprintf(stderr,"%s: %s",prg_nm_get(),wrn_sng);
+    (void)fprintf(stderr,"%s: WARNING CCM/CCSM/CF convention file output variable list contains \"date\" but not \"nbdate\"\n",nco_prg_nm_get());
+    (void)fprintf(stderr,"%s: %s",nco_prg_nm_get(),wrn_sng);
     return;
   } /* endif */
 
@@ -110,8 +110,8 @@ nco_cnv_ccm_ccsm_cf_date /* [fnc] Fix date variable in averaged CCM/CCSM/CF file
     if(!strcmp(var[idx]->nm,"time")) break;
   } /* end loop over idx */
   if(idx == nbr_var){
-    (void)fprintf(stderr,"%s: WARNING CCM/CCSM/CF convention file output variable list contains \"date\" and \"nbdate\" yet lacks \"time\"\n",prg_nm_get());
-    (void)fprintf(stderr,"%s: %s",prg_nm_get(),wrn_sng);
+    (void)fprintf(stderr,"%s: WARNING CCM/CCSM/CF convention file output variable list contains \"date\" and \"nbdate\" yet lacks \"time\"\n",nco_prg_nm_get());
+    (void)fprintf(stderr,"%s: %s",nco_prg_nm_get(),wrn_sng);
     return;
   }else{
     time_idx=idx;
@@ -127,7 +127,7 @@ nco_cnv_ccm_ccsm_cf_date /* [fnc] Fix date variable in averaged CCM/CCSM/CF file
   }else if(var[date_idx]->type == NC_DOUBLE){
     if(!var[date_idx]->val.dp) return; else var[date_idx]->val.dp[0]=date;
   }else{
-    (void)fprintf(stderr,"%s: WARNING CCM/CCSM/CF convention file output variable \"date\" is not NC_INT or NC_DOUBLE\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: WARNING CCM/CCSM/CF convention file output variable \"date\" is not NC_INT or NC_DOUBLE\n",nco_prg_nm_get());
   } /* end else */
   
   return; /* 20050109: fxm added return to void function to squelch erroneous gcc-3.4.2 warning */ 
@@ -137,7 +137,7 @@ nm_id_sct * /* O [sct] Extraction list */
 nco_cnv_cf_crd_add /* [fnc] Add coordinates defined by CF convention */
 (const int nc_id, /* I netCDF file ID */
  nm_id_sct *xtr_lst, /* I/O current extraction list (destroyed) */
- int * const nbr_xtr) /* I/O number of variables in current extraction list */
+ int * const xtr_nbr) /* I/O number of variables in current extraction list */
 {
   /* Purpose: Detect coordinates specified by CF convention and add them to extraction list
      http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#grid_ex2 */
@@ -164,7 +164,7 @@ nco_cnv_cf_crd_add /* [fnc] Add coordinates defined by CF convention */
   nc_type att_typ;
   
   /* ...for each variable in extraction list... */
-  for(idx_var=0;idx_var<*nbr_xtr;idx_var++){
+  for(idx_var=0;idx_var<*xtr_nbr;idx_var++){
     /* Eschew indirection */
     var_id=xtr_lst[idx_var].id;
     /* Find number of attributes */
@@ -176,7 +176,7 @@ nco_cnv_cf_crd_add /* [fnc] Add coordinates defined by CF convention */
 	/* Yes, get list of specified attributes */
 	(void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
 	if(att_typ != NC_CHAR){
-	  (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+	  (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
 	  return xtr_lst;
 	} /* end if */
 	att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
@@ -199,15 +199,15 @@ nco_cnv_cf_crd_add /* [fnc] Add coordinates defined by CF convention */
 	  if(rcd == NC_NOERR){
 	    /* idx_var2 labels inner loop over variables */
 	    /* Is "coordinate" already on extraction list? */
-	    for(idx_var2=0;idx_var2<*nbr_xtr;idx_var2++){
+	    for(idx_var2=0;idx_var2<*xtr_nbr;idx_var2++){
 	      if(crd_id == xtr_lst[idx_var2].id) break;
 	    } /* end loop over idx_var2 */
-	    if(idx_var2 == *nbr_xtr){
+	    if(idx_var2 == *xtr_nbr){
 	      /* Add coordinate to list */
-	      xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-	      xtr_lst[*nbr_xtr].nm=(char *)strdup(crd_lst[idx_crd]);
-	      xtr_lst[*nbr_xtr].id=crd_id;
-	      (*nbr_xtr)++; /* NB: Changes size of current loop! */
+	      xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+	      xtr_lst[*xtr_nbr].nm=(char *)strdup(crd_lst[idx_crd]);
+	      xtr_lst[*xtr_nbr].id=crd_id;
+	      (*xtr_nbr)++; /* NB: Changes size of current loop! */
 	      /* Continue to next coordinate in loop */
 	      continue;
 	    } /* end if coordinate was not already in list */
@@ -235,7 +235,8 @@ nco_cnv_cf_cll_mth_add /* [fnc] Add cell_methods attributes */
 {
   /* Purpose: Add/modify cell_methods attribute according to CF convention
      http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#cell-methods
-     http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#sub_app */
+     http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#sub_app
+     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.7-draft1/cf-conventions.html#cell-methods */
 
   const char fnc_nm[]="nco_cnv_cf_cll_mth_add()"; /* [sng] Function name */
 
diff --git a/src/nco/nco_cnv_csm.h b/src/nco/nco_cnv_csm.h
index cccc5d5..66975cf 100644
--- a/src/nco/nco_cnv_csm.h
+++ b/src/nco/nco_cnv_csm.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_csm.h,v 1.30 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_cnv_csm.h,v 1.34 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: CCM/CCSM/CF conventions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -14,14 +14,11 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
 #include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
-#ifdef _OPENMP
-#include <omp.h> /* OpenMP pragmas */
-#endif /* !_OPENMP */
 
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
@@ -48,7 +45,7 @@ nm_id_sct * /* O [sct] Extraction list */
 nco_cnv_cf_crd_add /* [fnc] Add coordinates defined by CF convention */
 (const int nc_id, /* I netCDF file ID */
  nm_id_sct *xtr_lst, /* I/O current extraction list (destroyed) */
- int * const nbr_xtr); /* I/O number of variables in current extraction list */
+ int * const xtr_nbr); /* I/O number of variables in current extraction list */
 
 int /* [rcd] Return code */
 nco_cnv_cf_cll_mth_add /* [fnc] Add cell_methods attributes */
diff --git a/src/nco/nco_ctl.c b/src/nco/nco_ctl.c
index ea6ca64..ad97a11 100644
--- a/src/nco/nco_ctl.c
+++ b/src/nco/nco_ctl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_ctl.c,v 1.313 2012/02/14 05:39:04 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_ctl.c,v 1.441 2013/12/03 00:28:01 zender Exp $ */
 
 /* Purpose: Program flow control functions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -33,11 +33,13 @@ nco_cmp_get(void) /* [fnc] Return compiler and version */
   static const char cmp_vrs_mnr[]=TKN2SNG(__GNUC_MINOR__); // [sng] Compiler minor version
   static const char cmp_vrs_pch[]=TKN2SNG(__GNUC_PATCHLEVEL__); // [sng] Compiler patch version
 
-  if(dbg_lvl_get() >= nco_dbg_scl){
-    (void)fprintf(stderr,"%s: INFO GCC major version is %s\n",prg_nm_get(),cmp_vrs_mjr);
-    (void)fprintf(stderr,"%s: INFO GCC minor version is %s\n",prg_nm_get(),cmp_vrs_mnr);
-    (void)fprintf(stderr,"%s: INFO GCC patch version is %s\n",prg_nm_get(),cmp_vrs_pch);
-    (void)fprintf(stderr,"%s: INFO GCC version is %s\n",prg_nm_get(),cmp_vrs);
+  if(nco_dbg_lvl_get() >= nco_dbg_fl){
+    (void)fprintf(stderr,"%s: INFO GCC major version is %s\n",nco_prg_nm_get(),cmp_vrs_mjr);
+    (void)fprintf(stderr,"%s: INFO GCC minor version is %s\n",nco_prg_nm_get(),cmp_vrs_mnr);
+    (void)fprintf(stderr,"%s: INFO GCC patch version is %s\n",nco_prg_nm_get(),cmp_vrs_pch);
+  } /* endif dbg */
+  if(nco_dbg_lvl_get() >= nco_dbg_std){
+    (void)fprintf(stderr,"%s: INFO GCC version is %s\n",nco_prg_nm_get(),cmp_vrs);
   } /* endif dbg */
 #endif /* !__GNUC__ */
 #ifdef __INTEL_COMPILER
@@ -62,7 +64,7 @@ nco_cmp_get(void) /* [fnc] Return compiler and version */
   static const char cmp_sng[]="Unknown compiler tokens in nco_cmp_get(), compiler is unknown"; /* [sng] Compiler string */
 #endif /* !unknown */
 
-  if(dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO %s reports compiler name is \"%s\"\n%s\n",prg_nm_get(),fnc_nm,cmp_nm,cmp_sng);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO %s reports compiler name is \"%s\"\n%s\n",nco_prg_nm_get(),fnc_nm,cmp_nm,cmp_sng);
 
   return cmp_nm;
 } /* end nco_cmp_get() */
@@ -103,7 +105,7 @@ nco_mpi_get(void) /* [fnc] Return MPI implementation */
 #endif /* MPI_VERSION */
 #endif /* !unknown */
 
-  if(dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO %s reports MPI implementation name is \"%s\"\n%s\n",prg_nm_get(),fnc_nm,mpi_nm,mpi_sng);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO %s reports MPI implementation name is \"%s\"\n%s\n",nco_prg_nm_get(),fnc_nm,mpi_nm,mpi_sng);
   return mpi_nm;
 } /* end nco_mpi_get() */
 
@@ -293,7 +295,7 @@ nco_ddra /* [fnc] Count operations */
   case nco_op_nil: /* [enm] Nil or undefined operation type  */
     break;
   default:
-    (void)fprintf(stdout,"%s: ERROR Illegal nco_op_typ in %s\n",prg_nm_get(),fnc_nm);
+    (void)fprintf(stdout,"%s: ERROR Illegal nco_op_typ in %s\n",nco_prg_nm_get(),fnc_nm);
     nco_exit(EXIT_FAILURE);
     break;
   } /* end switch */
@@ -380,7 +382,7 @@ nco_ddra /* [fnc] Count operations */
   case nco_op_nil: /* [enm] Nil or undefined operation type  */
     break;
   default:
-    (void)fprintf(stdout,"%s: ERROR Illegal nco_op_typ in %s\n",prg_nm_get(),fnc_nm);
+    (void)fprintf(stdout,"%s: ERROR Illegal nco_op_typ in %s\n",nco_prg_nm_get(),fnc_nm);
     nco_exit(EXIT_FAILURE);
     break;
   } /* end switch */
@@ -425,9 +427,9 @@ nco_ddra /* [fnc] Count operations */
 
   if(var_idx == 0){
     /* Table headings */
-    (void)fprintf(stdout,"%3s %8s %8s %8s %8s %5s %5s %8s %8s %8s %4s %4s %4s %4s %4s %7s %7s\n",
+    (void)fprintf(stderr,"%3s %8s %8s %8s %8s %5s %5s %8s %8s %8s %4s %4s %4s %4s %4s %7s %7s\n",
 		  "idx"," var_nm ","   lmn  ","   flp  ","   ntg  ","tm_io","  tm "," lmn_ttl"," flp_ttl"," ntg_ttl"," flp"," ntg","  rd"," wrt"," io"," tm_ttl"," tm_obs");
-    (void)fprintf(stdout,"%3s %8s %8s %8s %8s %5s %5s %8s %8s %8s %4s %4s %4s %4s %4s %7s %7s\n",
+    (void)fprintf(stderr,"%3s %8s %8s %8s %8s %5s %5s %8s %8s %8s %4s %4s %4s %4s %4s %7s %7s\n",
 		  "   ","        ","    #   ","    #   ","    #   ","  s  ","  s  ","   #    ","   #    ","    #   ","  % ","  % ","  % ","  % ","  % ","   s   ","   s   ");
   } /* var_idx != 0 */
 
@@ -441,15 +443,15 @@ nco_ddra /* [fnc] Count operations */
 
   switch(ddra_info->tmr_flg){
   case nco_tmr_mtd: /* [enm] Metadata timer (second timer call) */
-    if(ddra_info->flg_ddra || dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: TIMER Metadata setup and file layout before main loop took %7.2f s\n",prg_nm_get(),tm_obs_ttl);
+    if(ddra_info->flg_ddra || nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"%s: TIMER Metadata setup and file layout before main loop took %7.2f s\n",nco_prg_nm_get(),tm_obs_ttl);
     break;
   case nco_tmr_rgl: /* [enm] Regular timer call (main loop timer call) */
-    (void)fprintf(stdout,
+    (void)fprintf(stderr,
 		  "%3d %8s %8.2e %8.2e %8.2e %5.2f %5.2f %8.2e %8.2e %8.2e %4.1f %4.1f %4.1f %4.1f %4.1f %7.2f %7.2f\n",
 		  var_idx,var_nm,(float)lmn_nbr,(float)flp_nbr,(float)ntg_nbr,tm_io,tm_crr,(float)lmn_nbr_ttl,(float)flp_nbr_ttl,(float)ntg_nbr_ttl,100.0*tm_frc_flp_ttl,100.0*tm_frc_ntg_ttl,100.0*tm_frc_rd_ttl,100.0*tm_frc_wrt_ttl,100.0*tm_frc_io_ttl,tm_ttl,tm_obs_ttl);
     break;
   case nco_tmr_end: /* [enm] Close timer (last timer call) */
-    if(ddra_info->flg_ddra || dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: TIMER Wallclock-elapsed time for command is %7.2f s\n",prg_nm_get(),tm_obs_ttl);
+    if(ddra_info->flg_ddra || nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"%s: TIMER Wallclock-elapsed time for command is %7.2f s\n",nco_prg_nm_get(),tm_obs_ttl);
     break;
   default: nco_dfl_case_tmr_typ_err(); break;
   } /* end switch */
@@ -485,7 +487,7 @@ nco_exit /* [fnc] Wrapper for exit() */
   if(rcd == EXIT_SUCCESS){
     exit(rcd);
   }else{
-    if(dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s: ERROR exiting through %s which will now call %s\n",prg_nm_get(),fnc_nm,exit_nm);
+    if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s: ERROR exiting through %s which will now call %s\n",nco_prg_nm_get(),fnc_nm,exit_nm);
 #ifdef NCO_ABORT_ON_ERROR
     abort();
 #else /* !NCO_ABORT_ON_ERROR */
@@ -503,25 +505,26 @@ nco_exit_gracefully(void) /* [fnc] Clean up timers, file descriptors, memory, th
   (void)fclose(stdout);
 
   /* This should be penultimate command in program 
-     After program name is free'd, calls to prg_nm_get() will fail */
-  (void)nco_free(prg_nm_get());
+     After program name is free'd, calls to nco_prg_nm_get() will fail */
+  (void)nco_free(nco_prg_nm_get());
 
   nco_exit(EXIT_SUCCESS);
 } /* end nco_exit_gracefully() */
 
 nco_bool /* [flg] Program is multi-file operator */
-nco_is_mlt_fl_opr /* [fnc] Query whether program is multi-file operator */
-(const int prg_id) /* [enm] Program ID */
+nco_is_mfo /* [fnc] Query whether program is multi-file operator */
+(const int nco_prg_id) /* [enm] Program ID */
 {
   /* Purpose: Is this a multi-file operator (MFO)?
      MFOs take arbitrarily large numbers of input files
      ncbo and ncflint are not MFOs because they take a fixed number (two) of input files
      MFOs attempt to read input filenames from stdin when input filenames are not positional arguments */
-  switch(prg_id){
-  case ncea:
+  switch(nco_prg_id){
+  case ncfe:
   case ncecat: 
   case ncra:
   case ncrcat: 
+  case ncge: 
     return True;
     break;
   case ncap: 
@@ -537,11 +540,11 @@ nco_is_mlt_fl_opr /* [fnc] Query whether program is multi-file operator */
   default: nco_dfl_case_prg_id_err(); break;
   } /* end switch */
   return False;
-} /* end nco_is_mlt_fl_opr() */
+} /* end nco_is_mfo() */
 
 nco_bool /* [flg] Program does arithmetic */
 nco_is_rth_opr /* [fnc] Query whether program does arithmetic */
-(const int prg_id) /* [enm] Program ID */
+(const int nco_prg_id) /* [enm] Program ID */
 {
   /* Purpose: Is operator arithmetic?
      For purposes of this function, an arithmetic operator is one which changes values
@@ -554,13 +557,14 @@ nco_is_rth_opr /* [fnc] Query whether program does arithmetic */
      Hence, one use of nco_is_rth_opr() is to tell arithmetic operators to 
      automatically unpack variables when reading them
      Non-arithmetic operators do not need to unpack variables */
-  switch(prg_id){
+  switch(nco_prg_id){
   case ncap: 
   case ncbo:
-  case ncea:
+  case ncfe:
   case ncflint:
   case ncra:
   case ncwa:
+  case ncge:
     return True;
     break;
   case ncatted: 
@@ -578,7 +582,7 @@ nco_is_rth_opr /* [fnc] Query whether program does arithmetic */
 
 nco_bool /* [flg] Program does arithmetic and preserves rank */
 nco_is_sz_rnk_prv_rth_opr /* [fnc] Is program size and rank-preserving arithmetic operator? */
-(const int prg_id, /* I [enm] Program ID */
+(const int nco_prg_id, /* I [enm] Program ID */
  const int nco_pck_plc) /* I [enm] Packing policy */
 {
   /* Purpose: Is program size and rank-preserving arithmetic operator?
@@ -593,13 +597,14 @@ nco_is_sz_rnk_prv_rth_opr /* [fnc] Is program size and rank-preserving arithmeti
      One use of nco_is_sz_rnk_prv_rth_opr() is to tell which operators should
      not process multidimensional coordinate values.
      For example, we want ncwa to act on coordinates that are reduced 
-     However, we do not want ncea, ncbo, or ncflint, for example, to load and process single or multi-dimensional coordinate variables.
+     However, we do not want ncfe, ncbo, or ncflint, for example, to load and process single or multi-dimensional coordinate variables.
      Nor do we want ncpdq to pack variables like gaussian weights, or area since that causes a significant loss of arithmetic precision when those are used as weights in re-inflated files.
      Such variables to these operators are best treated as "fixed" variables to be copied directly from the input to the output file. */ 
-  switch(prg_id){
+  switch(nco_prg_id){
   case ncap: 
   case ncbo:
-  case ncea:
+  case ncfe:
+  case ncge:
   case ncflint:
     return True;
     break;
@@ -640,10 +645,10 @@ nco_lbr_vrs_prn(void) /* [fnc] Print netCDF library version */
      netCDF 4.0-alpha11--4.0-alpha16: "4.0-alpha11"
      netCDF 4.0-beta1--present: "4.0-beta1" */  
   lbr_sng=(char *)strdup(nc_inq_libvers());
-  /* (void)fprintf(stderr,"%s: nco_lbr_vrs_prn() returns %s\n",prg_nm_get(),lbr_sng);*/
+  /* (void)fprintf(stderr,"%s: nco_lbr_vrs_prn() returns %s\n",nco_prg_nm_get(),lbr_sng);*/
   of_ptr=strstr(lbr_sng," of ");
   if(of_ptr == NULL){
-    (void)fprintf(stderr,"%s: WARNING nco_lbr_vrs_prn() reports of_ptr == NULL\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: WARNING nco_lbr_vrs_prn() reports of_ptr == NULL\n",nco_prg_nm_get());
     lbr_vrs_sng_lng=(size_t)strlen(lbr_sng);
   }else{
     lbr_vrs_sng_lng=(size_t)(of_ptr-lbr_sng);
@@ -679,9 +684,9 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
   /* fxm: TKN2YESNO breaks when TKN is undefined
      Full macro language like M4 might be useful here, though probably too much trouble */
 #define TKN2YESNO(x) ((x+0) ? ("No"):("Yes"))
-  /* NB: Keep configuration option tokens consistent among configure.in, bld/Makefile, and nco_ctl.c
+  /* NB: Keep configuration option tokens consistent among configure.ac, bld/Makefile, and nco_ctl.c
      Alphabetize list by first word in English text description of token */
-  (void)fprintf(stderr,"Configuration Option:\tActive?\tMeaning or Reference:\nCheck _FillValue\t%s\thttp://nco.sf.net/nco.html#mss_val\nCheck missing_value\t%s\thttp://nco.sf.net/nco.html#mss_val\nCompressed netCDF3\t%s\thttp://nco.sf.net/nco.html#znetcdf (pre-alpha)\nDAP clients (libdap)\t%s\thttp://nco.sf.net/nco.html#dap\nDAP clients (libnetcdf)\t%s\thttp://nco.sf.net/nco.html#dap\nDebugging: Custom\t%s\tPedantic, bounds checking (slowest execution)\nDebugging: Symbols\t%s\tProduce s [...]
+  (void)fprintf(stdout,"Configuration Option:\tActive?\tMeaning or Reference:\nCheck _FillValue\t%s\thttp://nco.sf.net/nco.html#mss_val\nCheck missing_value\t%s\thttp://nco.sf.net/nco.html#mss_val\nCompressed netCDF3\t%s\thttp://nco.sf.net/nco.html#znetcdf (pre-alpha)\nDAP clients (libdap)\t%s\thttp://nco.sf.net/nco.html#dap\nDAP clients (libnetcdf)\t%s\thttp://nco.sf.net/nco.html#dap\nDebugging: Custom\t%s\tPedantic, bounds checking (slowest execution)\nDebugging: Symbols\t%s\tProduce s [...]
 		(!strcmp("_FillValue",nco_mss_val_sng_get())) ? "Yes" : "No",
 		(!strcmp("missing_value",nco_mss_val_sng_get())) ? "Yes" : "No",
 #if defined(ENABLE_ZNETCDF) && (ENABLE_ZNETCDF)
@@ -714,6 +719,12 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 #else /* !ENABLE_GSL */
 		"No",
 #endif /* !ENABLE_GSL */
+/* 20131018: This switch is not active yet. Requires netCDF library support */
+#if defined(ENABLE_HDF4) && (ENABLE_HDF4)
+		"Yes",
+#else /* !ENABLE_HDF4 */
+		"Unknown",
+#endif /* !ENABLE_HDF4 */
 #if defined(I18N) && (I18N)
 		"Yes",
 #else /* !I18N */
@@ -729,6 +740,11 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 #else /* !NC_64BIT_OFFSET */
 		"No",
 #endif /* !NC_64BIT_OFFSET */
+#if defined(HAVE_NETCDF4_H) && (HAVE_NETCDF4_H)
+		"Yes",
+#else /* !HAVE_NETCDF4_H */
+		"No",
+#endif /* !HAVE_NETCDF4_H */
 #if defined(ENABLE_NETCDF4) && (ENABLE_NETCDF4)
 		"Yes",
 #else /* !ENABLE_NETCDF4 */
@@ -749,6 +765,11 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 #else /* !ENABLE_PNETCDF */
 		"No",
 #endif /* !ENABLE_PNETCDF */
+#if defined(NCO_HAVE_REGEX_FUNCTIONALITY) && (NCO_HAVE_REGEX_FUNCTIONALITY)
+		"Yes",
+#else /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+		"No",
+#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
 #if defined(ENABLE_SHARED) && (ENABLE_SHARED)
 		"Yes",
 #else /* !ENABLE_SHARED */
@@ -769,11 +790,6 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 #else /* !HAVE_UDUNITS2_H */
 		"No",
 #endif /* !HAVE_UDUNITS2_H */
-#if defined(NCO_HAVE_REGEX_FUNCTIONALITY) && (NCO_HAVE_REGEX_FUNCTIONALITY)
-		"Yes",
-#else /* !NCO_HAVE_REGEX_FUNCTIONALITY */
-		"No",
-#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
 		""); /* End of print statement marker */
   (void)fprintf(stderr,"\n%s",nco_nmn_get());
 } /* end nco_cnf_prn() */
@@ -781,12 +797,13 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 const char * /* O [sng] Mnemonic that describes current NCO version */
 nco_nmn_get(void) /* [fnc] Return mnemonic that describes current NCO version */
 { 
-  /* Purpose: Return mnemonic describing current NCO version */
-  return "Stephanie says I'm an SM\n";
+  /* Purpose: Return mnemonic describing current NCO version
+     Always Include terminal \n so mnemonic does not dangle */
+  return "Hungarian Goulash\n";
 } /* end nco_nmn_get() */
 
 char * /* O [sng] nm_in stripped of any path (i.e., program name stub) */ 
-prg_prs /* [fnc] Strip program name to stub and return program ID */
+nco_prg_prs /* [fnc] Strip program name to stub and set program ID */
 (const char * const nm_in, /* I [sng] Name of program, i.e., argv[0] (may include path prefix) */
  int * const prg_lcl) /* O [enm] Enumerated number corresponding to nm_in */
 {
@@ -797,7 +814,17 @@ prg_prs /* [fnc] Strip program name to stub and return program ID */
 
   /* Get program name (use strrchr() first in case nm_in contains a path) */
   nm_out_orig=nm_out_tmp=(char *)strdup(nm_in);
+#ifdef _MSC_VER
+  int len;
+  if(strrchr(nm_out_tmp,'\\')) nm_out_tmp=strrchr(nm_out_tmp,'\\')+1;
+  char *s=strstr(nm_out_tmp,".exe");
+  if(s!=NULL && !strcmp(s,".exe")){
+    len=strlen(nm_out_tmp); /* cut any '.exe' from name */ 
+    nm_out_tmp[len-4]='\0';   
+  } /* endif */
+#else /* !_MSC_VER */
   if(strrchr(nm_out_tmp,'/')) nm_out_tmp=strrchr(nm_out_tmp,'/')+1;
+#endif /* !_MSC_VER */
 
   /* Skip possible libtool prefix */
   if(!strncmp(nm_out_tmp,"lt-",3)){nm_out_tmp+=3;}
@@ -819,12 +846,19 @@ prg_prs /* [fnc] Strip program name to stub and return program ID */
   else if(!strcmp(nm_out_tmp,"ncmultiply")){*prg_lcl=ncbo;}
   else if(!strcmp(nm_out_tmp,"ncsub")){*prg_lcl=ncbo;}
   else if(!strcmp(nm_out_tmp,"ncsubtract")){*prg_lcl=ncbo;}
-  /* ncea and acceptable synonyms (symbolic links): */
-  else if(!strcmp(nm_out_tmp,"ncea")){*prg_lcl=ncea;}
-  else if(!strcmp(nm_out_tmp,"mpncea")){*prg_lcl=ncea;}
   /* ncecat and acceptable synonyms (symbolic links): */
   else if(!strcmp(nm_out_tmp,"ncecat")){*prg_lcl=ncecat;}
   else if(!strcmp(nm_out_tmp,"mpncecat")){*prg_lcl=ncecat;}
+  /* ncfe and acceptable synonyms (symbolic links): */
+  else if(!strcmp(nm_out_tmp,"ncea")){*prg_lcl=ncfe;}
+  else if(!strcmp(nm_out_tmp,"mpncea")){*prg_lcl=ncfe;}
+  else if(!strcmp(nm_out_tmp,"nces")){*prg_lcl=ncfe;}
+  else if(!strcmp(nm_out_tmp,"mpnces")){*prg_lcl=ncfe;}
+  else if(!strcmp(nm_out_tmp,"ncfe")){*prg_lcl=ncfe;}
+  else if(!strcmp(nm_out_tmp,"mpncfe")){*prg_lcl=ncfe;}
+  /* ncge and acceptable synonyms (symbolic links): */
+  else if(!strcmp(nm_out_tmp,"ncge")){*prg_lcl=ncge;}
+  else if(!strcmp(nm_out_tmp,"mpncge")){*prg_lcl=ncge;}
   /* ncflint and acceptable synonyms (symbolic links): */
   else if(!strcmp(nm_out_tmp,"ncflint")){*prg_lcl=ncflint;}
   else if(!strcmp(nm_out_tmp,"mpncflint")){*prg_lcl=ncflint;}
@@ -836,6 +870,8 @@ prg_prs /* [fnc] Strip program name to stub and return program ID */
   else if(!strcmp(nm_out_tmp,"ncpack")){*prg_lcl=ncpdq;}
   else if(!strcmp(nm_out_tmp,"ncunpack")){*prg_lcl=ncpdq;}
   /* ncra and acceptable synonyms (symbolic links): */
+  else if(!strcmp(nm_out_tmp,"ncrs")){*prg_lcl=ncra;}
+  else if(!strcmp(nm_out_tmp,"mpncrs")){*prg_lcl=ncra;}
   else if(!strcmp(nm_out_tmp,"ncra")){*prg_lcl=ncra;}
   else if(!strcmp(nm_out_tmp,"mpncra")){*prg_lcl=ncra;}
   /* ncrcat and acceptable synonyms (symbolic links): */
@@ -844,10 +880,12 @@ prg_prs /* [fnc] Strip program name to stub and return program ID */
   /* ncrename and acceptable synonyms (symbolic links): */
   else if(!strcmp(nm_out_tmp,"ncrename")){*prg_lcl=ncrename;}
   /* ncwa and acceptable synonyms (symbolic links): */
+  else if(!strcmp(nm_out_tmp,"ncws")){*prg_lcl=ncwa;}
+  else if(!strcmp(nm_out_tmp,"mpncws")){*prg_lcl=ncwa;}
   else if(!strcmp(nm_out_tmp,"ncwa")){*prg_lcl=ncwa;}
   else if(!strcmp(nm_out_tmp,"mpncwa")){*prg_lcl=ncwa;}
   else{
-    (void)fprintf(stdout,"%s: ERROR executable name %s not registered in prg_prs()\n",nm_out_tmp,nm_out_tmp);
+    (void)fprintf(stdout,"%s: ERROR executable name %s not registered in nco_prg_prs()\n",nm_out_tmp,nm_out_tmp);
     nco_exit(EXIT_FAILURE);
   } /* end else */
 
@@ -857,7 +895,7 @@ prg_prs /* [fnc] Strip program name to stub and return program ID */
   nm_out_orig=(char *)nco_free(nm_out_orig);
   return nm_out;
 
-} /* end prg_prs() */
+} /* end nco_prg_prs() */
 
 void 
 nco_usg_prn(void)
@@ -868,57 +906,62 @@ nco_usg_prn(void)
 
   int prg_lcl;
 
-  prg_lcl=prg_get();
+  prg_lcl=nco_prg_id_get();
 
   switch(prg_lcl){
   case ncap:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-F] [-f] [-h] [-L lvl] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] [-s algebra] [-S fl.nco] [-t thr_nbr] [-v] in.nc [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-F] [-f] [--fl_fmt fmt] [-h] [--hdf] [--hdr_pad nbr] [-L lvl] [-l path] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [-s algebra] [-S fl.nco] [-t thr_nbr] [-v] in.nc [out.nc]\n");
     break;
   case ncatted:
-    opt_sng=(char *)strdup("[-a ...] [-D dbg_lvl] [-h] [--hdr_pad nbr] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] in.nc [[out.nc]]\n");
+    opt_sng=(char *)strdup("[-a ...] [--bfr sz] [-D nco_dbg_lvl] [-h] [--hdr_pad nbr] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] in.nc [[out.nc]]\n");
     break;
   case ncbo:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-h] [-L lvl] [-l path] [-n ...] [-O] [-o out.nc] [-p path] [-R] [-r] [-t thr_nbr] [-v ...] [-X box] [-x] [-y op_typ] in_1.nc in_2.nc [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-h] [--hdf] [--hdr_pad nbr] [-L lvl] [-l path] [--msa] [-n ...] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [-t thr_nbr] [--unn] [-v ...] [-X box] [-x] [-y op_typ] in_1.nc in_2.nc [out.nc]\n");
     break;
   case ncflint:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-h] [-i var,val] [-L lvl] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] [-t thr_nbr] [-v ...] [-X box] [-x] [-w wgt_1[,wgt_2]] in_1.nc in_2.nc [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fix_rec_crd] [--fl_fmt fmt] [-h] [--hdf] [--hdr_pad nbr] [-i var,val] [-L lvl] [-l path] [--msa] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [-t thr_nbr] [-v ...] [-X box] [-x] [-w wgt_1[,wgt_2]] in_1.nc in_2.nc [out.nc]\n");
     break;
   case ncks:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-a] [-B] [-b fl_bnr] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [--fix_rec_dmn] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [-m] [--mk_rec_dmn dim] [-M] [-O] [-o out.nc] [-P] [-p path] [-Q] [-q] [-R] [-r] [-s format] [-u] [-v ...] [-X box] [-x] in.nc [[out.nc]]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-5] [-6] [-7] [-A] [-a] [-b fl_bnr] [--bfr sz] [-C] [-c] [--cdl] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fix_rec_dmn dim] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [-M] [-m] [--md5_dgs] [--md5_wrt] [--mk_rec_dmn dim] [--msa] [--no_blank] [--no_tmp_fl] [-O] [-o out.nc] [-P] [-p path] [-Q] [-q] [-R] [-r] [--ram_all] [-s format] [-u] [--unn] [-v ...] [-X  [...]
     break;
   case ncpdq:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-a ...] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-h] [-L lvl] [-l path] [-M pck_map][-O] [-o out.nc] [-P pck_plc] [-p path] [-R] [-r] [-t thr_nbr] [-v ...] [-U] [-X box] [-x] in.nc [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [-a ...] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-h] [--hdf] [--hdr_pad nbr] [-L lvl] [-l path] [-M pck_map] [--mrd] [--msa] [--no_tmp_fl] [-O] [-o out.nc] [-P pck_plc] [-p path] [-R] [-r] [--ram_all] [-t thr_nbr] [--unn] [-U] [-v ...] [-X box] [-x] in.nc [out.nc]\n");
     break;
   case ncra:
-  case ncea:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-H] [-h] [-L lvl] [-l path] [-n ...] [-O] [-o out.nc] [-p path] [-R] [-r] [-t thr_nbr] [-v ...] [-X box] [-x] [-y op_typ] in.nc [...] [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...]  [--dbl|flt] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-H] [-h] [--hdf] [--hdr_pad nbr] [-L lvl] [-l path] [--mro] [--msa] [-n ...] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [--rec_apn] [-t thr_nbr] [--unn] [-v ...] [-X box] [-x] [-y op_typ] in.nc [...] [out.nc]\n");
+    break;
+  case ncfe:
+  case ncge:
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...]  [--dbl|flt] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-H] [-h] [--hdf] [--hdr_pad nbr] [-L lvl] [-l path] [--msa] [-n ...] [--no_tmp_fl] [--nsm_fl] [--nsm_grp] [--nsm_sfx] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [-t thr_nbr] [--unn] [-v ...] [-X box] [-x] [-y op_typ] in.nc [...] [out.nc]\n");
     break;
   case ncrcat:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-H] [-h] [-L lvl] [-l path] [-n ...] [-O] [-o out.nc] [-p path] [-R] [-r] [-t thr_nbr] [-v ...] [-X box] [-x] in.nc [...] [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [--md5_digest] [--msa] [-n ...] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [--rec_apn] [-t thr_nbr] [--unn] [-v ...] [-X box] [-x] in.nc [...] [out.nc]\n");
     break;
   case ncecat:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-H] [-h] [-L lvl] [-l path] [-M] [-n ...] [-O] [-o out.nc] [-p path] [-R] [-r] [-t thr_nbr] [-u ulm_nm] [-v ...] [-X box] [-x] in.nc [...] [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [--gag] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [-M] [--md5_digest] [--mrd] [--msa] [-n ...] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [-t thr_nbr] [-u ulm_nm] [--unn] [-v ...] [-X box] [-x] in.nc [...] [out.nc]\n");
     break;
   case ncrename:
-    opt_sng=(char *)strdup("[-a ...] [-D dbg_lvl] [-d ...] [-h] [--hdr_pad nbr] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] [-v ...] in.nc [[out.nc]]\n");
+    opt_sng=(char *)strdup("[-a ...] [--bfr sz] [-D nco_dbg_lvl] [-d ...] [-g ...] [-h] [--hdr_pad nbr] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] [-v ...] in.nc [[out.nc]]\n");
     break;
   case ncwa:
-    opt_sng=(char *)strdup("[-3] [-4] [-6] [-A] [-a ...] [-B mask_cond] [-b] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D dbg_lvl] [-d ...] [-F] [-h] [-I] [-L lvl] [-l path] [-m mask] [-M mask_val] [-N] [-O] [-o out.nc] [-p path] [-R] [-r] [-T mask_comp] [-t thr_nbr] [-v ...] [-w wgt] [-x] [-y op_typ] in.nc [out.nc]\n");
+    opt_sng=(char *)strdup("[-3] [-4] [-6] [-7] [-A] [-a ...] [-B mask_cond] [-b] [--bfr sz] [-C] [-c] [--cnk_dmn nm,sz] [--cnk_map map] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...]  [--dbl|flt] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [-h] [--hdf] [--hdr_pad nbr] [-I] [-L lvl] [-l path] [-m mask] [-M mask_val] [-N] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [-R] [-r] [--ram_all] [-T mask_comp] [-t thr_nbr] [--unn] [-v ...] [-w wgt] [-x] [-y op_typ] in.nc [out.nc]\n");
     break;
   default: nco_dfl_case_prg_id_err(); break;
   } /* end switch */
   
   /* We now have command-specific command line option string */
-  (void)fprintf(stdout,"%s command line options cheat-sheet:\n",prg_nm_get());
-  (void)fprintf(stdout,"%s %s\n",prg_nm_get(),opt_sng);
+  (void)fprintf(stdout,"%s Command line options cheatsheet (full details at http://nco.sf.net/nco.html#%s):\n",nco_prg_nm_get(),nco_prg_nm_get());
+  (void)fprintf(stdout,"%s %s\n",nco_prg_nm_get(),opt_sng);
 
-  if(strstr(opt_sng,"-3")) (void)fprintf(stdout,"-3, --3, --fl_fmt=classic\tOutput file in netCDF3 CLASSIC (32-bit offset) storage format\n");
+  if(strstr(opt_sng,"[-3]")) (void)fprintf(stdout,"-3, --3, --fl_fmt=classic\tOutput file in netCDF3 CLASSIC (32-bit offset) storage format\n");
 #ifdef ENABLE_NETCDF4
-  if(strstr(opt_sng,"-4")) (void)fprintf(stdout,"-4, --4, --netcdf4\t\tOutput file in netCDF4 (HDF5) storage format\n");
+  if(strstr(opt_sng,"[-4]")) (void)fprintf(stdout,"-4, --4, --netcdf4\t\tOutput file in netCDF4 (HDF5) storage format\n");
 #endif /* !ENABLE_NETCDF4 */
-  if(strstr(opt_sng,"-6")) (void)fprintf(stdout,"-6, --64, --fl_fmt=64bit\tOutput file in netCDF3 64-bit offset storage format\n");
-  if(strstr(opt_sng,"-A")) (void)fprintf(stdout,"-A, --apn, --append\tAppend to existing output file, if any\n");
-  if(strstr(opt_sng,"-a")){
+  if(strstr(opt_sng,"[-5]")) (void)fprintf(stdout,"-5, --5, \t\tPrint alphabetically by group then variable\n");
+  if(strstr(opt_sng,"[-6]")) (void)fprintf(stdout,"-6, --64, --fl_fmt=64bit\tOutput file in netCDF3 64-bit offset storage format\n");
+  if(strstr(opt_sng,"[-7]")) (void)fprintf(stdout,"-7, --7, --fl_fmt=netcdf4_classic\tOutput file in netCDF4 CLASSIC format (3+4=7)\n");
+  if(strstr(opt_sng,"[-A]")) (void)fprintf(stdout,"-A, --apn, --append\tAppend to existing output file, if any\n");
+  if(strstr(opt_sng,"[-a")){
     if(prg_lcl == ncatted) (void)fprintf(stdout,"-a, --attribute att_nm,var_nm,mode,att_typ,att_val Attribute specification:\n\t\t\tmode = a,c,d,m,o and att_typ = f,d,l,s,c,b\n");
 #ifdef ENABLE_NETCDF4
     if(prg_lcl == ncatted) (void)fprintf(stdout,"\t\t\tnetCDF4 att_typ's = ub,us,u,ll,ull\n");
@@ -928,106 +971,133 @@ nco_usg_prn(void)
     if(prg_lcl == ncrename) (void)fprintf(stdout,"-a, --attribute old_att,new_att Attribute's old and new names\n");
     if(prg_lcl == ncwa) (void)fprintf(stdout,"-a, --avg, --average avg_dim1[,avg_dim2[...]] Averaging dimensions\n");
   } /* end if */
-  if(strstr(opt_sng,"-B")){
-    if(prg_lcl == ncks) (void)fprintf(stdout,"-B, --bnr, --binary\tWrite data to unformatted binary file\n");
+  if(strstr(opt_sng,"[-B")){
+#ifndef _MSC_VER
     if(prg_lcl == ncwa) (void)fprintf(stdout,"-B, --msk_cnd, --mask_condition mask_cond\tMask condition (e.g., \"ORO < 1\")\n");
+#endif /* _MSC_VER */
   } /* end if -B */
-  if(strstr(opt_sng,"-b")){
-    if(prg_lcl == ncks) (void)fprintf(stdout,"-b, --fl_bnr, --binary-file fl_bnr\tUnformatted binary file to write\n");
-    if(prg_lcl == ncwa) (void)fprintf(stdout,"-b, --rdd, --retain-degenerate-dimensions\tRetain degenerate dimensions\n");
-  } /* end if -b */
-  if(strstr(opt_sng,"-C")) (void)fprintf(stdout,"-C, --nocoords\t\tAssociated coordinate variables should not be processed\n");
-  if(strstr(opt_sng,"-c")) (void)fprintf(stdout,"-c, --crd, --coords\tCoordinate variables will all be processed\n");
+  if(strstr(opt_sng,"[-b ")) (void)fprintf(stdout,"-b, --fl_bnr, --binary-file fl_bnr\tUnformatted binary file to write\n");
+  if(strstr(opt_sng,"[-b]")) (void)fprintf(stdout,"-b, --rdd, --retain-degenerate-dimensions\tRetain degenerate dimensions\n");
+  if(strstr(opt_sng,"--bfr")) (void)fprintf(stdout,"    --bfr_sz, --buffer_size sz\tBuffer size to open files with\n");
+  if(strstr(opt_sng,"[-C]")) (void)fprintf(stdout,"-C, --nocoords\t\tAssociated coordinate variables should not be processed\n");
+  if(strstr(opt_sng,"[-c]")) (void)fprintf(stdout,"-c, --crd, --coords\tCoordinate variables will all be processed\n");
+  if(strstr(opt_sng,"--cdl")) (void)fprintf(stdout,"    --cdl\t\tPrint CDL (netCDF lingua franca used by ncdump/ncgen)\n");
   if(strstr(opt_sng,"--cnk_dmn")) (void)fprintf(stdout,"    --cnk_dmn, --chunk_dimension nm,sz\tChunksize of dimension nm is sz\n");
   if(strstr(opt_sng,"--cnk_map")) (void)fprintf(stdout,"    --cnk_map, --chunk_map map\t\tChunking map [dmn,rd1,prd,xpl]\n");
   if(strstr(opt_sng,"--cnk_plc")) (void)fprintf(stdout,"    --cnk_plc, --chunk_policy plc\tChunking policy [all,g2d,g3d,xpl,uck]\n");
   if(strstr(opt_sng,"--cnk_scl")) (void)fprintf(stdout,"    --cnk_scl, --chunk_scalar sz\tChunksize scalar (for all dimensions)\n");
-  if(strstr(opt_sng,"-D")) (void)fprintf(stdout,"-D, --dbg_lvl, --debug-level dbg_lvl\tDebugging level\n");
-  if(strstr(opt_sng,"-d")){
+  if(strstr(opt_sng,"[-D")) (void)fprintf(stdout,"-D, --dbg_lvl, --debug-level nco_dbg_lvl\tDebugging level\n");
+  if(strstr(opt_sng,"[-d")){
     if(prg_lcl == ncrename) (void)fprintf(stdout,"-d, --dmn, --dimension old_dim,new_dim Dimension's old and new names\n");
+    else if(prg_lcl == ncra || prg_lcl == ncrcat) (void)fprintf(stdout,"-d, --dmn, --dimension dim,[min][,[max][[[,stride[,duration]]]]] Dimension's limits, stride, duration in hyperslab\n");
     else (void)fprintf(stdout,"-d, --dmn, --dimension dim,[min][,[max]][,[stride]] Dimension's limits and stride in hyperslab\n");
   } /* end if -d */
-  if(strstr(opt_sng,"-F")) (void)fprintf(stdout,"-F, --ftn, --fortran\tFortran indexing conventions (1-based) for I/O\n");
+  if(strstr(opt_sng,"--dbl|flt")) (void)fprintf(stdout,"    --dbl, --flt, --rth_dbl|flt\tdbl: Always promote single- to double-precision b4 arithmetic (default). flt: OK with single-precision arithmetic.\n");
+  if(strstr(opt_sng,"[-F]")) (void)fprintf(stdout,"-F, --ftn, --fortran\tFortran indexing conventions (1-based) for I/O\n");
   if(strstr(opt_sng,"[-f]")) (void)fprintf(stdout,"-f, --fnc_tbl, --prn_fnc_tbl\tPrint function table\n");
-  if(strstr(opt_sng,"--fix_rec_dmn")) (void)fprintf(stdout,"    --fix_rec_dmn\tChange record dimension into fixed dimension in output file\n");
+  if(strstr(opt_sng,"--fix_rec_crd")) (void)fprintf(stdout,"    --fix_rec_crd\tDo not interpolate/multiply record coordinate variables\n");
+  if(strstr(opt_sng,"--fix_rec_dmn dim")) (void)fprintf(stdout,"    --fix_rec_dmn dim\tChange dimension dim to fixed dimension in output file\n");
 #ifdef ENABLE_NETCDF4
-  if(strstr(opt_sng,"--fl_fmt")) (void)fprintf(stdout,"--fl_fmt, --file_format format\tFile format [classic,64bit,netcdf4,netcdf4_classic]\n");
-#else
-  if(strstr(opt_sng,"--fl_fmt")) (void)fprintf(stdout,"--fl_fmt, --file_format format\tFile format [classic,64bit]\n");
+  if(strstr(opt_sng,"--fl_fmt")) (void)fprintf(stdout,"    --fl_fmt, --file_format fmt\tFile format [classic,64bit,netcdf4,netcdf4_classic]\n");
+#else /* !ENABLE_NETCDF4 */
+  if(strstr(opt_sng,"--fl_fmt")) (void)fprintf(stdout,"    --fl_fmt, --file_format fmt\tFile format [classic,64bit]\n");
+#endif /* !ENABLE_NETCDF4 */
+#ifdef ENABLE_NETCDF4
+  if(strstr(opt_sng,"--gag")) (void)fprintf(stdout,"  --gag, --aggregate_group\tGroup Aggregation (not Record Aggregation)\n");
+  if(strstr(opt_sng,"[-G")) (void)fprintf(stdout,"-G, --gpe [grp_nm][:[lvl]]\tGroup Path Editing path, levels to replace\n");
+  if(strstr(opt_sng,"[-g")){
+    if(prg_lcl == ncrename) (void)fprintf(stdout,"-g, --grp --group\told_grp,new_grp Group's old and new names\n");
+    if(prg_lcl != ncrename) (void)fprintf(stdout,"-g, --grp grp1[,grp2[...]] Group(s) to process (regular expressions supported)\n");
+  } /* end if */
 #endif /* !ENABLE_NETCDF4 */
-  if(strstr(opt_sng,"-H")){
+  if(strstr(opt_sng,"[-H]")){
     if(prg_lcl == ncks) (void)fprintf(stdout,"-H, --data, --hieronymus\tToggle printing data\n");
-    if(nco_is_mlt_fl_opr(prg_lcl)) (void)fprintf(stdout,"-H, --fl_lst_in, --file_list\tDo not create \"input_file_list\" global attribute\n");
+    if(nco_is_mfo(prg_lcl)) (void)fprintf(stdout,"-H, --fl_lst_in, --file_list\tDo not create \"input_file_list\" global attribute\n");
   } /* end if -H */
-  /* Disambiguate -h from --hdr_pad */
   if(strstr(opt_sng,"[-h]")) (void)fprintf(stdout,"-h, --hst, --history\tDo not append to \"history\" global attribute\n");
+  if(strstr(opt_sng,"--hdf")) (void)fprintf(stdout,"    --hdf_upk, --hdf_upk\tHDF unpack convention: unpacked=scale_factor*(packed-add_offset)\n");
   if(strstr(opt_sng,"--hdr_pad")) (void)fprintf(stdout,"    --hdr_pad, --header_pad\tPad output header with nbr bytes\n");
-  if(strstr(opt_sng,"-i")) (void)fprintf(stdout,"-i, --ntp, --interpolate var,val\tInterpolant and value\n");
-  if(strstr(opt_sng,"-I")) (void)fprintf(stdout,"-I, --wgt_msk_crd_var\tDo not weight or mask coordinate variables\n");
+  if(strstr(opt_sng,"[-i var,val]")) (void)fprintf(stdout,"-i, --ntp, --interpolate var,val\tInterpolant and value\n");
+  if(strstr(opt_sng,"[-I]")) (void)fprintf(stdout,"-I, --wgt_msk_crd_var\tDo not weight or mask coordinate variables\n");
 #ifdef ENABLE_NETCDF4
-  if(strstr(opt_sng,"-L")) (void)fprintf(stdout,"-L, --dfl_lvl, --deflate lvl\tLempel-Ziv deflation (lvl=0..9) for netCDF4 output\n");
+  if(strstr(opt_sng,"[-L")) (void)fprintf(stdout,"-L, --dfl_lvl, --deflate lvl\tLempel-Ziv deflation (lvl=0..9) for netCDF4 output\n");
 #endif /* !ENABLE_NETCDF4 */
-  if(strstr(opt_sng,"-l")) (void)fprintf(stdout,"-l, --lcl, --local path\tLocal storage path for remotely-retrieved files\n");
-  if(strstr(opt_sng,"-M")){
-    if(prg_lcl == ncecat) (void)fprintf(stdout,"-M, --glb_mtd_spr\tDo not copy global metadata\n");
+  if(strstr(opt_sng,"[-l")) (void)fprintf(stdout,"-l, --lcl, --local path\tLocal storage path for remotely-retrieved files\n");
+  if(strstr(opt_sng,"[-M")){
+    if(prg_lcl == ncecat) (void)fprintf(stdout,"-M, --glb_mtd_spp\tDo not copy global metadata\n");
     if(prg_lcl == ncks) (void)fprintf(stdout,"-M, --Mtd, --Metadata\tToggle printing global metadata\n");
     if(prg_lcl == ncpdq) (void)fprintf(stdout,"-M, --pck_map, --pack_map, --map pck_map\tPack map [flt_sht,flt_byt,hgh_sht,hgh_byt,nxt_lsr]\n");
     if(prg_lcl == ncwa) (void)fprintf(stdout,"-M, --msk_val, --mask-value, --mask_value mask_val\tMasking value (default is 1.0)\n");
   } /* end if */
-  if(strstr(opt_sng,"-m")){
+  if(strstr(opt_sng,"[-m")){
     if(prg_lcl == ncwa) (void)fprintf(stdout,"-m, --msk_nm, --msk_var, --mask-variable, --mask_variable mask_var\tMasking variable name\n");
     if(prg_lcl == ncks) (void)fprintf(stdout,"-m, --mtd, --metadata\tToggle printing variable metadata\n");
   } /* end if */
+  if(strstr(opt_sng,"--md5_digest")) (void)fprintf(stdout,"    --md5_dgs, --md5_digest\tPerform MD5 digests\n");
+  if(strstr(opt_sng,"--md5_wrt_att")) (void)fprintf(stdout,"   --md5_wrt, --md5_write\tWrite MD5 digests as attributes\n");
   if(strstr(opt_sng,"--mk_rec_dmn")) (void)fprintf(stdout,"    --mk_rec_dmn dim\tDefine dim as record dimension in output file\n");
-  if(strstr(opt_sng,"-N")) (void)fprintf(stdout,"-N, --nmr, --numerator\tNo normalization\n");
-  if(strstr(opt_sng,"-n")){
+  if(strstr(opt_sng,"--mro")) (void)fprintf(stdout,"    --mro\t\tMulti-Record Output\n");
+  if(strstr(opt_sng,"[-N]")) (void)fprintf(stdout,"-N, --nmr, --numerator\tNo normalization\n");
+  if(strstr(opt_sng,"[-n ...]")){
     /*    if(prg_lcl == ncwa) (void)fprintf(stdout,"-n\t\tNormalize by tally but not weight\n");*/
     if(prg_lcl != ncwa) (void)fprintf(stdout,"-n, --nintap nbr_files,[nbr_numeric_chars[,increment]] NINTAP-style abbreviation of file list\n");
   } /* end if -n */
-  if(strstr(opt_sng,"-o")) (void)fprintf(stdout,"-o, --output, --fl_out fl_out\tOutput file name (or use last positional argument)\n");
-  if(strstr(opt_sng,"-O")) (void)fprintf(stdout,"-O, --ovr, --overwrite\tOverwrite existing output file, if any\n");
-  if(strstr(opt_sng,"-P")){
+  if(strstr(opt_sng,"--no_blank")) (void)fprintf(stdout,"    --no_blank\t\tPrint numeric missing values instead of blanks (underscores)\n");
+  if(strstr(opt_sng,"--no_tmp_fl")) (void)fprintf(stdout,"    --no_tmp_fl\t\tDo not write output to temporary file\n");
+  if(strstr(opt_sng,"--nsm_fl")) (void)fprintf(stdout,"    --nsm_fl, --ensemble_file\tEnsembles comprise equally weighted files\n");
+  if(strstr(opt_sng,"--nsm_grp")) (void)fprintf(stdout,"    --nsm_grp, --ensemble_group\tEnsembles comprise equally weighted groups\n");
+  if(strstr(opt_sng,"--nsm_sfx")) (void)fprintf(stdout,"    --nsm_sfx, --ensemble_suffix\tPlace ensemble output in group parent/parent+nsm_sfx\n");
+  if(strstr(opt_sng,"[-o")) (void)fprintf(stdout,"-o, --output, --fl_out fl_out\tOutput file name (or use last positional argument)\n");
+  if(strstr(opt_sng,"[-O]")) (void)fprintf(stdout,"-O, --ovr, --overwrite\tOverwrite existing output file, if any\n");
+  if(strstr(opt_sng,"[-P")){
     if(prg_lcl == ncks) (void)fprintf(stdout,"-P, --prn, --print\tPrint data, metadata, and units. Abbreviation for -C -H -M -m -u.\n");
     if(prg_lcl == ncpdq) (void)fprintf(stdout,"-P, --pck_plc, --pack_policy pck_plc\tPacking policy [all_new,all_xst,xst_new,upk]\n");
   } /* end if -P */
-  if(strstr(opt_sng,"-p")) (void)fprintf(stdout,"-p, --pth, --path path\tPath prefix for all input filenames\n");
-  if(strstr(opt_sng,"-Q")) (void)fprintf(stdout,"-Q, \t\t\tToggle printing of dimension indices and coordinate values\n");
-  if(strstr(opt_sng,"-q")) (void)fprintf(stdout,"-q, --quiet\t\tTurn off all printing to screen\n");
-  if(strstr(opt_sng,"-R")) (void)fprintf(stdout,"-R, --rtn, --retain\tRetain remotely-retrieved files after use\n");
-  if(strstr(opt_sng,"-r")) (void)fprintf(stdout,"-r, --revision, --vrs, --version\tCompile-time configuration and/or program version\n");
-  if(strstr(opt_sng,"-s")){
+  if(strstr(opt_sng,"[-p")) (void)fprintf(stdout,"-p, --pth, --path path\tPath prefix for all input filenames\n");
+  if(strstr(opt_sng,"[-Q]")) (void)fprintf(stdout,"-Q, \t\t\tToggle printing of dimension indices and coordinate values\n");
+  if(strstr(opt_sng,"[-q]")) (void)fprintf(stdout,"-q, --quiet\t\tTurn off all printing to screen\n");
+  if(strstr(opt_sng,"[-R]")) (void)fprintf(stdout,"-R, --rtn, --retain\tRetain remotely-retrieved files after use\n");
+  if(strstr(opt_sng,"[-r]")) (void)fprintf(stdout,"-r, --revision, --vrs, --version\tCompile-time configuration and/or program version\n");
+  if(strstr(opt_sng,"--ram_all")) (void)fprintf(stdout,"    --ram_all, --diskless_all\tOpen netCDF3 files and create output files in RAM\n");
+  if(strstr(opt_sng,"--rec_apn")) (void)fprintf(stdout,"    --rec_apn, --record_append\tAppend records directly to output file\n");
+  if(strstr(opt_sng,"[-s")){
     if(prg_lcl != ncap) (void)fprintf(stdout,"-s, --sng_fmt, --string format\tString format for text output\n");
     if(prg_lcl == ncap) (void)fprintf(stdout,"-s, --spt, --script algebra\tAlgebraic command defining single output variable\n");
   } /* end if */
-  if(strstr(opt_sng,"-S")) (void)fprintf(stdout,"-S, --fl_spt, --script-file fl.nco\tScript file containing multiple algebraic commands\n");
-  if(strstr(opt_sng,"-T")) (void)fprintf(stdout,"-T, --mask_comparator, --msk_cmp_typ, --op_rlt comparator\tComparator for mask condition: eq,ne,ge,le,gt,lt\n");
-  if(strstr(opt_sng,"-t")) (void)fprintf(stdout,"-t, --thr_nbr, --threads, --omp_num_threads thr_nbr\tThread number for OpenMP\n");
-  if(strstr(opt_sng,"-u")){
+  if(strstr(opt_sng,"[-S")) (void)fprintf(stdout,"-S, --fl_spt, --script-file fl.nco\tScript file containing multiple algebraic commands\n");
+  if(strstr(opt_sng,"[-T")) (void)fprintf(stdout,"-T, --mask_comparator, --msk_cmp_typ, --op_rlt comparator\tComparator for mask condition: eq,ne,ge,le,gt,lt\n");
+  if(strstr(opt_sng,"[-t")) (void)fprintf(stdout,"-t, --thr_nbr, --threads, --omp_num_threads thr_nbr\tThread number for OpenMP\n");
+  if(strstr(opt_sng,"[-U]")) (void)fprintf(stdout,"-U, --upk, --unpack\tUnpack input file\n");
+  if(strstr(opt_sng,"[-u")){
     if(prg_lcl == ncks) (void)fprintf(stdout,"-u, --units\t\tToggle printing units of variables, if any\n");
-    if(prg_lcl == ncecat) (void)fprintf(stdout,"-u, --ulm_nm --rcd_nm\t\tNew unlimited (record) dimension name\n");
+    if(prg_lcl == ncecat) (void)fprintf(stdout,"-u, --ulm_nm --rcd_nm\tNew unlimited (record) dimension name\n");
   } /* end if */
-  if(strstr(opt_sng,"-U")) (void)fprintf(stdout,"-U, --upk, --unpack\tUnpack input file\n");
-  if(strstr(opt_sng,"-v")){
+  if(strstr(opt_sng,"--unn")) (void)fprintf(stdout,"    --unn, --union\tSelect union of specified groups and variables\n");
+  if(strstr(opt_sng,"[-v")){
     if(prg_lcl == ncrename) (void)fprintf(stdout,"-v, --variable old_var,new_var Variable's old and new names\n");
-	if(prg_lcl == ncap) (void)fprintf(stdout,"-v, --variable \t\tOutput file includes ONLY user-defined variables\n");
+    if(prg_lcl == ncap) (void)fprintf(stdout,"-v, --variable \t\tOutput file includes ONLY user-defined variables\n");
     if(prg_lcl != ncrename && prg_lcl != ncap) (void)fprintf(stdout,"-v, --variable var1[,var2[...]] Variable(s) to process (regular expressions supported)\n");
   } /* end if */
-  /*  if(strstr(opt_sng,"-W")) (void)fprintf(stdout,"-W\t\tNormalize by weight but not tally\n");*/
-  if(strstr(opt_sng,"-w")){
+  /*  if(strstr(opt_sng,"[-W]")) (void)fprintf(stdout,"-W\t\tNormalize by weight but not tally\n");*/
+  if(strstr(opt_sng,"[-w")){
     if(prg_lcl == ncwa) (void)fprintf(stdout,"-w, --wgt_var, --weight wgt\tWeighting variable name\n");
     if(prg_lcl == ncflint) (void)fprintf(stdout,"-w, --wgt_var, --weight wgt_1[,wgt_2] Weight(s) of file(s)\n");
   } /* end if */
-  if(strstr(opt_sng,"-X")) (void)fprintf(stdout,"-X, --auxiliary lon_min,lon_max,lat_min,lat_max\tAuxiliary coordinate bounding box\n");
-  if(strstr(opt_sng,"-x")) (void)fprintf(stdout,"-x, --xcl, --exclude\tExtract all variables EXCEPT those specified with -v\n");
-  if(strstr(opt_sng,"-y")){
+  if(strstr(opt_sng,"[-X")) (void)fprintf(stdout,"-X, --auxiliary lon_min,lon_max,lat_min,lat_max\tAuxiliary coordinate bounding box\n");
+  if(strstr(opt_sng,"[-x]")) (void)fprintf(stdout,"-x, --xcl, --exclude\tExtract all variables EXCEPT those specified with -v\n");
+  if(strstr(opt_sng,"--xml")) (void)fprintf(stdout,"    --xml\t\tPrint XML (NcML, netCDF Markup Language)\n");
+  if(strstr(opt_sng,"--xml_no_loc")) (void)fprintf(stdout,"    --xml_no_location\tOmit NcML location element\n");
+  if(strstr(opt_sng,"--xml_spr_chr")) (void)fprintf(stdout,"    --xml_spr_chr sng\tSeparator for NcML character types\n");
+  if(strstr(opt_sng,"--xml_spr_nmr")) (void)fprintf(stdout,"    --xml_spr_nmr sng\tSeparator for NcML numeric types\n");
+  if(strstr(opt_sng,"[-y op_typ]")){
     if(prg_lcl == ncbo)(void)fprintf(stdout,"-y, --op_typ, --operation op_typ\tBinary arithmetic operation: add,sbt,mlt,dvd (+,-,*,/)\n");
-    if(prg_lcl == ncra || prg_lcl == ncea || prg_lcl == ncwa)(void)fprintf(stdout,"-y, --op_typ, --operation op_typ\tArithmetic operation: avg,min,max,ttl,sqravg,avgsqr,sqrt,rms,rmssdn\n");
+    if(prg_lcl == ncra || prg_lcl == ncfe || prg_lcl == ncge || prg_lcl == ncwa)(void)fprintf(stdout,"-y, --op_typ, --operation op_typ\tArithmetic operation: avg,min,max,ttl,sqravg,avgsqr,sqrt,rms,rmssdn\n");
   }
   /* All operators have input files, no need to strstr(in.nc) */
   if(prg_lcl == ncbo || prg_lcl == ncflint){
     (void)fprintf(stdout,"in_1.nc in_2.nc\t\tInput file names\n");
   }else{
-    if(nco_is_mlt_fl_opr(prg_lcl)) (void)fprintf(stdout,"in.nc [...]\t\tInput file names\n"); else (void)fprintf(stdout,"in.nc\t\t\tInput file name\n");
+    if(nco_is_mfo(prg_lcl)) (void)fprintf(stdout,"in.nc [...]\t\tInput file names\n"); else (void)fprintf(stdout,"in.nc\t\t\tInput file name\n");
   } /* endif in.nc */
   if(strstr(opt_sng,"[out.nc]")) (void)fprintf(stdout,"out.nc\t\t\tOutput file name (or use -o switch)\n");
 /*  if(strstr(opt_sng,"-")) (void)fprintf(stdout,"-\n");*/
@@ -1036,14 +1106,14 @@ nco_usg_prn(void)
   opt_sng=(char *)nco_free(opt_sng);
 
   /* Public service announcements */
-  (void)fprintf(stdout,"\nEight ways to find more help on %s and/or NCO:\n",prg_nm_get());
-  (void)fprintf(stdout,"1. Examples:     http://nco.sf.net/nco.html#xmp_%s\n",prg_nm_get());
-  (void)fprintf(stdout,"2. Ref. manual:  http://nco.sf.net/nco.html#%s\n",prg_nm_get());
+  (void)fprintf(stdout,"\nEight ways to find more help on %s and/or NCO:\n",nco_prg_nm_get());
+  (void)fprintf(stdout,"1. Examples:     http://nco.sf.net/nco.html#xmp_%s\n",nco_prg_nm_get());
+  (void)fprintf(stdout,"2. Ref. manual:  http://nco.sf.net/nco.html#%s\n",nco_prg_nm_get());
   (void)fprintf(stdout,"3. User's Guide: http://nco.sf.net#RTFM\n");
-  (void)fprintf(stdout,"4. Manual pages: \'man %s\', \'man nco\', ...\n",prg_nm_get());
+  (void)fprintf(stdout,"4. Manual pages: \'man %s\', \'man nco\', ...\n",nco_prg_nm_get());
   (void)fprintf(stdout,"5. Homepage:     http://nco.sf.net\n");
   (void)fprintf(stdout,"6. FAQ:          http://nco.sf.net#FAQ\n");
-  (void)fprintf(stdout,"7. Help Forum:   http://sourceforge.net/projects/nco/forums/forum/9830\n");
+  (void)fprintf(stdout,"7. Help Forum:   http://sf.net/projects/nco/forums/forum/9830\n");
   (void)fprintf(stdout,"8. Publications: http://nco.sf.net#pub\n");
   (void)fprintf(stdout,"Post questions, suggestions, patches at http://sf.net/projects/nco\n");
 
diff --git a/src/nco/nco_ctl.h b/src/nco/nco_ctl.h
index 0953af7..9e04346 100644
--- a/src/nco/nco_ctl.h
+++ b/src/nco/nco_ctl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_ctl.h,v 1.40 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_ctl.h,v 1.46 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Program flow control functions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -19,9 +19,11 @@
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 
 /* 3rd party vendors */
 #ifdef ENABLE_MPI
@@ -52,16 +54,16 @@ nco_exit_gracefully(void); /* [fnc] Clean up timers, file descriptors, memory, t
 
 nco_bool /* [flg] Program does arithmetic */
 nco_is_rth_opr /* [fnc] Query whether program does arithmetic */
-(const int prg_id); /* [enm] Program ID */
+(const int nco_prg_id); /* [enm] Program ID */
 
 nco_bool /* [flg] Program does arithmetic and preserves rank */
 nco_is_sz_rnk_prv_rth_opr /* [fnc] Is program size and rank-preserving arithmetic operator? */
-(const int prg_id, /* I [enm] Program ID */
+(const int nco_prg_id, /* I [enm] Program ID */
  const int nco_pck_plc); /* I [enm] Packing policy */
 
 nco_bool /* [flg] Program is multi-file operator */
-nco_is_mlt_fl_opr /* [fnc] Query whether program is multi-file operator */
-(const int prg_id); /* [enm] Program ID */
+nco_is_mfo /* [fnc] Query whether program is multi-file operator */
+(const int nco_prg_id); /* [enm] Program ID */
 
 int /* O [rcd] Return code */
 nco_ddra /* [fnc] Count operations */
@@ -85,9 +87,9 @@ const char * /* O [sng] Mnemonic that describes current NCO version */
 nco_nmn_get(void); /* [fnc] Return mnemonic that describes current NCO version */
 
 char * /* O [sng] nm_in stripped of any path (i.e., program name stub) */ 
-prg_prs /* [fnc] Strip program name to stub and return program ID */
+nco_prg_prs /* [fnc] Strip program name to stub and set program ID */
 (const char * const nm_in, /* I [sng] Name of program, i.e., argv[0] (may include path prefix) */
- int * const prg_lcl); /* O [enm] Enumerated number corresponding to nm_in */
+ int * const nco_prg_lcl); /* O [enm] Enumerated number corresponding to nm_in */
 
 void 
 nco_usg_prn(void); /* [fnc] Print correct program usage */
diff --git a/src/nco/nco_dbg.c b/src/nco/nco_dbg.c
index 62cdebd..0aaf1ea 100644
--- a/src/nco/nco_dbg.c
+++ b/src/nco/nco_dbg.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_dbg.c,v 1.18 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_dbg.c,v 1.20 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Debugging */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -21,6 +21,6 @@ err_prn /* [fnc] Print formatted error messages */
      in reality, they often utilize var_args capabilities of fprintf() themselves and
      have multiple formatted inputs. Hold off for now. */
 
-  (void)fprintf(stdout,"%s: %s",prg_nm_get(),err_msg);
+  (void)fprintf(stdout,"%s: %s",nco_prg_nm_get(),err_msg);
 
 } /* end err_prn() */
diff --git a/src/nco/nco_dbg.h b/src/nco/nco_dbg.h
index 105a450..03033ef 100644
--- a/src/nco/nco_dbg.h
+++ b/src/nco/nco_dbg.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_dbg.h,v 1.17 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_dbg.h,v 1.18 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: Debugging */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco/nco_dmn_utl.c b/src/nco/nco_dmn_utl.c
index 16a7587..40f70d0 100644
--- a/src/nco/nco_dmn_utl.c
+++ b/src/nco/nco_dmn_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_dmn_utl.c,v 1.44 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_dmn_utl.c,v 1.66 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Dimension utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -33,7 +33,7 @@ nco_dmn_dfn /* [fnc] Define dimensions in output file */
 	(void)nco_def_dim(nc_id,dmn[idx]->nm,dmn[idx]->cnt,&(dmn[idx]->id));
       } /* end else */
     }else{
-      (void)fprintf(stderr,"%s: WARNING dimension \"%s\" is already defined in %s\n",prg_nm_get(),dmn[idx]->nm,fl_nm);
+      (void)fprintf(stderr,"%s: WARNING dimension \"%s\" is already defined in %s\n",nco_prg_nm_get(),dmn[idx]->nm,fl_nm);
     } /* end if */
   } /* end loop over idx */
   
@@ -61,20 +61,18 @@ nco_dmn_dpl /* [fnc] Duplicate input dimension structure */
 
 void 
 nco_dmn_cpy /* [fnc] Copy dim elements from dim from source to target */
-(dmn_sct * const dmn_t, /* O [sct] Dimension structure to copy into */
- const dmn_sct * const dmn_s) /* I [sct] Dimension structure to copy from */
+(dmn_sct * const dmn_trg, /* O [sct] Dimension structure to copy into */
+ const dmn_sct * const dmn_src) /* I [sct] Dimension structure to copy from */
 {
-  if(dmn_t->nm)
-    dmn_t->nm=(char*)nco_free(dmn_t->nm);
+  if(dmn_trg->nm) dmn_trg->nm=(char*)nco_free(dmn_trg->nm);
 
-  /* shallow copy elements */
-  *dmn_t=*dmn_s;   
+  /* Shallow copy elements */
+  *dmn_trg=*dmn_src;   
   
-  /* re-copy name */
-  dmn_t->nm=strdup(dmn_s->nm);
+  /* Re-copy name */
+  dmn_trg->nm=strdup(dmn_src->nm);
   return;
 } /* end nco_dmn_cpy() */
-  
 
 dmn_sct * /* O [sct] Output dimension structure */
 nco_dmn_fll /* [fnc] Create and return completed dmn_sct */
@@ -189,109 +187,6 @@ nco_dmn_lmt_mrg /* [fnc] Merge limit structure information into dimension struct
   } /* end loop over dmn */
 } /* end nco_dmn_lmt_mrg() */
 
-
-void
-nco_dmn_lmt_all_mrg /* [fnc] Merge limit structure information into dimension structures */
-(dmn_sct ** const dmn, /* I [sct] Dimension structures to modify */
- const int nbr_dmn, /* I [nbr] Number of dimension structures in structure list */
- CST_X_PTR_CST_PTR_CST_Y(lmt_all_sct,lmt_all_lst), /* I [sct] Dimension limit information */
- const int lmt_nbr) /* I [nbr] Number of dimensions with user-specified limits */
-{
-  /* Purpose: Merge limit structure information into dimension structures */
-
-  int dmn_idx;
-  int lmt_idx;
-
-  for(dmn_idx=0;dmn_idx<nbr_dmn;dmn_idx++){
-    /* Does this dimension have user-specified limits? */
-    for(lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
-      /* 20050707: Match on name not ID so nco_dmn_lmt_mrg() works with single
-	 limit list applied to any input file */
-      if(!strcmp(lmt_all_lst[lmt_idx]->dmn_nm,dmn[dmn_idx]->nm)){
-	dmn[dmn_idx]->cnt=lmt_all_lst[lmt_idx]->dmn_cnt;
-	dmn[dmn_idx]->srt=0;
-	dmn[dmn_idx]->end=lmt_all_lst[lmt_idx]->dmn_cnt-1;
-	dmn[dmn_idx]->srd=1L;
-	break;
-      } /* end if */
-    } /* end loop over lmt_idx */
-  } /* end loop over dmn */
-} /* end nco_dmn_lmt_all_mrg() */
-
-
-
-nm_id_sct * /* O [sct] List of dimensions associated with input variable list */
-nco_dmn_lst_ass_var /* [fnc] Create list of all dimensions associated with input variable list */
-(const int nc_id, /* I [id] netCDF input-file ID */
- const nm_id_sct * const var, /* I [sct] Variable list */
- const int nbr_var, /* I [nbr] Number of variables in list */
- int * const nbr_dmn) /* O [nbr] Number of dimensions associated with input variable list */
-{
-  /* Purpose: Create list of all dimensions associated with input variable list */
-
-  nco_bool dmn_has_been_placed_on_list;
-
-  char dmn_nm[NC_MAX_NAME];
-
-  int dmn_id[NC_MAX_DIMS];
-  int idx_dmn_in;
-  int idx_var;
-  int idx_var_dmn;
-  int idx_dmn_lst;
-  int nbr_dmn_in;
-  int nbr_var_dmn;
-  
-  nm_id_sct *dmn;
-
-  *nbr_dmn=0;
-
-  /* Get number of dimensions */
-  (void)nco_inq(nc_id,&nbr_dmn_in,(int *)NULL,(int *)NULL,(int *)NULL);
-
-  /* Number of input dimensions is upper bound on number of output dimensions */
-  dmn=(nm_id_sct *)nco_malloc(nbr_dmn_in*sizeof(nm_id_sct));
-  
-  /* ...For each dimension in file... */
-  for(idx_dmn_in=0;idx_dmn_in<nbr_dmn_in;idx_dmn_in++){
-    /* ...begin search for dimension in dimension list by... */
-    dmn_has_been_placed_on_list=False;
-    /* ...looking through the set of output variables... */
-    for(idx_var=0;idx_var<nbr_var;idx_var++){
-      /* ...and searching each dimension of each output variable... */
-      (void)nco_inq_var(nc_id,var[idx_var].id,(char *)NULL,(nc_type *)NULL,&nbr_var_dmn,dmn_id,(int *)NULL);
-      for(idx_var_dmn=0;idx_var_dmn<nbr_var_dmn;idx_var_dmn++){
-	/* ...until output variable is found which contains input dimension... */
-	if(idx_dmn_in == dmn_id[idx_var_dmn]){
-	  /* ...then search each member of output dimension list... */
-	  for(idx_dmn_lst=0;idx_dmn_lst<*nbr_dmn;idx_dmn_lst++){
-	    /* ...until input dimension is found... */
-	    if(idx_dmn_in == dmn[idx_dmn_lst].id) break; /* ...then search no further... */
-	  } /* end loop over idx_dmn_lst */
-	  /* ...and if dimension was not found on output dimension list... */
-	  if(idx_dmn_lst == *nbr_dmn){
-	    /* ...then add dimension to output dimension list... */
-	    (void)nco_inq_dimname(nc_id,idx_dmn_in,dmn_nm);
-	    dmn[*nbr_dmn].id=idx_dmn_in;
-	    dmn[*nbr_dmn].nm=(char *)strdup(dmn_nm);
-	    (*nbr_dmn)++;
-	  } /* end if dimension was not found in current output dimension list */
-	  /* ...call off the dogs for this input dimension... */
-	  dmn_has_been_placed_on_list=True;
-	} /* end if input dimension belongs to this output variable */
-	if(dmn_has_been_placed_on_list) break; /* break out of idx_var_dmn to idx_var */
-      } /* end loop over idx_var_dmn */
-      if(dmn_has_been_placed_on_list) break; /* break out of idx_var to idx_dmn_in */
-    } /* end loop over idx_var */
-  } /* end loop over idx_dmn_in */
-  
-  /* We now have final list of dimensions to extract. Phew. */
-  
-  /* Free unused space in output dimension list */
-  dmn=(nm_id_sct *)nco_realloc((void *)dmn,*nbr_dmn*sizeof(nm_id_sct));
-  
-  return dmn;
-} /* end nco_dmn_lst_ass_var() */
-
 dmn_sct ** /* O [sct] Pointer to free'd structure list */
 nco_dmn_lst_free /* [fnc] Free memory associated with dimension structure list */
 (dmn_sct **dmn_lst, /* I/O [sct] Dimension structure list to free */
@@ -326,6 +221,7 @@ nco_dmn_lst_mk /* [fnc] Attach dimension IDs to dimension list */
   for(idx=0;idx<nbr_dmn;idx++){
     /* Copy name and then get requested dimension ID from input file */
     dmn_lst[idx].nm=(char *)strdup(dmn_lst_in[idx]);
+
     (void)nco_inq_dimid(nc_id,dmn_lst[idx].nm,&dmn_lst[idx].id);
   } /* end loop over idx */
   
@@ -342,6 +238,84 @@ nco_dmn_xrf  /* [fnc] Crossreference xrf elements of dimension structures */
   dmn_2->xrf=dmn_1;
 } /* end nco_dmn_xrf() */
 
+
+
+int /* O [flg] Dimension exists in scope of group (if rcd != NC_NOERR) */
+nco_inq_dmn_grp_id /* [fnc] Return location and ID of named dimension in specified group */
+(const int nc_id, /* I [id] netCDF group ID */
+ const char * const dmn_nm, /* I [sng] Dimension name */
+ int * const dmn_id, /* O [id] Dimension ID in specified group */
+ int * const grp_id_dmn) /* O [id] Group ID where dimension visible to specified group is defined */
+{
+  /* Purpose: Return location and ID of named dimension in specified group
+     ncks -O -D 1 -v two_dmn_rec_var ~/nco/data/in_grp.nc ~/foo.nc */
+
+  const char fnc_nm[]="nco_inq_dmn_grp_id()"; /* [sng] Function name */
+
+  const int flg_prn=1; /* [flg] Retrieve all dimensions in all parent groups */        
+
+  int dmn_ids[NC_MAX_DIMS]; /* [nbr] Dimensions IDs array */
+
+  int dmn_idx; /* [idx] Dimension index */
+  int dmn_nbr; /* [nbr] Number of dimensions for group */
+  int rcd; /* [rcd] Return code */
+
+  nco_bool grp_dfn_fnd=False; /* [flg] Group of definition has been found */
+
+  /* Initialize search to start with specified group */
+  *grp_id_dmn=nc_id;
+
+  rcd=nco_inq_dimid_flg(*grp_id_dmn,dmn_nm,dmn_id);
+  
+  if(nco_dbg_lvl_get() >= nco_dbg_std){
+    char *grp_nm_fll; /* [sng] Group name */
+    char dmn_nm_lcl[NC_MAX_NAME]; /* [sng] Dimension name */
+    size_t grp_nm_fll_lng; /* [nbr] Length of group name */
+    (void)nco_inq_grpname_full(*grp_id_dmn,&grp_nm_fll_lng,(char *)NULL);
+    grp_nm_fll=(char *)nco_malloc((grp_nm_fll_lng+1L)*sizeof(char));
+    (void)nco_inq_grpname_full(*grp_id_dmn,(size_t *)NULL,grp_nm_fll);
+    (void)nco_inq_dimids(*grp_id_dmn,&dmn_nbr,dmn_ids,flg_prn);
+    (void)fprintf(stdout,"%s: %s nco_inq_dimids() reports following dimensions/IDs are visible to group %s:\n",nco_prg_nm_get(),fnc_nm,grp_nm_fll);
+    for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+      (void)nco_inq_dimname(*grp_id_dmn,dmn_ids[dmn_idx],dmn_nm_lcl);
+      (void)fprintf(stdout,"%s/%d,%s",dmn_nm_lcl,dmn_ids[dmn_idx],(dmn_idx == dmn_nbr-1) ? "\n" : ", ");
+    } /* end loop over dmn */
+    if(rcd == NC_NOERR) (void)fprintf(stdout,"%s: %s nco_inq_dimid() reports group %s sees dimension %s with ID = %d:\n",nco_prg_nm_get(),fnc_nm,grp_nm_fll,dmn_nm,*dmn_id); else (void)fprintf(stdout,"%s: %s reports group %s does not see dimension %s\n",nco_prg_nm_get(),fnc_nm,grp_nm_fll,dmn_nm);
+    if(grp_nm_fll) grp_nm_fll=(char *)nco_free(grp_nm_fll);
+  } /* endif dbg */
+
+  /* If dimension is visible to output group, find exactly where it is defined
+     Search ancestors until group of definition is found ... */
+  while(!grp_dfn_fnd && (rcd == NC_NOERR)){
+    /* ... obtain all dimension IDs in current group (_NOT_ in ancestor groups) ... */
+    (void)nco_inq_dimids(*grp_id_dmn,&dmn_nbr,dmn_ids,0);
+    /* ... and check each against ID of target dimension */
+    for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++)
+      if(dmn_ids[dmn_idx] == *dmn_id) break;
+    
+    if(nco_dbg_lvl_get() >= nco_dbg_std){
+      char *grp_nm_fll; /* [sng] Group name */
+      size_t grp_nm_fll_lng; /* [nbr] Length of group name */
+      (void)nco_inq_grpname_full(*grp_id_dmn,&grp_nm_fll_lng,(char *)NULL);
+      grp_nm_fll=(char *)nco_malloc((grp_nm_fll_lng+1L)*sizeof(char));
+      (void)nco_inq_grpname_full(*grp_id_dmn,(size_t *)NULL,grp_nm_fll);
+      (void)fprintf(stdout,"%s: %s reports dimension %s was%s defined in group %s\n",nco_prg_nm_get(),fnc_nm,dmn_nm,(dmn_idx < dmn_nbr) ? "" : " not",grp_nm_fll);
+      if(grp_nm_fll) grp_nm_fll=(char *)nco_free(grp_nm_fll);
+    } /* endif dbg */
+    
+    if(dmn_idx < dmn_nbr){
+      grp_dfn_fnd=True;
+    }else{
+      /* Overwrite current group ID with parent group ID */
+      rcd=nco_inq_grp_parent_flg(*grp_id_dmn,grp_id_dmn);
+    } /* end else */
+  } /* end while */
+ 
+  return rcd;
+
+} /* end nco_inq_dmn_grp_id */
+
+
 void 
 nco_dmn_sct_cmp   /* [fnc] Check that dims in list 2 are a subset of list 1 and that they are the same size */
 (dmn_sct ** const dim_1, /* I [sct] Dimension list 1 */
@@ -356,19 +330,121 @@ nco_dmn_sct_cmp   /* [fnc] Check that dims in list 2 are a subset of list 1 and
 
   for(idx=0;idx<nbr_dmn_2;idx++ ){
     for(jdx=0;jdx<nbr_dmn_1;jdx++) 
-      if(!strcmp(dim_2[idx]->nm,dim_1[jdx]->nm)) break;
+      if(!strcmp(dim_2[idx]->nm,dim_1[jdx]->nm)) {
+        break;
+      }
 		 		
     if(jdx == nbr_dmn_1){
-      (void)fprintf(stderr,"%s: ERROR dimension \"%s\" in second file %s is not present in first file %s\n",prg_nm_get(),dim_2[idx]->nm,fl_sng_2,fl_sng_1);
+      (void)fprintf(stderr,"%s: ERROR dimension \"%s\" in second file %s is not present in first file %s\n",nco_prg_nm_get(),dim_2[idx]->nm,fl_sng_2,fl_sng_1);
       nco_exit(EXIT_FAILURE);
     } /* end if missing dimension */
 	
     if(dim_2[idx]->cnt != dim_1[jdx]->cnt){
-      (void)fprintf(stderr,"%s: ERROR %sdimension size mismatch: dimension %s in file %s is size %li while dimension %s in file %s is size %li\n",prg_nm_get(),(dim_1[jdx]->is_rec_dmn) ? "record " : "",dim_1[jdx]->nm,fl_sng_1,dim_1[jdx]->cnt,dim_2[idx]->nm,fl_sng_2,dim_2[idx]->cnt);
+      (void)fprintf(stderr,"%s: ERROR %sdimension size mismatch: dimension %s in file %s is size %li while dimension %s in file %s is size %li\n",nco_prg_nm_get(),(dim_1[jdx]->is_rec_dmn) ? "record " : "",dim_1[jdx]->nm,fl_sng_1,dim_1[jdx]->cnt,dim_2[idx]->nm,fl_sng_2,dim_2[idx]->cnt);
       nco_exit(EXIT_FAILURE); 
     } /* endif size mismatch */
   } /* end loop over dimensions */
 } /* end nco_dmn_sct_cmp() */
 
 
+nm_id_sct * /* O [sct] List of dimensions associated with input variable list */
+nco_dmn_lst_ass_var /* [fnc] Create list of all dimensions associated with input variable list */
+(const int nc_id, /* I [id] netCDF input-file ID */
+ const nm_id_sct * const var, /* I [sct] Variable list */
+ const int nbr_var, /* I [nbr] Number of variables in list */
+ int * const nbr_dmn) /* O [nbr] Number of dimensions associated with input variable list */
+{
+  /* Purpose: Create list of all dimensions associated with input variable list */
+
+  nco_bool dmn_has_been_placed_on_list;
+
+  char dmn_nm[NC_MAX_NAME];
+
+  int dmn_id[NC_MAX_DIMS];
+  int idx_dmn_in;
+  int idx_var;
+  int idx_var_dmn;
+  int idx_dmn_lst;
+  int nbr_dmn_in;
+  int nbr_var_dmn;
+  
+  nm_id_sct *dmn;
+
+  *nbr_dmn=0;
+
+  /* Get number of dimensions */
+  (void)nco_inq(nc_id,&nbr_dmn_in,(int *)NULL,(int *)NULL,(int *)NULL);
+
+  /* Number of input dimensions is upper bound on number of output dimensions */
+  dmn=(nm_id_sct *)nco_malloc(nbr_dmn_in*sizeof(nm_id_sct));
+  
+  /* ...For each dimension in file... */
+  for(idx_dmn_in=0;idx_dmn_in<nbr_dmn_in;idx_dmn_in++){
+    /* ...begin search for dimension in dimension list by... */
+    dmn_has_been_placed_on_list=False;
+    /* ...looking through the set of output variables... */
+    for(idx_var=0;idx_var<nbr_var;idx_var++){
+      /* ...and searching each dimension of each output variable... */
+      (void)nco_inq_var(nc_id,var[idx_var].id,(char *)NULL,(nc_type *)NULL,&nbr_var_dmn,dmn_id,(int *)NULL);
+      for(idx_var_dmn=0;idx_var_dmn<nbr_var_dmn;idx_var_dmn++){
+        /* ...until output variable is found which contains input dimension... */
+        if(idx_dmn_in == dmn_id[idx_var_dmn]){
+          /* ...then search each member of output dimension list... */
+          for(idx_dmn_lst=0;idx_dmn_lst<*nbr_dmn;idx_dmn_lst++){
+            /* ...until input dimension is found... */
+            if(idx_dmn_in == dmn[idx_dmn_lst].id) break; /* ...then search no further... */
+          } /* end loop over idx_dmn_lst */
+          /* ...and if dimension was not found on output dimension list... */
+          if(idx_dmn_lst == *nbr_dmn){
+            /* ...then add dimension to output dimension list... */
+            (void)nco_inq_dimname(nc_id,idx_dmn_in,dmn_nm);
+            dmn[*nbr_dmn].id=idx_dmn_in;
+            dmn[*nbr_dmn].nm=(char *)strdup(dmn_nm);
+
+            (*nbr_dmn)++;
+          } /* end if dimension was not found in current output dimension list */
+          /* ...call off the dogs for this input dimension... */
+          dmn_has_been_placed_on_list=True;
+        } /* end if input dimension belongs to this output variable */
+        if(dmn_has_been_placed_on_list) break; /* break out of idx_var_dmn to idx_var */
+      } /* end loop over idx_var_dmn */
+      if(dmn_has_been_placed_on_list) break; /* break out of idx_var to idx_dmn_in */
+    } /* end loop over idx_var */
+  } /* end loop over idx_dmn_in */
+
+  /* We now have final list of dimensions to extract. Phew. */
+  
+  /* Free unused space in output dimension list */
+  dmn=(nm_id_sct *)nco_realloc((void *)dmn,*nbr_dmn*sizeof(nm_id_sct));
+  
+  return dmn;
+} /* end nco_dmn_lst_ass_var() */
+
+void
+nco_dmn_lmt_all_mrg /* [fnc] Merge limit structure information into dimension structures */
+(dmn_sct ** const dmn, /* I [sct] Dimension structures to modify */
+ const int nbr_dmn, /* I [nbr] Number of dimension structures in structure list */
+ CST_X_PTR_CST_PTR_CST_Y(lmt_msa_sct,lmt_all_lst), /* I [sct] Dimension limit information */
+ const int lmt_nbr) /* I [nbr] Number of dimensions with user-specified limits */
+{
+  /* Purpose: Merge limit structure information into dimension structures */
+
+  int dmn_idx;
+  int lmt_idx;
+
+  for(dmn_idx=0;dmn_idx<nbr_dmn;dmn_idx++){
+    /* Does this dimension have user-specified limits? */
+    for(lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
+      /* 20050707: Match on name not ID so nco_dmn_lmt_mrg() works with single
+      limit list applied to any input file */
+      if(!strcmp(lmt_all_lst[lmt_idx]->dmn_nm,dmn[dmn_idx]->nm)){
+        dmn[dmn_idx]->cnt=lmt_all_lst[lmt_idx]->dmn_cnt;
+        dmn[dmn_idx]->srt=0;
+        dmn[dmn_idx]->end=lmt_all_lst[lmt_idx]->dmn_cnt-1;
+        dmn[dmn_idx]->srd=1L;
+        break;
+      } /* end if */
+    } /* end loop over lmt_idx */
+  } /* end loop over dmn */
+} /* end nco_dmn_lmt_all_mrg() */
 
diff --git a/src/nco/nco_dmn_utl.h b/src/nco/nco_dmn_utl.h
index ca908a2..2ddad66 100644
--- a/src/nco/nco_dmn_utl.h
+++ b/src/nco/nco_dmn_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_dmn_utl.h,v 1.35 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_dmn_utl.h,v 1.47 2013/06/17 05:24:33 pvicente Exp $ */
 
 /* Purpose: Dimension utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,7 +18,7 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -28,6 +28,7 @@
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_mmr.h" /* Memory management */
 #include "nco_sng_utl.h" /* String utilities */
+#include "nco_grp_utl.h"  /* Group utilities */
 
 #ifdef __cplusplus
 extern "C" {
@@ -75,15 +76,6 @@ nco_dmn_lmt_mrg /* [fnc] Merge limit structure information into dimension struct
  CST_X_PTR_CST_PTR_CST_Y(lmt_sct,lmt), /* I [sct] Dimension limit information */
  const int lmt_nbr); /* I [nbr] Number of dimensions with user-specified limits */
 
-
-void
-nco_dmn_lmt_all_mrg /* [fnc] Merge limit structure information into dimension structures */
-(dmn_sct ** const dmn, /* I [sct] Dimension structures to modify */
- const int nbr_dmn, /* I [nbr] Number of dimension structures in structure list */
- CST_X_PTR_CST_PTR_CST_Y(lmt_all_sct,lmt_all_lst), /* I [sct] Dimension limit information */
- const int lmt_nbr); /* I [nbr] Number of dimensions with user-specified limits */
-
-
 dmn_sct ** /* O [sct] Pointer to free'd structure list */
 nco_dmn_lst_free /* [fnc] Free memory associated with dimension structure list */
 (dmn_sct **dmn_lst, /* I/O [sct] Dimension structure list to free */
@@ -95,6 +87,18 @@ nco_dmn_lst_mk /* [fnc] Attach dimension IDs to dimension list */
  CST_X_PTR_CST_PTR_CST_Y(char,dmn_lst_in), /* I [sng] User-specified list of dimension names */
  const int nbr_dmn); /* I [nbr] Total number of dimensions in list */
 
+void
+nco_dmn_xrf  /* [fnc] Crossreference xrf elements of dimension structures */
+(dmn_sct * const dmn_1, /* I/O [sct] Dimension structure */
+ dmn_sct * const dmn_2); /* I/O [sct] Dimension structure */
+
+int /* O [flg] Dimension exists in scope of group (if rcd != NC_NOERR) */
+nco_inq_dmn_grp_id /* [fnc] Return location and ID of named dimension in specified group */
+(const int nc_id, /* I [id] netCDF group ID */
+ const char * const dmn_nm, /* I [sng] Dimension name */
+ int * const dmn_id, /* O [id] Dimension ID in specified group */
+ int * const grp_id_dmn); /* O [id] Group ID where dimension visible to specified group is defined */
+
 nm_id_sct * /* O [sct] List of dimensions associated with input variable list */
 nco_dmn_lst_ass_var /* [fnc] Create list of all dimensions associated with input variable list */
 (const int nc_id, /* I [id] netCDF input-file ID */
@@ -102,21 +106,21 @@ nco_dmn_lst_ass_var /* [fnc] Create list of all dimensions associated with input
  const int nbr_var, /* I [nbr] Number of variables in list */
  int * const nbr_dmn); /* O [nbr] Number of dimensions associated with input variable list */
 
-void
-nco_dmn_xrf  /* [fnc] Crossreference xrf elements of dimension structures */
-(dmn_sct * const dmn_1, /* I/O [sct] Dimension structure */
- dmn_sct * const dmn_2); /* I/O [sct] Dimension structure */
-
-
 void 
-nco_dmn_sct_cmp   /* [fnc] Check that dims in list 2 are a subset of list 1 and that they are the same size */
-(dmn_sct ** const dim_1, /* I [sct] Dimension list 1 */
- const int nbr_dmn_1,  /* I [nbr] Number of dimension structures in structure list */
- dmn_sct **const dim_2,  /* I [sct] Dimension list 1 */
- const int nbr_dmn_2,  /* I [nbr] Number of dimension structures in structure list */
+nco_dmn_sct_cmp /* [fnc] Check that dims in list 2 are a subset of list 1 and that they are the same size */
+(dmn_sct ** const dim_1n, /* I [sct] Dimension list 1 */
+ const int nbr_dmn_1, /* I [nbr] Number of dimension structures in structure list */
+ dmn_sct **const dim_2, /* I [sct] Dimension list 1 */
+ const int nbr_dmn_2, /* I [nbr] Number of dimension structures in structure list */
  const char *const fl_sng_1, /* I [sng] Name of first file */
- const char *fl_sng_2);     /* I [sng] Name of second file */
+ const char *fl_sng_2); /* I [sng] Name of second file */
 
+void
+nco_dmn_lmt_all_mrg /* [fnc] Merge limit structure information into dimension structures */
+(dmn_sct ** const dmn, /* I [sct] Dimension structures to modify */
+ const int nbr_dmn, /* I [nbr] Number of dimension structures in structure list */
+ CST_X_PTR_CST_PTR_CST_Y(lmt_msa_sct,lmt_all_lst), /* I [sct] Dimension limit information */
+ const int lmt_nbr); /* I [nbr] Number of dimensions with user-specified limits */
 
 
 #ifdef __cplusplus
diff --git a/src/nco/nco_fl_utl.c b/src/nco/nco_fl_utl.c
index 9afd3f5..ac23067 100644
--- a/src/nco/nco_fl_utl.c
+++ b/src/nco/nco_fl_utl.c
@@ -1,45 +1,50 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_fl_utl.c,v 1.141 2012/02/13 23:18:58 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_fl_utl.c,v 1.228 2013/12/02 00:13:21 zender Exp $ */
 
 /* Purpose: File manipulation */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_fl_utl.h" /* File manipulation */
 
+#ifdef _MSC_VER
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h> /* MSVC sleep() */
+#endif /* !_MSC_VER */
+
 int /* O [enm] Mode flag for nco_create() call */
 nco_create_mode_mrg /* [fnc] Merge clobber mode with user-specified file format */
-(const int clobber_mode, /* I [enm] Clobber mode (NC_CLOBBER or NC_NOCLOBBER) */
+(const int md_clobber, /* I [enm] Clobber mode (NC_CLOBBER or NC_NOCLOBBER) */
  const int fl_out_fmt) /* I [enm] Output file format */
 {
   /* Purpose: Merge clobber mode with flag determined by fl_out_fmt
      to produce output mode flag
-     clobber_mode: Either NC_CLOBBER or NC_NOCLOBBER
-     nccreate_mode: clobber_mode OR'd with (user-specified) file format mode */
+     md_clobber: Either NC_CLOBBER or NC_NOCLOBBER
+     md_create: md_clobber OR'd with (user-specified) file format mode */
 
-  int nccreate_mode; /* O [enm] Mode flag for nco_create() call */
+  int md_create; /* O [enm] Mode flag for nco_create() call */
 
-  if(clobber_mode != NC_CLOBBER && clobber_mode != NC_NOCLOBBER){
-    (void)fprintf(stderr,"%s: ERROR nco_create_mode_mrg() received unknown clobber_mode\n",prg_nm_get());
+  if(md_clobber != NC_CLOBBER && md_clobber != NC_NOCLOBBER){
+    (void)fprintf(stderr,"%s: ERROR nco_create_mode_mrg() received unknown clobber mode md_clobber\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
-  nccreate_mode=clobber_mode;
+  md_create=md_clobber;
   if(fl_out_fmt == NC_FORMAT_64BIT){
-    nccreate_mode|=NC_64BIT_OFFSET;
+    md_create|=NC_64BIT_OFFSET;
   }else if(fl_out_fmt == NC_FORMAT_NETCDF4){
-    nccreate_mode|=NC_NETCDF4;
+    md_create|=NC_NETCDF4;
   }else if(fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC){
-    nccreate_mode|=NC_NETCDF4|NC_CLASSIC_MODEL;
+    md_create|=NC_NETCDF4|NC_CLASSIC_MODEL;
   }else if(fl_out_fmt == NC_COMPRESS){ /* fxm: is NC_COMPRESS legal? */
-    nccreate_mode|=NC_COMPRESS;
+    md_create|=NC_COMPRESS;
   }else if(fl_out_fmt != NC_FORMAT_CLASSIC){
-    (void)fprintf(stderr,"%s: ERROR nco_create_mode_mrg() received unknown file format = %d\n",prg_nm_get(),fl_out_fmt);
+    (void)fprintf(stderr,"%s: ERROR nco_create_mode_mrg() received unknown file format = %d\n",nco_prg_nm_get(),fl_out_fmt);
     nco_exit(EXIT_FAILURE);
   } /* end else fl_out_fmt */
 
-  return nccreate_mode;
+  return md_create;
 } /* end nco_create_mode_mrg() */
 
 int /* [rcd] Return code */
@@ -50,33 +55,35 @@ nco_create_mode_prs /* [fnc] Parse user-specified file format */
   int rcd=NC_NOERR; /* [rcd] Return code */
 
   /* Careful! Some valid format strings are subsets of other valid format strings */
-  if(strstr("classic",fl_fmt_sng) && !strstr(fl_fmt_sng,"netcdf4")){
+  if(strcasestr("classic",fl_fmt_sng) && !strcasestr(fl_fmt_sng,"netcdf4")){
     /* If "classic" contains string and string does not contain "netcdf4" */
     *fl_fmt_enm=NC_FORMAT_CLASSIC;
-  }else if(strstr("64bit",fl_fmt_sng)){
+  }else if(strcasestr("64bit",fl_fmt_sng)){
     /* If "64bit" contains string */
     *fl_fmt_enm=NC_FORMAT_64BIT;
-  }else if(strstr(fl_fmt_sng,"netcdf4")){
+  }else if(strcasestr(fl_fmt_sng,"netcdf4")){
+    /* If string contains "netcdf4" */
 #ifdef ENABLE_NETCDF4
-    if(strstr("netcdf4",fl_fmt_sng)){
+    if(strcasestr("netcdf4",fl_fmt_sng)){
       /* If "netcdf4" contains string */
       *fl_fmt_enm=NC_FORMAT_NETCDF4;
-    }else if(strstr("netcdf4_classic",fl_fmt_sng)){
+    }else if(strcasestr("netcdf4_classic",fl_fmt_sng)){
       /* If "netcdf4_classic" contains string */
       *fl_fmt_enm=NC_FORMAT_NETCDF4_CLASSIC;
     } /* endif NETCDF4 */
 #else /* !ENABLE_NETCDF4 */
-    (void)fprintf(stderr,"%s: ERROR This NCO was not built with netCDF4 and cannot create the requested netCDF4 file format. HINT: Re-try with netCDF3 file format, either by omitting the filetype specification, or by explicitly specifying the \"-3\", \"--fl_fmt=classic\", \"-6\",  or \"--fl_fmt=64 bit\" options.\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: ERROR This NCO was not built with netCDF4 and cannot create the requested netCDF4 file format. HINT: Re-try with netCDF3 file format, either by omitting the filetype specification, or by explicitly specifying the \"-3\", \"--fl_fmt=classic\", \"-6\",  or \"--fl_fmt=64bit\" options.\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
 #endif /* !ENABLE_NETCDF4 */
-  }else if(strstr("znetcdf",fl_fmt_sng)){
+  }else if(strcasestr("znetcdf",fl_fmt_sng)){
 #ifdef ENABLE_ZNETCDF
     /* If "znetcdf" contains string */
     *fl_fmt_enm=NC_COMPRESS;
 #else /* !ENABLE_ZNETCDF */
-    (void)fprintf(stderr,"%s: ERROR This NCO was not built with znetCDF (http://snow.cit.cornell.edu/noon/z_netcdf.html) and cannot create the requested znetCDF file format. HINT: Re-try with different (or no) specified file format, such as \"classic\" or \"64bit\".\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: ERROR This NCO was not built with znetCDF (http://snow.cit.cornell.edu/noon/z_netcdf.html) and cannot create the requested znetCDF file format. HINT: Re-try with different (or no) specified file format, such as \"classic\" or \"64bit\".\n",nco_prg_nm_get());
 #endif /* !ENABLE_ZNETCDF */
   }else{
-    (void)fprintf(stderr,"%s: ERROR Unknown output file format \"%s\" requested. Valid formats are (unambiguous leading characters of) \"classic\", \"64bit\", \"netcdf4\", and \"netcdf4_classic\".\n",prg_nm_get(),fl_fmt_sng);
+    (void)fprintf(stderr,"%s: ERROR Unknown output file format \"%s\" requested. Valid formats are (unambiguous leading characters of) \"classic\", \"64bit\", \"netcdf4\", and \"netcdf4_classic\".\n",nco_prg_nm_get(),fl_fmt_sng);
     nco_exit(EXIT_FAILURE);
   } /* endif fl_fmt_enm */
 
@@ -96,35 +103,154 @@ nco_fl_fmt_vet /* [fnc] Verify output file format supports requested actions */
  const int dfl_lvl) /* I [enm] Deflate level [0..9] */
 {
   /* Purpose: Verify output file format supports requested actions */
-  if(cnk_nbr > 0 && !(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC)) (void)fprintf(stdout,"%s: WARNING Attempt to chunk variables in output file which has netCDF format %s. Chunking is only supported by netCDF filetypes NC_FORMAT_NETCDF4 and NC_FORMAT_NETCDF4_CLASSIC. Command will attempt to complete but without chunking. HINT: re-run command and change output type to netCDF4 using \"-4\", \"--fl_fmt=netcdf4\", or \"--fl_fmt=netcdf4_classic\" option.\n",prg_nm_get() [...]
-  if(dfl_lvl > 0 && !(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC)) (void)fprintf(stdout,"%s: WARNING Attempt to deflate (compress) variables in output file which has netCDF format %s. Deflation is only supported by netCDF filetypes NC_FORMAT_NETCDF4 and NC_FORMAT_NETCDF4_CLASSIC. Command will attempt to complete but without deflation. HINT: re-run command and change output type to netCDF4 using \"-4\", \"--fl_fmt=netcdf4\", or \"--fl_fmt=netcdf4_classic\" option.\ [...]
+  if(cnk_nbr > 0 && !(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC)) (void)fprintf(stdout,"%s: WARNING Attempt to chunk variables in output file which has netCDF format %s. Chunking is only supported by netCDF filetypes NC_FORMAT_NETCDF4 and NC_FORMAT_NETCDF4_CLASSIC. Command will attempt to complete but without chunking. HINT: re-run command and change output type to netCDF4 using \"-4\", \"--fl_fmt=netcdf4\", or \"--fl_fmt=netcdf4_classic\" option.\n",nco_prg_nm_g [...]
+  if(dfl_lvl > 0 && !(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC)) (void)fprintf(stdout,"%s: WARNING Attempt to deflate (compress) variables in output file which has netCDF format %s. Deflation is only supported by netCDF filetypes NC_FORMAT_NETCDF4 and NC_FORMAT_NETCDF4_CLASSIC. Command will attempt to complete but without deflation. HINT: re-run command and change output type to netCDF4 using \"-4\", \"--fl_fmt=netcdf4\", or \"--fl_fmt=netcdf4_classic\" option.\ [...]
 } /* end nco_nco_fl_fmt_vet() */
 
 void
+nco_fl_overwrite_prm /* [fnc] Obtain user consent to overwrite output file */
+(const char * const fl_nm) /* I [sng] Name of file */
+{
+  /* Purpose: Obtain user consent to overwrite output file (or die trying) */
+  const char fnc_nm[]="nco_fl_overwrite_prm()"; /* [sng] Function name */
+
+  int rcd_sys;
+  
+  struct stat stat_sct;
+  
+  /* Use stat() to determine if output file already exists */
+  rcd_sys=stat(fl_nm,&stat_sct);
+  
+  /* When output file already exists, query user whether to overwrite */
+  if(rcd_sys != -1){
+    char garbage;
+    char usr_rpl='z';
+    short nbr_itr=0;
+    
+    /* fxm TODO nco199: Internationalize (i18n) NCO with gettext() */
+    while(usr_rpl != 'n' && usr_rpl != 'y'){
+      nbr_itr++;
+      if(nbr_itr > NCO_MAX_NBR_USR_INPUT_RETRY){
+	(void)fprintf(stdout,"\n%s: ERROR %s reports %d failed attempts to obtain valid interactive input. Assuming non-interactive shell and exiting.\n",nco_prg_nm_get(),fnc_nm,nbr_itr-1);
+	nco_exit(EXIT_FAILURE);
+      } /* end if */
+      (void)fprintf(stdout,"%s: overwrite %s (y/n)? ",nco_prg_nm_get(),fl_nm);
+      (void)fflush(stdout);
+      usr_rpl=(char)fgetc(stdin);
+      /* Allow one carriage return per response free of charge */
+      if(usr_rpl == '\n') usr_rpl=(char)fgetc(stdin);
+      /* Treat other charcacters after the last question/prompt, and before the next, as garbage */
+      do{garbage=fgetc(stdin);} while(garbage != '\n' && garbage != EOF);
+
+      /* (void)fflush(stdin);
+	 comp.lang.c 20000212 and http://www.eskimo.com/~scs/C-faq/q12.18.html
+	 C FAQ Author Steve Summit explains why not to use fflush(stdin)
+	 and how best to manually clean stdin of unwanted residue */
+
+    } /* end while */
+    
+    if(usr_rpl == 'n') nco_exit(EXIT_SUCCESS);
+
+  } /* end if rcd_sys != -1 */
+  
+} /* end nco_fl_overwrite_prm() */
+
+#ifdef _MSC_VER
+void nco_fl_chmod(const char * const fl_nm){}
+#else /* !_MSC_VER */
+void
+nco_fl_chmod /* [fnc] Ensure file is user/owner-writable */
+(const char * const fl_nm) /* I [sng] Name of file */
+{
+  /* Purpose: Make file user/owner-writable
+     Uses chmod() C-library call rather than chmod shell program
+     Routine assumes that output file already exists, but is of unknown mode */
+
+  //  blksize_t fl_sys_blk_sz; /* [nbr] File system blocksize for I/O */
+
+  const char fnc_nm[]="nco_fl_chmod()"; /* [sng] Function name */
+  
+  int rcd_sys;
+  
+  mode_t fl_md;
+  mode_t fl_usr_md;
+  mode_t fl_usr_wrt_md;
+  
+  struct stat stat_sct;
+  
+  /* Output file now guaranteed to exist. Perform stat() to check its permissions. */
+  rcd_sys=stat(fl_nm,&stat_sct);
+  
+  /* 20120228 Ensure output file is writable even when input file is not 
+     stat structure includes st_mode field which includes following flags:
+     mode_t st_mode
+     S_IRWXU    00700     mask for file owner permissions
+     S_IWUSR    00200     owner has write permission
+     Method of checking: 
+     First  bit-wise "and" (& S_IRWXU) uses mask to strips full, multibyte, file mode flag of all but user/owner byte 
+     Second bit-wise "and" (& S_IWUSR) is only "true" (non-zero) is owner write permission is set */
+  fl_md=stat_sct.st_mode;
+  /* Blocksize information in stat structure:
+     blksize_t st_blksize blocksize for file system I/O */
+  // fl_sys_blk_sz=stat_sct.st_blksize;
+  fl_usr_md=fl_md & S_IRWXU;
+  fl_usr_wrt_md=fl_usr_md & S_IWUSR;
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: %s reports permissions for file %s are (octal) = %lo\n",nco_prg_nm_get(),fnc_nm,fl_nm,(unsigned long)fl_md);
+  // if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: %s reports preferred filesystem I/O block size: %ld bytes\n",nco_prg_nm_get(),fnc_nm,(long)fl_sys_blk_sz);
+  if(!fl_usr_wrt_md){
+    /* Set user-write bit of output file */
+    fl_md=fl_md | S_IWUSR;
+    rcd_sys=chmod(fl_nm,fl_md);
+    if(rcd_sys == -1){
+#ifndef __GNUG__
+      (void)fprintf(stdout,"%s: %s reports chmod() returned error \"%s\"\n",nco_prg_nm_get(),fnc_nm,strerror(errno));
+#endif /* __GNUG__ */
+      (void)fprintf(stdout,"%s: ERROR Unable to make output file writable by user, exiting...\n",nco_prg_nm_get());
+      nco_exit(EXIT_FAILURE);
+    } /* endif rcd_sys */
+  } /* end if chmod */
+  
+} /* end nco_fl_chmod() */
+#endif /* !_MSC_VER */
+
+void
 nco_fl_cp /* [fnc] Copy first file to second */
 (const char * const fl_src, /* I [sng] Name of source file to copy */
  const char * const fl_dst) /* I [sng] Name of destination file */
 {
   /* Purpose: Copy first file to second */
   char *cp_cmd;
+#ifdef _MSC_VER
+  const char cp_cmd_fmt[]="copy %s %s";
+#else /* !_MSC_VER */
   const char cp_cmd_fmt[]="cp %s %s";
+#endif /* !_MSC_VER */
 
   int rcd;
   const int fmt_chr_nbr=4;
 
+  /* Only bother to perform system() call if files are not identical */
+  if(!strcmp(fl_src,fl_dst)){
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Temporary and final files %s are identical---no need to copy.\n",nco_prg_nm_get(),fl_src);
+    return;
+  } /* end if */
+
   /* Construct and execute copy command */
   cp_cmd=(char *)nco_malloc((strlen(cp_cmd_fmt)+strlen(fl_src)+strlen(fl_dst)-fmt_chr_nbr+1UL)*sizeof(char));
-  if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"Copying %s to %s...",fl_src,fl_dst);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: Copying %s to %s...",nco_prg_nm_get(),fl_src,fl_dst);
   (void)sprintf(cp_cmd,cp_cmd_fmt,fl_src,fl_dst);
   rcd=system(cp_cmd);
   if(rcd == -1){
-    (void)fprintf(stdout,"%s: ERROR nco_fl_cp() is unable to execute cp command \"%s\"\n",prg_nm_get(),cp_cmd);
+    (void)fprintf(stdout,"%s: ERROR nco_fl_cp() is unable to execute cp command \"%s\"\n",nco_prg_nm_get(),cp_cmd);
     nco_exit(EXIT_FAILURE);
   } /* end if */
   cp_cmd=(char *)nco_free(cp_cmd);
-  if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"done\n");
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"done\n");
 } /* end nco_fl_cp() */
 
+#ifdef _MSC_VER
+char * nco_fl_info_get(const char *){return NULL;}
+#else /* !_MSC_VER */
 char * /* O [sng] Canonical file name*/
 nco_fl_info_get /* [fnc] Determine canonical filename and properties */
 (const char * const fl_nm_lcl) /* I [sng] Name of file */
@@ -136,7 +262,7 @@ nco_fl_info_get /* [fnc] Determine canonical filename and properties */
 
   /* Does file exist on local system? */
   rcd=stat(fl_nm_lcl,&stat_sct);
-  if(rcd == -1) (void)fprintf(stderr,"%s: INFO File %s does not exist on local system\n",prg_nm_get(),fl_nm_lcl);
+  if(rcd == -1) (void)fprintf(stderr,"%s: INFO File %s does not exist on local system\n",nco_prg_nm_get(),fl_nm_lcl);
 
   /* Is file a symbolic link? */
   rcd=lstat(fl_nm_lcl,&stat_sct);
@@ -146,22 +272,23 @@ nco_fl_info_get /* [fnc] Determine canonical filename and properties */
   if(rcd != -1 && ((stat_sct.st_mode & S_IFMT) == S_IFLNK)){ /* fxm: This is BSD not POSIX */
 #endif /* NECSX */
 #if (defined HAVE_CANONICALIZE_FILE_NAME) && 0
-    /* 20040619: Function prototype is not found (perhaps due to aggressive standard switches) by NCO, althouth configure.in finds it */
+    /* 20040619: Function prototype is not found (perhaps due to aggressive standard switches) by NCO, althouth configure.ac finds it */
     /* Remember to free() fl_nm_cnc after using it */
     fl_nm_cnc=(char *)canonicalize_file_name(fl_nm_lcl);
     if(fl_nm_cnc){
-      (void)fprintf(stderr,"%s: INFO Local file %s is symbolic link to %s",prg_nm_get(),fl_nm_lcl,fl_nm_cnc);
+      (void)fprintf(stderr,"%s: INFO Local file %s is symbolic link to %s",nco_prg_nm_get(),fl_nm_lcl,fl_nm_cnc);
       fl_nm_cnc=(char *)nco_free(fl_nm_cnc);
     }else{
-      (void)fprintf(stderr,"%s: INFO Local file %s is symbolic link but does not canonicalize",prg_nm_get(),fl_nm_lcl);
+      (void)fprintf(stderr,"%s: INFO Local file %s is symbolic link but does not canonicalize",nco_prg_nm_get(),fl_nm_lcl);
     } /* endif link canonicalizes */
 #else /* !HAVE_CANONICALIZE_FILE_NAME */
-    (void)fprintf(stderr,"%s: INFO File %s is a symbolic link\n",prg_nm_get(),fl_nm_lcl);
+    (void)fprintf(stderr,"%s: INFO File %s is a symbolic link\n",nco_prg_nm_get(),fl_nm_lcl);
 #endif /* !HAVE_CANONICALIZE_FILE_NAME */
   } /* endif symbolic link */
 
   return fl_nm_cnc;
 } /* end nco_fl_info_get() */
+#endif /* !_MSC_VER */ 
 
 char ** /* O [sng] List of user-specified filenames */
 nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments */
@@ -191,8 +318,8 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
   int psn_arg_fst=0; /* [nbr] Offset for expected number of positional arguments */
   int psn_arg_nbr; /* [nbr] Number of remaining positional arguments */
 
-  int prg_id; /* Program ID */
-  prg_id=prg_get(); /* [enm] Program ID */
+  int nco_prg_id; /* Program ID */
+  nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
   psn_arg_nbr=argc-arg_crr; /* [nbr] Number of remaining positional arguments */
 
   /* Is output file already known from command line switch (i.e., -o fl_out)? */
@@ -205,24 +332,24 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
 
   /* Might there be problems with any specified files? */
   for(idx=arg_crr;idx<argc;idx++){
-    if((int)strlen(argv[idx]) >= fl_nm_sz_wrn) (void)fprintf(stderr,"%s: WARNING filename %s is very long (%ld characters) and may not be portable to older operating systems\n",prg_nm_get(),argv[idx],(long int)strlen(argv[idx]));
+    if((int)strlen(argv[idx]) >= fl_nm_sz_wrn) (void)fprintf(stderr,"%s: WARNING filename %s is very long (%ld characters) and may not be portable to older operating systems\n",nco_prg_nm_get(),argv[idx],(long int)strlen(argv[idx]));
   } /* end loop over idx */
 
   /* All operators except multi-file operators must have at least one positional argument */
-  if(!nco_is_mlt_fl_opr(prg_id) && psn_arg_nbr == 0){
-    (void)fprintf(stdout,"%s: ERROR received %d filenames; need at least one\n",prg_nm_get(),psn_arg_nbr);
+  if(!nco_is_mfo(nco_prg_id) && psn_arg_nbr == 0){
+    (void)fprintf(stdout,"%s: ERROR received %d filenames; need at least one\n",nco_prg_nm_get(),psn_arg_nbr);
     (void)nco_usg_prn();
     nco_exit(EXIT_FAILURE);
   } /* end if */
 
-  switch(prg_id){
+  switch(nco_prg_id){
   case ncap:
   case ncatted:
   case ncks:
   case ncrename:
     /* Operators with single fl_in and optional fl_out */
     if(psn_arg_nbr > 2-psn_arg_fst){
-      if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need no more than two\n",prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need no more than one (output file was specified with -o switch)\n",prg_nm_get(),psn_arg_nbr);
+      if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need no more than two\n",nco_prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need no more than one (output file was specified with -o switch)\n",nco_prg_nm_get(),psn_arg_nbr);
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
     } /* end if */
@@ -236,7 +363,7 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
   case ncflint:
     /* Operators with dual fl_in and required fl_out */
     if(psn_arg_nbr != 3-psn_arg_fst){
-      if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need exactly three\n",prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need exactly two (output file was specified with -o switch)\n",prg_nm_get(),psn_arg_nbr);
+      if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need exactly three\n",nco_prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need exactly two (output file was specified with -o switch)\n",nco_prg_nm_get(),psn_arg_nbr);
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
     } /* end if */
@@ -245,20 +372,21 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
   case ncwa:
     /* Operators with single fl_in and required fl_out */
     if(psn_arg_nbr != 2-psn_arg_fst){
-      if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need exactly two\n",prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need exactly one (output file was specified with -o switch)\n",prg_nm_get(),psn_arg_nbr);
+      if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need exactly two\n",nco_prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need exactly one (output file was specified with -o switch)\n",nco_prg_nm_get(),psn_arg_nbr);
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
     } /* end if */
     break;
   case ncra:
-  case ncea:
+  case ncfe:
   case ncrcat:
   case ncecat:
+  case ncge:
     /* Operators with multiple fl_in and required fl_out */
     if(psn_arg_nbr < 2-psn_arg_fst){
 
       /* If multi-file operator has no positional arguments for input files... */
-      if(nco_is_mlt_fl_opr(prg_id) && ((!FL_OUT_FROM_PSN_ARG && psn_arg_nbr == 0) || (FL_OUT_FROM_PSN_ARG && psn_arg_nbr == 1))){
+      if(nco_is_mfo(nco_prg_id) && ((!FL_OUT_FROM_PSN_ARG && psn_arg_nbr == 0) || (FL_OUT_FROM_PSN_ARG && psn_arg_nbr == 1))){
 	/* ...then try to obtain input files from stdin... */
 	char *fl_in=NULL; /* [sng] Input file name */
 	FILE *fp_in; /* [enm] Input file handle */
@@ -268,7 +396,7 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
 	char fmt_sng[10];
 	size_t fl_nm_lng; /* [nbr] Filename length */
 
-	if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: DEBUG nco_fl_lst_mk() reports input files not specified as positional arguments. Attempting to read from stdin instead...\n",prg_nm_get());
+	if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG nco_fl_lst_mk() reports input files not specified as positional arguments. Attempting to read from stdin instead...\n",nco_prg_nm_get());
 
 	/* Initialize information to read stdin */
 	fl_lst_in_lng=0L; /* [nbr] Number of characters in input file name list */
@@ -277,14 +405,15 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
 	  fp_in=stdin; /* [enm] Input file handle */
 	}else{
 	  if((fp_in=fopen(fl_in,"r")) == NULL){
-	    (void)fprintf(stderr,"%s: ERROR opening file containing input filename list %s\n",prg_nm_get(),fl_in);
+	    (void)fprintf(stderr,"%s: ERROR opening file containing input filename list %s\n",nco_prg_nm_get(),fl_in);
 	    nco_exit(EXIT_FAILURE);
 	  } /* endif err */
 	} /* endelse */
 
 	/* Allocate temporary space for input buffer */
 #define FL_NM_IN_MAX_LNG 256 /* [nbr] Maximum length of input file name */
-#define FL_LST_IN_MAX_LNG 1000000 /* [nbr] Maximum length of input file list */
+#define FL_LST_IN_MAX_LNG 10000000 /* [nbr] Maximum length of input file list */
+	/* 20121207: 10 MB is per user request of S. McGinnis on 20121130 */
 	bfr_in=(char *)nco_malloc((FL_NM_IN_MAX_LNG+1L)*sizeof(char));
 	(void)sprintf(fmt_sng,"%%%ds\n",FL_NM_IN_MAX_LNG);
 
@@ -292,30 +421,31 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
 	   Format string "%256s\n" tells scanf() to:
 	   1. Skip any initial whitespace
 	   2. Read first block of non-whitespace characters (up to 256 of them) into buffer
-	   3. The \n allows the entries to be separated by carriage returns */
+	   3. \n allows entries to be separated by carriage returns */
 	while(((cnv_nbr=fscanf(fp_in,fmt_sng,bfr_in)) != EOF) && (fl_lst_in_lng < FL_LST_IN_MAX_LNG)){
 	  if(cnv_nbr == 0){
-	    (void)fprintf(stdout,"%s: ERROR stdin input not convertable to filename. HINT: Maximum length for input filenames is %d characters. HINT: Separate filenames with whitespace. Carriage returns are automatically stripped out.\n",prg_nm_get(),FL_NM_IN_MAX_LNG);
+	    (void)fprintf(stdout,"%s: ERROR stdin input not convertable to filename. HINT: Maximum length for input filenames is %d characters. HINT: Separate filenames with whitespace. Carriage returns are automatically stripped out.\n",nco_prg_nm_get(),FL_NM_IN_MAX_LNG);
 	    nco_exit(EXIT_FAILURE);
 	  } /* endif err */
 	  fl_nm_lng=strlen(bfr_in);
 	  fl_lst_in_lng+=fl_nm_lng;
 	  (*fl_nbr)++;
-	  if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: DEBUG input file #%d is \"%s\", filename length=%li\n",prg_nm_get(),*fl_nbr,bfr_in,(long int)fl_nm_lng);
+	  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG input file #%d is \"%s\", filename length=%li\n",nco_prg_nm_get(),*fl_nbr,bfr_in,(long int)fl_nm_lng);
 	  /* Increment file number */
 	  fl_lst_in=(char **)nco_realloc(fl_lst_in,(*fl_nbr*sizeof(char *)));
 	  fl_lst_in[(*fl_nbr)-1]=(char *)strdup(bfr_in);
 	} /* end while */
-	/* comp.lang.c 20000212 and http://www.eskimo.com/~scs/C-faq/q12.18.html
-	   C FAQ Author Steve Summit explains why not to use fflush()
-	   and how best to manually clean stdin of unwanted residue */
+
+	/* Finished reading list. Close file resource if one was opened. */
+	if(fl_in != NULL && fp_in != NULL) (void)fclose(fp_in);
+
 #if 0
 	/* 20040621: Following flusher does no harm on Linux
 	   However, AIX gets caught in an infinite loop here */
 	/* Discard characters remainining in stdin */
 	char chr_foo;
 	while((chr_foo=getchar()) != '\n' && chr_foo != EOF){
-	  if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: DEBUG Read and discarded \'%c\'\n",prg_nm_get(),chr_foo);
+	  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Read and discarded \'%c\'\n",nco_prg_nm_get(),chr_foo);
 	} /* end while */
 #endif /* endif 0 */
 
@@ -323,17 +453,17 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
 	bfr_in=(char *)nco_free(bfr_in);
 
 	if(fl_lst_in_lng >= FL_LST_IN_MAX_LNG){
-	  (void)fprintf(stdout,"%s: ERROR Total length of fl_lst_in from stdin exceeds %d characters. Possible misuse of feature. If your input file list is really this long, send request to help at nco.sf.net to expand FL_LST_IN_MAX_LNG\n",prg_nm_get(),FL_LST_IN_MAX_LNG);
+	  (void)fprintf(stdout,"%s: ERROR Total length of fl_lst_in from stdin exceeds %d characters. Possible misuse of feature. If your input file list is really this long, post request to developer's forum (http://sf.net/projects/nco/forums/forum/9831) to expand FL_LST_IN_MAX_LNG\n",nco_prg_nm_get(),FL_LST_IN_MAX_LNG);
 	  nco_exit(EXIT_FAILURE);
 	} /* endif err */
 
-	if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: DEBUG Read %d filenames in %li characters from stdin\n",prg_nm_get(),*fl_nbr,(long)fl_lst_in_lng);
-	if(*fl_nbr > 0) *FL_LST_IN_FROM_STDIN=True; else (void)fprintf(stderr,"%s: WARNING Tried and failed to get input filenames from stdin\n",prg_nm_get());
+	if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Read %d filenames in %li characters from stdin\n",nco_prg_nm_get(),*fl_nbr,(long)fl_lst_in_lng);
+	if(*fl_nbr > 0) *FL_LST_IN_FROM_STDIN=True; else (void)fprintf(stderr,"%s: WARNING Tried and failed to get input filenames from stdin\n",nco_prg_nm_get());
 
       } /* endif multi-file operator without positional arguments for fl_in */
 
       if(!*FL_LST_IN_FROM_STDIN){
-	if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need at least two\n",prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need at least one (output file was specified with -o switch)\n",prg_nm_get(),psn_arg_nbr);
+	if(FL_OUT_FROM_PSN_ARG) (void)fprintf(stdout,"%s: ERROR received %d filenames; need at least two\n",nco_prg_nm_get(),psn_arg_nbr); else (void)fprintf(stdout,"%s: ERROR received %d input filenames; need at least one (output file was specified with -o switch)\n",nco_prg_nm_get(),psn_arg_nbr);
 	(void)nco_usg_prn();
 	nco_exit(EXIT_FAILURE);
       } /* FL_LST_IN_FROM_STDIN */
@@ -352,7 +482,7 @@ nco_fl_lst_mk /* [fnc] Create file list from command line positional arguments *
   } /* FL_LST_IN_FROM_STDIN */
 
   if(*fl_nbr == 0){
-    (void)fprintf(stdout,"%s: ERROR Must specify input filename.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Must specify input filename.\n",nco_prg_nm_get());
     (void)nco_usg_prn();
     nco_exit(EXIT_FAILURE);
   } /* end if */
@@ -368,19 +498,27 @@ char * /* O [sng] Filename of locally available file */
 nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
 (char *fl_nm, /* I/O [sng] Current filename, if any (destroyed) */
  const char * const fl_pth_lcl, /* I [sng] Local storage area for files retrieved from remote locations */
- nco_bool * const FILE_RETRIEVED_FROM_REMOTE_LOCATION) /* O [flg] File was retrieved from remote location */
+ nco_bool * const FL_RTR_RMT_LCN) /* O [flg] File was retrieved from remote location */
 {
   /* Purpose: Locate input file, retrieve it from remote storage system if necessary,
-     create local storage directory if neccessary, check file for read-access,
-     return name of file on local system */
+  create local storage directory if neccessary, check file for read-access,
+  return name of file on local system */
+
+#ifdef _MSC_VER
+  /* TODO nco1068 The stat function retuns -1 for large files; assume success */
+  *FL_RTR_RMT_LCN=False;
+  return fl_nm;
+#endif
 
   FILE *fp_in;
+
   nco_bool DAP_URL=False; /* DAP handles netCDF API, no retrieval necessary */
   nco_bool FTP_URL=False; /* Retrieve remote file via FTP */
   nco_bool FTP_NETRC=False; /* Retrieve remote file via FTP with .netrc file */
   nco_bool FTP_OR_SFTP_URL; /* FTP or SFTP */
   nco_bool HTTP_URL=False; /* Retrieve remote file via wget */
   nco_bool SFTP_URL=False; /* Retrieve remote file via SFTP */
+
   char *cln_ptr; /* [ptr] Colon pointer */
   char *fl_nm_lcl;
   char *fl_nm_lcl_tmp;
@@ -391,14 +529,17 @@ nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
   const char ftp_url_sng[]="ftp://";
   const char http_url_sng[]="http://";
   const char sftp_url_sng[]="sftp://";
+
+#ifdef ENABLE_DAP
   int rcd; /* [rcd] Return code */
-  int rcd_stt=0; /* [rcd] Return code for stat() */
-  int rcd_sys; /* [rcd] Return code for system() */
-  int rcd_frd; /* [rcd] Return code for fread() and fclose() */
+#endif /* !ENABLE_DAP */
+  int rcd_stt=0; /* [rcd] Return code from stat() */
+  int rcd_sys; /* [rcd] Return code from system() */
+  int rcd_frd; /* [rcd] Return code from fread() and fclose() */
+
   size_t url_sng_lng=0L; /* CEWI */
+
   struct stat stat_sct;
-  int prg_id; /* Program ID */
-  prg_id=prg_get(); /* [enm] Program ID */
 
   /* Assume local filename is input filename */
   fl_nm_lcl=(char *)strdup(fl_nm);
@@ -416,59 +557,67 @@ nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
   if(FTP_OR_SFTP_URL){
     /* If FTP rearrange fl_nm_lcl to remove ftp://hostname part, and
        if SFTP rearrange fl_nm_lcl to remove sftp://hostname: part,
-       before searching for file on local disk */
+       then search for file on local disk */
     fl_pth_lcl_tmp=strchr(fl_nm_lcl+url_sng_lng,'/');
+    if(!fl_pth_lcl_tmp){
+      (void)fprintf(stderr,"%s: ERROR %s unable to find valid filename component of SFTP path %s\n",nco_prg_nm_get(),fnc_nm,fl_nm_lcl);
+      nco_exit(EXIT_FAILURE);
+    } /* endif */
     fl_nm_lcl_tmp=fl_nm_lcl;
     fl_nm_lcl=(char *)nco_malloc(strlen(fl_pth_lcl_tmp)+1UL);
     (void)strcpy(fl_nm_lcl,fl_pth_lcl_tmp);
     fl_nm_lcl_tmp=(char *)nco_free(fl_nm_lcl_tmp);
   }else if(strstr(fl_nm_lcl,http_url_sng) == fl_nm_lcl){
-    /* Filename starts with "http://": Try DAP first (if available), then wget. */
+    /* Filename starts with "http://": Try DAP first (if available), then wget */
 
 #ifdef ENABLE_DAP
     /* Filename has http:// prefix so try DAP access to unadulterated filename */
     int in_id; /* [id] Temporary input file ID */
 
-    /* Attempt nc_open() on HTTP protocol files. Success means DAP found file. */
+    /* Attempt nc_open() on HTTP protocol files. Success means DAP found file.
+       Do not worry about NC_DISKLESS here since any file will be immediately closed */
     rcd=nco_open_flg(fl_nm_lcl,NC_NOWRITE,&in_id);
-    
+
     if(rcd == NC_NOERR){
+      int nco_prg_id; /* Program ID */
+      nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
+
       /* Fail gracefully if ncatted or ncrename try to use DAP */
-      switch(prg_id){
+      switch(nco_prg_id){
       case ncatted:
       case ncrename:
-	(void)fprintf(stderr,"%s: ERROR %s reminds you that ncatted and ncrename must process truly local (i.e., not read via DAP) files (fxm TODO nco664)\n",prg_nm_get(),fnc_nm);
-	nco_exit(EXIT_FAILURE);
-	break;
+        (void)fprintf(stderr,"%s: ERROR %s reminds you that ncatted and ncrename must process truly local (i.e., not read via DAP) files (fxm TODO nco664)\n",nco_prg_nm_get(),fnc_nm);
+        nco_exit(EXIT_FAILURE);
+        break;
       default:
-	/* All other operators work with DAP correctly */
-	break;
+        /* All other operators work correctly with DAP */
+        break;
       } /* end switch */
-      
+
       /* Close file to prevent accumulating dangling open files on DAP server */
       rcd=nco_close(in_id);
 
       /* Great! DAP worked so file has earned DAP identification */
       DAP_URL=True; 
 
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO nco_fl_mk_lcl() successfully accessed this file using the DAP protocol\n",prg_nm_get());
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s successfully accessed this file using the DAP protocol\n",nco_prg_nm_get(),fnc_nm);
 
-      /* Set rcd=0 to agree with successful stat() so rest of function treats file as local
+      /* 20120728: Set rcd_stt=0 to mimic successful stat() return so rest of function treats file as local
 	 (DAP treats HTTP protocol files as local files) */
-      rcd=0;
+      rcd_stt=0;
 
     }else{ /* DAP-access failed */
-      (void)fprintf(stderr,"%s: INFO DAP-access to %s failed with error code %d. ",prg_nm_get(),fl_nm_lcl,rcd);
+      (void)fprintf(stderr,"%s: INFO DAP-access to %s failed with error code %d. ",nco_prg_nm_get(),fl_nm_lcl,rcd);
       (void)fprintf(stderr,"Translation into English with nc_strerror(%d) is \"%s\"\n",rcd,nc_strerror(rcd));
       /* Error codes explained by Dennis Heimbigner in e-mail on 20110627 */
-      if(rcd == NC_ECANTREAD) (void)fprintf(stderr,"%s: HINT DAP-access error code indicates that URL does not exist. Is there a typo in the URL? Please verify the file is accessible on the DAP-server at the specified location.\n",prg_nm_get());
-      if(rcd == NC_EDAPSVC) (void)fprintf(stderr,"%s: HINT DAP-access error code indicates that URL does exist, and that error may be in DAP server.\n",prg_nm_get());
+      if(rcd == NC_ECANTREAD) (void)fprintf(stderr,"%s: HINT DAP-access error code indicates that URL does not exist. Is there a typo in the URL? Please verify that the file is accessible on the DAP-server at the specified location.\n",nco_prg_nm_get());
+      if(rcd == NC_EDAPSVC) (void)fprintf(stderr,"%s: HINT DAP-access error code indicates that URL _does_ exist, so error appears to be in DAP server. Reasons for this could include an aggregation server (e.g., GDS or THREDDS) that receives a URL that is valid according to the aggregation metadata but the implied back-end dataset may be temporarily unavailable.\n",nco_prg_nm_get());
       /* Error codes NC_EDDS, NC_EDAS, etc. are self-explanatory with nc_strerror() */
     } /* DAP-access failed */
 
 #else /* !ENABLE_DAP */
-    (void)fprintf(stderr,"%s: INFO Access to %s may (because filename starts with \"http://\") require DAP, but NCO was not enabled with DAP. Instead NCO will try to search for the file locally, and then will try wget.\n",prg_nm_get(),fl_nm_lcl); 
-    (void)fprintf(stderr,"%s: HINT: Obtain or build DAP-enabled NCO, e.g., with configure --enable-dap-netcdf ...\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: INFO Access to %s may (because filename starts with \"http://\") require DAP, but NCO was not enabled with DAP. Instead NCO will try to search for the file locally, and then will try wget.\n",nco_prg_nm_get(),fl_nm_lcl); 
+    (void)fprintf(stderr,"%s: HINT: Obtain or build DAP-enabled NCO, e.g., with configure --enable-dap-netcdf ...\n",nco_prg_nm_get());
 #endif /* !ENABLE_DAP */
 
     if(DAP_URL == False){ /* DAP access to http:// file failed */
@@ -476,17 +625,23 @@ nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
 	 ncks -D 2 -M http://dust.ess.uci.edu/nco/in.nc # wget
 	 ncks -D 2 -M -l . http://dust.ess.uci.edu/nco/in.nc # wget
 	 ncks -D 2 -M -l . -p http://dust.ess.uci.edu/nco in.nc # wget
-	 ncks -D 2 -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc # DAP */
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will first attempt to find file on local disk and, if unsuccessful, will then attempt retrieve remote file to local client using wget\n",prg_nm_get());
-      
+	 ncks -D 2 -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc # DAP
+	 ncks -O -D 2 -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc ~/foo.nc # DAP
+	 ncks -O -v one -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc ~/foo.nc # DAP */
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will first attempt to find file on local disk and, if unsuccessful, will then attempt retrieve remote file to local client using wget\n",nco_prg_nm_get());
+
       /* DAP cannot open file so leave DAP_URL=FALSE and set HTTP_URL=True
 	 Later we will attempt to wget file to local system */
       HTTP_URL=True;
       url_sng_lng=strlen(http_url_sng);
 
       /* If HTTP then rearrange fl_nm_lcl to remove http://hostname part
-	 before searching for file on local disk */
+      before searching for file on local disk */
       fl_pth_lcl_tmp=strchr(fl_nm_lcl+url_sng_lng,'/');
+      if(!fl_pth_lcl_tmp){
+	(void)fprintf(stderr,"%s: ERROR %s unable to find valid filename component of HTTP path %s\n",nco_prg_nm_get(),fnc_nm,fl_nm_lcl);
+	nco_exit(EXIT_FAILURE);
+      } /* endif */
       fl_nm_lcl_tmp=fl_nm_lcl;
       fl_nm_lcl=(char *)nco_malloc(strlen(fl_pth_lcl_tmp)+1UL);
       (void)strcpy(fl_nm_lcl,fl_pth_lcl_tmp);
@@ -506,31 +661,35 @@ nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
        ((cln_ptr-3 >= fl_nm_lcl) && *(cln_ptr-3) == '.')){
       /* Rearrange fl_nm_lcl to remove hostname: part */
       fl_pth_lcl_tmp=strchr(fl_nm_lcl+url_sng_lng,'/');
-      fl_nm_lcl_tmp=fl_nm_lcl;
-      fl_nm_lcl=(char *)nco_malloc(strlen(fl_pth_lcl_tmp)+1UL);
-      (void)strcpy(fl_nm_lcl,fl_pth_lcl_tmp);
-      fl_nm_lcl_tmp=(char *)nco_free(fl_nm_lcl_tmp);
+      if(!fl_pth_lcl_tmp){
+	(void)fprintf(stderr,"%s: ERROR %s unable to find valid filename component of scp or rcp path %s\n",nco_prg_nm_get(),fnc_nm,fl_nm_lcl);
+	  nco_exit(EXIT_FAILURE);
+	} /* endif */
+        fl_nm_lcl_tmp=fl_nm_lcl;
+        fl_nm_lcl=(char *)nco_malloc(strlen(fl_pth_lcl_tmp)+1UL);
+        (void)strcpy(fl_nm_lcl,fl_pth_lcl_tmp);
+        fl_nm_lcl_tmp=(char *)nco_free(fl_nm_lcl_tmp);
     } /* endif period is three or four characters from colon */
   } /* end if */
 
   /* Does file exist on local system? */
   if(!DAP_URL) rcd_stt=stat(fl_nm_lcl,&stat_sct);
-  if(rcd_stt == -1 && (dbg_lvl_get() >= nco_dbg_fl)) (void)fprintf(stderr,"%s: INFO stat() #1 failed: %s does not exist\n",prg_nm_get(),fl_nm_lcl);
+  if(rcd_stt == -1 && (nco_dbg_lvl_get() >= nco_dbg_fl)) (void)fprintf(stderr,"%s: INFO stat() #1 failed: %s does not exist\n",nco_prg_nm_get(),fl_nm_lcl);
 
   /* If not, check if file exists on local system under same path interpreted relative to current working directory */
   if(rcd_stt == -1){
     if(fl_nm_lcl[0] == '/'){
       rcd_stt=stat(fl_nm_lcl+1UL,&stat_sct);
-      if(rcd_stt == -1 && (dbg_lvl_get() >= nco_dbg_fl)) (void)fprintf(stderr,"%s: INFO stat() #2 failed: %s does not exist\n",prg_nm_get(),fl_nm_lcl+1UL);
+      if(rcd_stt == -1 && (nco_dbg_lvl_get() >= nco_dbg_fl)) (void)fprintf(stderr,"%s: INFO stat() #2 failed: %s does not exist\n",nco_prg_nm_get(),fl_nm_lcl+1UL);
     } /* end if */
     if(rcd_stt == 0){
       /* NB: Adding one to filename pointer is like deleting initial slash on filename
-	 Then free(fl_nm_lcl) would miss this initial byte (memory is lost)
-	 Hence must copy new name into its own memory space */
+      Then free(fl_nm_lcl) would miss this initial byte (memory is lost)
+      Hence must copy new name into its own memory space */
       fl_nm_lcl_tmp=(char *)strdup(fl_nm_lcl+1UL);
       fl_nm_lcl=(char *)nco_free(fl_nm_lcl);
       fl_nm_lcl=fl_nm_lcl_tmp;
-      (void)fprintf(stderr,"%s: WARNING not searching for %s on remote filesystem, using local file %s instead\n",prg_nm_get(),fl_nm,fl_nm_lcl+1UL);
+      (void)fprintf(stderr,"%s: WARNING not searching for %s on remote filesystem, using local file %s instead\n",nco_prg_nm_get(),fl_nm,fl_nm_lcl+1UL);
     } /* end if */
   } /* end if */
 
@@ -555,8 +714,8 @@ nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
 
     /* At last, check for file in local storage directory */
     rcd_stt=stat(fl_nm_lcl,&stat_sct);
-    if(rcd_stt != -1) (void)fprintf(stderr,"%s: WARNING not searching for %s on remote filesystem, using local file %s instead\n",prg_nm_get(),fl_nm,fl_nm_lcl);
-    if(rcd_stt == -1 && (dbg_lvl_get() >= nco_dbg_fl)) (void)fprintf(stderr,"%s: INFO stat() #3 failed: %s does not exist\n",prg_nm_get(),fl_nm_lcl);
+    if(rcd_stt != -1) (void)fprintf(stderr,"%s: WARNING not searching for %s on remote filesystem, using local file %s instead\n",nco_prg_nm_get(),fl_nm,fl_nm_lcl);
+    if(rcd_stt == -1 && (nco_dbg_lvl_get() >= nco_dbg_fl)) (void)fprintf(stderr,"%s: INFO stat() #3 failed: %s does not exist\n",nco_prg_nm_get(),fl_nm_lcl);
   } /* end if */
 
   /* File was not found locally and is not DAP-accessible, try to fetch file from remote filesystem */
@@ -584,375 +743,386 @@ nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
       synchronous, /* Syncronous transfer */
       asynchronous}; /* Asynchronous transfer */
 
-    enum{ /* [enm] File order */
-      lcl_rmt, /* Local file argument before remote file argument */
-      rmt_lcl}; /* Remote file argument before local file argument */
-
-    size_t fl_pth_lcl_lng=size_t_CEWI; /* CEWI */
-
-    rmt_fch_cmd_sct *rmt_cmd=NULL;
-    /* fxm: Initialize structure contents as const */
-    rmt_fch_cmd_sct hsiget={"hsi get %s : %s",4,synchronous,lcl_rmt};
-    /* rmt_fch_cmd_sct msread={"msread -R %s %s",4,synchronous,lcl_rmt};*/ /* Deprecated 20110419 */
-    /* rmt_fch_cmd_sct msrcp={"msrcp mss:%s %s",4,synchronous,rmt_lcl};*/ /* Deprecated 20110419 */
-    /* rmt_fch_cmd_sct nrnet={"nrnet msget %s r flnm=%s l mail=FAIL",4,asynchronous,lcl_rmt};*/ /* Deprecated 20110419 */
-    /* rmt_fch_cmd_sct rcp={"rcp -p %s %s",4,synchronous,rmt_lcl};*/ /* Deprecated ~2000 */
-    /* wget -r: re-download file (clobber existing file of same name, if any) */
-    rmt_fch_cmd_sct http={"wget -r --output-document=%s %s",4,synchronous,lcl_rmt};
-    rmt_fch_cmd_sct scp={"scp -p %s %s",4,synchronous,rmt_lcl};
-    rmt_fch_cmd_sct sftp={"sftp %s %s",4,synchronous,rmt_lcl};
-    /* Fill-in ftp structure fmt element dynamically later */
-    rmt_fch_cmd_sct ftp={"",4,synchronous,rmt_lcl};
-
-    /* Why did stat() command fail? */
-    /* (void)perror(prg_nm_get());*/
-
-    /* Remote filename is input filename by definition */
-    fl_nm_rmt=fl_nm;
-
-    /* URL specifier in filename unambiguously signals to use FTP */
-    if(rmt_cmd == NULL){
-      if(FTP_URL){
-	/* fxm: use autoconf HAVE_XXX rather than WIN32 token TODO nco292 */
+      enum{ /* [enm] File order */
+        lcl_rmt, /* Local file argument before remote file argument */
+        rmt_lcl}; /* Remote file argument before local file argument */
+
+        size_t fl_pth_lcl_lng=size_t_CEWI; /* CEWI */
+
+        rmt_fch_cmd_sct *rmt_cmd=NULL;
+        /* fxm: Initialize structure contents as const */
+        rmt_fch_cmd_sct hsiget={"hsi get %s : %s",4,synchronous,lcl_rmt};
+        /* rmt_fch_cmd_sct msread={"msread -R %s %s",4,synchronous,lcl_rmt};*/ /* Deprecated 20110419 */
+        /* rmt_fch_cmd_sct msrcp={"msrcp mss:%s %s",4,synchronous,rmt_lcl};*/ /* Deprecated 20110419 */
+        /* rmt_fch_cmd_sct nrnet={"nrnet msget %s r flnm=%s l mail=FAIL",4,asynchronous,lcl_rmt};*/ /* Deprecated 20110419 */
+        /* rmt_fch_cmd_sct rcp={"rcp -p %s %s",4,synchronous,rmt_lcl};*/ /* Deprecated ~2000 */
+        /* wget -p: fxm (and enables clobber)
+        wget -r: Turn on recursive retrieving (and enables clobber)
+        wget --tries: Set number of retries. Default is 20. */
+        rmt_fch_cmd_sct http={"wget --tries=1 --output-document=%s %s",4,synchronous,lcl_rmt};
+        rmt_fch_cmd_sct scp={"scp -p %s %s",4,synchronous,rmt_lcl};
+        rmt_fch_cmd_sct sftp={"sftp %s %s",4,synchronous,rmt_lcl};
+        /* Fill-in ftp structure fmt element dynamically later */
+        rmt_fch_cmd_sct ftp={"",4,synchronous,rmt_lcl};
+
+        /* Why did stat() command fail? */
+        /* (void)perror(nco_prg_nm_get());*/
+
+        /* Remote filename is input filename by definition */
+        fl_nm_rmt=fl_nm;
+
+        /* URL specifier in filename unambiguously signals to use FTP */
+        if(rmt_cmd == NULL){
+          if(FTP_URL){
+            /* fxm: use autoconf HAVE_XXX rather than WIN32 token TODO nco292 */
 #ifdef WIN32
-/* #ifndef HAVE_NETWORK fxm */
-	/* I have no idea how networking calls work in MS Windows, so just exit */
-	(void)fprintf(stdout,"%s: ERROR Networking required to obtain %s is not supported by this operating system\n",prg_nm_get(),fl_nm_rmt);
-	nco_exit(EXIT_FAILURE);
+            /* #ifndef HAVE_NETWORK fxm */
+            /* I have no idea how networking calls work in MS Windows, so just exit */
+            (void)fprintf(stdout,"%s: ERROR Networking required to obtain %s is not supported by this operating system\n",nco_prg_nm_get(),fl_nm_rmt);
+            nco_exit(EXIT_FAILURE);
 #else /* !WIN32 */
-	char *usr_nm;
-	char *host_nm_lcl;
-	char *host_nm_rmt;
-	char *usr_email=NULL; /* CEWI */
-	char *fl_nm_netrc;
-
-	const char fl_stb_netrc[]="/.netrc";
-	const char ftp_cmd_anonymous[]="/usr/bin/ftp -i -p -n"; /* -n turns off using .netrc */
-	const char ftp_cmd_netrc[]="/usr/bin/ftp -i -p"; /* Allow FTP to use .netrc */
-	const char fmt_ftp_anonymous_tpl[]="%s %s << END\nuser anonymous %s\nbin\nget %s %s\nquit\nEND";
-	const char fmt_ftp_netrc_tpl[]="%s %s << END\nbin\nget %s %s\nquit\nEND";
-
-	struct passwd *usr_pwd;
-
-	uid_t usr_uid;
-
-	rmt_cmd=&ftp;
-
-	/* Get UID to get password structure which contains home directory, login name
-	   Home directory needed to search for .netrc
-	   Login name used to construct e-mail address for anonymous FTP */
-	usr_uid=getuid();
-	usr_pwd=getpwuid(usr_uid);
-	usr_nm=usr_pwd->pw_name;
-
-	/* Construct remote hostname and filename now since:
-	   1. .netrc, if any, will soon be searched for remote hostname
-	   2. Remote hostname and filename always needed for remote retrieval */
-
-	/* Remote hostname begins directly after "[s]ftp://" */
-	host_nm_rmt=fl_nm_rmt+url_sng_lng;
-	/* Filename begins after slash */
-	fl_nm_rmt=strstr(fl_nm_rmt+url_sng_lng,"/")+1UL;
-	/* NUL-terminate hostname by overwriting colon in hostname:/filename syntax */
-	*(fl_nm_rmt-1)='\0';
-
-	/* Use anonymous FTP unless .netrc file exists on local system */
-	fl_nm_netrc=(char *)strdup(usr_pwd->pw_dir);
-	/* Create space for full path to ${HOME}/.netrc */
-	fl_nm_netrc=(char *)nco_realloc(fl_nm_netrc,(strlen(fl_nm_netrc)+strlen(fl_stb_netrc)+2UL)*sizeof(char));
-	fl_nm_netrc=(char *)strcat(fl_nm_netrc,fl_stb_netrc);
-	rcd_stt=stat(fl_nm_netrc,&stat_sct);
-	if(!rcd_stt){
-	  /* Search .netrc file for remote host name */
-	  char *host_nm_rmt_psn;
-	  char *fl_netrc_bfr;
-	  FILE *fp_netrc; /* [fl] .netrc inpu file handle */
-	  if((fp_netrc=fopen(fl_nm_netrc,"r")) == NULL){
-	    (void)fprintf(stderr,"%s: ERROR unable to open user's .netrc file %s\n",prg_nm_get(),fl_nm_netrc);
-	    /* Why did fopen() command fail? */
-	    (void)perror(prg_nm_get());
-	    nco_exit(EXIT_FAILURE);
-	  } /* end if */
-	  /* Add one for NUL-terminator */
-	  fl_netrc_bfr=(char *)nco_malloc((1UL+stat_sct.st_size)*sizeof(char));
-	  /* NUL-terminate buffer */
-	  fl_netrc_bfr[stat_sct.st_size]='\0';
-	  rcd_frd=fread((void *)fl_netrc_bfr,stat_sct.st_size,1,fp_netrc);
-	  if(rcd_frd <= 0){
-	    (void)fprintf(stderr,"%s: ERROR reading %s\n",prg_nm_get(),fl_nm_netrc);
-	    /* Why did fread() command fail? */
-	    (void)perror(prg_nm_get());
-	    /* Check for feof() vs. ferror() here? */
-	    rcd_frd=fclose(fp_netrc);
-	    nco_exit(EXIT_FAILURE);
-	  } /* end if */
-	  rcd_frd=fclose(fp_netrc);
-	  host_nm_rmt_psn=strstr(fl_netrc_bfr,host_nm_rmt);
-	  if(host_nm_rmt_psn){
-	    FTP_NETRC=True;
-	    if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO %s will use .netrc file at %s instead of anonymous FTP\n",prg_nm_get(),fnc_nm,fl_nm_netrc);
-	  } /* endif host_nm_rmt_psn */
-	  fl_netrc_bfr=(char *)nco_free(fl_netrc_bfr);
-	} /* endif rcd_stt */
-
-	if(!FTP_NETRC){
-	  /* DEBUG: 256 should be replaced by MAXHOSTNAMELEN from <sys/param.h>, but
-	     MAXHOSTNAMELEN isn't in there on Solaris */
-	  host_nm_lcl=(char *)nco_malloc((256UL+1UL)*sizeof(char));
-	  (void)gethostname(host_nm_lcl,256UL+1UL);
-	  /* fxm: move to gethostbyname() next */
-	  if(strchr(host_nm_lcl,'.') == NULL){
-/* #ifdef HAVE_RES_ */
-	    /* Returned hostname did not include fully qualified Internet domain name (FQDN) */
-	    (void)res_init();
-	    (void)strcat(host_nm_lcl,".");
-	    (void)strcat(host_nm_lcl,_res.defdname);
-/* #endif HAVE_RES_ */
-	  } /* end if */
-
-	  /* Add one for joining "@" and one for NUL byte */
-	  usr_email=(char *)nco_malloc((strlen(usr_nm)+1UL+strlen(host_nm_lcl)+1UL)*sizeof(char));
-	  (void)sprintf(usr_email,"%s@%s",usr_nm,host_nm_lcl);
-	  /* Free hostname space */
-	  host_nm_lcl=(char *)nco_free(host_nm_lcl);
-	} /* FTP_NETRC */
-
-	if(FTP_NETRC){
-	  /* Subtract four characters for two "percent s" formats replaced by new strings, add one for NUL byte */
-	  fmt_ftp=(char *)nco_malloc((strlen(fmt_ftp_netrc_tpl)+strlen(ftp_cmd_netrc)+strlen(host_nm_rmt)-4UL+1UL)*sizeof(char));
-	  (void)sprintf(fmt_ftp,fmt_ftp_netrc_tpl,ftp_cmd_netrc,host_nm_rmt,"%s","%s");
-	}else{
-	  /* Subtract six characters for three "percent s" formats replaced by new strings, add one for NUL byte */
-	  fmt_ftp=(char *)nco_malloc((strlen(fmt_ftp_anonymous_tpl)+strlen(ftp_cmd_anonymous)+strlen(host_nm_rmt)+strlen(usr_email)-6UL+1UL)*sizeof(char));
-	  (void)sprintf(fmt_ftp,fmt_ftp_anonymous_tpl,ftp_cmd_anonymous,host_nm_rmt,usr_email,"%s","%s");
-	} /* !FTP_NETRC */
-	rmt_cmd->fmt=fmt_ftp;
-	/* Free space, if any, holding user's E-mail address */
-	if(!FTP_NETRC) usr_email=(char *)nco_free(usr_email);
-	/* Always free .netrc filename space */
-	fl_nm_netrc=(char *)nco_free(fl_nm_netrc);
+            char *usr_nm;
+            char *host_nm_lcl;
+            char *host_nm_rmt;
+            char *usr_email=NULL; /* CEWI */
+            char *fl_nm_netrc;
+
+            const char fl_stb_netrc[]="/.netrc";
+            const char ftp_cmd_anonymous[]="/usr/bin/ftp -i -p -n"; /* -n turns off using .netrc */
+            const char ftp_cmd_netrc[]="/usr/bin/ftp -i -p"; /* Allow FTP to use .netrc */
+            const char fmt_ftp_anonymous_tpl[]="%s %s << END\nuser anonymous %s\nbin\nget %s %s\nquit\nEND";
+            const char fmt_ftp_netrc_tpl[]="%s %s << END\nbin\nget %s %s\nquit\nEND";
+
+            struct passwd *usr_pwd;
+
+            uid_t usr_uid;
+
+            rmt_cmd=&ftp;
+
+            /* Get UID to get password structure which contains home directory, login name
+            Home directory needed to search for .netrc
+            Login name used to construct e-mail address for anonymous FTP */
+            usr_uid=getuid();
+            usr_pwd=getpwuid(usr_uid);
+            usr_nm=usr_pwd->pw_name;
+
+            /* Construct remote hostname and filename now since:
+            1. .netrc, if any, will soon be searched for remote hostname
+            2. Remote hostname and filename always needed for remote retrieval */
+
+            /* Remote hostname begins directly after "[s]ftp://" */
+            host_nm_rmt=fl_nm_rmt+url_sng_lng;
+            /* Filename begins after slash */
+            fl_nm_rmt=strstr(fl_nm_rmt+url_sng_lng,"/")+1UL;
+            /* NUL-terminate hostname by overwriting colon in hostname:/filename syntax */
+            *(fl_nm_rmt-1)='\0';
+
+            /* Use anonymous FTP unless .netrc file exists on local system */
+            fl_nm_netrc=(char *)strdup(usr_pwd->pw_dir);
+            /* Create space for full path to ${HOME}/.netrc */
+            fl_nm_netrc=(char *)nco_realloc(fl_nm_netrc,(strlen(fl_nm_netrc)+strlen(fl_stb_netrc)+2UL)*sizeof(char));
+            fl_nm_netrc=(char *)strcat(fl_nm_netrc,fl_stb_netrc);
+            rcd_stt=stat(fl_nm_netrc,&stat_sct);
+            if(!rcd_stt){
+              /* Search .netrc file for remote host name */
+              char *host_nm_rmt_psn;
+              char *fl_netrc_bfr;
+              FILE *fp_netrc; /* [fl] .netrc inpu file handle */
+              if((fp_netrc=fopen(fl_nm_netrc,"r")) == NULL){
+                (void)fprintf(stderr,"%s: ERROR unable to open user's .netrc file %s\n",nco_prg_nm_get(),fl_nm_netrc);
+                /* Why did fopen() command fail? */
+                (void)perror(nco_prg_nm_get());
+                nco_exit(EXIT_FAILURE);
+              } /* end if */
+              /* Add one for NUL-terminator */
+              fl_netrc_bfr=(char *)nco_malloc((1UL+stat_sct.st_size)*sizeof(char));
+              /* NUL-terminate buffer */
+              fl_netrc_bfr[stat_sct.st_size]='\0';
+              rcd_frd=fread((void *)fl_netrc_bfr,stat_sct.st_size,1,fp_netrc);
+              if(rcd_frd <= 0){
+                (void)fprintf(stderr,"%s: ERROR reading %s\n",nco_prg_nm_get(),fl_nm_netrc);
+                /* Why did fread() command fail? */
+                (void)perror(nco_prg_nm_get());
+                /* Check for feof() vs. ferror() here? */
+                rcd_frd=fclose(fp_netrc);
+                nco_exit(EXIT_FAILURE);
+              } /* end if */
+              rcd_frd=fclose(fp_netrc);
+              host_nm_rmt_psn=strstr(fl_netrc_bfr,host_nm_rmt);
+              if(host_nm_rmt_psn){
+                FTP_NETRC=True;
+                if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO %s will use .netrc file at %s instead of anonymous FTP\n",nco_prg_nm_get(),fnc_nm,fl_nm_netrc);
+              } /* endif host_nm_rmt_psn */
+              fl_netrc_bfr=(char *)nco_free(fl_netrc_bfr);
+            } /* endif rcd_stt */
+
+            if(!FTP_NETRC){
+              /* DEBUG: 256 should be replaced by MAXHOSTNAMELEN from <sys/param.h>, but 
+		 Solaris does not have MAXHOSTNAMELEN in sys/param.h */
+              host_nm_lcl=(char *)nco_malloc((256UL+1UL)*sizeof(char));
+              (void)gethostname(host_nm_lcl,256UL+1UL);
+              /* fxm: move to gethostbyname() next */
+              if(!strchr(host_nm_lcl,'.')){
+                /* #ifdef HAVE_RES_ */
+                /* Returned hostname did not include fully qualified Internet domain name (FQDN) */
+                (void)res_init();
+                (void)strcat(host_nm_lcl,".");
+                (void)strcat(host_nm_lcl,_res.defdname);
+                /* #endif HAVE_RES_ */
+              } /* end if */
+
+              /* Add one for joining "@" and one for NUL byte */
+              usr_email=(char *)nco_malloc((strlen(usr_nm)+1UL+strlen(host_nm_lcl)+1UL)*sizeof(char));
+              (void)sprintf(usr_email,"%s@%s",usr_nm,host_nm_lcl);
+              /* Free hostname space */
+              host_nm_lcl=(char *)nco_free(host_nm_lcl);
+            } /* FTP_NETRC */
+
+            if(FTP_NETRC){
+              /* Subtract four characters for two "percent s" formats replaced by new strings, add one for NUL byte */
+              fmt_ftp=(char *)nco_malloc((strlen(fmt_ftp_netrc_tpl)+strlen(ftp_cmd_netrc)+strlen(host_nm_rmt)-4UL+1UL)*sizeof(char));
+              (void)sprintf(fmt_ftp,fmt_ftp_netrc_tpl,ftp_cmd_netrc,host_nm_rmt,"%s","%s");
+            }else{
+              /* Subtract six characters for three "percent s" formats replaced by new strings, add one for NUL byte */
+              fmt_ftp=(char *)nco_malloc((strlen(fmt_ftp_anonymous_tpl)+strlen(ftp_cmd_anonymous)+strlen(host_nm_rmt)+strlen(usr_email)-6UL+1UL)*sizeof(char));
+              (void)sprintf(fmt_ftp,fmt_ftp_anonymous_tpl,ftp_cmd_anonymous,host_nm_rmt,usr_email,"%s","%s");
+            } /* !FTP_NETRC */
+            rmt_cmd->fmt=fmt_ftp;
+            /* Free space, if any, holding user's E-mail address */
+            if(!FTP_NETRC) usr_email=(char *)nco_free(usr_email);
+            /* Always free .netrc filename space */
+            fl_nm_netrc=(char *)nco_free(fl_nm_netrc);
 #endif /* !WIN32 */
-      } /* end if FTP_URL */
-    } /* end if rmt_cmd */
-
-    /* Currently, sftp transfers are indicated by FTP-style URLs
-       NB: Unlike FTP, SFTP does not have a recognized URL format
-       Hence actual transfer via SFTP uses scp syntax (for single files)
-       Multiple file transfer via SFTP can use FTP-like scripts, requires more work
-       NCO SFTP file specification must have colon separating hostname from filename */
-    if(rmt_cmd == NULL){
-      if(SFTP_URL){
-	/* Remote filename begins after URL but includes hostname */
-	fl_nm_rmt+=url_sng_lng;
-	/* Make sure that SFTP hostname looks like a hostname */
-	if((cln_ptr=strchr(fl_nm_rmt,':'))){
-	  if(((cln_ptr-4 >= fl_nm_rmt) && *(cln_ptr-4) == '.') ||
-	     ((cln_ptr-3 >= fl_nm_rmt) && *(cln_ptr-3) == '.')){
-	    rmt_cmd=&sftp;
-	  } /* end if */
-	} /* end if colon */
-      } /* end if SFTP */
-    } /* end if rmt_cmd */
-
-    /* Attempt wget on files that contain http:// prefix and are not accessible via DAP */
-    if(rmt_cmd == NULL){
-      if(HTTP_URL){
-	rmt_cmd=&http;
-	(void)fprintf(stderr,"%s: INFO Will now attempt wget on the full filepath. wget will likely fail if the file is truly behind a DAP server. Unfortunately, even a failed wget attempt creates a rather long pathname in the current directory. fxm TODO nco970, nco971. On the other hand, wget should succeed if the file is stored in any publicly-accessible web location.\n",prg_nm_get());
-      } /* end if HTTP */
-    } /* end if rmt_cmd */
-
-    /* Otherwise, single colon preceded by period in filename signals rcp or scp
-       Determining whether to try scp instead of rcp is difficult
-       Ideally, NCO would test remote machine for rcp/scp priveleges with system command like, e.g., "ssh echo ok"
-       To start we use scp which has its own fall-through to rcp */
-    if(rmt_cmd == NULL){
-      if((cln_ptr=strchr(fl_nm_rmt,':'))){
-	if(((cln_ptr-4 >= fl_nm_rmt) && *(cln_ptr-4) == '.') ||
-	   ((cln_ptr-3 >= fl_nm_rmt) && *(cln_ptr-3) == '.')){
-	  rmt_cmd=&scp;
-	} /* end if */
-      } /* end if colon */
-    } /* end if rmt_cmd */
+          } /* end if FTP_URL */
+        } /* end if rmt_cmd */
+
+        /* Currently, sftp transfers are indicated by FTP-style URLs
+	   NB: Unlike FTP, SFTP does not have a recognized URL format
+	   Hence actual transfer via SFTP uses scp syntax (for single files)
+	   Multiple file transfer via SFTP can use FTP-like scripts, requires more work
+	   NCO SFTP file specification must have colon separating hostname from filename */
+        if(rmt_cmd == NULL){
+          if(SFTP_URL){
+            /* Remote filename begins after URL but includes hostname */
+            fl_nm_rmt+=url_sng_lng;
+            /* Make sure that SFTP hostname looks like a hostname */
+            if((cln_ptr=strchr(fl_nm_rmt,':'))){
+              if(((cln_ptr-4 >= fl_nm_rmt) && *(cln_ptr-4) == '.') ||
+                ((cln_ptr-3 >= fl_nm_rmt) && *(cln_ptr-3) == '.')){
+                  rmt_cmd=&sftp;
+              } /* end if */
+	    } /* end if colon */
+          } /* end if SFTP */
+        } /* end if rmt_cmd */
+
+        /* Attempt wget on files that contain http:// prefix and are not accessible via DAP */
+        if(rmt_cmd == NULL){
+          if(HTTP_URL){
+            rmt_cmd=&http;
+            (void)fprintf(stderr,"%s: INFO Will now attempt wget on the full filepath. wget will fail if the file is \"hidden\" behind a DAP server. Unfortunately, failed wget attempts creates rather long pathnames in the current directory. fxm TODO nco970, nco971. On the other hand, wget should succeed if the file is stored in any publicly-accessible web location.\n",nco_prg_nm_get());
+          } /* end if HTTP */
+        } /* end if rmt_cmd */
+
+        /* Otherwise, single colon preceded by period in filename signals rcp or scp
+	   Determining whether to try scp instead of rcp is difficult
+	   Ideally, NCO would test remote machine for rcp/scp priveleges with system command like, e.g., "ssh echo ok"
+	   To start we use scp which has its own fall-through to rcp */
+        if(rmt_cmd == NULL){
+          if((cln_ptr=strchr(fl_nm_rmt,':'))){
+            if(((cln_ptr-4 >= fl_nm_rmt) && *(cln_ptr-4) == '.') ||
+              ((cln_ptr-3 >= fl_nm_rmt) && *(cln_ptr-3) == '.')){
+                rmt_cmd=&scp;
+            } /* end if */
+          } /* end if colon */
+        } /* end if rmt_cmd */
 
 #if 0
-    /* NB: MSS commands deprecated 20110419 */
-    if(rmt_cmd == NULL){
-      /* Does msrcp command exist on local system? */
-      rcd_stt=stat("/usr/local/bin/msrcp",&stat_sct); /* SCD Dataproc, Ouray */
-      if(rcd_stt != 0) rcd_stt=stat("/usr/bin/msrcp",&stat_sct); /* ACD Linux */
-      if(rcd_stt != 0) rcd_stt=stat("/opt/local/bin/msrcp",&stat_sct); /* CGD */
-      if(rcd_stt != 0) rcd_stt=stat("/usr/local/dcs/bin/msrcp",&stat_sct); /* ACD */
-      if(rcd_stt == 0) rmt_cmd=&msrcp;
-    } /* end if */
-
-    if(rmt_cmd == NULL){
-      /* Does msread command exist on local system? */
-      rcd_stt=stat("/usr/local/bin/msread",&stat_sct);
-      if(rcd_stt == 0) rmt_cmd=&msread;
-    } /* end if */
-
-    if(rmt_cmd == NULL){
-      /* Does nrnet command exist on local system? */
-      rcd_stt=stat("/usr/local/bin/nrnet",&stat_sct);
-      if(rcd_stt == 0) rmt_cmd=&nrnet;
-    } /* end if */
-
-    /* Before we look for file on remote system, make sure
-       filename has correct syntax to exist on remote system */
-    if(rmt_cmd == &msread || rmt_cmd == &nrnet || rmt_cmd == &msrcp){
-      if (fl_nm_rmt[0] != '/' || fl_nm_rmt[1] < 'A' || fl_nm_rmt[1] > 'Z'){
-	(void)fprintf(stderr,"%s: ERROR %s is not on local filesystem and is not a syntactically valid filename on remote file system\n",prg_nm_get(),fl_nm_rmt);
-	nco_exit(EXIT_FAILURE);
-      } /* end if */
-    } /* end if */
+        /* NB: MSS commands deprecated 20110419 */
+        if(rmt_cmd == NULL){
+          /* Does msrcp command exist on local system? */
+          rcd_stt=stat("/usr/local/bin/msrcp",&stat_sct); /* SCD Dataproc, Ouray */
+          if(rcd_stt != 0) rcd_stt=stat("/usr/bin/msrcp",&stat_sct); /* ACD Linux */
+          if(rcd_stt != 0) rcd_stt=stat("/opt/local/bin/msrcp",&stat_sct); /* CGD */
+          if(rcd_stt != 0) rcd_stt=stat("/usr/local/dcs/bin/msrcp",&stat_sct); /* ACD */
+          if(rcd_stt == 0) rmt_cmd=&msrcp;
+        } /* end if */
+
+        if(rmt_cmd == NULL){
+          /* Does msread command exist on local system? */
+          rcd_stt=stat("/usr/local/bin/msread",&stat_sct);
+          if(rcd_stt == 0) rmt_cmd=&msread;
+        } /* end if */
+
+        if(rmt_cmd == NULL){
+          /* Does nrnet command exist on local system? */
+          rcd_stt=stat("/usr/local/bin/nrnet",&stat_sct);
+          if(rcd_stt == 0) rmt_cmd=&nrnet;
+        } /* end if */
+
+        /* Before we look for file on remote system, make sure
+        filename has correct syntax to exist on remote system */
+        if(rmt_cmd == &msread || rmt_cmd == &nrnet || rmt_cmd == &msrcp){
+          if (fl_nm_rmt[0] != '/' || fl_nm_rmt[1] < 'A' || fl_nm_rmt[1] > 'Z'){
+            (void)fprintf(stderr,"%s: ERROR %s is not on local filesystem and is not a syntactically valid filename on remote file system\n",nco_prg_nm_get(),fl_nm_rmt);
+            nco_exit(EXIT_FAILURE);
+          } /* end if */
+        } /* end if */
 #endif /* endif False */
 
-    /* NB: HPSS commands replaced MSS commands in NCO 4.0.8 in 201104 */
-    if(rmt_cmd == NULL){
-      /* Does hsi command exist on local system? */
-      rcd_stt=stat("/usr/local/bin/hsi",&stat_sct); /* CISL Bluefire default */
-      if(rcd_stt != 0) rcd_stt=stat("/opt/hpss/bin/hsi",&stat_sct); /* CISL alternate */
-      if(rcd_stt == 0) rmt_cmd=&hsiget;
-    } /* end if */
-
-    if(rmt_cmd == NULL){
-      (void)fprintf(stderr,"%s: ERROR file %s neither exists locally nor matches remote filename patterns\n",prg_nm_get(),fl_nm_rmt);
-      nco_exit(EXIT_FAILURE);
-    } /* end if */
-
-    if(fl_pth_lcl == NULL){
-      /* Derive path for storing local file from remote filename */
-      (void)fprintf(stderr,"%s: INFO deriving local filepath from remote filename\n",prg_nm_get());
-      fl_nm_stub=strrchr(fl_nm_lcl,'/')+1UL;
-      if(HTTP_URL){
-	/* Strip leading slash from fl_nm_lcl for HTTP files so, e.g., 
-	   http://dust.ess.uci.edu/nco/in.nc produces local path "nco" not "/nco" */
-	fl_nm_lcl_tmp=(char *)strdup(fl_nm_lcl+1UL);
-	fl_nm_lcl=(char *)nco_free(fl_nm_lcl);
-	fl_nm_lcl=fl_nm_lcl_tmp;
-      } /* !HTTP_URL */
-      /* Construct local storage filepath name */
-      fl_pth_lcl_lng=strlen(fl_nm_lcl)-strlen(fl_nm_stub)-1UL;
-      /* Allocate enough room for terminating NUL */
-      fl_pth_lcl_tmp=(char *)nco_malloc((fl_pth_lcl_lng+1UL)*sizeof(char));
-      (void)strncpy(fl_pth_lcl_tmp,fl_nm_lcl,fl_pth_lcl_lng);
-      fl_pth_lcl_tmp[fl_pth_lcl_lng]='\0';
-      /* Tell user what local filepath was derived */
-      (void)fprintf(stderr,"%s: INFO Retrieved files will be stored in derived directory ./%s\n",prg_nm_get(),fl_pth_lcl_tmp);
-    }else{
-      /* Copy user-specified local path to unite following code in terms of fl_pth_lcl_tmp */
-      fl_pth_lcl_tmp=(char *)strdup(fl_pth_lcl);
-    } /* fl_pth_lcl */
-    
-    /* Does local filepath exist already on local system? */
-    rcd_stt=stat(fl_pth_lcl_tmp,&stat_sct);
-    /* If not, then create local filepath */
-    if(rcd_stt != 0){
-      /* Allocate enough room for joining space ' ' and terminating NUL */
-      cmd_sys=(char *)nco_malloc((strlen(cmd_mkdir)+fl_pth_lcl_lng+2UL)*sizeof(char));
-      (void)strcpy(cmd_sys,cmd_mkdir);
-      (void)strcat(cmd_sys," ");
-      (void)strcat(cmd_sys,fl_pth_lcl_tmp);
-      rcd_sys=system(cmd_sys);
-      if(rcd_sys != 0){
-	(void)fprintf(stderr,"%s: ERROR Unable to create local directory %s\n",prg_nm_get(),fl_pth_lcl_tmp);
-	if(fl_pth_lcl == NULL) (void)fprintf(stderr,"%s: HINT Use -l option\n",prg_nm_get());
-	nco_exit(EXIT_FAILURE);
-      } /* end if */
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Created local directory ./%s\n",prg_nm_get(),fl_pth_lcl_tmp);
-      /* Free local command space */
-      cmd_sys=(char *)nco_free(cmd_sys);
-    } /* end if */
-
-    /* Free local path space, if any */
-    fl_pth_lcl_tmp=(char *)nco_free(fl_pth_lcl_tmp);
-
-    /* Allocate enough room for joining space ' ' and terminating NUL */
-    cmd_sys=(char *)nco_malloc((strlen(rmt_cmd->fmt)-rmt_cmd->fmt_chr_nbr+strlen(fl_nm_lcl)+strlen(fl_nm_rmt)+2)*sizeof(char));
-    if(rmt_cmd->file_order == lcl_rmt){
-      (void)sprintf(cmd_sys,rmt_cmd->fmt,fl_nm_lcl,fl_nm_rmt);
-    }else{
-      (void)sprintf(cmd_sys,rmt_cmd->fmt,fl_nm_rmt,fl_nm_lcl);
-    } /* end else */
-    if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: Retrieving file from remote location with command:\n%s\n",prg_nm_get(),cmd_sys);
-    (void)fflush(stderr);
-    /* Fetch file from remote file system */
-    rcd_sys=system(cmd_sys);
-    /* Free local command space */
-    cmd_sys=(char *)nco_free(cmd_sys);
-
-    /* Free dynamically allocated FTP script memory */
-    if(rmt_cmd == &ftp) fmt_ftp=(char *)nco_free(fmt_ftp);
-
-    if(rmt_cmd->transfer_mode == synchronous){
-      if(rcd_sys != 0){
-	(void)fprintf(stderr,"%s: ERROR Synchronous fetch command failed\n",prg_nm_get());
-	nco_exit(EXIT_FAILURE);
-      } /* end if */
-    }else{
-      /* This is appropriate place to insert invocation of shell command
-	 to retrieve file asynchronously and return status to NCO synchronously. */
-
-      int fl_sz_crr=-2;
-      int fl_sz_ntl=-1;
-      int tm_nbr=100; /* Maximum number of sleep periods before error exit */
-      int tm_idx;
-      int tm_sleep_scn=10; /* [s] Seconds per stat() check for successful return */
-
-      /* Asynchronous retrieval uses sleep-and-poll technique */
-      for(tm_idx=0;tm_idx<tm_nbr;tm_idx++){
-	rcd_stt=stat(fl_nm_lcl,&stat_sct);
-	if(rcd_stt == 0){
-	  /* What is current size of file? */
-	  fl_sz_ntl=fl_sz_crr;
-	  fl_sz_crr=stat_sct.st_size;
-	  /* If file size does not change during entire sleep period, assume
-	     file is completely retrieved. */
-	  if(fl_sz_ntl == fl_sz_crr){
-	    break;
-	  } /* end if */
-	} /* end if */
-	/* Sleep for specified time */
-	(void)sleep((unsigned)tm_sleep_scn);
-	if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,".");
-	(void)fflush(stderr);
-      } /* end for */
-      if(tm_idx == tm_nbr){
-	(void)fprintf(stderr,"%s: ERROR Maximum time (%d seconds = %.1f minutes) for asynchronous file retrieval exceeded.\n",prg_nm_get(),tm_nbr*tm_sleep_scn,tm_nbr*tm_sleep_scn/60.0);
-	nco_exit(EXIT_FAILURE);
-      } /* end if */
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"\n%s Retrieval successful after %d sleeps of %d seconds each = %.1f minutes\n",prg_nm_get(),tm_idx,tm_sleep_scn,tm_idx*tm_sleep_scn/60.0);
-    } /* end else transfer mode is asynchronous */
-    *FILE_RETRIEVED_FROM_REMOTE_LOCATION=True;
+        /* NB: HPSS commands replaced MSS commands in NCO 4.0.8 in 201104 */
+        if(rmt_cmd == NULL){
+          /* Does hsi command exist on local system? */
+          rcd_stt=stat("/usr/local/bin/hsi",&stat_sct); /* CISL Bluefire default */
+          if(rcd_stt != 0) rcd_stt=stat("/opt/hpss/bin/hsi",&stat_sct); /* CISL alternate */
+          if(rcd_stt != 0) rcd_stt=stat("/ncar/opt/hpss/hsi",&stat_sct); /* Yellowstone default added to NCO 4.3.2 in 201306 */
+          if(rcd_stt == 0) rmt_cmd=&hsiget;
+        } /* end if */
+
+        if(rmt_cmd == NULL){
+          (void)fprintf(stderr,"%s: ERROR file %s neither exists locally nor matches remote filename patterns\n",nco_prg_nm_get(),fl_nm_rmt);
+          nco_exit(EXIT_FAILURE);
+        } /* end if */
+
+        if(fl_pth_lcl == NULL){
+          /* Derive path for storing local file from remote filename */
+          (void)fprintf(stderr,"%s: INFO deriving local filepath from remote filename\n",nco_prg_nm_get());
+          fl_nm_stub=strrchr(fl_nm_lcl,'/')+1UL;
+          if(HTTP_URL){
+            /* Strip leading slash from fl_nm_lcl for HTTP files so, e.g., 
+	       http://dust.ess.uci.edu/nco/in.nc produces local path "nco" not "/nco" */
+            fl_nm_lcl_tmp=(char *)strdup(fl_nm_lcl+1UL);
+            fl_nm_lcl=(char *)nco_free(fl_nm_lcl);
+            fl_nm_lcl=fl_nm_lcl_tmp;
+          } /* !HTTP_URL */
+          /* Construct local storage filepath name */
+          fl_pth_lcl_lng=strlen(fl_nm_lcl)-strlen(fl_nm_stub)-1UL;
+          /* Allocate enough room for terminating NUL */
+          fl_pth_lcl_tmp=(char *)nco_malloc((fl_pth_lcl_lng+1UL)*sizeof(char));
+          (void)strncpy(fl_pth_lcl_tmp,fl_nm_lcl,fl_pth_lcl_lng);
+          fl_pth_lcl_tmp[fl_pth_lcl_lng]='\0';
+          /* Tell user what local filepath was derived */
+          (void)fprintf(stderr,"%s: INFO Retrieved files will be stored in derived directory ./%s\n",nco_prg_nm_get(),fl_pth_lcl_tmp);
+        }else{
+          /* Copy user-specified local path to unite following code in terms of fl_pth_lcl_tmp */
+          fl_pth_lcl_tmp=(char *)strdup(fl_pth_lcl);
+        } /* fl_pth_lcl */
+
+        /* Does local filepath exist already on local system? */
+        rcd_stt=stat(fl_pth_lcl_tmp,&stat_sct);
+        /* If not, then create local filepath */
+        if(rcd_stt != 0){
+          /* Allocate enough room for joining space ' ' and terminating NUL */
+          cmd_sys=(char *)nco_malloc((strlen(cmd_mkdir)+fl_pth_lcl_lng+2UL)*sizeof(char));
+          (void)strcpy(cmd_sys,cmd_mkdir);
+          (void)strcat(cmd_sys," ");
+          (void)strcat(cmd_sys,fl_pth_lcl_tmp);
+          rcd_sys=system(cmd_sys);
+          if(rcd_sys != 0){
+            (void)fprintf(stderr,"%s: ERROR Unable to create local directory %s\n",nco_prg_nm_get(),fl_pth_lcl_tmp);
+            if(fl_pth_lcl == NULL) (void)fprintf(stderr,"%s: HINT Use -l option\n",nco_prg_nm_get());
+            nco_exit(EXIT_FAILURE);
+          } /* end if */
+          if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Created local directory ./%s\n",nco_prg_nm_get(),fl_pth_lcl_tmp);
+          /* Free local command space */
+          cmd_sys=(char *)nco_free(cmd_sys);
+        } /* end if */
+
+        /* Free local path space, if any */
+        fl_pth_lcl_tmp=(char *)nco_free(fl_pth_lcl_tmp);
+
+        /* Allocate enough room for joining space ' ' and terminating NUL */
+        cmd_sys=(char *)nco_malloc((strlen(rmt_cmd->fmt)-rmt_cmd->fmt_chr_nbr+strlen(fl_nm_lcl)+strlen(fl_nm_rmt)+2)*sizeof(char));
+        if(rmt_cmd->file_order == lcl_rmt){
+          (void)sprintf(cmd_sys,rmt_cmd->fmt,fl_nm_lcl,fl_nm_rmt);
+        }else{
+          (void)sprintf(cmd_sys,rmt_cmd->fmt,fl_nm_rmt,fl_nm_lcl);
+        } /* end else */
+        if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: Retrieving file from remote location with command:\n%s\n",nco_prg_nm_get(),cmd_sys);
+        (void)fflush(stderr);
+        /* Fetch file from remote file system */
+        rcd_sys=system(cmd_sys);
+        /* Free local command space */
+        cmd_sys=(char *)nco_free(cmd_sys);
+
+        /* Free dynamically allocated FTP script memory */
+        if(rmt_cmd == &ftp) fmt_ftp=(char *)nco_free(fmt_ftp);
+
+        if(rmt_cmd->transfer_mode == synchronous){
+          if(rcd_sys != 0){
+            (void)fprintf(stderr,"%s: ERROR Synchronous fetch command failed\n",nco_prg_nm_get());
+            nco_exit(EXIT_FAILURE);
+          } /* end if */
+        }else{
+          /* This is appropriate place to insert invocation of shell command
+          to retrieve file asynchronously and then to return status to NCO synchronously. */
+
+          int fl_sz_crr=-2;
+          int fl_sz_ntl=-1;
+          int tm_nbr=100; /* Maximum number of sleep periods before error exit */
+          int tm_idx;
+          int tm_sleep_scn=10; /* [s] Seconds per stat() check for successful return */
+#ifdef _MSC_VER
+          /* MSVC NB: Win32 Sleep() function measured in milliseconds, Linux sleep() function measured in seconds */
+          int tm_sleep_ms=tm_sleep_scn*1000; /* [ms] Milliseconds per stat() check for successful return */
+#endif /* !_MSC_VER */
+
+          /* Asynchronous retrieval uses sleep-and-poll technique */
+          for(tm_idx=0;tm_idx<tm_nbr;tm_idx++){
+            rcd_stt=stat(fl_nm_lcl,&stat_sct);
+            if(rcd_stt == 0){
+              /* What is current size of file? */
+              fl_sz_ntl=fl_sz_crr;
+              fl_sz_crr=stat_sct.st_size;
+              /* If file size does not change during entire sleep period, assume
+              file is completely retrieved. */
+              if(fl_sz_ntl == fl_sz_crr){
+                break;
+              } /* end if */
+            } /* end if */
+            /* Sleep for specified time */
+#ifdef _MSC_VER
+            (void)Sleep((unsigned)tm_sleep_ms);
+#else /* !_MSC_VER */
+            (void)sleep((unsigned)tm_sleep_scn);
+#endif /* !_MSC_VER */
+            if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,".");
+            (void)fflush(stderr);
+          } /* end for */
+          if(tm_idx == tm_nbr){
+            (void)fprintf(stderr,"%s: ERROR Maximum time (%d seconds = %.1f minutes) for asynchronous file retrieval exceeded.\n",nco_prg_nm_get(),tm_nbr*tm_sleep_scn,tm_nbr*tm_sleep_scn/60.0);
+            nco_exit(EXIT_FAILURE);
+          } /* end if */
+          if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"\n%s Retrieval successful after %d sleeps of %d seconds each = %.1f minutes\n",nco_prg_nm_get(),tm_idx,tm_sleep_scn,tm_idx*tm_sleep_scn/60.0);
+        } /* end else transfer mode is asynchronous */
+        *FL_RTR_RMT_LCN=True;
   }else{ /* end if input file did not exist locally */
-    *FILE_RETRIEVED_FROM_REMOTE_LOCATION=False;
+    *FL_RTR_RMT_LCN=False;
   } /* end if file was already on the local system */
 
-  if(dbg_lvl_get() >= nco_dbg_fl)
+  if(nco_dbg_lvl_get() >= nco_dbg_fl)
     if(DAP_URL && fl_pth_lcl)
-      (void)fprintf(stderr,"%s: INFO User-specified option \"-l %s\" was not used since input file was not retrieved from remote location\n",prg_nm_get(),fl_pth_lcl);
+      (void)fprintf(stderr,"%s: INFO User-specified option \"-l %s\" was not used since input file was not retrieved from remote location\n",nco_prg_nm_get(),fl_pth_lcl);
 
   if(!DAP_URL){
     /* File is (now, anyway) truly local---does local system have read permission? */
     if((fp_in=fopen(fl_nm_lcl,"r")) == NULL){
-      (void)fprintf(stderr,"%s: ERROR User does not have read permission for %s, or file does not exist\n",prg_nm_get(),fl_nm_lcl);
+      (void)fprintf(stderr,"%s: ERROR User does not have read permission for %s, or file does not exist\n",nco_prg_nm_get(),fl_nm_lcl);
       nco_exit(EXIT_FAILURE);
     }else{
       (void)fclose(fp_in);
     } /* end else */
-    
-      /* For local files, perform optional file diagnostics */
-    if(dbg_lvl_get() >= nco_dbg_std){
+
+    /* For local files, perform optional file diagnostics */
+    if(nco_dbg_lvl_get() >= nco_dbg_std){
       char *fl_nm_cnc=NULL; /* [sng] Canonical file name */
       /* Determine canonical filename and properties */
       fl_nm_cnc=nco_fl_info_get(fl_nm_lcl);
       if(fl_nm_cnc) fl_nm_cnc=(char *)nco_free(fl_nm_cnc);
     } /* endif dbg */
-    
+
   } /* end if file is truly local */
-  
-    /* Free input filename space */
+
+  /* Free input filename space */
   fl_nm=(char *)nco_free(fl_nm);
 
   /* Return local filename */
@@ -966,23 +1136,33 @@ nco_fl_mv /* [fnc] Move first file to second */
  const char * const fl_dst) /* I [sng] Name of destination file */
 {
   /* Purpose: Move first file to second */
-  char *mv_cmd;
-  const char mv_cmd_fmt[]="mv -f %s %s";
-
-  int rcd_sys; /* [rcd] Return code for system() */
+  char *cmd_mv;
+#ifdef _MSC_VER
+  const char cmd_mv_fmt[]="move %s %s";
+#else /* !_MSC_VER */
+  const char cmd_mv_fmt[]="mv -f %s %s";
+#endif /* !_MSC_VER */
+
+  int rcd_sys; /* [rcd] Return code from system() */
   const int fmt_chr_nbr=4;
 
+  /* Only bother to perform system() call if files are not identical */
+  if(!strcmp(fl_src,fl_dst)){
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Temporary and final files %s are identical---no need to move.\n",nco_prg_nm_get(),fl_src);
+    return;
+  } /* end if */
+
   /* Construct and execute copy command */
-  mv_cmd=(char *)nco_malloc((strlen(mv_cmd_fmt)+strlen(fl_src)+strlen(fl_dst)-fmt_chr_nbr+1UL)*sizeof(char));
-  if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Moving %s to %s...",prg_nm_get(),fl_src,fl_dst);
-  (void)sprintf(mv_cmd,mv_cmd_fmt,fl_src,fl_dst);
-  rcd_sys=system(mv_cmd);
+  cmd_mv=(char *)nco_malloc((strlen(cmd_mv_fmt)+strlen(fl_src)+strlen(fl_dst)-fmt_chr_nbr+1UL)*sizeof(char));
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Moving %s to %s...",nco_prg_nm_get(),fl_src,fl_dst);
+  (void)sprintf(cmd_mv,cmd_mv_fmt,fl_src,fl_dst);
+  rcd_sys=system(cmd_mv);
   if(rcd_sys == -1){
-    (void)fprintf(stdout,"%s: ERROR nco_fl_mv() unable to execute mv command \"%s\"\n",prg_nm_get(),mv_cmd);
+    (void)fprintf(stdout,"%s: ERROR nco_fl_mv() unable to execute mv command \"%s\"\n",nco_prg_nm_get(),cmd_mv);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  mv_cmd=(char *)nco_free(mv_cmd);
-  if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"done\n");
+  cmd_mv=(char *)nco_free(cmd_mv);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"done\n");
 } /* end nco_fl_mv() */
 
 char * /* O [sng] Name of file to retrieve */
@@ -999,9 +1179,7 @@ nco_fl_nm_prs /* [fnc] Construct file name from input arguments */
      Routine implements NINTAP-style specification by using static
      memory to avoid repetition in construction of filename */
 
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
-
-  static short FIRST_INVOCATION=True;
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
   static char *fl_nm_1st_dgt;
   static char *fl_nm_nbr_sng;
@@ -1014,6 +1192,8 @@ nco_fl_nm_prs /* [fnc] Construct file name from input arguments */
   static int fl_nm_nbr_min;
   static int fl_nm_nbr_ttl;
 
+  static nco_bool FIRST_INVOCATION=True;
+
   /* Free any old filename space */
   fl_nm=(char *)nco_free(fl_nm);
 
@@ -1023,16 +1203,18 @@ nco_fl_nm_prs /* [fnc] Construct file name from input arguments */
       int fl_nm_sfx_lng=0;
 
       /* Parse abbreviation list analogously to CCM Processor ICP "NINTAP" */
-      if(fl_nbr) *fl_nbr=(int)strtol(fl_lst_abb[0],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-      if(*sng_cnv_rcd) nco_sng_cnv_err(fl_lst_abb[0],"strtol",sng_cnv_rcd);
-      fl_nm_nbr_ttl=*fl_nbr;
+      if(fl_nbr){
+	*fl_nbr=(int)strtol(fl_lst_abb[0],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+	if(*sng_cnv_rcd) nco_sng_cnv_err(fl_lst_abb[0],"strtol",sng_cnv_rcd);
+	fl_nm_nbr_ttl=*fl_nbr;
+      } /* endif */
 
       if(abb_arg_nbr > 1){
 	fl_nm_nbr_dgt=(int)strtol(fl_lst_abb[1],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
 	if(*sng_cnv_rcd) nco_sng_cnv_err(fl_lst_abb[1],"strtol",sng_cnv_rcd);
       }else{
 	fl_nm_nbr_dgt=3;
-      }/* end if */
+      } /* end if */
 
       if(abb_arg_nbr > 2){
 	fl_nm_nbr_ncr=(int)strtol(fl_lst_abb[2],&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
@@ -1100,11 +1282,28 @@ nco_fl_nm_prs /* [fnc] Construct file name from input arguments */
     char *fl_nm_stub;
 
     fl_nm_stub=fl_nm;
-
     /* Allocate enough room for joining slash '/' and terminating NUL */
     fl_nm=(char *)nco_malloc((strlen(fl_nm_stub)+strlen(fl_pth)+2)*sizeof(char));
     (void)strcpy(fl_nm,fl_pth);
+#ifdef _MSC_VER 
+    nco_bool is_url;
+    char *sng;
+
+    /* Remote access detection; this should be replaced with NC_testurl; DAP-URL = "http://" host [ ":" port ] [ abs-path ] */
+    if(strlen(fl_pth) < 8UL) is_url=False; else{
+      sng=(char *)nco_malloc(8);
+      sng=strncpy(sng,fl_pth,8);
+      sng[7]='\0';    
+      if(!strcmp("http://",sng)) is_url=True; else is_url=False;
+      sng=(char *)nco_free(sng);
+    } /* end else */
+
+    /* Windows uses backslash for path separator; escape the character */
+    if(is_url) (void)strcat(fl_nm,"/"); else (void)strcat(fl_nm,"\\");
+   
+#else /* !_MSC_VER */
     (void)strcat(fl_nm,"/");
+#endif /* !_MSC_VER */
     (void)strcat(fl_nm,fl_nm_stub);
 
     /* Free filestub space */
@@ -1115,27 +1314,71 @@ nco_fl_nm_prs /* [fnc] Construct file name from input arguments */
   return(fl_nm);
 } /* end nco_fl_nm_prs() */
 
+int /* [rcd] Return code */
+nco_fl_open /* [fnc] Open file using appropriate buffer size hints and verbosity */
+(const char * const fl_nm, /* I [sng] Name of file to open */
+ const int md_open, /* I [enm] Mode flag for nc_open() call */
+ const size_t * const bfr_sz_hnt, /* I [B] Buffer size hint */
+ int * const nc_id) /* O [id] File ID */
+{
+  /* Purpose: Open file using appropriate buffer size hints and verbosity
+     ncks -O -D 3 --bfr_sz=8192 ~/nco/data/in.nc ~/foo.nc */
+
+  int rcd=NC_NOERR; /* [rcd] Return code */
+
+  nco_bool flg_rqs_vrb_mpl; /* [flg] Sufficiently verbose implicit request */
+  nco_bool flg_rqs_vrb_xpl; /* [flg] Sufficiently verbose explicit request */
+
+  size_t bfr_sz_hnt_lcl; /* [B] Buffer size hint */
+
+  /* Initialize local buffer size hint with user-input value */
+  bfr_sz_hnt_lcl= (bfr_sz_hnt) ? *bfr_sz_hnt : NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
+
+  /* Is request implicit and sufficiently verbose? */
+  flg_rqs_vrb_mpl = ((bfr_sz_hnt == NULL || *bfr_sz_hnt == NC_SIZEHINT_DEFAULT) && nco_dbg_lvl_get() >= nco_dbg_var) ? True : False;
+
+  /* Is request explicit and sufficiently verbose? */
+  flg_rqs_vrb_xpl = ((bfr_sz_hnt != NULL && *bfr_sz_hnt != NC_SIZEHINT_DEFAULT) && nco_dbg_lvl_get() >= nco_dbg_fl ) ? True : False;
+
+  /* Print implicit or explicit buffer request depending on debugging level */
+  if(flg_rqs_vrb_mpl) (void)fprintf(stderr,"%s: INFO nc__open() will request file buffer of default size\n",nco_prg_nm_get()); 
+  if(flg_rqs_vrb_xpl) (void)fprintf(stderr,"%s: INFO nc__open() will request file buffer size = %lu bytes\n",nco_prg_nm_get(),(unsigned long)*bfr_sz_hnt); 
+
+  /* Pass local copy of size hint otherwise user-specified value is overwritten on first call */
+  rcd=nco__open(fl_nm,md_open,&bfr_sz_hnt_lcl,nc_id);
+  
+  /* Print results using same verbosity criteria
+     NB: bfr_sz_hnt_lcl is never NULL because nco__open() always returns a valid size */
+  if(flg_rqs_vrb_mpl || flg_rqs_vrb_xpl) (void)fprintf(stderr,"%s: INFO nc__open() opened file with buffer size = %lu bytes\n",nco_prg_nm_get(),(unsigned long)bfr_sz_hnt_lcl);
+
+  return rcd;
+} /* end nco_fl_open */
+
 char * /* O [sng] Name of temporary file actually opened */
 nco_fl_out_open /* [fnc] Open output file subject to availability and user input */
 (const char * const fl_out, /* I [sng] Name of file to open */
  const nco_bool FORCE_APPEND, /* I [flg] Append to existing file, if any */
  const nco_bool FORCE_OVERWRITE, /* I [flg] Overwrite existing file, if any */
  const int fl_out_fmt, /* I [enm] Output file format */
+ const size_t * const bfr_sz_hnt, /* I [B] Buffer size hint */
+ const int RAM_CREATE, /* I [flg] Create file in RAM */
+ const int RAM_OPEN, /* I [flg] Open (netCDF3) file(s) in RAM */
+ const int WRT_TMP_FL, /* I [flg] Write output to temporary file */
  int * const out_id) /* O [id] File ID */
 {
   /* Purpose: Open output file subject to availability and user input
-     In accord with netCDF philosophy, open temporary file named according
+     In accord with conservative NCO/netCDF philosophy, normally open temporary file named according 
      to fl_out and process ID so that errors cannot infect intended output file.
      Calling routine has responsibility to close and free fl_out_tmp */
 
   char *fl_out_tmp;
   char *pid_sng; /* String containing decimal representation of PID */
 
-  const char fnc_nm[]="nco_fl_out_open"; /* [sng] Function name */
+  const char fnc_nm[]="nco_fl_out_open()"; /* [sng] Function name */
   const char tmp_sng_1[]="pid"; /* Extra string appended to temporary filenames */
   const char tmp_sng_2[]="tmp"; /* Extra string appended to temporary filenames */
 
-  int nccreate_mode; /* [enm] Mode flag for nco_create() call */
+  int md_create; /* [enm] Mode flag for nco_create() call */
   int rcd=NC_NOERR; /* [rcd] Return code */
   int rcd_stt; /* [rcd] Return code */
 
@@ -1145,26 +1388,28 @@ nco_fl_out_open /* [fnc] Open output file subject to availability and user input
 
   pid_t pid; /* Process ID */
 
+  size_t bfr_sz_hnt_lcl; /* [B] Buffer size hint */
+
   struct stat stat_sct;
 
   /* Make sure output is possible */
 #ifndef ENABLE_NETCDF4
   if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC){
-    (void)fprintf(stdout,"%s: ERROR Requested netCDF4-format output file but NCO was not built with netCDF4 support\n",prg_nm_get());
-    (void)fprintf(stdout,"%s: HINT: Obtain or build a netCDF4-enabled version of NCO.  Try, e.g., ./configure --enable-netcdf4 ...;make;make install\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Requested netCDF4-format output file but NCO was built without netCDF4 support\n",nco_prg_nm_get());
+    (void)fprintf(stdout,"%s: HINT: Obtain or build a netCDF4-enabled version of NCO.  Try, e.g., ./configure --enable-netcdf4 ...;make;make install\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* netCDF4 */
 #endif /* ENABLE_NETCDF4 */
 
-  /* Set default clobber mode (clobber) then modify for specified file format */
-  nccreate_mode=NC_CLOBBER; /* [enm] Mode flag for nco_create() call */
-
+  /* Set default clobber mode then modify for specified file format */
+  md_create=NC_CLOBBER; /* [enm] Mode flag for nco_create() call */
   /* [fnc] Merge clobber mode with user-specified file format */
-  nccreate_mode=nco_create_mode_mrg(nccreate_mode,fl_out_fmt);
+  md_create=nco_create_mode_mrg(md_create,fl_out_fmt);
+  if(RAM_CREATE) md_create|=NC_DISKLESS|NC_WRITE;
 
   if(FORCE_OVERWRITE && FORCE_APPEND){
-    (void)fprintf(stdout,"%s: ERROR FORCE_OVERWRITE and FORCE_APPEND are both set\n",prg_nm_get());
-    (void)fprintf(stdout,"%s: HINT: Overwrite (-O) and Append (-A) options are mutually exclusive. Re-run your command, setting at most one of these switches.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR FORCE_OVERWRITE and FORCE_APPEND are both set\n",nco_prg_nm_get());
+    (void)fprintf(stdout,"%s: HINT: Overwrite (-O) and Append (-A) options are mutually exclusive. Re-run your command, setting at most one of these switches.\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* end if */
 
@@ -1173,27 +1418,27 @@ nco_fl_out_open /* [fnc] Open output file subject to availability and user input
      Maximum length of PID depends on pid_t
      Until about 1995 most OSs set pid_t = short = 16 or 32 bits
      Now some OSs have /usr/include/sys/types.h set pid_t = long = 32 or 64 bits
-     20000126: Use sizeof(pid_t) rather than hardcoded size to fix longstanding bug on SGIs
-  */
+     20000126: Use sizeof(pid_t) rather than hardcoded size to fix longstanding bug on SGIs */
+
   /* Maximum length of decimal representation of PID is number of bits in PID times log10(2) */
   pid_sng_lng_max=(long)ceil(8*sizeof(pid_t)*log10(2.0));
   pid_sng=(char *)nco_malloc((pid_sng_lng_max+1UL)*sizeof(char));
   pid=getpid();
   (void)sprintf(pid_sng,"%ld",(long)pid);
-  /* Theoretical length of decimal representation of PID is 1+ceil(log10(PID)) where the 1 is required iff PID is an exact power of 10 */
+  /* Theoretical length of decimal representation of PID is 1+ceil(log10(PID)) where the 1 is required iff PID is exact power of 10 */
   pid_sng_lng=1L+(long)ceil(log10((double)pid));
-  /* NCO temporary file name is user-specified file name + "." + tmp_sng_1 + PID + "." + prg_nm + "." + tmp_sng_2 + NUL */
-  fl_out_tmp_lng=strlen(fl_out)+1UL+strlen(tmp_sng_1)+strlen(pid_sng)+1UL+strlen(prg_nm_get())+1UL+strlen(tmp_sng_2)+1UL;
+  /* NCO temporary file name is user-specified file name + "." + tmp_sng_1 + PID + "." + nco_prg_nm + "." + tmp_sng_2 + NUL */
+  fl_out_tmp_lng=strlen(fl_out)+1UL+strlen(tmp_sng_1)+strlen(pid_sng)+1UL+strlen(nco_prg_nm_get())+1UL+strlen(tmp_sng_2)+1UL;
   /* NB: Calling routine has responsibility to free() this memory */
   fl_out_tmp=(char *)nco_malloc(fl_out_tmp_lng*sizeof(char));
-  (void)sprintf(fl_out_tmp,"%s.%s%s.%s.%s",fl_out,tmp_sng_1,pid_sng,prg_nm_get(),tmp_sng_2);
-  if(dbg_lvl_get() > 5) (void)fprintf(stdout,"%s: %s reports sizeof(pid_t) = %d bytes, pid = %ld, pid_sng_lng = %ld bytes, strlen(pid_sng) = %ld bytes, fl_out_tmp_lng = %ld bytes, strlen(fl_out_tmp) = %ld, fl_out_tmp = %s\n",prg_nm_get(),fnc_nm,(int)sizeof(pid_t),(long)pid,pid_sng_lng,(long)strlen(pid_sng),fl_out_tmp_lng,(long)strlen(fl_out_tmp),fl_out_tmp);
-  rcd_stt=stat(fl_out_tmp,&stat_sct);
+  (void)sprintf(fl_out_tmp,"%s.%s%s.%s.%s",fl_out,tmp_sng_1,pid_sng,nco_prg_nm_get(),tmp_sng_2);
+  if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: %s reports sizeof(pid_t) = %d bytes, pid = %ld, pid_sng_lng = %ld bytes, strlen(pid_sng) = %ld bytes, fl_out_tmp_lng = %ld bytes, strlen(fl_out_tmp) = %ld, fl_out_tmp = %s\n",nco_prg_nm_get(),fnc_nm,(int)sizeof(pid_t),(long)pid,pid_sng_lng,(long)strlen(pid_sng),fl_out_tmp_lng,(long)strlen(fl_out_tmp),fl_out_tmp);
 
   /* Free temporary memory */
   pid_sng=(char *)nco_free(pid_sng);
 
-  if(dbg_lvl_get() == 8){
+#ifndef _MSC_VER
+  if(nco_dbg_lvl_get() == nco_dbg_vec){
   /* Use built-in system routines to generate temporary filename
      This allows file to be built in fast directory like /tmp rather than local
      directory which could be a slow, NFS-mounted directories like /fs/cgd
@@ -1215,77 +1460,97 @@ nco_fl_out_open /* [fnc] Open output file subject to availability and user input
 #ifdef HAVE_MKSTEMP
     fl_out_hnd=mkstemp(fl_out_tmp_sys);
 #else /* !HAVE_MKSTEMP */
-    /* 20020812: Cray does not support mkstemp() */
+    /* 20020812: Cray OS does not support mkstemp() */
     fl_out_hnd=creat(mktemp(fl_out_tmp_sys),0600);
 #endif /* !HAVE_MKSTEMP */
     fl_out_hnd=fl_out_hnd; /* Removes compiler warning on SGI */
-    if(dbg_lvl_get() > 2) (void)fprintf(stdout,"%s: %s reports strlen(fl_out_tmp_sys) = %ld, fl_out_tmp_sys = %s, \n",prg_nm_get(),fnc_nm,(long)strlen(fl_out_tmp_sys),fl_out_tmp_sys);
+    if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s: %s reports strlen(fl_out_tmp_sys) = %ld, fl_out_tmp_sys = %s, \n",nco_prg_nm_get(),fnc_nm,(long)strlen(fl_out_tmp_sys),fl_out_tmp_sys);
     fl_out_tmp_sys=(char *)nco_free(fl_out_tmp_sys);
   } /* endif dbg */
+#endif /* _MSC_VER */ 
 
-  /* If temporary file already exists, prompt user to remove temporary files and exit */
-  if(rcd_stt != -1){
-    (void)fprintf(stdout,"%s: ERROR temporary file %s already exists, remove and try again\n",prg_nm_get(),fl_out_tmp);
-    nco_exit(EXIT_FAILURE);
-  } /* end if */
+  if(WRT_TMP_FL){
+    /* If temporary file already exists, prompt user to remove temporary files and exit */
+    rcd_stt=stat(fl_out_tmp,&stat_sct);
+    if(rcd_stt != -1){
+      (void)fprintf(stdout,"%s: ERROR temporary file %s already exists, remove and try again\n",nco_prg_nm_get(),fl_out_tmp);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+  }else{ /* !WRT_TMP_FL */
+    /* Name "temporary output file" same as final output file et voilà, no temporary file! */
+    (void)strcpy(fl_out_tmp,fl_out);
+  } /* !WRT_TMP_FL */
+
+  /* Initialize local buffer size hint with user-input value */
+  bfr_sz_hnt_lcl= (bfr_sz_hnt) ? *bfr_sz_hnt : NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
 
   if(FORCE_OVERWRITE){
-    rcd+=nco_create(fl_out_tmp,nccreate_mode,out_id);
-    /*    rcd+=nco_create(fl_out_tmp,nccreate_mode|NC_SHARE,out_id);*/
+    rcd+=nco__create(fl_out_tmp,md_create,NC_SIZEHINT_DEFAULT,&bfr_sz_hnt_lcl,out_id);
     return fl_out_tmp;
   } /* end if */
 
+  /* Following code block could be potentially be used by ncrename and ncatted
+     Doing so would align file I/O for these operators with rest of NCO
+     However, this would also require abandoning their "special treatment"
+     which both requires them to work on local (not remote or DAP) files, 
+     and prevents them from creating intermediate files.
+     Changing towards greater NCO-wide consistency would be a good thing? 
+     No complaints yet about ncatted/ncrename locality requirement, though */
   if(False){
-    if(prg_get() == ncrename){
+    if(nco_prg_id_get() == ncrename || nco_prg_id_get() == ncatted){
       /* ncrename and ncatted allow single filename without question */
       /* Incur expense of copying current file to temporary file */
+      int md_open; /* [enm] Mode flag for nc_open() call */
       (void)nco_fl_cp(fl_out,fl_out_tmp);
-      rcd+=nco_open(fl_out_tmp,NC_WRITE,out_id);
+      if(RAM_OPEN) md_open=NC_WRITE|NC_DISKLESS; else md_open=NC_WRITE;
+      rcd+=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt_lcl,out_id);
       (void)nco_redef(*out_id);
       return fl_out_tmp;
     } /* end if */
   } /* end if false */
 
+  /* If permanent output file already exists, query user whether to overwrite, append, or exit */
   rcd_stt=stat(fl_out,&stat_sct);
-
-  /* If permanent file already exists, query user whether to overwrite, append, or exit */
   if(rcd_stt != -1){
     char *rcd_fgets=NULL; /* Return code from fgets */
-#define USR_RPL_MAX_LNG 10 /* [nbr] Maximum length for user reply */
-#define USR_RPL_MAX_NBR 10 /* [nbr] Maximum number of chances for user to reply */
-    char usr_rpl[USR_RPL_MAX_LNG];
+    char usr_rpl[NCO_USR_RPL_MAX_LNG];
+    int md_open; /* [enm] Mode flag for nc_open() call */
     int usr_rpl_int;
     short nbr_itr=0;
     size_t usr_rpl_lng;
-
+    
     /* Initialize user reply string */
     usr_rpl[0]='z';
     usr_rpl[1]='\0';
 
+    if(RAM_OPEN) md_open=NC_WRITE|NC_DISKLESS; else md_open=NC_WRITE;
+
     if(FORCE_APPEND){
-      /* Incur expense of copying current file to temporary file */
+      /* Incur expense of copying current file to temporary file
+	 This is a no-op when files are identical */
       (void)nco_fl_cp(fl_out,fl_out_tmp);
-      rcd+=nco_open(fl_out_tmp,NC_WRITE,out_id);
+      rcd+=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt_lcl,out_id);
       (void)nco_redef(*out_id);
       return fl_out_tmp;
     } /* end if */
 
     /* Ensure one exit condition for each valid switch in following case statement */
     while(strcasecmp(usr_rpl,"o") && strcasecmp(usr_rpl,"a") && strcasecmp(usr_rpl,"e")){
+      /* fxm: i18n necessary here */
       /* int cnv_nbr; *//* [nbr] Number of scanf conversions performed this scan */
-      if(nbr_itr++ > USR_RPL_MAX_NBR){
-	(void)fprintf(stdout,"\n%s: ERROR %d failed attempts to obtain valid interactive input. Assuming non-interactive shell and exiting.\n",prg_nm_get(),nbr_itr-1);
+      if(nbr_itr++ > NCO_MAX_NBR_USR_INPUT_RETRY){
+	(void)fprintf(stdout,"\n%s: ERROR %d failed attempts to obtain valid interactive input. Assuming non-interactive shell and exiting.\n",nco_prg_nm_get(),nbr_itr-1);
 	nco_exit(EXIT_FAILURE);
       } /* end if */
-      if(nbr_itr > 1) (void)fprintf(stdout,"%s: ERROR Invalid response.\n",prg_nm_get());
-      (void)fprintf(stdout,"%s: %s exists---`e'xit, `o'verwrite (i.e., delete existing file), or `a'ppend (i.e., replace duplicate variables in and add new variables to existing file) (e/o/a)? ",prg_nm_get(),fl_out);
+      if(nbr_itr > 1) (void)fprintf(stdout,"%s: ERROR Invalid response.\n",nco_prg_nm_get());
+      (void)fprintf(stdout,"%s: %s exists---`e'xit, `o'verwrite (i.e., delete existing file), or `a'ppend (i.e., replace duplicate variables in and add new variables to existing file) (e/o/a)? ",nco_prg_nm_get(),fl_out);
       (void)fflush(stdout);
-      /*       fgets() reads (at most one less than USR_RPL_MAX_LNG) to first newline or EOF */
-      rcd_fgets=fgets(usr_rpl,USR_RPL_MAX_LNG,stdin);
+      /*       fgets() reads (at most one less than NCO_USR_RPL_MAX_LNG) to first newline or EOF */
+      rcd_fgets=fgets(usr_rpl,NCO_USR_RPL_MAX_LNG,stdin);
       /*       fscanf() reads ... */
       /*      while((cnv_nbr=fscanf(stdin,"%9s",usr_rpl)) != EOF) continue;*/
-      /*      while((rcd_fgets=fgets(usr_rpl,USR_RPL_MAX_LNG,stdin)) == NULL){*/
-	/*	if(dbg_lvl_get() > 2) (void)fprintf(stderr,"%s: DEBUG Read \"%s\" while waiting for non-NULL on stdin...\n",prg_nm_get(),(rcd_fgets == NULL) ? "NULL" : usr_rpl);*/
+      /*      while((rcd_fgets=fgets(usr_rpl,NCO_USR_RPL_MAX_LNG,stdin)) == NULL){*/
+	/*	if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Read \"%s\" while waiting for non-NULL on stdin...\n",nco_prg_nm_get(),(rcd_fgets == NULL) ? "NULL" : usr_rpl);*/
       /*      continue;}*/
 
       /* Ensure last character in input string is \n and replace that with \0 */
@@ -1294,8 +1559,8 @@ nco_fl_out_open /* [fnc] Open output file subject to availability and user input
 	if(usr_rpl[usr_rpl_lng-1] == '\n')
 	    usr_rpl[usr_rpl_lng-1]='\0';
 
-      if(dbg_lvl_get() == 3) (void)fprintf(stdout,"%s: INFO %s reports that fgets() read \"%s\" (after removing trailing newline) from stdin\n",prg_nm_get(),fnc_nm,(rcd_fgets == NULL) ? "NULL" : usr_rpl);
-    } /* end while */
+      if(nco_dbg_lvl_get() == nco_dbg_scl) (void)fprintf(stdout,"%s: INFO %s reports that fgets() read \"%s\" (after removing trailing newline) from stdin\n",nco_prg_nm_get(),fnc_nm,(rcd_fgets == NULL) ? "NULL" : usr_rpl);
+    } /* end while user reply is not yet "o", "a", or "e" */
 
     /* Ensure one case statement for each exit condition in preceding while loop */
     usr_rpl_int=(int)usr_rpl[0];
@@ -1306,24 +1571,23 @@ nco_fl_out_open /* [fnc] Open output file subject to availability and user input
       break;
     case 'O':
     case 'o':
-      rcd+=nco_create(fl_out_tmp,nccreate_mode,out_id);
-      /*    rcd+=nco_create(fl_out_tmp,nccreate_mode|NC_SHARE,out_id);*/
+      rcd+=nco__create(fl_out_tmp,md_create,NC_SIZEHINT_DEFAULT,&bfr_sz_hnt_lcl,out_id);
       break;
     case 'A':
     case 'a':
       /* Incur expense of copying current file to temporary file */
       (void)nco_fl_cp(fl_out,fl_out_tmp);
-      rcd+=nco_open(fl_out_tmp,NC_WRITE,out_id);
+      rcd+=nco_fl_open(fl_out_tmp,md_open,&bfr_sz_hnt_lcl,out_id);
       (void)nco_redef(*out_id);
       break;
     default: nco_dfl_case_nc_type_err(); break;
     } /* end switch */
 
-  }else{ /* Output file does not yet already exist */
-    nccreate_mode=NC_NOCLOBBER;
-    nccreate_mode=nco_create_mode_mrg(nccreate_mode,fl_out_fmt);
-    rcd+=nco_create(fl_out_tmp,nccreate_mode,out_id);
-    /*    rcd+=nco_create(fl_out_tmp,nccreate_mode|NC_SHARE,out_id);*/
+  }else{ /* Output file does not already exist */
+    md_create=NC_NOCLOBBER;
+    md_create=nco_create_mode_mrg(md_create,fl_out_fmt);
+    if(RAM_CREATE) md_create|=NC_DISKLESS|NC_WRITE;
+    rcd+=nco__create(fl_out_tmp,md_create,NC_SIZEHINT_DEFAULT,&bfr_sz_hnt_lcl,out_id);
   } /* end if output file does not already exist */
 
   if(rcd != NC_NOERR) nco_err_exit(rcd,fnc_nm);
@@ -1343,11 +1607,17 @@ nco_fl_out_cls /* [fnc] Close temporary output file, move it to permanent output
 
   rcd=nco_close(nc_id);
   if(rcd != NC_NOERR){
-    (void)fprintf(stdout,"%s: ERROR nco_fl_out_cls() is unable to nco_close() file %s\n",prg_nm_get(),fl_out_tmp);
+    (void)fprintf(stdout,"%s: ERROR nco_fl_out_cls() is unable to nco_close() file %s\n",nco_prg_nm_get(),fl_out_tmp);
     nco_exit(EXIT_FAILURE);
   } /* end if */
 
-  (void)nco_fl_mv(fl_out_tmp,fl_out);
+  /* Only bother to perform system() call if files are not identical */
+  if(!strcmp(fl_out_tmp,fl_out)){
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Temporary and final files %s are identical---no need to move.\n",nco_prg_nm_get(),fl_out);
+    return;
+  }else{
+    (void)nco_fl_mv(fl_out_tmp,fl_out);
+  } /* end if */
 
 } /* end nco_fl_out_cls() */
 
@@ -1358,15 +1628,19 @@ nco_fl_rm /* [fnc] Remove file */
   /* Purpose: Remove specified file from local system */
   int rcd;
   char *rm_cmd;
+#ifdef _MSC_VER
+  const char rm_cmd_sys_dep[]="del /F";
+#else /* !_MSC_VER */
   const char rm_cmd_sys_dep[]="rm -f";
+#endif /* !_MSC_VER */
 
   /* Remember to add one for the space and one for the terminating NUL character */
   rm_cmd=(char *)nco_malloc((strlen(rm_cmd_sys_dep)+1UL+strlen(fl_nm)+1UL)*sizeof(char));
   (void)sprintf(rm_cmd,"%s %s",rm_cmd_sys_dep,fl_nm);
 
-  if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: DEBUG Removing %s with %s\n",prg_nm_get(),fl_nm,rm_cmd);
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: DEBUG Removing %s with %s\n",nco_prg_nm_get(),fl_nm,rm_cmd);
   rcd=system(rm_cmd);
-  if(rcd == -1) (void)fprintf(stderr,"%s: WARNING unable to remove %s, continuing anyway...\n",prg_nm_get(),fl_nm);
+  if(rcd == -1) (void)fprintf(stderr,"%s: WARNING unable to remove %s, continuing anyway...\n",nco_prg_nm_get(),fl_nm);
 
   rm_cmd=(char *)nco_free(rm_cmd);
 } /* end nco_fl_rm() */
diff --git a/src/nco/nco_fl_utl.h b/src/nco/nco_fl_utl.h
index 34886ae..03d7810 100644
--- a/src/nco/nco_fl_utl.h
+++ b/src/nco/nco_fl_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_fl_utl.h,v 1.46 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_fl_utl.h,v 1.72 2013/01/19 04:29:16 zender Exp $ */
 
 /* Purpose: File manipulation */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -17,19 +17,29 @@
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard header files */
+#include <errno.h> /* system/library error diagnostics, errno */
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* strcasecmp() */
+#endif /* !HAVE_STRINGS_H */
 #include <sys/stat.h> /* stat() */
-#include <unistd.h> /* POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+# include <netinet/in.h> /* needed for _res */
+# include <pwd.h> /* password structures for getpwuid() */
+#endif /* !_MSC_VER */
+#ifdef _MSC_VER
+# include <process.h> /* MSVC getpid() */
+typedef int pid_t;
+#endif /* !_MSC_VER */
 
 #include <sys/types.h> /* needed for _res */
-#include <netinet/in.h> /* needed for _res */
-#include <pwd.h> /* password structures for getpwuid() */
 #ifndef WIN32
-#include <arpa/nameser.h> /* needed for _res */
-#include <resolv.h> /* Internet structures for _res */
+# include <arpa/nameser.h> /* needed for _res */
+# include <resolv.h> /* Internet structures for _res */
 #endif /* !WIN32 */
 
 /* 3rd party vendors */
@@ -42,13 +52,23 @@
 #include "nco_mmr.h" /* Memory management */
 #include "nco_sng_utl.h" /* String utilities */
 
+/* 20120301: Replace multiple instances of hard-coded retry limit with CPP token NCO_MAX_NBR_USR_INPUT_RETRY */
+#ifndef NCO_MAX_NBR_USR_INPUT_RETRY
+# define NCO_MAX_NBR_USR_INPUT_RETRY 10
+#endif /* NCO_MAX_NBR_USR_INPUT_RETRY */
+
+/* 20120301: Replace multiple instances of hard-coded reply length limit with CPP token NCO_USR_RPL_MAX_LNG */
+#ifndef NCO_USR_RPL_MAX_LNG
+# define NCO_USR_RPL_MAX_LNG 10
+#endif /* NCO_USR_RPL_MAX_LNG */
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
 int /* O [enm] Mode flag for nco_create() call */
 nco_create_mode_mrg /* [fnc] Merge clobber mode with user-specified file format */
-(const int clobber_mode, /* I [enm] Clobber mode (NC_CLOBBER or NC_NOCLOBBER) */
+(const int md_clobber, /* I [enm] Clobber mode (NC_CLOBBER or NC_NOCLOBBER) */
  const int fl_out_fmt); /* I [enm] Output file format */
 
 int /* [rcd] Return code */
@@ -60,11 +80,19 @@ void
 nco_fl_cmp_err_chk(void); /* [fnc] Perform error checking on file */
 
 void
+nco_fl_chmod /* [fnc] Ensure file is user/owner-writable */
+(const char * const fl_nm); /* I [sng] Name of file */
+
+void
 nco_fl_cp /* [fnc] Copy first file to second */
 (const char * const fl_src, /* I [sng] Name of source file to copy */
  const char * const fl_dst); /* I [sng] Name of destination file */
 
 void
+nco_fl_overwrite_prm /* [fnc] Obtain user consent to overwrite output file */
+(const char * const fl_nm); /* I [sng] Name of file */
+
+void
 nco_fl_fmt_vet /* [fnc] Verify output file format supports requested actions */
 (const int fl_fmt, /* I [enm] Output file format */
  const int cnk_nbr, /* I [nbr] Number of chunksizes specified */
@@ -87,7 +115,7 @@ char * /* O [sng] Filename of locally available file */
 nco_fl_mk_lcl /* [fnc] Retrieve input file and return local filename */
 (char *fl_nm, /* I/O [sng] Current filename, if any (destroyed) */
  const char * const fl_pth_lcl, /* I [sng] Local storage area for files retrieved from remote locations */
- nco_bool * const FILE_RETRIEVED_FROM_REMOTE_LOCATION); /* O [flg] File was retrieved from remote location */
+ nco_bool * const FL_RTR_RMT_LCN); /* O [flg] File was retrieved from remote location */
 
 void
 nco_fl_mv /* [fnc] Move first file to second */
@@ -110,6 +138,10 @@ nco_fl_out_open /* [fnc] Open output file subject to availability and user input
  const nco_bool FORCE_APPEND, /* I [flg] Append to existing file, if any */
  const nco_bool FORCE_OVERWRITE, /* I [flg] Overwrite existing file, if any */
  const int fl_out_fmt, /* I [enm] Output file format */
+ const size_t * const bfr_sz_hnt, /* I [B] Buffer size hint */
+ const int RAM_CREATE, /* I [flg] Create file in RAM */
+ const int RAM_OPEN, /* I [flg] Open (netCDF3) file(s) in RAM */
+ const int WRT_TMP_FL, /* I [flg] Write output to temporary file */
  int * const out_id); /* O [id] File ID */
 
 void
@@ -122,6 +154,12 @@ void
 nco_fl_rm /* [fnc] Remove file */
 (char *fl_nm); /* I [sng] File to be removed */
 
+int /* [rcd] Return code */
+nco_fl_open /* [fnc] Open file using appropriate buffer size hints and verbosity */
+(const char * const fl_nm, /* I [sng] Name of file to open */
+ const int md_open, /* I [enm] Mode flag for nc_open() call */
+ const size_t * const bfr_sz_hnt, /* I [B] Buffer size hint */
+ int * const nc_id); /* O [id] File ID */
 
 #ifdef __cplusplus
 } /* end extern "C" */
diff --git a/src/nco/nco_grp_trv.c b/src/nco/nco_grp_trv.c
new file mode 100644
index 0000000..da7a57a
--- /dev/null
+++ b/src/nco/nco_grp_trv.c
@@ -0,0 +1,857 @@
+/* $Header: /cvsroot/nco/nco/src/nco/nco_grp_trv.c,v 1.250 2013/12/02 20:14:49 zender Exp $ */
+
+/* Purpose: netCDF4 traversal storage */
+
+/* Copyright (C) 2011--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
+
+/* Testing:
+   ncks -D 1 ~/nco/data/in_grp.nc */
+
+/* This file contains the API for low level group data structures:
+   Group Traversal Table (GTT): functions prefixed with "trv_tbl_"
+   It does not include any netCDF API calls */
+
+#include "nco_grp_trv.h" /* Group traversal */
+
+void                          
+trv_tbl_init                           /* [fnc] GTT initialize */
+(trv_tbl_sct **tbl)                    /* I/O [sct] Traversal table */
+{
+  trv_tbl_sct *tb=(trv_tbl_sct *)nco_malloc(sizeof(trv_tbl_sct));
+
+  /* Object (group/variable) list */
+  tb->nbr=0;
+  tb->lst=NULL; 
+
+  /* Dimension list */
+  tb->nbr_dmn=0;
+  tb->lst_dmn=NULL;
+
+  /* Degenerate dimensions used by ncwa */
+  tb->nbr_dmn_dgn=0;
+  tb->dmn_dgn=NULL;
+
+  /* Record dimensions used by ncra */
+  tb->nbr_rec=0;
+  tb->lmt_rec=NULL;
+
+  /* Ensembles */
+  tb->nsm_nbr=0;
+  tb->nsm=NULL;
+  tb->nsm_sfx=NULL;
+
+  *tbl=tb;
+} /* trv_tbl_init() */
+ 
+void 
+trv_tbl_free                           /* [fnc] GTT free memory */
+(trv_tbl_sct *tbl)                     /* I [sct] Traversal table */
+{
+
+  /* Object (group/variable) list */
+  for(unsigned idx=0;idx<tbl->nbr;idx++){
+    tbl->lst[idx].nm_fll=(char *)nco_free(tbl->lst[idx].nm_fll);
+    tbl->lst[idx].grp_nm_fll=(char *)nco_free(tbl->lst[idx].grp_nm_fll);
+    tbl->lst[idx].grp_nm_fll_prn=(char *)nco_free(tbl->lst[idx].grp_nm_fll_prn);
+    tbl->lst[idx].nsm_nm=(char *)nco_free(tbl->lst[idx].nsm_nm);
+    tbl->lst[idx].rec_dmn_nm_out=(char *)nco_free(tbl->lst[idx].rec_dmn_nm_out);
+    tbl->lst[idx].hsh_key=(char *)nco_free(tbl->lst[idx].hsh_key);
+
+    /* Dimensions */
+    for(int dmn_idx=0;dmn_idx<tbl->lst[idx].nbr_dmn;dmn_idx++){
+      tbl->lst[idx].var_dmn[dmn_idx].dmn_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].dmn_nm_fll);
+      tbl->lst[idx].var_dmn[dmn_idx].dmn_nm=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].dmn_nm);
+      tbl->lst[idx].var_dmn[dmn_idx].grp_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].grp_nm_fll);
+
+      /* Coordinate structure */ 
+      if(tbl->lst[idx].var_dmn[dmn_idx].crd){
+        tbl->lst[idx].var_dmn[dmn_idx].crd->crd_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd->crd_nm_fll);
+        tbl->lst[idx].var_dmn[dmn_idx].crd->dmn_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd->dmn_nm_fll);
+        tbl->lst[idx].var_dmn[dmn_idx].crd->crd_grp_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd->crd_grp_nm_fll);
+        tbl->lst[idx].var_dmn[dmn_idx].crd->dmn_grp_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd->dmn_grp_nm_fll);
+
+        tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.dmn_nm=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.dmn_nm);
+
+        for(int lmt_idx=0;lmt_idx<tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.lmt_dmn_nbr;lmt_idx++){
+          tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.lmt_dmn[lmt_idx]=nco_lmt_free(tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.lmt_dmn[lmt_idx]);
+        }  
+        tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.lmt_dmn=(lmt_sct **)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd->lmt_msa.lmt_dmn);
+        tbl->lst[idx].var_dmn[dmn_idx].crd=(crd_sct *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].crd);
+      } /* Coordinate structure */ 
+
+    } /* Dimensions */
+  } /* Object (group/variable) list */ 
+
+  tbl->lst=(trv_sct *)nco_free(tbl->lst);
+
+  /* Dimension list */
+  for(unsigned int dmn_idx=0;dmn_idx<tbl->nbr_dmn;dmn_idx++){
+    tbl->lst_dmn[dmn_idx].nm_fll=(char *)nco_free(tbl->lst_dmn[dmn_idx].nm_fll);
+    tbl->lst_dmn[dmn_idx].grp_nm_fll=(char *)nco_free(tbl->lst_dmn[dmn_idx].grp_nm_fll);
+    tbl->lst_dmn[dmn_idx].lmt_msa.dmn_nm=(char *)nco_free(tbl->lst_dmn[dmn_idx].lmt_msa.dmn_nm);
+
+    for(int lmt_idx=0;lmt_idx<tbl->lst_dmn[dmn_idx].lmt_msa.lmt_dmn_nbr;lmt_idx++)
+      tbl->lst_dmn[dmn_idx].lmt_msa.lmt_dmn[lmt_idx]=nco_lmt_free(tbl->lst_dmn[dmn_idx].lmt_msa.lmt_dmn[lmt_idx]);
+
+    /* Total number of coordinate variables for this dimension */
+    int crd_nbr=tbl->lst_dmn[dmn_idx].crd_nbr;
+
+    /* Coordinate structures */ 
+    for(int crd_idx=0;crd_idx<crd_nbr;crd_idx++){
+      tbl->lst_dmn[dmn_idx].crd[crd_idx]->crd_nm_fll=(char *)nco_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]->crd_nm_fll);
+      tbl->lst_dmn[dmn_idx].crd[crd_idx]->dmn_nm_fll=(char *)nco_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]->dmn_nm_fll);
+      tbl->lst_dmn[dmn_idx].crd[crd_idx]->crd_grp_nm_fll=(char *)nco_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]->crd_grp_nm_fll);
+      tbl->lst_dmn[dmn_idx].crd[crd_idx]->dmn_grp_nm_fll=(char *)nco_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]->dmn_grp_nm_fll);
+
+      tbl->lst_dmn[dmn_idx].crd[crd_idx]->lmt_msa.dmn_nm=(char *)nco_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]->lmt_msa.dmn_nm);
+
+      for(int lmt_idx=0;lmt_idx<tbl->lst_dmn[dmn_idx].crd[crd_idx]->lmt_msa.lmt_dmn_nbr;lmt_idx++)
+        tbl->lst_dmn[dmn_idx].crd[crd_idx]->lmt_msa.lmt_dmn[lmt_idx]=nco_lmt_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]->lmt_msa.lmt_dmn[lmt_idx]);
+
+      tbl->lst_dmn[dmn_idx].crd[crd_idx]=(crd_sct *)nco_free(tbl->lst_dmn[dmn_idx].crd[crd_idx]);
+    }  /* Coordinate structures */
+
+    tbl->lst_dmn[dmn_idx].crd=(crd_sct **)nco_free(tbl->lst_dmn[dmn_idx].crd);
+  } /* Dimension list */
+
+  tbl->lst_dmn=(dmn_trv_sct *)nco_free(tbl->lst_dmn);
+
+  /* Members used only by transformation operators (non-ncks) */
+
+  /* (ncra) Record dimensions */
+  for(int idx=0;idx<tbl->nbr_rec;idx++)
+    tbl->lmt_rec[idx]=nco_lmt_free(tbl->lmt_rec[idx]);
+
+  /* (ncwa) Degenerate dimensions */
+  tbl->dmn_dgn=(dmn_sct *)nco_free(tbl->dmn_dgn); 
+
+  /* Ensembles */
+  for(int idx_nsm=0;idx_nsm<tbl->nsm_nbr;idx_nsm++){
+    tbl->nsm[idx_nsm].grp_nm_fll_prn=(char *)nco_free(tbl->nsm[idx_nsm].grp_nm_fll_prn);
+
+    for(int idx_var_mbr=0;idx_var_mbr<tbl->nsm[idx_nsm].mbr_var_nbr;idx_var_mbr++){
+      tbl->nsm[idx_nsm].var_mbr_fll[idx_var_mbr]=(char *)nco_free(tbl->nsm[idx_nsm].var_mbr_fll[idx_var_mbr]);
+    }
+
+    for(int idx_var_mbr=0;idx_var_mbr<tbl->nsm[idx_nsm].mbr_nbr;idx_var_mbr++){
+      tbl->nsm[idx_nsm].grp_mbr_fll[idx_var_mbr]=(char *)nco_free(tbl->nsm[idx_nsm].grp_mbr_fll[idx_var_mbr]);
+    }
+
+    tbl->nsm[idx_nsm].mbr=(nsm_grp_sct*)nco_free(tbl->nsm[idx_nsm].mbr);
+  } /* Ensembles */
+
+  tbl->nsm_sfx=(char *)nco_free(tbl->nsm_sfx);  
+
+  tbl=(trv_tbl_sct *)nco_free(tbl);
+} /* end trv_tbl_free() */
+
+void                       
+trv_tbl_inq                          /* [fnc] Find and return global totals of dimensions, variables, attributes */
+(int * const att_glb_all,            /* O [nbr] Number of global attributes in file */
+ int * const att_grp_all,            /* O [nbr] Number of group attributes in file */
+ int * const att_var_all,            /* O [nbr] Number of variable attributes in file */
+ int * const dmn_nbr_all,            /* O [nbr] Number of dimensions in file */
+ int * const dmn_rec_all,            /* O [nbr] Number of record dimensions in file */
+ int * const grp_dpt_all,            /* O [nbr] Maximum group depth (root = 0) */
+ int * const grp_nbr_all,            /* O [nbr] Number of groups in file */
+ int * const var_ntm_all,            /* O [nbr] Number of non-atomic variables in file */
+ int * const var_tmc_all,            /* O [nbr] Number of atomic-type variables in file */
+ const trv_tbl_sct * const trv_tbl)  /* I [sct] Traversal table */
+{
+  /* [fnc] Find and return global file summaries like # of dimensions, variables, attributes */
+
+  int att_glb_lcl; /* [nbr] Number of global attributes in file */
+  int att_grp_lcl; /* [nbr] Number of group attributes in file */
+  int att_var_lcl; /* [nbr] Number of variable attributes in file */
+  int dmn_rec_lcl; /* [nbr] Number of record dimensions in file */
+  int grp_dpt_lcl; /* [nbr] Maximum group depth (root = 0) */
+  int grp_nbr_lcl; /* [nbr] Number of groups in file */
+  int var_ntm_lcl; /* [nbr] Number of non-atomic variables in file */
+  int var_tmc_lcl; /* [nbr] Number of atomic-type variables in file */
+ 
+  /* Initialize */
+  att_glb_lcl=0;
+  att_grp_lcl=0;
+  att_var_lcl=0;
+  dmn_rec_lcl=0;
+  grp_dpt_lcl=0;
+  grp_nbr_lcl=0;
+  var_ntm_lcl=0;
+  var_tmc_lcl=0;
+
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct trv=trv_tbl->lst[uidx]; 
+    if(trv.nco_typ == nco_obj_typ_var) att_var_lcl+=trv.nbr_att;
+    if(trv.nco_typ == nco_obj_typ_nonatomic_var) var_ntm_lcl++;
+    if(trv.nco_typ == nco_obj_typ_grp){ 
+      grp_nbr_lcl+=trv.nbr_grp;
+      var_tmc_lcl+=trv.nbr_var;
+      if(grp_dpt_lcl < trv.grp_dpt) grp_dpt_lcl=trv.grp_dpt;
+      if(!strcmp(trv.nm_fll,"/")) att_glb_lcl=trv.nbr_att; else att_grp_lcl+=trv.nbr_att; 
+    } /* end nco_obj_typ_grp */
+  } /* end uidx */
+
+  for(unsigned uidx=0;uidx<trv_tbl->nbr_dmn;uidx++)
+    if(trv_tbl->lst_dmn[uidx].is_rec_dmn) dmn_rec_lcl++;
+
+  if(att_glb_all) *att_glb_all=att_glb_lcl;
+  if(att_grp_all) *att_grp_all=att_grp_lcl;
+  if(att_var_all) *att_var_all=att_var_lcl;
+  if(dmn_nbr_all) *dmn_nbr_all=trv_tbl->nbr_dmn;
+  if(dmn_rec_all) *dmn_rec_all=dmn_rec_lcl;
+  if(grp_dpt_all) *grp_dpt_all=grp_dpt_lcl;
+  if(grp_nbr_all) *grp_nbr_all=grp_nbr_lcl;
+  if(var_ntm_all) *var_ntm_all=var_ntm_lcl;
+  if(var_tmc_all) *var_tmc_all=var_tmc_lcl;
+
+  return;
+} /* end trv_tbl_inq() */
+
+void 
+trv_tbl_prn_flg_mch                  /* [fnc] Print table items that have .flg_mch  */
+(const trv_tbl_sct * const trv_tbl,  /* I [sct] Traversal table */
+ const nco_obj_typ obj_typ)          /* I [enm] Object type (group or variable) */
+{
+  /* Print all matching objects of given type from traversal table */
+  trv_sct trv_obj;
+  for(unsigned int tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    trv_obj=trv_tbl->lst[tbl_idx];
+    if((trv_obj.nco_typ == obj_typ) && trv_obj.flg_mch) (void)fprintf(stdout,"nm_fll=%s\n",trv_obj.nm_fll);
+  } /* end loop over trv_tbl */
+} /* end trv_tbl_prn_flg_mch() */
+
+void                          
+trv_tbl_prn                          /* [fnc] Print table with -z */
+(const trv_tbl_sct * const trv_tbl)  /* I [sct] Traversal table */  
+{
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct trv=trv_tbl->lst[uidx];
+    if(trv.nco_typ == nco_obj_typ_grp) (void)fprintf(stdout,"grp: "); else (void)fprintf(stdout,"var: ");
+    (void)fprintf(stdout,"%s\n",trv_tbl->lst[uidx].nm_fll); 
+  } /* end uidx */
+} /* end trv_tbl_prn() */
+
+nco_bool                              /* O [flg] Item found or not */
+trv_tbl_fnd_var_nm_fll                /* [fnc] Check if "var_nm_fll" is in table */
+(const char * const var_nm_fll,       /* I [sng] Variable name to find */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
+{
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_var && !strcmp(var_nm_fll,trv_tbl->lst[uidx].nm_fll))
+      return True;
+
+  return False;
+} /* end trv_tbl_fnd_var_nm_fll() */
+
+trv_sct *                             /* O [sct] Table object */
+trv_tbl_var_nm_fll                    /* [fnc] Return object from full name key */
+(const char * const var_nm_fll,       /* I [sng] Variable name to find */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
+{
+  /* Purpose: Return object with given full name */
+
+#ifdef NCO_HSH_TRV_OBJ
+  trv_sct *trv_obj; /* [sct] GTT object structure */
+  HASH_FIND_STR(trv_tbl->hsh,var_nm_fll,trv_obj);
+  return trv_obj;
+#else /* !NCO_HSH_TRV_OBJ */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_var && !strcmp(var_nm_fll,trv_tbl->lst[uidx].nm_fll)) return &trv_tbl->lst[uidx];
+
+  return NULL;
+#endif /* !NCO_HSH_TRV_OBJ */
+
+} /* trv_tbl_var_nm_fll() */
+
+void
+trv_tbl_mrk_xtr                       /* [fnc] Mark extraction flag in table for "var_nm_fll" */
+(const char * const var_nm_fll,       /* I [sng] Variable name to find */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
+{
+
+#ifdef NCO_HSH_TRV_OBJ
+  trv_sct *trv_obj; /* [sct] GTT object structure */
+  HASH_FIND_STR(trv_tbl->hsh,var_nm_fll,trv_obj);
+  if(trv_obj) trv_obj->flg_xtr=True;
+#else /* !NCO_HSH_TRV_OBJ */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(!strcmp(var_nm_fll,trv_tbl->lst[uidx].nm_fll)) trv_tbl->lst[uidx].flg_xtr=True;
+#endif /* !NCO_HSH_TRV_OBJ */
+
+  return;
+} /* end trv_tbl_mrk_xtr() */
+
+void
+trv_tbl_mrk_prc_fix                    /* [fnc] Mark fixed/processed flag in table for "var_nm_fll" */
+(const char * const var_nm_fll,        /* I [sng] Variable name to find */
+ prc_typ_enm typ_prc,                  /* I [enm] Processing type */
+ const trv_tbl_sct * const trv_tbl)    /* I [sct] Traversal table */
+{
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    if(!strcmp(var_nm_fll,trv_tbl->lst[uidx].nm_fll)){
+      trv_tbl->lst[uidx].enm_prc_typ=typ_prc;
+      return;
+    }
+  }
+
+  assert(0);
+} /* end trv_tbl_mrk_prc_fix() */
+
+void 
+trv_tbl_prn_xtr                        /* [fnc] Print extraction flag of traversal table */
+(const trv_tbl_sct * const trv_tbl,    /* I [sct] Traversal table */
+ const char * const fnc_nm)            /* I [sng] Function name of the calling function */
+{
+  int idx=0;
+  int nbr_flg=0;
+
+  /* Loop table */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(trv_tbl->lst[uidx].flg_xtr) nbr_flg++;
+
+  (void)fprintf(stdout,"%s: INFO %s reports <%d> objects with extraction flag (flg_xtr) set:\n",nco_prg_nm_get(),fnc_nm,nbr_flg); 
+  
+  /* Loop table */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    if(trv_tbl->lst[uidx].flg_xtr) (void)fprintf(stdout,"[%d] %s\n",idx++,trv_tbl->lst[uidx].nm_fll); 
+  }
+
+} /* end trv_tbl_prn_xtr() */
+
+static int                             /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
+trv_tbl_cmp_nm_fll                     /* [fnc] Compare two trv_sct's by full name member */
+(const void *val_1,                    /* I [sct] trv_sct to compare */
+ const void *val_2)                    /* I [sct] trv_sct to compare */
+{
+  /* Purpose: Compare two trv_sct's by name structure member
+     Function is suitable for argument to ANSI C qsort() routine in stdlib.h
+     Code based on responses to my comp.lang.c thread 20040101 */
+  return strcmp((*(trv_sct const *)val_1).nm_fll,(*(trv_sct const *)val_2).nm_fll);
+} /* end nco_cmp_trv_tbl_nm() */
+
+void 
+trv_tbl_srt                            /* [fnc] Sort traversal table */
+(trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
+{
+  /* Purpose: Alphabetize list by object full name
+     This produces easy-to-search variable name screen output with ncks */
+  qsort(trv_tbl->lst,(size_t)trv_tbl->nbr,sizeof(trv_sct),trv_tbl_cmp_nm_fll);
+} /* end trv_tbl_srt() */
+
+void                          
+trv_tbl_mch                            /* [fnc] Match 2 tables (find common objects) and export common objects  */
+(trv_tbl_sct * const trv_tbl_1,        /* I/O [sct] GTT (Group Traversal Table) */
+ trv_tbl_sct * const trv_tbl_2,        /* I/O [sct] GTT (Group Traversal Table) */
+ nco_cmn_t **cmn_lst,                  /* I/O [sct] List of common names */
+ int * nbr_cmn_nm)                     /* I/O [nbr] Number of common names */
+{
+  /* Purpose: Find common objects. 
+     Use cosequential match algorithm described in
+     Folk, Michael; Zoellick, Bill. (1992). File Structures. Addison-Wesley.
+     
+     Compare 2 ordered lists of names:
+     if Name(1) is less than Name(2), read next name from List 1; this is done by incrementing current index
+     if Name(1) is greater than Name(2), read next name from List 2
+     if names are identical, read next names from both lists 
+     
+     Used in ncbo; ncbo performs binary operations on variables in file 1 and matching variables
+     (those with the same name) in file 2 and stores results in file 3.
+     This function detects common absolute names in tables 1 and 2 and does ncbo binary operation */
+  
+  const char fnc_nm[]="trv_tbl_mch()"; /* [sng] Function name */
+  
+  int idx_lst;                   /* [idx] Current position in common List */ 
+  int idx_tbl_1;                 /* [idx] Current position in List 1 */ 
+  int idx_tbl_2;                 /* [idx] Current position in List 2 */ 
+  int nbr_tbl_1;                 /* [nbr] Number of items in list 1 */
+  int nbr_tbl_2;                 /* [nbr] Number of items in list 2 */
+  int nco_cmp;                   /* [nbr] Return value of strcmp() */ 
+
+  nco_bool flg_more_names_exist; /* [flg] Are there more names to process? */
+
+  /* Tables must be sorted */
+  (void)trv_tbl_srt(trv_tbl_1);
+  (void)trv_tbl_srt(trv_tbl_2);
+
+#ifdef NCO_HSH_TRV_OBJ
+  /* Rebuild hash table after traversal table re-ordering */
+  HASH_CLEAR(hh,trv_tbl_1->hsh);
+  HASH_CLEAR(hh,trv_tbl_2->hsh);
+  (void)nco_trv_hsh_bld(trv_tbl_1);
+  (void)nco_trv_hsh_bld(trv_tbl_2);
+#endif /* !NCO_HSH_TRV_OBJ */
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)fprintf(stdout,"%s: INFO %s reports Sorted table 1\n",nco_prg_nm_get(),fnc_nm);
+    (void)trv_tbl_prn(trv_tbl_1);
+    (void)fprintf(stdout,"%s: INFO %s reports Sorted table 2\n",nco_prg_nm_get(),fnc_nm);
+    (void)trv_tbl_prn(trv_tbl_2);
+  } /* endif dbg */
+
+  /* Get number of objects in each table */
+  nbr_tbl_1=trv_tbl_1->nbr;
+  nbr_tbl_2=trv_tbl_2->nbr;
+
+  /* If both lists have names, then there are names to process */
+  flg_more_names_exist = (nbr_tbl_1 > 0 && nbr_tbl_2 > 0) ? True : False;
+
+  /* Initialize counters */
+  idx_tbl_1=0;
+  idx_tbl_2=0;
+  idx_lst=0;
+
+  /* Store list of common objects */
+  (*cmn_lst)=(nco_cmn_t *)nco_malloc((nbr_tbl_1+nbr_tbl_2)*sizeof(nco_cmn_t));
+
+  /* Iterate lists */
+  while(flg_more_names_exist){
+    trv_sct trv_1=trv_tbl_1->lst[idx_tbl_1];
+    trv_sct trv_2=trv_tbl_2->lst[idx_tbl_2];
+
+    /* Criteria is string compare */
+    nco_cmp=strcmp(trv_1.nm_fll,trv_2.nm_fll);
+
+    /* Names match: store flag, define or write in output file, then read next name from lists */
+    if(!nco_cmp){
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=True;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=True;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(trv_1.nm_fll);
+      idx_lst++;
+
+      idx_tbl_1++;
+      idx_tbl_2++;
+    }else if(nco_cmp < 0){
+      /* Name(1) is less than Name(2), read next name from List 1  */
+
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=True;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=False;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(trv_1.nm_fll);
+      idx_lst++;
+
+      if(nco_dbg_lvl_get() == nco_dbg_old)(void)fprintf(stdout,"%s: INFO %s reports tbl_1[%d]:%s\n",nco_prg_nm_get(),fnc_nm,idx_tbl_1,trv_1.nm_fll);
+      idx_tbl_1++;
+    }else{
+      /* Name(1) is greater than Name(2), read next name from List 2 */
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=False;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=True;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(trv_2.nm_fll);
+      idx_lst++;
+
+      if(nco_dbg_lvl_get() == nco_dbg_old)(void)fprintf(stdout,"%s: INFO %s reports tbl_2[%d]:%s\n",nco_prg_nm_get(),fnc_nm,idx_tbl_2,trv_2.nm_fll);
+      idx_tbl_2++;
+    } /* end nco_cmp */
+
+    flg_more_names_exist = (idx_tbl_1 < nbr_tbl_1 && idx_tbl_2 < nbr_tbl_2) ? True : False;
+
+  } /* end while */
+
+  /* List1 did not end */
+  if(idx_tbl_1 < nbr_tbl_1){
+
+    while(idx_tbl_1 < nbr_tbl_1){
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=True;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=False;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(trv_tbl_1->lst[idx_tbl_1].nm_fll);
+      idx_lst++;
+
+      if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports tbl_1[%d]:%s\n",nco_prg_nm_get(),fnc_nm,idx_tbl_1,trv_tbl_1->lst[idx_tbl_1].nm_fll);
+      idx_tbl_1++;
+    } /* end while */
+  } /* end if */
+
+  /* List2 did not end */
+  if(idx_tbl_2 < nbr_tbl_2){
+    while(idx_tbl_2 < nbr_tbl_2){
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=False;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=True;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(trv_tbl_2->lst[idx_tbl_2].nm_fll);
+      idx_lst++;
+
+      if(nco_dbg_lvl_get() == nco_dbg_old)(void)fprintf(stdout,"%s: INFO %s reports tbl_2[%d]:%s\n",nco_prg_nm_get(),fnc_nm,idx_tbl_2,trv_tbl_2->lst[idx_tbl_2].nm_fll);
+      idx_tbl_2++;
+    } /* end while */
+  } /* end if */
+
+  /* Print list */
+  if(nco_dbg_lvl_get() >= nco_dbg_var) (void)trv_tbl_cmn_nm_prt(*cmn_lst,idx_lst);
+
+  /* Export number of entries */
+  *nbr_cmn_nm=idx_lst;
+} /* trv_tbl_mch() */
+
+void                          
+trv_tbl_cmn_nm_prt                         /* [fnc] Print list of common objects (same absolute path) */
+(const nco_cmn_t * const cmn_lst,      /* I [sct] List of common names */
+ const int nbr_cmn_nm)                 /* I [nbr] Number of common names entries */
+{
+  (void)fprintf(stdout,"%s: INFO reports common objects for both files (same absolute path)\n",nco_prg_nm_get());
+  (void)fprintf(stdout,"file1     file2\n");
+  (void)fprintf(stdout,"---------------------------------------\n");
+  for(int idx=0;idx<nbr_cmn_nm;idx++){
+    char c1, c2;
+    c1 = (cmn_lst[idx].flg_in_fl[0]) ? 'x' : ' ';
+    c2 = (cmn_lst[idx].flg_in_fl[1]) ? 'x' : ' ';
+    (void)fprintf(stdout,"%5c %6c    %-15s\n", c1, c2, cmn_lst[idx].var_nm_fll);
+  } /* end loop over idx */
+  (void)fprintf(stdout,"\n");
+
+} /* trv_tbl_cmn_nm_prt() */
+
+int                                    /* O [nbr] Number of depth 1 groups (root = 0) */             
+trv_tbl_inq_dpt                        /* [fnc] Return number of depth 1 groups */
+(const trv_tbl_sct * const trv_tbl)    /* I [sct] GTT (Group Traversal Table) */           
+{
+  int nbr_grp_dpt=0; /* [nbr] Number of depth 1 groups (root = 0) */       
+
+  /* Loop table */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_grp && trv_tbl->lst[uidx].grp_dpt == 1)
+      nbr_grp_dpt++;
+
+  return nbr_grp_dpt;
+} /* trv_tbl_inq_dpt() */
+
+dmn_trv_sct *                         /* O [sct] GTT dimension structure (stored in *groups*) */
+nco_dmn_trv_sct                       /* [fnc] Return unique dimension object from unique ID */
+(const int dmn_id,                    /* I [id] Unique dimension ID */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Search table dimension list and compare IDs */
+  for(unsigned int idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++)
+    if(dmn_id == trv_tbl->lst_dmn[idx_dmn].dmn_id)
+      return &trv_tbl->lst_dmn[idx_dmn];
+
+  assert(0);
+  return NULL;
+} /* nco_dmn_trv_sct() */
+
+void                                  
+nco_dmn_set_msa                       /* [fnc] Update dimension with hyperslabbed size */
+(const int dmn_id,                    /* I [id] Unique dimension ID */
+ const long dmn_cnt,                  /* I [nbr] New dimension size */
+ const trv_tbl_sct *trv_tbl)          /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Search table dimension list and compared IDs */
+  for(unsigned int dmn_idx=0;dmn_idx<trv_tbl->nbr_dmn;dmn_idx++)
+    if(dmn_id == trv_tbl->lst_dmn[dmn_idx].dmn_id)
+      trv_tbl->lst_dmn[dmn_idx].lmt_msa.dmn_cnt=dmn_cnt;
+
+  return;
+} /* nco_dmn_set_msa() */
+
+long                                  /* O [nbr] Hyperslabbed size */
+nco_dmn_get_msa                       /* [fnc] Update dimension with hyperslabbed size */
+(const int dmn_id,                    /* I [id] Unique dimension ID */
+ const trv_tbl_sct *trv_tbl)          /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Search table dimension list and compare IDs */
+  for(unsigned int dmn_idx=0;dmn_idx<trv_tbl->nbr_dmn;dmn_idx++)
+    if(dmn_id == trv_tbl->lst_dmn[dmn_idx].dmn_id)
+      return trv_tbl->lst_dmn[dmn_idx].lmt_msa.dmn_cnt;
+     
+  assert(0);
+  return -1;
+} /* nco_dmn_get_msa() */
+
+void
+nco_trv_hsh_del /* Delete hash table */
+(trv_tbl_sct * const trv_tbl) /* I/O [sct] Traversal table */
+{
+  /* Purpose: Delete hash table
+     http://troydhanson.github.io/uthash/userguide.html#_delete_item */
+  trv_sct *trv_obj; /* [sct] GTT object structure */
+  trv_sct *hsh_tmp; /* [sct] GTT object structure */
+
+  /* Iterate over hash table */
+  HASH_ITER(hh,trv_tbl->hsh,trv_obj,hsh_tmp){
+    /* Delete current object */
+    HASH_DEL(trv_tbl->hsh,trv_obj);
+  } /* end iteration over hash table */  
+
+} /* nco_trv_hsh_del() */
+
+void
+nco_trv_hsh_bld /* Hash traversal table for fastest access */
+(trv_tbl_sct * const trv_tbl) /* I/O [sct] Traversal table */
+{
+  /* Purpose: Hash all objects in traversal table and store resultant hash table */
+
+  /* Notes on Hash vs. Other methods:
+     Usually we wish to find and return object with same full name
+     Full names are guaranteed to unique in netCDF4/HDF5 files
+     The two practical methods are:
+     
+     1. Bruit-force search with loop/strcmp(): (old method)
+     No initial setup necessary
+     Loop through traversal table, use strcmp() to find matching name
+     This method works if traversal table is re-ordered or names change after keys are generated
+     Time-expense of bruit-force searches is O(n)
+     This method is therefore more robust yet much slower than hashes
+     2. Hash table: (new method)
+     Add each object to hash table on creation by calling nco_trv_hsh_bld() from nco_bld_trv_tbl()
+     This generates hash table as string-keyed hash with object's full-name as key
+     Then, as needed, pass key to hash table to retrieve desired object
+     This method does not depend on traversal table remaining in same order as when keys were generated
+     But it does require that no names change after keys are generated
+     More specifically, it requires old hash entries be deleted and new ones added when keys change
+     Time-expense of hashes is O(1+n/k)
+     Hashes are therefore more fragile yet much quicker than bruit-force searches
+     Care must be used to destroy/replace/re-create hash table entries if when keys change (or table is re-ordered)
+
+     Hash table lookups:
+     trv_sct *trv_obj;
+     HASH_FIND_STR(trv_tbl->hsh,nm_fll,trv_obj);
+     return trv_obj;
+     Input key argument (nm_fll field) is unchanged
+     However, HASH_FIND_STR() macro treats key as (i.e., casts it to) unsigned bytes internally
+     Hence  -Wcast_qual causes compiler complaint if key argument is const char * const nm_fll
+     Potential workarounds:
+     1. Eliminate -Wcast_qual from compiler settings
+        Verified this works
+     2. Change function prototype to non-const key
+        This eliminates compiler warnings at cost of introducing non-typesafe code paths
+	Move all hash-lookup functions into single file that does not get -Wcast_qual?
+     3. Pass key as void pointer?
+        Not sure this is doable/would work
+     4. Duplicate then free() key for each hash-lookup
+        Verified this works yet it seems too expensive, e.g., 
+        char *hsh_key=(char *)strdup(nm_fll);
+        HASH_FIND_STR(trv_tbl->hsh,hsh_key,trv_obj);
+        if(hsh_key) hsh_key=(char *)nco_free(hsh_key); */
+
+  /* NB: Hash table must be NULL-initialized */
+  trv_tbl->hsh=NULL;
+
+  for(unsigned int tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Key is full object name but do not use nm_fll itself as key
+       That would be unsafe because of dangling pointer to nm_fll
+       Instead duplicate nm_fll into its own hsh_key field
+       Release this hsh_key memory in trv_tbl_free() */
+    trv_tbl->lst[tbl_idx].hsh_key=strdup(trv_tbl->lst[tbl_idx].nm_fll);
+    /* General macro faster than convenience macro since can use GTT-supplied string length */
+    HASH_ADD_KEYPTR(hh,trv_tbl->hsh,trv_tbl->lst[tbl_idx].hsh_key,trv_tbl->lst[tbl_idx].nm_fll_lng,trv_tbl->lst+tbl_idx);
+    /* Convenience macro (more expensive because UTHASH must compute key-length itself?) */
+    //    HASH_ADD_PTR(trv_tbl->hsh,trv_tbl->lst[tbl_idx].hsh_key,trv_tbl->lst+tbl_idx);
+  } /* end loop over trv_tbl */
+
+} /* end trv_tbl_hsh() */
+
+
+void 
+nco_nm_srt                             /* [fnc] Sort traversal table */
+(char **nm_lst,                        /* I [sng] List of names */
+ const int nm_lst_nbr)                 /* I [nbr] Number of items in list */
+{
+  /* Purpose: Sort list of strings  */
+  qsort(nm_lst,(size_t)nm_lst_nbr,sizeof(char **),nco_cmp_sng);
+} /* end nco_nm_srt() */
+
+void                          
+nco_nm_mch                             /* [fnc] Match 2 lists of strings and mark common strings  */
+(char **nm_lst_1,                      /* I [sng] List of names */
+ const int nm_lst_1_nbr,               /* I [nbr] Number of items in list */
+ char **nm_lst_2,                      /* I [sng] List of names */
+ const int nm_lst_2_nbr,               /* I [nbr] Number of items in list */
+ nco_cmn_t **cmn_lst,                  /* I/O [sct] List of all names */
+ int * nbr_nm,                         /* I/O [nbr] Number of all names (size of above array) */
+ int * nbr_cmn_nm)                     /* I/O [nbr] Number of common names */
+{
+  /* Purpose: Match 2 lists of strings and export common strings. 
+  Use cosequential match algorithm described in
+  Folk, Michael; Zoellick, Bill. (1992). File Structures. Addison-Wesley.
+
+  Compare 2 ordered lists of names:
+  if Name(1) is less than Name(2), read next name from List 1; this is done by incrementing current index
+  if Name(1) is greater than Name(2), read next name from List 2
+  if names are identical, read next names from both lists  */
+
+  int idx_lst;                   /* [idx] Current position in common List */ 
+  int idx_tbl_1;                 /* [idx] Current position in List 1 */ 
+  int idx_tbl_2;                 /* [idx] Current position in List 2 */ 
+  int nbr_tbl_1;                 /* [nbr] Number of items in list 1 */
+  int nbr_tbl_2;                 /* [nbr] Number of items in list 2 */
+  int nco_cmp;                   /* [nbr] Return value of strcmp() */            
+
+  nco_bool flg_more_names_exist; /* [flg] Are there more names to process? */
+
+  /* Names must be sorted */
+  (void)nco_nm_srt(nm_lst_1,nm_lst_1_nbr);
+  (void)nco_nm_srt(nm_lst_2,nm_lst_2_nbr);
+
+  /* Get number of objects in each table */
+  nbr_tbl_1=nm_lst_1_nbr;
+  nbr_tbl_2=nm_lst_2_nbr;
+
+  /* If both lists have names, then there are names to process */
+  flg_more_names_exist = (nbr_tbl_1 > 0 && nbr_tbl_2 > 0) ? True : False;
+
+  /* Store list of common objects */
+  (*cmn_lst)=(nco_cmn_t *)nco_malloc((nbr_tbl_1+nbr_tbl_2)*sizeof(nco_cmn_t));
+
+  /* Initialize counters and output */
+  *nbr_cmn_nm=0;
+  *nbr_nm=0;
+  idx_tbl_1=0;
+  idx_tbl_2=0;
+  idx_lst=0;
+
+  /* Iterate lists */
+  while(flg_more_names_exist){
+    char *nm_1=nm_lst_1[idx_tbl_1];
+    char *nm_2=nm_lst_2[idx_tbl_2];
+
+    /* Criteria is string compare */
+    nco_cmp=strcmp(nm_1,nm_2);
+
+    /* Names match: store flag, define or write in output file, then read next name from lists */
+    if(!nco_cmp){
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=True;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=True;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(nm_1);
+      idx_lst++;
+      idx_tbl_1++;
+      idx_tbl_2++;
+      /* Export commnon names */
+      *nbr_cmn_nm=idx_lst;
+    }else if(nco_cmp < 0){
+      /* Name(1) is less than Name(2), read next name from List 1  */
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=True;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=False;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(nm_1);
+      idx_lst++; 
+      idx_tbl_1++;
+    }else{
+      /* Name(1) is greater than Name(2), read next name from List 2 */
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=False;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=True;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(nm_2);
+      idx_lst++;   
+      idx_tbl_2++;
+    } /* end nco_cmp */
+
+    flg_more_names_exist = (idx_tbl_1 < nbr_tbl_1 && idx_tbl_2 < nbr_tbl_2) ? True : False;
+
+  } /* end while */
+
+  /* List1 did not end */
+  if(idx_tbl_1 < nbr_tbl_1){
+
+    while(idx_tbl_1 < nbr_tbl_1){
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=True;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=False;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(nm_lst_1[idx_tbl_1]);
+      idx_lst++;
+      idx_tbl_1++;
+    } /* end while */
+  } /* end if */
+
+  /* List2 did not end */
+  if(idx_tbl_2 < nbr_tbl_2){
+    while(idx_tbl_2 < nbr_tbl_2){
+      (*cmn_lst)[idx_lst].flg_in_fl[0]=False;
+      (*cmn_lst)[idx_lst].flg_in_fl[1]=True;
+      (*cmn_lst)[idx_lst].var_nm_fll=strdup(nm_lst_2[idx_tbl_2]);
+      idx_lst++;
+      idx_tbl_2++;
+    } /* end while */
+  } /* end if */
+
+  /* Export number of entries */
+  *nbr_nm=idx_lst;
+
+} /* nco_nm_mch() */
+
+void
+trv_tbl_mrk_nsm_mbr                    /* [fnc] Mark ensemble member flag in table for "var_nm_fll" */
+(const char * const var_nm_fll,       /* I [sng] Variable name to find */
+ const nco_bool flg_nsm_tpl,          /* I [flg] Variable is template member */
+ const char * const grp_nm_fll_prn,   /* I [sng] Parent group full name (key for ensemble) */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
+{
+#ifdef NCO_HSH_TRV_OBJ
+  trv_sct *trv_obj; /* [sct] GTT object structure */
+  HASH_FIND_STR(trv_tbl->hsh,var_nm_fll,trv_obj);
+  if(trv_obj) trv_obj->flg_nsm_mbr=True;
+  assert(0); 
+#else /* !NCO_HSH_TRV_OBJ */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_var && strcmp(var_nm_fll,trv_tbl->lst[uidx].nm_fll) == 0){
+      trv_tbl->lst[uidx].flg_nsm_mbr=True;
+      trv_tbl->lst[uidx].nsm_nm=strdup(grp_nm_fll_prn);
+      if (flg_nsm_tpl) trv_tbl->lst[uidx].flg_nsm_tpl=True;
+    }
+  }
+#endif /* !NCO_HSH_TRV_OBJ */
+
+  return;
+} /* end trv_tbl_mrk_nsm_mbr() */
+
+char *                                 /* O [sng] Full path  */
+nco_bld_nm_fll                         /* [fnc] Utility function to build a full path */
+(const char * const grp_nm_fll,        /* I [sng] Group full name */
+ const char * const var_nm)            /* I [sng] Variable name */
+{
+  /* Allocate path buffer and include space for trailing NUL */ 
+  char *var_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(var_nm)+2L);
+  /* Initialize path with current absolute group path */
+  strcpy(var_nm_fll,grp_nm_fll);
+  /* If not root group, concatenate separator */
+  if(strcmp(grp_nm_fll,"/")) strcat(var_nm_fll,"/");
+  /* Concatenate variable to absolute group path */
+  strcat(var_nm_fll,var_nm);
+
+  return var_nm_fll;
+
+} /* nco_bld_nm_fll() */
+
+
+nco_bool                              
+nco_lst_ins                            /* [fnc] Utility function to detect inserted names in a name list */
+(const char * const nm,                /* I [sng] A name to detect */
+ const nco_cmn_t *cmn_lst,             /* I [sct] List of names   */
+ const int nbr_nm)                     /* I [nbr] Number of names (size of above array) */
+{
+  /* Loop constructed array to see if already inserted */
+  for(int idx_nm=0;idx_nm<nbr_nm;idx_nm++){
+      /* Match */
+      if(strcmp(cmn_lst[idx_nm].var_nm_fll,nm) == 0){
+        /* Mark as inserted in array */
+        return True;
+      }  /* Match */
+  } /* Loop constructed array to see if already inserted  */
+
+  return False;
+
+} /* nco_lst_ins() */
+
+
+char *                                 /* O [sng] Full path with suffix */
+nco_bld_nsm_sfx                        /* [fnc] Build ensemble suffix */
+(const char * const grp_nm_fll_prn,    /* I [sng] Absolute group name of ensemble root */
+ trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
+{
+  assert(trv_tbl->nsm_sfx);
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Match */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_grp && strcmp(grp_nm_fll_prn,trv_tbl->lst[tbl_idx].nm_fll) == 0){
+
+      /* Define (append) a new name */
+      char *nm_fll_sfx=(char*)nco_malloc(strlen(grp_nm_fll_prn)+strlen(trv_tbl->lst[tbl_idx].nm)+strlen(trv_tbl->nsm_sfx)+2L);
+      strcpy(nm_fll_sfx,grp_nm_fll_prn);
+      strcat(nm_fll_sfx,"/");
+      strcat(nm_fll_sfx,trv_tbl->lst[tbl_idx].nm);
+      strcat(nm_fll_sfx,trv_tbl->nsm_sfx);
+      return nm_fll_sfx;
+
+    } /* Match */
+  } /* Loop table*/
+
+
+  assert(0);
+  return NULL;
+
+} /* nco_bld_nsm_sfx() */
diff --git a/src/nco/nco_grp_trv.h b/src/nco/nco_grp_trv.h
new file mode 100644
index 0000000..f150068
--- /dev/null
+++ b/src/nco/nco_grp_trv.h
@@ -0,0 +1,171 @@
+/* $Header: /cvsroot/nco/nco/src/nco/nco_grp_trv.h,v 1.103 2013/12/02 20:14:49 zender Exp $ */
+
+/* Purpose: netCDF4 traversal storage */
+
+/* Copyright (C) 2011--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
+
+/* Usage:
+   #include "nco_grp_trv.h" *//* Group traversal */
+
+#ifndef NCO_GRP_TRV_H
+#define NCO_GRP_TRV_H
+
+#ifdef HAVE_CONFIG_H
+# include <config.h> /* Autotools tokens */
+#endif /* !HAVE_CONFIG_H */
+
+/* Standard header files */
+#include <string.h> /* strcmp() */
+
+/* 3rd party vendors */
+#include <netcdf.h> /* netCDF definitions and C library */
+
+/* Personal headers */
+#include "nco.h" /* netCDF Operator (NCO) definitions */
+#include "nco_cnf_typ.h" /* Conform variable types */
+#include "nco_mmr.h" /* Memory management */
+
+void                         
+trv_tbl_init                          /* [fnc] GTT initialize */
+(trv_tbl_sct **tbl);                  /* I/O [sct] Traversal table */
+/* end trv_tbl_init */
+
+void 
+trv_tbl_free                          /* [fnc] GTT free memory */
+(trv_tbl_sct *tbl);                   /* I/O [sct] Traversal table */
+/* end trv_tbl_free */
+
+void                       
+trv_tbl_inq                            /* [fnc] Find and return global totals of dimensions, variables, attributes */
+(int * const att_glb_all,              /* O [nbr] Number of global attributes in file */
+ int * const att_grp_all,              /* O [nbr] Number of group attributes in file */
+ int * const att_var_all,              /* O [nbr] Number of variable attributes in file */
+ int * const dmn_nbr_all,              /* O [nbr] Number of dimensions in file */
+ int * const dmn_rec_all,              /* O [nbr] Number of record dimensions in file */
+ int * const grp_dpt_all,              /* O [nbr] Maximum group depth (root = 0) */
+ int * const grp_nbr_all,              /* O [nbr] Number of groups in file */
+ int * const var_ntm_all,              /* O [nbr] Number of non-atomic variables in file */
+ int * const var_tmc_all,              /* O [nbr] Number of atomic-type variables in file */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */
+
+void 
+trv_tbl_prn_flg_mch                    /* [fnc] Print table items that have .flg_mch  */
+(const trv_tbl_sct * const trv_tbl,    /* I [sct] Traversal table */
+ const nco_obj_typ obj_typ);           /* I [enm] Object type (group or variable) */
+
+void                          
+trv_tbl_prn                            /* [fnc] Print table with -z */
+(const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */  
+
+nco_bool
+trv_tbl_fnd_var_nm_fll                 /* [fnc] Check if "var_nm_fll" is in table */
+(const char * const var_nm_fll,        /* I [sng] Variable name to find */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */
+
+trv_sct *                              /* O [sct] Table object */
+trv_tbl_var_nm_fll                     /* [fnc] Return object from full name key */
+(const char * const var_nm_fll,        /* I [sng] Variable name to find */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */
+
+void
+trv_tbl_mrk_xtr                        /* [fnc] Mark extraction flag in table for "var_nm_fll" */
+(const char * const var_nm_fll,        /* I [sng] Variable name to find */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */
+
+void
+trv_tbl_mrk_prc_fix                    /* [fnc] Mark fixed/processed flag in table for "var_nm_fll" */
+(const char * const var_nm_fll,        /* I [sng] Variable name to find */
+ prc_typ_enm typ_prc,                  /* I [enm] Processing type */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */
+
+void 
+trv_tbl_prn_xtr                        /* [fnc] Print extraction flag of traversal table */
+(const trv_tbl_sct * const trv_tbl,    /* I [sct] Traversal table */
+ const char * const fnc_nm);           /* I [sng] Function name of the calling function */
+
+void 
+trv_tbl_srt                            /* [fnc] Sort traversal table */
+(trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
+
+int                                    /* O [nbr] Number of depth 1 groups (root = 0) */
+trv_tbl_inq_dpt                        /* [fnc] Return number of depth 1 groups */
+(const trv_tbl_sct * const trv_tbl);   /* I [sct] GTT (Group Traversal Table) */
+
+void                          
+trv_tbl_mch                            /* [fnc] Match 2 tables (find common objects) and export common objects  */
+(trv_tbl_sct * const trv_tbl_1,        /* I/O [sct] GTT (Group Traversal Table) */
+ trv_tbl_sct * const trv_tbl_2,        /* I/O [sct] GTT (Group Traversal Table) */
+ nco_cmn_t **cmn_lst,                  /* I/O [sct] List of common names */
+ int * nbr_cmn_nm);                    /* I/O [nbr] Number of common names entries */
+
+void                          
+trv_tbl_cmn_nm_prt                     /* [fnc] Print list of common objects (same absolute path) */
+(const nco_cmn_t * const cmn_lst,      /* I [sct] List of common names */
+ const int nbr_cmn_nm);                /* I [nbr] Number of common names entries */
+
+dmn_trv_sct *                         /* O [sct] GTT dimension structure (stored in *groups*) */
+nco_dmn_trv_sct                       /* [fnc] Return unique dimension object from unique ID */
+(const int dmn_id,                    /* I [id] Unique dimension ID */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void                                  
+nco_dmn_set_msa                       /* [fnc] Update dimension with hyperslabbed size */
+(const int dmn_id,                    /* I [id] Unique dimension ID */
+ const long dmn_cnt,                  /* I [nbr] New dimension size */
+ const trv_tbl_sct *trv_tbl);         /* I/O [sct] GTT (Group Traversal Table) */
+
+long                                  /* O hyperslabbed size */
+nco_dmn_get_msa                       /* [fnc] Update dimension with hyperslabbed size */
+(const int dmn_id,                    /* I [id] Unique dimension ID */
+ const trv_tbl_sct *trv_tbl);         /* I/O [sct] GTT (Group Traversal Table) */
+
+void 
+nco_trv_hsh_bld                       /* Hash traversal table for fastest access */
+(trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_trv_hsh_del                       /* Delete hash table */
+(trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void 
+nco_nm_srt                             /* [fnc] Sort traversal table */
+(char **nm_lst,                        /* I [sng] List of names */
+ const int nm_lst_nbr);                /* I [nbr] Number of items in list */
+
+void                          
+nco_nm_mch                             /* [fnc] Match 2 lists of strings and mark common strings  */
+(char **nm_lst_1,                      /* I [sng] List of names */
+ const int nm_lst_1_nbr,               /* I [nbr] Number of items in list */
+ char **nm_lst_2,                      /* I [sng] List of names */
+ const int nm_lst_2_nbr,               /* I [nbr] Number of items in list */
+ nco_cmn_t **cmn_lst,                  /* I/O [sct] List of all names */
+ int * nbr_nm,                         /* I/O [nbr] Number of all names (size of above array) */
+ int * nbr_cmn_nm);                    /* I/O [nbr] Number of common names */
+
+void
+trv_tbl_mrk_nsm_mbr                    /* [fnc] Mark ensemble member flag in table for "var_nm_fll" */
+(const char * const var_nm_fll,       /* I [sng] Variable name to find */
+ const nco_bool flg_nsm_tpl,          /* I [flg] Variable is template member */
+ const char * const grp_nm_fll_prn,   /* I [sng] Parent group full name (key for ensemble) */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] Traversal table */
+
+char *                                 /* O [sng] Full path  */
+nco_bld_nm_fll                         /* [fnc] Utility function to build a full path */
+(const char * const grp_nm_fll,        /* I [sng] Group full name */
+ const char * const var_nm);           /* I [sng] Variable name */
+
+nco_bool                              
+nco_lst_ins                            /* [fnc] Utility function to detect inserted names in a name list */
+(const char * const nm,                /* I [sng] A name to detect */
+ const nco_cmn_t *cmn_lst,             /* I [sct] List of names   */
+ const int nbr_nm);                    /* I [nbr] Number of names (size of above array) */
+
+char *                                 /* O [sng] Full path with suffix */
+nco_bld_nsm_sfx                        /* [fnc] Build ensemble suffix */
+(const char * const grp_nm_fll_prn,    /* I [sng] Absolute group name of ensemble root */
+ trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
+
+
+#endif /* NCO_GRP_TRV_H */
diff --git a/src/nco/nco_grp_utl.c b/src/nco/nco_grp_utl.c
index 9360980..8e941c1 100644
--- a/src/nco/nco_grp_utl.c
+++ b/src/nco/nco_grp_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_grp_utl.c,v 1.22 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_grp_utl.c,v 1.1091 2013/12/02 23:26:01 zender Exp $ */
 
 /* Purpose: Group utilities */
 
-/* Copyright (C) 2011--2012 Charlie Zender
+/* Copyright (C) 2011--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -13,16 +13,45 @@
    ncks -D 1 -m ~/in.nc4
    ncks -O -D 3 -g HIRDLS -m ~/in.nc4 ~/foo.nc
    ncks -O -D 3 -m ~/in_grp.nc ~/foo.nc
-   ncks -O -D 3 -v 'Q.?' ~/nco/data/in.nc ~/foo.nc
- */
+   ncks -O -D 3 -v 'Q.?' ~/nco/data/in.nc ~/foo.nc */
 
-#include "nco_grp_utl.h" /* Group utilities */
+#include "nco_grp_utl.h"  /* Group utilities */
 
-int /* [rcd] Return code */
-nco_inq_grps_full /* [fnc] Discover and return IDs of apex and all sub-groups */
-(const int grp_id, /* I [ID] Apex group */
- int * const grp_nbr, /* O [nbr] Number of groups */
- int * const grp_ids) /* O [ID] Group IDs of children */
+void
+nco_flg_set_grp_var_ass               /* [fnc] Set flags for groups and variables associated with matched object */
+(const char * const grp_nm_fll,       /* I [sng] Full name of group */
+ const nco_obj_typ obj_typ,           /* I [enm] Object type (group or variable) */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Set flags for groups and variables associated with matched object */  
+
+  trv_sct trv_obj; /* [sct] Traversal table object */
+
+  for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++){
+    
+    /* Create shallow copy to avoid indirection */
+    trv_obj=trv_tbl->lst[obj_idx];
+    
+    /* If group was user-specified, flag all variables in group */
+    if(obj_typ == nco_obj_typ_grp && trv_obj.nco_typ == nco_obj_typ_var)
+      if(!strcmp(grp_nm_fll,trv_obj.grp_nm_fll)) trv_tbl->lst[obj_idx].flg_vsg=True;
+
+    /* If variable was user-specified, flag group containing variable */
+    if(obj_typ == nco_obj_typ_var && trv_obj.nco_typ == nco_obj_typ_grp)
+      if(!strcmp(grp_nm_fll,trv_obj.grp_nm_fll)) trv_tbl->lst[obj_idx].flg_gcv=True;
+
+    /* Flag ancestor groups of all user-specified groups and variables */
+    if(strstr(grp_nm_fll,trv_obj.grp_nm_fll)) trv_tbl->lst[obj_idx].flg_ncs=True;
+
+  } /* end loop over obj_idx */
+  
+} /* end nco_flg_set_grp_var_ass() */
+
+int                                   /* [rcd] Return code */
+nco_inq_grps_full                     /* [fnc] Discover and return IDs of apex and all sub-groups */
+(const int grp_id,                    /* I [ID] Apex group */
+ int * const grp_nbr,                 /* O [nbr] Number of groups */
+ int * const grp_ids)                 /* O [ID] Group IDs of children */
 {
   /* Purpose: Discover and return IDs of apex and all sub-groups
      If grp_nbr is NULL, it is ignored 
@@ -60,19 +89,66 @@ nco_inq_grps_full /* [fnc] Discover and return IDs of apex and all sub-groups */
   return rcd; /* [rcd] Return code */
 } /* end nco_inq_grps_full() */
 
+int                                   /* O [rcd] Return code */
+nco_def_grp_full                      /* [fnc] Ensure all components of group path are defined */
+(const int nc_id,                     /* I [ID] netCDF output-file ID */
+ const char * const grp_nm_fll,       /* I [sng] Full group name */
+ int * const grp_out_id)              /* O [ID] Deepest group ID */
+{
+  /* Purpose: Ensure all components of full path name exist and return ID of deepest group */
+  char *grp_pth=NULL; /* [sng] Full group path */
+  char *grp_pth_dpl=NULL; /* [sng] Full group path memory duplicate */
+  char *sls_ptr; /* [sng] Pointer to slash */
+
+  int grp_id_prn; /* [ID] Parent group ID */
+  int rcd=NC_NOERR;
+
+  /* Initialize defaults */
+  *grp_out_id=nc_id;
+
+  grp_pth_dpl=(char *)strdup(grp_nm_fll);
+  grp_pth=grp_pth_dpl;
+
+  /* No need to try to define root group */
+  if(grp_pth[0] == '/') grp_pth++;
+
+  /* Define everything necessary beneath root group */
+  while(strlen(grp_pth)){
+    /* Terminate path at next slash, if any */
+    sls_ptr=strchr(grp_pth,'/');
+
+    /* Replace slash by NUL */
+    if(sls_ptr) *sls_ptr='\0';
+    
+    /* Identify parent group */
+    grp_id_prn=*grp_out_id;
+    
+    /* If current group is not defined, define it */
+    if(nco_inq_ncid_flg(grp_id_prn,grp_pth,grp_out_id)){
+      nco_def_grp(grp_id_prn,grp_pth,grp_out_id);
+    }
+
+    /* Point to next group, if any */
+    if(sls_ptr) grp_pth=sls_ptr+1; else break;
+  } /* end while */
+
+  grp_pth_dpl=(char *)nco_free(grp_pth_dpl);
+  return rcd;
+}  /* end nco_def_grp_full() */
+
 void
-nco_grp_itr_free /* [fnc] Free group iterator */
-(grp_stk_sct * const grp_stk) /* O [sct] Group stack pointer */
+nco_grp_itr_free                      /* [fnc] Free group iterator */
+(grp_stk_sct * const grp_stk)         /* O [sct] Group stack pointer */
 {
   /* Purpose: Free group iterator
      Call a function that hides the iterator implementation behind the API */
   nco_grp_stk_free(grp_stk);
 } /* end nco_grp_itr_free() */
 
-int /* [rcd] Return code */
-nco_grp_stk_get /* [fnc] Initialize and obtain group iterator */
-(const int grp_id, /* I [ID] Apex group */
- grp_stk_sct ** const grp_stk) /* O [sct] Group stack pointer */
+int                                   /* [rcd] Return code */
+nco_grp_stk_get                       /* [fnc] Initialize and obtain group iterator */
+(const int grp_id,                    /* I [ID] Apex group */
+ grp_stk_sct ** const grp_stk)        /* O [sct] Group stack pointer */
 {
   /* Purpose: Initialize and obtain group iterator
      Routine pushes apex group onto stack
@@ -96,10 +172,10 @@ nco_grp_stk_get /* [fnc] Initialize and obtain group iterator */
   return rcd; /* [rcd] Return code */
 } /* end nco_grp_stk_get() */
 
-int /* [rcd] Return code */
-nco_grp_stk_nxt /* [fnc] Find and return next group ID */
-(grp_stk_sct * const grp_stk, /* O [sct] Group stack pointer */
- int * const grp_id) /* O [ID] Group ID */
+int                                   /* [rcd] Return code */
+nco_grp_stk_nxt                       /* [fnc] Find and return next group ID */
+(grp_stk_sct * const grp_stk,         /* O [sct] Group stack pointer */
+ int * const grp_id)                  /* O [ID] Group ID */
 {
   /* Purpose: Find and return next group ID
      Next group ID is popped off stack 
@@ -133,8 +209,8 @@ nco_grp_stk_nxt /* [fnc] Find and return next group ID */
   return rcd; /* [rcd] Return code */
 } /* end nco_grp_stk_nxt() */
 
-grp_stk_sct * /* O [sct] Group stack pointer */
-nco_grp_stk_ntl /* [fnc] Initialize group stack */
+grp_stk_sct *                         /* O [sct] Group stack pointer */
+nco_grp_stk_ntl                       /* [fnc] Initialize group stack */
 (void)
 {
   /* Purpose: Initialize dynamic array implementation of group stack */
@@ -146,9 +222,9 @@ nco_grp_stk_ntl /* [fnc] Initialize group stack */
 } /* end nco_grp_stk_ntl() */
 
 void
-nco_grp_stk_psh /* [fnc] Push group ID onto stack */
-(grp_stk_sct * const grp_stk, /* I/O [sct] Group stack pointer */
- const int grp_id) /* I [ID] Group ID to push */
+nco_grp_stk_psh                       /* [fnc] Push group ID onto stack */
+(grp_stk_sct * const grp_stk,         /* I/O [sct] Group stack pointer */
+ const int grp_id)                    /* I [ID] Group ID to push */
 {
   /* Purpose: Push group ID onto dynamic array implementation of stack */
   grp_stk->grp_nbr++; /* [nbr] Number of items in stack = number of elements in grp_id array */
@@ -165,7 +241,7 @@ nco_grp_stk_pop /* [fnc] Remove and return group ID from stack */
   grp_id=grp_stk->grp_id[grp_stk->grp_nbr-1]; /* [ID] Group ID that was popped */
 
   if(grp_stk->grp_nbr == 0){
-    (void)fprintf(stderr,"%s: ERROR nco_grp_stk_pop() asked to pop empty stack\n",prg_nm_get());
+    (void)fprintf(stderr,"%s: ERROR nco_grp_stk_pop() asked to pop empty stack\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* endif */
   grp_stk->grp_nbr--; /* [nbr] Number of items in stack = number of elements in grp_id array */
@@ -175,480 +251,7889 @@ nco_grp_stk_pop /* [fnc] Remove and return group ID from stack */
 } /* end nco_grp_stk_pop() */
 
 void
-nco_grp_stk_free /* [fnc] Free group stack */
-(grp_stk_sct * const grp_stk) /* O [sct] Group stack pointer */
+nco_grp_stk_free                      /* [fnc] Free group stack */
+(grp_stk_sct * const grp_stk)         /* O [sct] Group stack pointer */
 {
   /* Purpose: Free dynamic array implementation of stack */
   grp_stk->grp_id=(int *)nco_free(grp_stk->grp_id);
 } /* end nco_grp_stk_free() */
 
-int /* [rcd] Return code */
-nco4_inq /* [fnc] Find and return global totals of dimensions, variables, attributes */
-(const int nc_id, /* I [ID] Apex group */
- int * const att_nbr_glb, /* O [nbr] Number of global attributes in file */
- int * const dmn_nbr_all, /* O [nbr] Number of dimensions in file */
- int * const var_nbr_all, /* O [nbr] Number of variables in file */
- int * const rec_dmn_nbr, /* O [nbr] Number of record dimensions in file */
- int * const rec_dmn_ids) /* O [ID] Record dimension IDs in file */
-{
-  /* [fnc] Find and return global totals of dimensions, variables, attributes
-     nco_inq() only applies to a single group
-     Statistics for recursively nested netCDF4 files require more care */
-  int rcd=NC_NOERR;
-  int *grp_ids; /* [ID] Group IDs of children */
-  int grp_id; /* [ID] Group ID */
-  int grp_idx;
-  int grp_nbr; /* [nbr] Number of groups */
-  int var_nbr; /* [nbr] Number of variables */
+void
+nco_prt_grp_nm_fll                    /* [fnc] Debug function to print group full name from ID */
+(const int grp_id)                    /* I [ID] Group ID */
+{
+  size_t grp_nm_lng;
+  char *grp_nm_fll;
 
-  /* Discover and return number of apex and all sub-groups */
-  rcd+=nco_inq_grps_full(nc_id,&grp_nbr,(int *)NULL);
+#if defined(HAVE_NETCDF4_H) 
+  (void)nco_inq_grpname_full(grp_id, &grp_nm_lng, NULL);
+  grp_nm_fll=(char*)nco_malloc(grp_nm_lng+1L);
+  (void)nco_inq_grpname_full(grp_id, &grp_nm_lng, grp_nm_fll);
+  (void)fprintf(stdout,"<%s>",grp_nm_fll);
+  grp_nm_fll=(char*)nco_free(grp_nm_fll);
+#endif
 
-  grp_ids=(int *)nco_malloc(grp_nbr*sizeof(int)); /* [ID] Group IDs of children */
+} /* nco_inq_prt_nm_fll() */
 
-  /* Discover and return IDs of apex and all sub-groups */
-  rcd+=nco_inq_grps_full(nc_id,&grp_nbr,grp_ids);
+int                                  /* [rcd] Return code */
+nco_grp_dfn                          /* [fnc] Define groups in output file */
+(const int out_id,                   /* I [ID] netCDF output-file ID */
+ nm_id_sct *grp_xtr_lst,             /* [grp] Groups to be defined */
+ const int grp_nbr)                  /* I [nbr] Number of groups to be defined */
+{
+  /* Purpose: Define groups in output file */
+  int idx;
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int rcr_lvl=1; /* [nbr] Recursion level */
+
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO nco_grp_dfn() reports file level = 0 parent group = / (root group) will have %d sub-group%s\n",nco_prg_nm_get(),grp_nbr,(grp_nbr == 1) ? "" : "s");
+
+  /* For each (possibly user-specified) top-level group ... */
+  for(idx=0;idx<grp_nbr;idx++){
+    /* Define group and all subgroups */
+    rcd+=nco_def_grp_rcr(grp_xtr_lst[idx].id,out_id,grp_xtr_lst[idx].nm,rcr_lvl);
+  } /* end loop over top-level groups */
+
+  return rcd;
+} /* end nco_grp_dfn() */
+
+int                                   /* [rcd] Return code */
+nco_def_grp_rcr                       /* [fnc] Define groups */
+(const int in_id,                     /* I [ID] netCDF input-file ID */
+ const int out_id,                    /* I [ID] netCDF output-file ID */
+ const char * const prn_nm,           /* I [sng] Parent group name */
+ const int rcr_lvl)                   /* I [nbr] Recursion level */
+{
+  /* Purpose: Recursively define parent group and all subgroups in output file */
+  char grp_nm[NC_MAX_NAME];
+
+  int idx;
+  int grp_nbr; /* I [nbr] Number of sub-groups */
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int grp_in_ids[NC_MAX_DIMS]; /* [ID] Sub-group IDs in input file */ /* fxm: NC_MAX_GRPS? */
+  int grp_out_ids[NC_MAX_DIMS]; /* [ID] Sub-group IDs in output file */
+
+  /* How many and which sub-groups are in this group? */
+  rcd+=nco_inq_grps(in_id,&grp_nbr,grp_in_ids);
+
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO nco_def_grp_rcr() reports file level = %d parent group = %s will have %d sub-group%s\n",nco_prg_nm_get(),rcr_lvl,prn_nm,grp_nbr,(grp_nbr == 1) ? "" : "s");
+
+  /* Define each group, recursively, in output file */
+  for(idx=0;idx<grp_nbr;idx++){
+    /* Obtain name of current group in input file */
+    rcd+=nco_inq_grpname(grp_in_ids[idx],grp_nm);
 
-  /* Initialize variables that accumulate */
-  *var_nbr_all=0; /* [nbr] Total number of variables in file */
+    /* Define group of same name in output file */
+    rcd+=nco_def_grp(out_id,grp_nm,grp_out_ids+idx);
 
-  /* Create list of all variables in input file */
-  for(grp_idx=0;grp_idx<grp_nbr;grp_idx++){
-    grp_id=grp_ids[grp_idx]; /* [ID] Group ID */
+    /* Define group and all sub-groups */
+    rcd+=nco_def_grp_rcr(grp_in_ids[idx],grp_out_ids[idx],grp_nm,rcr_lvl+1);
+  } /* end loop over sub-groups groups */
 
-    /* How many variables in current group? */
-    rcd+=nco_inq_varids(grp_id,&var_nbr,(int *)NULL);
+  return rcd;
+} /* end nco_grp_dfn_rcr() */
 
-    /* Augment total number of variables in file */
-    *var_nbr_all+=var_nbr;
-  } /* end loop over grp */
+int
+nco_get_sls_chr_cnt                   /* [fnc] Get number of slash characterrs in a string path  */
+(char * const nm_fll)                 /* I [sct] Full name  */
+{
+  char *ptr_chr;      /* [sng] Pointer to character '/' in full name */
+  int nbr_sls_chr=0;  /* [nbr] Number of of slash characterrs in  string path */
+  int psn_chr;        /* [nbr] Position of character '/' in in full name */
+ 
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"Looking '/' in \"%s\"...",nm_fll);
 
-  /* Compare to results of nco_inq() */
+  ptr_chr=strchr(nm_fll,'/');
+  while (ptr_chr!=NULL)
   {
-    int att_nbr; /* [nbr] Number of attributes */
-    int dmn_nbr; /* [nbr] Number of dimensions */
-    int rec_dmn_id=NCO_REC_DMN_UNDEFINED; /* [ID] Record dimension ID */
-
-    rcd+=nco_inq(nc_id,&dmn_nbr,&var_nbr,&att_nbr,&rec_dmn_id);
-    if(dbg_lvl_get() >= 2) (void)fprintf(stdout,"%s: INFO nco_inq() reports file contains %d variable%s, %d dimension%s, and %d global attribute%s\n",prg_nm_get(),var_nbr,(var_nbr > 1) ? "s" : "",dmn_nbr,(dmn_nbr > 1) ? "s" : "",att_nbr,(att_nbr > 1) ? "s" : "");
-
-    /* fxm: Backward compatibility */
-    *rec_dmn_nbr=1;
-    if(rec_dmn_ids) *rec_dmn_ids=rec_dmn_id;
-    *att_nbr_glb=att_nbr;
-    *dmn_nbr_all=dmn_nbr;
+    psn_chr=ptr_chr-nm_fll;
+
+    if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout," ::found at %d",psn_chr);
+
+    ptr_chr=strchr(ptr_chr+1,'/');
+
+    nbr_sls_chr++;
   }
 
-  if(dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stdout,"%s: INFO nco4_inq() reports file contains %d group%s comprising %d variable%s, %d dimension%s, and %d global attribute%s\n",prg_nm_get(),grp_nbr,(grp_nbr > 1) ? "s" : "",*var_nbr_all,(*var_nbr_all > 1) ? "s" : "",*dmn_nbr_all,(*dmn_nbr_all > 1) ? "s" : "",*att_nbr_glb,(*att_nbr_glb > 1) ? "s" : "");
+  if(nco_dbg_lvl_get()== nco_dbg_old) (void)fprintf(stdout,"\n");
+  return nbr_sls_chr;
 
-  return rcd;
-} /* end nco4_inq() */
-
-nm_id_sct * /* O [sct] Variable extraction list */
-nco4_var_lst_mk /* [fnc] Create variable extraction list using regular expressions */
-(const int nc_id, /* I [enm] Apex group ID */
- int * const nbr_var_fl, /* O [nbr] Number of variables in input file */
- char * const * const var_lst_in, /* I [sng] User-specified list of variable names and rx's */
- const nco_bool EXCLUDE_INPUT_LIST, /* I [flg] Exclude rather than extract */
- const nco_bool EXTRACT_ALL_COORDINATES, /* I [flg] Process all coordinates */
- int * const var_nbr_xtr) /* I/O [nbr] Number of variables in current extraction list */
-{
-  /* Purpose: Create variable extraction list with or without regular expressions */
-  
-  char *var_sng; /* User-specified variable name or regular expression */
-  char *grp_nm_fll; /* [sng] Fully qualified group name */
-  char *var_nm_fll; /* [sng] Fully qualified variable name */
-  char *grp_nm_fll_sls; /* [sng] Fully qualified group name plus terminating '/' */
-  char *grp_nm_fll_sls_ptr; /* [sng] Pointer to first character following last slash */
-  char *var_nm_fll_sls_ptr; /* Pointer to first character following last slash */
-  char grp_nm[NC_MAX_NAME];
-  char var_nm[NC_MAX_NAME];
-  
-  int *grp_ids; /* [ID] Group IDs of children */
-  int *var_ids;
-  int grp_id; /* [ID] Group ID */
-  int grp_idx;
-  int grp_nbr; /* [nbr] Number of groups in input file */
-  int idx;
-  int jdx;
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int var_idx;
-  int var_idx_crr; /* [idx] Variable index accounting for previous groups */
-  int var_nbr; /* [nbr] Number of variables in current group */
-  int var_nbr_all; /* [nbr] Number of variables in input file */
-  int var_nbr_fst=0; /* [nbr] Number of variables before current group */
-  int var_nbr_tmp;
-#ifdef NCO_HAVE_REGEX_FUNCTIONALITY
-  int rx_mch_nbr;
-#endif /* NCO_HAVE_REGEX_FUNCTIONALITY */
+} /* nco_get_sls_chr_cnt() */
+
+int
+nco_get_sng_pth_sct                   /* [fnc] Get full name token structure (path components) */
+(char * const nm_fll,                 /* I [sng] Full name  */ 
+ sng_pth_sct ***str_pth_lst)          /* I/O [sct] List of path components  */    
+{
+  /* Purpose: Break a full path name into components separated by the slash character (netCDF4 path separator) 
   
-  nco_bool FLG_ROOT_GRP=True; /* [flg] Current group is root group */
-  nco_bool *var_xtr_rqs=NULL; /* [flg] Variable specified in extraction list */
+  strtok()
+  A sequence of calls to this function split str into tokens, which are sequences of contiguous characters 
+  separated by any of the characters that are part of delimiters.
 
-  nm_id_sct *var_lst_all=NULL; /* [sct] All variables in input file */
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
+  strchr() is used to get position of separator that corresponsds to each token
 
-  size_t grp_nm_lng;
-  size_t grp_nm_sls_lng;
+  Use case: "/g16/g16g1/lon1"
 
-  /* Discover and return number of apex and all sub-groups */
-  rcd+=nco_inq_grps_full(nc_id,&grp_nbr,(int *)NULL);
+  Token 0: g16
+  Token 1: g16g1
+  Token 2: lon1
 
-  grp_ids=(int *)nco_malloc(grp_nbr*sizeof(int)); /* [ID] Group IDs of children */
+  Usage:
 
-  /* Discover and return IDs of apex and all sub-groups */
-  rcd+=nco_inq_grps_full(nc_id,&grp_nbr,grp_ids);
+  Get number of tokens in variable full name
+  nbr_sls_chr_var=nco_get_sls_chr_cnt(var_trv->nm_fll); 
 
-  /* Initialize variables that accumulate */
-  var_nbr_all=0; /* [nbr] Total number of variables in file */
+  Alloc
+  str_pth_lst_var=(sng_pth_sct **)nco_malloc(nbr_sls_chr_var*sizeof(sng_pth_sct *)); 
 
-  /* Create list of all variables in input file */
-  for(grp_idx=0;grp_idx<grp_nbr;grp_idx++){
-    grp_id=grp_ids[grp_idx]; /* [ID] Group ID */
+  Get token list in variable full name 
+  (void)nco_get_sng_pth_sct(var_trv->nm_fll,&str_pth_lst_var); */
 
-    /* Re-set Root group flag */
-    FLG_ROOT_GRP=False; 
+  char *ptr_chr;      /* [sng] Pointer to character '/' in full name */
+  char *ptr_chr_tok;  /* [sng] Pointer to character */
+  int nbr_sls_chr=0;  /* [nbr] Number of of slash characterrs in  string path */
+  int psn_chr;        /* [nbr] Position of character '/' in in full name */
+ 
+  /* Duplicate original, since strtok() changes it */
+  char *str=strdup(nm_fll);
 
-    /* How many variables in current group? */
-    rcd+=nco_inq_varids(grp_id,&var_nbr,(int *)NULL);
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"Splitting \"%s\" into tokens:\n",str);
 
-    if(var_nbr > 0){
-      /* Augment total number of variables in file */
-      var_nbr_all+=var_nbr;
+  /* Get first token */
+  ptr_chr_tok=strtok (str,"/");
 
-      /* Allocate space for and obtain variable IDs in current group */
-      var_ids=(int *)nco_malloc(var_nbr*sizeof(int));
-      rcd+=nco_inq_varids(grp_id,&var_nbr,var_ids);
+  ptr_chr=strchr(nm_fll,'/');
 
-      /* Allocate space for and obtain full name of current group */
-      rcd+=nco_inq_grpname(grp_id,grp_nm);
-      rcd+=nco_inq_grpname_len(grp_id,&grp_nm_lng);
-      grp_nm_fll=(char *)nco_malloc((grp_nm_lng+1L)*sizeof(char));
-      rcd+=nco_inq_grpname_full(grp_id,&grp_nm_lng,grp_nm_fll);
+  while (ptr_chr!=NULL)
+  {
+    if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"#%s ",ptr_chr_tok);
 
-      /* Allocate space for full group name */
-      if(!strcmp("/",grp_nm_fll)) FLG_ROOT_GRP=True;
-      /* Root group does not need space for additional */
-      if(FLG_ROOT_GRP) grp_nm_sls_lng=grp_nm_lng; else grp_nm_sls_lng=grp_nm_lng+1L;
-      grp_nm_fll_sls=(char *)nco_malloc((grp_nm_lng+2L)*sizeof(char)); /* Add space for a trailing NUL */
+    psn_chr=ptr_chr-nm_fll;
+    
+    /* Store token and position */
+    (*str_pth_lst)[nbr_sls_chr]=(sng_pth_sct *)nco_malloc(1*sizeof(sng_pth_sct));
 
-      /* Copy canonical name into new space for full name with slash */
-      grp_nm_fll_sls=strcpy(grp_nm_fll_sls,grp_nm_fll);
+    (*str_pth_lst)[nbr_sls_chr]->nm=strdup(ptr_chr_tok);
+    (*str_pth_lst)[nbr_sls_chr]->psn=psn_chr;
 
-      /* Add trailing slash to group name 
-	 Except this would cause full name of root group to be "//" */
-      if(!FLG_ROOT_GRP) grp_nm_fll_sls=strcat(grp_nm_fll_sls,"/");
+    /* The point where the last token was found is kept internally by the function */
+    ptr_chr_tok = strtok (NULL, "/");
 
-      var_nm_fll=(char *)nco_malloc((grp_nm_sls_lng+NC_MAX_NAME+1L)*sizeof(char)); /* [sng] Fully qualified variable name */
-      var_nm_fll=strcpy(var_nm_fll,grp_nm_fll_sls);
-      var_nm_fll_sls_ptr=var_nm_fll+grp_nm_sls_lng; /* [ptr] Pointer to first character following last slash */
-      grp_nm_fll_sls_ptr=grp_nm_fll+grp_nm_sls_lng; /* [ptr] Pointer to first character following last slash */
-    
-      if(dbg_lvl_get() >= nco_dbg_crr) (void)fprintf(stdout,"%s: INFO nco4_var_lst_mk() reports group %s, %s has %d variable%s:\n",prg_nm_get(),grp_nm,grp_nm_fll,var_nbr,(var_nbr > 1) ? "s" : "");
-
-      /* Append all variables in current group to variable list */
-      for(var_idx=0;var_idx<var_nbr;var_idx++){
-	var_idx_crr=var_nbr_fst+var_idx; /* [idx] Variable index accounting for previous groups */
-	var_lst_all=(nm_id_sct *)nco_realloc(var_lst_all,var_nbr_all*sizeof(nm_id_sct));
-
-	/* Get name current variable in current group */
-	(void)nco_inq_varname(grp_id,var_idx,var_nm);
-	
-	/* Tack variable name onto slash following group name */
-	var_nm_fll_sls_ptr=(char *)strcat(var_nm_fll_sls_ptr,var_nm);
-	
-	/* Create full name of each variable */
-	var_lst_all[var_idx_crr].grp_nm=(char *)strdup(grp_nm);
-	var_lst_all[var_idx_crr].var_nm_fll=(char *)strdup(var_nm_fll);
-	var_lst_all[var_idx_crr].nm=(char *)strdup(var_nm);
-	var_lst_all[var_idx_crr].id=var_ids[var_idx];
-	var_lst_all[var_idx_crr].grp_id=grp_id;
-	
-	if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"var_nm=%s, var_nm_fll=%s\n",var_nm,var_nm_fll);
-
-	/* Full variable name has been duplicated, re-terminate with NUL for next variable */
-	*var_nm_fll_sls_ptr='\0'; /* [ptr] Pointer to first character following last slash */
-      } /* end loop over var_idx */
-
-      /* Memory management after current group */
-      var_ids=(int *)nco_free(var_ids);
-      grp_nm_fll=(char *)nco_free(grp_nm_fll);
-      var_nm_fll=(char *)nco_free(var_nm_fll);
+    ptr_chr=strchr(ptr_chr+1,'/');
+
+    nbr_sls_chr++;   
+  }
+
+  if(nco_dbg_lvl_get() == nco_dbg_old)(void)fprintf(stdout,"\n");
+
+  str=(char *)nco_free(str);
+
+  return nbr_sls_chr;
+
+} /* nco_get_sls_chr_cnt() */
+
+void 
+nco_prn_att_trv /* [fnc] Traverse tree to print all group and global attributes */
+(const int nc_id, /* I [id] netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{
+  int grp_id;                 /* [ID] Group ID */
+  int nbr_att;                /* [nbr] Number of attributes */
+  int nbr_dmn;                /* [nbr] Number of dimensions */
+  int nbr_var;                /* [nbr] Number of variables */
+
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct trv=trv_tbl->lst[uidx];
+    if(trv.nco_typ == nco_obj_typ_grp){
+      /* Obtain group ID from netCDF API using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,trv.nm_fll,&grp_id);
+
+      /* Obtain info for group */
+      (void)nco_inq(grp_id,&nbr_dmn,&nbr_var,&nbr_att,(int *)NULL);
+
+      /* List attributes using obtained group ID */
+      if(nbr_att){
+        if(trv.grp_dpt > 0) (void)fprintf(stdout,"Group %s attributes:\n",trv.nm_fll); else (void)fprintf(stdout,"Global attributes:\n"); 
+        (void)nco_prn_att(grp_id,prn_flg,NC_GLOBAL); 
+      } /* nbr_att */
+    } /* end nco_obj_typ_grp */
+  } /* end uidx */
+} /* end nco_prn_att_trv() */
 
-      /* Offset for variables in next group by number of variables in this group */
-      var_nbr_fst=var_nbr; /* [nbr] Number of variables before current group */
+int /* O [nbr] Number of matches to current rx */
+nco_trv_rx_search /* [fnc] Search for pattern matches in traversal table */
+(const char * const rx_sng, /* I [sng] Regular expression pattern */
+ const nco_obj_typ obj_typ, /* I [enm] Object type (group or variable) */
+ trv_tbl_sct * const trv_tbl) /* I/O [sct] Traversal table */
+{
+  /* Purpose: Set flags indicating whether each list member matches given regular expression
+     NB: This function only writes True to the match flag, it never writes False.
+     Input flags are assumed to be stateful, and may contain Trues from previous calls */
 
-    } /* endif current group has variables */
+  char *sng2mch; /* [sng] String to match to regular expression */
+  const char sls_chr='/'; /* [chr] Slash character */
 
-  } /* end loop over grp */
+  int mch_nbr=0;
+#ifndef NCO_HAVE_REGEX_FUNCTIONALITY
+  (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to variables) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",nco_prg_nm_get(),rx_sng);
+  nco_exit(EXIT_FAILURE);
+#else /* NCO_HAVE_REGEX_FUNCTIONALITY */
+  int err_id;
+  int flg_cmp; /* Comparison flags */
+  int flg_exe; /* Execution flages */
   
-  if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO nco4_var_lst_mk() reports file contains %d group%s comprising %d total variable%s\n",prg_nm_get(),grp_nbr,(grp_nbr > 1) ? "s" : "",var_nbr_all,(var_nbr_all > 1) ? "s" : "");
+  regmatch_t *result;
+  regex_t *rx;
+
+  size_t obj_idx;
+  size_t rx_prn_sub_xpr_nbr;
+
+  rx=(regex_t *)nco_malloc(sizeof(regex_t));
+
+  /* Choose RE_SYNTAX_POSIX_EXTENDED regular expression type */
+  flg_cmp=(REG_EXTENDED | REG_NEWLINE);
+  /* Set execution flags */
+  flg_exe=0;
 
-  /* Store results prior to first return */
-  *nbr_var_fl=var_nbr_all; /* O [nbr] Number of variables in input file */
+  /* Compile regular expression */
+  if((err_id=regcomp(rx,rx_sng,flg_cmp))){ /* Compile regular expression */
+    char const * rx_err_sng;  
+    /* POSIX regcomp return error codes */
+    switch(err_id){
+    case REG_BADPAT: rx_err_sng="Invalid pattern"; break;  
+    case REG_ECOLLATE: rx_err_sng="Not implemented"; break;
+    case REG_ECTYPE: rx_err_sng="Invalid character class name"; break;
+    case REG_EESCAPE: rx_err_sng="Trailing backslash"; break;
+    case REG_ESUBREG: rx_err_sng="Invalid back reference"; break;
+    case REG_EBRACK: rx_err_sng="Unmatched left bracket"; break;
+    case REG_EPAREN: rx_err_sng="Parenthesis imbalance"; break;
+    case REG_EBRACE: rx_err_sng="Unmatched {"; break;
+    case REG_BADBR: rx_err_sng="Invalid contents of { }"; break;
+    case REG_ERANGE: rx_err_sng="Invalid range end"; break;
+    case REG_ESPACE: rx_err_sng="Ran out of memory"; break;
+    case REG_BADRPT: rx_err_sng="No preceding re for repetition op"; break;
+    default: rx_err_sng="Invalid pattern"; break;  
+    } /* end switch */
+    (void)fprintf(stdout,"%s: ERROR nco_trv_rx_search() error in regular expression \"%s\" %s\n",nco_prg_nm_get(),rx_sng,rx_err_sng); 
+    nco_exit(EXIT_FAILURE);
+  } /* end if err */
+
+  rx_prn_sub_xpr_nbr=rx->re_nsub+1L; /* Number of parenthesized sub-expressions */
+
+  /* Search string */
+  result=(regmatch_t *)nco_malloc(sizeof(regmatch_t)*rx_prn_sub_xpr_nbr);
+
+  /* Check each object string for match to rx */
+  for(obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++){  
+    /* Check apples against apples and oranges against oranges */
+    if(trv_tbl->lst[obj_idx].nco_typ == obj_typ){
+      /* NB: Here is where match flag would be set to False if input were stateless */
+      /* Regular expressions embedded in simple strings (without forward slashes) apply to stubs
+	 Presence of slash indicates that regular expression applies to full pathname */
+      if(strchr(rx_sng,sls_chr)) sng2mch=trv_tbl->lst[obj_idx].nm_fll; else sng2mch=trv_tbl->lst[obj_idx].nm; 
+      if(!regexec(rx,sng2mch,rx_prn_sub_xpr_nbr,result,flg_exe)){
+        trv_tbl->lst[obj_idx].flg_mch=True;
+        trv_tbl->lst[obj_idx].flg_xtr=True;
+        mch_nbr++;
+      } /* end if match */
+    } /* end if obj_typ */
+  } /* end loop over variables */
+
+  regfree(rx); /* Free regular expression data structure */
+  rx=(regex_t *)nco_free(rx);
+  result=(regmatch_t *)nco_free(result);
+#endif /* NCO_HAVE_REGEX_FUNCTIONALITY */
+
+  return mch_nbr;
+} /* end nco_trv_rx_search() */
+
+nco_bool                              /* O [flg] All names are in file */
+nco_xtr_mk                            /* [fnc] Check -v and -g input names and create extraction list */
+(char ** grp_lst_in,                  /* I [sng] User-specified list of groups */
+ const int grp_xtr_nbr,               /* I [nbr] Number of groups in list */
+ char ** var_lst_in,                  /* I [sng] User-specified list of variables */
+ const int var_xtr_nbr,               /* I [nbr] Number of variables in list */
+ const nco_bool EXTRACT_ALL_COORDINATES, /* I [flg] Process all coordinates */ 
+ const nco_bool flg_unn,              /* I [flg] Select union of specified groups and variables */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Verify all user-specified objects exist in file and create extraction list
+     Verify both variables and groups
+     Handle regular expressions 
+     Set flags in traversal table to help generate extraction list
 
-  /* Return all variables if none were specified and not -c ... */
-  if(*var_nbr_xtr == 0 && !EXTRACT_ALL_COORDINATES){
-    *var_nbr_xtr=var_nbr_all;
-    return var_lst_all;
-  } /* end if */
+     Tests:
+     ncks -O -D 5 -g / ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g '' ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g g1 ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g /g1 ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g /g1/g1 ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g g1.+ ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -v v1 ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g g1.+ -v v1,sc. ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -v scl,/g1/g1g1/v1 ~/nco/data/in_grp.nc ~/foo.nc
+     ncks -O -D 5 -g g3g.+,g9/ -v scl,/g1/g1g1/v1 ~/nco/data/in_grp.nc ~/foo.nc */
+  
+  const char fnc_nm[]="nco_xtr_mk()"; /* [sng] Function name */
+  const char sls_chr='/'; /* [chr] Slash character */
   
-  /* Initialize and allocate extraction flag array to all False */
-  var_xtr_rqs=(nco_bool *)nco_calloc((size_t)var_nbr_all,sizeof(nco_bool));
+  char **obj_lst_in; /* [sng] User-specified list of objects */
+
+  char *sbs_end; /* [sng] Location of user-string match end   in object path */
+  char *sbs_srt; /* [sng] Location of user-string match start in object path */
+  char *sbs_srt_nxt; /* [sng] String to search next for match */
+  char *usr_sng; /* [sng] User-supplied object name */
+  char *var_mch_srt; /* [sng] Location of variable short name in user-string */
   
-  /* Loop through user-specified variable list */
-  for(idx=0;idx<*var_nbr_xtr;idx++){
-    var_sng=var_lst_in[idx];
+  int obj_nbr; /* [nbr] Number of objects in list */
+
+#ifdef NCO_HAVE_REGEX_FUNCTIONALITY
+  int rx_mch_nbr;
+#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+
+  nco_bool flg_ncr_mch_crr; /* [flg] Current group meets anchoring properties of this user-supplied string */
+  nco_bool flg_ncr_mch_grp; /* [flg] User-supplied string anchors at root */
+  nco_bool flg_pth_end_bnd; /* [flg] String ends   at path component boundary */
+  nco_bool flg_pth_srt_bnd; /* [flg] String begins at path component boundary */
+  nco_bool flg_rcr_mch_crr; /* [flg] Current group meets recursion criteria of this user-supplied string */
+  nco_bool flg_rcr_mch_grp; /* [flg] User-supplied string will match groups recursively */
+  nco_bool flg_unn_ffc; /* [flg] Union or Effective Union (not intersection) */
+  nco_bool flg_usr_mch_obj; /* [flg] One or more objects match each user-supplied string */
+  nco_bool flg_var_cnd; /* [flg] Match meets addition condition(s) for variable */
+
+  nco_obj_typ obj_typ; /* [enm] Object type (group or variable) */
+   
+  size_t usr_sng_lng; /* [nbr] Length of user-supplied string */
+
+  trv_sct grp_obj; /* [sct] Traversal table object assumed to be group */
+  trv_sct trv_obj; /* [sct] Traversal table object */
+  trv_sct var_obj; /* [sct] Traversal table object assumed to be variable */
+
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s Extraction list will be formed as %s of group and variable specifications if both are given\n",nco_prg_nm_get(),fnc_nm,(flg_unn) ? "union" : "intersection");
+
+  /* Specifying no groups or variables is equivalent to requesting all */
+  if(!grp_xtr_nbr && !var_xtr_nbr && !EXTRACT_ALL_COORDINATES)
+    for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++) trv_tbl->lst[obj_idx].flg_dfl=True;
+
+  for(unsigned int itr_idx=0;itr_idx<2;itr_idx++){
     
-    /* Convert pound signs (back) to commas */
-    while(*var_sng){
-      if(*var_sng == '#') *var_sng=',';
-      var_sng++;
-    } /* end while */
-    var_sng=var_lst_in[idx];
+    /* Set object type (group or variable) */
+    if(itr_idx == 0){
+      obj_typ=nco_obj_typ_grp;
+      obj_lst_in=(char **)grp_lst_in;
+      obj_nbr=grp_xtr_nbr;
+    }else if(itr_idx == 1){
+      obj_typ=nco_obj_typ_var;
+      obj_lst_in=(char **)var_lst_in;
+      obj_nbr=var_xtr_nbr;
+    } /* endelse */
     
-    /* If var_sng is regular expression ... */
-    if(strpbrk(var_sng,".*^$\\[]()<>+?|{}")){
-      /* ... and regular expression library is present */
+    for(int obj_idx=0;obj_idx<obj_nbr;obj_idx++){
+      
+      /* Initialize state for current user-specified string */
+      flg_ncr_mch_grp=False;
+      flg_rcr_mch_grp=True;
+      flg_usr_mch_obj=False;
+
+      if(!obj_lst_in[obj_idx]){
+        (void)fprintf(stderr,"%s: ERROR %s reports user-supplied %s name is empty\n",nco_prg_nm_get(),fnc_nm,(obj_typ == nco_obj_typ_grp) ? "group" : "variable");
+        nco_exit(EXIT_FAILURE);
+      } /* end else */
+
+      usr_sng=strdup(obj_lst_in[obj_idx]); 
+      usr_sng_lng=strlen(usr_sng);
+
+      /* Turn-off recursion for groups? */
+      if(obj_typ == nco_obj_typ_grp)
+        if(usr_sng_lng > 1L && usr_sng[usr_sng_lng-1L] == sls_chr){
+          /* Remove trailing slash for subsequent searches since canonical group names do not end with slash */
+          flg_rcr_mch_grp=False;
+          usr_sng[usr_sng_lng-1L]='\0';
+          usr_sng_lng--;
+        } /* flg_rcr_mch_grp */
+
+        /* Turn-on root-anchoring for groups? */
+        if(obj_typ == nco_obj_typ_grp)
+          if(usr_sng[0L] == sls_chr)
+            flg_ncr_mch_grp=True;
+
+        /* Convert pound signs (back) to commas */
+        nco_hash2comma(usr_sng);
+
+        /* If usr_sng is regular expression ... */
+        if(strpbrk(usr_sng,".*^$\\[]()<>+?|{}")){
+          /* ... and regular expression library is present */
 #ifdef NCO_HAVE_REGEX_FUNCTIONALITY
-      rx_mch_nbr=nco_lst_meta_search(var_nbr_all,var_lst_all,var_sng,var_xtr_rqs);
-      if(rx_mch_nbr == 0) (void)fprintf(stdout,"%s: WARNING: Regular expression \"%s\" does not match any variables\nHINT: See regular expression syntax examples at http://nco.sf.net/nco.html#rx\n",prg_nm_get(),var_sng); 
-      continue;
-#else
-      (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to variables) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",prg_nm_get(),var_sng);
-      nco_exit(EXIT_FAILURE);
-#endif /* NCO_HAVE_REGEX_FUNCTIONALITY */
-    } /* end if regular expression */
-    
-    /* Normal variable so search through variable array */
-    for(jdx=0;jdx<var_nbr_all;jdx++)
-      if(!strcmp(var_sng,var_lst_all[jdx].nm)) break;
+          if((rx_mch_nbr=nco_trv_rx_search(usr_sng,obj_typ,trv_tbl))) flg_usr_mch_obj=True;
+          if(!rx_mch_nbr) (void)fprintf(stdout,"%s: WARNING: Regular expression \"%s\" does not match any %s\nHINT: See regular expression syntax examples at http://nco.sf.net/nco.html#rx\n",nco_prg_nm_get(),usr_sng,(obj_typ == nco_obj_typ_grp) ? "group" : "variable"); 
+          continue;
+#else /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+          (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to variables) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",nco_prg_nm_get(),usr_sng);
+          nco_exit(EXIT_FAILURE);
+#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+        } /* end if regular expression */
 
-    /* Mark any match as requested for inclusion by user */
-    if(jdx != var_nbr_all){
-      var_xtr_rqs[jdx]=True;
-    }else{
-      if(EXCLUDE_INPUT_LIST){ 
-	/* Variable need not be present if list will be excluded later ... */
-	if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO nco4_var_lst_mk() reports explicitly excluded variable \"%s\" is not in input file anyway\n",prg_nm_get(),var_sng); 
-      }else{ /* !EXCLUDE_INPUT_LIST */
-	/* Variable should be included but no matches found so die */
-	(void)fprintf(stdout,"%s: ERROR nco4_var_lst_mk() reports user-specified variable \"%s\" is not in input file\n",prg_nm_get(),var_sng); 
-	nco_exit(EXIT_FAILURE);
-      } /* !EXCLUDE_INPUT_LIST */
-    } /* end else */
+        /* usr_sng is not rx, so manually search for multicomponent matches */
+        for(unsigned int tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
 
-  } /* end loop over var_lst_in */
-  
-  /* Create final variable list using boolean flag array */
-  
-  /* malloc() xtr_lst to maximium size(var_nbr_all) */
-  xtr_lst=(nm_id_sct *)nco_malloc(var_nbr_all*sizeof(nm_id_sct));
-  var_nbr_tmp=0; /* var_nbr_tmp is incremented */
-  for(idx=0;idx<var_nbr_all;idx++){
-    /* Copy variable to extraction list */
-    if(var_xtr_rqs[idx]){
-      xtr_lst[var_nbr_tmp].grp_nm=(char *)strdup(var_lst_all[idx].grp_nm);
-      xtr_lst[var_nbr_tmp].var_nm_fll=(char *)strdup(var_lst_all[idx].var_nm_fll);
-      xtr_lst[var_nbr_tmp].nm=(char *)strdup(var_lst_all[idx].nm);
-      xtr_lst[var_nbr_tmp].id=var_lst_all[idx].id;
-      xtr_lst[var_nbr_tmp].grp_id=var_lst_all[idx].grp_id;
-      var_nbr_tmp++;
-    } /* end if */
-  } /* end loop over var */
-  
-  /* re-alloc() list to actual size */  
-  xtr_lst=(nm_id_sct *)nco_realloc(xtr_lst,var_nbr_tmp*sizeof(nm_id_sct));
+          /* Create shallow copy to avoid indirection */
+          trv_obj=trv_tbl->lst[tbl_idx];
+
+          if(trv_obj.nco_typ == obj_typ){
+
+            /* Initialize defaults for current candidate path to match */
+            flg_pth_srt_bnd=False;
+            flg_pth_end_bnd=False;
+            flg_var_cnd=False;
+            flg_rcr_mch_crr=True;
+            flg_ncr_mch_crr=True;
+
+            /* Look for partial match, not necessarily on path boundaries */
+	    /* 20130829: Variables and group names may be proper subsets of ancestor group names
+	       e.g., variable named g9 in group named g90 is /g90/g9
+	       e.g., group named g1 in group named g10 is g10/g1
+	       Search algorithm must test same full name multiple times in such cases
+	       For variables, only final match (closest to end full name) need be fully tested */
+	    sbs_srt=NULL;
+	    sbs_srt_nxt=trv_obj.nm_fll;
+            while((sbs_srt_nxt=strstr(sbs_srt_nxt,usr_sng))){
+	      /* Object name contains usr_sng at least once */
+	      /* Complete path-check below will begin at this substring ... */
+	      sbs_srt=sbs_srt_nxt; 
+	      /* ...for groups always at first occurence of substring... */
+	      if(obj_typ == nco_obj_typ_grp) break;
+	      /* ...and also here for variables unless match is found in next iteration after advancing substring... */
+	      if(sbs_srt_nxt+usr_sng_lng <= trv_obj.nm_fll+trv_obj.nm_fll_lng) sbs_srt_nxt+=usr_sng_lng; else break;
+	    } /* end while */
+
+	    /* Does object name contain usr_sng? */
+            if(sbs_srt){
+	      /* Ensure match spans (begins and ends on) whole path-component boundaries
+		 Full path-check starts at current substring */
+
+              /* Does match begin at path component boundary ... directly on a slash? */
+              if(*sbs_srt == sls_chr) flg_pth_srt_bnd=True;
+
+              /* ...or one after a component boundary? */
+              if((sbs_srt > trv_obj.nm_fll) && (*(sbs_srt-1L) == sls_chr)) flg_pth_srt_bnd=True;
+
+              /* Does match end at path component boundary ... directly on a slash? */
+              sbs_end=sbs_srt+usr_sng_lng-1L;
+
+              if(*sbs_end == sls_chr) flg_pth_end_bnd=True;
+
+              /* ...or one before a component boundary? */
+              if(sbs_end <= trv_obj.nm_fll+trv_obj.nm_fll_lng-1L)
+                if((*(sbs_end+1L) == sls_chr) || (*(sbs_end+1L) == '\0'))
+                  flg_pth_end_bnd=True;
+
+              /* Additional condition for variables is user-supplied string must end with short form of variable name */
+              if(obj_typ == nco_obj_typ_var){
+                if(trv_obj.nm_lng <= usr_sng_lng){
+                  var_mch_srt=usr_sng+usr_sng_lng-trv_obj.nm_lng;
+                  if(!strcmp(var_mch_srt,trv_obj.nm)) flg_var_cnd=True;
+                } /* endif */
+                if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stderr,"%s: INFO %s reports variable %s %s additional conditions for variable match with %s.\n",nco_prg_nm_get(),fnc_nm,usr_sng,(flg_var_cnd) ? "meets" : "fails",trv_obj.nm_fll);
+              } /* endif var */
+
+              /* If anchoring, match must begin at root */
+              if(flg_ncr_mch_grp && *sbs_srt != sls_chr) flg_ncr_mch_crr=False;
 
-  var_lst_all=(nm_id_sct *)nco_nm_id_lst_free(var_lst_all,var_nbr_all);
-  var_xtr_rqs=(nco_bool *)nco_free(var_xtr_rqs);
+              /* If no recursion, match must terminate user-supplied string */
+              if(!flg_rcr_mch_grp && *(sbs_end+1L)) flg_rcr_mch_crr=False;
 
-  /* Store values for return */
-  *var_nbr_xtr=var_nbr_tmp;    
+              /* Set traversal table flags */
+              if(obj_typ == nco_obj_typ_var){
+                /* Variables must meet necessary flags for variables */
+                if(flg_pth_srt_bnd && flg_pth_end_bnd && flg_var_cnd){
+                  trv_tbl->lst[tbl_idx].flg_mch=True;
+                  trv_tbl->lst[tbl_idx].flg_rcr=False;
+                  /* Was matched variable specified as full path (i.e., beginning with slash?) */
+                  if(*usr_sng == sls_chr) trv_tbl->lst[tbl_idx].flg_vfp=True;
+                } /* end flags */
+              }else{ /* !nco_obj_typ_var */
+                /* Groups must meet necessary flags for groups */
+                if(flg_pth_srt_bnd && flg_pth_end_bnd && flg_ncr_mch_crr && flg_rcr_mch_crr){
+                  trv_tbl->lst[tbl_idx].flg_mch=True;
+                  trv_tbl->lst[tbl_idx].flg_rcr=flg_rcr_mch_grp;
+                } /* end flags */
+              }  /* !nco_obj_typ_var */
+              /* Set flags for groups and variables associated with this object */
+              if(trv_tbl->lst[tbl_idx].flg_mch) nco_flg_set_grp_var_ass(trv_obj.grp_nm_fll,obj_typ,trv_tbl);
 
-  if(dbg_lvl_get() >= nco_dbg_var){
-    (void)fprintf(stdout,"%s: INFO nco4_var_lst_mk() reports following %d variable%s matched sub-setting and regular expressions:\n",prg_nm_get(),*var_nbr_xtr,(*var_nbr_xtr > 1) ? "s" : "");
-    for(idx=0;idx<*var_nbr_xtr;idx++) (void)fprintf(stdout,"var_nm = %s, var_nm_fll = %s\n",xtr_lst[idx].nm,xtr_lst[idx].var_nm_fll);
+              /* Set function return condition */
+              if(trv_tbl->lst[tbl_idx].flg_mch) flg_usr_mch_obj=True;
+
+              if(nco_dbg_lvl_get() == nco_dbg_old){
+                (void)fprintf(stderr,"%s: INFO %s reports %s %s matches filepath %s. Begins on boundary? %s. Ends on boundary? %s. Extract? %s.",nco_prg_nm_get(),fnc_nm,(obj_typ == nco_obj_typ_grp) ? "group" : "variable",usr_sng,trv_obj.nm_fll,(flg_pth_srt_bnd) ? "Yes" : "No",(flg_pth_end_bnd) ? "Yes" : "No",(trv_tbl->lst[tbl_idx].flg_mch) ?  "Yes" : "No");
+                if(obj_typ == nco_obj_typ_grp) (void)fprintf(stderr," Anchored? %s.",(flg_ncr_mch_grp) ? "Yes" : "No");
+                if(obj_typ == nco_obj_typ_grp) (void)fprintf(stderr," Recursive? %s.",(trv_tbl->lst[tbl_idx].flg_rcr) ? "Yes" : "No");
+                if(obj_typ == nco_obj_typ_grp) (void)fprintf(stderr," flg_gcv? %s.",(trv_tbl->lst[tbl_idx].flg_gcv) ? "Yes" : "No");
+                if(obj_typ == nco_obj_typ_grp) (void)fprintf(stderr," flg_ncs? %s.",(trv_tbl->lst[tbl_idx].flg_ncs) ? "Yes" : "No");
+                if(obj_typ == nco_obj_typ_var) (void)fprintf(stderr," flg_vfp? %s.",(trv_tbl->lst[tbl_idx].flg_vfp) ? "Yes" : "No");
+                if(obj_typ == nco_obj_typ_var) (void)fprintf(stderr," flg_vsg? %s.",(trv_tbl->lst[tbl_idx].flg_vsg) ? "Yes" : "No");
+                (void)fprintf(stderr,"\n");
+              } /* end if */
+
+            } /* endif strstr() */
+          } /* endif nco_obj_typ */
+        } /* end loop over tbl_idx */
+
+        if(!flg_usr_mch_obj){
+          (void)fprintf(stderr,"%s: ERROR %s reports user-supplied %s name or regular expression %s is not in and/or does not match contents of input file\n",nco_prg_nm_get(),fnc_nm,(obj_typ == nco_obj_typ_grp) ? "group" : "variable",usr_sng);
+          nco_exit(EXIT_FAILURE);
+        } /* flg_usr_mch_obj */
+        /* Free dynamic memory */
+        if(usr_sng) usr_sng=(char *)nco_free(usr_sng);
+
+    } /* obj_idx */
+
+    if(nco_dbg_lvl_get() >= nco_dbg_sbr){
+      (void)fprintf(stdout,"%s: INFO %s reports following %s match sub-setting and regular expressions:\n",nco_prg_nm_get(),fnc_nm,(obj_typ == nco_obj_typ_grp) ? "groups" : "variables");
+      trv_tbl_prn_flg_mch(trv_tbl,obj_typ);
+    } /* endif dbg */
+
+  } /* itr_idx */
+
+  /* Compute intersection of groups and variables if necessary
+  Intersection criteria flag, flg_nsx, is satisfied by default. Unset later when necessary. */
+  for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++) trv_tbl->lst[obj_idx].flg_nsx=True;
+
+  /* Union is same as intersection if either variable or group list is empty, otherwise check intersection criteria */
+  if(flg_unn || !grp_xtr_nbr || !var_xtr_nbr) flg_unn_ffc=True; else flg_unn_ffc=False;
+  if(!flg_unn_ffc){
+    for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++){
+      var_obj=trv_tbl->lst[obj_idx];
+      if(var_obj.nco_typ == nco_obj_typ_var){
+        /* Cancel (non-full-path) variable match unless variable is also in user-specified group */
+        if(var_obj.flg_mch && !var_obj.flg_vfp){
+          for(unsigned int obj2_idx=0;obj2_idx<trv_tbl->nbr;obj2_idx++){
+            grp_obj=trv_tbl->lst[obj2_idx];
+            if(grp_obj.nco_typ == nco_obj_typ_grp && !strcmp(var_obj.grp_nm_fll,grp_obj.grp_nm_fll)) break;
+          } /* end loop over obj2_idx */
+          if(!grp_obj.flg_mch) trv_tbl->lst[obj_idx].flg_nsx=False;
+        } /* flg_mch && flg_vfp */
+      } /* nco_obj_typ_grp */
+    } /* end loop over obj_idx */
+  } /* flg_unn */
+
+  /* Combine previous flags into initial extraction flag */
+  for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++){
+    /* Extract object if ... */
+    if(
+      (flg_unn_ffc && trv_tbl->lst[obj_idx].flg_mch) || /* ...union mode object matches user-specified string... */
+      (flg_unn_ffc && trv_tbl->lst[obj_idx].flg_vsg) || /* ...union mode variable selected because group matches... */
+      (flg_unn_ffc && trv_tbl->lst[obj_idx].flg_gcv) || /* ...union mode contains matched variable... */
+      (trv_tbl->lst[obj_idx].flg_dfl) || /* ...user-specified no sub-setting... */
+      (!flg_unn_ffc && trv_tbl->lst[obj_idx].flg_mch && trv_tbl->lst[obj_idx].flg_nsx) || /* ...intersection mode variable matches group... */
+      False) 
+      trv_tbl->lst[obj_idx].flg_xtr=True;
+  } /* end loop over obj_idx */
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    for(unsigned int obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++){
+      /* Create shallow copy to avoid indirection */
+      trv_obj=trv_tbl->lst[obj_idx];
+
+      (void)fprintf(stderr,"%s: INFO %s final flags of %s %s:\n",nco_prg_nm_get(),fnc_nm,(trv_obj.nco_typ == nco_obj_typ_grp) ? "group" : "variable",trv_obj.nm_fll);
+      (void)fprintf(stderr," flg_dfl? %s.",(trv_obj.flg_dfl) ? "Yes" : "No");
+      (void)fprintf(stderr," flg_mch? %s.",(trv_obj.flg_mch) ? "Yes" : "No");
+      (void)fprintf(stderr," flg_xtr? %s.",(trv_obj.flg_xtr) ? "Yes" : "No");
+      if(trv_obj.nco_typ == nco_obj_typ_var) (void)fprintf(stderr," flg_vfp? %s.",(trv_obj.flg_vfp) ? "Yes" : "No");
+      if(trv_obj.nco_typ == nco_obj_typ_var) (void)fprintf(stderr," flg_vsg? %s.",(trv_obj.flg_vsg) ? "Yes" : "No");
+      if(trv_obj.nco_typ == nco_obj_typ_grp) (void)fprintf(stderr," flg_gcv? %s.",(trv_obj.flg_gcv) ? "Yes" : "No");
+      if(trv_obj.nco_typ == nco_obj_typ_grp) (void)fprintf(stderr," flg_ncs? %s.",(trv_obj.flg_ncs) ? "Yes" : "No");
+      (void)fprintf(stderr,"\n");
+    } /* end loop over obj_idx */
   } /* endif dbg */
 
-  return xtr_lst;
-} /* end nco4_var_lst_mk() */
+  /* Print extraction list in debug mode */
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)trv_tbl_prn_xtr(trv_tbl,fnc_nm);
 
-int /* [rcd] Return code */
-nco_grp_dfn /* [fnc] Define groups in output file */
-(const int out_id, /* I [enm] netCDF output-file ID */
- nm_id_sct *grp_xtr_lst, /* [grp] Groups to be defined */
- const int grp_nbr) /* I [nbr] Number of groups to be defined */
+  return (nco_bool)True;
+
+} /* end nco_xtr_mk() */
+
+void
+nco_xtr_xcl                           /* [fnc] Convert extraction list to exclusion list */
+(trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
 {
-  /* Purpose: Define groups in output file */
-  int idx;
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int rcr_lvl=1; /* [nbr] Recursion level */
+  /* Purpose: Convert extraction list to exclusion list */
 
-  if(dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO nco_grp_dfn() reports file level = 0 parent group = / (root group) will have %d sub-group%s\n",prg_nm_get(),grp_nbr,(grp_nbr == 1) ? "" : "s");
+  const char fnc_nm[]="nco_xtr_xcl()"; /* [sng] Function name */
 
-  /* For each (possibly user-specified) top-level group ... */
-  for(idx=0;idx<grp_nbr;idx++){
-    /* Define group and all subgroups */
-    rcd+=nco_def_grp_rcr(grp_xtr_lst[idx].id,out_id,grp_xtr_lst[idx].nm,rcr_lvl);
-  } /* end loop over top-level groups */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_var) 
+      trv_tbl->lst[uidx].flg_xtr=!trv_tbl->lst[uidx].flg_xtr;
 
-  return rcd;
-} /* end nco_grp_dfn() */
+  /* Print extraction list in debug mode */
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)trv_tbl_prn_xtr(trv_tbl,fnc_nm);
 
-int /* [rcd] Return code */
-nco_def_grp_rcr
-(const int in_id, /* I [enm] netCDF input-file ID */
- const int out_id, /* I [enm] netCDF output-file ID */
- const char * const prn_nm, /* I [sng] Parent group name */
- const int rcr_lvl) /* I [nbr] Recursion level */
+  return;
+} /* end nco_xtr_xcl() */
+
+void
+nco_xtr_crd_add                       /* [fnc] Add all coordinates to extraction list */
+(trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
 {
-  /* Purpose: Recursively define parent group and all subgroups in output file */
-  char grp_nm[NC_MAX_NAME];
+  /* Purpose: Add all coordinates to extraction list
+  Find all coordinates (variables with same names and sizes as dimensions) and
+  ensure they are marked for extraction */
 
-  int idx;
-  int grp_nbr; /* I [nbr] Number of sub-groups */
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int grp_in_ids[NC_MAX_DIMS]; /* [ID] Sub-group IDs in input file */ /* fxm: NC_MAX_GRPS? */
-  int grp_out_ids[NC_MAX_DIMS]; /* [ID] Sub-group IDs in output file */
+  const char fnc_nm[]="nco_xtr_crd_add()"; /* [sng] Function name */
 
-  /* How many and which sub-groups are in this group? */
-  rcd+=nco_inq_grps(in_id,&grp_nbr,grp_in_ids);
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
 
-  if(dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO nco_def_grp_rcr() reports file level = %d parent group = %s will have %d sub-group%s\n",prg_nm_get(),rcr_lvl,prn_nm,grp_nbr,(grp_nbr == 1) ? "" : "s");
+    /* Filter variables  */
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
+      trv_sct var_trv=trv_tbl->lst[idx_var]; 
 
-  /* Define each group, recursively, in output file */
-  for(idx=0;idx<grp_nbr;idx++){
-    /* Obtain name of current group in input file */
-    rcd+=nco_inq_grpname(grp_in_ids[idx],grp_nm);
+      /* If variable is coordinate variable then mark it for extraction ...simple */
+      if(var_trv.is_crd_var){
+        trv_tbl->lst[idx_var].flg_xtr=True;
+      }
 
-    /* Define group of same name in output file */
-    rcd+=nco_def_grp(out_id,grp_nm,grp_out_ids+idx);
+    } /* Filter variables  */
+  } /* Loop table */
 
-    /* Define group and all sub-groups */
-    rcd+=nco_def_grp_rcr(grp_in_ids[idx],grp_out_ids[idx],grp_nm,rcr_lvl+1);
-  } /* end loop over sub-groups groups */
+  /* Print extraction list in debug mode */
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)trv_tbl_prn_xtr(trv_tbl,fnc_nm);
 
-  return rcd;
-} /* end nco_grp_dfn_rcr() */
+  return;
+} /* end nco_xtr_crd_add() */
 
-nm_id_sct * /* O [sct] Group extraction list */
-nco_grp_lst_mk /* [fnc] Create group extraction list using regular expressions */
-(const int nc_id, /* I [enm] netCDF file ID */
- char * const * const grp_lst_in, /* I [sng] User-specified list of group names and rx's */
- const nco_bool EXCLUDE_INPUT_LIST, /* I [flg] Exclude rather than extract */
- int * const grp_nbr_xtr) /* I/O [nbr] Number of groups in current extraction list */
-{
-  /* Purpose: Create group extraction list with or without regular expressions
-     Code adapted from nco_var_lst_mk() and nearly identical in all respects
-     Routine is currently (20110775) intended to be called either with 
-     1. no user-specified groups (same as specifying all top-level groups), or,
-     2. a list of user-specified (possibly regular expressions) of top-level groups
-     Routine returns list of structures of all top-level groups matching input expression(s) */
-  
-  char *grp_sng; /* User-specified group name or regular expression */
-  char grp_nm[NC_MAX_NAME];
-  
-  int grp_in_ids[NC_MAX_DIMS]; /* [ID] Sub-group IDs in input file */ /* fxm: NC_MAX_GRPS? */
-  int grp_nbr_top; /* [nbr] Number of top-level groups */
-  int idx;
-  int jdx;
-  int grp_nbr_tmp;
-  int rcd=NC_NOERR; /* [rcd] Return code */
-#ifdef NCO_HAVE_REGEX_FUNCTIONALITY
-  int rx_mch_nbr;
-#endif /* NCO_HAVE_REGEX_FUNCTIONALITY */
-  
-  nm_id_sct *grp_lst=NULL; /* grp_lst may be alloc()'d from NULL with -c option */
-  nm_id_sct *grp_lst_all=NULL; /* [sct] All groups in input file */
-  nco_bool *grp_xtr_rqs=NULL; /* [flg] Group specified in extraction list */
-
-  /* Find number of top-level groups */
-  rcd+=nco_inq_grps(nc_id,&grp_nbr_top,grp_in_ids);
-
-  /* Create list of all groups in input file */
-  grp_lst_all=(nm_id_sct *)nco_malloc(grp_nbr_top*sizeof(nm_id_sct));
-  for(idx=0;idx<grp_nbr_top;idx++){
-    /* Get name of each group */
-    (void)nco_inq_grpname(grp_in_ids[idx],grp_nm);
-    grp_lst_all[idx].nm=(char *)strdup(grp_nm);
-    grp_lst_all[idx].id=grp_in_ids[idx];
-  } /* end loop over idx */
-  
-  /* Return all top-level groups if none were specified ... */
-  if(*grp_nbr_xtr == 0){
-    *grp_nbr_xtr=grp_nbr_top;
-    return grp_lst_all;
-  } /* end if */
-  
-  /* Initialize and allocate extraction flag array to all False */
-  grp_xtr_rqs=(nco_bool *)nco_calloc((size_t)grp_nbr_top,sizeof(nco_bool));
-  
-  /* Loop through user-specified group list */
-  for(idx=0;idx<*grp_nbr_xtr;idx++){
-    grp_sng=grp_lst_in[idx];
-    
-    /* Convert pound signs (back) to commas */
-    while(*grp_sng){
-      if(*grp_sng == '#') *grp_sng=',';
-      grp_sng++;
-    } /* end while */
-    grp_sng=grp_lst_in[idx];
-    
-    /* If grp_sng is regular expression ... */
-    if(strpbrk(grp_sng,".*^$\\[]()<>+?|{}")){
-      /* ... and regular expression library is present */
-#ifdef NCO_HAVE_REGEX_FUNCTIONALITY
-      rx_mch_nbr=nco_lst_meta_search(grp_nbr_top,grp_lst_all,grp_sng,grp_xtr_rqs);
-      if(rx_mch_nbr == 0) (void)fprintf(stdout,"%s: WARNING: Regular expression \"%s\" does not match any groups\nHINT: See regular expression syntax examples at http://nco.sf.net/nco.html#rx\n",prg_nm_get(),grp_sng); 
-      continue;
-#else
-      (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to groups) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",prg_nm_get(),grp_sng);
-      nco_exit(EXIT_FAILURE);
-#endif /* NCO_HAVE_REGEX_FUNCTIONALITY */
-    } /* end if regular expression */
-    
-    /* Normal group so search through group array */
-    for(jdx=0;jdx<grp_nbr_top;jdx++)
-      if(!strcmp(grp_sng,grp_lst_all[jdx].nm)) break;
+void
+nco_xtr_cf_add                        /* [fnc] Add to extraction list variables associated with CF convention */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const char * const cf_nm,            /* I [sng] CF convention ("coordinates" or "bounds") */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Add to extraction list all variables associated with specified CF convention
+     Driver routine for nco_xtr_cf_prv_add()
+     Detect associated coordinates specified by CF "bounds" and "coordinates" conventions
+     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#coordinate-system */ 
 
-    if(jdx != grp_nbr_top){
-      /* Mark this group as requested for inclusion by user */
-      grp_xtr_rqs[jdx]=True;
-    }else{
-      if(EXCLUDE_INPUT_LIST){ 
-	/* Group need not be present if list will be excluded later ... */
-	if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO nco_grp_lst_mk() reports explicitly excluded group \"%s\" is not in input file anyway\n",prg_nm_get(),grp_sng); 
-      }else{ /* !EXCLUDE_INPUT_LIST */
-	/* Group should be included but no matches found so die */
-	(void)fprintf(stdout,"%s: ERROR nco_grp_lst_mk() reports user-specified top-level group \"%s\" is not in input file\n",prg_nm_get(),grp_sng); 
-	nco_exit(EXIT_FAILURE);
-      } /* !EXCLUDE_INPUT_LIST */
-    } /* end else */
+  const char fnc_nm[]="nco_xtr_cf_add()"; /* [sng] Function name */
 
-  } /* end loop over grp_lst_in */
-  
-  /* Create final group list using bool array */
-  
-  /* malloc() grp_lst to maximium size(grp_nbr_top) */
-  grp_lst=(nm_id_sct *)nco_malloc(grp_nbr_top*sizeof(nm_id_sct));
-  grp_nbr_tmp=0; /* grp_nbr_tmp is incremented */
-  for(idx=0;idx<grp_nbr_top;idx++){
-    /* Copy group to extraction list */
-    if(grp_xtr_rqs[idx]){
-      grp_lst[grp_nbr_tmp].nm=(char *)strdup(grp_lst_all[idx].nm);
-      grp_lst[grp_nbr_tmp].id=grp_lst_all[idx].id;
-      grp_nbr_tmp++;
-    } /* end if */
-    (void)nco_free(grp_lst_all[idx].nm);
-  } /* end loop over var */
-  
-  /* realloc() list to actual size */  
-  grp_lst=(nm_id_sct *)nco_realloc(grp_lst,grp_nbr_tmp*sizeof(nm_id_sct));
+  /* Search for and add CF-compliant bounds and coordinates to extraction list */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct trv=trv_tbl->lst[uidx];
+    if(trv.nco_typ == nco_obj_typ_var && trv.flg_xtr) (void)nco_xtr_cf_prv_add(nc_id,&trv,cf_nm,trv_tbl);
+  } /* end loop over table */
+
+
+  /* Print extraction list in debug mode */
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)trv_tbl_prn_xtr(trv_tbl,fnc_nm);
+
+  return;
+} /* nco_xtr_cf_add() */
+
+void
+nco_xtr_cf_prv_add                    /* [fnc] Add specified CF-compliant coordinates of specified variable to extraction list */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const trv_sct * const var_trv,       /* I [sct] Variable (object) */
+ const char * const cf_nm,            /* I [sng] CF convention ( "coordinates" or "bounds") */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Detect associated coordinates specified by CF "bounds" or "coordinates" convention for single variable
+     Private routine called by nco_xtr_cf_add()
+     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#coordinate-system */ 
+
+  char **cf_lst; /* [sng] 1D array of list elements */
+
+  char att_nm[NC_MAX_NAME]; /* [sng] Attribute name */
+
+  const char dlm_sng[]=" "; /* [sng] Delimiter string */
+
+  int grp_id; /* [id] Group ID */
+  int nbr_att; /* [nbr] Number of attributes */
+  int nbr_cf; /* [nbr] Number of coordinates specified in "bounds" or "coordinates" attribute */
+  int var_id; /* [id] Variable ID */
+
+  assert(var_trv->nco_typ == nco_obj_typ_var);
+
+  /* Obtain group ID from netCDF API using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,var_trv->grp_nm_fll,&grp_id);
+
+  /* Obtain variable ID */
+  (void)nco_inq_varid(grp_id,var_trv->nm,&var_id);
+
+  /* Find number of attributes */
+  (void)nco_inq_varnatts(grp_id,var_id,&nbr_att);
+
+  assert(nbr_att == var_trv->nbr_att);
+
+  /* Loop attributes */
+  for(int idx_att=0;idx_att<nbr_att;idx_att++){
+
+    /* Get attribute name */
+    (void)nco_inq_attname(grp_id,var_id,idx_att,att_nm);
+
+    /* Is attribute part of CF convention? */
+    if(!strcmp(att_nm,cf_nm)){
+      char *att_val;
+      long att_sz;
+      nc_type att_typ;
+
+      /* Yes, get list of specified attributes */
+      (void)nco_inq_att(grp_id,var_id,att_nm,&att_typ,&att_sz);
+      if(att_typ != NC_CHAR){
+        (void)fprintf(stderr,"%s: WARNING \"%s\" attribute for variable %s is type %s, not %s. This violates CF convention for specifying additional attributes. Therefore will skip this attribute.\n",
+          nco_prg_nm_get(),att_nm,var_trv->nm_fll,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR));
+        return;
+      } /* end if */
+      att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+      if(att_sz > 0L) (void)nco_get_att(grp_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+      /* NUL-terminate attribute */
+      att_val[att_sz]='\0';
 
-  grp_lst_all=(nm_id_sct *)nco_free(grp_lst_all);
-  grp_xtr_rqs=(nco_bool *)nco_free(grp_xtr_rqs);
+      /* Split list into separate coordinate names
+      Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+      cf_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_cf);
+      /* ...for each coordinate in CF convention attribute, i.e., "bounds" or "coordinate"... */
+      for(int idx_cf=0;idx_cf<nbr_cf;idx_cf++){
+        char *cf_lst_var=cf_lst[idx_cf];
+        if(!cf_lst_var) continue;
+
+        nco_bool flg_cf_fnd=False; /* [flg] Used to print an error message that CF variable was not found */
+
+        /* Does CF-variable actually exist in input file, at least by its short name?. Find them all... */
+        for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+          trv_sct trv=trv_tbl->lst[uidx];
+          if(trv.nco_typ == nco_obj_typ_var && !strcmp(trv.nm,cf_lst_var)){
+
+            /* Mark variable for extraction */
+            trv_tbl->lst[uidx].flg_cf=True;
+            trv_tbl->lst[uidx].flg_xtr=True;
+            flg_cf_fnd=True;
+          }
+        } /* end loop over uidx */
+
+        /* CF not found ? */
+        if(!flg_cf_fnd){     
+          (void)fprintf(stderr,"%s: WARNING Variable %s, specified in \"%s\" attribute of variable %s, is not present in input file\n",
+            nco_prg_nm_get(),cf_lst[idx_cf],cf_nm,var_trv->nm_fll);
+        } /* CF not found ? */
+      } /* end loop over idx_cf */
+
+      /* Free allocated memory */
+      att_val=(char *)nco_free(att_val);
+      cf_lst=nco_sng_lst_free(cf_lst,nbr_cf);
+
+    } /* end strcmp() */
+  } /* end loop over attributes */
+
+  return;
+} /* nco_xtr_cf_prv_add() */
+
+
+
+nm_id_sct *                           /* O [sct] Extraction list */  
+nco_trv_tbl_nm_id                     /* [fnc] Create extraction list of nm_id_sct from traversal table */
+(const int nc_id_in,                  /* I [ID] netCDF input file ID */
+ const int nc_id_out,                 /* I [ID] netCDF output file ID */
+ const gpe_sct * const gpe,           /* I [sct] GPE structure */
+ int * const xtr_nbr,                 /* I/O [nbr] Number of variables in extraction list */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Create extraction list of nm_id_sct from traversal table */
+
+  nm_id_sct *xtr_lst; /* [sct] Extraction list */
+
+  int nbr_tbl=0; 
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++)
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_var && trv_tbl->lst[uidx].flg_xtr) nbr_tbl++;
+
+  xtr_lst=(nm_id_sct *)nco_malloc(nbr_tbl*sizeof(nm_id_sct));
+
+  nbr_tbl=0;
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    if(trv_tbl->lst[uidx].nco_typ == nco_obj_typ_var && trv_tbl->lst[uidx].flg_xtr){
+      int var_id;
+      int grp_id_in;
+      int grp_id_out;
+      char *grp_out_fll;
+      /* Get input group ID */
+      (void)nco_inq_grp_full_ncid(nc_id_in,trv_tbl->lst[uidx].grp_nm_fll,&grp_id_in);
+      /* Edit group name for output */
+      if(gpe) grp_out_fll=nco_gpe_evl(gpe,trv_tbl->lst[uidx].grp_nm_fll); else grp_out_fll=(char *)strdup(trv_tbl->lst[uidx].grp_nm_fll);
+      /* Get output group ID */
+      (void)nco_inq_grp_full_ncid(nc_id_out,grp_out_fll,&grp_id_out);
+      /* Get variable ID */
+      (void)nco_inq_varid(grp_id_in,trv_tbl->lst[uidx].nm,&var_id);
+
+      /* 20130213: Necessary to allow MM3->MM4 and MM4->MM3 workarounds
+      Store in/out group IDs as determined in nco_xtr_dfn() 
+      In MM3/4 cases, either grp_in_id or grp_out_id are always root
+      Other is always root unless GPE is used */
+      xtr_lst[nbr_tbl].grp_id_in=grp_id_in;
+      xtr_lst[nbr_tbl].grp_id_out=grp_id_out;
+      xtr_lst[nbr_tbl].id=var_id;
+      xtr_lst[nbr_tbl].nm=(char *)strdup(trv_tbl->lst[uidx].nm);
+
+      nbr_tbl++;
+    } /* end flg == True */
+  } /* end loop over uidx */
+
+  *xtr_nbr=nbr_tbl;
+  return xtr_lst;
+} /* end nco_trv_tbl_nm_id() */
+
+void
+nco_xtr_crd_ass_add                   /* [fnc] Add to extraction list all coordinates associated with extracted variables */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Add to extraction list all coordinates associated with extracted variables */
+
+  char dmn_nm_var[NC_MAX_NAME];    /* [sng] Dimension name for *variable* */ 
+
+  int dmn_id_var[NC_MAX_DIMS]; /* [ID] Dimensions IDs array for variable */
+  int grp_id;                  /* [ID] Group ID */
+  int nbr_dmn_var;             /* [nbr] Number of dimensions associated with current matched variable */
+  int var_id;                  /* [ID] Variable ID */
+
+  long dmn_sz;                 /* [nbr] Dimension size */  
+
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct var_trv=trv_tbl->lst[uidx];
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Obtain group ID using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* Obtain variable ID using group ID */
+      (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+      /* Get number of dimensions for *variable* */
+      (void)nco_inq_varndims(grp_id,var_id,&nbr_dmn_var);
+
+      assert(nbr_dmn_var == var_trv.nbr_dmn);
+
+      /* Get dimension IDs for variable */
+      (void)nco_inq_vardimid(grp_id,var_id,dmn_id_var);
+
+      /* Loop over dimensions of variable */
+      for(int idx_var_dim=0;idx_var_dim<nbr_dmn_var;idx_var_dim++){
+
+        /* Get dimension name */
+        (void)nco_inq_dim(grp_id,dmn_id_var[idx_var_dim],dmn_nm_var,&dmn_sz);
+
+        char dmn_nm_grp[NC_MAX_NAME];    /* [sng] Dimension name for *group*  */ 
+        const char sls_chr='/'; /* [chr] Slash character */
+        const char sls_sng[]="/"; /* [sng] Slash string */
+        char *ptr_chr; /* [sng] Pointer to character '/' in full name */
+        int psn_chr; /* [nbr] Position of character '/' in in full name */
+
+        const int flg_prn=1;         /* [flg] Dimensions in all parent groups will also be retrieved */ 
+
+        int dmn_id_grp[NC_MAX_DIMS]; /* [id] Dimensions IDs array */
+        int nbr_dmn_grp;             /* [nbr] Number of dimensions for *group* */
+
+        /* Obtain number of dimensions visible to group */
+        (void)nco_inq(grp_id,&nbr_dmn_grp,NULL,NULL,NULL);
+
+        /* Obtain dimension IDs */
+        (void)nco_inq_dimids(grp_id,&nbr_dmn_grp,dmn_id_grp,flg_prn);
+
+        /* List dimensions */
+        for(int idx_dmn=0;idx_dmn<nbr_dmn_grp;idx_dmn++){
+
+          /* Get dimension info */
+          (void)nco_inq_dim(grp_id,dmn_id_grp[idx_dmn],dmn_nm_grp,&dmn_sz);
+
+          /* Does dimension match requested variable name (i.e., is it a coordinate variable?) */ 
+          if(!strcmp(dmn_nm_grp,dmn_nm_var)){
+            char *dmn_nm_fll;
+
+            /* Construct full (dimension/coordinate) name using the full group name where original variable resides */
+            dmn_nm_fll=(char *)nco_malloc(strlen(var_trv.grp_nm_fll)+strlen(dmn_nm_grp)+2L);
+            strcpy(dmn_nm_fll,var_trv.grp_nm_fll);
+            if(strcmp(var_trv.grp_nm_fll,sls_sng)) strcat(dmn_nm_fll,sls_sng);
+            strcat(dmn_nm_fll,dmn_nm_grp);
+
+            /* Brute-force approach to find valid "dmn_nm_fll":
+            Start at grp_nm_fll/var_nm and build all possible paths with var_nm. 
+            Use case is /g5/g5g1/rz variable with /g5/rlev coordinate var. */
+
+            /* Find last occurence of '/' */
+            ptr_chr=strrchr(dmn_nm_fll,sls_chr);
+            psn_chr=ptr_chr-dmn_nm_fll;
+            while(ptr_chr){
+              /* If variable is on list, mark it for extraction */
+              if(trv_tbl_fnd_var_nm_fll(dmn_nm_fll,trv_tbl)) (void)trv_tbl_mrk_xtr(dmn_nm_fll,trv_tbl);
+              dmn_nm_fll[psn_chr]='\0';
+              ptr_chr=strrchr(dmn_nm_fll,sls_chr);
+              if(ptr_chr){
+                psn_chr=ptr_chr-dmn_nm_fll;
+                dmn_nm_fll[psn_chr]='\0';
+                /* Re-add variable name to shortened path */
+                if(strcmp(var_trv.grp_nm_fll,sls_sng)) strcat(dmn_nm_fll,sls_sng);
+                strcat(dmn_nm_fll,dmn_nm_grp);
+                ptr_chr=strrchr(dmn_nm_fll,sls_chr);
+                psn_chr=ptr_chr-dmn_nm_fll;
+              } /* !ptr_chr */
+            } /* end while */
+
+            /* Free allocated */
+            if(dmn_nm_fll) dmn_nm_fll=(char *)nco_free(dmn_nm_fll);
+
+          } /* end strcmp() */
+        } /* end loop over idx_dmn */
+
+
+      } /* End loop over idx_var_dim: list dimensions for variable */
+    } /* end nco_obj_typ_var */
+  } /* end uidx  */
+  return;
+} /* end nco_xtr_crd_ass_cdf_add */
+
+void
+nco_get_prg_info(void)                 /* [fnc] Get program info */
+{
+  /* fxm: this routine is a kludge for Perl in nco_bm.pl and should be eliminated at first opportunity */
+  int ret=10;
+#ifndef HAVE_NETCDF4_H 
+  ret=20;
+#else /* HAVE_NETCDF4_H */
+#ifdef ENABLE_NETCDF4 
+  ret=30;
+#else /* HAVE_NETCDF4_H */
+  ret=40;
+#endif /* ENABLE_NETCDF4 */
+#endif /* HAVE_NETCDF4_H */
+
+  exit(ret);
+} /* end nco_get_prg_info() */
+
+void 
+nco_xtr_lst_prn                            /* [fnc] Print name-ID structure list */
+(nm_id_sct * const nm_id_lst,          /* I [sct] Name-ID structure list */
+ const int nm_id_nbr)                  /* I [nbr] Number of name-ID structures in list */
+{
+  (void)fprintf(stdout,"%s: INFO List: %d extraction variables\n",nco_prg_nm_get(),nm_id_nbr); 
+  for(int idx=0;idx<nm_id_nbr;idx++){
+    nm_id_sct nm_id=nm_id_lst[idx];
+    (void)fprintf(stdout,"[%d] %s\n",idx,nm_id.nm); 
+  } 
+} /* end nco_xtr_lst_prn() */
+
+void
+nco_prn_xtr_mtd /* [fnc] Print variable metadata */
+(const int nc_id, /* I [id] netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{ 
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct var_trv=trv_tbl->lst[uidx];
+    if(var_trv.flg_xtr && var_trv.nco_typ == nco_obj_typ_var){
+
+      /* Print full name of variable */
+      if(var_trv.grp_dpt > 0) (void)fprintf(stdout,"%s\n",var_trv.nm_fll);
+
+      /* Print variable metadata */ 
+      (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv); 
+
+      int grp_id; /* [id] Group ID */
+      int var_id; /* [id] Variable ID */
+
+      /* Obtain group ID using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* Obtain variable ID using group ID */
+      (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+      /* Print variable attributes */
+      (void)nco_prn_att(grp_id,prn_flg,var_id);
+    } /* end flg_xtr */
+  } /* end uidx */
+
+  return;
+} /* end nco_prn_xtr_mtd() */
+
+void
+nco_prn_xtr_val                       /* [fnc] Print variable data */
+(const int nc_id,                     /* I netCDF file ID */
+ prn_fmt_sct * const prn_flg,         /* I/O [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Print variable data */
+
+  /* Loop variables in table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+    if(var_trv.flg_xtr && var_trv.nco_typ == nco_obj_typ_var){
+
+      /* Print full name of variable */
+      if(!prn_flg->dlm_sng && var_trv.grp_dpt > 0) (void)fprintf(stdout,"%s\n",var_trv.nm_fll);
+      
+      /* Print variable values */
+      (void)nco_prn_var_val_trv(nc_id,prn_flg,&var_trv,trv_tbl);
+    } /* End flg_xtr */
+  } /* End Loop variables in table */
+
+  return;
+} /* end nco_prn_xtr_val() */
+
+void
+nco_xtr_dmn_mrk                      /* [fnc] Mark extracted dimensions */
+(trv_tbl_sct * const trv_tbl)        /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Set flag for dimensions to be extracted
+     ncks print functions need dimension extraction flag to print CDL files */
+
+  unsigned int dmn_idx; /* [idx] Index over dimensions */
+  unsigned int dmn_nbr; /* [nbr] Number of dimensions defined in file */
+  unsigned int dmn_var_idx; /* [idx] Index over dimensions in variable */
+  unsigned int dmn_var_nbr; /* [nbr] Number of dimensions in variable */
+  unsigned int obj_idx; /* [idx] Index over objects */
+  unsigned int obj_nbr; /* [nbr] Number of objects in table */
+
+  dmn_nbr=trv_tbl->nbr_dmn;
+  obj_nbr=trv_tbl->nbr;
+
+  /* Set extraction flag for groups if ancestors of extracted variables */
+
+  for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+    /* Set extraction flag to False then override below if found */
+    trv_tbl->lst_dmn[dmn_idx].flg_xtr=False;
+    for(obj_idx=0;obj_idx<obj_nbr;obj_idx++){
+      trv_sct var_trv=trv_tbl->lst[obj_idx];
+      /* For each variable to be extracted ... */
+      if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+	dmn_var_nbr=var_trv.nbr_dmn;
+	for(dmn_var_idx=0;dmn_var_idx<dmn_var_nbr;dmn_var_idx++){
+	  if(var_trv.var_dmn[dmn_var_idx].dmn_id == trv_tbl->lst_dmn[dmn_idx].dmn_id){
+	    trv_tbl->lst_dmn[dmn_idx].flg_xtr=True;
+	    /* Break from loop over dmn_var_idx into loop over obj_idx */
+	    break;
+	  } /* endif match */
+	} /* end loop over dmn_var_idx */
+      } /* endif extracted variable */
+      /* Break from loop over obj_idx into loop over dmn_idx */
+      if(trv_tbl->lst_dmn[dmn_idx].flg_xtr) break;
+    } /* end loop over obj_idx */
+  } /* end loop over dmn_idx */
+} /* end nco_xtr_dmn_mrk() */
+
+void
+nco_xtr_grp_mrk                      /* [fnc] Mark extracted groups */
+(trv_tbl_sct * const trv_tbl)        /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Set flag for groups to be extracted
+     Could be performed before or after writing variables
+     Used to be part of nco_xtr_dfn()
+     However, ncks print functions need group extraction flag set for printing
+     As of 20130716 we isolate this flag-setting from actual copying still done in nco_xtr_dfn() */
+
+  const char sls_sng[]="/"; /* [sng] Slash string */
+  
+  /* Goal here is to annotate which groups will appear in output
+     Need to know in order to efficiently copy their metadata
+     Definition of flags in extraction table is operational
+     Could create a new flag just for this
+     Instead, we re-purpose the extraction flag, flg_xtr, for groups
+     Could re-purpose flg_ncs too with same effect
+     nco_xtr_mk() sets flg_xtr for groups, like variables, that match user-specified strings
+     Later processing makes flg_xtr for groups unreliable
+     For instance, the exclusion flag (-x) is ambiguous for groups
+     Also identification of associated coordinates and auxiliary coordinates occurs after nco_xtr_mk()
+     Associated and auxiliary coordinates may be in distant groups
+     Hence no better place than nco_xtr_dfn() to finally identify ancestor groups */
+  
+  /* Set extraction flag for groups if ancestors of extracted variables */
+  for(unsigned grp_idx=0;grp_idx<trv_tbl->nbr;grp_idx++){
+    /* For each group ... */
+    if(trv_tbl->lst[grp_idx].nco_typ == nco_obj_typ_grp){
+      char *sbs_srt; /* [sng] Location of user-string match start in object path */
+      char *grp_fll_sls=NULL; /* [sng] Full group name with slash appended */
+      /* Initialize extraction flag to False and overwrite later iff ... */
+      trv_tbl->lst[grp_idx].flg_xtr=False;
+      if(!strcmp(trv_tbl->lst[grp_idx].grp_nm_fll,sls_sng)){
+	/* Manually mark root group as extracted because matching algorithm below fails for root group 
+	   (it looks for "//" in variable names) */
+	trv_tbl->lst[grp_idx].flg_xtr=True;
+	continue;
+      } /* endif root group */
+      grp_fll_sls=(char *)strdup(trv_tbl->lst[grp_idx].grp_nm_fll);
+      grp_fll_sls=(char *)nco_realloc(grp_fll_sls,(strlen(grp_fll_sls)+2L)*sizeof(char));
+      strcat(grp_fll_sls,sls_sng);
+      /* ... loop through ... */
+      for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+	/* ... all variables to be extracted ... */
+	if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var && trv_tbl->lst[idx_var].flg_xtr){
+	  /* ... finds that full path to current group is contained in an extracted variable path ... */
+	  if((sbs_srt=strstr(trv_tbl->lst[idx_var].nm_fll,grp_fll_sls))){
+	    /* ... and _begins_ a full group path of that variable ... */
+	    if(sbs_srt == trv_tbl->lst[idx_var].nm_fll){
+	      /* ... and mark _only_ those groups for extraction... */
+	      trv_tbl->lst[grp_idx].flg_xtr=True;
+	      continue;
+	    } /* endif */
+	  } /* endif full group path */
+	} /* endif extracted variable */
+      } /* end loop over idx_var */
+      if(grp_fll_sls) grp_fll_sls=(char *)nco_free(grp_fll_sls);
+    } /* endif group */
+  } /* end loop over grp_idx */
+} /* end nco_xtr_grp_mrk() */
+
+void
+nco_xtr_dfn                          /* [fnc] Define extracted groups, variables, and attributes in output file */
+(const int nc_id,                    /* I [ID] netCDF input file ID */
+ const int nc_out_id,                /* I [ID] netCDF output file ID */
+ int * const cnk_map_ptr,            /* I [enm] Chunking map */
+ int * const cnk_plc_ptr,            /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,            /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                  /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                  /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,          /* I [sct] GPE structure */
+ const md5_sct * const md5,          /* I [sct] MD5 configuration */
+ const nco_bool CPY_GRP_METADATA,    /* I [flg] Copy group metadata (attributes) */
+ const nco_bool CPY_VAR_METADATA,    /* I [flg] Copy variable metadata (attributes) */
+ const int nco_pck_plc,              /* I [enm] Packing policy */
+ const char * const rec_dmn_nm,      /* I [sng] Record dimension name */
+ trv_tbl_sct * const trv_tbl)        /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Define groups, variables, and attributes in output file
+     rec_dmn_nm, if any, is name requested for (netCDF3) sole record dimension */
+
+  const char fnc_nm[]="nco_xtr_dfn()"; /* [sng] Function name */
+  const char sls_sng[]="/"; /* [sng] Slash string */
+
+  char *grp_out_fll; /* [sng] Group name */
+
+  gpe_nm_sct *gpe_nm; /* [sct] GPE name duplicate check array */
+
+  int fl_fmt; /* [enm] netCDF file format */
+  int grp_id; /* [ID] Group ID in input file */
+  int grp_out_id; /* [ID] Group ID in output file */ 
+  int nbr_gpe_nm; /* [nbr] Number of GPE entries */
+  int var_out_id; /* [ID] Variable ID in output file */
+  int nco_prg_id; /* [enm] Program ID */
+
+  nco_bool PCK_ATT_CPY; /* [flg] Copy attributes "scale_factor", "add_offset" */
+
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  nbr_gpe_nm=0;
+  gpe_nm=NULL;
+
+  /* Get file format */
+  (void)nco_inq_format(nc_out_id,&fl_fmt);
+
+  /* Isolate extra complexity of copying group metadata */
+  if(CPY_GRP_METADATA){
+    /* Block can be performed before or after writing variables
+    Perhaps it should be turned into an explicit function call */
+
+    /* Goal here is to annotate which groups will appear in output
+    Need to know in order to efficiently copy their metadata
+    Definition of flags in extraction table is operational
+    Could create a new flag just for this
+    Instead, we re-purpose the extraction flag, flg_xtr, for groups
+    Could re-purpose flg_ncs too with same effect
+    nco_xtr_mk() sets flg_xtr for groups, like variables, that match user-specified strings
+    Later processing makes flg_xtr for groups unreliable
+    For instance, the exclusion flag (-x) is ambiguous for groups
+    Also identification of associated coordinates and auxiliary coordinates occurs after nco_xtr_mk()
+    Associated and auxiliary coordinates may be in distant groups
+    Hence no better place than nco_xtr_dfn() to finally identify ancestor groups */
+
+    /* Set extraction flag for groups if ancestors of extracted variables */
+    for(unsigned grp_idx=0;grp_idx<trv_tbl->nbr;grp_idx++){
+      /* For each group ... */
+      if(trv_tbl->lst[grp_idx].nco_typ == nco_obj_typ_grp){
+        char *sbs_srt; /* [sng] Location of user-string match start in object path */
+        char *grp_fll_sls=NULL; /* [sng] Full group name with slash appended */
+        /* Initialize extraction flag to False and overwrite later iff ... */
+        trv_tbl->lst[grp_idx].flg_xtr=False;
+        if(!strcmp(trv_tbl->lst[grp_idx].grp_nm_fll,sls_sng)){
+          /* Manually mark root group as extracted because matching algorithm below fails for root group 
+          (it looks for "//" in variable names) */
+          trv_tbl->lst[grp_idx].flg_xtr=True;
+          continue;
+        } /* endif root group */
+        grp_fll_sls=(char *)strdup(trv_tbl->lst[grp_idx].grp_nm_fll);
+        grp_fll_sls=(char *)nco_realloc(grp_fll_sls,(strlen(grp_fll_sls)+2L)*sizeof(char));
+        strcat(grp_fll_sls,sls_sng);
+        /* ... loop through ... */
+        for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+          /* ... all variables to be extracted ... */
+          if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var && trv_tbl->lst[idx_var].flg_xtr){
+            /* ... finds that full path to current group is contained in an extracted variable path ... */
+            if((sbs_srt=strstr(trv_tbl->lst[idx_var].nm_fll,grp_fll_sls))){
+              /* ... and _begins_ a full group path of that variable ... */
+              if(sbs_srt == trv_tbl->lst[idx_var].nm_fll){
+                /* ... and mark _only_ those groups for extraction... */
+                trv_tbl->lst[grp_idx].flg_xtr=True;
+                continue;
+              } /* endif */
+            } /* endif full group path */
+          } /* endif extracted variable */
+        } /* end loop over idx_var */
+        if(grp_fll_sls) grp_fll_sls=(char *)nco_free(grp_fll_sls);
+      } /* endif group */
+    } /* end loop over grp_idx */
+
+    /* Extraction flag for groups was set in nco_xtr_grp_mrk() 
+    This loop defines those groups in output file and copies their metadata */
+    for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+      trv_sct grp_trv=trv_tbl->lst[uidx];
+
+      /* If object is group ancestor of extracted variable */
+      if(grp_trv.nco_typ == nco_obj_typ_grp && grp_trv.flg_xtr){
+
+        /* Obtain group ID from netCDF API using full group name */
+        (void)nco_inq_grp_full_ncid(nc_id,grp_trv.grp_nm_fll,&grp_id);
+
+        /* ncge case */ 
+        if(nco_prg_id_get() == ncge ){ 
+
+          /* Is ensemble parent group */
+          if(grp_trv.flg_nsm_prn){
+            /* Check if suffix needed. Appends to default name (e.g /cesm + _avg) */
+            if(trv_tbl->nsm_sfx){
+              /* Just define (append) and forget a new name */
+              char *nm_fll_sfx=nco_bld_nsm_sfx(grp_trv.grp_nm_fll_prn,trv_tbl);
+              /* Use the new name */
+              if(gpe) grp_out_fll=nco_gpe_evl(gpe,nm_fll_sfx); else grp_out_fll=(char *)strdup(nm_fll_sfx);
+              nm_fll_sfx=(char *)nco_free(nm_fll_sfx);
+            }else {
+              if(gpe) grp_out_fll=nco_gpe_evl(gpe,grp_trv.grp_nm_fll_prn); else grp_out_fll=(char *)strdup(grp_trv.grp_nm_fll_prn);
+            } /* ! Suffix */
+            /* If group is an ensemble member, do not create it in the same location as input */
+          } else if (grp_trv.flg_nsm_mbr){
+            continue;
+          } else {
+            /* Regular group */
+            if(gpe) grp_out_fll=nco_gpe_evl(gpe,grp_trv.grp_nm_fll); else grp_out_fll=(char *)strdup(grp_trv.grp_nm_fll);
+          } /* ! Ensemble parent group */
+
+        }else {
+          /* Non ncge case: Edit group name for output */
+          if(gpe) grp_out_fll=nco_gpe_evl(gpe,grp_trv.grp_nm_fll); else grp_out_fll=(char *)strdup(grp_trv.grp_nm_fll);
+        } /* !ncge */
+
+        /* If output group does not exist, create it */
+        if(nco_inq_grp_full_ncid_flg(nc_out_id,grp_out_fll,&grp_out_id)) nco_def_grp_full(nc_out_id,grp_out_fll,&grp_out_id);
+
+        /* Copy group attributes */
+        if(grp_trv.nbr_att){
+          PCK_ATT_CPY=True;
+          (void)nco_att_cpy(grp_id,grp_out_id,NC_GLOBAL,NC_GLOBAL,PCK_ATT_CPY);
+        } /* Copy group attributes */
+
+        /* Memory management after current extracted group */
+        if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+      } /* end if group and flg_xtr */
+    } /* end loop to define group attributes */
+
+  } /* !CPY_GRP_METADATA */
+
+  /* Define variables */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct var_trv=trv_tbl->lst[uidx];
+
+    /* If object is an extracted variable... */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Obtain group ID using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* ncge */
+      if(nco_prg_id_get() == ncge){
+        /* If variable is an ensemble member, do not create it in the same location as input */
+        if (var_trv.flg_nsm_mbr == True){
+          
+          /* Check if suffix needed. Appends to default name */
+          if(trv_tbl->nsm_sfx){
+            /* Just define (append) and forget a new name */
+            char *nm_fll_sfx=nco_bld_nsm_sfx(var_trv.grp_nm_fll_prn,trv_tbl);
+            /* Use the new name */
+            if(gpe) grp_out_fll=nco_gpe_evl(gpe,nm_fll_sfx); else grp_out_fll=(char *)strdup(nm_fll_sfx);
+            nm_fll_sfx=(char *)nco_free(nm_fll_sfx);
+          } else { /* Non suffix case */
+            if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv.nsm_nm); else grp_out_fll=(char *)strdup(var_trv.nsm_nm);
+          } /* !trv_tbl->nsm_sfx */
+
+        }else{
+          /* Edit group name for output */
+          if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv.grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv.grp_nm_fll);
+        } /* ! ensemble member  */
+      }else {
+        /* Edit group name for output */
+        if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv.grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv.grp_nm_fll);
+      } /* !ncge */
+
+      /* If output group does not exist, create it */
+      if(nco_inq_grp_full_ncid_flg(nc_out_id,grp_out_fll,&grp_out_id)) nco_def_grp_full(nc_out_id,grp_out_fll,&grp_out_id);
+
+      /* ncge */
+      if(nco_prg_id_get() == ncge){
+        /* Is requested variable in output file? */
+        int rcd=nco_inq_varid_flg(grp_out_id,var_trv.nm,&var_out_id);
+        /* Yes, get out of dodge... this is just to avoid GPE failure on duplicate definition */
+        if (rcd == 0){
+          continue;
+        }
+      } /* ncge */
+
+      /* Detect duplicate GPE names in advance, then exit with helpful error */
+      if(gpe) nco_gpe_chk(grp_out_fll,var_trv.nm,&gpe_nm,&nbr_gpe_nm);                       
+
+      /* Define variable in output file */
+      var_out_id=nco_cpy_var_dfn_trv(nc_id,nc_out_id,grp_out_fll,dfl_lvl,gpe,rec_dmn_nm,&var_trv,trv_tbl);
+
+      /* Set chunksize parameters */
+      if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set_trv(grp_out_id,cnk_map_ptr,cnk_plc_ptr,cnk_sz_scl,cnk,cnk_nbr,&var_trv);
+
+      /* Copy variable's attributes */
+      if(CPY_VAR_METADATA){
+        int var_id;        /* [id] Variable ID */
+
+        var_sct *var_prc;  /* [sct] Variable to process */
+
+        /* Obtain group ID using full group name */
+        (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+        /* Get variable ID */
+        (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+        /* Allocate variable structure and fill with metadata */
+        var_prc=nco_var_fll_trv(grp_id,var_id,&var_trv,trv_tbl);     
+
+        PCK_ATT_CPY=nco_pck_cpy_att(nco_prg_id,nco_pck_plc,var_prc);
+
+        (void)nco_att_cpy(grp_id,grp_out_id,var_id,var_out_id,PCK_ATT_CPY);
+
+        var_prc=(var_sct *)nco_var_free(var_prc);
+      } /* !CPY_VAR_METADATA */
+
+      /* Pre-allocate space for MD5 attributes */
+      if(md5){
+        if(md5->wrt){
+          /* Save time with netCDF3 files by pre-allocating header space */
+          aed_sct aed_md5;
+          char md5_dgs_hxd_sng_ram[]="01234567890123456789012345678901"; /* [sng] Placeholder name for actual digest */
+          aed_md5.att_nm=md5->att_nm;
+          aed_md5.var_nm=var_trv.nm;
+          aed_md5.id=var_out_id;
+          aed_md5.sz=NCO_MD5_DGS_SZ*2L;
+          aed_md5.type=NC_CHAR;
+          aed_md5.val.cp=md5_dgs_hxd_sng_ram;
+          aed_md5.mode=aed_overwrite;
+          (void)nco_aed_prc(grp_out_id,var_out_id,aed_md5);
+        } /* !wrt */
+      } /* !md5 */
+
+      /* Memory management after current extracted variable */
+      if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+    } /* end if variable and flg_xtr */
+  } /* end loop over uidx */
+
+  /* Memory management for GPE names */
+  for(int idx=0;idx<nbr_gpe_nm;idx++) gpe_nm[idx].var_nm_fll=(char *)nco_free(gpe_nm[idx].var_nm_fll);
+
+  /* Print extraction list in developer mode */
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)trv_tbl_prn_xtr(trv_tbl,fnc_nm);
+
+} /* end nco_xtr_dfn() */
+
+void
+nco_xtr_wrt                           /* [fnc] Write extracted data to output file */
+(const int nc_id_in,                  /* I [ID] netCDF input file ID */
+ const int nc_id_out,                 /* I [ID] netCDF output file ID */
+ const gpe_sct * const gpe,           /* I [sct] GPE structure */
+ FILE * const fp_bnr,                 /* I [fl] Unformatted binary output file handle */
+ const md5_sct * const md5,           /* I [flg] MD5 Configuration */
+ const nco_bool HAVE_LIMITS,          /* I [flg] Dimension limits exist ( For convenience, ideally... not needed ) */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Write extracted variables to output file */
+
+  const char fnc_nm[]="nco_xtr_wrt()"; /* [sng] Function name */
+
+  int fl_out_fmt; /* [enm] File format */
+
+  nco_bool USE_MM3_WORKAROUND=False; /* [flg] Faster copy on Multi-record Multi-variable netCDF3 files */
+
+  (void)nco_inq_format(nc_id_out,&fl_out_fmt);
+
+  /* 20120309 Special case to improve copy speed on large blocksize filesystems (MM3s) */
+  USE_MM3_WORKAROUND=nco_use_mm3_workaround(nc_id_in,fl_out_fmt);
+  if(HAVE_LIMITS) USE_MM3_WORKAROUND=False; 
+
+  if(USE_MM3_WORKAROUND){  
+
+    int fix_nbr; /* [nbr] Number of fixed-length variables */
+    int rec_nbr; /* [nbr] Number of record variables */
+    int xtr_nbr; /* [nbr] Number of extracted variables */
+    int idx_var; /* [idx] */
+
+    nm_id_sct **fix_lst=NULL; /* [sct] Fixed-length variables to be extracted */
+    nm_id_sct **rec_lst=NULL; /* [sct] Record variables to be extracted */
+    nm_id_sct *xtr_lst=NULL; /* [sct] Variables to be extracted */
+
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Using MM3-workaround to hasten copying of record variables\n",nco_prg_nm_get());
+
+    /* Convert extraction list from traversal table to nm_id_sct format to re-use old code */
+    xtr_lst=nco_trv_tbl_nm_id(nc_id_in,nc_id_out,gpe,&xtr_nbr,trv_tbl);
+
+    /* Split list into fixed-length and record variables */
+    (void)nco_var_lst_fix_rec_dvd(nc_id_in,xtr_lst,xtr_nbr,&fix_lst,&fix_nbr,&rec_lst,&rec_nbr);
+
+    /* Copy fixed-length data variable-by-variable */
+    for(idx_var=0;idx_var<fix_nbr;idx_var++){
+      if(nco_dbg_lvl_get() >= nco_dbg_var && !fp_bnr) (void)fprintf(stderr,"%s, ",fix_lst[idx_var]->nm);
+      if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fflush(stderr);
+      (void)nco_cpy_var_val(fix_lst[idx_var]->grp_id_in,fix_lst[idx_var]->grp_id_out,fp_bnr,md5,fix_lst[idx_var]->nm);
+    } /* end loop over idx_var */
+
+    /* Copy record data record-by-record */
+    (void)nco_cpy_rec_var_val(nc_id_in,fp_bnr,md5,rec_lst,rec_nbr);
+
+    /* Extraction lists no longer needed */
+    if(fix_lst) fix_lst=(nm_id_sct **)nco_free(fix_lst);
+    if(rec_lst) rec_lst=(nm_id_sct **)nco_free(rec_lst);
+    if(xtr_lst) xtr_lst=nco_nm_id_lst_free(xtr_lst,xtr_nbr);
+
+  }else{ /* !USE_MM3_WORKAROUND */
+
+    for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+      trv_sct trv=trv_tbl->lst[uidx];
+
+      /* If object is an extracted variable... */ 
+      if(trv.nco_typ == nco_obj_typ_var && trv.flg_xtr){
+        int grp_id_in;
+        int grp_id_out;
+        char *grp_out_fll;
+        /* Get input group ID */
+        (void)nco_inq_grp_full_ncid(nc_id_in,trv_tbl->lst[uidx].grp_nm_fll,&grp_id_in);
+        /* Edit group name for output */
+        if(gpe) grp_out_fll=nco_gpe_evl(gpe,trv_tbl->lst[uidx].grp_nm_fll); else grp_out_fll=(char *)strdup(trv_tbl->lst[uidx].grp_nm_fll);
+        /* Get output group ID */
+        (void)nco_inq_grp_full_ncid(nc_id_out,grp_out_fll,&grp_id_out);
+
+        if(nco_dbg_lvl_get() >= nco_dbg_vrb){
+          (void)fprintf(stdout,"%s: INFO %s writing variable <%s> from ",nco_prg_nm_get(),fnc_nm,trv.nm_fll);        
+          (void)nco_prt_grp_nm_fll(grp_id_in);
+          (void)fprintf(stdout," to ");   
+          (void)nco_prt_grp_nm_fll(grp_id_out);
+          (void)fprintf(stdout,"\n");
+        } /* endif dbg */
+
+        /* Copy variable data from input netCDF file to output netCDF file */
+        (void)nco_cpy_var_val_mlt_lmt_trv(grp_id_in,grp_id_out,fp_bnr,md5,&trv); 
+
+      } /* endif */
+
+    } /* end loop over uidx */
+  } /* !USE_MM3_WORKAROUND */
+
+  /* Print extraction list in developer mode */
+  if(nco_dbg_lvl_get() == nco_dbg_old) (void)trv_tbl_prn_xtr(trv_tbl,fnc_nm);
+
+} /* end nco_xtr_wrt() */
+
+void                          
+nco_prt_dmn /* [fnc] Print dimensions for a group  */
+(const int nc_id, /* I [ID] File ID */
+ const char * const grp_nm_fll) /* I [sng] Full name of group */
+{
+  char dmn_nm[NC_MAX_NAME]; /* [sng] Dimension name */ 
+
+  const int flg_prn=0; /* [flg] Retrieve all dimensions in parent groups */        
+
+  int dmn_ids[NC_MAX_DIMS]; /* [nbr] Dimensions IDs array */
+  int dmn_ids_ult[NC_MAX_DIMS]; /* [nbr] Unlimited dimensions IDs array */
+  int grp_id; /* [ID]  Group ID */
+  int nbr_att; /* [nbr] Number of attributes */
+  int nbr_dmn; /* [nbr] Number of dimensions */
+  int nbr_dmn_ult; /* [nbr] Number of unlimited dimensions */
+  int nbr_var; /* [nbr] Number of variables */
+
+  long dmn_sz; /* [nbr] Dimension size */
+
+  /* Obtain group ID from netCDF API using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,grp_nm_fll,&grp_id);
+
+  /* Obtain unlimited dimensions for group */
+  (void)nco_inq_unlimdims(grp_id,&nbr_dmn_ult,dmn_ids_ult);
+
+  /* Obtain number of dimensions for group */
+  (void)nco_inq(grp_id,&nbr_dmn,&nbr_var,&nbr_att,NULL);
+
+  /* Obtain dimensions IDs for group */
+  (void)nco_inq_dimids(grp_id,&nbr_dmn,dmn_ids,flg_prn);
+
+  /* List dimensions using obtained group ID */
+  for(int dnm_idx=0;dnm_idx<nbr_dmn;dnm_idx++){
+    nco_bool is_rec_dim=False;
+    (void)nco_inq_dim(grp_id,dmn_ids[dnm_idx],dmn_nm,&dmn_sz);
+
+    /* Check if dimension is unlimited (record dimension) */
+    for(int dnm_ult_idx=0;dnm_ult_idx<nbr_dmn_ult;dnm_ult_idx++){ 
+      if(dmn_ids[dnm_idx] == dmn_ids_ult[dnm_ult_idx]){ 
+        is_rec_dim=True;
+        (void)fprintf(stdout," #%d record dimension: '%s'(%li)\n",dmn_ids[dnm_idx],dmn_nm,dmn_sz);
+      } /* end if */
+    } /* end dnm_ult_idx dimensions */
+
+    /* An unlimited ID was not matched, so dimension is a plain vanilla dimension */
+    if(!is_rec_dim) (void)fprintf(stdout," #%d dimension: '%s'(%li)\n",dmn_ids[dnm_idx],dmn_nm,dmn_sz);
+
+  } /* end dnm_idx dimensions */
+} /* end nco_prt_dmn() */
+
+void                          
+nco_bld_dmn_ids_trv                   /* [fnc] Build dimension info for all variables */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: a netCDF4 variable can have its dimensions located anywhere below *in the group path*
+  Construction of this list *must* be done after traversal table is build in nco_grp_itr(),
+  where we know the full picture of the file tree
+  Compare unique dimension IDs from variables with unique dimension IDs from groups 
+  */
+
+  const char fnc_nm[]="nco_bld_dmn_ids_trv()"; /* [sng] Function name  */
+
+  /* Loop objects  */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+    /* Filter variables  */
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
+      trv_sct var_trv=trv_tbl->lst[idx_var];   
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s reports variable dimensions\n",nco_prg_nm_get(),fnc_nm);
+        (void)fprintf(stdout,"%s:",var_trv.nm_fll); 
+        (void)fprintf(stdout," %d dimensions:\n",var_trv.nbr_dmn);
+      } /* endif dbg */
+
+      /* Full dimension names for each variable */
+      for(int idx_dmn_var=0;idx_dmn_var<var_trv.nbr_dmn;idx_dmn_var++){
+
+        int var_dmn_id=var_trv.var_dmn[idx_dmn_var].dmn_id;
+
+        /* Get unique dimension object from unique dimension ID */
+        dmn_trv_sct *dmn_trv=nco_dmn_trv_sct(var_dmn_id,trv_tbl);
+
+        if(nco_dbg_lvl_get() == nco_dbg_old){
+          (void)fprintf(stdout,"[%d]%s#%d ",idx_dmn_var,var_trv.var_dmn[idx_dmn_var].dmn_nm,var_dmn_id);    
+          (void)fprintf(stdout,"<%s>\n",dmn_trv->nm_fll);
+        } /* endif dbg */
+        if(strcmp(var_trv.var_dmn[idx_dmn_var].dmn_nm,dmn_trv->nm)){
+
+        /* Test case generates duplicated dimension IDs in netCDF file
+
+        ncks -O  -v two_dmn_rec_var in_grp.nc out.nc
+
+        defines new dimensions for the file, as
+
+        ID=0 index [0]:</time> 
+        ID=1 index [1]:</lev> 
+        ID=2 index [0]:</g8/lev> 
+        ID=3 index [1]:</g8/vrt_nbr> 
+        ID=4 index [1]:</vrt_nbr> 
+
+        but the resulting file, when read, has the following IDs
+
+        dimensions:
+        #0,time = UNLIMITED ; // (10 currently)
+        #1,lev = 3 ;
+        #4,vrt_nbr = 2 ;
+
+        group: g8 {
+        dimensions:
+        #0,lev = 3 ;
+        #1,vrt_nbr = 2 ;
+
+        From: "Unidata netCDF Support" <support-netcdf at unidata.ucar.edu>
+        To: <pvicente at uci.edu>
+        Sent: Tuesday, March 12, 2013 5:02 AM
+        Subject: [netCDF #SHH-257980]: Re: [netcdfgroup] Dimensions IDs
+
+        > Your Ticket has been received, and a Unidata staff member will review it and reply accordingly. Listed below are details of this new Ticket. Please make sure the Ticket ID remains in the Subject: line on all correspondence related to this Ticket.
+        > 
+        >    Ticket ID: SHH-257980
+        >    Subject: Re: [netcdfgroup] Dimensions IDs
+        >    Department: Support netCDF
+        >    Priority: Normal
+        >    Status: Open
+
+        */
+
+          (void)fprintf(stdout,"%s: INFO %s reports variable <%s> with duplicate dimensions\n",nco_prg_nm_get(),fnc_nm,var_trv.nm_fll);
+          (void)fprintf(stdout,"%s: ERROR netCDF file with duplicate dimension IDs detected. Please use netCDF version at least 4.3.0.\n",nco_prg_nm_get());
+          (void)nco_prt_trv_tbl(nc_id,trv_tbl);
+          nco_exit(EXIT_FAILURE);
+        }
+
+        /* Store full dimension name */
+        trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].dmn_nm_fll=strdup(dmn_trv->nm_fll);
+
+        /* Store full group name where dimension is located */
+        trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].grp_nm_fll=strdup(dmn_trv->grp_nm_fll);
+      }
+
+    } /* Filter variables */
+  } /* Variables */
+
+} /* end nco_blb_dmn_ids_trv() */
+
+int                                    /* [rcd] Return code */
+nco_grp_itr                            /* [fnc] Populate traversal table by examining, recursively, subgroups of parent */
+(const int grp_id,                     /* I [ID] Group ID */
+ char * const grp_nm_fll_prn,          /* I [sng] Absolute group name of parent (path) */
+ char * const grp_nm_fll,              /* I [sng] Absolute group name (path) */
+ trv_tbl_sct * const trv_tbl)          /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Populate traversal table by examining, recursively, subgroups of parent */
+
+  const char sls_sng[]="/";        /* [sng] Slash string */
+
+  char grp_nm[NC_MAX_NAME+1];      /* [sng] Group name */
+  char var_nm[NC_MAX_NAME+1];      /* [sng] Variable name */ 
+  char dmn_nm[NC_MAX_NAME+1];      /* [sng] Dimension name */ 
+  char rec_nm[NC_MAX_NAME+1];      /* [sng] Record dimension name */ 
+
+  char *var_nm_fll;                /* [sng] Full path for variable */
+  char *dmn_nm_fll;                /* [sng] Full path for dimension */
+  char *sls_psn;                   /* [sng] Current position of group path search */
+
+  const int flg_prn=0;             /* [flg] All the dimensions in all parent groups will also be retrieved */    
+
+  int dmn_ids_grp[NC_MAX_DIMS];    /* [ID]  Dimension IDs array for group */ 
+  int dmn_ids_grp_ult[NC_MAX_DIMS];/* [ID] Unlimited (record) dimensions IDs array for group */
+  int dmn_id_var[NC_MAX_DIMS];     /* [ID] Dimensions IDs array for variable */
+  int *grp_ids;                    /* [ID] Sub-group IDs array */  
+  int grp_dpt=0;                   /* [nbr] Depth of group (root = 0) */
+  int nbr_att;                     /* [nbr] Number of attributes */
+  int nbr_dmn_grp;                 /* [nbr] Number of dimensions for group */
+  int nbr_dmn_var;                 /* [nbr] Number of dimensions for variable */
+  int nbr_grp;                     /* [nbr] Number of sub-groups in this group */
+  int nbr_rec;                     /* [nbr] Number of record dimensions in this group */
+  int nbr_var;                     /* [nbr] Number of variables */
+  int rcd=NC_NOERR;                /* [rcd] Return code */
+
+  long dmn_sz;                     /* [nbr] Dimension size */ 
+  long rec_sz;                     /* [nbr] Record dimension size */ 
+
+  nc_type var_typ;                 /* O [enm] NetCDF type */
+
+  nco_obj_typ obj_typ;             /* [enm] Object type (group or variable) */
+
+  /* Get all information for this group */
+
+  /* Get group name */
+  rcd+=nco_inq_grpname(grp_id,grp_nm);
+
+  /* Get number of sub-groups */
+  rcd+=nco_inq_grps(grp_id,&nbr_grp,(int *)NULL);
+
+  /* Obtain number of dimensions/variable/attributes for group; NB: ignore record dimension ID */
+  rcd+=nco_inq(grp_id,&nbr_dmn_grp,&nbr_var,&nbr_att,(int *)NULL);
+
+  /* Obtain dimensions IDs for group */
+  rcd+=nco_inq_dimids(grp_id,&nbr_dmn_grp,dmn_ids_grp,flg_prn);
+
+  /* Obtain unlimited dimensions for group */
+  rcd+=nco_inq_unlimdims(grp_id,&nbr_rec,dmn_ids_grp_ult);
+
+  /* Compute group depth */
+  sls_psn=grp_nm_fll;
+  if(!strcmp(grp_nm_fll,sls_sng)) grp_dpt=0; else grp_dpt=1;
+  while((sls_psn=strchr(sls_psn+1,'/'))) grp_dpt++;
+  if(nco_dbg_lvl_get() == nco_dbg_crr) (void)fprintf(stderr,"%s: INFO Group %s is at level %d\n",nco_prg_nm_get(),grp_nm_fll,grp_dpt);
+
+  /* Keep the old table objects size for insertion */
+  unsigned int idx;
+  idx=trv_tbl->nbr;
+
+  /* Add one more element to GTT (nco_realloc nicely handles first time/not first time insertions) */
+  trv_tbl->nbr++;
+  trv_tbl->lst=(trv_sct *)nco_realloc(trv_tbl->lst,trv_tbl->nbr*sizeof(trv_sct));
+
+  /* Add this element (a group) to table */
+  trv_tbl->lst[idx].nco_typ=nco_obj_typ_grp;          /* [enm] netCDF4 object type: group or variable */
+
+  strcpy(trv_tbl->lst[idx].nm,grp_nm);            /* [sng] Relative name (i.e., variable name or last component of path name for groups) */
+  trv_tbl->lst[idx].nm_lng=strlen(grp_nm);        /* [sng] Length of short name */
+  trv_tbl->lst[idx].grp_nm_fll=strdup(grp_nm_fll);/* [sng] Full group name (for groups, same as nm_fll) */
+  trv_tbl->lst[idx].nm_fll=strdup(grp_nm_fll);    /* [sng] Fully qualified name (path) */
+  trv_tbl->lst[idx].nm_fll_lng=strlen(grp_nm_fll);/* [sng] Length of full name */
+
+  trv_tbl->lst[idx].flg_cf=False;                 /* [flg] Object matches CF-metadata extraction criteria */
+  trv_tbl->lst[idx].flg_crd=False;                /* [flg] Object matches coordinate extraction criteria */
+  trv_tbl->lst[idx].flg_dfl=False;                /* [flg] Object meets default subsetting criteria */
+  trv_tbl->lst[idx].flg_gcv=False;                /* [flg] Group contains matched variable */
+  trv_tbl->lst[idx].flg_mch=False;                /* [flg] Object matches user-specified strings */
+  trv_tbl->lst[idx].flg_ncs=False;                /* [flg] Group is ancestor of specified group or variable */
+  trv_tbl->lst[idx].flg_nsx=False;                /* [flg] Object matches intersection criteria */
+  trv_tbl->lst[idx].flg_rcr=False;                /* [flg] Extract group recursively */
+  trv_tbl->lst[idx].flg_unn=False;                /* [flg] Object matches union criteria */
+  trv_tbl->lst[idx].flg_vfp=False;                /* [flg] Variable matches full path specification */
+  trv_tbl->lst[idx].flg_vsg=False;                /* [flg] Variable selected because group matches */
+  trv_tbl->lst[idx].flg_xcl=False;                /* [flg] Object matches exclusion criteria */
+  trv_tbl->lst[idx].flg_xtr=False;                /* [flg] Extract object */
+  trv_tbl->lst[idx].flg_rdr=False;                /* [flg] Variable has dimensions to re-order (ncpdq) */
+  trv_tbl->lst[idx].rec_dmn_nm_out=NULL;          /* [sng] Record dimension name, re-ordered */ 
+  trv_tbl->lst[idx].grp_dpt=grp_dpt;              /* [nbr] Depth of group (root = 0) */
+  trv_tbl->lst[idx].nbr_dmn=nbr_dmn_grp;          /* [nbr] Number of dimensions */
+  trv_tbl->lst[idx].nbr_att=nbr_att;              /* [nbr] Number of attributes */
+  trv_tbl->lst[idx].nbr_grp=nbr_grp;              /* [nbr] Number of sub-groups (for group) */
+  trv_tbl->lst[idx].nbr_rec=nbr_rec;              /* [nbr] Number of record dimensions */
+  trv_tbl->lst[idx].nbr_var=nbr_var;              /* [nbr] Number of variables (for group) */
+
+  trv_tbl->lst[idx].is_crd_var=nco_obj_typ_err;   /* [flg] (For variables only) Is this a coordinate variable? (unique dimension exists in scope) */
+  trv_tbl->lst[idx].is_rec_var=nco_obj_typ_err;   /* [flg] (For variables only) Is a record variable? (is_crd_var must be True) */
+  trv_tbl->lst[idx].var_typ=(nc_type)nco_obj_typ_err;/* [enm] (For variables only) NetCDF type  */  
+  trv_tbl->lst[idx].enm_prc_typ=err_typ;          /* [enm] (For variables only) Processing type enumerator  */  
+  trv_tbl->lst[idx].var_typ_out=(nc_type)err_typ; /* [enm] (For variables only) NetCDF type in output file (used by ncflint, ncpdq)  */
+  if(grp_nm_fll_prn) trv_tbl->lst[idx].grp_nm_fll_prn=strdup(grp_nm_fll_prn); /* [sng] (ncge) Parent group full name */         
+  else trv_tbl->lst[idx].grp_nm_fll_prn=NULL;
+  trv_tbl->lst[idx].flg_nsm_prn=False;            /* [flg] (ncge) Group is, or variable is in, ensemble parent group */
+  trv_tbl->lst[idx].flg_nsm_mbr=False;            /* [flg] (ncge ) Group is, or variable is in, ensemble member group */  
+  trv_tbl->lst[idx].flg_nsm_tpl=False;            /* [flg] Group is, or variable is in, template member group */
+  trv_tbl->lst[idx].nsm_nm=NULL;                  /* [sng] (ncge) Ensemble parent group name i.e., full path to ensemble parent */ 
+
+  /* Variable dimensions  */
+  for(int idx_dmn_var=0;idx_dmn_var<NC_MAX_DIMS;idx_dmn_var++){
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_nm_fll=NULL;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_nm=NULL;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].grp_nm_fll=NULL;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].is_crd_var=nco_obj_typ_err;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].crd=NULL;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].ncd=NULL;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_id=nco_obj_typ_err;
+    /* Assume dimension is to keep on output */
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].flg_dmn_avg=False;
+    trv_tbl->lst[idx].var_dmn[idx_dmn_var].flg_rdd=False;   
+  } /* end loop over dimensions */
+
+  /* Iterate variables for this group */
+  for(int idx_var=0;idx_var<nbr_var;idx_var++){
+
+    /* Get type of variable and number of dimensions */
+    rcd+=nco_inq_var(grp_id,idx_var,var_nm,&var_typ,&nbr_dmn_var,(int *)NULL,&nbr_att);
+
+    /* Get dimension IDs for variable */
+    (void)nco_inq_vardimid(grp_id,idx_var,dmn_id_var);
+
+    /* Allocate path buffer and include space for trailing NUL */ 
+    var_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(var_nm)+2L);
+
+    /* Initialize path with current absolute group path */
+    strcpy(var_nm_fll,grp_nm_fll);
+
+    /* If not root group, concatenate separator */
+    if(strcmp(grp_nm_fll,sls_sng)) strcat(var_nm_fll,sls_sng);
+
+    /* Concatenate variable to absolute group path */
+    strcat(var_nm_fll,var_nm);
+
+    if(var_typ <= NC_MAX_ATOMIC_TYPE){
+      obj_typ=nco_obj_typ_var;
+    }else{ /* > NC_MAX_ATOMIC_TYPE */
+      obj_typ=nco_obj_typ_nonatomic_var;
+      if(nco_dbg_lvl_get() >= nco_dbg_var){
+        (void)fprintf(stderr,"%s: WARNING NCO only supports netCDF4 atomic-type variables. Variable %s is type %d = %s, and will be ignored in subsequent processing.\n",
+          nco_prg_nm_get(),var_nm_fll,var_typ,nco_typ_sng(var_typ));
+      } /* endif */
+    } /* > NC_MAX_ATOMIC_TYPE */
+
+    /* Keep the old table objects size for insertion */
+    idx=trv_tbl->nbr;
+
+    /* Add one more element to GTT (nco_realloc nicely handles first time/not first time insertions) */
+    trv_tbl->nbr++;
+    trv_tbl->lst=(trv_sct *)nco_realloc(trv_tbl->lst,trv_tbl->nbr*sizeof(trv_sct));
+
+    /* Add this element, a variable, to table. NB: nbr_var, nbr_grp, flg_rcr not valid here */
+    trv_tbl->lst[idx].nco_typ=obj_typ;
+
+    strcpy(trv_tbl->lst[idx].nm,var_nm);
+    trv_tbl->lst[idx].nm_lng=strlen(var_nm);
+    trv_tbl->lst[idx].grp_nm_fll=strdup(grp_nm_fll);
+    trv_tbl->lst[idx].nm_fll=strdup(var_nm_fll);
+    trv_tbl->lst[idx].nm_fll_lng=strlen(var_nm_fll);  
+
+    trv_tbl->lst[idx].flg_cf=False; 
+    trv_tbl->lst[idx].flg_crd=False; 
+    trv_tbl->lst[idx].flg_dfl=False; 
+    trv_tbl->lst[idx].flg_gcv=False; 
+    trv_tbl->lst[idx].flg_mch=False; 
+    trv_tbl->lst[idx].flg_ncs=False; 
+    trv_tbl->lst[idx].flg_nsx=False; 
+    trv_tbl->lst[idx].flg_rcr=False; 
+    trv_tbl->lst[idx].flg_unn=False; 
+    trv_tbl->lst[idx].flg_vfp=False; 
+    trv_tbl->lst[idx].flg_vsg=False; 
+    trv_tbl->lst[idx].flg_xcl=False; 
+    trv_tbl->lst[idx].flg_xtr=False;
+    trv_tbl->lst[idx].flg_rdr=False;
+    trv_tbl->lst[idx].rec_dmn_nm_out=NULL;                     
+    trv_tbl->lst[idx].grp_dpt=grp_dpt; 
+    trv_tbl->lst[idx].nbr_att=nbr_att;
+    trv_tbl->lst[idx].nbr_dmn=nbr_dmn_var;
+    trv_tbl->lst[idx].nbr_grp=nco_obj_typ_err;
+    trv_tbl->lst[idx].nbr_rec=nbr_rec; /* NB: broken fxm should be record dimensions used by this variable */
+    trv_tbl->lst[idx].nbr_var=nco_obj_typ_err;
+
+    trv_tbl->lst[idx].is_crd_var=False;             
+    trv_tbl->lst[idx].is_rec_var=False; 
+    trv_tbl->lst[idx].var_typ=var_typ; 
+    trv_tbl->lst[idx].enm_prc_typ=err_typ;
+    trv_tbl->lst[idx].var_typ_out=(nc_type)err_typ; 
+    if(grp_nm_fll_prn) trv_tbl->lst[idx].grp_nm_fll_prn=strdup(grp_nm_fll_prn); /* [sng] (ncge) Parent group full name */         
+    else trv_tbl->lst[idx].grp_nm_fll_prn=NULL;
+    trv_tbl->lst[idx].flg_nsm_prn=False;
+    trv_tbl->lst[idx].flg_nsm_mbr=False;
+    trv_tbl->lst[idx].flg_nsm_tpl=False;
+    trv_tbl->lst[idx].nsm_nm=NULL;
+
+    /* Variable dimensions */
+    for(int idx_dmn_var=0;idx_dmn_var<NC_MAX_DIMS;idx_dmn_var++){
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_nm=NULL;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_nm_fll=NULL;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].grp_nm_fll=NULL;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].is_crd_var=nco_obj_typ_err;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].crd=NULL;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].ncd=NULL;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_id=nco_obj_typ_err;
+      /* Assume dimension is to keep on output */
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].flg_dmn_avg=False;
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].flg_rdd=False;   
+    }
+
+    /* Variable dimensions; store what we know at this time: relative name and ID */
+    for(int idx_dmn_var=0;idx_dmn_var<nbr_dmn_var;idx_dmn_var++){
+
+      char dmn_nm_var[NC_MAX_NAME+1]; /* [sng] Dimension name */
+      long dmn_sz_var;                /* [nbr] Dimension size */ 
+
+      /* Get dimension name; netCDF nc_inq_dimname() currently relative name */
+      (void)nco_inq_dim(grp_id,dmn_id_var[idx_dmn_var],dmn_nm_var,&dmn_sz_var);
+
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_nm=strdup(dmn_nm_var);
+      trv_tbl->lst[idx].var_dmn[idx_dmn_var].dmn_id=dmn_id_var[idx_dmn_var];
+
+    } /* Variable dimensions; store what we know at this time: relative name and ID */
+
+    /* Free constructed name */
+    var_nm_fll=(char *)nco_free(var_nm_fll);
+
+  } /* Iterate variables for this group */
+
+  /* Add dimension objects */ 
+
+  /* Iterate dimensions (for group; dimensions are defined *for* groups) */
+  for(int idx_dmn=0;idx_dmn<nbr_dmn_grp;idx_dmn++){
+
+    /* Keep the old table dimension size for insertion */
+    idx=trv_tbl->nbr_dmn;
+
+    /* Add one more element to dimension list of GTT (nco_realloc nicely handles first time/not first time insertions) */
+    trv_tbl->nbr_dmn++;
+    trv_tbl->lst_dmn=(dmn_trv_sct *)nco_realloc(trv_tbl->lst_dmn,trv_tbl->nbr_dmn*sizeof(dmn_trv_sct));
+
+    /* Initialize as non-record dimension */
+    trv_tbl->lst_dmn[idx].is_rec_dmn=False;
+
+    /* Get dimension name */
+    rcd+=nco_inq_dim(grp_id,dmn_ids_grp[idx_dmn],dmn_nm,&dmn_sz);
+
+    /* Iterate unlimited dimensions to detect if dimension is record */
+    for(int rec_idx=0;rec_idx<nbr_rec;rec_idx++){
+
+      /* Get record dimension name */
+      (void)nco_inq_dim(grp_id,dmn_ids_grp_ult[rec_idx],rec_nm,&rec_sz);
+
+      /* Current dimension name matches current record dimension name? */
+      if(!strcmp(rec_nm,dmn_nm)){
+
+        /* Dimension is a record dimension */
+        trv_tbl->lst_dmn[idx].is_rec_dmn=True;
+
+        /* Exit record dimension loop; we found it */
+        break;
+      } /* end match record dimension name */
+    } /* end record dimension loop */
+
+    /* Allocate path buffer and include space for trailing NUL */ 
+    dmn_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(dmn_nm)+2L);
+
+    /* Initialize path with current absolute group path */
+    strcpy(dmn_nm_fll,grp_nm_fll);
+
+    /* If not root group, concatenate separator */
+    if(strcmp(grp_nm_fll,sls_sng)) strcat(dmn_nm_fll,sls_sng);
+
+    /* Concatenate dimension name to absolute group path */
+    strcat(dmn_nm_fll,dmn_nm);
+
+    /* Store object */
+    strcpy(trv_tbl->lst_dmn[idx].nm,dmn_nm);            
+    trv_tbl->lst_dmn[idx].grp_nm_fll=strdup(grp_nm_fll); 
+    trv_tbl->lst_dmn[idx].nm_fll=strdup(dmn_nm_fll);    
+    trv_tbl->lst_dmn[idx].sz=dmn_sz;                            
+    trv_tbl->lst_dmn[idx].lmt_msa.dmn_nm=strdup(dmn_nm); 
+    trv_tbl->lst_dmn[idx].lmt_msa.dmn_sz_org=dmn_sz;
+    trv_tbl->lst_dmn[idx].lmt_msa.dmn_cnt=dmn_sz;
+    trv_tbl->lst_dmn[idx].lmt_msa.WRP=False;
+    trv_tbl->lst_dmn[idx].lmt_msa.BASIC_DMN=True;
+    trv_tbl->lst_dmn[idx].lmt_msa.MSA_USR_RDR=False; 
+    trv_tbl->lst_dmn[idx].lmt_msa.lmt_dmn_nbr=0;
+    trv_tbl->lst_dmn[idx].lmt_msa.lmt_crr=0;
+    trv_tbl->lst_dmn[idx].lmt_msa.lmt_dmn=NULL;
+    trv_tbl->lst_dmn[idx].crd_nbr=0;         
+    trv_tbl->lst_dmn[idx].crd=NULL; 
+    trv_tbl->lst_dmn[idx].dmn_id=dmn_ids_grp[idx_dmn];
+    trv_tbl->lst_dmn[idx].has_crd_scp=nco_obj_typ_err;
+
+    /* Free constructed name */
+    dmn_nm_fll=(char *)nco_free(dmn_nm_fll);
+  } /* end dimension loop */
+
+  /* Go to sub-groups */ 
+  grp_ids=(int *)nco_malloc(nbr_grp*sizeof(int)); 
+  rcd+=nco_inq_grps(grp_id,&nbr_grp,grp_ids);
+
+  /* Heart of traversal construction: construct a new sub-group path and call function recursively with this new name; Voila */
+  for(int grp_idx=0;grp_idx<nbr_grp;grp_idx++){
+    char *sub_grp_nm_fll=NULL; /* [sng] Sub group path */
+    int gid=grp_ids[grp_idx]; /* [id] Current group ID */  
+
+    /* Get sub-group name */
+    rcd+=nco_inq_grpname(gid,grp_nm);
+
+    /* Allocate path buffer including space for trailing NUL */ 
+    sub_grp_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(grp_nm)+2L);
+
+    /* Initialize path with current absolute group path */
+    strcpy(sub_grp_nm_fll,grp_nm_fll);
+
+    /* If not root group, concatenate separator */
+    if(strcmp(grp_nm_fll,sls_sng)) strcat(sub_grp_nm_fll,sls_sng);
+
+    /* Concatenate current group to absolute group path */
+    strcat(sub_grp_nm_fll,grp_nm); 
+
+    /* Recursively process subgroups; NB: pass new absolute group name */
+    rcd+=nco_grp_itr(gid,grp_nm_fll,sub_grp_nm_fll,trv_tbl);
+
+    /* Free constructed name */
+    sub_grp_nm_fll=(char *)nco_free(sub_grp_nm_fll);
+  } /* end loop over groups */
+
+  (void)nco_free(grp_ids); 
+  return rcd;
+} /* end nco_grp_itr() */
+
+void                      
+nco_bld_crd_rec_var_trv               /* [fnc] Build dimension information for all variables */
+(const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Build "is_crd_var" and "is_rec_var" members for all variables */
+
+  const char fnc_nm[]="nco_blb_crd_var_trv()"; /* [sng] Function name */
+
+  /* Loop all objects */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* Interested in variables only */
+    if(var_trv.nco_typ == nco_obj_typ_var){
+
+      /* Loop unique dimensions list in groups */
+      for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+        dmn_trv_sct dmn_trv=trv_tbl->lst_dmn[idx_dmn]; 
+
+        /* Is there a variable with this dimension name anywhere? (relative name)  */
+        if(!strcmp(dmn_trv.nm,var_trv.nm)){
+
+          /* Is variable in scope of dimension ? */
+          if(nco_crd_var_dmn_scp(&var_trv,&dmn_trv,trv_tbl)){
+
+            /* Mark this variable as a coordinate variable. NB: coordinate variables are 1D */
+            if(var_trv.nbr_dmn == 1) trv_tbl->lst[idx_var].is_crd_var=True;
+            else trv_tbl->lst[idx_var].is_crd_var=False;
+
+            /* If the group dimension is a record dimension then the variable is a record variable */
+            trv_tbl->lst[idx_var].is_rec_var=dmn_trv.is_rec_dmn;
+
+            if(nco_dbg_lvl_get() == nco_dbg_old){
+              (void)fprintf(stdout,"%s: INFO %s <%s> is ",nco_prg_nm_get(),fnc_nm,var_trv.nm_fll);
+              if(dmn_trv.is_rec_dmn) (void)fprintf(stdout,"(record) ");
+              (void)fprintf(stdout,"coordinate\n");
+            }
+
+            /* Go to next variable */
+            break;
+
+          }/* Is variable in scope of dimension ? */
+        } /* Is there a variable with this dimension name anywhere? (relative name)  */
+      } /* Loop unique dimensions list in groups */
+    } /* Interested in variables only */
+  } /* Loop all variables */
+
+} /* nco_blb_crd_var_trv() */
+
+void                      
+nco_bld_crd_var_trv                   /* [fnc] Build GTT "crd_sct" coordinate variable structure */
+(trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Build GTT "crd_sct" coordinate variable structure */
+
+  const char fnc_nm[]="nco_blb_crd_var_trv()"; /* [sng] Function name */
+
+  /* Step 1) Find the total number of coordinate variables for every dimension */
+
+  /* Loop unique dimensions list in groups */
+  for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+    dmn_trv_sct dmn_trv=trv_tbl->lst_dmn[idx_dmn]; 
+
+    /* Loop all objects */
+    for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+      trv_sct var_trv=trv_tbl->lst[idx_var];
+
+      /* Interested in variables only */
+      if(var_trv.nco_typ == nco_obj_typ_var){
+
+        /* Is there a variable with this dimension name anywhere? (relative name)  */
+        if(strcmp(dmn_trv.nm,var_trv.nm) == 0 ){
+
+          /* Is variable in scope of dimension ? */
+          if(nco_crd_var_dmn_scp(&var_trv,&dmn_trv,trv_tbl)){
+
+            /* Increment the number of coordinate variables for this dimension */
+            trv_tbl->lst_dmn[idx_dmn].crd_nbr++;
+
+          }/* Is variable in scope of dimension ? */
+        } /* Is there a variable with this dimension name anywhere? (relative name)  */
+      } /* Interested in variables only */
+    } /* Loop all objects */
+  } /* Loop unique dimensions list in groups */
+
+  /* Step 2) Allocate coordinate variables array (crd_sct **) for every dimension */
+
+  /* Loop unique dimensions list in groups */
+  for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+
+    /* Total number of coordinate variables for this dimension */
+    int crd_nbr=trv_tbl->lst_dmn[idx_dmn].crd_nbr;
+
+    /* Alloc coordinate array if there are any coordinates */
+    if(crd_nbr) trv_tbl->lst_dmn[idx_dmn].crd=(crd_sct **)nco_malloc(crd_nbr*sizeof(crd_sct *));
+
+  } /* Loop unique dimensions list in groups */
+
+  /* Step 3) Allocate/Initialize every coordinate variable array for every dimension */
+
+  /* Loop unique dimensions list in groups */
+  for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+    dmn_trv_sct dmn_trv=trv_tbl->lst_dmn[idx_dmn]; 
+
+    int crd_idx=0; /* [nbr] Coordinate index for current dimension */
+
+    /* Loop all objects */
+    for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+      trv_sct var_trv=trv_tbl->lst[idx_var];
+
+      /* Interested in variables only */
+      if(var_trv.nco_typ == nco_obj_typ_var){
+
+        /* Is there a variable with this dimension name anywhere? (relative name)  */
+        if(strcmp(dmn_trv.nm,var_trv.nm) == 0 ){
+
+          /* Is variable in scope of dimension ? */
+          if(nco_crd_var_dmn_scp(&var_trv,&dmn_trv,trv_tbl)){
+
+            /* Alloc this coordinate */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]=(crd_sct *)nco_malloc(sizeof(crd_sct));
+
+            /* The coordinate full name is the variable full name found in scope */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->crd_nm_fll=strdup(var_trv.nm_fll);
+
+            /* The coordinate dimension full name is the dimension full name */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->dmn_nm_fll=strdup(dmn_trv.nm_fll);
+
+            /* The coordinate ID is the dimension unique ID */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->dmn_id=dmn_trv.dmn_id;
+
+            /* Full group name where coordinate is located is the variable full group name  */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->crd_grp_nm_fll=strdup(var_trv.grp_nm_fll);
+
+            /* Full group name where dimension of *this* coordinate is located is the full group name of the dimension  */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->dmn_grp_nm_fll=strdup(dmn_trv.grp_nm_fll);
+
+            /* Store relative name (same for dimension and variable) */
+            strcpy(trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->nm,var_trv.nm);
+
+            /* Is a record dimension(variable) if the dimennsion is a record dimension */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->is_rec_dmn=dmn_trv.is_rec_dmn;
+
+            /* Size is size */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->sz=dmn_trv.sz;
+
+            /* Type */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->var_typ=var_trv.var_typ;
+
+            /* Group depth */
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->grp_dpt=var_trv.grp_dpt;
+
+            /* MSA */     
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.dmn_nm=strdup(var_trv.nm);
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.dmn_cnt=dmn_trv.sz;
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.dmn_sz_org=dmn_trv.sz;
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.WRP=False;
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.BASIC_DMN=True;
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.MSA_USR_RDR=False;  
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.lmt_dmn_nbr=0;
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.lmt_crr=0;
+            trv_tbl->lst_dmn[idx_dmn].crd[crd_idx]->lmt_msa.lmt_dmn=NULL;
+
+            
+            if(nco_dbg_lvl_get() == nco_dbg_old){     
+              crd_sct *crd=trv_tbl->lst_dmn[idx_dmn].crd[crd_idx];
+              (void)fprintf(stdout,"%s: INFO %s variable <%s> has coordinate <%s> from dimension <%s>\n",nco_prg_nm_get(),fnc_nm,
+                var_trv.nm_fll,crd->crd_nm_fll,crd->dmn_nm_fll);
+            }
+
+            /* Limits are initialized in build limits function */
+        
+            /* Incrementr coordinate index for current dimension */
+            crd_idx++;
+
+          }/* Is variable in scope of dimension ? */
+        } /* Is there a variable with this dimension name anywhere? (relative name)  */
+      } /* Interested in variables only */
+    } /* Loop all objects */
+  } /* Loop unique dimensions list in groups */
+
+} /* nco_blb_crd_var_trv() */
+
+
+static void
+prt_lmt                             /* [fnc] Print limit  */
+(const int lmt_idx,                 /* I [sct] Index */
+ lmt_sct *lmt)                      /* I [sct] Limit */
+{
+  (void)fprintf(stdout," LIMIT[%d]%s(%li,%li,%li) ",lmt_idx,lmt->nm,lmt->srt,lmt->cnt,lmt->srd);
+} /* prt_lmt() */
+
+
+
+void                          
+nco_prt_trv_tbl                      /* [fnc] Print GTT (Group Traversal Table) for debugging  with --get_grp_info  */
+(const int nc_id,                    /* I [ID] File ID */
+ const trv_tbl_sct * const trv_tbl)  /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Groups */
+
+  int nbr_dmn;      /* [nbr] Total number of unique dimensions */
+  int nbr_crd;      /* [nbr] Total number of coordinate variables */
+  int nbr_crd_var;  /* [nbr] Total number of coordinate variables */
+
+  nbr_dmn=0;
+  (void)fprintf(stdout,"%s: INFO reports group information\n",nco_prg_nm_get());
+  for(unsigned grp_idx=0;grp_idx<trv_tbl->nbr;grp_idx++){
+
+    /* Filter groups */
+    if(trv_tbl->lst[grp_idx].nco_typ == nco_obj_typ_grp){
+      trv_sct trv=trv_tbl->lst[grp_idx];            
+      (void)fprintf(stdout,"%s: %d subgroups, %d dimensions, %d record dimensions, %d attributes, %d variables\n",
+        trv.nm_fll,trv.nbr_grp,trv.nbr_dmn,trv.nbr_rec,trv.nbr_att,trv.nbr_var); 
+
+      /* Print dimensions for group */
+      (void)nco_prt_dmn(nc_id,trv.nm_fll);
+
+      nbr_dmn+=trv.nbr_dmn;
+
+    } /* Filter groups */
+  } /* Loop groups */
+
+
+  assert((unsigned int)nbr_dmn == trv_tbl->nbr_dmn);
+
+  /* Variables */
+
+  nbr_crd=0;
+  (void)fprintf(stdout,"\n");
+  (void)fprintf(stdout,"%s: INFO reports variable information\n",nco_prg_nm_get());
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_var];   
+
+    /* Filter variables  */
+    if(var_trv.nco_typ == nco_obj_typ_var){
+
+      (void)fprintf(stdout,"%s:",var_trv.nm_fll); 
+
+      /* Filter output */
+      if(var_trv.is_crd_var){
+        (void)fprintf(stdout," (coordinate)");
+        nbr_crd++;
+      }
+
+      /* Filter output */
+      if(var_trv.is_rec_var) (void)fprintf(stdout," (record)");
+
+      /* If record variable must be coordinate variable */
+      if(var_trv.is_rec_var) assert(var_trv.is_crd_var);
+
+      (void)fprintf(stdout," %d dimensions: ",var_trv.nbr_dmn); 
+
+      /* Dimensions */
+      for(int idx_dmn_var=0;idx_dmn_var<var_trv.nbr_dmn;idx_dmn_var++){
+
+        var_dmn_sct var_dmn=var_trv.var_dmn[idx_dmn_var];
+
+        (void)fprintf(stdout,"[%d]%s#%d ",idx_dmn_var,var_dmn.dmn_nm_fll,var_dmn.dmn_id); 
+        /* Filter output */
+        if(var_dmn.is_crd_var) (void)fprintf(stdout," (coordinate) : ");
+
+        /*  The limits have to be separated to */
+
+        /* a) case where the dimension has coordinate variables */
+        if(var_dmn.crd){
+
+          crd_sct *crd=var_dmn.crd;
+
+          /* Limits */
+          for(int lmt_idx=0;lmt_idx<crd->lmt_msa.lmt_dmn_nbr;lmt_idx++){ 
+            (void)prt_lmt(lmt_idx,crd->lmt_msa.lmt_dmn[lmt_idx]);
+          }/* Limits */
+
+          /* ! case where the dimension has coordinate variables */
+        } else {
+
+          dmn_trv_sct *ncd=var_dmn.ncd;
+
+          /* Limits */
+          for(int lmt_idx=0;lmt_idx<ncd->lmt_msa.lmt_dmn_nbr;lmt_idx++){ 
+            (void)prt_lmt(lmt_idx,ncd->lmt_msa.lmt_dmn[lmt_idx]);
+          }/* Limits */
+
+        } /* ! case where the dimension has coordinate variables */
+      } /* Dimensions */
+
+      /* End this variable */
+      (void)fprintf(stdout,"\n");
+
+    } /* Filter variables  */
+  } /* Variables */
+
+  /* Unique dimension list, Coordinate variables stored in unique dimension list, limits */
+
+  nbr_crd_var=0;
+  (void)fprintf(stdout,"\n");
+  (void)fprintf(stdout,"%s: INFO reports coordinate variables and limits listed by dimension:\n",nco_prg_nm_get());
+  for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+    dmn_trv_sct dmn_trv=trv_tbl->lst_dmn[idx_dmn]; 
+
+    /* Dimension ID and  full name */
+    (void)fprintf(stdout,"(#%d%s)",dmn_trv.dmn_id,dmn_trv.nm_fll);
+
+    /* Filter output */
+    if(dmn_trv.is_rec_dmn) (void)fprintf(stdout," record dimension(%lu):: ",(unsigned long)dmn_trv.sz); else (void)fprintf(stdout," dimension(%lu):: ",(unsigned long)dmn_trv.sz);
+
+    nbr_crd_var+=dmn_trv.crd_nbr;
+
+    /* Loop coordinates */
+    for(int crd_idx=0;crd_idx<dmn_trv.crd_nbr;crd_idx++){
+      crd_sct *crd=dmn_trv.crd[crd_idx];
+
+      /* Coordinate full name */
+      (void)fprintf(stdout,"%s ",crd->crd_nm_fll);
+
+      /* Dimension full name */
+      (void)fprintf(stdout,"(#%d%s) ",crd->dmn_id,crd->dmn_nm_fll);
+
+      /* Limits */
+      for(int lmt_idx=0;lmt_idx<crd->lmt_msa.lmt_dmn_nbr;lmt_idx++){ 
+        (void)prt_lmt(lmt_idx,crd->lmt_msa.lmt_dmn[lmt_idx]);
+      }/* Limits */
+
+      /* Terminate this coordinate with "::" */
+      if(dmn_trv.crd_nbr>1) (void)fprintf(stdout,":: ");
+
+    }/* Loop coordinates */
+
+    /* Terminate line */
+    (void)fprintf(stdout,"\n");
+
+  } /* Coordinate variables stored in unique dimension list */
+
+  assert(nbr_crd_var == nbr_crd);
+
+} /* nco_prt_trv_tbl() */
+
+
+void                          
+nco_has_crd_dmn_scp                  /* [fnc] Is there a variable with same name in dimension's scope?   */
+(const trv_tbl_sct * const trv_tbl)  /* I [sct] GTT (Group Traversal Table) */
+{
+
+  const char fnc_nm[]="nco_has_crd_dmn_scp()"; /* [sng] Function name  */
+
+  /* Unique dimension list */
+
+  if(nco_dbg_lvl_get() == nco_dbg_old)(void)fprintf(stdout,"%s: INFO reports dimension information with limits: %d dimensions\n",nco_prg_nm_get(),trv_tbl->nbr_dmn);
+  for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+    dmn_trv_sct dmn_trv=trv_tbl->lst_dmn[idx_dmn]; 
+
+    /* Dimension #/name first */
+    if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"#%d%s\n",dmn_trv.dmn_id,dmn_trv.nm_fll);
+
+    nco_bool in_scp=False;
+
+    /* Loop object table */
+    for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+      /* Filter variables  */
+      if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
+        trv_sct var_trv=trv_tbl->lst[idx_var];   
+
+        /* Is there a variable with this dimension name (a coordinate varible) anywhere (relative name)  */
+        if(!strcmp(dmn_trv.nm,var_trv.nm)){
+
+          /* Is variable in scope of dimension ? */
+          if(nco_crd_var_dmn_scp(&var_trv,&dmn_trv,trv_tbl)){
+
+            if(nco_dbg_lvl_get() == nco_dbg_old){
+              (void)fprintf(stdout,"%s: INFO %s reports variable <%s> in scope of dimension <%s>\n",nco_prg_nm_get(),fnc_nm,
+                var_trv.nm_fll,dmn_trv.nm_fll);        
+            } /* endif dbg */
+
+            trv_tbl->lst_dmn[idx_dmn].has_crd_scp=True;
+
+            /* Built before; variable must be a cordinate */
+            assert(var_trv.is_crd_var);
+
+            in_scp=True;
+
+          } /* Is variable in scope of dimension ? */
+        } /* Is there a variable with this dimension name anywhere? (relative name)  */
+      } /* Filter variables  */
+    } /* Loop object table */
+
+
+    if(nco_dbg_lvl_get() == nco_dbg_old)
+      if(!in_scp) (void)fprintf(stdout,"%s: INFO %s dimension <%s> with no in scope variables\n",nco_prg_nm_get(),fnc_nm,dmn_trv.nm_fll);        
+
+    trv_tbl->lst_dmn[idx_dmn].has_crd_scp=in_scp;
+
+  } /* Unique dimension list */
+
+  /* Unique dimension list */
+  for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+    dmn_trv_sct dmn_trv=trv_tbl->lst_dmn[idx_dmn]; 
+    assert(dmn_trv.has_crd_scp != nco_obj_typ_err);
+  } /* Unique dimension list */
+
+} /* nco_has_crd_dmn_scp() */
+
+nco_bool                               /* O [flg] True if variable is in scope of dimension */
+nco_crd_var_dmn_scp                    /* [fnc] Is coordinate variable in dimension scope */
+(const trv_sct * const var_trv,        /* I [sct] GTT Object Variable */
+ const dmn_trv_sct * const dmn_trv,    /* I [sct] GTT unique dimension */
+ const trv_tbl_sct * const trv_tbl)    /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Find if variable is in scope of the dimension: 
+  Use case in scope:
+  dimension /lon 
+  variable /g1/lon
+  Use case not in scope:
+  variable /lon
+  dimension /g1/lon
+
+  NOTE: deal with cases like
+  dimension: /lon
+  variable:  /g8/lon 
+  dimension: /g8/lon
+  */
+
+  const char fnc_nm[]="nco_crd_var_dmn_scp()";   /* [sng] Function name */
+
+  const char sls_chr='/';                    /* [chr] Slash character */
+  char *sbs_srt;                             /* [sng] Location of user-string match start in object path */
+  char *sbs_end;                             /* [sng] Location of user-string match end   in object path */
+
+  nco_bool flg_pth_srt_bnd=False;            /* [flg] String begins at path component boundary */
+  nco_bool flg_pth_end_bnd=False;            /* [flg] String ends   at path component boundary */
+
+  size_t var_sng_lng;                        /* [nbr] Length of variable name */
+  size_t var_nm_fll_lng;                     /* [nbr] Length of full variable name */
+  size_t dmn_nm_fll_lng;                     /* [nbr] Length of of full dimension name */
+
+  /* Coordinate variables are 1D */
+  if(var_trv->nbr_dmn !=1 ){
+    return False;
+  }
+
+  /* Most common case is for the unique dimension full name to match the full variable name   */
+  if(strcmp(var_trv->nm_fll,dmn_trv->nm_fll) == 0){
+    if(nco_dbg_lvl_get() == nco_dbg_old){
+      (void)fprintf(stdout,"%s: INFO %s found absolute match of variable <%s> and dimension <%s>:\n",nco_prg_nm_get(),fnc_nm,
+        var_trv->nm_fll,dmn_trv->nm_fll);
+    }
+    return True;
+  }
+
+  /* Deal with in scope cases */
+
+  var_nm_fll_lng=strlen(var_trv->nm_fll);
+  dmn_nm_fll_lng=strlen(dmn_trv->nm_fll);
+  var_sng_lng=strlen(var_trv->nm);
+
+  /* Look for partial match, not necessarily on path boundaries; locate variable (str2) in full dimension name (str1) */
+  if((sbs_srt=strstr(dmn_trv->nm_fll,var_trv->nm))){
+
+    /* Ensure match spans (begins and ends on) whole path-component boundaries */
+
+    /* Does match begin at path component boundary ... directly on a slash? */
+    if(*sbs_srt == sls_chr){
+      flg_pth_srt_bnd=True;
+    }
+
+    /* ...or one after a component boundary? */
+    if((sbs_srt > dmn_trv->nm_fll) && (*(sbs_srt-1L) == sls_chr)){
+      flg_pth_srt_bnd=True;
+    }
+
+    /* Does match end at path component boundary ... directly on a slash? */
+    sbs_end=sbs_srt+var_sng_lng-1L;
+
+    if(*sbs_end == sls_chr){
+      flg_pth_end_bnd=True;
+    }
+
+    /* ...or one before a component boundary? */
+    if(sbs_end <= dmn_trv->nm_fll+dmn_nm_fll_lng-1L){
+      if((*(sbs_end+1L) == sls_chr) || (*(sbs_end+1L) == '\0')){
+        flg_pth_end_bnd=True;
+      }
+    }
+
+    /* If match is on both ends of '/' then it's a "real" name, not for example "lat_lon" as a variable looking for "lon" */
+    if(flg_pth_srt_bnd && flg_pth_end_bnd){
+
+      /* Absolute match (equality redundant); strcmp deals cases like /g3/rlev/ and /g5/rlev  */
+      if(var_nm_fll_lng == dmn_nm_fll_lng && strcmp(var_trv->nm_fll,dmn_trv->nm_fll) == 0){
+        if(nco_dbg_lvl_get() == nco_dbg_old){
+          (void)fprintf(stdout,"%s: INFO %s found absolute match of variable <%s> and dimension <%s>:\n",nco_prg_nm_get(),fnc_nm,
+            var_trv->nm_fll,dmn_trv->nm_fll);
+        }
+        return True;
+
+        /* Variable in scope of dimension */
+      }else if(var_nm_fll_lng>dmn_nm_fll_lng){
+
+        /* NOTE: deal with cases like
+        dimension: /lon
+        variable:  /g8/lon 
+        dimension: /g8/lon
+        */
+
+        /* Loop unique dimensions list in groups */
+        for(unsigned idx_dmn=0;idx_dmn<trv_tbl->nbr_dmn;idx_dmn++){
+          dmn_trv_sct dmn=trv_tbl->lst_dmn[idx_dmn]; 
+          /* Loop all objects */
+          for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+            trv_sct var=trv_tbl->lst[idx_var];
+            /* Interested in variables only */
+            if(var.nco_typ == nco_obj_typ_var){
+              /* Is there a *full* match already for the *input* dimension ?  */
+              if(strcmp(var_trv->nm_fll,dmn.nm_fll) == 0 ){
+                if(nco_dbg_lvl_get() == nco_dbg_old){
+                  (void)fprintf(stdout,"%s: INFO %s variable <%s> has another dimension full match <%s>:\n",nco_prg_nm_get(),fnc_nm,
+                    var_trv->nm_fll,dmn.nm_fll);
+                }
+                return False;
+              } /* Is there a *full* match already?  */
+            } /* Interested in variables only */
+          } /* Loop all objects */
+        } /* Loop unique dimensions list in groups */
+
+
+        if(nco_dbg_lvl_get() == nco_dbg_old){
+          (void)fprintf(stdout,"%s: INFO %s found variable <%s> in scope of dimension <%s>:\n",nco_prg_nm_get(),fnc_nm,
+            var_trv->nm_fll,dmn_trv->nm_fll);
+        }
+        return True;
+
+        /* Variable out of scope of dimension */
+      }else if(var_nm_fll_lng < dmn_nm_fll_lng){
+        if(nco_dbg_lvl_get() == nco_dbg_old){
+          (void)fprintf(stdout,"%s: INFO %s found variable <%s> out of scope of dimension <%s>:\n",nco_prg_nm_get(),fnc_nm,
+            var_trv->nm_fll,dmn_trv->nm_fll);
+        }
+        return False;
+
+      } /* Absolute match  */
+    } /* If match is on both ends of '/' then it's a "real" name, not for example "lat_lon" as a variable looking for "lon" */
+  }/* Look for partial match, not necessarily on path boundaries */
+
+  return False;
+} /* nco_crd_var_dmn_scp() */
+
+int /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
+nco_cmp_crd_dpt /* [fnc] Compare two crd_sct's by group depth */
+(const void *val_1, /* I [sct] crd_sct * to compare */
+ const void *val_2) /* I [sct] crd_sct * to compare */
+{
+  /* Purpose: Compare two crd_sct's by group depth structure member
+     Function is suitable for argument to ANSI C qsort() routine in stdlib.h
+     crd_sct **crd is an array of pointers to unique dimension coordinates */
+
+  const crd_sct * const * const crd1=(const crd_sct * const *)val_1;
+  const crd_sct * const * const crd2=(const crd_sct * const *)val_2;
+
+  if((*crd1)->grp_dpt > (*crd2)->grp_dpt) return -1;
+  else if((*crd1)->grp_dpt < (*crd2)->grp_dpt) return 1;
+  else return 0;
+} /* end nco_cmp_crd_dpt() */
+
+crd_sct *                             /* O [sct] Coordinate object */
+nco_scp_var_crd                       /* [fnc] Return in scope coordinate for variable  */
+(trv_sct *var_trv,                    /* I [sct] Variable object */
+ dmn_trv_sct *dmn_trv)                /* I [sct] Dimension object */
+{
+
+  /* Purpose: Choose one coordinate from the dimension object to assign as a valid coordinate
+  to the variable dimension
+  Scope definition: In the same group of the variable or beneath (closer to root) 
+  Above: out of scope (no luck)
+
+  Use cases:
+
+  dimension lon4;
+  variable lon4_var(lon4)
+
+  Variable /g16/g16g4/g16g4g4/g16g4g4g4/lon4_var
+  2 coordinates down in scope 
+  /g16/g16g4/g16g4g4/lon4
+  /g16/g16g4/lon4
+
+  */
+
+  /* If more than one coordinate, sort them by group depth */
+  if(dmn_trv->crd_nbr>1) qsort(dmn_trv->crd,(size_t)dmn_trv->crd_nbr,sizeof(crd_sct *),nco_cmp_crd_dpt);
+
+  /* Loop over coordinates; they all have unique dimension ID of variable dimension */
+  for(int crd_idx=0;crd_idx<dmn_trv->crd_nbr;crd_idx++){
+    crd_sct *crd=dmn_trv->crd[crd_idx];
+    /* Absolute match: in scope */ 
+    if(!strcmp(var_trv->nm_fll,crd->crd_nm_fll)){ 
+      /* Variable must be coordinate for this to happen */
+      assert(var_trv->is_crd_var);
+      return crd;
+    }else if(!strcmp(var_trv->grp_nm_fll,crd->crd_grp_nm_fll)){ 
+      /* Same group: in scope  */ 
+      return crd;
+    }
+    else if(crd->grp_dpt < var_trv->grp_dpt){
+      /* Level below: in scope  */
+      return crd;
+    }
+  } /* Loop coordinates */
+
+  return NULL;
+} /* nco_scp_var_crd() */
+
+void
+nco_bld_var_dmn                       /* [fnc] Assign variables dimensions to either coordinates or dimension structs */
+(trv_tbl_sct * const trv_tbl)         /* I/O [sct] Traversal table */
+{
+  /* Purpose: Fill variable dimensions with pointers to either a coordinate variable or dimension structs  */
+
+  const char fnc_nm[]="nco_bld_var_dmn()"; /* [sng] Function name  */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+    /* Filter variables  */
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
+      trv_sct var_trv=trv_tbl->lst[idx_var];   
+
+      /* Loop dimensions for object (variable)  */
+      for(int idx_dmn_var=0;idx_dmn_var<var_trv.nbr_dmn;idx_dmn_var++) {
+
+        /* Get unique dimension ID from variable dimension */
+        int var_dmn_id=var_trv.var_dmn[idx_dmn_var].dmn_id;
+
+        /* Get unique dimension object from unique dimension ID */
+        dmn_trv_sct *dmn_trv=nco_dmn_trv_sct(var_dmn_id,trv_tbl);
+
+        /* No coordinates */
+        if(dmn_trv->crd_nbr == 0){
+
+          if(nco_dbg_lvl_get() == nco_dbg_old){
+            (void)fprintf(stdout,"%s: INFO %s reports variable <%s> with *NON* coordinate dimension [%d]%s\n",nco_prg_nm_get(),fnc_nm,
+              var_trv.nm_fll,idx_dmn_var,var_trv.var_dmn[idx_dmn_var].dmn_nm_fll);        
+          } /* endif dbg */
+
+          /* Mark as False the position of the bool array coordinate/non coordinate */
+          trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].is_crd_var=False;
+
+          /* Store unique dimension (non coordinate ) */
+          trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].ncd=dmn_trv;
+
+        }else if(dmn_trv->crd_nbr > 0){
+
+          /* There are coordinates; one must be chosen 
+          Scope definition: In the same group of the variable or beneath (closer to root) 
+          Above: out of scope */
+
+          crd_sct *crd=NULL; /* [sct] Coordinate to assign to dimension of variable */
+
+          /* Choose the "in scope" coordinate for the variable and assign it to the variable dimension */
+          crd=nco_scp_var_crd(&var_trv,dmn_trv);
+
+          /* The "in scope" coordinate is returned */
+          if(crd){
+            if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports dimension [%d]%s of variable <%s> in scope of coordinate <%s>\n",nco_prg_nm_get(),fnc_nm,idx_dmn_var,var_trv.var_dmn[idx_dmn_var].dmn_nm_fll,var_trv.nm_fll,crd->crd_nm_fll);         
+
+            /* Mark as True */
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].is_crd_var=True;
+
+            /* Deep-copy coordinate  */
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd=(crd_sct *)nco_malloc(sizeof(crd_sct));
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->crd_nm_fll=(char *)strdup(crd->crd_nm_fll);
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->dmn_nm_fll=(char *)strdup(crd->dmn_nm_fll);
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->crd_grp_nm_fll=(char *)strdup(crd->crd_grp_nm_fll);
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->dmn_grp_nm_fll=(char *)strdup(crd->dmn_grp_nm_fll);
+            strcpy(trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->nm,crd->nm);
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->is_rec_dmn=crd->is_rec_dmn;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->sz=crd->sz;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->var_typ=crd->var_typ;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->dmn_id=crd->dmn_id;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->grp_dpt=crd->grp_dpt;
+            /* MSA */
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.BASIC_DMN=crd->lmt_msa.BASIC_DMN;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.dmn_cnt=crd->lmt_msa.dmn_cnt;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.dmn_nm=(char *)strdup(crd->lmt_msa.dmn_nm);
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.dmn_sz_org=crd->lmt_msa.dmn_sz_org;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.lmt_crr=crd->lmt_msa.lmt_crr;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.lmt_dmn=NULL;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.lmt_dmn_nbr=0;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.MSA_USR_RDR=crd->lmt_msa.MSA_USR_RDR;
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].crd->lmt_msa.WRP=crd->lmt_msa.WRP;
+
+          }else{
+
+            if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports dimension [%d]%s of variable <%s> with out of scope coordinate\n",nco_prg_nm_get(),fnc_nm,idx_dmn_var,var_trv.var_dmn[idx_dmn_var].dmn_nm_fll,var_trv.nm_fll);         
+
+            /* Mark as False */
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].is_crd_var=False;
+
+            /* Store the unique dimension as if it was a non coordinate */
+            trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].ncd=dmn_trv;
+
+          } /* None was found in scope */
+        } /* There are coordinates; one must be chosen */
+      } /* Loop dimensions for object (variable)  */
+    } /* Filter variables  */
+  } /* Loop table */
+
+  /* Check if bool array is all filled  */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+    /* Filter variables  */
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
+      trv_sct var_trv=trv_tbl->lst[idx_var];   
+      /* Loop dimensions for object (variable)  */
+      for(int idx_dmn_var=0;idx_dmn_var<var_trv.nbr_dmn;idx_dmn_var++) {
+        if(trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].is_crd_var == nco_obj_typ_err) {
+
+          if(nco_dbg_lvl_get() == nco_dbg_old ){
+            (void)fprintf(stdout,"%s: OOPSY %s reports variable <%s> with NOT filled dimension [%d]%s\n",nco_prg_nm_get(),fnc_nm,
+              var_trv.nm_fll,idx_dmn_var,var_trv.var_dmn[idx_dmn_var].dmn_nm_fll);        
+          } /* endif dbg */
+        }
+      } /* Loop dimensions for object (variable)  */
+    } /* Filter variables  */
+  } /* Loop table */
+
+
+  /* Check if bool array is all filled  */
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+    /* Filter variables  */
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
+      trv_sct var_trv=trv_tbl->lst[idx_var];   
+      /* Loop dimensions for object (variable)  */
+      for(int idx_dmn_var=0;idx_dmn_var<var_trv.nbr_dmn;idx_dmn_var++) {
+        assert(trv_tbl->lst[idx_var].var_dmn[idx_dmn_var].is_crd_var != nco_obj_typ_err);
+      } /* Loop dimensions for object (variable)  */
+    } /* Filter variables  */
+  } /* Loop table */
+
+
+} /* nco_bld_var_dmn() */
+
+void                          
+nco_wrt_trv_tbl                      /* [fnc] Obtain file information from GTT (Group Traversal Table) for debugging  */
+(const int nc_id,                    /* I [ID] File ID */
+ const trv_tbl_sct * const trv_tbl,  /* I [sct] GTT (Group Traversal Table) */
+ nco_bool use_flg_xtr)               /* I [flg] Use flg_xtr in selection */
+{
+
+  const char fnc_nm[]="nco_wrt_trv_tbl()"; /* [sng] Function name  */
+
+  int nbr_dmn_var;             /* [nbr] Number of variables in group */
+  int grp_id;                  /* [id] Group ID */
+  int var_id;                  /* [id] Variable ID */
+  int dmn_id_var[NC_MAX_DIMS]; /* [id] Dimensions IDs array for variable */
+
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    nco_bool flg_xtr;
+    
+    if(use_flg_xtr)flg_xtr=var_trv.flg_xtr; else flg_xtr=True;
+
+    /* If object is an extracted variable... */ 
+    if(var_trv.nco_typ == nco_obj_typ_var && flg_xtr){
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s variable <%s>",nco_prg_nm_get(),fnc_nm,var_trv.nm_fll);        
+      } /* endif dbg */
+
+
+      /* Obtain group ID where variable is located using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* Obtain variable ID */
+      (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+      /* Get type of variable and number of dimensions */
+      (void)nco_inq_var(grp_id,var_id,(char *)NULL,(nc_type *)NULL,&nbr_dmn_var,(int *)NULL,(int *)NULL);
+
+      /* Get dimension IDs for variable */
+      (void)nco_inq_vardimid(grp_id,var_id,dmn_id_var);
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout," %d dimensions: ",nbr_dmn_var);        
+      } /* endif dbg */
+
+      /* Variable dimensions */
+      for(int idx_dmn_var=0;idx_dmn_var<nbr_dmn_var;idx_dmn_var++){
+
+        char dmn_nm_var[NC_MAX_NAME+1]; /* [sng] Dimension name */
+        long dmn_sz_var;                /* [nbr] Dimension size */ 
+
+        /* Get dimension name */
+        (void)nco_inq_dim(grp_id,dmn_id_var[idx_dmn_var],dmn_nm_var,&dmn_sz_var);
+
+        if(nco_dbg_lvl_get() == nco_dbg_old){
+          (void)fprintf(stdout,"#%d'%s' ",
+            dmn_id_var[idx_dmn_var],dmn_nm_var);
+        }
+      }
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"\n");
+      }
+
+    } /* endif */
+
+  } /* end loop over uidx */
+
+} /* nco_wrt_trv_tbl() */
+
+void
+nco_gpe_chk                            /* [fnc] Check valid GPE new name  */
+(const char * const grp_out_fll,       /* I [sng] Group name */
+ const char * const var_nm,            /* I [sng] Variable name */
+ gpe_nm_sct ** gpe_nm,                 /* I/O [sct] GPE name duplicate check array */
+ int * nbr_gpe_nm)                     /* I/O [nbr] Number of GPE entries */  
+{
+  /* Detect duplicate GPE names in advance, then exit with helpful error */
+
+  const char fnc_nm[]="nco_gpe_chk()"; /* [sng] Function name */
+  const char sls_sng[]="/";        /* [sng] Slash string */
+  char *gpe_var_nm_fll=NULL;       /* [sng] absolute GPE variable path */
+
+  int nbr_gpe = *nbr_gpe_nm;
+  
+  /* Construct absolute GPE variable path */
+  gpe_var_nm_fll=(char*)nco_malloc(strlen(grp_out_fll)+strlen(var_nm)+2L);
+  strcpy(gpe_var_nm_fll,grp_out_fll);
+  /* If not root group, concatenate separator */
+  if(strcmp(grp_out_fll,sls_sng)) strcat(gpe_var_nm_fll,sls_sng);
+  strcat(gpe_var_nm_fll,var_nm);
+
+  /* GPE name is not already on list, put it there */
+  if(nbr_gpe == 0){
+    (*gpe_nm)=(gpe_nm_sct *)nco_malloc((nbr_gpe+1)*sizeof(gpe_nm_sct)); 
+    (*gpe_nm)[nbr_gpe].var_nm_fll=strdup(gpe_var_nm_fll);
+    nbr_gpe++;
+  }else{
+    /* Put GPE on list only if not already there */
+    for(int idx_gpe=0;idx_gpe<nbr_gpe;idx_gpe++){
+      if(!strcmp(gpe_var_nm_fll,(*gpe_nm)[idx_gpe].var_nm_fll)){
+        (void)fprintf(stdout,"%s: ERROR %s reports variable %s already defined in output file. HINT: Removing groups to flatten files can lead to over-determined situations where a single object name (e.g., a variable name) must refer to multiple objects in the same output group. The user's intent is ambiguous so instead of arbitrarily picking which (e.g., the last) variable of that name to place in the output file, NCO simply fails. User should re-try command after ensuring multiple obj [...]
+        for(int idx=0;idx<nbr_gpe;idx++) (*gpe_nm)[idx].var_nm_fll=(char *)nco_free((*gpe_nm)[idx].var_nm_fll);
+        nco_exit(EXIT_FAILURE);
+      } /* strcmp() */
+    } /* end loop over gpe_nm */
+    (*gpe_nm)=(gpe_nm_sct *)nco_realloc((void *)(*gpe_nm),(nbr_gpe+1)*sizeof(gpe_nm_sct));
+    (*gpe_nm)[nbr_gpe].var_nm_fll=strdup(gpe_var_nm_fll);
+    nbr_gpe++;
+  } /* nbr_gpe_nm */
+
+  *nbr_gpe_nm=nbr_gpe;
+
+} /* nco_gpe_chk() */
+
+void
+nco_get_rec_dmn_nm                     /* [fnc] Return array of record names  */
+(const trv_sct * const var_trv,        /* I [sct] Variable object */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ nm_tbl_sct ** rec_dmn_nm)             /* I/O [sct] Array of record names */ 
+{
+  /* Return array of record names */
+
+  int nbr_rec;          /* [nbr] Number of entries in array */  
+
+  dmn_trv_sct *dmn_trv; /* [sct] Unique dimension object */  
+
+  assert(var_trv->nco_typ == nco_obj_typ_var);
+
+  if(*rec_dmn_nm){
+    nbr_rec=(*rec_dmn_nm)->nbr;
+  } else {
+    nbr_rec=0;
+    (*rec_dmn_nm)=(nm_tbl_sct *)nco_malloc(sizeof(nm_tbl_sct));
+    (*rec_dmn_nm)->nbr=0;
+    (*rec_dmn_nm)->lst=NULL; /* Must be NULL to nco_realloc() correct handling */
+  }
+
+  /* Loop dimensions for object (variable)  */
+  for(int idx_dmn=0;idx_dmn<var_trv->nbr_dmn;idx_dmn++) {
+
+    /* Get unique dimension object from unique dimension ID, in input list */
+    dmn_trv=nco_dmn_trv_sct(var_trv->var_dmn[idx_dmn].dmn_id,trv_tbl);
+
+    /* Dimension is a record dimension */
+    if(dmn_trv->is_rec_dmn){
+
+      /* Add one more element to table (nco_realloc nicely handles first time/not first time insertions) */
+      (*rec_dmn_nm)->lst=(nm_sct *)nco_realloc((*rec_dmn_nm)->lst,(nbr_rec+1)*sizeof(nm_sct));
+
+      /* Duplicate string into list */
+      (*rec_dmn_nm)->lst[nbr_rec].nm=strdup(dmn_trv->nm);
+
+      nbr_rec++;
+
+    } /* Dimension is a record dimension */
+  } /* Loop dimensions for object (variable)  */
+
+  if(*rec_dmn_nm) (*rec_dmn_nm)->nbr=nbr_rec;
+
+} /* nco_get_rec_dmn_nm() */
+
+void
+nco_bld_aux_crd                       /* [fnc] Parse auxiliary coordinates */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const int aux_nbr,                   /* I [nbr] Number of auxiliary coordinates */
+ char *aux_arg[],                     /* I [sng] Auxiliary coordinates */
+ int *lmt_nbr,                        /* I/O [nbr] Number of user-specified dimension limits */
+ lmt_sct ***lmt,                      /* I/O [sct] Limit structure  */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  const char fnc_nm[]="nco_bld_aux_crd()"; /* [sng] Function name */
+
+  int aux_idx_nbr;
+  int grp_id;
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* Filter variables to extract */ 
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
+
+      /* Obtain group ID where variable is located using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      aux_idx_nbr=0;
+
+      aux=nco_aux_evl(grp_id,aux_nbr,aux_arg,&aux_idx_nbr);
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: DEBUG %s variable [%d]<%s> (%d) limits\n",nco_prg_nm_get(),fnc_nm,idx_var,trv_tbl->lst[idx_var].nm_fll,aux_idx_nbr);     
+      }
+
+      if(aux_idx_nbr > 0){
+        assert(aux);
+        (*lmt)=(lmt_sct **)nco_realloc((*lmt),(*lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
+        int lmt_nbr_new=*lmt_nbr+aux_idx_nbr;
+        int aux_idx=0;
+        for(int lmt_idx=*lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) (*lmt)[lmt_idx]=aux[aux_idx++];
+        *lmt_nbr=lmt_nbr_new;
+
+        aux=(lmt_sct **)nco_free(aux); 
+      }
+
+    } /* Filter variables */ 
+  } /* Loop table */
+} /* nco_bld_aux_crd() */
+
+var_sct **                            /* O [sct] Variable list */  
+nco_fll_var_trv                       /* [fnc] Fill-in variable structure list for all extracted variables */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ int * const xtr_nbr,                 /* I/O [nbr] Number of variables in extraction list */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
+{
+  int grp_id; /* [ID] Group ID */
+  int var_id; /* [ID] Variable ID */
+  int idx_var;
+  int nbr_xtr;
+
+  var_sct **var=NULL;
+
+  nbr_xtr=0;
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Filter variables to extract  */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var && trv_tbl->lst[tbl_idx].flg_xtr){
+      nbr_xtr++;
+    } /* Filter variables  */
+  } /* Loop table */
+
+  /* Fill-in variable structure list for all extracted variables */
+  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
+
+  idx_var=0;
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+
+    /* Filter variables  */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var && trv_tbl->lst[tbl_idx].flg_xtr){
+      trv_sct var_trv=trv_tbl->lst[tbl_idx]; 
+
+      /* Obtain group ID from API using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* Get variable ID */
+      (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+      /* Transfer from table to local variable array; nco_var_fll() needs location ID and name */
+      var[idx_var]=nco_var_fll_trv(grp_id,var_id,&var_trv,trv_tbl);
+
+      idx_var++;
+
+    } /* Filter variables  */
+  } /* Loop table */
+
+
+  *xtr_nbr=nbr_xtr;
+  return var;
+
+} /* nco_fll_var_trv() */
+
+
+var_sct **                            /* O [sct] Variable list */  
+nco_var_trv                           /* [fnc] Fill-in variable structure list for all variables named "var_nm" */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const char * const var_nm,           /* I [sng] Variable name (relative) */
+ int * const xtr_nbr,                 /* I/O [nbr] Number of variables in extraction list */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
+{
+  int idx_var;
+  int nbr_xtr;
+
+  var_sct **var=NULL;
+
+  nbr_xtr=0;
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Filter variables to extract  */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var && (strcmp(trv_tbl->lst[tbl_idx].nm,var_nm) == 0) ){
+      nbr_xtr++;
+    } /* Filter variables  */
+  } /* Loop table */
+
+  /* Fill-in variable structure list for all extracted variables */
+  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
+
+  idx_var=0;
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+
+    /* Filter variables  */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var && (strcmp(trv_tbl->lst[tbl_idx].nm,var_nm) == 0) ){
+      trv_sct var_trv=trv_tbl->lst[tbl_idx]; 
+
+      int grp_id; /* [ID] Group ID */
+      int var_id; /* [ID] Variable ID */
+
+      /* Obtain group ID from API using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* Get variable ID */
+      (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+      /* Transfer from table to local variable array; nco_var_fll() needs location ID and name */
+      var[idx_var]=nco_var_fll_trv(grp_id,var_id,&var_trv,trv_tbl);
+
+      idx_var++;
+
+    } /* Filter variables  */
+  } /* Loop table */
+
+  *xtr_nbr=nbr_xtr;
+  return var;
+
+} /* nco_var_trv() */
+
+void
+nco_cpy_fix_var_trv                   /* [fnc] Copy processing type fixed variables from input to output file */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const int out_id,                    /* I [ID] netCDF output file ID */
+ const gpe_sct * const gpe,           /* I [sng] GPE structure */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  char *grp_out_fll; /* [sng] Group name */
+
+  int grp_id_in;  /* [ID] Group ID */
+  int grp_id_out; /* [ID] Group ID */
+
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
+  /* Loop table */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct var_trv=trv_tbl->lst[uidx];
+
+    /* If object is a fixed variable... */ 
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.enm_prc_typ == fix_typ){
+     
+      /* If variable is an ensemble member, do not create it in the same location as input */
+      if (var_trv.flg_nsm_mbr == True){
+        assert(nco_prg_id_get() == ncge);
+        continue;
+      }
+
+      /* Obtain group IDs using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id_in);
+
+      /* Edit group name for output */
+      if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv.grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv.grp_nm_fll);
+
+      (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_id_out);
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO writing fixed variable <%s> from ",nco_prg_nm_get(),var_trv.nm_fll);        
+        (void)nco_prt_grp_nm_fll(grp_id_in);
+        (void)fprintf(stdout," to ");   
+        (void)nco_prt_grp_nm_fll(grp_id_out);
+        (void)fprintf(stdout,"\n");
+      } /* endif dbg */       
+
+      /* Copy variable data */
+      (void)nco_cpy_var_val_mlt_lmt_trv(grp_id_in,grp_id_out,(FILE *)NULL,md5,&var_trv);  
+
+      /* Memory management after current extracted group */
+      if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+    } /* If object is a fixed variable... */ 
+  } /* Loop table */
+
+} /* nco_cpy_fix_var_trv() */
+
+void                          
+nco_prc_cmn                            /* [fnc] Process objects (ncbo only) */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID */
+ const int nc_id_2,                    /* I [id] netCDF input-file ID */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD,           /* I [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
+ CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl),   /* I [sct] Dimensions not allowed in fixed variables */
+ const int nbr_dmn_xcl,                /* I [nbr] Number of altered dimensions */
+ const int nco_op_typ,                 /* I [enm] Operation type (command line -y) */
+ trv_sct * trv_1,                      /* I [sct] Table object */
+ trv_sct * trv_2,                      /* I [sct] Table object */
+ const trv_tbl_sct * const trv_tbl_1,  /* I [sct] GTT (Group Traversal Table) */
+ const trv_tbl_sct * const trv_tbl_2,  /* I [sct] GTT (Group Traversal Table) */
+ nco_bool flg_grp_1,                   /* I [flg] Use table 1 as template for group creation on True, otherwise use table 2 */
+ const nco_bool flg_dfn)               /* I [flg] Action type (True for define variables, False when write variables ) */
+{
+  const char fnc_nm[]="nco_prc_cmn()"; /* [sng] Function name */
+  char *grp_out_fll;             /* [sng] Group name */
+
+  int fl_fmt;                    /* [enm] netCDF file format */
+  int grp_id_1;                  /* [id] Group ID in input file */
+  int grp_id_2;                  /* [id] Group ID in input file */
+  int grp_out_id;                /* [id] Group ID in output file */ 
+  int nco_prg_id;                    /* [enm] Program ID */
+  int var_id_1;                  /* [id] Variable ID in input file */
+  int var_id_2;                  /* [id] Variable ID in input file */
+  int var_out_id;                /* [id] Variable ID in output file */
+
+  var_sct *var_prc_1;            /* [sct] Variable to process in file 1 */
+  var_sct *var_prc_2;            /* [sct] Variable to process in file 2 */
+  var_sct *var_prc_out;          /* [sct] Variable to process in output */
+  var_sct *var_prc_gtr;          /* [sct] Greater rank variable to process */
+  var_sct *var_prc_lsr;          /* [sct] Lesser  rank variable to process */
+
+  nco_bool RNK_1_GTR;            /* [flg] Rank of variable in file 1 variable greater than or equal to file 2 */
+
+  prc_typ_enm prc_typ_1;         /* [enm] Processing type */
+  prc_typ_enm prc_typ_2;         /* [enm] Processing type */
+
+  trv_sct *rnk_gtr;              /* [sct] Object of greater or equal rank */
+
+  assert(trv_1->nco_typ == nco_obj_typ_var);
+  assert(trv_1->flg_xtr);
+
+  assert(trv_2->nco_typ == nco_obj_typ_var);
+  assert(trv_2->flg_xtr);
+
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  /* Get output file format */
+  (void)nco_inq_format(nc_out_id,&fl_fmt);
+
+  /* Edit group name for output */
+  if(flg_grp_1){
+    if(gpe) grp_out_fll=nco_gpe_evl(gpe,trv_1->grp_nm_fll); else grp_out_fll=(char *)strdup(trv_1->grp_nm_fll);
+  }else{ /* !flg_grp_1 */
+    if(gpe) grp_out_fll=nco_gpe_evl(gpe,trv_2->grp_nm_fll); else grp_out_fll=(char *)strdup(trv_2->grp_nm_fll);
+  } /* !flg_grp_1 */
+
+  /* Obtain group ID using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id_1,trv_1->grp_nm_fll,&grp_id_1);
+  (void)nco_inq_grp_full_ncid(nc_id_2,trv_2->grp_nm_fll,&grp_id_2);
+
+  /* Get variable ID */
+  (void)nco_inq_varid(grp_id_1,trv_1->nm,&var_id_1);
+  (void)nco_inq_varid(grp_id_2,trv_2->nm,&var_id_2);
+
+  /* Allocate variable structure and fill with metadata */
+  var_prc_1=nco_var_fll_trv(grp_id_1,var_id_1,trv_1,trv_tbl_1);     
+  var_prc_2=nco_var_fll_trv(grp_id_2,var_id_2,trv_2,trv_tbl_2);
+
+  if(var_prc_1->nbr_dim >= var_prc_2->nbr_dim) RNK_1_GTR=True; else RNK_1_GTR=False;
+  rnk_gtr= (RNK_1_GTR) ? trv_1 : trv_2;
+  var_prc_gtr= (RNK_1_GTR) ? var_prc_1 : var_prc_2;
+  var_prc_lsr= (RNK_1_GTR) ? var_prc_2 : var_prc_1;
+  var_prc_out= (RNK_1_GTR) ? nco_var_dpl(var_prc_1) : nco_var_dpl(var_prc_2);
+
+  /* Get processing type */
+  (void)nco_var_lst_dvd_trv(var_prc_1,var_prc_out,CNV_CCM_CCSM_CF,FIX_REC_CRD,cnk_map,cnk_plc,dmn_xcl,nbr_dmn_xcl,&prc_typ_1); 
+  (void)nco_var_lst_dvd_trv(var_prc_2,var_prc_out,CNV_CCM_CCSM_CF,FIX_REC_CRD,cnk_map,cnk_plc,dmn_xcl,nbr_dmn_xcl,&prc_typ_2); 
+
+  /* Conform type and rank for processed variables */
+  if(prc_typ_1 == prc_typ && prc_typ_2 == prc_typ){
+
+    int dmn_idx_gtr;
+    int dmn_idx_lsr;
+
+    /* Check that all dims in var_prc_lsr are in var_prc_gtr */
+    for(dmn_idx_lsr=0;dmn_idx_lsr<var_prc_lsr->nbr_dim;dmn_idx_lsr++){
+      for(dmn_idx_gtr=0;dmn_idx_gtr<var_prc_gtr->nbr_dim;dmn_idx_gtr++)  
+        if(!strcmp(var_prc_lsr->dim[dmn_idx_lsr]->nm,var_prc_gtr->dim[dmn_idx_gtr]->nm)) break;
+      if(dmn_idx_gtr == var_prc_gtr->nbr_dim){
+        (void)fprintf(stdout,"%s: ERROR Variables do not conform: variable %s has dimension %s not present in variable %s\n",nco_prg_nm_get(),var_prc_lsr->nm,var_prc_lsr->dim[dmn_idx_lsr]->nm,var_prc_gtr->nm);
+        nco_exit(EXIT_FAILURE);
+      } /* endif error */
+    } /* end loop over idx */
+
+    /* Read */
+    (void)nco_msa_var_get_trv(nc_id_1,var_prc_1,trv_tbl_1);
+    (void)nco_msa_var_get_trv(nc_id_2,var_prc_2,trv_tbl_2);
+
+    nc_type typ_hgh;
+    typ_hgh=ncap_typ_hgh(var_prc_1->type,var_prc_2->type);
+
+    /* Make sure variables conform in type */
+    if(var_prc_1->type != var_prc_2->type)
+      if(nco_dbg_lvl_get() >= nco_dbg_std && flg_dfn) (void)fprintf(stderr,"%s: INFO Input variables do not conform in type: file 1 variable %s has type %s, file 2 variable %s has type %s, output variable %s will have type %s\n",nco_prg_nm_get(),var_prc_1->nm,nco_typ_sng(var_prc_1->type),var_prc_2->nm,nco_typ_sng(var_prc_2->type),var_prc_gtr->nm,nco_typ_sng(typ_hgh));
+
+    typ_hgh=ncap_var_retype(var_prc_1,var_prc_2);
+    trv_1->var_typ=trv_2->var_typ=typ_hgh;
+
+    /* Broadcast lesser to greater variable. NB: Pointers may change so _gtr, _lsr not valid */
+    if(var_prc_1->nbr_dim != var_prc_2->nbr_dim){
+      (void)ncap_var_cnf_dmn(&var_prc_1,&var_prc_2);
+    }else{
+      /* Still possible that variables are mismatched even if ranks are equal
+	 One or more dimensions could be degenerate
+	 Before subtraction must make sure dimension sizes match
+	 Or re-code ncap_var_cnf_dmn() so that it understands how to broadcast degenerate dimensions */
+      for(int idx_dmn=0;idx_dmn<var_prc_1->nbr_dim;idx_dmn++){
+        if(var_prc_1->dim[idx_dmn]->sz != var_prc_2->dim[idx_dmn]->sz){
+          (void)fprintf(stdout,"%s: ERROR Variables do not conform: variable %s has dimension %s with sizes %ld and %ld in input files one and two, respectively\n",nco_prg_nm_get(),var_prc_1->nm_fll,var_prc_1->dim[idx_dmn]->nm,var_prc_1->dim[idx_dmn]->sz,var_prc_2->dim[idx_dmn]->sz);
+          nco_exit(EXIT_FAILURE);
+        } /* endif error */
+      } /* end loop over idx_dmn */
+    } /* end else */
+
+    /* var1 and var2 now conform in size and type to eachother and are in memory */
+    assert(var_prc_1->type == var_prc_2->type);
+    assert(trv_1->var_typ == trv_2->var_typ);
+    assert(trv_1->var_typ == var_prc_1->type);
+
+  } /* Conform type and rank for process variables */
+
+  /* Define mode */
+  if(flg_dfn){  
+    char *rec_dmn_nm=NULL; /* [sng] Record dimension name */
+
+    nm_tbl_sct *rec_dmn_nm_1=NULL; /* [sct] Record dimension names array */
+    nm_tbl_sct *rec_dmn_nm_2=NULL; /* [sct] Record dimension names array */
+
+    nco_bool PCK_ATT_CPY; /* [flg] Copy attributes "scale_factor", "add_offset" */
+
+    PCK_ATT_CPY=nco_pck_cpy_att(nco_prg_id,nco_pck_plc_nil,var_prc_1);
+
+    /* If output group does not exist, create it */
+    if(nco_inq_grp_full_ncid_flg(nc_out_id,grp_out_fll,&grp_out_id)) nco_def_grp_full(nc_out_id,grp_out_fll,&grp_out_id);
+
+    /* Detect duplicate GPE names in advance, then exit with helpful error */
+    if(gpe) (void)nco_gpe_chk(grp_out_fll,trv_1->nm,&gpe_nm,&nbr_gpe_nm);  
+
+    /* Get array of record names for object */
+    (void)nco_get_rec_dmn_nm(trv_1,trv_tbl_1,&rec_dmn_nm_1);               
+    (void)nco_get_rec_dmn_nm(trv_2,trv_tbl_2,&rec_dmn_nm_2);    
+
+    /* Use for record dimension name the first in array */
+    if(rec_dmn_nm_1->lst) rec_dmn_nm=(char *)strdup(rec_dmn_nm_1->lst[0].nm);
+    if(!rec_dmn_nm && rec_dmn_nm_2->lst) rec_dmn_nm=(char *)strdup(rec_dmn_nm_2->lst[0].nm);
+
+    /* Define variable in output file. NB: Use file/variable of greater rank as template */
+    var_out_id= (RNK_1_GTR) ? nco_cpy_var_dfn_trv(nc_id_1,nc_out_id,grp_out_fll,dfl_lvl,gpe,rec_dmn_nm,trv_1,trv_tbl_1) : nco_cpy_var_dfn_trv(nc_id_2,nc_out_id,grp_out_fll,dfl_lvl,gpe,rec_dmn_nm,trv_2,trv_tbl_2);
+
+    /* Set chunksize parameters */
+    if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set_trv(grp_out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,rnk_gtr);
+
+    /* Copy variable's attributes */
+    if(RNK_1_GTR) (void)nco_att_cpy(grp_id_1,grp_out_id,var_id_1,var_out_id,PCK_ATT_CPY); else (void)nco_att_cpy(grp_id_2,grp_out_id,var_id_2,var_out_id,PCK_ATT_CPY);
+
+    /* Memory management for record dimension names */
+    if(rec_dmn_nm) rec_dmn_nm=(char *)nco_free(rec_dmn_nm);
+    if(rec_dmn_nm_1){
+      for(int idx=0;idx<rec_dmn_nm_1->nbr;idx++) rec_dmn_nm_1->lst[idx].nm=(char *)nco_free(rec_dmn_nm_1->lst[idx].nm);
+      rec_dmn_nm_1=(nm_tbl_sct *)nco_free(rec_dmn_nm_1);
+    } /* !rec_dmn_nm_1 */
+    if(rec_dmn_nm_2){
+      for(int idx=0;idx<rec_dmn_nm_2->nbr;idx++) rec_dmn_nm_2->lst[idx].nm=(char *)nco_free(rec_dmn_nm_2->lst[idx].nm);
+      rec_dmn_nm_2=(nm_tbl_sct *)nco_free(rec_dmn_nm_2);
+    } /* !rec_dmn_nm_2 */
+
+  }else{ /* !flg_dfn */
+    /* Write mode */
+
+    md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
+    int has_mss_val; /* [flg] Variable has missing value */
+
+    ptr_unn mss_val; /* [sct] Missing value */
+
+    /* Get group ID */
+    (void)nco_inq_grp_full_ncid(nc_out_id,grp_out_fll,&grp_out_id);
+
+    /* Get variable ID */
+    (void)nco_inq_varid(grp_out_id,trv_1->nm,&var_out_id);         
+
+    if(nco_dbg_lvl_get() >= nco_dbg_vrb) (void)fprintf(stdout,"%s: INFO %s reports operation type <%d> for <%s>\n",nco_prg_nm_get(),fnc_nm,prc_typ_1,trv_1->nm_fll);
+
+    /* Non-processed variable */
+    if(prc_typ_1 == fix_typ || prc_typ_2 == fix_typ){
+      if(RNK_1_GTR) (void)nco_cpy_var_val_mlt_lmt_trv(grp_id_1,grp_out_id,(FILE *)NULL,md5,trv_1); else (void)nco_cpy_var_val_mlt_lmt_trv(grp_id_2,grp_out_id,(FILE *)NULL,md5,trv_2);
+    } /* endif fix */
+
+    /* Processed variable */
+    if(prc_typ_1 == prc_typ && prc_typ_2 == prc_typ){
+
+      var_prc_out->id=var_out_id;
+
+      /* fxm: gtr or lsr? */
+      var_prc_out->srt=var_prc_gtr->srt;
+      var_prc_out->cnt=var_prc_gtr->cnt;
+
+      /* Set missing value */
+      has_mss_val=var_prc_gtr->has_mss_val;
+
+      /* Change missing_value, if any, of lesser rank to missing_value, if any, of greater rank */
+      if(RNK_1_GTR) has_mss_val=nco_mss_val_cnf(var_prc_1,var_prc_2); else has_mss_val=nco_mss_val_cnf(var_prc_2,var_prc_1);
+
+      /* mss_val of larger rank, if any, overrides mss_val of smaller rank */
+      if(has_mss_val) mss_val= (RNK_1_GTR) ? var_prc_1->mss_val : var_prc_2->mss_val;
+
+      /* Perform specified binary operation */
+      switch(nco_op_typ){
+      case nco_op_add: /* [enm] Add file_1 to file_2 */
+        (void)nco_var_add(var_prc_1->type,var_prc_1->sz,has_mss_val,mss_val,var_prc_2->val,var_prc_1->val); break;
+      case nco_op_mlt: /* [enm] Multiply file_1 by file_2 */
+        (void)nco_var_mlt(var_prc_1->type,var_prc_1->sz,has_mss_val,mss_val,var_prc_2->val,var_prc_1->val); break;
+      case nco_op_dvd: /* [enm] Divide file_1 by file_2 */
+        (void)nco_var_dvd(var_prc_1->type,var_prc_1->sz,has_mss_val,mss_val,var_prc_2->val,var_prc_1->val); break;
+      case nco_op_sbt: /* [enm] Subtract file_2 from file_1 */
+        (void)nco_var_sbt(var_prc_1->type,var_prc_1->sz,has_mss_val,mss_val,var_prc_2->val,var_prc_1->val); break;
+      default: /* Other defined nco_op_typ values are valid for ncra(), ncrcat(), ncwa(), not ncbo() */
+        (void)fprintf(stdout,"%s: ERROR Illegal nco_op_typ in binary operation\n",nco_prg_nm_get());
+        nco_exit(EXIT_FAILURE);
+        break;
+      } /* end case */
+
+      /* Copy result to output file */
+      if(var_prc_1->nbr_dim == 0) (void)nco_put_var1(grp_out_id,var_prc_out->id,var_prc_out->srt,var_prc_1->val.vp,var_prc_1->type); else (void)nco_put_vara(grp_out_id,var_prc_out->id,var_prc_out->srt,var_prc_out->cnt,var_prc_1->val.vp,var_prc_1->type);
+
+    } /* !prc_typ */
+  } /* !flg_dfn */
+
+  /* Free allocated variable structures */
+  var_prc_1->val.vp=nco_free(var_prc_1->val.vp);
+  var_prc_2->val.vp=nco_free(var_prc_2->val.vp);
+  var_prc_1=(var_sct *)nco_free(var_prc_1);
+  var_prc_2=(var_sct *)nco_free(var_prc_2);
+  var_prc_out=(var_sct *)nco_free(var_prc_out);
+
+  /* Free output path name */
+  grp_out_fll=(char *)nco_free(grp_out_fll);
+
+} /* nco_prc_cmn() */
+
+void                          
+nco_cpy_fix                            /* [fnc] Copy processing type fixed object (ncbo only) */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD,           /* I [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
+ CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl),   /* I [sct] Dimensions not allowed in fixed variables */
+ const int nbr_dmn_xcl,                /* I [nbr] Number of altered dimensions */
+ trv_sct *trv_1,                       /* I/O [sct] Table object (nco_cpy_var_dfn_trv) */
+ const trv_tbl_sct * const trv_tbl_1,  /* I [sct] GTT (Group Traversal Table) */
+ const nco_bool flg_dfn)               /* I [flg] Action type (True for define variables, False when write variables ) */
+{
+  char *grp_out_fll;             /* [sng] Group name */
+
+  int fl_fmt;                    /* [enm] netCDF file format */
+  int grp_id_1;                  /* [id] Group ID in input file */
+  int grp_out_id;                /* [id] Group ID in output file */  
+  int nco_prg_id;                /* [enm] Program ID */
+  int var_id_1;                  /* [id] Variable ID in input file */
+  int var_out_id;                /* [id] Variable ID in output file */
+
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
+  var_sct *var_prc_1;            /* [sct] Variable to process in file 1 */
+  var_sct *var_prc_out;          /* [sct] Variable to process in output */
+
+  prc_typ_enm prc_typ_1; /* [enm] Processing type */
+
+  assert(trv_1->nco_typ == nco_obj_typ_var);
+  assert(trv_1->flg_xtr);
+
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  /* Get output file format */
+  (void)nco_inq_format(nc_out_id,&fl_fmt);
+
+  /* Edit group name for output */
+  if(gpe) grp_out_fll=nco_gpe_evl(gpe,trv_1->grp_nm_fll); else grp_out_fll=(char *)strdup(trv_1->grp_nm_fll);
+
+  /* Obtain group ID using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id_1,trv_1->grp_nm_fll,&grp_id_1);
+
+  /* Get variable ID */
+  (void)nco_inq_varid(grp_id_1,trv_1->nm,&var_id_1);
+
+  /* Allocate variable structure and fill with metadata */
+  var_prc_1=nco_var_fll_trv(grp_id_1,var_id_1,trv_1,trv_tbl_1);     
+
+  var_prc_out= nco_var_dpl(var_prc_1);
+  (void)nco_var_lst_dvd_trv(var_prc_1,var_prc_out,CNV_CCM_CCSM_CF,FIX_REC_CRD,cnk_map,cnk_plc,dmn_xcl,nbr_dmn_xcl,&prc_typ_1); 
+
+  if(prc_typ_1 != fix_typ){
+    var_prc_1->val.vp=nco_free(var_prc_1->val.vp);
+    var_prc_1=(var_sct *)nco_free(var_prc_1);
+    var_prc_out=(var_sct *)nco_free(var_prc_out);
+    grp_out_fll=(char *)nco_free(grp_out_fll);
+    return;
+  } /* endif */
+
+  /* Define mode */
+  if(flg_dfn){  
+    nco_bool PCK_ATT_CPY; /* [flg] Copy attributes "scale_factor", "add_offset" */
+
+    PCK_ATT_CPY=nco_pck_cpy_att(nco_prg_id,nco_pck_plc_nil,var_prc_1);
+
+    /* If output group does not exist, create it */
+    if(nco_inq_grp_full_ncid_flg(nc_out_id,grp_out_fll,&grp_out_id)) nco_def_grp_full(nc_out_id,grp_out_fll,&grp_out_id);
+
+    /* Detect duplicate GPE names in advance, then exit with helpful error */
+    if(gpe)(void)nco_gpe_chk(grp_out_fll,trv_1->nm,&gpe_nm,&nbr_gpe_nm);                       
+
+    /* Define variable in output file. */
+    var_out_id=nco_cpy_var_dfn_trv(nc_id_1,nc_out_id,grp_out_fll,dfl_lvl,gpe,(char *)NULL,trv_1,trv_tbl_1);
+
+    /* Set chunksize parameters */
+    if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set_trv(grp_out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,trv_1);
+
+    /* Copy variable's attributes */
+    (void)nco_att_cpy(grp_id_1,grp_out_id,var_id_1,var_out_id,PCK_ATT_CPY); 
+
+  }else{ /* Write mode */
+
+    /* Get group ID */
+    (void)nco_inq_grp_full_ncid(nc_out_id,grp_out_fll,&grp_out_id);
+
+    /* Get variable ID */
+    (void)nco_inq_varid(grp_out_id,trv_1->nm,&var_out_id);         
+
+    /* Copy non-processed variable */
+    (void)nco_cpy_var_val_mlt_lmt_trv(grp_id_1,grp_out_id,(FILE *)NULL,md5,trv_1); 
+  
+  } /* Write mode */
+
+  /* Free allocated variable structures */
+  var_prc_1->val.vp=nco_free(var_prc_1->val.vp);
+  var_prc_1=(var_sct *)nco_free(var_prc_1);
+  var_prc_out=(var_sct *)nco_free(var_prc_out);
+
+  /* Free output path name */
+  grp_out_fll=(char *)nco_free(grp_out_fll);
+
+} /* nco_cpy_fix() */
+
+nco_bool                               /* O [flg] Copy packing attributes */
+nco_pck_cpy_att                        /* [fnc] Inquire about copying packing attributes  */
+(const int nco_prg_id,                     /* I [enm] Program ID */
+ const int nco_pck_plc,                /* I [enm] Packing policy */
+ const var_sct * const var_prc)        /* I [sct] Variable */
+{
+  nco_bool PCK_ATT_CPY=True; /* [flg] Copy attributes "scale_factor", "add_offset" */
+  
+  /* Copy all attributes except in cases where packing/unpacking is involved
+     0. Variable is unpacked on input, unpacked on output
+     --> Copy all attributes
+     1. Variable is packed on input, is not altered, and remains packed on output
+     --> Copy all attributes
+     2. Variable is packed on input, is unpacked for some reason, and will be unpacked on output
+     --> Copy all attributes except scale_factor and add_offset
+     3. Variable is packed on input, is unpacked for some reason, and will be packed on output (possibly with new packing attributes)
+     --> Copy all attributes, but scale_factor and add_offset must be overwritten later with new values
+     4. Variable is not packed on input, packing is performed, and output is packed
+     --> Copy all attributes, define dummy values for scale_factor and add_offset now, and write those values later, when they are known */
+
+  /* Do not copy packing attributes "scale_factor" and "add_offset" 
+     if variable is packed in input file and unpacked in output file 
+     Arithmetic operators calling nco_var_dfn() with fixed variables should leave them fixed
+     Currently ncap calls nco_var_dfn() only for fixed variables, so handle exception with ncap-specific condition */
+  /* Copy exising packing attributes, if any, unless... */
+  if(nco_is_rth_opr(nco_prg_id) && /* ...operator is arithmetic... */
+    nco_prg_id != ncap && /* ...and is not ncap (hence it must be, e.g., ncra, ncbo)... */
+    !var_prc->is_fix_var && /* ...and variable is processed (not fixed)... */
+    var_prc->pck_dsk) /* ...and variable is packed in input file... */
+    PCK_ATT_CPY=False;
+
+  /* Do not copy packing attributes when unpacking variables 
+     ncpdq is currently only operator that passes values other than nco_pck_plc_nil */
+  if(nco_pck_plc == nco_pck_plc_upk) /* ...and variable will be _unpacked_ ... */
+    PCK_ATT_CPY=False;  
+
+  return PCK_ATT_CPY;
+
+} /* nco_pck_cpy_att() */
+
+nco_bool                               /* O [flg] True for match found */
+nco_rel_mch                            /* [fnc] Relative match of object in table 1 to table 2  */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID from file 1 */
+ const int nc_id_2,                    /* I [id] netCDF input-file ID from file 2 */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const int nco_op_typ,                 /* I [enm] Operation type (command line -y) */
+ trv_sct * var_trv,                    /* I [sct] Table variable object (can be from table 1 or 2) */
+ nco_bool flg_tbl_1,                   /* I [flg] Table variable object is from table1 for True, otherwise is from table 2 */
+ nco_bool flg_grp_1,                   /* I [flg] Use table 1 as template for group creation on True, otherwise use table 2 */
+ const trv_tbl_sct * const trv_tbl_1,  /* I [sct] GTT (Group Traversal Table) */
+ const trv_tbl_sct * const trv_tbl_2,  /* I [sct] GTT (Group Traversal Table) */
+ const nco_bool flg_dfn)               /* I [flg] Action type (True for define variables, False when write variables ) */
+{
+  nco_bool rel_mch; /* [flg] A match was found */
+
+  rel_mch=False;
+
+  if(flg_tbl_1){
+
+    for(unsigned uidx=0;uidx<trv_tbl_2->nbr;uidx++){
+      if(trv_tbl_2->lst[uidx].nco_typ == nco_obj_typ_var && !strcmp(var_trv->nm,trv_tbl_2->lst[uidx].nm)){
+        trv_sct *trv_2=&trv_tbl_2->lst[uidx];
+        rel_mch=True;
+        (void)nco_prc_cmn(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,nco_op_typ,var_trv,trv_2,trv_tbl_1,trv_tbl_2,flg_grp_1,flg_dfn);
+      } /* A relative match was found */
+    } /* Loop table 2 */
+
+  }else if(!flg_tbl_1){
+
+    for(unsigned uidx=0;uidx<trv_tbl_1->nbr;uidx++){
+      if(trv_tbl_1->lst[uidx].nco_typ == nco_obj_typ_var && !strcmp(var_trv->nm,trv_tbl_1->lst[uidx].nm)){
+        trv_sct *trv_1=&trv_tbl_1->lst[uidx];
+        rel_mch=True;
+        (void)nco_prc_cmn(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,nco_op_typ,trv_1,var_trv,trv_tbl_1,trv_tbl_2,flg_grp_1,flg_dfn);
+      } /* A relative match was found */
+    } /* Loop table 2 */
+  } /* !flg_tbl_1 */
+
+  return rel_mch;
+
+} /* nco_rel_mch() */
+
+void                          
+nco_prc_cmn_nm                         /* [fnc] Process common objects from a common mames list (ncbo only) */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID */
+ const int nc_id_2,                    /* I [id] netCDF input-file ID */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const int nco_op_typ,                 /* I [enm] Operation type (command line -y) */
+ trv_tbl_sct * const trv_tbl_1,        /* I/O [sct] GTT (Group Traversal Table) */
+ trv_tbl_sct * const trv_tbl_2,        /* I/O [sct] GTT (Group Traversal Table) */
+ const nco_cmn_t * const cmn_lst,      /* I [sct] List of common names */
+ const int nbr_cmn_nm,                 /* I [nbr] Number of common names entries */
+ const nco_bool flg_dfn)               /* I [flg] Action type (True for define variables, False when write variables ) */
+{
+  /* Purpose: fxm */
+ 
+  const char fnc_nm[]="nco_prc_cmn_nm()"; /* [sng] Function name */
+
+  int nbr_grp_dpt_1; /* [nbr] Number of depth 1 groups (root = 0)  */
+  int nbr_grp_dpt_2; /* [nbr] Number of depth 1 groups (root = 0)  */
+
+  nbr_grp_dpt_1=trv_tbl_inq_dpt(trv_tbl_1);    
+  nbr_grp_dpt_2=trv_tbl_inq_dpt(trv_tbl_2);
+
+  /* Process objects in list */
+  for(int idx=0;idx<nbr_cmn_nm;idx++){
+
+    trv_sct *trv_1;    /* [sct] Table object */
+    trv_sct *trv_2;    /* [sct] Table object */
+
+    nco_bool has_mch;  /* [flg] A relative match was found in file 1 or 2 */
+
+    trv_1=trv_tbl_var_nm_fll(cmn_lst[idx].var_nm_fll,trv_tbl_1);
+    trv_2=trv_tbl_var_nm_fll(cmn_lst[idx].var_nm_fll,trv_tbl_2);
+
+    /* Object exists and is flagged for extraction in both files */
+    if(trv_1 && trv_2 && cmn_lst[idx].flg_in_fl[0] && cmn_lst[idx].flg_in_fl[1] && trv_1->flg_xtr && trv_2->flg_xtr){
+
+      if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports common element to output:%s\n",nco_prg_nm_get(),fnc_nm,trv_1->nm_fll); 
+
+      /* Process common object */
+      (void)nco_prc_cmn(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,nco_op_typ,trv_1,trv_2,trv_tbl_1,trv_tbl_2,True,flg_dfn);
+
+    }else{
+      /* Object exists and is flagged for extraction only in one file */
+
+      /* Number of depth 1 groups in file 1 greater (typically model file) */
+      if(nbr_grp_dpt_1 > nbr_grp_dpt_2){
+
+        if(trv_1 && cmn_lst[idx].flg_in_fl[0] && !cmn_lst[idx].flg_in_fl[1] && trv_1->flg_xtr){
+	  /* Object exists and is flagged for extraction only in file 1 */
+
+          if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports element in file 1 to output:%s\n",nco_prg_nm_get(),fnc_nm,trv_1->nm_fll);
+
+          /* Try relative match in file 2 */
+          has_mch=nco_rel_mch(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,nco_op_typ,trv_1,True,True,trv_tbl_1,trv_tbl_2,flg_dfn);
+
+          /* Match not found in file 2, copy instead object from file 1 as fixed to output */
+          if(!has_mch) (void)nco_cpy_fix(nc_id_1,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,trv_1,trv_tbl_1,flg_dfn);
+
+        }else if(trv_2 && cmn_lst[idx].flg_in_fl[0] == False && cmn_lst[idx].flg_in_fl[1] && trv_2->flg_xtr){
+	  /* Object exists and is flagged for extraction only in file 2 */
+
+          if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports element in file 2 to output:%s\n",nco_prg_nm_get(),fnc_nm,trv_2->nm_fll);
+
+          /* Try relative match in file 1 */
+          has_mch=nco_rel_mch(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,nco_op_typ,trv_2,False,True,trv_tbl_1,trv_tbl_2,flg_dfn);
+
+          /* Match not found in file 2, copy instead object from file 2 as fixed to output */
+          if(!has_mch) (void)nco_cpy_fix(nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,trv_2,trv_tbl_2,flg_dfn);
+
+        } /* fl_2 */
+
+      }else{ /* nbr_grp_dpt_1 <= nbr_grp_dpt_2) */
+
+	/* Number of depth 1 groups in file 2 greater */
+
+        if(trv_1 && cmn_lst[idx].flg_in_fl[0] && !cmn_lst[idx].flg_in_fl[1] && trv_1->flg_xtr){
+	  /* Object exists and is flagged for extraction only in file 1 */
+
+          if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports element in file 1 to output:%s\n",nco_prg_nm_get(),fnc_nm,trv_1->nm_fll);
+
+          /* Try relative match in file 2 */
+          has_mch=nco_rel_mch(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,nco_op_typ,trv_1,True,False,trv_tbl_1,trv_tbl_2,flg_dfn);
+
+          /* Match was not found in file 2, copy instead object from file 1 as fixed to output */
+          if(!has_mch) (void)nco_cpy_fix(nc_id_1,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,trv_1,trv_tbl_1,flg_dfn);
+
+        }else if(trv_2 && cmn_lst[idx].flg_in_fl[0] == False && cmn_lst[idx].flg_in_fl[1] && trv_2->flg_xtr){
+	  /* Object exists and is flagged for extraction only in file 2 */
+
+          if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s reports element in file 2 to output:%s\n",nco_prg_nm_get(),fnc_nm,trv_2->nm_fll);
+
+          /* Try relative match in file 1 */
+          has_mch=nco_rel_mch(nc_id_1,nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,nco_op_typ,trv_2,False,False,trv_tbl_1,trv_tbl_2,flg_dfn);
+
+          /* Match not found in file 2, copy instead object from file 2 as fixed to output */
+          if(!has_mch) (void)nco_cpy_fix(nc_id_2,nc_out_id,cnk_map,cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,gpe_nm,nbr_gpe_nm,CNV_CCM_CCSM_CF,(nco_bool)False,(dmn_sct **)NULL,(int)0,trv_2,trv_tbl_2,flg_dfn);
+
+        } /* fl_2 */
+
+      } /* nbr_grp_dpt_1 <= nbr_grp_dpt_2) */
+
+    } /* Object exists only in one file and is to extract */
+
+  } /* Process objects in list */
+
+} /* nco_prc_cmn_nm() */
+
+void
+nco_var_prc_fix_trv                    /* [fnc] Store processed and fixed variables info into GTT */
+(const int nbr_var_prc,                /* I [nbr] Number of processed variables */
+ var_sct **var_prc,                    /* I [sct] Array of processed variables */
+ const int nbr_var_fix,                /* I [nbr] Number of fixed variables */
+ var_sct **var_fix,                    /* I [sct] Array of fixed variables */
+ trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
+{
+  /* Purpose: Store processed and fixed variables info into GTT */
+
+  /* Store processed variables info into table */
+  for(int idx_var=0;idx_var<nbr_var_prc;idx_var++){
+    trv_sct *var_trv;
+
+    /* Obtain variable GTT object using full variable name */
+    var_trv=trv_tbl_var_nm_fll(var_prc[idx_var]->nm_fll,trv_tbl);
+
+    assert(var_trv);
+
+    /* Mark fixed/processed flag in table for "var_nm_fll" */
+    (void)trv_tbl_mrk_prc_fix(var_prc[idx_var]->nm_fll,prc_typ,trv_tbl);
+
+  } /* Store processed variables info into table */
+
+  /* Store fixed variables info into table */
+  for(int idx_var=0;idx_var<nbr_var_fix;idx_var++){
+    trv_sct *var_trv;
+
+    /* Obtain variable GTT object using full variable name */
+    var_trv=trv_tbl_var_nm_fll(var_fix[idx_var]->nm_fll,trv_tbl);
+
+    assert(var_trv);
+
+    /* Mark fixed/processed flag in table for "var_nm_fll" */
+    (void)trv_tbl_mrk_prc_fix(var_fix[idx_var]->nm_fll,fix_typ,trv_tbl);
+
+  } /* Store fixed variables info into table */
+
+  return;
+
+} /* end nco_var_prc_fix_trv() */
+
+void
+nco_var_typ_trv                        /* [fnc] Transfer variable type into GTT */
+(const int prc_nbr,                    /* I [nbr] Number of processed variables */
+ var_sct **var,                        /* I [sct] Array of extracted variables */
+ trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
+{
+  /* Purpose: Transfer variable type to table */
+
+  /* Loop table. */
+  for(int idx_var=0;idx_var<prc_nbr;idx_var++){
+
+    nc_type typ_out;         /* [enm] Type in output file */
+    assert(var[idx_var]);
+
+    /* Obtain netCDF type to define variable from NCO program ID */
+    typ_out=nco_get_typ(var[idx_var]);
+
+    /* Mark output type in table for "nm_fll" */
+    for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+      /* Match */
+      if(strcmp(var[idx_var]->nm_fll,trv_tbl->lst[uidx].nm_fll) == 0){
+        trv_tbl->lst[uidx].var_typ_out=typ_out;
+        break;
+      } /* Match */
+    } /* Mark output type in table for "nm_fll" */
+
+  } /* Loop table. */
+
+  return;
+} /* end nco_var_typ_trv() */
+
+var_sct *                             /* O [sct] Variable structure */
+nco_var_fll_trv                       /* [fnc] Allocate variable structure and fill with metadata */
+(const int grp_id,                    /* I [id] Group ID */
+ const int var_id,                    /* I [id] Variable ID */
+ const trv_sct * const var_trv,       /* I [sct] Object to write (variable) */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: nco_malloc() and return a completed var_sct; traversal version of nco_var_fll() */
+
+  char dmn_nm[NC_MAX_NAME];      /* [sng] Dimension name  */  
+
+  int fl_fmt;                    /* [enm] File format */  
+  int dmn_in_id_var[NC_MAX_DIMS];/* [id] Dimension IDs array for variable */
+  int nco_prg_id;                    /* [enm] Program ID */
+  int dmn_id;                    /* [nbr] Dimension ID */
+  
+  long dmn_cnt;                  /* [nbr] Dimensio hyperslabbed count (size) */
+  long dmn_sz;                   /* [nbr] Dimension size  */  
+
+  var_sct *var;                  /* [sct] Variable structure (output) */   
+  dmn_trv_sct *dmn_trv;          /* [sct] GTT unique dimension object */ 
+  dmn_sct *dim;                  /* [sct] Dimension structure */  
+   
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  assert(var_trv->nco_typ == nco_obj_typ_var);
+
+  /* Get file format */
+  (void)nco_inq_format(grp_id,&fl_fmt);
+
+  /* Allocate space for variable structure */
+  var=(var_sct *)nco_malloc(sizeof(var_sct));
+
+  /* Set defaults for each member of variable structure */
+  (void)var_dfl_set(var); 
+
+  /* Fill-in known fields */
+  var->nm=(char *)strdup(var_trv->nm);
+  var->nm_fll=(char *)strdup(var_trv->nm_fll);
+  var->id=var_id;
+  var->nc_id=grp_id;
+  var->is_crd_var=var_trv->is_crd_var; 
+
+  /* Get type and number of dimensions and attributes for variable */
+  (void)nco_inq_var(var->nc_id,var->id,(char *)NULL,&var->typ_dsk,&var->nbr_dim,(int *)NULL,&var->nbr_att);
+
+  if(nco_prg_id == ncks) assert(var->typ_dsk == var_trv->var_typ);
+
+  assert(var->nbr_dim == var_trv->nbr_dmn);
+  assert(var->nbr_att == var_trv->nbr_att);
+
+  /* Get dimension IDs for *variable* */
+  (void)nco_inq_vardimid(var->nc_id,var->id,dmn_in_id_var); 
+
+  /* Allocate space for dimension information */
+  if(var->nbr_dim > 0) var->dim=(dmn_sct **)nco_malloc(var->nbr_dim*sizeof(dmn_sct *)); else var->dim=(dmn_sct **)NULL;
+  if(var->nbr_dim > 0) var->dmn_id=(int *)nco_malloc(var->nbr_dim*sizeof(int)); else var->dmn_id=(int *)NULL;
+  if(var->nbr_dim > 0) var->cnk_sz=(size_t *)nco_malloc(var->nbr_dim*sizeof(size_t)); else var->cnk_sz=(size_t *)NULL;
+  if(var->nbr_dim > 0) var->cnt=(long *)nco_malloc(var->nbr_dim*sizeof(long)); else var->cnt=(long *)NULL;
+  if(var->nbr_dim > 0) var->srt=(long *)nco_malloc(var->nbr_dim*sizeof(long)); else var->srt=(long *)NULL;
+  if(var->nbr_dim > 0) var->end=(long *)nco_malloc(var->nbr_dim*sizeof(long)); else var->end=(long *)NULL;
+  if(var->nbr_dim > 0) var->srd=(long *)nco_malloc(var->nbr_dim*sizeof(long)); else var->srd=(long *)NULL;
+
+  /* Get dimension IDs from input file */
+  (void)nco_inq_vardimid(var->nc_id,var->id,var->dmn_id); 
+
+  /* Size defaults to 1 in var_dfl_set(), and set to 1 here for extra safety */
+  var->sz=1L;
+  var->sz_rec=1L;
+
+  /* Uninitialized values */ 
+  var->cid=-1;
+  var->fmt[0]='\0';
+
+  /* Loop dimensions */
+  for(int idx_dmn=0;idx_dmn<var->nbr_dim;idx_dmn++){
+
+    /* Dimension ID for variable, used to get dimension object in input list  */
+    dmn_id=dmn_in_id_var[idx_dmn];
+
+    assert(var->dmn_id[idx_dmn] == dmn_id);
+
+    /* Get unique dimension object from unique dimension ID, in input list */
+    dmn_trv=nco_dmn_trv_sct(dmn_id,trv_tbl);
+
+    /* Get dimension name and size from ID in group */
+    (void)nco_inq_dim(grp_id,dmn_id,dmn_nm,&dmn_sz);
+
+    assert((size_t)dmn_sz == dmn_trv->sz);
+    assert(strcmp(dmn_nm,dmn_trv->nm) == 0);
+
+    /* Get hyperslabbed count */
+    dmn_cnt=-1;
+    if(var_trv->var_dmn[idx_dmn].crd){
+      dmn_cnt=var_trv->var_dmn[idx_dmn].crd->lmt_msa.dmn_cnt;
+    }
+    else if(var_trv->var_dmn[idx_dmn].ncd){
+      dmn_cnt=var_trv->var_dmn[idx_dmn].ncd->lmt_msa.dmn_cnt;
+    }
+
+    var->cnt[idx_dmn]=dmn_cnt;
+    var->end[idx_dmn]=dmn_cnt-1;
+    var->srt[idx_dmn]=0L;
+    var->srd[idx_dmn]=1L;
+    var->sz*=dmn_cnt;
+    
+    /* This definition of "is_rec_var" says if any of the dimensions is a record then the variable is marked as so */
+    if(dmn_trv->is_rec_dmn){
+      var->is_rec_var=True;
+    } else {
+      var->sz_rec*=var->cnt[idx_dmn];
+    }
+
+    /* Return a completed dmn_sct, use dimension ID and name from TRV object */
+    dim=nco_dmn_fll(grp_id,dmn_id,dmn_trv->nm);
+
+    assert(strcmp(dim->nm,dmn_trv->nm) == 0);
+    assert((size_t)dim->sz == dmn_trv->sz);  
+    assert(dim->id == var->dmn_id[idx_dmn]);  
+
+    /* Set the hyperslabbed size for this dimension */
+    dim->cnt=dmn_cnt;
+
+    /* Set the *real* (NB: var->sz is hyperslabbed size) size for this dimension */
+    dim->sz=dmn_sz;
+ 
+    /* Use info from GTT unique dimension */
+    dim->is_rec_dmn=dmn_trv->is_rec_dmn;
+
+     /* Use info from GTT variable dimension */
+    dim->is_crd_dmn=var_trv->var_dmn[idx_dmn].is_crd_var; 
+
+    var->dim[idx_dmn]=(dmn_sct *)nco_malloc(sizeof(dmn_sct));
+    var->dim[idx_dmn]->nm=(char *)strdup(dim->nm);
+    var->dim[idx_dmn]->id=dim->id;
+    var->dim[idx_dmn]->cnk_sz=dim->cnk_sz;
+    var->dim[idx_dmn]->srt=dim->srt;
+    var->dim[idx_dmn]->end=dim->end;
+    var->dim[idx_dmn]->srd=dim->srd;
+    var->dim[idx_dmn]->cnt=dim->cnt;
+    var->dim[idx_dmn]->sz=dmn_sz;
+    var->dim[idx_dmn]->is_rec_dmn=dim->is_rec_dmn;
+    var->dim[idx_dmn]->is_crd_dmn=dim->is_crd_dmn;
+
+    dim->xrf=(dmn_sct *)nco_malloc(sizeof(dmn_sct));
+    dim->xrf->nm=(char *)strdup(dim->nm);
+    dim->xrf->id=dim->id;
+    dim->xrf->cnk_sz=dim->cnk_sz;
+    dim->xrf->srt=dim->srt;
+    dim->xrf->end=dim->end;
+    dim->xrf->srd=dim->srd;
+    dim->xrf->cnt=dim->cnt;
+    dim->xrf->sz=dim->sz;
+    dim->xrf->is_rec_dmn=dim->is_rec_dmn;
+    dim->xrf->is_crd_dmn=dim->is_crd_dmn;
+
+    var->dim[idx_dmn]->xrf=dim->xrf;
+
+  } /* Loop dimensions */
+
+  /* Type in memory begins as same type as on disk */
+  /* Type of variable in RAM */
+  var->type=var->typ_dsk; 
+
+  /* Type of packed data on disk */
+  /* Type of variable when packed (on disk). This should be same as typ_dsk except in cases where variable is packed in input file and unpacked in output file. */
+  var->typ_pck=var->type;  
+
+  /* Refresh number of attributes and missing value attribute, if any */
+  var->has_mss_val=nco_mss_val_get(var->nc_id,var);
+
+  /* Check variable for duplicate dimensions */
+  for(int idx_var=0;idx_var<var->nbr_dim;idx_var++){
+    int idx_dmn;
+    for(idx_dmn=0;idx_dmn<var->nbr_dim;idx_dmn++){
+      if(idx_var != idx_dmn){
+        if(var->dmn_id[idx_var] == var->dmn_id[idx_dmn]){
+          /* Dimensions are duplicated when IDs for different ordinal dimensions are equal */
+          var->has_dpl_dmn=True;
+          break;
+        } /* endif IDs are equal */
+      } /* endif navel gazing */
+    } /* endif inner dimension */
+    /* Found a duplicate, so stop looking */
+    if(idx_dmn != var->nbr_dim) break;
+  } /* Check variable for duplicate dimensions */
+
+  /* Variables associated with "bounds" and "coordinates" attributes should, in most cases, be treated as coordinates */
+  if(nco_is_spc_in_bnd_att(var->nc_id,var->id)) var->is_crd_var=True;
+  if(nco_is_spc_in_crd_att(var->nc_id,var->id)) var->is_crd_var=True;
+
+  /* Portions of variable structure depend on packing properties, e.g., typ_upk nco_pck_dsk_inq() fills in these portions harmlessly */
+  (void)nco_pck_dsk_inq(grp_id,var);
+
+  /* Set deflate and chunking to defaults */  
+  var->dfl_lvl=0; /* [enm] Deflate level */
+  var->shuffle=False; /* [flg] Turn on shuffle filter */
+
+  for(int idx=0;idx<var->nbr_dim;idx++) var->cnk_sz[idx]=(size_t)0L;
+
+  /* Read deflate levels and chunking (if any) */  
+  if((nco_hdf_cnv_get() != nco_hdf4) && (fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC)){
+    int deflate; /* [enm] Deflate filter is on */
+    int srg_typ; /* [enm] Storage type */
+    (void)nco_inq_var_deflate(grp_id,var->id,&var->shuffle,&deflate,&var->dfl_lvl);    
+    (void)nco_inq_var_chunking(grp_id,var->id,&srg_typ,var->cnk_sz);   
+  } /* endif */
+
+  /* Get enm_prc_typ from GTT */  
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    if(strcmp(var->nm_fll,trv_tbl->lst[uidx].nm_fll) == 0){
+      if(trv_tbl->lst[uidx].enm_prc_typ == prc_typ) {
+        var->is_fix_var=0;
+      } else if(trv_tbl->lst[uidx].enm_prc_typ == fix_typ) {
+        var->is_fix_var=1;
+      } 
+      break;
+    }
+  }
+
+  var->undefined=False; /* [flg] Used by ncap parser */
+  return var;
+} /* nco_var_fll_trv() */
+
+int                                 /* O [id] Output file variable ID */
+nco_cpy_var_dfn_trv                 /* [fnc] Define specified variable in output file */
+(const int nc_in_id,                /* I [ID] netCDF input file ID */
+ const int nc_out_id,               /* I [ID] netCDF output file ID */
+ const char * const grp_out_fll,    /* I [sng] Output group name */
+ const int dfl_lvl,                 /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,         /* I [sct] GPE structure */
+ const char * const rec_dmn_nm_cst, /* I [sng] User-specified record dimension, if any, to create or fix in output file */
+ trv_sct *var_trv,                  /* I/O [sct] Object to write (variable) trv_map_dmn_set() is O */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Copy variable metadata from input netCDF file to output netCDF file
+  Routine was based on nco_cpy_var_dfn_lmt(), and differed trivially from it
+  Now merged into one call that always takes limit information?
+  Routine truncates dimensions in variable definition in output file according to user-specified limits
+  Routine copies variable-by-variable
+  20130126: csz 
+  Behavior until today required rec_dmn_nm even if not changing it
+  As of today, rec_dmn_nm passed only when user-specified
+  Otherwise, re-use old record dimension name
+  20130222: csz
+  Same routine is called with or without limits
+  Routine works with GTT instead of plain names */
+
+  const char fnc_nm[]="nco_cpy_var_dfn_trv()"; /* [sng] Function name */
+
+  char var_nm[NC_MAX_NAME+1];            /* [sng] Variable name (local copy of object name) */ 
+  char *rec_dmn_nm=NULL;                 /* [sng] User-specified record dimension name */
+  char *rec_dmn_nm_mlc=NULL;             /* [sng] Local copy of rec_dmn_nm_cst, which may be encoded */
+  char *grp_dmn_out_fll=NULL;            /* [sng] Group name of dimension in output */
+  char dmn_nm[NC_MAX_NAME];              /* [sng] Dimension names  */
+  char dmn_nm_grp[NC_MAX_NAME];          /* [sng] Dimension names for group */  
+
+  int dmn_in_id_var[NC_MAX_DIMS];        /* [id] Dimension IDs array for input variable */
+  int dmn_out_id[NC_MAX_DIMS];           /* [id] Dimension IDs array for output variable */
+  int dmn_out_id_grp[NC_MAX_DIMS];       /* [id] Dimension IDs array in output group */ 
+  int rec_dmn_out_id;                    /* [id] Record dimension for output variable */
+  int var_in_id;                         /* [id] Variable ID */
+  int var_out_id;                        /* [id] Variable ID */
+  int fl_fmt;                            /* [enm] Output file format */
+  int nbr_dmn_var;                       /* [nbr] Number of dimensions for variable */
+  int nbr_dmn_var_out;                   /* [nbr] Number of dimensions for variable on output ( can change for ncwa) */
+  int rcd=NC_NOERR;                      /* [rcd] Return code */
+  int nco_prg_id;                        /* [enm] Program ID */
+  int rec_id_out;                        /* [id] Dimension ID for ncecat "record" dimension */  
+  int grp_dmn_out_id;                    /* [id] Group ID where dimension visible to specified group is defined */
+  int rcd_lcl;                           /* [rcd] Return code */
+  int var_dim_id;                        /* [id] Variable dimension ID */   
+  int dmn_id_out;                        /* [id] Dimension ID defined in outout group */  
+  int nbr_dmn_out_grp;                   /* [id] Number of dimensions in group */
+  int grp_in_id;                         /* [id] Group ID */
+  int grp_out_id;                        /* [id] Group ID */
+
+  int dmn_idx_in_out[NC_MAX_DIMS];       /* [idx] Dimension correspondence, input->output (ncpdq) */
+  int dmn_out_id_tmp[NC_MAX_DIMS];       /* [idx] Copy of dmn_out_id (ncpdq) */
+
+  long dmn_cnt;                          /* [nbr] Hyperslabbed size of dimension */  
+  long dmn_sz;                           /* [nbr] Size of dimension (on input)  */  
+  long dmn_sz_grp;                       /* [sng] Dimension size for group  */  
+
+  nc_type var_typ;                       /* [enm] netCDF type in input variable (usually same as output) */
+  nc_type var_typ_out;                   /* [enm] netCDF type in output variable (usually same as input) */ 
+
+  nco_bool CRR_DMN_IS_REC_IN_INPUT;      /* [flg] Current dimension of variable is record dimension of variable in input file/group */
+  nco_bool DFN_CRR_DMN_AS_REC_IN_OUTPUT; /* [flg] Define current dimension as record dimension in output file */
+  nco_bool FIX_REC_DMN=False;            /* [flg] Fix record dimension (opposite of MK_REC_DMN) */
+  nco_bool NEED_TO_DEFINE_DIM;           /* [flg] Dimension needs to be defined in *this* group */  
+  nco_bool DEFINE_DIM[NC_MAX_DIMS];      /* [flg] Defined dimension (always True, except for ncwa)  */  
+
+  dmn_trv_sct *dmn_trv;                  /* [sct] Unique dimension object */
+
+  rec_dmn_out_id=NCO_REC_DMN_UNDEFINED;
+
+  for(int idx_dmn=0;idx_dmn<NC_MAX_DIMS;idx_dmn++) dmn_out_id[idx_dmn]=NCO_REC_DMN_UNDEFINED;
+
+  /* File format needed for decision tree and to enable netCDF4 features */
+  (void)nco_inq_format(nc_out_id,&fl_fmt);
+
+  /* Local copy of object name */ 
+  strcpy(var_nm,var_trv->nm);       
+
+  /* Recall:
+  1. Dimensions must be defined before variables
+  2. Variables must be defined before attributes */
+
+  /* Get output group ID */
+  (void)nco_inq_grp_full_ncid(nc_out_id,grp_out_fll,&grp_out_id);
+  /* Is requested variable already in output file? */
+  rcd=nco_inq_varid_flg(grp_out_id,var_nm,&var_out_id);
+  if(rcd == NC_NOERR) return var_out_id;
+
+  /* Get input group ID */
+  (void)nco_inq_grp_full_ncid(nc_in_id,var_trv->grp_nm_fll,&grp_in_id);
+  /* Is requested variable in input file? */
+  rcd=nco_inq_varid_flg(grp_in_id,var_nm,&var_in_id);
+  if(rcd != NC_NOERR) (void)fprintf(stdout,"%s: %s reports ERROR unable to find variable \"%s\"\n",nco_prg_nm_get(),fnc_nm,var_nm);
+
+  /* Get type of variable and number of dimensions from input */
+  (void)nco_inq_var(grp_in_id,var_in_id,(char *)NULL,&var_typ,&nbr_dmn_var,(int *)NULL,(int *)NULL);  
+
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  if(nco_prg_id == ncks) assert(var_typ == var_trv->var_typ);
+  assert(nbr_dmn_var == var_trv->nbr_dmn);
+
+  nbr_dmn_var_out=nbr_dmn_var;
+
+  var_typ=var_trv->var_typ;
+  nbr_dmn_var=var_trv->nbr_dmn;
+
+  /* Get dimension IDs for variable */
+  (void)nco_inq_vardimid(grp_in_id,var_in_id,dmn_in_id_var);
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)fprintf(stdout,"%s: DEBUG %s defining variable <%s> with dimensions: ",nco_prg_nm_get(),fnc_nm,var_trv->nm_fll);
+    for(int idx_dmn=0;idx_dmn<var_trv->nbr_dmn;idx_dmn++) (void)fprintf(stdout,"#%d<%s> : ",var_trv->var_dmn[idx_dmn].dmn_id,var_trv->var_dmn[idx_dmn].dmn_nm);
+    (void)fprintf(stdout,"\n");
+  } /* endif */
+
+  /* Does user want a record dimension to receive special handling? */
+  if(rec_dmn_nm_cst){
+    /* Create (and later free()) local copy to preserve const-ness of passed value
+    For simplicity, work with canonical name rec_dmn_nm */
+    rec_dmn_nm_mlc=strdup(rec_dmn_nm_cst);
+    /* Parse rec_dmn_nm argument */
+    if(!strncmp("fix_",rec_dmn_nm_mlc,(size_t)4)){
+      FIX_REC_DMN=True; /* [flg] Fix record dimension */
+      rec_dmn_nm=rec_dmn_nm_mlc+4;
+    }else{
+      FIX_REC_DMN=False; /* [flg] Fix record dimension */
+      rec_dmn_nm=rec_dmn_nm_mlc;
+    } /* strncmp() */    
+  } /* !rec_dmn_nm_cst */
+
+  /* If variable has re-defined record dimension. NB: this implies passing NULL as user-specified record dimension parameter */
+  if(var_trv->rec_dmn_nm_out){
+    /* Must be ncpdq */
+    assert(nco_prg_id == ncpdq);
+    rec_dmn_nm=(char *)strdup(var_trv->rec_dmn_nm_out);
+  } /* endif */
+
+  /* Is requested record dimension in input file? */
+  if(rec_dmn_nm){
+
+    /* ncks */
+    if(nco_prg_id == ncks){
+      /* NB: Following lines works on libnetcdf 4.2.1+ but not on 4.1.1- (broken in netCDF library)
+      rcd=nco_inq_dimid_flg(grp_in_id,rec_dmn_nm,(int *)NULL); */
+      int rec_dmn_id_dmy;
+      rcd=nco_inq_dimid_flg(grp_in_id,rec_dmn_nm,&rec_dmn_id_dmy);
+      if(rcd != NC_NOERR){
+        (void)fprintf(stdout,"%s: ERROR User specifically requested that dimension \"%s\" be %s dimension in output file. However, this dimension is not visible in input file by variable %s. HINT: Perhaps it is mis-spelled? HINT: Verify \"%s\" is used in a variable that will appear in output file, or eliminate --fix_rec_dmn/--mk_rec_dmn switch from command-line.\n",nco_prg_nm_get(),rec_dmn_nm,(FIX_REC_DMN) ? "fixed" : "record",var_nm,rec_dmn_nm);
+        nco_exit(EXIT_FAILURE);
+      } /* endif */
+
+      /* Does variable contain requested record dimension? */
+      for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++){
+        if(dmn_in_id_var[idx_dmn] == rec_dmn_id_dmy){
+          if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stderr,"%s: INFO %s reports variable %s contains user-specified record dimension %s\n",nco_prg_nm_get(),fnc_nm,var_nm,rec_dmn_nm);
+          break;
+        } /* endif */
+      } /* end loop over idx_dmn */
+
+    }else if(nco_prg_id == ncecat){
+      /* Is dimension already defined in output? If not, define it */
+      rcd_lcl=nco_inq_dimid_flg(nc_out_id,rec_dmn_nm,&rec_id_out);
+      if(rcd_lcl != NC_NOERR){
+        if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s defining ncecat dimension: <%s>\n",nco_prg_nm_get(),fnc_nm,rec_dmn_nm);
+        (void)nco_def_dim(nc_out_id,rec_dmn_nm,NC_UNLIMITED,&rec_id_out);
+      } /* !dimension */
+    } /* !ncecat */
+  } /* !rec_dmn_nm */
+
+  /* Loop over each dimension in variable */
+  for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++){
+
+    /* Always define all dimensions, except possibly for ncwa */
+    DEFINE_DIM[idx_dmn]=True;
+
+    /* Dimension needs to be defined in this group? Assume yes... */
+    NEED_TO_DEFINE_DIM=True;   
+
+    /* Initialize dimension ID to be obtained */
+    dmn_id_out=nco_obj_typ_err;
+
+    /* Dimension ID for variable, used to get dimension object in input list  */
+    var_dim_id=dmn_in_id_var[idx_dmn];
+
+    /* Get dimension name and size from ID in input group */
+    (void)nco_inq_dim(grp_in_id,var_dim_id,dmn_nm,&dmn_sz);
+
+    /* Get unique dimension object from unique dimension ID, in input list */
+    dmn_trv=nco_dmn_trv_sct(var_dim_id,trv_tbl);
+
+    /* Test group existence before testing dimension existence */
+
+    /* Determine where to place new dimension in output file */
+    if(nco_prg_id == ncge){
+      grp_dmn_out_fll=(char *)strdup(grp_out_fll);
+    }else{
+      if(gpe) grp_dmn_out_fll=nco_gpe_evl(gpe,dmn_trv->grp_nm_fll); else grp_dmn_out_fll=(char *)strdup(dmn_trv->grp_nm_fll);
+    }
+
+    /* Test existence of group and create if not existent */
+    if(nco_inq_grp_full_ncid_flg(nc_out_id,grp_dmn_out_fll,&grp_dmn_out_id)) nco_def_grp_full(nc_out_id,grp_dmn_out_fll,&grp_dmn_out_id);
+
+    /* Inquire if dimension defined in output using obtained group ID (return value not used in logic) */
+    rcd_lcl=nco_inq_dimid_flg(grp_dmn_out_id,dmn_nm,&dmn_id_out);
+
+    if(nco_dbg_lvl_get() == nco_dbg_old){
+      if(rcd_lcl == NC_NOERR) (void)fprintf(stdout,"%s: DEBUG %s dimension is visible (by parents or group) #%d<%s>\n",nco_prg_nm_get(),fnc_nm,var_dim_id,dmn_trv->nm_fll); else (void)fprintf(stdout,"%s: DEBUG %s dimension is not visible (by parents or group) #%d<%s>\n",nco_prg_nm_get(),fnc_nm,var_dim_id,dmn_trv->nm_fll);
+    } /* endif dbg */
+
+    /* Check output group (only) dimensions */
+    (void)nco_inq_dimids(grp_dmn_out_id,&nbr_dmn_out_grp,dmn_out_id_grp,0);
+
+    /* Loop output group defined dimensions to check if dimension is already defined */
+    for(int idx_dmn_grp=0;idx_dmn_grp<nbr_dmn_out_grp;idx_dmn_grp++){
+
+      /* Get dimension name and size from ID */
+      (void)nco_inq_dim(grp_dmn_out_id,dmn_out_id_grp[idx_dmn_grp],dmn_nm_grp,&dmn_sz_grp);
+
+      /* Relative name for variable and group exists for this group...dimension is already defined */
+      if(!strcmp(dmn_nm_grp,dmn_nm)){
+        NEED_TO_DEFINE_DIM=False;
+        dmn_id_out=dmn_out_id_grp[idx_dmn_grp];
+        /* Assign defined ID to dimension ID array for variable */
+        dmn_out_id[idx_dmn]=dmn_id_out;
+      } /* strcmp() */
+    } /* Loop group defined dimensions */
+
+    /* Define dimension in output file if necessary */
+    if(NEED_TO_DEFINE_DIM){
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: DEBUG %s need to define dimension '%s' in ",nco_prg_nm_get(),fnc_nm,dmn_nm);
+        (void)nco_prt_grp_nm_fll(grp_dmn_out_id);
+        (void)fprintf(stdout,"\n");
+      } /* endif dbg */
+
+      /* Here begins a complex tree to decide a simple, binary output:
+      Will current input dimension be defined as an output record dimension or as a fixed dimension?
+      Decision tree outputs flag DFN_CRR_DMN_AS_REC_IN_OUTPUT that controls subsequent netCDF actions
+      Otherwise would repeat netCDF action code too many times */
+
+      /* Is dimension unlimited in input file? Handy unique dimension has all this info */
+      CRR_DMN_IS_REC_IN_INPUT=dmn_trv->is_rec_dmn;
+
+      /* User requested (with --fix_rec_dmn or --mk_rec_dmn) to treat a certain dimension specially */
+      if(rec_dmn_nm){
+        /* ... and this dimension is that dimension, i.e., the user-specified dimension ... */
+        if(!strcmp(dmn_nm,rec_dmn_nm)){
+          /* ... then honor user's request to define it as a fixed or record dimension ... */
+          if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO %s is defining dimension %s as record dimension in output file per user request\n",nco_prg_nm_get(),fnc_nm,rec_dmn_nm);
+          if(FIX_REC_DMN) DFN_CRR_DMN_AS_REC_IN_OUTPUT=False; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=True;
+        }else{ /* strcmp() */
+          if(FIX_REC_DMN){
+            /* ... fix_rec_dmn case is straightforward: output dimension has same format as input dimension */
+            if(CRR_DMN_IS_REC_IN_INPUT) DFN_CRR_DMN_AS_REC_IN_OUTPUT=True; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+          }else{ /* !FIX_REC_DMN */
+            /* ... otherwise we are in the --mk_rec_dmn case where things get complicated ... 
+            This dimension can be a record dimension only if it would not conflict with the requested 
+            record dimension being defined a record dimension, and that depends on file format. Uggh.
+            1. netCDF3 API allows only one record-dimension so conflicts are possible
+            2. netCDF4 API permits any number of unlimited dimensions so conflicts are impossible */
+            if(fl_fmt == NC_FORMAT_NETCDF4){
+              /* ... no conflicts possible so define dimension in output same as in input ... */
+              if(CRR_DMN_IS_REC_IN_INPUT) DFN_CRR_DMN_AS_REC_IN_OUTPUT=True; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+            }else{ /* !netCDF4 */
+              /* ... output file adheres to netCDF3 API so there can be only one record dimension.
+              In other words, define all other dimensions as fixed, non-record dimensions, even
+              if they are a record dimension in the input file ... */
+              if(CRR_DMN_IS_REC_IN_INPUT) (void)fprintf(stderr,"%s: INFO %s is defining dimension %s as fixed (non-record) in output file even though it is a record dimension in the input file. This is necessary to satisfy user request that %s be the record dimension in the output file which adheres to the netCDF3 API that permits only one record dimension.\n",nco_prg_nm_get(),fnc_nm,dmn_nm,rec_dmn_nm);
+              DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+            } /* !netCDF4 */
+
+            /* Impose special cases to limit production of excessive additional record dimensions
+            How might excessive additional record dimensions be produced?
+            ncpdq reorders try to preserve the "record" property of record variables
+            ncpdq tries to define as a record dimension whichever dimension ends up first in a record variable, and, in netCDF4 files, this becomes an additional record dimension unless the original record dimension is changed to a fixed dimension (as must be done in netCDF3 files).
+            ncecat (in record aggregate mode) defines a new leading record dimension
+            In netCDF4 files this becomes an additional record dimension unless the original record dimension is changed to a fixed dimension (as must be done in netCDF3 files).
+            Easier if ncpdq and ncecat do not increase number of record dimensions in a variable
+            So NCO defaults to prevent production of additional record dimensions by ncecat, ncpdq
+            User can override this with --mrd (multiple record dimension) switch */
+
+            /* Undefine dimension as record if current dimension (e.g., name "time") is also record */
+            if(nco_prg_id == ncecat || nco_prg_id == ncpdq)
+              if(dmn_trv->is_rec_dmn && nco_mrd_cnv_get() == nco_mrd_restrict)
+                DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+
+          } /* !FIX_REC_DMN */
+        } /* strcmp() */
+
+      }else{ /* !rec_dmn_nm */
+        /* ... no user-specified record dimension so define dimension in output same as in input ... */
+        if(CRR_DMN_IS_REC_IN_INPUT) DFN_CRR_DMN_AS_REC_IN_OUTPUT=True; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+      } /* !rec_dmn_nm */ 
+
+      /* At long last ... */
+
+      /* Define current index dimension size */
+
+      /* If current dimension is to be defined as record dimension in output file */
+      if(DFN_CRR_DMN_AS_REC_IN_OUTPUT){  
+        dmn_cnt=NC_UNLIMITED;
+        long cnt;
+        if(var_trv->var_dmn[idx_dmn].is_crd_var) cnt=var_trv->var_dmn[idx_dmn].crd->lmt_msa.dmn_cnt; else cnt=var_trv->var_dmn[idx_dmn].ncd->lmt_msa.dmn_cnt;
+        (void)nco_dmn_set_msa(var_dim_id,cnt,trv_tbl);  
+
+      }else{ /* Get size from GTT */
+
+        if(var_trv->var_dmn[idx_dmn].is_crd_var){
+          dmn_cnt=var_trv->var_dmn[idx_dmn].crd->lmt_msa.dmn_cnt;
+          /* Update GTT dimension */
+          (void)nco_dmn_set_msa(var_dim_id,dmn_cnt,trv_tbl);        
+        }else{ /* !is_crd_var */
+          dmn_cnt=var_trv->var_dmn[idx_dmn].ncd->lmt_msa.dmn_cnt;
+          /* Update GTT dimension */
+          (void)nco_dmn_set_msa(var_dim_id,dmn_cnt,trv_tbl);  
+        } /* !is_crd_var */
+      } /* !DFN_CRR_DMN_AS_REC_IN_OUTPUT */
+
+      /* ncwa */
+      if(nco_prg_id == ncwa){
+        nco_bool found_dim=False;
+        /* Degenerate dimensions */
+        for(int idx_dmn_dgn=0;idx_dmn_dgn<trv_tbl->nbr_dmn_dgn;idx_dmn_dgn++){
+          /* Compare ID */
+          if(trv_tbl->dmn_dgn[idx_dmn_dgn].id == var_dim_id){
+            found_dim=True;
+            dmn_cnt=trv_tbl->dmn_dgn[idx_dmn_dgn].cnt;
+            /* If dimension is record keep it that way */
+            if(dmn_trv->is_rec_dmn) dmn_cnt=NC_UNLIMITED;
+            break;
+          } /* Compare ID */
+        } /* Degenerate dimensions */
+        if(var_trv->var_dmn[idx_dmn].flg_rdd){
+          found_dim=True;
+          /* If dimension was to be record keep it that way */
+          if(DFN_CRR_DMN_AS_REC_IN_OUTPUT){
+            dmn_cnt=NC_UNLIMITED;
+          } else {
+            /* Otherwise define the degenerate size of 1 */
+            dmn_cnt=1;
+          }
+        }
+        if(!found_dim){
+          DEFINE_DIM[idx_dmn]=False;
+          nbr_dmn_var_out--;    
+        } /* found_dim */
+      } /* ncwa */
+
+      /* Always define, except maybe for ncwa */
+      if(DEFINE_DIM[idx_dmn]){
+        /* Define dimension and obtain dimension ID */
+        (void)nco_def_dim(grp_dmn_out_id,dmn_nm,dmn_cnt,&dmn_id_out);
+        /* Assign defined ID to dimension ID array for the variable */
+        dmn_out_id[idx_dmn]=dmn_id_out; 
+      } /* !DEFINE_DIM */
+
+      /* Memory management after defining current output dimension */
+      if(grp_dmn_out_fll) grp_dmn_out_fll=(char *)nco_free(grp_dmn_out_fll);
+
+    } /* end if dimension is not yet defined */
+
+    /* Die informatively if record dimension is not first dimension */
+    if(idx_dmn > 0 && dmn_out_id[idx_dmn] == rec_dmn_out_id && fl_fmt != NC_FORMAT_NETCDF4 && DEFINE_DIM[idx_dmn]){
+      (void)fprintf(stdout,"%s: ERROR User defined the output record dimension to be \"%s\". Yet in the variable \"%s\" this is dimension number %d. The output file adheres to the netCDF3 API which only supports the record dimension as the first (i.e., least rapidly varying) dimension. Consider using ncpdq to permute the location of the record dimension in the output file.\n",nco_prg_nm_get(),rec_dmn_nm,var_nm,idx_dmn+1);  
+      nco_exit(EXIT_FAILURE);
+    } /* end if err */
+
+  } /* End of the very important dimension loop */
+
+  /* If variable needs dimension re-ordering */
+  if(var_trv->flg_rdr){
+
+    /* Must be ncpdq */
+    assert(nco_prg_id == ncpdq);
+
+    for(int dmn_out_idx=0;dmn_out_idx<nbr_dmn_var;dmn_out_idx++)
+      dmn_idx_in_out[var_trv->dmn_idx_out_in[dmn_out_idx]]=dmn_out_idx;
+
+    for(int dmn_out_idx=0;dmn_out_idx<nbr_dmn_var;dmn_out_idx++)
+      dmn_out_id_tmp[dmn_out_idx]=dmn_out_id[dmn_out_idx];
+
+    for(int dmn_out_idx=0;dmn_out_idx<nbr_dmn_var;dmn_out_idx++)
+      dmn_out_id[dmn_idx_in_out[dmn_out_idx]]=dmn_out_id_tmp[dmn_out_idx];
+
+  } /* !var_trv->rdr */
+
+  if(nco_prg_id == ncecat && rec_dmn_nm && var_trv->enm_prc_typ == prc_typ){ 
+    /* Insert extra "record" dimension in dimension array if...  
+    ...is ncecat and
+    ...user requested (with --fix_rec_dmn or --mk_rec_dmn) to treat a certain dimension specially and
+    ...variable is processing type */
+
+    /* Temporary store for old IDs */
+    int dmn_tmp_id[NC_MAX_DIMS];
+    for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++) dmn_tmp_id[idx_dmn]=dmn_out_id[idx_dmn];
+
+    /* Increment number of dimensions for this variable */
+    nbr_dmn_var++;
+    nbr_dmn_var_out++;
+
+    /* Insert previously obtained record dimension ID at start */
+    dmn_out_id[0]=rec_id_out;
+
+    /* Loop dimensions */
+    for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++) dmn_out_id[idx_dmn+1]=dmn_tmp_id[idx_dmn];
+
+  } /* !ncecat */
+
+  /* netCDF type in output variable (usually same as input) */ 
+  var_typ_out=var_typ;
+
+  /* Some operators change output netCDF variable type */
+  if(nco_prg_id == ncflint || nco_prg_id == ncpdq){
+
+    /* If initialization value was changed, then set output type to new type */
+    if(var_trv->var_typ_out != err_typ) var_typ_out=var_trv->var_typ_out; else var_typ_out=var_typ;
+
+  }else if(nco_prg_id != ncbo){
+    int var_id;        /* [id] Variable ID */
+
+    var_sct *var_prc;  /* [sct] Variable to process */
+
+    /* Get variable ID */
+    (void)nco_inq_varid(grp_in_id,var_trv->nm,&var_id);
+
+    /* Allocate variable structure and fill with metadata */
+    var_prc=nco_var_fll_trv(grp_in_id,var_id,var_trv,trv_tbl);     
+
+    /* Obtain netCDF type to define variable from NCO program ID */
+    var_typ_out=nco_get_typ(var_prc);
+
+    var_prc=(var_sct *)nco_var_free(var_prc);
+  } /* !(ncflint || ncpdq) */
+
+  /* Special case for ncwa */
+  if(nco_prg_id == ncwa){
+
+    int dmn_ids_out[NC_MAX_DIMS];  /* [id] Dimension IDs array for output variable (ncwa can skip some dimensions, rearranje) */
+
+    int idx_dmn_def=0;
+    for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++){
+      if(DEFINE_DIM[idx_dmn]){
+        dmn_ids_out[idx_dmn_def]=dmn_out_id[idx_dmn];
+        idx_dmn_def++;
+      } /* DEFINE_DIM[idx_dmn]) */
+    } /* end loop over dmn */
+
+    /* Finally... define variable in output file */
+    (void)nco_def_var(grp_out_id,var_nm,var_typ_out,nbr_dmn_var_out,dmn_ids_out,&var_out_id);
+
+  }else{ /* !ncwa */
+
+    /* Finally... define variable in output file */
+    (void)nco_def_var(grp_out_id,var_nm,var_typ_out,nbr_dmn_var_out,dmn_out_id,&var_out_id);
+
+  } /* !ncwa */
+
+  /* Duplicate netCDF4 settings when possible */
+  if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
+    /* Deflation */
+    if(nbr_dmn_var > 0){
+      int deflate; /* [flg] Turn on deflate filter */
+      int dfl_lvl_in; /* [enm] Deflate level [0..9] */
+      int shuffle; /* [flg] Turn on shuffle filter */
+      rcd=nco_inq_var_deflate(grp_in_id,var_in_id,&shuffle,&deflate,&dfl_lvl_in);
+      /* Copy original deflation settings */
+      if(deflate || shuffle) (void)nco_def_var_deflate(grp_out_id,var_out_id,shuffle,deflate,dfl_lvl_in);
+      /* Overwrite HDF Lempel-Ziv compression level, if requested */
+      if(dfl_lvl > 0) (void)nco_def_var_deflate(grp_out_id,var_out_id,(int)True,(int)True,dfl_lvl);
+    } /* endif */
+
+    /* NB: Copy/set chunking information in nco_cnk_sz_set(), not here! */
+
+  } /* !NC_FORMAT_NETCDF4 */ 
+
+  /* Free locally allocated space */
+  if(rec_dmn_nm_mlc) rec_dmn_nm_mlc=(char *)nco_free(rec_dmn_nm_mlc);
+
+  return var_out_id;
+} /* end nco_cpy_var_dfn_trv() */
+
+void
+nco_dmn_rdr_trv                        /* [fnc] Transfer dimension structures to be re-ordered (ncpdq) into GTT */
+(int **dmn_idx_out_in,                 /* I [idx] Dimension correspondence, output->input, output of nco_var_dmn_rdr_mtd() */
+ const int nbr_var_prc,                /* I [nbr] Size of above array (number of processed variables) */
+ var_sct **var_prc_out,                /* I [sct] Processed variables */
+ trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
+{
+  /* Purpose: Transfer dimension structures to be re-ordered (ncpdq) into GTT */
+
+  assert(nco_prg_id_get() == ncpdq);
+
+  /* Loop processed variables */
+  for(int idx_var_prc=0;idx_var_prc<nbr_var_prc;idx_var_prc++){
+
+    /* Loop table */
+    for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+      trv_sct var_trv=trv_tbl->lst[idx_var];
+
+      /* If GTT variable object is to extract */
+      if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){ 
+
+        /* Match by full variable name  */
+        if(!strcmp(var_prc_out[idx_var_prc]->nm_fll,var_trv.nm_fll)){
+
+          /* Mark re-order flag */
+          trv_tbl->lst[idx_var].flg_rdr=True;
+
+          assert(var_trv.nbr_dmn==var_prc_out[idx_var_prc]->nbr_dim);
+
+          /* Loop variable dimensions */
+          for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+            /* Transfer */
+            trv_tbl->lst[idx_var].dmn_idx_out_in[idx_var_dmn]=dmn_idx_out_in[idx_var_prc][idx_var_dmn];
+
+          } /* Loop variable dimensions */
+        } /* Match by full variable name  */
+      } /* If GTT variable object is to extract */
+    } /* Loop table */
+  } /* Loop processed variables */
+
+  return;
+
+} /* end nco_dmn_rdr_trv() */
+
+void
+nco_var_dmn_rdr_mtd_trv               /* [fnc] Determine and set new dimensionality in metadata of each re-ordered variable (ncpdq) */
+(trv_tbl_sct * const trv_tbl,         /* I/O [sct] GTT (Group Traversal Table) */
+ const int nbr_var_prc,               /* I [nbr] Number of processed variables */
+ var_sct **var_prc,                   /* I/O [sct] Processed variables */
+ var_sct **var_prc_out,               /* I/O [sct] Processed variables */
+ const int nbr_var_fix,               /* I [nbr] Number of processed variables */
+ var_sct **var_fix,                   /* I/O [sct] Fixed variables */
+ dmn_sct **dmn_rdr,                   /* I [sct] Dimension structures to be re-ordered */
+ const int dmn_rdr_nbr,               /* I [nbr] Number of dimension to re-order */
+ const nco_bool *dmn_rvr_rdr)         /* I [flg] Reverse dimension */
+{
+  /* Purpose: Determine and set new dimensionality in metadata of each re-ordered variable */
+
+  /* Based in nco_var_dmn_rdr_mtd(). LIMITATION: the first record dimension for the object variable is used */
+
+  /* Test case : ncpdq -O -a lev,time -v two_dmn_rec_var in.nc out.nc */
+
+  /* Mark lev as record and un-mark time as record (by setting the record name as lev) */
+
+  char *rec_dmn_nm_out_crr;                  /* [sng] Name of record dimension, if any, required by re-order */
+  char *rec_dmn_nm_in;                       /* [sng] Record dimension name, original */
+  char *rec_dmn_nm_out;                      /* [sng] Record dimension name, re-ordered */
+
+  int dmn_idx_out_in[NC_MAX_DIMS];           /* [idx] Dimension correspondence, output->input  (Stored in GTT ) */
+  int nco_prg_id;                                /* [enm] Program ID */
+
+  nco_bool REDEFINED_RECORD_DIMENSION;       /* [flg] Re-defined record dimension */
+  nco_bool dmn_rvr_in[NC_MAX_DIMS];          /* [flg] Reverse dimension  (Stored in GTT ) */
+
+  nm_tbl_sct *rec_dmn_nm;                    /* [sct] Record dimension names array */
+
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  assert(nco_prg_id == ncpdq);
+
+  /* Loop processed variables */
+  for(int idx_var_prc=0;idx_var_prc<nbr_var_prc;idx_var_prc++){
+
+    /* Obtain variable GTT *pointer using full variable name */
+    trv_sct *var_trv=trv_tbl_var_nm_fll(var_prc[idx_var_prc]->nm_fll,trv_tbl);
+
+    assert(var_trv->flg_xtr); 
+    assert(var_trv->nbr_dmn == var_prc_out[idx_var_prc]->nbr_dim);
+
+    /* Initialize for this variable */
+    REDEFINED_RECORD_DIMENSION=False;
+
+    /* Mark re-order flag */
+    var_trv->flg_rdr=True;
+
+    /* Initialize record names for this object */
+    rec_dmn_nm=NULL;
+    rec_dmn_nm_out_crr=NULL;
+    rec_dmn_nm_in=NULL;
+    rec_dmn_nm_out=NULL;
+
+    /* Get array of record names for object */
+    (void)nco_get_rec_dmn_nm(var_trv,trv_tbl,&rec_dmn_nm);                
+
+    /* Use for record dimension name the first in array */
+    if(rec_dmn_nm && rec_dmn_nm->lst){
+      rec_dmn_nm_in=(char *)strdup(rec_dmn_nm->lst[0].nm);
+      rec_dmn_nm_out=(char *)strdup(rec_dmn_nm->lst[0].nm);
+    } /* !rec_dmn_nm->lst */
+
+    /* nco_var_dmn_rdr_mtd() does re-order heavy lifting */
+    rec_dmn_nm_out_crr=nco_var_dmn_rdr_mtd(var_prc[idx_var_prc],var_prc_out[idx_var_prc],dmn_rdr,dmn_rdr_nbr,dmn_idx_out_in,dmn_rvr_rdr,dmn_rvr_in);
+
+    /* Transfer dimension structures to be re-ordered into GTT */
+    for(int idx_dmn=0;idx_dmn<var_trv->nbr_dmn;idx_dmn++){
+      var_trv->dmn_idx_out_in[idx_dmn]=dmn_idx_out_in[idx_dmn];
+      var_trv->dmn_rvr_in[idx_dmn]=dmn_rvr_in[idx_dmn];
+    } /* end loop over dimensions */
+
+    /* If record dimension required by current variable re-order...
+    ...and variable is multi-dimensional (one dimensional arrays cannot request record dimension changes)... */
+    if(rec_dmn_nm_in && rec_dmn_nm_out_crr && var_prc_out[idx_var_prc]->nbr_dim > 1){
+      /* ...differs from input and current output record dimension(s)... */
+      if(strcmp(rec_dmn_nm_out_crr,rec_dmn_nm_in) && strcmp(rec_dmn_nm_out_crr,rec_dmn_nm_out)){
+        /* ...and current output record dimension already differs from input record dimension... */
+        if(REDEFINED_RECORD_DIMENSION){
+          /* ...then requested re-order requires multiple record dimensions... */
+          if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING Re-order requests multiple record dimensions\n. Only first request will be honored (netCDF3 allows only one record dimension). Record dimensions involved [original,first change request (honored),latest change request (made by variable %s)]=[%s,%s,%s]\n",nco_prg_nm_get(),var_prc[idx_var_prc]->nm,rec_dmn_nm_in,rec_dmn_nm_out,rec_dmn_nm_out_crr);
+          break;
+        }else{ /* !REDEFINED_RECORD_DIMENSION */
+          /* ...otherwise, update output record dimension name... */
+          rec_dmn_nm_out=rec_dmn_nm_out_crr;
+          /* ...and set new dimensions... */
+          var_prc_out[idx_var_prc]->dim[0]->is_rec_dmn=True;
+
+          /* ...and set flag that record dimension has been re-defined... */
+          REDEFINED_RECORD_DIMENSION=True;
+
+          /* ...store the name of the record dimension on output... */
+          var_trv->rec_dmn_nm_out=(char *)strdup(rec_dmn_nm_out);
+
+        } /* !REDEFINED_RECORD_DIMENSION */
+      } /* endif new and old record dimensions differ */
+    } /* endif current variable is record variable */
+
+    /* Memory management for record dimension names */
+    if(rec_dmn_nm){
+      for(int idx=0;idx<rec_dmn_nm->nbr;idx++) rec_dmn_nm->lst[idx].nm=(char *)nco_free(rec_dmn_nm->lst[idx].nm);
+      rec_dmn_nm=(nm_tbl_sct *)nco_free(rec_dmn_nm);
+    } /* !rec_dmn_nm */
+
+    if(rec_dmn_nm_in)rec_dmn_nm_in=(char *)nco_free(rec_dmn_nm_in);
+    if(rec_dmn_nm_out)rec_dmn_nm_out=(char *)nco_free(rec_dmn_nm_out);
+
+  } /* Loop processed variables */
+
+  /* Loop to deal with REDEFINED_RECORD_DIMENSION */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* Changing record dimension may invalidate is_rec_var flag
+    Updating is_rec_var flag to correct value, even if value is ignored,
+    helps keep user appraised of unexpected dimension re-orders.
+    is_rec_var may change both for "fixed" and "processed" variables
+    When is_rec_var changes for processed variables, may also need to change
+    ancillary information and to check for duplicate dimensions.
+    Ancillary information (dmn_idx_out_in) is available only for var_prc!
+    Hence must update is_rec_var flag for var_fix and var_prc separately */
+
+    /*  Update is_rec_var flag for var_fix */
+    for(int idx_var_fix=0;idx_var_fix<nbr_var_fix;idx_var_fix++){
+
+      /* Match by full variable name  */
+      if(strcmp(var_fix[idx_var_fix]->nm_fll,var_trv.nm_fll) == 0){
+
+        /* ...get the name of the record dimension on output... stored to GTT in first loop above */
+        rec_dmn_nm_out=trv_tbl->lst[idx_var].rec_dmn_nm_out;   
+
+        int dmn_out_idx;
+        /* Search all dimensions in variable for new record dimension */
+        for(dmn_out_idx=0;dmn_out_idx<var_fix[idx_var_fix]->nbr_dim;dmn_out_idx++){
+          if(rec_dmn_nm_out && !strcmp(var_fix[idx_var_fix]->dim[dmn_out_idx]->nm,rec_dmn_nm_out)){
+            break;
+          }
+        }
+        /* ...Will variable be record variable in output file?... */
+        if(dmn_out_idx == var_fix[idx_var_fix]->nbr_dim){
+          /* ...No. Variable will be non-record---does this change its status?... */
+          if(nco_dbg_lvl_get() >= nco_dbg_var){
+            if(var_fix[idx_var_fix]->is_rec_var) (void)fprintf(stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",
+              nco_prg_nm_get(),var_fix[idx_var_fix]->nm);
+          }
+          /* Assign record flag dictated by re-order */
+          var_fix[idx_var_fix]->is_rec_var=False; 
+        }else{ /* ...otherwise variable will be record variable... */
+          /* ...Yes. Variable will be record... */
+          /* ...Will becoming record variable change its status?... */
+          if(!var_fix[idx_var_fix]->is_rec_var){
+            if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",
+              nco_prg_nm_get(),var_fix[idx_var_fix]->nm);
+            /* Change record flag to status dictated by re-order */
+            var_fix[idx_var_fix]->is_rec_var=True;
+          } /* endif status changing from non-record to record */
+        } /* endif variable will be record variable */
+
+      } /* Match by full variable name  */
+    } /* end loop over var_fix */
+  } /* Loop table */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* Update is_rec_var flag for var_prc */
+    for(int idx_var_prc=0;idx_var_prc<nbr_var_prc;idx_var_prc++){
+
+      /* Match by full variable name  */
+      if(strcmp(var_prc_out[idx_var_prc]->nm_fll,var_trv.nm_fll) == 0){
+
+        /* ...get the name of the record dimension on output... stored to GTT in first loop above */
+        rec_dmn_nm_out=trv_tbl->lst[idx_var].rec_dmn_nm_out;    
+
+        /* Loop table, search for other variables that share the same dimension name */
+        for(unsigned idx_var_mrk=0;idx_var_mrk<trv_tbl->nbr;idx_var_mrk++){
+
+          /* Looking for this variable */
+          trv_sct var_trv_mrk=trv_tbl->lst[idx_var_mrk];
+
+          /* Avoid same variable ...
+          ...look if there is a record name to find 
+          ...and look for variables only
+          ...and look for extracted variables only
+          ...and look for variables with dimensions > 1 */
+          if(rec_dmn_nm_out 
+            && strcmp(var_trv.nm_fll,var_trv_mrk.nm_fll) != 0 
+            && var_trv_mrk.nco_typ == nco_obj_typ_var 
+            && var_trv_mrk.flg_xtr
+            && var_trv_mrk.nbr_dmn > 1){
+
+              nco_bool NEEDS_REORDER;   /* [flg] Variable needs re-ordering */
+              int idx_var_prc_out;      /* [nbr] Index of variable that needs re-ordering */
+
+              NEEDS_REORDER=False;
+
+              /* Loop dimensions of to search variable  */
+              for(int idx_dmn=0;idx_dmn<var_trv_mrk.nbr_dmn;idx_dmn++){
+
+                /*  Match name */
+                if(strcmp(var_trv_mrk.var_dmn[idx_dmn].dmn_nm,var_trv.rec_dmn_nm_out) == 0){ 
+
+                  NEEDS_REORDER=True;
+                  break;
+                } /*  Match name */
+              }/* Loop dimensions of to search variable  */
+
+              /* NEEDS_REORDER */
+              if(NEEDS_REORDER){
+
+                /* NOTE: Bellow:
+                --- using the found index of processed idx_var_prc_out
+                --- using the search index of GTT idx_var_mrk */
+
+
+                /* Find the index of processed variables that corresponds to the found GTT variable */
+                nco_var_prc_idx_trv(var_trv_mrk.nm_fll,var_prc_out,nbr_var_prc,&idx_var_prc_out);        
+
+                /* Transfer dimension structures to be re-ordered *from* GTT (opposite of above)  */
+                for(int idx_dmn=0;idx_dmn<var_trv_mrk.nbr_dmn;idx_dmn++){
+                  dmn_idx_out_in[idx_dmn]=var_trv_mrk.dmn_idx_out_in[idx_dmn];
+                } 
+
+                int dmn_out_idx;
+                /* Search all dimensions in variable for new record dimension */
+                for(dmn_out_idx=0;dmn_out_idx<var_prc_out[idx_var_prc_out]->nbr_dim;dmn_out_idx++){
+                  if(!strcmp(var_prc_out[idx_var_prc_out]->dim[dmn_out_idx]->nm,rec_dmn_nm_out)){
+                    break;
+                  }
+                }
+                /* ...Will variable be record variable in output file?... */
+                if(dmn_out_idx == var_prc_out[idx_var_prc_out]->nbr_dim){
+                  /* ...No. Variable will be non-record---does this change its status?... */
+                  if(nco_dbg_lvl_get() >= nco_dbg_var){
+                    if(var_prc_out[idx_var_prc_out]->is_rec_var) (void)fprintf(stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",
+                      nco_prg_nm_get(),var_prc_out[idx_var_prc_out]->nm);
+                  }
+                  /* Assign record flag dictated by re-order */
+                  var_prc_out[idx_var_prc_out]->is_rec_var=False; 
+                }else{ /* ...otherwise variable will be record variable... */
+                  /* ...Yes. Variable will be record... */
+                  /* ...must ensure new record dimension is not duplicate dimension... */
+                  if(var_prc_out[idx_var_prc_out]->has_dpl_dmn){
+                    int dmn_dpl_idx;
+                    for(dmn_dpl_idx=1;dmn_dpl_idx<var_prc_out[idx_var_prc_out]->nbr_dim;dmn_dpl_idx++){ /* NB: loop starts from 1 */
+                      if(var_prc_out[idx_var_prc_out]->dmn_id[0] == var_prc_out[idx_var_prc_out]->dmn_id[dmn_dpl_idx]){
+                        (void)fprintf(stdout,"%s: ERROR Requested re-order turns duplicate non-record dimension %s in variable %s into output record dimension. netCDF does not support duplicate record dimensions in a single variable.\n%s: HINT: Exclude variable %s from extraction list with \"-x -v %s\".\n",
+                          nco_prg_nm_get(),rec_dmn_nm_out,var_prc_out[idx_var_prc_out]->nm,nco_prg_nm_get(),var_prc_out[idx_var_prc_out]->nm,var_prc_out[idx_var_prc_out]->nm);
+                        nco_exit(EXIT_FAILURE);
+                      } /* endif err */
+                    } /* end loop over dmn_out */
+                  } /* endif has_dpl_dmn */
+                  /* ...Will becoming record variable change its status?... */
+                  if(!var_prc_out[idx_var_prc_out]->is_rec_var){
+                    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",
+                      nco_prg_nm_get(),var_prc_out[idx_var_prc_out]->nm);
+                    /* Change record flag to status dictated by re-order */
+                    var_prc_out[idx_var_prc_out]->is_rec_var=True;
+                    /* ...Swap dimension information for multi-dimensional variables... */
+                    if(var_prc_out[idx_var_prc_out]->nbr_dim > 1){
+                      /* Swap dimension information when turning multi-dimensional 
+                      non-record variable into record variable. 
+                      Single dimensional non-record variables that turn into 
+                      record variables already have correct dimension information */
+                      dmn_sct *dmn_swp; /* [sct] Dimension structure for swapping */
+                      int dmn_idx_rec_in; /* [idx] Record dimension index in input variable */
+                      int dmn_idx_rec_out; /* [idx] Record dimension index in output variable */
+                      int dmn_idx_swp; /* [idx] Dimension index for swapping */
+                      /* If necessary, swap new record dimension to first position */
+                      /* Label indices with standard names */
+                      dmn_idx_rec_in=dmn_out_idx;
+                      dmn_idx_rec_out=0;
+                      /* Swap indices in map */
+                      dmn_idx_swp=dmn_idx_out_in[dmn_idx_rec_out];
+                      dmn_idx_out_in[dmn_idx_rec_out]=dmn_idx_rec_in;
+                      dmn_idx_out_in[dmn_idx_rec_in]=dmn_idx_swp;
+
+                      /* Transfer dimension structures (re-ordered again) into GTT */
+                      for(int idx_dmn=0;idx_dmn<var_trv_mrk.nbr_dmn;idx_dmn++){
+                        trv_tbl->lst[ idx_var_mrk ].dmn_idx_out_in[idx_dmn]=dmn_idx_out_in[idx_dmn];
+                      } 
+
+                      /* Swap dimensions in list */
+                      dmn_swp=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out];
+                      var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in];
+                      var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in]=dmn_swp;
+                      /* NB: Change dmn_id,cnt,srt,end,srd together to minimize chances of forgetting one */
+                      /* Correct output variable structure copy of output record dimension information */
+                      var_prc_out[idx_var_prc_out]->dmn_id[dmn_idx_rec_out]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out]->id;
+                      var_prc_out[idx_var_prc_out]->cnt[dmn_idx_rec_out]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out]->cnt;
+                      var_prc_out[idx_var_prc_out]->srt[dmn_idx_rec_out]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out]->srt;
+                      var_prc_out[idx_var_prc_out]->end[dmn_idx_rec_out]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out]->end;
+                      var_prc_out[idx_var_prc_out]->srd[dmn_idx_rec_out]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_out]->srd;
+                      /* Correct output variable structure copy of input record dimension information */
+                      var_prc_out[idx_var_prc_out]->dmn_id[dmn_idx_rec_in]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in]->id;
+                      var_prc_out[idx_var_prc_out]->cnt[dmn_idx_rec_in]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in]->cnt;
+                      var_prc_out[idx_var_prc_out]->srt[dmn_idx_rec_in]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in]->srt;
+                      var_prc_out[idx_var_prc_out]->end[dmn_idx_rec_in]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in]->end;
+                      var_prc_out[idx_var_prc_out]->srd[dmn_idx_rec_in]=var_prc_out[idx_var_prc_out]->dim[dmn_idx_rec_in]->srd;
+
+                    } /* endif multi-dimensional */
+                  } /* endif status changing from non-record to record */
+                } /* endif variable will be record variable */
+              } /* Loop table, search for other variables that share the same dimension name */
+          } /* NEEDS_REORDER */
+        } /* ...look if there is a record name to find  */
+      } /* Match by full variable name  */
+    } /* end loop over var_prc */
+  } /* Loop table */
+
+  /* Final step: search for all redefined record dimension variables and mark other variables */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* Has re-defined record dimension */
+    if(var_trv.rec_dmn_nm_out){
+
+      rec_dmn_nm_out=trv_tbl->lst[idx_var].rec_dmn_nm_out;
+
+      /* Loop table, search for other variables that share the same dimension name */
+      for(unsigned idx_var_mrk=0;idx_var_mrk<trv_tbl->nbr;idx_var_mrk++){
+
+        /* Looking for this variable */
+        trv_sct var_trv_mrk=trv_tbl->lst[idx_var_mrk];
+
+        /* Avoid same variable ...
+        ...and look for variables only
+        ...and look for extracted variables only */
+        if(strcmp(var_trv.nm_fll,var_trv_mrk.nm_fll) != 0 && var_trv_mrk.nco_typ == nco_obj_typ_var && var_trv_mrk.flg_xtr){
+
+          /* Loop dimensions of to search variable  */
+          for(int idx_dmn=0;idx_dmn<var_trv_mrk.nbr_dmn;idx_dmn++){
+
+            dmn_trv_sct *dmn_trv;
+
+            /*  Match name */
+            if(strcmp(var_trv_mrk.var_dmn[idx_dmn].dmn_nm,rec_dmn_nm_out) == 0){ 
+
+              /* ...store the name of the record dimension on output... */
+              trv_tbl->lst[idx_var_mrk].rec_dmn_nm_out=(char *)strdup(rec_dmn_nm_out);
+
+            } /*  Match name */
+
+            /* Get unique dimension object from unique dimension ID, in input list */
+            dmn_trv=nco_dmn_trv_sct(var_trv_mrk.var_dmn[idx_dmn].dmn_id,trv_tbl);
+
+            /* Is record ?  */
+            if(dmn_trv->is_rec_dmn){
+
+              /* ...store the name of the record dimension on output... */
+              trv_tbl->lst[idx_var_mrk].rec_dmn_nm_out=(char *)strdup(rec_dmn_nm_out);
+
+            } /* Is record ? */
+          } /* Loop variable dimensions */
+        } /* Avoid same */
+      } /* Loop table */
+    } /* Has re-defined record dimension */
+  } /* Loop table */
+
+  return;
+
+} /* nco_var_dmn_rdr_mtd_trv() */
+
+nco_bool                              /* [flg] Name was found */
+nco_var_prc_idx_trv                   /* [fnc] Find index of processed variable that matches full name */
+(const char * const var_nm_fll,       /* I [nbr] Full name of variable */
+ var_sct **var_prc_out,               /* I [sct] Processed variables */
+ const int nbr_var_prc,               /* I [nbr] Number of processed variables */
+ int * idx_var_prc_out)               /* O [nbr] Number of dimension to re-order */
+{
+
+  /* Loop processed variables  */
+  for(int idx_var_prc=0;idx_var_prc<nbr_var_prc;idx_var_prc++){
+
+    /* Match by full variable name  */
+    if(strcmp(var_prc_out[idx_var_prc]->nm_fll,var_nm_fll) == 0){
+
+      *idx_var_prc_out=idx_var_prc;
+
+      return True;
+
+    } /* Match by full variable name  */
+  }  /* Loop processed variables  */
+
+  assert(0);
+  return False;
+
+} /* nco_var_prc_idx_trv() */
+
+nco_bool                              /* O [flg] Re-define dimension ordering */
+nco_rdf_dmn_trv                       /* [fnc] Re-define dimension ordering */
+(trv_sct var_trv,                     /* I [sct] varible with record dimension name, re-ordered */
+ const trv_tbl_sct * const trv_tbl,   /* I [sct] GTT (Group Traversal Table) */
+ int * idx_var_mrk_out)               /* O [nbr] Index in GTT where name was found */
+{
+
+  if(var_trv.rec_dmn_nm_out == NULL) return False;
+
+  /* Loop table, search for other variables that share the same dimension name */
+  for(unsigned idx_var_mrk=0;idx_var_mrk<trv_tbl->nbr;idx_var_mrk++){
+
+    /* Looking for this variable */
+    trv_sct var_trv_mrk=trv_tbl->lst[idx_var_mrk];
+
+    /* Avoid same variable ...
+    ...and look for variables only
+    ...and look for extracted variables only
+    ...and look for variables with dimensions > 1 */
+    if(strcmp(var_trv.nm_fll,var_trv_mrk.nm_fll) != 0 
+      && var_trv_mrk.nco_typ == nco_obj_typ_var 
+      && var_trv_mrk.flg_xtr
+      && var_trv_mrk.nbr_dmn > 1){
+
+        /* Loop dimensions of to search variable  */
+        for(int idx_dmn=0;idx_dmn<var_trv_mrk.nbr_dmn;idx_dmn++){
+
+          /*  Match name */
+          if(strcmp(var_trv_mrk.var_dmn[idx_dmn].dmn_nm,var_trv.rec_dmn_nm_out) == 0){ 
+
+            *idx_var_mrk_out=idx_var_mrk;
+            return True;
+
+          } /*  Match name */
+        } /* Loop variable dimensions */
+    } /* Avoid same */
+  } /* Loop table */
+
+  return False;
+
+} /* nco_had_rdf_dmn_trv() */
+
+void
+nco_var_dmn_rdr_val_trv               /* [fnc] Change dimension ordering of variable values */
+(const var_sct * const var_in,        /* I [ptr] Variable with metadata and data in original order */
+ var_sct * const var_out,             /* I/O [ptr] Variable whose data will be re-ordered */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Re-order values in given variable according to supplied dimension map
+  Description of re-ordering concepts is in nco_var_dmn_rdr_mtd()
+  Description of actual re-ordering algorithm is in nco_var_dmn_rdr_val() */
+
+  const char fnc_nm[]="nco_var_dmn_rdr_val_trv()"; /* [sng] Function name */
+
+  nco_bool IDENTITY_REORDER=False; /* [flg] User requested identity re-ordering */
+
+  char *val_in_cp;                 /* [ptr] Input data location as char pointer */
+  char *val_out_cp;                /* [ptr] Output data location as char pointer */
+
+  dmn_sct **dmn_out;               /* [sct] List of dimension structures in output order */
+
+  int dmn_idx;                     /* [idx] Index over dimensions */
+  int dmn_in_idx;                  /* [idx] Counting index for dmn_in */
+  int dmn_in_nbr;                  /* [nbr] Number of dimensions in input variable */
+  int dmn_in_nbr_m1;               /* [nbr] Number of dimensions in input variable, less one */
+  int dmn_out_idx;                 /* [idx] Counting index for dmn_out */
+  int dmn_out_nbr;                 /* [nbr] Number of dimensions in output variable */
+  int typ_sz;                      /* [B] Size of data element in memory */
+
+  long dmn_in_map[NC_MAX_DIMS];    /* [idx] Map for each dimension of input variable */
+  long dmn_out_map[NC_MAX_DIMS];   /* [idx] Map for each dimension of output variable */
+  long dmn_in_sbs[NC_MAX_DIMS];    /* [idx] Dimension subscripts into N-D input array */
+  long var_in_lmn;                 /* [idx] Offset into 1-D input array */
+  long var_out_lmn;                /* [idx] Offset into 1-D output array */
+  long *var_in_cnt;                /* [nbr] Number of valid elements in this dimension (including effects of stride and wrapping) */
+  long var_sz;                     /* [nbr] Number of elements (NOT bytes) in hyperslab (NOT full size of variable in input file!) */
+
+  int dmn_idx_out_in[NC_MAX_DIMS]; /* [idx] Dimension correspondence, output->input  (Stored in GTT ) */
+
+  nco_bool dmn_rvr_in[NC_MAX_DIMS];/* [flg] Reverse dimension  (Stored in GTT ) */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* Match by full variable name  */
+    if(strcmp(var_out->nm_fll,var_trv.nm_fll) == 0){
+
+      assert(var_trv.nco_typ == nco_obj_typ_var);
+      assert(var_trv.flg_xtr); 
+      assert(var_trv.nbr_dmn==var_out->nbr_dim);
+
+      /* Transfer dimension structures to be re-ordered *from* GTT */
+
+      /* Loop variable dimensions */
+      for(int idx_dmn=0;idx_dmn<var_trv.nbr_dmn;idx_dmn++){
+
+        /* Transfer */
+        dmn_idx_out_in[idx_dmn]=trv_tbl->lst[idx_var].dmn_idx_out_in[idx_dmn];
+        dmn_rvr_in[idx_dmn]=trv_tbl->lst[idx_var].dmn_rvr_in[idx_dmn];
+
+      } /* Loop variable dimensions */
+
+      /* Initialize variables to reduce indirection */
+      /* NB: Number of input and output dimensions are equal for pure re-orders
+      However, keep dimension numbers in separate variables to ease relax this rule in future */
+      dmn_in_nbr=var_in->nbr_dim;
+      dmn_out_nbr=var_out->nbr_dim;
+
+      /* On entry to this section of code, we assume:
+      1. var_out metadata are re-ordered
+      2. var_out->val buffer has been allocated (calling routine must do this) */
+
+      /* Get ready to re-order */
+      /* dmn_id_out=var_out->dmn_id; */
+      /* dmn_in=var_in->dim; */
+      dmn_in_nbr_m1=dmn_in_nbr-1;
+      dmn_out=var_out->dim;
+      typ_sz=nco_typ_lng(var_out->type);
+      val_in_cp=(char *)var_in->val.vp;
+      val_out_cp=(char *)var_out->val.vp;
+      var_in_cnt=var_in->cnt;
+      var_sz=var_in->sz;
+
+      /* As explained in nco_var_dmn_rdr_mtd(),
+      "Hence, we must re-update dmn_out->id after nco_dmn_dfn() in nco_cnf_dmn_rdr_val()
+      Structures should be completely consistent at that point
+      Not updating these structures (at least dmn_out->id) is equivalent to assuming that
+      dmn_out->id does not depend on record dimension identity, which is an ASSUMPTION
+      that may currently be true, but is not guaranteed by the netCDF API to always be true." */
+      for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++){
+        /* NB: Change dmn_id,cnt,srt,end,srd together to minimize chances of forgetting one */
+        var_out->dmn_id[dmn_out_idx]=dmn_out[dmn_out_idx]->id;
+        var_out->cnt[dmn_out_idx]=dmn_out[dmn_out_idx]->cnt;
+        var_out->srt[dmn_out_idx]=dmn_out[dmn_out_idx]->srt;
+        var_out->end[dmn_out_idx]=dmn_out[dmn_out_idx]->end;
+        var_out->srd[dmn_out_idx]=dmn_out[dmn_out_idx]->srd;
+      } /* end loop over dmn_out */
+
+      /* Report full metadata re-order, if requested */
+      if(nco_dbg_lvl_get() > 3){
+        int dmn_idx_in_out[NC_MAX_DIMS]; /* [idx] Dimension correspondence, input->output */
+        /* Create reverse correspondence */
+        for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
+          dmn_idx_in_out[dmn_idx_out_in[dmn_out_idx]]=dmn_out_idx;
+
+        for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++)
+          (void)fprintf(stdout,"%s: DEBUG %s variable %s re-order maps dimension %s from (ordinal,ID)=(%d,%d) to (%d,%d)\n",nco_prg_nm_get(),fnc_nm,var_in->nm,var_in->dim[dmn_in_idx]->nm,dmn_in_idx,var_in->dmn_id[dmn_in_idx],dmn_idx_in_out[dmn_in_idx],var_out->dmn_id[dmn_idx_in_out[dmn_in_idx]]);
+      } /* endif dbg */
+
+      /* Is identity re-ordering requested? */
+      for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++)
+        if(dmn_out_idx != dmn_idx_out_in[dmn_out_idx]) break;
+      if(dmn_out_idx == dmn_out_nbr) IDENTITY_REORDER=True;
+
+      /* Dimension reversal breaks identity re-ordering */
+      if(IDENTITY_REORDER){
+        for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++)
+          if(dmn_rvr_in[dmn_in_idx]) break;
+        if(dmn_in_idx != dmn_in_nbr) IDENTITY_REORDER=False;
+      } /* !IDENTITY_REORDER */
+
+      if(IDENTITY_REORDER){
+        if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s: INFO %s reports re-order is identity transformation for variable %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm);
+        /* Copy in one fell swoop then return */
+        (void)memcpy((void *)(var_out->val.vp),(void *)(var_in->val.vp),var_out->sz*nco_typ_lng(var_out->type));
+        return;
+      } /* !IDENTITY_REORDER */
+
+      if(var_in->has_dpl_dmn) (void)fprintf(stdout,"%s: WARNING %s reports non-identity re-order for variable with duplicate dimensions %s.\n%s does not support non-identity re-orders of variables with duplicate dimensions\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_prg_nm_get());
+
+      /* Compute map for each dimension of input variable */
+      for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++) dmn_in_map[dmn_in_idx]=1L;
+      for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr-1;dmn_in_idx++)
+        for(dmn_idx=dmn_in_idx+1;dmn_idx<dmn_in_nbr;dmn_idx++)
+          dmn_in_map[dmn_in_idx]*=var_in->cnt[dmn_idx];
+
+      /* Compute map for each dimension of output variable */
+      for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++) dmn_out_map[dmn_out_idx]=1L;
+      for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr-1;dmn_out_idx++)
+        for(dmn_idx=dmn_out_idx+1;dmn_idx<dmn_out_nbr;dmn_idx++)
+          dmn_out_map[dmn_out_idx]*=var_out->cnt[dmn_idx];
+
+      /* There is more than one method to re-order dimensions
+      Output dimensionality is known in advance, unlike nco_var_avg()
+      Hence outer loop may be over dimensions or over elements
+      Method 1: Loop over input elements 
+      1a. Loop over 1-D input array offsets
+      1b. Invert 1-D input array offset to get N-D input subscripts
+      1c. Turn N-D input subscripts into N-D output subscripts
+      1d. Map N-D output subscripts to get 1-D output element
+      1e. Copy input element to output element
+      This method is simplified from method used in nco_var_avg()
+      Method 2: Loop over input dimensions
+      1a. Loop over input dimensions, from slowest to fastest varying
+      1b. 
+      */
+
+      /* Begin Method 1: Loop over input elements */
+      /* var_in_lmn is offset into 1-D array */
+      for(var_in_lmn=0;var_in_lmn<var_sz;var_in_lmn++){
+
+        /* dmn_in_sbs are corresponding indices (subscripts) into N-D array */
+        dmn_in_sbs[dmn_in_nbr_m1]=var_in_lmn%var_in_cnt[dmn_in_nbr_m1];
+        for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr_m1;dmn_in_idx++){
+          dmn_in_sbs[dmn_in_idx]=(long int)(var_in_lmn/dmn_in_map[dmn_in_idx]);
+          dmn_in_sbs[dmn_in_idx]%=var_in_cnt[dmn_in_idx];
+        } /* end loop over dimensions */
+
+        /* Dimension reversal:
+        Reversing a dimension changes subscripts along that dimension
+        Consider dimension of size N indexed by [0,1,2,...k-1,k,k+1,...,N-2,N-1] 
+        Reversal maps element k to element N-1-k=N-k-1 
+        Enhance speed by using that all elements along dimension share reversal */
+        for(dmn_in_idx=0;dmn_in_idx<dmn_in_nbr;dmn_in_idx++)
+          if(dmn_rvr_in[dmn_in_idx]) dmn_in_sbs[dmn_in_idx]=var_in_cnt[dmn_in_idx]-dmn_in_sbs[dmn_in_idx]-1;
+
+        /* Map variable's N-D array indices to get 1-D index into output data */
+        var_out_lmn=0L;
+        for(dmn_out_idx=0;dmn_out_idx<dmn_out_nbr;dmn_out_idx++) 
+          var_out_lmn+=dmn_in_sbs[dmn_idx_out_in[dmn_out_idx]]*dmn_out_map[dmn_out_idx];
+
+        /* Copy current input element into its slot in output array */
+        (void)memcpy(val_out_cp+var_out_lmn*typ_sz,val_in_cp+var_in_lmn*typ_sz,(size_t)typ_sz);
+      } /* end loop over var_in_lmn */
+      /* End Method 1: Loop over input elements */
+
+      /* Begin Method 2: Loop over input dimensions */
+      /* End Method 2: Loop over input dimensions */
+
+    } /* Match by full variable name  */
+  } /* Loop table */
+
+  return;
+
+} /* nco_var_dmn_rdr_val_trv() */
+
+void
+nco_aed_prc_trv                       /* [fnc] Process single attribute edit for single variable (GTT) */
+(const int nc_id,                     /* I [id] Input netCDF file ID */
+ const aed_sct *aed_lst,              /* I [sct] Structure containing information necessary to edit */
+ const int nbr_aed,                   /* I [nbr] Number of attribute structures */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  int grp_id; /* [id] Group ID */
+  int var_id; /* [id] Variable ID */
+
+  /* Loop all attribure structure entries */
+  for(int idx_aed=0;idx_aed<nbr_aed;idx_aed++){
+
+    /* Variable name is blank so edit same attribute for all variables ... */
+
+    if(aed_lst[idx_aed].var_nm == NULL){
+
+      /* Loop table */
+      for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+        trv_sct var_trv=trv_tbl->lst[uidx];
+        /* Filter variables */
+        if(var_trv.nco_typ == nco_obj_typ_var){
+          /* Obtain group ID using full group name */
+          (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+          /* Obtain variable ID using group ID */
+          (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+          /* Edit attribute */
+          (void)nco_aed_prc(grp_id,var_id,aed_lst[idx_aed]);
+        } /* Filter variables */
+      } /* Loop table */
+
+    } /* End Variable name is blank so edit same attribute for all variables ... */
+
+    /* Variable name contains a "regular expression" (rx) ... */
+
+    else if(strpbrk(aed_lst[idx_aed].var_nm,".*^$\\[]()<>+?|{}")){
+
+      /* Loop table */
+      for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+        trv_sct var_trv=trv_tbl->lst[uidx];
+        /* Filter variables */
+        if(var_trv.nco_typ == nco_obj_typ_var ){
+          /* Obtain group ID using full group name */
+          (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+          /* Obtain variable ID using group ID */
+          (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+          /* Edit attribute */
+          (void)nco_aed_prc(grp_id,var_id,aed_lst[idx_aed]);
+        } /* Filter variables */
+      } /* Loop table */
+
+      /* End Variable name contains a "regular expression" (rx) ... */
+
+      /* Variable name indicates a global attribute ... */
+
+    }else if(!strcasecmp(aed_lst[idx_aed].var_nm,"global")){
+
+       /* Loop table */
+      for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+        trv_sct var_trv=trv_tbl->lst[uidx];
+        /* Filter variables */
+        if(var_trv.nco_typ == nco_obj_typ_var && strcmp(aed_lst[idx_aed].var_nm,var_trv.nm) == 0){
+          /* Obtain group ID using full group name */
+          (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+          /* Obtain variable ID using group ID */
+          (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+          /* Edit attribute */
+          (void)nco_aed_prc(grp_id,NC_GLOBAL,aed_lst[idx_aed]);
+        } /* Filter variables */
+      } /* Loop table */
+
+      /* End Variable name indicates a global attribute ... */
+
+    }else{ 
+      /* Variable is a normal variable ... */
+
+      /* Loop table */
+      for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+        trv_sct var_trv=trv_tbl->lst[uidx];
+        /* Filter variables */
+        if(var_trv.nco_typ == nco_obj_typ_var && strcmp(aed_lst[idx_aed].var_nm,var_trv.nm) == 0){
+          /* Obtain group ID using full group name */
+          (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+          /* Obtain variable ID using group ID */
+          (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+          /* Edit attribute */
+          (void)nco_aed_prc(grp_id,var_id,aed_lst[idx_aed]);
+        } /* Filter variables */
+      } /* Loop table */
+
+    }
+    /* End Variable is a normal variable ... */
+
+  } /* Loop all attribure structure entries */
+
+} /* nco_aed_prc_trv() */
+
+void
+nco_dmn_trv_msa_tbl                   /* [fnc] Update all GTT dimensions with hyperslabbed size */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const char * const rec_dmn_nm,       /* I [sng] Record dimension name */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] GTT (Group Traversal Table) */
+{
+
+  int grp_id; 
+
+  /* Loop table */
+  for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+    trv_sct var_trv=trv_tbl->lst[uidx];
+
+    /* If object is an extracted variable... */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Obtain group ID using full group name */
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+      /* Update for this variable */
+      (void)nco_dmn_msa_tbl(grp_id,rec_dmn_nm,&var_trv,trv_tbl);
+
+    } /* If object is an extracted variable... */
+  } /* Loop table */
+
+} /* end nco_dmn_trv_msa_tbl() */
+
+void                                  
+nco_dmn_msa_tbl                       /* [fnc] Update all GTT dimensions with hyperslabbed size */
+(const int grp_in_id,                 /* I [id] netCDF input group ID */
+ const char * const rec_dmn_nm_cst,   /* I [sng] User-specified record dimension, if any, to create or fix in output file */
+ trv_sct *var_trv,                    /* I/O [sct] Object to write (variable) trv_map_dmn_set() is O */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Update all GTT dimensions with hyperslabbed size */
+
+  const char fnc_nm[]="nco_dmn_msa_tbl()"; /* [sng] Function name */
+
+  char var_nm[NC_MAX_NAME+1];            /* [sng] Variable name (local copy of object name) */ 
+  char *rec_dmn_nm=NULL;                 /* [sng] User-specified record dimension name */
+  char *rec_dmn_nm_mlc=NULL;             /* [sng] Local copy of rec_dmn_nm_cst, which may be encoded */
+  char dmn_nm[NC_MAX_NAME];              /* [sng] Dimension names  */
+
+  int dmn_in_id_var[NC_MAX_DIMS];        /* [id] Dimension IDs array for input variable */
+  int var_in_id;                         /* [id] Variable ID */
+  int fl_fmt;                            /* [enm] Output file format */
+  int nbr_dmn_var;                       /* [nbr] Number of dimensions for variable */
+  int rcd=NC_NOERR;                      /* [rcd] Return code */
+  int nco_prg_id;                            /* [enm] Program ID */
+  int var_dim_id;                        /* [id] Variable dimension ID */   
+ 
+  long dmn_cnt;                          /* [sng] Hyperslabbed dimension size  */  
+  long dmn_sz;                           /* [sng] Dimension size  */  
+
+  nc_type var_typ;                       /* [enm] netCDF type in input variable (usually same as output) */
+
+  nco_bool CRR_DMN_IS_REC_IN_INPUT;      /* [flg] Current dimension of variable is record dimension of variable in input file/group */
+  nco_bool DFN_CRR_DMN_AS_REC_IN_OUTPUT; /* [flg] Define current dimension as record dimension in output file */
+  nco_bool FIX_REC_DMN=False;            /* [flg] Fix record dimension (opposite of MK_REC_DMN) */
+  nco_bool NEED_TO_DEFINE_DIM;           /* [flg] Dimension needs to be defined in *this* group */  
+
+  dmn_trv_sct *dmn_trv;                  /* [sct] Unique dimension object */
+
+  /* File format needed for decision tree and to enable netCDF4 features */
+  (void)nco_inq_format(grp_in_id,&fl_fmt);
+
+  /* Local copy of object name */ 
+  strcpy(var_nm,var_trv->nm);       
+
+  /* Is requested variable in input file? */
+  rcd=nco_inq_varid_flg(grp_in_id,var_nm,&var_in_id);
+  if(rcd != NC_NOERR) (void)fprintf(stdout,"%s: %s reports ERROR unable to find variable \"%s\"\n",nco_prg_nm_get(),fnc_nm,var_nm);
+
+  /* Get type of variable and number of dimensions from input */
+  (void)nco_inq_var(grp_in_id,var_in_id,(char *)NULL,&var_typ,&nbr_dmn_var,(int *)NULL,(int *)NULL);  
+
+  /* Get Program ID */
+  nco_prg_id=nco_prg_id_get(); 
+
+  if(nco_prg_id == ncks) assert(var_typ == var_trv->var_typ);
+  assert(nbr_dmn_var == var_trv->nbr_dmn);
+
+  var_typ=var_trv->var_typ;
+  nbr_dmn_var=var_trv->nbr_dmn;
+
+  /* Get dimension IDs for *variable* */
+  (void)nco_inq_vardimid(grp_in_id,var_in_id,dmn_in_id_var);
+
+  /* Does user want a record dimension to receive special handling? */
+  if(rec_dmn_nm_cst){
+    /* Create (and later free()) local copy to preserve const-ness of passed value
+    For simplicity, work with canonical name rec_dmn_nm */
+    rec_dmn_nm_mlc=strdup(rec_dmn_nm_cst);
+    /* Parse rec_dmn_nm argument */
+    if(!strncmp("fix_",rec_dmn_nm_mlc,(size_t)4)){
+      FIX_REC_DMN=True; /* [flg] Fix record dimension */
+      rec_dmn_nm=rec_dmn_nm_mlc+4;
+    }else{
+      FIX_REC_DMN=False; /* [flg] Fix record dimension */
+      rec_dmn_nm=rec_dmn_nm_mlc;
+    } /* strncmp() */    
+  } /* !rec_dmn_nm_cst */
+
+  /* If variable has a re-defined record dimension. NOTE: this implies passing NULL as User-specified record dimension parameter  */
+  if(var_trv->rec_dmn_nm_out){
+
+    /* Must be ncpdq */
+    assert(nco_prg_id == ncpdq);
+
+    rec_dmn_nm=(char *)strdup(var_trv->rec_dmn_nm_out);
+
+  } /* If variable has a re-defined record dimension */
+
+  /* Is requested record dimension in input file? */
+  if(rec_dmn_nm){
+
+    /* ncks */
+    if(nco_prg_id == ncks){
+      /* NB: Following lines works on libnetcdf 4.2.1+ but not on 4.1.1- (broken in netCDF library)
+      rcd=nco_inq_dimid_flg(grp_in_id,rec_dmn_nm,(int *)NULL); */
+      int rec_dmn_id_dmy;
+      rcd=nco_inq_dimid_flg(grp_in_id,rec_dmn_nm,&rec_dmn_id_dmy);
+      if(rcd != NC_NOERR){
+        (void)fprintf(stdout,"%s: ERROR User specifically requested that dimension \"%s\" be %s dimension in output file. However, this dimension is not visible in input file by variable %s. HINT: Perhaps it is mis-spelled? HINT: Verify \"%s\" is used in a variable that will appear in output file, or eliminate --fix_rec_dmn/--mk_rec_dmn switch from command-line.\n",nco_prg_nm_get(),rec_dmn_nm,(FIX_REC_DMN) ? "fixed" : "record",var_nm,rec_dmn_nm);
+        nco_exit(EXIT_FAILURE);
+      } /* endif */
+
+      /* Does variable contain requested record dimension? */
+      for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++){
+        if(dmn_in_id_var[idx_dmn] == rec_dmn_id_dmy){
+          if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stderr,"%s: INFO %s reports variable %s contains user-specified record dimension %s\n",nco_prg_nm_get(),fnc_nm,var_nm,rec_dmn_nm);
+          break;
+        } /* endif */
+      } /* end loop over idx_dmn */
+
+      /* ncecat */
+    }else if(nco_prg_id == ncecat){
+
+    } /* ncecat */
+  } /* Is requested record dimension in input file? */
+
+  /* The very important dimension loop... */
+  for(int idx_dmn=0;idx_dmn<nbr_dmn_var;idx_dmn++){
+
+    /* Dimension needs to be defined in *this* group? Assume yes... */
+    NEED_TO_DEFINE_DIM=True;   
+
+    /* Dimension ID for variable, used to get dimension object in input list  */
+    var_dim_id=dmn_in_id_var[idx_dmn];
+
+    /* Get dimension name and size from ID in *input* group */
+    (void)nco_inq_dim(grp_in_id,var_dim_id,dmn_nm,&dmn_sz);
+
+    /* Get unique dimension object from unique dimension ID, in input list */
+    dmn_trv=nco_dmn_trv_sct(var_dim_id,trv_tbl);
+
+    /* Define dimension in output file if necessary */
+    if(NEED_TO_DEFINE_DIM){
+
+      /* Here begins a complex tree to decide a simple, binary output:
+      Will current input dimension be defined as an output record dimension or as a fixed dimension?
+      Decision tree outputs flag DFN_CRR_CMN_AS_REC_IN_OUTPUT that controls subsequent netCDF actions
+      Otherwise would repeat netCDF action code too many times */
+
+      /* Is dimension unlimited in input file? Handy unique dimension has all this info */
+      CRR_DMN_IS_REC_IN_INPUT=dmn_trv->is_rec_dmn;
+
+      /* User requested (with --fix_rec_dmn or --mk_rec_dmn) to treat a certain dimension specially */
+      if(rec_dmn_nm){
+        /* ... and this dimension is that dimension, i.e., the user-specified dimension ... */
+        if(!strcmp(dmn_nm,rec_dmn_nm)){
+          /* ... then honor user's request to define it as a fixed or record dimension ... */
+          if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO %s is defining dimension %s as record dimension in output file per user request\n",nco_prg_nm_get(),fnc_nm,rec_dmn_nm);
+          if(FIX_REC_DMN) DFN_CRR_DMN_AS_REC_IN_OUTPUT=False; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=True;
+        }else{ /* strcmp() */
+          if(FIX_REC_DMN){
+            /* ... fix_rec_dmn case is straightforward: output dimension has same format as input dimension */
+            if(CRR_DMN_IS_REC_IN_INPUT) DFN_CRR_DMN_AS_REC_IN_OUTPUT=True; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+          }else{ /* !FIX_REC_DMN */
+            /* ... otherwise we are in the --mk_rec_dmn case where things get complicated ... 
+            This dimension can be a record dimension only if it would not conflict with the requested 
+            record dimension being defined a record dimension, and that depends on file format. Uggh.
+            1. netCDF3 API allows only one record-dimension so conflicts are possible
+            2. netCDF4 API permits any number of unlimited dimensions so conflicts are impossible */
+            if(fl_fmt == NC_FORMAT_NETCDF4){
+              /* ... no conflicts possible so define dimension in output same as in input ... */
+              if(CRR_DMN_IS_REC_IN_INPUT) DFN_CRR_DMN_AS_REC_IN_OUTPUT=True; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+            }else{ /* !netCDF4 */
+              /* ... output file adheres to netCDF3 API so there can be only one record dimension.
+              In other words, define all other dimensions as fixed, non-record dimensions, even
+              if they are a record dimension in the input file ... */
+              if(CRR_DMN_IS_REC_IN_INPUT) (void)fprintf(stderr,"%s: INFO %s is defining dimension %s as fixed (non-record) in output file even though it is a record dimension in the input file. This is necessary to satisfy user request that %s be the record dimension in the output file which adheres to the netCDF3 API that permits only one record dimension.\n",nco_prg_nm_get(),fnc_nm,dmn_nm,rec_dmn_nm);
+              DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+            } /* !netCDF4 */
+          } /* !FIX_REC_DMN */
+        } /* strcmp() */
+
+      }else{ /* !rec_dmn_nm */
+        /* ... no user-specified record dimension so define dimension in output same as in input ... */
+        if(CRR_DMN_IS_REC_IN_INPUT) DFN_CRR_DMN_AS_REC_IN_OUTPUT=True; else DFN_CRR_DMN_AS_REC_IN_OUTPUT=False;
+      } /* !rec_dmn_nm */ 
+
+      /* At long last ... */
+
+      /* Define current index dimension size */
+
+      /* If current dimension is to be defined as record dimension in output file */
+      if(DFN_CRR_DMN_AS_REC_IN_OUTPUT){  
+
+        if(var_trv->var_dmn[idx_dmn].is_crd_var){
+          dmn_cnt=var_trv->var_dmn[idx_dmn].crd->lmt_msa.dmn_cnt;
+        } else {
+          dmn_cnt=var_trv->var_dmn[idx_dmn].ncd->lmt_msa.dmn_cnt;
+        }
+        (void)nco_dmn_set_msa(var_dim_id,dmn_cnt,trv_tbl);  
+
+
+        /* ! DFN_CRR_DMN_AS_REC_IN_OUTPUT */
+      }else{
+        /* Get size from GTT */
+        if(var_trv->var_dmn[idx_dmn].is_crd_var){
+
+          /* Set size */
+          dmn_cnt=var_trv->var_dmn[idx_dmn].crd->lmt_msa.dmn_cnt;
+
+          /* Update GTT dimension */
+          (void)nco_dmn_set_msa(var_dim_id,dmn_cnt,trv_tbl);        
+
+        }else {
+
+          /* Set size */
+          dmn_cnt=var_trv->var_dmn[idx_dmn].ncd->lmt_msa.dmn_cnt;
+
+          /* Update GTT dimension */
+          (void)nco_dmn_set_msa(var_dim_id,dmn_cnt,trv_tbl);  
+
+        }
+      } /* Define dimension size */
+    } /* end if dimension is not yet defined */
+  } /* End of the very important dimension loop */
+
+} /* end nco_dmn_msa_tbl() */
+
+void                          
+nco_dmn_dgn_tbl                       /* [fnc] Transfer degenerated dimensions information into GTT  */
+(dmn_sct **dmn_dgn,                   /* [sct] Degenerate (size 1) dimensions used by ncwa */
+ const int nbr_dmn_dgn,               /* I [nbr] Total number of dimensions in list */
+ trv_tbl_sct *trv_tbl)                /* I/O [sct] GTT (Group Traversal Table) */
+{
+
+  trv_tbl->nbr_dmn_dgn=nbr_dmn_dgn;
+  trv_tbl->dmn_dgn=(dmn_sct *)nco_malloc(nbr_dmn_dgn*sizeof(dmn_sct));
+
+  /* Loop dimensions */
+  for(int idx_dmn=0;idx_dmn<nbr_dmn_dgn;idx_dmn++){
+
+    trv_tbl->dmn_dgn[idx_dmn].id=dmn_dgn[idx_dmn]->id;
+    trv_tbl->dmn_dgn[idx_dmn].cnt=dmn_dgn[idx_dmn]->cnt;
+ 
+  } /* Loop dimensions */
+
+} /* nco_dmn_dgn_tbl() */
+
+void
+nco_dmn_lst_ass_var_trv                /* [fnc] Create list of all dimensions associated with input variable list  (ncpdq, ncwa) */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ int *nbr_dmn_xtr,                     /* O [nbr] Number of dimensions associated with variables to be extracted  */
+ dmn_sct ***dmn)                       /* O [sct] Array of dimensions associated with variables to be extracted  */
+{
+  /* Purpose: Create list of all dimensions associated with input variable list */
+
+  const char fnc_nm[]="nco_dmn_lst_ass_var_trv()"; /* [sng] Function name */
+
+  int nbr_dmn;      /* [nbr] Number of dimensions associated with variables to be extracted */
+
+  long dmn_cnt;     /* [nbr] Hyperslabbed size of dimension */  
+  long dmn_sz;      /* [nbr] Size of dimension  */  
+
+  nco_bool dmn_flg; /* [flg] Is dimension already inserted in output array  */  
+
+  /* Used only by ncpdq , ncwa */
+  assert(nco_prg_id_get() == ncpdq || nco_prg_id_get() == ncwa);
+
+  nbr_dmn=0;
+
+  /* Traverse table and match relative dimension names */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    trv_sct var_trv=trv_tbl->lst[idx_var];
+
+    /* If GTT variable object is to extract */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){ 
+
+      /* Loop variable dimensions  */
+      for(int idx_dmn_var=0;idx_dmn_var<var_trv.nbr_dmn;idx_dmn_var++){
+
+        dmn_flg=False;
+
+        /* Get unique dimension object from unique dimension ID */
+        dmn_trv_sct *dmn_trv=nco_dmn_trv_sct(var_trv.var_dmn[idx_dmn_var].dmn_id,trv_tbl);
+
+        assert(dmn_trv);
+        assert(strcmp(dmn_trv->nm,var_trv.var_dmn[idx_dmn_var].dmn_nm) == 0);
+
+        /* Loop constructed array of output dimensions to see if already inserted  */
+        for(int idx_dmn_out=0;idx_dmn_out<nbr_dmn;idx_dmn_out++){
+
+          /* Match by ID */
+          if(var_trv.var_dmn[idx_dmn_var].dmn_id==(*dmn)[idx_dmn_out]->id){
+            dmn_flg=True;
+            break;
+          }  /* Match by ID */
+        } /* Loop constructed array of output dimensions to see if already inserted  */ 
+
+        /* If this dimension is not in output array */
+        if(!dmn_flg){
+
+          /* Add one more element to array  */
+          (*dmn)[nbr_dmn]=(dmn_sct *)nco_malloc(sizeof(dmn_sct));
+
+          /* Get size from GTT. NOTE use index idx_dmn_var */
+          if(var_trv.var_dmn[idx_dmn_var].is_crd_var){
+            dmn_cnt=var_trv.var_dmn[idx_dmn_var].crd->lmt_msa.dmn_cnt;
+            dmn_sz=var_trv.var_dmn[idx_dmn_var].crd->sz;
+            (*dmn)[nbr_dmn]->is_crd_dmn=True;
+          }else {
+            dmn_cnt=var_trv.var_dmn[idx_dmn_var].ncd->lmt_msa.dmn_cnt;
+            dmn_sz=var_trv.var_dmn[idx_dmn_var].ncd->sz;
+            (*dmn)[nbr_dmn]->is_crd_dmn=False;
+          }
+
+          (*dmn)[nbr_dmn]->nm=(char *)strdup(var_trv.var_dmn[idx_dmn_var].dmn_nm);
+          (*dmn)[nbr_dmn]->id=var_trv.var_dmn[idx_dmn_var].dmn_id;
+          (*dmn)[nbr_dmn]->nc_id=nc_id;
+          (*dmn)[nbr_dmn]->xrf=NULL;
+          (*dmn)[nbr_dmn]->val.vp=NULL;
+          (*dmn)[nbr_dmn]->is_rec_dmn=dmn_trv->is_rec_dmn;
+          (*dmn)[nbr_dmn]->cnt=dmn_cnt;
+          (*dmn)[nbr_dmn]->sz=dmn_sz;
+          (*dmn)[nbr_dmn]->srt=0L;
+          (*dmn)[nbr_dmn]->end=dmn_cnt-1L;
+          (*dmn)[nbr_dmn]->srd=1L;
+
+          (*dmn)[nbr_dmn]->cid=-1;
+          (*dmn)[nbr_dmn]->cnk_sz=0L;
+          (*dmn)[nbr_dmn]->type=(nc_type)-1;
+
+          nbr_dmn++;
+        }  /* If this dimension is not in output array */
+      } /* Loop variable dimensions  */
+    } /* Filter variables  */
+  } /* Loop table */
+
+  /* Export */
+  *nbr_dmn_xtr=nbr_dmn;
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){ 
+    (void)fprintf(stdout,"%s: DEBUG %s dimensions to export: ",nco_prg_nm_get(),fnc_nm);        
+    for(int idx_dmn=0;idx_dmn<nbr_dmn;idx_dmn++){
+      (void)fprintf(stdout,"#%d<%s> : ",(*dmn)[idx_dmn]->id,(*dmn)[idx_dmn]->nm);        
+    }
+    (void)fprintf(stdout,"\n");    
+  } 
+
+  return;
+} /* end nco_dmn_lst_ass_var_trv() */
+
+void
+nco_dmn_avg_mk                         /* [fnc] Build dimensions to average(ncwa)/re-order(ncpdq) array from input dimension names */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ char **obj_lst_in,                    /* I [sng] User-specified list of dimension names (-a names) */
+ const int nbr_dmn_in,                 /* I [nbr] Total number of dimensions in input list (size of above array) */
+ const nco_bool flg_rdd,               /* I [flg] Retain degenerate dimensions */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ dmn_sct ***dmn_avg,                   /* O [sct] Array of dimensions to average */
+ int *nbr_dmn_avg)                     /* O [nbr] Number of dimensions to average (size of above array) */
+{
+  /* Purpose: Create list of dimensions from list of dimension name strings (function based in nco_xtr_mk() ) */
+
+  /* 
+  Dimensions to average/not average are built using these 3 functions:
+
+  nco_dmn_avg_mk() Build dimensions to average array from input dimension names 
+  nco_dmn_out_mk() Build dimensions array to keep on output
+  nco_dmn_id_mk()  Mark flag average for all dimensions that have the input ID 
+
+  nco_dmn_avg_mk() parses -a names and exports an array of dmn_sct; it marks the flag "flg_dmn_avg" of "var_dmn_sct"
+  as True, if the dimension is to be averaged.
+
+  Since variables share dimensions, this flag has to be marked to all variable's dimensions that have it;
+  This broadcast is made in nco_dmn_id_mk(), using the unique dimension ID as key.
+
+  nco_dmn_out_mk() checks this flag, and if the dimension is not to be averaged, it is added to an array of dmn_sct,
+  dimensions on output.
+  */
+
+  const char fnc_nm[]="nco_dmn_avg_mk()"; /* [sng] Function name  */
+  const char sls_chr='/';   /* [chr] Slash character */
+
+  char *sbs_srt;            /* [sng] Location of user-string match start in object path */
+  char *sbs_end;            /* [sng] Location of user-string match end   in object path */
+  char *usr_sng;            /* [sng] User-supplied object name */
+  char *var_mch_srt;        /* [sng] Location of variable short name in user-string */
+
+  nco_bool flg_pth_end_bnd; /* [flg] String ends   at path component boundary */
+  nco_bool flg_pth_srt_bnd; /* [flg] String begins at path component boundary */
+  nco_bool flg_var_cnd;     /* [flg] Match meets addition condition(s) for dimension */
+  nco_bool flg_dmn_ins;     /* [flg] Is dimension already inserted in output array  */  
+
+  int obj_nbr;              /* [nbr] Number of objects in list */
+  int nbr_avg_dmn;          /* [nbr] Number of dimensions to average (output) */
+
+  long dmn_cnt;             /* [nbr] Hyperslabbed size of dimension */  
+  long dmn_sz;              /* [nbr] Size of dimension  */  
+
+  size_t usr_sng_lng;       /* [nbr] Length of user-supplied string */
+
+  /* Used only by ncpdq , ncwa */
+  assert(nco_prg_id_get() == ncpdq || nco_prg_id_get() == ncwa);
+
+  /* Initialize values */
+  obj_nbr=nbr_dmn_in;
+  nbr_avg_dmn=0;
+
+  /* Loop input dimension name list */
+  for(int idx_obj=0;idx_obj<obj_nbr;idx_obj++){
+
+    usr_sng=strdup(obj_lst_in[idx_obj]); 
+    usr_sng_lng=strlen(usr_sng);
+
+    /* Convert pound signs (back) to commas */
+    nco_hash2comma(usr_sng);
+
+    /* If usr_sng is regular expression ... */
+    if(strpbrk(usr_sng,".*^$\\[]()<>+?|{}")){
+      /* ... and regular expression library is present */
+#ifdef NCO_HAVE_REGEX_FUNCTIONALITY
+
+
+#else /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+      (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to variables) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",nco_prg_nm_get(),usr_sng);
+      nco_exit(EXIT_FAILURE);
+#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+    } /* end if regular expression */
+
+    /* Loop table */
+    for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+      trv_sct trv_obj=trv_tbl->lst[idx_tbl];
+
+      /* Initialize defaults for current candidate path to match */
+      flg_pth_srt_bnd=False;
+      flg_pth_end_bnd=False;
+      flg_var_cnd=False;
+
+      /* Variable to extract */
+      if(trv_obj.nco_typ == nco_obj_typ_var && trv_obj.flg_xtr){
+
+        /* Loop variable dimensions */
+        for(int idx_var_dmn=0;idx_var_dmn<trv_obj.nbr_dmn;idx_var_dmn++){
+
+          /* Get unique dimension object from unique dimension ID */
+          dmn_trv_sct *dmn_trv=nco_dmn_trv_sct(trv_obj.var_dmn[idx_var_dmn].dmn_id,trv_tbl);
+
+          assert(dmn_trv);
+          assert(strcmp(dmn_trv->nm,trv_obj.var_dmn[idx_var_dmn].dmn_nm) == 0);
+
+          /* Dimension ID, used to avoid duplicate insertions */
+          int dmn_id=trv_obj.var_dmn[idx_var_dmn].dmn_id;
+
+          /* Dimension name full */
+          char *dmn_nm_fll=trv_obj.var_dmn[idx_var_dmn].dmn_nm_fll;
+
+          /* Dimension name full lenght */
+          size_t dmn_nm_fll_lng=strlen(dmn_nm_fll);
+
+          /* Dimension name relative */
+          char *dmn_nm=trv_obj.var_dmn[idx_var_dmn].dmn_nm;
+
+          /* Dimension name relative lenght */
+          size_t dmn_nm_lng=strlen(dmn_nm);
+
+          /* Look for partial match, not necessarily on path boundaries */
+          if((sbs_srt=strstr(dmn_nm_fll,usr_sng))){
+
+            /* Ensure match spans (begins and ends on) whole path-component boundaries */
+
+            /* Does match begin at path component boundary ... directly on a slash? */
+            if(*sbs_srt == sls_chr) flg_pth_srt_bnd=True;
+
+            /* ...or one after a component boundary? */
+            if((sbs_srt > dmn_nm_fll) && (*(sbs_srt-1L) == sls_chr)) flg_pth_srt_bnd=True;
+
+            /* Does match end at path component boundary ... directly on a slash? */
+            sbs_end=sbs_srt+usr_sng_lng-1L;
+
+            if(*sbs_end == sls_chr) flg_pth_end_bnd=True;
+
+            /* ...or one before a component boundary? */
+            if(sbs_end <= dmn_nm_fll+dmn_nm_fll_lng-1L)
+              if((*(sbs_end+1L) == sls_chr) || (*(sbs_end+1L) == '\0'))
+                flg_pth_end_bnd=True;
+
+            /* Additional condition is user-supplied string must end with short form of dimension name */
+            if(dmn_nm_lng <= usr_sng_lng){
+              var_mch_srt=usr_sng+usr_sng_lng-dmn_nm_lng;
+              if(!strcmp(var_mch_srt,dmn_nm)){
+                flg_var_cnd=True;
+              }
+            } /* Additional condition  */
+
+
+            /* Must meet necessary flags */
+            if(flg_pth_srt_bnd && flg_pth_end_bnd && flg_var_cnd){
+
+              flg_dmn_ins=False;
+
+              /* Loop constructed array of averaged output dimensions to see if already inserted  */
+              for(int idx_dmn_out=0;idx_dmn_out<nbr_avg_dmn;idx_dmn_out++){
+
+                /* Match by ID */
+                if(dmn_id == (*dmn_avg)[idx_dmn_out]->id){
+                  flg_dmn_ins=True;
+                  break;
+                }  /* Match by ID */
+              } /* Loop constructed array of output dimensions to see if already inserted  */ 
+
+              /* If this dimension is not in output array */
+              if(!flg_dmn_ins){
+
+                /* Change flag to mark that dimension is to be averaged instead of to keep on output */
+                trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].flg_dmn_avg=True;
+
+                /* Add one more element to array  */
+                (*dmn_avg)=(dmn_sct **)nco_realloc((*dmn_avg),(nbr_avg_dmn+1)*sizeof(dmn_sct *));
+                (*dmn_avg)[nbr_avg_dmn]=(dmn_sct *)nco_malloc(sizeof(dmn_sct));
+
+                /* Get size from GTT. NOTE use index idx_var_dmn */
+                if(trv_obj.var_dmn[idx_var_dmn].is_crd_var){
+                  dmn_cnt=trv_obj.var_dmn[idx_var_dmn].crd->lmt_msa.dmn_cnt;
+                  dmn_sz=trv_obj.var_dmn[idx_var_dmn].crd->sz;
+                  (*dmn_avg)[nbr_avg_dmn]->is_crd_dmn=True;
+                }else {
+                  dmn_cnt=trv_obj.var_dmn[idx_var_dmn].ncd->lmt_msa.dmn_cnt;
+                  dmn_sz=trv_obj.var_dmn[idx_var_dmn].ncd->sz;
+                  (*dmn_avg)[nbr_avg_dmn]->is_crd_dmn=False;
+                }
+
+                (*dmn_avg)[nbr_avg_dmn]->nm=(char *)strdup(trv_obj.var_dmn[idx_var_dmn].dmn_nm);
+                (*dmn_avg)[nbr_avg_dmn]->id=trv_obj.var_dmn[idx_var_dmn].dmn_id;
+                (*dmn_avg)[nbr_avg_dmn]->nc_id=nc_id;
+                (*dmn_avg)[nbr_avg_dmn]->xrf=NULL;
+                (*dmn_avg)[nbr_avg_dmn]->val.vp=NULL;
+                (*dmn_avg)[nbr_avg_dmn]->is_rec_dmn=dmn_trv->is_rec_dmn;
+                (*dmn_avg)[nbr_avg_dmn]->cnt=dmn_cnt;
+                (*dmn_avg)[nbr_avg_dmn]->sz=dmn_sz;
+                (*dmn_avg)[nbr_avg_dmn]->srt=0L;
+                (*dmn_avg)[nbr_avg_dmn]->end=dmn_cnt-1L;
+                (*dmn_avg)[nbr_avg_dmn]->srd=1L;
+
+                (*dmn_avg)[nbr_avg_dmn]->cid=-1;
+                (*dmn_avg)[nbr_avg_dmn]->cnk_sz=0L;
+                (*dmn_avg)[nbr_avg_dmn]->type=(nc_type)-1;
+
+                /* Broadcast flag average/keep using dimension ID; variables share dimensions */
+                (void)nco_dmn_id_mk(dmn_id,flg_rdd,trv_tbl);
+
+                /* Increment number of dimensions found */
+                nbr_avg_dmn++;
+
+              }  /* If this dimension is not in output array */
+            } /* Must meet necessary flags */
+          } /* Look for partial match, not necessarily on path boundaries */
+        } /* Loop variable dimensions */ 
+      } /* Variable to extract */
+    } /* Loop table */
+  }  /* Loop input dimension name list */
+
+  /* Export */
+  *nbr_dmn_avg=nbr_avg_dmn;
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){ 
+    (void)fprintf(stdout,"%s: DEBUG %s dimensions to average: ",nco_prg_nm_get(),fnc_nm);        
+    for(int idx_dmn=0;idx_dmn<nbr_avg_dmn;idx_dmn++){
+      (void)fprintf(stdout,"#%d<%s> : ",(*dmn_avg)[idx_dmn]->id,(*dmn_avg)[idx_dmn]->nm);        
+    }
+    (void)fprintf(stdout,"\n");    
+  } 
+
+  return;
+
+} /* nco_dmn_avg_mk() */
+
+
+
+void
+nco_dmn_out_mk                         /* [fnc] Build dimensions array to keep on output */
+(dmn_sct **dmn_xtr,                    /* I [sct] Array of dimensions associated with variables to be extracted  */
+ const int nbr_dmn_xtr,                /* I [nbr] Number of dimensions associated with variables to be extracted (size of above array) */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ dmn_sct ***dmn_out,                   /* O [sct] Array of dimensions on ouput */
+ int *nbr_dmn_out)                     /* O [nbr] Number of dimensions on output (size of above array) */
+{
+  /* Purpose: Create list of dimensions from list of dimension name strings (function based in nco_xtr_mk() ) */
+
+  const char fnc_nm[]="nco_dmn_out_mk()"; /* [sng] Function name  */
+
+  int nbr_out_dmn;          /* [nbr] Number of dimensions to keep in output */
+
+  nco_bool flg_dmn_ins;     /* [flg] Is dimension already inserted in output array  */  
+
+  /* Used only by ncpdq , ncwa */
+  assert(nco_prg_id_get() == ncpdq || nco_prg_id_get() == ncwa);
+
+  /* Initialize values */
+  nbr_out_dmn=0;
+
+  /* Loop table */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct trv_obj=trv_tbl->lst[idx_tbl];
+
+    /* Variable to extract */
+    if(trv_obj.nco_typ == nco_obj_typ_var && trv_obj.flg_xtr){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<trv_obj.nbr_dmn;idx_var_dmn++){
+
+        /* This dimension is not to be averaged, it is to be kept on output */
+        if(!trv_obj.var_dmn[idx_var_dmn].flg_dmn_avg){
+
+          /* Search dimensions to be extracted  */
+          for(int idx_xtr_dmn=0;idx_xtr_dmn<nbr_dmn_xtr;idx_xtr_dmn++){
+
+            /* Dimension ID, match key */
+            int dmn_id=trv_obj.var_dmn[idx_var_dmn].dmn_id;
+
+            /* Match by ID */
+            if(dmn_id == dmn_xtr[idx_xtr_dmn]->id){
+
+              /* Assume dimension is not yet inserted in array */
+              flg_dmn_ins=False;
+
+              /* Loop constructed array of output dimensions to see if already inserted  */
+              for(int idx_dmn_out=0;idx_dmn_out<nbr_out_dmn;idx_dmn_out++){
+
+                /* Match by ID */
+                if(dmn_id == (*dmn_out)[idx_dmn_out]->id){
+                  /* Mark as inserted in array */
+                  flg_dmn_ins=True;
+                  break;
+                }  /* Match by ID */
+              } /* Loop constructed array of output dimensions to see if already inserted  */ 
+
+              /* If this dimension is not in output array */
+              if(!flg_dmn_ins){
+
+                /* Output list comprises non-averaged and, if specified, degenerate dimensions */
+                (*dmn_out)[nbr_out_dmn]=nco_dmn_dpl(dmn_xtr[idx_xtr_dmn]);
+                (void)nco_dmn_xrf(dmn_xtr[idx_xtr_dmn],(*dmn_out)[nbr_out_dmn]);
+                nbr_out_dmn++;
+
+              }  /* If this dimension is not in output array */
+            } /* Match by ID */
+          } /* Search dimensions to be extracted  */
+        } /* This dimension is not to be averaged, it is to be kept on output */ 
+      } /* Loop variable dimensions */ 
+    } /* Variable to extract */
+  } /* Loop table */
+
+  /* Export */
+  *nbr_dmn_out=nbr_out_dmn;
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){ 
+    (void)fprintf(stdout,"%s: DEBUG %s dimensions to keep on output: ",nco_prg_nm_get(),fnc_nm);        
+    for(int idx_dmn=0;idx_dmn<nbr_out_dmn;idx_dmn++){
+      (void)fprintf(stdout,"#%d<%s> : ",(*dmn_out)[idx_dmn]->id,(*dmn_out)[idx_dmn]->nm);        
+    }
+    (void)fprintf(stdout,"\n");       
+  } 
+
+  return;
+
+} /* nco_dmn_out_mk() */
+
+
+void
+nco_dmn_id_mk                          /* [fnc] Mark flag average, optionally flag degenerate for all dimensions that have the input ID */
+(const int dmn_id,                     /* I [nbr] Number of dimensions associated with variables to be extracted (size of above array) */
+ const nco_bool flg_rdd,               /* I [flg] Mark flag retain degenerate dimension */
+ const trv_tbl_sct * const trv_tbl)    /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Mark flag average, optionally flag degenerate for all dimensions that have the input ID */
+
+  /* Used only by ncpdq , ncwa */
+  assert(nco_prg_id_get() == ncpdq || nco_prg_id_get() == ncwa);
+
+  /* Loop table */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct trv_obj=trv_tbl->lst[idx_tbl];
+
+    /* Variable to extract */
+    if(trv_obj.nco_typ == nco_obj_typ_var && trv_obj.flg_xtr){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<trv_obj.nbr_dmn;idx_var_dmn++){
+
+        /* Match ID */
+        if(dmn_id == trv_obj.var_dmn[idx_var_dmn].dmn_id){
+
+          /* Change flag to mark that dimension is to be averaged instead of to keep on output */
+          trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].flg_dmn_avg=True;
+
+          /* Change flag to retain degenerate dimension */
+          if(flg_rdd) trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].flg_rdd=True;
+
+        } /* Match ID */
+      } /* Loop variable dimensions */
+    } /* Variable to extract */
+  } /* Loop table */
+
+  return;
+
+} /* nco_dmn_id_mk() */
+
+void                          
+nco_bld_rec_dmn                       /* [fnc] Build record dimensions array */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const nco_bool FORTRAN_IDX_CNV,      /* I [flg] Hyperslab indices obey Fortran convention */
+ const nco_bool flg_rec_all,          /* I [flg] Retrieve all records */
+ trv_tbl_sct * trv_tbl)               /* I/O [sct] GTT (Group Traversal Table) */
+{
+  const char fnc_nm[]="nco_bld_rec_dmn()"; /* [sng] Function name  */
+
+  int var_id;              /* [id] Variable ID */
+  int grp_id;              /* [id] Group ID */
+
+  dmn_trv_sct *dmn_trv;    /* [sct] Unique dimension object */
+
+  nco_bool flg_dmn_ins;    /* [flg] Is dimension already inserted in output array  */  
+
+#ifndef ENABLE_UDUNITS
+  nco_bool flg_prn=False;
+#endif /* !ENABLE_UDUNITS */
+
+  /* Used only by ncra */
+  assert(nco_prg_id_get() == ncra || nco_prg_id_get() == ncrcat || nco_prg_id_get() == ncfe || nco_prg_id_get() == ncge);
+
+  /* Loop table */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_tbl];
+
+    /* Is variable (extract records regardless of variable is to be extracted or only if to be extracted) */
+    if(flg_rec_all ? (var_trv.nco_typ == nco_obj_typ_var) : (var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr)){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+        /* Assume dimension is not yet inserted in array */
+        flg_dmn_ins=False;
+
+        /* Dimension ID */
+        int dmn_id=var_trv.var_dmn[idx_var_dmn].dmn_id;
+
+        /* Get unique dimension object from unique dimension ID, in input list */
+        dmn_trv=nco_dmn_trv_sct(dmn_id,trv_tbl);
+
+        /* Is record */
+        if(dmn_trv->is_rec_dmn){
+
+          /* Loop constructed array of output dimensions to see if already inserted  */
+          for(int idx_dmn_out=0;idx_dmn_out<trv_tbl->nbr_rec;idx_dmn_out++){
+
+            /* Match by ID */
+            if(dmn_id == trv_tbl->lmt_rec[idx_dmn_out]->id){
+              /* Mark as inserted in array */
+              flg_dmn_ins=True;
+              break;
+            }  /* Match by ID */
+          } /* Loop constructed array of output dimensions to see if already inserted  */ 
+
+          /* If this dimension is not in output array */
+          if(!flg_dmn_ins){
+
+            /* Add to GTT */
+            trv_tbl->lmt_rec=(lmt_sct **)nco_realloc(trv_tbl->lmt_rec,(trv_tbl->nbr_rec+1)*sizeof(lmt_sct *));
+
+            /* Obtain group ID using full group name */
+            (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+
+            /* a) case where the dimension has coordinate variables */
+            if(var_trv.var_dmn[idx_var_dmn].crd){
+
+              crd_sct *crd=var_trv.var_dmn[idx_var_dmn].crd;
+
+              /* Create stand-alone limit structure for given dimension */
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]=nco_lmt_sct_mk(grp_id,dmn_id,crd->lmt_msa.lmt_dmn,crd->lmt_msa.lmt_dmn_nbr,FORTRAN_IDX_CNV);
+
+              /* Insert full group name, key for group ID match */
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]->grp_nm_fll=(char *)strdup(crd->crd_grp_nm_fll);
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]->nm_fll=(char *)strdup(crd->dmn_nm_fll);
+
+              /* b) case of dimension only (there is no coordinate variable for this dimension */
+            }else{
+
+              dmn_trv_sct *ncd=var_trv.var_dmn[idx_var_dmn].ncd;
+
+              /* Create stand-alone limit structure for given dimension */
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]=nco_lmt_sct_mk(grp_id,dmn_id,ncd->lmt_msa.lmt_dmn,ncd->lmt_msa.lmt_dmn_nbr,FORTRAN_IDX_CNV);
+
+              /* Insert full group name, key for group ID match */
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]->grp_nm_fll=(char *)strdup(ncd->grp_nm_fll);
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]->nm_fll=(char *)strdup(ncd->nm_fll);
+
+            } /* b) case of dimension only (there is no coordinate variable for this dimension */
+            
+            trv_tbl->lmt_rec[trv_tbl->nbr_rec]->lmt_cln=cln_nil; 
+            trv_tbl->lmt_rec[trv_tbl->nbr_rec]->origin=0.0;
+            trv_tbl->lmt_rec[trv_tbl->nbr_rec]->rbs_sng=NULL;
+
+            /* Check if coordinate variable */
+            int rcd=nco_inq_varid_flg(grp_id,var_trv.var_dmn[idx_var_dmn].dmn_nm,&var_id);
+
+            /* Obtain record coordinate metadata */
+            if(rcd == NC_NOERR){ 
+              char *cln_att_sng=NULL;     
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]->rbs_sng=nco_lmt_get_udu_att(grp_id,var_id,"units"); 
+              cln_att_sng=nco_lmt_get_udu_att(grp_id,var_id,"calendar"); 
+              trv_tbl->lmt_rec[trv_tbl->nbr_rec]->lmt_cln=nco_cln_get_cln_typ(cln_att_sng); 
+              if(cln_att_sng) cln_att_sng=(char*)nco_free(cln_att_sng);  
+            }
+
+            /* Store ID */
+            trv_tbl->lmt_rec[trv_tbl->nbr_rec]->id=dmn_id;
+
+#ifndef ENABLE_UDUNITS
+            if(nco_dbg_lvl_get() >= nco_dbg_vrb && nco_dbg_lvl_get() != nco_dbg_dev && flg_prn == False){
+              if(trv_tbl->lmt_rec[trv_tbl->nbr_rec]->rbs_sng) (void)fprintf(stderr,"%s: WARNING Record coordinate %s has a \"units\" attribute but NCO was built without UDUnits. NCO is therefore unable to detect and correct for inter-file unit re-basing issues. See http://nco.sf.net/nco.html#rbs for more information.\n%s: HINT Re-build or re-install NCO enabled with UDUnits.\n",nco_prg_nm_get(),trv_tbl->lmt_rec[trv_tbl->nbr_rec]->nm,nco_prg_nm_get());
+              flg_prn=True;
+            }
+#endif /* !ENABLE_UDUNITS */
+
+            /* Increase array size */
+            trv_tbl->nbr_rec++;
+
+          }  /* If this dimension is not in output array */
+
+        } /* Is record */
+      } /* Loop variable dimensions */ 
+    } /* Variable to extract */
+  } /* Loop table */
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){ 
+    (void)fprintf(stdout,"%s: DEBUG %s record dimensions to process: ",nco_prg_nm_get(),fnc_nm);        
+    for(int idx_rec=0;idx_rec<trv_tbl->nbr_rec;idx_rec++){
+      (void)fprintf(stdout,"#%d<%s/%s> : ",trv_tbl->lmt_rec[idx_rec]->id,trv_tbl->lmt_rec[idx_rec]->grp_nm_fll,trv_tbl->lmt_rec[idx_rec]->nm);        
+    }
+    (void)fprintf(stdout,"\n");       
+  } 
+
+  return;
+
+} /* nco_bld_rec_dmn() */
+
+void
+nco_prt_tbl_lmt                       /* [fnc] Print table limits */
+(trv_tbl_sct * const trv_tbl)         /* I/O [sct] Traversal table */
+{
+  const char fnc_nm[]="nco_prt_tbl_lmt()"; /* [sng] Function name  */
+
+  /* Loop table */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_tbl];
+
+    /* Is variable */
+    if(var_trv.nco_typ == nco_obj_typ_var){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+        /* a) case where the dimension has coordinate variables */
+        if(var_trv.var_dmn[idx_var_dmn].crd){
+
+          crd_sct *crd=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd;
+
+          int lmt_dmn_nbr=crd->lmt_msa.lmt_dmn_nbr;
+
+          if(lmt_dmn_nbr){
+            (void)fprintf(stdout,"%s: INFO %s : <%s> : %s : limits:%d ->",nco_prg_nm_get(),fnc_nm,var_trv.nm_fll,var_trv.var_dmn[idx_var_dmn].dmn_nm,lmt_dmn_nbr);
+            for(int lmt_idx=0;lmt_idx<lmt_dmn_nbr;lmt_idx++){ 
+              lmt_sct *lmt_dmn=crd->lmt_msa.lmt_dmn[lmt_idx];
+              (void)fprintf(stdout," [%d]%s(%li,%li,%li) :",lmt_idx,lmt_dmn->nm,lmt_dmn->srt,lmt_dmn->cnt,lmt_dmn->srd);
+            }
+            (void)fprintf(stdout,"\n");
+          }
+
+          /* b) case of dimension only (there is no coordinate variable for this dimension */
+        }else{
+
+          dmn_trv_sct *ncd=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd;
+
+          int lmt_dmn_nbr=ncd->lmt_msa.lmt_dmn_nbr;
+
+          if(lmt_dmn_nbr){
+            (void)fprintf(stdout,"%s: INFO %s : <%s> : %s :limits: %d->",nco_prg_nm_get(),fnc_nm,var_trv.nm_fll,var_trv.var_dmn[idx_var_dmn].dmn_nm,lmt_dmn_nbr);
+            for(int lmt_idx=0;lmt_idx<lmt_dmn_nbr;lmt_idx++){ 
+              lmt_sct *lmt_dmn=ncd->lmt_msa.lmt_dmn[lmt_idx];
+              (void)fprintf(stdout," [%d]%s(%li,%li,%li) :",lmt_idx,lmt_dmn->nm,lmt_dmn->srt,lmt_dmn->cnt,lmt_dmn->srd);
+            }
+            (void)fprintf(stdout,"\n");
+          }
+
+        } /* b) case of dimension only (there is no coordinate variable for this dimension */
+
+      } /* Loop variable dimensions */
+    } /* Is variable */
+  } /* Loop table */
+
+} /* nco_prt_tbl_lmt() */
+
+
+void
+nco_bld_trv_tbl                       /* [fnc] Construct GTT, Group Traversal Table (groups,variables,dimensions, limits)   */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ char * const grp_pth,                /* I [sng] Absolute group path where to start build (root typically) */
+ int lmt_nbr,                         /* I [nbr] number of dimensions with limits */
+ CST_X_PTR_CST_PTR_CST_Y(char,lmt_arg), /* I [sng] List of user-specified dimension limits */
+ const int aux_nbr,                   /* I [nbr] Number of auxiliary coordinates */
+ char *aux_arg[],                     /* I [sng] Auxiliary coordinates */
+ nco_bool MSA_USR_RDR,                /* I [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+ nco_bool FORTRAN_IDX_CNV,            /* I [flg] Hyperslab indices obey Fortran convention */
+ char **grp_lst_in,                   /* I [sng] User-specified list of groups */
+ const int grp_lst_in_nbr,            /* I [nbr] Number of groups in list */
+ char **var_lst_in,                   /* I [sng] User-specified list of variables */
+ const int var_xtr_nbr,               /* I [nbr] Number of variables in list */
+ const nco_bool EXTRACT_ALL_COORDINATES,  /* I [flg] Process all coordinates */ 
+ const nco_bool flg_unn,              /* I [flg] Select union of specified groups and variables */
+ const nco_bool EXCLUDE_INPUT_LIST,   /* I [flg] Exclude rather than extract groups and variables specified with -v */ 
+ const nco_bool EXTRACT_ASSOCIATED_COORDINATES,  /* I [flg] Extract all coordinates associated with extracted variables? */ 
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] Traversal table */
+{
+  /* Purpose: Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+
+  lmt_sct **lmt=NULL_CEWI;  /* [sct] User defined limits */
+
+  nco_bool CNV_CCM_CCSM_CF; /* [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+
+  /* Construct traversal table objects (groups,variables) */
+  (void)nco_grp_itr(nc_id,(char *)NULL,grp_pth,trv_tbl);
+
+  /* Check -v and -g input names and create extraction list */
+  (void)nco_xtr_mk(grp_lst_in,grp_lst_in_nbr,var_lst_in,var_xtr_nbr,EXTRACT_ALL_COORDINATES,flg_unn,trv_tbl);
+
+  /* Change included variables to excluded variables */
+  if(EXCLUDE_INPUT_LIST) (void)nco_xtr_xcl(trv_tbl);
+
+  /* Add all coordinate variables to extraction list */
+  if(EXTRACT_ALL_COORDINATES) (void)nco_xtr_crd_add(trv_tbl);
+
+  /* Extract coordinates associated with extracted variables */
+  if(EXTRACT_ASSOCIATED_COORDINATES) (void)nco_xtr_crd_ass_add(nc_id,trv_tbl);
+
+  /* Is this a CCM/CCSM/CF-format history tape? */
+  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(nc_id);
+  if(CNV_CCM_CCSM_CF && EXTRACT_ASSOCIATED_COORDINATES){
+    /* Implement CF "coordinates" and "bounds" conventions */
+    (void)nco_xtr_cf_add(nc_id,"coordinates",trv_tbl);
+    (void)nco_xtr_cf_add(nc_id,"bounds",trv_tbl);
+  } /* CNV_CCM_CCSM_CF */
+
+  /* Mark extracted dimensions */
+  (void)nco_xtr_dmn_mrk(trv_tbl);
+
+  /* Mark extracted groups */
+  (void)nco_xtr_grp_mrk(trv_tbl);
+
+  /* Build dimension information for all variables (match dimension IDs) */
+  (void)nco_bld_dmn_ids_trv(nc_id,trv_tbl);
+
+  /* Build "is_crd_var" and "is_rec_var" members for all variables */
+  (void)nco_bld_crd_rec_var_trv(trv_tbl);
+
+  /* Build GTT "crd_sct" coordinate variable structure */
+  (void)nco_bld_crd_var_trv(trv_tbl);
+
+  /* Variables in dimension's scope? */
+  (void)nco_has_crd_dmn_scp(trv_tbl);
+
+  /* Assign variables' dimensions to either coordinates or dimension structs */
+  (void)nco_bld_var_dmn(trv_tbl);
+
+  /* Make uniform list of user-specified dimension limits */
+  if(lmt_nbr) lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
+
+  /* Parse auxiliary coordinates */
+  if(aux_nbr) (void)nco_bld_aux_crd(nc_id,aux_nbr,aux_arg,&lmt_nbr,&lmt,trv_tbl); 
+
+  /* Add dimension limits */
+  if(lmt_nbr) (void)nco_bld_lmt(nc_id,MSA_USR_RDR,lmt_nbr,lmt,FORTRAN_IDX_CNV,trv_tbl);
+
+  if(lmt_nbr){
+    for(int idx=0;idx<lmt_nbr;idx++) lmt[idx]=nco_lmt_free(lmt[idx]);
+    lmt=(lmt_sct **)nco_free(lmt);
+  } /* !lmt_nbr */
+
+  /* Hash traversal table for fastest access */
+  (void)nco_trv_hsh_bld(trv_tbl);
+
+  /* Build ensembles */
+  if(nco_prg_id_get() == ncge) (void)nco_bld_nsm(nc_id,trv_tbl);
+
+} /* nco_bld_trv_tbl() */
+
+void
+nco_bld_lmt                           /* [fnc] Assign user specified dimension limits to traversal table */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ nco_bool MSA_USR_RDR,                /* I [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+ int lmt_nbr,                         /* I [nbr] Number of user-specified dimension limits */
+ lmt_sct **lmt,                       /* I [sct] Structure comming from nco_lmt_prs() */
+ nco_bool FORTRAN_IDX_CNV,            /* I [flg] Hyperslab indices obey Fortran convention */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] Traversal table */
+{
+  /* Purpose: Assign user-specified dimension limits to traversal table  
+  At this point "lmt" was parsed from nco_lmt_prs(); only the relative names and  min, max, stride are known 
+  Steps:
+
+  Step 1) Find the total numbers of matches for a dimension
+  ncks -d lon,0,0,1  ~/nco/data/in_grp.nc
+  Here "lmt_nbr" is 1 and there is 1 match at most
+  ncks -d lon,0,0,1 -d lon,0,0,1 -d lat,0,0,1  ~/nco/data/in_grp.nc
+  Here "lmt_nbr" is 3 and there are 2 matches at most for "lon" and 1 match at most for "lat"
+  The limits have to be separated to 
+  a) case of coordinate variables
+  b) case of dimension only (there is no coordinate variable for that dimension)
+
+  Step 2) Allocate and initialize counter index for number of limits to zero for a dimension;  
+  "lmt_dmn_nbr" needed from Step 1; initialize dimension structure limit information
+  Deep copy matches to table, match at the current index, increment current index
+
+  Step 3) Apply MSA for each Dimension in a new cycle (that now has all its limits in place :-) ) 
+  At this point lmt_sct is no longer needed;  
+
+  Tests:
+  ncks -D 11 -d lon,0,0,1 -d lon,1,1,1 -d lat,0,0,1 -d time,1,2,1 -d time,6,7,1 -v lon,lat,time -H ~/nco/data/in_grp.nc
+  ncks -D 11 -d time,8,9 -d time,0,2  -v time -H ~/nco/data/in_grp.nc
+  ncks -D 11 -d time,8,2 -v time -H ~/nco/data/in_grp.nc # wrapped limit
+  */
+
+  /* Step 1) Find the total numbers of limit matches for a dimension and/or a coordinate variable */
+
+  /* Loop table step 1 */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_tbl];
+
+    /* Is variable to extract  */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+        /* Loop input name list */
+        for(int lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
+
+          assert(lmt[lmt_idx]->nm);
+
+          /* Match input relative name to dimension relative name */ 
+          if(strcmp(lmt[lmt_idx]->nm,var_trv.var_dmn[idx_var_dmn].dmn_nm) == 0){
+
+            /*  The limits have to be separated to */
+
+            /* a) case where the dimension has coordinate variables */
+            if(var_trv.var_dmn[idx_var_dmn].crd){
+
+              /* Increment number of dimension limits for this dimension */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn_nbr++;
+
+              /* b) case of dimension only (there is no coordinate variable for this dimension */
+            }else{
+
+              /* Increment number of dimension limits for this dimension */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn_nbr++; 
+
+            } /* b) case of dimension only (there is no coordinate variable for this dimension */
+
+          } /* Match input relative name to dimension relative name */ 
+        } /* Loop input name list */
+      } /* Loop variable dimensions */
+    } /* Is variable to extract  */
+  } /* Loop table step 1 */
+
+
+
+  /* Loop table step 2 */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_tbl];
+
+    /* Is variable to extract  */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+        /* Loop input name list */
+        for(int lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
+
+          /* Match input relative name to dimension relative name */ 
+          if(strcmp(lmt[lmt_idx]->nm,var_trv.var_dmn[idx_var_dmn].dmn_nm) == 0){
+
+            /*  The limits have to be separated to */
+
+            /* a) case where the dimension has coordinate variables */
+            if(var_trv.var_dmn[idx_var_dmn].crd){
+
+              int lmt_dmn_nbr=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn_nbr;
+
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn=(lmt_sct **)nco_malloc(lmt_dmn_nbr*sizeof(lmt_sct *));
+
+              /* b) case of dimension only (there is no coordinate variable for this dimension */
+            }else{
+
+              int lmt_dmn_nbr=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn_nbr;
+
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn=(lmt_sct **)nco_malloc(lmt_dmn_nbr*sizeof(lmt_sct *));
+
+            } /* b) case of dimension only (there is no coordinate variable for this dimension */
+
+          } /* Match input relative name to dimension relative name */ 
+        } /* Loop input name list */
+      } /* Loop variable dimensions */
+    } /* Is variable to extract  */
+  } /* Loop table step 2 */
+
+  /* Store matches in table, match at the current index, increment current index */
+
+  /* Loop table step 2 */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_tbl];
+
+    /* Is variable to extract  */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+        /* Loop input name list */
+        for(int lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
+
+          /* Match input relative name to dimension relative name */ 
+          if(strcmp(lmt[lmt_idx]->nm,var_trv.var_dmn[idx_var_dmn].dmn_nm) == 0){
+
+            /* Divide limits into two different cases */
+
+            /* a) Dimension has coordinate variables */
+            if(var_trv.var_dmn[idx_var_dmn].crd){
+
+              crd_sct *crd=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd;
+
+              /* Limit is same as dimension in input file? */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.BASIC_DMN=False;
+
+              /* Parse user-specified limits into hyperslab specifications. NOTE: Use True parameter and "crd" */
+              (void)nco_lmt_evl_dmn_crd(nc_id,0L,FORTRAN_IDX_CNV,crd->crd_grp_nm_fll,crd->nm,crd->sz,crd->is_rec_dmn,True,lmt[lmt_idx]);
+
+              /* Current index (lmt_crr) of dimension limits for this (idx_dmn) table dimension  */
+              int lmt_crr=crd->lmt_msa.lmt_crr;
+
+              /* Increment current index being initialized  */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_crr++;
+
+              /* Alloc this limit */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn[lmt_crr]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+              /* Initialize this entry */
+              (void)nco_lmt_init(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn[lmt_crr]);
+
+              /* Store dimension ID */
+              lmt[lmt_idx]->id=crd->dmn_id;
+
+              /* Store this valid input; deep-copy to table */ 
+              (void)nco_lmt_cpy(lmt[lmt_idx],trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn[lmt_crr]);
+
+            }else{
+	      /* b) Dimension only (no coordinate variable for this dimension) */
+
+              dmn_trv_sct *ncd=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd;
+
+              /* Limit is same as dimension in input file ? */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.BASIC_DMN=False;
+
+              /* Parse user-specified limits into hyperslab specifications. NOTE: Use False parameter and "dmn" */
+              (void)nco_lmt_evl_dmn_crd(nc_id,0L,FORTRAN_IDX_CNV,ncd->grp_nm_fll,ncd->nm,ncd->sz,ncd->is_rec_dmn,False,lmt[lmt_idx]);
+
+              /* Current index (lmt_crr) of dimension limits for this (idx_dmn) table dimension  */
+              int lmt_crr=ncd->lmt_msa.lmt_crr;
+
+              /* Increment current index being initialized  */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_crr++;
+
+              /* Alloc this limit */
+              trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn[lmt_crr]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+              /* Initialize this entry */
+              (void)nco_lmt_init(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn[lmt_crr]);
+
+              /* Store dimension ID */
+              lmt[lmt_idx]->id=ncd->dmn_id;
+
+              /* Store this valid input; deep-copy to table */ 
+              (void)nco_lmt_cpy(lmt[lmt_idx],trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn[lmt_crr]);
+
+            } /* b) case of dimension only (there is no coordinate variable for this dimension */
+
+          } /* Match input relative name to dimension relative name */ 
+        } /* Loop input name list */
+      } /* Loop variable dimensions */
+    } /* Is variable to extract  */
+  } /* Loop table step 2 */
+
+  /* Step 3) Apply MSA for each Dimension in new cycle (that now has all its limits in place) */
+
+  /* Loop table step 3 */
+  for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+
+    trv_sct var_trv=trv_tbl->lst[idx_tbl];
+
+    /* Is variable to extract  */
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+
+      /* Loop variable dimensions */
+      for(int idx_var_dmn=0;idx_var_dmn<var_trv.nbr_dmn;idx_var_dmn++){
+
+        /* Loop input name list */
+        for(int lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
+
+          /* Match input relative name to dimension relative name */ 
+          if(strcmp(lmt[lmt_idx]->nm,var_trv.var_dmn[idx_var_dmn].dmn_nm) == 0){
+
+            /* Limits divide into two cases */
+
+            /* a) Dimension has coordinate variables */
+            if(var_trv.var_dmn[idx_var_dmn].crd){
+
+              /* Adapted from original MSA loop in nco_msa_lmt_all_ntl(); differences are marked GTT specific */
+
+              nco_bool flg_ovl; /* [flg] Limits overlap */
+
+              crd_sct *crd=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd;
+
+              /* GTT: If this coordinate has no limits, continue */
+              if(crd->lmt_msa.lmt_dmn_nbr == 0) continue;
+
+              /* ncra/ncrcat have only one limit for record dimension so skip evaluation otherwise this messes up multi-file operation */
+              if(crd->is_rec_dmn && (nco_prg_id_get() == ncra || nco_prg_id_get() == ncrcat)) continue;
+
+              /* Split-up wrapped limits. NOTE: using deep copy version nco_msa_wrp_splt_cpy() */   
+              (void)nco_msa_wrp_splt_cpy(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa);
+
+              /* Wrapped hyperslabs are dimensions broken into the "wrong" order, e.g., from
+              -d time,8,2 broken into -d time,8,9 -d time,0,2 
+              WRP flag set only when list contains dimensions split as above */
+              if(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.WRP){
+
+                /* Find and store size of output dim */  
+                (void)nco_msa_clc_cnt(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa); 
+
+                continue;
+              } /* End WRP flag set */
+
+              /* Single slab---no analysis needed */  
+              if(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.lmt_dmn_nbr == 1){
+
+                (void)nco_msa_clc_cnt(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa);  
+
+                continue;    
+              } /* End Single slab */
+
+              /* Does Multi-Slab Algorithm returns hyperslabs in user-specified order? */
+              if(MSA_USR_RDR){
+                trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa.MSA_USR_RDR=True;
+
+                /* Find and store size of output dimension */  
+                (void)nco_msa_clc_cnt(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa);  
+
+                continue;
+              } /* End MSA_USR_RDR */
+
+              /* Sort limits */
+              (void)nco_msa_qsort_srt(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa);
+
+              /* Check for overlap */
+              flg_ovl=nco_msa_ovl(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa); 
+
+              /* Find and store size of output dimension */  
+              (void)nco_msa_clc_cnt(&trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].crd->lmt_msa);
+
+              if(nco_dbg_lvl_get() >= nco_dbg_fl){
+                if(flg_ovl) (void)fprintf(stdout,"%s: coordinate \"%s\" has overlapping hyperslabs\n",nco_prg_nm_get(),crd->nm); else (void)fprintf(stdout,"%s: coordinate \"%s\" has distinct hyperslabs\n",nco_prg_nm_get(),crd->nm); 
+	      } /* endif */
+
+            }else{
+
+              /* b) Dimension only (no coordinate variable for this dimension) */
+
+              dmn_trv_sct *ncd=trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd;
+
+              /* Adapted from the original MSA loop in nco_msa_lmt_all_ntl(); differences are marked GTT specific */
+              nco_bool flg_ovl; /* [flg] Limits overlap */
+
+              /* GTT: If this dimension has no limits, continue */
+              if(ncd->lmt_msa.lmt_dmn_nbr == 0) continue;
+
+              /* ncra/ncrcat have only one limit for record dimension so skip evaluation otherwise this messes up multi-file operation */
+              if(ncd->is_rec_dmn && (nco_prg_id_get() == ncra || nco_prg_id_get() == ncrcat)) continue;
+
+              /* Split-up wrapped limits */   
+              (void)nco_msa_wrp_splt_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd);
+
+              /* Wrapped hyperslabs are dimensions broken into the "wrong" order,e.g. from
+              -d time,8,2 broken into -d time,8,9 -d time,0,2 
+              WRP flag set only when list contains dimensions split as above */
+              if(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.WRP){
+
+                /* Find and store size of output dim */  
+                (void)nco_msa_clc_cnt_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd); 
+
+                continue;
+              } /* End WRP flag set */
+
+              /* Single slab---no analysis needed */  
+              if(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.lmt_dmn_nbr == 1){
+
+                (void)nco_msa_clc_cnt_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd);  
+
+                continue;    
+              } /* End Single slab */
+
+              /* Does Multi-Slab Algorithm returns hyperslabs in user-specified order ? */
+              if(MSA_USR_RDR){
+                trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.MSA_USR_RDR=True;
+
+                /* Find and store size of output dimension */  
+                (void)nco_msa_clc_cnt_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd);  
+
+                continue;
+              } /* End MSA_USR_RDR */
+
+              /* Sort limits */
+              (void)nco_msa_qsort_srt_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd);
+
+              /* Check for overlap */
+              flg_ovl=nco_msa_ovl_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd);  
+
+              if(!flg_ovl) trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd->lmt_msa.MSA_USR_RDR=True;
+
+              /* Find and store size of output dimension */  
+              (void)nco_msa_clc_cnt_trv(trv_tbl->lst[idx_tbl].var_dmn[idx_var_dmn].ncd);
+
+              if(nco_dbg_lvl_get() >= nco_dbg_fl){
+                if(flg_ovl) (void)fprintf(stdout,"%s: dimension \"%s\" has overlapping hyperslabs\n",nco_prg_nm_get(),ncd->nm); else (void)fprintf(stdout,"%s: dimension \"%s\" has distinct hyperslabs\n",nco_prg_nm_get(),ncd->nm); 
+	      } /* endif */
+
+            } /* b) case of dimension only (there is no coordinate variable for this dimension */
+
+          } /* Match input relative name to dimension relative name */ 
+        } /* Loop input name list */
+      } /* Loop variable dimensions */
+    } /* Is variable to extract  */
+  } /* Loop table step 3 */
+
+} /* nco_bld_lmt() */
+
+void 
+nco_msa_var_get_elm_trv             /* [fnc] Read a used defined limit */
+(const int nc_id,                   /* I [ID] netCDF file ID */
+ var_sct *var_prc,                  /* I/O [sct] Variable */
+ const char * const rec_nm_fll,     /* I [sng] Full name of record being done in loop (trv_tbl->lmt_rec[idx_rec]->nm_fll ) */
+ const long idx_rec_crr_in,         /* [idx] Index of current record in current input file */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Define artificial MSA limit that corresponds to one record to read, since nco_msa_var_get_trv() reads all elements */ 
+
+  int lmt_dmn_nbr;
+
+  nco_bool flg_lmt=False; /* [flg] Allocate a custom limit */
+
+  trv_sct *var_trv;
+
+  /* Obtain variable GTT object using full variable name */
+  var_trv=trv_tbl_var_nm_fll(var_prc->nm_fll,trv_tbl);
+
+  /* Loop dimensions */
+  for(int idx_dmn=0;idx_dmn<var_trv->nbr_dmn;idx_dmn++){
+
+    /* NB: Match current record must be done by name, since ID may differ for records across files */
+    if(strcmp(var_trv->var_dmn[idx_dmn].dmn_nm_fll,rec_nm_fll) == 0){
+
+      /* Case of dimension being coordinate variable */
+      if(var_trv->var_dmn[idx_dmn].crd){
+
+        lmt_dmn_nbr=var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn_nbr;
+
+        /* Case of previously existing limits */
+        if(lmt_dmn_nbr > 0){
+
+          /* Loop limits */
+          for(int idx_lmt=0;idx_lmt<lmt_dmn_nbr;idx_lmt++){
+            /* And set start,count,stride to match current record ...Jesuzz */
+            var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[idx_lmt]->srt=idx_rec_crr_in;
+            var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[idx_lmt]->end=idx_rec_crr_in;
+            var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[idx_lmt]->cnt=1;
+            var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[idx_lmt]->srd=1;
+          } /* Loop limits */
+
+          /* ! Case of previously existing limits */
+        }else{
+          flg_lmt=True;
+          /* Alloc 1 dummy limit */
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn_nbr=1;
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn=(lmt_sct **)nco_malloc(1*sizeof(lmt_sct *));
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+          /* Initialize NULL/invalid */
+          (void)nco_lmt_init(var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]);
+          /* And set start,count,stride to match current record ...Jesuzz */
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]->srt=idx_rec_crr_in;
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]->end=idx_rec_crr_in;
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]->cnt=1;
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]->srd=1;
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]->nm=strdup("record_limit");
+        } /* ! Case of previously existing limits */
+      } /* Case of dimension being coordinate variable */
+
+      else{
+
+        assert(!var_trv->var_dmn[idx_dmn].is_crd_var);
+
+        lmt_dmn_nbr=var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn_nbr;
+
+        /* Case of previously existing limits */
+        if(lmt_dmn_nbr > 0){
+
+          /* Loop limits */
+          for(int idx_lmt=0;idx_lmt<lmt_dmn_nbr;idx_lmt++){
+            /* And set start,count,stride to match current record ...Jesuzz */
+            var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[idx_lmt]->srt=idx_rec_crr_in;
+            var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[idx_lmt]->end=idx_rec_crr_in;
+            var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[idx_lmt]->cnt=1;
+            var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[idx_lmt]->srd=1;
+          } /* Loop limits */
+
+          /* ! Case of previously existing limits */
+        }else{
+          flg_lmt=True;
+          /* Alloc 1 dummy limit */
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn_nbr=1;
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn=(lmt_sct **)nco_malloc(1*sizeof(lmt_sct *));
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+          /* Initialize NULL/invalid */
+          (void)nco_lmt_init(var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]);
+          /* And set start,count,stride to match current record ...Jesuzz */
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]->srt=idx_rec_crr_in;
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]->end=idx_rec_crr_in;
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]->cnt=1;
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]->srd=1;
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]->nm=strdup("record_limit");
+        } /* ! Case of previously existing limits */
+      } /* Case of dimension not being coordinate variable */
+
+      break;
+    } /* Match current record by name */
+  } /* Loop dimensions */
+
+  /* Retrieve variable from disk into memory */
+  (void)nco_msa_var_get_trv(nc_id,var_prc,trv_tbl);
+
+  /* Free the artificial limit and reset the number of limits */
+  for(int idx_dmn=0;idx_dmn<var_trv->nbr_dmn;idx_dmn++){
+    /* NB: Match current record must be done by name, since ID may differ for records across files */
+    if(strcmp(var_trv->var_dmn[idx_dmn].dmn_nm_fll,rec_nm_fll) == 0){
+      /* Custom limit */
+      if(flg_lmt){
+        /* Case of dimension being coordinate variable */
+        if(var_trv->var_dmn[idx_dmn].is_crd_var){
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn_nbr=0;
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]=(lmt_sct *)nco_lmt_free(var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn[0]);
+          var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn=(lmt_sct **)nco_free(var_trv->var_dmn[idx_dmn].crd->lmt_msa.lmt_dmn);         
+        } /* Case of dimension being coordinate variable */
+        else if(!var_trv->var_dmn[idx_dmn].is_crd_var){
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn_nbr=0;
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]=(lmt_sct *)nco_lmt_free(var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn[0]);
+          var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn=(lmt_sct **)nco_free(var_trv->var_dmn[idx_dmn].ncd->lmt_msa.lmt_dmn);    
+        } /* Case of dimension not being coordinate variable */
+        break;
+      } /* Custom limit */
+    } /* Match current record  */
+  } /* Loop dimensions */
+
+} /* nco_msa_var_get_elm_trv() */
+
+nco_bool                             /* O [flg] Skip variable  */
+nco_skp_var                          /* [fnc] Skip variable while doing record   */
+(const var_sct * const var_prc,      /* I [sct] Processed variable */
+ const char * const rec_nm_fll,      /* I [sng] Full name of record being done in loop (trv_tbl->lmt_rec[idx_rec]->nm_fll ) */
+ const trv_tbl_sct * const trv_tbl)  /* I [sct] Traversal table */
+{
+  nco_bool flg_skp;     /* [flg] Skip variable  */
+
+  dmn_trv_sct *dmn_trv; /* [sct] GTT dimension structure */
+
+  /* Variable must contain one record */
+  assert(var_prc->is_rec_var);
+
+  flg_skp=False;
+
+  /* Loop dimensions */
+  for(int idx_dmn=0;idx_dmn<var_prc->nbr_dim;idx_dmn++){
+
+    /* Is this the record dimension ? */
+    if(var_prc->dim[idx_dmn]->is_rec_dmn){
+
+      /* Get unique dimension object from unique dimension ID, in input list (NB: this is needed because dmn_sct does not have name full) */
+      dmn_trv=nco_dmn_trv_sct(var_prc->dim[idx_dmn]->id,trv_tbl);
+
+      /* And it is not the same as the input record dimension name currently being done then skip it */
+      if(strcmp(dmn_trv->nm_fll,rec_nm_fll)) flg_skp=True;
+
+    } /* Is this the record dimension */
+  } /* Loop dimensions */
+
+  return flg_skp;
+
+} /* nco_skp_var() */
+
+var_sct *                             /* O [sct] Variable (weight) */  
+nco_var_get_wgt_trv                   /* [fnc] Retrieve weighting or mask variable */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const char * const wgt_nm,           /* I [sng] Weight variable name (relative) */
+ const var_sct * const var,           /* I [sct] Variable that needs the weight/mask variable */
+ const trv_tbl_sct * const trv_tbl)   /* I [lst] Traversal table */
+{
+  /* Purpose: Return the variable (weight or mask) that is in scope of variable that needs the weight/mask variable */
+
+  /* NB: currently detect same group only */
+
+  int nbr_wgt=0;     /* [nbr] Number of weight/mask variables in file */
+  int grp_id;        /* [ID] Group ID */
+  int var_id;        /* [ID] Variable ID */
+  int idx_wgt;
+
+  trv_sct **wgt_trv=NULL; /* [sct] Weight/mask list */
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++)
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var && (!strcmp(trv_tbl->lst[tbl_idx].nm,wgt_nm))) nbr_wgt++;
+
+  /* Fill-in variable structure list for all weights */
+  wgt_trv=(trv_sct **)nco_malloc(nbr_wgt*sizeof(trv_sct *));
+
+  idx_wgt=0;
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+
+    /* Filter by name  */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var && (!strcmp(trv_tbl->lst[tbl_idx].nm,wgt_nm))){
+      wgt_trv[idx_wgt]=&trv_tbl->lst[tbl_idx]; 
+      idx_wgt++;
+    } /* Filter variables  */
+  } /* Loop table */
+
+  /* Loop table */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+
+    /* Find the variable that needs the weight  */
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var 
+      && trv_tbl->lst[idx_var].flg_xtr
+      && (strcmp(trv_tbl->lst[idx_var].nm_fll,var->nm_fll) == 0)){
+        trv_sct var_trv=trv_tbl->lst[idx_var];  
+
+        /* Loop over weights */
+        for(idx_wgt=0;idx_wgt<nbr_wgt;idx_wgt++){
+          /* Same group  */ 
+          if(!strcmp(wgt_trv[idx_wgt]->grp_nm_fll,var_trv.grp_nm_fll)){ 
+            var_sct *wgt;
+
+            /* Obtain group ID from API using full group name */
+            (void)nco_inq_grp_full_ncid(nc_id,wgt_trv[idx_wgt]->grp_nm_fll,&grp_id);
+
+            /* Get variable ID */
+            (void)nco_inq_varid(grp_id,wgt_trv[idx_wgt]->nm,&var_id);
+
+            /* Transfer from table to local variable  */
+            wgt=nco_var_fll_trv(grp_id,var_id,wgt_trv[idx_wgt],trv_tbl);
+
+            /* Retrieve variable NB: using GTT version, that "knows" all the limits  */
+            (void)nco_msa_var_get_trv(nc_id,wgt,trv_tbl);
+
+            wgt_trv=(trv_sct **)nco_free(wgt_trv);
+
+            return wgt;
+
+          }  /* Same group  */ 
+        } /* Loop over weights */
+    } /* Filter variables  */
+  } /* Loop table */
+
+  return NULL;
+
+} /* nco_var_get_wgt_trv() */
+
+
+
+dmn_trv_sct *                         /* O [sct] Table dimension object */
+nco_dmn_usr_sng                       /* [fnc] Parse input string and return table dimension object */
+(const char * const usr_sng,          /* I [sng] Object name */
+ const trv_tbl_sct * const trv_tbl,   /* I [lst] Traversal table */ 
+ nco_bool *is_opt)                    /* O [flg] Dimension presence is optional (input string has '.') */
+{
+  /* Purpose: Parse input string and return table dimension object */
+
+  const char opt_chr='.'; /* Character indicating presence of following variable/dimension/attribute in file is optional */
+
+  *is_opt=False;
+
+  /* Try absolute match */
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr_dmn;tbl_idx++){
+    /* Match absolute name */
+    if(strcmp(usr_sng,trv_tbl->lst_dmn[tbl_idx].nm_fll) == 0){
+      return &trv_tbl->lst_dmn[tbl_idx];
+    } /* Match name */
+  } /* Loop table */ 
+
+  /* Try relative match */
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr_dmn;tbl_idx++){
+    /* Match absolute name */
+    if(strcmp(usr_sng,trv_tbl->lst_dmn[tbl_idx].nm) == 0){
+      return &trv_tbl->lst_dmn[tbl_idx];
+    } /* Match name */
+  } /* Loop table */ 
+
+  /* Try optional absolute match */
+
+  /* Optional absolute match */
+  if(usr_sng[0] == opt_chr){
+    /* Loop table */
+    for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr_dmn;tbl_idx++){
+      /* Match absolute name */
+      if(strcmp(usr_sng+1,trv_tbl->lst_dmn[tbl_idx].nm_fll) == 0){
+        *is_opt=True;
+        return &trv_tbl->lst_dmn[tbl_idx];
+      } /* Match name */
+    } /* Loop table */ 
+  } /* Optional absolute match */
+
+  /* Optional relative match */
+  if(usr_sng[0] == opt_chr){
+    /* Loop table */
+    for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr_dmn;tbl_idx++){
+      /* Match absolute name */
+      if(strcmp(usr_sng+1,trv_tbl->lst_dmn[tbl_idx].nm) == 0){
+        *is_opt=True;
+        return &trv_tbl->lst_dmn[tbl_idx];
+      } /* Match name */
+    } /* Loop table */ 
+  } /* Optional relative match */
+
+  /* Cases of not found and optional */
+  if(usr_sng[0] == opt_chr){
+    *is_opt=True;
+  }
+
+  return NULL;
+
+} /* nco_dmn_usr_sng() */
+
+trv_sct *                             /* O [sct] Table object */
+nco_obj_usr_sng                       /* [fnc] Parse input string and return table object */
+(const char * const usr_sng,          /* I [sng] Object name */
+ const trv_tbl_sct * const trv_tbl,   /* I [lst] Traversal table */ 
+ nco_bool *is_opt)                    /* O [flg] Dimension presence is optional (input string has '.') */
+{
+  /* Purpose: Parse input string and return table object */
+
+  const char opt_chr='.'; /* Character indicating presence of following variable/dimension/attribute in file is optional */
+
+  /* Only used by ncrename */
+  assert(nco_prg_id_get() == ncrename);
+
+  *is_opt=False;
+
+  /* Try absolute match */
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Match absolute name */
+    if(strcmp(usr_sng,trv_tbl->lst[tbl_idx].nm_fll) == 0){
+      return &trv_tbl->lst[tbl_idx];
+    } /* Match name */
+  } /* Loop table */ 
+
+  /* Try relative match */
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Match relative name */
+    if(strcmp(usr_sng,trv_tbl->lst[tbl_idx].nm) == 0){
+      return &trv_tbl->lst[tbl_idx];
+    } /* Match name */
+  } /* Loop table */ 
+
+  /* Try optional absolute match */
+
+  /* Optional absolute match */
+  if(usr_sng[0] == opt_chr){
+    /* Loop table */
+    for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+      /* Match absolute name */
+      if(strcmp(usr_sng+1,trv_tbl->lst[tbl_idx].nm_fll) == 0){
+        *is_opt=True;
+        return &trv_tbl->lst[tbl_idx];
+      } /* Match name */
+    } /* Loop table */ 
+  } /* Optional absolute match */
+
+  /* Optional relative match */
+  if(usr_sng[0] == opt_chr){
+    /* Loop table */
+    for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+      /* Match relative name */
+      if(strcmp(usr_sng+1,trv_tbl->lst[tbl_idx].nm) == 0){
+        *is_opt=True;
+        return &trv_tbl->lst[tbl_idx];
+      } /* Match name */
+    } /* Loop table */ 
+  } /* Optional relative match */
+
+  /* Cases of not found and optional */
+  if(usr_sng[0] == opt_chr){
+    *is_opt=True;
+  }
+
+  return NULL;
+
+} /* nco_obj_usr_sng() */
+
+void                                  
+nco_aed_prc_grp                       /* [fnc] Process attributes in groups */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl)   /* I [lst] Traversal table */ 
+{
+  /* Purpose: Process attributes  */
+
+  int grp_id; /* [id] Group ID */
+
+  nco_bool var_fnd=False; /* [flg] Variable was found */
+
+  /* Only used by ncatted */
+  assert(nco_prg_id_get() == ncatted);
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Is group */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_grp){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv_tbl->lst[tbl_idx].grp_nm_fll,&grp_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,NC_GLOBAL,aed);
+      var_fnd=True;
+    } /* Is group */
+  } /* Loop table */ 
+
+  if(!var_fnd){
+    (void)fprintf(stderr,"%s: No attributes were found\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
+  } 
+
+  return;
+
+} /* nco_aed_prc_grp() */
+
+
+void                                  
+nco_aed_prc_glb                       /* [fnc] Process attributes in root group */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl)   /* I [lst] Traversal table */ 
+{
+  /* Purpose: Process attributes  */
+
+  int grp_id; /* [id] Group ID */
+
+  nco_bool var_fnd=False; /* [flg] Variable was found */
+
+  /* Only used by ncatted */
+  assert(nco_prg_id_get() == ncatted);
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Is root group */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_grp && strcmp("/",trv_tbl->lst[tbl_idx].nm_fll) == 0){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv_tbl->lst[tbl_idx].grp_nm_fll,&grp_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,NC_GLOBAL,aed);
+      var_fnd=True;
+    } /* Is group */
+  } /* Loop table */ 
+
+  if(!var_fnd){
+    (void)fprintf(stderr,"%s: Attribute was not found\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
+  } 
+
+  return;
+
+} /* nco_aed_prc_grp() */
+
+void                                  
+nco_aed_prc_var                       /* [fnc] Process attributes in variables */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl)   /* I [lst] Traversal table */ 
+{
+  /* Purpose: Process attributes  */
+
+  int grp_id; /* [id] Group ID */
+  int var_id; /* [id] Variable ID */
+
+  nco_bool var_fnd=False; /* [flg] Variable was found */
+
+  /* Only used by ncatted */
+  assert(nco_prg_id_get() == ncatted);
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    /* Is variable */
+    if(trv_tbl->lst[tbl_idx].nco_typ == nco_obj_typ_var){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv_tbl->lst[tbl_idx].grp_nm_fll,&grp_id);
+      /* Get variable ID  */
+      (void)nco_inq_varid(grp_id,trv_tbl->lst[tbl_idx].nm,&var_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,var_id,aed);
+      var_fnd=True;
+    } /* Is variable */
+  } /* Loop table */ 
+
+  if(!var_fnd){
+    (void)fprintf(stderr,"%s: No attributes were found\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
+  } 
+
+  return;
+
+} /* nco_aed_prc_var() */
+
+
+void                                  
+nco_aed_prc_var_xtr                   /* [fnc] Process attributes in variables that match table extraction flag */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl)   /* I [lst] Traversal table */ 
+{
+  /* Purpose: Process attributes  */
+
+  int grp_id; /* [id] Group ID */
+  int var_id; /* [id] Variable ID */
+
+  nco_bool var_fnd=False; /* [flg] Variable was found */
+
+  /* Only used by ncatted */
+  assert(nco_prg_id_get() == ncatted);
+
+  /* Loop table */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    trv_sct trv=trv_tbl->lst[tbl_idx];
+    /* Is variable to extract */
+    if(trv.nco_typ == nco_obj_typ_var && trv.flg_xtr){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv.grp_nm_fll,&grp_id);
+      /* Get variable ID  */
+      (void)nco_inq_varid(grp_id,trv.nm,&var_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,var_id,aed);
+      var_fnd=True;
+    } /* Is variable */
+  } /* Loop table */ 
+
+  if(!var_fnd){
+    (void)fprintf(stderr,"%s: No attributes were found\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
+  } 
+
+  return;
+
+} /* nco_aed_prc_var_xtr() */
+
+void                                  
+nco_aed_prc_var_nm                    /* [fnc] Process attributes in variables that match input name */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl)   /* I [lst] Traversal table */ 
+{
+  /* Purpose: Process attributes in variables that match input name (absolute or relative)  */
+
+  int grp_id; /* [id] Group ID */
+  int var_id; /* [id] Variable ID */
+
+  nco_bool var_fnd=False; /* [flg] Variable was found */
+
+  /* Only used by ncatted */
+  assert(nco_prg_id_get() == ncatted);
+
+  /* Assume name is for variable */
+
+  /* Loop table (absolute name) */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    trv_sct trv=trv_tbl->lst[tbl_idx];
+    /* Variable name match */
+    if(trv.nco_typ == nco_obj_typ_var && strcmp(aed.var_nm,trv.nm_fll) == 0){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv.grp_nm_fll,&grp_id);
+      /* Get variable ID  */
+      (void)nco_inq_varid(grp_id,trv.nm,&var_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,var_id,aed);
+      /* Only 1 match possible, return */
+      return;
+    } /* Is variable */
+  } /* Loop table */ 
+
+  /* Loop table (relative name, can be many) */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    trv_sct trv=trv_tbl->lst[tbl_idx];
+    /* Variable name (relative) match */
+    if(trv.nco_typ == nco_obj_typ_var && strcmp(aed.var_nm,trv.nm) == 0){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv.grp_nm_fll,&grp_id);
+      /* Get variable ID  */
+      (void)nco_inq_varid(grp_id,trv.nm,&var_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,var_id,aed);
+      var_fnd=True;
+    } /* Is variable */
+  } /* Loop table */ 
+
+
+  /* Try name for group */
+
+  /* Loop table (absolute name) */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    trv_sct trv=trv_tbl->lst[tbl_idx];
+    /* Group name match */
+    if(trv.nco_typ == nco_obj_typ_grp && strcmp(aed.var_nm,trv.nm_fll) == 0){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv.grp_nm_fll,&grp_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,NC_GLOBAL,aed);
+      /* Only 1 match possible, return */
+      return;
+    } /* Is variable */
+  } /* Loop table */ 
+
+  /* Loop table (relative name, can be many) */
+  for(unsigned tbl_idx=0;tbl_idx<trv_tbl->nbr;tbl_idx++){
+    trv_sct trv=trv_tbl->lst[tbl_idx];
+    /* Group name (relative) match */
+    if(trv.nco_typ == nco_obj_typ_grp && strcmp(aed.var_nm,trv.nm) == 0){
+      /* Get group ID */
+      (void)nco_inq_grp_full_ncid(nc_id,trv.grp_nm_fll,&grp_id);
+      /* Process attribute */
+      (void)nco_aed_prc(grp_id,NC_GLOBAL,aed);
+      var_fnd=True;
+    } /* Is variable */
+  } /* Loop table */ 
+
+
+  if(!var_fnd){
+    (void)fprintf(stderr,"%s: Variable <%s> was not found\n",nco_prg_nm_get(),aed.var_nm);
+    nco_exit(EXIT_FAILURE);
+  } 
+
+  return;
+
+} /* nco_aed_prc_var_nm() */
+
+void                                    
+nco_grp_var_lst                        /* [fnc] Export list of variable names for group */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ const char * const grp_nm_fll,        /* I [sng] Absolute group name */
+ char ***nm_lst,                       /* I/O [sng] List of names (relative) */
+ int *nm_lst_nbr)                      /* I/O [nbr] Number of items in list */
+{
+  /* Purpose: Export list of variable names for group */
+
+  char var_nm[NC_MAX_NAME+1];      /* [sng] Variable name */ 
+
+  int nbr_var;                     /* [nbr] Number of variables */
+  int grp_id;                      /* [id] Group ID */
+
+  /* Get group ID */
+  (void)nco_inq_grp_full_ncid(nc_id,grp_nm_fll,&grp_id);
+  /* Obtain number of variable for group */
+  (void)nco_inq(grp_id,(int *)NULL,&nbr_var,(int *)NULL,(int *)NULL);
+
+  /* Allocate list */ 
+  (*nm_lst)=(char **)nco_malloc(nbr_var*sizeof(char *));
+
+  /* Iterate variables for this group */
+  for(int idx_var=0;idx_var<nbr_var;idx_var++){
+
+    /* Get variable name */
+    (void)nco_inq_var(grp_id,idx_var,var_nm,(nc_type *)NULL,(int *)NULL,(int *)NULL,(int *)NULL);
+
+    /* Add to list */ 
+    (*nm_lst)[idx_var]=(char *)strdup(var_nm);
+
+  } /* Iterate variables for this group */
+
+  *nm_lst_nbr=nbr_var;
+
+} /* end nco_grp_var_lst() */
+
+char *                                /* O [sng] Name of variable   */
+nco_var_has_cf                        /* [fnc] Variable has CF-compliant information ("coordinates" or "bounds") */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const trv_sct * const var_trv,       /* I [sct] Variable (object) */
+ const char * const cf_nm,            /* I [sng] CF convention ( "coordinates" or "bounds") */
+ nco_bool *flg_cf_fnd)                /* I/O [flg] CF variable was found */
+{
+  /* Detect associated coordinates specified by CF "bounds" or "coordinates" convention for single variable
+  http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#coordinate-system */ 
+
+  char **cf_lst;                /* [sng] 1D array of list elements */
+  char att_nm[NC_MAX_NAME];     /* [sng] Attribute name */
+  const char dlm_sng[]=" ";     /* [sng] Delimiter string */
+
+  int grp_id;                   /* [id] Group ID */
+  int nbr_att;                  /* [nbr] Number of attributes */
+  int nbr_cf;                   /* [nbr] Number of coordinates specified in "bounds" or "coordinates" attribute */
+  int var_id;                   /* [id] Variable ID */
+
+  assert(var_trv->nco_typ == nco_obj_typ_var);
+
+  /* Initialize return value */
+  *flg_cf_fnd=False;
+
+  /* Obtain group ID from netCDF API using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,var_trv->grp_nm_fll,&grp_id);
+
+  /* Obtain variable ID */
+  (void)nco_inq_varid(grp_id,var_trv->nm,&var_id);
+
+  /* Find number of attributes */
+  (void)nco_inq_varnatts(grp_id,var_id,&nbr_att);
+
+  assert(nbr_att == var_trv->nbr_att);
+
+  /* Loop attributes */
+  for(int idx_att=0;idx_att<nbr_att;idx_att++){
+
+    /* Get attribute name */
+    (void)nco_inq_attname(grp_id,var_id,idx_att,att_nm);
+
+    /* Is attribute part of CF convention? */
+    if(!strcmp(att_nm,cf_nm)){
+      char *att_val;
+      long att_sz;
+      nc_type att_typ;
+
+      *flg_cf_fnd=True;
+
+      /* Yes, get list of specified attributes */
+      (void)nco_inq_att(grp_id,var_id,att_nm,&att_typ,&att_sz);
+      if(att_typ != NC_CHAR){
+        (void)fprintf(stderr,"%s: WARNING \"%s\" attribute for variable %s is type %s, not %s. This violates CF convention for specifying additional attributes. Therefore will skip this attribute.\n",
+          nco_prg_nm_get(),att_nm,var_trv->nm_fll,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR));
+        return NULL;
+      } /* end if */
+      att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+      if(att_sz > 0L) (void)nco_get_att(grp_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+      /* NUL-terminate attribute */
+      att_val[att_sz]='\0';
+
+      /* Split list into separate coordinate names
+      Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+      cf_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_cf);
+      /* ...for each coordinate in CF convention attribute, i.e., "bounds" or "coordinate"... */
+      for(int idx_cf=0;idx_cf<nbr_cf;idx_cf++){
+        char *cf_lst_var=cf_lst[idx_cf];
+        if(!cf_lst_var) continue;
+      } /* end loop over idx_cf */
+
+      /* Return cf_lst_var, associated name (e.g "lat_bounds"). NB: Assumption only 1 associated name */
+      char *cf_lst_var=strdup(cf_lst[0]);
+
+      /* Free allocated memory */
+      att_val=(char *)nco_free(att_val);
+      cf_lst=nco_sng_lst_free(cf_lst,nbr_cf);
+
+      return cf_lst_var;
+
+    } /* end strcmp() */
+  } /* end loop over attributes */
+
+  return NULL;
+
+} /* nco_var_has_cf() */
+
+void                          
+nco_nm_skp                             /* [fnc] Extract list of variable names to skip for template definition  */
+(const int nc_id,                      /* I [ID] netCDF file ID */
+ const char * const grp_nm_fll,        /* I [sng] Group full name where all names reside */
+ const nco_cmn_t *cmn_lst,             /* I [sct] List of names (relative)  */
+ const int nbr_cmn_nm,                 /* I [nbr] Number of names (size of above array) */
+ nco_cmn_t **skp_lst,                  /* I/O [sct] List of skip names (full) */
+ int * nbr_skp_nm,                     /* I/O [nbr] Number of skip names (size of above array) */
+ const trv_tbl_sct * const trv_tbl)    /* I [sct] GTT (Group Traversal Table) */
+{
+  const char fnc_nm[]="nco_nm_skp()"; /* [sng] Function name */
+
+  char *var_nm_fll;  /* [sng] Variable full name */
+  char *var_cf;      /* [sng] Variable name that has 'CF' info */
+
+  int idx_skp;       /* [nbr] Counter for skip list */
+
+  nco_bool flg_cf;   /* [flg] Variable has 'CF' info */
+  nco_bool lst_ins;  /* [flg] Detect duplicate names in array */
+
+  trv_sct *var_trv;  /* [sct] Table object */
+
+  idx_skp=0;
+
+  /* Malloc possible maximum size */
+  (*skp_lst)=(nco_cmn_t *)nco_malloc(nbr_cmn_nm*sizeof(nco_cmn_t));
+
+  /* Loop input (relative) names */
+  for(int idx_var=0;idx_var<nbr_cmn_nm;idx_var++){
+
+    /* Define variable full name (NB: cmn_lst->var_nm_fll is relative here) */
+    var_nm_fll=nco_bld_nm_fll(grp_nm_fll,cmn_lst[idx_var].var_nm_fll);
+
+    /* Obtain variable GTT object using full variable name */
+    var_trv=trv_tbl_var_nm_fll(var_nm_fll,trv_tbl);
+
+    /* Avoid coordinate variables */ 
+    if (var_trv->is_crd_var == True){
+      /* Utility function to detect inserted names in a name list */
+      lst_ins=nco_lst_ins(var_nm_fll,*skp_lst,idx_skp);
+      /* Insert in list */
+      if (lst_ins == False){
+        (*skp_lst)[idx_skp].var_nm_fll=strdup(var_nm_fll);
+        idx_skp++;
+      } /* Insert in list */
+    } /* Avoid coordinate variables */ 
+
+    /* Avoid special "CF" variables ('bounds', 'coordinates') */ 
+    var_cf=nco_var_has_cf(nc_id,var_trv,"bounds",&flg_cf);
+    if (flg_cf == True){
+      /* Utility function to detect inserted names in a name list */
+      lst_ins=nco_lst_ins(var_nm_fll,*skp_lst,idx_skp);
+      /* Insert in list */
+      if (lst_ins == False){
+        (*skp_lst)[idx_skp].var_nm_fll=strdup(var_nm_fll);
+        idx_skp++;
+      } /* Insert in list */
+    } /* Avoid special "CF" variables ('bounds', 'coordinates') */ 
+
+    /* There is an associated 'CF" variable  */ 
+    if (var_cf){
+      /* Second Loop input (relative) names */
+      for(int idx_var_2=0;idx_var_2<nbr_cmn_nm;idx_var_2++){
+        /* Match (NB: cmn_lst->var_nm_fll is relative here) */
+        if(strcmp(var_cf,cmn_lst[idx_var_2].var_nm_fll) == 0){
+          char *var_nm_fll_2;  /* [sng] Variable full name */
+          var_nm_fll_2=nco_bld_nm_fll(grp_nm_fll,cmn_lst[idx_var_2].var_nm_fll);
+          /* Utility function to detect inserted names in a name list */
+          lst_ins=nco_lst_ins(var_nm_fll_2,*skp_lst,idx_skp);
+          /* Insert in list */
+          if (lst_ins == False){
+            (*skp_lst)[idx_skp].var_nm_fll=strdup(var_nm_fll_2);
+            idx_skp++;
+          } /* Insert in list */
+        } /* Match */
+      } /* Second Loop input (relative) names */
+      /* Free */
+      var_cf=(char *)nco_free(var_cf);
+    } /* There is an associated 'CF" variable  */ 
+
+    /* Free */
+    var_nm_fll=(char *)nco_free(var_nm_fll);
+
+  } /* Loop input (relative) names */
+
+  /* Re-Alloc */
+  (*skp_lst)=(nco_cmn_t *)nco_realloc((*skp_lst),idx_skp*sizeof(nco_cmn_t));
+
+  /* Export */
+  *nbr_skp_nm=idx_skp;
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)fprintf(stdout,"%s: DEBUG %s list of variables to skip for template definition\n",nco_prg_nm_get(),fnc_nm); 
+    for(int idx_var=0;idx_var<idx_skp;idx_var++) (void)fprintf(stdout,"%s: DEBUG %s <%s>\n",nco_prg_nm_get(),fnc_nm,(*skp_lst)[idx_var].var_nm_fll); 
+  }
+
+} /* nco_nm_skp() */
+
+void
+nco_bld_nsm                           /* [fnc] Build ensembles */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] Traversal table */
+{
+  /* Purpose: Build ensembles  */
+
+  const char fnc_nm[]="nco_bld_nsm()"; /* [sng] Function name */
+
+  char **nm_lst_1;                     /* [sng] List of names */
+  char **nm_lst_2;                     /* [sng] List of names */
+
+  int nm_lst_1_nbr;                    /* [nbr] Number of items in list */
+  int nm_lst_2_nbr;                    /* [nbr] Number of items in list */
+  int nbr_cmn_nm;                      /* [nbr] Number of common entries */
+  int nbr_nm;                          /* [nbr] Number of total entries */
+  int nbr_skp_nm;                      /* [nbr] Number of names to avoid for template definition (array skp_lst) */
+  int nsm_nbr=0;                       /* [nbr] Ensemble counter */
+
+  nco_bool flg_nsm_tpl;                /* [flg] Variable is template */           
+
+  nco_cmn_t *cmn_lst=NULL;             /* [sct] A list of common names */ 
+  nco_cmn_t *skp_lst=NULL;             /* [sct] A list of skip ('skp') names (NB: using same sct as common names, with different meaning) */ 
+
+  /* Insert ensembles (parent group name is key)  */
+
+  /* Loop table  */
+  for(unsigned idx_tbl_1=0;idx_tbl_1<trv_tbl->nbr;idx_tbl_1++){
+    trv_sct trv_1=trv_tbl->lst[idx_tbl_1];
+    /* Group (not root, with variables) */
+    if(trv_1.nco_typ == nco_obj_typ_grp && trv_1.grp_dpt > 0 && trv_1.nbr_var > 0){     
+      /* Export list of variable names for group */
+      (void)nco_grp_var_lst(nc_id,trv_1.grp_nm_fll,&nm_lst_1,&nm_lst_1_nbr);
+
+      if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: DEBUG %s looking for ensembles for <%s>\n",nco_prg_nm_get(),fnc_nm,trv_1.nm_fll);
+
+      /* Loop table  */
+      for(unsigned idx_tbl_2=0;idx_tbl_2<trv_tbl->nbr;idx_tbl_2++){
+        trv_sct trv_2=trv_tbl->lst[idx_tbl_2];
+
+        /* Same depth, same number of variables, same parent group */
+        if(trv_1.nco_typ == nco_obj_typ_grp && 
+          trv_1.grp_dpt == trv_2.grp_dpt && 
+          trv_1.nbr_var == trv_2.nbr_var &&
+          strcmp(trv_1.grp_nm_fll_prn,trv_2.grp_nm_fll_prn) == 0){
+
+            /* Assume not yet inserted in array */
+            nco_bool flg_ins=False;
+            /* Loop constructed array to see if already inserted  */
+            for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){        
+              /* Match */
+              if(strcmp(trv_tbl->nsm[idx_nsm].grp_nm_fll_prn,trv_2.grp_nm_fll_prn) == 0){
+                /* Mark as inserted in array */
+                flg_ins=True;
+                break;
+              }  /* Match */
+            } /* Loop constructed array to see if already inserted  */
+
+            /* Export list of variable names for group */
+            (void)nco_grp_var_lst(nc_id,trv_2.grp_nm_fll,&nm_lst_2,&nm_lst_2_nbr);
+            /* Match 2 lists of variable names and export common names */
+            (void)nco_nm_mch(nm_lst_1,nm_lst_1_nbr,nm_lst_2,nm_lst_2_nbr,&cmn_lst,&nbr_nm,&nbr_cmn_nm);
+            /* Found common names */
+            if (nbr_cmn_nm && nm_lst_1_nbr == nm_lst_2_nbr && nm_lst_1_nbr == nbr_cmn_nm && !flg_ins){
+              trv_tbl->nsm_nbr++;
+              trv_tbl->nsm=(nsm_sct *)nco_realloc(trv_tbl->nsm,trv_tbl->nsm_nbr*sizeof(nsm_sct));
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].mbr_nbr=0;
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].mbr=NULL;
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].grp_nm_fll_prn=(char *)strdup(trv_2.grp_nm_fll_prn);
+
+              /* Variable ensemble members */
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].mbr_var_nbr=0;
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].var_mbr_fll=NULL;
+
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].grp_mbr_fll=NULL;
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].mbr_srt=0;
+              trv_tbl->nsm[trv_tbl->nsm_nbr-1].mbr_end=0;
+
+              /* Group (NB: outer loop) is ensemble parent group */
+              trv_tbl->lst[idx_tbl_1].flg_nsm_prn=True;
+
+              if(nco_dbg_lvl_get() == nco_dbg_old){
+                (void)fprintf(stdout,"%s: DEBUG %s inserted ensemble for <%s>\n",nco_prg_nm_get(),fnc_nm,trv_2.grp_nm_fll_prn);             
+              }
+
+            } /* Found common names */
+
+            /* Free list 2 */
+            for(int idx_nm=0;idx_nm<nm_lst_2_nbr;idx_nm++) nm_lst_2[idx_nm]=(char *)nco_free(nm_lst_2[idx_nm]);
+            nm_lst_2=(char **)nco_free(nm_lst_2);
+
+        } /* Same depth, same number of variables */
+      } /* Loop table  */
+
+      /* Free list 1 */
+      for(int idx_nm=0;idx_nm<nm_lst_1_nbr;idx_nm++) nm_lst_1[idx_nm]=(char *)nco_free(nm_lst_1[idx_nm]);
+      nm_lst_1=(char **)nco_free(nm_lst_1);
+
+    }  /* Group (not root) */
+  } /* Loop table */
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)fprintf(stdout,"%s: DEBUG %s list of ensembles\n",nco_prg_nm_get(),fnc_nm); 
+    for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){
+      (void)fprintf(stdout,"%s: DEBUG %s <%s>\n",nco_prg_nm_get(),fnc_nm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+    } 
+  }
+
+  /* Insert names in ensembles */
+
+  /* Loop table  */
+  for(unsigned idx_tbl_1=0;idx_tbl_1<trv_tbl->nbr;idx_tbl_1++){
+    trv_sct trv_1=trv_tbl->lst[idx_tbl_1];
+    /* Group (not root, with variables) */
+    if(trv_1.nco_typ == nco_obj_typ_grp && trv_1.grp_dpt > 0 && trv_1.nbr_var > 0){
+      /* Export list of variable names for group */
+      (void)nco_grp_var_lst(nc_id,trv_1.grp_nm_fll,&nm_lst_1,&nm_lst_1_nbr);
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: DEBUG %s looking for ensembles for <%s>\n",nco_prg_nm_get(),fnc_nm,trv_1.nm_fll);             
+      }
+
+      /* Loop table  */
+      for(unsigned idx_tbl_2=0;idx_tbl_2<trv_tbl->nbr;idx_tbl_2++){
+        trv_sct trv_2=trv_tbl->lst[idx_tbl_2];
+
+        /* Same depth, same number of variables, same parent group */
+        if(trv_1.nco_typ == nco_obj_typ_grp && 
+          trv_1.grp_dpt == trv_2.grp_dpt && 
+          trv_1.nbr_var == trv_2.nbr_var &&
+          strcmp(trv_1.grp_nm_fll_prn,trv_2.grp_nm_fll_prn) == 0){
+
+            /* Export list of variable names for group */
+            (void)nco_grp_var_lst(nc_id,trv_2.grp_nm_fll,&nm_lst_2,&nm_lst_2_nbr);
+
+            /* Match 2 lists of variable names and export common names (NB: relative names) */
+            (void)nco_nm_mch(nm_lst_1,nm_lst_1_nbr,nm_lst_2,nm_lst_2_nbr,&cmn_lst,&nbr_nm,&nbr_cmn_nm);
+
+            /* Found common names */
+            if (nbr_cmn_nm && nm_lst_1_nbr == nm_lst_2_nbr && nm_lst_1_nbr == nbr_cmn_nm){
+
+              /* Define a list of variables to avoid for template definition */
+              (void)nco_nm_skp(nc_id,trv_2.grp_nm_fll,cmn_lst,nbr_cmn_nm,&skp_lst,&nbr_skp_nm,trv_tbl);    
+
+              /* Assume not yet inserted in array */
+              nco_bool flg_ins=False;
+              /* Loop constructed array to see if already inserted (NB: to nsm_nbr)  */
+              for(int idx_nsm=0;idx_nsm<nsm_nbr;idx_nsm++){
+                /* Loop members */
+                for(int idx_mbr=0;idx_mbr<trv_tbl->nsm[idx_nsm].mbr_nbr;idx_mbr++){
+                  /* Match */
+                  if(strcmp(trv_tbl->nsm[idx_nsm].mbr[idx_mbr].mbr_nm_fll,trv_2.grp_nm_fll) == 0){
+                    /* Mark as inserted in array */
+                    flg_ins=True;
+                    break;
+                  }  /* Match */
+                } /* Loop names */
+              } /* Loop constructed array to see if already inserted  */
+
+              /* Not inserted */
+              if (!flg_ins){
+                int mbr_nbr=trv_tbl->nsm[nsm_nbr].mbr_nbr;
+                trv_tbl->nsm[nsm_nbr].mbr_nbr++;
+                trv_tbl->nsm[nsm_nbr].mbr=(nsm_grp_sct *)nco_realloc(trv_tbl->nsm[nsm_nbr].mbr,(mbr_nbr+1)*sizeof(nsm_grp_sct));
+                trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].mbr_nm_fll=(char *)strdup(trv_2.grp_nm_fll);
+                trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nbr=0;
+                trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nm_fll=NULL;
+
+                trv_tbl->nsm[nsm_nbr].grp_mbr_fll=(char **)nco_realloc(trv_tbl->nsm[nsm_nbr].grp_mbr_fll,(mbr_nbr+1)*sizeof(char *));
+                trv_tbl->nsm[nsm_nbr].grp_mbr_fll[mbr_nbr]=(char *)strdup(trv_2.grp_nm_fll);
+
+                /* Update offsets */
+                trv_tbl->nsm[nsm_nbr].mbr_srt=0;
+                trv_tbl->nsm[nsm_nbr].mbr_end=trv_tbl->nsm[nsm_nbr].mbr_nbr;
+
+                /* Mark variables as ensemble members */
+                for(int idx_var=0;idx_var<nbr_cmn_nm;idx_var++){
+
+                  /* Define variable full name (NB: cmn_lst->var_nm_fll is relative here) */
+                  char *var_nm_fll=nco_bld_nm_fll(trv_2.grp_nm_fll,cmn_lst[idx_var].var_nm_fll);
+              
+                  /* Template criteria: check the names to skip built above in nco_nm_skp() */
+                  flg_nsm_tpl=True;
+                  /* Loop skip names */
+                  for(int idx_skp=0;idx_skp<nbr_skp_nm;idx_skp++){
+                    /* Match */
+                    if(strcmp(var_nm_fll,skp_lst[idx_skp].var_nm_fll) == 0){
+                      flg_nsm_tpl=False;
+                    }  /* Match */
+                  } /* Loop skip  names */
+
+                  /* Ensemble members. Meaning here is "template" as "member" TODO */
+                  if(flg_nsm_tpl){
+                    int mbr_var_nbr=trv_tbl->nsm[nsm_nbr].mbr_var_nbr;
+                    trv_tbl->nsm[nsm_nbr].var_mbr_fll=(char **)nco_realloc(trv_tbl->nsm[nsm_nbr].var_mbr_fll,(mbr_var_nbr+1)*sizeof(char *));
+                    trv_tbl->nsm[nsm_nbr].var_mbr_fll[mbr_var_nbr]=(char *)strdup(var_nm_fll);
+                    trv_tbl->nsm[nsm_nbr].mbr_var_nbr++;
+
+                    /* Mark group as emsemble member (NB: loop 2) */
+                    trv_tbl->lst[idx_tbl_2].flg_nsm_mbr=True;
+
+                    /* If not the first group member, then it's not a template */
+                    if(mbr_nbr > 0) flg_nsm_tpl=False;
+
+                    /* Mark ensemble member flag in table for "var_nm_fll" real member */
+                    (void)trv_tbl_mrk_nsm_mbr(var_nm_fll,flg_nsm_tpl,trv_1.grp_nm_fll_prn,trv_tbl); 
+
+                  } /* Ensemble members */             
+
+                  /* Insert variable in table ensemble struct */
+                  trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nbr++;
+                  trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nm_fll=(char **)nco_realloc(trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nm_fll,trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nbr*sizeof(char *));
+                  trv_tbl->nsm[nsm_nbr].mbr[mbr_nbr].var_nm_fll[idx_var]=(char *)strdup(var_nm_fll);
+                  
+                  if(nco_dbg_lvl_get() == nco_dbg_old){
+                    (void)fprintf(stdout,"%s: DEBUG %s inserted ensemble variable <%s> as template %d\n",nco_prg_nm_get(),fnc_nm,var_nm_fll,flg_nsm_tpl);             
+                  }
+                  /* Free */
+                  var_nm_fll=(char *)nco_free(var_nm_fll);
+
+                } /* Mark variables as ensemble members */
+              } /* Not inserted */
+            } /* Found common names */
+
+            /* Free list 2 */
+            for(int idx_nm=0;idx_nm<nm_lst_2_nbr;idx_nm++) nm_lst_2[idx_nm]=(char *)nco_free(nm_lst_2[idx_nm]);
+            nm_lst_2=(char **)nco_free(nm_lst_2);
+
+        } /* Same depth, same number of variables */
+      } /* Loop table  */
+
+      /* Free list 1 */
+      for(int idx_nm=0;idx_nm<nm_lst_1_nbr;idx_nm++) nm_lst_1[idx_nm]=(char *)nco_free(nm_lst_1[idx_nm]);
+      nm_lst_1=(char **)nco_free(nm_lst_1);
+
+      /* Increase number of ensembles */
+      if(trv_1.flg_nsm_prn) nsm_nbr++;
+
+    }  /* Group (not root) */
+  } /* Loop table */ 
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){
+    (void)fprintf(stdout,"%s: DEBUG %s list of ensembles\n",nco_prg_nm_get(),fnc_nm); 
+    for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){
+      (void)fprintf(stdout,"%s: DEBUG %s <%s>\n",nco_prg_nm_get(),fnc_nm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+    } 
+  }
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){
+    (void)fprintf(stdout,"%s: DEBUG %s list of templates\n",nco_prg_nm_get(),fnc_nm); 
+    int idx_tpl=0;
+    for(unsigned uidx=0;uidx<trv_tbl->nbr;uidx++){
+      if(trv_tbl->lst[uidx].flg_nsm_tpl){
+        (void)fprintf(stdout,"%s: DEBUG %s <template> %d <%s>\n",nco_prg_nm_get(),fnc_nm,idx_tpl,trv_tbl->lst[uidx].nm_fll); 
+        idx_tpl++;
+      }
+    }
+  }
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){
+    (void)fprintf(stdout,"%s: DEBUG %s list of ensemble members\n",nco_prg_nm_get(),fnc_nm); 
+    for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){
+      (void)fprintf(stdout,"%s: DEBUG %s <ensemble %d> <%s>\n",nco_prg_nm_get(),fnc_nm,idx_nsm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+      for(int idx_mbr=0;idx_mbr<trv_tbl->nsm[idx_nsm].mbr_nbr;idx_mbr++){
+        (void)fprintf(stdout,"%s: DEBUG %s \t <member %d> <%s>\n",nco_prg_nm_get(),fnc_nm,idx_mbr,trv_tbl->nsm[idx_nsm].grp_mbr_fll[idx_mbr]); 
+      }
+    }
+  }
+
+  assert(nsm_nbr == trv_tbl->nsm_nbr);
+} /* nco_bld_nsm() */
+
+void
+nco_nsm_ncr                           /* [fnc] Increase ensembles (more than 1 file cases) */
+(const int nc_id,                     /* I [id] netCDF file ID ( new file ) */
+ trv_tbl_sct * const trv_tbl)         /* I/O [sct] Traversal table */
+{
+  const char fnc_nm[]="nco_nsm_ncr()"; /* [sng] Function name */
+
+  char **nm_lst_1;    /* [sng] List of names */
+  char *grp_nm_fll;   /* I [sng] Full group name */
+  char *grp_nm;       /* I [sng] Group name */
+
+  int nm_lst_1_nbr;   /* [nbr] Number of items in list */
+  int grp_id;         /* [id] Group ID */
+  int nbr_grp;        /* [nbr] Number of sub-groups */
+  int *grp_ids;       /* [id] Sub-group IDs array */
+  int mbr_srt;        /* [nbr] Offset */
+
+  size_t grp_nm_lng;  /* [nbr] Group name lenght */
+
+  trv_sct *var_trv;   /* [sct] Variable GTT object */
+
+  /* Loop over ensembles in table */
+  for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){ 
+
+    /* Update offsets */
+    mbr_srt=trv_tbl->nsm[idx_nsm].mbr_end;
+    trv_tbl->nsm[idx_nsm].mbr_srt=mbr_srt;
+
+    if(nco_dbg_lvl_get() >= nco_dbg_dev){
+      (void)fprintf(stdout,"%s: DEBUG <ensemble %d> <%s>\n",nco_prg_nm_get(),idx_nsm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+    }
+
+    /* Obtain group ID of current ensemble using full group name */
+    (void)nco_inq_grp_full_ncid(nc_id,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn,&grp_id);
+
+    /* Get number of sub-groups */
+    (void)nco_inq_grps(grp_id,&nbr_grp,(int *)NULL);
+    grp_ids=(int *)nco_malloc(nbr_grp*sizeof(int)); 
+    (void)nco_inq_grps(grp_id,(int *)NULL,grp_ids);
+
+    /* Loop sub-groups */
+    for(int idx_grp=0;idx_grp<nbr_grp;idx_grp++){ 
+
+      /* Get group name lenght */
+      (void)nco_inq_grpname_len(grp_ids[idx_grp],&grp_nm_lng);
+      grp_nm=(char *)nco_malloc(grp_nm_lng+1L);
+
+      /* Get group name */
+      (void)nco_inq_grpname(grp_ids[idx_grp],grp_nm);
+
+      /* Construct full name  */
+      grp_nm_fll=(char *)nco_malloc(grp_nm_lng+strlen(trv_tbl->nsm[idx_nsm].grp_nm_fll_prn)+2L);
+      strcpy(grp_nm_fll,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+      strcat(grp_nm_fll,"/");
+      strcat(grp_nm_fll,grp_nm);
+
+      /* Export list of variable names for group */
+      (void)nco_grp_var_lst(nc_id,grp_nm_fll,&nm_lst_1,&nm_lst_1_nbr);
+
+      /* Loop variables in group */
+      for(int idx_var=0;idx_var<nm_lst_1_nbr;idx_var++){ 
+
+        /* Loop over members (variables) of old ensemble (NB: Assumption, same number of variables for new ensembles) */
+        for(int idx_mbr=0;idx_mbr<trv_tbl->nsm[idx_nsm].mbr_var_nbr;idx_mbr++){
+
+          /* Obtain variable GTT object for the member variable in ensemble */ 
+          var_trv=trv_tbl_var_nm_fll(trv_tbl->nsm[idx_nsm].var_mbr_fll[idx_mbr],trv_tbl);
+
+          /* Match relative name  */
+          if(strcmp(nm_lst_1[idx_var],var_trv->nm) == 0){
+
+            /* Build new variable name */
+            char *var_nm_fll=nco_bld_nm_fll(grp_nm_fll,nm_lst_1[idx_var]);
+
+            /* Variable ensemble members */
+            int mbr_var_nbr=trv_tbl->nsm[idx_nsm].mbr_var_nbr;          
+            trv_tbl->nsm[idx_nsm].mbr_var_nbr++;   
+            trv_tbl->nsm[idx_nsm].var_mbr_fll=(char **)nco_realloc(trv_tbl->nsm[idx_nsm].var_mbr_fll,(mbr_var_nbr+1)*sizeof(char *));
+            trv_tbl->nsm[idx_nsm].var_mbr_fll[mbr_var_nbr]=(char *)strdup(var_nm_fll);
+
+            /* Groups ensemble members */
+
+            /* We detected variables, for groups detect duplicate insertions */
+
+            /* Assume not yet inserted in array */
+            nco_bool flg_ins=False;
+
+            /* Loop constructed array to see if already inserted  */
+            for(int idx_mbr1=0;idx_mbr1<trv_tbl->nsm[idx_nsm].mbr_nbr;idx_mbr1++){
+              /* Match */
+              if(strcmp(trv_tbl->nsm[idx_nsm].grp_mbr_fll[idx_mbr1],grp_nm_fll) == 0){
+                /* Mark as inserted in array */
+                flg_ins=True;
+                break;
+              }  /* Match */
+            } /* Loop constructed array to see if already inserted  */
+
+            /* Not inserted */
+            if (!flg_ins){
+              int mbr_nbr=trv_tbl->nsm[idx_nsm].mbr_nbr;
+              trv_tbl->nsm[idx_nsm].grp_mbr_fll=(char **)nco_realloc(trv_tbl->nsm[idx_nsm].grp_mbr_fll,(mbr_nbr+1)*sizeof(char *));
+              trv_tbl->nsm[idx_nsm].grp_mbr_fll[mbr_nbr]=(char *)strdup(grp_nm_fll);
+              trv_tbl->nsm[idx_nsm].mbr_nbr++; 
+              /* Update offsets */
+              trv_tbl->nsm[idx_nsm].mbr_end=trv_tbl->nsm[idx_nsm].mbr_nbr;
+            } /* Not inserted */
+
+            var_nm_fll=(char *)nco_free(var_nm_fll);
+            /* Found, exit loop of old ensemble */
+            break;
+          } /* Match relative name  */
+        } /* Loop old ensemble */
+      } /* Loop variables in group */
+
+      /* Free list */
+      for(int idx_nm=0;idx_nm<nm_lst_1_nbr;idx_nm++) nm_lst_1[idx_nm]=(char *)nco_free(nm_lst_1[idx_nm]);
+      nm_lst_1=(char **)nco_free(nm_lst_1);
+      grp_nm_fll=(char *)nco_free(grp_nm_fll);
+
+    } /* Loop sub-groups */
+
+    /* Clean up memory */
+    grp_ids=(int *)nco_free(grp_ids);
+
+  } /* Loop over ensembles in table */
+
+  if(nco_dbg_lvl_get() >= nco_dbg_dev){
+    (void)fprintf(stdout,"%s: DEBUG %s list of ensemble members\n",nco_prg_nm_get(),fnc_nm); 
+    for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){
+      (void)fprintf(stdout,"%s: DEBUG %s <ensemble %d> <%s>\n",nco_prg_nm_get(),fnc_nm,idx_nsm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+      for(int idx_mbr=0;idx_mbr<trv_tbl->nsm[idx_nsm].mbr_nbr;idx_mbr++){
+        (void)fprintf(stdout,"%s: DEBUG %s \t <member %d> <%s>\n",nco_prg_nm_get(),fnc_nm,idx_mbr,trv_tbl->nsm[idx_nsm].grp_mbr_fll[idx_mbr]); 
+      }
+    }
+  }
 
-  *grp_nbr_xtr=grp_nbr_tmp;    
-  return grp_lst;
-} /* end nco_grp_lst_mk() */
+} /* nco_nsm_ncr() */
diff --git a/src/nco/nco_grp_utl.h b/src/nco/nco_grp_utl.h
index 21936be..6a5b8c7 100644
--- a/src/nco/nco_grp_utl.h
+++ b/src/nco/nco_grp_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_grp_utl.h,v 1.10 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_grp_utl.h,v 1.418 2013/12/02 20:14:50 zender Exp $ */
 
 /* Purpose: Group utilities */
 
-/* Copyright (C) 2011--2012 Charlie Zender
+/* Copyright (C) 2011--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -17,21 +17,28 @@
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard header files */
+#include <assert.h> /* assert() */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
 #include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
-#ifdef _OPENMP
-#include <omp.h> /* OpenMP pragmas */
-#endif /* !_OPENMP */
 
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
+#include "nco_att_utl.h" /* Attribute utilities */
+#include "nco_aux.h" /* Auxiliary coordinates */
+#include "nco_cnf_dmn.h" /* Conform dimensions */
+#include "nco_cnk.h" /* Chunking */
 #include "nco_ctl.h" /* Program flow control functions */
+#include "nco_grp_trv.h" /* Group traversal */
 #include "nco_mmr.h" /* Memory management */
+#include "nco_msa.h" /* Multi-slabbing algorithm */
+#include "nco_prn.h" /* Print variables, attributes, metadata */
+#include "nco_var_lst.h" /* Variable list utilities */
+#include "nco_cnv_csm.h" /* CCM/CCSM/CF conventions */
 
 /* Dynamic array implementation of group stack */
 typedef struct {
@@ -43,89 +50,658 @@ typedef struct {
 extern "C" {
 #endif /* __cplusplus */
 
-int /* [rcd] Return code */
-nco_inq_grps_full /* [fnc] Discover and return IDs of apex and all sub-groups */
-(const int grp_id, /* I [ID] Apex group */
- int * const grp_nbr, /* O [nbr] Number of groups */
- int * const grp_ids); /* O [ID] Group IDs of children */
-  /* end nco_inq_grps_full() */
+nm_id_sct *                           /* O [sct] Extraction list */  
+nco_trv_tbl_nm_id                     /* [fnc] Create extraction list of nm_id_sct from traversal table */
+(const int nc_id_in,                  /* I [ID] netCDF input file ID */
+ const int nc_id_out,                 /* I [ID] netCDF output file ID */
+ const gpe_sct * const gpe,           /* I [sct] GPE structure */
+ int * const xtr_nbr,                 /* I/O [nbr] Number of variables in extraction list */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] Traversal table */
 
 void
-nco_grp_itr_free /* [fnc] Free group iterator */
-(grp_stk_sct * const grp_stk); /* O [sct] Group stack pointer */
+nco_flg_set_grp_var_ass               /* [fnc] Set flags for groups and variables associated with matched object */
+(const char * const grp_nm_fll,       /* I [sng] Full name of group */
+ const nco_obj_typ obj_typ,           /* I [enm] Object type (group or variable) */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+ 
+int                                   /* O [rcd] Return code */
+nco_def_grp_full                      /* [fnc] Ensure all components of group path are defined */
+(const int nc_id,                     /* I [ID] netCDF output-file ID */
+ const char * const grp_nm_fll,       /* I [sng] Full group name */
+ int * const grp_out_id);             /* O [ID] Deepest group ID */
 
-int /* [rcd] Return code */
-nco_grp_stk_get /* [fnc] Initialize and obtain group iterator */
-(const int grp_id, /* I [ID] Apex group */
- grp_stk_sct ** const grp_stk); /* O [sct] Group stack pointer */
-  /* end nco_grp_stk_get() */
+int                                   /* [rcd] Return code */
+nco_inq_grps_full                     /* [fnc] Discover and return IDs of apex and all sub-groups */
+(const int grp_id,                    /* I [ID] Apex group */
+ int * const grp_nbr,                 /* O [nbr] Number of groups */
+ int * const grp_ids);                /* O [ID] Group IDs of children */
 
-int /* [rcd] Return code */
-nco_grp_stk_nxt /* [fnc] Find and return next group ID */
-(grp_stk_sct * const grp_stk, /* O [sct] Group stack pointer */
- int * const grp_id); /* O [ID] Group ID */
-  /* end nco_grp_stk_nxt() */
+void
+nco_grp_itr_free                      /* [fnc] Free group iterator */
+(grp_stk_sct * const grp_stk);        /* O [sct] Group stack pointer */
+
+int                                   /* [rcd] Return code */
+nco_grp_stk_get                       /* [fnc] Initialize and obtain group iterator */
+(const int grp_id,                    /* I [ID] Apex group */
+ grp_stk_sct ** const grp_stk);       /* O [sct] Group stack pointer */
 
-grp_stk_sct * /* O [sct] Group stack pointer */
-nco_grp_stk_ntl /* [fnc] Initialize group stack */
+int                                   /* [rcd] Return code */
+nco_grp_stk_nxt                       /* [fnc] Find and return next group ID */
+(grp_stk_sct * const grp_stk,         /* O [sct] Group stack pointer */
+ int * const grp_id);                 /* O [ID] Group ID */
+   
+grp_stk_sct *                        /* O [sct] Group stack pointer */
+nco_grp_stk_ntl                      /* [fnc] Initialize group stack */
 (void); 
-  /* end nco_grp_stk_ntl() */
-
-void
-nco_grp_stk_psh /* [fnc] Push group ID onto stack */
-(grp_stk_sct * const grp_stk, /* I/O [sct] Group stack pointer */
- const int grp_id); /* I [ID] Group ID to push */
-  /* end nco_grp_stk_psh() */
-
-int /* O [ID] Group ID that was popped */
-nco_grp_stk_pop /* [fnc] Remove and return group ID from stack */
-(grp_stk_sct * const grp_stk); /* I/O [sct] Group stack pointer */
-  /* end nco_grp_stk_pop() */
-
-void
-nco_grp_stk_free /* [fnc] Free group stack */
-(grp_stk_sct * const grp_stk); /* O [sct] Group stack pointer */
-/* end nco_grp_stk_free() */
-
-int /* [rcd] Return code */
-nco4_inq /* [fnc] Find and return global totals of dimensions, variables, attributes */
-(const int nc_id, /* I [ID] Apex group */
- int * const att_nbr_glb, /* O [nbr] Number of global attributes in file */
- int * const dmn_nbr_all, /* O [nbr] Number of dimensions in file */
- int * const var_nbr_all, /* O [nbr] Number of variables in file */
- int * const rec_dmn_nbr, /* O [nbr] Number of record dimensions in file */
- int * const rec_dmn_ids); /* O [ID] Record dimension IDs in file */
-/* end nco4_inq() */
-
-nm_id_sct * /* O [sct] Variable extraction list */
-nco4_var_lst_mk /* [fnc] Create variable extraction list using regular expressions */
-(const int nc_id,  /* I [enm] netCDF group ID (root ID of input file) */
- int * const nbr_var_fl, /* O [nbr] Number of variables in input file */
- char * const * const var_lst_in, /* I [sng] User-specified list of variable names and rx's */
- const nco_bool EXCLUDE_INPUT_LIST, /* I [flg] Exclude rather than extract */
- const nco_bool EXTRACT_ALL_COORDINATES, /* I [flg] Process all coordinates */
- int * const var_nbr_xtr); /* I/O [nbr] Number of variables in current extraction list */
-  /* nco4_var_lst_mk() */
-
-nm_id_sct * /* O [sct] Group extraction list */
-nco_grp_lst_mk /* [fnc] Create group extraction list using regular expressions */
-(const int nc_id, /* I [enm] netCDF file ID */
- char * const * const grp_lst_in, /* I [sng] User-specified list of group names and rx's */
- const nco_bool EXCLUDE_INPUT_LIST, /* I [flg] Exclude rather than extract */
- int * const grp_nbr); /* I/O [nbr] Number of groups in current extraction list */
-
-int /* [rcd] Return code */
-nco_grp_dfn /* [fnc] Define groups in output file */
-(const int out_id, /* I [enm] netCDF output-file ID */
- nm_id_sct *grp_xtr_lst, /* [grp] Number of groups to be defined */
- const int grp_nbr); /* I [nbr] Number of groups to be defined */
-
-int /* [rcd] Return code */
-nco_def_grp_rcr
-(const int in_id, /* I [enm] netCDF input-file ID */
- const int out_id, /* I [enm] netCDF output-file ID */
- const char * const prn_nm, /* I [sng] Parent group name */
- const int rcr_lvl); /* I [nbr] Recursion level */
+
+void
+nco_grp_stk_psh                      /* [fnc] Push group ID onto stack */
+(grp_stk_sct * const grp_stk,        /* I/O [sct] Group stack pointer */
+ const int grp_id);                  /* I [ID] Group ID to push */
+
+int                                  /* O [ID] Group ID that was popped */
+nco_grp_stk_pop                      /* [fnc] Remove and return group ID from stack */
+(grp_stk_sct * const grp_stk);       /* I/O [sct] Group stack pointer */
+   
+void
+nco_grp_stk_free                     /* [fnc] Free group stack */
+(grp_stk_sct * const grp_stk);       /* O [sct] Group stack pointer */
+ 
+int                                  /* [rcd] Return code */
+nco_grp_dfn                          /* [fnc] Define groups in output file */
+(const int out_id,                   /* I [ID] netCDF output-file ID */
+ nm_id_sct *grp_xtr_lst,             /* [grp] Number of groups to be defined */
+ const int grp_nbr);                 /* I [nbr] Number of groups to be defined */
+
+int                                  /* [rcd] Return code */
+nco_def_grp_rcr                      /* [fnc] Define groups */
+(const int in_id,                    /* I [ID] netCDF input-file ID */
+ const int out_id,                   /* I [ID] netCDF output-file ID */
+ const char * const prn_nm,          /* I [sng] Parent group name */
+ const int rcr_lvl);                 /* I [nbr] Recursion level */
+
+int
+nco_get_sls_chr_cnt                   /* [fnc] Get number of slash characterrs in a string path  */
+(char * const nm_fll);                /* I [sct] Full name  */
+
+int
+nco_get_sng_pth_sct                   /* [fnc] Get string path structure  */
+(char * const nm_fll,                 /* I [sng] Full name  */ 
+ sng_pth_sct ***str_pth_lst);         /* I/O [sct] List of path components  */  
+
+void
+nco_prt_grp_nm_fll                   /* [fnc] Debug function to print group full name from ID */
+(const int grp_id);                  /* I [ID] Group ID */
+
+nco_bool                             /* O [flg] All user-specified names are in file */
+nco_xtr_mk                           /* [fnc] Check -v and -g input names and create extraction list */
+(char **grp_lst_in,                  /* I [sng] User-specified list of groups */
+ const int grp_xtr_nbr,              /* I [nbr] Number of groups in list */
+ char **var_lst_in,                  /* I [sng] User-specified list of variables */
+ const int var_xtr_nbr,              /* I [nbr] Number of variables in list */
+ const nco_bool EXTRACT_ALL_COORDINATES,  /* I [flg] Process all coordinates */ 
+ const nco_bool flg_unn,             /* I [flg] Select union of specified groups and variables */
+ trv_tbl_sct * const trv_tbl);       /* I/O [sct] Traversal table */
+
+void
+nco_xtr_xcl                          /* [fnc] Convert extraction list to exclusion list */
+(trv_tbl_sct * const trv_tbl);       /* I/O [sct] Traversal table */
+
+void
+nco_xtr_crd_add                       /* [fnc] Add all coordinates to extraction list */
+(trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_xtr_cf_add                        /* [fnc] Add to extraction list variable associated with CF convention */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const char * const cf_nm,            /* I [sng] CF convention ("coordinates" or "bounds") */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_xtr_cf_prv_add                    /* [fnc] Add specified CF-compliant coordinates of specified variable to extraction list */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const trv_sct * const var_trv,       /* I [sct] Variable (object) */
+ const char * const cf_nm,            /* I [sng] CF convention ( "coordinates" or "bounds") */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void 
+nco_prn_att_trv                       /* [fnc] Print all attributes of single variable */
+(const int in_id,                     /* I [id] netCDF input file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void
+nco_xtr_crd_ass_add                   /* [fnc] Add to extraction list all coordinates associated with extracted variables */
+(const int nc_id,                     /* I netCDF file ID */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_get_prg_info(void);               /* [fnc] Get program info */
+
+void
+nco_prn_xtr_mtd                       /* [fnc] Print variable metadata (called with PRN_VAR_METADATA) */
+(const int nc_id,                     /* I netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void 
+nco_xtr_lst_prn                        /* [fnc] Print name-ID structure list */
+(nm_id_sct * const nm_id_lst,          /* I [sct] Name-ID structure list */
+ const int nm_id_nbr);                 /* I [nbr] Number of name-ID structures in list */
+
+void                          
+nco_prt_dmn                           /* [fnc] Print dimensions for a group  */
+(const int nc_id,                     /* I [ID] File ID */
+ const char * const grp_nm_fll);      /* I [sng] Full name of group */
+
+void
+nco_prn_xtr_val                       /* [fnc] Print variable data (called with PRN_VAR_DATA) */
+(const int nc_id,                     /* I netCDF file ID */
+ prn_fmt_sct * const prn_flg,         /* I/O [sct] Print formatting flags */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+int                                   /* O [nbr] Number of matches to current rx */
+nco_trv_rx_search                     /* [fnc] Search for pattern matches in traversal table */
+(const char * const rx_sng,           /* I [sng] Regular expression pattern */
+ const nco_obj_typ obj_typ,           /* I [enm] Object type (group or variable) */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_xtr_dmn_mrk                      /* [fnc] Mark extracted dimensions */
+(trv_tbl_sct * const trv_tbl);       /* I/O [sct] GTT (Group Traversal Table) */
+
+void
+nco_xtr_grp_mrk                      /* [fnc] Mark extracted groups */
+(trv_tbl_sct * const trv_tbl);       /* I/O [sct] GTT (Group Traversal Table) */
+
+void
+nco_xtr_dfn                           /* [fnc] Define extracted groups, variables, and attributes in output file */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const int nc_out_id,                 /* I [ID] netCDF output file ID */
+ int * const cnk_map_ptr,             /* I [enm] Chunking map */
+ int * const cnk_plc_ptr,             /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,             /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                   /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                   /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,           /* I [sng] GPE structure */
+ const md5_sct * const md5,           /* I [sct] MD5 configuration */
+ const nco_bool CPY_GRP_METADATA,     /* I [flg] Copy group metadata (attributes) */
+ const nco_bool CPY_VAR_METADATA,     /* I [flg] Copy variable metadata (attributes) */
+ const int nco_pck_plc,               /* I [enm] Packing policy */
+ const char * const rec_dmn_nm,       /* I [sng] Record dimension name */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_xtr_wrt                           /* [fnc] Write extracted data to output file */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const int nc_out_id,                 /* I [ID] netCDF output file ID */
+ const gpe_sct * const gpe,           /* I [sct] GPE structure */
+ FILE * const fp_bnr,                 /* I [fl] Unformatted binary output file handle */
+ const md5_sct * const md5,           /* I [flg] MD5 Configuration */
+ const nco_bool HAVE_LIMITS,          /* I [flg] Dimension limits exist */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+nco_bool                              /* O [flg] True if in scope */ 
+nco_crd_var_dmn_scp                   /* [fnc] Is coordinate variable in dimension scope */
+(const trv_sct * const var_trv,       /* I [sct] GTT Object Variable */
+ const dmn_trv_sct * const dmn_trv,   /* I [sct] GTT unique dimension */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+int                                    /* [rcd] Return code */
+nco_grp_itr                            /* [fnc] Populate traversal table by examining, recursively, subgroups of parent */
+(const int grp_id,                     /* I [ID] Group ID */
+ char * const grp_nm_fll_prn,          /* I [sng] Absolute group name of parent (path) */
+ char * const grp_nm_fll,              /* I [sng] Absolute group name (path) */
+ trv_tbl_sct * const trv_tbl);         /* I/O [sct] GTT (Group Traversal Table) */
+
+void                      
+nco_bld_crd_rec_var_trv               /* [fnc] Build dimension information for all variables */
+(const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void                      
+nco_bld_crd_var_trv                   /* [fnc] Build GTT "crd_sct" coordinate variable structure */
+(trv_tbl_sct * const trv_tbl);        /* I/O [sct] GTT (Group Traversal Table) */
+
+void                          
+nco_prt_trv_tbl                      /* [fnc] Print GTT (Group Traversal Table) for debugging  with --get_grp_info  */
+(const int nc_id,                    /* I [ID] File ID */
+ const trv_tbl_sct * const trv_tbl); /* I [sct] GTT (Group Traversal Table) */
+
+void                          
+nco_bld_dmn_ids_trv                   /* [fnc] Build dimension info for all variables */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] GTT (Group Traversal Table) */
+
+void                          
+nco_has_crd_dmn_scp                  /* [fnc] Is there a variable with same name in dimension's scope?   */
+(const trv_tbl_sct * const trv_tbl); /* I [sct] GTT (Group Traversal Table) */
+
+void
+nco_bld_var_dmn                       /* [fnc] Assign variables dimensions to either coordinates or dimension structs */
+(trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+crd_sct *                             /* O [sct] Coordinate object */
+nco_scp_var_crd                       /* [fnc] Is coordinate in scope of variable?  */
+(trv_sct *var_trv,                    /* I [sct] Variable object */
+ dmn_trv_sct *dmn_trv);               /* I [sct] Dimension object */
+
+int                                  /* O [nbr] Comparison result */
+nco_cmp_crd_dpt                      /* [fnc] Compare two crd_sct's by group depth */
+(const void *p1,                     /* I [sct] crd_sct* to compare */
+ const void *p2);                    /* I [sct] crd_sct* to compare */
+
+void                          
+nco_wrt_trv_tbl                      /* [fnc] Obtain file information from GTT (Group Traversal Table) for debugging  */
+(const int nc_id,                    /* I [ID] File ID */
+ const trv_tbl_sct * const trv_tbl,  /* I [sct] GTT (Group Traversal Table) */
+ nco_bool use_flg_xtr);              /* I [flg] Use flg_xtr in selection */
+
+void                          
+nco_gpe_chk                            /* [fnc] Check valid GPE new name  */
+(const char * const grp_out_fll,       /* I [sng] Group name */
+ const char * const var_nm,            /* I [sng] Variable name */
+ gpe_nm_sct ** gpe_nm,                 /* I/O [sct] GPE name duplicate check array */
+ int * nbr_gpe_nm);                    /* I/O [nbr] Number of GPE entries */ 
+
+void
+nco_get_rec_dmn_nm                     /* [fnc] Return array of record names  */
+(const trv_sct * const var_trv,        /* I [sct] Variable object */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ nm_tbl_sct ** rec_dmn_nm);            /* I/O [sct] Array of record names */
+ 
+void
+nco_bld_aux_crd                       /* [fnc] Parse auxiliary coordinates */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const int aux_nbr,                   /* I [nbr] Number of auxiliary coordinates */
+ char *aux_arg[],                     /* I [sng] Auxiliary coordinates */
+ int *lmt_nbr,                        /* I/O [nbr] Number of user-specified dimension limits */
+ lmt_sct ***lmt,                      /* I/O [sct] Limit structure  */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+var_sct **                            /* O [sct] Variable list */  
+nco_fll_var_trv                       /* [fnc] Fill-in variable structure list for all extracted variables */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ int * const xtr_nbr,                 /* I/O [nbr] Number of variables in extraction list */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] Traversal table */
+
+var_sct **                            /* O [sct] Variable list */  
+nco_var_trv                           /* [fnc] Fill-in variable structure list for all variables named "var_nm" */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const char * const var_nm,           /* I [sng] Variable name (relative) */
+ int * const xtr_nbr,                 /* I/O [nbr] Number of variables in extraction list */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] Traversal table */
+
+void
+nco_cpy_fix_var_trv                   /* [fnc] Copy processing type fixed variables from input to output file */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const int out_id,                    /* I [ID] netCDF output file ID */
+ const gpe_sct * const gpe,           /* I [sng] GPE structure */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void                          
+nco_prc_cmn                            /* [fnc] Process objects (ncbo only) */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID */
+ const int nc_id_2,                    /* I [id] netCDF input-file ID */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD,           /* I [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
+ CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl),   /* I [sct] Dimensions not allowed in fixed variables */
+ const int nbr_dmn_xcl,                /* I [nbr] Number of altered dimensions */
+ const int nco_op_typ,                 /* I [enm] Operation type (command line -y) */
+ trv_sct * trv_1,                      /* I [sct] Table object */
+ trv_sct * trv_2,                      /* I [sct] Table object */
+ const trv_tbl_sct * const trv_tbl_1,  /* I [sct] GTT (Group Traversal Table) */
+ const trv_tbl_sct * const trv_tbl_2,  /* I [sct] GTT (Group Traversal Table) */
+ nco_bool flg_grp_1,                   /* I [flg] Use table 1 as template for group creation on True, otherwise use table 2 */
+ const nco_bool flg_dfn);              /* I [flg] Action type (True for define variables, False when write variables ) */
+
+void                          
+nco_cpy_fix                            /* [fnc] Copy processing type fixed object (ncbo only) */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD,           /* I [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
+ CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl),   /* I [sct] Dimensions not allowed in fixed variables */
+ const int nbr_dmn_xcl,                /* I [nbr] Number of altered dimensions */
+ trv_sct *trv_1,                       /* I/O [sct] Table object */
+ const trv_tbl_sct * const trv_tbl_1,  /* I [sct] GTT (Group Traversal Table) */
+ const nco_bool flg_dfn);              /* I [flg] Action type (True for define variables, False when write variables ) */
+
+nco_bool                               /* O [flg] Copy packing attributes */
+nco_pck_cpy_att                        /* [fnc] Inquire about copying packing attributes  */
+(const int nco_prg_id,                     /* I [enm] Program ID */
+ const int nco_pck_plc,                /* I [enm] Packing policy */
+ const var_sct * const var_prc);       /* I [sct] Variable */
+
+nco_bool                               /* O [flg] True for match found */
+nco_rel_mch                            /* [fnc] Relative match of object in table 1 to table 2  */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID from file 1 */
+ const int nc_id_2,                    /* I [id] netCDF input-file ID from file 2 */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const int nco_op_typ,                 /* I [enm] Operation type (command line -y) */
+ trv_sct * var_trv,                    /* I [sct] Table variable object (can be from table 1 or 2) */
+ nco_bool flg_tbl_1,                   /* I [flg] Table variable object is from table1 for True, otherwise is from table 2 */
+ nco_bool flg_grp_1,                   /* I [flg] Use table 1 as template for group creation on True, otherwise use table 2 */
+ const trv_tbl_sct * const trv_tbl_1,  /* I [sct] GTT (Group Traversal Table) */
+ const trv_tbl_sct * const trv_tbl_2,  /* I [sct] GTT (Group Traversal Table) */
+ const nco_bool flg_dfn);              /* I [flg] Action type (True for define variables, False when write variables ) */
+
+void                          
+nco_prc_cmn_nm                         /* [fnc] Process common objects from a common mames list  */
+(const int nc_id_1,                    /* I [id] netCDF input-file ID */
+ const int nc_id_2,                    /* I [id] netCDF input-file ID */
+ const int nc_out_id,                  /* I [id] netCDF output-file ID */
+ int cnk_map,                          /* I [enm] Chunking map */
+ int cnk_plc,                          /* I [enm] Chunking policy */
+ const size_t cnk_sz_scl,              /* I [nbr] Chunk size scalar */
+ CST_X_PTR_CST_PTR_CST_Y(cnk_sct,cnk), /* I [sct] Chunking information */
+ const int cnk_nbr,                    /* I [nbr] Number of dimensions with user-specified chunking */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ gpe_nm_sct *gpe_nm,                   /* I/O [sct] GPE name duplicate check array */
+ int nbr_gpe_nm,                       /* I/O [nbr] Number of GPE entries */  
+ const nco_bool CNV_CCM_CCSM_CF,       /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const int nco_op_typ,                 /* I [enm] Operation type (command line -y) */
+ trv_tbl_sct * const trv_tbl_1,        /* I/O [sct] GTT (Group Traversal Table) */
+ trv_tbl_sct * const trv_tbl_2,        /* I/O [sct] GTT (Group Traversal Table) */
+ const nco_cmn_t * const cmn_lst,      /* I [sct] List of common names */
+ const int nbr_cmn_nm,                 /* I [nbr] Number of common names entries */
+ const nco_bool flg_dfn);              /* I [flg] Action type (True for define variables, False when write variables ) */
+
+void
+nco_var_prc_fix_trv                    /* [fnc] Store processed and fixed variables info into GTT */
+(const int nbr_var_prc,                /* I [nbr] Number of processed variables */
+ var_sct **var_prc,                    /* I [sct] Array of processed variables */
+ const int nbr_var_fix,                /* I [nbr] Number of fixed variables */
+ var_sct **var_fix,                    /* I [sct] Array of fixed variables */
+ trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
+
+void
+nco_var_typ_trv                        /* [fnc] Transfer variable type into GTT */
+(const int xtr_nbr,                    /* I [nbr] Number of extracted variables */
+ var_sct **var,                        /* I [sct] Array of extracted variables */
+ trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
+
+var_sct *                              /* O [sct] Variable structure */
+nco_var_fll_trv                        /* [fnc] Allocate variable structure and fill with metadata */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ const int var_id,                     /* I [id] Variable ID */
+ const trv_sct * const var_trv,        /* I [sct] Object to write (variable) */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] GTT (Group Traversal Table) */
+
+int                                    /* O [id] Output file variable ID */
+nco_cpy_var_dfn_trv                    /* [fnc] Define specified variable in output file */
+(const int nc_in_id,                   /* I [ID] netCDF input file ID */
+ const int nc_out_id,                  /* I [ID] netCDF output file ID */
+ const char * const grp_out_fll,       /* I [sng] Output group name */
+ const int dfl_lvl,                    /* I [enm] Deflate level [0..9] */
+ const gpe_sct * const gpe,            /* I [sct] GPE structure */
+ const char * const rec_dmn_nm_cst,    /* I [sng] User-specified record dimension, if any, to create or fix in output file */
+ trv_sct *var_trv,                     /* I/O [sct] Object to write (variable) */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] GTT (Group Traversal Table) */
+
+void
+nco_dmn_rdr_trv                        /* [fnc] Transfer dimension structures to be re-ordered (ncpdq) into GTT */
+(int **dmn_idx_out_in,                 /* I [idx] Dimension correspondence, output->input, output of nco_var_dmn_rdr_mtd() */
+ const int nbr_var_prc,                /* I [nbr] Size of above array (number of processed variables) */
+ var_sct **var_prc_out,                /* I [sct] Processed variables */
+ trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
+
+void
+nco_var_dmn_rdr_mtd_trv               /* [fnc] Determine and set new dimensionality in metadata of each re-ordered variable */
+(trv_tbl_sct * const trv_tbl,         /* I/O [sct] GTT (Group Traversal Table) */
+ const int nbr_var_prc,               /* I [nbr] Number of processed variables */
+ var_sct **var_prc,                   /* I/O [sct] Processed variables */
+ var_sct **var_prc_out,               /* I/O [sct] Processed variables */
+ const int nbr_var_fix,               /* I [nbr] Number of processed variables */
+ var_sct **var_fix,                   /* I/O [sct] Fixed variables */
+ dmn_sct **dmn_rdr,                   /* I [sct] Dimension structures to be re-ordered */
+ const int dmn_rdr_nbr,               /* I [nbr] Number of dimension to re-order */
+ const nco_bool *dmn_rvr_rdr);        /* I [flg] Reverse dimension */
+
+
+void
+nco_var_dmn_rdr_val_trv               /* [fnc] Change dimension ordering of variable values */
+(const var_sct * const var_in,        /* I [ptr] Variable with metadata and data in original order */
+ var_sct * const var_out,             /* I/O [ptr] Variable whose data will be re-ordered */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+nco_bool                              /* O [flg] Re-define dimension ordering */
+nco_rdf_dmn_trv                       /* [fnc] Re-define dimension ordering */
+(trv_sct var_trv,                     /* I [sct] varible with record dimension name, re-ordered */
+ const trv_tbl_sct * const trv_tbl,   /* I [sct] GTT (Group Traversal Table) */
+ int * idx_var_mrk_out);              /* O [nbr] Index in GTT where name was found */
+
+nco_bool                              /* [flg] Name was found */
+nco_var_prc_idx_trv                   /* [fnc] Find index of processed variable that matches full name */
+(const char * const var_nm_fll,       /* I [nbr] Full name of variable */
+ var_sct **var_prc_out,               /* I [sct] Processed variables */
+ const int nbr_var_prc,               /* I [nbr] Number of processed variables */
+ int * var_prc_idx_out);              /* O [nbr] Number of dimension to re-order */
+
+void
+nco_aed_prc_trv                       /* [fnc] Process single attribute edit for single variable (GTT) */
+(const int nc_id,                     /* I [id] Input netCDF file ID */
+ const aed_sct *aed,                  /* I [sct] Structure containing information necessary to edit */
+ const int nbr_aed,                   /* I [nbr] Number of attribute structures */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void
+nco_dmn_trv_msa_tbl                   /* [fnc] Update all GTT dimensions with hyperslabbed size */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const char * const rec_dmn_nm,       /* I [sng] Record dimension name */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] GTT (Group Traversal Table) */
+
+void                                  /* [fnc] Update all GTT dimensions with hyperslabbed size */
+nco_dmn_msa_tbl                       /* [fnc] Define specified variable in output file */
+(const int grp_in_id,                 /* I [id] netCDF input group ID */
+ const char * const rec_dmn_nm_cst,   /* I [sng] User-specified record dimension, if any, to create or fix in output file */
+ trv_sct *var_trv,                    /* I/O [sct] Object to write (variable) trv_map_dmn_set() is O */
+ const trv_tbl_sct * const trv_tbl);  /* I [sct] GTT (Group Traversal Table) */
+
+void                          
+nco_dmn_dgn_tbl                       /* [fnc] Transfer degenerated dimensions information into GTT  */
+(dmn_sct **dmn_dgn,                   /* [sct] Degenerate (size 1) dimensions used by ncwa */
+ const int nbr_dmn_dgn,               /* I [nbr] Total number of dimensions in list */
+ trv_tbl_sct *trv_tbl);               /* I/O [sct] GTT (Group Traversal Table) */
+
+void
+nco_dmn_lst_ass_var_trv                /* [fnc] Create list of all dimensions associated with input variable list  (ncpdq only) */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ int *nbr_dmn_xtr,                     /* O [nbr] Number of dimensions associated with variables to be extracted  */
+ dmn_sct ***dim);                      /* O [sct] Array of dimensions associated with variables to be extracted  */
+
+void
+nco_dmn_avg_mk                         /* [fnc] Build dimensions to average(ncwa)/re-order(ncpdq) array from input dimension names */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ char **obj_lst_in,                    /* I [sng] User-specified list of dimension names (-a names without the - ) */
+ const int nbr_dmn_in,                 /* I [nbr] Total number of dimensions in input list (size of above array) */
+ const nco_bool flg_rdd,               /* I [flg] Retain degenerate dimensions */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ dmn_sct ***dmn_avg,                   /* O [sct] Array of dimensions to average */
+ int *nbr_dmn_avg);                    /* O [nbr] Number of dimensions to average (size of above array) */
+
+void
+nco_dmn_out_mk                         /* [fnc] Build dimensions array to keep on output */
+(dmn_sct **dmn_xtr,                    /* I [sct] Array of dimensions associated with variables to be extracted  */
+ const int nbr_dmn_xtr,                /* I [nbr] Number of dimensions associated with variables to be extracted (size of above array) */
+ const trv_tbl_sct * const trv_tbl,    /* I [sct] GTT (Group Traversal Table) */
+ dmn_sct ***dmn_out,                   /* O [sct] Array of dimensions on ouput */
+ int *nbr_dmn_out);                    /* O [nbr] Number of dimensions on output (size of above array) */
+
+void
+nco_dmn_id_mk                          /* [fnc] Mark flag average, optionally flag degenerate for all dimensions that have the input ID */
+(const int dmn_id,                     /* I [nbr] Number of dimensions associated with variables to be extracted (size of above array) */
+ const nco_bool flg_rdd,               /* I [flg] Mark flag retain degenerate dimension */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] GTT (Group Traversal Table) */
+
+void                          
+nco_bld_rec_dmn                       /* [fnc] Build record dimensions array */
+(const int nc_id,                     /* I [ID] netCDF input file ID */
+ const nco_bool FORTRAN_IDX_CNV,      /* I [flg] Hyperslab indices obey Fortran convention */
+ const nco_bool flg_rec_all,          /* I [flg] Retrieve all records */
+ trv_tbl_sct * trv_tbl);              /* I/O [sct] GTT (Group Traversal Table) */
+
+void
+nco_prt_tbl_lmt                       /* [fnc] Print table limits */
+(trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_bld_trv_tbl                       /* [fnc] Construct GTT, Group Traversal Table (groups,variables,dimensions, limits)   */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ char * const grp_pth,                /* I [sng] Absolute group path where to start build (root typically) */
+ int lmt_nbr,                         /* I [nbr] number of dimensions with limits */
+ CST_X_PTR_CST_PTR_CST_Y(char,lmt_arg), /* I [sng] List of user-specified dimension limits */
+ const int aux_nbr,                   /* I [nbr] Number of auxiliary coordinates */
+ char *aux_arg[],                     /* I [sng] Auxiliary coordinates */
+ nco_bool MSA_USR_RDR,                /* I [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+ nco_bool FORTRAN_IDX_CNV,            /* I [flg] Hyperslab indices obey Fortran convention */
+ char **grp_lst_in,                   /* I [sng] User-specified list of groups */
+ const int grp_lst_in_nbr,            /* I [nbr] Number of groups in list */
+ char **var_lst_in,                   /* I [sng] User-specified list of variables */
+ const int var_xtr_nbr,               /* I [nbr] Number of variables in list */
+ const nco_bool EXTRACT_ALL_COORDINATES,  /* I [flg] Process all coordinates */ 
+ const nco_bool flg_unn,              /* I [flg] Select union of specified groups and variables */
+ const nco_bool EXCLUDE_INPUT_LIST,   /* I [flg] Exclude rather than extract groups and variables specified with -v */ 
+ const nco_bool EXTRACT_ASSOCIATED_COORDINATES,  /* I [flg] Extract all coordinates associated with extracted variables? */ 
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void
+nco_bld_lmt                           /* [fnc] Assign user specified dimension limits to traversal table */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ nco_bool MSA_USR_RDR,                /* I [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+ int lmt_nbr,                         /* I [nbr] Number of user-specified dimension limits */
+ lmt_sct **lmt,                       /* I [sct] Structure comming from nco_lmt_prs() */
+ nco_bool FORTRAN_IDX_CNV,            /* I [flg] Hyperslab indices obey Fortran convention */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+
+void 
+nco_msa_var_get_elm_trv             /* [fnc] Read a used defined limit */
+(const int nc_id,                   /* I [ID] netCDF file ID */
+ var_sct *var_prc,                  /* I/O [sct] Variable */
+ const char * const rec_nm_fll,     /* I [sng] Full name of record being done in loop (trv_tbl->lmt_rec[idx_rec]->nm_fll ) */
+ const long idx_rec_crr_in,         /* [idx] Index of current record in current input file */
+ const trv_tbl_sct * const trv_tbl);/* I [sct] GTT (Group Traversal Table) */
+
+nco_bool                             /* O [flg] Skip variable  */
+nco_skp_var                          /* [fnc] Skip variable while doing record   */
+(const var_sct * const var_prc,      /* I [sct] Processed variable */
+ const char * const rec_nm_fll,      /* I [sng] Full name of record being done in loop (trv_tbl->lmt_rec[idx_rec]->nm_fll ) */
+ const trv_tbl_sct * const trv_tbl); /* I [sct] Traversal table */
+
+var_sct *                             /* O [sct] Variable (weight) */  
+nco_var_get_wgt_trv                   /* [fnc] Retrieve weighting or mask variable */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const char * const wgt_nm,           /* I [sng] Weight variable name (relative) */
+ const var_sct * const var,           /* I [sct] Variable that needs the weight/mask variable */
+ const trv_tbl_sct * const trv_tbl);  /* I [lst] Traversal table */
+
+dmn_trv_sct *                         /* O [sct] Table dimension object */
+nco_dmn_usr_sng                       /* [fnc] Parse input string and return table dimension object */
+(const char * const usr_sng,          /* I [sng] Object name */
+ const trv_tbl_sct * const trv_tbl,   /* I [lst] Traversal table */ 
+ nco_bool *is_opt);                   /* O [flg] Dimension presence is optional (name has '.') */       
+    
+trv_sct *                             /* O [sct] Table object */
+nco_obj_usr_sng                       /* [fnc] Parse input string and return table object */
+(const char * const usr_sng,          /* I [sng] Object name */
+ const trv_tbl_sct * const trv_tbl,   /* I [lst] Traversal table */ 
+ nco_bool *is_opt);                   /* O [flg] Dimension presence is optional (input string has '.') */
+
+void                                  
+nco_aed_prc_grp                       /* [fnc] Process attributes in groups */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl);  /* I [lst] Traversal table */ 
+
+void                                  
+nco_aed_prc_glb                       /* [fnc] Process attributes in root group */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl);  /* I [lst] Traversal table */ 
+
+void                                  
+nco_aed_prc_var                       /* [fnc] Process attributes in variables */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl);  /* I [lst] Traversal table */ 
+
+void                                  
+nco_aed_prc_var_xtr                   /* [fnc] Process attributes in variables that match table extraction flag */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl);  /* I [lst] Traversal table */ 
+
+void                                  
+nco_aed_prc_var_nm                    /* [fnc] Process attributes in variables that match input name */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const aed_sct aed,                   /* I [sct] Structure containing information necessary to edit */
+ const trv_tbl_sct * const trv_tbl);  /* I [lst] Traversal table */ 
+
+void                                    
+nco_grp_var_lst                        /* [fnc] Export list of variable names for group */
+(const int nc_id,                      /* I [id] netCDF file ID */
+ const char * const grp_nm_fll,        /* I [sng] Absolute group name */
+ char ***nm_lst,                       /* I/O [sng] List of names */
+ int *nm_lst_nbr);                     /* I/O [nbr] Number of items in list */
+
+void
+nco_bld_nsm                           /* [fnc] Build ensembles */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
+
+void                          
+nco_nm_skp                             /* [fnc] Extract list of variable names to skip for template definition  */
+(const int nc_id,                      /* I [ID] netCDF file ID */
+ const char * const grp_nm_fll,        /* I [sng] Group full name where all names reside */
+ const nco_cmn_t *cmn_lst,             /* I [sct] List of names (relative)  */
+ const int nbr_cmn_nm,                 /* I [nbr] Number of names (size of above array) */
+ nco_cmn_t **skp_lst,                  /* I/O [sct] List of skip names (full) */
+ int * nbr_skp_nm,                     /* I/O [nbr] Number of skip names (size of above array) */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] GTT (Group Traversal Table) */
+
+char *                                /* O [sng] Name of variable   */
+nco_var_has_cf                        /* [fnc] Variable has CF-compliant information ("coordinates" or "bounds") */
+(const int nc_id,                     /* I [ID] netCDF file ID */
+ const trv_sct * const var_trv,       /* I [sct] Variable (object) */
+ const char * const cf_nm,            /* I [sng] CF convention ( "coordinates" or "bounds") */
+ nco_bool *flg_cf_fnd);               /* I/O [flg] CF variable was found */
+
+void
+nco_nsm_ncr                           /* [fnc] Increase ensembles (more than 1 file cases) */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
 
 #ifdef __cplusplus
 } /* end extern "C" */
diff --git a/src/nco/nco_lmt.c b/src/nco/nco_lmt.c
index 26ea796..66c312a 100644
--- a/src/nco/nco_lmt.c
+++ b/src/nco/nco_lmt.c
@@ -1,13 +1,157 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_lmt.c,v 1.113 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_lmt.c,v 1.200 2013/10/22 03:03:45 zender Exp $ */
 
 /* Purpose: Hyperslab limits */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_lmt.h" /* Hyperslab limits */
 
+void
+nco_lmt_init /* [fnc] Initialize limit to NULL/invalid values */
+(lmt_sct *lmt) /* I/O [sct] Limit structure to initialize */
+{
+  lmt->nm=NULL;              /* [sng] Dimension name */
+  lmt->nm_fll=NULL;          /* [sng] Full dimension name */
+  lmt->grp_nm_fll=NULL;      /* [sng] Full group where dimension is defined */
+  lmt->drn_sng=NULL;         /* [sng] User-specified string for dimension duration */
+  lmt->max_sng=NULL;         /* [sng] User-specified string for dimension maximum */
+  lmt->min_sng=NULL;         /* [sng] User-specified string for dimension minimum */
+  lmt->mro_sng=NULL;         /* [sng] User-specified string for multi-record output */
+  lmt->rbs_sng=NULL;         /* [sng] Used by ncra, ncrcat to re-base record coordinate (holds unit attribute from first file) */
+  lmt->srd_sng=NULL;         /* [sng] User-specified string for dimension stride */
+
+  lmt->max_val=-1;           /* [nbr] Double precision representation of maximum value of coordinate requested or implied */
+  lmt->min_val=-1;           /* [nbr] Double precision representation of minimum value of coordinate requested or implied */
+  lmt->origin=-1;            /* [nbr] Used by ncra, ncrcat to re-base record coordinate */
+
+  lmt->id=-1;                /* [ID] Dimension ID */
+
+  lmt->lmt_typ=-1;           /* [enm] Limit type (0, Coordinate value limit, 1, Dimension index limit, 2, UDUnits string )  */
+
+  lmt->cnt=-1;               /* [nbr] Valid elements in this dimension (including effects of stride and wrapping) */
+  lmt->drn=-1;               /* [nbr] Duration of hyperslab */
+  lmt->end=-1;               /* [nbr] Index to end of hyperslab */
+  lmt->max_idx=-1;           /* [nbr] Index of maximum requested value in dimension */
+  lmt->min_idx=-1;           /* [nbr] Index of minimum requested value in dimension */
+  lmt->rec_dmn_sz=-1;        /* [nbr] Number of records in this file (multi-file record dimension only) */
+  lmt->rec_in_cml=-1;        /* [nbr] Cumulative number of records in all files opened so far (multi-file record dimension only) */
+  lmt->idx_end_max_abs=-1;   /* [[nbr]] Maximum allowed index in record dimension (multi-file record dimension only) */
+  lmt->rec_skp_ntl_spf=-1;   /* [nbr] Records skipped in initial superfluous files (multi-file record dimension only) */
+  lmt->rec_skp_vld_prv=-1;   /* [nbr] Records skipped since previous good one (multi-file record dimension only) */
+  lmt->rec_rmn_prv_drn=-1;   /* [nbr] Records remaining-to-be-read to complete duration group from previous file (multi-file record dimension only) */
+  lmt->srd=-1;               /* [nbr] Stride of hyperslab */
+  lmt->srt=-1;               /* [nbr] Index to start of hyperslab */
+
+  lmt->flg_mro=-1;           /* [flg] True for multi-record output (used by ncra only) */
+  lmt->flg_input_complete=-1;/* [flg] True for multi-file operators when no more files need be opened */
+  lmt->is_rec_dmn=-1;        /* [flg]  True if record dimension, else False */
+  lmt->is_usr_spc_lmt=-1;    /* [flg]  True if any part of limit is user-specified, else False */
+  lmt->is_usr_spc_max=-1;    /* [flg]  True if user-specified, else False */
+  lmt->is_usr_spc_min=-1;    /* [flg]  True if user-specified, else False */
+  lmt->lmt_cln=cln_nil;      /* [flg]  Used by ncra, ncrcat to store enum of calendar-type attribute */
+
+} /* end nco_lmt_init() */
+
+void
+nco_lmt_prt /* [fnc] Print a Limit structure */
+(lmt_sct *lmt) /* I/O [sct] Limit structure to print */
+{
+  (void)fprintf(stdout,"Name: %s\n",lmt->nm);
+  (void)fprintf(stdout,"User-specified string for dimension duration: %s\n",lmt->drn_sng);
+  (void)fprintf(stdout,"User-specified string for dimension maximum : %s\n",lmt->max_sng);
+  (void)fprintf(stdout,"User-specified string for dimension minimum: %s\n",lmt->min_sng);
+  (void)fprintf(stdout,"User-specified string for multi-record output: %s\n",lmt->mro_sng);
+  (void)fprintf(stdout,"Unit attribute from first file: %s\n",lmt->rbs_sng);
+  (void)fprintf(stdout,"User-specified string for dimension stride: %s\n",lmt->srd_sng);
+
+  (void)fprintf(stdout,"Maximum value of coordinate: %f\n",lmt->max_val);
+  (void)fprintf(stdout,"Minimum value of coordinate: %f\n",lmt->min_val);
+  (void)fprintf(stdout,"Origin: %f\n",lmt->origin);
+
+  (void)fprintf(stdout,"ID: %d\n",lmt->id);
+
+  (void)fprintf(stdout,"Limit type: %d\n",lmt->lmt_typ);
+
+  (void)fprintf(stdout,"Valid elements: %li\n",lmt->cnt);
+  (void)fprintf(stdout,"Duration of hyperslab: %li\n",lmt->drn);
+  (void)fprintf(stdout,"Index to end of hyperslab: %li\n",lmt->end);
+  (void)fprintf(stdout,"Index of maximum requested value: %li\n",lmt->max_idx);
+  (void)fprintf(stdout,"Index of minimum requested value: %li\n",lmt->min_idx);
+  (void)fprintf(stdout,"Number of records in this file: %li\n",lmt->rec_dmn_sz);
+  (void)fprintf(stdout,"Cumulative number of records in all files: %li\n",lmt->rec_in_cml);
+  (void)fprintf(stdout,"Maximum allowed index in record dimension: %li\n",lmt->idx_end_max_abs);
+  (void)fprintf(stdout,"Records skipped in initial superfluous files: %li\n",lmt->rec_skp_ntl_spf);
+  (void)fprintf(stdout,"Records skipped since previous good one: %li\n",lmt->rec_skp_vld_prv);
+  (void)fprintf(stdout,"Records remaining-to-be-read: %li\n",lmt->rec_rmn_prv_drn);
+  (void)fprintf(stdout,"Stride of hyperslab: %li\n",lmt->srd);
+  (void)fprintf(stdout,"Index to start of hyperslab: %li\n",lmt->srt);
+
+  (void)fprintf(stdout,"Is multi-record output: %d\n",lmt->flg_mro);
+  (void)fprintf(stdout,"No more files need be opened: %d\n",lmt->flg_input_complete);
+  (void)fprintf(stdout,"Is record dimension: %d\n",lmt->is_rec_dmn);
+  (void)fprintf(stdout,"Any part is user-specified: %d\n",lmt->is_usr_spc_lmt);
+  (void)fprintf(stdout,"Is user-specified maximum: %d\n",lmt->is_usr_spc_max);
+  (void)fprintf(stdout,"Is user-specified minimum: %d\n",lmt->is_usr_spc_min);
+  (void)fprintf(stdout,"Calendar-type attribute: %d\n",lmt->lmt_cln);
+
+} /* end nco_lmt_prt() */
+
+void
+nco_lmt_cpy /* [fnc] Deep-copy a Limit structure */
+(const lmt_sct * const lmt1, /* I [sct] Limit structure to copy */
+ lmt_sct *lmt2) /* O [sct] New limit structure (must be alloced before) */
+{
+  assert(lmt1->nm);
+
+  /* Initialize to NULL/invalid */
+  (void)nco_lmt_init(lmt2);
+
+  lmt2->nm=(char *)strdup(lmt1->nm);
+  if(lmt1->nm_fll) lmt2->nm_fll=(char *)strdup(lmt1->nm_fll);
+  if(lmt1->grp_nm_fll) lmt2->grp_nm_fll=(char *)strdup(lmt1->grp_nm_fll);
+
+  if(lmt1->max_sng) lmt2->max_sng=(char *)strdup(lmt1->max_sng);
+  if(lmt1->min_sng) lmt2->min_sng=(char *)strdup(lmt1->min_sng);
+
+  if(lmt1->drn_sng) lmt2->drn_sng=(char *)strdup(lmt1->drn_sng);      
+  if(lmt1->mro_sng) lmt2->mro_sng=(char *)strdup(lmt1->mro_sng);
+  if(lmt1->rbs_sng) lmt2->rbs_sng=(char *)strdup(lmt1->rbs_sng);
+  if(lmt1->srd_sng) lmt2->srd_sng=(char *)strdup(lmt1->srd_sng);
+
+  lmt2->max_val=lmt1->max_val;
+  lmt2->min_val=lmt1->min_val;
+  lmt2->origin=lmt1->origin;
+
+  lmt2->id=lmt1->id;
+
+  lmt2->lmt_typ=lmt1->lmt_typ;
+
+  lmt2->cnt=lmt1->cnt;
+  lmt2->drn=lmt1->drn;
+  lmt2->end=lmt1->end;
+  lmt2->max_idx=lmt1->max_idx;
+  lmt2->min_idx=lmt1->min_idx;
+  lmt2->rec_dmn_sz=lmt1->rec_dmn_sz;
+  lmt2->rec_in_cml=lmt1->rec_in_cml;
+  lmt2->idx_end_max_abs=lmt1->idx_end_max_abs;
+  lmt2->rec_skp_ntl_spf=lmt1->rec_skp_ntl_spf;
+  lmt2->rec_skp_vld_prv=lmt1->rec_skp_vld_prv;
+  lmt2->rec_rmn_prv_drn=lmt1->rec_rmn_prv_drn;
+  lmt2->srd=lmt1->srd;
+  lmt2->srt=lmt1->srt;
+
+  lmt2->flg_mro=lmt1->flg_mro;
+  lmt2->flg_input_complete=lmt1->flg_input_complete;
+  lmt2->is_rec_dmn=lmt1->is_rec_dmn;
+  lmt2->is_usr_spc_lmt=lmt1->is_usr_spc_lmt;
+  lmt2->is_usr_spc_max=lmt1->is_usr_spc_max;
+  lmt2->is_usr_spc_min=lmt1->is_usr_spc_min;
+  lmt2->lmt_cln=lmt1->lmt_cln;
+
+} /* end nco_lmt_cpy() */
+
 lmt_sct * /* O [sct] Pointer to free'd structure */
 nco_lmt_free /* [fnc] Free memory associated with limit structure */
 (lmt_sct *lmt) /* I/O [sct] Limit structure to free */
@@ -15,13 +159,19 @@ nco_lmt_free /* [fnc] Free memory associated with limit structure */
   /* Threads: Routine is thread safe and calls no unsafe routines */
   /* Purpose: Free all memory associated with dynamically allocated limit structure */
   lmt->nm=(char *)nco_free(lmt->nm);
-  lmt->min_sng=(char *)nco_free(lmt->min_sng);
+  lmt->nm_fll=(char *)nco_free(lmt->nm_fll);
+  lmt->grp_nm_fll=(char *)nco_free(lmt->grp_nm_fll);
+
+  lmt->drn_sng=(char *)nco_free(lmt->drn_sng);
   lmt->max_sng=(char *)nco_free(lmt->max_sng);
+  lmt->min_sng=(char *)nco_free(lmt->min_sng);
+  lmt->mro_sng=(char *)nco_free(lmt->mro_sng);
+
+  lmt->rbs_sng=(char *)nco_free(lmt->rbs_sng);   
   lmt->srd_sng=(char *)nco_free(lmt->srd_sng);
-  lmt->rbs_sng=(char*)nco_free(lmt->rbs_sng);   
-  
+
   lmt=(lmt_sct *)nco_free(lmt);
-  
+
   return lmt;
 } /* end nco_lmt_free() */
 
@@ -33,44 +183,44 @@ nco_lmt_lst_free /* [fnc] Free memory associated with limit structure list */
   /* Threads: Routine is thread safe and calls no unsafe routines */
   /* Purpose: Free all memory associated with dynamically allocated limit structure list */
   int idx;
-  
+
   for(idx=0;idx<lmt_nbr;idx++) lmt_lst[idx]=nco_lmt_free(lmt_lst[idx]);
-  
+
   /* Free structure pointer last */
   lmt_lst=(lmt_sct **)nco_free(lmt_lst);
-  
+
   return lmt_lst;
 } /* end nco_lmt_lst_free() */
 
-lmt_all_sct * /* O [sct] Pointer to free'd structure */
+lmt_msa_sct * /* O [sct] Pointer to free'd structure */
 nco_lmt_all_free /* [fnc] Free memory associated with limit structure */
-(lmt_all_sct *lmt_all) /* I/O [sct] Limit structure to free */
+(lmt_msa_sct *lmt_all) /* I/O [sct] Limit structure to free */
 {
   /* Threads: Routine is thread safe and calls no unsafe routines */
   /* Purpose: Free all memory associated with dynamically allocated lmt_all structure */
   lmt_all->dmn_nm=(char *)nco_free(lmt_all->dmn_nm);
   /* NB: lmt_dmn[idx] are free'd by nco_lmt_lst_free() in calling routine */
   lmt_all->lmt_dmn=(lmt_sct **)nco_free(lmt_all->lmt_dmn);
-  
-  lmt_all=(lmt_all_sct *)nco_free(lmt_all);
-  
+
+  lmt_all=(lmt_msa_sct *)nco_free(lmt_all);
+
   return lmt_all;
 } /* end nco_lmt_all_free() */
 
-lmt_all_sct ** /* O [sct] Pointer to free'd structure list */
+lmt_msa_sct ** /* O [sct] Pointer to free'd structure list */
 nco_lmt_all_lst_free /* [fnc] Free memory associated with lmt_all structure list */
-(lmt_all_sct **lmt_all_lst, /* I/O [sct] Limit structure list to free */
+(lmt_msa_sct **lmt_all_lst, /* I/O [sct] Limit structure list to free */
  const int lmt_all_nbr) /* I [nbr] Number of limit strucgtures in list */
 {
   /* Threads: Routine is thread safe and calls no unsafe routines */
-  /* Purpose: Free all memory associated with dynamically allocated limit structure list */
+  /* Purpose: Free all memory associated with dynamically allocated lmt_msa_sct structure list */
   int idx;
-  
+
   for(idx=0;idx<lmt_all_nbr;idx++) lmt_all_lst[idx]=nco_lmt_all_free(lmt_all_lst[idx]);
-  
+
   /* Free structure pointer last */
-  lmt_all_lst=(lmt_all_sct **)nco_free(lmt_all_lst);
-  
+  lmt_all_lst=(lmt_msa_sct **)nco_free(lmt_all_lst);
+
   return lmt_all_lst;
 } /* end nco_lmt_all_lst_free() */
 
@@ -83,86 +233,97 @@ nco_lmt_sct_mk /* [fnc] Create stand-alone limit structure for given dimension *
  const nco_bool FORTRAN_IDX_CNV) /* I [flg] Hyperslab indices obey Fortran convention */
 {
   /* Purpose: Create stand-alone limit structure just for given dimension
-     ncra calls nco_lmt_sct_mk() to generate record dimension limit structure */
-  
+  ncra.c calls nco_lmt_sct_mk() to generate record dimension limit structure
+
+  This is a complex routine fundamental to most of NCO
+  It is easy to make subtle errors when changing it
+  Please ask CSZ to review any significant patches to this routine */
+
   int idx;
   int rcd; /* [rcd] Return code */
-  
+
   lmt_sct *lmt_dim;
-  
+
   lmt_dim=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
-  
+
   /* Initialize defaults to False, override later if warranted */
   lmt_dim->is_usr_spc_lmt=False; /* True if any part of limit is user-specified, else False */
   lmt_dim->is_usr_spc_max=False; /* True if user-specified, else False */
   lmt_dim->is_usr_spc_min=False; /* True if user-specified, else False */
-  /* rec_skp_nsh_spf is used for record dimension in multi-file operators */
-  lmt_dim->rec_skp_nsh_spf=0L; /* Number of records skipped in initial superfluous files */
-  
+  /* rec_skp_ntl_spf, rec_skp_vld_prv, rec_in_cml, and rec_rmn_prv_drn only used for MFO record dimension */
+  lmt_dim->rec_skp_ntl_spf=0L; /* Number of records skipped in initial superfluous files */
+  lmt_dim->rec_skp_vld_prv=0L; /* Number of records skipped since previous good one */
+  lmt_dim->rec_in_cml=0L; /* Number of records, read or not, in previously processed files */
+  lmt_dim->rec_rmn_prv_drn=0L; /* Records remaining-to-be-read to complete duration group from previous file */
+
   for(idx=0;idx<lmt_nbr;idx++){
     /* Copy user-specified limits, if any */
     if(lmt[idx]->id == dmn_id){
       lmt_dim->is_usr_spc_lmt=True; /* True if any part of limit is user-specified, else False */
       if(lmt[idx]->max_sng == NULL){
-	lmt_dim->max_sng=NULL;
+        lmt_dim->max_sng=NULL;
       }else{
-	lmt_dim->max_sng=(char *)strdup(lmt[idx]->max_sng);
-	lmt_dim->is_usr_spc_max=True; /* True if user-specified, else False */
+        lmt_dim->max_sng=(char *)strdup(lmt[idx]->max_sng);
+        lmt_dim->is_usr_spc_max=True; /* True if user-specified, else False */
       } /* end if */
       if(lmt[idx]->min_sng == NULL){
-	lmt_dim->min_sng=NULL;
+        lmt_dim->min_sng=NULL;
       }else{
-	lmt_dim->min_sng=(char *)strdup(lmt[idx]->min_sng);
-	lmt_dim->is_usr_spc_min=True; /* True if user-specified, else False */
+        lmt_dim->min_sng=(char *)strdup(lmt[idx]->min_sng);
+        lmt_dim->is_usr_spc_min=True; /* True if user-specified, else False */
       } /* end if */
       if(lmt[idx]->srd_sng) lmt_dim->srd_sng=(char *)strdup(lmt[idx]->srd_sng); else lmt_dim->srd_sng=NULL;
+      if(lmt[idx]->drn_sng) lmt_dim->drn_sng=(char *)strdup(lmt[idx]->drn_sng); else lmt_dim->drn_sng=NULL;
+      if(lmt[idx]->mro_sng) lmt_dim->mro_sng=(char *)strdup(lmt[idx]->mro_sng); else lmt_dim->mro_sng=NULL;
       lmt_dim->nm=(char *)strdup(lmt[idx]->nm);
       break;
     } /* end if */
   } /* end loop over idx */
-  
+
   /* If this limit was not user-specified, then ... */
   if(idx == lmt_nbr){
     /* Create default limits to look as though user-specified them */
     char dmn_nm[NC_MAX_NAME];
     long cnt;
     int max_sng_sz;
-    
+
     /* Fill-in limits with default parsing information */
     rcd=nco_inq_dim_flg(nc_id,dmn_id,dmn_nm,&cnt);
-    
+
     if(rcd == NC_EBADDIM){
-      (void)fprintf(stdout,"%s: ERROR attempting to find non-existent dimension with id = %d in nco_lmt_sct_mk()\n",prg_nm_get(),dmn_id);
-      nco_exit(EXIT_FAILURE);
+      (void)fprintf(stdout,"%s: ERROR attempting to find non-existent dimension with ID = %d in nco_lmt_sct_mk()\n",nco_prg_nm_get(),dmn_id);
+      return False;
     } /* end if */
-    
+
     lmt_dim->nm=(char *)strdup(dmn_nm);
     lmt_dim->srd_sng=NULL;
+    lmt_dim->drn_sng=NULL;
+    lmt_dim->mro_sng=NULL;
     /* Generate min and max strings to look as if user had specified them
-       Adjust accordingly if FORTRAN_IDX_CNV was requested for other dimensions
-       These sizes will later be decremented in nco_lmt_evl() where all information
-       is converted internally to C based indexing representation.
-       Ultimately this problem arises because I want nco_lmt_evl() to think the
-       user always did specify this dimension's hyperslab.
-       Otherwise, problems arise when FORTRAN_IDX_CNV is specified by the user 
-       along with explicit hypersalbs for some dimensions excluding the record
-       dimension.
-       Then, when nco_lmt_sct_mk() creates the record dimension structure, it must
-       be created consistently with the FORTRAN_IDX_CNV flag for the other dimensions.
-       In order to do that, fill in max_sng, min_sng, and srd_sng
-       arguments with strings as if they had been read from keyboard.
-       An alternate solution is to add flag to lmt_sct indicating whether this
-       limit struct had been automatically generated and then act accordingly. */
+    Adjust accordingly if FORTRAN_IDX_CNV was requested for other dimensions
+    These sizes will later be decremented in nco_lmt_evl() where all information
+    is converted internally to C-based indexing representation.
+    Ultimately this problem arises because I want nco_lmt_evl() to think the
+    user always did specify this dimension's hyperslab.
+    Otherwise, problems arise when FORTRAN_IDX_CNV is specified by the user 
+    along with explicit hypersalbs for some dimensions excluding the record
+    dimension.
+    Then, when nco_lmt_sct_mk() creates the record dimension structure, it must
+    be created consistently with the FORTRAN_IDX_CNV flag for the other dimensions.
+    In order to do that, fill in max_sng, min_sng, and srd_sng
+    arguments with strings as if they had been read from keyboard.
+    An alternate solution is to add flag to lmt_sct indicating whether this
+    limit struct had been automatically generated and then act accordingly. */
     /* Decrement cnt to C-index value if necessary */
     if(!FORTRAN_IDX_CNV) cnt--; 
     if(cnt < 0L){
-      if(cnt == -1L) (void)fprintf(stdout,"%s: ERROR nco_lmt_sct_mk() reports record variable exists and is size zero, i.e., has no records yet.\n",prg_nm_get());
-      (void)fprintf(stdout,"%s: HINT: Perform record-oriented operations only after file has valid records.\n",prg_nm_get());
-      (void)fprintf(stdout,"%s: cnt < 0 in nco_lmt_sct_mk()\n",prg_nm_get());
-      nco_exit(EXIT_FAILURE);
+      if(cnt == -1L) (void)fprintf(stdout,"%s: ERROR nco_lmt_sct_mk() reports record variable exists and is size zero, i.e., has no records yet.\n",nco_prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT: Perform record-oriented operations only after file has valid records.\n",nco_prg_nm_get());
+      (void)fprintf(stdout,"%s: cnt < 0 in nco_lmt_sct_mk()\n",nco_prg_nm_get());
+      return False;
     } /* end if */
     /* cnt < 10 covers negative numbers and SIGFPE from log10(cnt==0) 
-       Adding 1 is required for cnt=10,100,1000... */
+    Adding 1 is required for cnt=10,100,1000... */
     if(cnt < 10L) max_sng_sz=1; else max_sng_sz=1+(int)ceil(log10((double)cnt));
     /* Add one for NUL terminator */
     lmt_dim->max_sng=(char *)nco_malloc(sizeof(char)*(max_sng_sz+1));
@@ -173,100 +334,1120 @@ nco_lmt_sct_mk /* [fnc] Create stand-alone limit structure for given dimension *
       lmt_dim->min_sng=(char *)strdup("0");
     } /* end else */
   } /* end if user did not explicity specify limits for this dimension */
-  
+
   return lmt_dim;
-  
+
 } /* end nco_lmt_sct_mk() */
 
+lmt_sct ** /* O [sct] Structure list with user-specified strings for min and max limits */
+nco_lmt_prs /* [fnc] Create limit structures with name, min_sng, max_sng elements */
+(const int lmt_nbr, /* I [nbr] number of dimensions with limits */
+ CST_X_PTR_CST_PTR_CST_Y(char,lmt_arg)) /* I [sng] List of user-specified dimension limits */
+{
+  /* Purpose: Set name, min_sng, max_sng elements of comma separated list of names and ranges. 
+  Routine merely evaluates syntax of input expressions and does validate dimensions or
+  ranges against those present in input netCDF file. */
+
+  /* Valid syntax adheres to nm,[min_sng][,[max_sng][,[srd_sng][,[drn_sng]]]] */
+
+  char **arg_lst;
+
+  char *msg_sng=NULL_CEWI; /* [sng] Error message */
+
+  const char dlm_sng[]=",";
+
+  lmt_sct **lmt=NULL_CEWI;
+
+  int idx;
+  int arg_nbr;
+
+  nco_bool NCO_SYNTAX_ERROR=False; /* [flg] Syntax error in hyperslab specification */
+
+  if(lmt_nbr > 0) lmt=(lmt_sct **)nco_malloc(lmt_nbr*sizeof(lmt_sct *));
+  for(idx=0;idx<lmt_nbr;idx++){
+    /* Process hyperslab specifications as normal text list */
+    arg_lst=nco_lst_prs_2D(lmt_arg[idx],dlm_sng,&arg_nbr);
+
+    /* Check syntax */
+    if(arg_nbr < 2){ /* Need more than just dimension name */
+      msg_sng=strdup("Need more than just dimension name");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_nbr > 6){ /* Too much information */
+      msg_sng=strdup("Too many (more than 6) arguments");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_lst[0] == NULL){ /* Dimension name not specified */
+      msg_sng=strdup("Dimension name not specified");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_nbr == 2 && arg_lst[1] == NULL){ /* No min specified */
+      msg_sng=strdup("Must specify minimum value");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_nbr == 3 && arg_lst[1] == NULL && arg_lst[2] == NULL){ /* No min or max when stride not specified */
+      msg_sng=strdup("Must specify minimum and/or maximum value since stride is also empty");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_nbr == 4 && arg_lst[3] == NULL){ /* Stride should be specified */
+      msg_sng=strdup("Stride must be specified (and be a positive integer)");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_nbr == 5 && arg_lst[4] == NULL){ /* Duration should be specified */
+      msg_sng=strdup("Duration must be specified (and be a positive integer)");
+      NCO_SYNTAX_ERROR=True;
+    }else if(arg_nbr == 6 && arg_lst[5] == NULL){ /* Group-mode should be specified */
+      msg_sng=strdup("Group-mode must be specified (as 'm' or 'M')");
+      NCO_SYNTAX_ERROR=True;
+    } /* end else */
+
+    if(NCO_SYNTAX_ERROR){
+      (void)fprintf(stdout,"%s: ERROR parsing hyperslab specification for dimension %s\n%s\n%s: HINT Conform request to hyperslab documentation at http://nco.sf.net/nco.html#hyp\n",nco_prg_nm_get(),lmt_arg[idx],msg_sng,nco_prg_nm_get());
+      msg_sng=(char *)nco_free(msg_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* !NCO_SYNTAX_ERROR */
+
+    /* Initialize structure */
+    /* lmt strings that are not explicitly set by user remain NULL, i.e., 
+    specifying default setting will appear as if nothing at all was set.
+    Hopefully, in routines that follow, branch followed when dimension has
+    all default settings specified (e.g.,"-d foo,,,,") yields same answer
+    as branch for which no hyperslab along that dimension was set. */
+    lmt[idx]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+    /* Initialize to NULL/invalid */
+    (void)nco_lmt_init(lmt[idx]);
+
+    lmt[idx]->nm=NULL;
+    lmt[idx]->is_usr_spc_lmt=True; /* True if any part of limit is user-specified, else False */
+    lmt[idx]->min_sng=NULL;
+    lmt[idx]->max_sng=NULL;
+    lmt[idx]->srd_sng=NULL;
+    lmt[idx]->drn_sng=NULL;
+    lmt[idx]->mro_sng=NULL;
+    /* rec_skp_ntl_spf is used for record dimension in multi-file operators */
+    lmt[idx]->rec_skp_ntl_spf=0L; /* Number of records skipped in initial superfluous files */
+
+    /* Fill-in structure */
+    lmt[idx]->nm=arg_lst[0];
+    lmt[idx]->min_sng=arg_lst[1];
+    /* Setting min_sng and max_sng to same pointer would lead to dangerous double-free() condition */
+    if(arg_nbr <= 2) lmt[idx]->max_sng=(char *)strdup(arg_lst[1]);
+    if(arg_nbr > 2) lmt[idx]->max_sng=arg_lst[2]; 
+    if(arg_nbr > 3) lmt[idx]->srd_sng=arg_lst[3];
+    if(arg_nbr > 4) lmt[idx]->drn_sng=arg_lst[4];
+    if(arg_nbr > 5) lmt[idx]->mro_sng=arg_lst[5];
+
+    if(lmt[idx]->max_sng == NULL) lmt[idx]->is_usr_spc_max=False; else lmt[idx]->is_usr_spc_max=True;
+    if(lmt[idx]->min_sng == NULL) lmt[idx]->is_usr_spc_min=False; else lmt[idx]->is_usr_spc_min=True;
+
+    /* Initialize types used to re-base coordinate variables */
+    lmt[idx]->origin=0.0;
+    lmt[idx]->rbs_sng=NULL_CEWI;
+    lmt[idx]->lmt_cln=cln_nil;
+
+    /* 20130903: Initialize cumulative number of records in all files opened so far (multi-file record dimension only) */
+    lmt[idx]->rec_in_cml=0L;
+
+    /* Free current pointer array to strings, leaving untouched the strings themselves
+    They will be free()'d with limit structures in nco_lmt_lst_free() */
+    arg_lst=(char **)nco_free(arg_lst);
+  } /* End loop over lmt structure list */
+
+  return lmt;
+} /* end nco_lmt_prs() */
+
+int /* O [enm] Limit type */
+nco_lmt_typ /* [fnc] Determine limit type */
+(char *sng) /* I [ptr] Pointer to limit string */
+{
+  /* Purpose: Determine type of user-specified limit */
+
+  /* Test for UDUnits unit string, then simple coordinate, 
+     then date/time string (i.e., YYYY-MM-DD), else default to dimensional index */
+
+  /* Space delimits user-specified units, e.g., "3 meters" */
+  if(strchr(sng,' ')) return lmt_udu_sng;
+  /* Colon delimits user-specified units, e.g., '1918-11-11 11:00:0.0' */
+  if(strchr(sng,':')) return lmt_udu_sng;
+
+  /* Decimal point (very common so check early), e.g., "3.0" */
+  if(strchr(sng,'.')) return lmt_crd_val;
+
+  /* Non-decimal (non-UDUnits) coordinate value, e.g., "3e10" or "3d10" */
+  if(strchr(sng,'E') || strchr(sng,'e') || strchr(sng,'D') || strchr(sng,'d')) return lmt_crd_val;
+
+  /* Other date-like strings */
+  if(
+     /* String contains non-leading dash with yyyy-mm-dd */
+     (strchr(sng,'-') && ((char *)strchr(sng,'-') != (char *)sng))
+     || False){
+    int yyyy,mm,dd;
+    /* Scan for yyyy-mm-dd */
+    if(sscanf(sng,"%d-%d-%d",&yyyy,&mm,&dd) == 3) return lmt_udu_sng;
+  }  /* endif date-like string */
+
+  /* Default: Limit is dimension index */
+  return lmt_dmn_idx;
+} /* end nco_lmt_typ() */
+
+char * /* O [sng] Units string */
+nco_lmt_get_udu_att /* Returns specified attribute otherwise NULL */
+(const int nc_id, /* I [idx] netCDF file ID */
+ const int var_id,
+ const char *att_nm) /* I [id] Variable ID whose attribute to read */
+{
+  /* Grab units attribute from disk */
+  nc_type att_typ; 
+  long att_sz;
+  char *fl_udu_sng=NULL_CEWI;
+
+  if(nco_inq_att_flg(nc_id,var_id,att_nm,&att_typ,&att_sz) == NC_NOERR){
+    /* Allocate memory for attribute */
+    if(att_typ == NC_CHAR){
+      fl_udu_sng=(char *)nco_malloc((att_sz+1UL)*sizeof(char));
+      /* Get 'units' attribute */
+      (void)nco_get_att(nc_id,var_id,att_nm,fl_udu_sng,att_typ);
+      fl_udu_sng[att_sz]='\0';
+    } /* !NC_CHAR */
+  } /* endif */
+  return fl_udu_sng;
+} /* end nco_lmt_get_udu_att() */
+
+void
+nco_prt_lmt                    /* [fnc] Print limit information */
+(lmt_sct lmt,                  /* I [sct] Limit structure */
+ int min_lmt_typ,              /* I [nbr] Limit type */
+ nco_bool FORTRAN_IDX_CNV,     /* I [flg] Hyperslab indices obey Fortran convention */
+ nco_bool flg_no_data_ok,      /* I [flg] True if file contains no data for hyperslab */
+ long rec_usd_cml,             /* I [nbr] Number of valid records already processed (only used for record dimensions in multi-file operators) */
+ monotonic_direction_enm monotonic_direction, /* I [enm] Monotonic_direction */
+ nco_bool rec_dmn_and_mfo,     /* I [flg] True if record dimension in multi-file operator */
+ long cnt_rmn_ttl,             /* I [nbr] Total records to be read from this and all remaining files */
+ long cnt_rmn_crr,             /* I [nbr] Records to extract from current file */
+ long rec_skp_vld_prv_dgn)     /* I [nbr] Records skipped at end of previous valid file, if any (diagnostic only) */
+{
+  /* Purpose: Print limit information */
+
+  (void)fprintf(stderr,"Dimension hyperslabber nco_lmt_evl() diagnostics:\n");
+  (void)fprintf(stderr,"Dimension name = %s\n",lmt.nm);
+  (void)fprintf(stderr,"Limit type is %s\n",(min_lmt_typ == lmt_crd_val) ? "coordinate value" : (FORTRAN_IDX_CNV) ? "one-based dimension index" : "zero-based dimension index");
+  (void)fprintf(stderr,"Limit %s user-specified\n",(lmt.is_usr_spc_lmt) ? "is" : "is not");
+  (void)fprintf(stderr,"Limit %s record dimension\n",(lmt.is_rec_dmn) ? "is" : "is not");
+  (void)fprintf(stderr,"Current file %s specified hyperslab, data %s be read\n",(flg_no_data_ok) ? "is superfluous to" : "is required by",(flg_no_data_ok) ? "will not" : "will");
+  if(rec_dmn_and_mfo) (void)fprintf(stderr,"Cumulative number of records in all input files opened including this one = %li\n",lmt.rec_in_cml);
+  if(rec_dmn_and_mfo) (void)fprintf(stderr,"Records skipped in initial superfluous files = %li\n",lmt.rec_skp_ntl_spf);
+  if(rec_dmn_and_mfo) (void)fprintf(stderr,"Valid records read (and used) from previous files = %li\n",rec_usd_cml);
+  if(cnt_rmn_ttl != -1L) (void)fprintf(stderr,"Total records to be read from this and all following files = %li\n",cnt_rmn_ttl);
+  if(cnt_rmn_crr != -1L) (void)fprintf(stderr,"Records to be read from this file = %li\n",cnt_rmn_crr);
+  if(rec_skp_vld_prv_dgn != -1L) (void)fprintf(stderr,"rec_skp_vld_prv_dgn (previous file, if any) = %li \n",rec_skp_vld_prv_dgn);
+  if(rec_skp_vld_prv_dgn != -1L) (void)fprintf(stderr,"rec_skp_vld_prv (this file) = %li \n",lmt.rec_skp_vld_prv);
+  (void)fprintf(stderr,"min_sng = %s\n",lmt.min_sng == NULL ? "NULL" : lmt.min_sng);
+  (void)fprintf(stderr,"max_sng = %s\n",lmt.max_sng == NULL ? "NULL" : lmt.max_sng);
+  (void)fprintf(stderr,"srd_sng = %s\n",lmt.srd_sng == NULL ? "NULL" : lmt.srd_sng);
+  (void)fprintf(stderr,"drn_sng = %s\n",lmt.drn_sng == NULL ? "NULL" : lmt.drn_sng);
+  (void)fprintf(stderr,"mro_sng = %s\n",lmt.drn_sng == NULL ? "NULL" : lmt.mro_sng);
+  (void)fprintf(stderr,"monotonic_direction = %s\n",(monotonic_direction == not_checked) ? "not checked" : (monotonic_direction == increasing) ? "increasing" : "decreasing");
+  (void)fprintf(stderr,"min_val = %g\n",lmt.min_val);
+  (void)fprintf(stderr,"max_val = %g\n",lmt.max_val);
+  (void)fprintf(stderr,"min_idx = %li\n",lmt.min_idx);
+  (void)fprintf(stderr,"max_idx = %li\n",lmt.max_idx);
+  (void)fprintf(stderr,"srt = %li\n",lmt.srt);
+  (void)fprintf(stderr,"end = %li\n",lmt.end);
+  (void)fprintf(stderr,"cnt = %li\n",lmt.cnt);
+  (void)fprintf(stderr,"srd = %li\n",lmt.srd);
+  (void)fprintf(stderr,"drn = %li\n",lmt.drn);
+  (void)fprintf(stderr,"WRP = %s\n",lmt.srt > lmt.end ? "YES" : "NO");
+  (void)fprintf(stderr,"SRD = %s\n",lmt.srd != 1L ? "YES" : "NO");
+  (void)fprintf(stderr,"DRN = %s\n",lmt.drn != 1L ? "YES" : "NO");
+  (void)fprintf(stderr,"MRO = %s\n\n",lmt.flg_mro ? "YES" : "NO");
+}
+
 void
 nco_lmt_evl /* [fnc] Parse user-specified limits into hyperslab specifications */
 (int nc_id, /* I [idx] netCDF file ID */
  lmt_sct *lmt_ptr, /* I/O [sct] Structure from nco_lmt_prs() or from nco_lmt_sct_mk() to hold dimension limit information */
- long cnt_crr, /* I [nbr] Number of valid records already processed (only used for record dimensions in multi-file operators) */
+ long rec_usd_cml, /* I [nbr] Number of valid records already processed (only used for record dimensions in multi-file operators) */
  nco_bool FORTRAN_IDX_CNV) /* I [flg] Hyperslab indices obey Fortran convention */
 {
   /* NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
   /* Purpose: Take parsed list of dimension names, minima, and
      maxima strings and find appropriate indices into dimensions 
      for formulation of dimension start and count vectors, or fail trying. */
-  
-  nco_bool flg_no_data_error=False; /* True if domain brackets no data (and not an MFO/record coord) */
-  nco_bool flg_no_data=False; /* True if file contains no data for hyperslab */
-  nco_bool rec_dmn_and_mlt_fl_opr=False; /* True if record dimension in multi-file operator */
-  
-  char *fl_udu_sng=NULL_CEWI;   /* store units attribute of co-ordinate dim */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
-  
+
+  char *fl_udu_sng=NULL_CEWI;   /* Store units attribute of coordinate dimension */
+  char *msg_sng=NULL_CEWI; /* [sng] Error message */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+
+  nco_bool flg_no_data_err=False; /* True if domain brackets no data (and not an MFO/record coordinate) */
+  nco_bool flg_no_data_ok=False; /* True if file contains no data for hyperslab */
+  nco_bool rec_dmn_and_mfo=False; /* True if record dimension in multi-file operator */
+  nco_bool NCO_SYNTAX_ERROR=False; /* [flg] Syntax error in hyperslab specification */
+
   dmn_sct dim;
+
+  lmt_sct lmt;
+
+  int min_lmt_typ=int_CEWI;
+  int max_lmt_typ=int_CEWI;
+  monotonic_direction_enm monotonic_direction=not_checked; /* CEWI */
+  int nco_prg_id; /* Program ID */
+  int rcd=NC_NOERR; /* [enm] Return code */
+  int rec_dmn_id; /* [idx] Variable ID of record dimension, if any */
+
+  int dmn_ids_ult[NC_MAX_DIMS]; /* [nbr] Unlimited dimensions IDs array */
+  int nbr_dmn_ult; /* [nbr] Number of unlimited dimensions */
+  int fl_fmt; /* [nbr] File format */
+
+  long dmn_sz;
+  long cnt_rmn_crr=-1L; /* Records to extract from current file */
+  long cnt_rmn_ttl=-1L; /* Total records to be read from this and all remaining files */
+  long rec_skp_vld_prv_dgn=-1L; /* Records skipped at end of previous valid file, if any (diagnostic only) */
+
+  lmt=*lmt_ptr;
+
+  nco_prg_id=nco_prg_id_get(); /* Program ID */
+
+  /* Initialize limit structure */
+  lmt.flg_mro=False;
+  lmt.max_val=0.0;
+  lmt.min_val=0.0;
+  lmt.drn=1L;
+  lmt.srd=1L;
+  lmt.flg_input_complete=False;
+
+  /* Get dimension ID */
+  rcd=nco_inq_dimid_flg(nc_id,lmt.nm,&lmt.id);
+  if(rcd != NC_NOERR){
+    (void)fprintf(stdout,"%s: ERROR dimension %s is not in input file\n",nco_prg_nm_get(),lmt.nm);
+    nco_exit(EXIT_FAILURE);
+  } /* endif */
+
+  /* Logic on whether to allow skipping current file depends on whether limit
+     is specified for record dimension in multi-file operators.
+     This information is not used in single-file operators, though whether
+     the limit is a record limit may be tested.
+     Program defensively and define this flag in all cases. */
+
+  (void)nco_inq_format(nc_id,&fl_fmt);
+
+   /* Obtain unlimited dimensions */
+  (void)nco_inq_unlimdims(nc_id,&nbr_dmn_ult,dmn_ids_ult);
+
+  rec_dmn_id=-1; 
+
+  if(fl_fmt == NC_FORMAT_NETCDF4){
+    /* Loop dimensions */
+    for(int idx_dmn=0;idx_dmn<nbr_dmn_ult;idx_dmn++){
+      /* Match ID found by name; name is the same for multi -file operators  */
+      if (lmt.id == dmn_ids_ult[idx_dmn]){
+        rec_dmn_id=dmn_ids_ult[idx_dmn];
+      } /* Match ID found by name  */
+    } /* Loop dimensions */
+
+    /* NetCDF3 case */
+  } else {
+    rec_dmn_id=dmn_ids_ult[0];
+  } /* NetCDF3 case */
+
+  if(lmt.id == rec_dmn_id) lmt.is_rec_dmn=True; else lmt.is_rec_dmn=False;
+  if(lmt.is_rec_dmn && (nco_prg_id == ncra || nco_prg_id == ncrcat)) rec_dmn_and_mfo=True; else rec_dmn_and_mfo=False;
+
+  /* Get dimension size */
+  (void)nco_inq_dimlen(nc_id,lmt.id,&dim.sz);
+
+  /* Shortcut to avoid indirection */
+  dmn_sz=dim.sz;
+  if(rec_dmn_and_mfo){
+    lmt.rec_dmn_sz=dmn_sz;
+    lmt.idx_end_max_abs=lmt.rec_in_cml+dmn_sz-1L; /* Maximum allowed index in record dimension */
+  } /* !rec_dmn_and_mfo */
+
+  /* Bomb if dmn_sz < 1 */
+  if(dmn_sz < 1L){
+    (void)fprintf(stdout,"%s: ERROR Size of dimension %s is %li in input file, but must be > 0 in order to apply limits.\n",nco_prg_nm_get(),lmt.nm,dmn_sz);
+    nco_exit(EXIT_FAILURE);
+  } /* end if */
+
+  if(lmt.srd_sng){
+    if(strchr(lmt.srd_sng,'.') || strchr(lmt.srd_sng,'e') || strchr(lmt.srd_sng,'E') || strchr(lmt.srd_sng,'d') || strchr(lmt.srd_sng,'D')){
+      (void)fprintf(stdout,"%s: ERROR Requested stride for %s, %s, must be integer\n",nco_prg_nm_get(),lmt.nm,lmt.srd_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    lmt.srd=strtol(lmt.srd_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+    if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.srd_sng,"strtol",sng_cnv_rcd);
+    if(lmt.srd < 1L){
+      (void)fprintf(stdout,"%s: ERROR Stride for %s is %li but must be > 0\n",nco_prg_nm_get(),lmt.nm,lmt.srd);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+  } /* !lmt.srd_sng */
+
+  if(lmt.drn_sng){
+    if(strchr(lmt.drn_sng,'.') || strchr(lmt.drn_sng,'e') || strchr(lmt.drn_sng,'E') || strchr(lmt.drn_sng,'d') || strchr(lmt.drn_sng,'D')){
+      (void)fprintf(stdout,"%s: ERROR Requested duration for %s, %s, must be integer\n",nco_prg_nm_get(),lmt.nm,lmt.drn_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    lmt.drn=strtol(lmt.drn_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+    if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.drn_sng,"strtol",sng_cnv_rcd);
+    if(lmt.drn < 1L){
+      (void)fprintf(stdout,"%s: ERROR Duration for %s is %li but must be > 0\n",nco_prg_nm_get(),lmt.nm,lmt.drn);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    if(nco_prg_id != ncra && nco_prg_id != ncrcat){
+      (void)fprintf(stdout,"%s: ERROR Duration only implemented for ncra and ncrcat\n",nco_prg_nm_get());
+      nco_exit(EXIT_FAILURE);
+    } /* end ncra */
+  } /* !lmt.drn_sng */
+
+  if(lmt.mro_sng){
+    if(strcasecmp(lmt.mro_sng,"m")){
+      (void)fprintf(stdout,"%s: ERROR Requested MRO flag for %s, \"%s\", must be 'm' or 'M'\n",nco_prg_nm_get(),lmt.nm,lmt.mro_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    lmt.flg_mro=True;
+  } /* !lmt.mro_sng */
+
+  /* In case flg_mro is set in ncra2.c by --mro */
+  if(lmt.flg_mro){
+    if(nco_prg_id == ncrcat){
+      (void)fprintf(stdout,"%s: INFO Specifying Multi-Record Output (MRO) option ('m', 'M', or --mro) is redundant. MRO is always true for ncrcat.\n",nco_prg_nm_get());
+    }else if(nco_prg_id != ncra){
+      (void)fprintf(stdout,"%s: ERROR Multi-Record Output (MRO) ('m', 'M', or --mro) is only valid for ncra.\n",nco_prg_nm_get());
+      nco_exit(EXIT_FAILURE);
+    } /* end else */
+  } /* !lmt.mro_sng */
+
+  /* If min_sng and max_sng are both NULL then set type to lmt_dmn_idx */
+  if(lmt.min_sng == NULL && lmt.max_sng == NULL){
+    /* Limiting indices will be set to default extrema a bit later */
+    min_lmt_typ=max_lmt_typ=lmt_dmn_idx;
+  }else{
+    /* min_sng and max_sng are not both NULL */
+    /* Limit is coordinate value if string contains decimal point or is in exponential format 
+    Otherwise limit is interpreted as zero-based dimension offset */
+    if(lmt.min_sng) min_lmt_typ=nco_lmt_typ(lmt.min_sng);
+    if(lmt.max_sng) max_lmt_typ=nco_lmt_typ(lmt.max_sng);
+
+    /* Copy lmt_typ from defined limit to undefined */
+    if(lmt.min_sng == NULL) min_lmt_typ=max_lmt_typ;
+    if(lmt.max_sng == NULL) max_lmt_typ=min_lmt_typ;
+  } /* end else */
+
+  /* Both min_lmt_typ and max_lmt_typ are now defined
+  Continue only if both limits are of the same type */
+  if(min_lmt_typ != max_lmt_typ){
+    (void)fprintf(stdout,"%s: ERROR -d %s,%s,%s\n",nco_prg_nm_get(),lmt.nm,lmt.min_sng,lmt.max_sng);
+    (void)fprintf(stdout,"Limits on dimension \"%s\" must be of same numeric type:\n",lmt.nm);
+    (void)fprintf(stdout,"\"%s\" was interpreted as a %s.\n",lmt.min_sng,(min_lmt_typ == lmt_crd_val) ? "coordinate value" : (FORTRAN_IDX_CNV) ? "one-based dimension index" : "zero-based dimension index");
+    (void)fprintf(stdout,"\"%s\" was interpreted as a %s.\n",lmt.max_sng,(max_lmt_typ == lmt_crd_val) ? "coordinate value" : (FORTRAN_IDX_CNV) ? "one-based dimension index" : "zero-based dimension index");
+    (void)fprintf(stdout,"(Limit arguments containing a decimal point (or in exponential format) are interpreted as coordinate values; arguments without a decimal point are interpreted as zero-based or one-based (depending on -F switch) dimensional indices.)\n");
+    nco_exit(EXIT_FAILURE);
+  } /* end if */
+  lmt.lmt_typ=min_lmt_typ;
+
+  /* Coordinate re-basing code */
+  lmt.origin=0.0;
+  /* Get variable ID of coordinate */
+  rcd=nco_inq_varid_flg(nc_id,lmt.nm,&dim.cid);
+  if(rcd == NC_NOERR){
+    char *cln_sng=NULL_CEWI;
+
+    fl_udu_sng=nco_lmt_get_udu_att(nc_id,dim.cid,"units"); /* Units attribute of coordinate variable */
+    cln_sng=nco_lmt_get_udu_att(nc_id,dim.cid,"calendar"); /* Calendar attribute */
+
+    if(rec_dmn_and_mfo && fl_udu_sng && lmt.rbs_sng){ 
+#ifdef ENABLE_UDUNITS
+      /* Re-base and reset origin to 0.0 if re-basing fails */
+      if(nco_cln_clc_org(fl_udu_sng,lmt.rbs_sng,lmt.lmt_cln,&lmt.origin) != NCO_NOERR) lmt.origin=0.0;
+#endif /* !ENABLE_UDUNITS */
+    } /* endif */
+
+    /* ncra and ncrcat read the "calendar" attribute in main() 
+       Avoid multiple reads of calendar attribute in multi-file operations */
+    if(!rec_dmn_and_mfo){
+      if(cln_sng) lmt.lmt_cln=nco_cln_get_cln_typ(cln_sng); else lmt.lmt_cln=cln_nil;
+    } /* endif */
+    if(cln_sng) cln_sng=(char *)nco_free(cln_sng);
+  } /* end if limit is coordinate */
+
+  if((lmt.lmt_typ == lmt_crd_val) || (lmt.lmt_typ == lmt_udu_sng)){
+    double *dmn_val_dp;
+
+    double dmn_max;
+    double dmn_min;
+
+    long max_idx;
+    long min_idx;
+    long tmp_idx;
+    long dmn_srt=0L;
+
+    /* Get coordinate type */
+    (void)nco_inq_vartype(nc_id,dim.cid,&dim.type);
+
+    /* Warn when coordinate type is weird */
+    if(dim.type == NC_BYTE || dim.type == NC_UBYTE || dim.type == NC_CHAR || dim.type == NC_STRING) (void)fprintf(stderr,"\n%s: WARNING Coordinate %s is type %s. Dimension truncation is unpredictable.\n",nco_prg_nm_get(),lmt.nm,nco_typ_sng(dim.type));
+
+    /* if(lmt.drn != 1L) (void)fprintf(stderr,"\n%s: WARNING Hyperslabs for %s are based on coordinate values rather than dimension indices. The behavior of the duration hyperslab argument is ill-defined, unpredictable, and unsupported for coordinate-based hyperslabs. Only min, max, and stride are supported for coordinate-value based hyperslabbing. Duration may or may not work as you intend. Use at your own risk.\n",nco_prg_nm_get(),lmt.nm); */
+
+    /* Allocate enough space to hold coordinate */
+    dmn_val_dp=(double *)nco_malloc(dmn_sz*nco_typ_lng(NC_DOUBLE));
+
+#ifdef _OPENMP
+#pragma omp critical
+#endif /* _OPENMP */
+    { /* begin OpenMP critical */
+      /* Block is critical for identical in_id's
+      Block is thread-safe for distinct in_id's */
+      /* 20110221: replace nco_get_vara() with nc_get_vara_double() */
+      /* Retrieve this coordinate */
+      nc_get_vara_double(nc_id,dim.cid,(const size_t *)&dmn_srt,(const size_t *)&dmn_sz,dmn_val_dp);
+    } /* end OpenMP critical */
+
+    /* Officially change type */
+    dim.type=NC_DOUBLE;
+
+    /* Assuming coordinate is monotonic, direction of monotonicity is determined by first two elements */
+    if(dmn_sz == 1L){
+      monotonic_direction=increasing;
+    }else{
+      if(dmn_val_dp[0] > dmn_val_dp[1]) monotonic_direction=decreasing; else monotonic_direction=increasing;
+    } /* end else */
+
+    if(monotonic_direction == increasing){
+      min_idx=0L;
+      max_idx=dmn_sz-1L;
+    }else{
+      min_idx=dmn_sz-1L;
+      max_idx=0L;
+    } /* end else */
+
+    /* Determine min and max values of entire coordinate */
+    dmn_min=dmn_val_dp[min_idx];
+    dmn_max=dmn_val_dp[max_idx];
+
+    /* Set defaults */  
+    lmt.min_val=dmn_val_dp[min_idx]; 
+    lmt.max_val=dmn_val_dp[max_idx];
+
+    /* Convert UDUnits strings if necessary */
+    /* If we are here then either min_sng or max_sng or both are set */
+    if(lmt.lmt_typ == lmt_udu_sng){
+
+      if(!fl_udu_sng){ 
+        (void)fprintf(stdout,"%s: ERROR attempting to read units attribute from variable \"%s\" \n",nco_prg_nm_get(),dim.nm);
+        nco_exit(EXIT_FAILURE);
+      } /* end if */
+
+      if(lmt.min_sng)
+	if(nco_cln_clc_org(lmt.min_sng,fl_udu_sng,lmt.lmt_cln,&lmt.min_val) != NCO_NOERR) 
+	  nco_exit(EXIT_FAILURE);
+
+      if(lmt.max_sng)
+	if(nco_cln_clc_org(lmt.max_sng,fl_udu_sng,lmt.lmt_cln,&lmt.max_val) != NCO_NOERR) 
+	  nco_exit(EXIT_FAILURE);
+
+    }else{ /* end UDUnits conversion */
+      /* Convert user-specified limits into double precision numeric values, or supply defaults */
+      if(lmt.min_sng){
+        lmt.min_val=strtod(lmt.min_sng,&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.min_sng,"strtod",sng_cnv_rcd);
+      } /* !lmt.min_sng */
+      if(lmt.max_sng){
+        lmt.max_val=strtod(lmt.max_sng,&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.max_sng,"strtod",sng_cnv_rcd);
+      } /* !lmt.max_sng */
+
+      /* Re-base coordinates as necessary in multi-file operatators (MFOs)
+      lmt.origin was calculated earlier in routine */
+      if(rec_dmn_and_mfo){ 
+        if(lmt.min_sng) lmt.min_val-=lmt.origin;
+        if(lmt.max_sng) lmt.max_val-=lmt.origin;   
+      }  /* endif MFO */
+    } /* end UDUnits conversion */
+
+    /* Warn when min_val > max_val (i.e., wrapped coordinate) */
+    if(nco_dbg_lvl_get() > nco_dbg_std && lmt.min_val > lmt.max_val) (void)fprintf(stderr,"%s: INFO Interpreting hyperslab specifications as wrapped coordinates [%s <= %g] and [%s >= %g]\n",nco_prg_nm_get(),lmt.nm,lmt.max_val,lmt.nm,lmt.min_val);
+
+    /* Fail when... */
+    if(
+      /* Following condition added 20000508, changes behavior of single point 
+      hyperslabs depending on whether hyperslab occurs in record dimension
+      during multi-file operator operation.
+      Altered behavior of single point hyperslabs so that single point
+      hyperslabs in the record coordinate (i.e., -d time,1.0,1.0) may be
+      treated differently than single point hyperslabs in other
+      coordinates. Multifile operators will skip files if single point
+      hyperslabs in record coordinate lay outside record coordinate
+      range of file. For non-record coordinates (and for all operators
+      besides ncra and ncrcat on record coordinates), single point
+      hyperslabs will choose the closest value rather than skip the file
+      (I believe). This should be verified. */
+      /* User specified single point, coordinate is not wrapped, and both extrema fall outside valid crd range */
+      (rec_dmn_and_mfo && (lmt.min_val == lmt.max_val) && ((lmt.min_val > dmn_max) || (lmt.max_val < dmn_min))) ||
+      /* User did not specify single point, coordinate is not wrapped, and either extrema falls outside valid crd range */
+      ((lmt.min_val < lmt.max_val) && ((lmt.min_val > dmn_max) || (lmt.max_val < dmn_min))) ||
+      /* User did not specify single point, coordinate is wrapped, and both extrema fall outside valid crd range */
+      ((lmt.min_val > lmt.max_val) && ((lmt.min_val > dmn_max) && (lmt.max_val < dmn_min))) ||
+      False){
+        /* Allow for possibility that current file is superfluous */
+        if(rec_dmn_and_mfo){
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        }else{
+          (void)fprintf(stdout,"%s: ERROR User-specified coordinate value range %g <= %s <= %g does not fall within valid coordinate range %g <= %s <= %g\n",nco_prg_nm_get(),lmt.min_val,lmt.nm,lmt.max_val,dmn_min,lmt.nm,dmn_max);
+          nco_exit(EXIT_FAILURE);
+        } /* end else */
+    } /* end if */
+
+    /* Armed with target coordinate minima and maxima, we are ready to bracket user-specified range */
+
+    /* If min_sng or max_sng were omitted, use extrema */
+    if(lmt.min_sng == NULL) lmt.min_idx=min_idx;
+    if(lmt.max_sng == NULL) lmt.max_idx=max_idx;
+
+    /* Single slice requires finding the closest coordinate */
+    if(lmt.min_val == lmt.max_val){
+      double dst_new;
+      double dst_old;
+
+      lmt.min_idx=0L;
+      dst_old=fabs(lmt.min_val-dmn_val_dp[0]);
+      for(tmp_idx=1L;tmp_idx<dmn_sz;tmp_idx++){
+        if((dst_new=fabs(lmt.min_val-dmn_val_dp[tmp_idx])) < dst_old){
+          dst_old=dst_new;
+          lmt.min_idx=tmp_idx;
+        } /* end if */
+      } /* end loop over tmp_idx */
+      lmt.max_idx=lmt.min_idx;
+
+    }else{ /* min_val != max_val */
+
+      /* Bracket specified extrema:
+      Should no coordinate values match the given criteria, flag the index with -1L
+      We defined the valid syntax such that single half range with -1L is not an error
+      This causes "-d lon,100.0,-100.0" to select [-180.0] when lon=[-180.0,-90.0,0.0,90.0] 
+      because one of the specified half-ranges is valid (there are coordinates < -100.0).
+      However, "-d lon,100.0,-200.0" should fail when lon=[-180.0,-90.0,0.0,90.0] because both 
+      of the specified half-ranges are invalid (no coordinate is > 100.0 or < -200.0).
+      -1L flags are replaced with correct indices (0L or dmn_sz-1L) following search loop block.
+      Overwriting -1L flags with 0L or dmn_sz-1L later is more heuristic than setting them = 0L here,
+      since 0L is valid search result. */
+      if(monotonic_direction == increasing){
+        if(lmt.min_sng){
+          /* Find index of smallest coordinate greater than min_val */
+          tmp_idx=0L;
+          while((dmn_val_dp[tmp_idx] < lmt.min_val) && (tmp_idx < dmn_sz)) tmp_idx++;
+          if(tmp_idx != dmn_sz) lmt.min_idx=tmp_idx; else lmt.min_idx=-1L;
+        } /* end if */
+        if(lmt.max_sng){
+          /* Find index of largest coordinate less than max_val */
+          tmp_idx=dmn_sz-1L;
+          while((dmn_val_dp[tmp_idx] > lmt.max_val) && (tmp_idx > -1L)) tmp_idx--;
+          if(tmp_idx != -1L) lmt.max_idx=tmp_idx; else lmt.max_idx=-1L;
+        } /* end if */
+        /* 20110221: csz fix hyperslab bug TODO nco1007 triggered by
+        ncks -O -v lat -d lat,20.,20.001 ~/nco/data/in.nc ~/foo.nc
+        This returned all values but should have returned none
+        Algorithm was broken because, although valid min and max indices existed,
+        they contained the empty set. 
+        Now when this happens, set flg_no_data_err block */
+        if( /* Points are not wrapped ... */
+          (lmt.min_val < lmt.max_val) && 
+          /* ... and valid indices were found for both bracketing points... */
+          (lmt.min_idx != -1L && lmt.max_idx != -1L) &&
+          /* ...and indices contain empty set, i.e., min_idx > max_idx for increasing data... */
+          lmt.min_idx > lmt.max_idx) flg_no_data_err=True;
+        /* end if monotonic_direction == increasing */
+      }else{ /* monotonic_direction == decreasing */
+        if(lmt.min_sng){
+          /* Find index of smallest coordinate greater than min_val */
+          tmp_idx=dmn_sz-1L;
+          while((dmn_val_dp[tmp_idx] < lmt.min_val) && (tmp_idx > -1L)) tmp_idx--;
+          if(tmp_idx != -1L) lmt.min_idx=tmp_idx; else lmt.min_idx=-1L;
+        } /* end if */
+        if(lmt.max_sng){
+          /* Find index of largest coordinate less than max_val */
+          tmp_idx=0L;
+          while((dmn_val_dp[tmp_idx] > lmt.max_val) && (tmp_idx < dmn_sz)) tmp_idx++;
+          if(tmp_idx != dmn_sz) lmt.max_idx=tmp_idx; else lmt.max_idx=-1L;
+        } /* end if */
+        if( /* Points are not wrapped ... */
+          (lmt.min_val > lmt.max_val) && 
+          /* ... and valid indices were found for both bracketing points... */
+          (lmt.min_idx != -1L && lmt.max_idx != -1L) &&
+          /* ...and indices contain empty set, i.e., min_idx < max_idx for decreasing data... */
+          lmt.min_idx < lmt.max_idx) flg_no_data_err=True;
+      } /* end else monotonic_direction == decreasing */
+
+      /* Case where both min_idx and max_idx = -1 was flagged as error above
+      Case of wrapped coordinate: Either, but not both, of min_idx or max_idx will be flagged with -1
+      See explanation above */
+      if(lmt.min_idx == -1L && (lmt.min_val > lmt.max_val)) lmt.min_idx=0L;
+      if(lmt.max_idx == -1L && (lmt.min_val > lmt.max_val)) lmt.max_idx=dmn_sz-1L;
+
+    } /* end if min_val != max_val */
+
+    /* User-specified ranges are now bracketed */
+
+    /* Convert indices of minima and maxima to srt and end indices */
+    if(monotonic_direction == increasing){
+      lmt.srt=lmt.min_idx;
+      lmt.end=lmt.max_idx;
+    }else{
+      lmt.srt=lmt.max_idx;
+      lmt.end=lmt.min_idx;
+    }  /* end else */
+
+    /* Free space allocated for dimension */
+    dmn_val_dp=(double*)nco_free(dmn_val_dp);
+
+    if(rec_dmn_and_mfo){ 
+      /* No wrapping with multi-file operators */ 
+      if((monotonic_direction == increasing && lmt.min_val > lmt.max_val) ||
+        (monotonic_direction == decreasing && lmt.min_val < lmt.max_val)){
+          flg_no_data_ok=True; 
+          goto no_data_ok;   
+      } /* endif */
+
+      if(rec_usd_cml == 0L){
+        /* Skipped records remains zero until valid records are processed */
+        lmt.rec_skp_vld_prv=0L;  
+      }else if(rec_usd_cml > 0L){
+        /* Otherwise, adjust starting index by records skipped in jumps across file boundaries */
+        lmt.srt+=lmt.srd-1L-lmt.rec_skp_vld_prv%lmt.srd; 
+        if(lmt.srt>lmt.end){
+          /* Do not allow record dimension wrapping in MFOs */
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif  */
+      } /* endif */
+
+      /* If we are here then there are valid records in current file */
+
+    } /* end if rec_dmn_and_mfo */
+
+  }else{ /* end if limit arguments were coordinate values */
+    /* Convert limit strings to zero-based indicial offsets */
+
+    /* Specifying stride alone, but not min or max, is legal, e.g., -d time,,,2
+    Thus is_usr_spc_lmt may be True, even though one or both of min_sng, max_sng is NULL
+    Furthermore, both min_sng and max_sng are artifically created by nco_lmt_sct_mk()
+    for record dimensions when the user does not explicitly specify limits.
+    In this case, min_sng_and max_sng are non-NULL though no limits were specified
+    In fact, min_sng and max_sng are set to the minimum and maximum string
+    values of the first file processed.
+    However, we can tell if these strings were artificially generated because 
+    nco_lmt_sct_mk() sets the is_usr_spc_lmt flag to False in such cases.
+    Subsequent files may have different numbers of records, but nco_lmt_sct_mk()
+    is only called once.
+    Thus we must update min_idx and max_idx here for each file
+    This causes min_idx and max_idx to be out of sync with min_sng and max_sng, 
+    which are only set in nco_lmt_sct_mk() for the first file.
+    In hindsight, artificially generating min_sng and max_sng may be bad idea */
+    /* Following logic is messy, but hard to simplify */
+    if(lmt.min_sng == NULL || !lmt.is_usr_spc_lmt){
+      /* No user-specified value available--generate minimal dimension index */
+      if(FORTRAN_IDX_CNV) lmt.min_idx=1L; else lmt.min_idx=0L;
+    }else{
+      /* Use user-specified limit when available */
+      lmt.min_idx=strtol(lmt.min_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.min_sng,"strtol",sng_cnv_rcd);
+    } /* end if */
+    if(lmt.max_sng == NULL || !lmt.is_usr_spc_lmt){
+      /* No user-specified value available---generate maximal dimension index */
+      if(FORTRAN_IDX_CNV) lmt.max_idx=dmn_sz; else lmt.max_idx=dmn_sz-1L;
+    }else{
+      /* Use user-specified limit when available */
+      lmt.max_idx=strtol(lmt.max_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.max_sng,"strtol",sng_cnv_rcd);
+    } /* end if */
+
+    /* Adjust indices if FORTRAN style input was specified */
+    if(FORTRAN_IDX_CNV){
+      /* 20120726: Die when Fortran index is zero */
+      if(lmt.min_idx == 0L || lmt.max_idx == 0L){
+        (void)fprintf(stdout,"%s: ERROR User-specified Fortran (1-based) index for dimension %s = 0.\n",nco_prg_nm_get(),lmt.nm);
+        msg_sng=strdup("Fortran indices must be >= 1");
+        NCO_SYNTAX_ERROR=True;
+      } /* endif illegal Fortran index */
+      /* 20120709: Adjust positive indices only */
+      if(lmt.min_idx > 0L) lmt.min_idx--;
+      if(lmt.max_idx > 0L) lmt.max_idx--;
+    } /* end if */
+
+    /* 20120709 Negative integer as min or max element of hyperslab specification indicates offset from end */
+    if(lmt.min_idx < 0L) lmt.min_idx+=dmn_sz-1L;
+    if(lmt.max_idx < 0L) lmt.max_idx+=dmn_sz-1L;
+
+    /* Exit if requested indices are always invalid for all operators... */
+    if(lmt.min_idx < 0L){
+      msg_sng=strdup("Minimum index is too negative");
+      NCO_SYNTAX_ERROR=True;
+    }else if(lmt.max_idx < 0L){
+      msg_sng=strdup("Maximum index is too negative");
+      NCO_SYNTAX_ERROR=True;
+    }else if(lmt.drn > lmt.srd){
+      (void)fprintf(stdout,"%s: ERROR User-specified duration exceeds stride for %s: %li > %li\n",nco_prg_nm_get(),lmt.nm,lmt.drn,lmt.srd);
+      msg_sng=strdup("Duration exceeds stride");
+      NCO_SYNTAX_ERROR=True;
+    }else if(!rec_dmn_and_mfo && lmt.min_idx >= dmn_sz){
+      msg_sng=strdup("Minimum index greater than size in non-MFO");
+      NCO_SYNTAX_ERROR=True;
+      (void)fprintf(stdout,"%s: ERROR User-specified dimension index range %li <= %s <= %li does not fall within valid dimension index range 0 <= %s <= %li\n",nco_prg_nm_get(),lmt.min_idx,lmt.nm,lmt.max_idx,lmt.nm,dmn_sz-1L);
+    } /* end if impossible indices */
+
+    if(NCO_SYNTAX_ERROR){
+      (void)fprintf(stdout,"%s: ERROR evaluating hyperslab specification for %s: %s\n%s: HINT Conform request to hyperslab documentation at http://nco.sf.net/nco.html#hyp\n",nco_prg_nm_get(),lmt.nm,msg_sng,nco_prg_nm_get());
+      msg_sng=(char *)nco_free(msg_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* !NCO_SYNTAX_ERROR */
+
+    /* NB: Duration is officially supported only for ncra and ncrcat (record dimension only) */
+    if(lmt.drn != 1L && !rec_dmn_and_mfo) (void)fprintf(stderr,"%s: WARNING Duration argument is only supported for the record dimension on ncra and ncrcat operations\n",nco_prg_nm_get());
+
+    /* Logic depends on whether this is record dimension in multi-file operator */
+    if(!rec_dmn_and_mfo || !lmt.is_usr_spc_lmt){
+      /* For non-record dimensions and for record dimensions where limit 
+      was automatically generated (to include whole file), starting
+      and ending indices are simply minimum and maximum indices already 
+      in structure */
+      lmt.srt=lmt.min_idx;
+      lmt.end=lmt.max_idx;
+    }else{
+      /* Initialize rec_skp_vld_prv to 0L on first call to nco_lmt_evl() 
+      This is necessary due to intrinsic hysterisis of rec_skp_vld_prv
+      rec_skp_vld_prv is used only by multi-file operators
+      rec_skp_vld_prv counts records skipped at end of previous valid file
+      rec_usd_cml and rec_skp_ntl_spf are both zero only for first file */
+      if(rec_usd_cml == 0L && lmt.rec_skp_ntl_spf == 0L) lmt.rec_skp_vld_prv=0L;
+
+      /* For record dimensions with user-specified limit, allow possibility 
+      that limit pertains to record dimension in a multi-file operator.
+      Then user-specified maximum index may exceed number of records in any one file
+      Thus lmt.srt does not necessarily equal lmt.min_idx and 
+      lmt.end does not necessarily equal lmt.max_idx */
+      /* NB: Stride is officially supported for ncks (all dimensions) and for ncra and ncrcat (record dimension only) */
+      if(lmt.srd != 1L && nco_prg_id != ncks && !lmt.is_rec_dmn) (void)fprintf(stderr,"%s: WARNING Stride argument for non-record dimension is only supported by ncks, use at your own risk...\n",nco_prg_nm_get());
+
+      { /* Block hides scope of local internal variables */
+        long srt_min_lcl; /* [idx] Minimum start index (in absolute index space, i.e., relative to first file) for current file */
+        long end_max_lcl; /* [idx] Maximum end   index (in absolute index space, i.e., relative to first file) for current file */
+
+        srt_min_lcl=(lmt.is_usr_spc_min ? lmt.min_idx : lmt.rec_in_cml+0L); 
+        end_max_lcl=(lmt.is_usr_spc_max ? lmt.max_idx : lmt.rec_in_cml+dmn_sz-1L); 
+
+        /* Maximum allowed index in record dimension */
+        lmt.idx_end_max_abs=end_max_lcl;
+
+        /* Are we past file containing end_max_lcl yet? */
+        if(end_max_lcl < lmt.rec_in_cml){
+          /* This and all subsequent files are superfluous because all requested records have already been read 
+          Optimize MFOs by checking "input complete" flag to jump out of file loop
+          Saves time because no other input files will be opened */
+          lmt.flg_input_complete=True;
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif past end_max_lcl */
+
+        /* Have we reached file containing srt_min_lcl yet? */
+        if(srt_min_lcl > lmt.rec_in_cml+dmn_sz-1L){
+          /* This and all previous files are superfluous because the starting record is in a subsequent file */
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif srt_min_lcl in future file */
+
+        /* Until records have been used, start index is srt_min_lcl adjusted for records contained in all previous files
+        Thereafter start index loses memory of/dependence on absolute start index, and only cares for how many records,
+        if any, were skipped since last valid record. This number, modulo stride, is new start index. */
+        if(rec_usd_cml == 0L) lmt.srt=srt_min_lcl-lmt.rec_in_cml; else lmt.srt=lmt.srd-1L-lmt.rec_skp_vld_prv%lmt.srd;
+
+        if(lmt.srt > dmn_sz-1L){
+          /* Perhaps data were read in previous file(s) yet next record is in future file due to long stride */
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif */
+
+        lmt.end=(end_max_lcl < lmt.rec_in_cml+dmn_sz) ? end_max_lcl-lmt.rec_in_cml : dmn_sz-1L;
+
+      } /* end block hides scope of local internal variables */
+
+      /* If we are here then there are valid records in current file */
+
+    } /* endif user-specified limits to record dimension */
+
+  } /* end else limit arguments are hyperslab indices */
+
+  /* NB: MFO record dimension never reaches this block if current file is superfluous
+  In that case code has already branched down to flg_data_ok or flg_data_err */
+  if(rec_dmn_and_mfo){ 
+    /* NB: This is---and must be---performed as integer arithmetic */ 
+    cnt_rmn_crr=1L+(lmt.end-lmt.srt)/lmt.srd;  
+    /* This fixes "sloppy" specification of end index by user, i.e., ensures that end index coincides with a stride */
+    lmt.end=lmt.srt+(cnt_rmn_crr-1L)*lmt.srd;   
+    /* Save current rec_skp_vld_prv for diagnostics (printed below) for this file */
+    rec_skp_vld_prv_dgn=lmt.rec_skp_vld_prv;
+    /* Next file must know how many records in this file come after (and thus will be skipped) last used record in this file */
+    lmt.rec_skp_vld_prv=dmn_sz-1L-lmt.end;
+  } /* !rec_dmn_and_mfo */      
+
+  /* Compute cnt from srt, end, and srd
+  This is fine for multi-file record dimensions since those operators read-in one
+  record at a time and thus never actually use lmt.cnt for record dimension. */
+  if(lmt.srd == 1L){
+    if(lmt.srt <= lmt.end) lmt.cnt=lmt.end-lmt.srt+1L; else lmt.cnt=dmn_sz-lmt.srt+lmt.end+1L;
+  }else{
+    if(lmt.srt <= lmt.end) lmt.cnt=1L+(lmt.end-lmt.srt)/lmt.srd; else lmt.cnt=1L+((dmn_sz-lmt.srt)+lmt.end)/lmt.srd;
+  } /* end else */
+
+  /* NB: Degenerate cases of WRP && SRD exist for which dmn_cnt_2 == 0
+  This occurs when srd is large enough, or max_idx small enough, 
+  such that no values are selected in the second read. 
+  e.g., "-d lon,60,0,10" if sz(lon)=128 has dmn_cnt_2 == 0
+  Since netCDF library reports an error reading and writing cnt=0 dimensions, kludge is necessary
+  Syntax ensures that it is always the second read, not the first, which is obviated
+  Therefore we convert these degenerate cases into non-wrapped coordinates to be processed by single read 
+  For these degenerate cases only, [srt,end] are not a permutation of [min_idx,max_idx] */
+  if(
+    (lmt.srd != 1L) && /* SRD */
+    (lmt.srt > lmt.end) && /* WRP */
+    (lmt.cnt == (1L+(dmn_sz-lmt.srt-1L)/lmt.srd)) && /* dmn_cnt_1 == cnt -> dmn_cnt_2 == 0 */
+    True){
+      long greatest_srd_multiplier_1st_hyp_slb; /* Greatest integer m such that srt+m*srd < dmn_sz */
+      long last_good_idx_1st_hyp_slb; /* C-index of last valid member of 1st hyperslab (= srt+m*srd) */
+      /* long left_over_idx_1st_hyp_slb;*/ /* # of elements from first hyperslab that count towards current stride */
+      long first_good_idx_2nd_hyp_slb; /* C-index of first valid member of 2nd hyperslab, if any */
+
+      /* NB: Perform these operations with integer arithmetic or else! */
+      /* Wrapped dimensions with stride may not start at idx 0 on second read */
+      greatest_srd_multiplier_1st_hyp_slb=(dmn_sz-lmt.srt-1L)/lmt.srd;
+      last_good_idx_1st_hyp_slb=lmt.srt+lmt.srd*greatest_srd_multiplier_1st_hyp_slb;
+      /* left_over_idx_1st_hyp_slb=dmn_sz-last_good_idx_1st_hyp_slb-1L;*/
+      first_good_idx_2nd_hyp_slb=(last_good_idx_1st_hyp_slb+lmt.srd)%dmn_sz;
+
+      /* Conditions causing dmn_cnt_2 == 0 */
+      if(first_good_idx_2nd_hyp_slb > lmt.end) lmt.end=last_good_idx_1st_hyp_slb;
+  } /* end if */
+
+  /* Cases where domain brackets no data, in error, have counts set to zero here
+  This kludge allows codepaths for both WRP and out-of-domain to flow without goto statements
+  Out-of-domain errors will soon exit with error, while WRP conditions will proceed */
+  if(flg_no_data_err) lmt.cnt=0L;
+
+  /* Exit when valid bracketed range contains no coordinates and that is not legal,
+  i.e., this is not a superfluous file in an MFO */
+  if(lmt.cnt == 0){
+    if(lmt.lmt_typ == lmt_crd_val) (void)fprintf(stdout,"%s: ERROR Domain %g <= %s <= %g brackets no coordinate values.\n",nco_prg_nm_get(),lmt.min_val,lmt.nm,lmt.max_val); 
+    if(lmt.lmt_typ == lmt_dmn_idx) (void)fprintf(stdout,"%s: ERROR Empty domain for %s\n",nco_prg_nm_get(),lmt.nm); 
+    nco_exit(EXIT_FAILURE);
+  } /* end if */
+
+  /* Coordinate-valued limits that bracket no values in current file jump here with goto
+  Index-valued limits with no values in current file flow here naturally */
+no_data_ok: /* end goto */
+  if(flg_no_data_ok){
+    /* File is superfluous (contributes no data) to specified hyperslab
+    Set output parameters to well-defined state
+    This state must not cause ncra or ncrcat to retrieve any data
+    ncra and ncrcat use loops for the record dimension, so this is
+    accomplished by setting loop control values (lmt_rec.srt > lmt_rec.end)
+    that cause record loop always to be skipped (never entered) */
+    lmt.srt=-1L;
+    lmt.end=lmt.srt-1L;
+    lmt.cnt=-1L;
+    /* Augment number of records skipped in initial superfluous files */
+    if(rec_usd_cml == 0L) lmt.rec_skp_ntl_spf+=dmn_sz; 
+    /* Augment records skipped since last good one */ 
+    lmt.rec_skp_vld_prv+=dmn_sz;
+    /* Set variables to preserve utility of diagnostics at end of routine */
+    cnt_rmn_crr=rec_skp_vld_prv_dgn=0L;
+  } /* endif */
+
+  /* Accumulate count of records in all opened files, including this one
+  Increment here at end so this structure member includes records from current file 
+  only at end of this routine, where it can only be used diagnostically
+  NB: Location of this augmentation is important! Moving it would have side-effects! */
+  lmt.rec_in_cml+=dmn_sz;
+
+  /* Place contents of working structure in location of returned structure */
+  *lmt_ptr=lmt;
+
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)nco_prt_lmt(lmt,min_lmt_typ,FORTRAN_IDX_CNV,flg_no_data_ok,rec_usd_cml,monotonic_direction,rec_dmn_and_mfo,cnt_rmn_ttl,cnt_rmn_crr,rec_skp_vld_prv_dgn);
+  } /* end dbg */
+
+  if(lmt.srt > lmt.end && !flg_no_data_ok){
+    if(nco_prg_id != ncks) (void)fprintf(stderr,"WARNING: Possible instance of Schweitzer data hole requiring better diagnostics TODO #148\n");
+    if(nco_prg_id != ncks) (void)fprintf(stderr,"HINT: If operation fails, try multislabbing (http://nco.sf.net/nco.html#msa) wrapped dimension using ncks first, and then apply %s to the resulting file\n",nco_prg_nm_get());
+  } /* end dbg */
+
+  fl_udu_sng=(char *)nco_free(fl_udu_sng);
+
+} /* end nco_lmt_evl() */
+
+void                      
+nco_lmt_evl_dmn_crd            /* [fnc] Parse user-specified limits into hyperslab specifications */
+(const int nc_id,              /* I [ID] netCDF file ID */
+ long rec_usd_cml,             /* I [nbr] Number of valid records already processed (only used for record dimensions in multi-file operators) */
+ nco_bool FORTRAN_IDX_CNV,     /* I [flg] Hyperslab indices obey Fortran convention */
+ const char * const grp_nm_fll,/* I [sng] Full group name (dimension or coordinate) */
+ const char * const nm,        /* I [sng] Name (dimension or coordinate) */
+ const size_t sz,              /* I [nbr] Size (dimension or coordinate) */
+ const nco_bool is_rec,        /* I [flg] Is a record (dimension or coordinate) */
+ const nco_bool is_crd,        /* I [flg] Is a coordinate variable */
+ lmt_sct *lmt_ptr)             /* I/O [sct] Structure from nco_lmt_prs() in input, filled on output  */
+{
+  /* Purpose: Take parsed list of dimension names, minima, and maxima strings 
+     and find appropriate indices into dimensions for formulation of 
+     dimension start and count vectors, or fail trying. 
+
+     Based on original nco_lmt_evl(). Used for both dimensions and coordinate variables.
+
+     Use case example:
+     /lon(4)
+     /g8/lon(2)
+     ncks -d lon,0,3,1 -v lon -H ~/nco/data/in_grp.nc
+     "-d lon,0,3,1" is valid for /lon(4) but not for /g8/lon(2)
+     
+     Reminder:
+     Coordinate values should be specified using real notation with a decimal point required in the value, 
+     whereas dimension indices are specified using integer notation without a decimal point.
+
+     ncks -d lat,-90.,90.,1 -H -v area ~/nco/data/in_grp.nc # limit type is defined as lmt_crd_val
+     ncks -d lat,0,1,1 -H -v area ~/nco/data/in_grp.nc # limit type is defined as lmt_dmn_idx
+
+     lmt_crd_val,  0, Coordinate value limit 
+     lmt_dmn_idx,  1, Dimension index limit 
+     lmt_udu_sng   2, UDUnits string 
+     
+     Tests:
+     ncks -D 11 -d lon,0.,90.,1 -v lon -H ~/nco/data/in_grp.nc
+     ncks -D 11 -d lon,0,1,1 -v lon -H ~/nco/data/in_grp.nc */
   
-  enum monotonic_direction{
-    decreasing, /* 0 */
-    increasing}; /* 1 */
-  
-  lmt_sct lmt;
+  char *fl_udu_sng=NULL_CEWI;     /* [sng] Store units attribute of coordinate dimension */
+  char *msg_sng=NULL_CEWI;        /* [sng] Error message */
+  char *sng_cnv_rcd=NULL_CEWI;    /* [sng] strtol()/strtoul() return code */
   
+  nco_bool flg_no_data_err=False; /* [flg] True if domain brackets no data (and not an MFO/record coordinate) */
+  nco_bool flg_no_data_ok=False;  /* [flg] True if file contains no data for hyperslab */
+  nco_bool rec_dmn_and_mfo=False; /* [flg] True if record dimension in multi-file operator */
+  nco_bool NCO_SYNTAX_ERROR=False;/* [flg] Syntax error in hyperslab specification */
+
+  dmn_sct dim;                     /* [sct] Dimension Structure  */
+
+  lmt_sct lmt;                     /* [sct] Structure from nco_lmt_prs()  */
+
   int min_lmt_typ=int_CEWI;
-  int max_lmt_typ=int_CEWI;
-  int monotonic_direction=decreasing; /* CEWI */
-  int prg_id; /* Program ID */
-  int rcd=NC_NOERR; /* [enm] Return code */
-  int rec_dmn_id; /* [idx] Variable ID of record dimension, if any */
-  
-  long dmn_sz;
-  long cnt_rmn_crr=-1L; /* Records to extract from current file */
-  long cnt_rmn_ttl=-1L; /* Total records remaining to be read from this and all remaining files */
-  long rec_skp_vld_prv_dgn=-1L; /* Records skipped at end of previous valid file (diagnostic only) */
-  
+  int max_lmt_typ=int_CEWI; 
+  int nco_prg_id;                      /* [enm] Program ID */
+
+  monotonic_direction_enm monotonic_direction=not_checked; /* CEWI */
+
+  long dmn_sz;                     /* [nbr] Dimension size */
+  long cnt_rmn_crr=-1L;            /* [nbr] Records to extract from current file */
+  long cnt_rmn_ttl=-1L;            /* [nbr] Total records to be read from this and all remaining files */
+  long rec_skp_vld_prv_dgn=-1L;    /* [nbr] Records skipped at end of previous valid file, if any (diagnostic only) */
+
+  int var_id=-1;                   /* [id] ID of variable */
+  int grp_id=-1;                   /* [id] ID of group */
+
+  nc_type var_typ=NC_NAT;          /* [enm] Type of variable */
+
   lmt=*lmt_ptr;
-  
-  prg_id=prg_get(); /* Program ID */
-  
+
+  nco_prg_id=nco_prg_id_get(); 
+
   /* Initialize limit structure */
-  lmt.srd=1L;
-  lmt.min_val=0.0;
+  lmt.flg_mro=False;
   lmt.max_val=0.0;
-  
-  /* Get dimension ID */
-  rcd=nco_inq_dimid_flg(nc_id,lmt.nm,&lmt.id);
-  if(rcd != NC_NOERR){
-    (void)fprintf(stdout,"%s: ERROR dimension %s is not in input file\n",prg_nm_get(),lmt.nm);
-    nco_exit(EXIT_FAILURE);
-  } /* endif */
-  
+  lmt.min_val=0.0;
+  lmt.drn=1L;
+  lmt.srd=1L;
+  lmt.flg_input_complete=False;
+
+  /* Obtain group ID using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,grp_nm_fll,&grp_id);
+
+  /* Use parameter to inquire about coordinate. 
+     NB: There might be cases where a variable with the same name as dimension exists, 
+     but it is not a "real" 1-D coordinate. Coordinates must be 1D.
+     Use case:
+     ncks -O -v ts -d time,0,1 -d Latitude,40.0 -d Longitude,-105.0 http://hydro1.sci.gsfc.nasa.gov/opendap/hyrax/ncml/LPRM_AMSRE_D_SOILM3_timeSeries.ncml amsre.nc */
+
+  if(is_crd){
+    /* Obtain coordinate variable ID using group ID */
+    (void)nco_inq_varid(grp_id,nm,&var_id);
+
+    /* Get coordinate type */
+    (void)nco_inq_vartype(grp_id,var_id,&var_typ);
+  } /* !is_crd */
+
+  /* Use info from parameter to assign locally used size */
+  dmn_sz=sz;
+
+  /* Use info from parameter to assign record/not record to limit */
+  lmt.is_rec_dmn=is_rec;
+
   /* Logic on whether to allow skipping current file depends on whether limit
      is specified for record dimension in multi-file operators.
      This information is not used in single-file operators, though whether
      the limit is a record limit may be tested.
      Program defensively and define this flag in all cases. */
-  (void)nco_inq(nc_id,(int *)NULL,(int *)NULL,(int *)NULL,&rec_dmn_id);
-  if(lmt.id == rec_dmn_id) lmt.is_rec_dmn=True; else lmt.is_rec_dmn=False;
-  if(lmt.is_rec_dmn && (prg_id == ncra || prg_id == ncrcat)) rec_dmn_and_mlt_fl_opr=True; else rec_dmn_and_mlt_fl_opr=False;
-  
-  /* Get dimension size */
-  (void)nco_inq_dimlen(nc_id,lmt.id,&dim.sz);
-  
-  /* Shortcut to avoid indirection */
-  dmn_sz=dim.sz;
-  
+
+  if(lmt.is_rec_dmn && (nco_prg_id == ncra || nco_prg_id == ncrcat)) rec_dmn_and_mfo=True; else rec_dmn_and_mfo=False;
+
+  if(rec_dmn_and_mfo){
+    lmt.rec_dmn_sz=dmn_sz;
+    lmt.idx_end_max_abs=lmt.rec_in_cml+dmn_sz-1L; /* Maximum allowed index in record dimension */
+  } /* !rec_dmn_and_mfo */
+
   /* Bomb if dmn_sz < 1 */
-  if(dmn_sz < 1){
-    (void)fprintf(stdout,"%s: ERROR Size of dimension \"%s\" is %li in input file, but must be > 0 in order to apply limits.\n",prg_nm_get(),lmt.nm,dmn_sz);
+  if(dmn_sz < 1L){
+    (void)fprintf(stdout,"%s: ERROR Size of dimension %s is %li in input file, but must be > 0 in order to apply limits.\n",nco_prg_nm_get(),lmt.nm,dmn_sz);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  
+
   if(lmt.srd_sng){
     if(strchr(lmt.srd_sng,'.') || strchr(lmt.srd_sng,'e') || strchr(lmt.srd_sng,'E') || strchr(lmt.srd_sng,'d') || strchr(lmt.srd_sng,'D')){
-      (void)fprintf(stdout,"%s: ERROR Requested stride for \"%s\", %s, must be integer\n",prg_nm_get(),lmt.nm,lmt.srd_sng);
+      (void)fprintf(stdout,"%s: ERROR Requested stride for %s, %s, must be integer\n",nco_prg_nm_get(),lmt.nm,lmt.srd_sng);
       nco_exit(EXIT_FAILURE);
     } /* end if */
     lmt.srd=strtol(lmt.srd_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
     if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.srd_sng,"strtol",sng_cnv_rcd);
-    if(lmt.srd < 1){
-      (void)fprintf(stdout,"%s: ERROR Stride for \"%s\" is %li but must be > 0\n",prg_nm_get(),lmt.nm,lmt.srd);
+    if(lmt.srd < 1L){
+      (void)fprintf(stdout,"%s: ERROR Stride for %s is %li but must be > 0\n",nco_prg_nm_get(),lmt.nm,lmt.srd);
       nco_exit(EXIT_FAILURE);
     } /* end if */
-  } /* end if */
-  
+  } /* !lmt.srd_sng */
+
+  if(lmt.drn_sng){
+    if(strchr(lmt.drn_sng,'.') || strchr(lmt.drn_sng,'e') || strchr(lmt.drn_sng,'E') || strchr(lmt.drn_sng,'d') || strchr(lmt.drn_sng,'D')){
+      (void)fprintf(stdout,"%s: ERROR Requested duration for %s, %s, must be integer\n",nco_prg_nm_get(),lmt.nm,lmt.drn_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    lmt.drn=strtol(lmt.drn_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+    if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.drn_sng,"strtol",sng_cnv_rcd);
+    if(lmt.drn < 1L){
+      (void)fprintf(stdout,"%s: ERROR Duration for %s is %li but must be > 0\n",nco_prg_nm_get(),lmt.nm,lmt.drn);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    if(nco_prg_id != ncra && nco_prg_id != ncrcat){
+      (void)fprintf(stdout,"%s: ERROR Duration only implemented for ncra and ncrcat\n",nco_prg_nm_get());
+      nco_exit(EXIT_FAILURE);
+    } /* end ncra */
+  } /* !lmt.drn_sng */
+
+  if(lmt.mro_sng){
+    if(strcasecmp(lmt.mro_sng,"m")){
+      (void)fprintf(stdout,"%s: ERROR Requested MRO flag for %s, \"%s\", must be 'm' or 'M'\n",nco_prg_nm_get(),lmt.nm,lmt.mro_sng);
+      nco_exit(EXIT_FAILURE);
+    } /* end if */
+    lmt.flg_mro=True;
+  } /* !lmt.mro_sng */
+
+  /* In case flg_mro is set in ncra2.c by --mro */
+  if(lmt.flg_mro){
+    if(nco_prg_id == ncrcat){
+      (void)fprintf(stdout,"%s: INFO Specifying Multi-Record Output (MRO) option ('m', 'M', or --mro) is redundant. MRO is always true for ncrcat.\n",nco_prg_nm_get());
+    }else if(nco_prg_id != ncra){
+      (void)fprintf(stdout,"%s: ERROR Multi-Record Output (MRO) ('m', 'M', or --mro) is only valid for ncra.\n",nco_prg_nm_get());
+      nco_exit(EXIT_FAILURE);
+    } /* end else */
+  } /* !lmt.mro_sng */
+
   /* If min_sng and max_sng are both NULL then set type to lmt_dmn_idx */
   if(lmt.min_sng == NULL && lmt.max_sng == NULL){
     /* Limiting indices will be set to default extrema a bit later */
@@ -277,90 +1458,97 @@ nco_lmt_evl /* [fnc] Parse user-specified limits into hyperslab specifications *
        Otherwise limit is interpreted as zero-based dimension offset */
     if(lmt.min_sng) min_lmt_typ=nco_lmt_typ(lmt.min_sng);
     if(lmt.max_sng) max_lmt_typ=nco_lmt_typ(lmt.max_sng);
-    
+
     /* Copy lmt_typ from defined limit to undefined */
     if(lmt.min_sng == NULL) min_lmt_typ=max_lmt_typ;
     if(lmt.max_sng == NULL) max_lmt_typ=min_lmt_typ;
   } /* end else */
-  
+
   /* Both min_lmt_typ and max_lmt_typ are now defined
-     Continue only if both limits are of the same type */
+  Continue only if both limits are of the same type */
   if(min_lmt_typ != max_lmt_typ){
-    (void)fprintf(stdout,"%s: ERROR -d %s,%s,%s\n",prg_nm_get(),lmt.nm,lmt.min_sng,lmt.max_sng);
+    (void)fprintf(stdout,"%s: ERROR -d %s,%s,%s\n",nco_prg_nm_get(),lmt.nm,lmt.min_sng,lmt.max_sng);
     (void)fprintf(stdout,"Limits on dimension \"%s\" must be of same numeric type:\n",lmt.nm);
     (void)fprintf(stdout,"\"%s\" was interpreted as a %s.\n",lmt.min_sng,(min_lmt_typ == lmt_crd_val) ? "coordinate value" : (FORTRAN_IDX_CNV) ? "one-based dimension index" : "zero-based dimension index");
     (void)fprintf(stdout,"\"%s\" was interpreted as a %s.\n",lmt.max_sng,(max_lmt_typ == lmt_crd_val) ? "coordinate value" : (FORTRAN_IDX_CNV) ? "one-based dimension index" : "zero-based dimension index");
-    (void)fprintf(stdout,"(Limit arguments containing a decimal point are interpreted as coordinate values; arguments without a decimal point are interpreted as zero-based or one-based (depending on -F switch) dimensional indices.)\n");
+    (void)fprintf(stdout,"(Limit arguments containing a decimal point (or in exponential format) are interpreted as coordinate values; arguments without a decimal point are interpreted as zero-based or one-based (depending on -F switch) dimensional indices.)\n");
     nco_exit(EXIT_FAILURE);
   } /* end if */
   lmt.lmt_typ=min_lmt_typ;
-  
+
   /* Coordinate re-basing code */
   lmt.origin=0.0;
-  /* Get variable ID of coordinate */
-  rcd=nco_inq_varid_flg(nc_id,lmt.nm,&dim.cid);
-  if(rcd == NC_NOERR){
+
+  /* If there is a coordinate variable */
+  if (is_crd){
+
+    /* Get variable ID of coordinate. NOTE: using group ID */
+    (void)nco_inq_varid(grp_id,lmt.nm,&dim.cid);
+
     char *cln_sng=NULL_CEWI;
-    
-    fl_udu_sng=nco_lmt_get_udu_att(nc_id,dim.cid,"units"); /* units attribute of co-ordinate var */
-    cln_sng=nco_lmt_get_udu_att(nc_id,dim.cid,"calendar"); /* calendar attribute */
-    
-    if(rec_dmn_and_mlt_fl_opr && fl_udu_sng && lmt.rbs_sng){ 
+
+    fl_udu_sng=nco_lmt_get_udu_att(grp_id,var_id,"units"); /* Units attribute of coordinate variable */
+    cln_sng=nco_lmt_get_udu_att(grp_id,var_id,"calendar"); /* Calendar attribute */
+
+    if(rec_dmn_and_mfo && fl_udu_sng && lmt.rbs_sng){ 
 #ifdef ENABLE_UDUNITS
       /* Re-base and reset origin to 0.0 if re-basing fails */
-      if(nco_cln_clc_org(fl_udu_sng,lmt.rbs_sng,lmt.lmt_cln,&lmt.origin) != EXIT_SUCCESS) lmt.origin=0.0;
+      if(nco_cln_clc_org(fl_udu_sng,lmt.rbs_sng,lmt.lmt_cln,&lmt.origin) != NCO_NOERR) lmt.origin=0.0;
 #endif /* !ENABLE_UDUNITS */
     } /* endif */
-    
+
     /* ncra and ncrcat read the "calendar" attribute in main() 
-       Avoid multiple reads of calendar attritbute in multi-file operations */
-    if(!rec_dmn_and_mlt_fl_opr){
+    Avoid multiple reads of calendar attritbute in multi-file operations */
+    if(!rec_dmn_and_mfo){
       if(cln_sng) lmt.lmt_cln=nco_cln_get_cln_typ(cln_sng); else lmt.lmt_cln=cln_nil;
     } /* endif */
     if(cln_sng) cln_sng=(char *)nco_free(cln_sng);
-  } /* end rcd */
-  
+  } /* End Needed only to read variable, if dimension is a coordinate variable */
+
+
   if((lmt.lmt_typ == lmt_crd_val) || (lmt.lmt_typ == lmt_udu_sng)){
-    double *dmn_val_dp;
-    
+    double *dmn_val_dp=NULL;
+
     double dmn_max;
     double dmn_min;
-    
+
     long max_idx;
     long min_idx;
     long tmp_idx;
-    long dmn_srt=0L;
-    
-    /* Get coordinate type */
-    (void)nco_inq_vartype(nc_id,dim.cid,&dim.type);
-    
+    long dmn_srt=0L;    
+
     /* Warn when coordinate type is weird */
-    if(dim.type == NC_BYTE || dim.type == NC_UBYTE || dim.type == NC_CHAR || dim.type == NC_STRING) (void)fprintf(stderr,"\n%s: WARNING Coordinate %s is type %s. Dimension truncation is unpredictable.\n",prg_nm_get(),lmt.nm,nco_typ_sng(dim.type));
-    
+    if(var_typ == NC_BYTE || var_typ == NC_UBYTE || var_typ == NC_CHAR || var_typ == NC_STRING) (void)fprintf(stderr,"\n%s: WARNING Coordinate %s is type %s. Dimension truncation is unpredictable.\n",nco_prg_nm_get(),lmt.nm,nco_typ_sng(var_typ));
+
     /* Allocate enough space to hold coordinate */
     dmn_val_dp=(double *)nco_malloc(dmn_sz*nco_typ_lng(NC_DOUBLE));
-    
+
 #ifdef _OPENMP
 #pragma omp critical
 #endif /* _OPENMP */
     { /* begin OpenMP critical */
       /* Block is critical for identical in_id's
-	 Block is thread-safe for distinct in_id's */
+      Block is thread-safe for distinct in_id's */
       /* 20110221: replace nco_get_vara() with nc_get_vara_double() */
       /* Retrieve this coordinate */
-      nc_get_vara_double(nc_id,dim.cid,(const size_t *)&dmn_srt,(const size_t *)&dmn_sz,dmn_val_dp);
+      int rcd;
+      rcd=nc_get_vara_double(grp_id,var_id,(const size_t *)&dmn_srt,(const size_t *)&dmn_sz,dmn_val_dp);
+
+      /* Exit if read error */
+      if(rcd != NC_NOERR) nco_err_exit(rcd,"nc_get_vara_double()");
+
     } /* end OpenMP critical */
-    
+
     /* Officially change type */
-    dim.type=NC_DOUBLE;
-    
+    var_typ=NC_DOUBLE;
+
     /* Assuming coordinate is monotonic, direction of monotonicity is determined by first two elements */
-    if(dmn_sz == 1){
+    if(dmn_sz == 1L){
       monotonic_direction=increasing;
     }else{
       if(dmn_val_dp[0] > dmn_val_dp[1]) monotonic_direction=decreasing; else monotonic_direction=increasing;
     } /* end else */
-    
+
     if(monotonic_direction == increasing){
       min_idx=0L;
       max_idx=dmn_sz-1L;
@@ -368,167 +1556,175 @@ nco_lmt_evl /* [fnc] Parse user-specified limits into hyperslab specifications *
       min_idx=dmn_sz-1L;
       max_idx=0L;
     } /* end else */
-    
+
     /* Determine min and max values of entire coordinate */
     dmn_min=dmn_val_dp[min_idx];
     dmn_max=dmn_val_dp[max_idx];
-    
+
     /* Set defaults */  
     lmt.min_val=dmn_val_dp[min_idx]; 
     lmt.max_val=dmn_val_dp[max_idx];
-    
+
     /* Convert UDUnits strings if necessary */
     /* If we are here then either min_sng or max_sng or both are set */
     if(lmt.lmt_typ == lmt_udu_sng){
-      
+
       if(!fl_udu_sng){ 
-        (void)fprintf(stdout,"%s: ERROR attempting to read units attribute from variable \"%s\" \n",prg_nm_get(),dim.nm);
+        (void)fprintf(stdout,"%s: ERROR attempting to read units attribute from variable \"%s\" \n",nco_prg_nm_get(),lmt.nm);
         nco_exit(EXIT_FAILURE);
       } /* end if */
-      
-      if(lmt.min_sng && nco_cln_clc_org(lmt.min_sng,fl_udu_sng,lmt.lmt_cln,&lmt.min_val)) nco_exit(EXIT_FAILURE);
-      
-      if(lmt.max_sng && nco_cln_clc_org(lmt.max_sng,fl_udu_sng,lmt.lmt_cln,&lmt.max_val)) nco_exit(EXIT_FAILURE);
-      
+
+      if(lmt.min_sng)
+	if(nco_cln_clc_org(lmt.min_sng,fl_udu_sng,lmt.lmt_cln,&lmt.min_val) != NCO_NOERR) 
+	  nco_exit(EXIT_FAILURE);
+
+      if(lmt.max_sng)
+	if(nco_cln_clc_org(lmt.max_sng,fl_udu_sng,lmt.lmt_cln,&lmt.max_val) != NCO_NOERR) 
+	  nco_exit(EXIT_FAILURE);
+
     }else{ /* end UDUnits conversion */
       /* Convert user-specified limits into double precision numeric values, or supply defaults */
-      if(lmt.min_sng) lmt.min_val=strtod(lmt.min_sng,&sng_cnv_rcd);
-      if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.min_sng,"strtod",sng_cnv_rcd);
-      if(lmt.max_sng) lmt.max_val=strtod(lmt.max_sng,&sng_cnv_rcd);
-      if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.max_sng,"strtod",sng_cnv_rcd);
-      
-      /* Re-base co-ordinates as necessary in multi-file operatators (MFOs)
-         lmt.origin was calculated earlier in routine */
-      if(rec_dmn_and_mlt_fl_opr){ 
+      if(lmt.min_sng){
+        lmt.min_val=strtod(lmt.min_sng,&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.min_sng,"strtod",sng_cnv_rcd);
+      } /* !lmt.min_sng */
+      if(lmt.max_sng){
+        lmt.max_val=strtod(lmt.max_sng,&sng_cnv_rcd);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.max_sng,"strtod",sng_cnv_rcd);
+      } /* !lmt.max_sng */
+
+      /* Re-base coordinates as necessary in multi-file operatators (MFOs)
+      lmt.origin was calculated earlier in routine */
+      if(rec_dmn_and_mfo){ 
         if(lmt.min_sng) lmt.min_val-=lmt.origin;
         if(lmt.max_sng) lmt.max_val-=lmt.origin;   
       }  /* endif MFO */
     } /* end UDUnits conversion */
-    
+
     /* Warn when min_val > max_val (i.e., wrapped coordinate) */
-    if(dbg_lvl_get() > nco_dbg_std && lmt.min_val > lmt.max_val) (void)fprintf(stderr,"%s: INFO Interpreting hyperslab specifications as wrapped coordinates [%s <= %g] and [%s >= %g]\n",prg_nm_get(),lmt.nm,lmt.max_val,lmt.nm,lmt.min_val);
-    
+    if(nco_dbg_lvl_get() > nco_dbg_std && lmt.min_val > lmt.max_val) (void)fprintf(stderr,"%s: INFO Interpreting hyperslab specifications as wrapped coordinates [%s <= %g] and [%s >= %g]\n",nco_prg_nm_get(),lmt.nm,lmt.max_val,lmt.nm,lmt.min_val);
+
     /* Fail when... */
     if(
-       /* Following condition added 20000508, changes behavior of single point 
-	  hyperslabs depending on whether hyperslab occurs in record dimension
-	  during multi-file operator operation.
-	  Altered behavior of single point hyperslabs so that single point
-	  hyperslabs in the record coordinate (i.e., -d time,1.0,1.0) may be
-	  treated differently than single point hyperslabs in other
-	  coordinates. Multifile operators will skip files if single point
-	  hyperslabs in record coordinate lay outside record coordinate
-	  range of file. For non-record coordinates (and for all operators
-	  besides ncra and ncrcat on record coordinates), single point
-	  hyperslabs will choose the closest value rather than skip the file
-	  (I believe). This should be verified. */
-       /* User specified single point, coordinate is not wrapped, and both extrema fall outside valid crd range */
-       (rec_dmn_and_mlt_fl_opr && (lmt.min_val == lmt.max_val) && ((lmt.min_val > dmn_max) || (lmt.max_val < dmn_min))) ||
-       /* User did not specify single point, coordinate is not wrapped, and either extrema falls outside valid crd range */
-       ((lmt.min_val < lmt.max_val) && ((lmt.min_val > dmn_max) || (lmt.max_val < dmn_min))) ||
-       /* User did not specify single point, coordinate is wrapped, and both extrema fall outside valid crd range */
-       ((lmt.min_val > lmt.max_val) && ((lmt.min_val > dmn_max) && (lmt.max_val < dmn_min))) ||
-       False){
-      /* Allow for possibility that current file is superfluous */
-      if(rec_dmn_and_mlt_fl_opr){
-	flg_no_data=True;
-	goto no_data_ok;
-      }else{
-	(void)fprintf(stdout,"%s: ERROR User-specified coordinate value range %g <= %s <= %g does not fall within valid coordinate range %g <= %s <= %g\n",prg_nm_get(),lmt.min_val,lmt.nm,lmt.max_val,dmn_min,lmt.nm,dmn_max);
-	nco_exit(EXIT_FAILURE);
-      } /* end else */
+      /* Following condition added 20000508, changes behavior of single point 
+      hyperslabs depending on whether hyperslab occurs in record dimension
+      during multi-file operator operation.
+      Altered behavior of single point hyperslabs so that single point
+      hyperslabs in the record coordinate (i.e., -d time,1.0,1.0) may be
+      treated differently than single point hyperslabs in other
+      coordinates. Multifile operators will skip files if single point
+      hyperslabs in record coordinate lay outside record coordinate
+      range of file. For non-record coordinates (and for all operators
+      besides ncra and ncrcat on record coordinates), single point
+      hyperslabs will choose the closest value rather than skip the file
+      (I believe). This should be verified. */
+      /* User specified single point, coordinate is not wrapped, and both extrema fall outside valid crd range */
+      (rec_dmn_and_mfo && (lmt.min_val == lmt.max_val) && ((lmt.min_val > dmn_max) || (lmt.max_val < dmn_min))) ||
+      /* User did not specify single point, coordinate is not wrapped, and either extrema falls outside valid crd range */
+      ((lmt.min_val < lmt.max_val) && ((lmt.min_val > dmn_max) || (lmt.max_val < dmn_min))) ||
+      /* User did not specify single point, coordinate is wrapped, and both extrema fall outside valid crd range */
+      ((lmt.min_val > lmt.max_val) && ((lmt.min_val > dmn_max) && (lmt.max_val < dmn_min))) ||
+      False){
+        /* Allow for possibility that current file is superfluous */
+        if(rec_dmn_and_mfo){
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        }else{
+          (void)fprintf(stdout,"%s: ERROR User-specified coordinate value range %g <= %s <= %g does not fall within valid coordinate range %g <= %s <= %g\n",nco_prg_nm_get(),lmt.min_val,lmt.nm,lmt.max_val,dmn_min,lmt.nm,dmn_max);
+          nco_exit(EXIT_FAILURE);
+        } /* end else */
     } /* end if */
-    
+
     /* Armed with target coordinate minima and maxima, we are ready to bracket user-specified range */
-    
+
     /* If min_sng or max_sng were omitted, use extrema */
     if(lmt.min_sng == NULL) lmt.min_idx=min_idx;
     if(lmt.max_sng == NULL) lmt.max_idx=max_idx;
-    
+
     /* Single slice requires finding the closest coordinate */
     if(lmt.min_val == lmt.max_val){
       double dst_new;
       double dst_old;
-      
+
       lmt.min_idx=0L;
       dst_old=fabs(lmt.min_val-dmn_val_dp[0]);
       for(tmp_idx=1L;tmp_idx<dmn_sz;tmp_idx++){
-	if((dst_new=fabs(lmt.min_val-dmn_val_dp[tmp_idx])) < dst_old){
-	  dst_old=dst_new;
-	  lmt.min_idx=tmp_idx;
-	} /* end if */
+        if((dst_new=fabs(lmt.min_val-dmn_val_dp[tmp_idx])) < dst_old){
+          dst_old=dst_new;
+          lmt.min_idx=tmp_idx;
+        } /* end if */
       } /* end loop over tmp_idx */
       lmt.max_idx=lmt.min_idx;
-      
+
     }else{ /* min_val != max_val */
-      
+
       /* Bracket specified extrema:
-	 Should no coordinate values match the given criteria, flag the index with -1L
-	 We defined the valid syntax such that single half range with -1L is not an error
-	 This causes "-d lon,100.0,-100.0" to select [-180.0] when lon=[-180.0,-90.0,0.0,90.0] 
-	 because one of the specified half-ranges is valid (there are coordinates < -100.0).
-	 However, "-d lon,100.0,-200.0" should fail when lon=[-180.0,-90.0,0.0,90.0] because both 
-	 of the specified half-ranges are invalid (no coordinate is > 100.0 or < -200.0).
-	 -1L flags are replaced with correct indices (0L or dmn_sz-1L) following search loop block.
-	 Overwriting -1L flags with 0L or dmn_sz-1L later is more heuristic than setting them = 0L here,
-	 since 0L is valid search result. */
+      Should no coordinate values match the given criteria, flag the index with -1L
+      We defined the valid syntax such that single half range with -1L is not an error
+      This causes "-d lon,100.0,-100.0" to select [-180.0] when lon=[-180.0,-90.0,0.0,90.0] 
+      because one of the specified half-ranges is valid (there are coordinates < -100.0).
+      However, "-d lon,100.0,-200.0" should fail when lon=[-180.0,-90.0,0.0,90.0] because both 
+      of the specified half-ranges are invalid (no coordinate is > 100.0 or < -200.0).
+      -1L flags are replaced with correct indices (0L or dmn_sz-1L) following search loop block.
+      Overwriting -1L flags with 0L or dmn_sz-1L later is more heuristic than setting them = 0L here,
+      since 0L is valid search result. */
       if(monotonic_direction == increasing){
-	if(lmt.min_sng){
-	  /* Find index of smallest coordinate greater than min_val */
-	  tmp_idx=0L;
-	  while((dmn_val_dp[tmp_idx] < lmt.min_val) && (tmp_idx < dmn_sz)) tmp_idx++;
-	  if(tmp_idx != dmn_sz) lmt.min_idx=tmp_idx; else lmt.min_idx=-1L;
-	} /* end if */
-	if(lmt.max_sng){
-	  /* Find index of largest coordinate less than max_val */
-	  tmp_idx=dmn_sz-1L;
-	  while((dmn_val_dp[tmp_idx] > lmt.max_val) && (tmp_idx > -1L)) tmp_idx--;
-	  if(tmp_idx != -1L) lmt.max_idx=tmp_idx; else lmt.max_idx=-1L;
-	} /* end if */
-	/* 20110221: csz fix hyperslab bug TODO nco1007 triggered by
-	   ncks -O -v lat -d lat,20.,20.001 ~/nco/data/in.nc ~/foo.nc
-	   This returned all values but should have returned none
-	   Algorithm was broken because, although valid min and max indices existed,
-	   they contained the empty set. 
-	   Now when this happens, set flg_no_data_error block */
-	if( /* Points are not wrapped ... */
-	   (lmt.min_val < lmt.max_val) && 
-	   /* ... and valid indices were found for both bracketing points... */
-	   (lmt.min_idx != -1L && lmt.max_idx != -1L) &&
-	   /* ...and indices contain empty set, i.e., min_idx > max_idx for increasing data... */
-   	   lmt.min_idx > lmt.max_idx) flg_no_data_error=True;
-	/* end if monotonic_direction == increasing */
+        if(lmt.min_sng){
+          /* Find index of smallest coordinate greater than min_val */
+          tmp_idx=0L;
+          while((dmn_val_dp[tmp_idx] < lmt.min_val) && (tmp_idx < dmn_sz)) tmp_idx++;
+          if(tmp_idx != dmn_sz) lmt.min_idx=tmp_idx; else lmt.min_idx=-1L;
+        } /* end if */
+        if(lmt.max_sng){
+          /* Find index of largest coordinate less than max_val */
+          tmp_idx=dmn_sz-1L;
+          while((dmn_val_dp[tmp_idx] > lmt.max_val) && (tmp_idx > -1L)) tmp_idx--;
+          if(tmp_idx != -1L) lmt.max_idx=tmp_idx; else lmt.max_idx=-1L;
+        } /* end if */
+        /* 20110221: csz fix hyperslab bug TODO nco1007 triggered by
+        ncks -O -v lat -d lat,20.,20.001 ~/nco/data/in.nc ~/foo.nc
+        This returned all values but should have returned none
+        Algorithm was broken because, although valid min and max indices existed,
+        they contained the empty set. 
+        Now when this happens, set flg_no_data_err block */
+        if( /* Points are not wrapped ... */
+          (lmt.min_val < lmt.max_val) && 
+          /* ... and valid indices were found for both bracketing points... */
+          (lmt.min_idx != -1L && lmt.max_idx != -1L) &&
+          /* ...and indices contain empty set, i.e., min_idx > max_idx for increasing data... */
+          lmt.min_idx > lmt.max_idx) flg_no_data_err=True;
+        /* end if monotonic_direction == increasing */
       }else{ /* monotonic_direction == decreasing */
-	if(lmt.min_sng){
-	  /* Find index of smallest coordinate greater than min_val */
-	  tmp_idx=dmn_sz-1L;
-	  while((dmn_val_dp[tmp_idx] < lmt.min_val) && (tmp_idx > -1L)) tmp_idx--;
-	  if(tmp_idx != -1L) lmt.min_idx=tmp_idx; else lmt.min_idx=-1L;
-	} /* end if */
-	if(lmt.max_sng){
-	  /* Find index of largest coordinate less than max_val */
-	  tmp_idx=0L;
-	  while((dmn_val_dp[tmp_idx] > lmt.max_val) && (tmp_idx < dmn_sz)) tmp_idx++;
-	  if(tmp_idx != dmn_sz) lmt.max_idx=tmp_idx; else lmt.max_idx=-1L;
-	} /* end if */
-	if( /* Points are not wrapped ... */
-	   (lmt.min_val > lmt.max_val) && 
-	   /* ... and valid indices were found for both bracketing points... */
-	   (lmt.min_idx != -1L && lmt.max_idx != -1L) &&
-	   /* ...and indices contain empty set, i.e., min_idx < max_idx for decreasing data... */
-   	   lmt.min_idx < lmt.max_idx) flg_no_data_error=True;
+        if(lmt.min_sng){
+          /* Find index of smallest coordinate greater than min_val */
+          tmp_idx=dmn_sz-1L;
+          while((dmn_val_dp[tmp_idx] < lmt.min_val) && (tmp_idx > -1L)) tmp_idx--;
+          if(tmp_idx != -1L) lmt.min_idx=tmp_idx; else lmt.min_idx=-1L;
+        } /* end if */
+        if(lmt.max_sng){
+          /* Find index of largest coordinate less than max_val */
+          tmp_idx=0L;
+          while((dmn_val_dp[tmp_idx] > lmt.max_val) && (tmp_idx < dmn_sz)) tmp_idx++;
+          if(tmp_idx != dmn_sz) lmt.max_idx=tmp_idx; else lmt.max_idx=-1L;
+        } /* end if */
+        if( /* Points are not wrapped ... */
+          (lmt.min_val > lmt.max_val) && 
+          /* ... and valid indices were found for both bracketing points... */
+          (lmt.min_idx != -1L && lmt.max_idx != -1L) &&
+          /* ...and indices contain empty set, i.e., min_idx < max_idx for decreasing data... */
+          lmt.min_idx < lmt.max_idx) flg_no_data_err=True;
       } /* end else monotonic_direction == decreasing */
-      
+
       /* Case where both min_idx and max_idx = -1 was flagged as error above
-	 Case of wrapped coordinate: Either, but not both, of min_idx or max_idx will be flagged with -1
-	 See explanation above */
+      Case of wrapped coordinate: Either, but not both, of min_idx or max_idx will be flagged with -1
+      See explanation above */
       if(lmt.min_idx == -1L && (lmt.min_val > lmt.max_val)) lmt.min_idx=0L;
       if(lmt.max_idx == -1L && (lmt.min_val > lmt.max_val)) lmt.max_idx=dmn_sz-1L;
-      
+
     } /* end if min_val != max_val */
-    
+
     /* User-specified ranges are now bracketed */
-    
+
     /* Convert indices of minima and maxima to srt and end indices */
     if(monotonic_direction == increasing){
       lmt.srt=lmt.min_idx;
@@ -537,69 +1733,53 @@ nco_lmt_evl /* [fnc] Parse user-specified limits into hyperslab specifications *
       lmt.srt=lmt.max_idx;
       lmt.end=lmt.min_idx;
     }  /* end else */
-    
+
     /* Free space allocated for dimension */
-    dmn_val_dp=nco_free(dmn_val_dp);
-    
-    if(rec_dmn_and_mlt_fl_opr){ 
+    dmn_val_dp=(double*)nco_free(dmn_val_dp);
+
+    if(rec_dmn_and_mfo){ 
       /* No wrapping with multi-file operators */ 
       if((monotonic_direction == increasing && lmt.min_val > lmt.max_val) ||
-	 (monotonic_direction == decreasing && lmt.min_val < lmt.max_val)){
-	flg_no_data=True; 
-	goto no_data_ok;   
+        (monotonic_direction == decreasing && lmt.min_val < lmt.max_val)){
+          flg_no_data_ok=True; 
+          goto no_data_ok;   
       } /* endif */
-      
-      if(cnt_crr == 0){
-	/* If no valid records yet processed, initialize skipped records to zero */
-	lmt.rec_skp_vld_prv=0L;  
-      }else if(cnt_crr > 0L){
-	/* Otherwise, account for previous records in strides across file boundaries */
-        lmt.srt=lmt.srd-1L-lmt.rec_skp_vld_prv%lmt.srd; 
-	if(lmt.srt>lmt.end){
-	  /* Do not allow record dimension wrapping in MFOs */
-	  flg_no_data=True;
-	  goto no_data_ok;
-	} /* endif  */
+
+      if(rec_usd_cml == 0L){
+        /* Skipped records remains zero until valid records are processed */
+        lmt.rec_skp_vld_prv=0L;  
+      }else if(rec_usd_cml > 0L){
+        /* Otherwise, adjust starting index by records skipped in jumps across file boundaries */
+        lmt.srt+=lmt.srd-1L-lmt.rec_skp_vld_prv%lmt.srd; 
+        if(lmt.srt>lmt.end){
+          /* Do not allow record dimension wrapping in MFOs */
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif  */
       } /* endif */
-      
-      /* If we are here then there are valid records in current files */ 
-       
-      /* Integer arithmetic */ 
-      cnt_rmn_crr=(lmt.end-lmt.srt)/lmt.srd;  
-      lmt.end=lmt.srt+cnt_rmn_crr*lmt.srd;    
-      
-      if(lmt.end==lmt.srt) lmt.srd=1;
-      
-      lmt.rec_skp_nsh_spf+=dmn_sz;
-      
-      /* Compute diagnostic count for this file only */
-      cnt_rmn_crr=1L+(lmt.end-lmt.srt)/lmt.srd;
-      /* Save current rec_skp_vld_prv for diagnostics */
-      rec_skp_vld_prv_dgn=lmt.rec_skp_vld_prv;
-      /* rec_skp_vld_prv for next file is stride minus number of unused records
-	 at end of this file (dmn_sz-1L-lmt.end) minus one */
-      lmt.rec_skp_vld_prv=dmn_sz-1L-lmt.end;
-      /*      assert(lmt.rec_skp_vld_prv >= 0);*/
-    } /* end if rec_dmn_and_mlt_fl_opr */
-    
+
+      /* If we are here then there are valid records in current file */
+
+    } /* end if rec_dmn_and_mfo */
+
   }else{ /* end if limit arguments were coordinate values */
     /* Convert limit strings to zero-based indicial offsets */
-    
+
     /* Specifying stride alone, but not min or max, is legal, e.g., -d time,,,2
-       Thus is_usr_spc_lmt may be True, even though one or both of min_sng, max_sng is NULL
-       Furthermore, both min_sng and max_sng are artifically created by nco_lmt_sct_mk()
-       for record dimensions when the user does not explicitly specify limits.
-       In this case, min_sng_and max_sng are non-NULL though no limits were specified
-       In fact, min_sng and max_sng are set to the minimum and maximum string
-       values of the first file processed.
-       However, we can tell if these strings were artificially generated because 
-       nco_lmt_sct_mk() sets the is_usr_spc_lmt flag to False in such cases.
-       Subsequent files may have different numbers of records, but nco_lmt_sct_mk()
-       is only called once.
-       Thus we must update min_idx and max_idx here for each file
-       This causes min_idx and max_idx to be out of sync with min_sng and max_sng, 
-       which are only set in nco_lmt_sct_mk() for the first file.
-       In hindsight, artificially generating min_sng and max_sng may be bad idea */
+    Thus is_usr_spc_lmt may be True, even though one or both of min_sng, max_sng is NULL
+    Furthermore, both min_sng and max_sng are artifically created by nco_lmt_sct_mk()
+    for record dimensions when the user does not explicitly specify limits.
+    In this case, min_sng_and max_sng are non-NULL though no limits were specified
+    In fact, min_sng and max_sng are set to the minimum and maximum string
+    values of the first file processed.
+    However, we can tell if these strings were artificially generated because 
+    nco_lmt_sct_mk() sets the is_usr_spc_lmt flag to False in such cases.
+    Subsequent files may have different numbers of records, but nco_lmt_sct_mk()
+    is only called once.
+    Thus we must update min_idx and max_idx here for each file
+    This causes min_idx and max_idx to be out of sync with min_sng and max_sng, 
+    which are only set in nco_lmt_sct_mk() for the first file.
+    In hindsight, artificially generating min_sng and max_sng may be bad idea */
     /* Following logic is messy, but hard to simplify */
     if(lmt.min_sng == NULL || !lmt.is_usr_spc_lmt){
       /* No user-specified value available--generate minimal dimension index */
@@ -617,347 +1797,229 @@ nco_lmt_evl /* [fnc] Parse user-specified limits into hyperslab specifications *
       lmt.max_idx=strtol(lmt.max_sng,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(lmt.max_sng,"strtol",sng_cnv_rcd);
     } /* end if */
-    
+
     /* Adjust indices if FORTRAN style input was specified */
     if(FORTRAN_IDX_CNV){
-      lmt.min_idx--;
-      lmt.max_idx--;
+      /* 20120726: Die when Fortran index is zero */
+      if(lmt.min_idx == 0L || lmt.max_idx == 0L){
+        (void)fprintf(stdout,"%s: ERROR User-specified Fortran (1-based) index for dimension %s = 0.\n",nco_prg_nm_get(),lmt.nm);
+        msg_sng=strdup("Fortran indices must be >= 1");
+        NCO_SYNTAX_ERROR=True;
+      } /* endif illegal Fortran index */
+      /* 20120709: Adjust positive indices only */
+      if(lmt.min_idx > 0L) lmt.min_idx--;
+      if(lmt.max_idx > 0L) lmt.max_idx--;
     } /* end if */
-    
+
+    /* 20120709 Negative integer as min or max element of hyperslab specification indicates offset from end */
+    if(lmt.min_idx < 0L) lmt.min_idx+=dmn_sz-1L;
+    if(lmt.max_idx < 0L) lmt.max_idx+=dmn_sz-1L;
+
     /* Exit if requested indices are always invalid for all operators... */
-    if(lmt.min_idx < 0 || lmt.max_idx < 0 || 
-       /* ...or are invalid for non-record dimensions or single file operators */
-       (!rec_dmn_and_mlt_fl_opr && lmt.min_idx >= dmn_sz)){
-      (void)fprintf(stdout,"%s: ERROR User-specified dimension index range %li <= %s <= %li does not fall within valid dimension index range 0 <= %s <= %li\n",prg_nm_get(),lmt.min_idx,lmt.nm,lmt.max_idx,lmt.nm,dmn_sz-1L);
-      (void)fprintf(stdout,"\n");
+    if(lmt.min_idx < 0L){
+      msg_sng=strdup("Minimum index is too negative");
+      NCO_SYNTAX_ERROR=True;
+    }else if(lmt.max_idx < 0L){
+      msg_sng=strdup("Maximum index is too negative");
+      NCO_SYNTAX_ERROR=True;
+    }else if(lmt.drn > lmt.srd){
+      (void)fprintf(stdout,"%s: ERROR User-specified duration exceeds stride for %s: %li > %li\n",nco_prg_nm_get(),lmt.nm,lmt.drn,lmt.srd);
+      msg_sng=strdup("Duration exceeds stride");
+      NCO_SYNTAX_ERROR=True;
+    }else if(!rec_dmn_and_mfo && lmt.min_idx >= dmn_sz){
+      msg_sng=strdup("Minimum index greater than size in non-MFO");
+      NCO_SYNTAX_ERROR=True;
+      (void)fprintf(stdout,"%s: ERROR User-specified dimension index range %li <= %s <= %li does not fall within valid dimension index range 0 <= %s <= %li\n",nco_prg_nm_get(),lmt.min_idx,lmt.nm,lmt.max_idx,lmt.nm,dmn_sz-1L);
+    }else if(lmt.max_idx >= dmn_sz && nco_prg_id == ncks){
+      /* 20130203 pvn Check for -d max > dimension size; check fortran case; check multi file operators */
+      msg_sng=strdup("ERROR: Maximum index exceeds dimension size");
+      NCO_SYNTAX_ERROR=True;
+    } /* end if impossible indices */
+
+    if(NCO_SYNTAX_ERROR){
+      (void)fprintf(stdout,"%s: ERROR evaluating hyperslab specification for %s: %s\n%s: HINT Conform request to hyperslab documentation at http://nco.sf.net/nco.html#hyp\n",nco_prg_nm_get(),lmt.nm,msg_sng,nco_prg_nm_get());
+      msg_sng=(char *)nco_free(msg_sng);
       nco_exit(EXIT_FAILURE);
-    } /* end if */
-    
+    } /* !NCO_SYNTAX_ERROR */
+
+    /* NB: Duration is officially supported only for ncra and ncrcat (record dimension only) */
+    if(lmt.drn != 1L && !rec_dmn_and_mfo) (void)fprintf(stderr,"%s: WARNING Duration argument is only supported for the record dimension on ncra and ncrcat operations\n",nco_prg_nm_get());
+
     /* Logic depends on whether this is record dimension in multi-file operator */
-    if(!rec_dmn_and_mlt_fl_opr || !lmt.is_usr_spc_lmt){
+    if(!rec_dmn_and_mfo || !lmt.is_usr_spc_lmt){
       /* For non-record dimensions and for record dimensions where limit 
-	 was automatically generated (to include whole file), starting
-	 and ending indices are simply minimum and maximum indices already 
-	 in structure */
+      was automatically generated (to include whole file), starting
+      and ending indices are simply minimum and maximum indices already 
+      in structure */
       lmt.srt=lmt.min_idx;
       lmt.end=lmt.max_idx;
     }else{
       /* Initialize rec_skp_vld_prv to 0L on first call to nco_lmt_evl() 
-	 This is necessary due to intrinsic hysterisis of rec_skp_vld_prv
-	 rec_skp_vld_prv is used only by multi-file operators
-	 rec_skp_vld_prv counts records skipped at end of previous valid file
-	 cnt_crr and rec_skp_nsh_spf are both zero only for first file
-	 No records were skipped in previous files */
-
-        if(cnt_crr == 0L && lmt.rec_skp_nsh_spf == 0L) lmt.rec_skp_vld_prv=0L;
-      
-	/* For record dimensions with user-specified limit, allow for possibility 
-	   that limit pertains to record dimension in a multi-file operator.
-	   Then user-specified maximum index may exceed number of records in any one file
-	   Thus lmt.srt does not necessarily equal lmt.min_idx and 
-	   lmt.end does not necessarily equal lmt.max_idx */
-	/* Stride is officially supported for ncks (all dimensions)
-	   and for ncra and ncrcat (record dimension only) */
-	if(lmt.srd != 1L && prg_id != ncks && !lmt.is_rec_dmn) (void)fprintf(stderr,"%s: WARNING Stride argument for non-record dimension is only supported by ncks, use at your own risk...\n",prg_nm_get());
-	
-	{ /* Block to hide scope of local internal variables */
-          long min_lcl;
-          long max_lcl; 
-	  
-          min_lcl=(lmt.is_usr_spc_min ? lmt.min_idx : 0L); 
-          max_lcl=(lmt.is_usr_spc_max ? lmt.max_idx : lmt.rec_skp_nsh_spf+dmn_sz-1L); 
-	  
-	  /* Are we passed max_lcl? */
-          if(max_lcl < lmt.rec_skp_nsh_spf){
-	    flg_no_data=True;
-	    goto no_data_ok;
-	  } /* endif passed max_lcl */
-
-          /* Is min_idx in current record? */
-          if(min_lcl > lmt.rec_skp_nsh_spf+dmn_sz-1L){
-	    flg_no_data=True;
-	    goto no_data_ok;
-	  } /* endif min_idx in current record */
-	  
-	  if(cnt_crr == 0L)
-	    /* Start index is min_idx adjusted for any skipped initial superfluous files */  
-	    lmt.srt=min_lcl-lmt.rec_skp_nsh_spf;
-          else
-            lmt.srt=lmt.srd-1L-lmt.rec_skp_vld_prv%lmt.srd;
-	  
-          if(lmt.srt > dmn_sz-1L){
-	    flg_no_data=True;
-	    goto no_data_ok;
-	  } /* endif */
-	  
-          lmt.end=(max_lcl < lmt.rec_skp_nsh_spf+dmn_sz) ? max_lcl-lmt.rec_skp_nsh_spf : dmn_sz-1L;
-	  /* Integer arithmetic */
-	  cnt_rmn_crr=(lmt.end-lmt.srt)/lmt.srd;
-	  lmt.end=lmt.srt+lmt.srd*cnt_rmn_crr;
-	} /* end block to hide scope of local internal variables */
-	
-        /* 20101202: hmb set stride to one */
-	if(lmt.end == lmt.srt) lmt.srd=1;
-	
-	lmt.rec_skp_nsh_spf+=dmn_sz;	
-	/* Compute diagnostic count for this file only */
-	cnt_rmn_crr=1L+(lmt.end-lmt.srt)/lmt.srd;
-	/* Save current rec_skp_vld_prv for diagnostics */
-	rec_skp_vld_prv_dgn=lmt.rec_skp_vld_prv;
-	/* rec_skp_vld_prv for next file is stride minus number of unused records
-	   at end of this file (dmn_sz-1L-lmt.end) minus one */
-	lmt.rec_skp_vld_prv=dmn_sz-1L-lmt.end;
-	/*  assert(lmt.rec_skp_vld_prv >= 0);*/
-      
+      This is necessary due to intrinsic hysterisis of rec_skp_vld_prv
+      rec_skp_vld_prv is used only by multi-file operators
+      rec_skp_vld_prv counts records skipped at end of previous valid file
+      rec_usd_cml and rec_skp_ntl_spf are both zero only for first file */
+      if(rec_usd_cml == 0L && lmt.rec_skp_ntl_spf == 0L) lmt.rec_skp_vld_prv=0L;
+
+      /* For record dimensions with user-specified limit, allow possibility 
+      that limit pertains to record dimension in a multi-file operator.
+      Then user-specified maximum index may exceed number of records in any one file
+      Thus lmt.srt does not necessarily equal lmt.min_idx and 
+      lmt.end does not necessarily equal lmt.max_idx */
+      /* NB: Stride is officially supported for ncks (all dimensions) and for ncra and ncrcat (record dimension only) */
+      if(lmt.srd != 1L && nco_prg_id != ncks && !lmt.is_rec_dmn) (void)fprintf(stderr,"%s: WARNING Stride argument for non-record dimension is only supported by ncks, use at your own risk...\n",nco_prg_nm_get());
+
+      { /* Block hides scope of local internal variables */
+        long srt_min_lcl; /* [idx] Minimum start index (in absolute index space, i.e., relative to first file) for current file */
+        long end_max_lcl; /* [idx] Maximum end   index (in absolute index space, i.e., relative to first file) for current file */
+
+        srt_min_lcl=(lmt.is_usr_spc_min ? lmt.min_idx : lmt.rec_in_cml+0L); 
+        end_max_lcl=(lmt.is_usr_spc_max ? lmt.max_idx : lmt.rec_in_cml+dmn_sz-1L); 
+
+        /* Maximum allowed index in record dimension */
+        lmt.idx_end_max_abs=end_max_lcl;
+
+        /* Are we past file containing end_max_lcl yet? */
+        if(end_max_lcl < lmt.rec_in_cml){
+          /* This and all subsequent files are superfluous because all requested records have already been read 
+          Optimize MFOs by checking "input complete" flag to jump out of file loop
+          Saves time because no other input files will be opened */
+          lmt.flg_input_complete=True;
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif past end_max_lcl */
+
+        /* Have we reached file containing srt_min_lcl yet? */
+        if(srt_min_lcl > lmt.rec_in_cml+dmn_sz-1L){
+          /* This and all previous files are superfluous because the starting record is in a subsequent file */
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif srt_min_lcl in future file */
+
+        /* Until records have been used, start index is srt_min_lcl adjusted for records contained in all previous files
+        Thereafter start index loses memory of/dependence on absolute start index, and only cares for how many records,
+        if any, were skipped since last valid record. This number, modulo stride, is new start index. */
+        if(rec_usd_cml == 0L) lmt.srt=srt_min_lcl-lmt.rec_in_cml; else lmt.srt=lmt.srd-1L-lmt.rec_skp_vld_prv%lmt.srd;
+
+        if(lmt.srt > dmn_sz-1L){
+          /* Perhaps data were read in previous file(s) yet next record is in future file due to long stride */
+          flg_no_data_ok=True;
+          goto no_data_ok;
+        } /* endif */
+
+        lmt.end=(end_max_lcl < lmt.rec_in_cml+dmn_sz) ? end_max_lcl-lmt.rec_in_cml : dmn_sz-1L;
+
+      } /* end block hides scope of local internal variables */
+
+      /* If we are here then there are valid records in current file */
+
     } /* endif user-specified limits to record dimension */
-    
+
   } /* end else limit arguments are hyperslab indices */
-  
+
+  /* NB: MFO record dimension never reaches this block if current file is superfluous
+  In that case code has already branched down to flg_data_ok or flg_data_err */
+  if(rec_dmn_and_mfo){ 
+    /* NB: This is---and must be---performed as integer arithmetic */ 
+    cnt_rmn_crr=1L+(lmt.end-lmt.srt)/lmt.srd;  
+    /* This fixes "sloppy" specification of end index by user, i.e., ensures that end index coincides with a stride */
+    lmt.end=lmt.srt+(cnt_rmn_crr-1L)*lmt.srd;   
+    /* Save current rec_skp_vld_prv for diagnostics (printed below) for this file */
+    rec_skp_vld_prv_dgn=lmt.rec_skp_vld_prv;
+    /* Next file must know how many records in this file come after (and thus will be skipped) last used record in this file */
+    lmt.rec_skp_vld_prv=dmn_sz-1L-lmt.end;
+  } /* !rec_dmn_and_mfo */      
+
   /* Compute cnt from srt, end, and srd
-     This is fine for multi-file record dimensions since those operators read-in one
-     record at a time and thus never actually use lmt.cnt for record dimension. */
+  This is fine for multi-file record dimensions since those operators read-in one
+  record at a time and thus never actually use lmt.cnt for record dimension. */
   if(lmt.srd == 1L){
     if(lmt.srt <= lmt.end) lmt.cnt=lmt.end-lmt.srt+1L; else lmt.cnt=dmn_sz-lmt.srt+lmt.end+1L;
   }else{
     if(lmt.srt <= lmt.end) lmt.cnt=1L+(lmt.end-lmt.srt)/lmt.srd; else lmt.cnt=1L+((dmn_sz-lmt.srt)+lmt.end)/lmt.srd;
   } /* end else */
-  
+
   /* NB: Degenerate cases of WRP && SRD exist for which dmn_cnt_2 == 0
-     This occurs when srd is large enough, or max_idx small enough, 
-     such that no values are selected in the second read. 
-     e.g., "-d lon,60,0,10" if sz(lon)=128 has dmn_cnt_2 == 0
-     Since netCDF library reports an error reading and writing cnt=0 dimensions, kludge is necessary
-     Syntax ensures that it is always the second read, not the first, which is obviated
-     Therefore we convert these degenerate cases into non-wrapped coordinates to be processed by single read 
-     For these degenerate cases only, [srt,end] are not a permutation of [min_idx,max_idx] */
+  This occurs when srd is large enough, or max_idx small enough, 
+  such that no values are selected in the second read. 
+  e.g., "-d lon,60,0,10" if sz(lon)=128 has dmn_cnt_2 == 0
+  Since netCDF library reports an error reading and writing cnt=0 dimensions, kludge is necessary
+  Syntax ensures that it is always the second read, not the first, which is obviated
+  Therefore we convert these degenerate cases into non-wrapped coordinates to be processed by single read 
+  For these degenerate cases only, [srt,end] are not a permutation of [min_idx,max_idx] */
   if(
-     (lmt.srd != 1L) && /* SRD */
-     (lmt.srt > lmt.end) && /* WRP */
-     (lmt.cnt == (1L+(dmn_sz-lmt.srt-1L)/lmt.srd)) && /* dmn_cnt_1 == cnt -> dmn_cnt_2 == 0 */
-     True){
-    long greatest_srd_multiplier_1st_hyp_slb; /* Greatest integer m such that srt+m*srd < dmn_sz */
-    long last_good_idx_1st_hyp_slb; /* C-index of last valid member of 1st hyperslab (= srt+m*srd) */
-    /* long left_over_idx_1st_hyp_slb;*/ /* # of elements from first hyperslab that count towards current stride */
-    long first_good_idx_2nd_hyp_slb; /* C-index of first valid member of 2nd hyperslab, if any */
-    
-    /* NB: Perform these operations with integer arithmetic or else! */
-    /* Wrapped dimensions with stride may not start at idx 0 on second read */
-    greatest_srd_multiplier_1st_hyp_slb=(dmn_sz-lmt.srt-1L)/lmt.srd;
-    last_good_idx_1st_hyp_slb=lmt.srt+lmt.srd*greatest_srd_multiplier_1st_hyp_slb;
-    /* left_over_idx_1st_hyp_slb=dmn_sz-last_good_idx_1st_hyp_slb-1L;*/
-    first_good_idx_2nd_hyp_slb=(last_good_idx_1st_hyp_slb+lmt.srd)%dmn_sz;
-    
-    /* Conditions causing dmn_cnt_2 == 0 */
-    if(first_good_idx_2nd_hyp_slb > lmt.end) lmt.end=last_good_idx_1st_hyp_slb;
+    (lmt.srd != 1L) && /* SRD */
+    (lmt.srt > lmt.end) && /* WRP */
+    (lmt.cnt == (1L+(dmn_sz-lmt.srt-1L)/lmt.srd)) && /* dmn_cnt_1 == cnt -> dmn_cnt_2 == 0 */
+    True){
+      long greatest_srd_multiplier_1st_hyp_slb; /* Greatest integer m such that srt+m*srd < dmn_sz */
+      long last_good_idx_1st_hyp_slb; /* C-index of last valid member of 1st hyperslab (= srt+m*srd) */
+      /* long left_over_idx_1st_hyp_slb;*/ /* # of elements from first hyperslab that count towards current stride */
+      long first_good_idx_2nd_hyp_slb; /* C-index of first valid member of 2nd hyperslab, if any */
+
+      /* NB: Perform these operations with integer arithmetic or else! */
+      /* Wrapped dimensions with stride may not start at idx 0 on second read */
+      greatest_srd_multiplier_1st_hyp_slb=(dmn_sz-lmt.srt-1L)/lmt.srd;
+      last_good_idx_1st_hyp_slb=lmt.srt+lmt.srd*greatest_srd_multiplier_1st_hyp_slb;
+      /* left_over_idx_1st_hyp_slb=dmn_sz-last_good_idx_1st_hyp_slb-1L;*/
+      first_good_idx_2nd_hyp_slb=(last_good_idx_1st_hyp_slb+lmt.srd)%dmn_sz;
+
+      /* Conditions causing dmn_cnt_2 == 0 */
+      if(first_good_idx_2nd_hyp_slb > lmt.end) lmt.end=last_good_idx_1st_hyp_slb;
   } /* end if */
 
-  /* Cases where domain bracketed no data, in error have counts reset to zero here
-     This kludge allows codepaths for both WRP and out-of-domain to flow without goto statements
-     Out-of-domain errors will soon exit with error, while WRP conditions will proceed */
-  if(flg_no_data_error) lmt.cnt=0L;
+  /* Cases where domain brackets no data, in error, have counts set to zero here
+  This kludge allows codepaths for both WRP and out-of-domain to flow without goto statements
+  Out-of-domain errors will soon exit with error, while WRP conditions will proceed */
+  if(flg_no_data_err) lmt.cnt=0L;
 
   /* Exit when valid bracketed range contains no coordinates and that is not legal,
-     i.e., this is not a superfluous file in an MFO */
+  i.e., this is not a superfluous file in an MFO */
   if(lmt.cnt == 0){
-    if(lmt.lmt_typ == lmt_crd_val) (void)fprintf(stdout,"%s: ERROR Domain %g <= %s <= %g brackets no coordinate values.\n",prg_nm_get(),lmt.min_val,lmt.nm,lmt.max_val); 
-    if(lmt.lmt_typ == lmt_dmn_idx) (void)fprintf(stdout,"%s: ERROR Empty domain for %s\n",prg_nm_get(),lmt.nm); 
+    if(lmt.lmt_typ == lmt_crd_val) (void)fprintf(stdout,"%s: ERROR Domain %g <= %s <= %g brackets no coordinate values.\n",nco_prg_nm_get(),lmt.min_val,lmt.nm,lmt.max_val); 
+    if(lmt.lmt_typ == lmt_dmn_idx) (void)fprintf(stdout,"%s: ERROR Empty domain for %s\n",nco_prg_nm_get(),lmt.nm); 
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  
+
   /* Coordinate-valued limits that bracket no values in current file jump here with goto
-     Index-valued limits with no values in current file flow here naturally */
- no_data_ok: /* end goto */
-  if(flg_no_data){
+  Index-valued limits with no values in current file flow here naturally */
+no_data_ok: /* end goto */
+  if(flg_no_data_ok){
     /* File is superfluous (contributes no data) to specified hyperslab
-       Set output parameters to well-defined state
-       This state must not cause ncra or ncrcat to retrieve any data
-       Since ncra and ncrcat use loops for the record dimension, this
-       may be accomplished by returning loop control values that cause
-       loop always to be skipped, never entered, e.g., lmt_rec.srt > lmt_rec.end */
+    Set output parameters to well-defined state
+    This state must not cause ncra or ncrcat to retrieve any data
+    ncra and ncrcat use loops for the record dimension, so this is
+    accomplished by setting loop control values (lmt_rec.srt > lmt_rec.end)
+    that cause record loop always to be skipped (never entered) */
     lmt.srt=-1L;
     lmt.end=lmt.srt-1L;
     lmt.cnt=-1L;
-    /* Keep track of number of records skipped in initial superfluous files */
-    /* if(cnt_crr == 0L) lmt.rec_skp_nsh_spf+=dmn_sz; */
-    /* total number of records processed */
-    lmt.rec_skp_nsh_spf+=dmn_sz; 
-    /* number records skipped since last good one */ 
-    lmt.rec_skp_vld_prv+=dmn_sz;  
-    /* Set variables to preserve utility of diagnostic routines at end of routine */
+    /* Augment number of records skipped in initial superfluous files */
+    if(rec_usd_cml == 0L) lmt.rec_skp_ntl_spf+=dmn_sz; 
+    /* Augment records skipped since last good one */ 
+    lmt.rec_skp_vld_prv+=dmn_sz;
+    /* Set variables to preserve utility of diagnostics at end of routine */
     cnt_rmn_crr=rec_skp_vld_prv_dgn=0L;
   } /* endif */
-  
+
+  /* Accumulate count of records in all opened files, including this one
+  Increment here at end so this structure member includes records from current file 
+  only at end of this routine, where it can only be used diagnostically
+  NB: Location of this augmentation is important! Moving it would have side-effects! */
+  lmt.rec_in_cml+=dmn_sz;
+
   /* Place contents of working structure in location of returned structure */
   *lmt_ptr=lmt;
-  
-  if(dbg_lvl_get() >= nco_dbg_io){
-    (void)fprintf(stderr,"Dimension hyperslabber nco_lmt_evl() diagnostics:\n");
-    (void)fprintf(stderr,"Dimension name = %s\n",lmt.nm);
-    (void)fprintf(stderr,"Limit type is %s\n",(min_lmt_typ == lmt_crd_val) ? "coordinate value" : (FORTRAN_IDX_CNV) ? "one-based dimension index" : "zero-based dimension index");
-    (void)fprintf(stderr,"Limit %s user-specified\n",(lmt.is_usr_spc_lmt) ? "is" : "is not");
-    (void)fprintf(stderr,"Limit %s record dimension\n",(lmt.is_rec_dmn) ? "is" : "is not");
-    (void)fprintf(stderr,"Current file %s specified hyperslab, data %s be read\n",(flg_no_data) ? "is superfluous to" : "is required by",(flg_no_data) ? "will not" : "will");
-    if(rec_dmn_and_mlt_fl_opr) (void)fprintf(stderr,"Records skipped in initial superfluous files = %li \n",lmt.rec_skp_nsh_spf);
-    if(rec_dmn_and_mlt_fl_opr) (void)fprintf(stderr,"Records read from previous files = %li\n",cnt_crr);
-    if(cnt_rmn_ttl != -1L) (void)fprintf(stderr,"Total records to be read from this and all following files = %li\n",cnt_rmn_ttl);
-    if(cnt_rmn_crr != -1L) (void)fprintf(stderr,"Records to be read from this file = %li\n",cnt_rmn_crr);
-    if(rec_skp_vld_prv_dgn != -1L) (void)fprintf(stderr,"rec_skp_vld_prv_dgn (previous file, if any) = %li \n",rec_skp_vld_prv_dgn);
-    if(rec_skp_vld_prv_dgn != -1L) (void)fprintf(stderr,"rec_skp_vld_prv (this file) = %li \n",lmt.rec_skp_vld_prv);
-    (void)fprintf(stderr,"min_sng = %s\n",lmt.min_sng == NULL ? "NULL" : lmt.min_sng);
-    (void)fprintf(stderr,"max_sng = %s\n",lmt.max_sng == NULL ? "NULL" : lmt.max_sng);
-    (void)fprintf(stderr,"srd_sng = %s\n",lmt.srd_sng == NULL ? "NULL" : lmt.srd_sng);
-    (void)fprintf(stderr,"monotonic_direction = %s\n",monotonic_direction == increasing ? "increasing" : "decreasing");
-    (void)fprintf(stderr,"min_val = %g\n",lmt.min_val);
-    (void)fprintf(stderr,"max_val = %g\n",lmt.max_val);
-    (void)fprintf(stderr,"min_idx = %li\n",lmt.min_idx);
-    (void)fprintf(stderr,"max_idx = %li\n",lmt.max_idx);
-    (void)fprintf(stderr,"srt = %li\n",lmt.srt);
-    (void)fprintf(stderr,"end = %li\n",lmt.end);
-    (void)fprintf(stderr,"cnt = %li\n",lmt.cnt);
-    (void)fprintf(stderr,"srd = %li\n",lmt.srd);
-    (void)fprintf(stderr,"WRP = %s\n",lmt.srt > lmt.end ? "YES" : "NO");
-    (void)fprintf(stderr,"SRD = %s\n",lmt.srd != 1L ? "YES" : "NO");
-    (void)fprintf(stderr,"no_data = %s\n\n",flg_no_data ? "True" : "False");
-  } /* end dbg */
-  
-  if(lmt.srt > lmt.end && !flg_no_data){
-    if(prg_id != ncks) (void)fprintf(stderr,"WARNING: Possible instance of Schweitzer data hole requiring better diagnostics TODO #148\n");
-    if(prg_id != ncks) (void)fprintf(stderr,"HINT: If operation fails, try multislabbing (http://nco.sf.net/nco.html#msa) wrapped dimension using ncks first, and then apply %s to the resulting file\n",prg_nm_get());
-  } /* end dbg */
-  
-  fl_udu_sng=(char *)nco_free(fl_udu_sng);
-  
-} /* end nco_lmt_evl() */
-
-lmt_sct ** /* O [sct] Structure list with user-specified strings for min and max limits */
-nco_lmt_prs /* [fnc] Create limit structures with name, min_sng, max_sng elements */
-(const int lmt_nbr, /* I [nbr] number of dimensions with limits */
- CST_X_PTR_CST_PTR_CST_Y(char,lmt_arg)) /* I [sng] List of user-specified dimension limits */
-{
-  /* Purpose: Set name, min_sng, max_sng elements of 
-     comma separated list of names and ranges. This routine
-     merely evaluates syntax of input expressions and
-     does not attempt to validate dimensions or their ranges
-     against those present in input netCDF file. */
-  
-  /* Valid syntax adheres to nm,[min_sng][,[max_sng][,[srd_sng]]] */
-  
-  void nco_usg_prn(void);
-  
-  char **arg_lst;
-  
-  const char dlm_sng[]=",";
-  
-  lmt_sct **lmt=NULL_CEWI;
-  
-  int idx;
-  int arg_nbr;
-  
-  if(lmt_nbr > 0) lmt=(lmt_sct **)nco_malloc(lmt_nbr*sizeof(lmt_sct *));
-  for(idx=0;idx<lmt_nbr;idx++){
-    /* Process hyperslab specifications as normal text list */
-    arg_lst=nco_lst_prs_2D(lmt_arg[idx],dlm_sng,&arg_nbr);
-    
-    /* Check syntax */
-    if(
-       arg_nbr < 2 || /* Need more than just dimension name */
-       arg_nbr > 4 || /* Too much information */
-       arg_lst[0] == NULL || /* Dimension name not specified */
-       (arg_nbr == 2 && arg_lst[1] == NULL) || /* No min specified */
-       (arg_nbr == 3 && arg_lst[1] == NULL && arg_lst[2] == NULL) || /* No min or max when stride not specified */
-       (arg_nbr == 4 && arg_lst[3] == NULL) || /* Stride should be specified */
-       False){
-      (void)fprintf(stdout,"%s: ERROR in hyperslab specification for dimension %s\n%s: HINT Conform request to hyperslab documentation at http://nco.sf.net/nco.html#hyp\n",prg_nm_get(),lmt_arg[idx],prg_nm_get());
-      nco_exit(EXIT_FAILURE);
-    } /* end if */
-    
-    /* Initialize structure */
-    /* lmt strings that are not explicitly set by user remain NULL, i.e., 
-       specifying default setting will appear as if nothing at all was set.
-       Hopefully, in routines that follow, branch followed when dimension has
-       all default settings specified (e.g.,"-d foo,,,,") yields same answer
-       as branch for which no hyperslab along that dimension was set. */
-    lmt[idx]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
-    lmt[idx]->nm=NULL;
-    lmt[idx]->is_usr_spc_lmt=True; /* True if any part of limit is user-specified, else False */
-    lmt[idx]->min_sng=NULL;
-    lmt[idx]->max_sng=NULL;
-    lmt[idx]->srd_sng=NULL;
-    /* rec_skp_nsh_spf is used for record dimension in multi-file operators */
-    lmt[idx]->rec_skp_nsh_spf=0L; /* Number of records skipped in initial superfluous files */
-    
-    /* Fill-in structure */
-    lmt[idx]->nm=arg_lst[0];
-    lmt[idx]->min_sng=arg_lst[1];
-    /* Setting min_sng and max_sng to same pointer would lead to dangerous double-free() condition */
-    if(arg_nbr <= 2) lmt[idx]->max_sng=(char *)strdup(arg_lst[1]);
-    if(arg_nbr > 2) lmt[idx]->max_sng=arg_lst[2]; 
-    if(arg_nbr > 3) lmt[idx]->srd_sng=arg_lst[3];
-    
-    if(lmt[idx]->max_sng == NULL) lmt[idx]->is_usr_spc_max=False; else lmt[idx]->is_usr_spc_max=True;
-    if(lmt[idx]->min_sng == NULL) lmt[idx]->is_usr_spc_min=False; else lmt[idx]->is_usr_spc_min=True;
-    
-    /* Initialize types used to re-base coordinate variables */
-    lmt[idx]->origin=0.0;
-    lmt[idx]->rbs_sng=NULL_CEWI;
-    lmt[idx]->lmt_cln=cln_nil;
-    
-    /* Free current pointer array to strings, leaving untouched the strings themselves
-       They will be free()'d with limit structures in nco_lmt_lst_free() */
-    arg_lst=(char **)nco_free(arg_lst);
-  } /* End loop over lmt structure list */
-  
-  return lmt;
-} /* end nco_lmt_prs() */
 
-int /* O [enm] Limit type */
-nco_lmt_typ /* [fnc] Determine limit type */
-(char *sng) /* I [ptr] Pointer to limit string */
-{
-  /* Purpose: Determine type of user-specified limit */
-  
-  /* Test for UDUnits unit string, then for simple coordinate, 
-     then date/time string (ie YYYY-mm-DD), else default to dimensional index */
-  if(strchr(sng,' ')) /* Space delimits user-specified units */
-    return lmt_udu_sng;
-  if(strchr(sng,'.') ) /* Decimal point (most common so check first) */
-    return lmt_crd_val;
-  if(strchr(sng,'E') || strchr(sng,'e') || /* Exponential */
-     strchr(sng,'D') || strchr(sng,'d')) /* Double */
-    /* Limit is "simple" (non-UDUnits) coordinate value */
-    return lmt_crd_val;
-  if(strchr(sng,'-') && ((char*)strchr(sng,'-') != (char*)sng)){
-    /* check for a date like string */   
-    int y,m,d;
-    if( sscanf(sng,"%d-%d-%d",&y,&m,&d)==3 ) 
-      return lmt_udu_sng;
-  }  
-  /* Default: Limit is dimension index */
-  return lmt_dmn_idx;
-  
-} /* end nco_lmt_typ() */
+  if(nco_dbg_lvl_get() == nco_dbg_old){
+    (void)nco_prt_lmt(lmt,min_lmt_typ,FORTRAN_IDX_CNV,flg_no_data_ok,rec_usd_cml,monotonic_direction,rec_dmn_and_mfo,cnt_rmn_ttl,cnt_rmn_crr,rec_skp_vld_prv_dgn);
+  } /* end dbg */
 
+  if(lmt.srt > lmt.end && !flg_no_data_ok){
+    if(nco_prg_id != ncks) (void)fprintf(stderr,"WARNING: Possible instance of Schweitzer data hole requiring better diagnostics TODO #148\n");
+    if(nco_prg_id != ncks) (void)fprintf(stderr,"HINT: If operation fails, try multislabbing (http://nco.sf.net/nco.html#msa) wrapped dimension using ncks first, and then apply %s to the resulting file\n",nco_prg_nm_get());
+  } /* end dbg */
 
+  fl_udu_sng=(char *)nco_free(fl_udu_sng);
 
-char * /* O [sng] Units string */
-nco_lmt_get_udu_att /* Successful conversion returns units attribute otherwise null */
-(const int nc_id, /* I [idx] netCDF file ID */
- const int var_id,
- const char *att_nm) /* I [id] Variable ID whose attribute to read */
-{
-  /* Grab units attribute from disk */
-  nc_type att_typ; 
-  long att_sz;
-  char *fl_udu_sng=NULL_CEWI;
-  
-  if(nco_inq_att_flg(nc_id,var_id,att_nm,&att_typ,&att_sz) == NC_NOERR){
-    /* Allocate memory for attribute */
-    if(att_typ == NC_CHAR){
-      fl_udu_sng=(char *)nco_malloc((att_sz+1UL)*sizeof(char));
-      /* Get 'units' attribute */
-      (void)nco_get_att(nc_id,var_id,att_nm,fl_udu_sng,att_typ);
-      fl_udu_sng[att_sz]='\0';
-    } /* !NC_CHAR */
-  } /* endif */
-  return fl_udu_sng;
-} /* end nco_lmt_get_udu_att() */
+} /* nco_lmt_evl_dmn_crd() */
diff --git a/src/nco/nco_lmt.h b/src/nco/nco_lmt.h
index d8e219c..2e9a7dd 100644
--- a/src/nco/nco_lmt.h
+++ b/src/nco/nco_lmt.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_lmt.h,v 1.45 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_lmt.h,v 1.66 2013/06/08 06:31:40 zender Exp $ */
 
 /* Purpose: Hyperslab limits */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -20,7 +20,10 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* strcasecmp() */
+#endif /* !HAVE_STRINGS_H */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -44,7 +47,20 @@ enum lmt_typ{ /* [enm] Limit type */
  lmt_dmn_idx, /* 1, Dimension index limit */
  lmt_udu_sng /* 2, UDUnits string */
 }; /* end lmt_typ enum */
-  
+
+void
+nco_lmt_init /* [fnc] Initialize limit to NULL/default values */
+(lmt_sct *lmt); /* I/O [sct] Limit structure to initialize */
+
+void
+nco_lmt_prt /* [fnc] Print a Limit structure */
+(lmt_sct *lmt); /* I/O [sct] Limit structure to print */
+
+void
+nco_lmt_cpy /* [fnc] Deep-copy a Limit structure */
+(const lmt_sct * const lmt1, /* I [sct] Limit structure to copy */
+ lmt_sct *lmt2);/* O [sct] New limit structure */
+
 void
 nco_lmt_evl /* [fnc] Parse user-specified limits into hyperslab specifications */
 (int nc_id, /* I [idx] netCDF file ID */
@@ -67,13 +83,13 @@ nco_lmt_lst_free /* [fnc] Free memory associated with limit structure list */
 (lmt_sct **lmt_lst, /* I/O [sct] Limit structure list to free */
  const int lmt_nbr); /* I [nbr] Number of limit structures in list */
 
-lmt_all_sct * /* O [sct] Pointer to free'd structure */
+lmt_msa_sct * /* O [sct] Pointer to free'd structure */
 nco_lmt_all_free /* [fnc] Free memory associated with lmt_all structure */
-(lmt_all_sct *lmt_all); /* I/O [sct] Limit structure to free */
+(lmt_msa_sct *lmt_all); /* I/O [sct] Limit structure to free */
 
-lmt_all_sct ** /* O [sct] Pointer to free'd structure list */
+lmt_msa_sct ** /* O [sct] Pointer to free'd structure list */
 nco_lmt_all_lst_free /* [fnc] Free memory associated with lmt_all structure list */
-(lmt_all_sct **lmt_all_lst, /* I/O [sct] Limit structure list to free */
+(lmt_msa_sct **lmt_all_lst, /* I/O [sct] Limit structure list to free */
  const int lmt_all_nbr); /* I [nbr] Number of limit structures in list */
 
 lmt_sct ** /* O [sct] Structure list with user-specified strings for min and max limits */
@@ -93,6 +109,33 @@ int /* O [enm] Limit type */
 nco_lmt_typ /* [fnc] Determine limit type */
 (char *sng);/* I [ptr] Pointer to limit string */
 
+void
+nco_prt_lmt                    /* [fnc] Print limit information */
+(lmt_sct lmt,                  /* I [sct] Limit structure */
+ int min_lmt_typ,              /* I [nbr] Limit type */
+ nco_bool FORTRAN_IDX_CNV,     /* I [flg] Hyperslab indices obey Fortran convention */
+ nco_bool flg_no_data_ok,      /* I [flg] True if file contains no data for hyperslab */
+ long rec_usd_cml,             /* I [nbr] Number of valid records already processed (only used for record dimensions in multi-file operators) */
+ monotonic_direction_enm monotonic_direction, /* I [enm] Monotonic_direction */
+ nco_bool rec_dmn_and_mfo,     /* I [flg] True if record dimension in multi-file operator */
+ long cnt_rmn_ttl,             /* I [nbr] Total records to be read from this and all remaining files */
+ long cnt_rmn_crr,             /* I [nbr] Records to extract from current file */
+ long rec_skp_vld_prv_dgn);    /* I [nbr] Records skipped at end of previous valid file, if any (diagnostic only) */
+
+void                      
+nco_lmt_evl_dmn_crd            /* [fnc] Parse user-specified limits into hyperslab specifications */
+(const int nc_id,              /* I [ID] netCDF file ID */
+ long rec_usd_cml,             /* I [nbr] Number of valid records already processed (only used for record dimensions in multi-file operators) */
+ nco_bool FORTRAN_IDX_CNV,     /* I [flg] Hyperslab indices obey Fortran convention */
+ const char * const grp_nm_fll,/* I [sng] Full group name (dimension or coordinate) */
+ const char * const nm,        /* I [sng] Name (dimension or coordinate) */
+ const size_t sz,              /* I [nbr] Size (dimension or coordinate) */
+ const nco_bool is_rec,        /* I [flg] Is a record (dimension or coordinate) ? */
+ const nco_bool is_crd,        /* I [flg] Is a coordinate variable ? */
+ lmt_sct *lmt_ptr);            /* I/O [sct] Structure from nco_lmt_prs() in input, filled on output  */
+ 
+
+
 
 #ifdef __cplusplus
 } /* end extern "C" */
diff --git a/src/nco/nco_lst_utl.c b/src/nco/nco_lst_utl.c
index 67af887..d796287 100644
--- a/src/nco/nco_lst_utl.c
+++ b/src/nco/nco_lst_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_lst_utl.c,v 1.61 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_lst_utl.c,v 1.83 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: List utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -16,25 +16,120 @@
 /* Compile following routines only if regular expression library is present */
 #ifdef NCO_HAVE_REGEX_FUNCTIONALITY
 
+char * /* O [nbr] Format string with printf()-formats replaced */
+nco_fmt_sng_printf_subst /* [fnc] Replace printf() format statements */
+(const char * const fmt_sng) /* I [sng] Format string before processing */
+{
+  /* Purpose: Replace printf()-format statements with string format statement */
+
+  const char fnc_nm[]="nco_fmt_sng_printf_subst()"; /* [sng] Function name */
+
+  /* Regular expressions for printf()-formats
+     const char rx_sng[]="%(?:\\d+\\$)?[+-]?(?:[ 0]|'.{1})?-?\\d*(?:\\.\\d+)?[bcdeEufFgGosxX]"; [sng] Regular expression pattern found on Web 
+     const char rx_sng[]="%([+- 0#])?([0-9]*)?([\.?[0-9]*)?[bcdeEfFgGiosuxX]"; Space in position 6 causes error
+     Flag character " " crashes everywhere
+     Flag characters "'I" are fancy
+     Length modifiers "jzt" are somewhat fancy (unlikely to be on Windows) */
+     
+#ifdef _MSC_VER
+  const char rx_sng[]="%([+-0#])?([0-9]*)?([\.?[0-9]*)?([h+l+L])?[bcdeEfFgGiosuxX]"; /* [sng] Regular expression pattern */
+#else /* _MSC_VER */
+  const char rx_sng[]="%([+-0#'I])?([0-9]*)?([\.?[0-9]*)?([h+l+Ljzt])?[bcdeEfFgGiosuxX]"; /* [sng] Regular expression pattern */
+#endif /* _MSC_VER */
+
+  char *fmt_sng_new;
+
+  int err_id;
+  int flg_cmp; /* Comparison flags */
+  int flg_exe; /* Execution flages */
+  int mch_nbr=0;
+
+  regmatch_t *result;
+  regex_t *rx;
+  regoff_t mch_psn_srt=0; /* Byte offset from start of string to start of substring */
+  regoff_t mch_psn_end=0; /* Byte offset from start of string to first character after substring */
+
+  size_t rx_prn_sub_xpr_nbr;
+  
+  rx=(regex_t *)nco_malloc(sizeof(regex_t));
+
+  /* Choose RE_SYNTAX_POSIX_EXTENDED regular expression type */
+  flg_cmp=(REG_EXTENDED | REG_NEWLINE);
+  /* Set execution flags */
+  flg_exe=0;
+
+  /* Compile regular expression */
+  if((err_id=regcomp(rx,rx_sng,flg_cmp)) != 0){ /* Compile regular expression */
+    char const * rx_err_sng;  
+    /* POSIX regcomp return error codes */
+    switch(err_id){
+    case REG_BADPAT: rx_err_sng="Invalid pattern"; break;  
+    case REG_ECOLLATE: rx_err_sng="Not implemented"; break;
+    case REG_ECTYPE: rx_err_sng="Invalid character class name"; break;
+    case REG_EESCAPE: rx_err_sng="Trailing backslash"; break;
+    case REG_ESUBREG: rx_err_sng="Invalid back reference"; break;
+    case REG_EBRACK: rx_err_sng="Unmatched left bracket"; break;
+    case REG_EPAREN: rx_err_sng="Parenthesis imbalance"; break;
+    case REG_EBRACE: rx_err_sng="Unmatched {"; break;
+    case REG_BADBR: rx_err_sng="Invalid contents of { }"; break;
+    case REG_ERANGE: rx_err_sng="Invalid range end"; break;
+    case REG_ESPACE: rx_err_sng="Ran out of memory"; break;
+    case REG_BADRPT: rx_err_sng="No preceding re for repetition op"; break;
+    default: rx_err_sng="Invalid pattern"; break;  
+    } /* end switch */
+    (void)fprintf(stdout,"%s: ERROR %s reports error in regular expression \"%s\" %s.\n",nco_prg_nm_get(),fnc_nm,rx_sng,rx_err_sng); 
+    nco_exit(EXIT_FAILURE);
+  } /* end if err */
+
+  rx_prn_sub_xpr_nbr=rx->re_nsub+1; /* Number of parenthesized sub-expressions */
+
+  /* Search string */
+  result=(regmatch_t *)nco_malloc(sizeof(regmatch_t)*rx_prn_sub_xpr_nbr);
+
+  /* Search format string for matches */
+  if(!regexec(rx,fmt_sng,rx_prn_sub_xpr_nbr,result,flg_exe)) mch_nbr++;
+
+  /* Replace match with desired format */
+  fmt_sng_new=(char *)strdup(fmt_sng);
+  if(mch_nbr){
+    mch_psn_srt=result->rm_so; /* [B] Byte offset from start of string to start of substring */
+    mch_psn_end=result->rm_eo-1L; /* [B] Byte offset from start of string to end   of substring */
+    (void)nco_realloc(fmt_sng_new,(mch_psn_srt+strlen(fmt_sng)-mch_psn_end+2L)*sizeof(char));
+    (void)sprintf(fmt_sng_new+mch_psn_srt,"%%s");
+    (void)sprintf(fmt_sng_new+mch_psn_srt+2,"%s",fmt_sng+mch_psn_end+1);
+  } /* !mch_nbr */
+  
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"%s: DEBUG %s reports that the user-supplied formatting string \"%s\" has %d matches to the regular expression \"%s\", which has %zu parenthesized sub-expressions. The first match, if any, begins at offset %d and ends at offset %d and is %d characters long. The revised format string is \"%s\"\n",nco_prg_nm_get(),fnc_nm,fmt_sng,mch_nbr,rx_sng,rx_prn_sub_xpr_nbr,mch_psn_srt,mch_psn_end,mch_psn_end-mch_psn_srt+1,fmt_sng_new);
+
+  regfree(rx); /* Free regular expression data structure */
+  rx=(regex_t *)nco_free(rx);
+  result=(regmatch_t *)nco_free(result);
+
+  return fmt_sng_new;
+} /* end nco_fmt_sng_printf_subst() */
+
 int /* O [nbr] Number of matches found */
-nco_lst_meta_search /* [fnc] Search for pattern matches in var string list */
-(int var_nbr_all, /* I [nbr] Size of var_lst_all and var_xtr_rqs */
- nm_id_sct *var_lst_all, /* I [sct] All variables in input file (with IDs) */
+nco_lst_rx_search /* [fnc] Search for pattern matches in list of objects (groups or variables) */
+(const int obj_nbr_all, /* I [nbr] Size of obj_lst_all and flg_obj_mch */
+ nm_id_sct *obj_lst_all, /* I [sct] All objects in input file (with IDs) */
  char *rx_sng, /* I [sng] Regular expression pattern */
- nco_bool *var_xtr_rqs) /* O [flg] Matched variable holder */
+ nco_bool *flg_obj_mch) /* O [flg] Match flag */
 {
-  /* Purpose: Match regular expressions to members of list */
+  /* Purpose: Set flags indicating whether each list member matches given regular expression
+     NB: This function never writes False into a flag, in only writes True.
+     This is because input flags are not assumed to be stateless */
 
-  int idx;
+  int obj_idx;
   int err_id;
   int flg_cmp; /* Comparison flags */
   int flg_exe; /* Execution flages */
   int mch_nbr=0;
-  size_t nbr_sub_xpr;
   
   regmatch_t *result;
   regex_t *rx;
 
+  size_t rx_prn_sub_xpr_nbr;
+
   rx=(regex_t *)nco_malloc(sizeof(regex_t));
 
   /* Choose RE_SYNTAX_POSIX_EXTENDED regular expression type */
@@ -43,37 +138,38 @@ nco_lst_meta_search /* [fnc] Search for pattern matches in var string list */
   flg_exe=0;
 
   /* Compile regular expression */
-  if((err_id=regcomp(rx,rx_sng,flg_cmp)) != 0){ /* Compile regular expression */
+  if((err_id=regcomp(rx,rx_sng,flg_cmp))){ /* Compile regular expression */
     char const * rx_err_sng;  
     /* POSIX regcomp return error codes */
     switch(err_id){
-    case REG_BADPAT: rx_err_sng="Invalid pattern."; break;  
-    case REG_ECOLLATE: rx_err_sng="Not implemented."; break;
-    case REG_ECTYPE: rx_err_sng="Invalid character class name."; break;
-    case REG_EESCAPE: rx_err_sng="Trailing backslash."; break;
-    case REG_ESUBREG: rx_err_sng="Invalid back reference."; break;
-    case REG_EBRACK: rx_err_sng="Unmatched left bracket."; break;
-    case REG_EPAREN: rx_err_sng="Parenthesis imbalance."; break;
-    case REG_EBRACE: rx_err_sng="Unmatched {."; break;
-    case REG_BADBR: rx_err_sng="Invalid contents of { }."; break;
-    case REG_ERANGE: rx_err_sng="Invalid range end."; break;
-    case REG_ESPACE: rx_err_sng="Ran out of memory."; break;
+    case REG_BADPAT: rx_err_sng="Invalid pattern"; break;  
+    case REG_ECOLLATE: rx_err_sng="Not implemented"; break;
+    case REG_ECTYPE: rx_err_sng="Invalid character class name"; break;
+    case REG_EESCAPE: rx_err_sng="Trailing backslash"; break;
+    case REG_ESUBREG: rx_err_sng="Invalid back reference"; break;
+    case REG_EBRACK: rx_err_sng="Unmatched left bracket"; break;
+    case REG_EPAREN: rx_err_sng="Parenthesis imbalance"; break;
+    case REG_EBRACE: rx_err_sng="Unmatched {"; break;
+    case REG_BADBR: rx_err_sng="Invalid contents of { }"; break;
+    case REG_ERANGE: rx_err_sng="Invalid range end"; break;
+    case REG_ESPACE: rx_err_sng="Ran out of memory"; break;
     case REG_BADRPT: rx_err_sng="No preceding re for repetition op"; break;
-    default: rx_err_sng="Invalid pattern."; break;  
+    default: rx_err_sng="Invalid pattern"; break;  
     } /* end switch */
-    (void)fprintf(stdout,"%s: ERROR nco_lst_meta_search() error in regular expression \"%s\" %s \n",prg_nm_get(),rx_sng,rx_err_sng); 
+    (void)fprintf(stdout,"%s: ERROR nco_lst_rx_search() error in regular expression \"%s\" %s\n",nco_prg_nm_get(),rx_sng,rx_err_sng); 
     nco_exit(EXIT_FAILURE);
   } /* end if err */
 
-  nbr_sub_xpr=rx->re_nsub+1; /* How many matches are there in line? */
+  rx_prn_sub_xpr_nbr=rx->re_nsub+1L; /* Number of parenthesized sub-expressions */
 
   /* Search string */
-  result=(regmatch_t *)nco_malloc(sizeof(regmatch_t)*nbr_sub_xpr);
+  result=(regmatch_t *)nco_malloc(sizeof(regmatch_t)*rx_prn_sub_xpr_nbr);
 
-  /* Search each variable string for matches */
-  for(idx=0;idx<var_nbr_all;idx++){  
-    if(!regexec(rx,var_lst_all[idx].nm,nbr_sub_xpr,result,flg_exe)){
-      var_xtr_rqs[idx]=True;
+  /* Check each object string for match to rx */
+  for(obj_idx=0;obj_idx<obj_nbr_all;obj_idx++){  
+    /* NB: Here is where flag would be set to False if input were stateless */
+    if(!regexec(rx,obj_lst_all[obj_idx].nm,rx_prn_sub_xpr_nbr,result,flg_exe)){
+      flg_obj_mch[obj_idx]=True;
       mch_nbr++;
     } /* end if */
   } /* end loop over variables */
@@ -83,8 +179,7 @@ nco_lst_meta_search /* [fnc] Search for pattern matches in var string list */
   result=(regmatch_t *)nco_free(result);
 
   return mch_nbr;
-} /* end nco_lst_meta_search() */
-
+} /* end nco_lst_rx_search() */
 #endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
 
 void 
@@ -96,7 +191,7 @@ nco_srt_ntg /* [fnc] Sort array of integers */
   /* Purpose: Stub for Numerical Recipes-compatible indexx() routine */
   long foo=sizeof(lmn_nbr)+sizeof(arr_in)+sizeof(idx); /* CEWI */
   foo++; /* CEWI */
-  (void)fprintf(stdout,"%s: ERROR nco_srt_ntg() routine should not be called\n",prg_nm_get());
+  (void)fprintf(stdout,"%s: ERROR nco_srt_ntg() routine should not be called\n",nco_prg_nm_get());
   nco_exit(EXIT_FAILURE);
 } /* end nco_srt_ntg() */
 
@@ -109,7 +204,7 @@ nco_srt_lph /* [fnc] Sort array of strings */
   /* Purpose: Stub for Numerical Recipes-compatible indexx_alpha() routine */
   long foo=sizeof(lmn_nbr)+sizeof(arr_in)+sizeof(idx); /* CEWI */
   foo++; /* CEWI */
-  (void)fprintf(stdout,"%s: ERROR nco_srt_lph() routine should not be called\n",prg_nm_get());
+  (void)fprintf(stdout,"%s: ERROR nco_srt_lph() routine should not be called\n",nco_prg_nm_get());
   nco_exit(EXIT_FAILURE);
 } /* end nco_srt_lph() */
 
@@ -250,7 +345,7 @@ nco_lst_prs_1D /* [fnc] Create 1D array of strings from given string and delimit
   for(idx=0;idx<*nbr_lst;idx++)
     if(strlen(lst[idx]) == 0) lst[idx]=NULL;
 
-  if(dbg_lvl_get() == 5){
+  if(nco_dbg_lvl_get() == 5){
     (void)fprintf(stderr,"nco_lst_prs_1d() reports %d elements in list delimited by \"%s\"\n",*nbr_lst,dlm_sng);
     for(idx=0;idx<*nbr_lst;idx++) 
       (void)fprintf(stderr,"lst[%d] = %s\n",idx,(lst[idx] == NULL) ? "NULL" : lst[idx]);
@@ -340,14 +435,6 @@ nco_lst_prs_2D /* [fnc] Create list of strings from given string and delimiter *
   for(idx=0;idx<*nbr_lst;idx++)
     if(strlen(sng_lst_out[idx]) == 0) sng_lst_out[idx]=NULL;
 
-  if(dbg_lvl_get() == 5){
-    (void)fprintf(stderr,"nco_lst_prs_2D() reports %d elements in list delimited by \"%s\"\n",*nbr_lst,dlm_sng);
-    for(idx=0;idx<*nbr_lst;idx++) 
-      (void)fprintf(stderr,"sng_lst_out[%d] = %s\n",idx,(sng_lst_out[idx] == NULL) ? "NULL" : sng_lst_out[idx]);
-    (void)fprintf(stderr,"\n");
-    (void)fflush(stderr);
-  } /* end debug */
-
   /* Free duplicate of sng_in */
   sng_in_cpy=(char *)nco_free(sng_in_cpy); 
 
@@ -422,11 +509,6 @@ nco_lst_prs_sgl_2D /* [fnc] Create list of strings from given string and delimit
 
 } /* end nco_lst_prs_sgl_2D() */
 
-
-
-
-
-
 int /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
 nco_cmp_chr /* [fnc] Compare two characters */
 (const void * val_1, /* I [chr] Character to compare */
@@ -578,7 +660,23 @@ nco_cmp_ptr_unn /* Compare values of two pointer unions of same type */
 } /* end nco_cmp_ptr_unn() */
 
 void 
-nco_lst_comma2hash /* [fnc] Replace commas with hashes when within braces */
+nco_hash2comma /* [fnc] Replace hashes with commas */
+(char * const rx_sng) /* [sng] Regular expression */
+{
+  /* Purpose: Convert hashes in a string to commas
+     Normally this function is called to undo effects of nco_rx_comma2hash() 
+     Thus assumption is that string may be an rx that needs careful handling before evaluation
+     NB: Usually this code may operate on system memory (e.g., optarg) so be very careful 
+     not to overwrite ends of strings */
+  char *sng=rx_sng;
+  while(*sng){
+    if(*sng == '#') *sng=',';
+    sng++;
+  } /* end while */
+} /* end nco_lst_hash2comma() */
+
+void 
+nco_rx_comma2hash /* [fnc] Replace commas with hashes when within braces */
 (char * const rx_sng) /* [sng] Regular expression */
 {
   /* Purpose: Convert commas within braces to hashes within braces in regular expressions
@@ -606,7 +704,7 @@ nco_lst_comma2hash /* [fnc] Replace commas with hashes when within braces */
     /* Increment position in regular expression */
     cp++;
   } /* end while character is not NUL */
-} /* end nco_lst_comma2hash() */
+} /* end nco_rx_comma2hash() */
 
 nm_id_sct * /* O [sct] Sorted output list */
 nco_lst_srt_nm_id /* [fnc] Sort name/ID input list numerically or alphabetically */
@@ -638,11 +736,6 @@ nco_nm_id_lst_free /* [fnc] Free memory associated with name-ID structure list *
 
   for(idx=0;idx<nm_id_nbr;idx++){
     if(nm_id_lst[idx].nm) nm_id_lst[idx].nm=(char *)nco_free(nm_id_lst[idx].nm);
-    /* fxm: not safe to free new nm_id_sct members until code consistently initializes them 
-       this will cause a temporary memory leak until initialization is consistent */
-    /*    if(nm_id_lst[idx].var_nm_fll) nm_id_lst[idx].var_nm_fll=(char *)nco_free(nm_id_lst[idx].var_nm_fll);*/
-    /*    if(nm_id_lst[idx].grp_nm) nm_id_lst[idx].grp_nm=(char *)nco_free(nm_id_lst[idx].grp_nm);*/
-    /*    if(nm_id_lst[idx].grp_nm_fll) nm_id_lst[idx].grp_nm_fll=(char *)nco_free(nm_id_lst[idx].grp_nm_fll);*/
   } /* end loop over idx */
 
   /* Free structure pointer last */
@@ -675,7 +768,7 @@ sng_lst_cat /* [fnc] Join string list together into one string, delete originals
 
   /* Delimiter must be NUL-terminated (a string) so strlen() works */
   if(dlm_sng == NULL){
-    (void)fprintf(stdout,"%s: ERROR sng_lst_cat() reports delimiter string is NULL\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR sng_lst_cat() reports delimiter string is NULL\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* end if */
   dlm_lng=strlen(dlm_sng); 
diff --git a/src/nco/nco_lst_utl.h b/src/nco/nco_lst_utl.h
index 3665ed6..ec12192 100644
--- a/src/nco/nco_lst_utl.h
+++ b/src/nco/nco_lst_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_lst_utl.h,v 1.44 2012/02/14 01:10:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_lst_utl.h,v 1.52 2013/06/17 05:24:33 pvicente Exp $ */
 
 /* Purpose: List utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -19,7 +19,7 @@
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, qsort */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 #ifdef HAVE_REGEX_H 
 /* 20120213: Linux GCC 4.6 man page says regex.h depends on (non-present) sys/types.h */
@@ -36,6 +36,7 @@
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_ctl.h" /* Program flow control functions */
+#include "nco_grp_trv.h" /* Group traversal */
 #include "nco_mmr.h" /* Memory management */
 #include "nco_sng_utl.h" /* String utilities */
 
@@ -43,9 +44,13 @@
 extern "C" {
 #endif /* __cplusplus */
 
+char * /* O [nbr] Format string with printf()-formats replaced */
+nco_fmt_sng_printf_subst /* [fnc] Replace printf() format statements */
+(const char * const fmt_sng); /* I [sng] Format string before processing */
+
 int /* O [nbr] Number of matches found */
-nco_lst_meta_search /* [fnc] Search for pattern matches in var string list */
-(int var_nbr_all, /* I [nbr] Size of var_lst_all and var_xtr_rqs */
+nco_lst_rx_search /* [fnc] Search for pattern matches in var string list */
+(const int var_nbr_all, /* I [nbr] Size of var_lst_all and var_xtr_rqs */
  nm_id_sct *var_lst_all, /* I [sct] All variables in input file (with IDs) */
  char *rx_sng, /* I [sng] Regular expression pattern */
  nco_bool *var_xtr_rqs); /* O [flg] Matched vars holder */
@@ -123,7 +128,11 @@ nco_dmn_lst_free /* [fnc] Free memory associated with dimension structure list *
  const int dmn_nbr); /* I [nbr] Number of dimension structures in list */
 
 void 
-nco_lst_comma2hash /* [fnc] Convert {...,...} to {...#...} in regular expressions */
+nco_hash2comma /* [fnc] Replace hashes with commas */
+(char * const rx_sng); /* [sng] Regular expression */
+
+void 
+nco_rx_comma2hash /* [fnc] Convert {...,...} to {...#...} in regular expressions */
 (char * const rx_sng); /* [sng] Regular expression */
 
 nm_id_sct * /* O [sct] Sorted output list */
diff --git a/src/nco/nco_md5.c b/src/nco/nco_md5.c
new file mode 100644
index 0000000..603e315
--- /dev/null
+++ b/src/nco/nco_md5.c
@@ -0,0 +1,554 @@
+/* $Header: /cvsroot/nco/nco/src/nco/nco_md5.c,v 1.20 2013/10/22 03:03:46 zender Exp $ */
+
+/* Purpose: NCO utilities for MD5 digests */
+
+/* Copyright (C) 2012--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
+
+/* Usage:
+   ncecat -O -D 1 --md5 -p ~/nco/data in.nc in.nc ~/foo.nc
+   ncrcat -O -D 1 --md5 -p ~/nco/data in.nc in.nc ~/foo.nc
+   ncks -O -D 1 -H -C -m --md5 -v md5_a,md5_abc ~/nco/data/in.nc
+   ncks -O -D 1 -H -C -m --md5 -v md5_a,md5_abc -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
+   ncks -O -D 1 -C -m --md5 -v md5_a,md5_abc,one_dmn_rec_var ~/nco/data/in.nc
+   ncks -O -D 1 -C -d lev,0 -m --md5 -v md5_a,md5_abc,one_dmn_rec_var ~/nco/data/in.nc */
+
+/* This NCO file contains the entirety of the MD5 implementation by
+   L. Peter Deutsch of Aladdin Software (aka author of Ghostscript).
+   NCO-specific functions are defined first.
+   The NCO-copyright applies only to the NCO-specific functions.
+   LPD's md5.c is included in a nearly unaltered state. 
+   That code is covered by LPD's copyright. */
+
+#include "nco_md5.h" /* MD5 digests */
+
+md5_sct * /* [sct] MD5 configuration */
+nco_md5_ini(void) /* [fnc] Initialize and return MD5 configuration structure */
+{
+  /* Purpose: Initialize and return MD5 configuration structure */
+  md5_sct *md5; /* [sct] MD5 configuration */
+  md5=(md5_sct *)nco_malloc(sizeof(md5_sct));
+  md5->att_nm=(char *)strdup("MD5");
+  md5->dgs=False;
+  md5->wrt=False;
+  return md5;
+} /* end nco_md5_ini() */
+
+md5_sct * /* [sct] MD5 configuration */
+nco_md5_free /* [fnc] Free MD5 configuration structure */
+(md5_sct *md5) /* [sct] MD5 configuration structure to free */
+{
+  /* Purpose: Initialize and return MD5 configuration structure */
+  if(md5->att_nm) md5->att_nm=(char *)nco_free(md5->att_nm);
+  if(md5) md5=(md5_sct *)nco_free(md5);
+  return md5;
+} /* end nco_md5_ini() */
+
+void
+nco_md5_chk /* [fnc] Perform and optionally compare MD5 digest(s) on hyperslab */
+(const md5_sct * const md5, /* I [sct] MD5 Configuration */
+ const char * const var_nm, /* I [sng] Input variable name */
+ const long var_sz_byt, /* I [nbr] Size (in bytes) of hyperslab in RAM */
+ const int nc_id, /* I [id] netCDF file ID */
+ const long * const dmn_srt, /* I [idx] Contiguous vector of indices to start of hyperslab on disk */
+ const long * const dmn_cnt, /* I [nbr] Contiguous vector of lengths of hyperslab on disk */
+ void * const vp) /* I/O [val] Values to digest */
+{
+  /* Purpose: Perform MD5 digest on hyperslab in RAM
+     Optionally do same for hyperslab written to disk and compare with RAM digest 
+     NB: Input argument var_sz_byt is independent of dmn_srt and dmn_cnt
+     Routine uses var_sz_byt _only_ for MD5 digest of RAM variable 
+     That is why this input is const
+     Iff MD5 of disk hyperslab is requested, then routine uses nc_id and var_nm to obtain  
+     var_id, dmn_nbr, var_typ_dsk of variable on disk.
+     From these we obtain var_sz_dsk and var_sz_byt
+     In other words, MD5(RAM) depends only on information provided in RAM while
+     MD5(disk) utilizes netCDF layer to assemble hyperslab data.
+     Idea is that this provides the best comparison of RAM vs. disk hyperslabs */
+
+  int nco_prg_id; /* [enm] Program ID */
+  
+  char md5_dgs_hxd_sng_ram[NCO_MD5_DGS_SZ*2+1];
+  
+  nco_bool MD5_DGS_DSK=False; /* [flg] Perform MD5 digest of variable written to disk */
+
+  nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
+
+  /* MD5 digest of hyperslab already in RAM */
+  (void)nco_md5_chk_ram(var_sz_byt,vp,md5_dgs_hxd_sng_ram);
+  if((nco_prg_id == ncks && nco_dbg_lvl_get() >= nco_dbg_std) ||
+     ((nco_prg_id == ncecat || nco_prg_id == ncrcat) && nco_dbg_lvl_get() >= nco_dbg_var) ||
+     False)
+    (void)fprintf(stderr,"%s: INFO MD5(%s) = %s\n",nco_prg_nm_get(),var_nm,md5_dgs_hxd_sng_ram);
+  
+  /* Write MD5 attributes */
+  if(md5->wrt){
+    /* Test with:
+       ncks -O -C -4 -D 1 --md5_wrt -v md5_.? ~/nco/data/in.nc ~/foo.nc */
+    aed_sct aed_md5;
+    aed_md5.att_nm=md5->att_nm;
+    aed_md5.var_nm=NULL;
+    (void)nco_inq_varid(nc_id,var_nm,&aed_md5.id);
+    aed_md5.sz=NCO_MD5_DGS_SZ*2L;
+    aed_md5.type=NC_CHAR;
+    aed_md5.val.cp=md5_dgs_hxd_sng_ram;
+    aed_md5.mode=aed_overwrite;
+    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Writing MD5 digest to attribute %s of variable %s\n",nco_prg_nm_get(),aed_md5.att_nm,var_nm);
+    (void)nco_aed_prc(nc_id,aed_md5.id,aed_md5);
+  } /* !wrt */
+
+  /* NB: Setting this flag significantly increases execution time
+     Comparing RAM to disk requires reading hyperslab from disk
+     Hence it essentially doubles numbers of disk reads, e.g.,
+     ncrcat reads/writes only one record of one variable at a time, and will perform an extra read to digest each write.
+     Default strategy is to turn on MD5 disk-checking only when user is concatenating files */
+  if(nco_prg_id == ncrcat || nco_prg_id == ncecat) MD5_DGS_DSK=True;  /* [flg] Perform MD5 digest of variable written to disk */
+
+  /* Compare this digest to what is read in from output netCDF file
+     This implementation re-uses vp to hold data read from disk 
+     Advantages of this include lower overall memory usage
+     Assumptions include:
+     1. Original vp data are written to disk just before MD5 digest above
+     2. Original vp data are no longer needed in calling routine, i.e., ncks or ncrcat
+        Hence calls to nco_md5_chk() should occur just after put_vara() and prior to free()
+     3. vp data are contiguous and may be read with a single get_vara() call */
+
+  if(MD5_DGS_DSK){
+    char md5_dgs_hxd_sng_dsk[NCO_MD5_DGS_SZ*2+1];
+
+    int dmn_idx; 
+    int dmn_nbr;
+    int var_id;
+
+    long var_sz_dsk=1L; /* [nbr] Size (in elements) of variable on disk */
+    long var_sz_byt_dsk; /* [nbr] Size (in bytes) of variable (hyperslab) on disk */
+
+    nc_type var_typ_dsk; /* [enm] netCDF type of variable on disk */
+
+    /* Get var_id for requested variable */
+    (void)nco_inq_varid(nc_id,var_nm,&var_id);
+    
+    /* Get type and number of dimensions for variable */
+    (void)nco_inq_var(nc_id,var_id,(char *)NULL,&var_typ_dsk,&dmn_nbr,(int *)NULL,(int *)NULL);
+    
+    for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++) var_sz_dsk*=dmn_cnt[dmn_idx];
+
+    var_sz_byt_dsk=var_sz_dsk*nco_typ_lng(var_typ_dsk);
+
+    /* NB: If dmn_nbr is zero, then input dmn_srt and dmn_cnt are not used
+       When the calling routine knows this, it may supply dmn_srt_and dmn_cnt as (const long * )NULL */
+    if(dmn_nbr == 0) (void)nco_get_var1(nc_id,var_id,0L,vp,var_typ_dsk); else (void)nco_get_vara(nc_id,var_id,dmn_srt,dmn_cnt,vp,var_typ_dsk);
+
+    (void)nco_md5_chk_ram(var_sz_byt_dsk,vp,md5_dgs_hxd_sng_dsk);
+    if(strcmp(md5_dgs_hxd_sng_ram,md5_dgs_hxd_sng_dsk)){
+      (void)fprintf(stderr,"%s: ERROR MD5(%s) RAM and disk disagree: %s != %s\n",nco_prg_nm_get(),var_nm,md5_dgs_hxd_sng_ram,md5_dgs_hxd_sng_dsk);
+      nco_exit(EXIT_FAILURE);
+    }else{ /* endif digests differ */
+
+      if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO MD5 digests of RAM and disk contents for %s agree\n",nco_prg_nm_get(),var_nm);
+    }  /* endif digests agree */
+
+  } /* !MD5_DGS_DSK */
+
+} /* end nco_md5_chk() */
+
+void
+nco_md5_chk_ram /* [fnc] Perform MD5 digest on hyperslab in RAM */
+(const long var_sz_byt, /* I [nbr] Size (in bytes) of hyperslab */
+ const void * const vp, /* I [val] Values to digest */
+ char md5_dgs_hxd_sng[NCO_MD5_DGS_SZ*2+1]) /* O [sng] MD5 digest */
+{
+  /* Purpose: Perform MD5 digest on hyperslab */
+  int idx_dgs; 
+  
+  md5_state_t md5_stt;
+  md5_byte_t md5_dgs_byt[NCO_MD5_DGS_SZ];
+  
+  /* Sequence of MD5 digest determined by LPD's implementation */
+  md5_init(&md5_stt);
+  md5_append(&md5_stt,(const md5_byte_t *)vp,var_sz_byt);
+  md5_finish(&md5_stt,md5_dgs_byt);
+  
+  for(idx_dgs=0;idx_dgs<NCO_MD5_DGS_SZ;++idx_dgs) sprintf(md5_dgs_hxd_sng+idx_dgs*2,"%02x",md5_dgs_byt[idx_dgs]);
+} /* end nco_md5_chk_ram() */
+
+/* Begin md5.c by LPD: */
+
+/*
+  Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.
+  
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+  
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+  
+  1. The origin of this software must not be misrepresented; you must not
+  claim that you wrote the original software. If you use this software
+  in a product, an acknowledgment in the product documentation would be
+  appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+  
+  L. Peter Deutsch
+  ghost at aladdin.com
+*/
+/* $Id: nco_md5.c,v 1.20 2013/10/22 03:03:46 zender Exp $ */
+/*
+  Independent implementation of MD5 (RFC 1321).
+  
+  This code implements the MD5 Algorithm defined in RFC 1321, whose
+  text is available at
+  http://www.ietf.org/rfc/rfc1321.txt
+  The code is derived from the text of the RFC, including the test suite
+  (section A.5) but excluding the rest of Appendix A.  It does not include
+  any code or documentation that is identified in the RFC as being
+  copyrighted.
+  
+  The original and principal author of md5.c is L. Peter Deutsch
+  <ghost at aladdin.com>.  Other authors are noted in the change history
+  that follows (in reverse chronological order):
+  
+  2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
+  either statically or dynamically; added missing #include <string.h>
+  in library.
+  2002-03-11 lpd Corrected argument list for main(), and added int return
+  type, in test program and T value program.
+  2002-02-21 lpd Added missing #include <stdio.h> in test program.
+  2000-07-03 lpd Patched to eliminate warnings about "constant is
+  unsigned in ANSI C, signed in traditional"; made test program
+  self-checking.
+  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
+  1999-05-03 lpd Original version.
+*/
+
+#undef BYTE_ORDER	/* 1 = big-endian, -1 = little-endian, 0 = unknown */
+#ifdef ARCH_IS_BIG_ENDIAN
+#  define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
+#else
+#  define BYTE_ORDER 0
+#endif
+
+#define T_MASK ((md5_word_t)~0)
+#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
+#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
+#define T3    0x242070db
+#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
+#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
+#define T6    0x4787c62a
+#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
+#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
+#define T9    0x698098d8
+#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
+#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
+#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
+#define T13    0x6b901122
+#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
+#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
+#define T16    0x49b40821
+#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
+#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
+#define T19    0x265e5a51
+#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
+#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
+#define T22    0x02441453
+#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
+#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
+#define T25    0x21e1cde6
+#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
+#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
+#define T28    0x455a14ed
+#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
+#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
+#define T31    0x676f02d9
+#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
+#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
+#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
+#define T35    0x6d9d6122
+#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
+#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
+#define T38    0x4bdecfa9
+#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
+#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
+#define T41    0x289b7ec6
+#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
+#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
+#define T44    0x04881d05
+#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
+#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
+#define T47    0x1fa27cf8
+#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
+#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
+#define T50    0x432aff97
+#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
+#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
+#define T53    0x655b59c3
+#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
+#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
+#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
+#define T57    0x6fa87e4f
+#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
+#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
+#define T60    0x4e0811a1
+#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
+#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
+#define T63    0x2ad7d2bb
+#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
+
+static void
+md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
+{
+  md5_word_t
+    a = pms->abcd[0], b = pms->abcd[1],
+    c = pms->abcd[2], d = pms->abcd[3];
+  md5_word_t t;
+#if BYTE_ORDER > 0
+  /* Define storage only for big-endian CPUs. */
+  md5_word_t X[16];
+#else
+  /* Define storage for little-endian or both types of CPUs. */
+  md5_word_t xbuf[16];
+  const md5_word_t *X;
+#endif
+  
+  {
+#if BYTE_ORDER == 0
+    /*
+     * Determine dynamically whether this is a big-endian or
+     * little-endian machine, since we can use a more efficient
+     * algorithm on the latter.
+     */
+    static const int w = 1;
+    
+    if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
+#endif
+#if BYTE_ORDER <= 0		/* little-endian */
+      {
+	/*
+	 * On little-endian machines, we can process properly aligned
+	 * data without copying it.
+	 */
+	if (!((data - (const md5_byte_t *)0) & 3)) {
+	  /* data are properly aligned */
+	  X = (const md5_word_t *)data;
+	} else {
+	  /* not aligned */
+	  memcpy(xbuf, data, 64);
+	  X = xbuf;
+	}
+      }
+#endif
+#if BYTE_ORDER == 0
+    else			/* dynamic big-endian */
+#endif
+#if BYTE_ORDER >= 0		/* big-endian */
+      {
+	/*
+	 * On big-endian machines, we must arrange the bytes in the
+	 * right order.
+	 */
+	const md5_byte_t *xp = data;
+	int i;
+	
+#  if BYTE_ORDER == 0
+	X = xbuf;		/* (dynamic only) */
+#  else
+#    define xbuf X		/* (static only) */
+#  endif
+	for (i = 0; i < 16; ++i, xp += 4)
+	  xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
+      }
+#endif
+  }
+  
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
+  
+  /* Round 1. */
+  /* Let [abcd k s i] denote the operation
+     a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
+#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
+#define SET(a, b, c, d, k, s, Ti)		\
+  t = a + F(b,c,d) + X[k] + Ti;			\
+  a = ROTATE_LEFT(t, s) + b
+  /* Do the following 16 operations. */
+  SET(a, b, c, d,  0,  7,  T1);
+  SET(d, a, b, c,  1, 12,  T2);
+  SET(c, d, a, b,  2, 17,  T3);
+  SET(b, c, d, a,  3, 22,  T4);
+  SET(a, b, c, d,  4,  7,  T5);
+  SET(d, a, b, c,  5, 12,  T6);
+  SET(c, d, a, b,  6, 17,  T7);
+  SET(b, c, d, a,  7, 22,  T8);
+  SET(a, b, c, d,  8,  7,  T9);
+  SET(d, a, b, c,  9, 12, T10);
+  SET(c, d, a, b, 10, 17, T11);
+  SET(b, c, d, a, 11, 22, T12);
+  SET(a, b, c, d, 12,  7, T13);
+  SET(d, a, b, c, 13, 12, T14);
+  SET(c, d, a, b, 14, 17, T15);
+  SET(b, c, d, a, 15, 22, T16);
+#undef SET
+  
+  /* Round 2. */
+  /* Let [abcd k s i] denote the operation
+     a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
+#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
+#define SET(a, b, c, d, k, s, Ti)		\
+  t = a + G(b,c,d) + X[k] + Ti;			\
+  a = ROTATE_LEFT(t, s) + b
+  /* Do the following 16 operations. */
+  SET(a, b, c, d,  1,  5, T17);
+  SET(d, a, b, c,  6,  9, T18);
+  SET(c, d, a, b, 11, 14, T19);
+  SET(b, c, d, a,  0, 20, T20);
+  SET(a, b, c, d,  5,  5, T21);
+  SET(d, a, b, c, 10,  9, T22);
+  SET(c, d, a, b, 15, 14, T23);
+  SET(b, c, d, a,  4, 20, T24);
+  SET(a, b, c, d,  9,  5, T25);
+  SET(d, a, b, c, 14,  9, T26);
+  SET(c, d, a, b,  3, 14, T27);
+  SET(b, c, d, a,  8, 20, T28);
+  SET(a, b, c, d, 13,  5, T29);
+  SET(d, a, b, c,  2,  9, T30);
+  SET(c, d, a, b,  7, 14, T31);
+  SET(b, c, d, a, 12, 20, T32);
+#undef SET
+  
+  /* Round 3. */
+  /* Let [abcd k s t] denote the operation
+     a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
+#define H(x, y, z) ((x) ^ (y) ^ (z))
+#define SET(a, b, c, d, k, s, Ti)		\
+  t = a + H(b,c,d) + X[k] + Ti;			\
+  a = ROTATE_LEFT(t, s) + b
+  /* Do the following 16 operations. */
+  SET(a, b, c, d,  5,  4, T33);
+  SET(d, a, b, c,  8, 11, T34);
+  SET(c, d, a, b, 11, 16, T35);
+  SET(b, c, d, a, 14, 23, T36);
+  SET(a, b, c, d,  1,  4, T37);
+  SET(d, a, b, c,  4, 11, T38);
+  SET(c, d, a, b,  7, 16, T39);
+  SET(b, c, d, a, 10, 23, T40);
+  SET(a, b, c, d, 13,  4, T41);
+  SET(d, a, b, c,  0, 11, T42);
+  SET(c, d, a, b,  3, 16, T43);
+  SET(b, c, d, a,  6, 23, T44);
+  SET(a, b, c, d,  9,  4, T45);
+  SET(d, a, b, c, 12, 11, T46);
+  SET(c, d, a, b, 15, 16, T47);
+  SET(b, c, d, a,  2, 23, T48);
+#undef SET
+  
+  /* Round 4. */
+  /* Let [abcd k s t] denote the operation
+     a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
+#define I(x, y, z) ((y) ^ ((x) | ~(z)))
+#define SET(a, b, c, d, k, s, Ti)		\
+  t = a + I(b,c,d) + X[k] + Ti;			\
+  a = ROTATE_LEFT(t, s) + b
+  /* Do the following 16 operations. */
+  SET(a, b, c, d,  0,  6, T49);
+  SET(d, a, b, c,  7, 10, T50);
+  SET(c, d, a, b, 14, 15, T51);
+  SET(b, c, d, a,  5, 21, T52);
+  SET(a, b, c, d, 12,  6, T53);
+  SET(d, a, b, c,  3, 10, T54);
+  SET(c, d, a, b, 10, 15, T55);
+  SET(b, c, d, a,  1, 21, T56);
+  SET(a, b, c, d,  8,  6, T57);
+  SET(d, a, b, c, 15, 10, T58);
+  SET(c, d, a, b,  6, 15, T59);
+  SET(b, c, d, a, 13, 21, T60);
+  SET(a, b, c, d,  4,  6, T61);
+  SET(d, a, b, c, 11, 10, T62);
+  SET(c, d, a, b,  2, 15, T63);
+  SET(b, c, d, a,  9, 21, T64);
+#undef SET
+  
+  /* Then perform the following additions. (That is increment each
+     of the four registers by the value it had before this block
+     was started.) */
+  pms->abcd[0] += a;
+  pms->abcd[1] += b;
+  pms->abcd[2] += c;
+  pms->abcd[3] += d;
+}
+
+void
+md5_init(md5_state_t *pms)
+{
+  pms->count[0] = pms->count[1] = 0;
+  pms->abcd[0] = 0x67452301;
+  pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
+  pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
+  pms->abcd[3] = 0x10325476;
+}
+
+void
+md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
+{
+  const md5_byte_t *p = data;
+  int left = nbytes;
+  int offset = (pms->count[0] >> 3) & 63;
+  md5_word_t nbits = (md5_word_t)(nbytes << 3);
+  
+  if (nbytes <= 0)
+    return;
+  
+  /* Update the message length. */
+  pms->count[1] += nbytes >> 29;
+  pms->count[0] += nbits;
+  if (pms->count[0] < nbits)
+    pms->count[1]++;
+  
+  /* Process an initial partial block. */
+  if (offset) {
+    int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
+    
+    memcpy(pms->buf + offset, p, copy);
+    if (offset + copy < 64)
+      return;
+    p += copy;
+    left -= copy;
+    md5_process(pms, pms->buf);
+  }
+  
+  /* Process full blocks. */
+  for (; left >= 64; p += 64, left -= 64)
+    md5_process(pms, p);
+  
+  /* Process a final partial block. */
+  if (left)
+    memcpy(pms->buf, p, left);
+}
+
+void
+md5_finish(md5_state_t *pms, md5_byte_t digest[16])
+{
+  static const md5_byte_t pad[64] = {
+    0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+  };
+  md5_byte_t data[8];
+  int i;
+  
+  /* Save the length before padding. */
+  for (i = 0; i < 8; ++i)
+    data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
+  /* Pad to 56 bytes mod 64. */
+  md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
+  /* Append the length. */
+  md5_append(pms, data, 8);
+  for (i = 0; i < 16; ++i)
+    digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
+}
+
diff --git a/src/nco/nco_md5.h b/src/nco/nco_md5.h
new file mode 100644
index 0000000..71e01a5
--- /dev/null
+++ b/src/nco/nco_md5.h
@@ -0,0 +1,164 @@
+/* $Header: /cvsroot/nco/nco/src/nco/nco_md5.h,v 1.14 2013/07/25 19:50:58 zender Exp $ */
+
+/* Purpose: Description (definition) of MD5 digest functions */
+
+/* Copyright (C) 2012--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
+
+/* Usage:
+   #include "nco_md5.h" *//* MD5 digests */
+
+/* This NCO file contains the entirety of the MD5 implementation by
+   L. Peter Deutsch of Aladdin Software (aka author of Ghostscript).
+   NCO-specific functions are defined first, then LPD's md5.h is 
+   included in a nearly unaltered state. */
+
+#ifndef NCO_MD5_H
+#define NCO_MD5_H
+
+/* Standard header files */
+#include <stdio.h> /* stderr, FILE, NULL, etc. */
+#include <string.h> /* strcmp() */
+
+/* 3rd party vendors */
+#include <netcdf.h> /* netCDF definitions and C library */
+#include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
+
+/* Personal headers */
+#include "nco.h" /* netCDF Operator (NCO) definitions */
+#include "nco_att_utl.h" /* Attribute utilities */
+#include "nco_mmr.h" /* Memory management */
+
+/* MD5 specification defines digest as a 16 byte array 
+   Each byte represents a value [0..255] which requires two hexadecimal characters to print 
+   Hence MD5 digest string is 2*16+1 characters long (extra one is for NUL-terminator */
+#define NCO_MD5_DGS_SZ 16
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+  
+  md5_sct * /* [sct] MD5 configuration */
+  nco_md5_ini(void); /* [fnc] Initialize and return MD5 configuration structure */
+
+  md5_sct * /* [sct] MD5 configuration */
+  nco_md5_free /* [fnc] Free MD5 configuration structure */
+  (md5_sct * const md5); /* [sct] MD5 configuration structure to free */
+
+  void
+  nco_md5_chk /* [fnc] Perform and optionally compare MD5 digest(s) on hyperslab */
+  (const md5_sct * const md5, /* I [sct] MD5 Configuration */
+   const char * const var_nm, /* I [sng] Input variable name */
+   const long var_sz_byt, /* I [nbr] Size (in bytes) of hyperslab in RAM */
+   const int nc_id, /* I [id] netCDF file ID */
+   const long * const dmn_srt, /* I [idx] Contiguous vector of indices to start of hyperslab on disk */
+   const long * const dmn_cnt, /* I [nbr] Contiguous vector of lengths of hyperslab on disk */
+   void * const vp); /* I/O [val] Values to digest */
+  
+  void
+  nco_md5_chk_ram /* [fnc] Perform MD5 digest on hyperslab in RAM */
+  (const long var_sz_byt, /* I [nbr] Size (in bytes) of hyperslab */
+   const void * const vp, /* I [val] Values to digest */
+   char md5_dgs_hxd_sng[NCO_MD5_DGS_SZ*2+1]); /* O [sng] MD5 digest */
+  
+#ifdef __cplusplus
+} /* end extern "C" */
+#endif /* __cplusplus */
+
+#endif /* NCO_MD5_H */
+
+/* Begin md5.h by LPD: */
+
+/*
+  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
+  
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+  
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+  
+  1. The origin of this software must not be misrepresented; you must not
+  claim that you wrote the original software. If you use this software
+  in a product, an acknowledgment in the product documentation would be
+  appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+  
+  L. Peter Deutsch
+  ghost at aladdin.com
+  
+*/
+/* $Id: nco_md5.h,v 1.14 2013/07/25 19:50:58 zender Exp $ */
+/*
+  Independent implementation of MD5 (RFC 1321).
+  
+  This code implements the MD5 Algorithm defined in RFC 1321, whose
+  text is available at
+  http://www.ietf.org/rfc/rfc1321.txt
+  The code is derived from the text of the RFC, including the test suite
+  (section A.5) but excluding the rest of Appendix A.  It does not include
+  any code or documentation that is identified in the RFC as being
+  copyrighted.
+  
+  The original and principal author of md5.h is L. Peter Deutsch
+  <ghost at aladdin.com>.  Other authors are noted in the change history
+  that follows (in reverse chronological order):
+  
+  2002-04-13 lpd Removed support for non-ANSI compilers; removed
+  references to Ghostscript; clarified derivation from RFC 1321;
+  now handles byte order either statically or dynamically.
+  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
+  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
+  added conditionalization for C++ compilation from Martin
+  Purschke <purschke at bnl.gov>.
+  1999-05-03 lpd Original version.
+*/
+
+#ifndef md5_INCLUDED
+#  define md5_INCLUDED
+
+/*
+ * This package supports both compile-time and run-time determination of CPU
+ * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
+ * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
+ * defined as non-zero, the code will be compiled to run only on big-endian
+ * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
+ * run on either big- or little-endian CPUs, but will run slightly less
+ * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
+ */
+
+typedef unsigned char md5_byte_t; /* 8-bit byte */
+typedef unsigned int md5_word_t; /* 32-bit word */
+
+/* Define the state of the MD5 Algorithm. */
+typedef struct md5_state_s {
+  md5_word_t count[2];	/* message length in bits, lsw first */
+  md5_word_t abcd[4];		/* digest buffer */
+  md5_byte_t buf[64];		/* accumulate block */
+} md5_state_t;
+
+#ifdef __cplusplus
+extern "C" 
+{
+#endif
+  
+  /* Initialize the algorithm. */
+  void md5_init(md5_state_t *pms);
+  
+  /* Append a string to the message. */
+  void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
+  
+  /* Finish the message and return the digest. */
+  void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
+  
+#ifdef __cplusplus
+}  /* end extern "C" */
+#endif
+
+#endif /* md5_INCLUDED */
+
diff --git a/src/nco/nco_mmr.c b/src/nco/nco_mmr.c
index 5921768..ec22f56 100644
--- a/src/nco/nco_mmr.c
+++ b/src/nco/nco_mmr.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_mmr.c,v 1.42 2012/02/14 05:39:04 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_mmr.c,v 1.63 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: Memory management */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,7 +18,7 @@
    nco_malloc_flg() plug-in replacements are malloc() and nco_malloc() 
    
    nco_malloc_dbg(): Use this for large memory requests when calling routine supplies
-   its name and a useful supplemental error message
+   its name and useful supplemental error message
    nco_malloc_dbg() prints name of calling function, supplemental error message, and then 
    dies and exits for all error conditions.
    nco_malloc_dbg() has no plug-in replacements (since it requires two extra arguments)
@@ -43,12 +43,12 @@ nco_calloc /* [fnc] Wrapper for calloc() */
   
   ptr=calloc(lmn_nbr,lmn_sz); /* [ptr] Pointer to new buffer */
   if(ptr == NULL){
-    (void)fprintf(stdout,"%s: ERROR nco_calloc() unable to allocate %lu elements of %lu bytes = %lu bytes\n",prg_nm_get(),(unsigned long)lmn_nbr,(unsigned long)lmn_sz,(unsigned long)(lmn_nbr*lmn_sz));
+    (void)fprintf(stdout,"%s: ERROR nco_calloc() unable to allocate %lu elements of %lu bytes each totaling %lu B = %lu kB = %lu MB = %lu GB\n",nco_prg_nm_get(),(unsigned long)lmn_nbr,(unsigned long)lmn_sz,(unsigned long)(lmn_nbr*lmn_sz),(unsigned long)(lmn_nbr*lmn_sz)/NCO_BYT_PER_KB,(unsigned long)(lmn_nbr*lmn_sz)/NCO_BYT_PER_MB,(unsigned long)(lmn_nbr*lmn_sz)/NCO_BYT_PER_GB);
     nco_exit(EXIT_FAILURE);
   } /* endif */
-#ifdef NCO_MMR_DBG
+#ifdef NCO_MMR_STT
   (void)nco_mmr_stt(nco_mmr_calloc,lmn_nbr*lmn_sz); /* fxm dbg */
-#endif /* !NCO_MMR_DBG */
+#endif /* !NCO_MMR_STT */
   return ptr; /* [ptr] Pointer to new buffer */
 } /* nco_calloc() */
 
@@ -61,9 +61,9 @@ nco_free /* [fnc] Wrapper for free() */
      Routine does not call free() when vp == NULL
      Usage: vp=nco_free(vp) */
   if(vp) free(vp);
-#ifdef NCO_MMR_DBG
+#ifdef NCO_MMR_STT
   (void)nco_mmr_stt(nco_mmr_free,(size_t)0L); /* fxm dbg */
-#endif /* !NCO_MMR_DBG */
+#endif /* !NCO_MMR_STT */
   return NULL; /* [ptr] Pointer to new buffer */
 } /* nco_free() */
 
@@ -72,7 +72,21 @@ nco_malloc /* [fnc] Wrapper for malloc() */
 (const size_t sz) /* I [B] Bytes to allocate */
 {
   /* Purpose: Custom plugin wrapper for malloc()
-     Top of nco_mmr.c explains usage of nco_malloc(), nco_malloc_flg(), and nco_malloc_dbg() */
+     Top of nco_mmr.c explains usage of nco_malloc(), nco_malloc_flg(), and nco_malloc_dbg()
+     Test memory debugging infrastructure with, e.g.,
+     export NCO_MMR_DBG=1;nces -O -D 3 -d time,0,2 -p ~ big_bug5.nc ~/big_avg.nc
+     export NCO_MMR_DBG=1;ncrcat -O -D 3 -p ~ big_bug.nc big_bug.nc big_bug.nc big_bug.nc big_bug.nc ~/big_bug5.nc
+     fxm: Infrastucture does not (yet) report requests made with nco_malloc_flg() and nco_malloc_dbg() */
+
+  const char fnc_nm[]="nco_malloc()"; /* [sng] Function name */
+  char *nvr_NCO_MMR_DBG; /* [sng] Environment variable NCO_MMR_DBG */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+
+  int ntg_NCO_MMR_DBG=int_CEWI; // [nbr] NCO_MMR_DBG environment variable
+
+  size_t sz_thr=1024UL*1024UL; /* I [B] Bytes to allocate threshold size for reporting */
+
+  size_t sz_max=(size_t)-1; /* I [B] Maximum value of size_t */
 
   void *ptr; /* [ptr] Pointer to new buffer */
   
@@ -82,16 +96,25 @@ nco_malloc /* [fnc] Wrapper for malloc() */
      So circumvent malloc() calls when sz == 0 */
   if(sz == 0) return NULL;
   
+  /* Only poll memory if debug level set otherwise getenv() would be called on every nco_malloc() reading  */
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
+    if((nvr_NCO_MMR_DBG=getenv("NCO_MMR_DBG"))) ntg_NCO_MMR_DBG=(int)strtol(nvr_NCO_MMR_DBG,&sng_cnv_rcd,NCO_SNG_CNV_BASE10); /* [sng] Environment variable NCO_MMR_DBG */
+  } /* endif dbg */
+
+  if(ntg_NCO_MMR_DBG && sz > sz_thr) (void)fprintf(stdout,"%s: INFO %s received request to allocate %zu B = %zu kB = %zu MB = %zu GB\n",nco_prg_nm_get(),fnc_nm,sz,sz/NCO_BYT_PER_KB,sz/NCO_BYT_PER_MB,sz/NCO_BYT_PER_GB);
+
+  if(sz > sz_max) (void)fprintf(stdout,"%s: WARNING %s received request to allocate %zu B = %zu kB = %zu MB = %zu GB = %zu TB\n",nco_prg_nm_get(),fnc_nm,sz,sz/NCO_BYT_PER_KB,sz/NCO_BYT_PER_MB,sz/NCO_BYT_PER_GB,sz/NCO_BYT_PER_TB);
+
   ptr=malloc(sz); /* [ptr] Pointer to new buffer */
   if(ptr == NULL){
-    (void)fprintf(stdout,"%s: ERROR nco_malloc() unable to allocate %lu bytes\n",prg_nm_get(),(unsigned long)sz);
+    (void)fprintf(stdout,"%s: ERROR %s unable to allocate %zu B = %zu kB = %zu MB = %zu GB\n",nco_prg_nm_get(),fnc_nm,sz,sz/NCO_BYT_PER_KB,sz/NCO_BYT_PER_MB,sz/NCO_BYT_PER_GB);
     (void)nco_malloc_err_hnt_prn();
     /* fxm: Should be exit(8) on ENOMEM errors? */
     nco_exit(EXIT_FAILURE);
   } /* endif */
-#ifdef NCO_MMR_DBG
+#ifdef NCO_MMR_STT
   (void)nco_mmr_stt(nco_mmr_malloc,sz); /* fxm dbg */
-#endif /* !NCO_MMR_DBG */
+#endif /* !NCO_MMR_STT */
   return ptr; /* [ptr] Pointer to new buffer */
 } /* nco_malloc() */
 
@@ -116,21 +139,21 @@ nco_malloc_flg /* [fnc] Wrapper for malloc(), forgives ENOMEM errors */
   
   ptr=malloc(sz); /* [ptr] Pointer to new buffer */
   if(ptr == NULL){
-    (void)fprintf(stdout,"%s: WARNING nco_malloc_flg() unable to allocate %lu bytes\n",prg_nm_get(),(unsigned long)sz);
+    (void)fprintf(stdout,"%s: ERROR nco_malloc_flg() unable to allocate %lu B = %lu kB = %lu MB = %lu GB\n",nco_prg_nm_get(),(unsigned long)sz,(unsigned long)sz/NCO_BYT_PER_KB,(unsigned long)sz/NCO_BYT_PER_MB,(unsigned long)sz/NCO_BYT_PER_GB);
 #ifndef __GNUG__
     /* 20051205: Triggers G++ error: undefined reference to `__errno_location()' */
-    (void)fprintf(stdout,"%s: malloc() error is \"%s\"\n",prg_nm_get(),strerror(errno));
+    (void)fprintf(stdout,"%s: malloc() error is \"%s\"\n",nco_prg_nm_get(),strerror(errno));
     if(errno == ENOMEM) return NULL; /* Unlike nco_malloc(), allow simple OOM errors */
 #else
     return NULL; /* Unlike nco_malloc(), allow simple OOM errors */
 #endif /* __GNUG__ */
-    (void)fprintf(stdout,"%s: ERROR is not ENOMEM, exiting...\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR is not ENOMEM, exiting...\n",nco_prg_nm_get());
     (void)nco_malloc_err_hnt_prn();
     nco_exit(EXIT_FAILURE);
   } /* endif */
-#ifdef NCO_MMR_DBG
+#ifdef NCO_MMR_STT
   (void)nco_mmr_stt(nco_mmr_malloc,sz); /* fxm dbg */
-#endif /* !NCO_MMR_DBG */
+#endif /* !NCO_MMR_STT */
   return ptr; /* [ptr] Pointer to new buffer */
 } /* nco_malloc_flg() */
 
@@ -157,18 +180,18 @@ nco_malloc_dbg /* [fnc] Wrapper for malloc(), receives and prints more diagnosti
   
   ptr=malloc(sz); /* [ptr] Pointer to new buffer */
   if(ptr == NULL){
-    (void)fprintf(stdout,"%s: ERROR malloc() returns error on %s request for %lu bytes\n",prg_nm_get(),fnc_nm,(unsigned long)sz);
+    (void)fprintf(stdout,"%s: ERROR malloc() returns error on %s request for %lu B = %lu kB = %lu MB = %lu GB\n",nco_prg_nm_get(),fnc_nm,(unsigned long)sz,(unsigned long)sz/NCO_BYT_PER_KB,(unsigned long)sz/NCO_BYT_PER_MB,(unsigned long)sz/NCO_BYT_PER_GB);
 #ifndef __GNUG__
     /* 20051205: Triggers G++ error: undefined reference to `__errno_location()' */
-    (void)fprintf(stdout,"%s: malloc() error is \"%s\"\n",prg_nm_get(),strerror(errno));
+    (void)fprintf(stdout,"%s: malloc() error is \"%s\"\n",nco_prg_nm_get(),strerror(errno));
 #endif /* __GNUG__ */
-    (void)fprintf(stdout,"%s: User-supplied supplemental error message is \"%s\"\n",prg_nm_get(),msg);
+    (void)fprintf(stdout,"%s: User-supplied supplemental error message is \"%s\"\n",nco_prg_nm_get(),msg);
     (void)nco_malloc_err_hnt_prn();
     nco_exit(EXIT_FAILURE);
   } /* endif */
-#ifdef NCO_MMR_DBG
+#ifdef NCO_MMR_STT
   (void)nco_mmr_stt(nco_mmr_malloc,sz); /* fxm dbg */
-#endif /* !NCO_MMR_DBG */
+#endif /* !NCO_MMR_STT */
   return ptr; /* [ptr] Pointer to new buffer */
 } /* nco_malloc_dbg() */
 
@@ -177,7 +200,7 @@ nco_malloc_err_hnt_prn /* [fnc] Explain meaning and workarounds for malloc() fai
 (void)
 {
   /* Purpose: Explain meaning and workarounds for malloc() failures */
-  (void)fprintf(stdout,"%s: INFO NCO has reported a malloc() failure. malloc() failures usually indicate that your machine does not have enough free memory (RAM+swap) to perform the requested operation. As such, malloc() failures result from the physical limitations imposed by your hardware. Read http://nco.sf.net/nco.html#mmr for a description of NCO memory usage. There are two workarounds in this scenario. One is to process your data in smaller chunks. The other is to use a machine wit [...]
+  (void)fprintf(stdout,"%s: INFO NCO has reported a malloc() failure. malloc() failures usually indicate that your machine does not have enough free memory (RAM+swap) to perform the requested operation. As such, malloc() failures result from the physical limitations imposed by your hardware. Read http://nco.sf.net/nco.html#mmr for a description of NCO memory usage. The likiest case is that this problem is caused by inadequate RAM on your system, and is not an NCO bug. If so, there are tw [...]
 } /* nco_malloc_err_hnt_prn() */
 
 /* fxm: when are const qualifiers on return values legal? is this a GNUism? */
@@ -247,13 +270,13 @@ nco_realloc /* [fnc] Wrapper for realloc() */
     new_ptr=realloc(ptr,sz); /* [ptr] Pointer to new buffer */
   } /* endif */
   if(new_ptr == NULL && sz != 0){
-    (void)fprintf(stdout,"%s: ERROR nco_realloc() unable to realloc() %lu bytes\n",prg_nm_get(),(unsigned long)sz); 
+    (void)fprintf(stdout,"%s: ERROR nco_realloc() unable to realloc() %lu bytes\n",nco_prg_nm_get(),(unsigned long)sz); 
     /* fxm: Should be exit(8) on ENOMEM errors? */
     nco_exit(EXIT_FAILURE);
   } /* endif */
-#ifdef NCO_MMR_DBG
+#ifdef NCO_MMR_STT
   (void)nco_mmr_stt(nco_mmr_realloc,sz); /* fxm dbg */
-#endif /* !NCO_MMR_DBG */
+#endif /* !NCO_MMR_STT */
   return new_ptr; /* [ptr] Pointer to new buffer */
 } /* nco_realloc() */
 
@@ -262,7 +285,12 @@ nco_mmr_stt /* [fnc] Track memory statistics */
 (const nco_mmr_typ_enm nco_mmr_typ, /* I [enm] Memory management type */
  const size_t sz) /* I [B] Bytes allocated, deallocated, or reallocated */
 {
-  /* Purpose: Track memory statistics */
+  /* Purpose: Track memory statistics
+     20130618: Maing problem with this is the nco_free() and nco_realloc() do 
+     not provide sufficent information to adjust the total.
+     Workarounds are to poll /proc/self/stat here, or to modify nco_free() and
+     nco_realloc() to optionally propagate net memory used or freed. */
+
   static long mll_nbr=0L; /* [nbr] Number of malloc() invocations */
   static long fre_nbr=0L; /* [nbr] Number of free() invocations */
   static long mmr_mll_ttl=0L; /* [B] Total memory malloc()'d */
@@ -298,81 +326,271 @@ nco_mmr_stt /* [fnc] Track memory statistics */
   } /* end case */
 
   if(True){
-    (void)fprintf(stdout,"%s: INFO nco_mmr_stt() called by %s(): fre_nbr=%li, mll_nbr=%li, mmr_mll_ttl=%li, mmr_fre_ttl=%li, mmr_net_crr=%li bytes\n",prg_nm_get(),nco_mmr_typ_sng(nco_mmr_typ),fre_nbr,mll_nbr,mmr_mll_ttl,mmr_fre_ttl,mmr_net_crr);
+    (void)fprintf(stdout,"%s: INFO nco_mmr_stt() called by %s(): fre_nbr=%li, mll_nbr=%li, mmr_mll_ttl=%li, mmr_fre_ttl=%li, mmr_net_crr=%li bytes\n",nco_prg_nm_get(),nco_mmr_typ_sng(nco_mmr_typ),fre_nbr,mll_nbr,mmr_mll_ttl,mmr_fre_ttl,mmr_net_crr);
   } /* endif */
 
   return mmr_net_crr; /* [B] Net memory currently allocated */
 } /* nco_mmr_stt() */
 
+int /* Return code */
+nco_prc_stt_get /* [fnc] Read /proc/PID/stat */
+(const int pid, /* [enm] Process ID to read */
+ prc_stt_sct *prc_stt) /* [sct] Structure to hold results */
+{
+  /* Purpose: Decode output of /proc/PID/stat, place in structure, and optionally print out */
+
+  /* 201306: Unfortunately, format of /proc/self/stat is system-dependent
+     Contents of /proc/self/stat defined in man 5 proc
+     Have found _slightly_ different scanf() formats for fields looking at different Linux documentation 
+     Definitive answer seems to examining contents of /usr/src/linux/fs/proc/array.c:do_task_stat()
+     Fully documented sources at http://www.cs.tufts.edu/comp/111/assignments/a3/proc.c */
+
+  const char fnc_nm[]="nco_prc_stt_get()"; /* [sng] Function name */
+  char fl_slf[]="/proc/self/stat"; /* [sng] Process status pseudo-file name */
+  char fl_pid[256]; /* [sng] Process status pseudo-file name */
+  char *fl_prc; /* [sng] Process status pseudo-file name */
+
+  const char *prc_stt_fmt="%d %s %c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu %ld %ld %ld %ld %ld %ld %lu %lu %ld %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %d %d %lu %lu %llu";
+  const char *prc_stt_fmt_out="pid = %d, comm = %s, state = %c, ppid = %d, pgrp = %d, session = %d, tty_nr = %d, tpgid = %d, flags = %lu, minflt = %lu, cminflt = %lu, majflt = %lu, cmajflt = %lu, utime = %lu, stime = %lu, cutime = %ld, cstime = %ld, priority = %ld, nice = %ld, num_threads = %ld, itrealvalue = %ld, starttime = %lu, vsize = %lu, rss = %ld, rlim = %lu, startcode = %lu, endcode = %lu, startstack = %lu, kstkesp = %lu, kstkeip = %lu, signal = %lu, blocked = %lu, sigignore = %l [...]
+
+  FILE *fp_prc=NULL; /* [fl] Process status file handle */
+
+  int rcd_sys;
+
+  if(pid) (void)sprintf(fl_pid,"/proc/%d/stat",pid);
+  if(pid) fl_prc=fl_pid; else fl_prc=fl_slf;
+  fp_prc=fopen(fl_prc,"r");
+  /* Unable to open fp_prc */
+  if(!fp_prc) return NCO_ERR; 
+
+  rcd_sys=fscanf
+    (fp_prc,
+     prc_stt_fmt,
+     &prc_stt->pid,
+     prc_stt->comm,
+     &prc_stt->state,
+     &prc_stt->ppid,
+     &prc_stt->pgrp,
+     &prc_stt->session,
+     &prc_stt->tty_nr,
+     &prc_stt->tpgid,
+     &prc_stt->flags,
+     &prc_stt->minflt,
+     &prc_stt->cminflt,
+     &prc_stt->majflt,
+     &prc_stt->cmajflt,
+     &prc_stt->utime,
+     &prc_stt->stime,
+     &prc_stt->cutime,
+     &prc_stt->cstime,
+     &prc_stt->priority,
+     &prc_stt->nice,
+     &prc_stt->num_threads,
+     &prc_stt->itrealvalue,
+     &prc_stt->starttime,
+     &prc_stt->vsize,
+     &prc_stt->rss,
+     &prc_stt->rlim,
+     &prc_stt->startcode,
+     &prc_stt->endcode,
+     &prc_stt->startstack,
+     &prc_stt->kstkesp,
+     &prc_stt->kstkeip,
+     &prc_stt->signal,
+     &prc_stt->blocked,
+     &prc_stt->sigignore,
+     &prc_stt->sigcatch,
+     &prc_stt->wchan,
+     &prc_stt->nswap,
+     &prc_stt->cnswap,
+     &prc_stt->exit_signal,
+     &prc_stt->processor,
+     &prc_stt->rt_priority,
+     &prc_stt->policy,
+     &prc_stt->delayacct_blkio_ticks);
+
+  /* Were expected number of fields read? */
+  if(rcd_sys != PRC_STT_SCT_NBR) (void)fprintf(stdout,"%s: ERROR scanning %s returned %d fields, expected %d fields",nco_prg_nm_get(),fl_prc,rcd_sys,PRC_STT_SCT_NBR);
+
+  (void)fclose(fp_prc);
+
+  if(nco_dbg_lvl_get() > nco_dbg_std){
+    char *prc_stt_sng;
+    prc_stt_sng=(char *)nco_malloc(2048UL*sizeof(char));
+    sprintf(prc_stt_sng,prc_stt_fmt_out,prc_stt->pid,prc_stt->comm,prc_stt->state,prc_stt->ppid,prc_stt->pgrp,prc_stt->session,prc_stt->tty_nr,prc_stt->tpgid,prc_stt->flags,prc_stt->minflt,prc_stt->cminflt,prc_stt->majflt,prc_stt->cmajflt,prc_stt->utime,prc_stt->stime,prc_stt->cutime,prc_stt->cstime,prc_stt->priority,prc_stt->nice,prc_stt->num_threads,prc_stt->itrealvalue,prc_stt->starttime,prc_stt->vsize,prc_stt->rss,prc_stt->rlim,prc_stt->startcode,prc_stt->endcode,prc_stt->startstack, [...]
+    (void)fprintf(stdout,"%s: INFO %s polled %s and found: %s\n",nco_prg_nm_get(),fnc_nm,fl_prc,prc_stt_sng);
+    if(prc_stt_sng) prc_stt_sng=(char *)nco_free(prc_stt_sng);
+  } /* endif dbg */
+
+  /* Were expected number of fields read? */
+  if(rcd_sys == PRC_STT_SCT_NBR) return NCO_NOERR; else return NCO_ERR;
+
+} /* nco_prc_stt_get() */
+
+int /* Return code */
+nco_prc_stm_get /* [fnc] Read /proc/PID/statm */
+(const int pid, /* [enm] Process ID to read */
+ prc_stm_sct *prc_stm) /* [sct] Structure to hold results */
+{
+  /* Purpose: Decode output of /proc/PID/stat, place in structure, and optionally print out */
+
+  /* 201306: Unfortunately, format of /proc/self/statm is system-dependent
+     Contents of /proc/self/statm defined in man 5 proc
+     Fully documented sources at http://www.cs.tufts.edu/comp/111/assignments/a3/proc.c */
+
+  const char fnc_nm[]="nco_prc_stm_get()"; /* [sng] Function name */
+  char fl_slf[]="/proc/self/statm"; /* [sng] Process status pseudo-file name */
+  char fl_pid[256]; /* [sng] Process status pseudo-file name */
+  char *fl_prc; /* [sng] Process status pseudo-file name */
+
+  const char *prc_stm_fmt="%lu %lu %lu %lu %lu %lu %lu";
+  const char *prc_stm_fmt_out="size = %lu, resident = %lu, share = %lu, text = %lu, lib = %lu, data = %lu, dt = %lu\n";
+
+  FILE *fp_prc=NULL; /* [fl] Process status file handle */
+
+  int rcd_sys;
+
+  if(pid) (void)sprintf(fl_pid,"/proc/%d/stat",pid);
+  if(pid) fl_prc=fl_pid; else fl_prc=fl_slf;
+  fp_prc=fopen(fl_prc,"r");
+  /* Unable to open fp_prc */
+  if(!fp_prc) return NCO_ERR; 
+
+  rcd_sys=fscanf
+    (fp_prc,
+     prc_stm_fmt,
+     &prc_stm->size,
+     &prc_stm->resident,
+     &prc_stm->share,
+     &prc_stm->text,
+     &prc_stm->lib,
+     &prc_stm->data,
+     &prc_stm->dt);
+
+  /* Were expected number of fields read? */
+  if(rcd_sys != PRC_STM_SCT_NBR) (void)fprintf(stdout,"%s: ERROR scanning %s returned %d fields, expected %d fields",nco_prg_nm_get(),fl_prc,rcd_sys,PRC_STM_SCT_NBR);
+
+  (void)fclose(fp_prc);
+
+  if(nco_dbg_lvl_get() > nco_dbg_std){
+    char *prc_stm_sng;
+    prc_stm_sng=(char *)nco_malloc(2048UL*sizeof(char));
+    sprintf(prc_stm_sng,prc_stm_fmt_out,prc_stm->size,prc_stm->resident,prc_stm->share,prc_stm->text,prc_stm->lib,prc_stm->data,prc_stm->dt);
+    (void)fprintf(stdout,"%s: INFO %s polled %s and found: %s\n",nco_prg_nm_get(),fnc_nm,fl_prc,prc_stm_sng);
+    if(prc_stm_sng) prc_stm_sng=(char *)nco_free(prc_stm_sng);
+  } /* endif dbg */
+
+  /* Were expected number of fields read? */
+  if(rcd_sys == PRC_STM_SCT_NBR) return NCO_NOERR; else return NCO_ERR;
+
+} /* nco_prc_stm_get() */
+
 long /* O [B] Maximum resident set size */
-nco_mmr_rusage_prn /* [fnc] Print rusage memory usage statistics */
+nco_mmr_usg_prn /* [fnc] Print rusage memory usage statistics */
 (const int rusage_who) /* [enm] RUSAGE_SELF, RUSAGE_CHILDREN, RUSAGE_LWP */
 {
   /* Purpose: Track memory statistics */
 
-  /* Routine is intended to be purely diagnostic.
-     Currently only accessed by ncap when compiled with NCO_RUSAGE_DBG */
+  /* Routine is intended to be purely diagnostic
+     Currently only accessed with ncks --sysconf
+     rss [B] = RSS = Resident Set Size = Portion of process's memory in RAM. Rest is in swap or not loaded.
+     vsize [B] = Virtual Memory Size
+     rsslim [B] = Soft limit on process RSS, as per getrlimit() */
 
-  /* NB: As of kernel 2.6.9, Linux only maintains rusage fields ru_utime, ru_stime, ru_minflt, ru_majflt, and ru_nswap */
-  int rcd;
-  int sz_pg; /* [B] Page size in Bytes */
-#ifdef HAVE_GETRUSAGE
-  struct rusage usg;
-#endif /* !HAVE_GETRUSAGE */
+  /* 20130617: Remik Ziemlinski's ncx has _SC_PAGE_SIZE example in ezNcUtil.hpp */ 
+
+  const char fnc_nm[]="nco_mmr_usg_prn()"; /* [sng] Function name */
+
+  int rcd_stm; /* [enm] Return code for /proc/PID/statm call */
+  int rcd_stt; /* [enm] Return code for /proc/PID/stat call */
+  int rcd_sys; /* [enm] Return code for system call */
+
+#ifndef __GNUG__
+  extern int errno; /* [enm] Error code in errno.h */
+#endif /* __GNUG__ */
 
   /* Get page size. NECSX does not have getpagesize(). */
+  int sz_pg; /* [B] Page size in Bytes */
+  sz_pg=rusage_who; /* CEWI */
 #ifdef HAVE_GETPAGESIZE
-  sz_pg=getpagesize();
-#else /* !HAVE_GETPAGESIZE */
-  /* CEWI */
-  sz_pg=rusage_who;
+  /* 20130617: Deprecate getpagesize() in favor of sysconf() because Linux man pages say that 
+     "Portable applications should employ sysconf(_SC_PAGESIZE) instead of getpagesize()"
+     sysconf() tells us to first use, if it exists, the PAGESIZE environment variable
+     Otherwise use the sysconf() macro on _SC_PAGESIZE */
+  //     sz_pg=getpagesize();
+# ifdef PAGESIZE
+  sz_pg=PAGESIZE;
+# else /* !PAGESIZE */
+  sz_pg=sysconf(_SC_PAGESIZE);
+#  ifndef __GNUG__
+  if(sz_pg < 0) (void)fprintf(stdout,"%s: sysconf() error is \"%s\"\n",nco_prg_nm_get(),strerror(errno));
+#  endif /* __GNUG__ */
+  if(sz_pg < 0) nco_exit(EXIT_FAILURE);
+# endif /* !PAGESIZE */
 #endif /* !HAVE_GETPAGESIZE */
 
+  /* Interrorgate /proc/self/stat for current memory usage */
+  prc_stt_sct prc_stt;
+  rcd_stt=nco_prc_stt_get((int)0,&prc_stt);
+  if(rcd_stt == NCO_ERR) (void)fprintf(stdout,"%s: WARNING call to nco_prc_stt_get() failed, proceeding anyway...\n",nco_prg_nm_get());
+  if(nco_dbg_lvl_get() > nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s thinks pid = %d, comm = %s, ppid = %d, rlim = %lu B = %lu kB = %lu MB, rss = %ld B = %ld kB = %ld MB, vsize = %lu B = %lu kB = %lu MB = %lu GB\n",nco_prg_nm_get(),fnc_nm,prc_stt.pid,prc_stt.comm,prc_stt.ppid,prc_stt.rlim,prc_stt.rlim/NCO_BYT_PER_KB,prc_stt.rlim/NCO_BYT_PER_MB,prc_stt.rss,prc_stt.rss/NCO_BYT_PER_KB,prc_stt.rss/NCO_BYT_PER_MB,prc_stt.vsize,prc_stt.vsize/NCO_BYT_PER_KB,prc_stt.vsize/NCO_BYT_PER_MB,prc_s [...]
+
+  prc_stm_sct prc_stm;
+  rcd_stm=nco_prc_stm_get((int)0,&prc_stm);
+  if(rcd_stm == NCO_ERR) (void)fprintf(stdout,"%s: WARNING call to nco_prc_stm_get() failed, proceeding anyway...\n",nco_prg_nm_get());
+  if(nco_dbg_lvl_get() > nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s thinks size = %lu B = %lu kB = %lu MB = %lu GB, resident = %lu B = %lu kB = %lu MB = %lu GB\n",nco_prg_nm_get(),fnc_nm,prc_stm.size,prc_stm.size/NCO_BYT_PER_KB,prc_stm.size/NCO_BYT_PER_MB,prc_stm.size/NCO_BYT_PER_GB,prc_stm.resident,prc_stm.resident/NCO_BYT_PER_KB,prc_stm.resident/NCO_BYT_PER_MB,prc_stm.resident/NCO_BYT_PER_GB);
+
 #ifdef HAVE_GETRUSAGE
 
-  /* rusage reports size and time in OS-dependent units:
-     AIX uses kilobytes [kB] for size [sz] and seconds [s] for time [tm]:
+  /* getrusage() reports size and time in OS-dependent units:
+     AIX getrusage() uses kilobytes [kB] for size [sz] and seconds [s] for time [tm]:
      ru_maxrss [kB], ru_ixrss [kB s], ru_idrss [kB], ru_idrss [kB]
      http://publib.boulder.ibm.com/infocenter/pseries/index.jsp?topic=/com.ibm.aix.doc/libs/basetrf1/getrusage_64.htm
 
-     IRIX uses bytes [B] for size [sz] and 
+     IRIX getrusage() uses bytes [B] for size [sz] and 
      ru_maxrss [kB], ru_ixrss [pg tck], ru_idrss [pg], ru_idrss [pg]
 
-     Linux does not implement these fields yet
-     ru_maxrss, ru_ixrss, ru_idrss, ru_idrss
+     Linux getrusage() uses kilobytes [kB] for size [sz]
+     In 201306 (kernel 3.9) Linux (_still_) does not implement ru_ixrss, ru_idrss, ru_idrss
+     As of 200912 (kernel 2.6.32) Linux implements ru_maxrss [kB]
+     I first tried Linux getrusage() in 200503, on kernel 2.6.9
+     In 200410 (kernel 2.6.9), Linux did not implement ru_maxrss, ru_ixrss, ru_idrss, or ru_idrs
+     In 200410 (kernel 2.6.9), Linux only maintained rusage fields ru_utime, ru_stime, ru_minflt, ru_majflt, and ru_nswap
 
-     Solaris uses pages [pg] for size and ticks [tck] for time: 
+     Solaris getrusage() uses pages [pg] for size and ticks [tck] for time: 
      ru_maxrss [pg], ru_ixrss [pg tck], ru_idrss [pg], ru_idrss [pg]
      http://docs.sun.com/app/docs/doc/816-5168/6mbb3hr9o?a=view */
 
+  struct rusage usg;
+
 #ifdef AIX
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports system type is AIX so rusage uses kilobytes [kB] for size and seconds [s] for time. Page size is %d kB.\n",prg_nm_get(),sz_pg);
+  (void)fprintf(stdout,"%s: INFO %s reports system type is AIX so getrusage() uses kilobytes [kB] for size and seconds [s] for time. Page size is %d kB.\n",nco_prg_nm_get(),fnc_nm,sz_pg);
 #endif /* !AIX */
 #ifdef CRAY
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports system type is CRAY so rusage units for page size and time are unknown.\n",prg_nm_get());
+  (void)fprintf(stdout,"%s: INFO %s reports system type is CRAY so getrusage() units for page size and time are unknown.\n",nco_prg_nm_get(),fnc_nm);
 #endif /* !CRAY */
 #if (defined LINUX) || (defined LINUXAMD64)
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports system type is LINUX so rusage does not implement ru_maxrss, ru_ixrss, ru_idrss, and ru_idrss. Page size is %d B.\n",prg_nm_get(),sz_pg);
+  (void)fprintf(stdout,"%s: INFO %s reports system type is LINUX so getrusage() does implement ru_maxrss [kB] and DOES NOT implement ru_ixrss, ru_idrss, and ru_idrss. Page size is %d B.\n",nco_prg_nm_get(),fnc_nm,sz_pg);
 #endif /* !LINUX */
 #ifdef NECSX
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports system type is NECSX so rusage units for page size and time are unknown.\n",prg_nm_get());
+  (void)fprintf(stdout,"%s: INFO %s reports system type is NECSX so getrusage() units for page size and time are unknown.\n",nco_prg_nm_get(),fnc_nm);
 #endif /* !NECSX */
 #ifdef SGIMP64
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports system type is SGIMP64 so rusage uses bytes [B] for size, while time units are unknown. Page size is %d B.\n",prg_nm_get(),sz_pg);
+  (void)fprintf(stdout,"%s: INFO %s reports system type is SGIMP64 so getrusage() uses bytes [B] for size, while time units are unknown. Page size is %d B.\n",nco_prg_nm_get(),fnc_nm,sz_pg);
 #endif /* !SGIMP64 */
 #ifdef SUNMP
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports system type is SUNMP so rusage uses pages [pg] for size and ticks [tck] for time. Page size is %d B.\n",prg_nm_get(),sz_pg);
+  (void)fprintf(stdout,"%s: INFO %s reports system type is SUNMP so getrusage() uses pages [pg] for size and ticks [tck] for time. Page size is %d B.\n",nco_prg_nm_get(),fnc_nm,sz_pg);
 #endif /* !SUNMP */
 
   /* fxm: CEWI, not necessary */
-  rcd=rusage_who;
-  /* fxm: use input argument rusage_who instead or RUSAGE_SELF */
-  rcd=0*rcd+getrusage(RUSAGE_SELF,&usg);
-  (void)fprintf(stdout,"%s: INFO nco_mmr_rusage_prn() reports: rusage.ru_utime.tv_sec = user time used = %li s, rusage.ru_utime.tv_usec = user time used = %li us, rusage.ru_stime.tv_sec = system time used = %li s, rusage.ru_stime.tv_usec = system time used = %li us, rusage.ru_maxrss = maximum resident set size = %li [sz], rusage.ru_ixrss = integral shared memory size =  %li [sz tm], rusage.ru_idrss = integral unshared data size = %li [sz], rusage.ru_isrss = integral unshared stack size = [...]
+  rcd_sys=rusage_who;
+  /* fxm: use input argument rusage_who instead of RUSAGE_SELF */
+  rcd_sys=0*rcd_sys+getrusage(RUSAGE_SELF,&usg);
+  if(nco_dbg_lvl_get() > nco_dbg_io) (void)fprintf(stdout,"%s: INFO %s reports: rusage.ru_utime.tv_sec = user time used = %li s, rusage.ru_utime.tv_usec = user time used = %li us, rusage.ru_stime.tv_sec = system time used = %li s, rusage.ru_stime.tv_usec = system time used = %li us, rusage.ru_maxrss = maximum resident set size = %li [sz], rusage.ru_ixrss = integral shared memory size =  %li [sz tm], rusage.ru_idrss = integral unshared data size = %li [sz], rusage.ru_isrss = integral unsh [...]
 
   return (long)usg.ru_maxrss; /* [B] Maximum resident set size */
 #else /* !HAVE_GETRUSAGE */
   return (long)0; /* [B] Fake return value */
 #endif /* !HAVE_GETRUSAGE */
 
-} /* nco_mmr_rusage_prn() */
+} /* nco_mmr_usg_prn() */
diff --git a/src/nco/nco_mmr.h b/src/nco/nco_mmr.h
index 1585b03..f652f6c 100644
--- a/src/nco/nco_mmr.h
+++ b/src/nco/nco_mmr.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_mmr.h,v 1.30 2012/02/14 01:10:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_mmr.h,v 1.36 2013/06/25 19:31:46 zender Exp $ */
 
 /* Purpose: Memory management */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -19,14 +19,17 @@
 /* Standard header files */
 #include <errno.h> /* system/library error diagnostics, errno */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <stdlib.h> /* strtod, strtol, malloc, getopt, getenv, exit */
+#include <string.h> /* strcmp() */
 #ifdef MACOSX
 # include <sys/time.h> /* machine time (needed by Mac OS X for struct rusage) */ 
 #endif /* !MACOSX */
 #ifdef HAVE_GETRUSAGE
 # include <sys/resource.h> /* Resource usage and limits */
 #endif /* !HAVE_GETRUSAGE */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif /* !_MSC_VER */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -40,6 +43,79 @@
 extern "C" {
 #endif /* __cplusplus */
 
+  /* http://www.cs.tufts.edu/comp/111/assignments/a3/proc.c */
+
+  /* Number of fields in /proc/PID/stat output, same as
+     Number of elements of prc_stt_sct structure */
+#define PRC_STT_SCT_NBR 42
+  typedef struct{ /* prc_stt_sct */
+    int pid;			// %d Member 01
+    char comm[256];		// %s Member 02
+    char state;			// %c Member 03
+    int ppid;			// %d Member 04
+    int pgrp;			// %d Member 05
+    int session;		// %d Member 06
+    int tty_nr;			// %d Member 07
+    int tpgid;			// %d Member 08
+    unsigned long flags;	// %lu Member 09
+    unsigned long minflt;	// %lu Member 10
+    unsigned long cminflt;	// %lu Member 11
+    unsigned long majflt;	// %lu Member 12
+    unsigned long cmajflt;	// %lu Member 13
+    unsigned long utime;	// %lu Member 14
+    unsigned long stime; 	// %lu Member 15
+    long cutime;		// %ld Member 16
+    long cstime;		// %ld Member 17
+    long priority;		// %ld Member 18
+    long nice;			// %ld Member 19
+    long num_threads;		// %ld Member 20
+    long itrealvalue;		// %ld Member 21
+    unsigned long starttime;	// %lu Member 22
+    unsigned long vsize;	// %lu Member 23
+    long rss;			// %ld Member 24
+    unsigned long rlim;		// %lu Member 25
+    unsigned long startcode;	// %lu Member 26
+    unsigned long endcode;	// %lu Member 27
+    unsigned long startstack;	// %lu Member 28
+    unsigned long kstkesp;	// %lu Member 29
+    unsigned long kstkeip;	// %lu Member 30
+    unsigned long signal;	// %lu Member 31
+    unsigned long blocked;	// %lu Member 32
+    unsigned long sigignore;	// %lu Member 33
+    unsigned long sigcatch;	// %lu Member 34
+    unsigned long wchan;	// %lu Member 35
+    unsigned long nswap;	// %lu Member 36
+    unsigned long cnswap;	// %lu Member 37
+    int exit_signal;		// %d Member 38
+    int processor;		// %d Member 39
+    unsigned long rt_priority;	// %lu Member 40
+    unsigned long policy;	// %lu  Member 41
+    unsigned long long delayacct_blkio_ticks;	// %llu Member 42
+  } prc_stt_sct;
+
+  /* Number of fields in /proc/PID/statm output, same as
+     Number of elements of prc_stm_sct structure */
+#define PRC_STM_SCT_NBR 7
+  typedef struct{ /* prc_stm_sct */
+    unsigned long size;	// %lu Member 1
+    unsigned long resident; // %lu Member 2
+    unsigned long share; // %lu Member 3
+    unsigned long text;	// %lu Member 4
+    unsigned long lib;// %lu Member 5
+    unsigned long data;	// %lu Member 6
+    unsigned long dt; // %lu Member 7
+  } prc_stm_sct;
+
+  int /* Return code */
+  nco_prc_stt_get /* [fnc] Read /proc/PID/stat */
+  (const int pid, /* [enm] Process ID to read */
+   prc_stt_sct *prc_stt); /* [sct] Structure to hold results */
+
+  int /* Return code */
+  nco_prc_stm_get /* [fnc] Read /proc/PID/statm */
+  (const int pid, /* [enm] Process ID to read */
+   prc_stm_sct *prc_stm); /* [sct] Structure to hold results */
+
 void * /* O [ptr] Pointer to calloc'd memory */
 nco_calloc /* [fnc] Wrapper for calloc() */
 (const size_t lmn_nbr, /* I [nbr] Number of elements to allocate */
@@ -68,7 +144,7 @@ nco_malloc_err_hnt_prn /* [fnc] Explain meaning and workarounds for malloc() fai
 (void);
 
 long /* O [B] Maximum resident set size */
-nco_mmr_rusage_prn /* [fnc] Print rusage memory usage statistics */
+nco_mmr_usg_prn /* [fnc] Print rusage memory usage statistics */
 (const int rusage_who); /* [enm] RUSAGE_SELF, RUSAGE_CHILDREN, RUSAGE_LWP */
 
 long /* O [nbr] Net memory currently allocated */
diff --git a/src/nco/nco_mpi.h b/src/nco/nco_mpi.h
index 25b8c29..34d0f50 100644
--- a/src/nco/nco_mpi.h
+++ b/src/nco/nco_mpi.h
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_mpi.h,v 1.20 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_mpi.h,v 1.21 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: MPI utilities */
 
@@ -13,7 +13,7 @@
    I am not yet sure I want _any_ MPI dependencies in libnco.a 
    Cross-platform link weirdness (e.g., AIX) makes avoiding this desirable */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco/nco_msa.c b/src/nco/nco_msa.c
index e4e81ab..47de562 100644
--- a/src/nco/nco_msa.c
+++ b/src/nco/nco_msa.c
@@ -1,294 +1,287 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_msa.c,v 1.87 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_msa.c,v 1.228 2013/11/22 04:40:05 pvicente Exp $ */
 
 /* Purpose: Multi-slabbing algorithm */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_msa.h" /* Multi-slabbing algorithm */
-#include "nco_var_utl.h" /* Variable utilities */
-
-/* fxm: strings statically allocated with NCR_MAX_LEN_FMT_SNG chars may be susceptible to buffer overflow attacks */
-/* Length should be computed at run time but doing so would be painful */
-#define NCO_MAX_LEN_FMT_SNG 100
 
 void *
-nco_msa_rec_clc /* [fnc] Multi-slab algorithm (recursive routine, returns a single slab pointer */
+nco_msa_rcr_clc /* [fnc] Multi-slab algorithm (recursive routine, returns a single slab pointer */
 (int dpt_crr, /* [nbr] Current depth, we start at 0 */
  int dpt_crr_max, /* [nbr] Maximium depth (i.e., number of dimensions in variable (does not change) */
  lmt_sct **lmt, /* [sct] Limits of current hyperslabs (these change as we recurse) */
- lmt_all_sct **lmt_lst, /* [sct] List of limits in each dimension (this remains STATIC as we recurse) */
+ lmt_msa_sct **lmt_lst, /* [sct] List of limits in each dimension (this remains STATIC as we recurse) */
  var_sct *vara) /* [sct] Information for routine to read variable information and pass information between calls */
 {
-  /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-  /* Purpose: Multi-slab algorithm (recursive routine, returns a single slab pointer */
+  /* NB: nco_msa_rcr_clc() with same nc_id contains OpenMP critical region */
+  /* Purpose: Multi-slab algorithm (recursive routine, returns a single slab pointer) */
   int idx;
   int nbr_slb;
   void *vp;
-  
+
   if(dpt_crr == dpt_crr_max) goto read_lbl;
-  
+
   nbr_slb=lmt_lst[dpt_crr]->lmt_dmn_nbr;
-  
+
   if(nbr_slb == 1){
     lmt[dpt_crr]=lmt_lst[dpt_crr]->lmt_dmn[0];
-    /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-    vp=nco_msa_rec_clc(dpt_crr+1,dpt_crr_max,lmt,lmt_lst,vara);
+    vp=nco_msa_rcr_clc(dpt_crr+1,dpt_crr_max,lmt,lmt_lst,vara);
     return vp;
   } /* end if */
-  
-  /* Here we deal with multiple hyperslabs */
+
+  /* Multiple hyperslabs */
   if(nbr_slb > 1){
     int slb_idx;
     long var_sz=1L;
     long lcnt;
     long *cp_sz;
     long *indices;
-    
+
     ptrdiff_t slb_sz;
     ptrdiff_t slb_stp;
     ptrdiff_t cp_inc;
     ptrdiff_t cp_max;
     ptrdiff_t cp_fst;
-    
+
     char **cp_wrp;
     char *cp_stp;
     char *slb;
     lmt_sct lmt_ret;
-    
+
     cp_sz=(long *)nco_malloc(nbr_slb*sizeof(long));
     indices=(long *)nco_malloc(nbr_slb*sizeof(long));
     cp_wrp=(char **)nco_malloc(nbr_slb*sizeof(void *));
-    
+
     for(idx=0;idx<nbr_slb;idx++){
       lmt[dpt_crr]=lmt_lst[dpt_crr]->lmt_dmn[idx];
-      /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-      cp_wrp[idx]=(char *)nco_msa_rec_clc(dpt_crr+1,dpt_crr_max,lmt,lmt_lst,vara);
+      /* NB: nco_msa_rcr_clc() with same nc_id contains OpenMP critical region */
+      cp_wrp[idx]=(char *)nco_msa_rcr_clc(dpt_crr+1,dpt_crr_max,lmt,lmt_lst,vara);
       cp_sz[idx]=vara->sz;
     } /* end loop over idx */
-    
+
     for(idx=0;idx<dpt_crr_max;idx++) var_sz*=(idx<dpt_crr ? lmt[idx]->cnt : lmt_lst[idx]->dmn_cnt);
-    
+
     vp=(void *)nco_calloc((size_t)var_sz,nco_typ_lng(vara->type));
-    
+
     lcnt=nco_typ_lng(vara->type);
     for(idx=dpt_crr+1;idx<dpt_crr_max;idx++) lcnt*=lmt_lst[idx]->dmn_cnt;
-    
+
     cp_inc=(ptrdiff_t)(lcnt*lmt_lst[dpt_crr]->dmn_cnt);
     cp_max=(ptrdiff_t)(var_sz*nco_typ_lng(vara->type));
-    
+
     for(idx=0;idx<nbr_slb;idx++) indices[idx]=lmt_lst[dpt_crr]->lmt_dmn[idx]->srt;
-    
+
     cp_fst=0L;
-    
+
     /* Deal first with wrapped dimensions
-       True if wrapped dims or slabs DO NOT overlap or user-specified order */
+    True if wrapped dims or slabs DO NOT overlap or user-specified order */
     if(lmt_lst[dpt_crr]->WRP || lmt_lst[dpt_crr]->MSA_USR_RDR){
-      
+
       for(slb_idx=0;slb_idx<nbr_slb;slb_idx++){
-	cp_stp=(char *)vp+cp_fst;
-	slb=cp_wrp[slb_idx];
-	slb_sz=(ptrdiff_t)(lcnt*(lmt_lst[dpt_crr]->lmt_dmn[slb_idx]->cnt));
+        cp_stp=(char *)vp+cp_fst;
+        slb=cp_wrp[slb_idx];
+        slb_sz=(ptrdiff_t)(lcnt*(lmt_lst[dpt_crr]->lmt_dmn[slb_idx]->cnt));
         while(cp_stp-(char *)vp < cp_max){
-	  (void)memcpy(cp_stp,slb,(size_t)slb_sz);
-	  slb+=slb_sz;
-	  cp_stp+=cp_inc;
+          (void)memcpy(cp_stp,slb,(size_t)slb_sz);
+          slb+=slb_sz;
+          cp_stp+=cp_inc;
         } /* end while */
         cp_fst+=slb_sz;      
       } /* end loop over two slabs */
     } else { 
       /* Multiple hyper-slabs */
       while(nco_msa_clc_idx(True,lmt_lst[dpt_crr],&indices[0],&lmt_ret,&slb_idx)){
-	cp_stp=(char *)vp+cp_fst;
-	slb=cp_wrp[slb_idx]+(ptrdiff_t)(lmt_ret.srt*lcnt);
-	slb_stp=(ptrdiff_t)(lcnt*(lmt_lst[dpt_crr]->lmt_dmn[slb_idx]->cnt));
-	slb_sz=(ptrdiff_t)(lmt_ret.cnt*lcnt);
-	
-	while(cp_stp-(char *)vp < cp_max){
-	  (void)memcpy(cp_stp,slb,(size_t)slb_sz);
-	  slb+=slb_stp;
-	  cp_stp+=cp_inc;
-	} /* end while */
-	cp_fst+=slb_sz;
+        cp_stp=(char *)vp+cp_fst;
+        slb=cp_wrp[slb_idx]+(ptrdiff_t)(lmt_ret.srt*lcnt);
+        slb_stp=(ptrdiff_t)(lcnt*(lmt_lst[dpt_crr]->lmt_dmn[slb_idx]->cnt));
+        slb_sz=(ptrdiff_t)(lmt_ret.cnt*lcnt);
+
+        while(cp_stp-(char *)vp < cp_max){
+          (void)memcpy(cp_stp,slb,(size_t)slb_sz);
+          slb+=slb_stp;
+          cp_stp+=cp_inc;
+        } /* end while */
+        cp_fst+=slb_sz;
       } /* end while */
     } /* end else */  
-    
+
     indices=(long *)nco_free(indices);
     cp_sz=(long *)nco_free(cp_sz);
     for(idx=0;idx<nbr_slb;idx++) cp_wrp[idx]=(char *)nco_free(cp_wrp[idx]);
     cp_wrp=(char **)nco_free(cp_wrp);
-    
+
     vara->sz=var_sz;
     return vp;
   } /* endif multiple hyperslabs */
-  
- read_lbl:
+
+read_lbl:
   { 
     long var_sz=1L;
-    long mult_srd=1L;
+    long srd_prd=1L; /* Product of strides */
     long *dmn_srt;
     long *dmn_cnt;
     long *dmn_srd;
-    
+
     dmn_srt=(long *)nco_malloc(dpt_crr_max*sizeof(long));
     dmn_cnt=(long *)nco_malloc(dpt_crr_max*sizeof(long));
     dmn_srd=(long *)nco_malloc(dpt_crr_max*sizeof(long));
-    
+
     for(idx=0;idx<dpt_crr_max;idx++){
       dmn_srt[idx]=lmt[idx]->srt;
       dmn_cnt[idx]=lmt[idx]->cnt;
       dmn_srd[idx]=lmt[idx]->srd;
       var_sz*=dmn_cnt[idx];
-      mult_srd*=lmt[idx]->srd;
+      srd_prd*=lmt[idx]->srd;
     } /* end loop over idx */
-    
+
     vp=(void *)nco_malloc(var_sz*nco_typ_lng(vara->type));
-    
+
     /* Block is critical/thread-safe for identical/distinct in_id's */
     { /* begin potential OpenMP critical */
       /* Check for stride */
       if(var_sz > 0){ /* Allow for zero-size record variables TODO nco711 */
-	if(mult_srd == 1L)
-	  (void)nco_get_vara(vara->nc_id,vara->id,dmn_srt,dmn_cnt,vp,vara->type);
-	else
-	  (void)nco_get_varm(vara->nc_id,vara->id,dmn_srt,dmn_cnt,dmn_srd,(long *)NULL,vp,vara->type);
+        if(srd_prd == 1L)
+          (void)nco_get_vara(vara->nc_id,vara->id,dmn_srt,dmn_cnt,vp,vara->type);
+        else
+          (void)nco_get_varm(vara->nc_id,vara->id,dmn_srt,dmn_cnt,dmn_srd,(long *)NULL,vp,vara->type);
       } /* end if var_sz */
     } /* end potential OpenMP critical */
-    
+
     dmn_srt=(long *)nco_free(dmn_srt);
     dmn_cnt=(long *)nco_free(dmn_cnt);
     dmn_srd=(long *)nco_free(dmn_srd);
-    
+
     /* Put size into vara */
     vara->sz=var_sz;
     return vp;
   }/* end read_lbl */
-  
-} /* end nco_msa_rec_clc() */
+
+} /* end nco_msa_rcr_clc() */
 
 void 
-nco_msa_prn_idx(lmt_all_sct *lmt_i)
+nco_msa_prn_idx(lmt_msa_sct *lmt_i)
 {
   int slb_nbr;
   int idx;
   int size=lmt_i->lmt_dmn_nbr;
   long *indices;
   lmt_sct lmt;
-  
+
   indices=(long *)nco_malloc(size *sizeof(long));
-  
+
   printf("name=%s total size=%ld\n",lmt_i->dmn_nm,lmt_i->dmn_cnt);
-  
+
   for(idx=0;idx<size;idx++) indices[idx]=lmt_i->lmt_dmn[idx]->srt;
-  
-  while(nco_msa_clc_idx(False,lmt_i,&indices[0],&lmt,&slb_nbr))
-    printf("slb_nbr=%d srt=%ld end=%ld cnt=%ld srd=%ld\n",slb_nbr,lmt.srt,lmt.end,lmt.cnt,lmt.srd);
+
+  while(nco_msa_clc_idx(False,lmt_i,&indices[0],&lmt,&slb_nbr)) printf("slb_nbr=%d, srt=%ld, end=%ld, cnt=%ld, srd=%ld\n",slb_nbr,lmt.srt,lmt.end,lmt.cnt,lmt.srd);
 } /* end nco_msa_prn_idx() */
 
 nco_bool /* [flg] There are more limits to process in the slab */
 nco_msa_clc_idx
 (nco_bool NORMALIZE,
- lmt_all_sct *lmt_a, /* I list of lmts for each dimension  */
+ lmt_msa_sct *lmt_a, /* I list of lmts for each dimension  */
  long *indices, /* I/O so routine can keep track of where its at */
  lmt_sct *lmt, /* O Output hyperslab */
  int *slb) /* slab which above limit refers to */ 
 {
-  /* A very messy unclear in-efficient routine that needs re-writing
-     if NORMALIZE then It returns the slab number and the hyperslab in lmt- Note
-     VERY IMPORTANT - This is the slab WHITH-IN the slab
-     So the stride is ALWAYS 1 */
+  /* A messy, unclear, inefficient routine that needs re-writing
+  if NORMALIZE then return the slab number and the hyperslab in lmt
+  NB: This is the slab _WITHIN_ the slab so stride is ALWAYS 1 */
   int sz_idx;
   int size=lmt_a->lmt_dmn_nbr;
   nco_bool *mnm;
   nco_bool rcd;
-  
+
   int prv_slb=0;
   int crr_slb=0;
   long crr_idx;
   long prv_idx=long_CEWI;
   long cnt=0L;
-  
+
   mnm=(nco_bool *)nco_malloc(size*sizeof(nco_bool));
-  
+
   lmt->srt=-1L;
   lmt->cnt=0L;
   lmt->srd=0L;
-  
+
   while(++cnt){
     crr_idx=nco_msa_min_idx(indices,mnm,size);
-    
+
     crr_slb=-1;
     for(sz_idx=0;sz_idx<size;sz_idx++)
       if(mnm[sz_idx]){crr_slb=sz_idx;break;}
-    
-    if(crr_slb == -1){
-      if(lmt->srt == -1){
-	rcd=False;
-	goto cln_and_xit;
-      }else break;
-    } /* endif */
-    
-    if(mnm[prv_slb]) crr_slb=prv_slb;
-    
-    if(lmt->srt > -1 && crr_slb != prv_slb) break;
-    
-    if(lmt->cnt > 1L){
-      (lmt->cnt)++;
-      lmt->end=crr_idx;
-    } /* end if */
-    
-    if(lmt->cnt == 1L){
-      lmt->cnt=2L;
-      lmt->srd=crr_idx-prv_idx;
-      lmt->end=crr_idx;
-    } /* end if */
-    
-    if(lmt->srt == -1L){
-      lmt->srt=crr_idx;
-      lmt->cnt=1L;
-      lmt->end=crr_idx;
-      lmt->srd=1L;
-    } /* end if */
-    
-    for(sz_idx=0;sz_idx<size;sz_idx++){
-      if(mnm[sz_idx]){
-	indices[sz_idx]+=lmt_a->lmt_dmn[sz_idx]->srd;
-	if(indices[sz_idx] > lmt_a->lmt_dmn[sz_idx]->end) indices[sz_idx]=-1;
-      }
-    } /* end loop over sz_idx */
-    prv_idx=crr_idx;
-    prv_slb=crr_slb;
+
+      if(crr_slb == -1){
+        if(lmt->srt == -1){
+          rcd=False;
+          goto cln_and_xit;
+        }else break;
+      } /* endif */
+
+      if(mnm[prv_slb]) crr_slb=prv_slb;
+
+      if(lmt->srt > -1 && crr_slb != prv_slb) break;
+
+      if(lmt->cnt > 1L){
+        (lmt->cnt)++;
+        lmt->end=crr_idx;
+      } /* end if */
+
+      if(lmt->cnt == 1L){
+        lmt->cnt=2L;
+        lmt->srd=crr_idx-prv_idx;
+        lmt->end=crr_idx;
+      } /* end if */
+
+      if(lmt->srt == -1L){
+        lmt->srt=crr_idx;
+        lmt->cnt=1L;
+        lmt->end=crr_idx;
+        lmt->srd=1L;
+      } /* end if */
+
+      for(sz_idx=0;sz_idx<size;sz_idx++){
+        if(mnm[sz_idx]){
+          indices[sz_idx]+=lmt_a->lmt_dmn[sz_idx]->srd;
+          if(indices[sz_idx] > lmt_a->lmt_dmn[sz_idx]->end) indices[sz_idx]=-1;
+        }
+      } /* end loop over sz_idx */
+      prv_idx=crr_idx;
+      prv_slb=crr_slb;
   } /* end while */
-  
+
   *slb=prv_slb;
-  
+
   /* Normalize slab */
   if(NORMALIZE){
     lmt->srt=(lmt->srt-lmt_a->lmt_dmn[*slb]->srt)/(lmt_a->lmt_dmn[*slb]->srd);
     lmt->end=(lmt->end-lmt_a->lmt_dmn[*slb]->srt)/(lmt_a->lmt_dmn[*slb]->srd);
     lmt->srd=1L;
   } /* end if */
-  
+
   rcd=True;
-  
+
   /* Jump here if only one string */
- cln_and_xit:
+cln_and_xit:
   mnm=(nco_bool *)nco_free(mnm);
-  
+
   return rcd;
 } /* end nco_msa_clc_idx() */
 
 void
-nco_msa_ram_2_dsk /* convert hyperslab indices (in RAM) to hyperlsab indices relative */
-(long *dmn_sbs_ram,   /* to disk. */
- lmt_all_sct **lmt_mult, 
+nco_msa_ram_2_dsk /* Convert hyperslab indices (in RAM) to hyperlsab indices relative to disk */
+(long *dmn_sbs_ram,   
+ lmt_msa_sct **lmt_msa, 
  int nbr_dim,
  long *dmn_sbs_dsk,
- nco_bool FREE){
+ nco_bool flg_free)
+{
   /*  It does not really convert RAM indices to disk indices, but given a set 
-      of RAM indices finds the next set of dsk incdices. 
-      So it only works if the indices fed to it are continuous */
+  of RAM indices, it finds the next set of disk incdices. 
+  So it only works if the indices fed to it are continuous */
   int idx;
   int jdx;
   int size;
@@ -296,82 +289,82 @@ nco_msa_ram_2_dsk /* convert hyperslab indices (in RAM) to hyperlsab indices rel
   static long **dmn_indices;
   static long *dmn_sbs_prv;
   static nco_bool mnm[100];
-  
+
   if(!initialize){
     dmn_sbs_prv=(long *)nco_malloc(nbr_dim*sizeof(long));
     dmn_indices=(long **)nco_malloc(nbr_dim*sizeof(long *));
     for(idx=0;idx<nbr_dim;idx++){
-      dmn_indices[idx]=(long *)nco_malloc(lmt_mult[idx]->lmt_dmn_nbr*sizeof(long));
-      for(jdx=0;jdx<lmt_mult[idx]->lmt_dmn_nbr;jdx++)
-	dmn_indices[idx][jdx]=lmt_mult[idx]->lmt_dmn[jdx]->srt;
+      dmn_indices[idx]=(long *)nco_malloc(lmt_msa[idx]->lmt_dmn_nbr*sizeof(long));
+      for(jdx=0;jdx<lmt_msa[idx]->lmt_dmn_nbr;jdx++)
+        dmn_indices[idx][jdx]=lmt_msa[idx]->lmt_dmn[jdx]->srt;
       dmn_sbs_prv[idx]=-1L;
     }
     initialize=1;
   }
   for(idx=0;idx <nbr_dim;idx ++){
-    size=lmt_mult[idx]->lmt_dmn_nbr;
+    size=lmt_msa[idx]->lmt_dmn_nbr;
     if(dmn_sbs_ram[idx] == dmn_sbs_prv[idx]) continue;
-    
-    if(lmt_mult[idx]->BASIC_DMN){
+
+    if(lmt_msa[idx]->BASIC_DMN){
       dmn_sbs_dsk[idx]=dmn_sbs_ram[idx];
       continue;
     }
-    
-    /* re-initialize indices if 0*/
+
+    /* Re-initialize indices if 0 */
     if(dmn_sbs_ram[idx] == 0) 
       for(jdx=0;jdx<size;jdx++)
-       	dmn_indices[idx][jdx]=lmt_mult[idx]->lmt_dmn[jdx]->srt;
-    
-    /* Deal with wrapping - we have 2 hyperlsbas to deal with */
-    if(lmt_mult[idx]->WRP){
-      if(dmn_indices[idx][0]<lmt_mult[idx]->dmn_sz_org){
-	dmn_sbs_dsk[idx]=dmn_indices[idx][0];
-	dmn_indices[idx][0]+=lmt_mult[idx]->lmt_dmn[0]->srd;
+        dmn_indices[idx][jdx]=lmt_msa[idx]->lmt_dmn[jdx]->srt;
+
+    /* Deal with wrapping, i.e., we have 2 hyperslabs */
+    if(lmt_msa[idx]->WRP){
+      if(dmn_indices[idx][0]<lmt_msa[idx]->dmn_sz_org){
+        dmn_sbs_dsk[idx]=dmn_indices[idx][0];
+        dmn_indices[idx][0]+=lmt_msa[idx]->lmt_dmn[0]->srd;
       }else{
-	dmn_sbs_dsk[idx]=dmn_indices[idx][1];
-	dmn_indices[idx][1]+=lmt_mult[idx]->lmt_dmn[1]->srd;
+        dmn_sbs_dsk[idx]=dmn_indices[idx][1];
+        dmn_indices[idx][1]+=lmt_msa[idx]->lmt_dmn[1]->srd;
       }
       continue;
     }
-    
+
     dmn_sbs_dsk[idx]=nco_msa_min_idx(dmn_indices[idx],mnm,size);
-    
+
     for(jdx=0;jdx<size;jdx++){
       if(mnm[jdx]){
-	dmn_indices[idx][jdx]+=lmt_mult[idx]->lmt_dmn[jdx]->srd;
-	if(dmn_indices[idx][jdx] > lmt_mult[idx]->lmt_dmn[jdx]->end) dmn_indices[idx][jdx]=-1;
+        dmn_indices[idx][jdx]+=lmt_msa[idx]->lmt_dmn[jdx]->srd;
+        if(dmn_indices[idx][jdx] > lmt_msa[idx]->lmt_dmn[jdx]->end) dmn_indices[idx][jdx]=-1;
       }
     } /* end for  jdx */
   } /* end for idx */ 
-  
+
   for(idx=0;idx<nbr_dim;idx++) dmn_sbs_prv[idx]=dmn_sbs_ram[idx];
-  
+
   /* Free static space on last call */
-  if(FREE){
+  if(flg_free){
     (void)nco_free(dmn_sbs_prv);
     for(idx=0;idx <nbr_dim;idx++)
       (void)nco_free(dmn_indices[idx]);
     (void)nco_free(dmn_indices);
     initialize=0;
   }
-}
+} /* end nco_msa_ram_2_dsk() */
 
 void 
 nco_msa_clc_cnt
-(lmt_all_sct *lmt_lst)
+(lmt_msa_sct *lmt_lst)
 {
   int idx;
   long cnt=0;
   int size=lmt_lst->lmt_dmn_nbr;
   long *indices;
   nco_bool *mnm;
-  
+
   /* Degenerate case */
   if(size == 1){
     lmt_lst->dmn_cnt=lmt_lst->lmt_dmn[0]->cnt;
     return;
   } /* end if */
-  
+
   /* If slabs remain in user-specified order */
   if(lmt_lst->MSA_USR_RDR){
     for(idx=0;idx<size;idx++) cnt+=lmt_lst->lmt_dmn[idx]->cnt;
@@ -379,49 +372,49 @@ nco_msa_clc_cnt
   }else{
     indices=(long *)nco_malloc(size*sizeof(long));
     mnm=(nco_bool *)nco_malloc(size*sizeof(nco_bool));
-    
+
     /* Initialize indices with srt */
     for(idx=0;idx<size;idx++) indices[idx]=lmt_lst->lmt_dmn[idx]->srt;
-    
+
     while(nco_msa_min_idx(indices,mnm,size) != LONG_MAX){
       for(idx=0;idx<size;idx++){
         if(mnm[idx]){
-	  indices[idx]+=lmt_lst->lmt_dmn[idx]->srd;
-	  if(indices[idx] > lmt_lst->lmt_dmn[idx]->end) indices[idx]=-1;
+          indices[idx]+=lmt_lst->lmt_dmn[idx]->srd;
+          if(indices[idx] > lmt_lst->lmt_dmn[idx]->end) indices[idx]=-1;
         } /* end if */
       } /* end loop over idx */
       cnt++;
     } /* end while */
     lmt_lst->dmn_cnt=cnt;
-    
+
     indices=(long *)nco_free(indices);
     mnm=(nco_bool  *)nco_free(mnm);
   } /* end else */
-  
+
   return; /* 20050109: return squelches erroneous gcc-3.4.2 warning */ 
 } /* end nco_msa_clc_cnt() */
 
 nco_bool
 nco_msa_ovl
-(lmt_all_sct *lmt_lst)
+(lmt_msa_sct *lmt_lst)
 {
   /* Purpose: Return true if limits overlap
-     NB: Assumes that limits have been sorted */
+  NB: Assumes that limits have been sorted */
 
   long idx;
   long jdx;
   long sz=lmt_lst->lmt_dmn_nbr;
-  
+
   lmt_sct **lmt;
   /* defererence */
   lmt=lmt_lst->lmt_dmn;
-  
+
   for(idx=0; idx<sz; idx++)
     for(jdx=idx+1; jdx<sz ;jdx++)
       if( lmt[jdx]->srt <= lmt[idx]->end) return True;  
-  
+
   return False;
-}
+} /* end nco_msa_ovl() */
 
 int /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
 nco_cmp_lmt_srt /* [fnc] Compare two lmt_sct's by srt member */
@@ -430,89 +423,26 @@ nco_cmp_lmt_srt /* [fnc] Compare two lmt_sct's by srt member */
 {
   const lmt_sct * const lmt1=*((const lmt_sct * const *)vp1);
   const lmt_sct * const lmt2=*((const lmt_sct * const *)vp2); 
-  /* fxm: need to compiler warnings. will following work?
-      const lmt_sct * const lmt1=(const lmt_sct *)vp1;
-      const lmt_sct * const lmt2=(const lmt_sct *)vp2; */
-  
+  /* fxm: need to avoid compiler warnings. will following work?
+  const lmt_sct * const lmt1=(const lmt_sct *)vp1;
+  const lmt_sct * const lmt2=(const lmt_sct *)vp2; */
+
   return lmt1->srt < lmt2->srt ? -1 : (lmt1->srt > lmt2->srt);
-}
+} /* end nco_cmp_lmt_srt() */
 
 void nco_msa_qsort_srt
-(lmt_all_sct *lmt_lst)
+(lmt_msa_sct *lmt_lst)
 {
   lmt_sct **lmt;
   long sz;
-  
+
   sz=lmt_lst->lmt_dmn_nbr;
   lmt=lmt_lst->lmt_dmn;
-  
+
   if(sz <= 1) return;
-  
-  (void)qsort(lmt,(size_t)sz,sizeof(lmt_sct *),nco_cmp_lmt_srt);
-}
 
-void
-nco_msa_wrp_splt /* [fnc] Split wrapped dimensions */
-(lmt_all_sct *lmt_lst)
-{
-  int idx;
-  int jdx;
-  int size=lmt_lst->lmt_dmn_nbr;
-  long dmn_sz_org=lmt_lst->dmn_sz_org;
-  long srt;
-  long cnt;
-  long srd;
-  long kdx=0; /*  */
-  lmt_sct *lmt_wrp;
-  
-  for(idx=0;idx<size;idx++){
-    
-    if(lmt_lst->lmt_dmn[idx]->srt > lmt_lst->lmt_dmn[idx]->end){
-      
-      lmt_wrp=(lmt_sct *)nco_malloc(2*sizeof(lmt_sct));
-      srt=lmt_lst->lmt_dmn[idx]->srt;
-      cnt=lmt_lst->lmt_dmn[idx]->cnt;
-      srd=lmt_lst->lmt_dmn[idx]->srd;
-      
-      for(jdx=0;jdx<cnt;jdx++){
-	kdx=(srt+srd*jdx)%dmn_sz_org;
-	if(kdx<srt) break;
-      } /* end loop over jdx */
-      
-      lmt_wrp[0]=*(lmt_lst->lmt_dmn[idx]);
-      lmt_wrp[1]=*(lmt_lst->lmt_dmn[idx]);
-      lmt_wrp[0].srt=srt;
-      
-      if(jdx == 1){
-	lmt_wrp[0].end=srt;
-	lmt_wrp[0].cnt=1L;
-	lmt_wrp[0].srd=1L;
-      }else{
-	lmt_wrp[0].end=srt+srd*(jdx-1);
-	lmt_wrp[0].cnt=jdx;
-	lmt_wrp[0].srd=srd;
-      } /* end else */
-      
-      lmt_wrp[1].srt=kdx;
-      lmt_wrp[1].cnt=cnt-lmt_wrp[0].cnt;
-      if(lmt_wrp[1].cnt == 1L){
-	lmt_wrp[1].end=kdx;
-	lmt_wrp[1].srd=1L;
-      }else{
-	lmt_wrp[1].end=kdx+(lmt_wrp[1].cnt-1)*srd;
-	lmt_wrp[1].srd=srd;
-      } /* end else */
-      
-      /* Insert new limits into array */
-      lmt_lst->lmt_dmn[idx]=lmt_wrp;
-      lmt_lst->lmt_dmn=(lmt_sct **)nco_realloc(lmt_lst->lmt_dmn,((lmt_lst->lmt_dmn_nbr)+1)*sizeof(lmt_sct *));
-      lmt_lst->lmt_dmn[(lmt_lst->lmt_dmn_nbr)++]=++lmt_wrp;
-    } /* endif srt > end */
-  } /* end loop over size */
-  
-  /* Check if genuine wrapped co-ordinate */
-  if(size==1 && lmt_lst->lmt_dmn_nbr==2) lmt_lst->WRP=True;
-} /* end nco_msa_wrp_splt() */
+  (void)qsort(lmt,(size_t)sz,sizeof(lmt_sct *),nco_cmp_lmt_srt);
+} /* end nco_msa_qsort_srt() */
 
 long /* O [idx] Minimum value */
 nco_msa_min_idx /* [fnc] Find minimum values in current and return minimum value */
@@ -522,13 +452,13 @@ nco_msa_min_idx /* [fnc] Find minimum values in current and return minimum value
 {
   int sz_idx;
   long min_val=LONG_MAX;
-  
+
   for(sz_idx=0;sz_idx<size;sz_idx++)
     if(current[sz_idx] != -1 && current[sz_idx] < min_val) min_val=current[sz_idx];
-  
+
   for(sz_idx=0;sz_idx<size;sz_idx++)
     mnm[sz_idx]=((current[sz_idx] != -1 && current[sz_idx] == min_val) ? True : False);
-  
+
   return min_val;
 } /* end nco_msa_min_idx() */
 
@@ -536,57 +466,57 @@ void
 nco_msa_var_get    /* [fnc] Get variable data from disk taking account of multihyperslabs */
 (const int in_id,  /* I [id] netCDF input file ID */
  var_sct *var_in,
- lmt_all_sct * const * lmt_lst, /* I multi-hyperslab limits */
+ lmt_msa_sct * const * lmt_lst, /* I [sct] multi-hyperslab limits */
  int nbr_dmn_fl) /* I [nbr] Number of multi-hyperslab limits */
 {
-int idx;
-int jdx;
-int nbr_dim;
-nc_type typ_tmp;
-void *void_ptr;
-lmt_all_sct **lmt_mult;
-lmt_sct **lmt;
+  int idx;
+  int jdx;
+  int nbr_dim;
+  nc_type typ_tmp;
+  void *void_ptr;
+  lmt_msa_sct **lmt_msa;
+  lmt_sct **lmt;
 
   nbr_dim=var_in->nbr_dim;	
 
   /* Refresh nc_id with in_id, NB: makes OpenMP threading work
-     Should have been included in release 3.9.5
-     Fixes TODO nco956 */
+  Should have been included in release 3.9.5
+  Fixes TODO nco956 */
   var_in->nc_id=in_id; 
-  /* Deal with scalar var */
-  if(nbr_dim==0){
-   var_in->val.vp=nco_malloc(nco_typ_lng(var_in->typ_dsk));
-   (void)nco_get_var1(in_id,var_in->id,0L,var_in->val.vp,var_in->typ_dsk);
-   goto do_unpck;
-   /*return; */
-  }
 
-  lmt_mult=(lmt_all_sct **)nco_malloc(nbr_dim*sizeof(lmt_all_sct *));
+  /* Scalars */
+  if(nbr_dim == 0){
+    var_in->val.vp=nco_malloc(nco_typ_lng(var_in->typ_dsk));
+    (void)nco_get_var1(in_id,var_in->id,0L,var_in->val.vp,var_in->typ_dsk);
+    goto do_upk;
+  } /* end if scalar */
+
+  lmt_msa=(lmt_msa_sct **)nco_malloc(nbr_dim*sizeof(lmt_msa_sct *));
   lmt=(lmt_sct **)nco_malloc(nbr_dim*sizeof(lmt_sct *));
 
-  /* Initialize lmt_mult with multi-limits from lmt_lst limits */
+  /* Initialize lmt_msa with multi-limits from lmt_lst limits */
   for(idx=0;idx<nbr_dim;idx++){
     for(jdx=0;jdx<nbr_dmn_fl;jdx++){
       if(!strcmp(var_in->dim[idx]->nm,lmt_lst[jdx]->dmn_nm)){
-	lmt_mult[idx]=lmt_lst[jdx];
+        lmt_msa[idx]=lmt_lst[jdx];
         break;
       } /* end if */
     } /* end loop over jdx */
   } /* end idx */
-  
+
   /* Call super-dooper recursive routine */
-  /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
+  /* NB: nco_msa_rcr_clc() with same nc_id contains OpenMP critical region */
   typ_tmp=var_in->type;
   var_in->type=var_in->typ_dsk; 
-  void_ptr=nco_msa_rec_clc(0,nbr_dim,lmt,lmt_mult,var_in);
-  
+  void_ptr=nco_msa_rcr_clc((int)0,nbr_dim,lmt,lmt_msa,var_in);
+
   var_in->type=typ_tmp;
   var_in->val.vp=void_ptr;
 
-  (void)nco_free(lmt_mult);
+  (void)nco_free(lmt_msa);
   (void)nco_free(lmt);
 
-do_unpck:
+do_upk:
   /* Following code copied from nco_var_get() */
 
   if(var_in->pck_dsk) var_in=nco_cnv_mss_val_typ(var_in,var_in->typ_dsk);
@@ -598,9 +528,9 @@ do_unpck:
   /* Packing in RAM is now same as packing on disk pck_dbg 
      fxm: This nco_pck_dsk_inq() call is never necessary for non-packed variables */
   (void)nco_pck_dsk_inq(in_id,var_in);
-  
+
   /* Packing/Unpacking */
-  if(nco_is_rth_opr(prg_get())){
+  if(nco_is_rth_opr(nco_prg_id_get())){
     /* Arithmetic operators must unpack variables before performing arithmetic
        Otherwise arithmetic will produce garbage results */
     /* 20050519: Not sure why I originally made nco_var_upk() call SMP-critical
@@ -609,622 +539,31 @@ do_unpck:
   } /* endif arithmetic operator */
 
   return;
-} /* end nco_msa_var_get */
+} /* end nco_msa_var_get() */
 
-void
-nco_cpy_var_val_mlt_lmt /* [fnc] Copy variable data from input to output file */
-(const int in_id, /* I [id] netCDF input file ID */
- const int out_id, /* I [id] netCDF output file ID */
- FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
- const nco_bool NCO_BNR_WRT, /* I [flg] Write binary file */
- char *var_nm, /* I [sng] Variable name */
- lmt_all_sct * const * lmt_lst, /* I multi-hyperslab limits */
- int nbr_dmn_fl) /* I [nbr] Number of multi-hyperslab limits */
+void /* Initilaize lmt_msa_sct's */ 
+nco_msa_lmt_all_ntl
+(int in_id,
+ nco_bool MSA_USR_RDR,
+ lmt_msa_sct **lmt_all_lst,
+ int nbr_dmn_fl,
+ lmt_sct** lmt,
+ int lmt_nbr)
 {
-  /* NB: nco_cpy_var_val_mlt_lmt() contains OpenMP critical region */
-  /* Purpose: Copy variable data from input netCDF file to output netCDF file 
-     Routine truncates dimensions in variable definition in output file according to user-specified limits.
-     Routine copies variable-by-variable, old-style, used only by ncks */
-  
-  int *dmn_id;
   int idx;
   int jdx;
-  int nbr_dim;
-  int nbr_dmn_in;
-  int nbr_dmn_out;
-  int var_in_id;
-  int var_out_id;
-  
-  /* For regular data */
-  long *dmn_map_in;
-  long *dmn_map_out;
-  long *dmn_map_srt;
-  long var_sz=1L;
-  
-  nc_type var_type;
-  
-  var_sct vara;/* To hold basic data in_id, var_id, nctype for recusive routine */
-  
-  void *void_ptr;
-  
-  lmt_all_sct **lmt_mult;
-  lmt_sct **lmt;
-  
-  /* Get var_id for requested variable from both files */
-  nco_inq_varid(in_id,var_nm,&var_in_id);
-  nco_inq_varid(out_id,var_nm,&var_out_id);
-  
-  /* Get type and number of dimensions for variable */
-  (void)nco_inq_var(out_id,var_out_id,(char *)NULL,&var_type,&nbr_dmn_out,(int *)NULL,(int *)NULL);
-  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_type,&nbr_dmn_in,(int *)NULL,(int *)NULL);
-  if(nbr_dmn_out != nbr_dmn_in){
-    (void)fprintf(stderr,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file\n",prg_nm_get(),nbr_dmn_in,var_nm,nbr_dmn_out);
-    nco_exit(EXIT_FAILURE);
-  } /* endif */
-  nbr_dim=nbr_dmn_out;
-  
-  /* Deal with scalar variables */
-  if(nbr_dim == 0){
-    var_sz=1L;
-    void_ptr=nco_malloc(nco_typ_lng(var_type));
-    /* Block is critical/thread-safe for identical/distinct in_id's */
-    { /* begin potential OpenMP critical */
-      (void)nco_get_var1(in_id,var_in_id,0L,void_ptr,var_type);
-    } /* end potential OpenMP critical */
-    /* Block is always critical */
-    { /* begin OpenMP critical */
-      (void)nco_put_var1(out_id,var_out_id,0L,void_ptr,var_type);
-    } /* end OpenMP critical */
-    if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
-    (void)nco_free(void_ptr);
-    return;
-  } /* end if */
-  
-  dmn_map_in=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_map_out=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_map_srt=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  
-  lmt_mult=(lmt_all_sct **)nco_malloc(nbr_dim*sizeof(lmt_all_sct *));
-  lmt=(lmt_sct **)nco_malloc(nbr_dim*sizeof(lmt_sct *));
-  
-  /* Get dimension IDs from input file */
-  (void)nco_inq_vardimid(in_id,var_in_id,dmn_id);
-  
-  /* Initialize lmt_mult with multi-limits from lmt_lst limits */
-  /* Get dimension sizes from input file */
-  for(idx=0;idx<nbr_dim;idx++){
-    for(jdx=0;jdx<nbr_dmn_fl;jdx++){
-      if(dmn_id[idx] == lmt_lst[jdx]->lmt_dmn[0]->id){
-	lmt_mult[idx]=lmt_lst[jdx];
-        break;
-      } /* end if */
-    } /* end loop over jdx */
-    /* Create maps now---they maybe useful later */ 
-    (void)nco_inq_dimlen(in_id,dmn_id[idx],&dmn_map_in[idx]);
-    dmn_map_out[idx]=lmt_mult[idx]->dmn_cnt;
-    dmn_map_srt[idx]=0L;
-  } /* end for */
-  
-  /* Initalize vara with in_id, var_in_id, nctype, etc. so recursive routine can read data */
-  vara.nm=var_nm;
-  vara.id=var_in_id;
-  vara.nc_id=in_id;
-  vara.type=var_type;
-  
-  /* Call super-dooper recursive routine */
-  /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-  void_ptr=nco_msa_rec_clc(0,nbr_dim,lmt,lmt_mult,&vara);
-  var_sz=vara.sz;
-  
-  /* Block is always critical */
-  { /* begin OpenMP critical */
-    (void)nco_put_vara(out_id,var_out_id,dmn_map_srt,dmn_map_out,void_ptr,var_type);
-  } /* end OpenMP critical */
-  
-  if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
-  
-  (void)nco_free(void_ptr);
-  (void)nco_free(dmn_map_in);
-  (void)nco_free(dmn_map_out);
-  (void)nco_free(dmn_map_srt);
-  (void)nco_free(dmn_id);
-  (void)nco_free(lmt_mult);
-  (void)nco_free(lmt);
-  
-  return;
-} /* end nco_cpy_var_val_mlt_lmt() */
+  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
+  long dmn_sz;
+  char dmn_nm[NC_MAX_NAME];
 
-void 
-nco_msa_c_2_f /* [fnc] Replace brackets with parentheses in a string */
-(char *sng) /* [sng] String to change from C to Fortran notation */
-{
-  /* Purpose: Replace brackets with parentheses in a string */
-  while(*sng){
-    if(*sng == '[') *sng='(';
-    if(*sng == ']') *sng=')';
-    sng++;
-  } /* end while */
-} /* end nco_msa_c_2_f() */
+  lmt_sct *lmt_rgl;
+  lmt_msa_sct * lmt_all_crr;
 
-void
-nco_msa_prn_var_val   /* [fnc] Print variable data */
-(const int in_id, /* I [id] netCDF input file ID */
- const char * const var_nm, /* I [sng] Variable name */
- lmt_all_sct * const *lmt_lst, /* I [sct] Dimension limits */
- const int lmt_nbr, /* I [nbr] number of dimensions with user-specified limits */
- char * const dlm_sng, /* I [sng] User-specified delimiter string, if any */
- const nco_bool FORTRAN_IDX_CNV, /* I [flg] Hyperslab indices obey Fortran convention */
- const nco_bool PRN_DMN_UNITS, /* I [flg] Print units attribute, if any */
- const nco_bool PRN_DMN_IDX_CRD_VAL, /* I [flg] Print dimension/coordinate indices/values */
- const nco_bool PRN_DMN_VAR_NM) /* I [flg] Print dimension/variable names */
-{
-  /* NB: nco_msa_prn_var_val() with same nc_id contains OpenMP critical region */
-  /* Purpose:
-     Get variable with limits from input file
-     User supplied dlm_sng, print var (includes nbr_dim == 0)
-     Get dimensional units
-     if nbr_dim ==0 and dlm_sng==NULL  print variable
-     if PRN.. = False print var taking account of FORTRAN (need var indices)
-     if PRN_DMN_IDX_CRD_VAL then read in co-ord dims
-     if PRN.. = True print var taking account of FORTRAN (Use dims to calculate var indices */
-  
-  nco_bool MALLOC_UNITS_SNG=False; /* [flg] Allocated memory for units string */
-  char nul_chr='\0';
-  char var_sng[NCO_MAX_LEN_FMT_SNG];
-  char *unit_sng;
-  
-  /* Get variable with limits from input file */
-  int rcd;
-  int idx;
-  int jdx;
-  int *dmn_id=NULL_CEWI;
-  
-  /* For regular data */
-  long lmn;
-  
-  dmn_sct *dim=NULL_CEWI;
-  
-  lmt_all_sct **lmt_mult=NULL_CEWI;
-  lmt_sct **lmt=NULL_CEWI;
-  
-  var_sct var;
-  
-  /* set defaults */
-  var_dfl_set(&var); 
-   
-  /* Initialize units string, overwrite later if necessary */
-  unit_sng=&nul_chr;
-  
-  /* Get var_id for requested variable */
-  var.nm=(char *)strdup(var_nm);
-  var.nc_id=in_id;
-  nco_inq_varid(in_id,var_nm,&var.id);
-  
-  /* Get type and number of dimensions for variable */
-  (void)nco_inq_var(in_id,var.id,(char *)NULL,&var.type,&var.nbr_dim,(int *)NULL,(int *)NULL);
-  
-  /* Deal with scalar variables */
-  if(var.nbr_dim == 0){
-    var.sz=1L;
-    var.val.vp=nco_malloc(nco_typ_lng(var.type));
-    /* Block is critical/thread-safe for identical/distinct in_id's */
-    { /* begin potential OpenMP critical */
-      (void)nco_get_var1(in_id,var.id,0L,var.val.vp,var.type);
-    } /* end potential OpenMP critical */
-  } /* end if */
-  
-  dmn_id=(int *)nco_malloc(var.nbr_dim*sizeof(int));
-  lmt_mult=(lmt_all_sct **)nco_malloc(var.nbr_dim*sizeof(lmt_all_sct *));
-  lmt=(lmt_sct **)nco_malloc(var.nbr_dim*sizeof(lmt_sct *));
-  
-  /* Get dimension IDs from input file */
-  (void)nco_inq_vardimid(in_id,var.id,dmn_id);
-  
-  /* Initialize lmt_mult with multi-limits from lmt_lst limits */
-  /* Get dimension sizes from input file */
-  for(idx=0;idx< var.nbr_dim;idx++)
-    for(jdx=0;jdx< lmt_nbr;jdx++){
-      if(dmn_id[idx] == lmt_lst[jdx]->lmt_dmn[0]->id){
-	lmt_mult[idx]=lmt_lst[jdx];
-        break;
-      } /* end if */
-    } /* end loop over jdx */
-  
-  /* Call super-dooper recursive routine */
-  /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-  var.val.vp=nco_msa_rec_clc(0,var.nbr_dim,lmt,lmt_mult,&var);
-  /* Call also initializes var.sz with final size */
-
-  /* Warn if variable is packed */
-  if(nco_pck_dsk_inq(in_id,&var)) (void)fprintf(stderr,"%s: WARNING about to print packed contents of variable \"%s\". Consider unpacking variable first using ncpdq -U.\n",prg_nm_get(),var_nm);
-  
-  /* User supplied dlm_sng, print var (includes nbr_dmn == 0) */  
-  if(dlm_sng){
-    /* Print each element with user-supplied formatting code */
-    /* Replace C language '\X' escape codes with ASCII bytes */
-    (void)sng_ascii_trn(dlm_sng);
-    
-    /* Assume -s argument (dlm_sng) formats entire string
-       Otherwise, one could assume that field will be printed with format nco_typ_fmt_sng(var.type),
-       and that user is only allowed to affect text between fields. 
-       This would be accomplished with:
-       (void)sprintf(var_sng,"%s%s",nco_typ_fmt_sng(var.type),dlm_sng);*/
-    
-    for(lmn=0;lmn<var.sz;lmn++){
-      switch(var.type){
-      case NC_FLOAT: (void)fprintf(stdout,dlm_sng,var.val.fp[lmn]); break;
-      case NC_DOUBLE: (void)fprintf(stdout,dlm_sng,var.val.dp[lmn]); break;
-      case NC_SHORT: (void)fprintf(stdout,dlm_sng,var.val.sp[lmn]); break;
-      case NC_INT: (void)fprintf(stdout,dlm_sng,var.val.ip[lmn]); break;
-      case NC_CHAR: (void)fprintf(stdout,dlm_sng,var.val.cp[lmn]); break;
-      case NC_BYTE: (void)fprintf(stdout,dlm_sng,var.val.bp[lmn]); break;
-      case NC_UBYTE: (void)fprintf(stdout,dlm_sng,var.val.ubp[lmn]); break;
-      case NC_USHORT: (void)fprintf(stdout,dlm_sng,var.val.usp[lmn]); break;
-      case NC_UINT: (void)fprintf(stdout,dlm_sng,var.val.uip[lmn]); break;
-      case NC_INT64: (void)fprintf(stdout,dlm_sng,var.val.i64p[lmn]); break;
-      case NC_UINT64: (void)fprintf(stdout,dlm_sng,var.val.ui64p[lmn]); break;
-      case NC_STRING: (void)fprintf(stdout,dlm_sng,var.val.sngp[lmn]); break;
-      default: nco_dfl_case_nc_type_err(); break;
-      } /* end switch */
-    } /* end loop over element */
-    (void)fprintf(stdout,"\n");
-    
-  } /* end if dlm_sng */
-  
-  if(PRN_DMN_UNITS){
-    const char units_nm[]="units"; /* [sng] Name of units attribute */
-    int rcd_lcl; /* [rcd] Return code */
-    int att_id; /* [id] Attribute ID */
-    long att_sz;
-    nc_type att_typ;
-    
-    /* Does variable have character attribute named units_nm? */
-    rcd_lcl=nco_inq_attid_flg(in_id,var.id,units_nm,&att_id);
-    if(rcd_lcl == NC_NOERR){
-      (void)nco_inq_att(in_id,var.id,units_nm,&att_typ,&att_sz);
-      if(att_typ == NC_CHAR){
-	unit_sng=(char *)nco_malloc((att_sz+1)*nco_typ_lng(att_typ));
-	(void)nco_get_att(in_id,var.id,units_nm,unit_sng,att_typ);
-	unit_sng[(att_sz+1)*nco_typ_lng(att_typ)-1]='\0';
-	MALLOC_UNITS_SNG=True; /* [flg] Allocated memory for units string */
-      } /* end if */
-    } /* end if */
-  } /* end if PRN_DMN_UNITS */
-  
-  if(var.nbr_dim == 0 && dlm_sng == NULL){
-    /* Variable is scalar, byte, or character */
-    lmn=0;
-    if(PRN_DMN_VAR_NM) (void)sprintf(var_sng,"%%s = %s %%s\n",nco_typ_fmt_sng(var.type)); else (void)sprintf(var_sng,"%s\n",nco_typ_fmt_sng(var.type));
-    if(PRN_DMN_VAR_NM){
-      switch(var.type){
-      case NC_FLOAT: (void)fprintf(stdout,var_sng,var_nm,var.val.fp[lmn],unit_sng); break;
-      case NC_DOUBLE: (void)fprintf(stdout,var_sng,var_nm,var.val.dp[lmn],unit_sng); break;
-      case NC_SHORT: (void)fprintf(stdout,var_sng,var_nm,var.val.sp[lmn],unit_sng); break;
-      case NC_INT: (void)fprintf(stdout,var_sng,var_nm,var.val.ip[lmn],unit_sng); break;
-      case NC_CHAR:
-	if(var.val.cp[lmn] != '\0'){
-	  (void)sprintf(var_sng,"%%s = '%s' %%s\n",nco_typ_fmt_sng(var.type));
-	  (void)fprintf(stdout,var_sng,var_nm,var.val.cp[lmn],unit_sng);
-	}else{ /* Deal with NUL character here */
-	  (void)fprintf(stdout, "%s = \"\" %s\n",var_nm,unit_sng);
-	} /* end if */
-	break;
-      case NC_BYTE: (void)fprintf(stdout,var_sng,var_nm,(unsigned char)var.val.bp[lmn],unit_sng); break;
-      case NC_UBYTE: (void)fprintf(stdout,var_sng,var_nm,var.val.ubp[lmn],unit_sng); break;
-      case NC_USHORT: (void)fprintf(stdout,var_sng,var_nm,var.val.usp[lmn],unit_sng); break;
-      case NC_UINT: (void)fprintf(stdout,var_sng,var_nm,var.val.uip[lmn],unit_sng); break;
-      case NC_INT64: (void)fprintf(stdout,var_sng,var_nm,var.val.i64p[lmn],unit_sng); break;
-      case NC_UINT64: (void)fprintf(stdout,var_sng,var_nm,var.val.ui64p[lmn],unit_sng); break;
-      case NC_STRING: (void)fprintf(stdout,var_sng,var_nm,var.val.sngp[lmn],unit_sng); break;
-      default: nco_dfl_case_nc_type_err(); break;
-      } /* end switch */
-    }else{ /* !PRN_DMN_VAR_NM */
-      switch(var.type){
-      case NC_FLOAT: (void)fprintf(stdout,var_sng,var.val.fp[lmn]); break;
-      case NC_DOUBLE: (void)fprintf(stdout,var_sng,var.val.dp[lmn]); break;
-      case NC_SHORT: (void)fprintf(stdout,var_sng,var.val.sp[lmn]); break;
-      case NC_INT: (void)fprintf(stdout,var_sng,var.val.ip[lmn]); break;
-      case NC_CHAR:
-	if(var.val.cp[lmn] != '\0'){
-	  (void)sprintf(var_sng,"'%s'\n",nco_typ_fmt_sng(var.type));
-	  (void)fprintf(stdout,var_sng,var.val.cp[lmn]);
-	}else{ /* Deal with NUL character here */
-	  (void)fprintf(stdout, "\"\"\n");
-	} /* end if */
-	break;
-      case NC_BYTE: (void)fprintf(stdout,var_sng,(unsigned char)var.val.bp[lmn]); break;
-      case NC_UBYTE: (void)fprintf(stdout,var_sng,var.val.ubp[lmn]); break;
-      case NC_USHORT: (void)fprintf(stdout,var_sng,var.val.usp[lmn]); break;
-      case NC_UINT: (void)fprintf(stdout,var_sng,var.val.uip[lmn]); break;
-      case NC_INT64: (void)fprintf(stdout,var_sng,var.val.i64p[lmn]); break;
-      case NC_UINT64: (void)fprintf(stdout,var_sng,var.val.ui64p[lmn]); break;
-      case NC_STRING: (void)fprintf(stdout,var_sng,var.val.sngp[lmn]); break;
-      default: nco_dfl_case_nc_type_err(); break;
-      } /* end switch */
-    } /* !PRN_DMN_VAR_NM */
-  } /* end if variable is scalar, byte, or character */
-  
-  if(var.nbr_dim > 0 && dlm_sng == NULL){
-    long *mod_map_in;
-    long *mod_map_out;
-    long *dmn_sbs_ram; /* Indices in hyperslab */
-    long *dmn_sbs_dsk; /* Indices of hyperslab relative to original on disk */  
-    long var_dsk;
-    
-    mod_map_in=(long *)nco_malloc(var.nbr_dim*sizeof(long));
-    mod_map_out=(long *)nco_malloc(var.nbr_dim*sizeof(long));
-    dmn_sbs_ram=(long *)nco_malloc(var.nbr_dim*sizeof(long));
-    dmn_sbs_dsk=(long *)nco_malloc(var.nbr_dim*sizeof(long));
-    
-    /* Create mod_map_in */
-    for(idx=0;idx<var.nbr_dim;idx++) mod_map_in[idx]=1L;
-    for(idx=0;idx<var.nbr_dim;idx++)
-      for(jdx=idx+1;jdx<var.nbr_dim;jdx++)
-	mod_map_in[idx]*=lmt_mult[jdx]->dmn_sz_org;
-    
-    /* Create mod_map_out */
-    for(idx=0;idx< var.nbr_dim;idx++) mod_map_out[idx]=1L;
-    for(idx=0;idx< var.nbr_dim;idx++) 
-      for(jdx=idx;jdx<var.nbr_dim;jdx++)
-	mod_map_out[idx]*=lmt_mult[jdx]->dmn_cnt;
-    
-    /* Read coordinate dimensions if required */
-    if(PRN_DMN_IDX_CRD_VAL){
-      var_sct var_crd;
-      
-      dim=(dmn_sct *)nco_malloc(var.nbr_dim*sizeof(dmn_sct));
-      for(idx=0;idx <var.nbr_dim;idx++){
-	dim[idx].val.vp=NULL;
-        dim[idx].nm=lmt_mult[idx]->dmn_nm;
-        rcd=nco_inq_varid_flg(in_id,dim[idx].nm,&dim[idx].cid);
-	/* If not a variable */
-        if(rcd != NC_NOERR){
-          dim[idx].is_crd_dmn=False;
-          dim[idx].cid=-1;
-          continue;
-        } /* end if */
-	
-        dim[idx].is_crd_dmn=True;
-        (void)nco_inq_vartype(in_id,dim[idx].cid,&dim[idx].type);
-        var_crd.nc_id=in_id;
-        var_crd.nm=dim[idx].nm;
-        var_crd.type=dim[idx].type;
-        var_crd.id=dim[idx].cid;
-        /* Read coordinate variable with limits applied */
-	/* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-	dim[idx].val.vp=nco_msa_rec_clc(0,1,lmt,lmt_mult+idx,&var_crd);
-	
-        /* Typecast pointer before use */  
-        (void)cast_void_nctype(dim[idx].type,&dim[idx].val);
-      }/* end for */
-    } /* end if */
-    
-    for(lmn=0;lmn<var.sz;lmn++){
-      
-      /* Caculate RAM indices from current limit */
-      for(idx=0;idx <var.nbr_dim;idx++) 
-	dmn_sbs_ram[idx]=(lmn%mod_map_out[idx])/(idx == var.nbr_dim-1 ? 1L : mod_map_out[idx+1]);
-      /* Calculate disk indices from RAM indices */
-      (void)nco_msa_ram_2_dsk(dmn_sbs_ram,lmt_mult,var.nbr_dim,dmn_sbs_dsk,(lmn==var.sz-1));
-      
-      /* Find variable index relative to disk */
-      var_dsk=0;
-      for(idx=0;idx <var.nbr_dim;idx++)	var_dsk+=dmn_sbs_dsk[idx]*mod_map_in[idx];
-      
-      /* Skip rest of loop unless element is first in string */
-      if(var.type == NC_CHAR && dmn_sbs_ram[var.nbr_dim-1] > 0) goto lbl_chr_prn;
-      
-      /* Print dimensions with indices along with values if they are coordinate variables */
-      if(PRN_DMN_IDX_CRD_VAL){
-        int dmn_idx;
-        long dmn_sbs_prn;
-	long crd_idx_crr;
-	char dmn_sng[NCO_MAX_LEN_FMT_SNG];
-	
-	/* Loop over dimensions whose coordinates are to be printed */
-	for(idx=0;idx<var.nbr_dim;idx++){
-	  
-	  /* Reverse dimension ordering for Fortran convention */
-	  if(FORTRAN_IDX_CNV) dmn_idx=var.nbr_dim-1-idx; else dmn_idx=idx;
-	  
-	  /* Format and print dimension part of output string for non-coordinate variables */
-	  if(dim[dmn_idx].cid == var.id) continue; /* If variable is a coordinate then skip printing until later */
-	  if(!dim[dmn_idx].is_crd_dmn){ /* If dimension is not a coordinate... */
-	    if(PRN_DMN_VAR_NM){
-	      if(FORTRAN_IDX_CNV) (void)fprintf(stdout,"%s(%ld) ",dim[dmn_idx].nm,dmn_sbs_dsk[dmn_idx]+1L); else (void)fprintf(stdout,"%s[%ld] ",dim[dmn_idx].nm,dmn_sbs_dsk[dmn_idx]);
-	    } /* !PRN_DMN_VAR_NM */
-	    continue;
-	  } /* end if */
-	  
-	  if(PRN_DMN_VAR_NM) (void)sprintf(dmn_sng,"%%s[%%ld]=%s ",nco_typ_fmt_sng(dim[dmn_idx].type)); else (void)sprintf(dmn_sng,"%s ",nco_typ_fmt_sng(dim[dmn_idx].type));
-          dmn_sbs_prn=dmn_sbs_dsk[dmn_idx];
-	  
-	  if(FORTRAN_IDX_CNV){
-            (void)nco_msa_c_2_f(dmn_sng);
-	    dmn_sbs_prn++;
-	  } /* end if */
-	  
-	  /* Account for hyperslab offset in coordinate values*/
-	  crd_idx_crr=dmn_sbs_ram[dmn_idx];
-	  if(PRN_DMN_VAR_NM){
-	    switch(dim[dmn_idx].type){
-	    case NC_FLOAT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.fp[crd_idx_crr]); break;
-	    case NC_DOUBLE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.dp[crd_idx_crr]); break;
-	    case NC_SHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.sp[crd_idx_crr]); break;
-	    case NC_INT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.ip[crd_idx_crr]); break;
-	    case NC_CHAR: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.cp[crd_idx_crr]); break;
-	    case NC_BYTE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,(unsigned char)dim[dmn_idx].val.bp[crd_idx_crr]); break;
-	    case NC_UBYTE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.ubp[crd_idx_crr]); break;
-	    case NC_USHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.usp[crd_idx_crr]); break;
-	    case NC_UINT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.uip[crd_idx_crr]); break;
-	    case NC_INT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.i64p[crd_idx_crr]); break;
-	    case NC_UINT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.ui64p[crd_idx_crr]); break;
-	    case NC_STRING: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.sngp[crd_idx_crr]); break;
-	    default: nco_dfl_case_nc_type_err(); break;
-	    } /* end switch */
-	  }else{ /* !PRN_DMN_VAR_NM */
-	    switch(dim[dmn_idx].type){
-	    case NC_FLOAT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.fp[crd_idx_crr]); break;
-	    case NC_DOUBLE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.dp[crd_idx_crr]); break;
-	    case NC_SHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.sp[crd_idx_crr]); break;
-	    case NC_INT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.ip[crd_idx_crr]); break;
-	    case NC_CHAR: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.cp[crd_idx_crr]); break;
-	    case NC_BYTE: (void)fprintf(stdout,dmn_sng,(unsigned char)dim[dmn_idx].val.bp[crd_idx_crr]); break;
-	    case NC_UBYTE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.ubp[crd_idx_crr]); break;
-	    case NC_USHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.usp[crd_idx_crr]); break;
-	    case NC_UINT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.uip[crd_idx_crr]); break;
-	    case NC_INT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.i64p[crd_idx_crr]); break;
-	    case NC_UINT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.ui64p[crd_idx_crr]); break;
-	    case NC_STRING: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.sngp[crd_idx_crr]); break;
-	    default: nco_dfl_case_nc_type_err(); break;
-	    } /* end switch */
-	  } /* !PRN_DMN_VAR_NM */
-	} /* end loop over dimensions */
-      } /* end if PRN_DMN_IDX_CRD_VAL */
-      
-      /* Print all characters in last dimension each time penultimate dimension subscript changes to its start value */
-    lbl_chr_prn:
-      
-      if(var.type == NC_CHAR){
-        static nco_bool NULL_IN_SLAB;
-	static char *prn_sng;
-        static int chr_cnt;
-        static long dmn_sz;
-        static long var_dsk_srt;
-        static long var_dsk_end;
-	
-        /* At beginning of character array */
-	if(dmn_sbs_ram[var.nbr_dim-1] == 0L) {
-          dmn_sz=lmt_mult[var.nbr_dim-1]->dmn_cnt;
-	  prn_sng=(char *)nco_malloc((size_t)dmn_sz+1UL);
-	  var_dsk_srt=var_dsk;
-          var_dsk_end=var_dsk;
-          chr_cnt=0;
-          NULL_IN_SLAB=False;
-	} /* end if */
-	
-	/* In middle of array---save characters to prn_sng */
-	prn_sng[chr_cnt++]=var.val.cp[lmn];
-        if(var.val.cp[lmn] == '\0' && !NULL_IN_SLAB){
-	  var_dsk_end=var_dsk;
-	  NULL_IN_SLAB=True;
-	} /* end if */
-	
-        /* At end of character array */
-        if(dmn_sbs_ram[var.nbr_dim-1] == dmn_sz-1 ){
-	  if(NULL_IN_SLAB){
-	    (void)sprintf(var_sng,"%%s[%%ld--%%ld]=\"%%s\" %%s");
-          }else{
-            (void)sprintf(var_sng,"%%s[%%ld--%%ld]='%%s' %%s");
-	    prn_sng[chr_cnt]='\0';
-	    var_dsk_end=var_dsk;   
-          } /* end if */
-          if(FORTRAN_IDX_CNV){ 
-	    (void)nco_msa_c_2_f(var_sng);
-	    var_dsk_srt++; 
-	    var_dsk_end++; 
-          } /* end if */
-	  (void)fprintf(stdout,var_sng,var_nm,var_dsk_srt,var_dsk_end,prn_sng,unit_sng);
-	  (void)fprintf(stdout,"\n");
-	  (void)fflush(stdout);
-	  (void)nco_free(prn_sng);
-        } /* endif */
-	continue;
-      } /* end if NC_CHAR */
-      
-      /* Print variable name, index, and value */
-      if(PRN_DMN_VAR_NM) (void)sprintf(var_sng,"%%s[%%ld]=%s %%s\n",nco_typ_fmt_sng(var.type)); else (void)sprintf(var_sng,"%s\n",nco_typ_fmt_sng(var.type));
-      if(FORTRAN_IDX_CNV){
-	(void)nco_msa_c_2_f(var_sng);
-	var_dsk++;
-      } /* end if FORTRAN_IDX_CNV */
-      
-      if(PRN_DMN_VAR_NM){
-	switch(var.type){
-	case NC_FLOAT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.fp[lmn],unit_sng); break;
-	case NC_DOUBLE: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.dp[lmn],unit_sng); break;
-	case NC_SHORT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.sp[lmn],unit_sng); break;
-	case NC_INT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.ip[lmn],unit_sng); break;
-	case NC_CHAR: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.cp[lmn],unit_sng); break;
-	case NC_BYTE: (void)fprintf(stdout,var_sng,var_nm,var_dsk,(unsigned char)var.val.bp[lmn],unit_sng); break;
-	case NC_UBYTE: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.ubp[lmn],unit_sng); break;
-	case NC_USHORT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.usp[lmn],unit_sng); break;
-	case NC_UINT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.uip[lmn],unit_sng); break;
-	case NC_INT64: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.i64p[lmn],unit_sng); break;
-	case NC_UINT64: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.ui64p[lmn],unit_sng); break;
-	case NC_STRING: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.sngp[lmn],unit_sng); break;
-	default: nco_dfl_case_nc_type_err(); break;
-	} /* end switch */
-      }else{ /* !PRN_DMN_VAR_NM */
-	switch(var.type){
-	case NC_FLOAT: (void)fprintf(stdout,var_sng,var.val.fp[lmn],unit_sng); break;
-	case NC_DOUBLE: (void)fprintf(stdout,var_sng,var.val.dp[lmn],unit_sng); break;
-	case NC_SHORT: (void)fprintf(stdout,var_sng,var.val.sp[lmn],unit_sng); break;
-	case NC_INT: (void)fprintf(stdout,var_sng,var.val.ip[lmn],unit_sng); break;
-	case NC_CHAR: (void)fprintf(stdout,var_sng,var.val.cp[lmn],unit_sng); break;
-	case NC_BYTE: (void)fprintf(stdout,var_sng,(unsigned char)var.val.bp[lmn],unit_sng); break;
-	case NC_UBYTE: (void)fprintf(stdout,var_sng,var.val.ubp[lmn],unit_sng); break;
-	case NC_USHORT: (void)fprintf(stdout,var_sng,var.val.usp[lmn],unit_sng); break;
-	case NC_UINT: (void)fprintf(stdout,var_sng,var.val.uip[lmn],unit_sng); break;
-	case NC_INT64: (void)fprintf(stdout,var_sng,var.val.i64p[lmn],unit_sng); break;
-	case NC_UINT64: (void)fprintf(stdout,var_sng,var.val.ui64p[lmn],unit_sng); break;
-	case NC_STRING: (void)fprintf(stdout,var_sng,var.val.sngp[lmn],unit_sng); break;
-	default: nco_dfl_case_nc_type_err(); break;
-	} /* end switch */
-      } /* !PRN_DMN_VAR_NM */
-    } /* end loop over elements */
-    
-    (void)nco_free(mod_map_in);
-    (void)nco_free(mod_map_out);
-    (void)nco_free(dmn_sbs_ram);
-    (void)nco_free(dmn_sbs_dsk);
-    
-    /* Additional newline between consecutive variables or final variable and prompt */
-    (void)fprintf(stdout,"\n");
-    (void)fflush(stdout);
-  } /* end if variable has more than one dimension */
-  var.val.vp=nco_free(var.val.vp);
-  var.nm=(char *)nco_free(var.nm);
-  
-  if(MALLOC_UNITS_SNG) unit_sng=(char *)nco_free(unit_sng);
-  if(var.nbr_dim > 0){
-    (void)nco_free(dmn_id);
-    (void)nco_free(lmt_mult);
-    (void)nco_free(lmt);
-  } /* end if */
-  if(PRN_DMN_IDX_CRD_VAL && dlm_sng==NULL){
-    for(idx=0;idx<var.nbr_dim;idx++)
-      dim[idx].val.vp=nco_free(dim[idx].val.vp);
-    
-    dim=(dmn_sct *)nco_free(dim);
-  } /* end if */
-  
-} /* end nco_msa_prn_var_val() */
-
-void /* Initilaize lmt_all_sct's */ 
-nco_msa_lmt_all_int
-(int in_id,
- nco_bool MSA_USR_RDR,
- lmt_all_sct **lmt_all_lst,
- int nbr_dmn_fl,
- lmt_sct** lmt,
- int lmt_nbr)
-{
-  int idx;
-  int jdx;
-  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
-  long dmn_sz;
-  char dmn_nm[NC_MAX_NAME];
-
-  lmt_sct *lmt_rgl;
-  lmt_all_sct * lmt_all_crr;
-  
   (void)nco_inq(in_id,(int*)NULL,(int*)NULL,(int *)NULL,&rec_dmn_id);
-  
+
   for(idx=0;idx<nbr_dmn_fl;idx++){
     (void)nco_inq_dim(in_id,idx,dmn_nm,&dmn_sz);
-    lmt_all_crr=lmt_all_lst[idx]=(lmt_all_sct *)nco_malloc(sizeof(lmt_all_sct));
+    lmt_all_crr=lmt_all_lst[idx]=(lmt_msa_sct *)nco_malloc(sizeof(lmt_msa_sct));
     lmt_all_crr->lmt_dmn=(lmt_sct **)nco_malloc(sizeof(lmt_sct *));
     lmt_all_crr->dmn_nm=strdup(dmn_nm);
     lmt_all_crr->lmt_dmn_nbr=1;
@@ -1232,7 +571,7 @@ nco_msa_lmt_all_int
     lmt_all_crr->WRP=False;
     lmt_all_crr->BASIC_DMN=True;
     lmt_all_crr->MSA_USR_RDR=False;    
-    
+
     lmt_all_crr->lmt_dmn[0]=(lmt_sct *)nco_malloc(sizeof(lmt_sct)); 
     /* Dereference */
     lmt_rgl=lmt_all_crr->lmt_dmn[0]; 
@@ -1241,37 +580,41 @@ nco_msa_lmt_all_int
 
     /* NB: nco_lmt_evl() may alter this */
     if(idx==rec_dmn_id) lmt_rgl->is_rec_dmn=True; else lmt_rgl->is_rec_dmn=False;
-	  
+
     lmt_rgl->srt=0L;
     lmt_rgl->end=dmn_sz-1L;
     lmt_rgl->cnt=dmn_sz;
     lmt_rgl->srd=1L;
+    lmt_rgl->drn=1L;
+    lmt_rgl->flg_mro=False;
     lmt_rgl->min_sng=NULL;
     lmt_rgl->max_sng=NULL;
     lmt_rgl->srd_sng=NULL;
+    lmt_rgl->drn_sng=NULL;
+    lmt_rgl->mro_sng=NULL;
     lmt_rgl->rbs_sng=NULL;
     lmt_rgl->origin=0.0;
 
     /* A hack so we know structure has been initialized */
     lmt_rgl->lmt_typ=-1;
   } /* end loop over dimensions */
-  
+
   /* fxm: subroutine-ize this MSA code block for portability TODO nco926 */
   /* Add user specified limits lmt_all_lst */
   for(idx=0;idx<lmt_nbr;idx++){
     for(jdx=0;jdx<nbr_dmn_fl;jdx++){
       if(!strcmp(lmt[idx]->nm,lmt_all_lst[jdx]->dmn_nm)){   
-	lmt_all_crr=lmt_all_lst[jdx];
-	lmt_all_crr->BASIC_DMN=False;
-	if(lmt_all_crr->lmt_dmn[0]->lmt_typ == -1) { 
+        lmt_all_crr=lmt_all_lst[jdx];
+        lmt_all_crr->BASIC_DMN=False;
+        if(lmt_all_crr->lmt_dmn[0]->lmt_typ == -1) { 
           /* Free defualt limit set above structure first */
           lmt_all_crr->lmt_dmn[0]=(lmt_sct*)nco_lmt_free(lmt_all_crr->lmt_dmn[0]);
-	  lmt_all_crr->lmt_dmn[0]=lmt[idx]; 
-	}else{ 
-	  lmt_all_crr->lmt_dmn=(lmt_sct**)nco_realloc(lmt_all_crr->lmt_dmn,((lmt_all_crr->lmt_dmn_nbr)+1)*sizeof(lmt_sct *));
-	  lmt_all_crr->lmt_dmn[(lmt_all_crr->lmt_dmn_nbr)++]=lmt[idx];
-	} /* endif */
-	break;
+          lmt_all_crr->lmt_dmn[0]=lmt[idx]; 
+        }else{ 
+          lmt_all_crr->lmt_dmn=(lmt_sct**)nco_realloc(lmt_all_crr->lmt_dmn,((lmt_all_crr->lmt_dmn_nbr)+1)*sizeof(lmt_sct *));
+          lmt_all_crr->lmt_dmn[(lmt_all_crr->lmt_dmn_nbr)++]=lmt[idx];
+        } /* endif */
+        break;
       } /* end if */
     } /* end loop over dimensions */
     /* Dimension in limit not found */
@@ -1280,55 +623,55 @@ nco_msa_lmt_all_int
       nco_exit(EXIT_FAILURE);
     } /* end if err */
   } /* end loop over idx */       
-  
+
   /* fxm: subroutine-ize this MSA code block for portability TODO nco926 */
   for(idx=0;idx<nbr_dmn_fl;idx++){
     nco_bool flg_ovl;
-    
+
     /* NB: ncra/ncrcat have only one limit for record dimension so skip 
-       evaluation otherwise this messes up multi-file operation */
-    if(lmt_all_lst[idx]->lmt_dmn[0]->is_rec_dmn && (prg_get() == ncra || prg_get() == ncrcat)) continue;
-	
+    evaluation otherwise this messes up multi-file operation */
+    if(lmt_all_lst[idx]->lmt_dmn[0]->is_rec_dmn && (nco_prg_id_get() == ncra || nco_prg_id_get() == ncrcat)) continue;
+
     /* Split-up wrapped limits */   
     (void)nco_msa_wrp_splt(lmt_all_lst[idx]);
-    
+
     /* NB: Wrapped hyperslabs are dimensions broken into the "wrong" order,
-       e.g., from -d time,8,2 broken into -d time,8,9 -d time,0,2
-       WRP flag set only when list contains dimensions split as above */
+    e.g., from -d time,8,2 broken into -d time,8,9 -d time,0,2
+    WRP flag set only when list contains dimensions split as above */
     if(lmt_all_lst[idx]->WRP == True){
       /* Find and store size of output dim */  
       (void)nco_msa_clc_cnt(lmt_all_lst[idx]);       
       continue;
     } /* endif */
-    
+
     /* Single slab---no analysis needed */  
     if(lmt_all_lst[idx]->lmt_dmn_nbr == 1){
       (void)nco_msa_clc_cnt(lmt_all_lst[idx]);       
       continue;    
     } /* endif */
-    
+
     if(MSA_USR_RDR){
       lmt_all_lst[idx]->MSA_USR_RDR=True;
       /* Find and store size of output dimension */  
       (void)nco_msa_clc_cnt(lmt_all_lst[idx]);       
       continue;
     } /* endif */
-    
+
     /* Sort limits */
     (void)nco_msa_qsort_srt(lmt_all_lst[idx]);
     /* Check for overlap */
     flg_ovl=nco_msa_ovl(lmt_all_lst[idx]);  
     if(flg_ovl==False) lmt_all_lst[idx]->MSA_USR_RDR=True;
-    
+
     /* Find and store size of output dimension */  
     (void)nco_msa_clc_cnt(lmt_all_lst[idx]);       
-    if(dbg_lvl_get() > 1){
-      if(flg_ovl) (void)fprintf(stdout,"%s: dimension \"%s\" has overlapping hyperslabs\n",prg_nm_get(),lmt_all_lst[idx]->dmn_nm); else (void)fprintf(stdout,"%s: dimension \"%s\" has distinct hyperslabs\n",prg_nm_get(),lmt_all_lst[idx]->dmn_nm); 
+    if(nco_dbg_lvl_get() >= nco_dbg_fl){
+      if(flg_ovl) (void)fprintf(stdout,"%s: dimension \"%s\" has overlapping hyperslabs\n",nco_prg_nm_get(),lmt_all_lst[idx]->dmn_nm); else (void)fprintf(stdout,"%s: dimension \"%s\" has distinct hyperslabs\n",nco_prg_nm_get(),lmt_all_lst[idx]->dmn_nm); 
     } /* endif */
-    
+
   } /* end idx */    
-  
-} /* end nco_msa_lmt_all_int() */
+
+} /* end nco_msa_lmt_all_ntl() */
 
 void
 nco_msa_var_val_cpy /* [fnc] Copy variables data from input to output file */
@@ -1336,74 +679,844 @@ nco_msa_var_val_cpy /* [fnc] Copy variables data from input to output file */
  const int out_id, /* I [enm] netCDF output file ID */
  var_sct ** const var, /* I/O [sct] Variables to copy to output file */
  const int nbr_var,  /* I [nbr] Number of variables */
- lmt_all_sct * const * lmt_lst, /* I multi-hyperslab limits */
+ lmt_msa_sct * const * lmt_lst, /* I multi-hyperslab limits */
  int nbr_dmn_fl) /* I [nbr] Number of multi-hyperslab limits */
 {
   /* NB: nco_msa_var_val_cpy() contains OpenMP critical region */
   /* Purpose: Copy every variable in input variable structure list 
-     from input file to output file. Only data (not metadata) are copied. */
-  
+  from input file to output file. Only data (not metadata) are copied. */
+
   int idx;
   int jdx;
   int kdx;
   int nbr_dim;
   int dmn_idx; 
   long srd_prd=1L;  /* [nbr] Product of strides */
-  
+
   for(idx=0;idx<nbr_var;idx++){
 
     nbr_dim=var[idx]->nbr_dim;
 
-    /* GET VARIABLE DATA */
-  
-    /* Deal with scalar var */
+    /* Scalars */
     if(nbr_dim==0){
       var[idx]->val.vp=nco_malloc(nco_typ_lng(var[idx]->type));
       (void)nco_get_var1(in_id,var[idx]->id,0L,var[idx]->val.vp,var[idx]->type);
     }else{
-      lmt_all_sct **lmt_mult;
+      lmt_msa_sct **lmt_msa;
       lmt_sct **lmt;
-      
-      lmt_mult=(lmt_all_sct **)nco_malloc(nbr_dim*sizeof(lmt_all_sct *));
+
+      lmt_msa=(lmt_msa_sct **)nco_malloc(nbr_dim*sizeof(lmt_msa_sct *));
       lmt=(lmt_sct **)nco_malloc(nbr_dim*sizeof(lmt_sct *));
-      
-      /* Initialize lmt_mult with multi-limits from lmt_lst limits */
+
+      /* Initialize lmt_msa with multi-limits from lmt_lst limits */
       for(jdx=0;jdx<nbr_dim;jdx++){
-	for(kdx=0;kdx<nbr_dmn_fl;kdx++){
-	  if(!strcmp(var[idx]->dim[jdx]->nm,lmt_lst[kdx]->dmn_nm ) ){
-	    lmt_mult[jdx]=lmt_lst[kdx];
-	    break;
-	  } /* end if */
-	} /* end loop over jdx */
+        for(kdx=0;kdx<nbr_dmn_fl;kdx++){
+          if(!strcmp(var[idx]->dim[jdx]->nm,lmt_lst[kdx]->dmn_nm ) ){
+            lmt_msa[jdx]=lmt_lst[kdx];
+            break;
+          } /* end if */
+        } /* end loop over jdx */
       } /* end idx */
-      
+
       /* Call super-dooper recursive routine */
-      /* NB: nco_msa_rec_clc() with same nc_id contains OpenMP critical region */
-      var[idx]->val.vp=nco_msa_rec_clc(0,nbr_dim,lmt,lmt_mult,var[idx]);
-  
-      (void)nco_free(lmt_mult);
+      /* NB: nco_msa_rcr_clc() with same nc_id contains OpenMP critical region */
+      var[idx]->val.vp=nco_msa_rcr_clc((int)0,nbr_dim,lmt,lmt_msa,var[idx]);
+
+      (void)nco_free(lmt_msa);
       (void)nco_free(lmt);
     } /* end else nbr_dim */
-      
+
     /*(void)nco_msa_var_get(in_id,var[idx],lmt_lst,nbr_dmn_fl); */  
-  
-    /* PUT VARIABLE DATA */
-	  		  
+
+    /* Put variable data */
     if(var[idx]->nbr_dim == 0)
       nco_put_var1(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->val.vp,var[idx]->type);
     else{ /* end if variable is scalar */
       if(var[idx]->sz > 0){ /* Do nothing for zero-size record variables */
-	/* Is stride > 1? */
-	for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++) srd_prd*=var[idx]->srd[dmn_idx];
-
-	if(srd_prd == 1L)
-	  nco_put_vara(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->val.vp,var[idx]->type);
-	else
-	  nco_put_varm(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->xrf->srd,(long *)NULL,var[idx]->val.vp,var[idx]->type);
-	
+        /* Is stride > 1? */
+        for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++) srd_prd*=var[idx]->srd[dmn_idx];
+
+        if(srd_prd == 1L)
+          nco_put_vara(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->val.vp,var[idx]->type);
+        else
+          nco_put_varm(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->xrf->srd,(long *)NULL,var[idx]->val.vp,var[idx]->type);
+
       } /* end if var_sz */
     } /* end if variable is an array */
     var[idx]->val.vp=var[idx]->xrf->val.vp=nco_free(var[idx]->val.vp);
   } /* end loop over idx */
-    
+
 } /* end nco_msa_var_val_cpy() */
+
+void
+nco_msa_wrp_splt_trv   /* [fnc] Split wrapped dimensions (GTT version) */
+(dmn_trv_sct *dmn_trv) /* [sct] Dimension structure from GTT */
+{
+  /* Purpose: Same as nco_msa_wrp_splt() but applied to the Dimension structure from GTT 
+  Differences from nco_msa_wrp_splt() are marked "trv" 
+  Goal here is to replace a wrapped limit by 2 non-wrapped limits 
+  Wrapped hyperslabs are dimensions broken into the "wrong" order,e.g. from
+  -d time,8,2 broken into -d time,8,9 -d time,0,2 
+  WRP flag set only when list contains dimensions split as above
+
+  Tests:
+  ncks -d time,8,2 -v time -H ~/nco/data/in_grp.nc */
+
+  const char fnc_nm[]="nco_msa_wrp_splt_trv()"; /* [sng] Function name  */
+
+  int idx;
+  int jdx;
+  int size=dmn_trv->lmt_msa.lmt_dmn_nbr;  /* [nbr] Number of limit structures */
+  long dmn_sz_org=dmn_trv->sz;    /* [nbr] Size of dimension */
+  long srt;
+  long cnt;
+  long srd;
+  long kdx=0; 
+  lmt_sct *lmt_wrp;
+
+  for(idx=0;idx<size;idx++){
+
+    if(dmn_trv->lmt_msa.lmt_dmn[idx]->srt > dmn_trv->lmt_msa.lmt_dmn[idx]->end){
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s dimension <%s> has wrapped limits (%li->%li):\n",
+          nco_prg_nm_get(),fnc_nm,dmn_trv->nm_fll,dmn_trv->lmt_msa.lmt_dmn[idx]->srt,dmn_trv->lmt_msa.lmt_dmn[idx]->end);
+      }
+
+      lmt_wrp=(lmt_sct *)nco_malloc(2*sizeof(lmt_sct));
+
+      /* "trv": Initialize  */
+      (void)nco_lmt_init(&lmt_wrp[0]);
+      (void)nco_lmt_init(&lmt_wrp[1]);
+
+      srt=dmn_trv->lmt_msa.lmt_dmn[idx]->srt;
+      cnt=dmn_trv->lmt_msa.lmt_dmn[idx]->cnt;
+      srd=dmn_trv->lmt_msa.lmt_dmn[idx]->srd;
+
+      for(jdx=0;jdx<cnt;jdx++){
+        kdx=(srt+srd*jdx)%dmn_sz_org;
+        if(kdx<srt) break;
+      } /* end loop over jdx */
+
+      /* "trv": Instead of shallow copy in nco_msa_wrp_splt(), make a deep copy to the 2 new limits lmt_wrp */ 
+      (void)nco_lmt_cpy(dmn_trv->lmt_msa.lmt_dmn[idx],&lmt_wrp[0]);
+      (void)nco_lmt_cpy(dmn_trv->lmt_msa.lmt_dmn[idx],&lmt_wrp[1]);
+
+      lmt_wrp[0].srt=srt;
+
+      if(jdx == 1){
+        lmt_wrp[0].end=srt;
+        lmt_wrp[0].cnt=1L;
+        lmt_wrp[0].srd=1L;
+      }else{
+        lmt_wrp[0].end=srt+srd*(jdx-1);
+        lmt_wrp[0].cnt=jdx;
+        lmt_wrp[0].srd=srd;
+      } /* end else */
+
+      lmt_wrp[1].srt=kdx;
+      lmt_wrp[1].cnt=cnt-lmt_wrp[0].cnt;
+      if(lmt_wrp[1].cnt == 1L){
+        lmt_wrp[1].end=kdx;
+        lmt_wrp[1].srd=1L;
+      }else{
+        lmt_wrp[1].end=kdx+(lmt_wrp[1].cnt-1)*srd;
+        lmt_wrp[1].srd=srd;
+      } /* end else */
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s wrapped limits for <%s> found: ",nco_prg_nm_get(),fnc_nm,dmn_trv->nm_fll);
+        (void)fprintf(stdout,"%d:\n",dmn_trv->lmt_msa.lmt_dmn_nbr);
+      }
+
+
+      /* "trv": Insert 2 non-wrapped limits */ 
+
+      /* Current number of dimension limits for this table dimension  */
+      int lmt_dmn_nbr=dmn_trv->lmt_msa.lmt_dmn_nbr;
+
+      /* Index of new limit  */
+      int lmt_new_idx=idx+1;
+
+      /* Make space for 1 more limit  */
+      dmn_trv->lmt_msa.lmt_dmn=(lmt_sct **)nco_realloc(dmn_trv->lmt_msa.lmt_dmn,(lmt_dmn_nbr+1)*sizeof(lmt_sct *));
+
+      /* Alloc the extra limit  */
+      dmn_trv->lmt_msa.lmt_dmn[lmt_new_idx]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+      /* Initialize the extra limit */
+      (void)nco_lmt_init(dmn_trv->lmt_msa.lmt_dmn[lmt_new_idx]);
+
+      /* Insert the limits to table (allocated; idx was already there; lmt_new_idx was alloced here)   */
+      (void)nco_lmt_cpy(&lmt_wrp[0],dmn_trv->lmt_msa.lmt_dmn[idx]);
+      (void)nco_lmt_cpy(&lmt_wrp[1],dmn_trv->lmt_msa.lmt_dmn[lmt_new_idx]);
+
+      /* Update number of dimension limits for this table dimension  */
+      dmn_trv->lmt_msa.lmt_dmn_nbr++;
+
+      /* Update current index of dimension limits for this table dimension  */
+      dmn_trv->lmt_msa.lmt_crr++;
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s dimension <%s> new limits inserted (%li->%li) - (%li->%li):\n",
+          nco_prg_nm_get(),fnc_nm,dmn_trv->nm_fll,dmn_trv->lmt_msa.lmt_dmn[idx]->srt,dmn_trv->lmt_msa.lmt_dmn[idx]->end,
+          dmn_trv->lmt_msa.lmt_dmn[lmt_new_idx]->srt,dmn_trv->lmt_msa.lmt_dmn[lmt_new_idx]->end);
+      }
+
+    } /* endif srt > end */
+  } /* end loop over size */
+
+  /* Check if genuine wrapped co-ordinate */
+  if(size==1 && dmn_trv->lmt_msa.lmt_dmn_nbr==2){
+    dmn_trv->lmt_msa.WRP=True;
+  }
+
+} /* End nco_msa_wrp_splt_trv() */
+
+
+void 
+nco_msa_clc_cnt_trv     /* [fnc] Calculate size of  multiple hyperslab (GTT version) */ 
+(dmn_trv_sct *dmn_trv)  /* [sct] Dimension structure from GTT */
+{
+  /* Purpose: Same as nco_msa_clc_cnt() but applied to the Dimension structure from GTT */
+
+  int idx;
+  long cnt=0;
+  int size=dmn_trv->lmt_msa.lmt_dmn_nbr;   /* [nbr] Number of limit structures */
+  long *indices;
+  nco_bool *mnm;
+
+  /* Degenerate case */
+  if(size == 1){
+    dmn_trv->lmt_msa.dmn_cnt=dmn_trv->lmt_msa.lmt_dmn[0]->cnt;
+    return;
+  } /* end if */
+
+  /* If slabs remain in user-specified order */
+  if(dmn_trv->lmt_msa.MSA_USR_RDR){
+    for(idx=0;idx<size;idx++) cnt+=dmn_trv->lmt_msa.lmt_dmn[idx]->cnt;
+    dmn_trv->lmt_msa.dmn_cnt=cnt;
+  }else{
+    indices=(long *)nco_malloc(size*sizeof(long));
+    mnm=(nco_bool *)nco_malloc(size*sizeof(nco_bool));
+
+    /* Initialize indices with srt */
+    for(idx=0;idx<size;idx++) indices[idx]=dmn_trv->lmt_msa.lmt_dmn[idx]->srt;
+
+    while(nco_msa_min_idx(indices,mnm,size) != LONG_MAX){
+      for(idx=0;idx<size;idx++){
+        if(mnm[idx]){
+          indices[idx]+=dmn_trv->lmt_msa.lmt_dmn[idx]->srd;
+          if(indices[idx] > dmn_trv->lmt_msa.lmt_dmn[idx]->end) indices[idx]=-1;
+        } /* end if */
+      } /* end loop over idx */
+      cnt++;
+    } /* end while */
+    dmn_trv->lmt_msa.dmn_cnt=cnt;
+
+    indices=(long *)nco_free(indices);
+    mnm=(nco_bool  *)nco_free(mnm);
+  } /* end else */
+
+  return; 
+
+} /* End nco_msa_clc_cnt_trv() */
+
+void             
+nco_msa_qsort_srt_trv  /* [fnc] Sort limits by srt values (GTT version) */
+(dmn_trv_sct *dmn_trv) /* [sct] Dimension structure from GTT */
+{
+  /* Purpose: Same as nco_msa_qsort_srt() but applied to the Dimension structure from GTT */
+
+  lmt_sct **lmt;
+  long sz;           /* [nbr] Number of limit structures */
+
+  sz=dmn_trv->lmt_msa.lmt_dmn_nbr;
+  lmt=dmn_trv->lmt_msa.lmt_dmn;
+
+  if(sz <= 1) return;
+
+  (void)qsort(lmt,(size_t)sz,sizeof(lmt_sct *),nco_cmp_lmt_srt);
+
+} /* End nco_msa_qsort_srt_trv() */
+
+
+
+nco_bool                /* O [flg] Return true if limits overlap (GTT version) */
+nco_msa_ovl_trv         /* [fnc] See if limits overlap */ 
+(dmn_trv_sct *dmn_trv)  /* [sct] Dimension structure from GTT */
+{
+  /* Purpose: Same as nco_msa_ovl() but applied to the Dimension structure from GTT 
+  Return true if limits overlap NB: Assumes that limits have been sorted */
+
+  long idx;
+  long jdx;
+  long sz=dmn_trv->lmt_msa.lmt_dmn_nbr; /* [nbr] Number of limit structures */
+
+  lmt_sct **lmt;
+  /* defererence */
+  lmt=dmn_trv->lmt_msa.lmt_dmn;
+
+  for(idx=0; idx<sz; idx++)
+    for(jdx=idx+1; jdx<sz ;jdx++)
+      if( lmt[jdx]->srt <= lmt[idx]->end) return True;  
+
+  return False;
+
+} /* End nco_msa_ovl_trv() */
+
+void
+nco_msa_wrp_splt /* [fnc] Split wrapped dimensions */
+(lmt_msa_sct *lmt_lst)
+{
+  int idx;
+  int jdx;
+  int size=lmt_lst->lmt_dmn_nbr;
+  long dmn_sz_org=lmt_lst->dmn_sz_org;
+  long srt;
+  long cnt;
+  long srd;
+  long kdx=0; /*  */
+  lmt_sct *lmt_wrp;
+
+  for(idx=0;idx<size;idx++){
+
+    if(lmt_lst->lmt_dmn[idx]->srt > lmt_lst->lmt_dmn[idx]->end){
+
+      lmt_wrp=(lmt_sct *)nco_malloc(2*sizeof(lmt_sct));
+      srt=lmt_lst->lmt_dmn[idx]->srt;
+      cnt=lmt_lst->lmt_dmn[idx]->cnt;
+      srd=lmt_lst->lmt_dmn[idx]->srd;
+
+      for(jdx=0;jdx<cnt;jdx++){
+        kdx=(srt+srd*jdx)%dmn_sz_org;
+        if(kdx<srt) break;
+      } /* end loop over jdx */
+
+      lmt_wrp[0]=*(lmt_lst->lmt_dmn[idx]);
+      lmt_wrp[1]=*(lmt_lst->lmt_dmn[idx]);
+      lmt_wrp[0].srt=srt;
+
+      if(jdx == 1){
+        lmt_wrp[0].end=srt;
+        lmt_wrp[0].cnt=1L;
+        lmt_wrp[0].srd=1L;
+      }else{
+        lmt_wrp[0].end=srt+srd*(jdx-1);
+        lmt_wrp[0].cnt=jdx;
+        lmt_wrp[0].srd=srd;
+      } /* end else */
+
+      lmt_wrp[1].srt=kdx;
+      lmt_wrp[1].cnt=cnt-lmt_wrp[0].cnt;
+      if(lmt_wrp[1].cnt == 1L){
+        lmt_wrp[1].end=kdx;
+        lmt_wrp[1].srd=1L;
+      }else{
+        lmt_wrp[1].end=kdx+(lmt_wrp[1].cnt-1)*srd;
+        lmt_wrp[1].srd=srd;
+      } /* end else */
+
+      /* Insert new limits into array */
+      lmt_lst->lmt_dmn[idx]=lmt_wrp;
+      lmt_lst->lmt_dmn=(lmt_sct **)nco_realloc(lmt_lst->lmt_dmn,((lmt_lst->lmt_dmn_nbr)+1)*sizeof(lmt_sct *));
+      lmt_lst->lmt_dmn[(lmt_lst->lmt_dmn_nbr)++]=++lmt_wrp;
+    } /* endif srt > end */
+  } /* end loop over size */
+
+  /* Check if genuine wrapped co-ordinate */
+  if(size==1 && lmt_lst->lmt_dmn_nbr==2) lmt_lst->WRP=True;
+} /* end nco_msa_wrp_splt() */
+
+
+void
+nco_msa_wrp_splt_cpy    /* [fnc] Split wrapped dimensions (make deep copy of new wrapped limits) */
+(lmt_msa_sct *lmt_lst)  /* [sct] MSA */
+{
+  /* Purpose: Same as nco_msa_wrp_splt() but makes a deep copy of new wrapped limits
+  Differences from nco_msa_wrp_splt() are marked "trv" 
+  Goal here is to replace a wrapped limit by 2 non-wrapped limits 
+  Wrapped hyperslabs are dimensions broken into the "wrong" order,e.g. from
+  -d time,8,2 broken into -d time,8,9 -d time,0,2 
+  WRP flag set only when list contains dimensions split as above
+
+  Tests:
+  ncks -d time,8,2 -v time -H ~/nco/data/in_grp.nc
+  */
+
+  const char fnc_nm[]="nco_msa_wrp_splt_trv()"; /* [sng] Function name  */
+
+  int idx;
+  int jdx;
+  int size=lmt_lst->lmt_dmn_nbr;         /* [nbr] Number of limit structures */
+  long dmn_sz_org=lmt_lst->dmn_sz_org;   /* [nbr] Size of dimension */
+  long srt;
+  long cnt;
+  long srd;
+  long kdx=0; 
+  lmt_sct *lmt_wrp;
+
+  for(idx=0;idx<size;idx++){
+
+    if(lmt_lst->lmt_dmn[idx]->srt > lmt_lst->lmt_dmn[idx]->end){
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s dimension <%s> has wrapped limits (%li->%li):\n",
+          nco_prg_nm_get(),fnc_nm,lmt_lst->dmn_nm,lmt_lst->lmt_dmn[idx]->srt,lmt_lst->lmt_dmn[idx]->end);
+      }
+
+      lmt_wrp=(lmt_sct *)nco_malloc(2*sizeof(lmt_sct));
+
+      /* "trv": Initialize  */
+      (void)nco_lmt_init(&lmt_wrp[0]);
+      (void)nco_lmt_init(&lmt_wrp[1]);
+
+      srt=lmt_lst->lmt_dmn[idx]->srt;
+      cnt=lmt_lst->lmt_dmn[idx]->cnt;
+      srd=lmt_lst->lmt_dmn[idx]->srd;
+
+      for(jdx=0;jdx<cnt;jdx++){
+        kdx=(srt+srd*jdx)%dmn_sz_org;
+        if(kdx<srt) break;
+      } /* end loop over jdx */
+
+      /* "trv": Instead of shallow copy in nco_msa_wrp_splt(), make a deep copy to the 2 new limits lmt_wrp */ 
+      (void)nco_lmt_cpy(lmt_lst->lmt_dmn[idx],&lmt_wrp[0]);
+      (void)nco_lmt_cpy(lmt_lst->lmt_dmn[idx],&lmt_wrp[1]);
+
+      lmt_wrp[0].srt=srt;
+
+      if(jdx == 1){
+        lmt_wrp[0].end=srt;
+        lmt_wrp[0].cnt=1L;
+        lmt_wrp[0].srd=1L;
+      }else{
+        lmt_wrp[0].end=srt+srd*(jdx-1);
+        lmt_wrp[0].cnt=jdx;
+        lmt_wrp[0].srd=srd;
+      } /* end else */
+
+      lmt_wrp[1].srt=kdx;
+      lmt_wrp[1].cnt=cnt-lmt_wrp[0].cnt;
+      if(lmt_wrp[1].cnt == 1L){
+        lmt_wrp[1].end=kdx;
+        lmt_wrp[1].srd=1L;
+      }else{
+        lmt_wrp[1].end=kdx+(lmt_wrp[1].cnt-1)*srd;
+        lmt_wrp[1].srd=srd;
+      } /* end else */
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s wrapped limits for <%s> found: ",nco_prg_nm_get(),fnc_nm,lmt_lst->dmn_nm);
+        (void)fprintf(stdout,"current limits=%d:\n",lmt_lst->lmt_dmn_nbr);
+      }
+
+
+      /* "trv": Insert 2 non-wrapped limits */ 
+
+      /* Current number of dimension limits for this table dimension  */
+      int lmt_dmn_nbr=lmt_lst->lmt_dmn_nbr;
+
+      /* Index of new limit  */
+      int lmt_new_idx=idx+1;
+
+      /* Make space for 1 more limit  */
+      lmt_lst->lmt_dmn=(lmt_sct **)nco_realloc(lmt_lst->lmt_dmn,(lmt_dmn_nbr+1)*sizeof(lmt_sct *));
+
+      /* Alloc the extra limit  */
+      lmt_lst->lmt_dmn[lmt_new_idx]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+      /* Initialize the extra limit */
+      (void)nco_lmt_init(lmt_lst->lmt_dmn[lmt_new_idx]);
+
+      /* Insert the limits to table (allocated; idx was already there; lmt_new_idx was alloced here)   */
+      (void)nco_lmt_cpy(&lmt_wrp[0],lmt_lst->lmt_dmn[idx]);
+      (void)nco_lmt_cpy(&lmt_wrp[1],lmt_lst->lmt_dmn[lmt_new_idx]);
+
+      /* Update number of dimension limits for this table dimension  */
+      lmt_lst->lmt_dmn_nbr++;
+
+      /* Update current index of dimension limits for this table dimension  */
+      lmt_lst->lmt_crr++;
+
+      if(nco_dbg_lvl_get() == nco_dbg_old){
+        (void)fprintf(stdout,"%s: INFO %s dimension <%s> new limits inserted (%li->%li) - (%li->%li):\n",
+          nco_prg_nm_get(),fnc_nm,lmt_lst->dmn_nm,lmt_lst->lmt_dmn[idx]->srt,lmt_lst->lmt_dmn[idx]->end,
+          lmt_lst->lmt_dmn[lmt_new_idx]->srt,lmt_lst->lmt_dmn[lmt_new_idx]->end);
+      }
+
+    } /* endif srt > end */
+  } /* end loop over size */
+
+  /* Check if genuine wrapped co-ordinate */
+  if(size == 1 && lmt_lst->lmt_dmn_nbr == 2) lmt_lst->WRP=True;
+
+} /* End nco_msa_wrp_splt_trv() */
+
+void
+nco_cpy_var_val_mlt_lmt_trv         /* [fnc] Copy variable data from input to output file */
+(const int in_id,                   /* I [id] Input group ID */
+ const int out_id,                  /* I [id] Output group ID */
+ FILE * const fp_bnr,               /* I [flg] Unformatted binary output file handle */
+ const md5_sct * const md5,         /* I [flg] MD5 Configuration */
+ const trv_sct * const var_trv)     /* I [sct] Object to write (variable) */
+{
+  /* Purpose: Copy variable data from input netCDF file to output netCDF file 
+  Routine truncates dimensions in variable definition in output file according to user-specified limits.
+  Routine copies variable-by-variable, old-style, used only by ncks 
+
+  "GTT" changes from the original nco_cpy_var_val_mlt_lmt():
+   Object to write (variable) is passed as parameter
+  */
+
+  char var_nm[NC_MAX_NAME+1];      /* [sng] Variable name (local copy of object name) */ 
+
+  int nbr_dim;                     /* [nbr] Number of dimensions */
+  int nbr_dmn_in;                  /* [nbr] Number of dimensions */
+  int nbr_dmn_out;                 /* [nbr] Number of dimensions */
+  int var_in_id;                   /* [nbr] Variable ID */
+  int var_out_id;                  /* [nbr] Variable ID */
+
+  long *dmn_map_cnt;               /* [nbr] Contiguous vector of lengths of hyperslab on disk */
+  long *dmn_map_srt;               /* [nbr] Contiguous vector of indices to start of hyperslab on disk */
+
+  long var_sz=1L;                  /* [nbr] Variable size */
+
+  nc_type var_typ;                 /* [nbr] Variable type  */
+
+  var_sct vara;                    /* [sct] Variable structure, to hold basic data in_id, var_id, nctype for recusive routine */
+
+  void *void_ptr;                  /* [nbr] Pointer to data */
+
+  lmt_msa_sct **lmt_msa=NULL_CEWI; /* [sct] MSA Limits for only for variable dimensions  */          
+  lmt_sct **lmt=NULL_CEWI;         /* [sct] Auxiliary Limit used in MSA */
+
+  assert(nco_obj_typ_var == var_trv->nco_typ);
+
+  /* Local copy of object name */ 
+  strcpy(var_nm,var_trv->nm);                
+
+  /* Get ID for requested variable from both files */
+  (void)nco_inq_varid(in_id,var_nm,&var_in_id);
+  (void)nco_inq_varid(out_id,var_nm,&var_out_id);
+
+  /* Get type and number of dimensions for variable */
+  (void)nco_inq_var(out_id,var_out_id,(char *)NULL,&var_typ,&nbr_dmn_out,(int *)NULL,(int *)NULL);
+  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_typ,&nbr_dmn_in,(int *)NULL,(int *)NULL);
+  if(nbr_dmn_out != nbr_dmn_in){
+    (void)fprintf(stderr,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file\nHINT: When using -A (append) option, all appended variables must be the same rank in the input file as in the output file. The ncwa operator is useful at ridding variables of extraneous (size = 1) dimensions. See how at http://nco.sf.net/nco.html#ncwa\nIf you wish to completely replace the existing output file definition and values of the variable %s by those in t [...]
+    nco_exit(EXIT_FAILURE);
+  } /* endif */
+  nbr_dim=nbr_dmn_out;
+
+  /* Deal with scalar variables */
+  if(nbr_dim == 0){
+    var_sz=1L;
+    void_ptr=nco_malloc(nco_typ_lng(var_typ));
+
+    /* Read */
+    (void)nco_get_var1(in_id,var_in_id,0L,void_ptr,var_typ);
+
+    /* Write */
+    (void)nco_put_var1(out_id,var_out_id,0L,void_ptr,var_typ);
+
+    /* Perform MD5 digest of input and output data if requested */
+    if(md5)
+      if(md5->dgs)
+	(void)nco_md5_chk(md5,var_nm,var_sz*nco_typ_lng(var_typ),out_id,(long *)NULL,(long *)NULL,void_ptr);
+
+    /* Write unformatted binary data */
+    if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
+
+    /* Done */
+    (void)nco_free(void_ptr);
+    return;
+  } /* End Deal with scalar variables */
+
+  /* Allocate local MSA */
+  lmt_msa=(lmt_msa_sct **)nco_malloc(var_trv->nbr_dmn*sizeof(lmt_msa_sct *));
+  lmt=(lmt_sct **)nco_malloc(var_trv->nbr_dmn*sizeof(lmt_sct *));
+
+   /* Copy from table to local MSA */
+  (void)nco_cpy_msa_lmt(var_trv,&lmt_msa);
+  
+  /* Dimension vectors */
+  dmn_map_cnt=(long *)nco_malloc(nbr_dim*sizeof(long));
+  dmn_map_srt=(long *)nco_malloc(nbr_dim*sizeof(long));
+
+  /* Loop dimensions */
+  for(int dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
+
+    /* Store in arrays */
+    dmn_map_cnt[dmn_idx]=lmt_msa[dmn_idx]->dmn_cnt;
+    dmn_map_srt[dmn_idx]=0L;
+  } /* End loop dimensions */
+
+
+  /* Initalize variable structure with in_id, var_in_id, nctype, etc., so recursive routine can read data */
+  vara.nm=var_nm;
+  vara.id=var_in_id;
+  vara.nc_id=in_id;
+  vara.type=var_typ;
+
+  /* Call super-dooper recursive routine */
+  void_ptr=nco_msa_rcr_clc((int)0,nbr_dim,lmt,lmt_msa,&vara);
+
+  /* After MSA, we have the size to write */
+  var_sz=vara.sz;
+
+  /* Write variable */
+  (void)nco_put_vara(out_id,var_out_id,dmn_map_srt,dmn_map_cnt,void_ptr,var_typ);
+
+  /* Perform MD5 digest of input and output data if requested */
+  if(md5)
+    if(md5->dgs)
+      (void)nco_md5_chk(md5,var_nm,var_sz*nco_typ_lng(var_typ),out_id,dmn_map_srt,dmn_map_cnt,void_ptr);
+
+  /* Write unformatted binary data */
+  if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
+
+  /* Free */
+  (void)nco_free(void_ptr);
+  (void)nco_free(dmn_map_cnt);
+  (void)nco_free(dmn_map_srt);
+
+  /* Free  */
+  (void)nco_lmt_msa_free(var_trv->nbr_dmn,lmt_msa);
+  lmt=(lmt_sct **)nco_free(lmt);
+
+  return;
+} /* end nco_cpy_var_val_mlt_lmt_trv() */
+
+void
+nco_cpy_msa_lmt                     /* [fnc] Copy MSA struct from table to local function (print or write) */
+(const trv_sct * const var_trv,     /* I [sct] Object to write (variable) */
+ lmt_msa_sct ***lmt_msa)            /* O [sct] MSA array for dimensions */
+{
+  /* Purpose: Deep copy MSA structs from table to local array used in print or write */
+
+  /* Loop dimensions for object (variable)  */
+  for(int dmn_idx_var=0;dmn_idx_var<var_trv->nbr_dmn;dmn_idx_var++) {
+
+    (*lmt_msa)[dmn_idx_var]=(lmt_msa_sct *)nco_malloc(sizeof(lmt_msa_sct));
+
+    /* This dimension has a coordinate variable */
+    if (var_trv->var_dmn[dmn_idx_var].is_crd_var == True){
+
+      /* Get number of limits */
+      int lmt_dmn_nbr=var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.lmt_dmn_nbr;
+
+      /* Initialize to NULL the limit array */
+      (*lmt_msa)[dmn_idx_var]->lmt_dmn=NULL;
+
+      /* If limits, make space for them */
+      if (lmt_dmn_nbr) (*lmt_msa)[dmn_idx_var]->lmt_dmn=(lmt_sct **)nco_malloc(lmt_dmn_nbr*sizeof(lmt_sct *));
+
+      /* And copy the structure made while building limits  */
+      (*lmt_msa)[dmn_idx_var]->dmn_nm=strdup(var_trv->var_dmn[dmn_idx_var].crd->nm);
+
+      (*lmt_msa)[dmn_idx_var]->BASIC_DMN=var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.BASIC_DMN;
+      (*lmt_msa)[dmn_idx_var]->dmn_cnt=var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.dmn_cnt;
+      (*lmt_msa)[dmn_idx_var]->dmn_sz_org=var_trv->var_dmn[dmn_idx_var].crd->sz;
+      (*lmt_msa)[dmn_idx_var]->lmt_dmn_nbr=var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.lmt_dmn_nbr;
+      (*lmt_msa)[dmn_idx_var]->MSA_USR_RDR=var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.MSA_USR_RDR;
+      (*lmt_msa)[dmn_idx_var]->WRP=var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.WRP;
+
+      /* Loop needed limits */
+      for(int lmt_idx=0;lmt_idx<lmt_dmn_nbr;lmt_idx++){
+
+        /* Alloc new limit */
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[lmt_idx]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+        /* Initialize NULL/invalid */
+        (void)nco_lmt_init((*lmt_msa)[dmn_idx_var]->lmt_dmn[lmt_idx]);
+
+        /* Deep copy from table to local array */ 
+        (void)nco_lmt_cpy(var_trv->var_dmn[dmn_idx_var].crd->lmt_msa.lmt_dmn[lmt_idx],(*lmt_msa)[dmn_idx_var]->lmt_dmn[lmt_idx]);
+
+      } /* End Loop needed limits */
+
+
+      /* No limits? ...Make a limit to read all */
+      if ( (*lmt_msa)[dmn_idx_var]->lmt_dmn_nbr == 0){
+
+        if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"Warning...no limit zone\n "); 
+
+        /* Alloc 1 dummy limit */
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn_nbr=1;
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn=(lmt_sct **)nco_malloc(1*sizeof(lmt_sct *));
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+        /* Initialize NULL/invalid */
+        (void)nco_lmt_init((*lmt_msa)[dmn_idx_var]->lmt_dmn[0]);
+
+        /* And set start,count,stride to read everything ...major success */
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]->srt=0;
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]->cnt=(*lmt_msa)[dmn_idx_var]->dmn_sz_org;
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]->srd=1;
+
+      } /* Make a limit to read all */
+    } /* If there are limits for this variable dimension, get MSA from table */
+
+    /* This dimension does not has a coordinate variable, it must have a unique dimension pointer */
+    else if (var_trv->var_dmn[dmn_idx_var].is_crd_var == False){
+
+      /* Get number of limits */
+      int lmt_dmn_nbr=var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.lmt_dmn_nbr;
+
+      /* If limits, make space for them */
+      if (lmt_dmn_nbr) (*lmt_msa)[dmn_idx_var]->lmt_dmn=(lmt_sct **)nco_malloc(lmt_dmn_nbr*sizeof(lmt_sct *));
+
+      /* And copy the structure made while building limits  */
+      (*lmt_msa)[dmn_idx_var]->dmn_nm=strdup(var_trv->var_dmn[dmn_idx_var].ncd->nm);
+
+      (*lmt_msa)[dmn_idx_var]->BASIC_DMN=var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.BASIC_DMN;
+      (*lmt_msa)[dmn_idx_var]->dmn_cnt=var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.dmn_cnt;
+      (*lmt_msa)[dmn_idx_var]->dmn_sz_org=var_trv->var_dmn[dmn_idx_var].ncd->sz;
+      (*lmt_msa)[dmn_idx_var]->lmt_dmn_nbr=var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.lmt_dmn_nbr;
+      (*lmt_msa)[dmn_idx_var]->MSA_USR_RDR=var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.MSA_USR_RDR;
+      (*lmt_msa)[dmn_idx_var]->WRP=var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.WRP;
+
+      /* Loop needed limits */
+      for(int lmt_idx=0;lmt_idx<lmt_dmn_nbr;lmt_idx++){
+
+        /* Alloc new limit */
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[lmt_idx]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+        /* Initialize NULL/invalid */
+        (void)nco_lmt_init((*lmt_msa)[dmn_idx_var]->lmt_dmn[lmt_idx]);
+
+        /* Deep copy from table to local array */ 
+        (void)nco_lmt_cpy(var_trv->var_dmn[dmn_idx_var].ncd->lmt_msa.lmt_dmn[lmt_idx],(*lmt_msa)[dmn_idx_var]->lmt_dmn[lmt_idx]);
+
+      } /* End Loop needed limits */
+
+      /* No limits? ...Make a limit to read all */
+      if ((*lmt_msa)[dmn_idx_var]->lmt_dmn_nbr == 0){
+
+        if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"Warning...no limit zone\n "); 
+
+        /* Alloc 1 dummy limit */
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn_nbr=1;
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn=(lmt_sct **)nco_malloc(1*sizeof(lmt_sct *));
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]=(lmt_sct *)nco_malloc(sizeof(lmt_sct));
+
+        /* Initialize NULL/invalid */
+        (void)nco_lmt_init((*lmt_msa)[dmn_idx_var]->lmt_dmn[0]);
+
+        /* And set start,count,stride to read everything ...major success */
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]->srt=0;
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]->cnt=(*lmt_msa)[dmn_idx_var]->dmn_sz_org;
+        (*lmt_msa)[dmn_idx_var]->lmt_dmn[0]->srd=1;
+
+      } /* Make a limit to read all */
+    } /* If there are limits for this variable dimension, get MSA from table */
+
+    /* This dimension must have either a coordinate or a dimension pointer */
+    else
+    {
+      assert(0);
+    }
+
+  } /* Loop dimensions for object (variable)  */
+
+} /* nco_cpy_msa_lmt() */
+
+void
+nco_msa_var_get_trv                 /* [fnc] Get variable data from disk taking account of multihyperslabs */
+(const int nc_id,                   /* I [ID] netCDF file ID */
+ var_sct *var_in,                   /* I/O [sct] Variable */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{
+  int nbr_dim;
+  int grp_id;
+
+  lmt_msa_sct **lmt_msa;
+  lmt_sct **lmt;
+  trv_sct *var_trv;
+
+  nc_type typ_tmp;
+
+  void *void_ptr;
+
+  /* Obtain variable GTT object using full variable name */
+  var_trv=trv_tbl_var_nm_fll(var_in->nm_fll,trv_tbl);
+  assert(var_trv);
+
+  /* Obtain group ID using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,var_trv->grp_nm_fll,&grp_id);
+
+  nbr_dim=var_in->nbr_dim;	
+  var_in->nc_id=grp_id; 
+
+  assert(nbr_dim == var_trv->nbr_dmn);
+  assert(strcmp(var_in->nm_fll,var_trv->nm_fll) == 0);
+
+  /* Scalars */
+  if(nbr_dim == 0){
+    var_in->val.vp=nco_malloc(nco_typ_lng(var_in->typ_dsk));
+    (void)nco_get_var1(var_in->nc_id,var_in->id,0L,var_in->val.vp,var_in->typ_dsk);
+    goto do_upk;
+  } /* end if scalar */
+
+  /* Allocate local MSA */
+  lmt_msa=(lmt_msa_sct **)nco_malloc(var_trv->nbr_dmn*sizeof(lmt_msa_sct *));
+  lmt=(lmt_sct **)nco_malloc(var_trv->nbr_dmn*sizeof(lmt_sct *));
+
+  /* Copy from table to local MSA */
+  (void)nco_cpy_msa_lmt(var_trv,&lmt_msa);
+
+  /* Call super-dooper recursive routine */
+  typ_tmp=var_in->type;
+  var_in->type=var_in->typ_dsk; 
+  void_ptr=nco_msa_rcr_clc((int)0,nbr_dim,lmt,lmt_msa,var_in);
+
+  var_in->type=typ_tmp;
+  var_in->val.vp=void_ptr;
+
+  /* Free  */
+  (void)nco_lmt_msa_free(var_trv->nbr_dmn,lmt_msa);
+  lmt=(lmt_sct **)nco_free(lmt);
+
+do_upk:
+  /* Following code copied from nco_var_get() */
+
+  if(var_in->pck_dsk) var_in=nco_cnv_mss_val_typ(var_in,var_in->typ_dsk);
+
+  /* Type of variable and missing value in memory are now same as type on disk */
+  var_in->type=var_in->typ_dsk; /* [enm] Type of variable in RAM */
+
+  /* Packing in RAM is now same as packing on disk pck_dbg 
+  fxm: This nco_pck_dsk_inq() call is never necessary for non-packed variables */
+  (void)nco_pck_dsk_inq(grp_id,var_in);
+
+  /* Packing/Unpacking */
+  if(nco_is_rth_opr(nco_prg_id_get())){
+    /* Arithmetic operators must unpack variables before performing arithmetic
+    Otherwise arithmetic will produce garbage results */
+    /* 20050519: Not sure why I originally made nco_var_upk() call SMP-critical
+    20050629: Making this region multi-threaded causes no problems */
+    if(var_in->pck_dsk) var_in=nco_var_upk(var_in);
+  } /* endif arithmetic operator */
+
+  return;
+} /* nco_msa_var_get_trv() */
+
+
+void
+nco_lmt_msa_free                    /* [fnc] Free MSA */
+(const int nbr_dmn,                 /* I [nbr] Number of dimensions */
+ lmt_msa_sct **lmt_msa)             /* I [sct] MSA */
+{
+  /* Free  */
+  for(int idx_dmn=0;idx_dmn<nbr_dmn;idx_dmn++) {
+    lmt_msa[idx_dmn]->dmn_nm=(char *)nco_free(lmt_msa[idx_dmn]->dmn_nm);
+    for(int lmt_idx=0;lmt_idx<lmt_msa[idx_dmn]->lmt_dmn_nbr;lmt_idx++){
+      lmt_msa[idx_dmn]->lmt_dmn[lmt_idx]=nco_lmt_free(lmt_msa[idx_dmn]->lmt_dmn[lmt_idx]);
+    }
+    lmt_msa[idx_dmn]->lmt_dmn=(lmt_sct **)nco_free(lmt_msa[idx_dmn]->lmt_dmn);
+    lmt_msa[idx_dmn]=(lmt_msa_sct *)nco_free(lmt_msa[idx_dmn]);
+  }
+  lmt_msa=(lmt_msa_sct **)nco_free(lmt_msa);
+}
+
diff --git a/src/nco/nco_msa.h b/src/nco/nco_msa.h
index 47af664..a83ed04 100644
--- a/src/nco/nco_msa.h
+++ b/src/nco/nco_msa.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_msa.h,v 1.37 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_msa.h,v 1.80 2013/09/11 22:07:11 pvicente Exp $ */
 
 /* Purpose: Multi-slabbing algorithm */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -29,52 +29,40 @@
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_bnr.h" /* Binary write utilities */
 #include "nco_ctl.h" /* Program flow control functions */
+#include "nco_grp_utl.h" /* Group utilities */
+#include "nco_lmt.h" /* Hyperslab limits */
 #include "nco_mmr.h" /* Memory management */
-#include "nco_prn.h" /* print format functions */
-#include "nco_sng_utl.h" /* sng_ascii_trn */
-#include "nco_lmt.h"     /* free lmt_sct */
+#include "nco_prn.h" /* Print variables, attributes, metadata */
+#include "nco_sng_utl.h" /* String utilities */
+#include "nco_var_utl.h" /* Variable utilities */
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
-
-void
-nco_cpy_var_val_mlt_lmt /* [fnc] Copy variable data from input to output file */
-(const int in_id, /* I [id] netCDF input file ID */
- const int out_id, /* I [id] netCDF output file ID */
- FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
- const nco_bool NCO_BNR_WRT, /* I [flg] Write binary file */
- char *var_nm, /* I [sng] Variable name */
- lmt_all_sct * const * lmt_lst, /* I multi-hyperslab limits */
- int nbr_dmn_fl); /* I [nbr] Number of multi-hyperslab limits */
   
-void 
-nco_msa_c_2_f /* [fnc] Replace brackets with parentheses in a string */
-(char *sng); /* [sng] String to change from C to Fortran notation */
-
 nco_bool /* if false then we are at the end of the slab */
 nco_msa_clc_idx
 (nco_bool NORMALIZE,         /* Return indices of slab within the slab */
- lmt_all_sct *lmt_a,         /* I list of lmts for each dimension  */
+ lmt_msa_sct *lmt_a,         /* I list of lmts for each dimension  */
  long *indices,          /* I/O so routine can keep track of where its at */
  lmt_sct* lmt_out,      /* O  output hyperslab */
- int *slb );             /* slab which the above limit refers to */ 
+ int *slb);             /* slab which the above limit refers to */ 
 
 void 
 nco_msa_prn_idx    /* [fnc] Print multiple hyperslab indices  */
-(lmt_all_sct * lmt_lst); 
+(lmt_msa_sct * lmt_lst); 
   
 void 
 nco_msa_clc_cnt    /* [fnc] Calculate size of  multiple hyperslab */ 
-(lmt_all_sct *lmt_lst); 
+(lmt_msa_sct *lmt_lst); 
 
 void
 nco_msa_wrp_splt /* [fnc] Split wrapped dimensions */
-(lmt_all_sct *lmt_lst);
+(lmt_msa_sct *lmt_lst);
   
 nco_bool           /* O return true if limits overlap */
 nco_msa_ovl        /* [fnc] see if limits overlap */ 
-(lmt_all_sct *lmt_lst);
+(lmt_msa_sct *lmt_lst);
 
 int               /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */ 
 nco_cmp_lmt_srt   /* [fnc]  Sort comparison operator */
@@ -83,24 +71,23 @@ nco_cmp_lmt_srt   /* [fnc]  Sort comparison operator */
 
 void             
 nco_msa_qsort_srt  /* [fnc] sort limits by srt values  */
-(lmt_all_sct *lmt_lst);
+(lmt_msa_sct *lmt_lst);
 
 void      
-nco_msa_lmt_all_int     /* [fnc] Initilaize lmt_all_sct's */ 
+nco_msa_lmt_all_ntl     /* [fnc] Initilaize lmt_msa_sct's */ 
 (int in_id,
  nco_bool MSA_USR_RDR,
- lmt_all_sct **lmt_all_lst,
+ lmt_msa_sct **lmt_all_lst,
  int nbr_dmn_fl,
  lmt_sct** lmt,
  int lmt_nbr);
 
-
 void *          /* O pointer to malloced slab */
-nco_msa_rec_clc /* Multi slab algorithm (recursive routine) */
+nco_msa_rcr_clc /* Multi slab algorithm (recursive routine) */
 (int i,             /* current depth, we start at 0 */
  int imax,          /* maximium depth (i.e the number of dims in variable (does not change)*/		 
  lmt_sct **lmt,    /* limits of the current hyperslab these change as we recurse */
- lmt_all_sct **lmt_lst, /* list of limits in each dimension (this remains STATIC as we recurse */
+ lmt_msa_sct **lmt_lst, /* list of limits in each dimension (this remains STATIC as we recurse */
  var_sct *var1);    /* Infor for routine to read var (should not change */
   
 long /* O [idx] Minimum value */
@@ -110,30 +97,18 @@ nco_msa_min_idx /* [fnc] Find minimum values in current and return minimum value
  const int size); /* I [nbr] Size of current and min */
 
 void            
-nco_msa_ram_2_dsk   /* [fnc] convert hyperlsab indices into indices relative to disk */ 
+nco_msa_ram_2_dsk   /* [fnc] Convert hyperlsab indices into indices relative to disk */ 
 (long *dmn_sbs_ram,   /* Input indices */
- lmt_all_sct** lmt_mult,   /* input hyperlab limits     */
+ lmt_msa_sct** lmt_msa,   /* input hyperlab limits     */
  int nbr_dmn,         /* number of dimensions */    
  long *dmn_sbs_dsk,  /* Output - indices relative to disk */
- nco_bool FREE);        /* Free static space on last call */
-
-void
-nco_msa_prn_var_val   /* [fnc] Print variable data */
-(const int in_id, /* I [id] netCDF input file ID */
- const char * const var_nm, /* I [sng] Variable name */
- lmt_all_sct *  const * lmt_lst, /* I [sct] Dimension limits */
- const int lmt_nbr, /* I [nbr] number of dimensions with user-specified limits */
- char * const dlm_sng, /* I [sng] User-specified delimiter string, if any */
- const nco_bool FORTRAN_IDX_CNV, /* I [flg] Hyperslab indices obey Fortran convention */
- const nco_bool PRN_DMN_UNITS, /* I [flg] Print units attribute, if any */
- const nco_bool PRN_DMN_IDX_CRD_VAL, /* I [flg] Print dimension/coordinate indices/values */
- const nco_bool PRN_DMN_VAR_NM); /* I [flg] Print dimension/variable names */
+ nco_bool flg_free);        /* Free static space on last call */
 
 void
 nco_msa_var_get  /* [fnc] Get var data from disk taking accound of multihyperslabs */
 (const int in_id,  /* I [id] netCDF input file ID */
  var_sct *var_in, 
- lmt_all_sct * const * lmt_lst, /* I multi-hyperslab limits */
+ lmt_msa_sct * const * lmt_lst, /* I multi-hyperslab limits */
  int nbr_dmn_fl); /* I [nbr] Number of multi-hyperslab limits */
 
 void
@@ -142,9 +117,53 @@ nco_msa_var_val_cpy /* [fnc] Copy variables data from input to output file */
  const int out_id, /* I [enm] netCDF output file ID */
  var_sct ** const var, /* I/O [sct] Variables to copy to output file */
  const int nbr_var,  /* I [nbr] Number of variables */
- lmt_all_sct * const * lmt_lst, /* I multi-hyperslab limits */
+ lmt_msa_sct * const * lmt_lst, /* I multi-hyperslab limits */
  int nbr_dmn_fl); /* I [nbr] Number of multi-hyperslab limits */
 
+void
+nco_msa_wrp_splt_trv    /* [fnc] Split wrapped dimensions (traversal table version) */
+(dmn_trv_sct *dmn_trv); /* [sct] Dimension structure from traversal table */
+
+void 
+nco_msa_clc_cnt_trv     /* [fnc] Calculate size of  multiple hyperslab (traversal table version) */ 
+(dmn_trv_sct *dmn_trv); /* [sct] Dimension structure from traversal table */
+
+nco_bool                /* O [flg] return true if limits overlap (traversal table version) */
+nco_msa_ovl_trv         /* [fnc] See if limits overlap */ 
+(dmn_trv_sct *dmn_trv); /* [sct] Dimension structure from traversal table */
+
+void             
+nco_msa_qsort_srt_trv   /* [fnc] Sort limits by srt values (traversal table version) */
+(dmn_trv_sct *dmn_trv); /* [sct] Dimension structure from traversal table */
+
+void
+nco_msa_wrp_splt_cpy    /* [fnc] Split wrapped dimensions (make deep copy of new wrapped limits) */
+(lmt_msa_sct *lmt_lst); /* [sct] MSA */
+
+void
+nco_cpy_var_val_mlt_lmt_trv         /* [fnc] Copy variable data from input to output file */
+(const int in_id,                   /* I [id] netCDF input file ID */
+ const int out_id,                  /* I [id] netCDF output file ID */
+ FILE * const fp_bnr,               /* I [flg] Unformatted binary output file handle */
+ const md5_sct * const md5,         /* I [flg] MD5 Configuration */
+ const trv_sct * const var_trv);    /* I [sct] Object to write (variable) */
+
+void
+nco_cpy_msa_lmt                     /* [fnc] Copy MSA struct from table to local function (print or write) */
+(const trv_sct * const var_trv,     /* I [sct] Object to write (variable) */
+ lmt_msa_sct ***lmt_msa);           /* O [sct] MSA array for dimensions */
+
+void
+nco_msa_var_get_trv                 /* [fnc] Get variable data from disk taking account of multihyperslabs */
+(const int nc_id,                   /* I [ID] netCDF file ID */
+ var_sct *var_in,                   /* I/O [sct] Variable */
+ const trv_tbl_sct * const trv_tbl);/* I [sct] GTT (Group Traversal Table) */
+
+void
+nco_lmt_msa_free                    /* [fnc] Free MSA */
+(const int nbr_dmn,                 /* I [nbr] Number of dimensions */
+ lmt_msa_sct **lmt_msa);            /* I [sct] MSA */
+
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/nco_mss_val.c b/src/nco/nco_mss_val.c
index eaae482..5993968 100644
--- a/src/nco/nco_mss_val.c
+++ b/src/nco/nco_mss_val.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_mss_val.c,v 1.48 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_mss_val.c,v 1.52 2013/11/16 22:00:58 zender Exp $ */
 
 /* Purpose: Missing value utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -123,7 +123,7 @@ nco_mss_val_cnf /* [fnc] Change missing_value of var2 to missing_value of var1 *
       case NC_STRING: (void)sprintf(mss_val_2_sng,fmt_sng,var2->mss_val.sngp[0]); break;
       default: nco_dfl_case_nc_type_err(); break;
       } /* end switch */
-      (void)fprintf(stderr,"%s: WARNING Input variables have different NCO_MSS_VAL_SNG's:\nFile 1 variable %s has NCO_MSS_VAL_SNG type = %s, value = %s\nFile 2 variable %s has NCO_MSS_VAL_SNG type = %s, value = %s\nFile 3 variable %s will have NCO_MSS_VAL_SNG type = %s, value = %s\nWill translate values of var2 equaling mss_val2 to mss_val1 before arithmetic operation\n",prg_nm_get(),var1->nm,nco_typ_sng(var1->type),mss_val_1_sng,var2->nm,nco_typ_sng(var2->type),mss_val_2_sng,var1->nm,nc [...]
+      (void)fprintf(stderr,"%s: WARNING Input variables have different NCO_MSS_VAL_SNG's:\nFile 1 variable %s has NCO_MSS_VAL_SNG type = %s, value = %s\nFile 2 variable %s has NCO_MSS_VAL_SNG type = %s, value = %s\nFile 3 variable %s will have NCO_MSS_VAL_SNG type = %s, value = %s\nWill translate values of var2 equaling mss_val2 to mss_val1 before arithmetic operation\n",nco_prg_nm_get(),var1->nm,nco_typ_sng(var1->type),mss_val_1_sng,var2->nm,nco_typ_sng(var2->type),mss_val_2_sng,var1->n [...]
     } /* MSS_VAL_EQL */
     (void)cast_nctype_void(var_typ,&var1->mss_val);
     (void)cast_nctype_void(var_typ,&var2->mss_val);
@@ -268,17 +268,18 @@ nco_mss_val_get /* [fnc] Update number of attributes, missing_value of variable
 
   char att_nm[NC_MAX_NAME];
   
-  long att_sz;
   int idx;
+
+  long att_sz;
   
   nco_bool has_fll_val=False; /* [flg] Has _FillValue attribute */
 
-  size_t att_lng;
-
   nc_type att_typ;
 
   ptr_unn mss_tmp;
   
+  size_t att_lng;
+
   /* Refresh netCDF "mss_val" attribute for this variable */
   var->has_mss_val=False;
   var->mss_val.vp=nco_free(var->mss_val.vp);
@@ -293,10 +294,10 @@ nco_mss_val_get /* [fnc] Update number of attributes, missing_value of variable
     if((int)strcasecmp(att_nm,nco_mss_val_sng_get())) continue;
     (void)nco_inq_att(nc_id,var->id,att_nm,&att_typ,&att_sz);
     if(att_sz != 1L && att_typ != NC_CHAR){
-      (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for %s has %li elements and so will not be used\n",prg_nm_get(),att_nm,var->nm,att_sz);
+      (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for %s has %li elements and so will not be used\n",nco_prg_nm_get(),att_nm,var->nm,att_sz);
       continue;
     } /* end if */
-    /* if(att_typ != var->type) (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for %s will be typecast from %s to %s for arithmetic purposes\n",prg_nm_get(),att_nm,var->nm,nco_typ_sng(att_typ),nco_typ_sng(var->type)); */
+    /* if(att_typ != var->type) (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for %s will be typecast from %s to %s for arithmetic purposes\n",nco_prg_nm_get(),att_nm,var->nm,nco_typ_sng(att_typ),nco_typ_sng(var->type)); */
     /* If we got this far then try to retrieve attribute and make sure it conforms to variable's type */
     var->has_mss_val=True;
     /* Oddly, ARM uses NC_CHAR for type of missing_value, so make allowances for this */
@@ -325,13 +326,13 @@ nco_mss_val_get /* [fnc] Update number of attributes, missing_value of variable
 
   /* Always warn when NCO looks for _FillValue but file has missing_value, and/or
      always warn when NCO looks for missing_value but file has _FillValue.
-     20101129: This is a long warning, only print when dbg_lvl > 0 */
-  if(dbg_lvl_get() > 0 && has_fll_val && !var->has_mss_val && WRN_FIRST){
+     20101129: This is a long warning, only print when nco_dbg_lvl > 0 */
+  if(nco_dbg_lvl_get() >= nco_dbg_std && has_fll_val && !var->has_mss_val && WRN_FIRST){
     char sa[1000];
     char sa1[1000];
     char sa2[1000]; 
     WRN_FIRST=False;
-    (void)sprintf(sa,"%s: WARNING Variable %s has attribute \"%s\" but not \"%s\". To comply with netCDF conventions, NCO ignores values that equal the %s attribute when performing arithmetic.",prg_nm_get(),var->nm,nco_not_mss_val_sng_get(), nco_mss_val_sng_get(),nco_mss_val_sng_get()); 
+    (void)sprintf(sa,"%s: WARNING Variable %s has attribute \"%s\" but not \"%s\". To comply with netCDF conventions, NCO ignores values that equal the %s attribute when performing arithmetic.",nco_prg_nm_get(),var->nm,nco_not_mss_val_sng_get(), nco_mss_val_sng_get(),nco_mss_val_sng_get()); 
     (void)sprintf(sa1," Confusingly, values equal to the missing_value should also be neglected. However, it is tedious and (possibly) computationally expensive to check each value against multiple missing values during arithmetic on large variables. So NCO thinks that processing variables with a \"%s\" attribute and no \"%s\" attribute may produce undesired arithmetic results (i.e., where values that were intended to be neglected were not, in fact, neglected).",nco_not_mss_val_sng_get() [...]
     (void)sprintf(sa2, " We suggest you rename all \"%s\" attributes to \"%s\" or include both \"%s\" and \"%s\" attributes (with the _same values_) for all variables that have either attribute. Because it is long, this message is only printed once per operator even though multiple variables may have the same attribute configuration. More information on missing values is given at:\nhttp://nco.sf.net/nco.html#mss_val\nExamples of renaming attributes are at:\nhttp://nco.sf.net/nco.html#xmp [...]
     (void)fprintf(stderr,"%s%s%s",sa,sa1,sa2); 
diff --git a/src/nco/nco_mss_val.h b/src/nco/nco_mss_val.h
index 335699a..6e589af 100644
--- a/src/nco/nco_mss_val.h
+++ b/src/nco/nco_mss_val.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_mss_val.h,v 1.28 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_mss_val.h,v 1.34 2013/07/16 04:26:06 zender Exp $ */
 
 /* Purpose: Missing value utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,7 +18,10 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* strcasecmp() */
+#endif /* !HAVE_STRINGS_H */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -28,7 +31,7 @@
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_cnf_typ.h" /* Conform variable types */
 #include "nco_mmr.h" /* Memory management */
-#include "nco_prn.h" /* Printing variables, attributes, metadata */
+#include "nco_prn.h" /* Print variables, attributes, metadata */
 #if (defined NEED_STRCASECMP) || (defined NEED_STRDUP)
 # include "nco_sng_utl.h" /* String utilities */
 #endif /* NEED_STRCASECMP || NEED_STRDUP */
diff --git a/src/nco/nco_netcdf.c b/src/nco/nco_netcdf.c
index 4ad6f47..b582912 100644
--- a/src/nco/nco_netcdf.c
+++ b/src/nco/nco_netcdf.c
@@ -1,64 +1,12 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_netcdf.c,v 1.146 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_netcdf.c,v 1.211 2013/11/16 15:20:07 zender Exp $ */
 
 /* Purpose: NCO wrappers for netCDF C library */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
-/* nco_netcdf.h is (nearly) independent of NCO and does not depend on nco.h
-   nco_netcdf.h is an abstraction layer for netcdf.h, plus a few convenience routines
-   A similar abstraction layer must exist for each NCO storage backend, e.g., nco_hdf.h
-
-   1. Utility routines, e.g., nco_typ_lng(), c_typ_nm() (routines with no netCDF library counterpart)
-   2. File-routine wrappers, e.g., nco_open()
-   3. Dimension-routine wrappers, e.g., nco_dimid()
-   4. Variable-routine wrappers, e.g., nco_get_var()
-   5. Attribute-routine wrappers, e.g., nco_put_att()
-
-   Name Convention: Where appropriate, routine name is identical to netCDF C-library name,
-   except nc_ is replaced by nco_
-
-   Argument Ordering Convention: Routines follow same argument order as netCDF C-library
-   Additional arguments, such as nc_type, are appended to end of argument list
-
-   Return value convention: Functions return a success/failure code
-   Errors in netCDF functions cause NCO wrapper to abort, except *_flg() wrappers
-   *_flg() wrappers allow limited, pre-defined, netCDF errors to be non-fatal
-
-   Circularity convention: It is important that none of the error diagnostics
-   in these functions call other nco_??? routines because if everything
-   starts failing then errors will produce circular diagnostics.
-   To ensure this is the case, it is only safe to print diagnostics on
-   variables which are supposed to be valid on input. */
-
-/* NB: nco_netcdf.c does not #include nco.h which #defines forward-compatibility tokens
-   This barrier helps segregate NCO from wrappers
-   Re-define minimal sub-set of tokens for nco_netcdf.c as necessary
-   This is small exception to the barrier */
-#ifndef NC_FORMAT_CLASSIC
-# define NC_FORMAT_CLASSIC (1)
-#endif
-#ifndef NC_FORMAT_64BIT
-# define NC_FORMAT_64BIT   (2)
-#endif
-#ifndef NC_FORMAT_NETCDF4
-# define NC_FORMAT_NETCDF4 (3)
-#endif
-#ifndef NC_FORMAT_NETCDF4_CLASSIC
-# define NC_FORMAT_NETCDF4_CLASSIC  (4) /* create netcdf-4 files, with NC_CLASSIC_MODEL. */
-#endif
-#ifndef NC_CHUNKED
-# define NC_CHUNKED (0)
-#endif
-#ifndef NC_CONTIGUOUS
-# define NC_CONTIGUOUS (1)
-#endif
-#ifndef NC_NOCHECKSUM
-# define NC_NOCHECKSUM 0
-#endif
-
 /* Utility routines not defined by netCDF library, but useful in working with it */
 void
 nco_err_exit /* [fnc] Print netCDF error message, routine name, then exit */
@@ -73,7 +21,7 @@ nco_err_exit /* [fnc] Print netCDF error message, routine name, then exit */
 
      msg variable allows wrapper to pass more descriptive information than
      is contained in the netCDF-defined error message.
-     Use msg to print, e.g., the name of variable or routine which caused error */
+     Use msg to print, e.g., name of variable or routine which caused error */
 
   const char fnc_nm[]="nco_err_exit()";
 #ifdef NCO_ABORT_ON_ERROR
@@ -83,7 +31,19 @@ nco_err_exit /* [fnc] Print netCDF error message, routine name, then exit */
 #endif /* !NCO_ABORT_ON_ERROR */
 
   switch(rcd){
-  case NC_ENOTNC: (void)fprintf(stdout,"ERROR NC_ENOTNC Not a netCDF file\nHINT: NC_ENOTNC errors will occur when NCO operators linked to the netCDF3 library attempt to read netCDF4 files.  Are your input files netCDF4 format?  (http://nco.sf.net/nco.html#fmt_inq shows how to tell.) If so then installing or re-building a netCDF4-compatible version of NCO should solve this problem. First upgrade netCDF to version 4.x, then install NCO using those netCDF 4.x libraries.\n"); break;
+  case NC_EINVAL: (void)fprintf(stdout,"ERROR NC_EINVAL Invalid argument\nHINT: NC_EINVAL errors can occur for at least two reasons. The first is when NCO operators attempt to open netCDF4 files using the diskless option, usually invoked with --diskless_all, --ram_all, or --open_ram.  Is your input file netCDF4 format?  (http://nco.sf.net/nco.html#fmt_inq shows how to tell.) If so then omitting the diskless option may solve this problem. The second is when HDF4-enabled NCO attempts to di [...]
+  case NC_ELATEFILL: /* netcdf.h replaced NC_EFILLVALUE by NC_ELATEFILL after about netCDF ~4.2.1 */
+    (void)fprintf(stdout,"ERROR NC_ELATEFILL (formerly NC_EFILLVALUE) Attempt to define fill value when data already exists\nHINT: NC_ELATEFILL errors can occur when ncap2 attempts to define a variable with a _FillValue attribute in a netCDF4 file.  We believe this is an NCO bug (fxm TODO nco1089) and are working to fix it. Does your output file need to be netCDF4 or netCDF4_classic format? If so, then wait for us to fix the bug. If not, change the output format to netCDF3 (e.g., with -3 [...]
+#ifdef ENABLE_NETCDF4
+  case NC_ENOTBUILT: (void)fprintf(stdout,"ERROR NC_ENOTBUILT Attempt to use feature that was not turned on when netCDF was built\nHINT: NC_ENOTBUILT errors occur only, in our experience, when NCO attempts to access an HDF-EOS2 or HDF4 file. In this case it may be possible to access the input files using NCO if NCO is first re-linked to a version of netCDF configured with the --enable-hdf4 option. This is a non-standard netCDF build option described here: http://www.unidata.ucar.edu/soft [...]
+#endif
+  case NC_ENOTNC: (void)fprintf(stdout,"ERROR NC_ENOTNC Not a netCDF file\nHINT: NC_ENOTNC errors can occur for many reasons. If your use case matches one of the four listed below, take the corrective action indicated:\n1. An NCO operator linked to the netCDF3 library attempts to read netCDF4 files. ");
+#ifdef ENABLE_NETCDF4
+    (void)fprintf(stdout," However, this executable seems to have been built with the capability to manipulate netCDF4 files, so it is unlikely that this command failed only because the input datasets are netCDF4 format. Something else is going wrong. \n");
+#else /* !ENABLE_NETCDF4 */
+    (void)fprintf(stdout,"Are your input files netCDF4 format?  (http://nco.sf.net/nco.html#fmt_inq shows how to tell.) If so then installing or re-building a netCDF4-compatible version of NCO should solve this problem. First upgrade netCDF to version 4.x, then install NCO using those netCDF 4.x libraries.\n2. NC_ENOTNC can occur when users attempt to utilize diskless (i.e., RAM) files.  In this case remove the diskless switches (e.g., --ram or --diskless) and then re-issue the command. \n");
+#endif /* !ENABLE_NETCDF4 */
+    (void)fprintf(stdout,"2. NCO attempts to utilize diskless (i.e., RAM) files.  In this case remove the diskless switches (e.g., --ram or --diskless) and then re-issue the command.\n3. NCO attempts to read other non-supported filetypes, e.g., HDF4, HDF-EOS2. In this case it may be possible to access the input files using NCO if NCO is first re-linked to a version of netCDF configured with the --enable-hdf4 option. This is a non-standard netCDF build option described here: http://www.un [...]
   case NC_ERANGE: (void)fprintf(stdout,"ERROR NC_ERANGE Result not representable in output file\nHINT: NC_ERANGE errors typically occur after an arithmetic operation results in a value not representible by the output variable type when NCO attempts to write those values to an output file.  Possible workaround: Promote the variable to higher precision before attempting arithmetic.  For example,\nncap2 -O -s \'foo=double(foo);\' in.nc in.nc\nFor more details, see http://nco.sf.net/nco.html [...]
   case NC_EVARSIZE: (void)fprintf(stdout,"ERROR NC_EVARSIZE One or more variable sizes violate format constraints\nHINT: NC_EVARSIZE errors can occur when attempting to aggregate netCDF3 classic files together into outputs that exceed the capacity of the netCDF3 classic file format, e.g., a variable with size in excess of 2^31 bytes. In this case, try altering the output file type to netCDF3 classic with 64-bit offsets (with --64) or to netCDF4 (with -4). For more details, see http://nco [...]
   } /* end switch */
@@ -161,6 +121,8 @@ const char * /* O [sng] String describing type */
 nco_typ_sng /* [fnc] Convert netCDF type enum to string */
 (const nc_type type) /* I [enm] netCDF type */
 {
+  if(type >= NC_FIRSTUSERTYPEID) return "User-defined";
+
   switch(type){
   case NC_FLOAT:
     return "NC_FLOAT";
@@ -186,6 +148,14 @@ nco_typ_sng /* [fnc] Convert netCDF type enum to string */
     return "NC_UINT64";
   case NC_STRING:
     return "NC_STRING";
+  case NC_VLEN:
+    return "NC_VLEN";
+  case NC_OPAQUE:
+    return "NC_OPAQUE";
+  case NC_ENUM:
+    return "NC_ENUM";
+  case NC_COMPOUND:
+    return "NC_COMPOUND";
   default: nco_dfl_case_nc_type_err(); break;
   } /* end switch */
 
@@ -193,6 +163,117 @@ nco_typ_sng /* [fnc] Convert netCDF type enum to string */
   return (char *)NULL;
 } /* end nco_typ_sng() */
 
+const char * /* O [sng] Native CDL type */
+cdl_typ_nm /* [fnc] Return string describing native CDL type */
+(const nc_type type) /* I [enm] netCDF type */
+{
+  /* Purpose: Divine CDL type string from netCDF external type enum */
+  switch(type){
+  case NC_FLOAT:
+    return "float";
+  case NC_DOUBLE:
+    return "double";
+  case NC_INT:
+    return "int";
+  case NC_SHORT:
+    return "short";
+  case NC_CHAR:
+    return "char";
+  case NC_BYTE:
+    return "byte";
+  case NC_UBYTE:
+    return "ubyte";
+  case NC_USHORT:
+    return "ushort";
+  case NC_UINT:
+    return "uint";
+  case NC_INT64:
+    return "int64";
+  case NC_UINT64:
+    return "uint64";
+  case NC_STRING:
+    return "string";
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end cdl_typ_nm() */
+
+const char * /* O [sng] Native XML type */
+xml_typ_nm /* [fnc] Return string describing native XML type */
+(const nc_type type) /* I [enm] netCDF type */
+{
+  /* Purpose: Divine XML type string from netCDF external type enum */
+  switch(type){
+  case NC_FLOAT:
+    return "float";
+  case NC_DOUBLE:
+    return "double";
+  case NC_INT:
+    return "int";
+  case NC_SHORT:
+    return "short";
+  case NC_CHAR:
+    return "char";
+  case NC_BYTE:
+    return "byte";
+  case NC_UBYTE:
+    return "byte";
+  case NC_USHORT:
+    return "short";
+  case NC_UINT:
+    return "int";
+  case NC_INT64:
+    return "long";
+  case NC_UINT64:
+    return "long";
+  case NC_STRING:
+    return "String";
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end xml_typ_nm() */
+
+const char * /* O [sng] Native CDL type suffix */
+cdl_typ_sfx /* [fnc] Return suffix string for CDL type */
+(const nc_type type) /* I [enm] netCDF type */
+{
+  /* Purpose: Return suffix string for CDL */
+  switch(type){
+  case NC_FLOAT:
+    return ".f";
+  case NC_DOUBLE:
+    return ".";
+  case NC_INT:
+    return "";
+  case NC_SHORT:
+    return "s";
+  case NC_CHAR:
+    return "";
+  case NC_BYTE:
+    return "b";
+  case NC_UBYTE:
+    return "ub";
+  case NC_USHORT:
+    return "us";
+  case NC_UINT:
+    return "u";
+  case NC_INT64:
+    return "ll";
+  case NC_UINT64:
+    return "ull";
+  case NC_STRING:
+    return "";
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end cdl_typ_sfx() */
+
 const char * /* O [sng] Native C type */
 c_typ_nm /* [fnc] Return string describing native C type */
 (const nc_type type) /* O [enm] netCDF type */
@@ -348,7 +429,7 @@ nco_dfl_case_nc_type_err(void) /* [fnc] Print error and exit for illegal switch(
      Placing this in its own routine also has the virtue of saving many lines
      of code since this function is used in many many switch() statements. */
   const char fnc_nm[]="nco_dfl_case_nc_type_err()";
-  (void)fprintf(stdout,"%s: ERROR switch(nctype) statement fell through to default case, which is illegal.\nNot handling the default case causes gcc to emit warnings when compiling NCO with the NETCDF2_ONLY token (because nctype definition is braindead in netCDF2.x). Exiting...\n",fnc_nm);
+  (void)fprintf(stdout,"%s: ERROR switch(nctype) statement fell through to default case, which is illegal, because each type should have a well-defined action. This error may be triggered by using an NCO built with only netCDF3 functionality to examine a netCDF4 dataset that contains a new atomic type (e.g., NC_INT64).\nHINT: Configure/build NCO with --enable-netCDF4. Exiting...\n",fnc_nm);
   nco_err_exit(0,fnc_nm);
 } /* end nco_dfl_case_nc_type_err() */
 
@@ -375,15 +456,15 @@ nco_sng_cnv_err /* [fnc] Print error and exit for failed strtol()-type calls */
 } /* end nco_sng_cnv_err() */
 
 void
-nco_dfl_case_prg_id_err(void) /* [fnc] Print error and exit for illegal switch(prg_id) case */
+nco_dfl_case_prg_id_err(void) /* [fnc] Print error and exit for illegal switch(nco_prg_id_id) case */
 {
   /* Purpose: Convenience routine for printing error and exiting when
-     switch(prg_id) statement receives an illegal default case
+     switch(nco_prg_id) statement receives an illegal default case
 
      Placing this in its own routine also has the virtue of saving many lines
      of code since this function is used in many many switch() statements. */
   const char fnc_nm[]="nco_dfl_case_prg_id_err()";
-  (void)fprintf(stdout,"%s: ERROR switch(prg_id) statement fell through to default case, which is unsafe. This catch-all error handler ensures all switch(prg_id) statements are fully enumerated. Exiting...\n",fnc_nm);
+  (void)fprintf(stdout,"%s: ERROR switch(nco_prg_id) statement fell through to default case, which is unsafe. This catch-all error handler ensures all switch(nco_prg_id) statements are fully enumerated. Exiting...\n",fnc_nm);
   nco_err_exit(0,fnc_nm);
 } /* end nco_dfl_case_prg_id_err() */
 
@@ -395,22 +476,56 @@ nco_create(const char * const fl_nm,const int cmode,int * const nc_id)
   const char fnc_nm[]="nco_create()";
   int rcd;
   rcd=nc_create(fl_nm,cmode,nc_id);
-  if(rcd != NC_NOERR) nco_err_exit(rcd,fnc_nm);
+  if(rcd != NC_NOERR){
+    (void)fprintf(stdout,"ERROR: %s unable to create file \"%s\"\n",fnc_nm,fl_nm);
+    nco_err_exit(rcd,fnc_nm);
+  } /* endif */
   return rcd;
 } /* end nco_create */
 
 int
+nco__create(const char * const fl_nm,const int cmode,const size_t sz_ntl,size_t * const bfr_sz_hnt,int * const nc_id)
+{
+  /* Purpose: Wrapper for nc__create() */
+  const char fnc_nm[]="nco__create()";
+  int rcd;
+  rcd=nc__create(fl_nm,cmode,sz_ntl,bfr_sz_hnt,nc_id);
+  if(rcd != NC_NOERR){
+    (void)fprintf(stdout,"ERROR: %s unable to create file \"%s\"\n",fnc_nm,fl_nm);
+    nco_err_exit(rcd,fnc_nm);
+  } /* endif */
+  return rcd;
+} /* end nco__create */
+
+int
 nco_open(const char * const fl_nm,const int mode,int * const nc_id)
 {
   /* Purpose: Wrapper for nc_open() */
   const char fnc_nm[]="nco_open()";
   int rcd;
   rcd=nc_open(fl_nm,mode,nc_id);
-  if(rcd != NC_NOERR) nco_err_exit(rcd,fnc_nm);
+  if(rcd != NC_NOERR){
+    (void)fprintf(stdout,"ERROR: %s unable to open file \"%s\"\n",fnc_nm,fl_nm);
+    nco_err_exit(rcd,fnc_nm);
+  } /* endif */
   return rcd;
 } /* end nco_open */
 
 int
+nco__open(const char * const fl_nm,const int mode,size_t * const bfr_sz_hnt,int * const nc_id)
+{
+  /* Purpose: Wrapper for nc__open() */
+  const char fnc_nm[]="nco__open()";
+  int rcd;
+  rcd=nc__open(fl_nm,mode,bfr_sz_hnt,nc_id);
+  if(rcd != NC_NOERR){
+    (void)fprintf(stdout,"ERROR: %s unable to open file \"%s\"\n",fnc_nm,fl_nm);
+    nco_err_exit(rcd,fnc_nm);
+  } /* endif */
+  return rcd;
+} /* end nco__open */
+
+int
 nco_open_flg(const char * const fl_nm,const int mode,int * const nc_id)
 {
   /* Purpose: Error-tolerant wrapper for nc_open(). Tolerates all errors.
@@ -560,7 +675,7 @@ nco_inq_format(const int nc_id,int * const fl_fmt)
   return rcd;
 } /* end nco_inq_format() */
 
-#ifdef ENABLE_NETCDF4
+#ifdef HAVE_NETCDF4_H
 int
 nco_inq_ncid(const int nc_id,const char * const grp_nm,int * const grp_id)
 {
@@ -570,7 +685,18 @@ nco_inq_ncid(const int nc_id,const char * const grp_nm,int * const grp_id)
   if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_ncid()");
   return rcd;
 } /* end nco_inq_ncid() */
-#endif /* !ENABLE_NETCDF4 */
+
+int
+nco_inq_ncid_flg(const int nc_id,const char * const grp_nm,int * const grp_id)
+{
+  /* Purpose: Error-tolerant Wrapper for nc_inq_ncid(). Tolerates NC_ENOGRP */
+  int rcd;
+  rcd=nc_inq_ncid(nc_id,grp_nm,grp_id);
+  if(rcd == NC_ENOGRP) return rcd;
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_ncid()");
+  return rcd;
+} /* end nco_inq_ncid_flg() */
+#endif /* !HAVE_NETCDF4_H */
 
 int
 nco_inq_ndims(const int nc_id,int * const dmn_nbr_fl)
@@ -625,7 +751,7 @@ nco_inq_unlimdim_flg(const int nc_id,int * const rec_dmn_id)
 /* End File routines */
 
 /* Begin Group routines (_grp) */
-#ifdef ENABLE_NETCDF4
+#ifdef HAVE_NETCDF4_H
 int nco_def_grp(const int nc_id,const char * const grp_nm,int * const grp_id)
 {
   /* Purpose: Wrapper for nc_def_grp() */
@@ -635,6 +761,47 @@ int nco_def_grp(const int nc_id,const char * const grp_nm,int * const grp_id)
   return rcd;
 } /* end nco_def_grp() */
 
+int nco_def_grp_flg(const int nc_id,const char * const grp_nm,int * const grp_id)
+{
+  /* Purpose: Error-tolerant wrapper for nc_def_grp(). Tolerates NC_ENAMEINUSE (-42) "String match to name in use" */
+  int rcd;
+  rcd=nc_def_grp(nc_id,grp_nm,grp_id);
+  if(rcd == NC_ENAMEINUSE) return rcd;
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_def_grp_flg()");
+  return rcd;
+} /* end nco_def_grp_flg() */
+
+#ifndef NC_HAVE_RENAME_GRP
+int
+nc_rename_grp(int grp_id,const char * const grp_nm)
+{
+  /* Purpose: Pseudo-library function to rename groups.
+     This particular stub routine is only called by netCDF4-enabled code
+     when built against a netCDF library that it too old to have
+     the nc_rename_grp() function.
+     Test by running something like this:
+     ncrename -O -g g1,obama ~/nco/data/in_grp.nc ~/foo.nc */
+  const char fnc_nm[]="nc_rename_grp()";
+  char grp_nm_old[NC_MAX_NAME+1L];
+  int rcd;
+  rcd=NC_NOERR;
+  rcd+=nco_inq_grpname(grp_id,grp_nm_old);
+  (void)fprintf(stdout,"INFO: %s reports attempt to rename group \"%s\" to \"%s\" was foiled because libnetcdf.a does not contain nc_rename_grp(). To obtain this functionality, please rebuild NCO against netCDF library version 4.3.1 (to be released ~201309XX) or later.\nContinuing as though nothing untoward happened...\n",fnc_nm,grp_nm_old,grp_nm);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nc_rename_grp()");
+  return rcd;
+} /* end nc_rename_grp() */
+#endif /* NC_HAVE_RENAME_GRP */
+
+int
+nco_rename_grp(int grp_id,const char * const grp_nm)
+{
+  /* Purpose: Wrapper for nc_rename_grp() */
+  int rcd;
+  rcd=nc_rename_grp(grp_id,grp_nm);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_rename_grp()");
+  return rcd;
+} /* end nco_rename_grp() */
+
 int nco_inq_dimids(const int nc_id,int * const dmn_nbr,int * const dmn_ids,int flg_prn)
 {
   /* Purpose: Wrapper for nc_inq_dimids() */
@@ -680,7 +847,7 @@ int nco_inq_grps(const int nc_id,int * const grp_nbr,int * const grp_ids)
   return rcd;
 } /* end nco_inq_grps() */
 
-int nco_inq_grp_ncid(const int nc_id,char * const grp_nm,int * const grp_id)
+int nco_inq_grp_ncid(const int nc_id,const char * const grp_nm,int * const grp_id)
 {
   /* Purpose: Wrapper for nc_inq_grp_ncid() */
   int rcd;
@@ -689,15 +856,47 @@ int nco_inq_grp_ncid(const int nc_id,char * const grp_nm,int * const grp_id)
   return rcd;
 } /* end nco_inq_grp_ncid() */
 
-int nco_inq_grp_full_ncid(const int nc_id,char * const grp_nm_fll,int * const grp_id)
+int nco_inq_grp_ncid_flg(const int nc_id,const char * const grp_nm,int * const grp_id)
+{
+  /* Purpose: Error-tolerant wrapper for nc_inq_grp_ncid(). Tolerates NC_ENOGRP */
+  int rcd;
+  rcd=nc_inq_grp_ncid(nc_id,grp_nm,grp_id);
+  if(rcd == NC_ENOGRP) return rcd;
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_grp_ncid()");
+  return rcd;
+} /* end nco_inq_grp_ncid() */
+
+int nco_inq_grp_full_ncid(const int nc_id,const char * const grp_nm_fll,int * const grp_id)
 {
   /* Purpose: Wrapper for nc_inq_grp_full_ncid() */
+  int fl_fmt;
   int rcd;
-  rcd=nc_inq_grp_full_ncid(nc_id,grp_nm_fll,grp_id);
+  rcd=nco_inq_format(nc_id,&fl_fmt);
+  if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
+    rcd=nc_inq_grp_full_ncid(nc_id,grp_nm_fll,grp_id);
+  }else{ /* netCDF3 */
+    *grp_id=nc_id;
+  } /* endif */
   if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_grp_full_ncid()");
   return rcd;
 } /* end nco_inq_grp_full_ncid() */
 
+int nco_inq_grp_full_ncid_flg(const int nc_id,const char * const grp_nm_fll,int * const grp_id)
+{
+  /* Purpose: Error-tolerant Wrapper for nc_inq_grp_full_ncid(). Tolerates NC_ENOGRP */
+  int fl_fmt;
+  int rcd;
+  rcd=nco_inq_format(nc_id,&fl_fmt);
+  if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
+    rcd=nc_inq_grp_full_ncid(nc_id,grp_nm_fll,grp_id);
+  }else{ /* netCDF3 */
+    *grp_id=nc_id;
+  } /* endif */
+  if(rcd == NC_ENOGRP) return rcd;
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_grp_full_ncid()");
+  return rcd;
+} /* end nco_inq_grp_full_ncid_flg() */
+
 int nco_inq_grp_parent(const int nc_id,int * const prn_id)
 {
   /* Purpose: Wrapper for nc_inq_grp_parent() */
@@ -707,6 +906,16 @@ int nco_inq_grp_parent(const int nc_id,int * const prn_id)
   return rcd;
 } /* end nco_inq_grp_parent() */
 
+int nco_inq_grp_parent_flg(const int nc_id,int * const prn_id)
+{
+  /* Purpose: Error-tolerant Wrapper for nc_inq_grp_parent_flg(). Tolerates NC_ENOGRP */
+  int rcd;
+  rcd=nc_inq_grp_parent(nc_id,prn_id);
+  if(rcd == NC_ENOGRP) return rcd;
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_grp_parent_flg()");
+  return rcd;
+} /* end nco_inq_grp_parent_flg() */
+
 int nco_inq_varids(const int nc_id,int * const var_nbr,int * const var_ids)
 {
   /* Purpose: Wrapper for nc_inq_varids() */
@@ -715,7 +924,17 @@ int nco_inq_varids(const int nc_id,int * const var_nbr,int * const var_ids)
   if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_varids()");
   return rcd;
 } /* end nco_inq_varids() */
-#endif /* !ENABLE_NETCDF4 */
+
+int
+nco_inq_unlimdims(const int nc_id,int *nbr_dmn_ult,int *dmn_ids_ult)
+{
+  /* Purpose: Wrapper for nc_inq_unlimdims() */
+  int rcd;
+  rcd=nc_inq_unlimdims(nc_id,nbr_dmn_ult,dmn_ids_ult);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nc_inq_unlimdims()");
+  return rcd;
+} /* end nco_inq_unlimdims() */
+#endif /* !HAVE_NETCDF4_H */
 /* End Group routines */
 
 /* Begin Dimension routines (_dim) */
@@ -1144,7 +1363,7 @@ nco_put_var1(const int nc_id,const int var_id,const long * const srt,const void
     /* Next line produces gcc and g++ warning:
        attention : le transtypage annule des qualificateurs du type pointeur ciblé */
   case NC_STRING: rcd=NCO_PUT_VAR1_STRING(nc_id,var_id,(const size_t *)srt,(const char **)vp); break;
-    /* Next line produces g++ warning:
+      /* Next line produces g++ warning:
        erreur: invalid conversion from ‘char* const* const’ to ‘const char** */
     /* case NC_STRING: rcd=NCO_PUT_VAR1_STRING(nc_id,var_id,(const size_t *)srt,(const nco_string * const)vp); break;*/
     /* Next line produces g++ warning:
@@ -1201,6 +1420,7 @@ nco_put_vara(const int nc_id,const int var_id,const long * const srt,const long
   case NC_UINT: rcd=NCO_PUT_VARA_UINT(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const nco_uint *)vp); break;
   case NC_INT64: rcd=NCO_PUT_VARA_INT64(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const nco_int64 *)vp); break;
   case NC_UINT64: rcd=NCO_PUT_VARA_UINT64(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const nco_uint64 *)vp); break;
+    /* NC_STRING prototype next causes same compiler warnings described in nco_put_var1() above */
   case NC_STRING: rcd=NCO_PUT_VARA_STRING(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const char **)vp); break;
 #endif /* !ENABLE_NETCDF4 */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1253,6 +1473,7 @@ nco_put_vars(const int nc_id,const int var_id,const long * const srt,const long
   case NC_UINT: rcd=NCO_PUT_VARS_UINT(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd, (const nco_uint *)vp); break;
   case NC_INT64: rcd=NCO_PUT_VARS_INT64(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd, (const nco_int64 *)vp); break;
   case NC_UINT64: rcd=NCO_PUT_VARS_UINT64(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd,(const nco_uint64 *)vp); break;
+    /* NC_STRING prototype next causes same compiler warnings described in nco_put_var1() above */
   case NC_STRING: rcd=NCO_PUT_VARS_STRING(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd,(const char **)vp); break;
 #endif /* !ENABLE_NETCDF4 */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1306,6 +1527,7 @@ nco_put_varm(const int nc_id,const int var_id,const long * const srt,const long
   case NC_UINT: rcd=NCO_PUT_VARM_UINT(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd,(const ptrdiff_t *)map,(const nco_uint *)vp); break;
   case NC_INT64: rcd=NCO_PUT_VARM_INT64(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd,(const ptrdiff_t *)map,(const nco_int64 *)vp); break;
   case NC_UINT64: rcd=NCO_PUT_VARM_UINT64(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd,(const ptrdiff_t *)map,(const nco_uint64 *)vp); break;
+    /* NC_STRING prototype next causes same compiler warnings described in nco_put_var1() above */
   case NC_STRING: rcd=NCO_PUT_VARM_STRING(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd,(const ptrdiff_t *)map,(const char **)vp); break;
 #endif /* !ENABLE_NETCDF4 */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1461,6 +1683,7 @@ nco_put_att(const int nc_id,const int var_id,const char * const att_nm,const nc_
   case NC_UINT: rcd=NCO_PUT_ATT_UINT(nc_id,var_id,att_nm,att_typ,(size_t)att_len,(const nco_uint *)vp); break;
   case NC_INT64: rcd=NCO_PUT_ATT_INT64(nc_id,var_id,att_nm,att_typ,(size_t)att_len,(const nco_int64 *)vp); break;
   case NC_UINT64: rcd=NCO_PUT_ATT_UINT64(nc_id,var_id,att_nm,att_typ,(size_t)att_len,(const nco_uint64 *)vp); break;
+    /* NC_STRING prototype next causes same compiler warnings described in nco_put_var1() above */
   case NC_STRING: rcd=NCO_PUT_ATT_STRING(nc_id,var_id,att_nm,att_typ,(size_t)att_len,(const char **)vp); break;
 #endif /* !ENABLE_NETCDF4 */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1514,6 +1737,56 @@ int nc_def_var_deflate(const int nc_id,const int var_id,const int shuffle,const
 int nc_inq_var_deflate(const int nc_id,const int var_id,int * const shuffle, int * const deflate,int * const dfl_lvl){if(shuffle) *shuffle=0;if(deflate) *deflate=0;if(dfl_lvl) *dfl_lvl=0;return 1;}
 int nc_inq_var_fletcher32(const int nc_id,const int var_id,int * const chk_typ){if(chk_typ) *chk_typ=NC_NOCHECKSUM;return 1;}
 #endif /* HAVE_NETCDF4_H */
+#if !defined(HAVE_NETCDF4_H) 
+/* Stubs thus present a fake library for manipulating netCDF3 files with the netCDF4 API
+   These are only called when netCDF4 library is unavailable, thus I/O assumed to be netCDF3 */
+int nco_def_grp(const int nc_id,const char * const grp_nm,int * const grp_id){assert(0);return NC_NOERR;}
+int nco_rename_grp(int grp_id,const char * const grp_nm){assert(0);return NC_NOERR;}
+int nco_inq_grpname_full(const int nc_id,size_t * grp_nm_lng,char * const grp_nm_fll){assert(0);return NC_NOERR;}
+int nco_inq_grpname_len(const int nc_id,size_t * const grp_nm_lng){assert(0);return NC_NOERR;}
+int nco_inq_grps(const int nc_id,int * const grp_nbr,int * const grp_ids){if(grp_nbr) *grp_nbr=0;return NC_NOERR;}
+int nco_inq_grp_full_ncid(const int nc_id,const char * const grp_nm_fll,int * const grp_id){*grp_id=nc_id;return NC_NOERR;}
+int nco_inq_grp_ncid(const int nc_id,const char * const grp_nm,int * const grp_id){assert(0);return NC_NOERR;}
+int nco_inq_grp_parent(const int nc_id,int * const prn_id){assert(0);return NC_ENOGRP;}
+int nco_inq_grp_parent_flg(const int nc_id,int * const prn_id){return NC_ENOGRP;}
+int nco_inq_ncid_flg(const int nc_id,const char * const grp_nm,int * const grp_id){assert(0);return NC_NOERR;}
+int nco_inq_grp_ncid_flg(const int nc_id,const char * const grp_nm,int * const grp_id){*grp_id=nc_id;return NC_NOERR;}
+int nco_inq_grpname(const int nc_id,char * const grp_nm){if(grp_nm) strcpy(grp_nm,"/");return NC_NOERR;}
+int nco_inq_grp_full_ncid_flg(const int nc_id,const char * const grp_nm_fll,int * const grp_id){*grp_id=nc_id;return NC_NOERR;}
+int nco_inq_dimids(const int nc_id,int * const dmn_nbr,int * const dmn_ids,int flg_prn){
+  int dmn_idx;
+  int rcd;
+  rcd=nc_inq(nc_id,dmn_nbr,(int *)NULL,(int *)NULL,(int *)NULL);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_dimids()");
+  /* netCDF3 file dimension IDs range 0..N-1 */
+  if(dmn_ids)
+    for(dmn_idx=0;dmn_idx<*dmn_nbr;dmn_idx++) dmn_ids[dmn_idx]=dmn_idx;
+  return NC_NOERR;
+} /* end nco_inq_dimids() */
+int nco_inq_unlimdims(const int nc_id,int *nbr_dmn_ult,int *dmn_ids_ult){
+  int rcd;
+  int unlimid;
+  rcd=nc_inq_unlimdim(nc_id,&unlimid);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_unlimdims()");
+  if(unlimid != -1){
+    *nbr_dmn_ult=1;
+    if(dmn_ids_ult) dmn_ids_ult[0]=unlimid;
+  }else{
+    *nbr_dmn_ult=0;
+  } /* unlimid */
+  return NC_NOERR;
+} /* end nco_inq_unlimdims() */
+int nco_inq_varids(const int nc_id,int * const var_nbr,int * const var_ids){
+  int rcd;
+  /* netCDF3 files have only the root group, with variable IDs 0..N-1 */
+  rcd=nc_inq(nc_id,(int *)NULL,var_nbr,(int *)NULL,(int *)NULL);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_varids()");
+  if(var_ids)
+    for(int var_idx=0;var_idx<*var_nbr;var_idx++) var_ids[var_idx]=var_idx;
+  return NC_NOERR;
+} /* end nco_inq_varids() */
+#endif /* HAVE_NETCDF4_H */
+#ifndef _MSC_VER
 #ifndef ENABLE_NETCDF4
 int NCO_GET_VAR1_UBYTE(const int nc_id,const int var_id,const size_t *srt,nco_ubyte *ubp){return 1;}
 int NCO_GET_VAR1_USHORT(const int nc_id,const int var_id,const size_t *srt,nco_ushort *usp){return 1;}
@@ -1596,4 +1869,5 @@ int NCO_GET_ATT_INT64(const int nc_id,const int var_id,const char *att_nm,nco_in
 int NCO_GET_ATT_UINT64(const int nc_id,const int var_id,const char *att_nm,nco_uint64 *ui64p){return 1;}
 int NCO_GET_ATT_STRING(const int nc_id,const int var_id,const char *att_nm,nco_string *sngp){return 1;}
 #endif /* ENABLE_NETCDF4 */
+#endif /* _MSC_VER */
 /* end netCDF4 stubs */
diff --git a/src/nco/nco_netcdf.h b/src/nco/nco_netcdf.h
index 78dd074..22a5a34 100644
--- a/src/nco/nco_netcdf.h
+++ b/src/nco/nco_netcdf.h
@@ -1,21 +1,48 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_netcdf.h,v 1.80 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_netcdf.h,v 1.103 2013/11/16 15:20:07 zender Exp $ */
 
 /* Purpose: NCO wrappers for netCDF C library */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 /* Usage:
 #include "nco_netcdf.h" *//* NCO wrappers for netCDF C library */
 
+/* nco_netcdf.h is (nearly) independent of NCO and does not depend on nco.h
+   nco_netcdf.h is an abstraction layer for netcdf.h, plus a few convenience routines
+   A similar abstraction layer must exist for each NCO storage backend, e.g., nco_hdf.h
+
+   1. Utility routines, e.g., nco_typ_lng(), c_typ_nm() (routines with no netCDF library counterpart)
+   2. File-routine wrappers, e.g., nco_open()
+   3. Dimension-routine wrappers, e.g., nco_dimid()
+   4. Variable-routine wrappers, e.g., nco_get_var()
+   5. Attribute-routine wrappers, e.g., nco_put_att()
+
+   Name Convention: Where appropriate, routine name is identical to netCDF C-library name,
+   except nc_ is replaced by nco_
+
+   Argument Ordering Convention: Routines follow same argument order as netCDF C-library
+   Additional arguments, such as nc_type, are appended to end of argument list
+
+   Return value convention: Functions return a success/failure code
+   Errors in netCDF functions cause NCO wrapper to abort, except *_flg() wrappers
+   *_flg() wrappers allow limited, pre-defined, netCDF errors to be non-fatal
+
+   Circularity convention: It is important that none of the error diagnostics
+   in these functions call other nco_??? routines because if everything
+   starts failing then errors will produce circular diagnostics.
+   To ensure this is the case, it is only safe to print diagnostics on
+   variables which are supposed to be valid on input. */
+
 #ifndef NCO_NETCDF_H /* Contents have not yet been inserted in current source file */
 #define NCO_NETCDF_H
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
+#include <assert.h> /* assert() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -27,6 +54,58 @@
 /* Personal headers */
 #include "nco_typ.h" /* Type definitions, opaque types */
 
+/* NB: 
+   nco_netcdf.h does #include nco_typ.h which #defines some forward-compatibility tokens
+   nco_netcdf.h does not #include nco.h which #defines some forward-compatibility tokens
+   This barrier helps segregate NCO from wrappers
+   Re-define minimal sub-set of tokens for nco_netcdf.c as necessary
+   This is small exception to the barrier */
+#ifndef NC_FORMAT_CLASSIC
+# define NC_FORMAT_CLASSIC (1)
+#endif
+#ifndef NC_FORMAT_64BIT
+# define NC_FORMAT_64BIT   (2)
+#endif
+#ifndef NC_FORMAT_NETCDF4
+# define NC_FORMAT_NETCDF4 (3)
+#endif
+#ifndef NC_FORMAT_NETCDF4_CLASSIC
+# define NC_FORMAT_NETCDF4_CLASSIC  (4) /* create netcdf-4 files, with NC_CLASSIC_MODEL. */
+#endif
+#ifndef NC_CHUNKED
+# define NC_CHUNKED (0)
+#endif
+#ifndef NC_CONTIGUOUS
+# define NC_CONTIGUOUS (1)
+#endif
+#ifndef NC_NOCHECKSUM
+# define NC_NOCHECKSUM 0
+#endif
+
+/* Some netCDF3 stubs for netCDF4 routines need netCDF4-only return codes
+   These netCDF4 tokens are never defined in netCDF3-only netcdf.h */
+#ifndef HAVE_NETCDF4_H
+# ifndef NC_EBADGRPID
+#  define NC_EBADGRPID (-116)    /**< Bad group ID. */
+# endif
+# ifndef NC_ENOGRP
+#  define NC_ENOGRP        (-125)    /**< No group found. */
+# endif
+#endif /* HAVE_NETCDF4_H */
+
+/* netcdf.h replaced NC_EFILLVALUE by case NC_ELATEFILL after about netCDF ~4.2.1 */
+#ifdef HAVE_NETCDF4_H
+# ifndef NC_EFILLVALUE
+#  define NC_EFILLVALUE NC_ELATEFILL
+# endif /* NC_EFILLVALUE */
+# ifndef NC_ELATEFILL
+#  define NC_ELATEFILL NC_EFILLVALUE
+# endif /* NC_ELATEFILL */
+#else /* !HAVE_NETCDF4_H */
+# define NC_ELATEFILL     (-122)    /**< Attempt to define fill value when data already exists. */
+# define NC_EFILLVALUE    (-122)    /**< Attempt to define fill value when data already exists. */
+#endif /* !HAVE_NETCDF4_H */
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -36,15 +115,27 @@ extern "C" {
 /* Begin Utility Routines */
 const char * /* O [sng] Native C type */
 c_typ_nm /* [fnc] Return string describing native C type */
-(const nc_type type); /* O [enm] netCDF type */
+(const nc_type type); /* I [enm] netCDF type */
+
+const char * /* O [sng] Native CDL type */
+cdl_typ_nm /* [fnc] Return string describing native CDL type */
+(const nc_type type); /* I [enm] netCDF type */
+
+const char * /* O [sng] Native CDL type suffix */
+cdl_typ_sfx /* [fnc] Return suffix string for CDL type */
+(const nc_type type); /* I [enm] netCDF type */
+
+const char * /* O [sng] Native XML type */
+xml_typ_nm /* [fnc] Return string describing native XML type */
+(const nc_type type); /* I [enm] netCDF type */
 
 const char * /* O [sng] Native Fortran77 type */
 f77_typ_nm /* [fnc] Return string describing native Fortran77 type */
-(const nc_type type); /* O [enm] netCDF type */
+(const nc_type type); /* I [enm] netCDF type */
 
 const char * /* O [sng] Native Fortran90 type */
 f90_typ_nm /* [fnc] Return string describing native Fortran90 type */
-(const nc_type type); /* O [enm] netCDF type */
+(const nc_type type); /* I [enm] netCDF type */
 
 void 
 nco_dfl_case_nc_type_err /* [fnc] Print error and exit for illegal switch(nc_type) case */
@@ -92,8 +183,10 @@ int ncompi_open(MPI_Comm mpi_cmm,const char * const fl_nm,const int mode,MPI_Inf
 
 /* Begin file-level routines */
 int nco_create(const char * const fl_nm,const int cmode,int * const nc_id);
+int nco__create(const char * const fl_nm,const int cmode,const size_t sz_ntl,size_t * const bfr_sz_hnt,int * const nc_id);
 int nco_open(const char * const fl_nm,const int mode,int * const nc_id);
 int nco_open_flg(const char * const fl_nm,const int mode,int * const nc_id);
+int nco__open(const char * const fl_nm,const int mode,size_t * const bfr_sz_hnt,int * const nc_id);
 int nco_redef(const int nc_id);
 int nco_set_fill(const int nc_id,const int fill_mode,int * const old_mode);
 int nco_enddef(const int nc_id);
@@ -107,9 +200,8 @@ int nco_inq(const int nc_id,int * const dmn_nbr_fl,int * const var_nbr_fl,int *
 int nc_inq_format(int nc_id, int * const fl_fmt);
 #endif /* !NEED_NC_INQ_FORMAT */
 int nco_inq_format(const int nc_id,int * const fl_fmt);
-#ifdef ENABLE_NETCDF4
 int nco_inq_ncid(const int nc_id,const char * const grp_nm,int * const grp_id);
-#endif /* !ENABLE_NETCDF4 */
+int nco_inq_ncid_flg(const int nc_id,const char * const grp_nm,int * const grp_id);
 int nco_inq_ndims(const int nc_id,int * const dmn_nbr_fl);
 int nco_inq_nvars(const int nc_id,int * const var_nbr_fl);
 int nco_inq_natts(const int nc_id,int * const att_glb_nbr);
@@ -118,18 +210,21 @@ int nco_inq_unlimdim_flg(const int nc_id,int * const rec_dmn_id);
 /* End File routines */
 
 /* Begin Group routines (_grp) */
-#ifdef ENABLE_NETCDF4
+int nco_rename_grp(int grp_id,const char * const grp_nm);
 int nco_def_grp(const int nc_id,const char * const grp_nm,int * const grp_id);
+int nco_def_grp_flg(const int nc_id,const char * const grp_nm,int * const grp_id);
 int nco_inq_dimids(const int nc_id,int * const dmn_nbr,int * const dmn_ids,int flg_prn);
 int nco_inq_grpname(const int nc_id,char * const grp_nm);
 int nco_inq_grpname_full(const int nc_id,size_t * grp_nm_lng,char * const grp_nm_fll);
 int nco_inq_grpname_len(const int nc_id,size_t * const grp_nm_lng);
 int nco_inq_grps(const int nc_id,int * const grp_nbr,int * const grp_ids);
-int nco_inq_grp_full_ncid(const int nc_id,char * const grp_nm_fll,int * const grp_id);
-int nco_inq_grp_ncid(const int nc_id,char * const grp_nm,int * const grp_id);
+int nco_inq_grp_full_ncid(const int nc_id,const char * const grp_nm_fll,int * const grp_id);
+int nco_inq_grp_full_ncid_flg(const int nc_id,const char * const grp_nm_fll,int * const grp_id);
+int nco_inq_grp_ncid(const int nc_id,const char * const grp_nm,int * const grp_id);
+int nco_inq_grp_ncid_flg(const int nc_id,const char * const grp_nm,int * const grp_id);
 int nco_inq_grp_parent(const int nc_id,int * const prn_id);
+int nco_inq_grp_parent_flg(const int nc_id,int * const prn_id);
 int nco_inq_varids(const int nc_id,int * const var_nbr,int * const var_ids);
-#endif /* !ENABLE_NETCDF4 */
 /* End Group routines */
 
 /* Begin Dimension routines (_dim) */
@@ -141,6 +236,7 @@ int nco_inq_dim_flg(const int nc_id,const int dmn_id,char *dmn_nm,long *dmn_sz);
 int nco_inq_dimname(const int nc_id,const int dmn_id,char *dmn_nm);
 int nco_inq_dimlen(const int nc_id,const int dmn_id,long *dmn_sz);
 int nco_rename_dim(const int nc_id,const int dmn_id,const char * const dmn_nm);
+int nco_inq_unlimdims(const int nc_id,int *nbr_dmn_ult,int *dmn_ids_ult);
 /* End Dimension routines */
 
 /* Begin Variable routines (_var) */
@@ -189,6 +285,11 @@ int nco_put_att(const int nc_id,const int var_id,const char * const att_nm,const
 int nco_get_att(const int nc_id,const int var_id,const char * const att_nm,void * const vp,const nc_type att_typ);
 /* End Attribute routines */
 
+/* Begin libnetcdf prototypes (i.e., for completely new library routines not yet in netcdf.h */
+#ifndef NC_HAVE_RENAME_GRP
+  int nc_rename_grp(int grp_id,const char * const grp_nm);
+#endif /* NC_HAVE_RENAME_GRP */
+
 /* Begin netCDF4 stubs */
 #ifndef HAVE_NETCDF4_H
   /* Stubs so netCDF4 functions work without protection in netCDF3 environments */
diff --git a/src/nco/nco_omp.c b/src/nco/nco_omp.c
index ddd1ac2..38885b7 100644
--- a/src/nco/nco_omp.c
+++ b/src/nco/nco_omp.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_omp.c,v 1.54 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_omp.c,v 1.62 2013/12/02 00:13:21 zender Exp $ */
 
 /* Purpose: OpenMP utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -42,7 +42,7 @@ nco_openmp_ini /* [fnc] Initialize OpenMP threading environment */
      Copy appropriate filehandle to variable scoped shared in parallel clause */
 
   char *nvr_OMP_NUM_THREADS; /* [sng] Environment variable OMP_NUM_THREADS */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
 
   nco_bool USR_SPC_THR_RQS=False;
@@ -57,7 +57,7 @@ nco_openmp_ini /* [fnc] Initialize OpenMP threading environment */
   int thr_nbr_rqs=int_CEWI; /* [nbr] Number of threads to request */
 
 #ifndef _OPENMP
-  if(dbg_lvl_get() > 0) (void)fprintf(fp_stderr,"%s: INFO Build compiler lacked (or user turned off) OpenMP support. Code will execute with single thread in Uni-Processor (UP) mode.\n",prg_nm_get());
+  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO Build compiler lacked (or user turned off) OpenMP support. Code will execute with single thread in Uni-Processor (UP) mode.\n",nco_prg_nm_get());
   return (int)1;
 #endif /* !_OPENMP */
 
@@ -70,40 +70,40 @@ nco_openmp_ini /* [fnc] Initialize OpenMP threading environment */
      Play nice: Set dynamic threading so that system can make efficiency decisions
      When dynamic threads are set, system never allocates more than thr_nbr_max_fsh */
   if(thr_nbr < 0){
-    (void)fprintf(fp_stderr,"%s: ERROR User-requested thread number = %d is less than zero\n",prg_nm_get(),thr_nbr);
+    (void)fprintf(fp_stderr,"%s: ERROR User-requested thread number = %d is less than zero\n",nco_prg_nm_get(),thr_nbr);
     nco_exit(EXIT_FAILURE);
   } /* endif err */
 
   if(thr_nbr == 0)
-    if(dbg_lvl_get() > 2)
-      (void)fprintf(fp_stderr,"%s: INFO User did not specify thread request > 0 on command line. NCO will automatically assign threads based on OMP_NUM_THREADS environment and machine capabilities.\nHINT: Not specifiying any --thr_nbr (or specifying --thr_nbr=0) causes NCO to try to pick the optimal thread number. Specifying --thr_nbr=1 tells NCO to execute in Uni-Processor (UP) (i.e., single-threaded) mode.\n",prg_nm_get());
+    if(nco_dbg_lvl_get() >= nco_dbg_scl)
+      (void)fprintf(fp_stderr,"%s: INFO User did not specify thread request > 0 on command line. NCO will automatically assign threads based on OMP_NUM_THREADS environment and machine capabilities.\nHINT: Not specifiying any --thr_nbr (or specifying --thr_nbr=0) causes NCO to try to pick the optimal thread number. Specifying --thr_nbr=1 tells NCO to execute in Uni-Processor (UP) (i.e., single-threaded) mode.\n",nco_prg_nm_get());
 
   if(thr_nbr > 0) USR_SPC_THR_RQS=True;
 
   prc_nbr_max=omp_get_num_procs(); /* [nbr] Maximum number of processors available */
   if(omp_in_parallel()){
-    (void)fprintf(fp_stderr,"%s: ERROR Attempted to get maximum thread number from within parallel region\n",prg_nm_get());
+    (void)fprintf(fp_stderr,"%s: ERROR Attempted to get maximum thread number from within parallel region\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   }else{
     thr_nbr_max=omp_get_max_threads(); /* [nbr] Maximum number of threads system allows */
   } /* end error */
 
-  if(dbg_lvl_get() > 2){
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
     if((nvr_OMP_NUM_THREADS=getenv("OMP_NUM_THREADS"))) ntg_OMP_NUM_THREADS=(int)strtol(nvr_OMP_NUM_THREADS,&sng_cnv_rcd,NCO_SNG_CNV_BASE10); /* [sng] Environment variable OMP_NUM_THREADS */
-    if(*sng_cnv_rcd) nco_sng_cnv_err(nvr_OMP_NUM_THREADS,"strtol",sng_cnv_rcd);
-    (void)fprintf(fp_stderr,"%s: INFO Environment variable OMP_NUM_THREADS ",prg_nm_get());
+    if(sng_cnv_rcd) nco_sng_cnv_err(nvr_OMP_NUM_THREADS,"strtol",sng_cnv_rcd);
+    (void)fprintf(fp_stderr,"%s: INFO Environment variable OMP_NUM_THREADS ",nco_prg_nm_get());
     if(ntg_OMP_NUM_THREADS > 0) (void)fprintf(fp_stderr,"= %d\n",ntg_OMP_NUM_THREADS); else (void)fprintf(fp_stderr,"does not exist\n");
-    (void)fprintf(fp_stderr,"%s: INFO Number of processors available is %d\n",prg_nm_get(),prc_nbr_max);
-    (void)fprintf(fp_stderr,"%s: INFO Maximum number of threads system allows is %d\n",prg_nm_get(),thr_nbr_max);
+    (void)fprintf(fp_stderr,"%s: INFO Number of processors available is %d\n",nco_prg_nm_get(),prc_nbr_max);
+    (void)fprintf(fp_stderr,"%s: INFO Maximum number of threads system allows is %d\n",nco_prg_nm_get(),thr_nbr_max);
   } /* endif dbg */
 
   if(USR_SPC_THR_RQS){
     /* Always try to honor user-specified thread request... */
     thr_nbr_rqs=thr_nbr; /* [nbr] Number of threads to request */
     /* ...if possible... */
-    if(dbg_lvl_get() > 2) (void)fprintf(fp_stderr,"%s: INFO User command-line-requested %d thread%s\n",prg_nm_get(),thr_nbr,(thr_nbr > 1) ? "s" : "");
+    if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(fp_stderr,"%s: INFO User command-line-requested %d thread%s\n",nco_prg_nm_get(),thr_nbr,(thr_nbr > 1) ? "s" : "");
     if(thr_nbr > thr_nbr_max){
-      (void)fprintf(fp_stderr,"%s: WARNING Reducing user-requested thread number = %d to maximum thread number allowed = %d\n",prg_nm_get(),thr_nbr,thr_nbr_max);
+      (void)fprintf(fp_stderr,"%s: WARNING Reducing user-requested thread number = %d to maximum thread number allowed = %d\n",nco_prg_nm_get(),thr_nbr,thr_nbr_max);
       thr_nbr_rqs=thr_nbr_max; /* [nbr] Number of threads to request */
     } /* endif */
   }else{ /* !USR_SPC_THR_RQS */
@@ -113,7 +113,7 @@ nco_openmp_ini /* [fnc] Initialize OpenMP threading environment */
     thr_nbr_rqs=thr_nbr_max; /* [nbr] Number of threads to request */
 
     /* Restrict threading on per-program basis to play nicely with others */
-    switch(prg_get()){
+    switch(nco_prg_id_get()){
       /* Operators with pre-set thread limit
 	 NB: All operators currently have default restrictions
 	 Only ncwa and ncap2 have a chance to scale on non-parallel filesystems
@@ -134,13 +134,14 @@ nco_openmp_ini /* [fnc] Initialize OpenMP threading environment */
       /* Operators with higher maximum pre-set thread limit (NB: not all of these are threaded!) */
     case ncbo: 
     case ncatted: 
-    case ncea:
+    case ncfe:
     case ncflint: 
     case ncks: 
     case ncpdq: 
     case ncra:
     case ncrename: 
     case ncwa: 
+    case ncge:
       thr_nbr_max_fsh=4;
       break;
     default: nco_dfl_case_prg_id_err(); break;
@@ -148,43 +149,43 @@ nco_openmp_ini /* [fnc] Initialize OpenMP threading environment */
     
     /* Automatic algorithm tries to play nice with others */
     (void)omp_set_dynamic(dyn_thr); /* [flg] Allow system to dynamically set number of threads */
-    if(dbg_lvl_get() > 0) (void)fprintf(fp_stderr,"%s: INFO %s OS to dynamically set threads\n",prg_nm_get(),(dyn_thr ? "Allowing" : "Not allowing"));
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO %s OS to dynamically set threads\n",nco_prg_nm_get(),(dyn_thr ? "Allowing" : "Not allowing"));
     dyn_thr=omp_get_dynamic(); /* [flg] Allow system to dynamically set number of threads */
-    if(dbg_lvl_get() > 0) (void)fprintf(fp_stderr,"%s: INFO System will%s utilize dynamic threading\n",prg_nm_get(),(dyn_thr ? "" : " not"));
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO System will%s utilize dynamic threading\n",nco_prg_nm_get(),(dyn_thr ? "" : " not"));
 
     /* Apply program/system limitations */
     if(thr_nbr_max > thr_nbr_max_fsh){
-      if(dbg_lvl_get() > 0) (void)fprintf(fp_stderr,"%s: INFO Reducing default thread number from %d to %d, an operator-dependent \"play-nice\" number set in nco_openmp_ini()\n",prg_nm_get(),thr_nbr_max,thr_nbr_max_fsh);
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO Reducing default thread number from %d to %d, an operator-dependent \"play-nice\" number set in nco_openmp_ini()\n",nco_prg_nm_get(),thr_nbr_max,thr_nbr_max_fsh);
       thr_nbr_rqs=thr_nbr_max_fsh; /* [nbr] Number of threads to request */
     } /* endif */      
   } /* !USR_SPC_THR_RQS */
 
 #ifdef ENABLE_NETCDF4
   if(thr_nbr_rqs > 1){
-    if(USR_SPC_THR_RQS && dbg_lvl_get() > 1) (void)fprintf(stdout,"%s: WARNING This is TODO nco939. Requested threading with netCDF4 (HDF5) support. The NCO thread request algorithm considers user-input, environment variables, and software and hardware limitations in determining the number of threads to request, thr_nbr_rqs. At this point NCO would request result %d threads from a netCDF3-based library. However, this NCO was built with netCDF4, which relies on HDF5. netCDF4 is not thread [...]
+    if(USR_SPC_THR_RQS && nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stdout,"%s: WARNING This is TODO nco939. Requested threading with netCDF4 (HDF5) support. The NCO thread request algorithm considers user-input, environment variables, and software and hardware limitations in determining the number of threads to request, thr_nbr_rqs. At this point NCO would request result %d threads from a netCDF3-based library. However, this NCO was built with netCDF4, which relies on HDF5. netCDF4 [...]
     thr_nbr_rqs=1;
   } /* endif */
 #endif /* !ENABLE_NETCDF4 */
 
   /* Set thread number */
   if(omp_in_parallel()){
-    (void)fprintf(fp_stderr,"%s: ERROR Attempted to set thread number from within parallel region\n",prg_nm_get());
+    (void)fprintf(fp_stderr,"%s: ERROR Attempted to set thread number from within parallel region\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   }else{
     (void)omp_set_num_threads(thr_nbr_rqs); 
-    if(dbg_lvl_get() > 0) (void)fprintf(fp_stderr,"%s: INFO omp_set_num_threads() used to set execution environment to spawn teams of %d threads\n",prg_nm_get(),thr_nbr_rqs);
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO omp_set_num_threads() used to set execution environment to spawn teams of %d threads\n",nco_prg_nm_get(),thr_nbr_rqs);
   } /* end error */
 
   thr_nbr_act=omp_get_max_threads();
-  if(dbg_lvl_get() > 2) (void)fprintf(fp_stderr,"%s: INFO After using omp_set_num_threads() to adjust for any user requests/NCO optimizations, omp_get_max_threads() reports that a parallel construct here/now would spawn %d threads\n",prg_nm_get(),thr_nbr_act);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(fp_stderr,"%s: INFO After using omp_set_num_threads() to adjust for any user requests/NCO optimizations, omp_get_max_threads() reports that a parallel construct here/now would spawn %d threads\n",nco_prg_nm_get(),thr_nbr_act);
 #ifdef _OPENMP
-  if(dbg_lvl_get() > 2){
+  if(nco_dbg_lvl_get() >= nco_dbg_scl){
 #pragma omp parallel default(none) shared(thr_nbr_act)
     { /* begin OpenMP parallel */
 #pragma omp single nowait
       { /* begin OpenMP single */
 	thr_nbr_act=omp_get_num_threads(); /* [nbr] Number of threads NCO uses */
-	if(dbg_lvl_get() > 0) (void)fprintf(fp_stderr,"%s: INFO Small parallel test region spawned team of %d threads\n",prg_nm_get(),thr_nbr_act);
+	if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO Small parallel test region spawned team of %d threads\n",nco_prg_nm_get(),thr_nbr_act);
       } /* end OpenMP single */
     } /* end OpenMP parallel */
   } /* end dbg */
@@ -202,10 +203,10 @@ nco_var_prc_crr_prn /* [fnc] Print name of current variable */
   int rcd=0; /* [rcd] Return code */
 
 #ifdef _OPENMP
-  (void)fprintf(stderr,"%s: INFO main loop thread #%d processing var_prc[%d] = \"%s\"\n",prg_nm_get(),omp_get_thread_num(),idx,var_nm);
+  (void)fprintf(stderr,"%s: INFO main loop thread #%d processing var_prc[%d] = \"%s\"\n",nco_prg_nm_get(),omp_get_thread_num(),idx,var_nm);
 #else /* !_OPENMP */
   rcd+=idx*0; /* CEWI */
-  (void)fprintf(stderr,"%s: INFO main loop processing var_prc[%d] = \"%s\"\n",prg_nm_get(),idx,var_nm);
+  (void)fprintf(stderr,"%s: INFO main loop processing var_prc[%d] = \"%s\"\n",nco_prg_nm_get(),idx,var_nm);
 #endif /* !_OPENMP */
 
   return rcd;
diff --git a/src/nco/nco_omp.h b/src/nco/nco_omp.h
index feae821..aac7b7d 100644
--- a/src/nco/nco_omp.h
+++ b/src/nco/nco_omp.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_omp.h,v 1.26 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_omp.h,v 1.30 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: OpenMP utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -15,14 +15,16 @@
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, getenv, exit */
-#include <string.h> /* strcmp. . . */
-#include <unistd.h> /* POSIX stuff */
+#include <string.h> /* strcmp() */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
 #include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
 #ifdef _OPENMP
-#include <omp.h> /* OpenMP pragmas */
+# include <omp.h> /* OpenMP pragmas */
 #endif /* !_OPENMP */
 
 /* Personal headers */
diff --git a/src/nco/nco_pck.c b/src/nco/nco_pck.c
index aecf3dc..3b3c6d9 100644
--- a/src/nco/nco_pck.c
+++ b/src/nco/nco_pck.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_pck.c,v 1.89 2012/02/14 05:39:04 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_pck.c,v 1.97 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: NCO utilities for packing and unpacking variables */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -113,7 +113,7 @@ nco_is_packable /* [fnc] Will NCO attempt to pack variable? */
      NB: Routine is deprecated in favor of more flexible nco_pck_plc_typ_get() */
   const char fnc_nm[]="nco_is_packable()"; /* [sng] Function name */
 
-  (void)fprintf(stdout,"%s: ERROR deprecated routine %s should not be called\n",prg_nm_get(),fnc_nm);
+  (void)fprintf(stdout,"%s: ERROR deprecated routine %s should not be called\n",nco_prg_nm_get(),fnc_nm);
   nco_exit(EXIT_FAILURE);
 
   switch(nc_typ_in){ 
@@ -148,11 +148,11 @@ nco_pck_map_get /* [fnc] Convert user-specified packing map to key */
      Convert user-specified string to packing map
      Return nco_pck_map_nil by default */
   const char fnc_nm[]="nco_pck_map_get()"; /* [sng] Function name */
-  char *prg_nm; /* [sng] Program name */
-  prg_nm=prg_nm_get(); /* [sng] Program name */
+  char *nco_prg_nm; /* [sng] Program name */
+  nco_prg_nm=nco_prg_nm_get(); /* [sng] Program name */
 
   if(nco_pck_map_sng == NULL){ 
-    (void)fprintf(stderr,"%s: ERROR %s reports empty user-specified packing map string %s\n",prg_nm,fnc_nm,nco_pck_map_sng);
+    (void)fprintf(stderr,"%s: ERROR %s reports empty user-specified packing map string %s\n",nco_prg_nm,fnc_nm,nco_pck_map_sng);
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
@@ -171,7 +171,7 @@ nco_pck_map_get /* [fnc] Convert user-specified packing map to key */
   if(!strcmp(nco_pck_map_sng,"flt_byt")) return nco_pck_map_flt_byt;
   if(!strcmp(nco_pck_map_sng,"pck_map_flt_byt")) return nco_pck_map_flt_byt;
 
-  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified packing map %s\n",prg_nm_get(),fnc_nm,nco_pck_map_sng);
+  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified packing map %s\n",nco_prg_nm_get(),fnc_nm,nco_pck_map_sng);
   nco_exit(EXIT_FAILURE);
   return nco_pck_map_nil; /* Statement should not be reached */
 } /* end nco_pck_map_get() */
@@ -184,17 +184,17 @@ nco_pck_plc_get /* [fnc] Convert user-specified packing policy to key */
      Convert user-specified string to packing operation type 
      Return nco_pck_plc_nil by default */
   const char fnc_nm[]="nco_pck_plc_get()"; /* [sng] Function name */
-  char *prg_nm; /* [sng] Program name */
-  prg_nm=prg_nm_get(); /* [sng] Program name */
+  char *nco_prg_nm; /* [sng] Program name */
+  nco_prg_nm=nco_prg_nm_get(); /* [sng] Program name */
 
   if(nco_pck_plc_sng == NULL){
-    if(strstr(prg_nm,"ncpdq")){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports %s invoked without explicit packing or dimension permutation options. Defaulting to packing policy \"all_new\".\n",prg_nm,fnc_nm,prg_nm);
+    if(strstr(nco_prg_nm,"ncpdq")){
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports %s invoked without explicit packing or dimension permutation options. Defaulting to packing policy \"all_new\".\n",nco_prg_nm,fnc_nm,nco_prg_nm);
       return nco_pck_plc_all_new_att;
     } /* endif */
-    if(strstr(prg_nm,"ncpack")) return nco_pck_plc_all_new_att;
-    if(strstr(prg_nm,"ncunpack")) return nco_pck_plc_upk;
-    (void)fprintf(stderr,"%s: ERROR %s reports empty user-specified packing string in conjunction with unknown or ambiguous executable name %s\n",prg_nm,fnc_nm,prg_nm);
+    if(strstr(nco_prg_nm,"ncpack")) return nco_pck_plc_all_new_att;
+    if(strstr(nco_prg_nm,"ncunpack")) return nco_pck_plc_upk;
+    (void)fprintf(stderr,"%s: ERROR %s reports empty user-specified packing string in conjunction with unknown or ambiguous executable name %s\n",nco_prg_nm,fnc_nm,nco_prg_nm);
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
@@ -208,7 +208,7 @@ nco_pck_plc_get /* [fnc] Convert user-specified packing policy to key */
   if(!strcmp(nco_pck_plc_sng,"unpack")) return nco_pck_plc_upk;
   if(!strcmp(nco_pck_plc_sng,"pck_upk")) return nco_pck_plc_upk;
 
-  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified packing policy %s\n",prg_nm_get(),fnc_nm,nco_pck_plc_sng);
+  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified packing policy %s\n",nco_prg_nm_get(),fnc_nm,nco_pck_plc_sng);
   nco_exit(EXIT_FAILURE);
   return nco_pck_plc_nil; /* Statement should not be reached */
 } /* end nco_pck_plc_get() */
@@ -375,7 +375,7 @@ nco_pck_plc_typ_get /* [fnc] Determine type, if any, to pack input type to */
     } /* end nc_type switch */ 
     break;
   default: 
-    (void)fprintf(stdout,"%s: ERROR %s reports switch(nco_pck_map) statement fell through to default case\n",prg_nm_get(),fnc_nm);
+    (void)fprintf(stdout,"%s: ERROR %s reports switch(nco_pck_map) statement fell through to default case\n",nco_prg_nm_get(),fnc_nm);
     nco_err_exit(0,fnc_nm);
     break;
   } /* end nco_pck_map switch */ 
@@ -398,7 +398,7 @@ nco_pck_dsk_inq /* [fnc] Check whether variable is packed on disk */
      Multi-file operators which handle packing must call this routine prior
      to each read of a variable, in case that variable has been unpacked.
      NB: See also nco_inq_var_packing(), a light-overhead alternative to nco_pck_dsk_inq() */
-  /* ncea -O -D 3 -v pck ~/nco/data/in.nc ~/nco/data/foo.nc */
+  /* nces -O -D 3 -v pck ~/nco/data/in.nc ~/nco/data/foo.nc */
   
   const char add_fst_sng[]="add_offset"; /* [sng] Unidata standard string for add offset */
   const char scl_fct_sng[]="scale_factor"; /* [sng] Unidata standard string for scale factor */
@@ -425,11 +425,11 @@ nco_pck_dsk_inq /* [fnc] Check whether variable is packed on disk */
   rcd=nco_inq_att_flg(nc_id,var->id,scl_fct_sng,&scl_fct_typ,&scl_fct_lng);
   if(rcd != NC_ENOTATT){
     if(scl_fct_typ == NC_BYTE || scl_fct_typ == NC_CHAR){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports scale_factor for %s is NC_BYTE or NC_CHAR. Will not attempt to unpack using scale_factor.\n",prg_nm_get(),var->nm); 
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports scale_factor for %s is NC_BYTE or NC_CHAR. Will not attempt to unpack using scale_factor.\n",nco_prg_nm_get(),var->nm); 
       return False;
     } /* endif */
     if(scl_fct_lng != 1){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports %s has scale_factor of length %li. Will not attempt to unpack using scale_factor\n",prg_nm_get(),var->nm,scl_fct_lng); 
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports %s has scale_factor of length %li. Will not attempt to unpack using scale_factor\n",nco_prg_nm_get(),var->nm,scl_fct_lng); 
       return False;
     } /* endif */
     var->has_scl_fct=True; /* [flg] Valid scale_factor attribute exists */
@@ -440,11 +440,11 @@ nco_pck_dsk_inq /* [fnc] Check whether variable is packed on disk */
   rcd=nco_inq_att_flg(nc_id,var->id,add_fst_sng,&add_fst_typ,&add_fst_lng);
   if(rcd != NC_ENOTATT){
     if(add_fst_typ == NC_BYTE || add_fst_typ == NC_CHAR){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports add_offset for %s is NC_BYTE or NC_CHAR. Will not attempt to unpack using add_offset.\n",prg_nm_get(),var->nm); 
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports add_offset for %s is NC_BYTE or NC_CHAR. Will not attempt to unpack using add_offset.\n",nco_prg_nm_get(),var->nm); 
       return False;
     } /* endif */
     if(add_fst_lng != 1){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports %s has add_offset of length %li. Will not attempt to unpack.\n",prg_nm_get(),var->nm,add_fst_lng); 
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports %s has add_offset of length %li. Will not attempt to unpack.\n",nco_prg_nm_get(),var->nm,add_fst_lng); 
       return False;
     } /* endif */
     var->has_add_fst=True; /* [flg] Valid add_offset attribute exists */
@@ -453,7 +453,7 @@ nco_pck_dsk_inq /* [fnc] Check whether variable is packed on disk */
 
   if(var->has_scl_fct && var->has_add_fst){
     if(scl_fct_typ != add_fst_typ){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports type of scale_factor does not equal type of add_offset. Will not attempt to unpack.\n",prg_nm_get());
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING nco_pck_dsk_inq() reports type of scale_factor does not equal type of add_offset. Will not attempt to unpack.\n",nco_prg_nm_get());
       return False;
     } /* endif */
   } /* endif */
@@ -464,9 +464,9 @@ nco_pck_dsk_inq /* [fnc] Check whether variable is packed on disk */
     /* If variable is packed on disk and is in memory then variable is packed in memory */
     var->pck_ram=True; /* [flg] Variable is packed in memory */
     var->typ_upk=(var->has_scl_fct) ? scl_fct_typ : add_fst_typ; /* [enm] Type of variable when unpacked (expanded) (in memory) */
-    if(nco_is_rth_opr(prg_get()) && dbg_lvl_get() >= nco_dbg_var){
-      (void)fprintf(stdout,"%s: PACKING Variable %s is type %s packed into type %s\n",prg_nm_get(),var->nm,nco_typ_sng(var->typ_upk),nco_typ_sng(var->typ_dsk));
-      (void)fprintf(stdout,"%s: DEBUG Packed variables processed by all arithmetic operators are unpacked automatically, and then stored unpacked in the output file. If you wish to repack them in the output file, use, e.g., ncap -O -s \"foo=pack(foo);\" out.nc out.nc. If you wish to pack all variables in a file, use, e.g., ncpdq -P all_new in.nc out.nc.\n",prg_nm_get());
+    if(nco_is_rth_opr(nco_prg_id_get()) && nco_dbg_lvl_get() >= nco_dbg_var){
+      (void)fprintf(stdout,"%s: PACKING Variable %s is type %s packed into type %s\n",nco_prg_nm_get(),var->nm,nco_typ_sng(var->typ_upk),nco_typ_sng(var->typ_dsk));
+      (void)fprintf(stdout,"%s: DEBUG Packed variables processed by all arithmetic operators are unpacked automatically, and then stored unpacked in the output file. If you wish to repack them in the output file, use, e.g., ncap2 -O -s \"foo=pack(foo);\" out.nc out.nc. If you wish to pack all variables in a file, use, e.g., ncpdq -P all_new in.nc out.nc.\n",nco_prg_nm_get());
     } /* endif print packing information */
   }else{
     /* Variable is not packed since neither scale factor nor add_offset exist
@@ -494,7 +494,7 @@ nco_pck_mtd /* [fnc] Alter metadata according to packing specification */
   case nco_pck_plc_all_xst_att:
     /* If variable is already packed do nothing otherwise pack to default type */
     if(var_in->pck_ram){
-      if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: DEBUG %s keeping existing packing parameters and type (%s) for %s\n",prg_nm_get(),fnc_nm,nco_typ_sng(var_in->type),var_in->nm);
+      if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: DEBUG %s keeping existing packing parameters and type (%s) for %s\n",nco_prg_nm_get(),fnc_nm,nco_typ_sng(var_in->type),var_in->nm);
     }else{
       goto var_upk_try_to_pck;
     } /* endif */
@@ -505,7 +505,7 @@ nco_pck_mtd /* [fnc] Alter metadata according to packing specification */
       goto var_pck_try_to_rpk;
     }else{
       /* Variable is not packed so do nothing */
-      if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s leaving variable %s of type %s as unpacked\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_out->typ_upk));
+      if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s leaving variable %s of type %s as unpacked\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_out->typ_upk));
     } /* endelse */
     break;
   case nco_pck_plc_all_new_att:
@@ -517,8 +517,8 @@ nco_pck_mtd /* [fnc] Alter metadata according to packing specification */
     break;
   case nco_pck_plc_upk:
     var_out->type=var_in->typ_upk;
-    if(dbg_lvl_get() >= nco_dbg_sbr){
-      if(var_in->pck_ram) (void)fprintf(stdout,"%s: DEBUG %s will unpack variable %s from %s to %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->type),nco_typ_sng(var_out->type)); else (void)fprintf(stdout,"%s: DEBUG %s variable %s is already unpacked and of type %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->type)); 
+    if(nco_dbg_lvl_get() >= nco_dbg_sbr){
+      if(var_in->pck_ram) (void)fprintf(stdout,"%s: DEBUG %s will unpack variable %s from %s to %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->type),nco_typ_sng(var_out->type)); else (void)fprintf(stdout,"%s: DEBUG %s variable %s is already unpacked and of type %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->type)); 
     } /* endif dbg */
     break;
   case nco_pck_plc_nil:
@@ -533,9 +533,9 @@ nco_pck_mtd /* [fnc] Alter metadata according to packing specification */
   /* Variable is not yet packed---try to pack it */
   if(nco_pck_plc_typ_get(nco_pck_map,var_in->type,&nc_typ_pck_out)){
     var_out->type=nc_typ_pck_out;
-    if(dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: DEBUG %s will pack variable %s from %s to %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->type),nco_typ_sng(var_out->type));
+    if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: DEBUG %s will pack variable %s from %s to %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->type),nco_typ_sng(var_out->type));
   }else{
-    if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s packing policy %s with packing map %s does not allow packing variable %s of type %s, skipping...\n",prg_nm_get(),fnc_nm,nco_pck_plc_sng_get(nco_pck_plc),nco_pck_map_sng_get(nco_pck_map),var_in->nm,nco_typ_sng(var_in->type));
+    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s packing policy %s with packing map %s does not allow packing variable %s of type %s, skipping...\n",nco_prg_nm_get(),fnc_nm,nco_pck_plc_sng_get(nco_pck_plc),nco_pck_map_sng_get(nco_pck_map),var_in->nm,nco_typ_sng(var_in->type));
   } /* !nco_pck_plc_alw */
   return;
   
@@ -544,9 +544,9 @@ nco_pck_mtd /* [fnc] Alter metadata according to packing specification */
      Final packed variable type may differ from original */
   if(nco_pck_plc_typ_get(nco_pck_map,var_in->typ_upk,&nc_typ_pck_out)){
     var_out->type=nc_typ_pck_out;
-    if(dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: DEBUG %s will re-pack variable %s of expanded type %s from current packing (type %s) into new packing of type %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->typ_upk),nco_typ_sng(var_in->type),nco_typ_sng(var_out->type));
+    if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: DEBUG %s will re-pack variable %s of expanded type %s from current packing (type %s) into new packing of type %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->typ_upk),nco_typ_sng(var_in->type),nco_typ_sng(var_out->type));
   }else{
-    if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: WARNING %s variable %s of expanded type %s is already packed into type %s and re-packing is requested but packing policy %s and packing map %s does not allow re-packing variables of type %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->typ_upk),nco_typ_sng(var_in->type),nco_pck_plc_sng_get(nco_pck_plc),nco_pck_map_sng_get(nco_pck_map),nco_typ_sng(var_in->typ_upk));
+    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: WARNING %s variable %s of expanded type %s is already packed into type %s and re-packing is requested but packing policy %s and packing map %s does not allow re-packing variables of type %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_in->typ_upk),nco_typ_sng(var_in->type),nco_pck_plc_sng_get(nco_pck_plc),nco_pck_map_sng_get(nco_pck_map),nco_typ_sng(var_in->typ_upk));
   } /* !nco_pck_plc_alw */
   return;
 
@@ -577,9 +577,9 @@ nco_pck_val /* [fnc] Pack variable according to packing specification */
     /* nco_var_pck() expects to alter var_out->type itself, if necessary */
     var_out->type=var_in->typ_dsk;
     if(var_in->pck_ram){
-      if(dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: INFO %s keeping existing packing attributes for variable %s\n",prg_nm_get(),fnc_nm,var_in->nm);
+      if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: INFO %s keeping existing packing attributes for variable %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm);
       /* Warn if packing attribute values are in memory for pre-packed variables */
-      if(var_out->scl_fct.vp || var_out->add_fst.vp) (void)fprintf(stdout,"%s: WARNING %s reports variable %s has packing attribute values in memory. This is not supposed to happen through known code paths, but is not necessarily dangerous.\n",prg_nm_get(),fnc_nm,var_in->nm);
+      if(var_out->scl_fct.vp || var_out->add_fst.vp) (void)fprintf(stdout,"%s: WARNING %s reports variable %s has packing attribute values in memory. This is not supposed to happen through known code paths, but is not necessarily dangerous.\n",nco_prg_nm_get(),fnc_nm,var_in->nm);
       /* Remove dangling pointer, see explanation below */
       var_in->val.vp=NULL; 
     }else{
@@ -619,10 +619,10 @@ nco_pck_val /* [fnc] Pack variable according to packing specification */
  var_upk_try_to_pck: /* end goto */
   /* Variable is not yet packed---try to pack it */
   if(nco_pck_plc_typ_get(nco_pck_map,var_out->type,(nc_type *)NULL)){
-    if(dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: INFO %s packing variable %s values from %s to %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_out->typ_upk),nco_typ_sng(typ_out));
+    if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: INFO %s packing variable %s values from %s to %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_out->typ_upk),nco_typ_sng(typ_out));
     var_out=nco_var_pck(var_out,typ_out,&PCK_VAR_WITH_NEW_PCK_ATT);
   }else{
-    if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s packing policy %s with packing map %s does not allow packing variable %s of type %s, skipping...\n",prg_nm_get(),fnc_nm,nco_pck_plc_sng_get(nco_pck_plc),nco_pck_map_sng_get(nco_pck_map),var_in->nm,nco_typ_sng(var_out->typ_upk));
+    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO %s packing policy %s with packing map %s does not allow packing variable %s of type %s, skipping...\n",nco_prg_nm_get(),fnc_nm,nco_pck_plc_sng_get(nco_pck_plc),nco_pck_map_sng_get(nco_pck_map),var_in->nm,nco_typ_sng(var_out->typ_upk));
   } /* !nco_pck_plc_alw */ 
   /* Packing function nco_var_pck() usually free()'s var_out->val.vp 
      Hence var_in->val.vp is left with a dangling pointer
@@ -722,13 +722,13 @@ nco_var_pck /* [fnc] Pack variable in memory */
   if(var->pck_ram) return var;
 
   /* Routine should be called with variable already in memory */
-  if(var->val.vp == NULL) (void)fprintf(stdout,"%s: ERROR %s called with empty var->val.vp\n",prg_nm_get(),fnc_nm);
+  if(var->val.vp == NULL) (void)fprintf(stdout,"%s: ERROR %s called with empty var->val.vp\n",nco_prg_nm_get(),fnc_nm);
   
   /* Packed type must be NC_BYTE, NC_CHAR, NC_SHORT, or NC_INT */
   if(nc_typ_pck == NC_FLOAT || nc_typ_pck == NC_DOUBLE || 
      nc_typ_pck == NC_UINT  || nc_typ_pck == NC_USHORT || 
      nc_typ_pck == NC_UBYTE || nc_typ_pck == NC_STRING){
-    (void)fprintf(stdout,"%s: ERROR %s called to pack variable %s with invalid packed type nc_typ_pck = %s\n",prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(nc_typ_pck));
+    (void)fprintf(stdout,"%s: ERROR %s called to pack variable %s with invalid packed type nc_typ_pck = %s\n",nco_prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(nc_typ_pck));
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
@@ -737,7 +737,7 @@ nco_var_pck /* [fnc] Pack variable in memory */
      Prefer not to make nco_var_pck() rely directly on nco_pck_plc_typ_get()
      However, certain types are never packable */
   if(var->type == NC_BYTE || var->type == NC_UBYTE || var->type == NC_CHAR || var->type == NC_STRING){
-    (void)fprintf(stdout,"%s: ERROR %s is asked to pack variable %s of type %s\n",prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(var->type));
+    (void)fprintf(stdout,"%s: ERROR %s is asked to pack variable %s of type %s\n",nco_prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(var->type));
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
@@ -879,15 +879,15 @@ nco_var_pck /* [fnc] Pack variable in memory */
       case NC_STRING: break; /* Do nothing */
       default: nco_dfl_case_nc_type_err(); break;
       } /* end switch */ 
-      if(dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: %s mss_val_dfl_dbl = %g, pck_rng_min_dbl = %g, pck_rng_max_dbl = %g, \n",prg_nm_get(),fnc_nm,mss_val_dfl_dbl,pck_rng_min_dbl,pck_rng_max_dbl);
+      if(nco_dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: %s mss_val_dfl_dbl = %g, pck_rng_min_dbl = %g, pck_rng_max_dbl = %g, \n",nco_prg_nm_get(),fnc_nm,mss_val_dfl_dbl,pck_rng_min_dbl,pck_rng_max_dbl);
 
       mss_val_dbl=ptr_unn_mss_val_dbl.dp[0];
       if(nc_typ_pck != NC_STRING && (mss_val_dbl < pck_rng_min_dbl || mss_val_dbl > pck_rng_max_dbl)){ 
-	(void)fprintf(stdout,"%s: WARNING %s reports mss_val_dbl (= %g) is outside range (%g <= x <= %g) represented by packed data type (= %s). Conversion of missing values is unpredictable and could lead to erroneous results. Workaround is to set _FillValue to be within packed range with, e.g.,\nncatted -O -a _FillValue,,o,f,%g inout.nc\nFor more information on this workaround, see\nhttp://nco.sf.net/nco.html#mss_val\n",prg_nm_get(),fnc_nm,mss_val_dbl,pck_rng_min_dbl,pck_rng_max_dbl,nco_typ_s [...]
+	(void)fprintf(stdout,"%s: WARNING %s reports mss_val_dbl (= %g) is outside range (%g <= x <= %g) represented by packed data type (= %s). Conversion of missing values is unpredictable and could lead to erroneous results. Workaround is to set _FillValue to be within packed range with, e.g.,\nncatted -O -a _FillValue,,o,f,%g inout.nc\nFor more information on this workaround, see\nhttp://nco.sf.net/nco.html#mss_val\n",nco_prg_nm_get(),fnc_nm,mss_val_dbl,pck_rng_min_dbl,pck_rng_max_dbl,nco_t [...]
       } /* NC_STRING */
     } /* end if(var->has_mss_val && !PURE_MSS_VAL_FLD) */
 
-    if(dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: %s: min_var = %g, max_var = %g\n",prg_nm_get(),var->nm,min_var->val.dp[0],max_var->val.dp[0]);
+    if(nco_dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: %s: min_var = %g, max_var = %g\n",nco_prg_nm_get(),var->nm,min_var->val.dp[0],max_var->val.dp[0]);
 
     /* add_offset is 0.5*(min+max) */
     /* max_var->val is overridden with add_offset answers, no longer valid as max_var */
@@ -941,8 +941,8 @@ nco_var_pck /* [fnc] Pack variable in memory */
     } /* end else */
 
     if(max_mns_min_dbl > max_mns_min_dbl_wrn){
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING %s reports data range of variable %s is = %g. The linear data packing technique defined by netCDF's packing convention and implemented by NCO result in significant precision loss over such a great range.\n",prg_nm_get(),fnc_nm,var->nm,max_mns_min_dbl);
-      if(dbg_lvl_get() >= nco_dbg_std) if(var->has_mss_val) (void)fprintf(stdout,"%s: HINT variable %s has %s = %g. Consider specifying new %s to reduce range of data needing packing. See http://nco.sf.net/nco.html#ncatted for examples of how to change the %s attribute.\n",prg_nm_get(),var->nm,nco_mss_val_sng_get(),ptr_unn_mss_val_dbl.dp[0],nco_mss_val_sng_get(),nco_mss_val_sng_get());
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING %s reports data range of variable %s is = %g. The linear data packing technique defined by netCDF's packing convention and implemented by NCO result in significant precision loss over such a great range.\n",nco_prg_nm_get(),fnc_nm,var->nm,max_mns_min_dbl);
+      if(nco_dbg_lvl_get() >= nco_dbg_std) if(var->has_mss_val) (void)fprintf(stdout,"%s: HINT variable %s has %s = %g. Consider specifying new %s to reduce range of data needing packing. See http://nco.sf.net/nco.html#ncatted for examples of how to change the %s attribute.\n",nco_prg_nm_get(),var->nm,nco_mss_val_sng_get(),ptr_unn_mss_val_dbl.dp[0],nco_mss_val_sng_get(),nco_mss_val_sng_get());
     } /* endif large data range */
 
     /* Free minimum and maximum values */
@@ -976,7 +976,7 @@ nco_var_pck /* [fnc] Pack variable in memory */
   /* Create double precision value of scale_factor for diagnostics */
   if(var->has_scl_fct){ /* [flg] Valid scale_factor attribute exists */
     scl_fct_dbl=ptr_unn_2_scl_dbl(var->scl_fct,var->type); 
-    if(scl_fct_dbl == 0.0 && dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING %s reports scl_fct_dbl = 0.0\n",prg_nm_get(),fnc_nm);
+    if(scl_fct_dbl == 0.0 && nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: WARNING %s reports scl_fct_dbl = 0.0\n",nco_prg_nm_get(),fnc_nm);
   } /* endif */
   
   /* Create double precision value of add_offset for diagnostics */
@@ -984,7 +984,7 @@ nco_var_pck /* [fnc] Pack variable in memory */
     add_fst_dbl=ptr_unn_2_scl_dbl(var->add_fst,var->type);
   } /* endif */
   
-  if(dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: %s reports variable %s has scl_fct_dbl = %g, add_fst_dbl = %g\n",prg_nm_get(),fnc_nm,var->nm,scl_fct_dbl,add_fst_dbl);
+  if(nco_dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: %s reports variable %s has scl_fct_dbl = %g, add_fst_dbl = %g\n",nco_prg_nm_get(),fnc_nm,var->nm,scl_fct_dbl,add_fst_dbl);
   
   /* Packing attributes now exist and are same type as variable in memory */
 
@@ -1006,7 +1006,7 @@ nco_var_pck /* [fnc] Pack variable in memory */
     /* Dupe var_scv_sub() into subtracting missing values when all values are missing */
     if(PURE_MSS_VAL_FLD){
       has_mss_val_tmp=False;
-      if(dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports variable %s is filled completely with %s = %g. Why do you store variables with no valid values?\n",prg_nm_get(),fnc_nm,var->nm,nco_mss_val_sng_get(),add_fst_dbl);
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO %s reports variable %s is filled completely with %s = %g. Why do you store variables with no valid values?\n",nco_prg_nm_get(),fnc_nm,var->nm,nco_mss_val_sng_get(),add_fst_dbl);
     } /* !PURE_MSS_VAL_FLD */
     (void)var_scv_sub(var->type,var->sz,has_mss_val_tmp,var->mss_val,var->val,&add_fst_scv);
   } /* endif */
@@ -1021,7 +1021,7 @@ nco_var_pck /* [fnc] Pack variable in memory */
   } /* endif */
 
   if(!var->has_scl_fct && !var->has_add_fst){
-    (void)fprintf(stderr,"%s: ERROR Reached end of %s without packing variable\n",prg_nm_get(),fnc_nm);
+    (void)fprintf(stderr,"%s: ERROR Reached end of %s without packing variable\n",nco_prg_nm_get(),fnc_nm);
     nco_exit(EXIT_FAILURE);
   }else{
     *PCK_VAR_WITH_NEW_PCK_ATT=True; /* O [flg] Routine generated new scale_factor/add_offset */
@@ -1039,7 +1039,7 @@ nco_var_pck /* [fnc] Pack variable in memory */
      This is where var->type is changed from original to packed type */
   var=nco_var_cnf_typ(nc_typ_pck,var);
 
-  if(dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: PACKING %s packed %s into %s\n",prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(var->type));
+  if(nco_dbg_lvl_get() >= nco_dbg_sbr) (void)fprintf(stdout,"%s: PACKING %s packed %s into %s\n",nco_prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(var->type));
 
   return var;
 } /* end nco_var_pck() */
@@ -1064,36 +1064,78 @@ nco_var_upk /* [fnc] Unpack variable in memory */
 
   /* Routine should be called with variable already in memory */
   if(var->val.vp == NULL){
-    (void)fprintf(stdout,"%s: ERROR nco_var_upk() called with empty var->val.vp\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR nco_var_upk() called with empty var->val.vp\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
   /* Packed variables are not guaranteed to have both scale_factor and add_offset
-     scale_factor is guaranteed to be of type NC_FLOAT or NC_DOUBLE and of size 1 (a scalar) */
+     scale_factor is guaranteed to be of type NC_FLOAT or NC_DOUBLE and of size 1 (a scalar)
+     Hence algorithm create scalar value structures from values of scale_factor, add_offset */
+
+  /* 20130729:
+     Rumors are true: 
+     NASA HDF data, including NASA MODIS swaths, expect offsets to be _subtracted_ then scaled!
+     http://modis-atmos.gsfc.nasa.gov/MOD08_D3/faq.html
+     The netCDF convention for packing is opposite:
+     http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/Attribute-Conventions.html
+     Hence unpacking NASA SDS data requires re-ordering and re-defining the netCDF-standard unpacking algorithm */
+
+  /* Test unpacking conventions:
+     ncpdq -O -C -U       -v ^pck_.? ~/nco/data/in.nc ~/foo.nc # Unpack netCDF
+     ncpdq -O -C -U --hdf -v ^pck_.? ~/nco/data/in.nc ~/foo.nc # Unpack HDF
+     ncpdq -O -C -P --hdf -v ^pck_.? ~/nco/data/in.nc ~/foo.nc # Unpack HDF and re-pack netCDF */
+
+  if(nco_upk_cnv_get() == nco_upk_netCDF){
+    /* netCDF unpack definition: unpacked=(scale_factor*packed)+add_offset */
+    
+    if(var->has_scl_fct){ /* [flg] Valid scale_factor attribute exists */
+      scv_sct scl_fct_scv;
+      var->scl_fct.vp=(void *)nco_malloc(nco_typ_lng(var->typ_upk));
+      (void)nco_get_att(var->nc_id,var->id,scl_fct_sng,var->scl_fct.vp,var->typ_upk);
+      scl_fct_scv=ptr_unn_2_scv(var->typ_upk,var->scl_fct);
+      /* Convert var to type of scale_factor for expansion */
+      var=nco_var_cnf_typ(scl_fct_scv.type,var);
+      /* Multiply var by scale_factor */
+      (void)var_scv_mlt(var->type,var->sz,var->has_mss_val,var->mss_val,var->val,&scl_fct_scv);
+    } /* endif has_scl_fct */
+    
+    if(var->has_add_fst){ /* [flg] Valid add_offset attribute exists */
+      scv_sct add_fst_scv;
+      var->add_fst.vp=(void *)nco_malloc(nco_typ_lng(var->typ_upk));
+      (void)nco_get_att(var->nc_id,var->id,add_fst_sng,var->add_fst.vp,var->typ_upk);
+      add_fst_scv=ptr_unn_2_scv(var->typ_upk,var->add_fst);
+      /* Convert var to type of scale_factor for expansion */
+      var=nco_var_cnf_typ(add_fst_scv.type,var);
+      /* Add add_offset to var */
+      (void)var_scv_add(var->type,var->sz,var->has_mss_val,var->mss_val,var->val,&add_fst_scv);
+    } /* endif has_add_fst */
 
-  /* Create scalar value structures from values of scale_factor, add_offset */
-  if(var->has_scl_fct){ /* [flg] Valid scale_factor attribute exists */
-    scv_sct scl_fct_scv;
-    var->scl_fct.vp=(void *)nco_malloc(nco_typ_lng(var->typ_upk));
-    (void)nco_get_att(var->nc_id,var->id,scl_fct_sng,var->scl_fct.vp,var->typ_upk);
-    scl_fct_scv=ptr_unn_2_scv(var->typ_upk,var->scl_fct);
-    /* Convert var to type of scale_factor for expansion */
-    var=nco_var_cnf_typ(scl_fct_scv.type,var);
-    /* Multiply var by scale_factor */
-    (void)var_scv_mlt(var->type,var->sz,var->has_mss_val,var->mss_val,var->val,&scl_fct_scv);
-  } /* endif has_scl_fct */
+  }else{ /* !netCDF_unpack_convention */
+    /* 20130729: NASA HDF unpack definition: unpacked=scale_factor*(packed-add_offset) */
 
-  if(var->has_add_fst){ /* [flg] Valid add_offset attribute exists */
-    scv_sct add_fst_scv;
-    var->add_fst.vp=(void *)nco_malloc(nco_typ_lng(var->typ_upk));
-    /* fxm TODO nco638 */
-    (void)nco_get_att(var->nc_id,var->id,add_fst_sng,var->add_fst.vp,var->typ_upk);
-    add_fst_scv=ptr_unn_2_scv(var->typ_upk,var->add_fst);
-    /* Convert var to type of scale_factor for expansion */
-    var=nco_var_cnf_typ(add_fst_scv.type,var);
-    /* Add add_offset to var */
-    (void)var_scv_add(var->type,var->sz,var->has_mss_val,var->mss_val,var->val,&add_fst_scv);
-  } /* endif has_add_fst */
+    if(var->has_add_fst){ /* [flg] Valid add_offset attribute exists */
+      scv_sct add_fst_scv;
+      var->add_fst.vp=(void *)nco_malloc(nco_typ_lng(var->typ_upk));
+      (void)nco_get_att(var->nc_id,var->id,add_fst_sng,var->add_fst.vp,var->typ_upk);
+      add_fst_scv=ptr_unn_2_scv(var->typ_upk,var->add_fst);
+      /* Convert var to type of scale_factor for expansion */
+      var=nco_var_cnf_typ(add_fst_scv.type,var);
+      /* Subtract add_offset from var */
+      (void)var_scv_sub(var->type,var->sz,var->has_mss_val,var->mss_val,var->val,&add_fst_scv);
+    } /* endif has_add_fst */
+
+    if(var->has_scl_fct){ /* [flg] Valid scale_factor attribute exists */
+      scv_sct scl_fct_scv;
+      var->scl_fct.vp=(void *)nco_malloc(nco_typ_lng(var->typ_upk));
+      (void)nco_get_att(var->nc_id,var->id,scl_fct_sng,var->scl_fct.vp,var->typ_upk);
+      scl_fct_scv=ptr_unn_2_scv(var->typ_upk,var->scl_fct);
+      /* Convert var to type of scale_factor for expansion */
+      var=nco_var_cnf_typ(scl_fct_scv.type,var);
+      /* Multiply var by scale_factor */
+      (void)var_scv_mlt(var->type,var->sz,var->has_mss_val,var->mss_val,var->val,&scl_fct_scv);
+    } /* endif has_scl_fct */
+    
+  } /* !netCDF_unpack_convention */
 
   if(var->has_mss_val) var=nco_cnv_mss_val_typ(var,var->type);
 
@@ -1106,7 +1148,7 @@ nco_var_upk /* [fnc] Unpack variable in memory */
   var->scl_fct.vp=nco_free(var->scl_fct.vp);
   var->add_fst.vp=nco_free(var->add_fst.vp);
 
-  if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: PACKING %s unpacked %s into %s\n",prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(var->type));
+  if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: PACKING %s unpacked %s into %s\n",nco_prg_nm_get(),fnc_nm,var->nm,nco_typ_sng(var->type));
 
   return var;
 } /* end nco_var_upk() */
@@ -1133,9 +1175,9 @@ nco_var_upk_swp /* [fnc] Unpack var_in into var_out */
   var_sct *var_tmp; /* [sct] Temporary variable to be unpacked */
   
   if(var_in->pck_ram){
-    if(dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: DEBUG %s unpacking variable %s values from %s to %s\n",prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_out->typ_pck),nco_typ_sng(var_out->typ_upk));
+    if(nco_dbg_lvl_get() >= nco_dbg_io) (void)fprintf(stdout,"%s: DEBUG %s unpacking variable %s values from %s to %s\n",nco_prg_nm_get(),fnc_nm,var_in->nm,nco_typ_sng(var_out->typ_pck),nco_typ_sng(var_out->typ_upk));
   }else{
-    (void)fprintf(stderr,"%s: ERROR %s variable %s is already unpacked\n",prg_nm_get(),fnc_nm,var_in->nm);
+    (void)fprintf(stderr,"%s: ERROR %s variable %s is already unpacked\n",nco_prg_nm_get(),fnc_nm,var_in->nm);
     nco_exit(EXIT_FAILURE);
   } /* endif not already packed */
 
@@ -1173,4 +1215,3 @@ nco_var_upk_swp /* [fnc] Unpack var_in into var_out */
   var_tmp->val.vp=NULL;
   if(var_tmp) var_tmp=nco_var_free(var_tmp);
 } /* end nco_var_upk_swp() */
-
diff --git a/src/nco/nco_pck.h b/src/nco/nco_pck.h
index 02826dd..9c06e85 100644
--- a/src/nco/nco_pck.h
+++ b/src/nco/nco_pck.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_pck.h,v 1.49 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_pck.h,v 1.51 2013/07/30 07:20:07 pvicente Exp $ */
 
 /* Purpose: Description (definition) of packing/unpacking functions */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -33,7 +33,7 @@
 
 /* Packing policies: 
    Handle each packing policy in nco_pck_mtd(), nco_pck_val(), nco_var_dfn(), and end of ncpdq */
-enum nco_pck_plc{ /* [enm] Packing policy */
+enum nco_pck_plc_enm{ /* [enm] Packing policy */
   nco_pck_plc_nil, /* 0 [enm] Do not think about packing */
   nco_pck_plc_all_xst_att, /* 1 [enm] Pack all variables, keep existing packing attributes if any */
   nco_pck_plc_all_new_att, /* 2 [enm] Pack all variables, always generate new packing attributes */
diff --git a/src/nco/nco_prn.c b/src/nco/nco_prn.c
index 17a3ede..77779eb 100644
--- a/src/nco/nco_prn.c
+++ b/src/nco/nco_prn.c
@@ -1,42 +1,81 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_prn.c,v 1.72 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_prn.c,v 1.196 2013/11/24 04:05:41 zender Exp $ */
 
-/* Purpose: Printing variables, attributes, metadata */
+/* Purpose: Print variables, attributes, metadata */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
-#include "nco_prn.h" /* Printing variables, attributes, metadata */
+#include "nco_prn.h" /* Print variables, attributes, metadata */
 
 void 
-nco_prn_att /* [fnc] Print all attributes of single variable */
-(const int in_id, /* I [id] netCDF input file ID */
+nco_prn_att /* [fnc] Print all attributes of single variable or group */
+(const int grp_id, /* I [id] netCDF group ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
  const int var_id) /* I [id] netCDF input variable ID */
 {
-  /* Purpose: Print all global attributes in netCDF file,
+  /* Purpose: Print all global attributes in netCDF group,
      or all attributes for particular netCDF variable. 
-     If var_id == NC_GLOBAL ( = -1) then global attributes are printed,
+     If var_id == NC_GLOBAL ( = -1) then global/group attributes are printed,
      otherwise variable's attributes are printed. */
 
   att_sct *att=NULL_CEWI;
 
-  char dlm_sng[3];
+  const char spc_sng[]=""; /* [sng] Space string */
+
+  char *nm_cdl;
+  char *sng_val_sng; /* [sng] String of NC_CHAR */
+  char *sng_val_sng_cpy; /* [sng] Copy of sng_val_sng to avoid cppcheck error about using sng_val_sng as both parameter and desitnation in sprintf(). NB: free() only one of these two pointers. */
+  char *spr_sng=NULL; /* [sng] Output separator string */
+
+  char cma_sng[]=", "; /* [sng] Comma string */
+  char spr_xml_chr[]="*"; /* [sng] Default XML separator for character types */
+  char spr_xml_chr_bck[]="*|*"; /* [sng] Backup default XML separator for character types */
+  char spr_xml_nmr[]=" "; /* [sng] Default XML separator for numeric types */
+
+  char chr_val; /* [sng] Current character */
+
+  char att_sng_dlm[NCO_MAX_LEN_FMT_SNG];
+  char att_sng_pln[NCO_MAX_LEN_FMT_SNG];
   char src_sng[NC_MAX_NAME];
-  char att_sng[NCO_MAX_LEN_FMT_SNG];
+  char val_sng[NCO_ATM_SNG_LNG];
 
-  long att_lmn;
-  long att_sz;
-  
+  double val_dbl;
+
+  float val_flt;
+
+  int grp_id_prn;
   int idx;
   int nbr_att;
+  int prn_ndn=0; /* [nbr] Indentation for printing */
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int rcd_prn;
+
+  long att_sz;
+  long att_szm1;
+  long chr_idx;
+  long lmn;
+  long sng_lng; /* [nbr] Length of NC_CHAR string */
+  long sng_lngm1; /* [nbr] Length minus one of NC_CHAR string */
+  
+  nco_bool has_fll_val=False; /* [flg] Has _FillValue attribute */
+
+  nco_string sng_val; /* [sng] Current string */
 
+  prn_ndn=prn_flg->ndn;
   if(var_id == NC_GLOBAL){
-    /* Get number of global attributes in file */
-    (void)nco_inq(in_id,(int *)NULL,(int *)NULL,&nbr_att,(int *)NULL);
-    (void)strcpy(src_sng,"Global");
+    /* Get number of global attributes in group */
+    (void)nco_inq(grp_id,(int *)NULL,(int *)NULL,&nbr_att,(int *)NULL);
+    /* Which group is this? */
+    rcd=nco_inq_grp_parent_flg(grp_id,&grp_id_prn);
+    if(rcd == NC_ENOGRP) (void)strcpy(src_sng,(prn_flg->cdl) ? "" : "Global"); else (void)strcpy(src_sng,(prn_flg->cdl) ? "" : "Group");
+    if(prn_flg->cdl) prn_ndn+=prn_flg->sxn_fst;
   }else{
     /* Get name and number of attributes for variable */
-    (void)nco_inq_var(in_id,var_id,src_sng,(nc_type *)NULL,(int *)NULL,(int *)NULL,&nbr_att);
+    (void)nco_inq_var(grp_id,var_id,src_sng,(nc_type *)NULL,(int *)NULL,(int *)NULL,&nbr_att);
+    if(prn_flg->cdl) prn_ndn+=2*prn_flg->var_fst;
+    if(prn_flg->xml) prn_ndn+=prn_flg->sxn_fst;
+    if(prn_flg->new_fmt && prn_flg->trd) prn_ndn+=prn_flg->var_fst;
   } /* end else */
 
   /* Allocate space for attribute names and types */
@@ -46,73 +85,217 @@ nco_prn_att /* [fnc] Print all attributes of single variable */
   for(idx=0;idx<nbr_att;idx++){
 
     att[idx].nm=(char *)nco_malloc(NC_MAX_NAME*sizeof(char));
-    (void)nco_inq_attname(in_id,var_id,idx,att[idx].nm);
-    (void)nco_inq_att(in_id,var_id,att[idx].nm,&att[idx].type,&att[idx].sz);
+    (void)nco_inq_attname(grp_id,var_id,idx,att[idx].nm);
+    (void)nco_inq_att(grp_id,var_id,att[idx].nm,&att[idx].type,&att[idx].sz);
 
     /* Copy value to avoid indirection in loop over att_sz */
     att_sz=att[idx].sz;
+    att_szm1=att_sz-1L;
 
     /* Allocate enough space to hold attribute */
     att[idx].val.vp=(void *)nco_malloc(att_sz*nco_typ_lng(att[idx].type));
-    (void)nco_get_att(in_id,var_id,att[idx].nm,att[idx].val.vp,att[idx].type);
-    (void)fprintf(stdout,"%s attribute %i: %s, size = %li %s, value = ",src_sng,idx,att[idx].nm,att_sz,nco_typ_sng(att[idx].type));
+    (void)nco_get_att(grp_id,var_id,att[idx].nm,att[idx].val.vp,att[idx].type);
+    
+    if(prn_flg->cdl){
+      nm_cdl=nm2sng_cdl(att[idx].nm);
+      (void)fprintf(stdout,"%*s%s%s:%s = ",prn_ndn,spc_sng,(att[idx].type == NC_STRING) ? "string " : "",src_sng,nm_cdl); 
+      nm_cdl=(char *)nco_free(nm_cdl);
+    } /* !cdl */
+    if(prn_flg->trd) (void)fprintf(stdout,"%*s%s attribute %i: %s, size = %li %s, value = ",prn_ndn,spc_sng,src_sng,idx,att[idx].nm,att_sz,nco_typ_sng(att[idx].type));
+
+    spr_sng=cma_sng; /* [sng] Output separator string */
+    if(prn_flg->xml){
+      /* Official NcML XML Schema is here:
+	 http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/ncml/v2.2/AnnotatedSchema4.html
+	 http://www.unidata.ucar.edu/schemas/netcdf/ncml-2.2.xsd */
+
+      (void)fprintf(stdout,"%*s<attribute name=\"%s\"",prn_ndn,spc_sng,att[idx].nm);
+
+      /* User may override default separator string for XML only */
+      if(att[idx].type == NC_STRING || att[idx].type == NC_CHAR) spr_sng= (prn_flg->spr_chr) ? prn_flg->spr_chr : spr_xml_chr; else spr_sng= (prn_flg->spr_nmr) ? prn_flg->spr_nmr : spr_xml_nmr;
+
+      /* Print type of non-string variables
+	 NB: Take or lose this opportunity to distinguish char from string?
+	 NcML does not preserve unsigned types, so why not turn char attributes into strings? 
+	 Can turn char into string here just by omitting "type=char" attribute
+	 toolsui NcML does not print "type=char" for for char attributes
+	 Hence neither does ncks */
+      if(att[idx].type != NC_STRING && att[idx].type != NC_CHAR) (void)fprintf(stdout," type=\"%s\"",xml_typ_nm(att[idx].type));
+      
+      /* Print hidden attributes of attributes */
+      // if(nco_xml_typ_rqr_nsg_att(att[idx].type)) (void)fprintf(stdout,""); /* toolsui shows no way to indicate unsigned types for attributes? */
+
+      /* Print separator element for non-whitespace separators */
+      if((att[idx].sz == 1L && att[idx].type == NC_STRING) || att[idx].sz > 1L){ 
+	/* Ensure string attribute value does not contain separator string */
+	if(att[idx].type == NC_CHAR)
+	  if(strstr(att[idx].val.cp,spr_sng)) spr_sng=spr_xml_chr_bck;
+	if(att[idx].type == NC_STRING){
+	  for(lmn=0;lmn<att_sz;lmn++){
+	    if(strstr(att[idx].val.sngp[lmn],spr_sng)){
+	      spr_sng=spr_xml_chr_bck;
+	      break;
+	    } /* endif */
+	  } /* end loop over lmn */
+	} /* !NC_STRING */
+
+	size_t spr_sng_idx=0L;
+	size_t spr_sng_lng;
+	spr_sng_lng=strlen(spr_sng);
+	while(spr_sng_idx < spr_sng_lng)
+	  if(!isspace(spr_sng[spr_sng_idx])) break; else spr_sng_idx++;
+	if(spr_sng_idx < spr_sng_lng) (void)fprintf(stdout," separator=\"%s\"",spr_sng);
+      } /* att[idx].sz */
+      (void)fprintf(stdout," value=\"");
+
+      /* XML-mode if dataset defines its own _FillValue for this variable? */
+      if(!(int)strcasecmp(att[idx].nm,nco_mss_val_sng_get())) has_fll_val=True;
+    } /* !xml */
     
     /* Typecast pointer to values before access */
     (void)cast_void_nctype(att[idx].type,&att[idx].val);
 
-    (void)strcpy(dlm_sng,", ");
-    (void)sprintf(att_sng,"%s%%s",nco_typ_fmt_sng(att[idx].type));
+    (void)sprintf(att_sng_pln,"%s",(prn_flg->cdl) ? nco_typ_fmt_sng_att_cdl(att[idx].type) : (prn_flg->xml) ? nco_typ_fmt_sng_att_xml(att[idx].type) : nco_typ_fmt_sng(att[idx].type));
+    (void)sprintf(att_sng_dlm,"%s%%s",(prn_flg->cdl) ? nco_typ_fmt_sng_att_cdl(att[idx].type) : (prn_flg->xml) ? nco_typ_fmt_sng_att_xml(att[idx].type) : nco_typ_fmt_sng(att[idx].type));
     switch(att[idx].type){
     case NC_FLOAT:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.fp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++){
+	val_flt=att[idx].val.fp[lmn];
+	if(isfinite(val_flt)){
+	  rcd_prn=snprintf(val_sng,(size_t)NCO_ATM_SNG_LNG,att_sng_pln,val_flt);
+	  (void)sng_trm_trl_zro(val_sng,prn_flg->nbr_zro);
+	}else{
+	  if(isnan(val_flt)) (void)sprintf(val_sng,"NaNf"); else if(isinf(val_flt)) (void)sprintf(val_sng,"%sInfinityf",(val_flt < 0.0f) ? "-" : "");
+	} /* endelse */
+	(void)fprintf(stdout,"%s%s",val_sng,(lmn != att_szm1) ? spr_sng : "");
+      } /* end loop */
       break;
     case NC_DOUBLE:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.dp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++){
+	val_dbl=att[idx].val.dp[lmn];
+	if(isfinite(val_dbl)){
+	  rcd_prn=snprintf(val_sng,(size_t)NCO_ATM_SNG_LNG,att_sng_pln,val_dbl);
+	  (void)sng_trm_trl_zro(val_sng,prn_flg->nbr_zro);
+	}else{
+	  if(isnan(val_dbl)) (void)sprintf(val_sng,"NaNf"); else if(isinf(val_dbl)) (void)sprintf(val_sng,"%sInfinity",(val_dbl < 0.0) ? "-" : "");
+	} /* endelse */
+	(void)fprintf(stdout,"%s%s",val_sng,(lmn != att_szm1) ? spr_sng : "");
+      } /* end loop */
       break;
     case NC_SHORT:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.sp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.sp[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_INT:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,(long)att[idx].val.ip[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,(long)att[idx].val.ip[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_CHAR:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++){
-        char char_foo;
-	/* Assume \0 is string terminator and do not print it */
-	if((char_foo=att[idx].val.cp[att_lmn]) != '\0') (void)fprintf(stdout,"%c",char_foo);
+      for(lmn=0;lmn<att_sz;lmn++){
+	chr_val=att[idx].val.cp[lmn];
+	if(prn_flg->cdl || prn_flg->xml){
+	  val_sng[0]='\0';
+	  if(lmn == 0L){
+	    sng_lng=att_sz;
+	    sng_lngm1=sng_lng-1UL;
+	    /* Worst case is printable strings are six or four times longer than unformatted, i.e., '\"' == """ or '\\' == "\\\\" */
+	    sng_val_sng_cpy=sng_val_sng=(char *)nco_malloc(6*sng_lng+1UL);
+	  } /* endif first element of string array */
+	  /* New string begins each element where penultimate dimension changes */
+	  if(lmn%sng_lng == 0L){
+	    if(prn_flg->cdl) (void)fprintf(stdout,"\"");
+	    sng_val_sng[0]='\0';
+	  } /* endif new string */
+	  (void)strcat(sng_val_sng,(prn_flg->cdl) ? chr2sng_cdl(chr_val,val_sng) : chr2sng_xml(chr_val,val_sng));
+	  if(chr_val == '\n' && lmn != att_szm1 && prn_flg->cdl) (void)sprintf(sng_val_sng,"%s\",\n%*s\"",sng_val_sng_cpy,prn_ndn+prn_flg->var_fst,spc_sng);
+	  if(lmn%sng_lng == sng_lngm1){
+	    (void)fprintf(stdout,"%s%s",sng_val_sng,(prn_flg->xml) ? "" : "\"");
+	    /* Print separator after non-final string */
+	    if(lmn != att_szm1) (void)fprintf(stdout,"%s",spr_sng);
+	  } /* endif string end */
+	  if(lmn == att_szm1) sng_val_sng=(char *)nco_free(sng_val_sng);
+	}else{ /* Traditional */
+	  /* Assume \0 is string terminator and do not print it */
+	  if(chr_val != '\0') (void)fprintf(stdout,"%c",chr_val);
+	} /* endelse CDL, XML, Traditional */
       } /* end loop over element */
       break;
     case NC_BYTE:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.bp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.bp[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_UBYTE:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.ubp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.ubp[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_USHORT:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.usp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.usp[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_UINT:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.uip[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.uip[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_INT64:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.i64p[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.i64p[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_UINT64:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.ui64p[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++) (void)fprintf(stdout,att_sng_dlm,att[idx].val.ui64p[lmn],(lmn != att_szm1) ? spr_sng : "");
       break;
     case NC_STRING:
-      for(att_lmn=0;att_lmn<att_sz;att_lmn++) (void)fprintf(stdout,att_sng,att[idx].val.sngp[att_lmn],(att_lmn != att_sz-1L) ? dlm_sng : "");
+      for(lmn=0;lmn<att_sz;lmn++){
+	sng_val=att[idx].val.sngp[lmn];
+	sng_lng=strlen(sng_val);
+	sng_lngm1=sng_lng-1UL;
+	if(prn_flg->cdl || prn_flg->xml){
+	  /* Worst case is printable strings are six or four times longer than unformatted, i.e., '\"' == """ or '\\' == "\\\\" */
+	  sng_val_sng=(char *)nco_malloc(6*sng_lng+1UL);
+	  if(prn_flg->cdl) (void)fprintf(stdout,"\"");
+	  sng_val_sng[0]='\0';
+	  for(chr_idx=0;chr_idx<sng_lng;chr_idx++){
+	    val_sng[0]='\0';
+	    chr_val=sng_val[chr_idx];
+	    (void)strcat(sng_val_sng,(prn_flg->cdl) ? chr2sng_cdl(chr_val,val_sng) : chr2sng_xml(chr_val,val_sng));
+	  } /* end loop over character */
+	  (void)fprintf(stdout,"%s%s",sng_val_sng,(prn_flg->xml) ? "" : "\"");
+	  /* Print separator after non-final string */
+	  if(lmn != att_szm1) (void)fprintf(stdout,"%s",spr_sng);
+	  sng_val_sng=(char *)nco_free(sng_val_sng);
+	}else{ /* Traditional */
+	  (void)fprintf(stdout,att_sng_dlm,att[idx].val.sngp[lmn],(lmn != att_szm1) ? spr_sng : "");
+	} /* endelse CDL, XML, Traditional */
+      } /* end loop over element */
       break;
     default: nco_dfl_case_nc_type_err();
       break;
     } /* end switch */
-    (void)fprintf(stdout,"\n");
+    if(prn_flg->cdl) (void)fprintf(stdout," ;\n");
+    if(prn_flg->trd) (void)fprintf(stdout,"\n");
+    if(prn_flg->xml) (void)fprintf(stdout,"\" />\n");
+    rcd_prn+=0; /* CEWI */
     
   } /* end loop over attributes */
-  (void)fprintf(stdout,"\n");
+
+  if(!prn_flg->new_fmt && !prn_flg->xml) (void)fprintf(stdout,"\n");
   (void)fflush(stdout);
   
-  /* Free the space holding attribute values */
+  /* Print any hidden attributes */
+  if(prn_flg->xml && var_id != NC_GLOBAL){
+    /* _FillValue, _Netcdf4Dimid, _Unsigned:
+       _FillValue: No documentation. Seems like a kludge.
+       Set to -1 for unsigned types: ubyte, ushort, uint, 
+       Set to -2 for unsigned types: uint64
+       How will kludge work when unsigned variable already has _FillValue?
+
+       _Netcdf4Dimid: https://bugtracking.unidata.ucar.edu/browse/NCF-244
+       "Netcdf4Dimid is an artifact stored in the HDF5 dataset of a dimension scale variable to record dimids when nc_enddef() detects that the coordinate variables have a different creation order than the corresponding dimensions. In that case, the documentation says: If this attribute is present on any dimension scale, it must be present on all dimension scales in the file."
+       Is usually (always?) present in array variables in toolsui
+       However, it appears at most once even in multi-dimensional arrays
+       Thus information provided appears to be ambiguous
+       
+       _Unsigned: http://www.unidata.ucar.edu/software/thredds/current/netcdf-java/CDM/
+       "There are not separate unsigned integer types. The Variable and Array objects have isUnsigned() methods, and conversion to wider types is correctly done. Since Java does not have unsigned types, the alternative is to automatically widen unsigned data arrays, which would double the memory used. */
+    nc_type var_type;
+    (void)nco_inq_vartype(grp_id,var_id,&var_type);
+    if(nco_xml_typ_rqr_nsg_att(var_type)) (void)fprintf(stdout,"%*s<attribute name=\"_Unsigned\" value=\"true\" />\n",prn_ndn,spc_sng);
+    if(nco_xml_typ_rqr_flv_att(var_type) && !has_fll_val) (void)fprintf(stdout,"%*s<attribute name=\"_FillValue\" type=\"%s\" value=\"%d\" />\n",prn_ndn,spc_sng,xml_typ_nm(var_type),(var_type == NC_UINT64) ? -2 : -1);
+  } /* !xml */
+
+  /* Free space holding attribute values */
   for(idx=0;idx<nbr_att;idx++){
     att[idx].val.vp=nco_free(att[idx].val.vp);
     att[idx].nm=(char *)nco_free(att[idx].nm);
@@ -123,30 +306,29 @@ nco_prn_att /* [fnc] Print all attributes of single variable */
 
 } /* end nco_prn_att() */
 
-const char * /* O [sng] sprintf() format string for type typ */
-nco_typ_fmt_sng /* [fnc] Provide sprintf() format string for specified type */
-(const nc_type typ) /* I [enm] netCDF type to provide format string for */
+const char * /* O [sng] sprintf() format string for CDL type typ */
+nco_typ_fmt_sng_var_cdl /* [fnc] Provide sprintf() format string for specified type in CDL */
+(const nc_type typ) /* I [enm] netCDF type to provide CDL format string for */
 {
-  /* Purpose: Provide sprintf() format string for specified type */
-  static const char fmt_NC_FLOAT[]="%g"; /* %g defaults to 6 digits of precision */
-  static const char fmt_NC_DOUBLE[]="%.12g"; /* Specify 12 digits of precision for double precision */
-  static const char fmt_NC_INT[]="%li"; /* NCO currently stores NC_INT in native type long, but this will be deprecated when netCDF supports a 64 bit integer type */
+  /* Purpose: Provide sprintf() format string for specified type variable
+     Unidata formats shown in ncdump.c near ling 459
+     Float formats called float_att_fmt, double_att_fmt are in dumplib.c,
+     and are user-configurable with -p float_digits,double_digits.
+     These default to 7 and 15, respectively. */
+
+  static const char fmt_NC_FLOAT[]="%.7g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_DOUBLE[]="%.15g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_INT[]="%i"; /* NCO has stored NC_INT in native type int since 2009. Before that NC_INT was stored as native type long */
   static const char fmt_NC_SHORT[]="%hi";
   static const char fmt_NC_CHAR[]="%c";
-  /* Formats useful in printing byte data as decimal notation */
-  /*  static const char fmt_NC_BYTE[]="%i";*/
-  /*  static const char fmt_NC_BYTE[]="%c"; */
-  /*  static const char fmt_NC_BYTE[]="%d";*/
-  /* NB: %hhi is GNU extension, not ANSI standard */
   static const char fmt_NC_BYTE[]="%hhi"; /* Takes signed char as arg and prints 0,1,2..,126,127,-127,-126,...-2,-1 */
-  /* static const char fmt_NC_BYTE[]="%hhu"; *//* Takes unsigned char as arg and prints 0..255 */
 
   static const char fmt_NC_UBYTE[]="%hhu"; /*  */
   static const char fmt_NC_USHORT[]="%hu"; /*  */
-  static const char fmt_NC_UINT[]="%lu"; /*  */
+  static const char fmt_NC_UINT[]="%u"; /*  */
   static const char fmt_NC_INT64[]="%lli"; /*  */
   static const char fmt_NC_UINT64[]="%llu"; /*  */
-  static const char fmt_NC_STRING[]="%s"; /*  */
+  static const char fmt_NC_STRING[]="\"%s\""; /*  */
 
   switch (typ){
   case NC_FLOAT:
@@ -178,121 +360,180 @@ nco_typ_fmt_sng /* [fnc] Provide sprintf() format string for specified type */
 
   /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
   return (char *)NULL;
-} /* end nco_typ_fmt_sng() */
+} /* end nco_typ_fmt_sng_var_cdl() */
 
-void
-nco_prn_var_dfn /* [fnc] Print variable metadata */
-(int in_id, /* I [id] netCDF input file ID */
- char *var_nm) /* I [sng] Variable to pring */
+const char * /* O [sng] sprintf() format string for CDL attribute type typ */
+nco_typ_fmt_sng_att_cdl /* [fnc] Provide sprintf() format string for specified attribute type in CDL */
+(const nc_type typ) /* I [enm] netCDF attribute type to provide CDL format string for */
 {
-  /* Purpose: Print variable metadata. This routine does not take into 
-     account any user-specified limits, it just prints what it finds. */
-  int *dmn_id=NULL_CEWI;
-  size_t *cnk_sz=NULL_CEWI; /* [nbr] Chunk sizes */
-  int idx;
-  int nbr_dim;
-  int nbr_att;
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int rec_dmn_id;
-  int var_id;
-  int srg_typ; /* [enm] Storage type */
-  int shuffle; /* [flg] Shuffling is on */
-  int deflate; /* [flg] Deflation is on */
-  int dfl_lvl; /* [enm] Deflate level [0..9] */
-  int packing; /* [flg] Variable is packed */
-  
-  nc_type var_typ;
-  
-  dmn_sct *dim=NULL_CEWI;
+  /* Purpose: Provide sprintf() format string for specified type attribute in CDL
+     Unidata formats shown in ncdump.c near line 459
+     Float formats called float_att_fmt, double_att_fmt are in dumplib.c,
+     and are user-configurable with -p float_digits,double_digits.
+     These default to 7 and 15, respectively. */
+
+  static const char fmt_NC_FLOAT[]="%#.7gf"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_DOUBLE[]="%#.15g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_INT[]="%i"; /* NCO has stored NC_INT in native type int since 2009. Before that NC_INT was stored as native type long */
+  static const char fmt_NC_SHORT[]="%his";
+  static const char fmt_NC_CHAR[]="%c";
+  static const char fmt_NC_BYTE[]="%hhib"; /* Takes signed char as arg and prints 0,1,2..,126,127,-127,-126,...-2,-1 */
 
-  /* Is requested variable in input file? */
-  rcd=nco_inq_varid(in_id,var_nm,&var_id);
+  static const char fmt_NC_UBYTE[]="%hhuub"; /*  */
+  static const char fmt_NC_USHORT[]="%huus"; /*  */
+  static const char fmt_NC_UINT[]="%uu"; /*  */
+  static const char fmt_NC_INT64[]="%llil"; /*  */
+  static const char fmt_NC_UINT64[]="%lluul"; /*  */
+  static const char fmt_NC_STRING[]="\"%s\""; /*  */
 
-  /* Get number of dimensions, type, and number of attributes for variable */
-  (void)nco_inq_var(in_id,var_id,(char *)NULL,&var_typ,&nbr_dim,(int *)NULL,&nbr_att);
+  switch (typ){
+  case NC_FLOAT:
+    return fmt_NC_FLOAT;
+  case NC_DOUBLE:
+    return fmt_NC_DOUBLE;
+  case NC_INT:
+    return fmt_NC_INT;
+  case NC_SHORT:
+    return fmt_NC_SHORT;
+  case NC_CHAR:
+    return fmt_NC_CHAR;
+  case NC_BYTE:
+    return fmt_NC_BYTE;
+  case NC_UBYTE:
+    return fmt_NC_UBYTE; 
+  case NC_USHORT:
+    return fmt_NC_USHORT; 
+  case NC_UINT:
+    return fmt_NC_UINT; 
+  case NC_INT64:
+    return fmt_NC_INT64; 
+  case NC_UINT64:
+    return fmt_NC_UINT64; 
+  case NC_STRING:
+    return fmt_NC_STRING; 
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
 
-  /* Get record dimension ID, if any */
-  (void)nco_inq(in_id,(int *)NULL,(int *)NULL,(int *)NULL,&rec_dmn_id);
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end nco_typ_fmt_sng_att_cdl() */
 
-  if(nbr_dim > 0){
-    /* Allocate space for dimension info */
-    cnk_sz=(size_t *)nco_malloc(nbr_dim*sizeof(size_t)); /* [nbr] Chunk sizes */
-    dim=(dmn_sct *)nco_malloc(nbr_dim*sizeof(dmn_sct));
-    dmn_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  } /* end if nbr_dim > 0 */
-  
-  /* Get storage properties */
-  rcd=nco_inq_var_chunking(in_id,var_id,&srg_typ,cnk_sz);
-  rcd=nco_inq_var_deflate(in_id,var_id,&shuffle,&deflate,&dfl_lvl);
-  rcd=nco_inq_var_packing(in_id,var_id,&packing);
-  
-  /* Get dimension IDs */
-  (void)nco_inq_vardimid(in_id,var_id,dmn_id);
+const char * /* O [sng] sprintf() format string for XML attribute type typ */
+nco_typ_fmt_sng_att_xml /* [fnc] Provide sprintf() format string for specified attribute type in XML */
+(const nc_type typ) /* I [enm] netCDF attribute type to provide XML format string for */
+{
+  /* Purpose: Provide sprintf() format string for specified type attribute
+     Unidata formats shown in ncdump.c near line 459
+     Float formats called float_att_fmt, double_att_fmt are in dumplib.c,
+     and are user-configurable with -p float_digits,double_digits.
+     These default to 7 and 15, respectively
+     Use these formats for XML attributes AND variables because distinct formats for XML variables, if any, are not known (because ncdump does not dump XML variable values */
+
+  static const char fmt_NC_FLOAT[]="%#.7g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_DOUBLE[]="%#.15g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_INT[]="%i"; /* NCO has stored NC_INT in native type int since 2009. Before that NC_INT was stored as native type long */
+  static const char fmt_NC_SHORT[]="%hi";
+  static const char fmt_NC_CHAR[]="%c";
+  static const char fmt_NC_BYTE[]="%hhi"; /* Takes signed char as arg and prints 0,1,2..,126,127,-127,-126,...-2,-1 */
 
-  /* Collect dimension sizes and names */
-  for(idx=0;idx<nbr_dim;idx++){
-    dim[idx].nm=(char *)nco_malloc(NC_MAX_NAME*sizeof(char));
-    dim[idx].id=dmn_id[idx];
-    (void)nco_inq_dim(in_id,dim[idx].id,dim[idx].nm,&dim[idx].sz);
-  } /* end loop over dim */
+  static const char fmt_NC_UBYTE[]="%hhu"; /*  */
+  static const char fmt_NC_USHORT[]="%hu"; /*  */
+  static const char fmt_NC_UINT[]="%u"; /*  */
+  static const char fmt_NC_INT64[]="%lli"; /*  */
+  static const char fmt_NC_UINT64[]="%llu"; /*  */
+  static const char fmt_NC_STRING[]="%s"; /*  */
 
-  /* Print header for variable */
-  (void)fprintf(stdout,"%s: type %s, %i dimension%s, %i attribute%s, chunked? %s, compressed? %s, packed? %s, ID = %i\n",var_nm,nco_typ_sng(var_typ),nbr_dim,(nbr_dim == 1) ? "" : "s",nbr_att,(nbr_att == 1) ? "" : "s",(srg_typ == NC_CHUNKED) ? "yes" : "no",(deflate) ? "yes" : "no",(packing) ? "yes" : "no",var_id);
+  switch (typ){
+  case NC_FLOAT:
+    return fmt_NC_FLOAT;
+  case NC_DOUBLE:
+    return fmt_NC_DOUBLE;
+  case NC_INT:
+    return fmt_NC_INT;
+  case NC_SHORT:
+    return fmt_NC_SHORT;
+  case NC_CHAR:
+    return fmt_NC_CHAR;
+  case NC_BYTE:
+    return fmt_NC_BYTE;
+  case NC_UBYTE:
+    return fmt_NC_UBYTE; 
+  case NC_USHORT:
+    return fmt_NC_USHORT; 
+  case NC_UINT:
+    return fmt_NC_UINT; 
+  case NC_INT64:
+    return fmt_NC_INT64; 
+  case NC_UINT64:
+    return fmt_NC_UINT64; 
+  case NC_STRING:
+    return fmt_NC_STRING; 
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
 
-  /* Print type, shape, and total size of variable */
-  if(nbr_dim>0){
-    long var_sz=1L;
-    char sz_sng[100];
-    char sng_foo[200];
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end nco_typ_fmt_sng_att_xml() */
 
-    for(idx=0;idx<nbr_dim;idx++) var_sz*=dim[idx].sz;
-    sz_sng[0]='\0';
-    for(idx=0;idx<nbr_dim-1;idx++){
-      (void)sprintf(sng_foo,"%li*",dim[idx].sz);
-      (void)strcat(sz_sng,sng_foo);
-    } /* end loop over dim */
-    (void)sprintf(sng_foo,"%li*sizeof(%s)",dim[idx].sz,nco_typ_sng(var_typ));
-    (void)strcat(sz_sng,sng_foo);
-    /* NB: netCDF chunking/deflate define/inquire functions only work with netCDF4
-       NCO wrappers perform no-ops on netCDF3 files */
-    rcd=nco_inq_var_deflate(in_id,var_id,&shuffle,&deflate,&dfl_lvl);
-    if(deflate) (void)fprintf(stdout,"%s on-disk compression (Lempel-Ziv %s shuffling) level = %d\n",var_nm,(shuffle) ? "with" : "without",dfl_lvl);
-    (void)fprintf(stdout,"%s size (in RAM) is %s = %li*%lu = %lu bytes\n",var_nm,sz_sng,var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)(var_sz*nco_typ_lng(var_typ)));
-  }else{
-    long var_sz=1L;
+const char * /* O [sng] sprintf() format string for type typ */
+nco_typ_fmt_sng /* [fnc] Provide sprintf() format string for specified type */
+(const nc_type typ) /* I [enm] netCDF type to provide format string for */
+{
+  /* Purpose: Provide sprintf() format string for specified type 
+     nco_typ_fmt_sng() is "master" NCO formatting function that defines formatting 
+     in traditional NCO mode, i.e., when not explicitly requesting CDL or XML */
 
-    (void)fprintf(stdout,"%s size (in RAM) is %ld*sizeof(%s) = %ld*%lu = %lu bytes\n",var_nm,var_sz,nco_typ_sng(var_typ),var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)(var_sz*nco_typ_lng(var_typ)));
-  } /* end if variable is scalar */
+  static const char fmt_NC_FLOAT[]="%g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_DOUBLE[]="%.12g"; /* %g defaults to 6 digits of precision */
+  static const char fmt_NC_INT[]="%i"; /* NCO has stored NC_INT in native type int since 2009. Before that NC_INT was stored as native type long */
+  static const char fmt_NC_SHORT[]="%hi";
+  static const char fmt_NC_CHAR[]="%c";
+  /* Formats useful in printing byte data as decimal notation */
+  /*  static const char fmt_NC_BYTE[]="%i";*/
+  /*  static const char fmt_NC_BYTE[]="%c"; */
+  /*  static const char fmt_NC_BYTE[]="%d";*/
+  /* NB: %hhi is GNU extension, not ANSI standard */
+  static const char fmt_NC_BYTE[]="%hhi"; /* Takes signed char as arg and prints 0,1,2..,126,127,-127,-126,...-2,-1 */
+  /* static const char fmt_NC_BYTE[]="%hhu"; *//* Takes unsigned char as arg and prints 0..255 */
 
-  /* Print dimension sizes and names */
-  for(idx=0;idx<nbr_dim;idx++){
-    /* Is dimension a coordinate, i.e., stored as a variable? */
-    rcd=nco_inq_varid_flg(in_id,dim[idx].nm,&dim[idx].cid);
-    if(rcd == NC_NOERR){
-      /* Dimension is a coordinate. Which storage type is the coordinate? */
-      (void)nco_inq_vartype(in_id,dim[idx].cid,&dim[idx].type);
-      if(srg_typ == NC_CHUNKED) (void)fprintf(stdout,"%s dimension %i: %s, size = %li %s, chunksize = %zu, dim. ID = %d (CRD)",var_nm,idx,dim[idx].nm,dim[idx].sz,nco_typ_sng(dim[idx].type),cnk_sz[idx],dim[idx].id); else (void)fprintf(stdout,"%s dimension %i: %s, size = %li %s, dim. ID = %d (CRD)",var_nm,idx,dim[idx].nm,dim[idx].sz,nco_typ_sng(dim[idx].type),dim[idx].id);
-    }else{
-      /* Dimension is not a coordinate */
-      if(srg_typ == NC_CHUNKED) (void)fprintf(stdout,"%s dimension %i: %s, size = %li, chunksize = %zu, dim. ID = %d",var_nm,idx,dim[idx].nm,dim[idx].sz,cnk_sz[idx],dim[idx].id); else (void)fprintf(stdout,"%s dimension %i: %s, size = %li, dim. ID = %d",var_nm,idx,dim[idx].nm,dim[idx].sz,dim[idx].id);
-    } /* end else */
-    if(dim[idx].id == rec_dmn_id) (void)fprintf(stdout,"(REC)"); 
-    (void)fprintf(stdout,"\n"); 
-  } /* end loop over dim */
-  
-  /* Caveat user */
-  if((nc_type)var_typ == NC_STRING) (void)fprintf(stdout,"%s size (in RAM) above is space required for pointers only, full size of strings is unknown until data are read\n",var_nm);
-  (void)fflush(stdout);
-  
-  /* Free space allocated for dimension information */
-  for(idx=0;idx<nbr_dim;idx++) dim[idx].nm=(char *)nco_free(dim[idx].nm);
-  if(nbr_dim > 0){
-    cnk_sz=(size_t *)nco_free(cnk_sz); /* [nbr] Chunk sizes */
-    dim=(dmn_sct *)nco_free(dim);
-    dmn_id=(int *)nco_free(dmn_id);
-  } /* end if nbr_dim > 0*/
+  static const char fmt_NC_UBYTE[]="%hhu"; /*  */
+  static const char fmt_NC_USHORT[]="%hu"; /*  */
+  static const char fmt_NC_UINT[]="%u"; /*  */
+  static const char fmt_NC_INT64[]="%lli"; /*  */
+  static const char fmt_NC_UINT64[]="%llu"; /*  */
+  static const char fmt_NC_STRING[]="%s"; /*  */
 
-} /* end nco_prn_var_dfn() */
+  switch (typ){
+  case NC_FLOAT:
+    return fmt_NC_FLOAT;
+  case NC_DOUBLE:
+    return fmt_NC_DOUBLE;
+  case NC_INT:
+    return fmt_NC_INT;
+  case NC_SHORT:
+    return fmt_NC_SHORT;
+  case NC_CHAR:
+    return fmt_NC_CHAR;
+  case NC_BYTE:
+    return fmt_NC_BYTE;
+  case NC_UBYTE:
+    return fmt_NC_UBYTE; 
+  case NC_USHORT:
+    return fmt_NC_USHORT; 
+  case NC_UINT:
+    return fmt_NC_UINT; 
+  case NC_INT64:
+    return fmt_NC_INT64; 
+  case NC_UINT64:
+    return fmt_NC_UINT64; 
+  case NC_STRING:
+    return fmt_NC_STRING; 
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end nco_typ_fmt_sng() */
 
 void
 nco_prn_var_val_lmt /* [fnc] Print variable data */
@@ -308,7 +549,9 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
   /* NB: nco_prn_var_val_lmt() with same nc_id contains OpenMP critical region */
   /* Purpose: Print variable data 
      Routine truncates dimensions of printed output variable in accord with user-specified limits
-     fxm: routine does not correctly print hyperslabs which are wrapped, or which use non-unity stride */
+     NB: routine does not correctly print hyperslabs which are wrapped, or which use non-unity stride
+     NB: nco_prn_var_val_lmt() is simple, pre-MSA, pre-GTT code kept only for historical interest 
+     It lacks most of the clutter caused by weird corner cases */
 
   nco_bool SRD=False; /* Stride is non-unity */
   nco_bool WRP=False; /* Coordinate is wrapped */
@@ -394,7 +637,7 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
     } /* end loop over lmt_idx */
 
     if(WRP){
-      (void)fprintf(stdout,"%s: ERROR %s does not print variable hyperslabs where one or more of the coordinates is wrapped using the -d option (i.e., where the minimum index exceeds the maximum index such as longitude hyperslabs which cross the date-line. The workaround is to hyperslab into a new file (without -H) and then to print the values from that file (with -H).\n",prg_nm_get(),prg_nm_get());
+      (void)fprintf(stdout,"%s: ERROR %s does not print variable hyperslabs where one or more of the coordinates is wrapped using the -d option (i.e., where the minimum index exceeds the maximum index such as longitude hyperslabs which cross the date-line. The workaround is to hyperslab into a new file (without -H) and then to print the values from that file (with -H).\n",nco_prg_nm_get(),nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
     } /* endif error */
   
@@ -435,7 +678,7 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
   /* Allocate enough space to hold variable */
   var.val.vp=(void *)nco_malloc(var.sz*nco_typ_lng(var.type));
   if(var.val.vp == NULL){
-    (void)fprintf(stderr,"%s: ERROR unable to malloc() %lu bytes for %s\n",prg_nm_get(),(unsigned long)var.sz*nco_typ_lng(var.type),var.nm);
+    (void)fprintf(stderr,"%s: ERROR unable to malloc() %lu bytes for %s\n",nco_prg_nm_get(),(unsigned long)var.sz*nco_typ_lng(var.type),var.nm);
     nco_exit(EXIT_FAILURE);
   } /* end if */
 
@@ -443,7 +686,7 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
   { /* begin potential OpenMP critical */
     /* Get variable */
     if(var.nbr_dim==0){
-      nco_get_var1(in_id,var.id,0L,var.val.vp,var.type); 
+      nco_get_var1(in_id ,var.id,0L,var.val.vp,var.type); 
     }else if(!SRD){
       nco_get_vara(in_id,var.id,dmn_srt,dmn_cnt,var.val.vp,var.type);
     }else if(SRD){
@@ -666,7 +909,7 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
 	  (void)sprintf(var_sng,"%%s%c%%ld--%%ld%c='%s' %%s",arr_lft_dlm,arr_rgt_dlm,dmn_sng);
 	  (void)fprintf(stdout,var_sng,var_nm,idx_crr,idx_crr+dmn_cnt[var.nbr_dim-1]-1L,var.val.cp+lmn,unit_sng);
 	} /* endif */
-	if(dbg_lvl_get() >= 6)(void)fprintf(stdout,"DEBUG: format string used for chars is dmn_sng = %s, var_sng = %s\n",dmn_sng,var_sng); 
+	if(nco_dbg_lvl_get() >= 6)(void)fprintf(stdout,"DEBUG: format string used for chars is dmn_sng = %s, var_sng = %s\n",dmn_sng,var_sng); 
 	/* Newline separates consecutive values within given variable */
 	(void)fprintf(stdout,"\n");
 	(void)fflush(stdout);
@@ -721,3 +964,1238 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
  
 } /* end nco_prn_var_val_lmt() */
 
+void
+nco_prn_var_dfn                     /* [fnc] Print variable metadata */
+(const int nc_id,                   /* I [id] netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_sct * const var_trv)     /* I [sct] Object to print (variable) */
+{
+  /* Purpose: Print variable metadata */
+  const char spc_sng[]=""; /* [sng] Space string */
+
+  char sz_sng[100];
+  char dmn_sng[200];
+  char sng_foo[200];
+
+  char *nm_cdl;
+
+  int deflate; /* [flg] Deflation is on */
+  int dfl_lvl; /* [enm] Deflate level [0..9] */
+  int dmn_idx;
+  int grp_id;
+  int nbr_att;
+  int nbr_dim;
+  int packing; /* [flg] Variable is packed */
+  int prn_ndn=0; /* [nbr] Indentation for printing */
+  int shuffle; /* [flg] Shuffling is on */
+  int srg_typ; /* [enm] Storage type */
+  int var_id;
+
+  long var_sz=1L;
+
+  nc_type var_typ;
+
+  nco_bool CRR_DMN_IS_REC_IN_INPUT[NC_MAX_DIMS]; /* [flg] Is record dimension */
+
+  size_t cnk_sz[NC_MAX_DIMS]; /* [nbr] Chunk sizes */
+  size_t dmn_sz[NC_MAX_DIMS]; /* [nbr] Dimension sizes */
+
+  /* Obtain group ID from netCDF API using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,var_trv->grp_nm_fll,&grp_id);
+
+  /* Obtain variable ID from netCDF API using group ID */
+  (void)nco_inq_varid(grp_id,var_trv->nm,&var_id);
+
+  /* Get number of dimensions, type, and number of attributes for variable */
+  (void)nco_inq_var(grp_id,var_id,(char *)NULL,&var_typ,&nbr_dim,(int *)NULL,&nbr_att);
+
+  /* Storage properties */
+  if(nco_hdf_cnv_get() != nco_hdf4){
+    (void)nco_inq_var_chunking(grp_id,var_id,&srg_typ,cnk_sz);
+    (void)nco_inq_var_deflate(grp_id,var_id,&shuffle,&deflate,&dfl_lvl);
+  } /* endif */
+  (void)nco_inq_var_packing(grp_id,var_id,&packing);
+
+  /* Loop over dimensions */
+  for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
+
+    /* This dimension has a coordinate variable */
+    if(var_trv->var_dmn[dmn_idx].is_crd_var){
+
+      /* Get coordinate from table */
+      crd_sct *crd=var_trv->var_dmn[dmn_idx].crd;
+
+      /* Use the hyperslabbed size */
+      dmn_sz[dmn_idx]=crd->lmt_msa.dmn_cnt;
+
+      CRR_DMN_IS_REC_IN_INPUT[dmn_idx]=crd->is_rec_dmn;
+
+    }else if(var_trv->var_dmn[dmn_idx].is_crd_var == False){
+
+      /* Dimension does not have associated coordinate variable */
+      /* Get unique dimension */
+
+      dmn_trv_sct *dmn_trv=var_trv->var_dmn[dmn_idx].ncd;
+
+      /* Use the hyperslabbed size */
+      dmn_sz[dmn_idx]=dmn_trv->lmt_msa.dmn_cnt;
+
+      CRR_DMN_IS_REC_IN_INPUT[dmn_idx]=dmn_trv->is_rec_dmn;
+    } /* end else */
+
+  } /* end loop over dimensions */
+
+  /* Print header for variable */
+  if(prn_flg->new_fmt && !prn_flg->xml) prn_ndn=prn_flg->sxn_fst+prn_flg->var_fst+var_trv->grp_dpt*prn_flg->spc_per_lvl;
+  if(prn_flg->xml) prn_ndn=prn_flg->sxn_fst+var_trv->grp_dpt*prn_flg->spc_per_lvl;
+  if(prn_flg->trd && (nco_hdf_cnv_get() == nco_hdf4)) (void)fprintf(stdout,"%*s%s: type %s, %i dimension%s, %i attribute%s, chunked? HDF4_UNKNOWN, compressed? HDF4_UNKNOWN, packed? %s\n",prn_ndn,spc_sng,var_trv->nm,nco_typ_sng(var_typ),nbr_dim,(nbr_dim == 1) ? "" : "s",nbr_att,(nbr_att == 1) ? "" : "s",(packing) ? "yes" : "no");
+  if(prn_flg->trd && (nco_hdf_cnv_get() != nco_hdf4)) (void)fprintf(stdout,"%*s%s: type %s, %i dimension%s, %i attribute%s, chunked? %s, compressed? %s, packed? %s\n",prn_ndn,spc_sng,var_trv->nm,nco_typ_sng(var_typ),nbr_dim,(nbr_dim == 1) ? "" : "s",nbr_att,(nbr_att == 1) ? "" : "s",(srg_typ == NC_CHUNKED) ? "yes" : "no",(deflate) ? "yes" : "no",(packing) ? "yes" : "no");
+
+  if(prn_flg->xml) (void)fprintf(stdout,"%*s<variable name=\"%s\" type=\"%s\"",prn_ndn,spc_sng,var_trv->nm,xml_typ_nm(var_typ));
+
+  /* Print type, shape, and total size of variable */
+  dmn_sng[0]='\0';
+  if(nbr_dim == 0){
+    if(prn_flg->trd) (void)fprintf(stdout,"%*s%s size (RAM) = %ld*sizeof(%s) = %ld*%lu = %lu bytes\n",prn_ndn,spc_sng,var_trv->nm,var_sz,nco_typ_sng(var_typ),var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)(var_sz*nco_typ_lng(var_typ)));
+    /* 20131122: Implement ugly NcML requirement that scalars have shape="" attribute */
+    if(prn_flg->xml) (void)sprintf(dmn_sng," shape=\"\"");
+  }else{
+    for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
+      if(prn_flg->xml){
+	(void)sprintf(sng_foo,"%s%s%s",(dmn_idx == 0) ? " shape=\"" : "",var_trv->var_dmn[dmn_idx].dmn_nm,(dmn_idx < nbr_dim-1) ? " " : "\""); 
+      }else{
+	nm_cdl=nm2sng_cdl(var_trv->var_dmn[dmn_idx].dmn_nm);
+	(void)sprintf(sng_foo,"%s%s%s",(dmn_idx == 0) ? "(" : "",nm_cdl,(dmn_idx < nbr_dim-1) ? "," : ")");
+	nm_cdl=(char *)nco_free(nm_cdl);
+      } /* !xml */
+      (void)strcat(dmn_sng,sng_foo);
+    } /* end loop over dim */
+
+    sz_sng[0]='\0';
+    for(dmn_idx=0;dmn_idx<nbr_dim-1;dmn_idx++){
+      (void)sprintf(sng_foo,"%li*",dmn_sz[dmn_idx]);
+      (void)strcat(sz_sng,sng_foo);
+    } /* end loop over dim */
+    (void)sprintf(sng_foo,"%li*sizeof(%s)",dmn_sz[dmn_idx],nco_typ_sng(var_typ));
+    (void)strcat(sz_sng,sng_foo);
+
+    for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++) var_sz*=dmn_sz[dmn_idx];
+    if(nco_hdf_cnv_get() != nco_hdf4) (void)nco_inq_var_deflate(grp_id,var_id,&shuffle,&deflate,&dfl_lvl);
+
+    if(prn_flg->trd){
+      if((nco_hdf_cnv_get() != nco_hdf4) && deflate) (void)fprintf(stdout,"%*s%s compression (Lempel-Ziv %s shuffling) level = %d\n",prn_ndn,spc_sng,var_trv->nm,(shuffle) ? "with" : "without",dfl_lvl);
+      if(nco_hdf_cnv_get() == nco_hdf4) (void)fprintf(stdout,"%*s%s compression and shuffling characteristics are HDF4_UNKNOWN\n",prn_ndn,spc_sng,var_trv->nm);
+      (void)fprintf(stdout,"%*s%s size (RAM) = %s = %li*%lu = %lu bytes\n",prn_ndn,spc_sng,var_trv->nm,sz_sng,var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)(var_sz*nco_typ_lng(var_typ)));
+    } /* !prn_flg->trd */
+
+  } /* end if variable is scalar */
+  if(prn_flg->cdl){
+    nm_cdl=nm2sng_cdl(var_trv->nm);
+    (void)fprintf(stdout,"%*s%s %s%s ;\n",prn_ndn,spc_sng,cdl_typ_nm(var_typ),nm_cdl,dmn_sng);
+    nm_cdl=(char *)nco_free(nm_cdl);
+  } /* !cdl */
+  if(prn_flg->xml){
+    if(prn_flg->PRN_VAR_DATA || prn_flg->PRN_VAR_METADATA) (void)fprintf(stdout,"%s>\n",dmn_sng); else (void)fprintf(stdout,"%s />\n",dmn_sng);
+  } /* !xml */
+
+  /* Print dimension sizes and names */
+
+  /* Loop dimensions for object (variable)  */
+  if(prn_flg->trd){
+    for(dmn_idx=0;dmn_idx<var_trv->nbr_dmn;dmn_idx++){
+
+      /* Define a "unsigned long" type instead of "size_t" for output, since %zu is only available for C99, using %lu common C89 version */
+      unsigned long cnk_sz_lon=(unsigned long)cnk_sz[dmn_idx];
+
+      /* Coordinate dimension */
+      if(var_trv->var_dmn[dmn_idx].is_crd_var){
+
+        crd_sct *crd=var_trv->var_dmn[dmn_idx].crd;
+
+        /* NOTE: Use hyperslabbed sizes for dimension size */
+        if(srg_typ == NC_CHUNKED){
+          (void)fprintf(stdout,"%*s%s dimension %i: %s, size = %li %s, chunksize = %lu (",
+            prn_ndn,spc_sng,var_trv->nm,dmn_idx,(!strcmp(crd->dmn_grp_nm_fll,var_trv->grp_nm_fll)) ? crd->nm : crd->dmn_nm_fll,crd->lmt_msa.dmn_cnt,nco_typ_sng(crd->var_typ),cnk_sz_lon);
+        }else{
+          (void)fprintf(stdout,"%*s%s dimension %i: %s, size = %li %s (",
+            prn_ndn,spc_sng,var_trv->nm,dmn_idx,(!strcmp(crd->dmn_grp_nm_fll,var_trv->grp_nm_fll)) ? crd->nm : crd->dmn_nm_fll,crd->lmt_msa.dmn_cnt,nco_typ_sng(crd->var_typ));
+        }
+
+        (void)fprintf(stdout,"%soordinate is %s)",(CRR_DMN_IS_REC_IN_INPUT[dmn_idx]) ? "Record c" : "C",(!strcmp(crd->crd_grp_nm_fll,var_trv->grp_nm_fll)) ? crd->nm : crd->crd_nm_fll);
+
+        /* Non-coordinate dimension */
+      }else if(!var_trv->var_dmn[dmn_idx].is_crd_var){
+
+        dmn_trv_sct *dmn_trv=var_trv->var_dmn[dmn_idx].ncd;
+
+        /* NOTE: Use hyperslabbed sizes for dimension size */
+        if(srg_typ == NC_CHUNKED){
+          (void)fprintf(stdout,"%*s%s dimension %i: %s, size = %li, chunksize = %lu (",prn_ndn,spc_sng,var_trv->nm,dmn_idx,(!strcmp(dmn_trv->grp_nm_fll,var_trv->grp_nm_fll)) ? dmn_trv->nm : dmn_trv->nm_fll,dmn_trv->lmt_msa.dmn_cnt,cnk_sz_lon);
+        }else{
+          (void)fprintf(stdout,"%*s%s dimension %i: %s, size = %li (",prn_ndn,spc_sng,var_trv->nm,dmn_idx,(!strcmp(dmn_trv->grp_nm_fll,var_trv->grp_nm_fll)) ? dmn_trv->nm : dmn_trv->nm_fll,dmn_trv->lmt_msa.dmn_cnt);
+        }
+        (void)fprintf(stdout,"%son-coordinate dimension)",(CRR_DMN_IS_REC_IN_INPUT[dmn_idx]) ? "Record n" : "N");
+
+      } /* end non-coordinate dimension */
+      (void)fprintf(stdout,"\n"); 
+    } /* end loop over dimensions */
+
+    /* Caveat user */
+    if((nc_type)var_typ == NC_STRING) (void)fprintf(stdout,"%*s%s size (RAM) above is space required for pointers only, full size of strings is unknown until data are read\n",prn_ndn,spc_sng,var_trv->nm);
+  } /* !prn_flg->trd */
+
+  (void)fflush(stdout);
+} /* end nco_prn_var_dfn() */
+
+void
+nco_prn_var_val_trv /* [fnc] Print variable data (GTT version) */
+(const int nc_id, /* I [ID] netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_sct * const var_trv, /* I [sct] Object to print (variable) */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose:
+     Get variable with limits from input file
+     User supplied dlm_sng, print var (includes nbr_dim == 0)
+     Get dimensional units
+     if nbr_dim == 0 and dlm_sng == NULL Print variable
+     if PRN.. == False Print variable taking account of FORTRAN (need variable indices)
+     if PRN_DMN_IDX_CRD_VAL then read in co-ordinate dimensions
+     if PRN.. == True Print variable taking account of FORTRAN (Use dimensions to calculate variable indices)
+     
+     Similar to nco_msa_prn_var_val() but uses limit information contained in GTT 
+     Differences are marked "GTT"
+     1) It is not needed to retrieve dimension IDs for variable, these were used in nco_msa_prn_var_val()
+     to match limits; Group Traversal Table (GTT) should be "ID free".
+     2) Object to print (variable) is passed as parameter
+     3) MSA: Modulo arrays: Changing subscript of first (least rapidly varying) dimension by one moves most quickly through 
+     address space. Changing the subscript of the last (most rapidly varying) dimension by one moves exactly one location 
+     (e.g., 8 bytes for a double) in address space. Each dimension has its own "stride" or length of RAM space between
+     consecutive entries. mod_map_in and mod_map_cnt keep track of these distances. They are mappings between index-based 
+     access and RAM-based access. The location of an N-dimensional array element in RAM is the sum of the products of 
+     each index (dimensional subscript) times the stride (mod_map) of the corresponding dimension.
+     
+     Limit Tests:
+     ncks -D 11 -d lat,1,1,1  -v area -H ~/nco/data/in_grp.nc # area(lat)
+     ncks -D 11 -v unique -H ~/nco/data/in_grp.nc # scalar
+     ncks -D 11 -C -d time,1,2,1 -v two_dmn_rec_var -H ~/nco/data/in_grp.nc # two_dmn_rec_var(time,lev);
+     ncks -D 11 -C -d time,1,2,1 -d lev,1,1,1 -v two_dmn_rec_var -H ~/nco/data/in_grp.nc # two_dmn_rec_var(time,lev);           
+     Tests for coordinate variables in ancestor groups:
+     ncks -D 11 -d lat,1,1,1 -H  -v area ~/nco/data/in_grp.nc */
+
+  const char fnc_nm[]="nco_prn_var_val_trv()"; /* [sng] Function name  */
+  const char spc_sng[]=""; /* [sng] Space string */
+
+  char cma_sng[]=", "; /* [sng] Comma string */
+  char mss_val_sng[]="_"; /* [sng] Print this instead of numerical missing value */
+  char spr_xml_chr[]="*"; /* [sng] Default XML separator for character types */
+  char spr_xml_chr_bck[]="*|*"; /* [sng] Backup default XML separator for character types */
+  char spr_xml_nmr[]=" "; /* [sng] Default XML separator for numeric types */
+  char nul_chr='\0'; /* [sng] Character to end string */ 
+
+  char *dlm_sng=NULL;                        /* [sng] User-specified delimiter string, if any */
+  char *nm_cdl;
+  char *sng_val_sng;                         /* [sng] String of NC_CHAR */
+  char *sng_val_sng_cpy; /* [sng] Copy of sng_val_sng to avoid cppcheck error about using sng_val_sng as both parameter and desitnation in sprintf(). NB: free() only one of these two pointers. */
+  char *spr_sng=NULL; /* [sng] Output separator string */
+  char *unit_sng;                            /* [sng] Units string */ 
+
+  char chr_val;                              /* [sng] Current character */
+
+  char val_sng[NCO_ATM_SNG_LNG];
+  char var_nm[NC_MAX_NAME+1];                /* [sng] Variable name (used for validation only) */ 
+  char var_sng[NCO_MAX_LEN_FMT_SNG];         /* [sng] Variable string */
+
+  dmn_sct dim[NC_MAX_DIMS];                  /* [sct] Dimension structure  */
+
+  double val_dbl;
+
+  float val_flt;
+
+  int dmn_idx;                              /* [idx] Counter over dimensions */
+  int grp_id;                                 /* [ID] Group ID where variable resides (passed to MSA) */
+  int rcd_prn;
+  int prn_ndn=0;                             /* [nbr] Indentation for printing */
+  int val_sz_byt=int_CEWI;                   /* [nbr] Type size */
+
+  lmt_msa_sct **lmt_msa=NULL_CEWI;           /* [sct] MSA Limits for only for variable dimensions  */          
+  lmt_sct **lmt=NULL_CEWI;                   /* [sct] Auxiliary Limit used in MSA */
+
+  long dmn_sbs_dsk[NC_MAX_DIMS];             /* [nbr] Indices of hyperslab relative to original on disk */
+  long dmn_sbs_ram[NC_MAX_DIMS];             /* [nbr] Indices in hyperslab */
+  long lmn;                                  /* [nbr] Index to print variable data */
+  long mod_map_cnt[NC_MAX_DIMS];             /* [nbr] MSA modulo array */
+  long mod_map_in[NC_MAX_DIMS];              /* [nbr] MSA modulo array */
+  long sng_lng;                              /* [nbr] Length of NC_CHAR string */
+  long sng_lngm1;                            /* [nbr] Length minus one of NC_CHAR string */
+  long var_dsk;                              /* [nbr] Variable index relative to disk */
+  long var_szm1;
+
+  nco_bool is_mss_val=False;                 /* [flg] Current value is missing value */
+  nco_bool MALLOC_UNITS_SNG=False;           /* [flg] Allocated memory for units string */
+
+  nco_string sng_val;                        /* [sng] Current string */
+
+  var_sct var;                               /* [sct] Variable structure */
+  var_sct var_crd;                           /* [sct] Variable structure for associated coordinate variable */
+
+  if(prn_flg->new_fmt && !prn_flg->xml) prn_ndn=prn_flg->ndn+prn_flg->var_fst;
+  if(prn_flg->xml) prn_ndn=prn_flg->ndn;
+
+  /* Obtain group ID where variable is located using full group name */
+  (void)nco_inq_grp_full_ncid(nc_id,var_trv->grp_nm_fll,&grp_id);
+
+  /* Set defaults */
+  (void)var_dfl_set(&var); 
+
+  /* Initialize units string, overwrite later if necessary */
+  unit_sng=&nul_chr;
+
+  /* Get ID for requested variable */
+  var.nm=(char *)strdup(var_trv->nm);
+  var.nc_id=grp_id;
+  (void)nco_inq_varid(grp_id,var_trv->nm,&var.id);
+
+  /* Get type of variable (get also name and number of dimensions for validation against parameter object) */
+  (void)nco_inq_var(grp_id,var.id,var_nm,&var.type,&var.nbr_dim,(int *)NULL,(int *)NULL);
+
+  /* Ensure we have correct variable */
+  assert(var_trv->nco_typ == nco_obj_typ_var);
+  assert(var.nbr_dim == var_trv->nbr_dmn);
+  assert(!strcmp(var_nm,var_trv->nm));
+
+  /* Scalars */
+  if(var.nbr_dim == 0){
+    var.sz=1L;
+    var.val.vp=nco_malloc(nco_typ_lng(var.type));
+    /* Block is critical/thread-safe for identical/distinct grp_id's */
+    { /* begin potential OpenMP critical */
+      (void)nco_get_var1(grp_id,var.id,0L,var.val.vp,var.type);
+    } /* end potential OpenMP critical */
+  } else { /* ! Scalars */
+    /* Allocate local MSA */
+    lmt_msa=(lmt_msa_sct **)nco_malloc(var_trv->nbr_dmn*sizeof(lmt_msa_sct *));
+    lmt=(lmt_sct **)nco_malloc(var_trv->nbr_dmn*sizeof(lmt_sct *));
+
+    /* Copy from table to local MSA */
+    (void)nco_cpy_msa_lmt(var_trv,&lmt_msa);
+
+    /* Call super-dooper recursive routine */
+    var.val.vp=nco_msa_rcr_clc((int)0,var.nbr_dim,lmt,lmt_msa,&var);
+  } /* ! Scalars */
+
+  /* Call also initializes var.sz with final size */
+  if(prn_flg->md5)
+    if(prn_flg->md5->dgs) (void)nco_md5_chk(prn_flg->md5,var_nm,var.sz*nco_typ_lng(var.type),grp_id,(long *)NULL,(long *)NULL,var.val.vp);
+
+  /* Warn if variable is packed */
+  if(nco_dbg_lvl_get() > 0)
+    if(nco_pck_dsk_inq(grp_id,&var))
+      (void)fprintf(stderr,"%s: WARNING will print packed values of variable \"%s\". Unpack first (with ncpdq -U) to see actual values.\n",nco_prg_nm_get(),var_nm);
+
+  /* Refresh number of attributes and missing value attribute, if any */
+  var.has_mss_val=nco_mss_val_get(var.nc_id,&var);
+  if(var.has_mss_val) val_sz_byt=nco_typ_lng(var.type);
+
+  /* User-supplied dlm_sng, print variable (includes nbr_dmn == 0) */  
+  if(prn_flg->dlm_sng) dlm_sng=strdup(prn_flg->dlm_sng); /* [sng] User-specified delimiter string, if any */
+  if(dlm_sng){
+    char *fmt_sng_mss_val=NULL;
+
+    /* Print each element with user-supplied formatting code */
+    /* Replace C language '\X' escape codes with ASCII bytes */
+    (void)sng_ascii_trn(dlm_sng);
+
+    /* Assume -s argument (dlm_sng) formats entire string
+    Otherwise, one could assume that field will be printed with format nco_typ_fmt_sng(var.type),
+    and that user is only allowed to affect text between fields. 
+    This would be accomplished with:
+    (void)sprintf(var_sng,"%s%s",nco_typ_fmt_sng(var.type),dlm_sng);*/
+
+    /* Find replacement format string at most once, then re-use */
+#ifdef NCO_HAVE_REGEX_FUNCTIONALITY
+    /* Replace printf()-format statements with format for missing values */
+    fmt_sng_mss_val=nco_fmt_sng_printf_subst(dlm_sng);
+#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+
+    for(lmn=0;lmn<var.sz;lmn++){
+
+      /* memcmp() triggers pedantic warning unless pointer arithmetic is cast to type char * */
+      if(prn_flg->PRN_MSS_VAL_BLANK) is_mss_val = var.has_mss_val ? !memcmp((char *)var.val.vp+lmn*val_sz_byt,var.mss_val.vp,(size_t)val_sz_byt) : False; 
+
+      if(prn_flg->PRN_MSS_VAL_BLANK && is_mss_val){
+        if(strcmp(dlm_sng,fmt_sng_mss_val)) (void)fprintf(stdout,fmt_sng_mss_val,mss_val_sng); else (void)fprintf(stdout,"%s, ",mss_val_sng);
+      }else{ /* !is_mss_val */
+        switch(var.type){
+        case NC_FLOAT: (void)fprintf(stdout,dlm_sng,var.val.fp[lmn]); break;
+        case NC_DOUBLE: (void)fprintf(stdout,dlm_sng,var.val.dp[lmn]); break;
+        case NC_SHORT: (void)fprintf(stdout,dlm_sng,var.val.sp[lmn]); break;
+        case NC_INT: (void)fprintf(stdout,dlm_sng,var.val.ip[lmn]); break;
+        case NC_CHAR: (void)fprintf(stdout,dlm_sng,var.val.cp[lmn]); break;
+        case NC_BYTE: (void)fprintf(stdout,dlm_sng,var.val.bp[lmn]); break;
+        case NC_UBYTE: (void)fprintf(stdout,dlm_sng,var.val.ubp[lmn]); break;
+        case NC_USHORT: (void)fprintf(stdout,dlm_sng,var.val.usp[lmn]); break;
+        case NC_UINT: (void)fprintf(stdout,dlm_sng,var.val.uip[lmn]); break;
+        case NC_INT64: (void)fprintf(stdout,dlm_sng,var.val.i64p[lmn]); break;
+        case NC_UINT64: (void)fprintf(stdout,dlm_sng,var.val.ui64p[lmn]); break;
+        case NC_STRING: (void)fprintf(stdout,dlm_sng,var.val.sngp[lmn]); break;
+        default: nco_dfl_case_nc_type_err(); break;
+        } /* end switch */
+      } /* !is_mss_val */
+    } /* end loop over element */
+    (void)fprintf(stdout,"\n");
+
+    if(fmt_sng_mss_val) fmt_sng_mss_val=(char *)nco_free(fmt_sng_mss_val);
+  } /* end if dlm_sng */
+
+  spr_sng=cma_sng; /* [sng] Output separator string */
+  if(prn_flg->cdl || prn_flg->xml){
+    char fmt_sng[NCO_MAX_LEN_FMT_SNG];
+    dmn_trv_sct *dmn_trv; /* [sct] Unique dimension object */
+    int cpd_rec_dmn_idx[NC_MAX_DIMS]; /* [idx] Indices of non-leading record dimensions */
+    int cpd_nbr=0; /* [nbr] Number of non-leading record dimensions */
+    long chr_idx;
+    nco_bool is_compound; /* [flg] Variable is compound (has non-leading record dimension) */
+    nco_bool cpd_rec_dmn[NC_MAX_DIMS]; /* [flg] Dimension is compound */
+    char * (*chr2sng_sf)(const char chr_val, /* I [chr] Character to process */
+			  char * const val_sng); /* I/O [sng] String to stuff printable result into */
+    if(prn_flg->cdl) chr2sng_sf=chr2sng_cdl; else chr2sng_sf=chr2sng_xml;
+    if(prn_flg->cdl) (void)sprintf(fmt_sng,"%s",nco_typ_fmt_sng_var_cdl(var.type));
+    if(prn_flg->xml) (void)sprintf(fmt_sng,"%s",nco_typ_fmt_sng_att_xml(var.type));
+
+    nm_cdl=nm2sng_cdl(var_nm);
+    if(prn_flg->xml){
+      /* User may override default separator string for XML only */
+      if(var.type == NC_STRING || var.type == NC_CHAR) spr_sng= (prn_flg->spr_chr) ? prn_flg->spr_chr : spr_xml_chr; else spr_sng= (prn_flg->spr_nmr) ? prn_flg->spr_nmr : spr_xml_nmr;
+
+      (void)fprintf(stdout,"%*s<values",prn_ndn+prn_flg->var_fst,spc_sng);
+      /* Print non-whitespace separators between elements */
+      if((var.sz == 1L && var.type == NC_STRING) || var.sz > 1L){
+	/* Ensure string variable value does not contain separator string */
+	if(var.type == NC_CHAR)
+	  if(strstr(var.val.cp,spr_sng)) spr_sng=spr_xml_chr_bck;
+	if(var.type == NC_STRING){
+	  for(lmn=0;lmn<var.sz;lmn++){
+	    if(strstr(var.val.sngp[lmn],spr_sng)){
+	      spr_sng=spr_xml_chr_bck;
+	      break;
+	    } /* endif */
+	  } /* end loop over lmn */
+	} /* !NC_STRING */
+
+	size_t spr_sng_idx=0L;
+	size_t spr_sng_lng;
+	static short FIRST_WARNING=True;
+	spr_sng_lng=strlen(spr_sng);
+	while(spr_sng_idx < spr_sng_lng)
+	  if(!isspace(spr_sng[spr_sng_idx])) break; else spr_sng_idx++;
+	if(spr_sng_idx < spr_sng_lng) (void)fprintf(stdout," separator=\"%s\"",spr_sng);
+	if(var.type == NC_CHAR && var.nbr_dim > 1 && FIRST_WARNING && nco_dbg_lvl_get() > 0){
+	  /* 20131122: Warnings about XML ambiguities caused by spr_sng appearing in val_sng would go here
+	     New procedure to pre-check strings above obviates need for this in all all cases except one:
+	     Multi-dimensional NC_CHAR variables may have embedded NULs that prevent strstr(val,spr_sng)
+	     appearances of spr_sng after first NUL. Could use GNU-specific memmem() instead?
+	     Balance of simplicity and readability suggests warning at most once */
+	  (void)fprintf(stderr,"%s: WARNING %s converting to NcML multi-dimensional variable %s, presumably an array of strings of type %s, with NcML separator \"%s\". NCO performs precautionary checks with strstr(val,spr) to identify presence of separator string (spr) in data (val) and, if it detects a match, automatically switches to a backup separator string (\"%s\"). However limitations of strstr() may lead to false negatives when separator string occurs in data beyond the first string in m [...]
+	  FIRST_WARNING=False;
+	} /* endif WARNING */
+      } /* var.sz */
+      (void)fprintf(stdout,">");
+    } /* !xml */
+    if(prn_flg->cdl) (void)fprintf(stdout,"%*s%s = ",prn_ndn,spc_sng,nm_cdl);
+    nm_cdl=(char *)nco_free(nm_cdl);
+    var_szm1=var.sz-1L;
+    is_compound=nco_prn_cpd_chk(var_trv,trv_tbl);
+
+    /* Pre-compute elements that need brace punctuation */
+    if(is_compound){
+      /* Create brace list */
+      for(dmn_idx=1;dmn_idx<var.nbr_dim;dmn_idx++){ /* NB: dimension index starts at 1 */
+        dmn_trv=nco_dmn_trv_sct(var_trv->var_dmn[dmn_idx].dmn_id,trv_tbl); 
+        cpd_rec_dmn[dmn_idx]=False;
+        if(dmn_trv->is_rec_dmn){
+          cpd_rec_dmn[dmn_idx]=True; 
+          cpd_rec_dmn_idx[cpd_nbr]=dmn_idx;
+          cpd_nbr++;
+        } /* endif */
+      } /* end loop over dimensions */
+    } /* !is_compound */
+
+    for(lmn=0;lmn<var.sz;lmn++){
+
+      /* memcmp() triggers pedantic warning unless pointer arithmetic is cast to type char * */
+      if(prn_flg->PRN_MSS_VAL_BLANK) is_mss_val = var.has_mss_val ? !memcmp((char *)var.val.vp+lmn*val_sz_byt,var.mss_val.vp,(size_t)val_sz_byt) : False; 
+
+      if(prn_flg->PRN_MSS_VAL_BLANK && is_mss_val){
+        (void)sprintf(val_sng,"%s",mss_val_sng);
+      }else{ /* !is_mss_val */
+        switch(var.type){
+        case NC_FLOAT: 
+          val_flt=var.val.fp[lmn];
+          if(isfinite(val_flt)){
+            rcd_prn=snprintf(val_sng,(size_t)NCO_ATM_SNG_LNG,fmt_sng,val_flt);
+            (void)sng_trm_trl_zro(val_sng,prn_flg->nbr_zro);
+          }else{
+            if(isnan(val_flt)) (void)sprintf(val_sng,"NaN"); else if(isinf(val_flt)) (void)sprintf(val_sng,"%sInfinity",(val_flt < 0.0f) ? "-" : "");
+          } /* endelse */
+          break;
+        case NC_DOUBLE:
+          val_dbl=var.val.dp[lmn];
+          if(isfinite(val_dbl)){
+            rcd_prn=snprintf(val_sng,(size_t)NCO_ATM_SNG_LNG,fmt_sng,val_dbl);
+            (void)sng_trm_trl_zro(val_sng,prn_flg->nbr_zro);
+          }else{
+            if(isnan(val_dbl)) (void)sprintf(val_sng,"NaN"); else if(isinf(val_dbl)) (void)sprintf(val_sng,"%sInfinity",(val_dbl < 0.0) ? "-" : "");
+          } /* endelse */
+          break;
+        case NC_SHORT: (void)sprintf(val_sng,fmt_sng,var.val.sp[lmn]); break;
+        case NC_INT: (void)sprintf(val_sng,fmt_sng,var.val.ip[lmn]); break;
+        case NC_CHAR: 
+          chr_val=var.val.cp[lmn];
+          if(var.nbr_dim == 0){
+            if(!prn_flg->xml) (void)fprintf(stdout,"\"");
+            if(chr_val != '\0') (void)fprintf(stdout,"%s",(*chr2sng_sf)(chr_val,val_sng));
+            if(!prn_flg->xml) (void)fprintf(stdout,"\"");
+            val_sng[0]='\0';
+          }else{ /* var.nbr_dim > 0 */
+            /* Multi-dimensional string arrays of NC_CHAR */
+            val_sng[0]='\0';
+            if(lmn == 0L){
+              sng_lng=lmt_msa[var.nbr_dim-1]->dmn_cnt;
+              sng_lngm1=sng_lng-1UL;
+              /* Worst case is printable strings are four times longer than unformatted, i.e. '\\' == "\\\\" */
+              sng_val_sng_cpy=sng_val_sng=(char *)nco_malloc(4*sng_lng+1UL);
+            } /* endif first element of string array */
+            /* New string begins each element where penultimate dimension changes */
+            if(lmn%sng_lng == 0L){
+              if(prn_flg->cdl) (void)fprintf(stdout,"\"");
+              sng_val_sng[0]='\0';
+            } /* endif new string */
+            if(chr_val != '\0') (void)fprintf(stdout,"%s",(*chr2sng_sf)(chr_val,val_sng));
+            if(chr_val == '\n' && lmn != var_szm1) (void)sprintf(sng_val_sng,"%s\",\n%*s\"",sng_val_sng_cpy,prn_ndn+prn_flg->var_fst,spc_sng);
+            if(lmn%sng_lng == sng_lngm1){
+              (void)fprintf(stdout,"%s%s",sng_val_sng,(prn_flg->cdl) ? "\"" : "");
+              /* Print separator after non-final string */
+              if(lmn != var_szm1) (void)fprintf(stdout,"%s",spr_sng);
+            } /* endif string end */
+            if(lmn == var_szm1) sng_val_sng=(char *)nco_free(sng_val_sng);
+          } /* var.nbr_dim > 0 */
+          break;
+        case NC_BYTE: (void)sprintf(val_sng,fmt_sng,var.val.bp[lmn]); break;
+        case NC_UBYTE: (void)sprintf(val_sng,fmt_sng,var.val.ubp[lmn]); break;
+        case NC_USHORT: (void)sprintf(val_sng,fmt_sng,var.val.usp[lmn]); break;
+        case NC_UINT: (void)sprintf(val_sng,fmt_sng,var.val.uip[lmn]); break;
+        case NC_INT64: (void)sprintf(val_sng,fmt_sng,var.val.i64p[lmn]); break;
+        case NC_UINT64: (void)sprintf(val_sng,fmt_sng,var.val.ui64p[lmn]); break;
+        case NC_STRING: 
+          sng_val=var.val.sngp[lmn];
+          sng_lng=strlen(sng_val);
+          sng_lngm1=sng_lng-1UL;
+          /* Worst case is printable strings are six or four times longer than unformatted, i.e., '\"' == """ or '\\' == "\\\\" */
+          sng_val_sng=(char *)nco_malloc(6*sng_lng+1UL);
+          if(prn_flg->cdl) (void)fprintf(stdout,"\"");
+          sng_val_sng[0]='\0';
+          for(chr_idx=0;chr_idx<sng_lng;chr_idx++){
+            val_sng[0]='\0';
+            chr_val=sng_val[chr_idx];
+	    (void)strcat(sng_val_sng,(*chr2sng_sf)(chr_val,val_sng));
+          } /* end loop over character */
+          (void)fprintf(stdout,"%s%s",sng_val_sng,(prn_flg->xml) ? "" : "\"");
+          /* Print separator after non-final string */
+          if(lmn != var_szm1) (void)fprintf(stdout,"%s",spr_sng);
+          sng_val_sng=(char *)nco_free(sng_val_sng);
+          break;
+        default: nco_dfl_case_nc_type_err(); break;
+        } /* end switch */
+      } /* !is_mss_val */
+      if(var.type != NC_CHAR && var.type != NC_STRING) (void)fprintf(stdout,"%s%s",val_sng,(lmn != var_szm1) ? spr_sng : "");
+    } /* end loop over element */
+    rcd_prn+=0; /* CEWI */
+    if(prn_flg->cdl) (void)fprintf(stdout," ;\n");
+    if(prn_flg->xml) (void)fprintf(stdout,"</values>\n");
+
+  } /* end if prn_flg->cdl || prn_flg->xml */
+
+  if(prn_flg->PRN_DMN_UNITS){
+    const char units_nm[]="units"; /* [sng] Name of units attribute */
+    int rcd_lcl; /* [rcd] Return code */
+    int att_id; /* [id] Attribute ID */
+    long att_sz;
+    nc_type att_typ;
+
+    /* Does variable have character attribute named units_nm? */
+    rcd_lcl=nco_inq_attid_flg(grp_id,var.id,units_nm,&att_id);
+    if(rcd_lcl == NC_NOERR){
+      (void)nco_inq_att(grp_id,var.id,units_nm,&att_typ,&att_sz);
+      if(att_typ == NC_CHAR){
+        unit_sng=(char *)nco_malloc((att_sz+1L)*nco_typ_lng(att_typ));
+        (void)nco_get_att(grp_id,var.id,units_nm,unit_sng,att_typ);
+        unit_sng[(att_sz+1L)*nco_typ_lng(att_typ)-1L]='\0';
+        MALLOC_UNITS_SNG=True; /* [flg] Allocated memory for units string */
+      } /* end if */
+    } /* end if */
+  } /* end if PRN_DMN_UNITS */
+
+  if(var.nbr_dim == 0 && !dlm_sng && !prn_flg->cdl && !prn_flg->xml){
+    /* Variable is scalar, byte, or character */
+    lmn=0L;
+    if(prn_flg->PRN_MSS_VAL_BLANK) is_mss_val = var.has_mss_val ? !memcmp(var.val.vp,var.mss_val.vp,(size_t)val_sz_byt) : False; 
+    if(prn_flg->PRN_DMN_VAR_NM) (void)sprintf(var_sng,"%*s%%s = %s %%s\n",prn_ndn,spc_sng,nco_typ_fmt_sng(var.type)); else (void)sprintf(var_sng,"%*s%s\n",prn_ndn,spc_sng,nco_typ_fmt_sng(var.type));
+    if(prn_flg->PRN_MSS_VAL_BLANK && is_mss_val){
+      if(prn_flg->PRN_DMN_VAR_NM) (void)fprintf(stdout,"%*s%s = %s %s\n",prn_ndn,spc_sng,var_nm,mss_val_sng,unit_sng); else (void)fprintf(stdout,"%*s%s\n",prn_ndn,spc_sng,mss_val_sng); 
+    }else{ /* !is_mss_val */
+      if(prn_flg->PRN_DMN_VAR_NM){
+        switch(var.type){
+        case NC_FLOAT: (void)fprintf(stdout,var_sng,var_nm,var.val.fp[lmn],unit_sng); break;
+        case NC_DOUBLE: (void)fprintf(stdout,var_sng,var_nm,var.val.dp[lmn],unit_sng); break;
+        case NC_SHORT: (void)fprintf(stdout,var_sng,var_nm,var.val.sp[lmn],unit_sng); break;
+        case NC_INT: (void)fprintf(stdout,var_sng,var_nm,var.val.ip[lmn],unit_sng); break;
+        case NC_CHAR:
+          if(var.val.cp[lmn] != '\0'){
+            (void)sprintf(var_sng,"%*s%%s = '%s' %%s\n",prn_ndn,spc_sng,nco_typ_fmt_sng(var.type));
+            (void)fprintf(stdout,var_sng,var_nm,var.val.cp[lmn],unit_sng);
+          }else{ /* Deal with NUL character here */
+            (void)fprintf(stdout,"%*s%s = \"\" %s\n",prn_ndn,spc_sng,var_nm,unit_sng);
+          } /* end if */
+          break;
+        case NC_BYTE: (void)fprintf(stdout,var_sng,var_nm,(unsigned char)var.val.bp[lmn],unit_sng); break;
+        case NC_UBYTE: (void)fprintf(stdout,var_sng,var_nm,var.val.ubp[lmn],unit_sng); break;
+        case NC_USHORT: (void)fprintf(stdout,var_sng,var_nm,var.val.usp[lmn],unit_sng); break;
+        case NC_UINT: (void)fprintf(stdout,var_sng,var_nm,var.val.uip[lmn],unit_sng); break;
+        case NC_INT64: (void)fprintf(stdout,var_sng,var_nm,var.val.i64p[lmn],unit_sng); break;
+        case NC_UINT64: (void)fprintf(stdout,var_sng,var_nm,var.val.ui64p[lmn],unit_sng); break;
+        case NC_STRING: (void)fprintf(stdout,var_sng,var_nm,var.val.sngp[lmn],unit_sng); break;
+        default: nco_dfl_case_nc_type_err(); break;
+        } /* end switch */
+      }else{ /* !PRN_DMN_VAR_NM */
+        switch(var.type){
+        case NC_FLOAT: (void)fprintf(stdout,var_sng,var.val.fp[lmn]); break;
+        case NC_DOUBLE: (void)fprintf(stdout,var_sng,var.val.dp[lmn]); break;
+        case NC_SHORT: (void)fprintf(stdout,var_sng,var.val.sp[lmn]); break;
+        case NC_INT: (void)fprintf(stdout,var_sng,var.val.ip[lmn]); break;
+        case NC_CHAR:
+          if(var.val.cp[lmn] != '\0'){
+            (void)sprintf(var_sng,"'%s'\n",nco_typ_fmt_sng(var.type));
+            (void)fprintf(stdout,var_sng,var.val.cp[lmn]);
+          }else{ /* Deal with NUL character here */
+            (void)fprintf(stdout, "\"\"\n");
+          } /* end if */
+          break;
+        case NC_BYTE: (void)fprintf(stdout,var_sng,(unsigned char)var.val.bp[lmn]); break;
+        case NC_UBYTE: (void)fprintf(stdout,var_sng,var.val.ubp[lmn]); break;
+        case NC_USHORT: (void)fprintf(stdout,var_sng,var.val.usp[lmn]); break;
+        case NC_UINT: (void)fprintf(stdout,var_sng,var.val.uip[lmn]); break;
+        case NC_INT64: (void)fprintf(stdout,var_sng,var.val.i64p[lmn]); break;
+        case NC_UINT64: (void)fprintf(stdout,var_sng,var.val.ui64p[lmn]); break;
+        case NC_STRING: (void)fprintf(stdout,var_sng,var.val.sngp[lmn]); break;
+        default: nco_dfl_case_nc_type_err(); break;
+        } /* end switch */
+      } /* !PRN_DMN_VAR_NM */
+    } /* !is_mss_val */
+  } /* end if variable is scalar, byte, or character */
+
+  if(var.nbr_dim > 0 && !dlm_sng && !prn_flg->cdl && !prn_flg->xml){
+
+    /* Create mod_map_in */
+    for(int idx=0;idx<var.nbr_dim;idx++) mod_map_in[idx]=1L;
+    for(int idx=0;idx<var.nbr_dim;idx++)
+      for(int jdx=idx+1;jdx<var.nbr_dim;jdx++)
+        mod_map_in[idx]*=lmt_msa[jdx]->dmn_sz_org;
+
+    /* Create mod_map_cnt */
+    for(int idx=0;idx<var.nbr_dim;idx++) mod_map_cnt[idx]=1L;
+    for(int idx=0;idx<var.nbr_dim;idx++)
+      for(int jdx=idx;jdx<var.nbr_dim;jdx++)
+        mod_map_cnt[idx]*=lmt_msa[jdx]->dmn_cnt;
+
+    /* Read coordinate dimensions if required */
+    if(prn_flg->PRN_DMN_IDX_CRD_VAL){
+
+      for(int idx=0;idx<var_trv->nbr_dmn;idx++){
+
+        assert(!strcmp(lmt_msa[idx]->dmn_nm,var_trv->var_dmn[idx].dmn_nm));
+
+        if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(stdout,"%s: INFO %s <%s>: reading dimension[%d]:%s: ",nco_prg_nm_get(),fnc_nm,var_trv->nm_fll,idx,var_trv->var_dmn[idx].dmn_nm_fll);
+
+        dim[idx].val.vp=NULL;
+        dim[idx].nm=lmt_msa[idx]->dmn_nm;
+
+        /* Dimension does not have coordinate variable, do not read... */
+        if(!var_trv->var_dmn[idx].is_crd_var){
+          dim[idx].is_crd_dmn=False;
+          dim[idx].cid=-1;
+          continue;
+        }else if(var_trv->var_dmn[idx].is_crd_var){
+          /* Dimension is a coordinate */
+
+          /* Get coordinate from table */
+          crd_sct *crd=var_trv->var_dmn[idx].crd;
+
+          /* Obtain group ID using full group name */
+          (void)nco_inq_grp_full_ncid(nc_id,crd->crd_grp_nm_fll,&var_crd.nc_id);
+
+          /* Obtain variable ID using group ID and name */
+          (void)nco_inq_varid(var_crd.nc_id,crd->nm,&var_crd.id);
+
+          /* Store "var_sct" members for MSA read */
+          var_crd.type=crd->var_typ;  
+          var_crd.nm=crd->nm;
+
+          /* Read coordinate variable with limits applied */
+          dim[idx].val.vp=nco_msa_rcr_clc((int)0,1,lmt,lmt_msa+idx,&var_crd);
+
+          /* Store "dmn_sct" members */
+          dim[idx].is_crd_dmn=True;
+          dim[idx].type=crd->var_typ;
+          dim[idx].cid=var_crd.id;
+
+          /* Ooopssy */ 
+        }else assert(0);
+
+        /* Typecast pointer before use */  
+        (void)cast_void_nctype(dim[idx].type,&dim[idx].val);
+      } /* end for */
+    } /* end if */
+
+    for(lmn=0;lmn<var.sz;lmn++){
+
+      /* memcmp() triggers pedantic warning unless pointer arithmetic is cast to type char * */
+      if(prn_flg->PRN_MSS_VAL_BLANK) is_mss_val = var.has_mss_val ? !memcmp((char *)var.val.vp+lmn*val_sz_byt,var.mss_val.vp,(size_t)val_sz_byt) : False; 
+
+      /* Calculate RAM indices from current limit */
+      for(int idx=0;idx<var.nbr_dim;idx++)
+        dmn_sbs_ram[idx]=(lmn%mod_map_cnt[idx])/(idx == var.nbr_dim-1 ? 1L : mod_map_cnt[idx+1]);
+
+      /* Calculate disk indices from RAM indices */
+      (void)nco_msa_ram_2_dsk(dmn_sbs_ram,lmt_msa,var.nbr_dim,dmn_sbs_dsk,(lmn == var.sz-1L));
+
+      /* Find variable index relative to disk */
+      var_dsk=0;
+      for(int idx=0;idx<var.nbr_dim;idx++) var_dsk+=dmn_sbs_dsk[idx]*mod_map_in[idx];
+
+      /* Skip rest of loop unless element is first in string */
+      if(var.type == NC_CHAR && dmn_sbs_ram[var.nbr_dim-1] > 0) goto lbl_chr_prn;
+
+      /* Print dimensions with indices along with values if they are coordinate variables */
+      if(prn_flg->PRN_DMN_IDX_CRD_VAL){
+        long dmn_sbs_prn;
+        long crd_idx_crr;
+        char dmn_sng[NCO_MAX_LEN_FMT_SNG];
+
+        /* Loop over dimensions whose coordinates are to be printed */
+        for(int idx=0;idx<var_trv->nbr_dmn;idx++){
+
+          /* Reverse dimension ordering for Fortran convention */
+          if(prn_flg->FORTRAN_IDX_CNV) dmn_idx=var.nbr_dim-1-idx; else dmn_idx=idx;
+
+          /* Format and print dimension part of output string for non-coordinate variables */
+
+          /* If variable is a coordinate then skip printing until later */
+          if(var_trv->is_crd_var) continue;
+
+          if(!dim[dmn_idx].is_crd_dmn){ /* If dimension is not a coordinate... */
+            if(prn_flg->PRN_DMN_VAR_NM){
+              if(prn_flg->FORTRAN_IDX_CNV) (void)fprintf(stdout,"%*s%s(%ld) ",(idx == 0) ? prn_ndn : 0,spc_sng,dim[dmn_idx].nm,dmn_sbs_dsk[dmn_idx]+1L); else (void)fprintf(stdout,"%*s%s[%ld] ",(idx == 0) ? prn_ndn : 0,spc_sng,dim[dmn_idx].nm,dmn_sbs_dsk[dmn_idx]);
+            } /* !PRN_DMN_VAR_NM */
+            continue;
+          } /* end if */
+
+          if(prn_flg->PRN_DMN_VAR_NM) (void)sprintf(dmn_sng,"%*s%%s[%%ld]=%s ",(idx == 0) ? prn_ndn : 0,spc_sng,nco_typ_fmt_sng(dim[dmn_idx].type)); else (void)sprintf(dmn_sng,"%*s%s ",(idx == 0) ? prn_ndn : 0,spc_sng,nco_typ_fmt_sng(dim[dmn_idx].type));
+          dmn_sbs_prn=dmn_sbs_dsk[dmn_idx];
+
+          if(prn_flg->FORTRAN_IDX_CNV){
+            (void)sng_idx_dlm_c2f(dmn_sng);
+            dmn_sbs_prn++;
+          } /* end if */
+
+          /* Account for hyperslab offset in coordinate values*/
+          crd_idx_crr=dmn_sbs_ram[dmn_idx];
+          if(prn_flg->PRN_DMN_VAR_NM){
+            switch(dim[dmn_idx].type){
+            case NC_FLOAT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.fp[crd_idx_crr]); break;
+            case NC_DOUBLE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.dp[crd_idx_crr]); break;
+            case NC_SHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.sp[crd_idx_crr]); break;
+            case NC_INT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.ip[crd_idx_crr]); break;
+            case NC_CHAR: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.cp[crd_idx_crr]); break;
+            case NC_BYTE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,(unsigned char)dim[dmn_idx].val.bp[crd_idx_crr]); break;
+            case NC_UBYTE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.ubp[crd_idx_crr]); break;
+            case NC_USHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.usp[crd_idx_crr]); break;
+            case NC_UINT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.uip[crd_idx_crr]); break;
+            case NC_INT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.i64p[crd_idx_crr]); break;
+            case NC_UINT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.ui64p[crd_idx_crr]); break;
+            case NC_STRING: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].nm,dmn_sbs_prn,dim[dmn_idx].val.sngp[crd_idx_crr]); break;
+            default: nco_dfl_case_nc_type_err(); break;
+            } /* end switch */
+          }else{ /* !PRN_DMN_VAR_NM */
+            switch(dim[dmn_idx].type){
+            case NC_FLOAT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.fp[crd_idx_crr]); break;
+            case NC_DOUBLE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.dp[crd_idx_crr]); break;
+            case NC_SHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.sp[crd_idx_crr]); break;
+            case NC_INT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.ip[crd_idx_crr]); break;
+            case NC_CHAR: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.cp[crd_idx_crr]); break;
+            case NC_BYTE: (void)fprintf(stdout,dmn_sng,(unsigned char)dim[dmn_idx].val.bp[crd_idx_crr]); break;
+            case NC_UBYTE: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.ubp[crd_idx_crr]); break;
+            case NC_USHORT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.usp[crd_idx_crr]); break;
+            case NC_UINT: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.uip[crd_idx_crr]); break;
+            case NC_INT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.i64p[crd_idx_crr]); break;
+            case NC_UINT64: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.ui64p[crd_idx_crr]); break;
+            case NC_STRING: (void)fprintf(stdout,dmn_sng,dim[dmn_idx].val.sngp[crd_idx_crr]); break;
+            default: nco_dfl_case_nc_type_err(); break;
+            } /* end switch */
+          } /* !PRN_DMN_VAR_NM */
+        } /* end loop over dimensions */
+      } /* end if PRN_DMN_IDX_CRD_VAL */
+
+      /* Print all characters in last dimension each time penultimate dimension subscript changes to its start value */
+lbl_chr_prn:
+
+      if(var.type == NC_CHAR){
+        static nco_bool NUL_CHR_IN_SLB;
+        static char *prn_sng;
+        static int chr_cnt;
+        static long dmn_sz;
+        static long var_dsk_srt;
+        static long var_dsk_end;
+
+        /* At beginning of character array */
+        if(dmn_sbs_ram[var.nbr_dim-1] == 0L) {
+          dmn_sz=lmt_msa[var.nbr_dim-1]->dmn_cnt;
+          prn_sng=(char *)nco_malloc((size_t)dmn_sz+1UL);
+          var_dsk_srt=var_dsk;
+          var_dsk_end=var_dsk;
+          chr_cnt=0;
+          NUL_CHR_IN_SLB=False;
+        } /* end if */
+
+        /* In middle of array---save characters to prn_sng */
+        prn_sng[chr_cnt++]=var.val.cp[lmn];
+        if(var.val.cp[lmn] == '\0' && !NUL_CHR_IN_SLB){
+          var_dsk_end=var_dsk;
+          NUL_CHR_IN_SLB=True;
+        } /* end if */
+
+        /* At end of character array */
+        if(dmn_sbs_ram[var.nbr_dim-1] == dmn_sz-1L){
+          if(NUL_CHR_IN_SLB){
+            (void)sprintf(var_sng,"%%s[%%ld--%%ld]=\"%%s\" %%s");
+          }else{
+            (void)sprintf(var_sng,"%%s[%%ld--%%ld]='%%s' %%s");
+            prn_sng[chr_cnt]='\0';
+            var_dsk_end=var_dsk;   
+          } /* end if */
+          if(prn_flg->FORTRAN_IDX_CNV){ 
+            (void)sng_idx_dlm_c2f(var_sng);
+            var_dsk_srt++; 
+            var_dsk_end++; 
+          } /* end if */
+          (void)fprintf(stdout,var_sng,var_nm,var_dsk_srt,var_dsk_end,prn_sng,unit_sng);
+          (void)fprintf(stdout,"\n");
+          (void)fflush(stdout);
+          (void)nco_free(prn_sng);
+        } /* endif */
+        continue;
+      } /* end if NC_CHAR */
+
+      /* Print variable name, index, and value */
+      if(prn_flg->PRN_DMN_VAR_NM) (void)sprintf(var_sng,"%*s%%s[%%ld]=%s %%s\n",(var_trv->is_crd_var) ? prn_ndn : 0,spc_sng,nco_typ_fmt_sng(var.type)); else (void)sprintf(var_sng,"%*s%s\n",(var_trv->is_crd_var) ? prn_ndn : 0,spc_sng,nco_typ_fmt_sng(var.type));
+      if(prn_flg->FORTRAN_IDX_CNV){
+        (void)sng_idx_dlm_c2f(var_sng);
+        var_dsk++;
+      } /* end if FORTRAN_IDX_CNV */
+
+      if(prn_flg->PRN_MSS_VAL_BLANK && is_mss_val){
+        if(prn_flg->PRN_DMN_VAR_NM) (void)fprintf(stdout,"%*s%s[%ld]=%s %s\n",(var_trv->is_crd_var) ? prn_ndn : 0,spc_sng,var_nm,var_dsk,mss_val_sng,unit_sng); else (void)fprintf(stdout,"%*s%s\n",(var_trv->is_crd_var) ? prn_ndn : 0,spc_sng,mss_val_sng); 
+      }else{ /* !is_mss_val */
+        if(prn_flg->PRN_DMN_VAR_NM){
+          switch(var.type){
+          case NC_FLOAT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.fp[lmn],unit_sng); break;
+          case NC_DOUBLE: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.dp[lmn],unit_sng); break;
+          case NC_SHORT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.sp[lmn],unit_sng); break;
+          case NC_INT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.ip[lmn],unit_sng); break;
+          case NC_CHAR: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.cp[lmn],unit_sng); break;
+          case NC_BYTE: (void)fprintf(stdout,var_sng,var_nm,var_dsk,(unsigned char)var.val.bp[lmn],unit_sng); break;
+          case NC_UBYTE: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.ubp[lmn],unit_sng); break;
+          case NC_USHORT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.usp[lmn],unit_sng); break;
+          case NC_UINT: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.uip[lmn],unit_sng); break;
+          case NC_INT64: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.i64p[lmn],unit_sng); break;
+          case NC_UINT64: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.ui64p[lmn],unit_sng); break;
+          case NC_STRING: (void)fprintf(stdout,var_sng,var_nm,var_dsk,var.val.sngp[lmn],unit_sng); break;
+          default: nco_dfl_case_nc_type_err(); break;
+          } /* end switch */
+        }else{ /* !PRN_DMN_VAR_NM */
+          switch(var.type){
+          case NC_FLOAT: (void)fprintf(stdout,var_sng,var.val.fp[lmn],unit_sng); break;
+          case NC_DOUBLE: (void)fprintf(stdout,var_sng,var.val.dp[lmn],unit_sng); break;
+          case NC_SHORT: (void)fprintf(stdout,var_sng,var.val.sp[lmn],unit_sng); break;
+          case NC_INT: (void)fprintf(stdout,var_sng,var.val.ip[lmn],unit_sng); break;
+          case NC_CHAR: (void)fprintf(stdout,var_sng,var.val.cp[lmn],unit_sng); break;
+          case NC_BYTE: (void)fprintf(stdout,var_sng,(unsigned char)var.val.bp[lmn],unit_sng); break;
+          case NC_UBYTE: (void)fprintf(stdout,var_sng,var.val.ubp[lmn],unit_sng); break;
+          case NC_USHORT: (void)fprintf(stdout,var_sng,var.val.usp[lmn],unit_sng); break;
+          case NC_UINT: (void)fprintf(stdout,var_sng,var.val.uip[lmn],unit_sng); break;
+          case NC_INT64: (void)fprintf(stdout,var_sng,var.val.i64p[lmn],unit_sng); break;
+          case NC_UINT64: (void)fprintf(stdout,var_sng,var.val.ui64p[lmn],unit_sng); break;
+          case NC_STRING: (void)fprintf(stdout,var_sng,var.val.sngp[lmn],unit_sng); break;
+          default: nco_dfl_case_nc_type_err(); break;
+          } /* end switch */
+        } /* !PRN_DMN_VAR_NM */
+      } /* !is_mss_val */
+    } /* end loop over elements */
+
+    (void)fflush(stdout);
+
+    for(int idx=0;idx<var.nbr_dim;idx++) if(dim[idx].val.vp) dim[idx].val.vp=nco_free(dim[idx].val.vp);
+  } /* end if variable has more than one dimension */
+
+  /* Free value buffer */
+  var.val.vp=nco_free(var.val.vp);
+  var.mss_val.vp=nco_free(var.mss_val.vp);
+  var.nm=(char *)nco_free(var.nm);
+
+  if(MALLOC_UNITS_SNG) unit_sng=(char *)nco_free(unit_sng);
+
+  if(dlm_sng) dlm_sng=(char *)nco_free(dlm_sng);
+
+  if(prn_flg->nwl_pst_val) (void)fprintf(stdout,"\n");
+
+  /* Free (allocated for non scalars only) */
+  if(var.nbr_dim > 0){
+    (void)nco_lmt_msa_free(var_trv->nbr_dmn,lmt_msa);
+    lmt=(lmt_sct **)nco_free(lmt);
+  } /* endif */
+
+} /* end nco_prn_var_val_trv() */
+
+int /* [rcd] Return code */
+nco_grp_prn /* [fnc] Recursively print group contents */
+(const int nc_id, /* I [id] netCDF file ID */
+ const char * const grp_nm_fll, /* I [sng] Absolute group name (path) */
+ prn_fmt_sct * const prn_flg, /* I/O [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] Traversal table */
+{
+  /* Purpose: Recursively print group contents
+     Assumptions: 
+     1. Input group name is a valid group to be extracted (set in nco_xtr_dfn()). 
+        Hence no need to check for group type, or if group is extracted.
+     2. Input ID is netCDF file ID, not extracted group ID */
+
+  /* Testing: 
+     ncks -5 ~/nco/data/in_grp.nc
+     ncks --cdl ~/nco/data/in_grp.nc */
+
+  const char sls_sng[]="/";        /* [sng] Slash string */
+  const char spc_sng[]="";        /* [sng] Space string */
+
+  char grp_nm[NC_MAX_NAME+1L];      /* [sng] Group name */
+  char var_nm[NC_MAX_NAME+1L];      /* [sng] Variable name */ 
+
+  char *nm_cdl;
+  char *var_nm_fll;                /* [sng] Full path for variable */
+
+  int *grp_ids;                    /* [ID] Sub-group IDs array */  
+
+  int dmn_idx_grp[NC_MAX_DIMS];    /* [ID] Dimension indices array for group */ 
+  int grp_idx;                     /* [idx] Group index */  
+  int grp_id;                      /* [id] netCDF group ID */
+  int grp_dpt;                     /* [nbr] Depth of group (root = 0) */
+  int nbr_att;                     /* [nbr] Number of attributes */
+  int nbr_grp;                     /* [nbr] Number of sub-groups in this group */
+  int nbr_var;                     /* [nbr] Number of variables */
+  int prn_ndn=0;                   /* [nbr] Indentation for printing */
+  int rcd=NC_NOERR;                /* [rcd] Return code */
+  int var_id;                      /* [id] Variable ID */
+  int var_idx;                     /* [idx] Variable index */
+  int var_nbr_xtr;                 /* [nbr] Number of extracted variables */
+
+  nm_id_sct *dmn_lst; /* [sct] Dimension list */
+  nm_id_sct *var_lst; /* [sct] Variable list */
+
+  unsigned int dmn_idx; /* [idx] Index over dimensions */
+  unsigned int dmn_nbr; /* [nbr] Number of dimensions defined in group */
+  unsigned int obj_idx; /* [idx] Index over traversal table */
+
+  /* Initialize */
+  dmn_nbr=0; /* [nbr] Number of dimensions defined in group */
+  var_nbr_xtr=0; /* [nbr] Number of variables to be extracted in group */
+
+  /* Find group in traversal table */
+  for(obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++)
+    if(trv_tbl->lst[obj_idx].nco_typ == nco_obj_typ_grp)
+      if(!strcmp(trv_tbl->lst[obj_idx].grp_nm_fll,grp_nm_fll))
+	break;
+    
+  /* Obtain group ID */
+  (void)nco_inq_grp_full_ncid(nc_id,grp_nm_fll,&grp_id);
+
+  /* Obtain group information */
+  grp_dpt=trv_tbl->lst[obj_idx].grp_dpt;
+  nbr_att=trv_tbl->lst[obj_idx].nbr_att;
+  nbr_var=trv_tbl->lst[obj_idx].nbr_var;
+  nbr_grp=trv_tbl->lst[obj_idx].nbr_grp;
+
+  /* Find dimension information for group */
+  for(dmn_idx=0;dmn_idx<trv_tbl->nbr_dmn;dmn_idx++){
+    /* Will dimension be extracted? */
+    if(trv_tbl->lst_dmn[dmn_idx].flg_xtr){
+      /* And was dimension defined in this group? */
+      if(!strcmp(grp_nm_fll,trv_tbl->lst_dmn[dmn_idx].grp_nm_fll)){
+	/* Add dimension to list of dimensions defined in group */
+	dmn_idx_grp[dmn_nbr]=dmn_idx;
+	dmn_nbr++;
+      } /* end if */
+    } /* end if flg_xtr */
+  } /* end loop over dmn_idx */
+
+  /* Create arrays of these dimensions */
+  dmn_lst=(nm_id_sct *)nco_malloc(dmn_nbr*(sizeof(nm_id_sct)));
+  for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+    /* NB: ID here is actually index into trv_tbl->lst_dmn. It is NOT an ID. 
+       However, it is same type (int) as an ID so we can use nm_id infrastructure. */
+    dmn_lst[dmn_idx].id=dmn_idx_grp[dmn_idx];
+    dmn_lst[dmn_idx].nm=strdup(trv_tbl->lst_dmn[dmn_idx_grp[dmn_idx]].nm);
+  } /* end loop over dmn_idx */
+
+  /* Sort dimensions alphabetically */
+  if(dmn_nbr > 1) dmn_lst=nco_lst_srt_nm_id(dmn_lst,dmn_nbr,prn_flg->ALPHA_BY_STUB_GROUP);
+
+  if(prn_flg->xml){
+    if(grp_dpt == 0){
+      if(prn_flg->xml_lcn) (void)fprintf(stdout,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<netcdf xmlns=\"http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2\" location=\"%s\">\n",prn_flg->fl_in); else (void)fprintf(stdout,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<netcdf xmlns=\"http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2\">\n");
+      if(prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s<!-- %s -->\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
+    }else{ /* grp_dpt != 0 */
+      (void)fprintf(stdout,"%*s<group name=\"%s\">\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng,trv_tbl->lst[obj_idx].nm);
+    } /* grp_dpt != 0 */
+  }else if(prn_flg->srm){ /* !xml */
+    /* https://www.unidata.ucar.edu/software/thredds/current/netcdf-java/stream/NcStream.html */
+    
+  }else{ /* !xml */
+    nm_cdl=nm2sng_cdl(nco_gpe_evl_stb(prn_flg->gpe,trv_tbl->lst[obj_idx].nm_fll));
+    if(grp_dpt == 0 && prn_flg->cdl) (void)fprintf(stdout,"netcdf %s {",prn_flg->fl_stb); else (void)fprintf(stdout,"%*sgroup: %s {",grp_dpt*prn_flg->spc_per_lvl,spc_sng,nm_cdl);
+    nm_cdl=(char *)nco_free(nm_cdl);
+    if(prn_flg->fll_pth) (void)fprintf(stdout," // fullname: %s\n",nco_gpe_evl(prn_flg->gpe,grp_nm_fll)); else (void)fprintf(stdout,"\n");
+    if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// %s\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
+    if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// ncgen -k netCDF-4 -b -o %s.nc %s.cdl\n",prn_flg->sxn_fst,spc_sng,prn_flg->fl_stb,prn_flg->fl_stb);
+  } /* !xml */
+
+  /* Print dimension information for group */
+  prn_ndn=prn_flg->ndn=prn_flg->sxn_fst+grp_dpt*prn_flg->spc_per_lvl;
+  if(dmn_nbr > 0 && !prn_flg->xml) (void)fprintf(stdout,"%*sdimensions:\n",prn_flg->ndn,spc_sng);
+  if(prn_flg->cdl) prn_ndn+=prn_flg->var_fst;
+  for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+    if(prn_flg->xml){
+      (void)fprintf(stdout,"%*s<dimension name=\"%s\" length=\"%lu\" %s/>\n",prn_ndn,spc_sng,dmn_lst[dmn_idx].nm,(unsigned long)trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].lmt_msa.dmn_cnt,trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].is_rec_dmn ? "isUnlimited=\"true\" " : "");
+    }else{ /* !XML */
+      nm_cdl=nm2sng_cdl(dmn_lst[dmn_idx].nm);
+      if(trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].is_rec_dmn) (void)fprintf(stdout,"%*s%s = UNLIMITED%s// (%lu currently)\n",prn_ndn,spc_sng,nm_cdl,(prn_flg->cdl) ? " ; " : " ",(unsigned long)trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].lmt_msa.dmn_cnt); else (void)fprintf(stdout,"%*s%s = %lu%s\n",prn_ndn,spc_sng,nm_cdl,(unsigned long)trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].lmt_msa.dmn_cnt,(prn_flg->cdl) ? " ;" : "");
+      nm_cdl=(char *)nco_free(nm_cdl);
+    } /* !XML */
+  } /* end loop over dimension */
+
+  /* Dimension list no longer needed */
+  dmn_lst=nco_nm_id_lst_free(dmn_lst,dmn_nbr);
+
+  /* Variables */
+
+  /* Create array to hold names and indices of extracted variables in this group */
+  var_lst=(nm_id_sct *)nco_malloc(nbr_var*(sizeof(nm_id_sct)));
+
+  for(var_idx=0;var_idx<nbr_var;var_idx++){
+    /* Get variable name */
+    rcd+=nco_inq_varname(grp_id,var_idx,var_nm);
+
+    /* Allocate path buffer and include space for trailing NUL */ 
+    var_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(var_nm)+2L);
+
+    /* Initialize path with current absolute group path */
+    strcpy(var_nm_fll,grp_nm_fll);
+
+    /* If not root group, concatenate separator */
+    if(strcmp(grp_nm_fll,sls_sng)) strcat(var_nm_fll,sls_sng);
+
+    /* Concatenate variable to absolute group path */
+    strcat(var_nm_fll,var_nm);
+
+    /* Find variable in traversal table */
+    for(obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++)
+      if(trv_tbl->lst[obj_idx].nco_typ == nco_obj_typ_var)
+	if(!strcmp(trv_tbl->lst[obj_idx].nm_fll,var_nm_fll))
+	  break;
+    
+    /* Is variable to be extracted? */
+    if(trv_tbl->lst[obj_idx].flg_xtr){
+      /* NB: ID here is actually index into trv_tbl->lst. It is NOT an ID. 
+	 However, it is same type (int) as an ID so we re-use nm_id infrastructure */
+      var_lst[var_nbr_xtr].id=obj_idx;
+      var_lst[var_nbr_xtr].nm=strdup(var_nm);
+      var_nbr_xtr++;
+    } /* endif extracted */
+
+    /* Free constructed name */
+    var_nm_fll=(char *)nco_free(var_nm_fll);
+
+  } /* end loop over variables */
+
+  /* Compactify array to hold names and indices of extracted variables in this group */
+  var_lst=(nm_id_sct *)nco_realloc(var_lst,var_nbr_xtr*(sizeof(nm_id_sct)));
+
+  /* Sort variables alphabetically */
+  if(var_nbr_xtr > 1) var_lst=nco_lst_srt_nm_id(var_lst,var_nbr_xtr,prn_flg->ALPHA_BY_STUB_GROUP);
+
+  /* Print variable information for group */
+  if(var_nbr_xtr > 0 && !prn_flg->xml) (void)fprintf(stdout,"\n%*svariables:\n",prn_flg->ndn,spc_sng);
+  for(var_idx=0;var_idx<var_nbr_xtr;var_idx++){
+    trv_sct var_trv=trv_tbl->lst[var_lst[var_idx].id];
+
+    /* Print variable full name */
+    if(var_trv.grp_dpt > 0 && prn_flg->fll_pth && prn_flg->trd) (void)fprintf(stdout,"%*s%s\n",prn_flg->ndn,spc_sng,var_trv.nm_fll);
+
+    /* Print variable metadata */ 
+    if(prn_flg->PRN_VAR_METADATA || prn_flg->cdl || prn_flg->xml) (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv);
+
+    /* Obtain variable ID using group ID */
+    (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+
+    /* Print variable attributes */
+    if(prn_flg->PRN_VAR_METADATA) (void)nco_prn_att(grp_id,prn_flg,var_id);
+
+    if(prn_flg->xml && prn_flg->PRN_VAR_DATA) (void)nco_prn_var_val_trv(nc_id,prn_flg,&trv_tbl->lst[var_lst[var_idx].id],trv_tbl);
+    if(prn_flg->xml && (prn_flg->PRN_VAR_DATA || prn_flg->PRN_VAR_METADATA)) (void)fprintf(stdout,"%*s</variable>\n",prn_ndn,spc_sng);
+
+    if(var_idx != var_nbr_xtr-1 && !prn_flg->xml) (void)fprintf(stdout,"\n");
+  } /* end loop over var_idx */
+
+  /* Print attribute information for group */
+  if(nbr_att > 0 && prn_flg->PRN_GLB_METADATA && !prn_flg->xml) (void)fprintf(stdout,"\n%*s%s%sattributes:\n",prn_flg->ndn,spc_sng,(prn_flg->cdl) ? "// " : "",(grp_dpt == 0) ? "global " : "group ");
+  if(nbr_att > 0 && prn_flg->PRN_GLB_METADATA) nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
+
+  /* Print data for group */
+  if(var_nbr_xtr > 0 && prn_flg->PRN_VAR_DATA && !prn_flg->xml){
+    (void)fprintf(stdout,"\n%*sdata:\n",prn_flg->ndn,spc_sng);
+    for(var_idx=0;var_idx<var_nbr_xtr;var_idx++) (void)nco_prn_var_val_trv(nc_id,prn_flg,&trv_tbl->lst[var_lst[var_idx].id],trv_tbl);
+  } /* end if */
+
+  /* Variable list no longer needed */
+  var_lst=nco_nm_id_lst_free(var_lst,var_nbr_xtr);
+
+  /* Get ready for sub-groups */ 
+  grp_ids=(int *)nco_malloc(nbr_grp*sizeof(int)); 
+  rcd+=nco_inq_grps(grp_id,(int *)NULL,grp_ids);
+
+  /* Call recursively for all extracted subgroups */
+  for(grp_idx=0;grp_idx<nbr_grp;grp_idx++){
+    char *sub_grp_nm_fll=NULL; /* [sng] Sub group path */
+    int gid=grp_ids[grp_idx]; /* [id] Current group ID */  
+
+    /* Get sub-group name */
+    rcd+=nco_inq_grpname(gid,grp_nm);
+
+    /* Allocate path buffer including space for trailing NUL */ 
+    sub_grp_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(grp_nm)+2L);
+
+    /* Initialize path with current absolute group path */
+    strcpy(sub_grp_nm_fll,grp_nm_fll);
+
+    /* If not root group, concatenate separator */
+    if(strcmp(grp_nm_fll,sls_sng)) strcat(sub_grp_nm_fll,sls_sng);
+
+    /* Concatenate current group to absolute group path */
+    strcat(sub_grp_nm_fll,grp_nm); 
+
+    /* Find sub-group in traversal table */
+    for(obj_idx=0;obj_idx<trv_tbl->nbr;obj_idx++)
+      if(trv_tbl->lst[obj_idx].nco_typ == nco_obj_typ_grp)
+	if(!strcmp(trv_tbl->lst[obj_idx].grp_nm_fll,sub_grp_nm_fll))
+	  break;
+    
+    /* Is sub-group to be extracted? */
+    if(trv_tbl->lst[obj_idx].flg_xtr) rcd+=nco_grp_prn(nc_id,sub_grp_nm_fll,prn_flg,trv_tbl);
+
+    /* Free constructed name */
+    sub_grp_nm_fll=(char *)nco_free(sub_grp_nm_fll);
+  } /* end loop over grp_idx */
+
+  if(prn_flg->xml && grp_dpt == 0) (void)fprintf(stdout,"</netcdf>\n"); 
+  if(prn_flg->xml && grp_dpt != 0) (void)fprintf(stdout,"%*s</group>\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng); 
+  if(prn_flg->cdl) (void)fprintf(stdout,"%*s} // group %s\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng,(grp_dpt == 0) ? grp_nm_fll : nco_gpe_evl(prn_flg->gpe,grp_nm_fll));
+
+  return rcd;
+} /* end nco_grp_prn() */
+
+nco_bool                            /* O [flg] Variable is compound */
+nco_prn_cpd_chk                     /* [fnc] Check whether variable is compound */
+(const trv_sct * const var_trv,     /* I [sct] Variable to check */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */ 
+{
+  /* Purpose: Check whether variable dimensionality is compound, i.e.,
+     whether variable needs extra printed braces in CDL output.
+     For purposes of this routine, a variable is compound iff it contains
+     a record dimension as any but the leading dimension. */
+  
+  int dmn_idx;
+  dmn_trv_sct *dmn_trv; /* [sct] Unique dimension object */
+  
+  if(var_trv->nbr_dmn <= 1) return False;
+  
+  for(dmn_idx=1;dmn_idx<var_trv->nbr_dmn;dmn_idx++){ /* NB: dimension index starts at 1 */
+    dmn_trv=nco_dmn_trv_sct(var_trv->var_dmn[dmn_idx].dmn_id,trv_tbl); 
+    if(dmn_trv->is_rec_dmn) break; /* fxm: change to var_dmn->is_rec_var */
+  } /* end loop over dimensions */
+  
+  if(dmn_idx != var_trv->nbr_dmn) return True; else return False;
+} /* end nco_prn_cpd_chk() */
+
+nco_bool /* O [flg] Type requires hidden _Unsigned attribute string */
+nco_xml_typ_rqr_nsg_att /* [fnc] Does type require hidden _Unsigned attribute for XML representation? */
+(const nc_type nco_typ) /* I [enm] netCDF type */
+{
+  /* Purpose: Return boolean if netCDF type requires hidden _Unsigned attribute for XML representation
+     Output of toolsui shows these attributes */
+  switch(nco_typ){
+  case NC_FLOAT:
+  case NC_DOUBLE:
+  case NC_INT:
+  case NC_SHORT:
+  case NC_CHAR:
+  case NC_BYTE:
+  case NC_INT64:
+  case NC_STRING:
+    return False;
+  case NC_UBYTE:
+  case NC_USHORT:
+  case NC_UINT:
+  case NC_UINT64:
+    return True;
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return False;
+} /* end nco_xml_typ_rqr_nsg_att() */
+
+nco_bool /* O [flg] Type requires hidden _FillValue attribute string */
+nco_xml_typ_rqr_flv_att /* [fnc] Does type require hidden _FillValue attribute for XML representation? */
+(const nc_type nco_typ) /* I [enm] netCDF type */
+{
+  /* Purpose: Return boolean if netCDF type requires hidden _FillValue attribute for XML representation
+     Output of toolsui shows these attributes */
+  switch(nco_typ){
+  case NC_FLOAT:
+  case NC_DOUBLE:
+  case NC_INT:
+  case NC_SHORT:
+  case NC_CHAR:
+  case NC_BYTE:
+  case NC_INT64:
+  case NC_STRING:
+    return False;
+  case NC_UBYTE:
+  case NC_USHORT:
+  case NC_UINT:
+  case NC_UINT64:
+    return True;
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return False;
+} /* end nco_xml_typ_rqr_flv_att() */
diff --git a/src/nco/nco_prn.h b/src/nco/nco_prn.h
index b68e6f9..87f8922 100644
--- a/src/nco/nco_prn.h
+++ b/src/nco/nco_prn.h
@@ -1,13 +1,13 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_prn.h,v 1.29 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_prn.h,v 1.50 2013/11/16 22:00:58 zender Exp $ */
 
-/* Purpose: Printing variables, attributes, metadata */
+/* Purpose: Print variables, attributes, metadata */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 /* Usage:
-   #include "nco_prn.h" *//* Printing variables, attributes, metadata */
+   #include "nco_prn.h" *//* Print variables, attributes, metadata */
 
 #ifndef NCO_PRN_H
 #define NCO_PRN_H
@@ -18,7 +18,7 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -28,30 +28,45 @@
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_cnf_typ.h" /* Conform variable types */
 #include "nco_ctl.h" /* Program flow control functions */
+#include "nco_grp_utl.h" /* Group utilities */
 #include "nco_mmr.h" /* Memory management */
+#ifdef _MSC_VER
+# include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
+#endif /* !_MSC_VER */
 #include "nco_sng_utl.h" /* String utilities */
 
 /* fxm: strings statically allocated with NCO_MAX_LEN_FMT_SNG chars are susceptible to buffer overflow attacks */
 /* Length should be computed at run time but is a pain */
-#define NCO_MAX_LEN_FMT_SNG 100
+#define NCO_MAX_LEN_FMT_SNG 100ul
+
+/* Maximum length of single formatted value of atomic value type */
+#define NCO_ATM_SNG_LNG 25ul
 
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
 void 
-nco_prn_att /* [fnc] Print all attributes of single variable */
-(const int in_id, /* I [id] netCDF input file ID */
+nco_prn_att /* [fnc] Print all attributes of single variable or group */
+(const int grp_id, /* I [id] netCDF group ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
  const int var_id); /* I [id] netCDF input variable ID */
 
 const char * /* O [sng] sprintf() format string for type typ */
 nco_typ_fmt_sng /* [fnc] Provide sprintf() format string for specified type */
 (const nc_type typ); /* I [enm] netCDF type to provide format string for */
 
-void
-nco_prn_var_dfn /* [fnc] Print variable metadata */
-(int in_id, /* I [id] netCDF input file ID */
- char *var_nm); /* I [sng] Variable to pring */
+const char * /* O [sng] sprintf() format string for CDL variable type typ */
+nco_typ_fmt_sng_var_cdl /* [fnc] Provide sprintf() format string for specified variable type in CDL */
+(const nc_type typ); /* I [enm] netCDF variable type to provide CDL format string for */
+
+const char * /* O [sng] sprintf() format string for CDL attribute type typ */
+nco_typ_fmt_sng_att_cdl /* [fnc] Provide sprintf() format string for specified attribute type in CDL */
+(const nc_type typ); /* I [enm] netCDF attribute type to provide CDL format string for */
+
+const char * /* O [sng] sprintf() format string for XML attribute type typ */
+nco_typ_fmt_sng_att_xml /* [fnc] Provide sprintf() format string for specified attribute type in XML */
+(const nc_type typ); /* I [enm] netCDF attribute type to provide XML format string for */
 
 void
 nco_prn_var_val_lmt /* [fnc] Print variable data */
@@ -64,6 +79,39 @@ nco_prn_var_val_lmt /* [fnc] Print variable data */
  const nco_bool PRN_DMN_UNITS, /* I [flg] Print units attribute, if any */
  const nco_bool PRN_DMN_IDX_CRD_VAL); /* I [flg] Print dimension/coordinate indices/values */
 
+void
+nco_prn_var_val_trv             /* [fnc] Print variable data */
+(const int nc_id,                   /* I [ID] netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_sct * const var_trv,    /* I [sct] Object to print (variable) */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] GTT (Group Traversal Table) */
+
+void
+nco_prn_var_dfn /* [fnc] Print variable metadata */
+(const int nc_id, /* I [id] netCDF file ID */
+ const prn_fmt_sct * const prn_flg, /* I [sct] Print-format information */
+ const trv_sct * const var_trv); /* I [sct] Object to print (variable) */
+
+int /* [rcd] Return code */
+nco_grp_prn /* [fnc] Recursively print group contents */
+(const int nc_id, /* I [id] netCDF file ID */
+ const char * const grp_nm_fll, /* I [sng] Absolute group name (path) */
+ prn_fmt_sct * const prn_flg, /* I/O [sct] Print-format information */
+ const trv_tbl_sct * const trv_tbl); /* I [sct] Traversal table */
+
+nco_bool /* O [flg] Variable is compound */
+nco_prn_cpd_chk /* [fnc] Check whether variable is compound */
+(const trv_sct * const var_trv, /* I [sct] Variable to check */
+ const trv_tbl_sct * const trv_tbl); /* I [sct] GTT (Group Traversal Table) */ 
+
+nco_bool /* O [flg] Type requires hidden _FillValue attribute string */
+nco_xml_typ_rqr_flv_att /* [fnc] Does type require hidden _FillValue attribute for XML representation? */
+(const nc_type nco_typ); /* I [enm] netCDF type */
+
+nco_bool /* O [flg] Type requires hidden attribute string */
+nco_xml_typ_rqr_nsg_att /* [fnc] Does type require hidden _Unsigned attribute for XML representation? */
+(const nc_type nco_typ); /* I [enm] netCDF type */
+
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/nco_rec_var.c b/src/nco/nco_rec_var.c
index ecc7f0c..df60b4b 100644
--- a/src/nco/nco_rec_var.c
+++ b/src/nco/nco_rec_var.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_rec_var.c,v 1.21 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_rec_var.c,v 1.28 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: Record variable utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -14,19 +14,19 @@ rec_var_dbg /* [fnc] Aid in debugging problems with record dimension */
  const char * const dbg_sng) /* I [sng] Debugging message to print */
 {
   /* Purpose: Aid in debugging problems with record dimension */
-  /* Usage: if(dbg_lvl == 73) rec_var_dbg(out_id,"After ncvarput()"); */
+  /* Usage: if(nco_dbg_lvl == 73) rec_var_dbg(out_id,"After ncvarput()"); */
   int nbr_dmn_fl;
   int nbr_var_fl;
   int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
   long dmn_sz;
 
-  (void)fprintf(stderr,"%s: DBG %s\n",prg_nm_get(),dbg_sng);
+  (void)fprintf(stderr,"%s: DBG %s\n",nco_prg_nm_get(),dbg_sng);
   (void)nco_inq(nc_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id);
   if(rec_dmn_id == NCO_REC_DMN_UNDEFINED){
-    (void)fprintf(stderr,"%s: DBG %d dimensions, %d variables, no record dimension\n",prg_nm_get(),nbr_dmn_fl,nbr_var_fl);
+    (void)fprintf(stderr,"%s: DBG %d dimensions, %d variables, no record dimension\n",nco_prg_nm_get(),nbr_dmn_fl,nbr_var_fl);
   }else{
     (void)nco_inq_dimlen(nc_id,rec_dmn_id,&dmn_sz);
-    (void)fprintf(stderr,"%s: DBG %d dimensions, %d variables, record dimension size is %li\n",prg_nm_get(),nbr_dmn_fl,nbr_var_fl,dmn_sz);
+    (void)fprintf(stderr,"%s: DBG %d dimensions, %d variables, record dimension size is %li\n",nco_prg_nm_get(),nbr_dmn_fl,nbr_var_fl,dmn_sz);
   } /* end else */
   (void)fflush(stderr);
 } /* end rec_var_dbg() */
@@ -42,14 +42,21 @@ rec_crd_chk /* Check for monotonicity of coordinate values */
   /* Threads: Routine is thread safe and calls no unsafe routines */
   /* Purpose: Check for monotonicity of coordinate values */
 
-  enum monotonic_direction{
-    decreasing, /* 0 */
-    increasing}; /* 1 */
+  static char *rec_crd_nm=NULL;
 
-  static double rec_crd_val_lst;
   static double rec_crd_val_crr;
+  static double rec_crd_val_lst;
+
+  static monotonic_direction_enm monotonic_direction;
 
-  static int monotonic_direction;
+  /* 20130424: First record coordinate variable received will be tested for monotonicity
+     Subsequent record coordinate variables will be ignored
+     Fixes problem caused by associated record coordinates like time_bnds
+     Will be necessary to generalize this for netCDF4 files with multiple record coordinates */
+  if(idx_rec_out == 0L && !rec_crd_nm) rec_crd_nm=(char *)strdup(var->nm);
+  if(rec_crd_nm)
+    if(strcmp(rec_crd_nm,var->nm))
+       return;
 
   /* Use implicit type conversion */
   switch(var->type){
@@ -68,18 +75,18 @@ rec_crd_chk /* Check for monotonicity of coordinate values */
     default: nco_dfl_case_nc_type_err(); break;
   } /* end switch */
   
-  if(idx_rec_out > 1){
+  if(idx_rec_out > 1L){
     if(((rec_crd_val_crr > rec_crd_val_lst) && monotonic_direction == decreasing) ||
        ((rec_crd_val_crr < rec_crd_val_lst) && monotonic_direction == increasing)){
       if(idx_rec-1 == -1){
 	/* Inter-file non-monotonicity */
-	if(dbg_lvl_get() > 0) (void)fprintf(stderr,"%s: INFO/WARNING Inter-file non-monotonicity. Record coordinate \"%s\" does not monotonically %s between last specified record of previous input file (whose name is not cached locally and thus currently unavailable for printing) and first specified record (i.e., record index = %ld) of current input file (%s). This message is often informational only and may usually be safely ignored. It is quite common when joining files with \"wrapped\" recor [...]
+	if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO/WARNING Inter-file non-monotonicity. Record coordinate \"%s\" does not monotonically %s between last specified record of previous input file (whose name is not cached locally and thus currently unavailable for printing) and first specified record (i.e., record index = %ld) of current input file (%s). This message is often informational only and may usually be safely ignored. It is quite common when joining files with \" [...]
       }else{
 	/* Intra-file non-monotonicity */
-	(void)fprintf(stderr,"%s: WARNING Intra-file non-monotonicity. Record coordinate \"%s\" does not monotonically %s between (input file %s record indices: %ld, %ld) (output file %s record indices %ld, %ld) record coordinate values %f, %f\n",prg_nm_get(),var->nm,(monotonic_direction == decreasing ? "decrease" : "increase"),fl_in,idx_rec-1,idx_rec,fl_out,idx_rec_out-1,idx_rec_out,rec_crd_val_lst,rec_crd_val_crr);
+	(void)fprintf(stderr,"%s: WARNING Intra-file non-monotonicity. Record coordinate \"%s\" does not monotonically %s between (input file %s record indices: %ld, %ld) (output file %s record indices %ld, %ld) record coordinate values %f, %f\n",nco_prg_nm_get(),var->nm,(monotonic_direction == decreasing ? "decrease" : "increase"),fl_in,idx_rec-1L,idx_rec,fl_out,idx_rec_out-1,idx_rec_out,rec_crd_val_lst,rec_crd_val_crr);
       } /* end if Intra-file non-monotonicity */
     } /* end if not monotonic */
-  }else if(idx_rec_out == 1){
+  }else if(idx_rec_out == 1L){
     if(rec_crd_val_crr > rec_crd_val_lst) monotonic_direction=increasing; else monotonic_direction=decreasing;
   } /* end if */
     
diff --git a/src/nco/nco_rec_var.h b/src/nco/nco_rec_var.h
index 418e5bf..f1c7c5b 100644
--- a/src/nco/nco_rec_var.h
+++ b/src/nco/nco_rec_var.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_rec_var.h,v 1.17 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_rec_var.h,v 1.20 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: Record variable utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco/nco_rth_flt.c b/src/nco/nco_rth_flt.c
index e741ed9..72e4e04 100644
--- a/src/nco/nco_rth_flt.c
+++ b/src/nco/nco_rth_flt.c
@@ -1,12 +1,26 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_flt.c,v 1.27 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_flt.c,v 1.37 2013/10/22 03:03:46 zender Exp $ */
 
-/* Purpose: Float-precision arithmetic */
+/* Purpose: Float-precision arithmetic, MSVC macros */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
-#include "nco_rth_flt.h" /* Float-precision arithmetic */
+#include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
+
+/* MSVC does not define lround(), lroundf(), lroundl(), llround(), llroundf(), llroundl(): Round to nearest integer, halfway cases round away from 0
+   MSVC does not define lrint(), lrintf(), lrintl(), llrint(), llrintf(), llrintl(): Round to nearest even integer, raise exceptions
+   Summary of POSIX, ISO, and MSVC math intrinsics at http://www.johndcook.com/math_h.html */
+#ifdef _MSC_VER
+long long int llrint(double x){return (x >= 0.0) ? floor(x+0.5) : ceil(x-0.5);};
+long long int llrintf(float x){return (x >= 0.0f) ? floorf(x+0.5f) : ceilf(x-0.5f);};
+long int lrint(double x){return (x >= 0.0) ? floor(x+0.5) : ceil(x-0.5);};
+long int lrintf(float x){return (x >= 0.0f) ? floorf(x+0.5f) : ceilf(x-0.5f);};
+long long int llround(double x){return floor(x+0.5);}
+long long int llroundf(float x){return floorf(x+0.5f);}
+long int lround(double x){return floor(x+0.5);}
+long int lroundf(float x){return floorf(x+0.5f);}
+#endif /* !_MSC_VER */ 
 
 /* In ANSI C, <math.h> provides standard math intrinsics in double precision 
    On most architectures, single precision ("float") versions are also supplied 
@@ -75,7 +89,7 @@ float log10f(float x){return (float)(log10((double)x));}
 #ifdef NEED_LOGF
 float logf(float x){
   /* fxm TODO ncap57: Eventually remove this debugging statement and the include stdio that it requires */
-  /* (void)fprintf(stderr,"%s: DEBUG Using NCO-supplied function logf() from nco_rth_flt.c\n",prg_nm_get()); */
+  /* (void)fprintf(stderr,"%s: DEBUG Using NCO-supplied function logf() from nco_rth_flt.c\n",nco_prg_nm_get()); */
   return (float)(log((double)x));}
 #endif /* !NEED_LOGF */ 
 #ifdef NEED_SINF
@@ -100,11 +114,20 @@ rnd_nbr /* [fnc] Generate random fraction in [0,1] */
 (double x) /* I [frc] Immaterial */
 {
   /* Purpose: Wrapper for system random number generator 
-     Output does not depend on input value of x */
+     Output does not depend on input value of x
+     201207: Without srand() and srandom() seeds, same number would be generated each time */
   long rnd_nbr_lng;
   double rnd_nbr_dbl_frc;
   x=x+0.0; /* CEWI */
+#ifdef _MSC_VER
+  /* Seed random-number generator with current time */
+  srand((unsigned)time(NULL));
+  rnd_nbr_lng=rand();
+#else /* !_MSC_VER */
+  /* Seed random-number generator with current time */
+  srandom((unsigned)time(NULL));
   rnd_nbr_lng=random();
+#endif /* !_MSC_VER */
   rnd_nbr_dbl_frc=rnd_nbr_lng*1.0/RAND_MAX;
   return rnd_nbr_dbl_frc;
 } /* end rnd_nbr() */
@@ -113,3 +136,90 @@ rnd_nbr /* [fnc] Generate random fraction in [0,1] */
 #ifdef NEED_RND_NBRF
 float rnd_nbrf(float x){return (float)(rnd_nbr((double)x));}
 #endif /* !NEED_RND_NBRF */ 
+
+/* fxm TODO nco1092 */
+
+/* C math library math.h guaranteed to include floor() and ceil()
+   So floor() and ceil() are safe to use in definition of other would-be intrinsics
+   Helpful summary of POSIX, ISO, and MSVC math intrinsics at
+   http://www.johndcook.com/math_h.html */
+#ifdef NEED_RINT
+/* Lack of double-precision version implies lack of single-precision version */
+# define NEED_RINTF
+double /* O [frc] Rounded value of x */
+rint /* [fnc] Round x to nearest even integer, raise exceptions */
+(double x) /* I [frc] Value to round */
+{
+  /* Purpose: Rounding function for lame systems that lack the intrinsic rint() 
+     rint() should round x to nearest integer, using current rounding direction (unlike round(), which always rounds away from zero). Halfway cases are rounded to nearest even integer (!). Yes, that appears to be an accurate summary of this highly technical IEEE floating point rounding algorithm.
+     Only difference from nearbyint() is that rint() should raise inexact flag, nearbyint() should not
+     NB: POSIX version of rint() sets IEEE inexact exceptions (unlike nearbyint())
+     This hacked version does not */
+  /* Source:  */
+  return (x >= 0.0) ? floor(x+0.5) : ceil(x-0.5);
+} /* end rint() */
+#endif /* !NEED_RINT */ 
+
+#ifdef NEED_NEARBYINT
+/* Lack of double-precision version implies lack of single-precision version */
+# define NEED_NEARBYINTF
+double /* O [frc] Rounded value of x */
+nearbyint /* [fnc] Round x to nearest even integer, do not raise exceptions */
+(double x) /* I [frc] Value to round */
+{
+  /* Purpose: Rounding function for lame systems that lack the intrinsic nearbyint() 
+     nearbyint() should round x to nearest integer, using current rounding direction (unlike round(), which always rounds away from zero). Halfway cases are rounded to nearest even integer (!). Yes, that appears to be an accurate summary of this highly technical IEEE floating point rounding algorithm.
+     Only difference from rint() is that rint() should raise inexact flag, nearbyint() should not
+     NB: POSIX version of nearbyint() does not set IEEE inexact exceptions (unlike rint()) */
+  /* Source:  */
+  return (x >= 0.0) ? floor(x+0.5) : ceil(x-0.5);
+} /* end nearbyint() */
+#endif /* !NEED_NEARBYINT */ 
+
+#ifdef NEED_ROUND
+/* Lack of double-precision version implies lack of single-precision version */
+# define NEED_ROUNDF
+double /* O [frc] Rounded value of x */
+round /* [fnc] Round x to nearest integer, half-way cases round away from zero */
+(double x) /* I [frc] Value to round */
+{
+  /* Purpose: Rounding function for lame systems that lack the intrinsic round() 
+     round() should round x to nearest integer, halfway cases away from zero regardless of current rounding direction (unlike rint() and nearbyint())
+     Source: http://www.codeproject.com/Articles/58289/C-Round-Function
+     NB: POSIX version should set IEEE inexact exceptions 
+     This hacked version does not */
+  /* NB: function returns int and then implicit coercion turns receptor into floating point */
+  return (x >= 0) ? (int)(x+0.5) : (int)(x-0.5);
+} /* end round() */
+#endif /* !NEED_ROUND */ 
+
+#ifdef NEED_TRUNC
+/* Lack of double-precision version implies lack of single-precision version */
+# define NEED_TRUNCF
+double /* O [frc] Truncated value of x */
+trunc /* [fnc] Truncate x to nearest integer not larger in absolute value */
+(double x) /* I [frc] Value to truncate */
+{
+  /* Purpose: Truncating function for lame systems that lack the intrinsic trunc() 
+     trunc() should round x to nearest integer not larger in absolute value 
+     Truncation is the same thing as implicit conversion to int */
+  /* NB: function returns int and then implicit coercion turns receptor into floating point */
+  return (int)x;
+} /* end trunc() */
+#endif /* !NEED_TRUNC */ 
+
+#ifdef NEED_RINTF
+float rintf(float x){return (float)(rint((double)x));}
+#endif /* !NEED_RINTF */ 
+
+#ifdef NEED_ROUNDF
+float roundf(float x){return (float)(round((double)x));}
+#endif /* !NEED_ROUNDF */ 
+
+#ifdef NEED_NEARBYINTF
+float nearbyintf(float x){return (float)(nearbyint((double)x));}
+#endif /* !NEED_NEARBYINTF */ 
+
+#ifdef NEED_TRUNCF
+float truncf(float x){return (float)(trunc((double)x));}
+#endif /* !NEED_TRUNCF */ 
diff --git a/src/nco/nco_rth_flt.h b/src/nco/nco_rth_flt.h
index d6983d9..2fc36e3 100644
--- a/src/nco/nco_rth_flt.h
+++ b/src/nco/nco_rth_flt.h
@@ -1,13 +1,13 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_flt.h,v 1.35 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_flt.h,v 1.50 2013/07/25 19:45:57 zender Exp $ */
 
-/* Purpose: Float-precision arithmetic */
+/* Purpose: Float-precision arithmetic, MSVC macros */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 /* Usage:
-   #include "nco_rth_flt.h" *//* Float-precision arithmetic */
+   #include "nco_rth_flt.h" *//* Float-precision arithmetic, MSVC macros */
 
 #ifndef NCO_RTH_FLT_H
 #define NCO_RTH_FLT_H
@@ -19,9 +19,13 @@
 /* Standard header files */
 #include <math.h> /* sin cos cos sin 3.14159 */
 
-/* fxm stdio only needed for TODO ncap57 */
+#ifdef _MSC_VER
+# include <float.h> /* isfinite(), isinf(), isnan() */
+#endif /* !_MSC_VER */
+/* fxm stdio only needed for TODO ncap57 on UNIX */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
+#include <time.h> /* time() seed for random()/rand() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -33,10 +37,91 @@
 extern "C" {
 #endif /* __cplusplus */
 
-#if !defined(HPUX) && !defined(__INTEL_COMPILER)
+/* Home-brewed functions like rnd_nbr() need no pre-processor token protection since 
+   they will never be defined in system-supplied libraries/headers */
+double /* O [frc] Random fraction in [0,1] */
+rnd_nbr /* [fnc] Generate random fraction in [0,1] */
+(double x); /* I [frc] Immaterial */
+
+float /* O [frc] Random fraction in [0,1] */
+rnd_nbrf /* [fnc] Generate random fraction in [0,1] */
+(float); /* I [frc] Immaterial */
+
+/* Remaining definitions are system-dependent */
+
+/* MSVC does not define isnormal(), isnan(), isinf(), isfinite()
+   http://stackoverflow.com/questions/2249110/how-do-i-make-a-portable-isnan-isinf-function */
+#ifdef _MSC_VER
+  /* isnormal() may be in MSVC 2012 with header amp_math.h. fxm: verify and utilize if true. */
+# define isnormal
+  /* Following functions are in MSVC 2008+ and require float.h */
+# define isnan(x) _isnan(x)
+# define isfinite(x) _finite(x)
+# define isinf(x) (!_finite(x))
+#endif /* !_MSC_VER */
+
+#ifdef _MSC_VER
+  /* _snprintf() is in MSVC 2005+ and requires stdio.h */
+# define snprintf _snprintf
+#endif /* !_MSC_VER */
+
+/* MSVC does not define lround(), lroundf(), lroundl(), llround(), llroundf(), llroundl(): Round to nearest integer, halfway cases round away from 0
+   MSVC does not define lrint(), lrintf(), lrintl(), llrint(), llrintf(), llrintl(): Round to nearest even integer, raise exceptions
+   Summary of POSIX, ISO, and MSVC math intrinsics at http://www.johndcook.com/math_h.html */
+#ifdef _MSC_VER
+  long long int llrint(double x);
+  long long int llrintf(float x);
+  long int lrint(double x);
+  long int lrintf(float x);
+  long long int llround(double x);
+  long long int llroundf(float x);
+  long int lround(double x);
+  long int lroundf(float x);
+#endif /* !_MSC_VER */ 
+
+#ifdef _MSC_VER
+  /* 20130227: Hard-code these because MSVC does not have access to config.h
+     Lack of double-precision version implies lack of single-precision version
+     Hence single-precision ("float") tokens are set in double-precision prototypes below */
+# define NEED_RINT
+# define NEED_NEARBYINT
+# define NEED_ROUND
+# define NEED_TRUNC
+#endif /* !_MSC_VER */
+
+#ifdef NEED_RINT
+# define NEED_RINTF
+double /* O [frc] Rounded value of x */
+rint /* [fnc] Round x to nearest even integer, raise exceptions */
+(double x); /* I [frc] Value to round */
+#endif /* !NEED_RINT */ 
+
+#ifdef NEED_NEARBYINT
+# define NEED_NEARBYINTF
+double /* O [frc] Rounded value of x */
+nearbyint /* [fnc] Round x to nearest even integer, do not raise exceptions */
+(double x); /* I [frc] Value to round */
+#endif /* !NEED_NEARBYINT */ 
+
+#ifdef NEED_ROUND
+# define NEED_ROUNDF
+double /* O [frc] Rounded value of x */
+round /* [fnc] Round x to nearest integer, half-way cases round away from zero */
+(double x); /* I [frc] Value to round */
+#endif /* !NEED_ROUND */ 
+
+#ifdef NEED_TRUNC
+# define NEED_TRUNCF
+double /* O [frc] Truncated value of x */
+trunc /* [fnc] Truncate x to nearest integer not larger in absolute value */
+(double x); /* I [frc] Value to truncate */
+#endif /* !NEED_TRUNC */
+
+#if !defined(HPUX) && !defined(__INTEL_COMPILER) && !defined(LINUXAMD64)
   /* Math float prototypes required by AIX, Solaris, but not by Linux, IRIX
      20040708: HP-UX does not like these 
-     20090223: Intel compilers version 11.x complains about these */
+     20090223: Intel compilers version 11.x complains about these
+     20130724: Yellowstone chokes on these when compiling ncap2 with g++ */
 
   /* Basic math: acos, asin, atan, atan2, cos, exp, fabs, log, log10, pow, sin, sqrt, tan */
   float acosf(float);
@@ -57,7 +142,6 @@ extern "C" {
   float erff(float);
   float erfcf(float);
   float gammaf(float);
-  float rnd_nbrf(float);
 
   /* Hyperbolic trigonometric: acosh, asinh, atanh, cosh, sinh, tanh */
   float acoshf(float);
@@ -77,11 +161,7 @@ extern "C" {
   float roundf(float);
   float truncf(float);
 
-#endif /* HPUX */
-
-double /* O [frc] Random fraction in [0,1] */
-rnd_nbr /* [fnc] Generate random fraction in [0,1] */
-(double x); /* I [frc] Immaterial */
+#endif /* !defined(HPUX) && !defined(__INTEL_COMPILER) && !defined(LINUXAMD64) */
 
 #ifdef __cplusplus
 } /* end extern "C" */
diff --git a/src/nco/nco_rth_utl.c b/src/nco/nco_rth_utl.c
index d510f6b..01cb465 100644
--- a/src/nco/nco_rth_utl.c
+++ b/src/nco/nco_rth_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_utl.c,v 1.43 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_utl.c,v 1.61 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: Arithmetic controls and utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -34,22 +34,107 @@ nco_rth_prc_rnk /* [fnc] Rank precision of arithmetic type */
 } /* end nco_rth_prc_rnk() */
 
 void 
-nco_opr_drv /* [fnc] Intermediate control of arithmetic operations for ncra/ncea */
-(const long idx_rec, /* I [idx] Index of current record */
+nco_opr_nrm /* [fnc] Normalization of arithmetic operations for ncra/nces */
+(const int nco_op_typ, /* I [enm] Operation type */
+ const int nbr_var_prc, /* I [nbr] Number of processed variables */
+ X_CST_PTR_CST_PTR_Y(var_sct,var_prc), /* I [sct] Variables in input file */
+ X_CST_PTR_CST_PTR_Y(var_sct,var_prc_out), /* I/O [sct] Variables in output file */
+ const nco_bool flg_nrm, /* I [flg] This record needs normalization */
+ const char * const rec_nm_fll,      /* I [sng] Full name of record being done in loop (trv_tbl->lmt_rec[idx_rec]->nm_fll ) */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] Traversal table */
+{
+  /* Purpose: Normalize appropriate ncra/nces operation (avg, min, max, ttl, ...) on operands
+     Values of var_prc are not altered but are not const because missing values are cast
+     Values of var_prc_out are altered (i.e., normalized) */
+
+  int idx=int_CEWI;
+  int nbr_var_prc_cpy;
+  int nco_op_typ_cpy;
+
+  nco_op_typ_cpy=nco_op_typ;
+  nbr_var_prc_cpy=nbr_var_prc;
+
+#ifdef _OPENMP
+#pragma omp parallel for default(none) private(idx) shared(nbr_var_prc_cpy,nco_op_typ_cpy,var_prc,var_prc_out)
+#endif /* !_OPENMP */
+  for(idx=0;idx<nbr_var_prc_cpy;idx++){
+
+    /* Skip variable if does not relate to current record */
+    if (rec_nm_fll){
+      nco_bool flg_skp=nco_skp_var(var_prc[idx],rec_nm_fll,trv_tbl);
+      if (flg_skp){
+        continue;
+      }
+    }
+
+    if(var_prc[idx]->is_crd_var){
+      /* Return linear averages of coordinates unless computing extrema
+      Prevent coordinate variables from encountering nco_var_nrm_sdn() */
+      (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
+    }else{ /* !var_prc[idx]->is_crd_var */
+      switch(nco_op_typ_cpy){
+      case nco_op_avg: /* Normalize sum by tally to create mean */
+      case nco_op_sqrt: /* Normalize sum by tally to create mean */
+      case nco_op_sqravg: /* Normalize sum by tally to create mean */
+      case nco_op_rms: /* Normalize sum of squares by tally to create mean square */
+      case nco_op_avgsqr: /* Normalize sum of squares by tally to create mean square */
+        (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
+
+        break;
+      case nco_op_rmssdn: /* Normalize sum of squares by tally-1 to create mean square for sdn */
+        (void)nco_var_nrm_sdn(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
+        break;
+      case nco_op_min: /* Minimum is already in buffer, do nothing */
+      case nco_op_max: /* Maximum is already in buffer, do nothing */
+        break;
+      case nco_op_ttl: /* Total is already in buffer, stuff missing values into elements with zero tally */
+        (void)nco_var_tll_zro_mss_val(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
+        break;
+      default:
+        break;
+      } /* end switch */
+      /* Some operations require additional processing */
+      switch(nco_op_typ_cpy) {
+      case nco_op_rms: /* Take root of mean of sum of squares to create root mean square */
+      case nco_op_rmssdn: /* Take root of sdn mean of sum of squares to create root mean square for sdn */
+      case nco_op_sqrt: /* Take root of mean to create root mean */
+        (void)nco_var_sqrt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val,var_prc_out[idx]->val);
+        break;
+      case nco_op_sqravg: /* Square mean to create square of the mean (for sdn) */
+        (void)nco_var_mlt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->val,var_prc_out[idx]->val);
+        break;
+      default:
+        break;
+      } /* end switch */
+    } /* !var_prc[idx]->is_crd_var */
+  } /* end (OpenMP parallel for) loop over variables */
+
+} /* end nco_opr_nrm() */
+
+void 
+nco_opr_drv /* [fnc] Intermediate control of arithmetic operations for ncra/nces */
+(const long idx_rec, /* I [idx] Index of record (ncra), file (ncfe), or group (ncge) in current operation */
  const int nco_op_typ, /* I [enm] Operation type */
  const var_sct * const var_prc, /* I [sct] Variable in input file */
  var_sct * const var_prc_out) /* I/O [sct] Variable in output file */
 {
-  /* Purpose: Perform appropriate ncra/ncea operation (avg, min, max, ttl, ...) on operands
-     nco_opr_drv() is called within the record loop of ncra, and within file loop of ncea
+  /* Purpose: Perform appropriate ncra/nces operation (avg, min, max, ttl, ...) on operands
+     nco_opr_drv() is called within the record loop of ncra, and within file loop of nces
      These operations perform some, but not all, of necessary operations for each procedure
-     Most arithmetic operations require additional procedures such as normalization be performed after all files/records have been processed */
+     Most arithmetic operations require additional procedures such as normalization be performed after all files/records have been processed
+     Some operations require special care at initialization
+     This determination is based on the idx_rec variable
+     When idx_rec == 0, these operations may perform special initializations
+     The exact numeric value of idx_rec does not matter
+     What matters is whether it is zero or non-zero */
   
   /* NCO's paradigm is that coordinate variables represent grid axes
      Reducing such grids to a single-value must be done
      The most representative value of the grid is the average 
      The total, min, max, rms, etc. of the grid usually makes no sense
-     Users are most interested in the mean grid coordinate */
+     Users are most interested in the mean grid coordinate
+     20130112: The same logic applies to CF-style coordinates, e.g., 
+     to variables matching the CF "bounds" and "coordinates" conventions */
   if(var_prc->is_crd_var){
     (void)nco_var_add_tll_ncra(var_prc->type,var_prc->sz,var_prc->has_mss_val,var_prc->mss_val,var_prc->tally,var_prc->val,var_prc_out->val);
     return;
@@ -66,24 +151,24 @@ nco_opr_drv /* [fnc] Intermediate control of arithmetic operations for ncra/ncea
     /* On first loop, simply copy variables from var_prc to var_prc_out */
     if(idx_rec == 0) (void)nco_var_copy(var_prc->type,var_prc->sz,var_prc->val,var_prc_out->val); else (void)nco_var_max_bnr(var_prc_out->type,var_prc_out->sz,var_prc->has_mss_val,var_prc->mss_val,var_prc->val,var_prc_out->val);
     break;	
-  case nco_op_ttl: /* Total */ 
+  case nco_op_ttl: /* Total */
     /* NB: copying input to output on first loop for nco_op_ttl, in similar manner to nco_op_[max/min], can work
-       However, the copying with nco_var_copy() would not change the tally variable, leaving it equal to zero
+       However, copying with nco_var_copy() would not change the tally variable, leaving it equal to zero
        Then an extra step would be necessary to set tally equal to one where missing values were not present
        Otherwise, e.g., ensemble averages of one file would never have non-zero tallies
-       Hence, use special nco_var_copy_tll() function on to copy and change tally only in first loop iteration
+       Hence, use special nco_var_copy_tll() function to copy and change tally only in first loop iteration
        This way, tally is self-consistent with var_prc_out at all times
-       Other option is to use nco_var_add_tll_ncra() below and then to post-process nco_op_ttl with nco_var_tll_zro_mss_val()
-       in parent function (i.e., in ncra.c).
-       However, that method has downside that post-processing must be done in parent function
-       By using nco_var_copy_tll() in first iteration here, we avoid performing post-processing in parent function */
+       Moreover, running total must never be set to missing_value, because subsequent additions
+       (with nco_var_add_tll_ncra()) only check new addend (not running sum) against missing value.
+       Hence (as of 20120521) nco_var_copy_tll() specifically resets sum to zero rather than to missing value
+       Parent function (e.g., ncra.c) must post-process ttl buffers nco_op_ttl with nco_var_tll_zro_mss_val() */
     if(idx_rec == 0) (void)nco_var_copy_tll(var_prc->type,var_prc->sz,var_prc->has_mss_val,var_prc->mss_val,var_prc->tally,var_prc->val,var_prc_out->val); else (void)nco_var_add_tll_ncra(var_prc->type,var_prc->sz,var_prc->has_mss_val,var_prc->mss_val,var_prc->tally,var_prc->val,var_prc_out->val);
     break;
   case nco_op_avg: /* Average */
   case nco_op_sqrt: /* Squareroot will produce the squareroot of the mean */
   case nco_op_sqravg: /* Square of the mean */
     /* These operations all require subsequent normalization, where degenerate tallies are accounted for
-       Thus, the all call nco_var_add_tll_ncra() every iteration, without special treatment on first iteration */
+       Thus, they all call nco_var_add_tll_ncra() every iteration, without special treatment on first iteration */
     (void)nco_var_add_tll_ncra(var_prc->type,var_prc->sz,var_prc->has_mss_val,var_prc->mss_val,var_prc->tally,var_prc->val,var_prc_out->val);
     break;
   case nco_op_rms: /* Root mean square */
@@ -104,26 +189,26 @@ nco_op_typ_get /* [fnc] Convert user-specified operation into operation key */
   /* Purpose: Process '-y' command line argument
      Convert user-specified string to enumerated operation type */
   const char fnc_nm[]="nco_op_typ_get()"; /* [sng] Function name */
-  char *prg_nm; /* [sng] Program name */
-  int prg_id; /* [enm] Program ID */
+  char *nco_prg_nm; /* [sng] Program name */
+  int nco_prg_id; /* [enm] Program ID */
 
-  prg_nm=prg_nm_get(); /* [sng] Program name */
-  prg_id=prg_get(); /* [enm] Program ID */
+  nco_prg_nm=nco_prg_nm_get(); /* [sng] Program name */
+  nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
 
   if(nco_op_sng == NULL){
     /* If nco_op_typ_get() is called when user-specified option string is NULL, 
        then operation type may be implied by program name itself */
-    if(!strcmp(prg_nm,"ncadd")) return nco_op_add;
-    if(!strcmp(prg_nm,"mpncbo")) return nco_op_sbt;
-    if(!strcmp(prg_nm,"mpncdiff")) return nco_op_sbt;
-    if(!strcmp(prg_nm,"ncbo")) return nco_op_sbt;
-    if(!strcmp(prg_nm,"ncdiff")) return nco_op_sbt;
-    if(!strcmp(prg_nm,"ncsub")) return nco_op_sbt;
-    if(!strcmp(prg_nm,"ncsubtract")) return nco_op_sbt;
-    if(!strcmp(prg_nm,"ncmult")) return nco_op_mlt;
-    if(!strcmp(prg_nm,"ncmultiply")) return nco_op_mlt;
-    if(!strcmp(prg_nm,"ncdivide")) return nco_op_dvd;
-    (void)fprintf(stderr,"%s: ERROR %s reports empty user-specified operation string in conjunction with unknown or ambiguous executable name %s\n",prg_nm,fnc_nm,prg_nm);
+    if(!strcmp(nco_prg_nm,"ncadd")) return nco_op_add;
+    if(!strcmp(nco_prg_nm,"mpncbo")) return nco_op_sbt;
+    if(!strcmp(nco_prg_nm,"mpncdiff")) return nco_op_sbt;
+    if(!strcmp(nco_prg_nm,"ncbo")) return nco_op_sbt;
+    if(!strcmp(nco_prg_nm,"ncdiff")) return nco_op_sbt;
+    if(!strcmp(nco_prg_nm,"ncsub")) return nco_op_sbt;
+    if(!strcmp(nco_prg_nm,"ncsubtract")) return nco_op_sbt;
+    if(!strcmp(nco_prg_nm,"ncmult")) return nco_op_mlt;
+    if(!strcmp(nco_prg_nm,"ncmultiply")) return nco_op_mlt;
+    if(!strcmp(nco_prg_nm,"ncdivide")) return nco_op_dvd;
+    (void)fprintf(stderr,"%s: ERROR %s reports empty user-specified operation string in conjunction with unknown or ambiguous executable name %s\n",nco_prg_nm,fnc_nm,nco_prg_nm);
     nco_exit(EXIT_FAILURE);
   } /* endif */
 
@@ -142,9 +227,9 @@ nco_op_typ_get /* [fnc] Convert user-specified operation into operation key */
   if(!strcmp(nco_op_sng,"dvd") || !strcmp(nco_op_sng,"/") || !strcmp(nco_op_sng,"divide") || !strcmp(nco_op_sng,"division")) return nco_op_dvd;
   if(!strcmp(nco_op_sng,"mlt") || !strcmp(nco_op_sng,"*") || !strcmp(nco_op_sng,"mult") || !strcmp(nco_op_sng,"multiply") || !strcmp(nco_op_sng,"multiplication")) return nco_op_mlt;
 
-  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified operation type %s\n",prg_nm,fnc_nm,nco_op_sng);
-  (void)fprintf(stderr,"%s: HINT Valid operation type (op_typ) choices:\n",prg_nm);
-  if(prg_id == ncbo) (void)fprintf(stderr,"addition: add,+,addition\nsubtration: sbt,-,dff,diff,sub,subtract,subtraction\nmultiplication: mlt,*,mult,multiply,multiplication\ndivision: dvd,/,divide,division\n"); else (void)fprintf(stderr,"min,max,ttl,total,sqrt,sqravg,avgsqr,rms,rmssdn");
+  (void)fprintf(stderr,"%s: ERROR %s reports unknown user-specified operation type %s\n",nco_prg_nm,fnc_nm,nco_op_sng);
+  (void)fprintf(stderr,"%s: HINT Valid operation type (op_typ) choices:\n",nco_prg_nm);
+  if(nco_prg_id == ncbo) (void)fprintf(stderr,"addition: add,+,addition\nsubtration: sbt,-,dff,diff,sub,subtract,subtraction\nmultiplication: mlt,*,mult,multiply,multiplication\ndivision: dvd,/,divide,division\n"); else (void)fprintf(stderr,"min,max,ttl,total,sqrt,sqravg,avgsqr,rms,rmssdn");
   nco_exit(EXIT_FAILURE);
   return False; /* Statement should not be reached */
 } /* end nco_op_typ_get() */
@@ -169,7 +254,7 @@ nco_op_prs_rlt /* [fnc] Convert Fortran abbreviation for relational operator int
   }else if(!strcmp(op_sng,"ge")){
     return nco_op_ge;
   }else{
-    (void)fprintf(stdout,"%s: ERROR %s not registered in nco_op_prs_rlt()\n",prg_nm_get(),op_sng);
+    (void)fprintf(stdout,"%s: ERROR %s not registered in nco_op_prs_rlt()\n",nco_prg_nm_get(),op_sng);
     nco_exit(EXIT_FAILURE);
   } /* end else */
 
@@ -197,25 +282,29 @@ vec_set /* [fnc] Fill every value of first operand with value of second operand
     for(idx=0;idx<sz;idx++) op1.dp[idx]=op2;
     break;
   case NC_INT:
-    for(idx=0;idx<sz;idx++) op1.ip[idx]=(nco_int)lround(op2); /* Coerce to avoid C++ compiler assignment warning */
+    for(idx=0;idx<sz;idx++) op1.ip[idx]=(nco_int)lrint(op2); /* Coerce to avoid C++ compiler assignment warning */
     break;
   case NC_SHORT:
-    for(idx=0;idx<sz;idx++) op1.sp[idx]=(nco_short)lround(op2); /* Coerce to avoid C++ compiler assignment warning */
+    for(idx=0;idx<sz;idx++) op1.sp[idx]=(nco_short)lrint(op2); /* Coerce to avoid C++ compiler assignment warning */
     break;
   case NC_USHORT:
-    for(idx=0;idx<sz;idx++) op1.usp[idx]=(nco_ushort)lround(op2); /* Coerce to avoid C++ compiler assignment warning */
+    for(idx=0;idx<sz;idx++) op1.usp[idx]=(nco_ushort)lrint(op2); /* Coerce to avoid C++ compiler assignment warning */
     break;
   case NC_UINT:
-    for(idx=0;idx<sz;idx++) op1.uip[idx]=(nco_uint)lround(op2); /* Coerce to avoid C++ compiler assignment warning */
+    for(idx=0;idx<sz;idx++) op1.uip[idx]=(nco_uint)lrint(op2); /* Coerce to avoid C++ compiler assignment warning */
     break;
   case NC_INT64:
-    for(idx=0;idx<sz;idx++) op1.i64p[idx]=(nco_int64)llround(op2); /* Coerce to avoid C++ compiler assignment warning */
+    for(idx=0;idx<sz;idx++) op1.i64p[idx]=(nco_int64)llrint(op2); /* Coerce to avoid C++ compiler assignment warning */
     break;
   case NC_UINT64:
-    for(idx=0;idx<sz;idx++) op1.ui64p[idx]=(nco_uint64)llround(op2); /* Coerce to avoid C++ compiler assignment warning */
+    for(idx=0;idx<sz;idx++) op1.ui64p[idx]=(nco_uint64)llrint(op2); /* Coerce to avoid C++ compiler assignment warning */
+    break;
+  case NC_BYTE:
+    for(idx=0;idx<sz;idx++) op1.bp[idx]=(nco_byte)llrint(op2); /* Coerce to avoid C++ compiler assignment warning */
+    break;
+  case NC_UBYTE:
+    for(idx=0;idx<sz;idx++) op1.ubp[idx]=(nco_ubyte)llrint(op2); /* Coerce to avoid C++ compiler assignment warning */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
     default: nco_dfl_case_nc_type_err(); break;
@@ -233,19 +322,16 @@ nco_zero_long /* [fnc] Zero all values of long array */
 {
   /* Purpose: Zero all values of long array */
 
-  size_t sz_byt; /* [B] Number of bytes in variable buffer */
-  sz_byt=(size_t)sz*sizeof(long);
-  (void)memset((void *)op1,(long)0,sz_byt);
-
-#if 0
-  /* Presumably this old method used until 20050321 is slower because of pointer de-referencing */
-  long idx;
+  /* Presumably this old method used until 20050321, and then again after 20120330,
+     is slower than memset() because of pointer de-referencing. 
+     However, it does have the virtue of being correct. */
   if(op1 == NULL){
-    (void)fprintf(stdout,"%s: ERROR nco_zero_long() asked to zero NULL pointer\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR nco_zero_long() asked to zero NULL pointer\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* endif */
-  for(idx=0;idx<sz;idx++) op1[idx]=0L;
-#endif /* !0 */
+  size_t sz_byt; /* [B] Number of bytes in variable buffer */
+  sz_byt=(size_t)sz*sizeof(long);
+  (void)memset((void *)op1,0,sz_byt);
 
 } /* end nco_zero_long() */
 
@@ -257,9 +343,11 @@ nco_set_long /* [fnc] Set all values of long array */
 {
   /* Purpose: Set all values of long array to input value */
 
-  size_t sz_byt; /* [B] Number of bytes in variable buffer */
-  sz_byt=(size_t)sz*sizeof(long);
-  (void)memset((void *)op1,(long)val,sz_byt);
+  long idx;
+  if(op1 == NULL){
+    (void)fprintf(stdout,"%s: ERROR nco_set_long() asked to set NULL pointer\n",nco_prg_nm_get());
+    nco_exit(EXIT_FAILURE);
+  } /* endif */
+  for(idx=0;idx<sz;idx++) op1[idx]=val;
 
 } /* end nco_set_long() */
-
diff --git a/src/nco/nco_rth_utl.h b/src/nco/nco_rth_utl.h
index f701883..59efc24 100644
--- a/src/nco/nco_rth_utl.h
+++ b/src/nco/nco_rth_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_utl.h,v 1.25 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_rth_utl.h,v 1.39 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: Arithmetic controls and utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -16,8 +16,13 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
-#include <unistd.h> /* POSIX stuff */
+#include <string.h> /* strcmp() */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif /* !_MSC_VER */
+#ifdef _OPENMP
+# include <omp.h> /* OpenMP pragmas */
+#endif /* !_OPENMP */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
@@ -28,6 +33,9 @@
 #include "nco_cnf_typ.h" /* Conform variable types */
 #include "nco_ctl.h" /* Program flow control functions */
 #include "nco_mmr.h" /* Memory management */
+#ifdef _MSC_VER
+# include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
+#endif /* !_MSC_VER */
 #include "nco_var_utl.h" /* Variable utilities */
 #include "nco_var_rth.h" /* Variable arithmetic */
 
@@ -40,8 +48,18 @@ nco_op_typ_get /* [fnc] Convert user-specified operation into operation key */
 (const char * const nco_op_sng); /* I [sng] User-specified operation */
 
 void 
-nco_opr_drv /* [fnc] Intermediate control of arithmetic operations for ncra/ncea */
-(const long idx_rec, /* I [idx] Index of current record */
+nco_opr_nrm /* [fnc] Normalization of arithmetic operations for ncra/nces */
+(const int nco_op_typ, /* I [enm] Operation type */
+ const int nbr_var_prc, /* I [nbr] Number of processed variables */
+ X_CST_PTR_CST_PTR_Y(var_sct,var_prc), /* I [sct] Variables in input file */
+ X_CST_PTR_CST_PTR_Y(var_sct,var_prc_out), /* I/O [sct] Variables in output file */
+ const nco_bool flg_nrm, /* I [flg] This record needs normalization */
+ const char * const rec_nm_fll,      /* I [sng] Full name of record being done in loop (trv_tbl->lmt_rec[idx_rec]->nm_fll ) */
+ const trv_tbl_sct * const trv_tbl); /* I [sct] Traversal table */
+
+void 
+nco_opr_drv /* [fnc] Intermediate control of arithmetic operations for ncra/nces */
+(const long idx_rec, /* I [idx] Index of record (ncra), file (ncfe), or group (ncge) in current operation */
  const int nco_op_typ, /* I [enm] Operation type */
  const var_sct * const var_prc, /* I [sct] Variable in input file */
  var_sct * const var_prc_out); /* I/O [sct] Variable in output file */
diff --git a/src/nco/nco_scl_utl.c b/src/nco/nco_scl_utl.c
index 42af606..3d6aed1 100644
--- a/src/nco/nco_scl_utl.c
+++ b/src/nco/nco_scl_utl.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_scl_utl.c,v 1.27 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_scl_utl.c,v 1.30 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: Scalar utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -24,6 +24,7 @@ scl_dbl_mk_var /* [fnc] Convert scalar double into netCDF variable */
 
   /* Overwrite defaults with values appropriate for artificial variable */
   var->nm=(char *)strdup("Internally_generated_variable");
+  var->nm_fll=NULL;
   var->nbr_dim=0;
   var->type=NC_DOUBLE;
   var->val.vp=(void *)nco_malloc(nco_typ_lng(var->type));
@@ -86,6 +87,7 @@ scl_ptr_mk_var /* [fnc] Convert void pointer to scalar of any type into NCO vari
   
   /* Overwrite defaults with values appropriate for artificial variable */
   var->nm=(char *)strdup("Internally_generated_variable");
+  var->nm_fll=NULL;
   var->nbr_dim=0;
   var->type=val_typ;
   /* Allocate new space here so that variable can eventually be deleted 
@@ -113,7 +115,7 @@ ptr_unn_2_scl_dbl /* [fnc] Convert first element of NCO variable to a scalar dou
 
   /* Variable must be in memory already */
   if(val.vp == NULL){ 
-    (void)fprintf(stdout,"%s: ERROR ptr_unn_2_scl_dbl() called with empty val.vp\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR ptr_unn_2_scl_dbl() called with empty val.vp\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* endif */
   
diff --git a/src/nco/nco_scl_utl.h b/src/nco/nco_scl_utl.h
index bb58406..8c9e102 100644
--- a/src/nco/nco_scl_utl.h
+++ b/src/nco/nco_scl_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_scl_utl.h,v 1.21 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_scl_utl.h,v 1.23 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: Scalar utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -19,7 +19,7 @@
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
diff --git a/src/nco/nco_scm.c b/src/nco/nco_scm.c
index d84e75e..733f437 100644
--- a/src/nco/nco_scm.c
+++ b/src/nco/nco_scm.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_scm.c,v 1.48 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_scm.c,v 1.51 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: Software configuration management */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -25,12 +25,12 @@ cvs_vrs_prs(void) /* [fnc] Return CVS version string */
   char *nco_sng_ptr=NULL;
   char *usc_1_ptr=NULL;
   char *usc_2_ptr=NULL;
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
 
   /* Unexpanded cvs keywords in cvs_Name trigger GCC 4.0+ warning
      "./src/nco/nco_scm.c:81: warning: offset outside bounds of constant string"
      because routine looks for cvs_Name+7 later on */
-  char cvs_Name[]="$Name: nco-4_0_9 $";
+  char cvs_Name[]="$Name: nco-4_3_9 $";
   const char dlr_nm_cln_spc[]="$Name: "; /* [sng] Dollar name colon space */
   const char nco_sng[]="nco"; 
   const char spc_dlr[]=" $"; /* [sng] Space dollar */
@@ -48,9 +48,9 @@ cvs_vrs_prs(void) /* [fnc] Return CVS version string */
 
   /* Is cvs_Name keyword expanded? */
   dlr_ptr=(char *)strstr(cvs_Name,spc_dlr);
-  if(dlr_ptr == NULL && dbg_lvl_get() > 3)(void)fprintf(stderr,"%s: INFO cvs_vrs_prs() reports dlr_ptr == NULL\n%s: HINT Make sure CVS export uses -kkv\n",prg_nm_get(),prg_nm_get());
+  if(dlr_ptr == NULL && nco_dbg_lvl_get() > 3)(void)fprintf(stderr,"%s: INFO cvs_vrs_prs() reports dlr_ptr == NULL\n%s: HINT Make sure CVS export uses -kkv\n",nco_prg_nm_get(),nco_prg_nm_get());
   cvs_nm_ptr=(char *)strstr(cvs_Name,dlr_nm_cln_spc);
-  if(cvs_nm_ptr == NULL && dbg_lvl_get() > 3)(void)fprintf(stderr,"%s: INFO cvs_vrs_prs() reports cvs_nm_ptr == NULL\n%s: HINT Make sure CVS export uses -kkv\n",prg_nm_get(),prg_nm_get());
+  if(cvs_nm_ptr == NULL && nco_dbg_lvl_get() > 3)(void)fprintf(stderr,"%s: INFO cvs_vrs_prs() reports cvs_nm_ptr == NULL\n%s: HINT Make sure CVS export uses -kkv\n",nco_prg_nm_get(),nco_prg_nm_get());
   cvs_nm_sng_len=(int)(dlr_ptr-cvs_nm_ptr-strlen(dlr_nm_cln_spc)); /* 7 is strlen("$Name: ") */
   if(cvs_nm_sng_len > 0) dly_snp=False; else dly_snp=True;
 
@@ -85,11 +85,11 @@ cvs_vrs_prs(void) /* [fnc] Return CVS version string */
   /* cvs_vrs_sng is, e.g., "1.1" */
   nco_sng_len=strlen(nco_sng);
   nco_sng_ptr=strstr(cvs_nm_sng,nco_sng);
-  if(nco_sng_ptr == NULL)(void)fprintf(stderr,"%s: WARNING cvs_vrs_prs() reports nco_sng_ptr == NULL\n",prg_nm_get());
+  if(nco_sng_ptr == NULL)(void)fprintf(stderr,"%s: WARNING cvs_vrs_prs() reports nco_sng_ptr == NULL\n",nco_prg_nm_get());
   dsh_ptr=strstr(cvs_nm_sng,"-");
-  if(dsh_ptr == NULL)(void)fprintf(stderr,"%s: WARNING cvs_vrs_prs() reports dsh_ptr == NULL\n",prg_nm_get());
+  if(dsh_ptr == NULL)(void)fprintf(stderr,"%s: WARNING cvs_vrs_prs() reports dsh_ptr == NULL\n",nco_prg_nm_get());
   usc_1_ptr=strstr(cvs_nm_sng,"_");
-  if(usc_1_ptr == NULL)(void)fprintf(stderr,"%s: WARNING cvs_vrs_prs() reports usc_1_ptr == NULL\n",prg_nm_get());
+  if(usc_1_ptr == NULL)(void)fprintf(stderr,"%s: WARNING cvs_vrs_prs() reports usc_1_ptr == NULL\n",nco_prg_nm_get());
   cvs_mjr_vrs_len=(int)(usc_1_ptr-dsh_ptr)-1; /* NB: cast pointer to int before subtracting */
   usc_2_ptr=strstr(usc_1_ptr+1,"_");
   cvs_mjr_vrs_sng=(char *)nco_malloc((size_t)cvs_mjr_vrs_len+1);
@@ -124,7 +124,7 @@ cvs_vrs_prs(void) /* [fnc] Return CVS version string */
     (void)sprintf(cvs_vrs_sng,"%li.%li",cvs_mjr_vrs,cvs_mnr_vrs);
   }/* end else */
 
-  if(dbg_lvl_get() == 4){
+  if(nco_dbg_lvl_get() == 4){
     (void)fprintf(stderr,"NCO version %s\n",cvs_vrs_sng);
     (void)fprintf(stderr,"cvs_nm_sng %s\n",cvs_nm_sng);
     (void)fprintf(stderr,"cvs_mjr_vrs_sng %s\n",cvs_mjr_vrs_sng);
@@ -147,7 +147,7 @@ void
 nco_cpy_prn(void) /* [fnc] Print copyright notice */
 {
   /* Purpose: Print copyright notice */
-  (void)fprintf(stderr,"Copyright (C) 1995--2012 Charlie Zender\n");
+  (void)fprintf(stderr,"Copyright (C) 1995--2013 Charlie Zender\n");
   (void)fprintf(stdout,"NCO is free software and comes with a BIG FAT KISS and ABOLUTELY NO WARRANTY\nLicense: GNU General Public License (GPL) Version 3\n");
 } /* end copyright_prn() */
 
@@ -200,9 +200,9 @@ nco_vrs_prn /* [fnc] Print NCO version */
     (void)fprintf(stderr,"NCO netCDF Operators version %s built %s on %s by %s\n",vrs_cpp,date_cpp,hst_cpp,usr_cpp);
   } /* endif */
   if(strlen(CVS_Id) > strlen("*Id*")){
-    (void)fprintf(stderr,"%s version %s\n",prg_nm_get(),vrs_cvs);
+    (void)fprintf(stderr,"%s version %s\n",nco_prg_nm_get(),vrs_cvs);
   }else{
-    (void)fprintf(stderr,"%s version %s\n",prg_nm_get(),vrs_cpp);
+    (void)fprintf(stderr,"%s version %s\n",nco_prg_nm_get(),vrs_cpp);
   } /* endif */
 
   date_cvs=(char *)nco_free(date_cvs);
diff --git a/src/nco/nco_scm.h b/src/nco/nco_scm.h
index 7678b62..fd78f1a 100644
--- a/src/nco/nco_scm.h
+++ b/src/nco/nco_scm.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_scm.h,v 1.22 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_scm.h,v 1.24 2013/01/13 06:07:47 zender Exp $ */
 
 /* Purpose: Software configuration management */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,7 +18,7 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
 
diff --git a/src/nco/nco_sng_utl.c b/src/nco/nco_sng_utl.c
index 13fec88..a9a0b80 100644
--- a/src/nco/nco_sng_utl.c
+++ b/src/nco/nco_sng_utl.c
@@ -1,45 +1,86 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_sng_utl.c,v 1.35 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_sng_utl.c,v 1.66 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: String utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_sng_utl.h" /* String utilities */
 
-#ifdef NEED_STRTOLL
-long long int /* O [nbr] String as long long integer */
-strtoll /* [fnc] Convert string to a long long integer */
-(const char *nptr, 
- char **endptr, 
- int base)
-{
-  /* Purpose: Compatibility function for strtoll()
-     Needed by some C++ compilers, e.g., AIX xlC */
-  long long nbr_out=0LL;
-  return nbr_out;
-} /* end strtoll() */
-#endif /* !NEED_STRTOLL */
-
 #ifdef NEED_STRCASECMP
 int /* O [enm] [-1,0,1] sng_1 [<,=,>] sng_2 */
 strcasecmp /* [fnc] Lexicographical case-insensitive string comparison */
-(const char *sng_1, /* I [sng] First string */
- const char *sng_2) /* I [sng] Second string */
+(const char * const sng_1, /* I [sng] First string */
+ const char * const sng_2) /* I [sng] Second string */
 {
+  /* Copy of (const) input strings */
+  char *sng_1_c=strdup(sng_1);
+  char *sng_2_c=strdup(sng_2);
+
   char chr_1;
   char chr_2;
   while(1){
-    chr_1=tolower(*sng_1++);
-    chr_2=tolower(*sng_2++);
-    if(chr_1 < chr_2) return -1;
-    if(chr_1 > chr_2) return 1;
-    if(chr_1 == 0) return 0;
+    chr_1=tolower(*sng_1_c++);
+    chr_2=tolower(*sng_2_c++);
+    if(chr_1 < chr_2){
+      /* Use free() not nco_free() to keep this more like a generic (non-NCO) library function */
+#ifndef _MSC_VER
+      sng_1_c=(char *)free(sng_1_c);
+      sng_2_c=(char *)free(sng_2_c);
+#endif /* _MSC_VER */
+      return -1;
+    }
+    if(chr_1 > chr_2){
+#ifndef _MSC_VER
+      sng_1_c=(char *)free(sng_1_c);
+      sng_2_c=(char *)free(sng_2_c);
+#endif /* _MSC_VER */
+      return 1;
+    }
+    if(chr_1 == 0){
+#ifndef _MSC_VER
+      sng_1_c=(char *)free(sng_1_c);
+      sng_2_c=(char *)free(sng_2_c);
+#endif
+      return 0;
+    }
   } /* end while */
 } /* end strcasecmp() */
 #endif /* !NEED_STRCASECMP */
 
+/* 20130827 GNU g++ always provides strcasestr(), MSVC never does */
+#ifndef __GNUG__
+# ifdef NEED_STRCASESTR
+char * /* O [sng] Pointer to sng_2 in sng_1 */
+strcasestr /* [fnc] Lexicographical case-insensitive string search */
+(const char * const sng_1, /* I [sng] First string */
+ const char * const sng_2) /* I [sng] Second string */
+{
+  /* 20120706 Initial version discards const, triggers compiler warnings
+     20120803 Kludge with strdup() to try to keep const intact. Fail.
+     20130827 Add (char *) cast (compile error in MSVC) */
+  char *hys_ptr; /* Haystack pointer */
+  char *startn=0;
+  char *np=0;
+  /* Loop exits on NUL */
+  for(hys_ptr=(char *)sng_1;*hys_ptr;hys_ptr++){
+    if(np){
+      if(toupper(*hys_ptr) == toupper(*np)){
+	if(!*++np) return startn;
+      }else{
+	np=0;
+      } /* endif uppercases match */
+    }else if(toupper(*hys_ptr) == toupper(*sng_2)){
+      np=(char *)sng_2+1;
+      startn=hys_ptr;
+    } /* else if */
+  } /* end loop over haystack */
+  return 0;
+} /* end strcasestr() */
+# endif /* !NEED_STRCASESTR */
+#endif /* __GNUG__ */
+
 #ifdef NEED_STRDUP
 char * /* [sng] Copy of input string */
 strdup /* [fnc] Duplicate string */
@@ -47,7 +88,7 @@ strdup /* [fnc] Duplicate string */
 {
   /* Purpose: Provide strdup() for broken systems 
      Input string must be NUL-terminated */
-  int sng_lng=strlen(sng_in)+1;
+  size_t sng_lng=strlen(sng_in)+1UL;
   /* Use nco_malloc() even though strdup() is system function 
      This ensures all NCO code goes through nco_malloc()  */
   char *sng_out=(char *)nco_malloc(sng_lng*sizeof(char));
@@ -56,6 +97,22 @@ strdup /* [fnc] Duplicate string */
 } /* end strdup() */
 #endif /* !NEED_STRDUP */
 
+#ifdef NEED_STRTOLL
+long long int /* O [nbr] String as long long integer */
+strtoll /* [fnc] Convert string to a long long integer */
+(const char * const nptr,
+ char ** const endptr,
+ const int base)
+{
+  /* Purpose: Compatibility function for strtoll()
+     Needed by some C++ compilers, e.g., AIX xlC
+     20120703: rewrite to cast result of strtol() to long long and return */
+  long long nbr_out;
+  nbr_out=(long long)strtol(nptr,endptr,base);
+  return nbr_out;
+} /* end strtoll() */
+#endif /* !NEED_STRTOLL */
+
 char * /* O [sng] Parsed command line */
 nco_cmd_ln_sng /* [fnc] Re-construct command line from arguments */
 (const int argc, /* I [nbr] Argument count */
@@ -86,6 +143,180 @@ nco_cmd_ln_sng /* [fnc] Re-construct command line from arguments */
   return cmd_ln; /* [sng] Parsed command line */
 } /* end nco_cmd_ln_sng() */
 
+void 
+sng_idx_dlm_c2f /* [fnc] Replace brackets with parentheses in a string */
+(char *sng) /* [sng] String to change from C to Fortran notation */
+{
+  /* Purpose: Replace brackets with parentheses in a string */
+  while(*sng){
+    if(*sng == '[') *sng='(';
+    if(*sng == ']') *sng=')';
+    sng++;
+  } /* end while */
+} /* end sng_idx_dlm_c2f() */
+
+char * /* O [sng] CDL-compatible name */
+nm2sng_cdl /* [fnc] Turn variable/dimension/attribute name into legal CDL */
+(const char * const nm_sng) /* I [sng] Name to CDL-ize */
+{
+  /* Purpose: Turn variable/dimension/attribute name into legal CDL 
+     Currently this means protecting special characters with backslash so ncgen can read them
+     NB: Calling function must free() memory containing CDL-ized string
+     Weird file menagerie shows that:
+     NASA HDF4 TRMM files (3B43*.HDF) have filenames starting with numerals (and no metadata)
+     NASA HDF4 AIRS files (AIRS*.hdf) have colons in dimension names
+     NASA HDF4 AMSR_E files (AMSR_E*.hdf) have spaces in variable names, colons and spaces in dimension names
+     NASA HDF4 MODIS files (MOD*.hdf) have colons in names
+     NASA HDF4 MOPPITT files (MOP*.hdf) have spaces in variable names, colons and spaces in dimension names */
+
+  /* https://www.unidata.ucar.edu/software/netcdf/docs/netcdf/CDL-Syntax.html:
+     "In CDL, most special characters are escaped with a backslash '\' character, but that character is not actually part of the netCDF name. The special characters that do not need to be escaped in CDL names are underscore '_', period '.', plus '+', hyphen '-', or at sign '@'. */
+
+  char *chr_in_ptr; /* [sng] Pointer to current character in input name */
+  char *chr_out_ptr; /* [sng] Pointer to current character in output name */
+  char *nm_cdl; /* [sng] CDL-compatible name */
+  char *nm_cpy; /* [sng] Copy of input */
+
+  int nm_lng; /* [nbr] Length of original name */
+  
+  if(nm_sng == NULL) return NULL;
+
+  /* Otherwise name contains special character(s)... */
+  nm_lng=strlen(nm_sng);
+  /* Maximum conceivable length of CDL-ized name */
+  chr_out_ptr=nm_cdl=(char *)nco_malloc(4*nm_lng+1L);
+  /* Copy to preserve const-ness */
+  chr_in_ptr=nm_cpy=(char *)strdup(nm_sng);
+  /* NUL-terminate in case input string is empty so will be output string */
+  chr_out_ptr[0]='0';
+
+  /* Search and replace special characters */
+
+  /* This block stolen from: ncdump/utils.c/escaped_name() */ 
+
+  if((*chr_in_ptr >= 0x01 && *chr_in_ptr <= 0x20) || (*chr_in_ptr == 0x7f)){
+    (void)fprintf(stderr,"%s: ERROR name begins with space or control-character: %c\n",nco_prg_nm_get(),*chr_in_ptr);
+    nco_exit(EXIT_FAILURE);
+  } /* endif error */
+
+  /* Special case: leading number allowed, but we must escape it for CDL */
+  if((*chr_in_ptr >= '0' && *chr_in_ptr <= '9')) *chr_out_ptr++ = '\\';
+
+  while(*chr_in_ptr){
+    if(isascii(*chr_in_ptr)){
+      if(iscntrl(*chr_in_ptr)){	/* Render control chars as two hex digits, \%xx */
+	snprintf(chr_out_ptr,4,"\\%%%.2x",*chr_in_ptr);
+	chr_out_ptr+=4;
+      }else{
+	switch(*chr_in_ptr){
+	case ' ':
+	case '!':
+	case '"':
+	case '#':
+	case '$':
+	case '&':
+	case '\'':
+	case '(':
+	case ')':
+	case '*':
+	case ',':
+	case ':':
+	case ';':
+	case '<':
+	case '=':
+	case '>':
+	case '?':
+	case '[':
+	case ']':
+	case '\\':
+	case '^':
+	case '`':
+	case '{':
+	case '|':
+	case '}':
+	case '~':
+	  *chr_out_ptr++='\\';
+	  *chr_out_ptr++=*chr_in_ptr;
+	  break;
+	default: /* NB: includes '/' */
+	  *chr_out_ptr++=*chr_in_ptr;
+	  break;
+	} /* end switch */
+      } /* not a control character */
+    }else{ /* not ascii, assume just UTF-8 byte */
+      *chr_out_ptr++=*chr_in_ptr;
+    } /* end else not ascii */
+    /* Advance character */
+    chr_in_ptr++;
+  } /* end while loop */
+  /* NUL-terminate */
+  *chr_out_ptr=0;
+
+  /* Free memory */
+  nm_cpy=(char *)nco_free(nm_cpy);
+
+  return nm_cdl;
+} /* end nm2sng_cdl */
+
+char * /* O [sng] String containing printable result */
+chr2sng_cdl /* [fnc] Translate C language character to printable, visible ASCII bytes */
+(const char chr_val, /* I [chr] Character to process */
+ char * const val_sng) /* I/O [sng] String to stuff printable result into */
+{
+  /* Purpose: Translate character to C-printable, visible ASCII bytes for CDL
+     Reference: netcdf-c/ncdump/ncdump.c:pr_att_string() */
+  
+  switch(chr_val){              /* man ascii:Oct   Dec   Hex   Char \X  */
+  case '\a': strcpy(val_sng,"\\a"); break; /* 007   7     07    BEL '\a' Bell */
+  case '\b': strcpy(val_sng,"\\b"); break; /* 010   8     08    BS  '\b' Backspace */
+  case '\f': strcpy(val_sng,"\\f"); break; /* 014   12    0C    FF  '\f' Formfeed */
+  case '\n': strcpy(val_sng,"\\n"); break; /* 012   10    0A    LF  '\n' Linefeed */
+  case '\r': strcpy(val_sng,"\\r"); break; /* 015   13    0D    CR  '\r' Carriage return */
+  case '\t': strcpy(val_sng,"\\t"); break; /* 011   9     09    HT  '\t' Horizontal tab */
+  case '\v': strcpy(val_sng,"\\v"); break; /* 013   11    0B    VT  '\v' Vertical tab */
+  case '\\': strcpy(val_sng,"\\\\"); break; /* 134   92    5C    \   '\\' */
+  case '\'': strcpy(val_sng,"\\\'"); break; /* Unsure why or if this works! */
+  case '\"': strcpy(val_sng,"\\\""); break; /* Unsure why or if this works! */
+  case '\0':	
+    break;
+  default: 
+    sprintf(val_sng,"%c",chr_val); break;
+    break;
+  } /* end switch */
+
+  return val_sng;
+} /* end chr2sng_cdl */
+
+char * /* O [sng] String containing printable result */
+chr2sng_xml /* [fnc] Translate C language character to printable, visible ASCII bytes */
+(const char chr_val, /* I [chr] Character to process */
+ char * const val_sng) /* I/O [sng] String to stuff printable result into */
+{
+  /* Purpose: Translate character to C-printable, visible ASCII bytes for XML
+     Reference: netcdf-c/ncdump/ncdump.c:pr_attx_string() 
+     NB: Unclear whether and'ing with octal 0377 helps anything */
+  //  unsigned char uchar;
+  
+  //  switch(uchar=chr_val & 0377){              /* man ascii:Oct   Dec   Hex   Char \X  */
+  switch(chr_val){              /* man ascii:Oct   Dec   Hex   Char \X  */
+  case '\n': strcpy(val_sng,"&#xA;"); break; /* 012   10    0A    LF  '\n' Linefeed */
+  case '\r': strcpy(val_sng,"&#xD;"); break; /* 015   13    0D    CR  '\r' Carriage return */
+  case '\t': strcpy(val_sng,"&#x9;"); break; /* 011   9     09    HT  '\t' Horizontal tab */
+  case '<': strcpy(val_sng,"<"); break;
+  case '>': strcpy(val_sng,">"); break;
+  case '&': strcpy(val_sng,"&"); break;
+  case '\"': strcpy(val_sng,"""); break;
+  case '\0': /* NB: Unidata handles NUL differently */
+    break;
+  default: 
+    //    if(iscntrl(uchar)) sprintf(val_sng,"&#%d;",uchar); else sprintf(val_sng,"%c",uchar);
+    if(iscntrl(chr_val)) sprintf(val_sng,"&#%d;",chr_val); else sprintf(val_sng,"%c",chr_val);
+    break;
+  } /* end switch */
+
+  return val_sng;
+} /* end chr2sng_xml */
+
 int /* O [nbr] Number of escape sequences translated */
 sng_ascii_trn /* [fnc] Replace C language '\X' escape codes in string with ASCII bytes */
 (char * const sng) /* I/O [sng] String to process */
@@ -142,14 +373,14 @@ sng_ascii_trn /* [fnc] Replace C language '\X' escape codes in string with ASCII
     case '\"': *backslash_ptr='\"'; break; /* Unsure why or if this works! */
     case '0':	
       /* Translating \0 to NUL makes subsequent portion of input string invisible to all string functions */
-      (void)fprintf(stderr,"%s: WARNING C language escape code %.2s found in string, not translating to NUL since this would make the subsequent portion of the string invisible to all C Standard Library string functions\n",prg_nm_get(),backslash_ptr); 
+      (void)fprintf(stderr,"%s: WARNING C language escape code %.2s found in string, not translating to NUL since this would make the subsequent portion of the string invisible to all C Standard Library string functions\n",nco_prg_nm_get(),backslash_ptr); 
       trn_flg=False;
       /* 20101013: Tried changing above behavior to following, and it opened a Hornet's nest of problems... */
       /* *backslash_ptr='\0'; *//* 000   0     00    NUL '\0' */
-      /*      (void)fprintf(stderr,"%s: WARNING translating C language escape code \"\\0\" found in user-supplied string to NUL. This will make the subsequent portion of the string, if any, invisible to C Standard Library string functions. And that may cause unintended consequences.\n",prg_nm_get());*/
+      /*      (void)fprintf(stderr,"%s: WARNING translating C language escape code \"\\0\" found in user-supplied string to NUL. This will make the subsequent portion of the string, if any, invisible to C Standard Library string functions. And that may cause unintended consequences.\n",nco_prg_nm_get());*/
       break;
     default: 
-      (void)fprintf(stderr,"%s: WARNING No ASCII equivalent to possible C language escape code %.2s so no action taken\n",prg_nm_get(),backslash_ptr);
+      (void)fprintf(stderr,"%s: WARNING No ASCII equivalent to possible C language escape code %.2s so no action taken\n",nco_prg_nm_get(),backslash_ptr);
       trn_flg=False;
       break;
     } /* end switch */
@@ -166,8 +397,54 @@ sng_ascii_trn /* [fnc] Replace C language '\X' escape codes in string with ASCII
   } /* end if */
 
   /* Usually there are no escape codes and sng still equals input value */
-  if(dbg_lvl_get() > 3) (void)fprintf(stderr,"%s: DEBUG %s Found %d C-language escape sequences, translated %d of them\n",prg_nm_get(),fnc_nm,esc_sqn_nbr,trn_nbr);
+  if(nco_dbg_lvl_get() > 3) (void)fprintf(stderr,"%s: DEBUG %s Found %d C-language escape sequences, translated %d of them\n",nco_prg_nm_get(),fnc_nm,esc_sqn_nbr,trn_nbr);
 
   return trn_nbr;
 } /* end sng_ascii_trn() */
 
+void /* O [nbr]  */
+sng_trm_trl_zro /* [fnc] Trim zeros trailing the decimal point from floating point string */
+(char * const sng, /* I/O [sng] String to process */
+ const int trl_zro_max) /* [nbr] Maximum number of trailing zeros allowed */
+{
+  /* Purpose: Trim zeros trailing decimal point from floating point string
+     Allow trl_zro_max trailing zeros to remain */
+
+  char *trl_zro_ptr; /* [sng] Trailing zero pointer */
+  char *dcm_ptr; /* [sng] Decimal point pointer */
+  char *vld_ptr=NULL; /* [sng] Valid pointer */
+  char chr_val; /* [chr] Character value */
+
+  int cnt_zro_rmn; /* [nbr] Number of trailing zeros remaining until maximum reached */
+  
+  /* Find decimal point, if any */
+  dcm_ptr=strchr(sng,'.'); 
+  if(dcm_ptr){
+    /* Find last zero after decimal point, if any */
+    trl_zro_ptr=strrchr(dcm_ptr,'0'); 
+    if(trl_zro_ptr){
+      chr_val=*(trl_zro_ptr+1);
+      /* If the next character is a (non-zero) digit, then this is not a trailing zero */
+      if(isdigit(chr_val)) return;
+      /* Next character is a NUL or exponent (d,D,e,E) or floating type suffix (d,D,f,F) */
+      /* This is a trailing zero. Allow given number of trailing zeros. */
+      cnt_zro_rmn=trl_zro_max;
+      while(cnt_zro_rmn > 0){
+	cnt_zro_rmn--;
+	/* Shift pointer back one character. If that is zero, continue else return. */
+	if(*trl_zro_ptr-- != '0') return;
+      } /* end while */
+
+      /* All characters to right are valid */
+      vld_ptr=trl_zro_ptr+1;
+
+      /* Trim all remaining consecutive zeros leftward */
+      while(*trl_zro_ptr == '0') *trl_zro_ptr--='\0';
+
+      /* Copy allowed zeros and/or exponent, if any, to current location */
+      strncpy(trl_zro_ptr+1UL,vld_ptr,strlen(vld_ptr)+1UL);
+    } /* end if trl_zro_ptr */
+  } /* end if dcm_ptr */
+
+  return;
+} /* end sng_trm_trl_zro() */
diff --git a/src/nco/nco_sng_utl.h b/src/nco/nco_sng_utl.h
index 4557c4f..8fbd1ce 100644
--- a/src/nco/nco_sng_utl.h
+++ b/src/nco/nco_sng_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_sng_utl.h,v 1.25 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_sng_utl.h,v 1.43 2013/10/05 23:22:25 zender Exp $ */
 
 /* Purpose: String utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -18,10 +18,18 @@
 
 /* Standard header files */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
-#include <string.h> /* strcmp. . . */
-#ifdef NEED_STRCASECMP
-#include <ctype.h> /* tolower. . . */
-#endif /* !NEED_STRCASECMP */
+#include <string.h> /* strcmp() */
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* strcasecmp() */
+#endif /* !HAVE_STRINGS_H */
+
+#ifdef _MSC_VER
+# define NEED_STRCASESTR
+#endif /* !_MSC_VER */
+
+#if defined(NEED_STRCASECMP) || defined(NEED_STRCASESTR)
+# include <ctype.h> /* tolower() */
+#endif /* !NEED_STRCASECMP || !NEED_STRCASESTR */
 
 /* 3rd party vendors */
 
@@ -35,26 +43,67 @@ extern "C" {
 #ifdef NEED_STRCASECMP
 int /* O [enm] [-1,0,1] sng_1 [<,=,>] sng_2 */
 strcasecmp /* [fnc] Lexicographical case-insensitive string comparison */
-(const char *sng_1, /* I [sng] First string */
- const char *sng_2); /* I [sng] Second string */
+(const char * const sng_1, /* I [sng] First string */
+ const char * const sng_2); /* I [sng] Second string */
 #endif /* !NEED_STRCASECMP */
 
+/* 20130827 GNU g++ always provides strcasestr(), MSVC never does */
+#ifndef __GNUG__
+# ifdef NEED_STRCASESTR
+char * /* O [sng] Pointer to sng_2 in sng_1 */
+strcasestr /* [fnc] Lexicographical case-insensitive string search */
+(const char * const sng_1, /* I [sng] First string */
+ const char * const sng_2); /* I [sng] Second string */
+# endif /* !NEED_STRCASESTR */
+#endif /* __GNUG__ */
+
 #ifdef NEED_STRDUP
 char * /* O [sng] Copy of input string */
 strdup /* [fnc] Duplicate string */
-(const char *sng_in); /* I [sng] String to duplicate */
+(const char * const sng_in); /* I [sng] String to duplicate */
 #endif /* !NEED_STRDUP */
 
+#ifdef NEED_STRTOLL
+long long int /* O [nbr] String as long long integer */
+strtoll /* [fnc] Convert string to a long long integer */
+(const char * const nptr,
+ char ** const endptr,
+ const int base);
+#endif /* !NEED_STRTOLL */
+
 char * /* O [sng] Parsed command line */
 nco_cmd_ln_sng /* [fnc] Re-construct command line from arguments */
 (const int argc, /* I [nbr] Argument count */
  CST_X_PTR_CST_PTR_CST_Y(char,argv)); /* I [sng] Command line argument values */
  /* char **argv); *//* I [sng] Command line argument values */
 
+char * /* O [sng] CDL-compatible name */
+nm2sng_cdl /* [fnc] Turn variable/dimension/attribute name into legal CDL */
+(const char * const nm_sng); /* I [sng] Name to CDL-ize */
+
+char * /* O [sng] String containing printable result */
+chr2sng_cdl /* [fnc] Translate C language character to printable, visible ASCII bytes */
+(const char chr_val, /* I [chr] Character to process */
+ char * const val_sng); /* I/O [sng] String to stuff printable result into */
+
+char * /* O [sng] String containing printable result */
+chr2sng_xml /* [fnc] Translate C language character to printable, visible ASCII bytes */
+(const char chr_val, /* I [chr] Character to process */
+ char * const val_sng); /* I/O [sng] String to stuff printable result into */
+
 int /* O [nbr] Number of escape sequences translated */
 sng_ascii_trn /* [fnc] Replace C language '\X' escape codes in string with ASCII bytes */
 (char * const sng); /* I/O [sng] String to process */
 
+void 
+sng_idx_dlm_c2f /* [fnc] Replace brackets with parentheses in a string */
+(char *sng); /* [sng] String to change from C to Fortran notation */
+
+void /* O [nbr]  */
+sng_trm_trl_zro /* [fnc] Trim zeros trailing the decimal point from floating point string */
+(char * const sng, /* I/O [sng] String to process */
+ const int trl_zro_max); /* [nbr] Maximum number of trailing zeros allowed */
+
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/nco_srm.c b/src/nco/nco_srm.c
new file mode 100644
index 0000000..dd13b0a
--- /dev/null
+++ b/src/nco/nco_srm.c
@@ -0,0 +1,49 @@
+/* $Header: /cvsroot/nco/nco/src/nco/nco_srm.c,v 1.1 2013/11/24 04:06:09 zender Exp $ */
+
+/* Purpose: Streams */
+
+/* Copyright (C) 1995--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
+
+#include "nco_srm.h" /* Streams */
+
+void 
+nco_srm_hdr /* [fnc] Write header to stream */
+(void)
+{
+  /* Purpose: Write header to stream
+     ncstream grammar explained at
+     https://www.unidata.ucar.edu/software/thredds/current/netcdf-java/stream/NcstreamGrammer.html
+
+     Test with:
+     ncks --srm ~/nco/data/in.nc > ~/in.ncs
+     ncks --srm ~/nco/data/in.nc */
+
+  nco_srm_t nco_srm; /* [sct] Stream */
+
+  /* From draft:
+     MAGIC_START = 0x43, 0x44, 0x46, 0x53
+     MAGIC_HEADER= 0xad, 0xec, 0xce, 0xda 
+     MAGIC_DATA =  0xab, 0xec, 0xce, 0xba 
+     MAGIC_VDATA = 0xab, 0xef, 0xfe, 0xba 
+     MAGIC_VEND  = 0xed, 0xef, 0xfe, 0xda 
+     MAGIC_ERR   = 0xab, 0xad, 0xba, 0xda 
+     MAGIC_END =   0xed, 0xed, 0xde, 0xde */
+
+  nco_srm_mgc_t nco_srm_mgc_srt[]={0x43,0x44,0x46,0x53}; /* [sng] "CDFS" */
+  // nco_srm_mgc_t nco_srm_mgc_hdr[]={0xad,0xec,0xce,0xda};
+  // nco_srm_mgc_t nco_srm_mgc_dta[]={0xab,0xec,0xce,0xba};
+  // nco_srm_mgc_t nco_srm_mgc_vdt[]={0xab,0xef,0xfe,0xba};
+  // nco_srm_mgc_t nco_srm_mgc_vnd[]={0xed,0xef,0xfe,0xda};
+  // nco_srm_mgc_t nco_srm_mgc_err[]={0xab,0xad,0xba,0xda};
+  // nco_srm_mgc_t nco_srm_mgc_end[]={0xed,0xed,0xde,0xde};
+
+  /* fxm: there must be a better way... */
+  memcpy(nco_srm.mgc_srt,nco_srm_mgc_srt,sizeof(nco_srm_mgc_srt)/sizeof(nco_srm_mgc_t));
+
+  void *vp;
+  vp=(void *)nco_srm.mgc_srt;
+
+  (void)fwrite(vp,sizeof(nco_srm_mgc_t),(size_t)4,stdout);
+} /* end nco_srm_hdr() */
diff --git a/src/nco/nco_srm.h b/src/nco/nco_srm.h
new file mode 100644
index 0000000..5d3ca06
--- /dev/null
+++ b/src/nco/nco_srm.h
@@ -0,0 +1,52 @@
+/* $Header: /cvsroot/nco/nco/src/nco/nco_srm.h,v 1.1 2013/11/24 04:06:09 zender Exp $ */
+
+/* Purpose: Streams */
+
+/* Copyright (C) 1995--2013 Charlie Zender
+   License: GNU General Public License (GPL) Version 3
+   See http://www.gnu.org/copyleft/gpl.html for full license text */
+
+/* Usage:
+   #include "nco_srm.h" *//* Streams */
+
+#ifndef NCO_SRM_H
+#define NCO_SRM_H
+
+#ifdef HAVE_CONFIG_H
+# include <config.h> /* Autotools tokens */
+#endif /* !HAVE_CONFIG_H */
+
+/* Standard header files */
+#include <stdio.h> /* stderr, FILE, NULL, printf */
+#include <string.h> /* strcmp() */
+
+/* 3rd party vendors */
+#include <netcdf.h> /* netCDF definitions and C library */
+#include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
+
+/* Personal headers */
+#include "nco.h" /* netCDF Operator (NCO) definitions */
+#include "nco_cnf_typ.h" /* Conform variable types */
+#include "nco_ctl.h" /* Program flow control functions */
+#include "nco_mmr.h" /* Memory management */
+#include "nco_sng_utl.h" /* String utilities */
+
+typedef unsigned char nco_srm_mgc_t; /* ncstream MAGIC primitives are 4-bytes long */
+typedef struct nco_srm_sct{
+  nco_srm_mgc_t mgc_srt[4];
+  nco_srm_mgc_t mgc_end[4];
+} nco_srm_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+void 
+nco_srm_hdr /* [fnc] Write header to stream */
+(void);
+
+#ifdef __cplusplus
+} /* end extern "C" */
+#endif /* __cplusplus */
+
+#endif /* NCO_SRM_H */
diff --git a/src/nco/nco_typ.h b/src/nco/nco_typ.h
index a13c4d0..90fde4c 100644
--- a/src/nco/nco_typ.h
+++ b/src/nco/nco_typ.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_typ.h,v 1.34 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_typ.h,v 1.36 2013/02/09 00:19:38 zender Exp $ */
 
 /* Purpose: Type definitions, opaque types */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -86,6 +86,25 @@ C code." */
 #ifndef NC_STRING
 # define	NC_STRING 	12	/* string */
 #endif
+#ifndef NC_VLEN
+# define	NC_VLEN 	13	/* vlen */
+#endif
+#ifndef NC_OPAQUE
+# define	NC_OPAQUE 	14	/* opaque */
+#endif
+#ifndef NC_ENUM
+# define	NC_ENUM 	15	/* enum */
+#endif
+#ifndef NC_COMPOUND
+# define	NC_COMPOUND 	16	/* compound */
+#endif
+#ifndef NC_MAX_ATOMIC_TYPE
+#define NC_MAX_ATOMIC_TYPE NC_STRING
+#endif
+#ifndef NC_FIRSTUSERTYPEID
+#define NC_FIRSTUSERTYPEID 32
+#endif
+
 /* Fill values for netCDF4 datatypes. Referenced in nco_mss_val.c: */
 #ifndef NC_FILL_UBYTE
 # define NC_FILL_UBYTE   (255)
diff --git a/src/nco/nco_uthash.h b/src/nco/nco_uthash.h
new file mode 100644
index 0000000..27a4538
--- /dev/null
+++ b/src/nco/nco_uthash.h
@@ -0,0 +1,946 @@
+/* This NCO file contains the entirety of the uthash.h implementation by
+   Troy D. Hanson http://troydhanson.github.com/uthash
+   It contains no NCO-specific functions, so there is no NCO copyright
+   Retrieved from FC19 RPM uthash.h on 20131018 */
+
+/* Usage:
+   #include "nco_uthash.h" *//* Hash table functionality */
+
+/* Copyright (c) 2003-2013, Troy D. Hanson http://troydhanson.github.com/uthash
+   All rights reserved.
+   
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+   
+   * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+   IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+   TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+   PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+   OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+#ifndef UTHASH_H
+#define UTHASH_H 
+
+#include <string.h>   /* memcmp,strlen */
+#include <stddef.h>   /* ptrdiff_t */
+#include <stdlib.h>   /* exit() */
+
+/* These macros use decltype or the earlier __typeof GNU extension.
+   As decltype is only available in newer compilers (VS2010 or gcc 4.3+
+   when compiling c++ source) this code uses whatever method is needed
+   or, for VS2008 where neither is available, uses casting workarounds. */
+#ifdef _MSC_VER         /* MS compiler */
+#if _MSC_VER >= 1600 && defined(__cplusplus)  /* VS2010 or newer in C++ mode */
+#define DECLTYPE(x) (decltype(x))
+#else                   /* VS2008 or older (or VS2010 in C mode) */
+#define NO_DECLTYPE
+#define DECLTYPE(x)
+#endif
+#else                   /* GNU, Sun and other compilers */
+#define DECLTYPE(x) (__typeof(x))
+#endif
+
+#ifdef NO_DECLTYPE
+#define DECLTYPE_ASSIGN(dst,src)                                                 \
+do {                                                                             \
+  char **_da_dst = (char**)(&(dst));                                             \
+  *_da_dst = (char*)(src);                                                       \
+} while(0)
+#else 
+#define DECLTYPE_ASSIGN(dst,src)                                                 \
+do {                                                                             \
+  (dst) = DECLTYPE(dst)(src);                                                    \
+} while(0)
+#endif
+
+/* a number of the hash function use uint32_t which isn't defined on win32 */
+#ifdef _MSC_VER
+typedef unsigned int uint32_t;
+typedef unsigned char uint8_t;
+#else
+#include <inttypes.h>   /* uint32_t */
+#endif
+
+#define UTHASH_VERSION 1.9.8
+
+#ifndef uthash_fatal
+#define uthash_fatal(msg) exit(-1)        /* fatal error (out of memory,etc) */
+#endif
+#ifndef uthash_malloc
+#define uthash_malloc(sz) malloc(sz)      /* malloc fcn                      */
+#endif
+#ifndef uthash_free
+#define uthash_free(ptr,sz) free(ptr)     /* free fcn                        */
+#endif
+
+#ifndef uthash_noexpand_fyi
+#define uthash_noexpand_fyi(tbl)          /* can be defined to log noexpand  */
+#endif
+#ifndef uthash_expand_fyi
+#define uthash_expand_fyi(tbl)            /* can be defined to log expands   */
+#endif
+
+/* initial number of buckets */
+#define HASH_INITIAL_NUM_BUCKETS 32      /* initial number of buckets        */
+#define HASH_INITIAL_NUM_BUCKETS_LOG2 5  /* lg2 of initial number of buckets */
+#define HASH_BKT_CAPACITY_THRESH 10      /* expand when bucket count reaches */
+
+/* calculate the element whose hash handle address is hhe */
+#define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho)))
+
+#define HASH_FIND(hh,head,keyptr,keylen,out)                                     \
+do {                                                                             \
+  unsigned _hf_bkt,_hf_hashv;                                                    \
+  out=NULL;                                                                      \
+  if (head) {                                                                    \
+     HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt);   \
+     if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) {                           \
+       HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ],  \
+                        keyptr,keylen,out);                                      \
+     }                                                                           \
+  }                                                                              \
+} while (0)
+
+#ifdef HASH_BLOOM
+#define HASH_BLOOM_BITLEN (1ULL << HASH_BLOOM)
+#define HASH_BLOOM_BYTELEN (HASH_BLOOM_BITLEN/8) + ((HASH_BLOOM_BITLEN%8) ? 1:0)
+#define HASH_BLOOM_MAKE(tbl)                                                     \
+do {                                                                             \
+  (tbl)->bloom_nbits = HASH_BLOOM;                                               \
+  (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN);                 \
+  if (!((tbl)->bloom_bv))  { uthash_fatal( "out of memory"); }                   \
+  memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN);                                \
+  (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE;                                       \
+} while (0) 
+
+#define HASH_BLOOM_FREE(tbl)                                                     \
+do {                                                                             \
+  uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN);                              \
+} while (0) 
+
+#define HASH_BLOOM_BITSET(bv,idx) (bv[(idx)/8] |= (1U << ((idx)%8)))
+#define HASH_BLOOM_BITTEST(bv,idx) (bv[(idx)/8] & (1U << ((idx)%8)))
+
+#define HASH_BLOOM_ADD(tbl,hashv)                                                \
+  HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
+
+#define HASH_BLOOM_TEST(tbl,hashv)                                               \
+  HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
+
+#else
+#define HASH_BLOOM_MAKE(tbl) 
+#define HASH_BLOOM_FREE(tbl) 
+#define HASH_BLOOM_ADD(tbl,hashv) 
+#define HASH_BLOOM_TEST(tbl,hashv) (1)
+#define HASH_BLOOM_BYTELEN 0
+#endif
+
+#define HASH_MAKE_TABLE(hh,head)                                                 \
+do {                                                                             \
+  (head)->hh.tbl = (UT_hash_table*)uthash_malloc(                                \
+                  sizeof(UT_hash_table));                                        \
+  if (!((head)->hh.tbl))  { uthash_fatal( "out of memory"); }                    \
+  memset((head)->hh.tbl, 0, sizeof(UT_hash_table));                              \
+  (head)->hh.tbl->tail = &((head)->hh);                                          \
+  (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS;                        \
+  (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2;              \
+  (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head);                    \
+  (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc(                      \
+          HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket));               \
+  if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); }             \
+  memset((head)->hh.tbl->buckets, 0,                                             \
+          HASH_INITIAL_NUM_BUCKETS*sizeof(struct UT_hash_bucket));               \
+  HASH_BLOOM_MAKE((head)->hh.tbl);                                               \
+  (head)->hh.tbl->signature = HASH_SIGNATURE;                                    \
+} while(0)
+
+#define HASH_ADD(hh,head,fieldname,keylen_in,add)                                \
+        HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
+
+#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced)                   \
+do {                                                                             \
+  replaced=NULL;                                                                 \
+  HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced);                     \
+  if (replaced!=NULL) {                                                          \
+     HASH_DELETE(hh,head,replaced);                                              \
+  };                                                                             \
+  HASH_ADD(hh,head,fieldname,keylen_in,add);                                     \
+} while(0)
+ 
+#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add)                            \
+do {                                                                             \
+ unsigned _ha_bkt;                                                               \
+ (add)->hh.next = NULL;                                                          \
+ (add)->hh.key = (char*)keyptr;                                                  \
+ (add)->hh.keylen = (unsigned)keylen_in;                                                   \
+ if (!(head)) {                                                                  \
+    head = (add);                                                                \
+    (head)->hh.prev = NULL;                                                      \
+    HASH_MAKE_TABLE(hh,head);                                                    \
+ } else {                                                                        \
+    (head)->hh.tbl->tail->next = (add);                                          \
+    (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail);         \
+    (head)->hh.tbl->tail = &((add)->hh);                                         \
+ }                                                                               \
+ (head)->hh.tbl->num_items++;                                                    \
+ (add)->hh.tbl = (head)->hh.tbl;                                                 \
+ HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets,                         \
+         (add)->hh.hashv, _ha_bkt);                                              \
+ HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh);                   \
+ HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv);                                 \
+ HASH_EMIT_KEY(hh,head,keyptr,keylen_in);                                        \
+ HASH_FSCK(hh,head);                                                             \
+} while(0)
+
+#define HASH_TO_BKT( hashv, num_bkts, bkt )                                      \
+do {                                                                             \
+  bkt = ((hashv) & ((num_bkts) - 1));                                            \
+} while(0)
+
+/* delete "delptr" from the hash table.
+ * "the usual" patch-up process for the app-order doubly-linked-list.
+ * The use of _hd_hh_del below deserves special explanation.
+ * These used to be expressed using (delptr) but that led to a bug
+ * if someone used the same symbol for the head and deletee, like
+ *  HASH_DELETE(hh,users,users);
+ * We want that to work, but by changing the head (users) below
+ * we were forfeiting our ability to further refer to the deletee (users)
+ * in the patch-up process. Solution: use scratch space to
+ * copy the deletee pointer, then the latter references are via that
+ * scratch pointer rather than through the repointed (users) symbol.
+ */
+#define HASH_DELETE(hh,head,delptr)                                              \
+do {                                                                             \
+    unsigned _hd_bkt;                                                            \
+    struct UT_hash_handle *_hd_hh_del;                                           \
+    if ( ((delptr)->hh.prev == NULL) && ((delptr)->hh.next == NULL) )  {         \
+        uthash_free((head)->hh.tbl->buckets,                                     \
+                    (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
+        HASH_BLOOM_FREE((head)->hh.tbl);                                         \
+        uthash_free((head)->hh.tbl, sizeof(UT_hash_table));                      \
+        head = NULL;                                                             \
+    } else {                                                                     \
+        _hd_hh_del = &((delptr)->hh);                                            \
+        if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) {     \
+            (head)->hh.tbl->tail =                                               \
+                (UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) +               \
+                (head)->hh.tbl->hho);                                            \
+        }                                                                        \
+        if ((delptr)->hh.prev) {                                                 \
+            ((UT_hash_handle*)((ptrdiff_t)((delptr)->hh.prev) +                  \
+                    (head)->hh.tbl->hho))->next = (delptr)->hh.next;             \
+        } else {                                                                 \
+            DECLTYPE_ASSIGN(head,(delptr)->hh.next);                             \
+        }                                                                        \
+        if (_hd_hh_del->next) {                                                  \
+            ((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next +                     \
+                    (head)->hh.tbl->hho))->prev =                                \
+                    _hd_hh_del->prev;                                            \
+        }                                                                        \
+        HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt);   \
+        HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del);        \
+        (head)->hh.tbl->num_items--;                                             \
+    }                                                                            \
+    HASH_FSCK(hh,head);                                                          \
+} while (0)
+
+
+/* convenience forms of HASH_FIND/HASH_ADD/HASH_DEL */
+#define HASH_FIND_STR(head,findstr,out)                                          \
+    HASH_FIND(hh,head,findstr,strlen(findstr),out)
+#define HASH_ADD_STR(head,strfield,add)                                          \
+    HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
+#define HASH_REPLACE_STR(head,strfield,add,replaced)                             \
+  HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
+#define HASH_FIND_INT(head,findint,out)                                          \
+    HASH_FIND(hh,head,findint,sizeof(int),out)
+#define HASH_ADD_INT(head,intfield,add)                                          \
+    HASH_ADD(hh,head,intfield,sizeof(int),add)
+#define HASH_REPLACE_INT(head,intfield,add,replaced)                             \
+    HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
+#define HASH_FIND_PTR(head,findptr,out)                                          \
+    HASH_FIND(hh,head,findptr,sizeof(void *),out)
+#define HASH_ADD_PTR(head,ptrfield,add)                                          \
+    HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
+#define HASH_REPLACE_PTR(head,ptrfield,add)                                      \
+    HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
+#define HASH_DEL(head,delptr)                                                    \
+    HASH_DELETE(hh,head,delptr)
+
+/* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
+ * This is for uthash developer only; it compiles away if HASH_DEBUG isn't defined.
+ */
+#ifdef HASH_DEBUG
+#define HASH_OOPS(...) do { fprintf(stderr,__VA_ARGS__); exit(-1); } while (0)
+#define HASH_FSCK(hh,head)                                                       \
+do {                                                                             \
+    unsigned _bkt_i;                                                             \
+    unsigned _count, _bkt_count;                                                 \
+    char *_prev;                                                                 \
+    struct UT_hash_handle *_thh;                                                 \
+    if (head) {                                                                  \
+        _count = 0;                                                              \
+        for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) {       \
+            _bkt_count = 0;                                                      \
+            _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head;                      \
+            _prev = NULL;                                                        \
+            while (_thh) {                                                       \
+               if (_prev != (char*)(_thh->hh_prev)) {                            \
+                   HASH_OOPS("invalid hh_prev %p, actual %p\n",                  \
+                    _thh->hh_prev, _prev );                                      \
+               }                                                                 \
+               _bkt_count++;                                                     \
+               _prev = (char*)(_thh);                                            \
+               _thh = _thh->hh_next;                                             \
+            }                                                                    \
+            _count += _bkt_count;                                                \
+            if ((head)->hh.tbl->buckets[_bkt_i].count !=  _bkt_count) {          \
+               HASH_OOPS("invalid bucket count %d, actual %d\n",                 \
+                (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count);              \
+            }                                                                    \
+        }                                                                        \
+        if (_count != (head)->hh.tbl->num_items) {                               \
+            HASH_OOPS("invalid hh item count %d, actual %d\n",                   \
+                (head)->hh.tbl->num_items, _count );                             \
+        }                                                                        \
+        /* traverse hh in app order; check next/prev integrity, count */         \
+        _count = 0;                                                              \
+        _prev = NULL;                                                            \
+        _thh =  &(head)->hh;                                                     \
+        while (_thh) {                                                           \
+           _count++;                                                             \
+           if (_prev !=(char*)(_thh->prev)) {                                    \
+              HASH_OOPS("invalid prev %p, actual %p\n",                          \
+                    _thh->prev, _prev );                                         \
+           }                                                                     \
+           _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh);                    \
+           _thh = ( _thh->next ?  (UT_hash_handle*)((char*)(_thh->next) +        \
+                                  (head)->hh.tbl->hho) : NULL );                 \
+        }                                                                        \
+        if (_count != (head)->hh.tbl->num_items) {                               \
+            HASH_OOPS("invalid app item count %d, actual %d\n",                  \
+                (head)->hh.tbl->num_items, _count );                             \
+        }                                                                        \
+    }                                                                            \
+} while (0)
+#else
+#define HASH_FSCK(hh,head) 
+#endif
+
+/* When compiled with -DHASH_EMIT_KEYS, length-prefixed keys are emitted to 
+ * the descriptor to which this macro is defined for tuning the hash function.
+ * The app can #include <unistd.h> to get the prototype for write(2). */
+#ifdef HASH_EMIT_KEYS
+#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)                                   \
+do {                                                                             \
+    unsigned _klen = fieldlen;                                                   \
+    write(HASH_EMIT_KEYS, &_klen, sizeof(_klen));                                \
+    write(HASH_EMIT_KEYS, keyptr, fieldlen);                                     \
+} while (0)
+#else 
+#define HASH_EMIT_KEY(hh,head,keyptr,fieldlen)                    
+#endif
+
+/* default to Jenkin's hash unless overridden e.g. DHASH_FUNCTION=HASH_SAX */
+#ifdef HASH_FUNCTION 
+#define HASH_FCN HASH_FUNCTION
+#else
+#define HASH_FCN HASH_JEN
+#endif
+
+/* The Bernstein hash function, used in Perl prior to v5.6 */
+#define HASH_BER(key,keylen,num_bkts,hashv,bkt)                                  \
+do {                                                                             \
+  unsigned _hb_keylen=keylen;                                                    \
+  char *_hb_key=(char*)(key);                                                    \
+  (hashv) = 0;                                                                   \
+  while (_hb_keylen--)  { (hashv) = ((hashv) * 33) + *_hb_key++; }               \
+  bkt = (hashv) & (num_bkts-1);                                                  \
+} while (0)
+
+
+/* SAX/FNV/OAT/JEN hash functions are macro variants of those listed at 
+ * http://eternallyconfuzzled.com/tuts/algorithms/jsw_tut_hashing.aspx */
+#define HASH_SAX(key,keylen,num_bkts,hashv,bkt)                                  \
+do {                                                                             \
+  unsigned _sx_i;                                                                \
+  char *_hs_key=(char*)(key);                                                    \
+  hashv = 0;                                                                     \
+  for(_sx_i=0; _sx_i < keylen; _sx_i++)                                          \
+      hashv ^= (hashv << 5) + (hashv >> 2) + _hs_key[_sx_i];                     \
+  bkt = hashv & (num_bkts-1);                                                    \
+} while (0)
+
+#define HASH_FNV(key,keylen,num_bkts,hashv,bkt)                                  \
+do {                                                                             \
+  unsigned _fn_i;                                                                \
+  char *_hf_key=(char*)(key);                                                    \
+  hashv = 2166136261UL;                                                          \
+  for(_fn_i=0; _fn_i < keylen; _fn_i++)                                          \
+      hashv = (hashv * 16777619) ^ _hf_key[_fn_i];                               \
+  bkt = hashv & (num_bkts-1);                                                    \
+} while(0) 
+ 
+#define HASH_OAT(key,keylen,num_bkts,hashv,bkt)                                  \
+do {                                                                             \
+  unsigned _ho_i;                                                                \
+  char *_ho_key=(char*)(key);                                                    \
+  hashv = 0;                                                                     \
+  for(_ho_i=0; _ho_i < keylen; _ho_i++) {                                        \
+      hashv += _ho_key[_ho_i];                                                   \
+      hashv += (hashv << 10);                                                    \
+      hashv ^= (hashv >> 6);                                                     \
+  }                                                                              \
+  hashv += (hashv << 3);                                                         \
+  hashv ^= (hashv >> 11);                                                        \
+  hashv += (hashv << 15);                                                        \
+  bkt = hashv & (num_bkts-1);                                                    \
+} while(0)
+
+#define HASH_JEN_MIX(a,b,c)                                                      \
+do {                                                                             \
+  a -= b; a -= c; a ^= ( c >> 13 );                                              \
+  b -= c; b -= a; b ^= ( a << 8 );                                               \
+  c -= a; c -= b; c ^= ( b >> 13 );                                              \
+  a -= b; a -= c; a ^= ( c >> 12 );                                              \
+  b -= c; b -= a; b ^= ( a << 16 );                                              \
+  c -= a; c -= b; c ^= ( b >> 5 );                                               \
+  a -= b; a -= c; a ^= ( c >> 3 );                                               \
+  b -= c; b -= a; b ^= ( a << 10 );                                              \
+  c -= a; c -= b; c ^= ( b >> 15 );                                              \
+} while (0)
+
+#define HASH_JEN(key,keylen,num_bkts,hashv,bkt)                                  \
+do {                                                                             \
+  unsigned _hj_i,_hj_j,_hj_k;                                                    \
+  unsigned char *_hj_key=(unsigned char*)(key);                                  \
+  hashv = 0xfeedbeef;                                                            \
+  _hj_i = _hj_j = 0x9e3779b9;                                                    \
+  _hj_k = (unsigned)keylen;                                                      \
+  while (_hj_k >= 12) {                                                          \
+    _hj_i +=    (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 )                      \
+        + ( (unsigned)_hj_key[2] << 16 )                                         \
+        + ( (unsigned)_hj_key[3] << 24 ) );                                      \
+    _hj_j +=    (_hj_key[4] + ( (unsigned)_hj_key[5] << 8 )                      \
+        + ( (unsigned)_hj_key[6] << 16 )                                         \
+        + ( (unsigned)_hj_key[7] << 24 ) );                                      \
+    hashv += (_hj_key[8] + ( (unsigned)_hj_key[9] << 8 )                         \
+        + ( (unsigned)_hj_key[10] << 16 )                                        \
+        + ( (unsigned)_hj_key[11] << 24 ) );                                     \
+                                                                                 \
+     HASH_JEN_MIX(_hj_i, _hj_j, hashv);                                          \
+                                                                                 \
+     _hj_key += 12;                                                              \
+     _hj_k -= 12;                                                                \
+  }                                                                              \
+  hashv += keylen;                                                               \
+  switch ( _hj_k ) {                                                             \
+     case 11: hashv += ( (unsigned)_hj_key[10] << 24 );                          \
+     case 10: hashv += ( (unsigned)_hj_key[9] << 16 );                           \
+     case 9:  hashv += ( (unsigned)_hj_key[8] << 8 );                            \
+     case 8:  _hj_j += ( (unsigned)_hj_key[7] << 24 );                           \
+     case 7:  _hj_j += ( (unsigned)_hj_key[6] << 16 );                           \
+     case 6:  _hj_j += ( (unsigned)_hj_key[5] << 8 );                            \
+     case 5:  _hj_j += _hj_key[4];                                               \
+     case 4:  _hj_i += ( (unsigned)_hj_key[3] << 24 );                           \
+     case 3:  _hj_i += ( (unsigned)_hj_key[2] << 16 );                           \
+     case 2:  _hj_i += ( (unsigned)_hj_key[1] << 8 );                            \
+     case 1:  _hj_i += _hj_key[0];                                               \
+  }                                                                              \
+  HASH_JEN_MIX(_hj_i, _hj_j, hashv);                                             \
+  bkt = hashv & (num_bkts-1);                                                    \
+} while(0)
+
+/* The Paul Hsieh hash function */
+#undef get16bits
+#if (defined(__GNUC__) && defined(__i386__)) || defined(__WATCOMC__)             \
+  || defined(_MSC_VER) || defined (__BORLANDC__) || defined (__TURBOC__)
+#define get16bits(d) (*((const uint16_t *) (d)))
+#endif
+
+#if !defined (get16bits)
+#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)             \
+                       +(uint32_t)(((const uint8_t *)(d))[0]) )
+#endif
+#define HASH_SFH(key,keylen,num_bkts,hashv,bkt)                                  \
+do {                                                                             \
+  unsigned char *_sfh_key=(unsigned char*)(key);                                 \
+  uint32_t _sfh_tmp, _sfh_len = keylen;                                          \
+                                                                                 \
+  int _sfh_rem = _sfh_len & 3;                                                   \
+  _sfh_len >>= 2;                                                                \
+  hashv = 0xcafebabe;                                                            \
+                                                                                 \
+  /* Main loop */                                                                \
+  for (;_sfh_len > 0; _sfh_len--) {                                              \
+    hashv    += get16bits (_sfh_key);                                            \
+    _sfh_tmp       = (uint32_t)(get16bits (_sfh_key+2)) << 11  ^ hashv;          \
+    hashv     = (hashv << 16) ^ _sfh_tmp;                                        \
+    _sfh_key += 2*sizeof (uint16_t);                                             \
+    hashv    += hashv >> 11;                                                     \
+  }                                                                              \
+                                                                                 \
+  /* Handle end cases */                                                         \
+  switch (_sfh_rem) {                                                            \
+    case 3: hashv += get16bits (_sfh_key);                                       \
+            hashv ^= hashv << 16;                                                \
+            hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)] << 18);              \
+            hashv += hashv >> 11;                                                \
+            break;                                                               \
+    case 2: hashv += get16bits (_sfh_key);                                       \
+            hashv ^= hashv << 11;                                                \
+            hashv += hashv >> 17;                                                \
+            break;                                                               \
+    case 1: hashv += *_sfh_key;                                                  \
+            hashv ^= hashv << 10;                                                \
+            hashv += hashv >> 1;                                                 \
+  }                                                                              \
+                                                                                 \
+    /* Force "avalanching" of final 127 bits */                                  \
+    hashv ^= hashv << 3;                                                         \
+    hashv += hashv >> 5;                                                         \
+    hashv ^= hashv << 4;                                                         \
+    hashv += hashv >> 17;                                                        \
+    hashv ^= hashv << 25;                                                        \
+    hashv += hashv >> 6;                                                         \
+    bkt = hashv & (num_bkts-1);                                                  \
+} while(0) 
+
+#ifdef HASH_USING_NO_STRICT_ALIASING
+/* The MurmurHash exploits some CPU's (x86,x86_64) tolerance for unaligned reads.
+ * For other types of CPU's (e.g. Sparc) an unaligned read causes a bus error.
+ * MurmurHash uses the faster approach only on CPU's where we know it's safe. 
+ *
+ * Note the preprocessor built-in defines can be emitted using:
+ *
+ *   gcc -m64 -dM -E - < /dev/null                  (on gcc)
+ *   cc -## a.c (where a.c is a simple test file)   (Sun Studio)
+ */
+#if (defined(__i386__) || defined(__x86_64__)  || defined(_M_IX86))
+#define MUR_GETBLOCK(p,i) p[i]
+#else /* non intel */
+#define MUR_PLUS0_ALIGNED(p) (((unsigned long)p & 0x3) == 0)
+#define MUR_PLUS1_ALIGNED(p) (((unsigned long)p & 0x3) == 1)
+#define MUR_PLUS2_ALIGNED(p) (((unsigned long)p & 0x3) == 2)
+#define MUR_PLUS3_ALIGNED(p) (((unsigned long)p & 0x3) == 3)
+#define WP(p) ((uint32_t*)((unsigned long)(p) & ~3UL))
+#if (defined(__BIG_ENDIAN__) || defined(SPARC) || defined(__ppc__) || defined(__ppc64__))
+#define MUR_THREE_ONE(p) ((((*WP(p))&0x00ffffff) << 8) | (((*(WP(p)+1))&0xff000000) >> 24))
+#define MUR_TWO_TWO(p)   ((((*WP(p))&0x0000ffff) <<16) | (((*(WP(p)+1))&0xffff0000) >> 16))
+#define MUR_ONE_THREE(p) ((((*WP(p))&0x000000ff) <<24) | (((*(WP(p)+1))&0xffffff00) >>  8))
+#else /* assume little endian non-intel */
+#define MUR_THREE_ONE(p) ((((*WP(p))&0xffffff00) >> 8) | (((*(WP(p)+1))&0x000000ff) << 24))
+#define MUR_TWO_TWO(p)   ((((*WP(p))&0xffff0000) >>16) | (((*(WP(p)+1))&0x0000ffff) << 16))
+#define MUR_ONE_THREE(p) ((((*WP(p))&0xff000000) >>24) | (((*(WP(p)+1))&0x00ffffff) <<  8))
+#endif
+#define MUR_GETBLOCK(p,i) (MUR_PLUS0_ALIGNED(p) ? ((p)[i]) :           \
+                            (MUR_PLUS1_ALIGNED(p) ? MUR_THREE_ONE(p) : \
+                             (MUR_PLUS2_ALIGNED(p) ? MUR_TWO_TWO(p) :  \
+                                                      MUR_ONE_THREE(p))))
+#endif
+#define MUR_ROTL32(x,r) (((x) << (r)) | ((x) >> (32 - (r))))
+#define MUR_FMIX(_h) \
+do {                 \
+  _h ^= _h >> 16;    \
+  _h *= 0x85ebca6b;  \
+  _h ^= _h >> 13;    \
+  _h *= 0xc2b2ae35l; \
+  _h ^= _h >> 16;    \
+} while(0)
+
+#define HASH_MUR(key,keylen,num_bkts,hashv,bkt)                        \
+do {                                                                   \
+  const uint8_t *_mur_data = (const uint8_t*)(key);                    \
+  const int _mur_nblocks = (keylen) / 4;                               \
+  uint32_t _mur_h1 = 0xf88D5353;                                       \
+  uint32_t _mur_c1 = 0xcc9e2d51;                                       \
+  uint32_t _mur_c2 = 0x1b873593;                                       \
+  uint32_t _mur_k1 = 0;                                                \
+  const uint8_t *_mur_tail;                                            \
+  const uint32_t *_mur_blocks = (const uint32_t*)(_mur_data+_mur_nblocks*4); \
+  int _mur_i;                                                          \
+  for(_mur_i = -_mur_nblocks; _mur_i; _mur_i++) {                      \
+    _mur_k1 = MUR_GETBLOCK(_mur_blocks,_mur_i);                        \
+    _mur_k1 *= _mur_c1;                                                \
+    _mur_k1 = MUR_ROTL32(_mur_k1,15);                                  \
+    _mur_k1 *= _mur_c2;                                                \
+                                                                       \
+    _mur_h1 ^= _mur_k1;                                                \
+    _mur_h1 = MUR_ROTL32(_mur_h1,13);                                  \
+    _mur_h1 = _mur_h1*5+0xe6546b64;                                    \
+  }                                                                    \
+  _mur_tail = (const uint8_t*)(_mur_data + _mur_nblocks*4);            \
+  _mur_k1=0;                                                           \
+  switch((keylen) & 3) {                                               \
+    case 3: _mur_k1 ^= _mur_tail[2] << 16;                             \
+    case 2: _mur_k1 ^= _mur_tail[1] << 8;                              \
+    case 1: _mur_k1 ^= _mur_tail[0];                                   \
+    _mur_k1 *= _mur_c1;                                                \
+    _mur_k1 = MUR_ROTL32(_mur_k1,15);                                  \
+    _mur_k1 *= _mur_c2;                                                \
+    _mur_h1 ^= _mur_k1;                                                \
+  }                                                                    \
+  _mur_h1 ^= (keylen);                                                 \
+  MUR_FMIX(_mur_h1);                                                   \
+  hashv = _mur_h1;                                                     \
+  bkt = hashv & (num_bkts-1);                                          \
+} while(0)
+#endif  /* HASH_USING_NO_STRICT_ALIASING */
+
+/* key comparison function; return 0 if keys equal */
+#define HASH_KEYCMP(a,b,len) memcmp(a,b,len) 
+
+/* iterate over items in a known bucket to find desired item */
+#define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out)                       \
+do {                                                                             \
+ if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head));          \
+ else out=NULL;                                                                  \
+ while (out) {                                                                   \
+    if ((out)->hh.keylen == keylen_in) {                                           \
+        if ((HASH_KEYCMP((out)->hh.key,keyptr,keylen_in)) == 0) break;             \
+    }                                                                            \
+    if ((out)->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,(out)->hh.hh_next)); \
+    else out = NULL;                                                             \
+ }                                                                               \
+} while(0)
+
+/* add an item to a bucket  */
+#define HASH_ADD_TO_BKT(head,addhh)                                              \
+do {                                                                             \
+ head.count++;                                                                   \
+ (addhh)->hh_next = head.hh_head;                                                \
+ (addhh)->hh_prev = NULL;                                                        \
+ if (head.hh_head) { (head).hh_head->hh_prev = (addhh); }                        \
+ (head).hh_head=addhh;                                                           \
+ if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH)             \
+     && (addhh)->tbl->noexpand != 1) {                                           \
+       HASH_EXPAND_BUCKETS((addhh)->tbl);                                        \
+ }                                                                               \
+} while(0)
+
+/* remove an item from a given bucket */
+#define HASH_DEL_IN_BKT(hh,head,hh_del)                                          \
+    (head).count--;                                                              \
+    if ((head).hh_head == hh_del) {                                              \
+      (head).hh_head = hh_del->hh_next;                                          \
+    }                                                                            \
+    if (hh_del->hh_prev) {                                                       \
+        hh_del->hh_prev->hh_next = hh_del->hh_next;                              \
+    }                                                                            \
+    if (hh_del->hh_next) {                                                       \
+        hh_del->hh_next->hh_prev = hh_del->hh_prev;                              \
+    }                                                                
+
+/* Bucket expansion has the effect of doubling the number of buckets
+ * and redistributing the items into the new buckets. Ideally the
+ * items will distribute more or less evenly into the new buckets
+ * (the extent to which this is true is a measure of the quality of
+ * the hash function as it applies to the key domain). 
+ * 
+ * With the items distributed into more buckets, the chain length
+ * (item count) in each bucket is reduced. Thus by expanding buckets
+ * the hash keeps a bound on the chain length. This bounded chain 
+ * length is the essence of how a hash provides constant time lookup.
+ * 
+ * The calculation of tbl->ideal_chain_maxlen below deserves some
+ * explanation. First, keep in mind that we're calculating the ideal
+ * maximum chain length based on the *new* (doubled) bucket count.
+ * In fractions this is just n/b (n=number of items,b=new num buckets).
+ * Since the ideal chain length is an integer, we want to calculate 
+ * ceil(n/b). We don't depend on floating point arithmetic in this
+ * hash, so to calculate ceil(n/b) with integers we could write
+ * 
+ *      ceil(n/b) = (n/b) + ((n%b)?1:0)
+ * 
+ * and in fact a previous version of this hash did just that.
+ * But now we have improved things a bit by recognizing that b is
+ * always a power of two. We keep its base 2 log handy (call it lb),
+ * so now we can write this with a bit shift and logical AND:
+ * 
+ *      ceil(n/b) = (n>>lb) + ( (n & (b-1)) ? 1:0)
+ * 
+ */
+#define HASH_EXPAND_BUCKETS(tbl)                                                 \
+do {                                                                             \
+    unsigned _he_bkt;                                                            \
+    unsigned _he_bkt_i;                                                          \
+    struct UT_hash_handle *_he_thh, *_he_hh_nxt;                                 \
+    UT_hash_bucket *_he_new_buckets, *_he_newbkt;                                \
+    _he_new_buckets = (UT_hash_bucket*)uthash_malloc(                            \
+             2 * tbl->num_buckets * sizeof(struct UT_hash_bucket));              \
+    if (!_he_new_buckets) { uthash_fatal( "out of memory"); }                    \
+    memset(_he_new_buckets, 0,                                                   \
+            2 * tbl->num_buckets * sizeof(struct UT_hash_bucket));               \
+    tbl->ideal_chain_maxlen =                                                    \
+       (tbl->num_items >> (tbl->log2_num_buckets+1)) +                           \
+       ((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0);                    \
+    tbl->nonideal_items = 0;                                                     \
+    for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++)                \
+    {                                                                            \
+        _he_thh = tbl->buckets[ _he_bkt_i ].hh_head;                             \
+        while (_he_thh) {                                                        \
+           _he_hh_nxt = _he_thh->hh_next;                                        \
+           HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt);            \
+           _he_newbkt = &(_he_new_buckets[ _he_bkt ]);                           \
+           if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) {                \
+             tbl->nonideal_items++;                                              \
+             _he_newbkt->expand_mult = _he_newbkt->count /                       \
+                                        tbl->ideal_chain_maxlen;                 \
+           }                                                                     \
+           _he_thh->hh_prev = NULL;                                              \
+           _he_thh->hh_next = _he_newbkt->hh_head;                               \
+           if (_he_newbkt->hh_head) _he_newbkt->hh_head->hh_prev =               \
+                _he_thh;                                                         \
+           _he_newbkt->hh_head = _he_thh;                                        \
+           _he_thh = _he_hh_nxt;                                                 \
+        }                                                                        \
+    }                                                                            \
+    uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
+    tbl->num_buckets *= 2;                                                       \
+    tbl->log2_num_buckets++;                                                     \
+    tbl->buckets = _he_new_buckets;                                              \
+    tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ?         \
+        (tbl->ineff_expands+1) : 0;                                              \
+    if (tbl->ineff_expands > 1) {                                                \
+        tbl->noexpand=1;                                                         \
+        uthash_noexpand_fyi(tbl);                                                \
+    }                                                                            \
+    uthash_expand_fyi(tbl);                                                      \
+} while(0)
+
+
+/* This is an adaptation of Simon Tatham's O(n log(n)) mergesort */
+/* Note that HASH_SORT assumes the hash handle name to be hh. 
+ * HASH_SRT was added to allow the hash handle name to be passed in. */
+#define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn)
+#define HASH_SRT(hh,head,cmpfcn)                                                 \
+do {                                                                             \
+  unsigned _hs_i;                                                                \
+  unsigned _hs_looping,_hs_nmerges,_hs_insize,_hs_psize,_hs_qsize;               \
+  struct UT_hash_handle *_hs_p, *_hs_q, *_hs_e, *_hs_list, *_hs_tail;            \
+  if (head) {                                                                    \
+      _hs_insize = 1;                                                            \
+      _hs_looping = 1;                                                           \
+      _hs_list = &((head)->hh);                                                  \
+      while (_hs_looping) {                                                      \
+          _hs_p = _hs_list;                                                      \
+          _hs_list = NULL;                                                       \
+          _hs_tail = NULL;                                                       \
+          _hs_nmerges = 0;                                                       \
+          while (_hs_p) {                                                        \
+              _hs_nmerges++;                                                     \
+              _hs_q = _hs_p;                                                     \
+              _hs_psize = 0;                                                     \
+              for ( _hs_i = 0; _hs_i  < _hs_insize; _hs_i++ ) {                  \
+                  _hs_psize++;                                                   \
+                  _hs_q = (UT_hash_handle*)((_hs_q->next) ?                      \
+                          ((void*)((char*)(_hs_q->next) +                        \
+                          (head)->hh.tbl->hho)) : NULL);                         \
+                  if (! (_hs_q) ) break;                                         \
+              }                                                                  \
+              _hs_qsize = _hs_insize;                                            \
+              while ((_hs_psize > 0) || ((_hs_qsize > 0) && _hs_q )) {           \
+                  if (_hs_psize == 0) {                                          \
+                      _hs_e = _hs_q;                                             \
+                      _hs_q = (UT_hash_handle*)((_hs_q->next) ?                  \
+                              ((void*)((char*)(_hs_q->next) +                    \
+                              (head)->hh.tbl->hho)) : NULL);                     \
+                      _hs_qsize--;                                               \
+                  } else if ( (_hs_qsize == 0) || !(_hs_q) ) {                   \
+                      _hs_e = _hs_p;                                             \
+                      _hs_p = (UT_hash_handle*)((_hs_p->next) ?                  \
+                              ((void*)((char*)(_hs_p->next) +                    \
+                              (head)->hh.tbl->hho)) : NULL);                     \
+                      _hs_psize--;                                               \
+                  } else if ((                                                   \
+                      cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
+                             DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
+                             ) <= 0) {                                           \
+                      _hs_e = _hs_p;                                             \
+                      _hs_p = (UT_hash_handle*)((_hs_p->next) ?                  \
+                              ((void*)((char*)(_hs_p->next) +                    \
+                              (head)->hh.tbl->hho)) : NULL);                     \
+                      _hs_psize--;                                               \
+                  } else {                                                       \
+                      _hs_e = _hs_q;                                             \
+                      _hs_q = (UT_hash_handle*)((_hs_q->next) ?                  \
+                              ((void*)((char*)(_hs_q->next) +                    \
+                              (head)->hh.tbl->hho)) : NULL);                     \
+                      _hs_qsize--;                                               \
+                  }                                                              \
+                  if ( _hs_tail ) {                                              \
+                      _hs_tail->next = ((_hs_e) ?                                \
+                            ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL);          \
+                  } else {                                                       \
+                      _hs_list = _hs_e;                                          \
+                  }                                                              \
+                  _hs_e->prev = ((_hs_tail) ?                                    \
+                     ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL);              \
+                  _hs_tail = _hs_e;                                              \
+              }                                                                  \
+              _hs_p = _hs_q;                                                     \
+          }                                                                      \
+          _hs_tail->next = NULL;                                                 \
+          if ( _hs_nmerges <= 1 ) {                                              \
+              _hs_looping=0;                                                     \
+              (head)->hh.tbl->tail = _hs_tail;                                   \
+              DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list));      \
+          }                                                                      \
+          _hs_insize *= 2;                                                       \
+      }                                                                          \
+      HASH_FSCK(hh,head);                                                        \
+ }                                                                               \
+} while (0)
+
+/* This function selects items from one hash into another hash. 
+ * The end result is that the selected items have dual presence 
+ * in both hashes. There is no copy of the items made; rather 
+ * they are added into the new hash through a secondary hash 
+ * hash handle that must be present in the structure. */
+#define HASH_SELECT(hh_dst, dst, hh_src, src, cond)                              \
+do {                                                                             \
+  unsigned _src_bkt, _dst_bkt;                                                   \
+  void *_last_elt=NULL, *_elt;                                                   \
+  UT_hash_handle *_src_hh, *_dst_hh, *_last_elt_hh=NULL;                         \
+  ptrdiff_t _dst_hho = ((char*)(&(dst)->hh_dst) - (char*)(dst));                 \
+  if (src) {                                                                     \
+    for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) {     \
+      for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head;                \
+          _src_hh;                                                               \
+          _src_hh = _src_hh->hh_next) {                                          \
+          _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh);                       \
+          if (cond(_elt)) {                                                      \
+            _dst_hh = (UT_hash_handle*)(((char*)_elt) + _dst_hho);               \
+            _dst_hh->key = _src_hh->key;                                         \
+            _dst_hh->keylen = _src_hh->keylen;                                   \
+            _dst_hh->hashv = _src_hh->hashv;                                     \
+            _dst_hh->prev = _last_elt;                                           \
+            _dst_hh->next = NULL;                                                \
+            if (_last_elt_hh) { _last_elt_hh->next = _elt; }                     \
+            if (!dst) {                                                          \
+              DECLTYPE_ASSIGN(dst,_elt);                                         \
+              HASH_MAKE_TABLE(hh_dst,dst);                                       \
+            } else {                                                             \
+              _dst_hh->tbl = (dst)->hh_dst.tbl;                                  \
+            }                                                                    \
+            HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt);    \
+            HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh);            \
+            (dst)->hh_dst.tbl->num_items++;                                      \
+            _last_elt = _elt;                                                    \
+            _last_elt_hh = _dst_hh;                                              \
+          }                                                                      \
+      }                                                                          \
+    }                                                                            \
+  }                                                                              \
+  HASH_FSCK(hh_dst,dst);                                                         \
+} while (0)
+
+#define HASH_CLEAR(hh,head)                                                      \
+do {                                                                             \
+  if (head) {                                                                    \
+    uthash_free((head)->hh.tbl->buckets,                                         \
+                (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket));      \
+    HASH_BLOOM_FREE((head)->hh.tbl);                                             \
+    uthash_free((head)->hh.tbl, sizeof(UT_hash_table));                          \
+    (head)=NULL;                                                                 \
+  }                                                                              \
+} while(0)
+
+#define HASH_OVERHEAD(hh,head)                                                   \
+ (size_t)((((head)->hh.tbl->num_items   * sizeof(UT_hash_handle))   +            \
+           ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket))   +            \
+            (sizeof(UT_hash_table))                                 +            \
+            (HASH_BLOOM_BYTELEN)))
+
+#ifdef NO_DECLTYPE
+#define HASH_ITER(hh,head,el,tmp)                                                \
+for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL);       \
+  el; (el)=(tmp),(*(char**)(&(tmp)))=(char*)((tmp)?(tmp)->hh.next:NULL)) 
+#else
+#define HASH_ITER(hh,head,el,tmp)                                                \
+for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL);                 \
+  el; (el)=(tmp),(tmp)=DECLTYPE(el)((tmp)?(tmp)->hh.next:NULL))
+#endif
+
+/* obtain a count of items in the hash */
+#define HASH_COUNT(head) HASH_CNT(hh,head) 
+#define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
+
+typedef struct UT_hash_bucket {
+   struct UT_hash_handle *hh_head;
+   unsigned count;
+
+   /* expand_mult is normally set to 0. In this situation, the max chain length
+    * threshold is enforced at its default value, HASH_BKT_CAPACITY_THRESH. (If
+    * the bucket's chain exceeds this length, bucket expansion is triggered). 
+    * However, setting expand_mult to a non-zero value delays bucket expansion
+    * (that would be triggered by additions to this particular bucket)
+    * until its chain length reaches a *multiple* of HASH_BKT_CAPACITY_THRESH.
+    * (The multiplier is simply expand_mult+1). The whole idea of this
+    * multiplier is to reduce bucket expansions, since they are expensive, in
+    * situations where we know that a particular bucket tends to be overused.
+    * It is better to let its chain length grow to a longer yet-still-bounded
+    * value, than to do an O(n) bucket expansion too often. 
+    */
+   unsigned expand_mult;
+
+} UT_hash_bucket;
+
+/* random signature used only to find hash tables in external analysis */
+#define HASH_SIGNATURE 0xa0111fe1
+#define HASH_BLOOM_SIGNATURE 0xb12220f2
+
+typedef struct UT_hash_table {
+   UT_hash_bucket *buckets;
+   unsigned num_buckets, log2_num_buckets;
+   unsigned num_items;
+   struct UT_hash_handle *tail; /* tail hh in app order, for fast append    */
+   ptrdiff_t hho; /* hash handle offset (byte pos of hash handle in element */
+
+   /* in an ideal situation (all buckets used equally), no bucket would have
+    * more than ceil(#items/#buckets) items. that's the ideal chain length. */
+   unsigned ideal_chain_maxlen;
+
+   /* nonideal_items is the number of items in the hash whose chain position
+    * exceeds the ideal chain maxlen. these items pay the penalty for an uneven
+    * hash distribution; reaching them in a chain traversal takes >ideal steps */
+   unsigned nonideal_items;
+
+   /* ineffective expands occur when a bucket doubling was performed, but 
+    * afterward, more than half the items in the hash had nonideal chain
+    * positions. If this happens on two consecutive expansions we inhibit any
+    * further expansion, as it's not helping; this happens when the hash
+    * function isn't a good fit for the key domain. When expansion is inhibited
+    * the hash will still work, albeit no longer in constant time. */
+   unsigned ineff_expands, noexpand;
+
+   uint32_t signature; /* used only to find hash tables in external analysis */
+#ifdef HASH_BLOOM
+   uint32_t bloom_sig; /* used only to test bloom exists in external analysis */
+   uint8_t *bloom_bv;
+   char bloom_nbits;
+#endif
+
+} UT_hash_table;
+
+typedef struct UT_hash_handle {
+   struct UT_hash_table *tbl;
+   void *prev;                       /* prev element in app order      */
+   void *next;                       /* next element in app order      */
+   struct UT_hash_handle *hh_prev;   /* previous hh in bucket order    */
+   struct UT_hash_handle *hh_next;   /* next hh in bucket order        */
+   void *key;                        /* ptr to enclosing struct's key  */
+   unsigned keylen;                  /* enclosing struct's key len     */
+   unsigned hashv;                   /* result of hash-fcn(key)        */
+} UT_hash_handle;
+
+#endif /* UTHASH_H */
diff --git a/src/nco/nco_var_avg.c b/src/nco/nco_var_avg.c
index db5f977..7396222 100644
--- a/src/nco/nco_var_avg.c
+++ b/src/nco/nco_var_avg.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_avg.c,v 1.64 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_avg.c,v 1.74 2013/12/02 20:48:45 zender Exp $ */
 
 /* Purpose: Average variables */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -19,29 +19,29 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
 {
   /* Threads: Routine is thread safe and calls no unsafe routines */
   /* Purpose: Reduce given variable over specified dimensions 
-     "Reduce" means to rank-reduce variable by performing arithmetic operation
-     Output variable is duplicate of input variable, except for averaging dimensions
-     Default operation is averaging, but nco_op_typ can also be min, max, etc.
-     nco_var_avg() overwrites contents, if any, of tally array with number of valid input elements contributing to each valid output element
+  "Reduce" means to rank-reduce variable by performing arithmetic operation
+  Output variable is duplicate of input variable, except for averaging dimensions
+  Default operation is averaging, but nco_op_typ can also be min, max, etc.
+  nco_var_avg() overwrites contents, if any, of tally array with number of valid input elements contributing to each valid output element
 
-     Input variable structure is destroyed and routine returns resized, partially reduced variable
-     For some operations, such as min, max, ttl, variable returned by nco_var_avg() is complete and need not be further processed
-     For averaging operation, output variable must be normalized by its tally array
-     In other words, nco_var_nrm() should be called subsequently if normalization is desired
-     Normalization is not done internally to nco_var_avg() to allow user more flexibility */ 
+  Input variable structure is destroyed and routine returns resized, partially reduced variable
+  For some operations, such as min, max, ttl, variable returned by nco_var_avg() is complete and need not be further processed
+  For averaging operation, output variable must be normalized by its tally array
+  In other words, nco_var_nrm() should be called subsequently if normalization is desired
+  Normalization is not done internally to nco_var_avg() to allow user more flexibility */ 
 
   /* Routine keeps track of three variables whose abbreviations are:
-     avg: Array of averaging blocks, each a contiguous arrangement of all 
-          elements of var which contribute to a single element of fix.
-     fix: Output (averaged) variable
-     rdd: Output (averaged) variable which retains degenerate dimensions
-     var: Input variable (already hyperslabbed)
-     
-     It is easier to implement averaging as if all averaged dimensions are eliminated
-     This presumption allows us to ignore degenerate dimension indices
-     Including degenerate dimensions in fix would also complicate MRV-detection code 
-     The core averaging algorithm treats input data as single 1-D array
-     To retain degenerate dimensions, fxm */
+  avg: Array of averaging blocks, each a contiguous arrangement of all 
+  elements of var which contribute to a single element of fix.
+  fix: Output (averaged) variable
+  rdd: Output (averaged) variable which retains degenerate dimensions
+  var: Input variable (already hyperslabbed)
+
+  It is easier to implement averaging as if all averaged dimensions are eliminated
+  This presumption allows us to ignore degenerate dimension indices
+  Including degenerate dimensions in fix would also complicate MRV-detection code 
+  The core averaging algorithm treats input data as single 1-D array
+  To retain degenerate dimensions, fxm */
 
   nco_bool AVG_DMN_ARE_MRV=False; /* [flg] Avergaging dimensions are MRV dimensions */
 
@@ -69,11 +69,11 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
   fix=nco_var_dpl(var);
 
   /* Create lists of averaging and fixed dimensions (in order of their appearance 
-     in the variable). We do not know a priori how many dimensions remain in the 
-     output (averaged) variable, but dmn_var_nbr is an upper bound. Similarly, we do
-     not know a priori how many of the dimensions in the input list of averaging 
-     dimensions (dim) actually occur in the current variable, so we do not know
-     dmn_avg_nbr, but nbr_dim is an upper bound on it. */
+  in the variable). We do not know a priori how many dimensions remain in the 
+  output (averaged) variable, but dmn_var_nbr is an upper bound. Similarly, we do
+  not know a priori how many of the dimensions in the input list of averaging 
+  dimensions (dim) actually occur in the current variable, so we do not know
+  dmn_avg_nbr, but nbr_dim is an upper bound on it. */
   dmn_var_nbr=var->nbr_dim;
   dmn_fix_nbr=0;
   dmn_avg_nbr=0;
@@ -82,18 +82,18 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
   for(idx=0;idx<dmn_var_nbr;idx++){
     for(idx_dmn=0;idx_dmn<nbr_dim;idx_dmn++){
       /* Comparing dimension IDs is faster than comparing dimension names 
-	 but requires assumption that all dimensions are from same file */
+      but requires assumption that all dimensions are from same file */
       if(var->dmn_id[idx] == dim[idx_dmn]->id){
-	/* Although structures in dim are never altered, linking them into
-	   dmn_avg list makes them vulnerable to manipulation and forces 
-	   dim to lose const protection in prototype */
-	dmn_avg[dmn_avg_nbr]=dim[idx_dmn];
-	/* idx_avg_var[i]=j means that ith averaging dimension is jth dimension of var */
-	idx_avg_var[dmn_avg_nbr]=idx;
-	/* idx_var_avg[j]=i means that jth dimension of var is ith averaging dimension */
-	/*	idx_var_avg[idx]=dmn_avg_nbr;*/ /* Variable is unused but instructive anyway */
-	dmn_avg_nbr++;
-	break;
+        /* Although structures in dim are never altered, linking them into
+        dmn_avg list makes them vulnerable to manipulation and forces 
+        dim to lose const protection in prototype */
+        dmn_avg[dmn_avg_nbr]=dim[idx_dmn];
+        /* idx_avg_var[i]=j means that ith averaging dimension is jth dimension of var */
+        idx_avg_var[dmn_avg_nbr]=idx;
+        /* idx_var_avg[j]=i means that jth dimension of var is ith averaging dimension */
+        /*	idx_var_avg[idx]=dmn_avg_nbr;*/ /* Variable is unused but instructive anyway */
+        dmn_avg_nbr++;
+        break;
       } /* end if */
     } /* end loop over idx_dmn */
     if(idx_dmn == nbr_dim){
@@ -109,21 +109,21 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
 
   if(dmn_avg_nbr == 0){
     /* 20050517: ncwa only calls nco_var_avg() with variables containing averaging dimensions
-       Variables without averaging dimensions are in the var_fix list 
-       We preserve nco_var_avg() capability to work on var_fix variables for future flexibility */
-    (void)fprintf(stderr,"%s: WARNING %s does not contain any averaging dimensions\n",prg_nm_get(),fix->nm);
+    Variables without averaging dimensions are in the var_fix list 
+    We preserve nco_var_avg() capability to work on var_fix variables for future flexibility */
+    (void)fprintf(stderr,"%s: WARNING %s does not contain any averaging dimensions\n",nco_prg_nm_get(),fix->nm);
     /* Variable does not contain any averaging dimensions so we are done
-       For consistency, return copy of variable held in fix and free() original
-       Hence, nco_var_avg() always destroys original input and returns valid output */
+    For consistency, return copy of variable held in fix and free() original
+    Hence, nco_var_avg() always destroys original input and returns valid output */
     goto cln_and_xit;
   } /* end if */
 
   /* Use dmn_rdd_nbr rather than dmn_fix_nbr for dmn_fix memory management
-     When flg_rdd is true, than malloc() and reallloc() will create/leave enough
-     room in dmn_fix arrays to ultimately hold all dmn_rdd data
-     However, dmn_fix_nbr remains same in flg_rdd and !flg_rdd cases
-     Hence loops and averaging algorithm itself need not be re-coded
-     Reconcile contents of dmn_fix structures with dengenerate dimensions at end */
+  When flg_rdd is true, than malloc() and reallloc() will create/leave enough
+  room in dmn_fix arrays to ultimately hold all dmn_rdd data
+  However, dmn_fix_nbr remains same in flg_rdd and !flg_rdd cases
+  Hence loops and averaging algorithm itself need not be re-coded
+  Reconcile contents of dmn_fix structures with dengenerate dimensions at end */
   dmn_rdd_nbr=flg_rdd ? dmn_var_nbr : dmn_fix_nbr;
 
   /* Free extra list space */
@@ -151,7 +151,7 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
     fix->cnt[idx]=var->cnt[idx_fix_var[idx]];
     fix->end[idx]=var->end[idx_fix_var[idx]];
   } /* end loop over idx */
-  
+
   fix->is_crd_var=False;
   if(dmn_fix_nbr == 1)
     if(dmn_fix[0]->is_crd_dmn) 
@@ -163,85 +163,86 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
   fix->srt=(long *)nco_realloc(fix->srt,dmn_rdd_nbr*sizeof(long));
   fix->cnt=(long *)nco_realloc(fix->cnt,dmn_rdd_nbr*sizeof(long));
   fix->end=(long *)nco_realloc(fix->end,dmn_rdd_nbr*sizeof(long));
-  
+
+  /* Resize (or just plain allocate) tally array */
+  fix->tally=(long *)nco_realloc(fix->tally,fix_sz*sizeof(long));
+
   if(avg_sz == 1L){
     /* If averaging block size is 1L, input and output value arrays are identical 
-       var->val was copied to fix->val by nco_var_dpl() at beginning of routine
-       Only one task remains: to set fix->tally appropriately */
+    var->val was copied to fix->val by nco_var_dpl() at beginning of routine
+    Only one task remains: to set fix->tally appropriately */
     long *fix_tally;
 
     fix_tally=fix->tally;
 
-    /* First set tally field to 1 */
+    /* Set tally field to 1 */
     for(idx=0;idx<fix_sz;idx++) fix_tally[idx]=1L;
-    /* Next overwrite any missing value locations with zero */
+
+    /* Overwrite any missing value locations with zero */
     if(fix->has_mss_val){
-      int val_sz_byte;
+      int val_sz_byt;
 
       char *val;
       char *mss_val;
 
-      /* NB: Use char * rather than void * because some compilers (acc) will not do pointer
-	 arithmetic on void * */
+      /* NB: Use char * rather than void * because some compilers (acc, MSVC) will not do pointer arithmetic on void * */
       mss_val=(char *)fix->mss_val.vp;
-      val_sz_byte=nco_typ_lng(fix->type);
+      val_sz_byt=nco_typ_lng(fix->type);
       val=(char *)fix->val.vp;
-      for(idx=0;idx<fix_sz;idx++,val+=val_sz_byte)
-	if(!memcmp(val,mss_val,(size_t)val_sz_byte)) fix_tally[idx]=0L;
+      for(idx=0;idx<fix_sz;idx++,val+=val_sz_byt)
+        if(!memcmp(val,mss_val,(size_t)val_sz_byt)) fix_tally[idx]=0L;
     } /* fix->has_mss_val */
   } /* end if avg_sz == 1L */
 
   /* Distribute all elements of input hyperslab into averaging block in avg_val
-     Each block contains avg_sz elements in contiguous buffer 
-     Reduction step then "reduces" each block into single output element */
+  Each block contains avg_sz elements in contiguous buffer 
+  Reduction step then "reduces" each block into single output element */
   if(avg_sz != 1L){
     ptr_unn avg_val;
-    
+
     /* Initialize data needed by reduction step independent of collection algorithm */
     var_sz=var->sz;
 
     /* Value buffer of size var_sz is currently duplicate of input values
-       MRV algorithm uses these values without re-arranging
-       General collection algorithm overwrites avg_val with averaging blocks */
+    MRV algorithm uses these values without re-arranging
+    General collection algorithm overwrites avg_val with averaging blocks */
     avg_val=fix->val;
     /* Create new value buffer for output (averaged) size */
     fix->val.vp=(void *)nco_malloc(fix_sz*nco_typ_lng(fix->type));
-    /* Resize (or just plain allocate) tally array */
-    fix->tally=(long *)nco_realloc(fix->tally,fix_sz*sizeof(long));
-    
+
     /* Initialize value and tally arrays */
     (void)nco_zero_long(fix_sz,fix->tally);
     (void)nco_var_zero(fix->type,fix_sz,fix->val);
 
     /* Complex expensive collection step for creating averaging blocks works 
-       in all cases though is unnecessary in one important case.
-       No re-arrangement is necessary when averaging dimensions are most rapidly varying 
-       (MRV) dimensions because original variable is stored in averaging block order.
-       Averaging dimensions are MRV dimensions iff dmn_fix_nbr fixed dimensions are 
-       one-to-one with first dmn_fix_nbr input dimensions. 
-       Alternatively, could compare dmn_avg_nbr averaging dimensions to last 
-       dmn_avg_nbr dimensions of input variable.
-       However, averaging dimensions may appear in any order so it is more
-       straightforward to compare fixed dimensions to LRV input dimensions. */
+    in all cases though is unnecessary in one important case.
+    No re-arrangement is necessary when averaging dimensions are most rapidly varying 
+    (MRV) dimensions because original variable is stored in averaging block order.
+    Averaging dimensions are MRV dimensions iff dmn_fix_nbr fixed dimensions are 
+    one-to-one with first dmn_fix_nbr input dimensions. 
+    Alternatively, could compare dmn_avg_nbr averaging dimensions to last 
+    dmn_avg_nbr dimensions of input variable.
+    However, averaging dimensions may appear in any order so it is more
+    straightforward to compare fixed dimensions to LRV input dimensions. */
     for(idx=0;idx<dmn_fix_nbr;idx++) 
       if(idx_fix_var[idx] != idx) break;
     if(idx == dmn_fix_nbr){
-      if(dbg_lvl_get() > 2 && dbg_lvl_get() < 10) (void)fprintf(stderr,"%s: INFO Reduction dimensions are %d most-rapidly-varying (MRV) dimensions of %s. Will skip collection step and proceed straight to reduction step.\n",prg_nm_get(),dmn_avg_nbr,fix->nm);
+      if(nco_dbg_lvl_get() >= nco_dbg_scl && nco_dbg_lvl_get() < 10) (void)fprintf(stderr,"%s: INFO Reduction dimensions are %d most-rapidly-varying (MRV) dimensions of %s. Will skip collection step and proceed straight to reduction step.\n",nco_prg_nm_get(),dmn_avg_nbr,fix->nm);
       AVG_DMN_ARE_MRV=True; /* [flg] Avergaging dimensions are MRV dimensions */
     } /* idx != dmn_fix_nbr */
-    
+
     /* MRV algorithm simply skips this collection step 
-       Some DDRA benchmarks need to know cost of collection
-       Always invoke collection step by uncommenting following line: */
+    Some DDRA benchmarks need to know cost of collection
+    Always invoke collection step by uncommenting following line: */
     /*    AVG_DMN_ARE_MRV=False;*/
     if(!AVG_DMN_ARE_MRV){
       /* Dreaded, expensive collection algorithm sorts input into averaging blocks */
       char *avg_cp;
       char *var_cp;
-      
+
       int typ_sz;
       int dmn_var_nbr_m1;
-      
+
       long *var_cnt;
       long avg_lmn;
       long fix_lmn;
@@ -250,76 +251,76 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
       long dmn_var_map[NC_MAX_DIMS];
       long dmn_avg_map[NC_MAX_DIMS];
       long dmn_fix_map[NC_MAX_DIMS];
-      
+
       dmn_var_nbr_m1=dmn_var_nbr-1;
       typ_sz=nco_typ_lng(fix->type);
       var_cnt=var->cnt;
       var_cp=(char *)var->val.vp;
       avg_cp=(char *)avg_val.vp;
-      
+
       /* Compute map for each dimension of input variable */
       for(idx=0;idx<dmn_var_nbr;idx++) dmn_var_map[idx]=1L;
       for(idx=0;idx<dmn_var_nbr-1;idx++)
-	for(idx_dmn=idx+1;idx_dmn<dmn_var_nbr;idx_dmn++)
-	  dmn_var_map[idx]*=var->cnt[idx_dmn];
-      
+        for(idx_dmn=idx+1;idx_dmn<dmn_var_nbr;idx_dmn++)
+          dmn_var_map[idx]*=var->cnt[idx_dmn];
+
       /* Compute map for each dimension of output variable */
       for(idx=0;idx<dmn_fix_nbr;idx++) dmn_fix_map[idx]=1L;
       for(idx=0;idx<dmn_fix_nbr-1;idx++)
-	for(idx_dmn=idx+1;idx_dmn<dmn_fix_nbr;idx_dmn++)
-	  dmn_fix_map[idx]*=fix->cnt[idx_dmn];
-      
+        for(idx_dmn=idx+1;idx_dmn<dmn_fix_nbr;idx_dmn++)
+          dmn_fix_map[idx]*=fix->cnt[idx_dmn];
+
       /* Compute map for each dimension of averaging buffer */
       for(idx=0;idx<dmn_avg_nbr;idx++) dmn_avg_map[idx]=1L;
       for(idx=0;idx<dmn_avg_nbr-1;idx++)
-	for(idx_dmn=idx+1;idx_dmn<dmn_avg_nbr;idx_dmn++)
-	  dmn_avg_map[idx]*=dmn_avg[idx_dmn]->cnt;
-      
+        for(idx_dmn=idx+1;idx_dmn<dmn_avg_nbr;idx_dmn++)
+          dmn_avg_map[idx]*=dmn_avg[idx_dmn]->cnt;
+
       /* var_lmn is offset into 1-D array */
       for(var_lmn=0;var_lmn<var_sz;var_lmn++){
-	/* dmn_ss are corresponding indices (subscripts) into N-D array */
-	/* Operations: 1 modulo, 1 pointer offset, 1 user memory fetch
-	   Repetitions: \lmnnbr
-	   Total Counts: \rthnbr=2\lmnnbr, \mmrusrnbr=\lmnnbr
-	   NB: LHS assumed compact and cached, counted RHS offsets and fetches only */
-	dmn_ss[dmn_var_nbr_m1]=var_lmn%var_cnt[dmn_var_nbr_m1];
-	for(idx=0;idx<dmn_var_nbr_m1;idx++){
-	  /* Operations: 1 divide, 1 modulo, 2 pointer offset, 2 user memory fetch
-	     Repetitions: \lmnnbr(\dmnnbr-1)
-	     Counts: \rthnbr=4\lmnnbr(\dmnnbr-1), \mmrusrnbr=2\lmnnbr(\dmnnbr-1)
-	     NB: LHS assumed compact and cached, counted RHS offsets and fetches only
-	     NB: Neglected loop arithmetic/compare */
-	  dmn_ss[idx]=(long)(var_lmn/dmn_var_map[idx]);
-	  dmn_ss[idx]%=var_cnt[idx];
-	} /* end loop over dimensions */
-	
-	/* Map variable's N-D array indices into a 1-D index into averaged data */
-	fix_lmn=0L;
-	/* Operations: 1 add, 1 multiply, 3 pointer offset, 3 user memory fetch
-	   Repetitions: \lmnnbr(\dmnnbr-\avgnbr)
-	   Counts: \rthnbr=5\lmnnbr(\dmnnbr-\avgnbr), \mmrusrnbr=3\lmnnbr(\dmnnbr-\avgnbr) */
-	for(idx=0;idx<dmn_fix_nbr;idx++) fix_lmn+=dmn_ss[idx_fix_var[idx]]*dmn_fix_map[idx];
-	
-	/* Map N-D array indices into 1-D offset from group offset */
-	avg_lmn=0L;
-	/* Operations: 1 add, 1 multiply, 3 pointer offset, 3 user memory fetch
-	   Repetitions: \lmnnbr\avgnbr
-	   Counts: \rthnbr=5\lmnnbr\avgnbr, \mmrusrnbr=3\lmnnbr\avgnbr */
-	for(idx=0;idx<dmn_avg_nbr;idx++) avg_lmn+=dmn_ss[idx_avg_var[idx]]*dmn_avg_map[idx];
-	
-	/* Copy current element in input array into its slot in sorted avg_val */
-	/* Operations: 3 add, 3 multiply, 0 pointer offset, 1 system memory copy
-	   Repetitions: \lmnnbr
-	   Counts: \rthnbr=6\lmnnbr, \mmrusrnbr=0, \mmrsysnbr=1 */
-	(void)memcpy(avg_cp+(fix_lmn*avg_sz+avg_lmn)*typ_sz,var_cp+var_lmn*typ_sz,(size_t)typ_sz);
+        /* dmn_ss are corresponding indices (subscripts) into N-D array */
+        /* Operations: 1 modulo, 1 pointer offset, 1 user memory fetch
+        Repetitions: \lmnnbr
+        Total Counts: \rthnbr=2\lmnnbr, \mmrusrnbr=\lmnnbr
+        NB: LHS assumed compact and cached, counted RHS offsets and fetches only */
+        dmn_ss[dmn_var_nbr_m1]=var_lmn%var_cnt[dmn_var_nbr_m1];
+        for(idx=0;idx<dmn_var_nbr_m1;idx++){
+          /* Operations: 1 divide, 1 modulo, 2 pointer offset, 2 user memory fetch
+          Repetitions: \lmnnbr(\dmnnbr-1)
+          Counts: \rthnbr=4\lmnnbr(\dmnnbr-1), \mmrusrnbr=2\lmnnbr(\dmnnbr-1)
+          NB: LHS assumed compact and cached, counted RHS offsets and fetches only
+          NB: Neglected loop arithmetic/compare */
+          dmn_ss[idx]=(long)(var_lmn/dmn_var_map[idx]);
+          dmn_ss[idx]%=var_cnt[idx];
+        } /* end loop over dimensions */
+
+        /* Map variable's N-D array indices into a 1-D index into averaged data */
+        fix_lmn=0L;
+        /* Operations: 1 add, 1 multiply, 3 pointer offset, 3 user memory fetch
+        Repetitions: \lmnnbr(\dmnnbr-\avgnbr)
+        Counts: \rthnbr=5\lmnnbr(\dmnnbr-\avgnbr), \mmrusrnbr=3\lmnnbr(\dmnnbr-\avgnbr) */
+        for(idx=0;idx<dmn_fix_nbr;idx++) fix_lmn+=dmn_ss[idx_fix_var[idx]]*dmn_fix_map[idx];
+
+        /* Map N-D array indices into 1-D offset from group offset */
+        avg_lmn=0L;
+        /* Operations: 1 add, 1 multiply, 3 pointer offset, 3 user memory fetch
+        Repetitions: \lmnnbr\avgnbr
+        Counts: \rthnbr=5\lmnnbr\avgnbr, \mmrusrnbr=3\lmnnbr\avgnbr */
+        for(idx=0;idx<dmn_avg_nbr;idx++) avg_lmn+=dmn_ss[idx_avg_var[idx]]*dmn_avg_map[idx];
+
+        /* Copy current element in input array into its slot in sorted avg_val */
+        /* Operations: 3 add, 3 multiply, 0 pointer offset, 1 system memory copy
+        Repetitions: \lmnnbr
+        Counts: \rthnbr=6\lmnnbr, \mmrusrnbr=0, \mmrsysnbr=1 */
+        (void)memcpy(avg_cp+(fix_lmn*avg_sz+avg_lmn)*typ_sz,var_cp+var_lmn*typ_sz,(size_t)typ_sz);
       } /* end loop over var_lmn */
     } /* AVG_DMN_ARE_MRV */
-    
+
     /* Input data are now sorted and stored (in avg_val) in blocks (of length avg_sz)
-       in same order as blocks' average values will appear in output buffer. 
-       Averaging routines can take advantage of this by casting avg_val to 
-       two dimensional variable and averaging over inner dimension. 
-       nco_var_avg_rdc_*() sets tally array */
+    in same order as blocks' average values will appear in output buffer. 
+    Averaging routines can take advantage of this by casting avg_val to 
+    two dimensional variable and averaging over inner dimension. 
+    nco_var_avg_rdc_*() sets tally array */
     switch(nco_op_typ){
     case nco_op_max:
       (void)nco_var_avg_rdc_max(fix->type,var_sz,fix_sz,fix->has_mss_val,fix->mss_val,avg_val,fix->val);
@@ -334,18 +335,18 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
     case nco_op_rmssdn: /* Operations: Previous=square, Current=sum, Next=normalize and root */
     case nco_op_ttl: /* Operations: Previous=none, Current=sum, Next=none */
     default:
-      (void)nco_var_avg_rdc_ttl(fix->type,var_sz,fix_sz,fix->has_mss_val,fix->mss_val,fix->tally,avg_val,fix->val);	  		
+      (void)nco_var_avg_rdc_ttl(fix->type,var_sz,fix_sz,fix->has_mss_val,fix->mss_val,fix->tally,avg_val,fix->val);
       break;
     } /* end case */
-    
+
     /* Free dynamic memory that held rearranged input variable values */
     avg_val.vp=nco_free(avg_val.vp);
   } /* end if avg_sz != 1 */
-  
+
   /* Retain degenerate dimensions? */
   if(flg_rdd){
     /* Simplest way to retain degenerate dimensions is average over them,
-       then insert degenerate dimensions back into list at end */
+    then insert degenerate dimensions back into list at end */
 
     /* Get rid of averaged dimensions */
     fix->nbr_dim=dmn_rdd_nbr;
@@ -369,15 +370,15 @@ nco_var_avg /* [fnc] Reduce given variable over specified dimensions */
   } /* !flg_rdd */
 
   /* Jump here when variable is not to be reduced. This occurs when
-     1. Variable contains no averaging dimensions
-     2. Averaging block size is 1 */
- cln_and_xit:
-  
+  1. Variable contains no averaging dimensions
+  2. Averaging block size is 1 */
+cln_and_xit:
+
   /* Free input variable */
   var=nco_var_free(var);
   dmn_avg=(dmn_sct **)nco_free(dmn_avg);
   dmn_fix=(dmn_sct **)nco_free(dmn_fix);
-  
+
   /* Set diagnostic DDRA information DDRA */
   ddra_info->lmn_nbr_avg=avg_sz; /* [nbr] Averaging block size */
   ddra_info->rnk_avg=dmn_avg_nbr; /* [nbr] Rank of averaging space */
@@ -400,25 +401,25 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
 {
   /* Threads: Routine is thread safe and calls no unsafe routines */
   /* Purpose: Sum values in each contiguous block of first operand and place
-     result in corresponding element in second operand. 
-     Currently arithmetic operation performed is summation of elements in op1
-     Input operands are assumed to have conforming types, but not dimensions or sizes
-     nco_var_avg_rdc_ttl() knows nothing about dimensions
-     Routine is one dimensional array operator acting serially on each element of input buffer op1
-     Calling rouine knows exactly how rank of output, op2, is reduced from rank of input
-     Routine only does summation rather than averaging in order to remain flexible
-     Operations which require normalization, e.g., averaging, must call nco_var_nrm() 
-     or nco_var_dvd() to divide sum set in this routine by tally set in this routine. */
-  
+  result in corresponding element in second operand. 
+  Currently arithmetic operation performed is summation of elements in op1
+  Input operands are assumed to have conforming types, but not dimensions or sizes
+  nco_var_avg_rdc_ttl() knows nothing about dimensions
+  Routine is one dimensional array operator acting serially on each element of input buffer op1
+  Calling rouine knows exactly how rank of output, op2, is reduced from rank of input
+  Routine only does summation rather than averaging in order to remain flexible
+  Operations which require normalization, e.g., averaging, must call nco_var_nrm() 
+  or nco_var_dvd() to divide sum set in this routine by tally set in this routine. */
+
   /* Each operation has GNUC and non-GNUC blocks:
-     GNUC: Utilize (non-ANSI-compliant) compiler support for local automatic arrays
-     This results in more elegent loop structure and, theoretically, in faster performance
-     20040225: In reality, the GNUC non-ANSI blocks fail on some large files
-     This may be because they allocate significant local storage on the stack
-     
-     non-GNUC: Fully ANSI-compliant structure
-     Fortran: Support deprecated */
-  
+  GNUC: Utilize (non-ANSI-compliant) compiler support for local automatic arrays
+  This results in more elegent loop structure and, theoretically, in faster performance
+  20040225: In reality, the GNUC non-ANSI blocks fail on some large files
+  This may be because they allocate significant local storage on the stack
+
+  non-GNUC: Fully ANSI-compliant structure
+  Fortran: Support deprecated */
+
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
   long idx_op1;
@@ -469,52 +470,77 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){ 
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	/* Operations: 1 multiply 
-	   Repetitions: \dmnszavg^(\dmnnbr-\avgnbr)
-	   Total Counts: \rthnbr=\dmnszavg^(\dmnnbr-\avgnbr) */
-	const long blk_off=idx_op2*sz_blk;
-	/* Operations: 1 fp add, 3 pointer offsets, 3 user memory fetch
-	   Repetitions: \lmnnbr
-	   Total Counts: \flpnbr=\lmnnbr, \rthnbr=3\lmnnbr, \mmrusrnbr=3\lmnnbr,
-	   NB: Counted LHS+RHS+tally offsets and fetches */
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.fp[idx_op2]+=op1.fp[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        /* Operations: 1 multiply 
+        Repetitions: \dmnszavg^(\dmnnbr-\avgnbr)
+        Total Counts: \rthnbr=\dmnszavg^(\dmnnbr-\avgnbr) */
+        const long blk_off=idx_op2*sz_blk;
+        /* Operations: 1 fp add, 3 pointer offsets, 3 user memory fetch
+        Repetitions: \lmnnbr
+        Total Counts: \flpnbr=\lmnnbr, \rthnbr=3\lmnnbr, \mmrusrnbr=3\lmnnbr,
+        NB: Counted LHS+RHS+tally offsets and fetches */
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.fp[idx_op2]+=op1.fp[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
-      for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.fp[idx_op1] != mss_val_flt){
-	    op2.fp[idx_op2]+=op1.fp[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.fp[idx_op2]=mss_val_flt;
-      } /* end loop over idx_op2 */
+      if(isfinite(mss_val_flt)){
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          const long blk_off=idx_op2*sz_blk;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            idx_op1=blk_off+idx_blk;
+            if(op1.fp[idx_op1] != mss_val_flt){
+              op2.fp[idx_op2]+=op1.fp[idx_op1];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.fp[idx_op2]=mss_val_flt;
+        } /* end loop over idx_op2 */
+      }else{ /* Missing value exists and is NaN-like */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          const long blk_off=idx_op2*sz_blk;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            idx_op1=blk_off+idx_blk;
+            /* Missing value is NaN-like so comparisons to it are always false---must use macros */
+            if(isfinite(op1.fp[idx_op1])){
+              op2.fp[idx_op2]+=op1.fp[idx_op1];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.fp[idx_op2]=mss_val_flt;
+        } /* end loop over idx_op2 */
+      } /* !Missing value exists and is NaN-like */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       float op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.fp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.fp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.fp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_flt){
-	      op2.fp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.fp[idx_op2]=mss_val_flt;
-	} /* end loop over idx_op2 */
+        if(isfinite(mss_val_flt)){
+          for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+            for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+              if(op1_2D[idx_op2][idx_blk] != mss_val_flt){
+                op2.fp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+                tally[idx_op2]++;
+              } /* end if */
+            } /* end loop over idx_blk */
+            if(tally[idx_op2] == 0L) op2.fp[idx_op2]=mss_val_flt;
+          } /* end loop over idx_op2 */
+        }else{ /* Missing value exists and is NaN-like */
+          for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+            for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+              if(isfinite(op1_2D[idx_op2][idx_blk])){
+                op2.fp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+                tally[idx_op2]++;
+              } /* end if */
+            } /* end loop over idx_blk */
+            if(tally[idx_op2] == 0L) op2.fp[idx_op2]=mss_val_flt;
+          } /* end loop over idx_op2 */
+        } /* !Missing value exists and is NaN-like */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -525,45 +551,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.dp[idx_op2]+=op1.dp[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.dp[idx_op2]+=op1.dp[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.dp[idx_op1] != mss_val_dbl){
-	    op2.dp[idx_op2]+=op1.dp[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.dp[idx_op2]=mss_val_dbl;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.dp[idx_op1] != mss_val_dbl){
+            op2.dp[idx_op2]+=op1.dp[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.dp[idx_op2]=mss_val_dbl;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       double op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.dp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.dp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.dp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_dbl){
-	      op2.dp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.dp[idx_op2]=mss_val_dbl;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_dbl){
+              op2.dp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.dp[idx_op2]=mss_val_dbl;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -574,45 +598,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ip[idx_op2]+=op1.ip[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ip[idx_op2]+=op1.ip[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.ip[idx_op1] != mss_val_ntg){
-	    op2.ip[idx_op2]+=op1.ip[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.ip[idx_op2]=mss_val_ntg;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.ip[idx_op1] != mss_val_ntg){
+            op2.ip[idx_op2]+=op1.ip[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.ip[idx_op2]=mss_val_ntg;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       long op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.ip),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ip[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ip[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_ntg){
-	      op2.ip[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.ip[idx_op2]=mss_val_ntg;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_ntg){
+              op2.ip[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.ip[idx_op2]=mss_val_ntg;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -623,45 +645,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.sp[idx_op2]+=op1.sp[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.sp[idx_op2]+=op1.sp[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.sp[idx_op1] != mss_val_short){
-	    op2.sp[idx_op2]+=op1.sp[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.sp[idx_op2]=mss_val_short;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.sp[idx_op1] != mss_val_short){
+            op2.sp[idx_op2]+=op1.sp[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.sp[idx_op2]=mss_val_short;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_short op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.sp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.sp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.sp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_short){
-	      op2.sp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.sp[idx_op2]=mss_val_short;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_short){
+              op2.sp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.sp[idx_op2]=mss_val_short;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -672,45 +692,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.usp[idx_op2]+=op1.usp[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.usp[idx_op2]+=op1.usp[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.usp[idx_op1] != mss_val_ushort){
-	    op2.usp[idx_op2]+=op1.usp[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.usp[idx_op2]=mss_val_ushort;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.usp[idx_op1] != mss_val_ushort){
+            op2.usp[idx_op2]+=op1.usp[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.usp[idx_op2]=mss_val_ushort;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_ushort op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.usp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.usp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.usp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_ushort){
-	      op2.usp[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.usp[idx_op2]=mss_val_ushort;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_ushort){
+              op2.usp[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.usp[idx_op2]=mss_val_ushort;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -721,45 +739,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.uip[idx_op2]+=op1.uip[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.uip[idx_op2]+=op1.uip[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.uip[idx_op1] != mss_val_uint){
-	    op2.uip[idx_op2]+=op1.uip[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.uip[idx_op2]=mss_val_uint;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.uip[idx_op1] != mss_val_uint){
+            op2.uip[idx_op2]+=op1.uip[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.uip[idx_op2]=mss_val_uint;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_uint op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.uip),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.uip[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.uip[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_uint){
-	      op2.uip[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.uip[idx_op2]=mss_val_uint;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_uint){
+              op2.uip[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.uip[idx_op2]=mss_val_uint;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -770,45 +786,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.i64p[idx_op2]+=op1.i64p[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.i64p[idx_op2]+=op1.i64p[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.i64p[idx_op1] != mss_val_int64){
-	    op2.i64p[idx_op2]+=op1.i64p[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.i64p[idx_op2]=mss_val_int64;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.i64p[idx_op1] != mss_val_int64){
+            op2.i64p[idx_op2]+=op1.i64p[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.i64p[idx_op2]=mss_val_int64;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_int64 op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.i64p),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.i64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.i64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_int64){
-	      op2.i64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.i64p[idx_op2]=mss_val_int64;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_int64){
+              op2.i64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.i64p[idx_op2]=mss_val_int64;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -819,45 +833,43 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ui64p[idx_op2]+=op1.ui64p[blk_off+idx_blk];
-	tally[idx_op2]=sz_blk;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ui64p[idx_op2]+=op1.ui64p[blk_off+idx_blk];
+        tally[idx_op2]=sz_blk;
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.ui64p[idx_op1] != mss_val_uint64){
-	    op2.ui64p[idx_op2]+=op1.ui64p[idx_op1];
-	    tally[idx_op2]++;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(tally[idx_op2] == 0L) op2.ui64p[idx_op2]=mss_val_uint64;
+        const long blk_off=idx_op2*sz_blk;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.ui64p[idx_op1] != mss_val_uint64){
+            op2.ui64p[idx_op2]+=op1.ui64p[idx_op1];
+            tally[idx_op2]++;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(tally[idx_op2] == 0L) op2.ui64p[idx_op2]=mss_val_uint64;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_uint64 op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.ui64p),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ui64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	  tally[idx_op2]=sz_blk;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++) op2.ui64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
+          tally[idx_op2]=sz_blk;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_uint64){
-	      op2.ui64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
-	      tally[idx_op2]++;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(tally[idx_op2] == 0L) op2.ui64p[idx_op2]=mss_val_uint64;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_uint64){
+              op2.ui64p[idx_op2]+=op1_2D[idx_op2][idx_blk];
+              tally[idx_op2]++;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(tally[idx_op2] == 0L) op2.ui64p[idx_op2]=mss_val_uint64;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -868,9 +880,9 @@ nco_var_avg_rdc_ttl /* [fnc] Sum blocks of op1 into each element of op2 */
   case NC_STRING: mss_val_string=mss_val_string; break; /* CEWI */
   default: nco_dfl_case_nc_type_err(); break;
   } /* end switch */
-  
+
   /* NB: it is not neccessary to un-typecast pointers to values after access 
-     because we have only operated on local copies of them. */
+  because we have only operated on local copies of them. */
 
 } /* end nco_var_avg_rdc_ttl() */
 
@@ -885,13 +897,13 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
  ptr_unn op2) /* O [sct] Minimum of each block of op1 */
 {
   /* Purpose: Find minimum value of each contiguous block of first operand and place
-     result in corresponding element in second operand. Operands are assumed to have
-     conforming types, but not dimensions or sizes. */
+  result in corresponding element in second operand. Operands are assumed to have
+  conforming types, but not dimensions or sizes. */
 
   /* nco_var_avg_rdc_min() is derived from nco_var_avg_rdc_ttl()
-     Routines are very similar but tallies are not incremented
-     See nco_var_avg_rdc_ttl() for more algorithmic documentation
-     nco_var_avg_rdc_max() is derived from nco_var_avg_rdc_min() */
+  Routines are very similar but tallies are not incremented
+  See nco_var_avg_rdc_ttl() for more algorithmic documentation
+  nco_var_avg_rdc_max() is derived from nco_var_avg_rdc_min() */
 
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
@@ -913,14 +925,14 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
   nco_ubyte mss_val_ubyte;
   nco_string mss_val_string;
   nco_byte mss_val_byte;
-  
+
   nco_bool flg_mss=False; /* [flg] Block has valid (non-missing) values */
-  
+
   /* Typecast pointer to values before access */
   (void)cast_void_nctype(type,&op1);
   (void)cast_void_nctype(type,&op2);
   if(has_mss_val) (void)cast_void_nctype(type,&mss_val);
-  
+
   if(has_mss_val){
     switch(type){
     case NC_FLOAT: mss_val_flt=*mss_val.fp; break;
@@ -938,113 +950,107 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     default: nco_dfl_case_nc_type_err(); break;
     } /* end switch */
   } /* endif */
-  
+
   switch(type){
   case NC_FLOAT:
-    
+
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
     /* ANSI-compliant branch */
     if(!has_mss_val){ 
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.fp[idx_op2]=op1.fp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.fp[idx_op2] > op1.fp[blk_off+idx_blk]) op2.fp[idx_op2]=op1.fp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.fp[idx_op2]=op1.fp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.fp[idx_op2] > op1.fp[blk_off+idx_blk]) op2.fp[idx_op2]=op1.fp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.fp[idx_op1] != mss_val_flt) {
-	    if(!flg_mss || op2.fp[idx_op2] > op1.fp[idx_op1]) op2.fp[idx_op2]=op1.fp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.fp[idx_op1] != mss_val_flt) {
+            if(!flg_mss || op2.fp[idx_op2] > op1.fp[idx_op1]) op2.fp[idx_op2]=op1.fp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       float op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.fp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.fp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.fp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.fp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.fp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_flt) {
-	      if(!flg_mss || op2.fp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_flt) {
+              if(!flg_mss || op2.fp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
-    
     break;
   case NC_DOUBLE:
-    
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.dp[idx_op2]=op1.dp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.dp[idx_op2] > op1.dp[blk_off+idx_blk]) op2.dp[idx_op2]=op1.dp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.dp[idx_op2]=op1.dp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.dp[idx_op2] > op1.dp[blk_off+idx_blk]) op2.dp[idx_op2]=op1.dp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.dp[idx_op1] != mss_val_dbl) {
-	    if(!flg_mss || (op2.dp[idx_op2] > op1.dp[idx_op1])) op2.dp[idx_op2]=op1.dp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.dp[idx_op1] != mss_val_dbl) {
+            if(!flg_mss || (op2.dp[idx_op2] > op1.dp[idx_op1])) op2.dp[idx_op2]=op1.dp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       double op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.dp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.dp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.dp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk] ;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.dp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.dp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk] ;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_dbl){
-	      if(!flg_mss || (op2.dp[idx_op2] > op1_2D[idx_op2][idx_blk])) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk];	    
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_dbl){
+              if(!flg_mss || (op2.dp[idx_op2] > op1_2D[idx_op2][idx_blk])) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk];	    
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1055,49 +1061,47 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.ip[idx_op2]=op1.ip[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.ip[idx_op2] > op1.ip[blk_off+idx_blk]) op2.ip[idx_op2]=op1.ip[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.ip[idx_op2]=op1.ip[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.ip[idx_op2] > op1.ip[blk_off+idx_blk]) op2.ip[idx_op2]=op1.ip[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.ip[idx_op1] != mss_val_ntg){
-	    if(!flg_mss || op2.ip[idx_op2] > op1.ip[idx_op1]) op2.ip[idx_op2]=op1.ip[idx_op1];
-	    flg_mss= True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.ip[idx_op1] != mss_val_ntg){
+            if(!flg_mss || op2.ip[idx_op2] > op1.ip[idx_op1]) op2.ip[idx_op2]=op1.ip[idx_op1];
+            flg_mss= True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       long op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.ip),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.ip[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.ip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.ip[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.ip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_ntg){
-	      if(!flg_mss || op2.ip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_ntg){
+              if(!flg_mss || op2.ip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1108,49 +1112,47 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.sp[idx_op2]=op1.sp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.sp[idx_op2] > op1.sp[blk_off+idx_blk]) op2.sp[idx_op2]=op1.sp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.sp[idx_op2]=op1.sp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.sp[idx_op2] > op1.sp[blk_off+idx_blk]) op2.sp[idx_op2]=op1.sp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.sp[idx_op1] != mss_val_short){
-	    if(!flg_mss || op2.sp[idx_op2] > op1.sp[idx_op1]) op2.sp[idx_op2]=op1.sp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.sp[idx_op1] != mss_val_short){
+            if(!flg_mss || op2.sp[idx_op2] > op1.sp[idx_op1]) op2.sp[idx_op2]=op1.sp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_short op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.sp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.sp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.sp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.sp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.sp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_short){
-	      if(!flg_mss  || op2.sp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_short){
+              if(!flg_mss  || op2.sp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1161,49 +1163,47 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.usp[idx_op2]=op1.usp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.usp[idx_op2] > op1.usp[blk_off+idx_blk]) op2.usp[idx_op2]=op1.usp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.usp[idx_op2]=op1.usp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.usp[idx_op2] > op1.usp[blk_off+idx_blk]) op2.usp[idx_op2]=op1.usp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.usp[idx_op1] != mss_val_ushort){
-	    if(!flg_mss || op2.usp[idx_op2] > op1.usp[idx_op1]) op2.usp[idx_op2]=op1.usp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.usp[idx_op1] != mss_val_ushort){
+            if(!flg_mss || op2.usp[idx_op2] > op1.usp[idx_op1]) op2.usp[idx_op2]=op1.usp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_ushort op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.usp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.usp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.usp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.usp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.usp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_ushort){
-	      if(!flg_mss  || op2.usp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_ushort){
+              if(!flg_mss  || op2.usp[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1214,49 +1214,47 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.uip[idx_op2]=op1.uip[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.uip[idx_op2] > op1.uip[blk_off+idx_blk]) op2.uip[idx_op2]=op1.uip[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.uip[idx_op2]=op1.uip[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.uip[idx_op2] > op1.uip[blk_off+idx_blk]) op2.uip[idx_op2]=op1.uip[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.uip[idx_op1] != mss_val_uint){
-	    if(!flg_mss || op2.uip[idx_op2] > op1.uip[idx_op1]) op2.uip[idx_op2]=op1.uip[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.uip[idx_op1] != mss_val_uint){
+            if(!flg_mss || op2.uip[idx_op2] > op1.uip[idx_op1]) op2.uip[idx_op2]=op1.uip[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_uint op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.uip),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.uip[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.uip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.uip[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.uip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_uint){
-	      if(!flg_mss  || op2.uip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_uint){
+              if(!flg_mss  || op2.uip[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1267,49 +1265,47 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.i64p[idx_op2]=op1.i64p[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.i64p[idx_op2] > op1.i64p[blk_off+idx_blk]) op2.i64p[idx_op2]=op1.i64p[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.i64p[idx_op2]=op1.i64p[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.i64p[idx_op2] > op1.i64p[blk_off+idx_blk]) op2.i64p[idx_op2]=op1.i64p[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.i64p[idx_op1] != mss_val_int64){
-	    if(!flg_mss || op2.i64p[idx_op2] > op1.i64p[idx_op1]) op2.i64p[idx_op2]=op1.i64p[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.i64p[idx_op1] != mss_val_int64){
+            if(!flg_mss || op2.i64p[idx_op2] > op1.i64p[idx_op1]) op2.i64p[idx_op2]=op1.i64p[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_int64 op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.i64p),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.i64p[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.i64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.i64p[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.i64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_int64){
-	      if(!flg_mss  || op2.i64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_int64){
+              if(!flg_mss  || op2.i64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1320,49 +1316,47 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.ui64p[idx_op2]=op1.ui64p[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.ui64p[idx_op2] > op1.ui64p[blk_off+idx_blk]) op2.ui64p[idx_op2]=op1.ui64p[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.ui64p[idx_op2]=op1.ui64p[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.ui64p[idx_op2] > op1.ui64p[blk_off+idx_blk]) op2.ui64p[idx_op2]=op1.ui64p[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.ui64p[idx_op1] != mss_val_uint64){
-	    if(!flg_mss || op2.ui64p[idx_op2] > op1.ui64p[idx_op1]) op2.ui64p[idx_op2]=op1.ui64p[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.ui64p[idx_op1] != mss_val_uint64){
+            if(!flg_mss || op2.ui64p[idx_op2] > op1.ui64p[idx_op1]) op2.ui64p[idx_op2]=op1.ui64p[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_uint64 op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.ui64p),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.ui64p[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.ui64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.ui64p[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.ui64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_uint64){
-	      if(!flg_mss  || op2.ui64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_uint64){
+              if(!flg_mss  || op2.ui64p[idx_op2] > op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1373,10 +1367,10 @@ nco_var_avg_rdc_min /* [fnc] Place minimum of op1 blocks into each element of op
   case NC_STRING: mss_val_string=mss_val_string; break; /* CEWI */
   default: nco_dfl_case_nc_type_err(); break;
   } /* end  switch */
-  
+
   /* NB: it is not neccessary to un-typecast pointers to values after access 
-     because we have only operated on local copies of them. */
-  
+  because we have only operated on local copies of them. */
+
 } /* end nco_var_avg_rdc_min() */
 
 void
@@ -1390,13 +1384,13 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
  ptr_unn op2) /* O [sct] Maximum of each block of op1 */
 {
   /* Purpose: Find maximum value of each contiguous block of first operand and place
-     result in corresponding element in second operand. Operands are assumed to have
-     conforming types, but not dimensions or sizes. */
+  result in corresponding element in second operand. Operands are assumed to have
+  conforming types, but not dimensions or sizes. */
 
   /* nco_var_avg_rdc_min() is derived from nco_var_avg_rdc_ttl()
-     Routines are very similar but tallies are not incremented
-     See nco_var_avg_rdc_ttl() for more algorithmic documentation
-     nco_var_avg_rdc_max() is derived from nco_var_avg_rdc_min() */
+  Routines are very similar but tallies are not incremented
+  See nco_var_avg_rdc_ttl() for more algorithmic documentation
+  nco_var_avg_rdc_max() is derived from nco_var_avg_rdc_min() */
 
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
@@ -1405,7 +1399,7 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
   const long sz_blk=sz_op1/sz_op2;
   long idx_op2;
   long idx_blk;
-  
+
   double mss_val_dbl=double_CEWI;
   float mss_val_flt=float_CEWI;
   nco_int mss_val_ntg=nco_int_CEWI;
@@ -1418,14 +1412,14 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
   nco_ubyte mss_val_ubyte;
   nco_string mss_val_string;
   nco_byte mss_val_byte;
-  
+
   nco_bool flg_mss=False;
-  
+
   /* Typecast pointer to values before access */
   (void)cast_void_nctype(type,&op1);
   (void)cast_void_nctype(type,&op2);
   if(has_mss_val) (void)cast_void_nctype(type,&mss_val);
-  
+
   if(has_mss_val){
     switch(type){
     case NC_FLOAT: mss_val_flt=*mss_val.fp; break;
@@ -1443,113 +1437,107 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     default: nco_dfl_case_nc_type_err(); break;
     } /* end switch */
   } /* endif */
-  
+
   switch(type){
   case NC_FLOAT:
-    
+
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
     /* ANSI-compliant branch */
     if(!has_mss_val){ 
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.fp[idx_op2]=op1.fp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.fp[idx_op2] < op1.fp[blk_off+idx_blk]) op2.fp[idx_op2]=op1.fp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.fp[idx_op2]=op1.fp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.fp[idx_op2] < op1.fp[blk_off+idx_blk]) op2.fp[idx_op2]=op1.fp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.fp[idx_op1] != mss_val_flt) {
-	    if(!flg_mss || op2.fp[idx_op2] < op1.fp[idx_op1]) op2.fp[idx_op2]=op1.fp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.fp[idx_op1] != mss_val_flt) {
+            if(!flg_mss || op2.fp[idx_op2] < op1.fp[idx_op1]) op2.fp[idx_op2]=op1.fp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       float op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.fp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.fp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.fp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.fp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.fp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_flt) {
-	      if(!flg_mss || op2.fp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_flt) {
+              if(!flg_mss || op2.fp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.fp[idx_op2]=op1_2D[idx_op2][idx_blk];
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.fp[idx_op2]=mss_val_flt;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
-    
     break;
   case NC_DOUBLE:
-    
 #define FXM_NCO315 1
 #ifdef FXM_NCO315
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.dp[idx_op2]=op1.dp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.dp[idx_op2] < op1.dp[blk_off+idx_blk]) op2.dp[idx_op2]=op1.dp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.dp[idx_op2]=op1.dp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.dp[idx_op2] < op1.dp[blk_off+idx_blk]) op2.dp[idx_op2]=op1.dp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.dp[idx_op1] != mss_val_dbl) {
-	    if(!flg_mss || (op2.dp[idx_op2] < op1.dp[idx_op1])) op2.dp[idx_op2]=op1.dp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.dp[idx_op1] != mss_val_dbl) {
+            if(!flg_mss || (op2.dp[idx_op2] < op1.dp[idx_op1])) op2.dp[idx_op2]=op1.dp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       double op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.dp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.dp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.dp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk] ;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.dp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.dp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk] ;
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_dbl){
-	      if(!flg_mss || (op2.dp[idx_op2] < op1_2D[idx_op2][idx_blk])) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk];	    
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_dbl){
+              if(!flg_mss || (op2.dp[idx_op2] < op1_2D[idx_op2][idx_blk])) op2.dp[idx_op2]=op1_2D[idx_op2][idx_blk];	    
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.dp[idx_op2]=mss_val_dbl;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1560,49 +1548,47 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.ip[idx_op2]=op1.ip[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.ip[idx_op2] < op1.ip[blk_off+idx_blk]) op2.ip[idx_op2]=op1.ip[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.ip[idx_op2]=op1.ip[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.ip[idx_op2] < op1.ip[blk_off+idx_blk]) op2.ip[idx_op2]=op1.ip[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.ip[idx_op1] != mss_val_ntg){
-	    if(!flg_mss || op2.ip[idx_op2] < op1.ip[idx_op1]) op2.ip[idx_op2]=op1.ip[idx_op1];
-	    flg_mss= True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.ip[idx_op1] != mss_val_ntg){
+            if(!flg_mss || op2.ip[idx_op2] < op1.ip[idx_op1]) op2.ip[idx_op2]=op1.ip[idx_op1];
+            flg_mss= True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       long op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.ip),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.ip[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.ip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.ip[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.ip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_ntg){
-	      if(!flg_mss || op2.ip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_ntg){
+              if(!flg_mss || op2.ip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.ip[idx_op2]=mss_val_ntg;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1613,49 +1599,47 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.sp[idx_op2]=op1.sp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.sp[idx_op2] < op1.sp[blk_off+idx_blk]) op2.sp[idx_op2]=op1.sp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.sp[idx_op2]=op1.sp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.sp[idx_op2] < op1.sp[blk_off+idx_blk]) op2.sp[idx_op2]=op1.sp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.sp[idx_op1] != mss_val_short){
-	    if(!flg_mss || op2.sp[idx_op2] < op1.sp[idx_op1]) op2.sp[idx_op2]=op1.sp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.sp[idx_op1] != mss_val_short){
+            if(!flg_mss || op2.sp[idx_op2] < op1.sp[idx_op1]) op2.sp[idx_op2]=op1.sp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_short op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.sp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.sp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.sp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.sp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.sp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_short){
-	      if(!flg_mss  || op2.sp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_short){
+              if(!flg_mss  || op2.sp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.sp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.sp[idx_op2]=mss_val_short;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1666,49 +1650,47 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.usp[idx_op2]=op1.usp[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.usp[idx_op2] < op1.usp[blk_off+idx_blk]) op2.usp[idx_op2]=op1.usp[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.usp[idx_op2]=op1.usp[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.usp[idx_op2] < op1.usp[blk_off+idx_blk]) op2.usp[idx_op2]=op1.usp[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.usp[idx_op1] != mss_val_ushort){
-	    if(!flg_mss || op2.usp[idx_op2] < op1.usp[idx_op1]) op2.usp[idx_op2]=op1.usp[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.usp[idx_op1] != mss_val_ushort){
+            if(!flg_mss || op2.usp[idx_op2] < op1.usp[idx_op1]) op2.usp[idx_op2]=op1.usp[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_ushort op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.usp),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.usp[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.usp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.usp[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.usp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_ushort){
-	      if(!flg_mss  || op2.usp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_ushort){
+              if(!flg_mss  || op2.usp[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.usp[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.usp[idx_op2]=mss_val_ushort;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1719,49 +1701,47 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.uip[idx_op2]=op1.uip[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.uip[idx_op2] < op1.uip[blk_off+idx_blk]) op2.uip[idx_op2]=op1.uip[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.uip[idx_op2]=op1.uip[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.uip[idx_op2] < op1.uip[blk_off+idx_blk]) op2.uip[idx_op2]=op1.uip[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.uip[idx_op1] != mss_val_uint){
-	    if(!flg_mss || op2.uip[idx_op2] < op1.uip[idx_op1]) op2.uip[idx_op2]=op1.uip[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.uip[idx_op1] != mss_val_uint){
+            if(!flg_mss || op2.uip[idx_op2] < op1.uip[idx_op1]) op2.uip[idx_op2]=op1.uip[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_uint op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.uip),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.uip[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.uip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.uip[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.uip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_uint){
-	      if(!flg_mss  || op2.uip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_uint){
+              if(!flg_mss  || op2.uip[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.uip[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.uip[idx_op2]=mss_val_uint;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1772,49 +1752,47 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.i64p[idx_op2]=op1.i64p[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.i64p[idx_op2] < op1.i64p[blk_off+idx_blk]) op2.i64p[idx_op2]=op1.i64p[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.i64p[idx_op2]=op1.i64p[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.i64p[idx_op2] < op1.i64p[blk_off+idx_blk]) op2.i64p[idx_op2]=op1.i64p[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.i64p[idx_op1] != mss_val_int64){
-	    if(!flg_mss || op2.i64p[idx_op2] < op1.i64p[idx_op1]) op2.i64p[idx_op2]=op1.i64p[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.i64p[idx_op1] != mss_val_int64){
+            if(!flg_mss || op2.i64p[idx_op2] < op1.i64p[idx_op1]) op2.i64p[idx_op2]=op1.i64p[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_int64 op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.i64p),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.i64p[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.i64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.i64p[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.i64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_int64){
-	      if(!flg_mss  || op2.i64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_int64){
+              if(!flg_mss  || op2.i64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.i64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.i64p[idx_op2]=mss_val_int64;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1825,49 +1803,47 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
     /* ANSI-compliant branch */
     if(!has_mss_val){
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	op2.ui64p[idx_op2]=op1.ui64p[blk_off];
-	for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	  if(op2.ui64p[idx_op2] < op1.ui64p[blk_off+idx_blk]) op2.ui64p[idx_op2]=op1.ui64p[blk_off+idx_blk];
+        const long blk_off=idx_op2*sz_blk;
+        op2.ui64p[idx_op2]=op1.ui64p[blk_off];
+        for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+          if(op2.ui64p[idx_op2] < op1.ui64p[blk_off+idx_blk]) op2.ui64p[idx_op2]=op1.ui64p[blk_off+idx_blk];
       } /* end loop over idx_op2 */
     }else{
       for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	const long blk_off=idx_op2*sz_blk;
-	flg_mss=False;
-	for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	  idx_op1=blk_off+idx_blk;
-	  if(op1.ui64p[idx_op1] != mss_val_uint64){
-	    if(!flg_mss || op2.ui64p[idx_op2] < op1.ui64p[idx_op1]) op2.ui64p[idx_op2]=op1.ui64p[idx_op1];
-	    flg_mss=True;
-	  } /* end if */
-	} /* end loop over idx_blk */
-	if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
+        const long blk_off=idx_op2*sz_blk;
+        flg_mss=False;
+        for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+          idx_op1=blk_off+idx_blk;
+          if(op1.ui64p[idx_op1] != mss_val_uint64){
+            if(!flg_mss || op2.ui64p[idx_op2] < op1.ui64p[idx_op1]) op2.ui64p[idx_op2]=op1.ui64p[idx_op1];
+            flg_mss=True;
+          } /* end if */
+        } /* end loop over idx_blk */
+        if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
       } /* end loop over idx_op2 */
     } /* end else */
 #else /* __GNUC__ */
     /* Compiler supports local automatic arrays. Not ANSI-compliant, but more elegant. */
     if(True){
       nco_uint64 op1_2D[sz_op2][sz_blk];
-      
       (void)memcpy((void *)op1_2D,(void *)(op1.ui64p),sz_op1*nco_typ_lng(type));
-      
       if(!has_mss_val){
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  op2.ui64p[idx_op2]=op1_2D[idx_op2][0];
-	  for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
-	    if(op2.ui64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          op2.ui64p[idx_op2]=op1_2D[idx_op2][0];
+          for(idx_blk=1;idx_blk<sz_blk;idx_blk++) 
+            if(op2.ui64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];
+        } /* end loop over idx_op2 */
       }else{
-	for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
-	  flg_mss=False;
-	  for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
-	    if(op1_2D[idx_op2][idx_blk] != mss_val_uint64){
-	      if(!flg_mss  || op2.ui64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
-	      flg_mss=True;
-	    } /* end if */
-	  } /* end loop over idx_blk */
-	  if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
-	} /* end loop over idx_op2 */
+        for(idx_op2=0;idx_op2<sz_op2;idx_op2++){
+          flg_mss=False;
+          for(idx_blk=0;idx_blk<sz_blk;idx_blk++){
+            if(op1_2D[idx_op2][idx_blk] != mss_val_uint64){
+              if(!flg_mss  || op2.ui64p[idx_op2] < op1_2D[idx_op2][idx_blk]) op2.ui64p[idx_op2]=op1_2D[idx_op2][idx_blk];	      
+              flg_mss=True;
+            } /* end if */
+          } /* end loop over idx_blk */
+          if(!flg_mss) op2.ui64p[idx_op2]=mss_val_uint64;
+        } /* end loop over idx_op2 */
       } /* end else */
     } /* end if */
 #endif /* __GNUC__ */
@@ -1878,8 +1854,8 @@ nco_var_avg_rdc_max /* [fnc] Place maximum of op1 blocks into each element of op
   case NC_STRING: mss_val_string=mss_val_string; break; /* CEWI */
   default: nco_dfl_case_nc_type_err(); break;
   } /* end  switch */
-  
+
   /* NB: it is not neccessary to un-typecast pointers to values after access 
-     because we have only operated on local copies of them. */
+  because we have only operated on local copies of them. */
 
 } /* end nco_var_avg_rdc_max() */
diff --git a/src/nco/nco_var_avg.h b/src/nco/nco_var_avg.h
index d1a26a8..05c298d 100644
--- a/src/nco/nco_var_avg.h
+++ b/src/nco/nco_var_avg.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_avg.h,v 1.24 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_avg.h,v 1.26 2013/07/16 18:39:43 zender Exp $ */
 
 /* Purpose: Average variables */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -23,6 +23,9 @@
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_cnf_typ.h" /* Conform variable types */
 #include "nco_mmr.h" /* Memory management */
+#ifdef _MSC_VER
+# include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
+#endif /* !_MSC_VER */
 #include "nco_rth_utl.h" /* Arithmetic controls and utilities */
 #include "nco_var_rth.h" /* Variable arithmetic */
 #include "nco_var_utl.h" /* Variable utilities */
diff --git a/src/nco/nco_var_lst.c b/src/nco/nco_var_lst.c
index a6db174..188d716 100644
--- a/src/nco/nco_var_lst.c
+++ b/src/nco/nco_var_lst.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_lst.c,v 1.107 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_lst.c,v 1.163 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: Variable list utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -15,13 +15,12 @@ nco_var_lst_mk /* [fnc] Create variable extraction list using regular expression
  char * const * const var_lst_in, /* I [sng] User-specified list of variable names and rx's */
  const nco_bool EXCLUDE_INPUT_LIST, /* I [flg] Exclude rather than extract */
  const nco_bool EXTRACT_ALL_COORDINATES, /* I [flg] Process all coordinates */
- int * const var_nbr_xtr) /* I/O [nbr] Number of variables in current extraction list */
+ int * const var_xtr_nbr) /* I/O [nbr] Number of variables in current extraction list */
 {
   /* Purpose: Create variable extraction list with or without regular expressions */
   
-  char *var_sng; /* User-specified variable name or regular expression */
-  char var_nm[NC_MAX_NAME];
-  
+  char *var_sng;                  /* User-specified variable name or regular expression */
+  char var_nm[NC_MAX_NAME];       /* [sng] Variable name */
   int idx;
   int jdx;
   int var_nbr_tmp;
@@ -43,8 +42,8 @@ nco_var_lst_mk /* [fnc] Create variable extraction list using regular expression
   } /* end loop over idx */
   
   /* Return all variables if none were specified and not -c ... */
-  if(*var_nbr_xtr == 0 && !EXTRACT_ALL_COORDINATES){
-    *var_nbr_xtr=var_nbr_all;
+  if(*var_xtr_nbr == 0 && !EXTRACT_ALL_COORDINATES){
+    *var_xtr_nbr=var_nbr_all;
     return var_lst_all;
   } /* end if */
   
@@ -52,7 +51,7 @@ nco_var_lst_mk /* [fnc] Create variable extraction list using regular expression
   var_xtr_rqs=(nco_bool *)nco_calloc((size_t)var_nbr_all,sizeof(nco_bool));
   
   /* Loop through user-specified variable list */
-  for(idx=0;idx<*var_nbr_xtr;idx++){
+  for(idx=0;idx<*var_xtr_nbr;idx++){
     var_sng=var_lst_in[idx];
     
     /* Convert pound signs (back) to commas */
@@ -66,13 +65,13 @@ nco_var_lst_mk /* [fnc] Create variable extraction list using regular expression
     if(strpbrk(var_sng,".*^$\\[]()<>+?|{}")){
       /* ... and regular expression library is present */
 #ifdef NCO_HAVE_REGEX_FUNCTIONALITY
-      rx_mch_nbr=nco_lst_meta_search(var_nbr_all,var_lst_all,var_sng,var_xtr_rqs);
-      if(rx_mch_nbr == 0) (void)fprintf(stdout,"%s: WARNING: Regular expression \"%s\" does not match any variables\nHINT: See regular expression syntax examples at http://nco.sf.net/nco.html#rx\n",prg_nm_get(),var_sng); 
+      rx_mch_nbr=nco_lst_rx_search(var_nbr_all,var_lst_all,var_sng,var_xtr_rqs);
+      if(rx_mch_nbr == 0) (void)fprintf(stdout,"%s: WARNING: Regular expression \"%s\" does not match any variables\nHINT: See regular expression syntax examples at http://nco.sf.net/nco.html#rx\n",nco_prg_nm_get(),var_sng); 
       continue;
-#else
-      (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to variables) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",prg_nm_get(),var_sng);
+#else /* !NCO_HAVE_REGEX_FUNCTIONALITY */
+      (void)fprintf(stdout,"%s: ERROR: Sorry, wildcarding (extended regular expression matches to variables) was not built into this NCO executable, so unable to compile regular expression \"%s\".\nHINT: Make sure libregex.a is on path and re-build NCO.\n",nco_prg_nm_get(),var_sng);
       nco_exit(EXIT_FAILURE);
-#endif /* NCO_HAVE_REGEX_FUNCTIONALITY */
+#endif /* !NCO_HAVE_REGEX_FUNCTIONALITY */
     } /* end if regular expression */
     
     /* Normal variable so search through variable array */
@@ -85,10 +84,10 @@ nco_var_lst_mk /* [fnc] Create variable extraction list using regular expression
     }else{
       if(EXCLUDE_INPUT_LIST){ 
 	/* Variable need not be present if list will be excluded later ... */
-	if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO nco_var_lst_mk() reports explicitly excluded variable \"%s\" is not in input file anyway\n",prg_nm_get(),var_sng); 
+	if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%s: INFO nco_var_lst_mk() reports explicitly excluded variable \"%s\" is not in input file anyway\n",nco_prg_nm_get(),var_sng); 
       }else{ /* !EXCLUDE_INPUT_LIST */
 	/* Variable should be included but no matches found so die */
-	(void)fprintf(stdout,"%s: ERROR nco_var_lst_mk() reports user-specified variable \"%s\" is not in input file\n",prg_nm_get(),var_sng); 
+	(void)fprintf(stdout,"%s: ERROR nco_var_lst_mk() reports user-specified variable \"%s\" is not in input file\n",nco_prg_nm_get(),var_sng); 
 	nco_exit(EXIT_FAILURE);
       } /* !EXCLUDE_INPUT_LIST */
     } /* end else */
@@ -115,7 +114,7 @@ nco_var_lst_mk /* [fnc] Create variable extraction list using regular expression
   var_lst_all=(nm_id_sct *)nco_nm_id_lst_free(var_lst_all,var_nbr_all);
   var_xtr_rqs=(nco_bool *)nco_free(var_xtr_rqs);
 
-  *var_nbr_xtr=var_nbr_tmp;    
+  *var_xtr_nbr=var_nbr_tmp;    
   return xtr_lst;
 } /* end nco_var_lst_mk() */
 
@@ -124,7 +123,7 @@ nco_var_lst_xcl /* [fnc] Convert exclusion list to extraction list */
 (const int nc_id, /* I netCDF file ID */
  const int nbr_var, /* I [nbr] Number of variables in input file */
  nm_id_sct *xtr_lst, /* I/O [sct] Current exclusion list (destroyed) */
- int * const nbr_xtr) /* I/O [nbr] Number of variables in exclusion/extraction list */
+ int * const xtr_nbr) /* I/O [nbr] Number of variables in exclusion/extraction list */
 {
   /* Purpose: Convert exclusion list to extraction list
      User wants to extract all variables except those currently in list
@@ -140,8 +139,8 @@ nco_var_lst_xcl /* [fnc] Convert exclusion list to extraction list */
   nm_id_sct *xcl_lst;
   
   /* Turn extract list into exclude list and reallocate extract list  */
-  nbr_xcl=*nbr_xtr;
-  *nbr_xtr=0;
+  nbr_xcl=*xtr_nbr;
+  *xtr_nbr=0;
   xcl_lst=(nm_id_sct *)nco_malloc(nbr_xcl*sizeof(nm_id_sct));
   (void)memcpy((void *)xcl_lst,(void *)xtr_lst,nbr_xcl*sizeof(nm_id_sct));
   xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(nbr_var-nbr_xcl)*sizeof(nm_id_sct));
@@ -154,9 +153,10 @@ nco_var_lst_xcl /* [fnc] Convert exclusion list to extraction list */
     } /* end loop over lst_idx */
     /* If variable is not in exclusion list then add it to new list */
     if(lst_idx == nbr_xcl){
-      xtr_lst[*nbr_xtr].nm=(char *)strdup(var_nm);
-      xtr_lst[*nbr_xtr].id=idx;
-      ++*nbr_xtr;
+      xtr_lst[*xtr_nbr].nm=(char *)strdup(var_nm);
+      xtr_lst[*xtr_nbr].id=idx;
+     
+      ++*xtr_nbr;
     } /* end if */
   } /* end loop over idx */
   
@@ -168,150 +168,64 @@ nco_var_lst_xcl /* [fnc] Convert exclusion list to extraction list */
   return xtr_lst;
 } /* end nco_var_lst_xcl() */
 
-nco_bool /* [flg] Variable is listed in a "coordinates" attribute */
-nco_is_spc_in_crd_att /* [fnc] Variable is listed in a "coordinates" attribute */
+void
+nco_var_lst_fix_rec_dvd /* [fnc] Divide extraction list into fixed and record data */
 (const int nc_id, /* I [id] netCDF file ID */
- const int var_trg_id) /* I [id] Variable ID */
+ nm_id_sct *xtr_lst, /* I/O [sct] Extraction list (pointers to it are constructed) */
+ const int xtr_nbr, /* I [nbr] Number of variables in extraction list */
+ nm_id_sct ***fix_lst, /* O [sct] Fixed-length variables */
+ int * const fix_nbr, /* O [nbr] Number of fixed-length variables */
+ nm_id_sct ***rec_lst, /* O [sct] Record variables */
+ int * const rec_nbr) /* O [nbr] Number of record variables */
 {
-  /* Purpose: Is variable specified in a "coordinates" attribute?
-     If so, it may be a "multi-dimensional coordinate" that should
-     undergo special treatment by arithmetic operators. */
-  nco_bool IS_SPC_IN_CRD_ATT=False; /* [flg] Variable is listed in a "coordinates" attribute  */
-
-  const char dlm_sng[]=" "; /* [sng] Delimiter string */
-  const char fnc_nm[]="nco_is_spc_in_crd_att()"; /* [sng] Function name */
-  char **crd_lst; /* [sng] 1D array of list elements */
-  char *att_val;
-  char att_nm[NC_MAX_NAME];
-  char var_nm[NC_MAX_NAME];
-  char var_trg_nm[NC_MAX_NAME];
-  int idx_att;
-  int idx_crd;
-  int idx_var;
-  int nbr_att;
-  int nbr_crd; /* [nbr] Number of coordinates specified in "coordinates" attribute */
-  int nbr_var; /* [nbr] Number of variables in file */
+  /* Purpose: Divide extraction list into fixed-length and record variables
+     These lists will be used by netCDF3 Multi-record Multi-variable netCDF3 file (MM3) workaround
+     Routine assumes file is in netCDF3 format */
+  int dmn_nbr;
+  int idx;
+  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
   int rcd=NC_NOERR; /* [rcd] Return code */
-  int var_id; /* [id] Variable ID */
-  long att_sz;
-  nc_type att_typ;
-  
-  /* May need variable name for later comparison to "coordinates" attribute */
-  rcd+=nco_inq_varname(nc_id,var_trg_id,var_trg_nm);
-  rcd+=nco_inq_nvars(nc_id,&nbr_var);
-
-  for(idx_var=0;idx_var<nbr_var;idx_var++){
-    /* This assumption, praise the Lord, is valid in netCDF2, netCDF3, and netCDF4 */
-    var_id=idx_var;
-    
-    /* Find number of attributes */
-    rcd+=nco_inq_varnatts(nc_id,var_id,&nbr_att);
-    for(idx_att=0;idx_att<nbr_att;idx_att++){
-      rcd+=nco_inq_attname(nc_id,var_id,idx_att,att_nm);
-      /* Is attribute part of CF convention? */
-      if(!strcmp(att_nm,"coordinates")){
-	/* Yes, get list of specified attributes */
-	rcd+=nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
-	if(att_typ != NC_CHAR){
-	  rcd=nco_inq_varname(nc_id,var_id,var_nm);
-	  (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,var_nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
-	  return IS_SPC_IN_CRD_ATT;
-	} /* end if */
-	att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
-	if(att_sz > 0) rcd=nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
-	/* NUL-terminate attribute */
-	att_val[att_sz]='\0';
-	/* Split list into separate coordinate names
-	   Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
-	crd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_crd);
-	/* ...for each coordinate in "coordinates" attribute... */
-	for(idx_crd=0;idx_crd<nbr_crd;idx_crd++){
-	  /* Does variable match name specified in coordinate list? */
-	  if(!strcmp(var_trg_nm,crd_lst[idx_crd])) break;
-	} /* end loop over coordinates in list */
-	if(idx_crd!=nbr_crd) IS_SPC_IN_CRD_ATT=True;
-	/* Free allocated memory */
-	att_val=(char *)nco_free(att_val);
-	crd_lst=nco_sng_lst_free(crd_lst,nbr_crd);
-      } /* !coordinates */
-    } /* end loop over attributes */
-  } /* end loop over idx_var */
-  
-  return IS_SPC_IN_CRD_ATT; /* [flg] Variable is listed in a "coordinates" attribute  */
-} /* end nco_is_spc_in_crd_att() */
 
-nco_bool /* [flg] Variable is listed in a "bounds" attribute */
-nco_is_spc_in_bnd_att /* [fnc] Variable is listed in a "bounds" attribute */
-(const int nc_id, /* I [id] netCDF file ID */
- const int var_trg_id) /* I [id] Variable ID */
-{
-  /* Purpose: Is variable specified in a "bounds" attribute?
-     If so, it may be a "multi-dimensional coordinate" that should
-     undergo special treatment by arithmetic operators.
-     Routine based on nco_is_spc_in_crd_att() */
-  nco_bool IS_SPC_IN_BND_ATT=False; /* [flg] Variable is listed in a "bounds" attribute  */
-
-  const char dlm_sng[]=" "; /* [sng] Delimiter string */
-  const char fnc_nm[]="nco_is_spc_in_bnd_att()"; /* [sng] Function name */
-  char **bnd_lst; /* [sng] 1D array of list elements */
-  char *att_val;
-  char att_nm[NC_MAX_NAME];
-  char var_nm[NC_MAX_NAME];
-  char var_trg_nm[NC_MAX_NAME];
-  int idx_att;
-  int idx_bnd;
-  int idx_var;
-  int nbr_att;
-  int nbr_bnd; /* [nbr] Number of coordinates specified in "bounds" attribute */
-  int nbr_var; /* [nbr] Number of variables in file */
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int var_id; /* [id] Variable ID */
-  long att_sz;
-  nc_type att_typ;
-  
-  /* May need variable name for later comparison to "bounds" attribute */
-  rcd+=nco_inq_varname(nc_id,var_trg_id,var_trg_nm);
-  rcd+=nco_inq_nvars(nc_id,&nbr_var);
+  int *dmn_id;
+
+  nco_bool flg_crr_var_rec; /* [flg] Current variable is record variable */
+
+  /* Initialize variables */
+  *fix_nbr=0;
+  *rec_nbr=0;
+
+  /* Allocate too much space */
+  *fix_lst=(nm_id_sct **)nco_malloc(xtr_nbr*sizeof(nm_id_sct *));
+  *rec_lst=(nm_id_sct **)nco_malloc(xtr_nbr*sizeof(nm_id_sct *));
+
+  /* Assume file contains record dimension (and netCDF3 files can have only one record dimension) */
+  rcd+=nco_inq_unlimdim(nc_id,&rec_dmn_id);
+  assert(rec_dmn_id != NCO_REC_DMN_UNDEFINED);
+  for(idx=0;idx<xtr_nbr;idx++){
+    /* Assume current variable is fixed */
+    flg_crr_var_rec=False;
+    rcd+=nco_inq_varndims(nc_id,xtr_lst[idx].id,&dmn_nbr);
+    if(dmn_nbr > 0){
+      dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
+      rcd+=nco_inq_vardimid(nc_id,xtr_lst[idx].id,dmn_id);
+      /* netCDF3 requires record dimension to be first dimension */
+      if(dmn_id[0] == rec_dmn_id) flg_crr_var_rec=True;
+      if(dmn_id) dmn_id=(int*)nco_free(dmn_id);
+    } /* endif dmn_nbr > 0 */
+    if(flg_crr_var_rec){
+      /* Current variable is record variable */
+      (*rec_lst)[*rec_nbr]=xtr_lst+idx;
+      ++*rec_nbr;
+    }else{
+      /* Current variable is fixed-length */
+      (*fix_lst)[*fix_nbr]=xtr_lst+idx;
+      ++*fix_nbr;
+    } /* endif no record variable in file */
+  } /* end loop over variables */
+  *fix_lst=(nm_id_sct **)nco_realloc((void *)*fix_lst,*fix_nbr*sizeof(nm_id_sct *));
+  *rec_lst=(nm_id_sct **)nco_realloc((void *)*rec_lst,*rec_nbr*sizeof(nm_id_sct *));
 
-  for(idx_var=0;idx_var<nbr_var;idx_var++){
-    /* This assumption, praise the Lord, is valid in netCDF2, netCDF3, and netCDF4 */
-    var_id=idx_var;
-    
-    /* Find number of attributes */
-    rcd+=nco_inq_varnatts(nc_id,var_id,&nbr_att);
-    for(idx_att=0;idx_att<nbr_att;idx_att++){
-      rcd+=nco_inq_attname(nc_id,var_id,idx_att,att_nm);
-      /* Is attribute part of CF convention? */
-      if(!strcmp(att_nm,"bounds")){
-	/* Yes, get list of specified attributes */
-	rcd+=nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
-	if(att_typ != NC_CHAR){
-	  rcd=nco_inq_varname(nc_id,var_id,var_nm);
-	  (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,var_nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
-	  return IS_SPC_IN_BND_ATT;
-	} /* end if */
-	att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
-	if(att_sz > 0) rcd=nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
-	/* NUL-terminate attribute */
-	att_val[att_sz]='\0';
-	/* Split list into separate coordinate names
-	   Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
-	bnd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_bnd);
-	/* ...for each coordinate in "bounds" attribute... */
-	for(idx_bnd=0;idx_bnd<nbr_bnd;idx_bnd++){
-	  /* Does variable match name specified in coordinate list? */
-	  if(!strcmp(var_trg_nm,bnd_lst[idx_bnd])) break;
-	} /* end loop over coordinates in list */
-	if(idx_bnd!=nbr_bnd) IS_SPC_IN_BND_ATT=True;
-	/* Free allocated memory */
-	att_val=(char *)nco_free(att_val);
-	bnd_lst=nco_sng_lst_free(bnd_lst,nbr_bnd);
-      } /* !coordinates */
-    } /* end loop over attributes */
-  } /* end loop over idx_var */
-  
-  return IS_SPC_IN_BND_ATT; /* [flg] Variable is listed in a "bounds" attribute  */
-} /* end nco_is_spc_in_bnd_att() */
+} /* end nco_var_lst_fix_rec_dvd() */
 
 nm_id_sct * /* O [sct] Extraction list */
 nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
@@ -319,7 +233,7 @@ nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
  const int nbr_dim, /* I [nbr] Number of dimensions in input file */
  const int nbr_var, /* I [nbr] Number of variables in input file */
  nm_id_sct *xtr_lst, /* I/O [sct] Current extraction list (destroyed) */
- int * const nbr_xtr, /* I/O [nbr] Number of variables in current extraction list */
+ int * const xtr_nbr, /* I/O [nbr] Number of variables in current extraction list */
  const nco_bool CNV_CCM_CCSM_CF) /* I [flg] file obeys CCM/CCSM/CF conventions */
 {
   /* Purpose: Add all coordinates to extraction list
@@ -340,30 +254,32 @@ nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
     if(rcd == NC_NOERR){
       /* Dimension is coordinate. Is it already on list? */
       int lst_idx;
-      
-      for(lst_idx=0;lst_idx<*nbr_xtr;lst_idx++){
-	if(crd_id == xtr_lst[lst_idx].id) break;
+
+      for(lst_idx=0;lst_idx<*xtr_nbr;lst_idx++){
+        if(crd_id == xtr_lst[lst_idx].id) break;
       } /* end loop over lst_idx */
-      if(lst_idx == *nbr_xtr){
-	/* Coordinate is not already on the list, put it there */
-	if(*nbr_xtr == 0) xtr_lst=(nm_id_sct *)nco_malloc((*nbr_xtr+1)*sizeof(nm_id_sct)); else xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-	/* According to man page for realloc(), this should work even when xtr_lst == NULL */
-/*	xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));*/
-	xtr_lst[*nbr_xtr].nm=(char *)strdup(crd_nm);
-	xtr_lst[*nbr_xtr].id=crd_id;
-	(*nbr_xtr)++;
+      if(lst_idx == *xtr_nbr){
+        /* Coordinate is not already on the list, put it there */
+        if(*xtr_nbr == 0) xtr_lst=(nm_id_sct *)nco_malloc((*xtr_nbr+1)*sizeof(nm_id_sct)); else xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+        /* According to man page for realloc(), this should work even when xtr_lst == NULL */
+        /*	xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));*/
+        xtr_lst[*xtr_nbr].nm=(char *)strdup(crd_nm);
+        xtr_lst[*xtr_nbr].id=crd_id;
+       
+        (*xtr_nbr)++;
       } /* end if */
     } /* end if */
   } /* end loop over idx */
-  
+
   /* Detect associated coordinates specified by CF "coordinates" convention
-     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#coordinate-system */
+  http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.1/cf-conventions.html#coordinate-system */
   if(CNV_CCM_CCSM_CF){
     const char dlm_sng[]=" "; /* [sng] Delimiter string */
     const char fnc_nm[]="nco_var_lst_crd_add()"; /* [sng] Function name */
     char **crd_lst; /* [sng] 1D array of list elements */
     char *att_val;
     char att_nm[NC_MAX_NAME];
+    char var_nm[NC_MAX_NAME];
     int idx_att;
     int idx_crd;
     int idx_var;
@@ -375,72 +291,77 @@ nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
     nc_type att_typ;
 
     /* NB: Only difference between this algorithm and CF algorithm in 
-       nco_var_lst_crd_ass_add() is that this algorithm loops over 
-       all variables in file, not just over current extraction list. */ 
+    nco_var_lst_crd_ass_add() is that this algorithm loops over 
+    all variables in file, not just over current extraction list. */ 
     /* ...for each variable in file... */
     for(idx_var=0;idx_var<nbr_var;idx_var++){
       /* This assumption, praise the Lord, is valid in netCDF2, netCDF3, and netCDF4 */
       var_id=idx_var;
+
+      /* Get name current variable in current group */
+      (void)nco_inq_varname(nc_id,var_id,var_nm);
+  
       /* fxm: Functionalize remainder and call from both 
-	 nco_var_lst_crd_ass_add() and nco_var_lst_crd_add()? */
+      nco_var_lst_crd_ass_add() and nco_var_lst_crd_add()? */
       /* Find number of attributes */
       (void)nco_inq_varnatts(nc_id,var_id,&nbr_att);
       for(idx_att=0;idx_att<nbr_att;idx_att++){
-	(void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
-	/* Is attribute part of CF convention? */
-	if(!strcmp(att_nm,"coordinates")){
-	  /* Yes, get list of specified attributes */
-	  (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
-	  if(att_typ != NC_CHAR){
-	    (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
-	    return xtr_lst;
-	  } /* end if */
-	  att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
-	  if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
-	  /* NUL-terminate attribute */
-	  att_val[att_sz]='\0';
-	  /* Split list into separate coordinate names
-             Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
-	  crd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_crd);
-	  /* ...for each coordinate in "coordinates" attribute... */
-	  for(idx_crd=0;idx_crd<nbr_crd;idx_crd++){
-	    /* Verify "coordinate" exists in input file */
-	    rcd=nco_inq_varid_flg(nc_id,crd_lst[idx_crd],&crd_id);
-	    /* NB: Do not check that dimension by this name exists
-	       CF files often use "coordinates" convention to identify
-	       two-dimensional (or greater) variables which serve as coordinates.
-	       In other words, we want to allow N-D variables to work as coordinates
-	       for the purpose of adding them to the extraction list only. */
-	    if(rcd == NC_NOERR){
-	      /* idx_var2 labels inner loop over variables */
-	      /* Is "coordinate" already on extraction list? */
-	      for(idx_var2=0;idx_var2<*nbr_xtr;idx_var2++){
-		if(crd_id == xtr_lst[idx_var2].id) break;
-	      } /* end loop over idx_var2 */
-	      if(idx_var2 == *nbr_xtr){
-		/* Add coordinate to list */
-		xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-		xtr_lst[*nbr_xtr].nm=(char *)strdup(crd_lst[idx_crd]);
-		xtr_lst[*nbr_xtr].id=crd_id;
-		(*nbr_xtr)++; /* NB: Changes size of current loop! */
-		/* Continue to next coordinate in loop */
-		continue;
-	      } /* end if coordinate was not already in list */
-	    }else{ /* end if named coordinate exists in input file */
-	      if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"coordinates\" attribute of variable %s, is not present in the input file\n",prg_nm_get(),crd_lst[idx_crd],xtr_lst[idx_var].nm);
-	    } /* end else named coordinate exists in input file */
-	  } /* end loop over idx_crd */
-	  /* Free allocated memory */
-	  att_val=(char *)nco_free(att_val);
-	  crd_lst=nco_sng_lst_free(crd_lst,nbr_crd);
-	} /* !coordinates */
+        (void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
+        /* Is attribute part of CF convention? */
+        if(!strcmp(att_nm,"coordinates")){
+          /* Yes, get list of specified attributes */
+          (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
+          if(att_typ != NC_CHAR){
+            (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+            return xtr_lst;
+          } /* end if */
+          att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+          if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+          /* NUL-terminate attribute */
+          att_val[att_sz]='\0';
+          /* Split list into separate coordinate names
+          Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+          crd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_crd);
+          /* ...for each coordinate in "coordinates" attribute... */
+          for(idx_crd=0;idx_crd<nbr_crd;idx_crd++){
+            /* Verify "coordinate" exists in input file */
+            rcd=nco_inq_varid_flg(nc_id,crd_lst[idx_crd],&crd_id);
+            /* NB: Do not check that dimension by this name exists
+            CF files often use "coordinates" convention to identify
+            two-dimensional (or greater) variables which serve as coordinates.
+            In other words, we want to allow N-D variables to work as coordinates
+            for the purpose of adding them to the extraction list only. */
+            if(rcd == NC_NOERR){
+              /* idx_var2 labels inner loop over variables */
+              /* Is "coordinate" already on extraction list? */
+              for(idx_var2=0;idx_var2<*xtr_nbr;idx_var2++){
+                if(crd_id == xtr_lst[idx_var2].id) break;
+              } /* end loop over idx_var2 */
+              if(idx_var2 == *xtr_nbr){
+                /* Add coordinate to list */
+                xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+                xtr_lst[*xtr_nbr].nm=(char *)strdup(crd_lst[idx_crd]);
+                xtr_lst[*xtr_nbr].id=crd_id;
+               
+                (*xtr_nbr)++; /* NB: Changes size of current loop! */
+                /* Continue to next coordinate in loop */
+                continue;
+              } /* end if coordinate was not already in list */
+            }else{ /* end if named coordinate exists in input file */
+              if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"coordinates\" attribute of variable %s, is not present in the input file\n",nco_prg_nm_get(),crd_lst[idx_crd],xtr_lst[idx_var].nm);
+            } /* end else named coordinate exists in input file */
+          } /* end loop over idx_crd */
+          /* Free allocated memory */
+          att_val=(char *)nco_free(att_val);
+          crd_lst=nco_sng_lst_free(crd_lst,nbr_crd);
+        } /* !coordinates */
       } /* end loop over attributes */
     } /* end loop over idx_var */
   } /* !CNV_CCM_CCSM_CF for "coordinates" */
 
   /* Detect coordinate boundaries specified by CF "bounds" convention
-     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries
-     Algorithm copied with modification from "coordinates" algorithm above */
+  http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries
+  Algorithm copied with modification from "coordinates" algorithm above */
   if(CNV_CCM_CCSM_CF){
     const char dlm_sng[]=" "; /* [sng] Delimiter string */
     const char fnc_nm[]="nco_var_lst_crd_add()"; /* [sng] Function name */
@@ -459,63 +380,64 @@ nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
     nc_type att_typ;
 
     /* NB: Only difference between this algorithm and CF algorithm in 
-       nco_var_lst_crd_ass_add() is that this algorithm loops over 
-       all variables in file, not just over current extraction list. */ 
+    nco_var_lst_crd_ass_add() is that this algorithm loops over 
+    all variables in file, not just over current extraction list. */ 
     /* ...for each variable in file... */
     for(idx_var=0;idx_var<nbr_var;idx_var++){
       /* This assumption, praise the Lord, is valid in netCDF2, netCDF3, and netCDF4 */
       var_id=idx_var;
       /* fxm: Functionalize remainder and call from both 
-	 nco_var_lst_crd_ass_add() and nco_var_lst_crd_add()? */
+      nco_var_lst_crd_ass_add() and nco_var_lst_crd_add()? */
       /* Find number of attributes */
       (void)nco_inq_varnatts(nc_id,var_id,&nbr_att);
       for(idx_att=0;idx_att<nbr_att;idx_att++){
-	(void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
-	/* Is attribute part of CF convention? */
-	if(!strcmp(att_nm,"bounds")){
-	  /* Yes, get list of specified attributes */
-	  (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
-	  if(att_typ != NC_CHAR){
-	    (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
-	    return xtr_lst;
-	  } /* end if */
-	  att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
-	  if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
-	  /* NUL-terminate attribute */
-	  att_val[att_sz]='\0';
-	  /* Split list into separate coordinate names
-             Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
-	  bnd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_bnd);
-	  /* ...for each coordinate in "bounds" attribute... */
-	  for(idx_bnd=0;idx_bnd<nbr_bnd;idx_bnd++){
+        (void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
+        /* Is attribute part of CF convention? */
+        if(!strcmp(att_nm,"bounds")){
+          /* Yes, get list of specified attributes */
+          (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
+          if(att_typ != NC_CHAR){
+            (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+            return xtr_lst;
+          } /* end if */
+          att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+          if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+          /* NUL-terminate attribute */
+          att_val[att_sz]='\0';
+          /* Split list into separate coordinate names
+          Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+          bnd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_bnd);
+          /* ...for each coordinate in "bounds" attribute... */
+          for(idx_bnd=0;idx_bnd<nbr_bnd;idx_bnd++){
             if(bnd_lst[idx_bnd]==NULL)
               continue;
-	    /* Verify "bounds" exists in input file */
-	    rcd=nco_inq_varid_flg(nc_id,bnd_lst[idx_bnd],&bnd_id);
-	    /* NB: Coordinates of rank N have bounds of rank N+1 */
-	    if(rcd == NC_NOERR){
-	      /* idx_var2 labels inner loop over variables */
-	      /* Is "bound" already on extraction list? */
-	      for(idx_var2=0;idx_var2<*nbr_xtr;idx_var2++){
-		if(bnd_id == xtr_lst[idx_var2].id) break;
-	      } /* end loop over idx_var2 */
-	      if(idx_var2 == *nbr_xtr){
-		/* Add coordinate to list */
-		xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-		xtr_lst[*nbr_xtr].nm=(char *)strdup(bnd_lst[idx_bnd]);
-		xtr_lst[*nbr_xtr].id=bnd_id;
-		(*nbr_xtr)++; /* NB: Changes size of current loop! */
-		/* Continue to next coordinate in loop */
-		continue;
-	      } /* end if coordinate was not already in list */
-	    }else{ /* end if named coordinate exists in input file */
-	      if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"bounds\" attribute of variable %s, is not present in the input file\n",prg_nm_get(),bnd_lst[idx_bnd],xtr_lst[idx_var].nm);
-	    } /* end else named coordinate exists in input file */
-	  } /* end loop over idx_bnd */
-	  /* Free allocated memory */
-	  att_val=(char *)nco_free(att_val);
-	  bnd_lst=nco_sng_lst_free(bnd_lst,nbr_bnd);
-	} /* !coordinates */
+            /* Verify "bounds" exists in input file */
+            rcd=nco_inq_varid_flg(nc_id,bnd_lst[idx_bnd],&bnd_id);
+            /* NB: Coordinates of rank N have bounds of rank N+1 */
+            if(rcd == NC_NOERR){
+              /* idx_var2 labels inner loop over variables */
+              /* Is "bound" already on extraction list? */
+              for(idx_var2=0;idx_var2<*xtr_nbr;idx_var2++){
+                if(bnd_id == xtr_lst[idx_var2].id) break;
+              } /* end loop over idx_var2 */
+              if(idx_var2 == *xtr_nbr){
+                /* Add coordinate to list */
+                xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+                xtr_lst[*xtr_nbr].nm=(char *)strdup(bnd_lst[idx_bnd]);
+                xtr_lst[*xtr_nbr].id=bnd_id;
+               
+                (*xtr_nbr)++; /* NB: Changes size of current loop! */
+                /* Continue to next coordinate in loop */
+                continue;
+              } /* end if coordinate was not already in list */
+            }else{ /* end if named coordinate exists in input file */
+              if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"bounds\" attribute of variable %s, is not present in the input file\n",nco_prg_nm_get(),bnd_lst[idx_bnd],xtr_lst[idx_var].nm);
+            } /* end else named coordinate exists in input file */
+          } /* end loop over idx_bnd */
+          /* Free allocated memory */
+          att_val=(char *)nco_free(att_val);
+          bnd_lst=nco_sng_lst_free(bnd_lst,nbr_bnd);
+        } /* !coordinates */
       } /* end loop over attributes */
     } /* end loop over idx_var */
   } /* !CNV_CCM_CCSM_CF for "bounds" */
@@ -527,7 +449,7 @@ nm_id_sct * /* O [sct] Extraction list */
 nco_var_lst_crd_ass_add /* [fnc] Add to extraction list all coordinates associated with extracted variables */
 (const int nc_id, /* I netCDF file ID */
  nm_id_sct *xtr_lst, /* I/O current extraction list (destroyed) */
- int * const nbr_xtr, /* I/O number of variables in current extraction list */
+ int * const xtr_nbr, /* I/O number of variables in current extraction list */
  const nco_bool CNV_CCM_CCSM_CF) /* I [flg] file obeys CCM/CCSM/CF conventions */
 {
   /* Purpose: Add coordinates associated with variables to extraction list */
@@ -561,32 +483,33 @@ nco_var_lst_crd_ass_add /* [fnc] Add to extraction list all coordinates associat
     rcd=nco_inq_varid_flg(nc_id,dmn_nm,&crd_id);
     if(rcd == NC_NOERR){ /* Valid coordinate (same name of dimension and variable) */
       /* Is coordinate already on extraction list? */
-      for(idx_var=0;idx_var<*nbr_xtr;idx_var++){
-	if(crd_id == xtr_lst[idx_var].id) break;
+      for(idx_var=0;idx_var<*xtr_nbr;idx_var++){
+        if(crd_id == xtr_lst[idx_var].id) break;
       } /* end loop over idx_var */
-      if(idx_var == *nbr_xtr){
-	/* ...coordinate is not on list, is it associated with any extracted variables?... */
-	for(idx_var=0;idx_var<*nbr_xtr;idx_var++){
-	  /* Get number of dimensions and dimension IDs for variable */
-	  (void)nco_inq_var(nc_id,xtr_lst[idx_var].id,(char *)NULL,(nc_type *)NULL,&nbr_var_dim,dmn_id,(int *)NULL);
-	  for(idx_var_dim=0;idx_var_dim<nbr_var_dim;idx_var_dim++){
-	    if(idx_dmn == dmn_id[idx_var_dim]) break;
-	  } /* end loop over idx_var_dim */
-	  if(idx_var_dim != nbr_var_dim){
-	    /* Add coordinate to list */
-	    xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-	    xtr_lst[*nbr_xtr].nm=(char *)strdup(dmn_nm);
-	    xtr_lst[*nbr_xtr].id=crd_id;
-	    (*nbr_xtr)++; /* NB: Changes size of current loop! */
-	    break;
-	  } /* end if */
-	} /* end loop over idx_var */
+      if(idx_var == *xtr_nbr){
+        /* ...coordinate is not on list, is it associated with any extracted variables?... */
+        for(idx_var=0;idx_var<*xtr_nbr;idx_var++){
+          /* Get number of dimensions and dimension IDs for variable */
+          (void)nco_inq_var(nc_id,xtr_lst[idx_var].id,(char *)NULL,(nc_type *)NULL,&nbr_var_dim,dmn_id,(int *)NULL);
+          for(idx_var_dim=0;idx_var_dim<nbr_var_dim;idx_var_dim++){
+            if(idx_dmn == dmn_id[idx_var_dim]) break;
+          } /* end loop over idx_var_dim */
+          if(idx_var_dim != nbr_var_dim){
+            /* Add coordinate to list */
+            xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+            xtr_lst[*xtr_nbr].nm=(char *)strdup(dmn_nm);
+            xtr_lst[*xtr_nbr].id=crd_id;
+            
+            (*xtr_nbr)++; /* NB: Changes size of current loop! */
+            break;
+          } /* end if */
+        } /* end loop over idx_var */
       } /* end if coordinate was not already in list */
     } /* end if dimension is coordinate */
   } /* end loop over idx_dmn */
-  
+
   /* Detect associated coordinates specified by CF "coordinates" convention
-     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system */
+  http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#coordinate-system */
   if(CNV_CCM_CCSM_CF){
     const char dlm_sng[]=" "; /* [sng] Delimiter string */
     const char fnc_nm[]="nco_var_lst_crd_ass_add()"; /* [sng] Function name */
@@ -603,69 +526,70 @@ nco_var_lst_crd_ass_add /* [fnc] Add to extraction list all coordinates associat
     nc_type att_typ;
 
     /* ...for each variable in extraction list... */
-    for(idx_var=0;idx_var<*nbr_xtr;idx_var++){
+    for(idx_var=0;idx_var<*xtr_nbr;idx_var++){
       /* Eschew indirection */
       var_id=xtr_lst[idx_var].id;
       /* Find number of attributes */
       (void)nco_inq_varnatts(nc_id,var_id,&nbr_att);
       for(idx_att=0;idx_att<nbr_att;idx_att++){
-	(void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
-	/* Is attribute part of CF convention? */
-	if(!strcmp(att_nm,"coordinates")){
-	  /* Yes, get list of specified attributes */
-	  (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
-	  if(att_typ != NC_CHAR){
-	    (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
-	    return xtr_lst;
-	  } /* end if */
-	  att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
-	  if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
-	  /* NUL-terminate attribute */
-	  att_val[att_sz]='\0';
-	  /* Split list into separate coordinate names
-             Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
-	  crd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_crd);
-	  /* ...for each coordinate in "coordinates" attribute... */
-	  for(idx_crd=0;idx_crd<nbr_crd;idx_crd++){
+        (void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
+        /* Is attribute part of CF convention? */
+        if(!strcmp(att_nm,"coordinates")){
+          /* Yes, get list of specified attributes */
+          (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
+          if(att_typ != NC_CHAR){
+            (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+            return xtr_lst;
+          } /* end if */
+          att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+          if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+          /* NUL-terminate attribute */
+          att_val[att_sz]='\0';
+          /* Split list into separate coordinate names
+          Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+          crd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_crd);
+          /* ...for each coordinate in "coordinates" attribute... */
+          for(idx_crd=0;idx_crd<nbr_crd;idx_crd++){
             if(crd_lst[idx_crd]==NULL)
               continue;
-	    /* Verify "coordinate" exists in input file */
-	    rcd=nco_inq_varid_flg(nc_id,crd_lst[idx_crd],&crd_id);
-	    /* NB: Do not check that dimension by this name exists
-	       CF files often use "coordinates" convention to identify
-	       two-dimensional (or greater) variables which serve as coordinates.
-	       In other words, we want to allow N-D variables to work as coordinates
-	       for the purpose of adding them to the extraction list only. */
-	    if(rcd == NC_NOERR){
-	      /* idx_var2 labels inner loop over variables */
-	      /* Is "coordinate" already on extraction list? */
-	      for(idx_var2=0;idx_var2<*nbr_xtr;idx_var2++){
-		if(crd_id == xtr_lst[idx_var2].id) break;
-	      } /* end loop over idx_var2 */
-	      if(idx_var2 == *nbr_xtr){
-		/* Add coordinate to list */
-		xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-		xtr_lst[*nbr_xtr].nm=(char *)strdup(crd_lst[idx_crd]);
-		xtr_lst[*nbr_xtr].id=crd_id;
-		(*nbr_xtr)++; /* NB: Changes size of current loop! */
-		/* Continue to next coordinate in loop */
-		continue;
-	      } /* end if coordinate was not already in list */
-	    }else{ /* end if named coordinate exists in input file */
-	      if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"coordinates\" attribute of variable %s, is not present in the input file\n",prg_nm_get(),crd_lst[idx_crd],xtr_lst[idx_var].nm);
-	    } /* end else named coordinate exists in input file */
-	  } /* end loop over idx_crd */
-	  /* Free allocated memory */
-	  att_val=(char *)nco_free(att_val);
-	  crd_lst=nco_sng_lst_free(crd_lst,nbr_crd);
-	} /* !coordinates */
+            /* Verify "coordinate" exists in input file */
+            rcd=nco_inq_varid_flg(nc_id,crd_lst[idx_crd],&crd_id);
+            /* NB: Do not check that dimension by this name exists
+            CF files often use "coordinates" convention to identify
+            two-dimensional (or greater) variables which serve as coordinates.
+            In other words, we want to allow N-D variables to work as coordinates
+            for the purpose of adding them to the extraction list only. */
+            if(rcd == NC_NOERR){
+              /* idx_var2 labels inner loop over variables */
+              /* Is "coordinate" already on extraction list? */
+              for(idx_var2=0;idx_var2<*xtr_nbr;idx_var2++){
+                if(crd_id == xtr_lst[idx_var2].id) break;
+              } /* end loop over idx_var2 */
+              if(idx_var2 == *xtr_nbr){
+                /* Add coordinate to list */
+                xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+                xtr_lst[*xtr_nbr].nm=(char *)strdup(crd_lst[idx_crd]);
+                xtr_lst[*xtr_nbr].id=crd_id;
+               
+                (*xtr_nbr)++; /* NB: Changes size of current loop! */
+                /* Continue to next coordinate in loop */
+                continue;
+              } /* end if coordinate was not already in list */
+            }else{ /* end if named coordinate exists in input file */
+              if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"coordinates\" attribute of variable %s, is not present in the input file\n",nco_prg_nm_get(),crd_lst[idx_crd],xtr_lst[idx_var].nm);
+            } /* end else named coordinate exists in input file */
+          } /* end loop over idx_crd */
+          /* Free allocated memory */
+          att_val=(char *)nco_free(att_val);
+          crd_lst=nco_sng_lst_free(crd_lst,nbr_crd);
+        } /* !coordinates */
       } /* end loop over attributes */
     } /* end loop over idx_var */
   } /* !CNV_CCM_CCSM_CF for "coordinates" */
 
   /* Detect coordinate boundaries specified by CF "bounds" convention
-     http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries
-     Algorithm copied with modification from "coordinates" algorithm above */
+  http://cf-pcmdi.llnl.gov/documents/cf-conventions/1.5/cf-conventions.html#cell-boundaries
+  Algorithm copied with modification from "coordinates" algorithm above */
   if(CNV_CCM_CCSM_CF){
     const char dlm_sng[]=" "; /* [sng] Delimiter string */
     const char fnc_nm[]="nco_var_lst_crd_ass_add()"; /* [sng] Function name */
@@ -683,58 +607,59 @@ nco_var_lst_crd_ass_add /* [fnc] Add to extraction list all coordinates associat
     nc_type att_typ;
 
     /* ...for each variable in extraction list... */
-    for(idx_var=0;idx_var<*nbr_xtr;idx_var++){
+    for(idx_var=0;idx_var<*xtr_nbr;idx_var++){
       /* Eschew indirection */
       var_id=xtr_lst[idx_var].id;
       /* Find number of attributes */
       (void)nco_inq_varnatts(nc_id,var_id,&nbr_att);
       for(idx_att=0;idx_att<nbr_att;idx_att++){
-	(void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
-	/* Is attribute part of CF convention? */
-	if(!strcmp(att_nm,"bounds")){
-	  /* Yes, get list of specified attributes */
-	  (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
-	  if(att_typ != NC_CHAR){
-	    (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
-	    return xtr_lst;
-	  } /* end if */
-	  att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
-	  if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
-	  /* NUL-terminate attribute */
-	  att_val[att_sz]='\0';
-	  /* Split list into separate coordinate names
-             Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
-	  bnd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_bnd);
-	  /* ...for each coordinate in "bounds" attribute... */
-	  for(idx_bnd=0;idx_bnd<nbr_bnd;idx_bnd++){
+        (void)nco_inq_attname(nc_id,var_id,idx_att,att_nm);
+        /* Is attribute part of CF convention? */
+        if(!strcmp(att_nm,"bounds")){
+          /* Yes, get list of specified attributes */
+          (void)nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
+          if(att_typ != NC_CHAR){
+            (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,xtr_lst[idx_var].nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+            return xtr_lst;
+          } /* end if */
+          att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+          if(att_sz > 0) (void)nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+          /* NUL-terminate attribute */
+          att_val[att_sz]='\0';
+          /* Split list into separate coordinate names
+          Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+          bnd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_bnd);
+          /* ...for each coordinate in "bounds" attribute... */
+          for(idx_bnd=0;idx_bnd<nbr_bnd;idx_bnd++){
             if(bnd_lst[idx_bnd]==NULL)
               continue;
-	    /* Verify "bounds" exists in input file */
-	    rcd=nco_inq_varid_flg(nc_id,bnd_lst[idx_bnd],&bnd_id);
-	    /* NB: Coordinates of rank N have bounds of rank N+1 */
-	    if(rcd == NC_NOERR){
-	      /* idx_var2 labels inner loop over variables */
-	      /* Is "bound" already on extraction list? */
-	      for(idx_var2=0;idx_var2<*nbr_xtr;idx_var2++){
-		if(bnd_id == xtr_lst[idx_var2].id) break;
-	      } /* end loop over idx_var2 */
-	      if(idx_var2 == *nbr_xtr){
-		/* Add coordinate to list */
-		xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*nbr_xtr+1)*sizeof(nm_id_sct));
-		xtr_lst[*nbr_xtr].nm=(char *)strdup(bnd_lst[idx_bnd]);
-		xtr_lst[*nbr_xtr].id=bnd_id;
-		(*nbr_xtr)++; /* NB: Changes size of current loop! */
-		/* Continue to next coordinate in loop */
-		continue;
-	      } /* end if coordinate was not already in list */
-	    }else{ /* end if named coordinate exists in input file */
-	      if(dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"bounds\" attribute of variable %s, is not present in the input file\n",prg_nm_get(),bnd_lst[idx_bnd],xtr_lst[idx_var].nm);
-	    } /* end else named coordinate exists in input file */
-	  } /* end loop over idx_bnd */
-	  /* Free allocated memory */
-	  att_val=(char *)nco_free(att_val);
-	  bnd_lst=nco_sng_lst_free(bnd_lst,nbr_bnd);
-	} /* !coordinates */
+            /* Verify "bounds" exists in input file */
+            rcd=nco_inq_varid_flg(nc_id,bnd_lst[idx_bnd],&bnd_id);
+            /* NB: Coordinates of rank N have bounds of rank N+1 */
+            if(rcd == NC_NOERR){
+              /* idx_var2 labels inner loop over variables */
+              /* Is "bound" already on extraction list? */
+              for(idx_var2=0;idx_var2<*xtr_nbr;idx_var2++){
+                if(bnd_id == xtr_lst[idx_var2].id) break;
+              } /* end loop over idx_var2 */
+              if(idx_var2 == *xtr_nbr){
+                /* Add coordinate to list */
+                xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,(*xtr_nbr+1)*sizeof(nm_id_sct));
+                xtr_lst[*xtr_nbr].nm=(char *)strdup(bnd_lst[idx_bnd]);
+                xtr_lst[*xtr_nbr].id=bnd_id;
+              
+                (*xtr_nbr)++; /* NB: Changes size of current loop! */
+                /* Continue to next coordinate in loop */
+                continue;
+              } /* end if coordinate was not already in list */
+            }else{ /* end if named coordinate exists in input file */
+              if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stderr,"%s: INFO Variable %s, specified in the \"bounds\" attribute of variable %s, is not present in the input file\n",nco_prg_nm_get(),bnd_lst[idx_bnd],xtr_lst[idx_var].nm);
+            } /* end else named coordinate exists in input file */
+          } /* end loop over idx_bnd */
+          /* Free allocated memory */
+          att_val=(char *)nco_free(att_val);
+          bnd_lst=nco_sng_lst_free(bnd_lst,nbr_bnd);
+        } /* !coordinates */
       } /* end loop over attributes */
     } /* end loop over idx_var */
   } /* !CNV_CCM_CCSM_CF for "bounds" */
@@ -748,7 +673,7 @@ nco_var_lst_crd_xcl /* [fnc] Exclude given coordinates from extraction list */
 (const int nc_id, /* I [id] netCDF file ID */
  const int dmn_id, /* I [id] Dimension ID of coordinate to remove from extraction list */
  nm_id_sct *xtr_lst, /* I/O [sct] Current extraction list (destroyed) */
- int * const nbr_xtr) /* I/O [nbr] Number of variables in extraction list */
+ int * const xtr_nbr) /* I/O [nbr] Number of variables in extraction list */
 {
   /* Purpose: Modify extraction list to exclude coordinate, if any, associated with given dimension ID */
   
@@ -764,21 +689,21 @@ nco_var_lst_crd_xcl /* [fnc] Exclude given coordinates from extraction list */
   rcd=nco_inq_varid_flg(nc_id,crd_nm,&crd_id);
   if(rcd == NC_NOERR){
     /* Is coordinate on extraction list? */
-    for(idx=0;idx<*nbr_xtr;idx++){
+    for(idx=0;idx<*xtr_nbr;idx++){
       if(xtr_lst[idx].id == crd_id) break;
     } /* end loop over idx */
-    if(idx != *nbr_xtr){
+    if(idx != *xtr_nbr){
       nm_id_sct *var_lst_tmp;
       
-      var_lst_tmp=(nm_id_sct *)nco_malloc(*nbr_xtr*sizeof(nm_id_sct));
+      var_lst_tmp=(nm_id_sct *)nco_malloc(*xtr_nbr*sizeof(nm_id_sct));
       /* Copy the extract list to the temporary extract list and reallocate the extract list */
-      (void)memcpy((void *)var_lst_tmp,(void *)xtr_lst,*nbr_xtr*sizeof(nm_id_sct));
-      (*nbr_xtr)--;
-      xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,*nbr_xtr*sizeof(nm_id_sct));
+      (void)memcpy((void *)var_lst_tmp,(void *)xtr_lst,*xtr_nbr*sizeof(nm_id_sct));
+      (*xtr_nbr)--;
+      xtr_lst=(nm_id_sct *)nco_realloc((void *)xtr_lst,*xtr_nbr*sizeof(nm_id_sct));
       /* Collapse the temporary extract list into the permanent list by copying 
 	 all but the coordinate. NB: the ordering of the list is conserved. */
       (void)memcpy((void *)xtr_lst,(void *)var_lst_tmp,idx*sizeof(nm_id_sct));
-      (void)memcpy((void *)(xtr_lst+idx),(void *)(var_lst_tmp+idx+1),(*nbr_xtr-idx)*sizeof(nm_id_sct));
+      (void)memcpy((void *)(xtr_lst+idx),(void *)(var_lst_tmp+idx+1),(*xtr_nbr-idx)*sizeof(nm_id_sct));
       /* Free the memory for coordinate name in the extract list before losing the pointer */
       var_lst_tmp[idx].nm=(char *)nco_free(var_lst_tmp[idx].nm);
       var_lst_tmp=(nm_id_sct *)nco_free(var_lst_tmp);
@@ -793,7 +718,7 @@ void
 nco_var_lst_convert /* [fnc] Make variable structure list from variable name ID list */
 (const int nc_id, /* I [enm] netCDF file ID */
  nm_id_sct *xtr_lst, /* I [sct] Current extraction list (destroyed) */
- const int nbr_xtr, /* I [nbr] Number of variables in input file */
+ const int xtr_nbr, /* I [nbr] Number of variables in input file */
  dmn_sct * const * const dim, /* I [sct] Dimensions associated with input variable list */
  const int nbr_dmn_xtr, /* I [nbr] Number of dimensions in list  */
  var_sct *** const var_ptr, /* O [sct] Variable list (for input file) */
@@ -807,11 +732,11 @@ nco_var_lst_convert /* [fnc] Make variable structure list from variable name ID
   var_sct **var;
   var_sct **var_out;
 
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
+  var=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
 
   /* Fill-in variable structure list for all extracted variables */
-  for(idx=0;idx<nbr_xtr;idx++){
+  for(idx=0;idx<xtr_nbr;idx++){
     var[idx]=nco_var_fll(nc_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
@@ -823,12 +748,106 @@ nco_var_lst_convert /* [fnc] Make variable structure list from variable name ID
 
 } /* end nco_var_lst_convert() */
 
+
+
+int /* O [enm] Return code */
+nco_var_lst_mrg /* [fnc] Merge two variable lists into same order */
+(var_sct *** var_1_ptr, /* I/O [sct] Variable list 1 */
+ var_sct *** var_2_ptr, /* I/O [sct] Variable list 2 */
+ int * const var_nbr_1, /* I/O [nbr] Number of variables in list 1 */
+ int * const var_nbr_2) /* I/O [nbr] Number of variables in list 2 */
+{
+  /* Purpose: Merge two variable lists into same order
+
+     Routine design is open-ended with maximum flexibility
+     Initial functionality will simply sort list two into list one order and
+     destroy original (un-merged) list two on output
+     Refinements could include changing number of variables in each list
+     This would allow asymmetric list merges
+
+     Routine is only used by ncbo to synchronize processed variable list
+     Until 20070628, routine did not change var_nbr_2
+     As of 20070628 (NCO 3.9.1) routine shrinks var_nbr_2 to var_nbr_1
+     In effect this sets nbr_var_prc_2:=nbr_var_prc_1 in ncbo
+     This allows file_2 to contain variables not in file_1
+     Routine now warns about processed variable list "truncation" 
+     "asymmetric" list processing should now work iff lst_2 is superset of lst_1
+
+     Until 20070707 lst_2 had to be superset of lst_1
+     Next desired functionality is to copy variables only in lst_1 or lst_2 as
+     fixed variables to output file, i.e., do not subtract them.
+     May only be possible with lst_1 variables
+     At minimum, want to print which variables are _only_ in which file
+     This would make it easier for user to give -x -v var_lst argument which
+     would make files subtractable */
+
+  const char fnc_nm[]="nco_var_lst_mrg()"; /* [sng] Function name */
+
+  int idx_1;
+  int idx_2;
+  int rcd=0; /* [rcd] Return code */
+
+  var_sct **var_1;
+  var_sct **var_2;
+  var_sct **var_out;
+
+  var_1=*var_1_ptr;
+  var_2=*var_2_ptr;
+
+  var_out=(var_sct **)nco_malloc(NC_MAX_VARS*sizeof(var_sct *));
+
+  /* ...For each variable in first list... */
+  for(idx_1=0;idx_1<*var_nbr_1;idx_1++){
+    /* ...search through second list... */
+    for(idx_2=0;idx_2<*var_nbr_2;idx_2++){
+      /* ...until variable with same name is found... */
+      if(!strcmp(var_1[idx_1]->nm,var_2[idx_2]->nm)) {
+        break; /* ...then search no further... */
+      }
+    } /* end loop over idx_2 */
+    /* ...and if variable was not found in second list... */
+    if(idx_2 == *var_nbr_2){
+      (void)fprintf(stderr,"%s: ERROR %s variable \"%s\" is in file one and not in file two, i.e., the user is attempting to difference incommensurate sets of variables. %s allows the second file to have more process-able (e.g., differencable) variables than the first file, but disallows the reverse. All process-able variables in the first file must be in the second file (or manually excluded from the operation with the '-x' switch).\n",nco_prg_nm_get(),fnc_nm,var_1[idx_1]->nm,nco_prg_nm [...]
+      nco_exit(EXIT_FAILURE);
+    } /* end if variable was not found in second list */
+    /* ...otherwise assign variable to correct slot in output list */
+    var_out[idx_1]=var_2[idx_2];
+  } /* end loop over idx_1 */
+
+  /* Asymmetric lists */
+  if(*var_nbr_2 > *var_nbr_1){
+    if(nco_dbg_lvl_get() > nco_dbg_quiet){
+      const int orphan_nbr=*var_nbr_2-*var_nbr_1;
+      int orphan_idx=0;
+      (void)fprintf(stderr,"%s: INFO %s detects that file two contains %d more \"process-able\" (e.g., difference-able) variable%s than file one. Processable variables exclude those (often coordinates) that are intended to pass through an operator unchanged. The following variable%s present and/or process-able only in file two: ",nco_prg_nm_get(),fnc_nm,orphan_nbr,(orphan_nbr > 1) ? "s" : "",(orphan_nbr > 1) ? "s are" : " is");
+      for(idx_2=0;idx_2<*var_nbr_2;idx_2++){ 
+	for(idx_1=0;idx_1<*var_nbr_1;idx_1++)
+	  if(!strcmp(var_out[idx_1]->nm,var_2[idx_2]->nm)) break;
+	/* Print name of variable in list two and not in var_out */  
+	if(idx_1 == *var_nbr_1){
+	  orphan_idx++;
+	  (void)fprintf(stderr,"%s%s",var_2[idx_2]->nm,(orphan_idx < orphan_nbr) ? ", " : ".");
+	} /* end if orphan */
+      } /* end loop over idx_2 */ 
+      (void)fprintf(stderr," If %s in file one then this notice may be safely ignored. Otherwise, %s will do no harm and will not appear in the output file.\n",(orphan_nbr > 1) ? "these variables are all scalar averages of the coordinate variables with the same names" : "this variable is a scalar-average of the coordinate variable with the same name",(orphan_nbr > 1) ? "these variables appear to be orphans. They" : "this variable appears to be an orphan. It");
+    } /* endif dbg */
+    *var_nbr_2=*var_nbr_1;
+  } /* end if asymmetric and debug */
+
+  /* Free un-merged list before overwriting with merged list */
+  var_2=(var_sct **)nco_free(var_2);
+  *var_2_ptr=(var_sct **)nco_realloc(var_out,*var_nbr_2*sizeof(var_sct *));
+
+  return rcd;
+} /* end nco_var_lst_mrg() */
+
 void
 nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
 (var_sct * const * const var, /* I [sct] Variable list (input file) */
  var_sct * const * const var_out, /* I [sct] Variable list (output file) */
  const int nbr_var, /* I [nbr] Number of variables */
  const nco_bool CNV_CCM_CCSM_CF, /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD, /* [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
  const int nco_pck_map, /* I [enm] Packing map */
  const int nco_pck_plc, /* I [enm] Packing policy */
  CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl), /* I [sct] Dimensions not allowed in fixed variables */
@@ -838,88 +857,119 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
  int * const nbr_var_fix, /* O [nbr] Number of fixed variables */
  var_sct *** const var_prc_ptr, /* O [sct] Processed-variables (input file) */
  var_sct *** const var_prc_out_ptr, /* O [sct] Processed-variables (output file) */
- int * const nbr_var_prc) /* O [nbr] Number of processed variables */
+ int * const nbr_var_prc, /* O [nbr] Number of processed variables */
+ const trv_tbl_sct * const trv_tbl)   /* I [sct] Traversal table */
 {
   /* Purpose: Divide two input lists into output lists based on program type */
 
   char *var_nm=NULL_CEWI;
 
   int idx;
-  int prg_id; /* Program key */
-
-  enum op_typ{
-    fix, /* 0 [enm] Fix variable (operator alters neither data nor metadata) */
-    prc /* 1 [enm] Process variable (operator may alter data or metadata) */
-  }; /* end op_typ */
+  int nco_prg_id; /* Program key */
 
   int idx_dmn;
   int idx_xcl;
   int var_op_typ[NC_MAX_VARS];
 
+  nco_bool is_sz_rnk_prv_rth_opr; /* [flg] Size- and rank-preserving operator */
   nco_bool var_typ_fnk=False; /* [flg] Variable type is too funky for arithmetic */ /* CEWI */
 
-  nc_type var_type=NC_NAT; /* NC_NAT present in netcdf.h version netCDF 3.5+ */
+  nc_type var_typ=NC_NAT; /* NC_NAT present in netcdf.h version netCDF 3.5+ */
 
   var_sct **var_fix;
   var_sct **var_fix_out;
   var_sct **var_prc;
   var_sct **var_prc_out;
 
-  prg_id=prg_get(); /* Program key */
+  trv_sct *var_trv; /* [sct] GTT variable */
+
+  nco_prg_id=nco_prg_id_get(); /* Program key */
 
   /* Allocate space for too many structures first then realloc() appropriately
-     It is calling function's responsibility to free() this memory */
+  It is calling function's responsibility to free() this memory */
   var_fix=(var_sct **)nco_malloc(NC_MAX_VARS*sizeof(var_sct *));
   var_fix_out=(var_sct **)nco_malloc(NC_MAX_VARS*sizeof(var_sct *));
   var_prc=(var_sct **)nco_malloc(NC_MAX_VARS*sizeof(var_sct *));
   var_prc_out=(var_sct **)nco_malloc(NC_MAX_VARS*sizeof(var_sct *));
 
+  is_sz_rnk_prv_rth_opr=nco_is_sz_rnk_prv_rth_opr(nco_prg_id,nco_pck_plc);
+
   /* Find operation type for each variable: for now this is either fix or prc */
   for(idx=0;idx<nbr_var;idx++){
-    
-    /* Initialize operation type to processed. Change to fixed where warranted later. */
-    var_op_typ[idx]=prc;
-    var_nm=var[idx]->nm;
-    var_type=var[idx]->type;
-    if((var_type == NC_BYTE) || (var_type == NC_UBYTE) || (var_type == NC_CHAR) || (var_type == NC_STRING)) var_typ_fnk=True; else var_typ_fnk=False;
 
-    /* Override operation type based depending on variable properties and program */
-    switch(prg_id){
+    /* ncge case */
+    if (nco_prg_id == ncge){
+      /* Mark all variables as fixed and later detect ensemble variable in table to mark as processed */
+      var_op_typ[idx]=fix_typ;
+    }else{
+      /* Initialize operation type to processed. Change to fixed where warranted later. */
+      var_op_typ[idx]=prc_typ;
+    } /* ! ncge case */
+
+    var_nm=var[idx]->nm;
+    var_typ=var[idx]->type;
+    /* Until 20131005, NCO default was to consider NC_BYTE and NC_UBYTE as funky, too */
+    if((var_typ == NC_CHAR) || (var_typ == NC_STRING)) var_typ_fnk=True; else var_typ_fnk=False;
+
+    /* Many operators should not process coordinate variables, or auxiliary coordinate variables (lat, lon, time, latixy, longxy, ...) and bounds (lat_bnds, lon_bnds, ...)
+       20130112: As of today set is_crd_var true in nco_var_fll() when either of these conditions is true 
+       so no longer need to specify these conditions separately. 
+       Keep this old code here as a reminder that is_crd_var also incorporates these conditions
+       is_spc_in_crd_att=nco_is_spc_in_crd_att(var[idx]->nc_id,var[idx]->id);
+       is_spc_in_bnd_att=nco_is_spc_in_bnd_att(var[idx]->nc_id,var[idx]->id); */
+
+    /* Override operation type depending on variable properties and program */
+    switch(nco_prg_id){
     case ncap:
-      var_op_typ[idx]=fix;
+      var_op_typ[idx]=fix_typ;
       break;
     case ncatted:
       /* Do nothing */
       break;
     case ncbo:
-      if(var[idx]->is_crd_var || var_typ_fnk) var_op_typ[idx]=fix;
+      if(var[idx]->is_crd_var || var_typ_fnk) var_op_typ[idx]=fix_typ;
       break;
-    case ncea:
-      if(var[idx]->is_crd_var || var_typ_fnk) var_op_typ[idx]=fix;
+    case ncfe:
+      if(var[idx]->is_crd_var || var_typ_fnk) var_op_typ[idx]=fix_typ;
       break;
     case ncecat:
-      if(var[idx]->is_crd_var) var_op_typ[idx]=fix;
+      /* Allow ncecat to concatenate funky variables */
+      if(var[idx]->is_crd_var) var_op_typ[idx]=fix_typ;
       break;
     case ncflint:
-      if(var_typ_fnk || (var[idx]->is_crd_var && !var[idx]->is_rec_var)) var_op_typ[idx]=fix;
+      /* Allow ncflint to interpolate record coordinates, not fixed coordinates ... */
+      if((var[idx]->is_crd_var || var_typ_fnk) && !var[idx]->is_rec_var) var_op_typ[idx]=fix_typ;
+      /* ...unless the --fix_rec_crd switch was used to fix record coordinates as well ... */
+      if((var[idx]->is_crd_var && var[idx]->is_rec_var && FIX_REC_CRD)) var_op_typ[idx]=fix_typ;
       break;
     case ncks:
       /* Do nothing */
       break;
     case ncra:
-      if(!var[idx]->is_rec_var) var_op_typ[idx]=fix;
+      if(!var[idx]->is_rec_var) var_op_typ[idx]=fix_typ;
+      break;
+    case ncge:
+      /* Obtain variable GTT object using full variable name */
+      var_trv=trv_tbl_var_nm_fll(var[idx]->nm_fll,trv_tbl);
+      /* If variable is template, mark as processed */
+      if (var_trv->flg_nsm_tpl && var_trv->nco_typ == nco_obj_typ_var){
+        assert(var_trv->flg_nsm_mbr == True);
+        var_op_typ[idx]=prc_typ;
+      }
       break;
     case ncrcat:
-      if(!var[idx]->is_rec_var) var_op_typ[idx]=fix;
+      if(!var[idx]->is_rec_var) var_op_typ[idx]=fix_typ;
       break;
     case ncpdq:
     case ncwa:
       if(nco_pck_plc != nco_pck_plc_nil){
-	/* Packing operation requested
-	   Variables are processed for packing/unpacking operator unless ... */
-	if(
+        /* Packing operation requested
+	   Variables are processed for packing/unpacking operator unless... */
+        if(
 	   /* ...packing coordinate variables has few benefits... */
-	   (var[idx]->is_crd_var) ||
+	   (var[idx]->is_crd_var && !(nco_pck_plc == nco_pck_plc_upk) ) ||
+	   /* unless if it's NOT a record variable and the policy is unpack 
+	      20120711. nco: ncpdq unpack coordinate variables */     
 	   /* ...unpacking requested for unpacked variable... */
 	   (nco_pck_plc == nco_pck_plc_upk && !var[idx]->pck_ram) ||
 	   /* ...or packing unpacked requested and variable is already packed... */
@@ -930,40 +980,39 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
 	   (
 	    /* ...any type of packing requested... */
 	    (nco_pck_plc == nco_pck_plc_all_new_att || 
-	    nco_pck_plc == nco_pck_plc_all_xst_att || 
-	    nco_pck_plc == nco_pck_plc_xst_new_att) &&
+	     nco_pck_plc == nco_pck_plc_all_xst_att || 
+	     nco_pck_plc == nco_pck_plc_xst_new_att) &&
 	    /* ...yet map does not allow (re-)packing... */
 	    !nco_pck_plc_typ_get(nco_pck_map,var[idx]->typ_upk,(nc_type *)NULL)
 	    )
 	   )
-	  var_op_typ[idx]=fix;
+          var_op_typ[idx]=fix_typ;
       }else{ /* endif packing operation requested */
-	/* Process every variable containing an altered (averaged, re-ordered, reversed) dimension */
-	for(idx_dmn=0;idx_dmn<var[idx]->nbr_dim;idx_dmn++){
-	  for(idx_xcl=0;idx_xcl<nbr_dmn_xcl;idx_xcl++){
-	    if(var[idx]->dim[idx_dmn]->id == dmn_xcl[idx_xcl]->id) break;
-	  } /* end loop over idx_xcl */
-	  if(idx_xcl != nbr_dmn_xcl){
-	    var_op_typ[idx]=prc;
-	    break;
-	  } /* end if */
-	} /* end loop over idx_dmn */
-	/* Fix variables with no altered (averaged, re-ordered, reversed) dimensions */
-	if(idx_dmn == var[idx]->nbr_dim) var_op_typ[idx]=fix;
+        /* Process every variable containing an altered (averaged, re-ordered, reversed) dimension */
+        for(idx_dmn=0;idx_dmn<var[idx]->nbr_dim;idx_dmn++){
+          for(idx_xcl=0;idx_xcl<nbr_dmn_xcl;idx_xcl++){
+            if(var[idx]->dim[idx_dmn]->id == dmn_xcl[idx_xcl]->id) break;
+          } /* end loop over idx_xcl */
+          if(idx_xcl != nbr_dmn_xcl){
+            var_op_typ[idx]=prc_typ;
+            break;
+          } /* end if */
+        } /* end loop over idx_dmn */
+        /* Fix variables with no altered (averaged, re-ordered, reversed) dimensions */
+        if(idx_dmn == var[idx]->nbr_dim) var_op_typ[idx]=fix_typ;
       } /* endif averaging or re-ordering */
       break;
     default: nco_dfl_case_prg_id_err(); break;
     } /* end switch */
-    
+
     /* Previous case-statement does not account for variables with no data */
-    if(nco_is_rth_opr(prg_id))
-      if(var[idx]->sz == 0L)
-	var_op_typ[idx]=fix;
+    if(nco_is_rth_opr(nco_prg_id))
+      if(var[idx]->sz == 0L) var_op_typ[idx]=fix_typ;
 
     if(CNV_CCM_CCSM_CF){
-      if(!strcmp(var_nm,"ntrm") || !strcmp(var_nm,"ntrn") || !strcmp(var_nm,"ntrk") || !strcmp(var_nm,"ndbase") || !strcmp(var_nm,"nsbase") || !strcmp(var_nm,"nbdate") || !strcmp(var_nm,"nbsec") || !strcmp(var_nm,"mdt") || !strcmp(var_nm,"mhisf")) var_op_typ[idx]=fix;
+      if(!strcmp(var_nm,"ntrm") || !strcmp(var_nm,"ntrn") || !strcmp(var_nm,"ntrk") || !strcmp(var_nm,"ndbase") || !strcmp(var_nm,"nsbase") || !strcmp(var_nm,"nbdate") || !strcmp(var_nm,"nbsec") || !strcmp(var_nm,"mdt") || !strcmp(var_nm,"mhisf")) var_op_typ[idx]=fix_typ;
       /* NB: all !strcmp()'s except "msk_" which uses strstr() */
-      if(nco_is_sz_rnk_prv_rth_opr(prg_id,nco_pck_plc) && (!strcmp(var_nm,"hyam") || !strcmp(var_nm,"hybm") || !strcmp(var_nm,"hyai") || !strcmp(var_nm,"hybi") || !strcmp(var_nm,"gw") || !strcmp(var_nm,"lon_bnds") || !strcmp(var_nm,"lat_bnds") || !strcmp(var_nm,"area") || !strcmp(var_nm,"ORO") || !strcmp(var_nm,"date") || !strcmp(var_nm,"datesec") || (strstr(var_nm,"msk_") == var_nm))) var_op_typ[idx]=fix;
+      if(is_sz_rnk_prv_rth_opr && (!strcmp(var_nm,"hyam") || !strcmp(var_nm,"hybm") || !strcmp(var_nm,"hyai") || !strcmp(var_nm,"hybi") || !strcmp(var_nm,"gw") || !strcmp(var_nm,"lon_bnds") || !strcmp(var_nm,"lat_bnds") || !strcmp(var_nm,"area") || !strcmp(var_nm,"ORO") || !strcmp(var_nm,"date") || !strcmp(var_nm,"datesec") || (strstr(var_nm,"msk_") == var_nm))) var_op_typ[idx]=fix_typ;
       /* Known "multi-dimensional coordinates" in CCSM-like model output:
 	 lat, lon, lev are normally 1-D coordinates
 	 Known exceptions:
@@ -972,42 +1021,34 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
 	 latixy and longxy are "2-D coordinates" in CLM output
 	 CLM does not specify latixy and longxy in "coordinates" attribute of any fields
 	 NARCCAP output gives all "coordinate-like" fields an "axis" attribute
-	 This includes the record variable (i.e., "time") which both 
-	 ncra and ncwa _should_ process.
+	 This includes the record coordinate (i.e., "time") which both ncra and ncwa _should_ process
 	 CLM does not give an "axis" attribute to any fields
 	 One method of chasing down all "coordinate-like" fields is to look
 	 for the field name in the "coordinates" attribute of any variable.
 	 However, this will miss (false-negative) the case when no variables 
 	 use an N-D coordinate-like variable as a coordinate. 
 	 And this may hit (false-positive) the record coordinate (often "time")
-	 which should be averaged by ncra, though perhaps not by ncea.
+	 which should be averaged by ncra, though perhaps not by nces.
 	 "coordinate-like" variables that should be "fixed", and not
 	 differenced, interpolated, or ensemble-averaged, include those 
 	 satisfying these conditions:
 	 0. Traditional coordinate (1-D variable same name as its dimension)
 	 1. Present in a "coordinates" attribute (except "time" for ncra)
-	 2. Contain an "axis" attribute (except "time")
-	 3. Found in empirical list of variables
+	 2. Present in a "bounds" attribute (except "time_bnds" for ncra)
+	 3. Contain an "axis" attribute (except "time") fxm not done yet
+	 4. Found in empirical list of variables
 	 NB: In the above algorithm discussion, "time" is my shorthand 
 	 for "the record variable, if any" */
-      /* Check condition #1 from above: */
-      if(nco_is_sz_rnk_prv_rth_opr(prg_id,nco_pck_plc) && nco_is_spc_in_crd_att(var[idx]->nc_id,var[idx]->id)) 
-	if(!(prg_id == ncra && var[idx]->is_rec_var)) /* not "time" */
-	   var_op_typ[idx]=fix;
-      /* Check condition #3 from above: */
-      if(nco_is_sz_rnk_prv_rth_opr(prg_id,nco_pck_plc) && (!strcmp(var_nm,"lat") || !strcmp(var_nm,"lon") || !strcmp(var_nm,"lev") || !strcmp(var_nm,"longxy") || !strcmp(var_nm,"latixy") )) var_op_typ[idx]=fix;
-
-      /* Debugging TODO nco1011 */
-      if(nco_is_sz_rnk_prv_rth_opr(prg_id,nco_pck_plc) && nco_is_spc_in_bnd_att(var[idx]->nc_id,var[idx]->id)) 
-	if(!(prg_id == ncra && var[idx]->is_rec_var)) /* not "time" */
-	  if(dbg_lvl_get() > 0) (void)fprintf(stderr,"%s: INFO Variable %s is specified in a bounds attribute\n",prg_nm_get(),var[idx]->nm);
-
+      
+      /* Conditions #1 and #2 are already implemented above in the case() statement */
+      /* Check condition #4 above: */
+      if(is_sz_rnk_prv_rth_opr && (!strcmp(var_nm,"lat") || !strcmp(var_nm,"lon") || !strcmp(var_nm,"lev") || !strcmp(var_nm,"longxy") || !strcmp(var_nm,"latixy") )) var_op_typ[idx]=fix_typ;
     } /* end if CNV_CCM_CCSM_CF */
 
     /* Warn about any expected weird behavior */
-    if(var_op_typ[idx] == prc){
-      if(var_typ_fnk && ((prg_id != ncecat) && (prg_id != ncpdq) && (prg_id != ncrcat))){
-	if(dbg_lvl_get() > 0) (void)fprintf(stderr,"%s: INFO Variable %s is of type %s, for which requested processing (i.e., averaging, differencing) is ill-defined\n",prg_nm_get(),var[idx]->nm,nco_typ_sng(var[idx]->type));
+    if(var_op_typ[idx] == prc_typ){
+      if(var_typ_fnk && ((nco_prg_id != ncecat) && (nco_prg_id != ncpdq) && (nco_prg_id != ncrcat))){
+        if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Variable %s is of type %s, for which requested processing (i.e., averaging, differencing) is ill-defined\n",nco_prg_nm_get(),var[idx]->nm,nco_typ_sng(var[idx]->type));
       } /* end if */
     } /* end if prc */
 
@@ -1016,7 +1057,7 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
   /* Assign list pointers based on operation type for each variable */
   *nbr_var_prc=*nbr_var_fix=0;
   for(idx=0;idx<nbr_var;idx++){
-    if(var_op_typ[idx] == fix){
+    if(var_op_typ[idx] == fix_typ){
       var[idx]->is_fix_var=var_out[idx]->is_fix_var=True;
       var_fix[*nbr_var_fix]=var[idx];
       var_fix_out[*nbr_var_fix]=var_out[idx];
@@ -1028,49 +1069,49 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
       ++*nbr_var_prc;
     } /* end else */
   } /* end loop over var */
-  
+
   /* Sanity check */
   if(*nbr_var_prc+*nbr_var_fix != nbr_var){
-    (void)fprintf(stdout,"%s: ERROR nbr_var_prc+nbr_var_fix != nbr_var\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR nbr_var_prc+nbr_var_fix != nbr_var\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* end if */
 
   /* fxm: Remove ncap exception when finished with ncap list processing */
   /* fxm: ncpdq processes all variables when packing requested */
-  if(*nbr_var_prc == 0 && prg_id != ncap && prg_id != ncpdq){
-    (void)fprintf(stdout,"%s: ERROR no variables fit criteria for processing\n",prg_nm_get());
-    switch(prg_id){
+  if(*nbr_var_prc == 0 && nco_prg_id != ncap && nco_prg_id != ncpdq && nco_prg_id != ncge){
+    (void)fprintf(stdout,"%s: ERROR no variables fit criteria for processing\n",nco_prg_nm_get());
+    switch(nco_prg_id){
     case ncap:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain at least one derived field\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain at least one derived field\n",nco_prg_nm_get());
     case ncatted:
       /* Do nothing */
       break;
     case ncbo:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a non-coordinate variable that is not NC_BYTE, NC_UBYTE, NC_CHAR, or NC_STRING in order to perform a binary operation (e.g., subtraction)\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a non-coordinate variable that is not NC_CHAR, or NC_STRING in order to perform a binary operation (e.g., subtraction)\n",nco_prg_nm_get());
       break;
-    case ncea:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a non-coordinate variable that is not NC_BYTE, NC_UBYTE, NC_CHAR, or NC_STRING\n",prg_nm_get());
+    case ncfe:
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a non-coordinate variable that is not NC_CHAR, or NC_STRING\n",nco_prg_nm_get());
       break;
     case ncecat:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a non-coordinate variable\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a non-coordinate variable\n",nco_prg_nm_get());
       break;
     case ncflint:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a variable that is not NC_BYTE, NC_UBYTE, NC_CHAR, or NC_STRING\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a variable that is not NC_CHAR, or NC_STRING\n",nco_prg_nm_get());
       break;
     case ncks:
       /* Do nothing */
       break;
     case ncpdq:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a variable that shares at least one dimension with the re-order list\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a variable that shares at least one dimension with the re-order list\n",nco_prg_nm_get());
       break;
     case ncra:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a record variable that is not NC_BYTE, NC_UBYTE, NC_CHAR, or NC_STRING\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a record variable that is not NC_CHAR, or NC_STRING\n",nco_prg_nm_get());
       break;
     case ncrcat:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a record variable which to concatenate\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a record variable which to concatenate\n",nco_prg_nm_get());
       break;
     case ncwa:
-      (void)fprintf(stdout,"%s: HINT Extraction list must contain a variable that contains an averaging dimension\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: HINT Extraction list must contain a variable that contains an averaging dimension\n",nco_prg_nm_get());
       break;
     default: nco_dfl_case_prg_id_err(); break;
     } /* end switch */
@@ -1085,92 +1126,188 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
 
 } /* end nco_var_lst_dvd */
 
-int /* O [enm] Return code */
-nco_var_lst_mrg /* [fnc] Merge two variable lists into same order */
-(var_sct *** var_1_ptr, /* I/O [sct] Variable list 1 */
- var_sct *** var_2_ptr, /* I/O [sct] Variable list 2 */
- int * const var_nbr_1, /* I/O [nbr] Number of variables in list 1 */
- int * const var_nbr_2) /* I/O [nbr] Number of variables in list 2 */
+void
+nco_var_lst_dvd_trv                          /* [fnc] Divide input lists into output lists (ncbo only)  */
+(var_sct * const var,                        /* I [sct] Variable list (input file) */
+ var_sct * const var_out,                    /* I [sct] Variable list (output file) */
+ const nco_bool CNV_CCM_CCSM_CF,             /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD,                 /* I [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
+ const int nco_pck_map,                      /* I [enm] Packing map */
+ const int nco_pck_plc,                      /* I [enm] Packing policy */
+ CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl),   /* I [sct] Dimensions not allowed in fixed variables */
+ const int nbr_dmn_xcl,                      /* I [nbr] Number of altered dimensions */
+ prc_typ_enm *prc)                           /* O [enm] Processing type */
 {
-  /* Purpose: Merge two variable lists into same order
-
-     Routine design is open-ended with maximum flexibility
-     Initial functionality will simply sort list two into list one order and
-     destroy original (un-merged) list two on output
-     Refinements could include changing number of variables in each list
-     This would allow asymmetric list merges
-
-     Routine is only used by ncbo to synchronize processed variable list
-     Until 20070628, routine did not change var_nbr_2
-     As of 20070628 (NCO 3.9.1) routine shrinks var_nbr_2 to var_nbr_1
-     In effect this sets nbr_var_prc_2:=nbr_var_prc_1 in ncbo
-     This allows file_2 to contain variables not in file_1
-     Routine now warns about processed variable list "truncation" 
-     "asymmetric" list processing should now work iff lst_2 is superset of lst_1
-
-     Until 20070707 lst_2 had to be superset of lst_1
-     Next desired functionality is to copy variables only in lst_1 or lst_2 as
-     fixed variables to output file, i.e., do not subtract them.
-     May only be possible with lst_1 variables
-     At minimum, want to print which variables are _only_ in which file
-     This would make it easier for user to give -x -v var_lst argument which
-     would make files subtractable */
-
-  const char fnc_nm[]="nco_var_lst_mrg()"; /* [sng] Function name */
-
-  int idx_1;
-  int idx_2;
-  int rcd=0; /* [rcd] Return code */
-
-  var_sct **var_1;
-  var_sct **var_2;
-  var_sct **var_out;
+  /* Purpose: Divide two input lists into output lists based on program type */
 
-  var_1=*var_1_ptr;
-  var_2=*var_2_ptr;
+  char *var_nm=NULL_CEWI; 
 
-  var_out=(var_sct **)nco_malloc(NC_MAX_VARS*sizeof(var_sct *));
+  int nco_prg_id;                     /* [enm] Program key */
+  int idx_dmn;
+  int idx_xcl;
+  prc_typ_enm var_op_typ;
+
+  nco_bool is_sz_rnk_prv_rth_opr; /* [flg] Size- and rank-preserving operator */
+  nco_bool var_typ_fnk=False;     /* [flg] Variable type is too funky for arithmetic */ 
+
+  nc_type var_typ=NC_NAT;         /* NC_NAT present in netcdf.h version netCDF 3.5+ */
+
+  nco_prg_id=nco_prg_id_get(); 
+
+  is_sz_rnk_prv_rth_opr=nco_is_sz_rnk_prv_rth_opr(nco_prg_id,nco_pck_plc);
+
+  /* Initialize operation type to processed. Change to fixed where warranted later. */
+  var_op_typ=prc_typ;
+  var_nm=var->nm;
+  var_typ=var->type;
+  /* Until 20131005, NCO default was to consider NC_BYTE and NC_UBYTE as funky, too */
+  if((var_typ == NC_CHAR) || (var_typ == NC_STRING)) var_typ_fnk=True; else var_typ_fnk=False;
+
+  /* Many operators should not process coordinate variables, or auxiliary coordinate variables (lat, lon, time, latixy, longxy, ...) and bounds (lat_bnds, lon_bnds, ...)
+     20130112: As of today set is_crd_var true in nco_var_fll() when either of these conditions is true 
+     so no longer need to specify these conditions separately. 
+     Keep this old code here as a reminder that is_crd_var also incorporates these conditions
+     is_spc_in_crd_att=nco_is_spc_in_crd_att(var[idx]->nc_id,var[idx]->id);
+     is_spc_in_bnd_att=nco_is_spc_in_bnd_att(var[idx]->nc_id,var[idx]->id); */
+
+  /* Override operation type based depending on variable properties and program */
+  switch(nco_prg_id){
+  case ncap:
+    var_op_typ=fix_typ;
+    break;
+  case ncatted:
+    /* Do nothing */
+    break;
+  case ncbo:
+    if(var->is_crd_var || var_typ_fnk) var_op_typ=fix_typ;
+    break;
+  case ncfe:
+    if(var->is_crd_var || var_typ_fnk) var_op_typ=fix_typ;
+    break;
+  case ncecat:
+    /* Allow ncecat to concatenate funky variables */
+    if(var->is_crd_var) var_op_typ=fix_typ;
+    break;
+  case ncflint:
+    /* Allow ncflint to interpolate record coordinates, not fixed coordinates ... */
+    if((var->is_crd_var || var_typ_fnk) && !var->is_rec_var) var_op_typ=fix_typ;
+    /* ...unless the --fix_rec_crd switch was used to fix record coordinates as well ... */
+    if((var->is_crd_var && var->is_rec_var && FIX_REC_CRD)) var_op_typ=fix_typ;
+    break;
+  case ncks:
+    /* Do nothing */
+    break;
+  case ncra:
+    if(!var->is_rec_var) var_op_typ=fix_typ;
+    break;
+  case ncrcat:
+    if(!var->is_rec_var) var_op_typ=fix_typ;
+    break;
+  case ncpdq:
+  case ncwa:
+    if(nco_pck_plc != nco_pck_plc_nil){
+      /* Packing operation requested
+      Variables are processed for packing/unpacking operator unless... */
+      if(
+        /* ...packing coordinate variables has few benefits... */
+        (var->is_crd_var && !(nco_pck_plc == nco_pck_plc_upk) ) ||
+        /* unless if it's NOT a record variable and the policy is unpack 
+        20120711. nco: ncpdq unpack coordinate variables */     
+        /* ...unpacking requested for unpacked variable... */
+        (nco_pck_plc == nco_pck_plc_upk && !var->pck_ram) ||
+        /* ...or packing unpacked requested and variable is already packed... */
+        (nco_pck_plc == nco_pck_plc_all_xst_att && var->pck_ram) ||
+        /* ...or re-packing packed requested and variable is unpacked... */
+        (nco_pck_plc == nco_pck_plc_xst_new_att && !var->pck_ram) ||
+        /* ...or... */
+        (
+        /* ...any type of packing requested... */
+        (nco_pck_plc == nco_pck_plc_all_new_att || 
+        nco_pck_plc == nco_pck_plc_all_xst_att || 
+        nco_pck_plc == nco_pck_plc_xst_new_att) &&
+        /* ...yet map does not allow (re-)packing... */
+        !nco_pck_plc_typ_get(nco_pck_map,var->typ_upk,(nc_type *)NULL)
+        )
+        )
+        var_op_typ=fix_typ;
+    }else{ /* endif packing operation requested */
+      /* Process every variable containing an altered (averaged, re-ordered, reversed) dimension */
+      for(idx_dmn=0;idx_dmn<var->nbr_dim;idx_dmn++){
+        for(idx_xcl=0;idx_xcl<nbr_dmn_xcl;idx_xcl++){
+          if(var->dim[idx_dmn]->id == dmn_xcl[idx_xcl]->id){
+            break;
+          }
+        } /* end loop over idx_xcl */
+        if(idx_xcl != nbr_dmn_xcl){
+          var_op_typ=prc_typ;
+          break;
+        } /* end if */
+      } /* end loop over idx_dmn */
+      /* Fix variables with no altered (averaged, re-ordered, reversed) dimensions */
+      if(idx_dmn == var->nbr_dim) var_op_typ=fix_typ;
+    } /* endif averaging or re-ordering */
+    break;
+  default: nco_dfl_case_prg_id_err(); break;
+  } /* end switch */
+
+  /* Previous case-statement does not account for variables with no data */
+  if(nco_is_rth_opr(nco_prg_id))
+    if(var->sz == 0L)
+      var_op_typ=fix_typ;
 
-  /* ...For each variable in first list... */
-  for(idx_1=0;idx_1<*var_nbr_1;idx_1++){
-    /* ...search through second list... */
-    for(idx_2=0;idx_2<*var_nbr_2;idx_2++){
-      /* ...until variable with same name is found... */
-      if(!strcmp(var_1[idx_1]->nm,var_2[idx_2]->nm)) break; /* ...then search no further... */
-    } /* end loop over idx_2 */
-    /* ...and if variable was not found in second list... */
-    if(idx_2 == *var_nbr_2){
-      (void)fprintf(stderr,"%s: ERROR %s variable \"%s\" is in list one and not in list two\n",prg_nm_get(),fnc_nm,var_1[idx_1]->nm);
-      nco_exit(EXIT_FAILURE);
-    } /* end if variable was not found in second list */
-    /* ...otherwise assign variable to correct slot in output list */
-    var_out[idx_1]=var_2[idx_2];
-  } /* end loop over idx_1 */
+  if(CNV_CCM_CCSM_CF){
+    if(!strcmp(var_nm,"ntrm") || !strcmp(var_nm,"ntrn") || !strcmp(var_nm,"ntrk") || !strcmp(var_nm,"ndbase") || !strcmp(var_nm,"nsbase") || !strcmp(var_nm,"nbdate") || !strcmp(var_nm,"nbsec") || !strcmp(var_nm,"mdt") || !strcmp(var_nm,"mhisf")) var_op_typ=fix_typ;
+    /* NB: all !strcmp()'s except "msk_" which uses strstr() */
+    if(is_sz_rnk_prv_rth_opr && (!strcmp(var_nm,"hyam") || !strcmp(var_nm,"hybm") || !strcmp(var_nm,"hyai") || !strcmp(var_nm,"hybi") || !strcmp(var_nm,"gw") || !strcmp(var_nm,"lon_bnds") || !strcmp(var_nm,"lat_bnds") || !strcmp(var_nm,"area") || !strcmp(var_nm,"ORO") || !strcmp(var_nm,"date") || !strcmp(var_nm,"datesec") || (strstr(var_nm,"msk_") == var_nm))) var_op_typ=fix_typ;
+    /* Known "multi-dimensional coordinates" in CCSM-like model output:
+    lat, lon, lev are normally 1-D coordinates
+    Known exceptions:
+    lat and lon are "2-D coordinates" in NARCCAP output
+    NARCCAP specifies lat and lon in "coordinates" attribute of 2-D fields
+    latixy and longxy are "2-D coordinates" in CLM output
+    CLM does not specify latixy and longxy in "coordinates" attribute of any fields
+    NARCCAP output gives all "coordinate-like" fields an "axis" attribute
+    This includes the record coordinate (i.e., "time") which both ncra and ncwa _should_ process
+    CLM does not give an "axis" attribute to any fields
+    One method of chasing down all "coordinate-like" fields is to look
+    for the field name in the "coordinates" attribute of any variable.
+    However, this will miss (false-negative) the case when no variables 
+    use an N-D coordinate-like variable as a coordinate. 
+    And this may hit (false-positive) the record coordinate (often "time")
+    which should be averaged by ncra, though perhaps not by nces.
+    "coordinate-like" variables that should be "fixed", and not
+    differenced, interpolated, or ensemble-averaged, include those 
+    satisfying these conditions:
+    0. Traditional coordinate (1-D variable same name as its dimension)
+    1. Present in a "coordinates" attribute (except "time" for ncra)
+    2. Present in a "bounds" attribute (except "time_bnds" for ncra)
+    3. Contain an "axis" attribute (except "time") fxm not done yet
+    4. Found in empirical list of variables
+    NB: In the above algorithm discussion, "time" is my shorthand 
+    for "the record variable, if any" */
+
+    /* Conditions #1 and #2 are already implemented above in the case() statement */
+    /* Check condition #4 above: */
+    if(is_sz_rnk_prv_rth_opr && (!strcmp(var_nm,"lat") || !strcmp(var_nm,"lon") || !strcmp(var_nm,"lev") || !strcmp(var_nm,"longxy") || !strcmp(var_nm,"latixy") )) var_op_typ=fix_typ;
+  } /* end if CNV_CCM_CCSM_CF */
+
+  /* Warn about any expected weird behavior */
+  if(var_op_typ == prc_typ){
+    if(var_typ_fnk && ((nco_prg_id != ncecat) && (nco_prg_id != ncpdq) && (nco_prg_id != ncrcat))){
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Variable %s is of type %s, for which requested processing (i.e., averaging, differencing) is ill-defined\n",nco_prg_nm_get(),var->nm,nco_typ_sng(var->type));
+    } /* end if */
+  } /* end if prc */
 
-  /* Asymmetric lists */
-  if(*var_nbr_2 > *var_nbr_1){
-    if(dbg_lvl_get() > nco_dbg_quiet){
-      const int orphan_nbr=*var_nbr_2-*var_nbr_1;
-      int orphan_idx=0;
-      (void)fprintf(stderr,"%s: INFO %s detects that file two contains %d more \"process-able\" (e.g., difference-able) variable%s than file one. Processable variables exclude those (often coordinates) that are intended to pass through an operator unchanged. The following variable%s present and/or process-able only in file two: ",prg_nm_get(),fnc_nm,orphan_nbr,(orphan_nbr > 1) ? "s" : "",(orphan_nbr > 1) ? "s are" : " is");
-      for(idx_2=0;idx_2<*var_nbr_2;idx_2++){ 
-	for(idx_1=0;idx_1<*var_nbr_1;idx_1++)
-	  if(!strcmp(var_out[idx_1]->nm,var_2[idx_2]->nm)) break;
-	/* Print name of variable in list two and not in var_out */  
-	if(idx_1 == *var_nbr_1){
-	  orphan_idx++;
-	  (void)fprintf(stderr,"%s%s",var_2[idx_2]->nm,(orphan_idx < orphan_nbr) ? ", " : ".");
-	} /* end if orphan */
-      } /* end loop over idx_2 */ 
-      (void)fprintf(stderr," If %s in file one then this notice may be safely ignored. Otherwise, %s will do no harm and will not appear in the output file.\n",(orphan_nbr > 1) ? "these variables are all scalar averages of the coordinate variables with the same names" : "this variable is a scalar-average of the coordinate variable with the same name",(orphan_nbr > 1) ? "these variables appear to be orphans. They" : "this variable appears to be an orphan. It");
-    } /* endif dbg */
-    *var_nbr_2=*var_nbr_1;
-  } /* end if asymmetric and debug */
+  if(var_op_typ == fix_typ){
+    var->is_fix_var=True;
+    var_out->is_fix_var=True;
+  }else{
+    var_out->is_fix_var=False;
+    var->is_fix_var=False;
+  } 
 
-  /* Free un-merged list before overwriting with merged list */
-  var_2=(var_sct **)nco_free(var_2);
-  *var_2_ptr=(var_sct **)nco_realloc(var_out,*var_nbr_2*sizeof(var_sct *));
+  /* Export */
+  *prc=var_op_typ;
 
-  return rcd;
-} /* end nco_var_lst_mrg() */
+} /* end nco_var_lst_dvd_trv */
 
diff --git a/src/nco/nco_var_lst.h b/src/nco/nco_var_lst.h
index 6170f38..1f9d457 100644
--- a/src/nco/nco_var_lst.h
+++ b/src/nco/nco_var_lst.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_lst.h,v 1.56 2012/02/14 01:10:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_lst.h,v 1.71 2013/11/02 22:35:27 pvicente Exp $ */
 
 /* Purpose: Variable list utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -17,9 +17,10 @@
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard header files */
+#include <assert.h> /* assert() */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 
 #ifdef HAVE_REGEX_H 
 /* 20120213: Linux GCC 4.6 man page says regex.h depends on (non-present) sys/types.h */
@@ -51,14 +52,14 @@ nco_var_lst_mk /* [fnc] Create variable extraction list */
  char * const * const var_lst_in, /* I [sng] User-specified list of variable names and rx's */
  const nco_bool EXCLUDE_INPUT_LIST, /* I [flg] Exclude rather than extract */
  const nco_bool EXTRACT_ALL_COORDINATES, /* I [flg] Process all coordinates */
- int * const var_nbr_xtr); /* I/O [nbr] Number of variables in current extraction list */
+ int * const var_xtr_nbr); /* I/O [nbr] Number of variables in current extraction list */
 
 nm_id_sct * /* O [sct] Extraction list */
 nco_var_lst_xcl /* [fnc] Convert exclusion list to extraction list */
 (const int nc_id, /* I netCDF file ID */
  const int nbr_var, /* I [nbr] Number of variables in input file */
  nm_id_sct *xtr_lst, /* I/O [sct] Current exclusion list (destroyed) */
- int * const nbr_xtr); /* I/O [nbr] Number of variables in exclusion/extraction list */
+ int * const xtr_nbr); /* I/O [nbr] Number of variables in exclusion/extraction list */
 
 nm_id_sct * /* O [sct] Extraction list */
 nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
@@ -66,24 +67,14 @@ nco_var_lst_crd_add /* [fnc] Add all coordinates to extraction list */
  const int nbr_dim, /* I [nbr] Number of dimensions in input file */
  const int nbr_var, /* I [nbr] Number of variables in input file */
  nm_id_sct *xtr_lst, /* I/O [sct] Current extraction list (destroyed) */
- int * const nbr_xtr, /* I/O [nbr] Number of variables in current extraction list */
+ int * const xtr_nbr, /* I/O [nbr] Number of variables in current extraction list */
  const nco_bool CNV_CCM_CCSM_CF); /* I [flg] file obeys CCM/CCSM/CF conventions */
 
-nco_bool /* [flg] Variable is listed in a "bounds" attribute */
-nco_is_spc_in_bnd_att /* [fnc] Variable is listed in a "bounds" attribute */
-(const int nc_id, /* I [id] netCDF file ID */
- const int var_trg_id); /* I [id] Variable ID */
-
-nco_bool /* [flg] Variable is listed in a "coordinates" attribute */
-nco_is_spc_in_crd_att /* [fnc] Variable is listed in a "coordinates" attribute */
-(const int nc_id, /* I [id] netCDF file ID */
- const int var_trg_id); /* I [id] Variable ID */
-
 nm_id_sct * /* O [sct] Extraction list */
 nco_var_lst_crd_ass_add /* [fnc] Add to extraction list all coordinates associated with extracted variables */
 (const int nc_id, /* I netCDF file ID */
  nm_id_sct *xtr_lst, /* I/O current extraction list (destroyed) */
- int * const nbr_xtr, /* I/O number of variables in current extraction list */
+ int * const xtr_nbr, /* I/O number of variables in current extraction list */
  const nco_bool CNV_CCM_CCSM_CF); /* I [flg] file obeys CCM/CCSM/CF conventions */
 
 nm_id_sct * /* O [sct] List with coordinate excluded */
@@ -91,13 +82,23 @@ nco_var_lst_crd_xcl /* [fnc] Exclude given coordinates from extraction list */
 (const int nc_id, /* I [id] netCDF file ID */
  const int dmn_id, /* I [id] Dimension ID of coordinate to remove from extraction list */
  nm_id_sct *xtr_lst, /* I/O [sct] Current extraction list (destroyed) */
- int * const nbr_xtr); /* I/O [nbr] Number of variables in extraction list */
+ int * const xtr_nbr); /* I/O [nbr] Number of variables in extraction list */
+
+void
+nco_var_lst_fix_rec_dvd /* [fnc] Divide extraction list into fixed and record data */
+(const int nc_id, /* I [id] netCDF file ID */
+ nm_id_sct *xtr_lst, /* I/O [sct] Extraction list (pointers to it are constructed) */
+ const int xtr_nbr, /* I [nbr] Number of variables in extraction list */
+ nm_id_sct ***fix_lst, /* O [sct] Fixed-length variables */
+ int * const fix_nbr, /* O [nbr] Number of fixed-length variables */
+ nm_id_sct ***rec_lst, /* O [sct] Record variables */
+ int * const rec_nbr); /* O [nbr] Number of record variables */
 
 void
 nco_var_lst_convert /* [fnc] Make variable structure list from variable name ID list */
 (const int nc_id, /* I [enm] netCDF file ID */
  nm_id_sct *xtr_lst, /* I [sct] Current extraction list (destroyed) */
- const int nbr_xtr, /* I [nbr] Number of variables in input file */
+ const int xtr_nbr, /* I [nbr] Number of variables in input file */
  dmn_sct * const * const dim, /* I [sct] Dimensions associated with input variable list */
  const int nbr_dmn_xtr, /* I [nbr] Number of dimensions in list  */
  var_sct *** const var_ptr, /* O [sct] Variable list (for input file) */
@@ -109,6 +110,7 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
  var_sct * const * const var_out, /* I [sct] Variable list (output file) */
  const int nbr_var, /* I [nbr] Number of variables */
  const nco_bool CNV_CCM_CCSM_CF, /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD, /* [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
  const int nco_pck_map, /* I [enm] Packing map */
  const int nco_pck_plc, /* I [enm] Packing policy */
  CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl), /* I [sct] Dimensions not allowed in fixed variables */
@@ -118,7 +120,8 @@ nco_var_lst_dvd /* [fnc] Divide input lists into output lists */
  int * const nbr_var_fix, /* O [nbr] Number of fixed variables */
  var_sct *** const var_prc_ptr, /* O [sct] Processed-variables (input file) */
  var_sct *** const var_prc_out_ptr, /* O [sct] Processed-variables (output file) */
- int * const nbr_var_prc); /* O [nbr] Number of processed variables */
+ int * const nbr_var_prc, /* O [nbr] Number of processed variables */
+ const trv_tbl_sct * const trv_tbl);   /* I [sct] Traversal table */
 
 int /* O [enm] Return code */
 nco_var_lst_mrg /* [fnc] Merge two variable lists into same order */
@@ -127,6 +130,22 @@ nco_var_lst_mrg /* [fnc] Merge two variable lists into same order */
  int * const var_nbr_1, /* I/O [nbr] Number of variables in list 1 */
  int * const var_nbr_2); /* I/O [nbr] Number of variables in list 2 */
 
+void
+nco_var_lst_dvd_trv                          /* [fnc] Divide input lists into output lists (ncbo only) */
+(var_sct * const var,                        /* I [sct] Variable list (input file) */
+ var_sct * const var_out,                    /* I [sct] Variable list (output file) */
+ const nco_bool CNV_CCM_CCSM_CF,             /* I [flg] File adheres to NCAR CCM/CCSM/CF conventions */
+ const nco_bool FIX_REC_CRD,                 /* I [flg] Do not interpolate/multiply record coordinate variables (ncflint only) */
+ const int nco_pck_map,                      /* I [enm] Packing map */
+ const int nco_pck_plc,                      /* I [enm] Packing policy */
+ CST_X_PTR_CST_PTR_CST_Y(dmn_sct,dmn_xcl),   /* I [sct] Dimensions not allowed in fixed variables */
+ const int nbr_dmn_xcl,                      /* I [nbr] Number of altered dimensions */
+ prc_typ_enm *prc);                          /* O [enm] Processing type */
+
+
+
+
+
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/nco_var_rth.c b/src/nco/nco_var_rth.c
index dbf2534..b82ac3b 100644
--- a/src/nco/nco_var_rth.c
+++ b/src/nco/nco_var_rth.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_rth.c,v 1.59 2012/02/07 07:12:05 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_rth.c,v 1.67 2013/12/02 01:05:56 zender Exp $ */
 
 /* Purpose: Variable arithmetic */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -62,15 +62,23 @@ nco_var_abs /* [fnc] Replace op1 values by their absolute values */
     break;
   case NC_SHORT:
     if(!has_mss_val){
-      for(idx=0;idx<sz;idx++) if(op1.sp[idx] < 0 ) op1.sp[idx]=-op1.sp[idx] ;
+      for(idx=0;idx<sz;idx++) if(op1.sp[idx] < 0) op1.sp[idx]=-op1.sp[idx] ;
     }else{
       const nco_short mss_val_short=*mss_val.sp;
       for(idx=0;idx<sz;idx++){
-	if(op1.sp[idx] != mss_val_short && op1.sp[idx] < 0 ) op1.sp[idx]=-op1.sp[idx];
+	if(op1.sp[idx] != mss_val_short && op1.sp[idx] < 0) op1.sp[idx]=-op1.sp[idx];
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing fxm: do something? */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) if(op1.bp[idx] < 0) op1.bp[idx]=-op1.bp[idx] ;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte && op1.bp[idx] < 0) op1.bp[idx]=-op1.bp[idx];
+      } /* end for */
+    } /* end else */
   case NC_UBYTE: break; /* Do nothing */
   case NC_USHORT: break; /* Do nothing */
   case NC_UINT: break; /* Do nothing */
@@ -200,8 +208,26 @@ nco_var_add /* [fnc] Add first operand to second operand */
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]+=op1.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)) op2.bp[idx]+=op1.bp[idx]; else op2.bp[idx]=mss_val_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]+=op1.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)) op2.ubp[idx]+=op1.ubp[idx]; else op2.ubp[idx]=mss_val_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -385,8 +411,42 @@ nco_var_add_tll_ncflint /* [fnc] Add first operand to second operand, increment
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.bp[idx]+=op1.bp[idx];
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)){
+	  op2.bp[idx]+=op1.bp[idx];
+	  tally[idx]++;
+	}else{
+	  op2.bp[idx]=mss_val_byte;
+	} /* end else */
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.ubp[idx]+=op1.ubp[idx];
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)){
+	  op2.ubp[idx]+=op1.ubp[idx];
+	  tally[idx]++;
+	}else{
+	  op2.ubp[idx]=mss_val_ubyte;
+	} /* end else */
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -524,8 +584,38 @@ nco_var_add_tll_ncflint /* [fnc] Add first operand to second operand, increment
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.bp[idx]+=op1.bp[idx];
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)){
+	  op2.bp[idx]+=op1.bp[idx];
+	  tally[idx]++;
+	} /* end if */
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.ubp[idx]+=op1.ubp[idx];
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)){
+	  op2.ubp[idx]+=op1.ubp[idx];
+	  tally[idx]++;
+	} /* end if */
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -550,7 +640,6 @@ nco_var_add_tll_ncra /* [fnc] Add first operand to second operand, increment tal
   /* Purpose: Add value of first operand to value of second operand 
      and store result in second operand. 
      Assume operands conform, are same type, and are in memory
-     nco_var_add() adds to tally if neither operand equals missing_value
      nco_var_add() does _not_ increment tally counter.
      nco_var_add_tll_ncflint() adds if neither operand equals missing value
      nco_var_add_tll_ncflint() does increment tally counter (unlike nco_var_add())
@@ -573,7 +662,7 @@ nco_var_add_tll_ncra /* [fnc] Add first operand to second operand, increment tal
      nco_var_add_tll_ncflint() also fails as running average algorithm whenever
      running sum happens to equal missing_value (regardless if missing value is zero).
      NCO uses nco_var_add_tll_ncflint() only for ncflint
-     NCO uses nco_var_add_tll_ncra() only for ncra/ncea */
+     NCO uses nco_var_add_tll_ncra() only for ncra/nces */
   
   /* Addition is currently defined as op2:=op1+op2 where op1 != mss_val */
   
@@ -713,8 +802,38 @@ nco_var_add_tll_ncra /* [fnc] Add first operand to second operand, increment tal
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.bp[idx]+=op1.bp[idx];
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte){
+	  op2.bp[idx]+=op1.bp[idx];
+	  tally[idx]++;
+	} /* end if */
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.ubp[idx]+=op1.ubp[idx];
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte){
+	  op2.ubp[idx]+=op1.ubp[idx];
+	  tally[idx]++;
+	} /* end if */
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -726,7 +845,7 @@ nco_var_add_tll_ncra /* [fnc] Add first operand to second operand, increment tal
 } /* end nco_var_add_tll_ncra() */
 
 void 
-nco_var_copy_tll /* [fnc] Copy hyperslab variables of type var_typ from op1 to op2 */
+nco_var_copy_tll /* [fnc] Copy hyperslab variables of type var_typ from op1 to op2, accounting for missing values in tally */
 (const nc_type type, /* I [enm] netCDF type */
  const long sz, /* I [nbr] Number of elements to copy */
  const int has_mss_val, /* I [flg] Flag for missing values */
@@ -748,10 +867,14 @@ nco_var_copy_tll /* [fnc] Copy hyperslab variables of type var_typ from op1 to o
   /* Use fast nco_var_copy() method to copy variable */
   (void)memcpy((void *)(op2.vp),(void *)(op1.vp),sz*nco_typ_lng(type));
 
-  /* Tally is one if no missing value is defined */
-  (void)nco_set_long(sz,1L,tally);
-
-  if(!has_mss_val) return;
+  if(has_mss_val){
+    /* Tally remains zero until verified (below) that datum is not missing value */
+    (void)nco_set_long(sz,0L,tally);
+  }else{ /* !has_mss_val */
+    /* Tally is one if no missing value is defined */
+    (void)nco_set_long(sz,1L,tally);
+    return;
+  } /* !has_mss_val */
 
   /* Typecast pointer to values before access */
   (void)cast_void_nctype(type,&op2);
@@ -762,53 +885,63 @@ nco_var_copy_tll /* [fnc] Copy hyperslab variables of type var_typ from op1 to o
   case NC_FLOAT:
     {
       const float mss_val_flt=*mss_val.fp;
-      for(idx=0;idx<sz;idx++) if(op2.fp[idx] == mss_val_flt) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.fp[idx] == mss_val_flt) op2.fp[idx]=0.0f; else tally[idx]=1L;
     }
     break;
   case NC_DOUBLE:
     {
       const double mss_val_dbl=*mss_val.dp;
-      for(idx=0;idx<sz;idx++) if(op2.dp[idx] == mss_val_dbl) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.dp[idx] == mss_val_dbl) op2.dp[idx]=0.0; else tally[idx]=1L;
     }
     break;
   case NC_INT:
     {
       const nco_int mss_val_ntg=*mss_val.ip;
-      for(idx=0;idx<sz;idx++) if(op2.ip[idx] == mss_val_ntg) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.ip[idx] == mss_val_ntg) op2.ip[idx]=0; else tally[idx]=1L;
     }
     break;
   case NC_SHORT:
     {
       const nco_short mss_val_short=*mss_val.sp;
-      for(idx=0;idx<sz;idx++) if(op2.sp[idx] == mss_val_short) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.sp[idx] == mss_val_short) op2.sp[idx]=0; else tally[idx]=1L;
     }
     break;
   case NC_USHORT:
     {
       const nco_ushort mss_val_ushort=*mss_val.usp;
-      for(idx=0;idx<sz;idx++) if(op2.usp[idx] == mss_val_ushort) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.usp[idx] == mss_val_ushort) op2.usp[idx]=0; else tally[idx]=1L;
     }
     break;
   case NC_UINT:
     {
       const nco_uint mss_val_uint=*mss_val.uip;
-      for(idx=0;idx<sz;idx++) if(op2.uip[idx] == mss_val_uint) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.uip[idx] == mss_val_uint) op2.uip[idx]=0; else tally[idx]=1L;
     }
     break;
   case NC_INT64:
     {
       const nco_int64 mss_val_int64=*mss_val.i64p;
-      for(idx=0;idx<sz;idx++) if(op2.i64p[idx] == mss_val_int64) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.i64p[idx] == mss_val_int64) op2.i64p[idx]=0; else tally[idx]=1L;
     }
     break;
   case NC_UINT64:
     {
       const nco_uint64 mss_val_uint64=*mss_val.ui64p;
-      for(idx=0;idx<sz;idx++) if(op2.ui64p[idx] == mss_val_uint64) tally[idx]=0L;
+      for(idx=0;idx<sz;idx++) if(op2.ui64p[idx] == mss_val_uint64) op2.ui64p[idx]=0; else tally[idx]=1L;
+    }
+    break;
+  case NC_BYTE:
+    {
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++) if(op2.bp[idx] == mss_val_byte) op2.bp[idx]=0; else tally[idx]=1L;
+    }
+    break;
+  case NC_UBYTE:
+    {
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++) if(op2.ubp[idx] == mss_val_ubyte) op2.ubp[idx]=0; else tally[idx]=1L;
     }
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -923,8 +1056,26 @@ nco_var_dvd /* [fnc] Divide second operand by first operand */
       } /* end for */
     } /* end else */
     break; /* end NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]/=op1.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)) op2.bp[idx]/=op1.bp[idx]; else op2.bp[idx]=mss_val_byte;
+      } /* end for */
+    } /* end else */
+    break; /* end NC_BYTE */
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]/=op1.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)) op2.ubp[idx]/=op1.ubp[idx]; else op2.ubp[idx]=mss_val_ubyte;
+      } /* end for */
+    } /* end else */
+    break; /* end NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -963,7 +1114,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
     }else{
       const float mss_val_flt=*mss_val.fp;
       for(idx=0;idx<sz;idx++){
-	if(op2.fp[idx] == mss_val_flt) 
+	if(op2.fp[idx] == mss_val_flt)
 	  op2.fp[idx]=op1.fp[idx];
 	else if((op1.fp[idx] != mss_val_flt) && (op2.fp[idx] < op1.fp[idx]))
 	  op2.fp[idx]=op1.fp[idx]; 
@@ -987,8 +1138,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
   case NC_INT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.ip[idx] < op1.ip[idx]) 
-	  op2.ip[idx]=op1.ip[idx];
+	if(op2.ip[idx] < op1.ip[idx]) op2.ip[idx]=op1.ip[idx];
     }else{
       const nco_int mss_val_ntg=*mss_val.ip;
       for(idx=0;idx<sz;idx++){
@@ -1002,8 +1152,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
   case NC_SHORT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.sp[idx] < op1.sp[idx])
-	  op2.sp[idx]=op1.sp[idx];
+	if(op2.sp[idx] < op1.sp[idx]) op2.sp[idx]=op1.sp[idx];
     }else{
       const nco_short mss_val_short=*mss_val.sp;
       for(idx=0;idx<sz;idx++){
@@ -1017,8 +1166,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
   case NC_USHORT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.usp[idx] < op1.usp[idx])
-	  op2.usp[idx]=op1.usp[idx];
+	if(op2.usp[idx] < op1.usp[idx]) op2.usp[idx]=op1.usp[idx];
     }else{
       const nco_ushort mss_val_ushort=*mss_val.usp;
       for(idx=0;idx<sz;idx++){
@@ -1032,8 +1180,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
   case NC_UINT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.uip[idx] < op1.uip[idx])
-	  op2.uip[idx]=op1.uip[idx];
+	if(op2.uip[idx] < op1.uip[idx]) op2.uip[idx]=op1.uip[idx];
     }else{
       const nco_uint mss_val_uint=*mss_val.uip;
       for(idx=0;idx<sz;idx++){
@@ -1047,8 +1194,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
   case NC_INT64:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.i64p[idx] < op1.i64p[idx])
-	  op2.i64p[idx]=op1.i64p[idx];
+	if(op2.i64p[idx] < op1.i64p[idx]) op2.i64p[idx]=op1.i64p[idx];
     }else{
       const nco_int64 mss_val_int64=*mss_val.i64p;
       for(idx=0;idx<sz;idx++){
@@ -1062,8 +1208,7 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
   case NC_UINT64:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.ui64p[idx] < op1.ui64p[idx])
-	  op2.ui64p[idx]=op1.ui64p[idx];
+	if(op2.ui64p[idx] < op1.ui64p[idx]) op2.ui64p[idx]=op1.ui64p[idx];
     }else{
       const nco_uint64 mss_val_uint64=*mss_val.ui64p;
       for(idx=0;idx<sz;idx++){
@@ -1074,8 +1219,34 @@ nco_var_max_bnr /* [fnc] Maximize two operands */
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) 
+	if(op2.bp[idx] < op1.bp[idx]) op2.bp[idx]=op1.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if(op2.bp[idx] == mss_val_byte) 
+	  op2.bp[idx]=op1.bp[idx];
+	else if((op1.bp[idx] != mss_val_byte) && (op2.bp[idx] < op1.bp[idx]))
+	  op2.bp[idx]=op1.bp[idx]; 
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) 
+	if(op2.ubp[idx] < op1.ubp[idx]) op2.ubp[idx]=op1.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if(op2.ubp[idx] == mss_val_ubyte) 
+	  op2.ubp[idx]=op1.ubp[idx];
+	else if((op1.ubp[idx] != mss_val_ubyte) && (op2.ubp[idx] < op1.ubp[idx]))
+	  op2.ubp[idx]=op1.ubp[idx]; 
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1135,8 +1306,7 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
   case NC_INT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.ip[idx] > op1.ip[idx]) 
-	  op2.ip[idx]=op1.ip[idx];
+	if(op2.ip[idx] > op1.ip[idx]) op2.ip[idx]=op1.ip[idx];
     }else{
       const nco_int mss_val_ntg=*mss_val.ip;
       for(idx=0;idx<sz;idx++){
@@ -1150,7 +1320,7 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
   case NC_SHORT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.sp[idx] > op1.sp[idx])  op2.sp[idx]=op1.sp[idx];
+	if(op2.sp[idx] > op1.sp[idx]) op2.sp[idx]=op1.sp[idx];
     }else{
       const nco_short mss_val_short=*mss_val.sp;
       for(idx=0;idx<sz;idx++){
@@ -1164,7 +1334,7 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
   case NC_USHORT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.usp[idx] > op1.usp[idx])  op2.usp[idx]=op1.usp[idx];
+	if(op2.usp[idx] > op1.usp[idx]) op2.usp[idx]=op1.usp[idx];
     }else{
       const nco_ushort mss_val_ushort=*mss_val.usp;
       for(idx=0;idx<sz;idx++){
@@ -1178,7 +1348,7 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
   case NC_UINT:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.uip[idx] > op1.uip[idx])  op2.uip[idx]=op1.uip[idx];
+	if(op2.uip[idx] > op1.uip[idx]) op2.uip[idx]=op1.uip[idx];
     }else{
       const nco_uint mss_val_uint=*mss_val.uip;
       for(idx=0;idx<sz;idx++){
@@ -1192,7 +1362,7 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
   case NC_INT64:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.i64p[idx] > op1.i64p[idx])  op2.i64p[idx]=op1.i64p[idx];
+	if(op2.i64p[idx] > op1.i64p[idx]) op2.i64p[idx]=op1.i64p[idx];
     }else{
       const nco_int64 mss_val_int64=*mss_val.i64p;
       for(idx=0;idx<sz;idx++){
@@ -1206,7 +1376,7 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
   case NC_UINT64:
     if(!has_mss_val){
       for(idx=0;idx<sz;idx++) 
-	if(op2.ui64p[idx] > op1.ui64p[idx])  op2.ui64p[idx]=op1.ui64p[idx];
+	if(op2.ui64p[idx] > op1.ui64p[idx]) op2.ui64p[idx]=op1.ui64p[idx];
     }else{
       const nco_uint64 mss_val_uint64=*mss_val.ui64p;
       for(idx=0;idx<sz;idx++){
@@ -1217,8 +1387,34 @@ nco_var_min_bnr /* [fnc] Minimize two operands */
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) 
+	if(op2.bp[idx] > op1.bp[idx]) op2.bp[idx]=op1.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if(op2.bp[idx] == mss_val_byte) 
+	  op2.bp[idx]=op1.bp[idx];
+	else if((op1.bp[idx] != mss_val_byte) && (op2.bp[idx] > op1.bp[idx]))
+	  op2.bp[idx]=op1.bp[idx]; 
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) 
+	if(op2.ubp[idx] > op1.ubp[idx]) op2.ubp[idx]=op1.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if(op2.ubp[idx] == mss_val_ubyte) 
+	  op2.ubp[idx]=op1.ubp[idx];
+	else if((op1.ubp[idx] != mss_val_ubyte) && (op2.ubp[idx] > op1.ubp[idx]))
+	  op2.ubp[idx]=op1.ubp[idx]; 
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1329,8 +1525,26 @@ nco_var_mlt /* [fnc] Multiply first operand by second operand */
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]*=op1.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)) op2.bp[idx]*=op1.bp[idx]; else op2.bp[idx]=mss_val_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]*=op1.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)) op2.ubp[idx]*=op1.ubp[idx]; else op2.ubp[idx]=mss_val_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1445,8 +1659,26 @@ nco_var_mod /* [fnc] Remainder (modulo) operation of two variables */
       } /* end for */
     } /* end else */
     break; /* end NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]=op1.bp[idx]%op2.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)) op2.bp[idx]=op1.bp[idx]%op2.bp[idx]; else op2.bp[idx]=mss_val_byte;
+      } /* end for */
+    } /* end else */
+    break; /* end NC_BYTE */
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]=op1.ubp[idx]%op2.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)) op2.ubp[idx]=op1.ubp[idx]%op2.ubp[idx]; else op2.ubp[idx]=mss_val_ubyte;
+      } /* end for */
+    } /* end else */
+    break; /* end NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1494,7 +1726,7 @@ nco_var_msk /* [fnc] Mask third operand where first and second operands fail com
   if(has_mss_val){
     (void)cast_void_nctype(type,&mss_val);
   }else{
-    (void)fprintf(stdout,"%s: ERROR has_mss_val is inconsistent with purpose of var_ask(), i.e., has_mss_val is not True\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR has_mss_val is inconsistent with purpose of var_ask(), i.e., has_mss_val is not True\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* end else */
   
@@ -1653,7 +1885,7 @@ nco_var_tll_zro_mss_val /* [fnc] Write missing value into elements with zero tal
      Such sums are usually normalized and set to missing if tally is zero.
      However, totals are integrals and thus are never normalized.
      Initialization value of zero will be output even if tally is zero,
-     _unless field is processed with this routine after summing and prior to writing. */
+     _unless field is processed with this routine after summing and prior to writing_ */
   
   /* Filter currently works as op1:=mss_val where tally == 0 */
   
@@ -1715,8 +1947,18 @@ nco_var_tll_zro_mss_val /* [fnc] Write missing value into elements with zero tal
       for(idx=0;idx<sz;idx++) if(tally[idx] == 0L) op1.ui64p[idx]=mss_val_uint64;
     }
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    {
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++) if(tally[idx] == 0L) op1.bp[idx]=mss_val_byte;
+    }
+    break;
+  case NC_UBYTE:
+    {
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++) if(tally[idx] == 0L) op1.ubp[idx]=mss_val_ubyte;
+    }
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1816,8 +2058,22 @@ nco_var_nrm /* [fnc] Normalize value of first operand by count in tally array */
       for(idx=0;idx<sz;idx++) if(tally[idx] != 0L) op1.ui64p[idx]/=tally[idx]; else op1.ui64p[idx]=mss_val_uint64;
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]/=tally[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++) if(tally[idx] != 0L) op1.bp[idx]/=tally[idx]; else op1.bp[idx]=mss_val_byte;
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]/=tally[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++) if(tally[idx] != 0L) op1.ubp[idx]/=tally[idx]; else op1.ubp[idx]=mss_val_ubyte;
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1914,8 +2170,22 @@ nco_var_nrm_sdn /* [fnc] Normalize value of first operand by count-1 in tally ar
       for(idx=0;idx<sz;idx++) if(tally[idx] > 1L) op1.ui64p[idx]/=tally[idx]-1L; else op1.ui64p[idx]=mss_val_uint64;
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]/=tally[idx]-1L;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++) if(tally[idx] > 1L) op1.bp[idx]/=tally[idx]-1L; else op1.bp[idx]=mss_val_byte;
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]/=tally[idx]-1L;
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++) if(tally[idx] > 1L) op1.ubp[idx]/=tally[idx]-1L; else op1.ubp[idx]=mss_val_ubyte;
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -1971,25 +2241,29 @@ nco_var_pwr /* [fnc] Raise first operand to power of second operand */
     } /* end else */
     break; /* end NC_DOUBLE */
   case NC_INT:
-    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
     break;
   case NC_SHORT:
-    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
     break;
   case NC_USHORT:
-    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
     break;
   case NC_UINT:
-    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
     break;
   case NC_INT64:
-    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
     break;
   case NC_UINT64:
-    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",prg_nm_get());
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
+    break;
+  case NC_BYTE:
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
+    break;
+  case NC_UBYTE:
+    (void)fprintf(stdout,"%s: ERROR Attempt to em-power integer type in nco_var_pwr(). See TODO #311.\n",nco_prg_nm_get());
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -2103,8 +2377,26 @@ nco_var_sbt /* [fnc] Subtract first operand from second operand */
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]-=op1.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.bp[idx] != mss_val_byte) && (op1.bp[idx] != mss_val_byte)) op2.bp[idx]-=op1.bp[idx]; else op2.bp[idx]=mss_val_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]-=op1.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if((op2.ubp[idx] != mss_val_ubyte) && (op1.ubp[idx] != mss_val_ubyte)) op2.ubp[idx]-=op1.ubp[idx]; else op2.ubp[idx]=mss_val_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -2268,8 +2560,38 @@ nco_var_sqrt /* [fnc] Place squareroot of first operand in value of second opera
       } /* end for */
     } /* end else */
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.bp[idx]=(nco_byte)sqrt((double)(op1.bp[idx]));
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp;
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte){
+	  op2.bp[idx]=(nco_byte)sqrt((double)(op1.bp[idx]));
+	  tally[idx]++;
+	} /* end if */
+      } /* end for */
+    } /* end else */
+    break;
+  case NC_UBYTE:
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++){
+	op2.ubp[idx]=(nco_ubyte)sqrt((double)(op1.ubp[idx]));
+	tally[idx]++;
+      } /* end for */
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp;
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte){
+	  op2.ubp[idx]=(nco_ubyte)sqrt((double)(op1.ubp[idx]));
+	  tally[idx]++;
+	} /* end if */
+      } /* end for */
+    } /* end else */
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -2307,10 +2629,10 @@ nco_var_zero /* [fnc] Zero value of first operand */
   case NC_UINT:
   case NC_INT64:
   case NC_UINT64:
+  case NC_BYTE:
+  case NC_UBYTE:
     (void)memset(op1.vp,0,sz_byt);
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -2348,8 +2670,12 @@ nco_var_zero /* [fnc] Zero value of first operand */
   case NC_UINT64:
     for(idx=0;idx<sz;idx++) op1.ui64p[idx]=0;
     break;
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:
+    for(idx=0;idx<sz;idx++) op1.bp[idx]=0;
+    break;
+  case NC_UBYTE:
+    for(idx=0;idx<sz;idx++) op1.ubp[idx]=0;
+    break;
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
diff --git a/src/nco/nco_var_rth.h b/src/nco/nco_var_rth.h
index 31a9963..fce0c20 100644
--- a/src/nco/nco_var_rth.h
+++ b/src/nco/nco_var_rth.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_rth.h,v 1.34 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_rth.h,v 1.37 2013/07/16 18:39:43 zender Exp $ */
 
 /* Purpose: Variable arithmetic */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -24,7 +24,7 @@
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_cnf_typ.h" /* Conform variable types */
 #include "nco_ctl.h" /* Program flow control functions */
-#include "nco_rth_flt.h" /* Float-precision arithmetic */
+#include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
 #include "nco_sng_utl.h" /* String utilities */
 
 #ifdef __cplusplus
@@ -69,7 +69,7 @@ extern "C" {
    ptr_unn op2); /* I/O [val] Values of second operand (running sum) on input, values of new sum on output */
   
   void 
-  nco_var_copy_tll /* [fnc] Copy hyperslab variables of type var_typ from op1 to op2 */
+  nco_var_copy_tll /* [fnc] Copy hyperslab variables of type var_typ from op1 to op2, accounting for missing values in tally */
   (const nc_type type, /* I [enm] netCDF type */
    const long sz, /* I [nbr] Number of elements to copy */
    const int has_mss_val, /* I [flg] Flag for missing values */
diff --git a/src/nco/nco_var_scv.c b/src/nco/nco_var_scv.c
index 87a6d2d..9741c79 100644
--- a/src/nco/nco_var_scv.c
+++ b/src/nco/nco_var_scv.c
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_scv.c,v 1.36 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_scv.c,v 1.38 2013/10/05 07:36:30 zender Exp $ */
 
 /* Purpose: Arithmetic between variables and scalar values */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -126,8 +126,30 @@ var_scv_add /* [fnc] Add scalar to variable */
     } /* end else */
     break;
   } /* endif NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]+=scv_byte;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte) op1.bp[idx]+=scv_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_BYTE */
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]+=scv_ubyte;
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte) op1.ubp[idx]+=scv_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -256,8 +278,30 @@ var_scv_sub /* [fnc] Subtract scalar from variable */
     } /* end else */
     break;
   }
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]-=scv_byte;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte) op1.bp[idx]-=scv_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  }
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]-=scv_ubyte;
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte) op1.ubp[idx]-=scv_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
+  }
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -386,8 +430,30 @@ var_scv_mlt /* [fnc] Multiply variable by scalar */
     } /* end else */
     break;
   }
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]*=scv_byte;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte) op1.bp[idx]*=scv_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  }
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]*=scv_ubyte;
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte) op1.ubp[idx]*=scv_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
+  }
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -516,8 +582,30 @@ var_scv_dvd /* [fnc] Divide variable by scalar */
     } /* end else */
     break;
   } /* endif NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]/=scv_byte;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte) op1.bp[idx]/=scv_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_BYTE */
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]/=scv_ubyte;
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte) op1.ubp[idx]/=scv_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -646,8 +734,30 @@ scv_var_dvd /* [fnc] Divide scalar by variable */
     } /* end else */
     break;
   } /* endif NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]=scv_byte/op2.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op2.bp[idx] != mss_val_byte) op2.bp[idx]=scv_byte/op2.bp[idx];
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_BYTE */
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]=scv_ubyte/op2.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op2.ubp[idx] != mss_val_ubyte) op2.ubp[idx]=scv_ubyte/op2.ubp[idx];
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -790,8 +900,30 @@ var_scv_mod /* [fnc] Modulo variable by scalar */
     } /* end else */
     break;
   } /* endif NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.bp[idx]%=scv_byte;
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.bp[idx] != mss_val_byte) op1.bp[idx]%=scv_byte;
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_BYTE */
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op1.ubp[idx]%=scv_ubyte;
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op1.ubp[idx] != mss_val_ubyte) op1.ubp[idx]%=scv_ubyte;
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
@@ -931,8 +1063,30 @@ scv_var_mod /* [fnc] Modulo scalar by variable */
     } /* end else */
     break;
   } /* endif NC_UINT64 */
-  case NC_BYTE: break; /* Do nothing */
-  case NC_UBYTE: break; /* Do nothing */
+  case NC_BYTE:{
+    const nco_byte scv_byte=scv->val.b; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.bp[idx]=scv_byte%op2.bp[idx];
+    }else{
+      const nco_byte mss_val_byte=*mss_val.bp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op2.bp[idx] != mss_val_byte) op2.bp[idx]=scv_byte%op2.bp[idx];
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_BYTE */
+  case NC_UBYTE:{
+    const nco_ubyte scv_ubyte=scv->val.ub; 
+    if(!has_mss_val){
+      for(idx=0;idx<sz;idx++) op2.ubp[idx]=scv_ubyte%op2.ubp[idx];
+    }else{
+      const nco_ubyte mss_val_ubyte=*mss_val.ubp; /* Temporary variable reduces de-referencing */
+      for(idx=0;idx<sz;idx++){
+	if(op2.ubp[idx] != mss_val_ubyte) op2.ubp[idx]=scv_ubyte%op2.ubp[idx];
+      } /* end for */
+    } /* end else */
+    break;
+  } /* endif NC_UBYTE */
   case NC_CHAR: break; /* Do nothing */
   case NC_STRING: break; /* Do nothing */
   default: nco_dfl_case_nc_type_err(); break;
diff --git a/src/nco/nco_var_scv.h b/src/nco/nco_var_scv.h
index 02f29d0..e2ab9f9 100644
--- a/src/nco/nco_var_scv.h
+++ b/src/nco/nco_var_scv.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_scv.h,v 1.25 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_scv.h,v 1.27 2013/07/16 18:39:43 zender Exp $ */
 
 /* Purpose: Arithmetic between variables and scalar values */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -23,7 +23,7 @@
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_cnf_typ.h" /* Conform variable types */
-#include "nco_rth_flt.h" /* Float-precision arithmetic */
+#include "nco_rth_flt.h" /* Float-precision arithmetic, MSVC macros */
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/src/nco/nco_var_utl.c b/src/nco/nco_var_utl.c
index b211cad..d9d465b 100644
--- a/src/nco/nco_var_utl.c
+++ b/src/nco/nco_var_utl.c
@@ -1,240 +1,19 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_utl.c,v 1.176 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_utl.c,v 1.350 2013/10/22 03:03:46 zender Exp $ */
 
 /* Purpose: Variable utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 #include "nco_var_utl.h" /* Variable utilities */
 
-int /* O [id] Output file variable ID */
-nco_cpy_var_dfn /* [fnc] Copy variable metadata from input to output file */
-(const int in_id, /* I [id] netCDF input file ID */
- const int out_id, /* I [id] netCDF output file ID */
- const char *rec_dmn_nm, /* I [sng] Output file record dimension name  */
- const char * const var_nm, /* I [sng] Input variable name */
- const int dfl_lvl) /* I [enm] Deflate level [0..9] */
-{
-  /* Purpose: Copy variable metadata from input netCDF file to output netCDF file
-     Routine does not take into account user-specified limits
-     It just copies what it finds
-     Routine copies_variable by variable, old-style, used only by ncks */
-
-  const char fnc_nm[]="nco_cpy_var_dfn()"; /* [sng] Function name */
-
-  int *dmn_in_id;
-  int *dmn_out_id;
-  int fl_fmt; /* [enm] Output file format */
-  int idx;
-  int nbr_dim;
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int var_in_id;
-  int var_out_id;
-  int rec_dmn_out_id=NCO_REC_DMN_UNDEFINED;
-  
-  nc_type var_type;
-  
-  /* Is requested variable already in output file? */
-  rcd=nco_inq_varid_flg(out_id,var_nm,&var_out_id);
-  if(rcd == NC_NOERR) return var_out_id;
-  /* Is requested variable in input file? */
-  rcd=nco_inq_varid_flg(in_id,var_nm,&var_in_id);
-  if(rcd != NC_NOERR) (void)fprintf(stdout,"%s: %s reports ERROR unable to find variable \"%s\"\n",prg_nm_get(),fnc_nm,var_nm);
-  
-  /* Get type of variable and number of dimensions */
-  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_type,&nbr_dim,(int *)NULL,(int *)NULL);
-
-  /* Get unlimited dimension in output */
-  (void)nco_inq(out_id,(int*)NULL,(int*)NULL,(int*)NULL,&rec_dmn_out_id);
-  
-  /* Recall:
-     1. Dimensions must be defined before variables
-     2. Variables must be defined before attributes */
-
-  /* Allocate space to hold dimension IDs */
-  dmn_in_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  dmn_out_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  
-  /* Get dimension IDs */
-  (void)nco_inq_vardimid(in_id,var_in_id,dmn_in_id);
-  
-  /* Get dimension sizes and names */
-  for(idx=0;idx<nbr_dim;idx++){
-    char dmn_nm[NC_MAX_NAME];
-    long dmn_sz;
-    int rcd_lcl; /* [rcd] Return code */
-    
-    (void)nco_inq_dim(in_id,dmn_in_id[idx],dmn_nm,&dmn_sz);
-    
-    /* Has dimension been defined in output file? */
-    rcd_lcl=nco_inq_dimid_flg(out_id,dmn_nm,dmn_out_id+idx);
-    
-    /* Define dimension in output file if necessary */
-    if(rcd_lcl != NC_NOERR){
-      if(!rec_dmn_nm || strcmp(dmn_nm,rec_dmn_nm)){
-	(void)nco_def_dim(out_id,dmn_nm,dmn_sz,dmn_out_id+idx);
-      }else{
-	(void)nco_def_dim(out_id,dmn_nm,NC_UNLIMITED,dmn_out_id+idx);
-        rec_dmn_out_id=dmn_out_id[idx];
-      } /* end else */ 
-
-    } /* end if */
-
-    /* Die if record dimension is not first dimension */
-    if(idx>0 && dmn_out_id[idx]==rec_dmn_out_id){
-      (void)fprintf(stdout,"%s: ERROR You defined the output record dimension to be \"%s\". Yet in the input variable \"%s\" the record dimension is dimension number %d. NCO (and the netCDF3 API) only supports the record dimension beging the first dimension. Consider using ncpdq to permute the location of the record dimension in the input file.\n",prg_nm_get(),rec_dmn_nm,var_nm,idx+1);  
-      nco_exit(EXIT_FAILURE);
-    } /* end if */
-
-  } /* end loop over dim */
-  
-  /* Define variable in output file */
-  (void)nco_def_var(out_id,var_nm,var_type,nbr_dim,dmn_out_id,&var_out_id);
-
-  /* Duplicate netCDF4 settings when possible */
-  rcd=nco_inq_format(out_id,&fl_fmt);
-  if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
-    /* Deflation */
-    if(nbr_dim > 0){
-      int shuffle; /* [flg] Turn on shuffle filter */
-      int deflate; /* [flg] Turn on deflate filter */
-      int dfl_lvl_in; /* [enm] Deflate level [0..9] */
-      rcd=nco_inq_var_deflate(in_id,var_in_id,&shuffle,&deflate,&dfl_lvl_in);
-      /* Copy original deflation settings */
-      if(deflate || shuffle) (void)nco_def_var_deflate(out_id,var_out_id,shuffle,deflate,dfl_lvl_in);
-      /* Overwrite HDF Lempel-Ziv compression level, if requested */
-      if(dfl_lvl > 0) (void)nco_def_var_deflate(out_id,var_out_id,(int)True,(int)True,dfl_lvl);
-    } /* endif */
-
-    /* NB: Copy/set chunking information in nco_cnk_sz_set(), not here! */
-
-  } /* !NC_FORMAT_NETCDF4 */ 
-  
-  /* Free space holding dimension IDs */
-  dmn_in_id=(int *)nco_free(dmn_in_id);
-  dmn_out_id=(int *)nco_free(dmn_out_id);
-  
-  return var_out_id;
-} /* end nco_cpy_var_dfn() */
-
-int /* O [id] Output file variable ID */
-nco_cpy_var_dfn_lmt /* Copy variable metadata from input to output file */
-(const int in_id, /* I [id] netCDF input file ID */
- const int out_id, /* I [id] netCDF output file ID */
- const char *rec_dmn_nm, /* I [sng] Output file record dimension name  */
- const char * const var_nm, /* I [sng] Input variable name */
- CST_X_PTR_CST_PTR_CST_Y(lmt_all_sct,lmt_all_lst), /* I [sct] Hyperslab limits */
- const int lmt_all_lst_nbr, /* I [nbr] Number of hyperslab limits */
- const int dfl_lvl) /* I [enm] Deflate level [0..9] */
-{
-  /* Purpose: Copy variable metadata from input netCDF file to output netCDF file
-     This routine truncates dimensions in variable definition in output file according to user-specified limits.
-     Routine copies_variable by variable, old-style, used only by ncks */
-
-  int *dmn_in_id;
-  int *dmn_out_id;
-  int fl_fmt; /* [enm] Output file format */
-  int idx;
-  int nbr_dim;
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int var_in_id;
-  int var_out_id;
-  int rec_dmn_out_id=NCO_REC_DMN_UNDEFINED;
-  
-  nc_type var_type;
-
-  /* Is requested variable already in output file? */
-  rcd=nco_inq_varid_flg(out_id,var_nm,&var_out_id);
-  if(rcd == NC_NOERR) return var_out_id;
-  /* Is requested variable already in input file? */
-  rcd=nco_inq_varid_flg(in_id,var_nm,&var_in_id);
-  if(rcd != NC_NOERR) (void)fprintf(stdout,"%s: ERROR unable to find variable \"%s\"\n",prg_nm_get(),var_nm);
-  
-  /* Get type of variable and number of dimensions */
-  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_type,&nbr_dim,(int *)NULL,(int *)NULL);
-
-  /* Get unlimited dimension in output */
-  (void)nco_inq(out_id,(int*)NULL,(int*)NULL,(int*)NULL,&rec_dmn_out_id);
-  
-  /* Recall:
-     1. Dimensions must be defined before variable
-     2. Variable must be defined before attributes */
-     
-  /* Allocate space to hold dimension IDs */
-  dmn_in_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  dmn_out_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  
-  /* Get dimension IDs */
-  (void)nco_inq_vardimid(in_id,var_in_id,dmn_in_id);
-  
-  /* Get dimension sizes and names */
-  for(idx=0;idx<nbr_dim;idx++){
-    char dmn_nm[NC_MAX_NAME];
-    long dmn_sz;
-    int rcd_lcl; /* [rcd] Return code */
-    
-    (void)nco_inq_dim(in_id,dmn_in_id[idx],dmn_nm,&dmn_sz);
-    
-    /* Has dimension been defined in output file? */
-    rcd_lcl=nco_inq_dimid_flg(out_id,dmn_nm,dmn_out_id+idx);
-    
-    /* If dimension has not been defined, copy it */
-    if(rcd_lcl != NC_NOERR){
-      if(!rec_dmn_nm || strcmp(dmn_nm,rec_dmn_nm)){
-	int lmt_all_idx;
-
-	/* Does dimension have user-specified limits? */
-	for(lmt_all_idx=0;lmt_all_idx<lmt_all_lst_nbr;lmt_all_idx++){
-	  if(lmt_all_lst[lmt_all_idx]->lmt_dmn[0]->id == dmn_in_id[idx]){
-	    dmn_sz=lmt_all_lst[lmt_all_idx]->dmn_cnt;
-	    break;
-	  } /* end if */
-	} /* end loop over lmt_all_idx */
-	(void)nco_def_dim(out_id,dmn_nm,dmn_sz,dmn_out_id+idx);
-      }else{
-	(void)nco_def_dim(out_id,dmn_nm,NC_UNLIMITED,dmn_out_id+idx);
-        rec_dmn_out_id=dmn_out_id[idx];
-      } /* end else */
-    } /* end if */
-
-  } /* end loop over dim */
-  
-  /* Define variable in output file */
-  (void)nco_def_var(out_id,var_nm,var_type,nbr_dim,dmn_out_id,&var_out_id);
-  
-  /* Duplicate netCDF4 settings when possible */
-  rcd=nco_inq_format(out_id,&fl_fmt);
-  if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
-    /* Deflation */
-    if(nbr_dim > 0){
-      int shuffle; /* [flg] Turn on shuffle filter */
-      int deflate; /* [flg] Turn on deflate filter */
-      int dfl_lvl_in; /* [enm] Deflate level [0..9] */
-      rcd=nco_inq_var_deflate(in_id,var_in_id,&shuffle,&deflate,&dfl_lvl_in);
-      /* Copy original deflation settings */
-      if(deflate || shuffle) (void)nco_def_var_deflate(out_id,var_out_id,shuffle,deflate,dfl_lvl_in);
-      /* Overwrite HDF Lempel-Ziv compression level, if requested */
-      if(dfl_lvl > 0) (void)nco_def_var_deflate(out_id,var_out_id,(int)True,(int)True,dfl_lvl);
-    } /* endif */
-
-    /* NB: Copy/set chunking information in nco_cnk_sz_set(), not here! */
-
-  } /* !NC_FORMAT_NETCDF4 */ 
-  
-  /* Free space holding dimension IDs */
-  dmn_in_id=(int *)nco_free(dmn_in_id);
-  dmn_out_id=(int *)nco_free(dmn_out_id);
-  
-  return var_out_id;
-} /* end nco_cpy_var_dfn_lmt() */
-
 void
 nco_cpy_var_val /* [fnc] Copy variable from input to output file, no limits */
 (const int in_id, /* I [id] netCDF input file ID */
  const int out_id, /* I [id] netCDF output file ID */
  FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
- const nco_bool NCO_BNR_WRT, /* I [flg] Write binary file */
+ const md5_sct * const md5, /* I [flg] MD5 Configuration */
  const char *var_nm) /* I [sng] Variable name */
 {
   /* NB: nco_cpy_var_val() contains OpenMP critical region */
@@ -245,8 +24,9 @@ nco_cpy_var_val /* [fnc] Copy variable from input to output file, no limits */
   const char fnc_nm[]="nco_cpy_var_val()"; /* [sng] Function name */
 
   int *dmn_id;
+
+  int dmn_nbr;
   int idx;
-  int nbr_dim;
   int nbr_dmn_in;
   int nbr_dmn_out;
   int var_in_id;
@@ -255,87 +35,90 @@ nco_cpy_var_val /* [fnc] Copy variable from input to output file, no limits */
   long *dmn_cnt;
   long *dmn_sz;
   long *dmn_srt;
+
   long var_sz=1L;
 
-  nc_type var_type;
+  nc_type var_typ;
 
   void *void_ptr;
 
   /* Get var_id for requested variable from both files */
   (void)nco_inq_varid(in_id,var_nm,&var_in_id);
   (void)nco_inq_varid(out_id,var_nm,&var_out_id);
-  
+
   /* Get type and number of dimensions for variable */
-  (void)nco_inq_var(out_id,var_out_id,(char *)NULL,&var_type,&nbr_dmn_out,(int *)NULL,(int *)NULL);
-  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_type,&nbr_dmn_in,(int *)NULL,(int *)NULL);
+  (void)nco_inq_var(out_id,var_out_id,(char *)NULL,&var_typ,&nbr_dmn_out,(int *)NULL,(int *)NULL);
+  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_typ,&nbr_dmn_in,(int *)NULL,(int *)NULL);
   if(nbr_dmn_out != nbr_dmn_in){
-    (void)fprintf(stdout,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file. \nHINT: When using -A (append) option, all appended variables must be the same rank in the input file as in the output file. The ncwa operator is useful at ridding variables of extraneous (size = 1) dimensions. See how at http://nco.sf.net/nco.html#ncwa\n",prg_nm_get(),nbr_dmn_in,var_nm,nbr_dmn_out);
+    (void)fprintf(stderr,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file\nHINT: When using -A (append) option, all appended variables must be the same rank in the input file as in the output file. The ncwa operator is useful at ridding variables of extraneous (size = 1) dimensions. See how at http://nco.sf.net/nco.html#ncwa\nIf you wish to completely replace the existing output file definition and values of the variable %s by those in t [...]
     nco_exit(EXIT_FAILURE);
   } /* endif */
-  nbr_dim=nbr_dmn_out;
-  
+  dmn_nbr=nbr_dmn_out;
+
   /* Allocate space to hold dimension IDs */
-  dmn_cnt=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  dmn_sz=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_srt=(long *)nco_malloc(nbr_dim*sizeof(long));
-  
+  dmn_cnt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
+  dmn_sz=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_srt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+
   /* Get dimension IDs from input file */
   (void)nco_inq_vardimid(in_id,var_in_id,dmn_id);
-  
+
   /* Get dimension sizes from input file */
-  for(idx=0;idx<nbr_dim;idx++){
+  for(idx=0;idx<dmn_nbr;idx++){
     /* nc_inq_dimlen() returns maximum value used so far in writing record dimension data
-       Until record variable has been written, nc_inq_dimlen() returns dmn_sz=0 for record dimension in output file
-       Thus we read input file for dimension sizes */
+    Until record variable has been written, nc_inq_dimlen() returns dmn_sz=0 for record dimension in output file
+    Thus we read input file for dimension sizes */
     (void)nco_inq_dimlen(in_id,dmn_id[idx],dmn_cnt+idx);
 
     /* Initialize indicial offset and stride arrays */
     dmn_srt[idx]=0L;
     var_sz*=dmn_cnt[idx];
   } /* end loop over dim */
-      
-  /* 20111130 TODO nco1029 warn on ncks -A when dim(old_record) != dim(new_record) */
-  if(nbr_dim > 0){
+
+  /* Allocate enough space to hold variable */
+  void_ptr=(void *)nco_malloc_dbg(var_sz*nco_typ_lng(var_typ),"Unable to malloc() value buffer when copying hypserslab from input to output file",fnc_nm);
+
+  /* Get variable */
+  if(dmn_nbr == 0){
+    nco_get_var1(in_id,var_in_id,0L,void_ptr,var_typ);
+    nco_put_var1(out_id,var_out_id,0L,void_ptr,var_typ);
+  }else{ /* end if variable is scalar */
+    if(var_sz > 0){ /* Allow for zero-size record variables */
+      nco_get_vara(in_id,var_in_id,dmn_srt,dmn_cnt,void_ptr,var_typ);
+      nco_put_vara(out_id,var_out_id,dmn_srt,dmn_cnt,void_ptr,var_typ);
+    } /* end if var_sz */
+  } /* end if variable is an array */
+  /* Perform MD5 digest of input and output data if requested */
+  if(md5) (void)nco_md5_chk(md5,var_nm,var_sz*nco_typ_lng(var_typ),out_id,dmn_srt,dmn_cnt,void_ptr);
+  /* Write unformatted binary data */
+  if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
+
+  /* 20111130 Fixes TODO nco1029: Warn on ncks -A when dim(old_record) != dim(new_record) */
+  if(dmn_nbr > 0){
     int rec_dmn_id=NCO_REC_DMN_UNDEFINED; /* [id] Record dimension ID in input file */
     int rcd=NC_NOERR; /* [rcd] Return code */
     long rec_dmn_sz=0L; /* [nbr] Record dimension size in output file */
-    rcd=nco_inq_unlimdim_flg(in_id,&rec_dmn_id); 
+    rcd+=nco_inq_unlimdim(in_id,&rec_dmn_id); 
     /* If input file has record dimension ... */
-    if(rcd == NC_NOERR){ 
+    if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
       /* ... used as record dimension of this variable...  */
       if(rec_dmn_id == dmn_id[0]){
-	rcd=nco_inq_unlimdim(out_id,&rec_dmn_id); 
-	/* ... and if output file has record dimension ... */
-	if(rcd == NC_NOERR){ 
-	  (void)nco_inq_dimlen(out_id,rec_dmn_id,&rec_dmn_sz);
-	  /* ... and record dimension size in output file is non-zero (meaning at least one record has been written) ... */
-	  if(rec_dmn_sz > 0){
-	    /* ... then check input vs. output record dimension sizes ... */
-	    if(rec_dmn_sz != dmn_cnt[0]){
-	      (void)fprintf(stderr,"%s: WARNING record dimension size of %s changes between input and output files from %ld to %ld. Appended variable %s will likely be corrupt.\n",prg_nm_get(),var_nm,dmn_cnt[0],rec_dmn_sz,var_nm);
-	    } /* endif sizes are incommensurate */
-	  } /* endif records exist in output file */
-	} /* endif output file has record dimension */
+        rcd+=nco_inq_unlimdim(out_id,&rec_dmn_id); 
+        /* ... and if output file has record dimension ... */
+        if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
+          (void)nco_inq_dimlen(out_id,rec_dmn_id,&rec_dmn_sz);
+          /* ... and record dimension size in output file is non-zero (meaning at least one record has been written) ... */
+          if(rec_dmn_sz > 0){
+            /* ... then check input vs. output record dimension sizes ... */
+            if(rec_dmn_sz != dmn_cnt[0]){
+              (void)fprintf(stderr,"%s: WARNING record dimension size of %s changes between input and output files from %ld to %ld. Appended variable %s may (likely) be corrupt.\n",nco_prg_nm_get(),var_nm,dmn_cnt[0],rec_dmn_sz,var_nm);
+            } /* endif sizes are incommensurate */
+          } /* endif records exist in output file */
+        } /* endif output file has record dimension */
       } /* endif this variable uses input file record dimension */
     } /* endif input file has record dimension */
   } /* endif this variable is not a scalar */
-    
-  /* Allocate enough space to hold variable */
-  void_ptr=(void *)nco_malloc_dbg(var_sz*nco_typ_lng(var_type),"Unable to malloc() value buffer when copying hypserslab from input to output file",fnc_nm);
-
-  /* Get variable */
-  if(nbr_dim==0){
-    nco_get_var1(in_id,var_in_id,0L,void_ptr,var_type);
-    nco_put_var1(out_id,var_out_id,0L,void_ptr,var_type);
-  }else{ /* end if variable is scalar */
-    if(var_sz > 0){ /* Allow for zero-size record variables */
-      nco_get_vara(in_id,var_in_id,dmn_srt,dmn_cnt,void_ptr,var_type);
-      nco_put_vara(out_id,var_out_id,dmn_srt,dmn_cnt,void_ptr,var_type);
-    } /* end if var_sz */
-  } /* end if variable is an array */
-  /* Write unformatted binary data */
-  if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
 
   /* Free space that held dimension IDs */
   dmn_cnt=(long *)nco_free(dmn_cnt);
@@ -348,12 +131,320 @@ nco_cpy_var_val /* [fnc] Copy variable from input to output file, no limits */
 
 } /* end nco_cpy_var_val() */
 
+nco_bool /* O [flg] Faster copy on Multi-record Multi-variable netCDF3 files */
+nco_use_mm3_workaround /* [fnc] Use faster copy on Multi-record Multi-variable netCDF3 files? */
+(const int in_id, /* I [id] Input file ID */
+ const int fl_out_fmt) /* I [enm] Output file format */
+{
+  /* Purpose: Determine whether to use copy algorithm designed to speed writes on 
+     netCDF3 files containing multiple record variables.
+     In such cases massive slowdowns are common on Multi-record Multi-variable netCDF3 files
+     Also the problem can occur with normal (4096 B) Blocksize Filesystems
+     Based on Russ Rew's code in nccopy.c 20120306
+
+     Testing:
+     ncks -O -C -D 4 -v one,two,one_dmn_rec_var,two_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
+
+     20120307: NCO Open Discussion Forum exchanges with Russ Rew:
+     "When accessing data from netCDF classic or 64-bit offset format files
+     that have multiple record variables and a lot of records on a file
+     system with large disk block size relative to a record's worth of data
+     for one or more record variables, access the data a record at a time
+     instead of a variable at a time."
+
+     20120312:
+     "Hi Russ,
+     
+     I'm tidying up that patch in NCO, and have some further questions.
+     In order to prioritize patching more of NCO, I want to know how the
+     slowdown reading compares to the slowdown writing.
+     To simplify my questions, let's use the abbreviations MM3 and
+     MM4 for netCDF3 and netCDF4 Multi-record Multi-variable files,
+     respectively. My understanding is that MM3s are susceptible to the  
+     slowdown, while MM4s are not, and that writing MM3s without the
+     patch incurs incurs more of a penalty than reading MM3s.
+     So this is how I prioritize implementing the MM3 patch:
+     
+     1. When copying MM3 to MM3. Done in ncks 4.1.0, TBD in others.
+     2. When copying MM4 to MM3. Done in ncks 4.1.0, TBD in others.
+     3. When copying MM3 to MM4. Done in ncks 4.2.6, TBD in others.
+     4. When reading MM3 and not writing anything. Not done anywhere.
+     
+     Currently ncks always uses the algorithm for cases 1 and 2 (i.e.,
+     whenever writing to an MM3), but not for cases 3 and 4.
+     
+     The rest of NCO does not yet use the MM3 algorithm, yet there are many 
+     places where it would potentially benefit. I've heard through the
+     years that sometimes ncecat slows to a crawl. Perhaps the MM3 slowdown
+     is responsible. On the bright side, ncra and ncrcat are immune from
+     the slowdown because they already read/write all record variables 
+     record-by-record. 
+     
+     Does the prioritization above make sense? If so I will next patch
+     the rest of NCO to do cases 1 and 2, before patching anything to do
+     cases 3 and 4."
+     
+     20120315:
+     "Hi Charlie,
+     That sounds right to me, because when you're just reading a small
+     portion of a disk block, you only incur the extra time for reading
+     data you won't use., but when you're writing, you have to read it all
+     in and rewrite the part you're changing as well as the data you didn't
+     change.  So writing with large disk blocks would seem to require twice
+     the I/O of reading.
+     
+     In nccopy, I just implemented the algorithm in cases 1 and 3; case 4
+     doesn't occur.  I had thought case 2 currently wasn't very common, so
+     it could wait, but your question has led me to rethink this.  A fairly
+     common use of case 2 is converting a compressed netCDF-4 classic model
+     file to an uncompressed classic file, for use with applications that
+     haven't been linked to a netCDF-4 library or in archives that will
+     continue to use classic format.
+     
+     I've been trying to figure out whether implementing case 2 for
+     compressed input could require significantly more chunk cache than not
+     using the MM3 algorithm, if you want to avoid uncompressing the same
+     data over and over again.  But I think just having enough chunk cache
+     to hold the largest compressed chunk for any record variable would be
+     sufficient, so I've tentatively concluded that it's not an issue.
+     (Where things get complicated is copying MM4 to MM4 while rechunking,
+     to improve access times for read access patterns that don't match the
+     way the data was written.)
+     
+     Thanks for presenting your prioritization.  It looks like I've got
+     some more work to do, implementing case 2 in nccopy." */
+
+  int dmn_nbr;
+  int fl_in_fmt; /* [enm] Input file format */
+  int idx;
+  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int rec_var_nbr=0; /* [nbr] Number of record variables */
+  int var_nbr=0; /* [nbr] Number of variables */
+
+  int *dmn_id;
+
+  nco_bool USE_MM3_WORKAROUND=False; /* [flg] Faster copy on Multi-record Multi-variable netCDF3 files */
+
+  (void)nco_inq_format(in_id,&fl_in_fmt);
+
+  /* No advantage to workaround unless reading from or writing to netCDF3 file */
+  if(
+    (fl_out_fmt == NC_FORMAT_CLASSIC || fl_out_fmt == NC_FORMAT_64BIT) || /* Cases 1 & 2 above, i.e., MM3->MM3 & MM4->MM3 */
+    ((fl_in_fmt == NC_FORMAT_CLASSIC || fl_in_fmt == NC_FORMAT_64BIT) && /* Case 3 above, i.e., MM3->MM4 */
+    (fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC)) ||
+    False)
+  {
+    /* Subsequently, assume output is netCDF3 or classic-compatible netCDF4
+    If file contains record dimension (and netCDF3 files can have only one record dimension)
+    NB: fxm Following check only detects cases where MM3 conditions exist root group (not sub-groups)
+    Copying MM3-worthy subgroup from netCDF4 file to netCDF3 flat file produces false-negative */
+    rcd=nco_inq_unlimdim(in_id,&rec_dmn_id);
+    if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
+      /* Slowdown only occurs in files with more than one record variable */
+      rcd+=nco_inq_nvars(in_id,&var_nbr);
+      if(var_nbr > 0){
+        for(idx=0;idx<var_nbr;idx++){
+          rcd+=nco_inq_varndims(in_id,idx,&dmn_nbr);
+          if(dmn_nbr > 0){
+            dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
+            rcd+=nco_inq_vardimid(in_id,idx,dmn_id);
+            /* netCDF3 requires record dimension to be first dimension */
+            if(dmn_id[0] == rec_dmn_id){
+              rec_var_nbr++;
+              if(rec_var_nbr > 1) USE_MM3_WORKAROUND=True;
+            } /* endif record dimnesion */
+            if(dmn_id) dmn_id=(int*)nco_free(dmn_id);
+          } /* endif dmn_nbr > 0 */
+          if(USE_MM3_WORKAROUND) break;
+        } /* end loop over variables */
+      } /* endif var_nbr > 0 */
+    } /* endif file contains record dimnsion */
+  } /* endif file is netCDF3 */
+
+  return USE_MM3_WORKAROUND;
+} /* end nco_use_mm3_workaround() */
+
+void
+nco_cpy_rec_var_val /* [fnc] Copy all record variables, record-by-record, from input to output file, no limits */
+(const int in_id, /* I [id] netCDF input file ID */
+ FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
+ const md5_sct * const md5, /* I [flg] MD5 Configuration */
+ CST_X_PTR_CST_PTR_CST_Y(nm_id_sct,var_lst), /* I [sct] Record variables to be extracted */
+ const int var_nbr) /* I [nbr] Number of record variables */
+{
+  /* Purpose: Copy all record variables from input netCDF file to output netCDF file
+     Routine does not account for user-specified limits, it just copies what it finds
+     Routine copies record-by-record, for all variables, old-style, called only by ncks
+     Used only by MM3 workaround and therefore routine assumes:
+     1. Input file is netCDF3
+     2. All variables in var_lst are record variables
+     NB: Rationale for MM3 workaround is kept in header to routine nco_use_mm3_workaround() */
+
+  const char fnc_nm[]="nco_cpy_rec_var_val()"; /* [sng] Function name */
+
+  int *dmn_id;
+
+  int dmn_idx;
+  int dmn_nbr;
+  int nbr_dmn_in;
+  int nbr_dmn_out;
+  int rec_dmn_id;
+  int rec_dmn_out_id;
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int var_idx;
+  int var_in_id;
+  int var_out_id;
+
+  long *dmn_cnt;
+  long *dmn_sz;
+  long *dmn_srt;
+
+  long rec_idx;
+  long rec_sz; /* [nbr] Size of record-dimension in input file */
+  long rec_out_sz; /* [nbr] Size of record-dimension in output file */
+  long var_sz=1L;
+
+  nc_type var_typ;
+
+  void *void_ptr;
+
+  /* Assume file contains record dimension (and netCDF3 files can have only one record dimension) */
+  rcd+=nco_inq_unlimdim(in_id,&rec_dmn_id);
+  assert(rec_dmn_id != NCO_REC_DMN_UNDEFINED);
+  rcd+=nco_inq_dimlen(in_id,rec_dmn_id,&rec_sz);
+
+  for(rec_idx=0;rec_idx<rec_sz;rec_idx++){
+    for(var_idx=0;var_idx<var_nbr;var_idx++){
+      /* Re-initialize accumulated variables */
+      var_sz=1L;
+      /* Mimic standard code path debugging information */
+      if(nco_dbg_lvl_get() >= nco_dbg_var && !fp_bnr && rec_idx == 0) (void)fprintf(stderr,"%s, ",var_lst[var_idx]->nm);
+      if(nco_dbg_lvl_get() >= nco_dbg_var && rec_idx == 0) (void)fflush(stderr);
+
+      /* Get ID of requested variable from both files */
+      (void)nco_inq_varid(var_lst[var_idx]->grp_id_in,var_lst[var_idx]->nm,&var_in_id);
+      (void)nco_inq_varid(var_lst[var_idx]->grp_id_out,var_lst[var_idx]->nm,&var_out_id);
+      (void)nco_inq_var(var_lst[var_idx]->grp_id_out,var_out_id,(char *)NULL,&var_typ,&nbr_dmn_out,(int *)NULL,(int *)NULL);
+      (void)nco_inq_var(var_lst[var_idx]->grp_id_in,var_in_id,(char *)NULL,&var_typ,&nbr_dmn_in,(int *)NULL,(int *)NULL);
+      if(nbr_dmn_out != nbr_dmn_in){
+        (void)fprintf(stderr,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file\nHINT: When using -A (append) option, all appended variables must be the same rank in the input file as in the output file. The ncwa operator is useful at ridding variables of extraneous (size = 1) dimensions. See how at http://nco.sf.net/nco.html#ncwa\nIf you wish to completely replace the existing output file definition and values of the variable %s by those  [...]
+        nco_exit(EXIT_FAILURE);
+      } /* endif */
+      dmn_nbr=nbr_dmn_out;
+
+      /* Allocate space to hold dimension IDs */
+      dmn_cnt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+      dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
+      dmn_sz=(long *)nco_malloc(dmn_nbr*sizeof(long));
+      dmn_srt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+
+      /* Get dimension IDs from input file */
+      (void)nco_inq_vardimid(var_lst[var_idx]->grp_id_in,var_in_id,dmn_id);
+
+      /* Get non-record dimension sizes from input file */
+      for(dmn_idx=1;dmn_idx<dmn_nbr;dmn_idx++){
+        (void)nco_inq_dimlen(var_lst[var_idx]->grp_id_in,dmn_id[dmn_idx],dmn_cnt+dmn_idx);
+        /* Initialize indicial offset and stride arrays */
+        dmn_srt[dmn_idx]=0L;
+        var_sz*=dmn_cnt[dmn_idx];
+      } /* end loop over dim */
+      /* Configure hyperslab access for current record */
+      dmn_id[0]=rec_dmn_id;
+      dmn_cnt[0]=1L;
+      dmn_srt[0]=rec_idx;
+
+      /* Allocate enough space to hold one record of this variable */
+      void_ptr=(void *)nco_malloc_dbg(var_sz*nco_typ_lng(var_typ),"Unable to malloc() value buffer when copying hypserslab from input to output file",fnc_nm);
+
+      /* Get and put one record of variable */
+      if(var_sz > 0){ /* Allow for zero-size record variables */
+        nco_get_vara(var_lst[var_idx]->grp_id_in,var_in_id,dmn_srt,dmn_cnt,void_ptr,var_typ);
+        nco_put_vara(var_lst[var_idx]->grp_id_out,var_out_id,dmn_srt,dmn_cnt,void_ptr,var_typ);
+      } /* end if var_sz */
+
+      /* 20111130 TODO nco1029 warn on ncks -A when dim(old_record) != dim(new_record)
+      One check of this condition, per variable, is enough
+      In regular (non-MM3 workaround) case, we check this condition after reading/writing whole variable
+      In MM3 workaround-case, check condition after writing last record
+      20130127: fxm bug here when user eliminates record variables using --fix_rec_dmn
+      In that case output netCDF3 file does not have record variable so nco_inq_unlimdim() and nco_inq_dimlen() fail
+      Since following code is purely diagnostic, assume that these failures are due to using --fix_rec_dmn 
+      And therefore, well, ignore them :) */
+      if(rec_idx == rec_sz-1){ 
+        rcd=nco_inq_unlimdim(var_lst[var_idx]->grp_id_out,&rec_dmn_out_id); 
+        if(rec_dmn_out_id != NCO_REC_DMN_UNDEFINED){
+          /* ... and if output file has record dimension ... */
+          (void)nco_inq_dimlen(var_lst[var_idx]->grp_id_out,rec_dmn_out_id,&rec_out_sz);
+          /* ... and record dimension size in output file is non-zero (meaning at least one record has been written) ... */
+          if(rec_out_sz > 0){
+            /* ... then check input vs. output record dimension sizes ... */
+            if(rec_sz != rec_out_sz){
+              (void)fprintf(stderr,"%s: WARNING record dimension size of %s changes between input and output files from %ld to %ld. Appended variable %s may (likely) be corrupt.\n",nco_prg_nm_get(),var_lst[var_idx]->nm,rec_sz,rec_out_sz,var_lst[var_idx]->nm);
+            } /* endif sizes are incommensurate */
+          } /* endif records have already been written to output file */
+        } /* endif record dimension exists in output file */
+      } /* endif last record in variable in input file */
+
+      /* Free space that held dimension IDs */
+      dmn_cnt=(long *)nco_free(dmn_cnt);
+      dmn_id=(int *)nco_free(dmn_id);
+      dmn_sz=(long *)nco_free(dmn_sz);
+      dmn_srt=(long *)nco_free(dmn_srt);
+
+      /* Free space that held variable */
+      void_ptr=nco_free(void_ptr);
+
+    } /* end loop over variables */
+  } /* end loop over records */
+
+  /* Corner cases require a loop over variables but not records */
+  if(md5 || fp_bnr){
+    for(var_idx=0;var_idx<var_nbr;var_idx++){
+      /* Re-initialize accumulated variables */
+      var_sz=1L;
+      /* Get ID of requested variable from both files */
+      (void)nco_inq_varid(var_lst[var_idx]->grp_id_in,var_lst[var_idx]->nm,&var_in_id);
+      (void)nco_inq_var(var_lst[var_idx]->grp_id_in,var_in_id,(char *)NULL,&var_typ,&dmn_nbr,(int *)NULL,(int *)NULL);
+      /* Allocate space to hold dimension IDs */
+      dmn_cnt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+      dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
+      dmn_sz=(long *)nco_malloc(dmn_nbr*sizeof(long));
+      dmn_srt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+      /* Get dimension IDs from input file */
+      (void)nco_inq_vardimid(var_lst[var_idx]->grp_id_in,var_in_id,dmn_id);
+      /* Get dimension sizes from input file */
+      for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+        (void)nco_inq_dimlen(var_lst[var_idx]->grp_id_in,dmn_id[dmn_idx],dmn_cnt+dmn_idx);
+        /* Initialize indicial offset and stride arrays */
+        dmn_srt[dmn_idx]=0L;
+        var_sz*=dmn_cnt[dmn_idx];
+      } /* end loop over dim */
+      /* Allocate enough space to hold this entire variable */
+      void_ptr=(void *)nco_malloc_dbg(var_sz*nco_typ_lng(var_typ),"Unable to malloc() value buffer when doing MD5 or binary write on variable",fnc_nm);
+      /* Get variable */
+      if(var_sz > 0) nco_get_vara(var_lst[var_idx]->grp_id_in,var_in_id,dmn_srt,dmn_cnt,void_ptr,var_typ);
+      /* Perform MD5 digest of input and output data if requested */
+      if(md5) (void)nco_md5_chk(md5,var_lst[var_idx]->nm,var_sz*nco_typ_lng(var_typ),var_lst[var_idx]->grp_id_out,dmn_srt,dmn_cnt,void_ptr);
+      /* Write unformatted binary data */
+      if(fp_bnr) nco_bnr_wrt(fp_bnr,var_lst[var_idx]->nm,var_sz,var_typ,void_ptr);
+      /* Free space that held dimension IDs */
+      dmn_cnt=(long *)nco_free(dmn_cnt);
+      dmn_id=(int *)nco_free(dmn_id);
+      dmn_sz=(long *)nco_free(dmn_sz);
+      dmn_srt=(long *)nco_free(dmn_srt);
+      /* Free space that held variable */
+      void_ptr=nco_free(void_ptr);
+    } /* end loop over variables */
+  } /* end if */
+    
+} /* end nco_cpy_rec_var_val() */
+
 void
 nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simple hyperslabs */
 (const int in_id, /* I [id] netCDF input file ID */
  const int out_id, /* I [id] netCDF output file ID */
  FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
- const nco_bool NCO_BNR_WRT, /* I [flg] Write binary file */
  char *var_nm, /* I [sng] Variable name */
  const lmt_sct * const lmt, /* I [sct] Hyperslab limits */
  const int lmt_nbr) /* I [nbr] Number of hyperslab limits */
@@ -373,8 +464,8 @@ nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simpl
   int *dmn_id;
 
   int dmn_idx;
+  int dmn_nbr;
   int lmt_idx;
-  int nbr_dim;
   int nbr_dmn_in;
   int nbr_dmn_out;
   int var_in_id;
@@ -390,40 +481,40 @@ nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simpl
 
   long var_sz=1L;
 
-  nc_type var_type;
+  nc_type var_typ;
 
   void *void_ptr;
 
   /* Get var_id for requested variable from both files */
   nco_inq_varid(in_id,var_nm,&var_in_id);
   nco_inq_varid(out_id,var_nm,&var_out_id);
-  
+
   /* Get type and number of dimensions for variable */
-  (void)nco_inq_var(out_id,var_out_id,(char *)NULL,&var_type,&nbr_dmn_out,(int *)NULL,(int *)NULL);
-  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_type,&nbr_dmn_in,(int *)NULL,(int *)NULL);
+  (void)nco_inq_var(out_id,var_out_id,(char *)NULL,&var_typ,&nbr_dmn_out,(int *)NULL,(int *)NULL);
+  (void)nco_inq_var(in_id,var_in_id,(char *)NULL,&var_typ,&nbr_dmn_in,(int *)NULL,(int *)NULL);
   if(nbr_dmn_out != nbr_dmn_in){
-    (void)fprintf(stderr,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file\n",prg_nm_get(),nbr_dmn_in,var_nm,nbr_dmn_out);
+    (void)fprintf(stderr,"%s: ERROR attempt to write %d-dimensional input variable %s to %d-dimensional space in output file\nHINT: When using -A (append) option, all appended variables must be the same rank in the input file as in the output file. The ncwa operator is useful at ridding variables of extraneous (size = 1) dimensions. See how at http://nco.sf.net/nco.html#ncwa\nIf you wish to completely replace the existing output file definition and values of the variable %s by those in t [...]
     nco_exit(EXIT_FAILURE);
   } /* endif */
-  nbr_dim=nbr_dmn_out;
-  
+  dmn_nbr=nbr_dmn_out;
+
   /* Allocate space to hold dimension IDs */
-  dmn_cnt=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_id=(int *)nco_malloc(nbr_dim*sizeof(int));
-  dmn_in_srt=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_map=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_out_srt=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_srd=(long *)nco_malloc(nbr_dim*sizeof(long));
-  dmn_sz=(long *)nco_malloc(nbr_dim*sizeof(long));
-  
+  dmn_cnt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_id=(int *)nco_malloc(dmn_nbr*sizeof(int));
+  dmn_in_srt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_map=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_out_srt=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_srd=(long *)nco_malloc(dmn_nbr*sizeof(long));
+  dmn_sz=(long *)nco_malloc(dmn_nbr*sizeof(long));
+
   /* Get dimension IDs from input file */
   (void)nco_inq_vardimid(in_id,var_in_id,dmn_id);
-  
+
   /* Get dimension sizes from input file */
-  for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
-  /* nc_inq_dimlen() returns maximum value used so far in writing record dimension data
-     Until a record variable has been written, nc_inq_dimlen() returns dmn_sz=0 for record dimension in output file
-     Thus we read input file for dimension sizes */
+  for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+    /* nc_inq_dimlen() returns maximum value used so far in writing record dimension data
+    Until a record variable has been written, nc_inq_dimlen() returns dmn_sz=0 for record dimension in output file
+    Thus we read input file for dimension sizes */
 
     /* dmn_cnt may be overwritten by user-specified limits */
     (void)nco_inq_dimlen(in_id,dmn_id[dmn_idx],dmn_sz+dmn_idx);
@@ -438,30 +529,30 @@ nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simpl
     /* Decide whether this dimension has user-specified limits */
     for(lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
       if(lmt[lmt_idx].id == dmn_id[dmn_idx]){
-	dmn_cnt[dmn_idx]=lmt[lmt_idx].cnt;
-	dmn_in_srt[dmn_idx]=lmt[lmt_idx].srt;
-	dmn_srd[dmn_idx]=lmt[lmt_idx].srd;
-	if(lmt[lmt_idx].srt > lmt[lmt_idx].end) WRP=True;
-	if(lmt[lmt_idx].srd != 1L) SRD=True;
-	break;
+        dmn_cnt[dmn_idx]=lmt[lmt_idx].cnt;
+        dmn_in_srt[dmn_idx]=lmt[lmt_idx].srt;
+        dmn_srd[dmn_idx]=lmt[lmt_idx].srd;
+        if(lmt[lmt_idx].srt > lmt[lmt_idx].end) WRP=True;
+        if(lmt[lmt_idx].srd != 1L) SRD=True;
+        break;
       } /* end if */
     } /* end loop over lmt_idx */
 
     var_sz*=dmn_cnt[dmn_idx];
   } /* end loop over dim */
-      
+
   /* Allocate enough space to hold variable */
-  void_ptr=(void *)nco_malloc_dbg(var_sz*nco_typ_lng(var_type),"Unable to malloc() value buffer when copying hypserslab from input to output file",fnc_nm);
+  void_ptr=(void *)nco_malloc_dbg(var_sz*nco_typ_lng(var_typ),"Unable to malloc() value buffer when copying hypserslab from input to output file",fnc_nm);
 
   /* Copy variable */
-  if(nbr_dim == 0){ /* Copy scalar */
-    nco_get_var1(in_id,var_in_id,0L,void_ptr,var_type);
-    nco_put_var1(out_id,var_out_id,0L,void_ptr,var_type);
-    if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
+  if(dmn_nbr == 0){ /* Copy scalar */
+    nco_get_var1(in_id,var_in_id,0L,void_ptr,var_typ);
+    nco_put_var1(out_id,var_out_id,0L,void_ptr,var_typ);
+    if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
   }else if(!WRP){ /* Copy contiguous array */
-    if(!SRD) nco_get_vara(in_id,var_in_id,dmn_in_srt,dmn_cnt,void_ptr,var_type); else nco_get_varm(in_id,var_in_id,dmn_in_srt,dmn_cnt,dmn_srd,(long *)NULL,void_ptr,var_type);
-    nco_put_vara(out_id,var_out_id,dmn_out_srt,dmn_cnt,void_ptr,var_type);
-    if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
+    if(!SRD) nco_get_vara(in_id,var_in_id,dmn_in_srt,dmn_cnt,void_ptr,var_typ); else nco_get_varm(in_id,var_in_id,dmn_in_srt,dmn_cnt,dmn_srd,(long *)NULL,void_ptr,var_typ);
+    nco_put_vara(out_id,var_out_id,dmn_out_srt,dmn_cnt,void_ptr,var_typ);
+    if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
   }else if(WRP){ /* Copy wrapped array */
     /* For wrapped data */
     long *dmn_in_srt_1=NULL;
@@ -470,67 +561,67 @@ nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simpl
     long *dmn_out_srt_2=NULL;
     long *dmn_cnt_1=NULL;
     long *dmn_cnt_2=NULL;
-    
-    dmn_in_srt_1=(long *)nco_malloc(nbr_dim*sizeof(long));
-    dmn_in_srt_2=(long *)nco_malloc(nbr_dim*sizeof(long));
-    dmn_out_srt_1=(long *)nco_malloc(nbr_dim*sizeof(long));
-    dmn_out_srt_2=(long *)nco_malloc(nbr_dim*sizeof(long));
-    dmn_cnt_1=(long *)nco_malloc(nbr_dim*sizeof(long));
-    dmn_cnt_2=(long *)nco_malloc(nbr_dim*sizeof(long));
-    
+
+    dmn_in_srt_1=(long *)nco_malloc(dmn_nbr*sizeof(long));
+    dmn_in_srt_2=(long *)nco_malloc(dmn_nbr*sizeof(long));
+    dmn_out_srt_1=(long *)nco_malloc(dmn_nbr*sizeof(long));
+    dmn_out_srt_2=(long *)nco_malloc(dmn_nbr*sizeof(long));
+    dmn_cnt_1=(long *)nco_malloc(dmn_nbr*sizeof(long));
+    dmn_cnt_2=(long *)nco_malloc(dmn_nbr*sizeof(long));
+
     /* Variable contains a wrapped dimension, requires two reads */
     /* For each dimension in the input variable */
-    for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
-      
+    for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+
       /* dmn_cnt may be overwritten by user-specified limits */
       (void)nco_inq_dimlen(in_id,dmn_id[dmn_idx],dmn_sz+dmn_idx);
-      
+
       /* Set default vectors */
       dmn_cnt[dmn_idx]=dmn_cnt_1[dmn_idx]=dmn_cnt_2[dmn_idx]=dmn_sz[dmn_idx];
       dmn_in_srt[dmn_idx]=dmn_in_srt_1[dmn_idx]=dmn_in_srt_2[dmn_idx]=0L;
       dmn_out_srt[dmn_idx]=dmn_out_srt_1[dmn_idx]=dmn_out_srt_2[dmn_idx]=0L;
       dmn_srd[dmn_idx]=1L;
       dmn_map[dmn_idx]=1L;
-      
+
       /* Is there a limit specified for this dimension? */
       for(lmt_idx=0;lmt_idx<lmt_nbr;lmt_idx++){
-	if(lmt[lmt_idx].id == dmn_id[dmn_idx]){ /* Yes, there is a limit on this dimension */
-	  dmn_cnt[dmn_idx]=dmn_cnt_1[dmn_idx]=dmn_cnt_2[dmn_idx]=lmt[lmt_idx].cnt;
-	  dmn_in_srt[dmn_idx]=dmn_in_srt_1[dmn_idx]=dmn_in_srt_2[dmn_idx]=lmt[lmt_idx].srt;
-	  dmn_srd[dmn_idx]=lmt[lmt_idx].srd;
-	  if(lmt[lmt_idx].srd != 1L) SRD=True;
-	  if(lmt[lmt_idx].srt > lmt[lmt_idx].end){ /* WRP true for this dimension */
-	    WRP=True;
-	    if(lmt[lmt_idx].srd != 1L){ /* SRD true for this dimension */
-	      long greatest_srd_multiplier_1st_hyp_slb; /* greatest integer m such that srt+m*srd < dmn_sz */
-	      long last_good_idx_1st_hyp_slb; /* C-index of last valid member of 1st hyperslab (= srt+m*srd) */
-	      long left_over_idx_1st_hyp_slb; /* # elements from first hyperslab to count towards current stride */
-	      /* long first_good_idx_2nd_hyp_slb; *//* C-index of first valid member of 2nd hyperslab, if any */
-
-	      /* NB: Perform these operations with integer arithmetic or else! */
-	      dmn_cnt_1[dmn_idx]=1L+(dmn_sz[dmn_idx]-lmt[lmt_idx].srt-1L)/lmt[lmt_idx].srd; 
-	      /* Wrapped dimensions with stride may not start at idx 0 on second read */
-	      greatest_srd_multiplier_1st_hyp_slb=(dmn_sz[dmn_idx]-lmt[lmt_idx].srt-1L)/lmt[lmt_idx].srd;
-	      last_good_idx_1st_hyp_slb=lmt[lmt_idx].srt+lmt[lmt_idx].srd*greatest_srd_multiplier_1st_hyp_slb;
-	      left_over_idx_1st_hyp_slb=dmn_sz[dmn_idx]-last_good_idx_1st_hyp_slb-1L;
-	      /* first_good_idx_2nd_hyp_slb=(last_good_idx_1st_hyp_slb+lmt[lmt_idx].srd)%dmn_sz[dmn_idx];*/ /* Variable is unused but instructive anyway */
-	      dmn_in_srt_2[dmn_idx]=lmt[lmt_idx].srd-left_over_idx_1st_hyp_slb-1L;
-	    }else{ /* !SRD */
-	      dmn_in_srt_2[dmn_idx]=0L;
-	      dmn_cnt_1[dmn_idx]=dmn_sz[dmn_idx]-lmt[lmt_idx].srt;
-	    } /* end else */
-	    dmn_cnt_2[dmn_idx]=dmn_cnt[dmn_idx]-dmn_cnt_1[dmn_idx];
-	    dmn_out_srt_2[dmn_idx]=dmn_cnt_1[dmn_idx];
-	  } /* end if WRP */
-	  break; /* Move on to next dimension in variable */
-	} /* end if */
+        if(lmt[lmt_idx].id == dmn_id[dmn_idx]){ /* Yes, there is a limit on this dimension */
+          dmn_cnt[dmn_idx]=dmn_cnt_1[dmn_idx]=dmn_cnt_2[dmn_idx]=lmt[lmt_idx].cnt;
+          dmn_in_srt[dmn_idx]=dmn_in_srt_1[dmn_idx]=dmn_in_srt_2[dmn_idx]=lmt[lmt_idx].srt;
+          dmn_srd[dmn_idx]=lmt[lmt_idx].srd;
+          if(lmt[lmt_idx].srd != 1L) SRD=True;
+          if(lmt[lmt_idx].srt > lmt[lmt_idx].end){ /* WRP true for this dimension */
+            WRP=True;
+            if(lmt[lmt_idx].srd != 1L){ /* SRD true for this dimension */
+              long greatest_srd_multiplier_1st_hyp_slb; /* greatest integer m such that srt+m*srd < dmn_sz */
+              long last_good_idx_1st_hyp_slb; /* C-index of last valid member of 1st hyperslab (= srt+m*srd) */
+              long left_over_idx_1st_hyp_slb; /* # elements from first hyperslab to count towards current stride */
+              /* long first_good_idx_2nd_hyp_slb; *//* C-index of first valid member of 2nd hyperslab, if any */
+
+              /* NB: Perform these operations with integer arithmetic or else! */
+              dmn_cnt_1[dmn_idx]=1L+(dmn_sz[dmn_idx]-lmt[lmt_idx].srt-1L)/lmt[lmt_idx].srd; 
+              /* Wrapped dimensions with stride may not start at idx 0 on second read */
+              greatest_srd_multiplier_1st_hyp_slb=(dmn_sz[dmn_idx]-lmt[lmt_idx].srt-1L)/lmt[lmt_idx].srd;
+              last_good_idx_1st_hyp_slb=lmt[lmt_idx].srt+lmt[lmt_idx].srd*greatest_srd_multiplier_1st_hyp_slb;
+              left_over_idx_1st_hyp_slb=dmn_sz[dmn_idx]-last_good_idx_1st_hyp_slb-1L;
+              /* first_good_idx_2nd_hyp_slb=(last_good_idx_1st_hyp_slb+lmt[lmt_idx].srd)%dmn_sz[dmn_idx];*/ /* Variable is unused but instructive anyway */
+              dmn_in_srt_2[dmn_idx]=lmt[lmt_idx].srd-left_over_idx_1st_hyp_slb-1L;
+            }else{ /* !SRD */
+              dmn_in_srt_2[dmn_idx]=0L;
+              dmn_cnt_1[dmn_idx]=dmn_sz[dmn_idx]-lmt[lmt_idx].srt;
+            } /* end else */
+            dmn_cnt_2[dmn_idx]=dmn_cnt[dmn_idx]-dmn_cnt_1[dmn_idx];
+            dmn_out_srt_2[dmn_idx]=dmn_cnt_1[dmn_idx];
+          } /* end if WRP */
+          break; /* Move on to next dimension in variable */
+        } /* end if */
       } /* end loop over lmt */
     } /* end loop over dim */
-    
-    if(dbg_lvl_get() >= 5){
+
+    if(nco_dbg_lvl_get() >= 5){
       (void)fprintf(stderr,"\nvar = %s\n",var_nm);
       (void)fprintf(stderr,"dim\tcnt\tsrtin1\tcnt1\tsrtout1\tsrtin2\tcnt2\tsrtout2\n");
-      for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++) (void)fprintf(stderr,"%d\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t\n",dmn_idx,dmn_cnt[dmn_idx],dmn_in_srt_1[dmn_idx],dmn_cnt_1[dmn_idx],dmn_out_srt_1[dmn_idx],dmn_in_srt_2[dmn_idx],dmn_cnt_2[dmn_idx],dmn_out_srt_2[dmn_idx]);
+      for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++) (void)fprintf(stderr,"%d\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t%ld\t\n",dmn_idx,dmn_cnt[dmn_idx],dmn_in_srt_1[dmn_idx],dmn_cnt_1[dmn_idx],dmn_out_srt_1[dmn_idx],dmn_in_srt_2[dmn_idx],dmn_cnt_2[dmn_idx],dmn_out_srt_2[dmn_idx]);
       (void)fflush(stderr);
     } /* end if dbg */
 
@@ -546,58 +637,58 @@ nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simpl
 
       long idx;
 
-      if(nbr_dim == 1){
-	char dmn_nm[NC_MAX_NAME];
-	
-	(void)nco_inq_dimname(in_id,dmn_id[0],dmn_nm);
-	if(!strcmp(dmn_nm,var_nm)) CRD=True; else CRD=False;
+      if(dmn_nbr == 1){
+        char dmn_nm[NC_MAX_NAME];
+
+        (void)nco_inq_dimname(in_id,dmn_id[0],dmn_nm);
+        if(!strcmp(dmn_nm,var_nm)) CRD=True; else CRD=False;
       } /* end if */      
-      
+
       if(CRD && MNT){ /* If requested, apply monotonicity filter to wrapped coordinate */
-	(void)nco_get_vara(in_id,var_in_id,dmn_in_srt_1,dmn_cnt_1,void_ptr,var_type);
-	/* Convert coordinate to double */
-	for(idx=0;idx<var_sz;idx++){
-	  switch(var_type){
-	  case NC_FLOAT: /* val_dbl=void_ptr.fp[idx]; */break; 
-	  case NC_DOUBLE:
-	  case NC_INT:
-	  case NC_SHORT:
-	  case NC_CHAR:
-	  case NC_BYTE:
-	  case NC_UBYTE: break;
-	  case NC_USHORT: break;
-	  case NC_UINT: break;
-	  case NC_INT64: break;
-	  case NC_UINT64: break;
-	  case NC_STRING: break;
-	  default: nco_dfl_case_nc_type_err(); break;
-	  } /* end switch */
-	  
-	  /* Ensure val_dbl is between specified bounds */
-	  wrp_spn=wrp_max-wrp_min;
-	  if(val_dbl < wrp_min) val_dbl+=wrp_spn;
-	  if(val_dbl > wrp_max) val_dbl-=wrp_spn;
-	} /* end loop over idx */
+        (void)nco_get_vara(in_id,var_in_id,dmn_in_srt_1,dmn_cnt_1,void_ptr,var_typ);
+        /* Convert coordinate to double */
+        for(idx=0;idx<var_sz;idx++){
+          switch(var_typ){
+          case NC_FLOAT: /* val_dbl=void_ptr.fp[idx]; */break; 
+          case NC_DOUBLE:
+          case NC_INT:
+          case NC_SHORT:
+          case NC_CHAR:
+          case NC_BYTE:
+          case NC_UBYTE: break;
+          case NC_USHORT: break;
+          case NC_UINT: break;
+          case NC_INT64: break;
+          case NC_UINT64: break;
+          case NC_STRING: break;
+          default: nco_dfl_case_nc_type_err(); break;
+          } /* end switch */
+
+          /* Ensure val_dbl is between specified bounds */
+          wrp_spn=wrp_max-wrp_min;
+          if(val_dbl < wrp_min) val_dbl+=wrp_spn;
+          if(val_dbl > wrp_max) val_dbl-=wrp_spn;
+        } /* end loop over idx */
       } /* endif CRD && MNT */
     } /* endif False */
-    
+
     /* fxm: Binary writes will not work for wrapped and stride variables until var_sz is changed to reflect actual size */
     if(!SRD){
-      (void)nco_get_vara(in_id,var_in_id,dmn_in_srt_1,dmn_cnt_1,void_ptr,var_type);
-      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_1,dmn_cnt_1,void_ptr,var_type);
-      if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
-      (void)nco_get_vara(in_id,var_in_id,dmn_in_srt_2,dmn_cnt_2,void_ptr,var_type);
-      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_2,dmn_cnt_2,void_ptr,var_type);
-      if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
+      (void)nco_get_vara(in_id,var_in_id,dmn_in_srt_1,dmn_cnt_1,void_ptr,var_typ);
+      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_1,dmn_cnt_1,void_ptr,var_typ);
+      if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
+      (void)nco_get_vara(in_id,var_in_id,dmn_in_srt_2,dmn_cnt_2,void_ptr,var_typ);
+      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_2,dmn_cnt_2,void_ptr,var_typ);
+      if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
     }else{ /* SRD */
-      (void)nco_get_varm(in_id,var_in_id,dmn_in_srt_1,dmn_cnt_1,dmn_srd,(long *)NULL,void_ptr,var_type);
-      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_1,dmn_cnt_1,void_ptr,var_type);
-      if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
-      (void)nco_get_varm(in_id,var_in_id,dmn_in_srt_2,dmn_cnt_2,dmn_srd,(long *)NULL,void_ptr,var_type);
-      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_2,dmn_cnt_2,void_ptr,var_type);
-      if(NCO_BNR_WRT) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_type,void_ptr);
+      (void)nco_get_varm(in_id,var_in_id,dmn_in_srt_1,dmn_cnt_1,dmn_srd,(long *)NULL,void_ptr,var_typ);
+      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_1,dmn_cnt_1,void_ptr,var_typ);
+      if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
+      (void)nco_get_varm(in_id,var_in_id,dmn_in_srt_2,dmn_cnt_2,dmn_srd,(long *)NULL,void_ptr,var_typ);
+      (void)nco_put_vara(out_id,var_out_id,dmn_out_srt_2,dmn_cnt_2,void_ptr,var_typ);
+      if(fp_bnr) nco_bnr_wrt(fp_bnr,var_nm,var_sz,var_typ,void_ptr);
     } /* end else SRD */
-    
+
     dmn_in_srt_1=(long *)nco_free(dmn_in_srt_1);
     dmn_in_srt_2=(long *)nco_free(dmn_in_srt_2);
     dmn_out_srt_1=(long *)nco_free(dmn_out_srt_1);
@@ -633,13 +724,14 @@ nco_var_dpl /* [fnc] Duplicate input variable */
   var_sct *var_cpy;
 
   var_cpy=(var_sct *)nco_malloc(sizeof(var_sct));
-
+  
   /* Shallow-copy structure itself */
   (void)memcpy((void *)var_cpy,(const void *)var,sizeof(var_sct));
-
+  
   /* Make sure var_free() frees names when variable is destructed */
   if(var->nm) var_cpy->nm=(char *)strdup(var->nm);
-
+  if(var->nm_fll) var_cpy->nm_fll=(char *)strdup(var->nm_fll);
+  
   /* Deep-copy dyamically allocated arrays from original to copy */
   if(var->val.vp){
     var_cpy->val.vp=(void *)nco_malloc_dbg(var_cpy->sz*nco_typ_lng(var_cpy->type),"Unable to malloc() value buffer in variable deep-copy",fnc_nm);
@@ -726,7 +818,7 @@ nco_var_get /* [fnc] Allocate, retrieve variable hyperslab from disk to memory *
 
   var->val.vp=(void *)nco_malloc_dbg(var->sz*nco_typ_lng(var->typ_dsk),"Unable to malloc() value buffer when retrieving variable from disk",fnc_nm);
 
-  if(False) (void)fprintf(stdout,"%s: DEBUG: fxm TODO nco354. Calling nco_get_vara() for %s with nc_id=%d, var_id=%d, var_srt=%li, var_cnt = %li, var_val = %g, var_typ = %s\n",prg_nm_get(),var->nm,nc_id,var->id,var->srt[0],var->cnt[0],var->val.fp[0],nco_typ_sng(var->typ_dsk));
+  if(False) (void)fprintf(stdout,"%s: DEBUG: fxm TODO nco354. Calling nco_get_vara() for %s with nc_id=%d, var_id=%d, var_srt=%li, var_cnt = %li, var_val = %g, var_typ = %s\n",nco_prg_nm_get(),var->nm,nc_id,var->id,var->srt[0],var->cnt[0],var->val.fp[0],nco_typ_sng(var->typ_dsk));
 
   /* 20051021: Removed this potentially critical region by parallelizing 
      over in_id's in calling code */
@@ -739,15 +831,15 @@ nco_var_get /* [fnc] Allocate, retrieve variable hyperslab from disk to memory *
   /* 20050629: Removing this critical region and calling with identical nc_id's causes multiple ncwa/ncra regressions */
   { /* begin potential OpenMP critical */
     /* Block is critical/thread-safe for identical/distinct in_id's */
-
+    
     /* Is stride > 1? */
     for(idx=0;idx<var->nbr_dim;idx++) srd_prd*=var->srd[idx];
 
     if(srd_prd == 1L){ 
       if(var->sz > 1L)
-	(void)nco_get_vara(nc_id,var->id,var->srt,var->cnt,var->val.vp,var->typ_dsk);
+        (void)nco_get_vara(nc_id,var->id,var->srt,var->cnt,var->val.vp,var->typ_dsk);
       else
-	(void)nco_get_var1(nc_id,var->id,var->srt,var->val.vp,var->typ_dsk);
+        (void)nco_get_var1(nc_id,var->id,var->srt,var->val.vp,var->typ_dsk);
     }else{ 
       (void)nco_get_varm(nc_id,var->id,var->srt,var->cnt,var->srd,(long *)NULL,var->val.vp,var->typ_dsk);
     } /* endif non-unity stride  */
@@ -758,7 +850,7 @@ nco_var_get /* [fnc] Allocate, retrieve variable hyperslab from disk to memory *
      In between subsequent calls to nco_var_get(), variable may be unpacked 
      When this occurs, packing flags in variable structure will not match disk
      Thus it is important to refresh (some) packing attributes on each read */
-
+  
   /* Synchronize missing value type with (possibly) new disk type */
   /* fxm nco427: pck_dbg potential big bug on non-packed types in ncra here,
      due to potential double conversion of missing_value
@@ -769,23 +861,23 @@ nco_var_get /* [fnc] Allocate, retrieve variable hyperslab from disk to memory *
      to break some ncra tests */
   if(var->pck_dsk) var=nco_cnv_mss_val_typ(var,var->typ_dsk);
   /*    var=nco_cnv_mss_val_typ(var,var->typ_dsk);*/
-
+  
   /* Type of variable and missing value in memory are now same as type on disk */
   var->type=var->typ_dsk; /* [enm] Type of variable in RAM */
-
+  
   /* Packing in RAM is now same as packing on disk pck_dbg 
      fxm: Following call to nco_pck_dsk_inq() is never necessary for non-packed variables */
   (void)nco_pck_dsk_inq(nc_id,var);
   
   /* Packing/Unpacking */
-  if(nco_is_rth_opr(prg_get())){
+  if(nco_is_rth_opr(nco_prg_id_get())){
     /* Arithmetic operators must unpack variables before performing arithmetic
        Otherwise arithmetic will produce garbage results */
     /* 20050519: Not sure why I originally made nco_var_upk() call SMP-critical
        20050629: Making this region multi-threaded causes no problems */
     if(var->pck_dsk) var=nco_var_upk(var);
   } /* endif arithmetic operator */
-  
+
 } /* end nco_var_get() */
 
 void
@@ -796,7 +888,9 @@ nco_xrf_dmn /* [fnc] Switch pointers to dimension structures so var->dim points
      Routine makes dim element of variable structure from nco_var_dpl() refer to counterparts
      of dimensions directly associated with variable it was duplicated from */
   int idx;
-  for(idx=0;idx<var->nbr_dim;idx++) var->dim[idx]=var->dim[idx]->xrf;
+  for(idx=0;idx<var->nbr_dim;idx++){
+    var->dim[idx]=var->dim[idx]->xrf;
+  }
 } /* end nco_xrf_dmn() */
 
 void
@@ -819,6 +913,7 @@ nco_var_free /* [fnc] Free all memory associated with variable structure */
   /* String values must be deep-free'd, everything else is a flat buffer */
   if(var->type == (nc_type)NC_STRING && var->val.vp != (void *)NULL) var->val.vp=(void *)nco_sng_lst_free((char **)var->val.vp,var->sz); else var->val.vp=nco_free(var->val.vp);
   var->nm=(char *)nco_free(var->nm);
+  var->nm_fll=(char *)nco_free(var->nm_fll);
   var->mss_val.vp=nco_free(var->mss_val.vp);
   var->tally=(long *)nco_free(var->tally);
   var->dmn_id=(int *)nco_free(var->dmn_id);
@@ -865,6 +960,7 @@ var_dfl_set /* [fnc] Set defaults for each member of variable structure */
 
   /* Set defaults to be overridden by available information */
   var->nm=NULL;
+  var->nm_fll=NULL;
   var->id=-1;
   var->nc_id=-1;
   var->type=NC_NAT; /* Type of variable in RAM */
@@ -959,206 +1055,180 @@ nco_var_dfn /* [fnc] Define variables and write their attributes to output file
   int idx;
   int dmn_idx;
   int fl_fmt; /* [enm] Output file format */
-  int prg_id; /* [enm] Program ID */
+  int nco_prg_id; /* [enm] Program ID */
   int rcd=NC_NOERR; /* [rcd] Return code */
 
   nc_type typ_out; /* [enm] Type in output file */
-  
-  prg_id=prg_get(); /* [enm] Program ID */
+
+  nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
 
   for(idx=0;idx<nbr_var;idx++){
 
-    /* Checking only nco_is_rth_opr() is too simplistic
-       1. All variables handled by arithmetic operators are currently unpacked on reading
-       2. However "fixed variables" appear in many arithemetic operators
-	  ncbo treats coordinate variables as fixed (does not subtract them)
-          ncra treats non-record variables as fixed (does not average them)
-	  ncwa treats variables without averaging dimensions as fixed (does not average them)
-	  It is best not to alter [un-]pack fixed (non-processed) variables
-       3. ncap, an arithmetic operator, also has "fixed variables", i.e., 
-          pre-existing non-LHS variables copied directly to output.
-	  These "fixed" ncap variables should remain unaltered
-	  However, this is not presently done
-	  nco_var_dfn() needs more information to handle "fixed" variables correctly because
-	  Some ncap "fixed" variables appear on RHS in definitions of LHS variables
-          These RHS fixed variables must be separately unpacked during RHS algebra
-	  Currently, ncap only calls nco_var_dfn() for fixed variables
-	  ncap uses its own routine, ncap_var_write(), for RHS variable definitions
-       4. All variables in non-arithmetic operators (except ncpdq) should remain un-altered
-       5. ncpdq is non-arithmetic operator
-          However, ncpdq specially handles fine-grained control [un-]packing options */
-    if(nco_is_rth_opr(prg_id)){
-      /* Arithmetic operators store values as unpacked... */
-      typ_out=var[idx]->typ_upk; 
-      /* ...with two exceptions...
-	 ncap [un-]packing precedes nco_var_dfn() call, sets var->type appropriately */
-      if(prg_id == ncap) typ_out=var[idx]->type;
-      /* ...and pass through fixed (non-processed) variables untouched... */
-      if(var[idx]->is_fix_var) typ_out=var[idx]->type;
-    }else{
-      /* Non-arithmetic operators leave things alone by default
-	 ncpdq first modifies var_out->type, then calls nco_var_dfn(), then [un-]packs */
-      typ_out=var[idx]->type;
-    } /* endif arithmetic operator */
+    /* Obtain netCDF type to define variable from NCO program ID */
+    typ_out=nco_get_typ(var[idx]);
 
     /* Is requested variable already in output file? */
     rcd=nco_inq_varid_flg(out_id,var[idx]->nm,&var[idx]->id);
 
     /* If variable has not been defined, define it */
     if(rcd != NC_NOERR){
-      
+
       /* TODO #116: There is a problem here in that var_out[idx]->nbr_dim is never explicitly set to the actual number of output dimensions, rather, it is simply copied from var[idx]. When var_out[idx] actually has 0 dimensions, the loop executes once anyway, and an erroneous index into the dmn_out[idx] array is attempted. Fix is to explicitly define var_out[idx]->nbr_dim. Until this is done, anything in ncwa that explicitly depends on var_out[idx]->nbr_dim is suspect. The real problem i [...]
-      if(dmn_ncl || prg_id == ncwa){
-	/* ...operator is ncwa and/or changes variable rank... */
-	int idx_ncl;
-	/* Initialize number of dimensions for current variable */
-	dmn_nbr=0;
-	for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++){
-	  /* Is dimension allowed in output file? */
-	  for(idx_ncl=0;idx_ncl<nbr_dmn_ncl;idx_ncl++){
-	    /* All I can say about this line, is...Yikes! 
-	       No, really, it indicates poor program design
-	       fxm: TODO nco374: have ncwa re-arrange output metadata prior to nco_var_dfn()
-	       Then delete this branch and use straightforward branch of code */
-	    if(var[idx]->xrf->dim[dmn_idx]->id == dmn_ncl[idx_ncl]->xrf->id) break;
-	  } /* end loop over idx_ncl */
-	  if(idx_ncl != nbr_dmn_ncl) dmn_id_vec[dmn_nbr++]=var[idx]->dim[dmn_idx]->id;
-	} /* end loop over dmn_idx */
+      if(dmn_ncl || nco_prg_id == ncwa){
+        /* ...operator is ncwa and/or changes variable rank... */
+        int idx_ncl;
+        /* Initialize number of dimensions for current variable */
+        dmn_nbr=0;
+        for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++){
+          /* Is dimension allowed in output file? */
+          for(idx_ncl=0;idx_ncl<nbr_dmn_ncl;idx_ncl++){
+            /* All I can say about this line, is...Yikes! 
+            No, really, it indicates poor program design
+            fxm: TODO nco374: have ncwa re-arrange output metadata prior to nco_var_dfn()
+            Then delete this branch and use straightforward branch of code */
+            if(var[idx]->xrf->dim[dmn_idx]->id == dmn_ncl[idx_ncl]->xrf->id){
+              break;
+            }
+          } /* end loop over idx_ncl */
+          if(idx_ncl != nbr_dmn_ncl){
+            dmn_id_vec[dmn_nbr++]=var[idx]->dim[dmn_idx]->id;
+          }
+        } /* end loop over dmn_idx */
       }else{ /* ...operator does not change variable rank so handle normally... */
-	/* More straightforward definition used by operators besides ncwa */
-	for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++){
-	  dmn_id_vec[dmn_idx]=var[idx]->dim[dmn_idx]->id;
-	} /* end loop over dmn_idx */
-	dmn_nbr=var[idx]->nbr_dim;
+        /* More straightforward definition used by operators besides ncwa */
+        for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++){
+          dmn_id_vec[dmn_idx]=var[idx]->dim[dmn_idx]->id;
+        } /* end loop over dmn_idx */
+        dmn_nbr=var[idx]->nbr_dim;
       } /* end else */
 
-      if(dbg_lvl_get() > 3 && prg_id != ncwa){
-	/* fxm TODO nco374 diagnostic information fails for ncwa since var[idx]->dim[dmn_idx]->nm
-	   contains _wrong name_ when variables will be averaged.
-	   ncwa does contain write name information now if retain_degenerate_dimensions 
-	   option is in effect, but this is the exception rather than the rule. */
-	(void)fprintf(stdout,"%s: DEBUG %s about to define variable %s with %d dimension%s%s",prg_nm_get(),fnc_nm,var[idx]->nm,dmn_nbr,(dmn_nbr == 1) ? "" : "s",(dmn_nbr > 0) ? " (ordinal,output ID): " : "");
-	for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
-	  (void)fprintf(stdout,"%s (%d,%s)%s",var[idx]->dim[dmn_idx]->nm,dmn_idx,"unknown",(dmn_idx < dmn_nbr-1) ? ", " : "");
-	} /* end loop over dmn */
-	(void)fprintf(stdout,"\n");
+      if(nco_dbg_lvl_get() > 3 && nco_prg_id != ncwa){
+        /* fxm TODO nco374 diagnostic information fails for ncwa since var[idx]->dim[dmn_idx]->nm
+        contains _wrong name_ when variables will be averaged.
+        ncwa does contain write name information now if retain_degenerate_dimensions 
+        option is in effect, but this is the exception rather than the rule. */
+        (void)fprintf(stdout,"%s: DEBUG %s about to define variable %s with %d dimension%s%s",nco_prg_nm_get(),fnc_nm,var[idx]->nm,dmn_nbr,(dmn_nbr == 1) ? "" : "s",(dmn_nbr > 0) ? " (ordinal,output ID): " : "");
+        for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+          (void)fprintf(stdout,"%s (%d,%s)%s",var[idx]->dim[dmn_idx]->nm,dmn_idx,"unknown",(dmn_idx < dmn_nbr-1) ? ", " : "");
+        } /* end loop over dmn */
+        (void)fprintf(stdout,"\n");
       } /* endif dbg */
 
       /* The all-important variable definition call itself... */
       (void)nco_def_var(out_id,var[idx]->nm,typ_out,dmn_nbr,dmn_id_vec,&var[idx]->id);
-      
+
       /* Set HDF Lempel-Ziv compression level, if requested */
       rcd=nco_inq_format(out_id,&fl_fmt);
       if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
-	/* Deflation */
-	if(dmn_nbr > 0){
-	  int shuffle; /* [flg] Turn on shuffle filter */
-	  int deflate; /* [flg] Turn on deflate filter */
-	  int dfl_lvl_in; /* [enm] Deflate level [0..9] */
-	  int var_in_id;
-	  /* Uncertain that output name always exists in input file */
-	  rcd=nco_inq_varid_flg(in_id,var[idx]->nm,&var_in_id);
-	  if(rcd == NC_NOERR){
-	    /* When output name is in input file, inquire input deflation level */
-	    rcd=nco_inq_var_deflate(in_id,var_in_id,&shuffle,&deflate,&dfl_lvl_in);
-	    /* Copy original deflation settings */
-	    if(deflate || shuffle) (void)nco_def_var_deflate(out_id,var[idx]->id,deflate,shuffle,dfl_lvl_in);
-	  } /* endif */
-	  /* Overwrite HDF Lempel-Ziv compression level, if requested */
-	  if(dfl_lvl > 0) (void)nco_def_var_deflate(out_id,var[idx]->id,(int)True,(int)True,dfl_lvl);
-	} /* endif */
+        /* Deflation */
+        if(dmn_nbr > 0){
+          int shuffle; /* [flg] Turn on shuffle filter */
+          int deflate; /* [flg] Turn on deflate filter */
+          int dfl_lvl_in; /* [enm] Deflate level [0..9] */
+          int var_in_id;
+          /* Uncertain that output name always exists in input file */
+          rcd=nco_inq_varid_flg(in_id,var[idx]->nm,&var_in_id);
+          if(rcd == NC_NOERR){
+            /* When output name is in input file, inquire input deflation level */
+            rcd=nco_inq_var_deflate(in_id,var_in_id,&shuffle,&deflate,&dfl_lvl_in);
+            /* Copy original deflation settings */
+            if(deflate || shuffle) (void)nco_def_var_deflate(out_id,var[idx]->id,deflate,shuffle,dfl_lvl_in);
+          } /* endif */
+          /* Overwrite HDF Lempel-Ziv compression level, if requested */
+          if(dfl_lvl > 0) (void)nco_def_var_deflate(out_id,var[idx]->id,(int)True,(int)True,dfl_lvl);
+        } /* endif */
       } /* endif netCDF4 */
 
-      if(dbg_lvl_get() > 3 && prg_id != ncwa){
-	/* fxm TODO nco374 diagnostic information fails for ncwa since var[idx]->dim[dmn_idx]->nm
-	   contains _wrong name_ when variables will be averaged.
-	   ncwa does contain write name information now if retain_degenerate_dimensions 
-	   option is in effect, but this is the exception rather than the rule. */
-	(void)fprintf(stdout,"%s: DEBUG %s defined variable %s with %d dimension%s%s",prg_nm_get(),fnc_nm,var[idx]->nm,dmn_nbr,(dmn_nbr == 1) ? "" : "s",(dmn_nbr > 0) ? " (ordinal,output ID): " : "");
-	for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
-	  (void)fprintf(stdout,"%s (%d,%d)%s",var[idx]->dim[dmn_idx]->nm,dmn_idx,dmn_id_vec[dmn_idx],(dmn_idx < dmn_nbr-1) ? ", " : "");
-	} /* end loop over dmn */
-	(void)fprintf(stdout,"\n");
+      if(nco_dbg_lvl_get() > 3 && nco_prg_id != ncwa){
+        /* fxm TODO nco374 diagnostic information fails for ncwa since var[idx]->dim[dmn_idx]->nm
+        contains _wrong name_ when variables will be averaged.
+        ncwa does contain write name information now if retain_degenerate_dimensions 
+        option is in effect, but this is the exception rather than the rule. */
+        (void)fprintf(stdout,"%s: DEBUG %s defined variable %s with %d dimension%s%s",nco_prg_nm_get(),fnc_nm,var[idx]->nm,dmn_nbr,(dmn_nbr == 1) ? "" : "s",(dmn_nbr > 0) ? " (ordinal,output ID): " : "");
+        for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+          (void)fprintf(stdout,"%s (%d,%d)%s",var[idx]->dim[dmn_idx]->nm,dmn_idx,dmn_id_vec[dmn_idx],(dmn_idx < dmn_nbr-1) ? ", " : "");
+        } /* end loop over dmn */
+        (void)fprintf(stdout,"\n");
       } /* endif dbg */
 
       /* endif variable has not yet been defined in output file */
     }else{
       /* Variable is already in output file---use existing definition
-	 This branch is executed, e.g., by operators in append mode */
-      (void)fprintf(stdout,"%s: WARNING Using existing definition of variable \"%s\" in %s\n",prg_nm_get(),var[idx]->nm,fl_out);
+      This branch is executed, e.g., by operators in append mode */
+      (void)fprintf(stdout,"%s: WARNING Using existing definition of variable \"%s\" in %s\n",nco_prg_nm_get(),var[idx]->nm,fl_out);
     } /* end if variable is already in output file */
 
     /* Copy all attributes except in cases where packing/unpacking is involved
-       0. Variable is unpacked on input, unpacked on output
-       --> Copy all attributes
-       1. Variable is packed on input, is not altered, and remains packed on output
-       --> Copy all attributes
-       2. Variable is packed on input, is unpacked for some reason, and will be unpacked on output
-       --> Copy all attributes except scale_factor and add_offset
-       3. Variable is packed on input, is unpacked for some reason, and will be packed on output (possibly with new packing attributes)
-       --> Copy all attributes, but scale_factor and add_offset must be overwritten later with new values
-       4. Variable is not packed on input, packing is performed, and output is packed
-       --> Copy all attributes, define dummy values for scale_factor and add_offset now, and write those values later, when they are known */
+    0. Variable is unpacked on input, unpacked on output
+    --> Copy all attributes
+    1. Variable is packed on input, is not altered, and remains packed on output
+    --> Copy all attributes
+    2. Variable is packed on input, is unpacked for some reason, and will be unpacked on output
+    --> Copy all attributes except scale_factor and add_offset
+    3. Variable is packed on input, is unpacked for some reason, and will be packed on output (possibly with new packing attributes)
+    --> Copy all attributes, but scale_factor and add_offset must be overwritten later with new values
+    4. Variable is not packed on input, packing is performed, and output is packed
+    --> Copy all attributes, define dummy values for scale_factor and add_offset now, and write those values later, when they are known */
 
     /* Do not copy packing attributes "scale_factor" and "add_offset" 
-       if variable is packed in input file and unpacked in output file 
-       Arithmetic operators calling nco_var_dfn() with fixed variables should leave them fixed
-       Currently ncap calls nco_var_dfn() only for fixed variables, so handle exception with ncap-specific condition */
+    if variable is packed in input file and unpacked in output file 
+    Arithmetic operators calling nco_var_dfn() with fixed variables should leave them fixed
+    Currently ncap calls nco_var_dfn() only for fixed variables, so handle exception with ncap-specific condition */
     /* Copy exising packing attributes, if any, unless... */
-    if(nco_is_rth_opr(prg_id) && /* ...operator is arithmetic... */
-       prg_id != ncap && /* ...and is not ncap (hence it must be, e.g., ncra, ncbo)... */
-       !var[idx]->is_fix_var && /* ...and variable is processed (not fixed)... */
-       var[idx]->xrf->pck_dsk) /* ...and variable is packed in input file... */
+    if(nco_is_rth_opr(nco_prg_id) && /* ...operator is arithmetic... */
+      nco_prg_id != ncap && /* ...and is not ncap (hence it must be, e.g., ncra, ncbo)... */
+      !var[idx]->is_fix_var && /* ...and variable is processed (not fixed)... */
+      var[idx]->xrf->pck_dsk) /* ...and variable is packed in input file... */
       PCK_ATT_CPY=False;
 
     /* Do not copy packing attributes when unpacking variables 
-       ncpdq is currently only operator that passes values other than nco_pck_plc_nil */
+    ncpdq is currently only operator that passes values other than nco_pck_plc_nil */
     if(nco_pck_plc == nco_pck_plc_upk) /* ...and variable will be _unpacked_ ... */
       PCK_ATT_CPY=False;
-    
+
     /* Recall that:
-       var      refers to output variable structure
-       var->xrf refers to input  variable structure 
-       ncpdq may pre-define packing attributes below regardless of PCK_ATT_CPY */ 
+    var      refers to output variable structure
+    var->xrf refers to input  variable structure 
+    ncpdq may pre-define packing attributes below regardless of PCK_ATT_CPY */ 
     (void)nco_att_cpy(in_id,out_id,var[idx]->xrf->id,var[idx]->id,PCK_ATT_CPY);
-    
+
     /* Create dummy packing attributes for ncpdq if necessary 
-       Must apply nearly same logic at end of ncpdq when writing final attributes
-       Recall ncap calls ncap_var_write() to define newly packed LHS variables 
-       If variable is not fixed (e.g., coordinate variables)...*/
+    Must apply nearly same logic at end of ncpdq when writing final attributes
+    Recall ncap calls ncap_var_write() to define newly packed LHS variables 
+    If variable is not fixed (e.g., coordinate variables)...*/
     if(!var[idx]->is_fix_var){
       /* ...and operator will attempt to pack some variables... */
       if(nco_pck_plc != nco_pck_plc_nil && nco_pck_plc != nco_pck_plc_upk){ 
-	/* ...and expanded variable is pack-able... */
-	if(nco_pck_plc_typ_get(nco_pck_map,var[idx]->typ_upk,(nc_type *)NULL)){
-	  /* ...and operator will pack this particular variable... */
-	  if(
-	     /* ...either because operator newly packs all variables... */
-	     (nco_pck_plc == nco_pck_plc_all_new_att) ||
-	     /* ...or because operator newly packs un-packed variables like this one... */
-	     (nco_pck_plc == nco_pck_plc_all_xst_att && !var[idx]->pck_ram) ||
-	     /* ...or because operator re-packs packed variables like this one... */
-	     (nco_pck_plc == nco_pck_plc_xst_new_att && var[idx]->pck_ram)
-	     ){
-	    
-	    /* ...then add/overwrite dummy scale_factor and add_offset attributes
-	       Overwrite these with correct values once known
-	       Adding dummy attributes of maximum possible size (NC_DOUBLE) now 
-	       reduces likelihood that netCDF layer will impose file copy 
-	       penalties when final attribute values are written later
-	       Either add_offset or scale_factor may be removed in nco_pck_val() 
-	       if nco_var_pck() packing algorithm did not require utilizing it */ 
-	    const char add_fst_sng[]="add_offset"; /* [sng] Unidata standard string for add offset */
-	    const char scl_fct_sng[]="scale_factor"; /* [sng] Unidata standard string for scale factor */
-	    val_unn zero_unn; /* [frc] Generic container for value 0.0 */
-	    var_sct *zero_var; /* [sct] NCO variable for value 0.0 */
-	    zero_unn.d=0.0; /* [frc] Generic container for value 0.0 */
-	    zero_var=scl_mk_var(zero_unn,typ_out); /* [sct] NCO variable for value 0.0 */
-	    (void)nco_put_att(out_id,var[idx]->id,scl_fct_sng,typ_out,1,zero_var->val.vp);
-	    (void)nco_put_att(out_id,var[idx]->id,add_fst_sng,typ_out,1,zero_var->val.vp);
-	    zero_var=(var_sct *)nco_var_free(zero_var);
-	  } /* endif this variable will be packed or re-packed */
-	} /* !nco_pck_plc_alw */
+        /* ...and expanded variable is pack-able... */
+        if(nco_pck_plc_typ_get(nco_pck_map,var[idx]->typ_upk,(nc_type *)NULL)){
+          /* ...and operator will pack this particular variable... */
+          if(
+            /* ...either because operator newly packs all variables... */
+            (nco_pck_plc == nco_pck_plc_all_new_att) ||
+            /* ...or because operator newly packs un-packed variables like this one... */
+            (nco_pck_plc == nco_pck_plc_all_xst_att && !var[idx]->pck_ram) ||
+            /* ...or because operator re-packs packed variables like this one... */
+            (nco_pck_plc == nco_pck_plc_xst_new_att && var[idx]->pck_ram)
+            ){
+
+              /* ...then add/overwrite dummy scale_factor and add_offset attributes
+              Overwrite these with correct values once known
+              Adding dummy attributes of maximum possible size (NC_DOUBLE) now 
+              reduces likelihood that netCDF layer will impose file copy 
+              penalties when final attribute values are written later
+              Either add_offset or scale_factor may be removed in nco_pck_val() 
+              if nco_var_pck() packing algorithm did not require utilizing it */ 
+              const char add_fst_sng[]="add_offset"; /* [sng] Unidata standard string for add offset */
+              const char scl_fct_sng[]="scale_factor"; /* [sng] Unidata standard string for scale factor */
+              val_unn zero_unn; /* [frc] Generic container for value 0.0 */
+              var_sct *zero_var; /* [sct] NCO variable for value 0.0 */
+              zero_unn.d=0.0; /* [frc] Generic container for value 0.0 */
+              zero_var=scl_mk_var(zero_unn,typ_out); /* [sct] NCO variable for value 0.0 */
+              (void)nco_put_att(out_id,var[idx]->id,scl_fct_sng,typ_out,1,zero_var->val.vp);
+              (void)nco_put_att(out_id,var[idx]->id,add_fst_sng,typ_out,1,zero_var->val.vp);
+              zero_var=(var_sct *)nco_var_free(zero_var);
+          } /* endif this variable will be packed or re-packed */
+        } /* !nco_pck_plc_alw */
       } /* endif nco_pck_plc involves packing */
     } /* endif variable is processed (not fixed) */
   } /* end loop over idx variables to define */
@@ -1178,7 +1248,7 @@ nco_var_val_cpy /* [fnc] Copy variables data from input to output file */
   int idx;
   int dmn_idx;
   long srd_prd=1L; /* [nbr] Product of strides */
-  
+
   for(idx=0;idx<nbr_var;idx++){
     var[idx]->xrf->val.vp=var[idx]->val.vp=(void *)nco_malloc(var[idx]->sz*nco_typ_lng(var[idx]->type));
     if(var[idx]->nbr_dim == 0){
@@ -1187,16 +1257,16 @@ nco_var_val_cpy /* [fnc] Copy variables data from input to output file */
     }else{ /* end if variable is scalar */
       if(var[idx]->sz > 0){ /* Do nothing for zero-size record variables */
 
-	/* Is stride > 1? */
-	for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++) srd_prd*=var[idx]->srd[dmn_idx];
+        /* Is stride > 1? */
+        for(dmn_idx=0;dmn_idx<var[idx]->nbr_dim;dmn_idx++) srd_prd*=var[idx]->srd[dmn_idx];
 
-	if(srd_prd == 1L){ 
-	  nco_get_vara(in_id,var[idx]->id,var[idx]->srt,var[idx]->cnt,var[idx]->val.vp,var[idx]->type);
-	  nco_put_vara(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->xrf->val.vp,var[idx]->type);
-	}else{
-	  (void)nco_get_varm(in_id,var[idx]->id,var[idx]->srt,var[idx]->cnt,var[idx]->srd,(long *)NULL,var[idx]->val.vp,var[idx]->type);
-	  (void)nco_put_varm(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->xrf->srd,(long *)NULL,var[idx]->xrf->val.vp,var[idx]->type);
-	} /* endif variable has non-unity stride */
+        if(srd_prd == 1L){ 
+          nco_get_vara(in_id,var[idx]->id,var[idx]->srt,var[idx]->cnt,var[idx]->val.vp,var[idx]->type);
+          nco_put_vara(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->xrf->val.vp,var[idx]->type);
+        }else{
+          (void)nco_get_varm(in_id,var[idx]->id,var[idx]->srt,var[idx]->cnt,var[idx]->srd,(long *)NULL,var[idx]->val.vp,var[idx]->type);
+          (void)nco_put_varm(out_id,var[idx]->xrf->id,var[idx]->xrf->srt,var[idx]->xrf->cnt,var[idx]->xrf->srd,(long *)NULL,var[idx]->xrf->val.vp,var[idx]->type);
+        } /* endif variable has non-unity stride */
       } /* end if var_sz */
     } /* end if variable is an array */
     var[idx]->val.vp=var[idx]->xrf->val.vp=nco_free(var[idx]->val.vp);
@@ -1204,10 +1274,281 @@ nco_var_val_cpy /* [fnc] Copy variables data from input to output file */
     
 } /* end nco_var_val_cpy() */
 
+
+
+nco_bool /* [flg] Variable is listed in a "coordinates" attribute */
+nco_is_spc_in_crd_att /* [fnc] Variable is listed in a "coordinates" attribute */
+(const int nc_id, /* I [id] netCDF file ID */
+ const int var_trg_id) /* I [id] Variable ID */
+{
+  /* Purpose: Is variable specified in a "coordinates" attribute?
+     Typical variables that appear in a "coordinates" attribute include ...
+     If so, it may be a "multi-dimensional coordinate" that should
+     undergo special treatment by arithmetic operators. */
+  nco_bool IS_SPC_IN_CRD_ATT=False; /* [flg] Variable is listed in a "coordinates" attribute  */
+
+  const char dlm_sng[]=" "; /* [sng] Delimiter string */
+  const char fnc_nm[]="nco_is_spc_in_crd_att()"; /* [sng] Function name */
+  char **crd_lst; /* [sng] 1D array of list elements */
+  char *att_val;
+  char att_nm[NC_MAX_NAME];
+  char var_nm[NC_MAX_NAME];
+  char var_trg_nm[NC_MAX_NAME];
+  int idx_att;
+  int idx_crd;
+  int idx_var;
+  int nbr_att;
+  int nbr_crd; /* [nbr] Number of coordinates specified in "coordinates" attribute */
+  int nbr_var; /* [nbr] Number of variables in file */
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int var_id; /* [id] Variable ID */
+  long att_sz;
+  nc_type att_typ;
+
+  /* May need variable name for later comparison to "coordinates" attribute */
+  rcd+=nco_inq_varname(nc_id,var_trg_id,var_trg_nm);
+  rcd+=nco_inq_nvars(nc_id,&nbr_var);
+
+  for(idx_var=0;idx_var<nbr_var;idx_var++){
+    /* This assumption, praise the Lord, is valid in netCDF2, netCDF3, and netCDF4 */
+    var_id=idx_var;
+
+    /* Find number of attributes */
+    rcd+=nco_inq_varnatts(nc_id,var_id,&nbr_att);
+    for(idx_att=0;idx_att<nbr_att;idx_att++){
+      rcd+=nco_inq_attname(nc_id,var_id,idx_att,att_nm);
+      /* Is attribute part of CF convention? */
+      if(!strcmp(att_nm,"coordinates")){
+        /* Yes, get list of specified attributes */
+        rcd+=nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
+        if(att_typ != NC_CHAR){
+          rcd=nco_inq_varname(nc_id,var_id,var_nm);
+          (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,var_nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+          return IS_SPC_IN_CRD_ATT;
+        } /* end if */
+        att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+        if(att_sz > 0) rcd=nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+        /* NUL-terminate attribute */
+        att_val[att_sz]='\0';
+        /* Split list into separate coordinate names
+        Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+        crd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_crd);
+        /* ...for each coordinate in "coordinates" attribute... */
+        for(idx_crd=0;idx_crd<nbr_crd;idx_crd++){
+          /* Does variable match name specified in coordinate list? */
+          if(!strcmp(var_trg_nm,crd_lst[idx_crd])) break;
+        } /* end loop over coordinates in list */
+        if(idx_crd!=nbr_crd) IS_SPC_IN_CRD_ATT=True;
+        /* Free allocated memory */
+        att_val=(char *)nco_free(att_val);
+        crd_lst=nco_sng_lst_free(crd_lst,nbr_crd);
+      } /* !coordinates */
+    } /* end loop over attributes */
+  } /* end loop over idx_var */
+
+  return IS_SPC_IN_CRD_ATT; /* [flg] Variable is listed in a "coordinates" attribute  */
+} /* end nco_is_spc_in_crd_att() */
+
+nco_bool /* [flg] Variable is listed in a "bounds" attribute */
+nco_is_spc_in_bnd_att /* [fnc] Variable is listed in a "bounds" attribute */
+(const int nc_id, /* I [id] netCDF file ID */
+ const int var_trg_id) /* I [id] Variable ID */
+{
+  /* Purpose: Is variable specified in a "bounds" attribute?
+     Typical variables that appear in a "bounds" attribute include "lat_bnds", "lon_bnds", etc.
+     Such variables may be "multi-dimensional coordinates" that should
+     undergo special treatment by arithmetic operators.
+     Routine based on nco_is_spc_in_crd_att() */
+  nco_bool IS_SPC_IN_BND_ATT=False; /* [flg] Variable is listed in a "bounds" attribute  */
+
+  const char dlm_sng[]=" "; /* [sng] Delimiter string */
+  const char fnc_nm[]="nco_is_spc_in_bnd_att()"; /* [sng] Function name */
+  char **bnd_lst; /* [sng] 1D array of list elements */
+  char *att_val;
+  char att_nm[NC_MAX_NAME];
+  char var_nm[NC_MAX_NAME];
+  char var_trg_nm[NC_MAX_NAME];
+  int idx_att;
+  int idx_bnd;
+  int idx_var;
+  int nbr_att;
+  int nbr_bnd; /* [nbr] Number of coordinates specified in "bounds" attribute */
+  int nbr_var; /* [nbr] Number of variables in file */
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int var_id; /* [id] Variable ID */
+  long att_sz;
+  nc_type att_typ;
+
+  /* May need variable name for later comparison to "bounds" attribute */
+  rcd+=nco_inq_varname(nc_id,var_trg_id,var_trg_nm);
+  rcd+=nco_inq_nvars(nc_id,&nbr_var);
+
+  for(idx_var=0;idx_var<nbr_var;idx_var++){
+    /* This assumption, praise the Lord, is valid in netCDF2, netCDF3, and netCDF4 */
+    var_id=idx_var;
+
+    /* Find number of attributes */
+    rcd+=nco_inq_varnatts(nc_id,var_id,&nbr_att);
+    for(idx_att=0;idx_att<nbr_att;idx_att++){
+      rcd+=nco_inq_attname(nc_id,var_id,idx_att,att_nm);
+      /* Is attribute part of CF convention? */
+      if(!strcmp(att_nm,"bounds")){
+        /* Yes, get list of specified attributes */
+        rcd+=nco_inq_att(nc_id,var_id,att_nm,&att_typ,&att_sz);
+        if(att_typ != NC_CHAR){
+          rcd=nco_inq_varname(nc_id,var_id,var_nm);
+          (void)fprintf(stderr,"%s: WARNING the \"%s\" attribute for variable %s is type %s, not %s. This violates the CF convention for specifying additional attributes. Therefore %s will skip this attribute.\n",nco_prg_nm_get(),att_nm,var_nm,nco_typ_sng(att_typ),nco_typ_sng(NC_CHAR),fnc_nm);
+          return IS_SPC_IN_BND_ATT;
+        } /* end if */
+        att_val=(char *)nco_malloc((att_sz+1L)*sizeof(char));
+        if(att_sz > 0) rcd=nco_get_att(nc_id,var_id,att_nm,(void *)att_val,NC_CHAR);	  
+        /* NUL-terminate attribute */
+        att_val[att_sz]='\0';
+        /* Split list into separate coordinate names
+        Use nco_lst_prs_sgl_2D() not nco_lst_prs_2D() to avert TODO nco944 */
+        bnd_lst=nco_lst_prs_sgl_2D(att_val,dlm_sng,&nbr_bnd);
+        /* ...for each coordinate in "bounds" attribute... */
+        for(idx_bnd=0;idx_bnd<nbr_bnd;idx_bnd++){
+          /* Does variable match name specified in coordinate list? */
+          if(!strcmp(var_trg_nm,bnd_lst[idx_bnd])) break;
+        } /* end loop over coordinates in list */
+        if(idx_bnd!=nbr_bnd) IS_SPC_IN_BND_ATT=True;
+        /* Free allocated memory */
+        att_val=(char *)nco_free(att_val);
+        bnd_lst=nco_sng_lst_free(bnd_lst,nbr_bnd);
+      } /* !coordinates */
+    } /* end loop over attributes */
+  } /* end loop over idx_var */
+
+  return IS_SPC_IN_BND_ATT; /* [flg] Variable is listed in a "bounds" attribute  */
+} /* end nco_is_spc_in_bnd_att() */
+
+void
+nco_var_mtd_refresh /* [fnc] Update variable metadata (dmn_nbr, ID, mss_val, type) */
+(const int nc_id, /* I [id] netCDF input-file ID */
+ var_sct * const var) /* I/O [sct] Variable to update */
+{
+  /* Purpose: Update variable ID, number of dimensions, and missing_value attribute for given variable
+     nco_var_mtd_refresh() is called in file loop in multi-file operators because each new file may have 
+     different variable ID, type, and missing_value for same variable.
+     This is necessary, for example, if computer model runs on one machine, e.g., SGI,
+     and then run is restarted on another, e.g., Cray. 
+     If internal floating point representations differ between these architecture, 
+     e.g., UNICOS vs. IEEE, then missing_value representation may differ. 
+     Variable IDs may change when some but not all model output files are 
+     manipulated (i.e., variables added or deleted), followed by processing
+     all files are processed in a batch.
+     NCO is only known tool that makes this all user-transparent
+     Thus this capability is very important to maintain
+     fxm: why isn't variable type set here? */
+  int rcd=NC_NOERR; /* [rcd] Return code */
+  int nbr_dim_old;
+
+  var->nc_id=nc_id;
+
+  /* 20050519: Not sure why I originally made next four lines SMP-critical
+  20050629: Making next four lines multi-threaded causes no problems */
+  /* Refresh variable ID first */
+  rcd+=nco_inq_varid(var->nc_id,var->nm,&var->id);
+
+  /* fxm: Not sure if/why necessary to refresh number of dimensions...though it should not hurt */
+  /* Refresh number of dimensions in variable */
+  nbr_dim_old=var->nbr_dim;
+  rcd+=nco_inq_varndims(var->nc_id,var->id,&var->nbr_dim);
+  if(nbr_dim_old != var->nbr_dim){
+    (void)fprintf(stdout,"%s: ERROR Variable \"%s\" changed number of dimensions from %d to %d\n",nco_prg_nm_get(),var->nm,nbr_dim_old,var->nbr_dim);
+    nco_err_exit(0,"nco_var_mtd_refresh()");
+  } /* endif err */
+
+  /* 20100923: Any need to refresh storage properties (shuffle,deflate,dfl_lvl,cnk_sz) here?
+  Certainly they can change between files, that alone is not reason to refresh them
+  Unlike missing values, storage properties in input are transparent to arithmetic
+  The netCDF/HDF5 I/O layer handles all this transparently
+  Moreover, output storage properties must be set just after variable definition, long before nco_var_mtd_refresh()
+  So storage properties of variable in current file cannot affect arithmetic, nor output
+  Hence there is no reason to track current storage properties in var_sct
+  However, if that ever changes, here are hooks to do so */
+  if(False && var->nbr_dim > 0){
+    int deflate; /* [flg] Turn on deflate filter */
+    int srg_typ; /* [enm] Storage type */
+    rcd+=nco_inq_var_deflate(var->nc_id,var->id,&var->shuffle,&deflate,&var->dfl_lvl);
+    rcd+=nco_inq_var_chunking(var->nc_id,var->id,&srg_typ,var->cnk_sz);
+  } /* endif */
+
+  /* Set variable type so following nco_mss_val_get() casts missing_value to correct type */
+  rcd+=nco_inq_vartype(var->nc_id,var->id,&var->type);
+
+  /* Refresh number of attributes and missing value attribute, if any */
+  var->has_mss_val=nco_mss_val_get(var->nc_id,var);
+
+#if 0
+  /* PJR requested warning to be added when multiple file operators worked on 
+  variables with missing_value since so many things could go wrong
+  Now un-necessary since multi-file packing ostensibly works
+  Leave code here in case we find it does not work */
+  if(nco_is_rth_opr(nco_prg_id_get()) && var->pck_dsk){
+    if(var->has_mss_val) (void)fprintf(stdout,"%s: WARNING Variable \"%s\" is packed and has valid \"NCO_MSS_VAL_SNG\" attribute in multi-file arithmetic operator. Arithmetic on this variable will only be correct if...\n",nco_prg_nm_get(),var_nm);
+  } /* endif variable is packed */
+#endif /* endif False */
+
+} /* end nco_var_mtd_refresh() */
+
+void
+nco_var_srd_srt_set /* [fnc] Assign zero to start and unity to stride vectors in variables */
+(var_sct ** const var, /* I [sct] Variables whose duration, start, and stride arrays to set */
+ const int nbr_var) /* I [nbr] Number of structures in variable structure list */
+{
+  /* Purpose: Zero start (srt) and stride (srd) arrays of variable 
+     This is useful for setting variables to default output state, 
+     in which data is written in a block with no offset */
+
+  int idx;
+  int idx_dmn;
+
+  for(idx=0;idx<nbr_var;idx++){
+    for(idx_dmn=0;idx_dmn<var[idx]->nbr_dim;idx_dmn++){
+      var[idx]->srt[idx_dmn]=0L;
+      var[idx]->srd[idx_dmn]=1L;
+    } /* end loop over dimensions */
+  } /* end loop over variables */
+  
+} /* end nco_var_srd_srt_set() */
+  
+void
+nco_var_dmn_refresh /* [fnc] Refresh var hyperslab info with var->dim[] info */
+(var_sct ** const var, /* I [sct] Variables to refresh */
+ const int nbr_var) /* I [nbr] Number of structures in variable structure list */
+{
+  int idx;
+  int jdx;
+  for(idx=0;idx<nbr_var;idx++){
+    long sz;
+    long sz_rec;
+    sz=1L;
+    sz_rec=1L;
+    var_sct *var_tmp;
+    var_tmp=var[idx];
+    
+    /* 20100923: Any need to refresh storage properties (shuffle,deflate,dfl_lvl,cnk_sz) here? */
+
+    for(jdx=0;jdx<var_tmp->nbr_dim;jdx++){
+      var_tmp->srt[jdx]=var_tmp->dim[jdx]->srt; 
+      var_tmp->end[jdx]=var_tmp->dim[jdx]->end;
+      var_tmp->cnt[jdx]=var_tmp->dim[jdx]->cnt;
+      var_tmp->srd[jdx]=var_tmp->dim[jdx]->srd;
+      sz*=var_tmp->dim[jdx]->cnt;
+      if(jdx > 0) sz_rec*=var_tmp->dim[jdx]->cnt;
+    } /* end loop over dimensions */
+    var_tmp->sz=sz; 
+    var_tmp->sz_rec=sz_rec;
+  } /* end loop over variables */
+
+}  /* end nco_var_dmn_refresh() */
+
 var_sct * /* O [sct] Variable structure */
 nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
 (const int nc_id, /* I [id] netCDF file ID */
- const int var_id, /* I [id] variable ID */
+ const int var_id, /* I [id] Variable ID */
  const char * const var_nm, /* I [sng] Variable name */
  dmn_sct * const * const dim, /* I [sct] Dimensions available to variable */
  const int nbr_dim) /* I [nbr] Number of dimensions in list */
@@ -1222,18 +1563,19 @@ nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
 
   var_sct *var;
 
-  /* get file format */
+  /* Get file format */
   (void)nco_inq_format(nc_id,&fl_fmt);
 
   /* Get record dimension ID */
   (void)nco_inq(nc_id,(int *)NULL,(int *)NULL,(int *)NULL,&rec_dmn_id);
-  
+
   /* Allocate space for variable structure */
   var=(var_sct *)nco_malloc(sizeof(var_sct));
   (void)var_dfl_set(var); /* [fnc] Set defaults for each member of variable structure */
 
   /* Fill-in known fields */
   /* Make sure var_free() frees names when variable is destroyed */
+  var->nm_fll=NULL;
   var->nm=(char *)strdup(var_nm);
   var->id=var_id;
   var->nc_id=nc_id;
@@ -1252,7 +1594,7 @@ nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
 
   /* Get dimension IDs from input file */
   (void)nco_inq_vardimid(var->nc_id,var->id,var->dmn_id);
-  
+
   /* Type in memory begins as same type as on disk */
   var->type=var->typ_dsk; /* [enm] Type of variable in RAM */
   /* Type of packed data on disk */
@@ -1265,11 +1607,11 @@ nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
   for(idx=0;idx<var->nbr_dim;idx++){
     for(dmn_idx=0;dmn_idx<var->nbr_dim;dmn_idx++){
       if(idx != dmn_idx){
-	if(var->dmn_id[idx] == var->dmn_id[dmn_idx]){
-	  /* Dimensions are duplicated when IDs for different ordinal dimensions are equal */
-	  var->has_dpl_dmn=True;
-	  break;
-	} /* endif IDs are equal */
+        if(var->dmn_id[idx] == var->dmn_id[dmn_idx]){
+          /* Dimensions are duplicated when IDs for different ordinal dimensions are equal */
+          var->has_dpl_dmn=True;
+          break;
+        } /* endif IDs are equal */
       } /* endif navel gazing */
     } /* endif inner dimension */
     /* Found a duplicate, so stop looking */
@@ -1285,15 +1627,15 @@ nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
       if(!strcmp(dmn_nm,dim[dmn_idx]->nm)) break;
 
     if(dmn_idx == nbr_dim){
-      (void)fprintf(stdout,"%s: ERROR dimension %s is not in list of dimensions available to nco_var_fll()\n",prg_nm_get(),dmn_nm);
-      (void)fprintf(stdout,"%s: HINT This could be a symptom of TODO nco111. Workaround is to make sure each dimension in the weighting and masking variable(s) appears in a variable to be processed.\n",prg_nm_get());
+      (void)fprintf(stdout,"%s: ERROR dimension %s is not in list of dimensions available to nco_var_fll()\n",nco_prg_nm_get(),dmn_nm);
+      if(nco_prg_id_get() == ncap) (void)fprintf(stdout,"%s: HINT This could be a symptom of TODO nco1045. Workaround is avoid use of append mode (i.e., -A switch) in ncap2.\n",nco_prg_nm_get()); else (void)fprintf(stdout,"%s: HINT This could be a symptom of TODO nco111. Workaround is to make sure each dimension in the weighting and masking variable(s) appears in a variable to be processed.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
     } /* end if */
 
     /* fxm: hmb, what is this for? */
     /* Re-define dmn_id so that if dim is dimension list from output file
-       then we get correct dmn_id. Should not affect normal running of 
-       routine as usually dim is dimension list from input file */
+    then we get correct dmn_id. Should not affect normal running of 
+    routine as usually dim is dimension list from input file */
     var->dmn_id[idx]=dim[dmn_idx]->id;
 
     var->dim[idx]=dim[dmn_idx];
@@ -1305,12 +1647,12 @@ nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
     if(var->dmn_id[idx] == rec_dmn_id) var->is_rec_var=True; else var->sz_rec*=var->cnt[idx];
 
     /* NB: dim[idx]->cid will be uninitialized unless dim[idx] is a coordinate 
-       Hence divide this into to sequential if statements so valgrind does not
-       complain about relying on uninitialized values */
+    Hence divide this into to sequential if statements so valgrind does not
+    complain about relying on uninitialized values */
     if(var->dim[idx]->is_crd_dmn){
       if(var->id == var->dim[idx]->cid){
-	var->is_crd_var=True;
-	var->cid=var->dmn_id[idx];
+        var->is_crd_var=True;
+        var->cid=var->dmn_id[idx];
       } /* end if */
     } /* end if */
 
@@ -1318,146 +1660,75 @@ nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
     var->sz*=var->cnt[idx];
   } /* end loop over dim */
 
+  /* 20130112: Variables associated with "bounds" and "coordinates" attributes should,
+  in most cases, be treated as coordinates */
+  if(nco_is_spc_in_bnd_att(var->nc_id,var->id)) var->is_crd_var=True;
+  if(nco_is_spc_in_crd_att(var->nc_id,var->id)) var->is_crd_var=True;
+
   /* Portions of variable structure depend on packing properties, e.g., typ_upk
-     nco_pck_dsk_inq() fills in these portions harmlessly */
+  nco_pck_dsk_inq() fills in these portions harmlessly */
   (void)nco_pck_dsk_inq(nc_id,var);
-  
+
   /* Set deflate and chunking to defaults */  
   var->dfl_lvl=0; /* [enm] Deflate level */
   var->shuffle=False; /* [flg] Turn on shuffle filter */
-  
+
   for(idx=0;idx<var->nbr_dim;idx++) var->cnk_sz[idx]=(size_t)0L;
-  
+
   /* Read deflate levels and chunking (if any) */  
-  if(fl_fmt==NC_FORMAT_NETCDF4 || fl_fmt==NC_FORMAT_NETCDF4_CLASSIC){
+  if(fl_fmt == NC_FORMAT_NETCDF4 || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC){
     int deflate; /* [enm] Deflate filter is on */
     int srg_typ; /* [enm] Storage type */
     (void)nco_inq_var_deflate(nc_id,var->id,&var->shuffle,&deflate,&var->dfl_lvl);    
     (void)nco_inq_var_chunking(nc_id,var->id,&srg_typ,var->cnk_sz);   
   } /* endif */
-  
+
   var->undefined=False; /* [flg] Used by ncap parser */
   return var;
 } /* end nco_var_fll() */
 
-void
-nco_var_mtd_refresh /* [fnc] Update variable metadata (dmn_nbr, ID, mss_val, type) */
-(const int nc_id, /* I [id] netCDF input-file ID */
- var_sct * const var) /* I/O [sct] Variable to update */
+nc_type
+nco_get_typ                           /* [fnc] Obtain netCDF type to define variable from NCO program ID */
+(const var_sct * const var)           /* I [sct] Variable to be defined in output file */
 {
-  /* Purpose: Update variable ID, number of dimensions, and missing_value attribute for given variable
-     nco_var_mtd_refresh() is called in file loop in multi-file operators because each new file may have 
-     different variable ID, type, and missing_value for same variable.
-     This is necessary, for example, if computer model runs on one machine, e.g., SGI,
-     and then run is restarted on another, e.g., Cray. 
-     If internal floating point representations differ between these architecture, 
-     e.g., UNICOS vs. IEEE, then missing_value representation may differ. 
-     Variable IDs may change when some but not all model output files are 
-     manipulated (i.e., variables added or deleted), followed by processing
-     all files are processed in a batch.
-     NCO is only known tool that makes this all user-transparent
-     Thus this capability is very important to maintain
-     fxm: why isn't variable type set here? */
-  int rcd=NC_NOERR; /* [rcd] Return code */
-  int nbr_dim_old;
+  int nco_prg_id; /* [enm] Program ID */
 
-  var->nc_id=nc_id;
-  
-  /* 20050519: Not sure why I originally made next four lines SMP-critical
-     20050629: Making next four lines multi-threaded causes no problems */
-  /* Refresh variable ID first */
-  rcd+=nco_inq_varid(var->nc_id,var->nm,&var->id);
-  
-  /* fxm: Not sure if/why necessary to refresh number of dimensions...though it should not hurt */
-  /* Refresh number of dimensions in variable */
-  nbr_dim_old=var->nbr_dim;
-  rcd+=nco_inq_varndims(var->nc_id,var->id,&var->nbr_dim);
-  if(nbr_dim_old != var->nbr_dim){
-    (void)fprintf(stdout,"%s: ERROR Variable \"%s\" changed number of dimensions from %d to %d\n",prg_nm_get(),var->nm,nbr_dim_old,var->nbr_dim);
-    nco_err_exit(0,"nco_var_mtd_refresh()");
-  } /* endif err */
-    
-  /* 20100923: Any need to refresh storage properties (shuffle,deflate,dfl_lvl,cnk_sz) here?
-     Certainly they can change between files, that alone is not reason to refresh them
-     Unlike missing values, storage properties in input are transparent to arithmetic
-     The netCDF/HDF5 I/O layer handles all this transparently
-     Moreover, output storage properties must be set just after variable definition, long before nco_var_mtd_refresh()
-     So storage properties of variable in current file cannot affect arithmetic, nor output
-     Hence there is no reason to track current storage properties in var_sct
-     However, if that ever changes, here are hooks to do so */
-  if(False && var->nbr_dim > 0){
-    int deflate; /* [flg] Turn on deflate filter */
-    int srg_typ; /* [enm] Storage type */
-    rcd+=nco_inq_var_deflate(var->nc_id,var->id,&var->shuffle,&deflate,&var->dfl_lvl);
-    rcd+=nco_inq_var_chunking(var->nc_id,var->id,&srg_typ,var->cnk_sz);
-  } /* endif */
+  nc_type typ_out=NC_NAT; /* [enm] Type in output file */
 
-  /* Set variable type so following nco_mss_val_get() casts missing_value to correct type */
-  rcd+=nco_inq_vartype(var->nc_id,var->id,&var->type);
-
-  /* Refresh number of attributes and missing value attribute, if any */
-  var->has_mss_val=nco_mss_val_get(var->nc_id,var);
+  nco_prg_id=nco_prg_id_get(); /* [enm] Program ID */
   
-#if 0
-  /* PJR requested warning to be added when multiple file operators worked on 
-     variables with missing_value since so many things could go wrong
-     Now un-necessary since multi-file packing ostensibly works
-     Leave code here in case we find it does not work */
-  if(nco_is_rth_opr(prg_get()) && var->pck_dsk){
-    if(var->has_mss_val) (void)fprintf(stdout,"%s: WARNING Variable \"%s\" is packed and has valid \"NCO_MSS_VAL_SNG\" attribute in multi-file arithmetic operator. Arithmetic on this variable will only be correct if...\n",prg_nm_get(),var_nm);
-  } /* endif variable is packed */
-#endif /* endif False */
-
-} /* end nco_var_mtd_refresh() */
-
-void
-nco_var_srd_srt_set /* [fnc] Assign zero-start and unity-stride vectors to variables */
-(var_sct ** const var, /* I [sct] Variables whose start and stride arrays to set */
- const int nbr_var) /* I [nbr] Number of structures in variable structure list */
-{
-  /* Purpose: Zero start (srt) and stride (srd) arrays of variable 
-     This is useful for setting variables to the default output state, in
-     which data is written in a block with no offset */
-
-  int idx;
-  int idx_dmn;
-
-  for(idx=0;idx<nbr_var;idx++){
-    for(idx_dmn=0;idx_dmn<var[idx]->nbr_dim;idx_dmn++){
-      var[idx]->srt[idx_dmn]=0L;
-      var[idx]->srd[idx_dmn]=1L;
-    } /* end loop over dimensions */
-  } /* end loop over variables */
-  
-} /* end nco_var_srd_srt_set() */
+  /* Checking only nco_is_rth_opr() is too simplistic
+     1. All variables handled by arithmetic operators are currently unpacked on reading
+     2. However "fixed variables" appear in many arithemetic operators
+     ncbo treats coordinate variables as fixed (does not subtract them)
+     ncra treats non-record variables as fixed (does not average them)
+     ncwa treats variables without averaging dimensions as fixed (does not average them)
+     It is best not to alter [un-]pack fixed (non-processed) variables
+     3. ncap, an arithmetic operator, also has "fixed variables", i.e., 
+     pre-existing non-LHS variables copied directly to output.
+     These "fixed" ncap variables should remain unaltered
+     However, this is not presently done
+     nco_var_dfn() needs more information to handle "fixed" variables correctly because
+     Some ncap "fixed" variables appear on RHS in definitions of LHS variables
+     These RHS fixed variables must be separately unpacked during RHS algebra
+     Currently, ncap only calls nco_var_dfn() for fixed variables
+     ncap uses its own routine, ncap_var_write(), for RHS variable definitions
+     4. All variables in non-arithmetic operators (except ncpdq) should remain un-altered
+     5. ncpdq is non-arithmetic operator
+     However, ncpdq specially handles fine-grained control [un-]packing options */
+  if(nco_is_rth_opr(nco_prg_id)){
+    /* Arithmetic operators store values as unpacked... */
+    typ_out=var->typ_upk; 
+    /* ...with two exceptions...
+       ncap [un-]packing precedes nco_var_dfn() call, sets var->type appropriately */
+    if(nco_prg_id == ncap) typ_out=var->type;
+    /* ...and pass through fixed (non-processed) variables untouched... */
+    if(var->is_fix_var) typ_out=var->type;
+  }else{
+    /* Non-arithmetic operators leave things alone by default
+       ncpdq first modifies var_out->type, then calls nco_var_dfn(), then [un-]packs */
+    typ_out=var->type;
+  } /* endif arithmetic operator */
   
-void
-nco_var_dmn_refresh /* [fnc] Refresh var hyperslab info with var->dim[] info */
-(var_sct ** const var, /* I [sct] Variables to refresh */
- const int nbr_var) /* I [nbr] Number of structures in variable structure list */
-{
-  int idx;
-  int jdx;
-  for(idx=0;idx<nbr_var;idx++){
-    long sz;
-    long sz_rec;
-    sz=1L;
-    sz_rec=1L;
-    var_sct *var_tmp;
-    var_tmp=var[idx];
-    
-    /* 20100923: Any need to refresh storage properties (shuffle,deflate,dfl_lvl,cnk_sz) here? */
-
-    for(jdx=0;jdx<var_tmp->nbr_dim;jdx++){
-      var_tmp->srt[jdx]=var_tmp->dim[jdx]->srt; 
-      var_tmp->end[jdx]=var_tmp->dim[jdx]->end;
-      var_tmp->cnt[jdx]=var_tmp->dim[jdx]->cnt;
-      var_tmp->srd[jdx]=var_tmp->dim[jdx]->srd;
-      sz*=var_tmp->dim[jdx]->cnt;
-      if(jdx > 0) sz_rec*=var_tmp->dim[jdx]->cnt;
-    } /* end loop over dimensions */
-    var_tmp->sz=sz; 
-    var_tmp->sz_rec=sz_rec;
-  } /* end loop over variables */
-
-}  /* end nco_var_dmn_refresh() */
+  return typ_out;
+} /* nco_get_typ() */
diff --git a/src/nco/nco_var_utl.h b/src/nco/nco_var_utl.h
index 19b9763..1e9902e 100644
--- a/src/nco/nco_var_utl.h
+++ b/src/nco/nco_var_utl.h
@@ -1,8 +1,8 @@
-/* $Header: /cvsroot/nco/nco/src/nco/nco_var_utl.h,v 1.63 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/nco_var_utl.h,v 1.101 2013/07/25 03:39:59 zender Exp $ */
 
 /* Purpose: Variable utilities */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -17,23 +17,24 @@
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard header files */
+#include <assert.h> /* assert() */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
 #include <stdlib.h> /* strtod, strtol, malloc, getopt, exit */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <limits.h> /* need LONG_MAX */
 
 /* 3rd party vendors */
 #include <netcdf.h> /* netCDF definitions and C library */
 #include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
-#ifdef _OPENMP
-#include <omp.h> /* OpenMP pragmas */
-#endif /* !_OPENMP */
 
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_att_utl.h" /* Attribute utilities */
 #include "nco_bnr.h" /* Binary write utilities */
 #include "nco_ctl.h" /* Program flow control functions */
+#include "nco_dmn_utl.h" /* Dimension utilities */
+#include "nco_grp_utl.h" /* Variable utilities */
+#include "nco_md5.h" /* MD5 digests */
 #include "nco_mmr.h" /* Memory management */
 #include "nco_mss_val.h" /* Missing value utilities */
 #include "nco_pck.h" /* Packing and unpacking variables */
@@ -42,56 +43,50 @@
 extern "C" {
 #endif /* __cplusplus */
 
-  int /* O [id] Output file variable ID */
-  nco_cpy_var_dfn /* [fnc] Copy variable metadata from input to output file */
-  (const int in_id, /* I [id] netCDF input file ID */
-   const int out_id, /* I [id] netCDF output file ID */
-   const char *rec_dmn_nm, /* I [sng] Output file record dimension name  */
-   const char * const var_nm, /* I [sng] Input variable name */
-   const int dfl_lvl); /* I [enm] Deflate level [0..9] */
-
-  int /* O [id] Output file variable ID */
-  nco_cpy_var_dfn_lmt /* Copy variable metadata from input to output file */
-  (const int in_id, /* I [id] netCDF input file ID */
-   const int out_id, /* I [id] netCDF output file ID */
-   const char *rec_dmn_nm, /* I [sng] Output file record dimension name  */
-   const char * const var_nm, /* I [sng] Input variable name */
-   CST_X_PTR_CST_PTR_CST_Y(lmt_all_sct,lmt_all_lst), /* I [sct] Hyperslab limits */
-   const int lmt_all_lst_nbr, /* I [nbr] Number of hyperslab limits */
-   const int dfl_lvl); /* I [enm] Deflate level [0..9] */
-
-  void
-  nco_cpy_var_val /* [fnc] Copy variable data from input to output file, no limits */
-  (const int in_id, /* I [id] netCDF input file ID */
+void
+nco_cpy_var_val /* [fnc] Copy variable data from input to output file, no limits */
+(const int in_id, /* I [id] netCDF input file ID */
    const int out_id, /* I [id] netCDF output file ID */
    FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
-   const nco_bool NCO_BNR_WRT, /* I [flg] Write binary file */
+   const md5_sct * const md5, /* I [flg] MD5 Configuration */
    const char *var_nm); /* I [sng] Variable name */
 
-  void
-  nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simple hyperslabs */
-  (const int in_id, /* I [id] netCDF input file ID */
+void
+nco_cpy_var_val_lmt /* [fnc] Copy variable data from input to output file, simple hyperslabs */
+(const int in_id, /* I [id] netCDF input file ID */
    const int out_id, /* I [id] netCDF output file ID */
    FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
-   const nco_bool NCO_BNR_WRT, /* I [flg] Write binary file */
    char *var_nm, /* I [sng] Variable name */
    const lmt_sct * const lmt, /* I [sct] Hyperslab limits */
    const int lmt_nbr); /* I [nbr] Number of hyperslab limits */
  
-  void 
-  nco_var_copy /* [fnc] Copy hyperslab variables of type var_typ from op1 to op2 */
-  (const nc_type var_typ, /* I [enm] netCDF type */
+nco_bool /* O [flg] Faster copy on Multi-record Multi-variable netCDF3 files */
+nco_use_mm3_workaround /* [fnc] Use faster copy on Multi-record Multi-variable netCDF3 files? */
+(const int in_id, /* I [id] Input file ID */
+   const int fl_out_fmt); /* I [enm] Output file format */
+
+void
+nco_cpy_rec_var_val /* [fnc] Copy all record variables, record-by-record, from input to output file, no limits */
+(const int in_id, /* I [id] netCDF input file ID */
+   FILE * const fp_bnr, /* I [fl] Unformatted binary output file handle */
+   const md5_sct * const md5, /* I [flg] MD5 Configuration */
+   CST_X_PTR_CST_PTR_CST_Y(nm_id_sct,var_lst), /* I [sct] Record variables to be extracted */
+   const int var_nbr); /* I [nbr] Number of record variables */
+
+void 
+nco_var_copy /* [fnc] Copy hyperslab variables of type var_typ from op1 to op2 */
+(const nc_type var_typ, /* I [enm] netCDF type */
    const long sz, /* I [nbr] Number of elements to copy */
    const ptr_unn op1, /* I [sct] Values to copy */
    ptr_unn op2); /* O [sct] Destination to copy values to */
   
-  int /* O [enm] Return code */
-  var_dfl_set /* [fnc] Set defaults for each member of variable structure */
-  (var_sct * const var); /* I [sct] Variable strucutre to initialize to defaults */
+int /* O [enm] Return code */
+var_dfl_set /* [fnc] Set defaults for each member of variable structure */
+(var_sct * const var); /* I [sct] Variable strucutre to initialize to defaults */
 
-  void
-  nco_var_dfn /* [fnc] Define variables and write their attributes to output file */
-  (const int in_id, /* I [enm] netCDF input-file ID */
+void
+nco_var_dfn /* [fnc] Define variables and write their attributes to output file */
+(const int in_id, /* I [enm] netCDF input-file ID */
    const char * const fl_out, /* I [sng] Name of output file */
    const int out_id, /* I [enm] netCDF output-file ID */
    var_sct * const * const var, /* I/O [sct] Variables to be defined in output file */
@@ -102,64 +97,81 @@ extern "C" {
    const int nco_pck_plc, /* I [enm] Packing policy */
    const int dfl_lvl); /* I [enm] Deflate level [0..9] */
   
-  var_sct * /* O [sct] Copy of input variable */
-  nco_var_dpl /* [fnc] Duplicate input variable */
-  (const var_sct * const var); /* I [sct] Variable to duplicate */
+var_sct * /* O [sct] Copy of input variable */
+nco_var_dpl /* [fnc] Duplicate input variable */
+(const var_sct * const var); /* I [sct] Variable to duplicate */
   
-  var_sct * /* O [sct] Variable structure */
-  nco_var_fll /* [fnc] Allocate variable structure and fill with metadata */
-  (const int nc_id, /* I [id] netCDF file ID */
-   const int var_id, /* I [id] variable ID */
-   const char * const var_nm, /* I [sng] Variable name */
-   dmn_sct * const * const dim, /* I [sct] Dimensions available to variable */
-   const int nbr_dim); /* I [nbr] Number of dimensions in list */
+var_sct * /* O [sct] Pointer to free'd variable */
+nco_var_free /* [fnc] Free all memory associated with variable structure */
+(var_sct *var); /* I/O [sct] Variable to free */
   
-  var_sct * /* O [sct] Pointer to free'd variable */
-  nco_var_free /* [fnc] Free all memory associated with variable structure */
-  (var_sct *var); /* I/O [sct] Variable to free */
+void
+nco_var_get /* [fnc] Allocate, retrieve variable hyperslab from disk to memory */
+(const int nc_id, /* I [id] netCDF file ID */
+ var_sct *var); /* I [sct] Variable to get */
   
-  void
-  nco_var_get /* [fnc] Allocate, retrieve variable hyperslab from disk to memory */
-  (const int nc_id, /* I [id] netCDF file ID */
-   var_sct *var); /* I [sct] Variable to get */
+var_sct ** /* O [sct] Pointer to free'd structure list */
+nco_var_lst_free /* [fnc] Free memory associated with variable structure list */
+(var_sct **var_lst, /* I/O [sct] Variable structure list to free */
+ const int var_nbr); /* I [nbr] Number of variable structures in list */
+
+nco_bool /* [flg] Variable is listed in a "bounds" attribute */
+nco_is_spc_in_bnd_att /* [fnc] Variable is listed in a "bounds" attribute */
+(const int nc_id, /* I [id] netCDF file ID */
+ const int var_trg_id); /* I [id] Variable ID */
+
+nco_bool /* [flg] Variable is listed in a "coordinates" attribute */
+nco_is_spc_in_crd_att /* [fnc] Variable is listed in a "coordinates" attribute */
+(const int nc_id, /* I [id] netCDF file ID */
+ const int var_trg_id); /* I [id] Variable ID */
+
+void
+nco_var_mtd_refresh /* [fnc] Update variable metadata (dmn_nbr, ID, mss_val, type) */
+(const int nc_id, /* I [id] netCDF input-file ID */
+ var_sct * const var); /* I/O [sct] Variable to update */
   
-  var_sct ** /* O [sct] Pointer to free'd structure list */
-  nco_var_lst_free /* [fnc] Free memory associated with variable structure list */
-  (var_sct **var_lst, /* I/O [sct] Variable structure list to free */
-   const int var_nbr); /* I [nbr] Number of variable structures in list */
-
-  void
-  nco_var_mtd_refresh /* [fnc] Update variable metadata (dmn_nbr, ID, mss_val, type) */
-  (const int nc_id, /* I [id] netCDF input-file ID */
-   var_sct * const var); /* I/O [sct] Variable to update */
+void
+nco_var_srd_srt_set /* [fnc] Assign zero to start and unity to stride vectors in variables */
+(var_sct ** const var, /* I [sct] Variables whose duration, start, and stride arrays to set */
+ const int nbr_var); /* I [nbr] Number of structures in variable structure list */
   
-  void
-  nco_var_srd_srt_set /* [fnc] Assign zero-start and unity-stride vectors to variables */
-  (var_sct ** const var, /* I [sct] Variables whose start and stride arrays to set */
-   const int nbr_var); /* I [nbr] Number of structures in variable structure list */
-
-  
-  void
-  nco_var_dmn_refresh /* [fnc] Refresh var hyperslab info with var->dim[] info */
-  (var_sct ** const var, /* I [sct] Variables to refresh */
-   const int nbr_var); /* I [nbr] Number of structures in variable structure list */
+void
+nco_var_dmn_refresh /* [fnc] Refresh var hyperslab info with var->dim[] info */
+(var_sct ** const var, /* I [sct] Variables to refresh */
+ const int nbr_var); /* I [nbr] Number of structures in variable structure list */
   
-  void
-  nco_var_val_cpy /* [fnc] Copy variables data from input to output file */
-  (const int in_id, /* I [enm] netCDF file ID */
-   const int out_id, /* I [enm] netCDF output file ID */
-   var_sct ** const var, /* I/O [sct] Variables to copy to output file */
-   const int nbr_var); /* I [nbr] Number of variables */
+void
+nco_var_val_cpy /* [fnc] Copy variables data from input to output file */
+(const int in_id, /* I [enm] netCDF file ID */
+ const int out_id, /* I [enm] netCDF output file ID */
+ var_sct ** const var, /* I/O [sct] Variables to copy to output file */
+ const int nbr_var); /* I [nbr] Number of variables */
   
-  void
-  nco_xrf_dmn /* [fnc] Switch pointers to dimension structures so var->dim points to var->dim->xrf */
-  (var_sct * const var); /* I [sct] Variable to manipulate */
+void
+nco_xrf_dmn /* [fnc] Switch pointers to dimension structures so var->dim points to var->dim->xrf */
+(var_sct * const var); /* I [sct] Variable to manipulate */
   
-  void
-  nco_xrf_var /* [fnc] Make xrf elements of variable structures point to eachother */
-  (var_sct * const var_1, /* I/O [sct] Variable */
-   var_sct * const var_2); /* I/O [sct] Related variable */
+void
+nco_xrf_var /* [fnc] Make xrf elements of variable structures point to eachother */
+(var_sct * const var_1, /* I/O [sct] Variable */
+ var_sct * const var_2); /* I/O [sct] Related variable */
+
+
 
+
+var_sct *                             /* O [sct] Variable structure */
+nco_var_fll                           /* [fnc] Allocate variable structure and fill with metadata */
+(const int nc_id,                     /* I [id] netCDF file ID */
+ const int var_id,                    /* I [id] variable ID */
+ const char * const var_nm,           /* I [sng] Variable name */
+ dmn_sct * const * const dim,         /* I [sct] Dimensions available to variable */
+ const int nbr_dim);                  /* I [nbr] Number of dimensions in list */
+
+nc_type
+nco_get_typ                           /* [fnc] Obtain netCDF type to define variable from NCO program ID */
+(const var_sct * const var);          /* I [sct] Variable to be defined in output file */
+
+  
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/ncpdq.c b/src/nco/ncpdq.c
index fe3e7f4..c5153b1 100644
--- a/src/nco/ncpdq.c
+++ b/src/nco/ncpdq.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncpdq.c,v 1.174 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncpdq.c,v 1.374 2013/11/06 17:51:13 zender Exp $ */
 
 /* ncpdq -- netCDF pack, re-dimension, query */
 
 /* Purpose: Pack, re-dimension, query single netCDF file and output to a single file */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -36,7 +36,9 @@
    ncpdq -O -D 3 -P all_new ~/nco/data/in.nc ~/foo.nc
    ncpdq -O -D 3 -P all_xst ~/nco/data/in.nc ~/foo.nc
    ncpdq -O -D 3 -P xst_new ~/nco/data/in.nc ~/foo.nc
-   ncpdq -O -D 3 -P upk ~/nco/data/in.nc ~/foo.nc */
+   ncpdq -O -D 3 -P upk ~/nco/data/in.nc ~/foo.nc
+   ncpdq -O -D 3 -a lon,lat -g g21,g22 ~/nco/data/in_grp_3.nc ~/foo.nc
+   ncpdq -O -D 3 -g g1 -v v1 --union -G dude -p ~/nco/data in_grp.nc ~/foo.nc */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
@@ -46,15 +48,17 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
-#ifdef HAVE_GETOPT_H
-#include <getopt.h>
-#endif /* !HAVE_GETOPT_H */ 
+# ifdef HAVE_GETOPT_H
+#  include <getopt.h>
+# endif /* !HAVE_GETOPT_H */ 
 #endif /* HAVE_GETOPT_LONG */
 
 /* 3rd party vendors */
@@ -70,27 +74,32 @@ main(int argc,char **argv)
   aed_sct *aed_lst_add_fst=NULL_CEWI;
   aed_sct *aed_lst_scl_fct=NULL_CEWI;
 
-  nco_bool **dmn_rvr_in=NULL; /* [flg] Reverse dimension */
-  nco_bool *dmn_rvr_rdr=NULL; /* [flg] Reverse dimension */
+  nco_bool dmn_rvr_rdr[NC_MAX_DIMS]; /* [flg] Reverse dimensions */
   nco_bool CNV_CCM_CCSM_CF;
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in */
-  nco_bool REDEFINED_RECORD_DIMENSION=False; /* [flg] Re-defined record dimension */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
+  nco_bool IS_REORDER=False; /* Re-order mode */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order*/
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
 
   char **dmn_rdr_lst_in=NULL_CEWI; /* Option a */
+  char **dmn_rdr_lst_in_rvr=NULL_CEWI; /* Option a (same list, keep the '-' )*/
   char **fl_lst_abb=NULL; /* Option n */
   char **fl_lst_in=NULL_CEWI;
   char **var_lst_in=NULL_CEWI;
+  char **grp_lst_in=NULL_CEWI;
   char *aux_arg[NC_MAX_DIMS];
   char *cmd_ln;
   char *cnk_arg[NC_MAX_DIMS];
@@ -105,19 +114,16 @@ main(int argc,char **argv)
   char *nco_pck_plc_sng=NULL_CEWI; /* [sng] Packing policy Option P */
   char *nco_pck_map_sng=NULL_CEWI; /* [sng] Packing map Option M */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
-  char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  char *rec_dmn_nm_in=NULL; /* [sng] Record dimension name, original */
-  char *rec_dmn_nm_out=NULL; /* [sng] Record dimension name, re-ordered */
-  char *rec_dmn_nm_out_crr=NULL; /* [sng] Name of record dimension, if any, required by re-order */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
-  
+  char *optarg_lcl; /* [sng] Local copy of system optarg */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   char add_fst_sng[]="add_offset"; /* [sng] Unidata standard string for add offset */
   char scl_fct_sng[]="scale_factor"; /* [sng] Unidata standard string for scale factor */
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
+
+  const char * const CVS_Id="$Id: ncpdq.c,v 1.374 2013/11/06 17:51:13 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.374 $";
+  const char * const opt_sht_lst="3467Aa:CcD:d:Fg:G:hL:l:M:Oo:P:p:Rrt:v:UxZ-:";
 
-  const char * const CVS_Id="$Id: ncpdq.c,v 1.174 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.174 $";
-  const char * const opt_sht_lst="346Aa:CcD:d:FhL:l:M:Oo:P:p:Rrt:v:UxZ-:";
-  
   cnk_sct **cnk=NULL_CEWI;
 
 #if defined(__cplusplus) || defined(PGI_CC)
@@ -130,16 +136,16 @@ main(int argc,char **argv)
   dmn_sct **dim=NULL_CEWI;
   dmn_sct **dmn_out;
   dmn_sct **dmn_rdr=NULL; /* [sct] Dimension structures to be re-ordered */
-  
+
   extern char *optarg;
   extern int optind;
-  
+
   /* Using naked stdin/stdout/stderr in parallel region generates warning
-     Copy appropriate filehandle to variable scoped shared in parallel clause */
+  Copy appropriate filehandle to variable scoped shared in parallel clause */
   FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
   FILE * const fp_stdout=stdout; /* [fl] stdout filehandle CEWI */
 
-  int **dmn_idx_out_in=NULL; /* [idx] Dimension correspondence, output->input CEWI */
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
 
   int *in_id_arr;
 
@@ -149,138 +155,159 @@ main(int argc,char **argv)
   int cnk_nbr=0; /* [nbr] Number of chunk sizes */
   int cnk_plc=nco_cnk_plc_nil; /* [enm] Chunking policy */
   int dfl_lvl=0; /* [enm] Deflate level */
-  int dmn_out_idx; /* [idx] Index over output dimension list */
-  int dmn_out_idx_rec_in=NCO_REC_DMN_UNDEFINED; /* [idx] Record dimension index in output dimension list, original */
   int dmn_rdr_nbr=0; /* [nbr] Number of dimension to re-order */
   int dmn_rdr_nbr_in=0; /* [nbr] Original number of dimension to re-order */
-  int dmn_rdr_nbr_utl=0; /* [nbr] Number of dimension to re-order, utilized */
   int fl_idx=int_CEWI;
   int fl_nbr=0;
   int fl_in_fmt; /* [enm] Input file format */
   int fl_out_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Output file format */
   int fll_md_old; /* [enm] Old fill mode */
   int idx=int_CEWI;
-  int jdx=int_CEWI;
   int idx_rdr=int_CEWI;
   int in_id;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
-  int nbr_dmn_out;
   int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int nco_pck_map=nco_pck_map_flt_sht; /* [enm] Packing map */
   int nco_pck_plc=nco_pck_plc_nil; /* [enm] Packing policy */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
-  int rec_dmn_id_in=NCO_REC_DMN_UNDEFINED; /* [id] Record dimension ID in input file */
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
-  
-  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
-  lmt_sct **lmt=NULL_CEWI;
-  lmt_all_sct **lmt_all_lst=NULL_CEWI; /* List of *lmt_all structures */
-  
-  nm_id_sct *dmn_lst;
-  nm_id_sct *dmn_rdr_lst;
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
+  int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
+
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
 
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
-  
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
+
   var_sct **var;
   var_sct **var_fix;
   var_sct **var_fix_out;
   var_sct **var_out;
   var_sct **var_prc;
   var_sct **var_prc_out;
-  
+
+  trv_tbl_sct *trv_tbl=NULL; /* [lst] Traversal table */
+
   static struct option opt_lng[]=
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
-      {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"3",no_argument,0,'3'},
-      {"4",no_argument,0,'4'},
-      {"64bit",no_argument,0,'4'},
-      {"netcdf4",no_argument,0,'4'},
-      {"append",no_argument,0,'A'},
-      {"arrange",required_argument,0,'a'},
-      {"permute",required_argument,0,'a'},
-      {"reorder",required_argument,0,'a'},
-      {"rdr",required_argument,0,'a'},
-      {"no-coords",no_argument,0,'C'},
-      {"no-crd",no_argument,0,'C'},
-      {"coords",no_argument,0,'c'},
-      {"crd",no_argument,0,'c'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"dimension",required_argument,0,'d'},
-      {"dmn",required_argument,0,'d'},
-      {"fortran",no_argument,0,'F'},
-      {"ftn",no_argument,0,'F'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"pack_map",required_argument,0,'M'},
-      {"pck_map",required_argument,0,'M'},
-      {"map",required_argument,0,'M'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"pack_policy",required_argument,0,'P'},
-      {"pck_plc",required_argument,0,'P'},
-      {"path",required_argument,0,'p'},
-      {"retain",no_argument,0,'R'},
-      {"rtn",no_argument,0,'R'},
-      {"revision",no_argument,0,'r'},
-      {"thr_nbr",required_argument,0,'t'},
-      {"threads",required_argument,0,'t'},
-      {"omp_num_threads",required_argument,0,'t'},
-      {"unpack",no_argument,0,'U'},
-      {"upk",no_argument,0,'U'},
-      {"variable",required_argument,0,'v'},
-      {"auxiliary",required_argument,0,'X'},
-      {"exclude",no_argument,0,'x'},
-      {"xcl",no_argument,0,'x'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    }; /* end opt_lng */
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"mrd",no_argument,0,0}, /* [enm] Multiple Record Dimension convention */
+    {"multiple_record_dimension",no_argument,0,0}, /* [enm] Multiple Record Dimension convention */
+    {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+    {"intersection",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+    {"nsx",no_argument,0,0}, /* [flg] Select intersection of specified groups and variables */
+    {"union",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+    {"unn",no_argument,0,0}, /* [flg] Select union of specified groups and variables */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
+    {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
+    {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
+    {"fl_fmt",required_argument,0,0},
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"3",no_argument,0,'3'},
+    {"4",no_argument,0,'4'},
+    {"64bit",no_argument,0,'4'},
+    {"netcdf4",no_argument,0,'4'},
+    {"append",no_argument,0,'A'},
+    {"arrange",required_argument,0,'a'},
+    {"permute",required_argument,0,'a'},
+    {"reorder",required_argument,0,'a'},
+    {"rdr",required_argument,0,'a'},
+    {"no-coords",no_argument,0,'C'},
+    {"no-crd",no_argument,0,'C'},
+    {"coords",no_argument,0,'c'},
+    {"crd",no_argument,0,'c'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"dimension",required_argument,0,'d'},
+    {"dmn",required_argument,0,'d'},
+    {"fortran",no_argument,0,'F'},
+    {"ftn",no_argument,0,'F'},
+    {"gpe",required_argument,0,'G'}, /* [sng] Group Path Edit (GPE) */
+    {"grp",required_argument,0,'g'},
+    {"group",required_argument,0,'g'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"pack_map",required_argument,0,'M'},
+    {"pck_map",required_argument,0,'M'},
+    {"map",required_argument,0,'M'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"pack_policy",required_argument,0,'P'},
+    {"pck_plc",required_argument,0,'P'},
+    {"path",required_argument,0,'p'},
+    {"retain",no_argument,0,'R'},
+    {"rtn",no_argument,0,'R'},
+    {"revision",no_argument,0,'r'},
+    {"thr_nbr",required_argument,0,'t'},
+    {"threads",required_argument,0,'t'},
+    {"omp_num_threads",required_argument,0,'t'},
+    {"unpack",no_argument,0,'U'},
+    {"upk",no_argument,0,'U'},
+    {"variable",required_argument,0,'v'},
+    {"auxiliary",required_argument,0,'X'},
+    {"exclude",no_argument,0,'x'},
+    {"xcl",no_argument,0,'x'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
 
+  /* Initialize traversal table */ 
+  trv_tbl_init(&trv_tbl);
+
   /* Start timer and save command line */ 
   ddra_info.tmr_flg=nco_tmr_srt;
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -292,33 +319,50 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"mrd") || !strcmp(opt_crr,"multiple_record_dimension")) nco_mrd_cnv=nco_mrd_allow; /* [enm] Multiple Record Dimension convention */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
+      if(!strcmp(opt_crr,"unn") || !strcmp(opt_crr,"union")) GRP_VAR_UNN=True;
+      if(!strcmp(opt_crr,"nsx") || !strcmp(opt_crr,"intersection")) GRP_VAR_UNN=False;
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -333,11 +377,15 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
     case 'a': /* Re-order dimensions */
       dmn_rdr_lst_in=nco_lst_prs_2D(optarg,",",&dmn_rdr_nbr_in);
+      dmn_rdr_lst_in_rvr=nco_lst_prs_2D(optarg,",",&dmn_rdr_nbr_in);
       dmn_rdr_nbr=dmn_rdr_nbr_in;
       break;
     case 'C': /* Extract all coordinates associated with extracted variables? */
@@ -347,7 +395,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -357,6 +405,19 @@ main(int argc,char **argv)
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      /* NB: GNU getopt() optional argument syntax is ugly (requires "=" sign) so avoid it
+      http://stackoverflow.com/questions/1052746/getopt-does-not-parse-optional-arguments-to-parameters */
+      gpe=nco_gpe_prs_arg(optarg);
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case 'g': /* Copy group argument for later processing */
+      /* Replace commas with hashes when within braces (convert back later) */
+      optarg_lcl=(char *)strdup(optarg);
+      (void)nco_rx_comma2hash(optarg_lcl);
+      grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
+      optarg_lcl=(char *)nco_free(optarg_lcl);
+      break;
     case 'h': /* Toggle appending to history global attribute */
       HISTORY_APPEND=!HISTORY_APPEND;
       break;
@@ -384,7 +445,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -403,15 +464,15 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
@@ -421,10 +482,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -432,15 +494,28 @@ main(int argc,char **argv)
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
 
+  /* Set re-order flag */
+  if(dmn_rdr_nbr > 0) IS_REORDER=True; 
+
+  /* No re-order dimensions specified implies packing request */
+  if(dmn_rdr_nbr == 0){
+    if(nco_pck_plc == nco_pck_plc_nil) nco_pck_plc=nco_pck_plc_get(nco_pck_plc_sng);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Packing map is %s and packing policy is %s\n",nco_prg_nm_get(),nco_pck_map_sng_get(nco_pck_map),nco_pck_plc_sng_get(nco_pck_plc));
+  } /* dmn_rdr_nbr != 0 */
+
+  /* From this point forward, assume ncpdq operator packs or re-orders, not both */
+  if(dmn_rdr_nbr > 0 && nco_pck_plc != nco_pck_plc_nil){
+    (void)fprintf(fp_stdout,"%s: ERROR %s does not support simultaneous dimension re-ordering  (-a switch) and packing (-P switch).\nHINT: Invoke %s twice, once to re-order (with -a), and once to pack (with -P).\n",nco_prg_nm,nco_prg_nm,nco_prg_nm);
+    nco_exit(EXIT_FAILURE);
+  } /* endif */
+
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
 
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-    
   /* Initialize thread information */
   thr_nbr=nco_openmp_ini(thr_nbr);
   in_id_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
@@ -448,166 +523,128 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
-  
-  /* Parse auxiliary coordinates */
-  if(aux_nbr > 0){
-     int aux_idx_nbr;
-     aux=nco_aux_evl(in_id,aux_nbr,aux_arg,&aux_idx_nbr);
-     if(aux_idx_nbr > 0){
-        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
-        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
-        int aux_idx=0;
-        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
-        lmt_nbr=lmt_nbr_new;
-     } /* endif aux */
-  } /* endif aux_nbr */
-  
-  /* Get number of variables, dimensions, and record dimension ID of input file */
-  (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id_in);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
+
+  /* Get file format */
   (void)nco_inq_format(in_id,&fl_in_fmt);
-  
-  /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
 
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+  (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl);
+
+  /* Create reversed dimension list */
+  if(dmn_rdr_nbr_in > 0){
+
+    int dmn_rdr_nbr_trv=0;     /* [nbr] Number of dimensions in all variables to extract that match -a names  */
+    int idx_dmn_rdr_nbr_trv=0; /* [nbr] Index to number of dimensions in all variables to extract that match -a names  */
+
+    for(int idx_dmn=0;idx_dmn<NC_MAX_DIMS;idx_dmn++) dmn_rvr_rdr[idx_dmn]=-1; 
+
+    /* Loop table */
+    for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+      trv_sct var_trv=trv_tbl->lst[idx_tbl];
+      /* Is variable to extract  */
+      if (var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+        /* Loop variable dimensions */
+        for(int idx_dmn=0;idx_dmn<var_trv.nbr_dmn;idx_dmn++){
+
+          nco_bool flg_is_rvr=False;
+          optarg_lcl=NULL;
+
+          /* Loop input -a names */
+          for(idx_rdr=0;idx_rdr<dmn_rdr_nbr_in;idx_rdr++){
+
+            /* Does it have a '-' ? */    
+            if(dmn_rdr_lst_in[idx_rdr][0] == '-'){
+              optarg_lcl=(char *)strdup(dmn_rdr_lst_in[idx_rdr]+1);         
+              flg_is_rvr=True;
+            } /* Does it have a '-' ? */  
+
+            /* Compare with dimension name */
+            if (optarg_lcl && strcmp(optarg_lcl,var_trv.var_dmn[idx_dmn].dmn_nm) == 0) {
+              /* Increment number of matches */
+              dmn_rdr_nbr_trv++;
+            } /* Compare with dimension name */
+
+            if (flg_is_rvr){
+              assert(optarg_lcl);
+              dmn_rvr_rdr[idx_dmn_rdr_nbr_trv]=True;
+              optarg_lcl=(char *)nco_free(optarg_lcl); 
+            } else {
+              dmn_rvr_rdr[idx_dmn_rdr_nbr_trv]=False;
+            }
+            idx_dmn_rdr_nbr_trv++;
+
+          } /* Loop input -a names */
+        } /* Loop variable dimensions */
+      } /* Is variable to extract  */
+    } /* Loop table */
+
+    /* Strip all '-'  */
+    for(idx_rdr=0;idx_rdr<dmn_rdr_nbr_in;idx_rdr++){
+      if(dmn_rdr_lst_in[idx_rdr][0] == '-'){
+        /* Copy string to new memory one past negative sign to avoid losing byte */
+        optarg_lcl=dmn_rdr_lst_in[idx_rdr];
+        dmn_rdr_lst_in[idx_rdr]=(char *)strdup(optarg_lcl+1);
+        optarg_lcl=(char *)nco_free(optarg_lcl);
+      }
+    } /* Strip all '-'  */
+  } /* Create reversed dimension list */
 
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
 
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
-  
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
-  
-  /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
-    
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
- 
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
-  
+  /* Get number of variables, dimensions, and global attributes in file, file format */
+  (void)trv_tbl_inq((int *)NULL,(int *)NULL,(int *)NULL,&nbr_dmn_fl,(int *)NULL,(int *)NULL,(int *)NULL,(int *)NULL,&nbr_var_fl,trv_tbl);
+
+  /* Allocate array of dimensions associated with variables to be extracted with maximum possible size */
+  dim=(dmn_sct **)nco_malloc(nbr_dmn_fl*sizeof(dmn_sct *));
+
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
-  
-  nbr_dmn_out=nbr_dmn_xtr;
-  /* Fill-in dimension structure for all extracted dimensions */
-  dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++) dim[idx]=nco_dmn_fll(in_id,dmn_lst[idx].id,dmn_lst[idx].nm);
-  /* Dimension list no longer needed */
-  dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
+  (void)nco_dmn_lst_ass_var_trv(in_id,trv_tbl,&nbr_dmn_xtr,&dim);
+
+  dim=(dmn_sct **)nco_realloc(dim,nbr_dmn_xtr*sizeof(dmn_sct *));
 
   /* Duplicate input dimension structures for output dimension structures */
   dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
   for(idx=0;idx<nbr_dmn_xtr;idx++){
     dmn_out[idx]=nco_dmn_dpl(dim[idx]);
     (void)nco_dmn_xrf(dim[idx],dmn_out[idx]);
-  }
+  } /* end loop over extracted dimensions */
 
-  /* Merge hyperslab limit information into dimension structures */
-  if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
-  
-  /* No re-order dimensions specified implies packing request */
-  if(dmn_rdr_nbr == 0){
-    if(nco_pck_plc == nco_pck_plc_nil) nco_pck_plc=nco_pck_plc_get(nco_pck_plc_sng);
-    if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: DEBUG Packing map is %s and packing policy is %s\n",prg_nm_get(),nco_pck_map_sng_get(nco_pck_map),nco_pck_plc_sng_get(nco_pck_plc));
-  } /* endif */
+  /* If re-ordering */
+  if(IS_REORDER){
 
-  /* From this point forward, assume ncpdq operator packs or re-orders, not both */
-  if(dmn_rdr_nbr > 0 && nco_pck_plc != nco_pck_plc_nil){
-    (void)fprintf(fp_stdout,"%s: ERROR %s does not support simultaneous dimension re-ordering  (-a switch) and packing (-P switch).\nHINT: Invoke %s twice, once to re-order (with -a), and once to pack (with -P).\n",prg_nm,prg_nm,prg_nm);
-    nco_exit(EXIT_FAILURE);
-  } /* end if */
+    /* Create list of dimensions to average(ncwa)/re-order(ncpdq) */
+    (void)nco_dmn_avg_mk(in_id,dmn_rdr_lst_in,dmn_rdr_nbr_in,False,trv_tbl,&dmn_rdr,&dmn_rdr_nbr);
 
-  if(dmn_rdr_nbr > 0 ){
-    /* NB: Same logic as in ncwa, perhaps combine into single function, nco_dmn_avg_rdr_prp()? */
-    /* Make list of user-specified dimension re-orders */
+  } /* If re-ordering */
 
-    /* Create reversed dimension list */
-    dmn_rvr_rdr=(nco_bool *)nco_malloc(dmn_rdr_nbr*sizeof(nco_bool));
-    for(idx_rdr=0;idx_rdr<dmn_rdr_nbr;idx_rdr++){
-      if(dmn_rdr_lst_in[idx_rdr][0] == '-'){
-	dmn_rvr_rdr[idx_rdr]=True;
-	/* Copy string to new memory one past negative sign to avoid losing byte */
-	optarg_lcl=dmn_rdr_lst_in[idx_rdr];
-	dmn_rdr_lst_in[idx_rdr]=(char *)strdup(optarg_lcl+1);
-	optarg_lcl=(char *)nco_free(optarg_lcl);
-      }else{
-	dmn_rvr_rdr[idx_rdr]=False;
-      } /* end else */
-    } /* end loop over idx_rdr */
-
-    /* Create structured list of re-ordering dimension names and IDs */
-    dmn_rdr_lst=nco_dmn_lst_mk(in_id,dmn_rdr_lst_in,dmn_rdr_nbr);
-
-    /* Form list of re-ordering dimensions from extracted input dimensions */
-    dmn_rdr=(dmn_sct **)nco_malloc(dmn_rdr_nbr*sizeof(dmn_sct *));
-    /* Loop over original number of re-order dimensions */
-    for(idx_rdr=0;idx_rdr<dmn_rdr_nbr;idx_rdr++){
-      for(idx=0;idx<nbr_dmn_xtr;idx++){
-	if(!strcmp(dmn_rdr_lst[idx_rdr].nm,dim[idx]->nm)) break;
-      } /* end loop over idx_rdr */
-      if(idx != nbr_dmn_xtr) dmn_rdr[dmn_rdr_nbr_utl++]=dim[idx]; else if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING re-ordering dimension \"%s\" is not contained in any variable in extraction list\n",prg_nm,dmn_rdr_lst[idx_rdr].nm);
-    } /* end loop over idx_rdr */
-    dmn_rdr_nbr=dmn_rdr_nbr_utl;
-    /* Collapse extra dimension structure space to prevent accidentally using it */
-    dmn_rdr=(dmn_sct **)nco_realloc(dmn_rdr,dmn_rdr_nbr*sizeof(dmn_sct *));
-    /* Dimension list in name-ID format is no longer needed */
-    dmn_rdr_lst=nco_nm_id_lst_free(dmn_rdr_lst,dmn_rdr_nbr);
-
-    /* Make sure re-ordering dimensions are specified no more than once */
-    for(idx=0;idx<dmn_rdr_nbr;idx++){
-      for(idx_rdr=0;idx_rdr<dmn_rdr_nbr;idx_rdr++){
-	if(idx_rdr != idx){
-	  if(dmn_rdr[idx]->id == dmn_rdr[idx_rdr]->id){
-	    (void)fprintf(fp_stdout,"%s: ERROR %s specified more than once in reducing list\n",prg_nm,dmn_rdr[idx]->nm);
-	    nco_exit(EXIT_FAILURE);
-	  } /* end if */
-	} /* end if */
-      } /* end loop over idx_rdr */
-    } /* end loop over idx */
-
-    if(dmn_rdr_nbr > nbr_dmn_xtr){
-      (void)fprintf(fp_stdout,"%s: ERROR More re-ordering dimensions than extracted dimensions\n",prg_nm);
-      nco_exit(EXIT_FAILURE);
-    } /* end if */
+  /* Fill-in variable structure list for all extracted variables. NOTE: Using GTT version */
+  var=nco_fll_var_trv(in_id,&xtr_nbr,trv_tbl);
 
-  } /* dmn_rdr_nbr <= 0 */
-
-  /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
-    var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
+  /* Duplicate to output array */
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
-  } /* end loop over idx */
-  /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
-  
+  } /* end loop over variables */
+
   /* Refresh var_out with dim_out data */
-  (void)nco_var_dmn_refresh(var_out,nbr_xtr);
-  
+  (void)nco_var_dmn_refresh(var_out,xtr_nbr);
+
+  /* Is this a CCM/CCSM/CF-format history tape? */
+  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
+
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_map,nco_pck_plc,dmn_rdr,dmn_rdr_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_map,nco_pck_plc,dmn_rdr,dmn_rdr_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc,trv_tbl);
+
+  /* Store processed and fixed variables info into GTT */
+  (void)nco_var_prc_fix_trv(nbr_var_prc,var_prc,nbr_var_fix,var_fix,trv_tbl);
 
   /* We now have final list of variables to extract. Phew. */
-  if(dbg_lvl >= nco_dbg_var){
-    for(idx=0;idx<nbr_xtr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
-    for(idx=0;idx<nbr_var_fix;idx++) (void)fprintf(stderr,"var_fix[%d]->nm = %s, ->id=[%d]\n",idx,var_fix[idx]->nm,var_fix[idx]->id);
-    for(idx=0;idx<nbr_var_prc;idx++) (void)fprintf(stderr,"var_prc[%d]->nm = %s, ->id=[%d]\n",idx,var_prc[idx]->nm,var_prc[idx]->id);
-  } /* end if */
-  
+
   /* Make output and input files consanguinous */
   if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
 
@@ -615,174 +652,16 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-  if(dbg_lvl >= nco_dbg_sbr) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
+  if(nco_dbg_lvl >= nco_dbg_sbr) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
 
-  /* Copy global attributes */
-  (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
-  
   /* Catenate time-stamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
-
   if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
 
-  /* If re-ordering, then in files with record dimension... */
-  if(dmn_rdr_nbr > 0 && rec_dmn_id_in != NCO_REC_DMN_UNDEFINED){
-    /* ...which, if any, output dimension structure currently holds record dimension? */
-    for(dmn_out_idx=0;dmn_out_idx<nbr_dmn_out;dmn_out_idx++)
-      if(dmn_out[dmn_out_idx]->is_rec_dmn) break;
-    if(dmn_out_idx != nbr_dmn_out){
-      dmn_out_idx_rec_in=dmn_out_idx;
-      /* Initialize output record dimension to input record dimension */
-      rec_dmn_nm_in=rec_dmn_nm_out=dmn_out[dmn_out_idx_rec_in]->nm;
-    }else{
-      dmn_out_idx_rec_in=NCO_REC_DMN_UNDEFINED;
-    } /* end else */
-  } /* end if file contains record dimension */
-  
-  /* If re-ordering, determine and set new dimensionality in metadata of each re-ordered variable */
-  if(dmn_rdr_nbr > 0){
-    dmn_idx_out_in=(int **)nco_malloc(nbr_var_prc*sizeof(int *));
-    dmn_rvr_in=(nco_bool **)nco_malloc(nbr_var_prc*sizeof(nco_bool *));
-    for(idx=0;idx<nbr_var_prc;idx++){
-      dmn_idx_out_in[idx]=(int *)nco_malloc(var_prc[idx]->nbr_dim*sizeof(int));
-      dmn_rvr_in[idx]=(nco_bool *)nco_malloc(var_prc[idx]->nbr_dim*sizeof(nco_bool));
-      /* nco_var_dmn_rdr_mtd() does re-order heavy lifting */
-      rec_dmn_nm_out_crr=nco_var_dmn_rdr_mtd(var_prc[idx],var_prc_out[idx],dmn_rdr,dmn_rdr_nbr,dmn_idx_out_in[idx],dmn_rvr_rdr,dmn_rvr_in[idx]);
-      /* If record dimension required by current variable re-order...
-	 ...and variable is multi-dimensional (one dimensional arrays
-	 cannot request record dimension changes)... */
-      if(rec_dmn_nm_out_crr && var_prc_out[idx]->nbr_dim > 1){
-	/* ...differs from input and current output record dimension(s)... */
-	if(strcmp(rec_dmn_nm_out_crr,rec_dmn_nm_in) && strcmp(rec_dmn_nm_out_crr,rec_dmn_nm_out)){
-	  /* ...and current output record dimension already differs from input record dimension... */
-	  if(REDEFINED_RECORD_DIMENSION){
-	    /* ...then requested re-order requires multiple record dimensions... */
-	    if(dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stdout,"%s: WARNING Re-order requests multiple record dimensions\n. Only first request will be honored (netCDF3 allows only one record dimension). Record dimensions involved [original,first change request (honored),latest change request (made by variable %s)]=[%s,%s,%s]\n",prg_nm,var_prc[idx]->nm,rec_dmn_nm_in,rec_dmn_nm_out,rec_dmn_nm_out_crr);
-	    break;
-	  }else{ /* !REDEFINED_RECORD_DIMENSION */
-	    /* ...otherwise, update output record dimension name... */
-	    rec_dmn_nm_out=rec_dmn_nm_out_crr;
-	    /* ...and set new and un-set old record dimensions... */
-	    var_prc_out[idx]->dim[0]->is_rec_dmn=True;
-	    dmn_out[dmn_out_idx_rec_in]->is_rec_dmn=False;
-	    /* ...and set flag that record dimension has been re-defined... */
-	    REDEFINED_RECORD_DIMENSION=True;
-	  } /* !REDEFINED_RECORD_DIMENSION */
-	} /* endif new and old record dimensions differ */
-      } /* endif current variable is record variable */
-    } /* end loop over var_prc */
-  } /* endif dmn_rdr_nbr > 0 */
-  
-  /* NB: Much of following logic is required by netCDF constraint that only
-     one record variable is allowed per file. netCDF4 relaxes this constraint.
-     Hence making following logic prettier or funcionalizing is not high priority.
-     Logic may need to be simplified/re-written once netCDF4 is released. */
-  if(REDEFINED_RECORD_DIMENSION){
-    if(dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change record dimension from %s to %s. netCDF allows only one record dimension. Hence %s will make %s record (least rapidly varying) dimension in all variables that contain it.\n",prg_nm,rec_dmn_nm_in,rec_dmn_nm_out,prg_nm,rec_dmn_nm_out);
-    /* Changing record dimension may invalidate is_rec_var flag
-       Updating is_rec_var flag to correct value, even if value is ignored,
-       helps keep user appraised of unexpected dimension re-orders.
-       is_rec_var may change both for "fixed" and "processed" variables
-       When is_rec_var changes for processed variables, may also need to change
-       ancillary information and to check for duplicate dimensions.
-       Ancillary information (dmn_idx_out_in) is available only for var_prc!
-       Hence must update is_rec_var flag for var_fix and var_prc separately */
-    
-    /*  Update is_rec_var flag for var_fix */
-    for(idx=0;idx<nbr_var_fix;idx++){
-      /* Search all dimensions in variable for new record dimension */
-      for(dmn_out_idx=0;dmn_out_idx<var_fix[idx]->nbr_dim;dmn_out_idx++)
-	if(!strcmp(var_fix[idx]->dim[dmn_out_idx]->nm,rec_dmn_nm_out)) break;
-      /* ...Will variable be record variable in output file?... */
-      if(dmn_out_idx == var_fix[idx]->nbr_dim){
-	/* ...No. Variable will be non-record---does this change its status?... */
-	if(dbg_lvl >= nco_dbg_var) if(var_fix[idx]->is_rec_var == True) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",prg_nm,var_fix[idx]->nm);
-	/* Assign record flag dictated by re-order */
-	var_fix[idx]->is_rec_var=False; 
-      }else{ /* ...otherwise variable will be record variable... */
-	/* ...Yes. Variable will be record... */
-	/* ...Will becoming record variable change its status?... */
-	if(var_fix[idx]->is_rec_var == False){
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",prg_nm,var_fix[idx]->nm);
-	  /* Change record flag to status dictated by re-order */
-	  var_fix[idx]->is_rec_var=True;
-	} /* endif status changing from non-record to record */
-      } /* endif variable will be record variable */
-    } /* end loop over var_fix */
-
-    /* Update is_rec_var flag for var_prc */
-    for(idx=0;idx<nbr_var_prc;idx++){
-      /* Search all dimensions in variable for new record dimension */
-      for(dmn_out_idx=0;dmn_out_idx<var_prc_out[idx]->nbr_dim;dmn_out_idx++)
-	if(!strcmp(var_prc_out[idx]->dim[dmn_out_idx]->nm,rec_dmn_nm_out)) break;
-      /* ...Will variable be record variable in output file?... */
-      if(dmn_out_idx == var_prc_out[idx]->nbr_dim){
-	/* ...No. Variable will be non-record---does this change its status?... */
-	if(dbg_lvl >= nco_dbg_var) if(var_prc_out[idx]->is_rec_var == True) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from record to non-record variable\n",prg_nm,var_prc_out[idx]->nm);
-	/* Assign record flag dictated by re-order */
-	var_prc_out[idx]->is_rec_var=False; 
-      }else{ /* ...otherwise variable will be record variable... */
-	/* ...Yes. Variable will be record... */
-	/* ...must ensure new record dimension is not duplicate dimension... */
-	if(var_prc_out[idx]->has_dpl_dmn){
-	  int dmn_dpl_idx;
-	  for(dmn_dpl_idx=1;dmn_dpl_idx<var_prc_out[idx]->nbr_dim;dmn_dpl_idx++){ /* NB: loop starts from 1 */
-	    if(var_prc_out[idx]->dmn_id[0] == var_prc_out[idx]->dmn_id[dmn_dpl_idx]){
-	      (void)fprintf(stdout,"%s: ERROR Requested re-order turns duplicate non-record dimension %s in variable %s into output record dimension. netCDF does not support duplicate record dimensions in a single variable.\n%s: HINT: Exclude variable %s from extraction list with \"-x -v %s\".\n",prg_nm_get(),rec_dmn_nm_out,var_prc_out[idx]->nm,prg_nm_get(),var_prc_out[idx]->nm,var_prc_out[idx]->nm);
-	      nco_exit(EXIT_FAILURE);
-	    } /* endif err */
-	  } /* end loop over dmn_out */
-	} /* endif has_dpl_dmn */
-	/* ...Will becoming record variable change its status?... */
-	if(var_prc_out[idx]->is_rec_var == False){
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stdout,"%s: INFO Requested re-order will change variable %s from non-record to record variable\n",prg_nm,var_prc_out[idx]->nm);
-	  /* Change record flag to status dictated by re-order */
-	  var_prc_out[idx]->is_rec_var=True;
-	  /* ...Swap dimension information for multi-dimensional variables... */
-	  if(var_prc_out[idx]->nbr_dim > 1){
-	    /* Swap dimension information when turning multi-dimensional 
-	       non-record variable into record variable. 
-	       Single dimensional non-record variables that turn into 
-	       record variables already have correct dimension information */
-	    dmn_sct *dmn_swp; /* [sct] Dimension structure for swapping */
-	    int dmn_idx_rec_in; /* [idx] Record dimension index in input variable */
-	    int dmn_idx_rec_out; /* [idx] Record dimension index in output variable */
-	    int dmn_idx_swp; /* [idx] Dimension index for swapping */
-	    /* If necessary, swap new record dimension to first position */
-	    /* Label indices with standard names */
-	    dmn_idx_rec_in=dmn_out_idx;
-	    dmn_idx_rec_out=0;
-	    /* Swap indices in map */
-	    dmn_idx_swp=dmn_idx_out_in[idx][dmn_idx_rec_out];
-	    dmn_idx_out_in[idx][dmn_idx_rec_out]=dmn_idx_rec_in;
-	    dmn_idx_out_in[idx][dmn_idx_rec_in]=dmn_idx_swp;
-	    /* Swap dimensions in list */
-	    dmn_swp=var_prc_out[idx]->dim[dmn_idx_rec_out];
-	    var_prc_out[idx]->dim[dmn_idx_rec_out]=var_prc_out[idx]->dim[dmn_idx_rec_in];
-	    var_prc_out[idx]->dim[dmn_idx_rec_in]=dmn_swp;
-	    /* NB: Change dmn_id,cnt,srt,end,srd together to minimize chances of forgetting one */
-	    /* Correct output variable structure copy of output record dimension information */
-	    var_prc_out[idx]->dmn_id[dmn_idx_rec_out]=var_prc_out[idx]->dim[dmn_idx_rec_out]->id;
-	    var_prc_out[idx]->cnt[dmn_idx_rec_out]=var_prc_out[idx]->dim[dmn_idx_rec_out]->cnt;
-	    var_prc_out[idx]->srt[dmn_idx_rec_out]=var_prc_out[idx]->dim[dmn_idx_rec_out]->srt;
-	    var_prc_out[idx]->end[dmn_idx_rec_out]=var_prc_out[idx]->dim[dmn_idx_rec_out]->end;
-	    var_prc_out[idx]->srd[dmn_idx_rec_out]=var_prc_out[idx]->dim[dmn_idx_rec_out]->srd;
-	    /* Correct output variable structure copy of input record dimension information */
-	    var_prc_out[idx]->dmn_id[dmn_idx_rec_in]=var_prc_out[idx]->dim[dmn_idx_rec_in]->id;
-	    var_prc_out[idx]->cnt[dmn_idx_rec_in]=var_prc_out[idx]->dim[dmn_idx_rec_in]->cnt;
-	    var_prc_out[idx]->srt[dmn_idx_rec_in]=var_prc_out[idx]->dim[dmn_idx_rec_in]->srt;
-	    var_prc_out[idx]->end[dmn_idx_rec_in]=var_prc_out[idx]->dim[dmn_idx_rec_in]->end;
-	    var_prc_out[idx]->srd[dmn_idx_rec_in]=var_prc_out[idx]->dim[dmn_idx_rec_in]->srd;
-	  } /* endif multi-dimensional */
-	} /* endif status changing from non-record to record */
-      } /* endif variable will be record variable */
-    } /* end loop over var_prc */
-  } /* !REDEFINED_RECORD_DIMENSION */
-  
-  /* Once new record dimension, if any, is known, define dimensions in output file */
-  (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_out);
-  
+  /* Determine and set new dimensionality in metadata of each re-ordered variable */
+  if(IS_REORDER) (void)nco_var_dmn_rdr_mtd_trv(trv_tbl,nbr_var_prc,var_prc,var_prc_out,nbr_var_fix,var_fix,dmn_rdr,dmn_rdr_nbr,dmn_rvr_rdr);
+
   /* Alter metadata for variables that will be packed */
   if(nco_pck_plc != nco_pck_plc_nil){
     if(nco_pck_plc != nco_pck_plc_upk){
@@ -793,126 +672,144 @@ main(int argc,char **argv)
     for(idx=0;idx<nbr_var_prc;idx++){
       nco_pck_mtd(var_prc[idx],var_prc_out[idx],nco_pck_map,nco_pck_plc);
       if(nco_pck_plc != nco_pck_plc_upk){
-	/* Use same copy of attribute name for all edits */
-	aed_lst_add_fst[idx].att_nm=add_fst_sng;
-	aed_lst_scl_fct[idx].att_nm=scl_fct_sng;
+        /* Use same copy of attribute name for all edits */
+        aed_lst_add_fst[idx].att_nm=add_fst_sng;
+        aed_lst_scl_fct[idx].att_nm=scl_fct_sng;
       } /* endif packing */
     } /* end loop over var_prc */
+
+    /* Transfer variable type to table. NOTE: Using processed variables set with new type. MUST be done before definition */
+    (void)nco_var_typ_trv(nbr_var_prc,var_prc_out,trv_tbl);    
   } /* nco_pck_plc == nco_pck_plc_nil */
-  
-  /* Define variables in output file, copy their attributes */
-  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_map,nco_pck_plc,dfl_lvl);
-  
-  /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
+
+  /* Define dimensions, extracted groups, variables, and attributes in output file. NOTE. record name is NULL */
+  (void)nco_xtr_dfn(in_id,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,True,True,nco_pck_plc,(char *)NULL,trv_tbl);
+
+  /* Catenate time-stamped command line to "history" global attribute */
+  if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
+  if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
 
   /* Turn off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-  
+
   /* Take output file out of define mode */
-  (void)nco_enddef(out_id);
-  
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
+
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
 
   /* Copy variable data for non-processed variables */
-  (void)nco_msa_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix,lmt_all_lst,nbr_dmn_fl);
+  (void)nco_cpy_fix_var_trv(in_id,out_id,gpe,trv_tbl);  
 
   /* Close first input netCDF file */
   nco_close(in_id);
 
-  /* Refresh var_prc with dim_out data */
-  for(idx=0;idx<nbr_var_prc;idx++){
-    long sz;
-    long sz_rec;
-    sz=1;
-    sz_rec=1;
-    var_sct *var_tmp;
-    (void)nco_xrf_dmn(var_prc[idx]);
-    var_tmp=var_prc[idx];
-
-    for(jdx=0;jdx<var_tmp->nbr_dim;jdx++){
-      var_tmp->srt[jdx]=var_tmp->dim[jdx]->srt; 
-      var_tmp->end[jdx]=var_tmp->dim[jdx]->end;
-      var_tmp->cnt[jdx]=var_tmp->dim[jdx]->cnt;
-      var_tmp->srd[jdx]=var_tmp->dim[jdx]->srd;
-      sz*=var_tmp->dim[jdx]->cnt;
-      if(jdx >0) sz_rec*=var_tmp->dim[jdx]->cnt;
-     } /* end loop over jdx */
-     var_tmp->sz=sz; 
-     var_tmp->sz_rec=sz_rec;
-  } /* end loop over idx */
-
   /* Loop over input files (not currently used, fl_nbr == 1) */
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
+
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in);
+
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl && FILE_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
-    
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl && FL_RTR_RMT_LCN) (void)fprintf(stderr,", local file is %s",fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
-    
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
+
     /* Timestamp end of metadata setup and disk layout */
     rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
     ddra_info.tmr_flg=nco_tmr_rgl;
 
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(aed_lst_add_fst,aed_lst_scl_fct,dbg_lvl,dmn_idx_out_in,dmn_rdr_nbr,dmn_rvr_in,in_id_arr,nbr_var_prc,nco_pck_map,nco_pck_plc,out_id,prg_nm,rcd,var_prc,var_prc_out,lmt_all_lst,nbr_dmn_fl)
+#pragma omp parallel for default(none) private(idx,in_id) shared(aed_lst_add_fst,aed_lst_scl_fct,nco_dbg_lvl,dmn_rdr_nbr,gpe,in_id_arr,nbr_var_prc,nco_pck_map,nco_pck_plc,out_id,nco_prg_nm,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,IS_REORDER)
 #endif /* !_OPENMP */
-    for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
+
+    /* Process all variables in current file */
+    for(idx=0;idx<nbr_var_prc;idx++){ 
+
+      char *grp_out_fll=NULL; /* [sng] Group name */
+
+      int grp_out_id;    /* [ID] Group ID (output) */
+      int var_out_id;    /* [ID] Variable ID (output) */
+
+      trv_sct *var_trv;  /* [sct] Variable GTT object */
+
       in_id=in_id_arr[omp_get_thread_num()];
-      /* fxm TODO nco638 temporary fix? or leave permanantly? */
       var_prc[idx]->nc_id=in_id; 
-      if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-      if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
-      
+
+      if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+      if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+
+      /* Obtain variable GTT object using full variable name */
+      var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+
       /* Retrieve variable from disk into memory */
-      /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-      (void)nco_msa_var_get(in_id,var_prc[idx],lmt_all_lst,nbr_dmn_fl);
-      if(dmn_rdr_nbr > 0){
-	if((var_prc_out[idx]->val.vp=(void *)nco_malloc_flg(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type))) == NULL){
-	  (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
-	  nco_exit(EXIT_FAILURE); 
-	} /* endif err */
-	/* Change dimensionionality of values */
-	rcd=nco_var_dmn_rdr_val(var_prc[idx],var_prc_out[idx],dmn_idx_out_in[idx],dmn_rvr_in[idx]);
-	/* Re-ordering required two value buffers, time to free input buffer */
-	var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
-	/* Free current dimension correspondence */
-	dmn_idx_out_in[idx]=(int *)nco_free(dmn_idx_out_in[idx]);
-	dmn_rvr_in[idx]=(nco_bool *)nco_free(dmn_rvr_in[idx]);
-      } /* endif dmn_rdr_nbr > 0 */
+      (void)nco_msa_var_get_trv(in_id,var_prc[idx],trv_tbl);
+
+      /* If re-ordering */
+      if(IS_REORDER){
+        if((var_prc_out[idx]->val.vp=(void *)nco_malloc_flg(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type))) == NULL){
+          (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",nco_prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
+          nco_exit(EXIT_FAILURE); 
+        } /* endif err */
+
+        /* Change dimensionionality of values */
+        (void)nco_var_dmn_rdr_val_trv(var_prc[idx],var_prc_out[idx],trv_tbl);
+
+        /* Re-ordering required two value buffers, time to free input buffer */
+        var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
+
+      } /* IS_REORDER */
+
+      /* Edit group name for output */
+      if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+
+      /* Obtain output group ID using full group name */
+      (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+
+      /* Memory management after current extracted group */
+      if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+      /* Get variable ID */
+      (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+
+      /* Store the output variable ID */
+      var_prc_out[idx]->id=var_out_id;
 
       if(nco_pck_plc != nco_pck_plc_nil){
-	/* Copy input variable buffer to processed variable buffer */
-	/* fxm: this is dangerous and leads to double free()'ing variable buffer */
-	var_prc_out[idx]->val=var_prc[idx]->val;
-	/* (Un-)Pack variable according to packing specification */
-	nco_pck_val(var_prc[idx],var_prc_out[idx],nco_pck_map,nco_pck_plc,aed_lst_add_fst+idx,aed_lst_scl_fct+idx);
-      } /* endif dmn_rdr_nbr > 0 */
+        /* Copy input variable buffer to processed variable buffer */
+        /* fxm: this is dangerous and leads to double free()'ing variable buffer */
+        var_prc_out[idx]->val=var_prc[idx]->val;
+        /* (Un-)Pack variable according to packing specification */
+        nco_pck_val(var_prc[idx],var_prc_out[idx],nco_pck_map,nco_pck_plc,aed_lst_add_fst+idx,aed_lst_scl_fct+idx);
+      } /* endif nco_pck_plc != nco_pck_plc_nil */
 
 #ifdef _OPENMP
 #pragma omp critical
 #endif /* _OPENMP */
       { /* begin OpenMP critical */
-	/* Copy variable to output file then free value buffer */
-	if(var_prc_out[idx]->nbr_dim == 0){
-	  (void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
-	}else{ /* end if variable is scalar */
-	  (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
-	} /* end if variable is array */
+        /* Copy variable to output file then free value buffer */
+        if(var_prc_out[idx]->nbr_dim == 0){
+          (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
+        }else{ /* end if variable is scalar */
+          (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
+        } /* end if variable is array */
       } /* end OpenMP critical */
       /* Free current output buffer */
       var_prc_out[idx]->val.vp=nco_free(var_prc_out[idx]->val.vp);
-      
+
     } /* end (OpenMP parallel for) loop over idx */
-    
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"\n");
-    
+
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(fp_stderr,"\n");
+
     /* Write/overwrite packing attributes for newly packed and re-packed variables 
        Logic here should nearly mimic logic in nco_var_dfn() */
     if(nco_pck_plc != nco_pck_plc_nil && nco_pck_plc != nco_pck_plc_upk){
@@ -920,15 +817,37 @@ main(int argc,char **argv)
       (void)nco_redef(out_id);
       /* ...loop through all variables that may have been packed... */
       for(idx=0;idx<nbr_var_prc;idx++){
-	/* nco_var_dfn() pre-defined dummy packing attributes in output file 
-	   only for input variables considered "packable" */
-	if(nco_pck_plc_typ_get(nco_pck_map,var_prc[idx]->typ_upk,(nc_type *)NULL)){
-	  /* Verify input variable was newly packed by this operator
+
+        char *grp_out_fll=NULL; /* [sng] Group name */
+
+        int grp_out_id;    /* [ID] Group ID (output) */
+        int var_out_id;    /* [ID] Variable ID (output) */
+
+        trv_sct *var_trv;  /* [sct] Variable GTT object */
+
+        /* Obtain variable GTT object using full variable name */
+        var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+
+        /* Edit group name for output */
+        if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+
+        /* Obtain output group ID using full group name */
+        (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+
+        /* Memory management after current extracted group */
+        if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+        /* Get variable ID */
+        (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+
+        /* nco_var_dfn() pre-defined dummy packing attributes in output file only for "packable" input variables */
+        if(nco_pck_plc_typ_get(nco_pck_map,var_prc[idx]->typ_upk,(nc_type *)NULL)){
+          /* Verify input variable was newly packed by this operator
 	     Writing pre-existing (non-re-packed) attributes here would fail because
 	     nco_pck_dsk_inq() never fills in var->scl_fct.vp and var->add_fst.vp
 	     Logic is same as in nco_var_dfn() (except var_prc[] instead of var[])
 	     If operator newly packed this particular variable... */
-	  if(
+          if(
 	     /* ...either because operator newly packs all variables... */
 	     (nco_pck_plc == nco_pck_plc_all_new_att) ||
 	     /* ...or because operator newly packs un-packed variables like this one... */
@@ -937,39 +856,37 @@ main(int argc,char **argv)
 	     (nco_pck_plc == nco_pck_plc_xst_new_att && var_prc[idx]->pck_ram)
 	     ){
 	    /* Replace dummy packing attributes with final values, or delete them */
-	    if(dbg_lvl >= nco_dbg_io) (void)fprintf(stderr,"%s: main() replacing dummy packing attribute values for variable %s\n",prg_nm,var_prc[idx]->nm);
-	    (void)nco_aed_prc(out_id,aed_lst_add_fst[idx].id,aed_lst_add_fst[idx]);
-	    (void)nco_aed_prc(out_id,aed_lst_scl_fct[idx].id,aed_lst_scl_fct[idx]);
-	  } /* endif variable is newly packed by this operator */
-	} /* !nco_pck_plc_alw */
+	    if(nco_dbg_lvl >= nco_dbg_io) (void)fprintf(stderr,"%s: main() replacing dummy packing attribute values for variable %s\n",nco_prg_nm,var_prc[idx]->nm);
+	    (void)nco_aed_prc(grp_out_id,aed_lst_add_fst[idx].id,aed_lst_add_fst[idx]);
+	    (void)nco_aed_prc(grp_out_id,aed_lst_scl_fct[idx].id,aed_lst_scl_fct[idx]);
+          } /* endif variable is newly packed by this operator */
+        } /* !nco_pck_plc_alw */
       } /* end loop over var_prc */
-      (void)nco_enddef(out_id);
+
+      /* Take output file out of define mode */
+      if(hdr_pad == 0UL) (void)nco_enddef(out_id); else (void)nco__enddef(out_id,hdr_pad);
+
     } /* nco_pck_plc == nco_pck_plc_nil || nco_pck_plc == nco_pck_plc_upk */
 
     /* Close input netCDF file */
     for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
-    
+
     /* Remove local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
-    
+    if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
+
   } /* end loop over fl_idx */
-  
+
   /* Close output file and move it from temporary to permanent location */
   (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
-  
+
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncpdq-specific memory cleanup */
     if(dmn_rdr_nbr > 0){
-      /* Free dimension correspondence list */
-      for(idx=0;idx<nbr_var_prc;idx++){
-	dmn_idx_out_in[idx]=(int *)nco_free(dmn_idx_out_in[idx]);
-	dmn_rvr_in[idx]=(nco_bool *)nco_free(dmn_rvr_in[idx]);
-      } /* end loop over idx */
-      if(dmn_idx_out_in) dmn_idx_out_in=(int **)nco_free(dmn_idx_out_in);
-      if(dmn_rvr_in) dmn_rvr_in=(nco_bool **)nco_free(dmn_rvr_in);
-      if(dmn_rvr_rdr) dmn_rvr_rdr=(nco_bool *)nco_free(dmn_rvr_rdr);
-      if(dmn_rdr_nbr_in > 0) dmn_rdr_lst_in=nco_sng_lst_free(dmn_rdr_lst_in,dmn_rdr_nbr_in);
+      if(dmn_rdr_nbr_in > 0) {
+        dmn_rdr_lst_in=nco_sng_lst_free(dmn_rdr_lst_in,dmn_rdr_nbr_in);
+        dmn_rdr_lst_in_rvr=nco_sng_lst_free(dmn_rdr_lst_in_rvr,dmn_rdr_nbr_in);
+      }
       /* Free dimension list pointers */
       dmn_rdr=(dmn_sct **)nco_free(dmn_rdr);
       /* Dimension structures in dmn_rdr are owned by dmn and dmn_out, free'd later */
@@ -978,26 +895,18 @@ main(int argc,char **argv)
       if(nco_pck_plc_sng) nco_pck_plc_sng=(char *)nco_free(nco_pck_plc_sng);
       if(nco_pck_map_sng) nco_pck_map_sng=(char *)nco_free(nco_pck_map_sng);
       if(nco_pck_plc != nco_pck_plc_upk){
-	/* No need for loop over var_prc variables to free attribute values
-	   Variable structures and attribute edit lists share same attribute values
-	   Free them only once, and do it in nco_var_free() */
-	aed_lst_add_fst=(aed_sct *)nco_free(aed_lst_add_fst);
-	aed_lst_scl_fct=(aed_sct *)nco_free(aed_lst_scl_fct);
+        /* No need for loop over var_prc variables to free attribute values
+        Variable structures and attribute edit lists share same attribute values
+        Free them only once, and do it in nco_var_free() */
+        aed_lst_add_fst=(aed_sct *)nco_free(aed_lst_add_fst);
+        aed_lst_scl_fct=(aed_sct *)nco_free(aed_lst_scl_fct);
       } /* nco_pck_plc == nco_pck_plc_upk */
     } /* nco_pck_plc == nco_pck_plc_nil */
-    
-    /* NB: lmt now referenced within lmt_all_lst[idx]  */
-    for(idx=0;idx<nbr_dmn_fl;idx++)
-      for(jdx=0;jdx< lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-	lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-    if(nbr_dmn_fl > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl);   
-    lmt=(lmt_sct**)nco_free(lmt); 
-	
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -1012,7 +921,6 @@ main(int argc,char **argv)
     /* Free limits */
     for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
     for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
-    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
@@ -1020,14 +928,17 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr);
     if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr);
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
     var_fix_out=(var_sct **)nco_free(var_fix_out);
+    /* Free traversal table */
+    trv_tbl_free(trv_tbl); 
+    if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
diff --git a/src/nco/ncra.c b/src/nco/ncra.c
index ab720bc..d57960c 100644
--- a/src/nco/ncra.c
+++ b/src/nco/ncra.c
@@ -1,16 +1,16 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncra.c,v 1.270 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncra.c,v 1.468 2013/12/02 20:14:50 zender Exp $ */
 
-/* This single source file may be called as three separate executables:
-   ncra -- netCDF running averager
-   ncea -- netCDF ensemble averager
+/* This single source file compiles into three separate executables:
+   ncra -- netCDF record averager
+   nces -- netCDF ensemble statistics
    ncrcat -- netCDF record concatenator */
 
 /* Purpose: Compute averages or extract series of specified hyperslabs of 
    specfied variables of multiple input netCDF files and output them 
    to a single file. */
 
-/* Copyright (C) 1995--2012 Charlie Zender
-
+/* Copyright (C) 1995--2013 Charlie Zender
+   
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
    and in the file nco/doc/LICENSE in the NCO source distribution.
@@ -20,7 +20,7 @@
    libraries and to distribute the resulting executables under the terms 
    of the GPL, but in addition obeying the extra stipulations of the 
    HDF, netCDF, OPeNDAP, and UDUnits licenses.
-
+   
    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.  
@@ -35,17 +35,24 @@
    Irvine, CA 92697-3100 */
 
 /* URL: http://nco.cvs.sf.net/nco/nco/src/nco/ncra.c
-
+   
    Usage:
    ncra -O -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
    ncra -O -n 3,4,1 -p ${HOME}/nco/data -l ${HOME} h0001.nc ~/foo.nc
    ncra -O -n 3,4,1 -p /ZENDER/tmp -l ${HOME}/nco/data h0001.nc ~/foo.nc
+   ncrcat -O -C -d time,0,5,4,2 -v time -p ~/nco/data in.nc ~/foo.nc
+   ncra -O -C -d time,0,5,4,2 -v time -p ~/nco/data in.nc ~/foo.nc
+   ncra -O -C --mro -d time,0,5,4,2 -v time -p ~/nco/data in.nc ~/foo.nc
+   
    scp ~/nco/src/nco/ncra.c esmf.ess.uci.edu:nco/src/nco
+   
+   nces in.nc in.nc ~/foo.nc
+   nces -O -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
+   nces -O -n 3,4,1 -p ${HOME}/nco/data -l ${HOME} h0001.nc ~/foo.nc
+   nces -O -n 3,4,1 -p /ZENDER/tmp -l ${HOME} h0001.nc ~/foo.nc
 
-   ncea in.nc in.nc ~/foo.nc
-   ncea -O -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
-   ncea -O -n 3,4,1 -p ${HOME}/nco/data -l ${HOME} h0001.nc ~/foo.nc
-   ncea -O -n 3,4,1 -p /ZENDER/tmp -l ${HOME} h0001.nc ~/foo.nc */
+   ncra -Y ncge -O -p ~/nco/data mdl.nc ~/foo.nc
+   ncra -Y ncge -O --nsm_sfx=_avg -p ~/nco/data mdl.nc ~/foo.nc */
 
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
@@ -55,13 +62,15 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
-#else /* HAVE_GETOPT_LONG */ 
+#else /* HAVE_GETOPT_LONG */
 # ifdef HAVE_GETOPT_H
 #  include <getopt.h>
 # endif /* !HAVE_GETOPT_H */ 
@@ -69,12 +78,13 @@
 
 /* Internationalization i18n, Linux Journal 200211 p. 57--59 */
 #ifdef I18N
-#include <libintl.h> /* Internationalization i18n */
-#include <locale.h> /* Locale setlocale() */
-#define _(sng) gettext (sng)
-#define gettext_noop(sng) (sng)
-#define N_(sng) gettext_noop(sng)
+# include <libintl.h> /* Internationalization i18n */
+# include <locale.h> /* Locale setlocale() */
+# define _(sng) gettext (sng)
+# define gettext_noop(sng) (sng)
+# define N_(sng) gettext_noop(sng)
 #endif /* I18N */
+/* Supply stub gettext() function in case i18n failed */
 #ifndef _LIBINTL_H
 # define gettext(foo) foo
 #endif /* _LIBINTL_H */
@@ -85,9 +95,22 @@
 /* Personal headers */
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
 #define MAIN_PROGRAM_FILE
+#include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "libnco.h" /* netCDF Operator (NCO) library */
 
-int 
+/* Define inline'd functions in header so source is visible to calling files
+   C99 only: Declare prototype in exactly one header
+   http://www.drdobbs.com/the-new-c-inline-functions/184401540 */
+extern int min_int(int a, int b);
+extern int max_int(int a, int b);
+inline int min_int(int a, int b){return (a < b) ? a : b;}
+inline int max_int(int a, int b){return (a > b) ? a : b;}
+extern long min_lng(long a, long b);
+extern long max_lng(long a, long b);
+inline long min_lng(long a, long b){return (a < b) ? a : b;}
+inline long max_lng(long a, long b){return (a > b) ? a : b;}
+
+int
 main(int argc,char **argv)
 {
   nco_bool CNV_ARM;
@@ -95,20 +118,32 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FLG_BFR_NRM=False; /* [flg] Current output buffers need normalization */
+  nco_bool FLG_MRO=False; /* [flg] Multi-Record Output */
   nco_bool FL_LST_IN_APPEND=True; /* Option H */
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool LAST_RECORD=False;
-  nco_bool MSA_USR_RDR=False; /* [flg] Multi-slabbing algorithm leaves hyperslabs in */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool REC_APN=False; /* [flg] Append records directly to output file */
+  nco_bool REC_FRS_GRP=False; /* [flg] Record is first in current group */
+  nco_bool *REC_LST_DSR=NULL; /* [flg] Record is last desired from all input files */
+  nco_bool REC_LST_GRP=False; /* [flg] Record is last in current group */
+  nco_bool REC_SRD_LST=False; /* [flg] Record belongs to last stride of current file */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
+  nco_bool flg_rec_all; /*[flg] Retrieve all records */
 
   char **fl_lst_abb=NULL; /* Option n */
   char **fl_lst_in;
+  char **grp_lst_in=NULL_CEWI;
   char **var_lst_in=NULL_CEWI;
   char *aux_arg[NC_MAX_DIMS];
   char *cmd_ln;
@@ -120,17 +155,19 @@ main(int argc,char **argv)
   char *fl_out_tmp=NULL_CEWI;
   char *fl_pth=NULL; /* Option p */
   char *fl_pth_lcl=NULL; /* Option l */
+  char *grp_out_fll=NULL; /* [sng] Group name */
   char *lmt_arg[NC_MAX_DIMS];
   char *nco_op_typ_sng=NULL_CEWI; /* [sng] Operation type Option y */
   char *nco_pck_plc_sng=NULL_CEWI; /* [sng] Packing policy Option P */
+  char *nsm_sfx=NULL; /* [sng] Ensemble suffix */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
 
-  const char * const CVS_Id="$Id: ncra.c,v 1.270 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.270 $";
-  const char * const opt_sht_lst="346ACcD:d:FHhL:l:n:Oo:p:P:rRt:v:X:xY:y:-:";
+  const char * const CVS_Id="$Id: ncra.c,v 1.468 2013/12/02 20:14:50 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.468 $";
+  const char * const opt_sht_lst="3467ACcD:d:FG:g:HhL:l:n:Oo:p:P:rRt:v:X:xY:y:-:";
 
   cnk_sct **cnk=NULL_CEWI;
 
@@ -141,17 +178,19 @@ main(int argc,char **argv)
   ddra_info_sct ddra_info={.flg_ddra=False};
 #endif /* !__cplusplus */
 
-  dmn_sct **dim;
-  dmn_sct **dmn_out;
-  
+  dmn_sct **dim=NULL; /* CEWI */
+  dmn_sct **dmn_out=NULL; /* CEWI */
+
   extern char *optarg;
   extern int optind;
 
   /* Using naked stdin/stdout/stderr in parallel region generates warning
-     Copy appropriate filehandle to variable scoped shared in parallel clause */
+  Copy appropriate filehandle to variable scoped shared in parallel clause */
   FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
   FILE * const fp_stdout=stdout; /* [fl] stdout filehandle CEWI */
 
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
+
   int *in_id_arr;
 
   int abb_arg_nbr=0;
@@ -161,124 +200,162 @@ main(int argc,char **argv)
   int cnk_plc=nco_cnk_plc_nil; /* [enm] Chunking policy */
   int dfl_lvl=0; /* [enm] Deflate level */
   int fl_idx;
-  int fl_nbr=0;
   int fl_in_fmt; /* [enm] Input file format */
+  int fl_nbr=0;
   int fl_out_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Output file format */
   int fll_md_old; /* [enm] Old fill mode */
+  int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
   int idx=int_CEWI;
-  int jdx=int_CEWI;
   int in_id;
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
-  int nbr_dmn_xtr;
+  int nbr_dmn_xtr=0;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
   int nco_op_typ=nco_op_avg; /* [enm] Default operation is averaging */
   int nco_pck_plc=nco_pck_plc_nil; /* [enm] Default packing is none */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
-  int rec_dmn_id=NCO_REC_DMN_UNDEFINED;
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
-  
-  lmt_sct **aux=NULL_CEWI; /* Auxiliary coordinate limits */
-  lmt_sct **lmt=NULL_CEWI;
-  lmt_sct *lmt_rec=NULL_CEWI;
-  lmt_all_sct **lmt_all_lst; /* List of *lmt_all structures */
-  lmt_all_sct *lmt_all_rec=NULL_CEWI; /* pointer to record limit sct in above list */
-  
-  long idx_rec; /* [idx] Index of current record in current input file */
-  long idx_rec_out=0L; /* [idx] Index of current record in output file (0 is first, ...) */
-  
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
+  int idx_rec=0;
+  int grp_id;        /* [ID] Group ID */
+  int grp_out_id;    /* [ID] Group ID (output) */
+  int var_out_id;    /* [ID] Variable ID (output) */
+
+  long idx_rec_crr_in; /* [idx] Index of current record in current input file */
+  long *idx_rec_out=NULL; /* [idx] Index of current record in output file (0 is first, ...) */
+  long *rec_in_cml=NULL;  /* [nbr] Number of records, read or not, in all processed files */
+  long *rec_usd_cml=NULL; /* [nbr] Cumulative number of input records used (catenated by ncrcat or operated on by ncra) */
+  long rec_dmn_sz=0L; /* [idx] Size of record dimension, if any, in current file (increments by srd) */
+  long rec_rmn_prv_drn=0L; /* [idx] Records remaining to be read in current duration group */
+
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
   nco_int base_time_srt=nco_int_CEWI;
   nco_int base_time_crr=nco_int_CEWI;
 
-  nm_id_sct *dmn_lst;
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
-  
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
-  
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
+
   var_sct **var;
   var_sct **var_fix;
   var_sct **var_fix_out;
   var_sct **var_out=NULL_CEWI;
   var_sct **var_prc;
   var_sct **var_prc_out;
-  
+
+  trv_sct *var_trv;        /* [sct] Variable GTT object */
+
+  trv_tbl_sct *trv_tbl;    /* [lst] Traversal table */
+
   static struct option opt_lng[]=
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
-      {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"3",no_argument,0,'3'},
-      {"4",no_argument,0,'4'},
-      {"64bit",no_argument,0,'4'},
-      {"netcdf4",no_argument,0,'4'},
-      {"append",no_argument,0,'A'},
-      {"coords",no_argument,0,'c'},
-      {"crd",no_argument,0,'c'},
-      {"no-coords",no_argument,0,'C'},
-      {"no-crd",no_argument,0,'C'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"dimension",required_argument,0,'d'},
-      {"dmn",required_argument,0,'d'},
-      {"fortran",no_argument,0,'F'},
-      {"ftn",no_argument,0,'F'},
-      {"fl_lst_in",no_argument,0,'H'},
-      {"file_list",no_argument,0,'H'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"nintap",required_argument,0,'n'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"path",required_argument,0,'p'},
-      {"pack",required_argument,0,'P'},
-      {"retain",no_argument,0,'R'},
-      {"rtn",no_argument,0,'R'},
-      {"revision",no_argument,0,'r'},
-      {"thr_nbr",required_argument,0,'t'},
-      {"threads",required_argument,0,'t'},
-      {"omp_num_threads",required_argument,0,'t'},
-      {"variable",required_argument,0,'v'},
-      {"auxiliary",required_argument,0,'X'},
-      {"exclude",no_argument,0,'x'},
-      {"xcl",no_argument,0,'x'},
-      {"pseudonym",required_argument,0,'Y'},
-      {"program",required_argument,0,'Y'},
-      {"prg_nm",required_argument,0,'Y'},
-      {"math",required_argument,0,'y'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    }; /* end opt_lng */
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dbl",no_argument,0,0}, /* [flg] Arithmetic convention: promote float to double */
+    {"flt",no_argument,0,0}, /* [flg] Arithmetic convention: keep single-precision */
+    {"rth_dbl",no_argument,0,0}, /* [flg] Arithmetic convention: promote float to double */
+    {"rth_flt",no_argument,0,0}, /* [flg] Arithmetic convention: keep single-precision */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"md5_dgs",no_argument,0,0}, /* [flg] Perform MD5 digests */
+    {"md5_digest",no_argument,0,0}, /* [flg] Perform MD5 digests */
+    {"mro",no_argument,0,0}, /* [flg] Multi-Record Output */
+    {"multi_record_output",no_argument,0,0}, /* [flg] Multi-Record Output */
+    {"msa_usr_rdr",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"msa_user_order",no_argument,0,0}, /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"rec_apn",no_argument,0,0}, /* [flg] Append records directly to output file */
+    {"record_append",no_argument,0,0}, /* [flg] Append records directly to output file */
+    {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
+    {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
+    {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
+    {"fl_fmt",required_argument,0,0},
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    {"nsm_fl",required_argument,0,0},
+    {"nsm_grp",required_argument,0,0},
+    {"nsm_sfx",required_argument,0,0},
+    {"ensemble_suffix",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"3",no_argument,0,'3'},
+    {"4",no_argument,0,'4'},
+    {"64bit",no_argument,0,'4'},
+    {"netcdf4",no_argument,0,'4'},
+    {"append",no_argument,0,'A'},
+    {"coords",no_argument,0,'c'},
+    {"crd",no_argument,0,'c'},
+    {"no-coords",no_argument,0,'C'},
+    {"no-crd",no_argument,0,'C'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"dimension",required_argument,0,'d'},
+    {"dmn",required_argument,0,'d'},
+    {"fortran",no_argument,0,'F'},
+    {"ftn",no_argument,0,'F'},
+    {"fl_lst_in",no_argument,0,'H'},
+    {"file_list",no_argument,0,'H'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"nintap",required_argument,0,'n'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"path",required_argument,0,'p'},
+    {"pack",required_argument,0,'P'},
+    {"retain",no_argument,0,'R'},
+    {"rtn",no_argument,0,'R'},
+    {"revision",no_argument,0,'r'},
+    {"thr_nbr",required_argument,0,'t'},
+    {"threads",required_argument,0,'t'},
+    {"omp_num_threads",required_argument,0,'t'},
+    {"variable",required_argument,0,'v'},
+    {"auxiliary",required_argument,0,'X'},
+    {"exclude",no_argument,0,'x'},
+    {"xcl",no_argument,0,'x'},
+    {"pseudonym",required_argument,0,'Y'},
+    {"program",required_argument,0,'Y'},
+    {"prg_nm",required_argument,0,'Y'},
+    {"math",required_argument,0,'y'},
+    {"operation",required_argument,0,'y'},
+    {"op_typ",required_argument,0,'y'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
 
 #ifdef _LIBINTL_H
@@ -293,9 +370,9 @@ main(int argc,char **argv)
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -307,33 +384,69 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
+
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
-      if(!strcmp(opt_crr,"msa_usr_rdr")) MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */
+      if(!strcmp(opt_crr,"dbl") || !strcmp(opt_crr,"rth_dbl")) nco_rth_cnv=nco_rth_flt_dbl; /* [flg] Arithmetic convention: promote float to double */
+      if(!strcmp(opt_crr,"flt") || !strcmp(opt_crr,"rth_flt")) nco_rth_cnv=nco_rth_flt_flt; /* [flg] Arithmetic convention: keep single-precision */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"md5_dgs") || !strcmp(opt_crr,"md5_digest")){
+        if(!md5) md5=nco_md5_ini();
+        md5->dgs=True;
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will perform MD5 digests of input and output hyperslabs\n",nco_prg_nm_get());
+      } /* endif "md5_dgs" */
+      if(!strcmp(opt_crr,"mro") || !strcmp(opt_crr,"multi_record_output")) FLG_MRO=True; /* [flg] Multi-Record Output */
+      if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
+      if(!strcmp(opt_crr,"nsm_fl") || !strcmp(opt_crr,"nsm_file") || !strcmp(opt_crr,"ensemble_file")){
+	if(nco_prg_nm) nco_prg_nm=(char *)nco_free(nco_prg_nm);
+	nco_prg_nm=nco_prg_prs("ncfe",&nco_prg_id);
+      } /* endif nsm_fl */
+      if(!strcmp(opt_crr,"nsm_grp") || !strcmp(opt_crr,"nsm_group") || !strcmp(opt_crr,"ensemble_group")){
+	if(nco_prg_nm) nco_prg_nm=(char *)nco_free(nco_prg_nm);
+	nco_prg_nm=nco_prg_prs("ncge",&nco_prg_id);
+      } /* endif nsm_grp */
+      if(!strcmp(opt_crr,"nsm_sfx") || !strcmp(opt_crr,"ensemble_suffix")) nsm_sfx=(char *)strdup(optarg);
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
+      if(!strcmp(opt_crr,"rec_apn") || !strcmp(opt_crr,"record_append")){
+        REC_APN=True; /* [flg] Append records directly to output file */
+        FORCE_APPEND=True;
+      } /* endif "rec_apn" */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -348,8 +461,11 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
-      FORCE_APPEND=!FORCE_APPEND;
+      FORCE_APPEND=True;
       break;
     case 'C': /* Extract all coordinates associated with extracted variables? */
       EXTRACT_ASSOCIATED_COORDINATES=False;
@@ -358,7 +474,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -368,6 +484,19 @@ main(int argc,char **argv)
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      /* NB: GNU getopt() optional argument syntax is ugly (requires "=" sign) so avoid it
+      http://stackoverflow.com/questions/1052746/getopt-does-not-parse-optional-arguments-to-parameters */
+      gpe=nco_gpe_prs_arg(optarg);
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case 'g': /* Copy group argument for later processing */
+      /* Replace commas with hashes when within braces (convert back later) */
+      optarg_lcl=(char *)strdup(optarg);
+      (void)nco_rx_comma2hash(optarg_lcl);
+      grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
+      optarg_lcl=(char *)nco_free(optarg_lcl);
+      break;
     case 'H': /* Toggle writing input file list attribute */
       FL_LST_IN_APPEND=!FL_LST_IN_APPEND;
       break;
@@ -384,9 +513,9 @@ main(int argc,char **argv)
     case 'n': /* NINTAP-style abbreviation of files to average */
       fl_lst_abb=nco_lst_prs_2D(optarg,",",&abb_arg_nbr);
       if(abb_arg_nbr < 1 || abb_arg_nbr > 5){
-	(void)fprintf(stdout,gettext("%s: ERROR Incorrect abbreviation for file list\n"),prg_nm_get());
-	(void)nco_usg_prn();
-	nco_exit(EXIT_FAILURE);
+        (void)fprintf(stdout,gettext("%s: ERROR Incorrect abbreviation for file list\n"),nco_prg_nm_get());
+        (void)nco_usg_prn();
+        nco_exit(EXIT_FAILURE);
       } /* end if */
       break;
     case 'O': /* Toggle FORCE_OVERWRITE */
@@ -403,7 +532,7 @@ main(int argc,char **argv)
       nco_pck_plc=nco_pck_plc_get(nco_pck_plc_sng);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -419,55 +548,53 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'X': /* Copy auxiliary coordinate argument for later processing */
       aux_arg[aux_nbr]=(char *)strdup(optarg);
       aux_nbr++;
-      MSA_USR_RDR=True; /* [flg] Multi-slabbing algorithm leaves hyperslabs in user order */      
+      MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */      
       break;
     case 'x': /* Exclude rather than extract variables specified with -v */
       EXCLUDE_INPUT_LIST=True;
       break;
     case 'Y': /* Pseudonym */
-      /* Call prg_prs to reset pseudonym */
+      /* Call nco_prg_prs() to reset pseudonym */
       optarg_lcl=(char *)strdup(optarg);
-      if(prg_nm) prg_nm=(char *)nco_free(prg_nm);
-      prg_nm=prg_prs(optarg_lcl,&prg);
+      if(nco_prg_nm) nco_prg_nm=(char *)nco_free(nco_prg_nm);
+      nco_prg_nm=nco_prg_prs(optarg_lcl,&nco_prg_id);
       optarg_lcl=(char *)nco_free(optarg_lcl);
       break;
     case 'y': /* Operation type */
       nco_op_typ_sng=(char *)strdup(optarg);
-      if(prg == ncra || prg == ncea ) nco_op_typ=nco_op_typ_get(nco_op_typ_sng);
+      if(nco_prg_id == ncra || nco_prg_id == ncfe) nco_op_typ=nco_op_typ_get(nco_op_typ_sng);
       break;
     case '?': /* Print proper usage */
       (void)nco_usg_prn();
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
     } /* end switch */
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
-  
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
 
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  if(lmt_nbr > 0) lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-  
   /* Initialize thread information */
   thr_nbr=nco_openmp_ini(thr_nbr);
   in_id_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
@@ -475,149 +602,71 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
-
-  /* Parse auxiliary coordinates */
-  if(aux_nbr > 0){
-     int aux_idx_nbr;
-     aux=nco_aux_evl(in_id,aux_nbr,aux_arg,&aux_idx_nbr);
-     if(aux_idx_nbr > 0){
-        lmt=(lmt_sct **)nco_realloc(lmt,(lmt_nbr+aux_idx_nbr)*sizeof(lmt_sct *));
-        int lmt_nbr_new=lmt_nbr+aux_idx_nbr;
-        int aux_idx=0;
-        for(int lmt_idx=lmt_nbr;lmt_idx<lmt_nbr_new;lmt_idx++) lmt[lmt_idx]=aux[aux_idx++];
-        lmt_nbr=lmt_nbr_new;
-     } /* endif aux */
-  } /* endif aux_nbr */
-  
-  /* Get number of variables, dimensions, and record dimension ID of input file */
-  (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
+
   (void)nco_inq_format(in_id,&fl_in_fmt);
-  
-  /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
 
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  /* Initialize traversal table */ 
+  trv_tbl_init(&trv_tbl); 
 
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
+  /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+  (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,var_lst_in_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl);
+
+  /* Store ncge ensemble suffix in table */
+  if(nco_prg_id == ncge && nsm_sfx) trv_tbl->nsm_sfx=nsm_sfx;
+
+  /* Get number of variables, dimensions, and global attributes in file, file format */
+  (void)trv_tbl_inq((int *)NULL,(int *)NULL,(int *)NULL,&nbr_dmn_fl,(int *)NULL,(int *)NULL,(int *)NULL,(int *)NULL,&nbr_var_fl,trv_tbl);
+
+  flg_rec_all= (nco_prg_id == ncra || nco_prg_id == ncrcat) ? False : True;
+
+  /* Build record dimensions array */
+  (void)nco_bld_rec_dmn(in_id,FORTRAN_IDX_CNV,flg_rec_all,trv_tbl);  
+
+  /* Allocate arrays for multi-records cases */
+  idx_rec_out=(long *)nco_malloc(trv_tbl->nbr_rec*sizeof(long));
+  rec_in_cml=(long *)nco_malloc(trv_tbl->nbr_rec*sizeof(long));
+  rec_usd_cml=(long *)nco_malloc(trv_tbl->nbr_rec*sizeof(long));
+  REC_LST_DSR=(nco_bool *)nco_malloc(trv_tbl->nbr_rec*sizeof(nco_bool));
+
+  /* Initialize arrays for multi-records cases */
+  for(idx_rec=0;idx_rec<trv_tbl->nbr_rec;idx_rec++){
+    idx_rec_out[idx_rec]=0L;
+    rec_in_cml[idx_rec]=0L;
+    rec_usd_cml[idx_rec]=0L;
+    REC_LST_DSR[idx_rec]=False;
+  } /* Initialize arrays */
 
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
-
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
-
-  /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
-
-  /* We now have final list of variables to extract. Phew. */
-  
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
-
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id,MSA_USR_RDR,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
-
-  /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
-
-  /* Fill-in dimension structure for all extracted dimensions */
-  dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++) dim[idx]=nco_dmn_fll(in_id,dmn_lst[idx].id,dmn_lst[idx].nm);
-  /* Dimension list no longer needed */
-  dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
-
-  /* Duplicate input dimension structures for output dimension structures */
-  dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++){ 
-    dmn_out[idx]=nco_dmn_dpl(dim[idx]);
-    (void)nco_dmn_xrf(dim[idx],dmn_out[idx]);
-  } /* end loop over dimensions */
-
-  /* Merge hyperslab limit information into dimension structures */
-  if(nbr_dmn_fl > 0) (void)nco_dmn_lmt_all_mrg(dmn_out,nbr_dmn_xtr,lmt_all_lst,nbr_dmn_fl); 
-  
-  /* Create stand-alone limit structure just for record dimension */
-  if(rec_dmn_id == NCO_REC_DMN_UNDEFINED){
-    if(prg == ncra || prg == ncrcat){
-      (void)fprintf(stdout,gettext("%s: ERROR input file %s lacks a record dimension\n"),prg_nm_get(),fl_in);
-      if(fl_nbr == 1)(void)fprintf(stdout,gettext("%s: HINT Use ncks instead of %s\n"),prg_nm_get(),prg_nm_get());
-      nco_exit(EXIT_FAILURE);
-    } /* endif */
-  }else{ /* Record dimension exists */
-    lmt_rec=nco_lmt_sct_mk(in_id,rec_dmn_id,lmt,lmt_nbr,FORTRAN_IDX_CNV);
-    /* Initialize record coordinate re-basing */
-    if(prg == ncra || prg == ncrcat){
-      int var_id;
-      
-      lmt_rec->lmt_cln=cln_nil; 
-      lmt_rec->origin=0.0; 
-      lmt_rec->rbs_sng=NULL;
-
-      /* Obtain metadata for record coordinate */
-      rcd=nco_inq_varid_flg(in_id,lmt_rec->nm,&var_id);
-      if(rcd == NC_NOERR){ 
-	char *cln_att_sng=NULL;
-	lmt_rec->rbs_sng=nco_lmt_get_udu_att(in_id,var_id,"units"); 
-	cln_att_sng=nco_lmt_get_udu_att(in_id,var_id,"calendar"); 
-	lmt_rec->lmt_cln=nco_cln_get_cln_typ(cln_att_sng); 
-	if(cln_att_sng) cln_att_sng=(char*)nco_free(cln_att_sng);  
-      } /* endif record coordinate exists */
-    } /* endif ncra, ncrcat */
-  } /* endif record dimension exists */
-  
-  if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
-    for(idx=0;idx<nbr_dmn_fl;idx++){
-      if(!strcmp(lmt_rec->nm,lmt_all_lst[idx]->dmn_nm)){
-        lmt_all_rec=lmt_all_lst[idx];
-	/* Can only have one record limit */
-        if(lmt_all_rec->lmt_dmn_nbr > 1L){
-	  (void)fprintf(stdout,"%s: Although this program allows multiple hyperslab limits for a single dimension, it allows only one unwrapped limit for the record dimension \"%s\". You have specified %i.\n",prg_nm_get(),lmt_all_rec->dmn_nm,lmt_all_rec->lmt_dmn_nbr);
-	  nco_exit(EXIT_FAILURE);
-	} /* end if */
-        if(prg==ncra || prg==ncrcat){
-	  /* Change record dim in lmt_all_lst so that cnt=1 */
-	  lmt_all_lst[idx]->dmn_cnt=1L;
-	  lmt_all_lst[idx]->lmt_dmn[0]->srt=0L;
-	  lmt_all_lst[idx]->lmt_dmn[0]->end=0L;           
-	  lmt_all_lst[idx]->lmt_dmn[0]->cnt=1L;                   
-	  lmt_all_lst[idx]->lmt_dmn[0]->srd=1L;
-	} /* endif ncra || ncrcat */
-	break;
-      } /* endif current limit applies to record dimension */
-    } /* end loop over all dimensions */
-  } /* end if file has record dimension */
-  
   /* Is this an ARM-format data file? */
   CNV_ARM=nco_cnv_arm_inq(in_id);
   /* NB: nco_cnv_arm_base_time_get() with same nc_id contains OpenMP critical region */
   if(CNV_ARM) base_time_srt=nco_cnv_arm_base_time_get(in_id);
 
   /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
-    var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
+  var=nco_fll_var_trv(in_id,&xtr_nbr,trv_tbl);
+
+  /* Duplicate to output array */
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
-  } /* end loop over idx */
-
-  /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  } /* end loop over xtr */
 
   /* Refresh var_out with dim_out data */
-  (void)nco_var_dmn_refresh(var_out,nbr_xtr);
+  (void)nco_var_dmn_refresh(var_out,xtr_nbr);
+
+  /* Is this a CCM/CCSM/CF-format history tape? */
+  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
 
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,(dmn_sct **)NULL,0,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc,trv_tbl);
+
+  /* Store processed and fixed variables info into GTT */
+  (void)nco_var_prc_fix_trv(nbr_var_prc,var_prc,nbr_var_fix,var_fix,trv_tbl);
 
   /* Make output and input files consanguinous */
   if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
@@ -626,11 +675,11 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
 
   /* Copy global attributes */
   (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
-  
+
   /* Catenate time-stamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
 
@@ -638,44 +687,43 @@ main(int argc,char **argv)
   if(FL_LST_IN_APPEND && HISTORY_APPEND && FL_LST_IN_FROM_STDIN) (void)nco_fl_lst_att_cat(out_id,fl_lst_in,fl_nbr);
 
   if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
-  
-  /* Define dimensions in output file */
-  (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_xtr);
-
-  /* Define variables in output file, copy their attributes */
-  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,(dmn_sct **)NULL,(int)0,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
 
-  /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
+  /* Define dimensions, extracted groups, variables, and attributes in output file */
+  (void)nco_xtr_dfn(in_id,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,True,True,nco_pck_plc_nil,(char *)NULL,trv_tbl);
 
   /* Turn off default filling behavior to enhance efficiency */
   (void)nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-  
+
   /* Take output file out of define mode */
-  (void)nco_enddef(out_id);
-  
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
+
   /* Zero start and stride vectors for all output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
 
   /* Copy variable data for non-processed variables */
-  /* (void)nco_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix); */
-  (void)nco_msa_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix,lmt_all_lst,nbr_dmn_fl);
+  (void)nco_cpy_fix_var_trv(in_id,out_id,gpe,trv_tbl);  
 
   /* Close first input netCDF file */
-  (void)nco_close(in_id);
-  
+  nco_close(in_id);
+
   /* Allocate and, if necesssary, initialize accumulation space for processed variables */
   for(idx=0;idx<nbr_var_prc;idx++){
-    if(prg == ncra || prg == ncrcat){
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){
       /* Allocate space for only one record */
-      /*var_prc_out[idx]->sz=var_prc[idx]->sz=var_prc[idx]->sz_rec;*/
       var_prc[idx]->sz=var_prc[idx]->sz_rec=var_prc_out[idx]->sz=var_prc_out[idx]->sz_rec;
     } /* endif */
-    if(prg == ncra || prg == ncea){
+    if(nco_prg_id == ncra || nco_prg_id == ncfe || nco_prg_id == ncge){
       var_prc_out[idx]->tally=var_prc[idx]->tally=(long *)nco_malloc(var_prc_out[idx]->sz*sizeof(long));
-      (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
       var_prc_out[idx]->val.vp=(void *)nco_malloc(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type));
-      (void)nco_var_zero(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->val);
+      if(nco_prg_id == ncfe || nco_prg_id == ncge){
+        (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
+        (void)nco_var_zero(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->val);
+      } /* end if ncfe || ncge */
     } /* end if */
   } /* end loop over idx */
 
@@ -685,263 +733,520 @@ main(int argc,char **argv)
 
   /* Loop over input files */
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
+
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,(int *)NULL,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,gettext("%s: INFO Input file %d is %s"),prg_nm_get(),fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,gettext("%s: INFO Input file %d is %s"),nco_prg_nm_get(),fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl && FILE_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,gettext(", local file is %s"),fl_in);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl && FL_RTR_RMT_LCN) (void)fprintf(stderr,gettext(", local file is %s"),fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
 
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd+=nco_fl_open(fl_in,NC_NOWRITE,&bfr_sz_hnt,in_id_arr+thr_idx);
     in_id=in_id_arr[0];
-    
-    /* Variables may have different ID, missing_value, type, in each file */
-    for(idx=0;idx<nbr_var_prc;idx++) (void)nco_var_mtd_refresh(in_id,var_prc[idx]);
-    
-    /* Files may have different numbers of records to process
-       NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-    if(rec_dmn_id != NCO_REC_DMN_UNDEFINED) (void)nco_lmt_evl(in_id,lmt_rec,idx_rec_out,FORTRAN_IDX_CNV);
-    
-    /* NB: nco_cnv_arm_base_time_get() with same nc_id contains OpenMP critical region */
-    if(CNV_ARM) base_time_crr=nco_cnv_arm_base_time_get(in_id);
-    
-    /* Perform various error-checks on input file */
-    if(False) (void)nco_fl_cmp_err_chk();
-    
-    if(dbg_lvl >= nco_dbg_std && (rec_dmn_id != NCO_REC_DMN_UNDEFINED) && (lmt_rec->srt > lmt_rec->end)) (void)fprintf(fp_stdout,gettext("%s: WARNING %s (input file %d) is superfluous\n"),prg_nm_get(),fl_in,fl_idx);
-	
-    if(prg == ncra || prg == ncrcat){ /* ncea jumps to else branch */
-      /* Loop over each record in current file */
-	
-      for(idx_rec=lmt_rec->srt;idx_rec<=lmt_rec->end;idx_rec+=lmt_rec->srd){
-	if(fl_idx == fl_nbr-1 && idx_rec >= 1L+lmt_rec->end-lmt_rec->srd) LAST_RECORD=True;
-	/* Process all variables in current record */
-	if(dbg_lvl >= nco_dbg_scl) (void)fprintf(fp_stderr,gettext("Record %ld of %s is input record %ld\n"),idx_rec,fl_in,idx_rec_out);
-        
-        /* Update hyperslab start indices */
-        /* Beware lmt_all_rec points to the the record limit in lmt_lst_all */
-        /* of record struct of lmt_lst_all */
-        lmt_all_rec->lmt_dmn[0]->srt=idx_rec;
-        lmt_all_rec->lmt_dmn[0]->end=idx_rec;
-        lmt_all_rec->lmt_dmn[0]->cnt=1L;
-        lmt_all_rec->lmt_dmn[0]->srd=1L;   
+
+    /* Do ncge ensemble refresh */
+    if(nco_prg_id == ncge){
+      /* Refresh ensembles */
+      if(fl_idx > 0) (void)nco_nsm_ncr(in_id,trv_tbl);         
+    } else { /* ! ncge */
+      /* Variables may have different ID, missing_value, type, in each file */
+      for(idx=0;idx<nbr_var_prc;idx++){
+        /* Obtain variable GTT object using full variable name */
+        trv_sct *trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+        /* Obtain group ID using full group name */
+        (void)nco_inq_grp_full_ncid(in_id,trv->grp_nm_fll,&grp_id);
+        (void)nco_var_mtd_refresh(grp_id,var_prc[idx]);
+      } /* end loop over variables */
+    } /* ! ncge */
+
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){ /* ncfe and ncge jump to else branch */
+
+      /* Loop over number of records to process */
+      for(idx_rec=0;idx_rec<trv_tbl->nbr_rec;idx_rec++){
+
+        /* Obtain group ID using full group name */
+        (void)nco_inq_grp_full_ncid(in_id,trv_tbl->lmt_rec[idx_rec]->grp_nm_fll,&grp_id);
+
+        /* Fill record array */
+        (void)nco_lmt_evl(grp_id,trv_tbl->lmt_rec[idx_rec],rec_usd_cml[idx_rec],FORTRAN_IDX_CNV);
+
+        if(REC_APN){
+          /* Append records directly to output file */
+          int rec_dmn_out_id=NCO_REC_DMN_UNDEFINED;
+          /* Get group ID using record group full name */
+          (void)nco_inq_grp_full_ncid(out_id,trv_tbl->lmt_rec[idx_rec]->nm_fll,&grp_out_id);
+
+          /* TO_DO: this assumes only 1 record in this group */
+          (void)nco_inq_dimid(grp_out_id,trv_tbl->lmt_rec[idx_rec]->nm,&rec_dmn_out_id);
+          (void)nco_inq_dimlen(grp_out_id,rec_dmn_out_id,&idx_rec_out[idx_rec]);
+        } /* !REC_APN */
+
+        if(nco_dbg_lvl_get() == nco_dbg_old) (void)fprintf(fp_stdout,"%s: DEBUG record [%d] #%d<%s>(%ld)\n",nco_prg_nm_get(),idx_rec,trv_tbl->lmt_rec[idx_rec]->id,trv_tbl->lmt_rec[idx_rec]->nm_fll,trv_tbl->lmt_rec[idx_rec]->rec_dmn_sz);                    
+        /* Two distinct ways to specify MRO are --mro and -d dmn,a,b,c,d,[m,M] */
+        if(FLG_MRO) trv_tbl->lmt_rec[idx_rec]->flg_mro=True;
+        if(trv_tbl->lmt_rec[idx_rec]->flg_mro) FLG_MRO=True;
+
+        /* NB: nco_cnv_arm_base_time_get() with same nc_id contains OpenMP critical region */
+        if(CNV_ARM) base_time_crr=nco_cnv_arm_base_time_get(in_id);
+
+        /* Perform various error-checks on input file */
+        if(False) (void)nco_fl_cmp_err_chk();
+
+        /* This file may be superfluous though valid data will be found in upcoming files */
+        if(nco_dbg_lvl >= nco_dbg_std)
+          if((trv_tbl->lmt_rec[idx_rec]->srt > trv_tbl->lmt_rec[idx_rec]->end) && (trv_tbl->lmt_rec[idx_rec]->rec_rmn_prv_drn == 0L))
+            (void)fprintf(fp_stdout,gettext("%s: INFO %s (input file %d) is superfluous\n"),nco_prg_nm_get(),fl_in,fl_idx);
+
+        rec_dmn_sz=trv_tbl->lmt_rec[idx_rec]->rec_dmn_sz;
+        rec_rmn_prv_drn=trv_tbl->lmt_rec[idx_rec]->rec_rmn_prv_drn; /* Local copy may be decremented later */
+        idx_rec_crr_in= (rec_rmn_prv_drn > 0L) ? 0L : trv_tbl->lmt_rec[idx_rec]->srt;
+
+        /* Master loop over records in current file */
+        while(idx_rec_crr_in >= 0L && idx_rec_crr_in < rec_dmn_sz){
+          /* Following logic/assumptions built-in to this loop:
+          idx_rec_crr_in points to valid record before loop is entered
+          Loop is never entered if this file has no valid records
+          Much conditional logic needed to prescribe group position and next record
+
+          Index juggling:
+          idx_rec_crr_in: Index of current record in current input file (increments by 1 for drn then srd-drn ...)
+          idx_rec_out: Index of record in output file
+          lmt_rec->rec_rmn_prv_drn: Structure member, at start of this while loop, contains records remaining-to-be-read to complete duration group from previous file. Structure member remains constant until next file is read.
+          rec_in_cml: Cumulative number of records, read or not, in all files opened so far. Similar to lmt_rec->rec_in_cml but augmented at end of record loop, rather than prior to record loop.
+          rec_rmn_prv_drn: Local copy initialized from lmt_rec structure member begins with above, and then is set to and tracks number of records remaining remaining in current group. This means it is decremented from drn_nbr->0 for each group contained in current file.
+          rec_usd_cml: Cumulative number of input records used (catenated by ncrcat or operated on by ncra)
+
+          Flag juggling:
+          REC_LST_DSR is "sloppy"---it is only set in last input file. If last file(s) is/are superfluous, REC_LST_DSR is never set and final normalization is done outside file and record loops (along with ncfe normalization). FLG_BFR_NRM indicates these situations and allow us to be "sloppy" in setting REC_LST_DSR. */
+
+          /* Last stride in file has distinct index-augmenting behavior */
+          if(idx_rec_crr_in >= trv_tbl->lmt_rec[idx_rec]->end) REC_SRD_LST=True; else REC_SRD_LST=False;
+          /* Even strides commence group beginnings */
+          if(rec_rmn_prv_drn == 0L) REC_FRS_GRP=True; else REC_FRS_GRP=False;
+          /* Each group comprises DRN records */
+          if(REC_FRS_GRP) rec_rmn_prv_drn=trv_tbl->lmt_rec[idx_rec]->drn;
+          /* Final record triggers normalization regardless of its location within group */
+          if(fl_idx == fl_nbr-1 && idx_rec_crr_in == min_int(trv_tbl->lmt_rec[idx_rec]->end+trv_tbl->lmt_rec[idx_rec]->drn-1L,rec_dmn_sz-1L)) REC_LST_DSR[idx_rec]=True;
+          /* ncra normalization/writing code must know last record in current group (LRCG) for both MRO and non-MRO */
+          if(rec_rmn_prv_drn == 1L) REC_LST_GRP=True; else REC_LST_GRP=False;
+
+          /* Process all variables in current record */
+          if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(fp_stdout,gettext("%s: INFO Record %ld of %s contributes to output record %ld\n"),nco_prg_nm_get(),idx_rec_crr_in,fl_in,idx_rec_out[idx_rec]);
 
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(CNV_ARM,base_time_crr,base_time_srt,dbg_lvl,fl_in,fl_out,idx_rec,idx_rec_out,in_id_arr,LAST_RECORD,lmt_rec,nbr_var_prc,nco_op_typ,out_id,prg,rcd,var_prc,var_prc_out,lmt_all_lst,nbr_dmn_fl)
+#pragma omp parallel for default(none) private(idx,in_id) shared(CNV_ARM,base_time_crr,base_time_srt,nco_dbg_lvl,fl_in,fl_out,idx_rec_crr_in,idx_rec_out,rec_usd_cml,in_id_arr,REC_FRS_GRP,REC_LST_DSR,md5,nbr_var_prc,nco_op_typ,FLG_BFR_NRM,FLG_MRO,out_id,nco_prg_id,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,var_trv,grp_id,gpe,grp_out_fll,grp_out_id,var_out_id,idx_rec)
 #endif /* !_OPENMP */
-	  for(idx=0;idx<nbr_var_prc;idx++){
-	    in_id=in_id_arr[omp_get_thread_num()];
-	    if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	    if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
-
-	    /* Retrieve variable from disk into memory */
-	    /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-            (void)nco_msa_var_get(in_id,var_prc[idx],lmt_all_lst,nbr_dmn_fl);
-
-            /* Re-base record coordinate if necessary */
-            if(var_prc[idx]->is_crd_var && lmt_rec->origin != 0.0){
+          for(idx=0;idx<nbr_var_prc;idx++){
+
+            /* Skip variable if does not relate to current record */
+            nco_bool flg_skp=nco_skp_var(var_prc[idx],trv_tbl->lmt_rec[idx_rec]->nm_fll,trv_tbl);
+            if(flg_skp) continue;
+
+            in_id=in_id_arr[omp_get_thread_num()];
+            if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm_fll);
+            if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+
+            /* Obtain variable GTT object using full variable name */
+            var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+            /* Obtain group ID using full group name */
+            (void)nco_inq_grp_full_ncid(in_id,var_trv->grp_nm_fll,&grp_id);
+            /* Edit group name for output */
+            if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+            /* Obtain output group ID using full group name */
+            (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+            /* Get variable ID */
+            (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+            /* Memory management after current extracted group */
+            if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+            /* Store the output variable ID */
+            var_prc_out[idx]->id=var_out_id;
+
+            /* Retrieve variable from disk into memory. NB: Using version that updates hyperslab start indices with idx_rec_crr_in  */ 
+            (void)nco_msa_var_get_elm_trv(in_id,var_prc[idx],trv_tbl->lmt_rec[idx_rec]->nm_fll,idx_rec_crr_in,trv_tbl);
+
+            if(nco_prg_id == ncra) FLG_BFR_NRM=True; /* [flg] Current output buffers need normalization */
+
+            /* Re-base record coordinate and bounds if necessary (e.g., time, time_bnds) */
+            if(trv_tbl->lmt_rec[idx_rec]->origin != 0.0 && (var_prc[idx]->is_crd_var || nco_is_spc_in_bnd_att(grp_id,var_prc[idx]->id))){
               var_sct *var_crd;
               scv_sct scv;
               /* De-reference */
               var_crd=var_prc[idx];
-              scv.val.d=lmt_rec->origin;              
+              scv.val.d=trv_tbl->lmt_rec[idx_rec]->origin;              
               scv.type=NC_DOUBLE;  
               /* Convert scalar to variable type */
-	      nco_scv_cnf_typ(var_crd->type,&scv);
-	      (void)var_scv_add(var_crd->type,var_crd->sz,var_crd->has_mss_val,var_crd->mss_val,var_crd->val,&scv);
+              nco_scv_cnf_typ(var_crd->type,&scv);
+              (void)var_scv_add(var_crd->type,var_crd->sz,var_crd->has_mss_val,var_crd->mss_val,var_crd->val,&scv);
             } /* end re-basing */
-	    
-	    if(prg == ncra){
+
+            if(nco_prg_id == ncra){
+              nco_bool flg_rth_ntl;
+              if(!rec_usd_cml[idx_rec] || (FLG_MRO && REC_FRS_GRP)) flg_rth_ntl=True; else flg_rth_ntl=False;
+              /* Initialize tally and accumulation arrays when appropriate */
+              if(flg_rth_ntl){
+                (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
+                (void)nco_var_zero(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->val);
+              } /* end if flg_rth_ntl */
+
               /* Do not promote un-averagable types (NC_CHAR, NC_STRING)
-		 Stuff first record into output buffer regardless of nco_op_typ,
-		 and ignore later records (idx_rec_out > 1). 
-		 Temporarily fixes TODO nco941 */
+              Stuff first record into output buffer regardless of nco_op_typ; ignore later records (rec_usd_cml > 1)
+              Temporarily fixes TODO nco941 */
               if(var_prc[idx]->type == NC_CHAR){
-                if(!idx_rec_out) nco_opr_drv(idx_rec_out,nco_op_min,var_prc[idx],var_prc_out[idx]);
+                if(flg_rth_ntl) nco_opr_drv((long)0L,nco_op_min,var_prc[idx],var_prc_out[idx]);
               }else{
-	        /* Convert char, short, long, int types to doubles before arithmetic
-		   Output variable type is "sticky" so only convert on first record */
-	        if(idx_rec_out == 0L) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
-	        var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
-		/* Perform arithmetic operations: avg, min, max, ttl, ... */
-	        nco_opr_drv(idx_rec_out,nco_op_typ,var_prc[idx],var_prc_out[idx]);
+                /* Convert char, short, long, int types to doubles before arithmetic
+                Output variable type is "sticky" so only convert on first record */
+                if(flg_rth_ntl) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
+                var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
+                /* Perform arithmetic operations: avg, min, max, ttl, ... */
+                if(flg_rth_ntl) nco_opr_drv((long)0L,nco_op_typ,var_prc[idx],var_prc_out[idx]); else nco_opr_drv((long)1L,nco_op_typ,var_prc[idx],var_prc_out[idx]);
               } /* end else */ 
-	    } /* end if ncra */
-	    
-	    /* Append current record to output file */
-	    if(prg == ncrcat){
-	      var_prc_out[idx]->srt[0]=var_prc_out[idx]->end[0]=idx_rec_out;
-	      var_prc_out[idx]->cnt[0]=1L;
-	      /* Replace this time_offset value with time_offset from initial file base_time */
-	      if(CNV_ARM && !strcmp(var_prc[idx]->nm,"time_offset")) var_prc[idx]->val.dp[0]+=(base_time_crr-base_time_srt);
+            } /* end if ncra */
+
+            /* All processed variables contain record dimension and both ncrcat and ncra write records singly */
+            var_prc_out[idx]->srt[0]=var_prc_out[idx]->end[0]=idx_rec_out[idx_rec];
+            var_prc_out[idx]->cnt[0]=1L;
+
+            /* Append current record to output file */
+            if(nco_prg_id == ncrcat){
+              /* Replace this time_offset value with time_offset from initial file base_time */
+              if(CNV_ARM && !strcmp(var_prc[idx]->nm,"time_offset")) var_prc[idx]->val.dp[0]+=(base_time_crr-base_time_srt);
 #ifdef _OPENMP
 #pragma omp critical
 #endif /* _OPENMP */
-	      if(var_prc_out[idx]->sz_rec > 1) (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp,var_prc_out[idx]->type); else (void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc[idx]->val.vp,var_prc_out[idx]->type);
-	    } /* end if ncrcat */
-	    
-	    /* Warn if record coordinate, if any, is not monotonic */
-	    if(prg == ncrcat && var_prc[idx]->is_crd_var) (void)rec_crd_chk(var_prc[idx],fl_in,fl_out,idx_rec,idx_rec_out);
-	    /* Convert missing_value, if any, back to unpacked type
-	       Otherwise missing_value will be double-promoted when next record read 
-	       Do not convert after last record otherwise normalization fails 
-	       due to wrong missing_value type (needs promoted type, not unpacked type) */
-	    if(var_prc[idx]->has_mss_val && var_prc[idx]->type != var_prc[idx]->typ_upk && !LAST_RECORD) var_prc[idx]=nco_cnv_mss_val_typ(var_prc[idx],var_prc[idx]->typ_upk);
-	    /* Free current input buffer */
-	    var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
-	  } /* end (OpenMP parallel for) loop over variables */
-	  idx_rec_out++; /* [idx] Index of current record in output file (0 is first, ...) */
-	  if(dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"\n");
-	} /* end loop over idx_rec */
-	/* Warn if fewer than number of requested records were read and final file has been processed */
-	if(lmt_rec->lmt_typ == lmt_dmn_idx && lmt_rec->is_usr_spc_min && lmt_rec->is_usr_spc_max){
-	  long rec_nbr_rqs; /* Number of records user requested */
-	  rec_nbr_rqs=1L+(lmt_rec->max_idx-lmt_rec->min_idx)/lmt_rec->srd;
-	  if(dbg_lvl >= nco_dbg_std && fl_idx == fl_nbr-1 && rec_nbr_rqs != idx_rec_out) (void)fprintf(fp_stdout,gettext("%s: WARNING User requested %li records but only %li were found\n"),prg_nm_get(),rec_nbr_rqs,idx_rec_out);
-	} /* end if */
-	/* Error if no records were read and final file has been processed */
-	if(idx_rec_out <= 0 && fl_idx == fl_nbr-1){
-	  (void)fprintf(fp_stdout,gettext("%s: ERROR No records lay within specified hyperslab\n"),prg_nm_get());
-	  nco_exit(EXIT_FAILURE);
-	} /* end if */
-	/* End of ncra, ncrcat section */
-      }else{ /* ncea */
-
-        if(rec_dmn_id != NCO_REC_DMN_UNDEFINED){
-          /* Update hyperslab start indices*/			
-	  lmt_all_rec->lmt_dmn[0]->srt=lmt_rec->srt;
-          lmt_all_rec->lmt_dmn[0]->end=lmt_rec->end;
-          lmt_all_rec->lmt_dmn[0]->cnt=lmt_rec->cnt;
-          lmt_all_rec->lmt_dmn[0]->srd=lmt_rec->srd; 
-          lmt_all_rec->dmn_cnt=lmt_rec->cnt; 
-	} /* endif record dimension exists */
+              if(var_prc_out[idx]->sz_rec > 1L) (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp,var_prc_out[idx]->type); 
+              else (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc[idx]->val.vp,var_prc_out[idx]->type);
+              /* Perform MD5 digest of input and output data if requested */
+              if(md5) (void)nco_md5_chk(md5,var_prc_out[idx]->nm,var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type),grp_out_id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc[idx]->val.vp);
+            } /* end if ncrcat */
+
+            /* Warn if record coordinate, if any, is not monotonic */
+            if(nco_prg_id == ncrcat && var_prc[idx]->is_crd_var) (void)rec_crd_chk(var_prc[idx],fl_in,fl_out,idx_rec_crr_in,idx_rec_out[idx_rec]);
+            /* Convert missing_value, if any, back to unpacked type
+            Otherwise missing_value will be double-promoted when next record read 
+            Do not convert after last record otherwise normalization fails 
+            due to wrong missing_value type (needs promoted type, not unpacked type) */
+            if(var_prc[idx]->has_mss_val && var_prc[idx]->type != var_prc[idx]->typ_upk && !REC_LST_DSR[idx_rec]) var_prc[idx]=nco_cnv_mss_val_typ(var_prc[idx],var_prc[idx]->typ_upk);
+            /* Free current input buffer */
+            var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
+          } /* end (OpenMP parallel for) loop over variables */
+
+          if(nco_prg_id == ncra && ((FLG_MRO && REC_LST_GRP) || REC_LST_DSR[idx_rec])){
+            /* Normalize, multiply, etc where necessary: ncra and nces normalization blocks are identical, 
+            except ncra normalizes after every drn records, while nces normalizes once, after files loop. */
+            (void)nco_opr_nrm(nco_op_typ,nbr_var_prc,var_prc,var_prc_out,True,trv_tbl->lmt_rec[idx_rec]->nm_fll,trv_tbl);
+            FLG_BFR_NRM=False; /* [flg] Current output buffers need normalization */
+
+            /* Copy averages to output file */
+            for(idx=0;idx<nbr_var_prc;idx++){
+
+              /* Skip variable if does not relate to current record */
+              nco_bool flg_skp=nco_skp_var(var_prc[idx],trv_tbl->lmt_rec[idx_rec]->nm_fll,trv_tbl);
+              if(flg_skp) continue;
+
+              /* Obtain variable GTT object using full variable name */
+              var_trv=trv_tbl_var_nm_fll(var_prc_out[idx]->nm_fll,trv_tbl);
+              /* Edit group name for output */
+              if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+              /* Obtain output group ID using full group name */
+              (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+              /* Memory management after current extracted group */
+              if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+              var_prc_out[idx]=nco_var_cnf_typ(var_prc_out[idx]->typ_upk,var_prc_out[idx]);
+              /* Packing/Unpacking */
+              if(nco_pck_plc == nco_pck_plc_all_new_att) var_prc_out[idx]=nco_put_var_pck(grp_out_id,var_prc_out[idx],nco_pck_plc);
+              if(var_prc_out[idx]->nbr_dim == 0) (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type); else (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
+            } /* end loop over idx */
+            idx_rec_out[idx_rec]++; /* [idx] Index of current record in output file (0 is first, ...) */
+          } /* end if normalize and write */
+
+          /* Prepare indices and flags for next iteration */
+          if(nco_prg_id == ncrcat) idx_rec_out[idx_rec]++; /* [idx] Index of current record in output file (0 is first, ...) */
+          rec_usd_cml[idx_rec]++; /* [nbr] Cumulative number of input records used (catenated by ncrcat or operated on by ncra) */
+          if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(fp_stderr,"\n");
+
+          /* Finally, set index for next record or get outta' Dodge */
+          if(REC_SRD_LST){
+            /* Last index depends on whether user-specified end was exact, sloppy, or caused truncation */
+            long end_max_crr;
+            end_max_crr=min_lng(trv_tbl->lmt_rec[idx_rec]->idx_end_max_abs-rec_in_cml[idx_rec],min_lng(trv_tbl->lmt_rec[idx_rec]->end+trv_tbl->lmt_rec[idx_rec]->drn-1L,rec_dmn_sz-1L));
+            if(--rec_rmn_prv_drn > 0L && idx_rec_crr_in < end_max_crr) idx_rec_crr_in++; else break;
+          }else{ /* !REC_SRD_LST */
+            if(--rec_rmn_prv_drn > 0L) idx_rec_crr_in++; else idx_rec_crr_in+=trv_tbl->lmt_rec[idx_rec]->srd-trv_tbl->lmt_rec[idx_rec]->drn+1L;
+          } /* !REC_SRD_LST */
+
+        } /* end master while loop over records in current file */
+
+        rec_in_cml[idx_rec]+=rec_dmn_sz; /* [nbr] Cumulative number of records in all files opened so far */
+        trv_tbl->lmt_rec[idx_rec]->rec_rmn_prv_drn=rec_rmn_prv_drn;
+
+        if(fl_idx == fl_nbr-1){
+          /* Warn if other than number of requested records were read */
+          if(trv_tbl->lmt_rec[idx_rec]->lmt_typ == lmt_dmn_idx && trv_tbl->lmt_rec[idx_rec]->is_usr_spc_min && trv_tbl->lmt_rec[idx_rec]->is_usr_spc_max){
+            long drn_grp_nbr_max; /* [nbr] Duration groups that start within range */
+            long rec_nbr_rqs; /* Number of records user requested */
+            long rec_nbr_rqs_max; /* [nbr] Records that would be used by drn_grp_nbr_max groups */
+            long rec_nbr_spn_act; /* [nbr] Records available within user-specified range */
+            long rec_nbr_spn_max; /* [nbr] Minimum record number spanned by drn_grp_nbr_max groups */
+            long rec_nbr_trn; /* [nbr] Records truncated in last group */
+            long srd_nbr_flr; /* [nbr] Whole strides that fit within specified range */
+            /* Number of whole strides that fit within specified range */
+            srd_nbr_flr=(trv_tbl->lmt_rec[idx_rec]->max_idx-trv_tbl->lmt_rec[idx_rec]->min_idx)/trv_tbl->lmt_rec[idx_rec]->srd;
+            drn_grp_nbr_max=1L+srd_nbr_flr;
+            /* Number of records that would be used by N groups */
+            rec_nbr_rqs_max=drn_grp_nbr_max*trv_tbl->lmt_rec[idx_rec]->drn;
+            /* Minimum record number spanned by N groups of size D is N-1 strides, plus D-1 trailing members of last group */
+            rec_nbr_spn_max=trv_tbl->lmt_rec[idx_rec]->srd*(drn_grp_nbr_max-1L)+trv_tbl->lmt_rec[idx_rec]->drn;
+            /* Actual number of records available within range */
+            rec_nbr_spn_act=1L+trv_tbl->lmt_rec[idx_rec]->max_idx-trv_tbl->lmt_rec[idx_rec]->min_idx;
+            /* Number truncated in last group */
+            rec_nbr_trn=max_int(rec_nbr_spn_max-rec_nbr_spn_act,0L);
+            /* Records requested is maximum minus any truncated in last group */
+            rec_nbr_rqs=rec_nbr_rqs_max-rec_nbr_trn;
+            if(rec_nbr_rqs != rec_usd_cml[idx_rec]) (void)fprintf(fp_stdout,gettext("%s: WARNING User requested %li records but only %li were found and used\n"),nco_prg_nm_get(),rec_nbr_rqs,rec_usd_cml[idx_rec]);
+          } /* end if */
+          /* ... and die if no records were read ... */
+          if(rec_usd_cml[idx_rec] <= 0){
+            (void)fprintf(fp_stdout,gettext("%s: ERROR No records lay within specified hyperslab\n"),nco_prg_nm_get());
+            nco_exit(EXIT_FAILURE);
+          } /* end if */
+        } /* end if */
+
+      } /* Loop over number of records to process */
+
+      /* End of ncra, ncrcat section */
+    }else if(nco_prg_id == ncfe){ /* ncfe */
+
 #ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx,in_id) shared(dbg_lvl,fl_idx,in_id_arr,lmt_rec,nbr_var_prc,nco_op_typ,rcd,var_prc,var_prc_out,lmt_all_lst,nbr_dmn_fl)
+#pragma omp parallel for default(none) private(idx,in_id) shared(nco_dbg_lvl,fl_idx,FLG_BFR_NRM,in_id_arr,nbr_var_prc,nco_op_typ,rcd,var_prc,var_prc_out,nbr_dmn_fl,trv_tbl,var_trv,grp_id,gpe,grp_out_fll,grp_out_id,out_id,var_out_id)
 #endif /* !_OPENMP */
-	for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
-	  in_id=in_id_arr[omp_get_thread_num()];
-	  if(dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-	  if(dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
-
-	  /* Retrieve variable from disk into memory */
-	  (void)nco_msa_var_get(in_id,var_prc[idx],lmt_all_lst,nbr_dmn_fl);
-	  
-	  /* Convert char, short, long, int types to doubles before arithmetic
-	     Output variable type is "sticky" so only convert on first record */
-	  if(fl_idx == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
-	  var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
-	  /* Perform arithmetic operations: avg, min, max, ttl, ... */ /* Note: fl_idx not idx_rec_out! */
-	  nco_opr_drv(fl_idx,nco_op_typ,var_prc[idx],var_prc_out[idx]);
-	  
-	  /* Free current input buffer */
-	  var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
-	} /* end (OpenMP parallel for) loop over idx */
-      } /* end else ncea */
-      
-      if(dbg_lvl >= nco_dbg_scl) (void)fprintf(fp_stderr,"\n");
-      
-      /* Close input netCDF file */
-      for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
-
-    /* Dispose local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
-    
+      for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
+
+        in_id=in_id_arr[omp_get_thread_num()];
+        if(nco_dbg_lvl >= nco_dbg_var) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+        if(nco_dbg_lvl >= nco_dbg_var) (void)fflush(fp_stderr);
+
+        /* Obtain variable GTT object using full variable name */
+        var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+        /* Obtain group ID using full group name */
+        (void)nco_inq_grp_full_ncid(in_id,var_trv->grp_nm_fll,&grp_id);
+        /* Edit group name for output */
+        if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+        /* Obtain output group ID using full group name */
+        (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+        /* Memory management after current extracted group */
+        if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+        /* Get variable ID */
+        (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+
+        /* Store the output variable ID */
+        var_prc_out[idx]->id=var_out_id;
+
+        /* Retrieve variable from disk into memory */
+        (void)nco_msa_var_get_trv(in_id,var_prc[idx],trv_tbl);
+
+        /* Convert char, short, long, int types to doubles before arithmetic
+        Output variable type is "sticky" so only convert on first record */
+        if(fl_idx == 0) var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
+        var_prc[idx]=nco_var_cnf_typ(var_prc_out[idx]->type,var_prc[idx]);
+        /* Perform arithmetic operations: avg, min, max, ttl, ... */ /* Note: fl_idx not rec_usd_cml! */
+        nco_opr_drv(fl_idx,nco_op_typ,var_prc[idx],var_prc_out[idx]);
+        FLG_BFR_NRM=True; /* [flg] Current output buffers need normalization */
+
+        /* Free current input buffer */
+        var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
+      } /* end (OpenMP parallel for) loop over idx */
+      /* End ncfe section */
+    }else if(nco_prg_id == ncge){ /* ncge */
+
+      trv_tbl_sct *trv_tbl1;    /* [lst] Traversal table (needed for multi-file cases)  */
+
+      /* Initialize traversal table */ 
+      trv_tbl_init(&trv_tbl1); 
+
+      /* Construct GTT using current file ID */
+      (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,var_lst_in_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl1);
+
+      /* Loop over ensembles in current file */
+      for(int idx_nsm=0;idx_nsm<trv_tbl->nsm_nbr;idx_nsm++){ 
+
+        if(nco_dbg_lvl > nco_dbg_std) (void)fprintf(stdout,"%s: ensemble %d: %s\n",nco_prg_nm_get(),idx_nsm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn);
+
+        int mbr_srt=trv_tbl->nsm[idx_nsm].mbr_srt;
+        int mbr_end=trv_tbl->nsm[idx_nsm].mbr_end;
+
+        /* Loop over members of current ensemble (use start and end members, multi file cases) */
+        for(int idx_mbr=mbr_srt;idx_mbr<mbr_end;idx_mbr++){
+
+          /* Loop over all variables */
+          for(int idx_prc=0;idx_prc<nbr_var_prc;idx_prc++){ 
+
+            /* Obtain variable GTT object for the member *variable* in ensemble (the ones to average) */
+            var_trv=trv_tbl_var_nm_fll(var_prc[idx_prc]->nm_fll,trv_tbl);
+            assert(var_trv);
+
+            /* Skip if from different ensembles */
+            if(strcmp(var_trv->nsm_nm,trv_tbl->nsm[idx_nsm].grp_nm_fll_prn)) continue;
+
+            /* Build new variable name */
+            char *grp_nm_fll=trv_tbl->nsm[idx_nsm].grp_mbr_fll[idx_mbr]; 
+            char *var_nm_fll=nco_bld_nm_fll(grp_nm_fll,var_prc[idx_prc]->nm);;
+            char *nm_fll=strdup(var_prc[idx_prc]->nm_fll);
+
+            var_prc[idx_prc]->nm_fll=(char *)nco_free(var_prc[idx_prc]->nm_fll);
+            var_prc[idx_prc]->nm_fll=nco_bld_nm_fll(grp_nm_fll,var_prc[idx_prc]->nm);
+            if(nco_dbg_lvl > nco_dbg_std) (void)fprintf(fp_stdout,"%s:\t variable <%s>\n",nco_prg_nm_get(),var_prc[idx_prc]->nm_fll); 
+
+            /* Obtain group ID using full group name */
+            (void)nco_inq_grp_full_ncid(in_id,grp_nm_fll,&grp_id);
+            (void)nco_var_mtd_refresh(grp_id,var_prc[idx_prc]);
+
+            /* Retrieve variable from disk into memory. NB: Using table in file loop */
+            (void)nco_msa_var_get_trv(in_id,var_prc[idx_prc],trv_tbl1);
+
+            /* Convert char, short, long, int types to doubles before arithmetic
+            Output variable type is "sticky" so only convert on first member */
+            if(fl_idx == 0 && idx_mbr == 0) var_prc_out[idx_prc]=nco_typ_cnv_rth(var_prc_out[idx_prc],nco_op_typ);
+            var_prc[idx_prc]=nco_var_cnf_typ(var_prc_out[idx_prc]->type,var_prc[idx_prc]);
+            /* Perform arithmetic operations: avg, min, max, ttl, ... */
+            nco_opr_drv(fl_idx+idx_mbr,nco_op_typ,var_prc[idx_prc],var_prc_out[idx_prc]);
+            FLG_BFR_NRM=True; /* [flg] Current output buffers need normalization */
+
+            /* Put old name back */
+            var_prc[idx_prc]->nm_fll=(char *)nco_free(var_prc[idx_prc]->nm_fll);
+            var_prc[idx_prc]->nm_fll=strdup(nm_fll);
+
+            /* Free current input buffer */
+            var_prc[idx_prc]->val.vp=nco_free(var_prc[idx_prc]->val.vp);
+
+            /* Free built variable name */
+            var_nm_fll=(char *)nco_free(var_nm_fll);
+            nm_fll=(char *)nco_free(nm_fll);
+
+          } /* end loop over var_prc */
+        } /* end loop over mbr */
+
+      } /* Loop over ensembles in current file */
+
+      (void)trv_tbl_free(trv_tbl1);
+
+    } /* End ncge section */
+
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(fp_stderr,"\n");
+
+    /* Our data tanks are already full */
+    if(nco_prg_id == ncra || nco_prg_id == ncrcat){
+      /* Loop records */
+      for(idx_rec=0;idx_rec<trv_tbl->nbr_rec;idx_rec++){
+        if(trv_tbl->lmt_rec[idx_rec]->flg_input_complete){
+          /* NB: TODO nco1066 move input_complete break to precede record loop but remember to close open filehandles */
+          if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(fp_stderr,"%s: INFO All requested records were found within the first %d input file%s, next file was opened then skipped, and remaining %d input file%s will not be opened\n",nco_prg_nm_get(),fl_idx,(fl_idx == 1) ? "" : "s",fl_nbr-fl_idx-1,(fl_nbr-fl_idx-1 == 1) ? "" : "s");
+          break;
+        } /* endif superfluous */
+      } /* Loop records */
+    } /* endif ncra || ncrcat */
+
   } /* end loop over fl_idx */
-  
-  /* Normalize, multiply, etc where necessary */
-  if(prg == ncra || prg == ncea){
-#ifdef _OPENMP
-#pragma omp parallel for default(none) private(idx) shared(nbr_var_prc,nco_op_typ,var_prc,var_prc_out)
-#endif /* !_OPENMP */
-    for(idx=0;idx<nbr_var_prc;idx++){
-      if(var_prc[idx]->is_crd_var){
-	/* Return linear averages of coordinates unless computing extrema
-	   Prevent coordinate variables from encountering nco_var_nrm_sdn() */
-	if((nco_op_typ != nco_op_min) && (nco_op_typ != nco_op_max)) (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
-      }else{ /* !var_prc[idx]->is_crd_var */
-	switch(nco_op_typ){
-	case nco_op_avg: /* Normalize sum by tally to create mean */
-	case nco_op_sqrt: /* Normalize sum by tally to create mean */
-	case nco_op_sqravg: /* Normalize sum by tally to create mean */
-	case nco_op_rms: /* Normalize sum of squares by tally to create mean square */
-	case nco_op_avgsqr: /* Normalize sum of squares by tally to create mean square */
-	  (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
-          
-	  break;
-	case nco_op_rmssdn: /* Normalize sum of squares by tally-1 to create mean square for sdn */
-	  (void)nco_var_nrm_sdn(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val);
-	  break;
-	case nco_op_min: /* Minimum is already in buffer, do nothing */
-	case nco_op_max: /* Maximum is already in buffer, do nothing */
-	case nco_op_ttl: /* Total is already in buffer, do nothing */
-	  break;
-	default:
-	  break;
-	} /* end switch */
-	/* Some operations require additional processing */
-	switch(nco_op_typ) {
-	case nco_op_rms: /* Take root of mean of sum of squares to create root mean square */
-	case nco_op_rmssdn: /* Take root of sdn mean of sum of squares to create root mean square for sdn */
-	case nco_op_sqrt: /* Take root of mean to create root mean */
-	  (void)nco_var_sqrt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->tally,var_prc_out[idx]->val,var_prc_out[idx]->val);
-	  break;
-	case nco_op_sqravg: /* Square mean to create square of the mean (for sdn) */
-	  (void)nco_var_mlt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->val,var_prc_out[idx]->val);
-	  break;
-	default:
-	  break;
-	} /* end switch */
-      } /* !var_prc[idx]->is_crd_var */
-      var_prc_out[idx]->tally=var_prc[idx]->tally=(long *)nco_free(var_prc[idx]->tally);
-    } /* end (OpenMP parallel for) loop over variables */
-  } /* end if */
-  
+
+  /* Duration argument warning */
+  if(nco_prg_id == ncra || nco_prg_id == ncrcat){ /* fxm: Remove this or make DBG when crd_val DRN/MRO is predictable? */
+    /* Loop records */
+    for(idx_rec=0;idx_rec<trv_tbl->nbr_rec;idx_rec++){
+      /* Check duration for each record */
+      if(trv_tbl->lmt_rec[idx_rec]->drn != 1L && (trv_tbl->lmt_rec[idx_rec]->lmt_typ == lmt_crd_val || trv_tbl->lmt_rec[idx_rec]->lmt_typ == lmt_udu_sng)){
+        (void)fprintf(stderr,"\n%s: WARNING Duration argument DRN used in hyperslab specification for %s which will be determined based on coordinate values rather than dimension indices. The behavior of the duration hyperslab argument is ambiguous for coordinate-based hyperslabs---it could mean select the first DRN elements that are within the min and max coordinate values beginning with each strided point, or it could mean always select the first _consecutive_ DRN elements beginning wi [...]
+      } /* Check duration for each record */
+    } /* Loop records */
+  } /* Duration argument warning */
+
+  /* Normalize, multiply, etc where necessary: ncra and nces normalization blocks are identical, 
+  except ncra normalizes after every DRN records, while nces normalizes once, after all files.
+  Occassionally last input file(s) is/are superfluous so REC_LST_DSR never set
+  In such cases FLG_BFR_NRM is still true, indicating ncra still needs normalization
+  FLG_BFR_NRM is always true here for ncfe and ncge */
+  if(FLG_BFR_NRM) (void)nco_opr_nrm(nco_op_typ,nbr_var_prc,var_prc,var_prc_out,True,(char *)NULL,(trv_tbl_sct *)NULL);
+
   /* Manually fix YYMMDD date which was mangled by averaging */
-  if(CNV_CCM_CCSM_CF && prg == ncra) (void)nco_cnv_ccm_ccsm_cf_date(out_id,var_out,nbr_xtr);
-  
+  if(CNV_CCM_CCSM_CF && nco_prg_id == ncra) (void)nco_cnv_ccm_ccsm_cf_date(grp_out_id,var_out,xtr_nbr);
+
   /* Add time variable to output file
-     NB: nco_cnv_arm_time_install() contains OpenMP critical region */
-  if(CNV_ARM && prg == ncrcat) (void)nco_cnv_arm_time_install(out_id,base_time_srt,dfl_lvl);
-  
-  /* Copy averages to output file and free averaging buffers */
-  if(prg == ncra || prg == ncea){
+  NB: nco_cnv_arm_time_install() contains OpenMP critical region */
+  if(CNV_ARM && nco_prg_id == ncrcat) (void)nco_cnv_arm_time_install(grp_out_id,base_time_srt,dfl_lvl);
+
+  /* Copy averages to output file for ncfe and ncge always and for ncra when trailing file(s) was/were superfluous */
+  if(FLG_BFR_NRM){
     for(idx=0;idx<nbr_var_prc;idx++){
+
+      /* Obtain variable GTT object using full variable name */
+      var_trv=trv_tbl_var_nm_fll(var_prc_out[idx]->nm_fll,trv_tbl);
+
+      /* For ncge, group to save is ensemble parent group */
+      if(nco_prg_id == ncge){
+
+        /* Check if suffix needed. Appends to default name */
+        if(trv_tbl->nsm_sfx){
+          /* Just define (append) and forget a new name */
+          char *nm_fll_sfx=nco_bld_nsm_sfx(var_trv->grp_nm_fll_prn,trv_tbl);
+          /* Use the new name */
+          if(gpe) grp_out_fll=nco_gpe_evl(gpe,nm_fll_sfx); else grp_out_fll=(char *)strdup(nm_fll_sfx);
+          nm_fll_sfx=(char *)nco_free(nm_fll_sfx);
+        } else { /* Non suffix case */
+          if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->nsm_nm); else grp_out_fll=(char *)strdup(var_trv->nsm_nm);
+        } /* !trv_tbl->nsm_sfx */
+
+      }else if(nco_prg_id == ncfe){
+        /* Edit group name for output */
+        if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+      } /* end else */
+
+      /* Obtain output group ID using full group name */
+      (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+      /* Get output variable ID */
+      (void)nco_inq_varid(grp_out_id,var_prc_out[idx]->nm,&var_out_id);   
+      /* Store the output variable ID */
+      var_prc_out[idx]->id=var_out_id;
+
       var_prc_out[idx]=nco_var_cnf_typ(var_prc_out[idx]->typ_upk,var_prc_out[idx]);
       /* Packing/Unpacking */
-      if(nco_pck_plc == nco_pck_plc_all_new_att) var_prc_out[idx]=nco_put_var_pck(out_id,var_prc_out[idx],nco_pck_plc);
-      if(var_prc_out[idx]->nbr_dim == 0){
-	(void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
-      }else{ /* end if variable is scalar */
-	/* Size of record dimension is 1 in output file */
-	 if(prg == ncra) var_prc_out[idx]->cnt[0]=1L;
-	(void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
-      } /* end if variable is an array */
+      if(nco_pck_plc == nco_pck_plc_all_new_att) var_prc_out[idx]=nco_put_var_pck(grp_out_id,var_prc_out[idx],nco_pck_plc);
+      if(var_prc_out[idx]->nbr_dim == 0) (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type); else (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
+
+      /* Memory management after current extracted group */
+      if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+    } /* end loop over idx */
+  } /* end if ncfe and ncge */
+
+  /* Free averaging and tally buffers */
+  if(nco_prg_id == ncra || nco_prg_id == ncfe || nco_prg_id == ncge){
+#ifdef _OPENMP
+#pragma omp parallel for default(none) private(idx) shared(nbr_var_prc,nco_op_typ,var_prc,var_prc_out)
+#endif /* !_OPENMP */
+    for(idx=0;idx<nbr_var_prc;idx++){
+      var_prc_out[idx]->tally=var_prc[idx]->tally=(long *)nco_free(var_prc[idx]->tally);
       var_prc_out[idx]->val.vp=nco_free(var_prc_out[idx]->val.vp);
     } /* end loop over idx */
-  } /* end if */
-  
+  } /* endif ncra || nces */
+
+  /* Close input netCDF file */
+  for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
+
+  /* Dispose local copy of file */
+  if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
+
   /* Close output file and move it from temporary to permanent location */
   (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
-  
+
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
-    /* Record file-specific memory cleanup */
-    if(rec_dmn_id != NCO_REC_DMN_UNDEFINED) lmt_rec=nco_lmt_free(lmt_rec);
-
-    /* Free lmt, lmt_dmn, and lmt_all_lst structures and lists */
-    for(idx=0;idx<nbr_dmn_fl;idx++)
-      for(jdx=0;jdx<lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-	lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-    if(nbr_dmn_fl > 0) lmt_all_lst=nco_lmt_all_lst_free(lmt_all_lst,nbr_dmn_fl);   
-    lmt=(lmt_sct**)nco_free(lmt); 
-
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -957,7 +1262,6 @@ main(int argc,char **argv)
     for(idx=0;idx<lmt_nbr;idx++) lmt_arg[idx]=(char *)nco_free(lmt_arg[idx]);
     /* NB: lmt[idx] was free()'d earlier */
     for(idx=0;idx<aux_nbr;idx++) aux_arg[idx]=(char *)nco_free(aux_arg[idx]);
-    if(aux_nbr > 0) aux=(lmt_sct **)nco_free(aux);
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
@@ -965,18 +1269,25 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr);
     if(nbr_dmn_xtr > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_xtr);
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr);
-    if(nbr_xtr > 0) var_out=nco_var_lst_free(var_out,nbr_xtr);
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr);
+    if(xtr_nbr > 0) var_out=nco_var_lst_free(var_out,xtr_nbr);
     var_prc=(var_sct **)nco_free(var_prc);
     var_prc_out=(var_sct **)nco_free(var_prc_out);
     var_fix=(var_sct **)nco_free(var_fix);
     var_fix_out=(var_sct **)nco_free(var_fix_out);
+    if(md5) md5=(md5_sct *)nco_md5_free(md5);
+
+    (void)trv_tbl_free(trv_tbl);
+    idx_rec_out=(long *)nco_free(idx_rec_out);
+    rec_in_cml=(long *)nco_free(rec_in_cml);
+    rec_usd_cml=(long *)nco_free(rec_usd_cml);
+    REC_LST_DSR=(nco_bool *)nco_free(REC_LST_DSR);
+
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
-
   if(rcd != NC_NOERR) nco_err_exit(rcd,"main");
   nco_exit_gracefully();
   return EXIT_SUCCESS;
diff --git a/src/nco/ncrename.c b/src/nco/ncrename.c
index d6c6987..c4d5f9b 100644
--- a/src/nco/ncrename.c
+++ b/src/nco/ncrename.c
@@ -1,10 +1,10 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncrename.c,v 1.129 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncrename.c,v 1.183 2013/10/22 03:03:46 zender Exp $ */
 
 /* ncrename -- netCDF renaming operator */
 
 /* Purpose: Rename dimensions, variables, and attributes of a netCDF file */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -30,9 +30,15 @@
    Irvine, CA 92697-3100 */
 
 /* Usage:
-   ncrename -d old_dim1,new_dim1 -v old_var1,new_var1 -v old_var2,new_var2 -a old_att1,new_att1 in.nc ~/foo.nc
-   ncrename -d lon,new_lon -v scalar_var,new_scalar_var -a long_name,new_long_name in.nc ~/foo.nc
-   */
+   ncrename -O -g g1,obama ~/nco/data/in_grp.nc ~/foo.nc
+   ncrename -O -a Conventions,Geneva ~/nco/data/in.nc ~/foo.nc
+   ncrename -O -a HDFEOSVersion,Geneva ${DATA}/hdf/MOD10CM.A2007001.005.2007108111758.hdf ~/foo.nc
+   ncrename -O -d old_dim1,new_dim1 -v old_var1,new_var1 -v old_var2,new_var2 -a old_att1,new_att1 ~/nco/data/in.nc ~/foo.nc
+   ncrename -O -d lon,new_lon -v scalar_var,new_scalar_var -a long_name,new_long_name ~/nco/data/in.nc ~/foo.nc */
+
+#if 1
+#define USE_TRV_API
+#endif
 
 #ifdef HAVE_CONFIG_H
 # include <config.h> /* Autotools tokens */
@@ -42,10 +48,12 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -54,9 +62,8 @@
 # endif /* !HAVE_GETOPT_H */ 
 #endif /* HAVE_GETOPT_LONG */
 
-/* 3rd party vendors */
-#include <netcdf.h> /* netCDF definitions and C library */
-#include "nco_netcdf.h" /* NCO wrappers for netCDF C library */
+/* 3rd party vendors */	 
+#include <netcdf.h> /* netCDF definitions and C library */	 
 
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
 #define MAIN_PROGRAM_FILE
@@ -65,15 +72,21 @@
 int 
 main(int argc,char **argv)
 {
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+#ifndef __GNUG__
+  extern int errno; /* [enm] Error code in errno.h */
+#endif /* __GNUG__ */
+
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool HISTORY_APPEND=True; /* Option h */
-  nco_bool OUTPUT_TO_NEW_NETCDF_FILE=False;
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool IS_GLB_GRP_ATT=False; /* [flg] Attribute is Global or Group attribute */
+  nco_bool FL_OUT_NEW=False;
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
   nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
-  
+
   char **fl_lst_abb=NULL; /* Option a */
   char **fl_lst_in;
   char *att_rnm_arg[NC_MAX_ATTRS];
@@ -83,14 +96,19 @@ main(int argc,char **argv)
   char *fl_out=NULL; /* Option o */
   char *fl_pth=NULL; /* Option p */
   char *fl_pth_lcl=NULL; /* Option l */
+  char *grp_rnm_arg[NC_MAX_DIMS];
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   char *var_rnm_arg[NC_MAX_VARS];
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
 
-  const char * const CVS_Id="$Id: ncrename.c,v 1.129 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.129 $";
-  const char * const opt_sht_lst="a:D:d:hl:Oo:p:rv:-:";
+  char var_nm[NC_MAX_NAME+1];
 
+  const char * const CVS_Id="$Id: ncrename.c,v 1.183 2013/10/22 03:03:46 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.183 $";
+  const char * const opt_sht_lst="a:D:d:g:hl:Oo:p:rv:-:";
+  const char dlm_chr='@'; /* Character delimiting variable from attribute name  */
+  const char opt_chr='.'; /* Character indicating presence of following variable/dimension/attribute in file is optional */
 #if defined(__cplusplus) || defined(PGI_CC)
   ddra_info_sct ddra_info;
   ddra_info.flg_ddra=False;
@@ -100,57 +118,76 @@ main(int argc,char **argv)
 
   extern char *optarg;
   extern int optind;
-  
+
   int abb_arg_nbr=0;
   int fl_nbr=0;
+#ifndef USE_TRV_API
   int idx;
+#endif
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_att_rnm=0; /* Option a. NB: nbr_att_rnm gets incremented */
   int nbr_dmn_rnm=0; /* Option d. NB: nbr_dmn_rnm gets incremented */
+  int nbr_grp_rnm=0; /* Option g. NB: nbr_grp_rnm gets incremented */
   int nbr_var_rnm=0; /* Option v. NB: nbr_var_rnm gets incremented */
-  int nc_id;  
+  int nc_id;
+  int grp_id;
   int opt;
   int rcd=NC_NOERR; /* [rcd] Return code */
-  
+
   rnm_sct *var_rnm_lst=NULL_CEWI;
   rnm_sct *dmn_rnm_lst=NULL_CEWI;
+  rnm_sct *grp_rnm_lst=NULL_CEWI;
   rnm_sct *att_rnm_lst=NULL_CEWI;
 
+  trv_tbl_sct *trv_tbl; /* [lst] Traversal table */
+
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
   static struct option opt_lng[] =
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"hdr_pad",required_argument,0,0},
-      {"header_pad",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"attribute",required_argument,0,'a'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"dimension",required_argument,0,'d'},
-      {"dmn",required_argument,0,'d'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"path",required_argument,0,'p'},
-      {"revision",no_argument,0,'r'},
-      {"variable",required_argument,0,'v'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    };
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"attribute",required_argument,0,'a'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"dimension",required_argument,0,'d'},
+    {"dmn",required_argument,0,'d'},
+    {"group",required_argument,0,'g'},
+    {"grp",required_argument,0,'g'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"path",required_argument,0,'p'},
+    {"revision",no_argument,0,'r'},
+    {"variable",required_argument,0,'v'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  };
   int opt_idx=0;  /* Index of current long option into opt_lng array */
 
   /* Start timer and save command line */ 
@@ -158,9 +195,9 @@ main(int argc,char **argv)
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -172,15 +209,21 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
       if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
-	hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
     } /* opt != 0 */
     /* Process short options */
@@ -195,13 +238,17 @@ main(int argc,char **argv)
       nbr_att_rnm++;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
-    case 'd': /* Copy limit argument for later processing */
+    case 'd': /* Copy argument for later processing */
       dmn_rnm_arg[nbr_dmn_rnm]=(char *)strdup(optarg);
       nbr_dmn_rnm++;
       break;
+    case 'g': /* Copy argument for later processing */
+      grp_rnm_arg[nbr_grp_rnm]=(char *)strdup(optarg);
+      nbr_grp_rnm++;
+      break;
     case 'h': /* Toggle appending to history global attribute */
       HISTORY_APPEND=!HISTORY_APPEND;
       break;
@@ -218,7 +265,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -236,233 +283,489 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
     } /* end switch */
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
-  
+
   /* Process positional arguments and fill in filenames */
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
-  if(fl_out) OUTPUT_TO_NEW_NETCDF_FILE=True; else fl_out=(char *)strdup(fl_lst_in[0]);
+  if(fl_out) FL_OUT_NEW=True; else fl_out=(char *)strdup(fl_lst_in[0]);
 
-  if(nbr_var_rnm == 0 && nbr_att_rnm == 0 && nbr_dmn_rnm == 0){
-    (void)fprintf(stdout,"%s: ERROR must specify something to rename\n",prg_nm);
+  if(!nbr_var_rnm && !nbr_att_rnm && !nbr_grp_rnm && !nbr_dmn_rnm){
+    (void)fprintf(stdout,"%s: ERROR must specify something to rename\n",nco_prg_nm);
     nco_usg_prn();
     nco_exit(EXIT_FAILURE);
   } /* end if */ 
 
   /* Make uniform list of user-specified rename structures */
-  if(nbr_var_rnm > 0) var_rnm_lst=nco_prs_rnm_lst(nbr_var_rnm,var_rnm_arg);
-  if(nbr_dmn_rnm > 0) dmn_rnm_lst=nco_prs_rnm_lst(nbr_dmn_rnm,dmn_rnm_arg);
   if(nbr_att_rnm > 0) att_rnm_lst=nco_prs_rnm_lst(nbr_att_rnm,att_rnm_arg);
+  if(nbr_dmn_rnm > 0) dmn_rnm_lst=nco_prs_rnm_lst(nbr_dmn_rnm,dmn_rnm_arg);
+  if(nbr_grp_rnm > 0) grp_rnm_lst=nco_prs_rnm_lst(nbr_grp_rnm,grp_rnm_arg);
+  if(nbr_var_rnm > 0) var_rnm_lst=nco_prs_rnm_lst(nbr_var_rnm,var_rnm_arg);
 
   /* We have final list of variables, dimensions, and attributes to rename */
-  
+
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-
-  if(OUTPUT_TO_NEW_NETCDF_FILE){
-
-    if(!FORCE_OVERWRITE){
-      int rcd_lcl;
-
-      struct stat stat_sct;
-      
-      rcd_lcl=stat(fl_out,&stat_sct);
-
-      /* If file already exists, then query user whether to overwrite */
-      if(rcd_lcl != -1){
-        char usr_reply='z';
-	short nbr_itr=0;
-
-        while(usr_reply != 'n' && usr_reply != 'y'){
-	  nbr_itr++;
-	  if(nbr_itr > 10){
-	    (void)fprintf(stdout,"\n%s: ERROR %d failed attempts to obtain valid interactive input. Assuming non-interactive shell and exiting.\n",prg_nm_get(),nbr_itr-1);
-	    nco_exit(EXIT_FAILURE);
-	  } /* end if */
-          (void)fprintf(stdout,"%s: overwrite %s (y/n)? ",prg_nm,fl_out);
-	  (void)fflush(stdout);
-          usr_reply=(char)fgetc(stdin);
-	  /* Allow one carriage return per response free of charge */
-	  if(usr_reply == '\n') usr_reply=(char)fgetc(stdin);
-	  (void)fflush(stdin);
-        } /* end while */
-        
-        if(usr_reply == 'n'){
-          nco_exit(EXIT_SUCCESS);
-        } /* end if */
-      } /* end if rcd_lcl != -1 */
-    } /* end if FORCE_OVERWRITE */
-    
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+
+  if(FL_OUT_NEW){
+    /* Obtain user consent, if needed, to overwrite output file (or die trying) */
+    if(!FORCE_OVERWRITE) nco_fl_overwrite_prm(fl_out);
+
     /* Copy input file to output file and then search through output, 
-       changing names on the fly. This avoids possible XDR translation
-       performance penalty of copying each variable with netCDF. */
+    changing names on the fly. This avoids possible XDR translation
+    performance penalty of copying each variable with netCDF. */
     (void)nco_fl_cp(fl_in,fl_out);
 
-  } /* end if OUTPUT_TO_NEW_NETCDF_FILE */
-  
+    /* Ensure output file is user/owner-writable */
+    (void)nco_fl_chmod(fl_out);
+  } /* end if FL_OUT_NEW */
+
   /* Open file enabled for writing. Place file in define mode for renaming. */
-  rcd=nco_open(fl_out,NC_WRITE,&nc_id);
+  if(RAM_OPEN) md_open=NC_WRITE|NC_DISKLESS; else md_open=NC_WRITE;
+  rcd+=nco_fl_open(fl_out,md_open,&bfr_sz_hnt,&nc_id);
   (void)nco_redef(nc_id);
 
   /* Timestamp end of metadata setup and disk layout */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_rgl;
 
+#ifndef USE_TRV_API
   /* Without further ado, change names */
   for(idx=0;idx<nbr_var_rnm;idx++){
-    if(var_rnm_lst[idx].old_nm[0] == '.'){
-      rcd=nco_inq_varid_flg(nc_id,var_rnm_lst[idx].old_nm+1,&var_rnm_lst[idx].id);
+    if(var_rnm_lst[idx].old_nm[0] == opt_chr){
+      rcd=nco_inq_varid_flg(nc_id,var_rnm_lst[idx].old_nm+1L,&var_rnm_lst[idx].id);
       if(rcd == NC_NOERR){
-	(void)nco_rename_var(nc_id,var_rnm_lst[idx].id,var_rnm_lst[idx].new_nm);
-	if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed variable \'%s\' to \'%s\'\n",var_rnm_lst[idx].old_nm+1,var_rnm_lst[idx].new_nm);
+        (void)nco_rename_var(nc_id,var_rnm_lst[idx].id,var_rnm_lst[idx].new_nm);
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed variable \'%s\' to \'%s\'\n",nco_prg_nm,var_rnm_lst[idx].old_nm+1L,var_rnm_lst[idx].new_nm);
       }else{
-	(void)fprintf(stderr,"%s: WARNING Variable \"%s\" not present in %s, skipping it.\n",prg_nm,var_rnm_lst[idx].old_nm+1,fl_in);
-	/* Reset error code */
-	rcd=NC_NOERR; 
+        (void)fprintf(stderr,"%s: WARNING Variable \"%s\" not present in %s, skipping it.\n",nco_prg_nm,var_rnm_lst[idx].old_nm+1L,fl_in);
+        /* Reset error code */
+        rcd=NC_NOERR; 
       } /* end if */
-    }else{ /* Variable name does not contain '.' so variable presence is required */
+    }else{ /* Variable name does not contain opt_chr so variable presence is required */
       rcd=nco_inq_varid(nc_id,var_rnm_lst[idx].old_nm,&var_rnm_lst[idx].id);
       (void)nco_rename_var(nc_id,var_rnm_lst[idx].id,var_rnm_lst[idx].new_nm);
-      if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed variable \'%s\' to \'%s\'\n",var_rnm_lst[idx].old_nm,var_rnm_lst[idx].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed variable \'%s\' to \'%s\'\n",nco_prg_nm,var_rnm_lst[idx].old_nm,var_rnm_lst[idx].new_nm);
+    } /* end else */
+  } /* end loop over idx */
+
+  for(idx=0;idx<nbr_grp_rnm;idx++){
+    if(grp_rnm_lst[idx].old_nm[0] == opt_chr){
+      rcd=nco_inq_grp_ncid_flg(nc_id,grp_rnm_lst[idx].old_nm+1L,&grp_rnm_lst[idx].id);
+      if(rcd == NC_NOERR){
+        (void)nco_rename_grp(grp_rnm_lst[idx].id,grp_rnm_lst[idx].new_nm);
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed group \'%s\' to \'%s\'\n",nco_prg_nm,grp_rnm_lst[idx].old_nm+1L,grp_rnm_lst[idx].new_nm);
+      }else{
+        (void)fprintf(stderr,"%s: WARNING Group \"%s\" not present in %s, skipping it.\n",nco_prg_nm,grp_rnm_lst[idx].old_nm+1L,fl_in);
+        /* Reset error code */
+        rcd=NC_NOERR; 
+      } /* end if */
+    }else{ /* Group name does not contain opt_chr so group presence is required */
+      rcd=nco_inq_grp_ncid(nc_id,grp_rnm_lst[idx].old_nm,&grp_rnm_lst[idx].id);
+      (void)nco_rename_grp(grp_rnm_lst[idx].id,grp_rnm_lst[idx].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed group \'%s\' to \'%s\'\n",nco_prg_nm,grp_rnm_lst[idx].old_nm,grp_rnm_lst[idx].new_nm);
     } /* end else */
   } /* end loop over idx */
 
   for(idx=0;idx<nbr_dmn_rnm;idx++){
-    if(dmn_rnm_lst[idx].old_nm[0] == '.'){
-      
-      rcd=nco_inq_dimid_flg(nc_id,dmn_rnm_lst[idx].old_nm+1,&dmn_rnm_lst[idx].id);
+    if(dmn_rnm_lst[idx].old_nm[0] == opt_chr){
+
+      rcd=nco_inq_dimid_flg(nc_id,dmn_rnm_lst[idx].old_nm+1L,&dmn_rnm_lst[idx].id);
       if(rcd == NC_NOERR){
-	(void)nco_rename_dim(nc_id,dmn_rnm_lst[idx].id,dmn_rnm_lst[idx].new_nm);
-	if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed dimension \'%s\' to \'%s\'\n",dmn_rnm_lst[idx].old_nm+1,dmn_rnm_lst[idx].new_nm);
+        (void)nco_rename_dim(nc_id,dmn_rnm_lst[idx].id,dmn_rnm_lst[idx].new_nm);
+        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed dimension \'%s\' to \'%s\'\n",nco_prg_nm,dmn_rnm_lst[idx].old_nm+1L,dmn_rnm_lst[idx].new_nm);
       }else{
-	(void)fprintf(stderr,"%s: WARNING Dimension \'%s\' not present in %s, skipping it.\n",prg_nm,dmn_rnm_lst[idx].old_nm+1,fl_in);
-	/* Reset error code */
-	rcd=NC_NOERR; 
+        (void)fprintf(stderr,"%s: WARNING Dimension \'%s\' not present in %s, skipping it.\n",nco_prg_nm,dmn_rnm_lst[idx].old_nm+1L,fl_in);
+        /* Reset error code */
+        rcd=NC_NOERR; 
       } /* end if */
-      
+
     }else{
       rcd=nco_inq_dimid(nc_id,dmn_rnm_lst[idx].old_nm,&dmn_rnm_lst[idx].id);
       (void)nco_rename_dim(nc_id,dmn_rnm_lst[idx].id,dmn_rnm_lst[idx].new_nm);
-      if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed dimension \'%s\' to \'%s\'\n",dmn_rnm_lst[idx].old_nm,dmn_rnm_lst[idx].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed dimension \'%s\' to \'%s\'\n",nco_prg_nm,dmn_rnm_lst[idx].old_nm,dmn_rnm_lst[idx].new_nm);
     } /* end else */
   } /* end loop over idx */
 
   if(nbr_att_rnm > 0){
     int nbr_var_fl;
-    
+
     /* Get number of variables in file */
     (void)nco_inq(nc_id,(int *)NULL,&nbr_var_fl,(int *)NULL,(int *)NULL);
 
     for(idx=0;idx<nbr_att_rnm;idx++){
       int var_id;
       int nbr_rnm=0;
-      
+      int rcd_att=0;
+
       /* Rename attribute of single variable... */
-      if(strchr(att_rnm_lst[idx].old_nm,'@')){
-	/* Get variable name from old name */
-	char var_nm[NC_MAX_NAME];
-	if(nco_prs_att((att_rnm_lst+idx),var_nm)){
-	  /* Get var_id of variable */
-	  if(var_nm[0] == '.'){
-	    rcd=nco_inq_varid_flg(nc_id,var_nm+1,&var_id);
-	    if(rcd != NC_NOERR){
-	      (void)fprintf(stderr,"%s: WARNING Variable \'%s\' not present in %s, skipping it.\n",prg_nm,var_nm+1,fl_in);
-	      /* Reset error code */
-	      rcd=NC_NOERR; 
-	      continue;
-	    } /* end if */
-	  }else{ /* Variable name does not contain '.' so variable presence is required */
-	    rcd=nco_inq_varid(nc_id,var_nm,&var_id);
-	  } /* end if */
-	  if(rcd == NC_NOERR){
-	    if(att_rnm_lst[idx].old_nm[0] == '.'){
-	      /* Preceding '.' means attribute need not be present */
-	      rcd=nco_inq_attid_flg(nc_id,var_id,att_rnm_lst[idx].old_nm+1,&att_rnm_lst[idx].id);	  
-	      if(rcd == NC_NOERR){
-		(void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm+1,att_rnm_lst[idx].new_nm);
-		nbr_rnm++;
-		if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",att_rnm_lst[idx].old_nm+1,att_rnm_lst[idx].new_nm,(var_nm[0] == '.' ? var_nm+1 : var_nm));
-	      }else{
-		(void)fprintf(stderr,"%s: WARNING Attribute \'%s\' not present in variable \'%s\'\n",prg_nm,att_rnm_lst[idx].old_nm+1,(var_nm[0] == '.' ? var_nm+1 : var_nm));
-	      } /* endelse */
-	    }else{ 
-	      rcd=nco_inq_attid(nc_id,var_id,att_rnm_lst[idx].old_nm,&att_rnm_lst[idx].id);
-	      if(rcd == NC_NOERR){
-		(void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm);
-		nbr_rnm++;
-		if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm,(var_nm[0] == '.' ? var_nm+1 : var_nm));
-	      } /* endif attribute is present */
-	    } /* endelse attribute must be present */  
-	  }else{
-	    (void)fprintf(stderr,"%s: WARNING variable \'%s\' not present in %s\n",prg_nm,var_nm,fl_in);
-	  } /* endelse variable is present */
-	} /* end if renaming single variable */
+      if(strchr(att_rnm_lst[idx].old_nm,dlm_chr)){
+        /* Extract variable name from old name */
+        rcd_att=nco_prs_att((att_rnm_lst+idx),var_nm,&IS_GLB_GRP_ATT);
+        if(!rcd_att){
+          (void)fprintf(stderr,"%s: ERROR Could not parse var_nm at att_nm string \"%s\"\n",nco_prg_nm,att_rnm_lst[idx].old_nm);
+          nco_exit(EXIT_FAILURE);
+        } /* end if */ 
+        /* Get var_id of variable */
+        if(IS_GLB_GRP_ATT){
+          (void)fprintf(stderr,"%s: INFO Assuming \"%s\" refers to a Global or Group attribute\n",nco_prg_nm,att_rnm_lst[idx].old_nm);
+          var_id=NC_GLOBAL;
+        }else{ /* !IS_GLB_GRP_ATT */
+          if(var_nm[0] == opt_chr){
+            rcd=nco_inq_varid_flg(nc_id,var_nm+1L,&var_id);
+            if(rcd != NC_NOERR){
+              (void)fprintf(stderr,"%s: WARNING Variable \'%s\' not present in %s, skipping it.\n",nco_prg_nm,var_nm+1L,fl_in);
+              /* Reset error code */
+              rcd=NC_NOERR; 
+              /* Optional variable not found, continue to next attribute in list */
+              continue;
+            } /* end if */
+          }else{ /* Variable name does not contain opt_chr so variable presence is required */
+            rcd=nco_inq_varid(nc_id,var_nm,&var_id);
+          } /* end if */
+        } /* !IS_GLB_GRP_ATT */
+        if(rcd == NC_NOERR){
+          if(att_rnm_lst[idx].old_nm[0] == opt_chr){
+            /* Preceding opt_chr means attribute need not be present */
+            rcd=nco_inq_attid_flg(nc_id,var_id,att_rnm_lst[idx].old_nm+1L,&att_rnm_lst[idx].id);	  
+            if(rcd == NC_NOERR){
+              (void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm+1L,att_rnm_lst[idx].new_nm);
+              nbr_rnm++;
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm+1L,att_rnm_lst[idx].new_nm,(var_nm[0] == opt_chr ? var_nm+1L : var_nm));
+            }else{
+              (void)fprintf(stderr,"%s: WARNING Attribute \'%s\' not present in variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm+1L,(var_nm[0] == opt_chr ? var_nm+1L : var_nm));
+            } /* endelse */
+          }else{ 
+            /* Attribute must be present */
+            rcd=nco_inq_attid(nc_id,var_id,att_rnm_lst[idx].old_nm,&att_rnm_lst[idx].id);
+            if(rcd == NC_NOERR){
+              (void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm);
+              nbr_rnm++;
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm,(var_nm[0] == opt_chr ? var_nm+1L : var_nm));
+            } /* endif attribute is present */
+          } /* endelse attribute must be present */  
+        }else{ /* variable not present */
+          (void)fprintf(stderr,"%s: WARNING variable \'%s\' not present in %s\n",nco_prg_nm,var_nm,fl_in);
+        }  /* variable not present */
+        /* end if renaming single variable */
       }else{ /* ...or rename attribute for all variables... */
-	for(var_id=-1;var_id<nbr_var_fl;var_id++){ /* Start loop at -1 for global attributes */
-	  if(att_rnm_lst[idx].old_nm[0] == '.'){
-	    /* Rename attribute if variable contains attribute else do nothing */
-	    rcd=nco_inq_attid_flg(nc_id,var_id,att_rnm_lst[idx].old_nm+1,&att_rnm_lst[idx].id);
-	    if(rcd == NC_NOERR){
-	      (void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm+1,att_rnm_lst[idx].new_nm);
-	      nbr_rnm++;
-	      /* Inform user which variable had attribute renamed */
-	      if(var_id > -1){
-		char var_nm[NC_MAX_NAME];
-		
-		(void)nco_inq_varname(nc_id,var_id,var_nm);
-		if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",att_rnm_lst[idx].old_nm+1,att_rnm_lst[idx].new_nm,var_nm);
-	      }else{
-		if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed global attribute \'%s\' to \'%s\'\n",att_rnm_lst[idx].old_nm+1,att_rnm_lst[idx].new_nm);
-	      } /* end else */
-	    }else{ /* end if attribute was found */
-	      /* Reset error code */
-	      rcd=NC_NOERR; 
-	    } /* end else */
-	  }else{
-	    /* Rename attribute or die trying */
-	    rcd=nco_inq_attid_flg(nc_id,var_id,att_rnm_lst[idx].old_nm,&att_rnm_lst[idx].id);
-	    if(rcd == NC_NOERR){
-	      (void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm);
-	      nbr_rnm++;
-	      /* Inform user which variable had attribute renamed */
-	      if(var_id > -1){
-		char var_nm[NC_MAX_NAME];
-		
-		(void)nco_inq_varname(nc_id,var_id,var_nm);
-		if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm,var_nm);
-	      }else{
-		if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"Renamed global attribute \'%s\' to \'%s\'\n",att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm);
-	      } /* end else */
-	    } /* end if */
-	  } /* end else */
-	} /* end loop over var_id */
+        for(var_id=NC_GLOBAL;var_id<nbr_var_fl;var_id++){ /* Start loop at NC_GLOBAL (-1) for global attributes */
+          if(var_id > NC_GLOBAL) (void)nco_inq_varname(nc_id,var_id,var_nm);
+          if(att_rnm_lst[idx].old_nm[0] == opt_chr){
+            /* Rename attribute if variable contains attribute else do nothing */
+            rcd=nco_inq_attid_flg(nc_id,var_id,att_rnm_lst[idx].old_nm+1L,&att_rnm_lst[idx].id);
+            if(rcd == NC_NOERR){
+              (void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm+1L,att_rnm_lst[idx].new_nm);
+              nbr_rnm++;
+              /* Inform user which variable had attribute renamed */
+              if(var_id > NC_GLOBAL){
+                if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm+1L,att_rnm_lst[idx].new_nm,var_nm);
+              }else{
+                if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed global or group attribute \'%s\' to \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm+1L,att_rnm_lst[idx].new_nm);
+              } /* end else */
+            }else{ /* end if attribute was found */
+              /* Reset error code */
+              rcd=NC_NOERR; 
+            } /* end else */
+          }else{ /* !opt_chr */
+            /* Rename attribute or die trying */
+            rcd=nco_inq_attid_flg(nc_id,var_id,att_rnm_lst[idx].old_nm,&att_rnm_lst[idx].id);
+            if(rcd == NC_NOERR){
+              (void)nco_rename_att(nc_id,var_id,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm);
+              nbr_rnm++;
+              /* Inform user which variable had attribute renamed */
+              if(var_id > NC_GLOBAL){
+                if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm,var_nm);
+              }else{
+                IS_GLB_GRP_ATT=True; /* [flg] Attribute is Global or Group attribute */
+                if(IS_GLB_GRP_ATT) (void)fprintf(stderr,"%s: INFO found and renamed global or group attribute \'%s\' so not requiring its presence in every variable.\n",nco_prg_nm_get(),att_rnm_lst[idx].old_nm); 
+                if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: Renamed global or group attribute \'%s\' to \'%s\'\n",nco_prg_nm,att_rnm_lst[idx].old_nm,att_rnm_lst[idx].new_nm);
+              } /* end else */
+            }else{ /* !NC_NOERR */
+              /* Reset error code or print informative message and die */
+              if(IS_GLB_GRP_ATT){
+                /* Forgive omission of period for global/group attributes. Users aren't perfect :) */
+                rcd=NC_NOERR;
+              }else{ /* !IS_GLB_GRP_ATT */
+                (void)fprintf(stderr,"%s: ERROR User specified that presence of attribute \'%s\' is required. However, the %s%s does not contain it. HINT: If attribute presence is intended to be optional, then prefix attribute name with the period character \'%c\', e.g., %catt_nm. With this syntax %s would succeed even if no variables or groups contained the attribute. If attribute is intended to be renamed only in a specific variable, then prepend the variable name plus an at-sign \'%c\ [...]
+                /* Exit now rather than completing variable loop and printing lengthy error message above each iteration */
+                nco_err_exit(rcd,"main");
+              } /* !IS_GLB_GRP_ATT */
+            } /* !NC_NOERR */
+          } /* !opt_chr */
+        } /* end loop over var_id */
       } /* end if renaming attribute for all variables */
       /* See to it that any mandatory renaming was performed, else abort */
       if(nbr_rnm == 0){
-	if(att_rnm_lst[idx].old_nm[0] == '.'){
-	  (void)fprintf(stderr,"%s: WARNING Attribute \'%s\' not renamed because not found in searched variable(s)\n",prg_nm,att_rnm_lst[idx].old_nm+1);
-	}else{
-	  (void)fprintf(stdout,"%s: ERROR Attribute \'%s\' not present in %s, aborting.\n",prg_nm,att_rnm_lst[idx].old_nm,fl_in);
-	  nco_exit(EXIT_FAILURE);
-	} /* end else */
-      } /* end if */
-      
+        if(att_rnm_lst[idx].old_nm[0] == opt_chr){
+          (void)fprintf(stderr,"%s: WARNING Attribute \'%s\' not renamed because not found in searched variable(s)\n",nco_prg_nm,att_rnm_lst[idx].old_nm+1L);
+        }else{
+          (void)fprintf(stdout,"%s: ERROR Attribute \'%s\' not present in %s, aborting.\n",nco_prg_nm,att_rnm_lst[idx].old_nm,fl_in);
+          nco_exit(EXIT_FAILURE);
+        } /* end else */
+      } /* nbr_rnm */
     } /* end loop over attributes to rename */
-     
   } /* end if renaming attributes */
-  
+
+#else /* USE_TRV_API */
+
+  /* Initialize traversal table */ 
+  trv_tbl_init(&trv_tbl); 
+
+  /* Construct GTT (Group Traversal Table), check -v and -g input names and create extraction list*/
+  (void)nco_bld_trv_tbl(nc_id,trv_pth,(int)0,NULL,(int)0,NULL,False,False,NULL,(int)0,NULL,(int) 0,False,False,False,True,trv_tbl);
+
+  /* Loop input variable names */
+  for(int idx_var=0;idx_var<nbr_var_rnm;idx_var++){
+    trv_sct *obj_trv=NULL; /* [sct] Table object */
+    nco_bool is_opt;       /* [flg] Presence is optional (name has '.') */
+
+    /* Inquire if any object matches  */
+    obj_trv=nco_obj_usr_sng(var_rnm_lst[idx_var].old_nm,trv_tbl,&is_opt);
+
+    /* Optional case with variable found */
+    if(obj_trv && obj_trv->nco_typ == nco_obj_typ_var && is_opt == True){
+      (void)nco_inq_grp_full_ncid(nc_id,obj_trv->grp_nm_fll,&grp_id);
+      /* Use the pair group ID/relative object name found (instead of var_rnm_lst[idx_var].old_nm)  */
+      rcd=nco_inq_varid(grp_id,obj_trv->nm,&var_rnm_lst[idx_var].id);
+      (void)nco_rename_var(grp_id,var_rnm_lst[idx_var].id,var_rnm_lst[idx_var].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed variable \'%s\' to \'%s\'\n",nco_prg_nm,var_rnm_lst[idx_var].old_nm+1L,var_rnm_lst[idx_var].new_nm);
+      /* Optional case with no object found */
+    }else if (obj_trv == NULL) {
+      (void)fprintf(stdout,"%s: WARNING Variable \'%s\' not present in %s, skipping it.\n",nco_prg_nm,var_rnm_lst[idx_var].old_nm+1L,fl_in);
+      /* Reset error code */
+      rcd=NC_NOERR;
+      /* Variable name does not contain opt_chr so variable presence is required */
+    }else if (obj_trv && obj_trv->nco_typ == nco_obj_typ_var && is_opt == False){ 
+      (void)nco_inq_grp_full_ncid(nc_id,obj_trv->grp_nm_fll,&grp_id);
+      /* Use the pair group ID/relative object name found (instead of var_rnm_lst[idx_var].old_nm)  */
+      rcd=nco_inq_varid(grp_id,obj_trv->nm,&var_rnm_lst[idx_var].id);
+      (void)nco_rename_var(grp_id,var_rnm_lst[idx_var].id,var_rnm_lst[idx_var].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed variable \'%s\' to \'%s\'\n",nco_prg_nm,var_rnm_lst[idx_var].old_nm,var_rnm_lst[idx_var].new_nm);
+    } /* Variable name does not contain opt_chr so variable presence is required */
+  } /* Loop input variable names */
+
+  /* Loop input group names */
+  for(int idx_grp=0;idx_grp<nbr_grp_rnm;idx_grp++){
+    trv_sct *obj_trv=NULL; /* [sct] Table object */
+    nco_bool is_opt;       /* [flg] Presence is optional (name has '.') */
+
+    /* Inquire if any object matches  */
+    obj_trv=nco_obj_usr_sng(grp_rnm_lst[idx_grp].old_nm,trv_tbl,&is_opt);
+
+    /* Optional case with group found */
+    if(obj_trv && obj_trv->nco_typ == nco_obj_typ_grp && is_opt == True){
+      (void)nco_inq_grp_full_ncid(nc_id,obj_trv->grp_nm_fll,&grp_id);
+      (void)nco_rename_grp(grp_id,grp_rnm_lst[idx_grp].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed group \'%s\' to \'%s\'\n",nco_prg_nm,grp_rnm_lst[idx_grp].old_nm+1L,grp_rnm_lst[idx_grp].new_nm);
+      /* Optional case with no object found */
+    }else if (obj_trv == NULL){
+      (void)fprintf(stdout,"%s: WARNING Group \'%s\' not present in %s, skipping it.\n",nco_prg_nm,grp_rnm_lst[idx_grp].old_nm+1L,fl_in);
+      /* Reset error code */
+      rcd=NC_NOERR; 
+      /* Group name does not contain opt_chr so group presence is required */
+    }else if (obj_trv && obj_trv->nco_typ == nco_obj_typ_grp && is_opt == False){  
+      (void)nco_inq_grp_full_ncid(nc_id,obj_trv->grp_nm_fll,&grp_id);
+      (void)nco_rename_grp(grp_id,grp_rnm_lst[idx_grp].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed group \'%s\' to \'%s\'\n",nco_prg_nm,grp_rnm_lst[idx_grp].old_nm,grp_rnm_lst[idx_grp].new_nm);
+    } /* Group name does not contain opt_chr so group presence is required */
+  } /* Loop input group names */
+
+
+  /* Loop input dimension names */
+  for(int idx_dmn=0;idx_dmn<nbr_dmn_rnm;idx_dmn++){
+    dmn_trv_sct *dmn_trv=NULL; /* [sct] Table dimension object */
+    nco_bool is_opt;           /* [flg] Dimension presence is optional (name has '.') */
+
+    /* Inquire if any dimension matches  */
+    dmn_trv=nco_dmn_usr_sng(dmn_rnm_lst[idx_dmn].old_nm,trv_tbl,&is_opt);
+
+    /* Optional case with dimension found */
+    if(dmn_trv && is_opt == True){
+      (void)nco_inq_grp_full_ncid(nc_id,dmn_trv->grp_nm_fll,&grp_id);
+      /* Use the pair group ID/relative dimension name found (instead of dmn_rnm_lst[idx_dmn].old_nm)  */
+      rcd=nco_inq_dimid(grp_id,dmn_trv->nm,&dmn_rnm_lst[idx_dmn].id);
+      (void)nco_rename_dim(grp_id,dmn_rnm_lst[idx_dmn].id,dmn_rnm_lst[idx_dmn].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed dimension \'%s\' to \'%s\'\n",nco_prg_nm,dmn_rnm_lst[idx_dmn].old_nm+1L,dmn_rnm_lst[idx_dmn].new_nm);
+      /* Optional case with no dimension found */
+    }else if (dmn_trv == NULL) {
+      (void)fprintf(stdout,"%s: WARNING Dimension \'%s\' not present in %s, skipping it.\n",nco_prg_nm,dmn_rnm_lst[idx_dmn].old_nm+1L,fl_in);
+      /* Reset error code */
+      rcd=NC_NOERR; 
+      /* ! Optional case */
+    }else if (dmn_trv && is_opt == False){
+      (void)nco_inq_grp_full_ncid(nc_id,dmn_trv->grp_nm_fll,&grp_id);
+      /* Use the pair group ID/relative dimension name found (instead of dmn_rnm_lst[idx_dmn].old_nm)  */
+      rcd=nco_inq_dimid(grp_id,dmn_trv->nm,&dmn_rnm_lst[idx_dmn].id);
+      (void)nco_rename_dim(grp_id,dmn_rnm_lst[idx_dmn].id,dmn_rnm_lst[idx_dmn].new_nm);
+      if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed dimension \'%s\' to \'%s\'\n",nco_prg_nm,dmn_rnm_lst[idx_dmn].old_nm,dmn_rnm_lst[idx_dmn].new_nm);
+    }  /* ! Optional case */
+  } /* Loop input dimension names */
+
+  /* Loop input attribute names */
+  for(int idx_att=0;idx_att<nbr_att_rnm;idx_att++){
+    int var_id;
+    int nbr_rnm=0;
+    int rcd_att=0;
+    nco_bool is_opt;       /* [flg] Presence is optional (name has '.') */
+    trv_sct *trv_obj=NULL; /* [sct] Traversal object */  
+
+    /* Rename attribute of single variable... */
+    if(strchr(att_rnm_lst[idx_att].old_nm,dlm_chr)){
+      /* Extract variable name from old name */
+      rcd_att=nco_prs_att((att_rnm_lst+idx_att),var_nm,&IS_GLB_GRP_ATT);
+      if(!rcd_att){
+        (void)fprintf(stdout,"%s: ERROR Could not parse var_nm at att_nm string \"%s\"\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm);
+        nco_exit(EXIT_FAILURE);
+      } /* end if */ 
+
+      /* Inquire if any object matches "var_nm" */
+      trv_obj=nco_obj_usr_sng(var_nm,trv_tbl,&is_opt);  
+
+      /* If object is group, set NC_GLOBAL */
+      if(trv_obj && trv_obj->nco_typ == nco_obj_typ_grp){ 
+        var_id=NC_GLOBAL;
+      }
+
+      /* Object found that matches "var_nm" */
+      if (trv_obj || IS_GLB_GRP_ATT){
+
+        /* If object found get group ID, else groud ID is root (cases of "global") */
+        if (trv_obj) (void)nco_inq_grp_full_ncid(nc_id,trv_obj->grp_nm_fll,&grp_id); else grp_id=nc_id;
+
+        /* Get var_id of variable */
+        if(IS_GLB_GRP_ATT){
+          (void)fprintf(stdout,"%s: INFO Assuming \"%s\" refers to a Global or Group attribute\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm);
+          var_id=NC_GLOBAL;
+        }else{ /* !IS_GLB_GRP_ATT */
+          if(var_nm[0] == opt_chr){
+            rcd=nco_inq_varid_flg(grp_id,var_nm+1L,&var_id);
+            if(rcd != NC_NOERR){
+              (void)fprintf(stdout,"%s: WARNING Variable \'%s\' not present in %s, skipping it.\n",nco_prg_nm,var_nm+1L,fl_in);
+              /* Reset error code */
+              rcd=NC_NOERR; 
+              /* Optional variable not found, continue to next attribute in list */
+              continue;
+            } /* end if */
+          }else{ /* Variable name does not contain opt_chr so variable presence is required */
+
+            /* Get ID only if object is variable (not group). NB: use relative name found */
+            if(trv_obj->nco_typ == nco_obj_typ_var){ 
+              rcd=nco_inq_varid(grp_id,trv_obj->nm,&var_id);
+            } /* Get ID only if object is variable (not group) */
+
+          } /* end if */
+        } /* !IS_GLB_GRP_ATT */
+        if(rcd == NC_NOERR){
+          if(att_rnm_lst[idx_att].old_nm[0] == opt_chr){
+            /* Preceding opt_chr means attribute need not be present */
+            rcd=nco_inq_attid_flg(grp_id,var_id,att_rnm_lst[idx_att].old_nm+1L,&att_rnm_lst[idx_att].id);	  
+            if(rcd == NC_NOERR){
+              (void)nco_rename_att(grp_id,var_id,att_rnm_lst[idx_att].old_nm+1L,att_rnm_lst[idx_att].new_nm);
+              nbr_rnm++;
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm+1L,att_rnm_lst[idx_att].new_nm,(var_nm[0] == opt_chr ? var_nm+1L : var_nm));
+            }else{
+              (void)fprintf(stdout,"%s: WARNING Attribute \'%s\' not present in variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm+1L,(var_nm[0] == opt_chr ? var_nm+1L : var_nm));
+            } /* endelse */
+          }else{ 
+            /* Attribute must be present */
+            rcd=nco_inq_attid(grp_id,var_id,att_rnm_lst[idx_att].old_nm,&att_rnm_lst[idx_att].id);
+            if(rcd == NC_NOERR){
+              (void)nco_rename_att(grp_id,var_id,att_rnm_lst[idx_att].old_nm,att_rnm_lst[idx_att].new_nm);
+              nbr_rnm++;
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm,att_rnm_lst[idx_att].new_nm,(var_nm[0] == opt_chr ? var_nm+1L : var_nm));
+            } /* endif attribute is present */
+          } /* endelse attribute must be present */  
+        }else{ /* variable not present */
+          (void)fprintf(stdout,"%s: WARNING variable \'%s\' not present in %s\n",nco_prg_nm,var_nm,fl_in);
+        }  /* variable not present */
+        /* end if renaming single variable */
+
+      } /* Match variable by name */
+
+
+    }else{ /* ...or rename attribute for all variables... */
+
+      /* Loop table */
+      for(unsigned int idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+        (void)nco_inq_grp_full_ncid(nc_id,trv_tbl->lst[idx_tbl].grp_nm_fll,&grp_id);
+
+        /* We are in NC_GLOBAL zone if group  */
+        if (trv_tbl->lst[idx_tbl].nco_typ == nco_obj_typ_grp){
+          var_id=NC_GLOBAL;
+        }else {
+          (void)nco_inq_varid(grp_id,trv_tbl->lst[idx_tbl].nm,&var_id);
+        }
+
+        if(att_rnm_lst[idx_att].old_nm[0] == opt_chr){
+          /* Rename attribute if variable contains attribute else do nothing */
+          rcd=nco_inq_attid_flg(grp_id,var_id,att_rnm_lst[idx_att].old_nm+1L,&att_rnm_lst[idx_att].id);
+          if(rcd == NC_NOERR){
+            (void)nco_rename_att(grp_id,var_id,att_rnm_lst[idx_att].old_nm+1L,att_rnm_lst[idx_att].new_nm);
+            nbr_rnm++;
+            /* Inform user which variable had attribute renamed */
+            if(var_id > NC_GLOBAL){
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm+1L,att_rnm_lst[idx_att].new_nm,var_nm);
+            }else{
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed global or group attribute \'%s\' to \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm+1L,att_rnm_lst[idx_att].new_nm);
+            } /* end else */
+          }else{ /* end if attribute was found */
+            /* Reset error code */
+            rcd=NC_NOERR; 
+          } /* end else */
+        }else{ /* !opt_chr */
+          /* Rename attribute or die trying */
+          rcd=nco_inq_attid_flg(grp_id,var_id,att_rnm_lst[idx_att].old_nm,&att_rnm_lst[idx_att].id);
+          if(rcd == NC_NOERR){
+            (void)nco_rename_att(grp_id,var_id,att_rnm_lst[idx_att].old_nm,att_rnm_lst[idx_att].new_nm);
+            nbr_rnm++;
+            /* Inform user which variable had attribute renamed */
+            if(var_id > NC_GLOBAL){
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed attribute \'%s\' to \'%s\' for variable \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm,att_rnm_lst[idx_att].new_nm,var_nm);
+            }else{
+              IS_GLB_GRP_ATT=True; /* [flg] Attribute is Global or Group attribute */
+              if(IS_GLB_GRP_ATT) (void)fprintf(stdout,"%s: INFO found and renamed global or group attribute \'%s\' so not requiring its presence in every variable.\n",nco_prg_nm_get(),att_rnm_lst[idx_att].old_nm); 
+              if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stdout,"%s: Renamed global or group attribute \'%s\' to \'%s\'\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm,att_rnm_lst[idx_att].new_nm);
+            } /* end else */
+          }else{ /* !NC_NOERR */
+            /* Reset error code or print informative message and die */
+            if(IS_GLB_GRP_ATT){
+              /* Forgive omission of period for global/group attributes. Users aren't perfect :) */
+              rcd=NC_NOERR;
+            }else{ /* !IS_GLB_GRP_ATT */
+              (void)fprintf(stdout,"%s: ERROR User specified that presence of attribute \'%s\' is required. However, the %s%s does not contain it. HINT: If attribute presence is intended to be optional, then prefix attribute name with the period character \'%c\', e.g., %catt_nm. With this syntax %s would succeed even if no variables or groups contained the attribute. If attribute is intended to be renamed only in a specific variable, then prepend the variable name plus an at-sign \'%c\'  [...]
+              /* Exit now rather than completing variable loop and printing lengthy error message above each iteration */
+              nco_err_exit(rcd,"main");
+            } /* !IS_GLB_GRP_ATT */
+          } /* !NC_NOERR */
+        } /* !opt_chr */
+      } /* Loop table */
+    } /* end if renaming attribute for all variables */
+    /* See to it that any mandatory renaming was performed, else abort */
+    if(nbr_rnm == 0){
+      if(att_rnm_lst[idx_att].old_nm[0] == opt_chr){
+        (void)fprintf(stdout,"%s: WARNING Attribute \'%s\' not renamed because not found in searched variable(s)\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm+1L);
+      }else{
+        (void)fprintf(stdout,"%s: ERROR Attribute \'%s\' not present in %s, aborting.\n",nco_prg_nm,att_rnm_lst[idx_att].old_nm,fl_in);
+        nco_exit(EXIT_FAILURE);
+      } /* end else */
+    } /* nbr_rnm */
+  } /* end loop over attributes to rename */
+#endif /* USE_TRV_API */
+
   /* Catenate timestamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(nc_id,cmd_ln);
-  
+
 #ifdef _OPENMP
   /* fxm: hack to get libxlsmp library linked in */
   (void)omp_in_parallel();
@@ -473,25 +776,27 @@ main(int argc,char **argv)
     (void)nco_enddef(nc_id);
   }else{
     (void)nco__enddef(nc_id,hdr_pad);
-    if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes \n",prg_nm_get(),(unsigned long)hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
   } /* hdr_pad */
 
   /* Close the open netCDF file */
   nco_close(nc_id);
-  
+
   /* Remove local copy of file */
-  if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
+  if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
 
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncrename-specific memory */
-    for(idx=0;idx<nbr_att_rnm;idx++) att_rnm_arg[idx]=(char *)nco_free(att_rnm_arg[idx]);
-    for(idx=0;idx<nbr_dmn_rnm;idx++) dmn_rnm_arg[idx]=(char *)nco_free(dmn_rnm_arg[idx]);
-    for(idx=0;idx<nbr_var_rnm;idx++) var_rnm_arg[idx]=(char *)nco_free(var_rnm_arg[idx]);
+    for(int idx=0;idx<nbr_att_rnm;idx++) att_rnm_arg[idx]=(char *)nco_free(att_rnm_arg[idx]);
+    for(int idx=0;idx<nbr_dmn_rnm;idx++) dmn_rnm_arg[idx]=(char *)nco_free(dmn_rnm_arg[idx]);
+    for(int idx=0;idx<nbr_grp_rnm;idx++) grp_rnm_arg[idx]=(char *)nco_free(grp_rnm_arg[idx]);
+    for(int idx=0;idx<nbr_var_rnm;idx++) var_rnm_arg[idx]=(char *)nco_free(var_rnm_arg[idx]);
     if(nbr_att_rnm > 0) att_rnm_lst=(rnm_sct *)nco_free(att_rnm_lst);
     if(nbr_dmn_rnm > 0) dmn_rnm_lst=(rnm_sct *)nco_free(dmn_rnm_lst);
+    if(nbr_grp_rnm > 0) grp_rnm_lst=(rnm_sct *)nco_free(grp_rnm_lst);
     if(nbr_var_rnm > 0) var_rnm_lst=(rnm_sct *)nco_free(var_rnm_lst);
-    
+
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
@@ -503,8 +808,12 @@ main(int argc,char **argv)
     if(fl_lst_in && fl_lst_abb == NULL) fl_lst_in=nco_sng_lst_free(fl_lst_in,fl_nbr); 
     if(fl_lst_in && fl_lst_abb) fl_lst_in=nco_sng_lst_free(fl_lst_in,1);
     if(fl_lst_abb) fl_lst_abb=nco_sng_lst_free(fl_lst_abb,abb_arg_nbr);
+
+#ifdef USE_TRV_API
+    (void)trv_tbl_free(trv_tbl);
+#endif /* !USE_TRV_API */
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
@@ -513,4 +822,3 @@ main(int argc,char **argv)
   nco_exit_gracefully();
   return EXIT_SUCCESS;
 } /* end main() */
-
diff --git a/src/nco/ncwa.c b/src/nco/ncwa.c
index 421a218..ac5c1be 100644
--- a/src/nco/ncwa.c
+++ b/src/nco/ncwa.c
@@ -1,11 +1,11 @@
-/* $Header: /cvsroot/nco/nco/src/nco/ncwa.c,v 1.294 2012/01/01 20:51:53 zender Exp $ */
+/* $Header: /cvsroot/nco/nco/src/nco/ncwa.c,v 1.382 2013/11/12 23:50:57 zender Exp $ */
 
 /* ncwa -- netCDF weighted averager */
 
 /* Purpose: Compute averages of specified hyperslabs of specfied variables
    in a single input netCDF file and output them to a single file. */
 
-/* Copyright (C) 1995--2012 Charlie Zender
+/* Copyright (C) 1995--2013 Charlie Zender
 
    License: GNU General Public License (GPL) Version 3
    The full license text is at http://www.gnu.org/copyleft/gpl.html 
@@ -30,8 +30,7 @@
    University of California, Irvine
    Irvine, CA 92697-3100 */
 
-/* fxm: 19981202 -n and -W switches were deactivated but code left in place
-   while I rethink the normalization switches */
+/* fxm: 19981202 deactivated -n and -W switches and code left in place to rethink normalization switches */
 
 /* Usage:
    ncwa -O -a lon ~/nco/data/in.nc ~/foo.nc
@@ -47,10 +46,12 @@
 #include <math.h> /* sin cos cos sin 3.14159 */
 #include <stdio.h> /* stderr, FILE, NULL, etc. */
 #include <stdlib.h> /* atof, atoi, malloc, getopt */
-#include <string.h> /* strcmp. . . */
+#include <string.h> /* strcmp() */
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
-#include <unistd.h> /* all sorts of POSIX stuff */
+#ifndef _MSC_VER
+# include <unistd.h> /* POSIX stuff */
+#endif
 #ifndef HAVE_GETOPT_LONG
 # include "nco_getopt.h"
 #else /* HAVE_GETOPT_LONG */ 
@@ -64,13 +65,17 @@
 
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
 #define MAIN_PROGRAM_FILE
-#include "ncap.h" /* netCDF arithmetic processor-specific definitions (symbol table, ...) */
+#ifndef _MSC_VER
+# include "ncap.h" /* netCDF arithmetic processor-specific definitions (symbol table, ...) */
+#endif /* _MSC_VER */
 #include "libnco.h" /* netCDF Operator (NCO) library */
 
+#ifndef _MSC_VER
 /* Global variables (keep consistent with global variables declared in ncap.c) */ 
 size_t ncap_ncl_dpt_crr=0UL; /* [nbr] Depth of current #include file (incremented in ncap.l) */
 size_t *ncap_ln_nbr_crr; /* [cnt] Line number (incremented in ncap.l) */
 char **ncap_fl_spt_glb; /* [fl] Script file */
+#endif /* _MSC_VER */
 
 int 
 main(int argc,char **argv)
@@ -81,28 +86,34 @@ main(int argc,char **argv)
   nco_bool EXCLUDE_INPUT_LIST=False; /* Option c */
   nco_bool EXTRACT_ALL_COORDINATES=False; /* Option c */
   nco_bool EXTRACT_ASSOCIATED_COORDINATES=True; /* Option C */
-  nco_bool FILE_RETRIEVED_FROM_REMOTE_LOCATION;
+  nco_bool FL_RTR_RMT_LCN;
   nco_bool FL_LST_IN_FROM_STDIN=False; /* [flg] fl_lst_in comes from stdin */
   nco_bool FORCE_APPEND=False; /* Option A */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
+  nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool HISTORY_APPEND=True; /* Option h */
+  nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
   nco_bool MULTIPLY_BY_TALLY=False; /* Not currently implemented */
   nco_bool MUST_CONFORM=False; /* [flg] Must nco_var_cnf_dmn() find truly conforming variables? */
   nco_bool NORMALIZE_BY_TALLY=True; /* Not currently implemented */
   nco_bool NORMALIZE_BY_WEIGHT=True; /* Not currently implemented */
   nco_bool NRM_BY_DNM=True; /* Option N Normalize by denominator */
-  nco_bool REMOVE_REMOTE_FILES_AFTER_PROCESSING=True; /* Option R */
+  nco_bool RAM_CREATE=False; /* [flg] Create file in RAM */
+  nco_bool RAM_OPEN=False; /* [flg] Open (netCDF3-only) file(s) in RAM */
+  nco_bool RM_RMT_FL_PST_PRC=True; /* Option R */
   nco_bool WGT_MSK_CRD_VAR=True; /* [flg] Weight and/or mask coordinate variables */
-  nco_bool flg_cln=False; /* [flg] Clean memory prior to exit */
+  nco_bool WRT_TMP_FL=True; /* [flg] Write output to temporary file */
+  nco_bool flg_cln=True; /* [flg] Clean memory prior to exit */
   nco_bool flg_ddra=False; /* [flg] DDRA diagnostics */
-  nco_bool flg_opt_a=False; /* [flg] Option a was invoked */
   nco_bool flg_rdd=False; /* [flg] Retain degenerate dimensions */
-
+  
+  char *aux_arg[NC_MAX_DIMS];
   char **dmn_avg_lst_in=NULL_CEWI; /* Option a */
   char **fl_lst_abb=NULL; /* Option n */
   char **fl_lst_in=NULL_CEWI;
   char **var_lst_in=NULL_CEWI;
+  char **grp_lst_in=NULL_CEWI;
   char *cmd_ln;
   char *cnk_arg[NC_MAX_DIMS];
   char *cnk_map_sng=NULL_CEWI; /* [sng] Chunking map */
@@ -118,13 +129,14 @@ main(int argc,char **argv)
   char *nco_op_typ_sng; /* Operation type */
   char *opt_crr=NULL; /* [sng] String representation of current long-option name */
   char *optarg_lcl=NULL; /* [sng] Local copy of system optarg */
-  char *sng_cnv_rcd=char_CEWI; /* [sng] strtol()/strtoul() return code */
+  char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
   char *wgt_nm=NULL;
+  char trv_pth[]="/"; /* [sng] Root path of traversal tree */
+
+  const char * const CVS_Id="$Id: ncwa.c,v 1.382 2013/11/12 23:50:57 zender Exp $"; 
+  const char * const CVS_Revision="$Revision: 1.382 $";
+  const char * const opt_sht_lst="3467Aa:B:bCcD:d:Fg:G:hIL:l:M:m:nNOo:p:rRT:t:v:Ww:xy:-:";
 
-  const char * const CVS_Id="$Id: ncwa.c,v 1.294 2012/01/01 20:51:53 zender Exp $"; 
-  const char * const CVS_Revision="$Revision: 1.294 $";
-  const char * const opt_sht_lst="346Aa:B:bCcD:d:FhIL:l:M:m:nNOo:p:rRT:t:v:Ww:xy:-:";
-  
   cnk_sct **cnk=NULL_CEWI;
 
 #if defined(__cplusplus) || defined(PGI_CC)
@@ -137,19 +149,20 @@ main(int argc,char **argv)
   dmn_sct **dim=NULL_CEWI;
   dmn_sct **dmn_out=NULL_CEWI;
   dmn_sct **dmn_avg=NULL_CEWI;
-  
+
   double msk_val=1.0; /* Option M */
 
   extern char *optarg;
   extern int optind;
-  
+
   /* Using naked stdin/stdout/stderr in parallel region generates warning
-     Copy appropriate filehandle to variable scoped shared in parallel clause */
+  Copy appropriate filehandle to variable scoped shared in parallel clause */
   FILE * const fp_stderr=stderr; /* [fl] stderr filehandle CEWI */
   FILE * const fp_stdout=stdout; /* [fl] stdout filehandle CEWI */
 
   int *in_id_arr;
 
+  int aux_nbr=0; /* [nbr] Number of auxiliary coordinate hyperslabs specified */
   int abb_arg_nbr=0;
   int cnk_map=nco_cnk_map_nil; /* [enm] Chunking map */
   int cnk_nbr=0; /* [nbr] Number of chunk sizes */
@@ -161,36 +174,32 @@ main(int argc,char **argv)
   int fl_in_fmt; /* [enm] Input file format */
   int fl_out_fmt=NCO_FORMAT_UNDEFINED; /* [enm] Output file format */
   int fll_md_old; /* [enm] Old fill mode */
+  int grp_lst_in_nbr=0; /* [nbr] Number of groups explicitly specified by user */
   int idx=int_CEWI;
-  int jdx=int_CEWI;
-  int idx_avg;
   int in_id;  
   int lmt_nbr=0; /* Option d. NB: lmt_nbr gets incremented */
+  int md_open; /* [enm] Mode flag for nc_open() call */
   int nbr_dmn_fl;
   int nbr_dmn_out=0;
   int nbr_dmn_xtr;
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int nbr_xtr=0; /* nbr_xtr won't otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* xtr_nbr won't otherwise be set for -c with no -v */
   int nco_op_typ=nco_op_avg; /* Operation type */
   int op_typ_rlt=0; /* Option o */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
-  int rec_dmn_id=NCO_REC_DMN_UNDEFINED; /* [id] Record dimension ID in input file */
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
-  
-  lmt_sct **lmt;
-  lmt_all_sct **lmt_all_lst=NULL_CEWI; /* List of *lmt_all structures */  
 
-  nm_id_sct *dmn_lst;
-  nm_id_sct *xtr_lst=NULL; /* xtr_lst may be alloc()'d from NULL with -c option */
-  nm_id_sct *dmn_avg_lst;
-  
+  md5_sct *md5=NULL; /* [sct] MD5 configuration */
+
+  size_t bfr_sz_hnt=NC_SIZEHINT_DEFAULT; /* [B] Buffer size hint */
   size_t cnk_sz_scl=0UL; /* [nbr] Chunk size scalar */
+  size_t hdr_pad=0UL; /* [B] Pad at end of header section */
 
   var_sct **var;
   var_sct **var_fix;
@@ -198,104 +207,123 @@ main(int argc,char **argv)
   var_sct **var_out;
   var_sct **var_prc;
   var_sct **var_prc_out;
-  var_sct *msk=NULL;
-  var_sct *msk_out=NULL;
-  var_sct *wgt=NULL;
   var_sct *wgt_avg=NULL;
-  var_sct *wgt_out=NULL;
-  
+
+  trv_tbl_sct *trv_tbl=NULL; /* [lst] Traversal table */
+
+  gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
+
+#ifndef _MSC_VER
   prs_sct prs_arg;  /* I/O [sct] Global information required in ncwa parser */
-  
+#endif
+
   static struct option opt_lng[]=
-    { /* Structure ordered by short option key if possible */
-      /* Long options with no argument, no short option counterpart */
-      {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
-      {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
-      {"ddra",no_argument,0,0}, /* [flg] DDRA diagnostics */
-      {"mdl_cmp",no_argument,0,0}, /* [flg] DDRA diagnostics */
-      {"delete-degenerate-dimensions",no_argument,0,0}, /* [flg] Delete degenerate dimensions */
-      {"version",no_argument,0,0},
-      {"vrs",no_argument,0,0},
-      /* Long options with argument, no short option counterpart */
-      {"cnk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
-      {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
-      {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
-      {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
-      {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
-      {"file_format",required_argument,0,0},
-      /* Long options with short counterparts */
-      {"3",no_argument,0,'3'},
-      {"4",no_argument,0,'4'},
-      {"64bit",no_argument,0,'4'},
-      {"netcdf4",no_argument,0,'4'},
-      {"append",no_argument,0,'A'},
-      {"average",required_argument,0,'a'},
-      {"avg",required_argument,0,'a'},
-      {"mask_condition",required_argument,0,'B'},
-      {"msk_cnd_sng",required_argument,0,'B'},
-      {"retain-degenerate-dimensions",no_argument,0,'b'}, /* [flg] Retain degenerate dimensions */
-      {"rdd",no_argument,0,'b'}, /* [flg] Retain degenerate dimensions */
-      {"no-coords",no_argument,0,'C'},
-      {"no-crd",no_argument,0,'C'},
-      {"coords",no_argument,0,'c'},
-      {"crd",no_argument,0,'c'},
-      {"debug",required_argument,0,'D'},
-      {"dbg_lvl",required_argument,0,'D'},
-      {"dimension",required_argument,0,'d'},
-      {"dmn",required_argument,0,'d'},
-      {"fortran",no_argument,0,'F'},
-      {"ftn",no_argument,0,'F'},
-      {"history",no_argument,0,'h'},
-      {"hst",no_argument,0,'h'},
-      {"wgt_msk_crd_var",no_argument,0,'I'},
-      {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
-      {"local",required_argument,0,'l'},
-      {"lcl",required_argument,0,'l'},
-      {"mask-variable",required_argument,0,'m'},
-      {"mask_variable",required_argument,0,'m'},
-      {"mask",required_argument,0,'m'},
-      {"msk_var",required_argument,0,'m'},
-      {"msk_nm",required_argument,0,'m'},
-      {"mask-value",required_argument,0,'M'},
-      {"mask_value",required_argument,0,'M'},
-      {"msk_val",required_argument,0,'M'},
-      {"nintap",required_argument,0,'n'},
-      {"nmr",no_argument,0,'N'},
-      {"numerator",no_argument,0,'N'},
-      {"overwrite",no_argument,0,'O'},
-      {"ovr",no_argument,0,'O'},
-      {"output",required_argument,0,'o'},
-      {"fl_out",required_argument,0,'o'},
-      {"path",required_argument,0,'p'},
-      {"retain",no_argument,0,'R'},
-      {"rtn",no_argument,0,'R'},
-      {"revision",no_argument,0,'r'},
-      {"mask_comparator",required_argument,0,'T'},
-      {"msk_cmp_typ",required_argument,0,'T'},
-      {"op_rlt",required_argument,0,'T'},
-      {"thr_nbr",required_argument,0,'t'},
-      {"threads",required_argument,0,'t'},
-      {"omp_num_threads",required_argument,0,'t'},
-      {"variable",required_argument,0,'v'},
-      {"normalize-by-tally",no_argument,0,'W',},
-      {"exclude",no_argument,0,'x'},
-      {"xcl",no_argument,0,'x'},
-      {"weight",no_argument,0,'w'},
-      {"wgt",no_argument,0,'w'},
-      {"wgt_var",no_argument,0,'w'},
-      {"operation",required_argument,0,'y'},
-      {"op_typ",required_argument,0,'y'},
-      {"help",no_argument,0,'?'},
-      {0,0,0,0}
-    }; /* end opt_lng */
+  { /* Structure ordered by short option key if possible */
+    /* Long options with no argument, no short option counterpart */
+    {"cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"clean",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"mmr_cln",no_argument,0,0}, /* [flg] Clean memory prior to exit */
+    {"drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"dirty",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"mmr_drt",no_argument,0,0}, /* [flg] Allow dirty memory on exit */
+    {"ddra",no_argument,0,0}, /* [flg] DDRA diagnostics */
+    {"mdl_cmp",no_argument,0,0}, /* [flg] DDRA diagnostics */
+    {"dbl",no_argument,0,0}, /* [flg] Arithmetic convention: promote float to double */
+    {"flt",no_argument,0,0}, /* [flg] Arithmetic convention: keep single-precision */
+    {"rth_dbl",no_argument,0,0}, /* [flg] Arithmetic convention: promote float to double */
+    {"rth_flt",no_argument,0,0}, /* [flg] Arithmetic convention: keep single-precision */
+    {"hdf4",no_argument,0,0}, /* [flg] Treat file as HDF4 */
+    {"hdf_upk",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"hdf_unpack",no_argument,0,0}, /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+    {"ram_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"create_ram",no_argument,0,0}, /* [flg] Create file in RAM */
+    {"open_ram",no_argument,0,0}, /* [flg] Open (netCDF3) file(s) in RAM */
+    {"diskless_all",no_argument,0,0}, /* [flg] Open (netCDF3) and create file(s) in RAM */
+    {"wrt_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"write_tmp_fl",no_argument,0,0}, /* [flg] Write output to temporary file */
+    {"no_tmp_fl",no_argument,0,0}, /* [flg] Do not write output to temporary file */
+    {"version",no_argument,0,0},
+    {"vrs",no_argument,0,0},
+    /* Long options with argument, no short option counterpart */
+    {"bfr_sz_hnt",required_argument,0,0}, /* [B] Buffer size hint */
+    {"buffer_size_hint",required_argument,0,0}, /* [B] Buffer size hint */
+    {"chunk_map",required_argument,0,0}, /* [nbr] Chunking map */
+    {"cnk_plc",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"chunk_policy",required_argument,0,0}, /* [nbr] Chunking policy */
+    {"cnk_scl",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"chunk_scalar",required_argument,0,0}, /* [nbr] Chunk size scalar */
+    {"cnk_dmn",required_argument,0,0}, /* [nbr] Chunk size */
+    {"chunk_dimension",required_argument,0,0}, /* [nbr] Chunk size */
+    {"fl_fmt",required_argument,0,0},
+    {"hdr_pad",required_argument,0,0},
+    {"header_pad",required_argument,0,0},
+    /* Long options with short counterparts */
+    {"3",no_argument,0,'3'},
+    {"4",no_argument,0,'4'},
+    {"64bit",no_argument,0,'4'},
+    {"netcdf4",no_argument,0,'4'},
+    {"append",no_argument,0,'A'},
+    {"average",required_argument,0,'a'},
+    {"avg",required_argument,0,'a'},
+    {"mask_condition",required_argument,0,'B'},
+    {"msk_cnd_sng",required_argument,0,'B'},
+    {"retain-degenerate-dimensions",no_argument,0,'b'}, /* [flg] Retain degenerate dimensions */
+    {"rdd",no_argument,0,'b'}, /* [flg] Retain degenerate dimensions */
+    {"no-coords",no_argument,0,'C'},
+    {"no-crd",no_argument,0,'C'},
+    {"coords",no_argument,0,'c'},
+    {"crd",no_argument,0,'c'},
+    {"debug",required_argument,0,'D'},
+    {"nco_dbg_lvl",required_argument,0,'D'},
+    {"dimension",required_argument,0,'d'},
+    {"dmn",required_argument,0,'d'},
+    {"fortran",no_argument,0,'F'},
+    {"ftn",no_argument,0,'F'},
+    {"history",no_argument,0,'h'},
+    {"hst",no_argument,0,'h'},
+    {"wgt_msk_crd_var",no_argument,0,'I'},
+    {"dfl_lvl",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"deflate",required_argument,0,'L'}, /* [enm] Deflate level */
+    {"local",required_argument,0,'l'},
+    {"lcl",required_argument,0,'l'},
+    {"mask-variable",required_argument,0,'m'},
+    {"mask_variable",required_argument,0,'m'},
+    {"mask",required_argument,0,'m'},
+    {"msk_var",required_argument,0,'m'},
+    {"msk_nm",required_argument,0,'m'},
+    {"mask-value",required_argument,0,'M'},
+    {"mask_value",required_argument,0,'M'},
+    {"msk_val",required_argument,0,'M'},
+    {"nintap",required_argument,0,'n'},
+    {"nmr",no_argument,0,'N'},
+    {"numerator",no_argument,0,'N'},
+    {"overwrite",no_argument,0,'O'},
+    {"ovr",no_argument,0,'O'},
+    {"output",required_argument,0,'o'},
+    {"fl_out",required_argument,0,'o'},
+    {"path",required_argument,0,'p'},
+    {"retain",no_argument,0,'R'},
+    {"rtn",no_argument,0,'R'},
+    {"revision",no_argument,0,'r'},
+    {"mask_comparator",required_argument,0,'T'},
+    {"msk_cmp_typ",required_argument,0,'T'},
+    {"op_rlt",required_argument,0,'T'},
+    {"thr_nbr",required_argument,0,'t'},
+    {"threads",required_argument,0,'t'},
+    {"omp_num_threads",required_argument,0,'t'},
+    {"variable",required_argument,0,'v'},
+    {"normalize-by-tally",no_argument,0,'W',},
+    {"exclude",no_argument,0,'x'},
+    {"xcl",no_argument,0,'x'},
+    {"weight",no_argument,0,'w'},
+    {"wgt",no_argument,0,'w'},
+    {"wgt_var",no_argument,0,'w'},
+    {"operation",required_argument,0,'y'},
+    {"op_typ",required_argument,0,'y'},
+    {"help",no_argument,0,'?'},
+    {"hlp",no_argument,0,'?'},
+    {0,0,0,0}
+  }; /* end opt_lng */
   int opt_idx=0; /* Index of current long option into opt_lng array */
 
   /* Start timer and save command line */ 
@@ -303,12 +331,12 @@ main(int argc,char **argv)
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
   ddra_info.tmr_flg=nco_tmr_mtd;
   cmd_ln=nco_cmd_ln_sng(argc,argv);
-  
+
   NORMALIZE_BY_TALLY=NORMALIZE_BY_TALLY; /* CEWI: Avert compiler warning that variable is set but never used */
   NORMALIZE_BY_WEIGHT=NORMALIZE_BY_WEIGHT; /* CEWI: Avert compiler warning that variable is set but never used */
-  
-  /* Get program name and set program enum (e.g., prg=ncra) */
-  prg_nm=prg_prs(argv[0],&prg);
+
+  /* Get program name and set program enum (e.g., nco_prg_id=ncra) */
+  nco_prg_nm=nco_prg_prs(argv[0],&nco_prg_id);
 
   /* Parse command line arguments */
   while(1){
@@ -320,33 +348,49 @@ main(int argc,char **argv)
 
     /* Process long options without short option counterparts */
     if(opt == 0){
+      if(!strcmp(opt_crr,"bfr_sz_hnt") || !strcmp(opt_crr,"buffer_size_hint")){
+        bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_dmn") || !strcmp(opt_crr,"chunk_dimension")){
-	/* Copy limit argument for later processing */
-	cnk_arg[cnk_nbr]=(char *)strdup(optarg);
-	cnk_nbr++;
+        /* Copy limit argument for later processing */
+        cnk_arg[cnk_nbr]=(char *)strdup(optarg);
+        cnk_nbr++;
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_scl") || !strcmp(opt_crr,"chunk_scalar")){
-	cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
-	if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+        cnk_sz_scl=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_map") || !strcmp(opt_crr,"chunk_map")){
-	/* Chunking map */
-	cnk_map_sng=(char *)strdup(optarg);
-	cnk_map=nco_cnk_map_get(cnk_map_sng);
+        /* Chunking map */
+        cnk_map_sng=(char *)strdup(optarg);
+        cnk_map=nco_cnk_map_get(cnk_map_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cnk_plc") || !strcmp(opt_crr,"chunk_policy")){
-	/* Chunking policy */
-	cnk_plc_sng=(char *)strdup(optarg);
-	cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
+        /* Chunking policy */
+        cnk_plc_sng=(char *)strdup(optarg);
+        cnk_plc=nco_cnk_plc_get(cnk_plc_sng);
       } /* endif cnk */
       if(!strcmp(opt_crr,"cln") || !strcmp(opt_crr,"mmr_cln") || !strcmp(opt_crr,"clean")) flg_cln=True; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"drt") || !strcmp(opt_crr,"mmr_drt") || !strcmp(opt_crr,"dirty")) flg_cln=False; /* [flg] Clean memory prior to exit */
       if(!strcmp(opt_crr,"ddra") || !strcmp(opt_crr,"mdl_cmp")) ddra_info.flg_ddra=flg_ddra=True; /* [flg] DDRA diagnostics */
       if(!strcmp(opt_crr,"fl_fmt") || !strcmp(opt_crr,"file_format")) rcd=nco_create_mode_prs(optarg,&fl_out_fmt);
+      if(!strcmp(opt_crr,"dbl") || !strcmp(opt_crr,"rth_dbl")) nco_rth_cnv=nco_rth_flt_dbl; /* [flg] Arithmetic convention: promote float to double */
+      if(!strcmp(opt_crr,"flt") || !strcmp(opt_crr,"rth_flt")) nco_rth_cnv=nco_rth_flt_flt; /* [flg] Arithmetic convention: keep single-precision */
+      if(!strcmp(opt_crr,"hdf4")) nco_hdf_cnv=nco_hdf4; /* [enm] Treat file as HDF4 */
+      if(!strcmp(opt_crr,"hdf_upk") || !strcmp(opt_crr,"hdf_unpack")) nco_upk_cnv=nco_upk_HDF; /* [flg] HDF unpack convention: unpacked=scale_factor*(packed-add_offset) */
+      if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
+        hdr_pad=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+        if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
+      } /* endif "hdr_pad" */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"create_ram") || !strcmp(opt_crr,"diskless_all")) RAM_CREATE=True; /* [flg] Open (netCDF3) file(s) in RAM */
+      if(!strcmp(opt_crr,"ram_all") || !strcmp(opt_crr,"open_ram") || !strcmp(opt_crr,"diskless_all")) RAM_OPEN=True; /* [flg] Create file in RAM */
       if(!strcmp(opt_crr,"vrs") || !strcmp(opt_crr,"version")){
-	(void)nco_vrs_prn(CVS_Id,CVS_Revision);
-	nco_exit(EXIT_SUCCESS);
+        (void)nco_vrs_prn(CVS_Id,CVS_Revision);
+        nco_exit(EXIT_SUCCESS);
       } /* endif "vrs" */
+      if(!strcmp(opt_crr,"wrt_tmp_fl") || !strcmp(opt_crr,"write_tmp_fl")) WRT_TMP_FL=True;
+      if(!strcmp(opt_crr,"no_tmp_fl")) WRT_TMP_FL=False;
     } /* opt != 0 */
     /* Process short options */
     switch(opt){
@@ -361,21 +405,27 @@ main(int argc,char **argv)
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
       break;
+    case '7': /* Request netCDF4-classic output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
+      break;
     case 'A': /* Toggle FORCE_APPEND */
       FORCE_APPEND=!FORCE_APPEND;
       break;
     case 'a': /* Dimensions over which to average hyperslab */
-      if(flg_opt_a){
-	(void)fprintf(fp_stdout,"%s: ERROR Option -a appears more than once\n",prg_nm);
-	(void)fprintf(fp_stdout,"%s: HINT Use -a dim1,dim2,... not -a dim1 -a dim2 ...\n",prg_nm);
-	(void)nco_usg_prn();
-	nco_exit(EXIT_FAILURE);
+      if(dmn_avg_lst_in){
+        (void)fprintf(fp_stdout,"%s: ERROR Option -a appears more than once\n",nco_prg_nm);
+        (void)fprintf(fp_stdout,"%s: HINT Use -a dim1,dim2,... not -a dim1 -a dim2 ...\n",nco_prg_nm);
+        (void)nco_usg_prn();
+        nco_exit(EXIT_FAILURE);
       } /* endif */
       dmn_avg_lst_in=nco_lst_prs_2D(optarg,",",&dmn_avg_nbr);
-      flg_opt_a=True;
       break;
     case 'B': /* Mask string to be parsed */
       msk_cnd_sng=(char *)strdup(optarg);
+#ifdef _MSC_VER
+      (void)fprintf(fp_stdout,"%s: ERROR -B and --mask_condition options unsupported on Windows, which lacks a free, standard parser and lexer. HINT: Break condition into component -m -T -M switches, e.g., use -m ORO -T lt -M 1.0 instead of -B \"ORO < 1\"\n",nco_prg_nm);
+      nco_exit(EXIT_FAILURE);
+#endif
       break;
     case 'b': /* [flg] Retain degenerate dimensions */
       flg_rdd=True;
@@ -387,7 +437,7 @@ main(int argc,char **argv)
       EXTRACT_ALL_COORDINATES=True;
       break;
     case 'D': /* Debugging level. Default is 0. */
-      dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
+      nco_dbg_lvl=(unsigned short int)strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
       if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       break;
     case 'd': /* Copy limit argument for later processing */
@@ -397,6 +447,19 @@ main(int argc,char **argv)
     case 'F': /* Toggle index convention. Default is 0-based arrays (C-style). */
       FORTRAN_IDX_CNV=!FORTRAN_IDX_CNV;
       break;
+    case 'G': /* Apply Group Path Editing (GPE) to output group */
+      /* NB: GNU getopt() optional argument syntax is ugly (requires "=" sign) so avoid it
+      http://stackoverflow.com/questions/1052746/getopt-does-not-parse-optional-arguments-to-parameters */
+      gpe=nco_gpe_prs_arg(optarg);
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case 'g': /* Copy group argument for later processing */
+      /* Replace commas with hashes when within braces (convert back later) */
+      optarg_lcl=(char *)strdup(optarg);
+      (void)nco_rx_comma2hash(optarg_lcl);
+      grp_lst_in=nco_lst_prs_2D(optarg_lcl,",",&grp_lst_in_nbr);
+      optarg_lcl=(char *)nco_free(optarg_lcl);
+      break;
     case 'h': /* Toggle appending to history global attribute */
       HISTORY_APPEND=!HISTORY_APPEND;
       break;
@@ -424,7 +487,7 @@ main(int argc,char **argv)
       break;
     case 'n':
       NORMALIZE_BY_WEIGHT=False;
-      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",prg_nm);
+      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
       break;
     case 'O': /* Toggle FORCE_OVERWRITE */
@@ -437,7 +500,7 @@ main(int argc,char **argv)
       fl_pth=(char *)strdup(optarg);
       break;
     case 'R': /* Toggle removal of remotely-retrieved-files. Default is True. */
-      REMOVE_REMOTE_FILES_AFTER_PROCESSING=!REMOVE_REMOTE_FILES_AFTER_PROCESSING;
+      RM_RMT_FL_PST_PRC=!RM_RMT_FL_PST_PRC;
       break;
     case 'r': /* Print CVS program information and copyright notice */
       (void)nco_vrs_prn(CVS_Id,CVS_Revision);
@@ -456,14 +519,14 @@ main(int argc,char **argv)
     case 'v': /* Variables to extract/exclude */
       /* Replace commas with hashes when within braces (convert back later) */
       optarg_lcl=(char *)strdup(optarg);
-      (void)nco_lst_comma2hash(optarg_lcl);
+      (void)nco_rx_comma2hash(optarg_lcl);
       var_lst_in=nco_lst_prs_2D(optarg_lcl,",",&var_lst_in_nbr);
       optarg_lcl=(char *)nco_free(optarg_lcl);
-      nbr_xtr=var_lst_in_nbr;
+      xtr_nbr=var_lst_in_nbr;
       break;
     case 'W':
       NORMALIZE_BY_TALLY=False;
-      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",prg_nm);
+      (void)fprintf(fp_stdout,"%s: ERROR This option has been disabled while I rethink its implementation\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
       break;
     case 'w': /* Variable to use as weight in reducing.  Default is none */
@@ -481,10 +544,11 @@ main(int argc,char **argv)
       nco_exit(EXIT_SUCCESS);
       break;
     case '-': /* Long options are not allowed */
-      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR Long options are not available in this build. Use single letter options instead.\n",nco_prg_nm_get());
       nco_exit(EXIT_FAILURE);
       break;
     default: /* Print proper usage */
+      (void)fprintf(stdout,"%s ERROR in command-line syntax/options. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
       break;
@@ -492,7 +556,11 @@ main(int argc,char **argv)
     if(opt_crr) opt_crr=(char *)nco_free(opt_crr);
   } /* end while loop */
 
+  /* Initialize traversal table */ 
+  trv_tbl_init(&trv_tbl);
+
   /* Parse mask string */
+#ifndef _MSC_VER
   if(msk_cnd_sng){
     int cst_zero=0;
     /* Set arguments for scan */
@@ -511,12 +579,13 @@ main(int argc,char **argv)
     prs_arg.ntl_scn=False; /* [flg] Initial scan of script */
     prs_arg.var_LHS=NULL; /* [var] LHS cast variable */
     prs_arg.nco_op_typ=nco_op_nil; /* [enm] Operation type */
-  
+
     /* Initialize line counter */
     ncap_ln_nbr_crr=(size_t *)nco_realloc(ncap_ln_nbr_crr,ncap_ncl_dpt_crr+1UL); 
     ncap_ln_nbr_crr[ncap_ncl_dpt_crr]=1UL; /* [cnt] Line number incremented in ncap.l */
     if(ncap_ncwa_scn(&prs_arg,msk_cnd_sng,&msk_nm,&msk_val,&op_typ_rlt) == 0) nco_exit(EXIT_FAILURE); 
-  } /* endif msk_cnd_sng */
+  } /* endif msk_cnd_sng */ 
+#endif /* _MSC_VER */
 
   /* Ensure we do not attempt to normalize by non-existent weight */
   if(wgt_nm == NULL) NORMALIZE_BY_WEIGHT=False;
@@ -527,9 +596,6 @@ main(int argc,char **argv)
   /* Make uniform list of user-specified chunksizes */
   if(cnk_nbr > 0) cnk=nco_cnk_prs(cnk_nbr,cnk_arg);
 
-  /* Make uniform list of user-specified dimension limits */
-  lmt=nco_lmt_prs(lmt_nbr,lmt_arg);
-    
   /* Initialize thread information */
   thr_nbr=nco_openmp_ini(thr_nbr);
   in_id_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
@@ -537,155 +603,80 @@ main(int argc,char **argv)
   /* Parse filename */
   fl_in=nco_fl_nm_prs(fl_in,0,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
   /* Make sure file is on local system and is readable or die trying */
-  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-  /* Open file for reading */
-  rcd=nco_open(fl_in,NC_NOWRITE,&in_id);
-  
-  /* Get number of variables, dimensions, and record dimension ID of input file */
-  (void)nco_inq(in_id,&nbr_dmn_fl,&nbr_var_fl,(int *)NULL,&rec_dmn_id);
-  (void)nco_inq_format(in_id,&fl_in_fmt);
-  
-  /* Form initial extraction list which may include extended regular expressions */
-  xtr_lst=nco_var_lst_mk(in_id,nbr_var_fl,var_lst_in,EXCLUDE_INPUT_LIST,EXTRACT_ALL_COORDINATES,&nbr_xtr);
-
-  /* Change included variables to excluded variables */
-  if(EXCLUDE_INPUT_LIST) xtr_lst=nco_var_lst_xcl(in_id,nbr_var_fl,xtr_lst,&nbr_xtr);
+  fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+  /* Open file using appropriate buffer size hints and verbosity */
+  if(RAM_OPEN) md_open=NC_NOWRITE|NC_DISKLESS; else md_open=NC_NOWRITE;
+  rcd+=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,&in_id);
 
-  /* Is this a CCM/CCSM/CF-format history tape? */
-  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
-
-  /* Add all coordinate variables to extraction list */
-  if(EXTRACT_ALL_COORDINATES) xtr_lst=nco_var_lst_crd_add(in_id,nbr_dmn_fl,nbr_var_fl,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  (void)nco_inq_format(in_id,&fl_in_fmt);
 
-  /* Extract coordinates associated with extracted variables */
-  if(EXTRACT_ASSOCIATED_COORDINATES) xtr_lst=nco_var_lst_crd_ass_add(in_id,xtr_lst,&nbr_xtr,CNV_CCM_CCSM_CF);
+  /* Construct GTT, Group Traversal Table (groups,variables,dimensions, limits) */
+  (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,trv_tbl);
 
-  /* Sort extraction list by variable ID for fastest I/O */
-  if(nbr_xtr > 1) xtr_lst=nco_lst_srt_nm_id(xtr_lst,nbr_xtr,False);
-    
-  /* Find coordinate/dimension values associated with user-specified limits
-     NB: nco_lmt_evl() with same nc_id contains OpenMP critical region */
-  for(idx=0;idx<lmt_nbr;idx++) (void)nco_lmt_evl(in_id,lmt[idx],0L,FORTRAN_IDX_CNV);
+  /* Get number of variables, dimensions, and global attributes in file, file format */
+  (void)trv_tbl_inq((int *)NULL,(int *)NULL,(int *)NULL,&nbr_dmn_fl,(int *)NULL,(int *)NULL,(int *)NULL,(int *)NULL,&nbr_var_fl,trv_tbl);
 
-  /* Place all dimensions in lmt_all_lst */
-  lmt_all_lst=(lmt_all_sct **)nco_malloc(nbr_dmn_fl*sizeof(lmt_all_sct *));
-  /* Initialize lmt_all_sct's */ 
-  (void)nco_msa_lmt_all_int(in_id,False,lmt_all_lst,nbr_dmn_fl,lmt,lmt_nbr);
+  /* Allocate array of dimensions associated with variables to be extracted with maximum possible size */
+  dim=(dmn_sct **)nco_malloc(nbr_dmn_fl*sizeof(dmn_sct *));
 
   /* Find dimensions associated with variables to be extracted */
-  dmn_lst=nco_dmn_lst_ass_var(in_id,xtr_lst,nbr_xtr,&nbr_dmn_xtr);
-
-  /* Fill-in dimension structure for all extracted dimensions */
-  dim=(dmn_sct **)nco_malloc(nbr_dmn_xtr*sizeof(dmn_sct *));
-  for(idx=0;idx<nbr_dmn_xtr;idx++) dim[idx]=nco_dmn_fll(in_id,dmn_lst[idx].id,dmn_lst[idx].nm);
-  
-  /* Merge hyperslab limit information into dimension structures */
-  if(lmt_nbr > 0) (void)nco_dmn_lmt_mrg(dim,nbr_dmn_xtr,lmt,lmt_nbr);
+  (void)nco_dmn_lst_ass_var_trv(in_id,trv_tbl,&nbr_dmn_xtr,&dim);
 
-  /* Not specifying any dimensions is interpreted as specifying all dimensions */
+  /* Not specifying any dimensions is interpreted as specifying all dimensions. GTT: using dmn_sct* (dim) */
   if(dmn_avg_nbr == 0){
     dmn_avg_nbr=nbr_dmn_xtr;
     dmn_avg_lst_in=(char **)nco_malloc(dmn_avg_nbr*sizeof(char *));
     for(idx=0;idx<dmn_avg_nbr;idx++){
-      dmn_avg_lst_in[idx]=(char *)strdup(dmn_lst[idx].nm);
+      dmn_avg_lst_in[idx]=(char *)strdup(dim[idx]->nm);
     } /* end loop over idx */
-    if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO No dimensions specified with -a, therefore reducing (averaging, taking minimum, etc.) over all dimensions\n",prg_nm);
+    if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO No dimensions specified with -a, therefore reducing (averaging, taking minimum, etc.) over all dimensions\n",nco_prg_nm);
   } /* end if dmn_avg_nbr == 0 */
-  /* Dimension list no longer needed */
-  dmn_lst=nco_nm_id_lst_free(dmn_lst,nbr_dmn_xtr);
 
-  if(dmn_avg_nbr > 0){
-    if(dmn_avg_nbr > nbr_dmn_xtr){
-      (void)fprintf(fp_stdout,"%s: ERROR More reducing dimensions than extracted dimensions\n",prg_nm);
-      nco_exit(EXIT_FAILURE);
-    } /* end if */
-
-    /* Create structured list of reducing dimension names and IDs */
-    dmn_avg_lst=nco_dmn_lst_mk(in_id,dmn_avg_lst_in,dmn_avg_nbr);
-    /* Dimension average list no longer needed */
-    if(dmn_avg_nbr > 0) dmn_avg_lst_in=nco_sng_lst_free(dmn_avg_lst_in,dmn_avg_nbr);
-
-    /* Form list of reducing dimensions from extracted input dimensions */
-    dmn_avg=(dmn_sct **)nco_malloc(dmn_avg_nbr*sizeof(dmn_sct *));
-    for(idx_avg=0;idx_avg<dmn_avg_nbr;idx_avg++){
-      for(idx=0;idx<nbr_dmn_xtr;idx++){
-	if(!strcmp(dmn_avg_lst[idx_avg].nm,dim[idx]->nm)) break;
-      } /* end loop over idx_avg */
-      if(idx != nbr_dmn_xtr){
-	dmn_avg[idx_avg]=dim[idx];
-      }else{
-	if(dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: WARNING reducing dimension \"%s\" is not contained in any variable in extraction list\n",prg_nm,dmn_avg_lst[idx_avg].nm);
-	/* Collapse dimension average list by omitting irrelevent dimension */
-	(void)memmove(dmn_avg_lst+idx_avg*sizeof(nm_id_sct),dmn_avg_lst+(idx_avg+1)*sizeof(nm_id_sct),(dmn_avg_nbr-idx_avg-1)*sizeof(nm_id_sct));
-	--dmn_avg_nbr;
-	dmn_avg_lst=(nm_id_sct *)nco_realloc(dmn_avg_lst,dmn_avg_nbr*sizeof(nm_id_sct));
-	dmn_avg=(dmn_sct **)nco_realloc(dmn_avg,dmn_avg_nbr*sizeof(dmn_sct *)); 
-      } /* end else */
-    } /* end loop over idx_avg */
-
-    /* Make sure no reducing dimension is specified more than once */
-    for(idx=0;idx<dmn_avg_nbr;idx++){
-      for(idx_avg=0;idx_avg<dmn_avg_nbr;idx_avg++){
-	if(idx_avg != idx){
-	  if(dmn_avg[idx]->id == dmn_avg[idx_avg]->id){
-	    (void)fprintf(fp_stdout,"%s: ERROR %s specified more than once in reducing list\n",prg_nm,dmn_avg[idx]->nm);
-	    nco_exit(EXIT_FAILURE);
-	  } /* end if */
-	} /* end if */
-      } /* end loop over idx_avg */
-    } /* end loop over idx */
+  /* Allocate array of dimensions to average with maximum possible size */
+  dmn_avg=(dmn_sct **)nco_malloc(nbr_dmn_fl*sizeof(dmn_sct *));
 
-    /* Averaged dimensions appear in output file iff flg_rdd is set */
-    dmn_out=(dmn_sct **)nco_malloc((flg_rdd ? nbr_dmn_xtr : nbr_dmn_xtr-dmn_avg_nbr)*sizeof(dmn_sct *));
-    nbr_dmn_out=0;
-    for(idx=0;idx<nbr_dmn_xtr;idx++){
-      for(idx_avg=0;idx_avg<dmn_avg_nbr;idx_avg++){
-	if(!strcmp(dmn_avg_lst[idx_avg].nm,dim[idx]->nm)) break;
-      } /* end loop over idx_avg */
-      if(idx_avg == dmn_avg_nbr || flg_rdd){
-	/* Output list comprises non-averaged and, if specified, degenerate dimensions */
-	dmn_out[nbr_dmn_out]=nco_dmn_dpl(dim[idx]);
-	(void)nco_dmn_xrf(dim[idx],dmn_out[nbr_dmn_out]);
-	if(idx_avg != dmn_avg_nbr && flg_rdd){
-	  /* Cut degenerate dimensions down to size */
-	  dmn_out[nbr_dmn_out]->cnt=1L;
-	  dmn_out[nbr_dmn_out]->srt=dmn_out[nbr_dmn_out]->end=0L;
-	} /* !flg_rdd */
-	nbr_dmn_out++;
-      } /* end if idx_avg */
-    } /* end loop over idx_xtr */
-    /* Dimension average list no longer needed */
-    dmn_avg_lst=nco_nm_id_lst_free(dmn_avg_lst,dmn_avg_nbr);
-
-    if(nbr_dmn_out != (flg_rdd ? nbr_dmn_xtr : nbr_dmn_xtr-dmn_avg_nbr)){
-      (void)fprintf(fp_stdout,"%s: ERROR nbr_dmn_out != %s\n",prg_nm,(flg_rdd) ? "nbr_dmn_xtr" : "nbr_dmn_xtr-dmn_avg_nbr");
-      nco_exit(EXIT_FAILURE);
-    } /* end if */
+  /* Allocate array of dimensions to keep on output with maximum possible size */
+  dmn_out=(dmn_sct **)nco_malloc(nbr_dmn_fl*sizeof(dmn_sct *));
+
+  /* Create list of dimensions to average */
+  (void)nco_dmn_avg_mk(in_id,dmn_avg_lst_in,dmn_avg_nbr,flg_rdd,trv_tbl,&dmn_avg,&dmn_avg_nbr);
+
+  /* Create list of dimensions to keep on output */
+  (void)nco_dmn_out_mk(dim,nbr_dmn_xtr,trv_tbl,&dmn_out,&nbr_dmn_out);
 
-  } /* dmn_avg_nbr <= 0 */
+  dmn_avg=(dmn_sct **)nco_realloc(dmn_avg,dmn_avg_nbr*sizeof(dmn_sct *));
+  dmn_out=(dmn_sct **)nco_realloc(dmn_out,nbr_dmn_out*sizeof(dmn_sct *));
 
-  /* Fill-in variable structure list for all extracted variables */
-  var=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  var_out=(var_sct **)nco_malloc(nbr_xtr*sizeof(var_sct *));
-  for(idx=0;idx<nbr_xtr;idx++){
-    var[idx]=nco_var_fll(in_id,xtr_lst[idx].id,xtr_lst[idx].nm,dim,nbr_dmn_xtr);
+  /* Transfer degenerated dimensions information into GTT  */
+  (void)nco_dmn_dgn_tbl(dmn_out,nbr_dmn_out,trv_tbl);
+
+  /* Fill-in variable structure list for all extracted variables. NOTE: Using GTT version */
+  var=nco_fll_var_trv(in_id,&xtr_nbr,trv_tbl);
+
+  /* Duplicate to output array */
+  var_out=(var_sct **)nco_malloc(xtr_nbr*sizeof(var_sct *));
+  for(idx=0;idx<xtr_nbr;idx++){
     var_out[idx]=nco_var_dpl(var[idx]);
     (void)nco_xrf_var(var[idx],var_out[idx]);
     (void)nco_xrf_dmn(var_out[idx]);
-  } /* end loop over idx */
-  /* Extraction list no longer needed */
-  xtr_lst=nco_nm_id_lst_free(xtr_lst,nbr_xtr);
+  } /* end loop over var */
+
+  /* Is this a CCM/CCSM/CF-format history tape? */
+  CNV_CCM_CCSM_CF=nco_cnv_ccm_ccsm_cf_inq(in_id);
 
   /* Divide variable lists into lists of fixed variables and variables to be processed */
-  (void)nco_var_lst_dvd(var,var_out,nbr_xtr,CNV_CCM_CCSM_CF,nco_pck_plc_nil,nco_pck_map_nil,dmn_avg,dmn_avg_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc);
+  (void)nco_var_lst_dvd(var,var_out,xtr_nbr,CNV_CCM_CCSM_CF,True,nco_pck_plc_nil,nco_pck_map_nil,dmn_avg,dmn_avg_nbr,&var_fix,&var_fix_out,&nbr_var_fix,&var_prc,&var_prc_out,&nbr_var_prc,trv_tbl);
+
+  /* Store processed and fixed variables info into GTT */
+  (void)nco_var_prc_fix_trv(nbr_var_prc,var_prc,nbr_var_fix,var_fix,trv_tbl);
 
   /* We now have final list of variables to extract. Phew. */
-  if(dbg_lvl >= nco_dbg_var){
-    for(idx=0;idx<nbr_xtr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
+  if(nco_dbg_lvl >= nco_dbg_var){
+    for(idx=0;idx<xtr_nbr;idx++) (void)fprintf(stderr,"var[%d]->nm = %s, ->id=[%d]\n",idx,var[idx]->nm,var[idx]->id);
     for(idx=0;idx<nbr_var_fix;idx++) (void)fprintf(stderr,"var_fix[%d]->nm = %s, ->id=[%d]\n",idx,var_fix[idx]->nm,var_fix[idx]->id);
     for(idx=0;idx<nbr_var_prc;idx++) (void)fprintf(stderr,"var_prc[%d]->nm = %s, ->id=[%d]\n",idx,var_prc[idx]->nm,var_prc[idx]->id);
   } /* end if */
-  
+
   /* Make output and input files consanguinous */
   if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
 
@@ -693,410 +684,437 @@ main(int argc,char **argv)
   (void)nco_fl_fmt_vet(fl_out_fmt,cnk_nbr,dfl_lvl);
 
   /* Open output file */
-  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&out_id);
-  if(dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
+  fl_out_tmp=nco_fl_out_open(fl_out,FORCE_APPEND,FORCE_OVERWRITE,fl_out_fmt,&bfr_sz_hnt,RAM_CREATE,RAM_OPEN,WRT_TMP_FL,&out_id);
+  if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"Input, output file IDs = %d, %d\n",in_id,out_id);
+
+  /* Define dimensions, extracted groups, variables, and attributes in output file.  */
+  (void)nco_xtr_dfn(in_id,out_id,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr,dfl_lvl,gpe,md5,True,True,nco_pck_plc_nil,(char *)NULL,trv_tbl);
 
-  /* Copy all global attributes */
-  (void)nco_att_cpy(in_id,out_id,NC_GLOBAL,NC_GLOBAL,(nco_bool)True);
-  
   /* Catenate time-stamped command line to "history" global attribute */
   if(HISTORY_APPEND) (void)nco_hst_att_cat(out_id,cmd_ln);
-
   if(thr_nbr > 0 && HISTORY_APPEND) (void)nco_thr_att_cat(out_id,thr_nbr);
-  
-  /* Define dimensions in output file */
-  (void)nco_dmn_dfn(fl_out,out_id,dmn_out,nbr_dmn_out);
-
-  /* Define variables in output file, copy their attributes */
-  (void)nco_var_dfn(in_id,fl_out,out_id,var_out,nbr_xtr,dmn_out,nbr_dmn_out,nco_pck_plc_nil,nco_pck_map_nil,dfl_lvl);
 
   /* Add new missing values to output file while in define mode */
   if(msk_nm){
     for(idx=0;idx<nbr_var_prc;idx++){
+      char *grp_out_fll=NULL; /* [sng] Group name */
+      int grp_out_id;    /* [ID] Group ID (output) */
+      int var_out_id;    /* [ID] Variable ID (output) */
+      trv_sct *var_trv;  /* [sct] Variable GTT object */
+
+      /* Obtain variable GTT object using full variable name */
+      var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+
+      /* Edit group name for output */
+      if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+
+      /* Obtain output group ID using full group name */
+      (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+
+      /* Memory management after current extracted group */
+      if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+      /* Get variable ID */
+      (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+
+      /* Store the output variable ID */
+      var_prc_out[idx]->id=var_out_id;
+
       /* Define for var_prc_out because mss_val for var_prc will be overwritten in nco_var_mtd_refresh() */
       if(!var_prc_out[idx]->has_mss_val){
-	var_prc_out[idx]->has_mss_val=True;
-	var_prc_out[idx]->mss_val=nco_mss_val_mk(var_prc[idx]->type);
-	(void)nco_put_att(out_id,var_prc_out[idx]->id,nco_mss_val_sng_get(),var_prc_out[idx]->type,1,var_prc_out[idx]->mss_val.vp);
+        var_prc_out[idx]->has_mss_val=True;
+        var_prc_out[idx]->mss_val=nco_mss_val_mk(var_prc[idx]->type);
+        (void)nco_put_att(grp_out_id,var_prc_out[idx]->id,nco_mss_val_sng_get(),var_prc_out[idx]->type,1,var_prc_out[idx]->mss_val.vp);
       } /* end if */
     } /* end for */
   } /* end if */
 
-  /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)nco_cnk_sz_set(out_id,lmt_all_lst,nbr_dmn_fl,&cnk_map,&cnk_plc,cnk_sz_scl,cnk,cnk_nbr);
-
   /* Turn off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
-  
+
   /* Take output file out of define mode */
-  (void)nco_enddef(out_id);
-  
-  /* Assign zero-start and unity-stride vectors to output variables */
-  (void)nco_var_srd_srt_set(var_out,nbr_xtr);
+  if(hdr_pad == 0UL){
+    (void)nco_enddef(out_id);
+  }else{
+    (void)nco__enddef(out_id,hdr_pad);
+    if(nco_dbg_lvl >= nco_dbg_scl) (void)fprintf(stderr,"%s: INFO Padding header with %lu extra bytes\n",nco_prg_nm_get(),(unsigned long)hdr_pad);
+  } /* hdr_pad */
+
+  /* Assign zero to start and unity to stride vectors in output variables */
+  (void)nco_var_srd_srt_set(var_out,xtr_nbr);
 
   /* Copy variable data for non-processed variables */
-  (void)nco_var_val_cpy(in_id,out_id,var_fix,nbr_var_fix);
+  (void)nco_cpy_fix_var_trv(in_id,out_id,gpe,trv_tbl);  
 
   /* Close first input netCDF file */
   nco_close(in_id);
-  
+
   /* Loop over input files (not currently used, fl_nbr == 1) */
   for(fl_idx=0;fl_idx<fl_nbr;fl_idx++){
     /* Parse filename */
     if(fl_idx != 0) fl_in=nco_fl_nm_prs(fl_in,fl_idx,&fl_nbr,fl_lst_in,abb_arg_nbr,fl_lst_abb,fl_pth);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",prg_nm_get(),fl_idx,fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Input file %d is %s",nco_prg_nm_get(),fl_idx,fl_in);
     /* Make sure file is on local system and is readable or die trying */
-    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FILE_RETRIEVED_FROM_REMOTE_LOCATION);
-    if(dbg_lvl >= nco_dbg_fl && FILE_RETRIEVED_FROM_REMOTE_LOCATION) (void)fprintf(stderr,", local file is %s",fl_in);
-    if(dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
-    
+    if(fl_idx != 0) fl_in=nco_fl_mk_lcl(fl_in,fl_pth_lcl,&FL_RTR_RMT_LCN);
+    if(nco_dbg_lvl >= nco_dbg_fl && FL_RTR_RMT_LCN) (void)fprintf(stderr,", local file is %s",fl_in);
+    if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"\n");
+
     /* Open file once per thread to improve caching */
-    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_open(fl_in,NC_NOWRITE,in_id_arr+thr_idx);
+    for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) rcd=nco_fl_open(fl_in,md_open,&bfr_sz_hnt,in_id_arr+thr_idx);
     in_id=in_id_arr[0];
-    
+
     /* Perform various error-checks on input file */
     if(False) (void)nco_fl_cmp_err_chk();
 
-    /* Find weighting variable in input file */
-    if(wgt_nm){
-      int wgt_id;
-      
-      rcd=nco_inq_varid(in_id,wgt_nm,&wgt_id);
-      /* fxm: TODO #111 core dump if wgt has dimension not in extraction list */
-      wgt=nco_var_fll(in_id,wgt_id,wgt_nm,dim,nbr_dmn_xtr);
-      
-      /* Retrieve weighting variable */
-      (void)nco_var_get(in_id,wgt);
-      /* fxm: Perhaps should allocate default tally array for wgt here
-       That way, when wgt conforms to the first var_prc_out and it therefore
-       does not get a tally array copied by nco_var_dpl() in nco_var_cnf_dmn(), 
-       it will at least have space for a tally array. TODO #114. */
-
-    } /* end if */
-
-    /* Find mask variable in input file */
-    if(msk_nm){
-      int msk_id;
-      
-      rcd=nco_inq_varid(in_id,msk_nm,&msk_id);
-      /* fxm: TODO #111 core dump if msk has dimension not in extraction list */
-      msk=nco_var_fll(in_id,msk_id,msk_nm,dim,nbr_dmn_xtr);
-      
-      /* Retrieve mask variable */
-      /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-      (void)nco_var_get(in_id,msk);
-    } /* end if */
-
     /* Timestamp end of metadata setup and disk layout */
     rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
     ddra_info.tmr_flg=nco_tmr_rgl;
 
 #ifdef _OPENMP
-  /* OpenMP notes:
-     firstprivate(): msk_out and wgt_out must be NULL on first call to nco_var_cnf_dmn()
-     shared(): msk and wgt are not altered within loop
-     private(): wgt_avg does not need initialization */
-#pragma omp parallel for default(none) firstprivate(DO_CONFORM_MSK,DO_CONFORM_WGT,ddra_info,msk_out,wgt_out) private(idx,in_id,wgt_avg) shared(MULTIPLY_BY_TALLY,MUST_CONFORM,NRM_BY_DNM,WGT_MSK_CRD_VAR,dbg_lvl,dmn_avg,dmn_avg_nbr,flg_ddra,flg_rdd,in_id_arr,msk,msk_nm,msk_val,nbr_var_prc,nco_op_typ,op_typ_rlt,out_id,prg_nm,rcd,var_prc,var_prc_out,wgt,wgt_nm)
+    /* OpenMP notes:
+    firstprivate(): msk_out and wgt_out must be NULL on first call to nco_var_cnf_dmn()
+    shared(): msk and wgt are not altered within loop
+    private(): wgt_avg does not need initialization */
+#pragma omp parallel for default(none) firstprivate(DO_CONFORM_MSK,DO_CONFORM_WGT,ddra_info) private(idx,in_id,wgt_avg) shared(MULTIPLY_BY_TALLY,MUST_CONFORM,NRM_BY_DNM,WGT_MSK_CRD_VAR,nco_dbg_lvl,dmn_avg,dmn_avg_nbr,flg_ddra,flg_rdd,gpe,in_id_arr,msk_nm,msk_val,nbr_var_prc,nco_op_typ,op_typ_rlt,out_id,nco_prg_nm,rcd,trv_tbl,var_prc,var_prc_out,wgt_nm)
 #endif /* !_OPENMP */
+
     for(idx=0;idx<nbr_var_prc;idx++){ /* Process all variables in current file */
+
+      char *grp_out_fll=NULL; /* [sng] Group name */
+
+      int grp_id;        /* [ID] Group ID */
+      int grp_out_id;    /* [ID] Group ID (output) */
+      int var_out_id;    /* [ID] Variable ID (output) */
+
+      trv_sct *var_trv;  /* [sct] Variable GTT object */
+
+      var_sct *wgt=NULL;
+      var_sct *wgt_out=NULL;
+      var_sct *msk=NULL;
+      var_sct *msk_out=NULL;
+
       in_id=in_id_arr[omp_get_thread_num()];
-      if(dbg_lvl >= nco_dbg_var && dbg_lvl < nco_dbg_nbr) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
-      if(dbg_lvl >= nco_dbg_var && dbg_lvl < nco_dbg_nbr) (void)fflush(fp_stderr);
+
+      /* Find weighting variable that matches current variable */
+      if(wgt_nm) wgt=nco_var_get_wgt_trv(in_id,wgt_nm,var_prc[idx],trv_tbl);
+
+      /* Find mask variable that matches current variable */
+      if(msk_nm) msk=nco_var_get_wgt_trv(in_id,msk_nm,var_prc[idx],trv_tbl);
+
+      /* Obtain variable GTT object using full variable name */
+      var_trv=trv_tbl_var_nm_fll(var_prc[idx]->nm_fll,trv_tbl);
+
+      /* Obtain group ID using full group name */
+      (void)nco_inq_grp_full_ncid(in_id,var_trv->grp_nm_fll,&grp_id);
+
+      if(nco_dbg_lvl >= nco_dbg_var && nco_dbg_lvl < nco_dbg_nbr) rcd+=nco_var_prc_crr_prn(idx,var_prc[idx]->nm);
+      if(nco_dbg_lvl >= nco_dbg_var && nco_dbg_lvl < nco_dbg_nbr) (void)fflush(fp_stderr);
 
       /* Allocate and, if necessary, initialize accumulation space for all processed variables */
       var_prc_out[idx]->sz=var_prc[idx]->sz;
-      /*      if((var_prc_out[idx]->tally=var_prc[idx]->tally=(long *)nco_malloc_flg(var_prc_out[idx]->sz*sizeof(long))) == NULL){*/
+     
       /* fxm: verify that var_prc->tally is not needed */
       if((var_prc_out[idx]->tally=(long *)nco_malloc_flg(var_prc_out[idx]->sz*sizeof(long))) == NULL){
-	(void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%ld bytes for tally buffer for variable %s in main()\n",prg_nm_get(),var_prc_out[idx]->sz,(long)sizeof(long),var_prc_out[idx]->nm);
-	nco_exit(EXIT_FAILURE); 
+        (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%ld bytes for tally buffer for variable %s in main()\n",nco_prg_nm_get(),var_prc_out[idx]->sz,(long)sizeof(long),var_prc_out[idx]->nm);
+        nco_exit(EXIT_FAILURE); 
       } /* end if err */
       (void)nco_zero_long(var_prc_out[idx]->sz,var_prc_out[idx]->tally);
       if((var_prc_out[idx]->val.vp=(void *)nco_malloc_flg(var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type))) == NULL){
-	(void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
-	nco_exit(EXIT_FAILURE); 
+        (void)fprintf(fp_stdout,"%s: ERROR Unable to malloc() %ld*%lu bytes for value buffer for variable %s in main()\n",nco_prg_nm_get(),var_prc_out[idx]->sz,(unsigned long)nco_typ_lng(var_prc_out[idx]->type),var_prc_out[idx]->nm);
+        nco_exit(EXIT_FAILURE); 
       } /* end if err */
       (void)nco_var_zero(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->val);
-      
-      (void)nco_var_mtd_refresh(in_id,var_prc[idx]);
+
+      (void)nco_var_mtd_refresh(grp_id,var_prc[idx]);
+
       /* Retrieve variable from disk into memory */
-      if(False) (void)fprintf(fp_stdout,"%s: DEBUG: fxm TODO nco354 About to nco_var_get() %s\n",prg_nm,var_prc[idx]->nm);
-      /* NB: nco_var_get() with same nc_id contains OpenMP critical region */
-      (void)nco_var_get(in_id,var_prc[idx]);
-      if(False) (void)fprintf(fp_stdout,"%s: DEBUG: fxm TODO nco354 Finished nco_var_get() %s\n",prg_nm,var_prc[idx]->nm);
-      
+      (void)nco_msa_var_get_trv(in_id,var_prc[idx],trv_tbl);
+
       /* Convert char, short, long, int types to doubles before arithmetic */
       var_prc[idx]=nco_typ_cnv_rth(var_prc[idx],nco_op_typ);
       var_prc_out[idx]=nco_typ_cnv_rth(var_prc_out[idx],nco_op_typ);
-      
-      if(msk_nm && (!var_prc[idx]->is_crd_var || WGT_MSK_CRD_VAR)){
-	msk_out=nco_var_cnf_dmn(var_prc[idx],msk,msk_out,MUST_CONFORM,&DO_CONFORM_MSK);
-	/* If msk and var did not conform then do not mask var! */
-	if(DO_CONFORM_MSK){
-	  msk_out=nco_var_cnf_typ(var_prc[idx]->type,msk_out);
-	  
-	  /* mss_val for var_prc has been overwritten in nco_var_mtd_refresh() */
-	  if(!var_prc[idx]->has_mss_val){
-	    var_prc[idx]->has_mss_val=True;
-	    var_prc[idx]->mss_val=nco_mss_val_mk(var_prc[idx]->type);
-	  } /* end if */
-	  
-	  /* Mask by changing variable to missing value where condition is false */
-	  (void)nco_var_msk(var_prc[idx]->type,var_prc[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,msk_val,op_typ_rlt,msk_out->val,var_prc[idx]->val);
-	} /* end if */
+
+      /* Check mask found for this variable, using msk */
+      if(msk && (!var_prc[idx]->is_crd_var || WGT_MSK_CRD_VAR)){
+        msk_out=nco_var_cnf_dmn(var_prc[idx],msk,msk_out,MUST_CONFORM,&DO_CONFORM_MSK);
+        /* If msk and var did not conform then do not mask var! */
+        if(DO_CONFORM_MSK){
+          msk_out=nco_var_cnf_typ(var_prc[idx]->type,msk_out);
+
+          /* mss_val for var_prc has been overwritten in nco_var_mtd_refresh() */
+          if(!var_prc[idx]->has_mss_val){
+            var_prc[idx]->has_mss_val=True;
+            var_prc[idx]->mss_val=nco_mss_val_mk(var_prc[idx]->type);
+          } /* end if */
+
+          /* Mask by changing variable to missing value where condition is false */
+          (void)nco_var_msk(var_prc[idx]->type,var_prc[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,msk_val,op_typ_rlt,msk_out->val,var_prc[idx]->val);
+        } /* end if */
       } /* end if */
       /* Perform non-linear transformations before weighting */
       if(!var_prc[idx]->is_crd_var){
-	switch(nco_op_typ){
-	case nco_op_avgsqr: /* Square variable before weighting */
-	case nco_op_rms: /* Square variable before weighting */
-	case nco_op_rmssdn: /* Square variable before weighting */
-	  (void)nco_var_mlt(var_prc[idx]->type,var_prc[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->val,var_prc[idx]->val);
-	  break;
-	default: /* All other operations are linear, do nothing to them yet */
-	  break;
-	} /* end case */
+        switch(nco_op_typ){
+        case nco_op_avgsqr: /* Square variable before weighting */
+        case nco_op_rms: /* Square variable before weighting */
+        case nco_op_rmssdn: /* Square variable before weighting */
+          (void)nco_var_mlt(var_prc[idx]->type,var_prc[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,var_prc[idx]->val,var_prc[idx]->val);
+          break;
+        default: /* All other operations are linear, do nothing to them yet */
+          break;
+        } /* end case */
       } /* var_prc[idx]->is_crd_var */
-      if(wgt_nm && (!var_prc[idx]->is_crd_var || WGT_MSK_CRD_VAR)){
-	/* fxm: nco_var_cnf_dmn() has bug where it does not allocate tally array
-	   for weights that do already conform to var_prc. TODO #114. */
-	wgt_out=nco_var_cnf_dmn(var_prc[idx],wgt,wgt_out,MUST_CONFORM,&DO_CONFORM_WGT);
-	if(DO_CONFORM_WGT){
-	  wgt_out=nco_var_cnf_typ(var_prc[idx]->type,wgt_out);
-	  /* Weight after any initial non-linear operation so, e.g., variable is squared but not weights */
-	  /* Weight variable by taking product of weight and variable */
-	  (void)nco_var_mlt(var_prc[idx]->type,var_prc[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,wgt_out->val,var_prc[idx]->val);
-	} /* end if weights conformed */
+
+      /* Check weight found for this variable, using wgt */
+      if(wgt && (!var_prc[idx]->is_crd_var || WGT_MSK_CRD_VAR)){
+        /* fxm: nco_var_cnf_dmn() has bug where it does not allocate tally array
+        for weights that do already conform to var_prc. TODO #114. */
+        wgt_out=nco_var_cnf_dmn(var_prc[idx],wgt,wgt_out,MUST_CONFORM,&DO_CONFORM_WGT);
+        if(DO_CONFORM_WGT){
+          wgt_out=nco_var_cnf_typ(var_prc[idx]->type,wgt_out);
+          /* Weight after any initial non-linear operation so, e.g., variable is squared but not weights */
+          /* Weight variable by taking product of weight and variable */
+          (void)nco_var_mlt(var_prc[idx]->type,var_prc[idx]->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,wgt_out->val,var_prc[idx]->val);
+        } /* end if weights conformed */
       } /* end if weight was specified and then tested for conformance */
       /* Copy (masked) (weighted) values from var_prc to var_prc_out */
       (void)memcpy((void *)(var_prc_out[idx]->val.vp),(void *)(var_prc[idx]->val.vp),var_prc_out[idx]->sz*nco_typ_lng(var_prc_out[idx]->type));
       /* 20050516: fxm: destruction of var_prc_out in nco_var_avg() leaves dangling pointers in var_out? */
       /* Reduce variable over specified dimensions (tally array is set here)
-	 NB: var_prc_out[idx] is new, so corresponding var_out[idx] is dangling */
+      NB: var_prc_out[idx] is new, so corresponding var_out[idx] is dangling */
       var_prc_out[idx]=nco_var_avg(var_prc_out[idx],dmn_avg,dmn_avg_nbr,nco_op_typ,flg_rdd,&ddra_info);
       /* var_prc_out[idx]->val now holds numerator of averaging expression documented in NCO User's Guide
-	 Denominator is also tricky due to sundry normalization options
-	 These logical switches are VERY tricky---be careful modifying them */
+      Denominator is also tricky due to sundry normalization options
+      These logical switches are VERY tricky---be careful modifying them */
       if(NRM_BY_DNM && DO_CONFORM_WGT && (!var_prc[idx]->is_crd_var || WGT_MSK_CRD_VAR)){
-	/* Duplicate wgt_out as wgt_avg so that wgt_out is not contaminated by any
-	   averaging operation and may be re-used on next variable.
-	   Free wgt_avg after each use but continue to re-use wgt_out */
-	wgt_avg=nco_var_dpl(wgt_out);
-	
-	if(var_prc[idx]->has_mss_val){
-	  double mss_val_dbl=double_CEWI;
-	  /* Set denominator to missing value at all locations where variable is missing value
-	     If this is accomplished by setting weight to missing value wherever variable is missing value
-	     then weight must not be re-used by next variable (which might conform but have missing values in different locations)
-	     This is one good reason to copy wgt_out into disposable wgt_avg for each new variable */
-	  /* First, make sure wgt_avg has same missing value as variable */
-	  (void)nco_mss_val_cp(var_prc[idx],wgt_avg);
-	  /* Copy missing value into double precision variable */
-	  switch(wgt_avg->type){
-	  case NC_FLOAT: mss_val_dbl=wgt_avg->mss_val.fp[0]; break; 
-	  case NC_DOUBLE: mss_val_dbl=wgt_avg->mss_val.dp[0]; break; 
-	  case NC_INT: mss_val_dbl=wgt_avg->mss_val.ip[0]; break;
-	  case NC_SHORT: mss_val_dbl=wgt_avg->mss_val.sp[0]; break;
-	  case NC_USHORT: mss_val_dbl=wgt_avg->mss_val.usp[0]; break;
-	  case NC_UINT: mss_val_dbl=wgt_avg->mss_val.uip[0]; break;
-	  case NC_INT64: mss_val_dbl=wgt_avg->mss_val.i64p[0]; break;
-	  case NC_UINT64: mss_val_dbl=wgt_avg->mss_val.ui64p[0]; break;
-	  case NC_BYTE: mss_val_dbl=wgt_avg->mss_val.bp[0]; break;
-	  case NC_UBYTE: mss_val_dbl=wgt_avg->mss_val.cp[0]; break;
-	  case NC_CHAR: mss_val_dbl=wgt_avg->mss_val.cp[0]; break;
-	  case NC_STRING: break; /* Do nothing */
-	  default: nco_dfl_case_nc_type_err(); break;
-	  } /* end switch */
-	  /* Second, mask wgt_avg where variable is missing value */
-	  (void)nco_var_msk(wgt_avg->type,wgt_avg->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,mss_val_dbl,nco_op_ne,var_prc[idx]->val,wgt_avg->val);
-	} /* endif weight must be checked for missing values */
-	
-	/* Free current input buffer */
-	var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
-
-	if(msk_nm && DO_CONFORM_MSK){
-	  /* Must mask weight in same fashion as variable was masked
-	     If msk and var did not conform then do not mask wgt
-	     Ensure wgt_avg has a missing value */
-	  if(!wgt_avg->has_mss_val){
-	    wgt_avg->has_mss_val=True;
-	    wgt_avg->mss_val=nco_mss_val_mk(wgt_avg->type);
-	  } /* end if */
-	  /* Mask by changing weight to missing value where condition is false */
-	  (void)nco_var_msk(wgt_avg->type,wgt_avg->sz,wgt_avg->has_mss_val,wgt_avg->mss_val,msk_val,op_typ_rlt,msk_out->val,wgt_avg->val);
-	} /* endif weight must be masked */
-	
-	/* fxm: temporary kludge to make sure weight has tally space
-	   wgt_avg may lack valid tally array in ncwa because wgt_avg is created, 
-	   sometimes, before the tally array for var_prc_out[idx] is created. 
-	   When this occurs the nco_var_dpl() call in nco_var_cnf_dmn() does not copy
-	   tally array into wgt_avg. See related note about this above. TODO #114.*/
-	if(wgt_avg->sz > 0)
-	  if((wgt_avg->tally=(long *)nco_realloc(wgt_avg->tally,wgt_avg->sz*sizeof(long))) == NULL){
-	    (void)fprintf(fp_stdout,"%s: ERROR Unable to realloc() %ld*%ld bytes for tally buffer for weight %s in main()\n",prg_nm_get(),wgt_avg->sz,(long)sizeof(long),wgt_avg->nm);
-	    nco_exit(EXIT_FAILURE); 
-	  } /* end if */
-	/* Average weight over specified dimensions (tally array is set here) */
-	wgt_avg=nco_var_avg(wgt_avg,dmn_avg,dmn_avg_nbr,nco_op_avg,flg_rdd,&ddra_info);
-
-	if(MULTIPLY_BY_TALLY){
-	  /* NB: Currently this is not implemented */
-	  /* Multiply numerator (weighted sum of variable) by tally 
-	     We deviously accomplish this by dividing denominator by tally */
-	  (void)nco_var_nrm(wgt_avg->type,wgt_avg->sz,wgt_avg->has_mss_val,wgt_avg->mss_val,wgt_avg->tally,wgt_avg->val);
-	} /* endif */
-	/* Divide numerator by denominator */
-	/* Diagnose common PEBCAK before it causes core dump */
-	if(var_prc_out[idx]->sz == 1L && var_prc_out[idx]->type == NC_INT && var_prc_out[idx]->val.ip[0] == 0){
-	  (void)fprintf(fp_stdout,"%s: ERROR Weight in denominator weight = 0.0, will cause SIGFPE\n%s: HINT Sum of masked, averaged weights must be non-zero\n%s: HINT A possible workaround is to remove variable \"%s\" from output file using \"%s -x -v %s ...\"\n%s: Expecting core dump...now!\n",prg_nm,prg_nm,prg_nm,var_prc_out[idx]->nm,prg_nm,var_prc_out[idx]->nm,prg_nm);
-	} /* end if */
-	/* Rather complex conditional statement is shorter than switch() */
-	if( /* Normalize by weighted tally if ....  */
-	   (nco_op_typ != nco_op_min) && /* ...operation is not min() and... */
-	   (nco_op_typ != nco_op_max) && /* ...operation is not max() and... */
-	   (nco_op_typ != nco_op_ttl || /* ...operation is not ttl() or... */
-	    var_prc[idx]->is_crd_var) /* ...variable is a coordinate */
-	   ){ /* Divide numerator by masked, averaged, weights */
-	  (void)nco_var_dvd(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,wgt_avg->val,var_prc_out[idx]->val);
-	} /* endif */
-	/* Free wgt_avg, but keep wgt_out, after each use */
-	if(wgt_avg) wgt_avg=nco_var_free(wgt_avg);
-	/* End of branch for normalization when weights were specified */
+        /* Duplicate wgt_out as wgt_avg so that wgt_out is not contaminated by any
+        averaging operation and may be re-used on next variable.
+        Free wgt_avg after each use but continue to re-use wgt_out */
+        wgt_avg=nco_var_dpl(wgt_out);
+
+        if(var_prc[idx]->has_mss_val){
+          double mss_val_dbl=double_CEWI;
+          /* Set denominator to missing value at all locations where variable is missing value
+          If this is accomplished by setting weight to missing value wherever variable is missing value
+          then weight must not be re-used by next variable (which might conform but have missing values in different locations)
+          This is one good reason to copy wgt_out into disposable wgt_avg for each new variable */
+          /* First, make sure wgt_avg has same missing value as variable */
+          (void)nco_mss_val_cp(var_prc[idx],wgt_avg);
+          /* Copy missing value into double precision variable */
+          switch(wgt_avg->type){
+          case NC_FLOAT: mss_val_dbl=wgt_avg->mss_val.fp[0]; break; 
+          case NC_DOUBLE: mss_val_dbl=wgt_avg->mss_val.dp[0]; break; 
+          case NC_INT: mss_val_dbl=wgt_avg->mss_val.ip[0]; break;
+          case NC_SHORT: mss_val_dbl=wgt_avg->mss_val.sp[0]; break;
+          case NC_USHORT: mss_val_dbl=wgt_avg->mss_val.usp[0]; break;
+          case NC_UINT: mss_val_dbl=wgt_avg->mss_val.uip[0]; break;
+          case NC_INT64: mss_val_dbl=wgt_avg->mss_val.i64p[0]; break;
+          case NC_UINT64: mss_val_dbl=wgt_avg->mss_val.ui64p[0]; break;
+          case NC_BYTE: mss_val_dbl=wgt_avg->mss_val.bp[0]; break;
+          case NC_UBYTE: mss_val_dbl=wgt_avg->mss_val.cp[0]; break;
+          case NC_CHAR: mss_val_dbl=wgt_avg->mss_val.cp[0]; break;
+          case NC_STRING: break; /* Do nothing */
+          default: nco_dfl_case_nc_type_err(); break;
+          } /* end switch */
+          /* Second, mask wgt_avg where variable is missing value */
+          (void)nco_var_msk(wgt_avg->type,wgt_avg->sz,var_prc[idx]->has_mss_val,var_prc[idx]->mss_val,mss_val_dbl,nco_op_ne,var_prc[idx]->val,wgt_avg->val);
+        } /* endif weight must be checked for missing values */
+
+        /* Free current input buffer */
+        var_prc[idx]->val.vp=nco_free(var_prc[idx]->val.vp);
+
+        if(msk && DO_CONFORM_MSK){
+          /* Must mask weight in same fashion as variable was masked
+          If msk and var did not conform then do not mask wgt
+          Ensure wgt_avg has a missing value */
+          if(!wgt_avg->has_mss_val){
+            wgt_avg->has_mss_val=True;
+            wgt_avg->mss_val=nco_mss_val_mk(wgt_avg->type);
+          } /* end if */
+          /* Mask by changing weight to missing value where condition is false */
+          (void)nco_var_msk(wgt_avg->type,wgt_avg->sz,wgt_avg->has_mss_val,wgt_avg->mss_val,msk_val,op_typ_rlt,msk_out->val,wgt_avg->val);
+        } /* endif weight must be masked */
+
+        /* fxm: temporary kludge to make sure weight has tally space
+        wgt_avg may lack valid tally array in ncwa because wgt_avg is created, 
+        sometimes, before the tally array for var_prc_out[idx] is created. 
+        When this occurs the nco_var_dpl() call in nco_var_cnf_dmn() does not copy
+        tally array into wgt_avg. See related note about this above. TODO #114.*/
+        if(wgt_avg->sz > 0)
+          if((wgt_avg->tally=(long *)nco_realloc(wgt_avg->tally,wgt_avg->sz*sizeof(long))) == NULL){
+            (void)fprintf(fp_stdout,"%s: ERROR Unable to realloc() %ld*%ld bytes for tally buffer for weight %s in main()\n",nco_prg_nm_get(),wgt_avg->sz,(long)sizeof(long),wgt_avg->nm);
+            nco_exit(EXIT_FAILURE); 
+          } /* end if */
+          /* Average weight over specified dimensions (tally array is set here) */
+          wgt_avg=nco_var_avg(wgt_avg,dmn_avg,dmn_avg_nbr,nco_op_avg,flg_rdd,&ddra_info);
+
+          if(MULTIPLY_BY_TALLY){
+            /* NB: Currently this is not implemented */
+            /* Multiply numerator (weighted sum of variable) by tally 
+            We deviously accomplish this by dividing denominator by tally */
+            (void)nco_var_nrm(wgt_avg->type,wgt_avg->sz,wgt_avg->has_mss_val,wgt_avg->mss_val,wgt_avg->tally,wgt_avg->val);
+          } /* endif */
+          /* Divide numerator by denominator */
+          /* Diagnose common PEBCAK before it causes core dump */
+          if(var_prc_out[idx]->sz == 1L && var_prc_out[idx]->type == NC_INT && var_prc_out[idx]->val.ip[0] == 0){
+            (void)fprintf(fp_stdout,"%s: ERROR Weight in denominator weight = 0.0, will cause SIGFPE\n%s: HINT Sum of masked, averaged weights must be non-zero\n%s: HINT A possible workaround is to remove variable \"%s\" from output file using \"%s -x -v %s ...\"\n%s: Expecting core dump...now!\n",nco_prg_nm,nco_prg_nm,nco_prg_nm,var_prc_out[idx]->nm,nco_prg_nm,var_prc_out[idx]->nm,nco_prg_nm);
+          } /* end if */
+          /* Rather complex conditional statement is shorter than switch() */
+          if( /* Normalize by weighted tally if ....  */
+            (nco_op_typ != nco_op_min) && /* ...operation is not min() and... */
+            (nco_op_typ != nco_op_max) && /* ...operation is not max() and... */
+            (nco_op_typ != nco_op_ttl || /* ...operation is not ttl() or... */
+            var_prc[idx]->is_crd_var) /* ...variable is a coordinate */
+            ){ /* Divide numerator by masked, averaged, weights */
+              (void)nco_var_dvd(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,wgt_avg->val,var_prc_out[idx]->val);
+          } /* endif */
+          /* Free wgt_avg, but keep wgt_out, after each use */
+          if(wgt_avg) wgt_avg=nco_var_free(wgt_avg);
+          /* End of branch for normalization when weights were specified */
       }else if(NRM_BY_DNM){
-	/* Branch for normalization when no weights were specified
-	   Normalization is just due to tally */
+        /* Branch for normalization when no weights were specified
+        Normalization is just due to tally */
         if(var_prc[idx]->is_crd_var){
-	  /* Return linear averages of coordinates unless computing extrema
-	     Prevent coordinate variables from encountering nco_var_nrm_sdn() */
-	  if((nco_op_typ != nco_op_min) && (nco_op_typ != nco_op_max)) (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val);
+          /* Return linear averages of coordinates unless computing extrema
+          Prevent coordinate variables from encountering nco_var_nrm_sdn() */
+          if((nco_op_typ != nco_op_min) && (nco_op_typ != nco_op_max)) (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val);
         }else{ /* !var_prc[idx]->is_crd_var */
-	  switch(nco_op_typ){
-	  case nco_op_avg: /* Normalize sum by tally to create mean */
-	  case nco_op_sqravg: /* Normalize sum by tally to create mean */
-	  case nco_op_avgsqr: /* Normalize sum of squares by tally to create mean square */
-	  case nco_op_rms: /* Normalize sum of squares by tally to create mean square */
-	  case nco_op_sqrt: /* Normalize sum by tally to create mean */
-	    (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val);
-	    break;
-	  case nco_op_rmssdn: /* Normalize sum of squares by tally-1 to create mean square for sdn */
-	    (void)nco_var_nrm_sdn(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val);
-	    break;
-	  case nco_op_min: /* Minimum is already in buffer, do nothing */
-	  case nco_op_max: /* Maximum is already in buffer, do nothing */	
-	  case nco_op_ttl: /* Total is already in buffer, do nothing */	
-	    break;
-	  default:
-	    (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in non-weighted normalization\n",prg_nm);
-	    nco_exit(EXIT_FAILURE);
-	    break;
-	} /* end switch */
-       } /* !var_prc[idx]->is_crd_var */
-       }else if(!NRM_BY_DNM){
-	/* User turned off normalization so we are done */
-	;
+          switch(nco_op_typ){
+          case nco_op_avg: /* Normalize sum by tally to create mean */
+          case nco_op_sqravg: /* Normalize sum by tally to create mean */
+          case nco_op_avgsqr: /* Normalize sum of squares by tally to create mean square */
+          case nco_op_rms: /* Normalize sum of squares by tally to create mean square */
+          case nco_op_sqrt: /* Normalize sum by tally to create mean */
+            (void)nco_var_nrm(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val);
+            break;
+          case nco_op_rmssdn: /* Normalize sum of squares by tally-1 to create mean square for sdn */
+            (void)nco_var_nrm_sdn(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val);
+            break;
+          case nco_op_min: /* Minimum is already in buffer, do nothing */
+          case nco_op_max: /* Maximum is already in buffer, do nothing */	
+          case nco_op_ttl: /* Total is already in buffer, do nothing */	
+            break;
+          default:
+            (void)fprintf(fp_stdout,"%s: ERROR Illegal nco_op_typ in non-weighted normalization\n",nco_prg_nm);
+            nco_exit(EXIT_FAILURE);
+            break;
+          } /* end switch */
+        } /* !var_prc[idx]->is_crd_var */
+      }else if(!NRM_BY_DNM){
+        /* User turned off normalization so we are done */
+        ;
       }else{
-	(void)fprintf(fp_stdout,"%s: ERROR Unforeseen logical branch in main()\n",prg_nm);
-	nco_exit(EXIT_FAILURE);
+        (void)fprintf(fp_stdout,"%s: ERROR Unforeseen logical branch in main()\n",nco_prg_nm);
+        nco_exit(EXIT_FAILURE);
       } /* end if */
-	/* Some non-linear operations require additional processing */
+      /* Some non-linear operations require additional processing */
       if(!var_prc[idx]->is_crd_var){
-	switch(nco_op_typ){
-	case nco_op_sqravg: /* Square mean to create square of the mean (for sdn) */
-	  (void)nco_var_mlt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->val,var_prc_out[idx]->val);
-	  break;
-	case nco_op_sqrt: /* Take root of mean to create root mean */
-	case nco_op_rms: /* Take root of mean of sum of squares to create root mean square */
-	case nco_op_rmssdn: /* Take root of sdn mean of sum of squares to create root mean square for sdn */
-	  (void)nco_var_sqrt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val,var_prc_out[idx]->val);  
-	  break;
-	default:
-	  break;
-	} /* end switch */
+        switch(nco_op_typ){
+        case nco_op_sqravg: /* Square mean to create square of the mean (for sdn) */
+          (void)nco_var_mlt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->val,var_prc_out[idx]->val);
+          break;
+        case nco_op_sqrt: /* Take root of mean to create root mean */
+        case nco_op_rms: /* Take root of mean of sum of squares to create root mean square */
+        case nco_op_rmssdn: /* Take root of sdn mean of sum of squares to create root mean square for sdn */
+          (void)nco_var_sqrt(var_prc_out[idx]->type,var_prc_out[idx]->sz,var_prc_out[idx]->has_mss_val,var_prc_out[idx]->mss_val,var_prc_out[idx]->tally,var_prc_out[idx]->val,var_prc_out[idx]->val);  
+          break;
+        default:
+          break;
+        } /* end switch */
       } /* var_prc[idx]->is_crd_var */
       /* Free tally buffer */
       var_prc_out[idx]->tally=(long *)nco_free(var_prc_out[idx]->tally);
-      
+
       /* Revert any arithmetic promotion but leave unpacked (for now) */
       var_prc_out[idx]=nco_var_cnf_typ(var_prc_out[idx]->typ_upk,var_prc_out[idx]);
-      
+
+      /* Edit group name for output */
+      if(gpe) grp_out_fll=nco_gpe_evl(gpe,var_trv->grp_nm_fll); else grp_out_fll=(char *)strdup(var_trv->grp_nm_fll);
+
+      /* Obtain output group ID using full group name */
+      (void)nco_inq_grp_full_ncid(out_id,grp_out_fll,&grp_out_id);
+
+      /* Memory management after current extracted group */
+      if(grp_out_fll) grp_out_fll=(char *)nco_free(grp_out_fll);
+
+      /* Get variable ID */
+      (void)nco_inq_varid(grp_out_id,var_trv->nm,&var_out_id);
+
+      /* Store the output variable ID */
+      var_prc_out[idx]->id=var_out_id;
+
 #ifdef _OPENMP
 #pragma omp critical
 #endif /* _OPENMP */
       { /* begin OpenMP critical */
-	/* Copy average to output file then free averaging buffer */
-	if(var_prc_out[idx]->nbr_dim == 0){
-	  (void)nco_put_var1(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
-	}else{ /* end if variable is scalar */
-	  (void)nco_put_vara(out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
-	} /* end if variable is array */
+        /* Copy average to output file then free averaging buffer */
+        if(var_prc_out[idx]->nbr_dim == 0){
+          (void)nco_put_var1(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
+        }else{ /* end if variable is scalar */
+          (void)nco_put_vara(grp_out_id,var_prc_out[idx]->id,var_prc_out[idx]->srt,var_prc_out[idx]->cnt,var_prc_out[idx]->val.vp,var_prc_out[idx]->type);
+        } /* end if variable is array */
       } /* end OpenMP critical */
 
       if(flg_ddra){
-	/* DDRA diagnostics
-	   Usage:
-	   ncwa -O -C --mdl -a lat,lon,time -w lat ~/nco/data/in.nc ~/foo.nc
-	   ncwa -O -C --mdl -a lat,lon -w lat ${DATA}/nco_bm/stl_5km.nc ~/foo.nc
-	   ncwa -O -C --mdl -a lat,lon,time -w lat ${DATA}/nco_bm/gcm_T85.nc ~/foo.nc */
-
-	/* Assign remaining input for DDRA diagnostics */
-	ddra_info.lmn_nbr=var_prc[idx]->sz; /* [nbr] Variable size */
-	if(wgt) ddra_info.lmn_nbr_wgt=wgt->sz; /* [nbr] Weight size */
-	ddra_info.nco_op_typ=nco_op_typ; /* [enm] Operation type */
-	ddra_info.rnk_var=var_prc[idx]->nbr_dim; /* I [nbr] Variable rank (in input file) */
-	if(wgt) ddra_info.rnk_wgt=wgt->nbr_dim; /* [nbr] Rank of weight */
-	ddra_info.var_idx=idx; /* [enm] Index */
-	ddra_info.wrd_sz=nco_typ_lng(var_prc[idx]->type); /* [B] Bytes per element */
-
-	/* DDRA diagnostics */
-	rcd+=nco_ddra /* [fnc] Count operations */
-	  (var_prc[idx]->nm, /* I [sng] Variable name */
-	   wgt_nm, /* I [sng] Weight name */
-	   &ddra_info); /* I [sct] DDRA information */
+        /* DDRA diagnostics
+        Usage:
+        ncwa -O -C --mdl -a lat,lon,time -w lat ~/nco/data/in.nc ~/foo.nc
+        ncwa -O -C --mdl -a lat,lon -w lat ${DATA}/nco_bm/stl_5km.nc ~/foo.nc
+        ncwa -O -C --mdl -a lat,lon,time -w lat ${DATA}/nco_bm/gcm_T85.nc ~/foo.nc */
+
+        /* Assign remaining input for DDRA diagnostics */
+        ddra_info.lmn_nbr=var_prc[idx]->sz; /* [nbr] Variable size */
+        if(wgt) ddra_info.lmn_nbr_wgt=wgt->sz; /* [nbr] Weight size */
+        ddra_info.nco_op_typ=nco_op_typ; /* [enm] Operation type */
+        ddra_info.rnk_var=var_prc[idx]->nbr_dim; /* I [nbr] Variable rank (in input file) */
+        if(wgt) ddra_info.rnk_wgt=wgt->nbr_dim; /* [nbr] Rank of weight */
+        ddra_info.var_idx=idx; /* [enm] Index */
+        ddra_info.wrd_sz=nco_typ_lng(var_prc[idx]->type); /* [B] Bytes per element */
+
+        /* DDRA diagnostics */
+        rcd+=nco_ddra /* [fnc] Count operations */
+          (var_prc[idx]->nm, /* I [sng] Variable name */
+          wgt_nm, /* I [sng] Weight name */
+          &ddra_info); /* I [sct] DDRA information */
 
       } /* !flg_ddra */
 
       /* Free current output buffer */
       var_prc_out[idx]->val.vp=nco_free(var_prc_out[idx]->val.vp);
-      
+
+      /* Free possible weight/mask found */
+      if(wgt) wgt=nco_var_free(wgt);
+      if(wgt_out) wgt_out=nco_var_free(wgt_out);
+      if(msk) msk=nco_var_free(msk);
+      if(msk_out) msk_out=nco_var_free(msk_out);
+
     } /* end (OpenMP parallel for) loop over idx */
-    
-    if(dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
-    
+
+    if(nco_dbg_lvl >= nco_dbg_var) (void)fprintf(stderr,"\n");
+
     /* Close input netCDF file */
     for(thr_idx=0;thr_idx<thr_nbr;thr_idx++) nco_close(in_id_arr[thr_idx]);
-    
+
     /* Remove local copy of file */
-    if(FILE_RETRIEVED_FROM_REMOTE_LOCATION && REMOVE_REMOTE_FILES_AFTER_PROCESSING) (void)nco_fl_rm(fl_in);
-    
+    if(FL_RTR_RMT_LCN && RM_RMT_FL_PST_PRC) (void)nco_fl_rm(fl_in);
+
   } /* end loop over fl_idx */
-  
+
   /* Close output file and move it from temporary to permanent location */
   (void)nco_fl_out_cls(fl_out,fl_out_tmp,out_id);
-  
+
   /* Clean memory unless dirty memory allowed */
   if(flg_cln){
     /* ncwa-specific memory */
     if(dmn_avg_nbr > 0) dmn_avg=(dmn_sct **)nco_free(dmn_avg);
-    if(msk) msk=nco_var_free(msk);
     if(msk_nm) msk_nm=(char *)nco_free(msk_nm);
-    if(msk_out) msk_out=nco_var_free(msk_out);
     if(msk_cnd_sng) msk_cnd_sng=(char *)nco_free(msk_cnd_sng);
-    if(wgt) wgt=nco_var_free(wgt);
     if(wgt_avg) wgt_avg=nco_var_free(wgt_avg);
     if(wgt_nm) wgt_nm=(char *)nco_free(wgt_nm);
-    if(wgt_out) wgt_out=nco_var_free(wgt_out);
-    
-    /* Free lmt, lmt_dmn, and lmt_all_lst structures and lists */
-    for(idx=0;idx<nbr_dmn_fl;idx++)
-      for(jdx=0;jdx<lmt_all_lst[idx]->lmt_dmn_nbr;jdx++)
-	lmt_all_lst[idx]->lmt_dmn[jdx]=nco_lmt_free(lmt_all_lst[idx]->lmt_dmn[jdx]);
-    if(lmt_nbr > 0) lmt=nco_lmt_lst_free(lmt,lmt_nbr);
-
     /* NCO-generic clean-up */
     /* Free individual strings/arrays */
     if(cmd_ln) cmd_ln=(char *)nco_free(cmd_ln);
-    if(cnk_map_sng) cnk_map_sng=(char *)strdup(cnk_map_sng);
-    if(cnk_plc_sng) cnk_plc_sng=(char *)strdup(cnk_plc_sng);
+    if(cnk_map_sng) cnk_map_sng=(char *)nco_free(cnk_map_sng);
+    if(cnk_plc_sng) cnk_plc_sng=(char *)nco_free(cnk_plc_sng);
     if(fl_in) fl_in=(char *)nco_free(fl_in);
     if(fl_out) fl_out=(char *)nco_free(fl_out);
     if(fl_out_tmp) fl_out_tmp=(char *)nco_free(fl_out_tmp);
@@ -1108,7 +1126,6 @@ main(int argc,char **argv)
     if(fl_lst_in && fl_lst_abb) fl_lst_in=nco_sng_lst_free(fl_lst_in,1);
     if(fl_lst_abb) fl_lst_abb=nco_sng_lst_free(fl_lst_abb,abb_arg_nbr);
     if(var_lst_in_nbr > 0) var_lst_in=nco_sng_lst_free(var_lst_in,var_lst_in_nbr);
-
     /* Free chunking information */
     for(idx=0;idx<cnk_nbr;idx++) cnk_arg[idx]=(char *)nco_free(cnk_arg[idx]);
     if(cnk_nbr > 0) cnk=nco_cnk_lst_free(cnk,cnk_nbr);
@@ -1116,7 +1133,7 @@ main(int argc,char **argv)
     if(nbr_dmn_xtr > 0) dim=nco_dmn_lst_free(dim,nbr_dmn_xtr);
     if(nbr_dmn_out > 0) dmn_out=nco_dmn_lst_free(dmn_out,nbr_dmn_out);
     /* Free variable lists */
-    if(nbr_xtr > 0) var=nco_var_lst_free(var,nbr_xtr); 
+    if(xtr_nbr > 0) var=nco_var_lst_free(var,xtr_nbr); 
     /* ncwa uses nco_var_lst_free() on var_prc_out because var_out has dangling pointers */
     if(nbr_var_fix > 0) var_fix_out=nco_var_lst_free(var_fix_out,nbr_var_fix);
     if(nbr_var_prc > 0) var_prc_out=nco_var_lst_free(var_prc_out,nbr_var_prc);
@@ -1124,11 +1141,14 @@ main(int argc,char **argv)
     var_fix=(var_sct **)nco_free(var_fix);
     var_out=(var_sct **)nco_free(var_out);
   } /* !flg_cln */
-  
+
   /* End timer */ 
   ddra_info.tmr_flg=nco_tmr_end; /* [enm] Timer flag */
   rcd+=nco_ddra((char *)NULL,(char *)NULL,&ddra_info);
-  
+
+  /* Free traversal table */
+  trv_tbl_free(trv_tbl); 
+
   nco_exit_gracefully();
   return EXIT_SUCCESS;
 } /* end main() */
diff --git a/src/nco_c++/Makefile.in b/src/nco_c++/Makefile.in
index d19660b..fcd7fe9 100644
--- a/src/nco_c++/Makefile.in
+++ b/src/nco_c++/Makefile.in
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -15,10 +14,55 @@
 
 @SET_MAKE@
 
-# $Header: /cvsroot/nco/nco/src/nco_c++/Makefile.in,v 1.78 2011/11/15 02:18:57 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco_c++/Makefile.in,v 1.108 2013/11/06 18:12:24 zender Exp $ -*-makefile-*-
 
 
 VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -41,11 +85,16 @@ target_triplet = @target@
 check_PROGRAMS = $(am__EXEEXT_1)
 TESTS = $(am__EXEEXT_1)
 subdir = src/nco_c++
-DIST_COMMON = README $(include_HEADERS) $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in ChangeLog INSTALL TODO
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+	$(top_srcdir)/autobld/mkinstalldirs \
+	$(top_srcdir)/autobld/depcomp $(include_HEADERS) \
+	$(top_srcdir)/autobld/test-driver ChangeLog INSTALL README \
+	TODO
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
-	$(top_srcdir)/configure.in
+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/autobld/mkinstalldirs
@@ -73,6 +122,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 libnco_c___la_LIBADD =
@@ -81,36 +136,260 @@ am_libnco_c___la_OBJECTS = libnco_c___la-nco_att.lo \
 	libnco_c___la-nco_hgh.lo libnco_c___la-nco_utl.lo \
 	libnco_c___la-nco_var.lo
 libnco_c___la_OBJECTS = $(am_libnco_c___la_OBJECTS)
-libnco_c___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
-	$(CXXFLAGS) $(libnco_c___la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libnco_c___la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+	$(AM_CXXFLAGS) $(CXXFLAGS) $(libnco_c___la_LDFLAGS) $(LDFLAGS) \
+	-o $@
 am__EXEEXT_1 = tst$(EXEEXT)
 am_tst_OBJECTS = tst.$(OBJEXT)
 tst_OBJECTS = $(am_tst_OBJECTS)
 tst_DEPENDENCIES =
+AM_V_P = $(am__v_P_ at AM_V@)
+am__v_P_ = $(am__v_P_ at AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/autobld/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(libnco_c___la_SOURCES) $(tst_SOURCES)
 DIST_SOURCES = $(libnco_c___la_SOURCES) $(tst_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 HEADERS = $(include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red=''; \
+    grn=''; \
+    lgn=''; \
+    blu=''; \
+    mgn=''; \
+    brg=''; \
+    std=''; \
+  fi; \
+}
+am__recheck_rx = ^[ 	]*:recheck:[ 	]*
+am__global_test_result_rx = ^[ 	]*:global-test-result:[ 	]*
+am__copy_in_global_log_rx = ^[ 	]*:copy-in-global-log:[ 	]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+	    recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[ 	]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);					\
+$(am__vpath_adj_setup) $(am__vpath_adj)			\
+$(am__tty_colors);					\
+srcdir=$(srcdir); export srcdir;			\
+case "$@" in						\
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;	\
+    *) am__odir=.;; 					\
+esac;							\
+test "x$$am__odir" = x"." || test -d "$$am__odir" 	\
+  || $(MKDIR_P) "$$am__odir" || exit $$?;		\
+if test -f "./$$f"; then dir=./;			\
+elif test -f "$$f"; then dir=;				\
+else dir="$(srcdir)/"; fi;				\
+tst=$$dir$$f; log='$@'; 				\
+if test -n '$(DISABLE_HARD_ERRORS)'; then		\
+  am__enable_hard_errors=no; 				\
+else							\
+  am__enable_hard_errors=yes; 				\
+fi; 							\
+case " $(XFAIL_TESTS) " in				\
+  *[\ \	]$$f[\ \	]* | *[\ \	]$$dir$$f[\ \	]*) \
+    am__expect_failure=yes;;				\
+  *)							\
+    am__expect_failure=no;;				\
+esac; 							\
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/autobld/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT at .log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/autobld/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+	$(TEST_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 ANTLR_ROOT = @ANTLR_ROOT@
 AR = @AR@
 AUTOCONF = @AUTOCONF@
@@ -130,6 +409,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DOC_FOLDER = @DOC_FOLDER@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -171,6 +451,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -217,6 +498,7 @@ datarootdir = @datarootdir@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
+have_makeinfo = @have_makeinfo@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -265,7 +547,7 @@ MAINTAINERCLEANFILES = Makefile.in in.nc
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .cc .lo .o .obj
+.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
@@ -296,9 +578,9 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -306,6 +588,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -321,14 +605,17 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
 	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" != "$$p" || dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libnco_c++.la: $(libnco_c___la_OBJECTS) $(libnco_c___la_DEPENDENCIES) 
-	$(libnco_c___la_LINK) -rpath $(libdir) $(libnco_c___la_OBJECTS) $(libnco_c___la_LIBADD) $(LIBS)
+	@list='$(lib_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libnco_c++.la: $(libnco_c___la_OBJECTS) $(libnco_c___la_DEPENDENCIES) $(EXTRA_libnco_c___la_DEPENDENCIES) 
+	$(AM_V_CXXLD)$(libnco_c___la_LINK) -rpath $(libdir) $(libnco_c___la_OBJECTS) $(libnco_c___la_LIBADD) $(LIBS)
 
 clean-checkPROGRAMS:
 	@list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
@@ -338,9 +625,10 @@ clean-checkPROGRAMS:
 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 	echo " rm -f" $$list; \
 	rm -f $$list
-tst$(EXEEXT): $(tst_OBJECTS) $(tst_DEPENDENCIES) 
+
+tst$(EXEEXT): $(tst_OBJECTS) $(tst_DEPENDENCIES) $(EXTRA_tst_DEPENDENCIES) 
 	@rm -f tst$(EXEEXT)
-	$(CXXLINK) $(tst_OBJECTS) $(tst_LDADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(tst_OBJECTS) $(tst_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -357,67 +645,67 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tst.Po at am__quote@
 
 .cc.o:
- at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cc.obj:
- at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cc.lo:
- at am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 libnco_c___la-nco_att.lo: nco_att.cc
- at am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_att.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_att.Tpo -c -o libnco_c___la-nco_att.lo `test -f 'nco_att.cc' || echo '$(srcdir)/'`nco_att.cc
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/libnco_c___la-nco_att.Tpo $(DEPDIR)/libnco_c___la-nco_att.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='nco_att.cc' object='libnco_c___la-nco_att.lo' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_att.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_att.Tpo -c -o libnco_c___la-nco_att.lo `test -f 'nco_att.cc' || echo '$(srcdir)/'`nco_att.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnco_c___la-nco_att.Tpo $(DEPDIR)/libnco_c___la-nco_att.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nco_att.cc' object='libnco_c___la-nco_att.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_att.lo `test -f 'nco_att.cc' || echo '$(srcdir)/'`nco_att.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_att.lo `test -f 'nco_att.cc' || echo '$(srcdir)/'`nco_att.cc
 
 libnco_c___la-nco_dmn.lo: nco_dmn.cc
- at am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_dmn.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_dmn.Tpo -c -o libnco_c___la-nco_dmn.lo `test -f 'nco_dmn.cc' || echo '$(srcdir)/'`nco_dmn.cc
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/libnco_c___la-nco_dmn.Tpo $(DEPDIR)/libnco_c___la-nco_dmn.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='nco_dmn.cc' object='libnco_c___la-nco_dmn.lo' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_dmn.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_dmn.Tpo -c -o libnco_c___la-nco_dmn.lo `test -f 'nco_dmn.cc' || echo '$(srcdir)/'`nco_dmn.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnco_c___la-nco_dmn.Tpo $(DEPDIR)/libnco_c___la-nco_dmn.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nco_dmn.cc' object='libnco_c___la-nco_dmn.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_dmn.lo `test -f 'nco_dmn.cc' || echo '$(srcdir)/'`nco_dmn.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_dmn.lo `test -f 'nco_dmn.cc' || echo '$(srcdir)/'`nco_dmn.cc
 
 libnco_c___la-nco_fl.lo: nco_fl.cc
- at am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_fl.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_fl.Tpo -c -o libnco_c___la-nco_fl.lo `test -f 'nco_fl.cc' || echo '$(srcdir)/'`nco_fl.cc
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/libnco_c___la-nco_fl.Tpo $(DEPDIR)/libnco_c___la-nco_fl.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='nco_fl.cc' object='libnco_c___la-nco_fl.lo' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_fl.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_fl.Tpo -c -o libnco_c___la-nco_fl.lo `test -f 'nco_fl.cc' || echo '$(srcdir)/'`nco_fl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnco_c___la-nco_fl.Tpo $(DEPDIR)/libnco_c___la-nco_fl.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nco_fl.cc' object='libnco_c___la-nco_fl.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_fl.lo `test -f 'nco_fl.cc' || echo '$(srcdir)/'`nco_fl.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_fl.lo `test -f 'nco_fl.cc' || echo '$(srcdir)/'`nco_fl.cc
 
 libnco_c___la-nco_hgh.lo: nco_hgh.cc
- at am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_hgh.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_hgh.Tpo -c -o libnco_c___la-nco_hgh.lo `test -f 'nco_hgh.cc' || echo '$(srcdir)/'`nco_hgh.cc
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/libnco_c___la-nco_hgh.Tpo $(DEPDIR)/libnco_c___la-nco_hgh.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='nco_hgh.cc' object='libnco_c___la-nco_hgh.lo' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_hgh.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_hgh.Tpo -c -o libnco_c___la-nco_hgh.lo `test -f 'nco_hgh.cc' || echo '$(srcdir)/'`nco_hgh.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnco_c___la-nco_hgh.Tpo $(DEPDIR)/libnco_c___la-nco_hgh.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nco_hgh.cc' object='libnco_c___la-nco_hgh.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_hgh.lo `test -f 'nco_hgh.cc' || echo '$(srcdir)/'`nco_hgh.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_hgh.lo `test -f 'nco_hgh.cc' || echo '$(srcdir)/'`nco_hgh.cc
 
 libnco_c___la-nco_utl.lo: nco_utl.cc
- at am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_utl.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_utl.Tpo -c -o libnco_c___la-nco_utl.lo `test -f 'nco_utl.cc' || echo '$(srcdir)/'`nco_utl.cc
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/libnco_c___la-nco_utl.Tpo $(DEPDIR)/libnco_c___la-nco_utl.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='nco_utl.cc' object='libnco_c___la-nco_utl.lo' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_utl.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_utl.Tpo -c -o libnco_c___la-nco_utl.lo `test -f 'nco_utl.cc' || echo '$(srcdir)/'`nco_utl.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnco_c___la-nco_utl.Tpo $(DEPDIR)/libnco_c___la-nco_utl.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nco_utl.cc' object='libnco_c___la-nco_utl.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_utl.lo `test -f 'nco_utl.cc' || echo '$(srcdir)/'`nco_utl.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_utl.lo `test -f 'nco_utl.cc' || echo '$(srcdir)/'`nco_utl.cc
 
 libnco_c___la-nco_var.lo: nco_var.cc
- at am__fastdepCXX_TRUE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_var.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_var.Tpo -c -o libnco_c___la-nco_var.lo `test -f 'nco_var.cc' || echo '$(srcdir)/'`nco_var.cc
- at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/libnco_c___la-nco_var.Tpo $(DEPDIR)/libnco_c___la-nco_var.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='nco_var.cc' object='libnco_c___la-nco_var.lo' libtool=yes @AMDEPBACKSLASH@
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libnco_c___la-nco_var.lo -MD -MP -MF $(DEPDIR)/libnco_c___la-nco_var.Tpo -c -o libnco_c___la-nco_var.lo `test -f 'nco_var.cc' || echo '$(srcdir)/'`nco_var.cc
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libnco_c___la-nco_var.Tpo $(DEPDIR)/libnco_c___la-nco_var.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='nco_var.cc' object='libnco_c___la-nco_var.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@	$(LIBTOOL)  --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_var.lo `test -f 'nco_var.cc' || echo '$(srcdir)/'`nco_var.cc
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libnco_c___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libnco_c___la-nco_var.lo `test -f 'nco_var.cc' || echo '$(srcdir)/'`nco_var.cc
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -426,8 +714,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -441,30 +732,17 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
 	set x; \
 	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	$(am__define_uniq_tagged_files); \
 	shift; \
 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
@@ -476,15 +754,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	      $$unique; \
 	  fi; \
 	fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
 	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 	     $$unique
@@ -493,101 +767,187 @@ GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-check-TESTS: $(TESTS)
-	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
-	srcdir=$(srcdir); export srcdir; \
-	list=' $(TESTS) '; \
-	$(am__tty_colors); \
-	if test -n "$$list"; then \
-	  for tst in $$list; do \
-	    if test -f ./$$tst; then dir=./; \
-	    elif test -f $$tst; then dir=; \
-	    else dir="$(srcdir)/"; fi; \
-	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xpass=`expr $$xpass + 1`; \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=XPASS; \
-	      ;; \
-	      *) \
-		col=$$grn; res=PASS; \
-	      ;; \
-	      esac; \
-	    elif test $$? -ne 77; then \
-	      all=`expr $$all + 1`; \
-	      case " $(XFAIL_TESTS) " in \
-	      *[\ \	]$$tst[\ \	]*) \
-		xfail=`expr $$xfail + 1`; \
-		col=$$lgn; res=XFAIL; \
-	      ;; \
-	      *) \
-		failed=`expr $$failed + 1`; \
-		col=$$red; res=FAIL; \
-	      ;; \
-	      esac; \
-	    else \
-	      skip=`expr $$skip + 1`; \
-	      col=$$blu; res=SKIP; \
-	    fi; \
-	    echo "$${col}$$res$${std}: $$tst"; \
-	  done; \
-	  if test "$$all" -eq 1; then \
-	    tests="test"; \
-	    All=""; \
-	  else \
-	    tests="tests"; \
-	    All="All "; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+	rm -f $< $@
+	$(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+	@:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+	@$(am__set_TESTS_bases); \
+	am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+	redo_bases=`for i in $$bases; do \
+	              am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+	            done`; \
+	if test -n "$$redo_bases"; then \
+	  redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+	  redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+	  if $(am__make_dryrun); then :; else \
+	    rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
 	  fi; \
-	  if test "$$failed" -eq 0; then \
-	    if test "$$xfail" -eq 0; then \
-	      banner="$$All$$all $$tests passed"; \
-	    else \
-	      if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-	      banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-	    fi; \
-	  else \
-	    if test "$$xpass" -eq 0; then \
-	      banner="$$failed of $$all $$tests failed"; \
+	fi; \
+	if test -n "$$am__remaking_logs"; then \
+	  echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+	       "recursion detected" >&2; \
+	else \
+	  am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+	fi; \
+	if $(am__make_dryrun); then :; else \
+	  st=0;  \
+	  errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+	  for i in $$redo_bases; do \
+	    test -f $$i.trs && test -r $$i.trs \
+	      || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+	    test -f $$i.log && test -r $$i.log \
+	      || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+	  done; \
+	  test $$st -eq 0 || exit 1; \
+	fi
+	@$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+	ws='[ 	]'; \
+	results=`for b in $$bases; do echo $$b.trs; done`; \
+	test -n "$$results" || results=/dev/null; \
+	all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+	pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+	fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+	skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+	xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+	xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+	error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+	if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+	  success=true; \
+	else \
+	  success=false; \
+	fi; \
+	br='==================='; br=$$br$$br$$br$$br; \
+	result_count () \
+	{ \
+	    if test x"$$1" = x"--maybe-color"; then \
+	      maybe_colorize=yes; \
+	    elif test x"$$1" = x"--no-color"; then \
+	      maybe_colorize=no; \
 	    else \
-	      if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-	      banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+	      echo "$@: invalid 'result_count' usage" >&2; exit 4; \
 	    fi; \
-	  fi; \
-	  dashes="$$banner"; \
-	  skipped=""; \
-	  if test "$$skip" -ne 0; then \
-	    if test "$$skip" -eq 1; then \
-	      skipped="($$skip test was not run)"; \
+	    shift; \
+	    desc=$$1 count=$$2; \
+	    if test $$maybe_colorize = yes && test $$count -gt 0; then \
+	      color_start=$$3 color_end=$$std; \
 	    else \
-	      skipped="($$skip tests were not run)"; \
+	      color_start= color_end=; \
 	    fi; \
-	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$skipped"; \
-	  fi; \
-	  report=""; \
-	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-	    report="Please report to $(PACKAGE_BUGREPORT)"; \
-	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-	      dashes="$$report"; \
-	  fi; \
-	  dashes=`echo "$$dashes" | sed s/./=/g`; \
-	  if test "$$failed" -eq 0; then \
-	    echo "$$grn$$dashes"; \
-	  else \
-	    echo "$$red$$dashes"; \
-	  fi; \
-	  echo "$$banner"; \
-	  test -z "$$skipped" || echo "$$skipped"; \
-	  test -z "$$report" || echo "$$report"; \
-	  echo "$$dashes$$std"; \
-	  test "$$failed" -eq 0; \
-	else :; fi
+	    echo "$${color_start}# $$desc $$count$${color_end}"; \
+	}; \
+	create_testsuite_report () \
+	{ \
+	  result_count $$1 "TOTAL:" $$all   "$$brg"; \
+	  result_count $$1 "PASS: " $$pass  "$$grn"; \
+	  result_count $$1 "SKIP: " $$skip  "$$blu"; \
+	  result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+	  result_count $$1 "FAIL: " $$fail  "$$red"; \
+	  result_count $$1 "XPASS:" $$xpass "$$red"; \
+	  result_count $$1 "ERROR:" $$error "$$mgn"; \
+	}; \
+	{								\
+	  echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |	\
+	    $(am__rst_title);						\
+	  create_testsuite_report --no-color;				\
+	  echo;								\
+	  echo ".. contents:: :depth: 2";				\
+	  echo;								\
+	  for b in $$bases; do echo $$b; done				\
+	    | $(am__create_global_log);					\
+	} >$(TEST_SUITE_LOG).tmp || exit 1;				\
+	mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);			\
+	if $$success; then						\
+	  col="$$grn";							\
+	 else								\
+	  col="$$red";							\
+	  test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);		\
+	fi;								\
+	echo "$${col}$$br$${std}"; 					\
+	echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";	\
+	echo "$${col}$$br$${std}"; 					\
+	create_testsuite_report --maybe-color;				\
+	echo "$$col$$br$$std";						\
+	if $$success; then :; else					\
+	  echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";		\
+	  if test -n "$(PACKAGE_BUGREPORT)"; then			\
+	    echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}";	\
+	  fi;								\
+	  echo "$$col$$br$$std";					\
+	fi;								\
+	$$success || exit 1
+
+check-TESTS:
+	@list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+	@list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+	log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+	exit $$?;
+recheck: all $(check_PROGRAMS)
+	@test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+	@set +e; $(am__set_TESTS_bases); \
+	bases=`for i in $$bases; do echo $$i; done \
+	         | $(am__list_recheck_tests)` || exit 1; \
+	log_list=`for i in $$bases; do echo $$i.log; done`; \
+	log_list=`echo $$log_list`; \
+	$(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+	        am__force_recheck=am--force-recheck \
+	        TEST_LOGS="$$log_list"; \
+	exit $$?
+tst.log: tst$(EXEEXT)
+	@p='tst$(EXEEXT)'; \
+	b='tst'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+	@p='$<'; \
+	$(am__set_b); \
+	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
+ at am__EXEEXT_TRUE@.test$(EXEEXT).log:
+ at am__EXEEXT_TRUE@	@p='$<'; \
+ at am__EXEEXT_TRUE@	$(am__set_b); \
+ at am__EXEEXT_TRUE@	$(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+ at am__EXEEXT_TRUE@	--log-file $$b.log --trs-file $$b.trs \
+ at am__EXEEXT_TRUE@	$(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+ at am__EXEEXT_TRUE@	"$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -638,11 +998,19 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
+	-test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+	-test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+	-test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -728,21 +1096,21 @@ uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
 	clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
-	clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dvi install-dvi-am \
-	install-exec install-exec-am install-html install-html-am \
-	install-includeHEADERS install-info install-info-am \
-	install-libLTLIBRARIES install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-libtool cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-includeHEADERS install-info \
+	install-info-am install-libLTLIBRARIES install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-includeHEADERS \
-	uninstall-libLTLIBRARIES
+	recheck tags tags-am uninstall uninstall-am \
+	uninstall-includeHEADERS uninstall-libLTLIBRARIES
 
 
 all: ${test_data}
diff --git a/src/nco_c++/Makefile.old b/src/nco_c++/Makefile.old
index b9f867f..14e2345 100644
--- a/src/nco_c++/Makefile.old
+++ b/src/nco_c++/Makefile.old
@@ -1,9 +1,9 @@
-# $Header: /cvsroot/nco/nco/src/nco_c++/Makefile.old,v 1.99 2012/01/01 20:51:54 zender Exp $ -*-makefile-*-
+# $Header: /cvsroot/nco/nco/src/nco_c++/Makefile.old,v 1.104 2013/06/08 06:36:57 zender Exp $ -*-makefile-*-
 
 # Purpose: Makefile for libnco_c++ module nco_c++
 # Requires GNU Make---AT&T Make chokes on GNU syntax
 
-# Copyright (C) 1994--2012 Charlie Zender
+# Copyright (C) 1994--2013 Charlie Zender
 # License: GNU General Public License (GPL) Version 3
 # See http://www.gnu.org/copyleft/gpl.html for full license text
 
@@ -24,7 +24,7 @@
 # 64-bit ABI netCDF3 on NCAR AIX systems (bluefire):
 # cd ${HOME}/nco/src/nco_c++;NETCDF_LIB='/usr/local/lib64/r4i4' make -f Makefile.old --jobs=1 ABI=64 all;cd -
 # 64-bit ABI netCDF4 on NCAR AIX systems (bluefire):
-# cd ${HOME}/nco/src/nco_c++;CURL_LIB='/contrib/curl/7.21.2/lib' HDF5_ROOT='/contrib/hdf5-1.8.6_seq' NETCDF_ROOT='/contrib/netcdf-4.1.2_seq' SZ_LIB='/contrib/szip/lib' make -f Makefile.old --jobs=1 ABI=64 NETCDF4=Y OPTS=D SZ=Y all;cd -
+# cd ${HOME}/nco/src/nco_c++;CURL_LIB='/contrib/curl/7.21.2/lib' HDF5_ROOT='/contrib/hdf5-1.8.7_seq' NETCDF_ROOT='/contrib/netcdf/4.1.3_seq' SZ_LIB='/contrib/szip/lib' make -f Makefile.old --jobs=1 ABI=64 NETCDF4=Y OPTS=D SZ=Y all;cd -
 
 # In rule 
 # foobar.o : foo.c bar.c
@@ -373,7 +373,17 @@ ifneq (${UDUNITS_LIB},${NETCDF_LIB})
  NC_LDFLAGS += -L${UDUNITS_LIB}
 endif # end if
 ifeq (${UDUNITS2},Y)
+# 20130607: -lexpat needed on .deb systems, not on RPM systems
+UDUNITS_RPM_DRC := /usr/include/udunits2
+UDUNITS_RPM_TST := $(shell ls ${UDUNITS_RPM_DRC}/udunits2.h)
+ifeq (${UDUNITS_RPM_TST},${UDUNITS_RPM_DRC}/udunits2.h)
+ NETCDF_INC += -I${UDUNITS_RPM_DRC}
+endif # end if
+ifneq (${UDUNITS_RPM_TST},${UDUNITS_RPM_DRC}/udunits2.h)
  NC_LIBS += -ludunits2 -lexpat
+else # end if UDUNITS2 Fedora
+ NC_LIBS += -ludunits2
+endif # end if UDUNITS2 Fedora
 else
  NC_LIBS += -ludunits
 endif # end if UDUNITS2
diff --git a/src/nco_c++/README b/src/nco_c++/README
index aa7db0f..c21a09e 100644
--- a/src/nco_c++/README
+++ b/src/nco_c++/README
@@ -1,4 +1,4 @@
-$Header: /cvsroot/nco/nco/src/nco_c++/README,v 1.5 2004/06/25 18:47:34 zender Exp $
+$Header: /cvsroot/nco/nco/src/nco_c++/README,v 1.6 2012/06/14 20:20:14 zender Exp $
 
 Purpose: Document libnco_c++
 
@@ -12,14 +12,14 @@ I'm very interested in comments, critcisms, and contributions to
 the basic design and API. You can download the latest version from 
 the NCO CVS repository on Sourceforge
 
-cvs -d:pserver:anonymous at cvs.nco.sourceforge.net:/cvsroot/nco login
-cvs -z3 -d:pserver:anonymous at cvs.nco.sourceforge.net:/cvsroot/nco co -kk nco
+cvs -d:pserver:anonymous at cvs.nco.sf.net:/cvsroot/nco login
+cvs -z3 -d:pserver:anonymous at cvs.nco.sf.net:/cvsroot/nco co -kk nco
 
 All code is in the nco/src/nco_c++ directory, including the
 all important TODO and ChangeLog files. If you want to contribute
 patches or comments the appropriate venue is the developer's forum
 
-http://sourceforge.net/forum/forum.php?forum_id=9831 
+http://sf.net/forum/forum.php?forum_id=9831 
 
 Those with good patches to contribute will get CVS write access. 
 What follows is a description of the software design and status.
diff --git a/src/nco_c++/libnco_c++.hh b/src/nco_c++/libnco_c++.hh
index fba6f7c..4d8bf5f 100644
--- a/src/nco_c++/libnco_c++.hh
+++ b/src/nco_c++/libnco_c++.hh
@@ -1,14 +1,14 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/libnco_c++.hh,v 1.16 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/libnco_c++.hh,v 1.18 2013/10/22 03:03:55 zender Exp $ 
 
 // Purpose: Prototypes, typedefs, and global variables for libnco_c++
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
 /* libnco_c++.hh headers depend only on system headers
    Thus libnco_c++.a may be built independently of any other libraries
-   However, user must supply prg_nm_get() and dbg_lvl_get() */
+   However, user must supply nco_prg_nm_get() and nco_dbg_lvl_get() */
 
 // Usage:
 // #include <libnco_c++.hh> // C++ interface to netCDF C library
diff --git a/src/nco_c++/nco_att.cc b/src/nco_c++/nco_att.cc
index 39e80a1..7cac5ce 100644
--- a/src/nco_c++/nco_att.cc
+++ b/src/nco_c++/nco_att.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_att.cc,v 1.20 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_att.cc,v 1.21 2013/01/13 06:07:49 zender Exp $ 
 
 // Implementation (declaration) of C++ interface to netCDF attribute routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_att.hh b/src/nco_c++/nco_att.hh
index 82f1216..89b55f8 100644
--- a/src/nco_c++/nco_att.hh
+++ b/src/nco_c++/nco_att.hh
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_att.hh,v 1.18 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_att.hh,v 1.19 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Description (definition) of C++ interface to netCDF attribute routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_dmn.cc b/src/nco_c++/nco_dmn.cc
index 49ec31a..ea1fed4 100644
--- a/src/nco_c++/nco_dmn.cc
+++ b/src/nco_c++/nco_dmn.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_dmn.cc,v 1.15 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_dmn.cc,v 1.16 2013/01/13 06:07:49 zender Exp $ 
 
 // Implementation (declaration) of C++ interface to netCDF dimension routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_dmn.hh b/src/nco_c++/nco_dmn.hh
index fa4fd66..658037a 100644
--- a/src/nco_c++/nco_dmn.hh
+++ b/src/nco_c++/nco_dmn.hh
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_dmn.hh,v 1.14 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_dmn.hh,v 1.15 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Description (definition) of C++ interface to netCDF dimension routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_fl.cc b/src/nco_c++/nco_fl.cc
index e711e76..965639c 100644
--- a/src/nco_c++/nco_fl.cc
+++ b/src/nco_c++/nco_fl.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_fl.cc,v 1.15 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_fl.cc,v 1.16 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Implementation (declaration) of C++ interface to netCDF file-level routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_fl.hh b/src/nco_c++/nco_fl.hh
index 367cad1..8e4e609 100644
--- a/src/nco_c++/nco_fl.hh
+++ b/src/nco_c++/nco_fl.hh
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_fl.hh,v 1.14 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_fl.hh,v 1.15 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Description (definition) of C++ interface to netCDF file-level routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_hgh.cc b/src/nco_c++/nco_hgh.cc
index a97611f..d6593dc 100644
--- a/src/nco_c++/nco_hgh.cc
+++ b/src/nco_c++/nco_hgh.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_hgh.cc,v 1.17 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_hgh.cc,v 1.19 2013/10/22 03:03:56 zender Exp $ 
 
 // Implementation (declaration) of C++ interface to high-level NCO utilities
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -49,9 +49,9 @@ nco_var_dfn // [fnc] Define variables in output netCDF file
   // Local
   register long idx; // [idx] Counting index
   const std::string sbr_nm("nco_var_dfn"); // [sng] Name of subroutine
-  const unsigned short int dbg_lvl(0); // [sng] Debugging level
-  if(dbg_lvl >= nco_dbg_sbr) std::cerr << "DEBUG: Entering " << sbr_nm << "()..." << std::endl;
-  if(dbg_lvl >= nco_dbg_sbr) std::cerr << "DEBUG:"+sbr_nm+"() reports var_mtd_nbr = " << var_mtd_nbr << std::endl;
+  const unsigned short int nco_dbg_lvl(0); // [sng] Debugging level
+  if(nco_dbg_lvl >= nco_dbg_sbr) std::cerr << "DEBUG: Entering " << sbr_nm << "()..." << std::endl;
+  if(nco_dbg_lvl >= nco_dbg_sbr) std::cerr << "DEBUG:"+sbr_nm+"() reports var_mtd_nbr = " << var_mtd_nbr << std::endl;
 
   // Allow file to already be in define mode
   rcd=nco_redef(nc_id,NC_EINDEFINE); // [fnc] Put open netCDF dataset into define mode
@@ -62,7 +62,7 @@ nco_var_dfn // [fnc] Define variables in output netCDF file
     if(var_mtd[idx].dmn_nbr <= dmn_nbr_max){
 
       // Sanity check before output
-      if(dbg_lvl >= nco_dbg_io){
+      if(nco_dbg_lvl >= nco_dbg_io){
 	std::string dmn_nm;
 	size_t dmn_sz;
 	for(dmn_idx=0;dmn_idx<var_mtd[idx].dmn_nbr;dmn_idx++){
@@ -96,7 +96,7 @@ nco_var_dfn // [fnc] Define variables in output netCDF file
   // Be in data mode on exit so values may be written
   rcd=nco_enddef(nc_id); // [fnc] Leave define mode
 
-  if(dbg_lvl >= nco_dbg_sbr) std::cerr << "DEBUG: Exiting " << sbr_nm << "()..." << std::endl;
+  if(nco_dbg_lvl >= nco_dbg_sbr) std::cerr << "DEBUG: Exiting " << sbr_nm << "()..." << std::endl;
   return rcd; // [enm] Return success code
 } // end nco_var_dfn()
 
diff --git a/src/nco_c++/nco_hgh.hh b/src/nco_c++/nco_hgh.hh
index fde5366..6e4cf02 100644
--- a/src/nco_c++/nco_hgh.hh
+++ b/src/nco_c++/nco_hgh.hh
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_hgh.hh,v 1.14 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_hgh.hh,v 1.15 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Description (definition) of high-level NCO routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_utl.cc b/src/nco_c++/nco_utl.cc
index 387c309..bb61bd4 100644
--- a/src/nco_c++/nco_utl.cc
+++ b/src/nco_c++/nco_utl.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_utl.cc,v 1.26 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_utl.cc,v 1.27 2013/01/13 06:07:49 zender Exp $ 
 
 // Implementation (declaration) of C++ interface utilities for netCDF routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_utl.hh b/src/nco_c++/nco_utl.hh
index 7234393..d1dbc33 100644
--- a/src/nco_c++/nco_utl.hh
+++ b/src/nco_c++/nco_utl.hh
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_utl.hh,v 1.26 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_utl.hh,v 1.27 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Description (definition) of C++ interface utilities for netCDF routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_var.cc b/src/nco_c++/nco_var.cc
index 6848104..f1c5661 100644
--- a/src/nco_c++/nco_var.cc
+++ b/src/nco_c++/nco_var.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_var.cc,v 1.34 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_var.cc,v 1.35 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Implementation (declaration) of C++ interface to netCDF variable routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/nco_var.hh b/src/nco_c++/nco_var.hh
index 1de32fa..d20667f 100644
--- a/src/nco_c++/nco_var.hh
+++ b/src/nco_c++/nco_var.hh
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/nco_var.hh,v 1.30 2012/01/01 20:51:54 zender Exp $ 
+// $Header: /cvsroot/nco/nco/src/nco_c++/nco_var.hh,v 1.31 2013/01/13 06:07:49 zender Exp $ 
 
 // Purpose: Description (definition) of C++ interface to netCDF variable routines
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
diff --git a/src/nco_c++/tst.cc b/src/nco_c++/tst.cc
index 74f002c..41cdf8c 100644
--- a/src/nco_c++/tst.cc
+++ b/src/nco_c++/tst.cc
@@ -1,8 +1,8 @@
-// $Header: /cvsroot/nco/nco/src/nco_c++/tst.cc,v 1.35 2012/01/01 20:51:54 zender Exp $
+// $Header: /cvsroot/nco/nco/src/nco_c++/tst.cc,v 1.39 2013/10/22 03:12:11 zender Exp $
 
 // Purpose: Test for C++ programs using libnco_c++ API
 
-/* Copyright (C) 2001--2012 Charlie Zender
+/* Copyright (C) 2001--2013 Charlie Zender
    License: GNU General Public License (GPL) Version 3
    See http://www.gnu.org/copyleft/gpl.html for full license text */
 
@@ -58,10 +58,10 @@ int main(int argc,char **argv)
   long sz_nbr(1); // [nbr] Number of sizes
   register long idx; // [idx] Counting index
 
-  const std::string CVS_Date("$Date: 2012/01/01 20:51:54 $"); // [sng] CVS date string
-  const std::string CVS_Header("$Header: /cvsroot/nco/nco/src/nco_c++/tst.cc,v 1.35 2012/01/01 20:51:54 zender Exp $"); // [sng] CVS header string
-  const std::string CVS_Id("$Id: tst.cc,v 1.35 2012/01/01 20:51:54 zender Exp $"); // [sng] CVS identification string
-  const std::string CVS_Revision("$Revision: 1.35 $"); // [sng] CVS revision string
+  const std::string CVS_Date("$Date: 2013/10/22 03:12:11 $"); // [sng] CVS date string
+  const std::string CVS_Header("$Header: /cvsroot/nco/nco/src/nco_c++/tst.cc,v 1.39 2013/10/22 03:12:11 zender Exp $"); // [sng] CVS header string
+  const std::string CVS_Id("$Id: tst.cc,v 1.39 2013/10/22 03:12:11 zender Exp $"); // [sng] CVS identification string
+  const std::string CVS_Revision("$Revision: 1.39 $"); // [sng] CVS revision string
   const std::string date_cvs(CVS_Date.length() > 7 ? CVS_Date.substr(7,19) : static_cast<std::string>("Unknown")); // [sng] Date from CVS
   const std::string sbr_nm("main"); // [sng] Subroutine name
   const std::string prg_nm("libnco_c++"); // [sng] Program name
@@ -107,20 +107,20 @@ int main(int argc,char **argv)
 # define NC_FORMAT_CLASSIC (1)
 #endif
   int fl_out_fmt(NC_FORMAT_CLASSIC); // [enm] Output file format
-  int nccreate_mode(NC_CLOBBER); // [enm] Mode flag for nco_create() call
+  int md_create(NC_CLOBBER); // [enm] Mode flag for nco_create() call
 #ifdef ENABLE_NETCDF4
   fl_out_fmt=NC_FORMAT_NETCDF4; // [enm] Output file format
   if(fl_out_fmt == NC_FORMAT_64BIT){
-    nccreate_mode|=NC_64BIT_OFFSET;
+    md_create|=NC_64BIT_OFFSET;
   }else if(fl_out_fmt == NC_FORMAT_NETCDF4){
-    nccreate_mode|=NC_NETCDF4;
+    md_create|=NC_NETCDF4;
   }else if(fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC){
-    nccreate_mode|=NC_NETCDF4|NC_CLASSIC_MODEL;
+    md_create|=NC_NETCDF4|NC_CLASSIC_MODEL;
   } /* end else fl_out_fmt */
 #else // !ENABLE_NETCDF4
-  if(fl_out_fmt == NC_FORMAT_CLASSIC) nccreate_mode+=0; // CEWI
+  if(fl_out_fmt == NC_FORMAT_CLASSIC) md_create+=0; // CEWI
 #endif // !ENABLE_NETCDF4
-  const int nc_out(nco_create(fl_out,nccreate_mode)); 
+  const int nc_out(nco_create(fl_out,md_create)); 
   const nc_type nco_xtyp(nco_get_xtype(static_cast<prc_cmp>(1.0))); // [enm] External netCDF type
   std::cout << "INFO External netCDF type of prc_cmp variables will be " << nco_typ_sng(nco_xtyp) << std::endl;
  

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/nco.git



More information about the Pkg-grass-devel mailing list